You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

583 lines
5.9 MiB

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
<meta name="author" content="Scary Scarecrow" />
<title>Other errors</title>
<script src="data:application/javascript;base64,Ly8gUGFuZG9jIDIuOSBhZGRzIGF0dHJpYnV0ZXMgb24gYm90aCBoZWFkZXIgYW5kIGRpdi4gV2UgcmVtb3ZlIHRoZSBmb3JtZXIgKHRvCi8vIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgYmVoYXZpb3Igb2YgUGFuZG9jIDwgMi44KS4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uKGUpIHsKICB2YXIgaHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkaXYuc2VjdGlvbltjbGFzcyo9J2xldmVsJ10gPiA6Zmlyc3QtY2hpbGQiKTsKICB2YXIgaSwgaCwgYTsKICBmb3IgKGkgPSAwOyBpIDwgaHMubGVuZ3RoOyBpKyspIHsKICAgIGggPSBoc1tpXTsKICAgIGlmICghL15oWzEtNl0kL2kudGVzdChoLnRhZ05hbWUpKSBjb250aW51ZTsgIC8vIGl0IHNob3VsZCBiZSBhIGhlYWRlciBoMS1oNgogICAgYSA9IGguYXR0cmlidXRlczsKICAgIHdoaWxlIChhLmxlbmd0aCA+IDApIGgucmVtb3ZlQXR0cmlidXRlKGFbMF0ubmFtZSk7CiAgfQp9KTsK"></script>
<script src="data:application/javascript;base64,LyohIGpRdWVyeSB2My42LjAgfCAoYykgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwohZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZS5kb2N1bWVudD90KGUsITApOmZ1bmN0aW9uKGUpe2lmKCFlLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiB0KGUpfTp0KGUpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihDLGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1bXSxyPU9iamVjdC5nZXRQcm90b3R5cGVPZixzPXQuc2xpY2UsZz10LmZsYXQ/ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZmxhdC5jYWxsKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gdC5jb25jYXQuYXBwbHkoW10sZSl9LHU9dC5wdXNoLGk9dC5pbmRleE9mLG49e30sbz1uLnRvU3RyaW5nLHY9bi5oYXNPd25Qcm9wZXJ0eSxhPXYudG9TdHJpbmcsbD1hLmNhbGwoT2JqZWN0KSx5PXt9LG09ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJudW1iZXIiIT10eXBlb2YgZS5ub2RlVHlwZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUuaXRlbX0seD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmZT09PWUud2luZG93fSxFPUMuZG9jdW1lbnQsYz17dHlwZTohMCxzcmM6ITAsbm9uY2U6ITAsbm9Nb2R1bGU6ITB9O2Z1bmN0aW9uIGIoZSx0LG4pe3ZhciByLGksbz0obj1ufHxFKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtpZihvLnRleHQ9ZSx0KWZvcihyIGluIGMpKGk9dFtyXXx8dC5nZXRBdHRyaWJ1dGUmJnQuZ2V0QXR0cmlidXRlKHIpKSYmby5zZXRBdHRyaWJ1dGUocixpKTtuLmhlYWQuYXBwZW5kQ2hpbGQobykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKX1mdW5jdGlvbiB3KGUpe3JldHVybiBudWxsPT1lP2UrIiI6Im9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZT9uW28uY2FsbChlKV18fCJvYmplY3QiOnR5cGVvZiBlfXZhciBmPSIzLjYuMCIsUz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgUy5mbi5pbml0KGUsdCl9O2Z1bmN0aW9uIHAoZSl7dmFyIHQ9ISFlJiYibGVuZ3RoImluIGUmJmUubGVuZ3RoLG49dyhlKTtyZXR1cm4hbShlKSYmIXgoZSkmJigiYXJyYXkiPT09bnx8MD09PXR8fCJudW1iZXIiPT10eXBlb2YgdCYmMDx0JiZ0LTEgaW4gZSl9Uy5mbj1TLnByb3RvdHlwZT17anF1ZXJ5OmYsY29uc3RydWN0b3I6UyxsZW5ndGg6MCx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHMuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3MuY2FsbCh0aGlzKTplPDA/dGhpc1tlK3RoaXMubGVuZ3RoXTp0aGlzW2VdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9Uy5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksZSk7cmV0dXJuIHQucHJldk9iamVjdD10aGlzLHR9LGVhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIFMuZWFjaCh0aGlzLGUpfSxtYXA6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMubWFwKHRoaXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5jYWxsKGUsdCxlKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2socy5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxldmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQrMSklMn0pKX0sb2RkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQlMn0pKX0sZXE6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5sZW5ndGgsbj0rZSsoZTwwP3Q6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKDA8PW4mJm48dD9bdGhpc1tuXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6dSxzb3J0OnQuc29ydCxzcGxpY2U6dC5zcGxpY2V9LFMuZXh0ZW5kPVMuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsaSxvLGE9YXJndW1lbnRzWzBdfHx7fSxzPTEsdT1hcmd1bWVudHMubGVuZ3RoLGw9ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIGEmJihsPWEsYT1hcmd1bWVudHNbc118fHt9LHMrKyksIm9iamVjdCI9PXR5cGVvZiBhfHxtKGEpfHwoYT17fSkscz09PXUmJihhPXRoaXMscy0tKTtzPHU7cysrKWlmKG51bGwhPShlPWFyZ3VtZW50c1tzXSkpZm9yKHQgaW4gZSlyPWVbdF0sIl9fcHJvdG9fXyIhPT10JiZhIT09ciYmKGwmJnImJihTLmlzUGxhaW5PYmplY3Qocil8fChpPUFycmF5LmlzQXJyYXkocikpKT8obj1hW3RdLG89aSYmIUFycmF5LmlzQXJyYXkobik/W106aXx8Uy5pc1BsYWluT2JqZWN0KG4pP246e30saT0hMSxhW3RdPVMuZXh0ZW5kKGwsbyxyKSk6dm9pZCAwIT09ciYmKGFbdF09cikpO3JldHVybiBhfSxTLmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisoZitNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihlKX0sbm9vcDpmdW5jdGlvbigpe30saXNQbGFpbk9iamVjdDpmdW5jdGlvbihlKXt2YXIgdCxuO3JldHVybiEoIWV8fCJbb2JqZWN0IE9iamVjdF0iIT09by5jYWxsKGUpKSYmKCEodD1yKGUpKXx8ImZ1bmN0aW9uIj09dHlwZW9mKG49di5jYWxsKHQsImNvbnN0cnVjdG9yIikmJnQuY29uc3RydWN0b3IpJiZhLmNhbGwobik9PT1sKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBlKXJldHVybiExO3JldHVybiEwfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGUsdCxuKXtiKGUse25vbmNlOnQmJnQubm9uY2V9LG4pfSxlYWNoOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0wO2lmKHAoZSkpe2ZvcihuPWUubGVuZ3RoO3I8bjtyKyspaWYoITE9PT10LmNhbGwoZVtyXSxyLGVbcl0pKWJyZWFrfWVsc2UgZm9yKHIgaW4gZSlpZighMT09PXQuY2FsbChlW3JdLHIsZVtyXSkpYnJlYWs7cmV0dXJuIGV9LG1ha2VBcnJheTpmdW5jdGlvbihlLHQpe3ZhciBuPXR8fFtdO3JldHVybiBudWxsIT1lJiYocChPYmplY3QoZSkpP1MubWVyZ2Uobiwic3RyaW5nIj09dHlwZW9mIGU/W2VdOmUpOnUuY2FsbChuLGUpKSxufSxpbkFycmF5OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbD09dD8tMTppLmNhbGwodCxlLG4pfSxtZXJnZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0rdC5sZW5ndGgscj0wLGk9ZS5sZW5ndGg7cjxuO3IrKyllW2krK109dFtyXTtyZXR1cm4gZS5sZW5ndGg9aSxlfSxncmVwOmZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9W10saT0wLG89ZS5sZW5ndGgsYT0hbjtpPG87aSsrKSF0KGVbaV0saSkhPT1hJiZyLnB1c2goZVtpXSk7cmV0dXJuIHJ9LG1hcDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPTAsYT1bXTtpZihwKGUpKWZvcihyPWUubGVuZ3RoO288cjtvKyspbnVsbCE9KGk9dChlW29dLG8sbikpJiZhLnB1c2goaSk7ZWxzZSBmb3IobyBpbiBlKW51bGwhPShpPXQoZVtvXSxvLG4pKSYmYS5wdXNoKGkpO3JldHVybiBnKGEpfSxndWlkOjEsc3VwcG9ydDp5fSksImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKFMuZm5bU3ltYm9sLml0ZXJhdG9yXT10W1N5bWJvbC5pdGVyYXRvcl0pLFMuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNwbGl0KCIgIiksZnVuY3Rpb24oZSx0KXtuWyJbb2JqZWN0ICIrdCsiXSJdPXQudG9Mb3dlckNhc2UoKX0pO3ZhciBkPWZ1bmN0aW9uKG4pe3ZhciBlLGQsYixvLGksaCxmLGcsdyx1LGwsVCxDLGEsRSx2LHMsYyx5LFM9InNpenpsZSIrMSpuZXcgRGF0ZSxwPW4uZG9jdW1lbnQsaz0wLHI9MCxtPXVlKCkseD11ZSgpLEE9dWUoKSxOPXVlKCksaj1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09dCYmKGw9ITApLDB9LEQ9e30uaGFzT3duUHJvcGVydHksdD1bXSxxPXQucG9wLEw9dC5wdXNoLEg9dC5wdXNoLE89dC5zbGljZSxQPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWlmKGVbbl09PT10KXJldHVybiBuO3JldHVybi0xfSxSPSJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsTT0iW1xceDIwXFx0XFxyXFxuXFxmXSIsST0iKD86XFxcXFtcXGRhLWZBLUZdezEsNn0iK00rIj98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15cMC1cXHg3Zl0pKyIsVz0iXFxbIitNKyIqKCIrSSsiKSg/OiIrTSsiKihbKl4kfCF+XT89KSIrTSsiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiK0krIikpfCkiK00rIipcXF0iLEY9IjooIitJKyIpKD86XFwoKCgnKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IitXKyIpKil8LiopXFwpfCkiLEI9bmV3IFJlZ0V4cChNKyIrIiwiZyIpLCQ9bmV3IFJlZ0V4cCgiXiIrTSsiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIitNKyIrJCIsImciKSxfPW5ldyBSZWdFeHAoIl4iK00rIiosIitNKyIqIiksej1uZXcgUmVnRXhwKCJeIitNKyIqKFs+K35dfCIrTSsiKSIrTSsiKiIpLFU9bmV3IFJlZ0V4cChNKyJ8PiIpLFg9bmV3IFJlZ0V4cChGKSxWPW5ldyBSZWdFeHAoIl4iK0krIiQiKSxHPXtJRDpuZXcgUmVnRXhwKCJeIygiK0krIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrSSsiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrSSsifFsqXSkiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK1cpLFBTRVVETzpuZXcgUmVnRXhwKCJeIitGKSxDSElMRDpuZXcgUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiK00rIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCkiK00rIiooPzooWystXXwpIitNKyIqKFxcZCspfCkpIitNKyIqXFwpfCkiLCJpIiksYm9vbDpuZXcgUmVnRXhwKCJeKD86IitSKyIpJCIsImkiKSxuZWVkc0NvbnRleHQ6bmV3IFJlZ0V4cCgiXiIrTSsiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIitNKyIqKCg/Oi1cXGQpP1xcZCopIitNKyIqXFwpfCkoPz1bXi1dfCQpIiwiaSIpfSxZPS9IVE1MJC9pLFE9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxKPS9eaFxkJC9pLEs9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLFo9L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxlZT0vWyt+XS8sdGU9bmV3IFJlZ0V4cCgiXFxcXFtcXGRhLWZBLUZdezEsNn0iK00rIj98XFxcXChbXlxcclxcblxcZl0pIiwiZyIpLG5lPWZ1bmN0aW9uKGUsdCl7dmFyIG49IjB4IitlLnNsaWNlKDEpLTY1NTM2O3JldHVybiB0fHwobjwwP1N0cmluZy5mcm9tQ2hhckNvZGUobis2NTUzNik6U3RyaW5nLmZyb21DaGFyQ29kZShuPj4xMHw1NTI5NiwxMDIzJm58NTYzMjApKX0scmU9LyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15cMC1ceDFmXHg3Zi1cdUZGRkZcdy1dL2csaWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iXDAiPT09ZT8iXHVmZmZkIjplLnNsaWNlKDAsLTEpKyJcXCIrZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpLnRvU3RyaW5nKDE2KSsiICI6IlxcIitlfSxvZT1mdW5jdGlvbigpe1QoKX0sYWU9YmUoZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lLmRpc2FibGVkJiYiZmllbGRzZXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpfSx7ZGlyOiJwYXJlbnROb2RlIixuZXh0OiJsZWdlbmQifSk7dHJ5e0guYXBwbHkodD1PLmNhbGwocC5jaGlsZE5vZGVzKSxwLmNoaWxkTm9kZXMpLHRbcC5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2goZSl7SD17YXBwbHk6dC5sZW5ndGg/ZnVuY3Rpb24oZSx0KXtMLmFwcGx5KGUsTy5jYWxsKHQpKX06ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmxlbmd0aCxyPTA7d2hpbGUoZVtuKytdPXRbcisrXSk7ZS5sZW5ndGg9bi0xfX19ZnVuY3Rpb24gc2UodCxlLG4scil7dmFyIGksbyxhLHMsdSxsLGMsZj1lJiZlLm93bmVyRG9jdW1lbnQscD1lP2Uubm9kZVR5cGU6OTtpZihuPW58fFtdLCJzdHJpbmciIT10eXBlb2YgdHx8IXR8fDEhPT1wJiY5IT09cCYmMTEhPT1wKXJldHVybiBuO2lmKCFyJiYoVChlKSxlPWV8fEMsRSkpe2lmKDExIT09cCYmKHU9Wi5leGVjKHQpKSlpZihpPXVbMV0pe2lmKDk9PT1wKXtpZighKGE9ZS5nZXRFbGVtZW50QnlJZChpKSkpcmV0dXJuIG47aWYoYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2UgaWYoZiYmKGE9Zi5nZXRFbGVtZW50QnlJZChpKSkmJnkoZSxhKSYmYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2V7aWYodVsyXSlyZXR1cm4gSC5hcHBseShuLGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodCkpLG47aWYoKGk9dVszXSkmJmQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBILmFwcGx5KG4sZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGkpKSxufWlmKGQucXNhJiYhTlt0KyIgIl0mJighdnx8IXYudGVzdCh0KSkmJigxIT09cHx8Im9iamVjdCIhPT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpKXtpZihjPXQsZj1lLDE9PT1wJiYoVS50ZXN0KHQpfHx6LnRlc3QodCkpKXsoZj1lZS50ZXN0KHQpJiZ5ZShlLnBhcmVudE5vZGUpfHxlKT09PWUmJmQuc2NvcGV8fCgocz1lLmdldEF0dHJpYnV0ZSgiaWQiKSk/cz1zLnJlcGxhY2UocmUsaWUpOmUuc2V0QXR0cmlidXRlKCJpZCIscz1TKSksbz0obD1oKHQpKS5sZW5ndGg7d2hpbGUoby0tKWxbb109KHM/IiMiK3M6IjpzY29wZSIpKyIgIit4ZShsW29dKTtjPWwuam9pbigiLCIpfXRyeXtyZXR1cm4gSC5hcHBseShuLGYucXVlcnlTZWxlY3RvckFsbChjKSksbn1jYXRjaChlKXtOKHQsITApfWZpbmFsbHl7cz09PVMmJmUucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGcodC5yZXBsYWNlKCQsIiQxIiksZSxuLHIpfWZ1bmN0aW9uIHVlKCl7dmFyIHI9W107cmV0dXJuIGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gci5wdXNoKHQrIiAiKT5iLmNhY2hlTGVuZ3RoJiZkZWxldGUgZVtyLnNoaWZ0KCldLGVbdCsiICJdPW59fWZ1bmN0aW9uIGxlKGUpe3JldHVybiBlW1NdPSEwLGV9ZnVuY3Rpb24gY2UoZSl7dmFyIHQ9Qy5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpO3RyeXtyZXR1cm4hIWUodCl9Y2F0Y2goZSl7cmV0dXJuITF9ZmluYWxseXt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0PW51bGx9fWZ1bmN0aW9uIGZlKGUsdCl7dmFyIG49ZS5zcGxpdCgifCIpLHI9bi5sZW5ndGg7d2hpbGUoci0tKWIuYXR0ckhhbmRsZVtuW3JdXT10fWZ1bmN0aW9uIHBlKGUsdCl7dmFyIG49dCYmZSxyPW4mJjE9PT1lLm5vZGVUeXBlJiYxPT09dC5ub2RlVHlwZSYmZS5zb3VyY2VJbmRleC10LnNvdXJjZUluZGV4O2lmKHIpcmV0dXJuIHI7aWYobil3aGlsZShuPW4ubmV4dFNpYmxpbmcpaWYobj09PXQpcmV0dXJuLTE7cmV0dXJuIGU/MTotMX1mdW5jdGlvbiBkZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmZS50eXBlPT09dH19ZnVuY3Rpb24gaGUobil7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oImlucHV0Ij09PXR8fCJidXR0b24iPT09dCkmJmUudHlwZT09PW59fWZ1bmN0aW9uIGdlKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4iZm9ybSJpbiBlP2UucGFyZW50Tm9kZSYmITE9PT1lLmRpc2FibGVkPyJsYWJlbCJpbiBlPyJsYWJlbCJpbiBlLnBhcmVudE5vZGU/ZS5wYXJlbnROb2RlLmRpc2FibGVkPT09dDplLmRpc2FibGVkPT09dDplLmlzRGlzYWJsZWQ9PT10fHxlLmlzRGlzYWJsZWQhPT0hdCYmYWUoZSk9PT10OmUuZGlzYWJsZWQ9PT10OiJsYWJlbCJpbiBlJiZlLmRpc2FibGVkPT09dH19ZnVuY3Rpb24gdmUoYSl7cmV0dXJuIGxlKGZ1bmN0aW9uKG8pe3JldHVybiBvPStvLGxlKGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKFtdLGUubGVuZ3RoLG8pLGk9ci5sZW5ndGg7d2hpbGUoaS0tKWVbbj1yW2ldXSYmKGVbbl09ISh0W25dPWVbbl0pKX0pfSl9ZnVuY3Rpb24geWUoZSl7cmV0dXJuIGUmJiJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZSYmZX1mb3IoZSBpbiBkPXNlLnN1cHBvcnQ9e30saT1zZS5pc1hNTD1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLm5hbWVzcGFjZVVSSSxuPWUmJihlLm93bmVyRG9jdW1lbnR8fGUpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4hWS50ZXN0KHR8fG4mJm4ubm9kZU5hbWV8fCJIVE1MIil9LFQ9c2Uuc2V0RG9jdW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixyPWU/ZS5vd25lckRvY3VtZW50fHxlOnA7cmV0dXJuIHIhPUMmJjk9PT1yLm5vZGVUeXBlJiZyLmRvY3VtZW50RWxlbWVudCYmKGE9KEM9cikuZG9jdW1lbnRFbGVtZW50LEU9IWkoQykscCE9QyYmKG49Qy5kZWZhdWx0VmlldykmJm4udG9wIT09biYmKG4uYWRkRXZlbnRMaXN0ZW5lcj9uLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsb2UsITEpOm4uYXR0YWNoRXZlbnQmJm4uYXR0YWNoRXZlbnQoIm9udW5sb2FkIixvZSkpLGQuc2NvcGU9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoZSkuYXBwZW5kQ2hpbGQoQy5jcmVhdGVFbGVtZW50KCJkaXYiKSksInVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGwmJiFlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpzY29wZSBmaWVsZHNldCBkaXYiKS5sZW5ndGh9KSxkLmF0dHJpYnV0ZXM9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2xhc3NOYW1lPSJpIiwhZS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksZC5nZXRFbGVtZW50c0J5VGFnTmFtZT1jZShmdW5jdGlvbihlKXtyZXR1cm4gZS5hcHBlbmRDaGlsZChDLmNyZWF0ZUNvbW1lbnQoIiIpKSwhZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1LLnRlc3QoQy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSxkLmdldEJ5SWQ9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoZSkuaWQ9UywhQy5nZXRFbGVtZW50c0J5TmFtZXx8IUMuZ2V0RWxlbWVudHNCeU5hbWUoUykubGVuZ3RofSksZC5nZXRCeUlkPyhiLmZpbHRlci5JRD1mdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UodGUsbmUpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUoImlkIik9PT10fX0sYi5maW5kLklEPWZ1bmN0aW9uKGUsdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRCeUlkJiZFKXt2YXIgbj10LmdldEVsZW1lbnRCeUlkKGUpO3JldHVybiBuP1tuXTpbXX19KTooYi5maWx0ZXIuSUQ9ZnVuY3Rpb24oZSl7dmFyIG49ZS5yZXBsYWNlKHRlLG5lKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEF0dHJpYnV0ZU5vZGUmJmUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gdCYmdC52YWx1ZT09PW59fSxiLmZpbmQuSUQ9ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQmJkUpe3ZhciBuLHIsaSxvPXQuZ2V0RWxlbWVudEJ5SWQoZSk7aWYobyl7aWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmbi52YWx1ZT09PWUpcmV0dXJuW29dO2k9dC5nZXRFbGVtZW50c0J5TmFtZShlKSxyPTA7d2hpbGUobz1pW3IrK10paWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmbi52YWx1ZT09PWUpcmV0dXJuW29dfXJldHVybltdfX0pLGIuZmluZC5UQUc9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihlLHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50c0J5VGFnTmFtZT90LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpOmQucXNhP3QucXVlcnlTZWxlY3RvckFsbChlKTp2b2lkIDB9OmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXSxpPTAsbz10LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpO2lmKCIqIj09PWUpe3doaWxlKG49b1tpKytdKTE9PT1uLm5vZGVUeXBlJiZyLnB1c2gobik7cmV0dXJuIHJ9cmV0dXJuIG99LGIuZmluZC5DTEFTUz1kLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGUsdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJkUpcmV0dXJuIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlKX0scz1bXSx2PVtdLChkLnFzYT1LLnRlc3QoQy5xdWVyeVNlbGVjdG9yQWxsKSkmJihjZShmdW5jdGlvbihlKXt2YXIgdDthLmFwcGVuZENoaWxkKGUpLmlubmVySFRNTD0iPGEgaWQ9JyIrUysiJz48L2E+PHNlbGVjdCBpZD0nIitTKyItXHJcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGUucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGgmJnYucHVzaCgiWypeJF09IitNKyIqKD86Jyd8XCJcIikiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fHYucHVzaCgiXFxbIitNKyIqKD86dmFsdWV8IitSKyIpIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrUysiLV0iKS5sZW5ndGh8fHYucHVzaCgifj0iKSwodD1DLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnNldEF0dHJpYnV0ZSgibmFtZSIsIiIpLGUuYXBwZW5kQ2hpbGQodCksZS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT0nJ10iKS5sZW5ndGh8fHYucHVzaCgiXFxbIitNKyIqbmFtZSIrTSsiKj0iK00rIiooPzonJ3xcIlwiKSIpLGUucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fHYucHVzaCgiOmNoZWNrZWQiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIitTKyIrKiIpLmxlbmd0aHx8di5wdXNoKCIuIy4rWyt+XSIpLGUucXVlcnlTZWxlY3RvckFsbCgiXFxcZiIpLHYucHVzaCgiW1xcclxcblxcZl0iKX0pLGNlKGZ1bmN0aW9uKGUpe2UuaW5uZXJIVE1MPSI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD4iO3ZhciB0PUMuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTt0LnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLGUuYXBwZW5kQ2hpbGQodCkuc2V0QXR0cmlidXRlKCJuYW1lIiwiRCIpLGUucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGgmJnYucHVzaCgibmFtZSIrTSsiKlsqXiR8IX5dPz0iKSwyIT09ZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCYmdi5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGEuYXBwZW5kQ2hpbGQoZSkuZGlzYWJsZWQ9ITAsMiE9PWUucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoJiZ2LnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksZS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4Iiksdi5wdXNoKCIsLio6Iil9KSksKGQubWF0Y2hlc1NlbGVjdG9yPUsudGVzdChjPWEubWF0Y2hlc3x8YS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGEubW96TWF0Y2hlc1NlbGVjdG9yfHxhLm9NYXRjaGVzU2VsZWN0b3J8fGEubXNNYXRjaGVzU2VsZWN0b3IpKSYmY2UoZnVuY3Rpb24oZSl7ZC5kaXNjb25uZWN0ZWRNYXRjaD1jLmNhbGwoZSwiKiIpLGMuY2FsbChlLCJbcyE9JyddOngiKSxzLnB1c2goIiE9IixGKX0pLHY9di5sZW5ndGgmJm5ldyBSZWdFeHAodi5qb2luKCJ8IikpLHM9cy5sZW5ndGgmJm5ldyBSZWdFeHAocy5qb2luKCJ8IikpLHQ9Sy50ZXN0KGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24pLHk9dHx8Sy50ZXN0KGEuY29udGFpbnMpP2Z1bmN0aW9uKGUsdCl7dmFyIG49OT09PWUubm9kZVR5cGU/ZS5kb2N1bWVudEVsZW1lbnQ6ZSxyPXQmJnQucGFyZW50Tm9kZTtyZXR1cm4gZT09PXJ8fCEoIXJ8fDEhPT1yLm5vZGVUeXBlfHwhKG4uY29udGFpbnM/bi5jb250YWlucyhyKTplLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHIpKSl9OmZ1bmN0aW9uKGUsdCl7aWYodCl3aGlsZSh0PXQucGFyZW50Tm9kZSlpZih0PT09ZSlyZXR1cm4hMDtyZXR1cm4hMX0saj10P2Z1bmN0aW9uKGUsdCl7aWYoZT09PXQpcmV0dXJuIGw9ITAsMDt2YXIgbj0hZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gbnx8KDEmKG49KGUub3duZXJEb2N1bWVudHx8ZSk9PSh0Lm93bmVyRG9jdW1lbnR8fHQpP2UuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCk6MSl8fCFkLnNvcnREZXRhY2hlZCYmdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKT09PW4/ZT09Q3x8ZS5vd25lckRvY3VtZW50PT1wJiZ5KHAsZSk/LTE6dD09Q3x8dC5vd25lckRvY3VtZW50PT1wJiZ5KHAsdCk/MTp1P1AodSxlKS1QKHUsdCk6MDo0Jm4/LTE6MSl9OmZ1bmN0aW9uKGUsdCl7aWYoZT09PXQpcmV0dXJuIGw9ITAsMDt2YXIgbixyPTAsaT1lLnBhcmVudE5vZGUsbz10LnBhcmVudE5vZGUsYT1bZV0scz1bdF07aWYoIWl8fCFvKXJldHVybiBlPT1DPy0xOnQ9PUM/MTppPy0xOm8/MTp1P1AodSxlKS1QKHUsdCk6MDtpZihpPT09bylyZXR1cm4gcGUoZSx0KTtuPWU7d2hpbGUobj1uLnBhcmVudE5vZGUpYS51bnNoaWZ0KG4pO249dDt3aGlsZShuPW4ucGFyZW50Tm9kZSlzLnVuc2hpZnQobik7d2hpbGUoYVtyXT09PXNbcl0pcisrO3JldHVybiByP3BlKGFbcl0sc1tyXSk6YVtyXT09cD8tMTpzW3JdPT1wPzE6MH0pLEN9LHNlLm1hdGNoZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gc2UoZSxudWxsLG51bGwsdCl9LHNlLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihlLHQpe2lmKFQoZSksZC5tYXRjaGVzU2VsZWN0b3ImJkUmJiFOW3QrIiAiXSYmKCFzfHwhcy50ZXN0KHQpKSYmKCF2fHwhdi50ZXN0KHQpKSl0cnl7dmFyIG49Yy5jYWxsKGUsdCk7aWYobnx8ZC5kaXNjb25uZWN0ZWRNYXRjaHx8ZS5kb2N1bWVudCYmMTEhPT1lLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBufWNhdGNoKGUpe04odCwhMCl9cmV0dXJuIDA8c2UodCxDLG51bGwsW2VdKS5sZW5ndGh9LHNlLmNvbnRhaW5zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKGUub3duZXJEb2N1bWVudHx8ZSkhPUMmJlQoZSkseShlLHQpfSxzZS5hdHRyPWZ1bmN0aW9uKGUsdCl7KGUub3duZXJEb2N1bWVudHx8ZSkhPUMmJlQoZSk7dmFyIG49Yi5hdHRySGFuZGxlW3QudG9Mb3dlckNhc2UoKV0scj1uJiZELmNhbGwoYi5hdHRySGFuZGxlLHQudG9Mb3dlckNhc2UoKSk/bihlLHQsIUUpOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09cj9yOmQuYXR0cmlidXRlc3x8IUU/ZS5nZXRBdHRyaWJ1dGUodCk6KHI9ZS5nZXRBdHRyaWJ1dGVOb2RlKHQpKSYmci5zcGVjaWZpZWQ/ci52YWx1ZTpudWxsfSxzZS5lc2NhcGU9ZnVuY3Rpb24oZSl7cmV0dXJuKGUrIiIpLnJlcGxhY2UocmUsaWUpfSxzZS5lcnJvcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrZSl9LHNlLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj1bXSxyPTAsaT0wO2lmKGw9IWQuZGV0ZWN0RHVwbGljYXRlcyx1PSFkLnNvcnRTdGFibGUmJmUuc2xpY2UoMCksZS5zb3J0KGopLGwpe3doaWxlKHQ9ZVtpKytdKXQ9PT1lW2ldJiYocj1uLnB1c2goaSkpO3doaWxlKHItLSllLnNwbGljZShuW3JdLDEpfXJldHVybiB1PW51bGwsZX0sbz1zZS5nZXRUZXh0PWZ1bmN0aW9uKGUpe3ZhciB0LG49IiIscj0wLGk9ZS5ub2RlVHlwZTtpZihpKXtpZigxPT09aXx8OT09PWl8fDExPT09aSl7aWYoInN0cmluZyI9PXR5cGVvZiBlLnRleHRDb250ZW50KXJldHVybiBlLnRleHRDb250ZW50O2ZvcihlPWUuZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZyluKz1vKGUpfWVsc2UgaWYoMz09PWl8fDQ9PT1pKXJldHVybiBlLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKHQ9ZVtyKytdKW4rPW8odCk7cmV0dXJuIG59LChiPXNlLnNlbGVjdG9ycz17Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOmxlLG1hdGNoOkcsYXR0ckhhbmRsZTp7fSxmaW5kOnt9LHJlbGF0aXZlOnsiPiI6e2RpcjoicGFyZW50Tm9kZSIsZmlyc3Q6ITB9LCIgIjp7ZGlyOiJwYXJlbnROb2RlIn0sIisiOntkaXI6InByZXZpb3VzU2libGluZyIsZmlyc3Q6ITB9LCJ+Ijp7ZGlyOiJwcmV2aW91c1NpYmxpbmcifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKGUpe3JldHVybiBlWzFdPWVbMV0ucmVwbGFjZSh0ZSxuZSksZVszXT0oZVszXXx8ZVs0XXx8ZVs1XXx8IiIpLnJlcGxhY2UodGUsbmUpLCJ+PSI9PT1lWzJdJiYoZVszXT0iICIrZVszXSsiICIpLGUuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09ZVsxXS5zbGljZSgwLDMpPyhlWzNdfHxzZS5lcnJvcihlWzBdKSxlWzRdPSsoZVs0XT9lWzVdKyhlWzZdfHwxKToyKigiZXZlbiI9PT1lWzNdfHwib2RkIj09PWVbM10pKSxlWzVdPSsoZVs3XStlWzhdfHwib2RkIj09PWVbM10pKTplWzNdJiZzZS5lcnJvcihlWzBdKSxlfSxQU0VVRE86ZnVuY3Rpb24oZSl7dmFyIHQsbj0hZVs2XSYmZVsyXTtyZXR1cm4gRy5DSElMRC50ZXN0KGVbMF0pP251bGw6KGVbM10/ZVsyXT1lWzRdfHxlWzVdfHwiIjpuJiZYLnRlc3QobikmJih0PWgobiwhMCkpJiYodD1uLmluZGV4T2YoIikiLG4ubGVuZ3RoLXQpLW4ubGVuZ3RoKSYmKGVbMF09ZVswXS5zbGljZSgwLHQpLGVbMl09bi5zbGljZSgwLHQpKSxlLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKHRlLG5lKS50b0xvd2VyQ2FzZSgpO3JldHVybiIqIj09PWU/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVuY3Rpb24oZSl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXR9fSxDTEFTUzpmdW5jdGlvbihlKXt2YXIgdD1tW2UrIiAiXTtyZXR1cm4gdHx8KHQ9bmV3IFJlZ0V4cCgiKF58IitNKyIpIitlKyIoIitNKyJ8JCkiKSkmJm0oZSxmdW5jdGlvbihlKXtyZXR1cm4gdC50ZXN0KCJzdHJpbmciPT10eXBlb2YgZS5jbGFzc05hbWUmJmUuY2xhc3NOYW1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0QXR0cmlidXRlJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSl9LEFUVFI6ZnVuY3Rpb24obixyLGkpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1zZS5hdHRyKGUsbik7cmV0dXJuIG51bGw9PXQ/IiE9Ij09PXI6IXJ8fCh0Kz0iIiwiPSI9PT1yP3Q9PT1pOiIhPSI9PT1yP3QhPT1pOiJePSI9PT1yP2kmJjA9PT10LmluZGV4T2YoaSk6Iio9Ij09PXI/aSYmLTE8dC5pbmRleE9mKGkpOiIkPSI9PT1yP2kmJnQuc2xpY2UoLWkubGVuZ3RoKT09PWk6In49Ij09PXI/LTE8KCIgIit0LnJlcGxhY2UoQiwiICIpKyIgIikuaW5kZXhPZihpKToifD0iPT09ciYmKHQ9PT1pfHx0LnNsaWNlKDAsaS5sZW5ndGgrMSk9PT1pKyItIikpfX0sQ0hJTEQ6ZnVuY3Rpb24oaCxlLHQsZyx2KXt2YXIgeT0ibnRoIiE9PWguc2xpY2UoMCwzKSxtPSJsYXN0IiE9PWguc2xpY2UoLTQpLHg9Im9mLXR5cGUiPT09ZTtyZXR1cm4gMT09PWcmJjA9PT12P2Z1bmN0aW9uKGUpe3JldHVybiEhZS5wYXJlbnROb2RlfTpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscyx1LGw9eSE9PW0/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIixjPWUucGFyZW50Tm9kZSxmPXgmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxwPSFuJiYheCxkPSExO2lmKGMpe2lmKHkpe3doaWxlKGwpe2E9ZTt3aGlsZShhPWFbbF0paWYoeD9hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1mOjE9PT1hLm5vZGVUeXBlKXJldHVybiExO3U9bD0ib25seSI9PT1oJiYhdSYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZih1PVttP2MuZmlyc3RDaGlsZDpjLmxhc3RDaGlsZF0sbSYmcCl7ZD0ocz0ocj0oaT0obz0oYT1jKVtTXXx8KGFbU109e30pKVthLnVuaXF1ZUlEXXx8KG9bYS51bmlxdWVJRF09e30pKVtoXXx8W10pWzBdPT09ayYmclsxXSkmJnJbMl0sYT1zJiZjLmNoaWxkTm9kZXNbc107d2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoMT09PWEubm9kZVR5cGUmJisrZCYmYT09PWUpe2lbaF09W2sscyxkXTticmVha319ZWxzZSBpZihwJiYoZD1zPShyPShpPShvPShhPWUpW1NdfHwoYVtTXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdfHxbXSlbMF09PT1rJiZyWzFdKSwhMT09PWQpd2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoKHg/YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ZjoxPT09YS5ub2RlVHlwZSkmJisrZCYmKHAmJigoaT0obz1hW1NdfHwoYVtTXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdPVtrLGRdKSxhPT09ZSkpYnJlYWs7cmV0dXJuKGQtPXYpPT09Z3x8ZCVnPT0wJiYwPD1kL2d9fX0sUFNFVURPOmZ1bmN0aW9uKGUsbyl7dmFyIHQsYT1iLnBzZXVkb3NbZV18fGIuc2V0RmlsdGVyc1tlLnRvTG93ZXJDYXNlKCldfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2UpO3JldHVybiBhW1NdP2Eobyk6MTxhLmxlbmd0aD8odD1bZSxlLCIiLG9dLGIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpP2xlKGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKGUsbyksaT1yLmxlbmd0aDt3aGlsZShpLS0pZVtuPVAoZSxyW2ldKV09ISh0W25dPXJbaV0pfSk6ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSwwLHQpfSk6YX19LHBzZXVkb3M6e25vdDpsZShmdW5jdGlvbihlKXt2YXIgcj1bXSxpPVtdLHM9ZihlLnJlcGxhY2UoJCwiJDEiKSk7cmV0dXJuIHNbU10/bGUoZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbz1zKGUsbnVsbCxyLFtdKSxhPWUubGVuZ3RoO3doaWxlKGEtLSkoaT1vW2FdKSYmKGVbYV09ISh0W2FdPWkpKX0pOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gclswXT1lLHMocixudWxsLG4saSksclswXT1udWxsLCFpLnBvcCgpfX0pLGhhczpsZShmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIDA8c2UodCxlKS5sZW5ndGh9fSksY29udGFpbnM6bGUoZnVuY3Rpb24odCl7cmV0dXJuIHQ9dC5yZXBsYWNlKHRlLG5lKSxmdW5jdGlvbihlKXtyZXR1cm4tMTwoZS50ZXh0Q29udGVudHx8byhlKSkuaW5kZXhPZih0KX19KSxsYW5nOmxlKGZ1bmN0aW9uKG4pe3JldHVybiBWLnRlc3Qobnx8IiIpfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIituKSxuPW4ucmVwbGFjZSh0ZSxuZSkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihlKXt2YXIgdDtkb3tpZih0PUU/ZS5sYW5nOmUuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxlLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybih0PXQudG9Mb3dlckNhc2UoKSk9PT1ufHwwPT09dC5pbmRleE9mKG4rIi0iKX13aGlsZSgoZT1lLnBhcmVudE5vZGUpJiYxPT09ZS5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGUpe3ZhciB0PW4ubG9jYXRpb24mJm4ubG9jYXRpb24uaGFzaDtyZXR1cm4gdCYmdC5zbGljZSgxKT09PWUuaWR9LHJvb3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1hfSxmb2N1czpmdW5jdGlvbihlKXtyZXR1cm4gZT09PUMuYWN0aXZlRWxlbWVudCYmKCFDLmhhc0ZvY3VzfHxDLmhhc0ZvY3VzKCkpJiYhIShlLnR5cGV8fGUuaHJlZnx8fmUudGFiSW5kZXgpfSxlbmFibGVkOmdlKCExKSxkaXNhYmxlZDpnZSghMCksY2hlY2tlZDpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiEhZS5jaGVja2VkfHwib3B0aW9uIj09PXQmJiEhZS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsITA9PT1lLnNlbGVjdGVkfSxlbXB0eTpmdW5jdGlvbihlKXtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNpYmxpbmcpaWYoZS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIWIucHNldWRvcy5lbXB0eShlKX0saGVhZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBKLnRlc3QoZS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiBRLnRlc3QoZS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiJidXR0b24iPT09ZS50eXBlfHwiYnV0dG9uIj09PXR9LHRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRleHQiPT09ZS50eXBlJiYobnVsbD09KHQ9ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PXQudG9Mb3dlckNhc2UoKSl9LGZpcnN0OnZlKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDp2ZShmdW5jdGlvbihlLHQpe3JldHVyblt0LTFdfSksZXE6dmUoZnVuY3Rpb24oZSx0LG4pe3JldHVybltuPDA/bit0Om5dfSksZXZlbjp2ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLG9kZDp2ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0xO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLGx0OnZlKGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bjwwP24rdDp0PG4/dDpuOzA8PS0tcjspZS5wdXNoKHIpO3JldHVybiBlfSksZ3Q6dmUoZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1uPDA/bit0Om47KytyPHQ7KWUucHVzaChyKTtyZXR1cm4gZX0pfX0pLnBzZXVkb3MubnRoPWIucHNldWRvcy5lcSx7cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pYi5wc2V1ZG9zW2VdPWRlKGUpO2ZvcihlIGlue3N1Ym1pdDohMCxyZXNldDohMH0pYi5wc2V1ZG9zW2VdPWhlKGUpO2Z1bmN0aW9uIG1lKCl7fWZ1bmN0aW9uIHhlKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGgscj0iIjt0PG47dCsrKXIrPWVbdF0udmFsdWU7cmV0dXJuIHJ9ZnVuY3Rpb24gYmUocyxlLHQpe3ZhciB1PWUuZGlyLGw9ZS5uZXh0LGM9bHx8dSxmPXQmJiJwYXJlbnROb2RlIj09PWMscD1yKys7cmV0dXJuIGUuZmlyc3Q/ZnVuY3Rpb24oZSx0LG4pe3doaWxlKGU9ZVt1XSlpZigxPT09ZS5ub2RlVHlwZXx8ZilyZXR1cm4gcyhlLHQsbik7cmV0dXJuITF9OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYT1bayxwXTtpZihuKXt3aGlsZShlPWVbdV0paWYoKDE9PT1lLm5vZGVUeXBlfHxmKSYmcyhlLHQsbikpcmV0dXJuITB9ZWxzZSB3aGlsZShlPWVbdV0paWYoMT09PWUubm9kZVR5cGV8fGYpaWYoaT0obz1lW1NdfHwoZVtTXT17fSkpW2UudW5pcXVlSURdfHwob1tlLnVuaXF1ZUlEXT17fSksbCYmbD09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSllPWVbdV18fGU7ZWxzZXtpZigocj1pW2NdKSYmclswXT09PWsmJnJbMV09PT1wKXJldHVybiBhWzJdPXJbMl07aWYoKGlbY109YSlbMl09cyhlLHQsbikpcmV0dXJuITB9cmV0dXJuITF9fWZ1bmN0aW9uIHdlKGkpe3JldHVybiAxPGkubGVuZ3RoP2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj1pLmxlbmd0aDt3aGlsZShyLS0paWYoIWlbcl0oZSx0LG4pKXJldHVybiExO3JldHVybiEwfTppWzBdfWZ1bmN0aW9uIFRlKGUsdCxuLHIsaSl7Zm9yKHZhciBvLGE9W10scz0wLHU9ZS5sZW5ndGgsbD1udWxsIT10O3M8dTtzKyspKG89ZVtzXSkmJihuJiYhbihvLHIsaSl8fChhLnB1c2gobyksbCYmdC5wdXNoKHMpKSk7cmV0dXJuIGF9ZnVuY3Rpb24gQ2UoZCxoLGcsdix5LGUpe3JldHVybiB2JiYhdltTXSYmKHY9Q2UodikpLHkmJiF5W1NdJiYoeT1DZSh5LGUpKSxsZShmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscz1bXSx1PVtdLGw9dC5sZW5ndGgsYz1lfHxmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsaT10Lmxlbmd0aDtyPGk7cisrKXNlKGUsdFtyXSxuKTtyZXR1cm4gbn0oaHx8IioiLG4ubm9kZVR5cGU/W25dOm4sW10pLGY9IWR8fCFlJiZoP2M6VGUoYyxzLGQsbixyKSxwPWc/eXx8KGU/ZDpsfHx2KT9bXTp0OmY7aWYoZyYmZyhmLHAsbixyKSx2KXtpPVRlKHAsdSksdihpLFtdLG4sciksbz1pLmxlbmd0aDt3aGlsZShvLS0pKGE9aVtvXSkmJihwW3Vbb11dPSEoZlt1W29dXT1hKSl9aWYoZSl7aWYoeXx8ZCl7aWYoeSl7aT1bXSxvPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmaS5wdXNoKGZbb109YSk7eShudWxsLHA9W10saSxyKX1vPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmLTE8KGk9eT9QKGUsYSk6c1tvXSkmJihlW2ldPSEodFtpXT1hKSl9fWVsc2UgcD1UZShwPT09dD9wLnNwbGljZShsLHAubGVuZ3RoKTpwKSx5P3kobnVsbCx0LHAscik6SC5hcHBseSh0LHApfSl9ZnVuY3Rpb24gRWUoZSl7Zm9yKHZhciBpLHQsbixyPWUubGVuZ3RoLG89Yi5yZWxhdGl2ZVtlWzBdLnR5cGVdLGE9b3x8Yi5yZWxhdGl2ZVsiICJdLHM9bz8xOjAsdT1iZShmdW5jdGlvbihlKXtyZXR1cm4gZT09PWl9LGEsITApLGw9YmUoZnVuY3Rpb24oZSl7cmV0dXJuLTE8UChpLGUpfSxhLCEwKSxjPVtmdW5jdGlvbihlLHQsbil7dmFyIHI9IW8mJihufHx0IT09dyl8fCgoaT10KS5ub2RlVHlwZT91KGUsdCxuKTpsKGUsdCxuKSk7cmV0dXJuIGk9bnVsbCxyfV07czxyO3MrKylpZih0PWIucmVsYXRpdmVbZVtzXS50eXBlXSljPVtiZSh3ZShjKSx0KV07ZWxzZXtpZigodD1iLmZpbHRlcltlW3NdLnR5cGVdLmFwcGx5KG51bGwsZVtzXS5tYXRjaGVzKSlbU10pe2ZvcihuPSsrcztuPHI7bisrKWlmKGIucmVsYXRpdmVbZVtuXS50eXBlXSlicmVhaztyZXR1cm4gQ2UoMTxzJiZ3ZShjKSwxPHMmJnhlKGUuc2xpY2UoMCxzLTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09ZVtzLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UoJCwiJDEiKSx0LHM8biYmRWUoZS5zbGljZShzLG4pKSxuPHImJkVlKGU9ZS5zbGljZShuKSksbjxyJiZ4ZShlKSl9Yy5wdXNoKHQpfXJldHVybiB3ZShjKX1yZXR1cm4gbWUucHJvdG90eXBlPWIuZmlsdGVycz1iLnBzZXVkb3MsYi5zZXRGaWx0ZXJzPW5ldyBtZSxoPXNlLnRva2VuaXplPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzLHUsbD14W2UrIiAiXTtpZihsKXJldHVybiB0PzA6bC5zbGljZSgwKTthPWUscz1bXSx1PWIucHJlRmlsdGVyO3doaWxlKGEpe2ZvcihvIGluIG4mJiEocj1fLmV4ZWMoYSkpfHwociYmKGE9YS5zbGljZShyWzBdLmxlbmd0aCl8fGEpLHMucHVzaChpPVtdKSksbj0hMSwocj16LmV4ZWMoYSkpJiYobj1yLnNoaWZ0KCksaS5wdXNoKHt2YWx1ZTpuLHR5cGU6clswXS5yZXBsYWNlKCQsIiAiKX0pLGE9YS5zbGljZShuLmxlbmd0aCkpLGIuZmlsdGVyKSEocj1HW29dLmV4ZWMoYSkpfHx1W29dJiYhKHI9dVtvXShyKSl8fChuPXIuc2hpZnQoKSxpLnB1c2goe3ZhbHVlOm4sdHlwZTpvLG1hdGNoZXM6cn0pLGE9YS5zbGljZShuLmxlbmd0aCkpO2lmKCFuKWJyZWFrfXJldHVybiB0P2EubGVuZ3RoOmE/c2UuZXJyb3IoZSk6eChlLHMpLnNsaWNlKDApfSxmPXNlLmNvbXBpbGU9ZnVuY3Rpb24oZSx0KXt2YXIgbix2LHksbSx4LHIsaT1bXSxvPVtdLGE9QVtlKyIgIl07aWYoIWEpe3R8fCh0PWgoZSkpLG49dC5sZW5ndGg7d2hpbGUobi0tKShhPUVlKHRbbl0pKVtTXT9pLnB1c2goYSk6by5wdXNoKGEpOyhhPUEoZSwodj1vLG09MDwoeT1pKS5sZW5ndGgseD0wPHYubGVuZ3RoLHI9ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdT0wLGw9IjAiLGM9ZSYmW10sZj1bXSxwPXcsZD1lfHx4JiZiLmZpbmQuVEFHKCIqIixpKSxoPWsrPW51bGw9PXA/MTpNYXRoLnJhbmRvbSgpfHwuMSxnPWQubGVuZ3RoO2ZvcihpJiYodz10PT1DfHx0fHxpKTtsIT09ZyYmbnVsbCE9KG89ZFtsXSk7bCsrKXtpZih4JiZvKXthPTAsdHx8by5vd25lckRvY3VtZW50PT1DfHwoVChvKSxuPSFFKTt3aGlsZShzPXZbYSsrXSlpZihzKG8sdHx8QyxuKSl7ci5wdXNoKG8pO2JyZWFrfWkmJihrPWgpfW0mJigobz0hcyYmbykmJnUtLSxlJiZjLnB1c2gobykpfWlmKHUrPWwsbSYmbCE9PXUpe2E9MDt3aGlsZShzPXlbYSsrXSlzKGMsZix0LG4pO2lmKGUpe2lmKDA8dSl3aGlsZShsLS0pY1tsXXx8ZltsXXx8KGZbbF09cS5jYWxsKHIpKTtmPVRlKGYpfUguYXBwbHkocixmKSxpJiYhZSYmMDxmLmxlbmd0aCYmMTx1K3kubGVuZ3RoJiZzZS51bmlxdWVTb3J0KHIpfXJldHVybiBpJiYoaz1oLHc9cCksY30sbT9sZShyKTpyKSkpLnNlbGVjdG9yPWV9cmV0dXJuIGF9LGc9c2Uuc2VsZWN0PWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbD0iZnVuY3Rpb24iPT10eXBlb2YgZSYmZSxjPSFyJiZoKGU9bC5zZWxlY3Rvcnx8ZSk7aWYobj1ufHxbXSwxPT09Yy5sZW5ndGgpe2lmKDI8KG89Y1swXT1jWzBdLnNsaWNlKDApKS5sZW5ndGgmJiJJRCI9PT0oYT1vWzBdKS50eXBlJiY5PT09dC5ub2RlVHlwZSYmRSYmYi5yZWxhdGl2ZVtvWzFdLnR5cGVdKXtpZighKHQ9KGIuZmluZC5JRChhLm1hdGNoZXNbMF0ucmVwbGFjZSh0ZSxuZSksdCl8fFtdKVswXSkpcmV0dXJuIG47bCYmKHQ9dC5wYXJlbnROb2RlKSxlPWUuc2xpY2Uoby5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9aT1HLm5lZWRzQ29udGV4dC50ZXN0KGUpPzA6by5sZW5ndGg7d2hpbGUoaS0tKXtpZihhPW9baV0sYi5yZWxhdGl2ZVtzPWEudHlwZV0pYnJlYWs7aWYoKHU9Yi5maW5kW3NdKSYmKHI9dShhLm1hdGNoZXNbMF0ucmVwbGFjZSh0ZSxuZSksZWUudGVzdChvWzBdLnR5cGUpJiZ5ZSh0LnBhcmVudE5vZGUpfHx0KSkpe2lmKG8uc3BsaWNlKGksMSksIShlPXIubGVuZ3RoJiZ4ZShvKSkpcmV0dXJuIEguYXBwbHkobixyKSxuO2JyZWFrfX19cmV0dXJuKGx8fGYoZSxjKSkocix0LCFFLG4sIXR8fGVlLnRlc3QoZSkmJnllKHQucGFyZW50Tm9kZSl8fHQpLG59LGQuc29ydFN0YWJsZT1TLnNwbGl0KCIiKS5zb3J0KGopLmpvaW4oIiIpPT09UyxkLmRldGVjdER1cGxpY2F0ZXM9ISFsLFQoKSxkLnNvcnREZXRhY2hlZD1jZShmdW5jdGlvbihlKXtyZXR1cm4gMSZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKEMuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKSl9KSxjZShmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLCIjIj09PWUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKX0pfHxmZSgidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsZnVuY3Rpb24oZSx0LG4pe2lmKCFuKXJldHVybiBlLmdldEF0dHJpYnV0ZSh0LCJ0eXBlIj09PXQudG9Mb3dlckNhc2UoKT8xOjIpfSksZC5hdHRyaWJ1dGVzJiZjZShmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9IjxpbnB1dC8+IixlLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpLCIiPT09ZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgidmFsdWUiKX0pfHxmZSgidmFsdWUiLGZ1bmN0aW9uKGUsdCxuKXtpZighbiYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlyZXR1cm4gZS5kZWZhdWx0VmFsdWV9KSxjZShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIil9KXx8ZmUoUixmdW5jdGlvbihlLHQsbil7dmFyIHI7aWYoIW4pcmV0dXJuITA9PT1lW3RdP3QudG9Mb3dlckNhc2UoKToocj1lLmdldEF0dHJpYnV0ZU5vZGUodCkpJiZyLnNwZWNpZmllZD9yLnZhbHVlOm51bGx9KSxzZX0oQyk7Uy5maW5kPWQsUy5leHByPWQuc2VsZWN0b3JzLFMuZXhwclsiOiJdPVMuZXhwci5wc2V1ZG9zLFMudW5pcXVlU29ydD1TLnVuaXF1ZT1kLnVuaXF1ZVNvcnQsUy50ZXh0PWQuZ2V0VGV4dCxTLmlzWE1MRG9jPWQuaXNYTUwsUy5jb250YWlucz1kLmNvbnRhaW5zLFMuZXNjYXBlU2VsZWN0b3I9ZC5lc2NhcGU7dmFyIGg9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVtdLGk9dm9pZCAwIT09bjt3aGlsZSgoZT1lW3RdKSYmOSE9PWUubm9kZVR5cGUpaWYoMT09PWUubm9kZVR5cGUpe2lmKGkmJlMoZSkuaXMobikpYnJlYWs7ci5wdXNoKGUpfXJldHVybiByfSxUPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdO2U7ZT1lLm5leHRTaWJsaW5nKTE9PT1lLm5vZGVUeXBlJiZlIT09dCYmbi5wdXNoKGUpO3JldHVybiBufSxrPVMuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQ7ZnVuY3Rpb24gQShlLHQpe3JldHVybiBlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT10LnRvTG93ZXJDYXNlKCl9dmFyIE49L148KFthLXpdW15cL1wwPjpceDIwXHRcclxuXGZdKilbXHgyMFx0XHJcblxmXSpcLz8+KD86PFwvXDE+fCkkL2k7ZnVuY3Rpb24gaihlLG4scil7cmV0dXJuIG0obik/Uy5ncmVwKGUsZnVuY3Rpb24oZSx0KXtyZXR1cm4hIW4uY2FsbChlLHQsZSkhPT1yfSk6bi5ub2RlVHlwZT9TLmdyZXAoZSxmdW5jdGlvbihlKXtyZXR1cm4gZT09PW4hPT1yfSk6InN0cmluZyIhPXR5cGVvZiBuP1MuZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybi0xPGkuY2FsbChuLGUpIT09cn0pOlMuZmlsdGVyKG4sZSxyKX1TLmZpbHRlcj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dFswXTtyZXR1cm4gbiYmKGU9Ijpub3QoIitlKyIpIiksMT09PXQubGVuZ3RoJiYxPT09ci5ub2RlVHlwZT9TLmZpbmQubWF0Y2hlc1NlbGVjdG9yKHIsZSk/W3JdOltdOlMuZmluZC5tYXRjaGVzKGUsUy5ncmVwKHQsZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlfSkpfSxTLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihlKXt2YXIgdCxuLHI9dGhpcy5sZW5ndGgsaT10aGlzO2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gdGhpcy5wdXNoU3RhY2soUyhlKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodD0wO3Q8cjt0KyspaWYoUy5jb250YWlucyhpW3RdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihuPXRoaXMucHVzaFN0YWNrKFtdKSx0PTA7dDxyO3QrKylTLmZpbmQoZSxpW3RdLG4pO3JldHVybiAxPHI/Uy51bmlxdWVTb3J0KG4pOm59LGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soaih0aGlzLGV8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soaih0aGlzLGV8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGUpe3JldHVybiEhaih0aGlzLCJzdHJpbmciPT10eXBlb2YgZSYmay50ZXN0KGUpP1MoZSk6ZXx8W10sITEpLmxlbmd0aH19KTt2YXIgRCxxPS9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC87KFMuZm4uaW5pdD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaTtpZighZSlyZXR1cm4gdGhpcztpZihuPW58fEQsInN0cmluZyI9PXR5cGVvZiBlKXtpZighKHI9IjwiPT09ZVswXSYmIj4iPT09ZVtlLmxlbmd0aC0xXSYmMzw9ZS5sZW5ndGg/W251bGwsZSxudWxsXTpxLmV4ZWMoZSkpfHwhclsxXSYmdClyZXR1cm4hdHx8dC5qcXVlcnk/KHR8fG4pLmZpbmQoZSk6dGhpcy5jb25zdHJ1Y3Rvcih0KS5maW5kKGUpO2lmKHJbMV0pe2lmKHQ9dCBpbnN0YW5jZW9mIFM/dFswXTp0LFMubWVyZ2UodGhpcyxTLnBhcnNlSFRNTChyWzFdLHQmJnQubm9kZVR5cGU/dC5vd25lckRvY3VtZW50fHx0OkUsITApKSxOLnRlc3QoclsxXSkmJlMuaXNQbGFpbk9iamVjdCh0KSlmb3IociBpbiB0KW0odGhpc1tyXSk/dGhpc1tyXSh0W3JdKTp0aGlzLmF0dHIocix0W3JdKTtyZXR1cm4gdGhpc31yZXR1cm4oaT1FLmdldEVsZW1lbnRCeUlkKHJbMl0pKSYmKHRoaXNbMF09aSx0aGlzLmxlbmd0aD0xKSx0aGlzfXJldHVybiBlLm5vZGVUeXBlPyh0aGlzWzBdPWUsdGhpcy5sZW5ndGg9MSx0aGlzKTptKGUpP3ZvaWQgMCE9PW4ucmVhZHk/bi5yZWFkeShlKTplKFMpOlMubWFrZUFycmF5KGUsdGhpcyl9KS5wcm90b3R5cGU9Uy5mbixEPVMoRSk7dmFyIEw9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sSD17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtmdW5jdGlvbiBPKGUsdCl7d2hpbGUoKGU9ZVt0XSkmJjEhPT1lLm5vZGVUeXBlKTtyZXR1cm4gZX1TLmZuLmV4dGVuZCh7aGFzOmZ1bmN0aW9uKGUpe3ZhciB0PVMoZSx0aGlzKSxuPXQubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8bjtlKyspaWYoUy5jb250YWlucyh0aGlzLHRbZV0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10aGlzLmxlbmd0aCxvPVtdLGE9InN0cmluZyIhPXR5cGVvZiBlJiZTKGUpO2lmKCFrLnRlc3QoZSkpZm9yKDtyPGk7cisrKWZvcihuPXRoaXNbcl07biYmbiE9PXQ7bj1uLnBhcmVudE5vZGUpaWYobi5ub2RlVHlwZTwxMSYmKGE/LTE8YS5pbmRleChuKToxPT09bi5ub2RlVHlwZSYmUy5maW5kLm1hdGNoZXNTZWxlY3RvcihuLGUpKSl7by5wdXNoKG4pO2JyZWFrfXJldHVybiB0aGlzLnB1c2hTdGFjaygxPG8ubGVuZ3RoP1MudW5pcXVlU29ydChvKTpvKX0saW5kZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/InN0cmluZyI9PXR5cGVvZiBlP2kuY2FsbChTKGUpLHRoaXNbMF0pOmkuY2FsbCh0aGlzLGUuanF1ZXJ5P2VbMF06ZSk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soUy51bmlxdWVTb3J0KFMubWVyZ2UodGhpcy5nZXQoKSxTKGUsdCkpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWU/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoZSkpfX0pLFMuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmMTEhPT10Lm5vZGVUeXBlP3Q6bnVsbH0scGFyZW50czpmdW5jdGlvbihlKXtyZXR1cm4gaChlLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGgoZSwicGFyZW50Tm9kZSIsbil9LG5leHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIE8oZSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihlKXtyZXR1cm4gTyhlLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihlKXtyZXR1cm4gaChlLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGUpe3JldHVybiBoKGUsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBoKGUsIm5leHRTaWJsaW5nIixuKX0scHJldlVudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaChlLCJwcmV2aW91c1NpYmxpbmciLG4pfSxzaWJsaW5nczpmdW5jdGlvbihlKXtyZXR1cm4gVCgoZS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxlKX0sY2hpbGRyZW46ZnVuY3Rpb24oZSl7cmV0dXJuIFQoZS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUuY29udGVudERvY3VtZW50JiZyKGUuY29udGVudERvY3VtZW50KT9lLmNvbnRlbnREb2N1bWVudDooQShlLCJ0ZW1wbGF0ZSIpJiYoZT1lLmNvbnRlbnR8fGUpLFMubWVyZ2UoW10sZS5jaGlsZE5vZGVzKSl9fSxmdW5jdGlvbihyLGkpe1MuZm5bcl09ZnVuY3Rpb24oZSx0KXt2YXIgbj1TLm1hcCh0aGlzLGksZSk7cmV0dXJuIlVudGlsIiE9PXIuc2xpY2UoLTUpJiYodD1lKSx0JiYic3RyaW5nIj09dHlwZW9mIHQmJihuPVMuZmlsdGVyKHQsbikpLDE8dGhpcy5sZW5ndGgmJihIW3JdfHxTLnVuaXF1ZVNvcnQobiksTC50ZXN0KHIpJiZuLnJldmVyc2UoKSksdGhpcy5wdXNoU3RhY2sobil9fSk7dmFyIFA9L1teXHgyMFx0XHJcblxmXSsvZztmdW5jdGlvbiBSKGUpe3JldHVybiBlfWZ1bmN0aW9uIE0oZSl7dGhyb3cgZX1mdW5jdGlvbiBJKGUsdCxuLHIpe3ZhciBpO3RyeXtlJiZtKGk9ZS5wcm9taXNlKT9pLmNhbGwoZSkuZG9uZSh0KS5mYWlsKG4pOmUmJm0oaT1lLnRoZW4pP2kuY2FsbChlLHQsbik6dC5hcHBseSh2b2lkIDAsW2VdLnNsaWNlKHIpKX1jYXRjaChlKXtuLmFwcGx5KHZvaWQgMCxbZV0pfX1TLkNhbGxiYWNrcz1mdW5jdGlvbihyKXt2YXIgZSxuO3I9InN0cmluZyI9PXR5cGVvZiByPyhlPXIsbj17fSxTLmVhY2goZS5tYXRjaChQKXx8W10sZnVuY3Rpb24oZSx0KXtuW3RdPSEwfSksbik6Uy5leHRlbmQoe30scik7dmFyIGksdCxvLGEscz1bXSx1PVtdLGw9LTEsYz1mdW5jdGlvbigpe2ZvcihhPWF8fHIub25jZSxvPWk9ITA7dS5sZW5ndGg7bD0tMSl7dD11LnNoaWZ0KCk7d2hpbGUoKytsPHMubGVuZ3RoKSExPT09c1tsXS5hcHBseSh0WzBdLHRbMV0pJiZyLnN0b3BPbkZhbHNlJiYobD1zLmxlbmd0aCx0PSExKX1yLm1lbW9yeXx8KHQ9ITEpLGk9ITEsYSYmKHM9dD9bXToiIil9LGY9e2FkZDpmdW5jdGlvbigpe3JldHVybiBzJiYodCYmIWkmJihsPXMubGVuZ3RoLTEsdS5wdXNoKHQpKSxmdW5jdGlvbiBuKGUpe1MuZWFjaChlLGZ1bmN0aW9uKGUsdCl7bSh0KT9yLnVuaXF1ZSYmZi5oYXModCl8fHMucHVzaCh0KTp0JiZ0Lmxlbmd0aCYmInN0cmluZyIhPT13KHQpJiZuKHQpfSl9KGFyZ3VtZW50cyksdCYmIWkmJmMoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIFMuZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oZSx0KXt2YXIgbjt3aGlsZSgtMTwobj1TLmluQXJyYXkodCxzLG4pKSlzLnNwbGljZShuLDEpLG48PWwmJmwtLX0pLHRoaXN9LGhhczpmdW5jdGlvbihlKXtyZXR1cm4gZT8tMTxTLmluQXJyYXkoZSxzKTowPHMubGVuZ3RofSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBzJiYocz1bXSksdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBhPXU9W10scz10PSIiLHRoaXN9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIXN9LGxvY2s6ZnVuY3Rpb24oKXtyZXR1cm4gYT11PVtdLHR8fGl8fChzPXQ9IiIpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiEhYX0sZmlyZVdpdGg6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXx8KHQ9W2UsKHQ9dHx8W10pLnNsaWNlP3Quc2xpY2UoKTp0XSx1LnB1c2godCksaXx8YygpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIGYuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFvfX07cmV0dXJuIGZ9LFMuZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihlKXt2YXIgbz1bWyJub3RpZnkiLCJwcm9ncmVzcyIsUy5DYWxsYmFja3MoIm1lbW9yeSIpLFMuQ2FsbGJhY2tzKCJtZW1vcnkiKSwyXSxbInJlc29sdmUiLCJkb25lIixTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwwLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsUy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksUy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksMSwicmVqZWN0ZWQiXV0saT0icGVuZGluZyIsYT17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIHMuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSwiY2F0Y2giOmZ1bmN0aW9uKGUpe3JldHVybiBhLnRoZW4obnVsbCxlKX0scGlwZTpmdW5jdGlvbigpe3ZhciBpPWFyZ3VtZW50cztyZXR1cm4gUy5EZWZlcnJlZChmdW5jdGlvbihyKXtTLmVhY2gobyxmdW5jdGlvbihlLHQpe3ZhciBuPW0oaVt0WzRdXSkmJmlbdFs0XV07c1t0WzFdXShmdW5jdGlvbigpe3ZhciBlPW4mJm4uYXBwbHkodGhpcyxhcmd1bWVudHMpO2UmJm0oZS5wcm9taXNlKT9lLnByb21pc2UoKS5wcm9ncmVzcyhyLm5vdGlmeSkuZG9uZShyLnJlc29sdmUpLmZhaWwoci5yZWplY3QpOnJbdFswXSsiV2l0aCJdKHRoaXMsbj9bZV06YXJndW1lbnRzKX0pfSksaT1udWxsfSkucHJvbWlzZSgpfSx0aGVuOmZ1bmN0aW9uKHQsbixyKXt2YXIgdT0wO2Z1bmN0aW9uIGwoaSxvLGEscyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dGhpcyxyPWFyZ3VtZW50cyxlPWZ1bmN0aW9uKCl7dmFyIGUsdDtpZighKGk8dSkpe2lmKChlPWEuYXBwbHkobixyKSk9PT1vLnByb21pc2UoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iKTt0PWUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSYmZS50aGVuLG0odCk/cz90LmNhbGwoZSxsKHUsbyxSLHMpLGwodSxvLE0scykpOih1KyssdC5jYWxsKGUsbCh1LG8sUixzKSxsKHUsbyxNLHMpLGwodSxvLFIsby5ub3RpZnlXaXRoKSkpOihhIT09UiYmKG49dm9pZCAwLHI9W2VdKSwoc3x8by5yZXNvbHZlV2l0aCkobixyKSl9fSx0PXM/ZTpmdW5jdGlvbigpe3RyeXtlKCl9Y2F0Y2goZSl7Uy5EZWZlcnJlZC5leGNlcHRpb25Ib29rJiZTLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2soZSx0LnN0YWNrVHJhY2UpLHU8PWkrMSYmKGEhPT1NJiYobj12b2lkIDAscj1bZV0pLG8ucmVqZWN0V2l0aChuLHIpKX19O2k/dCgpOihTLkRlZmVycmVkLmdldFN0YWNrSG9vayYmKHQuc3RhY2tUcmFjZT1TLkRlZmVycmVkLmdldFN0YWNrSG9vaygpKSxDLnNldFRpbWVvdXQodCkpfX1yZXR1cm4gUy5EZWZlcnJlZChmdW5jdGlvbihlKXtvWzBdWzNdLmFkZChsKDAsZSxtKHIpP3I6UixlLm5vdGlmeVdpdGgpKSxvWzFdWzNdLmFkZChsKDAsZSxtKHQpP3Q6UikpLG9bMl1bM10uYWRkKGwoMCxlLG0obik/bjpNKSl9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWU/Uy5leHRlbmQoZSxhKTphfX0scz17fTtyZXR1cm4gUy5lYWNoKG8sZnVuY3Rpb24oZSx0KXt2YXIgbj10WzJdLHI9dFs1XTthW3RbMV1dPW4uYWRkLHImJm4uYWRkKGZ1bmN0aW9uKCl7aT1yfSxvWzMtZV1bMl0uZGlzYWJsZSxvWzMtZV1bM10uZGlzYWJsZSxvWzBdWzJdLmxvY2ssb1swXVszXS5sb2NrKSxuLmFkZCh0WzNdLmZpcmUpLHNbdFswXV09ZnVuY3Rpb24oKXtyZXR1cm4gc1t0WzBdKyJXaXRoIl0odGhpcz09PXM/dm9pZCAwOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxzW3RbMF0rIldpdGgiXT1uLmZpcmVXaXRofSksYS5wcm9taXNlKHMpLGUmJmUuY2FsbChzLHMpLHN9LHdoZW46ZnVuY3Rpb24oZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aCx0PW4scj1BcnJheSh0KSxpPXMuY2FsbChhcmd1bWVudHMpLG89Uy5EZWZlcnJlZCgpLGE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JbdF09dGhpcyxpW3RdPTE8YXJndW1lbnRzLmxlbmd0aD9zLmNhbGwoYXJndW1lbnRzKTplLC0tbnx8by5yZXNvbHZlV2l0aChyLGkpfX07aWYobjw9MSYmKEkoZSxvLmRvbmUoYSh0KSkucmVzb2x2ZSxvLnJlamVjdCwhbiksInBlbmRpbmciPT09by5zdGF0ZSgpfHxtKGlbdF0mJmlbdF0udGhlbikpKXJldHVybiBvLnRoZW4oKTt3aGlsZSh0LS0pSShpW3RdLGEodCksby5yZWplY3QpO3JldHVybiBvLnByb21pc2UoKX19KTt2YXIgVz0vXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLztTLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2s9ZnVuY3Rpb24oZSx0KXtDLmNvbnNvbGUmJkMuY29uc29sZS53YXJuJiZlJiZXLnRlc3QoZS5uYW1lKSYmQy5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIrZS5tZXNzYWdlLGUuc3RhY2ssdCl9LFMucmVhZHlFeGNlcHRpb249ZnVuY3Rpb24oZSl7Qy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgZX0pfTt2YXIgRj1TLkRlZmVycmVkKCk7ZnVuY3Rpb24gQigpe0UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQiksQy5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixCKSxTLnJlYWR5KCl9Uy5mbi5yZWFkeT1mdW5jdGlvbihlKXtyZXR1cm4gRi50aGVuKGUpWyJjYXRjaCJdKGZ1bmN0aW9uKGUpe1MucmVhZHlFeGNlcHRpb24oZSl9KSx0aGlzfSxTLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxyZWFkeTpmdW5jdGlvbihlKXsoITA9PT1lPy0tUy5yZWFkeVdhaXQ6Uy5pc1JlYWR5KXx8KFMuaXNSZWFkeT0hMCkhPT1lJiYwPC0tUy5yZWFkeVdhaXR8fEYucmVzb2x2ZVdpdGgoRSxbU10pfX0pLFMucmVhZHkudGhlbj1GLnRoZW4sImNvbXBsZXRlIj09PUUucmVhZHlTdGF0ZXx8ImxvYWRpbmciIT09RS5yZWFkeVN0YXRlJiYhRS5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGw/Qy5zZXRUaW1lb3V0KFMucmVhZHkpOihFLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEIpLEMuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsQikpO3ZhciAkPWZ1bmN0aW9uKGUsdCxuLHIsaSxvLGEpe3ZhciBzPTAsdT1lLmxlbmd0aCxsPW51bGw9PW47aWYoIm9iamVjdCI9PT13KG4pKWZvcihzIGluIGk9ITAsbikkKGUsdCxzLG5bc10sITAsbyxhKTtlbHNlIGlmKHZvaWQgMCE9PXImJihpPSEwLG0ocil8fChhPSEwKSxsJiYoYT8odC5jYWxsKGUsciksdD1udWxsKToobD10LHQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBsLmNhbGwoUyhlKSxuKX0pKSx0KSlmb3IoO3M8dTtzKyspdChlW3NdLG4sYT9yOnIuY2FsbChlW3NdLHMsdChlW3NdLG4pKSk7cmV0dXJuIGk/ZTpsP3QuY2FsbChlKTp1P3QoZVswXSxuKTpvfSxfPS9eLW1zLS8sej0vLShbYS16XSkvZztmdW5jdGlvbiBVKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX1mdW5jdGlvbiBYKGUpe3JldHVybiBlLnJlcGxhY2UoXywibXMtIikucmVwbGFjZSh6LFUpfXZhciBWPWZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZS5ub2RlVHlwZXx8OT09PWUubm9kZVR5cGV8fCErZS5ub2RlVHlwZX07ZnVuY3Rpb24gRygpe3RoaXMuZXhwYW5kbz1TLmV4cGFuZG8rRy51aWQrK31HLnVpZD0xLEcucHJvdG90eXBlPXtjYWNoZTpmdW5jdGlvbihlKXt2YXIgdD1lW3RoaXMuZXhwYW5kb107cmV0dXJuIHR8fCh0PXt9LFYoZSkmJihlLm5vZGVUeXBlP2VbdGhpcy5leHBhbmRvXT10Ok9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHRoaXMuZXhwYW5kbyx7dmFsdWU6dCxjb25maWd1cmFibGU6ITB9KSkpLHR9LHNldDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaT10aGlzLmNhY2hlKGUpO2lmKCJzdHJpbmciPT10eXBlb2YgdClpW1godCldPW47ZWxzZSBmb3IociBpbiB0KWlbWChyKV09dFtyXTtyZXR1cm4gaX0sZ2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5jYWNoZShlKTplW3RoaXMuZXhwYW5kb10mJmVbdGhpcy5leHBhbmRvXVtYKHQpXX0sYWNjZXNzOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09dHx8dCYmInN0cmluZyI9PXR5cGVvZiB0JiZ2b2lkIDA9PT1uP3RoaXMuZ2V0KGUsdCk6KHRoaXMuc2V0KGUsdCxuKSx2b2lkIDAhPT1uP246dCl9LHJlbW92ZTpmdW5jdGlvbihlLHQpe3ZhciBuLHI9ZVt0aGlzLmV4cGFuZG9dO2lmKHZvaWQgMCE9PXIpe2lmKHZvaWQgMCE9PXQpe249KHQ9QXJyYXkuaXNBcnJheSh0KT90Lm1hcChYKToodD1YKHQpKWluIHI/W3RdOnQubWF0Y2goUCl8fFtdKS5sZW5ndGg7d2hpbGUobi0tKWRlbGV0ZSByW3Rbbl1dfSh2b2lkIDA9PT10fHxTLmlzRW1wdHlPYmplY3QocikpJiYoZS5ub2RlVHlwZT9lW3RoaXMuZXhwYW5kb109dm9pZCAwOmRlbGV0ZSBlW3RoaXMuZXhwYW5kb10pfX0saGFzRGF0YTpmdW5jdGlvbihlKXt2YXIgdD1lW3RoaXMuZXhwYW5kb107cmV0dXJuIHZvaWQgMCE9PXQmJiFTLmlzRW1wdHlPYmplY3QodCl9fTt2YXIgWT1uZXcgRyxRPW5ldyBHLEo9L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxLPS9bQS1aXS9nO2Z1bmN0aW9uIFooZSx0LG4pe3ZhciByLGk7aWYodm9pZCAwPT09biYmMT09PWUubm9kZVR5cGUpaWYocj0iZGF0YS0iK3QucmVwbGFjZShLLCItJCYiKS50b0xvd2VyQ2FzZSgpLCJzdHJpbmciPT10eXBlb2Yobj1lLmdldEF0dHJpYnV0ZShyKSkpe3RyeXtuPSJ0cnVlIj09PShpPW4pfHwiZmFsc2UiIT09aSYmKCJudWxsIj09PWk/bnVsbDppPT09K2krIiI/K2k6Si50ZXN0KGkpP0pTT04ucGFyc2UoaSk6aSl9Y2F0Y2goZSl7fVEuc2V0KGUsdCxuKX1lbHNlIG49dm9pZCAwO3JldHVybiBufVMuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiBRLmhhc0RhdGEoZSl8fFkuaGFzRGF0YShlKX0sZGF0YTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFEuYWNjZXNzKGUsdCxuKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe1EucmVtb3ZlKGUsdCl9LF9kYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gWS5hY2Nlc3MoZSx0LG4pfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe1kucmVtb3ZlKGUsdCl9fSksUy5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24obixlKXt2YXIgdCxyLGksbz10aGlzWzBdLGE9byYmby5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PW4pe2lmKHRoaXMubGVuZ3RoJiYoaT1RLmdldChvKSwxPT09by5ub2RlVHlwZSYmIVkuZ2V0KG8sImhhc0RhdGFBdHRycyIpKSl7dD1hLmxlbmd0aDt3aGlsZSh0LS0pYVt0XSYmMD09PShyPWFbdF0ubmFtZSkuaW5kZXhPZigiZGF0YS0iKSYmKHI9WChyLnNsaWNlKDUpKSxaKG8scixpW3JdKSk7WS5zZXQobywiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGl9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBuP3RoaXMuZWFjaChmdW5jdGlvbigpe1Euc2V0KHRoaXMsbil9KTokKHRoaXMsZnVuY3Rpb24oZSl7dmFyIHQ7aWYobyYmdm9pZCAwPT09ZSlyZXR1cm4gdm9pZCAwIT09KHQ9US5nZXQobyxuKSk/dDp2b2lkIDAhPT0odD1aKG8sbikpP3Q6dm9pZCAwO3RoaXMuZWFjaChmdW5jdGlvbigpe1Euc2V0KHRoaXMsbixlKX0pfSxudWxsLGUsMTxhcmd1bWVudHMubGVuZ3RoLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtRLnJlbW92ZSh0aGlzLGUpfSl9fSksUy5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZihlKXJldHVybiB0PSh0fHwiZngiKSsicXVldWUiLHI9WS5nZXQoZSx0KSxuJiYoIXJ8fEFycmF5LmlzQXJyYXkobik/cj1ZLmFjY2VzcyhlLHQsUy5tYWtlQXJyYXkobikpOnIucHVzaChuKSkscnx8W119LGRlcXVldWU6ZnVuY3Rpb24oZSx0KXt0PXR8fCJmeCI7dmFyIG49Uy5xdWV1ZShlLHQpLHI9bi5sZW5ndGgsaT1uLnNoaWZ0KCksbz1TLl9xdWV1ZUhvb2tzKGUsdCk7ImlucHJvZ3Jlc3MiPT09aSYmKGk9bi5zaGlmdCgpLHItLSksaSYmKCJmeCI9PT10JiZuLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgby5zdG9wLGkuY2FsbChlLGZ1bmN0aW9uKCl7Uy5kZXF1ZXVlKGUsdCl9LG8pKSwhciYmbyYmby5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dCsicXVldWVIb29rcyI7cmV0dXJuIFkuZ2V0KGUsbil8fFkuYWNjZXNzKGUsbix7ZW1wdHk6Uy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7WS5yZW1vdmUoZSxbdCsicXVldWUiLG5dKX0pfSl9fSksUy5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKHQsbil7dmFyIGU9MjtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHQmJihuPXQsdD0iZngiLGUtLSksYXJndW1lbnRzLmxlbmd0aDxlP1MucXVldWUodGhpc1swXSx0KTp2b2lkIDA9PT1uP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9Uy5xdWV1ZSh0aGlzLHQsbik7Uy5fcXVldWVIb29rcyh0aGlzLHQpLCJmeCI9PT10JiYiaW5wcm9ncmVzcyIhPT1lWzBdJiZTLmRlcXVldWUodGhpcyx0KX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtTLmRlcXVldWUodGhpcyxlKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnF1ZXVlKGV8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0xLGk9Uy5EZWZlcnJlZCgpLG89dGhpcyxhPXRoaXMubGVuZ3RoLHM9ZnVuY3Rpb24oKXstLXJ8fGkucmVzb2x2ZVdpdGgobyxbb10pfTsic3RyaW5nIiE9dHlwZW9mIGUmJih0PWUsZT12b2lkIDApLGU9ZXx8ImZ4Ijt3aGlsZShhLS0pKG49WS5nZXQob1thXSxlKyJxdWV1ZUhvb2tzIikpJiZuLmVtcHR5JiYocisrLG4uZW1wdHkuYWRkKHMpKTtyZXR1cm4gcygpLGkucHJvbWlzZSh0KX19KTt2YXIgZWU9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsdGU9bmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiK2VlKyIpKFthLXolXSopJCIsImkiKSxuZT1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLHJlPUUuZG9jdW1lbnRFbGVtZW50LGllPWZ1bmN0aW9uKGUpe3JldHVybiBTLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKX0sb2U9e2NvbXBvc2VkOiEwfTtyZS5nZXRSb290Tm9kZSYmKGllPWZ1bmN0aW9uKGUpe3JldHVybiBTLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKXx8ZS5nZXRSb290Tm9kZShvZSk9PT1lLm93bmVyRG9jdW1lbnR9KTt2YXIgYWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ibm9uZSI9PT0oZT10fHxlKS5zdHlsZS5kaXNwbGF5fHwiIj09PWUuc3R5bGUuZGlzcGxheSYmaWUoZSkmJiJub25lIj09PVMuY3NzKGUsImRpc3BsYXkiKX07ZnVuY3Rpb24gc2UoZSx0LG4scil7dmFyIGksbyxhPTIwLHM9cj9mdW5jdGlvbigpe3JldHVybiByLmN1cigpfTpmdW5jdGlvbigpe3JldHVybiBTLmNzcyhlLHQsIiIpfSx1PXMoKSxsPW4mJm5bM118fChTLmNzc051bWJlclt0XT8iIjoicHgiKSxjPWUubm9kZVR5cGUmJihTLmNzc051bWJlclt0XXx8InB4IiE9PWwmJit1KSYmdGUuZXhlYyhTLmNzcyhlLHQpKTtpZihjJiZjWzNdIT09bCl7dS89MixsPWx8fGNbM10sYz0rdXx8MTt3aGlsZShhLS0pUy5zdHlsZShlLHQsYytsKSwoMS1vKSooMS0obz1zKCkvdXx8LjUpKTw9MCYmKGE9MCksYy89bztjKj0yLFMuc3R5bGUoZSx0LGMrbCksbj1ufHxbXX1yZXR1cm4gbiYmKGM9K2N8fCt1fHwwLGk9blsxXT9jKyhuWzFdKzEpKm5bMl06K25bMl0sciYmKHIudW5pdD1sLHIuc3RhcnQ9YyxyLmVuZD1pKSksaX12YXIgdWU9e307ZnVuY3Rpb24gbGUoZSx0KXtmb3IodmFyIG4scixpLG8sYSxzLHUsbD1bXSxjPTAsZj1lLmxlbmd0aDtjPGY7YysrKShyPWVbY10pLnN0eWxlJiYobj1yLnN0eWxlLmRpc3BsYXksdD8oIm5vbmUiPT09biYmKGxbY109WS5nZXQociwiZGlzcGxheSIpfHxudWxsLGxbY118fChyLnN0eWxlLmRpc3BsYXk9IiIpKSwiIj09PXIuc3R5bGUuZGlzcGxheSYmYWUocikmJihsW2NdPSh1PWE9bz12b2lkIDAsYT0oaT1yKS5vd25lckRvY3VtZW50LHM9aS5ub2RlTmFtZSwodT11ZVtzXSl8fChvPWEuYm9keS5hcHBlbmRDaGlsZChhLmNyZWF0ZUVsZW1lbnQocykpLHU9Uy5jc3MobywiZGlzcGxheSIpLG8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKSwibm9uZSI9PT11JiYodT0iYmxvY2siKSx1ZVtzXT11KSkpKToibm9uZSIhPT1uJiYobFtjXT0ibm9uZSIsWS5zZXQociwiZGlzcGxheSIsbikpKTtmb3IoYz0wO2M8ZjtjKyspbnVsbCE9bFtjXSYmKGVbY10uc3R5bGUuZGlzcGxheT1sW2NdKTtyZXR1cm4gZX1TLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbigpe3JldHVybiBsZSh0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBsZSh0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGU/ZT90aGlzLnNob3coKTp0aGlzLmhpZGUoKTp0aGlzLmVhY2goZnVuY3Rpb24oKXthZSh0aGlzKT9TKHRoaXMpLnNob3coKTpTKHRoaXMpLmhpZGUoKX0pfX0pO3ZhciBjZSxmZSxwZT0vXig/OmNoZWNrYm94fHJhZGlvKSQvaSxkZT0vPChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKikvaSxoZT0vXiR8Xm1vZHVsZSR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2k7Y2U9RS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuYXBwZW5kQ2hpbGQoRS5jcmVhdGVFbGVtZW50KCJkaXYiKSksKGZlPUUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxmZS5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIiksZmUuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLGNlLmFwcGVuZENoaWxkKGZlKSx5LmNoZWNrQ2xvbmU9Y2UuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGNlLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIseS5ub0Nsb25lQ2hlY2tlZD0hIWNlLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZSxjZS5pbm5lckhUTUw9IjxvcHRpb24+PC9vcHRpb24+Iix5Lm9wdGlvbj0hIWNlLmxhc3RDaGlsZDt2YXIgZ2U9e3RoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfTtmdW5jdGlvbiB2ZShlLHQpe3ZhciBuO3JldHVybiBuPSJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZT9lLmdldEVsZW1lbnRzQnlUYWdOYW1lKHR8fCIqIik6InVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGw/ZS5xdWVyeVNlbGVjdG9yQWxsKHR8fCIqIik6W10sdm9pZCAwPT09dHx8dCYmQShlLHQpP1MubWVyZ2UoW2VdLG4pOm59ZnVuY3Rpb24geWUoZSx0KXtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspWS5zZXQoZVtuXSwiZ2xvYmFsRXZhbCIsIXR8fFkuZ2V0KHRbbl0sImdsb2JhbEV2YWwiKSl9Z2UudGJvZHk9Z2UudGZvb3Q9Z2UuY29sZ3JvdXA9Z2UuY2FwdGlvbj1nZS50aGVhZCxnZS50aD1nZS50ZCx5Lm9wdGlvbnx8KGdlLm9wdGdyb3VwPWdlLm9wdGlvbj1bMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdKTt2YXIgbWU9Lzx8JiM/XHcrOy87ZnVuY3Rpb24geGUoZSx0LG4scixpKXtmb3IodmFyIG8sYSxzLHUsbCxjLGY9dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkscD1bXSxkPTAsaD1lLmxlbmd0aDtkPGg7ZCsrKWlmKChvPWVbZF0pfHwwPT09bylpZigib2JqZWN0Ij09PXcobykpUy5tZXJnZShwLG8ubm9kZVR5cGU/W29dOm8pO2Vsc2UgaWYobWUudGVzdChvKSl7YT1hfHxmLmFwcGVuZENoaWxkKHQuY3JlYXRlRWxlbWVudCgiZGl2IikpLHM9KGRlLmV4ZWMobyl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksdT1nZVtzXXx8Z2UuX2RlZmF1bHQsYS5pbm5lckhUTUw9dVsxXStTLmh0bWxQcmVmaWx0ZXIobykrdVsyXSxjPXVbMF07d2hpbGUoYy0tKWE9YS5sYXN0Q2hpbGQ7Uy5tZXJnZShwLGEuY2hpbGROb2RlcyksKGE9Zi5maXJzdENoaWxkKS50ZXh0Q29udGVudD0iIn1lbHNlIHAucHVzaCh0LmNyZWF0ZVRleHROb2RlKG8pKTtmLnRleHRDb250ZW50PSIiLGQ9MDt3aGlsZShvPXBbZCsrXSlpZihyJiYtMTxTLmluQXJyYXkobyxyKSlpJiZpLnB1c2gobyk7ZWxzZSBpZihsPWllKG8pLGE9dmUoZi5hcHBlbmRDaGlsZChvKSwic2NyaXB0IiksbCYmeWUoYSksbil7Yz0wO3doaWxlKG89YVtjKytdKWhlLnRlc3Qoby50eXBlfHwiIikmJm4ucHVzaChvKX1yZXR1cm4gZn12YXIgYmU9L14oW14uXSopKD86XC4oLispfCkvO2Z1bmN0aW9uIHdlKCl7cmV0dXJuITB9ZnVuY3Rpb24gVGUoKXtyZXR1cm4hMX1mdW5jdGlvbiBDZShlLHQpe3JldHVybiBlPT09ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIEUuYWN0aXZlRWxlbWVudH1jYXRjaChlKXt9fSgpPT0oImZvY3VzIj09PXQpfWZ1bmN0aW9uIEVlKGUsdCxuLHIsaSxvKXt2YXIgYSxzO2lmKCJvYmplY3QiPT10eXBlb2YgdCl7Zm9yKHMgaW4ic3RyaW5nIiE9dHlwZW9mIG4mJihyPXJ8fG4sbj12b2lkIDApLHQpRWUoZSxzLG4scix0W3NdLG8pO3JldHVybiBlfWlmKG51bGw9PXImJm51bGw9PWk/KGk9bixyPW49dm9pZCAwKTpudWxsPT1pJiYoInN0cmluZyI9PXR5cGVvZiBuPyhpPXIscj12b2lkIDApOihpPXIscj1uLG49dm9pZCAwKSksITE9PT1pKWk9VGU7ZWxzZSBpZighaSlyZXR1cm4gZTtyZXR1cm4gMT09PW8mJihhPWksKGk9ZnVuY3Rpb24oZSl7cmV0dXJuIFMoKS5vZmYoZSksYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KS5ndWlkPWEuZ3VpZHx8KGEuZ3VpZD1TLmd1aWQrKykpLGUuZWFjaChmdW5jdGlvbigpe1MuZXZlbnQuYWRkKHRoaXMsdCxpLHIsbil9KX1mdW5jdGlvbiBTZShlLGksbyl7bz8oWS5zZXQoZSxpLCExKSxTLmV2ZW50LmFkZChlLGkse25hbWVzcGFjZTohMSxoYW5kbGVyOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj1ZLmdldCh0aGlzLGkpO2lmKDEmZS5pc1RyaWdnZXImJnRoaXNbaV0pe2lmKHIubGVuZ3RoKShTLmV2ZW50LnNwZWNpYWxbaV18fHt9KS5kZWxlZ2F0ZVR5cGUmJmUuc3RvcFByb3BhZ2F0aW9uKCk7ZWxzZSBpZihyPXMuY2FsbChhcmd1bWVudHMpLFkuc2V0KHRoaXMsaSxyKSx0PW8odGhpcyxpKSx0aGlzW2ldKCksciE9PShuPVkuZ2V0KHRoaXMsaSkpfHx0P1kuc2V0KHRoaXMsaSwhMSk6bj17fSxyIT09bilyZXR1cm4gZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxlLnByZXZlbnREZWZhdWx0KCksbiYmbi52YWx1ZX1lbHNlIHIubGVuZ3RoJiYoWS5zZXQodGhpcyxpLHt2YWx1ZTpTLmV2ZW50LnRyaWdnZXIoUy5leHRlbmQoclswXSxTLkV2ZW50LnByb3RvdHlwZSksci5zbGljZSgxKSx0aGlzKX0pLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkpfX0pKTp2b2lkIDA9PT1ZLmdldChlLGkpJiZTLmV2ZW50LmFkZChlLGksd2UpfVMuZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24odCxlLG4scixpKXt2YXIgbyxhLHMsdSxsLGMsZixwLGQsaCxnLHY9WS5nZXQodCk7aWYoVih0KSl7bi5oYW5kbGVyJiYobj0obz1uKS5oYW5kbGVyLGk9by5zZWxlY3RvciksaSYmUy5maW5kLm1hdGNoZXNTZWxlY3RvcihyZSxpKSxuLmd1aWR8fChuLmd1aWQ9Uy5ndWlkKyspLCh1PXYuZXZlbnRzKXx8KHU9di5ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSksKGE9di5oYW5kbGUpfHwoYT12LmhhbmRsZT1mdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIFMmJlMuZXZlbnQudHJpZ2dlcmVkIT09ZS50eXBlP1MuZXZlbnQuZGlzcGF0Y2guYXBwbHkodCxhcmd1bWVudHMpOnZvaWQgMH0pLGw9KGU9KGV8fCIiKS5tYXRjaChQKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlkPWc9KHM9YmUuZXhlYyhlW2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkJiYoZj1TLmV2ZW50LnNwZWNpYWxbZF18fHt9LGQ9KGk/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGQsZj1TLmV2ZW50LnNwZWNpYWxbZF18fHt9LGM9Uy5leHRlbmQoe3R5cGU6ZCxvcmlnVHlwZTpnLGRhdGE6cixoYW5kbGVyOm4sZ3VpZDpuLmd1aWQsc2VsZWN0b3I6aSxuZWVkc0NvbnRleHQ6aSYmUy5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGkpLG5hbWVzcGFjZTpoLmpvaW4oIi4iKX0sbyksKHA9dVtkXSl8fCgocD11W2RdPVtdKS5kZWxlZ2F0ZUNvdW50PTAsZi5zZXR1cCYmITEhPT1mLnNldHVwLmNhbGwodCxyLGgsYSl8fHQuYWRkRXZlbnRMaXN0ZW5lciYmdC5hZGRFdmVudExpc3RlbmVyKGQsYSkpLGYuYWRkJiYoZi5hZGQuY2FsbCh0LGMpLGMuaGFuZGxlci5ndWlkfHwoYy5oYW5kbGVyLmd1aWQ9bi5ndWlkKSksaT9wLnNwbGljZShwLmRlbGVnYXRlQ291bnQrKywwLGMpOnAucHVzaChjKSxTLmV2ZW50Lmdsb2JhbFtkXT0hMCl9fSxyZW1vdmU6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdSxsLGMsZixwLGQsaCxnLHY9WS5oYXNEYXRhKGUpJiZZLmdldChlKTtpZih2JiYodT12LmV2ZW50cykpe2w9KHQ9KHR8fCIiKS5tYXRjaChQKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlpZihkPWc9KHM9YmUuZXhlYyh0W2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkKXtmPVMuZXZlbnQuc3BlY2lhbFtkXXx8e30scD11W2Q9KHI/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGRdfHxbXSxzPXNbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksYT1vPXAubGVuZ3RoO3doaWxlKG8tLSljPXBbb10sIWkmJmchPT1jLm9yaWdUeXBlfHxuJiZuLmd1aWQhPT1jLmd1aWR8fHMmJiFzLnRlc3QoYy5uYW1lc3BhY2UpfHxyJiZyIT09Yy5zZWxlY3RvciYmKCIqKiIhPT1yfHwhYy5zZWxlY3Rvcil8fChwLnNwbGljZShvLDEpLGMuc2VsZWN0b3ImJnAuZGVsZWdhdGVDb3VudC0tLGYucmVtb3ZlJiZmLnJlbW92ZS5jYWxsKGUsYykpO2EmJiFwLmxlbmd0aCYmKGYudGVhcmRvd24mJiExIT09Zi50ZWFyZG93bi5jYWxsKGUsaCx2LmhhbmRsZSl8fFMucmVtb3ZlRXZlbnQoZSxkLHYuaGFuZGxlKSxkZWxldGUgdVtkXSl9ZWxzZSBmb3IoZCBpbiB1KVMuZXZlbnQucmVtb3ZlKGUsZCt0W2xdLG4sciwhMCk7Uy5pc0VtcHR5T2JqZWN0KHUpJiZZLnJlbW92ZShlLCJoYW5kbGUgZXZlbnRzIil9fSxkaXNwYXRjaDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxvLGEscz1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksdT1TLmV2ZW50LmZpeChlKSxsPShZLmdldCh0aGlzLCJldmVudHMiKXx8T2JqZWN0LmNyZWF0ZShudWxsKSlbdS50eXBlXXx8W10sYz1TLmV2ZW50LnNwZWNpYWxbdS50eXBlXXx8e307Zm9yKHNbMF09dSx0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKylzW3RdPWFyZ3VtZW50c1t0XTtpZih1LmRlbGVnYXRlVGFyZ2V0PXRoaXMsIWMucHJlRGlzcGF0Y2h8fCExIT09Yy5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsdSkpe2E9Uy5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsdSxsKSx0PTA7d2hpbGUoKGk9YVt0KytdKSYmIXUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSl7dS5jdXJyZW50VGFyZ2V0PWkuZWxlbSxuPTA7d2hpbGUoKG89aS5oYW5kbGVyc1tuKytdKSYmIXUuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSl1LnJuYW1lc3BhY2UmJiExIT09by5uYW1lc3BhY2UmJiF1LnJuYW1lc3BhY2UudGVzdChvLm5hbWVzcGFjZSl8fCh1LmhhbmRsZU9iaj1vLHUuZGF0YT1vLmRhdGEsdm9pZCAwIT09KHI9KChTLmV2ZW50LnNwZWNpYWxbby5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fG8uaGFuZGxlcikuYXBwbHkoaS5lbGVtLHMpKSYmITE9PT0odS5yZXN1bHQ9cikmJih1LnByZXZlbnREZWZhdWx0KCksdS5zdG9wUHJvcGFnYXRpb24oKSkpfXJldHVybiBjLnBvc3REaXNwYXRjaCYmYy5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLHUpLHUucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbyxhLHM9W10sdT10LmRlbGVnYXRlQ291bnQsbD1lLnRhcmdldDtpZih1JiZsLm5vZGVUeXBlJiYhKCJjbGljayI9PT1lLnR5cGUmJjE8PWUuYnV0dG9uKSlmb3IoO2whPT10aGlzO2w9bC5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT1sLm5vZGVUeXBlJiYoImNsaWNrIiE9PWUudHlwZXx8ITAhPT1sLmRpc2FibGVkKSl7Zm9yKG89W10sYT17fSxuPTA7bjx1O24rKyl2b2lkIDA9PT1hW2k9KHI9dFtuXSkuc2VsZWN0b3IrIiAiXSYmKGFbaV09ci5uZWVkc0NvbnRleHQ/LTE8UyhpLHRoaXMpLmluZGV4KGwpOlMuZmluZChpLHRoaXMsbnVsbCxbbF0pLmxlbmd0aCksYVtpXSYmby5wdXNoKHIpO28ubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5kbGVyczpvfSl9cmV0dXJuIGw9dGhpcyx1PHQubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5kbGVyczp0LnNsaWNlKHUpfSksc30sYWRkUHJvcDpmdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLkV2ZW50LnByb3RvdHlwZSx0LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6bShlKT9mdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gZSh0aGlzLm9yaWdpbmFsRXZlbnQpfTpmdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50W3RdfSxzZXQ6ZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZX0pfX0pfSxmaXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbUy5leHBhbmRvXT9lOm5ldyBTLkV2ZW50KGUpfSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sY2xpY2s6e3NldHVwOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXN8fGU7cmV0dXJuIHBlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LCJpbnB1dCIpJiZTZSh0LCJjbGljayIsd2UpLCExfSx0cmlnZ2VyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXN8fGU7cmV0dXJuIHBlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LCJpbnB1dCIpJiZTZSh0LCJjbGljayIpLCEwfSxfZGVmYXVsdDpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldDtyZXR1cm4gcGUudGVzdCh0LnR5cGUpJiZ0LmNsaWNrJiZBKHQsImlucHV0IikmJlkuZ2V0KHQsImNsaWNrIil8fEEodCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oZSl7dm9pZCAwIT09ZS5yZXN1bHQmJmUub3JpZ2luYWxFdmVudCYmKGUub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1lLnJlc3VsdCl9fX19LFMucmVtb3ZlRXZlbnQ9ZnVuY3Rpb24oZSx0LG4pe2UucmVtb3ZlRXZlbnRMaXN0ZW5lciYmZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbil9LFMuRXZlbnQ9ZnVuY3Rpb24oZSx0KXtpZighKHRoaXMgaW5zdGFuY2VvZiBTLkV2ZW50KSlyZXR1cm4gbmV3IFMuRXZlbnQoZSx0KTtlJiZlLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1lLHRoaXMudHlwZT1lLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9ZS5kZWZhdWx0UHJldmVudGVkfHx2b2lkIDA9PT1lLmRlZmF1bHRQcmV2ZW50ZWQmJiExPT09ZS5yZXR1cm5WYWx1ZT93ZTpUZSx0aGlzLnRhcmdldD1lLnRhcmdldCYmMz09PWUudGFyZ2V0Lm5vZGVUeXBlP2UudGFyZ2V0LnBhcmVudE5vZGU6ZS50YXJnZXQsdGhpcy5jdXJyZW50VGFyZ2V0PWUuY3VycmVudFRhcmdldCx0aGlzLnJlbGF0ZWRUYXJnZXQ9ZS5yZWxhdGVkVGFyZ2V0KTp0aGlzLnR5cGU9ZSx0JiZTLmV4dGVuZCh0aGlzLHQpLHRoaXMudGltZVN0YW1wPWUmJmUudGltZVN0YW1wfHxEYXRlLm5vdygpLHRoaXNbUy5leHBhbmRvXT0hMH0sUy5FdmVudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlMuRXZlbnQsaXNEZWZhdWx0UHJldmVudGVkOlRlLGlzUHJvcGFnYXRpb25TdG9wcGVkOlRlLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOlRlLGlzU2ltdWxhdGVkOiExLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXdlLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnByZXZlbnREZWZhdWx0KCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXdlLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD13ZSxlJiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnN0b3BQcm9wYWdhdGlvbigpfX0sUy5lYWNoKHthbHRLZXk6ITAsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNoYW5nZWRUb3VjaGVzOiEwLGN0cmxLZXk6ITAsZGV0YWlsOiEwLGV2ZW50UGhhc2U6ITAsbWV0YUtleTohMCxwYWdlWDohMCxwYWdlWTohMCxzaGlmdEtleTohMCx2aWV3OiEwLCJjaGFyIjohMCxjb2RlOiEwLGNoYXJDb2RlOiEwLGtleTohMCxrZXlDb2RlOiEwLGJ1dHRvbjohMCxidXR0b25zOiEwLGNsaWVudFg6ITAsY2xpZW50WTohMCxvZmZzZXRYOiEwLG9mZnNldFk6ITAscG9pbnRlcklkOiEwLHBvaW50ZXJUeXBlOiEwLHNjcmVlblg6ITAsc2NyZWVuWTohMCx0YXJnZXRUb3VjaGVzOiEwLHRvRWxlbWVudDohMCx0b3VjaGVzOiEwLHdoaWNoOiEwfSxTLmV2ZW50LmFkZFByb3ApLFMuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oZSx0KXtTLmV2ZW50LnNwZWNpYWxbZV09e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIFNlKHRoaXMsZSxDZSksITF9LHRyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gU2UodGhpcyxlKSwhMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZGVsZWdhdGVUeXBlOnR9fSksUy5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0Iixwb2ludGVyZW50ZXI6InBvaW50ZXJvdmVyIixwb2ludGVybGVhdmU6InBvaW50ZXJvdXQifSxmdW5jdGlvbihlLGkpe1MuZXZlbnQuc3BlY2lhbFtlXT17ZGVsZWdhdGVUeXBlOmksYmluZFR5cGU6aSxoYW5kbGU6ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLnJlbGF0ZWRUYXJnZXQscj1lLmhhbmRsZU9iajtyZXR1cm4gbiYmKG49PT10aGlzfHxTLmNvbnRhaW5zKHRoaXMsbikpfHwoZS50eXBlPXIub3JpZ1R5cGUsdD1yLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGUudHlwZT1pKSx0fX19KSxTLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIEVlKHRoaXMsZSx0LG4scil9LG9uZTpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gRWUodGhpcyxlLHQsbixyLDEpfSxvZmY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk7aWYoZSYmZS5wcmV2ZW50RGVmYXVsdCYmZS5oYW5kbGVPYmopcmV0dXJuIHI9ZS5oYW5kbGVPYmosUyhlLmRlbGVnYXRlVGFyZ2V0KS5vZmYoci5uYW1lc3BhY2U/ci5vcmlnVHlwZSsiLiIrci5uYW1lc3BhY2U6ci5vcmlnVHlwZSxyLnNlbGVjdG9yLHIuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGUpe2ZvcihpIGluIGUpdGhpcy5vZmYoaSx0LGVbaV0pO3JldHVybiB0aGlzfXJldHVybiExIT09dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHR8fChuPXQsdD12b2lkIDApLCExPT09biYmKG49VGUpLHRoaXMuZWFjaChmdW5jdGlvbigpe1MuZXZlbnQucmVtb3ZlKHRoaXMsZSxuLHQpfSl9fSk7dmFyIGtlPS88c2NyaXB0fDxzdHlsZXw8bGluay9pLEFlPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLE5lPS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZztmdW5jdGlvbiBqZShlLHQpe3JldHVybiBBKGUsInRhYmxlIikmJkEoMTEhPT10Lm5vZGVUeXBlP3Q6dC5maXJzdENoaWxkLCJ0ciIpJiZTKGUpLmNoaWxkcmVuKCJ0Ym9keSIpWzBdfHxlfWZ1bmN0aW9uIERlKGUpe3JldHVybiBlLnR5cGU9KG51bGwhPT1lLmdldEF0dHJpYnV0ZSgidHlwZSIpKSsiLyIrZS50eXBlLGV9ZnVuY3Rpb24gcWUoZSl7cmV0dXJuInRydWUvIj09PShlLnR5cGV8fCIiKS5zbGljZSgwLDUpP2UudHlwZT1lLnR5cGUuc2xpY2UoNSk6ZS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSxlfWZ1bmN0aW9uIExlKGUsdCl7dmFyIG4scixpLG8sYSxzO2lmKDE9PT10Lm5vZGVUeXBlKXtpZihZLmhhc0RhdGEoZSkmJihzPVkuZ2V0KGUpLmV2ZW50cykpZm9yKGkgaW4gWS5yZW1vdmUodCwiaGFuZGxlIGV2ZW50cyIpLHMpZm9yKG49MCxyPXNbaV0ubGVuZ3RoO248cjtuKyspUy5ldmVudC5hZGQodCxpLHNbaV1bbl0pO1EuaGFzRGF0YShlKSYmKG89US5hY2Nlc3MoZSksYT1TLmV4dGVuZCh7fSxvKSxRLnNldCh0LGEpKX19ZnVuY3Rpb24gSGUobixyLGksbyl7cj1nKHIpO3ZhciBlLHQsYSxzLHUsbCxjPTAsZj1uLmxlbmd0aCxwPWYtMSxkPXJbMF0saD1tKGQpO2lmKGh8fDE8ZiYmInN0cmluZyI9PXR5cGVvZiBkJiYheS5jaGVja0Nsb25lJiZBZS50ZXN0KGQpKXJldHVybiBuLmVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bi5lcShlKTtoJiYoclswXT1kLmNhbGwodGhpcyxlLHQuaHRtbCgpKSksSGUodCxyLGksbyl9KTtpZihmJiYodD0oZT14ZShyLG5bMF0ub3duZXJEb2N1bWVudCwhMSxuLG8pKS5maXJzdENoaWxkLDE9PT1lLmNoaWxkTm9kZXMubGVuZ3RoJiYoZT10KSx0fHxvKSl7Zm9yKHM9KGE9Uy5tYXAodmUoZSwic2NyaXB0IiksRGUpKS5sZW5ndGg7YzxmO2MrKyl1PWUsYyE9PXAmJih1PVMuY2xvbmUodSwhMCwhMCkscyYmUy5tZXJnZShhLHZlKHUsInNjcmlwdCIpKSksaS5jYWxsKG5bY10sdSxjKTtpZihzKWZvcihsPWFbYS5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxTLm1hcChhLHFlKSxjPTA7YzxzO2MrKyl1PWFbY10saGUudGVzdCh1LnR5cGV8fCIiKSYmIVkuYWNjZXNzKHUsImdsb2JhbEV2YWwiKSYmUy5jb250YWlucyhsLHUpJiYodS5zcmMmJiJtb2R1bGUiIT09KHUudHlwZXx8IiIpLnRvTG93ZXJDYXNlKCk/Uy5fZXZhbFVybCYmIXUubm9Nb2R1bGUmJlMuX2V2YWxVcmwodS5zcmMse25vbmNlOnUubm9uY2V8fHUuZ2V0QXR0cmlidXRlKCJub25jZSIpfSxsKTpiKHUudGV4dENvbnRlbnQucmVwbGFjZShOZSwiIiksdSxsKSl9cmV0dXJuIG59ZnVuY3Rpb24gT2UoZSx0LG4pe2Zvcih2YXIgcixpPXQ/Uy5maWx0ZXIodCxlKTplLG89MDtudWxsIT0ocj1pW29dKTtvKyspbnx8MSE9PXIubm9kZVR5cGV8fFMuY2xlYW5EYXRhKHZlKHIpKSxyLnBhcmVudE5vZGUmJihuJiZpZShyKSYmeWUodmUociwic2NyaXB0IikpLHIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyKSk7cmV0dXJuIGV9Uy5leHRlbmQoe2h0bWxQcmVmaWx0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGNsb25lOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbCxjPWUuY2xvbmVOb2RlKCEwKSxmPWllKGUpO2lmKCEoeS5ub0Nsb25lQ2hlY2tlZHx8MSE9PWUubm9kZVR5cGUmJjExIT09ZS5ub2RlVHlwZXx8Uy5pc1hNTERvYyhlKSkpZm9yKGE9dmUoYykscj0wLGk9KG89dmUoZSkpLmxlbmd0aDtyPGk7cisrKXM9b1tyXSx1PWFbcl0sdm9pZCAwLCJpbnB1dCI9PT0obD11Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpJiZwZS50ZXN0KHMudHlwZSk/dS5jaGVja2VkPXMuY2hlY2tlZDoiaW5wdXQiIT09bCYmInRleHRhcmVhIiE9PWx8fCh1LmRlZmF1bHRWYWx1ZT1zLmRlZmF1bHRWYWx1ZSk7aWYodClpZihuKWZvcihvPW98fHZlKGUpLGE9YXx8dmUoYykscj0wLGk9by5sZW5ndGg7cjxpO3IrKylMZShvW3JdLGFbcl0pO2Vsc2UgTGUoZSxjKTtyZXR1cm4gMDwoYT12ZShjLCJzY3JpcHQiKSkubGVuZ3RoJiZ5ZShhLCFmJiZ2ZShlLCJzY3JpcHQiKSksY30sY2xlYW5EYXRhOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuLHIsaT1TLmV2ZW50LnNwZWNpYWwsbz0wO3ZvaWQgMCE9PShuPWVbb10pO28rKylpZihWKG4pKXtpZih0PW5bWS5leHBhbmRvXSl7aWYodC5ldmVudHMpZm9yKHIgaW4gdC5ldmVudHMpaVtyXT9TLmV2ZW50LnJlbW92ZShuLHIpOlMucmVtb3ZlRXZlbnQobixyLHQuaGFuZGxlKTtuW1kuZXhwYW5kb109dm9pZCAwfW5bUS5leHBhbmRvXSYmKG5bUS5leHBhbmRvXT12b2lkIDApfX19KSxTLmZuLmV4dGVuZCh7ZGV0YWNoOmZ1bmN0aW9uKGUpe3JldHVybiBPZSh0aGlzLGUsITApfSxyZW1vdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIE9lKHRoaXMsZSl9LHRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuICQodGhpcyxmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZT9TLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmVhY2goZnVuY3Rpb24oKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8KHRoaXMudGV4dENvbnRlbnQ9ZSl9KX0sbnVsbCxlLGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gSGUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8fGplKHRoaXMsZSkuYXBwZW5kQ2hpbGQoZSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIHQ9amUodGhpcyxlKTt0Lmluc2VydEJlZm9yZShlLHQuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzLm5leHRTaWJsaW5nKX0pfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgZSx0PTA7bnVsbCE9KGU9dGhpc1t0XSk7dCsrKTE9PT1lLm5vZGVUeXBlJiYoUy5jbGVhbkRhdGEodmUoZSwhMSkpLGUudGV4dENvbnRlbnQ9IiIpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihlLHQpe3JldHVybiBlPW51bGwhPWUmJmUsdD1udWxsPT10P2U6dCx0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBTLmNsb25lKHRoaXMsZSx0KX0pfSxodG1sOmZ1bmN0aW9uKGUpe3JldHVybiAkKHRoaXMsZnVuY3Rpb24oZSl7dmFyIHQ9dGhpc1swXXx8e30sbj0wLHI9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09ZSYmMT09PXQubm9kZVR5cGUpcmV0dXJuIHQuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgZSYmIWtlLnRlc3QoZSkmJiFnZVsoZGUuZXhlYyhlKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2U9Uy5odG1sUHJlZmlsdGVyKGUpO3RyeXtmb3IoO248cjtuKyspMT09PSh0PXRoaXNbbl18fHt9KS5ub2RlVHlwZSYmKFMuY2xlYW5EYXRhKHZlKHQsITEpKSx0LmlubmVySFRNTD1lKTt0PTB9Y2F0Y2goZSl7fX10JiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGUpfSxudWxsLGUsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIG49W107cmV0dXJuIEhlKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTtTLmluQXJyYXkodGhpcyxuKTwwJiYoUy5jbGVhbkRhdGEodmUodGhpcykpLHQmJnQucmVwbGFjZUNoaWxkKGUsdGhpcykpfSxuKX19KSxTLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihlLGEpe1MuZm5bZV09ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49W10scj1TKGUpLGk9ci5sZW5ndGgtMSxvPTA7bzw9aTtvKyspdD1vPT09aT90aGlzOnRoaXMuY2xvbmUoITApLFMocltvXSlbYV0odCksdS5hcHBseShuLHQuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhuKX19KTt2YXIgUGU9bmV3IFJlZ0V4cCgiXigiK2VlKyIpKD8hcHgpW2EteiVdKyQiLCJpIiksUmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O3JldHVybiB0JiZ0Lm9wZW5lcnx8KHQ9QyksdC5nZXRDb21wdXRlZFN0eWxlKGUpfSxNZT1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPXt9O2ZvcihpIGluIHQpb1tpXT1lLnN0eWxlW2ldLGUuc3R5bGVbaV09dFtpXTtmb3IoaSBpbiByPW4uY2FsbChlKSx0KWUuc3R5bGVbaV09b1tpXTtyZXR1cm4gcn0sSWU9bmV3IFJlZ0V4cChuZS5qb2luKCJ8IiksImkiKTtmdW5jdGlvbiBXZShlLHQsbil7dmFyIHIsaSxvLGEscz1lLnN0eWxlO3JldHVybihuPW58fFJlKGUpKSYmKCIiIT09KGE9bi5nZXRQcm9wZXJ0eVZhbHVlKHQpfHxuW3RdKXx8aWUoZSl8fChhPVMuc3R5bGUoZSx0KSksIXkucGl4ZWxCb3hTdHlsZXMoKSYmUGUudGVzdChhKSYmSWUudGVzdCh0KSYmKHI9cy53aWR0aCxpPXMubWluV2lkdGgsbz1zLm1heFdpZHRoLHMubWluV2lkdGg9cy5tYXhXaWR0aD1zLndpZHRoPWEsYT1uLndpZHRoLHMud2lkdGg9cixzLm1pbldpZHRoPWkscy5tYXhXaWR0aD1vKSksdm9pZCAwIT09YT9hKyIiOmF9ZnVuY3Rpb24gRmUoZSx0KXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7aWYoIWUoKSlyZXR1cm4odGhpcy5nZXQ9dCkuYXBwbHkodGhpcyxhcmd1bWVudHMpO2RlbGV0ZSB0aGlzLmdldH19fSFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpZihsKXt1LnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7d2lkdGg6NjBweDttYXJnaW4tdG9wOjFweDtwYWRkaW5nOjA7Ym9yZGVyOjAiLGwuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6c2Nyb2xsO21hcmdpbjphdXRvO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NjAlO3RvcDoxJSIscmUuYXBwZW5kQ2hpbGQodSkuYXBwZW5kQ2hpbGQobCk7dmFyIGU9Qy5nZXRDb21wdXRlZFN0eWxlKGwpO249IjElIiE9PWUudG9wLHM9MTI9PT10KGUubWFyZ2luTGVmdCksbC5zdHlsZS5yaWdodD0iNjAlIixvPTM2PT09dChlLnJpZ2h0KSxyPTM2PT09dChlLndpZHRoKSxsLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsaT0xMj09PXQobC5vZmZzZXRXaWR0aC8zKSxyZS5yZW1vdmVDaGlsZCh1KSxsPW51bGx9fWZ1bmN0aW9uIHQoZSl7cmV0dXJuIE1hdGgucm91bmQocGFyc2VGbG9hdChlKSl9dmFyIG4scixpLG8sYSxzLHU9RS5jcmVhdGVFbGVtZW50KCJkaXYiKSxsPUUuY3JlYXRlRWxlbWVudCgiZGl2Iik7bC5zdHlsZSYmKGwuc3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQtYm94IixsLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9IiIseS5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09PWwuc3R5bGUuYmFja2dyb3VuZENsaXAsUy5leHRlbmQoeSx7Ym94U2l6aW5nUmVsaWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLHJ9LHBpeGVsQm94U3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxvfSxwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxufSxyZWxpYWJsZU1hcmdpbkxlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLHN9LHNjcm9sbGJveFNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLGl9LHJlbGlhYmxlVHJEaW1lbnNpb25zOmZ1bmN0aW9uKCl7dmFyIGUsdCxuLHI7cmV0dXJuIG51bGw9PWEmJihlPUUuY3JlYXRlRWxlbWVudCgidGFibGUiKSx0PUUuY3JlYXRlRWxlbWVudCgidHIiKSxuPUUuY3JlYXRlRWxlbWVudCgiZGl2IiksZS5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZSIsdC5zdHlsZS5jc3NUZXh0PSJib3JkZXI6MXB4IHNvbGlkIix0LnN0eWxlLmhlaWdodD0iMXB4IixuLnN0eWxlLmhlaWdodD0iOXB4IixuLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixyZS5hcHBlbmRDaGlsZChlKS5hcHBlbmRDaGlsZCh0KS5hcHBlbmRDaGlsZChuKSxyPUMuZ2V0Q29tcHV0ZWRTdHlsZSh0KSxhPXBhcnNlSW50KHIuaGVpZ2h0LDEwKStwYXJzZUludChyLmJvcmRlclRvcFdpZHRoLDEwKStwYXJzZUludChyLmJvcmRlckJvdHRvbVdpZHRoLDEwKT09PXQub2Zmc2V0SGVpZ2h0LHJlLnJlbW92ZUNoaWxkKGUpKSxhfX0pKX0oKTt2YXIgQmU9WyJXZWJraXQiLCJNb3oiLCJtcyJdLCRlPUUuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsX2U9e307ZnVuY3Rpb24gemUoZSl7dmFyIHQ9Uy5jc3NQcm9wc1tlXXx8X2VbZV07cmV0dXJuIHR8fChlIGluICRlP2U6X2VbZV09ZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSksbj1CZS5sZW5ndGg7d2hpbGUobi0tKWlmKChlPUJlW25dK3QpaW4gJGUpcmV0dXJuIGV9KGUpfHxlKX12YXIgVWU9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFhlPS9eLS0vLFZlPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxHZT17bGV0dGVyU3BhY2luZzoiMCIsZm9udFdlaWdodDoiNDAwIn07ZnVuY3Rpb24gWWUoZSx0LG4pe3ZhciByPXRlLmV4ZWModCk7cmV0dXJuIHI/TWF0aC5tYXgoMCxyWzJdLShufHwwKSkrKHJbM118fCJweCIpOnR9ZnVuY3Rpb24gUWUoZSx0LG4scixpLG8pe3ZhciBhPSJ3aWR0aCI9PT10PzE6MCxzPTAsdT0wO2lmKG49PT0ocj8iYm9yZGVyIjoiY29udGVudCIpKXJldHVybiAwO2Zvcig7YTw0O2ErPTIpIm1hcmdpbiI9PT1uJiYodSs9Uy5jc3MoZSxuK25lW2FdLCEwLGkpKSxyPygiY29udGVudCI9PT1uJiYodS09Uy5jc3MoZSwicGFkZGluZyIrbmVbYV0sITAsaSkpLCJtYXJnaW4iIT09biYmKHUtPVMuY3NzKGUsImJvcmRlciIrbmVbYV0rIldpZHRoIiwhMCxpKSkpOih1Kz1TLmNzcyhlLCJwYWRkaW5nIituZVthXSwhMCxpKSwicGFkZGluZyIhPT1uP3UrPVMuY3NzKGUsImJvcmRlciIrbmVbYV0rIldpZHRoIiwhMCxpKTpzKz1TLmNzcyhlLCJib3JkZXIiK25lW2FdKyJXaWR0aCIsITAsaSkpO3JldHVybiFyJiYwPD1vJiYodSs9TWF0aC5tYXgoMCxNYXRoLmNlaWwoZVsib2Zmc2V0Iit0WzBdLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKV0tby11LXMtLjUpKXx8MCksdX1mdW5jdGlvbiBKZShlLHQsbil7dmFyIHI9UmUoZSksaT0oIXkuYm94U2l6aW5nUmVsaWFibGUoKXx8bikmJiJib3JkZXItYm94Ij09PVMuY3NzKGUsImJveFNpemluZyIsITEsciksbz1pLGE9V2UoZSx0LHIpLHM9Im9mZnNldCIrdFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSk7aWYoUGUudGVzdChhKSl7aWYoIW4pcmV0dXJuIGE7YT0iYXV0byJ9cmV0dXJuKCF5LmJveFNpemluZ1JlbGlhYmxlKCkmJml8fCF5LnJlbGlhYmxlVHJEaW1lbnNpb25zKCkmJkEoZSwidHIiKXx8ImF1dG8iPT09YXx8IXBhcnNlRmxvYXQoYSkmJiJpbmxpbmUiPT09Uy5jc3MoZSwiZGlzcGxheSIsITEscikpJiZlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiYoaT0iYm9yZGVyLWJveCI9PT1TLmNzcyhlLCJib3hTaXppbmciLCExLHIpLChvPXMgaW4gZSkmJihhPWVbc10pKSwoYT1wYXJzZUZsb2F0KGEpfHwwKStRZShlLHQsbnx8KGk/ImJvcmRlciI6ImNvbnRlbnQiKSxvLHIsYSkrInB4In1mdW5jdGlvbiBLZShlLHQsbixyLGkpe3JldHVybiBuZXcgS2UucHJvdG90eXBlLmluaXQoZSx0LG4scixpKX1TLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPVdlKGUsIm9wYWNpdHkiKTtyZXR1cm4iIj09PW4/IjEiOm59fX19LGNzc051bWJlcjp7YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsY29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGdyaWRBcmVhOiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTdGFydDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITB9LGNzc1Byb3BzOnt9LHN0eWxlOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKGUmJjMhPT1lLm5vZGVUeXBlJiY4IT09ZS5ub2RlVHlwZSYmZS5zdHlsZSl7dmFyIGksbyxhLHM9WCh0KSx1PVhlLnRlc3QodCksbD1lLnN0eWxlO2lmKHV8fCh0PXplKHMpKSxhPVMuY3NzSG9va3NbdF18fFMuY3NzSG9va3Nbc10sdm9pZCAwPT09bilyZXR1cm4gYSYmImdldCJpbiBhJiZ2b2lkIDAhPT0oaT1hLmdldChlLCExLHIpKT9pOmxbdF07InN0cmluZyI9PT0obz10eXBlb2YgbikmJihpPXRlLmV4ZWMobikpJiZpWzFdJiYobj1zZShlLHQsaSksbz0ibnVtYmVyIiksbnVsbCE9biYmbj09biYmKCJudW1iZXIiIT09b3x8dXx8KG4rPWkmJmlbM118fChTLmNzc051bWJlcltzXT8iIjoicHgiKSkseS5jbGVhckNsb25lU3R5bGV8fCIiIT09bnx8MCE9PXQuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwobFt0XT0iaW5oZXJpdCIpLGEmJiJzZXQiaW4gYSYmdm9pZCAwPT09KG49YS5zZXQoZSxuLHIpKXx8KHU/bC5zZXRQcm9wZXJ0eSh0LG4pOmxbdF09bikpfX0sY3NzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzPVgodCk7cmV0dXJuIFhlLnRlc3QodCl8fCh0PXplKHMpKSwoYT1TLmNzc0hvb2tzW3RdfHxTLmNzc0hvb2tzW3NdKSYmImdldCJpbiBhJiYoaT1hLmdldChlLCEwLG4pKSx2b2lkIDA9PT1pJiYoaT1XZShlLHQscikpLCJub3JtYWwiPT09aSYmdCBpbiBHZSYmKGk9R2VbdF0pLCIiPT09bnx8bj8obz1wYXJzZUZsb2F0KGkpLCEwPT09bnx8aXNGaW5pdGUobyk/b3x8MDppKTppfX0pLFMuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oZSx1KXtTLmNzc0hvb2tzW3VdPXtnZXQ6ZnVuY3Rpb24oZSx0LG4pe2lmKHQpcmV0dXJuIVVlLnRlc3QoUy5jc3MoZSwiZGlzcGxheSIpKXx8ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCYmZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aD9KZShlLHUsbik6TWUoZSxWZSxmdW5jdGlvbigpe3JldHVybiBKZShlLHUsbil9KX0sc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPVJlKGUpLG89IXkuc2Nyb2xsYm94U2l6ZSgpJiYiYWJzb2x1dGUiPT09aS5wb3NpdGlvbixhPShvfHxuKSYmImJvcmRlci1ib3giPT09Uy5jc3MoZSwiYm94U2l6aW5nIiwhMSxpKSxzPW4/UWUoZSx1LG4sYSxpKTowO3JldHVybiBhJiZvJiYocy09TWF0aC5jZWlsKGVbIm9mZnNldCIrdVswXS50b1VwcGVyQ2FzZSgpK3Uuc2xpY2UoMSldLXBhcnNlRmxvYXQoaVt1XSktUWUoZSx1LCJib3JkZXIiLCExLGkpLS41KSkscyYmKHI9dGUuZXhlYyh0KSkmJiJweCIhPT0oclszXXx8InB4IikmJihlLnN0eWxlW3VdPXQsdD1TLmNzcyhlLHUpKSxZZSgwLHQscyl9fX0pLFMuY3NzSG9va3MubWFyZ2luTGVmdD1GZSh5LnJlbGlhYmxlTWFyZ2luTGVmdCxmdW5jdGlvbihlLHQpe2lmKHQpcmV0dXJuKHBhcnNlRmxvYXQoV2UoZSwibWFyZ2luTGVmdCIpKXx8ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LU1lKGUse21hcmdpbkxlZnQ6MH0sZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fSkpKyJweCJ9KSxTLmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihpLG8pe1MuY3NzSG9va3NbaStvXT17ZXhwYW5kOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49e30scj0ic3RyaW5nIj09dHlwZW9mIGU/ZS5zcGxpdCgiICIpOltlXTt0PDQ7dCsrKW5baStuZVt0XStvXT1yW3RdfHxyW3QtMl18fHJbMF07cmV0dXJuIG59fSwibWFyZ2luIiE9PWkmJihTLmNzc0hvb2tzW2krb10uc2V0PVllKX0pLFMuZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gJCh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89e30sYT0wO2lmKEFycmF5LmlzQXJyYXkodCkpe2ZvcihyPVJlKGUpLGk9dC5sZW5ndGg7YTxpO2ErKylvW3RbYV1dPVMuY3NzKGUsdFthXSwhMSxyKTtyZXR1cm4gb31yZXR1cm4gdm9pZCAwIT09bj9TLnN0eWxlKGUsdCxuKTpTLmNzcyhlLHQpfSxlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX19KSwoKFMuVHdlZW49S2UpLnByb3RvdHlwZT17Y29uc3RydWN0b3I6S2UsaW5pdDpmdW5jdGlvbihlLHQsbixyLGksbyl7dGhpcy5lbGVtPWUsdGhpcy5wcm9wPW4sdGhpcy5lYXNpbmc9aXx8Uy5lYXNpbmcuX2RlZmF1bHQsdGhpcy5vcHRpb25zPXQsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPXIsdGhpcy51bml0PW98fChTLmNzc051bWJlcltuXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGU9S2UucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGUmJmUuZ2V0P2UuZ2V0KHRoaXMpOktlLnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihlKXt2YXIgdCxuPUtlLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24/dGhpcy5wb3M9dD1TLmVhc2luZ1t0aGlzLmVhc2luZ10oZSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qZSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTp0aGlzLnBvcz10PWUsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKnQrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksbiYmbi5zZXQ/bi5zZXQodGhpcyk6S2UucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0pLmluaXQucHJvdG90eXBlPUtlLnByb3RvdHlwZSwoS2UucHJvcEhvb2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiAxIT09ZS5lbGVtLm5vZGVUeXBlfHxudWxsIT1lLmVsZW1bZS5wcm9wXSYmbnVsbD09ZS5lbGVtLnN0eWxlW2UucHJvcF0/ZS5lbGVtW2UucHJvcF06KHQ9Uy5jc3MoZS5lbGVtLGUucHJvcCwiIikpJiYiYXV0byIhPT10P3Q6MH0sc2V0OmZ1bmN0aW9uKGUpe1MuZnguc3RlcFtlLnByb3BdP1MuZnguc3RlcFtlLnByb3BdKGUpOjEhPT1lLmVsZW0ubm9kZVR5cGV8fCFTLmNzc0hvb2tzW2UucHJvcF0mJm51bGw9PWUuZWxlbS5zdHlsZVt6ZShlLnByb3ApXT9lLmVsZW1bZS5wcm9wXT1lLm5vdzpTLnN0eWxlKGUuZWxlbSxlLnByb3AsZS5ub3crZS51bml0KX19fSkuc2Nyb2xsVG9wPUtlLnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oZSl7ZS5lbGVtLm5vZGVUeXBlJiZlLmVsZW0ucGFyZW50Tm9kZSYmKGUuZWxlbVtlLnByb3BdPWUubm93KX19LFMuZWFzaW5nPXtsaW5lYXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHN3aW5nOmZ1bmN0aW9uKGUpe3JldHVybi41LU1hdGguY29zKGUqTWF0aC5QSSkvMn0sX2RlZmF1bHQ6InN3aW5nIn0sUy5meD1LZS5wcm90b3R5cGUuaW5pdCxTLmZ4LnN0ZXA9e307dmFyIFplLGV0LHR0LG50LHJ0PS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxpdD0vcXVldWVIb29rcyQvO2Z1bmN0aW9uIG90KCl7ZXQmJighMT09PUUuaGlkZGVuJiZDLnJlcXVlc3RBbmltYXRpb25GcmFtZT9DLnJlcXVlc3RBbmltYXRpb25GcmFtZShvdCk6Qy5zZXRUaW1lb3V0KG90LFMuZnguaW50ZXJ2YWwpLFMuZngudGljaygpKX1mdW5jdGlvbiBhdCgpe3JldHVybiBDLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtaZT12b2lkIDB9KSxaZT1EYXRlLm5vdygpfWZ1bmN0aW9uIHN0KGUsdCl7dmFyIG4scj0wLGk9e2hlaWdodDplfTtmb3IodD10PzE6MDtyPDQ7cis9Mi10KWlbIm1hcmdpbiIrKG49bmVbcl0pXT1pWyJwYWRkaW5nIituXT1lO3JldHVybiB0JiYoaS5vcGFjaXR5PWkud2lkdGg9ZSksaX1mdW5jdGlvbiB1dChlLHQsbil7Zm9yKHZhciByLGk9KGx0LnR3ZWVuZXJzW3RdfHxbXSkuY29uY2F0KGx0LnR3ZWVuZXJzWyIqIl0pLG89MCxhPWkubGVuZ3RoO288YTtvKyspaWYocj1pW29dLmNhbGwobix0LGUpKXJldHVybiByfWZ1bmN0aW9uIGx0KG8sZSx0KXt2YXIgbixhLHI9MCxpPWx0LnByZWZpbHRlcnMubGVuZ3RoLHM9Uy5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSB1LmVsZW19KSx1PWZ1bmN0aW9uKCl7aWYoYSlyZXR1cm4hMTtmb3IodmFyIGU9WmV8fGF0KCksdD1NYXRoLm1heCgwLGwuc3RhcnRUaW1lK2wuZHVyYXRpb24tZSksbj0xLSh0L2wuZHVyYXRpb258fDApLHI9MCxpPWwudHdlZW5zLmxlbmd0aDtyPGk7cisrKWwudHdlZW5zW3JdLnJ1bihuKTtyZXR1cm4gcy5ub3RpZnlXaXRoKG8sW2wsbix0XSksbjwxJiZpP3Q6KGl8fHMubm90aWZ5V2l0aChvLFtsLDEsMF0pLHMucmVzb2x2ZVdpdGgobyxbbF0pLCExKX0sbD1zLnByb21pc2Uoe2VsZW06byxwcm9wczpTLmV4dGVuZCh7fSxlKSxvcHRzOlMuZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9LGVhc2luZzpTLmVhc2luZy5fZGVmYXVsdH0sdCksb3JpZ2luYWxQcm9wZXJ0aWVzOmUsb3JpZ2luYWxPcHRpb25zOnQsc3RhcnRUaW1lOlplfHxhdCgpLGR1cmF0aW9uOnQuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKGUsdCl7dmFyIG49Uy5Ud2VlbihvLGwub3B0cyxlLHQsbC5vcHRzLnNwZWNpYWxFYXNpbmdbZV18fGwub3B0cy5lYXNpbmcpO3JldHVybiBsLnR3ZWVucy5wdXNoKG4pLG59LHN0b3A6ZnVuY3Rpb24oZSl7dmFyIHQ9MCxuPWU/bC50d2VlbnMubGVuZ3RoOjA7aWYoYSlyZXR1cm4gdGhpcztmb3IoYT0hMDt0PG47dCsrKWwudHdlZW5zW3RdLnJ1bigxKTtyZXR1cm4gZT8ocy5ub3RpZnlXaXRoKG8sW2wsMSwwXSkscy5yZXNvbHZlV2l0aChvLFtsLGVdKSk6cy5yZWplY3RXaXRoKG8sW2wsZV0pLHRoaXN9fSksYz1sLnByb3BzO2ZvcighZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbyxhO2ZvcihuIGluIGUpaWYoaT10W3I9WChuKV0sbz1lW25dLEFycmF5LmlzQXJyYXkobykmJihpPW9bMV0sbz1lW25dPW9bMF0pLG4hPT1yJiYoZVtyXT1vLGRlbGV0ZSBlW25dKSwoYT1TLmNzc0hvb2tzW3JdKSYmImV4cGFuZCJpbiBhKWZvcihuIGluIG89YS5leHBhbmQobyksZGVsZXRlIGVbcl0sbyluIGluIGV8fChlW25dPW9bbl0sdFtuXT1pKTtlbHNlIHRbcl09aX0oYyxsLm9wdHMuc3BlY2lhbEVhc2luZyk7cjxpO3IrKylpZihuPWx0LnByZWZpbHRlcnNbcl0uY2FsbChsLG8sYyxsLm9wdHMpKXJldHVybiBtKG4uc3RvcCkmJihTLl9xdWV1ZUhvb2tzKGwuZWxlbSxsLm9wdHMucXVldWUpLnN0b3A9bi5zdG9wLmJpbmQobikpLG47cmV0dXJuIFMubWFwKGMsdXQsbCksbShsLm9wdHMuc3RhcnQpJiZsLm9wdHMuc3RhcnQuY2FsbChvLGwpLGwucHJvZ3Jlc3MobC5vcHRzLnByb2dyZXNzKS5kb25lKGwub3B0cy5kb25lLGwub3B0cy5jb21wbGV0ZSkuZmFpbChsLm9wdHMuZmFpbCkuYWx3YXlzKGwub3B0cy5hbHdheXMpLFMuZngudGltZXIoUy5leHRlbmQodSx7ZWxlbTpvLGFuaW06bCxxdWV1ZTpsLm9wdHMucXVldWV9KSksbH1TLkFuaW1hdGlvbj1TLmV4dGVuZChsdCx7dHdlZW5lcnM6eyIqIjpbZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmNyZWF0ZVR3ZWVuKGUsdCk7cmV0dXJuIHNlKG4uZWxlbSxlLHRlLmV4ZWModCksbiksbn1dfSx0d2VlbmVyOmZ1bmN0aW9uKGUsdCl7bShlKT8odD1lLGU9WyIqIl0pOmU9ZS5tYXRjaChQKTtmb3IodmFyIG4scj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyluPWVbcl0sbHQudHdlZW5lcnNbbl09bHQudHdlZW5lcnNbbl18fFtdLGx0LnR3ZWVuZXJzW25dLnVuc2hpZnQodCl9LHByZWZpbHRlcnM6W2Z1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbCxjLGY9IndpZHRoImluIHR8fCJoZWlnaHQiaW4gdCxwPXRoaXMsZD17fSxoPWUuc3R5bGUsZz1lLm5vZGVUeXBlJiZhZShlKSx2PVkuZ2V0KGUsImZ4c2hvdyIpO2ZvcihyIGluIG4ucXVldWV8fChudWxsPT0oYT1TLl9xdWV1ZUhvb2tzKGUsImZ4IikpLnVucXVldWVkJiYoYS51bnF1ZXVlZD0wLHM9YS5lbXB0eS5maXJlLGEuZW1wdHkuZmlyZT1mdW5jdGlvbigpe2EudW5xdWV1ZWR8fHMoKX0pLGEudW5xdWV1ZWQrKyxwLmFsd2F5cyhmdW5jdGlvbigpe3AuYWx3YXlzKGZ1bmN0aW9uKCl7YS51bnF1ZXVlZC0tLFMucXVldWUoZSwiZngiKS5sZW5ndGh8fGEuZW1wdHkuZmlyZSgpfSl9KSksdClpZihpPXRbcl0scnQudGVzdChpKSl7aWYoZGVsZXRlIHRbcl0sbz1vfHwidG9nZ2xlIj09PWksaT09PShnPyJoaWRlIjoic2hvdyIpKXtpZigic2hvdyIhPT1pfHwhdnx8dm9pZCAwPT09dltyXSljb250aW51ZTtnPSEwfWRbcl09diYmdltyXXx8Uy5zdHlsZShlLHIpfWlmKCh1PSFTLmlzRW1wdHlPYmplY3QodCkpfHwhUy5pc0VtcHR5T2JqZWN0KGQpKWZvcihyIGluIGYmJjE9PT1lLm5vZGVUeXBlJiYobi5vdmVyZmxvdz1baC5vdmVyZmxvdyxoLm92ZXJmbG93WCxoLm92ZXJmbG93WV0sbnVsbD09KGw9diYmdi5kaXNwbGF5KSYmKGw9WS5nZXQoZSwiZGlzcGxheSIpKSwibm9uZSI9PT0oYz1TLmNzcyhlLCJkaXNwbGF5IikpJiYobD9jPWw6KGxlKFtlXSwhMCksbD1lLnN0eWxlLmRpc3BsYXl8fGwsYz1TLmNzcyhlLCJkaXNwbGF5IiksbGUoW2VdKSkpLCgiaW5saW5lIj09PWN8fCJpbmxpbmUtYmxvY2siPT09YyYmbnVsbCE9bCkmJiJub25lIj09PVMuY3NzKGUsImZsb2F0IikmJih1fHwocC5kb25lKGZ1bmN0aW9uKCl7aC5kaXNwbGF5PWx9KSxudWxsPT1sJiYoYz1oLmRpc3BsYXksbD0ibm9uZSI9PT1jPyIiOmMpKSxoLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxuLm92ZXJmbG93JiYoaC5vdmVyZmxvdz0iaGlkZGVuIixwLmFsd2F5cyhmdW5jdGlvbigpe2gub3ZlcmZsb3c9bi5vdmVyZmxvd1swXSxoLm92ZXJmbG93WD1uLm92ZXJmbG93WzFdLGgub3ZlcmZsb3dZPW4ub3ZlcmZsb3dbMl19KSksdT0hMSxkKXV8fCh2PyJoaWRkZW4iaW4gdiYmKGc9di5oaWRkZW4pOnY9WS5hY2Nlc3MoZSwiZnhzaG93Iix7ZGlzcGxheTpsfSksbyYmKHYuaGlkZGVuPSFnKSxnJiZsZShbZV0sITApLHAuZG9uZShmdW5jdGlvbigpe2ZvcihyIGluIGd8fGxlKFtlXSksWS5yZW1vdmUoZSwiZnhzaG93IiksZClTLnN0eWxlKGUscixkW3JdKX0pKSx1PXV0KGc/dltyXTowLHIscCksciBpbiB2fHwodltyXT11LnN0YXJ0LGcmJih1LmVuZD11LnN0YXJ0LHUuc3RhcnQ9MCkpfV0scHJlZmlsdGVyOmZ1bmN0aW9uKGUsdCl7dD9sdC5wcmVmaWx0ZXJzLnVuc2hpZnQoZSk6bHQucHJlZmlsdGVycy5wdXNoKGUpfX0pLFMuc3BlZWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUmJiJvYmplY3QiPT10eXBlb2YgZT9TLmV4dGVuZCh7fSxlKTp7Y29tcGxldGU6bnx8IW4mJnR8fG0oZSkmJmUsZHVyYXRpb246ZSxlYXNpbmc6biYmdHx8dCYmIW0odCkmJnR9O3JldHVybiBTLmZ4Lm9mZj9yLmR1cmF0aW9uPTA6Im51bWJlciIhPXR5cGVvZiByLmR1cmF0aW9uJiYoci5kdXJhdGlvbiBpbiBTLmZ4LnNwZWVkcz9yLmR1cmF0aW9uPVMuZnguc3BlZWRzW3IuZHVyYXRpb25dOnIuZHVyYXRpb249Uy5meC5zcGVlZHMuX2RlZmF1bHQpLG51bGwhPXIucXVldWUmJiEwIT09ci5xdWV1ZXx8KHIucXVldWU9ImZ4Iiksci5vbGQ9ci5jb21wbGV0ZSxyLmNvbXBsZXRlPWZ1bmN0aW9uKCl7bShyLm9sZCkmJnIub2xkLmNhbGwodGhpcyksci5xdWV1ZSYmUy5kZXF1ZXVlKHRoaXMsci5xdWV1ZSl9LHJ9LFMuZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMuZmlsdGVyKGFlKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OnR9LGUsbixyKX0sYW5pbWF0ZTpmdW5jdGlvbih0LGUsbixyKXt2YXIgaT1TLmlzRW1wdHlPYmplY3QodCksbz1TLnNwZWVkKGUsbixyKSxhPWZ1bmN0aW9uKCl7dmFyIGU9bHQodGhpcyxTLmV4dGVuZCh7fSx0KSxvKTsoaXx8WS5nZXQodGhpcywiZmluaXNoIikpJiZlLnN0b3AoITApfTtyZXR1cm4gYS5maW5pc2g9YSxpfHwhMT09PW8ucXVldWU/dGhpcy5lYWNoKGEpOnRoaXMucXVldWUoby5xdWV1ZSxhKX0sc3RvcDpmdW5jdGlvbihpLGUsbyl7dmFyIGE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdG9wO2RlbGV0ZSBlLnN0b3AsdChvKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBpJiYobz1lLGU9aSxpPXZvaWQgMCksZSYmdGhpcy5xdWV1ZShpfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT0hMCx0PW51bGwhPWkmJmkrInF1ZXVlSG9va3MiLG49Uy50aW1lcnMscj1ZLmdldCh0aGlzKTtpZih0KXJbdF0mJnJbdF0uc3RvcCYmYShyW3RdKTtlbHNlIGZvcih0IGluIHIpclt0XSYmclt0XS5zdG9wJiZpdC50ZXN0KHQpJiZhKHJbdF0pO2Zvcih0PW4ubGVuZ3RoO3QtLTspblt0XS5lbGVtIT09dGhpc3x8bnVsbCE9aSYmblt0XS5xdWV1ZSE9PWl8fChuW3RdLmFuaW0uc3RvcChvKSxlPSExLG4uc3BsaWNlKHQsMSkpOyFlJiZvfHxTLmRlcXVldWUodGhpcyxpKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuITEhPT1hJiYoYT1hfHwiZngiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0PVkuZ2V0KHRoaXMpLG49dFthKyJxdWV1ZSJdLHI9dFthKyJxdWV1ZUhvb2tzIl0saT1TLnRpbWVycyxvPW4/bi5sZW5ndGg6MDtmb3IodC5maW5pc2g9ITAsUy5xdWV1ZSh0aGlzLGEsW10pLHImJnIuc3RvcCYmci5zdG9wLmNhbGwodGhpcywhMCksZT1pLmxlbmd0aDtlLS07KWlbZV0uZWxlbT09PXRoaXMmJmlbZV0ucXVldWU9PT1hJiYoaVtlXS5hbmltLnN0b3AoITApLGkuc3BsaWNlKGUsMSkpO2ZvcihlPTA7ZTxvO2UrKyluW2VdJiZuW2VdLmZpbmlzaCYmbltlXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgdC5maW5pc2h9KX19KSxTLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGUscil7dmFyIGk9Uy5mbltyXTtTLmZuW3JdPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbD09ZXx8ImJvb2xlYW4iPT10eXBlb2YgZT9pLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoc3QociwhMCksZSx0LG4pfX0pLFMuZWFjaCh7c2xpZGVEb3duOnN0KCJzaG93Iiksc2xpZGVVcDpzdCgiaGlkZSIpLHNsaWRlVG9nZ2xlOnN0KCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGUscil7Uy5mbltlXT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuYW5pbWF0ZShyLGUsdCxuKX19KSxTLnRpbWVycz1bXSxTLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgZSx0PTAsbj1TLnRpbWVycztmb3IoWmU9RGF0ZS5ub3coKTt0PG4ubGVuZ3RoO3QrKykoZT1uW3RdKSgpfHxuW3RdIT09ZXx8bi5zcGxpY2UodC0tLDEpO24ubGVuZ3RofHxTLmZ4LnN0b3AoKSxaZT12b2lkIDB9LFMuZngudGltZXI9ZnVuY3Rpb24oZSl7Uy50aW1lcnMucHVzaChlKSxTLmZ4LnN0YXJ0KCl9LFMuZnguaW50ZXJ2YWw9MTMsUy5meC5zdGFydD1mdW5jdGlvbigpe2V0fHwoZXQ9ITAsb3QoKSl9LFMuZnguc3RvcD1mdW5jdGlvbigpe2V0PW51bGx9LFMuZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LFMuZm4uZGVsYXk9ZnVuY3Rpb24ocixlKXtyZXR1cm4gcj1TLmZ4JiZTLmZ4LnNwZWVkc1tyXXx8cixlPWV8fCJmeCIsdGhpcy5xdWV1ZShlLGZ1bmN0aW9uKGUsdCl7dmFyIG49Qy5zZXRUaW1lb3V0KGUscik7dC5zdG9wPWZ1bmN0aW9uKCl7Qy5jbGVhclRpbWVvdXQobil9fSl9LHR0PUUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxudD1FLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLmFwcGVuZENoaWxkKEUuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLHR0LnR5cGU9ImNoZWNrYm94Iix5LmNoZWNrT249IiIhPT10dC52YWx1ZSx5Lm9wdFNlbGVjdGVkPW50LnNlbGVjdGVkLCh0dD1FLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnZhbHVlPSJ0Iix0dC50eXBlPSJyYWRpbyIseS5yYWRpb1ZhbHVlPSJ0Ij09PXR0LnZhbHVlO3ZhciBjdCxmdD1TLmV4cHIuYXR0ckhhbmRsZTtTLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQpe3JldHVybiAkKHRoaXMsUy5hdHRyLGUsdCwxPGFyZ3VtZW50cy5sZW5ndGgpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtTLnJlbW92ZUF0dHIodGhpcyxlKX0pfX0pLFMuZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89ZS5ub2RlVHlwZTtpZigzIT09byYmOCE9PW8mJjIhPT1vKXJldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgZS5nZXRBdHRyaWJ1dGU/Uy5wcm9wKGUsdCxuKTooMT09PW8mJlMuaXNYTUxEb2MoZSl8fChpPVMuYXR0ckhvb2tzW3QudG9Mb3dlckNhc2UoKV18fChTLmV4cHIubWF0Y2guYm9vbC50ZXN0KHQpP2N0OnZvaWQgMCkpLHZvaWQgMCE9PW4/bnVsbD09PW4/dm9pZCBTLnJlbW92ZUF0dHIoZSx0KTppJiYic2V0ImluIGkmJnZvaWQgMCE9PShyPWkuc2V0KGUsbix0KSk/cjooZS5zZXRBdHRyaWJ1dGUodCxuKyIiKSxuKTppJiYiZ2V0ImluIGkmJm51bGwhPT0ocj1pLmdldChlLHQpKT9yOm51bGw9PShyPVMuZmluZC5hdHRyKGUsdCkpP3ZvaWQgMDpyKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oZSx0KXtpZigheS5yYWRpb1ZhbHVlJiYicmFkaW8iPT09dCYmQShlLCJpbnB1dCIpKXt2YXIgbj1lLnZhbHVlO3JldHVybiBlLnNldEF0dHJpYnV0ZSgidHlwZSIsdCksbiYmKGUudmFsdWU9biksdH19fX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MCxpPXQmJnQubWF0Y2goUCk7aWYoaSYmMT09PWUubm9kZVR5cGUpd2hpbGUobj1pW3IrK10pZS5yZW1vdmVBdHRyaWJ1dGUobil9fSksY3Q9e3NldDpmdW5jdGlvbihlLHQsbil7cmV0dXJuITE9PT10P1MucmVtb3ZlQXR0cihlLG4pOmUuc2V0QXR0cmlidXRlKG4sbiksbn19LFMuZWFjaChTLmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSxmdW5jdGlvbihlLHQpe3ZhciBhPWZ0W3RdfHxTLmZpbmQuYXR0cjtmdFt0XT1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPXQudG9Mb3dlckNhc2UoKTtyZXR1cm4gbnx8KGk9ZnRbb10sZnRbb109cixyPW51bGwhPWEoZSx0LG4pP286bnVsbCxmdFtvXT1pKSxyfX0pO3ZhciBwdD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLGR0PS9eKD86YXxhcmVhKSQvaTtmdW5jdGlvbiBodChlKXtyZXR1cm4oZS5tYXRjaChQKXx8W10pLmpvaW4oIiAiKX1mdW5jdGlvbiBndChlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIn1mdW5jdGlvbiB2dChlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOiJzdHJpbmciPT10eXBlb2YgZSYmZS5tYXRjaChQKXx8W119Uy5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gJCh0aGlzLFMucHJvcCxlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbUy5wcm9wRml4W2VdfHxlXX0pfX0pLFMuZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89ZS5ub2RlVHlwZTtpZigzIT09byYmOCE9PW8mJjIhPT1vKXJldHVybiAxPT09byYmUy5pc1hNTERvYyhlKXx8KHQ9Uy5wcm9wRml4W3RdfHx0LGk9Uy5wcm9wSG9va3NbdF0pLHZvaWQgMCE9PW4/aSYmInNldCJpbiBpJiZ2b2lkIDAhPT0ocj1pLnNldChlLG4sdCkpP3I6ZVt0XT1uOmkmJiJnZXQiaW4gaSYmbnVsbCE9PShyPWkuZ2V0KGUsdCkpP3I6ZVt0XX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PVMuZmluZC5hdHRyKGUsInRhYmluZGV4Iik7cmV0dXJuIHQ/cGFyc2VJbnQodCwxMCk6cHQudGVzdChlLm5vZGVOYW1lKXx8ZHQudGVzdChlLm5vZGVOYW1lKSYmZS5ocmVmPzA6LTF9fX0scHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9fSkseS5vcHRTZWxlY3RlZHx8KFMucHJvcEhvb2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0JiZ0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LG51bGx9LHNldDpmdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudE5vZGU7dCYmKHQuc2VsZWN0ZWRJbmRleCx0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KX19KSxTLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe1MucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxTLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24odCl7dmFyIGUsbixyLGksbyxhLHMsdT0wO2lmKG0odCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLmFkZENsYXNzKHQuY2FsbCh0aGlzLGUsZ3QodGhpcykpKX0pO2lmKChlPXZ0KHQpKS5sZW5ndGgpd2hpbGUobj10aGlzW3UrK10paWYoaT1ndChuKSxyPTE9PT1uLm5vZGVUeXBlJiYiICIraHQoaSkrIiAiKXthPTA7d2hpbGUobz1lW2ErK10pci5pbmRleE9mKCIgIitvKyIgIik8MCYmKHIrPW8rIiAiKTtpIT09KHM9aHQocikpJiZuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHMpfXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbih0KXt2YXIgZSxuLHIsaSxvLGEscyx1PTA7aWYobSh0KSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1ModGhpcykucmVtb3ZlQ2xhc3ModC5jYWxsKHRoaXMsZSxndCh0aGlzKSkpfSk7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuYXR0cigiY2xhc3MiLCIiKTtpZigoZT12dCh0KSkubGVuZ3RoKXdoaWxlKG49dGhpc1t1KytdKWlmKGk9Z3Qobikscj0xPT09bi5ub2RlVHlwZSYmIiAiK2h0KGkpKyIgIil7YT0wO3doaWxlKG89ZVthKytdKXdoaWxlKC0xPHIuaW5kZXhPZigiICIrbysiICIpKXI9ci5yZXBsYWNlKCIgIitvKyIgIiwiICIpO2khPT0ocz1odChyKSkmJm4uc2V0QXR0cmlidXRlKCJjbGFzcyIscyl9cmV0dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGksdCl7dmFyIG89dHlwZW9mIGksYT0ic3RyaW5nIj09PW98fEFycmF5LmlzQXJyYXkoaSk7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdCYmYT90P3RoaXMuYWRkQ2xhc3MoaSk6dGhpcy5yZW1vdmVDbGFzcyhpKTptKGkpP3RoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLnRvZ2dsZUNsYXNzKGkuY2FsbCh0aGlzLGUsZ3QodGhpcyksdCksdCl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0LG4scjtpZihhKXt0PTAsbj1TKHRoaXMpLHI9dnQoaSk7d2hpbGUoZT1yW3QrK10pbi5oYXNDbGFzcyhlKT9uLnJlbW92ZUNsYXNzKGUpOm4uYWRkQ2xhc3MoZSl9ZWxzZSB2b2lkIDAhPT1pJiYiYm9vbGVhbiIhPT1vfHwoKGU9Z3QodGhpcykpJiZZLnNldCh0aGlzLCJfX2NsYXNzTmFtZV9fIixlKSx0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixlfHwhMT09PWk/IiI6WS5nZXQodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIikpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj0wO3Q9IiAiK2UrIiAiO3doaWxlKG49dGhpc1tyKytdKWlmKDE9PT1uLm5vZGVUeXBlJiYtMTwoIiAiK2h0KGd0KG4pKSsiICIpLmluZGV4T2YodCkpcmV0dXJuITA7cmV0dXJuITF9fSk7dmFyIHl0PS9cci9nO1MuZm4uZXh0ZW5kKHt2YWw6ZnVuY3Rpb24obil7dmFyIHIsZSxpLHQ9dGhpc1swXTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1tKG4pLHRoaXMuZWFjaChmdW5jdGlvbihlKXt2YXIgdDsxPT09dGhpcy5ub2RlVHlwZSYmKG51bGw9PSh0PWk/bi5jYWxsKHRoaXMsZSxTKHRoaXMpLnZhbCgpKTpuKT90PSIiOiJudW1iZXIiPT10eXBlb2YgdD90Kz0iIjpBcnJheS5pc0FycmF5KHQpJiYodD1TLm1hcCh0LGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOmUrIiJ9KSksKHI9Uy52YWxIb29rc1t0aGlzLnR5cGVdfHxTLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYic2V0ImluIHImJnZvaWQgMCE9PXIuc2V0KHRoaXMsdCwidmFsdWUiKXx8KHRoaXMudmFsdWU9dCkpfSkpOnQ/KHI9Uy52YWxIb29rc1t0LnR5cGVdfHxTLnZhbEhvb2tzW3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYiZ2V0ImluIHImJnZvaWQgMCE9PShlPXIuZ2V0KHQsInZhbHVlIikpP2U6InN0cmluZyI9PXR5cGVvZihlPXQudmFsdWUpP2UucmVwbGFjZSh5dCwiIik6bnVsbD09ZT8iIjplOnZvaWQgMH19KSxTLmV4dGVuZCh7dmFsSG9va3M6e29wdGlvbjp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PVMuZmluZC5hdHRyKGUsInZhbHVlIik7cmV0dXJuIG51bGwhPXQ/dDpodChTLnRleHQoZSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGk9ZS5vcHRpb25zLG89ZS5zZWxlY3RlZEluZGV4LGE9InNlbGVjdC1vbmUiPT09ZS50eXBlLHM9YT9udWxsOltdLHU9YT9vKzE6aS5sZW5ndGg7Zm9yKHI9bzwwP3U6YT9vOjA7cjx1O3IrKylpZigoKG49aVtyXSkuc2VsZWN0ZWR8fHI9PT1vKSYmIW4uZGlzYWJsZWQmJighbi5wYXJlbnROb2RlLmRpc2FibGVkfHwhQShuLnBhcmVudE5vZGUsIm9wdGdyb3VwIikpKXtpZih0PVMobikudmFsKCksYSlyZXR1cm4gdDtzLnB1c2godCl9cmV0dXJuIHN9LHNldDpmdW5jdGlvbihlLHQpe3ZhciBuLHIsaT1lLm9wdGlvbnMsbz1TLm1ha2VBcnJheSh0KSxhPWkubGVuZ3RoO3doaWxlKGEtLSkoKHI9aVthXSkuc2VsZWN0ZWQ9LTE8Uy5pbkFycmF5KFMudmFsSG9va3Mub3B0aW9uLmdldChyKSxvKSkmJihuPSEwKTtyZXR1cm4gbnx8KGUuc2VsZWN0ZWRJbmRleD0tMSksb319fX0pLFMuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe1MudmFsSG9va3NbdGhpc109e3NldDpmdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGUuY2hlY2tlZD0tMTxTLmluQXJyYXkoUyhlKS52YWwoKSx0KX19LHkuY2hlY2tPbnx8KFMudmFsSG9va3NbdGhpc10uZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZS5nZXRBdHRyaWJ1dGUoInZhbHVlIik/Im9uIjplLnZhbHVlfSl9KSx5LmZvY3VzaW49Im9uZm9jdXNpbiJpbiBDO3ZhciBtdD0vXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8seHQ9ZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKX07Uy5leHRlbmQoUy5ldmVudCx7dHJpZ2dlcjpmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGwsYyxmLHA9W258fEVdLGQ9di5jYWxsKGUsInR5cGUiKT9lLnR5cGU6ZSxoPXYuY2FsbChlLCJuYW1lc3BhY2UiKT9lLm5hbWVzcGFjZS5zcGxpdCgiLiIpOltdO2lmKG89Zj1hPW49bnx8RSwzIT09bi5ub2RlVHlwZSYmOCE9PW4ubm9kZVR5cGUmJiFtdC50ZXN0KGQrUy5ldmVudC50cmlnZ2VyZWQpJiYoLTE8ZC5pbmRleE9mKCIuIikmJihkPShoPWQuc3BsaXQoIi4iKSkuc2hpZnQoKSxoLnNvcnQoKSksdT1kLmluZGV4T2YoIjoiKTwwJiYib24iK2QsKGU9ZVtTLmV4cGFuZG9dP2U6bmV3IFMuRXZlbnQoZCwib2JqZWN0Ij09dHlwZW9mIGUmJmUpKS5pc1RyaWdnZXI9cj8yOjMsZS5uYW1lc3BhY2U9aC5qb2luKCIuIiksZS5ybmFtZXNwYWNlPWUubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxlLnJlc3VsdD12b2lkIDAsZS50YXJnZXR8fChlLnRhcmdldD1uKSx0PW51bGw9PXQ/W2VdOlMubWFrZUFycmF5KHQsW2VdKSxjPVMuZXZlbnQuc3BlY2lhbFtkXXx8e30scnx8IWMudHJpZ2dlcnx8ITEhPT1jLnRyaWdnZXIuYXBwbHkobix0KSkpe2lmKCFyJiYhYy5ub0J1YmJsZSYmIXgobikpe2ZvcihzPWMuZGVsZWdhdGVUeXBlfHxkLG10LnRlc3QocytkKXx8KG89by5wYXJlbnROb2RlKTtvO289by5wYXJlbnROb2RlKXAucHVzaChvKSxhPW87YT09PShuLm93bmVyRG9jdW1lbnR8fEUpJiZwLnB1c2goYS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRXaW5kb3d8fEMpfWk9MDt3aGlsZSgobz1wW2krK10pJiYhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWY9byxlLnR5cGU9MTxpP3M6Yy5iaW5kVHlwZXx8ZCwobD0oWS5nZXQobywiZXZlbnRzIil8fE9iamVjdC5jcmVhdGUobnVsbCkpW2UudHlwZV0mJlkuZ2V0KG8sImhhbmRsZSIpKSYmbC5hcHBseShvLHQpLChsPXUmJm9bdV0pJiZsLmFwcGx5JiZWKG8pJiYoZS5yZXN1bHQ9bC5hcHBseShvLHQpLCExPT09ZS5yZXN1bHQmJmUucHJldmVudERlZmF1bHQoKSk7cmV0dXJuIGUudHlwZT1kLHJ8fGUuaXNEZWZhdWx0UHJldmVudGVkKCl8fGMuX2RlZmF1bHQmJiExIT09Yy5fZGVmYXVsdC5hcHBseShwLnBvcCgpLHQpfHwhVihuKXx8dSYmbShuW2RdKSYmIXgobikmJigoYT1uW3VdKSYmKG5bdV09bnVsbCksUy5ldmVudC50cmlnZ2VyZWQ9ZCxlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJmYuYWRkRXZlbnRMaXN0ZW5lcihkLHh0KSxuW2RdKCksZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpJiZmLnJlbW92ZUV2ZW50TGlzdGVuZXIoZCx4dCksUy5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLGEmJihuW3VdPWEpKSxlLnJlc3VsdH19LHNpbXVsYXRlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1TLmV4dGVuZChuZXcgUy5FdmVudCxuLHt0eXBlOmUsaXNTaW11bGF0ZWQ6ITB9KTtTLmV2ZW50LnRyaWdnZXIocixudWxsLHQpfX0pLFMuZm4uZXh0ZW5kKHt0cmlnZ2VyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1MuZXZlbnQudHJpZ2dlcihlLHQsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzWzBdO2lmKG4pcmV0dXJuIFMuZXZlbnQudHJpZ2dlcihlLHQsbiwhMCl9fSkseS5mb2N1c2lufHxTLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKG4scil7dmFyIGk9ZnVuY3Rpb24oZSl7Uy5ldmVudC5zaW11bGF0ZShyLGUudGFyZ2V0LFMuZXZlbnQuZml4KGUpKX07Uy5ldmVudC5zcGVjaWFsW3JdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcy5kb2N1bWVudHx8dGhpcyx0PVkuYWNjZXNzKGUscik7dHx8ZS5hZGRFdmVudExpc3RlbmVyKG4saSwhMCksWS5hY2Nlc3MoZSxyLCh0fHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMuZG9jdW1lbnR8fHRoaXMsdD1ZLmFjY2VzcyhlLHIpLTE7dD9ZLmFjY2VzcyhlLHIsdCk6KGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLGksITApLFkucmVtb3ZlKGUscikpfX19KTt2YXIgYnQ9Qy5sb2NhdGlvbix3dD17Z3VpZDpEYXRlLm5vdygpfSxUdD0vXD8vO1MucGFyc2VYTUw9ZnVuY3Rpb24oZSl7dmFyIHQsbjtpZighZXx8InN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBudWxsO3RyeXt0PShuZXcgQy5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhlLCJ0ZXh0L3htbCIpfWNhdGNoKGUpe31yZXR1cm4gbj10JiZ0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpWzBdLHQmJiFufHxTLmVycm9yKCJJbnZhbGlkIFhNTDogIisobj9TLm1hcChuLmNoaWxkTm9kZXMsZnVuY3Rpb24oZSl7cmV0dXJuIGUudGV4dENvbnRlbnR9KS5qb2luKCJcbiIpOmUpKSx0fTt2YXIgQ3Q9L1xbXF0kLyxFdD0vXHI/XG4vZyxTdD0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksa3Q9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIEF0KG4sZSxyLGkpe3ZhciB0O2lmKEFycmF5LmlzQXJyYXkoZSkpUy5lYWNoKGUsZnVuY3Rpb24oZSx0KXtyfHxDdC50ZXN0KG4pP2kobix0KTpBdChuKyJbIisoIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT10P2U6IiIpKyJdIix0LHIsaSl9KTtlbHNlIGlmKHJ8fCJvYmplY3QiIT09dyhlKSlpKG4sZSk7ZWxzZSBmb3IodCBpbiBlKUF0KG4rIlsiK3QrIl0iLGVbdF0scixpKX1TLnBhcmFtPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXSxpPWZ1bmN0aW9uKGUsdCl7dmFyIG49bSh0KT90KCk6dDtyW3IubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoZSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChudWxsPT1uPyIiOm4pfTtpZihudWxsPT1lKXJldHVybiIiO2lmKEFycmF5LmlzQXJyYXkoZSl8fGUuanF1ZXJ5JiYhUy5pc1BsYWluT2JqZWN0KGUpKVMuZWFjaChlLGZ1bmN0aW9uKCl7aSh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihuIGluIGUpQXQobixlW25dLHQsaSk7cmV0dXJuIHIuam9pbigiJiIpfSxTLmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIFMucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgZT1TLnByb3AodGhpcywiZWxlbWVudHMiKTtyZXR1cm4gZT9TLm1ha2VBcnJheShlKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFTKHRoaXMpLmlzKCI6ZGlzYWJsZWQiKSYma3QudGVzdCh0aGlzLm5vZGVOYW1lKSYmIVN0LnRlc3QoZSkmJih0aGlzLmNoZWNrZWR8fCFwZS50ZXN0KGUpKX0pLm1hcChmdW5jdGlvbihlLHQpe3ZhciBuPVModGhpcykudmFsKCk7cmV0dXJuIG51bGw9PW4/bnVsbDpBcnJheS5pc0FycmF5KG4pP1MubWFwKG4sZnVuY3Rpb24oZSl7cmV0dXJue25hbWU6dC5uYW1lLHZhbHVlOmUucmVwbGFjZShFdCwiXHJcbiIpfX0pOntuYW1lOnQubmFtZSx2YWx1ZTpuLnJlcGxhY2UoRXQsIlxyXG4iKX19KS5nZXQoKX19KTt2YXIgTnQ9LyUyMC9nLGp0PS8jLiokLyxEdD0vKFs/Jl0pXz1bXiZdKi8scXQ9L14oLio/KTpbIFx0XSooW15cclxuXSopJC9nbSxMdD0vXig/OkdFVHxIRUFEKSQvLEh0PS9eXC9cLy8sT3Q9e30sUHQ9e30sUnQ9IiovIi5jb25jYXQoIioiKSxNdD1FLmNyZWF0ZUVsZW1lbnQoImEiKTtmdW5jdGlvbiBJdChvKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXsic3RyaW5nIiE9dHlwZW9mIGUmJih0PWUsZT0iKiIpO3ZhciBuLHI9MCxpPWUudG9Mb3dlckNhc2UoKS5tYXRjaChQKXx8W107aWYobSh0KSl3aGlsZShuPWlbcisrXSkiKyI9PT1uWzBdPyhuPW4uc2xpY2UoMSl8fCIqIiwob1tuXT1vW25dfHxbXSkudW5zaGlmdCh0KSk6KG9bbl09b1tuXXx8W10pLnB1c2godCl9fWZ1bmN0aW9uIFd0KHQsaSxvLGEpe3ZhciBzPXt9LHU9dD09PVB0O2Z1bmN0aW9uIGwoZSl7dmFyIHI7cmV0dXJuIHNbZV09ITAsUy5lYWNoKHRbZV18fFtdLGZ1bmN0aW9uKGUsdCl7dmFyIG49dChpLG8sYSk7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBufHx1fHxzW25dP3U/IShyPW4pOnZvaWQgMDooaS5kYXRhVHlwZXMudW5zaGlmdChuKSxsKG4pLCExKX0pLHJ9cmV0dXJuIGwoaS5kYXRhVHlwZXNbMF0pfHwhc1siKiJdJiZsKCIqIil9ZnVuY3Rpb24gRnQoZSx0KXt2YXIgbixyLGk9Uy5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihuIGluIHQpdm9pZCAwIT09dFtuXSYmKChpW25dP2U6cnx8KHI9e30pKVtuXT10W25dKTtyZXR1cm4gciYmUy5leHRlbmQoITAsZSxyKSxlfU10LmhyZWY9YnQuaHJlZixTLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6YnQuaHJlZix0eXBlOiJHRVQiLGlzTG9jYWw6L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8udGVzdChidC5wcm90b2NvbCksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6eyIqIjpSdCx0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDovXGJ4bWxcYi8saHRtbDovXGJodG1sLyxqc29uOi9cYmpzb25cYi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpKU09OLnBhcnNlLCJ0ZXh0IHhtbCI6Uy5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/RnQoRnQoZSxTLmFqYXhTZXR0aW5ncyksdCk6RnQoUy5hamF4U2V0dGluZ3MsZSl9LGFqYXhQcmVmaWx0ZXI6SXQoT3QpLGFqYXhUcmFuc3BvcnQ6SXQoUHQpLGFqYXg6ZnVuY3Rpb24oZSx0KXsib2JqZWN0Ij09dHlwZW9mIGUmJih0PWUsZT12b2lkIDApLHQ9dHx8e307dmFyIGMsZixwLG4sZCxyLGgsZyxpLG8sdj1TLmFqYXhTZXR1cCh7fSx0KSx5PXYuY29udGV4dHx8dixtPXYuY29udGV4dCYmKHkubm9kZVR5cGV8fHkuanF1ZXJ5KT9TKHkpOlMuZXZlbnQseD1TLkRlZmVycmVkKCksYj1TLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSx3PXYuc3RhdHVzQ29kZXx8e30sYT17fSxzPXt9LHU9ImNhbmNlbGVkIixUPXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoaCl7aWYoIW4pe249e307d2hpbGUodD1xdC5leGVjKHApKW5bdFsxXS50b0xvd2VyQ2FzZSgpKyIgIl09KG5bdFsxXS50b0xvd2VyQ2FzZSgpKyIgIl18fFtdKS5jb25jYXQodFsyXSl9dD1uW2UudG9Mb3dlckNhc2UoKSsiICJdfXJldHVybiBudWxsPT10P251bGw6dC5qb2luKCIsICIpfSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gaD9wOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09aCYmKGU9c1tlLnRvTG93ZXJDYXNlKCldPXNbZS50b0xvd2VyQ2FzZSgpXXx8ZSxhW2VdPXQpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWgmJih2Lm1pbWVUeXBlPWUpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoZSlpZihoKVQuYWx3YXlzKGVbVC5zdGF0dXNdKTtlbHNlIGZvcih0IGluIGUpd1t0XT1bd1t0XSxlW3RdXTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZXx8dTtyZXR1cm4gYyYmYy5hYm9ydCh0KSxsKDAsdCksdGhpc319O2lmKHgucHJvbWlzZShUKSx2LnVybD0oKGV8fHYudXJsfHxidC5ocmVmKSsiIikucmVwbGFjZShIdCxidC5wcm90b2NvbCsiLy8iKSx2LnR5cGU9dC5tZXRob2R8fHQudHlwZXx8di5tZXRob2R8fHYudHlwZSx2LmRhdGFUeXBlcz0odi5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKFApfHxbIiJdLG51bGw9PXYuY3Jvc3NEb21haW4pe3I9RS5jcmVhdGVFbGVtZW50KCJhIik7dHJ5e3IuaHJlZj12LnVybCxyLmhyZWY9ci5ocmVmLHYuY3Jvc3NEb21haW49TXQucHJvdG9jb2wrIi8vIitNdC5ob3N0IT1yLnByb3RvY29sKyIvLyIrci5ob3N0fWNhdGNoKGUpe3YuY3Jvc3NEb21haW49ITB9fWlmKHYuZGF0YSYmdi5wcm9jZXNzRGF0YSYmInN0cmluZyIhPXR5cGVvZiB2LmRhdGEmJih2LmRhdGE9Uy5wYXJhbSh2LmRhdGEsdi50cmFkaXRpb25hbCkpLFd0KE90LHYsdCxUKSxoKXJldHVybiBUO2ZvcihpIGluKGc9Uy5ldmVudCYmdi5nbG9iYWwpJiYwPT1TLmFjdGl2ZSsrJiZTLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLHYudHlwZT12LnR5cGUudG9VcHBlckNhc2UoKSx2Lmhhc0NvbnRlbnQ9IUx0LnRlc3Qodi50eXBlKSxmPXYudXJsLnJlcGxhY2UoanQsIiIpLHYuaGFzQ29udGVudD92LmRhdGEmJnYucHJvY2Vzc0RhdGEmJjA9PT0odi5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiYodi5kYXRhPXYuZGF0YS5yZXBsYWNlKE50LCIrIikpOihvPXYudXJsLnNsaWNlKGYubGVuZ3RoKSx2LmRhdGEmJih2LnByb2Nlc3NEYXRhfHwic3RyaW5nIj09dHlwZW9mIHYuZGF0YSkmJihmKz0oVHQudGVzdChmKT8iJiI6Ij8iKSt2LmRhdGEsZGVsZXRlIHYuZGF0YSksITE9PT12LmNhY2hlJiYoZj1mLnJlcGxhY2UoRHQsIiQxIiksbz0oVHQudGVzdChmKT8iJiI6Ij8iKSsiXz0iK3d0Lmd1aWQrKytvKSx2LnVybD1mK28pLHYuaWZNb2RpZmllZCYmKFMubGFzdE1vZGlmaWVkW2ZdJiZULnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixTLmxhc3RNb2RpZmllZFtmXSksUy5ldGFnW2ZdJiZULnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLFMuZXRhZ1tmXSkpLCh2LmRhdGEmJnYuaGFzQ29udGVudCYmITEhPT12LmNvbnRlbnRUeXBlfHx0LmNvbnRlbnRUeXBlKSYmVC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLHYuY29udGVudFR5cGUpLFQuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0Iix2LmRhdGFUeXBlc1swXSYmdi5hY2NlcHRzW3YuZGF0YVR5cGVzWzBdXT92LmFjY2VwdHNbdi5kYXRhVHlwZXNbMF1dKygiKiIhPT12LmRhdGFUeXBlc1swXT8iLCAiK1J0KyI7IHE9MC4wMSI6IiIpOnYuYWNjZXB0c1siKiJdKSx2LmhlYWRlcnMpVC5zZXRSZXF1ZXN0SGVhZGVyKGksdi5oZWFkZXJzW2ldKTtpZih2LmJlZm9yZVNlbmQmJighMT09PXYuYmVmb3JlU2VuZC5jYWxsKHksVCx2KXx8aCkpcmV0dXJuIFQuYWJvcnQoKTtpZih1PSJhYm9ydCIsYi5hZGQodi5jb21wbGV0ZSksVC5kb25lKHYuc3VjY2VzcyksVC5mYWlsKHYuZXJyb3IpLGM9V3QoUHQsdix0LFQpKXtpZihULnJlYWR5U3RhdGU9MSxnJiZtLnRyaWdnZXIoImFqYXhTZW5kIixbVCx2XSksaClyZXR1cm4gVDt2LmFzeW5jJiYwPHYudGltZW91dCYmKGQ9Qy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VC5hYm9ydCgidGltZW91dCIpfSx2LnRpbWVvdXQpKTt0cnl7aD0hMSxjLnNlbmQoYSxsKX1jYXRjaChlKXtpZihoKXRocm93IGU7bCgtMSxlKX19ZWxzZSBsKC0xLCJObyBUcmFuc3BvcnQiKTtmdW5jdGlvbiBsKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbD10O2h8fChoPSEwLGQmJkMuY2xlYXJUaW1lb3V0KGQpLGM9dm9pZCAwLHA9cnx8IiIsVC5yZWFkeVN0YXRlPTA8ZT80OjAsaT0yMDA8PWUmJmU8MzAwfHwzMDQ9PT1lLG4mJihzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzPWUuY29udGVudHMsdT1lLmRhdGFUeXBlczt3aGlsZSgiKiI9PT11WzBdKXUuc2hpZnQoKSx2b2lkIDA9PT1yJiYocj1lLm1pbWVUeXBlfHx0LmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7aWYocilmb3IoaSBpbiBzKWlmKHNbaV0mJnNbaV0udGVzdChyKSl7dS51bnNoaWZ0KGkpO2JyZWFrfWlmKHVbMF1pbiBuKW89dVswXTtlbHNle2ZvcihpIGluIG4pe2lmKCF1WzBdfHxlLmNvbnZlcnRlcnNbaSsiICIrdVswXV0pe289aTticmVha31hfHwoYT1pKX1vPW98fGF9aWYobylyZXR1cm4gbyE9PXVbMF0mJnUudW5zaGlmdChvKSxuW29dfSh2LFQsbikpLCFpJiYtMTxTLmluQXJyYXkoInNjcmlwdCIsdi5kYXRhVHlwZXMpJiZTLmluQXJyYXkoImpzb24iLHYuZGF0YVR5cGVzKTwwJiYodi5jb252ZXJ0ZXJzWyJ0ZXh0IHNjcmlwdCJdPWZ1bmN0aW9uKCl7fSkscz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGw9e30sYz1lLmRhdGFUeXBlcy5zbGljZSgpO2lmKGNbMV0pZm9yKGEgaW4gZS5jb252ZXJ0ZXJzKWxbYS50b0xvd2VyQ2FzZSgpXT1lLmNvbnZlcnRlcnNbYV07bz1jLnNoaWZ0KCk7d2hpbGUobylpZihlLnJlc3BvbnNlRmllbGRzW29dJiYobltlLnJlc3BvbnNlRmllbGRzW29dXT10KSwhdSYmciYmZS5kYXRhRmlsdGVyJiYodD1lLmRhdGFGaWx0ZXIodCxlLmRhdGFUeXBlKSksdT1vLG89Yy5zaGlmdCgpKWlmKCIqIj09PW8pbz11O2Vsc2UgaWYoIioiIT09dSYmdSE9PW8pe2lmKCEoYT1sW3UrIiAiK29dfHxsWyIqICIrb10pKWZvcihpIGluIGwpaWYoKHM9aS5zcGxpdCgiICIpKVsxXT09PW8mJihhPWxbdSsiICIrc1swXV18fGxbIiogIitzWzBdXSkpeyEwPT09YT9hPWxbaV06ITAhPT1sW2ldJiYobz1zWzBdLGMudW5zaGlmdChzWzFdKSk7YnJlYWt9aWYoITAhPT1hKWlmKGEmJmVbInRocm93cyJdKXQ9YSh0KTtlbHNlIHRyeXt0PWEodCl9Y2F0Y2goZSl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6YT9lOiJObyBjb252ZXJzaW9uIGZyb20gIit1KyIgdG8gIitvfX19cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOnR9fSh2LHMsVCxpKSxpPyh2LmlmTW9kaWZpZWQmJigodT1ULmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIikpJiYoUy5sYXN0TW9kaWZpZWRbZl09dSksKHU9VC5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpKSYmKFMuZXRhZ1tmXT11KSksMjA0PT09ZXx8IkhFQUQiPT09di50eXBlP2w9Im5vY29udGVudCI6MzA0PT09ZT9sPSJub3Rtb2RpZmllZCI6KGw9cy5zdGF0ZSxvPXMuZGF0YSxpPSEoYT1zLmVycm9yKSkpOihhPWwsIWUmJmx8fChsPSJlcnJvciIsZTwwJiYoZT0wKSkpLFQuc3RhdHVzPWUsVC5zdGF0dXNUZXh0PSh0fHxsKSsiIixpP3gucmVzb2x2ZVdpdGgoeSxbbyxsLFRdKTp4LnJlamVjdFdpdGgoeSxbVCxsLGFdKSxULnN0YXR1c0NvZGUodyksdz12b2lkIDAsZyYmbS50cmlnZ2VyKGk/ImFqYXhTdWNjZXNzIjoiYWpheEVycm9yIixbVCx2LGk/bzphXSksYi5maXJlV2l0aCh5LFtULGxdKSxnJiYobS50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFtULHZdKSwtLVMuYWN0aXZlfHxTLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpKX1yZXR1cm4gVH0sZ2V0SlNPTjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFMuZ2V0KGUsdCxuLCJqc29uIil9LGdldFNjcmlwdDpmdW5jdGlvbihlLHQpe3JldHVybiBTLmdldChlLHZvaWQgMCx0LCJzY3JpcHQiKX19KSxTLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oZSxpKXtTW2ldPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBtKHQpJiYocj1yfHxuLG49dCx0PXZvaWQgMCksUy5hamF4KFMuZXh0ZW5kKHt1cmw6ZSx0eXBlOmksZGF0YVR5cGU6cixkYXRhOnQsc3VjY2VzczpufSxTLmlzUGxhaW5PYmplY3QoZSkmJmUpKX19KSxTLmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZS5oZWFkZXJzKSJjb250ZW50LXR5cGUiPT09dC50b0xvd2VyQ2FzZSgpJiYoZS5jb250ZW50VHlwZT1lLmhlYWRlcnNbdF18fCIiKX0pLFMuX2V2YWxVcmw9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBTLmFqYXgoe3VybDplLHR5cGU6IkdFVCIsZGF0YVR5cGU6InNjcmlwdCIsY2FjaGU6ITAsYXN5bmM6ITEsZ2xvYmFsOiExLGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oKXt9fSxkYXRhRmlsdGVyOmZ1bmN0aW9uKGUpe1MuZ2xvYmFsRXZhbChlLHQsbil9fSl9LFMuZm4uZXh0ZW5kKHt3cmFwQWxsOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB0aGlzWzBdJiYobShlKSYmKGU9ZS5jYWxsKHRoaXNbMF0pKSx0PVMoZSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJnQuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLHQubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpczt3aGlsZShlLmZpcnN0RWxlbWVudENoaWxkKWU9ZS5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gZX0pLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKG4pe3JldHVybiBtKG4pP3RoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLndyYXBJbm5lcihuLmNhbGwodGhpcyxlKSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1TKHRoaXMpLHQ9ZS5jb250ZW50cygpO3QubGVuZ3RoP3Qud3JhcEFsbChuKTplLmFwcGVuZChuKX0pfSx3cmFwOmZ1bmN0aW9uKHQpe3ZhciBuPW0odCk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLndyYXBBbGwobj90LmNhbGwodGhpcyxlKTp0KX0pfSx1bndyYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucGFyZW50KGUpLm5vdCgiYm9keSIpLmVhY2goZnVuY3Rpb24oKXtTKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KSx0aGlzfX0pLFMuZXhwci5wc2V1ZG9zLmhpZGRlbj1mdW5jdGlvbihlKXtyZXR1cm4hUy5leHByLnBzZXVkb3MudmlzaWJsZShlKX0sUy5leHByLnBzZXVkb3MudmlzaWJsZT1mdW5jdGlvbihlKXtyZXR1cm4hIShlLm9mZnNldFdpZHRofHxlLm9mZnNldEhlaWdodHx8ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl9LFMuYWpheFNldHRpbmdzLnhocj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3IEMuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goZSl7fX07dmFyIEJ0PXswOjIwMCwxMjIzOjIwNH0sJHQ9Uy5hamF4U2V0dGluZ3MueGhyKCk7eS5jb3JzPSEhJHQmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gJHQseS5hamF4PSR0PSEhJHQsUy5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGkpe3ZhciBvLGE7aWYoeS5jb3JzfHwkdCYmIWkuY3Jvc3NEb21haW4pcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPWkueGhyKCk7aWYoci5vcGVuKGkudHlwZSxpLnVybCxpLmFzeW5jLGkudXNlcm5hbWUsaS5wYXNzd29yZCksaS54aHJGaWVsZHMpZm9yKG4gaW4gaS54aHJGaWVsZHMpcltuXT1pLnhockZpZWxkc1tuXTtmb3IobiBpbiBpLm1pbWVUeXBlJiZyLm92ZXJyaWRlTWltZVR5cGUmJnIub3ZlcnJpZGVNaW1lVHlwZShpLm1pbWVUeXBlKSxpLmNyb3NzRG9tYWlufHxlWyJYLVJlcXVlc3RlZC1XaXRoIl18fChlWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0IiksZSlyLnNldFJlcXVlc3RIZWFkZXIobixlW25dKTtvPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe28mJihvPWE9ci5vbmxvYWQ9ci5vbmVycm9yPXIub25hYm9ydD1yLm9udGltZW91dD1yLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLCJhYm9ydCI9PT1lP3IuYWJvcnQoKToiZXJyb3IiPT09ZT8ibnVtYmVyIiE9dHlwZW9mIHIuc3RhdHVzP3QoMCwiZXJyb3IiKTp0KHIuc3RhdHVzLHIuc3RhdHVzVGV4dCk6dChCdFtyLnN0YXR1c118fHIuc3RhdHVzLHIuc3RhdHVzVGV4dCwidGV4dCIhPT0oci5yZXNwb25zZVR5cGV8fCJ0ZXh0Iil8fCJzdHJpbmciIT10eXBlb2Ygci5yZXNwb25zZVRleHQ/e2JpbmFyeTpyLnJlc3BvbnNlfTp7dGV4dDpyLnJlc3BvbnNlVGV4dH0sci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpfX0sci5vbmxvYWQ9bygpLGE9ci5vbmVycm9yPXIub250aW1lb3V0PW8oImVycm9yIiksdm9pZCAwIT09ci5vbmFib3J0P3Iub25hYm9ydD1hOnIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09PXIucmVhZHlTdGF0ZSYmQy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7byYmYSgpfSl9LG89bygiYWJvcnQiKTt0cnl7ci5zZW5kKGkuaGFzQ29udGVudCYmaS5kYXRhfHxudWxsKX1jYXRjaChlKXtpZihvKXRocm93IGV9fSxhYm9ydDpmdW5jdGlvbigpe28mJm8oKX19fSksUy5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGUpe2UuY3Jvc3NEb21haW4mJihlLmNvbnRlbnRzLnNjcmlwdD0hMSl9KSxTLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6L1xiKD86amF2YXxlY21hKXNjcmlwdFxiL30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihlKXtyZXR1cm4gUy5nbG9iYWxFdmFsKGUpLGV9fX0pLFMuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihlKXt2b2lkIDA9PT1lLmNhY2hlJiYoZS5jYWNoZT0hMSksZS5jcm9zc0RvbWFpbiYmKGUudHlwZT0iR0VUIil9KSxTLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24obil7dmFyIHIsaTtpZihuLmNyb3NzRG9tYWlufHxuLnNjcmlwdEF0dHJzKXJldHVybntzZW5kOmZ1bmN0aW9uKGUsdCl7cj1TKCI8c2NyaXB0PiIpLmF0dHIobi5zY3JpcHRBdHRyc3x8e30pLnByb3Aoe2NoYXJzZXQ6bi5zY3JpcHRDaGFyc2V0LHNyYzpuLnVybH0pLm9uKCJsb2FkIGVycm9yIixpPWZ1bmN0aW9uKGUpe3IucmVtb3ZlKCksaT1udWxsLGUmJnQoImVycm9yIj09PWUudHlwZT80MDQ6MjAwLGUudHlwZSl9KSxFLmhlYWQuYXBwZW5kQ2hpbGQoclswXSl9LGFib3J0OmZ1bmN0aW9uKCl7aSYmaSgpfX19KTt2YXIgX3QsenQ9W10sVXQ9Lyg9KVw/KD89JnwkKXxcP1w/LztTLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGU9enQucG9wKCl8fFMuZXhwYW5kbysiXyIrd3QuZ3VpZCsrO3JldHVybiB0aGlzW2VdPSEwLGV9fSksUy5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGE9ITEhPT1lLmpzb25wJiYoVXQudGVzdChlLnVybCk/InVybCI6InN0cmluZyI9PXR5cGVvZiBlLmRhdGEmJjA9PT0oZS5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZVdC50ZXN0KGUuZGF0YSkmJiJkYXRhIik7aWYoYXx8Impzb25wIj09PWUuZGF0YVR5cGVzWzBdKXJldHVybiByPWUuanNvbnBDYWxsYmFjaz1tKGUuanNvbnBDYWxsYmFjayk/ZS5qc29ucENhbGxiYWNrKCk6ZS5qc29ucENhbGxiYWNrLGE/ZVthXT1lW2FdLnJlcGxhY2UoVXQsIiQxIityKTohMSE9PWUuanNvbnAmJihlLnVybCs9KFR0LnRlc3QoZS51cmwpPyImIjoiPyIpK2UuanNvbnArIj0iK3IpLGUuY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1mdW5jdGlvbigpe3JldHVybiBvfHxTLmVycm9yKHIrIiB3YXMgbm90IGNhbGxlZCIpLG9bMF19LGUuZGF0YVR5cGVzWzBdPSJqc29uIixpPUNbcl0sQ1tyXT1mdW5jdGlvbigpe289YXJndW1lbnRzfSxuLmFsd2F5cyhmdW5jdGlvbigpe3ZvaWQgMD09PWk/UyhDKS5yZW1vdmVQcm9wKHIpOkNbcl09aSxlW3JdJiYoZS5qc29ucENhbGxiYWNrPXQuanNvbnBDYWxsYmFjayx6dC5wdXNoKHIpKSxvJiZtKGkpJiZpKG9bMF0pLG89aT12b2lkIDB9KSwic2NyaXB0In0pLHkuY3JlYXRlSFRNTERvY3VtZW50PSgoX3Q9RS5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLmJvZHkpLmlubmVySFRNTD0iPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT4iLDI9PT1fdC5jaGlsZE5vZGVzLmxlbmd0aCksUy5wYXJzZUhUTUw9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiJzdHJpbmciIT10eXBlb2YgZT9bXTooImJvb2xlYW4iPT10eXBlb2YgdCYmKG49dCx0PSExKSx0fHwoeS5jcmVhdGVIVE1MRG9jdW1lbnQ/KChyPSh0PUUuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKSkuY3JlYXRlRWxlbWVudCgiYmFzZSIpKS5ocmVmPUUubG9jYXRpb24uaHJlZix0LmhlYWQuYXBwZW5kQ2hpbGQocikpOnQ9RSksbz0hbiYmW10sKGk9Ti5leGVjKGUpKT9bdC5jcmVhdGVFbGVtZW50KGlbMV0pXTooaT14ZShbZV0sdCxvKSxvJiZvLmxlbmd0aCYmUyhvKS5yZW1vdmUoKSxTLm1lcmdlKFtdLGkuY2hpbGROb2RlcykpKTt2YXIgcixpLG99LFMuZm4ubG9hZD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGE9dGhpcyxzPWUuaW5kZXhPZigiICIpO3JldHVybi0xPHMmJihyPWh0KGUuc2xpY2UocykpLGU9ZS5zbGljZSgwLHMpKSxtKHQpPyhuPXQsdD12b2lkIDApOnQmJiJvYmplY3QiPT10eXBlb2YgdCYmKGk9IlBPU1QiKSwwPGEubGVuZ3RoJiZTLmFqYXgoe3VybDplLHR5cGU6aXx8IkdFVCIsZGF0YVR5cGU6Imh0bWwiLGRhdGE6dH0pLmRvbmUoZnVuY3Rpb24oZSl7bz1hcmd1bWVudHMsYS5odG1sKHI/UygiPGRpdj4iKS5hcHBlbmQoUy5wYXJzZUhUTUwoZSkpLmZpbmQocik6ZSl9KS5hbHdheXMobiYmZnVuY3Rpb24oZSx0KXthLmVhY2goZnVuY3Rpb24oKXtuLmFwcGx5KHRoaXMsb3x8W2UucmVzcG9uc2VUZXh0LHQsZV0pfSl9KSx0aGlzfSxTLmV4cHIucHNldWRvcy5hbmltYXRlZD1mdW5jdGlvbih0KXtyZXR1cm4gUy5ncmVwKFMudGltZXJzLGZ1bmN0aW9uKGUpe3JldHVybiB0PT09ZS5lbGVtfSkubGVuZ3RofSxTLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbD1TLmNzcyhlLCJwb3NpdGlvbiIpLGM9UyhlKSxmPXt9OyJzdGF0aWMiPT09bCYmKGUuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIikscz1jLm9mZnNldCgpLG89Uy5jc3MoZSwidG9wIiksdT1TLmNzcyhlLCJsZWZ0IiksKCJhYnNvbHV0ZSI9PT1sfHwiZml4ZWQiPT09bCkmJi0xPChvK3UpLmluZGV4T2YoImF1dG8iKT8oYT0ocj1jLnBvc2l0aW9uKCkpLnRvcCxpPXIubGVmdCk6KGE9cGFyc2VGbG9hdChvKXx8MCxpPXBhcnNlRmxvYXQodSl8fDApLG0odCkmJih0PXQuY2FsbChlLG4sUy5leHRlbmQoe30scykpKSxudWxsIT10LnRvcCYmKGYudG9wPXQudG9wLXMudG9wK2EpLG51bGwhPXQubGVmdCYmKGYubGVmdD10LmxlZnQtcy5sZWZ0K2kpLCJ1c2luZyJpbiB0P3QudXNpbmcuY2FsbChlLGYpOmMuY3NzKGYpfX0sUy5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbih0KXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT10P3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1Mub2Zmc2V0LnNldE9mZnNldCh0aGlzLHQsZSl9KTt2YXIgZSxuLHI9dGhpc1swXTtyZXR1cm4gcj9yLmdldENsaWVudFJlY3RzKCkubGVuZ3RoPyhlPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1yLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcse3RvcDplLnRvcCtuLnBhZ2VZT2Zmc2V0LGxlZnQ6ZS5sZWZ0K24ucGFnZVhPZmZzZXR9KTp7dG9wOjAsbGVmdDowfTp2b2lkIDB9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGUsdCxuLHI9dGhpc1swXSxpPXt0b3A6MCxsZWZ0OjB9O2lmKCJmaXhlZCI9PT1TLmNzcyhyLCJwb3NpdGlvbiIpKXQ9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlbHNle3Q9dGhpcy5vZmZzZXQoKSxuPXIub3duZXJEb2N1bWVudCxlPXIub2Zmc2V0UGFyZW50fHxuLmRvY3VtZW50RWxlbWVudDt3aGlsZShlJiYoZT09PW4uYm9keXx8ZT09PW4uZG9jdW1lbnRFbGVtZW50KSYmInN0YXRpYyI9PT1TLmNzcyhlLCJwb3NpdGlvbiIpKWU9ZS5wYXJlbnROb2RlO2UmJmUhPT1yJiYxPT09ZS5ub2RlVHlwZSYmKChpPVMoZSkub2Zmc2V0KCkpLnRvcCs9Uy5jc3MoZSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxpLmxlZnQrPVMuY3NzKGUsImJvcmRlckxlZnRXaWR0aCIsITApKX1yZXR1cm57dG9wOnQudG9wLWkudG9wLVMuY3NzKHIsIm1hcmdpblRvcCIsITApLGxlZnQ6dC5sZWZ0LWkubGVmdC1TLmNzcyhyLCJtYXJnaW5MZWZ0IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vZmZzZXRQYXJlbnQ7d2hpbGUoZSYmInN0YXRpYyI9PT1TLmNzcyhlLCJwb3NpdGlvbiIpKWU9ZS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGV8fHJlfSl9fSksUy5lYWNoKHtzY3JvbGxMZWZ0OiJwYWdlWE9mZnNldCIsc2Nyb2xsVG9wOiJwYWdlWU9mZnNldCJ9LGZ1bmN0aW9uKHQsaSl7dmFyIG89InBhZ2VZT2Zmc2V0Ij09PWk7Uy5mblt0XT1mdW5jdGlvbihlKXtyZXR1cm4gJCh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZih4KGUpP3I9ZTo5PT09ZS5ub2RlVHlwZSYmKHI9ZS5kZWZhdWx0Vmlldyksdm9pZCAwPT09bilyZXR1cm4gcj9yW2ldOmVbdF07cj9yLnNjcm9sbFRvKG8/ci5wYWdlWE9mZnNldDpuLG8/bjpyLnBhZ2VZT2Zmc2V0KTplW3RdPW59LHQsZSxhcmd1bWVudHMubGVuZ3RoKX19KSxTLmVhY2goWyJ0b3AiLCJsZWZ0Il0sZnVuY3Rpb24oZSxuKXtTLmNzc0hvb2tzW25dPUZlKHkucGl4ZWxQb3NpdGlvbixmdW5jdGlvbihlLHQpe2lmKHQpcmV0dXJuIHQ9V2UoZSxuKSxQZS50ZXN0KHQpP1MoZSkucG9zaXRpb24oKVtuXSsicHgiOnR9KX0pLFMuZWFjaCh7SGVpZ2h0OiJoZWlnaHQiLFdpZHRoOiJ3aWR0aCJ9LGZ1bmN0aW9uKGEscyl7Uy5lYWNoKHtwYWRkaW5nOiJpbm5lciIrYSxjb250ZW50OnMsIiI6Im91dGVyIithfSxmdW5jdGlvbihyLG8pe1MuZm5bb109ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoJiYocnx8ImJvb2xlYW4iIT10eXBlb2YgZSksaT1yfHwoITA9PT1lfHwhMD09PXQ/Im1hcmdpbiI6ImJvcmRlciIpO3JldHVybiAkKHRoaXMsZnVuY3Rpb24oZSx0LG4pe3ZhciByO3JldHVybiB4KGUpPzA9PT1vLmluZGV4T2YoIm91dGVyIik/ZVsiaW5uZXIiK2FdOmUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK2FdOjk9PT1lLm5vZGVUeXBlPyhyPWUuZG9jdW1lbnRFbGVtZW50LE1hdGgubWF4KGUuYm9keVsic2Nyb2xsIithXSxyWyJzY3JvbGwiK2FdLGUuYm9keVsib2Zmc2V0IithXSxyWyJvZmZzZXQiK2FdLHJbImNsaWVudCIrYV0pKTp2b2lkIDA9PT1uP1MuY3NzKGUsdCxpKTpTLnN0eWxlKGUsdCxuLGkpfSxzLG4/ZTp2b2lkIDAsbil9fSl9KSxTLmVhY2goWyJhamF4U3RhcnQiLCJhamF4U3RvcCIsImFqYXhDb21wbGV0ZSIsImFqYXhFcnJvciIsImFqYXhTdWNjZXNzIiwiYWpheFNlbmQiXSxmdW5jdGlvbihlLHQpe1MuZm5bdF09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub24odCxlKX19KSxTLmZuLmV4dGVuZCh7YmluZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMub24oZSxudWxsLHQsbil9LHVuYmluZDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm9mZihlLG51bGwsdCl9LGRlbGVnYXRlOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLm9uKHQsZSxuLHIpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoZSwiKioiKTp0aGlzLm9mZih0LGV8fCIqKiIsbil9LGhvdmVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubW91c2VlbnRlcihlKS5tb3VzZWxlYXZlKHR8fGUpfX0pLFMuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihlLG4pe1MuZm5bbl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMDxhcmd1bWVudHMubGVuZ3RoP3RoaXMub24obixudWxsLGUsdCk6dGhpcy50cmlnZ2VyKG4pfX0pO3ZhciBYdD0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2c7Uy5wcm94eT1mdW5jdGlvbihlLHQpe3ZhciBuLHIsaTtpZigic3RyaW5nIj09dHlwZW9mIHQmJihuPWVbdF0sdD1lLGU9biksbShlKSlyZXR1cm4gcj1zLmNhbGwoYXJndW1lbnRzLDIpLChpPWZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodHx8dGhpcyxyLmNvbmNhdChzLmNhbGwoYXJndW1lbnRzKSkpfSkuZ3VpZD1lLmd1aWQ9ZS5ndWlkfHxTLmd1aWQrKyxpfSxTLmhvbGRSZWFkeT1mdW5jdGlvbihlKXtlP1MucmVhZHlXYWl0Kys6Uy5yZWFkeSghMCl9LFMuaXNBcnJheT1BcnJheS5pc0FycmF5LFMucGFyc2VKU09OPUpTT04ucGFyc2UsUy5ub2RlTmFtZT1BLFMuaXNGdW5jdGlvbj1tLFMuaXNXaW5kb3c9eCxTLmNhbWVsQ2FzZT1YLFMudHlwZT13LFMubm93PURhdGUubm93LFMuaXNOdW1lcmljPWZ1bmN0aW9uKGUpe3ZhciB0PVMudHlwZShlKTtyZXR1cm4oIm51bWJlciI9PT10fHwic3RyaW5nIj09PXQpJiYhaXNOYU4oZS1wYXJzZUZsb2F0KGUpKX0sUy50cmltPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOihlKyIiKS5yZXBsYWNlKFh0LCIiKX0sImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIFN9KTt2YXIgVnQ9Qy5qUXVlcnksR3Q9Qy4kO3JldHVybiBTLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIEMuJD09PVMmJihDLiQ9R3QpLGUmJkMualF1ZXJ5PT09UyYmKEMualF1ZXJ5PVZ0KSxTfSwidW5kZWZpbmVkIj09dHlwZW9mIGUmJihDLmpRdWVyeT1DLiQ9UyksU30pOwo="></script>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="data:text/css,%40font%2Dface%20%7B%0Afont%2Dfamily%3A%20%27Source%20Sans%20Pro%27%3B%0Afont%2Dstyle%3A%20normal%3B%0Afont%2Dweight%3A%20300%3B%0Asrc%3A%20url%28data%3Aapplication%2Ffont%2Dsfnt%3Bbase64%2CAAEAAAARAQAABAAQR0RFRgNEA3IAAG%2BkAAAAQEdQT1PXveeXAABv5AAAGWRHU1VC8WfWVwAAiUgAAADgT1MvMlpQkwsAAGZkAAAAYGNtYXDzMPm1AABmxAAAAeZjdnQgDXMAuAAAamwAAAAoZnBnbQZZnDcAAGisAAABc2dhc3D%2F%2FwADAABvnAAAAAhnbHlm4G%2FpBAAAARwAAF8kaGVhZP4Fs%2FYAAGJEAAAANmhoZWEHlAOiAABmQAAAACRobXR4l6Yq6AAAYnwAAAPEbG9jYV5idvoAAGBgAAAB5G1heHADCwJJAABgQAAAACBuYW1lIvc8kwAAapQAAAHKcG9zdGxQSG8AAGxgAAADOXByZXAtaIB5AABqIAAAAEsABQBeAAACGgKUAAMABgAJAA8AFQBnALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAIvG7kAAgAEPlm6AAUAAgAAERI5ugAGAAIAABESOboABwACAAAREjm6AAgAAgAAERI5uQAKAAH0ugANAAIAABESObgAABC5ABIAAfQwMRMhESETAxEhEQMTLwEjDwETPwEhHwFeAbz%2BRMCTAWCRfF07BD1foDVW%2FuRXNgKU%2FWwBVAEE%2FfwCBP78%2FtOkaWmkAU1cm5tcAAIACAAAAgYCkwAJABEAVAC4AABFWLgADi8buQAOABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4ABEvG7kAEQAEPlm6AAUADAAOERI5ugALAAwADhESObgACy%2B5AAkAAfQwMQEnLgEnIw4BDwEXIQcjEzMTIwF8KhQkEQQRJBQq9%2F77Ti7oLugwAQl7O2w9PWw7eyfiApP9bQAAAAMAYQAAAhUCkwARABoAIwBbALgAAEVYuAAALxu5AAAAED5ZuAAARVi4ABEvG7kAEQAEPlm6ACEAAAARERI5uAAhL7oACAAhABIREjm4AAAQuQAZAAH0uAAhELkAGgAB9LgAERC5ACMAAfQwMRMzMhYVFAYHFR4BFRQOAisBEzI2NTQmKwEVEzI2NTQmKwERYbJkdjs6SVQjQFo4v6BmWF5bd4VjcW5mhQKTTVM0TQ8EC09FMEgwGAFxQUJAOfz%2BtUpQR0X%2B2gAAAQA3%2F%2FQCDwKfACEAOQC4AABFWLgABS8buQAFABA%2BWbgAAEVYuAAdLxu5AB0ABD5ZuAAFELkADAAB9LgAHRC5ABYAAfQwMRM0PgIzMhYXBy4BIyIOAhUUHgIzMjY3Fw4BIyIuAjcpSmg%2FOVgaHBpILTZXPSAgPFU1M08kHCZeQD1mSSgBS05%2BWS8wHx4eJSpNbkVFb04rKCkdLDIwWX8AAAIAYQAAAiUCkwAMABkANQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuQANAAH0uAAAELkAFwAB9DAxEzMyHgIVFA4CKwE3Mj4CNTQuAisBEWGZTHFKJCRKcEyalENhPh4ePmFDZgKTLlZ4S0t7Vy8nK05rQUBqTCr9uwAAAAABAGEAAAHUApMACwBNALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm4AAAQuQADAAH0ugAHAAAACxESObgABy%2B5AAUAAfS4AAsQuQAIAAH0MDETIRUhFSEVIREhFSFhAWn%2BxQEI%2FvgBRf6NApMo%2BSj%2B3igAAQBhAAAByAKTAAkAQwC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAJLxu5AAkABD5ZuAAAELkAAwAB9LoABwAAAAkREjm4AAcvuQAFAAH0MDETIRUhESEVIREjYQFn%2FscBCf73LgKTKP76KP7DAAAAAAEAN%2F%2F0AhUCnwAnAE0AuAAARVi4AAUvG7kABQAQPlm4AABFWLgAIy8buQAjAAQ%2BWbgABRC5AA4AAfS4ACMQuQAYAAH0ugAfAAUAIxESObgAHy%2B5AB0AAfQwMRM0PgIzMh4CFwcuASMiDgIVFB4CMzI2NzUjNTMRDgEjIi4CNypNa0IhNiwjDRsaSDY5Wj8iID1ZOC1PGJ7KH2NCP2hKKQFLTn5ZLw4XHA4eHCcqTW5FRW9OKxoYzSf%2B%2ByEqMFl%2FAAEAYQAAAh4CkwALAEkAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACy8buQALAAQ%2BWboACQAAAAsREjm4AAkvuQADAAH0uAAAELgABNC4AAsQuAAH0DAxEzMRIREzESMRIREjYS4BYS4u%2Fp8uApP%2B3wEh%2FW0BSv62AAEAYQAAAI8CkwADACUAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAAy8buQADAAQ%2BWTAxEzMRI2EuLgKT%2FW0AAAABACn%2F9AFvApMAEQArALgAAEVYuAAHLxu5AAcAED5ZuAAARVi4AA4vG7kADgAEPlm5AAMAAfQwMTceATMyNjURMxEUDgIjIiYnTBg9Kjw6LhInPi03UhlsKiRJUQHb%2FiAoRTQeMi8AAAEAYQAAAiQCkwAMAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgABC8buQAEABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4AAgvG7kACAAEPlm6AAIAAAAMERI5ugAJAAQACBESOTAxEzMRMwEzBxMjAwcVI2EuAgE%2FN9LvNdqGLgKT%2FpIBbvT%2BYQF8meMAAAEAYQAAAb8CkwAFACsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgABS8buQAFAAQ%2BWbkAAgAB9DAxEzMRIRUhYS4BMP6iApP9lSgAAAABAGEAAAJhApMAGQBvALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAYvG7kABgAQPlm4AABFWLgAGS8buQAZAAQ%2BWbgAAEVYuAAJLxu5AAkABD5ZugADAAYACRESOboADgAGAAkREjm6ABEAGQAGERI5ugAUAAAAGRESOTAxEzMTFzM3EzMRIxE0NjcjBwMjAycjHgEVESNhQYo0BDKKQS0EAgQ0jSmONAQCBCsCk%2F59kpIBg%2F1tAbEpXyqR%2FnYBipEqXyn%2BTwAAAAEAYQAAAhsCkwATAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACC8buQAIABA%2BWbgAAEVYuAATLxu5ABMABD5ZuAAARVi4AAsvG7kACwAEPlm6AAQACwAIERI5ugAOAAAAExESOTAxEzMBFzMuATURMxEjAScjHgEVESNhMAEWSgQCBCww%2FupKBAIELAKT%2Fi%2BDMGAwAZT9bQHRgzBbMP5nAAAAAgA3%2F%2FQCVgKfABMAJwA1ALgAAEVYuAAKLxu5AAoAED5ZuAAARVi4AAAvG7kAAAAEPlm5ABQAAfS4AAoQuQAeAAH0MDEFIi4CNTQ%2BAjMyHgIVFA4CJzI%2BAjU0LgIjIg4CFRQeAgFGO2RIKChIZDs8ZEgoKEhkPDJSOyAgO1IyMlM6ICA6UwwxWn9OTn1ZLy9ZfU5Of1oxKitPb0VEbk0qKk1uREVvTysAAgBhAAACAAKTAAwAFwBDALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAwvG7kADAAEPlm6AAoAAAAMERI5uAAKL7kADQAB9LgAABC5ABYAAfQwMRMzMh4CFRQGKwERIxMyNjU0LgIrARFhtDdXPSB8b4YuqWViGTFLMnsCkxMsRjNhX%2F7lAUJIUSo3Ig7%2B1gAAAgA3%2F2UCWAKfABMANABLALgAAEVYuAAkLxu5ACQAED5ZuAAARVi4ABovG7kAGgAEPlm7ADEAAQAXAAQruAAaELkABQAB9LgAJBC5AA8AAfS4ABoQuAAu0DAxExQeAjMyPgI1NC4CIyIOAgEOASMiJicuAzU0PgIzMh4CFRQOAgceATMyNjdnIDpTMjJSOyAgO1IyMlM6IAHxDSsZU28ZNlpBJChIZDs8ZEgoJEFbNxdXPhcfDQFMRXFPLCxPcUVEbk0qKk1u%2FeAEB1I%2BBTVZekpOfVkvL1l9Tkp6WTUFMjQFBAAAAgBhAAACAwKTAAgAGABUALgAAEVYuAAOLxu5AA4AED5ZuAAARVi4AAwvG7kADAAEPlm4AABFWLgACS8buQAJAAQ%2BWbsAAAABAAoABCu4AA4QuQAGAAH0ugAXAAAAChESOTAxATI2NTQmKwERAQMjESMRMzIeAhUUBgcTARJYXV5XgwE%2Fs4wuvTFQOB9bTrYBVUdJSj3%2B6f6rAS%2F%2B0QKTEypCL09aCv7OAAAAAAEALv%2F0AeACnwAzAEkAuAAARVi4ABYvG7kAFgAQPlm4AABFWLgAMC8buQAwAAQ%2BWbkAAwAB9LoACwAWADAREjm4ABYQuQAdAAH0ugAlADAAFhESOTAxNx4BMzI2NTQuAi8BLgM1ND4CMzIWFwcuASMiBhUUHgIfAR4DFRQOAiMiJidMJGQ5TFgTICsYZBYvJxodM0cpPF0eGh1OMkJQFiIoEmQcMiYXHjdOMEhwJ3cpMEk7HyofFwstCRonNSUkOysYLyAfHyVANh0oHRUILAweKDcmJkEvGzcsAAABAB0AAAHvApMABwAzALgAAEVYuAACLxu5AAIAED5ZuAAARVi4AAcvG7kABwAEPlm4AAIQuQAAAAH0uAAF0DAxEyM1IRUjESPv0gHS0i4Caygo%2FZUAAAAAAQBf%2F%2FQCGwKTABkAPAC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAANLxu5AA0AED5ZuAAARVi4ABQvG7kAFAAEPlm5AAcAAfQwMRMzERQeAjMyPgI1ETMRFA4CIyIuAjVfLh0wPyMkQTEeKyY%2BUCsqUD4lApP%2Bb0JXNRYWNVdCAZH%2Bak1mPRkZPWZNAAABAAQAAAHnApMADwBAALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAwvG7kADAAQPlm4AABFWLgADy8buQAPAAQ%2BWboABQAAAA8REjkwMRMzEx4BFzM%2BAzcTMwMjBDF6Ex8UBAoREBEJei%2FYMQKT%2Fn88ZTweNjU2HgGB%2FW0AAQAcAAAC5AKTACEAdgC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAKLxu5AAoAED5ZuAAARVi4ABQvG7kAFAAQPlm4AABFWLgAIS8buQAhAAQ%2BWbgAAEVYuAAXLxu5ABcABD5ZugAFAAAAIRESOboADwAUABcREjm6ABwAIQAKERI5MDETMxMeARczPgE3EzMTHgEXMz4BNxMzAyMDLgEnIw4BBwMjHDBTCxcLBAwZDmcvZw4ZDgQLFQtTLZMzeAkSCAQIFAl2MgKT%2Fnw2azY2azYBhP58Nms2Nms2AYT9bQHEJ0cnJ0cn%2FjwAAAABABEAAAHRApMAGQBbALgAAEVYuAABLxu5AAEAED5ZuAAARVi4AAsvG7kACwAQPlm4AABFWLgAGS8buQAZAAQ%2BWbgAAEVYuAAPLxu5AA8ABD5ZugAGAAEAGRESOboAEwAPAAsREjkwMRMDMxceARczPgE%2FATMDEyMnLgEnIw4BDwEj17gybA4XEQQOFQ5sL7jGMnMOHRIEEBoOcy8BVQE%2BwhcoGxsoF8L%2BwP6tyhkyHh4yGcoAAAAAAQADAAABvAKTAA8AQAC4AABFWLgAAS8buQABABA%2BWbgAAEVYuAALLxu5AAsAED5ZuAAARVi4AA8vG7kADwAEPlm6AAYAAQAPERI5MDETAzMXHgEXMz4BPwEzAxEjyMUxZBEhFAQTJBBkL8YuAQsBiM4kRiQkRiTO%2Fnj%2B9QAAAAABADIAAAHqApMACQA9ALgAAEVYuAADLxu5AAMAED5ZuAAARVi4AAgvG7kACAAEPlm5AAYAAfS4AADQuAADELkAAQAB9LgABdAwMTcBITUhFQEhFSEyAXv%2BpgGU%2FoQBf%2F5IGwJQKBv9sCgAAAACAEH%2F9AGjAewAIQAtAHYAuAAARVi4ABEvG7kAEQAIPlm4AABFWLgAHS8buQAdAAQ%2BWbgAAEVYuAAYLxu5ABgABD5ZugADABEAHRESObgAAy%2B4ABEQuQAIAAH0ugAZABgAERESObgAHRC5ACUAAfS4ABkQuQAoAAH0uAADELkAKQAB9DAxNzQ2NzYuAiMiBgcnPgMzMh4CFREjJyMOASMiLgI3FBYzMjY3NQ4DQZagAQkZLSMxUBgUDSUtNh0rOiQPJQUCJVUwHTInFi48KSpMLUplPht4T1QSGzcrGyYSIQkWEg0dMkMn%2Fs0%2BHS0QIDIkNCwoJqMJGiQuAAACAFz%2F9AHsAs8AFAAlAIMAuAAARVi4AAAvG7kAAAASPlm4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAOLxu5AA4ABD5ZuAAARVi4ABQvG7kAFAAEPlm6AAMABgAOERI5ugARAA4ABhESObgAERC5ABUAAfS4AA4QuQAYAAH0uAAGELkAIgAB9LgAAxC5ACUAAfQwMRMzFQc%2BATMyFhUUDgIjIiYnIwcjNx4BMzI%2BAjU0LgIjIgYHXCwCJVQtYGAiO00qI0siAgUlLChKHCQ%2BLBkRJDopJE4rAs%2FQXh8shXA9YEMjHxotWSIcIDpRMSxMNx8pJgAAAQA0%2F%2FQBpwHsACEAOQC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAAdLxu5AB0ABD5ZuAAFELkADAAB9LgAHRC5ABYAAfQwMTc0PgIzMhYXBy4BIyIOAhUUHgIzMjY3Fw4BIyIuAjQkPE8sMkMYGhc4IyU%2FLxsZLUEnJkEZFx9MLi9POyHvPF9AIiQXHxYdHzlOMC9OOB8gFx4cJCJAXQAAAAIANP%2F0AcQCzwAUACUAgwC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAAKLxu5AAoAEj5ZuAAARVi4ABIvG7kAEgAEPlm4AABFWLgADS8buQANAAQ%2BWboACAASAAUREjm6AA4ABQASERI5uAASELkAGgAB9LgADhC5AB0AAfS4AAgQuQAeAAH0uAAFELkAIQAB9DAxNzQ%2BAjMyFhcnNTMRIycjDgEjIiY3FB4CMzI2NxEuASMiDgI0IjtNKyxBJAIsJgQDHU8wW2wvFSg7JihJJiZDIyQ%2BLRrvOl5CIx8cWMb9MT4dLYF6ME43HykmAR0iHCE5TwACADT%2F9AG9AewAHAAlAFEAuAAARVi4AAUvG7kABQAIPlm4AABFWLgAGC8buQAYAAQ%2BWboACwAFABgREjm4AAsvuAAYELkAEQAB9LgABRC5ACAAAfS4AAsQuQAlAAH0MDE3ND4CMzIWFRwBByEeAzMyNjcXDgEjIi4CJTQmIyIOAgc0IztLKFZiAv6mARovQiknPxsSHUU1LlE8IwFfTEEfOC0dBO87XkEjdGoJEgktTTcfFxQiER4iQV1YXV0aMEUrAAAAAQAhAAABIALbABYAVgC4AABFWLgABy8buQAHAAg%2BWbgAAEVYuAAULxu5ABQAEj5ZuAAARVi4AAsvG7kACwAEPlm4ABQQuQADAAH0uAAHELkACgAB9LgADdC4AAcQuAAQ0DAxAS4BIyIGHQEzFSMRIxEjNTc1NDYzMhcBFA8dDiYlb28sQkI%2BOSMjAqcIBjk0aCb%2BRgG6IgRrSEgQAAAAAAMANP8ZAdwB7AARAEcAWwBtALgAAEVYuAAlLxu5ACUACD5ZuAAARVi4AEUvG7kARQAGPlm5AAMAAfS6ADwAJQBFERI5uAA8L7kACwAB9LgAJRC4ACnQuAApL7kAKgAB9LgAPBC4ADPQuAAzL7kASAAB9LgAJRC5AFIAAfQwMRcUFjMyPgI1NCYrASImJw4BBzQ2NzUuATU0Njc1LgE1ND4CMzIWFzMVIx4BFRQOAiMiJicOARUUFjsBMhYVFA4CIyImEzI%2BAjU0LgIjIg4CFRQeAl5TTShCLhk5NmcIIRMhHiomIRIYJBAXJRouPiMUIAujcBceGi09IxQrERAXJjZnUU0gO1Q0W2q%2BGS0iFBQhLhkaLSIUFCMtXi04FSIrFyghAwUXNB4gPBgECyYcIC0LBBRELCU%2BLRkHBSUUPyYlPi0ZCgoNIBgaJTU5HzstG0gBWxMkMh4eMiITEyIxHx4yJBMAAQBcAAABvwLPABQAWAC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAALxu5AAAAEj5ZuAAARVi4ABQvG7kAFAAEPlm6AAMABgAUERI5uAAL0LgABhC5AA8AAfS4AAMQuQASAAH0MDETMx0BPgEzMhYVESMRNCYjIgYHESNcLCZOMktGLDM7K0YsLALP0GomMVpe%2FswBLk1JLS3%2BlgAAAgBLAAAAmwKjAAsADwAtALgAAEVYuAAMLxu5AAwACD5ZuAAARVi4AA4vG7kADgAEPlm6AAYAAAADKzAxEyImNTQ2MzIWFRQGBzMRI3MRFxcRERcXKCwsAlQWERMVFRMRFnT%2BIAAAAAAC%2F9%2F%2FGwCcAqMADwAbADcAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgABS8buQAFAAY%2BWboAFgAQAAMruAAFELkADAAB9DAxEzMRFAYjIiYnNx4BMzI2NRMiJjU0NjMyFhUUBlwtNDgRIgsLCRsOKBgXEBgYEBEYGAHg%2FcdHRQcFJAMHOy4CqhYRExUVExEWAAABAFwAAAHEAs8ADABbALgAAEVYuAAELxu5AAQACD5ZuAAARVi4AAAvG7kAAAASPlm4AABFWLgADC8buQAMAAQ%2BWbgAAEVYuAAILxu5AAgABD5ZugACAAAADBESOboACQAAAAgREjkwMRMzETMTMwcTIwMHFSNcLALtM5y2MZ9sLALP%2Fe4BI77%2B3gEBfoMAAAABAFz%2F9AC3As8ADgArALgAAEVYuAAALxu5AAAAEj5ZuAAARVi4AAwvG7kADAAEPlm5AAUAAfQwMRMzERQWMzoBNxcOASMiNVwsDAkDBwgIBw4LOwLP%2FWsQDwIkAgNMAAABAFwAAALYAewAIACYALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4AAAvG7kAAAAIPlm4AABFWLgAIC8buQAgAAQ%2BWbgAAEVYuAAYLxu5ABgABD5ZuAAARVi4ABAvG7kAEAAEPlm6AAIAAAAgERI5ugAJAAAAIBESObgABhC4AAzQuQAUAAH0uAAJELkAFgAB9LgABhC5ABwAAfS4AAIQuQAeAAH0MDETMxczPgEzMhYXPgEzMhURIxE0JiMiBxEjETQmIyIHESNcJgQDIE8oOj4NKk8qkC00N0FPLDQ4QU8sAeBKJTE1LS01uP7MAS5NSVr%2BlgEuTUla%2FpYAAAABAFwAAAG%2FAewAFABlALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4AAAvG7kAAAAIPlm4AABFWLgAFC8buQAUAAQ%2BWbgAAEVYuAALLxu5AAsABD5ZugACAAAAFBESObgABhC5AA8AAfS4AAIQuQASAAH0MDETMxczPgEzMhYVESMRNCYjIgYHESNcJgQDJU4yS0YsMzsrRiwsAeBKJTFaXv7MAS5NSS0t%2FpYAAAAAAgA0%2F%2FQB4wHsABMAJwA1ALgAAEVYuAAFLxu5AAUACD5ZuAAARVi4AA8vG7kADwAEPlm5ABkAAfS4AAUQuQAjAAH0MDE3ND4CMzIeAhUUDgIjIi4CNxQeAjMyPgI1NC4CIyIOAjQjO04rK087IyM7TysrTjsjLhotPiQkPy0aGi0%2FJCQ%2BLRrvPF9AIiJAXzw8XUAiIkBdPC9OOB8fOE4vME45Hx85TgAAAgBc%2FycB7AHsABQAJQCDALgAAEVYuAAJLxu5AAkACD5ZuAAARVi4AAMvG7kAAwAIPlm4AABFWLgAAi8buQACAAY%2BWbgAAEVYuAARLxu5ABEABD5ZugAFAAkAERESOboAFAARAAkREjm4ABQQuQAVAAH0uAARELkAGAAB9LgACRC5ACIAAfS4AAUQuQAlAAH0MDEXFSMRMxczPgEzMhYVFA4CIyImJzUeATMyPgI1NC4CIyIGB4gsJgQDI1MtYGAiO00qIkgmKkgcJD4sGREkOikkTSwqrwK5PBwshXA9YEMjHxwqIhwgOlExLEw3HykmAAAAAAIANP8nAcQB7AAUACUAfwC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAALLxu5AAsACD5ZuAAARVi4AA0vG7kADQAGPlm4AABFWLgAEi8buQASAAQ%2BWboACAAFABIREjm6AA8AEgAFERI5uQAaAAH0uAAPELkAHQAB9LgACBC5AB4AAfS4AAUQuQAhAAH0MDE3ND4CMzIWFzM3MxEjNTcOASMiJjcUHgIzMjY3ES4BIyIOAjQiO00rLEEiAgUlLAIgTzBbbC8VKDsmKEkmJkMjJD4tGu86XkIjHhos%2FUe5XR0sgXowTjcfKSYBHSIcITlPAAEAXAAAAUEB7AASAFIAuAAARVi4AAYvG7kABgAIPlm4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAASLxu5ABIABD5ZugACAAAAEhESObgABhC4AA3cuAACELkAEAAB9DAxEzMXMz4BMzIWFwcuASMiBgcRI1wmBAMYRSsOFgwKDBIOIEccLAHgWS04BAYoBQM3RP65AAABACD%2F9AFyAewAMwBJALgAAEVYuAAVLxu5ABUACD5ZuAAARVi4ADAvG7kAMAAEPlm5AAMAAfS6AAsAMAAVERI5uAAVELkAHAAB9LoAJgAVADAREjkwMTceATMyNjU0LgInLgM1ND4CMzIWFwcuASMiDgIVFB4CFx4DFRQOAiMiJic6H0Y0OTkVIikVGzcsGxQoOSYmSRoYGDYlHCgbDRMgKRUcOC0cFSo8JzZaIFcaIzkmFiIYEggKFh8rHxovIxQcFh8SGQ8YIBAVHRYRCAsWIC8jGzElFicbAAAAAQAc%2F%2FQBLQJrABsARQC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAWLxu5ABYABD5ZuAAGELkACQAB9LgAANC4AAYQuAAD0LgAFhC5AA8AAfQwMRMjNT8BMxUzFSMRFB4CMzI2NxcOASMiLgI1Z0tMBiaLiwcSHxkOIQ0MFSoPIy4cCwG6IgSLiyb%2BxxclGw8JBiQIChUmNiAAAAAAAQBV%2F%2FQBtQHgABQAZQC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAAJLxu5AAkACD5ZuAAARVi4ABEvG7kAEQAEPlm4AABFWLgADC8buQAMAAQ%2BWbgAERC5AAUAAfS6AA0ACQAMERI5uAANELkACAAB9DAxEzMRFBYzMjY3ETMRIycjDgEjIiY1VSwzOitGKiwlBQIjTjJLRgHg%2FtJNSS8zAWL%2BIFAqMlpeAAAAAAEADAAAAaYB4AANAEAAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgACi8buQAKAAg%2BWbgAAEVYuAANLxu5AA0ABD5ZugAFAAAADRESOTAxEzMTHgEXMz4BNxMzAyMMMGwLGgsEDBkMbC2yNAHg%2FtMjRiEhRiMBLf4gAAEAGAAAApUB4AAhAHYAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgACi8buQAKAAg%2BWbgAAEVYuAAULxu5ABQACD5ZuAAARVi4ACEvG7kAIQAEPlm4AABFWLgAFy8buQAXAAQ%2BWboABQAhAAAREjm6AA8AFwAUERI5ugAcAAAAIBESOTAxEzMTHgEXMz4BNxMzEx4BFzM%2BATcTMwMjAy4BJyMOAQcDIxgwVgkQCAQIEglXNVcJEgkECBIIVS2KOlQLDwsECBMLUzUB4P7JIT8gID8hATf%2BySE%2FICA%2FIQE3%2FiABKiNDIyNFI%2F7YAAAAAQAOAAABiQHgABkAWwC4AABFWLgAAS8buQABAAg%2BWbgAAEVYuAALLxu5AAsACD5ZuAAARVi4ABkvG7kAGQAEPlm4AABFWLgADy8buQAPAAQ%2BWboABgALAA8REjm6ABQAAQAZERI5MDE3JzMXHgEXMz4BPwEzBxcjJy4BJyMOAQ8BI7GWMU4MGQ4EDRcNSy6VozFVDhwPBA4bDlIv%2B%2BV6FCcUFCcUeun3gxcsFRUsF4MAAAAAAQAM%2FyUBqAHgABwARgC4AABFWLgACC8buQAIAAg%2BWbgAAEVYuAASLxu5ABIACD5ZuAAARVi4ABkvG7kAGQAGPlm5AAMAAfS6AA0ACAAZERI5MDEXHgEzMjY%2FAQMzEx4BFzM%2BATcTMwMOAyMiJzciCBQLLTwSDcUwdAsbDgQLFwpnLb4KHSczIBsWCqoDBUg3KgHp%2FtIeSCAgSB4BLv3kHjktGwonAAAAAQAbAAABegHgAAkAPQC4AABFWLgAAy8buQADAAg%2BWbgAAEVYuAAILxu5AAgABD5ZuQAGAAH0uAAA0LgAAxC5AAEAAfS4AAXQMDE3ASM1IRUBIRUhGwEc%2FQE2%2FuUBJf6hGAGiJhf%2BXicAAAD%2F%2FwAIAAACBgMvAiYABAAAAAcA4QEHAAD%2F%2FwAIAAACBgMvAiYABAAAAAcA4wEHAAD%2F%2FwAIAAACBgMvAiYABAAAAAcA5QEHAAD%2F%2FwAIAAACBgMoAiYABAAAAAcA5wEHAAD%2F%2FwAIAAACBgMeAiYABAAAAAcA6gEHAAD%2F%2FwAIAAACBgNgAiYABAAAAAcA7AEHAAAAAgAVAAAC%2BgKTAAYAFgB8ALgAAEVYuAAOLxu5AA4AED5ZuAAARVi4AA0vG7kADQAEPlm4AABFWLgACS8buQAJAAQ%2BWboAAgAOAA0REjm6AAoADgANERI5uAAKL7kABgAB9LgACRC5AAcAAfS4AA4QuQAQAAH0ugAVAA4ACRESObgAFS%2B5ABMAAfQwMSURIw4BDwEFFSE1IwcjASEVIRUzFSMRAZsEHz0gSQIo%2FqHedzEBbQFu%2Ftn19f8BbDhzPIXXKNnZApMo%2BSj%2B3gD%2F%2FwA3%2FzACDwKfAiYABgAAAAcA7gFTAAD%2F%2FwBhAAAB1AMvAiYACAAAAAcA4QEaAAD%2F%2FwBhAAAB1AMvAiYACAAAAAcA4wEaAAD%2F%2FwBhAAAB1AMvAiYACAAAAAcA5QEaAAD%2F%2FwBhAAAB1AMeAiYACAAAAAcA6gEaAAD%2F%2FwAHAAAAnQMvAiYADAAAAAYA4XgAAAD%2F%2FwBTAAAA6QMvAiYADAAAAAYA43gAAAD%2F%2FwADAAAA7QMvAiYADAAAAAYA5XgAAAD%2F%2FwAFAAAA6wMeAiYADAAAAAYA6ngAAAD%2F%2FwBhAAACGwMoAiYAEQAAAAcA5wFDAAD%2F%2FwA3%2F%2FQCVgMvAiYAEgAAAAcA4QFGAAD%2F%2FwA3%2F%2FQCVgMvAiYAEgAAAAcA4wFGAAD%2F%2FwA3%2F%2FQCVgMvAiYAEgAAAAcA5QFGAAD%2F%2FwA3%2F%2FQCVgMoAiYAEgAAAAcA5wFGAAD%2F%2FwA3%2F%2FQCVgMeAiYAEgAAAAcA6gFGAAAAAwA4%2F%2BkCWQKqAAsAFwAzAIUAuAAARVi4AC4vG7kALgAQPlm4AABFWLgAIC8buQAgAAQ%2BWboAAAAgAC4REjm5AAMAAfS6AAsALgAgERI5ugAMAC4AIBESObgALhC5AA8AAfS6ABcAIAAuERI5ugAYAC4AIBESOboAIwAgAC4REjm6ACYAIAAuERI5ugAxAC4AIBESOTAxNx4BMzI%2BAjU0Ji8BLgEjIg4CFRQWFwEeARUUDgIjIiYnByc3LgE1ND4CMzIWFzcXsR1NLzJSOyAbGRcdSi0yUzogGRcBdyIlKEhkOzZcI0EcRiAkKEhkPDRYIz0dZSIlK09vRT9mJh4fISpNbkQ9ZSYBuSx6S05%2FWjEnJVcWXi14Sk59WS8kIlEWAAAAAAIANwAAAxICkwAUACEAVQC4AABFWLgABS8buQAFABA%2BWbgAAEVYuAAQLxu5ABAABD5ZuAAFELkAHAAB9LgAB9C6AAwABQAQERI5uAAML7kACgAB9LgAEBC5ABsAAfS4AA7QMDETND4CMyEVIRUzFSMRIRUhIi4CNxQeAjsBESMiDgI3J091TgGY%2Ftn19QEx%2Fl1OdU4nMCBDZUU%2FP0VlQyABTEt4Vi4o%2BSj%2B3igvV3tLQWtOKwJFKktrAAD%2F%2FwBf%2F%2FQCGwMvAiYAGAAAAAcA4QE9AAD%2F%2FwBf%2F%2FQCGwMvAiYAGAAAAAcA4wE9AAD%2F%2FwBf%2F%2FQCGwMvAiYAGAAAAAcA5QE9AAD%2F%2FwBf%2F%2FQCGwMeAiYAGAAAAAcA6gE9AAD%2F%2FwADAAABvAMvAiYAHAAAAAcA4wDfAAAAAgAlAAACOgKTABAAIQBZALgAAEVYuAAhLxu5ACEAED5ZuAAARVi4ABwvG7kAHAAEPlm5AAAAAfS4ACEQuQAKAAH0ugAOACEAHBESObgADi%2B5AA0AAfS4AA4QuAAe0LgADRC4AB%2FQMDElMj4CNTQuAisBFTMVIxETMh4CFRQOAisBESM1NxEBCkNgPx4eP2BDZqOjakxxSyQkSnFMmVFRJytOa0FAakwq%2FyH%2B2wJsLlZ4S0t7Vy8BTB8CASYAAAAAAgBhAAACAAKTAA4AFwA5ALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AA4vG7kADgAEPlm7ABcAAQAMAAQruwACAAEAFgAEKzAxEzMVMzIeAhUUBisBFSM3MjY1NCYrARFhLoY3Vz0gfG%2BGLqllYmNkewKTdRQrRjNhX6bNSFFSP%2F7WAAD%2F%2FwBB%2F%2FQBowLEAiYAHgAAAAcA4AEGAAD%2F%2FwBB%2F%2FQBowLEAiYAHgAAAAcA4gEGAAD%2F%2FwBB%2F%2FQBowLEAiYAHgAAAAcA5AEGAAD%2F%2FwBB%2F%2FQBowKeAiYAHgAAAAcA5gEGAAD%2F%2FwBB%2F%2FQBowKfAiYAHgAAAAcA6QEGAAD%2F%2FwBB%2F%2FQBowLIAiYAHgAAAAcA6wEGAAAAAwBB%2F%2FQC6gHsABAASQBSAJsAuAAARVi4ABYvG7kAFgAIPlm4AABFWLgAHC8buQAcAAg%2BWbgAAEVYuAA5Lxu5ADkABD5ZuAAARVi4ADEvG7kAMQAEPlm4ADkQuQADAAH0ugBBADkAFhESObgAQS%2B5AAwAAfS6ACIAHAAxERI5uAAiL7gAMRC5ACgAAfS4ABYQuQBGAAH0uAAcELkATQAB9LgAIhC5AFIAAfQwMTcUFjMyPgI3LgE1Jw4DAz4DMzIWFz4BMzIWFRwBByEUHgIzMjY3Fw4DIyIuAicOASMiLgI1NDY3NC4CIyIGBwU0JiMiDgIHbzwpEy4vLhULCgFGYj4cFg0kLTMbO0UMGlc2VV0C%2FrQaLj8kJzsbEw4eJCoaIDQqIQ0wbS0dMicWlpsIGS0jLU8YAlRJQR41KRsEejQsDBgjFhZBIhsJGiQuARgJFhINQTc3QXRqCRIJLUw3HxcUIwkQDggRHCMTLjUQIDEiUFQSGzcrGyYSgV1dGzFFKQAA%2F%2F8ANP8wAacB7AImACAAAAAHAO0BCQAA%2F%2F8ANP%2F0Ab0CxAImACIAAAAHAOABBQAA%2F%2F8ANP%2F0Ab0CxAImACIAAAAHAOIBBQAA%2F%2F8ANP%2F0Ab0CxAImACIAAAAHAOQBBQAA%2F%2F8ANP%2F0Ab0CnwImACIAAAAHAOkBBQAA%2F%2F8AGgAAAKoCxAImAGcAAAAGAOByAAAA%2F%2F8AOgAAAMoCxAImAGcAAAAGAOJyAAAA%2F%2F8AAAAAAOQCxAImAGcAAAAGAORyAAAA%2F%2F%2F%2F%2FwAAAOUCnwImAGcAAAAGAOlyAAAAAAEAXAAAAIgB4AADACUAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgAAi8buQACAAQ%2BWTAxEzMRI1wsLAHg%2FiAAAP%2F%2FAFwAAAG%2FAp4CJgArAAAABwDmARsAAP%2F%2FADT%2F9AHjAsQCJgAsAAAABwDgAQsAAP%2F%2FADT%2F9AHjAsQCJgAsAAAABwDiAQsAAP%2F%2FADT%2F9AHjAsQCJgAsAAAABwDkAQsAAP%2F%2FADT%2F9AHjAp4CJgAsAAAABwDmAQsAAP%2F%2FADT%2F9AHjAp8CJgAsAAAABwDpAQsAAAADAC7%2F6gHpAfUACQATAC4ASQC4AABFWLgAKS8buQApAAg%2BWbgAAEVYuAAcLxu5ABwABD5ZugAAABwAKRESObkAAgAB9LoACgApABwREjm4ACkQuQAMAAH0MDE3FjMyPgI1NC8BJiMiDgIVFBcBHgEVFA4CIyInByc3LgE1ND4CMzIWFzcXmS9DJD8uGiQULkUkPy0aJAEqGBwjO08rUjs2GjoYHCM7TisoSR02GkwyHzhOL1I4GzMfOU8vUTgBNCBWNjxdQCI4QhVGIFQ2PF9AIhwcQRUAAAADADT%2F9AMrAewAEwA7AEQAcQC4AABFWLgAGS8buQAZAAg%2BWbgAAEVYuAA3Lxu5ADcABD5ZuQAFAAH0uAAZELkADwAB9LgAGRC4AB%2FQuAA3ELgAMdC6ACQAHwAxERI5uAAkL7gAMRC5ACoAAfS4AB8QuQA%2FAAH0uAAkELkARAAB9DAxNxQeAjMyPgI1NC4CIyIOAgc0PgIzMhYXPgEzMhYVFAchFB4CMzI2NxcOASMiJicOASMiLgIlNCYjIg4CB2IZLD0jJD0rGRkrPSQjPSwZLiI7TCo6ZhoaXzpVYgP%2BrxsuQCQnPhsTHUU2P2QaHGA%2FKkw7IgLNTUAeNiobBO8vTjgfHzhOLzBOOR8fOU4wPF9AIkdHQkx0ahISLUw3HxcUIxEeTEFGRyJAXVldXRsxRSkAAAEAXP%2F0AgEC2QA5AGQAuAAARVi4AAMvG7kAAwASPlm4AABFWLgAOS8buQA5AAQ%2BWbgAAEVYuAAZLxu5ABkABD5ZugANABkAAxESObkAIAAB9LoAJQAZAAMREjm6ADEAGQADERI5uAADELkANAAB9DAxEzQ2MzIeAhUUDgIVFB4EFRQOAiMiJic3HgEzMj4CNTQuBDU0PgI1NCYjIgYVESNcXU4hMyQTHyUfHy82Lx8WJzUgJ0QdFh01IBkmGQ0fLjcuHx8kHy8wOUUsAhRdaBUkMRwnNy8vHh0kGxokNioeMiYVHBchFxcRGyQTIywfGSAtJCQ0LzEiLDhUWv37AP%2F%2FAFX%2F9AG1AsQCJgAyAAAABwDgAQgAAP%2F%2FAFX%2F9AG1AsQCJgAyAAAABwDiAQgAAP%2F%2FAFX%2F9AG1AsQCJgAyAAAABwDkAQgAAP%2F%2FAFX%2F9AG1Ap8CJgAyAAAABwDpAQgAAP%2F%2FAAz%2FJQGoAsQCJgA2AAAABwDiAOUAAP%2F%2FAAz%2FJQGoAp8CJgA2AAAABwDpAOUAAAACADz%2F9AHWAtQAFQA8AFkAuAAARVi4ADcvG7kANwASPlm4AABFWLgAIC8buQAgAAQ%2BWbsAKgABAAwABCu6ADMAMAADK7gAIBC5AAAAAfS4ADAQuAAW0LgAMxC4ADfcuAAzELgAOtAwMSUyPgI1NCcuAyMiDgIVFB4CEx4DFRQOAiMiLgI1ND4CMzIWFy4BJwcnNy4BJzceARc3FwELKTsnEwMTJyYmEyk9KhUaLDxlHjEkFB41Sy0oSzkjHjdMLitMHQ48Ko4PhBw%2BIRYlRSCODxsjPFIvIB4cJBQHHjNDJSpHMxwCRB5JV2g9PGJFJSA7VjYxUzohJiZKaipKHEQYKRMeFC4dShsAAAAAAgBc%2FycB7ALPABYAJwBXALgAAEVYuAAILxu5AAgACD5ZuAAARVi4AAIvG7kAAgASPlm4AABFWLgAAS8buQABAAY%2BWbgAAEVYuAASLxu5ABIABD5ZuQAaAAH0uAAIELkAJAAB9DAxFyMRMx0BPgEzMh4CFRQOAiMiJicVNR4BMzI%2BAjU0LgIjIgYHiCwsJFItMEkwGCI7TSojRyYqSBwkPiwZESQ6KSRNLNkDqM9bHCsjQFo4PWBDIx4cWIMiHCA6UTEsTDcfKSYAAAAAAQAiAAACKgLbACoAfAC4AABFWLgAFC8buQAUAAg%2BWbgAAEVYuAAoLxu5ACgAEj5ZuAAARVi4ABAvG7kAEAAEPlm4ACgQuQADAAH0uAAUELgAJNC4AAjQuAAUELkAEQAB9LgADdC4AAnQuAAQELgADNC4ABQQuAAT0LgAKBC4ABjQuQAfAAH0MDEBLgEjIgYdATMVIxEjESMRIxEjNTc1NDYzMhYXBy4BIyIGHQEzNTQ2MzIXAh4PHQ4mJW9vLN4sQUFEPhQpFAwSIhErK94%2BOSMjAqcIBjk0aCb%2BRgG6%2FkYBuiIEWUtNCQkkCQc9OFZrSEgQAAEAIf%2F0AhAC2wAuAIkAuAAARVi4ABAvG7kAEAAIPlm4AABFWLgAFC8buQAUABI%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4AAMvG7kAAwAEPlm4ABAQuQANAAH0uAAJ0LgAEBC4AA%2FQuAAPL7gAFBC5ABoAAfS4ABAQuAAf0LgAI9C4AAkQuAAk0LgAAxC5ACsAAfQwMSUOASMiLgI1ESMRIxEjNTc1NDYzMhcHLgEjIgYdATM3MxUzFSMRFB4CMzI2NwIQFSsPIy0cC7ssQkI%2BOSMjDA8dDiYlvAYljIwHEiAZDiENBggKFSY2IAE1%2FkYBuiIEa0hIECQIBjk0aIuLJv7HFyUbDwkGAAADACT%2F9AIyAp8ADwAfAEwAjAC4AABFWLgANy8buQA3ABA%2BWbgAAEVYuAAlLxu5ACUABD5ZuAAARVi4ACAvG7kAIAAEPlm6AEIAIgADK7gAJRC5AAMAAfS6AAYAIgBCERI5ugALACUANxESObgACy%2B4ABPcuAA3ELkAHQAB9LoALwALABMREjm6AD8ACwATERI5ugBJACIAQhESOTAxNzI2Ny4BJw4DFRQeAgMUFhc%2BAzU0LgIjIgYBJicOASMiLgI1ND4CNy4BNTQ%2BAjMyFhUUDgIHHgEXPgE3Mw4BBx4BF%2BYpSh81YyMWJx4RGCg3IBQRGS4kFQgRGxQsMQF7QUwkWDgnRjMeFyUxGhQYFCQyHjY4Gis3HCNhMyM0ESsUOSgjQB0aJyAweEARJCcrGCE1JRUB9CFHJBIkKCsaEB8YD0D9uRc8JS4ZL0IpITYvKRMqUyYgNicWRDQgNi8rFT92LS1tP0R7MxwlCwAAAgAw%2F%2FQBrgKLAAsAFwA1ALgAAEVYuAAGLxu5AAYADj5ZuAAARVi4AAAvG7kAAAAEPlm5AAwAAfS4AAYQuQASAAH0MDEXIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBbvXGNjXFxjY1xDT09DQlBQDK2hoKmpoKGtJpWTk5CQk5OVAAABAFQAAAGiAn8ADABDALgAAEVYuAAHLxu5AAcADj5ZuAAARVi4AAwvG7kADAAEPlm5AAEAAfS4AAcQuQAEAAH0uQACAAH0uAABELgACdAwMTczESM1PgE3MxEzFSFUlnInPRcki%2F6yJwISHgcUDf2oJwAAAAEAJwAAAbECiwAdAD0AuAAARVi4AA8vG7kADwAOPlm4AABFWLgAHC8buQAcAAQ%2BWbkAGgAB9LgAF9C4AADQuAAPELkACAAB9DAxNz4DNTQmIyIGByc%2BATMyFhUUDgIHPgE7ARUhKU92TydDSCxMHR0kVztWXipMbUIaNxra%2FngcUH9pWSo8UjAkHCg2YlEwX2l3RgIDKAAAAQAd%2F%2FQBqwKLADcAUwC4AABFWLgAHy8buQAfAA4%2BWbgAAEVYuAAyLxu5ADIABD5ZuQAFAAH0ugAPAB8AMhESObgADy%2B5ABAAAfS4AB8QuQAYAAH0ugAoABAADxESOTAxNx4DMzI%2BAjU0LgIjNTI%2BAjU0JiMiBgcnPgEzMh4CFRQGBxUeAxUUDgIjIi4CJzcOIis1ISA3KBYZNlQ8N00vFUY7LUocGiFUOCVALxtFNR40KBceNUcpJj4xJw9tEB0XDhQlNCAhNicWJxYlMx02QSkdHiAuFSc5JT9NEgQGHSo3IipDLxkQGiAQAAACABAAAAHAAn8ACQAUAFcAuAAARVi4ABIvG7kAEgAOPlm4AABFWLgADS8buQANAAQ%2BWbsADgABAAAABCu4ABIQuAAE3LgAABC4AAnQuAAOELgAC9C4AAkQuAAQ0LgAABC4ABPQMDElNTQ2NyMOAQcDBSMVIzUhNQEzETMBNgICBAwaDrwBel8r%2FtoBKShf5eoWQhYUJhb%2B%2BCa%2FvxoBpv5mAAAAAAEAGv%2F0Aa8CfwAoAEcAuAAARVi4ABIvG7kAEgAOPlm4AABFWLgAIy8buQAjAAQ%2BWbkABQAB9LoAGQASACMREjm4ABkvuAAN3LgAEhC5ABQAAfQwMTceAzMyPgI1NCYjIgYHJxMhFSMHPgEzMh4CFRQOAiMiLgInMw4iKjQhIDorGlRIJTUdHxcBJ%2F8UGTYjKEg0HyM5SScmPTEmD2kPHBYNGS0%2FJ05XFxQTASsn5w8TGDFNNDNPNxwPGR8PAAAAAAIANP%2F0AbQCiwARADAAQwC4AABFWLgALS8buQAtAA4%2BWbgAAEVYuAAlLxu5ACUABD5ZuwAdAAEACgAEK7gAJRC5AAAAAfS4AC0QuQAVAAH0MDElMj4CNTQuAiMiBgceAxMuASMiDgIHPgEzMhYVFA4CIyImNTQ%2BAjMyFhcBBhwvIhQQITUkIlInAxcoO6wVOB8mRDQfASFTLVVdHDA%2FJGFwJ0FVLi1BGRoZLDsiIjsrGCs1M1M7IQIVGhsgSnlYKTBlYSxJNR6ckmSKViUiHAABACwAAAG1An8ADwAzALgAAEVYuAAHLxu5AAcADj5ZuAAARVi4AAAvG7kAAAAEPlm4AAcQuQAFAAH0uAAJ0DAxMz4DNyE1IRUOAwcjvAQZLkYw%2Fq8BiTlLLRQEMGGhj4NEJxpMjJGeXgAAAAADACj%2F9AG1AosAEQAjAE0AVwC4AABFWLgANC8buQA0AA4%2BWbgAAEVYuABJLxu5AEkABD5ZuQAFAAH0ugAPAEkANBESObgADy%2B4ABLQuAA0ELkAGgAB9LgADxC4ACncuAASELgAPtwwMTcUHgIzMj4CNTQuAicOATc%2BATU0LgIjIg4CFRQeAgc0PgI3NS4DNTQ%2BAjMyHgIVFA4CBxUeAxUUDgIjIi4CVBgqOiMiNycVITdGJTFAzikrEiExHxstIRIdMD3aFyUtFxIhGRAaLT0jKUAtFxIbIA4VKB8UHDNIKyxKNh%2BmHjMmFhQkMBslMycdDx1PdCFJKhsvJBUSHywaIjElHLcgOC0jDAQMHSUrGiI6KRcZLT0kGjEqIgsEDR4mMiAjPS0aGy9AAAACACv%2F9AGqAosAEQAwAEMAuAAARVi4ACUvG7kAJQAOPlm4AABFWLgALS8buQAtAAQ%2BWbsAAAABAB0ABCu4ACUQuQAIAAH0uAAtELkAFQAB9DAxEzI2Ny4DIyIOAhUUHgIHHgEzMj4CNw4BIyImNTQ%2BAjMyFhUUDgIjIiYn4iJSJwMXKTsnGzAiFBAiNGoVOCAmRDQfASFULVRdHDA%2FJGBwJ0BWLi1CGAEjLTQzUzsgGSs7IiM7KxjTGhsgSnlYKDBlYStKNB6bkmWKVSYiHAAAAQBD%2F%2FQAmABPAAsAGAC4AABFWLgACS8buQAJAAQ%2BWbgAA9wwMTc0NjMyFhUUBiMiJkMaEREZGRERGiEWGBgWFRgYAAABADD%2FZQClAE8AEQAYALgAAEVYuAAFLxu5AAUABD5ZuAAL3DAxFz4BNwYjIiY1NDYzMhYVFAYHMCIqAQQIERkaERccOi19Ej0qARYUFBYmITdUGP%2F%2FAEP%2F9ACYAc0CJwCGAAABfgAGAIYAAP%2F%2FADD%2FZQClAc0CJwCGAAABfgAGAIcAAAACAFf%2F9ACsAp4ABQARACkAuAAARVi4AAEvG7kAAQAQPlm4AABFWLgADy8buQAPAAQ%2BWbgACdwwMRM1MwcDIwc0NjMyFhUUBiMiJmsuAQYhGhoRERkZEREaAldHR%2F5ckhYYGBYVGBgAAAIAV%2F9CAKwB7AAFABEAGAC4AABFWLgADy8buQAPAAg%2BWbgACdwwMR8BIzUTMzcUBiMiJjU0NjMyFpgBLgYhGhkRERoaEREZd0dHAaSTFxgYFxQYGAAAAAACACX%2F9AFgAqoAHwArACYAuAAARVi4ACkvG7kAKQAEPlm7ABMAAQAMAAQruAApELgAI9wwMTcmPgQ1NC4CIyIGByc%2BATMyHgIVFA4EFwc0NjMyFhUUBiMiJqMGESAoJBgNHCsdJUMZGx1ONCU6KBUZJCkhEwU7GRERGhoRERmzKUM5MjE0HxcrIBMhHxkhLRcpOCEiOTQzNz8mkhYYGBYVGBgAAAIAM%2F82AW4B7AAfACsAJgC4AABFWLgAKS8buQApAAg%2BWbsADAABABMABCu4ACkQuAAj3DAxExYOBBUUHgIzMjY3Fw4BIyIuAjU0PgQnNxQGIyImNTQ2MzIW8AURICgkGA0cKx4kQxkcHU8zJTooFRkkKSESBTsZEREZGRERGQEtKUM5MjE0HxcqIRMiHhkgLhcpOCEiOTUyNz8mkxcYGBcUGBgAAQBTAd0AhgK1AAUACwC6AAIABAADKzAxEyczFQcjVAEzCSECcEVFkwAAAP%2F%2FAFMB3QETArUAJgCOAAAABwCOAI0AAAABADoB4AChAr8AEQANALsABQABAAsABCswMRMOARU2MzIWFRQGIyImNTQ2N6EhIgIGDxkXERQYLSgCqBs2KwESExMVIyA2TBoAAAAAAQA6Ad0AogK8ABEADQC7AAsAAQAFAAQrMDETPgE1BiMiJjU0NjMyFhUUBgc6ISICBg4ZFhEUGS0pAfQbNisBEhMTFSMgNkwaAAAA%2F%2F8AOgHgAS4CvwAmAJAAAAAHAJAAjQAA%2F%2F8AOgHdAS8CvAAmAJEAAAAHAJEAjQAA%2F%2F8AOv9%2BAKIAXQIHAJEAAP2hAAD%2F%2FwA6%2F34BLwBdACcAkQAA%2FaEABwCRAI39oQAAAAEAKwBIAM0BsAAGAAsAugACAAYAAyswMTc1NxcHFwcriRl7exnpJqEVn6ETAAAAAAEANgBIANgBsAAGAAsAugACAAUAAyswMTcnNxcVByewehiKihj8nxWhJqETAAAA%2F%2F8AKwBIAVoBsAAmAJYAAAAHAJYAjQAA%2F%2F8ANgBIAWUBsAAmAJcAAAAHAJcAjQAAAAEAKADmAQQBDQADAA0AuwABAAEAAgAEKzAxEzMVIyjc3AENJwAAAP%2F%2FACgA5gEEAQ0CBgCaAAAAAQAoAOgBuAEMAAMADQC7AAEAAQACAAQrMDETIRUhKAGQ%2FnABDCQAAAEAKADoAvgBDAADAA0AuwABAAEAAgAEKzAxEyEVISgC0P0wAQwkAP%2F%2FAEMBFQCYAXACBwCGAAABIQAAAAEAKACaAPEBdgATAAsAugAKAAAAAyswMTciLgI1ND4CMzIeAhUUDgKMEyQcEREcJBMTJRwRERwlmg8dKBoZKRwQEBwpGRooHQ8AAAABAAz%2FiwHo%2F7EAAwANALsAAAABAAEABCswMQUVITUB6P4kTyYmAAAAAQBY%2F1EA9wLbAA4ACwC6AAYAAAADKzAxFy4BNTQ2NxcOARUUFhcH3D5GRj4bPDw8PBuvZN2EhN1kEF%2Ffd3ffXxAAAAABACD%2FUQC%2FAtsADgALALoABwANAAMrMDEXPgE1NCYnNx4BFRQGBycgPDw8PBs9R0c9G59f33d3318QZN2EhN1kEAAAAAEAYv9oAQICxAAHABcAuwAFAAEABgAEK7sAAQABAAIABCswMRMzFSMRMxUjYqB9faACxB383h0AAQAV%2F2gAtQLEAAcAFwC7AAAAAQAFAAQruwAEAAEAAQAEKzAxFxEjNTMRIzWSfaCgewMiHfykHQABACP%2FaAECAsQAMwArALsAAAABAAEABCu7AB4AAQAfAAQruwAQAAEADwAEK7oAKgAPABAREjkwMQUVIyIuAjU0NjU0LgIjNTI%2BAjU0JjU0PgI7ARUjIgYVFBYVFAYHFR4BFRQGFRQWMwECIhwpHA4IBxMiGhoiEwcIDhwpHCIfLh8GFR4eFQYfLnsdDB0xJjhhNA8eFg4gDhYcDzZhOCYxHQwdMjUxWTYtMgkECTQrNlkxNTIAAAAAAQAV%2F2gA9ALEADMAKwC7AAAAAQAxAAQruwAWAAEAEwAEK7sAIwABACQABCu6AAoAJAAjERI5MDEXMjY1NCY1NDY3NS4BNTQ2NTQmKwE1MzIeAhUUBhUUHgIzFSIOAhUUFhUUDgIrATU0Lh8GFh0dFgYfLh8iHCkcDggHEyIaGiITBwgOHCkcInsyNTFZNis0CQQJMi02WTE1Mh0MHTEmOGE2DxwWDiAOFh4PNGE4JjEdDB0AAQAJ%2F2ABYALGAAMAGAC4AABFWLgAAC8buQAAABI%2BWbgAAtwwMQEzASMBOib%2BzyYCxvyaAAEAX%2F8GAIMC7gADAAsAugABAAIAAyswMRMzESNfJCQC7vwYAAEABf9gAV0CxgADABgAuAAARVi4AAAvG7kAAAASPlm4AALcMDETMwEjBSYBMiYCxvyaAAACAF%2F%2FBgCDAu4AAwAHAAsAugABAAUAAyswMRMzESMXESMRXyQkJCQC7v4pO%2F4qAdYAAAAAAQBGAc4BRQLIAA4AFAC4AABFWLgABS8buQAFABI%2BWTAxEzcnNxc3Mxc3FwcXBycHaTdaCV8HIAdfClo2G0BCAeJYJB4aZmUZHiRYFFNTAAACADL%2FzAGtAqkADwBJABcAuwAxAAEAKgAEK7sARgABABMABCswMSU%2BATU0LgInDgEVFB4CEy4BIyIOAhUUHgQVFAYHHgEVFA4CIyImJzceATMyNjU0LgQ1NDY3LgE1ND4CMzIWFwE4JCctQ0wfIiotQ0xNGDUmGSQWCyo%2BST4qMSYQEhcnNB00UB0eGjsuLjYqP0k%2FKjMmDxIQIjIjKkYctREqKSgzJB8UFC4mJzEjHgGLFBoNFRwOISkhHSk8LjI5FRApGxsuIRIjHBwYHjIjIisgHSg6LjA%2FFA8oGhUqIRUeFwACACr%2FsAGjApMAAwAQACUAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgADi8buQAOABA%2BWTAxATMRIwMiLgI1ND4COwERAXUuLlI3XEIkIj5WMywCk%2F0dAUQXMU84OE8yF%2F5hAAAAAwAz%2F%2FQCsgKMABMAJwBFADMAuwA6AAEAQQAEK7sALQABADQABCu4AC0QuAAj3LkABQAB9LgAQRC4ABncuQAPAAH0MDETND4CMzIeAhUUDgIjIi4CNxQeAjMyPgI1NC4CIyIOAhc0PgIzMhYXBy4BIyIGFRQWMzI2NxcOASMiLgIzM1h0QUB0WDMzWHRAQXRYMyMuTmc6OWdOLi5OZzk6Z04ucx4xQSQoOBgXFy0ePExJPSQ4FxQbPjAkPzAcAUJLelYvL1Z6S0x7VzAwV3tMRHBPLCxPcERDb08rK09vQytGMBofGBoWFlJES1YdFRwYIxszSQAAAAAEABIBRAF%2BAsgAEwAnADcAQABXALgANi%2B4ACkvuAA2ELgAFNy5AAAAAfS4ACkQuAAe3LkACgAB9LoANAA2ACkREjm4ADQvuQA4AAH0ugAxADgANBESObgANhC4ADPQuAApELkAPgAB9DAxEyIuAjU0PgIzMh4CFRQOAicyPgI1NC4CIyIOAhUUHgIDMzIeAhUUBgcXIycjFSM3MjY1NCYrARXIJUIyHR0yQiUlQzEdHTFDJR84KBgYKDgfIDcoGBgoNyRFDxsWDRcRMSUnLyA9FxwVGyABRBwyRywsSDMcHDNILCxHMhwdGSs8JCQ9LRkZLT0kJDwrGQEPBg8YExMgBVZMTGcRFBEVSwAAAgA0%2F24C%2BwJ5AEYAVAA%2FALsAPAABAEIABCu7ACgAAQAPAAQruwBKAAEAFgAEK7sAIAABAFAABCu7AAUAAQAyAAQrugAjAFAAIBESOTAxNzQ%2BAjMyHgIVFA4CIyImJyMOASMiLgI1ND4CMzIXMzczBwYzMj4CNTQuAiMiDgIVFB4CMzI2NxcGIyIuAjcUFjMyPwEuASMiDgI0QW2QT0h1USwiNkEfKDUEAho9IxcqHxIZMEUsNR4CCSIkIl4YMykbJ0hnQUWAYzwsT29DMlIkEFZlSHtaM%2BguIjI6HxIhFyI2JRTKYp9xPS5TdUdAYUIhJScdKREiMyIkUEIrMCi9hx45UjVAakopOGeRWUl1USwaFh42L1mBUjkuQ60cFSM2QgAAAAIAJAAAAcECigAbAB8AmwC4AABFWLgACC8buQAIAA4%2BWbgAAEVYuAAMLxu5AAwADj5ZuAAARVi4ABYvG7kAFgAEPlm4AABFWLgAGi8buQAaAAQ%2BWbsAAwABAAAABCu7AAcAAQAEAAQruAAHELgACtC4AAcQuAAO0LgABBC4ABDQuAADELgAEtC4AAAQuAAU0LgAABC4ABjQuAADELgAHNC4AAQQuAAd0DAxNyM1MzcjNTM3MwczNzMHMxUjBzMVIwcjNyMHIz8BIwd3U1cVWFwZIxmVGiIZUlUVVlsZIxmVGiPXFZYV1iSqJMLCwsIkqiTW1tb6qqr%2F%2FwBeAbgA1gM%2BAgcAtwAAAbgAAP%2F%2FAC8BuAE3A0oCBwC4AAABuAAA%2F%2F8AKAGsATQDSgIHALkAAAG4AAD%2F%2FwAuAbgBPQM%2BAgcAugAAAbgAAAACACj%2F9AFCAZIACwAXACgAuAAGL7gAAEVYuAAALxu5AAAABD5ZuQAMAAH0uAAGELkAEgAB9DAxFyImNTQ2MzIWFRQGJzI2NTQmIyIGFRQWtUJLS0JCS0tCLzc3Ly83NwxrZWRqamRlayFbVFRZWVRUWwAAAAEAXgAAANYBhgAIACIAuAAGL7gAAEVYuAAILxu5AAgABD5ZuAAGELkAAAAB9DAxEyM1PgE3MxEjsFIdKREhJgFEGwYTDv56AAEALwAAATcBkgAaACwAuAAPL7gAAEVYuAAZLxu5ABkABD5ZuQAXAAH0uAAA0LgADxC5AAgAAfQwMTc%2BAzU0JiMiBgcnPgEzMhYVFA4CBzMVIzgySS8XLycbLxEZEkElNkMZLD8lwP8ZLkg6MRkrMiQaFx4rPT4fODo%2FJSIAAAAAAQAo%2F%2FQBNAGSACoAPgC4ABcvuAAARVi4ACcvG7kAJwAEPlm6AAoACQADK7gAJxC5AAMAAfS4ABcQuQAQAAH0ugAdAAkAChESOTAxNx4BMzI2NTQmIzUyNjU0JiMiBgcnPgEzMhYVFAYHHgMVFA4CIyImJ0USOSIlNkpAOz8tJhcvExkVOyYxRSsgEiAaDxQkMBsuRxRVHSMrKCYqHDIiICkdFxYbJDYxJTENAxAYIRUbKx0QLR4AAAIALgAAAT0BhgAFABAATAC4AA4vuAAARVi4AAkvG7kACQAEPlm7AAAAAQAKAAQruAAOELkAAgAB9LgAABC4AAXQuAAKELgAB9C4AAUQuAAM0LgAABC4AA%2FQMDE3NTcjDwEXIxUjNSM1NzMVM98EBDhJ3zoksbEkOpJXaFNsIHJyFf%2F0%2F%2F8AKgEFAR0CUwIGAL0AAP%2F%2FACEBBQFFAlMCBgC%2BAAAAAgAqAQUBHQJTABsAJAA7ALgAAC%2B4ABIvuwAGAAEAHwAEK7gAEhC5AAsAAfS4AAAQuAAX0LgAABC5ABwAAfS6ABkAAAAcERI5MDETIiY1NDY3NC4CIyIGByc%2BATMyFh0BIycjDgEnMjc1DgEVFBaLKzZibAcQGhUePBEPFEMnOi0eBgQVNRcvNV1KJAEFMCs1NwoTIhkOGQwbDh1FOcgnEh0gMWYKLSIgHgAAAAIAIQEFAUUCUwATAB8AGwC4AAovuAAAL7kAFAAB9LgAChC5ABoAAfQwMRMiLgI1ND4CMzIeAhUUDgInMjY1NCYjIgYVFBazHjYnFxcnNh4eNicXFyc2HjA7OzAwOzsBBRcrPicoPisWFis%2BKCc%2BKxchSjw8Sko8PEoAAAACACoBvwEOAqwAEwAfABcAuwAUAAEAAAAEK7sACgABABoABCswMRMiLgI1ND4CMzIeAhUUDgInMjY1NCYjIgYVFBacFikgExMgKRYWKSATEyApFiMtLSMjLS0BvxAeLBwcLB8QEB8sHBwsHhAgMSUmMjImJTEAAAACAB4AcgHAAiIAIgA2AEoAuAAARVi4AAgvG7kACAAKPlm4AABFWLgADS8buQANAAo%2BWbgAAEVYuAASLxu5ABIACj5ZuwAoAAEAHwAEK7gADRC5ADIAAfQwMT8BLgE1NDY3JzcXPgEzMhYXNxcHHgEVFAYHFwcnDgEjIicHNxQeAjMyPgI1NC4CIyIOAh5CEhQUEkIbQhc9ICA9F0MaQhIUFBFBGkMXPSBCMkItFiUyHBwyJRYWJTIcHDIlFo5DGDwjJD4YRBxFFRcXFUUcRBg%2BJCM8GEMcRBYXLUTWIjkoFxcoOSIiOikXFyk6AAEAO%2F%2BSAaMC7QAxAF0AuAAARVi4ACsvG7kAKwAOPlm4AABFWLgAFS8buQAVAAQ%2BWbgAKxC5AAUAAfS6AAgAFQArERI5uAAVELgAEtC4ABUQuQAcAAH0ugAfACsAFRESObgAKxC4AC7QMDEBLgMjIgYVFB4EFRQGBxUjNS4BJzceATMyNjU0LgQ1ND4CNzUzFR4BFwF4DhseJBc0QCtAS0ArV0MnNFYdGB1QND9DK0BLQCsVJTQfJzE%2BGgIoDhYQCEEyLDUnIS9HOUhWBmNjBC0cHxosRDcxPSsiLD8zHzYpGgNjYwMoGwABADYAAAGsAosALABZALgAAEVYuAATLxu5ABMADj5ZuAAARVi4AAIvG7kAAgAEPlm5AAAAAfS6ACQAEwACERI5uAAkL7gACtC4ACQQuQAjAAH0uAAL0LgACy%2B4ABMQuQAaAAH0MDElFSE1PgE1NCYnIzU3My4BNTQ2MzIWFwcuASMiDgIVFBYXMxUjHgEVFAYHFQGs%2Fo04MgUEZEIYCxVbTzRFFx0VNigfLx8QFQulnQQEJiIoKBsgaDoTJBEhAyZLJ09bKh0bGSIUJDAbKEknJBEjFD5SIQQAAAAAAQAeAAABwQJ%2FAB0AhAC4AABFWLgAHS8buQAdAA4%2BWbgAAEVYuAAJLxu5AAkADj5ZuAAARVi4ABQvG7kAFAAEPlm6AAQAHQAUERI5ugAZAB0AFBESObgAGS%2B5AAwAAfS4ABkQuAAN0LgAGRC4ABjQuAAYL7gAENC4ABgQuQAVAAH0uAAR0LgAGRC5ABsAAfQwMRMXHgEXMz4BPwEzAzMVIxUzFSMVIzUjNTM1IzUzA05eECASBBMfEV4urpqoqKgtpqammKwCf8EhQyUlQyHB%2FrAhRyKlpSJHIQFQAAEAGP%2F0AdoCiwA1AG0AuAAARVi4ABkvG7kAGQAOPlm4AABFWLgAAy8buQADAAQ%2BWbsALQABAC4ABCu4AC4QuAAJ0LgALRC4AArQuAAtELgAJdy4ABLQuAAlELkAJAAB9LgAE9C4ABkQuQAgAAH0uAADELkAMgAB9DAxJQ4BIyIuAicjNTcmNDU8ATcjNTc%2BAzMyFhcHLgEjIgYHIRUhBhQVHAEXMxUjHgEzMjY3AdogTjgsSjgmB0E%2BAQE%2BQQcmPFEwLUoWHRY3I1BgCwEW%2FucBAfHuDVpIKj8dUiwyJENfPB0ECxQLCRIIHQQ9YUQkLiAbHiV3aSEIEQkLFQshZnYoKQAAAgA%2B%2F%2BQBswKMAAgAJwA3ALsAJAABAAwABCu7ABwAAQAjAAQruAAjELgAANC4ACQQuAAI0LgADBC4AA%2FQuAAcELgAGdAwMRMOAxUUFhc3DgEHFSM1LgM1ND4CNzUzFR4BFwcuAScRPgE3%2FyA3JxZPRbQdSSwiKkczHR41RigiMEAXGBc2IiU%2BGAH2BSAxQidOZgoXGyMCbG0EIjtSMzRROyIEb20CIxccFBsC%2Fn8CHhYAAAAAAf9b%2F%2FQA8QKfAAMAGAC4AABFWLgAAC8buQAAAAQ%2BWbgAAdwwMQcBMwGlAXAm%2FpEMAqv9VQAAAP%2F%2F%2F1v%2F9ADxAp8CBgDGAAD%2F%2FwAo%2F%2FQC%2FQKfACcAtgAAAQ0AJwDGAWsAAAAHALYBuwAAAAD%2F%2FwBK%2F%2FQCzwKfACcAt%2F%2FsAQ0AJwDGAVYAAAAHALoBkgAAAAD%2F%2FwBK%2F%2FQC3wKfACcAt%2F%2FsAQ0AJwDGAT8AAAAHALgBqAAAAAD%2F%2FwAo%2F%2FQC4gKfACcAuQAAAQ0AJwDGAYUAAAAHALoBpQAAAAAAAQAiAG4BvQImAAsAHQC7AAMAAQAAAAQruAADELgABtC4AAAQuAAI0DAxEyM1MzUzFTMVIxUj27m5Kbm5KQE3JsnJJskAAAAAAQAiATcBvQFdAAMADQC7AAEAAQACAAQrMDETIRUhIgGb%2FmUBXSYAAAEAMwCHAasCDQALACUAuAAARVi4AAMvG7kAAwAKPlm4AABFWLgABS8buQAFAAo%2BWTAxPwEnNxc3FwcXBycHM6KiG6GiGqGhGqKho6enHKmpHKenHKioAAADACIAbQG9AiUACwAXABsAIQC7AA8AAQAVAAQruwAGAAEAAAAEK7sAGQABABoABCswMRMiJjU0NjMyFhUUBgM0NjMyFhUUBiMiJichFSHvEBYWEBEVFTcWEBEVFREQFqcBm%2F5lAdUWExEWFhETFv7BERYWERMWFtomAAD%2F%2FwAiANIBvQHDAiYAzQBmAAYAzQCbAAAAAQAiAJIBvQIGAAkAFAC4AABFWLgAAS8buQABAAo%2BWTAxEyUVDwEVHwEVJSIBm%2BiFhej%2BZQFipCtaMwQzWiukAAEAIgCSAb0CBgAJABQAuAAARVi4AAgvG7kACAAKPlkwMQEFNT8BNS8BNQUBvf5l6IWF6AGbATakK1ozBDNaK6QAAAAAAgAiAAABvQImAAsADwA4ALgAAEVYuAAOLxu5AA4ABD5ZuwADAAEAAAAEK7gAAxC4AAbQuAAAELgACNC4AA4QuQAMAAH0MDETIzUzNTMVMxUjFSMHIRUh27m5Kbm5KbkBm%2F5lATYly8slyUglAAAAAAEAQgEiAZ0CngAJABoAuAAARVi4AAAvG7kAAAAQPlm5AAUAAfQwMRMzEyMvASMPASPYLpcrTTQEM00rAp7%2BhMuFhcsAAQAoAQoBtgGKABcAJwC7AAgAAQAPAAQruAAPELgAFNy5AAMAAfS4AAvQuAAPELgAF9AwMRM%2BATMyHgIzMjY3Fw4BIyIuAiMiBgcoFjsdHS8rKBYXJhIcFTsdHS8rKBYXJhIBNyopHCIcHCMUKSgcIhwcIwABACIAbgG9AV0ABQANALsAAQABAAQABCswMRMhFSM1ISIBmyn%2BjgFd78kAAAEAXP84Ab0B4AAXABoAuAAARVi4ABEvG7kAEQAEPlm5AAUAAfQwMRMzERQWMzI2NxEzESMnIw4BIyImJxcVI1wsNDorRSssJgQDIkswJTQUAiwB4P7STUkvMwFi%2FiBQKjEWIVqaAAD%2F%2FwCzAjwBQwLEAAcA4AELAAAAAP%2F%2FANMCPAFjAsQABwDiAQsAAAAA%2F%2F8AmQI8AX0CxAAHAOQBCwAAAAD%2F%2FwCPAkUBhwKeAAcA5gELAAAAAP%2F%2FAJgCVgF%2BAp8ABwDpAQsAAAAA%2F%2F8AmgJeAXwCggAHAOgBCwAAAAD%2F%2FwC5AhsBXQLIAAcA6wELAAAAAP%2F%2FAMr%2FMAFOAAIABwDtARQAAAAAAAH%2FqAI8ADgCxAADABgAuAAARVi4AAMvG7kAAwAMPlm4AAHcMDEDMxcjWDRcJgLEiAAAAAAB%2F48CxQAlAy8AAwALALoAAQADAAMrMDEDMxcjcTpcKAMvagAB%2F8gCPABYAsQAAwAYALgAAEVYuAAALxu5AAAADD5ZuAAC3DAxAyM3MxImXDQCPIgAAAAAAf%2FbAsUAcQMvAAMACwC6AAIAAAADKzAxEyM3MwMoXDoCxWoAAf%2BOAjwAcgLEAAcANwC4AABFWLgABi8buQAGAAw%2BWbgAAEVYuAADLxu5AAMADD5ZuAAGELgAANy6AAUAAAAGERI5MDEDMxcjJyMHIxMmXyVLBEslAsSIY2MAAAAB%2F4sCxQB1Ay8ABwAXALoABgABAAMruAAGELgAB9y4AAPQMDEDNzMXIycjB3VgKmAoSwRLAsVqakhIAAAB%2F4QCRQB8Ap4AGwBBALgAAEVYuAAALxu5AAAADD5ZuAAARVi4ABMvG7kAEwAMPlm7ABgAAQAFAAQruAATELkACgAB9LgABRC4AA7QMDEDPgMzMh4CMzI2NzMOAyMiLgIjIgcjfAEIERkSEh4aGA0QEgQeAQgRGRISHhkZDR4IHgJFECAZEBEVER0aECAZEBEVETcAAf9%2BAswAggMoABsAIwC6AAAAEwADK7oABQAOAAMruAAAELgACNC4AA4QuAAW0DAxEyIuAiMiBgcjPgMzMh4CMzI2NzMOAzsUHxsaDxAWAx0BChIZERQeGxsPEBYDHQEKEhkCzBIVEh8aESEaEBIVER4aESAbEAAAAf%2BPAl4AcQKCAAMACwC4AAMvuAAB3DAxAzMVI3Hi4gKCJAAAAv%2BNAlYAcwKfAAsAFwAoALgAAEVYuAAALxu5AAAADD5ZuAAG3LgAABC4AAzQuAAGELgAEtAwMQMiJjU0NjMyFhUUBjMiJjU0NjMyFhUUBk8QFBQQEBUVjhAVFRAQFBQCVhUQDxUVDxAVFRAPFRUPEBUAAAAC%2F40C1QBzAx4ACwAXABsAugAGAAAAAyu4AAAQuAAM0LgABhC4ABLQMDEDIiY1NDYzMhYVFAYzIiY1NDYzMhYVFAZPEBQUEBAVFY4QFRUQEBQUAtUTEREUFBERExMRERQUERETAAAAAAL%2FrgIbAFICyAALABcAEwC6AAwAAAADK7oABgASAAMrMDERIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBYjLy8jIy8vIxYeHhYWHh4CGzAmJzAwJyYwGiEbHCEhHBshAAAAAAL%2FrgK8AFIDYAALABcAEwC6AAwAAAADK7oABgASAAMrMDERIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBYjLy8jIjAwIhQfHxQWHh4CvCwmJS0tJSYsGhwcGh4eGhwcAAAAAAH%2Ftv8wADoAAgARABMAugACABEAAyu6AAsACgADKzAxJzMHHgEVFA4CByc%2BATU0JicIIx0YJBUjLRgHKjMmHQI4CB8eFB0UDQMeBhgVFxYIAAAAAAH%2Ftv8wADoAAgARABMAugARAAIAAyu6AAoACwADKzAxJzMHHgEVFA4CByc%2BATU0JicIIx0YJBUjLRgHKjMmHQI4CB8eFB0UDQMeBhgVFxYIAAAA%2F%2F8ASwAAAJsCowIGACYAAAABAAAA8QBcAAcAeAAFAAEAAAAAAAoAAAIAAXMAAwABAAAAYgBiAGIAYgCwARQBZAGoAeYCHgJ%2BAroC2gMOA1YDfAPgBDIEhgTOBUAFlgYEBjAGdga0ByoHhgfGB%2FwIegj0CUQJvgogCnALIgtwC6QL7Aw0DGQM4g04DYwOBg5%2BDsgPNg%2BED9oQFhCMEOYROhFwEXwRiBGUEaARrBG4Eh4SKhI2EkISThJaEmYSchJ%2BEooSlhKiEq4SuhLGEtITZBPCE84T2hPmE%2FIT%2FhReFKAUrBS4FMQU0BTcFOgVqhW2FcIVzhXaFeYV8hX%2BFgoWFhY2FkIWThZaFmYWchZ%2BFuoXhBgEGBAYHBgoGDQYQBhMGNIZOBmyGjga7hsuG2gbtBwqHHwc3B1EHXoeEB54HpoexB7QHtwfEB88H44f4B%2F2IAIgKCBOIFogZiBwIH4gliCuILogxiDaIOIg9iEKIRQhOiFOIXAhkiGuIcoiJiKAIpoirCLGIuAjCCN6I6wkKCSuJUAlvCXGJdAl2iXkJh4mQiaCJt4nICcoJzAnhifEKAAodijqKVgpxipIKqIqvirGKtgq6ir8Kw4rMitGK3IrsCu8K9wr%2Fiw2LFgskiyoLNws5izwLPotBC0OLRgtIi0sLUYtWC1yLYQtsi3QLhouVi5oLqIu1i8GLzYvYC%2BKL4ovkgABAAAAAQzMmt50Tl8PPPUACQPoAAAAAM2XgKMAAAAAzZfjFP9X%2FuIEYgOrAAAACQACAAAAAAAAAngAXgAAAAAAxwAAAMcAAAIOAAgCQgBhAjQANwJcAGECAwBhAd0AYQJdADcCfwBhAPAAYQHOACkCLgBhAdMAYQLCAGECfABhAowANwIvAGECjAA3AjAAYQIJAC4CDAAdAnoAXwHrAAQDAgAcAeIAEQG%2FAAMCGgAyAfMAQQIgAFwBwQA0AiAANAHjADQBBwAhAecANAIQAFwA5QBLAOX%2F3wHQAFwA7QBcAywAXAIUAFwCFwA0AiAAXAIZADQBPQBcAZUAIAE4ABwCEQBVAbIADAKtABgBlwAOAbQADAGUABsCDgAIAg4ACAIOAAgCDgAIAg4ACAIOAAgDKQAVAjQANwIDAGECAwBhAgMAYQIDAGEA8AAHAPAAUwDwAAMA8AAFAnwAYQKMADcCjAA3AowANwKMADcCjAA3AowAOANBADcCegBfAnoAXwJ6AF8CegBfAb8AAwJxACUCMwBhAfMAQQHzAEEB8wBBAfMAQQHzAEEB8wBBAxAAQQHBADQB4wA0AeMANAHjADQB4wA0AOUAGgDlADoA5QAAAOX%2F%2FwDlAFwCFABcAhcANAIXADQCFwA0AhcANAIXADQCFwAuA1AANAIeAFwCEQBVAhEAVQIRAFUCEQBVAbQADAG0AAwCFwA8AiAAXAIOACICGwAhAj8AJAHfADAB3wBUAd8AJwHfAB0B3wAQAd8AGgHfADQB3wAsAd8AKAHfACsA2wBDANsAMADbAEMA2wAwAQMAVwEDAFcBkgAlAZIAMwDbAFMBaABTANsAOgDbADoBaAA6AWgAOgDbADoBaAA6AQMAKwEDADYBkAArAZAANgErACgBKwAoAeAAKAMgACgA2wBDARkAKAH0AAwBFwBYARcAIAEXAGIBFwAVARcAIwEXABUBZQAJAOIAXwFlAAUA4gBfAYsARgHfADICAwAqAuUAMwGRABIDLgA0Ad8AJAFqAF4BagAvAWoAKAFqAC4BagAoAWoAXgFqAC8BagAoAWoALgFRACoBaAAhAVEAKgFoACEBNwAqAd8AHgHfADsB3wA2Ad8AHgHfABgB3wA%2BAFD%2FWwBQ%2F1sDJQAoAvwASgMSAEoDDwAoAd8AIgHfACIB3wAzAd8AIgHfACIB3wAiAd8AIgHfACIB3wBCAd8AKAHfACICGQBcAhcAswIXANMCFwCZAhcAjwIXAJgCFwCaAhcAuQIXAMoAAP%2BoAAD%2FjwAA%2F8gAAP%2FbAAD%2FjgAA%2F4sAAP%2BEAAD%2FfgAA%2F48AAP%2BNAAD%2FjQAA%2F64AAP%2BuAAD%2FtgAA%2F7YAxwAAAOUASwABAAAD2P7vAAAEiv9X%2FzcEYgABAAAAAAAAAAAAAAAAAAAA8QADAbcBLAAFAAACigJYAAAASwKKAlgAAAFeADIBIAAAAgsEAwMEAwICBCAAAAcAAAABAAAAAAAAAABBREJFAAAAAP7%2FAu7%2FBgAAA9gBESAAAZMAAAAAAeAClAAAACAAAwAAAAIAAAADAAAAFAADAAEAAAAUAAQB0gAAADwAIAAEABwAAAANAC8AOQBAAFoAYAB6AH4AvwDPAN8A7wD%2FATEBUwLGAtoC3CAUIBogHiAiIDogRCB0IKwiEiIV%2F%2F8AAAAAAA0AIAAwADoAQQBbAGEAewCgAMAA0ADgAPABMQFSAsYC2gLcIBMgGCAcICIgOSBEIHQgrCISIhX%2F%2FwAB%2F%2FUAAABMAAD%2FwwAA%2F70AAAAA%2F3gAAP93AAD%2FNgAA%2FhT%2BBP3%2F4IkAAAAA4H3gXeCC4EHgGN673rIAAQAAAAAAOAAAAFQAAABeAAAAZgBsAAAAqAAAAMQAAADgAAAAAAAAAAAA2gDeAAAAAAAAAAAAAAAAAAAAAAADAIoAjwCxAMEAyAB7AI4AoQCiAKsAzACHAJoAhgCnAIgAiQDRANAA0gCMALAAowCpAKQA1ACgANgApQCoAKYA1QDvAIsAxQDCAMAAwwCqAKwA3ACuALsAmADWAJsArwDdAL8A0wCzALQA2QDXAK0AngDfALIAvACZAMkAygDLAI0AVQBIAEkASgBLAEwATQDOAE4AUABRAFIAUwBUAFYAcAB3AGgAaQBqAGsAbABtAM8AbgBxAHIAcwB0AHUAeAB2AE8AbwCQAJEAlACSAJMAlQAAuAAALEu4AAlQWLEBAY5ZuAH%2FhbgARB25AAkAA19eLbgAASwgIEVpRLABYC24AAIsuAABKiEtuAADLCBGsAMlRlJYI1kgiiCKSWSKIEYgaGFksAQlRiBoYWRSWCNlilkvILAAU1hpILAAVFghsEBZG2kgsABUWCGwQGVZWTotuAAELCBGsAQlRlJYI4pZIEYgamFksAQlRiBqYWRSWCOKWS%2F9LbgABSxLILADJlBYUViwgEQbsEBEWRshISBFsMBQWLDARBshWVktuAAGLCAgRWlEsAFgICBFfWkYRLABYC24AAcsuAAGKi24AAgsSyCwAyZTWLBAG7AAWYqKILADJlNYIyGwgIqKG4ojWSCwAyZTWCMhuADAioobiiNZILADJlNYIyG4AQCKihuKI1kgsAMmU1gjIbgBQIqKG4ojWSC4AAMmU1iwAyVFuAGAUFgjIbgBgCMhG7ADJUUjISMhWRshWUQtuAAJLEtTWEVEGyEhWS0AsAArALIBAQIrAbICAgIrAbcCfWNROiMACCu3A3NjUTojAAgrALcBinFROiYACCsAsgQIByuwACBFfWkYREuwYFJYsAEbsABZsAGOAAAUACgALAAwAAAADP8zAAwB5gAMAgYADAI%2BAAwCfgAMApAADALIAAwAAAAHAFoAAwABBAkAAQAqAAAAAwABBAkAAgAOACoAAwABBAkAAwBIADgAAwABBAkABAAqAAAAAwABBAkABQCCAIAAAwABBAkABgAmAQIAAwABBAkADgBIASgAUwBvAHUAcgBjAGUAIABTAGEAbgBzACAAUAByAG8AIABMAGkAZwBoAHQAUgBlAGcAdQBsAGEAcgAxAC4AMAA1ADAAOwBBAEQAQgBFADsAUwBvAHUAcgBjAGUAUwBhAG4AcwBQAHIAbwAtAEwAaQBnAGgAdAA7AEEARABPAEIARQBWAGUAcgBzAGkAbwBuACAAMQAuADAANQAwADsAUABTACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAMAA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMAAuADcAMAA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4ANQAuADUAOQAwADAAUwBvAHUAcgBjAGUAUwBhAG4AcwBQAHIAbwAtAEwAaQBnAGgAdABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBkAG8AYgBlAC4AYwBvAG0ALwB0AHkAcABlAC8AbABlAGcAYQBsAC4AaAB0AG0AbAAAAAIAAAAAAAD%2FtQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAA8QAAAQIBAwADACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0ArQDJAMcArgBiAGMAkABkAMsAZQDIAMoAzwDMAM0AzgBmANMA0ADRAK8AZwCRALAA1gDUANUAaADrAOkA7QBqAGkAawBtAGwAbgCgAG8AcQBwAHIAcwB1AHQAdgB3ANcAeAB6AHkAewB9AHwAoQCxAIkAfwB%2BAIAAgQDsALoA6gDuAQQBBQAJABMAFAAVABYAFwAYABkAGgAbABwAEQAPAB0AHgAEAKMAIgCiAAoABQC2ALcAtAC1AMQAxQC%2BAL8AqQCqABABBgCyALMAwwCHAEIACwAMAD4AQABeAGAAEgBfAD8A6AANAIYAiACLAIoAIwAGAQcBCAEJAQoBCwEMAQ0BDgEPAJ0AngEQAREAgwC9AAcAhQCWARIAhAC8ARMACAD1APQA9gAOAO8A8AC4ACAAHwAhAJMAQQBhAKQBFABDAI0A2ADZAI4A2gDdAN4BFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElBE5VTEwCQ1IDZl9mA2ZfdAd1bmkwMEFECG9uZS5zdXBzCHR3by5zdXBzCnRocmVlLnN1cHMJZm91ci5zdXBzCXplcm8uZG5vbQhvbmUuZG5vbQh0d28uZG5vbQp0aHJlZS5kbm9tCWZvdXIuZG5vbQZhLnN1cHMGby5zdXBzBEV1cm8HdW5pMjIxNQd1bmkwMEI1B3VuaTAzMDALdW5pMDMwMC5jYXAHdW5pMDMwMQt1bmkwMzAxLmNhcAd1bmkwMzAyC3VuaTAzMDIuY2FwB3VuaTAzMDMLdW5pMDMwMy5jYXAHdW5pMDMwNAd1bmkwMzA4C3VuaTAzMDguY2FwB3VuaTAzMEELdW5pMDMwQS5jYXAHdW5pMDMyNwt1bmkwMzI3LmNhcAd1bmkwMEEwBWkudHJrAAAAAAAAAf%2F%2FAAIAAQAAAAwAAAAAAAAAAgAIAAQANwABAD4APgABAE4ATwABAGcAZwABAG4AbwABAHgAeAABAHkAegACANoA2gABAAEAAAAKADAARAACREZMVAAObGF0bgAaAAQAAAAA%2F%2F8AAQAAAAQAAAAA%2F%2F8AAQABAAJrZXJuAA5rZXJuAA4AAAABAAAAAQAEAAIAAAACAAoBPAABACYABAAAAA4ARgBsAIIApAC6AMgA2gDoAPoBAAEKARgBHgEoAAEADgAJABMAGQAbADMANQBWAHAAiwCNAJ4ApwCpAMIACQAZAAoAG%2F%2FrADP%2F9QA1%2F%2BwAZQAVAGYAJwCe%2F%2FUAp%2F%2BvAK8AHQAFABv%2F6wA1%2F%2FUAnv%2F1AKf%2FpgCvACcACAAz%2F%2FgANf%2FzAGMABgBlACgAZgArAJ7%2F8ACn%2F8YArwA2AAUAM%2F%2F2ADX%2F9gCe%2F9gAq%2F%2F2AK8AFAADAKf%2F7ACr%2F%2FUArwA4AAQAG%2F%2F2AJ7%2F7ACr%2F%2BoArwA2AAMAp%2F%2B2AKn%2F2ACr%2F7UABAAz%2F%2FYANQAJAKn%2F7ACv%2F%2BgAAQAZ%2F%2BwAAgAZ%2F9cAG%2F%2FmAAMAGf%2FsABv%2F7AA1%2F%2BwAAQDwACQAAgAZ%2F8YAM%2F%2FsAAIAf%2F%2F3AIH%2F9wACFIwABAAAFN4WLAA5AC4AAP%2Fc%2F6D%2F2%2F%2Fc%2F7IAJgBO%2F%2FcAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9v%2FiAAAAJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8MAAAAA%2F9cAAAAAAAAAAAAAAAD%2F6%2F%2Fr%2F9cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2Frv%2Fh%2F%2BH%2FvAAAAEMAAAAAAAAAAP%2FS%2F%2BwAAP%2Fr%2F%2Bj%2F0v%2FzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FYAJAAAAAAAAAAA%2F9gAAAAAAAD%2F6wAA%2F9f%2FsAAkABH%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F9j%2F7wAA%2F%2FUAAAAAAAD%2F9f%2FYAAAAAAAA%2F%2FX%2F9gAA%2F%2FYAAAAAAAD%2F9f%2F3%2F5z%2F2P%2Fr%2F7kAAAAAAAAAAP%2F1AAr%2F7P%2FY%2F9P%2F9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6wAAAAD%2F9QAAAAD%2F9v%2F1AAAAAAAA%2F%2FUAAAAAAAAAAAAA%2F%2FEAAP%2F2AAD%2F4gAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F1%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fr%2F%2FUAAAAA%2F%2BwAAP%2F2%2F%2FUAAAAAAAD%2F6%2F%2F2%2F%2BgAAAAAAAD%2F9gAA%2F%2FX%2F9gAAAAD%2F2AAUAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FUAAP%2Fs%2F%2FUAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BEAAAAAABQAAAAAAAAAAP%2F1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9v%2F1%2F%2Fb%2F9gAA%2F%2Fb%2F9v%2F1AAAAAP%2F2%2F%2FYAAP%2FtAAAAAAAAAAAAAP%2Fs%2F%2FH%2F9QAA%2F9gAEwAAAAAAAAAA%2F%2FcAAAAA%2F%2FUAAP%2F1%2F%2Fb%2F7%2F%2F2AAAAAP%2F1AAAAAAAAAAAAAP%2BI%2F%2Bj%2Fyf%2B6AAAAAP%2Fh%2F%2Bb%2FwwAAAAj%2F7QAA%2F%2BwAAP%2F1%2F%2FUAAAAA%2F%2FD%2F9v90%2F7D%2FsP%2BwAAAAAAAAAAD%2FtQAA%2F%2Bz%2Fxf%2FD%2F%2BYAAP%2FE%2F9gAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAP%2F3%2F%2BwAAAAAAAAAAAAAAAD%2F9gAA%2F%2BwAAAAAAAAAAP%2FhAAAAAAAA%2F9gAAAAAAAn%2F7AAAAAAAAP%2F2%2F%2FQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAD%2F9f%2F2AAAAAAAAAAAAAP%2F2%2F%2FL%2F9gAA%2F%2FYAAP%2F2%2F%2BsAAAAAAAD%2F9gAA%2F%2FYAFAAAAAAAAAAA%2F%2FX%2F9gAAAAAAAAAA%2F%2FX%2F1%2F%2FiAAAAAP%2F1%2F%2FUAAAAAAAAAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9QAAAAAAAAAAAAD%2F9QAAAAAAAP%2FrAAD%2F9QAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAA%2F%2FX%2FsgAA%2F9j%2F2gAA%2F5z%2F2P%2FR%2F8T%2F6%2F%2By%2F%2Bv%2FxP9%2FAAD%2F6%2F%2FPAAAAAP%2FDABT%2FmwAAAAAAAAAA%2F%2BwAAAAAAAD%2F2v%2FR%2F7D%2F1v%2FP%2F8b%2Frv%2FYAAAAAAAAAAAAAAAAAAD%2F9f%2F2AAAAAAAAAAD%2F9v%2Fr%2F%2FYAAAAAAAAAAAAA%2F9YAAAAAAAAAAAAAAAAAAP%2FXAAAAAAAA%2F%2Fb%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2B4AAAAAAAAAAP%2FhAAD%2F9%2F%2F3%2F%2Ff%2F7QAAAAD%2FtAAAAAAAAAAAAAAAAAAv%2F9cAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FYAAAAA%2F%2Fb%2F9gAAAAAAAAAA%2F%2FX%2F9gAAAAD%2FxAAA%2F%2Bv%2F9QAR%2F7H%2F9f%2Fx%2F%2BP%2F9f%2FCAAD%2F3%2F%2BcAAD%2F9f%2FhAAAAAP%2FYACb%2FsgAAAAAAAAAAAAAAAAAAAAD%2F9f%2Fh%2F8T%2F1P%2FY%2F9%2F%2F1v%2Fi%2F%2B4AAAAAAAAAAP%2F2%2F%2Ff%2F9f%2FxAAD%2F7f%2FtAAAAAP%2F3%2F%2BL%2F9v%2Fs%2F%2B3%2F7P%2Fm%2F9oAAP%2F1%2F%2BQAAAAA%2F8QAFAAAAAAAAAAA%2F%2FcAAAAAAAAAAP%2FtAAD%2F2P%2FYAAAAAAAAAAAAAAAAAAAAAP%2FrAAAAAP%2FrAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FEAAAAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAA%2F%2Bv%2F9gAAAAkACQAAAAAAAAAAAAAAAP%2F2AAD%2F7wAAAAAAAAAAAAAAAP%2F1AB0AAAAAAAAAAP%2F1AAAAAAAAAAAACQAP%2F%2FUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Bc%2F%2FD%2F4f%2BwAAAAFP%2Fx%2F%2Bz%2FrwAAAAAAAAAAAAAAAAAA%2F%2FUAAAAA%2F%2BEAAP%2BHAAAAAAAAAAAAAAAAAAD%2FxAAAAAD%2Fs%2F%2FD%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BsAAP%2F2%2F%2Bz%2F9gAAAAwADP%2F2AAAAAP%2FsAAAAAP%2FxAAAAAP%2FsAAD%2F9QAA%2F9j%2F9QAAAAcAAAAAAAAAAP%2F2AAAAAAAAAAAADAAAAAkABwAAAAAABQAAAAAAAAAAAAAAMQAAADEAMf%2Fx%2F%2FYAAAAAACj%2F1wAAAAAAAAAA%2F%2BwAAP%2F2AAAAAAAA%2F%2BoAAABP%2F%2BwAWv%2FsABQAAAAAADMAJgAdACgAKAASAAD%2F9QAAAAAAAP%2F1AAAAAAA5AAAAAP%2FsAAAAAP%2F1AAAAIAAAAAAAAAAAAAAAAAAAAAD%2F8QAA%2F%2FUAAAAAAAAAAP%2FYAAD%2F9QAUADwAAAAAAAAAAAAA%2F%2BIAAAAAAAAAAAAAAAAAAAAA%2F%2FUAAAAAABQAAAAA%2F%2FoAAAAA%2F%2Fn%2F9v%2F2AAAAAP%2FsABQAAAAAAAAAAP%2F2AAD%2F9AAAAAD%2F9f%2F1%2F%2BwAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Bv%2F7AAAAAAAAAAAAAAAAAAAAAD%2F6wAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F2AAAAAAAAAAAAAAAAAAA%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FIAAAAAP%2FYAAAAAAAAAAD%2F7P%2F2AAAAAAAAAAD%2F8QAAAAAAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAD%2F7gAAAAAAAP%2FsAAD%2F9AAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABH%2F2gAAAAAAAAAA%2F8X%2F2AAAAAAAAP%2FQ%2F%2FX%2F2gAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8b%2FdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F2%2F%2FcAEgAbAAD%2F2f%2FuAAD%2F9gAA%2F%2BkAAP%2F2%2F9QAAAAAAAAAAAAS%2F%2B0AT%2F%2FYAAAAAAAAAAAAAAAAAAAAKAAbAAD%2F6%2F%2FsAAD%2F9v%2F2AAAAAAAAAAAAAP%2FrAAAAAP%2FsAAAAAAAAAAD%2F%2FQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FDAAAAAAAAAAAAAAAAAAD%2F9gAA%2F%2F0AAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FUAAAAAAAD%2F9gAAAAAAAAAAABQAAAAAAAAAAP%2FrAAD%2F9gAAAAAAAP%2F3AAAAAP%2FsACgAFAAAAAAAAAAAAAD%2F7AAAAAAAAAAA%2F%2Bz%2F6wAAAAAAAAAAABQAAAAAAAD%2F7AAAAAD%2F4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F4gAAAAAAAAAAAAAAAAAA%2F%2FUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FrAAAAAP%2F9AAD%2F9gAAAAAAAP%2FxAAAAAAAAAAD%2F9gAAAAD%2F4gAAAAAAAP%2F1AAAAAAA2%2F%2FUAAAAAAAAAAP%2F1AAAAAAAAAAAAAAAAAAAAAAAA%2F%2FQAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAP%2F2AAAAAAAA%2F%2BwAAAAAAAAAAP%2FsAAAAAP%2FYAAAAAAAAAAAAAAAAADj%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6wAAAAAAAAAAAAD%2F4wAAAAAAAP%2F3AAAAAAAAAAAAAAAAAAAAAAAA%2F%2BQAAP%2F2AAAAAAAA%2F%2FYAAAAA%2F%2FUAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAv%2F6wAA%2F%2Fb%2F9gAA%2F8T%2F3P%2Fw%2F%2BL%2F9v%2FhAAD%2F9f9zAAD%2F9v%2FxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7P%2Fs%2F%2FD%2F7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BsAAAAAAAAAAAAAAAAAAP%2FaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F4gAAAAD%2F9v%2FZAAAAAAAAAAD%2FnP%2FO%2F%2Fb%2FogAA%2F9AAAP%2Fn%2F2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F3P%2FsAAD%2F9v%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9gAAAAD%2F6gAA%2F%2Fj%2F%2BAAA%2F8b%2F9f%2Ft%2F%2B7%2F9v%2FxAAD%2F8%2F%2By%2F%2FwAAP%2FiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2B7%2F6v%2Fs%2F%2Ff%2F5f%2FyAAAAAAAAAAD%2F7P%2F2AAAAAAAAAAD%2F9f%2F2AAAAAAAI%2F%2FUAAP%2F0%2F%2Fb%2F9gAAAAAAAP%2F2%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6v%2F1AAAAAP%2F1AAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F9wAAAAA%2F8QAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fs%2F%2BwAAAAAAAAAAP%2F1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9f%2F2%2F9sAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F2%2F8L%2F3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FYAAD%2F9P%2FiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9AAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAA%2F9gAAP%2F2%2F9QAAAAAAAAAAAAAAAAAAP%2Fi%2F%2BsAAAAAAAAAAP%2FiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fq%2F%2FUAAAAAAAAAAP%2FrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2BY%2F9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F2gAAAAAAAAAA%2F4j%2F0wAAAAAAAP%2Fh%2F%2B3%2F2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8cAAAAAAAAAAAAAAAD%2F7AAAAAAAAAAA%2F%2FYAAAAAAAD%2F7P%2F2AAAAAAAA%2F%2BwAAAAA%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FrAAAAAAAAAAAAAP%2FaAAAAAP%2F8AAAAAAAA%2F%2FUAAAAAAAAAAAAA%2F%2Fb%2F9gAA%2F%2FQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F1%2F%2BsAAAAAAAD%2F7AAAAAAAAgANAAQAIAAAACIAJQAdACgAKAAhACoAYgAiAGcAdgBbAHgAegBrAIYAkwBuAJYAngB8AKEAoQCFAKMAowCGAKUApQCHAKcApwCIAKkAqQCJAAEABACkAAYABwAIAAwAJgAnAAkAKAApACoACgALACgAKAAMACsADAANAA4ADwAQAC0AEQAuABIAEwAUAB0AFQAAABgAGQAaABwAAAAAABsAAAAcABwAHQAdACIAHwAgACEAIgA3ACMAOAAkACUABgAGAAYABgAGAAYAJgAIACYAJgAmACYAKQApACkAKQAoAAwADAAMAAwADAAMACYAEAAQABAAEAASAAwALAAUABQAFAAUABQAFAAYABUAGAAYABgAGAAAAAAAAAAAACIAHAAdAB0AHQAdAB0AHQAYADEAIgAiACIAIgAkACQAAAAdABkAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAXABYAFgABAAIANAAEADUANQAeADYAHgA2AAAAAAAyADMAMgAzADAAMAAwADAAAwAAAAAALwAAAC8AAAAvAAAABQACAEgABAAEAAwABgAGAA8ACgAKAA8ADQANABMAEgASAA8AFAAUAA8AFgAWAA0AFwAXAAIAGAAYAAMAGQAZAB8AGgAaAAQAGwAbACAAHAAcAAUAHQAdAA4AHgAeABAAIAAiABIAIwAjABEAJAAkAAYAJgAmABQAJwAnAAcAKgArACgALAAsABIALQAtACgALgAuABIALwAvACgAMAAwACkAMQAxABUAMgAyABYAMwAzACQANAA0AAgANQA1ACUANgA2AAkANwA3ACoAOAA9AAwAPwA%2FAA8ASQBPAA8AUABTAAMAVABUAAUAVQBVAAEAVwBdABAAXgBiABIAYwBmABQAZwBoACgAaQBvABIAcQB0ABYAdQB2AAkAeQB6ABEAhgCHAAsAiACJACwAigCKABwAiwCLAB0AjACMACEAjQCNAB4AjgCPACIAkACQACMAkQCRAAoAkgCSACMAkwCTAAoAlgCWACcAlwCXACsAmACYACcAmQCZACsAmgCdACYAngCeABkAogCiAC0ApACkAC0ApgCmAC0ApwCnABsAqQCpABgAqwCrABcArwCvABoA8ADwABQAAQAAAAoAYACeAAJERkxUAA5sYXRuABoABAAAAAD%2F%2FwABAAAAFgADQVpFIAAeQ1JUIAAoVFJLIAAyAAD%2F%2FwABAAEAAP%2F%2FAAIAAgAFAAD%2F%2FwACAAMABgAA%2F%2F8AAgAEAAcACGxpZ2EAMmxpZ2EAMmxpZ2EAMmxpZ2EAMmxpZ2EAMmxvY2wAOGxvY2wAOGxvY2wAOAAAAAEAAQAAAAEAAAACAAYAGgABAAAAAQAIAAEABgDKAAEAAQAmAAQAAAABAAgAAQAaAAEACAACAAYADAB5AAIAIwB6AAIAMQABAAEAIw%3D%3D%29%20format%28%27truetype%27%29%3B%0A%7D%0A%40font%2Dface%20%7B%0Afont%2Dfamily%3A%20%27Source%20Sans%20Pro%27%3B%0Afont%2Dstyle%3A%20normal%3B%0Afont%2Dweight%3A%20400%3B%0Asrc%3A%20url%28data%3Aapplication%2Ffont%2Dsfnt%3Bbase64%2CAAEAAAARAQAABAAQR0RFRgNEA3IAAG5oAAAAQEdQT1PUveN5AABuqAAAGXBHU1VC8WfWVwAAiBgAAADgT1MvMlq0lFsAAGUsAAAAYGNtYXDzMPm1AABljAAAAeZjdnQgDZkA%2BgAAaTQAAAAoZnBnbQZZnDcAAGd0AAABc2dhc3D%2F%2FwADAABuYAAAAAhnbHlmIymUiAAAARwAAF3saGVhZP4Us%2BIAAGEMAAAANmhoZWEHowOhAABlCAAAACRobXR4pqgmOgAAYUQAAAPEbG9jYTiIUNQAAF8oAAAB5G1heHADCwJAAABfCAAAACBuYW1lIro8MAAAaVwAAAHGcG9zdGxQSG8AAGskAAADOXByZXCWBPrrAABo6AAAAEsABQBZAAACNQKUAAMABgAJAA8AFQBnALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAIvG7kAAgAEPlm6AAUAAgAAERI5ugAGAAIAABESOboABwACAAAREjm6AAgAAgAAERI5uQAKAAH0ugANAAIAABESObgAABC5ABIAAfQwMRMhESETJxEhEQcTLwEjDwETPwEjHwFZAdz%2BJMB%2FAVh%2BUkk0BDZKhDFC60IyApT9bAFU6P4yAc7o%2FuaEZ2eEAUled3deAAAAAAIAAwAAAh0CkAAJABEAVAC4AABFWLgADi8buQAOABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4ABEvG7kAEQAEPlm6AAUADAAOERI5ugALAAwADhESObgACy%2B5AAkAAfQwMQEnLgEnIw4BDwEXIwcjEzMTIwFxHxIgEAQPIBIf2u8%2FVd5e3lkBC2Q3bTk5bTdkQ8gCkP1wAAAAAAMAWgAAAiQCkAATABwAJQBbALgAAEVYuAAALxu5AAAAED5ZuAAARVi4ABMvG7kAEwAEPlm6ACMAAAATERI5uAAjL7oACgAjABQREjm4AAAQuQAbAAH0uAAjELkAHAAB9LgAExC5ACUAAfQwMRMzMh4CFRQGBxUeARUUDgIrARMyNjU0JisBFRMyNjU0JisBFVrDMlM7ITg6SFAkQlw30bRVSU1NZXJVXlxXcgKQEiY9KzFPDwQLTkQwSDAYAXg6NzYv1v7KP0M9OfgAAAEANP%2F0AhsCnAAhADkAuAAARVi4AAUvG7kABQAQPlm4AABFWLgAHS8buQAdAAQ%2BWbgABRC5AAwAAfS4AB0QuQAWAAH0MDETND4CMzIWFwcuASMiDgIVFB4CMzI2NxcOASMiLgI0LE5rPzxaHS8aPyovTDYeHTRLLzBHIC8nYj8%2BaU0rAUhPflgvMSA1HCElRWI9PmNGJiYjMy0yLld%2FAAACAFoAAAI0ApAACgATADUAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACi8buQAKAAQ%2BWbkACwAB9LgAABC5ABEAAfQwMRMzMhYVFA4CKwE3MjY1NCYrARFapJieKE5ySqiec3Nzc0sCkKidTntVLUSKfX2E%2FfgAAAABAFoAAAHeApAACwBNALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm4AAAQuQADAAH0ugAHAAAACxESObgABy%2B5AAUAAfS4AAsQuQAIAAH0MDETIRUhFTMVIxUhFSFaAXr%2B2fn5ATH%2BfAKQRs5H7kcAAAAAAQBaAAAB1AKQAAkAQwC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAJLxu5AAkABD5ZuAAAELkAAwAB9LoABwAAAAkREjm4AAcvuQAFAAH0MDETIRUhFTMVIxEjWgF6%2Ftn6%2BlMCkEbeRv7aAAAAAQA0%2F%2FQCJgKcACUATQC4AABFWLgABS8buQAFABA%2BWbgAAEVYuAAhLxu5ACEABD5ZuAAFELkADAAB9LgAIRC5ABYAAfS6AB0ABQAhERI5uAAdL7kAGwAB9DAxEzQ%2BAjMyFhcHLgEjIg4CFRQeAjMyNjc1IzUzEQ4BIyIuAjQtUW5CRFsdLxlBMjJQOB8dN1E1Iz8Ui9cgaUJBbE4sAUhPflgvMx41GiMlRWI9PmNGJhUSq0X%2B7CErLld%2FAAABAFoAAAIyApAACwBJALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm6AAkAAAALERI5uAAJL7kAAwAB9LgAABC4AATQuAALELgAB9AwMRMzESERMxEjESERI1pTATFUVP7PUwKQ%2Fu0BE%2F1wATX%2BywABAFoAAACtApAAAwAlALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAMvG7kAAwAEPlkwMRMzESNaU1MCkP1wAAAAAQAf%2F%2FQBiQKQABAAKwC4AABFWLgABy8buQAHABA%2BWbgAAEVYuAAOLxu5AA4ABD5ZuQADAAH0MDE3HgEzMjY1ETMRFA4CIyInWxY4IzU0VBUrRTB7OocnI0FLAcf%2BMSpLOCBpAAEAWgAAAj8CkAAMAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgABC8buQAEABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4AAgvG7kACAAEPlm6AAIAAAAMERI5ugAJAAQACBESOTAxEzMRMwEzBxMjAwcVI1pTAwERXs3tXcRxUwKQ%2FrcBSfr%2BagFVhdAAAAEAWgAAAcwCkAAFACsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgABS8buQAFAAQ%2BWbkAAgAB9DAxEzMRIRUhWlMBH%2F6OApD9t0cAAAABAFoAAAJ9ApAAGQBvALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAYvG7kABgAQPlm4AABFWLgAGS8buQAZAAQ%2BWbgAAEVYuAAJLxu5AAkABD5ZugADAAYACRESOboADgAGAAkREjm6ABEAGQAGERI5ugAUAAAAGRESOTAxEzMTFzM3EzMRIxE0NjcjBwMjAycjHgEVESNaYn8wBC5%2BYk8HBAQ1fi9%2FNAQDCE0CkP6ghoYBYP1wAWksaiyS%2FqkBV5Isaiz%2BlwAAAAEAWgAAAi0CkAATAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACC8buQAIABA%2BWbgAAEVYuAATLxu5ABMABD5ZuAAARVi4AAsvG7kACwAEPlm6AAQACwAIERI5ugAOAAAAExESOTAxEzMTFzMuATURMxEjAycjHgEVESNaVu1HBAMHT1buRwQEB08CkP5kiDJrNAFT%2FXABnYcyZzT%2BqQACADT%2F9AJlApwAEwAnADUAuAAARVi4AAovG7kACgAQPlm4AABFWLgAAC8buQAAAAQ%2BWbkAFAAB9LgAChC5AB4AAfQwMQUiLgI1ND4CMzIeAhUUDgInMj4CNTQuAiMiDgIVFB4CAUw%2BZ0opKUpnPj5nSykpS2c%2BLEczHBwzRywsRzMcHDNHDDBZf09PfVcuL1d9Tk9%2FWTBJJkdjPj1iRCUlRGI9PmNHJgACAFoAAAIVApAADgAXAEMAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgADi8buQAOAAQ%2BWboADAAAAA4REjm4AAwvuQAPAAH0uAAAELkAFgAB9DAxEzMyHgIVFA4CKwERIxMyNjU0JisBEVrJNlo%2FIyNAWTZ2U79WU1RVbAKQFC1KNjRMMhn%2B%2FAFIQUZHN%2F77AAACADT%2FXAJzApwAEwA0AEsAuAAARVi4ACQvG7kAJAAQPlm4AABFWLgAGi8buQAaAAQ%2BWbsAMQABABcABCu4ABoQuQAFAAH0uAAkELkADwAB9LgAGhC4AC7QMDETFB4CMzI%2BAjU0LgIjIg4CAQ4BIyImJy4DNTQ%2BAjMyHgIVFA4CBx4BMzI2N4ocM0csLEczHBwzRywsRzMcAekPMh1beh02WD8iKUpnPj5nSykhPVY0F1Q2FiEOAUs%2FZUgmJkhlPz1iRCUlRGL94wUKV0QHNlh3SE99Vy4vV31OR3VXNwksKgYEAAACAFoAAAIgApAACAAYAFQAuAAARVi4AA4vG7kADgAQPlm4AABFWLgADC8buQAMAAQ%2BWbgAAEVYuAAJLxu5AAkABD5ZuwABAAEACgAEK7gADhC5AAgAAfS6ABcAAQAKERI5MDETMzI2NTQmKwEBAyMRIxEzMh4CFRQGBxOtbk1SUk1uARWed1PNMlU9IlBDpgFZP0BBNP2zARX%2B6wKQEyxGM01cEf7iAAABACr%2F9AHvApwAMwBJALgAAEVYuAAWLxu5ABYAED5ZuAAARVi4ADAvG7kAMAAEPlm5AAMAAfS6AAsAFgAwERI5uAAWELkAHQAB9LoAJQAwABYREjkwMTceATMyNjU0LgIvAS4DNTQ%2BAjMyFhcHLgEjIgYVFB4CHwEeAxUUDgIjIiYnXCNfM0FIER0oF14XMCYYHzdLLTtkIy0eSS43QxMgJhRdHDIkFR86UjRFdiuPJS07MBkjGRQLKQocKDckJUAvGi0kNh0hMy0YIRkTCCgMHyk3JCdEMx00LQAAAQAcAAAB%2FAKQAAcAMwC4AABFWLgAAi8buQACABA%2BWbgAAEVYuAAHLxu5AAcABD5ZuAACELkAAAAB9LgABdAwMRMjNSEVIxEj4sYB4MZUAkpGRv22AAAAAAEAV%2F%2F0Ai4CkAAZADwAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgADS8buQANABA%2BWbgAAEVYuAAULxu5ABQABD5ZuQAHAAH0MDETMxEUHgIzMj4CNREzERQOAiMiLgI1V1MYKTggITgqGFAkP1YyMlc%2FJAKQ%2Fn07UDAVFTBQOwGD%2Fn9PbEMdHUNsTwAAAQAAAAACAwKQAA0AQAC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAKLxu5AAoAED5ZuAAARVi4AA0vG7kADQAEPlm6AAUAAAANERI5MDERMxMeARczPgE3EzMDI1lpEhsTBBIcEWlV0GECkP6eO2Q6OmQ7AWL9cAAAAQAXAAAC%2BgKQACEAdgC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAKLxu5AAoAED5ZuAAARVi4ABQvG7kAFAAQPlm4AABFWLgAIS8buQAhAAQ%2BWbgAAEVYuAAXLxu5ABcABD5ZugAFAAAAIRESOboADwAUABcREjm6ABwAIQAKERI5MDETMxMeARczPgE3EzMTHgEXMz4BNxMzAyMDLgEnIw4BBwMjF1ZFCRQJBAsYC1tMWwwYDAQJEgpFUIhkYwkPCAQIEQhhYwKQ%2Fps2aDY2aTUBZf6bNGo2Nmk1AWX9cAGLJkkmJkkm%2FnUAAAABAA8AAAHyApAAGQBbALgAAEVYuAABLxu5AAEAED5ZuAAARVi4AAsvG7kACwAQPlm4AABFWLgAGS8buQAZAAQ%2BWbgAAEVYuAAPLxu5AA8ABD5ZugAGAAEAGRESOboAEwAPAAsREjkwMRMDMxceARczPgE%2FATMDEyMnLgEnIw4BDwEjzrJcWQ0XDwQOFQxXWLO%2FXGANGxAEDhoMX1gBUwE9qBcrHR0rF6j%2Bv%2F6xsRgzHh4zGLEAAAAAAf%2F%2FAAAB3QKQAA8AQAC4AABFWLgAAS8buQABABA%2BWbgAAEVYuAALLxu5AAsAED5ZuAAARVi4AA8vG7kADwAEPlm6AAYAAQAPERI5MDE3AzMXHgEXMz4BPwEzAxUjxMVZVRAeEQQRIg9UV8VU%2FgGSuSRGJSVGJLn%2Bbv4AAAEALQAAAfECkAAJAD0AuAAARVi4AAMvG7kAAwAQPlm4AABFWLgACC8buQAIAAQ%2BWbkABgAB9LgAANC4AAMQuQABAAH0uAAF0DAxNwEhNSEVASEVIS0BWf7GAaL%2BpgFd%2FjwyAhhGMf3oRwAAAAIAOv%2F0AbcB8gAbACcAdgC4AABFWLgADy8buQAPAAg%2BWbgAAEVYuAAZLxu5ABkABD5ZuAAARVi4ABQvG7kAFAAEPlm6AAMADwAZERI5uAADL7gADxC5AAgAAfS6ABUAFAAPERI5uAAZELkAHwAB9LgAFRC5ACIAAfS4AAMQuQAjAAH0MDE3NDY3NC4CIyIGByc%2BATMyFhURIycjDgEjIiY3FBYzMjY3NQ4DOo%2BcCRcmHitJHSEiYjtZUEQHAiNRLT5RUTEkIz8jPVQzFn5QVREXLCIVIBQ5FiltW%2F7WOh0pSEgqJCEghwgWHicAAgBS%2F%2FQB%2BwLIABYAJgCDALgAAEVYuAAALxu5AAAAEj5ZuAAARVi4AAYvG7kABgAIPlm4AABFWLgAEC8buQAQAAQ%2BWbgAAEVYuAAWLxu5ABYABD5ZugADAAYAEBESOboAEwAQAAYREjm4ABMQuQAXAAH0uAAQELkAGgAB9LgABhC5ACQAAfS4AAMQuQAmAAH0MDETMxUHPgEzMh4CFRQOAiMiJicjByM3HgEzMj4CNTQuAiMiB1JSAiFOKS9IMRkiOkwqIkkgAwdCUiA%2FGB4zJRUOHzEiO0cCyMJYHScjQVs4PmJEIx8dMGwcFxsxSC0oQi8aQgAAAAABAC7%2F9AGwAfIAIQA5ALgAAEVYuAAFLxu5AAUACD5ZuAAARVi4AB0vG7kAHQAEPlm4AAUQuQAMAAH0uAAdELkAFgAB9DAxNzQ%2BAjMyFhcHLgEjIg4CFRQeAjMyNjcXDgEjIi4CLiZAVS8wRRkpFi8dITgoFxYnOCEjORYlIVEsMFQ9I%2FI9X0IiIxc1ExgbMkUqKkQxGx0UNh0iIkFfAAAAAgAv%2F%2FQB2QLIABQAIwCDALgAAEVYuAAFLxu5AAUACD5ZuAAARVi4AAovG7kACgASPlm4AABFWLgAEi8buQASAAQ%2BWbgAAEVYuAANLxu5AA0ABD5ZugAIABIABRESOboADgAFABIREjm4ABIQuQAYAAH0uAAOELkAGwAB9LgACBC5ABwAAfS4AAUQuQAfAAH0MDE3ND4CMzIWFyc1MxEjJyMOASMiJjcUFjMyNjc1LgEjIg4CLyM6TCoqPiAEU0QHAx1LK1xtVUZAIjweHzkeHTMmFvI7X0IkHhpTu%2F04ORwphHtYYiEi%2FhwXGzFEAAAAAgAu%2F%2FQBygHyABsAJABRALgAAEVYuAAFLxu5AAUACD5ZuAAARVi4ABcvG7kAFwAEPlm6AAwABQAXERI5uAAML7gAFxC5ABAAAfS4AAUQuQAfAAH0uAAMELkAJAAB9DAxNzQ%2BAjMyHgIVFAchHgEzMjY3Fw4BIyIuAiU0JiMiDgIHLiU9TiouSTEaA%2F64BVdGIzsbHSBOMjFVPyQBVD85Gi8mGQTyPF9CIyA8VDQbEk9cFRE2FB4jQV5hS08VJzklAAAAAAEAHgAAAT8C1AAVAFYAuAAARVi4AAUvG7kABQAIPlm4AABFWLgAEi8buQASABI%2BWbgAAEVYuAAJLxu5AAkABD5ZuAASELkAAgAB9LgABRC5AAgAAfS4AAvQuAAFELgADtAwMQEmIyIdATMVIxEjESM1NzU0NjMyFhcBLRscRGdnUkJCRUkXKREChQxeTUP%2BXQGjPgVNS1YJBwAAAAMALf8gAewB8gARAEkAWQBtALgAAEVYuAAlLxu5ACUACD5ZuAAARVi4AEUvG7kARQAGPlm5AAMAAfS6ADwAJQBFERI5uAA8L7kACwAB9LgAJRC4ACnQuAApL7kAKgAB9LgAPBC4ADPQuAAzL7kASgAB9LgAJRC5AFIAAfQwMRcUFjMyPgI1NCYrASImJw4BBzQ2NzUuATU0Njc1LgE1ND4CMzIWFzMVIx4BFRQOAiMiJicOARUUFjsBMhYVFA4CIyIuAhMyPgI1NCYjIgYVFB4CdUtCIzkoFjIwVA4hEBoYSCYhEhkiExgnHTJDJRQjDqlkERccMEElEiYRDRIkMl5VVSJAWzktSjUdyRUlHRA8Kys8EB0lUicuERskEyIaAwUTKiAfOBcECycdHy4NBBRDLChALRgHBT8RNB8nPysYCQgLGxQXHjc9Ij0uGxEiMAFOEB4rGzY7OzYbKx4QAAABAFIAAAHXAsgAFABYALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4AAAvG7kAAAASPlm4AABFWLgAFC8buQAUAAQ%2BWboAAwAGABQREjm4AAvQuAAGELkADwAB9LgAAxC5ABIAAfQwMRMzFQc%2BATMyFhURIxE0JiMiBgcRI1JSAyNMM01HUiwwJjolUgLIwmQhL2Be%2FswBKUU9JiX%2BoAACAEMAAAC1ArQACwAPAC0AuAAARVi4AAwvG7kADAAIPlm4AABFWLgADi8buQAOAAQ%2BWboABgAAAAMrMDETIiY1NDYzMhYVFAYHMxEjfBghIRgYISFCUlICSh4XGB0dGBceZP4aAAAAAAL%2F2P8nALUCtAAPABsANwC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAAFLxu5AAUABj5ZugAWABAAAyu4AAUQuQAMAAH0MDETMxEUBiMiJic3HgEzMjY1EyImNTQ2MzIWFRQGU1I8SRckDREJGA0kGCoYISEYFyEhAeb940pYCAU%2BAwUyLQKBHhcYHR0YFx4AAAEAUgAAAeYCyAAMAFsAuAAARVi4AAQvG7kABAAIPlm4AABFWLgAAC8buQAAABI%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4AAgvG7kACAAEPlm6AAIAAAAMERI5ugAJAAAACBESOTAxEzMRMxMzBxMjJwcVI1JRA89bo7lajltRAsj%2BHgEAw%2F7d6mqAAAAAAAEAUv%2F0ANgCyAAPACsAuAAARVi4AAAvG7kAAAASPlm4AABFWLgADC8buQAMAAQ%2BWbkABQAB9DAxEzMRFBYzOgE3Fw4BIyImNVJSDgkEBwcLCBYRLygCyP2UFBACPgQEODYAAAABAFIAAALxAfIAIQCYALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4AAAvG7kAAAAIPlm4AABFWLgAIS8buQAhAAQ%2BWbgAAEVYuAAZLxu5ABkABD5ZuAAARVi4ABEvG7kAEQAEPlm6AAIAAAAhERI5ugAJAAAAIRESObgABhC4AAzQuQAVAAH0uAAJELkAFwAB9LgABhC5AB0AAfS4AAIQuQAfAAH0MDETMxczPgEzMhYXPgEzMhYVESMRNCYjIgcRIxE0JiMiBxEjUkQHAyBLLDg%2FDyZNLUtJUiwuN0NSLC83Q1IB5kYjLzEsKjNgXv7MASlFPUv%2BoAEpRT1L%2FqAAAAAAAQBSAAAB1wHyABQAZQC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAALxu5AAAACD5ZuAAARVi4ABQvG7kAFAAEPlm4AABFWLgACy8buQALAAQ%2BWboAAgAAABQREjm4AAYQuQAPAAH0uAACELkAEgAB9DAxEzMXMz4BMzIWFREjETQmIyIGBxEjUkQHAyNNM01HUiwwJjolUgHmRiMvYF7%2BzAEpRT0mJf6gAAAAAAIALv%2F0AfAB8gATACcANQC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAAPLxu5AA8ABD5ZuQAZAAH0uAAFELkAIwAB9DAxNzQ%2BAjMyHgIVFA4CIyIuAjcUHgIzMj4CNTQuAiMiDgIuJT5RLS1RPiUlPlEtLVE%2BJVUUJTQfHzQlFBQlNB8fNCUU8j1fQiIiQl89PF9BIiJBXzwqRDEbGzFEKipFMhsbMkUAAAIAUv8zAfsB8gAWACcAgwC4AABFWLgACS8buQAJAAg%2BWbgAAEVYuAADLxu5AAMACD5ZuAAARVi4AAIvG7kAAgAGPlm4AABFWLgAEy8buQATAAQ%2BWboABQAJABMREjm6ABYAEwAJERI5uAAWELkAFwAB9LgAExC5ABoAAfS4AAkQuQAkAAH0uAAFELkAJwAB9DAxFxUjETMXMz4BMzIeAhUUDgIjIiYnNx4BMzI%2BAjU0LgIjIgYHpFJEBwMhTysvSDAZIjpMKiJDIgIhPhgeMyUVDh8xIh8%2FJCmkArM4HCgjQVs5PmFEIx4aQBwXGzFILShCLxoiIAAAAgAv%2FzMB2QHyABQAIwB%2FALgAAEVYuAAFLxu5AAUACD5ZuAAARVi4AAsvG7kACwAIPlm4AABFWLgADS8buQANAAY%2BWbgAAEVYuAASLxu5ABIABD5ZugAIAAUAEhESOboADwASAAUREjm5ABgAAfS4AA8QuQAbAAH0uAAIELkAHAAB9LgABRC5AB8AAfQwMTc0PgIzMhYXMzczESM1Nw4BIyImNxQWMzI2NzUuASMiDgIvIzpMKipAIQIIQlMEHUsqXG1VRkAiPB4fOR4dMyYW8jtfQiQdHS79Ta1WGyeEe1hiISL%2BHBcbMUQAAAABAFIAAAFeAfIAEQBSALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4AAAvG7kAAAAIPlm4AABFWLgAES8buQARAAQ%2BWboAAgAAABEREjm4AAYQuAAM3LgAAhC5AA8AAfQwMRMzFzM%2BATMyFwcuASMiBgcRI1JEBwMZRyodFxAMFA8fQxlSAeZYLjYKSAQEMj7%2ByAABABz%2F9AGDAfIAMQBJALgAAEVYuAAVLxu5ABUACD5ZuAAARVi4AC4vG7kALgAEPlm5AAMAAfS6AAsALgAVERI5uAAVELkAHAAB9LoAJAAVAC4REjkwMTceATMyNjU0LgInLgM1ND4CMzIWFwcuASMiBhUUHgIXHgMVFA4CIyImJ0UgQywwMBQfKBQaNCkaFys%2BJy5NHCcZNiAuKxIeJxUaNSobFy1DKzReI24aICwgExwVEAgJFyEsHx0zJRUgFzQTGCocERkTDwgKFiEwIh40KBcmHQAAAAABABj%2F9AFFAm4AGQBFALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4ABQvG7kAFAAEPlm4AAYQuQAJAAH0uAAA0LgABhC4AAPQuAAUELkADQAB9DAxEyM1PwEzFTMVIxEUFjMyNjcXDgEjIi4CNWBITApFg4MhKg0eDBAULxcnNSEOAaM%2BBYiIQ%2F7yLTEIBT4HCxgqPCQAAQBL%2F%2FQBzgHmABQAZQC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAAJLxu5AAkACD5ZuAAARVi4ABEvG7kAEQAEPlm4AABFWLgADC8buQAMAAQ%2BWbgAERC5AAUAAfS6AA0ACQAMERI5uAANELkACAAB9DAxEzMRFBYzMjY3ETMRIycjDgEjIiY1S1MrMCY6I1JEBwMiSzNORwHm%2FtdFPScrAVn%2BGkwoMGBeAAAAAAEADAAAAccB5gANAEAAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgACi8buQAKAAg%2BWbgAAEVYuAANLxu5AA0ABD5ZugAFAAAADRESOTAxEzMTHgEXMz4BNxMzAyMMVVwLFwsECxYLXFGsYAHm%2FuwkSCMjSCQBFP4aAAEAGAAAArYB5gAhAHYAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgACi8buQAKAAg%2BWbgAAEVYuAAULxu5ABQACD5ZuAAARVi4ACEvG7kAIQAEPlm4AABFWLgAFy8buQAXAAQ%2BWboABQAhAAAREjm6AA8AFwAUERI5ugAcAAAAIBESOTAxEzMTHgEXMz4BNxMzEx4BFzM%2BATcTMwMjAy4BJyMOAQcDIxhUSAgOBwQIEAlLUEwJEQgECA4IR06CZEYJDwkECBAKRGAB5v7nI0IiIkMiARn%2B5yNCIiJCIwEZ%2FhoBBSNEJSVFI%2F78AAAAAQAOAAABsAHmABkAWwC4AABFWLgAAS8buQABAAg%2BWbgAAEVYuAALLxu5AAsACD5ZuAAARVi4ABkvG7kAGQAEPlm4AABFWLgADy8buQAPAAQ%2BWboABgALAA8REjm6ABQAAQAZERI5MDE3JzMXHgEXMz4BPwEzBxcjJy4BJyMOAQ8BI62TWUELGA0ECxYLO1aTnllHDRoOBA0YDEJW%2FuhrFCkUFCkUa%2FH1cRYsFRUrF3EAAAAAAQAM%2Fy8BxwHmAB0ARgC4AABFWLgACC8buQAIAAg%2BWbgAAEVYuAASLxu5ABIACD5ZuAAARVi4ABkvG7kAGQAGPlm5AAMAAfS6AA0ACAAZERI5MDEXHgEzMjY%2FAQMzEx4BFzM%2BATcTMwMOAyMiJic3MQgUCSo1DwvDVWMLGQsECxQKV1C3DSAsOCURHAwQhgIFOy0kAef%2B8yBHIiFIIAEN%2FfIkPi0aBQVBAAAAAAEAHwAAAY8B5gAJAD0AuAAARVi4AAMvG7kAAwAIPlm4AABFWLgACC8buQAIAAQ%2BWbkABgAB9LgAANC4AAMQuQABAAH0uAAF0DAxNwEjNSEVASEVIR8BAOQBTP8AAQj%2BkCwBd0Ms%2FolDAAAA%2F%2F8AAwAAAh0DMgImAAQAAAAHAOEBDwAA%2F%2F8AAwAAAh0DMgImAAQAAAAHAOMBDwAA%2F%2F8AAwAAAh0DMgImAAQAAAAHAOUBDwAA%2F%2F8AAwAAAh0DMwImAAQAAAAHAOcBDwAA%2F%2F8AAwAAAh0DLQImAAQAAAAHAOoBDwAA%2F%2F8AAwAAAh0DawImAAQAAAAHAOwBDwAAAAIACAAAAwUCkAAFABUAfAC4AABFWLgADS8buQANABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4AAgvG7kACAAEPlm6AAIADQAMERI5ugAJAA0ADBESObgACS%2B5AAUAAfS4AAgQuQAGAAH0uAANELkADwAB9LoAFAANAAgREjm4ABQvuQASAAH0MDEBESMGDwEFFSE1IwcjASEVIRUzFSMVAZEENTY9AiD%2BjM5jWAFYAZv%2B6ujoAQIBTGtrdrtHv78CkEbOR%2B7%2F%2FwA0%2FysCGwKcAiYABgAAAAcA7gFXAAD%2F%2FwBaAAAB3gMyAiYACAAAAAcA4QEcAAD%2F%2FwBaAAAB3gMyAiYACAAAAAcA4wEcAAD%2F%2FwBaAAAB3gMyAiYACAAAAAcA5QEcAAD%2F%2FwBaAAAB3gMtAiYACAAAAAcA6gEcAAD%2F%2FwAAAAAAtgMyAiYADAAAAAcA4QCDAAD%2F%2FwBQAAABBgMyAiYADAAAAAcA4wCDAAD%2F%2F%2F%2F7AAABCwMyAiYADAAAAAcA5QCDAAD%2F%2F%2F%2F8AAABCgMtAiYADAAAAAcA6gCDAAD%2F%2FwBaAAACLQMzAiYAEQAAAAcA5wFGAAD%2F%2FwA0%2F%2FQCZQMyAiYAEgAAAAcA4QFMAAD%2F%2FwA0%2F%2FQCZQMyAiYAEgAAAAcA4wFMAAD%2F%2FwA0%2F%2FQCZQMyAiYAEgAAAAcA5QFMAAD%2F%2FwA0%2F%2FQCZQMzAiYAEgAAAAcA5wFMAAD%2F%2FwA0%2F%2FQCZQMtAiYAEgAAAAcA6gFMAAAAAwAy%2F%2BICawKuAAsAFQAwAIUAuAAARVi4ACwvG7kALAAQPlm4AABFWLgAHi8buQAeAAQ%2BWboAAAAeACwREjm5AAMAAfS6AAsALAAeERI5ugAMACwAHhESObgALBC5AA4AAfS6ABUAHgAsERI5ugAWACwAHhESOboAIQAeACwREjm6ACQAHgAsERI5ugAuACwAHhESOTAxNx4BMzI%2BAjU0Ji8BJiMiDgIVFBcBHgEVFA4CIyImJwcnNy4BNTQ%2BAjMyFzcX0BlAJixHMxwRECIzTCxIMxwiAXgfIilLZz00WSM%2FLkYgIilLZz5oRz8udBodJkdjPjBQIDI2JURiPWBEAYorc0hPf1kwISBTJFssdkhPfVcuP1EjAAIANAAAAx4CkAASABsAVQC4AABFWLgAAy8buQADABA%2BWbgAAEVYuAAOLxu5AA4ABD5ZuAADELkAGAAB9LgABdC6AAoAAwAOERI5uAAKL7kACAAB9LgADhC5ABcAAfS4AAzQMDETNDYzIRUhFTMVIxUhFSEiLgI3FBY7AREjIgY0qJkBn%2F7q6OgBIP5TS3VSK1Z6dzAwd3oBS52oRs5H7kctVXtOfokCCIQAAP%2F%2FAFf%2F9AIuAzICJgAYAAAABwDhAUIAAP%2F%2FAFf%2F9AIuAzICJgAYAAAABwDjAUIAAP%2F%2FAFf%2F9AIuAzICJgAYAAAABwDlAUIAAP%2F%2FAFf%2F9AIuAy0CJgAYAAAABwDqAUIAAP%2F%2F%2F%2F8AAAHdAzICJgAcAAAABwDjAO4AAAACACEAAAJKApAADAAbAFkAuAAARVi4ABsvG7kAGwAQPlm4AABFWLgAFi8buQAWAAQ%2BWbkAAAAB9LgAGxC5AAYAAfS6AAoAGwAWERI5uAAKL7kACQAB9LgAChC4ABjQuAAJELgAGdAwMSUyNjU0JisBFTMVIxUTMhYVFA4CKwERIzU3EQEOc3Nzc0uVlVGYnihOckqoT09Ein19hNwv%2FQJMqJ1Oe1UtAUErBAEgAAAAAAIAWgAAAhUCkAAQABkAOQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAQLxu5ABAABD5ZuwAZAAEADgAEK7sAAgABABgABCswMRMzFTMyHgIVFA4CKwEVIzcyNjU0JisBEVpTdjZaPyMjQFk2dlO%2FVlNUVWwCkG4ULkk2NE0yGJbaQEdHNv78AP%2F%2FADr%2F9AG3AsoCJgAeAAAABwDgAQ0AAP%2F%2FADr%2F9AG3AsoCJgAeAAAABwDiAQ0AAP%2F%2FADr%2F9AG3AsoCJgAeAAAABwDkAQ0AAP%2F%2FADr%2F9AG3Aq0CJgAeAAAABwDmAQ0AAP%2F%2FADr%2F9AG3Aq4CJgAeAAAABwDpAQ0AAP%2F%2FADr%2F9AG3AtcCJgAeAAAABwDrAQ0AAAADADr%2F9ALrAfIADgBAAEcAmwC4AABFWLgAEi8buQASAAg%2BWbgAAEVYuAAYLxu5ABgACD5ZuAAARVi4ADIvG7kAMgAEPlm4AABFWLgALC8buQAsAAQ%2BWbgAMhC5AAMAAfS6ADgAMgASERI5uAA4L7kACgAB9LoAHwAYACwREjm4AB8vuAAsELkAJQAB9LgAEhC5AD0AAfS4ABgQuQBEAAH0uAAfELkARwAB9DAxNxQWMzI2Ny4BJzUOAwM%2BATMyFhc%2BATMyHgIVFAchHgMzMjY3Fw4BIyImJw4BIyImNTQ2NzQuAiMiBgcFNCYjIgYHizEkIlAhCAoBOlEzFzwiYDY2Rg8dUTItRS8YA%2F7FARkoNh8jOBseIEwyPVIcMmUvPlGOmAgXJh4oSB0CMzs4M0kHhCokJyQTNRwZCBYeJwEYFik3MDA3IDxVNBwSJj4sGBcRORQeNyQtLkhCUFURFywiFSAUZEtQU0gAAAD%2F%2FwAu%2FysBsAHyAiYAIAAAAAcA7QEQAAD%2F%2FwAu%2F%2FQBygLKAiYAIgAAAAcA4AEJAAD%2F%2FwAu%2F%2FQBygLKAiYAIgAAAAcA4gEJAAD%2F%2FwAu%2F%2FQBygLKAiYAIgAAAAcA5AEJAAD%2F%2FwAu%2F%2FQBygKuAiYAIgAAAAcA6QEJAAD%2F%2FwAMAAAAvALKAiYAZwAAAAYA4HsAAAD%2F%2FwA6AAAA6gLKAiYAZwAAAAYA4nsAAAD%2F%2F%2F%2F6AAAA%2FALKAiYAZwAAAAYA5HsAAAD%2F%2F%2F%2F0AAABAgKuAiYAZwAAAAYA6XsAAAAAAQBSAAAApAHmAAMAJQC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAACLxu5AAIABD5ZMDETMxEjUlJSAeb%2BGgAA%2F%2F8AUgAAAdcCrQImACsAAAAHAOYBJAAA%2F%2F8ALv%2F0AfACygImACwAAAAHAOABDwAA%2F%2F8ALv%2F0AfACygImACwAAAAHAOIBDwAA%2F%2F8ALv%2F0AfACygImACwAAAAHAOQBDwAA%2F%2F8ALv%2F0AfACrQImACwAAAAHAOYBDwAA%2F%2F8ALv%2F0AfACrgImACwAAAAHAOkBDwAAAAMALv%2FpAfAB%2FQAJABMALgBJALgAAEVYuAApLxu5ACkACD5ZuAAARVi4ABwvG7kAHAAEPlm6AAAAHAApERI5uQACAAH0ugAKACkAHBESObgAKRC5AAwAAfQwMTcWMzI%2BAjU0LwEmIyIOAhUUFwEeARUUDgIjIicHJzcuATU0PgIzMhYXNxeyJzYfNScVGBslOB81JhYXASQZHSU%2BUS1PPDElNhkdJT5RLSZIHTIkXScbMUQpQy8nKBsxRSlDLgEaIFc2PF9BIjE8HUEgVTY9X0IiGRk9HQAAAAMALv%2F0AyEB8gATADwAQwBxALgAAEVYuAAZLxu5ABkACD5ZuAAARVi4ADgvG7kAOAAEPlm5AAUAAfS4ABkQuQAPAAH0uAAZELgAH9C4ADgQuAAz0LoAJgAfADMREjm4ACYvuAAzELkALAAB9LgAHxC5AEAAAfS4ACYQuQBDAAH0MDE3FB4CMzI%2BAjU0LgIjIg4CBzQ%2BAjMyFhc%2BATMyHgIVFAchHgMzMjY3Fw4BIyImJwYjIi4CJTQmIyIGB4IUJDIeHjIkFBQkMh4eMiQUVCQ8UCw4XhocWTYtRjAZA%2F7BARkpNx8jOhseIE4yOV4cOXosTzwjAqs%2BODNKB%2FIqRDEbGzFEKipFMhsbMkUqPV9CIj48OUEgPFU0HBImPiwYFxE5FB5AOXkiQV9gS1BTSAABAFL%2F9AIjAtIANwBkALgAAEVYuAADLxu5AAMAEj5ZuAAARVi4ADcvG7kANwAEPlm4AABFWLgAGS8buQAZAAQ%2BWboADQAZAAMREjm5ACAAAfS6ACMAGQADERI5ugAvABkAAxESObgAAxC5ADIAAfQwMRM0NjMyHgIVFA4CFRQeBBUUDgIjIiYnNx4BMzI2NTQuBDU0PgI1NCYjIgYVESNSZl4nPSoVHCMcHSwzLB0WKjslKkQfIRozHSoqHSwzLB0bIRwpKjY7UgIDXnEXKDUeJjUsKRoYIBkaJDYoIDYoFxoXOhYVMCAdJhwZIC0jIjAsLiAmMU1O%2FgwAAP%2F%2FAEv%2F9AHOAsoCJgAyAAAABwDgARAAAP%2F%2FAEv%2F9AHOAsoCJgAyAAAABwDiARAAAP%2F%2FAEv%2F9AHOAsoCJgAyAAAABwDkARAAAP%2F%2FAEv%2F9AHOAq4CJgAyAAAABwDpARAAAP%2F%2FAAz%2FLwHHAsoCJgA2AAAABwDiAPIAAP%2F%2FAAz%2FLwHHAq4CJgA2AAAABwDpAPIAAAACADX%2F9AHlAtoAFAA4AFkAuAAARVi4ADMvG7kAMwASPlm4AABFWLgAHS8buQAdAAQ%2BWbsAJwABAAsABCu6ADAALQADK7gAHRC5AAAAAfS4AC0QuAAV0LgAMBC4ADPcuAAwELgANtAwMSUyPgI1NCYnLgEjIg4CFRQeAhMeARUUDgIjIi4CNTQ%2BAjMyFhcuAScHJzcmJzceARc3FwEPIjIiEQEBIUIiITQkExYnMms8TB85TzEqTjwkIDdLLCZGGg43Jo0YfzQ8JiRGII4YOB00SSwOHA0sHhgsOyImPSsYAiU9qHc8Y0cnID1XNjNTOyAgIj5cJkkpQSggNBQsG0kpAAAAAAIAUv8zAfsCyAAWACcAVwC4AABFWLgACC8buQAIAAg%2BWbgAAEVYuAACLxu5AAIAEj5ZuAAARVi4AAEvG7kAAQAGPlm4AABFWLgAEi8buQASAAQ%2BWbkAGgAB9LgACBC5ACQAAfQwMRcjETMVBz4BMzIeAhUUDgIjIiYnFzUeATMyPgI1NC4CIyIGB6RSUgEgTCgwSTIZIjpMKiNCIQEhPhgeMyUVDh8xIh8%2FJM0DlcJTGiUjQVs5PmFEIxwaU5UcFxsxSC0oQi8aIiAAAAEAHgAAAlsC1AAoAHwAuAAARVi4ABIvG7kAEgAIPlm4AABFWLgAJS8buQAlABI%2BWbgAAEVYuAAOLxu5AA4ABD5ZuAAlELkAAgAB9LgAEhC4ACHQuAAG0LgAEhC5AA8AAfS4AAvQuAAH0LgADhC4AArQuAASELgAEdC4ACUQuAAW0LkAHAAB9DAxASYjIh0BMxUjESMRIxEjESM1NzU0NjMyFhcHJiMiBh0BMzU0NjMyFhcCSh0aRWdnUspSQkJLTBgvEhEeIyQoykVJFykRAoUMXk1D%2Fl0Bo%2F5dAaM%2BBUBMWAoIPg0zMD5NS1YJBwAAAAEAHv%2F0AkUC1AArAIkAuAAARVi4ABAvG7kAEAAIPlm4AABFWLgAFC8buQAUABI%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4AAMvG7kAAwAEPlm4ABAQuQANAAH0uAAJ0LgAEBC4AA%2FQuAAPL7gAFBC5ABoAAfS4ABAQuAAe0LgAItC4AAkQuAAj0LgAAxC5ACgAAfQwMSUOASMiLgI1ESMRIxEjNTc1NDYzMhYXByYjIh0BMzczFTMVIxEUFjMyNjcCRRQvFyc1IQ6uUkJCRUkXKRESGxxEsgpEhIQiKg0eDAYHCxgqPCQBDf5dAaM%2BBU1LVgkHPwxeTYiIQ%2F7yLTEIBQAAAwAg%2F%2FQCUgKcAA0AGwBJAIwAuAAARVi4ADQvG7kANAAQPlm4AABFWLgAIi8buQAiAAQ%2BWbgAAEVYuAAcLxu5ABwABD5ZugA%2FAB8AAyu4ACIQuQAFAAH0ugAIAB8APxESOboACwAiADQREjm4AAsvuAAR3LgANBC5ABkAAfS6ACwACwARERI5ugA8AAsAERESOboARgAfAD8REjkwMTcUHgIzMjY3LgEnDgETFBYXPgM1NCYjIgYBLgEnDgEjIi4CNTQ%2BAjcuATU0PgIzMhYVFA4CBx4BFz4BNzMOAQceARdwFCMvGyI%2BHTBZIyMvTREOFikfEh0hJSwBfyNMKCZdOi1JNR0VJC8ZFBcWKDgiPUQaKjUbIFcvHi8PTRQ4JyI%2BG68bLSARHBkqZDUcPQEtGzoeDx8hJRYdKzb9yQolHCIpGzBDKCE2LicRKU0kITgqGEg6IDYvKRQzXicpYDlBdjQXIAgAAAAAAgAs%2F%2FQBxQKKAAsAHQA1ALgAAEVYuAAGLxu5AAYADj5ZuAAARVi4AAAvG7kAAAAEPlm5AAwAAfS4AAYQuQAWAAH0MDEXIiY1NDYzMhYVFAYnMj4CNTQuAiMiDgIVFBb5YWxsYWBsbGAcLSESEiEtHBwuIRJFDKyhoaiooaGsQh9BZUZGZD8eHj9kRox%2FAAAAAQBPAAABtwJ%2BAAwAQwC4AABFWLgABy8buQAHAA4%2BWbgAAEVYuAAMLxu5AAwABD5ZuQABAAH0uAAHELkABAAB9LkAAgAB9LgAARC4AAnQMDE3MxEjNT4BNzMRMxUhT5J0LEEaP4T%2BmEQB1jUIFxD9xkQAAAABACQAAAHEAooAHQA9ALgAAEVYuAAPLxu5AA8ADj5ZuAAARVi4ABwvG7kAHAAEPlm5ABoAAfS4ABfQuAAA0LgADxC5AAgAAfQwMTc%2BAzU0JiMiBgcnPgEzMhYVFA4CBz4BOwEVIShIcEwoPD0oRBwvKFo%2FWWYnRV85GjgZuf5kMUh0Y1MnN0YtIC8sNWdVLVthaTsCBEcAAAEAGv%2F0Ab4CigAzAFMAuAAARVi4ABsvG7kAGwAOPlm4AABFWLgALi8buQAuAAQ%2BWbkAAwAB9LoACwAbAC4REjm4AAsvuQAMAAH0uAAbELkAFAAB9LoAJAAMAAsREjkwMTceATMyNjU0LgIjNTI%2BAjU0JiMiBgcnPgEzMh4CFRQGBxUeAxUUDgIjIi4CJ0QdTTk6ShUwTjkzRSsSOzMoQx0sJVk5KkYzHEA0HTImFSE5TCwmPzQpEIQeLj82HC8iEj8SICwZLzYkHTQjLRYpPCc6ShQEBxspNiEqRC8ZDxkgEgAAAAIAEQAAAdUCfgAJABQAVwC4AABFWLgAEi8buQASAA4%2BWbgAAEVYuAANLxu5AA0ABD5ZuwAOAAEAAAAEK7gAEhC4AATcuAAAELgACdC4AA4QuAAL0LgACRC4ABDQuAAAELgAE9AwMSU1NDY3Iw4BDwEFIxUjNSE1ATMRMwEwAwIEDBoOlQFtV07%2B4QERXFfyuRpHGhcsF9pCsLA2AZj%2BdAABABn%2F9AHBAn4AJgBHALgAAEVYuAAQLxu5ABAADj5ZuAAARVi4ACEvG7kAIQAEPlm5AAMAAfS6ABcAEAAhERI5uAAXL7gAC9y4ABAQuQASAAH0MDE3HgEzMj4CNTQmIyIGBycTIRUjBz4BMzIeAhUUDgIjIi4CJ0EcTTgdMyYWSj4hLx0sFQE%2F9xEXLh0pSDYfJDxNKiY%2FMykQgR0sFSY2IUJKFBMcATNHvQwOGDFLNDRQNx0PGB8RAAAAAAIAMP%2F0AckCigANAC4AQwC4AABFWLgAKy8buQArAA4%2BWbgAAEVYuAAhLxu5ACEABD5ZuwAZAAEACAAEK7gAIRC5AAAAAfS4ACsQuQARAAH0MDElMj4CNTQmIyIGBx4BEy4BIyIOAgc%2BATMyFhUUDgIjIi4CNTQ%2BAjMyFhcBDBgoHhE6PB5HIAhHwBQ3HiE8LhwBHlAnU2MeNEQnL1A7IihEVzA0Sxs1FCUzID9IJy1eYQHeFxscQGdMJStiYy5LNh4mTXNNYIdVJycdAAEALAAAAccCfgAPADMAuAAARVi4AAcvG7kABwAOPlm4AABFWLgAAC8buQAAAAQ%2BWbgABxC5AAUAAfS4AAnQMDEzPgM3ITUhFQ4DByOxBBgrQy%2F%2BwgGbOUcqEwRVWpaHfkJHM0iEiZldAAAAAAMAKf%2F0AcgCigAPAB0ARQBXALgAAEVYuAAsLxu5ACwADj5ZuAAARVi4AEEvG7kAQQAEPlm5AAUAAfS6AA0AQQAsERI5uAANL7gAENC4ACwQuQAWAAH0uAANELgAI9y4ABAQuAA23DAxNxQeAjMyNjU0LgInDgE3PgE1NCYjIgYVFB4CBzQ%2BAjc1LgE1ND4CMzIeAhUUDgIHFR4DFRQOAiMiLgJzFSUyHThFHDA%2FIiYztCAjOjUtOhgpNeEVISsXIzYcMEInKkIvGREZHw8VKB8THjZMLi1NNyCrGywhEj4yHywhGw4aRYUdQCMwQTgvHSkgGcQfNSshDAQZRzMlPCsYGS0%2FJRkuKCALBAwfJzIgJD4uGhovQAACACj%2F9AHAAooADQAuAEMAuAAARVi4ACEvG7kAIQAOPlm4AABFWLgAKy8buQArAAQ%2BWbsAAAABABkABCu4ACEQuQAGAAH0uAArELkAEQAB9DAxEzI2Ny4BIyIOAhUUFgceATMyPgI3DgEjIiY1ND4CMzIeAhUUDgIjIiYn6x9HIAhIPRcpHhE6ThQ3HiI8LhwBHlAoU2IeM0UmL1E7IShEVzAzTRoBNicuXmAUJTQfP0jLFxwcQWhNJixiYy5LNh4mTXNNYIdVJyYdAAABAEH%2F9AC4AHIACwAYALgAAEVYuAAJLxu5AAkABD5ZuAAD3DAxNzQ2MzIWFRQGIyImQSMZGCMjGBkjMh0jIx0bIyMAAAEAL%2F9WAMYAcgARABgAuAAARVi4AAUvG7kABQAEPlm4AAvcMDEXPgE1BiMiJjU0NjMyFhUUBgcvKjADBxgjJBkgJUY9ehM%2BKQEdHBsfNC1BYBoA%2F%2F8AQf%2F0ALgB2wInAIYAAAFpAAYAhgAA%2F%2F8AL%2F9WAMYB2wInAIYAAAFpAAYAhwAAAAIAVf%2F0AMwCngAFABEAGgC4AABFWLgADy8buQAPAAQ%2BWbkACQAB9DAxEyczBwMjBzQ2MzIWFRQGIyImaQJTAgs5HyMZGCMjGBkjAkBeXv6GlB0jIx0bIyMAAAAAAgBV%2F0gAzAHyAAUAEQAaALgAAEVYuAAPLxu5AA8ACD5ZuQAJAAH0MDEfASM3EzM3FAYjIiY1NDYzMha4AlMCCzkfIxgZIyMZGCNaXl4BepQdIyMdGyMjAAIAJv%2F0AXkCqgAbACcAKAC4AABFWLgAJS8buQAlAAQ%2BWbsAEQABAAoABCu4ACUQuQAfAAH0MDE3Jj4ENTQmIyIGByc%2BATMyFhUUDgQXBzQ2MzIWFRQGIyImoAYRHiciFzEwITsXLyBSNk5dGCMnIRIEXSIZGSMjGRkixic%2FNS4tLhsoOR8bKyQvVUshNjAvMjkjlB0jIx0bIyMAAAIAMP88AYMB8gAbACcAKAC4AABFWLgAJS8buQAlAAg%2BWbsACgABABEABCu4ACUQuQAfAAH0MDEBFg4EFRQWMzI2NxcOASMiJjU0PgQnNxQGIyImNTQ2MzIWAQkFEB4nIhcwMSE6FzAgUjZOXRgjJyASBF4jGBkjIxkYIwEgJz81Li0vGig4HhsrIzBVSyE2MC8yOSOUHSMjHRsjIwAAAAABAFABrwCoArIABQALALoAAgAEAAMrMDETJzMPASNTA1gDEDICVlxcpwAA%2F%2F8AUAGvAVgCsgAmAI4AAAAHAI4AsAAAAAEAOQGsALsCuAARAA0AuwAFAAEACwAEKzAxEw4BFTYzMhYVFAYjIiY1NDY3uyYmAwYUIR4XHiE2NAKRGTgrARoZGh0uLDxYHgAAAAABAD8BrwDBArsAEQANALsACwABAAUABCswMRM%2BATUGIyImNTQ2MzIWFRQGBz8mJQMFFSAeFx0iNzQB1Rk4LAEaGBoeLyw8Vx4AAAD%2F%2FwA5AawBawK4ACYAkAAAAAcAkACwAAD%2F%2FwA%2FAa8BcQK7ACYAkQAAAAcAkQCwAAD%2F%2FwA%2F%2F3AAwQB8AgcAkQAA%2FcEAAP%2F%2FAD%2F%2FcAFxAHwAJwCRAAD9wQAHAJEAsP3BAAAAAQAtAEIA2QG2AAYACwC6AAIABgADKzAxNzU3FwcXBy2IJHZ2JN0%2Bmx6cnhwAAAAAAQA2AEIA4gG2AAYACwC6AAIABQADKzAxNyc3FxUHJ6x2I4mJI%2FycHps%2BmxwAAAD%2F%2FwAtAEIBdwG2ACYAlgAAAAcAlgCeAAD%2F%2FwA2AEIBgAG2ACYAlwAAAAcAlwCeAAAAAQApANsBDwEaAAMADQC7AAEAAQACAAQrMDETMxUjKebmARo%2FAAAA%2F%2F8AKQDbAQ8BGgIGAJoAAAABACkA3wG3ARgAAwANALsAAQABAAIABCswMRMhFSEpAY7%2BcgEYOQAAAQApAN8C9wEYAAMADQC7AAEAAQACAAQrMDETIRUhKQLO%2FTIBGDkA%2F%2F8AQQEDALgBgQIHAIYAAAEPAAAAAQAoAI8BCAGAABMACwC6AAoAAAADKzAxNyIuAjU0PgIzMh4CFRQOApgXKB8SEh8oFxYpHxISHymPESAsGxstHxISHy0bGywgEQAAAAEADP%2BCAej%2FuQADAA0AuwAAAAEAAQAEKzAxBRUhNQHo%2FiRHNzcAAAABAFL%2FUAEJAtwADgALALoABgAAAAMrMDEXLgE1NDY3Fw4BFRQWFwfWPkZGPjM6OTk6M7Bk3oSE3WUYYNtzc9tgGAAAAAEAJv9QAN0C3AAOAAsAugAHAA0AAyswMRc%2BATU0Jic3HgEVFAYHJyY6OTk6Mz5GRj4zmGDbc3PbYBhl3YSE3mQYAAAAAQBe%2F2gBEQLEAAcAFwC7AAUAAQAGAAQruwABAAEAAgAEKzAxEzMVIxEzFSNes3V1swLEL%2F0CLwABAB%2F%2FaADRAsQABwAXALsAAAABAAUABCu7AAQAAQABAAQrMDEXESM1MxEjNZN0srJpAv4v%2FKQvAAEAIv9oARECxAAxACsAuwAAAAEAAQAEK7sAHAABAB0ABCu7ABAAAQAPAAQrugAoAA8AEBESOTAxBRUjIiY1ND4CNTQuAiM1Mj4CNTQmNTQ2OwEVIyIGFRQWFRQGBxUeARUUBhUUFjMBES07OgMDAwgTIhkZIhMICTo7LRspGwYcICAcBhspaS84TRsxLi4ZDxsWDjQOFRwOM1g3TTgvKjEuVDMxMwkECTQwM1QuMSoAAQAf%2F2gBDQLEADMAKwC7AAAAAQAxAAQruwAWAAEAEwAEK7sAIQABACIABCu6AAoAIgAhERI5MDEXMjY1NCY1NDY3NS4BNTQ2NTQmKwE1MzIeAhUUBhUUFhcVIg4CFRQeAhUUDgIrATU5KRsFGyAgGwUbKRosHiwdDgkkMhkhFAgDAwMOHSweLGkqMS5UMzA0CQQJMzEzVC4xKi8NHjMnN1gzHS8BNA4WGw8ZLi4xGyczHg0vAAAAAAEACv9gAVECxgADABgAuAAARVi4AAAvG7kAAAASPlm4AALcMDEBMwEjARU8%2FvU8Asb8mgABAFz%2FBgCWAu4AAwALALoAAQACAAMrMDETMxEjXDo6Au78GAABAA7%2FYAFUAsYAAwAYALgAAEVYuAAALxu5AAAAEj5ZuAAC3DAxEzMBIw47AQs7Asb8mgAAAgBc%2FwYAlgLuAAMABwALALoAAQAFAAMrMDETMxEjFxEjEVw6Ojo6Au7%2BNU3%2BMAHQAAAAAAEAOgGkAWgCyAAOABQAuAAARVi4AAUvG7kABQASPlkwMRM3JzcXNzMXNxcHFwcnB2I5YQ9mCTEJZw9hOCdHRwHBXiguGWxrGC4oXh1WVgAAAgAt%2F8ABxAKsAA8ARwAXALsALwABACgABCu7AEQAAQATAAQrMDElPgE1NC4CJw4BFRQeAhMuASMiBhUUHgQVFAYHHgEVFA4CIyImJzceATMyNjU0LgQ1NDY3LgE1ND4CMzIWFwFAHR8oPEcfHSAoPUdMGDYhKiUpPkc%2BKS8mDhAYKzsjNlgfMhk6KCgtKT1IPSkwJg8REyc4JjBNHcEOJiEiLCEcEhAoHyErIB0BaxQaJRobJB4eKz0uMDsWEScaHjIkFSYhLRgcKB0cJh4dKj0uLEAVECgaGi8kFSIXAAACACn%2FsAHQApAAAwAQACUAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgADi8buQAOABA%2BWTAxATMRIwMiLgI1ND4COwERAXxUVFc2XUMmJEFYNCwCkP0gATIZNVI5O1EzFv5SAAAAAwAx%2F%2FUCtwKNABMAJwBFADMAuwA6AAEAQQAEK7sALQABADQABCu4AC0QuAAj3LkABQAB9LgAQRC4ABncuQAPAAH0MDETND4CMzIeAhUUDgIjIi4CNxQeAjMyPgI1NC4CIyIOAhc0PgIzMhYXBy4BIyIGFRQWMzI2NxcOASMiLgIxNFh2QUF1WTQ0WXVBQXZYNC8sS2Q5OWRLLCxLZDk5ZEssZh8zQyQqOxgjFCkaN0NBNiAwFh4cPi0mQjIcAUNMelYuLlZ6TE17Vy8vV3tNQmtNKipNa0JBa0wpKUxrQStGMhohGCcUFUs7Qk0ZEyoYIRszSQAAAAAEABcBPwGQAskAEwAnADUAPQBXALgANC%2B4ACkvuAA0ELgAFNy5AAAAAfS4ACkQuAAe3LkACgAB9LoAMgA0ACkREjm4ADIvuQA2AAH0ugAvADYAMhESObgANBC4ADHQuAApELkAOwAB9DAxEyIuAjU0PgIzMh4CFRQOAicyPgI1NC4CIyIOAhUUHgIDMzIWFRQGBxcjJyMVIzcyNTQmKwEV0ydEMx4eM0QnJ0UzHh4zRScfNygXFyg3HyA2JxcXJzYoTCAuFBEuLiMpKUMrEhccAT8dNEgsLEg0HR00SCwsSDQdJRcqOyQjOysYGCs7IyQ7KhcBCB0kEh8GU0ZGZiIPEkMAAAIAM%2F9lAxwChgBFAFQAPwC7ADsAAQBBAAQruwAnAAEADwAEK7sASQABABYABCu7AB4AAQBQAAQruwAFAAEAMQAEK7oAIgBQAB4REjkwMTc0PgIzMh4CFRQOAiMiJicjDgEjIiY1ND4CMzIWFzM3MwcGMzI%2BAjU0LgIjIg4CFRQeAjMyNjcXBiMiLgIlFBYzMjY%2FAS4BIyIOAjNDc5dUTHlVLiU6RyIpOQUCGUAhM0UbMkcsGigOAgs3Jx5UGC8nGCNGaERDfmI7LVBtQC5SIhZVaUqAXzcBCCgeFS0aHQ4eFB4vIRHLZKR0PzBXekpCY0MiJiYdJ0hFKFNDKhcZKMh1HDVNMTxnSio3ZI5YSXJOKRkUMTMuW4ZXMCocH58XEyAyPAACACMAAAHTAooAGwAfAJsAuAAARVi4AAgvG7kACAAOPlm4AABFWLgADC8buQAMAA4%2BWbgAAEVYuAAWLxu5ABYABD5ZuAAARVi4ABovG7kAGgAEPlm7AAMAAQAAAAQruwAHAAEABAAEK7gABxC4AArQuAAHELgADtC4AAQQuAAQ0LgAAxC4ABLQuAAAELgAFNC4AAAQuAAY0LgAAxC4ABzQuAAEELgAHdAwMTcjNTM3IzUzNzMHMzczBzMVIwczFSMHIzcjByMTNyMHc1BXElVcFzUXhRg1GFFXElVcGTUYhBk22hKEEsw5lDq3t7e3OpQ5zMzMAQWUlAAAAP%2F%2FAFcBuADsAz4CBwC3AAABuAAA%2F%2F8AKAG4AUADSgIHALgAAAG4AAD%2F%2FwAjAawBPwNKAgcAuQAAAbgAAP%2F%2FACoBuAFQAz4CBwC6AAABuAAAAAIAI%2F%2F0AU0BkgALABcAKAC4AAYvuAAARVi4AAAvG7kAAAAEPlm5AAwAAfS4AAYQuQASAAH0MDEXIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBa4RFFRRENSUkMmMDAmJzAwDGxkY2trY2RsM09OTk1NTk5PAAAAAQBXAAAA7AGGAAgAIgC4AAYvuAAARVi4AAgvG7kACAAEPlm4AAYQuQAAAAH0MDETIzU%2BATczESOsVSEsFDRAATQqBhMP%2FnoAAQAoAAABQAGSABoALAC4AA8vuAAARVi4ABkvG7kAGQAEPlm5ABcAAfS4AADQuAAPELkACAAB9DAxNz4DNTQmIyIGByc%2BATMyFhUUDgIHMxUhNC1GLhgoIxkqESYXQyg7RxYnNR%2Bl%2FvQlKUE2LxYmLCEYIyIqQD4cNDU4IDcAAAABACP%2F9AE%2FAZIAKgA%2BALgAFy%2B4AABFWLgAJy8buQAnAAQ%2BWboACgAJAAMruAAnELkAAwAB9LgAFxC5ABAAAfS6AB8ACQAKERI5MDE3HgEzMjY1NCYjNTI2NTQmIyIGByc%2BATMyHgIVFAYHHgEVFA4CIyImJ04SMh8gLkA5MzcnIBYoEScaPSkZLSIUJh4hMxYmMxwwShdhGx8kIiIjKSgeHCIbFCIdIw4bJxkjLw4IMScbKx8QKyEAAgAqAAABUAGGAAUAEABMALgADi%2B4AABFWLgACS8buQAJAAQ%2BWbsAAAABAAoABCu4AA4QuQACAAH0uAAAELgABdC4AAoQuAAH0LgABRC4AAzQuAAAELgAD9AwMTc1NyMPARcjFSM1IzU3MxUz3AQEMj3jOjqypEg6lkZtUWIuaGgh%2FfD%2F%2FwAlAQIBKgJUAgYAvQAA%2F%2F8AHgECAU4CVAIGAL4AAAACACUBAgEqAlQAGQAiADsAuAAAL7gAEC%2B7AAYAAQAdAAQruAAQELkACQAB9LgAABC4ABXQuAAAELkAGgAB9LoAFwAAABoREjkwMRMiJjU0NjcuASMiBgcnPgEzMhYdASMnIw4BJzI3NQ4BFRQWiC02X2gBGiMaNxQXGUUnPDcyBwQUMg0nK009HgECNCs1NwogKhUNKhAbRkDEJRIbMihVCSYcGhgAAAACAB4BAgFOAlQAEwAfABsAuAAKL7gAAC%2B5ABQAAfS4AAoQuQAaAAH0MDETIi4CNTQ%2BAjMyHgIVFA4CJzI2NTQmIyIGFRQWth83KhgYKjcfHzcqGBgqNx8qLi4qKi8vAQIXKz8oKD8rFxcrPygoPysXM0E1NkBANjVBAAAAAgApAa0BIwKtABMAHwAXALsAFAABAAAABCu7AAoAAQAaAAQrMDETIi4CNTQ%2BAjMyHgIVFA4CJzI2NTQmIyIGFRQWphktIxQUIy0ZGS0jFBQjLRkhKiohISoqAa0SIS8dHi8iEhIiLx4dLyESLi4jJS4uJSMuAAAAAgAaAGcB1wItACEANQAoALgAAEVYuAAMLxu5AAwACj5ZuwAnAAEAHgAEK7gADBC5ADEAAfQwMT8BLgE1NDY3JzcXNjMyFhc3FwceARUUBgcXBycOASMiJwc3FB4CMzI%2BAjU0LgIjIg4CGkARExMRQCxEMD8dOhdELEERFBQRQSxEFzodQC9EPBMgLBgYKyATEyArGBgsIBOUQRc6IyM7F0ItRiUTEkYtQhc7IyM6F0EtRRMTJkXiHjEkExMkMR4eMSQTEyQxAAABADT%2FkgG1AuwALQBdALgAAEVYuAAnLxu5ACcADj5ZuAAARVi4ABMvG7kAEwAEPlm4ACcQuQADAAH0ugAGABMAJxESObgAExC4ABDQuAATELkAGgAB9LoAHQAnABMREjm4ACcQuAAq0DAxAS4BIyIGFRQeBBUUBgcVIzUuASc3HgEzMjY1NC4ENTQ2NzUzFR4BFwF8HDUpLjYpPkk%2BKVNIPDBaICYgTS44Nyk%2BST4pT0I8MEMbAgwbHjQsJC4jIS9FNkhcCmVjBSsdORwnOC8oNSciLD8xQ1kLZGMFKh0AAAEANQAAAcUCigAsAFkAuAAARVi4ABUvG7kAFQAOPlm4AABFWLgAAi8buQACAAQ%2BWbkAAAAB9LoAJAAVAAIREjm4ACQvuAAK0LgAJBC5ACMAAfS4AAvQuAALL7gAFRC5ABwAAfQwMSUVITU%2BATU0JicjNTczLgE1ND4CMzIWFwcuASMiBhUUFhczFSMeARUUBgcVAcX%2BcTM3BANkQxIKERsxRCo2SxowEzAiNjkPCZ%2BSAgMgHkdHMhxfOQ4bDjQEID0gKkQwGisgLxceQTQgOyA4DhsPNUYfBAAAAAABABcAAAHaAn4AHQCEALgAAEVYuAAdLxu5AB0ADj5ZuAAARVi4AAkvG7kACQAOPlm4AABFWLgAFC8buQAUAAQ%2BWboABAAdABQREjm6ABkAHQAUERI5uAAZL7kADAAB9LgAGRC4AA3QuAAZELgAGNC4ABgvuAAQ0LgAGBC5ABUAAfS4ABHQuAAZELkAGwAB9DAxExceARczPgE%2FATMDMxUjFTMVIxUjNSM1MzUjNTMDbU4PHRAEER0PTlSkjqOjo1KioqKNowJ%2BqyFDIyNDIav%2BwC9BMJ6eMEEvAUAAAQAX%2F%2FQB6wKKADUAbQC4AABFWLgAGS8buQAZAA4%2BWbgAAEVYuAADLxu5AAMABD5ZuwAtAAEALgAEK7gALhC4AAnQuAAtELgACtC4AC0QuAAl3LgAEtC4ACUQuQAkAAH0uAAT0LgAGRC5ACAAAfS4AAMQuQAyAAH0MDElDgEjIi4CJyM1NyY0NTwBNyM1Nz4DMzIWFwcuASMiBgczFSEGFBUcARczFSMeATMyNjcB6yFUNy1NPCkJQDsBATtACSo%2FUzEtThoxFTIgQlEM%2Fv7%2BAQHa1Q1NPiU3GlEsMSFAWzsrBAkSCQgQCCwFO11BIi0hLxohYlcxBw4IChMJMFVgJCMAAAACAD3%2F3wHGAo0ABgAlADcAuwAiAAEACgAEK7sAGgABACEABCu4ACEQuAAA0LgAIhC4AAbQuAAKELgADdC4ABoQuAAX0DAxAQ4BFRQWHwEOAQcVIzUuAzU0PgI3NTMVHgEXBy4BJxE%2BATcBBjdAPjnAHUgnNC1KNR0fNkoqNCxAFygULRogNBQB3Q1YQkNYDQkaIgNnaAUlPFQ1NFI8JQZqZwIiFjQSFgL%2BqAIbEgAAAAH%2FWf%2F0APsCnAADABgAuAAARVi4AAAvG7kAAAAEPlm4AAHcMDEHATMBpwFqOP6WDAKo%2FVgAAAD%2F%2F%2F9Z%2F%2FQA%2BwKcAgYAxgAA%2F%2F8AI%2F%2F0AxYCnAAnALYAAAEKACcAxgFxAAAABwC2AckAAAAA%2F%2F8AQP%2F0Au0CnAAnALf%2F6QEKACcAxgFbAAAABwC6AZ0AAAAA%2F%2F8AQP%2F0AvkCnAAnALf%2F6QEKACcAxgFGAAAABwC4AbkAAAAA%2F%2F8AI%2F%2F0AvwCnAAnALkAAAEKACcAxgGAAAAABwC6AawAAAAAAAEAIgBoAc8CLAALAB0AuwADAAEAAAAEK7gAAxC4AAbQuAAAELgACNAwMRMjNTM1MxUzFSMVI9i2tkG2tkEBKz7Dwz7DAAAAAAEAIgErAc8BaQADAA0AuwABAAEAAgAEKzAxEyEVISIBrf5TAWk%2BAAABADIAfgG%2FAhUACwALALoABQAJAAMrMDE%2FASc3FzcXBxcHJwcym5ssm5osm5ssmpurn54tn58tnp8toKAAAAAAAwAiAGABzwIzAAsAFwAbACEAuwAPAAEAFQAEK7sABgABAAAABCu7ABkAAQAaAAQrMDETIiY1NDYzMhYVFAYDNDYzMhYVFAYjIiYnIRUh%2BRcgIBcXHx9OIBcXHx8XFyCgAa3%2BUwHIHhgXHh4XGB7%2BzhceHhcYHh7rPgAA%2F%2F8AIgDBAc8B1AImAM0AawAGAM0AlgAAAAEAIgCDAc8CFQAJABUAugABAAgAAyu6AAUACAABERI5MDETJRUPARUfARUlIgGt04aG0%2F5TAW2oR04yBDJOR6gAAAAAAQAiAIMBzwIVAAkAFQC6AAgAAQADK7oABQABAAgREjkwMQEFNT8BNS8BNQUBz%2F5T04aG0wGtASuoR04yBDJOR6gAAAACACIAAAHPAiwACwAPADgAuAAARVi4AA4vG7kADgAEPlm7AAMAAQAAAAQruAADELgABtC4AAAQuAAI0LgADhC5AAwAAfQwMRMjNTM1MxUzFSMVIwchFSHYtrZBtrZBtgGt%2FlMBMD6%2Bvj6xQT4AAAAAAQA8ARwBtQKeAAkAGgC4AABFWLgAAC8buQAAABA%2BWbkABQAB9DAxEzMTIy8BIw8BI9RJmEhBMQQyQUgCnv5%2BsIWFsAABACQBAQHNAZMAFwAnALsACAABAA8ABCu4AA8QuAAU3LkAAwAB9LgAC9C4AA8QuAAX0DAxEz4BMzIeAjMyNjcXDgEjIi4CIyIGByQbQiAeLykmFRYmES4bQiAeLykmFRYmEQE5MCoaIBodICIwKRogGh0gAAEAIgBoAc8BaQAFAA0AuwABAAEABAAEKzAxEyERIzUhIgGtQv6VAWn%2B%2F8MAAQBS%2FzgB1AHmABcAJAC4AABFWLgAES8buQARAAQ%2BWbkABQAB9LoAFAARAAUREjkwMRMzERQWMzI2NxEzESMnIw4BIyImJxcVI1JSLDAmOSNSRAcCHUUqHS4RBVIB5v7XRT0nKwFZ%2FhpMJy0RGlqR%2F%2F8AoAI9AVACygAHAOABDwAAAAD%2F%2FwDOAj0BfgLKAAcA4gEPAAAAAP%2F%2FAI4CPQGQAsoABwDkAQ8AAAAA%2F%2F8AhAJDAZoCrQAHAOYBDwAAAAD%2F%2FwCIAkwBlgKuAAcA6QEPAAAAAP%2F%2FAJQCWQGKApIABwDoAQ8AAAAA%2F%2F8AsgIeAWwC1wAHAOsBDwAAAAD%2F%2FwDA%2FysBWQADAAcA7QEVAAAAAAAB%2F5ECPQBBAsoAAwAYALgAAEVYuAADLxu5AAMADD5ZuAAB3DAxAzMXI29WWj8Cyo0AAAAAAf99AsIAMwMyAAMACwC6AAEAAwADKzAxAzMXI4NeWEUDMnAAAf%2B%2FAj0AbwLKAAMAGAC4AABFWLgAAC8buQAAAAw%2BWbgAAtwwMQMjNzMCP1pWAj2NAAAAAAH%2FzQLCAIMDMgADAAsAugACAAAAAyswMRMjNzMSRVheAsJwAAH%2FfwI9AIECygAHADcAuAAARVi4AAYvG7kABgAMPlm4AABFWLgAAy8buQADAAw%2BWbgABhC4AADcugAFAAAABhESOTAxAzMXIycjByMiRF88QwRDPALKjVtbAAAAAf94AsIAiAMyAAcAFwC6AAYAAQADK7gABhC4AAfcuAAD0DAxAzczFyMnIweIYFBgQ0MEQwLCcHBERAAAAf91AkMAiwKtABYAQQC4AABFWLgAAC8buQAAAAw%2BWbgAAEVYuAAOLxu5AA4ADD5ZuwATAAEAAwAEK7gADhC5AAgAAfS4AAMQuAAL0DAxAz4BMzIeAjMyNzMOASMiLgIjIgcjiwQoJRMgGxgMHAkuBCglEx8bGA0cCS4CQy09EBMQMy09EBMQMwAAAAAB%2F28CxwCRAzMAFwAjALoAAAARAAMrugAFAAwAAyu4AAAQuAAI0LgADBC4ABTQMDETIi4CIyIGByM%2BATMyHgIzMjY3Mw4BPBQgGxoODhYELgUsJBQgGxoODhYELgUsAscQFBAaGi89EBQQGxkuPgAAAf%2BFAlkAewKSAAMACwC4AAMvuAAB3DAxAzMVI3v29gKSOQAAAv95AkwAhwKuAAsAFwAoALgAAEVYuAAALxu5AAAADD5ZuAAG3LgAABC4AAzQuAAGELgAEtAwMQMiJjU0NjMyFhUUBjMiJjU0NjMyFhUUBlYWGxsWFRwclxUcHBUWGxsCTBwVFRwcFRUcHBUVHBwVFRwAAAAC%2F3kCywCHAy0ACwAXABsAugAGAAAAAyu4AAAQuAAM0LgABhC4ABLQMDEDIiY1NDYzMhYVFAYzIiY1NDYzMhYVFAZWFhsbFhUcHJcVHBwVFhsbAsscFRYbGxYVHBwVFhsbFhUcAAAAAAL%2FowIeAF0C1wALABcAEwC6AAwAAAADK7oABgASAAMrMDERIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBYpNDQpKTQ0KRQcHBQUHBwCHjMqKjIyKiozJR4aGR4eGRoeAAAAAAL%2FowK7AF0DawALABcAEwC6AAwAAAADK7oABgASAAMrMDERIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBYpNDQpKDU1KBMcHBMUHBwCuy8pKDAwKCkvJBsZFxwcFxkbAAAAAAH%2Fq%2F8rAEQAAwARABMAugACABEAAyu6AAsACgADKzAxJzMHHgEVFA4CByc%2BATU0JicTNRkYIxgoNRwIKDEhHgM1CCAfFiAWDQMpBRcUFBUIAAAAAAH%2Fq%2F8rAEQAAwARABMAugARAAIAAyu6AAoACwADKzAxJzMHHgEVFA4CByc%2BATU0JicTNRkYIxgoNRwIKDEhHgM1CCAfFiAWDQMpBRcUFBUIAAAA%2F%2F8AQwAAALUCtAIGACYAAAABAAAA8QBaAAcAcQAFAAEAAAAAAAoAAAIAAXMAAwABAAAAYgBiAGIAYgCwARYBZgGiAeACFgJ0ArAC0AMCA0oDcAPUBCQEeATABTIFhgX0BiAGZgaiBxgHdAeyB%2BgIXgjaCSoJogoEClILAgtQC4QLzAwUDEYMxg0cDXAN7A5iDqoPFg9gD7YP8hBoEMIRGBFOEVoRZhFyEX4RihGWEfoSBhISEh4SKhI2EkISThJaEmYSchJ%2BEooSlhKiEq4TOhOQE5wTqBO0E8ATzBQkFGgUdBSAFIwUmBSkFLAVZhVyFX4VihWWFaIVrhW6FcYV0hXyFf4WChYWFiIWLhY6FqYXPhe8F8gX1BfgF%2BwX%2BBgEGIYY7BlkGeYamhriGxwbaBvaHCociBzuHSQdsB4WHjgeYh5uHnoeqB7UHyIfch%2BIH5Qfuh%2FgH%2Bwf%2BCACIBAgKCBAIEwgWCBsIHQgiCCcIKYgzCDgIQIhJCFAIVwhtCIQIioiPCJWInAimCMIIzojtiQ4JMolSCVSJVwlZiVwJaolziYOJmomrCa0JrwnECdOJ4on7iheKMwpOim8KhQqMCo4KkoqXCpuKoAqpCq4KtgrFisiK0QrZiueK8Ar%2BiwQLEgsUixcLGYscCx6LIQsjiyYLLIsxCzeLPAtHi08LYItui3MLgYuOi5qLpouxC7uLu4u9gABAAAAAQzMdwyY3F8PPPUACQPoAAAAAM2XgKUAAAAAzZfjFv9A%2Fr0EiAO4AAAACQACAAAAAAAAAo0AWQAAAAAAygAAAMoAAAIgAAMCTABaAjsANAJnAFoCDwBaAe4AWgJpADQCjABaAQcAWgHgAB8CQwBaAeYAWgLXAFoChwBaApgANAJAAFoCmAA0AkUAWgIWACoCGAAcAoUAVwIDAAADEgAXAgEADwHc%2F%2F8CGwAtAgAAOgIrAFIByAAuAisALwHwAC4BJAAeAfgALQIgAFIA9gBDAPf%2F2AHvAFIA%2FwBSAz0AUgIjAFICHgAuAisAUgImAC8BWwBSAaMAHAFSABgCIABLAdMADALOABgBvgAOAdMADAGpAB8CIAADAiAAAwIgAAMCIAADAiAAAwIgAAMDNgAIAjsANAIPAFoCDwBaAg8AWgIPAFoBBwAAAQcAUAEH%2F%2FsBB%2F%2F8AocAWgKYADQCmAA0ApgANAKYADQCmAA0ApgAMgNPADQChQBXAoUAVwKFAFcChQBXAdz%2F%2FwJ%2BACECRwBaAgAAOgIAADoCAAA6AgAAOgIAADoCAAA6AxEAOgHIAC4B8AAuAfAALgHwAC4B8AAuAPYADAD2ADoA9v%2F6APb%2F9AD2AFICIwBSAh4ALgIeAC4CHgAuAh4ALgIeAC4CHgAuA0cALgJAAFICIABLAiAASwIgAEsCIABLAdMADAHTAAwCIQA1AisAUgI%2BAB4CUgAeAmEAIAHxACwB8QBPAfEAJAHxABoB8QARAfEAGQHxADAB8QAsAfEAKQHxACgA%2BQBBAPkALwD5AEEA%2BQAvASEAVQEhAFUBqQAmAakAMAD5AFABqQBQAPkAOQD5AD8BqQA5AakAPwD5AD8BqQA%2FAQ8ALQEPADYBrQAtAa0ANgE3ACkBNwApAeAAKQMgACkA%2BQBBATAAKAH0AAwBLwBSAS8AJgEvAF4BLwAfAS8AIgEvAB8BXgAKAPEAXAFeAA4A8QBcAaIAOgHxAC0CMAApAugAMQGnABcDTwAzAfEAIwFvAFcBbwAoAW8AIwFvACoBbwAjAW8AVwFvACgBbwAjAW8AKgFZACUBbQAeAVkAJQFtAB4BSwApAfEAGgHxADQB8QA1AfEAFwHxABcB8QA9AFb%2FWQBW%2F1kDOAAjAw0AQAMoAEADHAAjAfEAIgHxACIB8QAyAfEAIgHxACIB8QAiAfEAIgHxACIB8QA8AfEAJAHxACICJgBSAh4AoAIeAM4CHgCOAh4AhAIeAIgCHgCUAh4AsgIeAMAAAP%2BRAAD%2FfQAA%2F78AAP%2FNAAD%2FfwAA%2F3gAAP91AAD%2FbwAA%2F4UAAP95AAD%2FeQAA%2F6MAAP%2BjAAD%2FqwAA%2F6sAygAAAPYAQwABAAAD2P7vAAAEqv9A%2FxYEiAABAAAAAAAAAAAAAAAAAAAA8QADAccBkAAFAAACigJYAAAASwKKAlgAAAFeADIBIAAAAgsFAwMEAwICBCAAAAcAAAABAAAAAAAAAABBREJFAEAAAP7%2FAu7%2FBgAAA9gBESAAAZMAAAAAAeAClAAAACAAAwAAAAIAAAADAAAAFAADAAEAAAAUAAQB0gAAADwAIAAEABwAAAANAC8AOQBAAFoAYAB6AH4AvwDPAN8A7wD%2FATEBUwLGAtoC3CAUIBogHiAiIDogRCB0IKwiEiIV%2F%2F8AAAAAAA0AIAAwADoAQQBbAGEAewCgAMAA0ADgAPABMQFSAsYC2gLcIBMgGCAcICIgOSBEIHQgrCISIhX%2F%2FwAB%2F%2FUAAABMAAD%2FwwAA%2F70AAAAA%2F3gAAP93AAD%2FNgAA%2FhT%2BBP3%2F4IkAAAAA4H3gXeCC4EHgGN673rIAAQAAAAAAOAAAAFQAAABeAAAAZgBsAAAAqAAAAMQAAADgAAAAAAAAAAAA2gDeAAAAAAAAAAAAAAAAAAAAAAADAIoAjwCxAMEAyAB7AI4AoQCiAKsAzACHAJoAhgCnAIgAiQDRANAA0gCMALAAowCpAKQA1ACgANgApQCoAKYA1QDvAIsAxQDCAMAAwwCqAKwA3ACuALsAmADWAJsArwDdAL8A0wCzALQA2QDXAK0AngDfALIAvACZAMkAygDLAI0AVQBIAEkASgBLAEwATQDOAE4AUABRAFIAUwBUAFYAcAB3AGgAaQBqAGsAbABtAM8AbgBxAHIAcwB0AHUAeAB2AE8AbwCQAJEAlACSAJMAlQAAuAAALEu4AAlQWLEBAY5ZuAH%2FhbgARB25AAkAA19eLbgAASwgIEVpRLABYC24AAIsuAABKiEtuAADLCBGsAMlRlJYI1kgiiCKSWSKIEYgaGFksAQlRiBoYWRSWCNlilkvILAAU1hpILAAVFghsEBZG2kgsABUWCGwQGVZWTotuAAELCBGsAQlRlJYI4pZIEYgamFksAQlRiBqYWRSWCOKWS%2F9LbgABSxLILADJlBYUViwgEQbsEBEWRshISBFsMBQWLDARBshWVktuAAGLCAgRWlEsAFgICBFfWkYRLABYC24AAcsuAAGKi24AAgsSyCwAyZTWLBAG7AAWYqKILADJlNYIyGwgIqKG4ojWSCwAyZTWCMhuADAioobiiNZILADJlNYIyG4AQCKihuKI1kgsAMmU1gjIbgBQIqKG4ojWSC4AAMmU1iwAyVFuAGAUFgjIbgBgCMhG7ADJUUjISMhWRshWUQtuAAJLEtTWEVEGyEhWS0AsAArALIBAQIrAbICAgIrAbcCRDYqIRQACCu3A0A2KiEUAAgrALcBUUM0JBcACCsAsgQIByuwACBFfWkYREuwYFJYsAEbsABZsAGOAAAUAEQAUgBWAAAADP8zAAwB5gAMAgYADAI%2BAAwCfgAMApAADALIAAwAAAAHAFoAAwABBAkAAQAeAAAAAwABBAkAAgAOAB4AAwABBAkAAwBMACwAAwABBAkABAAeAAAAAwABBAkABQCCAHgAAwABBAkABgAqAPoAAwABBAkADgBIASQAUwBvAHUAcgBjAGUAIABTAGEAbgBzACAAUAByAG8AUgBlAGcAdQBsAGEAcgAxAC4AMAA1ADAAOwBBAEQAQgBFADsAUwBvAHUAcgBjAGUAUwBhAG4AcwBQAHIAbwAtAFIAZQBnAHUAbABhAHIAOwBBAEQATwBCAEUAVgBlAHIAcwBpAG8AbgAgADEALgAwADUAMAA7AFAAUwAgAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwADAAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADkAMAAwAFMAbwB1AHIAYwBlAFMAYQBuAHMAUAByAG8ALQBSAGUAZwB1AGwAYQByAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAGQAbwBiAGUALgBjAG8AbQAvAHQAeQBwAGUALwBsAGUAZwBhAGwALgBoAHQAbQBsAAAAAgAAAAAAAP%2B1ADIAAAAAAAAAAAAAAAAAAAAAAAAAAADxAAABAgEDAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQCtAMkAxwCuAGIAYwCQAGQAywBlAMgAygDPAMwAzQDOAGYA0wDQANEArwBnAJEAsADWANQA1QBoAOsA6QDtAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2AHcA1wB4AHoAeQB7AH0AfAChALEAiQB%2FAH4AgACBAOwAugDqAO4BBAEFAAkAEwAUABUAFgAXABgAGQAaABsAHAARAA8AHQAeAAQAowAiAKIACgAFALYAtwC0ALUAxADFAL4AvwCpAKoAEAEGALIAswDDAIcAQgALAAwAPgBAAF4AYAASAF8APwDoAA0AhgCIAIsAigAjAAYBBwEIAQkBCgELAQwBDQEOAQ8AnQCeARABEQCDAL0ABwCFAJYBEgCEALwBEwAIAPUA9AD2AA4A7wDwALgAIAAfACEAkwBBAGEApAEUAEMAjQDYANkAjgDaAN0A3gEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUETlVMTAJDUgNmX2YDZl90B3VuaTAwQUQIb25lLnN1cHMIdHdvLnN1cHMKdGhyZWUuc3Vwcwlmb3VyLnN1cHMJemVyby5kbm9tCG9uZS5kbm9tCHR3by5kbm9tCnRocmVlLmRub20JZm91ci5kbm9tBmEuc3VwcwZvLnN1cHMERXVybwd1bmkyMjE1B3VuaTAwQjUHdW5pMDMwMAt1bmkwMzAwLmNhcAd1bmkwMzAxC3VuaTAzMDEuY2FwB3VuaTAzMDILdW5pMDMwMi5jYXAHdW5pMDMwMwt1bmkwMzAzLmNhcAd1bmkwMzA0B3VuaTAzMDgLdW5pMDMwOC5jYXAHdW5pMDMwQQt1bmkwMzBBLmNhcAd1bmkwMzI3C3VuaTAzMjcuY2FwB3VuaTAwQTAFaS50cmsAAAAAAAAB%2F%2F8AAgABAAAADAAAAAAAAAACAAgABAA3AAEAPgA%2BAAEATgBPAAEAZwBnAAEAbgBvAAEAeAB4AAEAeQB6AAIA2gDaAAEAAQAAAAoAMABEAAJERkxUAA5sYXRuABoABAAAAAD%2F%2FwABAAAABAAAAAD%2F%2FwABAAEAAmtlcm4ADmtlcm4ADgAAAAEAAAABAAQAAgAAAAIACgFIAAEAJgAEAAAADgBGAGwAggCkALoAzADiAPABAgEIARIBIAEqATQAAQAOAAkAEwAZABsAMwA1AFYAcACLAI0AngCnAKkAwgAJABkABAAb%2F%2BgAM%2F%2FsADX%2F5gBlABIAZgAkAJ7%2F8gCn%2F7sArwAUAAUAG%2F%2FoADX%2F8gCe%2F%2FgAp%2F%2B1AK8AHgAIADP%2F9wA1%2F%2FEAYwAKAGUAKABmADMAnv%2F1AKf%2F0QCvADUABQAz%2F%2FAANf%2F2AJ7%2F2ACr%2F%2FYArwAIAAQAGf%2F8AKf%2F7ACr%2F%2FgArwAtAAUAGf%2F5ABv%2F9gCe%2F%2BwAq%2F%2FxAK8AJgADAKf%2FxgCp%2F9gAq%2F%2FCAAQAM%2F%2FwADUABgCp%2F%2BYAr%2F%2FdAAEAGf%2FgAAIAGf%2FGABv%2F1gADABn%2F5gAb%2F%2BYANf%2FsAAIAZgAHAPAAGQACABn%2FywAz%2F%2BwAAgB%2F%2F%2FoAgf%2F6AAIUjAAEAAAU3hYsADkALgAA%2F%2Bf%2Fq%2F%2Fj%2F%2Bf%2FtwAhAEn%2F%2BgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fw%2F9MAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FwAAAAAD%2FxgAAAAAAAAAAAAAAAP%2Fo%2F%2Bj%2F2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Bp%2F9j%2F2P%2BnAAAAOwAAAAAAAAAA%2F8L%2F3QAA%2F9T%2F3f%2FC%2F%2BsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9gAZAAAAAAAAAAD%2F2AAAAAAAAP%2FoAAD%2F4f%2BwABkACf%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F2P%2FxAAD%2F8gAAAAD%2F%2FP%2Fy%2F8kAAAAAAAD%2F%2BP%2F2AAD%2F9gAAAAAAAP%2Fy%2F%2Fr%2Fov%2FY%2F%2Bj%2FsAAAAAAAAAAA%2F%2FIABP%2Fm%2F8z%2Fxv%2FyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FoAAD%2F%2FP%2FyAAAAAP%2F2%2F%2FIAAAAAAAD%2F8v%2F8AAAAAAAAAAD%2F8AAA%2F%2FYAAP%2FiAAD%2F7AAAAAAAAAAAAAD%2F%2Bv%2F8AAAAAAAA%2F%2FL%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2B7%2F8v%2F8%2F%2Fn%2F7AAA%2F%2Fb%2F8gAAAAAAAP%2Fo%2F%2Fb%2F4wAAAAAAAP%2F2AAD%2F8v%2F2AAAAAP%2FMAA4AAAAAAAAAAP%2F8%2F%2FwAAAAAAAD%2F8gAA%2F%2Bb%2F8gAAAAAAAAAAAAAAAAAAAAD%2F7AAA%2F%2FwAAAAAAAAAAAAAAAAAAP%2F8AAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5AAAAAAACAAAAAAAAAAA%2F%2FIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fw%2F%2FL%2F9v%2FwAAD%2F9v%2Fw%2F%2Bz%2F7gAA%2F%2Fb%2F8gAA%2F%2BoAAAAA%2F%2FkAAAAA%2F%2Bb%2F8v%2FsAAD%2F0gAAAAAAAAAAAAD%2F9AAA%2F%2Fn%2F7P%2Fu%2F%2Bz%2F8P%2Fi%2F%2FYAAAAA%2F%2FIAAAAAAAAAAAAA%2F4j%2F4%2F%2FI%2F7T%2F%2FAAA%2F97%2F3P%2ByAAAAA%2F%2FqAAD%2F5gAA%2F%2FL%2F9AAAAAD%2F7P%2F2%2F2j%2FsP%2Bk%2F6QAAAAAAAAAAP%2B0AAD%2F4P%2Bn%2F7L%2F3AAA%2F8r%2F3gAAAAAAAAAAAAAAAAAAAAD%2F7AAA%2F%2Fr%2F7AAAAAAAAAAAAAAAAP%2F2AAD%2F7AAAAAAAAAAA%2F9gAAAAAAAD%2F3gAAAAAABv%2FyAAAAAAAA%2F%2Fb%2F7wAAAAAAAAAAAAAAAAAAAAAAAP%2F5AAAAAAAAAAAAAP%2FsAAAAAP%2Fy%2F%2FYAAAAAAAAAAAAA%2F%2Fb%2F8v%2F2AAD%2F9gAA%2F%2Fb%2F7gAAAAAAAP%2F2AAD%2F9gAOAAAAAAAAAAD%2F8v%2F2AAAAAAAAAAD%2F8v%2Fa%2F%2BIAAAAA%2F%2FL%2F8gAAAAAAAAAA%2F%2BwAAAAA%2F%2FkAAAAAAAAAAAAAAAAAAP%2FyAAAAAAAAAAAAAP%2FyAAAAAAAA%2F%2B4AAP%2F4AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F8v%2B3AAD%2F3v%2FfAAD%2Flv%2FY%2F9n%2Fyv%2Fo%2F7f%2F7v%2B%2B%2F4IAAP%2Fu%2F9IAAAAA%2F8AAFP%2BnAAAAAAAAAAD%2F7AAAAAAAAP%2Ff%2F9n%2FsP%2FR%2F9L%2Fxf%2B1%2F9gAAAAAAAAAAAAAAAAAAP%2Fy%2F%2FYAAAAAAAAAAP%2Fw%2F%2B7%2F9gAAAAD%2F%2FAAAAAD%2F0QAAAAAAAAAAAAAAAAAA%2F%2BEAAAAAAAD%2F9v%2F2AAAAAAAAAAD%2F%2BQAAAAAAAP%2F8AAAAAAAAAAAAAAAAAAAAAAAAAAD%2F8wAAAAAAAAAA%2F94AAP%2F6%2F%2Fr%2F%2Bv%2FwAAAAAP%2B%2FAAAAAAAAAAAAAAAAACf%2F4wAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Fz%2F9gAAAAD%2F9v%2FwAAAAAAAAAAD%2F8v%2F2AAAAAP%2FEAAD%2F6P%2FyAAn%2Fpf%2Fy%2F%2FD%2F5v%2Fy%2F70AAP%2FX%2F5wAAP%2Fy%2F94AAAAA%2F9IAIf%2B9AAAAAAAAAAAAAP%2F5AAAAAP%2Fy%2F97%2Fvv%2FJ%2F9j%2F1%2F%2FR%2F9P%2F5wAAAAAAAAAA%2F%2Fb%2F%2Bv%2Fy%2F%2FIAAP%2Fw%2F%2FAAAAAA%2F%2Fr%2F4v%2F2%2F%2Bz%2F8P%2Fs%2F%2Bv%2F3wAA%2F%2FL%2F6QAAAAD%2FxAAUAAAAAAAAAAD%2F%2BgAAAAAAAAAA%2F%2FAAAP%2Fe%2F94AAAAAAAAAAAAAAAAAAAAA%2F%2BgAAP%2F8%2F%2BgAAAAAAAAAAP%2FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8oAAAAAAAAAAAAAAAAAAP%2FwAAD%2F9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAD%2F6P%2F2AAAABgAGAAAAAAAAAAAAAAAA%2F%2FYAAP%2FrAAAAAAAAAAAAAAAA%2F%2FIAFAAAAAAAAAAA%2F%2FIAAAAAAAAAAAAGAAj%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FmAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F5b%2F7P%2Fe%2F6QAAAAa%2F%2Br%2F7P%2BYAAAAAAAAAAAAAAAAAAD%2F%2BAAAAAD%2F5AAA%2F3YAAAAAAAAAAAAAAAAAAP%2B4AAAAAP%2Bg%2F6z%2F3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6AAA%2F%2Fb%2F5v%2F2AAAABQAF%2F%2FYAAAAA%2F%2BwAAAAA%2F%2FIAAAAA%2F%2BwAAP%2FyAAD%2F3v%2Fs%2F%2FwAAAAAAAAAAAAA%2F%2FAAAP%2F5AAAAAAAF%2F%2FkABgAAAAAAAAAEAAAAAAAAAAAAAAAuAAAALgAu%2F%2FL%2F9gAAAAAAIv%2FOAAAAAAAAAAD%2F7AAA%2F%2FYAAAAAAAD%2F8QAAAD7%2F7ABL%2F%2FIADgAAAAAANgAhABoAKAAiAA3%2F%2FP%2FyAAAAAP%2F8%2F%2FIAAAAAADEAAAAA%2F%2BYAAAAA%2F%2FIAAAAl%2F%2Fz%2F%2FAAAAAAAAAAAAAAAAP%2FwAAD%2F8gAAAAAAAAAA%2F94AAP%2F4AA4AMAAAAAAAAAAAAAD%2F3AAAAAD%2F%2FAAAAAAAAAAAAAD%2F8gAAAAAADgAAAAD%2F6gAAAAD%2F9f%2F2%2F%2FYAAAAA%2F%2BYADgAAAAAAAAAA%2F%2FYAAP%2FuAAAAAP%2Fy%2F%2FL%2F8gAA%2F%2Bb%2F%2BQAAAAAAAAAAAAAAAP%2F0AAAAAAAA%2F%2Fz%2F1P%2FmAAAAAP%2F5%2F%2FkAAAAAAAAAAP%2FoAAAAAP%2FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FeAAAAAAAAAAAAAAAAAAD%2F9gAA%2F%2FkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8cAAAAA%2F9IAAAAA%2F%2Fz%2F%2FP%2Fm%2F%2FYAAAAAAAAAAP%2FyAAAAAAAAAAAAAAAAAAD%2F5gAA%2F%2FkAAAAAAAAAAP%2Ft%2F%2Fz%2F9AAA%2F%2FL%2F%2FP%2FvAAYAAAAAAAD%2F%2BgAAAAAAAAAAAAAAAAAAAAAACf%2FfAAAAAAAAAAD%2Frf%2FJAAAAAAAA%2F9X%2F8v%2FfAAAAAAAAAAAAAAAAAAAAAAAAAAD%2Fy%2F97AAD%2F%2BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Fb%2F%2BgANABP%2F%2Bf%2FH%2F%2B0AAP%2F2AAD%2F5wAA%2F%2Fb%2FyQAAAAAAAAAAAA3%2F8AA%2B%2F94AAAAAAAAAAAAAAAAAAAAiABMAAP%2Fo%2F%2BwAAP%2F2%2F%2FYAAAAAAAAAAAAA%2F%2BgAAAAA%2F%2BwAAAAAAAAAAP%2F1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F88AAAAAAAAAAAAAAAAAAP%2F2AAD%2F9QAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAD%2F8gAAAAD%2F%2FP%2F2AAAAAAAAAAAADgAAAAAAAAAA%2F%2B4AAP%2F2AAAAAAAA%2F%2FoAAAAA%2F%2BwAIgAOAAAAAAAAAAAAAP%2FmAAAAAAAAAAD%2F5v%2FuAAAAAAAAAAAADgAAAAAAAP%2FsAAAAAP%2FiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FoAAAAAAAAAAAAAAAAAAD%2F8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BgAAAAA%2F%2FUAAP%2F2AAAAAAAA%2F9f%2F%2FAAAAAAAAP%2F2AAD%2F%2FP%2FiAAAAAAAA%2F%2FgAAAAAACb%2F%2BAAAAAAAAP%2F8%2F%2FIAAAAAAAAAAAAAAAAAAAAAAAD%2F7wAAAAAAAAAAAAD%2F7AAAAAD%2F%2BQAA%2F%2FYAAAAAAAD%2F3QAAAAAAAAAA%2F%2BwAAP%2F8%2F9gAAAAAAAAAAAAAAAAALf%2FyAAAAAAAA%2F%2Fz%2F%2FAAAAAAAAAAAAAAAAAAAAAAAAP%2FoAAAAAAAAAAAAAP%2FmAAAAAP%2F8%2F%2FoAAAAA%2F%2FwAAAAAAAAAAAAAAAD%2F6QAA%2F%2FYAAAAAAAD%2F9gAAAAD%2F%2BAAZAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FwAAP%2FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAP%2FoAAD%2F8P%2FwAAD%2FuP%2Fb%2F%2Bz%2F4v%2F2%2F94AAP%2Fy%2F3YAAP%2F2%2F%2FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fs%2F%2Bz%2F7P%2FiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6AAAAAAAAAAAAAAAAAAA%2F9kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FoAAAAAP%2F2%2F%2BIAAAAAAAAAAP%2BQ%2F87%2F9v%2ByAAD%2F1QAA%2F%2Bj%2FbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fn%2F%2BwAAP%2F2%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F2AAAAAP%2FrAAD%2F9%2F%2F3AAD%2Fv%2F%2Fy%2F%2FD%2F7f%2F2%2F%2BoAAP%2Fx%2F7f%2F%2FQAA%2F%2BIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7f%2Fr%2F%2Bz%2F9P%2Fn%2F%2B0AAAAAAAAAAP%2Fs%2F%2FYAAAAAAAAAAP%2Fy%2F%2FD%2F%2BQAAAAP%2F8gAA%2F%2B%2F%2F9v%2Fw%2F%2Fn%2F%2BwAA%2F%2FD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F%2FP%2F5AAAAAP%2Fl%2F%2FIAAAAA%2F%2FL%2F%2BQAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5wAA%2F%2Fz%2FvgAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Bb%2F5gAAAAAAAP%2F8%2F%2FIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fy%2F%2FD%2FyAAAAAAAAAAAAAAAAP%2F8AAAAAAAA%2F%2FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FD%2Fvf%2FQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F9gAAP%2Fv%2F9MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fv%2F%2FkAAAAAAAAAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F0gAA%2F%2Fb%2FyQAAAAAAAAAAAAAAAAAA%2F%2BL%2F7gAAAAAAAAAA%2F%2BIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Bv%2F8gAAAAAAAAAA%2F%2BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F43%2FyQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FwAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FfAAAAAAAAAAD%2FfP%2FGAAAAAAAA%2F97%2F8P%2FfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F%2BQAAAAAAAAAAAAAAAAAAAAD%2FzwAAAAAAAAAAAAAAAP%2FsAAAAAP%2F5AAD%2F9gAAAAAAAP%2Fd%2F%2FUAAP%2F8AAD%2F7AAA%2F%2Fz%2F2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F5AAAAAAAA%2F%2BgAAAAAAAAAAAAA%2F98AAAAA%2F%2FEAAAAAAAD%2F8gAAAAAAAP%2F8AAD%2F9v%2F2AAD%2F7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FL%2F6AAAAAAAAP%2FsAAAAAAACAA0ABAAgAAAAIgAlAB0AKAAoACEAKgBiACIAZwB2AFsAeAB6AGsAhgCTAG4AlgCeAHwAoQChAIUAowCjAIYApQClAIcApwCnAIgAqQCpAIkAAQAEAKQABgAHAAgADAAmACcACQAoACkAKgAKAAsAKAAoAAwAKwAMAA0ADgAPABAALQARAC4AEgATABQAHQAVAAAAGAAZABoAHAAAAAAAGwAAABwAHAAdAB0AIgAfACAAIQAiADcAIwA4ACQAJQAGAAYABgAGAAYABgAmAAgAJgAmACYAJgApACkAKQApACgADAAMAAwADAAMAAwAJgAQABAAEAAQABIADAAsABQAFAAUABQAFAAUABgAFQAYABgAGAAYAAAAAAAAAAAAIgAcAB0AHQAdAB0AHQAdABgAMQAiACIAIgAiACQAJAAAAB0AGQAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXABcAFgAWAAEAAgA0AAQANQA1AB4ANgAeADYAAAAAADIAMwAyADMAMAAwADAAMAADAAAAAAAvAAAALwAAAC8AAAAFAAIASAAEAAQADAAGAAYADwAKAAoADwANAA0AEwASABIADwAUABQADwAWABYADQAXABcAAgAYABgAAwAZABkAHwAaABoABAAbABsAIAAcABwABQAdAB0ADgAeAB4AEAAgACIAEgAjACMAEQAkACQABgAmACYAFAAnACcABwAqACsAKAAsACwAEgAtAC0AKAAuAC4AEgAvAC8AKAAwADAAKQAxADEAFQAyADIAFgAzADMAJAA0ADQACAA1ADUAJQA2ADYACQA3ADcAKgA4AD0ADAA%2FAD8ADwBJAE8ADwBQAFMAAwBUAFQABQBVAFUAAQBXAF0AEABeAGIAEgBjAGYAFABnAGgAKABpAG8AEgBxAHQAFgB1AHYACQB5AHoAEQCGAIcACwCIAIkALACKAIoAHACLAIsAHQCMAIwAIQCNAI0AHgCOAI8AIgCQAJAAIwCRAJEACgCSAJIAIwCTAJMACgCWAJYAJwCXAJcAKwCYAJgAJwCZAJkAKwCaAJ0AJgCeAJ4AGQCiAKIALQCkAKQALQCmAKYALQCnAKcAGwCpAKkAGACrAKsAFwCvAK8AGgDwAPAAFAABAAAACgBgAJ4AAkRGTFQADmxhdG4AGgAEAAAAAP%2F%2FAAEAAAAWAANBWkUgAB5DUlQgAChUUksgADIAAP%2F%2FAAEAAQAA%2F%2F8AAgACAAUAAP%2F%2FAAIAAwAGAAD%2F%2FwACAAQABwAIbGlnYQAybGlnYQAybGlnYQAybGlnYQAybGlnYQAybG9jbAA4bG9jbAA4bG9jbAA4AAAAAQABAAAAAQAAAAIABgAaAAEAAAABAAgAAQAGAMoAAQABACYABAAAAAEACAABABoAAQAIAAIABgAMAHkAAgAjAHoAAgAxAAEAAQAj%29%20format%28%27truetype%27%29%3B%0A%7D%0A%40font%2Dface%20%7B%0Afont%2Dfamily%3A%20%27Source%20Sans%20Pro%27%3B%0Afont%2Dstyle%3A%20normal%3B%0Afont%2Dweight%3A%20700%3B%0Asrc%3A%20url%28data%3Aapplication%2Ffont%2Dsfnt%3Bbase64%2CAAEAAAARAQAABAAQR0RFRgNEA3IAAG3kAAAAQEdQT1Pl%2B8B5AABuJAAAGVZHU1VC8WfWVwAAh3wAAADgT1MvMlvgllUAAGSUAAAAYGNtYXDzMPm1AABk9AAAAeZjdnQgDdkBaQAAaJwAAAAoZnBnbQZZnDcAAGbcAAABc2dhc3D%2F%2FwADAABt3AAAAAhnbHlm8iwszwAAARwAAF1UaGVhZP4ts7AAAGB0AAAANmhoZWEHuwObAABkcAAAACRobXR4wFMeHQAAYKwAAAPEbG9jYRMoKywAAF6QAAAB5G1heHADCwJCAABecAAAACBuYW1lJBs%2BoAAAaMQAAAHccG9zdGxQSG8AAGqgAAADOXByZXBFzLadAABoUAAAAEsABQBQAAACYgKUAAMABgAJAA8AFQBnALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAIvG7kAAgAEPlm6AAUAAgAAERI5ugAGAAIAABESOboABwACAAAREjm6AAgAAgAAERI5uQAKAAH0ugANAAIAABESObgAABC5ABIAAfQwMRMhESETJxEhEQcXLwEjDwETPwEjHwFQAhL97sFfAU1eCicpBCknVCogmB8rApT9bAFUuv6NAXO6%2BU1iYk0BQ187O18AAv%2F6AAACQwKMAAkAEQBUALgAAEVYuAAOLxu5AA4AED5ZuAAARVi4AAwvG7kADAAEPlm4AABFWLgAES8buQARAAQ%2BWboABQAMAA4REjm6AAsADAAOERI5uAALL7kACQAB9DAxAScuAScjDgEPARcjByMTMxMjAWEPDhoNBAwZDhCpxyiWzLHMnAEOPDFuMzRtMTxzmwKM%2FXQAAAAAAwBNAAACPAKMABUAHgAmAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAFS8buQAVAAQ%2BWboAJAAAABUREjm4ACQvugAMACQAFhESObgAABC5AB0AAfS4ACQQuQAeAAH0uAAVELkAJgAB9DAxEzMyHgIVFA4CBxUeARUUDgIrARMyNjU0JisBFRMyNTQmKwEVTd8zV0ElDRoqHEZHJ0VcNfLYNjEyNEZTeTw9UwKMDyY%2BLxYsJh4HBA1KQjJILxcBhSslJSCV%2Fu1ZKyerAAAAAAEALv%2F0AjACmAAfADkAuAAARVi4AAUvG7kABQAQPlm4AABFWLgAGy8buQAbAAQ%2BWbgABRC5AAwAAfS4ABsQuQAUAAH0MDETND4CMzIWFwcuASMiDgIVFBYzMjY3Fw4BIyIuAi4yVXE%2FPWMhURkzIiI7LBlWSCg8GFEpaT0%2FcFQwAUJRf1guMyJbFxodNk4xZW8gGlkwMCtUfQAAAAIATQAAAkwCjAAMABkANQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuQANAAH0uAAAELkAFwAB9DAxEzMyHgIVFA4CKwE3Mj4CNTQuAisBEU24S3hWLi5UdUjArypEMBsbMEQqHAKMJk96VFR8USh3FjFQOzpPLxT%2BYgAAAAABAE0AAAHvAowACwBNALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm4AAAQuQADAAH0ugAHAAAACxESObgABy%2B5AAUAAfS4AAsQuQAIAAH0MDETIRUhFTMVIxUhFSFNAZj%2B%2B97eAQ%2F%2BXgKMfIN7lnwAAAAAAQBNAAAB6AKMAAkAQwC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAJLxu5AAkABD5ZuAAAELkAAwAB9LoABwAAAAkREjm4AAcvuQAFAAH0MDETIRUhFTMVIxUjTQGb%2Fvji4pMCjHyXfP0AAAAAAQAu%2F%2FQCRAKYACMATQC4AABFWLgABS8buQAFABA%2BWbgAAEVYuAAfLxu5AB8ABD5ZuAAFELkADAAB9LgAHxC5ABQAAfS6ABsABQAfERI5uAAbL7kAGQAB9DAxEzQ%2BAjMyFhcHLgEjIg4CFRQWMzI2NzUjNTMRDgEjIi4CLjNXdUJFZSBRGDUqJj8uGVtcFCYMbO4jckVCc1YxAUJRf1guNCFbFxodNk4xZW8KCnB4%2FtQhLitUfQAAAAEATQAAAlUCjAALAEkAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACy8buQALAAQ%2BWboACQAAAAsREjm4AAkvuQADAAH0uAAAELgABNC4AAsQuAAH0DAxEzMVMzUzESMRIxEjTZPhlJThkwKM%2B%2Fv9dAEQ%2FvAAAQBNAAAA4AKMAAMAJQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAADLxu5AAMABD5ZMDETMxEjTZOTAoz9dAAAAAEAEP%2F0AbMCjAARACsAuAAARVi4AAcvG7kABwAQPlm4AABFWLgADi8buQAOAAQ%2BWbkAAwAB9DAxNx4BMzI2NREzERQOAiMiJid0EjAZKCmTGTNPNktlIrQhIDFBAaf%2BTS9UPiQ6PAAAAQBNAAACbAKMAAwAWwC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAELxu5AAQAED5ZuAAARVi4AAwvG7kADAAEPlm4AABFWLgACC8buQAIAAQ%2BWboAAgAAAAwREjm6AAkABAAIERI5MDETMxEzEzMDEyMDBxUjTZMEwqLF6aGfTJMCjP71AQv%2B%2FP54ARNkrwAAAQBNAAAB4gKMAAUAKwC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAFLxu5AAUABD5ZuQACAAH0MDETMxEhFSFNkwEC%2FmsCjP3wfAAAAAEATQAAAq0CjAAdAG8AuAAARVi4AAAvG7kAAAAQPlm4AABFWLgABi8buQAGABA%2BWbgAAEVYuAAdLxu5AB0ABD5ZuAAARVi4AAkvG7kACQAEPlm6AAMABgAJERI5ugAQAAYACRESOboAEwAdAAYREjm6ABYAAAAdERI5MDETMxMXMzcTMxEjNTQ%2BAjcjDwEjLwEjHgMdASNNnG0nBCdqm4kEBgYDBDZkO2Q0BAMGBQSHAoz%2B23JyASX9dO8YOjs5GJf9%2FZcYOTs6GO8AAAEATQAAAkwCjAATAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACC8buQAIABA%2BWbgAAEVYuAATLxu5ABMABD5ZuAAARVi4AAsvG7kACwAEPlm6AAQACwAIERI5ugAOAAAAExESOTAxEzMTFzMuAT0BMxEjAycjHgEdASNNl6pABAUNjJeqQAQFDYwCjP68kDSAOub9dAFFjjZ8OucAAAACAC7%2F9AJ%2BApgAEwAfADUAuAAARVi4AAovG7kACgAQPlm4AABFWLgAAC8buQAAAAQ%2BWbkAFAAB9LgAChC5ABoAAfQwMQUiLgI1ND4CMzIeAhUUDgInMjY1NCYjIgYVFBYBVkJtTisrTm1CQm1OKytObUJDTk5DQ05ODC9YflBQfVUtLVZ9T1B%2BWC9%2Fc2Nibm5iY3MAAgBNAAACOgKMAA4AFgBDALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AA4vG7kADgAEPlm6AAwAAAAOERI5uAAML7kADwAB9LgAABC5ABUAAfQwMRMzMh4CFRQOAisBFSMTMjU0JisBFU3uNV1FKClGXDRbk%2BV4PTtSAowVMVE7OVQ2Gt0BUmgzKsUAAAACAC7%2FTgKgApgACwAqAEsAuAAARVi4ABwvG7kAHAAQPlm4AABFWLgAEi8buQASAAQ%2BWbsAJwABAA8ABCu4ABIQuQADAAH0uAAcELkACQAB9LgAEhC4ACTQMDETFBYzMjY1NCYjIgYBDgEjIiYnLgM1ND4CMzIeAhUUBgceATMyNjfFTkNDTk5DQ04B2xI7JmiPIzRVPCArTm1CQm1OK3BfF04qFSUOAUlpdHRpYm5u%2FbgJDGBNCzdWcUVQfVUtLVZ9T4SqGyIbBwUAAAACAE0AAAJTAowACAAYAFQAuAAARVi4AA4vG7kADgAQPlm4AABFWLgADC8buQAMAAQ%2BWbgAAEVYuAAJLxu5AAkABD5ZuwABAAEACgAEK7gADhC5AAgAAfS6ABcAAQAKERI5MDETMzI2NTQmKwETJyMVIxEzMh4CFRQGBxPgTDo9PTpMzn1Rk%2Bs0W0QoPzWUAWAxMDAm%2Fenr6wKMFC9OOkhdF%2F77AAEAI%2F%2F0AgoCmAAxAEkAuAAARVi4ABYvG7kAFgAQPlm4AABFWLgALi8buQAuAAQ%2BWbkAAwAB9LoACwAWAC4REjm4ABYQuQAdAAH0ugAlAC4AFhESOTAxNx4BMzI2NTQuAi8BLgM1ND4CMzIWFwcuASMiBhUUHgIfAR4BFRQOAiMiJid3I1UpLi0NGSMVVRkvJRYiPlUzOW8qSyBAJyYtDxskFVQ8RSE%2FXDpAfzK3HiYiHQ8WEQ8JJAogKzkkKEc1HiwqXRkbHxwPFREPCSIYVEUpSTchLy8AAAEAGQAAAhMCjAAHADMAuAAARVi4AAIvG7kAAgAQPlm4AABFWLgABy8buQAHAAQ%2BWbgAAhC5AAAAAfS4AAXQMDETIzUhFSMRI8yzAfqzlAIQfHz98AAAAAABAEn%2F9AJPAowAEQA8ALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAkvG7kACQAQPlm4AABFWLgADi8buQAOAAQ%2BWbkABQAB9DAxEzMRFBYzMjY1ETMRFAYjIiY1SZQ6Nzc8joN%2Bf4YCjP6TYExMYAFt%2FqKklpakAAAB%2F%2FkAAAIzAowADQBAALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAovG7kACgAQPlm4AABFWLgADS8buQANAAQ%2BWboABQAAAA0REjkwMQMzEx4BFzM%2BATcTMwMjB5xODxcPBA4YDk2WxLECjP7QNmU2NmU2ATD9dAABAA4AAAMgAowAIQB2ALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAovG7kACgAQPlm4AABFWLgAFC8buQAUABA%2BWbgAAEVYuAAhLxu5ACEABD5ZuAAARVi4ABcvG7kAFwAEPlm6AAUAAAAhERI5ugAPABQAFxESOboAHAAhAAoREjkwMRMzEx4BFzM%2BATcTMxMeARczPgE3EzMDIwMuAScjDgEHAyMOly0GDgYEChMKRn1GChMKBAcNBy2NdLlACA0FBAYNCD22Aoz%2BzzNnNDRnMwEx%2Fs8yZzU1ZjMBMf10ASgmTSQkTSb%2B2AAAAAEACwAAAiwCjAAZAFsAuAAARVi4AAEvG7kAAQAQPlm4AABFWLgACy8buQALABA%2BWbgAAEVYuAAZLxu5ABkABD5ZuAAARVi4AA8vG7kADwAEPlm6AAYAAQAZERI5ugATAA8ACxESOTAxEwMzFx4BFzM%2BAT8BMwMTIycuAScjDgEPASPAqqQ5CxYOBAsVCjSdqbSkQQwXDgQLFgs9ngFPAT17FzMfHzMXe%2F68%2FriFGjMeHjMahQAAAAAB%2F%2FgAAAIVAowADwBAALgAAEVYuAABLxu5AAEAED5ZuAAARVi4AAsvG7kACwAQPlm4AABFWLgADy8buQAPAAQ%2BWboABgABAA8REjkwMTcDMxceARczPgE%2FATMDFSO9xZ46DhkOBA4bDjuaxZPoAaSWJUUmJkUllv5c6AAAAQAkAAAB%2FAKMAAkAPQC4AABFWLgAAy8buQADABA%2BWbgAAEVYuAAILxu5AAgABD5ZuQAGAAH0uAAA0LgAAxC5AAEAAfS4AAXQMDE3ASE1IRUBIRUhJAEg%2FvsBuv7gASP%2BKFkBt3xZ%2Fkl8AAAAAgAv%2F%2FQB2QH8ABsAJQB2ALgAAEVYuAANLxu5AA0ACD5ZuAAARVi4ABcvG7kAFwAEPlm4AABFWLgAEi8buQASAAQ%2BWboAAwANABcREjm4AAMvuAANELkABgAB9LoAEwASAA0REjm4ABcQuQAfAAH0uAATELkAIgAB9LgAAxC5ACMAAfQwMTc0NjcuASMiBgcnPgEzMhYVESMnIw4BIyIuAjcUFjMyNjc1DgEvhJMCJCggQCQ0MGk7YGV4CwMgRyoiNiYVjB8aGiQUTzyKTlgPIScYFWEdJG1z%2FuQzHCMXKTYrGBcWFFcLKgAAAAACAEH%2F9AIWAr0AFgAhAIMAuAAARVi4AAAvG7kAAAASPlm4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAQLxu5ABAABD5ZuAAARVi4ABYvG7kAFgAEPlm6AAMABgAQERI5ugATABAABhESObgAExC5ABcAAfS4ABAQuQAaAAH0uAAGELkAHwAB9LgAAxC5ACEAAfQwMRMzFQc%2BATMyHgIVFA4CIyImJyMHIzceATMyNjU0IyIHQZMEHUMjLUgzGyM7SyghQx0EDHOTFCgTJjZWLCkCvaxMGh0kQV05QGRFJCAgNIwSDkVNhi0AAQAk%2F%2FQBvgH8ABwAOQC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAAYLxu5ABgABD5ZuAAFELkACwAB9LgAGBC5ABEAAfQwMTc0PgIzMhYXByYjIgYVFBYzMjY3Fw4BIyIuAiQqR14zLkoZQyMiNj4%2FMBssEjskWCk0WUIm%2BD5hQiMfGlsdTEFBTBYOXSAeI0JhAAAAAAIAJ%2F%2F0AfwCvQAWACMAgwC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAAKLxu5AAoAEj5ZuAAARVi4ABIvG7kAEgAEPlm4AABFWLgADS8buQANAAQ%2BWboACAASAAUREjm6AA4ABQASERI5uAASELkAGgAB9LgADhC5AB0AAfS4AAgQuQAeAAH0uAAFELkAIQAB9DAxNzQ%2BAjMyFhcnNTMRIycjDgEjIi4CNxQWMzI2NzUuASMiBicjOUsnKjYaBpN4CgQaRiQuSzUdly8rGCcSFCoUIzb4PWBDJBwYTKn9QzEaIyRDYD9KRBQZyxIOQwAAAAIAJP%2F0AeEB%2FAAbACIAUQC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAAXLxu5ABcABD5ZugANAAUAFxESObgADS%2B4ABcQuQARAAH0uAAFELkAHwAB9LgADRC5ACIAAfQwMTc0PgIzMh4CFRQGByEeATMyNxcOASMiLgIlNCYjIgYHJChBVC01TzUaBAL%2B1wpFMjU2MSZdLTVcRCYBQCYtIzUI%2BDxhQyQkQFczFCEJOTMhWRoeI0NgcSs2LzIAAQAYAAABdALJABgAVgC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAVLxu5ABUAEj5ZuAAARVi4AAovG7kACgAEPlm4ABUQuQACAAH0uAAGELkACQAB9LgADNC4AAYQuAAP0DAxASYjIgYdATMVIxEjESM1NzU0PgIzMhYXAVkcFxseWVmTQkITLEYyHzMRAksKISYec%2F6DAX1tBRsnRjQeDAYAAAADACL%2FLQIHAfwADgBDAE8AbQC4AABFWLgAIS8buQAhAAg%2BWbgAAEVYuAA%2FLxu5AD8ABj5ZuQADAAH0ugA2ACEAPxESObgANi%2B5AAkAAfS4ACEQuAAk0LgAJC%2B5ACUAAfS4ADYQuAAu0LgALi%2B5AEQAAfS4ACEQuQBKAAH0MDEXFBYzMjY1NCYrASImJwYHNDc1LgE1NDY3NS4BNTQ%2BAjMyFzMVIx4BFRQOAiMiJw4BFRQWOwEyFhUUDgIjIi4CEzI2NTQmIyIGFRQWmzwyMkAnJTMaIAwbeUcUGiAYGikiOUooLCG1TwcJHjVHKR0fCgghKlBcYSdIZkAsSzkg2x0nJx0dJyc%2BHB0jGhcQAwMYMDwoBA0oHxsxEQQSQywtQy0WDGsLIhQrPykUCggQDRMSO0MnQS8bDx4wAWwpKicpKCgqKQABAEEAAAIAAr0AFABYALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4AAAvG7kAAAASPlm4AABFWLgAFC8buQAUAAQ%2BWboAAwAGABQREjm4AAvQuAAGELkADwAB9LgAAxC5ABIAAfQwMRMzFQc%2BATMyFhURIxE0JiMiBgcRI0GTBxxKM1FJkx0gHCgYkwK9rFkZK2pe%2FswBITYoGRf%2BsQACADUAAADfAtIACwAPAC0AuAAARVi4AAwvG7kADAAIPlm4AABFWLgADi8buQAOAAQ%2BWboABgAAAAMrMDETIiY1NDYzMhYVFAYHMxEjiiUwMCUmLy9vk5MCOSsiIioqIiIrSf4QAAAAAAL%2Fzf88AOEC0gARAB0ANwC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAAHLxu5AAcABj5ZugAYABIAAyu4AAcQuQAOAAH0MDETMxEUDgIjIiYnNx4BMzI2NRMiJjU0NjMyFhUUBkKTESlEMx8pDxoKEgsdF0olMDAlJTAwAfD%2BEylINiAIBmwDBCYqAjorIiIqKiIiKwABAEEAAAIeAr0ADABbALgAAEVYuAAELxu5AAQACD5ZuAAARVi4AAAvG7kAAAASPlm4AABFWLgADC8buQAMAAQ%2BWbgAAEVYuAAILxu5AAgABD5ZugACAAAADBESOboACQAAAAgREjkwMRMzETM3MwcTIycHFSNBjwSdoK67n3A%2FjwK9%2Fm7FzP7cwUd6AAEAQf%2F0ARICvQARACsAuAAARVi4AAAvG7kAAAASPlm4AABFWLgADC8buQAMAAQ%2BWbkABQAB9DAxEzMRFBYzOgE3Fw4BIyIuAjVBkxEJBQcGEgwlGSY0Hw4Cvf3XFxICbQUHGCs9JgAAAQBBAAADHQH8ACEAmAC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAALxu5AAAACD5ZuAAARVi4ACEvG7kAIQAEPlm4AABFWLgAGS8buQAZAAQ%2BWbgAAEVYuAARLxu5ABEABD5ZugACAAAAIRESOboACQAAACEREjm4AAYQuAAM0LkAFQAB9LgACRC5ABcAAfS4AAYQuQAdAAH0uAACELkAHwAB9DAxEzMXMz4BMzIWFz4BMzIWFREjETQmIyIHESMRNCYjIgcRI0F4CgQfRjE1QRMhSTJQS5MdICUwkx0gJi6TAfBAHy0rKCIxa13%2BzAEhNigw%2FrEBITYoMP6xAAAAAAEAQQAAAgAB%2FAAUAGUAuAAARVi4AAYvG7kABgAIPlm4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAAULxu5ABQABD5ZuAAARVi4AAsvG7kACwAEPlm6AAIAAAAUERI5uAAGELkADwAB9LgAAhC5ABIAAfQwMRMzFzM%2BATMyFhURIxE0JiMiBgcRI0F4CgQgTDNRSZMdIBwoGJMB8D8eLWpe%2FswBITYoGRf%2BsQAAAAACACT%2F9AIHAfwAEwAfADUAuAAARVi4AAUvG7kABQAIPlm4AABFWLgADy8buQAPAAQ%2BWbkAFwAB9LgABRC5AB0AAfQwMTc0PgIzMh4CFRQOAiMiLgI3FBYzMjY1NCYjIgYkKENYLy9XQygoQ1cvL1hDKJctLi0uLi0uLfg%2BYUIjI0JhPj5hQiMjQmE%2BQUxMQUFMTAAAAgBB%2F0gCFgH8ABYAIQCDALgAAEVYuAAJLxu5AAkACD5ZuAAARVi4AAMvG7kAAwAIPlm4AABFWLgAAi8buQACAAY%2BWbgAAEVYuAATLxu5ABMABD5ZugAFAAkAExESOboAFgATAAkREjm4ABYQuQAXAAH0uAATELkAGgAB9LgACRC5AB8AAfS4AAUQuQAhAAH0MDEXFSMRMxczPgEzMh4CFRQOAiMiJic3HgEzMjY1NCMiB9STeAoEHUknLUgyGyM7SyggPBoFFCgTJjZWKyonkQKoMRojJEJdOUBjRSQbGWQSDkVNhi0AAAIAJ%2F9IAfwB%2FAAWACMAfwC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAALLxu5AAsACD5ZuAAARVi4AA0vG7kADQAGPlm4AABFWLgAEi8buQASAAQ%2BWboACAAFABIREjm6AA8AEgAFERI5uQAaAAH0uAAPELkAHQAB9LgACBC5AB4AAfS4AAUQuQAhAAH0MDE3ND4CMzIWFzM3MxEjNTcOASMiLgI3FBYzMjY3NS4BIyIGJyM5SycpPh0EDHOTBhlCIi5LNR2XLysYJxIUKhQjNvg9YEMkHSAx%2FViXTBgfJENgP0pEFBnLEg5DAAAAAQBBAAABjwH8ABIAUgC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAALxu5AAAACD5ZuAAARVi4ABIvG7kAEgAEPlm6AAIAAAASERI5uAAGELgADdy4AAIQuQAQAAH0MDETMxczPgEzMhYXBy4BIyIGBxEjQXgKBBtMJhUbCxgOGBAcPRSTAfBXMzAFBX8EBCgz%2FuAAAAEAFf%2F0AZ8B%2FAAwAEkAuAAARVi4ABUvG7kAFQAIPlm4AABFWLgALS8buQAtAAQ%2BWbkAAwAB9LoACwAtABUREjm4ABUQuQAcAAH0ugAjABUALRESOTAxNx4BMzI2NTQuAicuAzU0PgIzMhYXBy4BIyIVFB4CFx4DFRQOAiMiJidXIj4gIR4RHSQTFy4mGBsyRis5ViBCGzQaOBAbIxMYLycYGjRMMjFnJpUaGhYUDBMQDQgJGCMvHyI6KBcnGFgUFicMEQ4NBwkXIjEiIjorGSYfAAAAAQAR%2F%2FQBbgJ0ABkARQC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAULxu5ABQABD5ZuAAGELkACQAB9LgAANC4AAYQuAAD0LgAFBC5AA0AAfQwMRMjNT8BMxUzFSMVFBYzMjY3Fw4BIyIuAjVVREwRend3Ix0MGQoXFDYkLkEpEwF9bQaEhHPHKiUGBGsGDBwyRysAAAEAPP%2F0AfgB8AAUAGUAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgACS8buQAJAAg%2BWbgAAEVYuAARLxu5ABEABD5ZuAAARVi4AAwvG7kADAAEPlm4ABEQuQAFAAH0ugANAAkADBESObgADRC5AAgAAfQwMRMzERQWMzI2NxEzESMnIw4BIyImNTyTHiAcJhaTeAsDIEkzUUkB8P7fNigaHQFI%2FhBFJitqXgAAAAABAAwAAAH%2FAfAADQBAALgAAEVYuAAALxu5AAAACD5ZuAAARVi4AAovG7kACgAIPlm4AABFWLgADS8buQANAAQ%2BWboABQAAAA0REjkwMRMzFx4BFzM%2BAT8BMwMjDJRAChMKBAkTCkGNoqoB8OolTScnTSXq%2FhAAAAABABgAAALwAfAAIQB2ALgAAEVYuAAALxu5AAAACD5ZuAAARVi4AAovG7kACgAIPlm4AABFWLgAFC8buQAUAAg%2BWbgAAEVYuAAhLxu5ACEABD5ZuAAARVi4ABcvG7kAFwAEPlm6AAUAIQAAERI5ugAPABcAFBESOboAHAAAACAREjkwMRMzFx4BFzM%2BAT8BMxceARczPgE%2FATMDIycuAScjDgEPASMYkjAGCgYEBw0JN384CQ4IBAcJBy%2BId6wtCAwHBAcLByyoAfDmJUgmJkoj5uYlSCYmSCXm%2FhDGI0YoKEYjxgABAA4AAAH0AfAAGQBbALgAAEVYuAABLxu5AAEACD5ZuAAARVi4AAsvG7kACwAIPlm4AABFWLgAGS8buQAZAAQ%2BWbgAAEVYuAAPLxu5AA8ABD5ZugAGAAsADxESOboAFAABABkREjkwMRMnMxceARczPgE%2FATMHFyMnLgEnIw4BDwEjpo%2BeLAoVCwQIEggimJCZnjAMFwwECRQJJ5gBAu5QFSsVFSsVUP%2FxUhUsFRUrFlIAAAABAAz%2FPgH9AfAAHQBGALgAAEVYuAAILxu5AAgACD5ZuAAARVi4ABIvG7kAEgAIPlm4AABFWLgAGS8buQAZAAY%2BWbkAAwAB9LoADQAIABkREjkwMRceATMyNj8BAzMXHgEXMz4BPwEzAw4DIyImJzdMBxIIJSgKB7%2BURwsSCgQIEQk8jawSJzNBLBcgDxpIAgQkHRoB49UiRiUjRyPV%2FgsvRy8YBQVwAAABACYAAAG0AfAACQA9ALgAAEVYuAADLxu5AAMACD5ZuAAARVi4AAgvG7kACAAEPlm5AAYAAfS4AADQuAADELkAAQAB9LgABdAwMTcTIzUhFQMzFSEm0LkBcNDX%2FnJPAS5zTv7RcwAA%2F%2F%2F%2F%2BgAAAkMDNgImAAQAAAAHAOEBGwAA%2F%2F%2F%2F%2BgAAAkMDNgImAAQAAAAHAOMBGwAA%2F%2F%2F%2F%2BgAAAkMDNgImAAQAAAAHAOUBGwAA%2F%2F%2F%2F%2BgAAAkMDRwImAAQAAAAHAOcBGwAA%2F%2F%2F%2F%2BgAAAkMDSAImAAQAAAAHAOoBGwAA%2F%2F%2F%2F%2BgAAAkMDfQImAAQAAAAHAOwBGwAAAAL%2F8gAAAxkCjAAGABYAfAC4AABFWLgADi8buQAOABA%2BWbgAAEVYuAANLxu5AA0ABD5ZuAAARVi4AAkvG7kACQAEPlm6AAIADgANERI5ugAKAA4ADRESObgACi%2B5AAYAAfS4AAkQuQAHAAH0uAAOELkAEAAB9LoAFQAOAAkREjm4ABUvuQATAAH0MDEBESMOAQ8BBRUhNSMHIwEhFSMVMxUjFQGCBBQnFCoCFP5psUSbATYB5%2FrT0wEHARYwXitdi3yVlQKMfIN7lgAA%2F%2F8ALv8jAjACmAImAAYAAAAHAO4BXgAA%2F%2F8ATQAAAe8DNgImAAgAAAAHAOEBIAAA%2F%2F8ATQAAAe8DNgImAAgAAAAHAOMBIAAA%2F%2F8ATQAAAe8DNgImAAgAAAAHAOUBIAAA%2F%2F8ATQAAAe8DSAImAAgAAAAHAOoBIAAA%2F%2F%2F%2F9AAAAOEDNgImAAwAAAAHAOEAlgAA%2F%2F8ASwAAATgDNgImAAwAAAAHAOMAlgAA%2F%2F%2F%2F7gAAAT4DNgImAAwAAAAHAOUAlgAA%2F%2F%2F%2F7QAAAT8DSAImAAwAAAAHAOoAlgAA%2F%2F8ATQAAAkwDRwImABEAAAAHAOcBTQAA%2F%2F8ALv%2F0An4DNgImABIAAAAHAOEBVgAA%2F%2F8ALv%2F0An4DNgImABIAAAAHAOMBVgAA%2F%2F8ALv%2F0An4DNgImABIAAAAHAOUBVgAA%2F%2F8ALv%2F0An4DRwImABIAAAAHAOcBVgAA%2F%2F8ALv%2F0An4DSAImABIAAAAHAOoBVgAAAAMAKP%2FXApQCtQAHABAAKgCFALgAAEVYuAAmLxu5ACYAED5ZuAAARVi4ABkvG7kAGQAEPlm6AAAAGQAmERI5uQACAAH0ugAHACYAGRESOboACAAmABkREjm4ACYQuQAKAAH0ugAQABkAJhESOboAEQAmABkREjm6ABsAGQAmERI5ugAeABkAJhESOboAKAAmABkREjkwMSUWMzI2NTQvASYjIgYVFBYXAR4BFRQOAiMiJwcnNy4BNTQ%2BAjMyFzcXAQgiLUNOCTAkNENOBwYBdRodK05tQl5HPkxFHSErTm1CZklCTI8cc2MtJF0ibmIcMhUBNilpQVB%2BWC8wTTpWK3JFUH1VLTVSOwAAAAACAC4AAAMyAowAFAAhAFUAuAAARVi4AAUvG7kABQAQPlm4AABFWLgAEC8buQAQAAQ%2BWbgABRC5ABwAAfS4AAfQugAMAAUAEBESObgADC%2B5AAoAAfS4ABAQuQAbAAH0uAAO0DAxEzQ%2BAjMhFSMVMxUjFSEVISIuAjcUHgI7AREjIg4CLjJZe0kBq%2FfQ0AEB%2FkNGd1gylxwzRysXFytHMxwBSVR6TyZ8g3uWfChRfFQ7UTEVAZ4UL07%2F%2FwBJ%2F%2FQCTwM2AiYAGAAAAAcA4QFMAAD%2F%2FwBJ%2F%2FQCTwM2AiYAGAAAAAcA4wFMAAD%2F%2FwBJ%2F%2FQCTwM2AiYAGAAAAAcA5QFMAAD%2F%2FwBJ%2F%2FQCTwNIAiYAGAAAAAcA6gFMAAD%2F%2F%2F%2F4AAACFQM2AiYAHAAAAAcA4wEGAAAAAgAaAAACZQKMABAAIQBZALgAAEVYuAAhLxu5ACEAED5ZuAAARVi4ABwvG7kAHAAEPlm5AAAAAfS4ACEQuQAKAAH0ugAOACEAHBESObgADi%2B5AA0AAfS4AA4QuAAe0LgADRC4AB%2FQMDElMj4CNTQuAisBFTMVIxUTMh4CFRQOAisBESM1NxEBFSpEMBsbMEQqHH19JUt4Vi4uVHVIwExMdxYxUDs6Ty8UoUe2AhUmT3pUVHxRKAEtQgUBGAACAE0AAAI6AowAEAAYADkAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAEC8buQAQAAQ%2BWbsAGAABAA4ABCu7AAIAAQAXAAQrMDETMxUzMh4CFRQOAisBFSM3MjU0JisBFU2TWzVdRSgpRlw0W5PleD07UgKMYxUxUDs6UzYae%2FBoMynEAP%2F%2FAC%2F%2F9AHZAtQCJgAeAAAABwDgARkAAP%2F%2FAC%2F%2F9AHZAtQCJgAeAAAABwDiARkAAP%2F%2FAC%2F%2F9AHZAtQCJgAeAAAABwDkARkAAP%2F%2FAC%2F%2F9AHZAsYCJgAeAAAABwDmARkAAP%2F%2FAC%2F%2F9AHZAsYCJgAeAAAABwDpARkAAP%2F%2FAC%2F%2F9AHZAvACJgAeAAAABwDrARkAAAADAC%2F%2F9ALtAfwACwA8AEMAmwC4AABFWLgADy8buQAPAAg%2BWbgAAEVYuAAVLxu5ABUACD5ZuAAARVi4AC4vG7kALgAEPlm4AABFWLgAKC8buQAoAAQ%2BWbgALhC5AAMAAfS6ADYALgAPERI5uAA2L7kACQAB9LoAHQAVACgREjm4AB0vuAAoELkAIQAB9LgADxC5ADkAAfS4ABUQuQBAAAH0uAAdELkAQwAB9DAxNxQWMzI2NyYvAQ4BAz4BMzIWFz4BMzIeAhUUBgchHgEzMjY3Fw4BIyImJw4BIyIuAjU0NjcuASMiBgcFNCYjIgYHux8aGi8UCwMBST57MGU2LkYWIEYtMUoxGQQC%2FuIIQi0cMhsyJl0sOFMgNVgyIjYmFYKSAiEqHkAkAfwkKSMxBpUYFxYUHyMVCyoBCR0kKCMkJyVBWDMUIQk0MhQQXxoeKiMqIxcpNh9PWQ8gJxgVMy04MTQA%2F%2F8AJP8jAb4B%2FAImACAAAAAHAO0BGgAA%2F%2F8AJP%2F0AeEC1AImACIAAAAHAOABDgAA%2F%2F8AJP%2F0AeEC1AImACIAAAAHAOIBDgAA%2F%2F8AJP%2F0AeEC1AImACIAAAAHAOQBDgAA%2F%2F8AJP%2F0AeECxgImACIAAAAHAOkBDgAA%2F%2F%2F%2F9QAAANwC1AImAGcAAAAHAOAAigAA%2F%2F8AOAAAAR8C1AImAGcAAAAHAOIAigAA%2F%2F%2F%2F8AAAASQC1AImAGcAAAAHAOQAigAA%2F%2F%2F%2F4QAAATMCxgImAGcAAAAHAOkAigAAAAEAQQAAANQB8AADACUAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgAAi8buQACAAQ%2BWTAxEzMRI0GTkwHw%2FhAAAP%2F%2FAEEAAAIAAsYCJgArAAAABwDmATQAAP%2F%2FACT%2F9AIHAtQCJgAsAAAABwDgARUAAP%2F%2FACT%2F9AIHAtQCJgAsAAAABwDiARUAAP%2F%2FACT%2F9AIHAtQCJgAsAAAABwDkARUAAP%2F%2FACT%2F9AIHAsYCJgAsAAAABwDmARUAAP%2F%2FACT%2F9AIHAsYCJgAsAAAABwDpARUAAAADACT%2F5wIHAgsABwAPACoASQC4AABFWLgAJS8buQAlAAg%2BWbgAAEVYuAAYLxu5ABgABD5ZugAAABgAJRESObkAAgAB9LoACAAlABgREjm4ACUQuQAKAAH0MDE3FjMyNjU0LwEmIyIGFRQXJR4BFRQOAiMiJwcnNy4BNTQ%2BAjMyFhc3F9wXIy02ByQWIi42BwEVGh8oQ1cvSjwrNy8aHyhDWC8jRB0sN3oUSz8pG0MTSz8oG%2BkhVzY%2BYUIjKDUqOiBXNj5hQiMUEzYrAAADACT%2F9AMSAfwACwA0ADsAcQC4AABFWLgAES8buQARAAg%2BWbgAAEVYuAAwLxu5ADAABD5ZuQADAAH0uAARELkACQAB9LgAERC4ABfQuAAwELgAKtC6AB8AFwAqERI5uAAfL7gAKhC5ACMAAfS4ABcQuQA4AAH0uAAfELkAOwAB9DAxNxQWMzI2NTQmIyIGBzQ%2BAjMyFhc%2BATMyHgIVFAYHIR4BMzI2NxcOASMiJicOASMiLgIlNCYjIgYHuSwpKS4uKSkslSZAVS81Tx0eUi0xSjIZBAL%2B4QhCLRwyGzMmXiwtVB8fTzcwVD8kAnAkKSMxBvhBTExBQUxMQT5hQiMuKSotJUFYMxQhCTQyFBBfGh4tKissI0JhbS04MTQAAAABAEH%2F9AJdAscAOABkALgAAEVYuAAFLxu5AAUAEj5ZuAAARVi4ADgvG7kAOAAEPlm4AABFWLgAGy8buQAbAAQ%2BWboADwAbAAUREjm5ACEAAfS6ACQAGwAFERI5ugAwABsABRESObgABRC5ADMAAfQwMRM0PgIzMh4CFRQOAhUUHgQVFA4CIyImJzcWMzI2NTQuBDU0PgI1NCYjIgYVESNBHTpaPDNNMxoYHhgaJy4nGhcvRS0tRiQzMS4aHRonLicaFhsWIR8uLpEB5zBSPCIcLzwgJDEnIRMRFxYaJTUmIjwsGhgVZCQbFRMbFxkhLSEdKiYpGx0nQzr%2BKv%2F%2FADz%2F9AH4AtQCJgAyAAAABwDgAR0AAP%2F%2FADz%2F9AH4AtQCJgAyAAAABwDiAR0AAP%2F%2FADz%2F9AH4AtQCJgAyAAAABwDkAR0AAP%2F%2FADz%2F9AH4AsYCJgAyAAAABwDpAR0AAP%2F%2FAAz%2FPgH9AtQCJgA2AAAABwDiAQoAAP%2F%2FAAz%2FPgH9AsYCJgA2AAAABwDpAQoAAAACACr%2F9AH%2BAuQADgAyAFkAuAAARVi4AC0vG7kALQASPlm4AABFWLgAFy8buQAXAAQ%2BWbsAIQABAAkABCu6ACkAJgADK7gAFxC5AAAAAfS4ACYQuAAP0LgAKRC4AC3cuAApELgAMNAwMSUyNjU8AScuASMiBhUUFhMeARUUDgIjIi4CNTQ%2BAjMyFhcmJwcnNy4BJzceARc3FwEWKjUBFzAaLDc9ijtMIT1YNy9TQCUiOUknHTgVGjuOJnQULRlAI0YhjyZrSU4MFgsZEjo8Oz4B7jyjcDxmSioiPlk3NlQ6HxMXTThHQToOGg1ZEioZSEEAAAAAAgBB%2F0gCFgK9ABYAIQBXALgAAEVYuAAILxu5AAgACD5ZuAAARVi4AAIvG7kAAgASPlm4AABFWLgAAS8buQABAAY%2BWbgAAEVYuAASLxu5ABIABD5ZuQAaAAH0uAAIELkAHwAB9DAxFyMRMxUHPgEzMh4CFRQOAiMiJicXNR4BMzI2NTQjIgfUk5MEGkAiL0s0HCM7SygkNxoEFCgTJjZWKyq4A3WsRhcaJEJdOUBjRSQYF0qzEg5FTYYtAAABABgAAAKvAskALgB8ALgAAEVYuAATLxu5ABMACD5ZuAAARVi4ACsvG7kAKwASPlm4AABFWLgADy8buQAPAAQ%2BWbgAKxC5AAIAAfS4ABMQuAAl0LgAB9C4ABMQuQAQAAH0uAAM0LgACNC4AA8QuAAL0LgAExC4ABLQuAArELgAGdC5ACAAAfQwMQEmIyIGHQEzFSMRIxEjESMRIzU3NTQ%2BAjMyFhcHLgEjIgYdATM1ND4CMzIWFwKVHBcbHllZk6mTQkIVLUczIDYRGwwaFBohqRMsRTIgMhECSwohJh5z%2FoMBff6DAX1tBRcmRDIdCwdtBQYhIxcaJ0Y0HgwGAAAAAQAY%2F%2FQCnwLJAC4AiQC4AABFWLgAEC8buQAQAAg%2BWbgAAEVYuAAWLxu5ABYAEj5ZuAAARVi4AAwvG7kADAAEPlm4AABFWLgAAy8buQADAAQ%2BWbgAEBC5AA0AAfS4AAnQuAAQELgAD9C4AA8vuAAWELkAHAAB9LgAEBC4ACHQuAAl0LgACRC4ACbQuAADELkAKwAB9DAxJQ4BIyIuAj0BIxEjESM1NzU0PgIzMhYXByYjIgYdATM3MxUzFSMVFBYzMjY3Ap8UNiQuQSkTmZNCQhMsRjIfMxEbHBcbHqERend3Ix0MGQoGBgwcMkcryf6DAX1tBRsnRjQeDAZsCiEmHoSEc8cqJQYEAAAAAAMAGf%2F0AokCmAAKABYARACMALgAAEVYuAAvLxu5AC8AED5ZuAAARVi4AB0vG7kAHQAEPlm4AABFWLgAFy8buQAXAAQ%2BWboAOgAaAAMruAAdELkAAwAB9LoABQAaADoREjm6AAgAHQAvERI5uAAIL7gADty4AC8QuQAUAAH0ugAnAAgADhESOboANwAIAA4REjm6AEEAGgA6ERI5MDE3FBYzMjcuAScOARMUFhc%2BATU0JiMiBgEuAScOASMiLgI1ND4CNy4BNTQ%2BAjMyFhUUDgIHHgEXPgE3Mw4BBx4BF6Q1LCgrJkUdFBg9CwojMBYXGSIBhSlUKiplPjVRNxwTISsYExUZLkEpSlYXJzEZHEMkGSYMhhI1Jh85GbclLhofRCQRJgEgEigUFS4hFxwn%2FeQIIhgfIx4zQyYiNywkDyNFHyM%2BLxtQRCA1LSYRID0aIE4uPG0zEBUEAAAAAAIAJf%2F0AesChwATACcANQC4AABFWLgACi8buQAKAA4%2BWbgAAEVYuAAALxu5AAAABD5ZuQAUAAH0uAAKELkAHgAB9DAxBSIuAjU0PgIzMh4CFRQOAicyPgI1NC4CIyIOAhUUHgIBCDNUOyEhO1QzM1Q7ISE7VDMTIBgNDRggExIgGA4OGCAMK1R8UVF6UykpU3pRUXxUK3ITMlRBQVMvEhIvU0FBVDITAAEARgAAAdoCewAMAEMAuAAARVi4AAcvG7kABwAOPlm4AABFWLgADC8buQAMAAQ%2BWbkAAQAB9LgABxC5AAQAAfS5AAIAAfS4AAEQuAAJ0DAxNzMRIzU%2BATczETMVIUaKdzRIImx3%2Fmx3AW9bChwU%2Ffx3AAAAAQAeAAAB5AKHAB8APQC4AABFWLgADy8buQAPAA4%2BWbgAAEVYuAAeLxu5AB4ABD5ZuQAcAAH0uAAZ0LgAANC4AA8QuQAIAAH0MDE3PgM1NCYjIgYHJz4BMzIeAhUUDgIHPgE7ARUhJT1lSSkwKiM2GFAvYkQvTTgeIjlJJxg7F4D%2BQVQ5Y1dLIi8xJxpPMjMdNUouKFNTUygDBXwAAQAW%2F%2FQB3wKHAC8AUwC4AABFWLgAGy8buQAbAA4%2BWbgAAEVYuAAsLxu5ACwABD5ZuQADAAH0ugALABsALBESObgACy%2B5AAwAAfS4ABsQuQAUAAH0ugAkAAwACxESOTAxNx4BMzI2NTQuAiM1Mj4CNTQmIyIGByc%2BATMyHgIVFAYHFR4BFRQOAiMiJidaHUUpLzgPJkI0KzkjDygmIjceSixhOzFROSA3MzdHJkBWME5sI6scJCckFSIXDWgMFx8TISUeGlomKxctQCoyRRYEEE0%2BLEUvGTEpAAAAAAIAEwAAAfgCewAJABQAVwC4AABFWLgAEi8buQASAA4%2BWbgAAEVYuAANLxu5AA0ABD5ZuwAOAAEAAAAEK7gAEhC4AATcuAAAELgACdC4AA4QuAAL0LgACRC4ABDQuAAAELgAE9AwMQE1NDY3Iw4BDwEFIxUjNSE1EzMRMwEmBAIEDBoOVAFYSYn%2B7ei0SQEIZx9RHho2G4pwmJhlAX7%2BjQABABf%2F9AHgAnsAJABHALgAAEVYuAAQLxu5ABAADj5ZuAAARVi4ACEvG7kAIQAEPlm5AAMAAfS6ABcAEAAhERI5uAAXL7gACdy4ABAQuQASAAH0MDE3HgEzMjY1NCYjIg4CBycTIRUjBz4BMzIeAhUUDgIjIiYnWR1DKTE6Ny0OFhUXDkISAWjpCxIhFClJOCAmQFUuTmwmqholMjEwMgMIDAkqAUF8dwgHGDBKMzVSOR4zJgACACn%2F9AHsAocADQAyAEMAuAAARVi4AC8vG7kALwAOPlm4AABFWLgAJS8buQAlAAQ%2BWbsAGwABAAYABCu4ACUQuQAAAAH0uAAvELkAEQAB9DAxJTI2NTQmIyIGBx4DEy4BIyIOAgc%2BAzMyHgIVFA4CIyIuAjU0PgIzMhYXARYhLy8kGDIWBRQaH5ERNhwaLiMWAgwgIiIPKUUzHCI5TSsuV0MoK0ddMj9cHmIxNjMpHCMmMh8NAYESGxQvTDcQGREJGDBKMjJOOB0kTHdUWYJUKS0fAAEALAAAAeYCewAPADMAuAAARVi4AAcvG7kABwAOPlm4AABFWLgAAC8buQAAAAQ%2BWbgABxC5AAUAAfS4AAnQMDEzPgM3ITUhFQ4DByOfBBUnPS3%2B4wG6N0MlEASUT4V5dD58WkN1fY9dAAAAAAMAKv%2F0AegChwANABgAOgBXALgAAEVYuAAlLxu5ACUADj5ZuAAARVi4ADYvG7kANgAEPlm5AAMAAfS6AAsANgAlERI5uAALL7gADtC4ACUQuQATAAH0uAALELgAHNy4AA4QuAAt3DAxNxQWMzI2NTQuAicOATc2NTQmIyIGFRQWBzQ2NzUuATU0PgIzMh4CFRQGBxUeARUUDgIjIi4CqDooJTATJDEeFRyHJykkHSo81D8tJTAeNkssK0gyHDIhLkAgO1MzMFE7IbMqLycoFR4ZFg0UNKItMCUtJCUnLOM6ShgEHEczKEEuGBktQScuRxYEGU4%2FJkAvGxkuQAAAAAACACL%2F9AHmAocACwAwAEMAuAAARVi4ACMvG7kAIwAOPlm4AABFWLgALS8buQAtAAQ%2BWbsAAAABABkABCu4ACMQuQAGAAH0uAAtELkADwAB9DAxEzI2Ny4BIyIGFRQWBx4BMzI%2BAjcOAyMiLgI1ND4CMzIeAhUUDgIjIiYn%2FBgyFQo3IiAwMF8QNhwbLiMVAgwgIiIPKUUyHSI5TSsuV0MpK0ddMj9dHgFWHCNLOTE2Mym%2BEhsUL0s4EBkRCRgwSjIxTzgdJEx3VFmCVCkuHgAAAQA9%2F%2FQA7wCtAAsAGAC4AABFWLgACS8buQAJAAQ%2BWbgAA9wwMTc0NjMyFhUUBiMiJj0zJiYzMyYmM1AoNTUoJzU1AAABAC7%2FPgEAAK0AEAAYALgAAEVYuAAELxu5AAQABD5ZuAAK3DAxFz4BNSMiJjU0NjMyFhUUBgcuNzoIIzY2JjI0XFh0FEAmKygmLklCU3ca%2F%2F8APf%2F0AO8B8QInAIYAAAFEAAYAhgAA%2F%2F8ALv8%2BAQAB8QInAIYAAAFEAAYAhwAAAAIAUf%2F0AQMCngAFABEAGgC4AABFWLgADy8buQAPAAQ%2BWbkACQAB9DAxEyczBwMjBzQ2MzIWFRQGIyImZQWUBRVgKTMmJjMzJiYzAhmFhf7Olyg1NSgnNTUAAAAAAgBR%2F1IBAwH8AAUAEQANALgADy%2B5AAkAAfQwMR8BIzcTMzcUBiMiJjU0NjMyFu8FlAUVYCkzJiYzMyYmMymFhQEylyg1NSgnNTUAAAIAKf%2F0AaUCqgAdACkAKAC4AABFWLgAJy8buQAnAAQ%2BWbsAEQABAAoABCu4ACcQuQAhAAH0MDE3Jj4ENTQmIyIGByc%2BATMyHgIVFA4EFwc0NjMyFhUUBiMiJpoFDxwjIBUlHhwrFFEiXDgqSTUeFiElHxIDmTImJjMzJiYy5yI4MCglIxMfIBoUSikyFCpBLB8xKicqLx6XKDU1KCc1NQACACr%2FRgGmAfwAHQApABsAuAAnL7sACgABABEABCu4ACcQuQAhAAH0MDEBFg4EFRQWMzI2NxcOASMiLgI1ND4EJzcUBiMiJjU0NjMyFgE1BQ8cIyAVJh0cKxRRIlw4Kkk1HhYhJR8TA5kzJiYzMyYmMwEJIjgwKCUjEx8gGhRKKTIUKkEtHzEqJykvHpcoNTUoJzU1AAAAAAEATAFiAOACrgAFAAsAugACAAQAAyswMRMnMw8BI1EFlAUdUAIphYXHAAD%2F%2FwBMAWIBzAKuACYAjgAAAAcAjgDsAAAAAQA3AVIA5QKrABEAKwC4AABFWLgAAy8buQADAAg%2BWbgAAEVYuAAFLxu5AAUACD5ZuQALAAH0MDETDgEVNjMyFhUUBiMiJjU0NjflLS0DByAtLCEvL0ZIAmsXOy0BJyImLEU%2BR2wjAAABAEcBYAD2ArkAEQANALsACwABAAUABCswMRM%2BATUGIyImNTQ2MzIWFRQGB0ctLQMGIC0rIi4wR0gBoBc7LQEnIiYsRD9HbCMAAAD%2F%2FwA3AVIB0QKrACYAkAAAAAcAkADsAAD%2F%2FwBHAWAB4gK5ACYAkQAAAAcAkQDsAAD%2F%2FwBH%2F1gA9gCxAgcAkQAA%2FfgAAP%2F%2FAEf%2FWAHiALEAJwCRAAD9%2BAAHAJEA7P34AAAAAQAxADgA7gHAAAYACwC6AAIABgADKzAxNzU3FwcXBzGGN29vN8hokCyYmCwAAAAAAQA2ADgA8wHAAAYACwC6AAIABQADKzAxNyc3FxUHJ6VvN4aGN%2FyYLJBokCwAAAD%2F%2FwAxADgBqgHAACYAlgAAAAcAlgC8AAD%2F%2FwA2ADgBrwHAACYAlwAAAAcAlwC8AAAAAQArAMkBIQExAAMADQC7AAEAAQACAAQrMDETMxUjK%2Fb2ATFoAAAA%2F%2F8AKwDJASEBMQIGAJoAAAABACsAzgG1ASwAAwANALsAAQABAAIABCswMRMhFSErAYr%2BdgEsXgAAAQArAM4C9QEsAAMADQC7AAEAAQACAAQrMDETIRUhKwLK%2FTYBLF4A%2F%2F8APQDkAO8BnQIHAIYAAADwAAAAAQAoAHsBMQGRABMACwC6AAoAAAADKzAxNyIuAjU0PgIzMh4CFRQOAqwcMCQUFCQwHBwxJBQUJDF7FSYyHh4zJRUVJTMeHjImFQAAAAEADP90Aej%2FxwADAA0AuwAAAAEAAQAEKzAxBRUhNQHo%2FiQ5U1MAAAABAEj%2FTQEoAt8ADgALALoABgAAAAMrMDEXLgE1NDY3Fw4BFRQWFwfMP0VFP1w3MjI3XLNn3oSE3mcmYtZra9ZiJgAAAAEAMP9NARAC3wAOAAsAugAHAA0AAyswMRc%2BATU0Jic3HgEVFAYHJzA4MjI4XD9FRT9cjWLWa2vWYiZn3oSE3mcmAAAAAQBX%2F2gBKgLEAAcAFwC7AAUAAQAGAAQruwABAAEAAgAEKzAxEzMVIxEzFSNX02Vl0wLETv1ATgABAC7%2FaAEBAsQABwAXALsAAAABAAYABCu7AAMAAQACAAQrMDEXESM1MxEjNZRm09NKAsBO%2FKROAAEAH%2F9oASoCxAAzACsAuwAAAAEAAQAEK7sAHgABAB8ABCu7ABAAAQAPAAQrugAqAA8AEBESOTAxBRUjIiY1ND4CNTQuAic1PgM1NC4CNTQ2OwEVIyIGFRQWFRQGBxUeARUUBhUUFjMBKj9CPgMEAwkUIRgYIRQJAwQDPkI%2FEx8WBCQmJiQEFh9KTj1RGyonJxgNGhUNAVYBDRUaDRgnJyobUT1OHSkpTC45MwkECTM5LkwpKR0AAAABAC7%2FaAE5AsQAMwArALsAAAABADIABCu7ABUAAQAUAAQruwAjAAEAJAAEK7oACgAkACMREjkwMRcyNjU0JjU0Njc1LgE1NDY1NCYrATUzMhYVFA4CFRQeAhcVDgMVFB4CFRQGKwE1QR8WBCQmJiQEFh8TP0I%2BAwQDCRQhGBghFAkDBAM%2BQj9KHSkpTC45MwkECTM5LkwpKR1OPVEbKicnGA0aFQ0BVgENFRoNGCcnKhtRPU4AAAAAAQAN%2F2ABNgLGAAMAGAC4AABFWLgAAC8buQAAABI%2BWbgAAtwwMRMzAyPWYMlgAsb8mgAAAAEAVv8GALYC7gADAAsAugABAAIAAyswMRMzESNWYGAC7vwYAAEAHP9gAUYCxgADABgAuAAARVi4AAAvG7kAAAASPlm4AALcMDETMxMjHGDKYALG%2FJoAAAACAFb%2FBgC2Au4AAwAHAAsAugABAAUAAyswMRMzESMXESMRVmBgYGAC7v5KbP46AcYAAAAAAQAmAV0BowLIAA4AFAC4AABFWLgABS8buQAFABI%2BWTAxEzcnNxc3Mxc3FwcXBycHVztsF3QNTQ1zGGw7PVBRAYloMUgYdncZSDFoLFlZAAACACX%2FrAHrArIADQBBACgAuAAARVi4ACgvG7kAKAAEPlm7ACsAAQAlAAQruwA%2BAAEAEQAEKzAxExQeAhc2NTQuAicGNy4BIyIVFB4EFRQGBx4BFRQOAiMiJic3FjMyNjU0LgQ1NDY3LgE1NDYzMhYXoSAyPR0iIDE9HSPaFzgaNig8RzwoKycLDBkwSC83aSJVMTwfHSc6RTonKyUOD11VOlsfAVEYIRsZDxUmGCEbGA8XoRQcJxIbGyAtQC0sQRgQJhciOioYKStLMxgTExwaHi1ALyZDFxApGkRVKRgAAAIAJ%2F%2BwAhwCjAADABAAJQC4AABFWLgAAC8buQAAAA4%2BWbgAAEVYuAAOLxu5AA4ADj5ZMDEBMxEjAyIuAjU0PgI7AREBiZOTYDVeRikoRV00LAKM%2FSQBFR07Vzk%2FVTUW%2FjkAAAADAC3%2F9wLAAo8AEwAnAEUAMwC7ADoAAQBBAAQruwAtAAEANAAEK7gALRC4ACPcuQAFAAH0uABBELgAGdy5AA8AAfQwMRM0PgIzMh4CFRQOAiMiLgI3FB4CMzI%2BAjU0LgIjIg4CFzQ%2BAjMyFhcHLgEjIgYVFBYzMjY3Fw4BIyIuAi01W3hCQnhaNTVaeEJCeFs1RClGYDc3YEYpKUZgNzdgRilRIDVGJi4%2BGDcQIBQwMTIqGSQTMB1AJypHMx0BRU56VS0tVXtNTntXLi5Xe04%2BZEgnJ0hkPj1kRyYmR2Q%2BLEcyGyMYPRERPS0zPBMPRBcdHDNJAAAAAAQAIAE3Aa0CywATACMAMAA5AFcAuAAvL7gAJS%2B4AC8QuAAU3LkAAAAB9LgAJRC4ABrcuQAKAAH0ugAtAC8AJRESObgALS%2B5ADEAAfS6ACoAMQAtERI5uAAvELgALNC4ACUQuQA3AAH0MDETIi4CNTQ%2BAjMyHgIVFA4CJzI2NTQmIyIOAhUUHgInMzIWFRQHFyMnIxUjNzI2NTQmKwEV5ylJNh8fNkkpKUg2Hx82SCk%2FUFA%2FIDQnFRUnNDFZIy4jKTweHTlODw8PDxUBNx42SiwsSjYeHjZKLCxKNh4xU0ZGUxYoOCMjOCgW%2FSAiJRFNPDxkEQsLDzYAAgAx%2F1QDVgKdAEYAUwA%2FALsAOwABAEIABCu7ACcAAQAPAAQruwBJAAEAFgAEK7sAHgABAE8ABCu7AAUAAQAxAAQrugAiAE8AHhESOTAxNzQ%2BAjMyHgIVFA4CIyImJyMOASMiJjU0PgIzMhYXMzczBwYzMj4CNTQuAiMiDgIVFB4CMzI2NxcOASMiLgIlFDMyNj8BJiMiDgIxSHukXFGDXDIqQlEnK0AIAhVEHzxIHzZKKxkmDQIOWy4VQxYrIhQeQmhJQHpgOi9RaTsnUSAgLmA2S4lpPgE%2FNBAfExgPHxcjGQ3Naat6QjRfg05FZ0UiKCQdJVFFLlhFKhcbKtxWGS9DKTZiSyw1YYlUSm5IJBYRUBkXLl6NYkMUGYcdHCoyAAAAAAIAIgAAAfICigAbAB8AoAC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAKLxu5AAoACD5ZuAAARVi4AA4vG7kADgAIPlm4AABFWLgAFi8buQAWAAQ%2BWbgAAEVYuAAaLxu5ABoABD5ZuwADAAEAAAAEK7gABhC5AAQAAfS4ABDQuAAR0LgAAxC4ABLQuAAAELgAFNC4AAAQuAAY0LgAAxC4ABzQuAARELgAHdC4AB7QMDE3IzUzNyM1MzczBzM3MwczFSMHMxUjByM3IwcjEzcjB2xKVQ5PWxVUFGgVVBRPWw1UXxdVFmcXVd4OaA27Xm5epaWlpV5uXru7uwEZbm4AAP%2F%2FAEwBuAESAz4CBwC3AAABuAAA%2F%2F8AGwG4AU4DSgIHALgAAAG4AAD%2F%2FwAbAawBUQNKAgcAuQAAAbgAAP%2F%2FACMBuAFwAz4CBwC6AAABuAAAAAIAGv%2F0AV8BkgATAB8AKAC4AAovuAAARVi4AAAvG7kAAAAEPlm5ABQAAfS4AAoQuQAaAAH0MDEXIi4CNTQ%2BAjMyHgIVFA4CJzI2NTQmIyIGFRQWvCM8KxgYKzwjIzwrGRkrPCMZIyMZGSMjDBw2TTExTDUcHDVMMTFNNhxSOEZGNjZGRjgAAAABAEwAAAESAYYACgAiALgACC%2B4AABFWLgACi8buQAKAAQ%2BWbgACBC5AAAAAfQwMRMjNT4DNzMRI6VZFB8aFwxWbQEZQgMICg0J%2FnoAAQAbAAABTgGSABcALAC4AAwvuAAARVi4ABYvG7kAFgAEPlm5ABQAAfS4AADQuAAMELkABgAB9DAxNz4BNTQmIyIGByc2MzIWFRQOAgczFSEtS2AeGxQiET08WUFPER0lFXb%2B3zo%2BXyUdIBkWOFBFPxgtLCwXWgAAAQAb%2F%2FQBUQGSACgAPgC4ABUvuAAARVi4ACUvG7kAJQAEPlm6AAgABwADK7gAJRC5AAIAAfS4ABUQuQAOAAH0ugAdAAcACBESOTAxNxYzMjY1NCM1MjY1NCYjIgYHJz4BMzIeAhUUBgceARUUDgIjIiYnXCMwFyFdJCsaFxMfDj0gQi4bMSYWHhseKRkpNx4zUhp2MBgXMz4XGRQWFhE2IyAPHCkZHysQDC8jGy0fEikmAAAAAgAjAAABcAGGAAUAEABMALgADi%2B4AABFWLgACS8buQAJAAQ%2BWbsAAAABAAoABCu4AA4QuQACAAH0uAAAELgABdC4AAoQuAAH0LgABRC4AAzQuAAAELgAD9AwMTc1NyMPARcjFSM1IzU3MxUz1gYEKCrqOmCzjYY6nSl1TVFGV1c2%2Ben%2F%2FwAdAP4BQAJXAgYAvQAA%2F%2F8AGAD%2BAVwCVwIGAL4AAAACAB0A%2FgFAAlcAGQAiADsAuAAAL7gAEC%2B7AAYAAQAeAAQruAAQELkACQAB9LgAABC4ABXQuAAAELkAGgAB9LoAFwAAABoREjkwMTciJjU0NjcuASMiBgcnPgEzMhYdASMnIw4BNzI2NzUOARUUgi82WGMCFxgULhglIUknQEdTCgQSLgYPFw0yJv46KjU5CRYWEA5EFBhJS70hEhdODgw3BRwSHgAAAAACABgA%2FgFcAlcAEwAfABsAuAAKL7gAAC%2B5ABQAAfS4AAoQuQAaAAH0MDE3Ii4CNTQ%2BAjMyHgIVFA4CJzI2NTQmIyIGFRQWuiA6LRsbLTogIDotGxstOiAdHBwdHRsb%2FhcsQCkpQC0XFy1AKSlALBdSMSkqMTEqKTEAAAAAAgAnAY4BSAKuABMAHwAXALsAFAABAAAABCu7AAoAAQAaAAQrMDETIi4CNTQ%2BAjMyHgIVFA4CJzI2NTQmIyIGFRQWtx41JxYWJzUeHjUnFxcnNR4eJSUeHSYmAY4VJzQgHzUnFRUnNR8gNCcVRikhICkpICEpAAAAAgAUAFMB%2FAI%2FAB4AKgAoALgAAEVYuAALLxu5AAsACj5ZuwAiAAEAGwAEK7gACxC5ACgAAfQwMT8BJjU0NjcnNxc2MzIXNxcHFhUUBgcXBycOASMiJwc3FBYzMjY1NCYjIgYUPSIREDxJRTA2NDJFST0iEhA9SUYXNBo3LkZVMiQkMjIkJDKdPi5BIDcWPkpGGRlGSj4tQCE3Fz5KRwwMGEf3LTU1LS01NQAAAAEAJ%2F%2BSAdQC6QAtAF0AuAAARVi4ACcvG7kAJwAOPlm4AABFWLgAEy8buQATAAQ%2BWbgAJxC5AAMAAfS6AAYAEwAnERI5uAATELgAENC4ABMQuQAaAAH0ugAdACcAExESObgAJxC4ACrQMDEBLgEjIgYVFB4EFRQGBxUjNS4BJzceATMyNjU0LgQ1NDY3NTMVHgEXAYMbMiAkJic7RDsnTk5hLGEjQCZFJConJztEOydRR2EwSB0B3hkZHiIYIR4gLkEwSGcRaGQFJyBjHR0iIxokISEuPi1KYQ5nZQcsHwAAAQAwAAAB8QKHACwAVwC4AABFWLgAFi8buQAWAA4%2BWbgAAEVYuAADLxu5AAMABD5ZuwAkAAEAJQAEK7gAAxC5AAEAAfS4AATQuAAlELgAC9C4ACQQuAAM0LgAFhC5AB0AAfQwMTchFSE1PgE1NCYnIzU3My4BNTQ%2BAjMyFhcHLgEjIgYVFBYXMxUjHgEVFAYH7gED%2Fj8tPQEBZEQGBwkgOU4vOFMiUBEmGCgvBgWUgQEBFRh8fFsUTzYHDQdWBRQoFC9MNR0qJ1AVFS4wEiQSWwcOByQ0GwAAAQAMAAACBAJ7AB0AhAC4AABFWLgAHS8buQAdAA4%2BWbgAAEVYuAAJLxu5AAkADj5ZuAAARVi4ABQvG7kAFAAEPlm6AAQAHQAUERI5ugAZAB0AFBESObgAGS%2B5AAwAAfS4ABkQuAAN0LgAGRC4ABjQuAAYL7gAENC4ABgQuQAVAAH0uAAR0LgAGRC5ABsAAfQwMRMXHgEXMz4BPwEzAzMVIxUzFSMVIzUjNTM1IzUzA6MzDBgOBA0YDTKUk3qampqTmZmZepMCe4UhQiAhQiCF%2FttGN0aTk0Y3RgElAAEAFf%2F0AgcChwAxAG0AuAAARVi4ABcvG7kAFwAOPlm4AABFWLgAAy8buQADAAQ%2BWbsAKQABACoABCu4ACoQuAAH0LgAKRC4AAjQuAApELgAI9y4ABDQuAAjELkAIgAB9LgAEdC4ABcQuQAeAAH0uAADELkALgAB9DAxJQ4BIyImJyM1NyY0NTwBNyM1Nz4DMzIWFwcuASMiBgczFSMVHAEXMxUjHgEzMjY3AgckXDZeiRc%2BNgEBNj4MMEVWMi1WIFITKRorOQzW3wG2rA45Kh0rFFAtL3NwRQQHDAcHDAdEBThXPB8oJk8TGD45ShUIDgdLNzocGgAAAgA8%2F9cB5wKPAAYAJAA3ALsAIQABAAoABCu7ABoAAQAgAAQruAAgELgAANC4ACEQuAAG0LgAChC4AA3QuAAaELgAF9AwMQEOARUUFh8BDgEHFSM1LgM1ND4CNzUzFR4BFwcmJxE%2BATcBEyQkJSPUHUQiUTFPOB8gOk4vUSc%2FFkMeGxUkDwGwEEAtLUEPRRkdBV9fBihBWDY1Vj8pCGFdBB0XWhgD%2FvAEEwwAAAH%2FVf%2F0AQoCmAADABgAuAAARVi4AAAvG7kAAAAEPlm4AAHcMDEHATMBqwFgVf6gDAKk%2FVwAAAD%2F%2F%2F9V%2F%2FQBCgKYAgYAxgAA%2F%2F8AGv%2F0A0ACmAAnALYAAAEGACcAxgF9AAAABwC2AeEAAAAA%2F%2F8AL%2F%2F0AyECmAAnALf%2F4wEGACcAxgFkAAAABwC6AbEAAAAA%2F%2F8AL%2F%2F0AyMCmAAnALf%2F4wEGACcAxgFVAAAABwC4AdUAAAAA%2F%2F8AGf%2F0AykCmAAnALn%2F%2FgEGACcAxgF6AAAABwC6AbkAAAAAAAEAIgBeAe4CNgALAB0AuwADAAEAAAAEK7gAAxC4AAbQuAAAELgACNAwMRMjNTM1MxUzFSMVI9KwsGywsGwBFmi4uGi4AAAAAAEAIgEWAe4BfgADAA0AuwABAAEAAgAEKzAxEyEVISIBzP40AX5oAAABADAAcAHgAiMACwALALoABQAJAAMrMDE%2FASc3FzcXBxcHJwcwjo5Jj49Jjo5Jj4%2B6j5BKkJBKkI9KkJAAAAAAAwAiAEkB7gJLAAsAFwAbADIAuAAARVi4AAYvG7kABgAMPlm7AA8AAQAVAAQruwAZAAEAGgAEK7gABhC5AAAAAfQwMQEiJjU0NjMyFhUUBgM0NjMyFhUUBiMiJgMhFSEBCCMuLiMjLi50LiMjLi4jIy6VAcz%2BNAGxKyIiKysiIiv%2B5SIrKyIiKysBCmgAAAD%2F%2FwAiAKMB7gHyAiYAzQB0AAYAzQCNAAAAAQAiAGgB7gIwAAkAFQC6AAEACAADK7oABQAIAAEREjkwMRMlFQ8BFR8BFSUiAcywh4ew%2FjQBf7F5Oi8ELzp5sQAAAAABACIAaAHuAjAACQAVALoACAABAAMrugAFAAEACBESOTAxAQU1PwE1LwE1BQHu%2FjSwh4ewAcwBGbF5Oi8ELzp5sQAAAAIAIgAAAe4CNgALAA8AOAC4AABFWLgADi8buQAOAAQ%2BWbsAAwABAAAABCu4AAMQuAAG0LgAABC4AAjQuAAOELkADAAB9DAxEyM1MzUzFTMVIxUjByEVIdKwsGywsGywAcz%2BNAEmaKioaIg2aAAAAAABADIBEgHeAp4ACQA4ALgAAEVYuAAALxu5AAAAED5ZuAAC3LgAABC5AAUAAfS6AAYAAAACERI5uAACELgACNC4AAnQMDETMxMjLwEjDwEjzXabeS4tBC0ueQKe%2FnSAh4eAAAAAAQAdAPAB8wGkABcAJwC7AAgAAQAPAAQruAAPELgAFNy5AAMAAfS4AAvQuAAPELgAF9AwMRM%2BATMyHgIzMjY3Fw4BIyIuAiMiBgcdJUsmHy4nIxUVIxBMJUsmHy4nIxUUJBABPTkuGBwYHhw7OS4YHBgeHAABACIAXgHuAX4ABQANALsAAQABAAQABCswMRMhESM1ISIBzGz%2BoAF%2B%2FuC4AAEAQf84Af0B8AAXAD8AuAAARVi4AAsvG7kACwAEPlm4AABFWLgAES8buQARAAQ%2BWbkABQAB9LoADgARAAUREjm6ABQAEQAFERI5MDETMxEUFjMyNjcRMxEjJyMOASMiJicXFSNBkx0gHCcWk3gLBBM5IRIfDQmTAfD%2B3zYoGh0BSP4QRSQlCA5agAD%2F%2FwCBAj4BaALUAAcA4AEWAAAAAP%2F%2FAMQCPgGrAtQABwDiARYAAAAA%2F%2F8AfAI%2BAbAC1AAHAOQBFgAAAAD%2F%2FwBwAj8BvALGAAcA5gEWAAAAAP%2F%2FAG0COwG%2FAsYABwDpARYAAAAA%2F%2F8AjAJQAaACrQAHAOgBFgAAAAD%2F%2FwClAiQBhwLwAAcA6wEWAAAAAP%2F%2FALD%2FIwFsAAQABwDtARcAAAAAAAH%2FawI%2BAFIC1AADABgAuAAARVi4AAMvG7kAAwAMPlm4AAHcMDEDMxcjlY5ZawLUlgAAAAAB%2F14CvgBLAzYAAwALALoAAQADAAMrMDEDMxcjopxRdQM2eAAB%2F64CPgCVAtQAAwAYALgAAEVYuAAALxu5AAAADD5ZuAAC3DAxEyM3MxlrWY4CPpYAAAAAAf%2B1Ar4AogM2AAMACwC6AAIAAAADKzAxEyM3Myp1UZwCvngAAf9mAj4AmgLUAAcANwC4AABFWLgABi8buQAGAAw%2BWbgAAEVYuAADLxu5AAMADD5ZuAAGELgAANy6AAUAAAAGERI5MDEDMxcjJyMHIzp0YGM1BDVjAtSWT08AAAAB%2F1gCvgCoAzYABwAXALoABgABAAMruAAGELgAB9y4AAPQMDEDNzMXIycjB6hgkGBxNQQ1Ar54eD09AAAB%2F1oCPwCmAsYAGABBALgAAEVYuAAALxu5AAAADD5ZuAAARVi4AA8vG7kADwAMPlm7ABQAAQADAAQruAAPELkACAAB9LgAAxC4AAzQMDEDPgEzMh4CMzI2NzMOASMiLgIjIgYHI6YIOCgUIhwZCw0QBksIOCgUIR0ZCw0QBksCP0VCDhAOFBhEQw4RDhQZAAAB%2F1YCvwCqA0cAFwAjALoAAAARAAMrugAFAAwAAyu4AAAQuAAI0LgADBC4ABTQMDETIi4CIyIGByM%2BATMyHgIzMjY3Mw4BPxQiHRkMDRQFSwg8JxQiHRkMDRQFSwg8Ar8OEQ4UGUVDDhEOFBlFQwAAAf92AlAAigKtAAMACwC4AAMvuAAB3DAxAyEVIYoBFP7sAq1dAAAAAAL%2FVwI7AKkCxgALABcAKAC4AABFWLgAAC8buQAAAAw%2BWbgABty4AAAQuAAM0LgABhC4ABLQMDEDIiY1NDYzMhYVFAYzIiY1NDYzMhYVFAZjHycnHx8nJ6cfJycfHycnAjsoHh0oKB0eKCgeHSgoHR4oAAAAAv9XArwAqQNIAAsAFwAbALoABgAAAAMruAAAELgADNC4AAYQuAAS0DAxAyImNTQ2MzIWFRQGMyImNTQ2MzIWFRQGYx8nJx8fJyenHycnHx8nJwK8KB4eKCgeHigoHh4oKB4eKAAAAAAC%2F48CJABxAvAACwAXABMAugAMAAAAAyu6AAYAEgADKzAxESImNTQ2MzIWFRQGJzI2NTQmIyIGFRQWMz4%2BMzM%2BPjMRGBgRERgYAiQ3Ly83Ny8vNzcaFRUaGhUVGgAAAAAC%2F48CuQBxA30ACwAXABMAugAMAAAAAyu6AAYAEgADKzAxESImNTQ2MzIWFRQGJzI2NTQmIyIGFRQWMz4%2BMzM%2BPjMRFxcRERgYArk1LS01NS0tNTcXFBQXFxQUFwAAAAAB%2F5n%2FIwBVAAQAEQATALoAAgARAAMrugALAAoAAyswMSczBx4BFRQOAgcnPgE1NCYnJ1YUGiAdMEAkCyQvGSIELwgjHxolGg0COwQUFA0VCAAAAAAB%2F5n%2FIwBVAAQAEQATALoAEQACAAMrugAKAAsAAyswMSczBx4BFRQOAgcnPgE1NCYnJ1YUGiAdMEAkCyQvGSIELwgjHxolGg0COwQUFA0VCAAAAP%2F%2FADUAAADfAtICBgAmAAAAAQAAAPEAZAAHAGkABQABAAAAAAAKAAACAAFzAAMAAQAAAGAAYABgAGAArgEWAWQBqAHmAhwCeAKyAtIDBgNOA3QD2gQqBHQEugUgBXIF3gYKBkYGggb4B1QHkgfICD4Isgj8CXQJ0gokCsYLFAtIC5IL2AwMDIwM4g0sDaAOFg5gDsoPFA9qD6YQGBByEMYQ%2BhEGERIRHhEqETYRQhGoEbQRwBHMEdgR5BHwEfwSCBIUEiASLBI4EkQSUBJcEuITPhNKE1YTYhNuE3oT2BQaFCYUMhQ%2BFEoUVhRiFRQVIBUsFTgVRBVQFVwVaBV0FYAVoBWsFbgVxBXQFdwV6BZOFt4XXBdoF3QXgBeMF5gXpBgeGHwY%2FBmCGjAahBq%2BGwwbehvKHCQcjhzEHUQdrB3OHfYeAh4OHjweYh6yHv4fFB8gH1Qfeh%2BGH5IfnB%2BqH8If2h%2FmH%2FIgBiAOICIgNiBAIGYgeiCcIL4g2iD2IVIhriHIIdoh9CIOIjYipiLYI1Qj0CRiJOIk7CT2JQAlCiVOJXQlsCYKJkwmVCZcJrAm7icqJ4An8ChcKMopRimcKbgpwCnSKeQp9ioIKiwqQCpgKqgqtCrWKvgrMCtiK5wrsiv4LAIsDCwWLCAsKiw0LD4sSCxiLHQsjiygLM4s7C00LWwtgC26Le4uHi5OLnguoi6iLqoAAQAAAAEMzGhqkv5fDzz1AAkD6AAAAADNl4CfAAAAAM2X4xD%2FGf6BBMcDzgABAAkAAgAAAAAAAAKyAFAAAAAAANAAAADQAAACPf%2F6Al0ATQJGAC4CewBNAiQATQIMAE0CfgAuAqIATQEtAE0B%2FQAQAmYATQIGAE0C%2BgBNApkATQKsAC4CXgBNAqwALgJoAE0CLAAjAiwAGQKZAEkCLP%2F5Ay0ADgI3AAsCDf%2F4Ah0AJAIWAC8CPQBBAdMAJAI9ACcCBgAkAVUAGAIWACICOwBBARQANQEW%2F80CJABBAR4AQQNZAEECPABBAisAJAI9AEECPAAnAY4AQQG7ABUBfwARAjgAPAILAAwDCAAYAgIADgIJAAwBzAAmAj3%2F%2BgI9%2F%2FoCPf%2F6Aj3%2F%2BgI9%2F%2FoCPf%2F6A03%2F8gJGAC4CJABNAiQATQIkAE0CJABNAS3%2F9AEtAEsBLf%2FuAS3%2F7QKZAE0CrAAuAqwALgKsAC4CrAAuAqwALgKsACgDZwAuApkASQKZAEkCmQBJApkASQIN%2F%2FgClAAaAmkATQIWAC8CFgAvAhYALwIWAC8CFgAvAhYALwMSAC8B0wAkAgYAJAIGACQCBgAkAgYAJAEU%2F%2FUBFAA4ART%2F8AEU%2F%2BEBFABBAjwAQQIrACQCKwAkAisAJAIrACQCKwAkAisAJAM2ACQCeABBAjgAPAI4ADwCOAA8AjgAPAIJAAwCCQAMAjAAKgI9AEECkAAYArAAGAKbABkCEAAlAhAARgIQAB4CEAAWAhAAEwIQABcCEAApAhAALAIQACoCEAAiASwAPQEsAC4BLAA9ASwALgFUAFEBVABRAc8AKQHPACoBLABMAhgATAEsADcBLABHAhgANwIYAEcBLABHAhgARwEkADEBJAA2AeAAMQHgADYBTAArAUwAKwHgACsDIAArASwAPQFZACgB9AAMAVgASAFYADABWABXAVgALgFYAB8BWAAuAVMADQEMAFYBUwAcAQwAVgHJACYCEAAlAnwAJwLuAC0BzgAgA4cAMQIQACIBeABMAXgAGwF4ABsBeAAjAXgAGgF4AEwBeAAbAXgAGwF4ACMBZwAdAXUAGAFnAB0BdQAYAW0AJwIQABQCEAAnAhAAMAIQAAwCEAAVAhAAPABg%2F1UAYP9VA1kAGgMpAC8DTgAvAzIAGQIQACICEAAiAhAAMAIQACICEAAiAhAAIgIQACICEAAiAhAAMgIQAB0CEAAiAj0AQQIrAIECKwDEAisAfAIrAHACKwBtAisAjAIrAKUCKwCwAAD%2FawAA%2F14AAP%2BuAAD%2FtQAA%2F2YAAP9YAAD%2FWgAA%2F1YAAP92AAD%2FVwAA%2F1cAAP%2BPAAD%2FjwAA%2F5kAAP%2BZANAAAAEUADUAAQAAA9j%2B7wAABOH%2FGf7ZBMcAAQAAAAAAAAAAAAAAAAAAAPEAAwHhArwABQAAAooCWAAAAEsCigJYAAABXgAyASAAAAILBwMDBAMCAgQgAAAHAAAAAQAAAAAAAAAAQURCRQAgAAD%2B%2FwLu%2FwYAAAPYAREgAAGTAAAAAAHgApQAAAAgAAMAAAACAAAAAwAAABQAAwABAAAAFAAEAdIAAAA8ACAABAAcAAAADQAvADkAQABaAGAAegB%2BAL8AzwDfAO8A%2FwExAVMCxgLaAtwgFCAaIB4gIiA6IEQgdCCsIhIiFf%2F%2FAAAAAAANACAAMAA6AEEAWwBhAHsAoADAANAA4ADwATEBUgLGAtoC3CATIBggHCAiIDkgRCB0IKwiEiIV%2F%2F8AAf%2F1AAAATAAA%2F8MAAP%2B9AAAAAP94AAD%2FdwAA%2FzYAAP4U%2FgT9%2F%2BCJAAAAAOB94F3gguBB4Bjeu96yAAEAAAAAADgAAABUAAAAXgAAAGYAbAAAAKgAAADEAAAA4AAAAAAAAAAAANoA3gAAAAAAAAAAAAAAAAAAAAAAAwCKAI8AsQDBAMgAewCOAKEAogCrAMwAhwCaAIYApwCIAIkA0QDQANIAjACwAKMAqQCkANQAoADYAKUAqACmANUA7wCLAMUAwgDAAMMAqgCsANwArgC7AJgA1gCbAK8A3QC%2FANMAswC0ANkA1wCtAJ4A3wCyALwAmQDJAMoAywCNAFUASABJAEoASwBMAE0AzgBOAFAAUQBSAFMAVABWAHAAdwBoAGkAagBrAGwAbQDPAG4AcQByAHMAdAB1AHgAdgBPAG8AkACRAJQAkgCTAJUAALgAACxLuAAJUFixAQGOWbgB%2F4W4AEQduQAJAANfXi24AAEsICBFaUSwAWAtuAACLLgAASohLbgAAywgRrADJUZSWCNZIIogiklkiiBGIGhhZLAEJUYgaGFkUlgjZYpZLyCwAFNYaSCwAFRYIbBAWRtpILAAVFghsEBlWVk6LbgABCwgRrAEJUZSWCOKWSBGIGphZLAEJUYgamFkUlgjilkv%2FS24AAUsSyCwAyZQWFFYsIBEG7BARFkbISEgRbDAUFiwwEQbIVlZLbgABiwgIEVpRLABYCAgRX1pGESwAWAtuAAHLLgABiotuAAILEsgsAMmU1iwQBuwAFmKiiCwAyZTWCMhsICKihuKI1kgsAMmU1gjIbgAwIqKG4ojWSCwAyZTWCMhuAEAioobiiNZILADJlNYIyG4AUCKihuKI1kguAADJlNYsAMlRbgBgFBYIyG4AYAjIRuwAyVFIyEjIVkbIVlELbgACSxLU1hFRBshIVktALAAKwCyAQECKwGyAgICKwG3AiYeGBMMAAgrtwMlHhgTDAAIKwC3ATAoIhgQAAgrALIECAcrsAAgRX1pGERLsGBSWLABG7AAWbABjgAAFABzAJIAlgAAAAz%2FMwAMAeYADAIGAAwCPgAMAn4ADAKQAAwCyAAMAAAABwBaAAMAAQQJAAEAHgAAAAMAAQQJAAIACAAeAAMAAQQJAAMARgAmAAMAAQQJAAQAKABsAAMAAQQJAAUAggCUAAMAAQQJAAYAJAEWAAMAAQQJAA4ASAE6AFMAbwB1AHIAYwBlACAAUwBhAG4AcwAgAFAAcgBvAEIAbwBsAGQAMQAuADAANQAwADsAQQBEAEIARQA7AFMAbwB1AHIAYwBlAFMAYQBuAHMAUAByAG8ALQBCAG8AbABkADsAQQBEAE8AQgBFAFMAbwB1AHIAYwBlACAAUwBhAG4AcwAgAFAAcgBvACAAQgBvAGwAZABWAGUAcgBzAGkAbwBuACAAMQAuADAANQAwADsAUABTACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAMAA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMAAuADcAMAA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4ANQAuADUAOQAwADAAUwBvAHUAcgBjAGUAUwBhAG4AcwBQAHIAbwAtAEIAbwBsAGQAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAZABvAGIAZQAuAGMAbwBtAC8AdAB5AHAAZQAvAGwAZQBnAGEAbAAuAGgAdABtAGwAAgAAAAAAAP%2B1ADIAAAAAAAAAAAAAAAAAAAAAAAAAAADxAAABAgEDAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQCtAMkAxwCuAGIAYwCQAGQAywBlAMgAygDPAMwAzQDOAGYA0wDQANEArwBnAJEAsADWANQA1QBoAOsA6QDtAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2AHcA1wB4AHoAeQB7AH0AfAChALEAiQB%2FAH4AgACBAOwAugDqAO4BBAEFAAkAEwAUABUAFgAXABgAGQAaABsAHAARAA8AHQAeAAQAowAiAKIACgAFALYAtwC0ALUAxADFAL4AvwCpAKoAEAEGALIAswDDAIcAQgALAAwAPgBAAF4AYAASAF8APwDoAA0AhgCIAIsAigAjAAYBBwEIAQkBCgELAQwBDQEOAQ8AnQCeARABEQCDAL0ABwCFAJYBEgCEALwBEwAIAPUA9AD2AA4A7wDwALgAIAAfACEAkwBBAGEApAEUAEMAjQDYANkAjgDaAN0A3gEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUETlVMTAJDUgNmX2YDZl90B3VuaTAwQUQIb25lLnN1cHMIdHdvLnN1cHMKdGhyZWUuc3Vwcwlmb3VyLnN1cHMJemVyby5kbm9tCG9uZS5kbm9tCHR3by5kbm9tCnRocmVlLmRub20JZm91ci5kbm9tBmEuc3VwcwZvLnN1cHMERXVybwd1bmkyMjE1B3VuaTAwQjUHdW5pMDMwMAt1bmkwMzAwLmNhcAd1bmkwMzAxC3VuaTAzMDEuY2FwB3VuaTAzMDILdW5pMDMwMi5jYXAHdW5pMDMwMwt1bmkwMzAzLmNhcAd1bmkwMzA0B3VuaTAzMDgLdW5pMDMwOC5jYXAHdW5pMDMwQQt1bmkwMzBBLmNhcAd1bmkwMzI3C3VuaTAzMjcuY2FwB3VuaTAwQTAFaS50cmsAAAAAAAAB%2F%2F8AAgABAAAADAAAAAAAAAACAAgABAA3AAEAPgA%2BAAEATgBPAAEAZwBnAAEAbgBvAAEAeAB4AAEAeQB6AAIA2gDaAAEAAQAAAAoAMABEAAJERkxUAA5sYXRuABoABAAAAAD%2F%2FwABAAAABAAAAAD%2F%2FwABAAEAAmtlcm4ADmtlcm4ADgAAAAEAAAABAAQAAgAAAAIACgEuAAEAJAAEAAAADQBCAGgAegCcALIAwADWAOQA8gD4AQIBEAEaAAEADQAJABMAGQAbADMANQBWAHAAiwCNAJ4ApwCpAAkAGf%2F6ABv%2F5AAz%2F94ANf%2FcAGUADABmACAAnv%2FuAKf%2F0ACvAAYABAAb%2F%2BQANf%2FuAKf%2FzgCvABAACAAz%2F%2FYANf%2FtAGMAEQBlACgAZgBBAJ7%2F%2FQCn%2F%2BUArwAzAAUAM%2F%2FmADX%2F9gCe%2F9gAq%2F%2F2AK%2F%2F9AADABn%2F%2BACn%2F%2BwArwAbAAUAGf%2FwABv%2F9gCe%2F%2BwAq%2F%2F8AK8ACwADAKf%2F4QCp%2F9gAq%2F%2FZAAMAM%2F%2FmAKn%2F3ACv%2F8sAAQAZ%2F8wAAgAZ%2F6gAG%2F%2B7AAMAGf%2FcABv%2F3AA1%2F%2BwAAgBmABAA8AAHAAIAGf%2FUADP%2F7AACFIwABAAAFN4WLAA5AC4AAP%2F5%2F73%2F8f%2F5%2F8AAGABAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5v%2B6AAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F7wAAAAA%2F6gAAAAAAAAAAAAA%2F%2BT%2F5P%2FgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FoP%2FK%2F8r%2FggAAAC0AAAAAAAD%2Fp%2F%2FEAAD%2Fq%2F%2FL%2F6f%2F3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FYABwAAAAAAAP%2FYAAAAAAAA%2F%2BQAAP%2Fw%2F7AAB%2F%2F7%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F9j%2F9QAA%2F%2B4AAAAA%2F%2B7%2FsAAAAAAAAAAA%2F%2FYAAP%2F2AAAAAAAA%2F%2B4AAP%2Bs%2F9j%2F5P%2BiAAAAAAAAAAD%2F7v%2F6%2F9z%2FuP%2Bv%2F%2B7%2F%2BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5AAA%2F%2Fj%2F7gAAAAD%2F7gAAAAAAAP%2Fu%2F%2FgAAAAAAAAAAP%2FtAAD%2F9gAA%2F%2BIAAP%2FsAAAAAAAAAAAAAP%2Fz%2F%2FgAAAAAAAD%2F7v%2F2%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F0%2F%2B7%2F%2BP%2Fw%2F%2BwAAP%2FuAAAAAAAA%2F%2BT%2F9v%2FbAAAAAAAA%2F%2FYAAP%2Fu%2F%2FYAAAAA%2F7gABAAAAAAAAAAA%2F%2Fj%2F%2BAAAAAAAAP%2Fu%2F%2FYAAP%2Fc%2F%2B4AAAAAAAAAAAAAAAAAAAAA%2F%2BwAAP%2F4AAAAAAAAAAAAAAAA%2F%2FgAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FqAAAAAP%2F0AAAAAAAAAAD%2F7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5v%2Fu%2F%2Fb%2F5gAA%2F%2Fb%2F3v%2FQAAD%2F9v%2FrAAD%2F5AAAAAD%2F8AAAAAD%2F3P%2F1%2F94AAP%2FI%2F%2BQAAAAAAAAAAP%2FuAAD%2F8P%2Fe%2F9D%2F3v%2Fm%2F%2Bb%2FzP%2F2AAAAAP%2FuAAAAAAAAAAAAAP%2BI%2F9v%2Fxf%2Bq%2F%2FgAAP%2FL%2F5QAAP%2F6%2F%2BQAAP%2FcAAD%2F7v%2FyAAAAAP%2Fl%2F%2Fb%2FVP%2Bw%2F5D%2FkAAAAAAAAAAA%2F7EAAP%2FM%2F3T%2FlP%2FL%2F9oAAP%2FU%2F%2BgAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAA%2F%2BwAAAAAAAAAAAAA%2F%2FYAAP%2FsAAAAAAAAAAD%2FygAAAAAAAP%2FoAAAAAAAA%2F%2FwAAAAAAAD%2F9v%2FmAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F8AAAAAAAAAAAAAD%2F7AAAAAD%2F7v%2F2AAAAAAAAAAD%2F9v%2Fy%2F%2FYAAP%2F2AAD%2F9v%2F0AAAAAAAA%2F%2FYAAP%2F2AAQAAAAAAAAAAP%2Fu%2F%2FYAAAAAAAAAAAAA%2F%2B7%2F4P%2FiAAAAAP%2Fu%2F%2B4AAAAAAAAAAP%2FsAAAAAP%2FwAAAAAAAAAAAAAAAA%2F%2B4AAAAAAAAAAAAA%2F%2B4AAAAAAAD%2F9AAAAAD%2F%2BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FIAAAAAAAAAAAAAAAAAAAAA%2F%2B7%2FwAAA%2F%2BgAAP%2BM%2F9j%2F5%2F%2FU%2F%2BT%2FwP%2F0%2F7T%2FhgAA%2F%2FT%2F1gAAAAD%2FvAAU%2F7wAAAAAAAAAAP%2FsAAAAAAAA%2F%2Bj%2F6P%2Fn%2F7D%2FyP%2FW%2F8T%2FwP%2FYAAAAAAAAAAAAAAAAAAD%2F7v%2F2AAAAAAAA%2F%2Bb%2F9P%2F2AAAAAP%2F4AAAAAP%2FIAAAAAAAAAAAAAAAAAAD%2F8AAAAAAAAP%2F2%2F%2FYAAAAAAAAAAAAA%2F%2FAAAAAAAAD%2F%2BAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FwAAAAAAAD%2F2gAAAAAAAAAA%2F%2FQAAAAA%2F9EAAAAAAAAAAAAAAAAAGf%2F4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F4%2F%2FYAAAAA%2F%2Fb%2F5gAAAAAAAAAA%2F%2B7%2F9gAAAAD%2FxAAA%2F%2B7%2F%2B%2F%2BQ%2F%2B7%2F7f%2Fq%2F%2B7%2FtAAA%2F8n%2FnAAA%2F%2B7%2F2gAAAAD%2FyAAY%2F9EAAAAAAAAAAAAA%2F%2FAAAAAA%2F%2B7%2F5P%2Fa%2F7T%2Ft%2F%2FY%2F8n%2FyP%2B6%2F9wAAAAAAAAAAP%2F2AAD%2F7v%2F1AAD%2F9AAAAAAAAP%2Fi%2F%2Fb%2F7P%2F0%2F%2Bz%2F8%2F%2FoAAD%2F7v%2FyAAAAAP%2FEABQAAAAAAAAAAAAAAAAAAAAAAAD%2F9P%2F0AAD%2F6P%2FoAAAAAAAAAAAAAAAAAAAAAP%2FkAAD%2F%2BP%2FkAAAAAAAA%2F%2BYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F1AAAAAAAAAAAAAAAAAAA%2F%2BYAAP%2FgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAA%2F%2BT%2F9gAAAAAAAAAAAAAAAAAAAAD%2F9gAA%2F%2BQAAAAAAAAAAAAAAAD%2F7gAGAAAAAAAAAAD%2F7gAAAAAAAAAAAAAAAP%2F7%2F94AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F3AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2BM%2F%2BX%2F2v%2BQAAAAJP%2Fs%2F28AAAAAAAAAAAAAAAAAAAAAAAAAAP%2FqAAD%2FWAAAAAAAAAAAAAAAAAAA%2F6QAAAAA%2F4D%2Fg%2F%2FE%2F90AAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BQAAP%2F2%2F9z%2F9gAA%2F%2Fr%2F9gAAAAD%2F7AAAAAD%2F9f%2F7AAD%2F7AAA%2F%2B4AAP%2Fo%2F97%2F%2BP%2FxAAAAAAAAAAD%2F5gAA%2F%2FAAAAAA%2F%2Fr%2F%2Bv%2FwAAD%2F8QAAAAAAAAAAAAAAAAAAAAAAKgAAACoAKv%2F1%2F%2FYAAAAY%2F8AAAAAAAAAAAP%2FsAAD%2F9gAAAAAAAP%2F8AAAAIP%2FsADL%2F%2FAAEAAAAAAA6ABgAFgAoABgABAAA%2F%2Fj%2F7gAAAAD%2F%2BP%2FuAAAAAAAjAAAAAP%2FcAAAAAP%2FuAAAALv%2F4AAAAAAAAAAAAAAAA%2F%2B0AAP%2FuAAAAAAAAAAD%2F6AAAAAAABAAcAAAAAAAAAAAAAP%2FSAAAAAP%2F4%2F%2FgAAAAAAAAAAAAA%2F%2B4AAAAAAAQAAAAA%2F88AAAAA%2F%2B7%2F9v%2F2AAD%2F3AAEAAAAAAAAAAD%2F9gAA%2F%2BQAAAAA%2F%2B7%2F7v%2F8AAD%2F3P%2FwAAAAAAAAAAAAAAAA%2F%2BAAAAAAAAAAAP%2F4%2F6v%2F3AAAAAD%2F8P%2FwAAAAAAAAAAD%2F5AAAAAD%2F5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BgAAAAAAAAAAAAAAAAAAP%2F2AAD%2F8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FFAAAAAP%2FIAAAAAP%2F4%2F9z%2F9gAAAAAAAAAA%2F%2FX%2F%2BwAAAAAAAAAAAAAAAP%2FcAAD%2F8AAAAAAAAAAA%2F%2Bz%2F%2BP%2FgAAD%2F%2FP%2F4%2F%2Fj%2F5gAAAAAAAP%2F7%2F%2FMAAAAAAAAAAAAAAAAAAAAA%2F%2Fv%2F6AAAAAAAAP%2BE%2F7AAAAAAAAD%2F3v%2Fu%2F%2BgAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FU%2F4QAAP%2FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F2AAAABf%2Fw%2F6j%2F7AAA%2F%2FYAAP%2FjAAD%2F9v%2B3AAAAAAAAAAAABP%2F0ACD%2F6AAAAAAAAAAAAAAAAAAAABgABQAEAAD%2F5P%2FsAAD%2F9v%2F2AAAAAAAAAAAAAP%2FkAAAAAP%2FsAAAAAAAA%2F%2BcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5AAAAAAAAAAAAAAAAAAA%2F%2FYAAP%2FnAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAA%2F%2B4AAAAA%2F%2Fj%2F9gAAAAAAAAAEAAAAAAAAAAD%2F9AAA%2F%2FYAAAAAAAAAAAAAAAD%2F7AAYAAQAAAAAAAAAAAAA%2F9wAAAAAAAAAAAAA%2F9z%2F9AAAAAAAAAAAAAQAAAAAAAD%2F7AAAAAD%2F4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FIAAAAAAAAAAAAAAAAAAP%2FuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FkAAAAAP%2FnAAD%2F9gAAAAD%2Frf%2F4AAAAAAAA%2F%2FYAAP%2F4%2F%2BIAAAAAAAAAAAAAAAAACwAAAAAAAAAA%2F%2Fj%2F7gAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BYAAAAAAAAAAAAA%2F%2BwAAAAA%2F%2FAAAP%2F2AAAAAP%2FEAAAAAAAAAAD%2F7AAA%2F%2Fj%2F2AAAAAAAAAAAAAAAAAAb%2F%2FwAAAAAAAD%2F%2BP%2F4AAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5AAAAAAAAAAAAAD%2F6gAAAAD%2F%2BAAAAAD%2F%2BAAAAAAAAAAAAAAAAP%2FyAAD%2F9gAAAAAAAP%2F2AAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAD%2F%2BAAAAAD%2F5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F6%2F%2FL%2F5AAA%2F%2BYAAP%2Bk%2F9n%2F5f%2Fi%2F%2Fb%2F2gAA%2F%2B7%2FegAA%2F%2Fb%2F7QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5gAAAAD%2F7P%2Fs%2F%2BX%2FzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FkAAAAAAAAAAAAAAAAAAD%2F2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F8gAAAAD%2F9v%2FwAAAAAAAA%2F3z%2Fzv%2F2%2F80AAP%2FeAAD%2F6%2F9yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F%2Bf%2FsAAD%2F9v%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9gAAAAD%2F7AAA%2F%2FYAAP%2B0%2F%2B7%2F9P%2Fs%2F%2Fb%2F3QAA%2F%2B3%2FwAAAAAD%2F4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9gAA%2F%2Bz%2F7P%2Fs%2F%2B7%2F6%2F%2FlAAAAAAAAAAD%2F7P%2F2AAAAAAAAAAD%2F5v%2FwAAD%2F%2Bv%2FuAAD%2F5v%2F2%2F%2Bb%2F8P%2FwAAD%2F5v%2F2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F4%2F%2FAAAP%2FuAAD%2F3P%2FuAAAAAP%2Fu%2F%2FAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FkAAP%2F4%2F7QAAAAAAAAAAAAAAAAAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F3P%2FcAAAAAAAA%2F%2FgAAP%2FuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5v%2BoAAAAAAAAAAAAAAAA%2F%2FgAAAAAAAD%2F7QAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5v%2B0%2F7kAAP%2FuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FYAAD%2F5v%2B6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Bb%2F8AAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8gAAP%2F2%2F7cAAAAAAAAAAAAAAAD%2F4v%2F0AAAAAAAAAAD%2F4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7P%2FuAAAAAAAAAAAAAP%2FkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2Fe%2F%2B3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F%2BAAAAAAAAAAAAAAAAAAAAAAAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6AAAAAAAAP9o%2F68AAAAAAAD%2F2v%2F0%2F%2BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FwAAAAAAAAAAAAAAAAAAAAAAAA%2F90AAAAAAAAAAAAAAAD%2F7AAAAAD%2F8AAA%2F%2FYAAAAA%2F8T%2F8wAA%2F%2FgAAP%2FsAAD%2F%2BP%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F8AAAAAAAAP%2FkAAAAAAAAAAAAAP%2FoAAAAAP%2FfAAAAAP%2FuAAAAAAAA%2F%2FgAAP%2F2%2F%2FYAAP%2FmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fu%2F%2BQAAAAAAAD%2F7AAAAAAAAgANAAQAIAAAACIAJQAdACgAKAAhACoAYgAiAGcAdgBbAHgAegBrAIYAkwBuAJYAngB8AKEAoQCFAKMAowCGAKUApQCHAKcApwCIAKkAqQCJAAEABACkAAYABwAIAAwAJgAnAAkAKAApACoACgALACgAKAAMACsADAANAA4ADwAQAC0AEQAuABIAEwAUAB0AFQAAABgAGQAaABwAAAAAABsAAAAcABwAHQAdACIAHwAgACEAIgA3ACMAOAAkACUABgAGAAYABgAGAAYAJgAIACYAJgAmACYAKQApACkAKQAoAAwADAAMAAwADAAMACYAEAAQABAAEAASAAwALAAUABQAFAAUABQAFAAYABUAGAAYABgAGAAAAAAAAAAAACIAHAAdAB0AHQAdAB0AHQAYADEAIgAiACIAIgAkACQAAAAdABkAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAXABYAFgABAAIANAAEADUANQAeADYAHgA2AAAAAAAyADMAMgAzADAAMAAwADAAAwAAAAAALwAAAC8AAAAvAAAABQACAEgABAAEAAsABgAGAA4ACgAKAA4ADQANABIAEgASAA4AFAAUAA4AFgAWAAwAFwAXAAIAGAAYAAMAGQAZAB4AGgAaAAQAGwAbAB8AHAAcAAUAHQAdAA0AHgAeAA8AIAAiABEAIwAjABAAJAAkAAYAJgAmABMAJwAnAAcAKgArACgALAAsABEALQAtACgALgAuABEALwAvACgAMAAwACkAMQAxABQAMgAyABUAMwAzACMANAA0ACQANQA1ACUANgA2AAgANwA3ACoAOAA9AAsAPwA%2FAA4ASQBPAA4AUABTAAMAVABUAAUAVQBVAAEAVwBdAA8AXgBiABEAYwBmABMAZwBoACgAaQBvABEAcQB0ABUAdQB2AAgAeQB6ABAAhgCHAAoAiACJACwAigCKABsAiwCLABwAjACMACAAjQCNAB0AjgCPACEAkACQACIAkQCRAAkAkgCSACIAkwCTAAkAlgCWACcAlwCXACsAmACYACcAmQCZACsAmgCdACYAngCeABgAogCiAC0ApACkAC0ApgCmAC0ApwCnABoAqQCpABcAqwCrABYArwCvABkA8ADwABMAAAABAAAACgBgAJ4AAkRGTFQADmxhdG4AGgAEAAAAAP%2F%2FAAEAAAAWAANBWkUgAB5DUlQgAChUUksgADIAAP%2F%2FAAEAAQAA%2F%2F8AAgACAAUAAP%2F%2FAAIAAwAGAAD%2F%2FwACAAQABwAIbGlnYQAybGlnYQAybGlnYQAybGlnYQAybGlnYQAybG9jbAA4bG9jbAA4bG9jbAA4AAAAAQABAAAAAQAAAAIABgAaAAEAAAABAAgAAQAGAMoAAQABACYABAAAAAEACAABABoAAQAIAAIABgAMAHkAAgAjAHoAAgAxAAEAAQAj%29%20format%28%27truetype%27%29%3B%0A%7D%0A%40font%2Dface%20%7B%0Afont%2Dfamily%3A%20%27Source%20Sans%20Pro%27%3B%0Afont%2Dstyle%3A%20italic%3B%0Afont%2Dweight%3A%20400%3B%0Asrc%3A%20url%28data%3Aapplication%2Ffont%2Dsfnt%3Bbase64%2CAAEAAAARAQAABAAQR0RFRgNEA3IAAG18AAAAQEdQT1Oz7r2nAABtvAAAFhxHU1VCjb2NzgAAg9gAAABwT1MvMlq1lDoAAGQ0AAAAYGNtYXDzMPm1AABklAAAAeZjdnQgDZkA%2BgAAaDwAAAAoZnBnbQZZnDcAAGZ8AAABc2dhc3D%2F%2FwADAABtdAAAAAhnbHlmQB3ERQAAARwAAFz4aGVhZP3Ms%2BoAAGAYAAAANmhoZWEIGwb0AABkEAAAACRobXR4lfkiLwAAYFAAAAPAbG9jYezv1iYAAF40AAAB4m1heHADCgJaAABeFAAAACBuYW1lJDg%2BsQAAaGQAAAHccG9zdNT1lfMAAGpAAAADMXByZXCXBvrrAABn8AAAAEsABQAkAAACbgKUAAMABgAJAA8AFQBxALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAIvG7kAAgAEPlm6AAQAAgAAERI5ugAFAAIAABESOboABwACAAAREjm6AAgAAgAAERI5uQAKAAH0ugAOAAIAABESObgAABC5ABEAAfS6ABUAAgAAERI5MDETIQMhEwM3FxMHAzMvASMHEzcjHwEzpgHIgv44sl6poWCr4fksHwRHoFrlKBwEApT9bAI%2F%2Firr6wHW6%2F7kiGVlAR1%2Ff10AAv%2FLAAAB1QKQAAkAEQBUALgAAEVYuAAOLxu5AA4AED5ZuAAARVi4ABEvG7kAEQAEPlm4AABFWLgADC8buQAMAAQ%2BWboABQAMAA4REjm6AAsADAAOERI5uAALL7kACQAB9DAxAScuAScjDgEPARcjByMBMxMjAWwKBQkEBBozHDrJ6GlWAWRaTFEBCXA0aTk5ZzZwPM0CkP1wAAAAAwAjAAACIAKQABMAHAAlAFcAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAEy8buQATAAQ%2BWboAIwAAABMREjm4ACMvuQAcAAH0ugAJABwAIxESObgAABC5ABoAAfS4ABMQuQAdAAH0MDETMzIWFRQOAg8BHgEVFA4CKwETMjY1NCYrAQcTMjY1NCYrAQOmr19sGSo0GwEzRilKZDrS9l5aREtbLDNebk1JdDQCkElIITcqHAYEDEE4N08zGQF2RjgtMt3%2Bx0RNMj3%2FAAAAAQA5%2F%2FQCLQKcACEAOQC4AABFWLgABS8buQAFABA%2BWbgAAEVYuAAdLxu5AB0ABD5ZuAAFELkADAAB9LgAHRC5ABYAAfQwMTc0PgIzMhYXBy4BIyIOAhUUHgIzMjY3Fw4BIyIuAjkxWX1MOVAYNhQ1JjteQiQTKEAsKEMgIyRcPDhXOx%2F9TZV1SDcqKSAnPmJ5PC1LNh8gGzIgLCdGYQAAAAIAIwAAAjYCkAAKABUANQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAKLxu5AAoABD5ZuQALAAH0uAAAELkAEwAB9DAxEzMyFhUUDgIrATcyPgI1NCYrAQOmeomNMVuEU7CwQGZIJmZkNmoCkId5WZRpOkAxV3pJXmj97wABACMAAAIQApAACwBNALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm4AAAQuQACAAH0ugAGAAsAABESObgABi%2B5AAQAAfS4AAsQuQAJAAH0MDETIQchBzMHIwchByGmAWoN%2FuMq8Q7vMwEmDv6OApBB1UL2QgAAAAEAIwAAAhACkAAJAEMAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACS8buQAJAAQ%2BWbgAABC5AAIAAfS6AAYAAAAJERI5uAAGL7kABAAB9DAxEyEHIQczByMDI6YBag3%2B4y3xDfA8TgKQQeRC%2FtcAAAABADn%2F9AI7ApwAJQBNALgAAEVYuAAFLxu5AAUAED5ZuAAARVi4ACEvG7kAIQAEPlm4AAUQuQAMAAH0uAAhELkAFgAB9LoAGgAFACEREjm4ABovuQAcAAH0MDE3ND4CMzIWFwcuASMiDgIVFB4CMzI2PwEjNzMDDgEjIi4COTFagVE7URk3EzcoPmJFJBMqQi8kOBQliA3OOSRdOTtbPh%2F9TpV1RzcqKSAnPmJ5PCxLOB8XEbVA%2FuQeJSZFYgAAAAABACMAAAJpApAACwBJALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm6AAgAAAALERI5uAAIL7kAAgAB9LgAABC4AATQuAALELgAB9AwMRMzAyETMwMjEyEDI6ZOOAEoOE2DTj%2F%2B2D5OApD%2B6wEV%2FXABOP7IAAAAAAEAIwAAAPQCkAADACUAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAAi8buQACAAQ%2BWTAxEzMDI6ZOg04CkP1wAAAB%2F%2F7%2F9AHIApAAEgArALgAAEVYuAAQLxu5ABAAED5ZuAAARVi4AAUvG7kABQAEPlm5AAwAAfQwMSUOAyMiJic3HgEzMjY3EzMDAWoIIjJEKztRFTMOOCoyPg1cTl64Kkg1HTcuKyQpSkIBzf4oAAAAAQAjAAACVwKQAAwASQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAMLxu5AAwABD5ZugACAAAADBESObgAABC4AATQuAAMELgACNC6AAkABAAIERI5MDETMwMzATMHEyMDDwEjpk5BAwFJWPaVUX6JLU4CkP68AUT8%2FmwBYobcAAABACMAAAGSApAABQArALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAQvG7kABAAEPlm5AAIAAfQwMRMzAyEHIaZOdgEUDf6eApD9skIAAQAjAAACvAKQABkAXQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAZLxu5ABkABD5ZuAAAELgABtC4ABkQuAAJ0LoAAwAGAAkREjm6AA0ACQAGERI5ugARABkAABESOboAFAAAABkREjkwMRMzExczNxMzAyMTPgE3IwcDIwMnIw4BBwMjpl05FgRGw12DS0wJGgwET8EsPRYEBg4ISkkCkP6eiIgBYv1wAXItaSuS%2FqQBXJItZy3%2BjgAAAAABACMAAAJmApAAEwBFALgAAEVYuAAALxu5AAAAED5ZuAAARVi4ABMvG7kAEwAEPlm4AAvQuAAAELgACNC6AAQACwAIERI5ugAOAAAAExESOTAxEzMTFzM%2BATcTMwMjAycjDgEHAyOmTpYqBAYNC0VLg02UKwQGDwpGSwKQ%2FlyJMW0zAVz9cAGjjTNqMv6fAAACADz%2F9AJeApwAEwAlADkAuAAARVi4AAovG7kACgAQPlm4AABFWLgAAC8buQAAAAQ%2BWbgAChC5ABQAAfS4AAAQuQAeAAH0MDEFIi4CNTQ%2BAjMyHgIVFA4CEyIOAhUUHgIzMj4CNTQmAR83VTkeL1R1RzdVOR4vVHYSNVc%2BIhIlOic1Vz4iSgwnSGY%2BS5FzRidIZT5LknNGAmU8YHY6ME84Hz1gdjlhdQACACMAAAItApAADgAXAEcAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgADS8buQANAAQ%2BWboACwAAAA0REjm4AAsvuAAAELkAFQAB9LgACxC5ABcAAfQwMRMzMh4CFRQOAisBAyMTMjY1NCYrAQOmuS5MNh4rTGk%2FaTRO7mZpTEhlNQKQEic8KzxYORv%2B%2BAFHUE85M%2F71AAAAAAIAPP9eAl4CnAARAC8ASwC4AABFWLgAHy8buQAfABA%2BWbgAAEVYuAAXLxu5ABcABD5ZuwAUAAEALAAEK7gAFxC5AAUAAfS4AB8QuQANAAH0uAAXELgAKdAwMRMUHgIzMj4CNTQmIyIOAgEGIyImJy4BNTQ%2BAjMyHgIVFA4CBx4BMzI2N4sSJTonNVc%2BIkpONVc%2BIgGBISBUeBlUVi9UdUc3VTkeK05tQhFUNQ8aDgENME84Hz1gdjlhdTxgdv4iC0tRE45sS5FzRidIZT5IjXBKBiwqBAMAAAIAIwAAAicCkAAIABoAVAC4AABFWLgAGi8buQAaABA%2BWbgAAEVYuAAYLxu5ABgABD5ZuAAARVi4ABUvG7kAFQAEPlm7AAAAAQAWAAQruAAaELkABwAB9LoAEwAWAAAREjkwMQEyNjU0JisBBxMyHgIVFA4CBxMjAyMDIxMBGF5kS0hgMqUuSzYeHTRGKnNTbHI3ToMBVVJGNi%2F9ATsRJTopLUo3JAj%2B4wEW%2FuoCkAAAAQAM%2F%2FQB%2FgKcAC8ASQC4AABFWLgAFC8buQAUABA%2BWbgAAEVYuAAsLxu5ACwABD5ZuQADAAH0ugALACwAFBESObgAFBC5ABsAAfS6ACMAFAAsERI5MDE3HgEzMj4CNTQmLwEuATU0PgIzMhYXBy4BIyIOAhUUFh8BHgEVFA4CIyImJ0UdVTceNCUWLSVMKjsfNkssO2AfMxpFLhwsHxAxJEwwMyI8VDJEbyiTLDESIC4cJDEXLhpIOCVCMh00KC4eKRIeJhQmLxYtHEc3LEo1Hjk7AAABAF0AAAI1ApAABwAzALgAAEVYuAACLxu5AAIAED5ZuAAARVi4AAcvG7kABwAEPlm4AAIQuQAAAAH0uAAE0DAxASM3IQcjAyMBG74NAcsNv3VOAk1DQ%2F2zAAAAAAEAT%2F%2F0AmYCkAAaADMAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAFC8buQAUAAQ%2BWbkABwAB9LgAABC4AA3QMDETMwMGFRQWMzI%2BAjcTMwMOAyMiJjU0NjejTksJQEUcMywhC1FMUg4vQE0sZGsFBQKQ%2FoktIkdMFjBLNgGS%2FmtHZD8daGcVLxkAAAAAAQBSAAACQQKQAA0ANwC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAANLxu5AA0ABD5ZugAFAAAADRESObgAABC4AArQMDETMxMeARczPgE3EzMBI1JPGwUIAwQZNRq1VP6pXQKQ%2FpQ2bDY1bjUBbP1wAAEAXwAAAywCkAAhAFcAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAIS8buQAhAAQ%2BWboABQAAACEREjm4AAAQuAAK0LgAFNC4ACEQuAAX0LoAEAAUABcREjm6ABsAIQAKERI5MDETMwMOAQczPgE3EzMTFhQVMz4BNxMzASMDNDY3Iw4BBwMjaFAKAwMEBBcwFqRHCQEEFCsUjk3%2B8mMHAQIEDiERs2ECkP6XNWo2Nmo1AWn%2BlzRrNjZqNQFp%2FXABkSRPJydMJ%2F5vAAAAAAH%2F3AAAAiICkAAZAEUAuAAARVi4AAEvG7kAAQAQPlm4AABFWLgAGS8buQAZAAQ%2BWbgAD9C4AAEQuAAL0LoABwAPAAsREjm6ABQAAQAZERI5MDETAzMXHgEXMz4BPwEzAxMjJy4BJyMOAQ8BI9hsVDgHDAgDESIPeFLtdVQ8CA8IAxQkEYBTAVQBPK4XKxoYMBer%2Fr7%2BsrgZMxoaNxm0AAABAFMAAAIeApAADwA3ALgAAEVYuAABLxu5AAEAED5ZuAAARVi4AA8vG7kADwAEPlm6AAYAAQAPERI5uAABELgAC9AwMRMDMxceARczPgE%2FATMBAyO%2Ba1AtCQ8JBBcrGHxT%2Fu40TQEAAZC9JEQmJUYkvP5w%2FwAAAAAB%2F%2F8AAAIdApAACQBFALgAAEVYuAADLxu5AAMAED5ZuAAARVi4AAgvG7kACAAEPlm5AAYAAfS4AADQuAAAL7gAAxC5AAEAAfS4AAXQuAAFLzAxNwEhNyEHASEHIQkBqf7UDgGJCv5aAUsP%2FlYvAiBBLv3gQgAAAAACACf%2F9AH4AfIAFAAjAFsAuAAARVi4AAUvG7kABQAIPlm4AABFWLgACi8buQAKAAg%2BWbgAAEVYuAASLxu5ABIABD5ZuAAARVi4AA0vG7kADQAEPlm4ABIQuQAVAAH0uAAFELkAHAAB9DAxNzQ%2BAjMyFhczNzMDIzcjDgEjIiYXMjY%2FAS4BIyIOAhUUFicsSl4zJz0RBBM%2BYT8IBCNYLkBMqCZPJCwVMhwkRDQfMKRGelo0KCE9%2FhpIJi5aGi0w2SYiK0hdMj89AAIAH%2F%2F0AfACyAAVACQAWwC4AABFWLgAAS8buQABABI%2BWbgAAEVYuAAILxu5AAgACD5ZuAAARVi4AAAvG7kAAAAEPlm4AABFWLgAEC8buQAQAAQ%2BWbgACBC5ABYAAfS4ABAQuQAdAAH0MDEzEzMPATM%2BATMyFhUUDgIjIiYnIwcTIgYPAR4BMzI%2BAjU0Jh%2BOTScWAiRULUBMLElfMic9EQMU6iJRIy4UMh0kRDMfLwLIvmAdK1pWRnpaNCghPQGyKiXnJiIrSF0zPj0AAAEAJf%2F0AbIB8gAdADkAuAAARVi4AAUvG7kABQAIPlm4AABFWLgAGy8buQAbAAQ%2BWbgABRC5AAwAAfS4ABsQuQAUAAH0MDE3ND4CMzIWFwcuASMiDgIVFBYzMjY3Fw4BIyImJS1LYjUsPBYtEyYdJEQ1Hzk6IDUXIhpMNlBjt0RzVDAiGTAXFShDWjJCRhoRMhQlZQACACf%2F9AInAsgAFQAkAFsAuAAARVi4ABEvG7kAEQAIPlm4AABFWLgAAS8buQABABI%2BWbgAAEVYuAAJLxu5AAkABD5ZuAAARVi4AAQvG7kABAAEPlm4AAkQuQAWAAH0uAARELkAHQAB9DAxATczAyM3Iw4BIyImNTQ%2BAjMyFhczAzI2PwEuASMiDgIVFBYBtCZNkD8IBCNYLkBMLEpeMyc6EgPVJk4lLBUyHCRENB8wAgq%2B%2FThIJi5aVkZ6WjQnIP6JLTDZJiIrSF0yPz0AAAAAAgAl%2F%2FQBvwHyABwAKgBRALgAAEVYuAAFLxu5AAUACD5ZuAAARVi4ABovG7kAGgAEPlm6AA0ABQAaERI5uAANL7gAGhC5ABMAAfS4AAUQuQAlAAH0uAANELkAKgAB9DAxNzQ%2BAjMyHgIVFAYHIQYeAjMyNjcXDgEjIiYlPgE1NC4CIyIOAgclLkldMCk5JBAMBf7EBxAlNiAdORceHVAwV2gBVAIDChYkGhszLCMJv0VxUSwbL0ElHTQOL0MsFBkRMxUfaboMGA4VJx4SFio6JAAAAAABACsAAAGNAtQAFwBWALgAAEVYuAAQLxu5ABAACD5ZuAAARVi4AAUvG7kABQASPlm4AABFWLgAFS8buQAVAAQ%2BWbgAEBC4AADQuAAFELkADAAB9LgAEBC5ABMAAfS4ABfQMDETPwE%2BATMyFhcHLgEjIgYPATMHIwMjEyNMQRAPTT4aKhIbCxoRISkIEWIMY1VMVT8B4QVRSlMNCzcHCjIrUz7%2BWAGoAAAC%2F%2F7%2FIAHyAfIAIAAvAFQAuAAARVi4ABsvG7kAGwAIPlm4AABFWLgAIC8buQAgAAg%2BWbgAAEVYuAAELxu5AAQABj5ZuwAhAAEAEwAEK7gABBC5AAsAAfS4ABsQuQAoAAH0MDEBAw4BIyImJzceATMyNj8BIw4BIyImNTQ%2BAjMyFhczNwMyNj8BLgEjIg4CFRQWAfJmFHRcMVYjJBxEKT9KEBgDJFIvPk8rSF0xJj4RAxPmI1AjKxcwHCNCMh4uAeb%2BA2FoJh01GCJPQmQjK1ZVQ3VXMyghPf5fKyrQJiIpRVkwPDoAAAAAAQAfAAAB2ALIABsARAC4AABFWLgABy8buQAHAAg%2BWbgAAEVYuAAALxu5AAAAEj5ZuAAARVi4ABovG7kAGgAEPlm4AA%2FQuAAHELkAFgAB9DAxEzMPATM%2BATMyFhUUBgcDIxM%2BATU0JiMiBgcDI61NMBAEKlAtPjUDBT5MPAQEIiYdRy5FTALI6z0jL0A5ER4U%2FsoBLBQYDSUmKi7%2BqAAAAAIAHwAAAPsCsgADAA8ALQC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAACLxu5AAIABD5ZugAKAAQAAyswMRMzAyMTIiY1NDYzMhYVFAaATWJMohQdIxcUHSMB5v4aAksXFhkhGBYZIAAAAv%2BE%2FycA%2BwKyAA8AGwA3ALgAAEVYuAAOLxu5AA4ACD5ZuAAARVi4AAMvG7kAAwAGPlm6ABYAEAADK7gAAxC5AAoAAfQwMRcOASMiJic3HgEzMjY3EzMnIiY1NDYzMhYVFAZfDkM%2FFyMRGQoUEBwhCm9NDRMdIhgTHSM9RlYKCTkGBzAsAiRlFxYZIRgWGSAAAQAfAAAB7QLIAAwATgC4AABFWLgAAC8buQAAABI%2BWbgAAEVYuAAELxu5AAQACD5ZuAAARVi4AAwvG7kADAAEPlm6AAIAAAAMERI5uAAI0LoACQAEAAgREjkwMRMzAzMTMwcTIycPASOtTWAC%2BVjCdU5dcBpMAsj%2BHQEBy%2F7l7XJ7AAAAAQAs%2F%2FQA%2BgLIABMAKwC4AABFWLgAAC8buQAAABI%2BWbgAAEVYuAAOLxu5AA4ABD5ZuQAHAAH0MDETMwMGFBUUMzI2NxcOASMiJjU0N61NfQIRAwYHAQoWECAhBgLI%2FZEICAMSAQI7BAQhHhAaAAAAAAEAHwAAAuoB8gAsAFgAuAAARVi4AAYvG7kABgAIPlm4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAAsLxu5ACwABD5ZuAAGELgADtC4ACwQuAAh0LgAFtC4AAYQuQAnAAH0uAAc0DAxEzMHMz4BMzIeAhc%2BATMyFhUUBgcDIxM%2BATU0IyIGBwMjEz4BNTQjIgYHAyN%2FPwcEJlQmHSgaDgMvVyY9NgQEPk09BARHFUgsRUw8BARGFkgrRUwB5kkkMQ8ZIxQtMkA5ER4U%2FsoBLBQYDUsqLv6oASwUGA1LKi7%2BqAAAAQAfAAAB2AHyABoARAC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAALxu5AAAACD5ZuAAARVi4ABovG7kAGgAEPlm4AA7QuAAGELkAFQAB9DAxEzMHMz4BMzIWFRQGBwMjEz4BNTQmIyIGBwMjfz8HBCpSLj41AwU%2BTDwEBCImHUcuRUwB5kkkMUA5ER4U%2FsoBLBQYDSUmKi7%2BqAAAAgAn%2F%2FQB2wHyAA8AHwA5ALgAAEVYuAAILxu5AAgACD5ZuAAARVi4AAAvG7kAAAAEPlm4AAgQuQAQAAH0uAAAELkAGAAB9DAxFyImNTQ%2BAjMyFhUUDgITIg4CFRQWMzI%2BAjU0JtRPXixKXjJPXy1JXx8hQDIeNTMiPzIeNQxoW0V0Uy9oW0V0Uy8BvydDWjNCRidCWjNCRwAC%2F%2Fb%2FMwHwAfIAFQAkAFIAuAAARVi4AAMvG7kAAwAIPlm4AABFWLgAES8buQARAAQ%2BWbgAAEVYuAACLxu5AAIABj5ZuAADELgACdC4AAkvuQAWAAH0uAARELkAHQAB9DAxFwcjEzMHMz4BMzIWFRQOAiMiJicjEyIGDwEeATMyPgI1NCZhH0yKPwYDJVUuQEwsSV8yJjwTAtUiUSMuFDIdJEQzHy8unwKzQB8tW1VGelo0Jx8BeCom6CYgK0hdMz49AAAAAgAn%2FzMB%2BAHyABUAJABWALgAAEVYuAAMLxu5AAwACD5ZuAAARVi4ABQvG7kAFAAGPlm4AABFWLgABC8buQAEAAQ%2BWbgADBC4ABHQuAARL7gABBC5ABYAAfS4AAwQuQAdAAH0MDElIw4BIyImNTQ%2BAjMyFhczNzMDIzcnMjY%2FAS4BIyIOAhUUFgFgAiRZLkBMLEpeMyc9EQQTPopNIXMiUiUsFTIcJEQ0HzBJJTBaVkZ6WjQoIT39TZ9iLTDZJiIrSF0yPz0AAAABAB8AAAF8AfIAEAA1ALgAAEVYuAAALxu5AAAACD5ZuAAARVi4ABAvG7kAEAAEPlm4AAAQuAAG0LgABi%2B4AAvcMDETMwczPgEzMhcHJiMiBgcDI38%2FCwQdTS0ZFRsQGiRMHz1MAeZdLTwJRAg%2BPP7NAAAAAAH%2F%2FP%2F0AX4B8gAzAEkAuAAARVi4ABUvG7kAFQAIPlm4AABFWLgALi8buQAuAAQ%2BWbkAAwAB9LoADQAuABUREjm4ABUQuQAcAAH0ugAkABUALhESOTAxNx4BMzI%2BAjU0LgInLgE1ND4CMzIWFwcuASMiBhUUHgIXHgMVFA4CIyIuAicsF0AmFSUdEAkUIxk5NhstPSItRxssFDAhJzUOGB8RISsbCxsxQycYMS0lDHYgJw0WHRENFhUWDh88KiA2JhUkHSsUHC0fDxgUEgkSISEiFCI4JxUOGSITAAABADz%2F9AFYAmwAHgBFALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4ABYvG7kAFgAEPlm4AAYQuQAJAAH0uAAA0LgABhC4AAPQuAAWELkADwAB9DAxEyM%2FAjMHMwcjAwYVFBYzMjY3Fw4BIyIuAjU0NjeDRwtMJEEbewx9OQMbIw4aCxERLh0gLBwMAwIBqDkFhoY%2B%2FuoSEh4eCgU3CA4RHScXDxkOAAEAOP%2F0Ae8B5gAaAFEAuAAARVi4AA0vG7kADQAIPlm4AABFWLgAGS8buQAZAAg%2BWbgAAEVYuAAGLxu5AAYABD5ZuAAARVi4AAEvG7kAAQAEPlm4AAYQuQAVAAH0MDEhIzcjDgEjIiY1NDY3EzMDDgEVFBYzMjY3EzMBjj8IBChTLT41AwU%2BTT0EBCImHUYtRUxKIzNBOBEeFAE2%2FtQUGA0lJiouAVgAAAEAOwAAAeEB5gANAEAAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgACi8buQAKAAg%2BWbgAAEVYuAANLxu5AA0ABD5ZugAGAAAADRESOTAxEzMTHgEXMz4BNxMzASM7TCQEBgQEESQTj03%2B%2FVwB5v7nI0sjJEkkARn%2BGgAAAAABAEYAAALHAeYAIQBbALgAAEVYuAAALxu5AAAACD5ZuAAARVi4ACEvG7kAIQAEPlm6AAUAAAAhERI5uAAAELgACtC4ACEQuAAX0LgAChC4ABTQugAPABcAFBESOboAHAAhAAoREjkwMRMzEx4BFzM%2BATcTMxMeARczPgE3EzMDIwMuAScjDgEHAyNGTBABAQEEDxsQgEsRAgECBA4aEH9I3V8OAQEBBA8dD3ZcAeb%2B4iNDIiJDIwEe%2FuIjQyIiQyMBHv4aAQojSCQkSCP%2B9gAAAf%2FUAAAB0gHmABkARQC4AABFWLgAAS8buQABAAg%2BWbgAAEVYuAAZLxu5ABkABD5ZuAAP0LgAARC4AAvQugAHAA8ACxESOboAFAABABkREjkwMRMnMxceARczPgE%2FATMHFyMnLgEnIw4BDwEjrltOKggNCAQPIA9VU8hjTywIEQoEECITXlQBAuRsFicVFCkVbPXxchYtFxcrF3MAAf%2FC%2Fy8B4wHmABwAPQC4AABFWLgABy8buQAHAAg%2BWbgAAEVYuAAYLxu5ABgABj5ZuQACAAH0ugAMABgABxESObgABxC4ABHQMDEHFjMyNj8BAzMTHgEXMz4BNxMzAQ4DIyImJzclEhIlQRkSU0wmBQgDBBElEoxM%2FuITKjE6IwsfDhmKCTwzIwHn%2Fu8hTSMjSyMBEf3xJD0tGgYIOQAAAAH%2F9gAAAa4B5gAJAEUAuAAARVi4AAMvG7kAAwAIPlm4AABFWLgACC8buQAIAAQ%2BWbkABgAB9LgAANC4AAAvuAADELkAAQAB9LgABdC4AAUvMDEnASM3IQcBMwchAgFD3Q0BPQj%2Bvf4M%2FqEsAXw%2BLf6FPgD%2F%2F%2F%2FLAAAB1QMwAiYABAAAAAcA4QDdAAD%2F%2F%2F%2FLAAAB6AMwAiYABAAAAAcA4wDdAAD%2F%2F%2F%2FLAAAB2AMwAiYABAAAAAcA5QDdAAD%2F%2F%2F%2FLAAAB9gMwAiYABAAAAAcA5wDdAAD%2F%2F%2F%2FLAAAB4wMqAiYABAAAAAcA6gDdAAD%2F%2F%2F%2FLAAAB1QNrAiYABAAAAAcA7ADdAAAAAv%2FfAAADPAKQAAYAFgBoALgAAEVYuAAULxu5ABQAED5ZuAAARVi4AA4vG7kADgAEPlm4AABFWLgAEi8buQASAAQ%2BWbsABgABABAABCu7AAkAAQAKAAQruAAUELkABwAB9LoAAQAUAAcREjm4AA4QuQAMAAH0MDEBIw4BDwEzEwczByMHIQchNyMHIwEhBwHRAyZJJlSokCrlDeQzARoN%2FpknxoNZAcsBkg4CVThqN3wBT9VC9kLCwgKQQf%2F%2FADn%2FKwItApwCJgAGAAAABwDuARkAAP%2F%2FACMAAAIQAzACJgAIAAAABwDhAOgAAP%2F%2FACMAAAIQAzACJgAIAAAABwDjAOgAAP%2F%2FACMAAAIQAzACJgAIAAAABwDlAOgAAP%2F%2FACMAAAIQAyoCJgAIAAAABwDqAOgAAP%2F%2FACMAAAD9AzACJgAMAAAABgDhUwAAAP%2F%2FACMAAAFeAzACJgAMAAAABgDjUwAAAP%2F%2FACMAAAFOAzACJgAMAAAABgDlUwAAAP%2F%2FACMAAAFZAyoCJgAMAAAABgDqUwAAAP%2F%2FACMAAAJmAzACJgARAAAABwDnAREAAP%2F%2FADz%2F9AJeAzACJgASAAAABwDhARgAAP%2F%2FADz%2F9AJeAzACJgASAAAABwDjARgAAP%2F%2FADz%2F9AJeAzACJgASAAAABwDlARgAAP%2F%2FADz%2F9AJeAzACJgASAAAABwDnARgAAP%2F%2FADz%2F9AJeAyoCJgASAAAABwDqARgAAAAD%2F%2F3%2F4gKhAq8ACgAVAC8ASQC4AABFWLgAKi8buQAqABA%2BWbgAAEVYuAAdLxu5AB0ABD5ZuQADAAH0ugAKAB0AKhESObgAKhC5AA4AAfS6ABUAHQAqERI5MDE3HgEzMj4CNTQvAS4BIyIOAhUUFwEWFRQOAiMiJicHJzcmNTQ%2BAjMyFhc3F64TOSk1Vz4iCxUTOyo1Vz4iDAGpHi9UdkY2Ux1UKF8gL1R1RzhUHVkkdR0hPWB2OTQsNCAiPGB2OjkrAXtBWUuSc0YlI1ojZUJbS5FzRiclXyMAAAAAAgA8AAADSQKQABIAHQBvALgAAEVYuAAFLxu5AAUAED5ZuAAARVi4AA8vG7kADwAEPlm7AAoAAQALAAQruAAFELkABwAB9LgADxC5AA0AAfS4AAcQuAAT0LgAEy%2B4AA0QuAAb0LgAGy%2B4ABzQuAAcL7gAExC4AB3QuAAdLzAxEzQ%2BAjMhByEHMwcjByEHISImASIOAhUUFjsBEzwwXIRTAaoO%2Fvcr3w7dMwEUDv6EiY0BY0BmSCZmZCdqAQBak2k6QdVC9kKHAcoxV3tJXmcCEQAAAP%2F%2FAE%2F%2F9AJmAzACJgAYAAAABwDhAQ4AAP%2F%2FAE%2F%2F9AJmAzACJgAYAAAABwDjAQ4AAP%2F%2FAE%2F%2F9AJmAzACJgAYAAAABwDlAQ4AAP%2F%2FAE%2F%2F9AJmAyoCJgAYAAAABwDqAQ4AAP%2F%2FAFMAAAIeAzACJgAcAAAABwDjALgAAAACAC8AAAJIApAADgAdAFcAuAAARVi4AA8vG7kADwAQPlm4AABFWLgAFy8buQAXAAQ%2BWbsACwABAAwABCu4ABcQuQAAAAH0uAAPELkACAAB9LgADBC4ABnQuAALELgAG9C4ABsvMDE3Mj4CNTQmKwEHMwcjAxMyFhUUDgIrARMjPwET5UBmSCZmZDYtlgqVNKOJjTFbhFOwQUcJRjpAMVd6SV5o4Sz%2B%2FAJQh3lZlGk6AUQpAwEgAAAAAgAjAAACFwKUABAAGQA9ALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AA8vG7kADwAEPlm7ABEAAQANAAQruAAAELgAF9y5AAMAAfQwMRMzBzMyHgIVFA4CKwEHIzcyNjU0JisBA6ZOF3MtSTQdK0xpP2oeTddnaUpHaTQClHMSJz0qPFg5HJjXUU45M%2F71AAD%2F%2FwAn%2F%2FQB%2BALIAiYAHgAAAAcA4ADVAAD%2F%2FwAn%2F%2FQB%2BALIAiYAHgAAAAcA4gDVAAD%2F%2FwAn%2F%2FQB%2BALIAiYAHgAAAAcA5ADVAAD%2F%2FwAn%2F%2FQB%2BAKqAiYAHgAAAAcA5gDVAAD%2F%2FwAn%2F%2FQB%2BAKsAiYAHgAAAAcA6QDVAAD%2F%2FwAn%2F%2FQB%2BALUAiYAHgAAAAcA6wDVAAEAAwAg%2F%2FQC2AHyADcARQBRAJMAuAAARVi4ABIvG7kAEgAIPlm4AABFWLgAGC8buQAYAAg%2BWbgAAEVYuAAtLxu5AC0ABD5ZuAAARVi4ADMvG7kAMwAEPlm7ADgAAQAgAAQruwAFAAEARgAEK7gAEhC5AAsAAfS6ABUALQASERI5uAAtELkAJgAB9LoAMAAtABIREjm4AAsQuABA0LgAJhC4AEzQMDE3ND4CNz4BNTQmIyIGByc%2BATMyFhc%2BATMyHgIVFAYHIQYeAjMyNjcXDgEjIiYnDgEjIi4CJT4BNTQuAiMiDgIPAQ4BFRQWMzI2NyY2IC9UdUYDAictIEUjFSZaLTJBCCJXLik5JBENBf7RBgwgMSAdORceHU4vNVMRMGM2Gi0iFAJxAgMKFiQaFy8pIQlLbXwsIh9QKgQBajRILhcCDhMLLS4YFDgVHS8wLTIbL0ElHTQOKEIuGhkRMxUfNyktMw8eLMoOFg4VJx4SFio6JB0DQD0jJiosIDMAAAD%2F%2FwAl%2FysBsgHyAiYAIAAAAAcA7QDOAAD%2F%2FwAl%2F%2FQBvwLIAiYAIgAAAAcA4ADGAAD%2F%2FwAl%2F%2FQBvwLIAiYAIgAAAAcA4gDGAAD%2F%2FwAl%2F%2FQBvwLIAiYAIgAAAAcA5ADGAAD%2F%2FwAl%2F%2FQBxAKsAiYAIgAAAAcA6QDGAAD%2F%2FwAfAAAA8gLIAiYAZwAAAAYA4EYAAAD%2F%2FwAfAAABOwLIAiYAZwAAAAYA4kYAAAD%2F%2FwAfAAABMQLIAiYAZwAAAAYA5EYAAAD%2F%2FwAfAAABRAKsAiYAZwAAAAYA6UYAAAAAAQAfAAAAzQHmAAMAJQC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAACLxu5AAIABD5ZMDETMwMjgE1iTAHm%2FhoA%2F%2F8AHwAAAfUCqgImACsAAAAHAOYA5QAA%2F%2F8AJ%2F%2F0AdsCyAImACwAAAAHAOAA2AAA%2F%2F8AJ%2F%2F0AdsCyAImACwAAAAHAOIA2AAA%2F%2F8AJ%2F%2F0AdsCyAImACwAAAAHAOQA2AAA%2F%2F8AJ%2F%2F0AegCqgImACwAAAAHAOYA2AAA%2F%2F8AJ%2F%2F0AdsCrAImACwAAAAHAOkA2AAAAAMAAP%2FpAgcB%2FAAJABMAKwBJALgAAEVYuAAnLxu5ACcACD5ZuAAARVi4ABsvG7kAGwAEPlm5AAIAAfS6AAkAGwAnERI5uAAnELkADAAB9LoAEwAbACcREjkwMTcWMzI%2BAjU0LwEmIyIOAhUUFwEWFRQOAiMiJwcnNyY1ND4CMzIXNxeJGzYlQzMdBhIcNyVDMh0HAU0XLUlfMk0vOx1AGSxKXjJQLz0eWCYqRVkvIBgpKipFWi8kGAEbLj5FdFQuMj0cQi9BRXRTLzU%2FHAAAAAADACf%2F9AMLAfIAKgA6AEcAjQC4AABFWLgACC8buQAIAAg%2BWbgAAEVYuAAQLxu5ABAACD5ZuAAARVi4AAAvG7kAAAAEPlm4AABFWLgAJS8buQAlAAQ%2BWbsAOwABABgABCu6AAsAAAAIERI5uAAlELkAHgAB9LoAKAAAAAgREjm4AAgQuQArAAH0uAAeELgAM9C4ACsQuABC0LgAQi8wMRciJjU0PgIzMhYXPgMzMh4CFRQGByEGHgIzMjY3Fw4BIyImJw4BEyIOAhUUFjMyPgI1NCYFNjU0LgIjIg4CB9BNXCxIXTE9Sw4QKjAyGSk6JBANBf7UBg8hLxwdORcdHVAwOlAOImoXID8xHjUzIT4xHjUBbwYKFiQaGC8oHwkMaFtFdFMvQT0eLyARGy9BJR00Di9DLBQZETMVH0NCP0YBvydDWjNCRidCWjNCR5wYGhUnHhIWKjokAAEAH%2F%2F0AfkC1AA%2FAEYAuAAARVi4AAUvG7kABQASPlm4AABFWLgAPi8buQA%2BAAQ%2BWbgAAEVYuAAdLxu5AB0ABD5ZuQAkAAH0uAAFELkAOAAB9DAxEz4DMzIeAhUUDgQVFB4EFRQOAiMiJic3HgEzMjY1NC4ENTQ%2BBDU0JiMiDgIHAyOICSQ1RioeNCcXFB0iHRQWICcgFhktPCQlSB8jFzMfJzcWIiYiFhQdIx0UIicaKyIYB2ZMAg0pSDYgECEyIR8vJh8eIBQUHhwdIy0fITkqGRkZMxMWMSYYJB4cICYaGikiICMoGyIsGSo4IP4F%2F%2F8AOP%2F0Ae8CyAImADIAAAAHAOAA0QAA%2F%2F8AOP%2F0Ae8CyAImADIAAAAHAOIA0QAA%2F%2F8AOP%2F0Ae8CyAImADIAAAAHAOQA0QAA%2F%2F8AOP%2F0Ae8CrAImADIAAAAHAOkA0QAA%2F%2F%2F%2Fwv8vAeMCyAImADYAAAAHAOIAogAA%2F%2F%2F%2Fwv8vAeMCrAImADYAAAAHAOkAogAAAAIAK%2F%2F0AhIC2gARADUAKAC4AABFWLgAGi8buQAaAAQ%2BWbsAJAABAAgABCu4ABoQuQAAAAH0MDE3Mj4CNy4BIyIOAhUUHgITHgEVFA4CIyIuAjU0PgIzMhYXLgEnByc3Jic3HgEXNxfhJDwsGwMUNycnPisYDxwqxyImIkFePCU%2FLxogPFU2JD8WBB4bkxCHJTokIz0akRA0KUZdNR4vJDpKJxouIxQCHzJ6TEeCYzscMUMoNGNNLyYhPF4nPSk4KiUuFDIdPCkAAv%2F2%2FzMB8ALIABYAJQBvALgAAEVYuAAILxu5AAgAEj5ZuAAARVi4AA8vG7kADwAIPlm4AABFWLgABi8buQAGAAY%2BWbgAAEVYuAAALxu5AAAABD5ZugAEAAYACBESOboADAAGAAgREjm4AA8QuQAXAAH0uAAAELkAHgAB9DAxFyImJyMPASMTMw8BMz4BMzIWFRQOAhMiBg8BHgEzMj4CNTQm6iY7FAISH0y3TScWAiRULUBMLElfLCJRIy4UMh0kRDMfLwwnH2ifA5W%2BYB0rW1VGelo0Ab4qJekmICtIXTM%2BPQAAAQArAAACnALUACsAqAC4AABFWLgAAy8buQADABI%2BWbgAAEVYuAAfLxu5AB8AEj5ZuAAARVi4AA4vG7kADgAIPlm4AABFWLgAGi8buQAaAAg%2BWbgAAEVYuAAqLxu5ACoACD5ZuAAARVi4ABIvG7kAEgAEPlm4AABFWLgAFi8buQAWAAQ%2BWbgAAxC5AAoAAfS4AA4QuQAQAAH0uAAU0LgAFdC4ABjQuAAZ0LgAHxC5ACYAAfQwMQE%2BATMyFhcHLgEjIgYPATMHIwMjEyMDIxMjPwI%2BATMyFhcHLgEjIgYPATMBqw9OPRopFBwKGhEhKggRYw1iVU1VwVZMVT8LQQ4QUT8dLBQbDBwUIy4ID8ICN0pTDQo4BwoyK1M%2B%2FlgBqP5YAag5BUdKUw0KOAcKMitJAAEAK%2F%2F0AkUC1AAyAJsAuAAARVi4ACAvG7kAIAASPlm4AABFWLgAGy8buQAbAAg%2BWbgAAEVYuAArLxu5ACsACD5ZuAAARVi4AC8vG7kALwAIPlm4AABFWLgAFy8buQAXAAQ%2BWbgAAEVYuAAMLxu5AAwABD5ZuQAFAAH0uAAvELkAFQAB9LgAFtC4ABnQuAAa0LgAIBC5ACcAAfS4ABoQuAAx0LgAMtAwMSUGFRQWMzI2NxcOASMiLgI1NDY3EyMDIxMjPwI%2BATMyFhcHLgEjIgYPATM3MwczByMBgwMbIw4aCxAQLh0gLBwMAgM5o1ZMVT8LQRAPTT4aKRMbCxoRISkIEackQRt7DH2SEhIeHgoFNwgOER0nFw8ZDgES%2FlgBqDkFUUpTDQo4BwoyK1OGhj4AAAAAAwAP%2F%2FQCRAKcAAsAGgBDAIwAuAAARVi4ADUvG7kANQAQPlm4AABFWLgAJi8buQAmAAQ%2BWbgAAEVYuAAhLxu5ACEABD5ZugBAACMAAyu4ACYQuQADAAH0ugAGACMAQBESOboACQAmADUREjm4AAkvuAAO3LgANRC5ABYAAfS6AB4AIwBAERI5ugAuAAkADhESOboAPQAJAA4REjkwMTcUFjMyNjcuAScOARMUFz4DNTQmIyIOAgUOAQcWFwcmJw4BIyImNTQ%2BAjcmNTQ%2BAjMyFhUUDgIHHgEXPgE3WzkuI0UgJ0IXL0CKCxwzJhcYGhUlGxABXx9MMDcvID0%2BKmA2S1ocLjwgEhwvPiM2NiA0QiIVQCYpPRqXLjgcGStnOCBIARgmLBEiJiwbFyEUJDGdQns0LBE%2BFDUiJ1NGKEE2KxQ6NypGMx09LiY%2BNS0VNWIoK2Q6AAIAKv%2F0Ac4CigATACUAOQC4AABFWLgACi8buQAKAA4%2BWbgAAEVYuAAALxu5AAAABD5ZuAAKELkAFAAB9LgAABC5AB4AAfQwMRciLgI1ND4CMzIeAhUUDgITIg4CFRQeAjMyPgI1NCbIJjsoFStIYDUlOycVKkhfMCdEMx0LFiIXJ0QzHSwMITpPL1miekgiOlEuWqB6RwJYRm%2BKQyE4KRdFb4lEQ1cAAAEAGgAAAYACfgALAEMAuAAARVi4AAYvG7kABgAOPlm4AABFWLgACy8buQALAAQ%2BWbkAAQAB9LgABhC4AALcuAAGELgABNy4AAEQuAAI0DAxNzMTIzc2NzMDMwchJ4tgcQpVNzt0ggz%2BpkAB3jIMIv3CQAAAAf%2F2AAABxAKKABwAOQC4AABFWLgADy8buQAPAA4%2BWbgAAEVYuAAbLxu5ABsABD5ZuQAZAAH0uAAA0LgADxC5AAgAAfQwMSc%2BAzU0JiMiBgcnPgEzMh4CFRQOAgchByECYI5eLzM1IEEiJyxXMCk%2FLBYqUn1SARQM%2FnUuUXpkVy8sPCEfMCYpFyo6IjVdYm9IQgAAAAH%2F9%2F%2F0AckCigAuAFMAuAAARVi4ABwvG7kAHAAOPlm4AABFWLgAKy8buQArAAQ%2BWbkAAwAB9LoADQAcACsREjm4AA0vuQAOAAH0uAAcELkAFgAB9LoAIgANAA4REjkwMTceATMyPgI1NC4CIzcyPgI1NCYjIgYHJzYzMhYVFAYHFR4BFRQOAiMiJicqF0kyIjkpFxQsRjMMO1AxFTIzHUMdJ1NdUVZKSzU7Iz5WMkJkHooiNBQjMB0ZKyAROhgmLxcqNhwXMz9QQj1cFQQRSDIuSTQcQS0AAAIACAAAAb8CfgAKABQAUwC4AABFWLgABS8buQAFAA4%2BWbgAAEVYuAAALxu5AAAABD5ZuwALAAEAAQAEK7gACxC4ABTQuAAD0LgACxC4AAbQuAABELgACdC4AAUQuAAP3DAxMzchNwEzAzMHIwcnNz4BNyMOAQ8B9CT%2B8AkBVlRQVA1TIxglBhEIBBQnErGwNAGa%2FnA%2BsO69HUEhHDUX1AAB%2F%2Fz%2F9AHXAn4AJgBJALgAAEVYuAASLxu5ABIADj5ZuAAARVi4ACMvG7kAIwAEPlm5AAUAAfS6ABkAEgAjERI5uAAZL7kADQAB9LgAEhC5ABQAAfQwMTceAzMyPgI1NCYjIgYHJxMhByMHPgEzMh4CFRQOAiMiJicuCxoiLBwfOSwaPzQfLCAhUAErDek0ESoZJD0tGShCVy9CXR2JER4YDhgtPic%2BPBARGgEtQrwIDBUqPyo5XEAjPy0AAAIAM%2F%2F0AegCigASADMAQwC4AABFWLgAMC8buQAwAA4%2BWbgAAEVYuAAmLxu5ACYABD5ZuwAeAAEAAAAEK7gAJhC5AAsAAfS4ADAQuQAWAAH0MDEBIg4CBwYUFRQWMzI%2BAjU0JjcuASMiDgIHPgEzMhYVFA4CIyIuAjU0PgIzMhYXAQUMHyQnEwE6MxswJBQzfBErHyZEOSkKIVIhR1QfOEssKUEuGS1QbUA0QxQBSQgSHxgLFwxFVRwtOh43QcccHidHZT8mJFhOL1RAJSA5UC9hpHdCMSAAAAEAawAAAgMCfgAPADMAuAAARVi4AAcvG7kABwAOPlm4AABFWLgAAC8buQAAAAQ%2BWbgABxC5AAUAAfS4AAnQMDEzPgM3ITchBw4DByN4FTRFWj3%2Bzg4BigpKZUUsEVBam4x%2FPEIyRoyQmFIAAAMAI%2F%2F0AdcCigARACEARwBbALgAAEVYuAAwLxu5ADAADj5ZuAAARVi4AEMvG7kAQwAEPlm6AAAAMABDERI5uAAAL7gAQxC5AAgAAfS4AAAQuAAn3LgAEtC4ADAQuQAaAAH0uAASELgAOdwwMRMOARUUHgIzMj4CNTQuAjc%2BAzU0JiMiDgIVFBYHND4CNzUuATU0PgIzMh4CFRQGBxUeAxUUDgIjIi4C3DNAEyEsGRoxJxcXKDQ8EiMbEDcpFigfEjrcGSk2HRwdHjRDJh45LBpENg4fGRAjOk0rI0M0IQFAHEo4HCseEBEfLx4cKiMeKAweJSsZMDQPHSoaMjzYJDwvJA0EHDsnKUAtGBIlOCVAVh4EChwkLRkrRTAaFCk%2FAAIAEv%2F0AccCigASADMAQwC4AABFWLgAJi8buQAmAA4%2BWbgAAEVYuAAwLxu5ADAABD5ZuwAAAAEAHgAEK7gAJhC5AAsAAfS4ADAQuQAWAAH0MDETMj4CNzY0NTQmIyIOAhUUFgceATMyPgI3DgEjIiY1ND4CMzIeAhUUDgIjIiYn9QwfJCcTATozGzAjFDN9ESsgJUQ4KQohUSBIVB84SywpQi4YLVBtQDRDFAE1CBIfGAsXDEVVHC06HjhAxxweJ0dkPiUjWE4vVEAlIDlQL2Kjd0IxIAAAAAEAF%2F%2F0AIgAbAALABoAuAAARVi4AAAvG7kAAAAEPlm5AAYAAfQwMRciJjU0NjMyFhUUBkYWGSYdFhglDBwWGiwdFhorAAAAAAH%2F4f9cAJAAbAAQAB4AuAAARVi4AAMvG7kAAwAEPlm5AAoAAfS4ABDcMDEHPgE3IyImNTQ2MzIWFRQGBx8vOAgCFx0jHRocWkp2EjslGRcZJyQeSm8VAP%2F%2FABf%2F9ADIAd0CJwCGAEABcQAGAIYAAP%2F%2F%2F%2BH%2FXADIAd0CJwCGAEABcQAGAIcAAAACACv%2F9AEFAp8ABQARABoAuAAARVi4AAYvG7kABgAEPlm5AAwAAfQwMRM3MwcDIwciJjU0NjMyFhUUBqkPTRNWNgsWGiYdFxckAkNcXP6B0BwWGiwdFhorAAAAAAIAFf9HAO4B8gAFABMAGgC4AABFWLgABi8buQAGAAg%2BWbkADgAB9DAxFwcjNxMzNzIWFRQOAiMiJjU0NnEPTRNWNgsWGQoSGA8WFyRdXFwBf9AcFg0ZFAwdFhorAAAAAAIAXv%2F0AaICqgALACcAKAC4AABFWLgAAC8buQAAAAQ%2BWbsAHQABABYABCu4AAAQuQAGAAH0MDEXIiY1NDYzMhYVFAYnPgU1NCYjIgYHJz4BMzIWFRQOBAeNFhkmHRYYJRkCICwyKhwuKB02FikdUS1GUh0sNC4hAwwcFhosHRYaK9UqQTUtLTEfKi0cFy4eJ0lBKT40LzI7JgAAAAL%2F%2FP89AUAB8wALACcAKAC4AABFWLgAAC8buQAAAAg%2BWbsAFgABAB0ABCu4AAAQuQAGAAH0MDEBMhYVFAYjIiY1NDYXDgUVFBYzMjY3Fw4BIyImNTQ%2BBDcBEBYaJh0XFyQaAx8sMiocLSgdNxYoHVAtRlIdKzQuIQQB8xwWGS0dFhor1SpANS0uMR8pLhwYLh8nSUIoPjQvMzomAAEAgAGqAPECnwAFAAsAugABAAQAAyswMRM3Mw8BI5cPSxMqNAJDXFyZAAD%2F%2FwCAAaoBlwKfACYAjgAAAAcAjgCmAAAAAQBuAbIBAgKzABIADQC7AAMAAQAKAAQrMDEBDgEHMzIWFRQGIyImNTQ%2BAjcBAi0xAQUVHB4YFx4UJDAcAo0XQh0XFRciJCAiOzAkDAAAAAABAG8BuwEEArwAEgANALsACgABAAMABCswMRM%2BATcjIiY1NDYzMhYVFA4CB28uMQEFFhweGRceFCQxHAHgF0McFxYXIiQgIzowJAz%2F%2FwBuAbIBqAKzACYAkAAAAAcAkACmAAD%2F%2FwBvAbsBqgK8ACYAkQAAAAcAkQCmAAD%2F%2F%2F%2F4%2F20AjQBuAgcAkf%2BJ%2FbIAAP%2F%2F%2F%2Fj%2FbQEyAG4AJwCR%2F4n9sgAHAJEALv2yAAAAAQAoAEMA6wGzAAYACwC6AAIABgADKzAxPwIXBxcHKAucHI5VI%2BE%2BlB2coRYAAAAAAQAXAEMA2gGzAAYACwC6AAYAAgADKzAxEw8BJzcnN9oLnByNVSQBFT6UHZyhFgD%2F%2FwAoAEMBigGzACYAlgAAAAcAlgCfAAD%2F%2FwAXAEMBeQGzACYAlwAAAAcAlwCfAAAAAQAjAN4BCgEZAAMADQC7AAEAAQACAAQrMDETMwcjL9sN2gEZOwAA%2F%2F8AJADeAQsBGQIGAJoBAAABACMA4QGrARcAAwANALsAAQABAAIABCswMRMhByEuAX0M%2FoQBFzYAAQAjAOEC3gEXAAMADQC7AAEAAQACAAQrMDETIQchLgKwC%2F1QARc2%2F%2F8ATwEMAMABhAIHAIYAOAEYAAAAAQApAJEBAgF%2FAA8ACwC6AAgAAAADKzAxNyImNTQ%2BAjMyFhUUDgKLKzcRHywcKjcRHyyROi8YMCUYOy4ZMCUXAAH%2F3P%2BEAbD%2FtgADAA0AuwAAAAEAAQAEKzAxBQchNwGwCv42C0oyMgABAEH%2FUAFXAtsAEgALALoACAAAAAMrMDEXLgE1ND4CNxcGAhUUHgIXB3oYIR88VjgtamwFCxALMrBAolNXnJKLRhmH%2FuCeI0tKRhwTAAAAAAH%2F1P9QAOoC2wARAAsAugAAAAgAAyswMRMeARUUDgIHJxIRNC4CJzexGCEfPFc3LdUFChALMgLbQKJSWJySi0YaAQ0BNyNMSkQdEwABAAj%2FaAFdAsQABwAXALsAAAABAAEABCu7AAQAAQAFAAQrMDEXByMTMwcjA7wLqaypB3GZay0DXC38%2FgAB%2F8%2F%2FaAEmAsQABwAXALsAAAABAAUABCu7AAQAAQABAAQrMDEXEyM3MwMjN0ibcAirrKsKawMCLfykLQABACD%2FaAFgAsQANQArALsAMQABADIABCu7ABkAAQAaAAQruwALAAEACgAEK7oAJQAKAAsREjkwMRc0PgI1NC4CIzcyPgI3PgE3PgM7AQcjIgYHDgEHDgEHFR4BFRQOAhUUFjsBByMiJi8RFREGDxwVCxkjFwwDCQsLBxYfLB4uChooIgoIDQkKJyMYFBAUEBcgGAosLylIHEpNRBYKFQ8KMg4XHA4wXDMnNB8NLS4wK1suMTYJBAgfFhpJTUYYGRgtJgAAAf%2FM%2F2gBDALEADUAKwC7ABsAAQAYAAQruwAyAAEAMQAEK7sACgABAAsABCu6ACUACwAKERI5MDETFA4CFRQeAjMHIg4CBw4BBw4DKwE3MzI2Nz4BNz4BNzUuATU0PgI1NCYrATczMhb9ERURBg8bFgsaIxcLAwkLCwgWHywdLgkaKCMJCA4ICyYjGRMQFBAWIBkKLDApAnQcS0xGFgoTDwoyDhccDjBdNCczHg0tLDErWi8yNgkECB8WGklMRhgaGC0nAAH%2FuP9gAaICxgADABgAuAAARVi4AAAvG7kAAAASPlm4AALcMDEBMwEjAWo4%2Fk03Asb8mgABAF%2F%2FBgCTAu4AAwALALoAAQACAAMrMDETMxEjXzQ0Au78GAABAFj%2FYAEBAsYAAwAYALgAAEVYuAAALxu5AAAAEj5ZuAAC3DAxEzMTI1g0dTYCxvyaAAAAAgBf%2FwYAkwLuAAMABwALALoAAQAFAAMrMDETMxEjFxEjEV80NDQ0Au7%2BM0z%2BMQHPAAAAAAEAfQGmAZ0CyQAOABQAuAAARVi4AAUvG7kABQASPlkwMRM3JzcXNxcHNxcHFwcnB5BFWBJjGSwIZwdnJig0UAHPWDEoIWoEaw4rH2EXWEwAAgAP%2F8QBwgKsAA8ARQAXALsALgABACcABCu7AEIAAQATAAQrMDElPgE1NC4CJw4BFRQeAhMuASMiBhUUHgQVFAYHFhUUDgIjIiYnNx4BMzI2NTQuBDU0NjcmNTQ%2BAjMyFhcBKiMlIzQ7GSEqJDU9hRU4IB8wIDE5MSA4Mg0YLDskLVcjKRpEJCYzIDE5MSA8MBAXKDchLU0dug0rKB0rJCIUDjAmHikiIAFnGCInIxgkISEpNiU6QhcaHSA3KBcoIzIcJSwjGiYgHic0JTZLFBsfITUlFSkgAAAAAAIASf%2BwAgsCkAADABAAJQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAOLxu5AA4AED5ZMDEBMwMjAyIuAjU0PgI7AQMBvk2TTActUDwjLkxjNTBXApD9IAEzFyxCK0BgPh%2F%2BUwADACT%2F9QKVAo0AHQAxAEUAPAC4AABFWLgAHi8buQAeAAQ%2BWbsAKAABADIABCu7ABQAAQAbAAQruwAFAAEADAAEK7gAHhC5ADwAAfQwMRM0PgIzMhYXBy4BIyIOAhUUFjMyNjcXDgEjIiYXIi4CNTQ%2BAjMyHgIVFA4CEyIOAhUUHgIzMj4CNTQuArQmPEokIy4RJQ4fFxgyKho1LRwtGRkfPyhBUXY6YUUmNF%2BGUTphRSc0YIYQRnRULh45UzRGdVQuHjpTARQ3Vz0hHhUiERIaL0EnNjcXECcXHE3VKUlmPUqLbEIpSWU9SoxsQgJwO2F7PzVYQCQ7YXs%2FNVhAJAAABABJAUMBswLGAA0AFQApADsASQC4AABFWLgAIC8buQAgABI%2BWbgAAEVYuAAOLxu5AA4ACj5ZuwA0AAEAFgAEK7oAAQATAAMruAAOELgACty4ACAQuQAqAAH0MDETMzIWFRQGBxcjJyMHIzcyNjU0KwEHFyIuAjU0PgIzMh4CFRQOAgMiDgIVFB4CMzI%2BAjU0JtJCHSIaFxwoFiIPJlEXGiEZDQchOywaHjVJKyE7LBseNkkJIjorGBEhMB4hOysZRQJrHhwXIghPRkZkFhIeRsIZLD4mKk49JRktPiUqTz0kAWAdMUEkHjImFR0xQiQ8TgAAAAIALf9lAwkChABGAFQAUAC4AABFWLgAIy8buQAjAA4%2BWbsAFAABABkABCu7AAAAAQAtAAQruwBKAAEANAAEK7sAPgABAFAABCu4ACMQuQAKAAH0ugBBAFAAPhESOTAxJTI%2BAjU0LgIjIg4CFRQeAjMyNxcGIyIuAjU0PgIzMh4CFRQOAiMiJicjDgEjIi4CNTQ%2BAjMyFzM3MwcGFicUFjMyPwEuASMiDgICRRgzKBodPl5ARIVpQSlFXTVLPBdQVEFwUjBJeZ1UR25MKCM7TCgjMAcDFzshFyofEx81RykvGgINMzILF%2BwnHS0tJA4cER4xJBRkHz1ZOTZeRCdAcZlZQ2dHJCUuKytRdkxnsIFJLE9tQElwTScpIx0mEiIzICxWQykzK9kvOWItLD2hGhMiND8AAgAYAAAB6wKKABsAHwClALgAAEVYuAAILxu5AAgADj5ZuAAARVi4AAwvG7kADAAOPlm4AABFWLgAFi8buQAWAAQ%2BWbgAAEVYuAAaLxu5ABoABD5ZuwADAAEAAAAEK7sABwABAAQABCu4AAcQuAAK0LgABxC4AA7QuAAEELgAENC4AAMQuAAS0LgAABC4ABTQuAAAELgAGNC4AAMQuAAc0LgABBC4AB3QugAfABYACBESOTAxNyM3MzcjNzM3MwczNzMHMwcjBzMHIwcjNyMHIwE3IwdnTw1SLlAOVDszOn07MzpPDlIuUQ5VQDRBfkA0AQQufy7NN5Y3ubm5uTeWN83NzQEElpb%2F%2FwCyAbgBVwM%2BAgcAtwBWAbgAAP%2F%2FAFcBuAGCA0oCBwC4AFYBuAAA%2F%2F8AVgGsAYADSgIHALkAVgG4AAD%2F%2FwBfAbgBhgM%2BAgcAugBWAbgAAAACAA%2F%2F9AFAAZMAEwAjACgAuAAARVi4AAAvG7kAAAAEPlm7AAoAAQAUAAQruAAAELkAHAAB9DAxFyIuAjU0PgIzMh4CFRQOAhMiDgIVFBYzMj4CNTQmih0uHxEYL0MsHS4fERgvRAscLB4QICUcLB4QIAwXKTchLl5MLxcpNyEvXksvAW0mPUokLjwmPEokLj0AAAAAAQBcAAABAQGGAAgADQC7AAUAAQAAAAQrMDETIzc%2BATczAyO2WggnLxgvTTwBOCcGERD%2BegAAAAABAAEAAAEsAZIAGgAoALgAAEVYuAAZLxu5ABkABD5ZuwAPAAEACAAEK7gAGRC5ABcAAfQwMTc%2BAzU0JiMiBgcnPgEzMhYVFA4CBzMHIQg9WDgaICAVKRMjHDsmNj4ZMUkwowr%2B%2FyYrRTo1Gx0hGxQkGyQ4MR86Oj8kMwAAAQAA%2F%2FQBKgGSACkAPAC4AABFWLgAJi8buQAmAAQ%2BWbsAGAABABIABCu7AAoAAQAJAAQruAAmELkAAwAB9LoAHgAJAAoREjkwMTceATMyNjU0JiM3Mj4CNTQmIyIHJz4BMzIWFRQGBx4BFRQOAiMiJicpDishIzIyOQkiLhwMIB0pKhsdOyExPS8sIiIXJjQcMUQRYRoiJSMdKikOFhwOGR4hKRUTMi0lOg4MMhodLSAQMCAAAgAJAAABMAGGAAUAEAAnALsADQABAAMABCu7ABAAAQAGAAQruAAQELgAANC4AAYQuAAK0DAxPwIjDwEXIwcjNyM%2FATMHM8IPGgRDVtk4FTYVsAfWQTA5lUxsVGQramoh%2B%2FEA%2F%2F8APAECAXYCVAIGAL0AAP%2F%2FADsBAgFkAlQCBgC%2BAAAAAgA8AQIBdgJUABQAIwA5ALsAFQABABIABCu7AAUAAQAcAAQruAAcELgACNC4AAgvugAJABwABRESObgAFRC4AA7QuAAOLzAxEzQ%2BAjMyFhczNzMDIzcjDgEjIiYXMjY%2FAS4BIyIOAhUUFjweMT8iFygLBA4uQC8GBBc6HiszcRc2FxoNHxEXKyEVHwF5LlA7IhcYJ%2F6%2BMBoePQwhHYUaFBstPCAoJQAAAgA7AQIBZAJUAA8AHwAXALsAGAABAAAABCu7AAgAAQAQAAQrMDETIiY1ND4CMzIWFRQOAhMiDgIVFBYzMj4CNTQmsTZAHzJAITZBHzJBFxgqIBMiIBcqIBMhAQJEPi9NNh5EPTBNNh4BIxksOSApLBkrOiAoLQAAAgBlAbABUgKtAA8AHwAXALsAGAABAAAABCu7AAgAAQAQAAQrMDETIiY1ND4CMzIWFRQOAiciDgIVFBYzMj4CNTQm0C88FSMwGy48FSMvBxIeFQshHhIdFQwhAbA9Mh0zJxc9Mh0zJxfSERsjEh0oEBsjEh0pAAAAAgALAHEB7wIlACEAMQAoALgAAEVYuAAULxu5ABQACj5ZuwAqAAEAAwAEK7gAFBC5ACIAAfQwMSUOASMiJwcnNy4BNTQ2Nyc3Fz4BMzIWFzcXBxYVFAYHFwcDIg4CFRQWMzI%2BAjU0JgFRGj0gQCRII0cHCCAcLywwGjofHzITSSNJEB8aNStwGjIoGC0qGjIoGC21FBYnPyo%2BECUXLVAePSU%2FEhQUET8qPyIqLU0dRCQBYRksPCIzNxkrPCMzNwAAAQAR%2F5IB0ALvADEAZQC4AABFWLgAKy8buQArAA4%2BWbgAAEVYuAAVLxu5ABUABD5ZuAArELkAAwAB9LoABgArABUREjm4ABUQuAAS0LgAEi%2B4ABUQuQAcAAH0ugAfABUAKxESObgAKxC4AC7QuAAuLzAxAS4BIyIGFRQeBBUUDgIPASM3LgEnNx4BMzI2NTQuBDU0PgI%2FATMHHgEXAZ4UOiMwPiAvNy8gGjFFKhQ4FC1KGjEXRi03RiAvOC8gGi9AJxQ4FSM9FgIJHSg5LR8tJycwPysnRDMfA2JmCTIfMB4wQDQkNSsnLTgmJT4uHAJiZwksHQAAAAABAAQAAAHrAo0AJgBCALgAAEVYuAAeLxu5AB4ABD5ZuwAIAAEADwAEK7sAFgABABcABCu4ABYQuAAA0LgAHhC5ABwAAfS4ABcQuAAk0DAxEy4BNTQ%2BAjMyFhcHLgEjIgYVFBYXMwcjDgEPASEHITc%2BAT0BIzeZAgQfNkssM0QVNBEtHjdJBAKbDIwBKi0BAQMM%2FoIJSEhgCwFWGC8UM1E5HzEiKRsiVkwUKxc7RWUrBEIuI3pICDYAAQAcAAACDwJ%2BAB0AigC4AABFWLgAAC8buQAAAA4%2BWbgAAEVYuAAJLxu5AAkADj5ZuAAARVi4ABMvG7kAEwAEPlm7ABAAAQARAAQruwAMAAEADQAEK7oABQATAAAREjm4ABMQuAAP3LgAERC4ABXQuAAPELgAF9C4ABjQuAANELgAGdC4AAwQuAAb0LoAHAATAAAREjkwMRMXHgEXMz4BPwEzAzMHIwczByMHIzcjNzM3IzczA7YpBw8IAxcpFmxN2IgKmw2cCpwgTCGcCZwMmwmIWwJ%2BsCFDJCVDILD%2BvStFKqGhKkUrAUMAAAABABT%2F9AIIAo0ALwCBALgAAEVYuAAsLxu5ACwADj5ZuAAARVi4ABsvG7kAGwAEPlm4ACwQuQADAAH0ugAKACwAGxESObgACi%2B5AAkAAfS6AA8AGwAsERI5uAAPL7kAEAAB9LgAGxC5ABQAAfS4ABAQuAAf0LgADxC4ACDQuAAKELgAJdC4AAkQuAAm0DAxAS4BIyIOAgczByMOAQczByMUFjMyNjcXDgEjIiY1Iz8BPgE3Iz8BPgMzMhYXAc4PKiMfOTAnDfoJ%2FAQEAtIKykM7IzsZJiVUMlhlPgo2AgQEMwk1EThHUy03QxUCCB8nHDNGKiwRIxItW2EhGC8jJ4F7KAQTIxEoAzleQyU4KAAAAAIATv%2FyAd4CngAIACUAPAC4AABFWLgAFS8buQAVAAQ%2BWbsADQABABQABCu4ABUQuAAg3LoAAAAVACAREjm4ABQQuAAX0LgAFy8wMQEOAxUUFhcTLgEnAz4BNxcOAQ8BIzcuATU0PgI%2FATMHHgEXATIeNyoZKSrCESMYRSA2FxsgRi4VMhVETipFViwUMRQlNRQB9wUiNUYpOUoLASoUGAT%2BowIYETQUIANpagpkVT5lSCoEZmcFJhcAAAAAAf8t%2F%2FQBRQKgAAMAGAC4AABFWLgAAC8buQAAAAQ%2BWbgAAdwwMQcBMwHTAeQ0%2FhwMAqz9VAAAAP%2F%2F%2Fy3%2F9AFFAqACBgDGAAD%2F%2FwA9%2F%2FQC8AKhACcAtgAuAQ4AJwDGAVkAAAAHALYBsAAAAAD%2F%2FwB3%2F%2FQCuAKgACcAtwAbAQ4AJwDGAUwAAAAHALoBiAAAAAD%2F%2FwBj%2F%2FQCzwKgACcAtwAXAQ4AJwDGATYAAAAHALgBowAAAAD%2F%2FwAu%2F%2FQCygKgACcAuQAuAQ4AJwDGAW4AAAAHALoBmgAAAAAAAQAwAGcBygIqAAsAHQC7AAMAAQAAAAQruAADELgABtC4AAAQuAAI0DAxEyM1MzUzFTMVIxUj3q6vPK%2BwPAEuOcPDOccAAAAAAQAwAS4BygFnAAMADQC7AAEAAQAAAAQrMDETNSEVMAGaAS45OQAAAAEAQQCHAboCDgALACUAuAAARVi4AAQvG7kABAAKPlm4AABFWLgABi8buQAGAAo%2BWTAxNyc3JzcXNxcHFwcnaSiUlCiUlCmVlSmUhymbmyibmyibmymcAAADADAAYQHKAjIACwAXABsAIQC7ABIAAQAMAAQruwAGAAEAAAAEK7sAGQABABgABCswMRMiJjU0NjMyFhUUBgMiJjU0NjMyFhUUBic1IRX9Fh0dFhYdHRYWHR0WFh0d4wGaAcweFhUdHRUWHv6VHRYVHR0VFh3NOTkAAAD%2F%2FwAwAMQBygHRAiYAzQBqAAYAzQCWAAAAAQAuAIcBygIOAAkAFAC4AABFWLgAAS8buQABAAo%2BWTAxEyUVDwEVHwEVJS4BnMt9fcv%2BZAFnp0FQMAQxT0KmAAEAMACHAcwCDgAJABQAuAAARVi4AAYvG7kABgAKPlkwMT8CNS8BNQUVBTDMfHzMAZz%2BZMlPMQQwUEGnOqYAAAACADAAAAHKAioACwAPADgAuAAARVi4AAwvG7kADAAEPlm7AAMAAQAAAAQruAADELgABtC4AAAQuAAI0LgADBC5AA0AAfQwMRMjNTM1MxUzFSMVIwc1IRXerq88r7A8rgGaATs6tbU6uYI6OgABAFMBGwG1Ap4ACQAUALgAAEVYuAAALxu5AAAAED5ZMDETMxMjLwEjDwEj5T6SQEEtAy9AQgKe%2Fn2yhYWyAAAAAQAtAQQBwwGSABcAFwC7AAgAAQAPAAQruwADAAEAFAAEKzAxEz4BMzIeAjMyNjcXDgEjIi4CIyIGBy0ZPx8bLSklFBYjESsZPx8bLSklFBYjEQE5LyobIBsdIBwvKhsgGx0gAAEAMABnAcoBZwAFAA0AuwABAAEABAAEKzAxEyERIzUhMAGaPP6iAWf%2FAMcAAf%2F2%2F0EB7QHmABoAJAC4AABFWLgAEi8buQASAAQ%2BWbkABgAB9LoAFQASAAYREjkwMTcOARUUFjMyNjcTMwMjNyMOASMiJicPASMTM40EBCImHUYtRUtgPwgEI0gmHS0LDR1Mh026FBgNJSYqLgFY%2FhpKIzAWHVOWAqUA%2F%2F8A%2FgI7AYQCyAAHAOAA2AAAAAD%2F%2FwEHAjsBzQLIAAcA4gDYAAAAAP%2F%2FAM4COwHDAsgABwDkANgAAAAA%2F%2F8AxQJCAegCqgAHAOYA2AAAAAD%2F%2FwDVAk0B1gKsAAcA6QDYAAAAAP%2F%2FANkCWQHNAo8ABwDoANgAAAAA%2F%2F8A%2BgIbAa8C0wAHAOsA2AAAAAD%2F%2FwBh%2FysA%2BwADAAcA7QDYAAAAAAABACYCOwCsAsgAAwAYALgAAEVYuAAALxu5AAAAEj5ZuAAC3DAxEzMXIyZLOzgCyI0AAAAAAQAUAsIAqgMwAAMADQC7AAEAAQADAAQrMDETMxcjFFJEPQMwbgAAAAEALwI7APUCyAADABgAuAAARVi4AAAvG7kAAAASPlm4AALcMDETMwcjo1KIPgLIjQAAAAABAEkCwgELAzAAAwANALsAAAABAAIABCswMRMzByO0V4BCAzBuAAAAAf%2F2AjsA6wLIAAcAKgC4AABFWLgAAC8buQAAABI%2BWbgAAty6AAUAAAACERI5uAAG0LgAB9AwMRMzFyMnIwcjcDlCNS8EUzoCyI1cXAAAAAAB%2F%2FoCwgD7AzAABwAVALsAAQABAAMABCu4AAMQuAAG0DAxEzMXIycjByNsSEc7MwNOQgMwbkZGAAH%2F7QJCARACqgAXAD0AuwAIAAEADwAEK7gADxC4AADQuAAAL7gACBC4ABTQuAAUL7kAAwAB9LgAC9C4AAsvugAMABQAAxESOTAxAz4BMzIeAjMyNjczDgEjIi4CIyIGBxMNMSAVHBYVEA0WCiwNMSAWGxYWEAwWCgJELTkRExEcFy05ERMRHBcAAAAAAf%2FxAsUBGQMwABkAMwC7AAoAAQARAAQruAARELgAANC4AAAvuAAKELgAFtC4ABYvuQAFAAH0uAAN0LgADS8wMQM%2BAzMyHgIzMjY3Mw4BIyIuAiMiBgcPBRQaHhETGhcWDxAYCSwLNiITGhYWDxAYCQLHFiYdEBEVERwZLTwRFRIdGQAAAQABAlkA9QKPAAMAGgC4AABFWLgAAC8buQAAABA%2BWbkAAgAB9DAxEzMHIwvqCesCjzYAAAL%2F%2FQJNAP4CrAALABcAHQC7AAYAAQAAAAQruAAAELgADNC4AAYQuAAS0DAxEyImNTQ2MzIWFRQGMyImNTQ2MzIWFRQGJREXHhUSFx%2BRERceFRIWHgJNFRMXIBYUFx4VExcgFhQXHgAAAgAGAssBBgMqAAsAFwAdALsABgABAAAABCu4AAAQuAAM0LgABhC4ABLQMDETIiY1NDYzMhYVFAYzIiY1NDYzMhYVFAYuERceFREXHpERFx4VERYdAssVExYhFRQVIRUTFiEVFBUhAAACACICGwDXAtMADwAbADkAuAAARVi4ABYvG7kAFgAMPlm4AABFWLgACC8buQAIABI%2BWbgAFhC5AAAAAfS4AAgQuQAQAAH0MDETIiY1ND4CMzIWFRQOAiciBhUUFjMyNjU0JnYkMA8bJBQkLw8aJAgVHxYUFR8WAhsqKBUlHBAqKBUlHBCUJRoWGyYaFRsAAAACAC4CuQDlA2sADwAbABcAuwAWAAEAAAAEK7sACAABABAABCswMRMiJjU0PgIzMhYVFA4CJyIGFRQWMzI2NTQmgiMxEBskFCMxEBskBxYgFxQWIBcCuSYpFSQbDyYpFSQbD44iGRUaIhoVGQAB%2F4n%2FKwAjAAMAEQANALsAAAABAAIABCswMSczBx4BFRQOAgcnPgE1NCYnGDQmEhsZKjYdBCg2GB0DOAcbFxgkGQ8DIwccGRESCAAAAf%2BJ%2FysAIwADABEADQC7AAAAAQACAAQrMDEnMwceARUUDgIHJz4BNTQmJxg0JhIbGSo2HQQoNhgdAzgHGxcYJBkPAyMHHBkREggAAAEAAADwAHAABwB1AAUAAQAAAAAACgAAAgABcwADAAEAAABmAGYAZgBmALQBGgFqAagB6AIgAoACwALgAxgDWAN%2BA9wEJAR4BMQFMAWIBfIGIAZmBp4HBAdUB5AHzAgwCJYI4AlICbIKBgp6CsoK%2FgtGC4gLwAwwDH4Myg0sDZANyg44DooO3g8cD4QP0hAiEFwQaBB0EIAQjBCYEKQRAhEOERoRJhEyET4RShFWEWIRbhF6EYYRkhGeEaoRthIkEo4SmhKmErISvhLKEyYTbhN6E4YTkhOeE6oTthR2FIIUjhSaFKYUshS%2BFMoU1hTiFQIVDhUaFSYVMhU%2BFUoVshZeFtYW4hbuFvoXBhcSFx4Xghf0GIwZJhnQGiQaXhqoGxQbZBvCHC4cZBz0HWAdhB2wHbwdyB32HiYedB7CHtge5B8MHzIfPh9KH1QfYh96H5Ifnh%2BqH74fxh%2FaH%2B4f%2BCAYICwgVCB6IJggtiEYIXohlCGmIcAh2iICInAioiMiI5wkNiS6JMQkziTYJOIlLCVIJYYl4CYSJhomIiZ2JrIm7idOJ8ooJiicKSQpgimeKaYpuCnKKdwp7ioSKiYqUiqQKpwqvCrcKxIrMitkK3oruCvCK8wr1ivgK%2Bor9Cv%2BLAgsIiw2LFAsZCyMLKgs7i0wLUotfi2yLfouMC5WLnwufAAAAAEAAAABDMwn%2B4QIXw889QAJA%2BgAAAAAzZeAlwAAAADNl%2BMI%2Fy3%2B5QRRA7QAAgAJAAIAAAAAAAACdAAkAAAAAADAAAAAwAAAAf7%2FywJHACMCJgA5AlAAIwH3ACMB2QAjAkwAOQJuACMA%2FAAjAcj%2F%2FgIvACMBzgAjAsEAIwJrACMCeQA8AiYAIwJ5ADwCKwAjAfoADAH%2BAF0CaABPAfAAUgL0AF8B7v%2FcAc0AUwIA%2F%2F8CGQAnAhgAHwGzACUCFwAnAeEAJQEaACsCE%2F%2F%2BAgcAHwDtAB8A7v%2BEAdwAHwD4ACwDHwAfAg0AHwIDACcCF%2F%2F2AhkAJwFWAB8Bkv%2F8AUUAPAIQADgBwAA7AsMARgGt%2F9QBwP%2FCAZr%2F9gH%2B%2F8sB%2Fv%2FLAf7%2FywH%2B%2F8sB%2Fv%2FLAf7%2FywMj%2F98CJgA5AfcAIwH3ACMB9wAjAfcAIwD8ACMA%2FAAjAPwAIwD8ACMCawAjAnkAPAJ5ADwCeQA8AnkAPAJ5ADwCef%2F9AzAAPAJoAE8CaABPAmgATwJoAE8BzQBTAmIALwIyACMCGQAnAhkAJwIZACcCGQAnAhkAJwIZACcC%2BQAgAbMAJQHhACUB4QAlAeEAJQHhACUA7QAfAO0AHwDtAB8A7QAfAO0AHwINAB8CAwAnAgMAJwIDACcCAwAnAgMAJwIDAAADLAAnAisAHwIQADgCEAA4AhAAOAIQADgBwP%2FCAcD%2FwgIMACsCF%2F%2F2AigAKwIxACsCRgAPAeAAKgHgABoB4P%2F2AeD%2F9wHgAAgB4P%2F8AeAAMwHgAGsB4AAjAeAAEgDyABcA8v%2FhAPIAFwDy%2F%2BEBGgArARoAFQGZAF4Bmf%2F8APIAgAGYAIAA8gBuAPIAbwGYAG4BmABvAPL%2F%2BAEg%2F%2FgA%2FAAoAPwAFwGbACgBmwAXASsAIwErACQBzwAjAwEAIwDyAE8BJwApAeP%2F3AEjAEEBJf%2FUASQACAEl%2F88BIgAgASX%2FzAFU%2F7gA5wBfAVQAWADnAF8BkwB9Ad0ADwIXAEkCmQAkAZYASQMuAC0B3wAYAWQAsgFhAFcBXwBWAWIAXwFlAA8BZABcAWEAAQFfAAABYgAJAWIAPAFcADsBYgA8AVwAOwE5AGUB4AALAeAAEQHgAAQB4AAcAeAAFAHgAE4AVP8tAFT%2FLQMXAD0C7AB3AwQAYwL8AC4B4AAwAeAAMAHgAEEB4AAwAeAAMAHgAC4B4AAwAeAAMAHfAFMB4AAtAeAAMAIO%2F%2FYCBQD%2BAgUBBwIFAM4CBQDFAgUA1QIFANkCBQD6AgUAYQAAACYAAAAUAAAALwAAAEkAAP%2F2AAD%2F%2BgAA%2F%2B0AAP%2FxAAAAAQAA%2F%2F0AAAAGAAAAIgAAAC4AAP%2BJAAD%2FiQDAAAAAAQAAA9j%2B7wAABHj%2FLf61BFED6ADCAAAAAAAAAAAAAAAAAPAAAwGpAZAABQAAAooCWP%2FxAEsCigJYAEQBXgAyASAAAAILBQMDBAMJAgQgAAAHAAAAAQAAAAAAAAAAQURCRQABAAD%2B%2FwLu%2FwYAAAPYAREgAAGTAAAAAAHgApQAAAAgAAMAAAACAAAAAwAAABQAAwABAAAAFAAEAdIAAAA8ACAABAAcAAAADQAvADkAQABaAGAAegB%2BAL8AzwDfAO8A%2FwExAVMCxgLaAtwgFCAaIB4gIiA6IEQgdCCsIhIiFf%2F%2FAAAAAAANACAAMAA6AEEAWwBhAHsAoADAANAA4ADwATEBUgLGAtoC3CATIBggHCAiIDkgRCB0IKwiEiIV%2F%2F8AAf%2F1AAAATAAA%2F8MAAP%2B9AAAAAP94AAD%2FdwAA%2FzYAAP4U%2FgT9%2F%2BCJAAAAAOB94F3gguBB4Bjeu96yAAEAAAAAADgAAABUAAAAXgAAAGYAbAAAAKgAAADEAAAA4AAAAAAAAAAAANoA3gAAAAAAAAAAAAAAAAAAAAAAAwCKAI8AsQDBAMgAewCOAKEAogCrAMwAhwCaAIYApwCIAIkA0QDQANIAjACwAKMAqQCkANQAoADYAKUAqACmANUA7wCLAMUAwgDAAMMAqgCsANwArgC7AJgA1gCbAK8A3QC%2FANMAswC0ANkA1wCtAJ4A3wCyALwAmQDJAMoAywCNAFUASABJAEoASwBMAE0AzgBOAFAAUQBSAFMAVABWAHAAdwBoAGkAagBrAGwAbQDPAG4AcQByAHMAdAB1AHgAdgBPAG8AkACRAJQAkgCTAJUAALgAACxLuAAJUFixAQGOWbgB%2F4W4AEQduQAJAANfXi24AAEsICBFaUSwAWAtuAACLLgAASohLbgAAywgRrADJUZSWCNZIIogiklkiiBGIGhhZLAEJUYgaGFkUlgjZYpZLyCwAFNYaSCwAFRYIbBAWRtpILAAVFghsEBlWVk6LbgABCwgRrAEJUZSWCOKWSBGIGphZLAEJUYgamFkUlgjilkv%2FS24AAUsSyCwAyZQWFFYsIBEG7BARFkbISEgRbDAUFiwwEQbIVlZLbgABiwgIEVpRLABYCAgRX1pGESwAWAtuAAHLLgABiotuAAILEsgsAMmU1iwQBuwAFmKiiCwAyZTWCMhsICKihuKI1kgsAMmU1gjIbgAwIqKG4ojWSCwAyZTWCMhuAEAioobiiNZILADJlNYIyG4AUCKihuKI1kguAADJlNYsAMlRbgBgFBYIyG4AYAjIRuwAyVFIyEjIVkbIVlELbgACSxLU1hFRBshIVktALAAKwCyAQECKwGyAgICKwG3AkQ2KiEUAAgrtwNANiohFAAIKwC3AVJENiQWAAgrALIECAcrsAAgRX1pGERLsGBSWLABG7AAWbABjgAAFABEAFIAVgAAAAz%2FMwAMAeYADAIGAAwCPgAMAn4ADAKQAAwCyAAMAAAABwBaAAMAAQQJAAEAHgAAAAMAAQQJAAIADAAeAAMAAQQJAAMAQgAqAAMAAQQJAAQALABsAAMAAQQJAAUAggCYAAMAAQQJAAYAIAEaAAMAAQQJAA4ASAE6AFMAbwB1AHIAYwBlACAAUwBhAG4AcwAgAFAAcgBvAEkAdABhAGwAaQBjADEALgAwADUAMAA7AEEARABCAEUAOwBTAG8AdQByAGMAZQBTAGEAbgBzAFAAcgBvAC0ASQB0ADsAQQBEAE8AQgBFAFMAbwB1AHIAYwBlACAAUwBhAG4AcwAgAFAAcgBvACAASQB0AGEAbABpAGMAVgBlAHIAcwBpAG8AbgAgADEALgAwADUAMAA7AFAAUwAgAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwADAAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADkAMAAwAFMAbwB1AHIAYwBlAFMAYQBuAHMAUAByAG8ALQBJAHQAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAZABvAGIAZQAuAGMAbwBtAC8AdAB5AHAAZQAvAGwAZQBnAGEAbAAuAGgAdABtAGwAAgAA%2F%2FUAAP%2B1ADIAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAABAgEDAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQCtAMkAxwCuAGIAYwCQAGQAywBlAMgAygDPAMwAzQDOAGYA0wDQANEArwBnAJEAsADWANQA1QBoAOsA6QDtAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2AHcA1wB4AHoAeQB7AH0AfAChALEAiQB%2FAH4AgACBAOwAugDqAO4BBAEFAAkAEwAUABUAFgAXABgAGQAaABsAHAARAA8AHQAeAAQAowAiAKIACgAFALYAtwC0ALUAxADFAL4AvwCpAKoAEAEGALIAswDDAIcAQgALAAwAPgBAAF4AYAASAF8APwDoAA0AhgCIAIsAigAjAAYBBwEIAQkBCgELAQwBDQEOAQ8AnQCeARABEQCDAL0ABwCFAJYBEgCEALwBEwAIAPUA9AD2AA4A7wDwALgAIAAfACEAkwBBAGEApAEUAEMAjQDYANkAjgDaAN0A3gEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkBE5VTEwCQ1IDZl9mA2ZfdAd1bmkwMEFECG9uZS5zdXBzCHR3by5zdXBzCnRocmVlLnN1cHMJZm91ci5zdXBzCXplcm8uZG5vbQhvbmUuZG5vbQh0d28uZG5vbQp0aHJlZS5kbm9tCWZvdXIuZG5vbQZhLnN1cHMGby5zdXBzBEV1cm8HdW5pMjIxNQd1bmkwMEI1B3VuaTAzMDALdW5pMDMwMC5jYXAHdW5pMDMwMQt1bmkwMzAxLmNhcAd1bmkwMzAyC3VuaTAzMDIuY2FwB3VuaTAzMDMLdW5pMDMwMy5jYXAHdW5pMDMwNAd1bmkwMzA4C3VuaTAzMDguY2FwB3VuaTAzMEELdW5pMDMwQS5jYXAHdW5pMDMyNwt1bmkwMzI3LmNhcAd1bmkwMEEwAAAAAAAAAf%2F%2FAAIAAQAAAAwAAAAAAAAAAgAIAAQANwABAD4APgABAE4ATwABAGcAZwABAG4AbwABAHgAeAABAHkAegACANoA2gABAAEAAAAKADAARAACREZMVAAObGF0bgAaAAQAAAAA%2F%2F8AAQAAAAQAAAAA%2F%2F8AAQABAAJrZXJuAA5rZXJuAA4AAAABAAAAAQAEAAIAAAACAAoBFAABACYABAAAAA4ARgBgAHIAhACSAKAAsgDAANYA3ADiAOgA8gEAAAEADgAJABMAGQAbADMANQBWAHAAhgCJAIsAjQCeAKkABgAZ%2F%2FkAM%2F%2F2ADX%2F7ACe%2F%2FYAp%2F%2BwAK8AKwAEABv%2F6AA1%2F%2FYAp%2F%2BiAK8AIAAEADX%2F5QCe%2F%2BwAp%2F%2FEAK8AKwADAJ7%2FwgCr%2F%2F0ArwA1AAMAp%2F%2FsAKv%2F5gCvACYABAAZ%2F%2FYAnv%2FsAKv%2F2ACvACYAAwCn%2F8sAqf%2FYAKv%2FqwAFADP%2F6AA1ABAAjP%2FrAKn%2F7ACv%2F9YAAQAnAAMAAQAnAB8AAQAZ%2F%2BUAAgAZ%2F9EAG%2F%2FlAAMAGf%2FsABv%2F5QA1%2F%2BwAAgAZ%2F8QAM%2F%2FsAAIRmAAEAAASFBNiADMALAAA%2F%2BL%2FnP%2FY%2F9j%2FsABk%2F%2FYAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F8v%2FXADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FvQAAAAD%2FzQAAAAAAAAAA%2F%2BX%2F7P%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Bp%2F8j%2F3v%2B9AEYAAAAAAAD%2FyP%2FdAAD%2F5f%2Fv%2F%2B%2F%2F2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAA%2F9gAAAAAAAD%2F7P%2FsAAD%2FsAAU%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F6v%2F3v%2Fv%2F9H%2F9v%2F2%2F%2FL%2FqAAA%2F%2Fb%2F9v%2FrAAAAAP%2FvAAD%2F7%2F%2F2%2F4j%2F2P%2Fl%2F8%2F%2FqQAAAAAAAAAA%2F88ABv%2Bp%2F7n%2F8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FYAAAAAP%2FlAAD%2F9v%2FyAAAAAP%2FyAAAAAAAAAAAAAP%2F2%2F%2FYAAP%2BiAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FL%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7P%2FyAAAAAAAA%2F%2B%2F%2F7wAAAAD%2F7P%2F2%2F88AAAAAAAD%2F9v%2Fy%2F%2FYAAAAA%2F6cAAAATAAAAAAAAAAAAAAAAAAAAAP%2FvAAD%2Fz%2F%2FrAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8sAAAAAAAAABQAAAAAAAAAA%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fv%2F%2FL%2F9v%2Fv%2F%2FYAAAAAAAAAAP%2F2AAD%2F5QAAAAAAAAAA%2F%2Bj%2F8f%2FsAAD%2FyQAAAAAAAAAAAAAAAP%2F2AAD%2F1QAAAAAAAP%2Fa%2F9UAAAAAAAAAAAAAAAAAAAAAAAD%2FiP%2FX%2F9H%2FqwAA%2F8L%2F0f%2BaAAP%2F5QAA%2F9P%2F8gAA%2F%2B8AAP%2Fq%2F%2Fb%2FWf%2Bc%2F43%2F0f%2BNAAAAAAAAAAD%2FowAA%2F3L%2Fmv%2BnAAD%2FsP%2FYAAAAAAAAAAAAAAAAAAAAAAAA%2F94AAAAA%2F%2BgAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAA%2F%2BwAAAAA%2F7cAAAAAAAAAA%2F%2FsAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FcAAAAAP%2FsAAAAAAAAAAD%2F9v%2Fy%2F%2FYAAP%2F2%2F%2FYAAP%2FsAAAAAP%2FyAAAAAAAAABkAAAAAAAAAAP%2F2%2F%2FYAAAAAAAD%2F9v%2FY%2F%2BgAAAAAAAD%2F9gAAAAAAAAAAAAD%2F4gAAAAAAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAD%2F9gAAAAD%2F4gAA%2F%2FYAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FYAAP%2FY%2F9gAAP%2Br%2F7L%2Fy%2F%2Fs%2F7D%2FsP%2Ff%2F4L%2F7P%2BcAAAAAP%2FEAAAAK%2F%2BjAAAAAAAAAAD%2F7AAAAAD%2F2P%2FY%2F5z%2FwP%2BV%2F7D%2FxP%2Bc%2F5z%2FvQAAAAAAAAAAAAAAAP%2FyAAAAAAAAAAD%2F9v%2F2AAAAAAAAAAAAAP%2B2AAAAAAAAAAAAAAAAAAD%2F2AAAAAAAAP%2F2%2F%2FYAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2B%2F%2F9v%2F2AAD%2F%2Bf%2FsAAb%2FnAAAAAAAAAAAAAAAAAAn%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fv%2F8gAAAAA%2F%2B8AAP%2FvAAAAAAAA%2F%2FYAAAAAAAAAAP%2Fo%2F%2BgAAP%2FG%2F%2Fb%2F6P%2Fy%2F9f%2F2AAA%2F6IAAP%2FiAAAAAP%2FYAA0AK%2F%2BwAAAAAAAAAAAAAAAAAAD%2F6P%2Fe%2F73%2Ftv%2Bp%2F97%2Fwv%2FA%2F%2FL%2F0AAAAAAAAAAA%2F%2Fb%2F9v%2FyAAD%2F6P%2FoAAD%2F7P%2Fi%2F%2Fb%2F7P%2Fn%2F%2FEAAP%2Fi%2F%2FL%2F3QAAAAD%2FxAAAABcAAAAAAAAAAP%2F2AAAAAAAA%2F%2BgAAP%2FC%2F80AAAAAAAAAAAAAAAAAAAAAAAD%2F3gAAAAD%2F3gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FnAAAAAAAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F94AAAAA%2F%2BgAAAAGAAYAAAAAAAAAAAAA%2F%2FH%2F9gAAAAAAAAAAAAAAAP%2F2AAAAEwAAAAAAAAAA%2F%2FIAAAAAAAAABgAG%2F%2B8AAAAAAAAAAAAAAAAAAAAAAAAAAP%2BrAAAAAP%2FeAAoAAAAA%2F%2BUAAAAAAAAAAAAAAAAAAAAAAAAAAP%2B3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2Flf%2Br%2F%2BL%2FrAAf%2F%2B3%2F7P%2BGAAAAAAAAAAD%2F9gAAAAAAAP%2FiAAD%2FZQAAAAAAAAAAAAAAAAAAAAD%2FrAAA%2F4b%2Fmv%2FdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F88AAP%2F2%2F%2BUAAP%2Fy%2F%2FL%2F4AAA%2F%2BwAAP%2FyAAD%2F8QAA%2F%2Bz%2F7wAA%2F7P%2F9v%2FlAAD%2F8wAAAAAAAAAA%2F%2FIAAAAAAAD%2F8gAAAA3%2F6AAAAAAAAAAAAAAAAAAAAAAAAAAyAAAAMgAyAAAAAAAAACEAAAAAAAAAAP%2F2%2F%2BwAAAAAAAAAAAAAAFD%2F8wAeAEv%2F7AAeAAAAAAAyACgAKAAhAAAAAP%2F2AAD%2Fwv%2F6AAAAAAAAAAAANQAAAAD%2F7wAAAAD%2F7%2F%2F2AAAAAP%2FdAAAAAAAAAAD%2F7%2F%2F2AAAAAP%2F2%2F%2Fb%2FxAAA%2F%2BwAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F3f%2FlAA0AAAAAAAAAAAAAAAAAAAAA%2F%2BgAAAAA%2F94AAAAAAAD%2FxAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F7AAAAAAAAAAAAAAAAAAAAAA%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FAAAAAAP%2FCAAD%2F%2Bf%2F1%2F70AAAAAAAAAAAAA%2F%2FEAAAAAAAAAAAAA%2F9gAAAAAAAAAAAAAAAAAAP%2FoAAAAAP%2FY%2F%2FX%2F7wAUAAD%2F9gAAAAD%2F8gAAAAD%2F%2BQAAAAAAAAAAAAAAAAAAAAAAAAAA%2F7kAAAAAAAD%2F2P%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FE%2F3QAAAAAAAAAAAAAAAAAAAAA%2F64AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F%2BgAGAAYADQAAAAD%2F7AAA%2F%2Fb%2F6QAA%2F6sAAAAAAAAAFAAAAAAAOv%2FYAAAAAAAAAAAAAAAAACEABgAA%2F%2Bz%2F7P%2FNAAD%2F%2Bv%2F2AAAAAAAAAAAAAP%2FeAAAAAP%2FoAAAAAP%2F8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2B3AAAAAAAAAAAAAAAAAAAAAP%2FyAAAAAAAA%2F%2FwAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9f%2FsAAAAAAAA%2F%2FYAAAAA%2F%2BwAAAAtABQAAAAAAAAAAAAAAAAAAAAAAAD%2F5f%2FsAA0AAAAAAAAAFAAAAAAAAAAA%2F9gAAAAA%2F%2Bz%2F9gAAAAAAAP%2F5AAAAAAAA%2F%2Fz%2F9gAA%2F%2BIAAAAA%2F%2BIAAAAAAAAAM%2F%2F2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FoAAAAAP%2FyAAAAAAAAAAAAAP%2FYAAAAAP%2Fl%2F%2FYAAAAAAAAAAAAAAAAAAP%2F8%2F%2BwAAP%2FeAAAAAAAAAAAAAAAAADP%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F3QAAAAD%2F9gAAAAAAAAAAAAD%2F4gAAAAD%2F6AAAAAAAAAAAAAAAAAAAAAD%2F9v%2FpAAAAAAAA%2F%2BwAAAAA%2F%2FYAAAAmAAAAAAAAAAD%2F9gAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F8%2F%2FkAAP%2F2%2F%2FYAAP%2FY%2F%2FD%2F7P%2F2%2F%2Fb%2F4gAA%2F3T%2F9v%2FxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7P%2B9%2F%2Bz%2F8f%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAD%2F4gAAAAD%2F8gAAAAAAAAAA%2F8L%2F9v%2BcAAD%2F7P%2FiAAD%2FeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9v%2F2%2F4YAAAAA%2F%2BwAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAP%2FP%2F%2Bz%2F7AAA%2F%2BX%2FyAAA%2F6wAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8%2F%2Fzf%2B5%2F%2Bz%2F7P%2FIAAD%2FzQAAAAAAAP%2FyAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAA%2F%2FAAAAAAAAD%2F8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FP%2F9gAAAAAAAAAAAAA%2F%2BUAAAAAAAAAAAAAAAAAAABJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F7kAAAAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Bj%2F7AAAAAAAAP%2FvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9P%2Fo%2F5UAAAAAAAAAAAAAAAAAAAAA%2F%2B0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2Fr%2F%2FJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FoAAA%2F%2FL%2FyQAAAAAAAAAAAAAAAP%2F5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F3f%2F5AAAAAAAA%2F%2FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F6MAAP%2Fy%2F70AAAAAAAAAAAAA%2F%2BL%2F7AAAAAAAAAAA%2F%2BIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F9EAAAAAAAAAAP%2FyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FvQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FmgAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F7MAAAAAAAD%2F6P%2FcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F20AAP%2FYAAAAAAAAAAAAAAAA%2F9gAAAAA%2F%2Bz%2F9gAAAAAAAP%2FyAAAAAAAA%2F%2Fz%2F7AAA%2F94AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FdAAAAAP%2FyAAAAAAAAAAAAAP%2FCAAAAAP%2FoAAAAAAAAAAAAAAAAAAAAAP%2Fv%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fr%2F%2FIAAAAAAAAAAAAA%2F%2FkAAAACABQABAAHAAAACQAKAAQADQAPAAYAEgAgAAkAIgAlABgAKAAoABwAKgA9AB0APwA%2FADEASQBOADIAUABVADgAVwBiAD4AZwB2AEoAeAB6AFoAhgCTAF0AlgCeAGsAoQChAHQAowCjAHUApQClAHYApwCnAHcAqQCpAHgAAQAEAKQABwAIAAkADQAAACUACgAAAAAAJgALAAwAAAAAAA0AJwANAA4ADwAQABEAKAASACkAEwAUABUAHQAWAAAAGQAaABUAHAAAAAAAGwAAABwAHAAdAB0AFQAfACAAIQAVADEAIgAyACMAJAAHAAcABwAHAAcABwAAAAkAAAAAAAAAAAAAAAAAAAAAAAAADQANAA0ADQANAA0AAAARABEAEQARABMADQAAABUAFQAVABUAFQAVABkAFgAZABkAGQAZAAAAAAAAAAAAFQAcAB0AHQAdAB0AHQAdABkALAAVABUAFQAVACMAIwAAAB0AGgAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYABgAFwAXAAEAAgAEAAUALwAvAB4AMAAeADAAAAAAAC0ALgAtAC4AKwArACsAKwADAAAAAAAqAAAAKgAAACoAAAAGAAEABACsAAoAAAANAAAAAAAAAA0AAAAAABEAAAAAAAAAAAANAAAADQAAAAsAAgADAB0ABAAeAAUADAAOAAAADgAOAA4AEAAOAAAAAAAGAAAAAAAmACYADgAmAA4AJgAnABIAEwAhAAcAIgAIACgACgAKAAoACgAKAAoAAAANAAAAAAAAAAAAAAAAAAAAAAAAAA0ADQANAA0ADQANAA0AAwADAAMAAwAFAAEAAAAOAA4ADgAOAA4ADgAPAA4ADgAOAA4ADgAAAAAAAAAAACYAJgAOAA4ADgAOAA4ADgAOAAAAEwATABMAEwAIAAgAAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAlACkAKQAaABsAFwAcAB8AHwAgAAkAIAAJAAAAAAAkACoAJAAqACMAIwAjACMAFgAAAAAAAAArAAAAKwAAACsAGQAAABUAAAAUAAAAAAAAABgAAQAAAAoAMABEAAJERkxUAA5sYXRuABoABAAAAAD%2F%2FwABAAAABAAAAAD%2F%2FwABAAEAAmxpZ2EADmxpZ2EADgAAAAEAAAABAAQABAAAAAEACAABABoAAQAIAAIABgAMAHkAAgAjAHoAAgAxAAEAAQAj%29%20format%28%27truetype%27%29%3B%0A%7D%0Ahtml%7Bfont%2Dfamily%3Asans%2Dserif%3B%2Dms%2Dtext%2Dsize%2Dadjust%3A100%25%3B%2Dwebkit%2Dtext%2Dsize%2Dadjust%3A100%25%7Dbody%7Bmargin%3A0%7Darticle%2Caside%2Cdetails%2Cfigcaption%2Cfigure%2Cfooter%2Cheader%2Chgroup%2Cmain%2Cmenu%2Cnav%2Csection%2Csummary%7Bdisplay%3Ablock%7Daudio%2Ccanvas%2Cprogress%2Cvideo%7Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Abaseline%7Daudio%3Anot%28%5Bcontrols%5D%29%7Bdisplay%3Anone%3Bheight%3A0%7D%5Bhidden%5D%2Ctemplate%7Bdisplay%3Anone%7Da%7Bbackground%2Dcolor%3Atransparent%7Da%3Aactive%2Ca%3Ahover%7Boutline%3A0%7Dabbr%5Btitle%5D%7Bborder%2Dbottom%3A1px%20dotted%7Db%2Cstrong%7Bfont%2Dweight%3Abold%7Ddfn%7Bfont%2Dstyle%3Aitalic%7Dh1%7Bfont%2Dsize%3A2em%3Bmargin%3A0%2E67em%200%7Dmark%7Bbackground%3A%23ff0%3Bcolor%3A%23000%7Dsmall%7Bfont%2Dsize%3A80%25%7Dsub%2Csup%7Bfont%2Dsize%3A75%25%3Bline%2Dheight%3A0%3Bposition%3Arelative%3Bvertical%2Dalign%3Abaseline%7Dsup%7Btop%3A%2D0%2E5em%7Dsub%7Bbottom%3A%2D0%2E25em%7Dimg%7Bborder%3A0%7Dsvg%3Anot%28%3Aroot%29%7Boverflow%3Ahidden%7Dfigure%7Bmargin%3A1em%2040px%7Dhr%7B%2Dwebkit%2Dbox%2Dsizing%3Acontent%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Acontent%2Dbox%3Bbox%2Dsizing%3Acontent%2Dbox%3Bheight%3A0%7Dpre%7Boverflow%3Aauto%7Dcode%2Ckbd%2Cpre%2Csamp%7Bfont%2Dfamily%3Amonospace%2C%20monospace%3Bfont%2Dsize%3A1em%7Dbutton%2Cinput%2Coptgroup%2Cselect%2Ctextarea%7Bcolor%3Ainherit%3Bfont%3Ainherit%3Bmargin%3A0%7Dbutton%7Boverflow%3Avisible%7Dbutton%2Cselect%7Btext%2Dtransform%3Anone%7Dbutton%2Chtml%20input%5Btype%3D%22button%22%5D%2Cinput%5Btype%3D%22reset%22%5D%2Cinput%5Btype%3D%22submit%22%5D%7B%2Dwebkit%2Dappearance%3Abutton%3Bcursor%3Apointer%7Dbutton%5Bdisabled%5D%2Chtml%20input%5Bdisabled%5D%7Bcursor%3Adefault%7Dbutton%3A%3A%2Dmoz%2Dfocus%2Dinner%2Cinput%3A%3A%2Dmoz%2Dfocus%2Dinner%7Bborder%3A0%3Bpadding%3A0%7Dinput%7Bline%2Dheight%3Anormal%7Dinput%5Btype%3D%22checkbox%22%5D%2Cinput%5Btype%3D%22radio%22%5D%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%3Bpadding%3A0%7Dinput%5Btype%3D%22number%22%5D%3A%3A%2Dwebkit%2Dinner%2Dspin%2Dbutton%2Cinput%5Btype%3D%22number%22%5D%3A%3A%2Dwebkit%2Douter%2Dspin%2Dbutton%7Bheight%3Aauto%7Dinput%5Btype%3D%22search%22%5D%7B%2Dwebkit%2Dappearance%3Atextfield%3B%2Dwebkit%2Dbox%2Dsizing%3Acontent%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Acontent%2Dbox%3Bbox%2Dsizing%3Acontent%2Dbox%7Dinput%5Btype%3D%22search%22%5D%3A%3A%2Dwebkit%2Dsearch%2Dcancel%2Dbutton%2Cinput%5Btype%3D%22search%22%5D%3A%3A%2Dwebkit%2Dsearch%2Ddecoration%7B%2Dwebkit%2Dappearance%3Anone%7Dfieldset%7Bborder%3A1px%20solid%20%23c0c0c0%3Bmargin%3A0%202px%3Bpadding%3A0%2E35em%200%2E625em%200%2E75em%7Dlegend%7Bborder%3A0%3Bpadding%3A0%7Dtextarea%7Boverflow%3Aauto%7Doptgroup%7Bfont%2Dweight%3Abold%7Dtable%7Bborder%2Dcollapse%3Acollapse%3Bborder%2Dspacing%3A0%7Dtd%2Cth%7Bpadding%3A0%7D%40media%20print%7B%2A%2C%2A%3Abefore%2C%2A%3Aafter%7Bbackground%3Atransparent%20%21important%3Bcolor%3A%23000%20%21important%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%20%21important%3Bbox%2Dshadow%3Anone%20%21important%3Btext%2Dshadow%3Anone%20%21important%7Da%2Ca%3Avisited%7Btext%2Ddecoration%3Aunderline%7Da%5Bhref%5D%3Aafter%7Bcontent%3A%22%20%28%22%20attr%28href%29%20%22%29%22%7Dabbr%5Btitle%5D%3Aafter%7Bcontent%3A%22%20%28%22%20attr%28title%29%20%22%29%22%7Da%5Bhref%5E%3D%22%23%22%5D%3Aafter%2Ca%5Bhref%5E%3D%22javascript%3A%22%5D%3Aafter%7Bcontent%3A%22%22%7Dpre%2Cblockquote%7Bborder%3A1px%20solid%20%23999%3Bpage%2Dbreak%2Dinside%3Aavoid%7Dthead%7Bdisplay%3Atable%2Dheader%2Dgroup%7Dtr%2Cimg%7Bpage%2Dbreak%2Dinside%3Aavoid%7Dimg%7Bmax%2Dwidth%3A100%25%20%21important%7Dp%2Ch2%2Ch3%7Borphans%3A3%3Bwidows%3A3%7Dh2%2Ch3%7Bpage%2Dbreak%2Dafter%3Aavoid%7D%2Enavbar%7Bdisplay%3Anone%7D%2Ebtn%3E%2Ecaret%2C%2Edropup%3E%2Ebtn%3E%2Ecaret%7Bborder%2Dtop%2Dcolor%3A%23000%20%21important%7D%2Elabel%7Bborder%3A1px%20solid%20%23000%7D%2Etable%7Bborder%2Dcollapse%3Acollapse%20%21important%7D%2Etable%20td%2C%2Etable%20th%7Bbackground%2Dcolor%3A%23fff%20%21important%7D%2Etable%2Dbordered%20th%2C%2Etable%2Dbordered%20td%7Bborder%3A1px%20solid%20%23ddd%20%21important%7D%7D%40font%2Dface%7Bfont%2Dfamily%3A%27Glyphicons%20Halflings%27%3Bsrc%3Aurl%28data%3Aapplication%2Fvnd%2Ems%2Dfontobject%3Bbase64%2Cn04AAEFNAAACAAIABAAAAAAABQAAAAAAAAABAJABAAAEAExQAAAAAAAAAAIAAAAAAAAAAAEAAAAAAAAAJxJ%2FLAAAAAAAAAAAAAAAAAAAAAAAACgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAAAADgBSAGUAZwB1AGwAYQByAAAAeABWAGUAcgBzAGkAbwBuACAAMQAuADAAMAA5ADsAUABTACAAMAAwADEALgAwADAAOQA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMAAuADcAMAA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4ANQAuADUAOAAzADIAOQAAADgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzACAAUgBlAGcAdQBsAGEAcgAAAAAAQlNHUAAAAAAAAAAAAAAAAAAAAAADAKncAE0TAE0ZAEbuFM3pjM%2FSEdmjKHUbyow8ATBE40IvWA3vTu8LiABDQ%2BpexwUMcm1SMnNryctQSiI1K5ZnbOlXKmnVV5YvRe6RnNMFNCOs1KNVpn6yZhCJkRtVRNzEufeIq7HgSrcx4S8h%2Fv4vnrrKc6oCNxmSk2uKlZQHBii6iKFoH0746ThvkO1kJHlxjrkxs%2BLWORaDQBEtiYJIR5IB9Bi1UyL4Rmr0BNigNkMzlKQmnofBHviqVzUxwdMb3NdCn69hy%2BpRYVKGVS%2F1tnsqv4LL7wCCPZZAZPT4aCShHjHJVNuXbmMrY5LeQaGnvAkXlVrJgKRAUdFjrWEah9XebPeQMj7KS7DIBAFt8ycgC5PLGUOHSE3ErGZCiViNLL5ZARfywnCoZaKQCu6NuFX42AEeKtKUGnr%2FCm2Cy8tpFhBPMW5Fxi4Qm4TkDWh4IWFDClhU2hRWosUWqcKLlgyXB%2BlSHaWaHiWlBAR8SeSgSPCQxdVQgzUixWKSTrIQEbU94viDctkvX%2BVSjJuUmV8L4CXShI11esnp0pjWNZIyxKHS4wVQ2ime1P4RnhvGw0aDN1OLAXGERsB7buFpFGGBAre4QEQR0HOIO5oYH305G%2BKspT%2FFupEGGafCCwxSe6ZUa%2B073rXHnNdVXE6eWvibUS27XtRzkH838mYLMBmYysZTM0EM3A1fbpCBYFccN1B%2FEnCYu%2FTgCGmr7bMh8GfYL%2BBfcLvB0gRagC09w9elfldaIy%2FhNCBLRgBgtCC7jAF63wLSMAfbfAlEggYU0bUA7ACCJmTDpEmJtI78w4%2FBO7dN7JR7J7ZvbYaUbaILSQsRBiF3HGk5fEg6p9unwLvn98r%2BvnsV%2B372uf1xBLq4qU%2F45fTuqaAP%2BpssmCCCTF0mhEow8ZXZOS8D7Q85JsxZ%2BAzok7B7O%2Ff6J8AzYBySZQB%2FQHYUSA%2BEeQhEWiS6AIQzgcsDiER4MjgMBAWDV4AgQ3g1eBgIdweCQmCjJEMkJ%2BPKRWyFHHmg1Wi%2F6xzUgA0LREoKJChwnQa9B%2B5RQZRB3IlBlkAnxyQNaANwHMowzlYSMCBgnbpzvqpl0iTJNCQidDI9ZrSYNIRBhHtUa5YHMHxyGEik9hDE0AKj72AbTCaxtHPUaKZdAZSnQTyjGqGLsmBStCejApUhg4uBMU6mATujEl%2BKdDPbI6Ag4vLr%2BhjY6lbjBeoLKnZl0UZgRX8gTySOeynZVz1wOq7e1hFGYIq%2BMhrGxDLak0PrwYzSXtcuyhXEhwOYofiW%2BEcI%2Fjw8P6IY6ed%2BetAbuqKp5QIapT77LnAe505lMuqL79a0ut4rWexzFttsOsLDy7zvtQzcq3U1qabe7tB0wHWVXji%2BzDbo8x8HyIRUbXnwUcklFv51fvTymiV%2BMXLSmGH9d9%2BaXpD5X6lao41anWGig7IwIdnoBY2ht%2FpO9mClLo4NdXHAsefqWUKlXJkbqPOFhMoR4aiA1BXqhRNbB2Xwi%2B7u%2FjpAoOpKJ0UX24EsrzMfHXViakCNcKjBxuQX8BO0ZqjJ3xXzf%2B61t2VXOSgJ8xu65QKgtN6FibPmPYsXbJRHHqbgATcSZxBqGiDiU4NNNsYBsKD0MIP%2FOfKnlk%2FLkaid%2FO2NbKeuQrwOB2Gq3YHyr6ALgzym5wIBnsdC1ZkoBFZSQXChZvlesPqvK2c5oHHT3Q65jYpNxnQcGF0EHbvYqoFw60WNlXIHQF2HQB7zD6lWjZ9rVqUKBXUT6hrkZOle0RFYII0V5ZYGl1JAP0Ud1fZZMvSomBzJ710j4Me8mjQDwEre5Uv2wQfk1ifDwb5ksuJQQ3xt423lbuQjvoIQByQrNDh1JxGFkOdlJvu%2FgFtuW0wR4cgd%2BZKesSV7QkNE2kw6AV4hoIuC02LGmTomyf8PiO6CZzOTLTPQ%2BHW06H%2Btx%2BbQ8LmDYg1pTFrp2oJXgkZTyeRJZM0C8aE2LpFrNVDuhARsN543%2FFV6klQ6Tv1OoZGXLv0igKrl%2FCmJxRmX7JJbJ998VSIPQRyDBICzl4JJlYHbdql30NvYcOuZ7a10uWRrgoieOdgIm4rlq6vNOQBuqESLbXG5lzdJGHw2m0sDYmODXbYGTfSTGRKpssTO95fothJCjUGQgEL4yKoGAF%2F0SrpUDNn8CBgBcSDQByAeNkCXp4S4Ro2Xh4OeaGRgR66PVOsU8bc6TR5%2FxTcn4IVMLOkXSWiXxkZQCbvKfmoAvQaKjO3EDKwkwqHChCDEM5loQRPd5ACBki1TjF772oaQhQbQ5C0lcWXPFOzrfsDGUXGrpxasbG4iab6eByaQkQfm0VFlP0ZsDkvvqCL6QXMUwCjdMx1ZOyKhTJ7a1GWAdOUcJ8RSejxNVyGs31OKMyRyBVoZFjqIkmKlLQ5eHMeEL4MkUf23cQ%2F1SgRCJ1dk4UdBT7OoyuNgLs0oCd8RnrEIb6QdMxT2QjD4zMrJkfgx5aDMcA4orsTtKCqWb%2FVeyceqa5OGSmB28YwH4rFbkQaLoUN8OQQYnD3w2eXpI4ScQfbCUZiJ4yMOIKLyyTc7BQ4uXUw6Ee6%2FxM%2B4Y67ngNBknxIPwuppgIhFcwJyr6EIj%2BLzNj%2FmfR2vhhRlx0BILZoAYruF0caWQ7YxO66UmeguDREAFHYuC7HJviRgVO6ruJH59h%2FC%2FPkgSle8xNzZJULLWq9JMDTE2fjGE146a1Us6PZDGYle6ldWRqn%2FpdpgHKNGrGIdkRK%2BKPETT9nKT6kLyDI8xd9A1FgWmXWRAIHwZ37WyZHOVyCadJEmMVz0MadMjDrPho%2BEIochkVC2xgGiwwsQ6DMv2P7UXqT4x7CdcYGId2BJQQa85EQKmCmwcRejQ9Bm4oATENFPkxPXILHpMPUyWTI5rjNOsIlmEeMbcOCEqInpXACYQ9DDxmFo9vcmsDblcMtg4tqBerNngkIKaFJmrQAPnq1dEzsMXcwjcHdfdCibcAxxA%2Bq%2Fj9m3LM%2FO7WJka4tSidVCjsvo2lQ%2F2ewyoYyXwAYyr2PlRoR5MpgVmSUIrM3PQxXPbgjBOaDQFIyFMJvx3Pc5RSYj12ySVF9fwFPQu2e2KWVoL9q3Ayv3IzpGHUdvdPdrNUdicjsTQ2ISy7QU3DrEytIjvbzJnAkmANXjAFERA0MUoPF3%2F5KFmW14bBNOhwircYgMqoDpUMcDtCmBE82QM2YtdjVLB4kBuKho%2FbcwQdeboqfQartuU3CsCf%2BcXkgYAqp%2F0Ee3RorAZt0AvvOCSI4JICIlGlsV0bsSid%2FNIEALAAzb6HAgyWHBps6xAOwkJIGcB82CxRQq4sJf3FzA70A%2BTRqcqjEMETCoez3mkPcpnoALs0ugJY8kQwrC%2BJE5ik3w9rzrvDRjAQnqgEVvdGrNwlanR0SOKWzxOJOvLJhcd8Cl4AshACUkv9czdMkJCVQSQhp6kp7StAlpVRpK0t0SW6LHeBJnE2QchB5Ccu8kxRghZXGIgZIiSj7gEKMJDClcnX6hgoqJMwiQDigIXg3ioFLCgDgjPtYHYpsF5EiA4kcnN18MZtOrY866dEQAb0FB34OGKHGZQjwW%2FWDHA60cYFaI%2FPjpzquUqdaYGcIq%2BmLez3WLFFCtNBN2QJcrlcoELgiPku5R5dSlJFaCEqEZle1AQzAKC%2B1SotMcBNyQUFuRHRF6OlimSBgjZeTBCwLyc6A%2BP%2FoFRchXTz5ADknYJHxzrJ5pGuIKRQISU6WyKTBBjD8WozmVYWIsto1AS5rxzKlvJu4E%2FvwOiKxRtCWsDM%2BeTHUrmwrCK5BIfMzGkD%2B0Fk5LzBs0jMYXktNDblB06LMNJ09U8pzSLmo14MS0OMjcdrZ31pyQqxJJpRImlSvfYAK8inkYU52QY2FPEVsjoWewpwhRp5yAuNpkqhdb7ku9Seefl2D0B8SMTFD90xi4CSOwwZy9IKkpMtI3FmFUg3%2FkFutpQGNc3pCR7gvC4sgwbupDu3DyEN%2BW6YGLNM21jpB49irxy9BSlHrVDlnihGKHwPrbVFtc%2Bh1rVQKZduxIyojccZIIcOCmhEnC7UkY68WXKQgLi2JCDQkQWJRQuk60hZp0D3rtCTINSeY9Ej2kIKYfGxwOs4j9qMM7fYZiipzgcf7TamnehqdhsiMiCawXnz4xAbyCkLAx5EGbo3Ax1u3dUIKnTxIaxwQTHehPl3V491H0%2BbC5zgpGz7Io%2BmjdhKlPJ01EeMpM7UsRJMi1nGjmJg35i6bQBAAxjO%2FENJubU2mg3ONySEoWklCwdABETcs7ck3jgiuU9pcKKpbgn%2B3YlzV1FzIkB6pmEDOSSyDfPPlQskznctFji0kpgZjW5RZe6x9kYT4KJcXg0bNiCyif%2BpZACCyRMmYsfiKmN9tSO65F0R2OO6ytlEhY5Sj6uRKfFxw0ijJaAx%2Fk3QgnAFSq27%2F2i4GEBA%2BUvTJKK%2F9eISNvG46Em5RZfjTYLdeD8kdXHyrwId%2FDQZUaMCY4gGbke2C8vfjgV%2FY9kkRQOJIn%2FxM9INZSpiBnqX0Q9GlQPpPKAyO5y%2BW5NMPSRdBCUlmuxl40ZfMCnf2Cp044uI9WLFtCi4YVxKjuRCOBWIb4XbIsGdbo4qtMQnNOQz4XDSui7W%2FN6l54qOynCqD3DpWQ%2BmpD7C40D8BZEWGJX3tlAaZBMj1yjvDYKwCJBa201u6nBKE5UE%2B7QSEhCwrXfbRZylAaAkplhBWX50dumrElePyNMRYUrC99UmcSSNgImhFhDI4BXjMtiqkgizUGCrZ8iwFxU6fQ8GEHCFdLewwxYWxgScAYMdMLmcZR6b7rZl95eQVDGVoUKcRMM1ixXQtXNkBETZkVVPg8LoSrdetHzkuM7DjZRHP02tCxA1fmkXKF3VzfN1pc1cv%2F8lbTIkkYpqKM9VOhp65ktYk%2BQ46myFWBapDfyWUCnsnI00QTBQmuFjMZTcd0V2NQ768Fhpby04k2IzNR1wKabuGJqYWwSly6ocMFGTeeI%2BejsWDYgEvr66QgqdcIbFYDNgsm0x9UHY6SCd5%2B7tpsLpKdvhahIDyYmEJQCqMqtCF6UlrE5GXRmbu%2Bvtm3BFSxI6ND6UxIE7GsGMgWqghXxSnaRJuGFveTcK5ZVSPJyjUxe1dKgI6kNF7EZhIZs8y8FVqwEfbM0Xk2ltORVDKZZM40SD3qQoQe0orJEKwPfZwm3YPqwixhUMOndis6MhbmfvLBKjC8sKKIZKbJk8L11oNkCQzCgvjhyyEiQSuJcgCQSG4Mocfgc0Hkwcjal1UNgP0CBPikYqBIk9tONv4kLtBswH07vUCjEaHiFGlLf8MgXKzSgjp2HolRRccAOh0ILHz9qlGgIFkwAnzHJRjWFhlA7ROwINyB5HFj59PRZHFor6voq7l23EPNRwdWhgawqbivLSjRA4htEYUFkjESu67icTg5S0aW1sOkCiIysfJ9UnIWevOOLGpepcBxy1wEhd2WI3AZg7sr9WBmHWyasxMcvY%2FiOmsLtHSWNUWEGk9hScMPShasUA1AcHOtRZlqMeQ0OzYS9vQvYUjOLrzP07BUAFikcJNMi7gIxEw4pL1G54TcmmmoAQ5s7TGWErJZ2Io4yQ0ljRYhL8H5e62oDtLF8aDpnIvZ5R3GWJyAugdiiJW9hQAVTsnCBHhwu7rkBlBX6r3b7ejEY0k5GGeyKv66v%2B6dg7mcJTrWHbtMywbedYqCQ0FPwoytmSWsL8WTtChZCKKzEF7vP6De4x2BJkkniMgSdWhbeBSLtJZR9CTHetK1xb34AYIJ37OegYIoPVbXgJ%2FqDQK%2BbfCtxQRVKQu77WzOoM6SGL7MaZwCGJVk46aImai9fmam%2BWpHG%2B0BtQPWUgZ7RIAlPq6lkECUhZQ2gqWkMYKcYMYaIc4gYCDFHYa2d1nzp3%2BJ1eCBay8IYZ0wQRKGAqvCuZ%2FUgbQPyllosq%2BXtfKIZOzmeJqRazpmmoP%2F76YfkjzV2NlXTDSBYB04SVlNQsFTbGPk1t%2FI4Jktu0XSgifO2ozFOiwd%2F0SssJDn0dn4xqk4GDTTKX73%2FwQyBLdqgJ%2BWx6AQaba3BA9CKEzjtQYIfAsiYamapq80LAamYjinlKXUkxdpIDk0puXUEYzSalfRibAeDAKpNiqQ0FTwoxuGYzRnisyTotdVTclis1LHRQCy%2FqqL8oUaQzWRxilq5Mi0IJGtMY02cGLD69vGjkj3p6pGePKI8bkBv5evq8SjjyU04vJR2cQXQwSJyoinDsUJHCQ50jrFTT7yRdbdYQMB3MYCb6uBzJ9ewhXYPAIZSXfeEQBZZ3GPN3Nbhh%2FwkvAJLXnQMdi5NYYZ5GHE400GS5rXkOZSQsdZgIbzRnF9ueLnsfQ47wHAsirITnTlkCcuWWIUhJSbpM3wWhXNHvt2xUsKKMpdBSbJnBMcihkoDqAd1Zml%2FR4yrzow1Q2A5G%2Bkzo%2FRhRxQS2lCSDRV8LlYLBOOoo1bF4jwJAwKMK1tWLHlu9i0j4Ig8qVm6wE1DxXwAwQwsaBWUg2pOOol2dHxyt6npwJEdLDDVYyRc2D0HbcbLUJQj8gPevQBUBOUHXPrsAPBERICpnYESeu2OHotpXQxRGlCCtLdIsu23MhZVEoJg8Qumj%2FUMMc34IBqTKLDTp76WzL%2FdMjCxK7MjhiGjeYAC%2Fkj%2FjY%2FRde7hpSM1xChrog6yZ7OWTuD56xBJnGFE%2BpT2ElSyCnJcwVzCjkqeNLfMEJqKW0G7OFIp0G%2B9mh50I9o8k1tpCY0xYqFNIALgIfc2me4n1bmJnRZ89oepgLPT0NTMLNZsvSCZAc3TXaNB07vail36%2FdBySis4m9%2FDR8izaLJW6bWCkVgm5T%2Bius3ZXq4xI%2BGnbveLbdRwF2mNtsrE0JjYc1AXknCOrLSu7Te%2Fr4dPYMCl5qtiHNTn%2BTPbh1jCBHH%2BdMJNhwNgs3nT%2BOhQoQ0vYif56BMG6WowAcHR3DjQolxLzyVekHj00PBAaW7IIAF1EF%2BuRIWyXjQMAs2chdpaKPNaB%2BkSezYt0%2BCA04sOg5vx8Fr7Ofa9sUv87h7SLAUFSzbetCCZ9pmyLt6l6%2FTzoA1%2FZBG9bIUVHLAbi%2FkdBFgYGyGwRQGBpkqCEg2ah9UD6EedEcEL3j4y0BQQCiExEnocA3SZboh%2Bepgd3YsOkHskZwPuQ5OoyA0fTA5AXrHcUOQF%2BzkJHIA7PwCDk1gGVmGUZSSoPhNf%2BTklauz98QofOlCIQ%2FtCD4dosHYPqtPCXB3agggQQIqQJsSkB%2Bqn0rkQ1toJjON%2FOtCIB9RYv3PqRA4C4U68ZMlZn6BdgEvi2ziU%2BTQ6NIw3ej%2BAtDwMGEZk7e2IjxUWKdAxyaw9OCwSmeADTPPleyk6UhGDNXQb%2B%2BW6Uk4q6F7%2Frg6WVTo82IoCxSIsFDrav4EPHphD3u4hR53WKVvYZUwNCCeM4PMBWzK%2BEfIthZOkuAwPo5C5jgoZgn6dUdvx5rIDmd58cXXdKNfw3l%2BwM2UjgrDJeQHhbD7HW2QDoZMCujgIUkk5Fg8VCsdyjOtnGRx8wgKRPZN5dR0zPUyfGZFVihbFRniXZFOZGKPnEQzU3AnD1KfR6weHW2XS6KbPJxUkOTZsAB9vTVp3Le1F8q5l%2BDMcLiIq78jxAImD2pGFw0VHfRatScGlK6SMu8leTmhUSMy8Uhdd6xBiH3Gdman4tjQGLboJfqz6fL2WKHTmrfsKZRYX6BTDjDldKMosaSTLdQS7oDisJNqAUhw1PfTlnacCO8vl8706Km1FROgLDmudzxg%2BEWTiArtHgLsRrAXYWdB0NmToNCJdKm0KWycZQqb%2BMw76Qy29iQ5up%2FX7oyw8QZ75kP5F6iJAJz6KCmqxz8fEa%2FxnsMYcIO%2FvEkGRuMckhr4rIeLrKaXnmIzlNLxbFspOphkcnJdnz%2FChp%2FVlpj2P7jJQmQRwGnltkTV5dbF9fE3%2FfxoSqTROgq9wFUlbuYzYcasE0ouzBo%2BdDCDzxKAfhbAZYxQiHrLzV2iVexnDX%2FQnT1fsT%2Fxuhu1ui5qIytgbGmRoQkeQooO8eJNNZsf0iALur8QxZFH0nCMnjerYQqG1pIfjyVZWxhVRznmmfLG00BcBWJE6hzQWRyFknuJnXuk8A5FRDCulwrWASSNoBtR%2BCtGdkPwYN2o7DOw%2FVGlCZPusRBFXODQdUM5zeHDIVuAJBLqbO%2Ff9Qua%2BpDqEPk230Sob9lEZ8BHiCorjVghuI0lI4JDgHGRDD%2FprQ84B1pVGkIpVUAHCG%2Biz3Bn3qm2AVrYcYWhock4jso5%2BJ7HfHVj4WMIQdGctq3psBCVVzupQOEioBGA2Bk%2BUILT7%2BVoX5mdxxA5fS42gISQVi%2FHTzrgMxu0fY6hE1ocUwwbsbWcezrY2n6S8%2F6cxXkOH4prpmPuFoikTzY7T85C4T2XYlbxLglSv2uLCgFv8Quk%2FwdesUdWPeHYIH0R729JIisN9Apdd4eB10aqwXrPt%2BSu9mA8k8n1sjMwnfsfF2j3jMUzXepSHmZ%2FBfqXvzgUNQQWOXO8YEuFBh4QTYCkOAPxywpYu1VxiDyJmKVcmJPGWk%2Fgc3Pov02StyYDahwmzw3E1gYC9wkupyWfDqDSUMpCTH5e5N8B%2F%2FlHiMuIkTNw4USHrJU67bjXGqNav6PBuQSoqTxc8avHoGmvqNtXzIaoyMIQIiiUHIM64cXieouplhNYln7qgc4wBVAYR104kO%2BCvKqsg4yIUlFNThVUAKZxZt1XA34h3TCUUiXVkZ0w8Hh2R0Z5L0b4LZvPd%2Fp1gi%2F07h8qfwHrByuSxglc9cI4QIg2oqvC%2Fqm0i7tjPLTgDhoWTAKDO2ONW5oe%2B%2FeKB9vZB8K6C25yCZ9RFVMnb6NRdRjyVK57CHHSkJBfnM2%2Fj4ODUwRkqrtBBCrDsDpt8jhZdXoy%2F1BCqw3sSGhgGGy0a5Jw6BP%2FTExoCmNFYjZl248A0osgPyGEmRA%2BfAsqPVaNAfytu0vuQJ7rk3J4kTDTR2AlCHJ5cls26opZM4w3jMULh2YXKpcqGBtuleAlOZnaZGbD6DHzMd6i2oFeJ8z9XYmalg1Szd%2FocZDc1C7Y6vcALJz2lYnTXiWEr2wawtoR4g3jvWUU2Ngjd1cewtFzEvM1NiHZPeLlIXFbBPawxNgMwwAlyNSuGF3zizVeOoC9bag1qRAQKQE%2FEZBWC2J8mnXAN2aTBboZ7HewnObE8CwROudZHmUM5oZ%2FUgd%2FJZQK8lvAm43uDRAbyW8gZ%2BZGq0EVerVGUKUSm%2FIdn8AQHdR4m7bue88WBwft9mSCeMOt1ncBwziOmJYI2ZR7ewNMPiCugmSsE4EyQ%2BQATJG6qORMGd4snEzc6B4shPIo4G1T7PgSm8PY5eUkPdF8JZ0VBtadbHXoJgnEhZQaODPj2gpODKJY5Yp4DOsLBFxWbvXN755KWylJm%2BoOd4zEL9Hpubuy2gyyfxh8oEfFutnYWdfB8PdESLWYvSqbElP9qo3u6KTmkhoacDauMNNjj0oy40DFV7Ql0aZj77xfGl7TJNHnIwgqOkenruYYNo6h724%2BzUQ7%2BvkCpZB%2BpGA562hYQiDxHVWOq0oDQl%2FQsoiY%2BcuI7iWq%2FZIBtHcXJ7kks%2Bh2fCNUPA82BzjnqktNts%2BRLdk1VSu%2BtqEn7QZCCsvEqk6FkfiOYkrsw092J8jsfIuEKypNjLxrKA9kiA19mxBD2suxQKCzwXGws7kEJvlhUiV9tArLIdZW0IORcxEzdzKmjtFhsjKy%2F44XYXdI5noQoRcvjZ1RMPACRqYg2V1%2BOwOepcOknRLLFdYgTkT5UApt%2FJhLM3jeFYprZV%2BZow2g8fP%2BU68hkKFWJj2yBbKqsrp25xkZX1DAjUw52IMYWaOhab8Kp05VrdNftqwRrymWF4OQSjbdfzmRZirK8FMJELEgER2PHjEAN9pGfLhCUiTJFbd5LBkOBMaxLr%2FA1SY9dXFz4RjzoU9ExfJCmx%2FI9FKEGT3n2cmzl2X42L3Jh%2BAbQq6sA%2BSs1kitoa4TAYgKHaoybHUDJ51oETdeI%2F9ThSmjWGkyLi5QAGWhL0BG1UsTyRGRJOldKBrYJeB8ljLJHfATWTEQBXBDnQexOHTB%2BUn44zExFE4vLytcu5NwpWrUxO%2F0ZICUGM7hGABXym0V6ZvDST0E370St9MIWQOTWngeoQHUTdCJUP04spMBMS8LSker9cReVQkULFDIZDFPrhTzBl6sed9wcZQTbL%2BBDqMyaN3RJPh%2Fanbx%2BIv%2BqgQdAa3M9Z5JmvYlh4qop%2BHo1F1W5gbOE9YKLgAnWytXElU4G8GtW47lhgFE6gaSs%2Bgs37sFvi0PPVvA5dnCBgILTwoKd%2F%2BDoL9F6inlM7H4rOTzD79KJgKlZO%2FZgt22UsKhrAaXU5ZcLrAglTVKJEmNJvORGN1vqrcfSMizfpsgbIe9zno%2BgBoKVXgIL%2FVI8dB1O5o%2FR3Suez%2FgD7M781ShjKpIIORM%2FnxG%2BjjhhgPwsn2IoXsPGPqYHXA63zJ07M2GPEykQwJBYLK808qYxuIew4frk52nhCsnCYmXiR6CuapvE1IwRB4%2FQftDbEn%2BAucIr1oxrLabRj9q4ae0%2BfXkHnteAJwXRbVkR0mctVSwEbqhJiMSZUp9DNbEDMmjX22m3ABpkrPQQTP3S1sib5pD2VRKRd%2BeNAjLYyT0hGrdjWJZy24OYXRoWQAIhGBZRxuBFMjjZQhpgrWo8SiFYbojcHO8V5DyscJpLTHyx9Fimassyo5U6WNtquUMYgccaHY5amgR3PQzq3ToNM5ABnoB9kuxsebqmYZm0R9qxJbFXCQ1UPyFIbxoUraTJFDpCk0Wk9GaYJKz%2F6oHwEP0Q14lMtlddQsOAU9zlYdMVHiT7RQP3XCmWYDcHCGbVRHGnHuwzScA0BaSBOGkz3lM8CArjrBsyEoV6Ys4qgDK3ykQQPZ3hCRGNXQTNNXbEb6tDiTDLKOyMzRhCFT%2BmAUmiYbV3YQVqFVp9dorv%2BTsLeCykS2b5yyu8AV7IS9cxcL8z4Kfwp%2BxJyYLv1OsxQCZwTB4a8BZ%2F5EdxTBJthApqyfd9u3ifr%2FWILTqq5VqgwMT9SOxbSGWLQJUUWCVi4k9tho9nEsbUh7U6NUsLmkYFXOhZ0kmamaJLRNJzSj%2Fqn4Mso6zb6iLLBXoaZ6AqeWCjHQm2lztnejYYM2eubnpBdKVLORZhudH3JF1waBJKA9%2BW8EhMj3Kzf0L4vi4k6RoHh3Z5YgmSZmk6ns4fjScjAoL8GoOECgqgYEBYUGFVO4FUv4%2FYtowhEmTs0vrvlD%2FCrisnoBNDAcUi%2FteY7OctFlmARQzjOItrrlKuPO6E2Ox93L4O%2F4DcgV%2FdZ7qR3VBwVQxP1GCieA4RIpweYJ5FoYrHxqRBdJjnqbsikA2Ictbb8vE1GYIo9dacK0REgDX4smy6GAkxlH1yCGGsk%2BtgiDhNKuKu3yNrMdxafmKTF632F8Vx4BNK57GvlFisrkjN9WDAtjsWA0ENT2e2nETUb%2Fn7qwhvGnrHuf5bX6Vh%2Fn3xffU3PeHdR%2BFA92i6ufT3AlyAREoNDh6chiMWTvjKjHDeRhOa9YkOQRq1vQXEMppAQVwHCuIcV2g5rBn6GmZZpTR7vnSD6ZmhdSl176gqKTXu5E%2BYbfL0adwNtHP7dT7t7b46DVZIkzaRJOM%2BS6KcrzYVg%2BT3wSRFRQashjfU18NutrKa%2F7PXbtuJvpIjbgPeqd%2BpjmRw6YKpnANFSQcpzTZgpSNJ6J7uiagAbir%2F8tNXJ%2FOsOnRh6iuIexxrmkIneAgz8QoLmiaJ8sLQrELVK2yn3wOHp57BAZJhDZjTBzyoRAuuZ4eoxHruY1pSb7qq79cIeAdOwin4GdgMeIMHeG%2BFZWYaiUQQyC5b50zKjYw97dFjAeY2I4Bnl105Iku1y0lMA1ZHolLx19uZnRdILcXKlZGQx%2FGdEqSsMRU1BIrFqRcV1qQOOHyxOLXEGcbRtAEsuAC2V4K3p5mFJ22IDWaEkk9ttf5Izb2LkD1MnrSwztXmmD%2FQi%2FEmVEFBfiKGmftsPwVaIoZanlKndMZsIBOskFYpDOq3QUs9aSbAAtL5Dbokus2G4%2FasthNMK5UQKCOhU97oaOYNGsTah%2BjfCKsZnTRn5TbhFX8ghg8CBYt%2FBjeYYYUrtUZ5jVij%2Fop7V5SsbA4mYTOwZ46hqdpbB6Qvq3AS2HHNkC15pTDIcDNGsMPXaBidXYPHc6PJAkRh29Vx8KcgX46LoUQBhRM%2B3SW6Opll%2FwgxxsPgKJKzr5QCmwkUxNbeg6Wj34SUnEzOemSuvS2OetRCO8Tyy%2BQbSKVJcqkia%2BGvDefFwMOmgnD7h81TUtMn%2BmRpyJJ349HhAnoWFTejhpYTL9G8N2nVg1qkXBeoS9Nw2fB27t7trm7d%2FQK7Cr4uoCeOQ7%2F8JfKT77KiDzLImESHw%2F0wf73QeHu74hxv7uihi4fTX%2BXEwAyQG3264dwv17aJ5N335Vt9sdrAXhPOAv8JFvzqyYXwfx8WYJaef1gMl98JRFyl5Mv5Uo%2FoVH5ww5OzLFsiTPDns7fS6EURSSWd%2F92BxMYQ8sBaH%2Bj%2BwthQPdVgDGpTfi%2BJQIWMD8xKqULliRH01rTeyF8x8q%2FGBEEEBrAJMPf25UQwi0b8tmqRXY7kIvNkzrkvRWLnxoGYEJsz8u4oOyMp8cHyaybb1HdMCaLApUE%2B%2F7xLIZGP6H9xuSEXp1zLIdjk5nBaMuV%2FyTDRRP8Y2ww5RO6d2D94o%2B6ucWIqUAvgHIHXhZsmDhjVLczmZ3ca0Cb3PpKwt2UtHVQ0BgFJsqqTsnzZPlKahRUkEu4qmkJt%2Bkqdae76ViWe3STan69yaF9%2BfESD2lcQshLHWVu4ovItXxO69bqC5p1nZLvI8NdQB9s9UNaJGlQ5mG947ipdDA0eTIw%2FA1zEdjWquIsQXXGIVEH0thC5M%2BW9pZe7IhAVnPJkYCCXN5a32HjN6nsvokEqRS44tGIs7s2LVTvcrHAF%2BRVmI8L4HUYk4x%2B67AxSMJKqCg8zrGOgvK9kNMdDrNiUtSWuHFpC8%2Fp5qIQrEo%2FH%2B1l%2F0cAwQ2nKmpWxKcMIuHY44Y6DlkpO48tRuUGBWT0FyHwSKO72Ud%2BtJUfdaZ4CWNijzZtlRa8%2BCkmO%2FEwHYfPZFU%2FhzjFWH7vnzHRMo%2BaF9u8qHSAiEkA2HjoNQPEwHsDKOt6hOoK3Ce%2F%2B%2F9boMWDa44I6FrQhdgS7OnNaSzwxWKZMcyHi6LN4WC6sSj0qm2PSOGBTvDs%2FGWJS6SwEN%2FULwpb4LQo9fYjUfSXRwZkynUazlSpvX9e%2BG2zor8l%2BYaMxSEomDdLHGcD6YVQPegTaA74H8%2BV4WvJkFUrjMLGLlvSZQWvi8%2FQA7yzQ8GPno%2F%2F5SJHRP%2FOqKObPCo81s%2F%2B6WgLqykYpGAgQZhVDEBPXWgU%2FWzFZjKUhSFInufPRiMAUULC6T11yL45ZrRoB4DzOyJShKXaAJIBS9wzLYIoCEcJKQW8GVCx4fihqJ6mshBUXSw3wWVj3grrHQlGNGhIDNNzsxQ3M%2BGWn6ASobIWC%2BLbYOC6UpahVO13Zs2zOzZC8z7FmA05JhUGyBsF4tsG0drcggIFzgg%2Fkpf3%2BCnAXKiMgIE8Jk%2FMhpkc8DUJEUzDSnWlQFme3d0sHZDrg7LavtsEX3cHwjCYA17pMTfx8Ajw9hHscN67hyo%2BRJQ4458RmPywXykkVcW688oVUrQhahpPRvTWPnuI0B%2BSkQu7dCyvLRyFYlC1LG1gRCIvn3rwQeINzZQC2KXq31FaR9UmVV2QeGVqBHjmE%2BVMd3b1fhCynD0pQNhCG6%2FWCDbKPyE7NRQzL3BzQAJ0g09aUzcQA6mUp9iZFK6Sbp%2FYbHjo%2B%2B7%2FWj8S4YNa%2BZdqAw1hDrKWFXv9%2BzaXpf8ZTDSbiqsxnwN%2FCzK5tPkOr4tRh2kY3Bn9JtalbIOI4b3F7F1vPQMfoDcdxMS8CW9m%2FNCW%2FHILTUVWQIPiD0j1A6bo8vsv6P1hCESl2abrSJWDrq5sSzUpwoxaCU9FtJyYH4QFMxDBpkkBR6kn0LMPO%2B5EJ7Z6bCiRoPedRZ%2FP0SSdii7ZnPAtVwwHUidcdyspwncz5uq6vvm4IEDbJVLUFCn%2FLvIHfooUBTkFO130FC7CmmcrKdgDJcid9mvVzsDSibOoXtIf9k6ABle3PmIxejodc4aob0QKS432srrCMndbfD454q52V01G4q913mC5HOsTzWF4h2No1av1VbcUgWAqyoZl%2B11PoFYnNv2HwAODeNRkHj%2B8SF1fcvVBu6MrehHAZK1Gm69ICcTKizykHgGFx7QdowTVAsYEF2tVc0Z6wLryz2FI1sc5By2znJAAmINndoJiB4sfPdPrTC8RnkW7KRCwxC6YvXg5ahMlQuMpoCSXjOlBy0Kij%2BbsCYPbGp8BdCBiLmLSAkEQRaieWo1SYvZIKJGj9Ur%2FeWHjiB7SOVdqMAVmpBvfRiebsFjger7DC%2B8kRFGtNrTrnnGD2GAJb8rQCWkUPYHhwXsjNBSkE6lGWUj5QNhK0DMNM2l%2BkXRZ0KLZaGsFSIdQz%2FHXDxf3%2FTE30%2BDgBKWGWdxElyLccJfEpjsnszECNoDGZpdwdRgCixeg9L4EPhH%2BRptvRMVRaahu4cySjS3P5wxAUCPkmn%2BrhyASpmiTaiDeggaIxYBmtLZDDhiWIJaBgzfCsAGUF1Q1SFZYyXDt9skCaxJsxK2Ms65dmdp5WAZyxik%2FzbrTQk5KmgxCg%2Ff45L0jywebOWUYFJQAJia7XzCV0x89rpp%2Ff3AVWhSPyTanqmik2SkD8A3Ml4NhIGLAjBXtPShwKYfi2eXtrDuKLk4QlSyTw1ftXgwqA2jUuopDl%2B5tfUWZNwBpEPXghzbBggYCw%2Fdhy0ntds2yeHCDKkF%2FYxQjNIL%2FF%2F37jLPHCKBO9ibwYCmuxImIo0ijV2Wbg3kSN2psoe8IsABv3RNFaF9uMyCtCYtqcD%2BqNOhwMlfARQUdJ2tUX%2BMNJqOwIciWalZsmEjt07tfa8ma4cji9sqz%2BQ9hWfmMoKEbIHPOQORbhQRHIsrTYlnVTNvcq1imqmmPDdVDkJgRcTgB8Sb6epCQVmFZe%2BjGDiNJQLWnfx%2BdrTKYjm0G8yH0ZAGMWzEJhUEQ4Maimgf%2Fbkvo8PLVBsZl152y5S8%2BHRDfZIMCbYZ1WDp4yrdchOJw8k6R%2B%2F2pHmydK4NIK2PHdFPHtoLmHxRDwLFb7eB%2BM4zNZcB9NrAgjVyzLM7xyYSY13ykWfIEEd2n5%2FiYp3ZdrCf7fL%2Ben%2BsIJu2W7E30MrAgZBD1rAAbZHPgeAMtKCg3NpSpYQUDWJu9bT3V7tOKv%2BNRiJc8JAKqqgCA%2FPNRBR7ChpiEulyQApMK1AyqcWnpSOmYh6yLiWkGJ2mklCSPIqN7UypWj3dGi5MvsHQ87MrB4VFgypJaFriaHivwcHIpmyi5LhNqtem4q0n8awM19Qk8BOS0EsqGscuuydYsIGsbT5GHnERUiMpKJl4ON7qjB4fEqlGN%2FhCky89232UQCiaeWpDYCJINXjT6xl4Gc7DxRCtgV0i1ma4RgWLsNtnEBRQFqZggCLiuyEydmFd7WlogpkCw5G1x4ft2psm3KAREwVwr1Gzl6RT7FDAqpVal34ewVm3VH4qn5mjGj%2BbYL1NgfLNeXDwtmYSpwzbruDKpTjOdgiIHDVQSb5%2FzBgSMbHLkxWWgghIh9QTFSDILixVwg0Eg1puooBiHAt7DzwJ7m8i8%2Fi%2BjHvKf0QDnnHVkVTIqMvIQImOrzCJwhSR7qYB5gSwL6aWL9hERHCZc4G2%2BJrpgHNB8eCCmcIWIQ6rSdyPCyftXkDlErUkHafHRlkOIjxGbAktz75bnh50dU7YHk%2BMz7wwstg6RFZb%2BTZuSOx1qqP5C66c0mptQmzIC2dlpte7vZrauAMm%2F7RfBYkGtXWGiaWTtwvAQiq2oD4YixPLXE2khB2FRaNRDTk%2B9sZ6K74Ia9VntCpN4BhJGJMT4Z5c5FhSepRCRWmBXqx%2BwhVZC4me4saDs2iNqXMuCl6iAZflH8fscC1sTsy4PHeC%2BXYuqMBMUun5YezKbRKmEPwuK%2BCLzijPEQgfhahQswBBLfg%2FGBgBiI4QwAqzJkkyYAWtjzSg2ILgMAgqxYfwERRo3zruBL9WOryUArSD8sQOcD7fvIODJxKFS615KFPsb68USBEPPj1orNzFY2xoTtNBVTyzBhPbhFH0PI5AtlJBl2aSgNPYzxYLw7XTDBDinmVoENwiGzmngrMo8OmnRP0Z0i0Zrln9DDFcnmOoBZjABaQIbPOJYZGqX%2BRCMlDDbElcjaROLDoualmUIQ88Kekk3iM4OQrADcxi3rJguS4MOIBIgKgXrjd1WkbCdqxJk%2F4efRIFsavZA7KvvJQqp3Iid5Z0NFc5aiMRzGN3vrpBzaMy4JYde3wr96PjN90AYOIbyp6T4zj8LoE66OGcX1Ef4Z3KoWLAUF4BTg7ug%2FAbkG5UNQXAMkQezujSHeir2uTThgd3gpyzDrbnEdDRH2W7U6PeRvBX1ZFMP5RM%2BZu6UUZZD8hDPHldVWntTCNk7To8IeOW9yn2wx0gmurwqC60AOde4r3ETi5pVMSDK8wxhoGAoEX9NLWHIR33VbrbMveii2jAJlrxwytTHbWNu8Y4N8vCCyZjAX%2FpcsfwXbLze2%2BD%2Bu33OGBoJyAAL3jn3RuEcdp5If8O%2Ba4NKWvxOTyDltG0IWoHhwVGe7dKkCWFT%2B%2Btm%2BhaBCikRUUMrMhYKZJKYoVuv%2FbsJzO8DwfVIInQq3g3BYypiz8baogH3r3GwqCwFtZnz4xMjAVOYnyOi5HWbFA8n0qz1OjSpHWFzpQOpvkNETZBGpxN8ybhtqV%2FDMUxd9uFZmBfKXMCn%2FSqkWJyKPnT6lq%2B4zBZni6fYRByJn6OK%2BOgPBGRAJluwGSk4wxjOOzyce%2FPKODwRlsgrVkdcsEiYrqYdXo0Er2GXi2GQZd0tNJT6c9pK1EEJG1zgDJBoTVuCXGAU8BKTvCO%2FcEQ1Wjk3Zzuy90JX4m3O5IlxVFhYkSUwuQB2up7jhvkm%2BbddRQu5F9s0XftGEJ9JSuSk%2BZachCbdU45fEqbugzTIUokwoAKvpUQF%2FCvLbWW5BNQFqFkJg2f30E%2F48StNe5QwBg8zz3YAJ82FZoXBxXSv4QDooDo79NixyglO9AembuBcx5Re3CwOKTHebOPhkmFC7wNaWtoBhFuV4AkEuJ0J%2B1pT0tLkvFVZaNzfhs%2FKd3%2BA9YsImlO4XK4vpCo%2FelHQi%2F9gkFg07xxnuXLt21unCIpDV%2BbbRxb7FC6nWYTsMFF8%2B1LUg4JFjVt3vqbuhHmDKbgQ4e%2BRGizRiO8ky05LQGMdL2IKLSNar0kNG7lHJMaXr5mLdG3nykgj6vB%2FKVijd1ARWkFEf3yiUw1v%2FWaQivVUpIDdSNrrKbjO5NPnxz6qTTGgYg03HgPhDrCFyYZTi3XQw3HXCva39mpLNFtz8AiEhxAJHpWX13gCTAwgm9YTvMeiqetdNQv6IU0hH0G%2BZManTqDLPjyrOse7WiiwOJCG%2BJ0pZYULhN8NILulmYYvmVcV2MjAfA39sGKqGdjpiPo86fecg65UPyXDIAOyOkCx5NQsLeD4gGVjTVDwOHWkbbBW0GeNjDkcSOn2Nq4cEssP54t9D749A7M1AIOBl0Fi0sSO5v3P7LCBrM6ZwFY6kp2FX6AcbGUdybnfChHPyu6WlRZ2Fwv9YM0RMI7kISRgR8HpQSJJOyTfXj%2F6gQKuihPtiUtlCQVPohUgzfezTg8o1b3n9pNZeco1QucaoXe40Fa5JYhqdTspFmxGtW9h5ezLFZs3j%2FN46f%2BS2rjYNC2JySXrnSAFhvAkz9a5L3pza8eYKHNoPrvBRESpxYPJdKVUxBE39nJ1chrAFpy4MMkf0qKgYALctGg1DQI1kIymyeS2AJNT4X240d3IFQb%2F0jQbaHJ2YRK8A%2Bls6WMhWmpCXYG5jqapGs5%2FeOJErxi2%2F2KWVHiPellTgh%2FfNl%2F2KYPKb7DUcAg%2BmCOPQFCiU9Mq%2FWLcU1xxC8aLePFZZlE%2BPCLzf7ey46INWRw2kcXySR9FDgByXzfxiNKwDFbUSMMhALPFSedyjEVM5442GZ4hTrsAEvZxIieSHGSgkwFh%2FnFNdrrFD4tBH4Il7fW6ur4J8Xaz7RW9jgtuPEXQsYk7gcMs2neu3zJwTyUerHKSh1iTBkj2YJh1SSOZL5pLuQbFFAvyO4k1Hxg2h99MTC6cTUkbONQIAnEfGsGkNFWRbuRyyaEZInM5pij73EA9rPIUfU4XoqQpHT9THZkW%2BoKFLvpyvTBMM69tN1Ydwv1LIEhHsC%2BueVG%2Bw%2BkyCPsvV3erRikcscHjZCkccx6VrBkBRusTDDd8847GA7p2Ucy0y0HdSRN6YIBciYa4vuXcAZbQAuSEmzw%2BH%2FAuOx%2BaH%2BtBL88H57D0MsqyiZxhOEQkF%2F8DR1d2hSPMj%2FsNOa5rxcUnBgH8ictv2J%2Bcb4BA4v3MCShdZ2vtK30vAwkobnEWh7rsSyhmos3WC93Gn9C4nnAd%2FPjMMtQfyDNZsOPd6XcAsnBE%2FmRHtHEyJMzJfZFLE9OvQa0i9kUmToJ0ZxknTgdl%2FXPV8xoh0K7wNHHsnBdvFH3sv52lU7UFteseLG%2FVanIvcwycVA7%2BBE1Ulyb20BvwUWZcMTKhaCcmY3ROpvonVMV4N7yBXTL7IDtHzQ4CCcqF66LjF3xUqgErKzolLyCG6Kb7irP%2FMVTCCwGRxfrPGpMMGvPLgJ881PHMNMIO09T5ig7AzZTX%2F5PLlwnJLDAPfuHynSGhV4tPqR3gJ4kg4c06c%2FF1AcjGytKm2Yb5jwMotF7vro4YDLWlnMIpmPg36NgAZsGA0W1spfLSue4xxat0Gdwd0lqDBOgIaMANykwwDKejt5YaNtJYIkrSgu0KjIg0pznY0SCd1qlC6R19g97UrWDoYJGlrvCE05J%2F5wkjpkre727p5PTRX5FGrSBIfJqhJE%2FIS876PaHFkx9pGTH3oaY3jJRvLX9Iy3Edoar7cFvJqyUlOhAEiOSAyYgVEGkzHdug%2BoRHIEOXAExMiTSKU9A6nmRC8mp8iYhwWdP2U%2F5EkFAdPrZw03YA3gSyNUtMZeh7dDCu8pF5x0VORCTgKp07ehy7NZqKTpIC4UJJ89lnboyAfy5OyXzXtuDRbtAFjZRSyGFTpFrXwkpjSLIQIG3N0Vj4BtzK3wdlkBJrO18MNsgseR4BysJilI0wI6ZahLhBFA0XBmV8d4LUzEcNVb0xbLjLTETYN8OEVqNxkt10W614dd1FlFFVTIgB7%2FBQQp1sWlNolpIu4ekxUTBV7NmxOFKEBmmN%2BnA7pvF78%2FRII5ZHA09OAiE%2F66MF6HQ%2BqVEJCHxwymukkNvzqHEh52dULPbVasfQMgTDyBZzx4007YiKdBuUauQOt27Gmy8ISclPmEUCIcuLbkb1mzQSqIa3iE0PJh7UMYQbkpe%2BhXjTJKdldyt2mVPwywoODGJtBV1lJTgMsuSQBlDMwhEKIfrvsxGQjHPCEfNfMAY2oxvyKcKPUbQySkKG6tj9AQyEW3Q5rpaDJ5Sns9ScLKeizPRbvWYAw4bXkrZdmB7CQopCH8NAmqbuciZChHN8lVGaDbCnmddnqO1PQ4ieMYfcSiBE5zzMz%2BJV%2F4eyzrzTEShvqSGzgWimkNxLvUj86iAwcZuIkqdB0VaIB7wncLRmzHkiUQpPBIXbDDLHBlq7vp9xwuC9AiNkIptAYlG7Biyuk8ILdynuUM1cHWJgeB%2BK3wBP%2FineogxkvBNNQ4AkW0hvpBOQGFfeptF2YTR75MexYDUy7Q%2F9uocGsx41O4IZhViw%2F2FvAEuGO5g2kyXBUijAggWM08bRhXg5ijgMwDJy40QeY%2FcQpUDZiIzmvskQpO5G1zyGZA8WByjIQU4jRoFJt56behxtHUUE%2Fom7Rj2psYXGmq3llVOCgGYKNMo4pzwntITtapDqjvQtqpjaJwjHmDzSVGLxMt12gEXAdLi%2FcaHSM3FPRGRf7dB7YC%2BcD2ho6oL2zGDCkjlf%2FDFoQVl8GS%2F56wur3rdV6ggtzZW60MRB3g%2BU1W8o8cvqIpMkctiGVMzXUFI7FacFLrgtdz4mTEr4aRAaQ2AFQaNeG7GX0yOJgMRYFziXdJf24kg%2FgBQIZMG%2FYcPEllRTVNoDYR6oSJ8wQNLuihfw81UpiKPm714bZX1KYjcXJdfclCUOOpvTxr9AAJevTY4HK%2FG7F3mUc3GOAKqh60zM0v34v%2BELyhJZqhkaMA8UMMOU90f8RKEJFj7EqepBVwsRiLbwMo1J2zrE2UYJnsgIAscDmjPjnzI8a719Wxp757wqmSJBjXowhc46QN4RwKIxqEE6E5218OeK7RfcpGjWG1jD7qND%2B%2FGTk6M56Ig4yMsU6LUW1EWE%2BfIYycVV1thldSlbP6ltdC01y3KUfkobkt2q01YYMmxpKRvh1Z48uNKzP%2FIoRIZ%2FF6buOymSnW8gICitpJjKWBscSb9JJKaWkvEkqinAJ2kowKoqkqZftRqfRQlLtKoqvTRDi2vg%2FRrPD%2Fd3a09J8JhGZlEkOM6znTsoMCsuvTmywxTCDhw5dd0GJOHCMPbsj3QLkTE3MInsZsimDQ3HkvthT7U9VA4s6G07sID0FW4SHJmRGwCl%2BMu4xf0ezqeXD2PtPDnwMPo86sbwDV%2B9PWcgFcARUVYm3hrFQrHcgMElFGbSM2A1zUYA3baWfheJp2AINmTJLuoyYD%2FOwA4a6V0ChBN97E8YtDBerUECv0u0TlxR5yhJCXvJxgyM73Bb6pyq0jTFJDZ4p1Am1SA6sh8nADd1hAcGBMfq4d%2FUfwnmBqe0Jun1n1LzrgKuZMAnxA3NtCN7Klf4BH%2B14B7ibBmgt0TGUafVzI4uKlpF7v8NmgNjg90D6QE3tbx8AjSAC%2BOA1YJvclyPKgT27QpIEgVYpbPYGBsnyCNrGz9XUsCHkW1QAHgL2STZk12QGqmvAB0NFteERkvBIH7INDsNW9KKaAYyDMdBEMzJiWaJHZALqDxQDWRntumSDPcplyFiI1oDpT8wbwe01AHhW6%2BvAUUBoGhY3CT2tgwehdPqU%2F4Q7ZLYvhRl%2FogOvR9O2%2BwkkPKW5vCTjD2fHRYXONCoIl4Jh1bZY0ZE1O94mMGn%2FdFSWBWzQ%2FVYk%2BGezi46RgiDv3EshoTmMSlioUK6MQEN8qeyK6FRninyX8ZPeUWjjbMJChn0n%2FyJvrq5bh5UcCAcBYSafTFg7p0jDgrXo2QWLb3WpSOET%2FHh4oSadBTvyDo10IufLzxiMLAnbZ1vcUmj3w7BQuIXjEZXifwukVxrGa9j%2BDXfpi12m1RbzYLg9J2wFergEwOxFyD0%2FJstNK06ZN2XdZSGWxcJODpQHOq4iKqjqkJUmPu1VczL5xTGUfCgLEYyNBCCbMBFT%2FcUP6pE%2FmujnHsSDeWxMbhrNilS5MyYR0nJyzanWXBeVcEQrRIhQeJA6Xt4f2eQESNeLwmC10WJVHqwx8SSyrtAAjpGjidcj1E2FYN0LObUcFQhafUKTiGmHWRHGsFCB%2BHEXgrzJEB5bp0QiF8ZHh11nFX8AboTD0PS4O1LqF8XBks2MpjsQnwKHF6HgaKCVLJtcr0XjqFMRGfKv8tmmykhLRzu%2BvqQ02%2BKpJBjaLt9ye1Ab%2BBbEBhy4EVdIJDrL2naV0o4wU8YZ2Lq04FG1mWCKC%2BUwkXOoAjneU%2FxHplMQo2cXUlrVNqJYczgYlaOEczVCs%2FOCgkyvLmTmdaBJc1iBLuKwmr6qtRnhowngsDxhzKFAi02tf8bmET8BO27ovJKF1plJwm3b0JpMh38%2BxsrXXg7U74QUM8ZCIMOpXujHntKdaRtsgyEZl5MClMVMMMZkZLNxH9%2Bb8fH6%2Bb8Lev30A9TuEVj9CqAdmwAAHBPbfOBFEATAPZ2CS0OH1Pj%2F0Q7PFUcC8hDrxESWdfgFRm%2B7vvWbkEppHB4T%2F1ApWnlTIqQwjcPl0VgS1yHSmD0OdsCVST8CQVwuiew1Y%2Bg3QGFjNMzwRB2DSsAk26cmA8lp2wIU4p93AUBiUHFGOxOajAqD7Gm6NezNDjYzwLOaSXRBYcWipTSONHjUDXCY4mMI8XoVCR%2FRrs%2FJLKXgEx%2BqkmeDlFOD1%2FyTQNDClRuiUyKYCllfMiQiyFkmuTz2vLsBNyRW%2Bxz%2B5FElFxWB28VjYIGZ0Yd%2B5wIjkcoMaggxswbT0pCmckRAErbRlIlcOGdBo4djTNO8FAgQ%2BlT6vPS60BwTRSUAM3ddkEAZiwtEyArrkiDRnS7LJ%2B2hwbzd2YDQagSgACpsovmjil5wfPuXq3GuH0CyE7FK3M4FgRaFoIkaodORrPx1%2BJpI9psyNYIFuJogZa0%2F1AhOWdlHQxdAgbwacsHqPZo8u%2FngAH2GmaTdhYnBfSDbBfh8CHq6Bx5bttP2%2BRdM%2BMAaYaZ0Y%2FADkbNCZuAyAVQa2OcXOeICmDn9Q%2FeFkDeFQg5MgHEDXq%2FtVjj%2Bjtd26nhaaolWxs1ixSUgOBwrDhRIGOLyOVk2%2FBc0UxvseQCO2pQ2i%2BKrfhu%2FWeBovNb5dJxQtJRUDv2mCwYVpNl2efQM9xQHnK0JwLYt%2FU0Wf%2BphiA4uw8G91slC832pmOTCAoZXohg1fewCZqLBhkOUBofBWpMPsqg7XEXgPfAlDo2U5WXjtFdS87PIqClCK5nW6adCeXPkUiTGx0emOIDQqw1yFYGHEVx20xKjJVYe0O8iLmnQr3FA9nSIQilUKtJ4ZAdcTm7%2BExseJauyqo30hs%2B1qSW211A1SFAOUgDlCGq7eTIcMAeyZkV1SQJ4j%2Fe1Smbq4HcjqgFbLAGLyKxlMDMgZavK5NAYH19Olz3la%2FQCTiVelFnU6O%2FGCvykqS%2FwZJDhKN9gBtSOp%2F1SP5VRgJcoVj%2Bkmf2wBgv4gjrgARBWiURYx8xENV3bEVUAAWWD3dYDKAIWk5opaCFCMR5ZjJExiCAw7gYiSZ2rkyTce4eNMY3lfGn%2B8p6%2BvBckGlKEXnA6Eota69OxDO9oOsJoy28BXOR0UoXNRaJD5ceKdlWMJlOFzDdZNpc05tkMGQtqeNF2lttZqNco1VtwXgRstLSQ6tSPChgqtGV5h2DcDReIQadaNRR6AsAYKL5gSFsCJMgfsaZ7DpKh8mg8Wz8V7H%2BgDnLuMxaWEIUPevIbClgap4dqmVWSrPgVYCzAoZHIa5z2Ocx1D%2FGvDOEqMOKLrMefWIbSWHZ6jbgA8qVBhYNHpx0P%2BjAgN5TB3haSifDcApp6yymEi6Ij%2FGsEpDYUgcHATJUYDUAmC1SCkJ4cuZXSAP2DEpQsGUjQmKJfJOvlC2x%2FpChkOyLW7KEoMYc5FDC4v2FGqSoRWiLsbPCiyg1U5yiHZVm1XLkHMMZL11%2Fyxyw0UnGig3MFdZklN5FI%2FqiT65T%2BjOXOdO7XbgWurOAZR6Cv9uu1cm5LjkXX4xi6mWn5r5NjBS0gTliHhMZI2WNqSiSphEtiCAwnafS11JhseDGHYQ5%2BbqWiAYiAv6Jsf79%2FVUs4cIl%2Bn6%2BWOjcgB%2F2l5TreoAV2717JzZbQIR0W1cl%2FdEqCy5kJ3ZSIHuU0vBoHooEpiHeQWVkkkOqRX27eD1FWw4BfO9CJDdKoSogQi3hAAwsPRFrN5RbX7bqLdBJ9JYMohWrgJKHSjVl1sy2xAG0E3sNyO0oCbSGOxCNBRRXTXenYKuwAoDLfnDcQaCwehUOIDiHAu5m5hMpKeKM4sIo3vxACakIxKoH2YWF2QM84e6F5C5hJU4g8uxuFOlAYnqtwxmHyNEawLW%2FPhoawJDrGAP0JYWHgAVUByo%2FbGdiv2T2EMg8gsS14%2FrAdzlOYazFE7w4OzxeKiWdm3nSOnQRRKXSlVo8HEAbBfyJMKqoq%2BSCcTSx5NDtbFwNlh8VhjGGDu7JG5%2FTAGAvniQSSUog0pNzTim8Owc6QTuSKSTXlQqwV3eiEnklS3LeSXYPXGK2VgeZBqNcHG6tZHvA3vTINhV0ELuQdp3t1y9%2BogD8Kk%2FW7QoRN1UWPqM4%2BxdygkFDPLoTaumKReKiLWoPHOfY54m3qPx4c%2B4pgY3MRKKbljG8w4wvz8pxk3AqKsy4GMAkAtmRjRMsCxbb4Q2Ds0Ia9ci8cMT6DmsJG00XaHCIS%2Bo3F8YVVeikw13w%2BOEDaCYYhC0ZE54kA4jpjruBr5STWeqQG6M74HHL6TZ3lXrd99ZX%2B%2B7LhNatQaZosuxEf5yRA15S9gPeHskBIq3Gcw81AGb9%2FO53DYi%2F5CsQ51EmEh8Rkg4vOciClpy4d04eYsfr6fyQkBmtD%2BP8sNh6e%2BXYHJXT%2FlkXxT4KXU5F2sGxYyzfniMMQkb9OjDN2C8tRRgTyL7GwozH14PrEUZc6oz05Emne3Ts5EG7WolDmU8OB1LDG3VrpQxp%2BpT0KYV5dGtknU64JhabdqcVQbGZiAxQAnvN1u70y1AnmvOSPgLI6uB4AuDGhmAu3ATkJSw7OtS%2F2ToPjqkaq62%2F7WFG8advGlRRqxB9diP07JrXowKR9tpRa%2BjGJ91zxNTT1h8I2PcSfoUPtd7NejVoH03EUcqSBuFZPkMZhegHyo2ZAITovmm3zAIdGFWxoNNORiMRShgwdYwFzkPw5PA4a5MIIQpmq%2Bnsp3YMuXt%2FGkXxLx%2FP6%2BZJS0lFyz4MunC3eWSGE8xlCQrKvhKUPXr0hjpAN9ZK4PfEDrPMfMbGNWcHDzjA7ngMxTPnT7GMHar%2BgMQQ3NwHCv4zH4BIMYvzsdiERi6gebRmerTsVwZJTRsL8dkZgxgRxmpbgRcud%2BYlCIRpPwHShlUSwuipZnx9QCsEWziVazdDeKSYU5CF7UVPAhLer3CgJOQXl%2Fzh575R5rsrmRnKAzq4POFdgbYBuEviM4%2BLVC15ssLNFghbTtHWerS1hDt5s4qkLUha%2FqpZXhWh1C6lTQAqCNQnaDjS7UGFBC6wTu8yFnKJnExCnAs3Ok9yj5KpfZESQ4lTy5pTGTnkAUpxI%2ByjEldJfSo4y0QhG4i4IwkRFGcjWY8%2BEzgYYJUK7BXQksLxAww%2FYYWBMhJILB9e8ePEJ4OP7z%2B4%2FwOQDl64iOYDp26DaONPxpKtBxq%2FaTzRGarm3VkPYTLJKx6Z%2FMw2YbBGseJhPMwhhNswrIkyvV2BYzrvZbxLpKwcWJhYmFtVZ%2BlPEq91FzVp1HlQY1bZVLqeNR9SAUn6n0E28k%2FUuGkNpP1DBI5ch%2FEehZfjUQ9aE41NhETExoPT2gGQz0IhWJbEOvTQ4wgcXCHHFBhewYUiFHuhRSAUVmEHeCRQHQkXGFwkAgyzREJCVN7TRnTon36Zw3tPhx4EALwNdwDv%2BJ41YSP4B2CQqz0EFgARZ4ESgBHQgROwAVn9GTI%2BHYexTUevLUeta4%2FDqKrbMVS%2BYqb8hUwYCrlgKtmAq1YCrFgKrd4qpXiqZcKn1oqdWipjYKpWwVPVYqW6xUpVipKqFR3QKjagVEtAqHpxUMTitsnFaJOKx2cVhswq35RVpyiq9lFVNIKnOQVMkgqtYxVNxiqQjFS7GKlSIVIsQqPIhUWwioigFQ%2B%2BKkN8VHr49HDw9Ebo9EDo9DTo9Crg9BDg9%2FWx7gWx7YWwlobYrOGxWPNisAaAHEyALpkAVDIAeWAArsABVXACYuAD5cAF6wAKFQAQqgAbVAAsoAAlQAUaYAfkwAvogBWQACOgAD9AAHSAAKT4GUdMiOvFngBTwCn2AZ7Dv6B6k%2F90B8%2ByRnkV144AIBoAMTQATGgAjNAA4YABgwABZgB%2FmQCwyAVlwCguASlwCEuAQFwB4uAMlwBYuAJlQAUVAAhUD2KgdpUDaJgaRMDFJgX5MC1JgWJEAokQCWRAHxEAWkQBMRADpEAMkQAYROAEecC484DRpwBDTnwNOdw05tjTmiNOYwtswhYFwLA7BYG4LA2BYGOLAwRYFuLAsxYFQJAohIEyJAMwkAwiQC0JAJgkAeiQBkJAFokAPCQA0JABwcD4Dgc4cDdDgaYcDIDgYgUC6CgWgUClCgUYUAVBQBOFAEYMALgwAgDA9QYAdIn8AZzeBB2L5EcWrenUT1KXienEsuJJ7x5U8XlTjc1NVzUyXFTGb1LlpUtWlTDIjqwE4LsagowoCi2gJLKAkpoBgJQNpAIhNqaEoneI6kiiqQ6Go%2Fn6j0cS%2Ba2gEU8gIHJ%2BBwfgZX4GL%2BBd%2FgW34FZ%2BBS%2FgUH4FN6BTegTvoEv6BJegRnYEF2A79gOvYDl2BdEjCkqkGtwXp0LNToIskOTXzh%2FF062yJ7AAAAEDAWAAABWhJ%2BKPEIJgBFxMVP7w2QJBGHASQnOBKXKFIdUK4igKA9IEaYJg%29%3Bsrc%3Aurl%28data%3Aapplication%2Fvnd%2Ems%2Dfontobject%3Bbase64%2Cn04AAEFNAAACAAIABAAAAAAABQAAAAAAAAABAJABAAAEAExQAAAAAAAAAAIAAAAAAAAAAAEAAAAAAAAAJxJ%2FLAAAAAAAAAAAAAAAAAAAAAAAACgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAAAADgBSAGUAZwB1AGwAYQByAAAAeABWAGUAcgBzAGkAbwBuACAAMQAuADAAMAA5ADsAUABTACAAMAAwADEALgAwADAAOQA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMAAuADcAMAA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4ANQAuADUAOAAzADIAOQAAADgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzACAAUgBlAGcAdQBsAGEAcgAAAAAAQlNHUAAAAAAAAAAAAAAAAAAAAAADAKncAE0TAE0ZAEbuFM3pjM%2FSEdmjKHUbyow8ATBE40IvWA3vTu8LiABDQ%2BpexwUMcm1SMnNryctQSiI1K5ZnbOlXKmnVV5YvRe6RnNMFNCOs1KNVpn6yZhCJkRtVRNzEufeIq7HgSrcx4S8h%2Fv4vnrrKc6oCNxmSk2uKlZQHBii6iKFoH0746ThvkO1kJHlxjrkxs%2BLWORaDQBEtiYJIR5IB9Bi1UyL4Rmr0BNigNkMzlKQmnofBHviqVzUxwdMb3NdCn69hy%2BpRYVKGVS%2F1tnsqv4LL7wCCPZZAZPT4aCShHjHJVNuXbmMrY5LeQaGnvAkXlVrJgKRAUdFjrWEah9XebPeQMj7KS7DIBAFt8ycgC5PLGUOHSE3ErGZCiViNLL5ZARfywnCoZaKQCu6NuFX42AEeKtKUGnr%2FCm2Cy8tpFhBPMW5Fxi4Qm4TkDWh4IWFDClhU2hRWosUWqcKLlgyXB%2BlSHaWaHiWlBAR8SeSgSPCQxdVQgzUixWKSTrIQEbU94viDctkvX%2BVSjJuUmV8L4CXShI11esnp0pjWNZIyxKHS4wVQ2ime1P4RnhvGw0aDN1OLAXGERsB7buFpFGGBAre4QEQR0HOIO5oYH305G%2BKspT%2FFupEGGafCCwxSe6ZUa%2B073rXHnNdVXE6eWvibUS27XtRzkH838mYLMBmYysZTM0EM3A1fbpCBYFccN1B%2FEnCYu%2FTgCGmr7bMh8GfYL%2BBfcLvB0gRagC09w9elfldaIy%2FhNCBLRgBgtCC7jAF63wLSMAfbfAlEggYU0bUA7ACCJmTDpEmJtI78w4%2FBO7dN7JR7J7ZvbYaUbaILSQsRBiF3HGk5fEg6p9unwLvn98r%2BvnsV%2B372uf1xBLq4qU%2F45fTuqaAP%2BpssmCCCTF0mhEow8ZXZOS8D7Q85JsxZ%2BAzok7B7O%2Ff6J8AzYBySZQB%2FQHYUSA%2BEeQhEWiS6AIQzgcsDiER4MjgMBAWDV4AgQ3g1eBgIdweCQmCjJEMkJ%2BPKRWyFHHmg1Wi%2F6xzUgA0LREoKJChwnQa9B%2B5RQZRB3IlBlkAnxyQNaANwHMowzlYSMCBgnbpzvqpl0iTJNCQidDI9ZrSYNIRBhHtUa5YHMHxyGEik9hDE0AKj72AbTCaxtHPUaKZdAZSnQTyjGqGLsmBStCejApUhg4uBMU6mATujEl%2BKdDPbI6Ag4vLr%2BhjY6lbjBeoLKnZl0UZgRX8gTySOeynZVz1wOq7e1hFGYIq%2BMhrGxDLak0PrwYzSXtcuyhXEhwOYofiW%2BEcI%2Fjw8P6IY6ed%2BetAbuqKp5QIapT77LnAe505lMuqL79a0ut4rWexzFttsOsLDy7zvtQzcq3U1qabe7tB0wHWVXji%2BzDbo8x8HyIRUbXnwUcklFv51fvTymiV%2BMXLSmGH9d9%2BaXpD5X6lao41anWGig7IwIdnoBY2ht%2FpO9mClLo4NdXHAsefqWUKlXJkbqPOFhMoR4aiA1BXqhRNbB2Xwi%2B7u%2FjpAoOpKJ0UX24EsrzMfHXViakCNcKjBxuQX8BO0ZqjJ3xXzf%2B61t2VXOSgJ8xu65QKgtN6FibPmPYsXbJRHHqbgATcSZxBqGiDiU4NNNsYBsKD0MIP%2FOfKnlk%2FLkaid%2FO2NbKeuQrwOB2Gq3YHyr6ALgzym5wIBnsdC1ZkoBFZSQXChZvlesPqvK2c5oHHT3Q65jYpNxnQcGF0EHbvYqoFw60WNlXIHQF2HQB7zD6lWjZ9rVqUKBXUT6hrkZOle0RFYII0V5ZYGl1JAP0Ud1fZZMvSomBzJ710j4Me8mjQDwEre5Uv2wQfk1ifDwb5ksuJQQ3xt423lbuQjvoIQByQrNDh1JxGFkOdlJvu%2FgFtuW0wR4cgd%2BZKesSV7QkNE2kw6AV4hoIuC02LGmTomyf8PiO6CZzOTLTPQ%2BHW06H%2Btx%2BbQ8LmDYg1pTFrp2oJXgkZTyeRJZM0C8aE2LpFrNVDuhARsN543%2FFV6klQ6Tv1OoZGXLv0igKrl%2FCmJxRmX7JJbJ998VSIPQRyDBICzl4JJlYHbdql30NvYcOuZ7a10uWRrgoieOdgIm4rlq6vNOQBuqESLbXG5lzdJGHw2m0sDYmODXbYGTfSTGRKpssTO95fothJCjUGQgEL4yKoGAF%2F0SrpUDNn8CBgBcSDQByAeNkCXp4S4Ro2Xh4OeaGRgR66PVOsU8bc6TR5%2FxTcn4IVMLOkXSWiXxkZQCbvKfmoAvQaKjO3EDKwkwqHChCDEM5loQRPd5ACBki1TjF772oaQhQbQ5C0lcWXPFOzrfsDGUXGrpxasbG4iab6eByaQkQfm0VFlP0ZsDkvvqCL6QXMUwCjdMx1ZOyKhTJ7a1GWAdOUcJ8RSejxNVyGs31OKMyRyBVoZFjqIkmKlLQ5eHMeEL4MkUf23cQ%2F1SgRCJ1dk4UdBT7OoyuNgLs0oCd8RnrEIb6QdMxT2QjD4zMrJkfgx5aDMcA4orsTtKCqWb%2FVeyceqa5OGSmB28YwH4rFbkQaLoUN8OQQYnD3w2eXpI4ScQfbCUZiJ4yMOIKLyyTc7BQ4uXUw6Ee6%2FxM%2B4Y67ngNBknxIPwuppgIhFcwJyr6EIj%2BLzNj%2FmfR2vhhRlx0BILZoAYruF0caWQ7YxO66UmeguDREAFHYuC7HJviRgVO6ruJH59h%2FC%2FPkgSle8xNzZJULLWq9JMDTE2fjGE146a1Us6PZDGYle6ldWRqn%2FpdpgHKNGrGIdkRK%2BKPETT9nKT6kLyDI8xd9A1FgWmXWRAIHwZ37WyZHOVyCadJEmMVz0MadMjDrPho%2BEIochkVC2xgGiwwsQ6DMv2P7UXqT4x7CdcYGId2BJQQa85EQKmCmwcRejQ9Bm4oATENFPkxPXILHpMPUyWTI5rjNOsIlmEeMbcOCEqInpXACYQ9DDxmFo9vcmsDblcMtg4tqBerNngkIKaFJmrQAPnq1dEzsMXcwjcHdfdCibcAxxA%2Bq%2Fj9m3LM%2FO7WJka4tSidVCjsvo2lQ%2F2ewyoYyXwAYyr2PlRoR5MpgVmSUIrM3PQxXPbgjBOaDQFIyFMJvx3Pc5RSYj12ySVF9fwFPQu2e2KWVoL9q3Ayv3IzpGHUdvdPdrNUdicjsTQ2ISy7QU3DrEytIjvbzJnAkmANXjAFERA0MUoPF3%2F5KFmW14bBNOhwircYgMqoDpUMcDtCmBE82QM2YtdjVLB4kBuKho%2FbcwQdeboqfQartuU3CsCf%2BcXkgYAqp%2F0Ee3RorAZt0AvvOCSI4JICIlGlsV0bsSid%2FNIEALAAzb6HAgyWHBps6xAOwkJIGcB82CxRQq4sJf3FzA70A%2BTRqcqjEMETCoez3mkPcpnoALs0ugJY8kQwrC%2BJE5ik3w9rzrvDRjAQnqgEVvdGrNwlanR0SOKWzxOJOvLJhcd8Cl4AshACUkv9czdMkJCVQSQhp6kp7StAlpVRpK0t0SW6LHeBJnE2QchB5Ccu8kxRghZXGIgZIiSj7gEKMJDClcnX6hgoqJMwiQDigIXg3ioFLCgDgjPtYHYpsF5EiA4kcnN18MZtOrY866dEQAb0FB34OGKHGZQjwW%2FWDHA60cYFaI%2FPjpzquUqdaYGcIq%2BmLez3WLFFCtNBN2QJcrlcoELgiPku5R5dSlJFaCEqEZle1AQzAKC%2B1SotMcBNyQUFuRHRF6OlimSBgjZeTBCwLyc6A%2BP%2FoFRchXTz5ADknYJHxzrJ5pGuIKRQISU6WyKTBBjD8WozmVYWIsto1AS5rxzKlvJu4E%2FvwOiKxRtCWsDM%2BeTHUrmwrCK5BIfMzGkD%2B0Fk5LzBs0jMYXktNDblB06LMNJ09U8pzSLmo14MS0OMjcdrZ31pyQqxJJpRImlSvfYAK8inkYU52QY2FPEVsjoWewpwhRp5yAuNpkqhdb7ku9Seefl2D0B8SMTFD90xi4CSOwwZy9IKkpMtI3FmFUg3%2FkFutpQGNc3pCR7gvC4sgwbupDu3DyEN%2BW6YGLNM21jpB49irxy9BSlHrVDlnihGKHwPrbVFtc%2Bh1rVQKZduxIyojccZIIcOCmhEnC7UkY68WXKQgLi2JCDQkQWJRQuk60hZp0D3rtCTINSeY9Ej2kIKYfGxwOs4j9qMM7fYZiipzgcf7TamnehqdhsiMiCawXnz4xAbyCkLAx5EGbo3Ax1u3dUIKnTxIaxwQTHehPl3V491H0%2BbC5zgpGz7Io%2BmjdhKlPJ01EeMpM7UsRJMi1nGjmJg35i6bQBAAxjO%2FENJubU2mg3ONySEoWklCwdABETcs7ck3jgiuU9pcKKpbgn%2B3YlzV1FzIkB6pmEDOSSyDfPPlQskznctFji0kpgZjW5RZe6x9kYT4KJcXg0bNiCyif%2BpZACCyRMmYsfiKmN9tSO65F0R2OO6ytlEhY5Sj6uRKfFxw0ijJaAx%2Fk3QgnAFSq27%2F2i4GEBA%2BUvTJKK%2F9eISNvG46Em5RZfjTYLdeD8kdXHyrwId%2FDQZUaMCY4gGbke2C8vfjgV%2FY9kkRQOJIn%2FxM9INZSpiBnqX0Q9GlQPpPKAyO5y%2BW5NMPSRdBCUlmuxl40ZfMCnf2Cp044uI9WLFtCi4YVxKjuRCOBWIb4XbIsGdbo4qtMQnNOQz4XDSui7W%2FN6l54qOynCqD3DpWQ%2BmpD7C40D8BZEWGJX3tlAaZBMj1yjvDYKwCJBa201u6nBKE5UE%2B7QSEhCwrXfbRZylAaAkplhBWX50dumrElePyNMRYUrC99UmcSSNgImhFhDI4BXjMtiqkgizUGCrZ8iwFxU6fQ8GEHCFdLewwxYWxgScAYMdMLmcZR6b7rZl95eQVDGVoUKcRMM1ixXQtXNkBETZkVVPg8LoSrdetHzkuM7DjZRHP02tCxA1fmkXKF3VzfN1pc1cv%2F8lbTIkkYpqKM9VOhp65ktYk%2BQ46myFWBapDfyWUCnsnI00QTBQmuFjMZTcd0V2NQ768Fhpby04k2IzNR1wKabuGJqYWwSly6ocMFGTeeI%2BejsWDYgEvr66QgqdcIbFYDNgsm0x9UHY6SCd5%2B7tpsLpKdvhahIDyYmEJQCqMqtCF6UlrE5GXRmbu%2Bvtm3BFSxI6ND6UxIE7GsGMgWqghXxSnaRJuGFveTcK5ZVSPJyjUxe1dKgI6kNF7EZhIZs8y8FVqwEfbM0Xk2ltORVDKZZM40SD3qQoQe0orJEKwPfZwm3YPqwixhUMOndis6MhbmfvLBKjC8sKKIZKbJk8L11oNkCQzCgvjhyyEiQSuJcgCQSG4Mocfgc0Hkwcjal1UNgP0CBPikYqBIk9tONv4kLtBswH07vUCjEaHiFGlLf8MgXKzSgjp2HolRRccAOh0ILHz9qlGgIFkwAnzHJRjWFhlA7ROwINyB5HFj59PRZHFor6voq7l23EPNRwdWhgawqbivLSjRA4htEYUFkjESu67icTg5S0aW1sOkCiIysfJ9UnIWevOOLGpepcBxy1wEhd2WI3AZg7sr9WBmHWyasxMcvY%2FiOmsLtHSWNUWEGk9hScMPShasUA1AcHOtRZlqMeQ0OzYS9vQvYUjOLrzP07BUAFikcJNMi7gIxEw4pL1G54TcmmmoAQ5s7TGWErJZ2Io4yQ0ljRYhL8H5e62oDtLF8aDpnIvZ5R3GWJyAugdiiJW9hQAVTsnCBHhwu7rkBlBX6r3b7ejEY0k5GGeyKv66v%2B6dg7mcJTrWHbtMywbedYqCQ0FPwoytmSWsL8WTtChZCKKzEF7vP6De4x2BJkkniMgSdWhbeBSLtJZR9CTHetK1xb34AYIJ37OegYIoPVbXgJ%2FqDQK%2BbfCtxQRVKQu77WzOoM6SGL7MaZwCGJVk46aImai9fmam%2BWpHG%2B0BtQPWUgZ7RIAlPq6lkECUhZQ2gqWkMYKcYMYaIc4gYCDFHYa2d1nzp3%2BJ1eCBay8IYZ0wQRKGAqvCuZ%2FUgbQPyllosq%2BXtfKIZOzmeJqRazpmmoP%2F76YfkjzV2NlXTDSBYB04SVlNQsFTbGPk1t%2FI4Jktu0XSgifO2ozFOiwd%2F0SssJDn0dn4xqk4GDTTKX73%2FwQyBLdqgJ%2BWx6AQaba3BA9CKEzjtQYIfAsiYamapq80LAamYjinlKXUkxdpIDk0puXUEYzSalfRibAeDAKpNiqQ0FTwoxuGYzRnisyTotdVTclis1LHRQCy%2FqqL8oUaQzWRxilq5Mi0IJGtMY02cGLD69vGjkj3p6pGePKI8bkBv5evq8SjjyU04vJR2cQXQwSJyoinDsUJHCQ50jrFTT7yRdbdYQMB3MYCb6uBzJ9ewhXYPAIZSXfeEQBZZ3GPN3Nbhh%2FwkvAJLXnQMdi5NYYZ5GHE400GS5rXkOZSQsdZgIbzRnF9ueLnsfQ47wHAsirITnTlkCcuWWIUhJSbpM3wWhXNHvt2xUsKKMpdBSbJnBMcihkoDqAd1Zml%2FR4yrzow1Q2A5G%2Bkzo%2FRhRxQS2lCSDRV8LlYLBOOoo1bF4jwJAwKMK1tWLHlu9i0j4Ig8qVm6wE1DxXwAwQwsaBWUg2pOOol2dHxyt6npwJEdLDDVYyRc2D0HbcbLUJQj8gPevQBUBOUHXPrsAPBERICpnYESeu2OHotpXQxRGlCCtLdIsu23MhZVEoJg8Qumj%2FUMMc34IBqTKLDTp76WzL%2FdMjCxK7MjhiGjeYAC%2Fkj%2FjY%2FRde7hpSM1xChrog6yZ7OWTuD56xBJnGFE%2BpT2ElSyCnJcwVzCjkqeNLfMEJqKW0G7OFIp0G%2B9mh50I9o8k1tpCY0xYqFNIALgIfc2me4n1bmJnRZ89oepgLPT0NTMLNZsvSCZAc3TXaNB07vail36%2FdBySis4m9%2FDR8izaLJW6bWCkVgm5T%2Bius3ZXq4xI%2BGnbveLbdRwF2mNtsrE0JjYc1AXknCOrLSu7Te%2Fr4dPYMCl5qtiHNTn%2BTPbh1jCBHH%2BdMJNhwNgs3nT%2BOhQoQ0vYif56BMG6WowAcHR3DjQolxLzyVekHj00PBAaW7IIAF1EF%2BuRIWyXjQMAs2chdpaKPNaB%2BkSezYt0%2BCA04sOg5vx8Fr7Ofa9sUv87h7SLAUFSzbetCCZ9pmyLt6l6%2FTzoA1%2FZBG9bIUVHLAbi%2FkdBFgYGyGwRQGBpkqCEg2ah9UD6EedEcEL3j4y0BQQCiExEnocA3SZboh%2Bepgd3YsOkHskZwPuQ5OoyA0fTA5AXrHcUOQF%2BzkJHIA7PwCDk1gGVmGUZSSoPhNf%2BTklauz98QofOlCIQ%2FtCD4dosHYPqtPCXB3agggQQIqQJsSkB%2Bqn0rkQ1toJjON%2FOtCIB9RYv3PqRA4C4U68ZMlZn6BdgEvi2ziU%2BTQ6NIw3ej%2BAtDwMGEZk7e2IjxUWKdAxyaw9OCwSmeADTPPleyk6UhGDNXQb%2B%2BW6Uk4q6F7%2Frg6WVTo82IoCxSIsFDrav4EPHphD3u4hR53WKVvYZUwNCCeM4PMBWzK%2BEfIthZOkuAwPo5C5jgoZgn6dUdvx5rIDmd58cXXdKNfw3l%2BwM2UjgrDJeQHhbD7HW2QDoZMCujgIUkk5Fg8VCsdyjOtnGRx8wgKRPZN5dR0zPUyfGZFVihbFRniXZFOZGKPnEQzU3AnD1KfR6weHW2XS6KbPJxUkOTZsAB9vTVp3Le1F8q5l%2BDMcLiIq78jxAImD2pGFw0VHfRatScGlK6SMu8leTmhUSMy8Uhdd6xBiH3Gdman4tjQGLboJfqz6fL2WKHTmrfsKZRYX6BTDjDldKMosaSTLdQS7oDisJNqAUhw1PfTlnacCO8vl8706Km1FROgLDmudzxg%2BEWTiArtHgLsRrAXYWdB0NmToNCJdKm0KWycZQqb%2BMw76Qy29iQ5up%2FX7oyw8QZ75kP5F6iJAJz6KCmqxz8fEa%2FxnsMYcIO%2FvEkGRuMckhr4rIeLrKaXnmIzlNLxbFspOphkcnJdnz%2FChp%2FVlpj2P7jJQmQRwGnltkTV5dbF9fE3%2FfxoSqTROgq9wFUlbuYzYcasE0ouzBo%2BdDCDzxKAfhbAZYxQiHrLzV2iVexnDX%2FQnT1fsT%2Fxuhu1ui5qIytgbGmRoQkeQooO8eJNNZsf0iALur8QxZFH0nCMnjerYQqG1pIfjyVZWxhVRznmmfLG00BcBWJE6hzQWRyFknuJnXuk8A5FRDCulwrWASSNoBtR%2BCtGdkPwYN2o7DOw%2FVGlCZPusRBFXODQdUM5zeHDIVuAJBLqbO%2Ff9Qua%2BpDqEPk230Sob9lEZ8BHiCorjVghuI0lI4JDgHGRDD%2FprQ84B1pVGkIpVUAHCG%2Biz3Bn3qm2AVrYcYWhock4jso5%2BJ7HfHVj4WMIQdGctq3psBCVVzupQOEioBGA2Bk%2BUILT7%2BVoX5mdxxA5fS42gISQVi%2FHTzrgMxu0fY6hE1ocUwwbsbWcezrY2n6S8%2F6cxXkOH4prpmPuFoikTzY7T85C4T2XYlbxLglSv2uLCgFv8Quk%2FwdesUdWPeHYIH0R729JIisN9Apdd4eB10aqwXrPt%2BSu9mA8k8n1sjMwnfsfF2j3jMUzXepSHmZ%2FBfqXvzgUNQQWOXO8YEuFBh4QTYCkOAPxywpYu1VxiDyJmKVcmJPGWk%2Fgc3Pov02StyYDahwmzw3E1gYC9wkupyWfDqDSUMpCTH5e5N8B%2F%2FlHiMuIkTNw4USHrJU67bjXGqNav6PBuQSoqTxc8avHoGmvqNtXzIaoyMIQIiiUHIM64cXieouplhNYln7qgc4wBVAYR104kO%2BCvKqsg4yIUlFNThVUAKZxZt1XA34h3TCUUiXVkZ0w8Hh2R0Z5L0b4LZvPd%2Fp1gi%2F07h8qfwHrByuSxglc9cI4QIg2oqvC%2Fqm0i7tjPLTgDhoWTAKDO2ONW5oe%2B%2FeKB9vZB8K6C25yCZ9RFVMnb6NRdRjyVK57CHHSkJBfnM2%2Fj4ODUwRkqrtBBCrDsDpt8jhZdXoy%2F1BCqw3sSGhgGGy0a5Jw6BP%2FTExoCmNFYjZl248A0osgPyGEmRA%2BfAsqPVaNAfytu0vuQJ7rk3J4kTDTR2AlCHJ5cls26opZM4w3jMULh2YXKpcqGBtuleAlOZnaZGbD6DHzMd6i2oFeJ8z9XYmalg1Szd%2FocZDc1C7Y6vcALJz2lYnTXiWEr2wawtoR4g3jvWUU2Ngjd1cewtFzEvM1NiHZPeLlIXFbBPawxNgMwwAlyNSuGF3zizVeOoC9bag1qRAQKQE%2FEZBWC2J8mnXAN2aTBboZ7HewnObE8CwROudZHmUM5oZ%2FUgd%2FJZQK8lvAm43uDRAbyW8gZ%2BZGq0EVerVGUKUSm%2FIdn8AQHdR4m7bue88WBwft9mSCeMOt1ncBwziOmJYI2ZR7ewNMPiCugmSsE4EyQ%2BQATJG6qORMGd4snEzc6B4shPIo4G1T7PgSm8PY5eUkPdF8JZ0VBtadbHXoJgnEhZQaODPj2gpODKJY5Yp4DOsLBFxWbvXN755KWylJm%2BoOd4zEL9Hpubuy2gyyfxh8oEfFutnYWdfB8PdESLWYvSqbElP9qo3u6KTmkhoacDauMNNjj0oy40DFV7Ql0aZj77xfGl7TJNHnIwgqOkenruYYNo6h724%2BzUQ7%2BvkCpZB%2BpGA562hYQiDxHVWOq0oDQl%2FQsoiY%2BcuI7iWq%2FZIBtHcXJ7kks%2Bh2fCNUPA82BzjnqktNts%2BRLdk1VSu%2BtqEn7QZCCsvEqk6FkfiOYkrsw092J8jsfIuEKypNjLxrKA9kiA19mxBD2suxQKCzwXGws7kEJvlhUiV9tArLIdZW0IORcxEzdzKmjtFhsjKy%2F44XYXdI5noQoRcvjZ1RMPACRqYg2V1%2BOwOepcOknRLLFdYgTkT5UApt%2FJhLM3jeFYprZV%2BZow2g8fP%2BU68hkKFWJj2yBbKqsrp25xkZX1DAjUw52IMYWaOhab8Kp05VrdNftqwRrymWF4OQSjbdfzmRZirK8FMJELEgER2PHjEAN9pGfLhCUiTJFbd5LBkOBMaxLr%2FA1SY9dXFz4RjzoU9ExfJCmx%2FI9FKEGT3n2cmzl2X42L3Jh%2BAbQq6sA%2BSs1kitoa4TAYgKHaoybHUDJ51oETdeI%2F9ThSmjWGkyLi5QAGWhL0BG1UsTyRGRJOldKBrYJeB8ljLJHfATWTEQBXBDnQexOHTB%2BUn44zExFE4vLytcu5NwpWrUxO%2F0ZICUGM7hGABXym0V6ZvDST0E370St9MIWQOTWngeoQHUTdCJUP04spMBMS8LSker9cReVQkULFDIZDFPrhTzBl6sed9wcZQTbL%2BBDqMyaN3RJPh%2Fanbx%2BIv%2BqgQdAa3M9Z5JmvYlh4qop%2BHo1F1W5gbOE9YKLgAnWytXElU4G8GtW47lhgFE6gaSs%2Bgs37sFvi0PPVvA5dnCBgILTwoKd%2F%2BDoL9F6inlM7H4rOTzD79KJgKlZO%2FZgt22UsKhrAaXU5ZcLrAglTVKJEmNJvORGN1vqrcfSMizfpsgbIe9zno%2BgBoKVXgIL%2FVI8dB1O5o%2FR3Suez%2FgD7M781ShjKpIIORM%2FnxG%2BjjhhgPwsn2IoXsPGPqYHXA63zJ07M2GPEykQwJBYLK808qYxuIew4frk52nhCsnCYmXiR6CuapvE1IwRB4%2FQftDbEn%2BAucIr1oxrLabRj9q4ae0%2BfXkHnteAJwXRbVkR0mctVSwEbqhJiMSZUp9DNbEDMmjX22m3ABpkrPQQTP3S1sib5pD2VRKRd%2BeNAjLYyT0hGrdjWJZy24OYXRoWQAIhGBZRxuBFMjjZQhpgrWo8SiFYbojcHO8V5DyscJpLTHyx9Fimassyo5U6WNtquUMYgccaHY5amgR3PQzq3ToNM5ABnoB9kuxsebqmYZm0R9qxJbFXCQ1UPyFIbxoUraTJFDpCk0Wk9GaYJKz%2F6oHwEP0Q14lMtlddQsOAU9zlYdMVHiT7RQP3XCmWYDcHCGbVRHGnHuwzScA0BaSBOGkz3lM8CArjrBsyEoV6Ys4qgDK3ykQQPZ3hCRGNXQTNNXbEb6tDiTDLKOyMzRhCFT%2BmAUmiYbV3YQVqFVp9dorv%2BTsLeCykS2b5yyu8AV7IS9cxcL8z4Kfwp%2BxJyYLv1OsxQCZwTB4a8BZ%2F5EdxTBJthApqyfd9u3ifr%2FWILTqq5VqgwMT9SOxbSGWLQJUUWCVi4k9tho9nEsbUh7U6NUsLmkYFXOhZ0kmamaJLRNJzSj%2Fqn4Mso6zb6iLLBXoaZ6AqeWCjHQm2lztnejYYM2eubnpBdKVLORZhudH3JF1waBJKA9%2BW8EhMj3Kzf0L4vi4k6RoHh3Z5YgmSZmk6ns4fjScjAoL8GoOECgqgYEBYUGFVO4FUv4%2FYtowhEmTs0vrvlD%2FCrisnoBNDAcUi%2FteY7OctFlmARQzjOItrrlKuPO6E2Ox93L4O%2F4DcgV%2FdZ7qR3VBwVQxP1GCieA4RIpweYJ5FoYrHxqRBdJjnqbsikA2Ictbb8vE1GYIo9dacK0REgDX4smy6GAkxlH1yCGGsk%2BtgiDhNKuKu3yNrMdxafmKTF632F8Vx4BNK57GvlFisrkjN9WDAtjsWA0ENT2e2nETUb%2Fn7qwhvGnrHuf5bX6Vh%2Fn3xffU3PeHdR%2BFA92i6ufT3AlyAREoNDh6chiMWTvjKjHDeRhOa9YkOQRq1vQXEMppAQVwHCuIcV2g5rBn6GmZZpTR7vnSD6ZmhdSl176gqKTXu5E%2BYbfL0adwNtHP7dT7t7b46DVZIkzaRJOM%2BS6KcrzYVg%2BT3wSRFRQashjfU18NutrKa%2F7PXbtuJvpIjbgPeqd%2BpjmRw6YKpnANFSQcpzTZgpSNJ6J7uiagAbir%2F8tNXJ%2FOsOnRh6iuIexxrmkIneAgz8QoLmiaJ8sLQrELVK2yn3wOHp57BAZJhDZjTBzyoRAuuZ4eoxHruY1pSb7qq79cIeAdOwin4GdgMeIMHeG%2BFZWYaiUQQyC5b50zKjYw97dFjAeY2I4Bnl105Iku1y0lMA1ZHolLx19uZnRdILcXKlZGQx%2FGdEqSsMRU1BIrFqRcV1qQOOHyxOLXEGcbRtAEsuAC2V4K3p5mFJ22IDWaEkk9ttf5Izb2LkD1MnrSwztXmmD%2FQi%2FEmVEFBfiKGmftsPwVaIoZanlKndMZsIBOskFYpDOq3QUs9aSbAAtL5Dbokus2G4%2FasthNMK5UQKCOhU97oaOYNGsTah%2BjfCKsZnTRn5TbhFX8ghg8CBYt%2FBjeYYYUrtUZ5jVij%2Fop7V5SsbA4mYTOwZ46hqdpbB6Qvq3AS2HHNkC15pTDIcDNGsMPXaBidXYPHc6PJAkRh29Vx8KcgX46LoUQBhRM%2B3SW6Opll%2FwgxxsPgKJKzr5QCmwkUxNbeg6Wj34SUnEzOemSuvS2OetRCO8Tyy%2BQbSKVJcqkia%2BGvDefFwMOmgnD7h81TUtMn%2BmRpyJJ349HhAnoWFTejhpYTL9G8N2nVg1qkXBeoS9Nw2fB27t7trm7d%2FQK7Cr4uoCeOQ7%2F8JfKT77KiDzLImESHw%2F0wf73QeHu74hxv7uihi4fTX%2BXEwAyQG3264dwv17aJ5N335Vt9sdrAXhPOAv8JFvzqyYXwfx8WYJaef1gMl98JRFyl5Mv5Uo%2FoVH5ww5OzLFsiTPDns7fS6EURSSWd%2F92BxMYQ8sBaH%2Bj%2BwthQPdVgDGpTfi%2BJQIWMD8xKqULliRH01rTeyF8x8q%2FGBEEEBrAJMPf25UQwi0b8tmqRXY7kIvNkzrkvRWLnxoGYEJsz8u4oOyMp8cHyaybb1HdMCaLApUE%2B%2F7xLIZGP6H9xuSEXp1zLIdjk5nBaMuV%2FyTDRRP8Y2ww5RO6d2D94o%2B6ucWIqUAvgHIHXhZsmDhjVLczmZ3ca0Cb3PpKwt2UtHVQ0BgFJsqqTsnzZPlKahRUkEu4qmkJt%2Bkqdae76ViWe3STan69yaF9%2BfESD2lcQshLHWVu4ovItXxO69bqC5p1nZLvI8NdQB9s9UNaJGlQ5mG947ipdDA0eTIw%2FA1zEdjWquIsQXXGIVEH0thC5M%2BW9pZe7IhAVnPJkYCCXN5a32HjN6nsvokEqRS44tGIs7s2LVTvcrHAF%2BRVmI8L4HUYk4x%2B67AxSMJKqCg8zrGOgvK9kNMdDrNiUtSWuHFpC8%2Fp5qIQrEo%2FH%2B1l%2F0cAwQ2nKmpWxKcMIuHY44Y6DlkpO48tRuUGBWT0FyHwSKO72Ud%2BtJUfdaZ4CWNijzZtlRa8%2BCkmO%2FEwHYfPZFU%2FhzjFWH7vnzHRMo%2BaF9u8qHSAiEkA2HjoNQPEwHsDKOt6hOoK3Ce%2F%2B%2F9boMWDa44I6FrQhdgS7OnNaSzwxWKZMcyHi6LN4WC6sSj0qm2PSOGBTvDs%2FGWJS6SwEN%2FULwpb4LQo9fYjUfSXRwZkynUazlSpvX9e%2BG2zor8l%2BYaMxSEomDdLHGcD6YVQPegTaA74H8%2BV4WvJkFUrjMLGLlvSZQWvi8%2FQA7yzQ8GPno%2F%2F5SJHRP%2FOqKObPCo81s%2F%2B6WgLqykYpGAgQZhVDEBPXWgU%2FWzFZjKUhSFInufPRiMAUULC6T11yL45ZrRoB4DzOyJShKXaAJIBS9wzLYIoCEcJKQW8GVCx4fihqJ6mshBUXSw3wWVj3grrHQlGNGhIDNNzsxQ3M%2BGWn6ASobIWC%2BLbYOC6UpahVO13Zs2zOzZC8z7FmA05JhUGyBsF4tsG0drcggIFzgg%2Fkpf3%2BCnAXKiMgIE8Jk%2FMhpkc8DUJEUzDSnWlQFme3d0sHZDrg7LavtsEX3cHwjCYA17pMTfx8Ajw9hHscN67hyo%2BRJQ4458RmPywXykkVcW688oVUrQhahpPRvTWPnuI0B%2BSkQu7dCyvLRyFYlC1LG1gRCIvn3rwQeINzZQC2KXq31FaR9UmVV2QeGVqBHjmE%2BVMd3b1fhCynD0pQNhCG6%2FWCDbKPyE7NRQzL3BzQAJ0g09aUzcQA6mUp9iZFK6Sbp%2FYbHjo%2B%2B7%2FWj8S4YNa%2BZdqAw1hDrKWFXv9%2BzaXpf8ZTDSbiqsxnwN%2FCzK5tPkOr4tRh2kY3Bn9JtalbIOI4b3F7F1vPQMfoDcdxMS8CW9m%2FNCW%2FHILTUVWQIPiD0j1A6bo8vsv6P1hCESl2abrSJWDrq5sSzUpwoxaCU9FtJyYH4QFMxDBpkkBR6kn0LMPO%2B5EJ7Z6bCiRoPedRZ%2FP0SSdii7ZnPAtVwwHUidcdyspwncz5uq6vvm4IEDbJVLUFCn%2FLvIHfooUBTkFO130FC7CmmcrKdgDJcid9mvVzsDSibOoXtIf9k6ABle3PmIxejodc4aob0QKS432srrCMndbfD454q52V01G4q913mC5HOsTzWF4h2No1av1VbcUgWAqyoZl%2B11PoFYnNv2HwAODeNRkHj%2B8SF1fcvVBu6MrehHAZK1Gm69ICcTKizykHgGFx7QdowTVAsYEF2tVc0Z6wLryz2FI1sc5By2znJAAmINndoJiB4sfPdPrTC8RnkW7KRCwxC6YvXg5ahMlQuMpoCSXjOlBy0Kij%2BbsCYPbGp8BdCBiLmLSAkEQRaieWo1SYvZIKJGj9Ur%2FeWHjiB7SOVdqMAVmpBvfRiebsFjger7DC%2B8kRFGtNrTrnnGD2GAJb8rQCWkUPYHhwXsjNBSkE6lGWUj5QNhK0DMNM2l%2BkXRZ0KLZaGsFSIdQz%2FHXDxf3%2FTE30%2BDgBKWGWdxElyLccJfEpjsnszECNoDGZpdwdRgCixeg9L4EPhH%2BRptvRMVRaahu4cySjS3P5wxAUCPkmn%2BrhyASpmiTaiDeggaIxYBmtLZDDhiWIJaBgzfCsAGUF1Q1SFZYyXDt9skCaxJsxK2Ms65dmdp5WAZyxik%2FzbrTQk5KmgxCg%2Ff45L0jywebOWUYFJQAJia7XzCV0x89rpp%2Ff3AVWhSPyTanqmik2SkD8A3Ml4NhIGLAjBXtPShwKYfi2eXtrDuKLk4QlSyTw1ftXgwqA2jUuopDl%2B5tfUWZNwBpEPXghzbBggYCw%2Fdhy0ntds2yeHCDKkF%2FYxQjNIL%2FF%2F37jLPHCKBO9ibwYCmuxImIo0ijV2Wbg3kSN2psoe8IsABv3RNFaF9uMyCtCYtqcD%2BqNOhwMlfARQUdJ2tUX%2BMNJqOwIciWalZsmEjt07tfa8ma4cji9sqz%2BQ9hWfmMoKEbIHPOQORbhQRHIsrTYlnVTNvcq1imqmmPDdVDkJgRcTgB8Sb6epCQVmFZe%2BjGDiNJQLWnfx%2BdrTKYjm0G8yH0ZAGMWzEJhUEQ4Maimgf%2Fbkvo8PLVBsZl152y5S8%2BHRDfZIMCbYZ1WDp4yrdchOJw8k6R%2B%2F2pHmydK4NIK2PHdFPHtoLmHxRDwLFb7eB%2BM4zNZcB9NrAgjVyzLM7xyYSY13ykWfIEEd2n5%2FiYp3ZdrCf7fL%2Ben%2BsIJu2W7E30MrAgZBD1rAAbZHPgeAMtKCg3NpSpYQUDWJu9bT3V7tOKv%2BNRiJc8JAKqqgCA%2FPNRBR7ChpiEulyQApMK1AyqcWnpSOmYh6yLiWkGJ2mklCSPIqN7UypWj3dGi5MvsHQ87MrB4VFgypJaFriaHivwcHIpmyi5LhNqtem4q0n8awM19Qk8BOS0EsqGscuuydYsIGsbT5GHnERUiMpKJl4ON7qjB4fEqlGN%2FhCky89232UQCiaeWpDYCJINXjT6xl4Gc7DxRCtgV0i1ma4RgWLsNtnEBRQFqZggCLiuyEydmFd7WlogpkCw5G1x4ft2psm3KAREwVwr1Gzl6RT7FDAqpVal34ewVm3VH4qn5mjGj%2BbYL1NgfLNeXDwtmYSpwzbruDKpTjOdgiIHDVQSb5%2FzBgSMbHLkxWWgghIh9QTFSDILixVwg0Eg1puooBiHAt7DzwJ7m8i8%2Fi%2BjHvKf0QDnnHVkVTIqMvIQImOrzCJwhSR7qYB5gSwL6aWL9hERHCZc4G2%2BJrpgHNB8eCCmcIWIQ6rSdyPCyftXkDlErUkHafHRlkOIjxGbAktz75bnh50dU7YHk%2BMz7wwstg6RFZb%2BTZuSOx1qqP5C66c0mptQmzIC2dlpte7vZrauAMm%2F7RfBYkGtXWGiaWTtwvAQiq2oD4YixPLXE2khB2FRaNRDTk%2B9sZ6K74Ia9VntCpN4BhJGJMT4Z5c5FhSepRCRWmBXqx%2BwhVZC4me4saDs2iNqXMuCl6iAZflH8fscC1sTsy4PHeC%2BXYuqMBMUun5YezKbRKmEPwuK%2BCLzijPEQgfhahQswBBLfg%2FGBgBiI4QwAqzJkkyYAWtjzSg2ILgMAgqxYfwERRo3zruBL9WOryUArSD8sQOcD7fvIODJxKFS615KFPsb68USBEPPj1orNzFY2xoTtNBVTyzBhPbhFH0PI5AtlJBl2aSgNPYzxYLw7XTDBDinmVoENwiGzmngrMo8OmnRP0Z0i0Zrln9DDFcnmOoBZjABaQIbPOJYZGqX%2BRCMlDDbElcjaROLDoualmUIQ88Kekk3iM4OQrADcxi3rJguS4MOIBIgKgXrjd1WkbCdqxJk%2F4efRIFsavZA7KvvJQqp3Iid5Z0NFc5aiMRzGN3vrpBzaMy4JYde3wr96PjN90AYOIbyp6T4zj8LoE66OGcX1Ef4Z3KoWLAUF4BTg7ug%2FAbkG5UNQXAMkQezujSHeir2uTThgd3gpyzDrbnEdDRH2W7U6PeRvBX1ZFMP5RM%2BZu6UUZZD8hDPHldVWntTCNk7To8IeOW9yn2wx0gmurwqC60AOde4r3ETi5pVMSDK8wxhoGAoEX9NLWHIR33VbrbMveii2jAJlrxwytTHbWNu8Y4N8vCCyZjAX%2FpcsfwXbLze2%2BD%2Bu33OGBoJyAAL3jn3RuEcdp5If8O%2Ba4NKWvxOTyDltG0IWoHhwVGe7dKkCWFT%2B%2Btm%2BhaBCikRUUMrMhYKZJKYoVuv%2FbsJzO8DwfVIInQq3g3BYypiz8baogH3r3GwqCwFtZnz4xMjAVOYnyOi5HWbFA8n0qz1OjSpHWFzpQOpvkNETZBGpxN8ybhtqV%2FDMUxd9uFZmBfKXMCn%2FSqkWJyKPnT6lq%2B4zBZni6fYRByJn6OK%2BOgPBGRAJluwGSk4wxjOOzyce%2FPKODwRlsgrVkdcsEiYrqYdXo0Er2GXi2GQZd0tNJT6c9pK1EEJG1zgDJBoTVuCXGAU8BKTvCO%2FcEQ1Wjk3Zzuy90JX4m3O5IlxVFhYkSUwuQB2up7jhvkm%2BbddRQu5F9s0XftGEJ9JSuSk%2BZachCbdU45fEqbugzTIUokwoAKvpUQF%2FCvLbWW5BNQFqFkJg2f30E%2F48StNe5QwBg8zz3YAJ82FZoXBxXSv4QDooDo79NixyglO9AembuBcx5Re3CwOKTHebOPhkmFC7wNaWtoBhFuV4AkEuJ0J%2B1pT0tLkvFVZaNzfhs%2FKd3%2BA9YsImlO4XK4vpCo%2FelHQi%2F9gkFg07xxnuXLt21unCIpDV%2BbbRxb7FC6nWYTsMFF8%2B1LUg4JFjVt3vqbuhHmDKbgQ4e%2BRGizRiO8ky05LQGMdL2IKLSNar0kNG7lHJMaXr5mLdG3nykgj6vB%2FKVijd1ARWkFEf3yiUw1v%2FWaQivVUpIDdSNrrKbjO5NPnxz6qTTGgYg03HgPhDrCFyYZTi3XQw3HXCva39mpLNFtz8AiEhxAJHpWX13gCTAwgm9YTvMeiqetdNQv6IU0hH0G%2BZManTqDLPjyrOse7WiiwOJCG%2BJ0pZYULhN8NILulmYYvmVcV2MjAfA39sGKqGdjpiPo86fecg65UPyXDIAOyOkCx5NQsLeD4gGVjTVDwOHWkbbBW0GeNjDkcSOn2Nq4cEssP54t9D749A7M1AIOBl0Fi0sSO5v3P7LCBrM6ZwFY6kp2FX6AcbGUdybnfChHPyu6WlRZ2Fwv9YM0RMI7kISRgR8HpQSJJOyTfXj%2F6gQKuihPtiUtlCQVPohUgzfezTg8o1b3n9pNZeco1QucaoXe40Fa5JYhqdTspFmxGtW9h5ezLFZs3j%2FN46f%2BS2rjYNC2JySXrnSAFhvAkz9a5L3pza8eYKHNoPrvBRESpxYPJdKVUxBE39nJ1chrAFpy4MMkf0qKgYALctGg1DQI1kIymyeS2AJNT4X240d3IFQb%2F0jQbaHJ2YRK8A%2Bls6WMhWmpCXYG5jqapGs5%2FeOJErxi2%2F2KWVHiPellTgh%2FfNl%2F2KYPKb7DUcAg%2BmCOPQFCiU9Mq%2FWLcU1xxC8aLePFZZlE%2BPCLzf7ey46INWRw2kcXySR9FDgByXzfxiNKwDFbUSMMhALPFSedyjEVM5442GZ4hTrsAEvZxIieSHGSgkwFh%2FnFNdrrFD4tBH4Il7fW6ur4J8Xaz7RW9jgtuPEXQsYk7gcMs2neu3zJwTyUerHKSh1iTBkj2YJh1SSOZL5pLuQbFFAvyO4k1Hxg2h99MTC6cTUkbONQIAnEfGsGkNFWRbuRyyaEZInM5pij73EA9rPIUfU4XoqQpHT9THZkW%2BoKFLvpyvTBMM69tN1Ydwv1LIEhHsC%2BueVG%2Bw%2BkyCPsvV3erRikcscHjZCkccx6VrBkBRusTDDd8847GA7p2Ucy0y0HdSRN6YIBciYa4vuXcAZbQAuSEmzw%2BH%2FAuOx%2BaH%2BtBL88H57D0MsqyiZxhOEQkF%2F8DR1d2hSPMj%2FsNOa5rxcUnBgH8ictv2J%2Bcb4BA4v3MCShdZ2vtK30vAwkobnEWh7rsSyhmos3WC93Gn9C4nnAd%2FPjMMtQfyDNZsOPd6XcAsnBE%2FmRHtHEyJMzJfZFLE9OvQa0i9kUmToJ0ZxknTgdl%2FXPV8xoh0K7wNHHsnBdvFH3sv52lU7UFteseLG%2FVanIvcwycVA7%2BBE1Ulyb20BvwUWZcMTKhaCcmY3ROpvonVMV4N7yBXTL7IDtHzQ4CCcqF66LjF3xUqgErKzolLyCG6Kb7irP%2FMVTCCwGRxfrPGpMMGvPLgJ881PHMNMIO09T5ig7AzZTX%2F5PLlwnJLDAPfuHynSGhV4tPqR3gJ4kg4c06c%2FF1AcjGytKm2Yb5jwMotF7vro4YDLWlnMIpmPg36NgAZsGA0W1spfLSue4xxat0Gdwd0lqDBOgIaMANykwwDKejt5YaNtJYIkrSgu0KjIg0pznY0SCd1qlC6R19g97UrWDoYJGlrvCE05J%2F5wkjpkre727p5PTRX5FGrSBIfJqhJE%2FIS876PaHFkx9pGTH3oaY3jJRvLX9Iy3Edoar7cFvJqyUlOhAEiOSAyYgVEGkzHdug%2BoRHIEOXAExMiTSKU9A6nmRC8mp8iYhwWdP2U%2F5EkFAdPrZw03YA3gSyNUtMZeh7dDCu8pF5x0VORCTgKp07ehy7NZqKTpIC4UJJ89lnboyAfy5OyXzXtuDRbtAFjZRSyGFTpFrXwkpjSLIQIG3N0Vj4BtzK3wdlkBJrO18MNsgseR4BysJilI0wI6ZahLhBFA0XBmV8d4LUzEcNVb0xbLjLTETYN8OEVqNxkt10W614dd1FlFFVTIgB7%2FBQQp1sWlNolpIu4ekxUTBV7NmxOFKEBmmN%2BnA7pvF78%2FRII5ZHA09OAiE%2F66MF6HQ%2BqVEJCHxwymukkNvzqHEh52dULPbVasfQMgTDyBZzx4007YiKdBuUauQOt27Gmy8ISclPmEUCIcuLbkb1mzQSqIa3iE0PJh7UMYQbkpe%2BhXjTJKdldyt2mVPwywoODGJtBV1lJTgMsuSQBlDMwhEKIfrvsxGQjHPCEfNfMAY2oxvyKcKPUbQySkKG6tj9AQyEW3Q5rpaDJ5Sns9ScLKeizPRbvWYAw4bXkrZdmB7CQopCH8NAmqbuciZChHN8lVGaDbCnmddnqO1PQ4ieMYfcSiBE5zzMz%2BJV%2F4eyzrzTEShvqSGzgWimkNxLvUj86iAwcZuIkqdB0VaIB7wncLRmzHkiUQpPBIXbDDLHBlq7vp9xwuC9AiNkIptAYlG7Biyuk8ILdynuUM1cHWJgeB%2BK3wBP%2FineogxkvBNNQ4AkW0hvpBOQGFfeptF2YTR75MexYDUy7Q%2F9uocGsx41O4IZhViw%2F2FvAEuGO5g2kyXBUijAggWM08bRhXg5ijgMwDJy40QeY%2FcQpUDZiIzmvskQpO5G1zyGZA8WByjIQU4jRoFJt56behxtHUUE%2Fom7Rj2psYXGmq3llVOCgGYKNMo4pzwntITtapDqjvQtqpjaJwjHmDzSVGLxMt12gEXAdLi%2FcaHSM3FPRGRf7dB7YC%2BcD2ho6oL2zGDCkjlf%2FDFoQVl8GS%2F56wur3rdV6ggtzZW60MRB3g%2BU1W8o8cvqIpMkctiGVMzXUFI7FacFLrgtdz4mTEr4aRAaQ2AFQaNeG7GX0yOJgMRYFziXdJf24kg%2FgBQIZMG%2FYcPEllRTVNoDYR6oSJ8wQNLuihfw81UpiKPm714bZX1KYjcXJdfclCUOOpvTxr9AAJevTY4HK%2FG7F3mUc3GOAKqh60zM0v34v%2BELyhJZqhkaMA8UMMOU90f8RKEJFj7EqepBVwsRiLbwMo1J2zrE2UYJnsgIAscDmjPjnzI8a719Wxp757wqmSJBjXowhc46QN4RwKIxqEE6E5218OeK7RfcpGjWG1jD7qND%2B%2FGTk6M56Ig4yMsU6LUW1EWE%2BfIYycVV1thldSlbP6ltdC01y3KUfkobkt2q01YYMmxpKRvh1Z48uNKzP%2FIoRIZ%2FF6buOymSnW8gICitpJjKWBscSb9JJKaWkvEkqinAJ2kowKoqkqZftRqfRQlLtKoqvTRDi2vg%2FRrPD%2Fd3a09J8JhGZlEkOM6znTsoMCsuvTmywxTCDhw5dd0GJOHCMPbsj3QLkTE3MInsZsimDQ3HkvthT7U9VA4s6G07sID0FW4SHJmRGwCl%2BMu4xf0ezqeXD2PtPDnwMPo86sbwDV%2B9PWcgFcARUVYm3hrFQrHcgMElFGbSM2A1zUYA3baWfheJp2AINmTJLuoyYD%2FOwA4a6V0ChBN97E8YtDBerUECv0u0TlxR5yhJCXvJxgyM73Bb6pyq0jTFJDZ4p1Am1SA6sh8nADd1hAcGBMfq4d%2FUfwnmBqe0Jun1n1LzrgKuZMAnxA3NtCN7Klf4BH%2B14B7ibBmgt0TGUafVzI4uKlpF7v8NmgNjg90D6QE3tbx8AjSAC%2BOA1YJvclyPKgT27QpIEgVYpbPYGBsnyCNrGz9XUsCHkW1QAHgL2STZk12QGqmvAB0NFteERkvBIH7INDsNW9KKaAYyDMdBEMzJiWaJHZALqDxQDWRntumSDPcplyFiI1oDpT8wbwe01AHhW6%2BvAUUBoGhY3CT2tgwehdPqU%2F4Q7ZLYvhRl%2FogOvR9O2%2BwkkPKW5vCTjD2fHRYXONCoIl4Jh1bZY0ZE1O94mMGn%2FdFSWBWzQ%2FVYk%2BGezi46RgiDv3EshoTmMSlioUK6MQEN8qeyK6FRninyX8ZPeUWjjbMJChn0n%2FyJvrq5bh5UcCAcBYSafTFg7p0jDgrXo2QWLb3WpSOET%2FHh4oSadBTvyDo10IufLzxiMLAnbZ1vcUmj3w7BQuIXjEZXifwukVxrGa9j%2BDXfpi12m1RbzYLg9J2wFergEwOxFyD0%2FJstNK06ZN2XdZSGWxcJODpQHOq4iKqjqkJUmPu1VczL5xTGUfCgLEYyNBCCbMBFT%2FcUP6pE%2FmujnHsSDeWxMbhrNilS5MyYR0nJyzanWXBeVcEQrRIhQeJA6Xt4f2eQESNeLwmC10WJVHqwx8SSyrtAAjpGjidcj1E2FYN0LObUcFQhafUKTiGmHWRHGsFCB%2BHEXgrzJEB5bp0QiF8ZHh11nFX8AboTD0PS4O1LqF8XBks2MpjsQnwKHF6HgaKCVLJtcr0XjqFMRGfKv8tmmykhLRzu%2BvqQ02%2BKpJBjaLt9ye1Ab%2BBbEBhy4EVdIJDrL2naV0o4wU8YZ2Lq04FG1mWCKC%2BUwkXOoAjneU%2FxHplMQo2cXUlrVNqJYczgYlaOEczVCs%2FOCgkyvLmTmdaBJc1iBLuKwmr6qtRnhowngsDxhzKFAi02tf8bmET8BO27ovJKF1plJwm3b0JpMh38%2BxsrXXg7U74QUM8ZCIMOpXujHntKdaRtsgyEZl5MClMVMMMZkZLNxH9%2Bb8fH6%2Bb8Lev30A9TuEVj9CqAdmwAAHBPbfOBFEATAPZ2CS0OH1Pj%2F0Q7PFUcC8hDrxESWdfgFRm%2B7vvWbkEppHB4T%2F1ApWnlTIqQwjcPl0VgS1yHSmD0OdsCVST8CQVwuiew1Y%2Bg3QGFjNMzwRB2DSsAk26cmA8lp2wIU4p93AUBiUHFGOxOajAqD7Gm6NezNDjYzwLOaSXRBYcWipTSONHjUDXCY4mMI8XoVCR%2FRrs%2FJLKXgEx%2BqkmeDlFOD1%2FyTQNDClRuiUyKYCllfMiQiyFkmuTz2vLsBNyRW%2Bxz%2B5FElFxWB28VjYIGZ0Yd%2B5wIjkcoMaggxswbT0pCmckRAErbRlIlcOGdBo4djTNO8FAgQ%2BlT6vPS60BwTRSUAM3ddkEAZiwtEyArrkiDRnS7LJ%2B2hwbzd2YDQagSgACpsovmjil5wfPuXq3GuH0CyE7FK3M4FgRaFoIkaodORrPx1%2BJpI9psyNYIFuJogZa0%2F1AhOWdlHQxdAgbwacsHqPZo8u%2FngAH2GmaTdhYnBfSDbBfh8CHq6Bx5bttP2%2BRdM%2BMAaYaZ0Y%2FADkbNCZuAyAVQa2OcXOeICmDn9Q%2FeFkDeFQg5MgHEDXq%2FtVjj%2Bjtd26nhaaolWxs1ixSUgOBwrDhRIGOLyOVk2%2FBc0UxvseQCO2pQ2i%2BKrfhu%2FWeBovNb5dJxQtJRUDv2mCwYVpNl2efQM9xQHnK0JwLYt%2FU0Wf%2BphiA4uw8G91slC832pmOTCAoZXohg1fewCZqLBhkOUBofBWpMPsqg7XEXgPfAlDo2U5WXjtFdS87PIqClCK5nW6adCeXPkUiTGx0emOIDQqw1yFYGHEVx20xKjJVYe0O8iLmnQr3FA9nSIQilUKtJ4ZAdcTm7%2BExseJauyqo30hs%2B1qSW211A1SFAOUgDlCGq7eTIcMAeyZkV1SQJ4j%2Fe1Smbq4HcjqgFbLAGLyKxlMDMgZavK5NAYH19Olz3la%2FQCTiVelFnU6O%2FGCvykqS%2FwZJDhKN9gBtSOp%2F1SP5VRgJcoVj%2Bkmf2wBgv4gjrgARBWiURYx8xENV3bEVUAAWWD3dYDKAIWk5opaCFCMR5ZjJExiCAw7gYiSZ2rkyTce4eNMY3lfGn%2B8p6%2BvBckGlKEXnA6Eota69OxDO9oOsJoy28BXOR0UoXNRaJD5ceKdlWMJlOFzDdZNpc05tkMGQtqeNF2lttZqNco1VtwXgRstLSQ6tSPChgqtGV5h2DcDReIQadaNRR6AsAYKL5gSFsCJMgfsaZ7DpKh8mg8Wz8V7H%2BgDnLuMxaWEIUPevIbClgap4dqmVWSrPgVYCzAoZHIa5z2Ocx1D%2FGvDOEqMOKLrMefWIbSWHZ6jbgA8qVBhYNHpx0P%2BjAgN5TB3haSifDcApp6yymEi6Ij%2FGsEpDYUgcHATJUYDUAmC1SCkJ4cuZXSAP2DEpQsGUjQmKJfJOvlC2x%2FpChkOyLW7KEoMYc5FDC4v2FGqSoRWiLsbPCiyg1U5yiHZVm1XLkHMMZL11%2Fyxyw0UnGig3MFdZklN5FI%2FqiT65T%2BjOXOdO7XbgWurOAZR6Cv9uu1cm5LjkXX4xi6mWn5r5NjBS0gTliHhMZI2WNqSiSphEtiCAwnafS11JhseDGHYQ5%2BbqWiAYiAv6Jsf79%2FVUs4cIl%2Bn6%2BWOjcgB%2F2l5TreoAV2717JzZbQIR0W1cl%2FdEqCy5kJ3ZSIHuU0vBoHooEpiHeQWVkkkOqRX27eD1FWw4BfO9CJDdKoSogQi3hAAwsPRFrN5RbX7bqLdBJ9JYMohWrgJKHSjVl1sy2xAG0E3sNyO0oCbSGOxCNBRRXTXenYKuwAoDLfnDcQaCwehUOIDiHAu5m5hMpKeKM4sIo3vxACakIxKoH2YWF2QM84e6F5C5hJU4g8uxuFOlAYnqtwxmHyNEawLW%2FPhoawJDrGAP0JYWHgAVUByo%2FbGdiv2T2EMg8gsS14%2FrAdzlOYazFE7w4OzxeKiWdm3nSOnQRRKXSlVo8HEAbBfyJMKqoq%2BSCcTSx5NDtbFwNlh8VhjGGDu7JG5%2FTAGAvniQSSUog0pNzTim8Owc6QTuSKSTXlQqwV3eiEnklS3LeSXYPXGK2VgeZBqNcHG6tZHvA3vTINhV0ELuQdp3t1y9%2BogD8Kk%2FW7QoRN1UWPqM4%2BxdygkFDPLoTaumKReKiLWoPHOfY54m3qPx4c%2B4pgY3MRKKbljG8w4wvz8pxk3AqKsy4GMAkAtmRjRMsCxbb4Q2Ds0Ia9ci8cMT6DmsJG00XaHCIS%2Bo3F8YVVeikw13w%2BOEDaCYYhC0ZE54kA4jpjruBr5STWeqQG6M74HHL6TZ3lXrd99ZX%2B%2B7LhNatQaZosuxEf5yRA15S9gPeHskBIq3Gcw81AGb9%2FO53DYi%2F5CsQ51EmEh8Rkg4vOciClpy4d04eYsfr6fyQkBmtD%2BP8sNh6e%2BXYHJXT%2FlkXxT4KXU5F2sGxYyzfniMMQkb9OjDN2C8tRRgTyL7GwozH14PrEUZc6oz05Emne3Ts5EG7WolDmU8OB1LDG3VrpQxp%2BpT0KYV5dGtknU64JhabdqcVQbGZiAxQAnvN1u70y1AnmvOSPgLI6uB4AuDGhmAu3ATkJSw7OtS%2F2ToPjqkaq62%2F7WFG8advGlRRqxB9diP07JrXowKR9tpRa%2BjGJ91zxNTT1h8I2PcSfoUPtd7NejVoH03EUcqSBuFZPkMZhegHyo2ZAITovmm3zAIdGFWxoNNORiMRShgwdYwFzkPw5PA4a5MIIQpmq%2Bnsp3YMuXt%2FGkXxLx%2FP6%2BZJS0lFyz4MunC3eWSGE8xlCQrKvhKUPXr0hjpAN9ZK4PfEDrPMfMbGNWcHDzjA7ngMxTPnT7GMHar%2BgMQQ3NwHCv4zH4BIMYvzsdiERi6gebRmerTsVwZJTRsL8dkZgxgRxmpbgRcud%2BYlCIRpPwHShlUSwuipZnx9QCsEWziVazdDeKSYU5CF7UVPAhLer3CgJOQXl%2Fzh575R5rsrmRnKAzq4POFdgbYBuEviM4%2BLVC15ssLNFghbTtHWerS1hDt5s4qkLUha%2FqpZXhWh1C6lTQAqCNQnaDjS7UGFBC6wTu8yFnKJnExCnAs3Ok9yj5KpfZESQ4lTy5pTGTnkAUpxI%2ByjEldJfSo4y0QhG4i4IwkRFGcjWY8%2BEzgYYJUK7BXQksLxAww%2FYYWBMhJILB9e8ePEJ4OP7z%2B4%2FwOQDl64iOYDp26DaONPxpKtBxq%2FaTzRGarm3VkPYTLJKx6Z%2FMw2YbBGseJhPMwhhNswrIkyvV2BYzrvZbxLpKwcWJhYmFtVZ%2BlPEq91FzVp1HlQY1bZVLqeNR9SAUn6n0E28k%2FUuGkNpP1DBI5ch%2FEehZfjUQ9aE41NhETExoPT2gGQz0IhWJbEOvTQ4wgcXCHHFBhewYUiFHuhRSAUVmEHeCRQHQkXGFwkAgyzREJCVN7TRnTon36Zw3tPhx4EALwNdwDv%2BJ41YSP4B2CQqz0EFgARZ4ESgBHQgROwAVn9GTI%2BHYexTUevLUeta4%2FDqKrbMVS%2BYqb8hUwYCrlgKtmAq1YCrFgKrd4qpXiqZcKn1oqdWipjYKpWwVPVYqW6xUpVipKqFR3QKjagVEtAqHpxUMTitsnFaJOKx2cVhswq35RVpyiq9lFVNIKnOQVMkgqtYxVNxiqQjFS7GKlSIVIsQqPIhUWwioigFQ%2B%2BKkN8VHr49HDw9Ebo9EDo9DTo9Crg9BDg9%2FWx7gWx7YWwlobYrOGxWPNisAaAHEyALpkAVDIAeWAArsABVXACYuAD5cAF6wAKFQAQqgAbVAAsoAAlQAUaYAfkwAvogBWQACOgAD9AAHSAAKT4GUdMiOvFngBTwCn2AZ7Dv6B6k%2F90B8%2ByRnkV144AIBoAMTQATGgAjNAA4YABgwABZgB%2FmQCwyAVlwCguASlwCEuAQFwB4uAMlwBYuAJlQAUVAAhUD2KgdpUDaJgaRMDFJgX5MC1JgWJEAokQCWRAHxEAWkQBMRADpEAMkQAYROAEecC484DRpwBDTnwNOdw05tjTmiNOYwtswhYFwLA7BYG4LA2BYGOLAwRYFuLAsxYFQJAohIEyJAMwkAwiQC0JAJgkAeiQBkJAFokAPCQA0JABwcD4Dgc4cDdDgaYcDIDgYgUC6CgWgUClCgUYUAVBQBOFAEYMALgwAgDA9QYAdIn8AZzeBB2L5EcWrenUT1KXienEsuJJ7x5U8XlTjc1NVzUyXFTGb1LlpUtWlTDIjqwE4LsagowoCi2gJLKAkpoBgJQNpAIhNqaEoneI6kiiqQ6Go%2Fn6j0cS%2Ba2gEU8gIHJ%2BBwfgZX4GL%2BBd%2FgW34FZ%2BBS%2FgUH4FN6BTegTvoEv6BJegRnYEF2A79gOvYDl2BdEjCkqkGtwXp0LNToIskOTXzh%2FF062yJ7AAAAEDAWAAABWhJ%2BKPEIJgBFxMVP7w2QJBGHASQnOBKXKFIdUK4igKA9IEaYJg%29%20format%28%27embedded%2Dopentype%27%29%2Curl%28data%3Aapplication%2Ffont%2Dwoff%3Bbase64%2Cd09GRgABAAAAAFuAAA8AAAAAsVwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABWAAAABwAAAAcbSqX3EdERUYAAAF0AAAAHwAAACABRAAET1MvMgAAAZQAAABFAAAAYGe5a4ljbWFwAAAB3AAAAsAAAAZy2q3jgWN2dCAAAAScAAAABAAAAAQAKAL4Z2FzcAAABKAAAAAIAAAACP%2F%2FAANnbHlmAAAEqAAATRcAAJSkfV3Cb2hlYWQAAFHAAAAANAAAADYFTS%2FYaGhlYQAAUfQAAAAcAAAAJApEBBFobXR4AABSEAAAAU8AAAN00scgYGxvY2EAAFNgAAACJwAAAjBv%2B5XObWF4cAAAVYgAAAAgAAAAIAFqANhuYW1lAABVqAAAAZ4AAAOisyygm3Bvc3QAAFdIAAAELQAACtG6o%2BU1d2ViZgAAW3gAAAAGAAAABsMYVFAAAAABAAAAAMw9os8AAAAA0HaBdQAAAADQdnOXeNpjYGRgYOADYgkGEGBiYGRgZBQDkixgHgMABUgASgB42mNgZulmnMDAysDCzMN0gYGBIQpCMy5hMGLaAeQDpRCACYkd6h3ux%2BDAoPD%2FP%2FOB%2FwJAdSIM1UBhRiQlCgyMADGWCwwAAAB42u2UP2hTQRzHf5ekaVPExv6JjW3fvTQ0sa3QLA5xylBLgyBx0gzSWEUaXbIoBBQyCQGHLqXUqYNdtIIgIg5FHJxEtwqtpbnfaV1E1KFaSvX5vVwGEbW6OPngk8%2FvvXfv7pt3v4SImojIDw6BViKxRgIVBaZwVdSv%2BxvXA%2BIuzqcog2cOkkvDNE8Lbqs74k64i%2B5Sf3u8Z2AnIRLbyVCyTflVSEXVoEqrrMqrgiqqsqqqWQ5xlAc5zWOc5TwXucxVnuE5HdQhHdFRHdNJndZZndeFLc%2FzsKJLQ%2FWV6BcrCdWkwspVKZVROaw0qUqqoqZZcJhdTnGGxznHBS5xhad5VhNWCuturBTXKZ3RObuS98pb9c57k6ql9rp2v1as5deb1r6s9q1GV2IrHSt73T631424YXzjgPwqt%2BRn%2BVG%2BlRvyirwsS%2FKCPCfPytPypDwhj8mjctRZd9acF86y89x55jxxHjkPnXstXfbt%2FpNjj%2FnwXW%2BcHa6%2FSYvZ7yEwbDYazDcIgoUGzY3h2HtqgUcs1AFPWKgTXrRQF7xkoQhRf7uF9hPFeyzUTTSwY6EoUUJY6AC8bSGMS4Ys1Au3WaiPSGGsMtkdGH2rzJgYHAaYjxIwQqtB1CnYkEZ9BM6ALOpROAfyqI%2FDBQudgidBETXuqRIooz4DV0AV9UV4GsyivkTEyMMmw1UYGdhkuAYjA5sMGMvIwCbDDRgZeAz1TXgcmDy3YeRhk%2BcOjCxsMjyAkYFNhscwMrDJ8BQ2886gXoaRhedQvyTSkDZ7uA6HLLQBI5vGntAbGHugTc53cMxC7%2BE4SKL%2BACOzNpk3YWTWJid%2BiRo5NXIKM3fBItAPW55FdJLY3FeHBDr90606JCIU9Jk%2BMs3%2FY%2F8L8jUq3y79bJ%2F0%2F%2BROoP4v9v%2F4%2Fmj%2Bi7HBXUd0%2FelU6IHfHt8Aj9EPGAAoAvgAAAAB%2F%2F8AAnjaxb0JfBvVtTA%2BdxaN1hltI1m2ZVuSJVneLVlSHCdy9oTEWchqtrBEJRAgCYEsQNhC2EsbWmpI2dqkQBoSYgKlpaQthVL0yusrpW77aEubfq%2Fly%2BujvJampSTW5Dvnzmi1E%2Bjr%2F%2F3%2BXmbu3Llz77nnbuece865DMu0MAy5jGtiOEZkOp8lTNeUwyLP%2FDH%2BrEH41ZTDHAtB5lkOowWMPiwayNiUwwTjE46AI5xwhFrINPXYn%2F7ENY0dbWHfZAiTZbL8ID%2FInAd5xz2NpIH4STpDGonHIJNE3OP1KG4ISaSNeBuITAyRLgIxoiEUhFAnmUpEiXSRSGqAQEw0kuyFUIb0k2gnGSApyBFi0il2SI5YLGb5MdFjXCey4mNHzQ7WwLGEdZiPPgYR64we8THZHAt%2BwnT84D%2Fx8YTpGPgheKH4CMEDVF9xBOIeP3EbQgGH29BGgpGkIxCMTCW9qUTA0Zsir%2BQUP1mt%2BP2KusevwIO6Bx%2FIaj8%2FOD5O0VNrZW2EsqZBWbO1skRiEKE0DdlKKaSVO5VAuRpqk8VQJAqY7ydxaK44YJvrO2EWjOoDBoFYzQbDNkON%2BUbiKoRkywMWWf1j4bEY2iIY1AeMgvmEz%2FkVo9v4FSc%2FaMZMrFbjl4zWLL0%2BY5FlyzNlEVYDudJohg8gPUP7kcB%2Fmn%2BG6cd%2B5PV4Q72dXCgocWJADBgUuDTwiXiGSyZo14HOEQ2lE6k0XDIEusexDzZOMXwt1Dutz%2BtqmxTvlskNWXXUQIbhaurum9GrePqm9Yaeabjkiqf%2BbUvzDOvb2Y1E%2BEX2DnemcTP%2FzLcuu7xjQXdAtjR0Lo5n4%2FHs%2FGtntMlysHt%2B29NXbH6se%2F%2FWbFcyu%2Br28H0MwzI30DYeYTLMXIA2EG8QlHpAsyS0EfEToR0a3utIxFPJ3kiIHCCrZ66b0e2xEmL1dM9YN%2FMwS5p01N5jMX%2FBLKt%2F1R83l0LyC29M6%2BiYxo%2FUNg%2FEF7c2WyyW5tYl8WnhWg2%2FhyySbD5UhnDyS7OcU0dnrFw%2BDfGdI7v4QfYIIzOMq9hFtY55gmvC7jZ2FK7sEdrn6IXBuucYhjsGdQ8z0yEbWkkczjjsE5hNAIZrPx2zOLZDmKNXcXtg7EMqidAEEWg%2BSJCBBNwxvxJfc%2FbZa%2BKKf%2BxoKZybnq5vaqpPTye7CiF%2BZFjxZ8%2F7Qij0hfOG%2FcowPA1rT1l4ymWnrKmxxqfErTVrpgwPlz1kC%2BOy8NMDz6c%2BIO38K%2Fx0xkPnLW8Kx6qGAoQdL%2BTD9V9rb%2B%2Fctn%2F%2Ftrxz8dUrZrD%2Fzk%2FferF0cNt1BzctmX2FZPXt%2FjnFCQNz4Ah%2FiKllGiCMs1w5Lkg0kiEwj6VTXCDKsX9rMpnvIj9pcDecXAIXMnqn2dTUbN6w0XQ9ue6FV%2FnnXCH7S3lPWGltVcLsH75ub3ab7A8M28caNrIeOr3o5Q0yFsYL80xaa0EY%2FUEczV7icUMY5pnelAkmUAXmHYjvFWFGxuqlSaow3OM%2B%2FiYY7%2Fl%2FhVELF4EjRqNR%2FbvRbOY%2BDUGzGR%2FOh3EqmE%2FugIQQguGt%2FeMYz%2F%2BL0cimjeZfQDI3phXMbMQsqH%2BCjwVz%2Fhf4idHovgVmB8gLvjbicDcC%2FNypP536E%2F9N%2FpuMibExdohBmNwyiaZdJGoigos7GpF222xrfnZhML%2F7Z%2BylaqP63Hr%2Bm7bdUkQ6%2F2cXqdfmvwixY%2Bs2ksXFeXcE%2BiX0Z%2BIow76DBNgjJ7TOdUK18iPsPflfQD%2BDPsZG2Aj9VmKMMJ4fYRrhIaxhTDR0Elh2vA6h%2FAE6xUb29mj3sjmL72petXjejPy%2Boel60M99tFduCI59N3221xe7apOvxs6aHs7vab1IqY2tv7q2xsHeHGml%2FcV06u%2F8S%2FxTjJ%2BJYc0bWEX0ukW6YmIbGkJRMdjJ9mYIH5QIdJF4hvRGyK7cC7ctImQRcUET99fGXOoft35GYLMQu%2Bg2smnkgZUrH8AL%2F9Si217IssJ916nv14ZrJrvdxLkQvrvtBcjgPC0NXOicO8Qf4mcxPqh3hgUw3DDfdvLJXngg7N3dN2zbPJSaed3OfZnMU7dvmznp3C3bruO%2BNmue0LFsy7S%2B6265%2BfCKFYdvvuW6vmlblnUI8xCXp37CrOZv4B9gauDBlYp7adcUXB5DNCwYImlXOJJKkAdvExXxVvKEYnCo%2B3eIskP9qrrfIYs71CccBjfXRC52udTHHdaP1A1ui%2FVvH1otbrLrpNXBsGX5B89QghDyimlvNB2KfkxZ5C9%2Fem3%2Bd1%2Bd%2F%2FIfFp2%2B2Oxn%2Fs%2B9n%2F79p39S3s8idN6g0yZObwJOgKUpNB3GyU0Ls0PbRzIRq4lcarLKOJBkLRzJQD4j2090XrbA7DW8K3jNF5hlGS5e4V2D17zgss4T20egOJte5iD0bReM9yjTxnQxCRj3c5kFzGJmGbNKmwGw39IJDJcXJZGMkaAB4jyJAKw0jt5IAuIE%2BA%2BU3cVAZZrq9zhDyBrU8oosuxcGNTzCKJfla7JjNVmuSb%2F%2BtuzN2H%2BX4vlB%2BPpdfMXXmuVsNiub1T34SFbjYw5itEvVi0K0Nt9pNJUMI7SLGRhf2xipfCYf8z5OdlGKayOucFeVPeS%2Fdbo3lBrbSMmwUiQN5%2Fed7g0Ds1s17IuZC5kNzM3MZ6EWCa0DtekdJfAxz%2BR%2FOX28sND7yRMTBcf%2B%2Bs8mQCQWHya4qBv%2FufeMoWyslPA9DtMxUknxkH%2FyfTnm2CMYzs%2BCq3r7PxY%2FMXomrvTEsRpfEGHa%2BWN8E1AHjElb7d06ddA7oK%2F%2B5Mdsv9EtPms0jv0Z5kf1FqPxWdFtfFr0kHfgDX0Y%2B5PRSG7RUj0tQr7rmfX8DH4G5W28kKeJLtmQsQkuwMP1pk16EV4sl7vrMJATfyUWo%2FGwEco4rh4XFQgaiUX9qxZHrMQqKnz%2Fc2d8b9TysYrAuXpP%2FRf%2FGr8b1qwwc5a%2BeuLa6S6sneNXToG2XrEJi4R5SGs8Sq2S3d97bsfCRaTdaLwKClRHt37mkudvXbjwVrLhuYeGhh56bvfQkHpk2CwvwClqgWwuBfndC3c8dwmstj81KkagcUgbfPY8Zje0W%2F82VPWJHmSq6pP8hPWpotc%2FEexDOK3qU%2BwngPhOCiO9MJRm8TJefjelrzoKnG2Bn%2B1NCUmPE4gHFmBN9jrTigRIpsACrc9Gstg58ULkp9467%2BGf%2FeFnD5%2F31lNrt2967dhrm7bzI%2BVT5m%2BfzKhvf2MzpICEm79Bopkn07lt1762adNr127LwVqQLdJ5%2BlpQDcvHPQtVY5knhYrK6q8%2FJsiP6EuhGZdFdaNszjvpqvc%2BPI0CdjN0AXsFOC3ZfALDJwr4q2Xq%2BGF%2BGNbsxUg5NLLIEXi8otcDQcUts0D8eQ1iVDRAMBTsYiNdRIxE09EIBJO9A2xqgERTaW86BUFn0OD2xFO97FAgFhF6OoQ7prYt4XwSeUgQHiJyDbeke9IdQntciLQ1FlJMaYcUNvZBg%2BFB1ubjlnRNvl3o6IEU2w7fdNPhm%2Fhh%2BFLysUu6%2B%2BDLHkOkrSHYEjH0tEPe7WdD3uyDgvAgK%2Fm4szFFR7ch0toUgBTdWHr7EpaWru6%2B6dmbbnqWEbV2EtxAsXiZAPTtGPSbHsotI2leoM8TePEqgSQprs7AGFf8kuOkPdZPXGb55POAW1d%2FjLST9v5YflasP6v%2FCO7%2BGNAPC2BMZWmsOjp2NNbfHwMCJD%2BLPVL%2BD%2FOYlWEEI%2F9jpPddOFkB5d1GSuKZYggmCCd7JUxD7EXAzxyirYnNDLdDZoFdx14kivkvGc3579Jm36reTTvDgBnaO6vzyQ6chQmlsMoIkIQ2%2BbBDWBud1Va4pcCn8CPqxlh%2FfgtG8IPaPH8C5wk6%2FnZDv69jurV5QhtwE0x2iqOsj9Mx8B9%2F0EaUdiPfOYYDCi%2Fq9jhWRuupMDEU0%2BCtX0sDFxv07T%2FK5niBPqN9%2BtQjgEc31NGCXFeMcCEuQBIc%2FBK4CO78u7EPYvl3yaEfK3vcb6qP1R2tI7vUjVDDUdKubsSrNjYKY1qBEa2P50SJoaXiksIoLiCwnxS6EBuBde87botNfdEWwYvF%2FR0%2Fu5yCqhGeEOR2ynSeyXjt6ka7neyye8kryBSWE52y%2BRBgogrXPZ8E1yIHoHIFUM%2BAbJhE7lbMtt8ApL%2BxmZW7PwbjAO0fAVoXQOuiSP%2FksIVdFZ0aulsamKUzwPZ%2FNYDMJRBPCxsBqLzqHyneXF6Ej9HlIFo7%2Bpg%2BjUb3unRmGpstGkm6etOuDBGA5wCMefp1gTHcdZlvPBXlOslvYTp1cd8UjYLVd%2FJ5awNrIOKLnIt9MD9qdrKrWCvA6ALm3QV9VrsPm60Q7%2BRHJHP%2B2hqfugo%2FMvI2H%2Fmqr4b9tFnKSRY1Y5Ek80Nm%2FWIhr1ikKnxGz9TWXrokf9xwujfvcOTtNTWnxd0F37Y2W79tteBqZ4G5qLCuomw%2BnSr28QESCRVLTyYKILGJOPfcnaIFOsewhRdvv%2BrWa%2FWih0vlbX6Zb75T5C0qNKVFvH1QL%2FvazSWgC2s6oWXXIuUxQelKiJbowuJDQViatLmLijg9CQBMg8WiPgiw3LEeYRmm5f%2BXdnvkDnxLLjMLxtvX74C3OlwPQqx4xwIdpPx38LrlDphiyWUWHWKAzzxurS%2FxTo%2BP5wGFak62ap1PVFFN4v%2Fy%2BxuR39WnIO7lsWfwgVsK17wxrs9K8ltIKuhkw7f%2F6dhK6gQokFKhWX3urrjk%2FrnI0pgfpGMeuQIUaEM7%2BGF5q2iMkCaMQwxxOzcvU0eXbsnS9XknXvP7Gtw5dwPXlFu2ecvSHEZgNDsU6x%2FGdXBYXyOQjzZReSedeEPY6nEv9gJR4oBQJtFO6Kd0fwC6BO4LNHDeBujB6dSNcUQC9zIv2LnAzGk99bUDrdFY%2B9yGFQtEo0GQPNv6vS2drj4%2B1jHbv3aJSMUWP%2BQTZrmbNTjU8wyG%2FiXNNpskybLcJ3CiTF5Ir%2BJYzmJwE0mSVhlxbtbmvweB3ulB6Til5UuUZydpgiFVeobhU0WaBqpJ198d%2B%2FXeNRTZ9%2F1OPfG7%2B2hwzd5W3D%2BhmyjsRcUg%2F%2BCavb%2B%2BVh2ls3L7zT%2FetOnHNxeerv313vzLVqPai4nJv%2BK1FC6040%2F4udw7sAb3laSg0XCkAAs0npBO6VJabS4Elk%2FU%2BD4gTXW%2Bj0wnrMlqNamq4tMIYB87tE10i0FR3LZNhJsb7%2FR561btmes8YBCRkhYNByRtKd55mqTas9FYhJnbRGHuOh3M4QTdgQSqmgRxuzGdSvZGcbMxNQGk5C3ebLjoXIOFM4l%2BWKHmLTJwRv9E8GWJ6dYvf%2FFmEyEGr%2Bgyrr1p5zrgkz0Cw2j94Hv8Jdx7dIVegBSNtgsqGsRQEYiIBoXwD0LNvQ5d7s5Z00QzwNhqZA0b%2BtMG1tQq5nd84uq8R0zPvX35G8uRaze4jcOHzz0w1%2BQ2BIRvf6J6Kgatnrbiem%2BCFvAxfkrndzD9MFPP1GWTUHclpASUkCNAQkpCCcCgDSUDAhDZ%2BCuEkgn8J7i9nMA7pA4lISappxILKfAeSAbIcSDuN2bJcfZILqeO5rLs0MnngSHYRdrHjmaz7JEsEPw51ZqDJDmUIOZIe34WaQeegNsJn1qz8AIpT3yCjyEih%2FxELkuJ0lEMYTLVCiWpo5oYMleMH6USyYJcD%2BuOe%2BkWKpn1Qns34iyYDjkSLvgnZXcgVQNeqINXr48m3iS7cjm8tedyY0f1QvTnHHdsrKby%2F%2BSSbPY8%2FNH6vpl%2FEsq3Ae4ZU1HC44KFiI9o7CEgab%2FRqHbj7s5KAg06s39ZP%2FzxI%2FmVuF%2FTbTSy%2B3Fb8If9%2Fcv7%2Bwt91yy8RfP1QXtW5RzQn7qIiZyuFM5QfJ5E9uVnqT85TanFx0lkP3ukBAMprvsRyi%2FC8NAJL1xbIIirSvnSj4O5netb4JxmNANHPssHAcHMHsFRgEug816gDBeMbdfiuRcghqYcm0%2BXxx%2F5IAEtN3fqFF3LzAXqwoT0PN0OVTNqxo8sxMkd5Ig6k79Zk7VxxX6gMLOZFQgvpW2RrMW1D0BDihaXQ9wVRoBxPLfpknmkeMtoB%2FqM9cRc9IqmMD2XUmdZ7GSRKPUZvChf8BoykriM2MnKYbOHX8R7cLdNCxSFFVQqoYswnlWtlFS2mNkhswVpZiQW1J%2FUKFfipHGlUkM6UKBhMz1istELIHJLMSctu3ugzfaVSOjKvUgc%2FTHK4Sdg2Wscz69leKIkkrwuuWiOe9yGYKQXRumkC3qbRcMwrvhjNXgdZk3RxAUEhuSPvn3nnd%2B%2BU%2F3vlVOmrJzCD8JLxV1OHRjrZifbcFDOuRNTGqdgQm1tSNJ2OcQ04YiEXuxtII1ECSQRoQGYioEsgCfchB4ghAtw7FfJre4WZ9hkVi9MtjuWqtdNDlpMrfEG9fOT6q21okg%2Be4As38MfGquNt7oUws6Ysarj1%2FefE%2Byst86YUVNvDdts3Pv5c8m%2FaP0C%2Bf8%2FQb%2BIMnGq09BgwN01oIOAnAdagI8mBSrqk1gxTDUBOtk2ousEtBH2z4Ir2d3f6k8PXXVlt2qN9RODxRuoJT%2Fv27wm09jRYVc%2Fe%2B%2Biyx2tyzJb%2Fn3J0htXP87eSsQaf2Ly0s6Zmxela88REy1cf4273mI3iXNJ7KxrZibOm9xm6rl4fqy%2Ft27smU8tOfdW2ucBzg2UfmOIVyLIl3kpYlwphDISTXJXsctmiDtN7fNV6zelgxwnWxsVr83Aj%2FS5ki1jL%2Fa0GC6%2B2L6Um%2BaoddlNFuj%2BbJ8mH%2FiaLh8I0%2FU51NspIEfq0dohwyFXKgm4NggwQ4rRhCOUFtxxo8XnitT4cnGfT93IS8FaT85XE3H5LMY4zIEPL1hw443wz%2B1UmhTJyJGxZzw%2BwsKkKZgUiVtKOKMEb2AKHTv61FNc01PQFwKnvsZ%2F9pPA4RKTASWahmh%2B8MxwzHxKy74IRn5LGRjsPUUwTu64UYNY38caqd7HKucZ%2FtHnODtENw%2F2UfHRMaq1UUPDJQ0OKkWCeet5fYOhII1VRz8%2B%2FElg5j4Gxur3J8o2PJ4rg%2B2d08T%2FfwEzSVbyZ9XPro95T477lRKqUSRXQnauHNsISAl27oWi6Fv9z48JMv8r%2FaMMj8onCP%2FDuDZOuN%2BGPPr%2F%2Bp7bx%2B7JlbYdppcNhzKU%2F1Px5aiaGDn%2Fs1iGMaBcleKUo%2Fv9rcxkZj7DBEKOfrayytXNLYiUdBY%2BpleQXdnscKlQcpzuWluxsieeyuXIK6SdxozitWyGOV3vOHHjguyCQ6fpIYy2JwvrQEF%2FQa9Pdf%2FQqOSqCiE%2FEE1%2FXIVKTc2tzWbHnimrEd%2BVyz311Ml3P0GVTj7PD5aDnsvCvH36alEaPMePcMegXs7x8igTu4B9v7G9vTHvhCu%2FkzIdx%2BBxC0ay9zRSvoS0F2lIxI%2BX7klU63I40gLQ3w5ep5na%2BSFnba3z5D64zv%2BQtM4n4ffG3tq4aNHGRfxgrXPMim%2B5487abL7xhdseIRn1KDl%2B7aINixdv0OD%2BJSPwKf5%2BxoP6aiTeQIDVlIhMcL1H5R9PYXvprs3fv2bO7MOplCmweuiq2JRZ1zz%2B9a%2Fv2PH1Hfz9236w%2BZrPXvWfAxlj4NLLHpq3c%2FPQ3uvmvbrjG7fe%2Bo2y%2FcLdtE6VUlXi0ASb1VLUBVSUWSU4HdvAraTyS8xzM8NxvxFkXV6pUVRiJwcgC5zEeht4rwcp7ki0k41G0qlQhG1Vzlq8alEmnFi58caB5Q9vn988MLhqyVlHvLEWjtQFeupdiocF%2FtkkOGPW2ibWaBTkeZ%2FdvPWazXfOnnvL6jkRXpi85sFzZt%2B55ZptW3bl1cCCHZPD06MhySha7UFzjcjbp8fOecFCirzAG%2FyVjBX6OFIaadSjQq1nNhyIe8tVbaaSdHlXIWKacMeuZA1uxS95zILhyrxAdsXTL6m7kNQlx2P9uZf2qhufePFFbpI6%2FOU0WcP99RrCsrwseVot5mtytpf6Y0gm9sdeyKnPQ7onyK4nXlR%2Frg7H95M1upzu89DH6pgUcikoiihJ6NJKmRxV1x%2BMJiOA3YwhDRQrWU0u%2F0rvq0VYXnyCwsLeTJYBq3dAtJDavuzyoVpzZ99Z0%2Ba0uoiFH%2FxcqgDR7rUFeOrUn6Cywb8ZeNMbhLV5ugP9l0zv9UN5b5mFkjzxUcpPJCn3V402pRxtJd2GrnLdhtVk9ZSZh9W91fCSH5B7ofxPiWL%2Bj3D%2FuwhBRdyAyozeZwvQzs79soi%2BBKSnafLviZCcfrpBpLyimfLfTyJtbyruIQKD01tUwJyKEo%2FybaxkSNFUMdMkhQoJyRBQFhnUkDQSXhTM%2B3NmY0EDM7ffLIjqWEGt8lCO6mLia3PukFnghosJD5p5SIho%2FVDkzQfLE%2BIrYoJXkD19pdP7OwG%2FvoIUtagiWiZ4PAFTHHlTVhRZ7dYmPar%2BNJ%2B8JhmR6DFK5DV1foHoLNO%2FpHrvZfmWZ15RQlwvoVDKhCWNK3CCch9lfFBuAqUgpFSShmNaPj%2Bi5%2B%2BWZfKeViJfW5HnUakVL4UCNVkA4%2BETfIqx4B5xSaP2L1yn0zn2ltPn4%2BOqZGmwwEVCaCSqG53ldtL1oLGAhdMLd09MpCCF6tD6ZnAZBY9hDaYsP0jzZ0j5ZjKsF4i1UmLuhbJMCnYJPt5VwFNvmZawXjEvLJqIH8STonZjq7BZ8gKgR20C9MDFqJAX1H64QW2NEup6qgzLP8cvppL%2FNNTOBTCJABOHeWoXzLhw4Wuy7gaBtjKr9kgKq8ZlRYBS32Lpxc8vIhpNDTfyNXWybMJbn2RyQ5EmWc2QF9wmSZ0KYCE%2BcPuYO6b15Uotj2Kd4MItLS7gtFbkTdrFND6pvEZqv5Yv7jXAus7Pg7avo7KDot50NX3CPkP%2BKps8J9%2F3mGQIteY%2FLGPC%2BL7872SPR2br5fy8MtKBMHedGuM28%2FMZmPJMrGgi3Gb1S%2BSi1%2FL%2FzrZwO9XH1ce%2Fz7ZQ1WSoY%2F%2BpMb5FT4ua0Wm%2BJf%2F298nFmChEQ%2BTi71est4mq9VYI6RsymoRJKYidElT2FGnDTZvqtfhGAFTbeqEw68GqtfmbVa%2F1IFO1%2FjdWr%2F8BDRRtQh9XNjubEm4aWVpVonpTGR7PVGc%2BKJNoBIWF7kYi4gUV3r1U6723i6TxUl3n3%2FtM27aZfKb7THiHW9VzFSwHJ05VfK6Ar7kaB0XgPPE0BSkSFKsBUpaLihEWoA9wBt8qirh2VSOkZwXEwyrxZ5jyt2rJmSo9gX7cg6jsEUGJU9z9xJPOEM3uQQxKgkh35DNATnVyrmJ3mbCNyIB%2Fyox4wH1bg2DwN7q9kov4pFqny8oSm3RQbGgJ1QQTs6ZMLilOVYJ9v6Wha3HcJ9jddsXp9YhGUXLXt%2FqMDnvLpPNTXfNa60z5%2FyjXQOMq%2BlNmwh5egpYrdfZQZV9rI47xlRkuyTjpzsmCBSWNkAXVoK8sgYWqQJWbo1RLo6QH0YW6pxqfCnRgkd%2BRiFjUQUQ7poIaYoakgXxwFd9BuuI38H1xBxXSFb%2FpBDIKQFn7YB3dB36l7sG1FLaKiBdp1KxLvfswap%2F30lnVESgNnvjbUoT6w9N%2BXoio0qcYOIM%2Bheg940YimsucQVvli9NEcft2UZwGQwLuilj1fFr1i3NP94X%2BPE7Hpvtj6lBJfJ4R6NvWiaL6MgzWHxiN66DExa%2BdAdAbMYX6HVF8A%2B7rjEZIXAVbDe7PVI9rmN69JOLV1DOSvRPxWNPZBZf%2FNf%2BNy65BhYxxxV%2B77XJ2wfQ389%2FIQPgajXbwMsuAz%2F0IaQcXJavKbRqR2IqyZruXjVC2%2Bhdee%2F5vdnYOedpmVtR3NGXldxSzDSIiBVpkGb9by89UpEPKrSLZmyFDzMab%2FwXl2CNe7s%2FqCtTvWgG5kpBmCBlSzDS%2Fr8N4uwBwohRW63JTS1y32f0TQsPfXVGEHQrV8%2FNCfiOUVirYcBbIeA2%2BiF68rQIo3B%2FS628vYESr79ehzS7Q9LEL9UXmik9XVHb1yBO3Ngvt5935%2Bk1efkV51mzzrM0LL3%2F20avnwMeKuWyOUZg2TasSqZ%2BKcZQiOn1Iu2Vh497ALUVZiCKt%2Fgh6IvTIj1ZLRjWAkpHKOKovNwp00eqPROiAbiNEKieXwMLcXhVJ1%2FuzmLP4tfxaHR59cBdJVG1kTAgl9ze9QKUEQ946Hkb%2BokJ5JRDyf54Axur1D%2BWS49cLr0tTPEu7UmXrxcSr3XNvumv4yXzInXKH4F7Tc7p17Zt%2Bt%2FqW2%2B93k063X7VW6lALxTY7i1nBXMxcxmzQbabxz%2BtJo%2BwijYaIGMNS8AoSMgAPt84DdHOoMPfjXhF%2BkuH1tZvuFQrRCN07xGcXRX9MYxYchDe5BcHj%2BZ4i%2B42WyPc8Xofi7bbZJN5nJLJ5qr6IqRtzqNlM17SpFsnkEyTWoABEjz4JXOQvzWYuwdnV5LNGOwTM5v9r4RpQ8ZXsYodks3o31JBlzbYtNotisnm22MxiwGFXam5oN1n0TA%2FhRvshvTSDwHff4nNzRo9Dum6PaJbMXzDz%2Bx%2BFkj4L4bFNBb1asqsgH7Dyh4DvbkPtf5yMDKzEwyoaESMSNS9P9gJVA3%2FRTlwoMwZvxECFWxIPNw9gi01nOHjP32esZTtmXHnxvZd8ZtakqQ7ekajbXetpNa6ocTVxJtY%2BuSe69OLz77zh5bDR3xjZMzUz6fxrz1nqrZGcHQHfPVefN%2BfiK86LeXj%2BSc5lPKy%2Bk%2FvCUI%2FDaLFYCWHr6nbXuILTIsb5imNKY%2FrCm28fSMxPhkN1XbNMNZGuqwOBhtTSxWuTk6bw0ZaG86b1hKddePOKuBvmiguYBn4T%2FyOqOyGRBt7bKUI1GjioBC8aUKwF7Q319UgcmtFGIzCJGBqwQij0ynDsfdFGc3TS3BlNfJ25xmzniMkpXXTPvCaD3ZaZvyzjmZdudBostmhb0ORZNN2sJBeed1HXkrUsywueQH%2BL0eCPxmsa5ZpgRJSDZ11yDv%2Bjmbd86vxZfc1WcZJ3UkMq1BOOOVtvu%2F%2BpB%2Ben186d3GTwWAw2jheaJs09%2F%2BLNfZft37DALyrNj1wABMuUKbODyTVnT%2FKYbJ3Tpq8IrNh92dkxOj5P%2FYpZx4%2FycyiVcDYdn4JbEoKdQi9054iBKsygLW46FRGxAb0NPNCm8BSNCPjoKcj6EAus4SuP3rB%2BcV99%2FeTF6294dA8%2BTK6v74MHVpYNRt%2FI30e8QGTOOdfGWzzxcy%2B87a7bLjw37rHw1nPzp0KyyRSeZO%2BQQhInt3dYgvycjrPOv%2BT8s1rptaP84VeywdWX2T4ysr0%2F7TLIs6%2Bx9zib56ye1dM9e%2FXsZmePY3NDs9zlnNVt4%2BWgHJbbz3Livg4P9WWgviOMm4kCRT6I8vw0NbUUEnFvOuFKoxQW1gTsvFirsF5pb7qTUCx4i7VmtToveaDxvK9uOaedVvPRpVOnNz0Q6bry7uiSdQ8t7Vy4JQKVS%2BXPplV2ts4bvCwZu%2BKzgITtxepaPRzWdpv74muvv6RO0SorX6cu%2FdqKn%2FXWnrtp%2FZragz13DUCl5myiFW2Ycvb0PtsXnU%2Btx8pvLFbUspLX68mdegwmOif%2FNPDONajTGoUh6tU56HBJCTBASVvNUB5VIiKpc9kd7kludodSFz7xQbiOmMk5dOYk56gzL6uaf7N8a6MQOHm0ae6snZpFDfuT3%2FjdYzjzwkXXIVHoXNuCfQslQZqBZjTsoHMqrkE4jaYdgkGz2ATOgB3cPkSukD01DnV3ttb1wx%2B6arPqbkcNAHoFPzKUUQ%2BqL0k97pjbZv1I%2FegC9zTFbrrlFpNdmea%2BgIgfWW3wqkcis8ky5FAcRd1If5nNZrl2FFpungc8wpoCl1BpQV%2FScS%2BzjlASyUTVv%2FAJ46gkJI4bHX4lTnloctxPZE1ckS3%2BjG2fKIjkQFyzuo8jvYQG1OrGvJPSTu%2FnSp9PHNTl4z5hK%2F8gtXVKF6gEKiglgcKiRlCESsQCV5QIlKWKpr34lt%2FwkSx%2FJCmP5%2FcBKQfl%2F5gd%2BrOS%2F%2Bp91%2F%2BYCg5CXK2W4M9fu%2B%2F6xxX%2BvnelVuldIDCG0VQTpU9Dw4pRfei%2B6zWx0MLie0gPbyrkmRU7OwT16JGeyXLHqOLqAfVN1GPlBzWtFNzj0TRTCjogtP1NjIvu5habN5Aoa1k66wGpqriVetJgiGdwDZtKhnN0y4n9sXYnsqGmZfDSR15%2B5NLBlhoDaedEm7sxmpqRija6ZEEg2EAnTiAC8IrmFbGz1q08P9PSkjl%2F5bqzYqT9hMmptEXDgTqP3Wiye%2BsD4Wir4jCeoHbbp5hRfpB7BakUIppIlPCD30dR1GtslDz8OsqbXmejFC%2Fv8wu5X2myq7SJ8Avzv9DFUJySf5uNvq4%2BTi7W9D%2FOZrLChdwxmPNiBRqVjnpK%2FaGxRCDspVYKAW9AN1JANoo8wP4BJUlGqdgw6m1qPQ2QW3%2BOfU5%2FieLS%2FNuKpDU3uf8bcAXyBal5jMR2NEAbPAZt0K3hvxHBEDlUxfIGcD%2BN2gNSNx36nfqlAYow0puatNpRz0e4W2oahKzQHsjf2c16ad%2F3t2KTtPobnX6D8C8pd0MDP%2BKx7wnXqGGlLQcvikMErm6TmfsuxJXbSAxqNjOogJLQBLiKEHAE%2BJGTS3JoEhTrz8%2FCB%2B5YlupJ58aOat8Kv4JvregxwcU5Cp8GFAFm1FyOfto6GS2m1NGTS6CPNKkbsTdCBlnN9onMho55BX8IJZtEQ35lk%2BhtwN5A0V3RCPoD%2FyXAcv6pAtbZczRUA64JmcUf4q7Q89ZHLeJVZ5D1Ps%2Ft%2B0iCT3AHVtZC7JDCXfR7OSb%2FXja5H3zQbZL1B%2BULX1BMTEk3AseSpmnKEK4T9ekMIidUCRQFfcbj7z8gNLvzF7mbhQN8h6ZbRset%2BnQWdS%2FZX3k7WpS8P9sfo0iGS64wV516pOhjI6TZ2dApgI5%2BLhxywYoWxKUrykKJsIoDsR4mSrCTg0egMPnLW%2F3Q5Nn8BZEuzqEI7HK3n0%2BzFmuO3TtWQ5WJoG9YqCD6Gc32SxnbnVPfsxvrFXK2dILl7bLthDp6glhcsfp4bYvbSmj%2FmQ94uBTw0E73x2jbNRCvC6VL6GCFDwU7eWQDcC5FY5s0slieRDwtAbRsbLXbaXAuu14e2OJw1dc6jQ3ZdY8v7rv2%2FBWZLqvFWVvvcmwZkK9f5jS4muO9yR5res4kfkRxhV03L1RfPOiPtYi8pd7jNEsOpyTwxpaY%2FyCZu%2FAmd5Or9uS3DYaeqVOhH7gZN%2F8I%2Fwi1fEuLXvyNivibjuKvN%2B1Nc01HF%2F3h%2Bef%2FsOhox8MPd5SFucPjorQwXT%2BytA8EmA5mamHNFDVhBI5pjZbQpugBNkO8MvRub8KVDKST1Wag7D3xlin1ZF7LFP%2F79nbvCXFOY%2BPUjrT7%2FotsPXXZ4exdPzuhZuL5LUXVAn7k7PbhG89uz3b41X01gbjP1xwlu5rrvvf9%2Bpbs6E%2FVu7Nk642%2FPYRaAiUBdrmO6CDTBLPQFA1ur0uXoBR1INDMkypKpoTqnSMx5GiEdTEaSHLs0Alvu%2F19%2F5QW9Rv1U1ridT22i%2B53pzumbs%2BXFFXYC%2B%2BCGsTj5JUT%2FGCgRt3n78i2n71FHG4%2Fu6X%2B%2B9%2Braya7os3ZbDmgWfXun44e%2Bu2NZKuGZ0HiF8M4TlMPR%2BEU6rPKRJ8wOU2RFUFLex3egEsz3YqEAq0cqhAAW19dBZIlVzR61tuIdTnpXH7l%2BuXrbjPUyep%2B8cl6aXKWhPHpDcXl9KiTWDNr4mBQc8Tq%2BNzK%2FOKSbsfl79o9G20R%2BbrBXYvUg0rLHhtrc4TN81TTOWSZ0gL1ZVlOYH2ery%2F7XVUjFMbzYpg7UswcqJPQwBd0LKLabJ8IaCr2otcjSkIrGwootKECaUd4XH1%2BSdazRrfddkBU98t1htvWrbjqSqjaCguxrffM%2F5zDCpBALUycmajhd%2BR6ww4SWafuZ5eU%2BtPid4lgd3gt%2Bb%2FY9rQoZNmiXYPXyRHbRs8zX%2Ff4WIFjWZJtUdSD55AP3xtXH%2BZipC0EqdBGDA4CoYEU6gRLGPU11QhkLTBiEYPiqOeQgwTCl9aok1Qr5pFf71qEeNxjy%2F8F0GoqYPv75Yh9j3x4DuJ%2BuEzHRpAq2lMqb%2BqfTdiq6kGtzfOWsv0c7lSeMXDHBDe1MT%2BLUgx0Pg%2Fp87u2UicdIvqQi8DkxhcUwUXCedMpb4NQjwY3npTmgsURJavLwCRyEcN2HfWsDVGfv%2Fu9ZUWUx%2BPYFueUKwaNvbtu%2BXps3eVWbN1GcgVrdMnWJ7WmJz9SD66EBidag0NF1Ukep0t5A7sFCWdhzvYwHv6L%2FBehXuHqfaBwBEU7hfVLcXvS4VQv%2BT%2FvaSIl7cbeMc7ekv9i8S3e1L5xxpvMGcu1EYPbKyCiijjGXcDKckm43PqU2qNWlXusZMiqF82cuVzolUHN9NNR0HZPxFPV9V0wLtvq%2Bk4DqOwVWDlzuQLVdqFiP08cRX7aRlBVfR8cb55bWe5LExnlcsDp1vAP8Q9BucPMk1Ulh4GnN0SAdxcNHv3q9ohx1Ati4S%2FtkWjIDe3hQdkUGrGRaFBiUdiTSkI41UkMuuQHP%2BEaSQYlPQTFWJF03BNPpTu5KFAdkWgDukzsZKMG0Q1TAQQglScOaP%2FdsZ8%2BfP75D%2F9Uu5Gs3FY%2F2SxPld0DHOciXI9gqjcEidXjE%2B3BLosy0OcX3T7O5g65ROGyzQ2BZs7WbZVnO5ydLe32hMwTQ4wnnKXW6XW5LAa7oaXOIHoUl0FgLQLH2by8wSTWeAx2Y5PDazK3BqZbeJZwXGPaYhX87ZNszoDdaRxotXO1nNlpdvAPFWHDm8PqEE0sZxDEqGzxisFNnuCWetPcGrObN0p23tTZwMuRVodSV8%2BLTrOV3eRvzjQZiSjaLYS1WEJe0kNsJlZu9LFun7%2B%2BwW4gRDRbaxw2nrOGm%2BxOj9cmtbp9ZqeTM1m8UXfQQCSTVSQox6pvtjot%2FFpHvIUjJovFEoYvHYV9C5Y%2FxN9OfcalvII37UEhTbTg%2FAQIaPb4Vz6j5u8%2FaViycMod%2FfkDcpu8QZbZoeBi%2FvbzP3XPsZvOubMtaPHkD9jt6%2BU2O7vqU%2F9C9SMvgrXpQNG%2FE0oJxun%2BCiElUa0IKQSUwERxOntKSV7ekcuh9VBZBBo3VUcB58ofKBHCwLyf9qFosz9Ibf8dGqwaBMjRig4SGOZ2UkWI7UiO9OfUPdxOYFApUZyfpY7mgEc5rtNGGk2H1lPhAk1Hp%2FVAMqQEHEUfEYkkUQq1JMdzsX7kklRrTrUi1wMcDjmu1YYfATj7Y%2BpGpPEBXuoQIj8rR9mgCl4C9yqmF7xnVWxGVniNqtpVmXBvQ6iwni5YQ8a1jYrXtc2J13HvgkvqWxuva1sbr%2BP2S5ceKGyBwDv2DbrToe1u6BkAJV7xnVLUaq0sJB8pFqcUIPi3yuwxi4JuLr%2BP30f3OkPQ72aO0xYo3%2FEsmO3QO5qEF8S0qQH0UsKXv0brnl9%2B8M7jF174%2BDsfvPOl1au%2FRL5%2F9DsbNnwHL2pHR1NTRxMZhJtHktOOxLxErPF6YlLvpC9YP73x%2B4ofw%2B3xVdrHcDE0dQQCmCRgvt9b35xINDf1CDcRSfJ%2BpYl%2BSf8YcurfmXP5F%2Fkj6J82jNsrkWiEuhVlgFfyNkB3S5MUzLhoNiwSCYcxQ7Ui4J0Xh7fmqRbaPa1tzujxkBRlsEHy0%2FOM4pYLPb7g9O6BQJN6l9zQ0OGyCaZz0vMTbHOzXfQ7a2tsterTcqxeInODoemdktw%2B1SbVhKwtW9ffe8VKadK0OVuC3bWzyKm5LeddsWTeorWyY9IMtUFutdu5g%2BRn533qkocdvLs2HmhU75br%2FMmWtD8zA3OP2t1ea636jEzqYxJZGAwFiDEd61oTsrRuW3%2F3pYNi3bS%2BRd%2BGjOfVpAPNd6y64Gsz1GaZleWIPoYL%2Fv9mTeQBENVEguiF1aC4YeXxFETw6QyPfn0m9g8IrMFAvKM1EI11DARnbqibHk%2FIojy5rSdgCyZi06y8sS024PeuO4MfwQ5Y9yKRZCqyYaF30vzeHlmUprR21tR0t0yz8KZY66zWuGvxVQB%2F36kP%2BK38t2Hu6NQ9SFJfw0AdpqPEK2qTMpf2VCqJwqPoJezTL824b8akoL%2Bx03nhh%2BoNo5e77psxg9Q5LzebIKD%2BfsY34f2MtB9fk9v5b8PT6tYrgv4kRPwd0q9z3gdJSJ0653KjCYPwCaR5aUY63eW48O%2Fkdo33yxX9wCiMv2QTrk8eGSI6Ag6moG9t2P%2FF7GRNlDjl0gw7pJ5aOXXqyqn8SENnXBmbSwUYLyqJjv3UmY1nKr4t80no0faXsaIEiF%2FBRaIBnItSce4OUif7W6Vm9T9H1X9Vj71BEm%2BRdmIJQST%2FZfVdudUvh9S%2FqqNvqT98g9SQ3lHibZY0mRVHooyDN%2FFHmTgzjdozKw28NwQ0hwN6BCoPKaEk3YtKwNhwRLXuk076CGoZNXDQcRwZvreTZY9EZi%2Bd0s4%2Bztv8iei04JQl6ZbDD2eHV7X4uHuFVfPrOmcs6m6Kr7hssr%2B1VZFcEZ%2FPdJkn1hOs8SXS%2FNFFgqt94PIZzZ3tdaL6Q5vo6piSzdy737pwsX1VyxUrF15iJ4uNkq%2Brbyg1Z%2BO8VsNC1UmcvORPRfxtPrfRwL2p%2FoA1eZp6Z%2FaGffoewaXcA%2FxBlKlQLfhQL%2FoPgBGP3qsA7IQS8qDVNswHKRSheDUvA3Q7MZoRcJMxlEygujn1QdyzfPfq3dEp%2FbXh5e5YXW2Ngfvza0ZF6UgFL%2FE0fTq4LBlvTE2qb%2FKuuzYSXVnjTfM1osvqMHVbm9950quIZlbqaL6YP7jk3kUtA0GnX2nvq53f3WoSsvEdDRnULgo2fN7lNZJgI8%2FVWi33c3bBZnGY05%2Bdm%2B3qc7fNmj4YGKLj2nfqFP%2Bg7jdDlxEV5XsJQZP6hYrS1l0VQr4c69Xueixp90gnZPmE5OF22j%2BSYEWHlZ0K%2FHgsh%2FZtsbh6h2DNRlvv6jJh9XaJaHCZDiUDKNTMkvb8vsqCyf3ZNdSmO0fa0Y4baJTtpbKzuVzeeSI7fCKr2Z0WypapnXJ4gnoWy3PoUIlIQ1TXdqhQJIXp9Wx5fYdpeWh2TY5D%2BYVyKd0jw3iumwi%2FBC3cEy4o83QlZnW79MrCgCjbhWXBlRZVVZZv4rIKpXC01HFlHdHLoeWVl6UVc%2FJ5uGm6CViW5mulYMk%2BHqNYr0AyUPivLg2oMs2MPqtuhHyRyiwvNJej1Br%2BfcLyoAyu8D9B7bgmzUqfFobF5nKnK4%2Bt8MPJkI%2FxHUNWk117jugWF%2BxazTAALQn6%2BUE9lhoI5ApGA%2FiuJOsrlNP28SVVuBVajXmircLel46w2bJS1Q0Ft0KDuikDFL%2F3pYrid1Q4FvofwRIo4R9h2ftSwc6jHAMqLcCql8YPHtlzGoByNXYN6v8hXnRaOhUvx0sVLCexwupGDR4NOYC7PePa5keIPACnuAdD7dEadRuTIiS6Lb7uskb381My5yjzF8lGCjBRqdwrWJCagfB3yCy7XT1i92hbcZ5Ci1FJkgYMDf6n%2BjspIsHFjJrTOdzSMuOa9DbDcj%2FnH9N9bIoGVgzHPWIQuFuYtaMRaq8eCKI0gEF6lPOZjBz3EEvaaxwSUT9U%2F8JbJZPJJLBLolH1La%2FRbF9AbC8JJjv%2FmMnssKjLRBJyqj9QXxNko0Ux%2FX79epfiXkm6fmKwF%2Fen1HLc6LxloXWKvGa5rVCVL83VuiPcDEX%2FK5pTXOxHfx6HHB0t2FI0qI2rCZFTrvPWU67zVuS%2FkTsLnc7IKhFg30e4FOkqNSfH5PtkmUy6Cpiv%2F36k2sbqCeCFNa%2BURpoY0sZoYmCgCr3qgZz6s8I0gP1bYiR%2BD79H56NOz0EVWCTy2%2FfffvSCCx59W7uRV9995eqrX8GLesOXNm360iZ%2BT%2FEl3uZqL%2BFyzSZ8XxpTiI%2FG0nkT4zznFZ0t4ipMz5v4q9ssqbdKUZt6u82knPCrt6PZwsnn0XySVnyPR1ZXAn72yx48bWJsu7apnI3Hy8bygUK5Js32qcytapqgmn95uexccj205vGgJ%2BeuOeG2SORmKZr%2FqKzcx9SFctMJdwMUFZDJITs7dnOp1EKZCxg304Cevyfya%2BvlKqv6aXK1qIj3imL%2BL6hL%2ByvUlFfE0VKZ7E8gBY3M%2F8VoJCFgizH1W6VyC76nH6b7jiibYVxUmVIEspry%2FLgZIlCeP11Z4zs%2FAwvVwtGFEut5S1JY4lfyT0N%2FevOLo%2BrUEgjcqc9IkGpQbv3iW7Co5b%2BKgjvpzYdH85PLcc4X21ouwEGl%2FS4qnUAvoSlXUUhR1eKr2VWFTB%2BGMl6FsiQsVD1R3urlAAIoSn7JQkmiVVCHSpCwDH%2FqPepXQ0Db77CJOAImohB%2BRPWr31ev5g%2FkE%2BzTa4lbvZo8xdWPffQu9yJTPCNB66s%2BzXoJt%2F0L6hSoCuBIoK8fnBGG87OoRckJpLqyWe4YbpGi50g0%2B3I3UD85Oa0fzubfoXxPLbW3FDWzigmyJeM0tQkax7PqTy80%2BUxfUHPlBZIRVNQ%2Bv0xRm8REKPoLmNr0%2BUo48v9GFbXPKylqQ2IKm00QddgyWGMROCTxdLB9nCY8P7j2DjlsV%2F%2Bmfr0C0r%2FNkeXbbpPlOTBBwT0mVz1zx9S%2FwJecBF9Wgv3p032iP2v4VSgfgW2G%2BHUEdEXU6iq4CtpLJfIN9XQG8dwa1VoO8XC2SrPDDyCOQptXgbcPvlAgBfxBoGwftQKeKFrNTASPt3pGGqDt%2FQRasn2kri%2BH6L80MJRsmVYJrAKyDItpJUy3%2F15WYIJqcJ9Q5N%2FLFJ4c3dc1URpWl9hW6mu50MUIelg4ucTPf15zs5DFo1c0VSp1tKB9jkwIyuM45kb%2BIP8gHed%2B6jO3v0KbIknzLy636E8KPTdCuUpB0wLo9JKnAO6pv0vS31EtBha%2FfJemkgLVVnd8KCk4qBTpQ5m7FbifBKrPJcq0pZAFVG%2FXbOFz%2BTcq2MLrcmV28Nmi%2FOHskh82bau0k8eWCaPijQPWQ5lUvslwVCfHkXBMIehqUgtDNLeauH1huvZTbYmw%2BluPjyWoNGEuxRLR7LK5fSyXFUyK7PURQv2v8D3XOt2NJ6liBbmPGOsakw1kbeOs%2B31Wm5qpH%2BiJWSzqdPr2O7zc2TmtnrzCig6bBd%2FvgQmzOlz0STWIlmZEQfupogOZFHUZ7EkUnMn0RrpIMqAgHRJAOjIJ3yGw1I%2FMAp9q9S3Q%2FclADNm1wEeO%2Bxbwg5OIYHZLY3ehG5lJk2xhco%2B6JWybpEVz2wrR6hZyD0QXZbeDVB%2BonmlimpkWprdAs4WEZDSQppsDlcdCBJJESIYFuAtUnC4GIF2C3Uu2Kv7L1bdz6FxtqxpG4TqQOqOUNAJ2HLvPWA2GgDy4O4vaDrtyl6P%2B1fAll%2BSyFcQ28GHqh7fvvf37udylf0fNwhzgz87Y%2Bcf5x9GnF6ygHu18sAbipWeF0YPBgp2GaKeQduxxdEr3SgbH1kvH7tvqSLhedomOvZyts2dw8acu3dY%2Ff%2BucuMtCuP%2Fe4zC4XnH3OLZ8ZuxTWxy8dJfU5dhDeKPSlJy5pn%2F%2B7u3XrJhmr9C5CuleGflGQocKnlAUaRKp0BAHV0ZwUt9VCqk6zYOgRIuMfePJzdmBdpPJ7%2F6B23%2Bf%2Bsp9NMDZevovvfYHG5dGPISQq1DojqNckchVrCcCYz%2FQ0hI0m3NKDRfkgsrnamo%2Bp0CAq1FyvC3a3Nak%2Fs5VX282x9Ufy3E39VAx6o7LpCvO2wK%2Bch9jNqpJCutcIOooKnYWtDK8gTRVYygRQfwgzKM5%2BjP2jOZdx3r32Py7rQUPOzAnoRs95NvRAR0qLGU11Taqu1bUYSzMcWjMEir067JQQHfIrLBHsrgv00%2FWavd8HRLMEEYFSW3HCSNQehnrHztKqHcDyo4VfZ6gPKCR%2BgufwA8GegxUEo4A%2Bgd0BASHiH6jYMLIsUdQJTs%2FC641KN4oCHWolCMLlMfIdtWKScjx7SM5LD9HnfmhrGI0S139UWfUnxgOXdJFW%2BAMcGjKr6eHAttHF5sUoeArYKDcxMSYcKA%2FxUDhPiEOEAPafSIUFArN0r24ynI91EPARDXvIDYyvqZaWeroBOUABQA%2FE%2BDXC7PWafDLQY2oiwpUEyj4RQtVlUp1GrM7In2p2A7VuiOW6otMiGOo5Mrp05ejVuTy6dNX%2Fk%2F7mybZQ0nUmfrbx3U4KueDnlHm5wdh8FFeKnoaKKh%2FTK18StOPhwG9Xo5mqXAxvw%2F79YQwwDR%2BnAKQQ4izVXioB84qcppWB7IqjU45z4CE17OvF1Dw%2BoTFqxtz8dxwtogBnF9MjIl%2Fin%2BK8s3hM9laIn0TiCbTAXL0T798bPXqx36p3chrv0O%2BGC9Xaj48Ecv8U8UEeBvUEsDlTepiU5OvlpeNGvpnKF0RvUooWhIjnx6GeBapXCQYTw9DNg6%2FOC3gZjp76oNTj9Kz6Jqobxb9NDqc08vcKReOpcsQV2K8InXFaXW3aI6Ofr1k48rp7CX7rx%2Bv1UKPsfvzQU0Kc83i2VdILmd2%2FyX55zT9luN2%2BCu4nKfwPcK%2FCvDVU%2BpHh8%2BLaldIf1fA5h3ndT6Fln9%2FW%2F9Ce1vndfvJtnPVO2xhm3qbafHVCN1X363UXHq9xuVD8OSD29Z8pZ5cZrern9cAdGW%2Fuib%2Fud%2BVK0L9a42r6C90kL8KzxwLQw9NkIQJL0ASU8M%2BVG0KsUdgdvpgP%2F6NqqP0%2FgHZFUfGEijZLHpiIgvV5%2FBltrj8Qd7XQd5p4P%2B7tJo30NMO6VGBwahSPMYiaaBYoLY6uEnciyhhh1Z%2FvvacG%2Frjpsvnpzs0B1Id6fmX8119l88XnOxe%2FuGrzzHcdu7UtY3%2B2vmXN5zUyj3ZcPl8p1sZSs6%2FnGXtwrV7Ka0XZdz83fwjjINpZWYw85lL8BRK4nGyIir2RiOsEyipuEcIakpGjWgBjLiHWOgj0Yi34gW1kKPxHt2Na5q%2Blwg1RdRSpFDNzosb44YJXnAfoEOpZW%2F%2F6u1lhYA6leevezbI26zNHO811M2dc5HFxpk4i1jPC0s21%2FBWW5DnPQbn2X1WK43%2FaM2n18DfSoybbNHijFpamzXI31eRibGUOxSu%2FlT96YZlq1Yt20DaSBuG6knw2eusHs5EPBfNmVvHKdaQzcDfz9ZsXmLDWGXy2U5OsYSsIn8CS12jQIyD12KKqZrLPy7mSPdICmd6WGHG8NDZkkHuE4h9TU8FpmUO%2FVjC%2FEinToFyoNDz2p9XD6g78WgQdPG7Z3R0T%2FZ5dTM9lsL8Ktek7szl2L%2BgQwGgwkZHc2g5Su7NvVqwGy2Ua4KSXUwt1X4PaM5paaEu6jQ5zVFyNabxvUksVt2T%2F4VeamYPlLtffdQsk%2B2sUTY%2FzDXl%2F05W53%2FBz9UK3p7LjapZ2ZxOm%2BUlZXrL3HHGqO8%2BwVroDaCTTnTxitMxmiAAYQzVJQH%2Bnj3oIHnPaN6Zq6sNSLjBl8tKgVr2mj%2F9CWi9dnKca8rBQBsd5R1tzVlgrl5pbnPw6kZclCr2CHxMnHohLz%2B3KRQokzALyeIKFU1TNCiayJdoHvDYe7K6mZLm8S3uJ9dojuaJ62%2FqN%2FtjQxnSnhnKPw%2BLNrLi8ZKyJ3x1YhiI1aNAtP6NzCGzYv3DmaGh%2FLvQZnt0evgIhTFV0kE%2FPYxAnOHhCQUZdCWY5JWJwMzlAGl1mpNbDU7yyGnhRMILsYhH3VRAijrPcBU8%2FCj1Y9NY6cnGVW0CjTLaz7E3epvaT%2FLtTV72Rs%2B0WVVmd0dz%2FMGTI5F0OsIviaqDlbbO5X6xT3PeXbXHRtf%2Fz%2Bfdka%2BeKPr8KF7IF4vBsT9MFPuPJMBTBMq9hQxXelQ%2Bbewnf18ap4Ib%2BmSMrtDU5zqlD8QANa5MBGh%2FOwOvSDfcV2d66mfEWsbGWmIz6nsyZDWQSmqmxDneYyvjHPmRXHZxeueyRGLZzvRioKnGto9nIPkibAJA16adcOZRQr1iAP3bUyBR7T4RgAWTKxhkCYFwshq%2B7iV9r0whk50cmRcTg4fy5x4OmmNkHndIA2%2BYuMbmE9dwGYB4KFTsvnDE6Ah47r%2FfE3AYI%2BoXADpkdlENcZ8OZEEf8FFGZNxMs6ZLpG3SUFLL7Q2kcFU%2FA%2FJsw%2BvWDa%2F7emewLaoeibaF1B9qUNnuqWK3%2BUfXYVL1v%2FomD15xxeDkPnXTOKSVcCbDGtOu0YQNpGAP7U1HU58UrqGu8xIbHtkQ3LVhb7Dx46ET3Ffcm1q0YcOizNmf3bC3VjWfAcpSv3MyTlgJ23FHQgmgvk%2Bgk8pL0mcCDOn08MDAQlf%2B%2FSlTZ1z12fnqntOhbOTL9%2FZdevbAPN%2Byby1f%2FuUtC%2Fixm8ZBo59LTXEW060hGrTDplNprWd58fwB%2Fb%2FE27BdS%2Fs7U%2BrGVCeQ46nzaw9QccnmZerGZZs3Yw9aVHt%2BKh6HN4ti6lxIhT%2FwahnZtWwzlY9QHQ2c79C%2BdxzvVDKy8GqKWQERO9YAKbpsDUTLdWV5dE8PVPjvj9pqw7ah%2FPFVtkit7aj6G5xY9mfJrCz1j1e0BcnPol4UjtrCdbahIVtd2HaURujnFJR8CuOuUUfhrGhgKKgjCYNSvCc1WKlEp8wHUaAYynFNyzZn%2B2MnYv36dbMDBTonl%2FT%2Fma5IKAyEGz%2B4eRnVtaX6tss2o34u8mWorFtuFgm4A6qK%2Fyp%2FgLEBVat5WnPDdKA574ubuFJ%2FIUfZ%2FY2Nt6mN%2BZNNTSTaeI56gKwkXerTe9DDHUw8%2FH35FY3nNN7GGuBKWhrV9ep%2B0k1WjNWVaHkW1yA%2BQHWNu8rtBw2a5YXuE40rs7%2FGA%2Bj09V3hA98yRnFPOGr8ltGlsFdD%2F7tRce3LH6Trcneuiy7K7J3khKu%2B3qUaXPWaX7T6%2FKfj9BX2eZq2XAcZT79u1ClJzUtHUqfqSMWBcZS43Ena0cUGLgpkKxB1QM%2B0Fxz10wgg6r5rltnFpH05pepUq3Y2HfYqeKRntmUFNz%2BXmcOs1H31U6cC6RTVLfCg7RNBF1UF2%2FwBgu0fFQtPEU1sSg3VcNsR7dWq3af87tUFn1l3ltXpaJxpNvtcZkH2WmMst3JqRpxUH%2BWC0E1qOGtP66s1MYv%2BVLu8%2FXFXvV%2FZbunYYBeVN64ls0ur6NzpV9xzlmQwB5qC4Tq70WC0tk8dWJXeHvkD0h9zJOM0vD86%2F1NJMaIAolctvlByferCsqOKDKceOfUu1PsmoFCamV5mCrMUOCi6V6FJosMF22AcrKJgQDVhfYh6tepp%2FlYgvnCEAbJQ1L0rOpajEmRcasMiPfxhgGoVo4rwreQpV6fUJHH2e8fa1s2c13Apl1b89a58ozdoap2sjgLN9uISl7P1DrulyeIkt0zr6JjWocoPOZsaXPb6jtqBblsgsaRre2xHi4nELm0MhG1%2Bx1SXwLpFi53b%2BaHRYo%2FIrbZtuWAKu5cSEXfybnnmUCaXGTpQr0xK2O2WWY76f%2BnAjNVf7nCZHU5XqIkTnpt6VtvsFlPXg1031g%2FVRdpkkyVpD7jnmax88QwDvg%2F66NnMRdRXTcGTmQc3cuINwN5IQqi0yzb%2BYFVHuVqI5s4ADfg5oE4ybDLd28mFSFmYvRoomsWXEdLU2Wl3GJy93ZNb%2Fd5gqmNaqJZSO1l6PVRy0nZIj%2F45EetjLguh1rLqR%2BSK0hO6NrsqcNX8zoUdjQYDJ7tb4os6%2Bi%2BY0qpY2AWlnLRDWdGFTfGY1gV0zNAtJ7pdo24se0D88AwLY%2FgZmE9iuP4V5v7CSR%2FRThaHLh%2BUeBkXwU6BC7lGOevK65udTv%2BtS%2FPfW7qj3ljTcj3b9OkbV85t8xsMj7Ddj7DGpthZKwKPvso%2Fc%2F1K9aLE12fMWLV1y1D9ua8lyJdWXr%2FbG%2BnoCFutf%2FmLILe39ITUV4igr3876fpX5g2zeB52sWnIL4fXHlgeUzOx5QfIvJQyrKQE9wHUqVq%2BPEaOrz0wVvNbJZVSfsuMzxN4l9PkedFzw9V5Dj%2BnzpgoT4ZxCxJfC5RWLc74YVHxKlExCYt0JAOMatREhHBSCAtSfod6x6Ls8HCWECLwXZ9nd5Dz1T24JUdWs6fU3%2B%2BfcnT49Qe%2BkBs%2BwdsMZgPXMp3U5S958snPP%2FEE7bvkOPCuTUDTUQ%2FUzirLhML9yPahoe1D5Fj5jWsaoveyP00PehdUAHk%2FseDVWsvDWXXXsyn%2F4wfpXc2V3%2FQxli3jl%2F5hj%2F83avSCfpTNxOEKLmTjxOEKuxgNlsQn0xgct724mhynupNW1Ph6o3RYS3%2F%2B2TJrzLlkFz%2Bip3qCHKf6eqW02QJLjBYuuj4sobhCWqa%2FYHGEHpcnumuWSOhxeaL7sOakNR6vvmo%2BYcfFA8UFXEPZf9UjyudIOyNwx%2Fi90DdsujS%2FFX2UAwvWSVK4NxaMhAGw3oowp%2Fuc8CTi7D2rBgZWwb%2F60faR7SPsEbjkXy4G0XaqhXPwe2cePjxjxuHD6ssQuR1fq6PF0E%2Bo2t1nePTn8TUmxz%2FA3crMoCc7egESuoTHYc7mYdg6etORoOhR7BBGD%2BqJopELrl4S6cJNRtEAsLP%2FOdvnJq0Wo0GolY2Et9VFB2Kf%2B4bZvVyxfOMz3WdFfSIryj6DwWghre7aQbdiDrkTL3A3vNDuDpk93HqXwam%2BbWmUJZfNn5ozKV5Pmmq8PF%2FjVY%2B2Tlk2M2RzSXKjmbQ4RZcQavEYrN%2F9rlXwtIQqzxQNMzPPfHYLvuPoO9TbT8bpGw5CQPGd%2BSyX%2FCyf0Vxjd2R9NmsunnXYa8xGHzn%2BsSfM5J0y0DZEXWWxkXjcR75KBLNLHi7XvX2G8VOrf4Ykg0AMdBESIpo7MgAfyakA6rkqpI6UjNs0px7cMV%2BD5BF49Tez1VGnYmq0WIijp985m4Sn2gJR9b07riPPFo97OYbUZbxJCpot7H%2FlpZBicglCPN7WOfJkcHqc3ElWqvvz%2F1E6bIQrG%2Btz6WkM1SM9FBTR7FSs8KyBBytSmNEoquJNFN5EQyTiCrnKDx1h58yxCepPHU5nxGoxEQeeOZi2m80DxNxncVhr6BmEfUarxejw%2BWSiHhWk19bSY7aKR5MsteblJpfTLtjimBouXsm3d3djjYM%2BwEW0El9dM%2FueVRWIsXwe43R7SgbVZqrnqoJ1X%2FkuF7pcgf8duv4q6vayV5U9zMV91GxO59UUjW8rHV6u799WzKMT7umRCXbYUKM%2BfoaCcwgaoqZUtmodV3p%2BX7akb4dnU9B9La38RPFUG2SCC90tVA4XwEFhyOpZZrUCsgWYHsczLFBBVGNtstoN1bw0Z%2BO4fYIbvZVt4EUcJEKOhHeincWqONw%2Bq6w5Go%2BWGOSR7LhKV%2BKBqbBPpfUvOf9QqkpDyVhBeyyZQGMsdA5FBUqvFMtUyGq9vjnsAJU4UcrxldP1CCaofyDkSAifoP5QwWx%2BSyUGxp75BzGAvtG7uQ38LehlyEQMeh0TeE6Bm7tYdXqdkt0uOb3kfYlNwmOdDyacOq%2FqlFo1v%2BPTmTi3E%2FglC9W11b34A22zmLzvb231Q0L2Bgg60OTW4YdstO%2BYOJnO38TtpH7zy9ymokWyA79qlVSn38HtpFlImFnhu3b4boNWXklOXV0Iwo7lQ1hrZyPFcwtjwFP7iEKSHSSJw509kh8kj6pr%2BH1jR7km9vcvqN9657vffefkv%2BfKxge1X%2B7RdjYUPIESN7gTvRkB%2FRMYtEkaVkdHApmdBPpnKmz0n1xSWFOyVIuLrinZwpoCRe6kyiVZoHX088F%2BUX4%2BWKS4iBTP0IWxGtZgOdMaV4KTayqHQF%2FVihBwTbgDXTCmKoOBJeNhwJMzEVjtjIFLuU38fPR7hqNG1JS7g%2FqRCuy3vmQ3W9Vu8qbVbP%2BSzazGRJH83MzP90Ck2m31mMjP8TiLn5uwD2Ugr2PFvPQjB5BnSJvQxGQZZEB%2BLopqzGzDbMmbkAPkZVJjeO5FzOSBKCgJze2ZS4Gemc9twrwY6u9H61iUQTcRvtdT9RW3tRxAWwFs2tcuJRnI6xjmBdWjbgFNRHMHiF1uHYBfUR%2Fut5Ug2jXAaT96%2B9RH%2FFToRwIzGbKmVJ1AZQnoabSB1yyIg7ByAridHApPMjyw0OiV6RjSbCuzwLAvFizBliWJua1tsuAgvNPbmljYbpt8lkWam7b3XZiOiKJskMOtmfScnsbPW208knwjuXrXK4Q1iKIgNyYXXDVT9C2Ye%2F78GQ5BEEXfFdde2RwauOysdJNL5AzCy84ard%2FnGAVN8alecnFdgu5Gbd5DJTL%2BhHZK0vApVy3OfU8XTSJg1TlssivsPYUlIqvn66PzrVTymCc4wgF6SDNR0pDf%2B9Gp%2BVnsUH5WtpHYsuhOaey8zdwLN47V8MTbm78g687%2BP3cx6tcAeNpjYGRgYGBk8s0%2FzBIfz2%2FzlUGeZQNQhOFCWfF0GP0%2F8P8c1jusIkAuBwMTSBQAYwQM6HjaY2BkYGAV%2Bd8KJgP%2FXWG9wwAUQQGLAYqPBl942n1TvUoDQRCe1VM8kWARjNrZGIurBAsRBIuA2vkAFsJiKTYW4guIjT5ARMgTxCLoA1hcb5OgDyGHrY7f7M65e8fpLF%2B%2B2W%2FnZ2eTmGfaIJi5I0qGDlZZcD51QzTTJirZPAI9JIwVA%2BwT8L5nOdMaV0AuMJ%2BicRHq8of6LSD18fzq8ds7xjpwBnQiSI9V5QVl6NwPvgM15NXn%2FAtWZyj3W0HjEXitOc%2FdIdbetPdFTZ%2BP6t%2BX7xU0%2Fk6GJtOe1%2FB3arN0%2Fpmz1J4UZc%2BD6ExwjD7vioeGd5HvhvU%2BR%2BDZcGZ6YBPNfAi0G97iBPwFXqph2cW8%2BD7kjMfwtinHb6kLb6Wygk3cZytSEoptGrlScdHtLPeri1JKueACMZfU1ViJG1Sq5E43dIt7SZZFl1zuRhb%2FGOs44xFVDbrJzB5tYs35OmaXTrEmkv0DajnMWQB42mNgYNCCwk0MLxheMPrhgUuY2JiUmOqY2pjWMD1hdmPOY%2B5hPsLCwWLEksSyiOUOawzrLrYiti%2FsCuxJ7Kc45DiSOPZxmnG2cG7jvMelweXDNYXrEbcBdxf3KR4OngheLd443g18fHwZfFv4NfiX8T8TEBIIEZggsEpQS7BMcJsQl5CFUI3QAWEp4RLhCyJaIldEbURXiJ4RYxEzE0sQ2yD2TzxIfJkEk4SeRJbENIkNEg8k%2FklqSGZITpE8InlL8p2UmVSG1A6pb9Jx0ltkjGSmyDySlZF1kc2RnSK7R%2FaZnJ5cmdwB%2BST5SwpuCvsUjRTLFHcoOShNU9qhzKespGyhXKV8SPmBCpOKgUqcyjSVR6omqgmqe9RE1OrUnqkHqO9R%2F6FholGgsUZzgeYZLTUtL60WbS7tKh0OnQydXTpvdGV0O3S%2F6Gnopekt0ruhz6fvpl%2Bnv0n%2Fh4GdQYvBJUMhwwTDdYYvjFSM4oxmGd0zVjK2M84w3mYiYZJgssLkkqmO6TzTF2Z2ZjVmd8ylzP3MJ5lfsRCwcLJoszhhyWXpZdlhecZKxirHapbVPesF1ndsJGwCbBbZ%2FLA1sn1jZ2XXY3fFXsM%2Bz36V%2FS8HD4cGh2OOTI51ThJOK5zeOUs4OzmXOS9wPuUi4JLgss7lm2uU6zY3NrcSty1u39zN3Mvct7l%2F8xDzMPLw88jyaPM44ynkaeEZ59niucqLyUvPKwgAn3OqOQAAAQAAARcApwARAAAAAAACAAAAAQABAAAAQAAuAAAAAHjarZK9TgJBEMf%2Fd6CRaAyRhMLqCgsbL4ciglTGRPEjSiSKlnLycXJ86CEniU%2FhM9jYWPgIFkYfwd6nsDD%2Bd1mBIIUx3mZnfzs3MzszuwDCeIYG8UUwQxmAFgxxPeeuyxrmcaNYxzTuFAewi0fFQSTxqXgM11pC8TgS2oPiCUS1d8Uh8ofiSczpYcVT5LjiCPlY8Qui%2BncOr7D02y6%2FBTCrP%2Fm%2Bb5bdTrPi2I26Z9qNGtbRQBMdXMJBGRW0YOCecxEWYoiTCvxrYBunqHPdoX2bLOyrMKlZg8thDETw5K7Itci1TXlGy0124QRZZLDFU%2FexhxztMozlosTpMH6ZPge0L%2BOKGnFKjJ4WRwppHPL0PP3SI2P9jLQwFOu3GRhDfkeyDo%2F%2FG7IHgzllZQxLdquvrdCyBVvat3seJlYo06gxapUxhU2JWnFygR03sSxnEkvcpf5Y5eibGq315TDp7fKWm8zbUVl71Aqq%2FZtNnlkWmLnQtno9ycvXYbA6W2pF3aKfCayyC0Ja7Fr%2FPW70%2FHO4YM0OKxFvzf0C1MyPjwAAeNpt1VWUU2cYRuHsgxenQt1d8%2F3JOUnqAyR1d%2FcCLQVKO22pu7tQd3d3d3d3d3cXmGzumrWy3pWLs%2FNdPDMpZaWu1783l1Lpf14MnfzO6FbqVupfGkD30iR60JNe9KYP09CXfvRnAAMZxGCGMG3pW6ZjemZgKDMyEzMzC7MyG7MzB3MyF3MzD%2FMyH%2FOzAAuyEAuzCIuyGIuzBGWCRIUqOQU16jRYkqVYmmVYluVYng6GMZwRNGmxAiuyEiuzCquyGquzBmuyFmuzDuuyHuuzARuyERuzCZuyGZuzBVuyFVuzDduyHdszklGMZgd2ZAw7MZZxjGdnJrALu9LJbuzOHkxkT%2FZib%2FZhX%2FZjfw7gQA7iYA7hUA7jcI7gSI7iaI7hWI7jeE7gRE7iZE5hEqdyGqdzBmdyFmdzDudyHudzARdyERdzCZdyGZdzBVdyFVdzDddyHddzAzdyEzdzC7dyG7dzB3dyF3dzD%2FdyH%2FfzAA%2FyEA%2FzCI%2FyGI%2FzBE%2FyFE%2FzDM%2FyHM%2FzAi%2FyEi%2FzCq%2FyGq%2FzBm%2FyFm%2FzDu%2FyHu%2FzAR%2FyER%2FzCZ%2FyGZ%2FzBV%2FyFV%2FzDd%2FyHd%2FzAz%2FyEz%2FzC7%2FyG7%2FzB3%2FyF3%2FzD%2F9mpYwsy7pl3bMeWc%2BsV9Y765NNk%2FXN%2BmX9swHZwGxQNjgb0nPkmInjR0V7Uq%2FOsaPL5Y7ylE3l8tQNN7kVt%2BrmbuHW3LrbcDvam1rtzVvdm50TxrU%2FDBvRtZUY1rV5a3jXFn550Wo%2FXDNWK3dFmh7X9LimxzU9qulRTY9qelTTo5rlKLt2wk7YiaprL%2ByFvbAX9pK9ZC%2FZS%2FaSvWQv2Uv2kr1kr2KvYq9ir2KvYq9ir2KvYq9ir2Kvaq9qr2qvaq9qr2qvaq9qr2qvai%2B3l9vL7eX2cnu5vdxebi%2B3l9sr7BV2CjuFncJOYaewU9gp7NTs1LyrZq9mr2avZq9mr2avZq9mr26vbq9ur26vbq9ur26vbq9ur26vYa9hr2GvYa9hr2GvYa%2FR7oXuQ%2Feh%2B2j%2FUU7e3C3cqc%2FV3fYdof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D92H7kP3ofvQfeg%2BdB%2B6D92H7kP3ofvQfRT29B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6j6nuG3Ya7U5q%2F0hN3nCTW3Grbu4Wrs%2FrP%2Bk%2F6T%2FpP%2Bk%2F6T%2FpP%2Bk%2B6T7pPek86TzpPOk86TzpOuk66TrpOuk66TrpOlWmPu%2F36zrpOuk66TrpOuk66TrpOvl%2FPek76TvpO%2Bk76TvpO%2Bk76TvpO%2Bk76TvpO7V9t%2BqtVs%2FOaOURU6bo6PgPt6rZbwAAAAABVFDDFwAA%29%20format%28%27woff%27%29%2Curl%28data%3Aapplication%2Ffont%2Dsfnt%3Bbase64%2CAAEAAAAPAIAAAwBwRkZUTW0ql9wAAAD8AAAAHEdERUYBRAAEAAABGAAAACBPUy8yZ7lriQAAATgAAABgY21hcNqt44EAAAGYAAAGcmN2dCAAKAL4AAAIDAAAAARnYXNw%2F%2F8AAwAACBAAAAAIZ2x5Zn1dwm8AAAgYAACUpGhlYWQFTS%2FYAACcvAAAADZoaGVhCkQEEQAAnPQAAAAkaG10eNLHIGAAAJ0YAAADdGxvY2Fv%2B5XOAACgjAAAAjBtYXhwAWoA2AAAorwAAAAgbmFtZbMsoJsAAKLcAAADonBvc3S6o%2BU1AACmgAAACtF3ZWJmwxhUUAAAsVQAAAAGAAAAAQAAAADMPaLPAAAAANB2gXUAAAAA0HZzlwABAAAADgAAABgAAAAAAAIAAQABARYAAQAEAAAAAgAAAAMEiwGQAAUABAMMAtAAAABaAwwC0AAAAaQAMgK4AAAAAAUAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAFVLV04AQAAg%2F%2F8DwP8QAAAFFAB7AAAAAQAAAAAAAAAAAAAAIAABAAAABQAAAAMAAAAsAAAACgAAAdwAAQAAAAAEaAADAAEAAAAsAAMACgAAAdwABAGwAAAAaABAAAUAKAAgACsAoAClIAogLyBfIKwgvSISIxsl%2FCYBJvonCScP4APgCeAZ4CngOeBJ4FngYOBp4HngieCX4QnhGeEp4TnhRuFJ4VnhaeF54YnhleGZ4gbiCeIW4hniIeIn4jniSeJZ4mD4%2F%2F%2F%2FAAAAIAAqAKAApSAAIC8gXyCsIL0iEiMbJfwmASb6JwknD%2BAB4AXgEOAg4DDgQOBQ4GDgYuBw4IDgkOEB4RDhIOEw4UDhSOFQ4WDhcOGA4ZDhl%2BIA4gniEOIY4iHiI%2BIw4kDiUOJg%2BP%2F%2F%2F%2F%2Fj%2F9r%2FZv9i4Ajf5N%2B132nfWd4F3P3aHdoZ2SHZE9kOIB0gHCAWIBAgCiAEH%2F4f%2BB%2F3H%2FEf6x%2FlH3wfdh9wH2ofZB9jH10fVx9RH0sfRR9EHt4e3B7WHtUezh7NHsUevx65HrMIFQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAACjAAAAAAAAAA1AAAAIAAAACAAAAADAAAAKgAAACsAAAAEAAAAoAAAAKAAAAAGAAAApQAAAKUAAAAHAAAgAAAAIAoAAAAIAAAgLwAAIC8AAAATAAAgXwAAIF8AAAAUAAAgrAAAIKwAAAAVAAAgvQAAIL0AAAAWAAAiEgAAIhIAAAAXAAAjGwAAIxsAAAAYAAAl%2FAAAJfwAAAAZAAAmAQAAJgEAAAAaAAAm%2BgAAJvoAAAAbAAAnCQAAJwkAAAAcAAAnDwAAJw8AAAAdAADgAQAA4AMAAAAeAADgBQAA4AkAAAAhAADgEAAA4BkAAAAmAADgIAAA4CkAAAAwAADgMAAA4DkAAAA6AADgQAAA4EkAAABEAADgUAAA4FkAAABOAADgYAAA4GAAAABYAADgYgAA4GkAAABZAADgcAAA4HkAAABhAADggAAA4IkAAABrAADgkAAA4JcAAAB1AADhAQAA4QkAAAB9AADhEAAA4RkAAACGAADhIAAA4SkAAACQAADhMAAA4TkAAACaAADhQAAA4UYAAACkAADhSAAA4UkAAACrAADhUAAA4VkAAACtAADhYAAA4WkAAAC3AADhcAAA4XkAAADBAADhgAAA4YkAAADLAADhkAAA4ZUAAADVAADhlwAA4ZkAAADbAADiAAAA4gYAAADeAADiCQAA4gkAAADlAADiEAAA4hYAAADmAADiGAAA4hkAAADtAADiIQAA4iEAAADvAADiIwAA4icAAADwAADiMAAA4jkAAAD1AADiQAAA4kkAAAD%2FAADiUAAA4lkAAAEJAADiYAAA4mAAAAETAAD4%2FwAA%2BP8AAAEUAAH1EQAB9REAAAEVAAH2qgAB9qoAAAEWAAYCCgAAAAABAAABAAAAAAAAAAAAAAAAAAAAAQACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAEAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAL4AAAAAf%2F%2FAAIAAgAoAAABaAMgAAMABwAusQEALzyyBwQA7TKxBgXcPLIDAgDtMgCxAwAvPLIFBADtMrIHBgH8PLIBAgDtMjMRIRElMxEjKAFA%2Fujw8AMg%2FOAoAtAAAQBkAGQETARMAFsAAAEyFh8BHgEdATc%2BAR8BFgYPATMyFhcWFRQGDwEOASsBFx4BDwEGJi8BFRQGBwYjIiYvAS4BPQEHDgEvASY2PwEjIiYnJjU0Nj8BPgE7AScuAT8BNhYfATU0Njc2AlgPJgsLCg%2BeBxYIagcCB57gChECBgMCAQIRCuCeBwIHaggWB54PCikiDyYLCwoPngcWCGoHAgee4AoRAgYDAgECEQrgngcCB2oIFgeeDwopBEwDAgECEQrgngcCB2oIFgeeDwopIg8mCwsKD54HFghqBwIHnuAKEQIGAwIBAhEK4J4HAgdqCBYHng8KKSIPJgsLCg%2BeBxYIagcCB57gChECBgAAAAABAAAAAARMBEwAIwAAATMyFhURITIWHQEUBiMhERQGKwEiJjURISImPQE0NjMhETQ2AcLIFR0BXhUdHRX%2Boh0VyBUd%2FqIVHR0VAV4dBEwdFf6iHRXIFR3%2BohUdHRUBXh0VyBUdAV4VHQAAAAABAHAAAARABEwARQAAATMyFgcBBgchMhYPAQ4BKwEVITIWDwEOASsBFRQGKwEiJj0BISImPwE%2BATsBNSEiJj8BPgE7ASYnASY2OwEyHwEWMj8BNgM5%2BgoFCP6UBgUBDAoGBngGGAp9ARMKBgZ4BhgKfQ8LlAsP%2Fu0KBgZ4BhgKff7tCgYGeAYYCnYFBv6UCAUK%2BhkSpAgUCKQSBEwKCP6UBgwMCKAIDGQMCKAIDK4LDw8LrgwIoAgMZAwIoAgMDAYBbAgKEqQICKQSAAABAGQABQSMBK4AOwAAATIXFhcjNC4DIyIOAwchByEGFSEHIR4EMzI%2BAzUzBgcGIyInLgEnIzczNjcjNzM%2BATc2AujycDwGtSM0QDkXEys4MjAPAXtk%2FtQGAZZk%2FtQJMDlCNBUWOUA0I64eYmunznYkQgzZZHABBdpkhhQ%2BH3UErr1oaS1LMCEPCx4uTzJkMjJkSnRCKw8PIjBKK6trdZ4wqndkLzVkV4UljQAAAgB7AAAETASwAD4ARwAAASEyHgUVHAEVFA4FKwEHITIWDwEOASsBFRQGKwEiJj0BISImPwE%2BATsBNSEiJj8BPgE7ARE0NhcRMzI2NTQmIwGsAV5DakIwFgwBAQwWMEJqQ7ICASAKBgZ4BhgKigsKlQoP%2FvUKBgZ4BhgKdf71CgYGeAYYCnUPtstALS1ABLAaJD8yTyokCwsLJCpQMkAlGmQMCKAIDK8LDg8KrwwIoAgMZAwIoAgMAdsKD8j%2B1EJWVEAAAAEAyAGQBEwCvAAPAAATITIWHQEUBiMhIiY9ATQ2%2BgMgFR0dFfzgFR0dArwdFcgVHR0VyBUdAAAAAgDIAAAD6ASwACUAQQAAARUUBisBFRQGBx4BHQEzMhYdASE1NDY7ATU0NjcuAT0BIyImPQEXFRQWFx4BFAYHDgEdASE1NCYnLgE0Njc%2BAT0BA%2BgdFTJjUVFjMhUd%2FOAdFTJjUVFjMhUdyEE3HCAgHDdBAZBBNxwgIBw3QQSwlhUdZFuVIyOVW5YdFZaWFR2WW5UjI5VbZB0VlshkPGMYDDI8MgwYYzyWljxjGAwyPDIMGGM8ZAAAAAEAAAAAAAAAAAAAAAAxAAAB%2F%2FIBLATCBEEAFgAAATIWFzYzMhYVFAYjISImNTQ2NyY1NDYB9261LCwueKqqeP0ST3FVQgLYBEF3YQ6teHmtclBFaw4MGZnXAAAAAgAAAGQEsASvABoAHgAAAB4BDwEBMzIWHQEhNTQ2OwEBJyY%2BARYfATc2AyEnAwL2IAkKiAHTHhQe%2B1AeFB4B1IcKCSAkCm9wCXoBebbDBLMTIxC7%2FRYlFSoqFSUC6rcQJBQJEJSWEPwecAIWAAAAAAQAAABkBLAETAALABcAIwA3AAATITIWBwEGIicBJjYXARYUBwEGJjURNDYJATYWFREUBicBJjQHARYGIyEiJjcBNjIfARYyPwE2MhkEfgoFCP3MCBQI%2FcwIBQMBCAgI%2FvgICgoDjAEICAoKCP74CFwBbAgFCvuCCgUIAWwIFAikCBQIpAgUBEwKCP3JCAgCNwgK2v74CBQI%2FvgIBQoCJgoF%2FvABCAgFCv3aCgUIAQgIFID%2BlAgKCggBbAgIpAgIpAgAAAAD%2F%2FD%2F8AS6BLoACQANABAAAAAyHwEWFA8BJzcTAScJAQUTA%2BAmDpkNDWPWXyL9mdYCZv4f%2FrNuBLoNmQ4mDlzWYP50%2FZrWAmb8anABTwAAAAEAAAAABLAEsAAPAAABETMyFh0BITU0NjsBEQEhArz6FR384B0V%2Bv4MBLACiv3aHRUyMhUdAiYCJgAAAAEADgAIBEwEnAAfAAABJTYWFREUBgcGLgE2NzYXEQURFAYHBi4BNjc2FxE0NgFwAoUnMFNGT4gkV09IQv2oWEFPiCRXT0hCHQP5ow8eIvzBN1EXGSltchkYEAIJm%2F2iKmAVGilucRoYEQJ%2FJioAAAACAAn%2F%2BAS7BKcAHQApAAAAMh4CFQcXFAcBFgYPAQYiJwEGIycHIi4CND4BBCIOARQeATI%2BATQmAZDItoNOAQFOARMXARY7GikT%2Fu13jgUCZLaDTk6DAXKwlFZWlLCUVlYEp06DtmQCBY15%2Fu4aJRg6FBQBEk0BAU6Dtsi2g1tWlLCUVlaUsJQAAQBkAFgErwREABkAAAE%2BAh4CFRQOAwcuBDU0PgIeAQKJMHt4dVg2Q3mEqD4%2Bp4V4Qzhadnh5A7VESAUtU3ZAOXmAf7JVVbJ%2FgHk5QHZTLQVIAAAAAf%2FTAF4EewSUABgAAAETNjIXEyEyFgcFExYGJyUFBiY3EyUmNjMBl4MHFQeBAaUVBhH%2BqoIHDxH%2Bqf6qEQ8Hgv6lEQYUAyABYRMT%2Fp8RDPn%2BbxQLDPb3DAsUAZD7DBEAAv%2FTAF4EewSUABgAIgAAARM2MhcTITIWBwUTFgYnJQUGJjcTJSY2MwUjFwc3Fyc3IycBl4MHFQeBAaUVBhH%2BqoIHDxH%2Bqf6qEQ8Hgv6lEQYUAfPwxUrBw0rA6k4DIAFhExP%2BnxEM%2Bf5vFAsM9vcMCxQBkPsMEWSO4ouM5YzTAAABAAAAAASwBLAAJgAAATIWHQEUBiMVFBYXBR4BHQEUBiMhIiY9ATQ2NyU%2BAT0BIiY9ATQ2Alh8sD4mDAkBZgkMDwr7ggoPDAkBZgkMJj6wBLCwfPouaEsKFwbmBRcKXQoPDwpdChcF5gYXCktoLvp8sAAAAA0AAAAABLAETAAPABMAIwAnACsALwAzADcARwBLAE8AUwBXAAATITIWFREUBiMhIiY1ETQ2FxUzNSkBIgYVERQWMyEyNjURNCYzFTM1BRUzNSEVMzUFFTM1IRUzNQchIgYVERQWMyEyNjURNCYFFTM1IRUzNQUVMzUhFTM1GQR%2BCg8PCvuCCg8PVWQCo%2F3aCg8PCgImCg8Pc2T8GGQDIGT8GGQDIGTh%2FdoKDw8KAiYKDw%2F872QDIGT8GGQDIGQETA8K%2B%2BYKDw8KBBoKD2RkZA8K%2FqIKDw8KAV4KD2RkyGRkZGTIZGRkZGQPCv6iCg8PCgFeCg9kZGRkZMhkZGRkAAAEAAAAAARMBEwADwAfAC8APwAAEyEyFhURFAYjISImNRE0NikBMhYVERQGIyEiJjURNDYBITIWFREUBiMhIiY1ETQ2KQEyFhURFAYjISImNRE0NjIBkBUdHRX%2BcBUdHQJtAZAVHR0V%2FnAVHR39vQGQFR0dFf5wFR0dAm0BkBUdHRX%2BcBUdHQRMHRX%2BcBUdHRUBkBUdHRX%2BcBUdHRUBkBUd%2FagdFf5wFR0dFQGQFR0dFf5wFR0dFQGQFR0AAAkAAAAABEwETAAPAB8ALwA%2FAE8AXwBvAH8AjwAAEzMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYhMzIWHQEUBisBIiY9ATQ2ATMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYhMzIWHQEUBisBIiY9ATQ2ATMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYhMzIWHQEUBisBIiY9ATQ2MsgVHR0VyBUdHQGlyBUdHRXIFR0dAaXIFR0dFcgVHR389cgVHR0VyBUdHQGlyBUdHRXIFR0dAaXIFR0dFcgVHR389cgVHR0VyBUdHQGlyBUdHRXIFR0dAaXIFR0dFcgVHR0ETB0VyBUdHRXIFR0dFcgVHR0VyBUdHRXIFR0dFcgVHf5wHRXIFR0dFcgVHR0VyBUdHRXIFR0dFcgVHR0VyBUd%2FnAdFcgVHR0VyBUdHRXIFR0dFcgVHR0VyBUdHRXIFR0ABgAAAAAEsARMAA8AHwAvAD8ATwBfAAATMzIWHQEUBisBIiY9ATQ2KQEyFh0BFAYjISImPQE0NgEzMhYdARQGKwEiJj0BNDYpATIWHQEUBiMhIiY9ATQ2ATMyFh0BFAYrASImPQE0NikBMhYdARQGIyEiJj0BNDYyyBUdHRXIFR0dAaUCvBUdHRX9RBUdHf6FyBUdHRXIFR0dAaUCvBUdHRX9RBUdHf6FyBUdHRXIFR0dAaUCvBUdHRX9RBUdHQRMHRXIFR0dFcgVHR0VyBUdHRXIFR3%2BcB0VyBUdHRXIFR0dFcgVHR0VyBUd%2FnAdFcgVHR0VyBUdHRXIFR0dFcgVHQAAAAABACYALAToBCAAFwAACQE2Mh8BFhQHAQYiJwEmND8BNjIfARYyAdECOwgUB7EICPzxBxUH%2FoAICLEHFAirBxYB3QI7CAixBxQI%2FPAICAGACBQHsQgIqwcAAQBuAG4EQgRCACMAAAEXFhQHCQEWFA8BBiInCQEGIi8BJjQ3CQEmND8BNjIXCQE2MgOIsggI%2FvUBCwgIsggVB%2F70%2FvQHFQiyCAgBC%2F71CAiyCBUHAQwBDAcVBDuzCBUH%2FvT%2B9AcVCLIICAEL%2FvUICLIIFQcBDAEMBxUIsggI%2FvUBDAcAAwAX%2F%2BsExQSZABkAJQBJAAAAMh4CFRQHARYUDwEGIicBBiMiLgI0PgEEIg4BFB4BMj4BNCYFMzIWHQEzMhYdARQGKwEVFAYrASImPQEjIiY9ATQ2OwE1NDYBmcSzgk1OASwICG0HFQj%2B1HeOYrSBTU2BAW%2BzmFhYmLOZWFj%2BvJYKD0sKDw8KSw8KlgoPSwoPDwpLDwSZTYKzYo15%2FtUIFQhsCAgBK01NgbTEs4JNWJmzmFhYmLOZIw8KSw8KlgoPSwoPDwpLDwqWCg9LCg8AAAMAF%2F%2FrBMUEmQAZACUANQAAADIeAhUUBwEWFA8BBiInAQYjIi4CND4BBCIOARQeATI%2BATQmBSEyFh0BFAYjISImPQE0NgGZxLOCTU4BLAgIbQcVCP7Ud45itIFNTYEBb7OYWFiYs5lYWP5YAV4KDw8K%2FqIKDw8EmU2Cs2KNef7VCBUIbAgIAStNTYG0xLOCTViZs5hYWJizmYcPCpYKDw8KlgoPAAAAAAIAFwAXBJkEsAAPAC0AAAEzMhYVERQGKwEiJjURNDYFNRYSFRQOAiIuAjU0EjcVDgEVFB4BMj4BNTQmAiZkFR0dFWQVHR0BD6fSW5vW6tabW9KnZ3xyxejFcnwEsB0V%2FnAVHR0VAZAVHeGmPv7ZuHXWm1tbm9Z1uAEnPqY3yHh0xXJyxXR4yAAEAGQAAASwBLAADwAfAC8APwAAATMyFhURFAYrASImNRE0NgEzMhYVERQGKwEiJjURNDYBMzIWFREUBisBIiY1ETQ2BTMyFh0BFAYrASImPQE0NgQBlgoPDwqWCg8P%2Ft6WCg8PCpYKDw%2F%2B3pYKDw8KlgoPD%2F7elgoPDwqWCg8PBLAPCvuCCg8PCgR%2BCg%2F%2BcA8K%2FRIKDw8KAu4KD%2F7UDwr%2BPgoPDwoBwgoPyA8K%2BgoPDwr6Cg8AAAAAAgAaABsElgSWAEcATwAAATIfAhYfATcWFwcXFh8CFhUUDwIGDwEXBgcnBwYPAgYjIi8CJi8BByYnNycmLwImNTQ%2FAjY%2FASc2Nxc3Nj8CNhIiBhQWMjY0AlghKSYFMS0Fhj0rUAMZDgGYBQWYAQ8YA1AwOIYFLDIFJisfISkmBTEtBYY8LFADGQ0ClwYGlwINGQNQLzqFBS0xBSYreLJ%2BfrJ%2BBJYFmAEOGQJQMDmGBSwxBiYrHiIoJgYxLAWGPSxRAxkOApcFBZcCDhkDUTA5hgUtMAYmKiAhKCYGMC0Fhj0sUAIZDgGYBf6ZfrF%2BfrEABwBkAAAEsAUUABMAFwAhACUAKQAtADEAAAEhMhYdASEyFh0BITU0NjMhNTQ2FxUhNQERFAYjISImNREXETMRMxEzETMRMxEzETMRAfQBLCk7ARMKD%2Fu0DwoBEzspASwBLDsp%2FUQpO2RkZGRkZGRkBRQ7KWQPCktLCg9kKTtkZGT%2B1PzgKTs7KQMgZP1EArz9RAK8%2FUQCvP1EArwAAQAMAAAFCATRAB8AABMBNjIXARYGKwERFAYrASImNREhERQGKwEiJjURIyImEgJsCBUHAmAIBQqvDwr6Cg%2F%2B1A8K%2BgoPrwoFAmoCYAcH%2FaAICv3BCg8PCgF3%2FokKDw8KAj8KAAIAZAAAA%2BgEsAARABcAAAERFBYzIREUBiMhIiY1ETQ2MwEjIiY9AQJYOykBLB0V%2FOAVHR0VA1L6FR0EsP5wKTv9dhUdHRUETBUd%2FnAdFfoAAwAXABcEmQSZAA8AGwAwAAAAMh4CFA4CIi4CND4BBCIOARQeATI%2BATQmBTMyFhURMzIWHQEUBisBIiY1ETQ2AePq1ptbW5vW6tabW1ubAb%2FoxXJyxejFcnL%2BfDIKD68KDw8K%2BgoPDwSZW5vW6tabW1ub1urWmztyxejFcnLF6MUNDwr%2B7Q8KMgoPDwoBXgoPAAAAAAL%2FnAAABRQEsAALAA8AACkBAyMDIQEzAzMDMwEDMwMFFP3mKfIp%2FeYBr9EVohTQ%2Fp4b4BsBkP5wBLD%2B1AEs%2FnD%2B1AEsAAAAAAIAZAAABLAEsAAVAC8AAAEzMhYVETMyFgcBBiInASY2OwERNDYBMzIWFREUBiMhIiY1ETQ2OwEyFh0BITU0NgImyBUdvxQLDf65DSYN%2FrkNCxS%2FHQJUMgoPDwr75goPDwoyCg8DhA8EsB0V%2Fj4XEP5wEBABkBAXAcIVHfzgDwr%2BogoPDwoBXgoPDwqvrwoPAAMAFwAXBJkEmQAPABsAMQAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgUzMhYVETMyFgcDBiInAyY2OwERNDYB4%2BrWm1tbm9bq1ptbW5sBv%2BjFcnLF6MVycv58lgoPiRUKDd8NJg3fDQoViQ8EmVub1urWm1tbm9bq1ps7csXoxXJyxejFDQ8K%2Fu0XEP7tEBABExAXARMKDwAAAAMAFwAXBJkEmQAPABsAMQAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JiUTFgYrAREUBisBIiY1ESMiJjcTNjIB4%2BrWm1tbm9bq1ptbW5sBv%2BjFcnLF6MVycv7n3w0KFYkPCpYKD4kVCg3fDSYEmVub1urWm1tbm9bq1ps7csXoxXJyxejFAf7tEBf%2B7QoPDwoBExcQARMQAAAAAAIAAAAABLAEsAAZADkAABMhMhYXExYVERQGBwYjISImJyY1EzQ3Ez4BBSEiBgcDBhY7ATIWHwEeATsBMjY%2FAT4BOwEyNicDLgHhAu4KEwO6BwgFDBn7tAweAgYBB7kDEwKX%2FdQKEgJXAgwKlgoTAiYCEwr6ChMCJgITCpYKDAJXAhIEsA4K%2FXQYGf5XDB4CBggEDRkBqRkYAowKDsgOC%2F4%2BCw4OCpgKDg4KmAoODgsBwgsOAAMAFwAXBJkEmQAPABsAJwAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgUXFhQPAQYmNRE0NgHj6tabW1ub1urWm1tbmwG%2F6MVycsXoxXJy%2Fov9ERH9EBgYBJlbm9bq1ptbW5vW6tabO3LF6MVycsXoxV2%2BDCQMvgwLFQGQFQsAAQAXABcEmQSwACgAAAE3NhYVERQGIyEiJj8BJiMiDgEUHgEyPgE1MxQOAiIuAjQ%2BAjMyA7OHBwsPCv6WCwQHhW2BdMVycsXoxXKWW5vW6tabW1ub1nXABCSHBwQL%2FpYKDwsHhUxyxejFcnLFdHXWm1tbm9bq1ptbAAAAAAIAFwABBJkEsAAaADUAAAE3NhYVERQGIyEiJj8BJiMiDgEVIzQ%2BAjMyEzMUDgIjIicHBiY1ETQ2MyEyFg8BFjMyPgEDs4cHCw8L%2FpcLBAeGboF0xXKWW5vWdcDrllub1nXAnIYHCw8LAWgKBQiFboJ0xXIEJIcHBAv%2BlwsPCweGS3LFdHXWm1v9v3XWm1t2hggFCgFoCw8LB4VMcsUAAAAKAGQAAASwBLAADwAfAC8APwBPAF8AbwB%2FAI8AnwAAEyEyFhURFAYjISImNRE0NgUhIgYVERQWMyEyNjURNCYFMzIWHQEUBisBIiY9ATQ2MyEyFh0BFAYjISImPQE0NgczMhYdARQGKwEiJj0BNDYzITIWHQEUBiMhIiY9ATQ2BzMyFh0BFAYrASImPQE0NjMhMhYdARQGIyEiJj0BNDYHMzIWHQEUBisBIiY9ATQ2MyEyFh0BFAYjISImPQE0Nn0EGgoPDwr75goPDwPA%2FK4KDw8KA1IKDw%2F9CDIKDw8KMgoPD9IBwgoPDwr%2BPgoPD74yCg8PCjIKDw%2FSAcIKDw8K%2Fj4KDw%2B%2BMgoPDwoyCg8P0gHCCg8PCv4%2BCg8PvjIKDw8KMgoPD9IBwgoPDwr%2BPgoPDwSwDwr7ggoPDwoEfgoPyA8K%2FK4KDw8KA1IKD2QPCjIKDw8KMgoPDwoyCg8PCjIKD8gPCjIKDw8KMgoPDwoyCg8PCjIKD8gPCjIKDw8KMgoPDwoyCg8PCjIKD8gPCjIKDw8KMgoPDwoyCg8PCjIKDwAAAAACAAAAAARMBLAAGQAjAAABNTQmIyEiBh0BIyIGFREUFjMhMjY1ETQmIyE1NDY7ATIWHQEDhHVT%2FtRSdmQpOzspA4QpOzsp%2FageFMgUHgMgyFN1dlLIOyn9qCk7OykCWCk7lhUdHRWWAAIAZAAABEwETAAJADcAABMzMhYVESMRNDYFMhcWFREUBw4DIyIuAScuAiMiBwYjIicmNRE%2BATc2HgMXHgIzMjc2fTIKD2QPA8AEBRADIUNAMRwaPyonKSxHHlVLBwgGBQ4WeDsXKC4TOQQpLUUdZ1AHBEwPCvvNBDMKDzACBhH%2BWwYGO1AkDQ0ODg8PDzkFAwcPAbY3VwMCAwsGFAEODg5XCAAAAwAAAAAEsASXACEAMQBBAAAAMh4CFREUBisBIiY1ETQuASAOARURFAYrASImNRE0PgEDMzIWFREUBisBIiY1ETQ2ITMyFhURFAYrASImNRE0NgHk6N6jYw8KMgoPjeT%2B%2BuSNDwoyCg9joyqgCAwMCKAIDAwCYKAIDAwIoAgMDASXY6PedP7UCg8PCgEsf9FyctF%2F%2FtQKDw8KASx03qP9wAwI%2FjQIDAwIAcwIDAwI%2FjQIDAwIAcwIDAAAAAACAAAA0wRHA90AFQA5AAABJTYWFREUBiclJisBIiY1ETQ2OwEyBTc2Mh8BFhQPARcWFA8BBiIvAQcGIi8BJjQ%2FAScmND8BNjIXAUEBAgkMDAn%2B%2FhUZ%2BgoPDwr6GQJYeAcUByIHB3h4BwciBxQHeHgHFAciBwd3dwcHIgcUBwMurAYHCv0SCgcGrA4PCgFeCg%2BEeAcHIgcUB3h4BxQHIgcHd3cHByIHFAd4eAcUByIICAAAAAACAAAA0wNyA90AFQAvAAABJTYWFREUBiclJisBIiY1ETQ2OwEyJTMWFxYVFAcGDwEiLwEuATc2NTQnJjY%2FATYBQQECCQwMCf7%2BFRn6Cg8PCvoZAdIECgZgWgYLAwkHHQcDBkhOBgMIHQcDLqwGBwr9EgoHBqwODwoBXgoPZAEJgaGafwkBAQYXBxMIZ36EaggUBxYFAAAAAAMAAADEBGID7AAbADEASwAAATMWFxYVFAYHBgcjIi8BLgE3NjU0JicmNj8BNgUlNhYVERQGJyUmKwEiJjURNDY7ATIlMxYXFhUUBwYPASIvAS4BNzY1NCcmNj8BNgPHAwsGh0RABwoDCQcqCAIGbzs3BgIJKgf9ggECCQwMCf7%2BFRn6Cg8PCvoZAdIECgZgWgYLAwkHHQcDBkhOBgMIHQcD7AEJs9lpy1QJAQYiBhQIlrJarEcJFAYhBb6sBgcK%2FRIKBwasDg8KAV4KD2QBCYGhmn8JAQEGFwcTCGd%2BhGoIFQYWBQAAAAANAAAAAASwBLAACQAVABkAHQAhACUALQA7AD8AQwBHAEsATwAAATMVIxUhFSMRIQEjFTMVIREjESM1IQURIREhESERBSM1MwUjNTMBMxEhETM1MwEzFSMVIzUjNTM1IzUhBREhEQcjNTMFIzUzASM1MwUhNSEB9GRk%2FnBkAfQCvMjI%2FtTIZAJY%2B7QBLAGQASz84GRkArxkZP1EyP4MyGQB9MhkyGRkyAEs%2FUQBLGRkZAOEZGT%2BDGRkAfT%2B1AEsA4RkZGQCWP4MZMgBLAEsyGT%2B1AEs%2FtQBLMhkZGT%2BDP4MAfRk%2FtRkZGRkyGTI%2FtQBLMhkZGT%2B1GRkZAAAAAAJAAAAAASwBLAAAwAHAAsADwATABcAGwAfACMAADcjETMTIxEzASMRMxMjETMBIxEzASE1IRcjNTMXIzUzBSM1M2RkZMhkZAGQyMjIZGQBLMjI%2FOD%2B1AEsyGRkyGRkASzIyMgD6PwYA%2Bj8GAPo%2FBgD6PwYA%2Bj7UGRkW1tbW1sAAAIAAAAKBKYEsAANABUAAAkBFhQHAQYiJwETNDYzBCYiBhQWMjYB9AKqCAj%2BMAgUCP1WAQ8KAUM7Uzs7UzsEsP1WCBQI%2FjAICAKqAdsKD807O1Q7OwAAAAADAAAACgXSBLAADQAZACEAAAkBFhQHAQYiJwETNDYzIQEWFAcBBiIvAQkBBCYiBhQWMjYB9AKqCAj%2BMAgUCP1WAQ8KAwYCqggI%2FjAIFAg4Aaj9RP7TO1M7O1M7BLD9VggUCP4wCAgCqgHbCg%2F9VggUCP4wCAg4AaoCvM07O1Q7OwAAAAABAGQAAASwBLAAJgAAASEyFREUDwEGJjURNCYjISIPAQYWMyEyFhURFAYjISImNRE0PwE2ASwDOUsSQAgKDwr9RBkSQAgFCgK8Cg8PCvyuCg8SixIEsEv8fBkSQAgFCgO2Cg8SQAgKDwr8SgoPDwoDzxkSixIAAAABAMj%2F%2FwRMBLAACgAAEyEyFhURCQERNDb6AyAVHf4%2B%2Fj4dBLAdFfuCAbz%2BQwR%2FFR0AAAAAAwAAAAAEsASwABUARQBVAAABISIGBwMGHwEeATMhMjY%2FATYnAy4BASMiBg8BDgEjISImLwEuASsBIgYVERQWOwEyNj0BNDYzITIWHQEUFjsBMjY1ETQmASEiBg8BBhYzITI2LwEuAQM2%2FkQLEAFOBw45BhcKAcIKFwY%2BDgdTARABVpYKFgROBBYK%2FdoKFgROBBYKlgoPDwqWCg8PCgLuCg8PCpYKDw%2F%2Bsf4MChMCJgILCgJYCgsCJgITBLAPCv7TGBVsCQwMCWwVGAEtCg%2F%2BcA0JnAkNDQmcCQ0PCv12Cg8PCpYKDw8KlgoPDwoCigoP%2FagOCpgKDg4KmAoOAAAAAAQAAABkBLAETAAdACEAKQAxAAABMzIeAh8BMzIWFREUBiMhIiY1ETQ2OwE%2BBAEVMzUEIgYUFjI2NCQyFhQGIiY0AfTIOF00JAcGlik7Oyn8GCk7OymWAgknM10ByGT%2Bz76Hh76H%2Fu9WPDxWPARMKTs7FRQ7Kf2oKTs7KQJYKTsIG0U1K%2F7UZGRGh76Hh74IPFY8PFYAAAAAAgA1AAAEsASvACAAIwAACQEWFx4BHwEVITUyNi8BIQYHBh4CMxUhNTY3PgE%2FAQEDIQMCqQGBFCgSJQkK%2Fl81LBFS%2Fnk6IgsJKjIe%2FpM4HAwaBwcBj6wBVKIEr%2FwaMioTFQECQkJXLd6RWSIuHAxCQhgcDCUNDQPu%2FVoByQAAAAADAGQAAAPwBLAAJwAyADsAAAEeBhUUDgMjITU%2BATURNC4EJzUFMh4CFRQOAgclMzI2NTQuAisBETMyNjU0JisBAvEFEzUwOyodN1htbDD%2BDCk7AQYLFyEaAdc5dWM%2BHy0tEP6Pi05pESpTPnbYUFJ9Xp8CgQEHGB0zOlIuQ3VONxpZBzMoAzsYFBwLEAkHRwEpSXNDM1s6KwkxYUopOzQb%2FK5lUFqBAAABAMgAAANvBLAAGQAAARcOAQcDBhYXFSE1NjcTNjQuBCcmJzUDbQJTQgeECSxK%2Fgy6Dq0DAw8MHxUXDQYEsDkTNSj8uTEoBmFhEFIDQBEaExAJCwYHAwI5AAAAAAL%2FtQAABRQEsAAlAC8AAAEjNC4FKwERFBYfARUhNTI%2BAzURIyIOBRUjESEFIxEzByczESM3BRQyCAsZEyYYGcgyGRn%2BcAQOIhoWyBkYJhMZCwgyA%2Bj7m0tLfX1LS30DhBUgFQ4IAwH8rhYZAQJkZAEFCRUOA1IBAwgOFSAVASzI%2FOCnpwMgpwACACH%2FtQSPBLAAJQAvAAABIzQuBSsBERQWHwEVITUyPgM1ESMiDgUVIxEhEwc1IRUnNxUhNQRMMggLGRMmGBnIMhkZ%2FnAEDiIaFsgZGCYTGQsIMgPoQ6f84KenAyADhBUgFQ4IAwH9dhYZAQJkZAEFCRUOAooBAwgOFSAVASz7gn1LS319S0sABAAAAAAEsARMAA8AHwAvAD8AABMhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2EyEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYyAlgVHR0V%2FagVHR0VA%2BgVHR0V%2FBgVHR0VAyAVHR0V%2FOAVHR0VBEwVHR0V%2B7QVHR0ETB0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0ABAAAAAAEsARMAA8AHwAvAD8AABMhMhYdARQGIyEiJj0BNDYDITIWHQEUBiMhIiY9ATQ2EyEyFh0BFAYjISImPQE0NgMhMhYdARQGIyEiJj0BNDb6ArwVHR0V%2FUQVHR2zBEwVHR0V%2B7QVHR3dArwVHR0V%2FUQVHR2zBEwVHR0V%2B7QVHR0ETB0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0ABAAAAAAEsARMAA8AHwAvAD8AAAE1NDYzITIWHQEUBiMhIiYBNTQ2MyEyFh0BFAYjISImEzU0NjMhMhYdARQGIyEiJgE1NDYzITIWHQEUBiMhIiYB9B0VAlgVHR0V%2FagVHf5wHRUD6BUdHRX8GBUdyB0VAyAVHR0V%2FOAVHf7UHRUETBUdHRX7tBUdA7ZkFR0dFWQVHR3%2B6WQVHR0VZBUdHf7pZBUdHRVkFR0d%2FulkFR0dFWQVHR0AAAQAAAAABLAETAAPAB8ALwA%2FAAATITIWHQEUBiMhIiY9ATQ2EyEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2MgRMFR0dFfu0FR0dFQRMFR0dFfu0FR0dFQRMFR0dFfu0FR0dFQRMFR0dFfu0FR0dBEwdFWQVHR0VZBUd%2FtQdFWQVHR0VZBUd%2FtQdFWQVHR0VZBUd%2FtQdFWQVHR0VZBUdAAgAAAAABLAETAAPAB8ALwA%2FAE8AXwBvAH8AABMzMhYdARQGKwEiJj0BNDYpATIWHQEUBiMhIiY9ATQ2ATMyFh0BFAYrASImPQE0NikBMhYdARQGIyEiJj0BNDYBMzIWHQEUBisBIiY9ATQ2KQEyFh0BFAYjISImPQE0NgEzMhYdARQGKwEiJj0BNDYpATIWHQEUBiMhIiY9ATQ2MmQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR3%2B6WQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR3%2B6WQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR3%2B6WQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR0ETB0VZBUdHRVkFR0dFWQVHR0VZBUd%2FtQdFWQVHR0VZBUdHRVkFR0dFWQVHf7UHRVkFR0dFWQVHR0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0dFWQVHR0VZBUdAAAG%2F5wAAASwBEwAAwATACMAKgA6AEoAACEjETsCMhYdARQGKwEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2BQc1IzUzNQUhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2AZBkZJZkFR0dFWQVHR0VAfQVHR0V%2FgwVHR3%2B%2BqfIyAHCASwVHR0V%2FtQVHR0VAlgVHR0V%2FagVHR0ETB0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR36fUtkS68dFWQVHR0VZBUd%2FtQdFWQVHR0VZBUdAAAABgAAAAAFFARMAA8AEwAjACoAOgBKAAATMzIWHQEUBisBIiY9ATQ2ASMRMwEhMhYdARQGIyEiJj0BNDYFMxUjFSc3BSEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYyZBUdHRVkFR0dA2dkZPyuAfQVHR0V%2FgwVHR0EL8jIp6f75gEsFR0dFf7UFR0dFQJYFR0dFf2oFR0dBEwdFWQVHR0VZBUd%2B7QETP7UHRVkFR0dFWQVHchkS319rx0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0AAAAAAgAAAMgEsAPoAA8AEgAAEyEyFhURFAYjISImNRE0NgkCSwLuHywsH%2F0SHywsBIT%2B1AEsA%2BgsH%2F12HywsHwKKHyz9RAEsASwAAwAAAAAEsARMAA8AFwAfAAATITIWFREUBiMhIiY1ETQ2FxE3BScBExEEMhYUBiImNCwEWBIaGhL7qBIaGkr3ASpKASXs%2FNJwTk5wTgRMGhL8DBIaGhID9BIaZP0ftoOcAT7%2B4AH0dE5vT09vAAAAAAIA2wAFBDYEkQAWAB4AAAEyHgEVFAcOAQ8BLgQnJjU0PgIWIgYUFjI2NAKIdcZzRkWyNjYJIV5YbSk8RHOft7eCgreCBJF4ynVzj23pPz4IIWZomEiEdVijeUjDgriBgbgAAAACABcAFwSZBJkADwAXAAAAMh4CFA4CIi4CND4BAREiDgEUHgEB4%2BrWm1tbm9bq1ptbW5sBS3TFcnLFBJlbm9bq1ptbW5vW6tab%2FG8DVnLF6MVyAAACAHUAAwPfBQ8AGgA1AAABHgYVFA4DBy4DNTQ%2BBQMOAhceBBcWNj8BNiYnLgInJjc2IyYCKhVJT1dOPiUzVnB9P1SbfEokP0xXUEm8FykoAwEbITEcExUWAgYCCQkFEikMGiACCAgFD0iPdXdzdYdFR4BeRiYEBTpjl1lFh3ZzeHaQ%2Ff4hS4I6JUEnIw4IBwwQIgoYBwQQQSlZtgsBAAAAAwAAAAAEywRsAAwAKgAvAAABNz4CHgEXHgEPAiUhMhcHISIGFREUFjMhMjY9ATcRFAYjISImNRE0NgkBBzcBA%2BhsAgYUFR0OFgoFBmz9BQGQMje7%2FpApOzspAfQpO8i7o%2F5wpbm5Azj%2BlqE3AWMD9XMBAgIEDw4WKgsKc8gNuzsp%2FgwpOzsptsj%2BtKW5uaUBkKW5%2Ftf%2BljKqAWMAAgAAAAAEkwRMABsANgAAASEGByMiBhURFBYzITI2NTcVFAYjISImNRE0NgUBFhQHAQYmJzUmDgMHPgY3NT4BAV4BaaQ0wyk7OykB9Ck7yLml%2FnClubkCfwFTCAj%2BrAcLARo5ZFRYGgouOUlARioTAQsETJI2Oyn%2BDCk7OymZZ6W5uaUBkKW5G%2F7TBxUH%2Fs4GBAnLAQINFjAhO2JBNB0UBwHSCgUAAAAAAgAAAAAEnQRMAB0ANQAAASEyFwchIgYVERQWMyEyNj0BNxUUBiMhIiY1ETQ2CQE2Mh8BFhQHAQYiLwEmND8BNjIfARYyAV4BXjxDsv6jKTs7KQH0KTvIuaX%2BcKW5uQHKAYsHFQdlBwf97QcVB%2FgHB2UHFQdvCBQETBexOyn%2BDCk7OylFyNulubmlAZCluf4zAYsHB2UHFQf97AcH%2BAcVB2UHB28HAAAAAQAKAAoEpgSmADsAAAkBNjIXARYGKwEVMzU0NhcBFhQHAQYmPQEjFTMyFgcBBiInASY2OwE1IxUUBicBJjQ3ATYWHQEzNSMiJgE%2BAQgIFAgBBAcFCqrICggBCAgI%2FvgICsiqCgUH%2FvwIFAj%2B%2BAgFCq%2FICgj%2B%2BAgIAQgICsivCgUDlgEICAj%2B%2BAgKyK0KBAf%2B%2FAcVB%2F73BwQKrcgKCP74CAgBCAgKyK0KBAcBCQcVBwEEBwQKrcgKAAEAyAAAA4QETAAZAAATMzIWFREBNhYVERQGJwERFAYrASImNRE0NvpkFR0B0A8VFQ%2F%2BMB0VZBUdHQRMHRX%2BSgHFDggV%2FBgVCA4Bxf5KFR0dFQPoFR0AAAABAAAAAASwBEwAIwAAEzMyFhURATYWFREBNhYVERQGJwERFAYnAREUBisBIiY1ETQ2MmQVHQHQDxUB0A8VFQ%2F%2BMBUP%2FjAdFWQVHR0ETB0V%2FkoBxQ4IFf5KAcUOCBX8GBUIDgHF%2FkoVCA4Bxf5KFR0dFQPoFR0AAAABAJ0AGQSwBDMAFQAAAREUBicBERQGJwEmNDcBNhYVEQE2FgSwFQ%2F%2BMBUP%2FhQPDwHsDxUB0A8VBBr8GBUIDgHF%2FkoVCA4B4A4qDgHgDggV%2FkoBxQ4IAAAAAQDIABYEMwQ2AAsAABMBFhQHAQYmNRE0NvMDLhIS%2FNISGRkEMv4OCx4L%2Fg4LDhUD6BUOAAIAyABkA4QD6AAPAB8AABMzMhYVERQGKwEiJjURNDYhMzIWFREUBisBIiY1ETQ2%2BsgVHR0VyBUdHQGlyBUdHRXIFR0dA%2BgdFfzgFR0dFQMgFR0dFfzgFR0dFQMgFR0AAAEAyABkBEwD6AAPAAABERQGIyEiJjURNDYzITIWBEwdFfzgFR0dFQMgFR0DtvzgFR0dFQMgFR0dAAAAAAEAAAAZBBMEMwAVAAABETQ2FwEWFAcBBiY1EQEGJjURNDYXAfQVDwHsDw%2F%2BFA8V%2FjAPFRUPAmQBthUIDv4gDioO%2FiAOCBUBtv47DggVA%2BgVCA4AAAH%2F%2FgACBLMETwAjAAABNzIWFRMUBiMHIiY1AwEGJjUDAQYmNQM0NhcBAzQ2FwEDNDYEGGQUHgUdFWQVHQL%2BMQ4VAv4yDxUFFQ8B0gIVDwHSAh0ETgEdFfwYFR0BHRUBtf46DwkVAbX%2BOQ4JFAPoFQkP%2Fj4BthQJDv49AbYVHQAAAQEsAAAD6ARMABkAAAEzMhYVERQGKwEiJjURAQYmNRE0NhcBETQ2A1JkFR0dFWQVHf4wDxUVDwHQHQRMHRX8GBUdHRUBtv47DggVA%2BgVCA7%2BOwG2FR0AAAIAZADIBLAESAALABsAAAkBFgYjISImNwE2MgEhMhYdARQGIyEiJj0BNDYCrgH1DwkW%2B%2B4WCQ8B9Q8q%2FfcD6BUdHRX8GBUdHQQ5%2FeQPFhYPAhwP%2FUgdFWQVHR0VZBUdAAEAiP%2F8A3UESgAFAAAJAgcJAQN1%2FqABYMX92AIoA4T%2Bn%2F6fxgIoAiYAAAAAAQE7%2F%2FwEKARKAAUAAAkBJwkBNwQo%2FdnGAWH%2Bn8YCI%2F3ZxgFhAWHGAAIAFwAXBJkEmQAPADMAAAAyHgIUDgIiLgI0PgEFIyIGHQEjIgYdARQWOwEVFBY7ATI2PQEzMjY9ATQmKwE1NCYB4%2BrWm1tbm9bq1ptbW5sBfWQVHZYVHR0Vlh0VZBUdlhUdHRWWHQSZW5vW6tabW1ub1urWm7odFZYdFWQVHZYVHR0Vlh0VZBUdlhUdAAAAAAIAFwAXBJkEmQAPAB8AAAAyHgIUDgIiLgI0PgEBISIGHQEUFjMhMjY9ATQmAePq1ptbW5vW6tabW1ubAkX%2BDBUdHRUB9BUdHQSZW5vW6tabW1ub1urWm%2F5%2BHRVkFR0dFWQVHQACABcAFwSZBJkADwAzAAAAMh4CFA4CIi4CND4BBCIPAScmIg8BBhQfAQcGFB8BFjI%2FARcWMj8BNjQvATc2NC8BAePq1ptbW5vW6tabW1ubAeUZCXh4CRkJjQkJeHgJCY0JGQl4eAkZCY0JCXh4CQmNBJlbm9bq1ptbW5vW6tabrQl4eAkJjQkZCXh4CRkJjQkJeHgJCY0JGQl4eAkZCY0AAgAXABcEmQSZAA8AJAAAADIeAhQOAiIuAjQ%2BAQEnJiIPAQYUHwEWMjcBNjQvASYiBwHj6tabW1ub1urWm1tbmwEVVAcVCIsHB%2FIHFQcBdwcHiwcVBwSZW5vW6tabW1ub1urWm%2F4xVQcHiwgUCPEICAF3BxUIiwcHAAAAAAMAFwAXBJkEmQAPADsASwAAADIeAhQOAiIuAjQ%2BAQUiDgMVFDsBFjc%2BATMyFhUUBgciDgUHBhY7ATI%2BAzU0LgMTIyIGHQEUFjsBMjY9ATQmAePq1ptbW5vW6tabW1ubAT8dPEIyIRSDHgUGHR8UFw4TARkOGhITDAIBDQ6tBx4oIxgiM0Q8OpYKDw8KlgoPDwSZW5vW6tabW1ub1urWm5ELHi9PMhkFEBQQFRIXFgcIBw4UHCoZCBEQKDhcNi9IKhsJ%2FeMPCpYKDw8KlgoPAAADABcAFwSZBJkADwAfAD4AAAAyHgIUDgIiLgI0PgEFIyIGHQEUFjsBMjY9ATQmAyMiBh0BFBY7ARUjIgYdARQWMyEyNj0BNCYrARE0JgHj6tabW1ub1urWm1tbmwGWlgoPDwqWCg8PCvoKDw8KS0sKDw8KAV4KDw8KSw8EmVub1urWm1tbm9bq1ptWDwqWCg8PCpYKD%2F7UDwoyCg%2FIDwoyCg8PCjIKDwETCg8AAgAAAAAEsASwAC8AXwAAATMyFh0BHgEXMzIWHQEUBisBDgEHFRQGKwEiJj0BLgEnIyImPQE0NjsBPgE3NTQ2ExUUBisBIiY9AQ4BBzMyFh0BFAYrAR4BFzU0NjsBMhYdAT4BNyMiJj0BNDY7AS4BAg2WCg9nlxvCCg8PCsIbl2cPCpYKD2eXG8IKDw8KwhuXZw%2B5DwqWCg9EZheoCg8PCqgXZkQPCpYKD0RmF6gKDw8KqBdmBLAPCsIbl2cPCpYKD2eXG8IKDw8KwhuXZw8KlgoPZ5cbwgoP%2Fs2oCg8PCqgXZkQPCpYKD0RmF6gKDw8KqBdmRA8KlgoPRGYAAwAXABcEmQSZAA8AGwA%2FAAAAMh4CFA4CIi4CND4BBCIOARQeATI%2BATQmBxcWFA8BFxYUDwEGIi8BBwYiLwEmND8BJyY0PwE2Mh8BNzYyAePq1ptbW5vW6tabW1ubAb%2FoxXJyxejFcnKaQAcHfHwHB0AHFQd8fAcVB0AHB3x8BwdABxUHfHwHFQSZW5vW6tabW1ub1urWmztyxejFcnLF6MVaQAcVB3x8BxUHQAcHfHwHB0AHFQd8fAcVB0AHB3x8BwAAAAMAFwAXBJkEmQAPABsAMAAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgcXFhQHAQYiLwEmND8BNjIfATc2MgHj6tabW1ub1urWm1tbmwG%2F6MVycsXoxXJyg2oHB%2F7ACBQIyggIagcVB0%2FFBxUEmVub1urWm1tbm9bq1ps7csXoxXJyxejFfWoHFQf%2BvwcHywcVB2oICE%2FFBwAAAAMAFwAXBJkEmQAPABgAIQAAADIeAhQOAiIuAjQ%2BAQUiDgEVFBcBJhcBFjMyPgE1NAHj6tabW1ub1urWm1tbmwFLdMVyQQJLafX9uGhzdMVyBJlbm9bq1ptbW5vW6tabO3LFdHhpAktB0P24PnLFdHMAAAAAAQAXAFMEsAP5ABUAABMBNhYVESEyFh0BFAYjIREUBicBJjQnAgoQFwImFR0dFf3aFxD99hACRgGrDQoV%2Ft0dFcgVHf7dFQoNAasNJgAAAAABAAAAUwSZA%2FkAFQAACQEWFAcBBiY1ESEiJj0BNDYzIRE0NgJ%2FAgoQEP32EBf92hUdHRUCJhcD8f5VDSYN%2FlUNChUBIx0VyBUdASMVCgAAAAEAtwAABF0EmQAVAAAJARYGIyERFAYrASImNREhIiY3ATYyAqoBqw0KFf7dHRXIFR3%2B3RUKDQGrDSYEif32EBf92hUdHRUCJhcQAgoQAAAAAQC3ABcEXQSwABUAAAEzMhYVESEyFgcBBiInASY2MyERNDYCJsgVHQEjFQoN%2FlUNJg3%2BVQ0KFQEjHQSwHRX92hcQ%2FfYQEAIKEBcCJhUdAAABAAAAtwSZBF0AFwAACQEWFAcBBiY1EQ4DBz4ENxE0NgJ%2FAgoQEP32EBdesKWBJAUsW4fHfhcEVf5VDSYN%2FlUNChUBIwIkRHVNabGdcUYHAQYVCgACAAAAAASwBLAAFQArAAABITIWFREUBi8BBwYiLwEmND8BJyY2ASEiJjURNDYfATc2Mh8BFhQPARcWBgNSASwVHRUOXvkIFAhqBwf5Xg4I%2FiH%2B1BUdFQ5e%2BQgUCGoHB%2FleDggEsB0V%2FtQVCA5e%2BQcHaggUCPleDhX7UB0VASwVCA5e%2BQcHaggUCPleDhUAAAACAEkASQRnBGcAFQArAAABFxYUDwEXFgYjISImNRE0Nh8BNzYyASEyFhURFAYvAQcGIi8BJjQ%2FAScmNgP2agcH%2BV4OCBX%2B1BUdFQ5e%2BQgU%2FQwBLBUdFQ5e%2BQgUCGoHB%2FleDggEYGoIFAj5Xg4VHRUBLBUIDl75B%2F3xHRX%2B1BUIDl75BwdqCBQI%2BV4OFQAAAAADABcAFwSZBJkADwAfAC8AAAAyHgIUDgIiLgI0PgEFIyIGFxMeATsBMjY3EzYmAyMiBh0BFBY7ATI2PQE0JgHj6tabW1ub1urWm1tbmwGz0BQYBDoEIxQ2FCMEOgQYMZYKDw8KlgoPDwSZW5vW6tabW1ub1urWm7odFP7SFB0dFAEuFB3%2BDA8KlgoPDwqWCg8AAAAABQAAAAAEsASwAEkAVQBhAGgAbwAAATIWHwEWHwEWFxY3Nj8BNjc2MzIWHwEWHwIeATsBMhYdARQGKwEiBh0BIREjESE1NCYrASImPQE0NjsBMjY1ND8BNjc%2BBAUHBhY7ATI2LwEuAQUnJgYPAQYWOwEyNhMhIiY1ESkBERQGIyERAQQJFAUFFhbEFQ8dCAsmxBYXERUXMA0NDgQZCAEPCj0KDw8KMgoP%2FnDI%2FnAPCjIKDw8KPQsOCRkFDgIGFRYfAp2mBwQK2woKAzMDEP41sQgQAzMDCgrnCwMe%2FokKDwGQAlgPCv6JBLAEAgIKDXYNCxUJDRZ2DQoHIREQFRh7LAkLDwoyCg8PCq8BLP7UrwoPDwoyCg8GBQQwgBkUAwgWEQ55ogcKDgqVCgSqnQcECo8KDgr8cg8KAXf%2BiQoPAZAAAAAAAgAAAAwErwSmACsASQAAATYWFQYCDgQuAScmByYOAQ8BBiY1NDc%2BATc%2BAScuAT4BNz4GFyYGBw4BDwEOBAcOARY2Nz4CNz4DNz4BBI0IGgItQmxhi2KORDg9EQQRMxuZGhYqCFUYEyADCQIQOjEnUmFch3vAJQgdHyaiPT44XHRZUhcYDhItIRmKcVtGYWtbKRYEBKYDEwiy%2Ft3IlVgxEQgLCwwBAQIbG5kYEyJAJghKFRE8Hzdff4U%2FM0o1JSMbL0QJGCYvcSEhHjZST2c1ODwEJygeW0AxJUBff1UyFAABAF0AHgRyBM8ATwAAAQ4BHgQXLgc%2BATceAwYHDgQHBicmNzY3PgQuAScWDgMmJy4BJyY%2BBDcGHgM3PgEuAicmPgMCjScfCic4R0IgBBsKGAoQAwEJEg5gikggBhANPkpTPhZINx8SBgsNJysiCRZOQQoVNU1bYC9QZwICBAUWITsoCAYdJzIYHw8YIiYHDyJJYlkEz0OAZVxEOSQMBzgXOB42IzElKRIqg5Gnl0o3Z0c6IAYWCwYNAwQFIDhHXGF1OWiqb0sdBxUknF0XNTQ8PEUiNWNROBYJDS5AQVUhVZloUSkAAAAAA%2F%2FcAGoE1ARGABsAPwBRAAAAMh4FFA4FIi4FND4EBSYGFxYVFAYiJjU0NzYmBwYHDgEXHgQyPgM3NiYnJgUHDgEXFhcWNj8BNiYnJicuAQIGpJ17bk85HBw6T257naKde25POhwcOU9uewIPDwYIGbD4sBcIBw5GWg0ECxYyWl%2BDiINfWjIWCwQMWv3%2FIw8JCSU4EC0OIw4DDywtCyIERi1JXGJcSSpJXGJcSS0tSVxiXEkqSVxiXEncDwYTOT58sLB8OzcTBg9FcxAxEiRGXkQxMEVeRSQSMRF1HiQPLxJEMA0EDyIPJQ8sSRIEAAAABP%2FcAAAE1ASwABQAJwA7AEwAACEjNy4ENTQ%2BBTMyFzczEzceARUUDgMHNz4BNzYmJyYlBgcOARceBBc3LgE1NDc2JhcHDgEXFhcWNj8CJyYnLgECUJQfW6l2WSwcOU9ue51SPUEglCYvbIknUGqYUi5NdiYLBAw2%2FVFGWg0ECxIqSExoNSlrjxcIB3wjDwkJJTgQLQ4MFgMsLQsieBRhdHpiGxVJXGJcSS0Pef5StVXWNBpacm5jGq0xiD8SMRFGckVzEDESHjxRQTkNmhKnbjs3EwZwJA8vEkQwDQQPC1YELEkSBAAAAAP%2FngAABRIEqwALABgAKAAAJwE2FhcBFgYjISImJSE1NDY7ATIWHQEhAQczMhYPAQ4BKwEiJi8BJjZaAoIUOBQCghUbJfryJRsBCgFZDwqWCg8BWf5DaNAUGAQ6BCMUNhQjBDoEGGQEKh8FIfvgIEdEhEsKDw8KSwLT3x0U%2FBQdHRT8FB0AAAABAGQAFQSwBLAAKAAAADIWFREBHgEdARQGJyURFh0BFAYvAQcGJj0BNDcRBQYmPQE0NjcBETQCTHxYAWsPFhgR%2FplkGhPNzRMaZP6ZERgWDwFrBLBYPv6t%2FrsOMRQpFA0M%2Bf75XRRAFRAJgIAJEBVAFF0BB%2FkMDRQpFDEOAUUBUz4AAAARAAAAAARMBLAAHQAnACsALwAzADcAOwA%2FAEMARwBLAE8AUwBXAFsAXwBjAAABMzIWHQEzMhYdASE1NDY7ATU0NjsBMhYdASE1NDYBERQGIyEiJjURFxUzNTMVMzUzFTM1MxUzNTMVMzUFFTM1MxUzNTMVMzUzFTM1MxUzNQUVMzUzFTM1MxUzNTMVMzUzFTM1A1JkFR0yFR37tB0VMh0VZBUdAfQdAQ8dFfwYFR1kZGRkZGRkZGRk%2FHxkZGRkZGRkZGT8fGRkZGRkZGRkZASwHRUyHRWWlhUdMhUdHRUyMhUd%2FnD9EhUdHRUC7shkZGRkZGRkZGRkyGRkZGRkZGRkZGTIZGRkZGRkZGRkZAAAAAMAAAAZBXcElwAZACUANwAAARcWFA8BBiY9ASMBISImPQE0NjsBATM1NDYBBycjIiY9ATQ2MyEBFxYUDwEGJj0BIyc3FzM1NDYEb%2FkPD%2FkOFZ%2F9qP7dFR0dFdECWPEV%2FamNetEVHR0VASMDGvkPD%2FkOFfG1jXqfFQSN5g4qDuYOCBWW%2FagdFWQVHQJYlhUI%2FpiNeh0VZBUd%2Fk3mDioO5g4IFZa1jXqWFQgAAAABAAAAAASwBEwAEgAAEyEyFhURFAYjIQERIyImNRE0NmQD6Ck7Oyn9rP7QZCk7OwRMOyn9qCk7%2FtQBLDspAlgpOwAAAAMAZAAABEwEsAAJABMAPwAAEzMyFh0BITU0NiEzMhYdASE1NDYBERQOBSIuBTURIRUUFRwBHgYyPgYmNTQ9AZbIFR3%2B1B0C0cgVHf7UHQEPBhgoTGacwJxmTCgYBgEsAwcNFB8nNkI2Jx8TDwUFAQSwHRX6%2BhUdHRX6%2BhUd%2FnD%2B1ClJalZcPigoPlxWakkpASz6CRIVKyclIRsWEAgJEBccISUnKhURCPoAAAAB%2F%2F8A1ARMA8IABQAAAQcJAScBBEzG%2Fp%2F%2Bn8UCJwGbxwFh%2Fp%2FHAicAAQAAAO4ETQPcAAUAAAkCNwkBBE392v3ZxgFhAWEDFf3ZAifH%2Fp8BYQAAAAAC%2F1EAZAVfA%2BgAFAApAAABITIWFREzMhYPAQYiLwEmNjsBESElFxYGKwERIRchIiY1ESMiJj8BNjIBlALqFR2WFQgO5g4qDuYOCBWW%2FoP%2BHOYOCBWWAYHX%2FRIVHZYVCA7mDioD6B0V%2FdkVDvkPD%2FkOFQGRuPkOFf5wyB0VAiYVDvkPAAABAAYAAASeBLAAMAAAEzMyFh8BITIWBwMOASMhFyEyFhQGKwEVFAYiJj0BIRUUBiImPQEjIiYvAQMjIiY0NjheERwEJgOAGB4FZAUsIf2HMAIXFR0dFTIdKh3%2B1B0qHR8SHQYFyTYUHh4EsBYQoiUY%2FiUVK8gdKh0yFR0dFTIyFR0dFTIUCQoDwR0qHQAAAAACAAAAAASwBEwACwAPAAABFSE1MzQ2MyEyFhUFIREhBLD7UMg7KQEsKTv9RASw%2B1AD6GRkKTs7Kcj84AACAAAAAAXcBEwADAAQAAATAxEzNDYzITIWFSEVBQEhAcjIyDspASwqOgH0ASz%2B1PtQASwDIP5wAlgpOzspyGT9RAK8AAEBRQAAA2sErwAbAAABFxYGKwERMzIWDwEGIi8BJjY7AREjIiY%2FATYyAnvmDggVlpYVCA7mDioO5g4IFZaWFQgO5g4qBKD5DhX9pxUO%2BQ8P%2BQ4VAlkVDvkPAAAAAQABAUQErwNrABsAAAEXFhQPAQYmPQEhFRQGLwEmND8BNhYdASE1NDYDqPkODvkPFf2oFQ%2F5Dg75DxUCWBUDYOUPKQ%2FlDwkUl5cUCQ%2FlDykP5Q8JFZWVFQkAAAAEAAAAAASwBLAACQAZAB0AIQAAAQMuASMhIgYHAwUhIgYdARQWMyEyNj0BNCYFNTMVMzUzFQSRrAUkFP1gFCQFrAQt%2FBgpOzspA%2BgpOzv%2Bq2RkZAGQAtwXLSgV%2FR1kOylkKTs7KWQpO8hkZGRkAAAAA%2F%2BcAGQEsARMAAsAIwAxAAAAMhYVERQGIiY1ETQDJSMTFgYjIisBIiYnAj0BNDU0PgE7ASUBFSIuAz0BND4CNwRpKh0dKh1k%2FV0mLwMRFQUCVBQdBDcCCwzIAqP8GAQOIhoWFR0dCwRMHRX8rhUdHRUDUhX8mcj%2B7BAIHBUBUQ76AgQQDw36%2FtT6AQsTKRwyGigUDAEAAAACAEoAAARmBLAALAA1AAABMzIWDwEeARcTFzMyFhQGBw4EIyIuBC8BLgE0NjsBNxM%2BATcnJjYDFjMyNw4BIiYCKV4UEgYSU3oPP3YRExwaEggeZGqfTzl0XFU%2BLwwLEhocExF2Pw96UxIGEyQyNDUxDDdGOASwFRMlE39N%2FrmtHSkoBwQLHBYSCg4REg4FBAgoKR2tAUdNfhQgExr7vgYGMT09AAEAFAAUBJwEnAAXAAABNwcXBxcHFycHJwcnBzcnNyc3Jxc3FzcDIOBO6rS06k7gLZubLeBO6rS06k7gLZubA7JO4C2bmy3gTuq0tOpO4C2bmy3gTuq0tAADAAAAZASwBLAAIQAtAD0AAAEzMhYdAQchMhYdARQHAw4BKwEiJi8BIyImNRE0PwI%2BARcPAREzFzMTNSE3NQEzMhYVERQGKwEiJjURNDYCijIoPBwBSCg8He4QLBf6B0YfHz0tNxSRYA0xG2SWZIjW%2Bv4%2BMv12ZBUdHRVkFR0dBLBRLJZ9USxkLR3%2BqBghMhkZJCcBkCQbxMYcKGTU1f6JZAF3feGv%2FtQdFf4MFR0dFQH0FR0AAAAAAwAAAAAEsARMACAAMAA8AAABMzIWFxMWHQEUBiMhFh0BFAYrASImLwImNRE0NjsBNgUzMhYVERQGKwEiJjURNDYhByMRHwEzNSchNQMCWPoXLBDuHTwo%2FrgcPCgyGzENYJEUNy09fP3pZBUdHRVkFR0dAl%2BIZJZkMjIBwvoETCEY%2FqgdLWQsUXYHlixRKBzGxBskAZAnJGRkHRX%2BDBUdHRUB9BUdZP6J1dSv4X0BdwADAAAAZAUOBE8AGwA3AEcAAAElNh8BHgEPASEyFhQGKwEDDgEjISImNRE0NjcXERchEz4BOwEyNiYjISoDLgQnJj8BJwUzMhYVERQGKwEiJjURNDYBZAFrHxZuDQEMVAEuVGxuVGqDBhsP%2FqoHphwOOmQBJYMGGw%2FLFRMSFv44AgoCCQMHAwUDAQwRklb9T2QVHR0VZBUdHQNp5hAWcA0mD3lMkE7%2BrRUoog0CDRElCkj%2BCVkBUxUoMjIBAgIDBQIZFrdT5B0V%2FgwVHR0VAfQVHQAAAAP%2FnABkBLAETwAdADYARgAAAQUeBBURFAYjISImJwMjIiY0NjMhJyY2PwE2BxcWBw4FKgIjIRUzMhYXEyE3ESUFMzIWFREUBisBIiY1ETQ2AdsBbgIIFBANrAf%2Bqg8bBoNqVW1sVAEuVQsBDW4WSpIRDAIDBQMHAwkDCgH%2BJd0PHAaCASZq%2FqoCUGQVHR0VZBUdHQRP5gEFEBEXC%2F3zDaIoFQFTTpBMeQ8mDXAWrrcWGQIFAwICAWQoFf6tWQH37OQdFf4MFR0dFQH0FR0AAAADAGEAAARMBQ4AGwA3AEcAAAAyFh0BBR4BFREUBiMhIiYvAQMmPwE%2BAR8BETQXNTQmBhURHAMOBAcGLwEHEyE3ESUuAQMhMhYdARQGIyEiJj0BNDYB3pBOAVMVKKIN%2FfMRJQoJ5hAWcA0mD3nGMjIBAgIDBQIZFrdT7AH3Wf6tFSiWAfQVHR0V%2FgwVHR0FDm5UaoMGGw%2F%2BqgemHA4OAWsfFm4NAQxUAS5U1ssVExIW%2FjgCCgIJAwcDBQMBDBGSVv6tZAElgwYb%2FQsdFWQVHR0VZBUdAAP%2F%2FQAGA%2BgFFAAPAC0ASQAAASEyNj0BNCYjISIGHQEUFgEVFAYiJjURBwYmLwEmNxM%2BBDMhMhYVERQGBwEDFzc2Fx4FHAIVERQWNj0BNDY3JREnAV4B9BUdHRX%2BDBUdHQEPTpBMeQ8mDXAWEOYBBRARFwsCDQ2iKBX9iexTtxYZAgUDAgIBMjIoFQFTWQRMHRVkFR0dFWQVHfzmalRubFQBLlQMAQ1uFh8BawIIEw8Mpgf%2Bqg8bBgHP%2Fq1WkhEMAQMFAwcDCQIKAv44FhITFcsPGwaDASVkAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgEBJSYGHQEhIgYdARQWMyEVFBY3JTY0AeLs1ptbW5vW7NabW1ubAob%2B7RAX%2Fu0KDw8KARMXEAETEASaW5vW7NabW1ub1uzWm%2F453w0KFYkPCpYKD4kVCg3fDSYAAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgENAQYUFwUWNj0BITI2PQE0JiMhNTQmAeLs1ptbW5vW7NabW1ubASX%2B7RAQARMQFwETCg8PCv7tFwSaW5vW7NabW1ub1uzWm%2BjfDSYN3w0KFYkPCpYKD4kVCgAAAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgEBAyYiBwMGFjsBERQWOwEyNjURMzI2AeLs1ptbW5vW7NabW1ubAkvfDSYN3w0KFYkPCpYKD4kVCgSaW5vW7NabW1ub1uzWm%2F5AARMQEP7tEBf%2B7QoPDwoBExcAAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgEFIyIGFREjIgYXExYyNxM2JisBETQmAeLs1ptbW5vW7NabW1ubAZeWCg%2BJFQoN3w0mDd8NChWJDwSaW5vW7NabW1ub1uzWm7sPCv7tFxD%2B7RAQARMQFwETCg8AAAMAGAAYBJgEmAAPAJYApgAAADIeAhQOAiIuAjQ%2BASUOAwcGJgcOAQcGFgcOAQcGFgcUFgcyHgEXHgIXHgI3Fg4BFx4CFxQGFBcWNz4CNy4BJy4BJyIOAgcGJyY2NS4BJzYuAQYHBicmNzY3HgIXHgMfAT4CJyY%2BATc%2BAzcmNzIWMjY3LgMnND4CJiceAT8BNi4CJwYHFB4BFS4CJz4BNxYyPgEB5OjVm1xcm9Xo1ZtcXJsBZA8rHDoKDz0PFD8DAxMBAzEFCRwGIgEMFhkHECIvCxU%2FOR0HFBkDDRQjEwcFaHUeISQDDTAMD0UREi4oLBAzDwQBBikEAQMLGhIXExMLBhAGKBsGBxYVEwYFAgsFAwMNFwQGCQcYFgYQCCARFwkKKiFBCwQCAQMDHzcLDAUdLDgNEiEQEgg%2FKhADGgMKEgoRBJhcm9Xo1ZtcXJvV6NWbEQwRBwkCAwYFBycPCxcHInIWInYcCUcYChQECA4QBAkuHgQPJioRFRscBAcSCgwCch0kPiAIAQcHEAsBAgsLIxcBMQENCQIPHxkCFBkdHB4QBgEBBwoMGBENBAMMJSAQEhYXDQ4qFBkKEhIDCQsXJxQiBgEOCQwHAQ0DBAUcJAwSCwRnETIoAwEJCwsLJQcKDBEAAAAAAQAAAAIErwSFABYAAAE2FwUXNxYGBw4BJwEGIi8BJjQ3ASY2AvSkjv79kfsGUE08hjv9rA8rD28PDwJYIk8EhVxliuh%2BWYcrIgsW%2FawQEG4PKxACV2XJAAYAAABgBLAErAAPABMAIwAnADcAOwAAEyEyFh0BFAYjISImPQE0NgUjFTMFITIWHQEUBiMhIiY9ATQ2BSEVIQUhMhYdARQGIyEiJj0BNDYFIRUhZAPoKTs7KfwYKTs7BBHIyPwYA%2BgpOzsp%2FBgpOzsEEf4MAfT8GAPoKTs7KfwYKTs7BBH%2B1AEsBKw7KWQpOzspZCk7ZGTIOylkKTs7KWQpO2RkyDspZCk7OylkKTtkZAAAAAIAZAAABEwEsAALABEAABMhMhYUBiMhIiY0NgERBxEBIZYDhBUdHRX8fBUdHQI7yP6iA4QEsB0qHR0qHf1E%2FtTIAfQB9AAAAAMAAABkBLAEsAAXABsAJQAAATMyFh0BITIWFREhNSMVIRE0NjMhNTQ2FxUzNQEVFAYjISImPQEB9MgpOwEsKTv%2BDMj%2BDDspASw7KcgB9Dsp%2FBgpOwSwOylkOyn%2BcGRkAZApO2QpO2RkZP1EyCk7OynIAAAABAAAAAAEsASwABUAKwBBAFcAABMhMhYPARcWFA8BBiIvAQcGJjURNDYpATIWFREUBi8BBwYiLwEmND8BJyY2ARcWFA8BFxYGIyEiJjURNDYfATc2MgU3NhYVERQGIyEiJj8BJyY0PwE2MhcyASwVCA5exwcHaggUCMdeDhUdAzUBLBUdFQ5exwgUCGoHB8deDgj%2BL2oHB8deDggV%2FtQVHRUOXscIFALLXg4VHRX%2B1BUIDl7HBwdqCBQIBLAVDl7HCBQIagcHx14OCBUBLBUdHRX%2B1BUIDl7HBwdqCBQIx14OFf0maggUCMdeDhUdFQEsFQgOXscHzl4OCBX%2B1BUdFQ5exwgUCGoHBwAAAAYAAAAABKgEqAAPABsAIwA7AEMASwAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JiQyFhQGIiY0JDIWFAYjIicHFhUUBiImNTQ2PwImNTQEMhYUBiImNCQyFhQGIiY0Advy3Z9fX5%2Fd8t2gXl6gAcbgv29vv%2BC%2Fb2%2F%2BLS0gIC0gAUwtICAWDg83ETNIMykfegEJ%2FoctICAtIAIdLSAgLSAEqF%2Bf3fLdoF5eoN3y3Z9Xb7%2Fgv29vv%2BC%2FBiAtISEtICAtIQqRFxwkMzMkIDEFfgEODhekIC0gIC0gIC0gIC0AAf%2FYAFoEuQS8AFsAACUBNjc2JicmIyIOAwcABw4EFx4BMzI3ATYnLgEjIgcGBwEOASY0NwA3PgEzMhceARcWBgcOBgcGIyImJyY2NwE2NzYzMhceARcWBgcBDgEnLgECIgHVWwgHdl8WGSJBMD8hIP6IDx4eLRMNBQlZN0ozAiQkEAcdEhoYDRr%2Bqw8pHA4BRyIjQS4ODyw9DQ4YIwwod26La1YOOEBGdiIwGkQB%2F0coW2tQSE5nDxE4Qv4eDyoQEAOtAdZbZWKbEQQUGjIhH%2F6JDxsdNSg3HT5CMwIkJCcQFBcMGv6uDwEcKQ4BTSIjIQEINykvYyMLKnhuiWZMBxtAOU6%2BRAH%2FSBg3ISSGV121Qv4kDwIPDyYAAAACAGQAWASvBEQAGQBEAAABPgIeAhUUDgMHLgQ1ND4CHgEFIg4DIi4DIyIGFRQeAhcWFx4EMj4DNzY3PgQ1NCYCiTB7eHVYNkN5hKg%2BPqeFeEM4WnZ4eQEjIT8yLSohJyktPyJDbxtBMjMPBw86KzEhDSIzKUAMBAgrKT8dF2oDtURIBS1TdkA5eYB%2FslVVsn%2BAeTlAdlMtBUgtJjY1JiY1NiZvTRc4SjQxDwcOPCouGBgwKEALBAkpKkQqMhNPbQACADn%2F8gR3BL4AFwAuAAAAMh8BFhUUBg8BJi8BNycBFwcvASY0NwEDNxYfARYUBwEGIi8BJjQ%2FARYfAQcXAQKru0KNQjgiHR8uEl%2F3%2FnvUaRONQkIBGxJpCgmNQkL%2B5UK6Qo1CQjcdLhJf9wGFBL5CjUJeKmsiHTUuEl%2F4%2FnvUahKNQrpCARv%2BRmkICY1CukL%2B5UJCjUK7Qjc3LxFf%2BAGFAAAAAAMAyAAAA%2BgEsAARABUAHQAAADIeAhURFAYjISImNRE0PgEHESERACIGFBYyNjQCBqqaZDo7Kf2oKTs8Zj4CWP7%2FVj09Vj0EsB4uMhX8Ryk7OykDuRUzLar9RAK8%2FRY9Vj09VgABAAAAAASwBLAAFgAACQEWFAYiLwEBEScBBRMBJyEBJyY0NjIDhgEbDx0qDiT%2B6dT%2BzP7oywEz0gEsAQsjDx0qBKH%2B5g8qHQ8j%2FvX%2B1NL%2BzcsBGAE01AEXJA4qHQAAAAADAScAEQQJBOAAMgBAAEsAAAEVHgQXIy4DJxEXHgQVFAYHFSM1JicuASczHgEXEScuBDU0PgI3NRkBDgMVFB4DFxYXET4ENC4CArwmRVI8LAKfBA0dMydAIjxQNyiym2SWVygZA4sFV0obLkJOMCAyVWg6HSoqFQ4TJhkZCWgWKTEiGBkzNwTgTgUTLD9pQiQuLBsH%2Fs0NBxMtPGQ%2Bi6oMTU8QVyhrVk1iEAFPCA4ZLzlYNkZwSCoGTf4SARIEDh02Jh0rGRQIBgPQ%2FsoCCRYgNEM0JRkAAAABAGQAZgOUBK0ASgAAATIeARUjNC4CIyIGBwYVFB4BFxYXMxUjFgYHBgc%2BATM2FjMyNxcOAyMiLgEHDgEPASc%2BBTc%2BAScjNTMmJy4CPgE3NgIxVJlemSc8OxolVBQpGxoYBgPxxQgVFS02ImIWIIwiUzUyHzY4HCAXanQmJ1YYFzcEGAcTDBEJMAwk3aYXFQcKAg4tJGEErVCLTig%2FIhIdFSw5GkowKgkFZDKCHj4yCg8BIh6TExcIASIfBAMaDAuRAxAFDQsRCjePR2QvORQrREFMIVgAAAACABn%2F%2FwSXBLAADwAfAAABMzIWDwEGIi8BJjY7AREzBRcWBisBESMRIyImPwE2MgGQlhUIDuYOKg7mDggVlsgCF%2BYOCBWWyJYVCA7mDioBLBYO%2Bg8P%2Bg4WA4QQ%2BQ4V%2FHwDhBUO%2BQ8AAAQAGf%2F%2FA%2BgEsAAHABcAGwAlAAABIzUjFSMRIQEzMhYPAQYiLwEmNjsBETMFFTM1EwczFSE1NyM1IQPoZGRkASz9qJYVCA7mDioO5g4IFZbIAZFkY8jI%2FtTIyAEsArxkZAH0%2FHwWDvoPD%2FoOFgOEZMjI%2FRL6ZJb6ZAAAAAAEABn%2F%2FwPoBLAADwAZACEAJQAAATMyFg8BBiIvASY2OwERMwUHMxUhNTcjNSERIzUjFSMRIQcVMzUBkJYVCA7mDioO5g4IFZbIAljIyP7UyMgBLGRkZAEsx2QBLBYO%2Bg8P%2Bg4WA4SW%2BmSW%2BmT7UGRkAfRkyMgAAAAEABn%2F%2FwRMBLAADwAVABsAHwAAATMyFg8BBiIvASY2OwERMwEjESM1MxMjNSMRIQcVMzUBkJYVCA7mDioO5g4IFZbIAlhkZMhkZMgBLMdkASwWDvoPD%2FoOFgOE%2FgwBkGT7UGQBkGTIyAAAAAAEABn%2F%2FwRMBLAADwAVABkAHwAAATMyFg8BBiIvASY2OwERMwEjNSMRIQcVMzUDIxEjNTMBkJYVCA7mDioO5g4IFZbIArxkyAEsx2QBZGTIASwWDvoPD%2FoOFgOE%2FgxkAZBkyMj7tAGQZAAAAAAFABn%2F%2FwSwBLAADwATABcAGwAfAAABMzIWDwEGIi8BJjY7AREzBSM1MxMhNSETITUhEyE1IQGQlhUIDuYOKg7mDggVlsgB9MjIZP7UASxk%2FnABkGT%2BDAH0ASwWDvoPD%2FoOFgOEyMj%2BDMj%2BDMj%2BDMgABQAZ%2F%2F8EsASwAA8AEwAXABsAHwAAATMyFg8BBiIvASY2OwERMwUhNSEDITUhAyE1IQMjNTMBkJYVCA7mDioO5g4IFZbIAyD%2BDAH0ZP5wAZBk%2FtQBLGTIyAEsFg76Dw%2F6DhYDhMjI%2FgzI%2FgzI%2FgzIAAIAAAAABEwETAAPAB8AAAEhMhYVERQGIyEiJjURNDYFISIGFREUFjMhMjY1ETQmAV4BkKK8u6P%2BcKW5uQJn%2FgwpOzspAfQpOzsETLuj%2FnClubmlAZClucg7Kf4MKTs7KQH0KTsAAAAAAwAAAAAETARMAA8AHwArAAABITIWFREUBiMhIiY1ETQ2BSEiBhURFBYzITI2NRE0JgUXFhQPAQYmNRE0NgFeAZClubml%2FnCju7wCZP4MKTs7KQH0KTs7%2Fm%2F9ERH9EBgYBEy5pf5wpbm5pQGQo7vIOyn%2BDCk7OykB9Ck7gr4MJAy%2BDAsVAZAVCwAAAAADAAAAAARMBEwADwAfACsAAAEhMhYVERQGIyEiJjURNDYFISIGFREUFjMhMjY1ETQmBSEyFg8BBiIvASY2AV4BkKO7uaX%2BcKW5uQJn%2FgwpOzspAfQpOzv%2BFQGQFQsMvgwkDL4MCwRMvKL%2BcKW5uaUBkKO7yDsp%2FgwpOzspAfQpO8gYEP0REf0QGAAAAAMAAAAABEwETAAPAB8AKwAAASEyFhURFAYjISImNRE0NgUhIgYVERQWMyEyNjURNCYFFxYGIyEiJj8BNjIBXgGQpbm5pf5wo7u5Amf%2BDCk7OykB9Ck7O%2F77vgwLFf5wFQsMvgwkBEy5pf5wo7u8ogGQpbnIOyn%2BDCk7OykB9Ck7z%2F0QGBgQ%2FREAAAAAAgAAAAAFFARMAB8ANQAAASEyFhURFAYjISImPQE0NjMhMjY1ETQmIyEiJj0BNDYHARYUBwEGJj0BIyImPQE0NjsBNTQ2AiYBkKW5uaX%2BcBUdHRUBwik7Oyn%2BPhUdHb8BRBAQ%2FrwQFvoVHR0V%2BhYETLml%2FnCluR0VZBUdOykB9Ck7HRVkFR3p%2FuQOJg7%2B5A4KFZYdFcgVHZYVCgAAAQDZAAID1wSeACMAAAEXFgcGAgclMhYHIggBBwYrAScmNz4BPwEhIicmNzYANjc2MwMZCQgDA5gCASwYEQ4B%2Fvf%2B8wQMDgkJCQUCUCcn%2FtIXCAoQSwENuwUJEASeCQoRC%2F5TBwEjEv7K%2FsUFDwgLFQnlbm4TFRRWAS%2FTBhAAAAACAAAAAAT%2BBEwAHwA1AAABITIWHQEUBiMhIgYVERQWMyEyFh0BFAYjISImNRE0NgUBFhQHAQYmPQEjIiY9ATQ2OwE1NDYBXgGQFR0dFf4%2BKTs7KQHCFR0dFf5wpbm5AvEBRBAQ%2FrwQFvoVHR0V%2BhYETB0VZBUdOyn%2BDCk7HRVkFR25pQGQpbnp%2FuQOJg7%2B5A4KFZYdFcgVHZYVCgACAAAAAASwBLAAFQAxAAABITIWFREUBi8BAQYiLwEmNDcBJyY2ASMiBhURFBYzITI2PQE3ERQGIyEiJjURNDYzIQLuAZAVHRUObf7IDykPjQ8PAThtDgj%2B75wpOzspAfQpO8i7o%2F5wpbm5pQEsBLAdFf5wFQgObf7IDw%2BNDykPAThtDhX%2B1Dsp%2FgwpOzsplMj%2B1qW5uaUBkKW5AAADAA4ADgSiBKIADwAbACMAAAAyHgIUDgIiLgI0PgEEIg4BFB4BMj4BNCYEMhYUBiImNAHh7tmdXV2d2e7ZnV1dnQHD5sJxccLmwnFx%2FnugcnKgcgSiXZ3Z7tmdXV2d2e7ZnUdxwubCcXHC5sJzcqBycqAAAAMAAAAABEwEsAAVAB8AIwAAATMyFhURMzIWBwEGIicBJjY7ARE0NgEhMhYdASE1NDYFFTM1AcLIFR31FAoO%2FoEOJw3%2BhQ0JFfod%2FoUD6BUd%2B7QdA2dkBLAdFf6iFg%2F%2BVg8PAaoPFgFeFR38fB0V%2BvoVHWQyMgAAAAMAAAAABEwErAAVAB8AIwAACQEWBisBFRQGKwEiJj0BIyImNwE%2BAQEhMhYdASE1NDYFFTM1AkcBeg4KFfQiFsgUGPoUCw4Bfw4n%2FfkD6BUd%2B7QdA2dkBJ7%2BTQ8g%2BhQeHRX6IQ8BrxAC%2FH8dFfr6FR1kMjIAAwAAAAAETARLABQAHgAiAAAJATYyHwEWFAcBBiInASY0PwE2MhcDITIWHQEhNTQ2BRUzNQGMAXEHFQeLBwf98wcVB%2F7cBweLCBUH1APoFR37tB0DZ2QC0wFxBweLCBUH%2FfMICAEjCBQIiwcH%2FdIdFfr6FR1kMjIABAAAAAAETASbAAkAGQAjACcAABM3NjIfAQcnJjQFNzYWFQMOASMFIiY%2FASc3ASEyFh0BITU0NgUVMzWHjg4qDk3UTQ4CFtIOFQIBHRX9qxUIDtCa1P49A%2BgVHfu0HQNnZAP%2Fjg4OTdRMDyqa0g4IFf2pFB4BFQ7Qm9T9Oh0V%2BvoVHWQyMgAAAAQAAAAABEwEsAAPABkAIwAnAAABBR4BFRMUBi8BByc3JyY2EwcGIi8BJjQ%2FAQEhMhYdASE1NDYFFTM1AV4CVxQeARUO0JvUm9IOCMNMDyoOjg4OTf76A%2BgVHfu0HQNnZASwAgEdFf2rFQgO0JrUmtIOFf1QTQ4Ojg4qDk3%2BWB0V%2BvoVHWQyMgACAAT%2F7ASwBK8ABQAIAAAlCQERIQkBFQEEsP4d%2Fsb%2BcQSs%2FTMCq2cBFP5xAacDHPz55gO5AAAAAAIAAABkBEwEsAAVABkAAAERFAYrAREhESMiJjURNDY7AREhETMHIzUzBEwdFZb9RJYVHR0V%2BgH0ZMhkZAPo%2FK4VHQGQ%2FnAdFQPoFB7%2B1AEsyMgAAAMAAABFBN0EsAAWABoALwAAAQcBJyYiDwEhESMiJjURNDY7AREhETMHIzUzARcWFAcBBiIvASY0PwE2Mh8BATYyBEwC%2FtVfCRkJlf7IlhUdHRX6AfRkyGRkAbBqBwf%2BXAgUCMoICGoHFQdPASkHFQPolf7VXwkJk%2F5wHRUD6BQe%2FtQBLMjI%2Fc5qBxUH%2FlsHB8sHFQdqCAhPASkHAAMAAAANBQcEsAAWABoAPgAAAREHJy4BBwEhESMiJjURNDY7AREhETMHIzUzARcWFA8BFxYUDwEGIi8BBwYiLwEmND8BJyY0PwE2Mh8BNzYyBExnhg8lEP72%2FreWFR0dFfoB9GTIZGQB9kYPD4ODDw9GDykPg4MPKQ9GDw%2BDgw8PRg8pD4ODDykD6P7zZ4YPAw7%2B9v5wHRUD6BQe%2FtQBLMjI%2FYxGDykPg4MPKQ9GDw%2BDgw8PRg8pD4ODDykPRg8Pg4MPAAADAAAAFQSXBLAAFQAZAC8AAAERISIGHQEhESMiJjURNDY7AREhETMHIzUzEzMyFh0BMzIWDwEGIi8BJjY7ATU0NgRM%2FqIVHf4MlhUdHRX6AfRkyGRklmQVHZYVCA7mDioO5g4IFZYdA%2Bj%2B1B0Vlv5wHRUD6BQe%2FtQBLMjI%2FagdFfoVDuYODuYOFfoVHQAAAAADAAAAAASXBLAAFQAZAC8AAAERJyYiBwEhESMiJjURNDY7AREhETMHIzUzExcWBisBFRQGKwEiJj0BIyImPwE2MgRMpQ4qDv75%2Fm6WFR0dFfoB9GTIZGTr5g4IFZYdFWQVHZYVCA7mDioD6P5wpQ8P%2Fvf%2BcB0VA%2BgUHv7UASzIyP2F5Q8V%2BhQeHhT6FQ%2FlDwADAAAAyASwBEwACQATABcAABMhMhYdASE1NDYBERQGIyEiJjURExUhNTIETBUd%2B1AdBJMdFfu0FR1kAZAETB0VlpYVHf7U%2FdoVHR0VAib%2B1MjIAAAGAAMAfQStBJcADwAZAB0ALQAxADsAAAEXFhQPAQYmPQEhNSE1NDYBIyImPQE0NjsBFyM1MwE3NhYdASEVIRUUBi8BJjQFIzU7AjIWHQEUBisBA6f4Dg74DhX%2BcAGQFf0vMhUdHRUyyGRk%2FoL3DhUBkP5wFQ73DwOBZGRkMxQdHRQzBI3mDioO5g4IFZbIlhUI%2FoUdFWQVHcjI%2FcvmDggVlsiWFQgO5g4qecgdFWQVHQAAAAACAGQAAASwBLAAFgBRAAABJTYWFREUBisBIiY1ES4ENRE0NiUyFh8BERQOAg8BERQGKwEiJjURLgQ1ETQ%2BAzMyFh8BETMRPAE%2BAjMyFh8BETMRND4DA14BFBklHRXIFR0EDiIaFiX%2B4RYZAgEVHR0LCh0VyBUdBA4iGhYBBwoTDRQZAgNkBQkVDxcZAQFkAQUJFQQxdBIUH%2FuuFR0dFQGNAQgbHzUeAWcfRJEZDA3%2BPhw%2FMSkLC%2F5BFR0dFQG%2FBA8uLkAcAcICBxENCxkMDf6iAV4CBxENCxkMDf6iAV4CBxENCwABAGQAAASwBEwAMwAAARUiDgMVERQWHwEVITUyNjURIREUFjMVITUyPgM1ETQmLwE1IRUiBhURIRE0JiM1BLAEDiIaFjIZGf5wSxn%2BDBlL%2FnAEDiIaFjIZGQGQSxkB9BlLBEw4AQUKFA78iBYZAQI4OA0lAYr%2BdiUNODgBBQoUDgN4FhkBAjg4DSX%2BdgGKJQ04AAAABgAAAAAETARMAAwAHAAgACQAKAA0AAABITIWHQEjBTUnITchBSEyFhURFAYjISImNRE0NhcVITUBBTUlBRUhNQUVFAYjIQchJyE3MwKjAXcVHWn%2B2cj%2BcGQBd%2F4lASwpOzsp%2FtQpOzspASwCvP5wAZD8GAEsArwdFf6JZP6JZAGQyGkD6B0VlmJiyGTIOyn%2BDCk7OykB9Ck7ZMjI%2FveFo4XGyMhm%2BBUdZGTIAAEAEAAQBJ8EnwAmAAATNzYWHwEWBg8BHgEXNz4BHwEeAQ8BBiIuBicuBTcRohEuDosOBhF3ZvyNdxEzE8ATBxGjAw0uMUxPZWZ4O0p3RjITCwED76IRBhPCFDERdo78ZXYRBA6IDi8RogEECBUgNUNjO0qZfHNVQBAAAAACAAAAAASwBEwAIwBBAAAAMh4EHwEVFAYvAS4BPQEmIAcVFAYPAQYmPQE%2BBRIyHgIfARUBHgEdARQGIyEiJj0BNDY3ATU0PgIB%2FLimdWQ%2FLAkJHRTKFB2N%2FsKNHRTKFB0DDTE7ZnTKcFImFgEBAW0OFR0V%2B7QVHRUOAW0CFiYETBUhKCgiCgrIFRgDIgMiFZIYGJIVIgMiAxgVyAQNJyQrIP7kExwcCgoy%2FtEPMhTUFR0dFdQUMg8BLzIEDSEZAAADAAAAAASwBLAADQAdACcAAAEHIScRMxUzNTMVMzUzASEyFhQGKwEXITcjIiY0NgMhMhYdASE1NDYETMj9qMjIyMjIyPyuArwVHR0VDIn8SokMFR0dswRMFR37UB0CvMjIAfTIyMjI%2FOAdKh1kZB0qHf7UHRUyMhUdAAAAAwBkAAAEsARMAAkAEwAdAAABIyIGFREhETQmASMiBhURIRE0JgEhETQ2OwEyFhUCvGQpOwEsOwFnZCk7ASw7%2FRv%2B1DspZCk7BEw7KfwYA%2BgpO%2F7UOyn9RAK8KTv84AGQKTs7KQAAAAAF%2F5wAAASwBEwADwATAB8AJQApAAATITIWFREUBiMhIiY1ETQ2FxEhEQUjFTMRITUzNSMRIQURByMRMwcRMxHIArx8sLB8%2FUR8sLAYA4T%2BDMjI%2FtTIyAEsAZBkyMhkZARMsHz%2BDHywsHwB9HywyP1EArzIZP7UZGQBLGT%2B1GQB9GT%2B1AEsAAAABf%2BcAAAEsARMAA8AEwAfACUAKQAAEyEyFhURFAYjISImNRE0NhcRIREBIzUjFSMRMxUzNTMFEQcjETMHETMRyAK8fLCwfP1EfLCwGAOE%2FgxkZGRkZGQBkGTIyGRkBEywfP4MfLCwfAH0fLDI%2FUQCvP2oyMgB9MjIZP7UZAH0ZP7UASwABP%2BcAAAEsARMAA8AEwAbACMAABMhMhYVERQGIyEiJjURNDYXESERBSMRMxUhESEFIxEzFSERIcgCvHywsHz9RHywsBgDhP4MyMj%2B1AEsAZDIyP7UASwETLB8%2Fgx8sLB8AfR8sMj9RAK8yP7UZAH0ZP7UZAH0AAAABP%2BcAAAEsARMAA8AEwAWABkAABMhMhYVERQGIyEiJjURNDYXESERAS0BDQERyAK8fLCwfP1EfLCwGAOE%2Fgz%2B1AEsAZD%2B1ARMsHz%2BDHywsHwB9HywyP1EArz%2BDJaWlpYBLAAAAAX%2FnAAABLAETAAPABMAFwAgACkAABMhMhYVERQGIyEiJjURNDYXESERAyERIQcjIgYVFBY7AQERMzI2NTQmI8gCvHywsHz9RHywsBgDhGT9RAK8ZIImOTYpgv4Mgik2OSYETLB8%2Fgx8sLB8AfR8sMj9RAK8%2FagB9GRWQUFUASz%2B1FRBQVYAAAAF%2F5wAAASwBEwADwATAB8AJQApAAATITIWFREUBiMhIiY1ETQ2FxEhEQUjFTMRITUzNSMRIQEjESM1MwMjNTPIArx8sLB8%2FUR8sLAYA4T%2BDMjI%2FtTIyAEsAZBkZMjIZGQETLB8%2Fgx8sLB8AfR8sMj9RAK8yGT%2B1GRkASz%2BDAGQZP4MZAAG%2F5wAAASwBEwADwATABkAHwAjACcAABMhMhYVERQGIyEiJjURNDYXESERBTMRIREzASMRIzUzBRUzNQEjNTPIArx8sLB8%2FUR8sLAYA4T9RMj%2B1GQCWGRkyP2oZAEsZGQETLB8%2Fgx8sLB8AfR8sMj9RAK8yP5wAfT%2BDAGQZMjIyP7UZAAF%2F5wAAASwBEwADwATABwAIgAmAAATITIWFREUBiMhIiY1ETQ2FxEhEQEHIzU3NSM1IQEjESM1MwMjNTPIArx8sLB8%2FUR8sLAYA4T%2BDMdkx8gBLAGQZGTIx2RkBEywfP4MfLCwfAH0fLDI%2FUQCvP5wyDLIlmT%2BDAGQZP4MZAAAAAMACQAJBKcEpwAPABsAJQAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgchFSEVISc1NyEB4PDbnl5entvw255eXp4BxeTCcXHC5MJxcWz%2B1AEs%2FtRkZAEsBKdentvw255eXp7b8NueTHHC5MJxccLkwtDIZGTIZAAAAAAEAAkACQSnBKcADwAbACcAKwAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgcVBxcVIycjFSMRIQcVMzUB4PDbnl5entvw255eXp4BxeTCcXHC5MJxcWwyZGRklmQBLMjIBKdentvw255eXp7b8NueTHHC5MJxccLkwtBkMmQyZGQBkGRkZAAAAv%2Fy%2F50EwgRBACAANgAAATIWFzYzMhYUBisBNTQmIyEiBh0BIyImNTQ2NyY1ND4BEzMyFhURMzIWDwEGIi8BJjY7ARE0NgH3brUsLC54qqp4gB0V%2FtQVHd5QcFZBAmKqepYKD4kVCg3fDSYN3w0KFYkPBEF3YQ6t8a36FR0dFfpzT0VrDhMSZKpi%2FbMPCv7tFxD0EBD0EBcBEwoPAAAAAAL%2F8v%2BcBMMEQQAcADMAAAEyFhc2MzIWFxQGBwEmIgcBIyImNTQ2NyY1ND4BExcWBisBERQGKwEiJjURIyImNzY3NjIB9m62LCsueaoBeFr%2Bhg0lDf6DCU9xVkECYqnm3w0KFYkPCpYKD4kVCg3HGBMZBEF3YQ%2BteGOkHAFoEBD%2Bk3NPRWsOExNkqWP9kuQQF%2F7tCg8PCgETFxDMGBMAAAABAGQAAARMBG0AGAAAJTUhATMBMwkBMwEzASEVIyIGHQEhNTQmIwK8AZD%2B8qr%2B8qr%2B1P7Uqv7yqv7yAZAyFR0BkB0VZGQBLAEsAU3%2Bs%2F7U%2FtRkHRUyMhUdAAAAAAEAeQAABDcEmwAvAAABMhYXHgEVFAYHFhUUBiMiJxUyFh0BITU0NjM1BiMiJjU0Ny4BNTQ2MzIXNCY1NDYCWF6TGll7OzIJaUo3LRUd%2FtQdFS03SmkELzlpSgUSAqMEm3FZBoNaPWcfHRpKaR77HRUyMhUd%2Bx5pShIUFVg1SmkCAhAFdKMAAAAGACcAFASJBJwAEQAqAEIASgBiAHsAAAEWEgIHDgEiJicmAhI3PgEyFgUiBw4BBwYWHwEWMzI3Njc2Nz4BLwEmJyYXIgcOAQcGFh8BFjMyNz4BNz4BLwEmJyYWJiIGFBYyNjciBw4BBw4BHwEWFxYzMjc%2BATc2Ji8BJhciBwYHBgcOAR8BFhcWMzI3PgE3NiYvASYD8m9PT29T2dzZU29PT29T2dzZ%2Fj0EBHmxIgQNDCQDBBcGG0dGYAsNAwkDCwccBAVQdRgEDA0iBAQWBhJROQwMAwkDCwf5Y4xjY4xjVhYGElE6CwwDCQMLBwgEBVB1GAQNDCIEjRcGG0dGYAsNAwkDCwcIBAR5sSIEDQwkAwPyb%2F7V%2FtVvU1dXU28BKwErb1NXVxwBIrF5DBYDCQEWYEZHGwMVDCMNBgSRAhh1UA0WAwkBFTpREgMVCyMMBwT6Y2OMY2MVFTpREQQVCyMMBwQCGHVQDRYDCQEkFmBGRxsDFQwjDQYEASKxeQwWAwkBAAAABQBkAAAD6ASwAAwADwAWABwAIgAAASERIzUhFSERNDYzIQEjNQMzByczNTMDISImNREFFRQGKwECvAEstP6s%2FoQPCgI%2FASzIZKLU1KJktP51Cg8DhA8KwwMg%2FoTIyALzCg%2F%2B1Mj84NTUyP4MDwoBi8jDCg8AAAAABQBkAAAD6ASwAAkADAATABoAIQAAASERCQERNDYzIQEjNRMjFSM1IzcDISImPQEpARUUBisBNQK8ASz%2Bov3aDwoCPwEsyD6iZKLUqv6dCg8BfAIIDwqbAyD9%2BAFe%2FdoERwoP%2FtTI%2FHzIyNT%2BZA8KNzcKD1AAAAAAAwAAAAAEsAP0AAgAGQAfAAABIxUzFyERIzcFMzIeAhUhFSEDETM0PgIBMwMhASEEiqJkZP7UotT9EsgbGiEOASz9qMhkDiEaAnPw8PzgASwB9AMgyGQBLNTUBBErJGT%2BogHCJCsRBP5w%2FnAB9AAAAAMAAAAABEwETAAZADIAOQAAATMyFh0BMzIWHQEUBiMhIiY9ATQ2OwE1NDYFNTIWFREUBiMhIic3ARE0NjMVFBYzITI2AQc1IzUzNQKKZBUdMhUdHRX%2B1BUdHRUyHQFzKTs7Kf2oARP2%2Fro7KVg%2BASw%2BWP201MjIBEwdFTIdFWQVHR0VZBUdMhUd%2BpY7KfzgKTsE9gFGAUQpO5Y%2BWFj95tSiZKIAAwBkAAAEvARMABkANgA9AAABMzIWHQEzMhYdARQGIyEiJj0BNDY7ATU0NgU1MhYVESMRMxQOAiMhIiY1ETQ2MxUUFjMhMjYBBzUjNTM1AcJkFR0yFR0dFf7UFR0dFTIdAXMpO8jIDiEaG%2F2oKTs7KVg%2BASw%2BWAGc1MjIBEwdFTIdFWQVHR0VZBUdMhUd%2BpY7Kf4M%2FtQkKxEEOykDICk7lj5YWP3m1KJkogAAAAP%2FogAABRYE1AALABsAHwAACQEWBiMhIiY3ATYyEyMiBhcTHgE7ATI2NxM2JgMVMzUCkgJ9FyAs%2BwQsIBcCfRZARNAUGAQ6BCMUNhQjBDoEGODIBK37sCY3NyYEUCf%2BTB0U%2FtIUHR0UAS4UHf4MZGQAAAAACQAAAAAETARMAA8AHwAvAD8ATwBfAG8AfwCPAAABMzIWHQEUBisBIiY9ATQ2EzMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYBMzIWHQEUBisBIiY9ATQ2ITMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYBMzIWHQEUBisBIiY9ATQ2ITMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYBqfoKDw8K%2BgoPDwr6Cg8PCvoKDw8BmvoKDw8K%2BgoPD%2Fzq%2BgoPDwr6Cg8PAZr6Cg8PCvoKDw8BmvoKDw8K%2BgoPD%2Fzq%2BgoPDwr6Cg8PAZr6Cg8PCvoKDw8BmvoKDw8K%2BgoPDwRMDwqWCg8PCpYKD%2F7UDwqWCg8PCpYKDw8KlgoPDwqWCg%2F%2B1A8KlgoPDwqWCg8PCpYKDw8KlgoPDwqWCg8PCpYKD%2F7UDwqWCg8PCpYKDw8KlgoPDwqWCg8PCpYKDw8KlgoPAAAAAwAAAAAEsAUUABkAKQAzAAABMxUjFSEyFg8BBgchJi8BJjYzITUjNTM1MwEhMhYUBisBFyE3IyImNDYDITIWHQEhNTQ2ArxkZAFePjEcQiko%2FPwoKUIcMT4BXmRkyP4%2BArwVHR0VDIn8SooNFR0dswRMFR37UB0EsMhkTzeEUzMzU4Q3T2TIZPx8HSodZGQdKh3%2B1B0VMjIVHQAABAAAAAAEsAUUAAUAGQArADUAAAAyFhUjNAchFhUUByEyFg8BIScmNjMhJjU0AyEyFhQGKwEVBSElNSMiJjQ2AyEyFh0BITU0NgIwUDnCPAE6EgMBSCkHIq%2F9WrIiCikBSAOvArwVHR0VlgET%2FEoBE5YVHR2zBEwVHftQHQUUOykpjSUmCBEhFpGRFiERCCb%2BlR0qHcjIyMgdKh39qB0VMjIVHQAEAAAAAASwBJ0ABwAUACQALgAAADIWFAYiJjQTMzIWFRQXITY1NDYzASEyFhQGKwEXITcjIiY0NgMhMhYdASE1NDYCDZZqapZqty4iKyf%2BvCcrI%2F7NArwVHR0VDYr8SokMFR0dswRMFR37UB0EnWqWamqW%2Fus5Okxra0w6Of5yHSodZGQdKh3%2B1B0VMjIVHQAEAAAAAASwBRQADwAcACwANgAAATIeARUUBiImNTQ3FzcnNhMzMhYVFBchNjU0NjMBITIWFAYrARchNyMiJjQ2AyEyFh0BITU0NgJYL1szb5xvIpBvoyIfLiIrJ%2F68Jysj%2Fs0CvBUdHRUNivxKiQwVHR2zBEwVHftQHQUUa4s2Tm9vTj5Rj2%2BjGv4KOTpMa2tMOjn%2Bch0qHWRkHSod%2FtQdFTIyFR0AAAADAAAAAASwBRIAEgAiACwAAAEFFSEUHgMXIS4BNTQ%2BAjcBITIWFAYrARchNyMiJjQ2AyEyFh0BITU0NgJYASz%2B1CU%2FP00T%2Fe48PUJtj0r%2BogK8FR0dFQ2K%2FEqJDBUdHbMETBUd%2B1AdBLChizlmUT9IGVO9VFShdksE%2FH4dKh1kZB0qHf7UHRUyMhUdAAIAyAAAA%2BgFFAAPACkAAAAyFh0BHgEdASE1NDY3NTQDITIWFyMVMxUjFTMVIxUzFAYjISImNRE0NgIvUjsuNv5wNi5kAZA2XBqsyMjIyMh1U%2F5wU3V1BRQ7KU4aXDYyMjZcGk4p%2Fkc2LmRkZGRkU3V1UwGQU3UAAAMAZP%2F%2FBEwETAAPAC8AMwAAEyEyFhURFAYjISImNRE0NgMhMhYdARQGIyEXFhQGIi8BIQcGIiY0PwEhIiY9ATQ2BQchJ5YDhBUdHRX8fBUdHQQDtgoPDwr%2B5eANGiUNWP30Vw0mGg3g%2Ft8KDw8BqmQBRGQETB0V%2FgwVHR0VAfQVHf1EDwoyCg%2FgDSUbDVhYDRslDeAPCjIKD2RkZAAAAAAEAAAAAASwBEwAGQAjAC0ANwAAEyEyFh0BIzQmKwEiBhUjNCYrASIGFSM1NDYDITIWFREhETQ2ExUUBisBIiY9ASEVFAYrASImPQHIAyBTdWQ7KfopO2Q7KfopO2R1EQPoKTv7UDvxHRVkFR0D6B0VZBUdBEx1U8gpOzspKTs7KchTdf4MOyn%2B1AEsKTv%2BDDIVHR0VMjIVHR0VMgADAAEAAASpBKwADQARABsAAAkBFhQPASEBJjQ3ATYyCQMDITIWHQEhNTQ2AeACqh8fg%2F4f%2FfsgIAEnH1n%2BrAFWAS%2F%2Bq6IDIBUd%2FHwdBI39VR9ZH4MCBh9ZHwEoH%2F5u%2FqoBMAFV%2FBsdFTIyFR0AAAAAAgCPAAAEIQSwABcALwAAAQMuASMhIgYHAwYWMyEVFBYyNj0BMzI2AyE1NDY7ATU0NjsBETMRMzIWHQEzMhYVBCG9CCcV%2FnAVJwi9CBMVAnEdKh19FROo%2Fa0dFTIdFTDILxUdMhUdAocB%2BhMcHBP%2BBhMclhUdHRWWHP2MMhUdMhUdASz%2B1B0VMh0VAAAEAAAAAASwBLAADQAQAB8AIgAAASERFAYjIREBNTQ2MyEBIzUBIREUBiMhIiY1ETQ2MyEBIzUDhAEsDwr%2Bif7UDwoBdwEsyP2oASwPCv12Cg8PCgF3ASzIAyD9wQoPAk8BLFQKD%2F7UyP4M%2FcEKDw8KA7YKD%2F7UyAAC%2F5wAZAUUBEcARgBWAAABMzIeAhcWFxY2NzYnJjc%2BARYXFgcOASsBDgEPAQ4BKwEiJj8BBisBIicHDgErASImPwEmLwEuAT0BNDY7ATY3JyY2OwE2BSMiBh0BFBY7ATI2PQE0JgHkw0uOakkMEhEfQwoKGRMKBQ8XDCkCA1Y9Pgc4HCcDIhVkFRgDDDEqwxgpCwMiFWQVGAMaVCyfExwdFXwLLW8QBxXLdAFF%2BgoPDwr6Cg8PBEdBa4pJDgYKISAiJRsQCAYIDCw9P1c3fCbqFB0dFEYOCEAUHR0UnUplNQcmFTIVHVdPXw4TZV8PCjIKDw8KMgoPAAb%2FnP%2FmBRQEfgAJACQANAA8AFIAYgAAASU2Fh8BFgYPASUzMhYfASEyFh0BFAYHBQYmJyYjISImPQE0NhcjIgYdARQ7ATI2NTQmJyYEIgYUFjI2NAE3PgEeARceAT8BFxYGDwEGJi8BJjYlBwYfAR4BPwE2Jy4BJy4BAoEBpxMuDiAOAxCL%2FCtqQ0geZgM3FR0cE%2F0fFyIJKjr%2B1D5YWLlQExIqhhALIAsSAYBALS1ALf4PmBIgHhMQHC0aPzANITNQL3wpgigJASlmHyElDR0RPRMFAhQHCxADhPcICxAmDyoNeMgiNtQdFTIVJgeEBBQPQ1g%2ByD5YrBwVODMQEAtEERzJLUAtLUD%2B24ITChESEyMgAwWzPUkrRSgJL5cvfRxYGyYrDwkLNRAhFEgJDAQAAAAAAwBkAAAEOQSwAFEAYABvAAABMzIWHQEeARcWDgIPATIeBRUUDgUjFRQGKwEiJj0BIxUUBisBIiY9ASMiJj0BNDY7AREjIiY9ATQ2OwE1NDY7ATIWHQEzNTQ2AxUhMj4CNTc0LgMjARUhMj4CNTc0LgMjAnGWCg9PaAEBIC4uEBEGEjQwOiodFyI2LUAjGg8KlgoPZA8KlgoPrwoPDwpLSwoPDwqvDwqWCg9kD9cBBxwpEwsBAQsTKRz%2B%2BQFrHCkTCwEBCxMpHASwDwptIW1KLk0tHwYGAw8UKDJOLTtdPCoVCwJLCg8PCktLCg8PCksPCpYKDwJYDwqWCg9LCg8PCktLCg%2F%2B1MgVHR0LCgQOIhoW%2FnDIFR0dCwoEDiIaFgAAAwAEAAIEsASuABcAKQAsAAATITIWFREUBg8BDgEjISImJy4CNRE0NgQiDgQPARchNy4FAyMT1AMMVnokEhIdgVL9xFKCHAgYKHoCIIx9VkcrHQYGnAIwnAIIIClJVSGdwwSuelb%2BYDO3QkJXd3ZYHFrFMwGgVnqZFyYtLSUMDPPzBQ8sKDEj%2FsIBBQACAMgAAAOEBRQADwAZAAABMzIWFREUBiMhIiY1ETQ2ARUUBisBIiY9AQHblmesVCn%2BPilUrAFINhWWFTYFFKxn%2FgwpVFQpAfRnrPwY4RU2NhXhAAACAMgAAAOEBRQADwAZAAABMxQWMxEUBiMhIiY1ETQ2ARUUBisBIiY9AQHbYLOWVCn%2BPilUrAFINhWWFTYFFJaz%2FkIpVFQpAfRnrPwY4RU2NhXhAAACAAAAFAUOBBoAFAAaAAAJASUHFRcVJwc1NzU0Jj4CPwEnCQEFJTUFJQUO%2FYL%2Bhk5klpZkAQEBBQQvkwKCAVz%2Bov6iAV4BXgL%2F%2FuWqPOCWx5SVyJb6BA0GCgYDKEEBG%2F1ipqaTpaUAAAMAZAH0BLADIAAHAA8AFwAAEjIWFAYiJjQkMhYUBiImNCQyFhQGIiY0vHxYWHxYAeh8WFh8WAHofFhYfFgDIFh8WFh8WFh8WFh8WFh8WFh8AAAAAAMBkAAAArwETAAHAA8AFwAAADIWFAYiJjQSMhYUBiImNBIyFhQGIiY0Aeh8WFh8WFh8WFh8WFh8WFh8WARMWHxYWHz%2ByFh8WFh8%2FshYfFhYfAAAAAMAZABkBEwETAAPAB8ALwAAEyEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2fQO2Cg8PCvxKCg8PCgO2Cg8PCvxKCg8PCgO2Cg8PCvxKCg8PBEwPCpYKDw8KlgoP%2FnAPCpYKDw8KlgoP%2FnAPCpYKDw8KlgoPAAAABAAAAAAEsASwAA8AHwAvADMAAAEhMhYVERQGIyEiJjURNDYFISIGFREUFjMhMjY1ETQmBSEyFhURFAYjISImNRE0NhcVITUBXgH0ory7o%2F4Mpbm5Asv9qCk7OykCWCk7O%2F2xAfQVHR0V%2FgwVHR1HAZAEsLuj%2FgylubmlAfSlucg7Kf2oKTs7KQJYKTtkHRX%2B1BUdHRUBLBUdZMjIAAAAAAEAZABkBLAETAA7AAATITIWFAYrARUzMhYUBisBFTMyFhQGKwEVMzIWFAYjISImNDY7ATUjIiY0NjsBNSMiJjQ2OwE1IyImNDaWA%2BgVHR0VMjIVHR0VMjIVHR0VMjIVHR0V%2FBgVHR0VMjIVHR0VMjIVHR0VMjIVHR0ETB0qHcgdKh3IHSodyB0qHR0qHcgdKh3IHSodyB0qHQAAAAYBLAAFA%2BgEowAHAA0AEwAZAB8AKgAAAR4BBgcuATYBMhYVIiYlFAYjNDYBMhYVIiYlFAYjNDYDFRQGIiY9ARYzMgKKVz8%2FV1c%2FP%2F75fLB8sAK8sHyw%2FcB8sHywArywfLCwHSodKAMRBKNDsrJCQrKy%2FsCwfLB8fLB8sP7UsHywfHywfLD%2B05AVHR0VjgQAAAH%2FtQDIBJQDgQBCAAABNzYXAR4BBw4BKwEyFRQOBCsBIhE0NyYiBxYVECsBIi4DNTQzIyImJyY2NwE2HwEeAQ4BLwEHIScHBi4BNgLpRRkUASoLCAYFGg8IAQQNGyc%2FKZK4ChRUFQu4jjBJJxkHAgcPGQYGCAsBKhQaTBQVCiMUM7YDe7YsFCMKFgNuEwYS%2FtkLHw8OEw0dNkY4MhwBIBgXBAQYF%2F7gKjxTQyMNEw4PHwoBKBIHEwUjKBYGDMHBDAUWKCMAAAAAAgAAAAAEsASwACUAQwAAASM0LgUrAREUFh8BFSE1Mj4DNREjIg4FFSMRIQEjNC4DKwERFBYXMxUjNTI1ESMiDgMVIzUhBLAyCAsZEyYYGcgyGRn%2BcAQOIhoWyBkYJhMZCwgyA%2Bj9RBkIChgQEWQZDQzIMmQREBgKCBkB9AOEFSAVDggDAfyuFhkBAmRkAQUJFQ4DUgEDCA4VIBUBLP0SDxMKBQH%2BVwsNATIyGQGpAQUKEw%2BWAAAAAAMAAAAABEwErgAdACAAMAAAATUiJy4BLwEBIwEGBw4BDwEVITUiJj8BIRcWBiMVARsBARUUBiMhIiY9ATQ2MyEyFgPoGR4OFgUE%2Ft9F%2FtQSFQkfCwsBETE7EkUBJT0NISf%2B7IZ5AbEdFfwYFR0dFQPoFR0BLDIgDiIKCwLr%2FQ4jFQkTBQUyMisusKYiQTIBhwFW%2Fqr942QVHR0VZBUdHQADAAAAAASwBLAADwBHAEoAABMhMhYVERQGIyEiJjURNDYFIyIHAQYHBgcGHQEUFjMhMjY9ATQmIyInJj8BIRcWBwYjIgYdARQWMyEyNj0BNCYnIicmJyMBJhMjEzIETBUdHRX7tBUdHQJGRg0F%2FtUREhImDAsJAREIDAwINxAKCj8BCjkLEQwYCAwMCAE5CAwLCBEZGQ8B%2FuAFDsVnBLAdFfu0FR0dFQRMFR1SDP0PIBMSEAUNMggMDAgyCAwXDhmjmR8YEQwIMggMDAgyBwwBGRskAuwM%2FgUBCAAABAAAAAAEsASwAAMAEwAjACcAAAEhNSEFITIWFREUBiMhIiY1ETQ2KQEyFhURFAYjISImNRE0NhcRIREEsPtQBLD7ggGQFR0dFf5wFR0dAm0BkBUdHRX%2BcBUdHUcBLARMZMgdFfx8FR0dFQOEFR0dFf5wFR0dFQGQFR1k%2FtQBLAAEAAAAAASwBLAADwAfACMAJwAAEyEyFhURFAYjISImNRE0NgEhMhYVERQGIyEiJjURNDYXESEREyE1ITIBkBUdHRX%2BcBUdHQJtAZAVHR0V%2FnAVHR1HASzI%2B1AEsASwHRX8fBUdHRUDhBUd%2FgwdFf5wFR0dFQGQFR1k%2FtQBLP2oZAAAAAACAAAAZASwA%2BgAJwArAAATITIWFREzNTQ2MyEyFh0BMxUjFRQGIyEiJj0BIxEUBiMhIiY1ETQ2AREhETIBkBUdZB0VAZAVHWRkHRX%2BcBUdZB0V%2FnAVHR0CnwEsA%2BgdFf6ilhUdHRWWZJYVHR0Vlv6iFR0dFQMgFR3%2B1P7UASwAAAQAAAAABLAEsAADABMAFwAnAAAzIxEzFyEyFhURFAYjISImNRE0NhcRIREBITIWFREUBiMhIiY1ETQ2ZGRklgGQFR0dFf5wFR0dRwEs%2FqIDhBUdHRX8fBUdHQSwZB0V%2FnAVHR0VAZAVHWT%2B1AEs%2FgwdFf5wFR0dFQGQFR0AAAAAAgBkAAAETASwACcAKwAAATMyFhURFAYrARUhMhYVERQGIyEiJjURNDYzITUjIiY1ETQ2OwE1MwcRIRECWJYVHR0VlgHCFR0dFfx8FR0dFQFelhUdHRWWZMgBLARMHRX%2BcBUdZB0V%2FnAVHR0VAZAVHWQdFQGQFR1kyP7UASwAAAAEAAAAAASwBLAAAwATABcAJwAAISMRMwUhMhYVERQGIyEiJjURNDYXESERASEyFhURFAYjISImNRE0NgSwZGT9dgGQFR0dFf5wFR0dRwEs%2FK4DhBUdHRX8fBUdHQSwZB0V%2FnAVHR0VAZAVHWT%2B1AEs%2FgwdFf5wFR0dFQGQFR0AAAEBLAAwA28EgAAPAAAJAQYjIiY1ETQ2MzIXARYUA2H%2BEhcSDhAQDhIXAe4OAjX%2BEhcbGQPoGRsX%2FhIOKgAAAAABAUEAMgOEBH4ACwAACQE2FhURFAYnASY0AU8B7h0qKh3%2BEg4CewHuHREp%2FBgpER0B7g4qAAAAAAEAMgFBBH4DhAALAAATITIWBwEGIicBJjZkA%2BgpER3%2BEg4qDv4SHREDhCod%2FhIODgHuHSoAAAAAAQAyASwEfgNvAAsAAAkBFgYjISImNwE2MgJ7Ae4dESn8GCkRHQHuDioDYf4SHSoqHQHuDgAAAAACAAgAAASwBCgABgAKAAABFQE1LQE1ASE1IQK8%2FUwBnf5jBKj84AMgAuW2%2Fr3dwcHd%2B9jIAAAAAAIAAABkBLAEsAALADEAAAEjFTMVIREzNSM1IQEzND4FOwERFAYPARUhNSIuAzURMzIeBRUzESEEsMjI%2FtTIyAEs%2B1AyCAsZEyYYGWQyGRkBkAQOIhoWZBkYJhMZCwgy%2FOADhGRkASxkZP4MFSAVDggDAf3aFhkBAmRkAQUJFQ4CJgEDCA4VIBUBLAAAAgAAAAAETAPoACUAMQAAASM0LgUrAREUFh8BFSE1Mj4DNREjIg4FFSMRIQEjFTMVIREzNSM1IQMgMggLGRMmGBlkMhkZ%2FnAEDiIaFmQZGCYTGQsIMgMgASzIyP7UyMgBLAK8FSAVDggDAf3aFhkCAWRkAQUJFQ4CJgEDCA4VIBUBLPzgZGQBLGRkAAABAMgAZgNyBEoAEgAAATMyFgcJARYGKwEiJwEmNDcBNgK9oBAKDP4wAdAMChCgDQr%2BKQcHAdcKBEoWDP4w%2FjAMFgkB1wgUCAHXCQAAAQE%2BAGYD6ARKABIAAAEzMhcBFhQHAQYrASImNwkBJjYBU6ANCgHXBwf%2BKQoNoBAKDAHQ%2FjAMCgRKCf4pCBQI%2FikJFgwB0AHQDBYAAAEAZgDIBEoDcgASAAAAFh0BFAcBBiInASY9ATQ2FwkBBDQWCf4pCBQI%2FikJFgwB0AHQA3cKEKANCv4pBwcB1woNoBAKDP4wAdAAAAABAGYBPgRKA%2BgAEgAACQEWHQEUBicJAQYmPQE0NwE2MgJqAdcJFgz%2BMP4wDBYJAdcIFAPh%2FikKDaAQCgwB0P4wDAoQoA0KAdcHAAAAAgDZ%2F%2FkEPQSwAAUAOgAAARQGIzQ2BTMyFh8BNjc%2BAh4EBgcOBgcGIiYjIgYiJy4DLwEuAT4EHgEXJyY2A%2BiwfLD%2BVmQVJgdPBQsiKFAzRyorDwURAQQSFyozTSwNOkkLDkc3EDlfNyYHBw8GDyUqPjdGMR%2BTDA0EsHywfLDIHBPCAQIGBwcFDx81S21DBxlLR1xKQhEFBQcHGWt0bCQjP2hJNyATBwMGBcASGAAAAAACAMgAFQOEBLAAFgAaAAATITIWFREUBisBEQcGJjURIyImNRE0NhcVITX6AlgVHR0Vlv8TGpYVHR2rASwEsB0V%2FnAVHf4MsgkQFQKKHRUBkBUdZGRkAAAAAgDIABkETASwAA4AEgAAEyEyFhURBRElIREjETQ2ARU3NfoC7ic9%2FUQCWP1EZB8BDWQEsFEs%2FFt1A7Z9%2FBgEARc0%2FV1kFGQAAQAAAAECTW%2FDBF9fDzz1AB8EsAAAAADQdnOXAAAAANB2c5f%2FUf%2BcBdwFFAAAAAgAAgAAAAAAAAABAAAFFP%2BFAAAFFP9R%2FtQF3AABAAAAAAAAAAAAAAAAAAAAowG4ACgAAAAAAZAAAASwAAAEsABkBLAAAASwAAAEsABwAooAAAUUAAACigAABRQAAAGxAAABRQAAANgAAADYAAAAogAAAQQAAABIAAABBAAAAUUAAASwAGQEsAB7BLAAyASwAMgB9AAABLD%2F8gSwAAAEsAAABLD%2F8ASwAAAEsAAOBLAACQSwAGQEsP%2FTBLD%2F0wSwAAAEsAAABLAAAASwAAAEsAAABLAAJgSwAG4EsAAXBLAAFwSwABcEsABkBLAAGgSwAGQEsAAMBLAAZASwABcEsP%2BcBLAAZASwABcEsAAXBLAAAASwABcEsAAXBLAAFwSwAGQEsAAABLAAZASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAZASwAMgEsAAABLAAAASwADUEsABkBLAAyASw%2F7UEsAAhBLAAAASwAAAEsAAABLAAAASwAAAEsP%2BcBLAAAASwAAAEsAAABLAA2wSwABcEsAB1BLAAAASwAAAEsAAABLAACgSwAMgEsAAABLAAnQSwAMgEsADIBLAAyASwAAAEsP%2F%2BBLABLASwAGQEsACIBLABOwSwABcEsAAXBLAAFwSwABcEsAAXBLAAFwSwAAAEsAAXBLAAFwSwABcEsAAXBLAAAASwALcEsAC3BLAAAASwAAAEsABJBLAAFwSwAAAEsAAABLAAXQSw%2F9wEsP%2FcBLD%2FnwSwAGQEsAAABLAAAASwAAAEsABkBLD%2F%2FwSwAAAEsP9RBLAABgSwAAAEsAAABLABRQSwAAEEsAAABLD%2FnASwAEoEsAAUBLAAAASwAAAEsAAABLD%2FnASwAGEEsP%2F9BLAAFgSwABYEsAAWBLAAFgSwABgEsAAABMQAAASwAGQAAAAAAAD%2F2ABkADkAyAAAAScAZAAZABkAGQAZABkAGQAZAAAAAAAAAAAAAADZAAAAAAAOAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAMAZABkAAAAEAAAAAAAZP%2Bc%2F5z%2FnP%2Bc%2F5z%2FnP%2Bc%2F5wACQAJ%2F%2FL%2F8gBkAHkAJwBkAGQAAAAAAGT%2FogAAAAAAAAAAAAAAAADIAGQAAAABAI8AAP%2Bc%2F5wAZAAEAMgAyAAAAGQBkABkAAAAZAEs%2F7UAAAAAAAAAAAAAAAAAAABkAAABLAFBADIAMgAIAAAAAADIAT4AZgBmANkAyADIAAAAKgAqACoAKgCyAOgA6AFOAU4BTgFOAU4BTgFOAU4BTgFOAU4BTgFOAU4BpAIGAiICfgKGAqwC5ANGA24DjAPEBAgEMgRiBKIE3AVcBboGcgb0ByAHYgfKCB4IYgi%2BCTYJhAm2Cd4KKApMCpQK4gswC4oLygwIDFgNKg1eDbAODg5oDrQPKA%2BmD%2BYQEhBUEJAQqhEqEXYRthIKEjgSfBLAExoTdBPQFCoU1BU8FagVzBYEFjYWYBawFv4XUhemGAIYLhhqGJYYsBjgGP4ZKBloGZQZxBnaGe4aNhpoGrga9hteG7QcMhyUHOIdHB1EHWwdlB28HeYeLh52HsAfYh%2FSIEYgviEyIXYhuCJAIpYiuCMOIyIjOCN6I8Ij4CQCJDAkXiSWJOIlNCVgJbwmFCZ%2BJuYnUCe8J%2FgoNChwKKwpoCnMKiYqSiqEKworeiwILGgsuizsLRwtiC30LiguZi6iLtgvDi9GL34vsi%2F4MD4whDDSMRIxYDGuMegyJDJeMpoy3jMiMz4zaDO2NBg0YDSoNNI1LDWeNeg2PjZ8Ntw3GjdON5I31DgQOEI4hjjIOQo5SjmIOcw6HDpsOpo63jugO9w8GDxQPKI8%2BD0yPew%2BOj6MPtQ%2FKD9uP6o%2F%2BkBIQIBAxkECQX5CGEKoQu5DGENCQ3ZDoEPKRBBEYESuRPZFWkW2RgZGdEa0RvZHNkd2R7ZH9kgWSDJITkhqSIZIzEkSSThJXkmESapKAkouSlIAAQAAARcApwARAAAAAAACAAAAAQABAAAAQAAuAAAAAAAAABAAxgABAAAAAAATABIAAAADAAEECQAAAGoAEgADAAEECQABACgAfAADAAEECQACAA4ApAADAAEECQADAEwAsgADAAEECQAEADgA%2FgADAAEECQAFAHgBNgADAAEECQAGADYBrgADAAEECQAIABYB5AADAAEECQAJABYB%2BgADAAEECQALACQCEAADAAEECQAMACQCNAADAAEECQATACQCWAADAAEECQDIABYCfAADAAEECQDJADACkgADAAEECdkDABoCwnd3dy5nbHlwaGljb25zLmNvbQBDAG8AcAB5AHIAaQBnAGgAdAAgAKkAIAAyADAAMQA0ACAAYgB5ACAASgBhAG4AIABLAG8AdgBhAHIAaQBrAC4AIABBAGwAbAAgAHIAaQBnAGgAdABzACAAcgBlAHMAZQByAHYAZQBkAC4ARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAFIAZQBnAHUAbABhAHIAMQAuADAAMAA5ADsAVQBLAFcATgA7AEcATABZAFAASABJAEMATwBOAFMASABhAGwAZgBsAGkAbgBnAHMALQBSAGUAZwB1AGwAYQByAEcATABZAFAASABJAEMATwBOAFMAIABIAGEAbABmAGwAaQBuAGcAcwAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAOQA7AFAAUwAgADAAMAAxAC4AMAAwADkAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADgAMwAyADkARwBMAFkAUABIAEkAQwBPAE4AUwBIAGEAbABmAGwAaQBuAGcAcwAtAFIAZQBnAHUAbABhAHIASgBhAG4AIABLAG8AdgBhAHIAaQBrAEoAYQBuACAASwBvAHYAYQByAGkAawB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQBXAGUAYgBmAG8AbgB0ACAAMQAuADAAVwBlAGQAIABPAGMAdAAgADIAOQAgADAANgA6ADMANgA6ADAANwAgADIAMAAxADQARgBvAG4AdAAgAFMAcQB1AGkAcgByAGUAbAAAAAIAAAAAAAD%2FtQAyAAAAAAAAAAAAAAAAAAAAAAAAAAABFwAAAQIBAwADAA0ADgEEAJYBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMA7wEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE%2BAT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG%2FAcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB%2BgH7AfwB%2FQH%2BAf8CAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CDwIQAhECEgZnbHlwaDEGZ2x5cGgyB3VuaTAwQTAHdW5pMjAwMAd1bmkyMDAxB3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA3B3VuaTIwMDgHdW5pMjAwOQd1bmkyMDBBB3VuaTIwMkYHdW5pMjA1RgRFdXJvB3VuaTIwQkQHdW5pMjMxQgd1bmkyNUZDB3VuaTI2MDEHdW5pMjZGQQd1bmkyNzA5B3VuaTI3MEYHdW5pRTAwMQd1bmlFMDAyB3VuaUUwMDMHdW5pRTAwNQd1bmlFMDA2B3VuaUUwMDcHdW5pRTAwOAd1bmlFMDA5B3VuaUUwMTAHdW5pRTAxMQd1bmlFMDEyB3VuaUUwMTMHdW5pRTAxNAd1bmlFMDE1B3VuaUUwMTYHdW5pRTAxNwd1bmlFMDE4B3VuaUUwMTkHdW5pRTAyMAd1bmlFMDIxB3VuaUUwMjIHdW5pRTAyMwd1bmlFMDI0B3VuaUUwMjUHdW5pRTAyNgd1bmlFMDI3B3VuaUUwMjgHdW5pRTAyOQd1bmlFMDMwB3VuaUUwMzEHdW5pRTAzMgd1bmlFMDMzB3VuaUUwMzQHdW5pRTAzNQd1bmlFMDM2B3VuaUUwMzcHdW5pRTAzOAd1bmlFMDM5B3VuaUUwNDAHdW5pRTA0MQd1bmlFMDQyB3VuaUUwNDMHdW5pRTA0NAd1bmlFMDQ1B3VuaUUwNDYHdW5pRTA0Nwd1bmlFMDQ4B3VuaUUwNDkHdW5pRTA1MAd1bmlFMDUxB3VuaUUwNTIHdW5pRTA1Mwd1bmlFMDU0B3VuaUUwNTUHdW5pRTA1Ngd1bmlFMDU3B3VuaUUwNTgHdW5pRTA1OQd1bmlFMDYwB3VuaUUwNjIHdW5pRTA2Mwd1bmlFMDY0B3VuaUUwNjUHdW5pRTA2Ngd1bmlFMDY3B3VuaUUwNjgHdW5pRTA2OQd1bmlFMDcwB3VuaUUwNzEHdW5pRTA3Mgd1bmlFMDczB3VuaUUwNzQHdW5pRTA3NQd1bmlFMDc2B3VuaUUwNzcHdW5pRTA3OAd1bmlFMDc5B3VuaUUwODAHdW5pRTA4MQd1bmlFMDgyB3VuaUUwODMHdW5pRTA4NAd1bmlFMDg1B3VuaUUwODYHdW5pRTA4Nwd1bmlFMDg4B3VuaUUwODkHdW5pRTA5MAd1bmlFMDkxB3VuaUUwOTIHdW5pRTA5Mwd1bmlFMDk0B3VuaUUwOTUHdW5pRTA5Ngd1bmlFMDk3B3VuaUUxMDEHdW5pRTEwMgd1bmlFMTAzB3VuaUUxMDQHdW5pRTEwNQd1bmlFMTA2B3VuaUUxMDcHdW5pRTEwOAd1bmlFMTA5B3VuaUUxMTAHdW5pRTExMQd1bmlFMTEyB3VuaUUxMTMHdW5pRTExNAd1bmlFMTE1B3VuaUUxMTYHdW5pRTExNwd1bmlFMTE4B3VuaUUxMTkHdW5pRTEyMAd1bmlFMTIxB3VuaUUxMjIHdW5pRTEyMwd1bmlFMTI0B3VuaUUxMjUHdW5pRTEyNgd1bmlFMTI3B3VuaUUxMjgHdW5pRTEyOQd1bmlFMTMwB3VuaUUxMzEHdW5pRTEzMgd1bmlFMTMzB3VuaUUxMzQHdW5pRTEzNQd1bmlFMTM2B3VuaUUxMzcHdW5pRTEzOAd1bmlFMTM5B3VuaUUxNDAHdW5pRTE0MQd1bmlFMTQyB3VuaUUxNDMHdW5pRTE0NAd1bmlFMTQ1B3VuaUUxNDYHdW5pRTE0OAd1bmlFMTQ5B3VuaUUxNTAHdW5pRTE1MQd1bmlFMTUyB3VuaUUxNTMHdW5pRTE1NAd1bmlFMTU1B3VuaUUxNTYHdW5pRTE1Nwd1bmlFMTU4B3VuaUUxNTkHdW5pRTE2MAd1bmlFMTYxB3VuaUUxNjIHdW5pRTE2Mwd1bmlFMTY0B3VuaUUxNjUHdW5pRTE2Ngd1bmlFMTY3B3VuaUUxNjgHdW5pRTE2OQd1bmlFMTcwB3VuaUUxNzEHdW5pRTE3Mgd1bmlFMTczB3VuaUUxNzQHdW5pRTE3NQd1bmlFMTc2B3VuaUUxNzcHdW5pRTE3OAd1bmlFMTc5B3VuaUUxODAHdW5pRTE4MQd1bmlFMTgyB3VuaUUxODMHdW5pRTE4NAd1bmlFMTg1B3VuaUUxODYHdW5pRTE4Nwd1bmlFMTg4B3VuaUUxODkHdW5pRTE5MAd1bmlFMTkxB3VuaUUxOTIHdW5pRTE5Mwd1bmlFMTk0B3VuaUUxOTUHdW5pRTE5Nwd1bmlFMTk4B3VuaUUxOTkHdW5pRTIwMAd1bmlFMjAxB3VuaUUyMDIHdW5pRTIwMwd1bmlFMjA0B3VuaUUyMDUHdW5pRTIwNgd1bmlFMjA5B3VuaUUyMTAHdW5pRTIxMQd1bmlFMjEyB3VuaUUyMTMHdW5pRTIxNAd1bmlFMjE1B3VuaUUyMTYHdW5pRTIxOAd1bmlFMjE5B3VuaUUyMjEHdW5pRTIyMwd1bmlFMjI0B3VuaUUyMjUHdW5pRTIyNgd1bmlFMjI3B3VuaUUyMzAHdW5pRTIzMQd1bmlFMjMyB3VuaUUyMzMHdW5pRTIzNAd1bmlFMjM1B3VuaUUyMzYHdW5pRTIzNwd1bmlFMjM4B3VuaUUyMzkHdW5pRTI0MAd1bmlFMjQxB3VuaUUyNDIHdW5pRTI0Mwd1bmlFMjQ0B3VuaUUyNDUHdW5pRTI0Ngd1bmlFMjQ3B3VuaUUyNDgHdW5pRTI0OQd1bmlFMjUwB3VuaUUyNTEHdW5pRTI1Mgd1bmlFMjUzB3VuaUUyNTQHdW5pRTI1NQd1bmlFMjU2B3VuaUUyNTcHdW5pRTI1OAd1bmlFMjU5B3VuaUUyNjAHdW5pRjhGRgZ1MUY1MTEGdTFGNkFBAAAAAAFUUMMXAAA%3D%29%20format%28%27truetype%27%29%2Curl%28data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI%2FPgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8bWV0YWRhdGE%2BPC9tZXRhZGF0YT4KPGRlZnM%2BCjxmb250IGlkPSJnbHlwaGljb25zX2hhbGZsaW5nc3JlZ3VsYXIiIGhvcml6LWFkdi14PSIxMjAwIiA%2BCjxmb250LWZhY2UgdW5pdHMtcGVyLWVtPSIxMjAwIiBhc2NlbnQ9Ijk2MCIgZGVzY2VudD0iLTI0MCIgLz4KPG1pc3NpbmctZ2x5cGggaG9yaXotYWR2LXg9IjUwMCIgLz4KPGdseXBoIGhvcml6LWFkdi14PSIwIiAvPgo8Z2x5cGggaG9yaXotYWR2LXg9IjQwMCIgLz4KPGdseXBoIHVuaWNvZGU9IiAiIC8%2BCjxnbHlwaCB1bmljb2RlPSIqIiBkPSJNNjAwIDExMDBxMTUgMCAzNCAtMS41dDMwIC0zLjVsMTEgLTFxMTAgLTIgMTcuNSAtMTAuNXQ3LjUgLTE4LjV2LTIyNGwxNTggMTU4cTcgNyAxOCA4dDE5IC02bDEwNiAtMTA2cTcgLTggNiAtMTl0LTggLTE4bC0xNTggLTE1OGgyMjRxMTAgMCAxOC41IC03LjV0MTAuNSAtMTcuNXE2IC00MSA2IC03NXEwIC0xNSAtMS41IC0zNHQtMy41IC0zMGwtMSAtMTFxLTIgLTEwIC0xMC41IC0xNy41dC0xOC41IC03LjVoLTIyNGwxNTggLTE1OCBxNyAtNyA4IC0xOHQtNiAtMTlsLTEwNiAtMTA2cS04IC03IC0xOSAtNnQtMTggOGwtMTU4IDE1OHYtMjI0cTAgLTEwIC03LjUgLTE4LjV0LTE3LjUgLTEwLjVxLTQxIC02IC03NSAtNnEtMTUgMCAtMzQgMS41dC0zMCAzLjVsLTExIDFxLTEwIDIgLTE3LjUgMTAuNXQtNy41IDE4LjV2MjI0bC0xNTggLTE1OHEtNyAtNyAtMTggLTh0LTE5IDZsLTEwNiAxMDZxLTcgOCAtNiAxOXQ4IDE4bDE1OCAxNThoLTIyNHEtMTAgMCAtMTguNSA3LjUgdC0xMC41IDE3LjVxLTYgNDEgLTYgNzVxMCAxNSAxLjUgMzR0My41IDMwbDEgMTFxMiAxMCAxMC41IDE3LjV0MTguNSA3LjVoMjI0bC0xNTggMTU4cS03IDcgLTggMTh0NiAxOWwxMDYgMTA2cTggNyAxOSA2dDE4IC04bDE1OCAtMTU4djIyNHEwIDEwIDcuNSAxOC41dDE3LjUgMTAuNXE0MSA2IDc1IDZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iKyIgZD0iTTQ1MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMzUwaDM1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0zNTB2LTM1MHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYzNTBoLTM1MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNSBoMzUwdjM1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4YTA7IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4YTU7IiBkPSJNODI1IDExMDBoMjUwcTEwIDAgMTIuNSAtNXQtNS41IC0xM2wtMzY0IC0zNjRxLTYgLTYgLTExIC0xOGgyNjhxMTAgMCAxMyAtNnQtMyAtMTRsLTEyMCAtMTYwcS02IC04IC0xOCAtMTR0LTIyIC02aC0xMjV2LTEwMGgyNzVxMTAgMCAxMyAtNnQtMyAtMTRsLTEyMCAtMTYwcS02IC04IC0xOCAtMTR0LTIyIC02aC0xMjV2LTE3NHEwIC0xMSAtNy41IC0xOC41dC0xOC41IC03LjVoLTE0OHEtMTEgMCAtMTguNSA3LjV0LTcuNSAxOC41djE3NCBoLTI3NXEtMTAgMCAtMTMgNnQzIDE0bDEyMCAxNjBxNiA4IDE4IDE0dDIyIDZoMTI1djEwMGgtMjc1cS0xMCAwIC0xMyA2dDMgMTRsMTIwIDE2MHE2IDggMTggMTR0MjIgNmgxMThxLTUgMTIgLTExIDE4bC0zNjQgMzY0cS04IDggLTUuNSAxM3QxMi41IDVoMjUwcTI1IDAgNDMgLTE4bDE2NCAtMTY0cTggLTggMTggLTh0MTggOGwxNjQgMTY0cTE4IDE4IDQzIDE4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDA7IiBob3Jpei1hZHYteD0iNjUwIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwMTsiIGhvcml6LWFkdi14PSIxMzAwIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwMjsiIGhvcml6LWFkdi14PSI2NTAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDAzOyIgaG9yaXotYWR2LXg9IjEzMDAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDA0OyIgaG9yaXotYWR2LXg9IjQzMyIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDU7IiBob3Jpei1hZHYteD0iMzI1IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwNjsiIGhvcml6LWFkdi14PSIyMTYiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDA3OyIgaG9yaXotYWR2LXg9IjIxNiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDg7IiBob3Jpei1hZHYteD0iMTYyIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwOTsiIGhvcml6LWFkdi14PSIyNjAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDBhOyIgaG9yaXotYWR2LXg9IjcyIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAyZjsiIGhvcml6LWFkdi14PSIyNjAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDVmOyIgaG9yaXotYWR2LXg9IjMyNSIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwYWM7IiBkPSJNNzQ0IDExOThxMjQyIDAgMzU0IC0xODlxNjAgLTEwNCA2NiAtMjA5aC0xODFxMCA0NSAtMTcuNSA4Mi41dC00My41IDYxLjV0LTU4IDQwLjV0LTYwLjUgMjR0LTUxLjUgNy41cS0xOSAwIC00MC41IC01LjV0LTQ5LjUgLTIwLjV0LTUzIC0zOHQtNDkgLTYyLjV0LTM5IC04OS41aDM3OWwtMTAwIC0xMDBoLTMwMHEtNiAtNTAgLTYgLTEwMGg0MDZsLTEwMCAtMTAwaC0zMDBxOSAtNzQgMzMgLTEzMnQ1Mi41IC05MXQ2MS41IC01NC41dDU5IC0yOSB0NDcgLTcuNXEyMiAwIDUwLjUgNy41dDYwLjUgMjQuNXQ1OCA0MXQ0My41IDYxdDE3LjUgODBoMTc0cS0zMCAtMTcxIC0xMjggLTI3OHEtMTA3IC0xMTcgLTI3NCAtMTE3cS0yMDYgMCAtMzI0IDE1OHEtMzYgNDggLTY5IDEzM3QtNDUgMjA0aC0yMTdsMTAwIDEwMGgxMTJxMSA0NyA2IDEwMGgtMjE4bDEwMCAxMDBoMTM0cTIwIDg3IDUxIDE1My41dDYyIDEwMy41cTExNyAxNDEgMjk3IDE0MXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMGJkOyIgZD0iTTQyOCAxMjAwaDM1MHE2NyAwIDEyMCAtMTN0ODYgLTMxdDU3IC00OS41dDM1IC01Ni41dDE3IC02NC41dDYuNSAtNjAuNXQwLjUgLTU3di0xNi41di0xNi41cTAgLTM2IC0wLjUgLTU3dC02LjUgLTYxdC0xNyAtNjV0LTM1IC01N3QtNTcgLTUwLjV0LTg2IC0zMS41dC0xMjAgLTEzaC0xNzhsLTIgLTEwMGgyODhxMTAgMCAxMyAtNnQtMyAtMTRsLTEyMCAtMTYwcS02IC04IC0xOCAtMTR0LTIyIC02aC0xMzh2LTE3NXEwIC0xMSAtNS41IC0xOCB0LTE1LjUgLTdoLTE0OXEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE3NWgtMjY3cS0xMCAwIC0xMyA2dDMgMTRsMTIwIDE2MHE2IDggMTggMTR0MjIgNmgxMTd2MTAwaC0yNjdxLTEwIDAgLTEzIDZ0MyAxNGwxMjAgMTYwcTYgOCAxOCAxNHQyMiA2aDExN3Y0NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNjAwIDEwMDB2LTMwMGgyMDNxNjQgMCA4Ni41IDMzdDIyLjUgMTE5cTAgODQgLTIyLjUgMTE2dC04Ni41IDMyaC0yMDN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjIxMjsiIGQ9Ik0yNTAgNzAwaDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjMxYjsiIGQ9Ik0xMDAwIDEyMDB2LTE1MHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTEwMHEwIC05MSAtNDkuNSAtMTY1LjV0LTEzMC41IC0xMDkuNXE4MSAtMzUgMTMwLjUgLTEwOS41dDQ5LjUgLTE2NS41di0xNTBoNTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTE1MGgtODAwdjE1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNTB2MTUwcTAgOTEgNDkuNSAxNjUuNXQxMzAuNSAxMDkuNXEtODEgMzUgLTEzMC41IDEwOS41IHQtNDkuNSAxNjUuNXYxMDBoLTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxNTBoODAwek00MDAgMTAwMHYtMTAwcTAgLTYwIDMyLjUgLTEwOS41dDg3LjUgLTczLjVxMjggLTEyIDQ0IC0zN3QxNiAtNTV0LTE2IC01NXQtNDQgLTM3cS01NSAtMjQgLTg3LjUgLTczLjV0LTMyLjUgLTEwOS41di0xNTBoNDAwdjE1MHEwIDYwIC0zMi41IDEwOS41dC04Ny41IDczLjVxLTI4IDEyIC00NCAzN3QtMTYgNTV0MTYgNTV0NDQgMzcgcTU1IDI0IDg3LjUgNzMuNXQzMi41IDEwOS41djEwMGgtNDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDI1ZmM7IiBob3Jpei1hZHYteD0iNTAwIiBkPSJNMCAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDI2MDE7IiBkPSJNNTAzIDEwODlxMTEwIDAgMjAwLjUgLTU5LjV0MTM0LjUgLTE1Ni41cTQ0IDE0IDkwIDE0cTEyMCAwIDIwNSAtODYuNXQ4NSAtMjA2LjVxMCAtMTIxIC04NSAtMjA3LjV0LTIwNSAtODYuNWgtNzUwcS03OSAwIC0xMzUuNSA1N3QtNTYuNSAxMzdxMCA2OSA0Mi41IDEyMi41dDEwOC41IDY3LjVxLTIgMTIgLTIgMzdxMCAxNTMgMTA4IDI2MC41dDI2MCAxMDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyNmZhOyIgZD0iTTc3NCAxMTkzLjVxMTYgLTkuNSAyMC41IC0yN3QtNS41IC0zMy41bC0xMzYgLTE4N2w0NjcgLTc0NmgzMHEyMCAwIDM1IC0xOC41dDE1IC0zOS41di00MmgtMTIwMHY0MnEwIDIxIDE1IDM5LjV0MzUgMTguNWgzMGw0NjggNzQ2bC0xMzUgMTgzcS0xMCAxNiAtNS41IDM0dDIwLjUgMjh0MzQgNS41dDI4IC0yMC41bDExMSAtMTQ4bDExMiAxNTBxOSAxNiAyNyAyMC41dDM0IC01ek02MDAgMjAwaDM3N2wtMTgyIDExMmwtMTk1IDUzNHYtNjQ2eiAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyNzA5OyIgZD0iTTI1IDExMDBoMTE1MHExMCAwIDEyLjUgLTV0LTUuNSAtMTNsLTU2NCAtNTY3cS04IC04IC0xOCAtOHQtMTggOGwtNTY0IDU2N3EtOCA4IC01LjUgMTN0MTIuNSA1ek0xOCA4ODJsMjY0IC0yNjRxOCAtOCA4IC0xOHQtOCAtMThsLTI2NCAtMjY0cS04IC04IC0xMyAtNS41dC01IDEyLjV2NTUwcTAgMTAgNSAxMi41dDEzIC01LjV6TTkxOCA2MThsMjY0IDI2NHE4IDggMTMgNS41dDUgLTEyLjV2LTU1MHEwIC0xMCAtNSAtMTIuNXQtMTMgNS41IGwtMjY0IDI2NHEtOCA4IC04IDE4dDggMTh6TTgxOCA0ODJsMzY0IC0zNjRxOCAtOCA1LjUgLTEzdC0xMi41IC01aC0xMTUwcS0xMCAwIC0xMi41IDV0NS41IDEzbDM2NCAzNjRxOCA4IDE4IDh0MTggLThsMTY0IC0xNjRxOCAtOCAxOCAtOHQxOCA4bDE2NCAxNjRxOCA4IDE4IDh0MTggLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjcwZjsiIGQ9Ik0xMDExIDEyMTBxMTkgMCAzMyAtMTNsMTUzIC0xNTNxMTMgLTE0IDEzIC0zM3QtMTMgLTMzbC05OSAtOTJsLTIxNCAyMTRsOTUgOTZxMTMgMTQgMzIgMTR6TTEwMTMgODAwbC02MTUgLTYxNGwtMjE0IDIxNGw2MTQgNjE0ek0zMTcgOTZsLTMzMyAtMTEybDExMCAzMzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwMTsiIGQ9Ik03MDAgNjUwdi01NTBoMjUwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtODAwdjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgyNTB2NTUwbC01MDAgNTUwaDEyMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwMjsiIGQ9Ik0zNjggMTAxN2w2NDUgMTYzcTM5IDE1IDYzIDB0MjQgLTQ5di04MzFxMCAtNTUgLTQxLjUgLTk1LjV0LTExMS41IC02My41cS03OSAtMjUgLTE0NyAtNC41dC04NiA3NXQyNS41IDExMS41dDEyMi41IDgycTcyIDI0IDEzOCA4djUyMWwtNjAwIC0xNTV2LTYwNnEwIC00MiAtNDQgLTkwdC0xMDkgLTY5cS03OSAtMjYgLTE0NyAtNS41dC04NiA3NS41dDI1LjUgMTExLjV0MTIyLjUgODIuNXE3MiAyNCAxMzggN3Y2MzlxMCAzOCAxNC41IDU5IHQ1My41IDM0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDM7IiBkPSJNNTAwIDExOTFxMTAwIDAgMTkxIC0zOXQxNTYuNSAtMTA0LjV0MTA0LjUgLTE1Ni41dDM5IC0xOTFsLTEgLTJsMSAtNXEwIC0xNDEgLTc4IC0yNjJsMjc1IC0yNzRxMjMgLTI2IDIyLjUgLTQ0LjV0LTIyLjUgLTQyLjVsLTU5IC01OHEtMjYgLTIwIC00Ni41IC0yMHQtMzkuNSAyMGwtMjc1IDI3NHEtMTE5IC03NyAtMjYxIC03N2wtNSAxbC0yIC0xcS0xMDAgMCAtMTkxIDM5dC0xNTYuNSAxMDQuNXQtMTA0LjUgMTU2LjV0LTM5IDE5MSB0MzkgMTkxdDEwNC41IDE1Ni41dDE1Ni41IDEwNC41dDE5MSAzOXpNNTAwIDEwMjJxLTg4IDAgLTE2MiAtNDN0LTExNyAtMTE3dC00MyAtMTYydDQzIC0xNjJ0MTE3IC0xMTd0MTYyIC00M3QxNjIgNDN0MTE3IDExN3Q0MyAxNjJ0LTQzIDE2MnQtMTE3IDExN3QtMTYyIDQzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDU7IiBkPSJNNjQ5IDk0OXE0OCA2OCAxMDkuNSAxMDR0MTIxLjUgMzguNXQxMTguNSAtMjB0MTAyLjUgLTY0dDcxIC0xMDAuNXQyNyAtMTIzcTAgLTU3IC0zMy41IC0xMTcuNXQtOTQgLTEyNC41dC0xMjYuNSAtMTI3LjV0LTE1MCAtMTUyLjV0LTE0NiAtMTc0cS02MiA4NSAtMTQ1LjUgMTc0dC0xNTAgMTUyLjV0LTEyNi41IDEyNy41dC05My41IDEyNC41dC0zMy41IDExNy41cTAgNjQgMjggMTIzdDczIDEwMC41dDEwNCA2NHQxMTkgMjAgdDEyMC41IC0zOC41dDEwNC41IC0xMDR6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwNjsiIGQ9Ik00MDcgODAwbDEzMSAzNTNxNyAxOSAxNy41IDE5dDE3LjUgLTE5bDEyOSAtMzUzaDQyMXEyMSAwIDI0IC04LjV0LTE0IC0yMC41bC0zNDIgLTI0OWwxMzAgLTQwMXE3IC0yMCAtMC41IC0yNS41dC0yNC41IDYuNWwtMzQzIDI0NmwtMzQyIC0yNDdxLTE3IC0xMiAtMjQuNSAtNi41dC0wLjUgMjUuNWwxMzAgNDAwbC0zNDcgMjUxcS0xNyAxMiAtMTQgMjAuNXQyMyA4LjVoNDI5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDc7IiBkPSJNNDA3IDgwMGwxMzEgMzUzcTcgMTkgMTcuNSAxOXQxNy41IC0xOWwxMjkgLTM1M2g0MjFxMjEgMCAyNCAtOC41dC0xNCAtMjAuNWwtMzQyIC0yNDlsMTMwIC00MDFxNyAtMjAgLTAuNSAtMjUuNXQtMjQuNSA2LjVsLTM0MyAyNDZsLTM0MiAtMjQ3cS0xNyAtMTIgLTI0LjUgLTYuNXQtMC41IDI1LjVsMTMwIDQwMGwtMzQ3IDI1MXEtMTcgMTIgLTE0IDIwLjV0MjMgOC41aDQyOXpNNDc3IDcwMGgtMjQwbDE5NyAtMTQybC03NCAtMjI2IGwxOTMgMTM5bDE5NSAtMTQwbC03NCAyMjlsMTkyIDE0MGgtMjM0bC03OCAyMTF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwODsiIGQ9Ik02MDAgMTIwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTI1MHEwIC00NiAtMzEgLTk4dC02OSAtNTJ2LTc1cTAgLTEwIDYgLTIxLjV0MTUgLTE3LjVsMzU4IC0yMzBxOSAtNSAxNSAtMTYuNXQ2IC0yMS41di05M3EwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTExNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY5M3EwIDEwIDYgMjEuNXQxNSAxNi41bDM1OCAyMzBxOSA2IDE1IDE3LjV0NiAyMS41djc1cS0zOCAwIC02OSA1MiB0LTMxIDk4djI1MHEwIDEyNCA4OCAyMTJ0MjEyIDg4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDk7IiBkPSJNMjUgMTEwMGgxMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTA1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTExNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxMDUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTEwMCAxMDAwdi0xMDBoMTAwdjEwMGgtMTAwek04NzUgMTAwMGgtNTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMzUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoNTUwIHExMCAwIDE3LjUgNy41dDcuNSAxNy41djM1MHEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6TTEwMDAgMTAwMHYtMTAwaDEwMHYxMDBoLTEwMHpNMTAwIDgwMHYtMTAwaDEwMHYxMDBoLTEwMHpNMTAwMCA4MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMDAgNjAwdi0xMDBoMTAwdjEwMGgtMTAwek04NzUgNTAwaC01NTBxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di0zNTBxMCAtMTAgNy41IC0xNy41IHQxNy41IC03LjVoNTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2MzUwcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXpNMTAwIDQwMHYtMTAwaDEwMHYxMDBoLTEwMHpNMTAwMCA0MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMCAyMDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTA7IiBkPSJNNTAgMTEwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek02NTAgMTEwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDAgcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgNTAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTY1MCA1MDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxMTsiIGQ9Ik01MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04NTAgMTEwMGgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA3MDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCA3MDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNODUwIDcwMGgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMzAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAzMDBoMjAwIHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTg1MCAzMDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41IHQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxMjsiIGQ9Ik01MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAxMTAwaDcwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC03MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA3MDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNDUwIDcwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNzAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMzAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAzMDBoNzAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDAgcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC03MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxMzsiIGQ9Ik00NjUgNDc3bDU3MSA1NzFxOCA4IDE4IDh0MTcgLThsMTc3IC0xNzdxOCAtNyA4IC0xN3QtOCAtMThsLTc4MyAtNzg0cS03IC04IC0xNy41IC04dC0xNy41IDhsLTM4NCAzODRxLTggOCAtOCAxOHQ4IDE3bDE3NyAxNzdxNyA4IDE3IDh0MTggLThsMTcxIC0xNzFxNyAtNyAxOCAtN3QxOCA3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTQ7IiBkPSJNOTA0IDEwODNsMTc4IC0xNzlxOCAtOCA4IC0xOC41dC04IC0xNy41bC0yNjcgLTI2OGwyNjcgLTI2OHE4IC03IDggLTE3LjV0LTggLTE4LjVsLTE3OCAtMTc4cS04IC04IC0xOC41IC04dC0xNy41IDhsLTI2OCAyNjdsLTI2OCAtMjY3cS03IC04IC0xNy41IC04dC0xOC41IDhsLTE3OCAxNzhxLTggOCAtOCAxOC41dDggMTcuNWwyNjcgMjY4bC0yNjcgMjY4cS04IDcgLTggMTcuNXQ4IDE4LjVsMTc4IDE3OHE4IDggMTguNSA4dDE3LjUgLTggbDI2OCAtMjY3bDI2OCAyNjhxNyA3IDE3LjUgN3QxOC41IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTU7IiBkPSJNNTA3IDExNzdxOTggMCAxODcuNSAtMzguNXQxNTQuNSAtMTAzLjV0MTAzLjUgLTE1NC41dDM4LjUgLTE4Ny41cTAgLTE0MSAtNzggLTI2MmwzMDAgLTI5OXE4IC04IDggLTE4LjV0LTggLTE4LjVsLTEwOSAtMTA4cS03IC04IC0xNy41IC04dC0xOC41IDhsLTMwMCAyOTlxLTExOSAtNzcgLTI2MSAtNzdxLTk4IDAgLTE4OCAzOC41dC0xNTQuNSAxMDN0LTEwMyAxNTQuNXQtMzguNSAxODh0MzguNSAxODcuNXQxMDMgMTU0LjUgdDE1NC41IDEwMy41dDE4OCAzOC41ek01MDYuNSAxMDIzcS04OS41IDAgLTE2NS41IC00NHQtMTIwIC0xMjAuNXQtNDQgLTE2NnQ0NCAtMTY1LjV0MTIwIC0xMjB0MTY1LjUgLTQ0dDE2NiA0NHQxMjAuNSAxMjB0NDQgMTY1LjV0LTQ0IDE2NnQtMTIwLjUgMTIwLjV0LTE2NiA0NHpNNDI1IDkwMGgxNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di03NWg3NXExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41IHQtMTcuNSAtNy41aC03NXYtNzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY3NWgtNzVxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWg3NXY3NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTY7IiBkPSJNNTA3IDExNzdxOTggMCAxODcuNSAtMzguNXQxNTQuNSAtMTAzLjV0MTAzLjUgLTE1NC41dDM4LjUgLTE4Ny41cTAgLTE0MSAtNzggLTI2MmwzMDAgLTI5OXE4IC04IDggLTE4LjV0LTggLTE4LjVsLTEwOSAtMTA4cS03IC04IC0xNy41IC04dC0xOC41IDhsLTMwMCAyOTlxLTExOSAtNzcgLTI2MSAtNzdxLTk4IDAgLTE4OCAzOC41dC0xNTQuNSAxMDN0LTEwMyAxNTQuNXQtMzguNSAxODh0MzguNSAxODcuNXQxMDMgMTU0LjUgdDE1NC41IDEwMy41dDE4OCAzOC41ek01MDYuNSAxMDIzcS04OS41IDAgLTE2NS41IC00NHQtMTIwIC0xMjAuNXQtNDQgLTE2NnQ0NCAtMTY1LjV0MTIwIC0xMjB0MTY1LjUgLTQ0dDE2NiA0NHQxMjAuNSAxMjB0NDQgMTY1LjV0LTQ0IDE2NnQtMTIwLjUgMTIwLjV0LTE2NiA0NHpNMzI1IDgwMGgzNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0zNTBxLTEwIDAgLTE3LjUgNy41IHQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxNzsiIGQ9Ik01NTAgMTIwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04MDAgOTc1djE2NnExNjcgLTYyIDI3MiAtMjA5LjV0MTA1IC0zMzEuNXEwIC0xMTcgLTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNSB0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHEwIDE4NCAxMDUgMzMxLjV0MjcyIDIwOS41di0xNjZxLTEwMyAtNTUgLTE2NSAtMTU1dC02MiAtMjIwcTAgLTExNiA1NyAtMjE0LjV0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXEwIDEyMCAtNjIgMjIwdC0xNjUgMTU1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTg7IiBkPSJNMTAyNSAxMjAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTExNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxMTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTcyNSA4MDBoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNzUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NzUwIHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek00MjUgNTAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTQ1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djQ1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek0xMjUgMzAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTI1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41IHYyNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDE5OyIgZD0iTTYwMCAxMTc0cTMzIDAgNzQgLTVsMzggLTE1Mmw1IC0xcTQ5IC0xNCA5NCAtMzlsNSAtMmwxMzQgODBxNjEgLTQ4IDEwNCAtMTA1bC04MCAtMTM0bDMgLTVxMjUgLTQ0IDM5IC05M2wxIC02bDE1MiAtMzhxNSAtNDMgNSAtNzNxMCAtMzQgLTUgLTc0bC0xNTIgLTM4bC0xIC02cS0xNSAtNDkgLTM5IC05M2wtMyAtNWw4MCAtMTM0cS00OCAtNjEgLTEwNCAtMTA1bC0xMzQgODFsLTUgLTNxLTQ0IC0yNSAtOTQgLTM5bC01IC0ybC0zOCAtMTUxIHEtNDMgLTUgLTc0IC01cS0zMyAwIC03NCA1bC0zOCAxNTFsLTUgMnEtNDkgMTQgLTk0IDM5bC01IDNsLTEzNCAtODFxLTYwIDQ4IC0xMDQgMTA1bDgwIDEzNGwtMyA1cS0yNSA0NSAtMzggOTNsLTIgNmwtMTUxIDM4cS02IDQyIC02IDc0cTAgMzMgNiA3M2wxNTEgMzhsMiA2cTEzIDQ4IDM4IDkzbDMgNWwtODAgMTM0cTQ3IDYxIDEwNSAxMDVsMTMzIC04MGw1IDJxNDUgMjUgOTQgMzlsNSAxbDM4IDE1MnE0MyA1IDc0IDV6TTYwMCA4MTUgcS04OSAwIC0xNTIgLTYzdC02MyAtMTUxLjV0NjMgLTE1MS41dDE1MiAtNjN0MTUyIDYzdDYzIDE1MS41dC02MyAxNTEuNXQtMTUyIDYzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMjA7IiBkPSJNNTAwIDEzMDBoMzAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41di0xMDBoMjc1cTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNzVoLTExMDB2NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgyNzV2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNNTAwIDEyMDB2LTEwMGgzMDB2MTAwaC0zMDB6TTExMDAgOTAwdi04MDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTcwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjUgdjgwMGg5MDB6TTMwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6TTUwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6TTcwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6TTkwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAyMTsiIGQ9Ik0xOCA2MThsNjIwIDYwOHE4IDcgMTguNSA3dDE3LjUgLTdsNjA4IC02MDhxOCAtOCA1LjUgLTEzdC0xMi41IC01aC0xNzV2LTU3NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djM3NWgtMzAwdi0zNzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1NzVoLTE3NXEtMTAgMCAtMTIuNSA1dDUuNSAxM3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDIyOyIgZD0iTTYwMCAxMjAwdi00MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDMwMHYtNjUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djExMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDQ1MHpNMTAwMCA4MDBoLTI1MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMjM7IiBkPSJNNjAwIDExNzdxMTE3IDAgMjI0IC00NS41dDE4NC41IC0xMjN0MTIzIC0xODQuNXQ0NS41IC0yMjR0LTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNXQtMTg0LjUgMTIzdC0xMjMgMTg0LjV0LTQ1LjUgMjI0dDQ1LjUgMjI0dDEyMyAxODQuNXQxODQuNSAxMjN0MjI0IDQ1LjV6TTYwMCAxMDI3cS0xMTYgMCAtMjE0LjUgLTU3dC0xNTUuNSAtMTU1LjV0LTU3IC0yMTQuNXQ1NyAtMjE0LjUgdDE1NS41IC0xNTUuNXQyMTQuNSAtNTd0MjE0LjUgNTd0MTU1LjUgMTU1LjV0NTcgMjE0LjV0LTU3IDIxNC41dC0xNTUuNSAxNTUuNXQtMjE0LjUgNTd6TTUyNSA5MDBoNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0yNzVoMTc1cTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI0OyIgZD0iTTEzMDAgMGgtNTM4bC00MSA0MDBoLTI0MmwtNDEgLTQwMGgtNTM4bDQzMSAxMjAwaDIwOWwtMjEgLTMwMGgxNjJsLTIwIDMwMGgyMDh6TTUxNSA4MDBsLTI3IC0zMDBoMjI0bC0yNyAzMDBoLTE3MHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI1OyIgZD0iTTU1MCAxMjAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDUwaDE5MXEyMCAwIDI1LjUgLTExLjV0LTcuNSAtMjcuNWwtMzI3IC00MDBxLTEzIC0xNiAtMzIgLTE2dC0zMiAxNmwtMzI3IDQwMHEtMTMgMTYgLTcuNSAyNy41dDI1LjUgMTEuNWgxOTF2NDUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMTEyNSA0MDBoNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0zNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41IGgtMTA1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djM1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTc1aDkwMHYxNzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI2OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjV0NTcgLTIxNC41IHQxNTUuNSAtMTU1LjV0MjE0LjUgLTU3dDIxNC41IDU3dDE1NS41IDE1NS41dDU3IDIxNC41dC01NyAyMTQuNXQtMTU1LjUgMTU1LjV0LTIxNC41IDU3ek01MjUgOTAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTI3NWgxMzdxMjEgMCAyNiAtMTEuNXQtOCAtMjcuNWwtMjIzIC0yNzVxLTEzIC0xNiAtMzIgLTE2dC0zMiAxNmwtMjIzIDI3NXEtMTMgMTYgLTggMjcuNXQyNiAxMS41aDEzN3YyNzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAyNzsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNNjAwIDEwMjdxLTExNiAwIC0yMTQuNSAtNTd0LTE1NS41IC0xNTUuNXQtNTcgLTIxNC41dDU3IC0yMTQuNSB0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXQtNTcgMjE0LjV0LTE1NS41IDE1NS41dC0yMTQuNSA1N3pNNjMyIDkxNGwyMjMgLTI3NXExMyAtMTYgOCAtMjcuNXQtMjYgLTExLjVoLTEzN3YtMjc1cTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2Mjc1aC0xMzdxLTIxIDAgLTI2IDExLjV0OCAyNy41bDIyMyAyNzVxMTMgMTYgMzIgMTYgdDMyIC0xNnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI4OyIgZD0iTTIyNSAxMjAwaDc1MHExMCAwIDE5LjUgLTd0MTIuNSAtMTdsMTg2IC02NTJxNyAtMjQgNyAtNDl2LTQyNXEwIC0xMiAtNCAtMjd0LTkgLTE3cS0xMiAtNiAtMzcgLTZoLTExMDBxLTEyIDAgLTI3IDR0LTE3IDhxLTYgMTMgLTYgMzhsMSA0MjVxMCAyNSA3IDQ5bDE4NSA2NTJxMyAxMCAxMi41IDE3dDE5LjUgN3pNODc4IDEwMDBoLTU1NnEtMTAgMCAtMTkgLTd0LTExIC0xOGwtODcgLTQ1MHEtMiAtMTEgNCAtMTh0MTYgLTdoMTUwIHExMCAwIDE5LjUgLTd0MTEuNSAtMTdsMzggLTE1MnEyIC0xMCAxMS41IC0xN3QxOS41IC03aDI1MHExMCAwIDE5LjUgN3QxMS41IDE3bDM4IDE1MnEyIDEwIDExLjUgMTd0MTkuNSA3aDE1MHExMCAwIDE2IDd0NCAxOGwtODcgNDUwcS0yIDExIC0xMSAxOHQtMTkgN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI5OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjV0NTcgLTIxNC41IHQxNTUuNSAtMTU1LjV0MjE0LjUgLTU3dDIxNC41IDU3dDE1NS41IDE1NS41dDU3IDIxNC41dC01NyAyMTQuNXQtMTU1LjUgMTU1LjV0LTIxNC41IDU3ek01NDAgODIwbDI1MyAtMTkwcTE3IC0xMiAxNyAtMzB0LTE3IC0zMGwtMjUzIC0xOTBxLTE2IC0xMiAtMjggLTYuNXQtMTIgMjYuNXY0MDBxMCAyMSAxMiAyNi41dDI4IC02LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzMDsiIGQ9Ik05NDcgMTA2MGwxMzUgMTM1cTcgNyAxMi41IDV0NS41IC0xM3YtMzYycTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMzYycS0xMSAwIC0xMyA1LjV0NSAxMi41bDEzMyAxMzNxLTEwOSA3NiAtMjM4IDc2cS0xMTYgMCAtMjE0LjUgLTU3dC0xNTUuNSAtMTU1LjV0LTU3IC0yMTQuNXQ1NyAtMjE0LjV0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNWgxNTBxMCAtMTE3IC00NS41IC0yMjQgdC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXExOTIgMCAzNDcgLTExN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDMxOyIgZD0iTTk0NyAxMDYwbDEzNSAxMzVxNyA3IDEyLjUgNXQ1LjUgLTEzdi0zNjFxMCAtMTEgLTcuNSAtMTguNXQtMTguNSAtNy41aC0zNjFxLTExIDAgLTEzIDUuNXQ1IDEyLjVsMTM0IDEzNHEtMTEwIDc1IC0yMzkgNzVxLTExNiAwIC0yMTQuNSAtNTd0LTE1NS41IC0xNTUuNXQtNTcgLTIxNC41aC0xNTBxMCAxMTcgNDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXExOTIgMCAzNDcgLTExN3pNMTAyNyA2MDBoMTUwIHEwIC0xMTcgLTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41cS0xOTIgMCAtMzQ4IDExOGwtMTM0IC0xMzRxLTcgLTggLTEyLjUgLTUuNXQtNS41IDEyLjV2MzYwcTAgMTEgNy41IDE4LjV0MTguNSA3LjVoMzYwcTEwIDAgMTIuNSAtNS41dC01LjUgLTEyLjVsLTEzMyAtMTMzcTExMCAtNzYgMjQwIC03NnExMTYgMCAyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDMyOyIgZD0iTTEyNSAxMjAwaDEwNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTA1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djExNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNMTA3NSAxMDAwaC04NTBxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di04NTBxMCAtMTAgNy41IC0xNy41dDE3LjUgLTcuNWg4NTBxMTAgMCAxNy41IDcuNXQ3LjUgMTcuNXY4NTAgcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXpNMzI1IDkwMGg1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek01MjUgOTAwaDQ1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNDUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NTAgcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTMyNSA3MDBoNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di01MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNTI1IDcwMGg0NTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di01MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTQ1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djUwIHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek0zMjUgNTAwaDUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC01MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTUyNSA1MDBoNDUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC00NTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MCBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNMzI1IDMwMGg1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek01MjUgMzAwaDQ1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNDUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NTAgcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzMzsiIGQ9Ik05MDAgODAwdjIwMHEwIDgzIC01OC41IDE0MS41dC0xNDEuNSA1OC41aC0zMDBxLTgyIDAgLTE0MSAtNTl0LTU5IC0xNDF2LTIwMGgtMTAwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di02MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDkwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NjAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41aC0xMDB6TTQwMCA4MDB2MTUwcTAgMjEgMTUgMzUuNXQzNSAxNC41aDIwMCBxMjAgMCAzNSAtMTQuNXQxNSAtMzUuNXYtMTUwaC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzNDsiIGQ9Ik0xMjUgMTEwMGg1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTEwNzVoLTEwMHYxMDc1cTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTEwNzUgMTA1MnE0IDAgOSAtMnExNiAtNiAxNiAtMjN2LTQyMXEwIC02IC0zIC0xMnEtMzMgLTU5IC02Ni41IC05OXQtNjUuNSAtNTh0LTU2LjUgLTI0LjV0LTUyLjUgLTYuNXEtMjYgMCAtNTcuNSA2LjV0LTUyLjUgMTMuNXQtNjAgMjFxLTQxIDE1IC02MyAyMi41dC01Ny41IDE1dC02NS41IDcuNSBxLTg1IDAgLTE2MCAtNTdxLTcgLTUgLTE1IC01cS02IDAgLTExIDNxLTE0IDcgLTE0IDIydjQzOHEyMiA1NSA4MiA5OC41dDExOSA0Ni41cTIzIDIgNDMgMC41dDQzIC03dDMyLjUgLTguNXQzOCAtMTN0MzIuNSAtMTFxNDEgLTE0IDYzLjUgLTIxdDU3IC0xNHQ2My41IC03cTEwMyAwIDE4MyA4N3E3IDggMTggOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDM1OyIgZD0iTTYwMCAxMTc1cTExNiAwIDIyNyAtNDkuNXQxOTIuNSAtMTMxdDEzMSAtMTkyLjV0NDkuNSAtMjI3di0zMDBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC01MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djMwMHEwIDEyNyAtNzAuNSAyMzEuNXQtMTg0LjUgMTYxLjV0LTI0NSA1N3QtMjQ1IC01N3QtMTg0LjUgLTE2MS41dC03MC41IC0yMzEuNXYtMzAwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNTAgcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MzAwcTAgMTE2IDQ5LjUgMjI3dDEzMSAxOTIuNXQxOTIuNSAxMzF0MjI3IDQ5LjV6TTIyMCA1MDBoMTYwcTggMCAxNCAtNnQ2IC0xNHYtNDYwcTAgLTggLTYgLTE0dC0xNCAtNmgtMTYwcS04IDAgLTE0IDZ0LTYgMTR2NDYwcTAgOCA2IDE0dDE0IDZ6TTgyMCA1MDBoMTYwcTggMCAxNCAtNnQ2IC0xNHYtNDYwcTAgLTggLTYgLTE0dC0xNCAtNmgtMTYwcS04IDAgLTE0IDZ0LTYgMTR2NDYwIHEwIDggNiAxNHQxNCA2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMzY7IiBkPSJNMzIxIDgxNGwyNTggMTcycTkgNiAxNSAyLjV0NiAtMTMuNXYtNzUwcTAgLTEwIC02IC0xMy41dC0xNSAyLjVsLTI1OCAxNzJxLTIxIDE0IC00NiAxNGgtMjUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MzUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoMjUwcTI1IDAgNDYgMTR6TTkwMCA2NjhsMTIwIDEyMHE3IDcgMTcgN3QxNyAtN2wzNCAtMzRxNyAtNyA3IC0xN3QtNyAtMTdsLTEyMCAtMTIwbDEyMCAtMTIwcTcgLTcgNyAtMTcgdC03IC0xN2wtMzQgLTM0cS03IC03IC0xNyAtN3QtMTcgN2wtMTIwIDExOWwtMTIwIC0xMTlxLTcgLTcgLTE3IC03dC0xNyA3bC0zNCAzNHEtNyA3IC03IDE3dDcgMTdsMTE5IDEyMGwtMTE5IDEyMHEtNyA3IC03IDE3dDcgMTdsMzQgMzRxNyA4IDE3IDh0MTcgLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzNzsiIGQ9Ik0zMjEgODE0bDI1OCAxNzJxOSA2IDE1IDIuNXQ2IC0xMy41di03NTBxMCAtMTAgLTYgLTEzLjV0LTE1IDIuNWwtMjU4IDE3MnEtMjEgMTQgLTQ2IDE0aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgyNTBxMjUgMCA0NiAxNHpNNzY2IDkwMGg0cTEwIC0xIDE2IC0xMHE5NiAtMTI5IDk2IC0yOTBxMCAtMTU0IC05MCAtMjgxcS02IC05IC0xNyAtMTBsLTMgLTFxLTkgMCAtMTYgNiBsLTI5IDIzcS03IDcgLTguNSAxNi41dDQuNSAxNy41cTcyIDEwMyA3MiAyMjlxMCAxMzIgLTc4IDIzOHEtNiA4IC00LjUgMTh0OS41IDE3bDI5IDIycTcgNSAxNSA1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMzg7IiBkPSJNOTY3IDEwMDRoM3ExMSAtMSAxNyAtMTBxMTM1IC0xNzkgMTM1IC0zOTZxMCAtMTA1IC0zNCAtMjA2LjV0LTk4IC0xODUuNXEtNyAtOSAtMTcgLTEwaC0zcS05IDAgLTE2IDZsLTQyIDM0cS04IDYgLTkgMTZ0NSAxOHExMTEgMTUwIDExMSAzMjhxMCA5MCAtMjkuNSAxNzZ0LTg0LjUgMTU3cS02IDkgLTUgMTl0MTAgMTZsNDIgMzNxNyA1IDE1IDV6TTMyMSA4MTRsMjU4IDE3MnE5IDYgMTUgMi41dDYgLTEzLjV2LTc1MHEwIC0xMCAtNiAtMTMuNSB0LTE1IDIuNWwtMjU4IDE3MnEtMjEgMTQgLTQ2IDE0aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgyNTBxMjUgMCA0NiAxNHpNNzY2IDkwMGg0cTEwIC0xIDE2IC0xMHE5NiAtMTI5IDk2IC0yOTBxMCAtMTU0IC05MCAtMjgxcS02IC05IC0xNyAtMTBsLTMgLTFxLTkgMCAtMTYgNmwtMjkgMjNxLTcgNyAtOC41IDE2LjV0NC41IDE3LjVxNzIgMTAzIDcyIDIyOXEwIDEzMiAtNzggMjM4IHEtNiA4IC00LjUgMTguNXQ5LjUgMTYuNWwyOSAyMnE3IDUgMTUgNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDM5OyIgZD0iTTUwMCA5MDBoMTAwdi0xMDBoLTEwMHYtMTAwaC00MDB2LTEwMGgtMTAwdjYwMGg1MDB2LTMwMHpNMTIwMCA3MDBoLTIwMHYtMTAwaDIwMHYtMjAwaC0zMDB2MzAwaC0yMDB2MzAwaC0xMDB2MjAwaDYwMHYtNTAwek0xMDAgMTEwMHYtMzAwaDMwMHYzMDBoLTMwMHpNODAwIDExMDB2LTMwMGgzMDB2MzAwaC0zMDB6TTMwMCA5MDBoLTEwMHYxMDBoMTAwdi0xMDB6TTEwMDAgOTAwaC0xMDB2MTAwaDEwMHYtMTAwek0zMDAgNTAwaDIwMHYtNTAwIGgtNTAwdjUwMGgyMDB2MTAwaDEwMHYtMTAwek04MDAgMzAwaDIwMHYtMTAwaC0xMDB2LTEwMGgtMjAwdjEwMGgtMTAwdjEwMGgxMDB2MjAwaC0yMDB2MTAwaDMwMHYtMzAwek0xMDAgNDAwdi0zMDBoMzAwdjMwMGgtMzAwek0zMDAgMjAwaC0xMDB2MTAwaDEwMHYtMTAwek0xMjAwIDIwMGgtMTAwdjEwMGgxMDB2LTEwMHpNNzAwIDBoLTEwMHYxMDBoMTAwdi0xMDB6TTEyMDAgMGgtMzAwdjEwMGgzMDB2LTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQwOyIgZD0iTTEwMCAyMDBoLTEwMHYxMDAwaDEwMHYtMTAwMHpNMzAwIDIwMGgtMTAwdjEwMDBoMTAwdi0xMDAwek03MDAgMjAwaC0yMDB2MTAwMGgyMDB2LTEwMDB6TTkwMCAyMDBoLTEwMHYxMDAwaDEwMHYtMTAwMHpNMTIwMCAyMDBoLTIwMHYxMDAwaDIwMHYtMTAwMHpNNDAwIDBoLTMwMHYxMDBoMzAwdi0xMDB6TTYwMCAwaC0xMDB2OTFoMTAwdi05MXpNODAwIDBoLTEwMHY5MWgxMDB2LTkxek0xMTAwIDBoLTIwMHY5MWgyMDB2LTkxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNDE7IiBkPSJNNTAwIDEyMDBsNjgyIC02ODJxOCAtOCA4IC0xOHQtOCAtMThsLTQ2NCAtNDY0cS04IC04IC0xOCAtOHQtMTggOGwtNjgyIDY4MmwxIDQ3NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDQ3NHpNMzE5LjUgMTAyNC41cS0yOS41IDI5LjUgLTcxIDI5LjV0LTcxIC0yOS41dC0yOS41IC03MS41dDI5LjUgLTcxLjV0NzEgLTI5LjV0NzEgMjkuNXQyOS41IDcxLjV0LTI5LjUgNzEuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQyOyIgZD0iTTUwMCAxMjAwbDY4MiAtNjgycTggLTggOCAtMTh0LTggLTE4bC00NjQgLTQ2NHEtOCAtOCAtMTggLTh0LTE4IDhsLTY4MiA2ODJsMSA0NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWg0NzR6TTgwMCAxMjAwbDY4MiAtNjgycTggLTggOCAtMTh0LTggLTE4bC00NjQgLTQ2NHEtOCAtOCAtMTggLTh0LTE4IDhsLTU2IDU2bDQyNCA0MjZsLTcwMCA3MDBoMTUwek0zMTkuNSAxMDI0LjVxLTI5LjUgMjkuNSAtNzEgMjkuNXQtNzEgLTI5LjUgdC0yOS41IC03MS41dDI5LjUgLTcxLjV0NzEgLTI5LjV0NzEgMjkuNXQyOS41IDcxLjV0LTI5LjUgNzEuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQzOyIgZD0iTTMwMCAxMjAwaDgyNXE3NSAwIDc1IC03NXYtOTAwcTAgLTI1IC0xOCAtNDNsLTY0IC02NHEtOCAtOCAtMTMgLTUuNXQtNSAxMi41djk1MHEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjVoLTcwMHEtMjUgMCAtNDMgLTE4bC02NCAtNjRxLTggLTggLTUuNSAtMTN0MTIuNSAtNWg3MDBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di05NTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC04NTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY5NzUgcTAgMjUgMTggNDNsMTM5IDEzOXExOCAxOCA0MyAxOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQ0OyIgZD0iTTI1MCAxMjAwaDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTE1MGwtNDUwIDQ0NGwtNDUwIC00NDV2MTE1MXEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0NTsiIGQ9Ik04MjIgMTIwMGgtNDQ0cS0xMSAwIC0xOSAtNy41dC05IC0xNy41bC03OCAtMzAxcS03IC0yNCA3IC00NWw1NyAtMTA4cTYgLTkgMTcuNSAtMTV0MjEuNSAtNmg0NTBxMTAgMCAyMS41IDZ0MTcuNSAxNWw2MiAxMDhxMTQgMjEgNyA0NWwtODMgMzAxcS0xIDEwIC05IDE3LjV0LTE5IDcuNXpNMTE3NSA4MDBoLTE1MHEtMTAgMCAtMjEgLTYuNXQtMTUgLTE1LjVsLTc4IC0xNTZxLTQgLTkgLTE1IC0xNS41dC0yMSAtNi41aC01NTAgcS0xMCAwIC0yMSA2LjV0LTE1IDE1LjVsLTc4IDE1NnEtNCA5IC0xNSAxNS41dC0yMSA2LjVoLTE1MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTY1MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDE1MHExMCAwIDE3LjUgNy41dDcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDc1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDE1MHExMCAwIDE3LjUgNy41IHQ3LjUgMTcuNXY2NTBxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41ek04NTAgMjAwaC01MDBxLTEwIDAgLTE5LjUgLTd0LTExLjUgLTE3bC0zOCAtMTUycS0yIC0xMCAzLjUgLTE3dDE1LjUgLTdoNjAwcTEwIDAgMTUuNSA3dDMuNSAxN2wtMzggMTUycS0yIDEwIC0xMS41IDE3dC0xOS41IDd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0NjsiIGQ9Ik01MDAgMTEwMGgyMDBxNTYgMCAxMDIuNSAtMjAuNXQ3Mi41IC01MHQ0NCAtNTl0MjUgLTUwLjVsNiAtMjBoMTUwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41di02MDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTEwMDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djYwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMTUwcTIgOCA2LjUgMjEuNXQyNCA0OHQ0NSA2MXQ3MiA0OHQxMDIuNSAyMS41ek05MDAgODAwdi0xMDAgaDEwMHYxMDBoLTEwMHpNNjAwIDczMHEtOTUgMCAtMTYyLjUgLTY3LjV0LTY3LjUgLTE2Mi41dDY3LjUgLTE2Mi41dDE2Mi41IC02Ny41dDE2Mi41IDY3LjV0NjcuNSAxNjIuNXQtNjcuNSAxNjIuNXQtMTYyLjUgNjcuNXpNNjAwIDYwM3E0MyAwIDczIC0zMHQzMCAtNzN0LTMwIC03M3QtNzMgLTMwdC03MyAzMHQtMzAgNzN0MzAgNzN0NzMgMzB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0NzsiIGQ9Ik02ODEgMTE5OWwzODUgLTk5OHEyMCAtNTAgNjAgLTkycTE4IC0xOSAzNi41IC0yOS41dDI3LjUgLTExLjVsMTAgLTJ2LTY2aC00MTd2NjZxNTMgMCA3NSA0My41dDUgODguNWwtODIgMjIyaC0zOTFxLTU4IC0xNDUgLTkyIC0yMzRxLTExIC0zNCAtNi41IC01N3QyNS41IC0zN3Q0NiAtMjB0NTUgLTZ2LTY2aC0zNjV2NjZxNTYgMjQgODQgNTJxMTIgMTIgMjUgMzAuNXQyMCAzMS41bDcgMTNsMzk5IDEwMDZoOTN6TTQxNiA1MjFoMzQwIGwtMTYyIDQ1N3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQ4OyIgZD0iTTc1MyA2NDFxNSAtMSAxNC41IC00LjV0MzYgLTE1LjV0NTAuNSAtMjYuNXQ1My41IC00MHQ1MC41IC01NC41dDM1LjUgLTcwdDE0LjUgLTg3cTAgLTY3IC0yNy41IC0xMjUuNXQtNzEuNSAtOTcuNXQtOTguNSAtNjYuNXQtMTA4LjUgLTQwLjV0LTEwMiAtMTNoLTUwMHY4OXE0MSA3IDcwLjUgMzIuNXQyOS41IDY1LjV2ODI3cTAgMjQgLTAuNSAzNHQtMy41IDI0dC04LjUgMTkuNXQtMTcgMTMuNXQtMjggMTIuNXQtNDIuNSAxMS41djcxIGw0NzEgLTFxNTcgMCAxMTUuNSAtMjAuNXQxMDggLTU3dDgwLjUgLTk0dDMxIC0xMjQuNXEwIC01MSAtMTUuNSAtOTYuNXQtMzggLTc0LjV0LTQ1IC01MC41dC0zOC41IC0zMC41ek00MDAgNzAwaDEzOXE3OCAwIDEzMC41IDQ4LjV0NTIuNSAxMjIuNXEwIDQxIC04LjUgNzAuNXQtMjkuNSA1NS41dC02Mi41IDM5LjV0LTEwMy41IDEzLjVoLTExOHYtMzUwek00MDAgMjAwaDIxNnE4MCAwIDEyMSA1MC41dDQxIDEzMC41cTAgOTAgLTYyLjUgMTU0LjUgdC0xNTYuNSA2NC41aC0xNTl2LTQwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQ5OyIgZD0iTTg3NyAxMjAwbDIgLTU3cS04MyAtMTkgLTExNiAtNDUuNXQtNDAgLTY2LjVsLTEzMiAtODM5cS05IC00OSAxMyAtNjl0OTYgLTI2di05N2gtNTAwdjk3cTE4NiAxNiAyMDAgOThsMTczIDgzMnEzIDE3IDMgMzB0LTEuNSAyMi41dC05IDE3LjV0LTEzLjUgMTIuNXQtMjEuNSAxMHQtMjYgOC41dC0zMy41IDEwcS0xMyAzIC0xOSA1djU3aDQyNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDUwOyIgZD0iTTEzMDAgOTAwaC01MHEwIDIxIC00IDM3dC05LjUgMjYuNXQtMTggMTcuNXQtMjIgMTF0LTI4LjUgNS41dC0zMSAydC0zNyAwLjVoLTIwMHYtODUwcTAgLTIyIDI1IC0zNC41dDUwIC0xMy41bDI1IC0ydi0xMDBoLTQwMHYxMDBxNCAwIDExIDAuNXQyNCAzdDMwIDd0MjQgMTV0MTEgMjQuNXY4NTBoLTIwMHEtMjUgMCAtMzcgLTAuNXQtMzEgLTJ0LTI4LjUgLTUuNXQtMjIgLTExdC0xOCAtMTcuNXQtOS41IC0yNi41dC00IC0zN2gtNTB2MzAwIGgxMDAwdi0zMDB6TTE3NSAxMDAwaC03NXYtODAwaDc1bC0xMjUgLTE2N2wtMTI1IDE2N2g3NXY4MDBoLTc1bDEyNSAxNjd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1MTsiIGQ9Ik0xMTAwIDkwMGgtNTBxMCAyMSAtNCAzN3QtOS41IDI2LjV0LTE4IDE3LjV0LTIyIDExdC0yOC41IDUuNXQtMzEgMnQtMzcgMC41aC0yMDB2LTY1MHEwIC0yMiAyNSAtMzQuNXQ1MCAtMTMuNWwyNSAtMnYtMTAwaC00MDB2MTAwcTQgMCAxMSAwLjV0MjQgM3QzMCA3dDI0IDE1dDExIDI0LjV2NjUwaC0yMDBxLTI1IDAgLTM3IC0wLjV0LTMxIC0ydC0yOC41IC01LjV0LTIyIC0xMXQtMTggLTE3LjV0LTkuNSAtMjYuNXQtNCAtMzdoLTUwdjMwMCBoMTAwMHYtMzAwek0xMTY3IDUwbC0xNjcgLTEyNXY3NWgtODAwdi03NWwtMTY3IDEyNWwxNjcgMTI1di03NWg4MDB2NzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1MjsiIGQ9Ik01MCAxMTAwaDYwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC02MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDgwMGgxMDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA1MDBoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTgwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMjAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTEwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1MzsiIGQ9Ik0yNTAgMTEwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA4MDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAgcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMjUwIDUwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCAyMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDU0OyIgZD0iTTUwMCA5NTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg2MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNMTAwIDY1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek0zMDAgMzUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTgwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTAgNTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDAgcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDU1OyIgZD0iTTUwIDExMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA4MDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAgcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgNTAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMjAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTEwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1NjsiIGQ9Ik01MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTM1MCAxMTAwaDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMzUwIDgwMGg4MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtODAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgNTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTM1MCA1MDBoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDAgcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDIwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0zNTAgMjAwaDgwMCBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtODAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNTc7IiBkPSJNNDAwIDBoLTEwMHYxMTAwaDEwMHYtMTEwMHpNNTUwIDExMDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTUwIDgwMGg1MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMjY3IDU1MGwtMTY3IC0xMjV2NzVoLTIwMHYxMDBoMjAwdjc1ek01NTAgNTAwaDMwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0zMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTU1MCAyMDBoNjAwIHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC02MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1ODsiIGQ9Ik01MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTkwMCAwaC0xMDB2MTEwMGgxMDB2LTExMDB6TTUwIDgwMGg1MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMTEwMCA2MDBoMjAwdi0xMDBoLTIwMHYtNzVsLTE2NyAxMjVsMTY3IDEyNXYtNzV6TTUwIDUwMGgzMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCAyMDBoNjAwIHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC02MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1OTsiIGQ9Ik03NSAxMDAwaDc1MHEzMSAwIDUzIC0yMnQyMiAtNTN2LTY1MHEwIC0zMSAtMjIgLTUzdC01MyAtMjJoLTc1MHEtMzEgMCAtNTMgMjJ0LTIyIDUzdjY1MHEwIDMxIDIyIDUzdDUzIDIyek0xMjAwIDMwMGwtMzAwIDMwMGwzMDAgMzAwdi02MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA2MDsiIGQ9Ik00NCAxMTAwaDExMTJxMTggMCAzMSAtMTN0MTMgLTMxdi0xMDEycTAgLTE4IC0xMyAtMzF0LTMxIC0xM2gtMTExMnEtMTggMCAtMzEgMTN0LTEzIDMxdjEwMTJxMCAxOCAxMyAzMXQzMSAxM3pNMTAwIDEwMDB2LTczN2wyNDcgMTgybDI5OCAtMTMxbC03NCAxNTZsMjkzIDMxOGwyMzYgLTI4OHY1MDBoLTEwMDB6TTM0MiA4ODRxNTYgMCA5NSAtMzl0MzkgLTk0LjV0LTM5IC05NXQtOTUgLTM5LjV0LTk1IDM5LjV0LTM5IDk1dDM5IDk0LjUgdDk1IDM5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjI7IiBkPSJNNjQ4IDExNjlxMTE3IDAgMjE2IC02MHQxNTYuNSAtMTYxdDU3LjUgLTIxOHEwIC0xMTUgLTcwIC0yNThxLTY5IC0xMDkgLTE1OCAtMjI1LjV0LTE0MyAtMTc5LjVsLTU0IC02MnEtOSA4IC0yNS41IDI0LjV0LTYzLjUgNjcuNXQtOTEgMTAzdC05OC41IDEyOHQtOTUuNSAxNDhxLTYwIDEzMiAtNjAgMjQ5cTAgODggMzQgMTY5LjV0OTEuNSAxNDJ0MTM3IDk2LjV0MTY2LjUgMzZ6TTY1Mi41IDk3NHEtOTEuNSAwIC0xNTYuNSAtNjUgdC02NSAtMTU3dDY1IC0xNTYuNXQxNTYuNSAtNjQuNXQxNTYuNSA2NC41dDY1IDE1Ni41dC02NSAxNTd0LTE1Ni41IDY1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjM7IiBkPSJNNjAwIDExNzdxMTE3IDAgMjI0IC00NS41dDE4NC41IC0xMjN0MTIzIC0xODQuNXQ0NS41IC0yMjR0LTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNXQtMTg0LjUgMTIzdC0xMjMgMTg0LjV0LTQ1LjUgMjI0dDQ1LjUgMjI0dDEyMyAxODQuNXQxODQuNSAxMjN0MjI0IDQ1LjV6TTYwMCAxNzN2ODU0cS0xMTYgMCAtMjE0LjUgLTU3dC0xNTUuNSAtMTU1LjV0LTU3IC0yMTQuNXQ1NyAtMjE0LjUgdDE1NS41IC0xNTUuNXQyMTQuNSAtNTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA2NDsiIGQ9Ik01NTQgMTI5NXEyMSAtNzIgNTcuNSAtMTQzLjV0NzYgLTEzMHQ4MyAtMTE4dDgyLjUgLTExN3Q3MCAtMTE2dDQ5LjUgLTEyNnQxOC41IC0xMzYuNXEwIC03MSAtMjUuNSAtMTM1dC02OC41IC0xMTF0LTk5IC04MnQtMTE4LjUgLTU0dC0xMjUuNSAtMjNxLTg0IDUgLTE2MS41IDM0dC0xMzkuNSA3OC41dC05OSAxMjV0LTM3IDE2NC41cTAgNjkgMTggMTM2LjV0NDkuNSAxMjYuNXQ2OS41IDExNi41dDgxLjUgMTE3LjV0ODMuNSAxMTkgdDc2LjUgMTMxdDU4LjUgMTQzek0zNDQgNzEwcS0yMyAtMzMgLTQzLjUgLTcwLjV0LTQwLjUgLTEwMi41dC0xNyAtMTIzcTEgLTM3IDE0LjUgLTY5LjV0MzAgLTUydDQxIC0zN3QzOC41IC0yNC41dDMzIC0xNXEyMSAtNyAzMiAtMXQxMyAyMmw2IDM0cTIgMTAgLTIuNSAyMnQtMTMuNSAxOXEtNSA0IC0xNCAxMnQtMjkuNSA0MC41dC0zMi41IDczLjVxLTI2IDg5IDYgMjcxcTIgMTEgLTYgMTFxLTggMSAtMTUgLTEweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjU7IiBkPSJNMTAwMCAxMDEzbDEwOCAxMTVxMiAxIDUgMnQxMyAydDIwLjUgLTF0MjUgLTkuNXQyOC41IC0yMS41cTIyIC0yMiAyNyAtNDN0MCAtMzJsLTYgLTEwbC0xMDggLTExNXpNMzUwIDExMDBoNDAwcTUwIDAgMTA1IC0xM2wtMTg3IC0xODdoLTM2OHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNTAwcTAgLTQxIDI5LjUgLTcwLjV0NzAuNSAtMjkuNWg1MDBxNDEgMCA3MC41IDI5LjV0MjkuNSA3MC41djE4MmwyMDAgMjAwdi0zMzIgcTAgLTE2NSAtOTMuNSAtMjU3LjV0LTI1Ni41IC05Mi41aC00MDBxLTE2NSAwIC0yNTcuNSA5Mi41dC05Mi41IDI1Ny41djQwMHEwIDE2NSA5Mi41IDI1Ny41dDI1Ny41IDkyLjV6TTEwMDkgODAzbC0zNjIgLTM2MmwtMTYxIC01MGw1NSAxNzBsMzU1IDM1NXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDY2OyIgZD0iTTM1MCAxMTAwaDM2MXEtMTY0IC0xNDYgLTIxNiAtMjAwaC0xOTVxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNWwyMDAgMTUzdi0xMDNxMCAtMTY1IC05Mi41IC0yNTcuNXQtMjU3LjUgLTkyLjVoLTQwMHEtMTY1IDAgLTI1Ny41IDkyLjV0LTkyLjUgMjU3LjV2NDAwcTAgMTY1IDkyLjUgMjU3LjV0MjU3LjUgOTIuNXogTTgyNCAxMDczbDMzOSAtMzAxcTggLTcgOCAtMTcuNXQtOCAtMTcuNWwtMzQwIC0zMDZxLTcgLTYgLTEyLjUgLTR0LTYuNSAxMXYyMDNxLTI2IDEgLTU0LjUgMHQtNzguNSAtNy41dC05MiAtMTcuNXQtODYgLTM1dC03MCAtNTdxMTAgNTkgMzMgMTA4dDUxLjUgODEuNXQ2NSA1OC41dDY4LjUgNDAuNXQ2NyAyNC41dDU2IDEzLjV0NDAgNC41djIxMHExIDEwIDYuNSAxMi41dDEzLjUgLTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDY3OyIgZD0iTTM1MCAxMTAwaDM1MHE2MCAwIDEyNyAtMjNsLTE3OCAtMTc3aC0zNDlxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNXY2OWwyMDAgMjAwdi0yMTlxMCAtMTY1IC05Mi41IC0yNTcuNXQtMjU3LjUgLTkyLjVoLTQwMHEtMTY1IDAgLTI1Ny41IDkyLjV0LTkyLjUgMjU3LjV2NDAwcTAgMTY1IDkyLjUgMjU3LjV0MjU3LjUgOTIuNXogTTY0MyA2MzlsMzk1IDM5NXE3IDcgMTcuNSA3dDE3LjUgLTdsMTAxIC0xMDFxNyAtNyA3IC0xNy41dC03IC0xNy41bC01MzEgLTUzMnEtNyAtNyAtMTcuNSAtN3QtMTcuNSA3bC0yNDggMjQ4cS03IDcgLTcgMTcuNXQ3IDE3LjVsMTAxIDEwMXE3IDcgMTcuNSA3dDE3LjUgLTdsMTExIC0xMTFxOCAtNyAxOCAtN3QxOCA3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjg7IiBkPSJNMzE4IDkxOGwyNjQgMjY0cTggOCAxOCA4dDE4IC04bDI2MCAtMjY0cTcgLTggNC41IC0xM3QtMTIuNSAtNWgtMTcwdi0yMDBoMjAwdjE3M3EwIDEwIDUgMTJ0MTMgLTVsMjY0IC0yNjBxOCAtNyA4IC0xNy41dC04IC0xNy41bC0yNjQgLTI2NXEtOCAtNyAtMTMgLTV0LTUgMTJ2MTczaC0yMDB2LTIwMGgxNzBxMTAgMCAxMi41IC01dC00LjUgLTEzbC0yNjAgLTI2NHEtOCAtOCAtMTggLTh0LTE4IDhsLTI2NCAyNjRxLTggOCAtNS41IDEzIHQxMi41IDVoMTc1djIwMGgtMjAwdi0xNzNxMCAtMTAgLTUgLTEydC0xMyA1bC0yNjQgMjY1cS04IDcgLTggMTcuNXQ4IDE3LjVsMjY0IDI2MHE4IDcgMTMgNXQ1IC0xMnYtMTczaDIwMHYyMDBoLTE3NXEtMTAgMCAtMTIuNSA1dDUuNSAxM3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDY5OyIgZD0iTTI1MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDM4bDQ2NCA0NTNxMTUgMTQgMjUuNSAxMHQxMC41IC0yNXYtMTAwMHEwIC0yMSAtMTAuNSAtMjV0LTI1LjUgMTBsLTQ2NCA0NTN2LTQzOHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDcwOyIgZD0iTTUwIDExMDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MzhsNDY0IDQ1M3ExNSAxNCAyNS41IDEwdDEwLjUgLTI1di00MzhsNDY0IDQ1M3ExNSAxNCAyNS41IDEwdDEwLjUgLTI1di0xMDAwcTAgLTIxIC0xMC41IC0yNXQtMjUuNSAxMGwtNDY0IDQ1M3YtNDM4cTAgLTIxIC0xMC41IC0yNXQtMjUuNSAxMGwtNDY0IDQ1M3YtNDM4cTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNSB0LTE0LjUgMzUuNXYxMDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDcxOyIgZD0iTTEyMDAgMTA1MHYtMTAwMHEwIC0yMSAtMTAuNSAtMjV0LTI1LjUgMTBsLTQ2NCA0NTN2LTQzOHEwIC0yMSAtMTAuNSAtMjV0LTI1LjUgMTBsLTQ5MiA0ODBxLTE1IDE0IC0xNSAzNXQxNSAzNWw0OTIgNDgwcTE1IDE0IDI1LjUgMTB0MTAuNSAtMjV2LTQzOGw0NjQgNDUzcTE1IDE0IDI1LjUgMTB0MTAuNSAtMjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3MjsiIGQ9Ik0yNDMgMTA3NGw4MTQgLTQ5OHExOCAtMTEgMTggLTI2dC0xOCAtMjZsLTgxNCAtNDk4cS0xOCAtMTEgLTMwLjUgLTR0LTEyLjUgMjh2MTAwMHEwIDIxIDEyLjUgMjh0MzAuNSAtNHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDczOyIgZD0iTTI1MCAxMDAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtODAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djgwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTY1MCAxMDAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtODAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djgwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNzQ7IiBkPSJNMTEwMCA5NTB2LTgwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtODAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY4MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDc1OyIgZD0iTTUwMCA2MTJ2NDM4cTAgMjEgMTAuNSAyNXQyNS41IC0xMGw0OTIgLTQ4MHExNSAtMTQgMTUgLTM1dC0xNSAtMzVsLTQ5MiAtNDgwcS0xNSAtMTQgLTI1LjUgLTEwdC0xMC41IDI1djQzOGwtNDY0IC00NTNxLTE1IC0xNCAtMjUuNSAtMTB0LTEwLjUgMjV2MTAwMHEwIDIxIDEwLjUgMjV0MjUuNSAtMTB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3NjsiIGQ9Ik0xMDQ4IDExMDJsMTAwIDFxMjAgMCAzNSAtMTQuNXQxNSAtMzUuNWw1IC0xMDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41bC0xMDAgLTFxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41bC0yIDQzN2wtNDYzIC00NTRxLTE0IC0xNSAtMjQuNSAtMTAuNXQtMTAuNSAyNS41bC0yIDQzN2wtNDYyIC00NTVxLTE1IC0xNCAtMjUuNSAtOS41dC0xMC41IDI0LjVsLTUgMTAwMHEwIDIxIDEwLjUgMjUuNXQyNS41IC0xMC41bDQ2NiAtNDUwIGwtMiA0MzhxMCAyMCAxMC41IDI0LjV0MjUuNSAtOS41bDQ2NiAtNDUxbC0yIDQzOHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3NzsiIGQ9Ik04NTAgMTEwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDM4bC00NjQgLTQ1M3EtMTUgLTE0IC0yNS41IC0xMHQtMTAuNSAyNXYxMDAwcTAgMjEgMTAuNSAyNXQyNS41IC0xMGw0NjQgLTQ1M3Y0MzhxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNzg7IiBkPSJNNjg2IDEwODFsNTAxIC01NDBxMTUgLTE1IDEwLjUgLTI2dC0yNi41IC0xMWgtMTA0MnEtMjIgMCAtMjYuNSAxMXQxMC41IDI2bDUwMSA1NDBxMTUgMTUgMzYgMTV0MzYgLTE1ek0xNTAgNDAwaDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDc5OyIgZD0iTTg4NSA5MDBsLTM1MiAtMzUzbDM1MiAtMzUzbC0xOTcgLTE5OGwtNTUyIDU1Mmw1NTIgNTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODA7IiBkPSJNMTA2NCA1NDdsLTU1MSAtNTUxbC0xOTggMTk4bDM1MyAzNTNsLTM1MyAzNTNsMTk4IDE5OHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDgxOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02NTAgOTAwaC0xMDBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTE1MGgtMTUwIHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwcTAgLTIxIDE0LjUgLTM1LjV0MzUuNSAtMTQuNWgxNTB2LTE1MHEwIC0yMSAxNC41IC0zNS41dDM1LjUgLTE0LjVoMTAwcTIxIDAgMzUuNSAxNC41dDE0LjUgMzUuNXYxNTBoMTUwcTIxIDAgMzUuNSAxNC41dDE0LjUgMzUuNXYxMDBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTE1MHYxNTBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4MjsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNODUwIDcwMGgtNTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDBxMCAtMjEgMTQuNSAtMzUuNSB0MzUuNSAtMTQuNWg1MDBxMjEgMCAzNS41IDE0LjV0MTQuNSAzNS41djEwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDgzOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek03NDEuNSA5MTNxLTEyLjUgMCAtMjEuNSAtOWwtMTIwIC0xMjBsLTEyMCAxMjBxLTkgOSAtMjEuNSA5IHQtMjEuNSAtOWwtMTQxIC0xNDFxLTkgLTkgLTkgLTIxLjV0OSAtMjEuNWwxMjAgLTEyMGwtMTIwIC0xMjBxLTkgLTkgLTkgLTIxLjV0OSAtMjEuNWwxNDEgLTE0MXE5IC05IDIxLjUgLTl0MjEuNSA5bDEyMCAxMjBsMTIwIC0xMjBxOSAtOSAyMS41IC05dDIxLjUgOWwxNDEgMTQxcTkgOSA5IDIxLjV0LTkgMjEuNWwtMTIwIDEyMGwxMjAgMTIwcTkgOSA5IDIxLjV0LTkgMjEuNWwtMTQxIDE0MXEtOSA5IC0yMS41IDl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4NDsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNNTQ2IDYyM2wtODQgODVxLTcgNyAtMTcuNSA3dC0xOC41IC03bC0xMzkgLTEzOXEtNyAtOCAtNyAtMTh0NyAtMTggbDI0MiAtMjQxcTcgLTggMTcuNSAtOHQxNy41IDhsMzc1IDM3NXE3IDcgNyAxNy41dC03IDE4LjVsLTEzOSAxMzlxLTcgNyAtMTcuNSA3dC0xNy41IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODU7IiBkPSJNNjAwIDExNzdxMTE3IDAgMjI0IC00NS41dDE4NC41IC0xMjN0MTIzIC0xODQuNXQ0NS41IC0yMjR0LTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNXQtMTg0LjUgMTIzdC0xMjMgMTg0LjV0LTQ1LjUgMjI0dDQ1LjUgMjI0dDEyMyAxODQuNXQxODQuNSAxMjN0MjI0IDQ1LjV6TTU4OCA5NDFxLTI5IDAgLTU5IC01LjV0LTYzIC0yMC41dC01OCAtMzguNXQtNDEuNSAtNjN0LTE2LjUgLTg5LjUgcTAgLTI1IDIwIC0yNWgxMzFxMzAgLTUgMzUgMTFxNiAyMCAyMC41IDI4dDQ1LjUgOHEyMCAwIDMxLjUgLTEwLjV0MTEuNSAtMjguNXEwIC0yMyAtNyAtMzR0LTI2IC0xOHEtMSAwIC0xMy41IC00dC0xOS41IC03LjV0LTIwIC0xMC41dC0yMiAtMTd0LTE4LjUgLTI0dC0xNS41IC0zNXQtOCAtNDZxLTEgLTggNS41IC0xNi41dDIwLjUgLTguNWgxNzNxNyAwIDIyIDh0MzUgMjh0MzcuNSA0OHQyOS41IDc0dDEyIDEwMHEwIDQ3IC0xNyA4MyB0LTQyLjUgNTd0LTU5LjUgMzQuNXQtNjQgMTh0LTU5IDQuNXpNNjc1IDQwMGgtMTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2MTUwcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDg2OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02NzUgMTAwMGgtMTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMTUwcTAgLTEwIDcuNSAtMTcuNSB0MTcuNSAtNy41aDE1MHExMCAwIDE3LjUgNy41dDcuNSAxNy41djE1MHEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6TTY3NSA3MDBoLTI1MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoNzV2LTIwMGgtNzVxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di01MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDM1MHExMCAwIDE3LjUgNy41dDcuNSAxNy41djUwcTAgMTAgLTcuNSAxNy41IHQtMTcuNSA3LjVoLTc1djI3NXEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4NzsiIGQ9Ik01MjUgMTIwMGgxNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xOTRxMTAzIC0yNyAxNzguNSAtMTAyLjV0MTAyLjUgLTE3OC41aDE5NHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE5NHEtMjcgLTEwMyAtMTAyLjUgLTE3OC41dC0xNzguNSAtMTAyLjV2LTE5NHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE5NCBxLTEwMyAyNyAtMTc4LjUgMTAyLjV0LTEwMi41IDE3OC41aC0xOTRxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgxOTRxMjcgMTAzIDEwMi41IDE3OC41dDE3OC41IDEwMi41djE5NHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek03MDAgODkzdi0xNjhxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNjhxLTY4IC0yMyAtMTE5IC03NCB0LTc0IC0xMTloMTY4cTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTY4cTIzIC02OCA3NCAtMTE5dDExOSAtNzR2MTY4cTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTY4cTY4IDIzIDExOSA3NHQ3NCAxMTloLTE2OHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDE2OCBxLTIzIDY4IC03NCAxMTl0LTExOSA3NHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDg4OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjV0NTcgLTIxNC41IHQxNTUuNSAtMTU1LjV0MjE0LjUgLTU3dDIxNC41IDU3dDE1NS41IDE1NS41dDU3IDIxNC41dC01NyAyMTQuNXQtMTU1LjUgMTU1LjV0LTIxNC41IDU3ek03NTkgODIzbDY0IC02NHE3IC03IDcgLTE3LjV0LTcgLTE3LjVsLTEyNCAtMTI0bDEyNCAtMTI0cTcgLTcgNyAtMTcuNXQtNyAtMTcuNWwtNjQgLTY0cS03IC03IC0xNy41IC03dC0xNy41IDdsLTEyNCAxMjRsLTEyNCAtMTI0cS03IC03IC0xNy41IC03dC0xNy41IDdsLTY0IDY0IHEtNyA3IC03IDE3LjV0NyAxNy41bDEyNCAxMjRsLTEyNCAxMjRxLTcgNyAtNyAxNy41dDcgMTcuNWw2NCA2NHE3IDcgMTcuNSA3dDE3LjUgLTdsMTI0IC0xMjRsMTI0IDEyNHE3IDcgMTcuNSA3dDE3LjUgLTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4OTsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNNjAwIDEwMjdxLTExNiAwIC0yMTQuNSAtNTd0LTE1NS41IC0xNTUuNXQtNTcgLTIxNC41dDU3IC0yMTQuNSB0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXQtNTcgMjE0LjV0LTE1NS41IDE1NS41dC0yMTQuNSA1N3pNNzgyIDc4OGwxMDYgLTEwNnE3IC03IDcgLTE3LjV0LTcgLTE3LjVsLTMyMCAtMzIxcS04IC03IC0xOCAtN3QtMTggN2wtMjAyIDIwM3EtOCA3IC04IDE3LjV0OCAxNy41bDEwNiAxMDZxNyA4IDE3LjUgOHQxNy41IC04bDc5IC03OWwxOTcgMTk3cTcgNyAxNy41IDd0MTcuNSAtN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDkwOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjVxMCAtMTIwIDY1IC0yMjUgbDU4NyA1ODdxLTEwNSA2NSAtMjI1IDY1ek05NjUgODE5bC01ODQgLTU4NHExMDQgLTYyIDIxOSAtNjJxMTE2IDAgMjE0LjUgNTd0MTU1LjUgMTU1LjV0NTcgMjE0LjVxMCAxMTUgLTYyIDIxOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDkxOyIgZD0iTTM5IDU4Mmw1MjIgNDI3cTE2IDEzIDI3LjUgOHQxMS41IC0yNnYtMjkxaDU1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC01NTB2LTI5MXEwIC0yMSAtMTEuNSAtMjZ0LTI3LjUgOGwtNTIyIDQyN3EtMTYgMTMgLTE2IDMydDE2IDMyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwOTI7IiBkPSJNNjM5IDEwMDlsNTIyIC00MjdxMTYgLTEzIDE2IC0zMnQtMTYgLTMybC01MjIgLTQyN3EtMTYgLTEzIC0yNy41IC04dC0xMS41IDI2djI5MWgtNTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDU1MHYyOTFxMCAyMSAxMS41IDI2dDI3LjUgLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5MzsiIGQ9Ik02ODIgMTE2MWw0MjcgLTUyMnExMyAtMTYgOCAtMjcuNXQtMjYgLTExLjVoLTI5MXYtNTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djU1MGgtMjkxcS0yMSAwIC0yNiAxMS41dDggMjcuNWw0MjcgNTIycTEzIDE2IDMyIDE2dDMyIC0xNnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDk0OyIgZD0iTTU1MCAxMjAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTUwaDI5MXEyMSAwIDI2IC0xMS41dC04IC0yNy41bC00MjcgLTUyMnEtMTMgLTE2IC0zMiAtMTZ0LTMyIDE2bC00MjcgNTIycS0xMyAxNiAtOCAyNy41dDI2IDExLjVoMjkxdjU1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5NTsiIGQ9Ik02MzkgMTEwOWw1MjIgLTQyN3ExNiAtMTMgMTYgLTMydC0xNiAtMzJsLTUyMiAtNDI3cS0xNiAtMTMgLTI3LjUgLTh0LTExLjUgMjZ2MjkxcS05NCAtMiAtMTgyIC0yMHQtMTcwLjUgLTUydC0xNDcgLTkyLjV0LTEwMC41IC0xMzUuNXE1IDEwNSAyNyAxOTMuNXQ2Ny41IDE2N3QxMTMgMTM1dDE2NyA5MS41dDIyNS41IDQydjI2MnEwIDIxIDExLjUgMjZ0MjcuNSAtOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDk2OyIgZD0iTTg1MCAxMjAwaDMwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMzAwcTAgLTIxIC0xMC41IC0yNXQtMjQuNSAxMGwtOTQgOTRsLTI0OSAtMjQ5cS04IC03IC0xOCAtN3QtMTggN2wtMTA2IDEwNnEtNyA4IC03IDE4dDcgMThsMjQ5IDI0OWwtOTQgOTRxLTE0IDE0IC0xMCAyNC41dDI1IDEwLjV6TTM1MCAwaC0zMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djMwMHEwIDIxIDEwLjUgMjV0MjQuNSAtMTBsOTQgLTk0bDI0OSAyNDkgcTggNyAxOCA3dDE4IC03bDEwNiAtMTA2cTcgLTggNyAtMTh0LTcgLTE4bC0yNDkgLTI0OWw5NCAtOTRxMTQgLTE0IDEwIC0yNC41dC0yNSAtMTAuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDk3OyIgZD0iTTEwMTQgMTEyMGwxMDYgLTEwNnE3IC04IDcgLTE4dC03IC0xOGwtMjQ5IC0yNDlsOTQgLTk0cTE0IC0xNCAxMCAtMjQuNXQtMjUgLTEwLjVoLTMwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MzAwcTAgMjEgMTAuNSAyNXQyNC41IC0xMGw5NCAtOTRsMjQ5IDI0OXE4IDcgMTggN3QxOCAtN3pNMjUwIDYwMGgzMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTMwMHEwIC0yMSAtMTAuNSAtMjV0LTI0LjUgMTBsLTk0IDk0IGwtMjQ5IC0yNDlxLTggLTcgLTE4IC03dC0xOCA3bC0xMDYgMTA2cS03IDggLTcgMTh0NyAxOGwyNDkgMjQ5bC05NCA5NHEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTAxOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek03MDQgOTAwaC0yMDhxLTIwIDAgLTMyIC0xNC41dC04IC0zNC41bDU4IC0zMDJxNCAtMjAgMjEuNSAtMzQuNSB0MzcuNSAtMTQuNWg1NHEyMCAwIDM3LjUgMTQuNXQyMS41IDM0LjVsNTggMzAycTQgMjAgLTggMzQuNXQtMzIgMTQuNXpNNjc1IDQwMGgtMTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2MTUwcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTAyOyIgZD0iTTI2MCAxMjAwcTkgMCAxOSAtMnQxNSAtNGw1IC0ycTIyIC0xMCA0NCAtMjNsMTk2IC0xMThxMjEgLTEzIDM2IC0yNHEyOSAtMjEgMzcgLTEycTExIDEzIDQ5IDM1bDE5NiAxMThxMjIgMTMgNDUgMjNxMTcgNyAzOCA3cTIzIDAgNDcgLTE2LjV0MzcgLTMzLjVsMTMgLTE2cTE0IC0yMSAxOCAtNDVsMjUgLTEyM2w4IC00NHExIC05IDguNSAtMTQuNXQxNy41IC01LjVoNjFxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di01MCBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC01MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTE3NWgtNDAwdjMwMGgtMjAwdi0zMDBoLTQwMHYxNzVxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41aC01MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoNjFxMTEgMCAxOCAzdDcgOHEwIDQgOSA1MmwyNSAxMjhxNSAyNSAxOSA0NXEyIDMgNSA3dDEzLjUgMTV0MjEuNSAxOS41dDI2LjUgMTUuNSB0MjkuNSA3ek05MTUgMTA3OWwtMTY2IC0xNjJxLTcgLTcgLTUgLTEydDEyIC01aDIxOXExMCAwIDE1IDd0MiAxN2wtNTEgMTQ5cS0zIDEwIC0xMSAxMnQtMTUgLTZ6TTQ2MyA5MTdsLTE3NyAxNTdxLTggNyAtMTYgNXQtMTEgLTEybC01MSAtMTQzcS0zIC0xMCAyIC0xN3QxNSAtN2gyMzFxMTEgMCAxMi41IDV0LTUuNSAxMnpNNTAwIDBoLTM3NXEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djM3NWg0MDB2LTQwMHpNMTEwMCA0MDB2LTM3NSBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0zNzV2NDAwaDQwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTAzOyIgZD0iTTExNjUgMTE5MHE4IDMgMjEgLTYuNXQxMyAtMTcuNXEtMiAtMTc4IC0yNC41IC0zMjMuNXQtNTUuNSAtMjQ1LjV0LTg3IC0xNzQuNXQtMTAyLjUgLTExOC41dC0xMTggLTY4LjV0LTExOC41IC0zM3QtMTIwIC00LjV0LTEwNSA5LjV0LTkwIDE2LjVxLTYxIDEyIC03OCAxMXEtNCAxIC0xMi41IDB0LTM0IC0xNC41dC01Mi41IC00MC41bC0xNTMgLTE1M3EtMjYgLTI0IC0zNyAtMTQuNXQtMTEgNDMuNXEwIDY0IDQyIDEwMnE4IDggNTAuNSA0NSB0NjYuNSA1OHExOSAxNyAzNSA0N3QxMyA2MXEtOSA1NSAtMTAgMTAyLjV0NyAxMTF0MzcgMTMwdDc4IDEyOS41cTM5IDUxIDgwIDg4dDg5LjUgNjMuNXQ5NC41IDQ1dDExMy41IDM2dDEyOSAzMXQxNTcuNSAzN3QxODIgNDcuNXpNMTExNiAxMDk4cS04IDkgLTIyLjUgLTN0LTQ1LjUgLTUwcS0zOCAtNDcgLTExOSAtMTAzLjV0LTE0MiAtODkuNWwtNjIgLTMzcS01NiAtMzAgLTEwMiAtNTd0LTEwNCAtNjh0LTEwMi41IC04MC41dC04NS41IC05MSB0LTY0IC0xMDQuNXEtMjQgLTU2IC0zMSAtODZ0MiAtMzJ0MzEuNSAxNy41dDU1LjUgNTkuNXEyNSAzMCA5NCA3NS41dDEyNS41IDc3LjV0MTQ3LjUgODFxNzAgMzcgMTE4LjUgNjl0MTAyIDc5LjV0OTkgMTExdDg2LjUgMTQ4LjVxMjIgNTAgMjQgNjB0LTYgMTl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNDsiIGQ9Ik02NTMgMTIzMXEtMzkgLTY3IC01NC41IC0xMzF0LTEwLjUgLTExNC41dDI0LjUgLTk2LjV0NDcuNSAtODB0NjMuNSAtNjIuNXQ2OC41IC00Ni41dDY1IC0zMHEtNCA3IC0xNy41IDM1dC0xOC41IDM5LjV0LTE3IDM5LjV0LTE3IDQzdC0xMyA0MnQtOS41IDQ0LjV0LTIgNDJ0NCA0M3QxMy41IDM5dDIzIDM4LjVxOTYgLTQyIDE2NSAtMTA3LjV0MTA1IC0xMzh0NTIgLTE1NnQxMyAtMTU5dC0xOSAtMTQ5LjVxLTEzIC01NSAtNDQgLTEwNi41IHQtNjggLTg3dC03OC41IC02NC41dC03Mi41IC00NXQtNTMgLTIycS03MiAtMjIgLTEyNyAtMTFxLTMxIDYgLTEzIDE5cTYgMyAxNyA3cTEzIDUgMzIuNSAyMXQ0MSA0NHQzOC41IDYzLjV0MjEuNSA4MS41dC02LjUgOTQuNXQtNTAgMTA3dC0xMDQgMTE1LjVxMTAgLTEwNCAtMC41IC0xODl0LTM3IC0xNDAuNXQtNjUgLTkzdC04NCAtNTJ0LTkzLjUgLTExdC05NSAyNC41cS04MCAzNiAtMTMxLjUgMTE0dC01My41IDE3MXEtMiAyMyAwIDQ5LjUgdDQuNSA1Mi41dDEzLjUgNTZ0MjcuNSA2MHQ0NiA2NC41dDY5LjUgNjguNXEtOCAtNTMgLTUgLTEwMi41dDE3LjUgLTkwdDM0IC02OC41dDQ0LjUgLTM5dDQ5IC0ycTMxIDEzIDM4LjUgMzZ0LTQuNSA1NXQtMjkgNjQuNXQtMzYgNzV0LTI2IDc1LjVxLTE1IDg1IDIgMTYxLjV0NTMuNSAxMjguNXQ4NS41IDkyLjV0OTMuNSA2MXQ4MS41IDI1LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNTsiIGQ9Ik02MDAgMTA5NHE4MiAwIDE2MC41IC0yMi41dDE0MCAtNTl0MTE2LjUgLTgyLjV0OTQuNSAtOTV0NjggLTk1dDQyLjUgLTgyLjV0MTQgLTU3LjV0LTE0IC01Ny41dC00MyAtODIuNXQtNjguNSAtOTV0LTk0LjUgLTk1dC0xMTYuNSAtODIuNXQtMTQwIC01OXQtMTU5LjUgLTIyLjV0LTE1OS41IDIyLjV0LTE0MCA1OXQtMTE2LjUgODIuNXQtOTQuNSA5NXQtNjguNSA5NXQtNDMgODIuNXQtMTQgNTcuNXQxNCA1Ny41dDQyLjUgODIuNXQ2OCA5NSB0OTQuNSA5NXQxMTYuNSA4Mi41dDE0MCA1OXQxNjAuNSAyMi41ek04ODggODI5cS0xNSAxNSAtMTggMTJ0NSAtMjJxMjUgLTU3IDI1IC0xMTlxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4dC0yMTIgODh0LTg4IDIxMnEwIDU5IDIzIDExNHE4IDE5IDQuNSAyMnQtMTcuNSAtMTJxLTcwIC02OSAtMTYwIC0xODRxLTEzIC0xNiAtMTUgLTQwLjV0OSAtNDIuNXEyMiAtMzYgNDcgLTcxdDcwIC04MnQ5Mi41IC04MXQxMTMgLTU4LjV0MTMzLjUgLTI0LjUgdDEzMy41IDI0dDExMyA1OC41dDkyLjUgODEuNXQ3MCA4MS41dDQ3IDcwLjVxMTEgMTggOSA0Mi41dC0xNCA0MS41cS05MCAxMTcgLTE2MyAxODl6TTQ0OCA3MjdsLTM1IC0zNnEtMTUgLTE1IC0xOS41IC0zOC41dDQuNSAtNDEuNXEzNyAtNjggOTMgLTExNnExNiAtMTMgMzguNSAtMTF0MzYuNSAxN2wzNSAzNHExNCAxNSAxMi41IDMzLjV0LTE2LjUgMzMuNXEtNDQgNDQgLTg5IDExN3EtMTEgMTggLTI4IDIwdC0zMiAtMTJ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNjsiIGQ9Ik01OTIgMGgtMTQ4bDMxIDEyMHEtOTEgMjAgLTE3NS41IDY4LjV0LTE0My41IDEwNi41dC0xMDMuNSAxMTl0LTY2LjUgMTEwdC0yMiA3NnEwIDIxIDE0IDU3LjV0NDIuNSA4Mi41dDY4IDk1dDk0LjUgOTV0MTE2LjUgODIuNXQxNDAgNTl0MTYwLjUgMjIuNXE2MSAwIDEyNiAtMTVsMzIgMTIxaDE0OHpNOTQ0IDc3MGw0NyAxODFxMTA4IC04NSAxNzYuNSAtMTkydDY4LjUgLTE1OXEwIC0yNiAtMTkuNSAtNzF0LTU5LjUgLTEwMnQtOTMgLTExMiB0LTEyOSAtMTA0LjV0LTE1OCAtNzUuNWw0NiAxNzNxNzcgNDkgMTM2IDExN3Q5NyAxMzFxMTEgMTggOSA0Mi41dC0xNCA0MS41cS01NCA3MCAtMTA3IDEzMHpNMzEwIDgyNHEtNzAgLTY5IC0xNjAgLTE4NHEtMTMgLTE2IC0xNSAtNDAuNXQ5IC00Mi41cTE4IC0zMCAzOSAtNjB0NTcgLTcwLjV0NzQgLTczdDkwIC02MXQxMDUgLTQxLjVsNDEgMTU0cS0xMDcgMTggLTE3OC41IDEwMS41dC03MS41IDE5My41cTAgNTkgMjMgMTE0cTggMTkgNC41IDIyIHQtMTcuNSAtMTJ6TTQ0OCA3MjdsLTM1IC0zNnEtMTUgLTE1IC0xOS41IC0zOC41dDQuNSAtNDEuNXEzNyAtNjggOTMgLTExNnExNiAtMTMgMzguNSAtMTF0MzYuNSAxN2wxMiAxMWwyMiA4NmwtMyA0cS00NCA0NCAtODkgMTE3cS0xMSAxOCAtMjggMjB0LTMyIC0xMnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTA3OyIgZD0iTS05MCAxMDBsNjQyIDEwNjZxMjAgMzEgNDggMjguNXQ0OCAtMzUuNWw2NDIgLTEwNTZxMjEgLTMyIDcuNSAtNjcuNXQtNTAuNSAtMzUuNWgtMTI5NHEtMzcgMCAtNTAuNSAzNHQ3LjUgNjZ6TTE1NSAyMDBoMzQ1djc1cTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNzVoMzQ1bC00NDUgNzIzek00OTYgNzAwaDIwOHEyMCAwIDMyIC0xNC41dDggLTM0LjVsLTU4IC0yNTIgcS00IC0yMCAtMjEuNSAtMzQuNXQtMzcuNSAtMTQuNWgtNTRxLTIwIDAgLTM3LjUgMTQuNXQtMjEuNSAzNC41bC01OCAyNTJxLTQgMjAgOCAzNC41dDMyIDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwODsiIGQ9Ik02NTAgMTIwMHE2MiAwIDEwNiAtNDR0NDQgLTEwNnYtMzM5bDM2MyAtMzI1cTE1IC0xNCAyNiAtMzguNXQxMSAtNDQuNXYtNDFxMCAtMjAgLTEyIC0yNi41dC0yOSA1LjVsLTM1OSAyNDl2LTI2M3ExMDAgLTkzIDEwMCAtMTEzdi02NHEwIC0yMSAtMTMgLTI5dC0zMiAxbC0yMDUgMTI4bC0yMDUgLTEyOHEtMTkgLTkgLTMyIC0xdC0xMyAyOXY2NHEwIDIwIDEwMCAxMTN2MjYzbC0zNTkgLTI0OXEtMTcgLTEyIC0yOSAtNS41dC0xMiAyNi41djQxIHEwIDIwIDExIDQ0LjV0MjYgMzguNWwzNjMgMzI1djMzOXEwIDYyIDQ0IDEwNnQxMDYgNDR6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwOTsiIGQ9Ik04NTAgMTIwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUwaDUwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xNTBoLTExMDB2MTUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg1MHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGg1MDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMTAwIDgwMHYtNzUwcTAgLTIxIC0xNC41IC0zNS41IHQtMzUuNSAtMTQuNWgtMTAwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NzUwaDExMDB6TTEwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTMwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTUwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTcwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTkwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMCA0MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTMwMCA0MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTUwMCA0MDAgdi0xMDBoMTAwdjEwMGgtMTAwek03MDAgNDAwdi0xMDBoMTAwdjEwMGgtMTAwek05MDAgNDAwdi0xMDBoMTAwdjEwMGgtMTAwek0xMDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek0zMDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek01MDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek03MDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek05MDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTA7IiBkPSJNMTEzNSAxMTY1bDI0OSAtMjMwcTE1IC0xNCAxNSAtMzV0LTE1IC0zNWwtMjQ5IC0yMzBxLTE0IC0xNCAtMjQuNSAtMTB0LTEwLjUgMjV2MTUwaC0xNTlsLTYwMCAtNjAwaC0yOTFxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjA5bDYwMCA2MDBoMjQxdjE1MHEwIDIxIDEwLjUgMjV0MjQuNSAtMTB6TTUyMiA4MTlsLTE0MSAtMTQxbC0xMjIgMTIyaC0yMDlxLTIxIDAgLTM1LjUgMTQuNSB0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDI5MXpNMTEzNSA1NjVsMjQ5IC0yMzBxMTUgLTE0IDE1IC0zNXQtMTUgLTM1bC0yNDkgLTIzMHEtMTQgLTE0IC0yNC41IC0xMHQtMTAuNSAyNXYxNTBoLTI0MWwtMTgxIDE4MWwxNDEgMTQxbDEyMiAtMTIyaDE1OXYxNTBxMCAyMSAxMC41IDI1dDI0LjUgLTEweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTE7IiBkPSJNMTAwIDExMDBoMTAwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNjAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC01OTZsLTMwNCAtMzAwdjMwMGgtMTAwcS00MSAwIC03MC41IDI5LjV0LTI5LjUgNzAuNXY2MDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTI7IiBkPSJNMTUwIDEyMDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yNTBoLTMwMHYyNTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04NTAgMTIwMGgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTI1MGgtMzAwdjI1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTExMDAgODAwdi0zMDBxMCAtNDEgLTMgLTc3LjV0LTE1IC04OS41dC0zMiAtOTZ0LTU4IC04OXQtODkgLTc3dC0xMjkgLTUxdC0xNzQgLTIwdC0xNzQgMjAgdC0xMjkgNTF0LTg5IDc3dC01OCA4OXQtMzIgOTZ0LTE1IDg5LjV0LTMgNzcuNXYzMDBoMzAwdi0yNTB2LTI3di00Mi41dDEuNSAtNDF0NSAtMzh0MTAgLTM1dDE2LjUgLTMwdDI1LjUgLTI0LjV0MzUgLTE5dDQ2LjUgLTEydDYwIC00dDYwIDQuNXQ0Ni41IDEyLjV0MzUgMTkuNXQyNSAyNS41dDE3IDMwLjV0MTAgMzV0NSAzOHQyIDQwLjV0LTAuNSA0MnYyNXYyNTBoMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTM7IiBkPSJNMTEwMCA0MTFsLTE5OCAtMTk5bC0zNTMgMzUzbC0zNTMgLTM1M2wtMTk3IDE5OWw1NTEgNTUxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTQ7IiBkPSJNMTEwMSA3ODlsLTU1MCAtNTUxbC01NTEgNTUxbDE5OCAxOTlsMzUzIC0zNTNsMzUzIDM1M3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTE1OyIgZD0iTTQwNCAxMDAwaDc0NnEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTUxaDE1MHEyMSAwIDI1IC0xMC41dC0xMCAtMjQuNWwtMjMwIC0yNDlxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI0OXEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNWgxNTB2NDAxaC0zODF6TTEzNSA5ODRsMjMwIC0yNDlxMTQgLTE0IDEwIC0yNC41dC0yNSAtMTAuNWgtMTUwdi00MDBoMzg1bDIxNSAtMjAwaC03NTBxLTIxIDAgLTM1LjUgMTQuNSB0LTE0LjUgMzUuNXY1NTBoLTE1MHEtMjEgMCAtMjUgMTAuNXQxMCAyNC41bDIzMCAyNDlxMTQgMTUgMzUgMTV0MzUgLTE1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTY7IiBkPSJNNTYgMTIwMGg5NHExNyAwIDMxIC0xMXQxOCAtMjdsMzggLTE2Mmg4OTZxMjQgMCAzOSAtMTguNXQxMCAtNDIuNWwtMTAwIC00NzVxLTUgLTIxIC0yNyAtNDIuNXQtNTUgLTIxLjVoLTYzM2w0OCAtMjAwaDUzNXEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41dC0zNS41IDE0LjV0LTE0LjUgMzUuNXY1MGgtMzAwdi01MCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjV0LTM1LjUgMTQuNXQtMTQuNSAzNS41djUwaC0zMXEtMTggMCAtMzIuNSAxMHQtMjAuNSAxOWwtNSAxMGwtMjAxIDk2MWgtNTRxLTIwIDAgLTM1IDE0LjV0LTE1IDM1LjV0MTUgMzUuNXQzNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTc7IiBkPSJNMTIwMCAxMDAwdi0xMDBoLTEyMDB2MTAwaDIwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMzAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41aDUwMHpNMCA4MDBoMTIwMHYtODAwaC0xMjAwdjgwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTE4OyIgZD0iTTIwMCA4MDBsLTIwMCAtNDAwdjYwMGgyMDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDMwMHE0MiAwIDcxIC0yOS41dDI5IC03MC41aDUwMHYtMjAwaC0xMDAwek0xNTAwIDcwMGwtMzAwIC03MDBoLTEyMDBsMzAwIDcwMGgxMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTk7IiBkPSJNNjM1IDExODRsMjMwIC0yNDlxMTQgLTE0IDEwIC0yNC41dC0yNSAtMTAuNWgtMTUwdi02MDFoMTUwcTIxIDAgMjUgLTEwLjV0LTEwIC0yNC41bC0yMzAgLTI0OXEtMTQgLTE1IC0zNSAtMTV0LTM1IDE1bC0yMzAgMjQ5cS0xNCAxNCAtMTAgMjQuNXQyNSAxMC41aDE1MHY2MDFoLTE1MHEtMjEgMCAtMjUgMTAuNXQxMCAyNC41bDIzMCAyNDlxMTQgMTUgMzUgMTV0MzUgLTE1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjA7IiBkPSJNOTM2IDg2NGwyNDkgLTIyOXExNCAtMTUgMTQgLTM1LjV0LTE0IC0zNS41bC0yNDkgLTIyOXEtMTUgLTE1IC0yNS41IC0xMC41dC0xMC41IDI0LjV2MTUxaC02MDB2LTE1MXEwIC0yMCAtMTAuNSAtMjQuNXQtMjUuNSAxMC41bC0yNDkgMjI5cS0xNCAxNSAtMTQgMzUuNXQxNCAzNS41bDI0OSAyMjlxMTUgMTUgMjUuNSAxMC41dDEwLjUgLTI1LjV2LTE0OWg2MDB2MTQ5cTAgMjEgMTAuNSAyNS41dDI1LjUgLTEwLjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyMTsiIGQ9Ik0xMTY5IDQwMGwtMTcyIDczMnEtNSAyMyAtMjMgNDUuNXQtMzggMjIuNWgtNjcycS0yMCAwIC0zOCAtMjB0LTIzIC00MWwtMTcyIC03MzloMTEzOHpNMTEwMCAzMDBoLTEwMDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTEwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoMTAwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2MTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41ek04MDAgMTAwdjEwMGgxMDB2LTEwMGgtMTAwIHpNMTAwMCAxMDB2MTAwaDEwMHYtMTAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyMjsiIGQ9Ik0xMTUwIDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTg1MHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNXQtMzUuNSAxNC41dC0xNC41IDM1LjV2ODUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMTAwMCAyMDBsLTY3NSAyMDBoLTM4bDQ3IC0yNzZxMyAtMTYgLTUuNSAtMjB0LTI5LjUgLTRoLTdoLTg0cS0yMCAwIC0zNC41IDE0dC0xOC41IDM1cS01NSAzMzcgLTU1IDM1MXYyNTB2NnEwIDE2IDEgMjMuNXQ2LjUgMTQgdDE3LjUgNi41aDIwMGw2NzUgMjUwdi04NTB6TTAgNzUwdi0yNTBxLTQgMCAtMTEgMC41dC0yNCA2dC0zMCAxNXQtMjQgMzB0LTExIDQ4LjV2NTBxMCAyNiAxMC41IDQ2dDI1IDMwdDI5IDE2dDI1LjUgN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTIzOyIgZD0iTTU1MyAxMjAwaDk0cTIwIDAgMjkgLTEwLjV0MyAtMjkuNWwtMTggLTM3cTgzIC0xOSAxNDQgLTgyLjV0NzYgLTE0MC41bDYzIC0zMjdsMTE4IC0xNzNoMTdxMTkgMCAzMyAtMTQuNXQxNCAtMzV0LTEzIC00MC41dC0zMSAtMjdxLTggLTQgLTIzIC05LjV0LTY1IC0xOS41dC0xMDMgLTI1dC0xMzIuNSAtMjB0LTE1OC41IC05cS01NyAwIC0xMTUgNXQtMTA0IDEydC04OC41IDE1LjV0LTczLjUgMTcuNXQtNTQuNSAxNnQtMzUuNSAxMmwtMTEgNCBxLTE4IDggLTMxIDI4dC0xMyA0MC41dDE0IDM1dDMzIDE0LjVoMTdsMTE4IDE3M2w2MyAzMjdxMTUgNzcgNzYgMTQwdDE0NCA4M2wtMTggMzJxLTYgMTkgMy41IDMydDI4LjUgMTN6TTQ5OCAxMTBxNTAgLTYgMTAyIC02cTUzIDAgMTAyIDZxLTEyIC00OSAtMzkuNSAtNzkuNXQtNjIuNSAtMzAuNXQtNjMgMzAuNXQtMzkgNzkuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTI0OyIgZD0iTTgwMCA5NDZsMjI0IDc4bC03OCAtMjI0bDIzNCAtNDVsLTE4MCAtMTU1bDE4MCAtMTU1bC0yMzQgLTQ1bDc4IC0yMjRsLTIyNCA3OGwtNDUgLTIzNGwtMTU1IDE4MGwtMTU1IC0xODBsLTQ1IDIzNGwtMjI0IC03OGw3OCAyMjRsLTIzNCA0NWwxODAgMTU1bC0xODAgMTU1bDIzNCA0NWwtNzggMjI0bDIyNCAtNzhsNDUgMjM0bDE1NSAtMTgwbDE1NSAxODB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyNTsiIGQ9Ik02NTAgMTIwMGg1MHE0MCAwIDcwIC00MC41dDMwIC04NC41di0xNTBsLTI4IC0xMjVoMzI4cTQwIDAgNzAgLTQwLjV0MzAgLTg0LjV2LTEwMHEwIC00NSAtMjkgLTc0bC0yMzggLTM0NHEtMTYgLTI0IC0zOCAtNDAuNXQtNDUgLTE2LjVoLTI1MHEtNyAwIC00MiAyNXQtNjYgNTBsLTMxIDI1aC02MXEtNDUgMCAtNzIuNSAxOHQtMjcuNSA1N3Y0MDBxMCAzNiAyMCA2M2wxNDUgMTk2bDk2IDE5OHExMyAyOCAzNy41IDQ4dDUxLjUgMjB6IE02NTAgMTEwMGwtMTAwIC0yMTJsLTE1MCAtMjEzdi0zNzVoMTAwbDEzNiAtMTAwaDIxNGwyNTAgMzc1djEyNWgtNDUwbDUwIDIyNXYxNzVoLTUwek01MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTI2OyIgZD0iTTYwMCAxMTAwaDI1MHEyMyAwIDQ1IC0xNi41dDM4IC00MC41bDIzOCAtMzQ0cTI5IC0yOSAyOSAtNzR2LTEwMHEwIC00NCAtMzAgLTg0LjV0LTcwIC00MC41aC0zMjhxMjggLTExOCAyOCAtMTI1di0xNTBxMCAtNDQgLTMwIC04NC41dC03MCAtNDAuNWgtNTBxLTI3IDAgLTUxLjUgMjB0LTM3LjUgNDhsLTk2IDE5OGwtMTQ1IDE5NnEtMjAgMjcgLTIwIDYzdjQwMHEwIDM5IDI3LjUgNTd0NzIuNSAxOGg2MXExMjQgMTAwIDEzOSAxMDB6IE01MCAxMDAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djUwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTYzNiAxMDAwbC0xMzYgLTEwMGgtMTAwdi0zNzVsMTUwIC0yMTNsMTAwIC0yMTJoNTB2MTc1bC01MCAyMjVoNDUwdjEyNWwtMjUwIDM3NWgtMjE0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjc7IiBkPSJNMzU2IDg3M2wzNjMgMjMwcTMxIDE2IDUzIC02bDExMCAtMTEycTEzIC0xMyAxMy41IC0zMnQtMTEuNSAtMzRsLTg0IC0xMjFoMzAycTg0IDAgMTM4IC0zOHQ1NCAtMTEwdC01NSAtMTExdC0xMzkgLTM5aC0xMDZsLTEzMSAtMzM5cS02IC0yMSAtMTkuNSAtNDF0LTI4LjUgLTIwaC0zNDJxLTcgMCAtOTAgODF0LTgzIDk0djUyNXEwIDE3IDE0IDM1LjV0MjggMjguNXpNNDAwIDc5MnYtNTAzbDEwMCAtODloMjkzbDEzMSAzMzkgcTYgMjEgMTkuNSA0MXQyOC41IDIwaDIwM3EyMSAwIDMwLjUgMjV0MC41IDUwdC0zMSAyNWgtNDU2aC03aC02aC01LjV0LTYgMC41dC01IDEuNXQtNSAydC00IDIuNXQtNCA0dC0yLjUgNC41cS0xMiAyNSA1IDQ3bDE0NiAxODNsLTg2IDgzek01MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NTAwIHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyODsiIGQ9Ik00NzUgMTEwM2wzNjYgLTIzMHEyIC0xIDYgLTMuNXQxNCAtMTAuNXQxOCAtMTYuNXQxNC41IC0yMHQ2LjUgLTIyLjV2LTUyNXEwIC0xMyAtODYgLTk0dC05MyAtODFoLTM0MnEtMTUgMCAtMjguNSAyMHQtMTkuNSA0MWwtMTMxIDMzOWgtMTA2cS04NSAwIC0xMzkuNSAzOXQtNTQuNSAxMTF0NTQgMTEwdDEzOCAzOGgzMDJsLTg1IDEyMXEtMTEgMTUgLTEwLjUgMzR0MTMuNSAzMmwxMTAgMTEycTIyIDIyIDUzIDZ6TTM3MCA5NDVsMTQ2IC0xODMgcTE3IC0yMiA1IC00N3EtMiAtMiAtMy41IC00LjV0LTQgLTR0LTQgLTIuNXQtNSAtMnQtNSAtMS41dC02IC0wLjVoLTZoLTYuNWgtNmgtNDc1di0xMDBoMjIxcTE1IDAgMjkgLTIwdDIwIC00MWwxMzAgLTMzOWgyOTRsMTA2IDg5djUwM2wtMzQyIDIzNnpNMTA1MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjUgdjUwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyOTsiIGQ9Ik01NTAgMTI5NHE3MiAwIDExMSAtNTV0MzkgLTEzOXYtMTA2bDMzOSAtMTMxcTIxIC02IDQxIC0xOS41dDIwIC0yOC41di0zNDJxMCAtNyAtODEgLTkwdC05NCAtODNoLTUyNXEtMTcgMCAtMzUuNSAxNHQtMjguNSAyOGwtOSAxNGwtMjMwIDM2M3EtMTYgMzEgNiA1M2wxMTIgMTEwcTEzIDEzIDMyIDEzLjV0MzQgLTExLjVsMTIxIC04NHYzMDJxMCA4NCAzOCAxMzh0MTEwIDU0ek02MDAgOTcydjIwM3EwIDIxIC0yNSAzMC41dC01MCAwLjUgdC0yNSAtMzF2LTQ1NnYtN3YtNnYtNS41dC0wLjUgLTZ0LTEuNSAtNXQtMiAtNXQtMi41IC00dC00IC00dC00LjUgLTIuNXEtMjUgLTEyIC00NyA1bC0xODMgMTQ2bC04MyAtODZsMjM2IC0zMzloNTAzbDg5IDEwMHYyOTNsLTMzOSAxMzFxLTIxIDYgLTQxIDE5LjV0LTIwIDI4LjV6TTQ1MCAyMDBoNTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTUwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzMDsiIGQ9Ik0zNTAgMTEwMGg1MDBxMjEgMCAzNS41IDE0LjV0MTQuNSAzNS41djEwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtNTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDBxMCAtMjEgMTQuNSAtMzUuNXQzNS41IC0xNC41ek02MDAgMzA2di0xMDZxMCAtODQgLTM5IC0xMzl0LTExMSAtNTV0LTExMCA1NHQtMzggMTM4djMwMmwtMTIxIC04NHEtMTUgLTEyIC0zNCAtMTEuNXQtMzIgMTMuNWwtMTEyIDExMCBxLTIyIDIyIC02IDUzbDIzMCAzNjNxMSAyIDMuNSA2dDEwLjUgMTMuNXQxNi41IDE3dDIwIDEzLjV0MjIuNSA2aDUyNXExMyAwIDk0IC04M3Q4MSAtOTB2LTM0MnEwIC0xNSAtMjAgLTI4LjV0LTQxIC0xOS41ek0zMDggOTAwbC0yMzYgLTMzOWw4MyAtODZsMTgzIDE0NnEyMiAxNyA0NyA1cTIgLTEgNC41IC0yLjV0NCAtNHQyLjUgLTR0MiAtNXQxLjUgLTV0MC41IC02di01LjV2LTZ2LTd2LTQ1NnEwIC0yMiAyNSAtMzF0NTAgMC41dDI1IDMwLjUgdjIwM3EwIDE1IDIwIDI4LjV0NDEgMTkuNWwzMzkgMTMxdjI5M2wtODkgMTAwaC01MDN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzMTsiIGQ9Ik02MDAgMTE3OHExMTggMCAyMjUgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNXQtNDUuNSAtMjI1dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjUgLTQ1LjV0LTIyNSA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjV0NDUuNSAyMjV0MTIzIDE4NC41dDE4NC41IDEyM3QyMjUgNDUuNXpNOTE0IDYzMmwtMjc1IDIyM3EtMTYgMTMgLTI3LjUgOHQtMTEuNSAtMjZ2LTEzN2gtMjc1IHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTE1MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDI3NXYtMTM3cTAgLTIxIDExLjUgLTI2dDI3LjUgOGwyNzUgMjIzcTE2IDEzIDE2IDMydC0xNiAzMnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTMyOyIgZD0iTTYwMCAxMTc4cTExOCAwIDIyNSAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI1dC00NS41IC0yMjV0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNSAtNDUuNXQtMjI1IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNXQ0NS41IDIyNXQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNSA0NS41ek01NjEgODU1bC0yNzUgLTIyM3EtMTYgLTEzIC0xNiAtMzJ0MTYgLTMybDI3NSAtMjIzcTE2IC0xMyAyNy41IC04IHQxMS41IDI2djEzN2gyNzVxMTAgMCAxNy41IDcuNXQ3LjUgMTcuNXYxNTBxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41aC0yNzV2MTM3cTAgMjEgLTExLjUgMjZ0LTI3LjUgLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzMzsiIGQ9Ik02MDAgMTE3OHExMTggMCAyMjUgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNXQtNDUuNSAtMjI1dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjUgLTQ1LjV0LTIyNSA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjV0NDUuNSAyMjV0MTIzIDE4NC41dDE4NC41IDEyM3QyMjUgNDUuNXpNODU1IDYzOWwtMjIzIDI3NXEtMTMgMTYgLTMyIDE2dC0zMiAtMTZsLTIyMyAtMjc1cS0xMyAtMTYgLTggLTI3LjUgdDI2IC0xMS41aDEzN3YtMjc1cTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2Mjc1aDEzN3EyMSAwIDI2IDExLjV0LTggMjcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTM0OyIgZD0iTTYwMCAxMTc4cTExOCAwIDIyNSAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI1dC00NS41IC0yMjV0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNSAtNDUuNXQtMjI1IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNXQ0NS41IDIyNXQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNSA0NS41ek02NzUgOTAwaC0xNTBxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di0yNzVoLTEzN3EtMjEgMCAtMjYgLTExLjUgdDggLTI3LjVsMjIzIC0yNzVxMTMgLTE2IDMyIC0xNnQzMiAxNmwyMjMgMjc1cTEzIDE2IDggMjcuNXQtMjYgMTEuNWgtMTM3djI3NXEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzNTsiIGQ9Ik02MDAgMTE3NnExMTYgMCAyMjIuNSAtNDZ0MTg0IC0xMjMuNXQxMjMuNSAtMTg0dDQ2IC0yMjIuNXQtNDYgLTIyMi41dC0xMjMuNSAtMTg0dC0xODQgLTEyMy41dC0yMjIuNSAtNDZ0LTIyMi41IDQ2dC0xODQgMTIzLjV0LTEyMy41IDE4NHQtNDYgMjIyLjV0NDYgMjIyLjV0MTIzLjUgMTg0dDE4NCAxMjMuNXQyMjIuNSA0NnpNNjI3IDExMDFxLTE1IC0xMiAtMzYuNSAtMjAuNXQtMzUuNSAtMTJ0LTQzIC04dC0zOSAtNi41IHEtMTUgLTMgLTQ1LjUgMHQtNDUuNSAtMnEtMjAgLTcgLTUxLjUgLTI2LjV0LTM0LjUgLTM0LjVxLTMgLTExIDYuNSAtMjIuNXQ4LjUgLTE4LjVxLTMgLTM0IC0yNy41IC05MXQtMjkuNSAtNzlxLTkgLTM0IDUgLTkzdDggLTg3cTAgLTkgMTcgLTQ0LjV0MTYgLTU5LjVxMTIgMCAyMyAtNXQyMy41IC0xNXQxOS41IC0xNHExNiAtOCAzMyAtMTV0NDAuNSAtMTV0MzQuNSAtMTJxMjEgLTkgNTIuNSAtMzJ0NjAgLTM4dDU3LjUgLTExIHE3IC0xNSAtMyAtMzR0LTIyLjUgLTQwdC05LjUgLTM4cTEzIC0yMSAyMyAtMzQuNXQyNy41IC0yNy41dDM2LjUgLTE4cTAgLTcgLTMuNSAtMTZ0LTMuNSAtMTR0NSAtMTdxMTA0IC0yIDIyMSAxMTJxMzAgMjkgNDYuNSA0N3QzNC41IDQ5dDIxIDYzcS0xMyA4IC0zNyA4LjV0LTM2IDcuNXEtMTUgNyAtNDkuNSAxNXQtNTEuNSAxOXEtMTggMCAtNDEgLTAuNXQtNDMgLTEuNXQtNDIgLTYuNXQtMzggLTE2LjVxLTUxIC0zNSAtNjYgLTEyIHEtNCAxIC0zLjUgMjUuNXQwLjUgMjUuNXEtNiAxMyAtMjYuNSAxNy41dC0yNC41IDYuNXExIDE1IC0wLjUgMzAuNXQtNyAyOHQtMTguNSAxMS41dC0zMSAtMjFxLTIzIC0yNSAtNDIgNHEtMTkgMjggLTggNThxNiAxNiAyMiAyMnE2IC0xIDI2IC0xLjV0MzMuNSAtNHQxOS41IC0xMy41cTcgLTEyIDE4IC0yNHQyMS41IC0yMC41dDIwIC0xNXQxNS41IC0xMC41bDUgLTNxMiAxMiA3LjUgMzAuNXQ4IDM0LjV0LTAuNSAzMnEtMyAxOCAzLjUgMjkgdDE4IDIyLjV0MTUuNSAyNC41cTYgMTQgMTAuNSAzNXQ4IDMxdDE1LjUgMjIuNXQzNCAyMi41cS02IDE4IDEwIDM2cTggMCAyNCAtMS41dDI0LjUgLTEuNXQyMCA0LjV0MjAuNSAxNS41cS0xMCAyMyAtMzEgNDIuNXQtMzcuNSAyOS41dC00OSAyN3QtNDMuNSAyM3EwIDEgMiA4dDMgMTEuNXQxLjUgMTAuNXQtMSA5LjV0LTQuNSA0LjVxMzEgLTEzIDU4LjUgLTE0LjV0MzguNSAyLjVsMTIgNXE1IDI4IC05LjUgNDZ0LTM2LjUgMjR0LTUwIDE1IHQtNDEgMjBxLTE4IC00IC0zNyAwek02MTMgOTk0cTAgLTE3IDggLTQydDE3IC00NXQ5IC0yM3EtOCAxIC0zOS41IDUuNXQtNTIuNSAxMHQtMzcgMTYuNXEzIDExIDE2IDI5LjV0MTYgMjUuNXExMCAtMTAgMTkgLTEwdDE0IDZ0MTMuNSAxNC41dDE2LjUgMTIuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTM2OyIgZD0iTTc1NiAxMTU3cTE2NCA5MiAzMDYgLTlsLTI1OSAtMTM4bDE0NSAtMjMybDI1MSAxMjZxNiAtODkgLTM0IC0xNTYuNXQtMTE3IC0xMTAuNXEtNjAgLTM0IC0xMjcgLTM5LjV0LTEyNiAxNi41bC01OTYgLTU5NnEtMTUgLTE2IC0zNi41IC0xNnQtMzYuNSAxNmwtMTExIDExMHEtMTUgMTUgLTE1IDM2LjV0MTUgMzcuNWw2MDAgNTk5cS0zNCAxMDEgNS41IDIwMS41dDEzNS41IDE1NC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMzc7IiBob3Jpei1hZHYteD0iMTIyMCIgZD0iTTEwMCAxMTk2aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNMTEwMCAxMDk2aC0yMDB2LTEwMGgyMDB2MTAwek0xMDAgNzk2aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMCBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djEwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTExMDAgNjk2aC01MDB2LTEwMGg1MDB2MTAwek0xMDAgMzk2aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNMTEwMCAyOTZoLTMwMHYtMTAwaDMwMHYxMDB6ICIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMzg7IiBkPSJNMTUwIDEyMDBoOTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41dC0xNC41IC0zNS41dC0zNS41IC0xNC41aC05MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTcwMCA1MDB2LTMwMGwtMjAwIC0yMDB2NTAwbC0zNTAgNTAwaDkwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTM5OyIgZD0iTTUwMCAxMjAwaDIwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtMTAwaDMwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNDAwaC01MDB2MTAwaC0yMDB2LTEwMGgtNTAwdjQwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMzAwdjEwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTUwMCAxMTAwdi0xMDBoMjAwdjEwMGgtMjAwek0xMjAwIDQwMHYtMjAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC0xMDAwIHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV2MjAwaDEyMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0MDsiIGQ9Ik01MCAxMjAwaDMwMHEyMSAwIDI1IC0xMC41dC0xMCAtMjQuNWwtOTQgLTk0bDE5OSAtMTk5cTcgLTggNyAtMTh0LTcgLTE4bC0xMDYgLTEwNnEtOCAtNyAtMTggLTd0LTE4IDdsLTE5OSAxOTlsLTk0IC05NHEtMTQgLTE0IC0yNC41IC0xMHQtMTAuNSAyNXYzMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04NTAgMTIwMGgzMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTMwMHEwIC0yMSAtMTAuNSAtMjV0LTI0LjUgMTBsLTk0IDk0IGwtMTk5IC0xOTlxLTggLTcgLTE4IC03dC0xOCA3bC0xMDYgMTA2cS03IDggLTcgMTh0NyAxOGwxOTkgMTk5bC05NCA5NHEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNXpNMzY0IDQ3MGwxMDYgLTEwNnE3IC04IDcgLTE4dC03IC0xOGwtMTk5IC0xOTlsOTQgLTk0cTE0IC0xNCAxMCAtMjQuNXQtMjUgLTEwLjVoLTMwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MzAwcTAgMjEgMTAuNSAyNXQyNC41IC0xMGw5NCAtOTRsMTk5IDE5OSBxOCA3IDE4IDd0MTggLTd6TTEwNzEgMjcxbDk0IDk0cTE0IDE0IDI0LjUgMTB0MTAuNSAtMjV2LTMwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzAwcS0yMSAwIC0yNSAxMC41dDEwIDI0LjVsOTQgOTRsLTE5OSAxOTlxLTcgOCAtNyAxOHQ3IDE4bDEwNiAxMDZxOCA3IDE4IDd0MTggLTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0MTsiIGQ9Ik01OTYgMTE5MnExMjEgMCAyMzEuNSAtNDcuNXQxOTAgLTEyN3QxMjcgLTE5MHQ0Ny41IC0yMzEuNXQtNDcuNSAtMjMxLjV0LTEyNyAtMTkwLjV0LTE5MCAtMTI3dC0yMzEuNSAtNDd0LTIzMS41IDQ3dC0xOTAuNSAxMjd0LTEyNyAxOTAuNXQtNDcgMjMxLjV0NDcgMjMxLjV0MTI3IDE5MHQxOTAuNSAxMjd0MjMxLjUgNDcuNXpNNTk2IDEwMTBxLTExMiAwIC0yMDcuNSAtNTUuNXQtMTUxIC0xNTF0LTU1LjUgLTIwNy41dDU1LjUgLTIwNy41IHQxNTEgLTE1MXQyMDcuNSAtNTUuNXQyMDcuNSA1NS41dDE1MSAxNTF0NTUuNSAyMDcuNXQtNTUuNSAyMDcuNXQtMTUxIDE1MXQtMjA3LjUgNTUuNXpNNDU0LjUgOTA1cTIyLjUgMCAzOC41IC0xNnQxNiAtMzguNXQtMTYgLTM5dC0zOC41IC0xNi41dC0zOC41IDE2LjV0LTE2IDM5dDE2IDM4LjV0MzguNSAxNnpNNzU0LjUgOTA1cTIyLjUgMCAzOC41IC0xNnQxNiAtMzguNXQtMTYgLTM5dC0zOCAtMTYuNXEtMTQgMCAtMjkgMTBsLTU1IC0xNDUgcTE3IC0yMyAxNyAtNTFxMCAtMzYgLTI1LjUgLTYxLjV0LTYxLjUgLTI1LjV0LTYxLjUgMjUuNXQtMjUuNSA2MS41cTAgMzIgMjAuNSA1Ni41dDUxLjUgMjkuNWwxMjIgMTI2bDEgMXEtOSAxNCAtOSAyOHEwIDIzIDE2IDM5dDM4LjUgMTZ6TTM0NS41IDcwOXEyMi41IDAgMzguNSAtMTZ0MTYgLTM4LjV0LTE2IC0zOC41dC0zOC41IC0xNnQtMzguNSAxNnQtMTYgMzguNXQxNiAzOC41dDM4LjUgMTZ6TTg1NC41IDcwOXEyMi41IDAgMzguNSAtMTYgdDE2IC0zOC41dC0xNiAtMzguNXQtMzguNSAtMTZ0LTM4LjUgMTZ0LTE2IDM4LjV0MTYgMzguNXQzOC41IDE2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDI7IiBkPSJNNTQ2IDE3M2w0NjkgNDcwcTkxIDkxIDk5IDE5MnE3IDk4IC01MiAxNzUuNXQtMTU0IDk0LjVxLTIyIDQgLTQ3IDRxLTM0IDAgLTY2LjUgLTEwdC01Ni41IC0yM3QtNTUuNSAtMzh0LTQ4IC00MS41dC00OC41IC00Ny41cS0zNzYgLTM3NSAtMzkxIC0zOTBxLTMwIC0yNyAtNDUgLTQxLjV0LTM3LjUgLTQxdC0zMiAtNDYuNXQtMTYgLTQ3LjV0LTEuNSAtNTYuNXE5IC02MiA1My41IC05NXQ5OS41IC0zM3E3NCAwIDEyNSA1MWw1NDggNTQ4IHEzNiAzNiAyMCA3NXEtNyAxNiAtMjEuNSAyNnQtMzIuNSAxMHEtMjYgMCAtNTAgLTIzcS0xMyAtMTIgLTM5IC0zOGwtMzQxIC0zMzhxLTE1IC0xNSAtMzUuNSAtMTUuNXQtMzQuNSAxMy41dC0xNCAzNC41dDE0IDM0LjVxMzI3IDMzMyAzNjEgMzY3cTM1IDM1IDY3LjUgNTEuNXQ3OC41IDE2LjVxMTQgMCAyOSAtMXE0NCAtOCA3NC41IC0zNS41dDQzLjUgLTY4LjVxMTQgLTQ3IDIgLTk2LjV0LTQ3IC04NC41cS0xMiAtMTEgLTMyIC0zMiB0LTc5LjUgLTgxdC0xMTQuNSAtMTE1dC0xMjQuNSAtMTIzLjV0LTEyMyAtMTE5LjV0LTk2LjUgLTg5dC01NyAtNDVxLTU2IC0yNyAtMTIwIC0yN3EtNzAgMCAtMTI5IDMydC05MyA4OXEtNDggNzggLTM1IDE3M3Q4MSAxNjNsNTExIDUxMXE3MSA3MiAxMTEgOTZxOTEgNTUgMTk4IDU1cTgwIDAgMTUyIC0zM3E3OCAtMzYgMTI5LjUgLTEwM3Q2Ni41IC0xNTRxMTcgLTkzIC0xMSAtMTgzLjV0LTk0IC0xNTYuNWwtNDgyIC00NzYgcS0xNSAtMTUgLTM2IC0xNnQtMzcgMTR0LTE3LjUgMzR0MTQuNSAzNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTQzOyIgZD0iTTY0OSA5NDlxNDggNjggMTA5LjUgMTA0dDEyMS41IDM4LjV0MTE4LjUgLTIwdDEwMi41IC02NHQ3MSAtMTAwLjV0MjcgLTEyM3EwIC01NyAtMzMuNSAtMTE3LjV0LTk0IC0xMjQuNXQtMTI2LjUgLTEyNy41dC0xNTAgLTE1Mi41dC0xNDYgLTE3NHEtNjIgODUgLTE0NS41IDE3NHQtMTUwIDE1Mi41dC0xMjYuNSAxMjcuNXQtOTMuNSAxMjQuNXQtMzMuNSAxMTcuNXEwIDY0IDI4IDEyM3Q3MyAxMDAuNXQxMDQgNjR0MTE5IDIwIHQxMjAuNSAtMzguNXQxMDQuNSAtMTA0ek04OTYgOTcycS0zMyAwIC02NC41IC0xOXQtNTYuNSAtNDZ0LTQ3LjUgLTUzLjV0LTQzLjUgLTQ1LjV0LTM3LjUgLTE5dC0zNiAxOXQtNDAgNDUuNXQtNDMgNTMuNXQtNTQgNDZ0LTY1LjUgMTlxLTY3IDAgLTEyMi41IC01NS41dC01NS41IC0xMzIuNXEwIC0yMyAxMy41IC01MXQ0NiAtNjV0NTcuNSAtNjN0NzYgLTc1bDIyIC0yMnExNSAtMTQgNDQgLTQ0dDUwLjUgLTUxdDQ2IC00NHQ0MSAtMzV0MjMgLTEyIHQyMy41IDEydDQyLjUgMzZ0NDYgNDR0NTIuNSA1MnQ0NCA0M3E0IDQgMTIgMTNxNDMgNDEgNjMuNSA2MnQ1MiA1NXQ0NiA1NXQyNiA0NnQxMS41IDQ0cTAgNzkgLTUzIDEzMy41dC0xMjAgNTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTQ0OyIgZD0iTTc3Ni41IDEyMTRxOTMuNSAwIDE1OS41IC02NmwxNDEgLTE0MXE2NiAtNjYgNjYgLTE2MHEwIC00MiAtMjggLTk1LjV0LTYyIC04Ny41bC0yOSAtMjlxLTMxIDUzIC03NyA5OWwtMTggMThsOTUgOTVsLTI0NyAyNDhsLTM4OSAtMzg5bDIxMiAtMjEybC0xMDUgLTEwNmwtMTkgMThsLTE0MSAxNDFxLTY2IDY2IC02NiAxNTl0NjYgMTU5bDI4MyAyODNxNjUgNjYgMTU4LjUgNjZ6TTYwMCA3MDZsMTA1IDEwNXExMCAtOCAxOSAtMTdsMTQxIC0xNDEgcTY2IC02NiA2NiAtMTU5dC02NiAtMTU5bC0yODMgLTI4M3EtNjYgLTY2IC0xNTkgLTY2dC0xNTkgNjZsLTE0MSAxNDFxLTY2IDY2IC02NiAxNTkuNXQ2NiAxNTkuNWw1NSA1NXEyOSAtNTUgNzUgLTEwMmwxOCAtMTdsLTk1IC05NWwyNDcgLTI0OGwzODkgMzg5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDU7IiBkPSJNNjAzIDEyMDBxODUgMCAxNjIgLTE1dDEyNyAtMzh0NzkgLTQ4dDI5IC00NnYtOTUzcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC02MDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djk1M3EwIDIxIDMwIDQ2LjV0ODEgNDh0MTI5IDM3LjV0MTYzIDE1ek0zMDAgMTAwMHYtNzAwaDYwMHY3MDBoLTYwMHpNNjAwIDI1NHEtNDMgMCAtNzMuNSAtMzAuNXQtMzAuNSAtNzMuNXQzMC41IC03My41dDczLjUgLTMwLjV0NzMuNSAzMC41IHQzMC41IDczLjV0LTMwLjUgNzMuNXQtNzMuNSAzMC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDY7IiBkPSJNOTAyIDExODVsMjgzIC0yODJxMTUgLTE1IDE1IC0zNnQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNXQtMzUgMTVsLTM2IDM1bC0yNzkgLTI2N3YtMzAwbC0yMTIgMjEwbC0zMDggLTMwN2wtMjgwIC0yMDNsMjAzIDI4MGwzMDcgMzA4bC0yMTAgMjEyaDMwMGwyNjcgMjc5bC0zNSAzNnEtMTUgMTQgLTE1IDM1dDE0LjUgMzUuNXQzNS41IDE0LjV0MzUgLTE1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDg7IiBkPSJNNzAwIDEyNDh2LTc4cTM4IC01IDcyLjUgLTE0LjV0NzUuNSAtMzEuNXQ3MSAtNTMuNXQ1MiAtODR0MjQgLTExOC41aC0xNTlxLTQgMzYgLTEwLjUgNTl0LTIxIDQ1dC00MCAzNS41dC02NC41IDIwLjV2LTMwN2w2NCAtMTNxMzQgLTcgNjQgLTE2LjV0NzAgLTMydDY3LjUgLTUyLjV0NDcuNSAtODB0MjAgLTExMnEwIC0xMzkgLTg5IC0yMjR0LTI0NCAtOTd2LTc3aC0xMDB2NzlxLTE1MCAxNiAtMjM3IDEwM3EtNDAgNDAgLTUyLjUgOTMuNSB0LTE1LjUgMTM5LjVoMTM5cTUgLTc3IDQ4LjUgLTEyNnQxMTcuNSAtNjV2MzM1bC0yNyA4cS00NiAxNCAtNzkgMjYuNXQtNzIgMzZ0LTYzIDUydC00MCA3Mi41dC0xNiA5OHEwIDcwIDI1IDEyNnQ2Ny41IDkydDk0LjUgNTd0MTEwIDI3djc3aDEwMHpNNjAwIDc1NHYyNzRxLTI5IC00IC01MCAtMTF0LTQyIC0yMS41dC0zMS41IC00MS41dC0xMC41IC02NXEwIC0yOSA3IC01MC41dDE2LjUgLTM0dDI4LjUgLTIyLjV0MzEuNSAtMTR0MzcuNSAtMTAgcTkgLTMgMTMgLTR6TTcwMCA1NDd2LTMxMHEyMiAyIDQyLjUgNi41dDQ1IDE1LjV0NDEuNSAyN3QyOSA0MnQxMiA1OS41dC0xMi41IDU5LjV0LTM4IDQ0LjV0LTUzIDMxdC02Ni41IDI0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0OTsiIGQ9Ik01NjEgMTE5N3E4NCAwIDE2MC41IC00MHQxMjMuNSAtMTA5LjV0NDcgLTE0Ny41aC0xNTNxMCA0MCAtMTkuNSA3MS41dC00OS41IDQ4LjV0LTU5LjUgMjZ0LTU1LjUgOXEtMzcgMCAtNzkgLTE0LjV0LTYyIC0zNS41cS00MSAtNDQgLTQxIC0xMDFxMCAtMjYgMTMuNSAtNjN0MjYuNSAtNjF0MzcgLTY2cTYgLTkgOSAtMTRoMjQxdi0xMDBoLTE5N3E4IC01MCAtMi41IC0xMTV0LTMxLjUgLTk1cS00NSAtNjIgLTk5IC0xMTIgcTM0IDEwIDgzIDE3LjV0NzEgNy41cTMyIDEgMTAyIC0xNnQxMDQgLTE3cTgzIDAgMTM2IDMwbDUwIC0xNDdxLTMxIC0xOSAtNTggLTMwLjV0LTU1IC0xNS41dC00MiAtNC41dC00NiAtMC41cS0yMyAwIC03NiAxN3QtMTExIDMyLjV0LTk2IDExLjVxLTM5IC0zIC04MiAtMTZ0LTY3IC0yNWwtMjMgLTExbC01NSAxNDVxNCAzIDE2IDExdDE1LjUgMTAuNXQxMyA5dDE1LjUgMTJ0MTQuNSAxNHQxNy41IDE4LjVxNDggNTUgNTQgMTI2LjUgdC0zMCAxNDIuNWgtMjIxdjEwMGgxNjZxLTIzIDQ3IC00NCAxMDRxLTcgMjAgLTEyIDQxLjV0LTYgNTUuNXQ2IDY2LjV0MjkuNSA3MC41dDU4LjUgNzFxOTcgODggMjYzIDg4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTA7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTkzNSAxMTg0bDIzMCAtMjQ5cTE0IC0xNCAxMCAtMjQuNXQtMjUgLTEwLjVoLTE1MHYtOTAwaC0yMDB2OTAwaC0xNTBxLTIxIDAgLTI1IDEwLjV0MTAgMjQuNWwyMzAgMjQ5cTE0IDE1IDM1IDE1dDM1IC0xNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTUxOyIgZD0iTTEwMDAgNzAwaC0xMDB2MTAwaC0xMDB2LTEwMGgtMTAwdjUwMGgzMDB2LTUwMHpNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTgwMSAxMTAwdi0yMDBoMTAwdjIwMGgtMTAwek0xMDAwIDM1MGwtMjAwIC0yNTBoMjAwdi0xMDBoLTMwMHYxNTBsMjAwIDI1MGgtMjAwdjEwMGgzMDB2LTE1MHogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1MjsiIGQ9Ik00MDAgMzAwaDE1MHEyMSAwIDI1IC0xMXQtMTAgLTI1bC0yMzAgLTI1MHEtMTQgLTE1IC0zNSAtMTV0LTM1IDE1bC0yMzAgMjUwcS0xNCAxNCAtMTAgMjV0MjUgMTFoMTUwdjkwMGgyMDB2LTkwMHpNMTAwMCAxMDUwbC0yMDAgLTI1MGgyMDB2LTEwMGgtMzAwdjE1MGwyMDAgMjUwaC0yMDB2MTAwaDMwMHYtMTUwek0xMDAwIDBoLTEwMHYxMDBoLTEwMHYtMTAwaC0xMDB2NTAwaDMwMHYtNTAwek04MDEgNDAwdi0yMDBoMTAwdjIwMGgtMTAweiAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTUzOyIgZD0iTTQwMCAzMDBoMTUwcTIxIDAgMjUgLTExdC0xMCAtMjVsLTIzMCAtMjUwcS0xNCAtMTUgLTM1IC0xNXQtMzUgMTVsLTIzMCAyNTBxLTE0IDE0IC0xMCAyNXQyNSAxMWgxNTB2OTAwaDIwMHYtOTAwek0xMDAwIDcwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHpNMTEwMCAwaC0xMDB2MTAwaC0yMDB2NDAwaDMwMHYtNTAwek05MDEgNDAwdi0yMDBoMTAwdjIwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTQ7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTExMDAgNzAwaC0xMDB2MTAwaC0yMDB2NDAwaDMwMHYtNTAwek05MDEgMTEwMHYtMjAwaDEwMHYyMDBoLTEwMHpNMTAwMCAwaC0xMDB2NDAwaC0xMDB2MTAwaDIwMHYtNTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTU7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTkwMCAxMDAwaC0yMDB2MjAwaDIwMHYtMjAwek0xMDAwIDcwMGgtMzAwdjIwMGgzMDB2LTIwMHpNMTEwMCA0MDBoLTQwMHYyMDBoNDAwdi0yMDB6TTEyMDAgMTAwaC01MDB2MjAwaDUwMHYtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTY7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTEyMDAgMTAwMGgtNTAwdjIwMGg1MDB2LTIwMHpNMTEwMCA3MDBoLTQwMHYyMDBoNDAwdi0yMDB6TTEwMDAgNDAwaC0zMDB2MjAwaDMwMHYtMjAwek05MDAgMTAwaC0yMDB2MjAwaDIwMHYtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTc7IiBkPSJNMzUwIDExMDBoNDAwcTE2MiAwIDI1NiAtOTMuNXQ5NCAtMjU2LjV2LTQwMHEwIC0xNjUgLTkzLjUgLTI1Ny41dC0yNTYuNSAtOTIuNWgtNDAwcS0xNjUgMCAtMjU3LjUgOTIuNXQtOTIuNSAyNTcuNXY0MDBxMCAxNjUgOTIuNSAyNTcuNXQyNTcuNSA5Mi41ek04MDAgOTAwaC01MDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNSB2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTg7IiBkPSJNMzUwIDExMDBoNDAwcTE2NSAwIDI1Ny41IC05Mi41dDkyLjUgLTI1Ny41di00MDBxMCAtMTY1IC05Mi41IC0yNTcuNXQtMjU3LjUgLTkyLjVoLTQwMHEtMTYzIDAgLTI1Ni41IDkyLjV0LTkzLjUgMjU3LjV2NDAwcTAgMTYzIDk0IDI1Ni41dDI1NiA5My41ek04MDAgOTAwaC01MDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNSB2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41ek00NDAgNzcwbDI1MyAtMTkwcTE3IC0xMiAxNyAtMzB0LTE3IC0zMGwtMjUzIC0xOTBxLTE2IC0xMiAtMjggLTYuNXQtMTIgMjYuNXY0MDBxMCAyMSAxMiAyNi41dDI4IC02LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1OTsiIGQ9Ik0zNTAgMTEwMGg0MDBxMTYzIDAgMjU2LjUgLTk0dDkzLjUgLTI1NnYtNDAwcTAgLTE2NSAtOTIuNSAtMjU3LjV0LTI1Ny41IC05Mi41aC00MDBxLTE2NSAwIC0yNTcuNSA5Mi41dC05Mi41IDI1Ny41djQwMHEwIDE2MyA5Mi41IDI1Ni41dDI1Ny41IDkzLjV6TTgwMCA5MDBoLTUwMHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNTAwcTAgLTQxIDI5LjUgLTcwLjV0NzAuNSAtMjkuNWg1MDBxNDEgMCA3MC41IDI5LjV0MjkuNSA3MC41IHY1MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjV6TTM1MCA3MDBoNDAwcTIxIDAgMjYuNSAtMTJ0LTYuNSAtMjhsLTE5MCAtMjUzcS0xMiAtMTcgLTMwIC0xN3QtMzAgMTdsLTE5MCAyNTNxLTEyIDE2IC02LjUgMjh0MjYuNSAxMnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTYwOyIgZD0iTTM1MCAxMTAwaDQwMHExNjUgMCAyNTcuNSAtOTIuNXQ5Mi41IC0yNTcuNXYtNDAwcTAgLTE2MyAtOTIuNSAtMjU2LjV0LTI1Ny41IC05My41aC00MDBxLTE2MyAwIC0yNTYuNSA5NHQtOTMuNSAyNTZ2NDAwcTAgMTY1IDkyLjUgMjU3LjV0MjU3LjUgOTIuNXpNODAwIDkwMGgtNTAwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di01MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDUwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjUgdjUwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNXpNNTgwIDY5M2wxOTAgLTI1M3ExMiAtMTYgNi41IC0yOHQtMjYuNSAtMTJoLTQwMHEtMjEgMCAtMjYuNSAxMnQ2LjUgMjhsMTkwIDI1M3ExMiAxNyAzMCAxN3QzMCAtMTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2MTsiIGQ9Ik01NTAgMTEwMGg0MDBxMTY1IDAgMjU3LjUgLTkyLjV0OTIuNSAtMjU3LjV2LTQwMHEwIC0xNjUgLTkyLjUgLTI1Ny41dC0yNTcuNSAtOTIuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDQ1MHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41aC00NTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0zMzggODY3bDMyNCAtMjg0cTE2IC0xNCAxNiAtMzN0LTE2IC0zM2wtMzI0IC0yODRxLTE2IC0xNCAtMjcgLTl0LTExIDI2djE1MGgtMjUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDI1MHYxNTBxMCAyMSAxMSAyNnQyNyAtOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTYyOyIgZD0iTTc5MyAxMTgybDkgLTlxOCAtMTAgNSAtMjdxLTMgLTExIC03OSAtMjI1LjV0LTc4IC0yMjEuNWwzMDAgMXEyNCAwIDMyLjUgLTE3LjV0LTUuNSAtMzUuNXEtMSAwIC0xMzMuNSAtMTU1dC0yNjcgLTMxMi41dC0xMzguNSAtMTYyLjVxLTEyIC0xNSAtMjYgLTE1aC05bC05IDhxLTkgMTEgLTQgMzJxMiA5IDQyIDEyMy41dDc5IDIyNC41bDM5IDExMGgtMzAycS0yMyAwIC0zMSAxOXEtMTAgMjEgNiA0MXE3NSA4NiAyMDkuNSAyMzcuNSB0MjI4IDI1N3Q5OC41IDExMS41cTkgMTYgMjUgMTZoOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTYzOyIgZD0iTTM1MCAxMTAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00NTBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNDUwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMHEtMTY1IDAgLTI1Ny41IDkyLjV0LTkyLjUgMjU3LjV2NDAwIHEwIDE2NSA5Mi41IDI1Ny41dDI1Ny41IDkyLjV6TTkzOCA4NjdsMzI0IC0yODRxMTYgLTE0IDE2IC0zM3QtMTYgLTMzbC0zMjQgLTI4NHEtMTYgLTE0IC0yNyAtOXQtMTEgMjZ2MTUwaC0yNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjUwdjE1MHEwIDIxIDExIDI2dDI3IC05eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjQ7IiBkPSJNNzUwIDEyMDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MDBxMCAtMjEgLTEwLjUgLTI1dC0yNC41IDEwbC0xMDkgMTA5bC0zMTIgLTMxMnEtMTUgLTE1IC0zNS41IC0xNXQtMzUuNSAxNWwtMTQxIDE0MXEtMTUgMTUgLTE1IDM1LjV0MTUgMzUuNWwzMTIgMzEybC0xMDkgMTA5cS0xNCAxNCAtMTAgMjQuNXQyNSAxMC41ek00NTYgOTAwaC0xNTZxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMCBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDUwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2MTQ4bDIwMCAyMDB2LTI5OHEwIC0xNjUgLTkzLjUgLTI1Ny41dC0yNTYuNSAtOTIuNWgtNDAwcS0xNjUgMCAtMjU3LjUgOTIuNXQtOTIuNSAyNTcuNXY0MDBxMCAxNjUgOTIuNSAyNTcuNXQyNTcuNSA5Mi41aDMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTY1OyIgZD0iTTYwMCAxMTg2cTExOSAwIDIyNy41IC00Ni41dDE4NyAtMTI1dDEyNSAtMTg3dDQ2LjUgLTIyNy41dC00Ni41IC0yMjcuNXQtMTI1IC0xODd0LTE4NyAtMTI1dC0yMjcuNSAtNDYuNXQtMjI3LjUgNDYuNXQtMTg3IDEyNXQtMTI1IDE4N3QtNDYuNSAyMjcuNXQ0Ni41IDIyNy41dDEyNSAxODd0MTg3IDEyNXQyMjcuNSA0Ni41ek02MDAgMTAyMnEtMTE1IDAgLTIxMiAtNTYuNXQtMTUzLjUgLTE1My41dC01Ni41IC0yMTJ0NTYuNSAtMjEyIHQxNTMuNSAtMTUzLjV0MjEyIC01Ni41dDIxMiA1Ni41dDE1My41IDE1My41dDU2LjUgMjEydC01Ni41IDIxMnQtMTUzLjUgMTUzLjV0LTIxMiA1Ni41ek02MDAgNzk0cTgwIDAgMTM3IC01N3Q1NyAtMTM3dC01NyAtMTM3dC0xMzcgLTU3dC0xMzcgNTd0LTU3IDEzN3Q1NyAxMzd0MTM3IDU3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjY7IiBkPSJNNDUwIDEyMDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0zNTBoMjQ1cTIwIDAgMjUgLTExdC05IC0yNmwtMzgzIC00MjZxLTE0IC0xNSAtMzMuNSAtMTV0LTMyLjUgMTVsLTM3OSA0MjZxLTEzIDE1IC04LjUgMjZ0MjUuNSAxMWgyNTB2MzUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMzAwaDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTI1MGgtMTEwMHYyNTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiBNOTAwIDIwMHYtNTBoMTAwdjUwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2NzsiIGQ9Ik01ODMgMTE4MmwzNzggLTQzNXExNCAtMTUgOSAtMzF0LTI2IC0xNmgtMjQ0di0yNTBxMCAtMjAgLTE3IC0zNXQtMzkgLTE1aC0yMDBxLTIwIDAgLTMyIDE0LjV0LTEyIDM1LjV2MjUwaC0yNTBxLTIwIDAgLTI1LjUgMTYuNXQ4LjUgMzEuNWwzODMgNDMxcTE0IDE2IDMzLjUgMTd0MzMuNSAtMTR6TTUwIDMwMGgxMDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yNTBoLTExMDB2MjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXogTTkwMCAyMDB2LTUwaDEwMHY1MGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjg7IiBkPSJNMzk2IDcyM2wzNjkgMzY5cTcgNyAxNy41IDd0MTcuNSAtN2wxMzkgLTEzOXE3IC04IDcgLTE4LjV0LTcgLTE3LjVsLTUyNSAtNTI1cS03IC04IC0xNy41IC04dC0xNy41IDhsLTI5MiAyOTFxLTcgOCAtNyAxOHQ3IDE4bDEzOSAxMzlxOCA3IDE4LjUgN3QxNy41IC03ek01MCAzMDBoMTAwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjUwaC0xMTAwdjI1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTkwMCAyMDB2LTUwaDEwMHY1MCBoLTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTY5OyIgZD0iTTEzNSAxMDIzbDE0MiAxNDJxMTQgMTQgMzUgMTR0MzUgLTE0bDc3IC03N2wtMjEyIC0yMTJsLTc3IDc2cS0xNCAxNSAtMTQgMzZ0MTQgMzV6TTY1NSA4NTVsMjEwIDIxMHExNCAxNCAyNC41IDEwdDEwLjUgLTI1bC0yIC01OTlxLTEgLTIwIC0xNS41IC0zNXQtMzUuNSAtMTVsLTU5NyAtMXEtMjEgMCAtMjUgMTAuNXQxMCAyNC41bDIwOCAyMDhsLTE1NCAxNTVsMjEyIDIxMnpNNTAgMzAwaDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjUgdi0yNTBoLTExMDB2MjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNOTAwIDIwMHYtNTBoMTAwdjUwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3MDsiIGQ9Ik0zNTAgMTIwMGw1OTkgLTJxMjAgLTEgMzUgLTE1LjV0MTUgLTM1LjVsMSAtNTk3cTAgLTIxIC0xMC41IC0yNXQtMjQuNSAxMGwtMjA4IDIwOGwtMTU1IC0xNTRsLTIxMiAyMTJsMTU1IDE1NGwtMjEwIDIxMHEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNXpNNTI0IDUxMmwtNzYgLTc3cS0xNSAtMTQgLTM2IC0xNHQtMzUgMTRsLTE0MiAxNDJxLTE0IDE0IC0xNCAzNXQxNCAzNWw3NyA3N3pNNTAgMzAwaDEwMDBxMjEgMCAzNS41IC0xNC41IHQxNC41IC0zNS41di0yNTBoLTExMDB2MjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNOTAwIDIwMHYtNTBoMTAwdjUwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3MTsiIGQ9Ik0xMjAwIDEwM2wtNDgzIDI3NmwtMzE0IC0zOTl2NDIzaC0zOTlsMTE5NiA3OTZ2LTEwOTZ6TTQ4MyA0MjR2LTIzMGw2ODMgOTUzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzI7IiBkPSJNMTEwMCAxMDAwdi04NTBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTE1MHY0MDBoLTcwMHYtNDAwaC0xNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMDBxMCAyMCAxNC41IDM1dDM1LjUgMTVoMjUwdi0zMDBoNTAwdjMwMGgxMDB6TTcwMCAxMDAwaC0xMDB2MjAwaDEwMHYtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzM7IiBkPSJNMTEwMCAxMDAwbC0yIC0xNDlsLTI5OSAtMjk5bC05NSA5NXEtOSA5IC0yMS41IDl0LTIxLjUgLTlsLTE0OSAtMTQ3aC0zMTJ2LTQwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAwcTAgMjAgMTQuNSAzNXQzNS41IDE1aDI1MHYtMzAwaDUwMHYzMDBoMTAwek03MDAgMTAwMGgtMTAwdjIwMGgxMDB2LTIwMHpNMTEzMiA2MzhsMTA2IC0xMDZxNyAtNyA3IC0xNy41dC03IC0xNy41bC00MjAgLTQyMXEtOCAtNyAtMTggLTcgdC0xOCA3bC0yMDIgMjAzcS04IDcgLTggMTcuNXQ4IDE3LjVsMTA2IDEwNnE3IDggMTcuNSA4dDE3LjUgLThsNzkgLTc5bDI5NyAyOTdxNyA3IDE3LjUgN3QxNy41IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzQ7IiBkPSJNMTEwMCAxMDAwdi0yNjlsLTEwMyAtMTAzbC0xMzQgMTM0cS0xNSAxNSAtMzMuNSAxNi41dC0zNC41IC0xMi41bC0yNjYgLTI2NmgtMzI5di00MDBoLTE1MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwMHEwIDIwIDE0LjUgMzV0MzUuNSAxNWgyNTB2LTMwMGg1MDB2MzAwaDEwMHpNNzAwIDEwMDBoLTEwMHYyMDBoMTAwdi0yMDB6TTEyMDIgNTcybDcwIC03MHExNSAtMTUgMTUgLTM1LjV0LTE1IC0zNS41bC0xMzEgLTEzMSBsMTMxIC0xMzFxMTUgLTE1IDE1IC0zNS41dC0xNSAtMzUuNWwtNzAgLTcwcS0xNSAtMTUgLTM1LjUgLTE1dC0zNS41IDE1bC0xMzEgMTMxbC0xMzEgLTEzMXEtMTUgLTE1IC0zNS41IC0xNXQtMzUuNSAxNWwtNzAgNzBxLTE1IDE1IC0xNSAzNS41dDE1IDM1LjVsMTMxIDEzMWwtMTMxIDEzMXEtMTUgMTUgLTE1IDM1LjV0MTUgMzUuNWw3MCA3MHExNSAxNSAzNS41IDE1dDM1LjUgLTE1bDEzMSAtMTMxbDEzMSAxMzFxMTUgMTUgMzUuNSAxNSB0MzUuNSAtMTV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NTsiIGQ9Ik0xMTAwIDEwMDB2LTMwMGgtMzUwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xNTBoLTUwMHYtNDAwaC0xNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMDBxMCAyMCAxNC41IDM1dDM1LjUgMTVoMjUwdi0zMDBoNTAwdjMwMGgxMDB6TTcwMCAxMDAwaC0xMDB2MjAwaDEwMHYtMjAwek04NTAgNjAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjUwaDE1MHEyMSAwIDI1IC0xMC41dC0xMCAtMjQuNSBsLTIzMCAtMjMwcS0xNCAtMTQgLTM1IC0xNHQtMzUgMTRsLTIzMCAyMzBxLTE0IDE0IC0xMCAyNC41dDI1IDEwLjVoMTUwdjI1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NjsiIGQ9Ik0xMTAwIDEwMDB2LTQwMGwtMTY1IDE2NXEtMTQgMTUgLTM1IDE1dC0zNSAtMTVsLTI2MyAtMjY1aC00MDJ2LTQwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAwcTAgMjAgMTQuNSAzNXQzNS41IDE1aDI1MHYtMzAwaDUwMHYzMDBoMTAwek03MDAgMTAwMGgtMTAwdjIwMGgxMDB2LTIwMHpNOTM1IDU2NWwyMzAgLTIyOXExNCAtMTUgMTAgLTI1LjV0LTI1IC0xMC41aC0xNTB2LTI1MHEwIC0yMCAtMTQuNSAtMzUgdC0zNS41IC0xNWgtMTAwcS0yMSAwIC0zNS41IDE1dC0xNC41IDM1djI1MGgtMTUwcS0yMSAwIC0yNSAxMC41dDEwIDI1LjVsMjMwIDIyOXExNCAxNSAzNSAxNXQzNSAtMTV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NzsiIGQ9Ik01MCAxMTAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTE1MGgtMTIwMHYxNTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMjAwIDgwMHYtNTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY1NTBoMTIwMHpNMTAwIDUwMHYtMjAwaDQwMHYyMDBoLTQwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTc4OyIgZD0iTTkzNSAxMTY1bDI0OCAtMjMwcTE0IC0xNCAxNCAtMzV0LTE0IC0zNWwtMjQ4IC0yMzBxLTE0IC0xNCAtMjQuNSAtMTB0LTEwLjUgMjV2MTUwaC00MDB2MjAwaDQwMHYxNTBxMCAyMSAxMC41IDI1dDI0LjUgLTEwek0yMDAgODAwaC01MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg1MHYtMjAwek00MDAgODAwaC0xMDB2MjAwaDEwMHYtMjAwek0xOCA0MzVsMjQ3IDIzMCBxMTQgMTQgMjQuNSAxMHQxMC41IC0yNXYtMTUwaDQwMHYtMjAwaC00MDB2LTE1MHEwIC0yMSAtMTAuNSAtMjV0LTI0LjUgMTBsLTI0NyAyMzBxLTE1IDE0IC0xNSAzNXQxNSAzNXpNOTAwIDMwMGgtMTAwdjIwMGgxMDB2LTIwMHpNMTAwMCA1MDBoNTFxMjAgMCAzNC41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzQuNSAtMTQuNWgtNTF2MjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzk7IiBkPSJNODYyIDEwNzNsMjc2IDExNnEyNSAxOCA0My41IDh0MTguNSAtNDF2LTExMDZxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2Mzk3cS00IDEgLTExIDV0LTI0IDE3LjV0LTMwIDI5dC0yNCA0MnQtMTEgNTYuNXYzNTlxMCAzMSAxOC41IDY1dDQzLjUgNTJ6TTU1MCAxMjAwcTIyIDAgMzQuNSAtMTIuNXQxNC41IC0yNC41bDEgLTEzdi00NTBxMCAtMjggLTEwLjUgLTU5LjUgdC0yNSAtNTZ0LTI5IC00NXQtMjUuNSAtMzEuNWwtMTAgLTExdi00NDdxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDQ3cS00IDQgLTExIDExLjV0LTI0IDMwLjV0LTMwIDQ2dC0yNCA1NXQtMTEgNjB2NDUwcTAgMiAwLjUgNS41dDQgMTJ0OC41IDE1dDE0LjUgMTJ0MjIuNSA1LjVxMjAgMCAzMi41IC0xMi41dDE0LjUgLTI0LjVsMyAtMTN2LTM1MGgxMDB2MzUwdjUuNXQyLjUgMTIgdDcgMTV0MTUgMTJ0MjUuNSA1LjVxMjMgMCAzNS41IC0xMi41dDEzLjUgLTI0LjVsMSAtMTN2LTM1MGgxMDB2MzUwcTAgMiAwLjUgNS41dDMgMTJ0NyAxNXQxNSAxMnQyNC41IDUuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTgwOyIgZD0iTTEyMDAgMTEwMHYtNTZxLTQgMCAtMTEgLTAuNXQtMjQgLTN0LTMwIC03LjV0LTI0IC0xNXQtMTEgLTI0di04ODhxMCAtMjIgMjUgLTM0LjV0NTAgLTEzLjVsMjUgLTJ2LTU2aC00MDB2NTZxNzUgMCA4Ny41IDYuNXQxMi41IDQzLjV2Mzk0aC01MDB2LTM5NHEwIC0zNyAxMi41IC00My41dDg3LjUgLTYuNXYtNTZoLTQwMHY1NnE0IDAgMTEgMC41dDI0IDN0MzAgNy41dDI0IDE1dDExIDI0djg4OHEwIDIyIC0yNSAzNC41dC01MCAxMy41IGwtMjUgMnY1Nmg0MDB2LTU2cS03NSAwIC04Ny41IC02LjV0LTEyLjUgLTQzLjV2LTM5NGg1MDB2Mzk0cTAgMzcgLTEyLjUgNDMuNXQtODcuNSA2LjV2NTZoNDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODE7IiBkPSJNNjc1IDEwMDBoMzc1cTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xNTBoLTEwNWwtMjk1IC05OHY5OGwtMjAwIDIwMGgtNDAwbDEwMCAxMDBoMzc1ek0xMDAgOTAwaDMwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNTAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC0zMDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djUwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTEwMCA4MDB2LTIwMGgzMDB2MjAwIGgtMzAwek0xMTAwIDUzNWwtNDAwIC0xMzN2MTYzbDQwMCAxMzN2LTE2M3pNMTAwIDUwMHYtMjAwaDMwMHYyMDBoLTMwMHpNMTEwMCAzOTh2LTI0OHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzc1bC0xMDAgLTEwMGgtMzc1bC0xMDAgMTAwaDQwMGwyMDAgMjAwaDEwNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTgyOyIgZD0iTTE3IDEwMDdsMTYyIDE2MnExNyAxNyA0MCAxNHQzNyAtMjJsMTM5IC0xOTRxMTQgLTIwIDExIC00NC41dC0yMCAtNDEuNWwtMTE5IC0xMThxMTAyIC0xNDIgMjI4IC0yNjh0MjY3IC0yMjdsMTE5IDExOHExNyAxNyA0Mi41IDE5dDQ0LjUgLTEybDE5MiAtMTM2cTE5IC0xNCAyMi41IC0zNy41dC0xMy41IC00MC41bC0xNjMgLTE2MnEtMyAtMSAtOS41IC0xdC0yOS41IDJ0LTQ3LjUgNnQtNjIuNSAxNC41dC03Ny41IDI2LjV0LTkwIDQyLjUgdC0xMDEuNSA2MHQtMTExIDgzdC0xMTkgMTA4LjVxLTc0IDc0IC0xMzMuNSAxNTAuNXQtOTQuNSAxMzguNXQtNjAgMTE5LjV0LTM0LjUgMTAwdC0xNSA3NC41dC00LjUgNDh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4MzsiIGQ9Ik02MDAgMTEwMHE5MiAwIDE3NSAtMTAuNXQxNDEuNSAtMjd0MTA4LjUgLTM2LjV0ODEuNSAtNDB0NTMuNSAtMzd0MzEgLTI3bDkgLTEwdi0yMDBxMCAtMjEgLTE0LjUgLTMzdC0zNC41IC05bC0yMDIgMzRxLTIwIDMgLTM0LjUgMjB0LTE0LjUgMzh2MTQ2cS0xNDEgMjQgLTMwMCAyNHQtMzAwIC0yNHYtMTQ2cTAgLTIxIC0xNC41IC0zOHQtMzQuNSAtMjBsLTIwMiAtMzRxLTIwIC0zIC0zNC41IDl0LTE0LjUgMzN2MjAwcTMgNCA5LjUgMTAuNSB0MzEgMjZ0NTQgMzcuNXQ4MC41IDM5LjV0MTA5IDM3LjV0MTQxIDI2LjV0MTc1IDEwLjV6TTYwMCA3OTVxNTYgMCA5NyAtOS41dDYwIC0yMy41dDMwIC0yOHQxMiAtMjRsMSAtMTB2LTUwbDM2NSAtMzAzcTE0IC0xNSAyNC41IC00MHQxMC41IC00NXYtMjEycTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMTJxMCAyMCAxMC41IDQ1dDI0LjUgNDBsMzY1IDMwM3Y1MCBxMCA0IDEgMTAuNXQxMiAyM3QzMCAyOXQ2MCAyMi41dDk3IDEweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODQ7IiBkPSJNMTEwMCA3MDBsLTIwMCAtMjAwaC02MDBsLTIwMCAyMDB2NTAwaDIwMHYtMjAwaDIwMHYyMDBoMjAwdi0yMDBoMjAwdjIwMGgyMDB2LTUwMHpNMjUwIDQwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV0LTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEybDEzNyAtMTAwaC05NTBsMTM3IDEwMGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNSB0MTQuNSAtMzUuNXYtNTBoLTEyMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODU7IiBkPSJNNzAwIDExMDBoLTEwMHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtMTAwMGgzMDB2MTAwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNXpNMTEwMCA4MDBoLTEwMHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNzAwaDMwMHY3MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjV6TTQwMCAwaC0zMDB2NDAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgxMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTQwMHogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4NjsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDcwMGgtMjAwdi0xMDBoMjAwdi0zMDBoLTMwMHYxMDBoMjAwdjEwMGgtMjAwdjMwMGgzMDB2LTEwMHpNOTAwIDcwMHYtMzAwbC0xMDAgLTEwMGgtMjAwdjUwMGgyMDB6IE03MDAgNzAwdi0zMDBoMTAwdjMwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODc7IiBkPSJNMjAwIDExMDBoNzAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnYtNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OGgtNzAwcS0xMjQgMCAtMjEyIDg4dC04OCAyMTJ2NTAwcTAgMTI0IDg4IDIxMnQyMTIgODh6TTEwMCA5MDB2LTcwMGg5MDB2NzAwaC05MDB6TTUwMCAzMDBoLTEwMHYyMDBoLTEwMHYtMjAwaC0xMDB2NTAwaDEwMHYtMjAwaDEwMHYyMDBoMTAwdi01MDB6TTkwMCA3MDB2LTMwMGwtMTAwIC0xMDBoLTIwMHY1MDBoMjAweiBNNzAwIDcwMHYtMzAwaDEwMHYzMDBoLTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTg4OyIgZD0iTTIwMCAxMTAwaDcwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTUwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhoLTcwMHEtMTI0IDAgLTIxMiA4OHQtODggMjEydjUwMHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek0xMDAgOTAwdi03MDBoOTAwdjcwMGgtOTAwek01MDAgNzAwaC0yMDB2LTMwMGgyMDB2LTEwMGgtMzAwdjUwMGgzMDB2LTEwMHpNOTAwIDcwMGgtMjAwdi0zMDBoMjAwdi0xMDBoLTMwMHY1MDBoMzAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4OTsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDQwMGwtMzAwIDE1MGwzMDAgMTUwdi0zMDB6TTkwMCA1NTBsLTMwMCAtMTUwdjMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTkwOyIgZD0iTTIwMCAxMTAwaDcwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTUwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhoLTcwMHEtMTI0IDAgLTIxMiA4OHQtODggMjEydjUwMHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek0xMDAgOTAwdi03MDBoOTAwdjcwMGgtOTAwek05MDAgMzAwaC03MDB2NTAwaDcwMHYtNTAwek04MDAgNzAwaC0xMzBxLTM4IDAgLTY2LjUgLTQzdC0yOC41IC0xMDh0MjcgLTEwN3Q2OCAtNDJoMTMwdjMwMHpNMzAwIDcwMHYtMzAwIGgxMzBxNDEgMCA2OCA0MnQyNyAxMDd0LTI4LjUgMTA4dC02Ni41IDQzaC0xMzB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5MTsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDcwMGgtMjAwdi0xMDBoMjAwdi0zMDBoLTMwMHYxMDBoMjAwdjEwMGgtMjAwdjMwMGgzMDB2LTEwMHpNOTAwIDMwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHogTTcwMCAzMDBoLTEwMHYxMDBoMTAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5MjsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNMzAwIDcwMGgyMDB2LTQwMGgtMzAwdjUwMGgxMDB2LTEwMHpNOTAwIDMwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHpNMzAwIDYwMHYtMjAwaDEwMHYyMDBoLTEwMHogTTcwMCAzMDBoLTEwMHYxMDBoMTAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5MzsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDUwMGwtMTk5IC0yMDBoLTEwMHY1MGwxOTkgMjAwdjE1MGgtMjAwdjEwMGgzMDB2LTMwMHpNOTAwIDMwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHpNNzAxIDMwMGgtMTAwIHYxMDBoMTAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5NDsiIGQ9Ik02MDAgMTE5MXExMjAgMCAyMjkuNSAtNDd0MTg4LjUgLTEyNnQxMjYgLTE4OC41dDQ3IC0yMjkuNXQtNDcgLTIyOS41dC0xMjYgLTE4OC41dC0xODguNSAtMTI2dC0yMjkuNSAtNDd0LTIyOS41IDQ3dC0xODguNSAxMjZ0LTEyNiAxODguNXQtNDcgMjI5LjV0NDcgMjI5LjV0MTI2IDE4OC41dDE4OC41IDEyNnQyMjkuNSA0N3pNNjAwIDEwMjFxLTExNCAwIC0yMTEgLTU2LjV0LTE1My41IC0xNTMuNXQtNTYuNSAtMjExdDU2LjUgLTIxMSB0MTUzLjUgLTE1My41dDIxMSAtNTYuNXQyMTEgNTYuNXQxNTMuNSAxNTMuNXQ1Ni41IDIxMXQtNTYuNSAyMTF0LTE1My41IDE1My41dC0yMTEgNTYuNXpNODAwIDcwMGgtMzAwdi0yMDBoMzAwdi0xMDBoLTMwMGwtMTAwIDEwMHYyMDBsMTAwIDEwMGgzMDB2LTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTk1OyIgZD0iTTYwMCAxMTkxcTEyMCAwIDIyOS41IC00N3QxODguNSAtMTI2dDEyNiAtMTg4LjV0NDcgLTIyOS41dC00NyAtMjI5LjV0LTEyNiAtMTg4LjV0LTE4OC41IC0xMjZ0LTIyOS41IC00N3QtMjI5LjUgNDd0LTE4OC41IDEyNnQtMTI2IDE4OC41dC00NyAyMjkuNXQ0NyAyMjkuNXQxMjYgMTg4LjV0MTg4LjUgMTI2dDIyOS41IDQ3ek02MDAgMTAyMXEtMTE0IDAgLTIxMSAtNTYuNXQtMTUzLjUgLTE1My41dC01Ni41IC0yMTF0NTYuNSAtMjExIHQxNTMuNSAtMTUzLjV0MjExIC01Ni41dDIxMSA1Ni41dDE1My41IDE1My41dDU2LjUgMjExdC01Ni41IDIxMXQtMTUzLjUgMTUzLjV0LTIxMSA1Ni41ek04MDAgNzAwdi0xMDBsLTUwIC01MGwxMDAgLTEwMHYtNTBoLTEwMGwtMTAwIDEwMGgtMTUwdi0xMDBoLTEwMHY0MDBoMzAwek01MDAgNzAwdi0xMDBoMjAwdjEwMGgtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTc7IiBkPSJNNTAzIDEwODlxMTEwIDAgMjAwLjUgLTU5LjV0MTM0LjUgLTE1Ni41cTQ0IDE0IDkwIDE0cTEyMCAwIDIwNSAtODYuNXQ4NSAtMjA3dC04NSAtMjA3dC0yMDUgLTg2LjVoLTEyOHYyNTBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTMwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMjUwaC0yMjJxLTgwIDAgLTEzNiA1Ny41dC01NiAxMzYuNXEwIDY5IDQzIDEyMi41dDEwOCA2Ny41cS0yIDE5IC0yIDM3cTAgMTAwIDQ5IDE4NSB0MTM0IDEzNHQxODUgNDl6TTUyNSA1MDBoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMjc1aDEzN3EyMSAwIDI2IC0xMS41dC04IC0yNy41bC0yMjMgLTI0NHEtMTMgLTE2IC0zMiAtMTZ0LTMyIDE2bC0yMjMgMjQ0cS0xMyAxNiAtOCAyNy41dDI2IDExLjVoMTM3djI3NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTg7IiBkPSJNNTAyIDEwODlxMTEwIDAgMjAxIC01OS41dDEzNSAtMTU2LjVxNDMgMTUgODkgMTVxMTIxIDAgMjA2IC04Ni41dDg2IC0yMDYuNXEwIC05OSAtNjAgLTE4MXQtMTUwIC0xMTBsLTM3OCAzNjBxLTEzIDE2IC0zMS41IDE2dC0zMS41IC0xNmwtMzgxIC0zNjVoLTlxLTc5IDAgLTEzNS41IDU3LjV0LTU2LjUgMTM2LjVxMCA2OSA0MyAxMjIuNXQxMDggNjcuNXEtMiAxOSAtMiAzOHEwIDEwMCA0OSAxODQuNXQxMzMuNSAxMzR0MTg0LjUgNDkuNXogTTYzMiA0NjdsMjIzIC0yMjhxMTMgLTE2IDggLTI3LjV0LTI2IC0xMS41aC0xMzd2LTI3NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djI3NWgtMTM3cS0yMSAwIC0yNiAxMS41dDggMjcuNXExOTkgMjA0IDIyMyAyMjhxMTkgMTkgMzEuNSAxOXQzMi41IC0xOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTk5OyIgZD0iTTcwMCAxMDB2MTAwaDQwMGwtMjcwIDMwMGgxNzBsLTI3MCAzMDBoMTcwbC0zMDAgMzMzbC0zMDAgLTMzM2gxNzBsLTI3MCAtMzAwaDE3MGwtMjcwIC0zMDBoNDAwdi0xMDBoLTUwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di01MGg0MDB2NTBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDA7IiBkPSJNNjAwIDExNzlxOTQgMCAxNjcuNSAtNTYuNXQ5OS41IC0xNDUuNXE4OSAtNiAxNTAuNSAtNzEuNXQ2MS41IC0xNTUuNXEwIC02MSAtMjkuNSAtMTEyLjV0LTc5LjUgLTgyLjVxOSAtMjkgOSAtNTVxMCAtNzQgLTUyLjUgLTEyNi41dC0xMjYuNSAtNTIuNXEtNTUgMCAtMTAwIDMwdi0yNTFxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUwaC0zMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41djI1MXEtNDUgLTMwIC0xMDAgLTMwIHEtNzQgMCAtMTI2LjUgNTIuNXQtNTIuNSAxMjYuNXEwIDE4IDQgMzhxLTQ3IDIxIC03NS41IDY1dC0yOC41IDk3cTAgNzQgNTIuNSAxMjYuNXQxMjYuNSA1Mi41cTUgMCAyMyAtMnEwIDIgLTEgMTB0LTEgMTNxMCAxMTYgODEuNSAxOTcuNXQxOTcuNSA4MS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDE7IiBkPSJNMTAxMCAxMDEwcTExMSAtMTExIDE1MC41IC0yNjAuNXQwIC0yOTl0LTE1MC41IC0yNjAuNXEtODMgLTgzIC0xOTEuNSAtMTI2LjV0LTIxOC41IC00My41dC0yMTguNSA0My41dC0xOTEuNSAxMjYuNXEtMTExIDExMSAtMTUwLjUgMjYwLjV0MCAyOTl0MTUwLjUgMjYwLjVxODMgODMgMTkxLjUgMTI2LjV0MjE4LjUgNDMuNXQyMTguNSAtNDMuNXQxOTEuNSAtMTI2LjV6TTQ3NiAxMDY1cS00IDAgLTggLTFxLTEyMSAtMzQgLTIwOS41IC0xMjIuNSB0LTEyMi41IC0yMDkuNXEtNCAtMTIgMi41IC0yM3QxOC41IC0xNGwzNiAtOXEzIC0xIDcgLTFxMjMgMCAyOSAyMnEyNyA5NiA5OCAxNjZxNzAgNzEgMTY2IDk4cTExIDMgMTcuNSAxMy41dDMuNSAyMi41bC05IDM1cS0zIDEzIC0xNCAxOXEtNyA0IC0xNSA0ek01MTIgOTIwcS00IDAgLTkgLTJxLTgwIC0yNCAtMTM4LjUgLTgyLjV0LTgyLjUgLTEzOC41cS00IC0xMyAyIC0yNHQxOSAtMTRsMzQgLTlxNCAtMSA4IC0xcTIyIDAgMjggMjEgcTE4IDU4IDU4LjUgOTguNXQ5Ny41IDU4LjVxMTIgMyAxOCAxMy41dDMgMjEuNWwtOSAzNXEtMyAxMiAtMTQgMTlxLTcgNCAtMTUgNHpNNzE5LjUgNzE5LjVxLTQ5LjUgNDkuNSAtMTE5LjUgNDkuNXQtMTE5LjUgLTQ5LjV0LTQ5LjUgLTExOS41dDQ5LjUgLTExOS41dDExOS41IC00OS41dDExOS41IDQ5LjV0NDkuNSAxMTkuNXQtNDkuNSAxMTkuNXpNODU1IDU1MXEtMjIgMCAtMjggLTIxcS0xOCAtNTggLTU4LjUgLTk4LjV0LTk4LjUgLTU3LjUgcS0xMSAtNCAtMTcgLTE0LjV0LTMgLTIxLjVsOSAtMzVxMyAtMTIgMTQgLTE5cTcgLTQgMTUgLTRxNCAwIDkgMnE4MCAyNCAxMzguNSA4Mi41dDgyLjUgMTM4LjVxNCAxMyAtMi41IDI0dC0xOC41IDE0bC0zNCA5cS00IDEgLTggMXpNMTAwMCA1MTVxLTIzIDAgLTI5IC0yMnEtMjcgLTk2IC05OCAtMTY2cS03MCAtNzEgLTE2NiAtOThxLTExIC0zIC0xNy41IC0xMy41dC0zLjUgLTIyLjVsOSAtMzVxMyAtMTMgMTQgLTE5cTcgLTQgMTUgLTQgcTQgMCA4IDFxMTIxIDM0IDIwOS41IDEyMi41dDEyMi41IDIwOS41cTQgMTIgLTIuNSAyM3QtMTguNSAxNGwtMzYgOXEtMyAxIC03IDF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIwMjsiIGQ9Ik03MDAgODAwaDMwMHYtMzgwaC0xODB2MjAwaC0zNDB2LTIwMGgtMzgwdjc1NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDU3NXYtNDAwek0xMDAwIDkwMGgtMjAwdjIwMHpNNzAwIDMwMGgxNjJsLTIxMiAtMjEybC0yMTIgMjEyaDE2MnYyMDBoMTAwdi0yMDB6TTUyMCAwaC0zOTVxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzOTV6TTEwMDAgMjIwdi0xOTVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xOTV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIwMzsiIGQ9Ik03MDAgODAwaDMwMHYtNTIwbC0zNTAgMzUwbC01NTAgLTU1MHYxMDk1cTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoNTc1di00MDB6TTEwMDAgOTAwaC0yMDB2MjAwek04NjIgMjAwaC0xNjJ2LTIwMGgtMTAwdjIwMGgtMTYybDIxMiAyMTJ6TTQ4MCAwaC0zNTVxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1NWgzODB2LTgwek0xMDAwIDgwdi01NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1NXY4MGgxODB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIwNDsiIGQ9Ik0xMTYyIDgwMGgtMTYydi0yMDBoMTAwbDEwMCAtMTAwaC0zMDB2MzAwaC0xNjJsMjEyIDIxMnpNMjAwIDgwMGgyMDBxMjcgMCA0MCAtMnQyOS41IC0xMC41dDIzLjUgLTMwdDcgLTU3LjVoMzAwdi0xMDBoLTYwMGwtMjAwIC0zNTB2NDUwaDEwMHEwIDM2IDcgNTcuNXQyMy41IDMwdDI5LjUgMTAuNXQ0MCAyek04MDAgNDAwaDI0MGwtMjQwIC00MDBoLTgwMGwzMDAgNTAwaDUwMHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDU7IiBkPSJNNjUwIDExMDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0zMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNTB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMDAwIDg1MHYxNTBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTgwMCBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTYwMHEtMSAwIC0yMCA0bDI0NiAyNDZsLTMyNiAzMjZ2MzI0cTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXYtMTUwcTAgLTYyIDQ0IC0xMDZ0MTA2IC00NGgzMDBxNjIgMCAxMDYgNDR0NDQgMTA2ek00MTIgMjUwbC0yMTIgLTIxMnYxNjJoLTIwMHYxMDBoMjAwdjE2MnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjA2OyIgZD0iTTQ1MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoNTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDUwdjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNODAwIDg1MHYxNTBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTUwMCBoLTIwMHYtMzAwaDIwMHEwIC0zNiAtNyAtNTcuNXQtMjMuNSAtMzB0LTI5LjUgLTEwLjV0LTQwIC0yaC02MDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djgwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV2LTE1MHEwIC02MiA0NCAtMTA2dDEwNiAtNDRoMzAwcTYyIDAgMTA2IDQ0dDQ0IDEwNnpNMTIxMiAyNTBsLTIxMiAtMjEydjE2MmgtMjAwdjEwMGgyMDB2MTYyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDk7IiBkPSJNNjU4IDExOTdsNjM3IC0xMTA0cTIzIC0zOCA3IC02NS41dC02MCAtMjcuNWgtMTI3NnEtNDQgMCAtNjAgMjcuNXQ3IDY1LjVsNjM3IDExMDRxMjIgMzkgNTQgMzl0NTQgLTM5ek03MDQgODAwaC0yMDhxLTIwIDAgLTMyIC0xNC41dC04IC0zNC41bDU4IC0zMDJxNCAtMjAgMjEuNSAtMzQuNXQzNy41IC0xNC41aDU0cTIwIDAgMzcuNSAxNC41dDIxLjUgMzQuNWw1OCAzMDJxNCAyMCAtOCAzNC41dC0zMiAxNC41ek01MDAgMzAwdi0xMDBoMjAwIHYxMDBoLTIwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjEwOyIgZD0iTTQyNSAxMTAwaDI1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek00MjUgODAwaDI1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41IHQxNy41IDcuNXpNODI1IDgwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNMjUgNTAwaDI1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MCBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNDI1IDUwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNODI1IDUwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNSB2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTI1IDIwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNDI1IDIwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41IHQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTgyNSAyMDBoMjUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMjUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxMTsiIGQ9Ik03MDAgMTIwMGgxMDB2LTIwMGgtMTAwdi0xMDBoMzUwcTYyIDAgODYuNSAtMzkuNXQtMy41IC05NC41bC02NiAtMTMycS00MSAtODMgLTgxIC0xMzRoLTc3MnEtNDAgNTEgLTgxIDEzNGwtNjYgMTMycS0yOCA1NSAtMy41IDk0LjV0ODYuNSAzOS41aDM1MHYxMDBoLTEwMHYyMDBoMTAwdjEwMGgyMDB2LTEwMHpNMjUwIDQwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV0LTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEybDEzNyAtMTAwIGgtOTUwbDEzOCAxMDBoLTEzcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXQxNC41IDM1LjV0MzUuNSAxNC41ek01MCAxMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoLTEyMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMTI7IiBkPSJNNjAwIDEzMDBxNDAgMCA2OC41IC0yOS41dDI4LjUgLTcwLjVoLTE5NHEwIDQxIDI4LjUgNzAuNXQ2OC41IDI5LjV6TTQ0MyAxMTAwaDMxNHExOCAtMzcgMTggLTc1cTAgLTggLTMgLTI1aDMyOHE0MSAwIDQ0LjUgLTE2LjV0LTMwLjUgLTM4LjVsLTE3NSAtMTQ1aC02NzhsLTE3OCAxNDVxLTM0IDIyIC0yOSAzOC41dDQ2IDE2LjVoMzI4cS0zIDE3IC0zIDI1cTAgMzggMTggNzV6TTI1MCA3MDBoNzAwcTIxIDAgMzUuNSAtMTQuNSB0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTUwdi0yMDBsMjc1IC0yMDBoLTk1MGwyNzUgMjAwdjIwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXQxNC41IDM1LjV0MzUuNSAxNC41ek01MCAxMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoLTEyMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMTM7IiBkPSJNNjAwIDExODFxNzUgMCAxMjggLTUzdDUzIC0xMjh0LTUzIC0xMjh0LTEyOCAtNTN0LTEyOCA1M3QtNTMgMTI4dDUzIDEyOHQxMjggNTN6TTYwMiA3OThoNDZxMzQgMCA1NS41IC0yOC41dDIxLjUgLTg2LjVxMCAtNzYgMzkgLTE4M2gtMzI0cTM5IDEwNyAzOSAxODNxMCA1OCAyMS41IDg2LjV0NTYuNSAyOC41aDQ1ek0yNTAgNDAwaDcwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTMgbDEzOCAtMTAwaC05NTBsMTM3IDEwMGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtMTIwMHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxNDsiIGQ9Ik02MDAgMTMwMHE0NyAwIDkyLjUgLTUzLjV0NzEgLTEyM3QyNS41IC0xMjMuNXEwIC03OCAtNTUuNSAtMTMzLjV0LTEzMy41IC01NS41dC0xMzMuNSA1NS41dC01NS41IDEzMy41cTAgNjIgMzQgMTQzbDE0NCAtMTQzbDExMSAxMTFsLTE2MyAxNjNxMzQgMjYgNjMgMjZ6TTYwMiA3OThoNDZxMzQgMCA1NS41IC0yOC41dDIxLjUgLTg2LjVxMCAtNzYgMzkgLTE4M2gtMzI0cTM5IDEwNyAzOSAxODNxMCA1OCAyMS41IDg2LjV0NTYuNSAyOC41aDQ1IHpNMjUwIDQwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV0LTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEzbDEzOCAtMTAwaC05NTBsMTM3IDEwMGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtMTIwMHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxNTsiIGQ9Ik02MDAgMTIwMGwzMDAgLTE2MXYtMTM5aC0zMDBxMCAtNTcgMTguNSAtMTA4dDUwIC05MS41dDYzIC03MnQ3MCAtNjcuNXQ1Ny41IC02MWgtNTMwcS02MCA4MyAtOTAuNSAxNzcuNXQtMzAuNSAxNzguNXQzMyAxNjQuNXQ4Ny41IDEzOS41dDEyNiA5Ni41dDE0NS41IDQxLjV2LTk4ek0yNTAgNDAwaDcwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTNsMTM4IC0xMDBoLTk1MGwxMzcgMTAwIGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtMTIwMHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxNjsiIGQ9Ik02MDAgMTMwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNzhxNDYgLTI2IDczIC03MnQyNyAtMTAwdi01MGgtNDAwdjUwcTAgNTQgMjcgMTAwdDczIDcydjc4cTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNNDAwIDgwMGg0MDBxNTQgMCAxMDAgLTI3dDcyIC03M2gtMTcydi0xMDBoMjAwdi0xMDBoLTIwMHYtMTAwaDIwMHYtMTAwaC0yMDB2LTEwMGgyMDBxMCAtODMgLTU4LjUgLTE0MS41dC0xNDEuNSAtNTguNWgtNDAwIHEtODMgMCAtMTQxLjUgNTguNXQtNTguNSAxNDEuNXY0MDBxMCA4MyA1OC41IDE0MS41dDE0MS41IDU4LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxODsiIGQ9Ik0xNTAgMTEwMGg5MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtOTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY1MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMjUgNDAwaDk1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMjgzbDIyNCAtMjI0cTEzIC0xMyAxMyAtMzEuNXQtMTMgLTMyIHQtMzEuNSAtMTMuNXQtMzEuNSAxM2wtODggODhoLTUyNGwtODcgLTg4cS0xMyAtMTMgLTMyIC0xM3QtMzIgMTMuNXQtMTMgMzJ0MTMgMzEuNWwyMjQgMjI0aC0yODlxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek01NDEgMzAwbC0xMDAgLTEwMGgzMjRsLTEwMCAxMDBoLTEyNHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjE5OyIgZD0iTTIwMCAxMTAwaDgwMHE4MyAwIDE0MS41IC01OC41dDU4LjUgLTE0MS41di0yMDBoLTEwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNWgtMjUwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41aC0xMDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjVoLTI1MHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNWgtMTAwdjIwMHEwIDgzIDU4LjUgMTQxLjV0MTQxLjUgNTguNXpNMTAwIDYwMGgxMDAwcTQxIDAgNzAuNSAtMjkuNSB0MjkuNSAtNzAuNXYtMzAwaC0xMjAwdjMwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTMwMCAxMDB2LTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djUwaDIwMHpNMTEwMCAxMDB2LTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djUwaDIwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjIxOyIgZD0iTTQ4MCAxMTY1bDY4MiAtNjgzcTMxIC0zMSAzMSAtNzUuNXQtMzEgLTc1LjVsLTEzMSAtMTMxaC00ODFsLTUxNyA1MThxLTMyIDMxIC0zMiA3NS41dDMyIDc1LjVsMjk1IDI5NnEzMSAzMSA3NS41IDMxdDc2LjUgLTMxek0xMDggNzk0bDM0MiAtMzQybDMwMyAzMDRsLTM0MSAzNDF6TTI1MCAxMDBoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtOTAwdjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjIzOyIgZD0iTTEwNTcgNjQ3bC0xODkgNTA2cS04IDE5IC0yNy41IDMzdC00MC41IDE0aC00MDBxLTIxIDAgLTQwLjUgLTE0dC0yNy41IC0zM2wtMTg5IC01MDZxLTggLTE5IDEuNSAtMzN0MzAuNSAtMTRoNjI1di0xNTBxMCAtMjEgMTQuNSAtMzUuNXQzNS41IC0xNC41dDM1LjUgMTQuNXQxNC41IDM1LjV2MTUwaDEyNXEyMSAwIDMwLjUgMTR0MS41IDMzek04OTcgMGgtNTk1djUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg1MHY1MCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDQ4djMwMGgyMDB2LTMwMGg0N3EyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoNTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMjQ7IiBkPSJNOTAwIDgwMGgzMDB2LTU3NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTM3NXY1OTFsLTMwMCAzMDB2ODRxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgzNzV2LTQwMHpNMTIwMCA5MDBoLTIwMHYyMDB6TTQwMCA2MDBoMzAwdi01NzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC02NTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY5NTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgzNzV2LTQwMHpNNzAwIDcwMGgtMjAwdjIwMHogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIyNTsiIGQ9Ik00ODQgMTA5NWgxOTVxNzUgMCAxNDYgLTMyLjV0MTI0IC04NnQ4OS41IC0xMjIuNXQ0OC41IC0xNDJxMTggLTE0IDM1IC0yMHEzMSAtMTAgNjQuNSA2LjV0NDMuNSA0OC41cTEwIDM0IC0xNSA3MXEtMTkgMjcgLTkgNDNxNSA4IDEyLjUgMTF0MTkgLTF0MjMuNSAtMTZxNDEgLTQ0IDM5IC0xMDVxLTMgLTYzIC00NiAtMTA2LjV0LTEwNCAtNDMuNWgtNjJxLTcgLTU1IC0zNSAtMTE3dC01NiAtMTAwbC0zOSAtMjM0cS0zIC0yMCAtMjAgLTM0LjUgdC0zOCAtMTQuNWgtMTAwcS0yMSAwIC0zMyAxNC41dC05IDM0LjVsMTIgNzBxLTQ5IC0xNCAtOTEgLTE0aC0xOTVxLTI0IDAgLTY1IDhsLTExIC02NHEtMyAtMjAgLTIwIC0zNC41dC0zOCAtMTQuNWgtMTAwcS0yMSAwIC0zMyAxNC41dC05IDM0LjVsMjYgMTU3cS04NCA3NCAtMTI4IDE3NWwtMTU5IDUzcS0xOSA3IC0zMyAyNnQtMTQgNDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDEyNHExMSA4NyA1NiAxNjZsLTExMSA5NSBxLTE2IDE0IC0xMi41IDIzLjV0MjQuNSA5LjVoMjAzcTExNiAxMDEgMjUwIDEwMXpNNjc1IDEwMDBoLTI1MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMjUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2NTBxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMjY7IiBkPSJNNjQxIDkwMGw0MjMgMjQ3cTE5IDggNDIgMi41dDM3IC0yMS41bDMyIC0zOHExNCAtMTUgMTIuNSAtMzZ0LTE3LjUgLTM0bC0xMzkgLTEyMGgtMzkwek01MCAxMTAwaDEwNnE2NyAwIDEwMyAtMTd0NjYgLTcxbDEwMiAtMjEyaDgyM3EyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBxMCAtMjEgLTE0IC00MHQtMzMgLTI2bC03MzcgLTEzMnEtMjMgLTQgLTQwIDZ0LTI2IDI1cS00MiA2NyAtMTAwIDY3aC0zMDBxLTYyIDAgLTEwNiA0NCB0LTQ0IDEwNnYyMDBxMCA2MiA0NCAxMDZ0MTA2IDQ0ek0xNzMgOTI4aC04MHEtMTkgMCAtMjggLTE0dC05IC0zNXYtNTZxMCAtNTEgNDIgLTUxaDEzNHExNiAwIDIxLjUgOHQ1LjUgMjRxMCAxMSAtMTYgNDV0LTI3IDUxcS0xOCAyOCAtNDMgMjh6TTU1MCA3MjdxLTMyIDAgLTU0LjUgLTIyLjV0LTIyLjUgLTU0LjV0MjIuNSAtNTQuNXQ1NC41IC0yMi41dDU0LjUgMjIuNXQyMi41IDU0LjV0LTIyLjUgNTQuNXQtNTQuNSAyMi41ek0xMzAgMzg5IGwxNTIgMTMwcTE4IDE5IDM0IDI0dDMxIC0zLjV0MjQuNSAtMTcuNXQyNS41IC0yOHEyOCAtMzUgNTAuNSAtNTF0NDguNSAtMTNsNjMgNWw0OCAtMTc5cTEzIC02MSAtMy41IC05Ny41dC02Ny41IC03OS41bC04MCAtNjlxLTQ3IC00MCAtMTA5IC0zNS41dC0xMDMgNTEuNWwtMTMwIDE1MXEtNDAgNDcgLTM1LjUgMTA5LjV0NTEuNSAxMDIuNXpNMzgwIDM3N2wtMTAyIC04OHEtMzEgLTI3IDIgLTY1bDM3IC00M3ExMyAtMTUgMjcuNSAtMTkuNSB0MzEuNSA2LjVsNjEgNTNxMTkgMTYgMTQgNDlxLTIgMjAgLTEyIDU2dC0xNyA0NXEtMTEgMTIgLTE5IDE0dC0yMyAtOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjI3OyIgZD0iTTYyNSAxMjAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTEwOXE3OSAtMzMgMTMxIC04Ny41dDUzIC0xMjguNXExIC00NiAtMTUgLTg0LjV0LTM5IC02MXQtNDYgLTM4dC0zOSAtMjEuNWwtMTcgLTZxNiAwIDE1IC0xLjV0MzUgLTl0NTAgLTE3LjV0NTMgLTMwdDUwIC00NXQzNS41IC02NHQxNC41IC04NHEwIC01OSAtMTEuNSAtMTA1LjV0LTI4LjUgLTc2LjV0LTQ0IC01MXQtNDkuNSAtMzEuNXQtNTQuNSAtMTZ0LTQ5LjUgLTYuNSB0LTQzLjUgLTF2LTc1cTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NzVoLTEwMHYtNzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY3NWgtMTc1cS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoNzV2NjAwaC03NXEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MCBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgxNzV2NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgxNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di03NWgxMDB2NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNDAwIDkwMHYtMjAwaDI2M3EyOCAwIDQ4LjUgMTAuNXQzMCAyNXQxNSAyOXQ1LjUgMjUuNWwxIDEwcTAgNCAtMC41IDExdC02IDI0dC0xNSAzMHQtMzAgMjR0LTQ4LjUgMTFoLTI2M3pNNDAwIDUwMHYtMjAwaDM2M3EyOCAwIDQ4LjUgMTAuNSB0MzAgMjV0MTUgMjl0NS41IDI1LjVsMSAxMHEwIDQgLTAuNSAxMXQtNiAyNHQtMTUgMzB0LTMwIDI0dC00OC41IDExaC0zNjN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzMDsiIGQ9Ik0yMTIgMTE5OGg3ODBxODYgMCAxNDcgLTYxdDYxIC0xNDd2LTQxNnEwIC01MSAtMTggLTE0Mi41dC0zNiAtMTU3LjVsLTE4IC02NnEtMjkgLTg3IC05My41IC0xNDYuNXQtMTQ2LjUgLTU5LjVoLTU3MnEtODIgMCAtMTQ3IDU5dC05MyAxNDdxLTggMjggLTIwIDczdC0zMiAxNDMuNXQtMjAgMTQ5LjV2NDE2cTAgODYgNjEgMTQ3dDE0NyA2MXpNNjAwIDEwNDVxLTcwIDAgLTEzMi41IC0xMS41dC0xMDUuNSAtMzAuNXQtNzguNSAtNDEuNSB0LTU3IC00NXQtMzYgLTQxdC0yMC41IC0zMC41bC02IC0xMmwxNTYgLTI0M2g1NjBsMTU2IDI0M3EtMiA1IC02IDEyLjV0LTIwIDI5LjV0LTM2LjUgNDJ0LTU3IDQ0LjV0LTc5IDQydC0xMDUgMjkuNXQtMTMyLjUgMTJ6TTc2MiA3MDNoLTE1N2wxOTUgMjYxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzE7IiBkPSJNNDc1IDEzMDBoMTUwcTEwMyAwIDE4OSAtODZ0ODYgLTE4OXYtNTAwcTAgLTQxIC00MiAtODN0LTgzIC00MmgtNDUwcS00MSAwIC04MyA0MnQtNDIgODN2NTAwcTAgMTAzIDg2IDE4OXQxODkgODZ6TTcwMCAzMDB2LTIyNXEwIC0yMSAtMjcgLTQ4dC00OCAtMjdoLTE1MHEtMjEgMCAtNDggMjd0LTI3IDQ4djIyNWgzMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzMjsiIGQ9Ik00NzUgMTMwMGg5NnEwIC0xNTAgODkuNSAtMjM5LjV0MjM5LjUgLTg5LjV2LTQ0NnEwIC00MSAtNDIgLTgzdC04MyAtNDJoLTQ1MHEtNDEgMCAtODMgNDJ0LTQyIDgzdjUwMHEwIDEwMyA4NiAxODl0MTg5IDg2ek03MDAgMzAwdi0yMjVxMCAtMjEgLTI3IC00OHQtNDggLTI3aC0xNTBxLTIxIDAgLTQ4IDI3dC0yNyA0OHYyMjVoMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzM7IiBkPSJNMTI5NCA3NjdsLTYzOCAtMjgzbC0zNzggMTcwbC03OCAtNjB2LTIyNGwxMDAgLTE1MHYtMTk5bC0xNTAgMTQ4bC0xNTAgLTE0OXYyMDBsMTAwIDE1MHYyNTBxMCA0IC0wLjUgMTAuNXQwIDkuNXQxIDh0MyA4dDYuNSA2bDQ3IDQwbC0xNDcgNjVsNjQyIDI4M3pNMTAwMCAzODBsLTM1MCAtMTY2bC0zNTAgMTY2djE0N2wzNTAgLTE2NWwzNTAgMTY1di0xNDd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzNDsiIGQ9Ik0yNTAgODAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek02NTAgODAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek0xMDUwIDgwMHE2MiAwIDEwNiAtNDR0NDQgLTEwNnQtNDQgLTEwNnQtMTA2IC00NHQtMTA2IDQ0dC00NCAxMDZ0NDQgMTA2dDEwNiA0NHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjM1OyIgZD0iTTU1MCAxMTAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek01NTAgNzAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek01NTAgMzAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzY7IiBkPSJNMTI1IDExMDBoOTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtOTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTEyNSA3MDBoOTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtOTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjUgdDE3LjUgNy41ek0xMjUgMzAwaDk1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTk1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzc7IiBkPSJNMzUwIDEyMDBoNTAwcTE2MiAwIDI1NiAtOTMuNXQ5NCAtMjU2LjV2LTUwMHEwIC0xNjUgLTkzLjUgLTI1Ny41dC0yNTYuNSAtOTIuNWgtNTAwcS0xNjUgMCAtMjU3LjUgOTIuNXQtOTIuNSAyNTcuNXY1MDBxMCAxNjUgOTIuNSAyNTcuNXQyNTcuNSA5Mi41ek05MDAgMTAwMGgtNjAwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di02MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDYwMHE0MSAwIDcwLjUgMjkuNSB0MjkuNSA3MC41djYwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNXpNMzUwIDkwMGg1MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTMwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYzMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek00MDAgODAwdi0yMDBoNDAwdjIwMGgtNDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzg7IiBkPSJNMTUwIDExMDBoMTAwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTIwMGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTIwMGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTIwMGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNSB0LTM1LjUgLTE0LjVoLTEwMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjVoNTB2MjAwaC01MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV0MTQuNSAzNS41dDM1LjUgMTQuNWg1MHYyMDBoLTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXQxNC41IDM1LjV0MzUuNSAxNC41aDUwdjIwMGgtNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzOTsiIGQ9Ik02NTAgMTE4N3E4NyAtNjcgMTE4LjUgLTE1NnQwIC0xNzh0LTExOC41IC0xNTVxLTg3IDY2IC0xMTguNSAxNTV0MCAxNzh0MTE4LjUgMTU2ek0zMDAgODAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnEtMTI0IDAgLTIxMiA4OHQtODggMjEyek0xMDAwIDgwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhxMCAxMjQgODggMjEydDIxMiA4OHpNMzAwIDUwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnogTTEwMDAgNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek03MDAgMTk5di0xNDRxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjV0LTM1LjUgMTQuNXQtMTQuNSAzNS41djE0MnE0MCAtNCA0MyAtNHExNyAwIDU3IDZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI0MDsiIGQ9Ik03NDUgODc4bDY5IDE5cTI1IDYgNDUgLTEybDI5OCAtMjk1cTExIC0xMSAxNSAtMjYuNXQtMiAtMzAuNXEtNSAtMTQgLTE4IC0yMy41dC0yOCAtOS41aC04cTEgMCAxIC0xM3EwIC0yOSAtMiAtNTZ0LTguNSAtNjJ0LTIwIC02M3QtMzMgLTUzdC01MSAtMzl0LTcyLjUgLTE0aC0xNDZxLTE4NCAwIC0xODQgMjg4cTAgMjQgMTAgNDdxLTIwIDQgLTYyIDR0LTYzIC00cTExIC0yNCAxMSAtNDdxMCAtMjg4IC0xODQgLTI4OGgtMTQyIHEtNDggMCAtODQuNSAyMXQtNTYgNTF0LTMyIDcxLjV0LTE2IDc1dC0zLjUgNjguNXEwIDEzIDIgMTNoLTdxLTE1IDAgLTI3LjUgOS41dC0xOC41IDIzLjVxLTYgMTUgLTIgMzAuNXQxNSAyNS41bDI5OCAyOTZxMjAgMTggNDYgMTFsNzYgLTE5cTIwIC01IDMwLjUgLTIyLjV0NS41IC0zNy41dC0yMi41IC0zMXQtMzcuNSAtNWwtNTEgMTJsLTE4MiAtMTkzaDg5MWwtMTgyIDE5M2wtNDQgLTEycS0yMCAtNSAtMzcuNSA2dC0yMi41IDMxdDYgMzcuNSB0MzEgMjIuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQxOyIgZD0iTTEyMDAgOTAwaC01MHEwIDIxIC00IDM3dC05LjUgMjYuNXQtMTggMTcuNXQtMjIgMTF0LTI4LjUgNS41dC0zMSAydC0zNyAwLjVoLTIwMHYtODUwcTAgLTIyIDI1IC0zNC41dDUwIC0xMy41bDI1IC0ydi0xMDBoLTQwMHYxMDBxNCAwIDExIDAuNXQyNCAzdDMwIDd0MjQgMTV0MTEgMjQuNXY4NTBoLTIwMHEtMjUgMCAtMzcgLTAuNXQtMzEgLTJ0LTI4LjUgLTUuNXQtMjIgLTExdC0xOCAtMTcuNXQtOS41IC0yNi41dC00IC0zN2gtNTB2MzAwIGgxMDAwdi0zMDB6TTUwMCA0NTBoLTI1cTAgMTUgLTQgMjQuNXQtOSAxNC41dC0xNyA3LjV0LTIwIDN0LTI1IDAuNWgtMTAwdi00MjVxMCAtMTEgMTIuNSAtMTcuNXQyNS41IC03LjVoMTJ2LTUwaC0yMDB2NTBxNTAgMCA1MCAyNXY0MjVoLTEwMHEtMTcgMCAtMjUgLTAuNXQtMjAgLTN0LTE3IC03LjV0LTkgLTE0LjV0LTQgLTI0LjVoLTI1djE1MGg1MDB2LTE1MHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQyOyIgZD0iTTEwMDAgMzAwdjUwcS0yNSAwIC01NSAzMnEtMTQgMTQgLTI1IDMxdC0xNiAyN2wtNCAxMWwtMjg5IDc0N2gtNjlsLTMwMCAtNzU0cS0xOCAtMzUgLTM5IC01NnEtOSAtOSAtMjQuNSAtMTguNXQtMjYuNSAtMTQuNWwtMTEgLTV2LTUwaDI3M3Y1MHEtNDkgMCAtNzguNSAyMS41dC0xMS41IDY3LjVsNjkgMTc2aDI5M2w2MSAtMTY2cTEzIC0zNCAtMy41IC02Ni41dC01NS41IC0zMi41di01MGgzMTJ6TTQxMiA2OTFsMTM0IDM0MmwxMjEgLTM0MiBoLTI1NXpNMTEwMCAxNTB2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNDM7IiBkPSJNNTAgMTIwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNjExIDExMThoLTcwcS0xMyAwIC0xOCAtMTJsLTI5OSAtNzUzcS0xNyAtMzIgLTM1IC01MXEtMTggLTE4IC01NiAtMzRxLTEyIC01IC0xMiAtMTh2LTUwcTAgLTggNS41IC0xNHQxNC41IC02IGgyNzNxOCAwIDE0IDZ0NiAxNHY1MHEwIDggLTYgMTR0LTE0IDZxLTU1IDAgLTcxIDIzcS0xMCAxNCAwIDM5bDYzIDE2M2gyNjZsNTcgLTE1M3ExMSAtMzEgLTYgLTU1cS0xMiAtMTcgLTM2IC0xN3EtOCAwIC0xNCAtNnQtNiAtMTR2LTUwcTAgLTggNiAtMTR0MTQgLTZoMzEzcTggMCAxNCA2dDYgMTR2NTBxMCA3IC01LjUgMTN0LTEzLjUgN3EtMTcgMCAtNDIgMjVxLTI1IDI3IC00MCA2M2gtMWwtMjg4IDc0OHEtNSAxMiAtMTkgMTJ6TTYzOSA2MTEgaC0xOTdsMTAzIDI2NHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQ0OyIgZD0iTTEyMDAgMTEwMGgtMTIwMHYxMDBoMTIwMHYtMTAwek01MCAxMDAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtOTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djkwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTY1MCAxMDAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDAgcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek03MDAgOTAwdi0zMDBoMzAwdjMwMGgtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNDU7IiBkPSJNNTAgMTIwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTkwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY5MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek02NTAgNzAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek03MDAgNjAwdi0zMDBoMzAwdjMwMGgtMzAwek0xMjAwIDBoLTEyMDB2MTAwaDEyMDB2LTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQ2OyIgZD0iTTUwIDEwMDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0zNTBoMTAwdjE1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xNTBoMTAwdi0xMDBoLTEwMHYtMTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djE1MGgtMTAwdi0zNTBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djgwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTcwMCA3MDB2LTMwMGgzMDB2MzAwaC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI0NzsiIGQ9Ik0xMDAgMGgtMTAwdjEyMDBoMTAwdi0xMjAwek0yNTAgMTEwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0zMDAgMTAwMHYtMzAwaDMwMHYzMDBoLTMwMHpNMjUwIDUwMGg5MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTkwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQ4OyIgZD0iTTYwMCAxMTAwaDE1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xNTB2LTEwMGg0NTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtOTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDM1MHYxMDBoLTE1MHEtMjEgMCAtMzUuNSAxNC41IHQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTUwdjEwMGgxMDB2LTEwMHpNNDAwIDEwMDB2LTMwMGgzMDB2MzAwaC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI0OTsiIGQ9Ik0xMjAwIDBoLTEwMHYxMjAwaDEwMHYtMTIwMHpNNTUwIDExMDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNjAwIDEwMDB2LTMwMGgzMDB2MzAwaC0zMDB6TTUwIDUwMGg5MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTkwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjUwOyIgZD0iTTg2NSA1NjVsLTQ5NCAtNDk0cS0yMyAtMjMgLTQxIC0yM3EtMTQgMCAtMjIgMTMuNXQtOCAzOC41djEwMDBxMCAyNSA4IDM4LjV0MjIgMTMuNXExOCAwIDQxIC0yM2w0OTQgLTQ5NHExNCAtMTQgMTQgLTM1dC0xNCAtMzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI1MTsiIGQ9Ik0zMzUgNjM1bDQ5NCA0OTRxMjkgMjkgNTAgMjAuNXQyMSAtNDkuNXYtMTAwMHEwIC00MSAtMjEgLTQ5LjV0LTUwIDIwLjVsLTQ5NCA0OTRxLTE0IDE0IC0xNCAzNXQxNCAzNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjUyOyIgZD0iTTEwMCA5MDBoMTAwMHE0MSAwIDQ5LjUgLTIxdC0yMC41IC01MGwtNDk0IC00OTRxLTE0IC0xNCAtMzUgLTE0dC0zNSAxNGwtNDk0IDQ5NHEtMjkgMjkgLTIwLjUgNTB0NDkuNSAyMXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjUzOyIgZD0iTTYzNSA4NjVsNDk0IC00OTRxMjkgLTI5IDIwLjUgLTUwdC00OS41IC0yMWgtMTAwMHEtNDEgMCAtNDkuNSAyMXQyMC41IDUwbDQ5NCA0OTRxMTQgMTQgMzUgMTR0MzUgLTE0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNTQ7IiBkPSJNNzAwIDc0MXYtMTgybC02OTIgLTMyM3YyMjFsNDEzIDE5M2wtNDEzIDE5M3YyMjF6TTEyMDAgMGgtODAwdjIwMGg4MDB2LTIwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU1OyIgZD0iTTEyMDAgOTAwaC0yMDB2LTEwMGgyMDB2LTEwMGgtMzAwdjMwMGgyMDB2MTAwaC0yMDB2MTAwaDMwMHYtMzAwek0wIDcwMGg1MHEwIDIxIDQgMzd0OS41IDI2LjV0MTggMTcuNXQyMiAxMXQyOC41IDUuNXQzMSAydDM3IDAuNWgxMDB2LTU1MHEwIC0yMiAtMjUgLTM0LjV0LTUwIC0xMy41bC0yNSAtMnYtMTAwaDQwMHYxMDBxLTQgMCAtMTEgMC41dC0yNCAzdC0zMCA3dC0yNCAxNXQtMTEgMjQuNXY1NTBoMTAwcTI1IDAgMzcgLTAuNXQzMSAtMiB0MjguNSAtNS41dDIyIC0xMXQxOCAtMTcuNXQ5LjUgLTI2LjV0NCAtMzdoNTB2MzAwaC04MDB2LTMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU2OyIgZD0iTTgwMCA3MDBoLTUwcTAgMjEgLTQgMzd0LTkuNSAyNi41dC0xOCAxNy41dC0yMiAxMXQtMjguNSA1LjV0LTMxIDJ0LTM3IDAuNWgtMTAwdi01NTBxMCAtMjIgMjUgLTM0LjV0NTAgLTE0LjVsMjUgLTF2LTEwMGgtNDAwdjEwMHE0IDAgMTEgMC41dDI0IDN0MzAgN3QyNCAxNXQxMSAyNC41djU1MGgtMTAwcS0yNSAwIC0zNyAtMC41dC0zMSAtMnQtMjguNSAtNS41dC0yMiAtMTF0LTE4IC0xNy41dC05LjUgLTI2LjV0LTQgLTM3aC01MHYzMDAgaDgwMHYtMzAwek0xMTAwIDIwMGgtMjAwdi0xMDBoMjAwdi0xMDBoLTMwMHYzMDBoMjAwdjEwMGgtMjAwdjEwMGgzMDB2LTMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU3OyIgZD0iTTcwMSAxMDk4aDE2MHExNiAwIDIxIC0xMXQtNyAtMjNsLTQ2NCAtNDY0bDQ2NCAtNDY0cTEyIC0xMiA3IC0yM3QtMjEgLTExaC0xNjBxLTEzIDAgLTIzIDlsLTQ3MSA0NzFxLTcgOCAtNyAxOHQ3IDE4bDQ3MSA0NzFxMTAgOSAyMyA5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNTg7IiBkPSJNMzM5IDEwOThoMTYwcTEzIDAgMjMgLTlsNDcxIC00NzFxNyAtOCA3IC0xOHQtNyAtMThsLTQ3MSAtNDcxcS0xMCAtOSAtMjMgLTloLTE2MHEtMTYgMCAtMjEgMTF0NyAyM2w0NjQgNDY0bC00NjQgNDY0cS0xMiAxMiAtNyAyM3QyMSAxMXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU5OyIgZD0iTTEwODcgODgycTExIC01IDExIC0yMXYtMTYwcTAgLTEzIC05IC0yM2wtNDcxIC00NzFxLTggLTcgLTE4IC03dC0xOCA3bC00NzEgNDcxcS05IDEwIC05IDIzdjE2MHEwIDE2IDExIDIxdDIzIC03bDQ2NCAtNDY0bDQ2NCA0NjRxMTIgMTIgMjMgN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjYwOyIgZD0iTTYxOCA5OTNsNDcxIC00NzFxOSAtMTAgOSAtMjN2LTE2MHEwIC0xNiAtMTEgLTIxdC0yMyA3bC00NjQgNDY0bC00NjQgLTQ2NHEtMTIgLTEyIC0yMyAtN3QtMTEgMjF2MTYwcTAgMTMgOSAyM2w0NzEgNDcxcTggNyAxOCA3dDE4IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGY4ZmY7IiBkPSJNMTAwMCAxMjAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek00NTAgMTAwMGgxMDBxMjEgMCA0MCAtMTR0MjYgLTMzbDc5IC0xOTRxNSAxIDE2IDNxMzQgNiA1NCA5LjV0NjAgN3Q2NS41IDF0NjEgLTEwdDU2LjUgLTIzdDQyLjUgLTQydDI5IC02NHQ1IC05MnQtMTkuNSAtMTIxLjVxLTEgLTcgLTMgLTE5LjV0LTExIC01MHQtMjAuNSAtNzN0LTMyLjUgLTgxLjV0LTQ2LjUgLTgzdC02NCAtNzAgdC04Mi41IC01MHEtMTMgLTUgLTQyIC01dC02NS41IDIuNXQtNDcuNSAyLjVxLTE0IDAgLTQ5LjUgLTMuNXQtNjMgLTMuNXQtNDMuNSA3cS01NyAyNSAtMTA0LjUgNzguNXQtNzUgMTExLjV0LTQ2LjUgMTEydC0yNiA5MGwtNyAzNXEtMTUgNjMgLTE4IDExNXQ0LjUgODguNXQyNiA2NHQzOS41IDQzLjV0NTIgMjUuNXQ1OC41IDEzdDYyLjUgMnQ1OS41IC00LjV0NTUuNSAtOGwtMTQ3IDE5MnEtMTIgMTggLTUuNSAzMHQyNy41IDEyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDFmNTExOyIgZD0iTTI1MCAxMjAwaDYwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xNTB2LTUwMGwtMjU1IC0xNzhxLTE5IC05IC0zMiAtMXQtMTMgMjl2NjUwaC0xNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQwMCAxMTAwdi0xMDBoMzAwdjEwMGgtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDFmNmFhOyIgZD0iTTI1MCAxMjAwaDc1MHEzOSAwIDY5LjUgLTQwLjV0MzAuNSAtODQuNXYtOTMzbC03MDAgLTExN3Y5NTBsNjAwIDEyNWgtNzAwdi0xMDAwaC0xMDB2MTAyNXEwIDIzIDE1LjUgNDl0MzQuNSAyNnpNNTAwIDUyNXYtMTAwbDEwMCAyMHYxMDB6IiAvPgo8L2ZvbnQ%2BCjwvZGVmcz48L3N2Zz4g%29%20format%28%27svg%27%29%7D%2Eglyphicon%7Bposition%3Arelative%3Btop%3A1px%3Bdisplay%3Ainline%2Dblock%3Bfont%2Dfamily%3A%27Glyphicons%20Halflings%27%3Bfont%2Dstyle%3Anormal%3Bfont%2Dweight%3Anormal%3Bline%2Dheight%3A1%3B%2Dwebkit%2Dfont%2Dsmoothing%3Aantialiased%3B%2Dmoz%2Dosx%2Dfont%2Dsmoothing%3Agrayscale%7D%2Eglyphicon%2Dasterisk%3Abefore%7Bcontent%3A%22%5C002a%22%7D%2Eglyphicon%2Dplus%3Abefore%7Bcontent%3A%22%5C002b%22%7D%2Eglyphicon%2Deuro%3Abefore%2C%2Eglyphicon%2Deur%3Abefore%7Bcontent%3A%22%5C20ac%22%7D%2Eglyphicon%2Dminus%3Abefore%7Bcontent%3A%22%5C2212%22%7D%2Eglyphicon%2Dcloud%3Abefore%7Bcontent%3A%22%5C2601%22%7D%2Eglyphicon%2Denvelope%3Abefore%7Bcontent%3A%22%5C2709%22%7D%2Eglyphicon%2Dpencil%3Abefore%7Bcontent%3A%22%5C270f%22%7D%2Eglyphicon%2Dglass%3Abefore%7Bcontent%3A%22%5Ce001%22%7D%2Eglyphicon%2Dmusic%3Abefore%7Bcontent%3A%22%5Ce002%22%7D%2Eglyphicon%2Dsearch%3Abefore%7Bcontent%3A%22%5Ce003%22%7D%2Eglyphicon%2Dheart%3Abefore%7Bcontent%3A%22%5Ce005%22%7D%2Eglyphicon%2Dstar%3Abefore%7Bcontent%3A%22%5Ce006%22%7D%2Eglyphicon%2Dstar%2Dempty%3Abefore%7Bcontent%3A%22%5Ce007%22%7D%2Eglyphicon%2Duser%3Abefore%7Bcontent%3A%22%5Ce008%22%7D%2Eglyphicon%2Dfilm%3Abefore%7Bcontent%3A%22%5Ce009%22%7D%2Eglyphicon%2Dth%2Dlarge%3Abefore%7Bcontent%3A%22%5Ce010%22%7D%2Eglyphicon%2Dth%3Abefore%7Bcontent%3A%22%5Ce011%22%7D%2Eglyphicon%2Dth%2Dlist%3Abefore%7Bcontent%3A%22%5Ce012%22%7D%2Eglyphicon%2Dok%3Abefore%7Bcontent%3A%22%5Ce013%22%7D%2Eglyphicon%2Dremove%3Abefore%7Bcontent%3A%22%5Ce014%22%7D%2Eglyphicon%2Dzoom%2Din%3Abefore%7Bcontent%3A%22%5Ce015%22%7D%2Eglyphicon%2Dzoom%2Dout%3Abefore%7Bcontent%3A%22%5Ce016%22%7D%2Eglyphicon%2Doff%3Abefore%7Bcontent%3A%22%5Ce017%22%7D%2Eglyphicon%2Dsignal%3Abefore%7Bcontent%3A%22%5Ce018%22%7D%2Eglyphicon%2Dcog%3Abefore%7Bcontent%3A%22%5Ce019%22%7D%2Eglyphicon%2Dtrash%3Abefore%7Bcontent%3A%22%5Ce020%22%7D%2Eglyphicon%2Dhome%3Abefore%7Bcontent%3A%22%5Ce021%22%7D%2Eglyphicon%2Dfile%3Abefore%7Bcontent%3A%22%5Ce022%22%7D%2Eglyphicon%2Dtime%3Abefore%7Bcontent%3A%22%5Ce023%22%7D%2Eglyphicon%2Droad%3Abefore%7Bcontent%3A%22%5Ce024%22%7D%2Eglyphicon%2Ddownload%2Dalt%3Abefore%7Bcontent%3A%22%5Ce025%22%7D%2Eglyphicon%2Ddownload%3Abefore%7Bcontent%3A%22%5Ce026%22%7D%2Eglyphicon%2Dupload%3Abefore%7Bcontent%3A%22%5Ce027%22%7D%2Eglyphicon%2Dinbox%3Abefore%7Bcontent%3A%22%5Ce028%22%7D%2Eglyphicon%2Dplay%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce029%22%7D%2Eglyphicon%2Drepeat%3Abefore%7Bcontent%3A%22%5Ce030%22%7D%2Eglyphicon%2Drefresh%3Abefore%7Bcontent%3A%22%5Ce031%22%7D%2Eglyphicon%2Dlist%2Dalt%3Abefore%7Bcontent%3A%22%5Ce032%22%7D%2Eglyphicon%2Dlock%3Abefore%7Bcontent%3A%22%5Ce033%22%7D%2Eglyphicon%2Dflag%3Abefore%7Bcontent%3A%22%5Ce034%22%7D%2Eglyphicon%2Dheadphones%3Abefore%7Bcontent%3A%22%5Ce035%22%7D%2Eglyphicon%2Dvolume%2Doff%3Abefore%7Bcontent%3A%22%5Ce036%22%7D%2Eglyphicon%2Dvolume%2Ddown%3Abefore%7Bcontent%3A%22%5Ce037%22%7D%2Eglyphicon%2Dvolume%2Dup%3Abefore%7Bcontent%3A%22%5Ce038%22%7D%2Eglyphicon%2Dqrcode%3Abefore%7Bcontent%3A%22%5Ce039%22%7D%2Eglyphicon%2Dbarcode%3Abefore%7Bcontent%3A%22%5Ce040%22%7D%2Eglyphicon%2Dtag%3Abefore%7Bcontent%3A%22%5Ce041%22%7D%2Eglyphicon%2Dtags%3Abefore%7Bcontent%3A%22%5Ce042%22%7D%2Eglyphicon%2Dbook%3Abefore%7Bcontent%3A%22%5Ce043%22%7D%2Eglyphicon%2Dbookmark%3Abefore%7Bcontent%3A%22%5Ce044%22%7D%2Eglyphicon%2Dprint%3Abefore%7Bcontent%3A%22%5Ce045%22%7D%2Eglyphicon%2Dcamera%3Abefore%7Bcontent%3A%22%5Ce046%22%7D%2Eglyphicon%2Dfont%3Abefore%7Bcontent%3A%22%5Ce047%22%7D%2Eglyphicon%2Dbold%3Abefore%7Bcontent%3A%22%5Ce048%22%7D%2Eglyphicon%2Ditalic%3Abefore%7Bcontent%3A%22%5Ce049%22%7D%2Eglyphicon%2Dtext%2Dheight%3Abefore%7Bcontent%3A%22%5Ce050%22%7D%2Eglyphicon%2Dtext%2Dwidth%3Abefore%7Bcontent%3A%22%5Ce051%22%7D%2Eglyphicon%2Dalign%2Dleft%3Abefore%7Bcontent%3A%22%5Ce052%22%7D%2Eglyphicon%2Dalign%2Dcenter%3Abefore%7Bcontent%3A%22%5Ce053%22%7D%2Eglyphicon%2Dalign%2Dright%3Abefore%7Bcontent%3A%22%5Ce054%22%7D%2Eglyphicon%2Dalign%2Djustify%3Abefore%7Bcontent%3A%22%5Ce055%22%7D%2Eglyphicon%2Dlist%3Abefore%7Bcontent%3A%22%5Ce056%22%7D%2Eglyphicon%2Dindent%2Dleft%3Abefore%7Bcontent%3A%22%5Ce057%22%7D%2Eglyphicon%2Dindent%2Dright%3Abefore%7Bcontent%3A%22%5Ce058%22%7D%2Eglyphicon%2Dfacetime%2Dvideo%3Abefore%7Bcontent%3A%22%5Ce059%22%7D%2Eglyphicon%2Dpicture%3Abefore%7Bcontent%3A%22%5Ce060%22%7D%2Eglyphicon%2Dmap%2Dmarker%3Abefore%7Bcontent%3A%22%5Ce062%22%7D%2Eglyphicon%2Dadjust%3Abefore%7Bcontent%3A%22%5Ce063%22%7D%2Eglyphicon%2Dtint%3Abefore%7Bcontent%3A%22%5Ce064%22%7D%2Eglyphicon%2Dedit%3Abefore%7Bcontent%3A%22%5Ce065%22%7D%2Eglyphicon%2Dshare%3Abefore%7Bcontent%3A%22%5Ce066%22%7D%2Eglyphicon%2Dcheck%3Abefore%7Bcontent%3A%22%5Ce067%22%7D%2Eglyphicon%2Dmove%3Abefore%7Bcontent%3A%22%5Ce068%22%7D%2Eglyphicon%2Dstep%2Dbackward%3Abefore%7Bcontent%3A%22%5Ce069%22%7D%2Eglyphicon%2Dfast%2Dbackward%3Abefore%7Bcontent%3A%22%5Ce070%22%7D%2Eglyphicon%2Dbackward%3Abefore%7Bcontent%3A%22%5Ce071%22%7D%2Eglyphicon%2Dplay%3Abefore%7Bcontent%3A%22%5Ce072%22%7D%2Eglyphicon%2Dpause%3Abefore%7Bcontent%3A%22%5Ce073%22%7D%2Eglyphicon%2Dstop%3Abefore%7Bcontent%3A%22%5Ce074%22%7D%2Eglyphicon%2Dforward%3Abefore%7Bcontent%3A%22%5Ce075%22%7D%2Eglyphicon%2Dfast%2Dforward%3Abefore%7Bcontent%3A%22%5Ce076%22%7D%2Eglyphicon%2Dstep%2Dforward%3Abefore%7Bcontent%3A%22%5Ce077%22%7D%2Eglyphicon%2Deject%3Abefore%7Bcontent%3A%22%5Ce078%22%7D%2Eglyphicon%2Dchevron%2Dleft%3Abefore%7Bcontent%3A%22%5Ce079%22%7D%2Eglyphicon%2Dchevron%2Dright%3Abefore%7Bcontent%3A%22%5Ce080%22%7D%2Eglyphicon%2Dplus%2Dsign%3Abefore%7Bcontent%3A%22%5Ce081%22%7D%2Eglyphicon%2Dminus%2Dsign%3Abefore%7Bcontent%3A%22%5Ce082%22%7D%2Eglyphicon%2Dremove%2Dsign%3Abefore%7Bcontent%3A%22%5Ce083%22%7D%2Eglyphicon%2Dok%2Dsign%3Abefore%7Bcontent%3A%22%5Ce084%22%7D%2Eglyphicon%2Dquestion%2Dsign%3Abefore%7Bcontent%3A%22%5Ce085%22%7D%2Eglyphicon%2Dinfo%2Dsign%3Abefore%7Bcontent%3A%22%5Ce086%22%7D%2Eglyphicon%2Dscreenshot%3Abefore%7Bcontent%3A%22%5Ce087%22%7D%2Eglyphicon%2Dremove%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce088%22%7D%2Eglyphicon%2Dok%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce089%22%7D%2Eglyphicon%2Dban%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce090%22%7D%2Eglyphicon%2Darrow%2Dleft%3Abefore%7Bcontent%3A%22%5Ce091%22%7D%2Eglyphicon%2Darrow%2Dright%3Abefore%7Bcontent%3A%22%5Ce092%22%7D%2Eglyphicon%2Darrow%2Dup%3Abefore%7Bcontent%3A%22%5Ce093%22%7D%2Eglyphicon%2Darrow%2Ddown%3Abefore%7Bcontent%3A%22%5Ce094%22%7D%2Eglyphicon%2Dshare%2Dalt%3Abefore%7Bcontent%3A%22%5Ce095%22%7D%2Eglyphicon%2Dresize%2Dfull%3Abefore%7Bcontent%3A%22%5Ce096%22%7D%2Eglyphicon%2Dresize%2Dsmall%3Abefore%7Bcontent%3A%22%5Ce097%22%7D%2Eglyphicon%2Dexclamation%2Dsign%3Abefore%7Bcontent%3A%22%5Ce101%22%7D%2Eglyphicon%2Dgift%3Abefore%7Bcontent%3A%22%5Ce102%22%7D%2Eglyphicon%2Dleaf%3Abefore%7Bcontent%3A%22%5Ce103%22%7D%2Eglyphicon%2Dfire%3Abefore%7Bcontent%3A%22%5Ce104%22%7D%2Eglyphicon%2Deye%2Dopen%3Abefore%7Bcontent%3A%22%5Ce105%22%7D%2Eglyphicon%2Deye%2Dclose%3Abefore%7Bcontent%3A%22%5Ce106%22%7D%2Eglyphicon%2Dwarning%2Dsign%3Abefore%7Bcontent%3A%22%5Ce107%22%7D%2Eglyphicon%2Dplane%3Abefore%7Bcontent%3A%22%5Ce108%22%7D%2Eglyphicon%2Dcalendar%3Abefore%7Bcontent%3A%22%5Ce109%22%7D%2Eglyphicon%2Drandom%3Abefore%7Bcontent%3A%22%5Ce110%22%7D%2Eglyphicon%2Dcomment%3Abefore%7Bcontent%3A%22%5Ce111%22%7D%2Eglyphicon%2Dmagnet%3Abefore%7Bcontent%3A%22%5Ce112%22%7D%2Eglyphicon%2Dchevron%2Dup%3Abefore%7Bcontent%3A%22%5Ce113%22%7D%2Eglyphicon%2Dchevron%2Ddown%3Abefore%7Bcontent%3A%22%5Ce114%22%7D%2Eglyphicon%2Dretweet%3Abefore%7Bcontent%3A%22%5Ce115%22%7D%2Eglyphicon%2Dshopping%2Dcart%3Abefore%7Bcontent%3A%22%5Ce116%22%7D%2Eglyphicon%2Dfolder%2Dclose%3Abefore%7Bcontent%3A%22%5Ce117%22%7D%2Eglyphicon%2Dfolder%2Dopen%3Abefore%7Bcontent%3A%22%5Ce118%22%7D%2Eglyphicon%2Dresize%2Dvertical%3Abefore%7Bcontent%3A%22%5Ce119%22%7D%2Eglyphicon%2Dresize%2Dhorizontal%3Abefore%7Bcontent%3A%22%5Ce120%22%7D%2Eglyphicon%2Dhdd%3Abefore%7Bcontent%3A%22%5Ce121%22%7D%2Eglyphicon%2Dbullhorn%3Abefore%7Bcontent%3A%22%5Ce122%22%7D%2Eglyphicon%2Dbell%3Abefore%7Bcontent%3A%22%5Ce123%22%7D%2Eglyphicon%2Dcertificate%3Abefore%7Bcontent%3A%22%5Ce124%22%7D%2Eglyphicon%2Dthumbs%2Dup%3Abefore%7Bcontent%3A%22%5Ce125%22%7D%2Eglyphicon%2Dthumbs%2Ddown%3Abefore%7Bcontent%3A%22%5Ce126%22%7D%2Eglyphicon%2Dhand%2Dright%3Abefore%7Bcontent%3A%22%5Ce127%22%7D%2Eglyphicon%2Dhand%2Dleft%3Abefore%7Bcontent%3A%22%5Ce128%22%7D%2Eglyphicon%2Dhand%2Dup%3Abefore%7Bcontent%3A%22%5Ce129%22%7D%2Eglyphicon%2Dhand%2Ddown%3Abefore%7Bcontent%3A%22%5Ce130%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Dright%3Abefore%7Bcontent%3A%22%5Ce131%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Dleft%3Abefore%7Bcontent%3A%22%5Ce132%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Dup%3Abefore%7Bcontent%3A%22%5Ce133%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Ddown%3Abefore%7Bcontent%3A%22%5Ce134%22%7D%2Eglyphicon%2Dglobe%3Abefore%7Bcontent%3A%22%5Ce135%22%7D%2Eglyphicon%2Dwrench%3Abefore%7Bcontent%3A%22%5Ce136%22%7D%2Eglyphicon%2Dtasks%3Abefore%7Bcontent%3A%22%5Ce137%22%7D%2Eglyphicon%2Dfilter%3Abefore%7Bcontent%3A%22%5Ce138%22%7D%2Eglyphicon%2Dbriefcase%3Abefore%7Bcontent%3A%22%5Ce139%22%7D%2Eglyphicon%2Dfullscreen%3Abefore%7Bcontent%3A%22%5Ce140%22%7D%2Eglyphicon%2Ddashboard%3Abefore%7Bcontent%3A%22%5Ce141%22%7D%2Eglyphicon%2Dpaperclip%3Abefore%7Bcontent%3A%22%5Ce142%22%7D%2Eglyphicon%2Dheart%2Dempty%3Abefore%7Bcontent%3A%22%5Ce143%22%7D%2Eglyphicon%2Dlink%3Abefore%7Bcontent%3A%22%5Ce144%22%7D%2Eglyphicon%2Dphone%3Abefore%7Bcontent%3A%22%5Ce145%22%7D%2Eglyphicon%2Dpushpin%3Abefore%7Bcontent%3A%22%5Ce146%22%7D%2Eglyphicon%2Dusd%3Abefore%7Bcontent%3A%22%5Ce148%22%7D%2Eglyphicon%2Dgbp%3Abefore%7Bcontent%3A%22%5Ce149%22%7D%2Eglyphicon%2Dsort%3Abefore%7Bcontent%3A%22%5Ce150%22%7D%2Eglyphicon%2Dsort%2Dby%2Dalphabet%3Abefore%7Bcontent%3A%22%5Ce151%22%7D%2Eglyphicon%2Dsort%2Dby%2Dalphabet%2Dalt%3Abefore%7Bcontent%3A%22%5Ce152%22%7D%2Eglyphicon%2Dsort%2Dby%2Dorder%3Abefore%7Bcontent%3A%22%5Ce153%22%7D%2Eglyphicon%2Dsort%2Dby%2Dorder%2Dalt%3Abefore%7Bcontent%3A%22%5Ce154%22%7D%2Eglyphicon%2Dsort%2Dby%2Dattributes%3Abefore%7Bcontent%3A%22%5Ce155%22%7D%2Eglyphicon%2Dsort%2Dby%2Dattributes%2Dalt%3Abefore%7Bcontent%3A%22%5Ce156%22%7D%2Eglyphicon%2Dunchecked%3Abefore%7Bcontent%3A%22%5Ce157%22%7D%2Eglyphicon%2Dexpand%3Abefore%7Bcontent%3A%22%5Ce158%22%7D%2Eglyphicon%2Dcollapse%2Ddown%3Abefore%7Bcontent%3A%22%5Ce159%22%7D%2Eglyphicon%2Dcollapse%2Dup%3Abefore%7Bcontent%3A%22%5Ce160%22%7D%2Eglyphicon%2Dlog%2Din%3Abefore%7Bcontent%3A%22%5Ce161%22%7D%2Eglyphicon%2Dflash%3Abefore%7Bcontent%3A%22%5Ce162%22%7D%2Eglyphicon%2Dlog%2Dout%3Abefore%7Bcontent%3A%22%5Ce163%22%7D%2Eglyphicon%2Dnew%2Dwindow%3Abefore%7Bcontent%3A%22%5Ce164%22%7D%2Eglyphicon%2Drecord%3Abefore%7Bcontent%3A%22%5Ce165%22%7D%2Eglyphicon%2Dsave%3Abefore%7Bcontent%3A%22%5Ce166%22%7D%2Eglyphicon%2Dopen%3Abefore%7Bcontent%3A%22%5Ce167%22%7D%2Eglyphicon%2Dsaved%3Abefore%7Bcontent%3A%22%5Ce168%22%7D%2Eglyphicon%2Dimport%3Abefore%7Bcontent%3A%22%5Ce169%22%7D%2Eglyphicon%2Dexport%3Abefore%7Bcontent%3A%22%5Ce170%22%7D%2Eglyphicon%2Dsend%3Abefore%7Bcontent%3A%22%5Ce171%22%7D%2Eglyphicon%2Dfloppy%2Ddisk%3Abefore%7Bcontent%3A%22%5Ce172%22%7D%2Eglyphicon%2Dfloppy%2Dsaved%3Abefore%7Bcontent%3A%22%5Ce173%22%7D%2Eglyphicon%2Dfloppy%2Dremove%3Abefore%7Bcontent%3A%22%5Ce174%22%7D%2Eglyphicon%2Dfloppy%2Dsave%3Abefore%7Bcontent%3A%22%5Ce175%22%7D%2Eglyphicon%2Dfloppy%2Dopen%3Abefore%7Bcontent%3A%22%5Ce176%22%7D%2Eglyphicon%2Dcredit%2Dcard%3Abefore%7Bcontent%3A%22%5Ce177%22%7D%2Eglyphicon%2Dtransfer%3Abefore%7Bcontent%3A%22%5Ce178%22%7D%2Eglyphicon%2Dcutlery%3Abefore%7Bcontent%3A%22%5Ce179%22%7D%2Eglyphicon%2Dheader%3Abefore%7Bcontent%3A%22%5Ce180%22%7D%2Eglyphicon%2Dcompressed%3Abefore%7Bcontent%3A%22%5Ce181%22%7D%2Eglyphicon%2Dearphone%3Abefore%7Bcontent%3A%22%5Ce182%22%7D%2Eglyphicon%2Dphone%2Dalt%3Abefore%7Bcontent%3A%22%5Ce183%22%7D%2Eglyphicon%2Dtower%3Abefore%7Bcontent%3A%22%5Ce184%22%7D%2Eglyphicon%2Dstats%3Abefore%7Bcontent%3A%22%5Ce185%22%7D%2Eglyphicon%2Dsd%2Dvideo%3Abefore%7Bcontent%3A%22%5Ce186%22%7D%2Eglyphicon%2Dhd%2Dvideo%3Abefore%7Bcontent%3A%22%5Ce187%22%7D%2Eglyphicon%2Dsubtitles%3Abefore%7Bcontent%3A%22%5Ce188%22%7D%2Eglyphicon%2Dsound%2Dstereo%3Abefore%7Bcontent%3A%22%5Ce189%22%7D%2Eglyphicon%2Dsound%2Ddolby%3Abefore%7Bcontent%3A%22%5Ce190%22%7D%2Eglyphicon%2Dsound%2D5%2D1%3Abefore%7Bcontent%3A%22%5Ce191%22%7D%2Eglyphicon%2Dsound%2D6%2D1%3Abefore%7Bcontent%3A%22%5Ce192%22%7D%2Eglyphicon%2Dsound%2D7%2D1%3Abefore%7Bcontent%3A%22%5Ce193%22%7D%2Eglyphicon%2Dcopyright%2Dmark%3Abefore%7Bcontent%3A%22%5Ce194%22%7D%2Eglyphicon%2Dregistration%2Dmark%3Abefore%7Bcontent%3A%22%5Ce195%22%7D%2Eglyphicon%2Dcloud%2Ddownload%3Abefore%7Bcontent%3A%22%5Ce197%22%7D%2Eglyphicon%2Dcloud%2Dupload%3Abefore%7Bcontent%3A%22%5Ce198%22%7D%2Eglyphicon%2Dtree%2Dconifer%3Abefore%7Bcontent%3A%22%5Ce199%22%7D%2Eglyphicon%2Dtree%2Ddeciduous%3Abefore%7Bcontent%3A%22%5Ce200%22%7D%2Eglyphicon%2Dcd%3Abefore%7Bcontent%3A%22%5Ce201%22%7D%2Eglyphicon%2Dsave%2Dfile%3Abefore%7Bcontent%3A%22%5Ce202%22%7D%2Eglyphicon%2Dopen%2Dfile%3Abefore%7Bcontent%3A%22%5Ce203%22%7D%2Eglyphicon%2Dlevel%2Dup%3Abefore%7Bcontent%3A%22%5Ce204%22%7D%2Eglyphicon%2Dcopy%3Abefore%7Bcontent%3A%22%5Ce205%22%7D%2Eglyphicon%2Dpaste%3Abefore%7Bcontent%3A%22%5Ce206%22%7D%2Eglyphicon%2Dalert%3Abefore%7Bcontent%3A%22%5Ce209%22%7D%2Eglyphicon%2Dequalizer%3Abefore%7Bcontent%3A%22%5Ce210%22%7D%2Eglyphicon%2Dking%3Abefore%7Bcontent%3A%22%5Ce211%22%7D%2Eglyphicon%2Dqueen%3Abefore%7Bcontent%3A%22%5Ce212%22%7D%2Eglyphicon%2Dpawn%3Abefore%7Bcontent%3A%22%5Ce213%22%7D%2Eglyphicon%2Dbishop%3Abefore%7Bcontent%3A%22%5Ce214%22%7D%2Eglyphicon%2Dknight%3Abefore%7Bcontent%3A%22%5Ce215%22%7D%2Eglyphicon%2Dbaby%2Dformula%3Abefore%7Bcontent%3A%22%5Ce216%22%7D%2Eglyphicon%2Dtent%3Abefore%7Bcontent%3A%22%5C26fa%22%7D%2Eglyphicon%2Dblackboard%3Abefore%7Bcontent%3A%22%5Ce218%22%7D%2Eglyphicon%2Dbed%3Abefore%7Bcontent%3A%22%5Ce219%22%7D%2Eglyphicon%2Dapple%3Abefore%7Bcontent%3A%22%5Cf8ff%22%7D%2Eglyphicon%2Derase%3Abefore%7Bcontent%3A%22%5Ce221%22%7D%2Eglyphicon%2Dhourglass%3Abefore%7Bcontent%3A%22%5C231b%22%7D%2Eglyphicon%2Dlamp%3Abefore%7Bcontent%3A%22%5Ce223%22%7D%2Eglyphicon%2Dduplicate%3Abefore%7Bcontent%3A%22%5Ce224%22%7D%2Eglyphicon%2Dpiggy%2Dbank%3Abefore%7Bcontent%3A%22%5Ce225%22%7D%2Eglyphicon%2Dscissors%3Abefore%7Bcontent%3A%22%5Ce226%22%7D%2Eglyphicon%2Dbitcoin%3Abefore%7Bcontent%3A%22%5Ce227%22%7D%2Eglyphicon%2Dbtc%3Abefore%7Bcontent%3A%22%5Ce227%22%7D%2Eglyphicon%2Dxbt%3Abefore%7Bcontent%3A%22%5Ce227%22%7D%2Eglyphicon%2Dyen%3Abefore%7Bcontent%3A%22%5C00a5%22%7D%2Eglyphicon%2Djpy%3Abefore%7Bcontent%3A%22%5C00a5%22%7D%2Eglyphicon%2Druble%3Abefore%7Bcontent%3A%22%5C20bd%22%7D%2Eglyphicon%2Drub%3Abefore%7Bcontent%3A%22%5C20bd%22%7D%2Eglyphicon%2Dscale%3Abefore%7Bcontent%3A%22%5Ce230%22%7D%2Eglyphicon%2Dice%2Dlolly%3Abefore%7Bcontent%3A%22%5Ce231%22%7D%2Eglyphicon%2Dice%2Dlolly%2Dtasted%3Abefore%7Bcontent%3A%22%5Ce232%22%7D%2Eglyphicon%2Deducation%3Abefore%7Bcontent%3A%22%5Ce233%22%7D%2Eglyphicon%2Doption%2Dhorizontal%3Abefore%7Bcontent%3A%22%5Ce234%22%7D%2Eglyphicon%2Doption%2Dvertical%3Abefore%7Bcontent%3A%22%5Ce235%22%7D%2Eglyphicon%2Dmenu%2Dhamburger%3Abefore%7Bcontent%3A%22%5Ce236%22%7D%2Eglyphicon%2Dmodal%2Dwindow%3Abefore%7Bcontent%3A%22%5Ce237%22%7D%2Eglyphicon%2Doil%3Abefore%7Bcontent%3A%22%5Ce238%22%7D%2Eglyphicon%2Dgrain%3Abefore%7Bcontent%3A%22%5Ce239%22%7D%2Eglyphicon%2Dsunglasses%3Abefore%7Bcontent%3A%22%5Ce240%22%7D%2Eglyphicon%2Dtext%2Dsize%3Abefore%7Bcontent%3A%22%5Ce241%22%7D%2Eglyphicon%2Dtext%2Dcolor%3Abefore%7Bcontent%3A%22%5Ce242%22%7D%2Eglyphicon%2Dtext%2Dbackground%3Abefore%7Bcontent%3A%22%5Ce243%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dtop%3Abefore%7Bcontent%3A%22%5Ce244%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dbottom%3Abefore%7Bcontent%3A%22%5Ce245%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dhorizontal%3Abefore%7Bcontent%3A%22%5Ce246%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dleft%3Abefore%7Bcontent%3A%22%5Ce247%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dvertical%3Abefore%7Bcontent%3A%22%5Ce248%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dright%3Abefore%7Bcontent%3A%22%5Ce249%22%7D%2Eglyphicon%2Dtriangle%2Dright%3Abefore%7Bcontent%3A%22%5Ce250%22%7D%2Eglyphicon%2Dtriangle%2Dleft%3Abefore%7Bcontent%3A%22%5Ce251%22%7D%2Eglyphicon%2Dtriangle%2Dbottom%3Abefore%7Bcontent%3A%22%5Ce252%22%7D%2Eglyphicon%2Dtriangle%2Dtop%3Abefore%7Bcontent%3A%22%5Ce253%22%7D%2Eglyphicon%2Dconsole%3Abefore%7Bcontent%3A%22%5Ce254%22%7D%2Eglyphicon%2Dsuperscript%3Abefore%7Bcontent%3A%22%5Ce255%22%7D%2Eglyphicon%2Dsubscript%3Abefore%7Bcontent%3A%22%5Ce256%22%7D%2Eglyphicon%2Dmenu%2Dleft%3Abefore%7Bcontent%3A%22%5Ce257%22%7D%2Eglyphicon%2Dmenu%2Dright%3Abefore%7Bcontent%3A%22%5Ce258%22%7D%2Eglyphicon%2Dmenu%2Ddown%3Abefore%7Bcontent%3A%22%5Ce259%22%7D%2Eglyphicon%2Dmenu%2Dup%3Abefore%7Bcontent%3A%22%5Ce260%22%7D%2A%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%7D%2A%3Abefore%2C%2A%3Aafter%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%7Dhtml%7Bfont%2Dsize%3A10px%3B%2Dwebkit%2Dtap%2Dhighlight%2Dcolor%3Argba%280%2C0%2C0%2C0%29%7Dbody%7Bfont%2Dfamily%3A%22Source%20Sans%20Pro%22%2C%22Helvetica%20Neue%22%2CHelvetica%2CArial%2Csans%2Dserif%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23ffffff%7Dinput%2Cbutton%2Cselect%2Ctextarea%7Bfont%2Dfamily%3Ainherit%3Bfont%2Dsize%3Ainherit%3Bline%2Dheight%3Ainherit%7Da%7Bcolor%3A%23158cba%3Btext%2Ddecoration%3Anone%7Da%3Ahover%2Ca%3Afocus%7Bcolor%3A%23158cba%3Btext%2Ddecoration%3Aunderline%7Da%3Afocus%7Boutline%3Athin%20dotted%3Boutline%3A5px%20auto%20%2Dwebkit%2Dfocus%2Dring%2Dcolor%3Boutline%2Doffset%3A%2D2px%7Dfigure%7Bmargin%3A0%7Dimg%7Bvertical%2Dalign%3Amiddle%7D%2Eimg%2Dresponsive%2C%2Ethumbnail%3Eimg%2C%2Ethumbnail%20a%3Eimg%2C%2Ecarousel%2Dinner%3E%2Eitem%3Eimg%2C%2Ecarousel%2Dinner%3E%2Eitem%3Ea%3Eimg%7Bdisplay%3Ablock%3Bmax%2Dwidth%3A100%25%3Bheight%3Aauto%7D%2Eimg%2Drounded%7Bborder%2Dradius%3A5px%7D%2Eimg%2Dthumbnail%7Bpadding%3A4px%3Bline%2Dheight%3A1%2E42857143%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20%23eeeeee%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dtransition%3Aall%20%2E2s%20ease%2Din%2Dout%3B%2Do%2Dtransition%3Aall%20%2E2s%20ease%2Din%2Dout%3Btransition%3Aall%20%2E2s%20ease%2Din%2Dout%3Bdisplay%3Ainline%2Dblock%3Bmax%2Dwidth%3A100%25%3Bheight%3Aauto%7D%2Eimg%2Dcircle%7Bborder%2Dradius%3A50%25%7Dhr%7Bmargin%2Dtop%3A20px%3Bmargin%2Dbottom%3A20px%3Bborder%3A0%3Bborder%2Dtop%3A1px%20solid%20%23eeeeee%7D%2Esr%2Donly%7Bposition%3Aabsolute%3Bwidth%3A1px%3Bheight%3A1px%3Bmargin%3A%2D1px%3Bpadding%3A0%3Boverflow%3Ahidden%3Bclip%3Arect%280%2C%200%2C%200%2C%200%29%3Bborder%3A0%7D%2Esr%2Donly%2Dfocusable%3Aactive%2C%2Esr%2Donly%2Dfocusable%3Afocus%7Bposition%3Astatic%3Bwidth%3Aauto%3Bheight%3Aauto%3Bmargin%3A0%3Boverflow%3Avisible%3Bclip%3Aauto%7D%5Brole%3D%22button%22%5D%7Bcursor%3Apointer%7Dh1%2Ch2%2Ch3%2Ch4%2Ch5%2Ch6%2C%2Eh1%2C%2Eh2%2C%2Eh3%2C%2Eh4%2C%2Eh5%2C%2Eh6%7Bfont%2Dfamily%3Ainherit%3Bfont%2Dweight%3A400%3Bline%2Dheight%3A1%2E1%3Bcolor%3A%23333333%7Dh1%20small%2Ch2%20small%2Ch3%20small%2Ch4%20small%2Ch5%20small%2Ch6%20small%2C%2Eh1%20small%2C%2Eh2%20small%2C%2Eh3%20small%2C%2Eh4%20small%2C%2Eh5%20small%2C%2Eh6%20small%2Ch1%20%2Esmall%2Ch2%20%2Esmall%2Ch3%20%2Esmall%2Ch4%20%2Esmall%2Ch5%20%2Esmall%2Ch6%20%2Esmall%2C%2Eh1%20%2Esmall%2C%2Eh2%20%2Esmall%2C%2Eh3%20%2Esmall%2C%2Eh4%20%2Esmall%2C%2Eh5%20%2Esmall%2C%2Eh6%20%2Esmall%7Bfont%2Dweight%3Anormal%3Bline%2Dheight%3A1%3Bcolor%3A%23999999%7Dh1%2C%2Eh1%2Ch2%2C%2Eh2%2Ch3%2C%2Eh3%7Bmargin%2Dtop%3A20px%3Bmargin%2Dbottom%3A10px%7Dh1%20small%2C%2Eh1%20small%2Ch2%20small%2C%2Eh2%20small%2Ch3%20small%2C%2Eh3%20small%2Ch1%20%2Esmall%2C%2Eh1%20%2Esmall%2Ch2%20%2Esmall%2C%2Eh2%20%2Esmall%2Ch3%20%2Esmall%2C%2Eh3%20%2Esmall%7Bfont%2Dsize%3A65%25%7Dh4%2C%2Eh4%2Ch5%2C%2Eh5%2Ch6%2C%2Eh6%7Bmargin%2Dtop%3A10px%3Bmargin%2Dbottom%3A10px%7Dh4%20small%2C%2Eh4%20small%2Ch5%20small%2C%2Eh5%20small%2Ch6%20small%2C%2Eh6%20small%2Ch4%20%2Esmall%2C%2Eh4%20%2Esmall%2Ch5%20%2Esmall%2C%2Eh5%20%2Esmall%2Ch6%20%2Esmall%2C%2Eh6%20%2Esmall%7Bfont%2Dsize%3A75%25%7Dh1%2C%2Eh1%7Bfont%2Dsize%3A36px%7Dh2%2C%2Eh2%7Bfont%2Dsize%3A30px%7Dh3%2C%2Eh3%7Bfont%2Dsize%3A24px%7Dh4%2C%2Eh4%7Bfont%2Dsize%3A18px%7Dh5%2C%2Eh5%7Bfont%2Dsize%3A14px%7Dh6%2C%2Eh6%7Bfont%2Dsize%3A12px%7Dp%7Bmargin%3A0%200%2010px%7D%2Elead%7Bmargin%2Dbottom%3A20px%3Bfont%2Dsize%3A16px%3Bfont%2Dweight%3A300%3Bline%2Dheight%3A1%2E4%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Elead%7Bfont%2Dsize%3A21px%7D%7Dsmall%2C%2Esmall%7Bfont%2Dsize%3A85%25%7Dmark%2C%2Emark%7Bbackground%2Dcolor%3A%23ff851b%3Bpadding%3A%2E2em%7D%2Etext%2Dleft%7Btext%2Dalign%3Aleft%7D%2Etext%2Dright%7Btext%2Dalign%3Aright%7D%2Etext%2Dcenter%7Btext%2Dalign%3Acenter%7D%2Etext%2Djustify%7Btext%2Dalign%3Ajustify%7D%2Etext%2Dnowrap%7Bwhite%2Dspace%3Anowrap%7D%2Etext%2Dlowercase%7Btext%2Dtransform%3Alowercase%7D%2Etext%2Duppercase%7Btext%2Dtransform%3Auppercase%7D%2Etext%2Dcapitalize%7Btext%2Dtransform%3Acapitalize%7D%2Etext%2Dmuted%7Bcolor%3A%23999999%7D%2Etext%2Dprimary%7Bcolor%3A%23158cba%7Da%2Etext%2Dprimary%3Ahover%2Ca%2Etext%2Dprimary%3Afocus%7Bcolor%3A%23106a8c%7D%2Etext%2Dsuccess%7Bcolor%3A%23ffffff%7Da%2Etext%2Dsuccess%3Ahover%2Ca%2Etext%2Dsuccess%3Afocus%7Bcolor%3A%23e6e6e6%7D%2Etext%2Dinfo%7Bcolor%3A%23ffffff%7Da%2Etext%2Dinfo%3Ahover%2Ca%2Etext%2Dinfo%3Afocus%7Bcolor%3A%23e6e6e6%7D%2Etext%2Dwarning%7Bcolor%3A%23ffffff%7Da%2Etext%2Dwarning%3Ahover%2Ca%2Etext%2Dwarning%3Afocus%7Bcolor%3A%23e6e6e6%7D%2Etext%2Ddanger%7Bcolor%3A%23ffffff%7Da%2Etext%2Ddanger%3Ahover%2Ca%2Etext%2Ddanger%3Afocus%7Bcolor%3A%23e6e6e6%7D%2Ebg%2Dprimary%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23158cba%7Da%2Ebg%2Dprimary%3Ahover%2Ca%2Ebg%2Dprimary%3Afocus%7Bbackground%2Dcolor%3A%23106a8c%7D%2Ebg%2Dsuccess%7Bbackground%2Dcolor%3A%2328b62c%7Da%2Ebg%2Dsuccess%3Ahover%2Ca%2Ebg%2Dsuccess%3Afocus%7Bbackground%2Dcolor%3A%231f8c22%7D%2Ebg%2Dinfo%7Bbackground%2Dcolor%3A%2375caeb%7Da%2Ebg%2Dinfo%3Ahover%2Ca%2Ebg%2Dinfo%3Afocus%7Bbackground%2Dcolor%3A%2348b9e5%7D%2Ebg%2Dwarning%7Bbackground%2Dcolor%3A%23ff851b%7Da%2Ebg%2Dwarning%3Ahover%2Ca%2Ebg%2Dwarning%3Afocus%7Bbackground%2Dcolor%3A%23e76b00%7D%2Ebg%2Ddanger%7Bbackground%2Dcolor%3A%23ff4136%7Da%2Ebg%2Ddanger%3Ahover%2Ca%2Ebg%2Ddanger%3Afocus%7Bbackground%2Dcolor%3A%23ff1103%7D%2Epage%2Dheader%7Bpadding%2Dbottom%3A9px%3Bmargin%3A40px%200%2020px%3Bborder%2Dbottom%3A1px%20solid%20%23eeeeee%7Dul%2Col%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A10px%7Dul%20ul%2Col%20ul%2Cul%20ol%2Col%20ol%7Bmargin%2Dbottom%3A0%7D%2Elist%2Dunstyled%7Bpadding%2Dleft%3A0%3Blist%2Dstyle%3Anone%7D%2Elist%2Dinline%7Bpadding%2Dleft%3A0%3Blist%2Dstyle%3Anone%3Bmargin%2Dleft%3A%2D5px%7D%2Elist%2Dinline%3Eli%7Bdisplay%3Ainline%2Dblock%3Bpadding%2Dleft%3A5px%3Bpadding%2Dright%3A5px%7Ddl%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A20px%7Ddt%2Cdd%7Bline%2Dheight%3A1%2E42857143%7Ddt%7Bfont%2Dweight%3Abold%7Ddd%7Bmargin%2Dleft%3A0%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Edl%2Dhorizontal%20dt%7Bfloat%3Aleft%3Bwidth%3A160px%3Bclear%3Aleft%3Btext%2Dalign%3Aright%3Boverflow%3Ahidden%3Btext%2Doverflow%3Aellipsis%3Bwhite%2Dspace%3Anowrap%7D%2Edl%2Dhorizontal%20dd%7Bmargin%2Dleft%3A180px%7D%7Dabbr%5Btitle%5D%2Cabbr%5Bdata%2Doriginal%2Dtitle%5D%7Bcursor%3Ahelp%3Bborder%2Dbottom%3A1px%20dotted%20%23999999%7D%2Einitialism%7Bfont%2Dsize%3A90%25%3Btext%2Dtransform%3Auppercase%7Dblockquote%7Bpadding%3A10px%2020px%3Bmargin%3A0%200%2020px%3Bfont%2Dsize%3A17%2E5px%3Bborder%2Dleft%3A5px%20solid%20%23eeeeee%7Dblockquote%20p%3Alast%2Dchild%2Cblockquote%20ul%3Alast%2Dchild%2Cblockquote%20ol%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%7Dblockquote%20footer%2Cblockquote%20small%2Cblockquote%20%2Esmall%7Bdisplay%3Ablock%3Bfont%2Dsize%3A80%25%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23999999%7Dblockquote%20footer%3Abefore%2Cblockquote%20small%3Abefore%2Cblockquote%20%2Esmall%3Abefore%7Bcontent%3A%27%5C2014%20%5C00A0%27%7D%2Eblockquote%2Dreverse%2Cblockquote%2Epull%2Dright%7Bpadding%2Dright%3A15px%3Bpadding%2Dleft%3A0%3Bborder%2Dright%3A5px%20solid%20%23eeeeee%3Bborder%2Dleft%3A0%3Btext%2Dalign%3Aright%7D%2Eblockquote%2Dreverse%20footer%3Abefore%2Cblockquote%2Epull%2Dright%20footer%3Abefore%2C%2Eblockquote%2Dreverse%20small%3Abefore%2Cblockquote%2Epull%2Dright%20small%3Abefore%2C%2Eblockquote%2Dreverse%20%2Esmall%3Abefore%2Cblockquote%2Epull%2Dright%20%2Esmall%3Abefore%7Bcontent%3A%27%27%7D%2Eblockquote%2Dreverse%20footer%3Aafter%2Cblockquote%2Epull%2Dright%20footer%3Aafter%2C%2Eblockquote%2Dreverse%20small%3Aafter%2Cblockquote%2Epull%2Dright%20small%3Aafter%2C%2Eblockquote%2Dreverse%20%2Esmall%3Aafter%2Cblockquote%2Epull%2Dright%20%2Esmall%3Aafter%7Bcontent%3A%27%5C00A0%20%5C2014%27%7Daddress%7Bmargin%2Dbottom%3A20px%3Bfont%2Dstyle%3Anormal%3Bline%2Dheight%3A1%2E42857143%7Dcode%2Ckbd%2Cpre%2Csamp%7Bfont%2Dfamily%3Amonospace%7Dcode%7Bpadding%3A2px%204px%3Bfont%2Dsize%3A90%25%3Bcolor%3A%23c7254e%3Bbackground%2Dcolor%3A%23f9f2f4%3Bborder%2Dradius%3A4px%7Dkbd%7Bpadding%3A2px%204px%3Bfont%2Dsize%3A90%25%3Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23333333%3Bborder%2Dradius%3A2px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C0%2E25%29%3Bbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C0%2E25%29%7Dkbd%20kbd%7Bpadding%3A0%3Bfont%2Dsize%3A100%25%3Bfont%2Dweight%3Abold%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7Dpre%7Bdisplay%3Ablock%3Bpadding%3A9%2E5px%3Bmargin%3A0%200%2010px%3Bfont%2Dsize%3A13px%3Bline%2Dheight%3A1%2E42857143%3Bword%2Dbreak%3Abreak%2Dall%3Bword%2Dwrap%3Abreak%2Dword%3Bcolor%3A%23333333%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%3A1px%20solid%20%23cccccc%3Bborder%2Dradius%3A4px%7Dpre%20code%7Bpadding%3A0%3Bfont%2Dsize%3Ainherit%3Bcolor%3Ainherit%3Bwhite%2Dspace%3Apre%2Dwrap%3Bbackground%2Dcolor%3Atransparent%3Bborder%2Dradius%3A0%7D%2Epre%2Dscrollable%7Bmax%2Dheight%3A340px%3Boverflow%2Dy%3Ascroll%7D%2Econtainer%7Bmargin%2Dright%3Aauto%3Bmargin%2Dleft%3Aauto%3Bpadding%2Dleft%3A15px%3Bpadding%2Dright%3A15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Econtainer%7Bwidth%3A750px%7D%7D%40media%20%28min%2Dwidth%3A992px%29%7B%2Econtainer%7Bwidth%3A970px%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Econtainer%7Bwidth%3A1170px%7D%7D%2Econtainer%2Dfluid%7Bmargin%2Dright%3Aauto%3Bmargin%2Dleft%3Aauto%3Bpadding%2Dleft%3A15px%3Bpadding%2Dright%3A15px%7D%2Erow%7Bmargin%2Dleft%3A%2D15px%3Bmargin%2Dright%3A%2D15px%7D%2Ecol%2Dxs%2D1%2C%2Ecol%2Dsm%2D1%2C%2Ecol%2Dmd%2D1%2C%2Ecol%2Dlg%2D1%2C%2Ecol%2Dxs%2D2%2C%2Ecol%2Dsm%2D2%2C%2Ecol%2Dmd%2D2%2C%2Ecol%2Dlg%2D2%2C%2Ecol%2Dxs%2D3%2C%2Ecol%2Dsm%2D3%2C%2Ecol%2Dmd%2D3%2C%2Ecol%2Dlg%2D3%2C%2Ecol%2Dxs%2D4%2C%2Ecol%2Dsm%2D4%2C%2Ecol%2Dmd%2D4%2C%2Ecol%2Dlg%2D4%2C%2Ecol%2Dxs%2D5%2C%2Ecol%2Dsm%2D5%2C%2Ecol%2Dmd%2D5%2C%2Ecol%2Dlg%2D5%2C%2Ecol%2Dxs%2D6%2C%2Ecol%2Dsm%2D6%2C%2Ecol%2Dmd%2D6%2C%2Ecol%2Dlg%2D6%2C%2Ecol%2Dxs%2D7%2C%2Ecol%2Dsm%2D7%2C%2Ecol%2Dmd%2D7%2C%2Ecol%2Dlg%2D7%2C%2Ecol%2Dxs%2D8%2C%2Ecol%2Dsm%2D8%2C%2Ecol%2Dmd%2D8%2C%2Ecol%2Dlg%2D8%2C%2Ecol%2Dxs%2D9%2C%2Ecol%2Dsm%2D9%2C%2Ecol%2Dmd%2D9%2C%2Ecol%2Dlg%2D9%2C%2Ecol%2Dxs%2D10%2C%2Ecol%2Dsm%2D10%2C%2Ecol%2Dmd%2D10%2C%2Ecol%2Dlg%2D10%2C%2Ecol%2Dxs%2D11%2C%2Ecol%2Dsm%2D11%2C%2Ecol%2Dmd%2D11%2C%2Ecol%2Dlg%2D11%2C%2Ecol%2Dxs%2D12%2C%2Ecol%2Dsm%2D12%2C%2Ecol%2Dmd%2D12%2C%2Ecol%2Dlg%2D12%7Bposition%3Arelative%3Bmin%2Dheight%3A1px%3Bpadding%2Dleft%3A15px%3Bpadding%2Dright%3A15px%7D%2Ecol%2Dxs%2D1%2C%2Ecol%2Dxs%2D2%2C%2Ecol%2Dxs%2D3%2C%2Ecol%2Dxs%2D4%2C%2Ecol%2Dxs%2D5%2C%2Ecol%2Dxs%2D6%2C%2Ecol%2Dxs%2D7%2C%2Ecol%2Dxs%2D8%2C%2Ecol%2Dxs%2D9%2C%2Ecol%2Dxs%2D10%2C%2Ecol%2Dxs%2D11%2C%2Ecol%2Dxs%2D12%7Bfloat%3Aleft%7D%2Ecol%2Dxs%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dxs%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dxs%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dxs%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dxs%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dxs%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dxs%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dxs%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dxs%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dxs%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dxs%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dxs%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dxs%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dxs%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dxs%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dxs%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dxs%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dxs%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dxs%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dxs%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dxs%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dxs%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dxs%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dxs%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dxs%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dxs%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D0%7Bmargin%2Dleft%3A0%25%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Ecol%2Dsm%2D1%2C%2Ecol%2Dsm%2D2%2C%2Ecol%2Dsm%2D3%2C%2Ecol%2Dsm%2D4%2C%2Ecol%2Dsm%2D5%2C%2Ecol%2Dsm%2D6%2C%2Ecol%2Dsm%2D7%2C%2Ecol%2Dsm%2D8%2C%2Ecol%2Dsm%2D9%2C%2Ecol%2Dsm%2D10%2C%2Ecol%2Dsm%2D11%2C%2Ecol%2Dsm%2D12%7Bfloat%3Aleft%7D%2Ecol%2Dsm%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dsm%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dsm%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dsm%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dsm%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dsm%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dsm%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dsm%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dsm%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dsm%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dsm%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dsm%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dsm%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dsm%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dsm%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dsm%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dsm%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dsm%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dsm%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dsm%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dsm%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dsm%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dsm%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dsm%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dsm%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dsm%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D0%7Bmargin%2Dleft%3A0%25%7D%7D%40media%20%28min%2Dwidth%3A992px%29%7B%2Ecol%2Dmd%2D1%2C%2Ecol%2Dmd%2D2%2C%2Ecol%2Dmd%2D3%2C%2Ecol%2Dmd%2D4%2C%2Ecol%2Dmd%2D5%2C%2Ecol%2Dmd%2D6%2C%2Ecol%2Dmd%2D7%2C%2Ecol%2Dmd%2D8%2C%2Ecol%2Dmd%2D9%2C%2Ecol%2Dmd%2D10%2C%2Ecol%2Dmd%2D11%2C%2Ecol%2Dmd%2D12%7Bfloat%3Aleft%7D%2Ecol%2Dmd%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dmd%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dmd%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dmd%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dmd%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dmd%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dmd%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dmd%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dmd%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dmd%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dmd%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dmd%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dmd%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dmd%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dmd%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dmd%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dmd%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dmd%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dmd%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dmd%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dmd%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dmd%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dmd%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dmd%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dmd%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dmd%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D0%7Bmargin%2Dleft%3A0%25%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Ecol%2Dlg%2D1%2C%2Ecol%2Dlg%2D2%2C%2Ecol%2Dlg%2D3%2C%2Ecol%2Dlg%2D4%2C%2Ecol%2Dlg%2D5%2C%2Ecol%2Dlg%2D6%2C%2Ecol%2Dlg%2D7%2C%2Ecol%2Dlg%2D8%2C%2Ecol%2Dlg%2D9%2C%2Ecol%2Dlg%2D10%2C%2Ecol%2Dlg%2D11%2C%2Ecol%2Dlg%2D12%7Bfloat%3Aleft%7D%2Ecol%2Dlg%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dlg%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dlg%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dlg%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dlg%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dlg%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dlg%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dlg%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dlg%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dlg%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dlg%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dlg%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dlg%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dlg%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dlg%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dlg%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dlg%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dlg%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dlg%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dlg%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dlg%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dlg%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dlg%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dlg%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dlg%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dlg%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D0%7Bmargin%2Dleft%3A0%25%7D%7Dtable%7Bbackground%2Dcolor%3Atransparent%7Dcaption%7Bpadding%2Dtop%3A8px%3Bpadding%2Dbottom%3A8px%3Bcolor%3A%23999999%3Btext%2Dalign%3Aleft%7Dth%7B%7D%2Etable%7Bwidth%3A100%25%3Bmax%2Dwidth%3A100%25%3Bmargin%2Dbottom%3A20px%7D%2Etable%3Ethead%3Etr%3Eth%2C%2Etable%3Etbody%3Etr%3Eth%2C%2Etable%3Etfoot%3Etr%3Eth%2C%2Etable%3Ethead%3Etr%3Etd%2C%2Etable%3Etbody%3Etr%3Etd%2C%2Etable%3Etfoot%3Etr%3Etd%7Bpadding%3A8px%3Bline%2Dheight%3A1%2E42857143%3Bvertical%2Dalign%3Atop%3Bborder%2Dtop%3A1px%20solid%20%23eeeeee%7D%2Etable%3Ethead%3Etr%3Eth%7Bvertical%2Dalign%3Abottom%3Bborder%2Dbottom%3A2px%20solid%20%23eeeeee%7D%2Etable%3Ecaption%2Bthead%3Etr%3Afirst%2Dchild%3Eth%2C%2Etable%3Ecolgroup%2Bthead%3Etr%3Afirst%2Dchild%3Eth%2C%2Etable%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%3Eth%2C%2Etable%3Ecaption%2Bthead%3Etr%3Afirst%2Dchild%3Etd%2C%2Etable%3Ecolgroup%2Bthead%3Etr%3Afirst%2Dchild%3Etd%2C%2Etable%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%3Etd%7Bborder%2Dtop%3A0%7D%2Etable%3Etbody%2Btbody%7Bborder%2Dtop%3A2px%20solid%20%23eeeeee%7D%2Etable%20%2Etable%7Bbackground%2Dcolor%3A%23ffffff%7D%2Etable%2Dcondensed%3Ethead%3Etr%3Eth%2C%2Etable%2Dcondensed%3Etbody%3Etr%3Eth%2C%2Etable%2Dcondensed%3Etfoot%3Etr%3Eth%2C%2Etable%2Dcondensed%3Ethead%3Etr%3Etd%2C%2Etable%2Dcondensed%3Etbody%3Etr%3Etd%2C%2Etable%2Dcondensed%3Etfoot%3Etr%3Etd%7Bpadding%3A5px%7D%2Etable%2Dbordered%7Bborder%3A1px%20solid%20%23eeeeee%7D%2Etable%2Dbordered%3Ethead%3Etr%3Eth%2C%2Etable%2Dbordered%3Etbody%3Etr%3Eth%2C%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%2C%2Etable%2Dbordered%3Ethead%3Etr%3Etd%2C%2Etable%2Dbordered%3Etbody%3Etr%3Etd%2C%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%7Bborder%3A1px%20solid%20%23eeeeee%7D%2Etable%2Dbordered%3Ethead%3Etr%3Eth%2C%2Etable%2Dbordered%3Ethead%3Etr%3Etd%7Bborder%2Dbottom%2Dwidth%3A2px%7D%2Etable%2Dstriped%3Etbody%3Etr%3Anth%2Dof%2Dtype%28odd%29%7Bbackground%2Dcolor%3A%23f9f9f9%7D%2Etable%2Dhover%3Etbody%3Etr%3Ahover%7Bbackground%2Dcolor%3A%23f5f5f5%7Dtable%20col%5Bclass%2A%3D%22col%2D%22%5D%7Bposition%3Astatic%3Bfloat%3Anone%3Bdisplay%3Atable%2Dcolumn%7Dtable%20td%5Bclass%2A%3D%22col%2D%22%5D%2Ctable%20th%5Bclass%2A%3D%22col%2D%22%5D%7Bposition%3Astatic%3Bfloat%3Anone%3Bdisplay%3Atable%2Dcell%7D%2Etable%3Ethead%3Etr%3Etd%2Eactive%2C%2Etable%3Etbody%3Etr%3Etd%2Eactive%2C%2Etable%3Etfoot%3Etr%3Etd%2Eactive%2C%2Etable%3Ethead%3Etr%3Eth%2Eactive%2C%2Etable%3Etbody%3Etr%3Eth%2Eactive%2C%2Etable%3Etfoot%3Etr%3Eth%2Eactive%2C%2Etable%3Ethead%3Etr%2Eactive%3Etd%2C%2Etable%3Etbody%3Etr%2Eactive%3Etd%2C%2Etable%3Etfoot%3Etr%2Eactive%3Etd%2C%2Etable%3Ethead%3Etr%2Eactive%3Eth%2C%2Etable%3Etbody%3Etr%2Eactive%3Eth%2C%2Etable%3Etfoot%3Etr%2Eactive%3Eth%7Bbackground%2Dcolor%3A%23f5f5f5%7D%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Eactive%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Eactive%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%2Eactive%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Eactive%2C%2Etable%2Dhover%3Etbody%3Etr%2Eactive%3Ahover%3Eth%7Bbackground%2Dcolor%3A%23e8e8e8%7D%2Etable%3Ethead%3Etr%3Etd%2Esuccess%2C%2Etable%3Etbody%3Etr%3Etd%2Esuccess%2C%2Etable%3Etfoot%3Etr%3Etd%2Esuccess%2C%2Etable%3Ethead%3Etr%3Eth%2Esuccess%2C%2Etable%3Etbody%3Etr%3Eth%2Esuccess%2C%2Etable%3Etfoot%3Etr%3Eth%2Esuccess%2C%2Etable%3Ethead%3Etr%2Esuccess%3Etd%2C%2Etable%3Etbody%3Etr%2Esuccess%3Etd%2C%2Etable%3Etfoot%3Etr%2Esuccess%3Etd%2C%2Etable%3Ethead%3Etr%2Esuccess%3Eth%2C%2Etable%3Etbody%3Etr%2Esuccess%3Eth%2C%2Etable%3Etfoot%3Etr%2Esuccess%3Eth%7Bbackground%2Dcolor%3A%2328b62c%7D%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Esuccess%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Esuccess%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%2Esuccess%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Esuccess%2C%2Etable%2Dhover%3Etbody%3Etr%2Esuccess%3Ahover%3Eth%7Bbackground%2Dcolor%3A%2323a127%7D%2Etable%3Ethead%3Etr%3Etd%2Einfo%2C%2Etable%3Etbody%3Etr%3Etd%2Einfo%2C%2Etable%3Etfoot%3Etr%3Etd%2Einfo%2C%2Etable%3Ethead%3Etr%3Eth%2Einfo%2C%2Etable%3Etbody%3Etr%3Eth%2Einfo%2C%2Etable%3Etfoot%3Etr%3Eth%2Einfo%2C%2Etable%3Ethead%3Etr%2Einfo%3Etd%2C%2Etable%3Etbody%3Etr%2Einfo%3Etd%2C%2Etable%3Etfoot%3Etr%2Einfo%3Etd%2C%2Etable%3Ethead%3Etr%2Einfo%3Eth%2C%2Etable%3Etbody%3Etr%2Einfo%3Eth%2C%2Etable%3Etfoot%3Etr%2Einfo%3Eth%7Bbackground%2Dcolor%3A%2375caeb%7D%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Einfo%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Einfo%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%2Einfo%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Einfo%2C%2Etable%2Dhover%3Etbody%3Etr%2Einfo%3Ahover%3Eth%7Bbackground%2Dcolor%3A%235fc1e8%7D%2Etable%3Ethead%3Etr%3Etd%2Ewarning%2C%2Etable%3Etbody%3Etr%3Etd%2Ewarning%2C%2Etable%3Etfoot%3Etr%3Etd%2Ewarning%2C%2Etable%3Ethead%3Etr%3Eth%2Ewarning%2C%2Etable%3Etbody%3Etr%3Eth%2Ewarning%2C%2Etable%3Etfoot%3Etr%3Eth%2Ewarning%2C%2Etable%3Ethead%3Etr%2Ewarning%3Etd%2C%2Etable%3Etbody%3Etr%2Ewarning%3Etd%2C%2Etable%3Etfoot%3Etr%2Ewarning%3Etd%2C%2Etable%3Ethead%3Etr%2Ewarning%3Eth%2C%2Etable%3Etbody%3Etr%2Ewarning%3Eth%2C%2Etable%3Etfoot%3Etr%2Ewarning%3Eth%7Bbackground%2Dcolor%3A%23ff851b%7D%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Ewarning%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Ewarning%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%2Ewarning%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Ewarning%2C%2Etable%2Dhover%3Etbody%3Etr%2Ewarning%3Ahover%3Eth%7Bbackground%2Dcolor%3A%23ff7701%7D%2Etable%3Ethead%3Etr%3Etd%2Edanger%2C%2Etable%3Etbody%3Etr%3Etd%2Edanger%2C%2Etable%3Etfoot%3Etr%3Etd%2Edanger%2C%2Etable%3Ethead%3Etr%3Eth%2Edanger%2C%2Etable%3Etbody%3Etr%3Eth%2Edanger%2C%2Etable%3Etfoot%3Etr%3Eth%2Edanger%2C%2Etable%3Ethead%3Etr%2Edanger%3Etd%2C%2Etable%3Etbody%3Etr%2Edanger%3Etd%2C%2Etable%3Etfoot%3Etr%2Edanger%3Etd%2C%2Etable%3Ethead%3Etr%2Edanger%3Eth%2C%2Etable%3Etbody%3Etr%2Edanger%3Eth%2C%2Etable%3Etfoot%3Etr%2Edanger%3Eth%7Bbackground%2Dcolor%3A%23ff4136%7D%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Edanger%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Edanger%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%2Edanger%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Edanger%2C%2Etable%2Dhover%3Etbody%3Etr%2Edanger%3Ahover%3Eth%7Bbackground%2Dcolor%3A%23ff291c%7D%2Etable%2Dresponsive%7Boverflow%2Dx%3Aauto%3Bmin%2Dheight%3A0%2E01%25%7D%40media%20screen%20and%20%28max%2Dwidth%3A767px%29%7B%2Etable%2Dresponsive%7Bwidth%3A100%25%3Bmargin%2Dbottom%3A15px%3Boverflow%2Dy%3Ahidden%3B%2Dms%2Doverflow%2Dstyle%3A%2Dms%2Dautohiding%2Dscrollbar%3Bborder%3A1px%20solid%20%23eeeeee%7D%2Etable%2Dresponsive%3E%2Etable%7Bmargin%2Dbottom%3A0%7D%2Etable%2Dresponsive%3E%2Etable%3Ethead%3Etr%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%3Etbody%3Etr%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%3Etfoot%3Etr%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%3Ethead%3Etr%3Etd%2C%2Etable%2Dresponsive%3E%2Etable%3Etbody%3Etr%3Etd%2C%2Etable%2Dresponsive%3E%2Etable%3Etfoot%3Etr%3Etd%7Bwhite%2Dspace%3Anowrap%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%7Bborder%3A0%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Afirst%2Dchild%7Bborder%2Dleft%3A0%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Alast%2Dchild%7Bborder%2Dright%3A0%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Etd%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Etd%7Bborder%2Dbottom%3A0%7D%7Dfieldset%7Bpadding%3A0%3Bmargin%3A0%3Bborder%3A0%3Bmin%2Dwidth%3A0%7Dlegend%7Bdisplay%3Ablock%3Bwidth%3A100%25%3Bpadding%3A0%3Bmargin%2Dbottom%3A20px%3Bfont%2Dsize%3A21px%3Bline%2Dheight%3Ainherit%3Bcolor%3A%23333333%3Bborder%3A0%3Bborder%2Dbottom%3A1px%20solid%20%23e5e5e5%7Dlabel%7Bdisplay%3Ainline%2Dblock%3Bmax%2Dwidth%3A100%25%3Bmargin%2Dbottom%3A5px%3Bfont%2Dweight%3Abold%7Dinput%5Btype%3D%22search%22%5D%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%7Dinput%5Btype%3D%22radio%22%5D%2Cinput%5Btype%3D%22checkbox%22%5D%7Bmargin%3A4px%200%200%3Bmargin%2Dtop%3A1px%20%5C9%3Bline%2Dheight%3Anormal%7Dinput%5Btype%3D%22file%22%5D%7Bdisplay%3Ablock%7Dinput%5Btype%3D%22range%22%5D%7Bdisplay%3Ablock%3Bwidth%3A100%25%7Dselect%5Bmultiple%5D%2Cselect%5Bsize%5D%7Bheight%3Aauto%7Dinput%5Btype%3D%22file%22%5D%3Afocus%2Cinput%5Btype%3D%22radio%22%5D%3Afocus%2Cinput%5Btype%3D%22checkbox%22%5D%3Afocus%7Boutline%3Athin%20dotted%3Boutline%3A5px%20auto%20%2Dwebkit%2Dfocus%2Dring%2Dcolor%3Boutline%2Doffset%3A%2D2px%7Doutput%7Bdisplay%3Ablock%3Bpadding%2Dtop%3A8px%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23555555%7D%2Eform%2Dcontrol%7Bdisplay%3Ablock%3Bwidth%3A100%25%3Bheight%3A38px%3Bpadding%3A7px%2012px%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23ffffff%3Bbackground%2Dimage%3Anone%3Bborder%3A1px%20solid%20%23e7e7e7%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%3B%2Dwebkit%2Dtransition%3Aborder%2Dcolor%20ease%2Din%2Dout%20%2E15s%2C%2Dwebkit%2Dbox%2Dshadow%20ease%2Din%2Dout%20%2E15s%3B%2Do%2Dtransition%3Aborder%2Dcolor%20ease%2Din%2Dout%20%2E15s%2Cbox%2Dshadow%20ease%2Din%2Dout%20%2E15s%3Btransition%3Aborder%2Dcolor%20ease%2Din%2Dout%20%2E15s%2Cbox%2Dshadow%20ease%2Din%2Dout%20%2E15s%7D%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%2366afe9%3Boutline%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%208px%20rgba%28102%2C175%2C233%2C0%2E6%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%208px%20rgba%28102%2C175%2C233%2C0%2E6%29%7D%2Eform%2Dcontrol%3A%3A%2Dmoz%2Dplaceholder%7Bcolor%3A%23999999%3Bopacity%3A1%7D%2Eform%2Dcontrol%3A%2Dms%2Dinput%2Dplaceholder%7Bcolor%3A%23999999%7D%2Eform%2Dcontrol%3A%3A%2Dwebkit%2Dinput%2Dplaceholder%7Bcolor%3A%23999999%7D%2Eform%2Dcontrol%3A%3A%2Dms%2Dexpand%7Bborder%3A0%3Bbackground%2Dcolor%3Atransparent%7D%2Eform%2Dcontrol%5Bdisabled%5D%2C%2Eform%2Dcontrol%5Breadonly%5D%2Cfieldset%5Bdisabled%5D%20%2Eform%2Dcontrol%7Bbackground%2Dcolor%3A%23eeeeee%3Bopacity%3A1%7D%2Eform%2Dcontrol%5Bdisabled%5D%2Cfieldset%5Bdisabled%5D%20%2Eform%2Dcontrol%7Bcursor%3Anot%2Dallowed%7Dtextarea%2Eform%2Dcontrol%7Bheight%3Aauto%7Dinput%5Btype%3D%22search%22%5D%7B%2Dwebkit%2Dappearance%3Anone%7D%40media%20screen%20and%20%28%2Dwebkit%2Dmin%2Ddevice%2Dpixel%2Dratio%3A0%29%7Binput%5Btype%3D%22date%22%5D%2Eform%2Dcontrol%2Cinput%5Btype%3D%22time%22%5D%2Eform%2Dcontrol%2Cinput%5Btype%3D%22datetime%2Dlocal%22%5D%2Eform%2Dcontrol%2Cinput%5Btype%3D%22month%22%5D%2Eform%2Dcontrol%7Bline%2Dheight%3A38px%7Dinput%5Btype%3D%22date%22%5D%2Einput%2Dsm%2Cinput%5Btype%3D%22time%22%5D%2Einput%2Dsm%2Cinput%5Btype%3D%22datetime%2Dlocal%22%5D%2Einput%2Dsm%2Cinput%5Btype%3D%22month%22%5D%2Einput%2Dsm%2C%2Einput%2Dgroup%2Dsm%20input%5Btype%3D%22date%22%5D%2C%2Einput%2Dgroup%2Dsm%20input%5Btype%3D%22time%22%5D%2C%2Einput%2Dgroup%2Dsm%20input%5Btype%3D%22datetime%2Dlocal%22%5D%2C%2Einput%2Dgroup%2Dsm%20input%5Btype%3D%22month%22%5D%7Bline%2Dheight%3A28px%7Dinput%5Btype%3D%22date%22%5D%2Einput%2Dlg%2Cinput%5Btype%3D%22time%22%5D%2Einput%2Dlg%2Cinput%5Btype%3D%22datetime%2Dlocal%22%5D%2Einput%2Dlg%2Cinput%5Btype%3D%22month%22%5D%2Einput%2Dlg%2C%2Einput%2Dgroup%2Dlg%20input%5Btype%3D%22date%22%5D%2C%2Einput%2Dgroup%2Dlg%20input%5Btype%3D%22time%22%5D%2C%2Einput%2Dgroup%2Dlg%20input%5Btype%3D%22datetime%2Dlocal%22%5D%2C%2Einput%2Dgroup%2Dlg%20input%5Btype%3D%22month%22%5D%7Bline%2Dheight%3A52px%7D%7D%2Eform%2Dgroup%7Bmargin%2Dbottom%3A15px%7D%2Eradio%2C%2Echeckbox%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bmargin%2Dtop%3A10px%3Bmargin%2Dbottom%3A10px%7D%2Eradio%20label%2C%2Echeckbox%20label%7Bmin%2Dheight%3A20px%3Bpadding%2Dleft%3A20px%3Bmargin%2Dbottom%3A0%3Bfont%2Dweight%3Anormal%3Bcursor%3Apointer%7D%2Eradio%20input%5Btype%3D%22radio%22%5D%2C%2Eradio%2Dinline%20input%5Btype%3D%22radio%22%5D%2C%2Echeckbox%20input%5Btype%3D%22checkbox%22%5D%2C%2Echeckbox%2Dinline%20input%5Btype%3D%22checkbox%22%5D%7Bposition%3Aabsolute%3Bmargin%2Dleft%3A%2D20px%3Bmargin%2Dtop%3A4px%20%5C9%7D%2Eradio%2B%2Eradio%2C%2Echeckbox%2B%2Echeckbox%7Bmargin%2Dtop%3A%2D5px%7D%2Eradio%2Dinline%2C%2Echeckbox%2Dinline%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%3Bpadding%2Dleft%3A20px%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%3Bfont%2Dweight%3Anormal%3Bcursor%3Apointer%7D%2Eradio%2Dinline%2B%2Eradio%2Dinline%2C%2Echeckbox%2Dinline%2B%2Echeckbox%2Dinline%7Bmargin%2Dtop%3A0%3Bmargin%2Dleft%3A10px%7Dinput%5Btype%3D%22radio%22%5D%5Bdisabled%5D%2Cinput%5Btype%3D%22checkbox%22%5D%5Bdisabled%5D%2Cinput%5Btype%3D%22radio%22%5D%2Edisabled%2Cinput%5Btype%3D%22checkbox%22%5D%2Edisabled%2Cfieldset%5Bdisabled%5D%20input%5Btype%3D%22radio%22%5D%2Cfieldset%5Bdisabled%5D%20input%5Btype%3D%22checkbox%22%5D%7Bcursor%3Anot%2Dallowed%7D%2Eradio%2Dinline%2Edisabled%2C%2Echeckbox%2Dinline%2Edisabled%2Cfieldset%5Bdisabled%5D%20%2Eradio%2Dinline%2Cfieldset%5Bdisabled%5D%20%2Echeckbox%2Dinline%7Bcursor%3Anot%2Dallowed%7D%2Eradio%2Edisabled%20label%2C%2Echeckbox%2Edisabled%20label%2Cfieldset%5Bdisabled%5D%20%2Eradio%20label%2Cfieldset%5Bdisabled%5D%20%2Echeckbox%20label%7Bcursor%3Anot%2Dallowed%7D%2Eform%2Dcontrol%2Dstatic%7Bpadding%2Dtop%3A8px%3Bpadding%2Dbottom%3A8px%3Bmargin%2Dbottom%3A0%3Bmin%2Dheight%3A34px%7D%2Eform%2Dcontrol%2Dstatic%2Einput%2Dlg%2C%2Eform%2Dcontrol%2Dstatic%2Einput%2Dsm%7Bpadding%2Dleft%3A0%3Bpadding%2Dright%3A0%7D%2Einput%2Dsm%7Bheight%3A28px%3Bpadding%3A4px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A2px%7Dselect%2Einput%2Dsm%7Bheight%3A28px%3Bline%2Dheight%3A28px%7Dtextarea%2Einput%2Dsm%2Cselect%5Bmultiple%5D%2Einput%2Dsm%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dsm%20%2Eform%2Dcontrol%7Bheight%3A28px%3Bpadding%3A4px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A2px%7D%2Eform%2Dgroup%2Dsm%20select%2Eform%2Dcontrol%7Bheight%3A28px%3Bline%2Dheight%3A28px%7D%2Eform%2Dgroup%2Dsm%20textarea%2Eform%2Dcontrol%2C%2Eform%2Dgroup%2Dsm%20select%5Bmultiple%5D%2Eform%2Dcontrol%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dsm%20%2Eform%2Dcontrol%2Dstatic%7Bheight%3A28px%3Bmin%2Dheight%3A32px%3Bpadding%3A5px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%7D%2Einput%2Dlg%7Bheight%3A52px%3Bpadding%3A13px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A5px%7Dselect%2Einput%2Dlg%7Bheight%3A52px%3Bline%2Dheight%3A52px%7Dtextarea%2Einput%2Dlg%2Cselect%5Bmultiple%5D%2Einput%2Dlg%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dlg%20%2Eform%2Dcontrol%7Bheight%3A52px%3Bpadding%3A13px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A5px%7D%2Eform%2Dgroup%2Dlg%20select%2Eform%2Dcontrol%7Bheight%3A52px%3Bline%2Dheight%3A52px%7D%2Eform%2Dgroup%2Dlg%20textarea%2Eform%2Dcontrol%2C%2Eform%2Dgroup%2Dlg%20select%5Bmultiple%5D%2Eform%2Dcontrol%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dlg%20%2Eform%2Dcontrol%2Dstatic%7Bheight%3A52px%3Bmin%2Dheight%3A38px%3Bpadding%3A14px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%7D%2Ehas%2Dfeedback%7Bposition%3Arelative%7D%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%7Bpadding%2Dright%3A47%2E5px%7D%2Eform%2Dcontrol%2Dfeedback%7Bposition%3Aabsolute%3Btop%3A0%3Bright%3A0%3Bz%2Dindex%3A2%3Bdisplay%3Ablock%3Bwidth%3A38px%3Bheight%3A38px%3Bline%2Dheight%3A38px%3Btext%2Dalign%3Acenter%3Bpointer%2Devents%3Anone%7D%2Einput%2Dlg%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Einput%2Dgroup%2Dlg%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Eform%2Dgroup%2Dlg%20%2Eform%2Dcontrol%2B%2Eform%2Dcontrol%2Dfeedback%7Bwidth%3A52px%3Bheight%3A52px%3Bline%2Dheight%3A52px%7D%2Einput%2Dsm%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Einput%2Dgroup%2Dsm%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Eform%2Dgroup%2Dsm%20%2Eform%2Dcontrol%2B%2Eform%2Dcontrol%2Dfeedback%7Bwidth%3A28px%3Bheight%3A28px%3Bline%2Dheight%3A28px%7D%2Ehas%2Dsuccess%20%2Ehelp%2Dblock%2C%2Ehas%2Dsuccess%20%2Econtrol%2Dlabel%2C%2Ehas%2Dsuccess%20%2Eradio%2C%2Ehas%2Dsuccess%20%2Echeckbox%2C%2Ehas%2Dsuccess%20%2Eradio%2Dinline%2C%2Ehas%2Dsuccess%20%2Echeckbox%2Dinline%2C%2Ehas%2Dsuccess%2Eradio%20label%2C%2Ehas%2Dsuccess%2Echeckbox%20label%2C%2Ehas%2Dsuccess%2Eradio%2Dinline%20label%2C%2Ehas%2Dsuccess%2Echeckbox%2Dinline%20label%7Bcolor%3A%23ffffff%7D%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%7Bborder%2Dcolor%3A%23ffffff%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%7D%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%23e6e6e6%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%206px%20%23fff%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%206px%20%23fff%7D%2Ehas%2Dsuccess%20%2Einput%2Dgroup%2Daddon%7Bcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2328b62c%7D%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%23ffffff%7D%2Ehas%2Dwarning%20%2Ehelp%2Dblock%2C%2Ehas%2Dwarning%20%2Econtrol%2Dlabel%2C%2Ehas%2Dwarning%20%2Eradio%2C%2Ehas%2Dwarning%20%2Echeckbox%2C%2Ehas%2Dwarning%20%2Eradio%2Dinline%2C%2Ehas%2Dwarning%20%2Echeckbox%2Dinline%2C%2Ehas%2Dwarning%2Eradio%20label%2C%2Ehas%2Dwarning%2Echeckbox%20label%2C%2Ehas%2Dwarning%2Eradio%2Dinline%20label%2C%2Ehas%2Dwarning%2Echeckbox%2Dinline%20label%7Bcolor%3A%23ffffff%7D%2Ehas%2Dwarning%20%2Eform%2Dcontrol%7Bborder%2Dcolor%3A%23ffffff%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%7D%2Ehas%2Dwarning%20%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%23e6e6e6%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%206px%20%23fff%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%206px%20%23fff%7D%2Ehas%2Dwarning%20%2Einput%2Dgroup%2Daddon%7Bcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff851b%7D%2Ehas%2Dwarning%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%23ffffff%7D%2Ehas%2Derror%20%2Ehelp%2Dblock%2C%2Ehas%2Derror%20%2Econtrol%2Dlabel%2C%2Ehas%2Derror%20%2Eradio%2C%2Ehas%2Derror%20%2Echeckbox%2C%2Ehas%2Derror%20%2Eradio%2Dinline%2C%2Ehas%2Derror%20%2Echeckbox%2Dinline%2C%2Ehas%2Derror%2Eradio%20label%2C%2Ehas%2Derror%2Echeckbox%20label%2C%2Ehas%2Derror%2Eradio%2Dinline%20label%2C%2Ehas%2Derror%2Echeckbox%2Dinline%20label%7Bcolor%3A%23ffffff%7D%2Ehas%2Derror%20%2Eform%2Dcontrol%7Bborder%2Dcolor%3A%23ffffff%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%7D%2Ehas%2Derror%20%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%23e6e6e6%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%206px%20%23fff%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%206px%20%23fff%7D%2Ehas%2Derror%20%2Einput%2Dgroup%2Daddon%7Bcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff4136%7D%2Ehas%2Derror%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%23ffffff%7D%2Ehas%2Dfeedback%20label%7E%2Eform%2Dcontrol%2Dfeedback%7Btop%3A25px%7D%2Ehas%2Dfeedback%20label%2Esr%2Donly%7E%2Eform%2Dcontrol%2Dfeedback%7Btop%3A0%7D%2Ehelp%2Dblock%7Bdisplay%3Ablock%3Bmargin%2Dtop%3A5px%3Bmargin%2Dbottom%3A10px%3Bcolor%3A%23959595%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dinline%20%2Eform%2Dgroup%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Eform%2Dcontrol%7Bdisplay%3Ainline%2Dblock%3Bwidth%3Aauto%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Eform%2Dcontrol%2Dstatic%7Bdisplay%3Ainline%2Dblock%7D%2Eform%2Dinline%20%2Einput%2Dgroup%7Bdisplay%3Ainline%2Dtable%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Daddon%2C%2Eform%2Dinline%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Dbtn%2C%2Eform%2Dinline%20%2Einput%2Dgroup%20%2Eform%2Dcontrol%7Bwidth%3Aauto%7D%2Eform%2Dinline%20%2Einput%2Dgroup%3E%2Eform%2Dcontrol%7Bwidth%3A100%25%7D%2Eform%2Dinline%20%2Econtrol%2Dlabel%7Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Eradio%2C%2Eform%2Dinline%20%2Echeckbox%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Eradio%20label%2C%2Eform%2Dinline%20%2Echeckbox%20label%7Bpadding%2Dleft%3A0%7D%2Eform%2Dinline%20%2Eradio%20input%5Btype%3D%22radio%22%5D%2C%2Eform%2Dinline%20%2Echeckbox%20input%5Btype%3D%22checkbox%22%5D%7Bposition%3Arelative%3Bmargin%2Dleft%3A0%7D%2Eform%2Dinline%20%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%2Dfeedback%7Btop%3A0%7D%7D%2Eform%2Dhorizontal%20%2Eradio%2C%2Eform%2Dhorizontal%20%2Echeckbox%2C%2Eform%2Dhorizontal%20%2Eradio%2Dinline%2C%2Eform%2Dhorizontal%20%2Echeckbox%2Dinline%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bpadding%2Dtop%3A8px%7D%2Eform%2Dhorizontal%20%2Eradio%2C%2Eform%2Dhorizontal%20%2Echeckbox%7Bmin%2Dheight%3A28px%7D%2Eform%2Dhorizontal%20%2Eform%2Dgroup%7Bmargin%2Dleft%3A%2D15px%3Bmargin%2Dright%3A%2D15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dhorizontal%20%2Econtrol%2Dlabel%7Btext%2Dalign%3Aright%3Bmargin%2Dbottom%3A0%3Bpadding%2Dtop%3A8px%7D%7D%2Eform%2Dhorizontal%20%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%2Dfeedback%7Bright%3A15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dhorizontal%20%2Eform%2Dgroup%2Dlg%20%2Econtrol%2Dlabel%7Bpadding%2Dtop%3A14px%3Bfont%2Dsize%3A18px%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dhorizontal%20%2Eform%2Dgroup%2Dsm%20%2Econtrol%2Dlabel%7Bpadding%2Dtop%3A5px%3Bfont%2Dsize%3A12px%7D%7D%2Ebtn%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dbottom%3A0%3Bfont%2Dweight%3Anormal%3Btext%2Dalign%3Acenter%3Bvertical%2Dalign%3Amiddle%3B%2Dms%2Dtouch%2Daction%3Amanipulation%3Btouch%2Daction%3Amanipulation%3Bcursor%3Apointer%3Bbackground%2Dimage%3Anone%3Bborder%3A1px%20solid%20transparent%3Bwhite%2Dspace%3Anowrap%3Bpadding%3A7px%2012px%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A1%2E42857143%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Duser%2Dselect%3Anone%3B%2Dmoz%2Duser%2Dselect%3Anone%3B%2Dms%2Duser%2Dselect%3Anone%3Buser%2Dselect%3Anone%7D%2Ebtn%3Afocus%2C%2Ebtn%3Aactive%3Afocus%2C%2Ebtn%2Eactive%3Afocus%2C%2Ebtn%2Efocus%2C%2Ebtn%3Aactive%2Efocus%2C%2Ebtn%2Eactive%2Efocus%7Boutline%3Athin%20dotted%3Boutline%3A5px%20auto%20%2Dwebkit%2Dfocus%2Dring%2Dcolor%3Boutline%2Doffset%3A%2D2px%7D%2Ebtn%3Ahover%2C%2Ebtn%3Afocus%2C%2Ebtn%2Efocus%7Bcolor%3A%23555555%3Btext%2Ddecoration%3Anone%7D%2Ebtn%3Aactive%2C%2Ebtn%2Eactive%7Boutline%3A0%3Bbackground%2Dimage%3Anone%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C0%2E125%29%3Bbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C0%2E125%29%7D%2Ebtn%2Edisabled%2C%2Ebtn%5Bdisabled%5D%2Cfieldset%5Bdisabled%5D%20%2Ebtn%7Bcursor%3Anot%2Dallowed%3Bopacity%3A0%2E65%3Bfilter%3Aalpha%28opacity%3D65%29%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7Da%2Ebtn%2Edisabled%2Cfieldset%5Bdisabled%5D%20a%2Ebtn%7Bpointer%2Devents%3Anone%7D%2Ebtn%2Ddefault%7Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23eeeeee%3Bborder%2Dcolor%3A%23e2e2e2%7D%2Ebtn%2Ddefault%3Afocus%2C%2Ebtn%2Ddefault%2Efocus%7Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23d5d5d5%3Bborder%2Dcolor%3A%23a2a2a2%7D%2Ebtn%2Ddefault%3Ahover%7Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23d5d5d5%3Bborder%2Dcolor%3A%23c3c3c3%7D%2Ebtn%2Ddefault%3Aactive%2C%2Ebtn%2Ddefault%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%7Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23d5d5d5%3Bborder%2Dcolor%3A%23c3c3c3%7D%2Ebtn%2Ddefault%3Aactive%3Ahover%2C%2Ebtn%2Ddefault%2Eactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%3Ahover%2C%2Ebtn%2Ddefault%3Aactive%3Afocus%2C%2Ebtn%2Ddefault%2Eactive%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%3Afocus%2C%2Ebtn%2Ddefault%3Aactive%2Efocus%2C%2Ebtn%2Ddefault%2Eactive%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%2Efocus%7Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23c3c3c3%3Bborder%2Dcolor%3A%23a2a2a2%7D%2Ebtn%2Ddefault%3Aactive%2C%2Ebtn%2Ddefault%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Ddefault%2Edisabled%3Ahover%2C%2Ebtn%2Ddefault%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%3Ahover%2C%2Ebtn%2Ddefault%2Edisabled%3Afocus%2C%2Ebtn%2Ddefault%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%3Afocus%2C%2Ebtn%2Ddefault%2Edisabled%2Efocus%2C%2Ebtn%2Ddefault%5Bdisabled%5D%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%2Efocus%7Bbackground%2Dcolor%3A%23eeeeee%3Bborder%2Dcolor%3A%23e2e2e2%7D%2Ebtn%2Ddefault%20%2Ebadge%7Bcolor%3A%23eeeeee%3Bbackground%2Dcolor%3A%23555555%7D%2Ebtn%2Dprimary%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dcolor%3A%23127ba3%7D%2Ebtn%2Dprimary%3Afocus%2C%2Ebtn%2Dprimary%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23106a8c%3Bborder%2Dcolor%3A%23052531%7D%2Ebtn%2Dprimary%3Ahover%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23106a8c%3Bborder%2Dcolor%3A%230c516c%7D%2Ebtn%2Dprimary%3Aactive%2C%2Ebtn%2Dprimary%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23106a8c%3Bborder%2Dcolor%3A%230c516c%7D%2Ebtn%2Dprimary%3Aactive%3Ahover%2C%2Ebtn%2Dprimary%2Eactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%3Ahover%2C%2Ebtn%2Dprimary%3Aactive%3Afocus%2C%2Ebtn%2Dprimary%2Eactive%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%3Afocus%2C%2Ebtn%2Dprimary%3Aactive%2Efocus%2C%2Ebtn%2Dprimary%2Eactive%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%230c516c%3Bborder%2Dcolor%3A%23052531%7D%2Ebtn%2Dprimary%3Aactive%2C%2Ebtn%2Dprimary%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dprimary%2Edisabled%3Ahover%2C%2Ebtn%2Dprimary%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%3Ahover%2C%2Ebtn%2Dprimary%2Edisabled%3Afocus%2C%2Ebtn%2Dprimary%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%3Afocus%2C%2Ebtn%2Dprimary%2Edisabled%2Efocus%2C%2Ebtn%2Dprimary%5Bdisabled%5D%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%2Efocus%7Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dcolor%3A%23127ba3%7D%2Ebtn%2Dprimary%20%2Ebadge%7Bcolor%3A%23158cba%3Bbackground%2Dcolor%3A%23ffffff%7D%2Ebtn%2Dsuccess%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2328b62c%3Bborder%2Dcolor%3A%2323a127%7D%2Ebtn%2Dsuccess%3Afocus%2C%2Ebtn%2Dsuccess%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%231f8c22%3Bborder%2Dcolor%3A%230c390e%7D%2Ebtn%2Dsuccess%3Ahover%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%231f8c22%3Bborder%2Dcolor%3A%23186f1b%7D%2Ebtn%2Dsuccess%3Aactive%2C%2Ebtn%2Dsuccess%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%231f8c22%3Bborder%2Dcolor%3A%23186f1b%7D%2Ebtn%2Dsuccess%3Aactive%3Ahover%2C%2Ebtn%2Dsuccess%2Eactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%3Ahover%2C%2Ebtn%2Dsuccess%3Aactive%3Afocus%2C%2Ebtn%2Dsuccess%2Eactive%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%3Afocus%2C%2Ebtn%2Dsuccess%3Aactive%2Efocus%2C%2Ebtn%2Dsuccess%2Eactive%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23186f1b%3Bborder%2Dcolor%3A%230c390e%7D%2Ebtn%2Dsuccess%3Aactive%2C%2Ebtn%2Dsuccess%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dsuccess%2Edisabled%3Ahover%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%3Ahover%2C%2Ebtn%2Dsuccess%2Edisabled%3Afocus%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%3Afocus%2C%2Ebtn%2Dsuccess%2Edisabled%2Efocus%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%2Efocus%7Bbackground%2Dcolor%3A%2328b62c%3Bborder%2Dcolor%3A%2323a127%7D%2Ebtn%2Dsuccess%20%2Ebadge%7Bcolor%3A%2328b62c%3Bbackground%2Dcolor%3A%23ffffff%7D%2Ebtn%2Dinfo%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2375caeb%3Bborder%2Dcolor%3A%235fc1e8%7D%2Ebtn%2Dinfo%3Afocus%2C%2Ebtn%2Dinfo%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2348b9e5%3Bborder%2Dcolor%3A%231984ae%7D%2Ebtn%2Dinfo%3Ahover%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2348b9e5%3Bborder%2Dcolor%3A%2329ade0%7D%2Ebtn%2Dinfo%3Aactive%2C%2Ebtn%2Dinfo%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2348b9e5%3Bborder%2Dcolor%3A%2329ade0%7D%2Ebtn%2Dinfo%3Aactive%3Ahover%2C%2Ebtn%2Dinfo%2Eactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%3Ahover%2C%2Ebtn%2Dinfo%3Aactive%3Afocus%2C%2Ebtn%2Dinfo%2Eactive%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%3Afocus%2C%2Ebtn%2Dinfo%3Aactive%2Efocus%2C%2Ebtn%2Dinfo%2Eactive%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2329ade0%3Bborder%2Dcolor%3A%231984ae%7D%2Ebtn%2Dinfo%3Aactive%2C%2Ebtn%2Dinfo%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dinfo%2Edisabled%3Ahover%2C%2Ebtn%2Dinfo%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%3Ahover%2C%2Ebtn%2Dinfo%2Edisabled%3Afocus%2C%2Ebtn%2Dinfo%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%3Afocus%2C%2Ebtn%2Dinfo%2Edisabled%2Efocus%2C%2Ebtn%2Dinfo%5Bdisabled%5D%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%2Efocus%7Bbackground%2Dcolor%3A%2375caeb%3Bborder%2Dcolor%3A%235fc1e8%7D%2Ebtn%2Dinfo%20%2Ebadge%7Bcolor%3A%2375caeb%3Bbackground%2Dcolor%3A%23ffffff%7D%2Ebtn%2Dwarning%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff851b%3Bborder%2Dcolor%3A%23ff7701%7D%2Ebtn%2Dwarning%3Afocus%2C%2Ebtn%2Dwarning%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23e76b00%3Bborder%2Dcolor%3A%23813c00%7D%2Ebtn%2Dwarning%3Ahover%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23e76b00%3Bborder%2Dcolor%3A%23c35b00%7D%2Ebtn%2Dwarning%3Aactive%2C%2Ebtn%2Dwarning%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23e76b00%3Bborder%2Dcolor%3A%23c35b00%7D%2Ebtn%2Dwarning%3Aactive%3Ahover%2C%2Ebtn%2Dwarning%2Eactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%3Ahover%2C%2Ebtn%2Dwarning%3Aactive%3Afocus%2C%2Ebtn%2Dwarning%2Eactive%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%3Afocus%2C%2Ebtn%2Dwarning%3Aactive%2Efocus%2C%2Ebtn%2Dwarning%2Eactive%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23c35b00%3Bborder%2Dcolor%3A%23813c00%7D%2Ebtn%2Dwarning%3Aactive%2C%2Ebtn%2Dwarning%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dwarning%2Edisabled%3Ahover%2C%2Ebtn%2Dwarning%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%3Ahover%2C%2Ebtn%2Dwarning%2Edisabled%3Afocus%2C%2Ebtn%2Dwarning%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%3Afocus%2C%2Ebtn%2Dwarning%2Edisabled%2Efocus%2C%2Ebtn%2Dwarning%5Bdisabled%5D%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%2Efocus%7Bbackground%2Dcolor%3A%23ff851b%3Bborder%2Dcolor%3A%23ff7701%7D%2Ebtn%2Dwarning%20%2Ebadge%7Bcolor%3A%23ff851b%3Bbackground%2Dcolor%3A%23ffffff%7D%2Ebtn%2Ddanger%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff4136%3Bborder%2Dcolor%3A%23ff291c%7D%2Ebtn%2Ddanger%3Afocus%2C%2Ebtn%2Ddanger%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff1103%3Bborder%2Dcolor%3A%239c0900%7D%2Ebtn%2Ddanger%3Ahover%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff1103%3Bborder%2Dcolor%3A%23de0c00%7D%2Ebtn%2Ddanger%3Aactive%2C%2Ebtn%2Ddanger%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff1103%3Bborder%2Dcolor%3A%23de0c00%7D%2Ebtn%2Ddanger%3Aactive%3Ahover%2C%2Ebtn%2Ddanger%2Eactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%3Ahover%2C%2Ebtn%2Ddanger%3Aactive%3Afocus%2C%2Ebtn%2Ddanger%2Eactive%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%3Afocus%2C%2Ebtn%2Ddanger%3Aactive%2Efocus%2C%2Ebtn%2Ddanger%2Eactive%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23de0c00%3Bborder%2Dcolor%3A%239c0900%7D%2Ebtn%2Ddanger%3Aactive%2C%2Ebtn%2Ddanger%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Ddanger%2Edisabled%3Ahover%2C%2Ebtn%2Ddanger%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%3Ahover%2C%2Ebtn%2Ddanger%2Edisabled%3Afocus%2C%2Ebtn%2Ddanger%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%3Afocus%2C%2Ebtn%2Ddanger%2Edisabled%2Efocus%2C%2Ebtn%2Ddanger%5Bdisabled%5D%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%2Efocus%7Bbackground%2Dcolor%3A%23ff4136%3Bborder%2Dcolor%3A%23ff291c%7D%2Ebtn%2Ddanger%20%2Ebadge%7Bcolor%3A%23ff4136%3Bbackground%2Dcolor%3A%23ffffff%7D%2Ebtn%2Dlink%7Bcolor%3A%23158cba%3Bfont%2Dweight%3Anormal%3Bborder%2Dradius%3A0%7D%2Ebtn%2Dlink%2C%2Ebtn%2Dlink%3Aactive%2C%2Ebtn%2Dlink%2Eactive%2C%2Ebtn%2Dlink%5Bdisabled%5D%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dlink%7Bbackground%2Dcolor%3Atransparent%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Ebtn%2Dlink%2C%2Ebtn%2Dlink%3Ahover%2C%2Ebtn%2Dlink%3Afocus%2C%2Ebtn%2Dlink%3Aactive%7Bborder%2Dcolor%3Atransparent%7D%2Ebtn%2Dlink%3Ahover%2C%2Ebtn%2Dlink%3Afocus%7Bcolor%3A%23158cba%3Btext%2Ddecoration%3Aunderline%3Bbackground%2Dcolor%3Atransparent%7D%2Ebtn%2Dlink%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dlink%3Ahover%2C%2Ebtn%2Dlink%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dlink%3Afocus%7Bcolor%3A%23999999%3Btext%2Ddecoration%3Anone%7D%2Ebtn%2Dlg%2C%2Ebtn%2Dgroup%2Dlg%3E%2Ebtn%7Bpadding%3A13px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A5px%7D%2Ebtn%2Dsm%2C%2Ebtn%2Dgroup%2Dsm%3E%2Ebtn%7Bpadding%3A4px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A2px%7D%2Ebtn%2Dxs%2C%2Ebtn%2Dgroup%2Dxs%3E%2Ebtn%7Bpadding%3A1px%205px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A2px%7D%2Ebtn%2Dblock%7Bdisplay%3Ablock%3Bwidth%3A100%25%7D%2Ebtn%2Dblock%2B%2Ebtn%2Dblock%7Bmargin%2Dtop%3A5px%7Dinput%5Btype%3D%22submit%22%5D%2Ebtn%2Dblock%2Cinput%5Btype%3D%22reset%22%5D%2Ebtn%2Dblock%2Cinput%5Btype%3D%22button%22%5D%2Ebtn%2Dblock%7Bwidth%3A100%25%7D%2Efade%7Bopacity%3A0%3B%2Dwebkit%2Dtransition%3Aopacity%200%2E15s%20linear%3B%2Do%2Dtransition%3Aopacity%200%2E15s%20linear%3Btransition%3Aopacity%200%2E15s%20linear%7D%2Efade%2Ein%7Bopacity%3A1%7D%2Ecollapse%7Bdisplay%3Anone%7D%2Ecollapse%2Ein%7Bdisplay%3Ablock%7Dtr%2Ecollapse%2Ein%7Bdisplay%3Atable%2Drow%7Dtbody%2Ecollapse%2Ein%7Bdisplay%3Atable%2Drow%2Dgroup%7D%2Ecollapsing%7Bposition%3Arelative%3Bheight%3A0%3Boverflow%3Ahidden%3B%2Dwebkit%2Dtransition%2Dproperty%3Aheight%2C%20visibility%3B%2Do%2Dtransition%2Dproperty%3Aheight%2C%20visibility%3Btransition%2Dproperty%3Aheight%2C%20visibility%3B%2Dwebkit%2Dtransition%2Dduration%3A0%2E35s%3B%2Do%2Dtransition%2Dduration%3A0%2E35s%3Btransition%2Dduration%3A0%2E35s%3B%2Dwebkit%2Dtransition%2Dtiming%2Dfunction%3Aease%3B%2Do%2Dtransition%2Dtiming%2Dfunction%3Aease%3Btransition%2Dtiming%2Dfunction%3Aease%7D%2Ecaret%7Bdisplay%3Ainline%2Dblock%3Bwidth%3A0%3Bheight%3A0%3Bmargin%2Dleft%3A2px%3Bvertical%2Dalign%3Amiddle%3Bborder%2Dtop%3A4px%20dashed%3Bborder%2Dtop%3A4px%20solid%20%5C9%3Bborder%2Dright%3A4px%20solid%20transparent%3Bborder%2Dleft%3A4px%20solid%20transparent%7D%2Edropup%2C%2Edropdown%7Bposition%3Arelative%7D%2Edropdown%2Dtoggle%3Afocus%7Boutline%3A0%7D%2Edropdown%2Dmenu%7Bposition%3Aabsolute%3Btop%3A100%25%3Bleft%3A0%3Bz%2Dindex%3A1000%3Bdisplay%3Anone%3Bfloat%3Aleft%3Bmin%2Dwidth%3A160px%3Bpadding%3A5px%200%3Bmargin%3A2px%200%200%3Blist%2Dstyle%3Anone%3Bfont%2Dsize%3A14px%3Btext%2Dalign%3Aleft%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20%23cccccc%3Bborder%3A1px%20solid%20%23e7e7e7%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3A0%206px%2012px%20rgba%280%2C0%2C0%2C0%2E175%29%3Bbox%2Dshadow%3A0%206px%2012px%20rgba%280%2C0%2C0%2C0%2E175%29%3B%2Dwebkit%2Dbackground%2Dclip%3Apadding%2Dbox%3Bbackground%2Dclip%3Apadding%2Dbox%7D%2Edropdown%2Dmenu%2Epull%2Dright%7Bright%3A0%3Bleft%3Aauto%7D%2Edropdown%2Dmenu%20%2Edivider%7Bheight%3A1px%3Bmargin%3A9px%200%3Boverflow%3Ahidden%3Bbackground%2Dcolor%3A%23eeeeee%7D%2Edropdown%2Dmenu%3Eli%3Ea%7Bdisplay%3Ablock%3Bpadding%3A3px%2020px%3Bclear%3Aboth%3Bfont%2Dweight%3Anormal%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23999999%3Bwhite%2Dspace%3Anowrap%7D%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%2C%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%7Btext%2Ddecoration%3Anone%3Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Edropdown%2Dmenu%3E%2Eactive%3Ea%2C%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Ahover%2C%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Afocus%7Bcolor%3A%23ffffff%3Btext%2Ddecoration%3Anone%3Boutline%3A0%3Bbackground%2Dcolor%3A%23158cba%7D%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%2C%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%2C%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23eeeeee%7D%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%2C%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%7Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3Atransparent%3Bbackground%2Dimage%3Anone%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28enabled%3Dfalse%29%3Bcursor%3Anot%2Dallowed%7D%2Eopen%3E%2Edropdown%2Dmenu%7Bdisplay%3Ablock%7D%2Eopen%3Ea%7Boutline%3A0%7D%2Edropdown%2Dmenu%2Dright%7Bleft%3Aauto%3Bright%3A0%7D%2Edropdown%2Dmenu%2Dleft%7Bleft%3A0%3Bright%3Aauto%7D%2Edropdown%2Dheader%7Bdisplay%3Ablock%3Bpadding%3A3px%2020px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23999999%3Bwhite%2Dspace%3Anowrap%7D%2Edropdown%2Dbackdrop%7Bposition%3Afixed%3Bleft%3A0%3Bright%3A0%3Bbottom%3A0%3Btop%3A0%3Bz%2Dindex%3A990%7D%2Epull%2Dright%3E%2Edropdown%2Dmenu%7Bright%3A0%3Bleft%3Aauto%7D%2Edropup%20%2Ecaret%2C%2Enavbar%2Dfixed%2Dbottom%20%2Edropdown%20%2Ecaret%7Bborder%2Dtop%3A0%3Bborder%2Dbottom%3A4px%20dashed%3Bborder%2Dbottom%3A4px%20solid%20%5C9%3Bcontent%3A%22%22%7D%2Edropup%20%2Edropdown%2Dmenu%2C%2Enavbar%2Dfixed%2Dbottom%20%2Edropdown%20%2Edropdown%2Dmenu%7Btop%3Aauto%3Bbottom%3A100%25%3Bmargin%2Dbottom%3A2px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dright%20%2Edropdown%2Dmenu%7Bleft%3Aauto%3Bright%3A0%7D%2Enavbar%2Dright%20%2Edropdown%2Dmenu%2Dleft%7Bleft%3A0%3Bright%3Aauto%7D%7D%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%2Dvertical%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Amiddle%7D%2Ebtn%2Dgroup%3E%2Ebtn%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%7Bposition%3Arelative%3Bfloat%3Aleft%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Ahover%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Ahover%2C%2Ebtn%2Dgroup%3E%2Ebtn%3Afocus%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Afocus%2C%2Ebtn%2Dgroup%3E%2Ebtn%3Aactive%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Aactive%2C%2Ebtn%2Dgroup%3E%2Ebtn%2Eactive%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Eactive%7Bz%2Dindex%3A2%7D%2Ebtn%2Dgroup%20%2Ebtn%2B%2Ebtn%2C%2Ebtn%2Dgroup%20%2Ebtn%2B%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%20%2Ebtn%2Dgroup%2B%2Ebtn%2C%2Ebtn%2Dgroup%20%2Ebtn%2Dgroup%2B%2Ebtn%2Dgroup%7Bmargin%2Dleft%3A%2D1px%7D%2Ebtn%2Dtoolbar%7Bmargin%2Dleft%3A%2D5px%7D%2Ebtn%2Dtoolbar%20%2Ebtn%2C%2Ebtn%2Dtoolbar%20%2Ebtn%2Dgroup%2C%2Ebtn%2Dtoolbar%20%2Einput%2Dgroup%7Bfloat%3Aleft%7D%2Ebtn%2Dtoolbar%3E%2Ebtn%2C%2Ebtn%2Dtoolbar%3E%2Ebtn%2Dgroup%2C%2Ebtn%2Dtoolbar%3E%2Einput%2Dgroup%7Bmargin%2Dleft%3A5px%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%3Anot%28%2Edropdown%2Dtoggle%29%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Afirst%2Dchild%7Bmargin%2Dleft%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3Anot%28%2Edropdown%2Dtoggle%29%7Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%2C%2Ebtn%2Dgroup%3E%2Edropdown%2Dtoggle%3Anot%28%3Afirst%2Dchild%29%7Bborder%2Dbottom%2Dleft%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%7Bfloat%3Aleft%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%3Alast%2Dchild%2C%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Edropdown%2Dtoggle%7Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%3E%2Ebtn%3Afirst%2Dchild%7Bborder%2Dbottom%2Dleft%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%20%2Edropdown%2Dtoggle%3Aactive%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%7Boutline%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2B%2Edropdown%2Dtoggle%7Bpadding%2Dleft%3A8px%3Bpadding%2Dright%3A8px%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dlg%2B%2Edropdown%2Dtoggle%7Bpadding%2Dleft%3A12px%3Bpadding%2Dright%3A12px%7D%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%7B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C0%2E125%29%3Bbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C0%2E125%29%7D%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Dlink%7B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Ebtn%20%2Ecaret%7Bmargin%2Dleft%3A0%7D%2Ebtn%2Dlg%20%2Ecaret%7Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dbottom%2Dwidth%3A0%7D%2Edropup%20%2Ebtn%2Dlg%20%2Ecaret%7Bborder%2Dwidth%3A0%205px%205px%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3E%2Ebtn%7Bdisplay%3Ablock%3Bfloat%3Anone%3Bwidth%3A100%25%3Bmax%2Dwidth%3A100%25%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3E%2Ebtn%7Bfloat%3Anone%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2B%2Ebtn%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2B%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%2B%2Ebtn%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%2B%2Ebtn%2Dgroup%7Bmargin%2Dtop%3A%2D1px%3Bmargin%2Dleft%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dtop%2Dright%2Dradius%3A4px%3Bborder%2Dtop%2Dleft%2Dradius%3A4px%3Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%7Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A4px%3Bborder%2Dbottom%2Dleft%2Dradius%3A4px%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%3Alast%2Dchild%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Edropdown%2Dtoggle%7Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%3E%2Ebtn%3Afirst%2Dchild%7Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Djustified%7Bdisplay%3Atable%3Bwidth%3A100%25%3Btable%2Dlayout%3Afixed%3Bborder%2Dcollapse%3Aseparate%7D%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2C%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2Dgroup%7Bfloat%3Anone%3Bdisplay%3Atable%2Dcell%3Bwidth%3A1%25%7D%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2Dgroup%20%2Ebtn%7Bwidth%3A100%25%7D%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2Dgroup%20%2Edropdown%2Dmenu%7Bleft%3Aauto%7D%5Bdata%2Dtoggle%3D%22buttons%22%5D%3E%2Ebtn%20input%5Btype%3D%22radio%22%5D%2C%5Bdata%2Dtoggle%3D%22buttons%22%5D%3E%2Ebtn%2Dgroup%3E%2Ebtn%20input%5Btype%3D%22radio%22%5D%2C%5Bdata%2Dtoggle%3D%22buttons%22%5D%3E%2Ebtn%20input%5Btype%3D%22checkbox%22%5D%2C%5Bdata%2Dtoggle%3D%22buttons%22%5D%3E%2Ebtn%2Dgroup%3E%2Ebtn%20input%5Btype%3D%22checkbox%22%5D%7Bposition%3Aabsolute%3Bclip%3Arect%280%2C%200%2C%200%2C%200%29%3Bpointer%2Devents%3Anone%7D%2Einput%2Dgroup%7Bposition%3Arelative%3Bdisplay%3Atable%3Bborder%2Dcollapse%3Aseparate%7D%2Einput%2Dgroup%5Bclass%2A%3D%22col%2D%22%5D%7Bfloat%3Anone%3Bpadding%2Dleft%3A0%3Bpadding%2Dright%3A0%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%7Bposition%3Arelative%3Bz%2Dindex%3A2%3Bfloat%3Aleft%3Bwidth%3A100%25%3Bmargin%2Dbottom%3A0%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%3Afocus%7Bz%2Dindex%3A3%7D%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2C%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A52px%3Bpadding%3A13px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A5px%7Dselect%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2Cselect%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2Cselect%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A52px%3Bline%2Dheight%3A52px%7Dtextarea%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2Ctextarea%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2Ctextarea%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3Aauto%7D%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2C%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A28px%3Bpadding%3A4px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A2px%7Dselect%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2Cselect%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2Cselect%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A28px%3Bline%2Dheight%3A28px%7Dtextarea%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2Ctextarea%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2Ctextarea%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3Aauto%7D%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dbtn%2C%2Einput%2Dgroup%20%2Eform%2Dcontrol%7Bdisplay%3Atable%2Dcell%7D%2Einput%2Dgroup%2Daddon%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%2C%2Einput%2Dgroup%2Dbtn%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%2C%2Einput%2Dgroup%20%2Eform%2Dcontrol%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dradius%3A0%7D%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dbtn%7Bwidth%3A1%25%3Bwhite%2Dspace%3Anowrap%3Bvertical%2Dalign%3Amiddle%7D%2Einput%2Dgroup%2Daddon%7Bpadding%3A7px%2012px%3Bfont%2Dsize%3A14px%3Bfont%2Dweight%3Anormal%3Bline%2Dheight%3A1%3Bcolor%3A%23555555%3Btext%2Dalign%3Acenter%3Bbackground%2Dcolor%3A%23eeeeee%3Bborder%3A1px%20solid%20%23e7e7e7%3Bborder%2Dradius%3A4px%7D%2Einput%2Dgroup%2Daddon%2Einput%2Dsm%7Bpadding%3A4px%2010px%3Bfont%2Dsize%3A12px%3Bborder%2Dradius%3A2px%7D%2Einput%2Dgroup%2Daddon%2Einput%2Dlg%7Bpadding%3A13px%2016px%3Bfont%2Dsize%3A18px%3Bborder%2Dradius%3A5px%7D%2Einput%2Dgroup%2Daddon%20input%5Btype%3D%22radio%22%5D%2C%2Einput%2Dgroup%2Daddon%20input%5Btype%3D%22checkbox%22%5D%7Bmargin%2Dtop%3A0%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%3Afirst%2Dchild%2C%2Einput%2Dgroup%2Daddon%3Afirst%2Dchild%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2Dgroup%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Edropdown%2Dtoggle%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%3Anot%28%3Alast%2Dchild%29%3Anot%28%2Edropdown%2Dtoggle%29%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2Dgroup%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%7Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%7D%2Einput%2Dgroup%2Daddon%3Afirst%2Dchild%7Bborder%2Dright%3A0%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%3Alast%2Dchild%2C%2Einput%2Dgroup%2Daddon%3Alast%2Dchild%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2Dgroup%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Edropdown%2Dtoggle%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%3Anot%28%3Afirst%2Dchild%29%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2Dgroup%3Anot%28%3Afirst%2Dchild%29%3E%2Ebtn%7Bborder%2Dbottom%2Dleft%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Einput%2Dgroup%2Daddon%3Alast%2Dchild%7Bborder%2Dleft%3A0%7D%2Einput%2Dgroup%2Dbtn%7Bposition%3Arelative%3Bfont%2Dsize%3A0%3Bwhite%2Dspace%3Anowrap%7D%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bposition%3Arelative%7D%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%2B%2Ebtn%7Bmargin%2Dleft%3A%2D1px%7D%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%3Ahover%2C%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%3Afocus%2C%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%3Aactive%7Bz%2Dindex%3A2%7D%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2Dgroup%7Bmargin%2Dright%3A%2D1px%7D%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2Dgroup%7Bz%2Dindex%3A2%3Bmargin%2Dleft%3A%2D1px%7D%2Enav%7Bmargin%2Dbottom%3A0%3Bpadding%2Dleft%3A0%3Blist%2Dstyle%3Anone%7D%2Enav%3Eli%7Bposition%3Arelative%3Bdisplay%3Ablock%7D%2Enav%3Eli%3Ea%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bpadding%3A10px%2015px%7D%2Enav%3Eli%3Ea%3Ahover%2C%2Enav%3Eli%3Ea%3Afocus%7Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3A%23ffffff%7D%2Enav%3Eli%2Edisabled%3Ea%7Bcolor%3A%23999999%7D%2Enav%3Eli%2Edisabled%3Ea%3Ahover%2C%2Enav%3Eli%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23999999%3Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3Atransparent%3Bcursor%3Anot%2Dallowed%7D%2Enav%20%2Eopen%3Ea%2C%2Enav%20%2Eopen%3Ea%3Ahover%2C%2Enav%20%2Eopen%3Ea%3Afocus%7Bbackground%2Dcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23158cba%7D%2Enav%20%2Enav%2Ddivider%7Bheight%3A1px%3Bmargin%3A9px%200%3Boverflow%3Ahidden%3Bbackground%2Dcolor%3A%23e5e5e5%7D%2Enav%3Eli%3Ea%3Eimg%7Bmax%2Dwidth%3Anone%7D%2Enav%2Dtabs%7Bborder%2Dbottom%3A1px%20solid%20%23e7e7e7%7D%2Enav%2Dtabs%3Eli%7Bfloat%3Aleft%3Bmargin%2Dbottom%3A%2D1px%7D%2Enav%2Dtabs%3Eli%3Ea%7Bmargin%2Dright%3A2px%3Bline%2Dheight%3A1%2E42857143%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%204px%200%200%7D%2Enav%2Dtabs%3Eli%3Ea%3Ahover%7Bborder%2Dcolor%3A%23eeeeee%20%23eeeeee%20%23e7e7e7%7D%2Enav%2Dtabs%3Eli%2Eactive%3Ea%2C%2Enav%2Dtabs%3Eli%2Eactive%3Ea%3Ahover%2C%2Enav%2Dtabs%3Eli%2Eactive%3Ea%3Afocus%7Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20%23e7e7e7%3Bborder%2Dbottom%2Dcolor%3Atransparent%3Bcursor%3Adefault%7D%2Enav%2Dtabs%2Enav%2Djustified%7Bwidth%3A100%25%3Bborder%2Dbottom%3A0%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%7Bfloat%3Anone%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Btext%2Dalign%3Acenter%3Bmargin%2Dbottom%3A5px%7D%2Enav%2Dtabs%2Enav%2Djustified%3E%2Edropdown%20%2Edropdown%2Dmenu%7Btop%3Aauto%3Bleft%3Aauto%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Dtabs%2Enav%2Djustified%3Eli%7Bdisplay%3Atable%2Dcell%3Bwidth%3A1%25%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Bmargin%2Dbottom%3A0%7D%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Bmargin%2Dright%3A0%3Bborder%2Dradius%3A4px%7D%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Ahover%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Afocus%7Bborder%3A1px%20solid%20%23e7e7e7%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Bborder%2Dbottom%3A1px%20solid%20%23e7e7e7%3Bborder%2Dradius%3A4px%204px%200%200%7D%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Ahover%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Afocus%7Bborder%2Dbottom%2Dcolor%3A%23ffffff%7D%7D%2Enav%2Dpills%3Eli%7Bfloat%3Aleft%7D%2Enav%2Dpills%3Eli%3Ea%7Bborder%2Dradius%3A4px%7D%2Enav%2Dpills%3Eli%2Bli%7Bmargin%2Dleft%3A2px%7D%2Enav%2Dpills%3Eli%2Eactive%3Ea%2C%2Enav%2Dpills%3Eli%2Eactive%3Ea%3Ahover%2C%2Enav%2Dpills%3Eli%2Eactive%3Ea%3Afocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23158cba%7D%2Enav%2Dstacked%3Eli%7Bfloat%3Anone%7D%2Enav%2Dstacked%3Eli%2Bli%7Bmargin%2Dtop%3A2px%3Bmargin%2Dleft%3A0%7D%2Enav%2Djustified%7Bwidth%3A100%25%7D%2Enav%2Djustified%3Eli%7Bfloat%3Anone%7D%2Enav%2Djustified%3Eli%3Ea%7Btext%2Dalign%3Acenter%3Bmargin%2Dbottom%3A5px%7D%2Enav%2Djustified%3E%2Edropdown%20%2Edropdown%2Dmenu%7Btop%3Aauto%3Bleft%3Aauto%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Djustified%3Eli%7Bdisplay%3Atable%2Dcell%3Bwidth%3A1%25%7D%2Enav%2Djustified%3Eli%3Ea%7Bmargin%2Dbottom%3A0%7D%7D%2Enav%2Dtabs%2Djustified%7Bborder%2Dbottom%3A0%7D%2Enav%2Dtabs%2Djustified%3Eli%3Ea%7Bmargin%2Dright%3A0%3Bborder%2Dradius%3A4px%7D%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Ahover%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Afocus%7Bborder%3A1px%20solid%20%23e7e7e7%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Dtabs%2Djustified%3Eli%3Ea%7Bborder%2Dbottom%3A1px%20solid%20%23e7e7e7%3Bborder%2Dradius%3A4px%204px%200%200%7D%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Ahover%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Afocus%7Bborder%2Dbottom%2Dcolor%3A%23ffffff%7D%7D%2Etab%2Dcontent%3E%2Etab%2Dpane%7Bdisplay%3Anone%7D%2Etab%2Dcontent%3E%2Eactive%7Bdisplay%3Ablock%7D%2Enav%2Dtabs%20%2Edropdown%2Dmenu%7Bmargin%2Dtop%3A%2D1px%3Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Enavbar%7Bposition%3Arelative%3Bmin%2Dheight%3A50px%3Bmargin%2Dbottom%3A20px%3Bborder%3A1px%20solid%20transparent%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%7Bborder%2Dradius%3A4px%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dheader%7Bfloat%3Aleft%7D%7D%2Enavbar%2Dcollapse%7Boverflow%2Dx%3Avisible%3Bpadding%2Dright%3A15px%3Bpadding%2Dleft%3A15px%3Bborder%2Dtop%3A1px%20solid%20transparent%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C0%2E1%29%3Bbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C0%2E1%29%3B%2Dwebkit%2Doverflow%2Dscrolling%3Atouch%7D%2Enavbar%2Dcollapse%2Ein%7Boverflow%2Dy%3Aauto%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dcollapse%7Bwidth%3Aauto%3Bborder%2Dtop%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Enavbar%2Dcollapse%2Ecollapse%7Bdisplay%3Ablock%20%21important%3Bheight%3Aauto%20%21important%3Bpadding%2Dbottom%3A0%3Boverflow%3Avisible%20%21important%7D%2Enavbar%2Dcollapse%2Ein%7Boverflow%2Dy%3Avisible%7D%2Enavbar%2Dfixed%2Dtop%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dstatic%2Dtop%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dcollapse%7Bpadding%2Dleft%3A0%3Bpadding%2Dright%3A0%7D%7D%2Enavbar%2Dfixed%2Dtop%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dcollapse%7Bmax%2Dheight%3A340px%7D%40media%20%28max%2Ddevice%2Dwidth%3A480px%29%20and%20%28orientation%3Alandscape%29%7B%2Enavbar%2Dfixed%2Dtop%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dcollapse%7Bmax%2Dheight%3A200px%7D%7D%2Econtainer%3E%2Enavbar%2Dheader%2C%2Econtainer%2Dfluid%3E%2Enavbar%2Dheader%2C%2Econtainer%3E%2Enavbar%2Dcollapse%2C%2Econtainer%2Dfluid%3E%2Enavbar%2Dcollapse%7Bmargin%2Dright%3A%2D15px%3Bmargin%2Dleft%3A%2D15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Econtainer%3E%2Enavbar%2Dheader%2C%2Econtainer%2Dfluid%3E%2Enavbar%2Dheader%2C%2Econtainer%3E%2Enavbar%2Dcollapse%2C%2Econtainer%2Dfluid%3E%2Enavbar%2Dcollapse%7Bmargin%2Dright%3A0%3Bmargin%2Dleft%3A0%7D%7D%2Enavbar%2Dstatic%2Dtop%7Bz%2Dindex%3A1000%3Bborder%2Dwidth%3A0%200%201px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dstatic%2Dtop%7Bborder%2Dradius%3A0%7D%7D%2Enavbar%2Dfixed%2Dtop%2C%2Enavbar%2Dfixed%2Dbottom%7Bposition%3Afixed%3Bright%3A0%3Bleft%3A0%3Bz%2Dindex%3A1030%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dfixed%2Dtop%2C%2Enavbar%2Dfixed%2Dbottom%7Bborder%2Dradius%3A0%7D%7D%2Enavbar%2Dfixed%2Dtop%7Btop%3A0%3Bborder%2Dwidth%3A0%200%201px%7D%2Enavbar%2Dfixed%2Dbottom%7Bbottom%3A0%3Bmargin%2Dbottom%3A0%3Bborder%2Dwidth%3A1px%200%200%7D%2Enavbar%2Dbrand%7Bfloat%3Aleft%3Bpadding%3A15px%2015px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A20px%3Bheight%3A50px%7D%2Enavbar%2Dbrand%3Ahover%2C%2Enavbar%2Dbrand%3Afocus%7Btext%2Ddecoration%3Anone%7D%2Enavbar%2Dbrand%3Eimg%7Bdisplay%3Ablock%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%3E%2Econtainer%20%2Enavbar%2Dbrand%2C%2Enavbar%3E%2Econtainer%2Dfluid%20%2Enavbar%2Dbrand%7Bmargin%2Dleft%3A%2D15px%7D%7D%2Enavbar%2Dtoggle%7Bposition%3Arelative%3Bfloat%3Aright%3Bmargin%2Dright%3A15px%3Bpadding%3A9px%2010px%3Bmargin%2Dtop%3A8px%3Bmargin%2Dbottom%3A8px%3Bbackground%2Dcolor%3Atransparent%3Bbackground%2Dimage%3Anone%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%7D%2Enavbar%2Dtoggle%3Afocus%7Boutline%3A0%7D%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%7Bdisplay%3Ablock%3Bwidth%3A22px%3Bheight%3A2px%3Bborder%2Dradius%3A1px%7D%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%2B%2Eicon%2Dbar%7Bmargin%2Dtop%3A4px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dtoggle%7Bdisplay%3Anone%7D%7D%2Enavbar%2Dnav%7Bmargin%3A7%2E5px%20%2D15px%7D%2Enavbar%2Dnav%3Eli%3Ea%7Bpadding%2Dtop%3A10px%3Bpadding%2Dbottom%3A10px%3Bline%2Dheight%3A20px%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%7Bposition%3Astatic%3Bfloat%3Anone%3Bwidth%3Aauto%3Bmargin%2Dtop%3A0%3Bbackground%2Dcolor%3Atransparent%3Bborder%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%2C%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%20%2Edropdown%2Dheader%7Bpadding%3A5px%2015px%205px%2025px%7D%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%7Bline%2Dheight%3A20px%7D%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%2C%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%7Bbackground%2Dimage%3Anone%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dnav%7Bfloat%3Aleft%3Bmargin%3A0%7D%2Enavbar%2Dnav%3Eli%7Bfloat%3Aleft%7D%2Enavbar%2Dnav%3Eli%3Ea%7Bpadding%2Dtop%3A15px%3Bpadding%2Dbottom%3A15px%7D%7D%2Enavbar%2Dform%7Bmargin%2Dleft%3A%2D15px%3Bmargin%2Dright%3A%2D15px%3Bpadding%3A10px%2015px%3Bborder%2Dtop%3A1px%20solid%20transparent%3Bborder%2Dbottom%3A1px%20solid%20transparent%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C0%2E1%29%2C0%201px%200%20rgba%28255%2C255%2C255%2C0%2E1%29%3Bbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C0%2E1%29%2C0%201px%200%20rgba%28255%2C255%2C255%2C0%2E1%29%3Bmargin%2Dtop%3A6px%3Bmargin%2Dbottom%3A6px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dform%20%2Eform%2Dgroup%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Eform%2Dcontrol%7Bdisplay%3Ainline%2Dblock%3Bwidth%3Aauto%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Eform%2Dcontrol%2Dstatic%7Bdisplay%3Ainline%2Dblock%7D%2Enavbar%2Dform%20%2Einput%2Dgroup%7Bdisplay%3Ainline%2Dtable%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Daddon%2C%2Enavbar%2Dform%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Dbtn%2C%2Enavbar%2Dform%20%2Einput%2Dgroup%20%2Eform%2Dcontrol%7Bwidth%3Aauto%7D%2Enavbar%2Dform%20%2Einput%2Dgroup%3E%2Eform%2Dcontrol%7Bwidth%3A100%25%7D%2Enavbar%2Dform%20%2Econtrol%2Dlabel%7Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Eradio%2C%2Enavbar%2Dform%20%2Echeckbox%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Eradio%20label%2C%2Enavbar%2Dform%20%2Echeckbox%20label%7Bpadding%2Dleft%3A0%7D%2Enavbar%2Dform%20%2Eradio%20input%5Btype%3D%22radio%22%5D%2C%2Enavbar%2Dform%20%2Echeckbox%20input%5Btype%3D%22checkbox%22%5D%7Bposition%3Arelative%3Bmargin%2Dleft%3A0%7D%2Enavbar%2Dform%20%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%2Dfeedback%7Btop%3A0%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Dform%20%2Eform%2Dgroup%7Bmargin%2Dbottom%3A5px%7D%2Enavbar%2Dform%20%2Eform%2Dgroup%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dform%7Bwidth%3Aauto%3Bborder%3A0%3Bmargin%2Dleft%3A0%3Bmargin%2Dright%3A0%3Bpadding%2Dtop%3A0%3Bpadding%2Dbottom%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%7D%2Enavbar%2Dnav%3Eli%3E%2Edropdown%2Dmenu%7Bmargin%2Dtop%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dnav%3Eli%3E%2Edropdown%2Dmenu%7Bmargin%2Dbottom%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A4px%3Bborder%2Dtop%2Dleft%2Dradius%3A4px%3Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Enavbar%2Dbtn%7Bmargin%2Dtop%3A6px%3Bmargin%2Dbottom%3A6px%7D%2Enavbar%2Dbtn%2Ebtn%2Dsm%7Bmargin%2Dtop%3A11px%3Bmargin%2Dbottom%3A11px%7D%2Enavbar%2Dbtn%2Ebtn%2Dxs%7Bmargin%2Dtop%3A14px%3Bmargin%2Dbottom%3A14px%7D%2Enavbar%2Dtext%7Bmargin%2Dtop%3A15px%3Bmargin%2Dbottom%3A15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dtext%7Bfloat%3Aleft%3Bmargin%2Dleft%3A15px%3Bmargin%2Dright%3A15px%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dleft%7Bfloat%3Aleft%20%21important%7D%2Enavbar%2Dright%7Bfloat%3Aright%20%21important%3Bmargin%2Dright%3A%2D15px%7D%2Enavbar%2Dright%7E%2Enavbar%2Dright%7Bmargin%2Dright%3A0%7D%7D%2Enavbar%2Ddefault%7Bbackground%2Dcolor%3A%23f8f8f8%3Bborder%2Dcolor%3A%23e7e7e7%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dbrand%7Bcolor%3A%23333333%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dbrand%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dbrand%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtext%7Bcolor%3A%23555555%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3Eli%3Ea%7Bcolor%3A%23999999%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3Eli%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3Eli%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23eeeeee%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%7Bborder%2Dcolor%3A%23eeeeee%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%3Afocus%7Bbackground%2Dcolor%3A%23ffffff%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%7Bbackground%2Dcolor%3A%23999999%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dform%7Bborder%2Dcolor%3A%23e7e7e7%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Afocus%7Bbackground%2Dcolor%3Atransparent%3Bcolor%3A%23333333%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%7Bcolor%3A%23999999%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23eeeeee%3Bbackground%2Dcolor%3Atransparent%7D%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dlink%7Bcolor%3A%23999999%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dlink%3Ahover%7Bcolor%3A%23333333%7D%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%7Bcolor%3A%23999999%7D%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Ahover%2C%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Afocus%7Bcolor%3A%23333333%7D%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Ahover%2C%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Afocus%7Bcolor%3A%23eeeeee%7D%2Enavbar%2Dinverse%7Bbackground%2Dcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23e6e6e6%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dbrand%7Bcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dbrand%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dbrand%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtext%7Bcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3Eli%3Ea%7Bcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3Eli%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3Eli%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23eeeeee%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%7Bborder%2Dcolor%3A%23eeeeee%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%3Afocus%7Bbackground%2Dcolor%3A%23eeeeee%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%7Bbackground%2Dcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dform%7Bborder%2Dcolor%3A%23ededed%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Afocus%7Bbackground%2Dcolor%3Atransparent%3Bcolor%3A%23333333%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edropdown%2Dheader%7Bborder%2Dcolor%3A%23e6e6e6%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%20%2Edivider%7Bbackground%2Dcolor%3A%23e6e6e6%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%7Bcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23eeeeee%3Bbackground%2Dcolor%3Atransparent%7D%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dlink%7Bcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dlink%3Ahover%7Bcolor%3A%23333333%7D%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%7Bcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Ahover%2C%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Afocus%7Bcolor%3A%23333333%7D%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Ahover%2C%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Afocus%7Bcolor%3A%23eeeeee%7D%2Ebreadcrumb%7Bpadding%3A8px%2015px%3Bmargin%2Dbottom%3A20px%3Blist%2Dstyle%3Anone%3Bbackground%2Dcolor%3A%23fafafa%3Bborder%2Dradius%3A4px%7D%2Ebreadcrumb%3Eli%7Bdisplay%3Ainline%2Dblock%7D%2Ebreadcrumb%3Eli%2Bli%3Abefore%7Bcontent%3A%22%3E%5C00a0%22%3Bpadding%3A0%205px%3Bcolor%3A%23999999%7D%2Ebreadcrumb%3E%2Eactive%7Bcolor%3A%23999999%7D%2Epagination%7Bdisplay%3Ainline%2Dblock%3Bpadding%2Dleft%3A0%3Bmargin%3A20px%200%3Bborder%2Dradius%3A4px%7D%2Epagination%3Eli%7Bdisplay%3Ainline%7D%2Epagination%3Eli%3Ea%2C%2Epagination%3Eli%3Espan%7Bposition%3Arelative%3Bfloat%3Aleft%3Bpadding%3A7px%2012px%3Bline%2Dheight%3A1%2E42857143%3Btext%2Ddecoration%3Anone%3Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23eeeeee%3Bborder%3A1px%20solid%20%23e2e2e2%3Bmargin%2Dleft%3A%2D1px%7D%2Epagination%3Eli%3Afirst%2Dchild%3Ea%2C%2Epagination%3Eli%3Afirst%2Dchild%3Espan%7Bmargin%2Dleft%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A4px%3Bborder%2Dtop%2Dleft%2Dradius%3A4px%7D%2Epagination%3Eli%3Alast%2Dchild%3Ea%2C%2Epagination%3Eli%3Alast%2Dchild%3Espan%7Bborder%2Dbottom%2Dright%2Dradius%3A4px%3Bborder%2Dtop%2Dright%2Dradius%3A4px%7D%2Epagination%3Eli%3Ea%3Ahover%2C%2Epagination%3Eli%3Espan%3Ahover%2C%2Epagination%3Eli%3Ea%3Afocus%2C%2Epagination%3Eli%3Espan%3Afocus%7Bz%2Dindex%3A2%3Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23eeeeee%3Bborder%2Dcolor%3A%23e2e2e2%7D%2Epagination%3E%2Eactive%3Ea%2C%2Epagination%3E%2Eactive%3Espan%2C%2Epagination%3E%2Eactive%3Ea%3Ahover%2C%2Epagination%3E%2Eactive%3Espan%3Ahover%2C%2Epagination%3E%2Eactive%3Ea%3Afocus%2C%2Epagination%3E%2Eactive%3Espan%3Afocus%7Bz%2Dindex%3A3%3Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dcolor%3A%23127ba3%3Bcursor%3Adefault%7D%2Epagination%3E%2Edisabled%3Espan%2C%2Epagination%3E%2Edisabled%3Espan%3Ahover%2C%2Epagination%3E%2Edisabled%3Espan%3Afocus%2C%2Epagination%3E%2Edisabled%3Ea%2C%2Epagination%3E%2Edisabled%3Ea%3Ahover%2C%2Epagination%3E%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23999999%3Bbackground%2Dcolor%3A%23eeeeee%3Bborder%2Dcolor%3A%23e2e2e2%3Bcursor%3Anot%2Dallowed%7D%2Epagination%2Dlg%3Eli%3Ea%2C%2Epagination%2Dlg%3Eli%3Espan%7Bpadding%3A13px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%7D%2Epagination%2Dlg%3Eli%3Afirst%2Dchild%3Ea%2C%2Epagination%2Dlg%3Eli%3Afirst%2Dchild%3Espan%7Bborder%2Dbottom%2Dleft%2Dradius%3A5px%3Bborder%2Dtop%2Dleft%2Dradius%3A5px%7D%2Epagination%2Dlg%3Eli%3Alast%2Dchild%3Ea%2C%2Epagination%2Dlg%3Eli%3Alast%2Dchild%3Espan%7Bborder%2Dbottom%2Dright%2Dradius%3A5px%3Bborder%2Dtop%2Dright%2Dradius%3A5px%7D%2Epagination%2Dsm%3Eli%3Ea%2C%2Epagination%2Dsm%3Eli%3Espan%7Bpadding%3A4px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%7D%2Epagination%2Dsm%3Eli%3Afirst%2Dchild%3Ea%2C%2Epagination%2Dsm%3Eli%3Afirst%2Dchild%3Espan%7Bborder%2Dbottom%2Dleft%2Dradius%3A2px%3Bborder%2Dtop%2Dleft%2Dradius%3A2px%7D%2Epagination%2Dsm%3Eli%3Alast%2Dchild%3Ea%2C%2Epagination%2Dsm%3Eli%3Alast%2Dchild%3Espan%7Bborder%2Dbottom%2Dright%2Dradius%3A2px%3Bborder%2Dtop%2Dright%2Dradius%3A2px%7D%2Epager%7Bpadding%2Dleft%3A0%3Bmargin%3A20px%200%3Blist%2Dstyle%3Anone%3Btext%2Dalign%3Acenter%7D%2Epager%20li%7Bdisplay%3Ainline%7D%2Epager%20li%3Ea%2C%2Epager%20li%3Espan%7Bdisplay%3Ainline%2Dblock%3Bpadding%3A5px%2014px%3Bbackground%2Dcolor%3A%23eeeeee%3Bborder%3A1px%20solid%20%23e2e2e2%3Bborder%2Dradius%3A15px%7D%2Epager%20li%3Ea%3Ahover%2C%2Epager%20li%3Ea%3Afocus%7Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3A%23eeeeee%7D%2Epager%20%2Enext%3Ea%2C%2Epager%20%2Enext%3Espan%7Bfloat%3Aright%7D%2Epager%20%2Eprevious%3Ea%2C%2Epager%20%2Eprevious%3Espan%7Bfloat%3Aleft%7D%2Epager%20%2Edisabled%3Ea%2C%2Epager%20%2Edisabled%3Ea%3Ahover%2C%2Epager%20%2Edisabled%3Ea%3Afocus%2C%2Epager%20%2Edisabled%3Espan%7Bcolor%3A%23999999%3Bbackground%2Dcolor%3A%23eeeeee%3Bcursor%3Anot%2Dallowed%7D%2Elabel%7Bdisplay%3Ainline%3Bpadding%3A%2E2em%20%2E6em%20%2E3em%3Bfont%2Dsize%3A75%25%3Bfont%2Dweight%3Abold%3Bline%2Dheight%3A1%3Bcolor%3A%23ffffff%3Btext%2Dalign%3Acenter%3Bwhite%2Dspace%3Anowrap%3Bvertical%2Dalign%3Abaseline%3Bborder%2Dradius%3A%2E25em%7Da%2Elabel%3Ahover%2Ca%2Elabel%3Afocus%7Bcolor%3A%23ffffff%3Btext%2Ddecoration%3Anone%3Bcursor%3Apointer%7D%2Elabel%3Aempty%7Bdisplay%3Anone%7D%2Ebtn%20%2Elabel%7Bposition%3Arelative%3Btop%3A%2D1px%7D%2Elabel%2Ddefault%7Bbackground%2Dcolor%3A%23999999%7D%2Elabel%2Ddefault%5Bhref%5D%3Ahover%2C%2Elabel%2Ddefault%5Bhref%5D%3Afocus%7Bbackground%2Dcolor%3A%23808080%7D%2Elabel%2Dprimary%7Bbackground%2Dcolor%3A%23158cba%7D%2Elabel%2Dprimary%5Bhref%5D%3Ahover%2C%2Elabel%2Dprimary%5Bhref%5D%3Afocus%7Bbackground%2Dcolor%3A%23106a8c%7D%2Elabel%2Dsuccess%7Bbackground%2Dcolor%3A%2328b62c%7D%2Elabel%2Dsuccess%5Bhref%5D%3Ahover%2C%2Elabel%2Dsuccess%5Bhref%5D%3Afocus%7Bbackground%2Dcolor%3A%231f8c22%7D%2Elabel%2Dinfo%7Bbackground%2Dcolor%3A%2375caeb%7D%2Elabel%2Dinfo%5Bhref%5D%3Ahover%2C%2Elabel%2Dinfo%5Bhref%5D%3Afocus%7Bbackground%2Dcolor%3A%2348b9e5%7D%2Elabel%2Dwarning%7Bbackground%2Dcolor%3A%23ff851b%7D%2Elabel%2Dwarning%5Bhref%5D%3Ahover%2C%2Elabel%2Dwarning%5Bhref%5D%3Afocus%7Bbackground%2Dcolor%3A%23e76b00%7D%2Elabel%2Ddanger%7Bbackground%2Dcolor%3A%23ff4136%7D%2Elabel%2Ddanger%5Bhref%5D%3Ahover%2C%2Elabel%2Ddanger%5Bhref%5D%3Afocus%7Bbackground%2Dcolor%3A%23ff1103%7D%2Ebadge%7Bdisplay%3Ainline%2Dblock%3Bmin%2Dwidth%3A10px%3Bpadding%3A3px%207px%3Bfont%2Dsize%3A12px%3Bfont%2Dweight%3Anormal%3Bcolor%3A%23ffffff%3Bline%2Dheight%3A1%3Bvertical%2Dalign%3Amiddle%3Bwhite%2Dspace%3Anowrap%3Btext%2Dalign%3Acenter%3Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dradius%3A10px%7D%2Ebadge%3Aempty%7Bdisplay%3Anone%7D%2Ebtn%20%2Ebadge%7Bposition%3Arelative%3Btop%3A%2D1px%7D%2Ebtn%2Dxs%20%2Ebadge%2C%2Ebtn%2Dgroup%2Dxs%3E%2Ebtn%20%2Ebadge%7Btop%3A0%3Bpadding%3A1px%205px%7Da%2Ebadge%3Ahover%2Ca%2Ebadge%3Afocus%7Bcolor%3A%23ffffff%3Btext%2Ddecoration%3Anone%3Bcursor%3Apointer%7D%2Elist%2Dgroup%2Ditem%2Eactive%3E%2Ebadge%2C%2Enav%2Dpills%3E%2Eactive%3Ea%3E%2Ebadge%7Bcolor%3A%23158cba%3Bbackground%2Dcolor%3A%23ffffff%7D%2Elist%2Dgroup%2Ditem%3E%2Ebadge%7Bfloat%3Aright%7D%2Elist%2Dgroup%2Ditem%3E%2Ebadge%2B%2Ebadge%7Bmargin%2Dright%3A5px%7D%2Enav%2Dpills%3Eli%3Ea%3E%2Ebadge%7Bmargin%2Dleft%3A3px%7D%2Ejumbotron%7Bpadding%2Dtop%3A30px%3Bpadding%2Dbottom%3A30px%3Bmargin%2Dbottom%3A30px%3Bcolor%3Ainherit%3Bbackground%2Dcolor%3A%23fafafa%7D%2Ejumbotron%20h1%2C%2Ejumbotron%20%2Eh1%7Bcolor%3Ainherit%7D%2Ejumbotron%20p%7Bmargin%2Dbottom%3A15px%3Bfont%2Dsize%3A21px%3Bfont%2Dweight%3A200%7D%2Ejumbotron%3Ehr%7Bborder%2Dtop%2Dcolor%3A%23e1e1e1%7D%2Econtainer%20%2Ejumbotron%2C%2Econtainer%2Dfluid%20%2Ejumbotron%7Bborder%2Dradius%3A5px%3Bpadding%2Dleft%3A15px%3Bpadding%2Dright%3A15px%7D%2Ejumbotron%20%2Econtainer%7Bmax%2Dwidth%3A100%25%7D%40media%20screen%20and%20%28min%2Dwidth%3A768px%29%7B%2Ejumbotron%7Bpadding%2Dtop%3A48px%3Bpadding%2Dbottom%3A48px%7D%2Econtainer%20%2Ejumbotron%2C%2Econtainer%2Dfluid%20%2Ejumbotron%7Bpadding%2Dleft%3A60px%3Bpadding%2Dright%3A60px%7D%2Ejumbotron%20h1%2C%2Ejumbotron%20%2Eh1%7Bfont%2Dsize%3A63px%7D%7D%2Ethumbnail%7Bdisplay%3Ablock%3Bpadding%3A4px%3Bmargin%2Dbottom%3A20px%3Bline%2Dheight%3A1%2E42857143%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20%23eeeeee%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dtransition%3Aborder%20%2E2s%20ease%2Din%2Dout%3B%2Do%2Dtransition%3Aborder%20%2E2s%20ease%2Din%2Dout%3Btransition%3Aborder%20%2E2s%20ease%2Din%2Dout%7D%2Ethumbnail%3Eimg%2C%2Ethumbnail%20a%3Eimg%7Bmargin%2Dleft%3Aauto%3Bmargin%2Dright%3Aauto%7Da%2Ethumbnail%3Ahover%2Ca%2Ethumbnail%3Afocus%2Ca%2Ethumbnail%2Eactive%7Bborder%2Dcolor%3A%23158cba%7D%2Ethumbnail%20%2Ecaption%7Bpadding%3A9px%3Bcolor%3A%23555555%7D%2Ealert%7Bpadding%3A15px%3Bmargin%2Dbottom%3A20px%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%7D%2Ealert%20h4%7Bmargin%2Dtop%3A0%3Bcolor%3Ainherit%7D%2Ealert%20%2Ealert%2Dlink%7Bfont%2Dweight%3Abold%7D%2Ealert%3Ep%2C%2Ealert%3Eul%7Bmargin%2Dbottom%3A0%7D%2Ealert%3Ep%2Bp%7Bmargin%2Dtop%3A5px%7D%2Ealert%2Ddismissable%2C%2Ealert%2Ddismissible%7Bpadding%2Dright%3A35px%7D%2Ealert%2Ddismissable%20%2Eclose%2C%2Ealert%2Ddismissible%20%2Eclose%7Bposition%3Arelative%3Btop%3A%2D2px%3Bright%3A%2D21px%3Bcolor%3Ainherit%7D%2Ealert%2Dsuccess%7Bbackground%2Dcolor%3A%2328b62c%3Bborder%2Dcolor%3A%2324a528%3Bcolor%3A%23ffffff%7D%2Ealert%2Dsuccess%20hr%7Bborder%2Dtop%2Dcolor%3A%23209023%7D%2Ealert%2Dsuccess%20%2Ealert%2Dlink%7Bcolor%3A%23e6e6e6%7D%2Ealert%2Dinfo%7Bbackground%2Dcolor%3A%2375caeb%3Bborder%2Dcolor%3A%2340b5e3%3Bcolor%3A%23ffffff%7D%2Ealert%2Dinfo%20hr%7Bborder%2Dtop%2Dcolor%3A%2329ade0%7D%2Ealert%2Dinfo%20%2Ealert%2Dlink%7Bcolor%3A%23e6e6e6%7D%2Ealert%2Dwarning%7Bbackground%2Dcolor%3A%23ff851b%3Bborder%2Dcolor%3A%23ff7701%3Bcolor%3A%23ffffff%7D%2Ealert%2Dwarning%20hr%7Bborder%2Dtop%2Dcolor%3A%23e76b00%7D%2Ealert%2Dwarning%20%2Ealert%2Dlink%7Bcolor%3A%23e6e6e6%7D%2Ealert%2Ddanger%7Bbackground%2Dcolor%3A%23ff4136%3Bborder%2Dcolor%3A%23ff1103%3Bcolor%3A%23ffffff%7D%2Ealert%2Ddanger%20hr%7Bborder%2Dtop%2Dcolor%3A%23e90d00%7D%2Ealert%2Ddanger%20%2Ealert%2Dlink%7Bcolor%3A%23e6e6e6%7D%40%2Dwebkit%2Dkeyframes%20progress%2Dbar%2Dstripes%7Bfrom%7Bbackground%2Dposition%3A40px%200%7Dto%7Bbackground%2Dposition%3A0%200%7D%7D%40%2Do%2Dkeyframes%20progress%2Dbar%2Dstripes%7Bfrom%7Bbackground%2Dposition%3A40px%200%7Dto%7Bbackground%2Dposition%3A0%200%7D%7D%40keyframes%20progress%2Dbar%2Dstripes%7Bfrom%7Bbackground%2Dposition%3A40px%200%7Dto%7Bbackground%2Dposition%3A0%200%7D%7D%2Eprogress%7Boverflow%3Ahidden%3Bheight%3A20px%3Bmargin%2Dbottom%3A20px%3Bbackground%2Dcolor%3A%23fafafa%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%202px%20rgba%280%2C0%2C0%2C0%2E1%29%3Bbox%2Dshadow%3Ainset%200%201px%202px%20rgba%280%2C0%2C0%2C0%2E1%29%7D%2Eprogress%2Dbar%7Bfloat%3Aleft%3Bwidth%3A0%25%3Bheight%3A100%25%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A20px%3Bcolor%3A%23ffffff%3Btext%2Dalign%3Acenter%3Bbackground%2Dcolor%3A%23158cba%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C0%2E15%29%3Bbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C0%2E15%29%3B%2Dwebkit%2Dtransition%3Awidth%200%2E6s%20ease%3B%2Do%2Dtransition%3Awidth%200%2E6s%20ease%3Btransition%3Awidth%200%2E6s%20ease%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2C%2Eprogress%2Dbar%2Dstriped%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3B%2Dwebkit%2Dbackground%2Dsize%3A40px%2040px%3Bbackground%2Dsize%3A40px%2040px%7D%2Eprogress%2Eactive%20%2Eprogress%2Dbar%2C%2Eprogress%2Dbar%2Eactive%7B%2Dwebkit%2Danimation%3Aprogress%2Dbar%2Dstripes%202s%20linear%20infinite%3B%2Do%2Danimation%3Aprogress%2Dbar%2Dstripes%202s%20linear%20infinite%3Banimation%3Aprogress%2Dbar%2Dstripes%202s%20linear%20infinite%7D%2Eprogress%2Dbar%2Dsuccess%7Bbackground%2Dcolor%3A%2328b62c%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Dsuccess%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%7D%2Eprogress%2Dbar%2Dinfo%7Bbackground%2Dcolor%3A%2375caeb%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Dinfo%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%7D%2Eprogress%2Dbar%2Dwarning%7Bbackground%2Dcolor%3A%23ff851b%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Dwarning%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%7D%2Eprogress%2Dbar%2Ddanger%7Bbackground%2Dcolor%3A%23ff4136%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Ddanger%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%7D%2Emedia%7Bmargin%2Dtop%3A15px%7D%2Emedia%3Afirst%2Dchild%7Bmargin%2Dtop%3A0%7D%2Emedia%2C%2Emedia%2Dbody%7Bzoom%3A1%3Boverflow%3Ahidden%7D%2Emedia%2Dbody%7Bwidth%3A10000px%7D%2Emedia%2Dobject%7Bdisplay%3Ablock%7D%2Emedia%2Dobject%2Eimg%2Dthumbnail%7Bmax%2Dwidth%3Anone%7D%2Emedia%2Dright%2C%2Emedia%3E%2Epull%2Dright%7Bpadding%2Dleft%3A10px%7D%2Emedia%2Dleft%2C%2Emedia%3E%2Epull%2Dleft%7Bpadding%2Dright%3A10px%7D%2Emedia%2Dleft%2C%2Emedia%2Dright%2C%2Emedia%2Dbody%7Bdisplay%3Atable%2Dcell%3Bvertical%2Dalign%3Atop%7D%2Emedia%2Dmiddle%7Bvertical%2Dalign%3Amiddle%7D%2Emedia%2Dbottom%7Bvertical%2Dalign%3Abottom%7D%2Emedia%2Dheading%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A5px%7D%2Emedia%2Dlist%7Bpadding%2Dleft%3A0%3Blist%2Dstyle%3Anone%7D%2Elist%2Dgroup%7Bmargin%2Dbottom%3A20px%3Bpadding%2Dleft%3A0%7D%2Elist%2Dgroup%2Ditem%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bpadding%3A10px%2015px%3Bmargin%2Dbottom%3A%2D1px%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20%23eeeeee%7D%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%2Dright%2Dradius%3A4px%3Bborder%2Dtop%2Dleft%2Dradius%3A4px%7D%2Elist%2Dgroup%2Ditem%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A4px%3Bborder%2Dbottom%2Dleft%2Dradius%3A4px%7Da%2Elist%2Dgroup%2Ditem%2Cbutton%2Elist%2Dgroup%2Ditem%7Bcolor%3A%23555555%7Da%2Elist%2Dgroup%2Ditem%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3A%23333333%7Da%2Elist%2Dgroup%2Ditem%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%3Afocus%7Btext%2Ddecoration%3Anone%3Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23f5f5f5%7Dbutton%2Elist%2Dgroup%2Ditem%7Bwidth%3A100%25%3Btext%2Dalign%3Aleft%7D%2Elist%2Dgroup%2Ditem%2Edisabled%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Ahover%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Afocus%7Bbackground%2Dcolor%3A%23eeeeee%3Bcolor%3A%23999999%3Bcursor%3Anot%2Dallowed%7D%2Elist%2Dgroup%2Ditem%2Edisabled%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7D%2Elist%2Dgroup%2Ditem%2Edisabled%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dtext%7Bcolor%3A%23999999%7D%2Elist%2Dgroup%2Ditem%2Eactive%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%7Bz%2Dindex%3A2%3Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dcolor%3A%23158cba%7D%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dheading%3Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%3Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%3Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dheading%3E%2Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%3E%2Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%3E%2Esmall%7Bcolor%3Ainherit%7D%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dtext%7Bcolor%3A%23a6dff5%7D%2Elist%2Dgroup%2Ditem%2Dsuccess%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2328b62c%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%7Bcolor%3A%23ffffff%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dsuccess%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%3Afocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2323a127%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%7D%2Elist%2Dgroup%2Ditem%2Dinfo%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2375caeb%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%7Bcolor%3A%23ffffff%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dinfo%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%3Afocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%235fc1e8%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%7D%2Elist%2Dgroup%2Ditem%2Dwarning%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff851b%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%7Bcolor%3A%23ffffff%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dwarning%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%3Afocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff7701%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%7D%2Elist%2Dgroup%2Ditem%2Ddanger%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff4136%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%7Bcolor%3A%23ffffff%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Ddanger%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%3Afocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff291c%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%7D%2Elist%2Dgroup%2Ditem%2Dheading%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A5px%7D%2Elist%2Dgroup%2Ditem%2Dtext%7Bmargin%2Dbottom%3A0%3Bline%2Dheight%3A1%2E3%7D%2Epanel%7Bmargin%2Dbottom%3A20px%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3A0%201px%201px%20rgba%280%2C0%2C0%2C0%2E05%29%3Bbox%2Dshadow%3A0%201px%201px%20rgba%280%2C0%2C0%2C0%2E05%29%7D%2Epanel%2Dbody%7Bpadding%3A15px%7D%2Epanel%2Dheading%7Bpadding%3A10px%2015px%3Bborder%2Dbottom%3A1px%20solid%20transparent%3Bborder%2Dtop%2Dright%2Dradius%3A3px%3Bborder%2Dtop%2Dleft%2Dradius%3A3px%7D%2Epanel%2Dheading%3E%2Edropdown%20%2Edropdown%2Dtoggle%7Bcolor%3Ainherit%7D%2Epanel%2Dtitle%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bfont%2Dsize%3A16px%3Bcolor%3Ainherit%7D%2Epanel%2Dtitle%3Ea%2C%2Epanel%2Dtitle%3Esmall%2C%2Epanel%2Dtitle%3E%2Esmall%2C%2Epanel%2Dtitle%3Esmall%3Ea%2C%2Epanel%2Dtitle%3E%2Esmall%3Ea%7Bcolor%3Ainherit%7D%2Epanel%2Dfooter%7Bpadding%3A10px%2015px%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%2Dtop%3A1px%20solid%20transparent%3Bborder%2Dbottom%2Dright%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Elist%2Dgroup%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%7Bmargin%2Dbottom%3A0%7D%2Epanel%3E%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%7Bborder%2Dwidth%3A1px%200%3Bborder%2Dradius%3A0%7D%2Epanel%3E%2Elist%2Dgroup%3Afirst%2Dchild%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%3Afirst%2Dchild%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A3px%3Bborder%2Dtop%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Elist%2Dgroup%3Alast%2Dchild%20%2Elist%2Dgroup%2Ditem%3Alast%2Dchild%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%3Alast%2Dchild%20%2Elist%2Dgroup%2Ditem%3Alast%2Dchild%7Bborder%2Dbottom%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Epanel%2Dheading%2B%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%2Dwidth%3A0%7D%2Elist%2Dgroup%2B%2Epanel%2Dfooter%7Bborder%2Dtop%2Dwidth%3A0%7D%2Epanel%3E%2Etable%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Etable%7Bmargin%2Dbottom%3A0%7D%2Epanel%3E%2Etable%20caption%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%20caption%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Etable%20caption%7Bpadding%2Dleft%3A15px%3Bpadding%2Dright%3A15px%7D%2Epanel%3E%2Etable%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%7Bborder%2Dtop%2Dright%2Dradius%3A3px%3Bborder%2Dtop%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A3px%3Bborder%2Dtop%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%7Bborder%2Dtop%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%7Bborder%2Dbottom%2Dright%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%7Bborder%2Dbottom%2Dleft%2Dradius%3A3px%3Bborder%2Dbottom%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%7Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%7Bborder%2Dbottom%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Epanel%2Dbody%2B%2Etable%2C%2Epanel%3E%2Epanel%2Dbody%2B%2Etable%2Dresponsive%2C%2Epanel%3E%2Etable%2B%2Epanel%2Dbody%2C%2Epanel%3E%2Etable%2Dresponsive%2B%2Epanel%2Dbody%7Bborder%2Dtop%3A1px%20solid%20%23eeeeee%7D%2Epanel%3E%2Etable%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%2C%2Epanel%3E%2Etable%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%7Bborder%2Dtop%3A0%7D%2Epanel%3E%2Etable%2Dbordered%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%7Bborder%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Afirst%2Dchild%7Bborder%2Dleft%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Alast%2Dchild%7Bborder%2Dright%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Eth%7Bborder%2Dbottom%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Eth%7Bborder%2Dbottom%3A0%7D%2Epanel%3E%2Etable%2Dresponsive%7Bborder%3A0%3Bmargin%2Dbottom%3A0%7D%2Epanel%2Dgroup%7Bmargin%2Dbottom%3A20px%7D%2Epanel%2Dgroup%20%2Epanel%7Bmargin%2Dbottom%3A0%3Bborder%2Dradius%3A4px%7D%2Epanel%2Dgroup%20%2Epanel%2B%2Epanel%7Bmargin%2Dtop%3A5px%7D%2Epanel%2Dgroup%20%2Epanel%2Dheading%7Bborder%2Dbottom%3A0%7D%2Epanel%2Dgroup%20%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%2C%2Epanel%2Dgroup%20%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%7Bborder%2Dtop%3A1px%20solid%20transparent%7D%2Epanel%2Dgroup%20%2Epanel%2Dfooter%7Bborder%2Dtop%3A0%7D%2Epanel%2Dgroup%20%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%20%2Epanel%2Dbody%7Bborder%2Dbottom%3A1px%20solid%20transparent%7D%2Epanel%2Ddefault%7Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Ddefault%3E%2Epanel%2Dheading%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Ddefault%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3Atransparent%7D%2Epanel%2Ddefault%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23f5f5f5%3Bbackground%2Dcolor%3A%23333333%7D%2Epanel%2Ddefault%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Epanel%2Dprimary%7Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dprimary%3E%2Epanel%2Dheading%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dprimary%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3Atransparent%7D%2Epanel%2Dprimary%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23158cba%3Bbackground%2Dcolor%3A%23ffffff%7D%2Epanel%2Dprimary%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Epanel%2Dsuccess%7Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dheading%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2328b62c%3Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3Atransparent%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%2328b62c%3Bbackground%2Dcolor%3A%23ffffff%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Epanel%2Dinfo%7Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dinfo%3E%2Epanel%2Dheading%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2375caeb%3Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dinfo%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3Atransparent%7D%2Epanel%2Dinfo%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%2375caeb%3Bbackground%2Dcolor%3A%23ffffff%7D%2Epanel%2Dinfo%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Epanel%2Dwarning%7Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dwarning%3E%2Epanel%2Dheading%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff851b%3Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dwarning%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3Atransparent%7D%2Epanel%2Dwarning%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23ff851b%3Bbackground%2Dcolor%3A%23ffffff%7D%2Epanel%2Dwarning%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Epanel%2Ddanger%7Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Ddanger%3E%2Epanel%2Dheading%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff4136%3Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Ddanger%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3Atransparent%7D%2Epanel%2Ddanger%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23ff4136%3Bbackground%2Dcolor%3A%23ffffff%7D%2Epanel%2Ddanger%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Eembed%2Dresponsive%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bheight%3A0%3Bpadding%3A0%3Boverflow%3Ahidden%7D%2Eembed%2Dresponsive%20%2Eembed%2Dresponsive%2Ditem%2C%2Eembed%2Dresponsive%20iframe%2C%2Eembed%2Dresponsive%20embed%2C%2Eembed%2Dresponsive%20object%2C%2Eembed%2Dresponsive%20video%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bbottom%3A0%3Bheight%3A100%25%3Bwidth%3A100%25%3Bborder%3A0%7D%2Eembed%2Dresponsive%2D16by9%7Bpadding%2Dbottom%3A56%2E25%25%7D%2Eembed%2Dresponsive%2D4by3%7Bpadding%2Dbottom%3A75%25%7D%2Ewell%7Bmin%2Dheight%3A20px%3Bpadding%3A19px%3Bmargin%2Dbottom%3A20px%3Bbackground%2Dcolor%3A%23fafafa%3Bborder%3A1px%20solid%20%23e8e8e8%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E05%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E05%29%7D%2Ewell%20blockquote%7Bborder%2Dcolor%3A%23ddd%3Bborder%2Dcolor%3Argba%280%2C0%2C0%2C0%2E15%29%7D%2Ewell%2Dlg%7Bpadding%3A24px%3Bborder%2Dradius%3A5px%7D%2Ewell%2Dsm%7Bpadding%3A9px%3Bborder%2Dradius%3A2px%7D%2Eclose%7Bfloat%3Aright%3Bfont%2Dsize%3A21px%3Bfont%2Dweight%3Abold%3Bline%2Dheight%3A1%3Bcolor%3A%23ffffff%3Btext%2Dshadow%3A0%201px%200%20%23ffffff%3Bopacity%3A0%2E2%3Bfilter%3Aalpha%28opacity%3D20%29%7D%2Eclose%3Ahover%2C%2Eclose%3Afocus%7Bcolor%3A%23ffffff%3Btext%2Ddecoration%3Anone%3Bcursor%3Apointer%3Bopacity%3A0%2E5%3Bfilter%3Aalpha%28opacity%3D50%29%7Dbutton%2Eclose%7Bpadding%3A0%3Bcursor%3Apointer%3Bbackground%3Atransparent%3Bborder%3A0%3B%2Dwebkit%2Dappearance%3Anone%7D%2Emodal%2Dopen%7Boverflow%3Ahidden%7D%2Emodal%7Bdisplay%3Anone%3Boverflow%3Ahidden%3Bposition%3Afixed%3Btop%3A0%3Bright%3A0%3Bbottom%3A0%3Bleft%3A0%3Bz%2Dindex%3A1050%3B%2Dwebkit%2Doverflow%2Dscrolling%3Atouch%3Boutline%3A0%7D%2Emodal%2Efade%20%2Emodal%2Ddialog%7B%2Dwebkit%2Dtransform%3Atranslate%280%2C%20%2D25%25%29%3B%2Dms%2Dtransform%3Atranslate%280%2C%20%2D25%25%29%3B%2Do%2Dtransform%3Atranslate%280%2C%20%2D25%25%29%3Btransform%3Atranslate%280%2C%20%2D25%25%29%3B%2Dwebkit%2Dtransition%3A%2Dwebkit%2Dtransform%20%2E3s%20ease%2Dout%3B%2Do%2Dtransition%3A%2Do%2Dtransform%20%2E3s%20ease%2Dout%3Btransition%3Atransform%20%2E3s%20ease%2Dout%7D%2Emodal%2Ein%20%2Emodal%2Ddialog%7B%2Dwebkit%2Dtransform%3Atranslate%280%2C%200%29%3B%2Dms%2Dtransform%3Atranslate%280%2C%200%29%3B%2Do%2Dtransform%3Atranslate%280%2C%200%29%3Btransform%3Atranslate%280%2C%200%29%7D%2Emodal%2Dopen%20%2Emodal%7Boverflow%2Dx%3Ahidden%3Boverflow%2Dy%3Aauto%7D%2Emodal%2Ddialog%7Bposition%3Arelative%3Bwidth%3Aauto%3Bmargin%3A10px%7D%2Emodal%2Dcontent%7Bposition%3Arelative%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20%23eeeeee%3Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C0%2E05%29%3Bborder%2Dradius%3A5px%3B%2Dwebkit%2Dbox%2Dshadow%3A0%203px%209px%20rgba%280%2C0%2C0%2C0%2E5%29%3Bbox%2Dshadow%3A0%203px%209px%20rgba%280%2C0%2C0%2C0%2E5%29%3B%2Dwebkit%2Dbackground%2Dclip%3Apadding%2Dbox%3Bbackground%2Dclip%3Apadding%2Dbox%3Boutline%3A0%7D%2Emodal%2Dbackdrop%7Bposition%3Afixed%3Btop%3A0%3Bright%3A0%3Bbottom%3A0%3Bleft%3A0%3Bz%2Dindex%3A1040%3Bbackground%2Dcolor%3A%23000000%7D%2Emodal%2Dbackdrop%2Efade%7Bopacity%3A0%3Bfilter%3Aalpha%28opacity%3D0%29%7D%2Emodal%2Dbackdrop%2Ein%7Bopacity%3A0%2E5%3Bfilter%3Aalpha%28opacity%3D50%29%7D%2Emodal%2Dheader%7Bpadding%3A15px%3Bborder%2Dbottom%3A1px%20solid%20%23e5e5e5%7D%2Emodal%2Dheader%20%2Eclose%7Bmargin%2Dtop%3A%2D2px%7D%2Emodal%2Dtitle%7Bmargin%3A0%3Bline%2Dheight%3A1%2E42857143%7D%2Emodal%2Dbody%7Bposition%3Arelative%3Bpadding%3A20px%7D%2Emodal%2Dfooter%7Bpadding%3A20px%3Btext%2Dalign%3Aright%3Bborder%2Dtop%3A1px%20solid%20%23e5e5e5%7D%2Emodal%2Dfooter%20%2Ebtn%2B%2Ebtn%7Bmargin%2Dleft%3A5px%3Bmargin%2Dbottom%3A0%7D%2Emodal%2Dfooter%20%2Ebtn%2Dgroup%20%2Ebtn%2B%2Ebtn%7Bmargin%2Dleft%3A%2D1px%7D%2Emodal%2Dfooter%20%2Ebtn%2Dblock%2B%2Ebtn%2Dblock%7Bmargin%2Dleft%3A0%7D%2Emodal%2Dscrollbar%2Dmeasure%7Bposition%3Aabsolute%3Btop%3A%2D9999px%3Bwidth%3A50px%3Bheight%3A50px%3Boverflow%3Ascroll%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Emodal%2Ddialog%7Bwidth%3A600px%3Bmargin%3A30px%20auto%7D%2Emodal%2Dcontent%7B%2Dwebkit%2Dbox%2Dshadow%3A0%205px%2015px%20rgba%280%2C0%2C0%2C0%2E5%29%3Bbox%2Dshadow%3A0%205px%2015px%20rgba%280%2C0%2C0%2C0%2E5%29%7D%2Emodal%2Dsm%7Bwidth%3A300px%7D%7D%40media%20%28min%2Dwidth%3A992px%29%7B%2Emodal%2Dlg%7Bwidth%3A900px%7D%7D%2Etooltip%7Bposition%3Aabsolute%3Bz%2Dindex%3A1070%3Bdisplay%3Ablock%3Bfont%2Dfamily%3A%22Source%20Sans%20Pro%22%2C%22Helvetica%20Neue%22%2CHelvetica%2CArial%2Csans%2Dserif%3Bfont%2Dstyle%3Anormal%3Bfont%2Dweight%3Anormal%3Bletter%2Dspacing%3Anormal%3Bline%2Dbreak%3Aauto%3Bline%2Dheight%3A1%2E42857143%3Btext%2Dalign%3Aleft%3Btext%2Dalign%3Astart%3Btext%2Ddecoration%3Anone%3Btext%2Dshadow%3Anone%3Btext%2Dtransform%3Anone%3Bwhite%2Dspace%3Anormal%3Bword%2Dbreak%3Anormal%3Bword%2Dspacing%3Anormal%3Bword%2Dwrap%3Anormal%3Bfont%2Dsize%3A12px%3Bopacity%3A0%3Bfilter%3Aalpha%28opacity%3D0%29%7D%2Etooltip%2Ein%7Bopacity%3A0%2E9%3Bfilter%3Aalpha%28opacity%3D90%29%7D%2Etooltip%2Etop%7Bmargin%2Dtop%3A%2D3px%3Bpadding%3A5px%200%7D%2Etooltip%2Eright%7Bmargin%2Dleft%3A3px%3Bpadding%3A0%205px%7D%2Etooltip%2Ebottom%7Bmargin%2Dtop%3A3px%3Bpadding%3A5px%200%7D%2Etooltip%2Eleft%7Bmargin%2Dleft%3A%2D3px%3Bpadding%3A0%205px%7D%2Etooltip%2Dinner%7Bmax%2Dwidth%3A200px%3Bpadding%3A3px%208px%3Bcolor%3A%23ffffff%3Btext%2Dalign%3Acenter%3Bbackground%2Dcolor%3A%23000000%3Bborder%2Dradius%3A4px%7D%2Etooltip%2Darrow%7Bposition%3Aabsolute%3Bwidth%3A0%3Bheight%3A0%3Bborder%2Dcolor%3Atransparent%3Bborder%2Dstyle%3Asolid%7D%2Etooltip%2Etop%20%2Etooltip%2Darrow%7Bbottom%3A0%3Bleft%3A50%25%3Bmargin%2Dleft%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dtop%2Dcolor%3A%23000000%7D%2Etooltip%2Etop%2Dleft%20%2Etooltip%2Darrow%7Bbottom%3A0%3Bright%3A5px%3Bmargin%2Dbottom%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dtop%2Dcolor%3A%23000000%7D%2Etooltip%2Etop%2Dright%20%2Etooltip%2Darrow%7Bbottom%3A0%3Bleft%3A5px%3Bmargin%2Dbottom%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dtop%2Dcolor%3A%23000000%7D%2Etooltip%2Eright%20%2Etooltip%2Darrow%7Btop%3A50%25%3Bleft%3A0%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%205px%200%3Bborder%2Dright%2Dcolor%3A%23000000%7D%2Etooltip%2Eleft%20%2Etooltip%2Darrow%7Btop%3A50%25%3Bright%3A0%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A5px%200%205px%205px%3Bborder%2Dleft%2Dcolor%3A%23000000%7D%2Etooltip%2Ebottom%20%2Etooltip%2Darrow%7Btop%3A0%3Bleft%3A50%25%3Bmargin%2Dleft%3A%2D5px%3Bborder%2Dwidth%3A0%205px%205px%3Bborder%2Dbottom%2Dcolor%3A%23000000%7D%2Etooltip%2Ebottom%2Dleft%20%2Etooltip%2Darrow%7Btop%3A0%3Bright%3A5px%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A0%205px%205px%3Bborder%2Dbottom%2Dcolor%3A%23000000%7D%2Etooltip%2Ebottom%2Dright%20%2Etooltip%2Darrow%7Btop%3A0%3Bleft%3A5px%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A0%205px%205px%3Bborder%2Dbottom%2Dcolor%3A%23000000%7D%2Epopover%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bz%2Dindex%3A1060%3Bdisplay%3Anone%3Bmax%2Dwidth%3A276px%3Bpadding%3A1px%3Bfont%2Dfamily%3A%22Source%20Sans%20Pro%22%2C%22Helvetica%20Neue%22%2CHelvetica%2CArial%2Csans%2Dserif%3Bfont%2Dstyle%3Anormal%3Bfont%2Dweight%3Anormal%3Bletter%2Dspacing%3Anormal%3Bline%2Dbreak%3Aauto%3Bline%2Dheight%3A1%2E42857143%3Btext%2Dalign%3Aleft%3Btext%2Dalign%3Astart%3Btext%2Ddecoration%3Anone%3Btext%2Dshadow%3Anone%3Btext%2Dtransform%3Anone%3Bwhite%2Dspace%3Anormal%3Bword%2Dbreak%3Anormal%3Bword%2Dspacing%3Anormal%3Bword%2Dwrap%3Anormal%3Bfont%2Dsize%3A14px%3Bbackground%2Dcolor%3A%23ffffff%3B%2Dwebkit%2Dbackground%2Dclip%3Apadding%2Dbox%3Bbackground%2Dclip%3Apadding%2Dbox%3Bborder%3A1px%20solid%20%23cccccc%3Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C0%2E2%29%3Bborder%2Dradius%3A5px%3B%2Dwebkit%2Dbox%2Dshadow%3A0%205px%2010px%20rgba%280%2C0%2C0%2C0%2E2%29%3Bbox%2Dshadow%3A0%205px%2010px%20rgba%280%2C0%2C0%2C0%2E2%29%7D%2Epopover%2Etop%7Bmargin%2Dtop%3A%2D10px%7D%2Epopover%2Eright%7Bmargin%2Dleft%3A10px%7D%2Epopover%2Ebottom%7Bmargin%2Dtop%3A10px%7D%2Epopover%2Eleft%7Bmargin%2Dleft%3A%2D10px%7D%2Epopover%2Dtitle%7Bmargin%3A0%3Bpadding%3A8px%2014px%3Bfont%2Dsize%3A14px%3Bbackground%2Dcolor%3A%23f7f7f7%3Bborder%2Dbottom%3A1px%20solid%20%23ebebeb%3Bborder%2Dradius%3A4px%204px%200%200%7D%2Epopover%2Dcontent%7Bpadding%3A9px%2014px%7D%2Epopover%3E%2Earrow%2C%2Epopover%3E%2Earrow%3Aafter%7Bposition%3Aabsolute%3Bdisplay%3Ablock%3Bwidth%3A0%3Bheight%3A0%3Bborder%2Dcolor%3Atransparent%3Bborder%2Dstyle%3Asolid%7D%2Epopover%3E%2Earrow%7Bborder%2Dwidth%3A11px%7D%2Epopover%3E%2Earrow%3Aafter%7Bborder%2Dwidth%3A10px%3Bcontent%3A%22%22%7D%2Epopover%2Etop%3E%2Earrow%7Bleft%3A50%25%3Bmargin%2Dleft%3A%2D11px%3Bborder%2Dbottom%2Dwidth%3A0%3Bborder%2Dtop%2Dcolor%3A%23999999%3Bborder%2Dtop%2Dcolor%3Argba%280%2C0%2C0%2C0%2E25%29%3Bbottom%3A%2D11px%7D%2Epopover%2Etop%3E%2Earrow%3Aafter%7Bcontent%3A%22%20%22%3Bbottom%3A1px%3Bmargin%2Dleft%3A%2D10px%3Bborder%2Dbottom%2Dwidth%3A0%3Bborder%2Dtop%2Dcolor%3A%23ffffff%7D%2Epopover%2Eright%3E%2Earrow%7Btop%3A50%25%3Bleft%3A%2D11px%3Bmargin%2Dtop%3A%2D11px%3Bborder%2Dleft%2Dwidth%3A0%3Bborder%2Dright%2Dcolor%3A%23999999%3Bborder%2Dright%2Dcolor%3Argba%280%2C0%2C0%2C0%2E25%29%7D%2Epopover%2Eright%3E%2Earrow%3Aafter%7Bcontent%3A%22%20%22%3Bleft%3A1px%3Bbottom%3A%2D10px%3Bborder%2Dleft%2Dwidth%3A0%3Bborder%2Dright%2Dcolor%3A%23ffffff%7D%2Epopover%2Ebottom%3E%2Earrow%7Bleft%3A50%25%3Bmargin%2Dleft%3A%2D11px%3Bborder%2Dtop%2Dwidth%3A0%3Bborder%2Dbottom%2Dcolor%3A%23999999%3Bborder%2Dbottom%2Dcolor%3Argba%280%2C0%2C0%2C0%2E25%29%3Btop%3A%2D11px%7D%2Epopover%2Ebottom%3E%2Earrow%3Aafter%7Bcontent%3A%22%20%22%3Btop%3A1px%3Bmargin%2Dleft%3A%2D10px%3Bborder%2Dtop%2Dwidth%3A0%3Bborder%2Dbottom%2Dcolor%3A%23ffffff%7D%2Epopover%2Eleft%3E%2Earrow%7Btop%3A50%25%3Bright%3A%2D11px%3Bmargin%2Dtop%3A%2D11px%3Bborder%2Dright%2Dwidth%3A0%3Bborder%2Dleft%2Dcolor%3A%23999999%3Bborder%2Dleft%2Dcolor%3Argba%280%2C0%2C0%2C0%2E25%29%7D%2Epopover%2Eleft%3E%2Earrow%3Aafter%7Bcontent%3A%22%20%22%3Bright%3A1px%3Bborder%2Dright%2Dwidth%3A0%3Bborder%2Dleft%2Dcolor%3A%23ffffff%3Bbottom%3A%2D10px%7D%2Ecarousel%7Bposition%3Arelative%7D%2Ecarousel%2Dinner%7Bposition%3Arelative%3Boverflow%3Ahidden%3Bwidth%3A100%25%7D%2Ecarousel%2Dinner%3E%2Eitem%7Bdisplay%3Anone%3Bposition%3Arelative%3B%2Dwebkit%2Dtransition%3A%2E6s%20ease%2Din%2Dout%20left%3B%2Do%2Dtransition%3A%2E6s%20ease%2Din%2Dout%20left%3Btransition%3A%2E6s%20ease%2Din%2Dout%20left%7D%2Ecarousel%2Dinner%3E%2Eitem%3Eimg%2C%2Ecarousel%2Dinner%3E%2Eitem%3Ea%3Eimg%7Bline%2Dheight%3A1%7D%40media%20all%20and%20%28transform%2D3d%29%2C%28%2Dwebkit%2Dtransform%2D3d%29%7B%2Ecarousel%2Dinner%3E%2Eitem%7B%2Dwebkit%2Dtransition%3A%2Dwebkit%2Dtransform%20%2E6s%20ease%2Din%2Dout%3B%2Do%2Dtransition%3A%2Do%2Dtransform%20%2E6s%20ease%2Din%2Dout%3Btransition%3Atransform%20%2E6s%20ease%2Din%2Dout%3B%2Dwebkit%2Dbackface%2Dvisibility%3Ahidden%3Bbackface%2Dvisibility%3Ahidden%3B%2Dwebkit%2Dperspective%3A1000px%3Bperspective%3A1000px%7D%2Ecarousel%2Dinner%3E%2Eitem%2Enext%2C%2Ecarousel%2Dinner%3E%2Eitem%2Eactive%2Eright%7B%2Dwebkit%2Dtransform%3Atranslate3d%28100%25%2C%200%2C%200%29%3Btransform%3Atranslate3d%28100%25%2C%200%2C%200%29%3Bleft%3A0%7D%2Ecarousel%2Dinner%3E%2Eitem%2Eprev%2C%2Ecarousel%2Dinner%3E%2Eitem%2Eactive%2Eleft%7B%2Dwebkit%2Dtransform%3Atranslate3d%28%2D100%25%2C%200%2C%200%29%3Btransform%3Atranslate3d%28%2D100%25%2C%200%2C%200%29%3Bleft%3A0%7D%2Ecarousel%2Dinner%3E%2Eitem%2Enext%2Eleft%2C%2Ecarousel%2Dinner%3E%2Eitem%2Eprev%2Eright%2C%2Ecarousel%2Dinner%3E%2Eitem%2Eactive%7B%2Dwebkit%2Dtransform%3Atranslate3d%280%2C%200%2C%200%29%3Btransform%3Atranslate3d%280%2C%200%2C%200%29%3Bleft%3A0%7D%7D%2Ecarousel%2Dinner%3E%2Eactive%2C%2Ecarousel%2Dinner%3E%2Enext%2C%2Ecarousel%2Dinner%3E%2Eprev%7Bdisplay%3Ablock%7D%2Ecarousel%2Dinner%3E%2Eactive%7Bleft%3A0%7D%2Ecarousel%2Dinner%3E%2Enext%2C%2Ecarousel%2Dinner%3E%2Eprev%7Bposition%3Aabsolute%3Btop%3A0%3Bwidth%3A100%25%7D%2Ecarousel%2Dinner%3E%2Enext%7Bleft%3A100%25%7D%2Ecarousel%2Dinner%3E%2Eprev%7Bleft%3A%2D100%25%7D%2Ecarousel%2Dinner%3E%2Enext%2Eleft%2C%2Ecarousel%2Dinner%3E%2Eprev%2Eright%7Bleft%3A0%7D%2Ecarousel%2Dinner%3E%2Eactive%2Eleft%7Bleft%3A%2D100%25%7D%2Ecarousel%2Dinner%3E%2Eactive%2Eright%7Bleft%3A100%25%7D%2Ecarousel%2Dcontrol%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bbottom%3A0%3Bwidth%3A15%25%3Bopacity%3A0%2E5%3Bfilter%3Aalpha%28opacity%3D50%29%3Bfont%2Dsize%3A20px%3Bcolor%3A%23ffffff%3Btext%2Dalign%3Acenter%3Btext%2Dshadow%3A0%201px%202px%20rgba%280%2C0%2C0%2C0%2E6%29%3Bbackground%2Dcolor%3Argba%280%2C0%2C0%2C0%29%7D%2Ecarousel%2Dcontrol%2Eleft%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28left%2C%20rgba%280%2C0%2C0%2C0%2E5%29%200%2C%20rgba%280%2C0%2C0%2C0%2E0001%29%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28left%2C%20rgba%280%2C0%2C0%2C0%2E5%29%200%2C%20rgba%280%2C0%2C0%2C0%2E0001%29%20100%25%29%3Bbackground%2Dimage%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20right%20top%2C%20from%28rgba%280%2C0%2C0%2C0%2E5%29%29%2C%20to%28rgba%280%2C0%2C0%2C0%2E0001%29%29%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20right%2C%20rgba%280%2C0%2C0%2C0%2E5%29%200%2C%20rgba%280%2C0%2C0%2C0%2E0001%29%20100%25%29%3Bbackground%2Drepeat%3Arepeat%2Dx%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28startColorstr%3D%27%2380000000%27%2C%20endColorstr%3D%27%2300000000%27%2C%20GradientType%3D1%29%7D%2Ecarousel%2Dcontrol%2Eright%7Bleft%3Aauto%3Bright%3A0%3Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28left%2C%20rgba%280%2C0%2C0%2C0%2E0001%29%200%2C%20rgba%280%2C0%2C0%2C0%2E5%29%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28left%2C%20rgba%280%2C0%2C0%2C0%2E0001%29%200%2C%20rgba%280%2C0%2C0%2C0%2E5%29%20100%25%29%3Bbackground%2Dimage%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20right%20top%2C%20from%28rgba%280%2C0%2C0%2C0%2E0001%29%29%2C%20to%28rgba%280%2C0%2C0%2C0%2E5%29%29%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20right%2C%20rgba%280%2C0%2C0%2C0%2E0001%29%200%2C%20rgba%280%2C0%2C0%2C0%2E5%29%20100%25%29%3Bbackground%2Drepeat%3Arepeat%2Dx%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28startColorstr%3D%27%2300000000%27%2C%20endColorstr%3D%27%2380000000%27%2C%20GradientType%3D1%29%7D%2Ecarousel%2Dcontrol%3Ahover%2C%2Ecarousel%2Dcontrol%3Afocus%7Boutline%3A0%3Bcolor%3A%23ffffff%3Btext%2Ddecoration%3Anone%3Bopacity%3A0%2E9%3Bfilter%3Aalpha%28opacity%3D90%29%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%2C%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%2C%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%7Bposition%3Aabsolute%3Btop%3A50%25%3Bmargin%2Dtop%3A%2D10px%3Bz%2Dindex%3A5%3Bdisplay%3Ainline%2Dblock%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%2C%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%7Bleft%3A50%25%3Bmargin%2Dleft%3A%2D10px%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%2C%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%7Bright%3A50%25%3Bmargin%2Dright%3A%2D10px%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%7Bwidth%3A20px%3Bheight%3A20px%3Bline%2Dheight%3A1%3Bfont%2Dfamily%3Aserif%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%3Abefore%7Bcontent%3A%27%5C2039%27%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%3Abefore%7Bcontent%3A%27%5C203a%27%7D%2Ecarousel%2Dindicators%7Bposition%3Aabsolute%3Bbottom%3A10px%3Bleft%3A50%25%3Bz%2Dindex%3A15%3Bwidth%3A60%25%3Bmargin%2Dleft%3A%2D30%25%3Bpadding%2Dleft%3A0%3Blist%2Dstyle%3Anone%3Btext%2Dalign%3Acenter%7D%2Ecarousel%2Dindicators%20li%7Bdisplay%3Ainline%2Dblock%3Bwidth%3A10px%3Bheight%3A10px%3Bmargin%3A1px%3Btext%2Dindent%3A%2D999px%3Bborder%3A1px%20solid%20%23ffffff%3Bborder%2Dradius%3A10px%3Bcursor%3Apointer%3Bbackground%2Dcolor%3A%23000%20%5C9%3Bbackground%2Dcolor%3Argba%280%2C0%2C0%2C0%29%7D%2Ecarousel%2Dindicators%20%2Eactive%7Bmargin%3A0%3Bwidth%3A12px%3Bheight%3A12px%3Bbackground%2Dcolor%3A%23ffffff%7D%2Ecarousel%2Dcaption%7Bposition%3Aabsolute%3Bleft%3A15%25%3Bright%3A15%25%3Bbottom%3A20px%3Bz%2Dindex%3A10%3Bpadding%2Dtop%3A20px%3Bpadding%2Dbottom%3A20px%3Bcolor%3A%23ffffff%3Btext%2Dalign%3Acenter%3Btext%2Dshadow%3A0%201px%202px%20rgba%280%2C0%2C0%2C0%2E6%29%7D%2Ecarousel%2Dcaption%20%2Ebtn%7Btext%2Dshadow%3Anone%7D%40media%20screen%20and%20%28min%2Dwidth%3A768px%29%7B%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%2C%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%7Bwidth%3A30px%3Bheight%3A30px%3Bmargin%2Dtop%3A%2D10px%3Bfont%2Dsize%3A30px%7D%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%7Bmargin%2Dleft%3A%2D10px%7D%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%7Bmargin%2Dright%3A%2D10px%7D%2Ecarousel%2Dcaption%7Bleft%3A20%25%3Bright%3A20%25%3Bpadding%2Dbottom%3A30px%7D%2Ecarousel%2Dindicators%7Bbottom%3A20px%7D%7D%2Eclearfix%3Abefore%2C%2Eclearfix%3Aafter%2C%2Edl%2Dhorizontal%20dd%3Abefore%2C%2Edl%2Dhorizontal%20dd%3Aafter%2C%2Econtainer%3Abefore%2C%2Econtainer%3Aafter%2C%2Econtainer%2Dfluid%3Abefore%2C%2Econtainer%2Dfluid%3Aafter%2C%2Erow%3Abefore%2C%2Erow%3Aafter%2C%2Eform%2Dhorizontal%20%2Eform%2Dgroup%3Abefore%2C%2Eform%2Dhorizontal%20%2Eform%2Dgroup%3Aafter%2C%2Ebtn%2Dtoolbar%3Abefore%2C%2Ebtn%2Dtoolbar%3Aafter%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Abefore%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Aafter%2C%2Enav%3Abefore%2C%2Enav%3Aafter%2C%2Enavbar%3Abefore%2C%2Enavbar%3Aafter%2C%2Enavbar%2Dheader%3Abefore%2C%2Enavbar%2Dheader%3Aafter%2C%2Enavbar%2Dcollapse%3Abefore%2C%2Enavbar%2Dcollapse%3Aafter%2C%2Epager%3Abefore%2C%2Epager%3Aafter%2C%2Epanel%2Dbody%3Abefore%2C%2Epanel%2Dbody%3Aafter%2C%2Emodal%2Dheader%3Abefore%2C%2Emodal%2Dheader%3Aafter%2C%2Emodal%2Dfooter%3Abefore%2C%2Emodal%2Dfooter%3Aafter%7Bcontent%3A%22%20%22%3Bdisplay%3Atable%7D%2Eclearfix%3Aafter%2C%2Edl%2Dhorizontal%20dd%3Aafter%2C%2Econtainer%3Aafter%2C%2Econtainer%2Dfluid%3Aafter%2C%2Erow%3Aafter%2C%2Eform%2Dhorizontal%20%2Eform%2Dgroup%3Aafter%2C%2Ebtn%2Dtoolbar%3Aafter%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Aafter%2C%2Enav%3Aafter%2C%2Enavbar%3Aafter%2C%2Enavbar%2Dheader%3Aafter%2C%2Enavbar%2Dcollapse%3Aafter%2C%2Epager%3Aafter%2C%2Epanel%2Dbody%3Aafter%2C%2Emodal%2Dheader%3Aafter%2C%2Emodal%2Dfooter%3Aafter%7Bclear%3Aboth%7D%2Ecenter%2Dblock%7Bdisplay%3Ablock%3Bmargin%2Dleft%3Aauto%3Bmargin%2Dright%3Aauto%7D%2Epull%2Dright%7Bfloat%3Aright%20%21important%7D%2Epull%2Dleft%7Bfloat%3Aleft%20%21important%7D%2Ehide%7Bdisplay%3Anone%20%21important%7D%2Eshow%7Bdisplay%3Ablock%20%21important%7D%2Einvisible%7Bvisibility%3Ahidden%7D%2Etext%2Dhide%7Bfont%3A0%2F0%20a%3Bcolor%3Atransparent%3Btext%2Dshadow%3Anone%3Bbackground%2Dcolor%3Atransparent%3Bborder%3A0%7D%2Ehidden%7Bdisplay%3Anone%20%21important%7D%2Eaffix%7Bposition%3Afixed%7D%40%2Dms%2Dviewport%7Bwidth%3Adevice%2Dwidth%7D%2Evisible%2Dxs%2C%2Evisible%2Dsm%2C%2Evisible%2Dmd%2C%2Evisible%2Dlg%7Bdisplay%3Anone%20%21important%7D%2Evisible%2Dxs%2Dblock%2C%2Evisible%2Dxs%2Dinline%2C%2Evisible%2Dxs%2Dinline%2Dblock%2C%2Evisible%2Dsm%2Dblock%2C%2Evisible%2Dsm%2Dinline%2C%2Evisible%2Dsm%2Dinline%2Dblock%2C%2Evisible%2Dmd%2Dblock%2C%2Evisible%2Dmd%2Dinline%2C%2Evisible%2Dmd%2Dinline%2Dblock%2C%2Evisible%2Dlg%2Dblock%2C%2Evisible%2Dlg%2Dinline%2C%2Evisible%2Dlg%2Dinline%2Dblock%7Bdisplay%3Anone%20%21important%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%7Bdisplay%3Ablock%20%21important%7Dtable%2Evisible%2Dxs%7Bdisplay%3Atable%20%21important%7Dtr%2Evisible%2Dxs%7Bdisplay%3Atable%2Drow%20%21important%7Dth%2Evisible%2Dxs%2Ctd%2Evisible%2Dxs%7Bdisplay%3Atable%2Dcell%20%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%2Dblock%7Bdisplay%3Ablock%20%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%2Dinline%7Bdisplay%3Ainline%20%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%20%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%7Bdisplay%3Ablock%20%21important%7Dtable%2Evisible%2Dsm%7Bdisplay%3Atable%20%21important%7Dtr%2Evisible%2Dsm%7Bdisplay%3Atable%2Drow%20%21important%7Dth%2Evisible%2Dsm%2Ctd%2Evisible%2Dsm%7Bdisplay%3Atable%2Dcell%20%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%2Dblock%7Bdisplay%3Ablock%20%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%2Dinline%7Bdisplay%3Ainline%20%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%20%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%7Bdisplay%3Ablock%20%21important%7Dtable%2Evisible%2Dmd%7Bdisplay%3Atable%20%21important%7Dtr%2Evisible%2Dmd%7Bdisplay%3Atable%2Drow%20%21important%7Dth%2Evisible%2Dmd%2Ctd%2Evisible%2Dmd%7Bdisplay%3Atable%2Dcell%20%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%2Dblock%7Bdisplay%3Ablock%20%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%2Dinline%7Bdisplay%3Ainline%20%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%20%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%7Bdisplay%3Ablock%20%21important%7Dtable%2Evisible%2Dlg%7Bdisplay%3Atable%20%21important%7Dtr%2Evisible%2Dlg%7Bdisplay%3Atable%2Drow%20%21important%7Dth%2Evisible%2Dlg%2Ctd%2Evisible%2Dlg%7Bdisplay%3Atable%2Dcell%20%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%2Dblock%7Bdisplay%3Ablock%20%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%2Dinline%7Bdisplay%3Ainline%20%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%20%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Ehidden%2Dxs%7Bdisplay%3Anone%20%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Ehidden%2Dsm%7Bdisplay%3Anone%20%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Ehidden%2Dmd%7Bdisplay%3Anone%20%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Ehidden%2Dlg%7Bdisplay%3Anone%20%21important%7D%7D%2Evisible%2Dprint%7Bdisplay%3Anone%20%21important%7D%40media%20print%7B%2Evisible%2Dprint%7Bdisplay%3Ablock%20%21important%7Dtable%2Evisible%2Dprint%7Bdisplay%3Atable%20%21important%7Dtr%2Evisible%2Dprint%7Bdisplay%3Atable%2Drow%20%21important%7Dth%2Evisible%2Dprint%2Ctd%2Evisible%2Dprint%7Bdisplay%3Atable%2Dcell%20%21important%7D%7D%2Evisible%2Dprint%2Dblock%7Bdisplay%3Anone%20%21important%7D%40media%20print%7B%2Evisible%2Dprint%2Dblock%7Bdisplay%3Ablock%20%21important%7D%7D%2Evisible%2Dprint%2Dinline%7Bdisplay%3Anone%20%21important%7D%40media%20print%7B%2Evisible%2Dprint%2Dinline%7Bdisplay%3Ainline%20%21important%7D%7D%2Evisible%2Dprint%2Dinline%2Dblock%7Bdisplay%3Anone%20%21important%7D%40media%20print%7B%2Evisible%2Dprint%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%20%21important%7D%7D%40media%20print%7B%2Ehidden%2Dprint%7Bdisplay%3Anone%20%21important%7D%7D%2Enavbar%7Bborder%2Dwidth%3A0%201px%204px%201px%7D%2Ebtn%7Bpadding%3A9px%2012px%207px%3Bborder%2Dwidth%3A0%201px%204px%201px%3Bfont%2Dsize%3A12px%3Bfont%2Dweight%3Abold%3Btext%2Dtransform%3Auppercase%7D%2Ebtn%3Ahover%7Bmargin%2Dtop%3A1px%3Bborder%2Dbottom%2Dwidth%3A3px%7D%2Ebtn%3Aactive%7Bmargin%2Dtop%3A2px%3Bborder%2Dbottom%2Dwidth%3A2px%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Ebtn%2Dlg%2C%2Ebtn%2Dgroup%2Dlg%3E%2Ebtn%7Bpadding%3A15px%2016px%2013px%3Bline%2Dheight%3A15px%7D%2Ebtn%2Dsm%2C%2Ebtn%2Dgroup%2Dsm%3E%2Ebtn%7Bpadding%3A6px%2010px%204px%7D%2Ebtn%2Dxs%2C%2Ebtn%2Dgroup%2Dxs%3E%2Ebtn%7Bpadding%3A3px%205px%201px%7D%2Ebtn%2Ddefault%3Ahover%2C%2Ebtn%2Ddefault%3Afocus%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%7Bbackground%2Dcolor%3A%23eeeeee%3Bborder%2Dcolor%3A%23e2e2e2%7D%2Ebtn%2Dprimary%3Ahover%2C%2Ebtn%2Dprimary%3Afocus%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%7Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dcolor%3A%23127ba3%7D%2Ebtn%2Dsuccess%3Ahover%2C%2Ebtn%2Dsuccess%3Afocus%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%7Bbackground%2Dcolor%3A%2328b62c%3Bborder%2Dcolor%3A%2323a127%7D%2Ebtn%2Dinfo%3Ahover%2C%2Ebtn%2Dinfo%3Afocus%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%7Bbackground%2Dcolor%3A%2375caeb%3Bborder%2Dcolor%3A%235fc1e8%7D%2Ebtn%2Dwarning%3Ahover%2C%2Ebtn%2Dwarning%3Afocus%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%7Bbackground%2Dcolor%3A%23ff851b%3Bborder%2Dcolor%3A%23ff7701%7D%2Ebtn%2Ddanger%3Ahover%2C%2Ebtn%2Ddanger%3Afocus%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%7Bbackground%2Dcolor%3A%23ff4136%3Bborder%2Dcolor%3A%23ff291c%7D%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%7B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Enavbar%2Dbtn%3Ahover%7Bmargin%2Dtop%3A8px%7D%2Enavbar%2Dbtn%3Aactive%7Bmargin%2Dtop%3A9px%7D%2Enavbar%2Dbtn%2Ebtn%2Dsm%3Ahover%7Bmargin%2Dtop%3A11px%7D%2Enavbar%2Dbtn%2Ebtn%2Dsm%3Aactive%7Bmargin%2Dtop%3A12px%7D%2Enavbar%2Dbtn%2Ebtn%2Dxs%3Ahover%7Bmargin%2Dtop%3A15px%7D%2Enavbar%2Dbtn%2Ebtn%2Dxs%3Aactive%7Bmargin%2Dtop%3A16px%7D%2Ebtn%2Dgroup%2Dvertical%20%2Ebtn%2B%2Ebtn%3Ahover%7Bborder%2Dtop%2Dwidth%3A1px%7D%2Ebtn%2Dgroup%2Dvertical%20%2Ebtn%2B%2Ebtn%3Aactive%7Bborder%2Dtop%2Dwidth%3A2px%7D%2Etext%2Dprimary%2C%2Etext%2Dprimary%3Ahover%7Bcolor%3A%23158cba%7D%2Etext%2Dsuccess%2C%2Etext%2Dsuccess%3Ahover%7Bcolor%3A%2328b62c%7D%2Etext%2Ddanger%2C%2Etext%2Ddanger%3Ahover%7Bcolor%3A%23ff4136%7D%2Etext%2Dwarning%2C%2Etext%2Dwarning%3Ahover%7Bcolor%3A%23ff851b%7D%2Etext%2Dinfo%2C%2Etext%2Dinfo%3Ahover%7Bcolor%3A%2375caeb%7Dtable%20a%3Anot%28%2Ebtn%29%2C%2Etable%20a%3Anot%28%2Ebtn%29%7Btext%2Ddecoration%3Aunderline%7Dtable%20%2Edropdown%2Dmenu%20a%2C%2Etable%20%2Edropdown%2Dmenu%20a%7Btext%2Ddecoration%3Anone%7Dtable%20%2Esuccess%2C%2Etable%20%2Esuccess%2Ctable%20%2Ewarning%2C%2Etable%20%2Ewarning%2Ctable%20%2Edanger%2C%2Etable%20%2Edanger%2Ctable%20%2Einfo%2C%2Etable%20%2Einfo%7Bcolor%3A%23fff%7Dtable%20%2Esuccess%20a%3Anot%28%2Ebtn%29%2C%2Etable%20%2Esuccess%20a%3Anot%28%2Ebtn%29%2Ctable%20%2Ewarning%20a%3Anot%28%2Ebtn%29%2C%2Etable%20%2Ewarning%20a%3Anot%28%2Ebtn%29%2Ctable%20%2Edanger%20a%3Anot%28%2Ebtn%29%2C%2Etable%20%2Edanger%20a%3Anot%28%2Ebtn%29%2Ctable%20%2Einfo%20a%3Anot%28%2Ebtn%29%2C%2Etable%20%2Einfo%20a%3Anot%28%2Ebtn%29%7Bcolor%3A%23fff%7Dtable%3Anot%28%2Etable%2Dbordered%29%3Ethead%3Etr%3Eth%2C%2Etable%3Anot%28%2Etable%2Dbordered%29%3Ethead%3Etr%3Eth%2Ctable%3Anot%28%2Etable%2Dbordered%29%3Etbody%3Etr%3Eth%2C%2Etable%3Anot%28%2Etable%2Dbordered%29%3Etbody%3Etr%3Eth%2Ctable%3Anot%28%2Etable%2Dbordered%29%3Etfoot%3Etr%3Eth%2C%2Etable%3Anot%28%2Etable%2Dbordered%29%3Etfoot%3Etr%3Eth%2Ctable%3Anot%28%2Etable%2Dbordered%29%3Ethead%3Etr%3Etd%2C%2Etable%3Anot%28%2Etable%2Dbordered%29%3Ethead%3Etr%3Etd%2Ctable%3Anot%28%2Etable%2Dbordered%29%3Etbody%3Etr%3Etd%2C%2Etable%3Anot%28%2Etable%2Dbordered%29%3Etbody%3Etr%3Etd%2Ctable%3Anot%28%2Etable%2Dbordered%29%3Etfoot%3Etr%3Etd%2C%2Etable%3Anot%28%2Etable%2Dbordered%29%3Etfoot%3Etr%3Etd%7Bborder%2Dcolor%3Atransparent%7D%2Eform%2Dcontrol%7B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%7Dlabel%7Bfont%2Dweight%3Anormal%7D%2Ehas%2Dwarning%20%2Ehelp%2Dblock%2C%2Ehas%2Dwarning%20%2Econtrol%2Dlabel%2C%2Ehas%2Dwarning%20%2Eradio%2C%2Ehas%2Dwarning%20%2Echeckbox%2C%2Ehas%2Dwarning%20%2Eradio%2Dinline%2C%2Ehas%2Dwarning%20%2Echeckbox%2Dinline%2C%2Ehas%2Dwarning%2Eradio%20label%2C%2Ehas%2Dwarning%2Echeckbox%20label%2C%2Ehas%2Dwarning%2Eradio%2Dinline%20label%2C%2Ehas%2Dwarning%2Echeckbox%2Dinline%20label%2C%2Ehas%2Dwarning%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%23ff851b%7D%2Ehas%2Dwarning%20%2Eform%2Dcontrol%2C%2Ehas%2Dwarning%20%2Eform%2Dcontrol%3Afocus%7Bborder%3A1px%20solid%20%23ff851b%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%7D%2Ehas%2Dwarning%20%2Einput%2Dgroup%2Daddon%7Bborder%3A1px%20solid%20%23ff851b%7D%2Ehas%2Derror%20%2Ehelp%2Dblock%2C%2Ehas%2Derror%20%2Econtrol%2Dlabel%2C%2Ehas%2Derror%20%2Eradio%2C%2Ehas%2Derror%20%2Echeckbox%2C%2Ehas%2Derror%20%2Eradio%2Dinline%2C%2Ehas%2Derror%20%2Echeckbox%2Dinline%2C%2Ehas%2Derror%2Eradio%20label%2C%2Ehas%2Derror%2Echeckbox%20label%2C%2Ehas%2Derror%2Eradio%2Dinline%20label%2C%2Ehas%2Derror%2Echeckbox%2Dinline%20label%2C%2Ehas%2Derror%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%23ff4136%7D%2Ehas%2Derror%20%2Eform%2Dcontrol%2C%2Ehas%2Derror%20%2Eform%2Dcontrol%3Afocus%7Bborder%3A1px%20solid%20%23ff4136%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%7D%2Ehas%2Derror%20%2Einput%2Dgroup%2Daddon%7Bborder%3A1px%20solid%20%23ff4136%7D%2Ehas%2Dsuccess%20%2Ehelp%2Dblock%2C%2Ehas%2Dsuccess%20%2Econtrol%2Dlabel%2C%2Ehas%2Dsuccess%20%2Eradio%2C%2Ehas%2Dsuccess%20%2Echeckbox%2C%2Ehas%2Dsuccess%20%2Eradio%2Dinline%2C%2Ehas%2Dsuccess%20%2Echeckbox%2Dinline%2C%2Ehas%2Dsuccess%2Eradio%20label%2C%2Ehas%2Dsuccess%2Echeckbox%20label%2C%2Ehas%2Dsuccess%2Eradio%2Dinline%20label%2C%2Ehas%2Dsuccess%2Echeckbox%2Dinline%20label%2C%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%2328b62c%7D%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%2C%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%3Afocus%7Bborder%3A1px%20solid%20%2328b62c%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%7D%2Ehas%2Dsuccess%20%2Einput%2Dgroup%2Daddon%7Bborder%3A1px%20solid%20%2328b62c%7D%2Enav%20%2Eopen%3Ea%2C%2Enav%20%2Eopen%3Ea%3Ahover%2C%2Enav%20%2Eopen%3Ea%3Afocus%7Bborder%2Dcolor%3Atransparent%7D%2Enav%2Dtabs%3Eli%3Ea%7Bmargin%2Dtop%3A6px%3Bborder%2Dcolor%3A%23e7e7e7%3Bcolor%3A%23333333%3B%2Dwebkit%2Dtransition%3Aall%20%2E2s%20ease%2Din%2Dout%3B%2Do%2Dtransition%3Aall%20%2E2s%20ease%2Din%2Dout%3Btransition%3Aall%20%2E2s%20ease%2Din%2Dout%7D%2Enav%2Dtabs%3Eli%3Ea%3Ahover%2C%2Enav%2Dtabs%3Eli%3Ea%3Afocus%2C%2Enav%2Dtabs%3Eli%2Eactive%3Ea%2C%2Enav%2Dtabs%3Eli%2Eactive%3Ea%3Ahover%2C%2Enav%2Dtabs%3Eli%2Eactive%3Ea%3Afocus%2C%2Enav%2Dtabs%20%2Eopen%3Ea%2C%2Enav%2Dtabs%20%2Eopen%3Ea%3Ahover%2C%2Enav%2Dtabs%20%2Eopen%3Ea%3Afocus%7Bpadding%2Dbottom%3A16px%3Bmargin%2Dtop%3A0%7D%2Enav%2Dtabs%20%2Eopen%3Ea%2C%2Enav%2Dtabs%20%2Eopen%3Ea%3Ahover%2C%2Enav%2Dtabs%20%2Eopen%3Ea%3Afocus%7Bborder%2Dcolor%3A%23e7e7e7%7D%2Enav%2Dtabs%3Eli%2Edisabled%3Ea%3Ahover%2C%2Enav%2Dtabs%3Eli%2Edisabled%3Ea%3Afocus%7Bpadding%2Dtop%3A10px%3Bpadding%2Dbottom%3A10px%3Bmargin%2Dtop%3A6px%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%7Bvertical%2Dalign%3Abottom%7D%2Edropdown%2Dmenu%7Bmargin%2Dtop%3A0%3Bborder%2Dwidth%3A0%201px%204px%201px%3Bborder%2Dtop%2Dwidth%3A1px%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Ebreadcrumb%7Bborder%2Dcolor%3A%23ededed%3Bborder%2Dstyle%3Asolid%3Bborder%2Dwidth%3A0%201px%204px%201px%7D%2Epagination%3Eli%3Ea%2C%2Epager%3Eli%3Ea%2C%2Epagination%3Eli%3Espan%2C%2Epager%3Eli%3Espan%7Bposition%3Arelative%3Btop%3A0%3Bborder%2Dwidth%3A0%201px%204px%201px%3Bcolor%3A%23555555%3Bfont%2Dsize%3A12px%3Bfont%2Dweight%3Abold%3Btext%2Dtransform%3Auppercase%7D%2Epagination%3Eli%3Ea%3Ahover%2C%2Epager%3Eli%3Ea%3Ahover%2C%2Epagination%3Eli%3Espan%3Ahover%2C%2Epager%3Eli%3Espan%3Ahover%7Btop%3A1px%3Bborder%2Dbottom%2Dwidth%3A3px%7D%2Epagination%3Eli%3Ea%3Aactive%2C%2Epager%3Eli%3Ea%3Aactive%2C%2Epagination%3Eli%3Espan%3Aactive%2C%2Epager%3Eli%3Espan%3Aactive%7Btop%3A2px%3Bborder%2Dbottom%2Dwidth%3A2px%7D%2Epagination%3E%2Edisabled%3Ea%3Ahover%2C%2Epager%3E%2Edisabled%3Ea%3Ahover%2C%2Epagination%3E%2Edisabled%3Espan%3Ahover%2C%2Epager%3E%2Edisabled%3Espan%3Ahover%7Btop%3A0%3Bborder%2Dwidth%3A0%201px%204px%201px%7D%2Epagination%3E%2Edisabled%3Ea%3Aactive%2C%2Epager%3E%2Edisabled%3Ea%3Aactive%2C%2Epagination%3E%2Edisabled%3Espan%3Aactive%2C%2Epager%3E%2Edisabled%3Espan%3Aactive%7Btop%3A0%3Bborder%2Dwidth%3A0%201px%204px%201px%7D%2Epager%3Eli%3Ea%2C%2Epager%3Eli%3Espan%2C%2Epager%3E%2Edisabled%3Ea%2C%2Epager%3E%2Edisabled%3Espan%2C%2Epager%3Eli%3Ea%3Ahover%2C%2Epager%3Eli%3Espan%3Ahover%2C%2Epager%3E%2Edisabled%3Ea%3Ahover%2C%2Epager%3E%2Edisabled%3Espan%3Ahover%2C%2Epager%3Eli%3Ea%3Aactive%2C%2Epager%3Eli%3Espan%3Aactive%2C%2Epager%3E%2Edisabled%3Ea%3Aactive%2C%2Epager%3E%2Edisabled%3Espan%3Aactive%7Bborder%2Dleft%2Dwidth%3A2px%3Bborder%2Dright%2Dwidth%3A2px%7D%2Eclose%7Bcolor%3A%23fff%3Btext%2Ddecoration%3Anone%3Bopacity%3A0%2E4%7D%2Eclose%3Ahover%2C%2Eclose%3Afocus%7Bcolor%3A%23fff%3Bopacity%3A1%7D%2Ealert%7Bborder%2Dwidth%3A0%201px%204px%201px%7D%2Ealert%20%2Ealert%2Dlink%7Bfont%2Dweight%3Anormal%3Bcolor%3A%23fff%3Btext%2Ddecoration%3Aunderline%7D%2Elabel%7Bfont%2Dweight%3Anormal%7D%2Eprogress%7Bborder%3A1px%20solid%20%23e7e7e7%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E1%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E1%29%7D%2Eprogress%2Dbar%7B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%20%2D4px%200%20rgba%280%2C0%2C0%2C0%2E15%29%3Bbox%2Dshadow%3Ainset%200%20%2D4px%200%20rgba%280%2C0%2C0%2C0%2E15%29%7D%2Ewell%7Bborder%3A1px%20solid%20%23e7e7e7%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E05%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E05%29%7Da%2Elist%2Dgroup%2Ditem%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%7Bborder%2Dcolor%3A%23eeeeee%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%7Bbackground%2Dcolor%3A%2328b62c%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Afocus%7Bbackground%2Dcolor%3A%2323a127%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%7Bbackground%2Dcolor%3A%23ff851b%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Afocus%7Bbackground%2Dcolor%3A%23ff7701%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%7Bbackground%2Dcolor%3A%23ff4136%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Afocus%7Bbackground%2Dcolor%3A%23ff291c%7D%2Ejumbotron%7Bborder%3A1px%20solid%20%23e7e7e7%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E05%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E05%29%7D%2Epanel%7Bborder%3A1px%20solid%20%23e7e7e7%3Bborder%2Dwidth%3A0%201px%204px%201px%7D%2Epanel%2Ddefault%20%2Eclose%7Bcolor%3A%23555555%7D%2Emodal%20%2Eclose%7Bcolor%3A%23555555%7D%2Epopover%7Bcolor%3A%23555555%7D%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,LyohCiAqIEJvb3RzdHJhcCB2My4zLjUgKGh0dHA6Ly9nZXRib290c3RyYXAuY29tKQogKiBDb3B5cmlnaHQgMjAxMS0yMDE1IFR3aXR0ZXIsIEluYy4KICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlCiAqLwppZigidW5kZWZpbmVkIj09dHlwZW9mIGpRdWVyeSl0aHJvdyBuZXcgRXJyb3IoIkJvb3RzdHJhcCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgalF1ZXJ5Iik7K2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1hLmZuLmpxdWVyeS5zcGxpdCgiICIpWzBdLnNwbGl0KCIuIik7aWYoYlswXTwyJiZiWzFdPDl8fDE9PWJbMF0mJjk9PWJbMV0mJmJbMl08MSl0aHJvdyBuZXcgRXJyb3IoIkJvb3RzdHJhcCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgalF1ZXJ5IHZlcnNpb24gMS45LjEgb3IgaGlnaGVyIil9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYm9vdHN0cmFwIiksYj17V2Via2l0VHJhbnNpdGlvbjoid2Via2l0VHJhbnNpdGlvbkVuZCIsTW96VHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCIsT1RyYW5zaXRpb246Im9UcmFuc2l0aW9uRW5kIG90cmFuc2l0aW9uZW5kIix0cmFuc2l0aW9uOiJ0cmFuc2l0aW9uZW5kIn07Zm9yKHZhciBjIGluIGIpaWYodm9pZCAwIT09YS5zdHlsZVtjXSlyZXR1cm57ZW5kOmJbY119O3JldHVybiExfWEuZm4uZW11bGF0ZVRyYW5zaXRpb25FbmQ9ZnVuY3Rpb24oYil7dmFyIGM9ITEsZD10aGlzO2EodGhpcykub25lKCJic1RyYW5zaXRpb25FbmQiLGZ1bmN0aW9uKCl7Yz0hMH0pO3ZhciBlPWZ1bmN0aW9uKCl7Y3x8YShkKS50cmlnZ2VyKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCl9O3JldHVybiBzZXRUaW1lb3V0KGUsYiksdGhpc30sYShmdW5jdGlvbigpe2Euc3VwcG9ydC50cmFuc2l0aW9uPWIoKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmKGEuZXZlbnQuc3BlY2lhbC5ic1RyYW5zaXRpb25FbmQ9e2JpbmRUeXBlOmEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxkZWxlZ2F0ZVR5cGU6YS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLGhhbmRsZTpmdW5jdGlvbihiKXtyZXR1cm4gYShiLnRhcmdldCkuaXModGhpcyk/Yi5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLGU9Yy5kYXRhKCJicy5hbGVydCIpO2V8fGMuZGF0YSgiYnMuYWxlcnQiLGU9bmV3IGQodGhpcykpLCJzdHJpbmciPT10eXBlb2YgYiYmZVtiXS5jYWxsKGMpfSl9dmFyIGM9J1tkYXRhLWRpc21pc3M9ImFsZXJ0Il0nLGQ9ZnVuY3Rpb24oYil7YShiKS5vbigiY2xpY2siLGMsdGhpcy5jbG9zZSl9O2QuVkVSU0lPTj0iMy4zLjUiLGQuVFJBTlNJVElPTl9EVVJBVElPTj0xNTAsZC5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gYygpe2cuZGV0YWNoKCkudHJpZ2dlcigiY2xvc2VkLmJzLmFsZXJ0IikucmVtb3ZlKCl9dmFyIGU9YSh0aGlzKSxmPWUuYXR0cigiZGF0YS10YXJnZXQiKTtmfHwoZj1lLmF0dHIoImhyZWYiKSxmPWYmJmYucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSk7dmFyIGc9YShmKTtiJiZiLnByZXZlbnREZWZhdWx0KCksZy5sZW5ndGh8fChnPWUuY2xvc2VzdCgiLmFsZXJ0IikpLGcudHJpZ2dlcihiPWEuRXZlbnQoImNsb3NlLmJzLmFsZXJ0IikpLGIuaXNEZWZhdWx0UHJldmVudGVkKCl8fChnLnJlbW92ZUNsYXNzKCJpbiIpLGEuc3VwcG9ydC50cmFuc2l0aW9uJiZnLmhhc0NsYXNzKCJmYWRlIik/Zy5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYykuZW11bGF0ZVRyYW5zaXRpb25FbmQoZC5UUkFOU0lUSU9OX0RVUkFUSU9OKTpjKCkpfTt2YXIgZT1hLmZuLmFsZXJ0O2EuZm4uYWxlcnQ9YixhLmZuLmFsZXJ0LkNvbnN0cnVjdG9yPWQsYS5mbi5hbGVydC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYWxlcnQ9ZSx0aGlzfSxhKGRvY3VtZW50KS5vbigiY2xpY2suYnMuYWxlcnQuZGF0YS1hcGkiLGMsZC5wcm90b3R5cGUuY2xvc2UpfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMuYnV0dG9uIiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7ZXx8ZC5kYXRhKCJicy5idXR0b24iLGU9bmV3IGModGhpcyxmKSksInRvZ2dsZSI9PWI/ZS50b2dnbGUoKTpiJiZlLnNldFN0YXRlKGIpfSl9dmFyIGM9ZnVuY3Rpb24oYixkKXt0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZCksdGhpcy5pc0xvYWRpbmc9ITF9O2MuVkVSU0lPTj0iMy4zLjUiLGMuREVGQVVMVFM9e2xvYWRpbmdUZXh0OiJsb2FkaW5nLi4uIn0sYy5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oYil7dmFyIGM9ImRpc2FibGVkIixkPXRoaXMuJGVsZW1lbnQsZT1kLmlzKCJpbnB1dCIpPyJ2YWwiOiJodG1sIixmPWQuZGF0YSgpO2IrPSJUZXh0IixudWxsPT1mLnJlc2V0VGV4dCYmZC5kYXRhKCJyZXNldFRleHQiLGRbZV0oKSksc2V0VGltZW91dChhLnByb3h5KGZ1bmN0aW9uKCl7ZFtlXShudWxsPT1mW2JdP3RoaXMub3B0aW9uc1tiXTpmW2JdKSwibG9hZGluZ1RleHQiPT1iPyh0aGlzLmlzTG9hZGluZz0hMCxkLmFkZENsYXNzKGMpLmF0dHIoYyxjKSk6dGhpcy5pc0xvYWRpbmcmJih0aGlzLmlzTG9hZGluZz0hMSxkLnJlbW92ZUNsYXNzKGMpLnJlbW92ZUF0dHIoYykpfSx0aGlzKSwwKX0sYy5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKCl7dmFyIGE9ITAsYj10aGlzLiRlbGVtZW50LmNsb3Nlc3QoJ1tkYXRhLXRvZ2dsZT0iYnV0dG9ucyJdJyk7aWYoYi5sZW5ndGgpe3ZhciBjPXRoaXMuJGVsZW1lbnQuZmluZCgiaW5wdXQiKTsicmFkaW8iPT1jLnByb3AoInR5cGUiKT8oYy5wcm9wKCJjaGVja2VkIikmJihhPSExKSxiLmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIiksdGhpcy4kZWxlbWVudC5hZGRDbGFzcygiYWN0aXZlIikpOiJjaGVja2JveCI9PWMucHJvcCgidHlwZSIpJiYoYy5wcm9wKCJjaGVja2VkIikhPT10aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJhY3RpdmUiKSYmKGE9ITEpLHRoaXMuJGVsZW1lbnQudG9nZ2xlQ2xhc3MoImFjdGl2ZSIpKSxjLnByb3AoImNoZWNrZWQiLHRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImFjdGl2ZSIpKSxhJiZjLnRyaWdnZXIoImNoYW5nZSIpfWVsc2UgdGhpcy4kZWxlbWVudC5hdHRyKCJhcmlhLXByZXNzZWQiLCF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJhY3RpdmUiKSksdGhpcy4kZWxlbWVudC50b2dnbGVDbGFzcygiYWN0aXZlIil9O3ZhciBkPWEuZm4uYnV0dG9uO2EuZm4uYnV0dG9uPWIsYS5mbi5idXR0b24uQ29uc3RydWN0b3I9YyxhLmZuLmJ1dHRvbi5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYnV0dG9uPWQsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmJ1dHRvbi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZV49ImJ1dHRvbiJdJyxmdW5jdGlvbihjKXt2YXIgZD1hKGMudGFyZ2V0KTtkLmhhc0NsYXNzKCJidG4iKXx8KGQ9ZC5jbG9zZXN0KCIuYnRuIikpLGIuY2FsbChkLCJ0b2dnbGUiKSxhKGMudGFyZ2V0KS5pcygnaW5wdXRbdHlwZT0icmFkaW8iXScpfHxhKGMudGFyZ2V0KS5pcygnaW5wdXRbdHlwZT0iY2hlY2tib3giXScpfHxjLnByZXZlbnREZWZhdWx0KCl9KS5vbigiZm9jdXMuYnMuYnV0dG9uLmRhdGEtYXBpIGJsdXIuYnMuYnV0dG9uLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlXj0iYnV0dG9uIl0nLGZ1bmN0aW9uKGIpe2EoYi50YXJnZXQpLmNsb3Nlc3QoIi5idG4iKS50b2dnbGVDbGFzcygiZm9jdXMiLC9eZm9jdXMoaW4pPyQvLnRlc3QoYi50eXBlKSl9KX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmNhcm91c2VsIiksZj1hLmV4dGVuZCh7fSxjLkRFRkFVTFRTLGQuZGF0YSgpLCJvYmplY3QiPT10eXBlb2YgYiYmYiksZz0ic3RyaW5nIj09dHlwZW9mIGI/YjpmLnNsaWRlO2V8fGQuZGF0YSgiYnMuY2Fyb3VzZWwiLGU9bmV3IGModGhpcyxmKSksIm51bWJlciI9PXR5cGVvZiBiP2UudG8oYik6Zz9lW2ddKCk6Zi5pbnRlcnZhbCYmZS5wYXVzZSgpLmN5Y2xlKCl9KX12YXIgYz1mdW5jdGlvbihiLGMpe3RoaXMuJGVsZW1lbnQ9YShiKSx0aGlzLiRpbmRpY2F0b3JzPXRoaXMuJGVsZW1lbnQuZmluZCgiLmNhcm91c2VsLWluZGljYXRvcnMiKSx0aGlzLm9wdGlvbnM9Yyx0aGlzLnBhdXNlZD1udWxsLHRoaXMuc2xpZGluZz1udWxsLHRoaXMuaW50ZXJ2YWw9bnVsbCx0aGlzLiRhY3RpdmU9bnVsbCx0aGlzLiRpdGVtcz1udWxsLHRoaXMub3B0aW9ucy5rZXlib2FyZCYmdGhpcy4kZWxlbWVudC5vbigia2V5ZG93bi5icy5jYXJvdXNlbCIsYS5wcm94eSh0aGlzLmtleWRvd24sdGhpcykpLCJob3ZlciI9PXRoaXMub3B0aW9ucy5wYXVzZSYmISgib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkmJnRoaXMuJGVsZW1lbnQub24oIm1vdXNlZW50ZXIuYnMuY2Fyb3VzZWwiLGEucHJveHkodGhpcy5wYXVzZSx0aGlzKSkub24oIm1vdXNlbGVhdmUuYnMuY2Fyb3VzZWwiLGEucHJveHkodGhpcy5jeWNsZSx0aGlzKSl9O2MuVkVSU0lPTj0iMy4zLjUiLGMuVFJBTlNJVElPTl9EVVJBVElPTj02MDAsYy5ERUZBVUxUUz17aW50ZXJ2YWw6NWUzLHBhdXNlOiJob3ZlciIsd3JhcDohMCxrZXlib2FyZDohMH0sYy5wcm90b3R5cGUua2V5ZG93bj1mdW5jdGlvbihhKXtpZighL2lucHV0fHRleHRhcmVhL2kudGVzdChhLnRhcmdldC50YWdOYW1lKSl7c3dpdGNoKGEud2hpY2gpe2Nhc2UgMzc6dGhpcy5wcmV2KCk7YnJlYWs7Y2FzZSAzOTp0aGlzLm5leHQoKTticmVhaztkZWZhdWx0OnJldHVybn1hLnByZXZlbnREZWZhdWx0KCl9fSxjLnByb3RvdHlwZS5jeWNsZT1mdW5jdGlvbihiKXtyZXR1cm4gYnx8KHRoaXMucGF1c2VkPSExKSx0aGlzLmludGVydmFsJiZjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpLHRoaXMub3B0aW9ucy5pbnRlcnZhbCYmIXRoaXMucGF1c2VkJiYodGhpcy5pbnRlcnZhbD1zZXRJbnRlcnZhbChhLnByb3h5KHRoaXMubmV4dCx0aGlzKSx0aGlzLm9wdGlvbnMuaW50ZXJ2YWwpKSx0aGlzfSxjLnByb3RvdHlwZS5nZXRJdGVtSW5kZXg9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuJGl0ZW1zPWEucGFyZW50KCkuY2hpbGRyZW4oIi5pdGVtIiksdGhpcy4kaXRlbXMuaW5kZXgoYXx8dGhpcy4kYWN0aXZlKX0sYy5wcm90b3R5cGUuZ2V0SXRlbUZvckRpcmVjdGlvbj1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuZ2V0SXRlbUluZGV4KGIpLGQ9InByZXYiPT1hJiYwPT09Y3x8Im5leHQiPT1hJiZjPT10aGlzLiRpdGVtcy5sZW5ndGgtMTtpZihkJiYhdGhpcy5vcHRpb25zLndyYXApcmV0dXJuIGI7dmFyIGU9InByZXYiPT1hPy0xOjEsZj0oYytlKSV0aGlzLiRpdGVtcy5sZW5ndGg7cmV0dXJuIHRoaXMuJGl0ZW1zLmVxKGYpfSxjLnByb3RvdHlwZS50bz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9dGhpcy5nZXRJdGVtSW5kZXgodGhpcy4kYWN0aXZlPXRoaXMuJGVsZW1lbnQuZmluZCgiLml0ZW0uYWN0aXZlIikpO3JldHVybiBhPnRoaXMuJGl0ZW1zLmxlbmd0aC0xfHwwPmE/dm9pZCAwOnRoaXMuc2xpZGluZz90aGlzLiRlbGVtZW50Lm9uZSgic2xpZC5icy5jYXJvdXNlbCIsZnVuY3Rpb24oKXtiLnRvKGEpfSk6Yz09YT90aGlzLnBhdXNlKCkuY3ljbGUoKTp0aGlzLnNsaWRlKGE+Yz8ibmV4dCI6InByZXYiLHRoaXMuJGl0ZW1zLmVxKGEpKX0sYy5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oYil7cmV0dXJuIGJ8fCh0aGlzLnBhdXNlZD0hMCksdGhpcy4kZWxlbWVudC5maW5kKCIubmV4dCwgLnByZXYiKS5sZW5ndGgmJmEuc3VwcG9ydC50cmFuc2l0aW9uJiYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCksdGhpcy5jeWNsZSghMCkpLHRoaXMuaW50ZXJ2YWw9Y2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKSx0aGlzfSxjLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2xpZGluZz92b2lkIDA6dGhpcy5zbGlkZSgibmV4dCIpfSxjLnByb3RvdHlwZS5wcmV2PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2xpZGluZz92b2lkIDA6dGhpcy5zbGlkZSgicHJldiIpfSxjLnByb3RvdHlwZS5zbGlkZT1mdW5jdGlvbihiLGQpe3ZhciBlPXRoaXMuJGVsZW1lbnQuZmluZCgiLml0ZW0uYWN0aXZlIiksZj1kfHx0aGlzLmdldEl0ZW1Gb3JEaXJlY3Rpb24oYixlKSxnPXRoaXMuaW50ZXJ2YWwsaD0ibmV4dCI9PWI/ImxlZnQiOiJyaWdodCIsaT10aGlzO2lmKGYuaGFzQ2xhc3MoImFjdGl2ZSIpKXJldHVybiB0aGlzLnNsaWRpbmc9ITE7dmFyIGo9ZlswXSxrPWEuRXZlbnQoInNsaWRlLmJzLmNhcm91c2VsIix7cmVsYXRlZFRhcmdldDpqLGRpcmVjdGlvbjpofSk7aWYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGspLCFrLmlzRGVmYXVsdFByZXZlbnRlZCgpKXtpZih0aGlzLnNsaWRpbmc9ITAsZyYmdGhpcy5wYXVzZSgpLHRoaXMuJGluZGljYXRvcnMubGVuZ3RoKXt0aGlzLiRpbmRpY2F0b3JzLmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7dmFyIGw9YSh0aGlzLiRpbmRpY2F0b3JzLmNoaWxkcmVuKClbdGhpcy5nZXRJdGVtSW5kZXgoZildKTtsJiZsLmFkZENsYXNzKCJhY3RpdmUiKX12YXIgbT1hLkV2ZW50KCJzbGlkLmJzLmNhcm91c2VsIix7cmVsYXRlZFRhcmdldDpqLGRpcmVjdGlvbjpofSk7cmV0dXJuIGEuc3VwcG9ydC50cmFuc2l0aW9uJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJzbGlkZSIpPyhmLmFkZENsYXNzKGIpLGZbMF0ub2Zmc2V0V2lkdGgsZS5hZGRDbGFzcyhoKSxmLmFkZENsYXNzKGgpLGUub25lKCJic1RyYW5zaXRpb25FbmQiLGZ1bmN0aW9uKCl7Zi5yZW1vdmVDbGFzcyhbYixoXS5qb2luKCIgIikpLmFkZENsYXNzKCJhY3RpdmUiKSxlLnJlbW92ZUNsYXNzKFsiYWN0aXZlIixoXS5qb2luKCIgIikpLGkuc2xpZGluZz0hMSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aS4kZWxlbWVudC50cmlnZ2VyKG0pfSwwKX0pLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTikpOihlLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSxmLmFkZENsYXNzKCJhY3RpdmUiKSx0aGlzLnNsaWRpbmc9ITEsdGhpcy4kZWxlbWVudC50cmlnZ2VyKG0pKSxnJiZ0aGlzLmN5Y2xlKCksdGhpc319O3ZhciBkPWEuZm4uY2Fyb3VzZWw7YS5mbi5jYXJvdXNlbD1iLGEuZm4uY2Fyb3VzZWwuQ29uc3RydWN0b3I9YyxhLmZuLmNhcm91c2VsLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5jYXJvdXNlbD1kLHRoaXN9O3ZhciBlPWZ1bmN0aW9uKGMpe3ZhciBkLGU9YSh0aGlzKSxmPWEoZS5hdHRyKCJkYXRhLXRhcmdldCIpfHwoZD1lLmF0dHIoImhyZWYiKSkmJmQucmVwbGFjZSgvLiooPz0jW15cc10rJCkvLCIiKSk7aWYoZi5oYXNDbGFzcygiY2Fyb3VzZWwiKSl7dmFyIGc9YS5leHRlbmQoe30sZi5kYXRhKCksZS5kYXRhKCkpLGg9ZS5hdHRyKCJkYXRhLXNsaWRlLXRvIik7aCYmKGcuaW50ZXJ2YWw9ITEpLGIuY2FsbChmLGcpLGgmJmYuZGF0YSgiYnMuY2Fyb3VzZWwiKS50byhoKSxjLnByZXZlbnREZWZhdWx0KCl9fTthKGRvY3VtZW50KS5vbigiY2xpY2suYnMuY2Fyb3VzZWwuZGF0YS1hcGkiLCJbZGF0YS1zbGlkZV0iLGUpLm9uKCJjbGljay5icy5jYXJvdXNlbC5kYXRhLWFwaSIsIltkYXRhLXNsaWRlLXRvXSIsZSksYSh3aW5kb3cpLm9uKCJsb2FkIixmdW5jdGlvbigpe2EoJ1tkYXRhLXJpZGU9ImNhcm91c2VsIl0nKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKTtiLmNhbGwoYyxjLmRhdGEoKSl9KX0pfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXt2YXIgYyxkPWIuYXR0cigiZGF0YS10YXJnZXQiKXx8KGM9Yi5hdHRyKCJocmVmIikpJiZjLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywiIik7cmV0dXJuIGEoZCl9ZnVuY3Rpb24gYyhiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKSxlPWMuZGF0YSgiYnMuY29sbGFwc2UiKSxmPWEuZXh0ZW5kKHt9LGQuREVGQVVMVFMsYy5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBiJiZiKTshZSYmZi50b2dnbGUmJi9zaG93fGhpZGUvLnRlc3QoYikmJihmLnRvZ2dsZT0hMSksZXx8Yy5kYXRhKCJicy5jb2xsYXBzZSIsZT1uZXcgZCh0aGlzLGYpKSwic3RyaW5nIj09dHlwZW9mIGImJmVbYl0oKX0pfXZhciBkPWZ1bmN0aW9uKGIsYyl7dGhpcy4kZWxlbWVudD1hKGIpLHRoaXMub3B0aW9ucz1hLmV4dGVuZCh7fSxkLkRFRkFVTFRTLGMpLHRoaXMuJHRyaWdnZXI9YSgnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdW2hyZWY9IiMnK2IuaWQrJyJdLFtkYXRhLXRvZ2dsZT0iY29sbGFwc2UiXVtkYXRhLXRhcmdldD0iIycrYi5pZCsnIl0nKSx0aGlzLnRyYW5zaXRpb25pbmc9bnVsbCx0aGlzLm9wdGlvbnMucGFyZW50P3RoaXMuJHBhcmVudD10aGlzLmdldFBhcmVudCgpOnRoaXMuYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKHRoaXMuJGVsZW1lbnQsdGhpcy4kdHJpZ2dlciksdGhpcy5vcHRpb25zLnRvZ2dsZSYmdGhpcy50b2dnbGUoKX07ZC5WRVJTSU9OPSIzLjMuNSIsZC5UUkFOU0lUSU9OX0RVUkFUSU9OPTM1MCxkLkRFRkFVTFRTPXt0b2dnbGU6ITB9LGQucHJvdG90eXBlLmRpbWVuc2lvbj1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoIndpZHRoIik7cmV0dXJuIGE/IndpZHRoIjoiaGVpZ2h0In0sZC5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe2lmKCF0aGlzLnRyYW5zaXRpb25pbmcmJiF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJpbiIpKXt2YXIgYixlPXRoaXMuJHBhcmVudCYmdGhpcy4kcGFyZW50LmNoaWxkcmVuKCIucGFuZWwiKS5jaGlsZHJlbigiLmluLCAuY29sbGFwc2luZyIpO2lmKCEoZSYmZS5sZW5ndGgmJihiPWUuZGF0YSgiYnMuY29sbGFwc2UiKSxiJiZiLnRyYW5zaXRpb25pbmcpKSl7dmFyIGY9YS5FdmVudCgic2hvdy5icy5jb2xsYXBzZSIpO2lmKHRoaXMuJGVsZW1lbnQudHJpZ2dlcihmKSwhZi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7ZSYmZS5sZW5ndGgmJihjLmNhbGwoZSwiaGlkZSIpLGJ8fGUuZGF0YSgiYnMuY29sbGFwc2UiLG51bGwpKTt2YXIgZz10aGlzLmRpbWVuc2lvbigpO3RoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImNvbGxhcHNlIikuYWRkQ2xhc3MoImNvbGxhcHNpbmciKVtnXSgwKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksdGhpcy4kdHJpZ2dlci5yZW1vdmVDbGFzcygiY29sbGFwc2VkIikuYXR0cigiYXJpYS1leHBhbmRlZCIsITApLHRoaXMudHJhbnNpdGlvbmluZz0xO3ZhciBoPWZ1bmN0aW9uKCl7dGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygiY29sbGFwc2luZyIpLmFkZENsYXNzKCJjb2xsYXBzZSBpbiIpW2ddKCIiKSx0aGlzLnRyYW5zaXRpb25pbmc9MCx0aGlzLiRlbGVtZW50LnRyaWdnZXIoInNob3duLmJzLmNvbGxhcHNlIil9O2lmKCFhLnN1cHBvcnQudHJhbnNpdGlvbilyZXR1cm4gaC5jYWxsKHRoaXMpO3ZhciBpPWEuY2FtZWxDYXNlKFsic2Nyb2xsIixnXS5qb2luKCItIikpO3RoaXMuJGVsZW1lbnQub25lKCJic1RyYW5zaXRpb25FbmQiLGEucHJveHkoaCx0aGlzKSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoZC5UUkFOU0lUSU9OX0RVUkFUSU9OKVtnXSh0aGlzLiRlbGVtZW50WzBdW2ldKX19fX0sZC5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbigpe2lmKCF0aGlzLnRyYW5zaXRpb25pbmcmJnRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImluIikpe3ZhciBiPWEuRXZlbnQoImhpZGUuYnMuY29sbGFwc2UiKTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIoYiksIWIuaXNEZWZhdWx0UHJldmVudGVkKCkpe3ZhciBjPXRoaXMuZGltZW5zaW9uKCk7dGhpcy4kZWxlbWVudFtjXSh0aGlzLiRlbGVtZW50W2NdKCkpWzBdLm9mZnNldEhlaWdodCx0aGlzLiRlbGVtZW50LmFkZENsYXNzKCJjb2xsYXBzaW5nIikucmVtb3ZlQ2xhc3MoImNvbGxhcHNlIGluIikuYXR0cigiYXJpYS1leHBhbmRlZCIsITEpLHRoaXMuJHRyaWdnZXIuYWRkQ2xhc3MoImNvbGxhcHNlZCIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCExKSx0aGlzLnRyYW5zaXRpb25pbmc9MTt2YXIgZT1mdW5jdGlvbigpe3RoaXMudHJhbnNpdGlvbmluZz0wLHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImNvbGxhcHNpbmciKS5hZGRDbGFzcygiY29sbGFwc2UiKS50cmlnZ2VyKCJoaWRkZW4uYnMuY29sbGFwc2UiKX07cmV0dXJuIGEuc3VwcG9ydC50cmFuc2l0aW9uP3ZvaWQgdGhpcy4kZWxlbWVudFtjXSgwKS5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYS5wcm94eShlLHRoaXMpKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChkLlRSQU5TSVRJT05fRFVSQVRJT04pOmUuY2FsbCh0aGlzKX19fSxkLnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24oKXt0aGlzW3RoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImluIik/ImhpZGUiOiJzaG93Il0oKX0sZC5wcm90b3R5cGUuZ2V0UGFyZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGEodGhpcy5vcHRpb25zLnBhcmVudCkuZmluZCgnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdW2RhdGEtcGFyZW50PSInK3RoaXMub3B0aW9ucy5wYXJlbnQrJyJdJykuZWFjaChhLnByb3h5KGZ1bmN0aW9uKGMsZCl7dmFyIGU9YShkKTt0aGlzLmFkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyhiKGUpLGUpfSx0aGlzKSkuZW5kKCl9LGQucHJvdG90eXBlLmFkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcz1mdW5jdGlvbihhLGIpe3ZhciBjPWEuaGFzQ2xhc3MoImluIik7YS5hdHRyKCJhcmlhLWV4cGFuZGVkIixjKSxiLnRvZ2dsZUNsYXNzKCJjb2xsYXBzZWQiLCFjKS5hdHRyKCJhcmlhLWV4cGFuZGVkIixjKX07dmFyIGU9YS5mbi5jb2xsYXBzZTthLmZuLmNvbGxhcHNlPWMsYS5mbi5jb2xsYXBzZS5Db25zdHJ1Y3Rvcj1kLGEuZm4uY29sbGFwc2Uubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmNvbGxhcHNlPWUsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmNvbGxhcHNlLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdJyxmdW5jdGlvbihkKXt2YXIgZT1hKHRoaXMpO2UuYXR0cigiZGF0YS10YXJnZXQiKXx8ZC5wcmV2ZW50RGVmYXVsdCgpO3ZhciBmPWIoZSksZz1mLmRhdGEoImJzLmNvbGxhcHNlIiksaD1nPyJ0b2dnbGUiOmUuZGF0YSgpO2MuY2FsbChmLGgpfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3ZhciBjPWIuYXR0cigiZGF0YS10YXJnZXQiKTtjfHwoYz1iLmF0dHIoImhyZWYiKSxjPWMmJi8jW0EtWmEtel0vLnRlc3QoYykmJmMucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSk7dmFyIGQ9YyYmYShjKTtyZXR1cm4gZCYmZC5sZW5ndGg/ZDpiLnBhcmVudCgpfWZ1bmN0aW9uIGMoYyl7YyYmMz09PWMud2hpY2h8fChhKGUpLnJlbW92ZSgpLGEoZikuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1iKGQpLGY9e3JlbGF0ZWRUYXJnZXQ6dGhpc307ZS5oYXNDbGFzcygib3BlbiIpJiYoYyYmImNsaWNrIj09Yy50eXBlJiYvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGMudGFyZ2V0LnRhZ05hbWUpJiZhLmNvbnRhaW5zKGVbMF0sYy50YXJnZXQpfHwoZS50cmlnZ2VyKGM9YS5FdmVudCgiaGlkZS5icy5kcm9wZG93biIsZikpLGMuaXNEZWZhdWx0UHJldmVudGVkKCl8fChkLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLGUucmVtb3ZlQ2xhc3MoIm9wZW4iKS50cmlnZ2VyKCJoaWRkZW4uYnMuZHJvcGRvd24iLGYpKSkpfSkpfWZ1bmN0aW9uIGQoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBjPWEodGhpcyksZD1jLmRhdGEoImJzLmRyb3Bkb3duIik7ZHx8Yy5kYXRhKCJicy5kcm9wZG93biIsZD1uZXcgZyh0aGlzKSksInN0cmluZyI9PXR5cGVvZiBiJiZkW2JdLmNhbGwoYyl9KX12YXIgZT0iLmRyb3Bkb3duLWJhY2tkcm9wIixmPSdbZGF0YS10b2dnbGU9ImRyb3Bkb3duIl0nLGc9ZnVuY3Rpb24oYil7YShiKS5vbigiY2xpY2suYnMuZHJvcGRvd24iLHRoaXMudG9nZ2xlKX07Zy5WRVJTSU9OPSIzLjMuNSIsZy5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKGQpe3ZhciBlPWEodGhpcyk7aWYoIWUuaXMoIi5kaXNhYmxlZCwgOmRpc2FibGVkIikpe3ZhciBmPWIoZSksZz1mLmhhc0NsYXNzKCJvcGVuIik7aWYoYygpLCFnKXsib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmIWYuY2xvc2VzdCgiLm5hdmJhci1uYXYiKS5sZW5ndGgmJmEoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmFkZENsYXNzKCJkcm9wZG93bi1iYWNrZHJvcCIpLmluc2VydEFmdGVyKGEodGhpcykpLm9uKCJjbGljayIsYyk7dmFyIGg9e3JlbGF0ZWRUYXJnZXQ6dGhpc307aWYoZi50cmlnZ2VyKGQ9YS5FdmVudCgic2hvdy5icy5kcm9wZG93biIsaCkpLGQuaXNEZWZhdWx0UHJldmVudGVkKCkpcmV0dXJuO2UudHJpZ2dlcigiZm9jdXMiKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwidHJ1ZSIpLGYudG9nZ2xlQ2xhc3MoIm9wZW4iKS50cmlnZ2VyKCJzaG93bi5icy5kcm9wZG93biIsaCl9cmV0dXJuITF9fSxnLnByb3RvdHlwZS5rZXlkb3duPWZ1bmN0aW9uKGMpe2lmKC8oMzh8NDB8Mjd8MzIpLy50ZXN0KGMud2hpY2gpJiYhL2lucHV0fHRleHRhcmVhL2kudGVzdChjLnRhcmdldC50YWdOYW1lKSl7dmFyIGQ9YSh0aGlzKTtpZihjLnByZXZlbnREZWZhdWx0KCksYy5zdG9wUHJvcGFnYXRpb24oKSwhZC5pcygiLmRpc2FibGVkLCA6ZGlzYWJsZWQiKSl7dmFyIGU9YihkKSxnPWUuaGFzQ2xhc3MoIm9wZW4iKTtpZighZyYmMjchPWMud2hpY2h8fGcmJjI3PT1jLndoaWNoKXJldHVybiAyNz09Yy53aGljaCYmZS5maW5kKGYpLnRyaWdnZXIoImZvY3VzIiksZC50cmlnZ2VyKCJjbGljayIpO3ZhciBoPSIgbGk6bm90KC5kaXNhYmxlZCk6dmlzaWJsZSBhIixpPWUuZmluZCgiLmRyb3Bkb3duLW1lbnUiK2gpO2lmKGkubGVuZ3RoKXt2YXIgaj1pLmluZGV4KGMudGFyZ2V0KTszOD09Yy53aGljaCYmaj4wJiZqLS0sNDA9PWMud2hpY2gmJmo8aS5sZW5ndGgtMSYmaisrLH5qfHwoaj0wKSxpLmVxKGopLnRyaWdnZXIoImZvY3VzIil9fX19O3ZhciBoPWEuZm4uZHJvcGRvd247YS5mbi5kcm9wZG93bj1kLGEuZm4uZHJvcGRvd24uQ29uc3RydWN0b3I9ZyxhLmZuLmRyb3Bkb3duLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5kcm9wZG93bj1oLHRoaXN9LGEoZG9jdW1lbnQpLm9uKCJjbGljay5icy5kcm9wZG93bi5kYXRhLWFwaSIsYykub24oImNsaWNrLmJzLmRyb3Bkb3duLmRhdGEtYXBpIiwiLmRyb3Bkb3duIGZvcm0iLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiY2xpY2suYnMuZHJvcGRvd24uZGF0YS1hcGkiLGYsZy5wcm90b3R5cGUudG9nZ2xlKS5vbigia2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaSIsZixnLnByb3RvdHlwZS5rZXlkb3duKS5vbigia2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaSIsIi5kcm9wZG93bi1tZW51IixnLnByb3RvdHlwZS5rZXlkb3duKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYixkKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9YSh0aGlzKSxmPWUuZGF0YSgiYnMubW9kYWwiKSxnPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZS5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBiJiZiKTtmfHxlLmRhdGEoImJzLm1vZGFsIixmPW5ldyBjKHRoaXMsZykpLCJzdHJpbmciPT10eXBlb2YgYj9mW2JdKGQpOmcuc2hvdyYmZi5zaG93KGQpfSl9dmFyIGM9ZnVuY3Rpb24oYixjKXt0aGlzLm9wdGlvbnM9Yyx0aGlzLiRib2R5PWEoZG9jdW1lbnQuYm9keSksdGhpcy4kZWxlbWVudD1hKGIpLHRoaXMuJGRpYWxvZz10aGlzLiRlbGVtZW50LmZpbmQoIi5tb2RhbC1kaWFsb2ciKSx0aGlzLiRiYWNrZHJvcD1udWxsLHRoaXMuaXNTaG93bj1udWxsLHRoaXMub3JpZ2luYWxCb2R5UGFkPW51bGwsdGhpcy5zY3JvbGxiYXJXaWR0aD0wLHRoaXMuaWdub3JlQmFja2Ryb3BDbGljaz0hMSx0aGlzLm9wdGlvbnMucmVtb3RlJiZ0aGlzLiRlbGVtZW50LmZpbmQoIi5tb2RhbC1jb250ZW50IikubG9hZCh0aGlzLm9wdGlvbnMucmVtb3RlLGEucHJveHkoZnVuY3Rpb24oKXt0aGlzLiRlbGVtZW50LnRyaWdnZXIoImxvYWRlZC5icy5tb2RhbCIpfSx0aGlzKSl9O2MuVkVSU0lPTj0iMy4zLjUiLGMuVFJBTlNJVElPTl9EVVJBVElPTj0zMDAsYy5CQUNLRFJPUF9UUkFOU0lUSU9OX0RVUkFUSU9OPTE1MCxjLkRFRkFVTFRTPXtiYWNrZHJvcDohMCxrZXlib2FyZDohMCxzaG93OiEwfSxjLnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXNTaG93bj90aGlzLmhpZGUoKTp0aGlzLnNob3coYSl9LGMucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcyxlPWEuRXZlbnQoInNob3cuYnMubW9kYWwiLHtyZWxhdGVkVGFyZ2V0OmJ9KTt0aGlzLiRlbGVtZW50LnRyaWdnZXIoZSksdGhpcy5pc1Nob3dufHxlLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwodGhpcy5pc1Nob3duPSEwLHRoaXMuY2hlY2tTY3JvbGxiYXIoKSx0aGlzLnNldFNjcm9sbGJhcigpLHRoaXMuJGJvZHkuYWRkQ2xhc3MoIm1vZGFsLW9wZW4iKSx0aGlzLmVzY2FwZSgpLHRoaXMucmVzaXplKCksdGhpcy4kZWxlbWVudC5vbigiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIsJ1tkYXRhLWRpc21pc3M9Im1vZGFsIl0nLGEucHJveHkodGhpcy5oaWRlLHRoaXMpKSx0aGlzLiRkaWFsb2cub24oIm1vdXNlZG93bi5kaXNtaXNzLmJzLm1vZGFsIixmdW5jdGlvbigpe2QuJGVsZW1lbnQub25lKCJtb3VzZXVwLmRpc21pc3MuYnMubW9kYWwiLGZ1bmN0aW9uKGIpe2EoYi50YXJnZXQpLmlzKGQuJGVsZW1lbnQpJiYoZC5pZ25vcmVCYWNrZHJvcENsaWNrPSEwKX0pfSksdGhpcy5iYWNrZHJvcChmdW5jdGlvbigpe3ZhciBlPWEuc3VwcG9ydC50cmFuc2l0aW9uJiZkLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik7ZC4kZWxlbWVudC5wYXJlbnQoKS5sZW5ndGh8fGQuJGVsZW1lbnQuYXBwZW5kVG8oZC4kYm9keSksZC4kZWxlbWVudC5zaG93KCkuc2Nyb2xsVG9wKDApLGQuYWRqdXN0RGlhbG9nKCksZSYmZC4kZWxlbWVudFswXS5vZmZzZXRXaWR0aCxkLiRlbGVtZW50LmFkZENsYXNzKCJpbiIpLGQuZW5mb3JjZUZvY3VzKCk7dmFyIGY9YS5FdmVudCgic2hvd24uYnMubW9kYWwiLHtyZWxhdGVkVGFyZ2V0OmJ9KTtlP2QuJGRpYWxvZy5vbmUoImJzVHJhbnNpdGlvbkVuZCIsZnVuY3Rpb24oKXtkLiRlbGVtZW50LnRyaWdnZXIoImZvY3VzIikudHJpZ2dlcihmKX0pLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6ZC4kZWxlbWVudC50cmlnZ2VyKCJmb2N1cyIpLnRyaWdnZXIoZil9KSl9LGMucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oYil7YiYmYi5wcmV2ZW50RGVmYXVsdCgpLGI9YS5FdmVudCgiaGlkZS5icy5tb2RhbCIpLHRoaXMuJGVsZW1lbnQudHJpZ2dlcihiKSx0aGlzLmlzU2hvd24mJiFiLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYodGhpcy5pc1Nob3duPSExLHRoaXMuZXNjYXBlKCksdGhpcy5yZXNpemUoKSxhKGRvY3VtZW50KS5vZmYoImZvY3VzaW4uYnMubW9kYWwiKSx0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJpbiIpLm9mZigiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIpLm9mZigibW91c2V1cC5kaXNtaXNzLmJzLm1vZGFsIiksdGhpcy4kZGlhbG9nLm9mZigibW91c2Vkb3duLmRpc21pc3MuYnMubW9kYWwiKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiZmFkZSIpP3RoaXMuJGVsZW1lbnQub25lKCJic1RyYW5zaXRpb25FbmQiLGEucHJveHkodGhpcy5oaWRlTW9kYWwsdGhpcykpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6dGhpcy5oaWRlTW9kYWwoKSl9LGMucHJvdG90eXBlLmVuZm9yY2VGb2N1cz1mdW5jdGlvbigpe2EoZG9jdW1lbnQpLm9mZigiZm9jdXNpbi5icy5tb2RhbCIpLm9uKCJmb2N1c2luLmJzLm1vZGFsIixhLnByb3h5KGZ1bmN0aW9uKGEpe3RoaXMuJGVsZW1lbnRbMF09PT1hLnRhcmdldHx8dGhpcy4kZWxlbWVudC5oYXMoYS50YXJnZXQpLmxlbmd0aHx8dGhpcy4kZWxlbWVudC50cmlnZ2VyKCJmb2N1cyIpfSx0aGlzKSl9LGMucHJvdG90eXBlLmVzY2FwZT1mdW5jdGlvbigpe3RoaXMuaXNTaG93biYmdGhpcy5vcHRpb25zLmtleWJvYXJkP3RoaXMuJGVsZW1lbnQub24oImtleWRvd24uZGlzbWlzcy5icy5tb2RhbCIsYS5wcm94eShmdW5jdGlvbihhKXsyNz09YS53aGljaCYmdGhpcy5oaWRlKCl9LHRoaXMpKTp0aGlzLmlzU2hvd258fHRoaXMuJGVsZW1lbnQub2ZmKCJrZXlkb3duLmRpc21pc3MuYnMubW9kYWwiKX0sYy5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKCl7dGhpcy5pc1Nob3duP2Eod2luZG93KS5vbigicmVzaXplLmJzLm1vZGFsIixhLnByb3h5KHRoaXMuaGFuZGxlVXBkYXRlLHRoaXMpKTphKHdpbmRvdykub2ZmKCJyZXNpemUuYnMubW9kYWwiKX0sYy5wcm90b3R5cGUuaGlkZU1vZGFsPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLiRlbGVtZW50LmhpZGUoKSx0aGlzLmJhY2tkcm9wKGZ1bmN0aW9uKCl7YS4kYm9keS5yZW1vdmVDbGFzcygibW9kYWwtb3BlbiIpLGEucmVzZXRBZGp1c3RtZW50cygpLGEucmVzZXRTY3JvbGxiYXIoKSxhLiRlbGVtZW50LnRyaWdnZXIoImhpZGRlbi5icy5tb2RhbCIpfSl9LGMucHJvdG90eXBlLnJlbW92ZUJhY2tkcm9wPWZ1bmN0aW9uKCl7dGhpcy4kYmFja2Ryb3AmJnRoaXMuJGJhY2tkcm9wLnJlbW92ZSgpLHRoaXMuJGJhY2tkcm9wPW51bGx9LGMucHJvdG90eXBlLmJhY2tkcm9wPWZ1bmN0aW9uKGIpe3ZhciBkPXRoaXMsZT10aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik/ImZhZGUiOiIiO2lmKHRoaXMuaXNTaG93biYmdGhpcy5vcHRpb25zLmJhY2tkcm9wKXt2YXIgZj1hLnN1cHBvcnQudHJhbnNpdGlvbiYmZTtpZih0aGlzLiRiYWNrZHJvcD1hKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5hZGRDbGFzcygibW9kYWwtYmFja2Ryb3AgIitlKS5hcHBlbmRUbyh0aGlzLiRib2R5KSx0aGlzLiRlbGVtZW50Lm9uKCJjbGljay5kaXNtaXNzLmJzLm1vZGFsIixhLnByb3h5KGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmlnbm9yZUJhY2tkcm9wQ2xpY2s/dm9pZCh0aGlzLmlnbm9yZUJhY2tkcm9wQ2xpY2s9ITEpOnZvaWQoYS50YXJnZXQ9PT1hLmN1cnJlbnRUYXJnZXQmJigic3RhdGljIj09dGhpcy5vcHRpb25zLmJhY2tkcm9wP3RoaXMuJGVsZW1lbnRbMF0uZm9jdXMoKTp0aGlzLmhpZGUoKSkpfSx0aGlzKSksZiYmdGhpcy4kYmFja2Ryb3BbMF0ub2Zmc2V0V2lkdGgsdGhpcy4kYmFja2Ryb3AuYWRkQ2xhc3MoImluIiksIWIpcmV0dXJuO2Y/dGhpcy4kYmFja2Ryb3Aub25lKCJic1RyYW5zaXRpb25FbmQiLGIpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuQkFDS0RST1BfVFJBTlNJVElPTl9EVVJBVElPTik6YigpfWVsc2UgaWYoIXRoaXMuaXNTaG93biYmdGhpcy4kYmFja2Ryb3Ape3RoaXMuJGJhY2tkcm9wLnJlbW92ZUNsYXNzKCJpbiIpO3ZhciBnPWZ1bmN0aW9uKCl7ZC5yZW1vdmVCYWNrZHJvcCgpLGImJmIoKX07YS5zdXBwb3J0LnRyYW5zaXRpb24mJnRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImZhZGUiKT90aGlzLiRiYWNrZHJvcC5vbmUoImJzVHJhbnNpdGlvbkVuZCIsZykuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5CQUNLRFJPUF9UUkFOU0lUSU9OX0RVUkFUSU9OKTpnKCl9ZWxzZSBiJiZiKCl9LGMucHJvdG90eXBlLmhhbmRsZVVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuYWRqdXN0RGlhbG9nKCl9LGMucHJvdG90eXBlLmFkanVzdERpYWxvZz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnRbMF0uc2Nyb2xsSGVpZ2h0PmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7dGhpcy4kZWxlbWVudC5jc3Moe3BhZGRpbmdMZWZ0OiF0aGlzLmJvZHlJc092ZXJmbG93aW5nJiZhP3RoaXMuc2Nyb2xsYmFyV2lkdGg6IiIscGFkZGluZ1JpZ2h0OnRoaXMuYm9keUlzT3ZlcmZsb3dpbmcmJiFhP3RoaXMuc2Nyb2xsYmFyV2lkdGg6IiJ9KX0sYy5wcm90b3R5cGUucmVzZXRBZGp1c3RtZW50cz1mdW5jdGlvbigpe3RoaXMuJGVsZW1lbnQuY3NzKHtwYWRkaW5nTGVmdDoiIixwYWRkaW5nUmlnaHQ6IiJ9KX0sYy5wcm90b3R5cGUuY2hlY2tTY3JvbGxiYXI9ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3cuaW5uZXJXaWR0aDtpZighYSl7dmFyIGI9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2E9Yi5yaWdodC1NYXRoLmFicyhiLmxlZnQpfXRoaXMuYm9keUlzT3ZlcmZsb3dpbmc9ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDxhLHRoaXMuc2Nyb2xsYmFyV2lkdGg9dGhpcy5tZWFzdXJlU2Nyb2xsYmFyKCl9LGMucHJvdG90eXBlLnNldFNjcm9sbGJhcj1mdW5jdGlvbigpe3ZhciBhPXBhcnNlSW50KHRoaXMuJGJvZHkuY3NzKCJwYWRkaW5nLXJpZ2h0Iil8fDAsMTApO3RoaXMub3JpZ2luYWxCb2R5UGFkPWRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0fHwiIix0aGlzLmJvZHlJc092ZXJmbG93aW5nJiZ0aGlzLiRib2R5LmNzcygicGFkZGluZy1yaWdodCIsYSt0aGlzLnNjcm9sbGJhcldpZHRoKX0sYy5wcm90b3R5cGUucmVzZXRTY3JvbGxiYXI9ZnVuY3Rpb24oKXt0aGlzLiRib2R5LmNzcygicGFkZGluZy1yaWdodCIsdGhpcy5vcmlnaW5hbEJvZHlQYWQpfSxjLnByb3RvdHlwZS5tZWFzdXJlU2Nyb2xsYmFyPWZ1bmN0aW9uKCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5jbGFzc05hbWU9Im1vZGFsLXNjcm9sbGJhci1tZWFzdXJlIix0aGlzLiRib2R5LmFwcGVuZChhKTt2YXIgYj1hLm9mZnNldFdpZHRoLWEuY2xpZW50V2lkdGg7cmV0dXJuIHRoaXMuJGJvZHlbMF0ucmVtb3ZlQ2hpbGQoYSksYn07dmFyIGQ9YS5mbi5tb2RhbDthLmZuLm1vZGFsPWIsYS5mbi5tb2RhbC5Db25zdHJ1Y3Rvcj1jLGEuZm4ubW9kYWwubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLm1vZGFsPWQsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLm1vZGFsLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJtb2RhbCJdJyxmdW5jdGlvbihjKXt2YXIgZD1hKHRoaXMpLGU9ZC5hdHRyKCJocmVmIiksZj1hKGQuYXR0cigiZGF0YS10YXJnZXQiKXx8ZSYmZS5yZXBsYWNlKC8uKig/PSNbXlxzXSskKS8sIiIpKSxnPWYuZGF0YSgiYnMubW9kYWwiKT8idG9nZ2xlIjphLmV4dGVuZCh7cmVtb3RlOiEvIy8udGVzdChlKSYmZX0sZi5kYXRhKCksZC5kYXRhKCkpO2QuaXMoImEiKSYmYy5wcmV2ZW50RGVmYXVsdCgpLGYub25lKCJzaG93LmJzLm1vZGFsIixmdW5jdGlvbihhKXthLmlzRGVmYXVsdFByZXZlbnRlZCgpfHxmLm9uZSgiaGlkZGVuLmJzLm1vZGFsIixmdW5jdGlvbigpe2QuaXMoIjp2aXNpYmxlIikmJmQudHJpZ2dlcigiZm9jdXMiKX0pfSksYi5jYWxsKGYsZyx0aGlzKX0pfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMudG9vbHRpcCIpLGY9Im9iamVjdCI9PXR5cGVvZiBiJiZiOyhlfHwhL2Rlc3Ryb3l8aGlkZS8udGVzdChiKSkmJihlfHxkLmRhdGEoImJzLnRvb2x0aXAiLGU9bmV3IGModGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCkpfSl9dmFyIGM9ZnVuY3Rpb24oYSxiKXt0aGlzLnR5cGU9bnVsbCx0aGlzLm9wdGlvbnM9bnVsbCx0aGlzLmVuYWJsZWQ9bnVsbCx0aGlzLnRpbWVvdXQ9bnVsbCx0aGlzLmhvdmVyU3RhdGU9bnVsbCx0aGlzLiRlbGVtZW50PW51bGwsdGhpcy5pblN0YXRlPW51bGwsdGhpcy5pbml0KCJ0b29sdGlwIixhLGIpfTtjLlZFUlNJT049IjMuMy41IixjLlRSQU5TSVRJT05fRFVSQVRJT049MTUwLGMuREVGQVVMVFM9e2FuaW1hdGlvbjohMCxwbGFjZW1lbnQ6InRvcCIsc2VsZWN0b3I6ITEsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InRvb2x0aXAiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9InRvb2x0aXAtYXJyb3ciPjwvZGl2PjxkaXYgY2xhc3M9InRvb2x0aXAtaW5uZXIiPjwvZGl2PjwvZGl2PicsdHJpZ2dlcjoiaG92ZXIgZm9jdXMiLHRpdGxlOiIiLGRlbGF5OjAsaHRtbDohMSxjb250YWluZXI6ITEsdmlld3BvcnQ6e3NlbGVjdG9yOiJib2R5IixwYWRkaW5nOjB9fSxjLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGIsYyxkKXtpZih0aGlzLmVuYWJsZWQ9ITAsdGhpcy50eXBlPWIsdGhpcy4kZWxlbWVudD1hKGMpLHRoaXMub3B0aW9ucz10aGlzLmdldE9wdGlvbnMoZCksdGhpcy4kdmlld3BvcnQ9dGhpcy5vcHRpb25zLnZpZXdwb3J0JiZhKGEuaXNGdW5jdGlvbih0aGlzLm9wdGlvbnMudmlld3BvcnQpP3RoaXMub3B0aW9ucy52aWV3cG9ydC5jYWxsKHRoaXMsdGhpcy4kZWxlbWVudCk6dGhpcy5vcHRpb25zLnZpZXdwb3J0LnNlbGVjdG9yfHx0aGlzLm9wdGlvbnMudmlld3BvcnQpLHRoaXMuaW5TdGF0ZT17Y2xpY2s6ITEsaG92ZXI6ITEsZm9jdXM6ITF9LHRoaXMuJGVsZW1lbnRbMF1pbnN0YW5jZW9mIGRvY3VtZW50LmNvbnN0cnVjdG9yJiYhdGhpcy5vcHRpb25zLnNlbGVjdG9yKXRocm93IG5ldyBFcnJvcigiYHNlbGVjdG9yYCBvcHRpb24gbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBpbml0aWFsaXppbmcgIit0aGlzLnR5cGUrIiBvbiB0aGUgd2luZG93LmRvY3VtZW50IG9iamVjdCEiKTtmb3IodmFyIGU9dGhpcy5vcHRpb25zLnRyaWdnZXIuc3BsaXQoIiAiKSxmPWUubGVuZ3RoO2YtLTspe3ZhciBnPWVbZl07aWYoImNsaWNrIj09Zyl0aGlzLiRlbGVtZW50Lm9uKCJjbGljay4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLnRvZ2dsZSx0aGlzKSk7ZWxzZSBpZigibWFudWFsIiE9Zyl7dmFyIGg9ImhvdmVyIj09Zz8ibW91c2VlbnRlciI6ImZvY3VzaW4iLGk9ImhvdmVyIj09Zz8ibW91c2VsZWF2ZSI6ImZvY3Vzb3V0Ijt0aGlzLiRlbGVtZW50Lm9uKGgrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmVudGVyLHRoaXMpKSx0aGlzLiRlbGVtZW50Lm9uKGkrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmxlYXZlLHRoaXMpKX19dGhpcy5vcHRpb25zLnNlbGVjdG9yP3RoaXMuX29wdGlvbnM9YS5leHRlbmQoe30sdGhpcy5vcHRpb25zLHt0cmlnZ2VyOiJtYW51YWwiLHNlbGVjdG9yOiIifSk6dGhpcy5maXhUaXRsZSgpfSxjLnByb3RvdHlwZS5nZXREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBjLkRFRkFVTFRTfSxjLnByb3RvdHlwZS5nZXRPcHRpb25zPWZ1bmN0aW9uKGIpe3JldHVybiBiPWEuZXh0ZW5kKHt9LHRoaXMuZ2V0RGVmYXVsdHMoKSx0aGlzLiRlbGVtZW50LmRhdGEoKSxiKSxiLmRlbGF5JiYibnVtYmVyIj09dHlwZW9mIGIuZGVsYXkmJihiLmRlbGF5PXtzaG93OmIuZGVsYXksaGlkZTpiLmRlbGF5fSksYn0sYy5wcm90b3R5cGUuZ2V0RGVsZWdhdGVPcHRpb25zPWZ1bmN0aW9uKCl7dmFyIGI9e30sYz10aGlzLmdldERlZmF1bHRzKCk7cmV0dXJuIHRoaXMuX29wdGlvbnMmJmEuZWFjaCh0aGlzLl9vcHRpb25zLGZ1bmN0aW9uKGEsZCl7Y1thXSE9ZCYmKGJbYV09ZCl9KSxifSxjLnByb3RvdHlwZS5lbnRlcj1mdW5jdGlvbihiKXt2YXIgYz1iIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9iOmEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSk7cmV0dXJuIGN8fChjPW5ldyB0aGlzLmNvbnN0cnVjdG9yKGIuY3VycmVudFRhcmdldCx0aGlzLmdldERlbGVnYXRlT3B0aW9ucygpKSxhKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUsYykpLGIgaW5zdGFuY2VvZiBhLkV2ZW50JiYoYy5pblN0YXRlWyJmb2N1c2luIj09Yi50eXBlPyJmb2N1cyI6ImhvdmVyIl09ITApLGMudGlwKCkuaGFzQ2xhc3MoImluIil8fCJpbiI9PWMuaG92ZXJTdGF0ZT92b2lkKGMuaG92ZXJTdGF0ZT0iaW4iKTooY2xlYXJUaW1lb3V0KGMudGltZW91dCksYy5ob3ZlclN0YXRlPSJpbiIsYy5vcHRpb25zLmRlbGF5JiZjLm9wdGlvbnMuZGVsYXkuc2hvdz92b2lkKGMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ImluIj09Yy5ob3ZlclN0YXRlJiZjLnNob3coKX0sYy5vcHRpb25zLmRlbGF5LnNob3cpKTpjLnNob3coKSl9LGMucHJvdG90eXBlLmlzSW5TdGF0ZVRydWU9ZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gdGhpcy5pblN0YXRlKWlmKHRoaXMuaW5TdGF0ZVthXSlyZXR1cm4hMDtyZXR1cm4hMX0sYy5wcm90b3R5cGUubGVhdmU9ZnVuY3Rpb24oYil7dmFyIGM9YiBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I/YjphKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUpO3JldHVybiBjfHwoYz1uZXcgdGhpcy5jb25zdHJ1Y3RvcihiLmN1cnJlbnRUYXJnZXQsdGhpcy5nZXREZWxlZ2F0ZU9wdGlvbnMoKSksYShiLmN1cnJlbnRUYXJnZXQpLmRhdGEoImJzLiIrdGhpcy50eXBlLGMpKSxiIGluc3RhbmNlb2YgYS5FdmVudCYmKGMuaW5TdGF0ZVsiZm9jdXNvdXQiPT1iLnR5cGU/ImZvY3VzIjoiaG92ZXIiXT0hMSksYy5pc0luU3RhdGVUcnVlKCk/dm9pZCAwOihjbGVhclRpbWVvdXQoYy50aW1lb3V0KSxjLmhvdmVyU3RhdGU9Im91dCIsYy5vcHRpb25zLmRlbGF5JiZjLm9wdGlvbnMuZGVsYXkuaGlkZT92b2lkKGMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Im91dCI9PWMuaG92ZXJTdGF0ZSYmYy5oaWRlKCl9LGMub3B0aW9ucy5kZWxheS5oaWRlKSk6Yy5oaWRlKCkpfSxjLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dmFyIGI9YS5FdmVudCgic2hvdy5icy4iK3RoaXMudHlwZSk7aWYodGhpcy5oYXNDb250ZW50KCkmJnRoaXMuZW5hYmxlZCl7dGhpcy4kZWxlbWVudC50cmlnZ2VyKGIpO3ZhciBkPWEuY29udGFpbnModGhpcy4kZWxlbWVudFswXS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx0aGlzLiRlbGVtZW50WzBdKTtpZihiLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwhZClyZXR1cm47dmFyIGU9dGhpcyxmPXRoaXMudGlwKCksZz10aGlzLmdldFVJRCh0aGlzLnR5cGUpO3RoaXMuc2V0Q29udGVudCgpLGYuYXR0cigiaWQiLGcpLHRoaXMuJGVsZW1lbnQuYXR0cigiYXJpYS1kZXNjcmliZWRieSIsZyksdGhpcy5vcHRpb25zLmFuaW1hdGlvbiYmZi5hZGRDbGFzcygiZmFkZSIpO3ZhciBoPSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9wdGlvbnMucGxhY2VtZW50P3RoaXMub3B0aW9ucy5wbGFjZW1lbnQuY2FsbCh0aGlzLGZbMF0sdGhpcy4kZWxlbWVudFswXSk6dGhpcy5vcHRpb25zLnBsYWNlbWVudCxpPS9ccz9hdXRvP1xzPy9pLGo9aS50ZXN0KGgpO2omJihoPWgucmVwbGFjZShpLCIiKXx8InRvcCIpLGYuZGV0YWNoKCkuY3NzKHt0b3A6MCxsZWZ0OjAsZGlzcGxheToiYmxvY2sifSkuYWRkQ2xhc3MoaCkuZGF0YSgiYnMuIit0aGlzLnR5cGUsdGhpcyksdGhpcy5vcHRpb25zLmNvbnRhaW5lcj9mLmFwcGVuZFRvKHRoaXMub3B0aW9ucy5jb250YWluZXIpOmYuaW5zZXJ0QWZ0ZXIodGhpcy4kZWxlbWVudCksdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJpbnNlcnRlZC5icy4iK3RoaXMudHlwZSk7dmFyIGs9dGhpcy5nZXRQb3NpdGlvbigpLGw9ZlswXS5vZmZzZXRXaWR0aCxtPWZbMF0ub2Zmc2V0SGVpZ2h0O2lmKGope3ZhciBuPWgsbz10aGlzLmdldFBvc2l0aW9uKHRoaXMuJHZpZXdwb3J0KTtoPSJib3R0b20iPT1oJiZrLmJvdHRvbSttPm8uYm90dG9tPyJ0b3AiOiJ0b3AiPT1oJiZrLnRvcC1tPG8udG9wPyJib3R0b20iOiJyaWdodCI9PWgmJmsucmlnaHQrbD5vLndpZHRoPyJsZWZ0IjoibGVmdCI9PWgmJmsubGVmdC1sPG8ubGVmdD8icmlnaHQiOmgsZi5yZW1vdmVDbGFzcyhuKS5hZGRDbGFzcyhoKX12YXIgcD10aGlzLmdldENhbGN1bGF0ZWRPZmZzZXQoaCxrLGwsbSk7dGhpcy5hcHBseVBsYWNlbWVudChwLGgpO3ZhciBxPWZ1bmN0aW9uKCl7dmFyIGE9ZS5ob3ZlclN0YXRlO2UuJGVsZW1lbnQudHJpZ2dlcigic2hvd24uYnMuIitlLnR5cGUpLGUuaG92ZXJTdGF0ZT1udWxsLCJvdXQiPT1hJiZlLmxlYXZlKGUpfTthLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kdGlwLmhhc0NsYXNzKCJmYWRlIik/Zi5vbmUoImJzVHJhbnNpdGlvbkVuZCIscSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKTpxKCl9fSxjLnByb3RvdHlwZS5hcHBseVBsYWNlbWVudD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMudGlwKCksZT1kWzBdLm9mZnNldFdpZHRoLGY9ZFswXS5vZmZzZXRIZWlnaHQsZz1wYXJzZUludChkLmNzcygibWFyZ2luLXRvcCIpLDEwKSxoPXBhcnNlSW50KGQuY3NzKCJtYXJnaW4tbGVmdCIpLDEwKTtpc05hTihnKSYmKGc9MCksaXNOYU4oaCkmJihoPTApLGIudG9wKz1nLGIubGVmdCs9aCxhLm9mZnNldC5zZXRPZmZzZXQoZFswXSxhLmV4dGVuZCh7dXNpbmc6ZnVuY3Rpb24oYSl7ZC5jc3Moe3RvcDpNYXRoLnJvdW5kKGEudG9wKSxsZWZ0Ok1hdGgucm91bmQoYS5sZWZ0KX0pfX0sYiksMCksZC5hZGRDbGFzcygiaW4iKTt2YXIgaT1kWzBdLm9mZnNldFdpZHRoLGo9ZFswXS5vZmZzZXRIZWlnaHQ7InRvcCI9PWMmJmohPWYmJihiLnRvcD1iLnRvcCtmLWopO3ZhciBrPXRoaXMuZ2V0Vmlld3BvcnRBZGp1c3RlZERlbHRhKGMsYixpLGopO2subGVmdD9iLmxlZnQrPWsubGVmdDpiLnRvcCs9ay50b3A7dmFyIGw9L3RvcHxib3R0b20vLnRlc3QoYyksbT1sPzIqay5sZWZ0LWUraToyKmsudG9wLWYraixuPWw/Im9mZnNldFdpZHRoIjoib2Zmc2V0SGVpZ2h0IjtkLm9mZnNldChiKSx0aGlzLnJlcGxhY2VBcnJvdyhtLGRbMF1bbl0sbCl9LGMucHJvdG90eXBlLnJlcGxhY2VBcnJvdz1mdW5jdGlvbihhLGIsYyl7dGhpcy5hcnJvdygpLmNzcyhjPyJsZWZ0IjoidG9wIiw1MCooMS1hL2IpKyIlIikuY3NzKGM/InRvcCI6ImxlZnQiLCIiKX0sYy5wcm90b3R5cGUuc2V0Q29udGVudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMudGlwKCksYj10aGlzLmdldFRpdGxlKCk7YS5maW5kKCIudG9vbHRpcC1pbm5lciIpW3RoaXMub3B0aW9ucy5odG1sPyJodG1sIjoidGV4dCJdKGIpLGEucmVtb3ZlQ2xhc3MoImZhZGUgaW4gdG9wIGJvdHRvbSBsZWZ0IHJpZ2h0Iil9LGMucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gZCgpeyJpbiIhPWUuaG92ZXJTdGF0ZSYmZi5kZXRhY2goKSxlLiRlbGVtZW50LnJlbW92ZUF0dHIoImFyaWEtZGVzY3JpYmVkYnkiKS50cmlnZ2VyKCJoaWRkZW4uYnMuIitlLnR5cGUpLGImJmIoKX12YXIgZT10aGlzLGY9YSh0aGlzLiR0aXApLGc9YS5FdmVudCgiaGlkZS5icy4iK3RoaXMudHlwZSk7cmV0dXJuIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihnKSxnLmlzRGVmYXVsdFByZXZlbnRlZCgpP3ZvaWQgMDooZi5yZW1vdmVDbGFzcygiaW4iKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmZi5oYXNDbGFzcygiZmFkZSIpP2Yub25lKCJic1RyYW5zaXRpb25FbmQiLGQpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6ZCgpLHRoaXMuaG92ZXJTdGF0ZT1udWxsLHRoaXMpfSxjLnByb3RvdHlwZS5maXhUaXRsZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQ7KGEuYXR0cigidGl0bGUiKXx8InN0cmluZyIhPXR5cGVvZiBhLmF0dHIoImRhdGEtb3JpZ2luYWwtdGl0bGUiKSkmJmEuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIsYS5hdHRyKCJ0aXRsZSIpfHwiIikuYXR0cigidGl0bGUiLCIiKX0sYy5wcm90b3R5cGUuaGFzQ29udGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRpdGxlKCl9LGMucHJvdG90eXBlLmdldFBvc2l0aW9uPWZ1bmN0aW9uKGIpe2I9Ynx8dGhpcy4kZWxlbWVudDt2YXIgYz1iWzBdLGQ9IkJPRFkiPT1jLnRhZ05hbWUsZT1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO251bGw9PWUud2lkdGgmJihlPWEuZXh0ZW5kKHt9LGUse3dpZHRoOmUucmlnaHQtZS5sZWZ0LGhlaWdodDplLmJvdHRvbS1lLnRvcH0pKTt2YXIgZj1kP3t0b3A6MCxsZWZ0OjB9OmIub2Zmc2V0KCksZz17c2Nyb2xsOmQ/ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcHx8ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A6Yi5zY3JvbGxUb3AoKX0saD1kP3t3aWR0aDphKHdpbmRvdykud2lkdGgoKSxoZWlnaHQ6YSh3aW5kb3cpLmhlaWdodCgpfTpudWxsO3JldHVybiBhLmV4dGVuZCh7fSxlLGcsaCxmKX0sYy5wcm90b3R5cGUuZ2V0Q2FsY3VsYXRlZE9mZnNldD1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4iYm90dG9tIj09YT97dG9wOmIudG9wK2IuaGVpZ2h0LGxlZnQ6Yi5sZWZ0K2Iud2lkdGgvMi1jLzJ9OiJ0b3AiPT1hP3t0b3A6Yi50b3AtZCxsZWZ0OmIubGVmdCtiLndpZHRoLzItYy8yfToibGVmdCI9PWE/e3RvcDpiLnRvcCtiLmhlaWdodC8yLWQvMixsZWZ0OmIubGVmdC1jfTp7dG9wOmIudG9wK2IuaGVpZ2h0LzItZC8yLGxlZnQ6Yi5sZWZ0K2Iud2lkdGh9fSxjLnByb3RvdHlwZS5nZXRWaWV3cG9ydEFkanVzdGVkRGVsdGE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9e3RvcDowLGxlZnQ6MH07aWYoIXRoaXMuJHZpZXdwb3J0KXJldHVybiBlO3ZhciBmPXRoaXMub3B0aW9ucy52aWV3cG9ydCYmdGhpcy5vcHRpb25zLnZpZXdwb3J0LnBhZGRpbmd8fDAsZz10aGlzLmdldFBvc2l0aW9uKHRoaXMuJHZpZXdwb3J0KTtpZigvcmlnaHR8bGVmdC8udGVzdChhKSl7dmFyIGg9Yi50b3AtZi1nLnNjcm9sbCxpPWIudG9wK2YtZy5zY3JvbGwrZDtoPGcudG9wP2UudG9wPWcudG9wLWg6aT5nLnRvcCtnLmhlaWdodCYmKGUudG9wPWcudG9wK2cuaGVpZ2h0LWkpfWVsc2V7dmFyIGo9Yi5sZWZ0LWYsaz1iLmxlZnQrZitjO2o8Zy5sZWZ0P2UubGVmdD1nLmxlZnQtajprPmcucmlnaHQmJihlLmxlZnQ9Zy5sZWZ0K2cud2lkdGgtayl9cmV0dXJuIGV9LGMucHJvdG90eXBlLmdldFRpdGxlPWZ1bmN0aW9uKCl7dmFyIGEsYj10aGlzLiRlbGVtZW50LGM9dGhpcy5vcHRpb25zO3JldHVybiBhPWIuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIpfHwoImZ1bmN0aW9uIj09dHlwZW9mIGMudGl0bGU/Yy50aXRsZS5jYWxsKGJbMF0pOmMudGl0bGUpfSxjLnByb3RvdHlwZS5nZXRVSUQ9ZnVuY3Rpb24oYSl7ZG8gYSs9fn4oMWU2Kk1hdGgucmFuZG9tKCkpO3doaWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpKTtyZXR1cm4gYX0sYy5wcm90b3R5cGUudGlwPWZ1bmN0aW9uKCl7aWYoIXRoaXMuJHRpcCYmKHRoaXMuJHRpcD1hKHRoaXMub3B0aW9ucy50ZW1wbGF0ZSksMSE9dGhpcy4kdGlwLmxlbmd0aCkpdGhyb3cgbmV3IEVycm9yKHRoaXMudHlwZSsiIGB0ZW1wbGF0ZWAgb3B0aW9uIG11c3QgY29uc2lzdCBvZiBleGFjdGx5IDEgdG9wLWxldmVsIGVsZW1lbnQhIik7cmV0dXJuIHRoaXMuJHRpcH0sYy5wcm90b3R5cGUuYXJyb3c9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kYXJyb3c9dGhpcy4kYXJyb3d8fHRoaXMudGlwKCkuZmluZCgiLnRvb2x0aXAtYXJyb3ciKX0sYy5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSEwfSxjLnByb3RvdHlwZS5kaXNhYmxlPWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSExfSxjLnByb3RvdHlwZS50b2dnbGVFbmFibGVkPWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSF0aGlzLmVuYWJsZWR9LGMucHJvdG90eXBlLnRvZ2dsZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzO2ImJihjPWEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSksY3x8KGM9bmV3IHRoaXMuY29uc3RydWN0b3IoYi5jdXJyZW50VGFyZ2V0LHRoaXMuZ2V0RGVsZWdhdGVPcHRpb25zKCkpLGEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSxjKSkpLGI/KGMuaW5TdGF0ZS5jbGljaz0hYy5pblN0YXRlLmNsaWNrLGMuaXNJblN0YXRlVHJ1ZSgpP2MuZW50ZXIoYyk6Yy5sZWF2ZShjKSk6Yy50aXAoKS5oYXNDbGFzcygiaW4iKT9jLmxlYXZlKGMpOmMuZW50ZXIoYyl9LGMucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2NsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpLHRoaXMuaGlkZShmdW5jdGlvbigpe2EuJGVsZW1lbnQub2ZmKCIuIithLnR5cGUpLnJlbW92ZURhdGEoImJzLiIrYS50eXBlKSxhLiR0aXAmJmEuJHRpcC5kZXRhY2goKSxhLiR0aXA9bnVsbCxhLiRhcnJvdz1udWxsLGEuJHZpZXdwb3J0PW51bGx9KX07dmFyIGQ9YS5mbi50b29sdGlwO2EuZm4udG9vbHRpcD1iLGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvcj1jLGEuZm4udG9vbHRpcC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4udG9vbHRpcD1kLHRoaXN9fShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMucG9wb3ZlciIpLGY9Im9iamVjdCI9PXR5cGVvZiBiJiZiOyhlfHwhL2Rlc3Ryb3l8aGlkZS8udGVzdChiKSkmJihlfHxkLmRhdGEoImJzLnBvcG92ZXIiLGU9bmV3IGModGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCkpfSl9dmFyIGM9ZnVuY3Rpb24oYSxiKXt0aGlzLmluaXQoInBvcG92ZXIiLGEsYil9O2lmKCFhLmZuLnRvb2x0aXApdGhyb3cgbmV3IEVycm9yKCJQb3BvdmVyIHJlcXVpcmVzIHRvb2x0aXAuanMiKTtjLlZFUlNJT049IjMuMy41IixjLkRFRkFVTFRTPWEuZXh0ZW5kKHt9LGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvci5ERUZBVUxUUyx7cGxhY2VtZW50OiJyaWdodCIsdHJpZ2dlcjoiY2xpY2siLGNvbnRlbnQ6IiIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InBvcG92ZXIiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj48aDMgY2xhc3M9InBvcG92ZXItdGl0bGUiPjwvaDM+PGRpdiBjbGFzcz0icG9wb3Zlci1jb250ZW50Ij48L2Rpdj48L2Rpdj4nfSksYy5wcm90b3R5cGU9YS5leHRlbmQoe30sYS5mbi50b29sdGlwLkNvbnN0cnVjdG9yLnByb3RvdHlwZSksYy5wcm90b3R5cGUuY29uc3RydWN0b3I9YyxjLnByb3RvdHlwZS5nZXREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBjLkRFRkFVTFRTfSxjLnByb3RvdHlwZS5zZXRDb250ZW50PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50aXAoKSxiPXRoaXMuZ2V0VGl0bGUoKSxjPXRoaXMuZ2V0Q29udGVudCgpO2EuZmluZCgiLnBvcG92ZXItdGl0bGUiKVt0aGlzLm9wdGlvbnMuaHRtbD8iaHRtbCI6InRleHQiXShiKSxhLmZpbmQoIi5wb3BvdmVyLWNvbnRlbnQiKS5jaGlsZHJlbigpLmRldGFjaCgpLmVuZCgpW3RoaXMub3B0aW9ucy5odG1sPyJzdHJpbmciPT10eXBlb2YgYz8iaHRtbCI6ImFwcGVuZCI6InRleHQiXShjKSxhLnJlbW92ZUNsYXNzKCJmYWRlIHRvcCBib3R0b20gbGVmdCByaWdodCBpbiIpLGEuZmluZCgiLnBvcG92ZXItdGl0bGUiKS5odG1sKCl8fGEuZmluZCgiLnBvcG92ZXItdGl0bGUiKS5oaWRlKCl9LGMucHJvdG90eXBlLmhhc0NvbnRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUaXRsZSgpfHx0aGlzLmdldENvbnRlbnQoKX0sYy5wcm90b3R5cGUuZ2V0Q29udGVudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQsYj10aGlzLm9wdGlvbnM7cmV0dXJuIGEuYXR0cigiZGF0YS1jb250ZW50Iil8fCgiZnVuY3Rpb24iPT10eXBlb2YgYi5jb250ZW50P2IuY29udGVudC5jYWxsKGFbMF0pOmIuY29udGVudCl9LGMucHJvdG90eXBlLmFycm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGFycm93PXRoaXMuJGFycm93fHx0aGlzLnRpcCgpLmZpbmQoIi5hcnJvdyIpfTt2YXIgZD1hLmZuLnBvcG92ZXI7YS5mbi5wb3BvdmVyPWIsYS5mbi5wb3BvdmVyLkNvbnN0cnVjdG9yPWMsYS5mbi5wb3BvdmVyLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5wb3BvdmVyPWQsdGhpc319KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGMsZCl7dGhpcy4kYm9keT1hKGRvY3VtZW50LmJvZHkpLHRoaXMuJHNjcm9sbEVsZW1lbnQ9YShhKGMpLmlzKGRvY3VtZW50LmJvZHkpP3dpbmRvdzpjKSx0aGlzLm9wdGlvbnM9YS5leHRlbmQoe30sYi5ERUZBVUxUUyxkKSx0aGlzLnNlbGVjdG9yPSh0aGlzLm9wdGlvbnMudGFyZ2V0fHwiIikrIiAubmF2IGxpID4gYSIsdGhpcy5vZmZzZXRzPVtdLHRoaXMudGFyZ2V0cz1bXSx0aGlzLmFjdGl2ZVRhcmdldD1udWxsLHRoaXMuc2Nyb2xsSGVpZ2h0PTAsdGhpcy4kc2Nyb2xsRWxlbWVudC5vbigic2Nyb2xsLmJzLnNjcm9sbHNweSIsYS5wcm94eSh0aGlzLnByb2Nlc3MsdGhpcykpLHRoaXMucmVmcmVzaCgpLHRoaXMucHJvY2VzcygpfWZ1bmN0aW9uIGMoYyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLnNjcm9sbHNweSIpLGY9Im9iamVjdCI9PXR5cGVvZiBjJiZjO2V8fGQuZGF0YSgiYnMuc2Nyb2xsc3B5IixlPW5ldyBiKHRoaXMsZikpLCJzdHJpbmciPT10eXBlb2YgYyYmZVtjXSgpfSl9Yi5WRVJTSU9OPSIzLjMuNSIsYi5ERUZBVUxUUz17b2Zmc2V0OjEwfSxiLnByb3RvdHlwZS5nZXRTY3JvbGxIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kc2Nyb2xsRWxlbWVudFswXS5zY3JvbGxIZWlnaHR8fE1hdGgubWF4KHRoaXMuJGJvZHlbMF0uc2Nyb2xsSGVpZ2h0LGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQpfSxiLnByb3RvdHlwZS5yZWZyZXNoPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxjPSJvZmZzZXQiLGQ9MDt0aGlzLm9mZnNldHM9W10sdGhpcy50YXJnZXRzPVtdLHRoaXMuc2Nyb2xsSGVpZ2h0PXRoaXMuZ2V0U2Nyb2xsSGVpZ2h0KCksYS5pc1dpbmRvdyh0aGlzLiRzY3JvbGxFbGVtZW50WzBdKXx8KGM9InBvc2l0aW9uIixkPXRoaXMuJHNjcm9sbEVsZW1lbnQuc2Nyb2xsVG9wKCkpLHRoaXMuJGJvZHkuZmluZCh0aGlzLnNlbGVjdG9yKS5tYXAoZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpLGU9Yi5kYXRhKCJ0YXJnZXQiKXx8Yi5hdHRyKCJocmVmIiksZj0vXiMuLy50ZXN0KGUpJiZhKGUpO3JldHVybiBmJiZmLmxlbmd0aCYmZi5pcygiOnZpc2libGUiKSYmW1tmW2NdKCkudG9wK2QsZV1dfHxudWxsfSkuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhWzBdLWJbMF19KS5lYWNoKGZ1bmN0aW9uKCl7Yi5vZmZzZXRzLnB1c2godGhpc1swXSksYi50YXJnZXRzLnB1c2godGhpc1sxXSl9KX0sYi5wcm90b3R5cGUucHJvY2Vzcz1mdW5jdGlvbigpe3ZhciBhLGI9dGhpcy4kc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3AoKSt0aGlzLm9wdGlvbnMub2Zmc2V0LGM9dGhpcy5nZXRTY3JvbGxIZWlnaHQoKSxkPXRoaXMub3B0aW9ucy5vZmZzZXQrYy10aGlzLiRzY3JvbGxFbGVtZW50LmhlaWdodCgpLGU9dGhpcy5vZmZzZXRzLGY9dGhpcy50YXJnZXRzLGc9dGhpcy5hY3RpdmVUYXJnZXQ7aWYodGhpcy5zY3JvbGxIZWlnaHQhPWMmJnRoaXMucmVmcmVzaCgpLGI+PWQpcmV0dXJuIGchPShhPWZbZi5sZW5ndGgtMV0pJiZ0aGlzLmFjdGl2YXRlKGEpO2lmKGcmJmI8ZVswXSlyZXR1cm4gdGhpcy5hY3RpdmVUYXJnZXQ9bnVsbCx0aGlzLmNsZWFyKCk7Zm9yKGE9ZS5sZW5ndGg7YS0tOylnIT1mW2FdJiZiPj1lW2FdJiYodm9pZCAwPT09ZVthKzFdfHxiPGVbYSsxXSkmJnRoaXMuYWN0aXZhdGUoZlthXSl9LGIucHJvdG90eXBlLmFjdGl2YXRlPWZ1bmN0aW9uKGIpe3RoaXMuYWN0aXZlVGFyZ2V0PWIsdGhpcy5jbGVhcigpO3ZhciBjPXRoaXMuc2VsZWN0b3IrJ1tkYXRhLXRhcmdldD0iJytiKyciXSwnK3RoaXMuc2VsZWN0b3IrJ1tocmVmPSInK2IrJyJdJyxkPWEoYykucGFyZW50cygibGkiKS5hZGRDbGFzcygiYWN0aXZlIik7ZC5wYXJlbnQoIi5kcm9wZG93bi1tZW51IikubGVuZ3RoJiYoZD1kLmNsb3Nlc3QoImxpLmRyb3Bkb3duIikuYWRkQ2xhc3MoImFjdGl2ZSIpKSwKZC50cmlnZ2VyKCJhY3RpdmF0ZS5icy5zY3JvbGxzcHkiKX0sYi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXthKHRoaXMuc2VsZWN0b3IpLnBhcmVudHNVbnRpbCh0aGlzLm9wdGlvbnMudGFyZ2V0LCIuYWN0aXZlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpfTt2YXIgZD1hLmZuLnNjcm9sbHNweTthLmZuLnNjcm9sbHNweT1jLGEuZm4uc2Nyb2xsc3B5LkNvbnN0cnVjdG9yPWIsYS5mbi5zY3JvbGxzcHkubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnNjcm9sbHNweT1kLHRoaXN9LGEod2luZG93KS5vbigibG9hZC5icy5zY3JvbGxzcHkuZGF0YS1hcGkiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJzY3JvbGwiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpO2MuY2FsbChiLGIuZGF0YSgpKX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy50YWIiKTtlfHxkLmRhdGEoImJzLnRhYiIsZT1uZXcgYyh0aGlzKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCl9KX12YXIgYz1mdW5jdGlvbihiKXt0aGlzLmVsZW1lbnQ9YShiKX07Yy5WRVJTSU9OPSIzLjMuNSIsYy5UUkFOU0lUSU9OX0RVUkFUSU9OPTE1MCxjLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5lbGVtZW50LGM9Yi5jbG9zZXN0KCJ1bDpub3QoLmRyb3Bkb3duLW1lbnUpIiksZD1iLmRhdGEoInRhcmdldCIpO2lmKGR8fChkPWIuYXR0cigiaHJlZiIpLGQ9ZCYmZC5yZXBsYWNlKC8uKig/PSNbXlxzXSokKS8sIiIpKSwhYi5wYXJlbnQoImxpIikuaGFzQ2xhc3MoImFjdGl2ZSIpKXt2YXIgZT1jLmZpbmQoIi5hY3RpdmU6bGFzdCBhIiksZj1hLkV2ZW50KCJoaWRlLmJzLnRhYiIse3JlbGF0ZWRUYXJnZXQ6YlswXX0pLGc9YS5FdmVudCgic2hvdy5icy50YWIiLHtyZWxhdGVkVGFyZ2V0OmVbMF19KTtpZihlLnRyaWdnZXIoZiksYi50cmlnZ2VyKGcpLCFnLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYhZi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIGg9YShkKTt0aGlzLmFjdGl2YXRlKGIuY2xvc2VzdCgibGkiKSxjKSx0aGlzLmFjdGl2YXRlKGgsaC5wYXJlbnQoKSxmdW5jdGlvbigpe2UudHJpZ2dlcih7dHlwZToiaGlkZGVuLmJzLnRhYiIscmVsYXRlZFRhcmdldDpiWzBdfSksYi50cmlnZ2VyKHt0eXBlOiJzaG93bi5icy50YWIiLHJlbGF0ZWRUYXJnZXQ6ZVswXX0pfSl9fX0sYy5wcm90b3R5cGUuYWN0aXZhdGU9ZnVuY3Rpb24oYixkLGUpe2Z1bmN0aW9uIGYoKXtnLnJlbW92ZUNsYXNzKCJhY3RpdmUiKS5maW5kKCI+IC5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKS5lbmQoKS5maW5kKCdbZGF0YS10b2dnbGU9InRhYiJdJykuYXR0cigiYXJpYS1leHBhbmRlZCIsITEpLGIuYWRkQ2xhc3MoImFjdGl2ZSIpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0idGFiIl0nKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksaD8oYlswXS5vZmZzZXRXaWR0aCxiLmFkZENsYXNzKCJpbiIpKTpiLnJlbW92ZUNsYXNzKCJmYWRlIiksYi5wYXJlbnQoIi5kcm9wZG93bi1tZW51IikubGVuZ3RoJiZiLmNsb3Nlc3QoImxpLmRyb3Bkb3duIikuYWRkQ2xhc3MoImFjdGl2ZSIpLmVuZCgpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0idGFiIl0nKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksZSYmZSgpfXZhciBnPWQuZmluZCgiPiAuYWN0aXZlIiksaD1lJiZhLnN1cHBvcnQudHJhbnNpdGlvbiYmKGcubGVuZ3RoJiZnLmhhc0NsYXNzKCJmYWRlIil8fCEhZC5maW5kKCI+IC5mYWRlIikubGVuZ3RoKTtnLmxlbmd0aCYmaD9nLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixmKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjLlRSQU5TSVRJT05fRFVSQVRJT04pOmYoKSxnLnJlbW92ZUNsYXNzKCJpbiIpfTt2YXIgZD1hLmZuLnRhYjthLmZuLnRhYj1iLGEuZm4udGFiLkNvbnN0cnVjdG9yPWMsYS5mbi50YWIubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnRhYj1kLHRoaXN9O3ZhciBlPWZ1bmN0aW9uKGMpe2MucHJldmVudERlZmF1bHQoKSxiLmNhbGwoYSh0aGlzKSwic2hvdyIpfTthKGRvY3VtZW50KS5vbigiY2xpY2suYnMudGFiLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJ0YWIiXScsZSkub24oImNsaWNrLmJzLnRhYi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZT0icGlsbCJdJyxlKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmFmZml4IiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7ZXx8ZC5kYXRhKCJicy5hZmZpeCIsZT1uZXcgYyh0aGlzLGYpKSwic3RyaW5nIj09dHlwZW9mIGImJmVbYl0oKX0pfXZhciBjPWZ1bmN0aW9uKGIsZCl7dGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZCksdGhpcy4kdGFyZ2V0PWEodGhpcy5vcHRpb25zLnRhcmdldCkub24oInNjcm9sbC5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb24sdGhpcykpLm9uKCJjbGljay5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb25XaXRoRXZlbnRMb29wLHRoaXMpKSx0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5hZmZpeGVkPW51bGwsdGhpcy51bnBpbj1udWxsLHRoaXMucGlubmVkT2Zmc2V0PW51bGwsdGhpcy5jaGVja1Bvc2l0aW9uKCl9O2MuVkVSU0lPTj0iMy4zLjUiLGMuUkVTRVQ9ImFmZml4IGFmZml4LXRvcCBhZmZpeC1ib3R0b20iLGMuREVGQVVMVFM9e29mZnNldDowLHRhcmdldDp3aW5kb3d9LGMucHJvdG90eXBlLmdldFN0YXRlPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMuJHRhcmdldC5zY3JvbGxUb3AoKSxmPXRoaXMuJGVsZW1lbnQub2Zmc2V0KCksZz10aGlzLiR0YXJnZXQuaGVpZ2h0KCk7aWYobnVsbCE9YyYmInRvcCI9PXRoaXMuYWZmaXhlZClyZXR1cm4gYz5lPyJ0b3AiOiExO2lmKCJib3R0b20iPT10aGlzLmFmZml4ZWQpcmV0dXJuIG51bGwhPWM/ZSt0aGlzLnVucGluPD1mLnRvcD8hMToiYm90dG9tIjphLWQ+PWUrZz8hMToiYm90dG9tIjt2YXIgaD1udWxsPT10aGlzLmFmZml4ZWQsaT1oP2U6Zi50b3Asaj1oP2c6YjtyZXR1cm4gbnVsbCE9YyYmYz49ZT8idG9wIjpudWxsIT1kJiZpK2o+PWEtZD8iYm90dG9tIjohMX0sYy5wcm90b3R5cGUuZ2V0UGlubmVkT2Zmc2V0PWZ1bmN0aW9uKCl7aWYodGhpcy5waW5uZWRPZmZzZXQpcmV0dXJuIHRoaXMucGlubmVkT2Zmc2V0O3RoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoYy5SRVNFVCkuYWRkQ2xhc3MoImFmZml4Iik7dmFyIGE9dGhpcy4kdGFyZ2V0LnNjcm9sbFRvcCgpLGI9dGhpcy4kZWxlbWVudC5vZmZzZXQoKTtyZXR1cm4gdGhpcy5waW5uZWRPZmZzZXQ9Yi50b3AtYX0sYy5wcm90b3R5cGUuY2hlY2tQb3NpdGlvbldpdGhFdmVudExvb3A9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGEucHJveHkodGhpcy5jaGVja1Bvc2l0aW9uLHRoaXMpLDEpfSxjLnByb3RvdHlwZS5jaGVja1Bvc2l0aW9uPWZ1bmN0aW9uKCl7aWYodGhpcy4kZWxlbWVudC5pcygiOnZpc2libGUiKSl7dmFyIGI9dGhpcy4kZWxlbWVudC5oZWlnaHQoKSxkPXRoaXMub3B0aW9ucy5vZmZzZXQsZT1kLnRvcCxmPWQuYm90dG9tLGc9TWF0aC5tYXgoYShkb2N1bWVudCkuaGVpZ2h0KCksYShkb2N1bWVudC5ib2R5KS5oZWlnaHQoKSk7Im9iamVjdCIhPXR5cGVvZiBkJiYoZj1lPWQpLCJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1kLnRvcCh0aGlzLiRlbGVtZW50KSksImZ1bmN0aW9uIj09dHlwZW9mIGYmJihmPWQuYm90dG9tKHRoaXMuJGVsZW1lbnQpKTt2YXIgaD10aGlzLmdldFN0YXRlKGcsYixlLGYpO2lmKHRoaXMuYWZmaXhlZCE9aCl7bnVsbCE9dGhpcy51bnBpbiYmdGhpcy4kZWxlbWVudC5jc3MoInRvcCIsIiIpO3ZhciBpPSJhZmZpeCIrKGg/Ii0iK2g6IiIpLGo9YS5FdmVudChpKyIuYnMuYWZmaXgiKTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIoaiksai5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm47dGhpcy5hZmZpeGVkPWgsdGhpcy51bnBpbj0iYm90dG9tIj09aD90aGlzLmdldFBpbm5lZE9mZnNldCgpOm51bGwsdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyhjLlJFU0VUKS5hZGRDbGFzcyhpKS50cmlnZ2VyKGkucmVwbGFjZSgiYWZmaXgiLCJhZmZpeGVkIikrIi5icy5hZmZpeCIpfSJib3R0b20iPT1oJiZ0aGlzLiRlbGVtZW50Lm9mZnNldCh7dG9wOmctYi1mfSl9fTt2YXIgZD1hLmZuLmFmZml4O2EuZm4uYWZmaXg9YixhLmZuLmFmZml4LkNvbnN0cnVjdG9yPWMsYS5mbi5hZmZpeC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYWZmaXg9ZCx0aGlzfSxhKHdpbmRvdykub24oImxvYWQiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJhZmZpeCJdJykuZWFjaChmdW5jdGlvbigpe3ZhciBjPWEodGhpcyksZD1jLmRhdGEoKTtkLm9mZnNldD1kLm9mZnNldHx8e30sbnVsbCE9ZC5vZmZzZXRCb3R0b20mJihkLm9mZnNldC5ib3R0b209ZC5vZmZzZXRCb3R0b20pLG51bGwhPWQub2Zmc2V0VG9wJiYoZC5vZmZzZXQudG9wPWQub2Zmc2V0VG9wKSxiLmNhbGwoYyxkKX0pfSl9KGpRdWVyeSk7"></script>
<script src="data:application/javascript;base64,LyoqCiogQHByZXNlcnZlIEhUTUw1IFNoaXYgMy43LjIgfCBAYWZhcmthcyBAamRhbHRvbiBAam9uX25lYWwgQHJlbSB8IE1JVC9HUEwyIExpY2Vuc2VkCiovCi8vIE9ubHkgcnVuIHRoaXMgY29kZSBpbiBJRSA4CmlmICghIXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKCJNU0lFIDgiKSkgewohZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7dmFyIGM9YS5jcmVhdGVFbGVtZW50KCJwIiksZD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGEuZG9jdW1lbnRFbGVtZW50O3JldHVybiBjLmlubmVySFRNTD0ieDxzdHlsZT4iK2IrIjwvc3R5bGU+IixkLmluc2VydEJlZm9yZShjLmxhc3RDaGlsZCxkLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGQoKXt2YXIgYT10LmVsZW1lbnRzO3JldHVybiJzdHJpbmciPT10eXBlb2YgYT9hLnNwbGl0KCIgIik6YX1mdW5jdGlvbiBlKGEsYil7dmFyIGM9dC5lbGVtZW50czsic3RyaW5nIiE9dHlwZW9mIGMmJihjPWMuam9pbigiICIpKSwic3RyaW5nIiE9dHlwZW9mIGEmJihhPWEuam9pbigiICIpKSx0LmVsZW1lbnRzPWMrIiAiK2EsaihiKX1mdW5jdGlvbiBmKGEpe3ZhciBiPXNbYVtxXV07cmV0dXJuIGJ8fChiPXt9LHIrKyxhW3FdPXIsc1tyXT1iKSxifWZ1bmN0aW9uIGcoYSxjLGQpe2lmKGN8fChjPWIpLGwpcmV0dXJuIGMuY3JlYXRlRWxlbWVudChhKTtkfHwoZD1mKGMpKTt2YXIgZTtyZXR1cm4gZT1kLmNhY2hlW2FdP2QuY2FjaGVbYV0uY2xvbmVOb2RlKCk6cC50ZXN0KGEpPyhkLmNhY2hlW2FdPWQuY3JlYXRlRWxlbShhKSkuY2xvbmVOb2RlKCk6ZC5jcmVhdGVFbGVtKGEpLCFlLmNhbkhhdmVDaGlsZHJlbnx8by50ZXN0KGEpfHxlLnRhZ1Vybj9lOmQuZnJhZy5hcHBlbmRDaGlsZChlKX1mdW5jdGlvbiBoKGEsYyl7aWYoYXx8KGE9YiksbClyZXR1cm4gYS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Yz1jfHxmKGEpO2Zvcih2YXIgZT1jLmZyYWcuY2xvbmVOb2RlKCksZz0wLGg9ZCgpLGk9aC5sZW5ndGg7aT5nO2crKyllLmNyZWF0ZUVsZW1lbnQoaFtnXSk7cmV0dXJuIGV9ZnVuY3Rpb24gaShhLGIpe2IuY2FjaGV8fChiLmNhY2hlPXt9LGIuY3JlYXRlRWxlbT1hLmNyZWF0ZUVsZW1lbnQsYi5jcmVhdGVGcmFnPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCxiLmZyYWc9Yi5jcmVhdGVGcmFnKCkpLGEuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihjKXtyZXR1cm4gdC5zaGl2TWV0aG9kcz9nKGMsYSxiKTpiLmNyZWF0ZUVsZW0oYyl9LGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudD1GdW5jdGlvbigiaCxmIiwicmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49Zi5jbG9uZU5vZGUoKSxjPW4uY3JlYXRlRWxlbWVudDtoLnNoaXZNZXRob2RzJiYoIitkKCkuam9pbigpLnJlcGxhY2UoL1tcd1wtOl0rL2csZnVuY3Rpb24oYSl7cmV0dXJuIGIuY3JlYXRlRWxlbShhKSxiLmZyYWcuY3JlYXRlRWxlbWVudChhKSwnYygiJythKyciKSd9KSsiKTtyZXR1cm4gbn0iKSh0LGIuZnJhZyl9ZnVuY3Rpb24gaihhKXthfHwoYT1iKTt2YXIgZD1mKGEpO3JldHVybiF0LnNoaXZDU1N8fGt8fGQuaGFzQ1NTfHwoZC5oYXNDU1M9ISFjKGEsImFydGljbGUsYXNpZGUsZGlhbG9nLGZpZ2NhcHRpb24sZmlndXJlLGZvb3RlcixoZWFkZXIsaGdyb3VwLG1haW4sbmF2LHNlY3Rpb257ZGlzcGxheTpibG9ja31tYXJre2JhY2tncm91bmQ6I0ZGMDtjb2xvcjojMDAwfXRlbXBsYXRle2Rpc3BsYXk6bm9uZX0iKSksbHx8aShhLGQpLGF9dmFyIGssbCxtPSIzLjcuMiIsbj1hLmh0bWw1fHx7fSxvPS9ePHxeKD86YnV0dG9ufG1hcHxzZWxlY3R8dGV4dGFyZWF8b2JqZWN0fGlmcmFtZXxvcHRpb258b3B0Z3JvdXApJC9pLHA9L14oPzphfGJ8Y29kZXxkaXZ8ZmllbGRzZXR8aDF8aDJ8aDN8aDR8aDV8aDZ8aXxsYWJlbHxsaXxvbHxwfHF8c3BhbnxzdHJvbmd8c3R5bGV8dGFibGV8dGJvZHl8dGR8dGh8dHJ8dWwpJC9pLHE9Il9odG1sNXNoaXYiLHI9MCxzPXt9OyFmdW5jdGlvbigpe3RyeXt2YXIgYT1iLmNyZWF0ZUVsZW1lbnQoImEiKTthLmlubmVySFRNTD0iPHh5ej48L3h5ej4iLGs9ImhpZGRlbiJpbiBhLGw9MT09YS5jaGlsZE5vZGVzLmxlbmd0aHx8ZnVuY3Rpb24oKXtiLmNyZWF0ZUVsZW1lbnQoImEiKTt2YXIgYT1iLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGEuY2xvbmVOb2RlfHwidW5kZWZpbmVkIj09dHlwZW9mIGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudHx8InVuZGVmaW5lZCI9PXR5cGVvZiBhLmNyZWF0ZUVsZW1lbnR9KCl9Y2F0Y2goYyl7az0hMCxsPSEwfX0oKTt2YXIgdD17ZWxlbWVudHM6bi5lbGVtZW50c3x8ImFiYnIgYXJ0aWNsZSBhc2lkZSBhdWRpbyBiZGkgY2FudmFzIGRhdGEgZGF0YWxpc3QgZGV0YWlscyBkaWFsb2cgZmlnY2FwdGlvbiBmaWd1cmUgZm9vdGVyIGhlYWRlciBoZ3JvdXAgbWFpbiBtYXJrIG1ldGVyIG5hdiBvdXRwdXQgcGljdHVyZSBwcm9ncmVzcyBzZWN0aW9uIHN1bW1hcnkgdGVtcGxhdGUgdGltZSB2aWRlbyIsdmVyc2lvbjptLHNoaXZDU1M6bi5zaGl2Q1NTIT09ITEsc3VwcG9ydHNVbmtub3duRWxlbWVudHM6bCxzaGl2TWV0aG9kczpuLnNoaXZNZXRob2RzIT09ITEsdHlwZToiZGVmYXVsdCIsc2hpdkRvY3VtZW50OmosY3JlYXRlRWxlbWVudDpnLGNyZWF0ZURvY3VtZW50RnJhZ21lbnQ6aCxhZGRFbGVtZW50czplfTthLmh0bWw1PXQsaihiKX0odGhpcyxkb2N1bWVudCk7Cn07Cg=="></script>
<script src="data:application/javascript;base64,LyohIFJlc3BvbmQuanMgdjEuNC4yOiBtaW4vbWF4LXdpZHRoIG1lZGlhIHF1ZXJ5IHBvbHlmaWxsICogQ29weXJpZ2h0IDIwMTMgU2NvdHQgSmVobAogKiBMaWNlbnNlZCB1bmRlciBodHRwczovL2dpdGh1Yi5jb20vc2NvdHRqZWhsL1Jlc3BvbmQvYmxvYi9tYXN0ZXIvTElDRU5TRS1NSVQKICogICovCgovLyBPbmx5IHJ1biB0aGlzIGNvZGUgaW4gSUUgOAppZiAoISF3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgiTVNJRSA4IikpIHsKIWZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjthLm1hdGNoTWVkaWE9YS5tYXRjaE1lZGlhfHxmdW5jdGlvbihhKXt2YXIgYixjPWEuZG9jdW1lbnRFbGVtZW50LGQ9Yy5maXJzdEVsZW1lbnRDaGlsZHx8Yy5maXJzdENoaWxkLGU9YS5jcmVhdGVFbGVtZW50KCJib2R5IiksZj1hLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBmLmlkPSJtcS10ZXN0LTEiLGYuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7dG9wOi0xMDBlbSIsZS5zdHlsZS5iYWNrZ3JvdW5kPSJub25lIixlLmFwcGVuZENoaWxkKGYpLGZ1bmN0aW9uKGEpe3JldHVybiBmLmlubmVySFRNTD0nJnNoeTs8c3R5bGUgbWVkaWE9IicrYSsnIj4gI21xLXRlc3QtMSB7IHdpZHRoOiA0MnB4OyB9PC9zdHlsZT4nLGMuaW5zZXJ0QmVmb3JlKGUsZCksYj00Mj09PWYub2Zmc2V0V2lkdGgsYy5yZW1vdmVDaGlsZChlKSx7bWF0Y2hlczpiLG1lZGlhOmF9fX0oYS5kb2N1bWVudCl9KHRoaXMpLGZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKCl7dSghMCl9dmFyIGM9e307YS5yZXNwb25kPWMsYy51cGRhdGU9ZnVuY3Rpb24oKXt9O3ZhciBkPVtdLGU9ZnVuY3Rpb24oKXt2YXIgYj0hMTt0cnl7Yj1uZXcgYS5YTUxIdHRwUmVxdWVzdH1jYXRjaChjKXtiPW5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGJ9fSgpLGY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1lKCk7YyYmKGMub3BlbigiR0VUIixhLCEwKSxjLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQhPT1jLnJlYWR5U3RhdGV8fDIwMCE9PWMuc3RhdHVzJiYzMDQhPT1jLnN0YXR1c3x8YihjLnJlc3BvbnNlVGV4dCl9LDQhPT1jLnJlYWR5U3RhdGUmJmMuc2VuZChudWxsKSl9O2lmKGMuYWpheD1mLGMucXVldWU9ZCxjLnJlZ2V4PXttZWRpYTovQG1lZGlhW15ce10rXHsoW15ce1x9XSpce1teXH1ce10qXH0pKy9naSxrZXlmcmFtZXM6L0AoPzpcLSg/Om98bW96fHdlYmtpdClcLSk/a2V5ZnJhbWVzW15ce10rXHsoPzpbXlx7XH1dKlx7W15cfVx7XSpcfSkrW15cfV0qXH0vZ2ksdXJsczovKHVybFwoKVsnIl0/KFteXC9cKSciXVteOlwpJyJdKylbJyJdPyhcKSkvZyxmaW5kU3R5bGVzOi9AbWVkaWEgKihbXlx7XSspXHsoW1xTXHNdKz8pJC8sb25seTovKG9ubHlccyspPyhbYS16QS1aXSspXHM/LyxtaW53Oi9cKFtcc10qbWluXC13aWR0aFxzKjpbXHNdKihbXHNdKlswLTlcLl0rKShweHxlbSlbXHNdKlwpLyxtYXh3Oi9cKFtcc10qbWF4XC13aWR0aFxzKjpbXHNdKihbXHNdKlswLTlcLl0rKShweHxlbSlbXHNdKlwpL30sYy5tZWRpYVF1ZXJpZXNTdXBwb3J0ZWQ9YS5tYXRjaE1lZGlhJiZudWxsIT09YS5tYXRjaE1lZGlhKCJvbmx5IGFsbCIpJiZhLm1hdGNoTWVkaWEoIm9ubHkgYWxsIikubWF0Y2hlcywhYy5tZWRpYVF1ZXJpZXNTdXBwb3J0ZWQpe3ZhciBnLGgsaSxqPWEuZG9jdW1lbnQsaz1qLmRvY3VtZW50RWxlbWVudCxsPVtdLG09W10sbj1bXSxvPXt9LHA9MzAscT1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGsscj1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJiYXNlIilbMF0scz1xLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIiksdD1mdW5jdGlvbigpe3ZhciBhLGI9ai5jcmVhdGVFbGVtZW50KCJkaXYiKSxjPWouYm9keSxkPWsuc3R5bGUuZm9udFNpemUsZT1jJiZjLnN0eWxlLmZvbnRTaXplLGY9ITE7cmV0dXJuIGIuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Zm9udC1zaXplOjFlbTt3aWR0aDoxZW0iLGN8fChjPWY9ai5jcmVhdGVFbGVtZW50KCJib2R5IiksYy5zdHlsZS5iYWNrZ3JvdW5kPSJub25lIiksay5zdHlsZS5mb250U2l6ZT0iMTAwJSIsYy5zdHlsZS5mb250U2l6ZT0iMTAwJSIsYy5hcHBlbmRDaGlsZChiKSxmJiZrLmluc2VydEJlZm9yZShjLGsuZmlyc3RDaGlsZCksYT1iLm9mZnNldFdpZHRoLGY/ay5yZW1vdmVDaGlsZChjKTpjLnJlbW92ZUNoaWxkKGIpLGsuc3R5bGUuZm9udFNpemU9ZCxlJiYoYy5zdHlsZS5mb250U2l6ZT1lKSxhPWk9cGFyc2VGbG9hdChhKX0sdT1mdW5jdGlvbihiKXt2YXIgYz0iY2xpZW50V2lkdGgiLGQ9a1tjXSxlPSJDU1MxQ29tcGF0Ij09PWouY29tcGF0TW9kZSYmZHx8ai5ib2R5W2NdfHxkLGY9e30sbz1zW3MubGVuZ3RoLTFdLHI9KG5ldyBEYXRlKS5nZXRUaW1lKCk7aWYoYiYmZyYmcD5yLWcpcmV0dXJuIGEuY2xlYXJUaW1lb3V0KGgpLGg9YS5zZXRUaW1lb3V0KHUscCksdm9pZCAwO2c9cjtmb3IodmFyIHYgaW4gbClpZihsLmhhc093blByb3BlcnR5KHYpKXt2YXIgdz1sW3ZdLHg9dy5taW53LHk9dy5tYXh3LHo9bnVsbD09PXgsQT1udWxsPT09eSxCPSJlbSI7eCYmKHg9cGFyc2VGbG9hdCh4KSooeC5pbmRleE9mKEIpPi0xP2l8fHQoKToxKSkseSYmKHk9cGFyc2VGbG9hdCh5KSooeS5pbmRleE9mKEIpPi0xP2l8fHQoKToxKSksdy5oYXNxdWVyeSYmKHomJkF8fCEoenx8ZT49eCl8fCEoQXx8eT49ZSkpfHwoZlt3Lm1lZGlhXXx8KGZbdy5tZWRpYV09W10pLGZbdy5tZWRpYV0ucHVzaChtW3cucnVsZXNdKSl9Zm9yKHZhciBDIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShDKSYmbltDXSYmbltDXS5wYXJlbnROb2RlPT09cSYmcS5yZW1vdmVDaGlsZChuW0NdKTtuLmxlbmd0aD0wO2Zvcih2YXIgRCBpbiBmKWlmKGYuaGFzT3duUHJvcGVydHkoRCkpe3ZhciBFPWouY3JlYXRlRWxlbWVudCgic3R5bGUiKSxGPWZbRF0uam9pbigiXG4iKTtFLnR5cGU9InRleHQvY3NzIixFLm1lZGlhPUQscS5pbnNlcnRCZWZvcmUoRSxvLm5leHRTaWJsaW5nKSxFLnN0eWxlU2hlZXQ/RS5zdHlsZVNoZWV0LmNzc1RleHQ9RjpFLmFwcGVuZENoaWxkKGouY3JlYXRlVGV4dE5vZGUoRikpLG4ucHVzaChFKX19LHY9ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPWEucmVwbGFjZShjLnJlZ2V4LmtleWZyYW1lcywiIikubWF0Y2goYy5yZWdleC5tZWRpYSksZj1lJiZlLmxlbmd0aHx8MDtiPWIuc3Vic3RyaW5nKDAsYi5sYXN0SW5kZXhPZigiLyIpKTt2YXIgZz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGMucmVnZXgudXJscywiJDEiK2IrIiQyJDMiKX0saD0hZiYmZDtiLmxlbmd0aCYmKGIrPSIvIiksaCYmKGY9MSk7Zm9yKHZhciBpPTA7Zj5pO2krKyl7dmFyIGosayxuLG87aD8oaj1kLG0ucHVzaChnKGEpKSk6KGo9ZVtpXS5tYXRjaChjLnJlZ2V4LmZpbmRTdHlsZXMpJiZSZWdFeHAuJDEsbS5wdXNoKFJlZ0V4cC4kMiYmZyhSZWdFeHAuJDIpKSksbj1qLnNwbGl0KCIsIiksbz1uLmxlbmd0aDtmb3IodmFyIHA9MDtvPnA7cCsrKWs9bltwXSxsLnB1c2goe21lZGlhOmsuc3BsaXQoIigiKVswXS5tYXRjaChjLnJlZ2V4Lm9ubHkpJiZSZWdFeHAuJDJ8fCJhbGwiLHJ1bGVzOm0ubGVuZ3RoLTEsaGFzcXVlcnk6ay5pbmRleE9mKCIoIik+LTEsbWludzprLm1hdGNoKGMucmVnZXgubWludykmJnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsoUmVnRXhwLiQyfHwiIiksbWF4dzprLm1hdGNoKGMucmVnZXgubWF4dykmJnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsoUmVnRXhwLiQyfHwiIil9KX11KCl9LHc9ZnVuY3Rpb24oKXtpZihkLmxlbmd0aCl7dmFyIGI9ZC5zaGlmdCgpO2YoYi5ocmVmLGZ1bmN0aW9uKGMpe3YoYyxiLmhyZWYsYi5tZWRpYSksb1tiLmhyZWZdPSEwLGEuc2V0VGltZW91dChmdW5jdGlvbigpe3coKX0sMCl9KX19LHg9ZnVuY3Rpb24oKXtmb3IodmFyIGI9MDtiPHMubGVuZ3RoO2IrKyl7dmFyIGM9c1tiXSxlPWMuaHJlZixmPWMubWVkaWEsZz1jLnJlbCYmInN0eWxlc2hlZXQiPT09Yy5yZWwudG9Mb3dlckNhc2UoKTtlJiZnJiYhb1tlXSYmKGMuc3R5bGVTaGVldCYmYy5zdHlsZVNoZWV0LnJhd0Nzc1RleHQ/KHYoYy5zdHlsZVNoZWV0LnJhd0Nzc1RleHQsZSxmKSxvW2VdPSEwKTooIS9eKFthLXpBLVo6XSpcL1wvKS8udGVzdChlKSYmIXJ8fGUucmVwbGFjZShSZWdFeHAuJDEsIiIpLnNwbGl0KCIvIilbMF09PT1hLmxvY2F0aW9uLmhvc3QpJiYoIi8vIj09PWUuc3Vic3RyaW5nKDAsMikmJihlPWEubG9jYXRpb24ucHJvdG9jb2wrZSksZC5wdXNoKHtocmVmOmUsbWVkaWE6Zn0pKSl9dygpfTt4KCksYy51cGRhdGU9eCxjLmdldEVtVmFsdWU9dCxhLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLGIsITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9ucmVzaXplIixiKX19KHRoaXMpOwp9Owo="></script>
<style>h1 {font-size: 34px;}
h1.title {font-size: 38px;}
h2 {font-size: 30px;}
h3 {font-size: 24px;}
h4 {font-size: 18px;}
h5 {font-size: 16px;}
h6 {font-size: 12px;}
code {color: inherit; background-color: rgba(0, 0, 0, 0.04);}
pre:not([class]) { background-color: white }</style>
<script src="data:application/javascript;base64,LyohIGpRdWVyeSBVSSAtIHYxLjExLjQgLSAyMDE2LTAxLTA1CiogaHR0cDovL2pxdWVyeXVpLmNvbQoqIEluY2x1ZGVzOiBjb3JlLmpzLCB3aWRnZXQuanMsIG1vdXNlLmpzLCBwb3NpdGlvbi5qcywgZHJhZ2dhYmxlLmpzLCBkcm9wcGFibGUuanMsIHJlc2l6YWJsZS5qcywgc2VsZWN0YWJsZS5qcywgc29ydGFibGUuanMsIGFjY29yZGlvbi5qcywgYXV0b2NvbXBsZXRlLmpzLCBidXR0b24uanMsIGRpYWxvZy5qcywgbWVudS5qcywgcHJvZ3Jlc3NiYXIuanMsIHNlbGVjdG1lbnUuanMsIHNsaWRlci5qcywgc3Bpbm5lci5qcywgdGFicy5qcywgdG9vbHRpcC5qcywgZWZmZWN0LmpzLCBlZmZlY3QtYmxpbmQuanMsIGVmZmVjdC1ib3VuY2UuanMsIGVmZmVjdC1jbGlwLmpzLCBlZmZlY3QtZHJvcC5qcywgZWZmZWN0LWV4cGxvZGUuanMsIGVmZmVjdC1mYWRlLmpzLCBlZmZlY3QtZm9sZC5qcywgZWZmZWN0LWhpZ2hsaWdodC5qcywgZWZmZWN0LXB1ZmYuanMsIGVmZmVjdC1wdWxzYXRlLmpzLCBlZmZlY3Qtc2NhbGUuanMsIGVmZmVjdC1zaGFrZS5qcywgZWZmZWN0LXNpemUuanMsIGVmZmVjdC1zbGlkZS5qcywgZWZmZWN0LXRyYW5zZmVyLmpzCiogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnM7IExpY2Vuc2VkIE1JVCAqLwoKKGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5Il0sZSk6ZShqUXVlcnkpfSkoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LHMpe3ZhciBuLGEsbyxyPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iYXJlYSI9PT1yPyhuPXQucGFyZW50Tm9kZSxhPW4ubmFtZSx0LmhyZWYmJmEmJiJtYXAiPT09bi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPyhvPWUoImltZ1t1c2VtYXA9JyMiK2ErIiddIilbMF0sISFvJiZpKG8pKTohMSk6KC9eKGlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvLnRlc3Qocik/IXQuZGlzYWJsZWQ6ImEiPT09cj90LmhyZWZ8fHM6cykmJmkodCl9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gZS5leHByLmZpbHRlcnMudmlzaWJsZSh0KSYmIWUodCkucGFyZW50cygpLmFkZEJhY2soKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4iaGlkZGVuIj09PWUuY3NzKHRoaXMsInZpc2liaWxpdHkiKX0pLmxlbmd0aH1mdW5jdGlvbiBzKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMuZWxlbWVudC52YWwoKTtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9yZWZyZXNoKCksdCE9PXRoaXMuZWxlbWVudC52YWwoKSYmdGhpcy5fdHJpZ2dlcigiY2hhbmdlIil9fWUudWk9ZS51aXx8e30sZS5leHRlbmQoZS51aSx7dmVyc2lvbjoiMS4xMS40IixrZXlDb2RlOntCQUNLU1BBQ0U6OCxDT01NQToxODgsREVMRVRFOjQ2LERPV046NDAsRU5EOjM1LEVOVEVSOjEzLEVTQ0FQRToyNyxIT01FOjM2LExFRlQ6MzcsUEFHRV9ET1dOOjM0LFBBR0VfVVA6MzMsUEVSSU9EOjE5MCxSSUdIVDozOSxTUEFDRTozMixUQUI6OSxVUDozOH19KSxlLmZuLmV4dGVuZCh7c2Nyb2xsUGFyZW50OmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuY3NzKCJwb3NpdGlvbiIpLHM9ImFic29sdXRlIj09PWksbj10Py8oYXV0b3xzY3JvbGx8aGlkZGVuKS86LyhhdXRvfHNjcm9sbCkvLGE9dGhpcy5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTtyZXR1cm4gcyYmInN0YXRpYyI9PT10LmNzcygicG9zaXRpb24iKT8hMTpuLnRlc3QodC5jc3MoIm92ZXJmbG93IikrdC5jc3MoIm92ZXJmbG93LXkiKSt0LmNzcygib3ZlcmZsb3cteCIpKX0pLmVxKDApO3JldHVybiJmaXhlZCIhPT1pJiZhLmxlbmd0aD9hOmUodGhpc1swXS5vd25lckRvY3VtZW50fHxkb2N1bWVudCl9LHVuaXF1ZUlkOmZ1bmN0aW9uKCl7dmFyIGU9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5pZHx8KHRoaXMuaWQ9InVpLWlkLSIrICsrZSl9KX19KCkscmVtb3ZlVW5pcXVlSWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7L151aS1pZC1cZCskLy50ZXN0KHRoaXMuaWQpJiZlKHRoaXMpLnJlbW92ZUF0dHIoImlkIil9KX19KSxlLmV4dGVuZChlLmV4cHJbIjoiXSx7ZGF0YTplLmV4cHIuY3JlYXRlUHNldWRvP2UuZXhwci5jcmVhdGVQc2V1ZG8oZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiEhZS5kYXRhKGksdCl9fSk6ZnVuY3Rpb24odCxpLHMpe3JldHVybiEhZS5kYXRhKHQsc1szXSl9LGZvY3VzYWJsZTpmdW5jdGlvbihpKXtyZXR1cm4gdChpLCFpc05hTihlLmF0dHIoaSwidGFiaW5kZXgiKSkpfSx0YWJiYWJsZTpmdW5jdGlvbihpKXt2YXIgcz1lLmF0dHIoaSwidGFiaW5kZXgiKSxuPWlzTmFOKHMpO3JldHVybihufHxzPj0wKSYmdChpLCFuKX19KSxlKCI8YT4iKS5vdXRlcldpZHRoKDEpLmpxdWVyeXx8ZS5lYWNoKFsiV2lkdGgiLCJIZWlnaHQiXSxmdW5jdGlvbih0LGkpe2Z1bmN0aW9uIHModCxpLHMsYSl7cmV0dXJuIGUuZWFjaChuLGZ1bmN0aW9uKCl7aS09cGFyc2VGbG9hdChlLmNzcyh0LCJwYWRkaW5nIit0aGlzKSl8fDAscyYmKGktPXBhcnNlRmxvYXQoZS5jc3ModCwiYm9yZGVyIit0aGlzKyJXaWR0aCIpKXx8MCksYSYmKGktPXBhcnNlRmxvYXQoZS5jc3ModCwibWFyZ2luIit0aGlzKSl8fDApfSksaX12YXIgbj0iV2lkdGgiPT09aT9bIkxlZnQiLCJSaWdodCJdOlsiVG9wIiwiQm90dG9tIl0sYT1pLnRvTG93ZXJDYXNlKCksbz17aW5uZXJXaWR0aDplLmZuLmlubmVyV2lkdGgsaW5uZXJIZWlnaHQ6ZS5mbi5pbm5lckhlaWdodCxvdXRlcldpZHRoOmUuZm4ub3V0ZXJXaWR0aCxvdXRlckhlaWdodDplLmZuLm91dGVySGVpZ2h0fTtlLmZuWyJpbm5lciIraV09ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQ/b1siaW5uZXIiK2ldLmNhbGwodGhpcyk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZSh0aGlzKS5jc3MoYSxzKHRoaXMsdCkrInB4Iil9KX0sZS5mblsib3V0ZXIiK2ldPWZ1bmN0aW9uKHQsbil7cmV0dXJuIm51bWJlciIhPXR5cGVvZiB0P29bIm91dGVyIitpXS5jYWxsKHRoaXMsdCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZSh0aGlzKS5jc3MoYSxzKHRoaXMsdCwhMCxuKSsicHgiKX0pfX0pLGUuZm4uYWRkQmFja3x8KGUuZm4uYWRkQmFjaz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09ZT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSl9KSxlKCI8YT4iKS5kYXRhKCJhLWIiLCJhIikucmVtb3ZlRGF0YSgiYS1iIikuZGF0YSgiYS1iIikmJihlLmZuLnJlbW92ZURhdGE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3QuY2FsbCh0aGlzLGUuY2FtZWxDYXNlKGkpKTp0LmNhbGwodGhpcyl9fShlLmZuLnJlbW92ZURhdGEpKSxlLnVpLmllPSEhL21zaWUgW1x3Ll0rLy5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSksZS5mbi5leHRlbmQoe2ZvY3VzOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihpLHMpe3JldHVybiJudW1iZXIiPT10eXBlb2YgaT90aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD10aGlzO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtlKHQpLmZvY3VzKCkscyYmcy5jYWxsKHQpfSxpKX0pOnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oZS5mbi5mb2N1cyksZGlzYWJsZVNlbGVjdGlvbjpmdW5jdGlvbigpe3ZhciBlPSJvbnNlbGVjdHN0YXJ0ImluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpPyJzZWxlY3RzdGFydCI6Im1vdXNlZG93biI7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYmluZChlKyIudWktZGlzYWJsZVNlbGVjdGlvbiIsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpfSl9fSgpLGVuYWJsZVNlbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuYmluZCgiLnVpLWRpc2FibGVTZWxlY3Rpb24iKX0sekluZGV4OmZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9PXQpcmV0dXJuIHRoaXMuY3NzKCJ6SW5kZXgiLHQpO2lmKHRoaXMubGVuZ3RoKWZvcih2YXIgaSxzLG49ZSh0aGlzWzBdKTtuLmxlbmd0aCYmblswXSE9PWRvY3VtZW50Oyl7aWYoaT1uLmNzcygicG9zaXRpb24iKSwoImFic29sdXRlIj09PWl8fCJyZWxhdGl2ZSI9PT1pfHwiZml4ZWQiPT09aSkmJihzPXBhcnNlSW50KG4uY3NzKCJ6SW5kZXgiKSwxMCksIWlzTmFOKHMpJiYwIT09cykpcmV0dXJuIHM7bj1uLnBhcmVudCgpfXJldHVybiAwfX0pLGUudWkucGx1Z2luPXthZGQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuLGE9ZS51aVt0XS5wcm90b3R5cGU7Zm9yKG4gaW4gcylhLnBsdWdpbnNbbl09YS5wbHVnaW5zW25dfHxbXSxhLnBsdWdpbnNbbl0ucHVzaChbaSxzW25dXSl9LGNhbGw6ZnVuY3Rpb24oZSx0LGkscyl7dmFyIG4sYT1lLnBsdWdpbnNbdF07aWYoYSYmKHN8fGUuZWxlbWVudFswXS5wYXJlbnROb2RlJiYxMSE9PWUuZWxlbWVudFswXS5wYXJlbnROb2RlLm5vZGVUeXBlKSlmb3Iobj0wO2EubGVuZ3RoPm47bisrKWUub3B0aW9uc1thW25dWzBdXSYmYVtuXVsxXS5hcHBseShlLmVsZW1lbnQsaSl9fTt2YXIgbj0wLGE9QXJyYXkucHJvdG90eXBlLnNsaWNlO2UuY2xlYW5EYXRhPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcyxuLGE7Zm9yKGE9MDtudWxsIT0obj1pW2FdKTthKyspdHJ5e3M9ZS5fZGF0YShuLCJldmVudHMiKSxzJiZzLnJlbW92ZSYmZShuKS50cmlnZ2VySGFuZGxlcigicmVtb3ZlIil9Y2F0Y2gobyl7fXQoaSl9fShlLmNsZWFuRGF0YSksZS53aWRnZXQ9ZnVuY3Rpb24odCxpLHMpe3ZhciBuLGEsbyxyLGg9e30sbD10LnNwbGl0KCIuIilbMF07cmV0dXJuIHQ9dC5zcGxpdCgiLiIpWzFdLG49bCsiLSIrdCxzfHwocz1pLGk9ZS5XaWRnZXQpLGUuZXhwclsiOiJdW24udG9Mb3dlckNhc2UoKV09ZnVuY3Rpb24odCl7cmV0dXJuISFlLmRhdGEodCxuKX0sZVtsXT1lW2xdfHx7fSxhPWVbbF1bdF0sbz1lW2xdW3RdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2NyZWF0ZVdpZGdldD8oYXJndW1lbnRzLmxlbmd0aCYmdGhpcy5fY3JlYXRlV2lkZ2V0KGUsdCksdm9pZCAwKTpuZXcgbyhlLHQpfSxlLmV4dGVuZChvLGEse3ZlcnNpb246cy52ZXJzaW9uLF9wcm90bzplLmV4dGVuZCh7fSxzKSxfY2hpbGRDb25zdHJ1Y3RvcnM6W119KSxyPW5ldyBpLHIub3B0aW9ucz1lLndpZGdldC5leHRlbmQoe30sci5vcHRpb25zKSxlLmVhY2gocyxmdW5jdGlvbih0LHMpe3JldHVybiBlLmlzRnVuY3Rpb24ocyk/KGhbdF09ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbigpe3JldHVybiBpLnByb3RvdHlwZVt0XS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LG49ZnVuY3Rpb24oZSl7cmV0dXJuIGkucHJvdG90eXBlW3RdLmFwcGx5KHRoaXMsZSl9O3JldHVybiBmdW5jdGlvbigpe3ZhciB0LGk9dGhpcy5fc3VwZXIsYT10aGlzLl9zdXBlckFwcGx5O3JldHVybiB0aGlzLl9zdXBlcj1lLHRoaXMuX3N1cGVyQXBwbHk9bix0PXMuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX3N1cGVyPWksdGhpcy5fc3VwZXJBcHBseT1hLHR9fSgpLHZvaWQgMCk6KGhbdF09cyx2b2lkIDApfSksby5wcm90b3R5cGU9ZS53aWRnZXQuZXh0ZW5kKHIse3dpZGdldEV2ZW50UHJlZml4OmE/ci53aWRnZXRFdmVudFByZWZpeHx8dDp0fSxoLHtjb25zdHJ1Y3RvcjpvLG5hbWVzcGFjZTpsLHdpZGdldE5hbWU6dCx3aWRnZXRGdWxsTmFtZTpufSksYT8oZS5lYWNoKGEuX2NoaWxkQ29uc3RydWN0b3JzLGZ1bmN0aW9uKHQsaSl7dmFyIHM9aS5wcm90b3R5cGU7ZS53aWRnZXQocy5uYW1lc3BhY2UrIi4iK3Mud2lkZ2V0TmFtZSxvLGkuX3Byb3RvKX0pLGRlbGV0ZSBhLl9jaGlsZENvbnN0cnVjdG9ycyk6aS5fY2hpbGRDb25zdHJ1Y3RvcnMucHVzaChvKSxlLndpZGdldC5icmlkZ2UodCxvKSxvfSxlLndpZGdldC5leHRlbmQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBpLHMsbj1hLmNhbGwoYXJndW1lbnRzLDEpLG89MCxyPW4ubGVuZ3RoO3I+bztvKyspZm9yKGkgaW4gbltvXSlzPW5bb11baV0sbltvXS5oYXNPd25Qcm9wZXJ0eShpKSYmdm9pZCAwIT09cyYmKHRbaV09ZS5pc1BsYWluT2JqZWN0KHMpP2UuaXNQbGFpbk9iamVjdCh0W2ldKT9lLndpZGdldC5leHRlbmQoe30sdFtpXSxzKTplLndpZGdldC5leHRlbmQoe30scyk6cyk7cmV0dXJuIHR9LGUud2lkZ2V0LmJyaWRnZT1mdW5jdGlvbih0LGkpe3ZhciBzPWkucHJvdG90eXBlLndpZGdldEZ1bGxOYW1lfHx0O2UuZm5bdF09ZnVuY3Rpb24obil7dmFyIG89InN0cmluZyI9PXR5cGVvZiBuLHI9YS5jYWxsKGFyZ3VtZW50cywxKSxoPXRoaXM7cmV0dXJuIG8/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGksYT1lLmRhdGEodGhpcyxzKTtyZXR1cm4iaW5zdGFuY2UiPT09bj8oaD1hLCExKTphP2UuaXNGdW5jdGlvbihhW25dKSYmIl8iIT09bi5jaGFyQXQoMCk/KGk9YVtuXS5hcHBseShhLHIpLGkhPT1hJiZ2b2lkIDAhPT1pPyhoPWkmJmkuanF1ZXJ5P2gucHVzaFN0YWNrKGkuZ2V0KCkpOmksITEpOnZvaWQgMCk6ZS5lcnJvcigibm8gc3VjaCBtZXRob2QgJyIrbisiJyBmb3IgIit0KyIgd2lkZ2V0IGluc3RhbmNlIik6ZS5lcnJvcigiY2Fubm90IGNhbGwgbWV0aG9kcyBvbiAiK3QrIiBwcmlvciB0byBpbml0aWFsaXphdGlvbjsgIisiYXR0ZW1wdGVkIHRvIGNhbGwgbWV0aG9kICciK24rIiciKX0pOihyLmxlbmd0aCYmKG49ZS53aWRnZXQuZXh0ZW5kLmFwcGx5KG51bGwsW25dLmNvbmNhdChyKSkpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUuZGF0YSh0aGlzLHMpO3Q/KHQub3B0aW9uKG58fHt9KSx0Ll9pbml0JiZ0Ll9pbml0KCkpOmUuZGF0YSh0aGlzLHMsbmV3IGkobix0aGlzKSl9KSksaH19LGUuV2lkZ2V0PWZ1bmN0aW9uKCl7fSxlLldpZGdldC5fY2hpbGRDb25zdHJ1Y3RvcnM9W10sZS5XaWRnZXQucHJvdG90eXBlPXt3aWRnZXROYW1lOiJ3aWRnZXQiLHdpZGdldEV2ZW50UHJlZml4OiIiLGRlZmF1bHRFbGVtZW50OiI8ZGl2PiIsb3B0aW9uczp7ZGlzYWJsZWQ6ITEsY3JlYXRlOm51bGx9LF9jcmVhdGVXaWRnZXQ6ZnVuY3Rpb24odCxpKXtpPWUoaXx8dGhpcy5kZWZhdWx0RWxlbWVudHx8dGhpcylbMF0sdGhpcy5lbGVtZW50PWUoaSksdGhpcy51dWlkPW4rKyx0aGlzLmV2ZW50TmFtZXNwYWNlPSIuIit0aGlzLndpZGdldE5hbWUrdGhpcy51dWlkLHRoaXMuYmluZGluZ3M9ZSgpLHRoaXMuaG92ZXJhYmxlPWUoKSx0aGlzLmZvY3VzYWJsZT1lKCksaSE9PXRoaXMmJihlLmRhdGEoaSx0aGlzLndpZGdldEZ1bGxOYW1lLHRoaXMpLHRoaXMuX29uKCEwLHRoaXMuZWxlbWVudCx7cmVtb3ZlOmZ1bmN0aW9uKGUpe2UudGFyZ2V0PT09aSYmdGhpcy5kZXN0cm95KCl9fSksdGhpcy5kb2N1bWVudD1lKGkuc3R5bGU/aS5vd25lckRvY3VtZW50OmkuZG9jdW1lbnR8fGkpLHRoaXMud2luZG93PWUodGhpcy5kb2N1bWVudFswXS5kZWZhdWx0Vmlld3x8dGhpcy5kb2N1bWVudFswXS5wYXJlbnRXaW5kb3cpKSx0aGlzLm9wdGlvbnM9ZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyx0aGlzLl9nZXRDcmVhdGVPcHRpb25zKCksdCksdGhpcy5fY3JlYXRlKCksdGhpcy5fdHJpZ2dlcigiY3JlYXRlIixudWxsLHRoaXMuX2dldENyZWF0ZUV2ZW50RGF0YSgpKSx0aGlzLl9pbml0KCl9LF9nZXRDcmVhdGVPcHRpb25zOmUubm9vcCxfZ2V0Q3JlYXRlRXZlbnREYXRhOmUubm9vcCxfY3JlYXRlOmUubm9vcCxfaW5pdDplLm5vb3AsZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX2Rlc3Ryb3koKSx0aGlzLmVsZW1lbnQudW5iaW5kKHRoaXMuZXZlbnROYW1lc3BhY2UpLnJlbW92ZURhdGEodGhpcy53aWRnZXRGdWxsTmFtZSkucmVtb3ZlRGF0YShlLmNhbWVsQ2FzZSh0aGlzLndpZGdldEZ1bGxOYW1lKSksdGhpcy53aWRnZXQoKS51bmJpbmQodGhpcy5ldmVudE5hbWVzcGFjZSkucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpLnJlbW92ZUNsYXNzKHRoaXMud2lkZ2V0RnVsbE5hbWUrIi1kaXNhYmxlZCAiKyJ1aS1zdGF0ZS1kaXNhYmxlZCIpLHRoaXMuYmluZGluZ3MudW5iaW5kKHRoaXMuZXZlbnROYW1lc3BhY2UpLHRoaXMuaG92ZXJhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLHRoaXMuZm9jdXNhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSxfZGVzdHJveTplLm5vb3Asd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudH0sb3B0aW9uOmZ1bmN0aW9uKHQsaSl7dmFyIHMsbixhLG89dDtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyk7aWYoInN0cmluZyI9PXR5cGVvZiB0KWlmKG89e30scz10LnNwbGl0KCIuIiksdD1zLnNoaWZ0KCkscy5sZW5ndGgpe2ZvcihuPW9bdF09ZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9uc1t0XSksYT0wO3MubGVuZ3RoLTE+YTthKyspbltzW2FdXT1uW3NbYV1dfHx7fSxuPW5bc1thXV07aWYodD1zLnBvcCgpLDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1uW3RdP251bGw6blt0XTtuW3RdPWl9ZWxzZXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09dGhpcy5vcHRpb25zW3RdP251bGw6dGhpcy5vcHRpb25zW3RdO29bdF09aX1yZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyhvKSx0aGlzfSxfc2V0T3B0aW9uczpmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBlKXRoaXMuX3NldE9wdGlvbih0LGVbdF0pO3JldHVybiB0aGlzfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub3B0aW9uc1tlXT10LCJkaXNhYmxlZCI9PT1lJiYodGhpcy53aWRnZXQoKS50b2dnbGVDbGFzcyh0aGlzLndpZGdldEZ1bGxOYW1lKyItZGlzYWJsZWQiLCEhdCksdCYmKHRoaXMuaG92ZXJhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLHRoaXMuZm9jdXNhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpKSksdGhpc30sZW5hYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoe2Rpc2FibGVkOiExfSl9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyh7ZGlzYWJsZWQ6ITB9KX0sX29uOmZ1bmN0aW9uKHQsaSxzKXt2YXIgbixhPXRoaXM7ImJvb2xlYW4iIT10eXBlb2YgdCYmKHM9aSxpPXQsdD0hMSkscz8oaT1uPWUoaSksdGhpcy5iaW5kaW5ncz10aGlzLmJpbmRpbmdzLmFkZChpKSk6KHM9aSxpPXRoaXMuZWxlbWVudCxuPXRoaXMud2lkZ2V0KCkpLGUuZWFjaChzLGZ1bmN0aW9uKHMsbyl7ZnVuY3Rpb24gcigpe3JldHVybiB0fHxhLm9wdGlvbnMuZGlzYWJsZWQhPT0hMCYmIWUodGhpcykuaGFzQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIik/KCJzdHJpbmciPT10eXBlb2Ygbz9hW29dOm8pLmFwcGx5KGEsYXJndW1lbnRzKTp2b2lkIDB9InN0cmluZyIhPXR5cGVvZiBvJiYoci5ndWlkPW8uZ3VpZD1vLmd1aWR8fHIuZ3VpZHx8ZS5ndWlkKyspO3ZhciBoPXMubWF0Y2goL14oW1x3Oi1dKilccyooLiopJC8pLGw9aFsxXSthLmV2ZW50TmFtZXNwYWNlLHU9aFsyXTt1P24uZGVsZWdhdGUodSxsLHIpOmkuYmluZChsLHIpfSl9LF9vZmY6ZnVuY3Rpb24odCxpKXtpPShpfHwiIikuc3BsaXQoIiAiKS5qb2luKHRoaXMuZXZlbnROYW1lc3BhY2UrIiAiKSt0aGlzLmV2ZW50TmFtZXNwYWNlLHQudW5iaW5kKGkpLnVuZGVsZWdhdGUoaSksdGhpcy5iaW5kaW5ncz1lKHRoaXMuYmluZGluZ3Mubm90KHQpLmdldCgpKSx0aGlzLmZvY3VzYWJsZT1lKHRoaXMuZm9jdXNhYmxlLm5vdCh0KS5nZXQoKSksdGhpcy5ob3ZlcmFibGU9ZSh0aGlzLmhvdmVyYWJsZS5ub3QodCkuZ2V0KCkpfSxfZGVsYXk6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBpKCl7cmV0dXJuKCJzdHJpbmciPT10eXBlb2YgZT9zW2VdOmUpLmFwcGx5KHMsYXJndW1lbnRzKX12YXIgcz10aGlzO3JldHVybiBzZXRUaW1lb3V0KGksdHx8MCl9LF9ob3ZlcmFibGU6ZnVuY3Rpb24odCl7dGhpcy5ob3ZlcmFibGU9dGhpcy5ob3ZlcmFibGUuYWRkKHQpLHRoaXMuX29uKHQse21vdXNlZW50ZXI6ZnVuY3Rpb24odCl7ZSh0LmN1cnJlbnRUYXJnZXQpLmFkZENsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpfSxtb3VzZWxlYXZlOmZ1bmN0aW9uKHQpe2UodC5jdXJyZW50VGFyZ2V0KS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKX19KX0sX2ZvY3VzYWJsZTpmdW5jdGlvbih0KXt0aGlzLmZvY3VzYWJsZT10aGlzLmZvY3VzYWJsZS5hZGQodCksdGhpcy5fb24odCx7Zm9jdXNpbjpmdW5jdGlvbih0KXtlKHQuY3VycmVudFRhcmdldCkuYWRkQ2xhc3MoInVpLXN0YXRlLWZvY3VzIil9LGZvY3Vzb3V0OmZ1bmN0aW9uKHQpe2UodC5jdXJyZW50VGFyZ2V0KS5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKX19KX0sX3RyaWdnZXI6ZnVuY3Rpb24odCxpLHMpe3ZhciBuLGEsbz10aGlzLm9wdGlvbnNbdF07aWYocz1zfHx7fSxpPWUuRXZlbnQoaSksaS50eXBlPSh0PT09dGhpcy53aWRnZXRFdmVudFByZWZpeD90OnRoaXMud2lkZ2V0RXZlbnRQcmVmaXgrdCkudG9Mb3dlckNhc2UoKSxpLnRhcmdldD10aGlzLmVsZW1lbnRbMF0sYT1pLm9yaWdpbmFsRXZlbnQpZm9yKG4gaW4gYSluIGluIGl8fChpW25dPWFbbl0pO3JldHVybiB0aGlzLmVsZW1lbnQudHJpZ2dlcihpLHMpLCEoZS5pc0Z1bmN0aW9uKG8pJiZvLmFwcGx5KHRoaXMuZWxlbWVudFswXSxbaV0uY29uY2F0KHMpKT09PSExfHxpLmlzRGVmYXVsdFByZXZlbnRlZCgpKX19LGUuZWFjaCh7c2hvdzoiZmFkZUluIixoaWRlOiJmYWRlT3V0In0sZnVuY3Rpb24odCxpKXtlLldpZGdldC5wcm90b3R5cGVbIl8iK3RdPWZ1bmN0aW9uKHMsbixhKXsic3RyaW5nIj09dHlwZW9mIG4mJihuPXtlZmZlY3Q6bn0pO3ZhciBvLHI9bj9uPT09ITB8fCJudW1iZXIiPT10eXBlb2Ygbj9pOm4uZWZmZWN0fHxpOnQ7bj1ufHx7fSwibnVtYmVyIj09dHlwZW9mIG4mJihuPXtkdXJhdGlvbjpufSksbz0hZS5pc0VtcHR5T2JqZWN0KG4pLG4uY29tcGxldGU9YSxuLmRlbGF5JiZzLmRlbGF5KG4uZGVsYXkpLG8mJmUuZWZmZWN0cyYmZS5lZmZlY3RzLmVmZmVjdFtyXT9zW3RdKG4pOnIhPT10JiZzW3JdP3Nbcl0obi5kdXJhdGlvbixuLmVhc2luZyxhKTpzLnF1ZXVlKGZ1bmN0aW9uKGkpe2UodGhpcylbdF0oKSxhJiZhLmNhbGwoc1swXSksaSgpfSl9fSksZS53aWRnZXQ7dmFyIG89ITE7ZShkb2N1bWVudCkubW91c2V1cChmdW5jdGlvbigpe289ITF9KSxlLndpZGdldCgidWkubW91c2UiLHt2ZXJzaW9uOiIxLjExLjQiLG9wdGlvbnM6e2NhbmNlbDoiaW5wdXQsdGV4dGFyZWEsYnV0dG9uLHNlbGVjdCxvcHRpb24iLGRpc3RhbmNlOjEsZGVsYXk6MH0sX21vdXNlSW5pdDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5lbGVtZW50LmJpbmQoIm1vdXNlZG93bi4iK3RoaXMud2lkZ2V0TmFtZSxmdW5jdGlvbihlKXtyZXR1cm4gdC5fbW91c2VEb3duKGUpfSkuYmluZCgiY2xpY2suIit0aGlzLndpZGdldE5hbWUsZnVuY3Rpb24oaSl7cmV0dXJuITA9PT1lLmRhdGEoaS50YXJnZXQsdC53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiKT8oZS5yZW1vdmVEYXRhKGkudGFyZ2V0LHQud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IiksaS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSwhMSk6dm9pZCAwfSksdGhpcy5zdGFydGVkPSExfSxfbW91c2VEZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnVuYmluZCgiLiIrdGhpcy53aWRnZXROYW1lKSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSYmdGhpcy5kb2N1bWVudC51bmJpbmQoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkudW5iaW5kKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSl9LF9tb3VzZURvd246ZnVuY3Rpb24odCl7aWYoIW8pe3RoaXMuX21vdXNlTW92ZWQ9ITEsdGhpcy5fbW91c2VTdGFydGVkJiZ0aGlzLl9tb3VzZVVwKHQpLHRoaXMuX21vdXNlRG93bkV2ZW50PXQ7dmFyIGk9dGhpcyxzPTE9PT10LndoaWNoLG49InN0cmluZyI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuY2FuY2VsJiZ0LnRhcmdldC5ub2RlTmFtZT9lKHQudGFyZ2V0KS5jbG9zZXN0KHRoaXMub3B0aW9ucy5jYW5jZWwpLmxlbmd0aDohMTtyZXR1cm4gcyYmIW4mJnRoaXMuX21vdXNlQ2FwdHVyZSh0KT8odGhpcy5tb3VzZURlbGF5TWV0PSF0aGlzLm9wdGlvbnMuZGVsYXksdGhpcy5tb3VzZURlbGF5TWV0fHwodGhpcy5fbW91c2VEZWxheVRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLm1vdXNlRGVsYXlNZXQ9ITB9LHRoaXMub3B0aW9ucy5kZWxheSkpLHRoaXMuX21vdXNlRGlzdGFuY2VNZXQodCkmJnRoaXMuX21vdXNlRGVsYXlNZXQodCkmJih0aGlzLl9tb3VzZVN0YXJ0ZWQ9dGhpcy5fbW91c2VTdGFydCh0KSE9PSExLCF0aGlzLl9tb3VzZVN0YXJ0ZWQpPyh0LnByZXZlbnREZWZhdWx0KCksITApOighMD09PWUuZGF0YSh0LnRhcmdldCx0aGlzLndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIpJiZlLnJlbW92ZURhdGEodC50YXJnZXQsdGhpcy53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiKSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZT1mdW5jdGlvbihlKXtyZXR1cm4gaS5fbW91c2VNb3ZlKGUpfSx0aGlzLl9tb3VzZVVwRGVsZWdhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGkuX21vdXNlVXAoZSl9LHRoaXMuZG9jdW1lbnQuYmluZCgibW91c2Vtb3ZlLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlKS5iaW5kKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSksdC5wcmV2ZW50RGVmYXVsdCgpLG89ITAsITApKTohMH19LF9tb3VzZU1vdmU6ZnVuY3Rpb24odCl7aWYodGhpcy5fbW91c2VNb3ZlZCl7aWYoZS51aS5pZSYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fDk+ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKSYmIXQuYnV0dG9uKXJldHVybiB0aGlzLl9tb3VzZVVwKHQpO2lmKCF0LndoaWNoKXJldHVybiB0aGlzLl9tb3VzZVVwKHQpfXJldHVybih0LndoaWNofHx0LmJ1dHRvbikmJih0aGlzLl9tb3VzZU1vdmVkPSEwKSx0aGlzLl9tb3VzZVN0YXJ0ZWQ/KHRoaXMuX21vdXNlRHJhZyh0KSx0LnByZXZlbnREZWZhdWx0KCkpOih0aGlzLl9tb3VzZURpc3RhbmNlTWV0KHQpJiZ0aGlzLl9tb3VzZURlbGF5TWV0KHQpJiYodGhpcy5fbW91c2VTdGFydGVkPXRoaXMuX21vdXNlU3RhcnQodGhpcy5fbW91c2VEb3duRXZlbnQsdCkhPT0hMSx0aGlzLl9tb3VzZVN0YXJ0ZWQ/dGhpcy5fbW91c2VEcmFnKHQpOnRoaXMuX21vdXNlVXAodCkpLCF0aGlzLl9tb3VzZVN0YXJ0ZWQpfSxfbW91c2VVcDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kb2N1bWVudC51bmJpbmQoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkudW5iaW5kKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSksdGhpcy5fbW91c2VTdGFydGVkJiYodGhpcy5fbW91c2VTdGFydGVkPSExLHQudGFyZ2V0PT09dGhpcy5fbW91c2VEb3duRXZlbnQudGFyZ2V0JiZlLmRhdGEodC50YXJnZXQsdGhpcy53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiLCEwKSx0aGlzLl9tb3VzZVN0b3AodCkpLG89ITEsITF9LF9tb3VzZURpc3RhbmNlTWV0OmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLm1heChNYXRoLmFicyh0aGlzLl9tb3VzZURvd25FdmVudC5wYWdlWC1lLnBhZ2VYKSxNYXRoLmFicyh0aGlzLl9tb3VzZURvd25FdmVudC5wYWdlWS1lLnBhZ2VZKSk+PXRoaXMub3B0aW9ucy5kaXN0YW5jZX0sX21vdXNlRGVsYXlNZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb3VzZURlbGF5TWV0fSxfbW91c2VTdGFydDpmdW5jdGlvbigpe30sX21vdXNlRHJhZzpmdW5jdGlvbigpe30sX21vdXNlU3RvcDpmdW5jdGlvbigpe30sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbigpe3JldHVybiEwfX0pLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHQsaSl7cmV0dXJuW3BhcnNlRmxvYXQoZVswXSkqKHAudGVzdChlWzBdKT90LzEwMDoxKSxwYXJzZUZsb2F0KGVbMV0pKihwLnRlc3QoZVsxXSk/aS8xMDA6MSldfWZ1bmN0aW9uIGkodCxpKXtyZXR1cm4gcGFyc2VJbnQoZS5jc3ModCxpKSwxMCl8fDB9ZnVuY3Rpb24gcyh0KXt2YXIgaT10WzBdO3JldHVybiA5PT09aS5ub2RlVHlwZT97d2lkdGg6dC53aWR0aCgpLGhlaWdodDp0LmhlaWdodCgpLG9mZnNldDp7dG9wOjAsbGVmdDowfX06ZS5pc1dpbmRvdyhpKT97d2lkdGg6dC53aWR0aCgpLGhlaWdodDp0LmhlaWdodCgpLG9mZnNldDp7dG9wOnQuc2Nyb2xsVG9wKCksbGVmdDp0LnNjcm9sbExlZnQoKX19OmkucHJldmVudERlZmF1bHQ/e3dpZHRoOjAsaGVpZ2h0OjAsb2Zmc2V0Ont0b3A6aS5wYWdlWSxsZWZ0OmkucGFnZVh9fTp7d2lkdGg6dC5vdXRlcldpZHRoKCksaGVpZ2h0OnQub3V0ZXJIZWlnaHQoKSxvZmZzZXQ6dC5vZmZzZXQoKX19ZS51aT1lLnVpfHx7fTt2YXIgbixhLG89TWF0aC5tYXgscj1NYXRoLmFicyxoPU1hdGgucm91bmQsbD0vbGVmdHxjZW50ZXJ8cmlnaHQvLHU9L3RvcHxjZW50ZXJ8Ym90dG9tLyxkPS9bXCtcLV1cZCsoXC5bXGRdKyk/JT8vLGM9L15cdysvLHA9LyUkLyxmPWUuZm4ucG9zaXRpb247ZS5wb3NpdGlvbj17c2Nyb2xsYmFyV2lkdGg6ZnVuY3Rpb24oKXtpZih2b2lkIDAhPT1uKXJldHVybiBuO3ZhciB0LGkscz1lKCI8ZGl2IHN0eWxlPSdkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjUwcHg7aGVpZ2h0OjUwcHg7b3ZlcmZsb3c6aGlkZGVuOyc+PGRpdiBzdHlsZT0naGVpZ2h0OjEwMHB4O3dpZHRoOmF1dG87Jz48L2Rpdj48L2Rpdj4iKSxhPXMuY2hpbGRyZW4oKVswXTtyZXR1cm4gZSgiYm9keSIpLmFwcGVuZChzKSx0PWEub2Zmc2V0V2lkdGgscy5jc3MoIm92ZXJmbG93Iiwic2Nyb2xsIiksaT1hLm9mZnNldFdpZHRoLHQ9PT1pJiYoaT1zWzBdLmNsaWVudFdpZHRoKSxzLnJlbW92ZSgpLG49dC1pfSxnZXRTY3JvbGxJbmZvOmZ1bmN0aW9uKHQpe3ZhciBpPXQuaXNXaW5kb3d8fHQuaXNEb2N1bWVudD8iIjp0LmVsZW1lbnQuY3NzKCJvdmVyZmxvdy14Iikscz10LmlzV2luZG93fHx0LmlzRG9jdW1lbnQ/IiI6dC5lbGVtZW50LmNzcygib3ZlcmZsb3cteSIpLG49InNjcm9sbCI9PT1pfHwiYXV0byI9PT1pJiZ0LndpZHRoPHQuZWxlbWVudFswXS5zY3JvbGxXaWR0aCxhPSJzY3JvbGwiPT09c3x8ImF1dG8iPT09cyYmdC5oZWlnaHQ8dC5lbGVtZW50WzBdLnNjcm9sbEhlaWdodDtyZXR1cm57d2lkdGg6YT9lLnBvc2l0aW9uLnNjcm9sbGJhcldpZHRoKCk6MCxoZWlnaHQ6bj9lLnBvc2l0aW9uLnNjcm9sbGJhcldpZHRoKCk6MH19LGdldFdpdGhpbkluZm86ZnVuY3Rpb24odCl7dmFyIGk9ZSh0fHx3aW5kb3cpLHM9ZS5pc1dpbmRvdyhpWzBdKSxuPSEhaVswXSYmOT09PWlbMF0ubm9kZVR5cGU7cmV0dXJue2VsZW1lbnQ6aSxpc1dpbmRvdzpzLGlzRG9jdW1lbnQ6bixvZmZzZXQ6aS5vZmZzZXQoKXx8e2xlZnQ6MCx0b3A6MH0sc2Nyb2xsTGVmdDppLnNjcm9sbExlZnQoKSxzY3JvbGxUb3A6aS5zY3JvbGxUb3AoKSx3aWR0aDpzfHxuP2kud2lkdGgoKTppLm91dGVyV2lkdGgoKSxoZWlnaHQ6c3x8bj9pLmhlaWdodCgpOmkub3V0ZXJIZWlnaHQoKX19fSxlLmZuLnBvc2l0aW9uPWZ1bmN0aW9uKG4pe2lmKCFufHwhbi5vZilyZXR1cm4gZi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bj1lLmV4dGVuZCh7fSxuKTt2YXIgcCxtLGcsdix5LGIsXz1lKG4ub2YpLHg9ZS5wb3NpdGlvbi5nZXRXaXRoaW5JbmZvKG4ud2l0aGluKSx3PWUucG9zaXRpb24uZ2V0U2Nyb2xsSW5mbyh4KSxrPShuLmNvbGxpc2lvbnx8ImZsaXAiKS5zcGxpdCgiICIpLFQ9e307cmV0dXJuIGI9cyhfKSxfWzBdLnByZXZlbnREZWZhdWx0JiYobi5hdD0ibGVmdCB0b3AiKSxtPWIud2lkdGgsZz1iLmhlaWdodCx2PWIub2Zmc2V0LHk9ZS5leHRlbmQoe30sdiksZS5lYWNoKFsibXkiLCJhdCJdLGZ1bmN0aW9uKCl7dmFyIGUsdCxpPShuW3RoaXNdfHwiIikuc3BsaXQoIiAiKTsxPT09aS5sZW5ndGgmJihpPWwudGVzdChpWzBdKT9pLmNvbmNhdChbImNlbnRlciJdKTp1LnRlc3QoaVswXSk/WyJjZW50ZXIiXS5jb25jYXQoaSk6WyJjZW50ZXIiLCJjZW50ZXIiXSksaVswXT1sLnRlc3QoaVswXSk/aVswXToiY2VudGVyIixpWzFdPXUudGVzdChpWzFdKT9pWzFdOiJjZW50ZXIiLGU9ZC5leGVjKGlbMF0pLHQ9ZC5leGVjKGlbMV0pLFRbdGhpc109W2U/ZVswXTowLHQ/dFswXTowXSxuW3RoaXNdPVtjLmV4ZWMoaVswXSlbMF0sYy5leGVjKGlbMV0pWzBdXX0pLDE9PT1rLmxlbmd0aCYmKGtbMV09a1swXSksInJpZ2h0Ij09PW4uYXRbMF0/eS5sZWZ0Kz1tOiJjZW50ZXIiPT09bi5hdFswXSYmKHkubGVmdCs9bS8yKSwiYm90dG9tIj09PW4uYXRbMV0/eS50b3ArPWc6ImNlbnRlciI9PT1uLmF0WzFdJiYoeS50b3ArPWcvMikscD10KFQuYXQsbSxnKSx5LmxlZnQrPXBbMF0seS50b3ArPXBbMV0sdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHMsbCx1PWUodGhpcyksZD11Lm91dGVyV2lkdGgoKSxjPXUub3V0ZXJIZWlnaHQoKSxmPWkodGhpcywibWFyZ2luTGVmdCIpLGI9aSh0aGlzLCJtYXJnaW5Ub3AiKSxEPWQrZitpKHRoaXMsIm1hcmdpblJpZ2h0Iikrdy53aWR0aCxTPWMrYitpKHRoaXMsIm1hcmdpbkJvdHRvbSIpK3cuaGVpZ2h0LE49ZS5leHRlbmQoe30seSksTT10KFQubXksdS5vdXRlcldpZHRoKCksdS5vdXRlckhlaWdodCgpKTsicmlnaHQiPT09bi5teVswXT9OLmxlZnQtPWQ6ImNlbnRlciI9PT1uLm15WzBdJiYoTi5sZWZ0LT1kLzIpLCJib3R0b20iPT09bi5teVsxXT9OLnRvcC09YzoiY2VudGVyIj09PW4ubXlbMV0mJihOLnRvcC09Yy8yKSxOLmxlZnQrPU1bMF0sTi50b3ArPU1bMV0sYXx8KE4ubGVmdD1oKE4ubGVmdCksTi50b3A9aChOLnRvcCkpLHM9e21hcmdpbkxlZnQ6ZixtYXJnaW5Ub3A6Yn0sZS5lYWNoKFsibGVmdCIsInRvcCJdLGZ1bmN0aW9uKHQsaSl7ZS51aS5wb3NpdGlvbltrW3RdXSYmZS51aS5wb3NpdGlvbltrW3RdXVtpXShOLHt0YXJnZXRXaWR0aDptLHRhcmdldEhlaWdodDpnLGVsZW1XaWR0aDpkLGVsZW1IZWlnaHQ6Yyxjb2xsaXNpb25Qb3NpdGlvbjpzLGNvbGxpc2lvbldpZHRoOkQsY29sbGlzaW9uSGVpZ2h0OlMsb2Zmc2V0OltwWzBdK01bMF0scFsxXStNWzFdXSxteTpuLm15LGF0Om4uYXQsd2l0aGluOngsZWxlbTp1fSl9KSxuLnVzaW5nJiYobD1mdW5jdGlvbihlKXt2YXIgdD12LmxlZnQtTi5sZWZ0LGk9dCttLWQscz12LnRvcC1OLnRvcCxhPXMrZy1jLGg9e3RhcmdldDp7ZWxlbWVudDpfLGxlZnQ6di5sZWZ0LHRvcDp2LnRvcCx3aWR0aDptLGhlaWdodDpnfSxlbGVtZW50OntlbGVtZW50OnUsbGVmdDpOLmxlZnQsdG9wOk4udG9wLHdpZHRoOmQsaGVpZ2h0OmN9LGhvcml6b250YWw6MD5pPyJsZWZ0Ijp0PjA/InJpZ2h0IjoiY2VudGVyIix2ZXJ0aWNhbDowPmE/InRvcCI6cz4wPyJib3R0b20iOiJtaWRkbGUifTtkPm0mJm0+cih0K2kpJiYoaC5ob3Jpem9udGFsPSJjZW50ZXIiKSxjPmcmJmc+cihzK2EpJiYoaC52ZXJ0aWNhbD0ibWlkZGxlIiksaC5pbXBvcnRhbnQ9byhyKHQpLHIoaSkpPm8ocihzKSxyKGEpKT8iaG9yaXpvbnRhbCI6InZlcnRpY2FsIixuLnVzaW5nLmNhbGwodGhpcyxlLGgpfSksdS5vZmZzZXQoZS5leHRlbmQoTix7dXNpbmc6bH0pKX0pfSxlLnVpLnBvc2l0aW9uPXtmaXQ6e2xlZnQ6ZnVuY3Rpb24oZSx0KXt2YXIgaSxzPXQud2l0aGluLG49cy5pc1dpbmRvdz9zLnNjcm9sbExlZnQ6cy5vZmZzZXQubGVmdCxhPXMud2lkdGgscj1lLmxlZnQtdC5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5MZWZ0LGg9bi1yLGw9cit0LmNvbGxpc2lvbldpZHRoLWEtbjt0LmNvbGxpc2lvbldpZHRoPmE/aD4wJiYwPj1sPyhpPWUubGVmdCtoK3QuY29sbGlzaW9uV2lkdGgtYS1uLGUubGVmdCs9aC1pKTplLmxlZnQ9bD4wJiYwPj1oP246aD5sP24rYS10LmNvbGxpc2lvbldpZHRoOm46aD4wP2UubGVmdCs9aDpsPjA/ZS5sZWZ0LT1sOmUubGVmdD1vKGUubGVmdC1yLGUubGVmdCl9LHRvcDpmdW5jdGlvbihlLHQpe3ZhciBpLHM9dC53aXRoaW4sbj1zLmlzV2luZG93P3Muc2Nyb2xsVG9wOnMub2Zmc2V0LnRvcCxhPXQud2l0aGluLmhlaWdodCxyPWUudG9wLXQuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luVG9wLGg9bi1yLGw9cit0LmNvbGxpc2lvbkhlaWdodC1hLW47dC5jb2xsaXNpb25IZWlnaHQ+YT9oPjAmJjA+PWw/KGk9ZS50b3AraCt0LmNvbGxpc2lvbkhlaWdodC1hLW4sZS50b3ArPWgtaSk6ZS50b3A9bD4wJiYwPj1oP246aD5sP24rYS10LmNvbGxpc2lvbkhlaWdodDpuOmg+MD9lLnRvcCs9aDpsPjA/ZS50b3AtPWw6ZS50b3A9byhlLnRvcC1yLGUudG9wKX19LGZsaXA6e2xlZnQ6ZnVuY3Rpb24oZSx0KXt2YXIgaSxzLG49dC53aXRoaW4sYT1uLm9mZnNldC5sZWZ0K24uc2Nyb2xsTGVmdCxvPW4ud2lkdGgsaD1uLmlzV2luZG93P24uc2Nyb2xsTGVmdDpuLm9mZnNldC5sZWZ0LGw9ZS5sZWZ0LXQuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luTGVmdCx1PWwtaCxkPWwrdC5jb2xsaXNpb25XaWR0aC1vLWgsYz0ibGVmdCI9PT10Lm15WzBdPy10LmVsZW1XaWR0aDoicmlnaHQiPT09dC5teVswXT90LmVsZW1XaWR0aDowLHA9ImxlZnQiPT09dC5hdFswXT90LnRhcmdldFdpZHRoOiJyaWdodCI9PT10LmF0WzBdPy10LnRhcmdldFdpZHRoOjAsZj0tMip0Lm9mZnNldFswXTswPnU/KGk9ZS5sZWZ0K2MrcCtmK3QuY29sbGlzaW9uV2lkdGgtby1hLCgwPml8fHIodSk+aSkmJihlLmxlZnQrPWMrcCtmKSk6ZD4wJiYocz1lLmxlZnQtdC5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5MZWZ0K2MrcCtmLWgsKHM+MHx8ZD5yKHMpKSYmKGUubGVmdCs9YytwK2YpKX0sdG9wOmZ1bmN0aW9uKGUsdCl7dmFyIGkscyxuPXQud2l0aGluLGE9bi5vZmZzZXQudG9wK24uc2Nyb2xsVG9wLG89bi5oZWlnaHQsaD1uLmlzV2luZG93P24uc2Nyb2xsVG9wOm4ub2Zmc2V0LnRvcCxsPWUudG9wLXQuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luVG9wLHU9bC1oLGQ9bCt0LmNvbGxpc2lvbkhlaWdodC1vLWgsYz0idG9wIj09PXQubXlbMV0scD1jPy10LmVsZW1IZWlnaHQ6ImJvdHRvbSI9PT10Lm15WzFdP3QuZWxlbUhlaWdodDowLGY9InRvcCI9PT10LmF0WzFdP3QudGFyZ2V0SGVpZ2h0OiJib3R0b20iPT09dC5hdFsxXT8tdC50YXJnZXRIZWlnaHQ6MCxtPS0yKnQub2Zmc2V0WzFdOzA+dT8ocz1lLnRvcCtwK2YrbSt0LmNvbGxpc2lvbkhlaWdodC1vLWEsKDA+c3x8cih1KT5zKSYmKGUudG9wKz1wK2YrbSkpOmQ+MCYmKGk9ZS50b3AtdC5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5Ub3ArcCtmK20taCwoaT4wfHxkPnIoaSkpJiYoZS50b3ArPXArZittKSl9fSxmbGlwZml0OntsZWZ0OmZ1bmN0aW9uKCl7ZS51aS5wb3NpdGlvbi5mbGlwLmxlZnQuYXBwbHkodGhpcyxhcmd1bWVudHMpLGUudWkucG9zaXRpb24uZml0LmxlZnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0b3A6ZnVuY3Rpb24oKXtlLnVpLnBvc2l0aW9uLmZsaXAudG9wLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlLnVpLnBvc2l0aW9uLmZpdC50b3AuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19LGZ1bmN0aW9uKCl7dmFyIHQsaSxzLG4sbyxyPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0saD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQocj8iZGl2IjoiYm9keSIpLHM9e3Zpc2liaWxpdHk6ImhpZGRlbiIsd2lkdGg6MCxoZWlnaHQ6MCxib3JkZXI6MCxtYXJnaW46MCxiYWNrZ3JvdW5kOiJub25lIn0sciYmZS5leHRlbmQocyx7cG9zaXRpb246ImFic29sdXRlIixsZWZ0OiItMTAwMHB4Iix0b3A6Ii0xMDAwcHgifSk7Zm9yKG8gaW4gcyl0LnN0eWxlW29dPXNbb107dC5hcHBlbmRDaGlsZChoKSxpPXJ8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxpLmluc2VydEJlZm9yZSh0LGkuZmlyc3RDaGlsZCksaC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDEwLjc0MzIyMjJweDsiLG49ZShoKS5vZmZzZXQoKS5sZWZ0LGE9bj4xMCYmMTE+bix0LmlubmVySFRNTD0iIixpLnJlbW92ZUNoaWxkKHQpfSgpfSgpLGUudWkucG9zaXRpb24sZS53aWRnZXQoInVpLmRyYWdnYWJsZSIsZS51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMS40Iix3aWRnZXRFdmVudFByZWZpeDoiZHJhZyIsb3B0aW9uczp7YWRkQ2xhc3NlczohMCxhcHBlbmRUbzoicGFyZW50IixheGlzOiExLGNvbm5lY3RUb1NvcnRhYmxlOiExLGNvbnRhaW5tZW50OiExLGN1cnNvcjoiYXV0byIsY3Vyc29yQXQ6ITEsZ3JpZDohMSxoYW5kbGU6ITEsaGVscGVyOiJvcmlnaW5hbCIsaWZyYW1lRml4OiExLG9wYWNpdHk6ITEscmVmcmVzaFBvc2l0aW9uczohMSxyZXZlcnQ6ITEscmV2ZXJ0RHVyYXRpb246NTAwLHNjb3BlOiJkZWZhdWx0IixzY3JvbGw6ITAsc2Nyb2xsU2Vuc2l0aXZpdHk6MjAsc2Nyb2xsU3BlZWQ6MjAsc25hcDohMSxzbmFwTW9kZToiYm90aCIsc25hcFRvbGVyYW5jZToyMCxzdGFjazohMSx6SW5kZXg6ITEsZHJhZzpudWxsLHN0YXJ0Om51bGwsc3RvcDpudWxsfSxfY3JlYXRlOmZ1bmN0aW9uKCl7Im9yaWdpbmFsIj09PXRoaXMub3B0aW9ucy5oZWxwZXImJnRoaXMuX3NldFBvc2l0aW9uUmVsYXRpdmUoKSx0aGlzLm9wdGlvbnMuYWRkQ2xhc3NlcyYmdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1kcmFnZ2FibGUiKSx0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktZHJhZ2dhYmxlLWRpc2FibGVkIiksdGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCksdGhpcy5fbW91c2VJbml0KCl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXt0aGlzLl9zdXBlcihlLHQpLCJoYW5kbGUiPT09ZSYmKHRoaXMuX3JlbW92ZUhhbmRsZUNsYXNzTmFtZSgpLHRoaXMuX3NldEhhbmRsZUNsYXNzTmFtZSgpKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5oZWxwZXJ8fHRoaXMuZWxlbWVudCkuaXMoIi51aS1kcmFnZ2FibGUtZHJhZ2dpbmciKT8odGhpcy5kZXN0cm95T25DbGVhcj0hMCx2b2lkIDApOih0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWRyYWdnYWJsZSB1aS1kcmFnZ2FibGUtZHJhZ2dpbmcgdWktZHJhZ2dhYmxlLWRpc2FibGVkIiksdGhpcy5fcmVtb3ZlSGFuZGxlQ2xhc3NOYW1lKCksdGhpcy5fbW91c2VEZXN0cm95KCksdm9pZCAwKX0sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLm9wdGlvbnM7cmV0dXJuIHRoaXMuX2JsdXJBY3RpdmVFbGVtZW50KHQpLHRoaXMuaGVscGVyfHxpLmRpc2FibGVkfHxlKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktcmVzaXphYmxlLWhhbmRsZSIpLmxlbmd0aD4wPyExOih0aGlzLmhhbmRsZT10aGlzLl9nZXRIYW5kbGUodCksdGhpcy5oYW5kbGU/KHRoaXMuX2Jsb2NrRnJhbWVzKGkuaWZyYW1lRml4PT09ITA/ImlmcmFtZSI6aS5pZnJhbWVGaXgpLCEwKTohMSl9LF9ibG9ja0ZyYW1lczpmdW5jdGlvbih0KXt0aGlzLmlmcmFtZUJsb2Nrcz10aGlzLmRvY3VtZW50LmZpbmQodCkubWFwKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTtyZXR1cm4gZSgiPGRpdj4iKS5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKS5hcHBlbmRUbyh0LnBhcmVudCgpKS5vdXRlcldpZHRoKHQub3V0ZXJXaWR0aCgpKS5vdXRlckhlaWdodCh0Lm91dGVySGVpZ2h0KCkpLm9mZnNldCh0Lm9mZnNldCgpKVswXX0pfSxfdW5ibG9ja0ZyYW1lczpmdW5jdGlvbigpe3RoaXMuaWZyYW1lQmxvY2tzJiYodGhpcy5pZnJhbWVCbG9ja3MucmVtb3ZlKCksZGVsZXRlIHRoaXMuaWZyYW1lQmxvY2tzKX0sX2JsdXJBY3RpdmVFbGVtZW50OmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuZG9jdW1lbnRbMF07aWYodGhpcy5oYW5kbGVFbGVtZW50LmlzKHQudGFyZ2V0KSl0cnl7aS5hY3RpdmVFbGVtZW50JiYiYm9keSIhPT1pLmFjdGl2ZUVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmZShpLmFjdGl2ZUVsZW1lbnQpLmJsdXIoKX1jYXRjaChzKXt9fSxfbW91c2VTdGFydDpmdW5jdGlvbih0KXt2YXIgaT10aGlzLm9wdGlvbnM7cmV0dXJuIHRoaXMuaGVscGVyPXRoaXMuX2NyZWF0ZUhlbHBlcih0KSx0aGlzLmhlbHBlci5hZGRDbGFzcygidWktZHJhZ2dhYmxlLWRyYWdnaW5nIiksdGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpLGUudWkuZGRtYW5hZ2VyJiYoZS51aS5kZG1hbmFnZXIuY3VycmVudD10aGlzKSx0aGlzLl9jYWNoZU1hcmdpbnMoKSx0aGlzLmNzc1Bvc2l0aW9uPXRoaXMuaGVscGVyLmNzcygicG9zaXRpb24iKSx0aGlzLnNjcm9sbFBhcmVudD10aGlzLmhlbHBlci5zY3JvbGxQYXJlbnQoITApLHRoaXMub2Zmc2V0UGFyZW50PXRoaXMuaGVscGVyLm9mZnNldFBhcmVudCgpLHRoaXMuaGFzRml4ZWRBbmNlc3Rvcj10aGlzLmhlbHBlci5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuImZpeGVkIj09PWUodGhpcykuY3NzKCJwb3NpdGlvbiIpfSkubGVuZ3RoPjAsdGhpcy5wb3NpdGlvbkFicz10aGlzLmVsZW1lbnQub2Zmc2V0KCksdGhpcy5fcmVmcmVzaE9mZnNldHModCksdGhpcy5vcmlnaW5hbFBvc2l0aW9uPXRoaXMucG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbih0LCExKSx0aGlzLm9yaWdpbmFsUGFnZVg9dC5wYWdlWCx0aGlzLm9yaWdpbmFsUGFnZVk9dC5wYWdlWSxpLmN1cnNvckF0JiZ0aGlzLl9hZGp1c3RPZmZzZXRGcm9tSGVscGVyKGkuY3Vyc29yQXQpLHRoaXMuX3NldENvbnRhaW5tZW50KCksdGhpcy5fdHJpZ2dlcigic3RhcnQiLHQpPT09ITE/KHRoaXMuX2NsZWFyKCksITEpOih0aGlzLl9jYWNoZUhlbHBlclByb3BvcnRpb25zKCksZS51aS5kZG1hbmFnZXImJiFpLmRyb3BCZWhhdmlvdXImJmUudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHRoaXMsdCksdGhpcy5fbm9ybWFsaXplUmlnaHRCb3R0b20oKSx0aGlzLl9tb3VzZURyYWcodCwhMCksZS51aS5kZG1hbmFnZXImJmUudWkuZGRtYW5hZ2VyLmRyYWdTdGFydCh0aGlzLHQpLCEwKX0sX3JlZnJlc2hPZmZzZXRzOmZ1bmN0aW9uKGUpe3RoaXMub2Zmc2V0PXt0b3A6dGhpcy5wb3NpdGlvbkFicy50b3AtdGhpcy5tYXJnaW5zLnRvcCxsZWZ0OnRoaXMucG9zaXRpb25BYnMubGVmdC10aGlzLm1hcmdpbnMubGVmdCxzY3JvbGw6ITEscGFyZW50OnRoaXMuX2dldFBhcmVudE9mZnNldCgpLHJlbGF0aXZlOnRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCl9LHRoaXMub2Zmc2V0LmNsaWNrPXtsZWZ0OmUucGFnZVgtdGhpcy5vZmZzZXQubGVmdCx0b3A6ZS5wYWdlWS10aGlzLm9mZnNldC50b3B9fSxfbW91c2VEcmFnOmZ1bmN0aW9uKHQsaSl7aWYodGhpcy5oYXNGaXhlZEFuY2VzdG9yJiYodGhpcy5vZmZzZXQucGFyZW50PXRoaXMuX2dldFBhcmVudE9mZnNldCgpKSx0aGlzLnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24odCwhMCksdGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKSwhaSl7dmFyIHM9dGhpcy5fdWlIYXNoKCk7aWYodGhpcy5fdHJpZ2dlcigiZHJhZyIsdCxzKT09PSExKXJldHVybiB0aGlzLl9tb3VzZVVwKHt9KSwhMTt0aGlzLnBvc2l0aW9uPXMucG9zaXRpb259cmV0dXJuIHRoaXMuaGVscGVyWzBdLnN0eWxlLmxlZnQ9dGhpcy5wb3NpdGlvbi5sZWZ0KyJweCIsdGhpcy5oZWxwZXJbMF0uc3R5bGUudG9wPXRoaXMucG9zaXRpb24udG9wKyJweCIsZS51aS5kZG1hbmFnZXImJmUudWkuZGRtYW5hZ2VyLmRyYWcodGhpcyx0KSwhMX0sX21vdXNlU3RvcDpmdW5jdGlvbih0KXt2YXIgaT10aGlzLHM9ITE7cmV0dXJuIGUudWkuZGRtYW5hZ2VyJiYhdGhpcy5vcHRpb25zLmRyb3BCZWhhdmlvdXImJihzPWUudWkuZGRtYW5hZ2VyLmRyb3AodGhpcyx0KSksdGhpcy5kcm9wcGVkJiYocz10aGlzLmRyb3BwZWQsdGhpcy5kcm9wcGVkPSExKSwiaW52YWxpZCI9PT10aGlzLm9wdGlvbnMucmV2ZXJ0JiYhc3x8InZhbGlkIj09PXRoaXMub3B0aW9ucy5yZXZlcnQmJnN8fHRoaXMub3B0aW9ucy5yZXZlcnQ9PT0hMHx8ZS5pc0Z1bmN0aW9uKHRoaXMub3B0aW9ucy5yZXZlcnQpJiZ0aGlzLm9wdGlvbnMucmV2ZXJ0LmNhbGwodGhpcy5lbGVtZW50LHMpP2UodGhpcy5oZWxwZXIpLmFuaW1hdGUodGhpcy5vcmlnaW5hbFBvc2l0aW9uLHBhcnNlSW50KHRoaXMub3B0aW9ucy5yZXZlcnREdXJhdGlvbiwxMCksZnVuY3Rpb24oKXtpLl90cmlnZ2VyKCJzdG9wIix0KSE9PSExJiZpLl9jbGVhcigpfSk6dGhpcy5fdHJpZ2dlcigic3RvcCIsdCkhPT0hMSYmdGhpcy5fY2xlYXIoKSwhMX0sX21vdXNlVXA6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3VuYmxvY2tGcmFtZXMoKSxlLnVpLmRkbWFuYWdlciYmZS51aS5kZG1hbmFnZXIuZHJhZ1N0b3AodGhpcyx0KSx0aGlzLmhhbmRsZUVsZW1lbnQuaXModC50YXJnZXQpJiZ0aGlzLmVsZW1lbnQuZm9jdXMoKSxlLnVpLm1vdXNlLnByb3RvdHlwZS5fbW91c2VVcC5jYWxsKHRoaXMsdCl9LGNhbmNlbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhlbHBlci5pcygiLnVpLWRyYWdnYWJsZS1kcmFnZ2luZyIpP3RoaXMuX21vdXNlVXAoe30pOnRoaXMuX2NsZWFyKCksdGhpc30sX2dldEhhbmRsZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLmhhbmRsZT8hIWUodC50YXJnZXQpLmNsb3Nlc3QodGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLmhhbmRsZSkpLmxlbmd0aDohMH0sX3NldEhhbmRsZUNsYXNzTmFtZTpmdW5jdGlvbigpe3RoaXMuaGFuZGxlRWxlbWVudD10aGlzLm9wdGlvbnMuaGFuZGxlP3RoaXMuZWxlbWVudC5maW5kKHRoaXMub3B0aW9ucy5oYW5kbGUpOnRoaXMuZWxlbWVudCx0aGlzLmhhbmRsZUVsZW1lbnQuYWRkQ2xhc3MoInVpLWRyYWdnYWJsZS1oYW5kbGUiKX0sX3JlbW92ZUhhbmRsZUNsYXNzTmFtZTpmdW5jdGlvbigpe3RoaXMuaGFuZGxlRWxlbWVudC5yZW1vdmVDbGFzcygidWktZHJhZ2dhYmxlLWhhbmRsZSIpfSxfY3JlYXRlSGVscGVyOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMub3B0aW9ucyxzPWUuaXNGdW5jdGlvbihpLmhlbHBlciksbj1zP2UoaS5oZWxwZXIuYXBwbHkodGhpcy5lbGVtZW50WzBdLFt0XSkpOiJjbG9uZSI9PT1pLmhlbHBlcj90aGlzLmVsZW1lbnQuY2xvbmUoKS5yZW1vdmVBdHRyKCJpZCIpOnRoaXMuZWxlbWVudDtyZXR1cm4gbi5wYXJlbnRzKCJib2R5IikubGVuZ3RofHxuLmFwcGVuZFRvKCJwYXJlbnQiPT09aS5hcHBlbmRUbz90aGlzLmVsZW1lbnRbMF0ucGFyZW50Tm9kZTppLmFwcGVuZFRvKSxzJiZuWzBdPT09dGhpcy5lbGVtZW50WzBdJiZ0aGlzLl9zZXRQb3NpdGlvblJlbGF0aXZlKCksblswXT09PXRoaXMuZWxlbWVudFswXXx8LyhmaXhlZHxhYnNvbHV0ZSkvLnRlc3Qobi5jc3MoInBvc2l0aW9uIikpfHxuLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpLG59LF9zZXRQb3NpdGlvblJlbGF0aXZlOmZ1bmN0aW9uKCl7L14oPzpyfGF8ZikvLnRlc3QodGhpcy5lbGVtZW50LmNzcygicG9zaXRpb24iKSl8fCh0aGlzLmVsZW1lbnRbMF0uc3R5bGUucG9zaXRpb249InJlbGF0aXZlIil9LF9hZGp1c3RPZmZzZXRGcm9tSGVscGVyOmZ1bmN0aW9uKHQpeyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9dC5zcGxpdCgiICIpKSxlLmlzQXJyYXkodCkmJih0PXtsZWZ0Oit0WzBdLHRvcDordFsxXXx8MH0pLCJsZWZ0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXQubGVmdCt0aGlzLm1hcmdpbnMubGVmdCksInJpZ2h0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdC5yaWdodCt0aGlzLm1hcmdpbnMubGVmdCksInRvcCJpbiB0JiYodGhpcy5vZmZzZXQuY2xpY2sudG9wPXQudG9wK3RoaXMubWFyZ2lucy50b3ApLCJib3R0b20iaW4gdCYmKHRoaXMub2Zmc2V0LmNsaWNrLnRvcD10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10LmJvdHRvbSt0aGlzLm1hcmdpbnMudG9wKX0sX2lzUm9vdE5vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuLyhodG1sfGJvZHkpL2kudGVzdChlLnRhZ05hbWUpfHxlPT09dGhpcy5kb2N1bWVudFswXX0sX2dldFBhcmVudE9mZnNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub2Zmc2V0UGFyZW50Lm9mZnNldCgpLGk9dGhpcy5kb2N1bWVudFswXTtyZXR1cm4iYWJzb2x1dGUiPT09dGhpcy5jc3NQb3NpdGlvbiYmdGhpcy5zY3JvbGxQYXJlbnRbMF0hPT1pJiZlLmNvbnRhaW5zKHRoaXMuc2Nyb2xsUGFyZW50WzBdLHRoaXMub2Zmc2V0UGFyZW50WzBdKSYmKHQubGVmdCs9dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpLHQudG9wKz10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSksdGhpcy5faXNSb290Tm9kZSh0aGlzLm9mZnNldFBhcmVudFswXSkmJih0PXt0b3A6MCxsZWZ0OjB9KSx7dG9wOnQudG9wKyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSxsZWZ0OnQubGVmdCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApfX0sX2dldFJlbGF0aXZlT2Zmc2V0OmZ1bmN0aW9uKCl7aWYoInJlbGF0aXZlIiE9PXRoaXMuY3NzUG9zaXRpb24pcmV0dXJue3RvcDowLGxlZnQ6MH07dmFyIGU9dGhpcy5lbGVtZW50LnBvc2l0aW9uKCksdD10aGlzLl9pc1Jvb3ROb2RlKHRoaXMuc2Nyb2xsUGFyZW50WzBdKTtyZXR1cm57dG9wOmUudG9wLShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoInRvcCIpLDEwKXx8MCkrKHQ/MDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSksbGVmdDplLmxlZnQtKHBhcnNlSW50KHRoaXMuaGVscGVyLmNzcygibGVmdCIpLDEwKXx8MCkrKHQ/MDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCkpfX0sX2NhY2hlTWFyZ2luczpmdW5jdGlvbigpe3RoaXMubWFyZ2lucz17bGVmdDpwYXJzZUludCh0aGlzLmVsZW1lbnQuY3NzKCJtYXJnaW5MZWZ0IiksMTApfHwwLHRvcDpwYXJzZUludCh0aGlzLmVsZW1lbnQuY3NzKCJtYXJnaW5Ub3AiKSwxMCl8fDAscmlnaHQ6cGFyc2VJbnQodGhpcy5lbGVtZW50LmNzcygibWFyZ2luUmlnaHQiKSwxMCl8fDAsYm90dG9tOnBhcnNlSW50KHRoaXMuZWxlbWVudC5jc3MoIm1hcmdpbkJvdHRvbSIpLDEwKXx8MH19LF9jYWNoZUhlbHBlclByb3BvcnRpb25zOmZ1bmN0aW9uKCl7dGhpcy5oZWxwZXJQcm9wb3J0aW9ucz17d2lkdGg6dGhpcy5oZWxwZXIub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmhlbHBlci5vdXRlckhlaWdodCgpfX0sX3NldENvbnRhaW5tZW50OmZ1bmN0aW9uKCl7dmFyIHQsaSxzLG49dGhpcy5vcHRpb25zLGE9dGhpcy5kb2N1bWVudFswXTtyZXR1cm4gdGhpcy5yZWxhdGl2ZUNvbnRhaW5lcj1udWxsLG4uY29udGFpbm1lbnQ/IndpbmRvdyI9PT1uLmNvbnRhaW5tZW50Pyh0aGlzLmNvbnRhaW5tZW50PVtlKHdpbmRvdykuc2Nyb2xsTGVmdCgpLXRoaXMub2Zmc2V0LnJlbGF0aXZlLmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQsZSh3aW5kb3cpLnNjcm9sbFRvcCgpLXRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wLGUod2luZG93KS5zY3JvbGxMZWZ0KCkrZSh3aW5kb3cpLndpZHRoKCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdCxlKHdpbmRvdykuc2Nyb2xsVG9wKCkrKGUod2luZG93KS5oZWlnaHQoKXx8YS5ib2R5LnBhcmVudE5vZGUuc2Nyb2xsSGVpZ2h0KS10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10aGlzLm1hcmdpbnMudG9wXSx2b2lkIDApOiJkb2N1bWVudCI9PT1uLmNvbnRhaW5tZW50Pyh0aGlzLmNvbnRhaW5tZW50PVswLDAsZShhKS53aWR0aCgpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsKGUoYSkuaGVpZ2h0KCl8fGEuYm9keS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF0sdm9pZCAwKTpuLmNvbnRhaW5tZW50LmNvbnN0cnVjdG9yPT09QXJyYXk/KHRoaXMuY29udGFpbm1lbnQ9bi5jb250YWlubWVudCx2b2lkIDApOigicGFyZW50Ij09PW4uY29udGFpbm1lbnQmJihuLmNvbnRhaW5tZW50PXRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGUpLGk9ZShuLmNvbnRhaW5tZW50KSxzPWlbMF0scyYmKHQ9LyhzY3JvbGx8YXV0bykvLnRlc3QoaS5jc3MoIm92ZXJmbG93IikpLHRoaXMuY29udGFpbm1lbnQ9WyhwYXJzZUludChpLmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKSsocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdMZWZ0IiksMTApfHwwKSwocGFyc2VJbnQoaS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSsocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdUb3AiKSwxMCl8fDApLCh0P01hdGgubWF4KHMuc2Nyb2xsV2lkdGgscy5vZmZzZXRXaWR0aCk6cy5vZmZzZXRXaWR0aCktKHBhcnNlSW50KGkuY3NzKCJib3JkZXJSaWdodFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdSaWdodCIpLDEwKXx8MCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdC10aGlzLm1hcmdpbnMucmlnaHQsKHQ/TWF0aC5tYXgocy5zY3JvbGxIZWlnaHQscy5vZmZzZXRIZWlnaHQpOnMub2Zmc2V0SGVpZ2h0KS0ocGFyc2VJbnQoaS5jc3MoImJvcmRlckJvdHRvbVdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdCb3R0b20iKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3AtdGhpcy5tYXJnaW5zLmJvdHRvbV0sdGhpcy5yZWxhdGl2ZUNvbnRhaW5lcj1pKSx2b2lkIDApOih0aGlzLmNvbnRhaW5tZW50PW51bGwsdm9pZCAwKX0sX2NvbnZlcnRQb3NpdGlvblRvOmZ1bmN0aW9uKGUsdCl7dHx8KHQ9dGhpcy5wb3NpdGlvbik7dmFyIGk9ImFic29sdXRlIj09PWU/MTotMSxzPXRoaXMuX2lzUm9vdE5vZGUodGhpcy5zY3JvbGxQYXJlbnRbMF0pO3JldHVybnt0b3A6dC50b3ArdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wKmkrdGhpcy5vZmZzZXQucGFyZW50LnRvcCppLSgiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5vZmZzZXQuc2Nyb2xsLnRvcDpzPzA6dGhpcy5vZmZzZXQuc2Nyb2xsLnRvcCkqaSxsZWZ0OnQubGVmdCt0aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0KmkrdGhpcy5vZmZzZXQucGFyZW50LmxlZnQqaS0oImZpeGVkIj09PXRoaXMuY3NzUG9zaXRpb24/LXRoaXMub2Zmc2V0LnNjcm9sbC5sZWZ0OnM/MDp0aGlzLm9mZnNldC5zY3JvbGwubGVmdCkqaX19LF9nZW5lcmF0ZVBvc2l0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIGkscyxuLGEsbz10aGlzLm9wdGlvbnMscj10aGlzLl9pc1Jvb3ROb2RlKHRoaXMuc2Nyb2xsUGFyZW50WzBdKSxoPWUucGFnZVgsbD1lLnBhZ2VZO3JldHVybiByJiZ0aGlzLm9mZnNldC5zY3JvbGx8fCh0aGlzLm9mZnNldC5zY3JvbGw9e3RvcDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSxsZWZ0OnRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKX0pLHQmJih0aGlzLmNvbnRhaW5tZW50JiYodGhpcy5yZWxhdGl2ZUNvbnRhaW5lcj8ocz10aGlzLnJlbGF0aXZlQ29udGFpbmVyLm9mZnNldCgpLGk9W3RoaXMuY29udGFpbm1lbnRbMF0rcy5sZWZ0LHRoaXMuY29udGFpbm1lbnRbMV0rcy50b3AsdGhpcy5jb250YWlubWVudFsyXStzLmxlZnQsdGhpcy5jb250YWlubWVudFszXStzLnRvcF0pOmk9dGhpcy5jb250YWlubWVudCxlLnBhZ2VYLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8aVswXSYmKGg9aVswXSt0aGlzLm9mZnNldC5jbGljay5sZWZ0KSxlLnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDxpWzFdJiYobD1pWzFdK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCksZS5wYWdlWC10aGlzLm9mZnNldC5jbGljay5sZWZ0PmlbMl0mJihoPWlbMl0rdGhpcy5vZmZzZXQuY2xpY2subGVmdCksZS5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A+aVszXSYmKGw9aVszXSt0aGlzLm9mZnNldC5jbGljay50b3ApKSxvLmdyaWQmJihuPW8uZ3JpZFsxXT90aGlzLm9yaWdpbmFsUGFnZVkrTWF0aC5yb3VuZCgobC10aGlzLm9yaWdpbmFsUGFnZVkpL28uZ3JpZFsxXSkqby5ncmlkWzFdOnRoaXMub3JpZ2luYWxQYWdlWSxsPWk/bi10aGlzLm9mZnNldC5jbGljay50b3A+PWlbMV18fG4tdGhpcy5vZmZzZXQuY2xpY2sudG9wPmlbM10/bjpuLXRoaXMub2Zmc2V0LmNsaWNrLnRvcD49aVsxXT9uLW8uZ3JpZFsxXTpuK28uZ3JpZFsxXTpuLGE9by5ncmlkWzBdP3RoaXMub3JpZ2luYWxQYWdlWCtNYXRoLnJvdW5kKChoLXRoaXMub3JpZ2luYWxQYWdlWCkvby5ncmlkWzBdKSpvLmdyaWRbMF06dGhpcy5vcmlnaW5hbFBhZ2VYLGg9aT9hLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+PWlbMF18fGEtdGhpcy5vZmZzZXQuY2xpY2subGVmdD5pWzJdP2E6YS10aGlzLm9mZnNldC5jbGljay5sZWZ0Pj1pWzBdP2Etby5ncmlkWzBdOmErby5ncmlkWzBdOmEpLCJ5Ij09PW8uYXhpcyYmKGg9dGhpcy5vcmlnaW5hbFBhZ2VYKSwieCI9PT1vLmF4aXMmJihsPXRoaXMub3JpZ2luYWxQYWdlWSkpLHt0b3A6bC10aGlzLm9mZnNldC5jbGljay50b3AtdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wLXRoaXMub2Zmc2V0LnBhcmVudC50b3ArKCJmaXhlZCI9PT10aGlzLmNzc1Bvc2l0aW9uPy10aGlzLm9mZnNldC5zY3JvbGwudG9wOnI/MDp0aGlzLm9mZnNldC5zY3JvbGwudG9wKSxsZWZ0OmgtdGhpcy5vZmZzZXQuY2xpY2subGVmdC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KygiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5vZmZzZXQuc2Nyb2xsLmxlZnQ6cj8wOnRoaXMub2Zmc2V0LnNjcm9sbC5sZWZ0KX19LF9jbGVhcjpmdW5jdGlvbigpe3RoaXMuaGVscGVyLnJlbW92ZUNsYXNzKCJ1aS1kcmFnZ2FibGUtZHJhZ2dpbmciKSx0aGlzLmhlbHBlclswXT09PXRoaXMuZWxlbWVudFswXXx8dGhpcy5jYW5jZWxIZWxwZXJSZW1vdmFsfHx0aGlzLmhlbHBlci5yZW1vdmUoKSx0aGlzLmhlbHBlcj1udWxsLHRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMSx0aGlzLmRlc3Ryb3lPbkNsZWFyJiZ0aGlzLmRlc3Ryb3koKX0sX25vcm1hbGl6ZVJpZ2h0Qm90dG9tOmZ1bmN0aW9uKCl7InkiIT09dGhpcy5vcHRpb25zLmF4aXMmJiJhdXRvIiE9PXRoaXMuaGVscGVyLmNzcygicmlnaHQiKSYmKHRoaXMuaGVscGVyLndpZHRoKHRoaXMuaGVscGVyLndpZHRoKCkpLHRoaXMuaGVscGVyLmNzcygicmlnaHQiLCJhdXRvIikpLCJ4IiE9PXRoaXMub3B0aW9ucy5heGlzJiYiYXV0byIhPT10aGlzLmhlbHBlci5jc3MoImJvdHRvbSIpJiYodGhpcy5oZWxwZXIuaGVpZ2h0KHRoaXMuaGVscGVyLmhlaWdodCgpKSx0aGlzLmhlbHBlci5jc3MoImJvdHRvbSIsImF1dG8iKSl9LF90cmlnZ2VyOmZ1bmN0aW9uKHQsaSxzKXtyZXR1cm4gcz1zfHx0aGlzLl91aUhhc2goKSxlLnVpLnBsdWdpbi5jYWxsKHRoaXMsdCxbaSxzLHRoaXNdLCEwKSwvXihkcmFnfHN0YXJ0fHN0b3ApLy50ZXN0KHQpJiYodGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKSxzLm9mZnNldD10aGlzLnBvc2l0aW9uQWJzKSxlLldpZGdldC5wcm90b3R5cGUuX3RyaWdnZXIuY2FsbCh0aGlzLHQsaSxzKX0scGx1Z2luczp7fSxfdWlIYXNoOmZ1bmN0aW9uKCl7cmV0dXJue2hlbHBlcjp0aGlzLmhlbHBlcixwb3NpdGlvbjp0aGlzLnBvc2l0aW9uLG9yaWdpbmFsUG9zaXRpb246dGhpcy5vcmlnaW5hbFBvc2l0aW9uLG9mZnNldDp0aGlzLnBvc2l0aW9uQWJzfX19KSxlLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsImNvbm5lY3RUb1NvcnRhYmxlIix7c3RhcnQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPWUuZXh0ZW5kKHt9LGkse2l0ZW06cy5lbGVtZW50fSk7cy5zb3J0YWJsZXM9W10sZShzLm9wdGlvbnMuY29ubmVjdFRvU29ydGFibGUpLmVhY2goZnVuY3Rpb24oKXt2YXIgaT1lKHRoaXMpLnNvcnRhYmxlKCJpbnN0YW5jZSIpO2kmJiFpLm9wdGlvbnMuZGlzYWJsZWQmJihzLnNvcnRhYmxlcy5wdXNoKGkpLGkucmVmcmVzaFBvc2l0aW9ucygpLGkuX3RyaWdnZXIoImFjdGl2YXRlIix0LG4pKX0pfSxzdG9wOmZ1bmN0aW9uKHQsaSxzKXt2YXIgbj1lLmV4dGVuZCh7fSxpLHtpdGVtOnMuZWxlbWVudH0pO3MuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMSxlLmVhY2gocy5zb3J0YWJsZXMsZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuaXNPdmVyPyhlLmlzT3Zlcj0wLHMuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMCxlLmNhbmNlbEhlbHBlclJlbW92YWw9ITEsZS5fc3RvcmVkQ1NTPXtwb3NpdGlvbjplLnBsYWNlaG9sZGVyLmNzcygicG9zaXRpb24iKSx0b3A6ZS5wbGFjZWhvbGRlci5jc3MoInRvcCIpLGxlZnQ6ZS5wbGFjZWhvbGRlci5jc3MoImxlZnQiKX0sZS5fbW91c2VTdG9wKHQpLGUub3B0aW9ucy5oZWxwZXI9ZS5vcHRpb25zLl9oZWxwZXIpOihlLmNhbmNlbEhlbHBlclJlbW92YWw9ITAsZS5fdHJpZ2dlcigiZGVhY3RpdmF0ZSIsdCxuKSl9KX0sZHJhZzpmdW5jdGlvbih0LGkscyl7ZS5lYWNoKHMuc29ydGFibGVzLGZ1bmN0aW9uKCl7dmFyIG49ITEsYT10aGlzO2EucG9zaXRpb25BYnM9cy5wb3NpdGlvbkFicyxhLmhlbHBlclByb3BvcnRpb25zPXMuaGVscGVyUHJvcG9ydGlvbnMsYS5vZmZzZXQuY2xpY2s9cy5vZmZzZXQuY2xpY2ssYS5faW50ZXJzZWN0c1dpdGgoYS5jb250YWluZXJDYWNoZSkmJihuPSEwLGUuZWFjaChzLnNvcnRhYmxlcyxmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9uQWJzPXMucG9zaXRpb25BYnMsdGhpcy5oZWxwZXJQcm9wb3J0aW9ucz1zLmhlbHBlclByb3BvcnRpb25zLHRoaXMub2Zmc2V0LmNsaWNrPXMub2Zmc2V0LmNsaWNrLHRoaXMhPT1hJiZ0aGlzLl9pbnRlcnNlY3RzV2l0aCh0aGlzLmNvbnRhaW5lckNhY2hlKSYmZS5jb250YWlucyhhLmVsZW1lbnRbMF0sdGhpcy5lbGVtZW50WzBdKSYmKG49ITEpLG4KfSkpLG4/KGEuaXNPdmVyfHwoYS5pc092ZXI9MSxzLl9wYXJlbnQ9aS5oZWxwZXIucGFyZW50KCksYS5jdXJyZW50SXRlbT1pLmhlbHBlci5hcHBlbmRUbyhhLmVsZW1lbnQpLmRhdGEoInVpLXNvcnRhYmxlLWl0ZW0iLCEwKSxhLm9wdGlvbnMuX2hlbHBlcj1hLm9wdGlvbnMuaGVscGVyLGEub3B0aW9ucy5oZWxwZXI9ZnVuY3Rpb24oKXtyZXR1cm4gaS5oZWxwZXJbMF19LHQudGFyZ2V0PWEuY3VycmVudEl0ZW1bMF0sYS5fbW91c2VDYXB0dXJlKHQsITApLGEuX21vdXNlU3RhcnQodCwhMCwhMCksYS5vZmZzZXQuY2xpY2sudG9wPXMub2Zmc2V0LmNsaWNrLnRvcCxhLm9mZnNldC5jbGljay5sZWZ0PXMub2Zmc2V0LmNsaWNrLmxlZnQsYS5vZmZzZXQucGFyZW50LmxlZnQtPXMub2Zmc2V0LnBhcmVudC5sZWZ0LWEub2Zmc2V0LnBhcmVudC5sZWZ0LGEub2Zmc2V0LnBhcmVudC50b3AtPXMub2Zmc2V0LnBhcmVudC50b3AtYS5vZmZzZXQucGFyZW50LnRvcCxzLl90cmlnZ2VyKCJ0b1NvcnRhYmxlIix0KSxzLmRyb3BwZWQ9YS5lbGVtZW50LGUuZWFjaChzLnNvcnRhYmxlcyxmdW5jdGlvbigpe3RoaXMucmVmcmVzaFBvc2l0aW9ucygpfSkscy5jdXJyZW50SXRlbT1zLmVsZW1lbnQsYS5mcm9tT3V0c2lkZT1zKSxhLmN1cnJlbnRJdGVtJiYoYS5fbW91c2VEcmFnKHQpLGkucG9zaXRpb249YS5wb3NpdGlvbikpOmEuaXNPdmVyJiYoYS5pc092ZXI9MCxhLmNhbmNlbEhlbHBlclJlbW92YWw9ITAsYS5vcHRpb25zLl9yZXZlcnQ9YS5vcHRpb25zLnJldmVydCxhLm9wdGlvbnMucmV2ZXJ0PSExLGEuX3RyaWdnZXIoIm91dCIsdCxhLl91aUhhc2goYSkpLGEuX21vdXNlU3RvcCh0LCEwKSxhLm9wdGlvbnMucmV2ZXJ0PWEub3B0aW9ucy5fcmV2ZXJ0LGEub3B0aW9ucy5oZWxwZXI9YS5vcHRpb25zLl9oZWxwZXIsYS5wbGFjZWhvbGRlciYmYS5wbGFjZWhvbGRlci5yZW1vdmUoKSxpLmhlbHBlci5hcHBlbmRUbyhzLl9wYXJlbnQpLHMuX3JlZnJlc2hPZmZzZXRzKHQpLGkucG9zaXRpb249cy5fZ2VuZXJhdGVQb3NpdGlvbih0LCEwKSxzLl90cmlnZ2VyKCJmcm9tU29ydGFibGUiLHQpLHMuZHJvcHBlZD0hMSxlLmVhY2gocy5zb3J0YWJsZXMsZnVuY3Rpb24oKXt0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKX0pKX0pfX0pLGUudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwiY3Vyc29yIix7c3RhcnQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPWUoImJvZHkiKSxhPXMub3B0aW9ucztuLmNzcygiY3Vyc29yIikmJihhLl9jdXJzb3I9bi5jc3MoImN1cnNvciIpKSxuLmNzcygiY3Vyc29yIixhLmN1cnNvcil9LHN0b3A6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPXMub3B0aW9ucztuLl9jdXJzb3ImJmUoImJvZHkiKS5jc3MoImN1cnNvciIsbi5fY3Vyc29yKX19KSxlLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsIm9wYWNpdHkiLHtzdGFydDpmdW5jdGlvbih0LGkscyl7dmFyIG49ZShpLmhlbHBlciksYT1zLm9wdGlvbnM7bi5jc3MoIm9wYWNpdHkiKSYmKGEuX29wYWNpdHk9bi5jc3MoIm9wYWNpdHkiKSksbi5jc3MoIm9wYWNpdHkiLGEub3BhY2l0eSl9LHN0b3A6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPXMub3B0aW9ucztuLl9vcGFjaXR5JiZlKGkuaGVscGVyKS5jc3MoIm9wYWNpdHkiLG4uX29wYWNpdHkpfX0pLGUudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwic2Nyb2xsIix7c3RhcnQ6ZnVuY3Rpb24oZSx0LGkpe2kuc2Nyb2xsUGFyZW50Tm90SGlkZGVufHwoaS5zY3JvbGxQYXJlbnROb3RIaWRkZW49aS5oZWxwZXIuc2Nyb2xsUGFyZW50KCExKSksaS5zY3JvbGxQYXJlbnROb3RIaWRkZW5bMF0hPT1pLmRvY3VtZW50WzBdJiYiSFRNTCIhPT1pLnNjcm9sbFBhcmVudE5vdEhpZGRlblswXS50YWdOYW1lJiYoaS5vdmVyZmxvd09mZnNldD1pLnNjcm9sbFBhcmVudE5vdEhpZGRlbi5vZmZzZXQoKSl9LGRyYWc6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPXMub3B0aW9ucyxhPSExLG89cy5zY3JvbGxQYXJlbnROb3RIaWRkZW5bMF0scj1zLmRvY3VtZW50WzBdO28hPT1yJiYiSFRNTCIhPT1vLnRhZ05hbWU/KG4uYXhpcyYmIngiPT09bi5heGlzfHwocy5vdmVyZmxvd09mZnNldC50b3Arby5vZmZzZXRIZWlnaHQtdC5wYWdlWTxuLnNjcm9sbFNlbnNpdGl2aXR5P28uc2Nyb2xsVG9wPWE9by5zY3JvbGxUb3Arbi5zY3JvbGxTcGVlZDp0LnBhZ2VZLXMub3ZlcmZsb3dPZmZzZXQudG9wPG4uc2Nyb2xsU2Vuc2l0aXZpdHkmJihvLnNjcm9sbFRvcD1hPW8uc2Nyb2xsVG9wLW4uc2Nyb2xsU3BlZWQpKSxuLmF4aXMmJiJ5Ij09PW4uYXhpc3x8KHMub3ZlcmZsb3dPZmZzZXQubGVmdCtvLm9mZnNldFdpZHRoLXQucGFnZVg8bi5zY3JvbGxTZW5zaXRpdml0eT9vLnNjcm9sbExlZnQ9YT1vLnNjcm9sbExlZnQrbi5zY3JvbGxTcGVlZDp0LnBhZ2VYLXMub3ZlcmZsb3dPZmZzZXQubGVmdDxuLnNjcm9sbFNlbnNpdGl2aXR5JiYoby5zY3JvbGxMZWZ0PWE9by5zY3JvbGxMZWZ0LW4uc2Nyb2xsU3BlZWQpKSk6KG4uYXhpcyYmIngiPT09bi5heGlzfHwodC5wYWdlWS1lKHIpLnNjcm9sbFRvcCgpPG4uc2Nyb2xsU2Vuc2l0aXZpdHk/YT1lKHIpLnNjcm9sbFRvcChlKHIpLnNjcm9sbFRvcCgpLW4uc2Nyb2xsU3BlZWQpOmUod2luZG93KS5oZWlnaHQoKS0odC5wYWdlWS1lKHIpLnNjcm9sbFRvcCgpKTxuLnNjcm9sbFNlbnNpdGl2aXR5JiYoYT1lKHIpLnNjcm9sbFRvcChlKHIpLnNjcm9sbFRvcCgpK24uc2Nyb2xsU3BlZWQpKSksbi5heGlzJiYieSI9PT1uLmF4aXN8fCh0LnBhZ2VYLWUocikuc2Nyb2xsTGVmdCgpPG4uc2Nyb2xsU2Vuc2l0aXZpdHk/YT1lKHIpLnNjcm9sbExlZnQoZShyKS5zY3JvbGxMZWZ0KCktbi5zY3JvbGxTcGVlZCk6ZSh3aW5kb3cpLndpZHRoKCktKHQucGFnZVgtZShyKS5zY3JvbGxMZWZ0KCkpPG4uc2Nyb2xsU2Vuc2l0aXZpdHkmJihhPWUocikuc2Nyb2xsTGVmdChlKHIpLnNjcm9sbExlZnQoKStuLnNjcm9sbFNwZWVkKSkpKSxhIT09ITEmJmUudWkuZGRtYW5hZ2VyJiYhbi5kcm9wQmVoYXZpb3VyJiZlLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyhzLHQpfX0pLGUudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwic25hcCIse3N0YXJ0OmZ1bmN0aW9uKHQsaSxzKXt2YXIgbj1zLm9wdGlvbnM7cy5zbmFwRWxlbWVudHM9W10sZShuLnNuYXAuY29uc3RydWN0b3IhPT1TdHJpbmc/bi5zbmFwLml0ZW1zfHwiOmRhdGEodWktZHJhZ2dhYmxlKSI6bi5zbmFwKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKSxpPXQub2Zmc2V0KCk7dGhpcyE9PXMuZWxlbWVudFswXSYmcy5zbmFwRWxlbWVudHMucHVzaCh7aXRlbTp0aGlzLHdpZHRoOnQub3V0ZXJXaWR0aCgpLGhlaWdodDp0Lm91dGVySGVpZ2h0KCksdG9wOmkudG9wLGxlZnQ6aS5sZWZ0fSl9KX0sZHJhZzpmdW5jdGlvbih0LGkscyl7dmFyIG4sYSxvLHIsaCxsLHUsZCxjLHAsZj1zLm9wdGlvbnMsbT1mLnNuYXBUb2xlcmFuY2UsZz1pLm9mZnNldC5sZWZ0LHY9ZytzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLHk9aS5vZmZzZXQudG9wLGI9eStzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodDtmb3IoYz1zLnNuYXBFbGVtZW50cy5sZW5ndGgtMTtjPj0wO2MtLSloPXMuc25hcEVsZW1lbnRzW2NdLmxlZnQtcy5tYXJnaW5zLmxlZnQsbD1oK3Muc25hcEVsZW1lbnRzW2NdLndpZHRoLHU9cy5zbmFwRWxlbWVudHNbY10udG9wLXMubWFyZ2lucy50b3AsZD11K3Muc25hcEVsZW1lbnRzW2NdLmhlaWdodCxoLW0+dnx8Zz5sK218fHUtbT5ifHx5PmQrbXx8IWUuY29udGFpbnMocy5zbmFwRWxlbWVudHNbY10uaXRlbS5vd25lckRvY3VtZW50LHMuc25hcEVsZW1lbnRzW2NdLml0ZW0pPyhzLnNuYXBFbGVtZW50c1tjXS5zbmFwcGluZyYmcy5vcHRpb25zLnNuYXAucmVsZWFzZSYmcy5vcHRpb25zLnNuYXAucmVsZWFzZS5jYWxsKHMuZWxlbWVudCx0LGUuZXh0ZW5kKHMuX3VpSGFzaCgpLHtzbmFwSXRlbTpzLnNuYXBFbGVtZW50c1tjXS5pdGVtfSkpLHMuc25hcEVsZW1lbnRzW2NdLnNuYXBwaW5nPSExKTooImlubmVyIiE9PWYuc25hcE1vZGUmJihuPW0+PU1hdGguYWJzKHUtYiksYT1tPj1NYXRoLmFicyhkLXkpLG89bT49TWF0aC5hYnMoaC12KSxyPW0+PU1hdGguYWJzKGwtZyksbiYmKGkucG9zaXRpb24udG9wPXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDp1LXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LGxlZnQ6MH0pLnRvcCksYSYmKGkucG9zaXRpb24udG9wPXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDpkLGxlZnQ6MH0pLnRvcCksbyYmKGkucG9zaXRpb24ubGVmdD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0Omgtcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aH0pLmxlZnQpLHImJihpLnBvc2l0aW9uLmxlZnQ9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOjAsbGVmdDpsfSkubGVmdCkpLHA9bnx8YXx8b3x8ciwib3V0ZXIiIT09Zi5zbmFwTW9kZSYmKG49bT49TWF0aC5hYnModS15KSxhPW0+PU1hdGguYWJzKGQtYiksbz1tPj1NYXRoLmFicyhoLWcpLHI9bT49TWF0aC5hYnMobC12KSxuJiYoaS5wb3NpdGlvbi50b3A9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOnUsbGVmdDowfSkudG9wKSxhJiYoaS5wb3NpdGlvbi50b3A9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOmQtcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQsbGVmdDowfSkudG9wKSxvJiYoaS5wb3NpdGlvbi5sZWZ0PXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDowLGxlZnQ6aH0pLmxlZnQpLHImJihpLnBvc2l0aW9uLmxlZnQ9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOjAsbGVmdDpsLXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGh9KS5sZWZ0KSksIXMuc25hcEVsZW1lbnRzW2NdLnNuYXBwaW5nJiYobnx8YXx8b3x8cnx8cCkmJnMub3B0aW9ucy5zbmFwLnNuYXAmJnMub3B0aW9ucy5zbmFwLnNuYXAuY2FsbChzLmVsZW1lbnQsdCxlLmV4dGVuZChzLl91aUhhc2goKSx7c25hcEl0ZW06cy5zbmFwRWxlbWVudHNbY10uaXRlbX0pKSxzLnNuYXBFbGVtZW50c1tjXS5zbmFwcGluZz1ufHxhfHxvfHxyfHxwKX19KSxlLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsInN0YWNrIix7c3RhcnQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuLGE9cy5vcHRpb25zLG89ZS5tYWtlQXJyYXkoZShhLnN0YWNrKSkuc29ydChmdW5jdGlvbih0LGkpe3JldHVybihwYXJzZUludChlKHQpLmNzcygiekluZGV4IiksMTApfHwwKS0ocGFyc2VJbnQoZShpKS5jc3MoInpJbmRleCIpLDEwKXx8MCl9KTtvLmxlbmd0aCYmKG49cGFyc2VJbnQoZShvWzBdKS5jc3MoInpJbmRleCIpLDEwKXx8MCxlKG8pLmVhY2goZnVuY3Rpb24odCl7ZSh0aGlzKS5jc3MoInpJbmRleCIsbit0KX0pLHRoaXMuY3NzKCJ6SW5kZXgiLG4rby5sZW5ndGgpKX19KSxlLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsInpJbmRleCIse3N0YXJ0OmZ1bmN0aW9uKHQsaSxzKXt2YXIgbj1lKGkuaGVscGVyKSxhPXMub3B0aW9ucztuLmNzcygiekluZGV4IikmJihhLl96SW5kZXg9bi5jc3MoInpJbmRleCIpKSxuLmNzcygiekluZGV4IixhLnpJbmRleCl9LHN0b3A6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPXMub3B0aW9ucztuLl96SW5kZXgmJmUoaS5oZWxwZXIpLmNzcygiekluZGV4IixuLl96SW5kZXgpfX0pLGUudWkuZHJhZ2dhYmxlLGUud2lkZ2V0KCJ1aS5kcm9wcGFibGUiLHt2ZXJzaW9uOiIxLjExLjQiLHdpZGdldEV2ZW50UHJlZml4OiJkcm9wIixvcHRpb25zOnthY2NlcHQ6IioiLGFjdGl2ZUNsYXNzOiExLGFkZENsYXNzZXM6ITAsZ3JlZWR5OiExLGhvdmVyQ2xhc3M6ITEsc2NvcGU6ImRlZmF1bHQiLHRvbGVyYW5jZToiaW50ZXJzZWN0IixhY3RpdmF0ZTpudWxsLGRlYWN0aXZhdGU6bnVsbCxkcm9wOm51bGwsb3V0Om51bGwsb3ZlcjpudWxsfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIHQsaT10aGlzLm9wdGlvbnMscz1pLmFjY2VwdDt0aGlzLmlzb3Zlcj0hMSx0aGlzLmlzb3V0PSEwLHRoaXMuYWNjZXB0PWUuaXNGdW5jdGlvbihzKT9zOmZ1bmN0aW9uKGUpe3JldHVybiBlLmlzKHMpfSx0aGlzLnByb3BvcnRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9YXJndW1lbnRzWzBdLHZvaWQgMCk6dD90OnQ9e3dpZHRoOnRoaXMuZWxlbWVudFswXS5vZmZzZXRXaWR0aCxoZWlnaHQ6dGhpcy5lbGVtZW50WzBdLm9mZnNldEhlaWdodH19LHRoaXMuX2FkZFRvTWFuYWdlcihpLnNjb3BlKSxpLmFkZENsYXNzZXMmJnRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktZHJvcHBhYmxlIil9LF9hZGRUb01hbmFnZXI6ZnVuY3Rpb24odCl7ZS51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0XT1lLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW3RdfHxbXSxlLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW3RdLnB1c2godGhpcyl9LF9zcGxpY2U6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7ZS5sZW5ndGg+dDt0KyspZVt0XT09PXRoaXMmJmUuc3BsaWNlKHQsMSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dmFyIHQ9ZS51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0aGlzLm9wdGlvbnMuc2NvcGVdO3RoaXMuX3NwbGljZSh0KSx0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWRyb3BwYWJsZSB1aS1kcm9wcGFibGUtZGlzYWJsZWQiKX0sX3NldE9wdGlvbjpmdW5jdGlvbih0LGkpe2lmKCJhY2NlcHQiPT09dCl0aGlzLmFjY2VwdD1lLmlzRnVuY3Rpb24oaSk/aTpmdW5jdGlvbihlKXtyZXR1cm4gZS5pcyhpKX07ZWxzZSBpZigic2NvcGUiPT09dCl7dmFyIHM9ZS51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0aGlzLm9wdGlvbnMuc2NvcGVdO3RoaXMuX3NwbGljZShzKSx0aGlzLl9hZGRUb01hbmFnZXIoaSl9dGhpcy5fc3VwZXIodCxpKX0sX2FjdGl2YXRlOmZ1bmN0aW9uKHQpe3ZhciBpPWUudWkuZGRtYW5hZ2VyLmN1cnJlbnQ7dGhpcy5vcHRpb25zLmFjdGl2ZUNsYXNzJiZ0aGlzLmVsZW1lbnQuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmFjdGl2ZUNsYXNzKSxpJiZ0aGlzLl90cmlnZ2VyKCJhY3RpdmF0ZSIsdCx0aGlzLnVpKGkpKX0sX2RlYWN0aXZhdGU6ZnVuY3Rpb24odCl7dmFyIGk9ZS51aS5kZG1hbmFnZXIuY3VycmVudDt0aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MmJnRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MpLGkmJnRoaXMuX3RyaWdnZXIoImRlYWN0aXZhdGUiLHQsdGhpcy51aShpKSl9LF9vdmVyOmZ1bmN0aW9uKHQpe3ZhciBpPWUudWkuZGRtYW5hZ2VyLmN1cnJlbnQ7aSYmKGkuY3VycmVudEl0ZW18fGkuZWxlbWVudClbMF0hPT10aGlzLmVsZW1lbnRbMF0mJnRoaXMuYWNjZXB0LmNhbGwodGhpcy5lbGVtZW50WzBdLGkuY3VycmVudEl0ZW18fGkuZWxlbWVudCkmJih0aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyYmdGhpcy5lbGVtZW50LmFkZENsYXNzKHRoaXMub3B0aW9ucy5ob3ZlckNsYXNzKSx0aGlzLl90cmlnZ2VyKCJvdmVyIix0LHRoaXMudWkoaSkpKX0sX291dDpmdW5jdGlvbih0KXt2YXIgaT1lLnVpLmRkbWFuYWdlci5jdXJyZW50O2kmJihpLmN1cnJlbnRJdGVtfHxpLmVsZW1lbnQpWzBdIT09dGhpcy5lbGVtZW50WzBdJiZ0aGlzLmFjY2VwdC5jYWxsKHRoaXMuZWxlbWVudFswXSxpLmN1cnJlbnRJdGVtfHxpLmVsZW1lbnQpJiYodGhpcy5vcHRpb25zLmhvdmVyQ2xhc3MmJnRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyksdGhpcy5fdHJpZ2dlcigib3V0Iix0LHRoaXMudWkoaSkpKX0sX2Ryb3A6ZnVuY3Rpb24odCxpKXt2YXIgcz1pfHxlLnVpLmRkbWFuYWdlci5jdXJyZW50LG49ITE7cmV0dXJuIHMmJihzLmN1cnJlbnRJdGVtfHxzLmVsZW1lbnQpWzBdIT09dGhpcy5lbGVtZW50WzBdPyh0aGlzLmVsZW1lbnQuZmluZCgiOmRhdGEodWktZHJvcHBhYmxlKSIpLm5vdCgiLnVpLWRyYWdnYWJsZS1kcmFnZ2luZyIpLmVhY2goZnVuY3Rpb24oKXt2YXIgaT1lKHRoaXMpLmRyb3BwYWJsZSgiaW5zdGFuY2UiKTtyZXR1cm4gaS5vcHRpb25zLmdyZWVkeSYmIWkub3B0aW9ucy5kaXNhYmxlZCYmaS5vcHRpb25zLnNjb3BlPT09cy5vcHRpb25zLnNjb3BlJiZpLmFjY2VwdC5jYWxsKGkuZWxlbWVudFswXSxzLmN1cnJlbnRJdGVtfHxzLmVsZW1lbnQpJiZlLnVpLmludGVyc2VjdChzLGUuZXh0ZW5kKGkse29mZnNldDppLmVsZW1lbnQub2Zmc2V0KCl9KSxpLm9wdGlvbnMudG9sZXJhbmNlLHQpPyhuPSEwLCExKTp2b2lkIDB9KSxuPyExOnRoaXMuYWNjZXB0LmNhbGwodGhpcy5lbGVtZW50WzBdLHMuY3VycmVudEl0ZW18fHMuZWxlbWVudCk/KHRoaXMub3B0aW9ucy5hY3RpdmVDbGFzcyYmdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5hY3RpdmVDbGFzcyksdGhpcy5vcHRpb25zLmhvdmVyQ2xhc3MmJnRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyksdGhpcy5fdHJpZ2dlcigiZHJvcCIsdCx0aGlzLnVpKHMpKSx0aGlzLmVsZW1lbnQpOiExKTohMX0sdWk6ZnVuY3Rpb24oZSl7cmV0dXJue2RyYWdnYWJsZTplLmN1cnJlbnRJdGVtfHxlLmVsZW1lbnQsaGVscGVyOmUuaGVscGVyLHBvc2l0aW9uOmUucG9zaXRpb24sb2Zmc2V0OmUucG9zaXRpb25BYnN9fX0pLGUudWkuaW50ZXJzZWN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsaSl7cmV0dXJuIGU+PXQmJnQraT5lfXJldHVybiBmdW5jdGlvbih0LGkscyxuKXtpZighaS5vZmZzZXQpcmV0dXJuITE7dmFyIGE9KHQucG9zaXRpb25BYnN8fHQucG9zaXRpb24uYWJzb2x1dGUpLmxlZnQrdC5tYXJnaW5zLmxlZnQsbz0odC5wb3NpdGlvbkFic3x8dC5wb3NpdGlvbi5hYnNvbHV0ZSkudG9wK3QubWFyZ2lucy50b3Ascj1hK3QuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgsaD1vK3QuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LGw9aS5vZmZzZXQubGVmdCx1PWkub2Zmc2V0LnRvcCxkPWwraS5wcm9wb3J0aW9ucygpLndpZHRoLGM9dStpLnByb3BvcnRpb25zKCkuaGVpZ2h0O3N3aXRjaChzKXtjYXNlImZpdCI6cmV0dXJuIGE+PWwmJmQ+PXImJm8+PXUmJmM+PWg7Y2FzZSJpbnRlcnNlY3QiOnJldHVybiBhK3QuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMj5sJiZkPnItdC5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC8yJiZvK3QuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LzI+dSYmYz5oLXQuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LzI7Y2FzZSJwb2ludGVyIjpyZXR1cm4gZShuLnBhZ2VZLHUsaS5wcm9wb3J0aW9ucygpLmhlaWdodCkmJmUobi5wYWdlWCxsLGkucHJvcG9ydGlvbnMoKS53aWR0aCk7Y2FzZSJ0b3VjaCI6cmV0dXJuKG8+PXUmJmM+PW98fGg+PXUmJmM+PWh8fHU+byYmaD5jKSYmKGE+PWwmJmQ+PWF8fHI+PWwmJmQ+PXJ8fGw+YSYmcj5kKTtkZWZhdWx0OnJldHVybiExfX19KCksZS51aS5kZG1hbmFnZXI9e2N1cnJlbnQ6bnVsbCxkcm9wcGFibGVzOnsiZGVmYXVsdCI6W119LHByZXBhcmVPZmZzZXRzOmZ1bmN0aW9uKHQsaSl7dmFyIHMsbixhPWUudWkuZGRtYW5hZ2VyLmRyb3BwYWJsZXNbdC5vcHRpb25zLnNjb3BlXXx8W10sbz1pP2kudHlwZTpudWxsLHI9KHQuY3VycmVudEl0ZW18fHQuZWxlbWVudCkuZmluZCgiOmRhdGEodWktZHJvcHBhYmxlKSIpLmFkZEJhY2soKTtlOmZvcihzPTA7YS5sZW5ndGg+cztzKyspaWYoIShhW3NdLm9wdGlvbnMuZGlzYWJsZWR8fHQmJiFhW3NdLmFjY2VwdC5jYWxsKGFbc10uZWxlbWVudFswXSx0LmN1cnJlbnRJdGVtfHx0LmVsZW1lbnQpKSl7Zm9yKG49MDtyLmxlbmd0aD5uO24rKylpZihyW25dPT09YVtzXS5lbGVtZW50WzBdKXthW3NdLnByb3BvcnRpb25zKCkuaGVpZ2h0PTA7Y29udGludWUgZX1hW3NdLnZpc2libGU9Im5vbmUiIT09YVtzXS5lbGVtZW50LmNzcygiZGlzcGxheSIpLGFbc10udmlzaWJsZSYmKCJtb3VzZWRvd24iPT09byYmYVtzXS5fYWN0aXZhdGUuY2FsbChhW3NdLGkpLGFbc10ub2Zmc2V0PWFbc10uZWxlbWVudC5vZmZzZXQoKSxhW3NdLnByb3BvcnRpb25zKHt3aWR0aDphW3NdLmVsZW1lbnRbMF0ub2Zmc2V0V2lkdGgsaGVpZ2h0OmFbc10uZWxlbWVudFswXS5vZmZzZXRIZWlnaHR9KSl9fSxkcm9wOmZ1bmN0aW9uKHQsaSl7dmFyIHM9ITE7cmV0dXJuIGUuZWFjaCgoZS51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0Lm9wdGlvbnMuc2NvcGVdfHxbXSkuc2xpY2UoKSxmdW5jdGlvbigpe3RoaXMub3B0aW9ucyYmKCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMudmlzaWJsZSYmZS51aS5pbnRlcnNlY3QodCx0aGlzLHRoaXMub3B0aW9ucy50b2xlcmFuY2UsaSkmJihzPXRoaXMuX2Ryb3AuY2FsbCh0aGlzLGkpfHxzKSwhdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLnZpc2libGUmJnRoaXMuYWNjZXB0LmNhbGwodGhpcy5lbGVtZW50WzBdLHQuY3VycmVudEl0ZW18fHQuZWxlbWVudCkmJih0aGlzLmlzb3V0PSEwLHRoaXMuaXNvdmVyPSExLHRoaXMuX2RlYWN0aXZhdGUuY2FsbCh0aGlzLGkpKSl9KSxzfSxkcmFnU3RhcnQ6ZnVuY3Rpb24odCxpKXt0LmVsZW1lbnQucGFyZW50c1VudGlsKCJib2R5IikuYmluZCgic2Nyb2xsLmRyb3BwYWJsZSIsZnVuY3Rpb24oKXt0Lm9wdGlvbnMucmVmcmVzaFBvc2l0aW9uc3x8ZS51aS5kZG1hbmFnZXIucHJlcGFyZU9mZnNldHModCxpKX0pfSxkcmFnOmZ1bmN0aW9uKHQsaSl7dC5vcHRpb25zLnJlZnJlc2hQb3NpdGlvbnMmJmUudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHQsaSksZS5lYWNoKGUudWkuZGRtYW5hZ2VyLmRyb3BwYWJsZXNbdC5vcHRpb25zLnNjb3BlXXx8W10sZnVuY3Rpb24oKXtpZighdGhpcy5vcHRpb25zLmRpc2FibGVkJiYhdGhpcy5ncmVlZHlDaGlsZCYmdGhpcy52aXNpYmxlKXt2YXIgcyxuLGEsbz1lLnVpLmludGVyc2VjdCh0LHRoaXMsdGhpcy5vcHRpb25zLnRvbGVyYW5jZSxpKSxyPSFvJiZ0aGlzLmlzb3Zlcj8iaXNvdXQiOm8mJiF0aGlzLmlzb3Zlcj8iaXNvdmVyIjpudWxsO3ImJih0aGlzLm9wdGlvbnMuZ3JlZWR5JiYobj10aGlzLm9wdGlvbnMuc2NvcGUsYT10aGlzLmVsZW1lbnQucGFyZW50cygiOmRhdGEodWktZHJvcHBhYmxlKSIpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiBlKHRoaXMpLmRyb3BwYWJsZSgiaW5zdGFuY2UiKS5vcHRpb25zLnNjb3BlPT09bn0pLGEubGVuZ3RoJiYocz1lKGFbMF0pLmRyb3BwYWJsZSgiaW5zdGFuY2UiKSxzLmdyZWVkeUNoaWxkPSJpc292ZXIiPT09cikpLHMmJiJpc292ZXIiPT09ciYmKHMuaXNvdmVyPSExLHMuaXNvdXQ9ITAscy5fb3V0LmNhbGwocyxpKSksdGhpc1tyXT0hMCx0aGlzWyJpc291dCI9PT1yPyJpc292ZXIiOiJpc291dCJdPSExLHRoaXNbImlzb3ZlciI9PT1yPyJfb3ZlciI6Il9vdXQiXS5jYWxsKHRoaXMsaSkscyYmImlzb3V0Ij09PXImJihzLmlzb3V0PSExLHMuaXNvdmVyPSEwLHMuX292ZXIuY2FsbChzLGkpKSl9fSl9LGRyYWdTdG9wOmZ1bmN0aW9uKHQsaSl7dC5lbGVtZW50LnBhcmVudHNVbnRpbCgiYm9keSIpLnVuYmluZCgic2Nyb2xsLmRyb3BwYWJsZSIpLHQub3B0aW9ucy5yZWZyZXNoUG9zaXRpb25zfHxlLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0LGkpfX0sZS51aS5kcm9wcGFibGUsZS53aWRnZXQoInVpLnJlc2l6YWJsZSIsZS51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMS40Iix3aWRnZXRFdmVudFByZWZpeDoicmVzaXplIixvcHRpb25zOnthbHNvUmVzaXplOiExLGFuaW1hdGU6ITEsYW5pbWF0ZUR1cmF0aW9uOiJzbG93IixhbmltYXRlRWFzaW5nOiJzd2luZyIsYXNwZWN0UmF0aW86ITEsYXV0b0hpZGU6ITEsY29udGFpbm1lbnQ6ITEsZ2hvc3Q6ITEsZ3JpZDohMSxoYW5kbGVzOiJlLHMsc2UiLGhlbHBlcjohMSxtYXhIZWlnaHQ6bnVsbCxtYXhXaWR0aDpudWxsLG1pbkhlaWdodDoxMCxtaW5XaWR0aDoxMCx6SW5kZXg6OTAscmVzaXplOm51bGwsc3RhcnQ6bnVsbCxzdG9wOm51bGx9LF9udW06ZnVuY3Rpb24oZSl7cmV0dXJuIHBhcnNlSW50KGUsMTApfHwwfSxfaXNOdW1iZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIWlzTmFOKHBhcnNlSW50KGUsMTApKX0sX2hhc1Njcm9sbDpmdW5jdGlvbih0LGkpe2lmKCJoaWRkZW4iPT09ZSh0KS5jc3MoIm92ZXJmbG93IikpcmV0dXJuITE7dmFyIHM9aSYmImxlZnQiPT09aT8ic2Nyb2xsTGVmdCI6InNjcm9sbFRvcCIsbj0hMTtyZXR1cm4gdFtzXT4wPyEwOih0W3NdPTEsbj10W3NdPjAsdFtzXT0wLG4pfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIHQsaSxzLG4sYSxvPXRoaXMscj10aGlzLm9wdGlvbnM7aWYodGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1yZXNpemFibGUiKSxlLmV4dGVuZCh0aGlzLHtfYXNwZWN0UmF0aW86ISFyLmFzcGVjdFJhdGlvLGFzcGVjdFJhdGlvOnIuYXNwZWN0UmF0aW8sb3JpZ2luYWxFbGVtZW50OnRoaXMuZWxlbWVudCxfcHJvcG9ydGlvbmFsbHlSZXNpemVFbGVtZW50czpbXSxfaGVscGVyOnIuaGVscGVyfHxyLmdob3N0fHxyLmFuaW1hdGU/ci5oZWxwZXJ8fCJ1aS1yZXNpemFibGUtaGVscGVyIjpudWxsfSksdGhpcy5lbGVtZW50WzBdLm5vZGVOYW1lLm1hdGNoKC9eKGNhbnZhc3x0ZXh0YXJlYXxpbnB1dHxzZWxlY3R8YnV0dG9ufGltZykkL2kpJiYodGhpcy5lbGVtZW50LndyYXAoZSgiPGRpdiBjbGFzcz0ndWktd3JhcHBlcicgc3R5bGU9J292ZXJmbG93OiBoaWRkZW47Jz48L2Rpdj4iKS5jc3Moe3Bvc2l0aW9uOnRoaXMuZWxlbWVudC5jc3MoInBvc2l0aW9uIiksd2lkdGg6dGhpcy5lbGVtZW50Lm91dGVyV2lkdGgoKSxoZWlnaHQ6dGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0KCksdG9wOnRoaXMuZWxlbWVudC5jc3MoInRvcCIpLGxlZnQ6dGhpcy5lbGVtZW50LmNzcygibGVmdCIpfSkpLHRoaXMuZWxlbWVudD10aGlzLmVsZW1lbnQucGFyZW50KCkuZGF0YSgidWktcmVzaXphYmxlIix0aGlzLmVsZW1lbnQucmVzaXphYmxlKCJpbnN0YW5jZSIpKSx0aGlzLmVsZW1lbnRJc1dyYXBwZXI9ITAsdGhpcy5lbGVtZW50LmNzcyh7bWFyZ2luTGVmdDp0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIm1hcmdpbkxlZnQiKSxtYXJnaW5Ub3A6dGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJtYXJnaW5Ub3AiKSxtYXJnaW5SaWdodDp0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIm1hcmdpblJpZ2h0IiksbWFyZ2luQm90dG9tOnRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygibWFyZ2luQm90dG9tIil9KSx0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3Moe21hcmdpbkxlZnQ6MCxtYXJnaW5Ub3A6MCxtYXJnaW5SaWdodDowLG1hcmdpbkJvdHRvbTowfSksdGhpcy5vcmlnaW5hbFJlc2l6ZVN0eWxlPXRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygicmVzaXplIiksdGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJyZXNpemUiLCJub25lIiksdGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemVFbGVtZW50cy5wdXNoKHRoaXMub3JpZ2luYWxFbGVtZW50LmNzcyh7cG9zaXRpb246InN0YXRpYyIsem9vbToxLGRpc3BsYXk6ImJsb2NrIn0pKSx0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3Moe21hcmdpbjp0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIm1hcmdpbiIpfSksdGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemUoKSksdGhpcy5oYW5kbGVzPXIuaGFuZGxlc3x8KGUoIi51aS1yZXNpemFibGUtaGFuZGxlIix0aGlzLmVsZW1lbnQpLmxlbmd0aD97bjoiLnVpLXJlc2l6YWJsZS1uIixlOiIudWktcmVzaXphYmxlLWUiLHM6Ii51aS1yZXNpemFibGUtcyIsdzoiLnVpLXJlc2l6YWJsZS13IixzZToiLnVpLXJlc2l6YWJsZS1zZSIsc3c6Ii51aS1yZXNpemFibGUtc3ciLG5lOiIudWktcmVzaXphYmxlLW5lIixudzoiLnVpLXJlc2l6YWJsZS1udyJ9OiJlLHMsc2UiKSx0aGlzLl9oYW5kbGVzPWUoKSx0aGlzLmhhbmRsZXMuY29uc3RydWN0b3I9PT1TdHJpbmcpZm9yKCJhbGwiPT09dGhpcy5oYW5kbGVzJiYodGhpcy5oYW5kbGVzPSJuLGUscyx3LHNlLHN3LG5lLG53IiksdD10aGlzLmhhbmRsZXMuc3BsaXQoIiwiKSx0aGlzLmhhbmRsZXM9e30saT0wO3QubGVuZ3RoPmk7aSsrKXM9ZS50cmltKHRbaV0pLGE9InVpLXJlc2l6YWJsZS0iK3Msbj1lKCI8ZGl2IGNsYXNzPSd1aS1yZXNpemFibGUtaGFuZGxlICIrYSsiJz48L2Rpdj4iKSxuLmNzcyh7ekluZGV4OnIuekluZGV4fSksInNlIj09PXMmJm4uYWRkQ2xhc3MoInVpLWljb24gdWktaWNvbi1ncmlwc21hbGwtZGlhZ29uYWwtc2UiKSx0aGlzLmhhbmRsZXNbc109Ii51aS1yZXNpemFibGUtIitzLHRoaXMuZWxlbWVudC5hcHBlbmQobik7dGhpcy5fcmVuZGVyQXhpcz1mdW5jdGlvbih0KXt2YXIgaSxzLG4sYTt0PXR8fHRoaXMuZWxlbWVudDtmb3IoaSBpbiB0aGlzLmhhbmRsZXMpdGhpcy5oYW5kbGVzW2ldLmNvbnN0cnVjdG9yPT09U3RyaW5nP3RoaXMuaGFuZGxlc1tpXT10aGlzLmVsZW1lbnQuY2hpbGRyZW4odGhpcy5oYW5kbGVzW2ldKS5maXJzdCgpLnNob3coKToodGhpcy5oYW5kbGVzW2ldLmpxdWVyeXx8dGhpcy5oYW5kbGVzW2ldLm5vZGVUeXBlKSYmKHRoaXMuaGFuZGxlc1tpXT1lKHRoaXMuaGFuZGxlc1tpXSksdGhpcy5fb24odGhpcy5oYW5kbGVzW2ldLHttb3VzZWRvd246by5fbW91c2VEb3dufSkpLHRoaXMuZWxlbWVudElzV3JhcHBlciYmdGhpcy5vcmlnaW5hbEVsZW1lbnRbMF0ubm9kZU5hbWUubWF0Y2goL14odGV4dGFyZWF8aW5wdXR8c2VsZWN0fGJ1dHRvbikkL2kpJiYocz1lKHRoaXMuaGFuZGxlc1tpXSx0aGlzLmVsZW1lbnQpLGE9L3N3fG5lfG53fHNlfG58cy8udGVzdChpKT9zLm91dGVySGVpZ2h0KCk6cy5vdXRlcldpZHRoKCksbj1bInBhZGRpbmciLC9uZXxud3xuLy50ZXN0KGkpPyJUb3AiOi9zZXxzd3xzLy50ZXN0KGkpPyJCb3R0b20iOi9eZSQvLnRlc3QoaSk/IlJpZ2h0IjoiTGVmdCJdLmpvaW4oIiIpLHQuY3NzKG4sYSksdGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemUoKSksdGhpcy5faGFuZGxlcz10aGlzLl9oYW5kbGVzLmFkZCh0aGlzLmhhbmRsZXNbaV0pfSx0aGlzLl9yZW5kZXJBeGlzKHRoaXMuZWxlbWVudCksdGhpcy5faGFuZGxlcz10aGlzLl9oYW5kbGVzLmFkZCh0aGlzLmVsZW1lbnQuZmluZCgiLnVpLXJlc2l6YWJsZS1oYW5kbGUiKSksdGhpcy5faGFuZGxlcy5kaXNhYmxlU2VsZWN0aW9uKCksdGhpcy5faGFuZGxlcy5tb3VzZW92ZXIoZnVuY3Rpb24oKXtvLnJlc2l6aW5nfHwodGhpcy5jbGFzc05hbWUmJihuPXRoaXMuY2xhc3NOYW1lLm1hdGNoKC91aS1yZXNpemFibGUtKHNlfHN3fG5lfG53fG58ZXxzfHcpL2kpKSxvLmF4aXM9biYmblsxXT9uWzFdOiJzZSIpfSksci5hdXRvSGlkZSYmKHRoaXMuX2hhbmRsZXMuaGlkZSgpLGUodGhpcy5lbGVtZW50KS5hZGRDbGFzcygidWktcmVzaXphYmxlLWF1dG9oaWRlIikubW91c2VlbnRlcihmdW5jdGlvbigpe3IuZGlzYWJsZWR8fChlKHRoaXMpLnJlbW92ZUNsYXNzKCJ1aS1yZXNpemFibGUtYXV0b2hpZGUiKSxvLl9oYW5kbGVzLnNob3coKSl9KS5tb3VzZWxlYXZlKGZ1bmN0aW9uKCl7ci5kaXNhYmxlZHx8by5yZXNpemluZ3x8KGUodGhpcykuYWRkQ2xhc3MoInVpLXJlc2l6YWJsZS1hdXRvaGlkZSIpLG8uX2hhbmRsZXMuaGlkZSgpKX0pKSx0aGlzLl9tb3VzZUluaXQoKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9tb3VzZURlc3Ryb3koKTt2YXIgdCxpPWZ1bmN0aW9uKHQpe2UodCkucmVtb3ZlQ2xhc3MoInVpLXJlc2l6YWJsZSB1aS1yZXNpemFibGUtZGlzYWJsZWQgdWktcmVzaXphYmxlLXJlc2l6aW5nIikucmVtb3ZlRGF0YSgicmVzaXphYmxlIikucmVtb3ZlRGF0YSgidWktcmVzaXphYmxlIikudW5iaW5kKCIucmVzaXphYmxlIikuZmluZCgiLnVpLXJlc2l6YWJsZS1oYW5kbGUiKS5yZW1vdmUoKX07cmV0dXJuIHRoaXMuZWxlbWVudElzV3JhcHBlciYmKGkodGhpcy5lbGVtZW50KSx0PXRoaXMuZWxlbWVudCx0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3Moe3Bvc2l0aW9uOnQuY3NzKCJwb3NpdGlvbiIpLHdpZHRoOnQub3V0ZXJXaWR0aCgpLGhlaWdodDp0Lm91dGVySGVpZ2h0KCksdG9wOnQuY3NzKCJ0b3AiKSxsZWZ0OnQuY3NzKCJsZWZ0Iil9KS5pbnNlcnRBZnRlcih0KSx0LnJlbW92ZSgpKSx0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoInJlc2l6ZSIsdGhpcy5vcmlnaW5hbFJlc2l6ZVN0eWxlKSxpKHRoaXMub3JpZ2luYWxFbGVtZW50KSx0aGlzfSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKHQpe3ZhciBpLHMsbj0hMTtmb3IoaSBpbiB0aGlzLmhhbmRsZXMpcz1lKHRoaXMuaGFuZGxlc1tpXSlbMF0sKHM9PT10LnRhcmdldHx8ZS5jb250YWlucyhzLHQudGFyZ2V0KSkmJihuPSEwKTtyZXR1cm4hdGhpcy5vcHRpb25zLmRpc2FibGVkJiZufSxfbW91c2VTdGFydDpmdW5jdGlvbih0KXt2YXIgaSxzLG4sYT10aGlzLm9wdGlvbnMsbz10aGlzLmVsZW1lbnQ7cmV0dXJuIHRoaXMucmVzaXppbmc9ITAsdGhpcy5fcmVuZGVyUHJveHkoKSxpPXRoaXMuX251bSh0aGlzLmhlbHBlci5jc3MoImxlZnQiKSkscz10aGlzLl9udW0odGhpcy5oZWxwZXIuY3NzKCJ0b3AiKSksYS5jb250YWlubWVudCYmKGkrPWUoYS5jb250YWlubWVudCkuc2Nyb2xsTGVmdCgpfHwwLHMrPWUoYS5jb250YWlubWVudCkuc2Nyb2xsVG9wKCl8fDApLHRoaXMub2Zmc2V0PXRoaXMuaGVscGVyLm9mZnNldCgpLHRoaXMucG9zaXRpb249e2xlZnQ6aSx0b3A6c30sdGhpcy5zaXplPXRoaXMuX2hlbHBlcj97d2lkdGg6dGhpcy5oZWxwZXIud2lkdGgoKSxoZWlnaHQ6dGhpcy5oZWxwZXIuaGVpZ2h0KCl9Ont3aWR0aDpvLndpZHRoKCksaGVpZ2h0Om8uaGVpZ2h0KCl9LHRoaXMub3JpZ2luYWxTaXplPXRoaXMuX2hlbHBlcj97d2lkdGg6by5vdXRlcldpZHRoKCksaGVpZ2h0Om8ub3V0ZXJIZWlnaHQoKX06e3dpZHRoOm8ud2lkdGgoKSxoZWlnaHQ6by5oZWlnaHQoKX0sdGhpcy5zaXplRGlmZj17d2lkdGg6by5vdXRlcldpZHRoKCktby53aWR0aCgpLGhlaWdodDpvLm91dGVySGVpZ2h0KCktby5oZWlnaHQoKX0sdGhpcy5vcmlnaW5hbFBvc2l0aW9uPXtsZWZ0OmksdG9wOnN9LHRoaXMub3JpZ2luYWxNb3VzZVBvc2l0aW9uPXtsZWZ0OnQucGFnZVgsdG9wOnQucGFnZVl9LHRoaXMuYXNwZWN0UmF0aW89Im51bWJlciI9PXR5cGVvZiBhLmFzcGVjdFJhdGlvP2EuYXNwZWN0UmF0aW86dGhpcy5vcmlnaW5hbFNpemUud2lkdGgvdGhpcy5vcmlnaW5hbFNpemUuaGVpZ2h0fHwxLG49ZSgiLnVpLXJlc2l6YWJsZS0iK3RoaXMuYXhpcykuY3NzKCJjdXJzb3IiKSxlKCJib2R5IikuY3NzKCJjdXJzb3IiLCJhdXRvIj09PW4/dGhpcy5heGlzKyItcmVzaXplIjpuKSxvLmFkZENsYXNzKCJ1aS1yZXNpemFibGUtcmVzaXppbmciKSx0aGlzLl9wcm9wYWdhdGUoInN0YXJ0Iix0KSwhMH0sX21vdXNlRHJhZzpmdW5jdGlvbih0KXt2YXIgaSxzLG49dGhpcy5vcmlnaW5hbE1vdXNlUG9zaXRpb24sYT10aGlzLmF4aXMsbz10LnBhZ2VYLW4ubGVmdHx8MCxyPXQucGFnZVktbi50b3B8fDAsaD10aGlzLl9jaGFuZ2VbYV07cmV0dXJuIHRoaXMuX3VwZGF0ZVByZXZQcm9wZXJ0aWVzKCksaD8oaT1oLmFwcGx5KHRoaXMsW3QsbyxyXSksdGhpcy5fdXBkYXRlVmlydHVhbEJvdW5kYXJpZXModC5zaGlmdEtleSksKHRoaXMuX2FzcGVjdFJhdGlvfHx0LnNoaWZ0S2V5KSYmKGk9dGhpcy5fdXBkYXRlUmF0aW8oaSx0KSksaT10aGlzLl9yZXNwZWN0U2l6ZShpLHQpLHRoaXMuX3VwZGF0ZUNhY2hlKGkpLHRoaXMuX3Byb3BhZ2F0ZSgicmVzaXplIix0KSxzPXRoaXMuX2FwcGx5Q2hhbmdlcygpLCF0aGlzLl9oZWxwZXImJnRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoJiZ0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZSgpLGUuaXNFbXB0eU9iamVjdChzKXx8KHRoaXMuX3VwZGF0ZVByZXZQcm9wZXJ0aWVzKCksdGhpcy5fdHJpZ2dlcigicmVzaXplIix0LHRoaXMudWkoKSksdGhpcy5fYXBwbHlDaGFuZ2VzKCkpLCExKTohMX0sX21vdXNlU3RvcDpmdW5jdGlvbih0KXt0aGlzLnJlc2l6aW5nPSExO3ZhciBpLHMsbixhLG8scixoLGw9dGhpcy5vcHRpb25zLHU9dGhpcztyZXR1cm4gdGhpcy5faGVscGVyJiYoaT10aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLHM9aS5sZW5ndGgmJi90ZXh0YXJlYS9pLnRlc3QoaVswXS5ub2RlTmFtZSksbj1zJiZ0aGlzLl9oYXNTY3JvbGwoaVswXSwibGVmdCIpPzA6dS5zaXplRGlmZi5oZWlnaHQsYT1zPzA6dS5zaXplRGlmZi53aWR0aCxvPXt3aWR0aDp1LmhlbHBlci53aWR0aCgpLWEsaGVpZ2h0OnUuaGVscGVyLmhlaWdodCgpLW59LHI9cGFyc2VJbnQodS5lbGVtZW50LmNzcygibGVmdCIpLDEwKSsodS5wb3NpdGlvbi5sZWZ0LXUub3JpZ2luYWxQb3NpdGlvbi5sZWZ0KXx8bnVsbCxoPXBhcnNlSW50KHUuZWxlbWVudC5jc3MoInRvcCIpLDEwKSsodS5wb3NpdGlvbi50b3AtdS5vcmlnaW5hbFBvc2l0aW9uLnRvcCl8fG51bGwsbC5hbmltYXRlfHx0aGlzLmVsZW1lbnQuY3NzKGUuZXh0ZW5kKG8se3RvcDpoLGxlZnQ6cn0pKSx1LmhlbHBlci5oZWlnaHQodS5zaXplLmhlaWdodCksdS5oZWxwZXIud2lkdGgodS5zaXplLndpZHRoKSx0aGlzLl9oZWxwZXImJiFsLmFuaW1hdGUmJnRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplKCkpLGUoImJvZHkiKS5jc3MoImN1cnNvciIsImF1dG8iKSx0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXJlc2l6YWJsZS1yZXNpemluZyIpLHRoaXMuX3Byb3BhZ2F0ZSgic3RvcCIsdCksdGhpcy5faGVscGVyJiZ0aGlzLmhlbHBlci5yZW1vdmUoKSwhMX0sX3VwZGF0ZVByZXZQcm9wZXJ0aWVzOmZ1bmN0aW9uKCl7dGhpcy5wcmV2UG9zaXRpb249e3RvcDp0aGlzLnBvc2l0aW9uLnRvcCxsZWZ0OnRoaXMucG9zaXRpb24ubGVmdH0sdGhpcy5wcmV2U2l6ZT17d2lkdGg6dGhpcy5zaXplLndpZHRoLGhlaWdodDp0aGlzLnNpemUuaGVpZ2h0fX0sX2FwcGx5Q2hhbmdlczpmdW5jdGlvbigpe3ZhciBlPXt9O3JldHVybiB0aGlzLnBvc2l0aW9uLnRvcCE9PXRoaXMucHJldlBvc2l0aW9uLnRvcCYmKGUudG9wPXRoaXMucG9zaXRpb24udG9wKyJweCIpLHRoaXMucG9zaXRpb24ubGVmdCE9PXRoaXMucHJldlBvc2l0aW9uLmxlZnQmJihlLmxlZnQ9dGhpcy5wb3NpdGlvbi5sZWZ0KyJweCIpLHRoaXMuc2l6ZS53aWR0aCE9PXRoaXMucHJldlNpemUud2lkdGgmJihlLndpZHRoPXRoaXMuc2l6ZS53aWR0aCsicHgiKSx0aGlzLnNpemUuaGVpZ2h0IT09dGhpcy5wcmV2U2l6ZS5oZWlnaHQmJihlLmhlaWdodD10aGlzLnNpemUuaGVpZ2h0KyJweCIpLHRoaXMuaGVscGVyLmNzcyhlKSxlfSxfdXBkYXRlVmlydHVhbEJvdW5kYXJpZXM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxzLG4sYSxvPXRoaXMub3B0aW9uczthPXttaW5XaWR0aDp0aGlzLl9pc051bWJlcihvLm1pbldpZHRoKT9vLm1pbldpZHRoOjAsbWF4V2lkdGg6dGhpcy5faXNOdW1iZXIoby5tYXhXaWR0aCk/by5tYXhXaWR0aDoxLzAsbWluSGVpZ2h0OnRoaXMuX2lzTnVtYmVyKG8ubWluSGVpZ2h0KT9vLm1pbkhlaWdodDowLG1heEhlaWdodDp0aGlzLl9pc051bWJlcihvLm1heEhlaWdodCk/by5tYXhIZWlnaHQ6MS8wfSwodGhpcy5fYXNwZWN0UmF0aW98fGUpJiYodD1hLm1pbkhlaWdodCp0aGlzLmFzcGVjdFJhdGlvLHM9YS5taW5XaWR0aC90aGlzLmFzcGVjdFJhdGlvLGk9YS5tYXhIZWlnaHQqdGhpcy5hc3BlY3RSYXRpbyxuPWEubWF4V2lkdGgvdGhpcy5hc3BlY3RSYXRpbyx0PmEubWluV2lkdGgmJihhLm1pbldpZHRoPXQpLHM+YS5taW5IZWlnaHQmJihhLm1pbkhlaWdodD1zKSxhLm1heFdpZHRoPmkmJihhLm1heFdpZHRoPWkpLGEubWF4SGVpZ2h0Pm4mJihhLm1heEhlaWdodD1uKSksdGhpcy5fdkJvdW5kYXJpZXM9YX0sX3VwZGF0ZUNhY2hlOmZ1bmN0aW9uKGUpe3RoaXMub2Zmc2V0PXRoaXMuaGVscGVyLm9mZnNldCgpLHRoaXMuX2lzTnVtYmVyKGUubGVmdCkmJih0aGlzLnBvc2l0aW9uLmxlZnQ9ZS5sZWZ0KSx0aGlzLl9pc051bWJlcihlLnRvcCkmJih0aGlzLnBvc2l0aW9uLnRvcD1lLnRvcCksdGhpcy5faXNOdW1iZXIoZS5oZWlnaHQpJiYodGhpcy5zaXplLmhlaWdodD1lLmhlaWdodCksdGhpcy5faXNOdW1iZXIoZS53aWR0aCkmJih0aGlzLnNpemUud2lkdGg9ZS53aWR0aCl9LF91cGRhdGVSYXRpbzpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnBvc2l0aW9uLGk9dGhpcy5zaXplLHM9dGhpcy5heGlzO3JldHVybiB0aGlzLl9pc051bWJlcihlLmhlaWdodCk/ZS53aWR0aD1lLmhlaWdodCp0aGlzLmFzcGVjdFJhdGlvOnRoaXMuX2lzTnVtYmVyKGUud2lkdGgpJiYoZS5oZWlnaHQ9ZS53aWR0aC90aGlzLmFzcGVjdFJhdGlvKSwic3ciPT09cyYmKGUubGVmdD10LmxlZnQrKGkud2lkdGgtZS53aWR0aCksZS50b3A9bnVsbCksIm53Ij09PXMmJihlLnRvcD10LnRvcCsoaS5oZWlnaHQtZS5oZWlnaHQpLGUubGVmdD10LmxlZnQrKGkud2lkdGgtZS53aWR0aCkpLGV9LF9yZXNwZWN0U2l6ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl92Qm91bmRhcmllcyxpPXRoaXMuYXhpcyxzPXRoaXMuX2lzTnVtYmVyKGUud2lkdGgpJiZ0Lm1heFdpZHRoJiZ0Lm1heFdpZHRoPGUud2lkdGgsbj10aGlzLl9pc051bWJlcihlLmhlaWdodCkmJnQubWF4SGVpZ2h0JiZ0Lm1heEhlaWdodDxlLmhlaWdodCxhPXRoaXMuX2lzTnVtYmVyKGUud2lkdGgpJiZ0Lm1pbldpZHRoJiZ0Lm1pbldpZHRoPmUud2lkdGgsbz10aGlzLl9pc051bWJlcihlLmhlaWdodCkmJnQubWluSGVpZ2h0JiZ0Lm1pbkhlaWdodD5lLmhlaWdodCxyPXRoaXMub3JpZ2luYWxQb3NpdGlvbi5sZWZ0K3RoaXMub3JpZ2luYWxTaXplLndpZHRoLGg9dGhpcy5wb3NpdGlvbi50b3ArdGhpcy5zaXplLmhlaWdodCxsPS9zd3xud3x3Ly50ZXN0KGkpLHU9L253fG5lfG4vLnRlc3QoaSk7cmV0dXJuIGEmJihlLndpZHRoPXQubWluV2lkdGgpLG8mJihlLmhlaWdodD10Lm1pbkhlaWdodCkscyYmKGUud2lkdGg9dC5tYXhXaWR0aCksbiYmKGUuaGVpZ2h0PXQubWF4SGVpZ2h0KSxhJiZsJiYoZS5sZWZ0PXItdC5taW5XaWR0aCkscyYmbCYmKGUubGVmdD1yLXQubWF4V2lkdGgpLG8mJnUmJihlLnRvcD1oLXQubWluSGVpZ2h0KSxuJiZ1JiYoZS50b3A9aC10Lm1heEhlaWdodCksZS53aWR0aHx8ZS5oZWlnaHR8fGUubGVmdHx8IWUudG9wP2Uud2lkdGh8fGUuaGVpZ2h0fHxlLnRvcHx8IWUubGVmdHx8KGUubGVmdD1udWxsKTplLnRvcD1udWxsLGV9LF9nZXRQYWRkaW5nUGx1c0JvcmRlckRpbWVuc2lvbnM6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsaT1bXSxzPVtlLmNzcygiYm9yZGVyVG9wV2lkdGgiKSxlLmNzcygiYm9yZGVyUmlnaHRXaWR0aCIpLGUuY3NzKCJib3JkZXJCb3R0b21XaWR0aCIpLGUuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKV0sbj1bZS5jc3MoInBhZGRpbmdUb3AiKSxlLmNzcygicGFkZGluZ1JpZ2h0IiksZS5jc3MoInBhZGRpbmdCb3R0b20iKSxlLmNzcygicGFkZGluZ0xlZnQiKV07ND50O3QrKylpW3RdPXBhcnNlSW50KHNbdF0sMTApfHwwLGlbdF0rPXBhcnNlSW50KG5bdF0sMTApfHwwO3JldHVybntoZWlnaHQ6aVswXStpWzJdLHdpZHRoOmlbMV0raVszXX19LF9wcm9wb3J0aW9uYWxseVJlc2l6ZTpmdW5jdGlvbigpe2lmKHRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoKWZvcih2YXIgZSx0PTAsaT10aGlzLmhlbHBlcnx8dGhpcy5lbGVtZW50O3RoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoPnQ7dCsrKWU9dGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemVFbGVtZW50c1t0XSx0aGlzLm91dGVyRGltZW5zaW9uc3x8KHRoaXMub3V0ZXJEaW1lbnNpb25zPXRoaXMuX2dldFBhZGRpbmdQbHVzQm9yZGVyRGltZW5zaW9ucyhlKSksZS5jc3Moe2hlaWdodDppLmhlaWdodCgpLXRoaXMub3V0ZXJEaW1lbnNpb25zLmhlaWdodHx8MCx3aWR0aDppLndpZHRoKCktdGhpcy5vdXRlckRpbWVuc2lvbnMud2lkdGh8fDB9KX0sX3JlbmRlclByb3h5OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbGVtZW50LGk9dGhpcy5vcHRpb25zO3RoaXMuZWxlbWVudE9mZnNldD10Lm9mZnNldCgpLHRoaXMuX2hlbHBlcj8odGhpcy5oZWxwZXI9dGhpcy5oZWxwZXJ8fGUoIjxkaXYgc3R5bGU9J292ZXJmbG93OmhpZGRlbjsnPjwvZGl2PiIpLHRoaXMuaGVscGVyLmFkZENsYXNzKHRoaXMuX2hlbHBlcikuY3NzKHt3aWR0aDp0aGlzLmVsZW1lbnQub3V0ZXJXaWR0aCgpLTEsaGVpZ2h0OnRoaXMuZWxlbWVudC5vdXRlckhlaWdodCgpLTEscG9zaXRpb246ImFic29sdXRlIixsZWZ0OnRoaXMuZWxlbWVudE9mZnNldC5sZWZ0KyJweCIsdG9wOnRoaXMuZWxlbWVudE9mZnNldC50b3ArInB4Iix6SW5kZXg6KytpLnpJbmRleH0pLHRoaXMuaGVscGVyLmFwcGVuZFRvKCJib2R5IikuZGlzYWJsZVNlbGVjdGlvbigpKTp0aGlzLmhlbHBlcj10aGlzLmVsZW1lbnR9LF9jaGFuZ2U6e2U6ZnVuY3Rpb24oZSx0KXtyZXR1cm57d2lkdGg6dGhpcy5vcmlnaW5hbFNpemUud2lkdGgrdH19LHc6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLm9yaWdpbmFsU2l6ZSxzPXRoaXMub3JpZ2luYWxQb3NpdGlvbjtyZXR1cm57bGVmdDpzLmxlZnQrdCx3aWR0aDppLndpZHRoLXR9fSxuOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzLm9yaWdpbmFsU2l6ZSxuPXRoaXMub3JpZ2luYWxQb3NpdGlvbjtyZXR1cm57dG9wOm4udG9wK2ksaGVpZ2h0OnMuaGVpZ2h0LWl9fSxzOmZ1bmN0aW9uKGUsdCxpKXtyZXR1cm57aGVpZ2h0OnRoaXMub3JpZ2luYWxTaXplLmhlaWdodCtpfX0sc2U6ZnVuY3Rpb24odCxpLHMpe3JldHVybiBlLmV4dGVuZCh0aGlzLl9jaGFuZ2Uucy5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fY2hhbmdlLmUuYXBwbHkodGhpcyxbdCxpLHNdKSl9LHN3OmZ1bmN0aW9uKHQsaSxzKXtyZXR1cm4gZS5leHRlbmQodGhpcy5fY2hhbmdlLnMuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2NoYW5nZS53LmFwcGx5KHRoaXMsW3QsaSxzXSkpfSxuZTpmdW5jdGlvbih0LGkscyl7cmV0dXJuIGUuZXh0ZW5kKHRoaXMuX2NoYW5nZS5uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9jaGFuZ2UuZS5hcHBseSh0aGlzLFt0LGksc10pKX0sbnc6ZnVuY3Rpb24odCxpLHMpe3JldHVybiBlLmV4dGVuZCh0aGlzLl9jaGFuZ2Uubi5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fY2hhbmdlLncuYXBwbHkodGhpcyxbdCxpLHNdKSl9fSxfcHJvcGFnYXRlOmZ1bmN0aW9uKHQsaSl7ZS51aS5wbHVnaW4uY2FsbCh0aGlzLHQsW2ksdGhpcy51aSgpXSksInJlc2l6ZSIhPT10JiZ0aGlzLl90cmlnZ2VyKHQsaSx0aGlzLnVpKCkpfSxwbHVnaW5zOnt9LHVpOmZ1bmN0aW9uKCl7cmV0dXJue29yaWdpbmFsRWxlbWVudDp0aGlzLm9yaWdpbmFsRWxlbWVudCxlbGVtZW50OnRoaXMuZWxlbWVudCxoZWxwZXI6dGhpcy5oZWxwZXIscG9zaXRpb246dGhpcy5wb3NpdGlvbixzaXplOnRoaXMuc2l6ZSxvcmlnaW5hbFNpemU6dGhpcy5vcmlnaW5hbFNpemUsb3JpZ2luYWxQb3NpdGlvbjp0aGlzLm9yaWdpbmFsUG9zaXRpb259fX0pLGUudWkucGx1Z2luLmFkZCgicmVzaXphYmxlIiwiYW5pbWF0ZSIse3N0b3A6ZnVuY3Rpb24odCl7dmFyIGk9ZSh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIikscz1pLm9wdGlvbnMsbj1pLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLGE9bi5sZW5ndGgmJi90ZXh0YXJlYS9pLnRlc3QoblswXS5ub2RlTmFtZSksbz1hJiZpLl9oYXNTY3JvbGwoblswXSwibGVmdCIpPzA6aS5zaXplRGlmZi5oZWlnaHQscj1hPzA6aS5zaXplRGlmZi53aWR0aCxoPXt3aWR0aDppLnNpemUud2lkdGgtcixoZWlnaHQ6aS5zaXplLmhlaWdodC1vfSxsPXBhcnNlSW50KGkuZWxlbWVudC5jc3MoImxlZnQiKSwxMCkrKGkucG9zaXRpb24ubGVmdC1pLm9yaWdpbmFsUG9zaXRpb24ubGVmdCl8fG51bGwsdT1wYXJzZUludChpLmVsZW1lbnQuY3NzKCJ0b3AiKSwxMCkrKGkucG9zaXRpb24udG9wLWkub3JpZ2luYWxQb3NpdGlvbi50b3ApfHxudWxsO2kuZWxlbWVudC5hbmltYXRlKGUuZXh0ZW5kKGgsdSYmbD97dG9wOnUsbGVmdDpsfTp7fSkse2R1cmF0aW9uOnMuYW5pbWF0ZUR1cmF0aW9uLGVhc2luZzpzLmFuaW1hdGVFYXNpbmcsc3RlcDpmdW5jdGlvbigpe3ZhciBzPXt3aWR0aDpwYXJzZUludChpLmVsZW1lbnQuY3NzKCJ3aWR0aCIpLDEwKSxoZWlnaHQ6cGFyc2VJbnQoaS5lbGVtZW50LmNzcygiaGVpZ2h0IiksMTApLHRvcDpwYXJzZUludChpLmVsZW1lbnQuY3NzKCJ0b3AiKSwxMCksbGVmdDpwYXJzZUludChpLmVsZW1lbnQuY3NzKCJsZWZ0IiksMTApfTtuJiZuLmxlbmd0aCYmZShuWzBdKS5jc3Moe3dpZHRoOnMud2lkdGgsaGVpZ2h0OnMuaGVpZ2h0fSksaS5fdXBkYXRlQ2FjaGUocyksaS5fcHJvcGFnYXRlKCJyZXNpemUiLHQpfX0pfX0pLGUudWkucGx1Z2luLmFkZCgicmVzaXphYmxlIiwiY29udGFpbm1lbnQiLHtzdGFydDpmdW5jdGlvbigpe3ZhciB0LGkscyxuLGEsbyxyLGg9ZSh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIiksbD1oLm9wdGlvbnMsdT1oLmVsZW1lbnQsZD1sLmNvbnRhaW5tZW50LGM9ZCBpbnN0YW5jZW9mIGU/ZC5nZXQoMCk6L3BhcmVudC8udGVzdChkKT91LnBhcmVudCgpLmdldCgwKTpkO2MmJihoLmNvbnRhaW5lckVsZW1lbnQ9ZShjKSwvZG9jdW1lbnQvLnRlc3QoZCl8fGQ9PT1kb2N1bWVudD8oaC5jb250YWluZXJPZmZzZXQ9e2xlZnQ6MCx0b3A6MH0saC5jb250YWluZXJQb3NpdGlvbj17bGVmdDowLHRvcDowfSxoLnBhcmVudERhdGE9e2VsZW1lbnQ6ZShkb2N1bWVudCksbGVmdDowLHRvcDowLHdpZHRoOmUoZG9jdW1lbnQpLndpZHRoKCksaGVpZ2h0OmUoZG9jdW1lbnQpLmhlaWdodCgpfHxkb2N1bWVudC5ib2R5LnBhcmVudE5vZGUuc2Nyb2xsSGVpZ2h0fSk6KHQ9ZShjKSxpPVtdLGUoWyJUb3AiLCJSaWdodCIsIkxlZnQiLCJCb3R0b20iXSkuZWFjaChmdW5jdGlvbihlLHMpe2lbZV09aC5fbnVtKHQuY3NzKCJwYWRkaW5nIitzKSl9KSxoLmNvbnRhaW5lck9mZnNldD10Lm9mZnNldCgpLGguY29udGFpbmVyUG9zaXRpb249dC5wb3NpdGlvbigpLGguY29udGFpbmVyU2l6ZT17aGVpZ2h0OnQuaW5uZXJIZWlnaHQoKS1pWzNdLHdpZHRoOnQuaW5uZXJXaWR0aCgpLWlbMV19LHM9aC5jb250YWluZXJPZmZzZXQsbj1oLmNvbnRhaW5lclNpemUuaGVpZ2h0LGE9aC5jb250YWluZXJTaXplLndpZHRoLG89aC5faGFzU2Nyb2xsKGMsImxlZnQiKT9jLnNjcm9sbFdpZHRoOmEscj1oLl9oYXNTY3JvbGwoYyk/Yy5zY3JvbGxIZWlnaHQ6bixoLnBhcmVudERhdGE9e2VsZW1lbnQ6YyxsZWZ0OnMubGVmdCx0b3A6cy50b3Asd2lkdGg6byxoZWlnaHQ6cn0pKX0scmVzaXplOmZ1bmN0aW9uKHQpe3ZhciBpLHMsbixhLG89ZSh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIikscj1vLm9wdGlvbnMsaD1vLmNvbnRhaW5lck9mZnNldCxsPW8ucG9zaXRpb24sdT1vLl9hc3BlY3RSYXRpb3x8dC5zaGlmdEtleSxkPXt0b3A6MCxsZWZ0OjB9LGM9by5jb250YWluZXJFbGVtZW50LHA9ITA7Y1swXSE9PWRvY3VtZW50JiYvc3RhdGljLy50ZXN0KGMuY3NzKCJwb3NpdGlvbiIpKSYmKGQ9aCksbC5sZWZ0PChvLl9oZWxwZXI/aC5sZWZ0OjApJiYoby5zaXplLndpZHRoPW8uc2l6ZS53aWR0aCsoby5faGVscGVyP28ucG9zaXRpb24ubGVmdC1oLmxlZnQ6by5wb3NpdGlvbi5sZWZ0LWQubGVmdCksdSYmKG8uc2l6ZS5oZWlnaHQ9by5zaXplLndpZHRoL28uYXNwZWN0UmF0aW8scD0hMSksby5wb3NpdGlvbi5sZWZ0PXIuaGVscGVyP2gubGVmdDowKSxsLnRvcDwoby5faGVscGVyP2gudG9wOjApJiYoby5zaXplLmhlaWdodD1vLnNpemUuaGVpZ2h0KyhvLl9oZWxwZXI/by5wb3NpdGlvbi50b3AtaC50b3A6by5wb3NpdGlvbi50b3ApLHUmJihvLnNpemUud2lkdGg9by5zaXplLmhlaWdodCpvLmFzcGVjdFJhdGlvLHA9ITEpLG8ucG9zaXRpb24udG9wPW8uX2hlbHBlcj9oLnRvcDowKSxuPW8uY29udGFpbmVyRWxlbWVudC5nZXQoMCk9PT1vLmVsZW1lbnQucGFyZW50KCkuZ2V0KDApLGE9L3JlbGF0aXZlfGFic29sdXRlLy50ZXN0KG8uY29udGFpbmVyRWxlbWVudC5jc3MoInBvc2l0aW9uIikpLG4mJmE/KG8ub2Zmc2V0LmxlZnQ9by5wYXJlbnREYXRhLmxlZnQrby5wb3NpdGlvbi5sZWZ0LG8ub2Zmc2V0LnRvcD1vLnBhcmVudERhdGEudG9wK28ucG9zaXRpb24udG9wKTooby5vZmZzZXQubGVmdD1vLmVsZW1lbnQub2Zmc2V0KCkubGVmdCxvLm9mZnNldC50b3A9by5lbGVtZW50Lm9mZnNldCgpLnRvcCksaT1NYXRoLmFicyhvLnNpemVEaWZmLndpZHRoKyhvLl9oZWxwZXI/by5vZmZzZXQubGVmdC1kLmxlZnQ6by5vZmZzZXQubGVmdC1oLmxlZnQpKSxzPU1hdGguYWJzKG8uc2l6ZURpZmYuaGVpZ2h0KyhvLl9oZWxwZXI/by5vZmZzZXQudG9wLWQudG9wOm8ub2Zmc2V0LnRvcC1oLnRvcCkpLGkrby5zaXplLndpZHRoPj1vLnBhcmVudERhdGEud2lkdGgmJihvLnNpemUud2lkdGg9by5wYXJlbnREYXRhLndpZHRoLWksdSYmKG8uc2l6ZS5oZWlnaHQ9by5zaXplLndpZHRoL28uYXNwZWN0UmF0aW8scD0hMSkpLHMrby5zaXplLmhlaWdodD49by5wYXJlbnREYXRhLmhlaWdodCYmKG8uc2l6ZS5oZWlnaHQ9by5wYXJlbnREYXRhLmhlaWdodC1zLHUmJihvLnNpemUud2lkdGg9by5zaXplLmhlaWdodCpvLmFzcGVjdFJhdGlvLHA9ITEpKSxwfHwoby5wb3NpdGlvbi5sZWZ0PW8ucHJldlBvc2l0aW9uLmxlZnQsby5wb3NpdGlvbi50b3A9by5wcmV2UG9zaXRpb24udG9wLG8uc2l6ZS53aWR0aD1vLnByZXZTaXplLndpZHRoLG8uc2l6ZS5oZWlnaHQ9by5wcmV2U2l6ZS5oZWlnaHQpfSxzdG9wOmZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIiksaT10Lm9wdGlvbnMscz10LmNvbnRhaW5lck9mZnNldCxuPXQuY29udGFpbmVyUG9zaXRpb24sYT10LmNvbnRhaW5lckVsZW1lbnQsbz1lKHQuaGVscGVyKSxyPW8ub2Zmc2V0KCksaD1vLm91dGVyV2lkdGgoKS10LnNpemVEaWZmLndpZHRoLGw9by5vdXRlckhlaWdodCgpLXQuc2l6ZURpZmYuaGVpZ2h0O3QuX2hlbHBlciYmIWkuYW5pbWF0ZSYmL3JlbGF0aXZlLy50ZXN0KGEuY3NzKCJwb3NpdGlvbiIpKSYmZSh0aGlzKS5jc3Moe2xlZnQ6ci5sZWZ0LW4ubGVmdC1zLmxlZnQsd2lkdGg6aCxoZWlnaHQ6bH0pLHQuX2hlbHBlciYmIWkuYW5pbWF0ZSYmL3N0YXRpYy8udGVzdChhLmNzcygicG9zaXRpb24iKSkmJmUodGhpcykuY3NzKHtsZWZ0OnIubGVmdC1uLmxlZnQtcy5sZWZ0LHdpZHRoOmgsaGVpZ2h0Omx9KX19KSxlLnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImFsc29SZXNpemUiLHtzdGFydDpmdW5jdGlvbigpe3ZhciB0PWUodGhpcykucmVzaXphYmxlKCJpbnN0YW5jZSIpLGk9dC5vcHRpb25zO2UoaS5hbHNvUmVzaXplKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTt0LmRhdGEoInVpLXJlc2l6YWJsZS1hbHNvcmVzaXplIix7d2lkdGg6cGFyc2VJbnQodC53aWR0aCgpLDEwKSxoZWlnaHQ6cGFyc2VJbnQodC5oZWlnaHQoKSwxMCksbGVmdDpwYXJzZUludCh0LmNzcygibGVmdCIpLDEwKSx0b3A6cGFyc2VJbnQodC5jc3MoInRvcCIpLDEwKX0pfSl9LHJlc2l6ZTpmdW5jdGlvbih0LGkpe3ZhciBzPWUodGhpcykucmVzaXphYmxlKCJpbnN0YW5jZSIpLG49cy5vcHRpb25zLGE9cy5vcmlnaW5hbFNpemUsbz1zLm9yaWdpbmFsUG9zaXRpb24scj17aGVpZ2h0OnMuc2l6ZS5oZWlnaHQtYS5oZWlnaHR8fDAsd2lkdGg6cy5zaXplLndpZHRoLWEud2lkdGh8fDAsdG9wOnMucG9zaXRpb24udG9wLW8udG9wfHwwLGxlZnQ6cy5wb3NpdGlvbi5sZWZ0LW8ubGVmdHx8MH07ZShuLmFsc29SZXNpemUpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLHM9ZSh0aGlzKS5kYXRhKCJ1aS1yZXNpemFibGUtYWxzb3Jlc2l6ZSIpLG49e30sYT10LnBhcmVudHMoaS5vcmlnaW5hbEVsZW1lbnRbMF0pLmxlbmd0aD9bIndpZHRoIiwiaGVpZ2h0Il06WyJ3aWR0aCIsImhlaWdodCIsInRvcCIsImxlZnQiXTtlLmVhY2goYSxmdW5jdGlvbihlLHQpe3ZhciBpPShzW3RdfHwwKSsoclt0XXx8MCk7aSYmaT49MCYmKG5bdF09aXx8bnVsbCl9KSx0LmNzcyhuKX0pfSxzdG9wOmZ1bmN0aW9uKCl7ZSh0aGlzKS5yZW1vdmVEYXRhKCJyZXNpemFibGUtYWxzb3Jlc2l6ZSIpfX0pLGUudWkucGx1Z2luLmFkZCgicmVzaXphYmxlIiwiZ2hvc3QiLHtzdGFydDpmdW5jdGlvbigpe3ZhciB0PWUodGhpcykucmVzaXphYmxlKCJpbnN0YW5jZSIpLGk9dC5vcHRpb25zLHM9dC5zaXplO3QuZ2hvc3Q9dC5vcmlnaW5hbEVsZW1lbnQuY2xvbmUoKSx0Lmdob3N0LmNzcyh7b3BhY2l0eTouMjUsZGlzcGxheToiYmxvY2siLHBvc2l0aW9uOiJyZWxhdGl2ZSIsaGVpZ2h0OnMuaGVpZ2h0LHdpZHRoOnMud2lkdGgsbWFyZ2luOjAsbGVmdDowLHRvcDowfSkuYWRkQ2xhc3MoInVpLXJlc2l6YWJsZS1naG9zdCIpLmFkZENsYXNzKCJzdHJpbmciPT10eXBlb2YgaS5naG9zdD9pLmdob3N0OiIiKSx0Lmdob3N0LmFwcGVuZFRvKHQuaGVscGVyKX0scmVzaXplOmZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIik7dC5naG9zdCYmdC5naG9zdC5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSIsaGVpZ2h0OnQuc2l6ZS5oZWlnaHQsd2lkdGg6dC5zaXplLndpZHRofSl9LHN0b3A6ZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLnJlc2l6YWJsZSgiaW5zdGFuY2UiKTt0Lmdob3N0JiZ0LmhlbHBlciYmdC5oZWxwZXIuZ2V0KDApLnJlbW92ZUNoaWxkKHQuZ2hvc3QuZ2V0KDApKX19KSxlLnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImdyaWQiLHtyZXNpemU6ZnVuY3Rpb24oKXt2YXIgdCxpPWUodGhpcykucmVzaXphYmxlKCJpbnN0YW5jZSIpLHM9aS5vcHRpb25zLG49aS5zaXplLGE9aS5vcmlnaW5hbFNpemUsbz1pLm9yaWdpbmFsUG9zaXRpb24scj1pLmF4aXMsaD0ibnVtYmVyIj09dHlwZW9mIHMuZ3JpZD9bcy5ncmlkLHMuZ3JpZF06cy5ncmlkLGw9aFswXXx8MSx1PWhbMV18fDEsZD1NYXRoLnJvdW5kKChuLndpZHRoLWEud2lkdGgpL2wpKmwsYz1NYXRoLnJvdW5kKChuLmhlaWdodC1hLmhlaWdodCkvdSkqdSxwPWEud2lkdGgrZCxmPWEuaGVpZ2h0K2MsbT1zLm1heFdpZHRoJiZwPnMubWF4V2lkdGgsZz1zLm1heEhlaWdodCYmZj5zLm1heEhlaWdodCx2PXMubWluV2lkdGgmJnMubWluV2lkdGg+cCx5PXMubWluSGVpZ2h0JiZzLm1pbkhlaWdodD5mO3MuZ3JpZD1oLHYmJihwKz1sKSx5JiYoZis9dSksbSYmKHAtPWwpLGcmJihmLT11KSwvXihzZXxzfGUpJC8udGVzdChyKT8oaS5zaXplLndpZHRoPXAsaS5zaXplLmhlaWdodD1mKTovXihuZSkkLy50ZXN0KHIpPyhpLnNpemUud2lkdGg9cCxpLnNpemUuaGVpZ2h0PWYsaS5wb3NpdGlvbi50b3A9by50b3AtYyk6L14oc3cpJC8udGVzdChyKT8oaS5zaXplLndpZHRoPXAsaS5zaXplLmhlaWdodD1mLGkucG9zaXRpb24ubGVmdD1vLmxlZnQtZCk6KCgwPj1mLXV8fDA+PXAtbCkmJih0PWkuX2dldFBhZGRpbmdQbHVzQm9yZGVyRGltZW5zaW9ucyh0aGlzKSksZi11PjA/KGkuc2l6ZS5oZWlnaHQ9ZixpLnBvc2l0aW9uLnRvcD1vLnRvcC1jKTooZj11LXQuaGVpZ2h0LGkuc2l6ZS5oZWlnaHQ9ZixpLnBvc2l0aW9uLnRvcD1vLnRvcCthLmhlaWdodC1mKSxwLWw+MD8oaS5zaXplLndpZHRoPXAsaS5wb3NpdGlvbi5sZWZ0PW8ubGVmdC1kKToocD1sLXQud2lkdGgsaS5zaXplLndpZHRoPXAsaS5wb3NpdGlvbi5sZWZ0PW8ubGVmdCthLndpZHRoLXApKX19KSxlLnVpLnJlc2l6YWJsZSxlLndpZGdldCgidWkuc2VsZWN0YWJsZSIsZS51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMS40IixvcHRpb25zOnthcHBlbmRUbzoiYm9keSIsYXV0b1JlZnJlc2g6ITAsZGlzdGFuY2U6MCxmaWx0ZXI6IioiLHRvbGVyYW5jZToidG91Y2giLHNlbGVjdGVkOm51bGwsc2VsZWN0aW5nOm51bGwsc3RhcnQ6bnVsbCxzdG9wOm51bGwsdW5zZWxlY3RlZDpudWxsLHVuc2VsZWN0aW5nOm51bGx9LF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgdCxpPXRoaXM7dGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1zZWxlY3RhYmxlIiksdGhpcy5kcmFnZ2VkPSExLHRoaXMucmVmcmVzaD1mdW5jdGlvbigpe3Q9ZShpLm9wdGlvbnMuZmlsdGVyLGkuZWxlbWVudFswXSksdC5hZGRDbGFzcygidWktc2VsZWN0ZWUiKSx0LmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLGk9dC5vZmZzZXQoKTtlLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIix7ZWxlbWVudDp0aGlzLCRlbGVtZW50OnQsbGVmdDppLmxlZnQsdG9wOmkudG9wLHJpZ2h0OmkubGVmdCt0Lm91dGVyV2lkdGgoKSxib3R0b206aS50b3ArdC5vdXRlckhlaWdodCgpLHN0YXJ0c2VsZWN0ZWQ6ITEsc2VsZWN0ZWQ6dC5oYXNDbGFzcygidWktc2VsZWN0ZWQiKSxzZWxlY3Rpbmc6dC5oYXNDbGFzcygidWktc2VsZWN0aW5nIiksdW5zZWxlY3Rpbmc6dC5oYXNDbGFzcygidWktdW5zZWxlY3RpbmciKX0pfSl9LHRoaXMucmVmcmVzaCgpLHRoaXMuc2VsZWN0ZWVzPXQuYWRkQ2xhc3MoInVpLXNlbGVjdGVlIiksdGhpcy5fbW91c2VJbml0KCksdGhpcy5oZWxwZXI9ZSgiPGRpdiBjbGFzcz0ndWktc2VsZWN0YWJsZS1oZWxwZXInPjwvZGl2PiIpfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWVzLnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RlZSIpLnJlbW92ZURhdGEoInNlbGVjdGFibGUtaXRlbSIpLHRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktc2VsZWN0YWJsZSB1aS1zZWxlY3RhYmxlLWRpc2FibGVkIiksdGhpcy5fbW91c2VEZXN0cm95KCl9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMscz10aGlzLm9wdGlvbnM7dGhpcy5vcG9zPVt0LnBhZ2VYLHQucGFnZVldLHRoaXMub3B0aW9ucy5kaXNhYmxlZHx8KHRoaXMuc2VsZWN0ZWVzPWUocy5maWx0ZXIsdGhpcy5lbGVtZW50WzBdKSx0aGlzLl90cmlnZ2VyKCJzdGFydCIsdCksZShzLmFwcGVuZFRvKS5hcHBlbmQodGhpcy5oZWxwZXIpLHRoaXMuaGVscGVyLmNzcyh7bGVmdDp0LnBhZ2VYLHRvcDp0LnBhZ2VZLHdpZHRoOjAsaGVpZ2h0OjB9KSxzLmF1dG9SZWZyZXNoJiZ0aGlzLnJlZnJlc2goKSx0aGlzLnNlbGVjdGVlcy5maWx0ZXIoIi51aS1zZWxlY3RlZCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgcz1lLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7cy5zdGFydHNlbGVjdGVkPSEwLHQubWV0YUtleXx8dC5jdHJsS2V5fHwocy4kZWxlbWVudC5yZW1vdmVDbGFzcygidWktc2VsZWN0ZWQiKSxzLnNlbGVjdGVkPSExLHMuJGVsZW1lbnQuYWRkQ2xhc3MoInVpLXVuc2VsZWN0aW5nIikscy51bnNlbGVjdGluZz0hMCxpLl90cmlnZ2VyKCJ1bnNlbGVjdGluZyIsdCx7dW5zZWxlY3Rpbmc6cy5lbGVtZW50fSkpfSksZSh0LnRhcmdldCkucGFyZW50cygpLmFkZEJhY2soKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHMsbj1lLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7cmV0dXJuIG4/KHM9IXQubWV0YUtleSYmIXQuY3RybEtleXx8IW4uJGVsZW1lbnQuaGFzQ2xhc3MoInVpLXNlbGVjdGVkIiksbi4kZWxlbWVudC5yZW1vdmVDbGFzcyhzPyJ1aS11bnNlbGVjdGluZyI6InVpLXNlbGVjdGVkIikuYWRkQ2xhc3Mocz8idWktc2VsZWN0aW5nIjoidWktdW5zZWxlY3RpbmciKSxuLnVuc2VsZWN0aW5nPSFzLG4uc2VsZWN0aW5nPXMsbi5zZWxlY3RlZD1zLHM/aS5fdHJpZ2dlcigic2VsZWN0aW5nIix0LHtzZWxlY3Rpbmc6bi5lbGVtZW50fSk6aS5fdHJpZ2dlcigidW5zZWxlY3RpbmciLHQse3Vuc2VsZWN0aW5nOm4uZWxlbWVudH0pLCExKTp2b2lkIDB9KSl9LF9tb3VzZURyYWc6ZnVuY3Rpb24odCl7aWYodGhpcy5kcmFnZ2VkPSEwLCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQpe3ZhciBpLHM9dGhpcyxuPXRoaXMub3B0aW9ucyxhPXRoaXMub3Bvc1swXSxvPXRoaXMub3Bvc1sxXSxyPXQucGFnZVgsaD10LnBhZ2VZO3JldHVybiBhPnImJihpPXIscj1hLGE9aSksbz5oJiYoaT1oLGg9byxvPWkpLHRoaXMuaGVscGVyLmNzcyh7bGVmdDphLHRvcDpvLHdpZHRoOnItYSxoZWlnaHQ6aC1vfSksdGhpcy5zZWxlY3RlZXMuZWFjaChmdW5jdGlvbigpe3ZhciBpPWUuZGF0YSh0aGlzLCJzZWxlY3RhYmxlLWl0ZW0iKSxsPSExOwppJiZpLmVsZW1lbnQhPT1zLmVsZW1lbnRbMF0mJigidG91Y2giPT09bi50b2xlcmFuY2U/bD0hKGkubGVmdD5yfHxhPmkucmlnaHR8fGkudG9wPmh8fG8+aS5ib3R0b20pOiJmaXQiPT09bi50b2xlcmFuY2UmJihsPWkubGVmdD5hJiZyPmkucmlnaHQmJmkudG9wPm8mJmg+aS5ib3R0b20pLGw/KGkuc2VsZWN0ZWQmJihpLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RlZCIpLGkuc2VsZWN0ZWQ9ITEpLGkudW5zZWxlY3RpbmcmJihpLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS11bnNlbGVjdGluZyIpLGkudW5zZWxlY3Rpbmc9ITEpLGkuc2VsZWN0aW5nfHwoaS4kZWxlbWVudC5hZGRDbGFzcygidWktc2VsZWN0aW5nIiksaS5zZWxlY3Rpbmc9ITAscy5fdHJpZ2dlcigic2VsZWN0aW5nIix0LHtzZWxlY3Rpbmc6aS5lbGVtZW50fSkpKTooaS5zZWxlY3RpbmcmJigodC5tZXRhS2V5fHx0LmN0cmxLZXkpJiZpLnN0YXJ0c2VsZWN0ZWQ/KGkuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNlbGVjdGluZyIpLGkuc2VsZWN0aW5nPSExLGkuJGVsZW1lbnQuYWRkQ2xhc3MoInVpLXNlbGVjdGVkIiksaS5zZWxlY3RlZD0hMCk6KGkuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNlbGVjdGluZyIpLGkuc2VsZWN0aW5nPSExLGkuc3RhcnRzZWxlY3RlZCYmKGkuJGVsZW1lbnQuYWRkQ2xhc3MoInVpLXVuc2VsZWN0aW5nIiksaS51bnNlbGVjdGluZz0hMCkscy5fdHJpZ2dlcigidW5zZWxlY3RpbmciLHQse3Vuc2VsZWN0aW5nOmkuZWxlbWVudH0pKSksaS5zZWxlY3RlZCYmKHQubWV0YUtleXx8dC5jdHJsS2V5fHxpLnN0YXJ0c2VsZWN0ZWR8fChpLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RlZCIpLGkuc2VsZWN0ZWQ9ITEsaS4kZWxlbWVudC5hZGRDbGFzcygidWktdW5zZWxlY3RpbmciKSxpLnVuc2VsZWN0aW5nPSEwLHMuX3RyaWdnZXIoInVuc2VsZWN0aW5nIix0LHt1bnNlbGVjdGluZzppLmVsZW1lbnR9KSkpKSl9KSwhMX19LF9tb3VzZVN0b3A6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcztyZXR1cm4gdGhpcy5kcmFnZ2VkPSExLGUoIi51aS11bnNlbGVjdGluZyIsdGhpcy5lbGVtZW50WzBdKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHM9ZS5kYXRhKHRoaXMsInNlbGVjdGFibGUtaXRlbSIpO3MuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXVuc2VsZWN0aW5nIikscy51bnNlbGVjdGluZz0hMSxzLnN0YXJ0c2VsZWN0ZWQ9ITEsaS5fdHJpZ2dlcigidW5zZWxlY3RlZCIsdCx7dW5zZWxlY3RlZDpzLmVsZW1lbnR9KX0pLGUoIi51aS1zZWxlY3RpbmciLHRoaXMuZWxlbWVudFswXSkuZWFjaChmdW5jdGlvbigpe3ZhciBzPWUuZGF0YSh0aGlzLCJzZWxlY3RhYmxlLWl0ZW0iKTtzLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RpbmciKS5hZGRDbGFzcygidWktc2VsZWN0ZWQiKSxzLnNlbGVjdGluZz0hMSxzLnNlbGVjdGVkPSEwLHMuc3RhcnRzZWxlY3RlZD0hMCxpLl90cmlnZ2VyKCJzZWxlY3RlZCIsdCx7c2VsZWN0ZWQ6cy5lbGVtZW50fSl9KSx0aGlzLl90cmlnZ2VyKCJzdG9wIix0KSx0aGlzLmhlbHBlci5yZW1vdmUoKSwhMX19KSxlLndpZGdldCgidWkuc29ydGFibGUiLGUudWkubW91c2Use3ZlcnNpb246IjEuMTEuNCIsd2lkZ2V0RXZlbnRQcmVmaXg6InNvcnQiLHJlYWR5OiExLG9wdGlvbnM6e2FwcGVuZFRvOiJwYXJlbnQiLGF4aXM6ITEsY29ubmVjdFdpdGg6ITEsY29udGFpbm1lbnQ6ITEsY3Vyc29yOiJhdXRvIixjdXJzb3JBdDohMSxkcm9wT25FbXB0eTohMCxmb3JjZVBsYWNlaG9sZGVyU2l6ZTohMSxmb3JjZUhlbHBlclNpemU6ITEsZ3JpZDohMSxoYW5kbGU6ITEsaGVscGVyOiJvcmlnaW5hbCIsaXRlbXM6Ij4gKiIsb3BhY2l0eTohMSxwbGFjZWhvbGRlcjohMSxyZXZlcnQ6ITEsc2Nyb2xsOiEwLHNjcm9sbFNlbnNpdGl2aXR5OjIwLHNjcm9sbFNwZWVkOjIwLHNjb3BlOiJkZWZhdWx0Iix0b2xlcmFuY2U6ImludGVyc2VjdCIsekluZGV4OjFlMyxhY3RpdmF0ZTpudWxsLGJlZm9yZVN0b3A6bnVsbCxjaGFuZ2U6bnVsbCxkZWFjdGl2YXRlOm51bGwsb3V0Om51bGwsb3ZlcjpudWxsLHJlY2VpdmU6bnVsbCxyZW1vdmU6bnVsbCxzb3J0Om51bGwsc3RhcnQ6bnVsbCxzdG9wOm51bGwsdXBkYXRlOm51bGx9LF9pc092ZXJBeGlzOmZ1bmN0aW9uKGUsdCxpKXtyZXR1cm4gZT49dCYmdCtpPmV9LF9pc0Zsb2F0aW5nOmZ1bmN0aW9uKGUpe3JldHVybi9sZWZ0fHJpZ2h0Ly50ZXN0KGUuY3NzKCJmbG9hdCIpKXx8L2lubGluZXx0YWJsZS1jZWxsLy50ZXN0KGUuY3NzKCJkaXNwbGF5IikpfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb250YWluZXJDYWNoZT17fSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXNvcnRhYmxlIiksdGhpcy5yZWZyZXNoKCksdGhpcy5vZmZzZXQ9dGhpcy5lbGVtZW50Lm9mZnNldCgpLHRoaXMuX21vdXNlSW5pdCgpLHRoaXMuX3NldEhhbmRsZUNsYXNzTmFtZSgpLHRoaXMucmVhZHk9ITB9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXt0aGlzLl9zdXBlcihlLHQpLCJoYW5kbGUiPT09ZSYmdGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCl9LF9zZXRIYW5kbGVDbGFzc05hbWU6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuZmluZCgiLnVpLXNvcnRhYmxlLWhhbmRsZSIpLnJlbW92ZUNsYXNzKCJ1aS1zb3J0YWJsZS1oYW5kbGUiKSxlLmVhY2godGhpcy5pdGVtcyxmdW5jdGlvbigpeyh0aGlzLmluc3RhbmNlLm9wdGlvbnMuaGFuZGxlP3RoaXMuaXRlbS5maW5kKHRoaXMuaW5zdGFuY2Uub3B0aW9ucy5oYW5kbGUpOnRoaXMuaXRlbSkuYWRkQ2xhc3MoInVpLXNvcnRhYmxlLWhhbmRsZSIpfSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zb3J0YWJsZSB1aS1zb3J0YWJsZS1kaXNhYmxlZCIpLmZpbmQoIi51aS1zb3J0YWJsZS1oYW5kbGUiKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGFuZGxlIiksdGhpcy5fbW91c2VEZXN0cm95KCk7Zm9yKHZhciBlPXRoaXMuaXRlbXMubGVuZ3RoLTE7ZT49MDtlLS0pdGhpcy5pdGVtc1tlXS5pdGVtLnJlbW92ZURhdGEodGhpcy53aWRnZXROYW1lKyItaXRlbSIpO3JldHVybiB0aGlzfSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKHQsaSl7dmFyIHM9bnVsbCxuPSExLGE9dGhpcztyZXR1cm4gdGhpcy5yZXZlcnRpbmc/ITE6dGhpcy5vcHRpb25zLmRpc2FibGVkfHwic3RhdGljIj09PXRoaXMub3B0aW9ucy50eXBlPyExOih0aGlzLl9yZWZyZXNoSXRlbXModCksZSh0LnRhcmdldCkucGFyZW50cygpLmVhY2goZnVuY3Rpb24oKXtyZXR1cm4gZS5kYXRhKHRoaXMsYS53aWRnZXROYW1lKyItaXRlbSIpPT09YT8ocz1lKHRoaXMpLCExKTp2b2lkIDB9KSxlLmRhdGEodC50YXJnZXQsYS53aWRnZXROYW1lKyItaXRlbSIpPT09YSYmKHM9ZSh0LnRhcmdldCkpLHM/IXRoaXMub3B0aW9ucy5oYW5kbGV8fGl8fChlKHRoaXMub3B0aW9ucy5oYW5kbGUscykuZmluZCgiKiIpLmFkZEJhY2soKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcz09PXQudGFyZ2V0JiYobj0hMCl9KSxuKT8odGhpcy5jdXJyZW50SXRlbT1zLHRoaXMuX3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zKCksITApOiExOiExKX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuLGEsbz10aGlzLm9wdGlvbnM7aWYodGhpcy5jdXJyZW50Q29udGFpbmVyPXRoaXMsdGhpcy5yZWZyZXNoUG9zaXRpb25zKCksdGhpcy5oZWxwZXI9dGhpcy5fY3JlYXRlSGVscGVyKHQpLHRoaXMuX2NhY2hlSGVscGVyUHJvcG9ydGlvbnMoKSx0aGlzLl9jYWNoZU1hcmdpbnMoKSx0aGlzLnNjcm9sbFBhcmVudD10aGlzLmhlbHBlci5zY3JvbGxQYXJlbnQoKSx0aGlzLm9mZnNldD10aGlzLmN1cnJlbnRJdGVtLm9mZnNldCgpLHRoaXMub2Zmc2V0PXt0b3A6dGhpcy5vZmZzZXQudG9wLXRoaXMubWFyZ2lucy50b3AsbGVmdDp0aGlzLm9mZnNldC5sZWZ0LXRoaXMubWFyZ2lucy5sZWZ0fSxlLmV4dGVuZCh0aGlzLm9mZnNldCx7Y2xpY2s6e2xlZnQ6dC5wYWdlWC10aGlzLm9mZnNldC5sZWZ0LHRvcDp0LnBhZ2VZLXRoaXMub2Zmc2V0LnRvcH0scGFyZW50OnRoaXMuX2dldFBhcmVudE9mZnNldCgpLHJlbGF0aXZlOnRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCl9KSx0aGlzLmhlbHBlci5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKSx0aGlzLmNzc1Bvc2l0aW9uPXRoaXMuaGVscGVyLmNzcygicG9zaXRpb24iKSx0aGlzLm9yaWdpbmFsUG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbih0KSx0aGlzLm9yaWdpbmFsUGFnZVg9dC5wYWdlWCx0aGlzLm9yaWdpbmFsUGFnZVk9dC5wYWdlWSxvLmN1cnNvckF0JiZ0aGlzLl9hZGp1c3RPZmZzZXRGcm9tSGVscGVyKG8uY3Vyc29yQXQpLHRoaXMuZG9tUG9zaXRpb249e3ByZXY6dGhpcy5jdXJyZW50SXRlbS5wcmV2KClbMF0scGFyZW50OnRoaXMuY3VycmVudEl0ZW0ucGFyZW50KClbMF19LHRoaXMuaGVscGVyWzBdIT09dGhpcy5jdXJyZW50SXRlbVswXSYmdGhpcy5jdXJyZW50SXRlbS5oaWRlKCksdGhpcy5fY3JlYXRlUGxhY2Vob2xkZXIoKSxvLmNvbnRhaW5tZW50JiZ0aGlzLl9zZXRDb250YWlubWVudCgpLG8uY3Vyc29yJiYiYXV0byIhPT1vLmN1cnNvciYmKGE9dGhpcy5kb2N1bWVudC5maW5kKCJib2R5IiksdGhpcy5zdG9yZWRDdXJzb3I9YS5jc3MoImN1cnNvciIpLGEuY3NzKCJjdXJzb3IiLG8uY3Vyc29yKSx0aGlzLnN0b3JlZFN0eWxlc2hlZXQ9ZSgiPHN0eWxlPip7IGN1cnNvcjogIitvLmN1cnNvcisiICFpbXBvcnRhbnQ7IH08L3N0eWxlPiIpLmFwcGVuZFRvKGEpKSxvLm9wYWNpdHkmJih0aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiKSYmKHRoaXMuX3N0b3JlZE9wYWNpdHk9dGhpcy5oZWxwZXIuY3NzKCJvcGFjaXR5IikpLHRoaXMuaGVscGVyLmNzcygib3BhY2l0eSIsby5vcGFjaXR5KSksby56SW5kZXgmJih0aGlzLmhlbHBlci5jc3MoInpJbmRleCIpJiYodGhpcy5fc3RvcmVkWkluZGV4PXRoaXMuaGVscGVyLmNzcygiekluZGV4IikpLHRoaXMuaGVscGVyLmNzcygiekluZGV4IixvLnpJbmRleCkpLHRoaXMuc2Nyb2xsUGFyZW50WzBdIT09dGhpcy5kb2N1bWVudFswXSYmIkhUTUwiIT09dGhpcy5zY3JvbGxQYXJlbnRbMF0udGFnTmFtZSYmKHRoaXMub3ZlcmZsb3dPZmZzZXQ9dGhpcy5zY3JvbGxQYXJlbnQub2Zmc2V0KCkpLHRoaXMuX3RyaWdnZXIoInN0YXJ0Iix0LHRoaXMuX3VpSGFzaCgpKSx0aGlzLl9wcmVzZXJ2ZUhlbHBlclByb3BvcnRpb25zfHx0aGlzLl9jYWNoZUhlbHBlclByb3BvcnRpb25zKCksIXMpZm9yKG49dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO24+PTA7bi0tKXRoaXMuY29udGFpbmVyc1tuXS5fdHJpZ2dlcigiYWN0aXZhdGUiLHQsdGhpcy5fdWlIYXNoKHRoaXMpKTtyZXR1cm4gZS51aS5kZG1hbmFnZXImJihlLnVpLmRkbWFuYWdlci5jdXJyZW50PXRoaXMpLGUudWkuZGRtYW5hZ2VyJiYhby5kcm9wQmVoYXZpb3VyJiZlLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0aGlzLHQpLHRoaXMuZHJhZ2dpbmc9ITAsdGhpcy5oZWxwZXIuYWRkQ2xhc3MoInVpLXNvcnRhYmxlLWhlbHBlciIpLHRoaXMuX21vdXNlRHJhZyh0KSwhMH0sX21vdXNlRHJhZzpmdW5jdGlvbih0KXt2YXIgaSxzLG4sYSxvPXRoaXMub3B0aW9ucyxyPSExO2Zvcih0aGlzLnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24odCksdGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKSx0aGlzLmxhc3RQb3NpdGlvbkFic3x8KHRoaXMubGFzdFBvc2l0aW9uQWJzPXRoaXMucG9zaXRpb25BYnMpLHRoaXMub3B0aW9ucy5zY3JvbGwmJih0aGlzLnNjcm9sbFBhcmVudFswXSE9PXRoaXMuZG9jdW1lbnRbMF0mJiJIVE1MIiE9PXRoaXMuc2Nyb2xsUGFyZW50WzBdLnRhZ05hbWU/KHRoaXMub3ZlcmZsb3dPZmZzZXQudG9wK3RoaXMuc2Nyb2xsUGFyZW50WzBdLm9mZnNldEhlaWdodC10LnBhZ2VZPG8uc2Nyb2xsU2Vuc2l0aXZpdHk/dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wPXI9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wK28uc2Nyb2xsU3BlZWQ6dC5wYWdlWS10aGlzLm92ZXJmbG93T2Zmc2V0LnRvcDxvLnNjcm9sbFNlbnNpdGl2aXR5JiYodGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wPXI9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wLW8uc2Nyb2xsU3BlZWQpLHRoaXMub3ZlcmZsb3dPZmZzZXQubGVmdCt0aGlzLnNjcm9sbFBhcmVudFswXS5vZmZzZXRXaWR0aC10LnBhZ2VYPG8uc2Nyb2xsU2Vuc2l0aXZpdHk/dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdD1yPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQrby5zY3JvbGxTcGVlZDp0LnBhZ2VYLXRoaXMub3ZlcmZsb3dPZmZzZXQubGVmdDxvLnNjcm9sbFNlbnNpdGl2aXR5JiYodGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdD1yPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQtby5zY3JvbGxTcGVlZCkpOih0LnBhZ2VZLXRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKCk8by5zY3JvbGxTZW5zaXRpdml0eT9yPXRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKHRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKCktby5zY3JvbGxTcGVlZCk6dGhpcy53aW5kb3cuaGVpZ2h0KCktKHQucGFnZVktdGhpcy5kb2N1bWVudC5zY3JvbGxUb3AoKSk8by5zY3JvbGxTZW5zaXRpdml0eSYmKHI9dGhpcy5kb2N1bWVudC5zY3JvbGxUb3AodGhpcy5kb2N1bWVudC5zY3JvbGxUb3AoKStvLnNjcm9sbFNwZWVkKSksdC5wYWdlWC10aGlzLmRvY3VtZW50LnNjcm9sbExlZnQoKTxvLnNjcm9sbFNlbnNpdGl2aXR5P3I9dGhpcy5kb2N1bWVudC5zY3JvbGxMZWZ0KHRoaXMuZG9jdW1lbnQuc2Nyb2xsTGVmdCgpLW8uc2Nyb2xsU3BlZWQpOnRoaXMud2luZG93LndpZHRoKCktKHQucGFnZVgtdGhpcy5kb2N1bWVudC5zY3JvbGxMZWZ0KCkpPG8uc2Nyb2xsU2Vuc2l0aXZpdHkmJihyPXRoaXMuZG9jdW1lbnQuc2Nyb2xsTGVmdCh0aGlzLmRvY3VtZW50LnNjcm9sbExlZnQoKStvLnNjcm9sbFNwZWVkKSkpLHIhPT0hMSYmZS51aS5kZG1hbmFnZXImJiFvLmRyb3BCZWhhdmlvdXImJmUudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHRoaXMsdCkpLHRoaXMucG9zaXRpb25BYnM9dGhpcy5fY29udmVydFBvc2l0aW9uVG8oImFic29sdXRlIiksdGhpcy5vcHRpb25zLmF4aXMmJiJ5Ij09PXRoaXMub3B0aW9ucy5heGlzfHwodGhpcy5oZWxwZXJbMF0uc3R5bGUubGVmdD10aGlzLnBvc2l0aW9uLmxlZnQrInB4IiksdGhpcy5vcHRpb25zLmF4aXMmJiJ4Ij09PXRoaXMub3B0aW9ucy5heGlzfHwodGhpcy5oZWxwZXJbMF0uc3R5bGUudG9wPXRoaXMucG9zaXRpb24udG9wKyJweCIpLGk9dGhpcy5pdGVtcy5sZW5ndGgtMTtpPj0wO2ktLSlpZihzPXRoaXMuaXRlbXNbaV0sbj1zLml0ZW1bMF0sYT10aGlzLl9pbnRlcnNlY3RzV2l0aFBvaW50ZXIocyksYSYmcy5pbnN0YW5jZT09PXRoaXMuY3VycmVudENvbnRhaW5lciYmbiE9PXRoaXMuY3VycmVudEl0ZW1bMF0mJnRoaXMucGxhY2Vob2xkZXJbMT09PWE/Im5leHQiOiJwcmV2Il0oKVswXSE9PW4mJiFlLmNvbnRhaW5zKHRoaXMucGxhY2Vob2xkZXJbMF0sbikmJigic2VtaS1keW5hbWljIj09PXRoaXMub3B0aW9ucy50eXBlPyFlLmNvbnRhaW5zKHRoaXMuZWxlbWVudFswXSxuKTohMCkpe2lmKHRoaXMuZGlyZWN0aW9uPTE9PT1hPyJkb3duIjoidXAiLCJwb2ludGVyIiE9PXRoaXMub3B0aW9ucy50b2xlcmFuY2UmJiF0aGlzLl9pbnRlcnNlY3RzV2l0aFNpZGVzKHMpKWJyZWFrO3RoaXMuX3JlYXJyYW5nZSh0LHMpLHRoaXMuX3RyaWdnZXIoImNoYW5nZSIsdCx0aGlzLl91aUhhc2goKSk7YnJlYWt9cmV0dXJuIHRoaXMuX2NvbnRhY3RDb250YWluZXJzKHQpLGUudWkuZGRtYW5hZ2VyJiZlLnVpLmRkbWFuYWdlci5kcmFnKHRoaXMsdCksdGhpcy5fdHJpZ2dlcigic29ydCIsdCx0aGlzLl91aUhhc2goKSksdGhpcy5sYXN0UG9zaXRpb25BYnM9dGhpcy5wb3NpdGlvbkFicywhMX0sX21vdXNlU3RvcDpmdW5jdGlvbih0LGkpe2lmKHQpe2lmKGUudWkuZGRtYW5hZ2VyJiYhdGhpcy5vcHRpb25zLmRyb3BCZWhhdmlvdXImJmUudWkuZGRtYW5hZ2VyLmRyb3AodGhpcyx0KSx0aGlzLm9wdGlvbnMucmV2ZXJ0KXt2YXIgcz10aGlzLG49dGhpcy5wbGFjZWhvbGRlci5vZmZzZXQoKSxhPXRoaXMub3B0aW9ucy5heGlzLG89e307YSYmIngiIT09YXx8KG8ubGVmdD1uLmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQtdGhpcy5tYXJnaW5zLmxlZnQrKHRoaXMub2Zmc2V0UGFyZW50WzBdPT09dGhpcy5kb2N1bWVudFswXS5ib2R5PzA6dGhpcy5vZmZzZXRQYXJlbnRbMF0uc2Nyb2xsTGVmdCkpLGEmJiJ5IiE9PWF8fChvLnRvcD1uLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wLXRoaXMubWFyZ2lucy50b3ArKHRoaXMub2Zmc2V0UGFyZW50WzBdPT09dGhpcy5kb2N1bWVudFswXS5ib2R5PzA6dGhpcy5vZmZzZXRQYXJlbnRbMF0uc2Nyb2xsVG9wKSksdGhpcy5yZXZlcnRpbmc9ITAsZSh0aGlzLmhlbHBlcikuYW5pbWF0ZShvLHBhcnNlSW50KHRoaXMub3B0aW9ucy5yZXZlcnQsMTApfHw1MDAsZnVuY3Rpb24oKXtzLl9jbGVhcih0KX0pfWVsc2UgdGhpcy5fY2xlYXIodCxpKTtyZXR1cm4hMX19LGNhbmNlbDpmdW5jdGlvbigpe2lmKHRoaXMuZHJhZ2dpbmcpe3RoaXMuX21vdXNlVXAoe3RhcmdldDpudWxsfSksIm9yaWdpbmFsIj09PXRoaXMub3B0aW9ucy5oZWxwZXI/dGhpcy5jdXJyZW50SXRlbS5jc3ModGhpcy5fc3RvcmVkQ1NTKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIik6dGhpcy5jdXJyZW50SXRlbS5zaG93KCk7Zm9yKHZhciB0PXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTt0Pj0wO3QtLSl0aGlzLmNvbnRhaW5lcnNbdF0uX3RyaWdnZXIoImRlYWN0aXZhdGUiLG51bGwsdGhpcy5fdWlIYXNoKHRoaXMpKSx0aGlzLmNvbnRhaW5lcnNbdF0uY29udGFpbmVyQ2FjaGUub3ZlciYmKHRoaXMuY29udGFpbmVyc1t0XS5fdHJpZ2dlcigib3V0IixudWxsLHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW3RdLmNvbnRhaW5lckNhY2hlLm92ZXI9MCl9cmV0dXJuIHRoaXMucGxhY2Vob2xkZXImJih0aGlzLnBsYWNlaG9sZGVyWzBdLnBhcmVudE5vZGUmJnRoaXMucGxhY2Vob2xkZXJbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKSwib3JpZ2luYWwiIT09dGhpcy5vcHRpb25zLmhlbHBlciYmdGhpcy5oZWxwZXImJnRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGUmJnRoaXMuaGVscGVyLnJlbW92ZSgpLGUuZXh0ZW5kKHRoaXMse2hlbHBlcjpudWxsLGRyYWdnaW5nOiExLHJldmVydGluZzohMSxfbm9GaW5hbFNvcnQ6bnVsbH0pLHRoaXMuZG9tUG9zaXRpb24ucHJldj9lKHRoaXMuZG9tUG9zaXRpb24ucHJldikuYWZ0ZXIodGhpcy5jdXJyZW50SXRlbSk6ZSh0aGlzLmRvbVBvc2l0aW9uLnBhcmVudCkucHJlcGVuZCh0aGlzLmN1cnJlbnRJdGVtKSksdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuX2dldEl0ZW1zQXNqUXVlcnkodCYmdC5jb25uZWN0ZWQpLHM9W107cmV0dXJuIHQ9dHx8e30sZShpKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9KGUodC5pdGVtfHx0aGlzKS5hdHRyKHQuYXR0cmlidXRlfHwiaWQiKXx8IiIpLm1hdGNoKHQuZXhwcmVzc2lvbnx8LyguKylbXC09X10oLispLyk7aSYmcy5wdXNoKCh0LmtleXx8aVsxXSsiW10iKSsiPSIrKHQua2V5JiZ0LmV4cHJlc3Npb24/aVsxXTppWzJdKSl9KSwhcy5sZW5ndGgmJnQua2V5JiZzLnB1c2godC5rZXkrIj0iKSxzLmpvaW4oIiYiKX0sdG9BcnJheTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLl9nZXRJdGVtc0FzalF1ZXJ5KHQmJnQuY29ubmVjdGVkKSxzPVtdO3JldHVybiB0PXR8fHt9LGkuZWFjaChmdW5jdGlvbigpe3MucHVzaChlKHQuaXRlbXx8dGhpcykuYXR0cih0LmF0dHJpYnV0ZXx8ImlkIil8fCIiKX0pLHN9LF9pbnRlcnNlY3RzV2l0aDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnBvc2l0aW9uQWJzLmxlZnQsaT10K3RoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgscz10aGlzLnBvc2l0aW9uQWJzLnRvcCxuPXMrdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQsYT1lLmxlZnQsbz1hK2Uud2lkdGgscj1lLnRvcCxoPXIrZS5oZWlnaHQsbD10aGlzLm9mZnNldC5jbGljay50b3AsdT10aGlzLm9mZnNldC5jbGljay5sZWZ0LGQ9IngiPT09dGhpcy5vcHRpb25zLmF4aXN8fHMrbD5yJiZoPnMrbCxjPSJ5Ij09PXRoaXMub3B0aW9ucy5heGlzfHx0K3U+YSYmbz50K3UscD1kJiZjO3JldHVybiJwb2ludGVyIj09PXRoaXMub3B0aW9ucy50b2xlcmFuY2V8fHRoaXMub3B0aW9ucy5mb3JjZVBvaW50ZXJGb3JDb250YWluZXJzfHwicG9pbnRlciIhPT10aGlzLm9wdGlvbnMudG9sZXJhbmNlJiZ0aGlzLmhlbHBlclByb3BvcnRpb25zW3RoaXMuZmxvYXRpbmc/IndpZHRoIjoiaGVpZ2h0Il0+ZVt0aGlzLmZsb2F0aW5nPyJ3aWR0aCI6ImhlaWdodCJdP3A6dCt0aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLzI+YSYmbz5pLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMiYmcyt0aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yPnImJmg+bi10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yfSxfaW50ZXJzZWN0c1dpdGhQb2ludGVyOmZ1bmN0aW9uKGUpe3ZhciB0PSJ4Ij09PXRoaXMub3B0aW9ucy5heGlzfHx0aGlzLl9pc092ZXJBeGlzKHRoaXMucG9zaXRpb25BYnMudG9wK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCxlLnRvcCxlLmhlaWdodCksaT0ieSI9PT10aGlzLm9wdGlvbnMuYXhpc3x8dGhpcy5faXNPdmVyQXhpcyh0aGlzLnBvc2l0aW9uQWJzLmxlZnQrdGhpcy5vZmZzZXQuY2xpY2subGVmdCxlLmxlZnQsZS53aWR0aCkscz10JiZpLG49dGhpcy5fZ2V0RHJhZ1ZlcnRpY2FsRGlyZWN0aW9uKCksYT10aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigpO3JldHVybiBzP3RoaXMuZmxvYXRpbmc/YSYmInJpZ2h0Ij09PWF8fCJkb3duIj09PW4/MjoxOm4mJigiZG93biI9PT1uPzI6MSk6ITF9LF9pbnRlcnNlY3RzV2l0aFNpZGVzOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2lzT3ZlckF4aXModGhpcy5wb3NpdGlvbkFicy50b3ArdGhpcy5vZmZzZXQuY2xpY2sudG9wLGUudG9wK2UuaGVpZ2h0LzIsZS5oZWlnaHQpLGk9dGhpcy5faXNPdmVyQXhpcyh0aGlzLnBvc2l0aW9uQWJzLmxlZnQrdGhpcy5vZmZzZXQuY2xpY2subGVmdCxlLmxlZnQrZS53aWR0aC8yLGUud2lkdGgpLHM9dGhpcy5fZ2V0RHJhZ1ZlcnRpY2FsRGlyZWN0aW9uKCksbj10aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigpO3JldHVybiB0aGlzLmZsb2F0aW5nJiZuPyJyaWdodCI9PT1uJiZpfHwibGVmdCI9PT1uJiYhaTpzJiYoImRvd24iPT09cyYmdHx8InVwIj09PXMmJiF0KX0sX2dldERyYWdWZXJ0aWNhbERpcmVjdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMucG9zaXRpb25BYnMudG9wLXRoaXMubGFzdFBvc2l0aW9uQWJzLnRvcDtyZXR1cm4gMCE9PWUmJihlPjA/ImRvd24iOiJ1cCIpfSxfZ2V0RHJhZ0hvcml6b250YWxEaXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBvc2l0aW9uQWJzLmxlZnQtdGhpcy5sYXN0UG9zaXRpb25BYnMubGVmdDtyZXR1cm4gMCE9PWUmJihlPjA/InJpZ2h0IjoibGVmdCIpfSxyZWZyZXNoOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9yZWZyZXNoSXRlbXMoZSksdGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCksdGhpcy5yZWZyZXNoUG9zaXRpb25zKCksdGhpc30sX2Nvbm5lY3RXaXRoOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zO3JldHVybiBlLmNvbm5lY3RXaXRoLmNvbnN0cnVjdG9yPT09U3RyaW5nP1tlLmNvbm5lY3RXaXRoXTplLmNvbm5lY3RXaXRofSxfZ2V0SXRlbXNBc2pRdWVyeTpmdW5jdGlvbih0KXtmdW5jdGlvbiBpKCl7ci5wdXNoKHRoaXMpfXZhciBzLG4sYSxvLHI9W10saD1bXSxsPXRoaXMuX2Nvbm5lY3RXaXRoKCk7aWYobCYmdClmb3Iocz1sLmxlbmd0aC0xO3M+PTA7cy0tKWZvcihhPWUobFtzXSx0aGlzLmRvY3VtZW50WzBdKSxuPWEubGVuZ3RoLTE7bj49MDtuLS0pbz1lLmRhdGEoYVtuXSx0aGlzLndpZGdldEZ1bGxOYW1lKSxvJiZvIT09dGhpcyYmIW8ub3B0aW9ucy5kaXNhYmxlZCYmaC5wdXNoKFtlLmlzRnVuY3Rpb24oby5vcHRpb25zLml0ZW1zKT9vLm9wdGlvbnMuaXRlbXMuY2FsbChvLmVsZW1lbnQpOmUoby5vcHRpb25zLml0ZW1zLG8uZWxlbWVudCkubm90KCIudWktc29ydGFibGUtaGVscGVyIikubm90KCIudWktc29ydGFibGUtcGxhY2Vob2xkZXIiKSxvXSk7Zm9yKGgucHVzaChbZS5pc0Z1bmN0aW9uKHRoaXMub3B0aW9ucy5pdGVtcyk/dGhpcy5vcHRpb25zLml0ZW1zLmNhbGwodGhpcy5lbGVtZW50LG51bGwse29wdGlvbnM6dGhpcy5vcHRpb25zLGl0ZW06dGhpcy5jdXJyZW50SXRlbX0pOmUodGhpcy5vcHRpb25zLml0ZW1zLHRoaXMuZWxlbWVudCkubm90KCIudWktc29ydGFibGUtaGVscGVyIikubm90KCIudWktc29ydGFibGUtcGxhY2Vob2xkZXIiKSx0aGlzXSkscz1oLmxlbmd0aC0xO3M+PTA7cy0tKWhbc11bMF0uZWFjaChpKTtyZXR1cm4gZShyKX0sX3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jdXJyZW50SXRlbS5maW5kKCI6ZGF0YSgiK3RoaXMud2lkZ2V0TmFtZSsiLWl0ZW0pIik7dGhpcy5pdGVtcz1lLmdyZXAodGhpcy5pdGVtcyxmdW5jdGlvbihlKXtmb3IodmFyIGk9MDt0Lmxlbmd0aD5pO2krKylpZih0W2ldPT09ZS5pdGVtWzBdKXJldHVybiExO3JldHVybiEwfSl9LF9yZWZyZXNoSXRlbXM6ZnVuY3Rpb24odCl7dGhpcy5pdGVtcz1bXSx0aGlzLmNvbnRhaW5lcnM9W3RoaXNdO3ZhciBpLHMsbixhLG8scixoLGwsdT10aGlzLml0ZW1zLGQ9W1tlLmlzRnVuY3Rpb24odGhpcy5vcHRpb25zLml0ZW1zKT90aGlzLm9wdGlvbnMuaXRlbXMuY2FsbCh0aGlzLmVsZW1lbnRbMF0sdCx7aXRlbTp0aGlzLmN1cnJlbnRJdGVtfSk6ZSh0aGlzLm9wdGlvbnMuaXRlbXMsdGhpcy5lbGVtZW50KSx0aGlzXV0sYz10aGlzLl9jb25uZWN0V2l0aCgpO2lmKGMmJnRoaXMucmVhZHkpZm9yKGk9Yy5sZW5ndGgtMTtpPj0wO2ktLSlmb3Iobj1lKGNbaV0sdGhpcy5kb2N1bWVudFswXSkscz1uLmxlbmd0aC0xO3M+PTA7cy0tKWE9ZS5kYXRhKG5bc10sdGhpcy53aWRnZXRGdWxsTmFtZSksYSYmYSE9PXRoaXMmJiFhLm9wdGlvbnMuZGlzYWJsZWQmJihkLnB1c2goW2UuaXNGdW5jdGlvbihhLm9wdGlvbnMuaXRlbXMpP2Eub3B0aW9ucy5pdGVtcy5jYWxsKGEuZWxlbWVudFswXSx0LHtpdGVtOnRoaXMuY3VycmVudEl0ZW19KTplKGEub3B0aW9ucy5pdGVtcyxhLmVsZW1lbnQpLGFdKSx0aGlzLmNvbnRhaW5lcnMucHVzaChhKSk7Zm9yKGk9ZC5sZW5ndGgtMTtpPj0wO2ktLSlmb3Iobz1kW2ldWzFdLHI9ZFtpXVswXSxzPTAsbD1yLmxlbmd0aDtsPnM7cysrKWg9ZShyW3NdKSxoLmRhdGEodGhpcy53aWRnZXROYW1lKyItaXRlbSIsbyksdS5wdXNoKHtpdGVtOmgsaW5zdGFuY2U6byx3aWR0aDowLGhlaWdodDowLGxlZnQ6MCx0b3A6MH0pfSxyZWZyZXNoUG9zaXRpb25zOmZ1bmN0aW9uKHQpe3RoaXMuZmxvYXRpbmc9dGhpcy5pdGVtcy5sZW5ndGg/IngiPT09dGhpcy5vcHRpb25zLmF4aXN8fHRoaXMuX2lzRmxvYXRpbmcodGhpcy5pdGVtc1swXS5pdGVtKTohMSx0aGlzLm9mZnNldFBhcmVudCYmdGhpcy5oZWxwZXImJih0aGlzLm9mZnNldC5wYXJlbnQ9dGhpcy5fZ2V0UGFyZW50T2Zmc2V0KCkpO3ZhciBpLHMsbixhO2ZvcihpPXRoaXMuaXRlbXMubGVuZ3RoLTE7aT49MDtpLS0pcz10aGlzLml0ZW1zW2ldLHMuaW5zdGFuY2UhPT10aGlzLmN1cnJlbnRDb250YWluZXImJnRoaXMuY3VycmVudENvbnRhaW5lciYmcy5pdGVtWzBdIT09dGhpcy5jdXJyZW50SXRlbVswXXx8KG49dGhpcy5vcHRpb25zLnRvbGVyYW5jZUVsZW1lbnQ/ZSh0aGlzLm9wdGlvbnMudG9sZXJhbmNlRWxlbWVudCxzLml0ZW0pOnMuaXRlbSx0fHwocy53aWR0aD1uLm91dGVyV2lkdGgoKSxzLmhlaWdodD1uLm91dGVySGVpZ2h0KCkpLGE9bi5vZmZzZXQoKSxzLmxlZnQ9YS5sZWZ0LHMudG9wPWEudG9wKTtpZih0aGlzLm9wdGlvbnMuY3VzdG9tJiZ0aGlzLm9wdGlvbnMuY3VzdG9tLnJlZnJlc2hDb250YWluZXJzKXRoaXMub3B0aW9ucy5jdXN0b20ucmVmcmVzaENvbnRhaW5lcnMuY2FsbCh0aGlzKTtlbHNlIGZvcihpPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtpPj0wO2ktLSlhPXRoaXMuY29udGFpbmVyc1tpXS5lbGVtZW50Lm9mZnNldCgpLHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZS5sZWZ0PWEubGVmdCx0aGlzLmNvbnRhaW5lcnNbaV0uY29udGFpbmVyQ2FjaGUudG9wPWEudG9wLHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZS53aWR0aD10aGlzLmNvbnRhaW5lcnNbaV0uZWxlbWVudC5vdXRlcldpZHRoKCksdGhpcy5jb250YWluZXJzW2ldLmNvbnRhaW5lckNhY2hlLmhlaWdodD10aGlzLmNvbnRhaW5lcnNbaV0uZWxlbWVudC5vdXRlckhlaWdodCgpO3JldHVybiB0aGlzfSxfY3JlYXRlUGxhY2Vob2xkZXI6ZnVuY3Rpb24odCl7dD10fHx0aGlzO3ZhciBpLHM9dC5vcHRpb25zO3MucGxhY2Vob2xkZXImJnMucGxhY2Vob2xkZXIuY29uc3RydWN0b3IhPT1TdHJpbmd8fChpPXMucGxhY2Vob2xkZXIscy5wbGFjZWhvbGRlcj17ZWxlbWVudDpmdW5jdGlvbigpe3ZhciBzPXQuY3VycmVudEl0ZW1bMF0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxuPWUoIjwiK3MrIj4iLHQuZG9jdW1lbnRbMF0pLmFkZENsYXNzKGl8fHQuY3VycmVudEl0ZW1bMF0uY2xhc3NOYW1lKyIgdWktc29ydGFibGUtcGxhY2Vob2xkZXIiKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIik7cmV0dXJuInRib2R5Ij09PXM/dC5fY3JlYXRlVHJQbGFjZWhvbGRlcih0LmN1cnJlbnRJdGVtLmZpbmQoInRyIikuZXEoMCksZSgiPHRyPiIsdC5kb2N1bWVudFswXSkuYXBwZW5kVG8obikpOiJ0ciI9PT1zP3QuX2NyZWF0ZVRyUGxhY2Vob2xkZXIodC5jdXJyZW50SXRlbSxuKToiaW1nIj09PXMmJm4uYXR0cigic3JjIix0LmN1cnJlbnRJdGVtLmF0dHIoInNyYyIpKSxpfHxuLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpLG59LHVwZGF0ZTpmdW5jdGlvbihlLG4peyghaXx8cy5mb3JjZVBsYWNlaG9sZGVyU2l6ZSkmJihuLmhlaWdodCgpfHxuLmhlaWdodCh0LmN1cnJlbnRJdGVtLmlubmVySGVpZ2h0KCktcGFyc2VJbnQodC5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdUb3AiKXx8MCwxMCktcGFyc2VJbnQodC5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdCb3R0b20iKXx8MCwxMCkpLG4ud2lkdGgoKXx8bi53aWR0aCh0LmN1cnJlbnRJdGVtLmlubmVyV2lkdGgoKS1wYXJzZUludCh0LmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ0xlZnQiKXx8MCwxMCktcGFyc2VJbnQodC5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdSaWdodCIpfHwwLDEwKSkpfX0pLHQucGxhY2Vob2xkZXI9ZShzLnBsYWNlaG9sZGVyLmVsZW1lbnQuY2FsbCh0LmVsZW1lbnQsdC5jdXJyZW50SXRlbSkpLHQuY3VycmVudEl0ZW0uYWZ0ZXIodC5wbGFjZWhvbGRlcikscy5wbGFjZWhvbGRlci51cGRhdGUodCx0LnBsYWNlaG9sZGVyKX0sX2NyZWF0ZVRyUGxhY2Vob2xkZXI6ZnVuY3Rpb24odCxpKXt2YXIgcz10aGlzO3QuY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKCl7ZSgiPHRkPiYjMTYwOzwvdGQ+IixzLmRvY3VtZW50WzBdKS5hdHRyKCJjb2xzcGFuIixlKHRoaXMpLmF0dHIoImNvbHNwYW4iKXx8MSkuYXBwZW5kVG8oaSl9KX0sX2NvbnRhY3RDb250YWluZXJzOmZ1bmN0aW9uKHQpe3ZhciBpLHMsbixhLG8scixoLGwsdSxkLGM9bnVsbCxwPW51bGw7Zm9yKGk9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO2k+PTA7aS0tKWlmKCFlLmNvbnRhaW5zKHRoaXMuY3VycmVudEl0ZW1bMF0sdGhpcy5jb250YWluZXJzW2ldLmVsZW1lbnRbMF0pKWlmKHRoaXMuX2ludGVyc2VjdHNXaXRoKHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZSkpe2lmKGMmJmUuY29udGFpbnModGhpcy5jb250YWluZXJzW2ldLmVsZW1lbnRbMF0sYy5lbGVtZW50WzBdKSljb250aW51ZTtjPXRoaXMuY29udGFpbmVyc1tpXSxwPWl9ZWxzZSB0aGlzLmNvbnRhaW5lcnNbaV0uY29udGFpbmVyQ2FjaGUub3ZlciYmKHRoaXMuY29udGFpbmVyc1tpXS5fdHJpZ2dlcigib3V0Iix0LHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW2ldLmNvbnRhaW5lckNhY2hlLm92ZXI9MCk7aWYoYylpZigxPT09dGhpcy5jb250YWluZXJzLmxlbmd0aCl0aGlzLmNvbnRhaW5lcnNbcF0uY29udGFpbmVyQ2FjaGUub3Zlcnx8KHRoaXMuY29udGFpbmVyc1twXS5fdHJpZ2dlcigib3ZlciIsdCx0aGlzLl91aUhhc2godGhpcykpLHRoaXMuY29udGFpbmVyc1twXS5jb250YWluZXJDYWNoZS5vdmVyPTEpO2Vsc2V7Zm9yKG49MWU0LGE9bnVsbCx1PWMuZmxvYXRpbmd8fHRoaXMuX2lzRmxvYXRpbmcodGhpcy5jdXJyZW50SXRlbSksbz11PyJsZWZ0IjoidG9wIixyPXU/IndpZHRoIjoiaGVpZ2h0IixkPXU/ImNsaWVudFgiOiJjbGllbnRZIixzPXRoaXMuaXRlbXMubGVuZ3RoLTE7cz49MDtzLS0pZS5jb250YWlucyh0aGlzLmNvbnRhaW5lcnNbcF0uZWxlbWVudFswXSx0aGlzLml0ZW1zW3NdLml0ZW1bMF0pJiZ0aGlzLml0ZW1zW3NdLml0ZW1bMF0hPT10aGlzLmN1cnJlbnRJdGVtWzBdJiYoaD10aGlzLml0ZW1zW3NdLml0ZW0ub2Zmc2V0KClbb10sbD0hMSx0W2RdLWg+dGhpcy5pdGVtc1tzXVtyXS8yJiYobD0hMCksbj5NYXRoLmFicyh0W2RdLWgpJiYobj1NYXRoLmFicyh0W2RdLWgpLGE9dGhpcy5pdGVtc1tzXSx0aGlzLmRpcmVjdGlvbj1sPyJ1cCI6ImRvd24iKSk7aWYoIWEmJiF0aGlzLm9wdGlvbnMuZHJvcE9uRW1wdHkpcmV0dXJuO2lmKHRoaXMuY3VycmVudENvbnRhaW5lcj09PXRoaXMuY29udGFpbmVyc1twXSlyZXR1cm4gdGhpcy5jdXJyZW50Q29udGFpbmVyLmNvbnRhaW5lckNhY2hlLm92ZXJ8fCh0aGlzLmNvbnRhaW5lcnNbcF0uX3RyaWdnZXIoIm92ZXIiLHQsdGhpcy5fdWlIYXNoKCkpLHRoaXMuY3VycmVudENvbnRhaW5lci5jb250YWluZXJDYWNoZS5vdmVyPTEpLHZvaWQgMDthP3RoaXMuX3JlYXJyYW5nZSh0LGEsbnVsbCwhMCk6dGhpcy5fcmVhcnJhbmdlKHQsbnVsbCx0aGlzLmNvbnRhaW5lcnNbcF0uZWxlbWVudCwhMCksdGhpcy5fdHJpZ2dlcigiY2hhbmdlIix0LHRoaXMuX3VpSGFzaCgpKSx0aGlzLmNvbnRhaW5lcnNbcF0uX3RyaWdnZXIoImNoYW5nZSIsdCx0aGlzLl91aUhhc2godGhpcykpLHRoaXMuY3VycmVudENvbnRhaW5lcj10aGlzLmNvbnRhaW5lcnNbcF0sdGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyLnVwZGF0ZSh0aGlzLmN1cnJlbnRDb250YWluZXIsdGhpcy5wbGFjZWhvbGRlciksdGhpcy5jb250YWluZXJzW3BdLl90cmlnZ2VyKCJvdmVyIix0LHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW3BdLmNvbnRhaW5lckNhY2hlLm92ZXI9MX19LF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5vcHRpb25zLHM9ZS5pc0Z1bmN0aW9uKGkuaGVscGVyKT9lKGkuaGVscGVyLmFwcGx5KHRoaXMuZWxlbWVudFswXSxbdCx0aGlzLmN1cnJlbnRJdGVtXSkpOiJjbG9uZSI9PT1pLmhlbHBlcj90aGlzLmN1cnJlbnRJdGVtLmNsb25lKCk6dGhpcy5jdXJyZW50SXRlbTtyZXR1cm4gcy5wYXJlbnRzKCJib2R5IikubGVuZ3RofHxlKCJwYXJlbnQiIT09aS5hcHBlbmRUbz9pLmFwcGVuZFRvOnRoaXMuY3VycmVudEl0ZW1bMF0ucGFyZW50Tm9kZSlbMF0uYXBwZW5kQ2hpbGQoc1swXSksc1swXT09PXRoaXMuY3VycmVudEl0ZW1bMF0mJih0aGlzLl9zdG9yZWRDU1M9e3dpZHRoOnRoaXMuY3VycmVudEl0ZW1bMF0uc3R5bGUud2lkdGgsaGVpZ2h0OnRoaXMuY3VycmVudEl0ZW1bMF0uc3R5bGUuaGVpZ2h0LHBvc2l0aW9uOnRoaXMuY3VycmVudEl0ZW0uY3NzKCJwb3NpdGlvbiIpLHRvcDp0aGlzLmN1cnJlbnRJdGVtLmNzcygidG9wIiksbGVmdDp0aGlzLmN1cnJlbnRJdGVtLmNzcygibGVmdCIpfSksKCFzWzBdLnN0eWxlLndpZHRofHxpLmZvcmNlSGVscGVyU2l6ZSkmJnMud2lkdGgodGhpcy5jdXJyZW50SXRlbS53aWR0aCgpKSwoIXNbMF0uc3R5bGUuaGVpZ2h0fHxpLmZvcmNlSGVscGVyU2l6ZSkmJnMuaGVpZ2h0KHRoaXMuY3VycmVudEl0ZW0uaGVpZ2h0KCkpLHN9LF9hZGp1c3RPZmZzZXRGcm9tSGVscGVyOmZ1bmN0aW9uKHQpeyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9dC5zcGxpdCgiICIpKSxlLmlzQXJyYXkodCkmJih0PXtsZWZ0Oit0WzBdLHRvcDordFsxXXx8MH0pLCJsZWZ0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXQubGVmdCt0aGlzLm1hcmdpbnMubGVmdCksInJpZ2h0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdC5yaWdodCt0aGlzLm1hcmdpbnMubGVmdCksInRvcCJpbiB0JiYodGhpcy5vZmZzZXQuY2xpY2sudG9wPXQudG9wK3RoaXMubWFyZ2lucy50b3ApLCJib3R0b20iaW4gdCYmKHRoaXMub2Zmc2V0LmNsaWNrLnRvcD10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10LmJvdHRvbSt0aGlzLm1hcmdpbnMudG9wKX0sX2dldFBhcmVudE9mZnNldDpmdW5jdGlvbigpe3RoaXMub2Zmc2V0UGFyZW50PXRoaXMuaGVscGVyLm9mZnNldFBhcmVudCgpO3ZhciB0PXRoaXMub2Zmc2V0UGFyZW50Lm9mZnNldCgpO3JldHVybiJhYnNvbHV0ZSI9PT10aGlzLmNzc1Bvc2l0aW9uJiZ0aGlzLnNjcm9sbFBhcmVudFswXSE9PXRoaXMuZG9jdW1lbnRbMF0mJmUuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pJiYodC5sZWZ0Kz10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCksdC50b3ArPXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpKSwodGhpcy5vZmZzZXRQYXJlbnRbMF09PT10aGlzLmRvY3VtZW50WzBdLmJvZHl8fHRoaXMub2Zmc2V0UGFyZW50WzBdLnRhZ05hbWUmJiJodG1sIj09PXRoaXMub2Zmc2V0UGFyZW50WzBdLnRhZ05hbWUudG9Mb3dlckNhc2UoKSYmZS51aS5pZSkmJih0PXt0b3A6MCxsZWZ0OjB9KSx7dG9wOnQudG9wKyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSxsZWZ0OnQubGVmdCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApfX0sX2dldFJlbGF0aXZlT2Zmc2V0OmZ1bmN0aW9uKCl7aWYoInJlbGF0aXZlIj09PXRoaXMuY3NzUG9zaXRpb24pe3ZhciBlPXRoaXMuY3VycmVudEl0ZW0ucG9zaXRpb24oKTtyZXR1cm57dG9wOmUudG9wLShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoInRvcCIpLDEwKXx8MCkrdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCksbGVmdDplLmxlZnQtKHBhcnNlSW50KHRoaXMuaGVscGVyLmNzcygibGVmdCIpLDEwKXx8MCkrdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpfX1yZXR1cm57dG9wOjAsbGVmdDowfX0sX2NhY2hlTWFyZ2luczpmdW5jdGlvbigpe3RoaXMubWFyZ2lucz17bGVmdDpwYXJzZUludCh0aGlzLmN1cnJlbnRJdGVtLmNzcygibWFyZ2luTGVmdCIpLDEwKXx8MCx0b3A6cGFyc2VJbnQodGhpcy5jdXJyZW50SXRlbS5jc3MoIm1hcmdpblRvcCIpLDEwKXx8MH19LF9jYWNoZUhlbHBlclByb3BvcnRpb25zOmZ1bmN0aW9uKCl7dGhpcy5oZWxwZXJQcm9wb3J0aW9ucz17d2lkdGg6dGhpcy5oZWxwZXIub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmhlbHBlci5vdXRlckhlaWdodCgpfX0sX3NldENvbnRhaW5tZW50OmZ1bmN0aW9uKCl7dmFyIHQsaSxzLG49dGhpcy5vcHRpb25zOyJwYXJlbnQiPT09bi5jb250YWlubWVudCYmKG4uY29udGFpbm1lbnQ9dGhpcy5oZWxwZXJbMF0ucGFyZW50Tm9kZSksKCJkb2N1bWVudCI9PT1uLmNvbnRhaW5tZW50fHwid2luZG93Ij09PW4uY29udGFpbm1lbnQpJiYodGhpcy5jb250YWlubWVudD1bMC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0LDAtdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wLXRoaXMub2Zmc2V0LnBhcmVudC50b3AsImRvY3VtZW50Ij09PW4uY29udGFpbm1lbnQ/dGhpcy5kb2N1bWVudC53aWR0aCgpOnRoaXMud2luZG93LndpZHRoKCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdCwoImRvY3VtZW50Ij09PW4uY29udGFpbm1lbnQ/dGhpcy5kb2N1bWVudC53aWR0aCgpOnRoaXMud2luZG93LmhlaWdodCgpfHx0aGlzLmRvY3VtZW50WzBdLmJvZHkucGFyZW50Tm9kZS5zY3JvbGxIZWlnaHQpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdKSwvXihkb2N1bWVudHx3aW5kb3d8cGFyZW50KSQvLnRlc3Qobi5jb250YWlubWVudCl8fCh0PWUobi5jb250YWlubWVudClbMF0saT1lKG4uY29udGFpbm1lbnQpLm9mZnNldCgpLHM9ImhpZGRlbiIhPT1lKHQpLmNzcygib3ZlcmZsb3ciKSx0aGlzLmNvbnRhaW5tZW50PVtpLmxlZnQrKHBhcnNlSW50KGUodCkuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApKyhwYXJzZUludChlKHQpLmNzcygicGFkZGluZ0xlZnQiKSwxMCl8fDApLXRoaXMubWFyZ2lucy5sZWZ0LGkudG9wKyhwYXJzZUludChlKHQpLmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDApKyhwYXJzZUludChlKHQpLmNzcygicGFkZGluZ1RvcCIpLDEwKXx8MCktdGhpcy5tYXJnaW5zLnRvcCxpLmxlZnQrKHM/TWF0aC5tYXgodC5zY3JvbGxXaWR0aCx0Lm9mZnNldFdpZHRoKTp0Lm9mZnNldFdpZHRoKS0ocGFyc2VJbnQoZSh0KS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCktKHBhcnNlSW50KGUodCkuY3NzKCJwYWRkaW5nUmlnaHQiKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsaS50b3ArKHM/TWF0aC5tYXgodC5zY3JvbGxIZWlnaHQsdC5vZmZzZXRIZWlnaHQpOnQub2Zmc2V0SGVpZ2h0KS0ocGFyc2VJbnQoZSh0KS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoZSh0KS5jc3MoInBhZGRpbmdCb3R0b20iKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdKX0sX2NvbnZlcnRQb3NpdGlvblRvOmZ1bmN0aW9uKHQsaSl7aXx8KGk9dGhpcy5wb3NpdGlvbik7dmFyIHM9ImFic29sdXRlIj09PXQ/MTotMSxuPSJhYnNvbHV0ZSIhPT10aGlzLmNzc1Bvc2l0aW9ufHx0aGlzLnNjcm9sbFBhcmVudFswXSE9PXRoaXMuZG9jdW1lbnRbMF0mJmUuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pP3RoaXMuc2Nyb2xsUGFyZW50OnRoaXMub2Zmc2V0UGFyZW50LGE9LyhodG1sfGJvZHkpL2kudGVzdChuWzBdLnRhZ05hbWUpO3JldHVybnt0b3A6aS50b3ArdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wKnMrdGhpcy5vZmZzZXQucGFyZW50LnRvcCpzLSgiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCk6YT8wOm4uc2Nyb2xsVG9wKCkpKnMsbGVmdDppLmxlZnQrdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdCpzK3RoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KnMtKCJmaXhlZCI9PT10aGlzLmNzc1Bvc2l0aW9uPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCk6YT8wOm4uc2Nyb2xsTGVmdCgpKSpzfX0sX2dlbmVyYXRlUG9zaXRpb246ZnVuY3Rpb24odCl7dmFyIGkscyxuPXRoaXMub3B0aW9ucyxhPXQucGFnZVgsbz10LnBhZ2VZLHI9ImFic29sdXRlIiE9PXRoaXMuY3NzUG9zaXRpb258fHRoaXMuc2Nyb2xsUGFyZW50WzBdIT09dGhpcy5kb2N1bWVudFswXSYmZS5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSk/dGhpcy5zY3JvbGxQYXJlbnQ6dGhpcy5vZmZzZXRQYXJlbnQsaD0vKGh0bWx8Ym9keSkvaS50ZXN0KHJbMF0udGFnTmFtZSk7cmV0dXJuInJlbGF0aXZlIiE9PXRoaXMuY3NzUG9zaXRpb258fHRoaXMuc2Nyb2xsUGFyZW50WzBdIT09dGhpcy5kb2N1bWVudFswXSYmdGhpcy5zY3JvbGxQYXJlbnRbMF0hPT10aGlzLm9mZnNldFBhcmVudFswXXx8KHRoaXMub2Zmc2V0LnJlbGF0aXZlPXRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCkpLHRoaXMub3JpZ2luYWxQb3NpdGlvbiYmKHRoaXMuY29udGFpbm1lbnQmJih0LnBhZ2VYLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8dGhpcy5jb250YWlubWVudFswXSYmKGE9dGhpcy5jb250YWlubWVudFswXSt0aGlzLm9mZnNldC5jbGljay5sZWZ0KSx0LnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDx0aGlzLmNvbnRhaW5tZW50WzFdJiYobz10aGlzLmNvbnRhaW5tZW50WzFdK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCksdC5wYWdlWC10aGlzLm9mZnNldC5jbGljay5sZWZ0PnRoaXMuY29udGFpbm1lbnRbMl0mJihhPXRoaXMuY29udGFpbm1lbnRbMl0rdGhpcy5vZmZzZXQuY2xpY2subGVmdCksdC5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A+dGhpcy5jb250YWlubWVudFszXSYmKG89dGhpcy5jb250YWlubWVudFszXSt0aGlzLm9mZnNldC5jbGljay50b3ApKSxuLmdyaWQmJihpPXRoaXMub3JpZ2luYWxQYWdlWStNYXRoLnJvdW5kKChvLXRoaXMub3JpZ2luYWxQYWdlWSkvbi5ncmlkWzFdKSpuLmdyaWRbMV0sbz10aGlzLmNvbnRhaW5tZW50P2ktdGhpcy5vZmZzZXQuY2xpY2sudG9wPj10aGlzLmNvbnRhaW5tZW50WzFdJiZpLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDw9dGhpcy5jb250YWlubWVudFszXT9pOmktdGhpcy5vZmZzZXQuY2xpY2sudG9wPj10aGlzLmNvbnRhaW5tZW50WzFdP2ktbi5ncmlkWzFdOmkrbi5ncmlkWzFdOmkscz10aGlzLm9yaWdpbmFsUGFnZVgrTWF0aC5yb3VuZCgoYS10aGlzLm9yaWdpbmFsUGFnZVgpL24uZ3JpZFswXSkqbi5ncmlkWzBdLGE9dGhpcy5jb250YWlubWVudD9zLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+PXRoaXMuY29udGFpbm1lbnRbMF0mJnMtdGhpcy5vZmZzZXQuY2xpY2subGVmdDw9dGhpcy5jb250YWlubWVudFsyXT9zOnMtdGhpcy5vZmZzZXQuY2xpY2subGVmdD49dGhpcy5jb250YWlubWVudFswXT9zLW4uZ3JpZFswXTpzK24uZ3JpZFswXTpzKSkse3RvcDpvLXRoaXMub2Zmc2V0LmNsaWNrLnRvcC10aGlzLm9mZnNldC5yZWxhdGl2ZS50b3AtdGhpcy5vZmZzZXQucGFyZW50LnRvcCsoImZpeGVkIj09PXRoaXMuY3NzUG9zaXRpb24/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpOmg/MDpyLnNjcm9sbFRvcCgpKSxsZWZ0OmEtdGhpcy5vZmZzZXQuY2xpY2subGVmdC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KygiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpOmg/MDpyLnNjcm9sbExlZnQoKSl9fSxfcmVhcnJhbmdlOmZ1bmN0aW9uKGUsdCxpLHMpe2k/aVswXS5hcHBlbmRDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKTp0Lml0ZW1bMF0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5wbGFjZWhvbGRlclswXSwiZG93biI9PT10aGlzLmRpcmVjdGlvbj90Lml0ZW1bMF06dC5pdGVtWzBdLm5leHRTaWJsaW5nKSx0aGlzLmNvdW50ZXI9dGhpcy5jb3VudGVyPysrdGhpcy5jb3VudGVyOjE7dmFyIG49dGhpcy5jb3VudGVyO3RoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7bj09PXRoaXMuY291bnRlciYmdGhpcy5yZWZyZXNoUG9zaXRpb25zKCFzKX0pfSxfY2xlYXI6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBpKGUsdCxpKXtyZXR1cm4gZnVuY3Rpb24ocyl7aS5fdHJpZ2dlcihlLHMsdC5fdWlIYXNoKHQpKX19dGhpcy5yZXZlcnRpbmc9ITE7dmFyIHMsbj1bXTtpZighdGhpcy5fbm9GaW5hbFNvcnQmJnRoaXMuY3VycmVudEl0ZW0ucGFyZW50KCkubGVuZ3RoJiZ0aGlzLnBsYWNlaG9sZGVyLmJlZm9yZSh0aGlzLmN1cnJlbnRJdGVtKSx0aGlzLl9ub0ZpbmFsU29ydD1udWxsLHRoaXMuaGVscGVyWzBdPT09dGhpcy5jdXJyZW50SXRlbVswXSl7Zm9yKHMgaW4gdGhpcy5fc3RvcmVkQ1NTKSgiYXV0byI9PT10aGlzLl9zdG9yZWRDU1Nbc118fCJzdGF0aWMiPT09dGhpcy5fc3RvcmVkQ1NTW3NdKSYmKHRoaXMuX3N0b3JlZENTU1tzXT0iIik7dGhpcy5jdXJyZW50SXRlbS5jc3ModGhpcy5fc3RvcmVkQ1NTKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIil9ZWxzZSB0aGlzLmN1cnJlbnRJdGVtLnNob3coKTtmb3IodGhpcy5mcm9tT3V0c2lkZSYmIXQmJm4ucHVzaChmdW5jdGlvbihlKXt0aGlzLl90cmlnZ2VyKCJyZWNlaXZlIixlLHRoaXMuX3VpSGFzaCh0aGlzLmZyb21PdXRzaWRlKSl9KSwhdGhpcy5mcm9tT3V0c2lkZSYmdGhpcy5kb21Qb3NpdGlvbi5wcmV2PT09dGhpcy5jdXJyZW50SXRlbS5wcmV2KCkubm90KCIudWktc29ydGFibGUtaGVscGVyIilbMF0mJnRoaXMuZG9tUG9zaXRpb24ucGFyZW50PT09dGhpcy5jdXJyZW50SXRlbS5wYXJlbnQoKVswXXx8dHx8bi5wdXNoKGZ1bmN0aW9uKGUpe3RoaXMuX3RyaWdnZXIoInVwZGF0ZSIsZSx0aGlzLl91aUhhc2goKSl9KSx0aGlzIT09dGhpcy5jdXJyZW50Q29udGFpbmVyJiYodHx8KG4ucHVzaChmdW5jdGlvbihlKXt0aGlzLl90cmlnZ2VyKCJyZW1vdmUiLGUsdGhpcy5fdWlIYXNoKCkpfSksbi5wdXNoKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtlLl90cmlnZ2VyKCJyZWNlaXZlIix0LHRoaXMuX3VpSGFzaCh0aGlzKSl9fS5jYWxsKHRoaXMsdGhpcy5jdXJyZW50Q29udGFpbmVyKSksbi5wdXNoKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtlLl90cmlnZ2VyKCJ1cGRhdGUiLHQsdGhpcy5fdWlIYXNoKHRoaXMpKX19LmNhbGwodGhpcyx0aGlzLmN1cnJlbnRDb250YWluZXIpKSkpLHM9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO3M+PTA7cy0tKXR8fG4ucHVzaChpKCJkZWFjdGl2YXRlIix0aGlzLHRoaXMuY29udGFpbmVyc1tzXSkpLHRoaXMuY29udGFpbmVyc1tzXS5jb250YWluZXJDYWNoZS5vdmVyJiYobi5wdXNoKGkoIm91dCIsdGhpcyx0aGlzLmNvbnRhaW5lcnNbc10pKSx0aGlzLmNvbnRhaW5lcnNbc10uY29udGFpbmVyQ2FjaGUub3Zlcj0wKTtpZih0aGlzLnN0b3JlZEN1cnNvciYmKHRoaXMuZG9jdW1lbnQuZmluZCgiYm9keSIpLmNzcygiY3Vyc29yIix0aGlzLnN0b3JlZEN1cnNvciksdGhpcy5zdG9yZWRTdHlsZXNoZWV0LnJlbW92ZSgpKSx0aGlzLl9zdG9yZWRPcGFjaXR5JiZ0aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiLHRoaXMuX3N0b3JlZE9wYWNpdHkpLHRoaXMuX3N0b3JlZFpJbmRleCYmdGhpcy5oZWxwZXIuY3NzKCJ6SW5kZXgiLCJhdXRvIj09PXRoaXMuX3N0b3JlZFpJbmRleD8iIjp0aGlzLl9zdG9yZWRaSW5kZXgpLHRoaXMuZHJhZ2dpbmc9ITEsdHx8dGhpcy5fdHJpZ2dlcigiYmVmb3JlU3RvcCIsZSx0aGlzLl91aUhhc2goKSksdGhpcy5wbGFjZWhvbGRlclswXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucGxhY2Vob2xkZXJbMF0pLHRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbHx8KHRoaXMuaGVscGVyWzBdIT09dGhpcy5jdXJyZW50SXRlbVswXSYmdGhpcy5oZWxwZXIucmVtb3ZlKCksdGhpcy5oZWxwZXI9bnVsbCksIXQpe2ZvcihzPTA7bi5sZW5ndGg+cztzKyspbltzXS5jYWxsKHRoaXMsZSk7dGhpcy5fdHJpZ2dlcigic3RvcCIsZSx0aGlzLl91aUhhc2goKSl9cmV0dXJuIHRoaXMuZnJvbU91dHNpZGU9ITEsIXRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbH0sX3RyaWdnZXI6ZnVuY3Rpb24oKXtlLldpZGdldC5wcm90b3R5cGUuX3RyaWdnZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpPT09ITEmJnRoaXMuY2FuY2VsKCl9LF91aUhhc2g6ZnVuY3Rpb24odCl7dmFyIGk9dHx8dGhpcztyZXR1cm57aGVscGVyOmkuaGVscGVyLHBsYWNlaG9sZGVyOmkucGxhY2Vob2xkZXJ8fGUoW10pLHBvc2l0aW9uOmkucG9zaXRpb24sb3JpZ2luYWxQb3NpdGlvbjppLm9yaWdpbmFsUG9zaXRpb24sb2Zmc2V0OmkucG9zaXRpb25BYnMsaXRlbTppLmN1cnJlbnRJdGVtLHNlbmRlcjp0P3QuZWxlbWVudDpudWxsfX19KSxlLndpZGdldCgidWkuYWNjb3JkaW9uIix7dmVyc2lvbjoiMS4xMS40IixvcHRpb25zOnthY3RpdmU6MCxhbmltYXRlOnt9LGNvbGxhcHNpYmxlOiExLGV2ZW50OiJjbGljayIsaGVhZGVyOiI+IGxpID4gOmZpcnN0LWNoaWxkLD4gOm5vdChsaSk6ZXZlbiIsaGVpZ2h0U3R5bGU6ImF1dG8iLGljb25zOnthY3RpdmVIZWFkZXI6InVpLWljb24tdHJpYW5nbGUtMS1zIixoZWFkZXI6InVpLWljb24tdHJpYW5nbGUtMS1lIn0sYWN0aXZhdGU6bnVsbCxiZWZvcmVBY3RpdmF0ZTpudWxsfSxoaWRlUHJvcHM6e2JvcmRlclRvcFdpZHRoOiJoaWRlIixib3JkZXJCb3R0b21XaWR0aDoiaGlkZSIscGFkZGluZ1RvcDoiaGlkZSIscGFkZGluZ0JvdHRvbToiaGlkZSIsaGVpZ2h0OiJoaWRlIn0sc2hvd1Byb3BzOntib3JkZXJUb3BXaWR0aDoic2hvdyIsYm9yZGVyQm90dG9tV2lkdGg6InNob3ciLHBhZGRpbmdUb3A6InNob3ciLHBhZGRpbmdCb3R0b206InNob3ciLGhlaWdodDoic2hvdyJ9LF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnM7dGhpcy5wcmV2U2hvdz10aGlzLnByZXZIaWRlPWUoKSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLWFjY29yZGlvbiB1aS13aWRnZXQgdWktaGVscGVyLXJlc2V0IikuYXR0cigicm9sZSIsInRhYmxpc3QiKSx0LmNvbGxhcHNpYmxlfHx0LmFjdGl2ZSE9PSExJiZudWxsIT10LmFjdGl2ZXx8KHQuYWN0aXZlPTApLHRoaXMuX3Byb2Nlc3NQYW5lbHMoKSwwPnQuYWN0aXZlJiYodC5hY3RpdmUrPXRoaXMuaGVhZGVycy5sZW5ndGgpLHRoaXMuX3JlZnJlc2goKX0sX2dldENyZWF0ZUV2ZW50RGF0YTpmdW5jdGlvbigpe3JldHVybntoZWFkZXI6dGhpcy5hY3RpdmUscGFuZWw6dGhpcy5hY3RpdmUubGVuZ3RoP3RoaXMuYWN0aXZlLm5leHQoKTplKCl9fSxfY3JlYXRlSWNvbnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMuaWNvbnM7dCYmKGUoIjxzcGFuPiIpLmFkZENsYXNzKCJ1aS1hY2NvcmRpb24taGVhZGVyLWljb24gdWktaWNvbiAiK3QuaGVhZGVyKS5wcmVwZW5kVG8odGhpcy5oZWFkZXJzKSx0aGlzLmFjdGl2ZS5jaGlsZHJlbigiLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiIpLnJlbW92ZUNsYXNzKHQuaGVhZGVyKS5hZGRDbGFzcyh0LmFjdGl2ZUhlYWRlciksdGhpcy5oZWFkZXJzLmFkZENsYXNzKCJ1aS1hY2NvcmRpb24taWNvbnMiKSl9LF9kZXN0cm95SWNvbnM6ZnVuY3Rpb24oKXt0aGlzLmhlYWRlcnMucmVtb3ZlQ2xhc3MoInVpLWFjY29yZGlvbi1pY29ucyIpLmNoaWxkcmVuKCIudWktYWNjb3JkaW9uLWhlYWRlci1pY29uIikucmVtb3ZlKCl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGU7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1hY2NvcmRpb24gdWktd2lkZ2V0IHVpLWhlbHBlci1yZXNldCIpLnJlbW92ZUF0dHIoInJvbGUiKSx0aGlzLmhlYWRlcnMucmVtb3ZlQ2xhc3MoInVpLWFjY29yZGlvbi1oZWFkZXIgdWktYWNjb3JkaW9uLWhlYWRlci1hY3RpdmUgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLXN0YXRlLWFjdGl2ZSB1aS1zdGF0ZS1kaXNhYmxlZCB1aS1jb3JuZXItdG9wIikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoImFyaWEtZXhwYW5kZWQiKS5yZW1vdmVBdHRyKCJhcmlhLXNlbGVjdGVkIikucmVtb3ZlQXR0cigiYXJpYS1jb250cm9scyIpLnJlbW92ZUF0dHIoInRhYkluZGV4IikucmVtb3ZlVW5pcXVlSWQoKSx0aGlzLl9kZXN0cm95SWNvbnMoKSxlPXRoaXMuaGVhZGVycy5uZXh0KCkucmVtb3ZlQ2xhc3MoInVpLWhlbHBlci1yZXNldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9tIHVpLWFjY29yZGlvbi1jb250ZW50IHVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSB1aS1zdGF0ZS1kaXNhYmxlZCIpLmNzcygiZGlzcGxheSIsIiIpLnJlbW92ZUF0dHIoInJvbGUiKS5yZW1vdmVBdHRyKCJhcmlhLWhpZGRlbiIpLnJlbW92ZUF0dHIoImFyaWEtbGFiZWxsZWRieSIpLnJlbW92ZVVuaXF1ZUlkKCksImNvbnRlbnQiIT09dGhpcy5vcHRpb25zLmhlaWdodFN0eWxlJiZlLmNzcygiaGVpZ2h0IiwiIil9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4iYWN0aXZlIj09PWU/KHRoaXMuX2FjdGl2YXRlKHQpLHZvaWQgMCk6KCJldmVudCI9PT1lJiYodGhpcy5vcHRpb25zLmV2ZW50JiZ0aGlzLl9vZmYodGhpcy5oZWFkZXJzLHRoaXMub3B0aW9ucy5ldmVudCksdGhpcy5fc2V0dXBFdmVudHModCkpLHRoaXMuX3N1cGVyKGUsdCksImNvbGxhcHNpYmxlIiE9PWV8fHR8fHRoaXMub3B0aW9ucy5hY3RpdmUhPT0hMXx8dGhpcy5fYWN0aXZhdGUoMCksImljb25zIj09PWUmJih0aGlzLl9kZXN0cm95SWNvbnMoKSx0JiZ0aGlzLl9jcmVhdGVJY29ucygpKSwiZGlzYWJsZWQiPT09ZSYmKHRoaXMuZWxlbWVudC50b2dnbGVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiLCEhdCkuYXR0cigiYXJpYS1kaXNhYmxlZCIsdCksdGhpcy5oZWFkZXJzLmFkZCh0aGlzLmhlYWRlcnMubmV4dCgpKS50b2dnbGVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiLCEhdCkpLHZvaWQgMCl9LF9rZXlkb3duOmZ1bmN0aW9uKHQpe2lmKCF0LmFsdEtleSYmIXQuY3RybEtleSl7dmFyIGk9ZS51aS5rZXlDb2RlLHM9dGhpcy5oZWFkZXJzLmxlbmd0aCxuPXRoaXMuaGVhZGVycy5pbmRleCh0LnRhcmdldCksYT0hMTtzd2l0Y2godC5rZXlDb2RlKXtjYXNlIGkuUklHSFQ6Y2FzZSBpLkRPV046YT10aGlzLmhlYWRlcnNbKG4rMSklc107YnJlYWs7Y2FzZSBpLkxFRlQ6Y2FzZSBpLlVQOmE9dGhpcy5oZWFkZXJzWyhuLTErcyklc107YnJlYWs7Y2FzZSBpLlNQQUNFOmNhc2UgaS5FTlRFUjp0aGlzLl9ldmVudEhhbmRsZXIodCk7YnJlYWs7Y2FzZSBpLkhPTUU6YT10aGlzLmhlYWRlcnNbMF07YnJlYWs7Y2FzZSBpLkVORDphPXRoaXMuaGVhZGVyc1tzLTFdfWEmJihlKHQudGFyZ2V0KS5hdHRyKCJ0YWJJbmRleCIsLTEpLGUoYSkuYXR0cigidGFiSW5kZXgiLDApLGEuZm9jdXMoKSx0LnByZXZlbnREZWZhdWx0KCkpfX0sX3BhbmVsS2V5RG93bjpmdW5jdGlvbih0KXt0LmtleUNvZGU9PT1lLnVpLmtleUNvZGUuVVAmJnQuY3RybEtleSYmZSh0LmN1cnJlbnRUYXJnZXQpLnByZXYoKS5mb2N1cygpfSxyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zO3RoaXMuX3Byb2Nlc3NQYW5lbHMoKSx0LmFjdGl2ZT09PSExJiZ0LmNvbGxhcHNpYmxlPT09ITB8fCF0aGlzLmhlYWRlcnMubGVuZ3RoPyh0LmFjdGl2ZT0hMSx0aGlzLmFjdGl2ZT1lKCkpOnQuYWN0aXZlPT09ITE/dGhpcy5fYWN0aXZhdGUoMCk6dGhpcy5hY3RpdmUubGVuZ3RoJiYhZS5jb250YWlucyh0aGlzLmVsZW1lbnRbMF0sdGhpcy5hY3RpdmVbMF0pP3RoaXMuaGVhZGVycy5sZW5ndGg9PT10aGlzLmhlYWRlcnMuZmluZCgiLnVpLXN0YXRlLWRpc2FibGVkIikubGVuZ3RoPyh0LmFjdGl2ZT0hMSx0aGlzLmFjdGl2ZT1lKCkpOnRoaXMuX2FjdGl2YXRlKE1hdGgubWF4KDAsdC5hY3RpdmUtMSkpOnQuYWN0aXZlPXRoaXMuaGVhZGVycy5pbmRleCh0aGlzLmFjdGl2ZSksdGhpcy5fZGVzdHJveUljb25zKCksdGhpcy5fcmVmcmVzaCgpfSxfcHJvY2Vzc1BhbmVsczpmdW5jdGlvbigpe3ZhciBlPXRoaXMuaGVhZGVycyx0PXRoaXMucGFuZWxzO3RoaXMuaGVhZGVycz10aGlzLmVsZW1lbnQuZmluZCh0aGlzLm9wdGlvbnMuaGVhZGVyKS5hZGRDbGFzcygidWktYWNjb3JkaW9uLWhlYWRlciB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwiKSx0aGlzLnBhbmVscz10aGlzLmhlYWRlcnMubmV4dCgpLmFkZENsYXNzKCJ1aS1hY2NvcmRpb24tY29udGVudCB1aS1oZWxwZXItcmVzZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWJvdHRvbSIpLmZpbHRlcigiOm5vdCgudWktYWNjb3JkaW9uLWNvbnRlbnQtYWN0aXZlKSIpLmhpZGUoKSx0JiYodGhpcy5fb2ZmKGUubm90KHRoaXMuaGVhZGVycykpLHRoaXMuX29mZih0Lm5vdCh0aGlzLnBhbmVscykpKX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdCxpPXRoaXMub3B0aW9ucyxzPWkuaGVpZ2h0U3R5bGUsbj10aGlzLmVsZW1lbnQucGFyZW50KCk7dGhpcy5hY3RpdmU9dGhpcy5fZmluZEFjdGl2ZShpLmFjdGl2ZSkuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlIHVpLXN0YXRlLWFjdGl2ZSB1aS1jb3JuZXItdG9wIikucmVtb3ZlQ2xhc3MoInVpLWNvcm5lci1hbGwiKSx0aGlzLmFjdGl2ZS5uZXh0KCkuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSIpLnNob3coKSx0aGlzLmhlYWRlcnMuYXR0cigicm9sZSIsInRhYiIpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLGk9dC51bmlxdWVJZCgpLmF0dHIoImlkIikscz10Lm5leHQoKSxuPXMudW5pcXVlSWQoKS5hdHRyKCJpZCIpO3QuYXR0cigiYXJpYS1jb250cm9scyIsbikscy5hdHRyKCJhcmlhLWxhYmVsbGVkYnkiLGkpfSkubmV4dCgpLmF0dHIoInJvbGUiLCJ0YWJwYW5lbCIpLHRoaXMuaGVhZGVycy5ub3QodGhpcy5hY3RpdmUpLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoiZmFsc2UiLCJhcmlhLWV4cGFuZGVkIjoiZmFsc2UiLHRhYkluZGV4Oi0xfSkubmV4dCgpLmF0dHIoeyJhcmlhLWhpZGRlbiI6InRydWUifSkuaGlkZSgpLHRoaXMuYWN0aXZlLmxlbmd0aD90aGlzLmFjdGl2ZS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLCJhcmlhLWV4cGFuZGVkIjoidHJ1ZSIsdGFiSW5kZXg6MH0pLm5leHQoKS5hdHRyKHsiYXJpYS1oaWRkZW4iOiJmYWxzZSJ9KTp0aGlzLmhlYWRlcnMuZXEoMCkuYXR0cigidGFiSW5kZXgiLDApLHRoaXMuX2NyZWF0ZUljb25zKCksdGhpcy5fc2V0dXBFdmVudHMoaS5ldmVudCksImZpbGwiPT09cz8odD1uLmhlaWdodCgpLHRoaXMuZWxlbWVudC5zaWJsaW5ncygiOnZpc2libGUiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9ZSh0aGlzKSxzPWkuY3NzKCJwb3NpdGlvbiIpOyJhYnNvbHV0ZSIhPT1zJiYiZml4ZWQiIT09cyYmKHQtPWkub3V0ZXJIZWlnaHQoITApKX0pLHRoaXMuaGVhZGVycy5lYWNoKGZ1bmN0aW9uKCl7dC09ZSh0aGlzKS5vdXRlckhlaWdodCghMCl9KSx0aGlzLmhlYWRlcnMubmV4dCgpLmVhY2goZnVuY3Rpb24oKXtlKHRoaXMpLmhlaWdodChNYXRoLm1heCgwLHQtZSh0aGlzKS5pbm5lckhlaWdodCgpK2UodGhpcykuaGVpZ2h0KCkpKX0pLmNzcygib3ZlcmZsb3ciLCJhdXRvIikpOiJhdXRvIj09PXMmJih0PTAsdGhpcy5oZWFkZXJzLm5leHQoKS5lYWNoKGZ1bmN0aW9uKCl7dD1NYXRoLm1heCh0LGUodGhpcykuY3NzKCJoZWlnaHQiLCIiKS5oZWlnaHQoKSl9KS5oZWlnaHQodCkpfSxfYWN0aXZhdGU6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5fZmluZEFjdGl2ZSh0KVswXTtpIT09dGhpcy5hY3RpdmVbMF0mJihpPWl8fHRoaXMuYWN0aXZlWzBdLHRoaXMuX2V2ZW50SGFuZGxlcih7dGFyZ2V0OmksY3VycmVudFRhcmdldDppLHByZXZlbnREZWZhdWx0OmUubm9vcH0pKX0sX2ZpbmRBY3RpdmU6ZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P3RoaXMuaGVhZGVycy5lcSh0KTplKCl9LF9zZXR1cEV2ZW50czpmdW5jdGlvbih0KXt2YXIgaT17a2V5ZG93bjoiX2tleWRvd24ifTt0JiZlLmVhY2godC5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsdCl7aVt0XT0iX2V2ZW50SGFuZGxlciJ9KSx0aGlzLl9vZmYodGhpcy5oZWFkZXJzLmFkZCh0aGlzLmhlYWRlcnMubmV4dCgpKSksdGhpcy5fb24odGhpcy5oZWFkZXJzLGkpLHRoaXMuX29uKHRoaXMuaGVhZGVycy5uZXh0KCkse2tleWRvd246Il9wYW5lbEtleURvd24ifSksdGhpcy5faG92ZXJhYmxlKHRoaXMuaGVhZGVycyksdGhpcy5fZm9jdXNhYmxlKHRoaXMuaGVhZGVycyl9LF9ldmVudEhhbmRsZXI6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5vcHRpb25zLHM9dGhpcy5hY3RpdmUsbj1lKHQuY3VycmVudFRhcmdldCksYT1uWzBdPT09c1swXSxvPWEmJmkuY29sbGFwc2libGUscj1vP2UoKTpuLm5leHQoKSxoPXMubmV4dCgpLGw9e29sZEhlYWRlcjpzLG9sZFBhbmVsOmgsbmV3SGVhZGVyOm8/ZSgpOm4sbmV3UGFuZWw6cn07CnQucHJldmVudERlZmF1bHQoKSxhJiYhaS5jb2xsYXBzaWJsZXx8dGhpcy5fdHJpZ2dlcigiYmVmb3JlQWN0aXZhdGUiLHQsbCk9PT0hMXx8KGkuYWN0aXZlPW8/ITE6dGhpcy5oZWFkZXJzLmluZGV4KG4pLHRoaXMuYWN0aXZlPWE/ZSgpOm4sdGhpcy5fdG9nZ2xlKGwpLHMucmVtb3ZlQ2xhc3MoInVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlIHVpLXN0YXRlLWFjdGl2ZSIpLGkuaWNvbnMmJnMuY2hpbGRyZW4oIi51aS1hY2NvcmRpb24taGVhZGVyLWljb24iKS5yZW1vdmVDbGFzcyhpLmljb25zLmFjdGl2ZUhlYWRlcikuYWRkQ2xhc3MoaS5pY29ucy5oZWFkZXIpLGF8fChuLnJlbW92ZUNsYXNzKCJ1aS1jb3JuZXItYWxsIikuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlIHVpLXN0YXRlLWFjdGl2ZSB1aS1jb3JuZXItdG9wIiksaS5pY29ucyYmbi5jaGlsZHJlbigiLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiIpLnJlbW92ZUNsYXNzKGkuaWNvbnMuaGVhZGVyKS5hZGRDbGFzcyhpLmljb25zLmFjdGl2ZUhlYWRlciksbi5uZXh0KCkuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSIpKSl9LF90b2dnbGU6ZnVuY3Rpb24odCl7dmFyIGk9dC5uZXdQYW5lbCxzPXRoaXMucHJldlNob3cubGVuZ3RoP3RoaXMucHJldlNob3c6dC5vbGRQYW5lbDt0aGlzLnByZXZTaG93LmFkZCh0aGlzLnByZXZIaWRlKS5zdG9wKCEwLCEwKSx0aGlzLnByZXZTaG93PWksdGhpcy5wcmV2SGlkZT1zLHRoaXMub3B0aW9ucy5hbmltYXRlP3RoaXMuX2FuaW1hdGUoaSxzLHQpOihzLmhpZGUoKSxpLnNob3coKSx0aGlzLl90b2dnbGVDb21wbGV0ZSh0KSkscy5hdHRyKHsiYXJpYS1oaWRkZW4iOiJ0cnVlIn0pLHMucHJldigpLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoiZmFsc2UiLCJhcmlhLWV4cGFuZGVkIjoiZmFsc2UifSksaS5sZW5ndGgmJnMubGVuZ3RoP3MucHJldigpLmF0dHIoe3RhYkluZGV4Oi0xLCJhcmlhLWV4cGFuZGVkIjoiZmFsc2UifSk6aS5sZW5ndGgmJnRoaXMuaGVhZGVycy5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gMD09PXBhcnNlSW50KGUodGhpcykuYXR0cigidGFiSW5kZXgiKSwxMCl9KS5hdHRyKCJ0YWJJbmRleCIsLTEpLGkuYXR0cigiYXJpYS1oaWRkZW4iLCJmYWxzZSIpLnByZXYoKS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLCJhcmlhLWV4cGFuZGVkIjoidHJ1ZSIsdGFiSW5kZXg6MH0pfSxfYW5pbWF0ZTpmdW5jdGlvbihlLHQsaSl7dmFyIHMsbixhLG89dGhpcyxyPTAsaD1lLmNzcygiYm94LXNpemluZyIpLGw9ZS5sZW5ndGgmJighdC5sZW5ndGh8fGUuaW5kZXgoKTx0LmluZGV4KCkpLHU9dGhpcy5vcHRpb25zLmFuaW1hdGV8fHt9LGQ9bCYmdS5kb3dufHx1LGM9ZnVuY3Rpb24oKXtvLl90b2dnbGVDb21wbGV0ZShpKX07cmV0dXJuIm51bWJlciI9PXR5cGVvZiBkJiYoYT1kKSwic3RyaW5nIj09dHlwZW9mIGQmJihuPWQpLG49bnx8ZC5lYXNpbmd8fHUuZWFzaW5nLGE9YXx8ZC5kdXJhdGlvbnx8dS5kdXJhdGlvbix0Lmxlbmd0aD9lLmxlbmd0aD8ocz1lLnNob3coKS5vdXRlckhlaWdodCgpLHQuYW5pbWF0ZSh0aGlzLmhpZGVQcm9wcyx7ZHVyYXRpb246YSxlYXNpbmc6bixzdGVwOmZ1bmN0aW9uKGUsdCl7dC5ub3c9TWF0aC5yb3VuZChlKX19KSxlLmhpZGUoKS5hbmltYXRlKHRoaXMuc2hvd1Byb3BzLHtkdXJhdGlvbjphLGVhc2luZzpuLGNvbXBsZXRlOmMsc3RlcDpmdW5jdGlvbihlLGkpe2kubm93PU1hdGgucm91bmQoZSksImhlaWdodCIhPT1pLnByb3A/ImNvbnRlbnQtYm94Ij09PWgmJihyKz1pLm5vdyk6ImNvbnRlbnQiIT09by5vcHRpb25zLmhlaWdodFN0eWxlJiYoaS5ub3c9TWF0aC5yb3VuZChzLXQub3V0ZXJIZWlnaHQoKS1yKSxyPTApfX0pLHZvaWQgMCk6dC5hbmltYXRlKHRoaXMuaGlkZVByb3BzLGEsbixjKTplLmFuaW1hdGUodGhpcy5zaG93UHJvcHMsYSxuLGMpfSxfdG9nZ2xlQ29tcGxldGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vbGRQYW5lbDt0LnJlbW92ZUNsYXNzKCJ1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUiKS5wcmV2KCkucmVtb3ZlQ2xhc3MoInVpLWNvcm5lci10b3AiKS5hZGRDbGFzcygidWktY29ybmVyLWFsbCIpLHQubGVuZ3RoJiYodC5wYXJlbnQoKVswXS5jbGFzc05hbWU9dC5wYXJlbnQoKVswXS5jbGFzc05hbWUpLHRoaXMuX3RyaWdnZXIoImFjdGl2YXRlIixudWxsLGUpfX0pLGUud2lkZ2V0KCJ1aS5tZW51Iix7dmVyc2lvbjoiMS4xMS40IixkZWZhdWx0RWxlbWVudDoiPHVsPiIsZGVsYXk6MzAwLG9wdGlvbnM6e2ljb25zOntzdWJtZW51OiJ1aS1pY29uLWNhcmF0LTEtZSJ9LGl0ZW1zOiI+ICoiLG1lbnVzOiJ1bCIscG9zaXRpb246e215OiJsZWZ0LTEgdG9wIixhdDoicmlnaHQgdG9wIn0scm9sZToibWVudSIsYmx1cjpudWxsLGZvY3VzOm51bGwsc2VsZWN0Om51bGx9LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmFjdGl2ZU1lbnU9dGhpcy5lbGVtZW50LHRoaXMubW91c2VIYW5kbGVkPSExLHRoaXMuZWxlbWVudC51bmlxdWVJZCgpLmFkZENsYXNzKCJ1aS1tZW51IHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCIpLnRvZ2dsZUNsYXNzKCJ1aS1tZW51LWljb25zIiwhIXRoaXMuZWxlbWVudC5maW5kKCIudWktaWNvbiIpLmxlbmd0aCkuYXR0cih7cm9sZTp0aGlzLm9wdGlvbnMucm9sZSx0YWJJbmRleDowfSksdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsInRydWUiKSx0aGlzLl9vbih7Im1vdXNlZG93biAudWktbWVudS1pdGVtIjpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCl9LCJjbGljayAudWktbWVudS1pdGVtIjpmdW5jdGlvbih0KXt2YXIgaT1lKHQudGFyZ2V0KTshdGhpcy5tb3VzZUhhbmRsZWQmJmkubm90KCIudWktc3RhdGUtZGlzYWJsZWQiKS5sZW5ndGgmJih0aGlzLnNlbGVjdCh0KSx0LmlzUHJvcGFnYXRpb25TdG9wcGVkKCl8fCh0aGlzLm1vdXNlSGFuZGxlZD0hMCksaS5oYXMoIi51aS1tZW51IikubGVuZ3RoP3RoaXMuZXhwYW5kKHQpOiF0aGlzLmVsZW1lbnQuaXMoIjpmb2N1cyIpJiZlKHRoaXMuZG9jdW1lbnRbMF0uYWN0aXZlRWxlbWVudCkuY2xvc2VzdCgiLnVpLW1lbnUiKS5sZW5ndGgmJih0aGlzLmVsZW1lbnQudHJpZ2dlcigiZm9jdXMiLFshMF0pLHRoaXMuYWN0aXZlJiYxPT09dGhpcy5hY3RpdmUucGFyZW50cygiLnVpLW1lbnUiKS5sZW5ndGgmJmNsZWFyVGltZW91dCh0aGlzLnRpbWVyKSkpfSwibW91c2VlbnRlciAudWktbWVudS1pdGVtIjpmdW5jdGlvbih0KXtpZighdGhpcy5wcmV2aW91c0ZpbHRlcil7dmFyIGk9ZSh0LmN1cnJlbnRUYXJnZXQpO2kuc2libGluZ3MoIi51aS1zdGF0ZS1hY3RpdmUiKS5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlIiksdGhpcy5mb2N1cyh0LGkpfX0sbW91c2VsZWF2ZToiY29sbGFwc2VBbGwiLCJtb3VzZWxlYXZlIC51aS1tZW51IjoiY29sbGFwc2VBbGwiLGZvY3VzOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5hY3RpdmV8fHRoaXMuZWxlbWVudC5maW5kKHRoaXMub3B0aW9ucy5pdGVtcykuZXEoMCk7dHx8dGhpcy5mb2N1cyhlLGkpfSxibHVyOmZ1bmN0aW9uKHQpe3RoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7ZS5jb250YWlucyh0aGlzLmVsZW1lbnRbMF0sdGhpcy5kb2N1bWVudFswXS5hY3RpdmVFbGVtZW50KXx8dGhpcy5jb2xsYXBzZUFsbCh0KX0pfSxrZXlkb3duOiJfa2V5ZG93biJ9KSx0aGlzLnJlZnJlc2goKSx0aGlzLl9vbih0aGlzLmRvY3VtZW50LHtjbGljazpmdW5jdGlvbihlKXt0aGlzLl9jbG9zZU9uRG9jdW1lbnRDbGljayhlKSYmdGhpcy5jb2xsYXBzZUFsbChlKSx0aGlzLm1vdXNlSGFuZGxlZD0hMX19KX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cigiYXJpYS1hY3RpdmVkZXNjZW5kYW50IikuZmluZCgiLnVpLW1lbnUiKS5hZGRCYWNrKCkucmVtb3ZlQ2xhc3MoInVpLW1lbnUgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLW1lbnUtaWNvbnMgdWktZnJvbnQiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0cigidGFiSW5kZXgiKS5yZW1vdmVBdHRyKCJhcmlhLWxhYmVsbGVkYnkiKS5yZW1vdmVBdHRyKCJhcmlhLWV4cGFuZGVkIikucmVtb3ZlQXR0cigiYXJpYS1oaWRkZW4iKS5yZW1vdmVBdHRyKCJhcmlhLWRpc2FibGVkIikucmVtb3ZlVW5pcXVlSWQoKS5zaG93KCksdGhpcy5lbGVtZW50LmZpbmQoIi51aS1tZW51LWl0ZW0iKS5yZW1vdmVDbGFzcygidWktbWVudS1pdGVtIikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoImFyaWEtZGlzYWJsZWQiKS5yZW1vdmVVbmlxdWVJZCgpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLnJlbW92ZUF0dHIoInRhYkluZGV4IikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoImFyaWEtaGFzcG9wdXAiKS5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpO3QuZGF0YSgidWktbWVudS1zdWJtZW51LWNhcmF0IikmJnQucmVtb3ZlKCl9KSx0aGlzLmVsZW1lbnQuZmluZCgiLnVpLW1lbnUtZGl2aWRlciIpLnJlbW92ZUNsYXNzKCJ1aS1tZW51LWRpdmlkZXIgdWktd2lkZ2V0LWNvbnRlbnQiKX0sX2tleWRvd246ZnVuY3Rpb24odCl7dmFyIGkscyxuLGEsbz0hMDtzd2l0Y2godC5rZXlDb2RlKXtjYXNlIGUudWkua2V5Q29kZS5QQUdFX1VQOnRoaXMucHJldmlvdXNQYWdlKHQpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLlBBR0VfRE9XTjp0aGlzLm5leHRQYWdlKHQpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkhPTUU6dGhpcy5fbW92ZSgiZmlyc3QiLCJmaXJzdCIsdCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRU5EOnRoaXMuX21vdmUoImxhc3QiLCJsYXN0Iix0KTticmVhaztjYXNlIGUudWkua2V5Q29kZS5VUDp0aGlzLnByZXZpb3VzKHQpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkRPV046dGhpcy5uZXh0KHQpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkxFRlQ6dGhpcy5jb2xsYXBzZSh0KTticmVhaztjYXNlIGUudWkua2V5Q29kZS5SSUdIVDp0aGlzLmFjdGl2ZSYmIXRoaXMuYWN0aXZlLmlzKCIudWktc3RhdGUtZGlzYWJsZWQiKSYmdGhpcy5leHBhbmQodCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRU5URVI6Y2FzZSBlLnVpLmtleUNvZGUuU1BBQ0U6dGhpcy5fYWN0aXZhdGUodCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRVNDQVBFOnRoaXMuY29sbGFwc2UodCk7YnJlYWs7ZGVmYXVsdDpvPSExLHM9dGhpcy5wcmV2aW91c0ZpbHRlcnx8IiIsbj1TdHJpbmcuZnJvbUNoYXJDb2RlKHQua2V5Q29kZSksYT0hMSxjbGVhclRpbWVvdXQodGhpcy5maWx0ZXJUaW1lciksbj09PXM/YT0hMDpuPXMrbixpPXRoaXMuX2ZpbHRlck1lbnVJdGVtcyhuKSxpPWEmJi0xIT09aS5pbmRleCh0aGlzLmFjdGl2ZS5uZXh0KCkpP3RoaXMuYWN0aXZlLm5leHRBbGwoIi51aS1tZW51LWl0ZW0iKTppLGkubGVuZ3RofHwobj1TdHJpbmcuZnJvbUNoYXJDb2RlKHQua2V5Q29kZSksaT10aGlzLl9maWx0ZXJNZW51SXRlbXMobikpLGkubGVuZ3RoPyh0aGlzLmZvY3VzKHQsaSksdGhpcy5wcmV2aW91c0ZpbHRlcj1uLHRoaXMuZmlsdGVyVGltZXI9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5wcmV2aW91c0ZpbHRlcn0sMWUzKSk6ZGVsZXRlIHRoaXMucHJldmlvdXNGaWx0ZXJ9byYmdC5wcmV2ZW50RGVmYXVsdCgpfSxfYWN0aXZhdGU6ZnVuY3Rpb24oZSl7dGhpcy5hY3RpdmUuaXMoIi51aS1zdGF0ZS1kaXNhYmxlZCIpfHwodGhpcy5hY3RpdmUuaXMoIlthcmlhLWhhc3BvcHVwPSd0cnVlJ10iKT90aGlzLmV4cGFuZChlKTp0aGlzLnNlbGVjdChlKSl9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdCxpLHM9dGhpcyxuPXRoaXMub3B0aW9ucy5pY29ucy5zdWJtZW51LGE9dGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLm1lbnVzKTt0aGlzLmVsZW1lbnQudG9nZ2xlQ2xhc3MoInVpLW1lbnUtaWNvbnMiLCEhdGhpcy5lbGVtZW50LmZpbmQoIi51aS1pY29uIikubGVuZ3RoKSxhLmZpbHRlcigiOm5vdCgudWktbWVudSkiKS5hZGRDbGFzcygidWktbWVudSB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktZnJvbnQiKS5oaWRlKCkuYXR0cih7cm9sZTp0aGlzLm9wdGlvbnMucm9sZSwiYXJpYS1oaWRkZW4iOiJ0cnVlIiwiYXJpYS1leHBhbmRlZCI6ImZhbHNlIn0pLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLGk9dC5wYXJlbnQoKSxzPWUoIjxzcGFuPiIpLmFkZENsYXNzKCJ1aS1tZW51LWljb24gdWktaWNvbiAiK24pLmRhdGEoInVpLW1lbnUtc3VibWVudS1jYXJhdCIsITApO2kuYXR0cigiYXJpYS1oYXNwb3B1cCIsInRydWUiKS5wcmVwZW5kKHMpLHQuYXR0cigiYXJpYS1sYWJlbGxlZGJ5IixpLmF0dHIoImlkIikpfSksdD1hLmFkZCh0aGlzLmVsZW1lbnQpLGk9dC5maW5kKHRoaXMub3B0aW9ucy5pdGVtcyksaS5ub3QoIi51aS1tZW51LWl0ZW0iKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTtzLl9pc0RpdmlkZXIodCkmJnQuYWRkQ2xhc3MoInVpLXdpZGdldC1jb250ZW50IHVpLW1lbnUtZGl2aWRlciIpfSksaS5ub3QoIi51aS1tZW51LWl0ZW0sIC51aS1tZW51LWRpdmlkZXIiKS5hZGRDbGFzcygidWktbWVudS1pdGVtIikudW5pcXVlSWQoKS5hdHRyKHt0YWJJbmRleDotMSxyb2xlOnRoaXMuX2l0ZW1Sb2xlKCl9KSxpLmZpbHRlcigiLnVpLXN0YXRlLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsInRydWUiKSx0aGlzLmFjdGl2ZSYmIWUuY29udGFpbnModGhpcy5lbGVtZW50WzBdLHRoaXMuYWN0aXZlWzBdKSYmdGhpcy5ibHVyKCl9LF9pdGVtUm9sZTpmdW5jdGlvbigpe3JldHVybnttZW51OiJtZW51aXRlbSIsbGlzdGJveDoib3B0aW9uIn1bdGhpcy5vcHRpb25zLnJvbGVdfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7Imljb25zIj09PWUmJnRoaXMuZWxlbWVudC5maW5kKCIudWktbWVudS1pY29uIikucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmljb25zLnN1Ym1lbnUpLmFkZENsYXNzKHQuc3VibWVudSksImRpc2FibGVkIj09PWUmJnRoaXMuZWxlbWVudC50b2dnbGVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiLCEhdCkuYXR0cigiYXJpYS1kaXNhYmxlZCIsdCksdGhpcy5fc3VwZXIoZSx0KX0sZm9jdXM6ZnVuY3Rpb24oZSx0KXt2YXIgaSxzO3RoaXMuYmx1cihlLGUmJiJmb2N1cyI9PT1lLnR5cGUpLHRoaXMuX3Njcm9sbEludG9WaWV3KHQpLHRoaXMuYWN0aXZlPXQuZmlyc3QoKSxzPXRoaXMuYWN0aXZlLmFkZENsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLm9wdGlvbnMucm9sZSYmdGhpcy5lbGVtZW50LmF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIscy5hdHRyKCJpZCIpKSx0aGlzLmFjdGl2ZS5wYXJlbnQoKS5jbG9zZXN0KCIudWktbWVudS1pdGVtIikuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLGUmJiJrZXlkb3duIj09PWUudHlwZT90aGlzLl9jbG9zZSgpOnRoaXMudGltZXI9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLl9jbG9zZSgpfSx0aGlzLmRlbGF5KSxpPXQuY2hpbGRyZW4oIi51aS1tZW51IiksaS5sZW5ndGgmJmUmJi9ebW91c2UvLnRlc3QoZS50eXBlKSYmdGhpcy5fc3RhcnRPcGVuaW5nKGkpLHRoaXMuYWN0aXZlTWVudT10LnBhcmVudCgpLHRoaXMuX3RyaWdnZXIoImZvY3VzIixlLHtpdGVtOnR9KX0sX3Njcm9sbEludG9WaWV3OmZ1bmN0aW9uKHQpe3ZhciBpLHMsbixhLG8scjt0aGlzLl9oYXNTY3JvbGwoKSYmKGk9cGFyc2VGbG9hdChlLmNzcyh0aGlzLmFjdGl2ZU1lbnVbMF0sImJvcmRlclRvcFdpZHRoIikpfHwwLHM9cGFyc2VGbG9hdChlLmNzcyh0aGlzLmFjdGl2ZU1lbnVbMF0sInBhZGRpbmdUb3AiKSl8fDAsbj10Lm9mZnNldCgpLnRvcC10aGlzLmFjdGl2ZU1lbnUub2Zmc2V0KCkudG9wLWktcyxhPXRoaXMuYWN0aXZlTWVudS5zY3JvbGxUb3AoKSxvPXRoaXMuYWN0aXZlTWVudS5oZWlnaHQoKSxyPXQub3V0ZXJIZWlnaHQoKSwwPm4/dGhpcy5hY3RpdmVNZW51LnNjcm9sbFRvcChhK24pOm4rcj5vJiZ0aGlzLmFjdGl2ZU1lbnUuc2Nyb2xsVG9wKGErbi1vK3IpKX0sYmx1cjpmdW5jdGlvbihlLHQpe3R8fGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKSx0aGlzLmFjdGl2ZSYmKHRoaXMuYWN0aXZlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpLHRoaXMuYWN0aXZlPW51bGwsdGhpcy5fdHJpZ2dlcigiYmx1ciIsZSx7aXRlbTp0aGlzLmFjdGl2ZX0pKX0sX3N0YXJ0T3BlbmluZzpmdW5jdGlvbihlKXtjbGVhclRpbWVvdXQodGhpcy50aW1lciksInRydWUiPT09ZS5hdHRyKCJhcmlhLWhpZGRlbiIpJiYodGhpcy50aW1lcj10aGlzLl9kZWxheShmdW5jdGlvbigpe3RoaXMuX2Nsb3NlKCksdGhpcy5fb3BlbihlKX0sdGhpcy5kZWxheSkpfSxfb3BlbjpmdW5jdGlvbih0KXt2YXIgaT1lLmV4dGVuZCh7b2Y6dGhpcy5hY3RpdmV9LHRoaXMub3B0aW9ucy5wb3NpdGlvbik7Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpLHRoaXMuZWxlbWVudC5maW5kKCIudWktbWVudSIpLm5vdCh0LnBhcmVudHMoIi51aS1tZW51IikpLmhpZGUoKS5hdHRyKCJhcmlhLWhpZGRlbiIsInRydWUiKSx0LnNob3coKS5yZW1vdmVBdHRyKCJhcmlhLWhpZGRlbiIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJ0cnVlIikucG9zaXRpb24oaSl9LGNvbGxhcHNlQWxsOmZ1bmN0aW9uKHQsaSl7Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpLHRoaXMudGltZXI9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt2YXIgcz1pP3RoaXMuZWxlbWVudDplKHQmJnQudGFyZ2V0KS5jbG9zZXN0KHRoaXMuZWxlbWVudC5maW5kKCIudWktbWVudSIpKTtzLmxlbmd0aHx8KHM9dGhpcy5lbGVtZW50KSx0aGlzLl9jbG9zZShzKSx0aGlzLmJsdXIodCksdGhpcy5hY3RpdmVNZW51PXN9LHRoaXMuZGVsYXkpfSxfY2xvc2U6ZnVuY3Rpb24oZSl7ZXx8KGU9dGhpcy5hY3RpdmU/dGhpcy5hY3RpdmUucGFyZW50KCk6dGhpcy5lbGVtZW50KSxlLmZpbmQoIi51aS1tZW51IikuaGlkZSgpLmF0dHIoImFyaWEtaGlkZGVuIiwidHJ1ZSIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLmVuZCgpLmZpbmQoIi51aS1zdGF0ZS1hY3RpdmUiKS5ub3QoIi51aS1zdGF0ZS1mb2N1cyIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKX0sX2Nsb3NlT25Eb2N1bWVudENsaWNrOmZ1bmN0aW9uKHQpe3JldHVybiFlKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktbWVudSIpLmxlbmd0aH0sX2lzRGl2aWRlcjpmdW5jdGlvbihlKXtyZXR1cm4hL1teXC1cdTIwMTRcdTIwMTNcc10vLnRlc3QoZS50ZXh0KCkpfSxjb2xsYXBzZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmFjdGl2ZSYmdGhpcy5hY3RpdmUucGFyZW50KCkuY2xvc2VzdCgiLnVpLW1lbnUtaXRlbSIsdGhpcy5lbGVtZW50KTt0JiZ0Lmxlbmd0aCYmKHRoaXMuX2Nsb3NlKCksdGhpcy5mb2N1cyhlLHQpKX0sZXhwYW5kOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuYWN0aXZlJiZ0aGlzLmFjdGl2ZS5jaGlsZHJlbigiLnVpLW1lbnUgIikuZmluZCh0aGlzLm9wdGlvbnMuaXRlbXMpLmZpcnN0KCk7dCYmdC5sZW5ndGgmJih0aGlzLl9vcGVuKHQucGFyZW50KCkpLHRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dGhpcy5mb2N1cyhlLHQpfSkpfSxuZXh0OmZ1bmN0aW9uKGUpe3RoaXMuX21vdmUoIm5leHQiLCJmaXJzdCIsZSl9LHByZXZpb3VzOmZ1bmN0aW9uKGUpe3RoaXMuX21vdmUoInByZXYiLCJsYXN0IixlKX0saXNGaXJzdEl0ZW06ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hY3RpdmUmJiF0aGlzLmFjdGl2ZS5wcmV2QWxsKCIudWktbWVudS1pdGVtIikubGVuZ3RofSxpc0xhc3RJdGVtOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWN0aXZlJiYhdGhpcy5hY3RpdmUubmV4dEFsbCgiLnVpLW1lbnUtaXRlbSIpLmxlbmd0aH0sX21vdmU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzO3RoaXMuYWN0aXZlJiYocz0iZmlyc3QiPT09ZXx8Imxhc3QiPT09ZT90aGlzLmFjdGl2ZVsiZmlyc3QiPT09ZT8icHJldkFsbCI6Im5leHRBbGwiXSgiLnVpLW1lbnUtaXRlbSIpLmVxKC0xKTp0aGlzLmFjdGl2ZVtlKyJBbGwiXSgiLnVpLW1lbnUtaXRlbSIpLmVxKDApKSxzJiZzLmxlbmd0aCYmdGhpcy5hY3RpdmV8fChzPXRoaXMuYWN0aXZlTWVudS5maW5kKHRoaXMub3B0aW9ucy5pdGVtcylbdF0oKSksdGhpcy5mb2N1cyhpLHMpfSxuZXh0UGFnZTpmdW5jdGlvbih0KXt2YXIgaSxzLG47cmV0dXJuIHRoaXMuYWN0aXZlPyh0aGlzLmlzTGFzdEl0ZW0oKXx8KHRoaXMuX2hhc1Njcm9sbCgpPyhzPXRoaXMuYWN0aXZlLm9mZnNldCgpLnRvcCxuPXRoaXMuZWxlbWVudC5oZWlnaHQoKSx0aGlzLmFjdGl2ZS5uZXh0QWxsKCIudWktbWVudS1pdGVtIikuZWFjaChmdW5jdGlvbigpe3JldHVybiBpPWUodGhpcyksMD5pLm9mZnNldCgpLnRvcC1zLW59KSx0aGlzLmZvY3VzKHQsaSkpOnRoaXMuZm9jdXModCx0aGlzLmFjdGl2ZU1lbnUuZmluZCh0aGlzLm9wdGlvbnMuaXRlbXMpW3RoaXMuYWN0aXZlPyJsYXN0IjoiZmlyc3QiXSgpKSksdm9pZCAwKToodGhpcy5uZXh0KHQpLHZvaWQgMCl9LHByZXZpb3VzUGFnZTpmdW5jdGlvbih0KXt2YXIgaSxzLG47cmV0dXJuIHRoaXMuYWN0aXZlPyh0aGlzLmlzRmlyc3RJdGVtKCl8fCh0aGlzLl9oYXNTY3JvbGwoKT8ocz10aGlzLmFjdGl2ZS5vZmZzZXQoKS50b3Asbj10aGlzLmVsZW1lbnQuaGVpZ2h0KCksdGhpcy5hY3RpdmUucHJldkFsbCgiLnVpLW1lbnUtaXRlbSIpLmVhY2goZnVuY3Rpb24oKXtyZXR1cm4gaT1lKHRoaXMpLGkub2Zmc2V0KCkudG9wLXMrbj4wfSksdGhpcy5mb2N1cyh0LGkpKTp0aGlzLmZvY3VzKHQsdGhpcy5hY3RpdmVNZW51LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKS5maXJzdCgpKSksdm9pZCAwKToodGhpcy5uZXh0KHQpLHZvaWQgMCl9LF9oYXNTY3JvbGw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0KCk8dGhpcy5lbGVtZW50LnByb3AoInNjcm9sbEhlaWdodCIpfSxzZWxlY3Q6ZnVuY3Rpb24odCl7dGhpcy5hY3RpdmU9dGhpcy5hY3RpdmV8fGUodC50YXJnZXQpLmNsb3Nlc3QoIi51aS1tZW51LWl0ZW0iKTt2YXIgaT17aXRlbTp0aGlzLmFjdGl2ZX07dGhpcy5hY3RpdmUuaGFzKCIudWktbWVudSIpLmxlbmd0aHx8dGhpcy5jb2xsYXBzZUFsbCh0LCEwKSx0aGlzLl90cmlnZ2VyKCJzZWxlY3QiLHQsaSl9LF9maWx0ZXJNZW51SXRlbXM6ZnVuY3Rpb24odCl7dmFyIGk9dC5yZXBsYWNlKC9bXC1cW1xde30oKSorPy4sXFxcXiR8I1xzXS9nLCJcXCQmIikscz1SZWdFeHAoIl4iK2ksImkiKTtyZXR1cm4gdGhpcy5hY3RpdmVNZW51LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKS5maWx0ZXIoIi51aS1tZW51LWl0ZW0iKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gcy50ZXN0KGUudHJpbShlKHRoaXMpLnRleHQoKSkpfSl9fSksZS53aWRnZXQoInVpLmF1dG9jb21wbGV0ZSIse3ZlcnNpb246IjEuMTEuNCIsZGVmYXVsdEVsZW1lbnQ6IjxpbnB1dD4iLG9wdGlvbnM6e2FwcGVuZFRvOm51bGwsYXV0b0ZvY3VzOiExLGRlbGF5OjMwMCxtaW5MZW5ndGg6MSxwb3NpdGlvbjp7bXk6ImxlZnQgdG9wIixhdDoibGVmdCBib3R0b20iLGNvbGxpc2lvbjoibm9uZSJ9LHNvdXJjZTpudWxsLGNoYW5nZTpudWxsLGNsb3NlOm51bGwsZm9jdXM6bnVsbCxvcGVuOm51bGwscmVzcG9uc2U6bnVsbCxzZWFyY2g6bnVsbCxzZWxlY3Q6bnVsbH0scmVxdWVzdEluZGV4OjAscGVuZGluZzowLF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgdCxpLHMsbj10aGlzLmVsZW1lbnRbMF0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxhPSJ0ZXh0YXJlYSI9PT1uLG89ImlucHV0Ij09PW47dGhpcy5pc011bHRpTGluZT1hPyEwOm8/ITE6dGhpcy5lbGVtZW50LnByb3AoImlzQ29udGVudEVkaXRhYmxlIiksdGhpcy52YWx1ZU1ldGhvZD10aGlzLmVsZW1lbnRbYXx8bz8idmFsIjoidGV4dCJdLHRoaXMuaXNOZXdNZW51PSEwLHRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktYXV0b2NvbXBsZXRlLWlucHV0IikuYXR0cigiYXV0b2NvbXBsZXRlIiwib2ZmIiksdGhpcy5fb24odGhpcy5lbGVtZW50LHtrZXlkb3duOmZ1bmN0aW9uKG4pe2lmKHRoaXMuZWxlbWVudC5wcm9wKCJyZWFkT25seSIpKXJldHVybiB0PSEwLHM9ITAsaT0hMCx2b2lkIDA7dD0hMSxzPSExLGk9ITE7dmFyIGE9ZS51aS5rZXlDb2RlO3N3aXRjaChuLmtleUNvZGUpe2Nhc2UgYS5QQUdFX1VQOnQ9ITAsdGhpcy5fbW92ZSgicHJldmlvdXNQYWdlIixuKTticmVhaztjYXNlIGEuUEFHRV9ET1dOOnQ9ITAsdGhpcy5fbW92ZSgibmV4dFBhZ2UiLG4pO2JyZWFrO2Nhc2UgYS5VUDp0PSEwLHRoaXMuX2tleUV2ZW50KCJwcmV2aW91cyIsbik7YnJlYWs7Y2FzZSBhLkRPV046dD0hMCx0aGlzLl9rZXlFdmVudCgibmV4dCIsbik7YnJlYWs7Y2FzZSBhLkVOVEVSOnRoaXMubWVudS5hY3RpdmUmJih0PSEwLG4ucHJldmVudERlZmF1bHQoKSx0aGlzLm1lbnUuc2VsZWN0KG4pKTticmVhaztjYXNlIGEuVEFCOnRoaXMubWVudS5hY3RpdmUmJnRoaXMubWVudS5zZWxlY3Qobik7YnJlYWs7Y2FzZSBhLkVTQ0FQRTp0aGlzLm1lbnUuZWxlbWVudC5pcygiOnZpc2libGUiKSYmKHRoaXMuaXNNdWx0aUxpbmV8fHRoaXMuX3ZhbHVlKHRoaXMudGVybSksdGhpcy5jbG9zZShuKSxuLnByZXZlbnREZWZhdWx0KCkpO2JyZWFrO2RlZmF1bHQ6aT0hMCx0aGlzLl9zZWFyY2hUaW1lb3V0KG4pfX0sa2V5cHJlc3M6ZnVuY3Rpb24ocyl7aWYodClyZXR1cm4gdD0hMSwoIXRoaXMuaXNNdWx0aUxpbmV8fHRoaXMubWVudS5lbGVtZW50LmlzKCI6dmlzaWJsZSIpKSYmcy5wcmV2ZW50RGVmYXVsdCgpLHZvaWQgMDtpZighaSl7dmFyIG49ZS51aS5rZXlDb2RlO3N3aXRjaChzLmtleUNvZGUpe2Nhc2Ugbi5QQUdFX1VQOnRoaXMuX21vdmUoInByZXZpb3VzUGFnZSIscyk7YnJlYWs7Y2FzZSBuLlBBR0VfRE9XTjp0aGlzLl9tb3ZlKCJuZXh0UGFnZSIscyk7YnJlYWs7Y2FzZSBuLlVQOnRoaXMuX2tleUV2ZW50KCJwcmV2aW91cyIscyk7YnJlYWs7Y2FzZSBuLkRPV046dGhpcy5fa2V5RXZlbnQoIm5leHQiLHMpfX19LGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiBzPyhzPSExLGUucHJldmVudERlZmF1bHQoKSx2b2lkIDApOih0aGlzLl9zZWFyY2hUaW1lb3V0KGUpLHZvaWQgMCl9LGZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZEl0ZW09bnVsbCx0aGlzLnByZXZpb3VzPXRoaXMuX3ZhbHVlKCl9LGJsdXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY2FuY2VsQmx1cj8oZGVsZXRlIHRoaXMuY2FuY2VsQmx1cix2b2lkIDApOihjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hpbmcpLHRoaXMuY2xvc2UoZSksdGhpcy5fY2hhbmdlKGUpLHZvaWQgMCl9fSksdGhpcy5faW5pdFNvdXJjZSgpLHRoaXMubWVudT1lKCI8dWw+IikuYWRkQ2xhc3MoInVpLWF1dG9jb21wbGV0ZSB1aS1mcm9udCIpLmFwcGVuZFRvKHRoaXMuX2FwcGVuZFRvKCkpLm1lbnUoe3JvbGU6bnVsbH0pLmhpZGUoKS5tZW51KCJpbnN0YW5jZSIpLHRoaXMuX29uKHRoaXMubWVudS5lbGVtZW50LHttb3VzZWRvd246ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuY2FuY2VsQmx1cj0hMCx0aGlzLl9kZWxheShmdW5jdGlvbigpe2RlbGV0ZSB0aGlzLmNhbmNlbEJsdXJ9KTt2YXIgaT10aGlzLm1lbnUuZWxlbWVudFswXTtlKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktbWVudS1pdGVtIikubGVuZ3RofHx0aGlzLl9kZWxheShmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5kb2N1bWVudC5vbmUoIm1vdXNlZG93biIsZnVuY3Rpb24ocyl7cy50YXJnZXQ9PT10LmVsZW1lbnRbMF18fHMudGFyZ2V0PT09aXx8ZS5jb250YWlucyhpLHMudGFyZ2V0KXx8dC5jbG9zZSgpfSl9KX0sbWVudWZvY3VzOmZ1bmN0aW9uKHQsaSl7dmFyIHMsbjtyZXR1cm4gdGhpcy5pc05ld01lbnUmJih0aGlzLmlzTmV3TWVudT0hMSx0Lm9yaWdpbmFsRXZlbnQmJi9ebW91c2UvLnRlc3QodC5vcmlnaW5hbEV2ZW50LnR5cGUpKT8odGhpcy5tZW51LmJsdXIoKSx0aGlzLmRvY3VtZW50Lm9uZSgibW91c2Vtb3ZlIixmdW5jdGlvbigpe2UodC50YXJnZXQpLnRyaWdnZXIodC5vcmlnaW5hbEV2ZW50KX0pLHZvaWQgMCk6KG49aS5pdGVtLmRhdGEoInVpLWF1dG9jb21wbGV0ZS1pdGVtIiksITEhPT10aGlzLl90cmlnZ2VyKCJmb2N1cyIsdCx7aXRlbTpufSkmJnQub3JpZ2luYWxFdmVudCYmL15rZXkvLnRlc3QodC5vcmlnaW5hbEV2ZW50LnR5cGUpJiZ0aGlzLl92YWx1ZShuLnZhbHVlKSxzPWkuaXRlbS5hdHRyKCJhcmlhLWxhYmVsIil8fG4udmFsdWUscyYmZS50cmltKHMpLmxlbmd0aCYmKHRoaXMubGl2ZVJlZ2lvbi5jaGlsZHJlbigpLmhpZGUoKSxlKCI8ZGl2PiIpLnRleHQocykuYXBwZW5kVG8odGhpcy5saXZlUmVnaW9uKSksdm9pZCAwKX0sbWVudXNlbGVjdDpmdW5jdGlvbihlLHQpe3ZhciBpPXQuaXRlbS5kYXRhKCJ1aS1hdXRvY29tcGxldGUtaXRlbSIpLHM9dGhpcy5wcmV2aW91czt0aGlzLmVsZW1lbnRbMF0hPT10aGlzLmRvY3VtZW50WzBdLmFjdGl2ZUVsZW1lbnQmJih0aGlzLmVsZW1lbnQuZm9jdXMoKSx0aGlzLnByZXZpb3VzPXMsdGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLnByZXZpb3VzPXMsdGhpcy5zZWxlY3RlZEl0ZW09aX0pKSwhMSE9PXRoaXMuX3RyaWdnZXIoInNlbGVjdCIsZSx7aXRlbTppfSkmJnRoaXMuX3ZhbHVlKGkudmFsdWUpLHRoaXMudGVybT10aGlzLl92YWx1ZSgpLHRoaXMuY2xvc2UoZSksdGhpcy5zZWxlY3RlZEl0ZW09aX19KSx0aGlzLmxpdmVSZWdpb249ZSgiPHNwYW4+Iix7cm9sZToic3RhdHVzIiwiYXJpYS1saXZlIjoiYXNzZXJ0aXZlIiwiYXJpYS1yZWxldmFudCI6ImFkZGl0aW9ucyJ9KS5hZGRDbGFzcygidWktaGVscGVyLWhpZGRlbi1hY2Nlc3NpYmxlIikuYXBwZW5kVG8odGhpcy5kb2N1bWVudFswXS5ib2R5KSx0aGlzLl9vbih0aGlzLndpbmRvdyx7YmVmb3JldW5sb2FkOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoImF1dG9jb21wbGV0ZSIpfX0pfSxfZGVzdHJveTpmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aGlzLnNlYXJjaGluZyksdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1hdXRvY29tcGxldGUtaW5wdXQiKS5yZW1vdmVBdHRyKCJhdXRvY29tcGxldGUiKSx0aGlzLm1lbnUuZWxlbWVudC5yZW1vdmUoKSx0aGlzLmxpdmVSZWdpb24ucmVtb3ZlKCl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXt0aGlzLl9zdXBlcihlLHQpLCJzb3VyY2UiPT09ZSYmdGhpcy5faW5pdFNvdXJjZSgpLCJhcHBlbmRUbyI9PT1lJiZ0aGlzLm1lbnUuZWxlbWVudC5hcHBlbmRUbyh0aGlzLl9hcHBlbmRUbygpKSwiZGlzYWJsZWQiPT09ZSYmdCYmdGhpcy54aHImJnRoaXMueGhyLmFib3J0KCl9LF9hcHBlbmRUbzpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy5hcHBlbmRUbztyZXR1cm4gdCYmKHQ9dC5qcXVlcnl8fHQubm9kZVR5cGU/ZSh0KTp0aGlzLmRvY3VtZW50LmZpbmQodCkuZXEoMCkpLHQmJnRbMF18fCh0PXRoaXMuZWxlbWVudC5jbG9zZXN0KCIudWktZnJvbnQiKSksdC5sZW5ndGh8fCh0PXRoaXMuZG9jdW1lbnRbMF0uYm9keSksdH0sX2luaXRTb3VyY2U6ZnVuY3Rpb24oKXt2YXIgdCxpLHM9dGhpcztlLmlzQXJyYXkodGhpcy5vcHRpb25zLnNvdXJjZSk/KHQ9dGhpcy5vcHRpb25zLnNvdXJjZSx0aGlzLnNvdXJjZT1mdW5jdGlvbihpLHMpe3MoZS51aS5hdXRvY29tcGxldGUuZmlsdGVyKHQsaS50ZXJtKSl9KToic3RyaW5nIj09dHlwZW9mIHRoaXMub3B0aW9ucy5zb3VyY2U/KGk9dGhpcy5vcHRpb25zLnNvdXJjZSx0aGlzLnNvdXJjZT1mdW5jdGlvbih0LG4pe3MueGhyJiZzLnhoci5hYm9ydCgpLHMueGhyPWUuYWpheCh7dXJsOmksZGF0YTp0LGRhdGFUeXBlOiJqc29uIixzdWNjZXNzOmZ1bmN0aW9uKGUpe24oZSl9LGVycm9yOmZ1bmN0aW9uKCl7bihbXSl9fSl9KTp0aGlzLnNvdXJjZT10aGlzLm9wdGlvbnMuc291cmNlfSxfc2VhcmNoVGltZW91dDpmdW5jdGlvbihlKXtjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hpbmcpLHRoaXMuc2VhcmNoaW5nPXRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50ZXJtPT09dGhpcy5fdmFsdWUoKSxpPXRoaXMubWVudS5lbGVtZW50LmlzKCI6dmlzaWJsZSIpLHM9ZS5hbHRLZXl8fGUuY3RybEtleXx8ZS5tZXRhS2V5fHxlLnNoaWZ0S2V5OyghdHx8dCYmIWkmJiFzKSYmKHRoaXMuc2VsZWN0ZWRJdGVtPW51bGwsdGhpcy5zZWFyY2gobnVsbCxlKSl9LHRoaXMub3B0aW9ucy5kZWxheSl9LHNlYXJjaDpmdW5jdGlvbihlLHQpe3JldHVybiBlPW51bGwhPWU/ZTp0aGlzLl92YWx1ZSgpLHRoaXMudGVybT10aGlzLl92YWx1ZSgpLGUubGVuZ3RoPHRoaXMub3B0aW9ucy5taW5MZW5ndGg/dGhpcy5jbG9zZSh0KTp0aGlzLl90cmlnZ2VyKCJzZWFyY2giLHQpIT09ITE/dGhpcy5fc2VhcmNoKGUpOnZvaWQgMH0sX3NlYXJjaDpmdW5jdGlvbihlKXt0aGlzLnBlbmRpbmcrKyx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLWF1dG9jb21wbGV0ZS1sb2FkaW5nIiksdGhpcy5jYW5jZWxTZWFyY2g9ITEsdGhpcy5zb3VyY2Uoe3Rlcm06ZX0sdGhpcy5fcmVzcG9uc2UoKSl9LF9yZXNwb25zZTpmdW5jdGlvbigpe3ZhciB0PSsrdGhpcy5yZXF1ZXN0SW5kZXg7cmV0dXJuIGUucHJveHkoZnVuY3Rpb24oZSl7dD09PXRoaXMucmVxdWVzdEluZGV4JiZ0aGlzLl9fcmVzcG9uc2UoZSksdGhpcy5wZW5kaW5nLS0sdGhpcy5wZW5kaW5nfHx0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWF1dG9jb21wbGV0ZS1sb2FkaW5nIil9LHRoaXMpfSxfX3Jlc3BvbnNlOmZ1bmN0aW9uKGUpe2UmJihlPXRoaXMuX25vcm1hbGl6ZShlKSksdGhpcy5fdHJpZ2dlcigicmVzcG9uc2UiLG51bGwse2NvbnRlbnQ6ZX0pLCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJmUmJmUubGVuZ3RoJiYhdGhpcy5jYW5jZWxTZWFyY2g/KHRoaXMuX3N1Z2dlc3QoZSksdGhpcy5fdHJpZ2dlcigib3BlbiIpKTp0aGlzLl9jbG9zZSgpfSxjbG9zZTpmdW5jdGlvbihlKXt0aGlzLmNhbmNlbFNlYXJjaD0hMCx0aGlzLl9jbG9zZShlKX0sX2Nsb3NlOmZ1bmN0aW9uKGUpe3RoaXMubWVudS5lbGVtZW50LmlzKCI6dmlzaWJsZSIpJiYodGhpcy5tZW51LmVsZW1lbnQuaGlkZSgpLHRoaXMubWVudS5ibHVyKCksdGhpcy5pc05ld01lbnU9ITAsdGhpcy5fdHJpZ2dlcigiY2xvc2UiLGUpKX0sX2NoYW5nZTpmdW5jdGlvbihlKXt0aGlzLnByZXZpb3VzIT09dGhpcy5fdmFsdWUoKSYmdGhpcy5fdHJpZ2dlcigiY2hhbmdlIixlLHtpdGVtOnRoaXMuc2VsZWN0ZWRJdGVtfSl9LF9ub3JtYWxpemU6ZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RoJiZ0WzBdLmxhYmVsJiZ0WzBdLnZhbHVlP3Q6ZS5tYXAodCxmdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/e2xhYmVsOnQsdmFsdWU6dH06ZS5leHRlbmQoe30sdCx7bGFiZWw6dC5sYWJlbHx8dC52YWx1ZSx2YWx1ZTp0LnZhbHVlfHx0LmxhYmVsfSl9KX0sX3N1Z2dlc3Q6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5tZW51LmVsZW1lbnQuZW1wdHkoKTt0aGlzLl9yZW5kZXJNZW51KGksdCksdGhpcy5pc05ld01lbnU9ITAsdGhpcy5tZW51LnJlZnJlc2goKSxpLnNob3coKSx0aGlzLl9yZXNpemVNZW51KCksaS5wb3NpdGlvbihlLmV4dGVuZCh7b2Y6dGhpcy5lbGVtZW50fSx0aGlzLm9wdGlvbnMucG9zaXRpb24pKSx0aGlzLm9wdGlvbnMuYXV0b0ZvY3VzJiZ0aGlzLm1lbnUubmV4dCgpfSxfcmVzaXplTWVudTpmdW5jdGlvbigpe3ZhciBlPXRoaXMubWVudS5lbGVtZW50O2Uub3V0ZXJXaWR0aChNYXRoLm1heChlLndpZHRoKCIiKS5vdXRlcldpZHRoKCkrMSx0aGlzLmVsZW1lbnQub3V0ZXJXaWR0aCgpKSl9LF9yZW5kZXJNZW51OmZ1bmN0aW9uKHQsaSl7dmFyIHM9dGhpcztlLmVhY2goaSxmdW5jdGlvbihlLGkpe3MuX3JlbmRlckl0ZW1EYXRhKHQsaSl9KX0sX3JlbmRlckl0ZW1EYXRhOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX3JlbmRlckl0ZW0oZSx0KS5kYXRhKCJ1aS1hdXRvY29tcGxldGUtaXRlbSIsdCl9LF9yZW5kZXJJdGVtOmZ1bmN0aW9uKHQsaSl7cmV0dXJuIGUoIjxsaT4iKS50ZXh0KGkubGFiZWwpLmFwcGVuZFRvKHQpfSxfbW92ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm1lbnUuZWxlbWVudC5pcygiOnZpc2libGUiKT90aGlzLm1lbnUuaXNGaXJzdEl0ZW0oKSYmL15wcmV2aW91cy8udGVzdChlKXx8dGhpcy5tZW51LmlzTGFzdEl0ZW0oKSYmL15uZXh0Ly50ZXN0KGUpPyh0aGlzLmlzTXVsdGlMaW5lfHx0aGlzLl92YWx1ZSh0aGlzLnRlcm0pLHRoaXMubWVudS5ibHVyKCksdm9pZCAwKToodGhpcy5tZW51W2VdKHQpLHZvaWQgMCk6KHRoaXMuc2VhcmNoKG51bGwsdCksdm9pZCAwKX0sd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVudS5lbGVtZW50fSxfdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZU1ldGhvZC5hcHBseSh0aGlzLmVsZW1lbnQsYXJndW1lbnRzKX0sX2tleUV2ZW50OmZ1bmN0aW9uKGUsdCl7KCF0aGlzLmlzTXVsdGlMaW5lfHx0aGlzLm1lbnUuZWxlbWVudC5pcygiOnZpc2libGUiKSkmJih0aGlzLl9tb3ZlKGUsdCksdC5wcmV2ZW50RGVmYXVsdCgpKX19KSxlLmV4dGVuZChlLnVpLmF1dG9jb21wbGV0ZSx7ZXNjYXBlUmVnZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywiXFwkJiIpfSxmaWx0ZXI6ZnVuY3Rpb24odCxpKXt2YXIgcz1SZWdFeHAoZS51aS5hdXRvY29tcGxldGUuZXNjYXBlUmVnZXgoaSksImkiKTtyZXR1cm4gZS5ncmVwKHQsZnVuY3Rpb24oZSl7cmV0dXJuIHMudGVzdChlLmxhYmVsfHxlLnZhbHVlfHxlKX0pfX0pLGUud2lkZ2V0KCJ1aS5hdXRvY29tcGxldGUiLGUudWkuYXV0b2NvbXBsZXRlLHtvcHRpb25zOnttZXNzYWdlczp7bm9SZXN1bHRzOiJObyBzZWFyY2ggcmVzdWx0cy4iLHJlc3VsdHM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUrKGU+MT8iIHJlc3VsdHMgYXJlIjoiIHJlc3VsdCBpcyIpKyIgYXZhaWxhYmxlLCB1c2UgdXAgYW5kIGRvd24gYXJyb3cga2V5cyB0byBuYXZpZ2F0ZS4ifX19LF9fcmVzcG9uc2U6ZnVuY3Rpb24odCl7dmFyIGk7dGhpcy5fc3VwZXJBcHBseShhcmd1bWVudHMpLHRoaXMub3B0aW9ucy5kaXNhYmxlZHx8dGhpcy5jYW5jZWxTZWFyY2h8fChpPXQmJnQubGVuZ3RoP3RoaXMub3B0aW9ucy5tZXNzYWdlcy5yZXN1bHRzKHQubGVuZ3RoKTp0aGlzLm9wdGlvbnMubWVzc2FnZXMubm9SZXN1bHRzLHRoaXMubGl2ZVJlZ2lvbi5jaGlsZHJlbigpLmhpZGUoKSxlKCI8ZGl2PiIpLnRleHQoaSkuYXBwZW5kVG8odGhpcy5saXZlUmVnaW9uKSl9fSksZS51aS5hdXRvY29tcGxldGU7dmFyIHIsaD0idWktYnV0dG9uIHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwiLGw9InVpLWJ1dHRvbi1pY29ucy1vbmx5IHVpLWJ1dHRvbi1pY29uLW9ubHkgdWktYnV0dG9uLXRleHQtaWNvbnMgdWktYnV0dG9uLXRleHQtaWNvbi1wcmltYXJ5IHVpLWJ1dHRvbi10ZXh0LWljb24tc2Vjb25kYXJ5IHVpLWJ1dHRvbi10ZXh0LW9ubHkiLHU9ZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0LmZpbmQoIjp1aS1idXR0b24iKS5idXR0b24oInJlZnJlc2giKX0sMSl9LGQ9ZnVuY3Rpb24odCl7dmFyIGk9dC5uYW1lLHM9dC5mb3JtLG49ZShbXSk7cmV0dXJuIGkmJihpPWkucmVwbGFjZSgvJy9nLCJcXCciKSxuPXM/ZShzKS5maW5kKCJbbmFtZT0nIitpKyInXVt0eXBlPXJhZGlvXSIpOmUoIltuYW1lPSciK2krIiddW3R5cGU9cmFkaW9dIix0Lm93bmVyRG9jdW1lbnQpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiF0aGlzLmZvcm19KSksbn07ZS53aWRnZXQoInVpLmJ1dHRvbiIse3ZlcnNpb246IjEuMTEuNCIsZGVmYXVsdEVsZW1lbnQ6IjxidXR0b24+IixvcHRpb25zOntkaXNhYmxlZDpudWxsLHRleHQ6ITAsbGFiZWw6bnVsbCxpY29uczp7cHJpbWFyeTpudWxsLHNlY29uZGFyeTpudWxsfX0sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5jbG9zZXN0KCJmb3JtIikudW5iaW5kKCJyZXNldCIrdGhpcy5ldmVudE5hbWVzcGFjZSkuYmluZCgicmVzZXQiK3RoaXMuZXZlbnROYW1lc3BhY2UsdSksImJvb2xlYW4iIT10eXBlb2YgdGhpcy5vcHRpb25zLmRpc2FibGVkP3RoaXMub3B0aW9ucy5kaXNhYmxlZD0hIXRoaXMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIpOnRoaXMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIsdGhpcy5vcHRpb25zLmRpc2FibGVkKSx0aGlzLl9kZXRlcm1pbmVCdXR0b25UeXBlKCksdGhpcy5oYXNUaXRsZT0hIXRoaXMuYnV0dG9uRWxlbWVudC5hdHRyKCJ0aXRsZSIpO3ZhciB0PXRoaXMsaT10aGlzLm9wdGlvbnMscz0iY2hlY2tib3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlLG49cz8iIjoidWktc3RhdGUtYWN0aXZlIjtudWxsPT09aS5sYWJlbCYmKGkubGFiZWw9ImlucHV0Ij09PXRoaXMudHlwZT90aGlzLmJ1dHRvbkVsZW1lbnQudmFsKCk6dGhpcy5idXR0b25FbGVtZW50Lmh0bWwoKSksdGhpcy5faG92ZXJhYmxlKHRoaXMuYnV0dG9uRWxlbWVudCksdGhpcy5idXR0b25FbGVtZW50LmFkZENsYXNzKGgpLmF0dHIoInJvbGUiLCJidXR0b24iKS5iaW5kKCJtb3VzZWVudGVyIit0aGlzLmV2ZW50TmFtZXNwYWNlLGZ1bmN0aW9uKCl7aS5kaXNhYmxlZHx8dGhpcz09PXImJmUodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpfSkuYmluZCgibW91c2VsZWF2ZSIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbigpe2kuZGlzYWJsZWR8fGUodGhpcykucmVtb3ZlQ2xhc3Mobil9KS5iaW5kKCJjbGljayIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbihlKXtpLmRpc2FibGVkJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkpfSksdGhpcy5fb24oe2ZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5idXR0b25FbGVtZW50LmFkZENsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSxibHVyOmZ1bmN0aW9uKCl7dGhpcy5idXR0b25FbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfX0pLHMmJnRoaXMuZWxlbWVudC5iaW5kKCJjaGFuZ2UiK3RoaXMuZXZlbnROYW1lc3BhY2UsZnVuY3Rpb24oKXt0LnJlZnJlc2goKX0pLCJjaGVja2JveCI9PT10aGlzLnR5cGU/dGhpcy5idXR0b25FbGVtZW50LmJpbmQoImNsaWNrIit0aGlzLmV2ZW50TmFtZXNwYWNlLGZ1bmN0aW9uKCl7cmV0dXJuIGkuZGlzYWJsZWQ/ITE6dm9pZCAwfSk6InJhZGlvIj09PXRoaXMudHlwZT90aGlzLmJ1dHRvbkVsZW1lbnQuYmluZCgiY2xpY2siK3RoaXMuZXZlbnROYW1lc3BhY2UsZnVuY3Rpb24oKXtpZihpLmRpc2FibGVkKXJldHVybiExO2UodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLHQuYnV0dG9uRWxlbWVudC5hdHRyKCJhcmlhLXByZXNzZWQiLCJ0cnVlIik7dmFyIHM9dC5lbGVtZW50WzBdO2Qocykubm90KHMpLm1hcChmdW5jdGlvbigpe3JldHVybiBlKHRoaXMpLmJ1dHRvbigid2lkZ2V0IilbMF19KS5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlIikuYXR0cigiYXJpYS1wcmVzc2VkIiwiZmFsc2UiKX0pOih0aGlzLmJ1dHRvbkVsZW1lbnQuYmluZCgibW91c2Vkb3duIit0aGlzLmV2ZW50TmFtZXNwYWNlLGZ1bmN0aW9uKCl7cmV0dXJuIGkuZGlzYWJsZWQ/ITE6KGUodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLHI9dGhpcyx0LmRvY3VtZW50Lm9uZSgibW91c2V1cCIsZnVuY3Rpb24oKXtyPW51bGx9KSx2b2lkIDApfSkuYmluZCgibW91c2V1cCIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbigpe3JldHVybiBpLmRpc2FibGVkPyExOihlKHRoaXMpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKSx2b2lkIDApfSkuYmluZCgia2V5ZG93biIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbih0KXtyZXR1cm4gaS5kaXNhYmxlZD8hMTooKHQua2V5Q29kZT09PWUudWkua2V5Q29kZS5TUEFDRXx8dC5rZXlDb2RlPT09ZS51aS5rZXlDb2RlLkVOVEVSKSYmZSh0aGlzKS5hZGRDbGFzcygidWktc3RhdGUtYWN0aXZlIiksdm9pZCAwKX0pLmJpbmQoImtleXVwIit0aGlzLmV2ZW50TmFtZXNwYWNlKyIgYmx1ciIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbigpe2UodGhpcykucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpfSksdGhpcy5idXR0b25FbGVtZW50LmlzKCJhIikmJnRoaXMuYnV0dG9uRWxlbWVudC5rZXl1cChmdW5jdGlvbih0KXt0LmtleUNvZGU9PT1lLnVpLmtleUNvZGUuU1BBQ0UmJmUodGhpcykuY2xpY2soKX0pKSx0aGlzLl9zZXRPcHRpb24oImRpc2FibGVkIixpLmRpc2FibGVkKSx0aGlzLl9yZXNldEJ1dHRvbigpfSxfZGV0ZXJtaW5lQnV0dG9uVHlwZTpmdW5jdGlvbigpe3ZhciBlLHQsaTt0aGlzLnR5cGU9dGhpcy5lbGVtZW50LmlzKCJbdHlwZT1jaGVja2JveF0iKT8iY2hlY2tib3giOnRoaXMuZWxlbWVudC5pcygiW3R5cGU9cmFkaW9dIik/InJhZGlvIjp0aGlzLmVsZW1lbnQuaXMoImlucHV0Iik/ImlucHV0IjoiYnV0dG9uIiwiY2hlY2tib3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlPyhlPXRoaXMuZWxlbWVudC5wYXJlbnRzKCkubGFzdCgpLHQ9ImxhYmVsW2Zvcj0nIit0aGlzLmVsZW1lbnQuYXR0cigiaWQiKSsiJ10iLHRoaXMuYnV0dG9uRWxlbWVudD1lLmZpbmQodCksdGhpcy5idXR0b25FbGVtZW50Lmxlbmd0aHx8KGU9ZS5sZW5ndGg/ZS5zaWJsaW5ncygpOnRoaXMuZWxlbWVudC5zaWJsaW5ncygpLHRoaXMuYnV0dG9uRWxlbWVudD1lLmZpbHRlcih0KSx0aGlzLmJ1dHRvbkVsZW1lbnQubGVuZ3RofHwodGhpcy5idXR0b25FbGVtZW50PWUuZmluZCh0KSkpLHRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktaGVscGVyLWhpZGRlbi1hY2Nlc3NpYmxlIiksaT10aGlzLmVsZW1lbnQuaXMoIjpjaGVja2VkIiksaSYmdGhpcy5idXR0b25FbGVtZW50LmFkZENsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLmJ1dHRvbkVsZW1lbnQucHJvcCgiYXJpYS1wcmVzc2VkIixpKSk6dGhpcy5idXR0b25FbGVtZW50PXRoaXMuZWxlbWVudH0sd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYnV0dG9uRWxlbWVudH0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWhlbHBlci1oaWRkZW4tYWNjZXNzaWJsZSIpLHRoaXMuYnV0dG9uRWxlbWVudC5yZW1vdmVDbGFzcyhoKyIgdWktc3RhdGUtYWN0aXZlICIrbCkucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoImFyaWEtcHJlc3NlZCIpLmh0bWwodGhpcy5idXR0b25FbGVtZW50LmZpbmQoIi51aS1idXR0b24tdGV4dCIpLmh0bWwoKSksdGhpcy5oYXNUaXRsZXx8dGhpcy5idXR0b25FbGVtZW50LnJlbW92ZUF0dHIoInRpdGxlIil9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fc3VwZXIoZSx0KSwiZGlzYWJsZWQiPT09ZT8odGhpcy53aWRnZXQoKS50b2dnbGVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiLCEhdCksdGhpcy5lbGVtZW50LnByb3AoImRpc2FibGVkIiwhIXQpLHQmJigiY2hlY2tib3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlP3RoaXMuYnV0dG9uRWxlbWVudC5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKTp0aGlzLmJ1dHRvbkVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWZvY3VzIHVpLXN0YXRlLWFjdGl2ZSIpKSx2b2lkIDApOih0aGlzLl9yZXNldEJ1dHRvbigpLHZvaWQgMCl9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsZW1lbnQuaXMoImlucHV0LCBidXR0b24iKT90aGlzLmVsZW1lbnQuaXMoIjpkaXNhYmxlZCIpOnRoaXMuZWxlbWVudC5oYXNDbGFzcygidWktYnV0dG9uLWRpc2FibGVkIik7dCE9PXRoaXMub3B0aW9ucy5kaXNhYmxlZCYmdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsdCksInJhZGlvIj09PXRoaXMudHlwZT9kKHRoaXMuZWxlbWVudFswXSkuZWFjaChmdW5jdGlvbigpe2UodGhpcykuaXMoIjpjaGVja2VkIik/ZSh0aGlzKS5idXR0b24oIndpZGdldCIpLmFkZENsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKS5hdHRyKCJhcmlhLXByZXNzZWQiLCJ0cnVlIik6ZSh0aGlzKS5idXR0b24oIndpZGdldCIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKS5hdHRyKCJhcmlhLXByZXNzZWQiLCJmYWxzZSIpfSk6ImNoZWNrYm94Ij09PXRoaXMudHlwZSYmKHRoaXMuZWxlbWVudC5pcygiOmNoZWNrZWQiKT90aGlzLmJ1dHRvbkVsZW1lbnQuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLmF0dHIoImFyaWEtcHJlc3NlZCIsInRydWUiKTp0aGlzLmJ1dHRvbkVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLmF0dHIoImFyaWEtcHJlc3NlZCIsImZhbHNlIikpfSxfcmVzZXRCdXR0b246ZnVuY3Rpb24oKXtpZigiaW5wdXQiPT09dGhpcy50eXBlKXJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwmJnRoaXMuZWxlbWVudC52YWwodGhpcy5vcHRpb25zLmxhYmVsKSx2b2lkIDA7dmFyIHQ9dGhpcy5idXR0b25FbGVtZW50LnJlbW92ZUNsYXNzKGwpLGk9ZSgiPHNwYW4+PC9zcGFuPiIsdGhpcy5kb2N1bWVudFswXSkuYWRkQ2xhc3MoInVpLWJ1dHRvbi10ZXh0IikuaHRtbCh0aGlzLm9wdGlvbnMubGFiZWwpLmFwcGVuZFRvKHQuZW1wdHkoKSkudGV4dCgpLHM9dGhpcy5vcHRpb25zLmljb25zLG49cy5wcmltYXJ5JiZzLnNlY29uZGFyeSxhPVtdO3MucHJpbWFyeXx8cy5zZWNvbmRhcnk/KHRoaXMub3B0aW9ucy50ZXh0JiZhLnB1c2goInVpLWJ1dHRvbi10ZXh0LWljb24iKyhuPyJzIjpzLnByaW1hcnk/Ii1wcmltYXJ5IjoiLXNlY29uZGFyeSIpKSxzLnByaW1hcnkmJnQucHJlcGVuZCgiPHNwYW4gY2xhc3M9J3VpLWJ1dHRvbi1pY29uLXByaW1hcnkgdWktaWNvbiAiK3MucHJpbWFyeSsiJz48L3NwYW4+Iikscy5zZWNvbmRhcnkmJnQuYXBwZW5kKCI8c3BhbiBjbGFzcz0ndWktYnV0dG9uLWljb24tc2Vjb25kYXJ5IHVpLWljb24gIitzLnNlY29uZGFyeSsiJz48L3NwYW4+IiksdGhpcy5vcHRpb25zLnRleHR8fChhLnB1c2gobj8idWktYnV0dG9uLWljb25zLW9ubHkiOiJ1aS1idXR0b24taWNvbi1vbmx5IiksdGhpcy5oYXNUaXRsZXx8dC5hdHRyKCJ0aXRsZSIsZS50cmltKGkpKSkpOmEucHVzaCgidWktYnV0dG9uLXRleHQtb25seSIpLHQuYWRkQ2xhc3MoYS5qb2luKCIgIikpfX0pLGUud2lkZ2V0KCJ1aS5idXR0b25zZXQiLHt2ZXJzaW9uOiIxLjExLjQiLG9wdGlvbnM6e2l0ZW1zOiJidXR0b24sIGlucHV0W3R5cGU9YnV0dG9uXSwgaW5wdXRbdHlwZT1zdWJtaXRdLCBpbnB1dFt0eXBlPXJlc2V0XSwgaW5wdXRbdHlwZT1jaGVja2JveF0sIGlucHV0W3R5cGU9cmFkaW9dLCBhLCA6ZGF0YSh1aS1idXR0b24pIn0sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5hZGRDbGFzcygidWktYnV0dG9uc2V0Iil9LF9pbml0OmZ1bmN0aW9uKCl7dGhpcy5yZWZyZXNoKCl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXsiZGlzYWJsZWQiPT09ZSYmdGhpcy5idXR0b25zLmJ1dHRvbigib3B0aW9uIixlLHQpLHRoaXMuX3N1cGVyKGUsdCl9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdD0icnRsIj09PXRoaXMuZWxlbWVudC5jc3MoImRpcmVjdGlvbiIpLGk9dGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKSxzPWkuZmlsdGVyKCI6dWktYnV0dG9uIik7aS5ub3QoIjp1aS1idXR0b24iKS5idXR0b24oKSxzLmJ1dHRvbigicmVmcmVzaCIpLHRoaXMuYnV0dG9ucz1pLm1hcChmdW5jdGlvbigpe3JldHVybiBlKHRoaXMpLmJ1dHRvbigid2lkZ2V0IilbMF19KS5yZW1vdmVDbGFzcygidWktY29ybmVyLWFsbCB1aS1jb3JuZXItbGVmdCB1aS1jb3JuZXItcmlnaHQiKS5maWx0ZXIoIjpmaXJzdCIpLmFkZENsYXNzKHQ/InVpLWNvcm5lci1yaWdodCI6InVpLWNvcm5lci1sZWZ0IikuZW5kKCkuZmlsdGVyKCI6bGFzdCIpLmFkZENsYXNzKHQ/InVpLWNvcm5lci1sZWZ0IjoidWktY29ybmVyLXJpZ2h0IikuZW5kKCkuZW5kKCl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1idXR0b25zZXQiKSx0aGlzLmJ1dHRvbnMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcykuYnV0dG9uKCJ3aWRnZXQiKVswXX0pLnJlbW92ZUNsYXNzKCJ1aS1jb3JuZXItbGVmdCB1aS1jb3JuZXItcmlnaHQiKS5lbmQoKS5idXR0b24oImRlc3Ryb3kiKX19KSxlLnVpLmJ1dHRvbixlLndpZGdldCgidWkuZGlhbG9nIix7dmVyc2lvbjoiMS4xMS40IixvcHRpb25zOnthcHBlbmRUbzoiYm9keSIsYXV0b09wZW46ITAsYnV0dG9uczpbXSxjbG9zZU9uRXNjYXBlOiEwLGNsb3NlVGV4dDoiQ2xvc2UiLGRpYWxvZ0NsYXNzOiIiLGRyYWdnYWJsZTohMCxoaWRlOm51bGwsaGVpZ2h0OiJhdXRvIixtYXhIZWlnaHQ6bnVsbCxtYXhXaWR0aDpudWxsLG1pbkhlaWdodDoxNTAsbWluV2lkdGg6MTUwLG1vZGFsOiExLHBvc2l0aW9uOntteToiY2VudGVyIixhdDoiY2VudGVyIixvZjp3aW5kb3csY29sbGlzaW9uOiJmaXQiLHVzaW5nOmZ1bmN0aW9uKHQpe3ZhciBpPWUodGhpcykuY3NzKHQpLm9mZnNldCgpLnRvcDswPmkmJmUodGhpcykuY3NzKCJ0b3AiLHQudG9wLWkpfX0scmVzaXphYmxlOiEwLHNob3c6bnVsbCx0aXRsZTpudWxsLHdpZHRoOjMwMCxiZWZvcmVDbG9zZTpudWxsLGNsb3NlOm51bGwsZHJhZzpudWxsLGRyYWdTdGFydDpudWxsLGRyYWdTdG9wOm51bGwsZm9jdXM6bnVsbCxvcGVuOm51bGwscmVzaXplOm51bGwscmVzaXplU3RhcnQ6bnVsbCxyZXNpemVTdG9wOm51bGx9LHNpemVSZWxhdGVkT3B0aW9uczp7YnV0dG9uczohMCxoZWlnaHQ6ITAsbWF4SGVpZ2h0OiEwLG1heFdpZHRoOiEwLG1pbkhlaWdodDohMCxtaW5XaWR0aDohMCx3aWR0aDohMH0scmVzaXphYmxlUmVsYXRlZE9wdGlvbnM6e21heEhlaWdodDohMCxtYXhXaWR0aDohMCxtaW5IZWlnaHQ6ITAsbWluV2lkdGg6ITB9LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLm9yaWdpbmFsQ3NzPXtkaXNwbGF5OnRoaXMuZWxlbWVudFswXS5zdHlsZS5kaXNwbGF5LHdpZHRoOnRoaXMuZWxlbWVudFswXS5zdHlsZS53aWR0aCxtaW5IZWlnaHQ6dGhpcy5lbGVtZW50WzBdLnN0eWxlLm1pbkhlaWdodCxtYXhIZWlnaHQ6dGhpcy5lbGVtZW50WzBdLnN0eWxlLm1heEhlaWdodCxoZWlnaHQ6dGhpcy5lbGVtZW50WzBdLnN0eWxlLmhlaWdodH0sdGhpcy5vcmlnaW5hbFBvc2l0aW9uPXtwYXJlbnQ6dGhpcy5lbGVtZW50LnBhcmVudCgpLGluZGV4OnRoaXMuZWxlbWVudC5wYXJlbnQoKS5jaGlsZHJlbigpLmluZGV4KHRoaXMuZWxlbWVudCl9LHRoaXMub3JpZ2luYWxUaXRsZT10aGlzLmVsZW1lbnQuYXR0cigidGl0bGUiKSx0aGlzLm9wdGlvbnMudGl0bGU9dGhpcy5vcHRpb25zLnRpdGxlfHx0aGlzLm9yaWdpbmFsVGl0bGUsdGhpcy5fY3JlYXRlV3JhcHBlcigpLHRoaXMuZWxlbWVudC5zaG93KCkucmVtb3ZlQXR0cigidGl0bGUiKS5hZGRDbGFzcygidWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiKS5hcHBlbmRUbyh0aGlzLnVpRGlhbG9nKSx0aGlzLl9jcmVhdGVUaXRsZWJhcigpLHRoaXMuX2NyZWF0ZUJ1dHRvblBhbmUoKSx0aGlzLm9wdGlvbnMuZHJhZ2dhYmxlJiZlLmZuLmRyYWdnYWJsZSYmdGhpcy5fbWFrZURyYWdnYWJsZSgpLHRoaXMub3B0aW9ucy5yZXNpemFibGUmJmUuZm4ucmVzaXphYmxlJiZ0aGlzLl9tYWtlUmVzaXphYmxlKCksdGhpcy5faXNPcGVuPSExLHRoaXMuX3RyYWNrRm9jdXMoKX0sX2luaXQ6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuYXV0b09wZW4mJnRoaXMub3BlbigpfSxfYXBwZW5kVG86ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMuYXBwZW5kVG87cmV0dXJuIHQmJih0LmpxdWVyeXx8dC5ub2RlVHlwZSk/ZSh0KTp0aGlzLmRvY3VtZW50LmZpbmQodHx8ImJvZHkiKS5lcSgwKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMub3JpZ2luYWxQb3NpdGlvbjt0aGlzLl91bnRyYWNrSW5zdGFuY2UoKSx0aGlzLl9kZXN0cm95T3ZlcmxheSgpLHRoaXMuZWxlbWVudC5yZW1vdmVVbmlxdWVJZCgpLnJlbW92ZUNsYXNzKCJ1aS1kaWFsb2ctY29udGVudCB1aS13aWRnZXQtY29udGVudCIpLmNzcyh0aGlzLm9yaWdpbmFsQ3NzKS5kZXRhY2goKSx0aGlzLnVpRGlhbG9nLnN0b3AoITAsITApLnJlbW92ZSgpLHRoaXMub3JpZ2luYWxUaXRsZSYmdGhpcy5lbGVtZW50LmF0dHIoInRpdGxlIix0aGlzLm9yaWdpbmFsVGl0bGUpLGU9dC5wYXJlbnQuY2hpbGRyZW4oKS5lcSh0LmluZGV4KSxlLmxlbmd0aCYmZVswXSE9PXRoaXMuZWxlbWVudFswXT9lLmJlZm9yZSh0aGlzLmVsZW1lbnQpOnQucGFyZW50LmFwcGVuZCh0aGlzLmVsZW1lbnQpfSx3aWRnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51aURpYWxvZ30sZGlzYWJsZTplLm5vb3AsZW5hYmxlOmUubm9vcCxjbG9zZTpmdW5jdGlvbih0KXt2YXIgaSxzPXRoaXM7aWYodGhpcy5faXNPcGVuJiZ0aGlzLl90cmlnZ2VyKCJiZWZvcmVDbG9zZSIsdCkhPT0hMSl7aWYodGhpcy5faXNPcGVuPSExLHRoaXMuX2ZvY3VzZWRFbGVtZW50PW51bGwsdGhpcy5fZGVzdHJveU92ZXJsYXkoKSx0aGlzLl91bnRyYWNrSW5zdGFuY2UoKSwhdGhpcy5vcGVuZXIuZmlsdGVyKCI6Zm9jdXNhYmxlIikuZm9jdXMoKS5sZW5ndGgpdHJ5e2k9dGhpcy5kb2N1bWVudFswXS5hY3RpdmVFbGVtZW50LGkmJiJib2R5IiE9PWkubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmZShpKS5ibHVyKCl9Y2F0Y2gobil7fXRoaXMuX2hpZGUodGhpcy51aURpYWxvZyx0aGlzLm9wdGlvbnMuaGlkZSxmdW5jdGlvbigpe3MuX3RyaWdnZXIoImNsb3NlIix0KX0pfX0saXNPcGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzT3Blbn0sbW92ZVRvVG9wOmZ1bmN0aW9uKCl7dGhpcy5fbW92ZVRvVG9wKCl9LF9tb3ZlVG9Ub3A6ZnVuY3Rpb24odCxpKXt2YXIgcz0hMSxuPXRoaXMudWlEaWFsb2cuc2libGluZ3MoIi51aS1mcm9udDp2aXNpYmxlIikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuK2UodGhpcykuY3NzKCJ6LWluZGV4Iil9KS5nZXQoKSxhPU1hdGgubWF4LmFwcGx5KG51bGwsbik7cmV0dXJuIGE+PSt0aGlzLnVpRGlhbG9nLmNzcygiei1pbmRleCIpJiYodGhpcy51aURpYWxvZy5jc3MoInotaW5kZXgiLGErMSkscz0hMCkscyYmIWkmJnRoaXMuX3RyaWdnZXIoImZvY3VzIix0KSxzfSxvcGVuOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5faXNPcGVuPyh0aGlzLl9tb3ZlVG9Ub3AoKSYmdGhpcy5fZm9jdXNUYWJiYWJsZSgpLHZvaWQgMCk6KHRoaXMuX2lzT3Blbj0hMCx0aGlzLm9wZW5lcj1lKHRoaXMuZG9jdW1lbnRbMF0uYWN0aXZlRWxlbWVudCksdGhpcy5fc2l6ZSgpLHRoaXMuX3Bvc2l0aW9uKCksdGhpcy5fY3JlYXRlT3ZlcmxheSgpLHRoaXMuX21vdmVUb1RvcChudWxsLCEwKSx0aGlzLm92ZXJsYXkmJnRoaXMub3ZlcmxheS5jc3MoInotaW5kZXgiLHRoaXMudWlEaWFsb2cuY3NzKCJ6LWluZGV4IiktMSksdGhpcy5fc2hvdyh0aGlzLnVpRGlhbG9nLHRoaXMub3B0aW9ucy5zaG93LGZ1bmN0aW9uKCl7dC5fZm9jdXNUYWJiYWJsZSgpLHQuX3RyaWdnZXIoImZvY3VzIil9KSx0aGlzLl9tYWtlRm9jdXNUYXJnZXQoKSx0aGlzLl90cmlnZ2VyKCJvcGVuIiksdm9pZCAwKX0sX2ZvY3VzVGFiYmFibGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9mb2N1c2VkRWxlbWVudDtlfHwoZT10aGlzLmVsZW1lbnQuZmluZCgiW2F1dG9mb2N1c10iKSksZS5sZW5ndGh8fChlPXRoaXMuZWxlbWVudC5maW5kKCI6dGFiYmFibGUiKSksZS5sZW5ndGh8fChlPXRoaXMudWlEaWFsb2dCdXR0b25QYW5lLmZpbmQoIjp0YWJiYWJsZSIpKSxlLmxlbmd0aHx8KGU9dGhpcy51aURpYWxvZ1RpdGxlYmFyQ2xvc2UuZmlsdGVyKCI6dGFiYmFibGUiKSksZS5sZW5ndGh8fChlPXRoaXMudWlEaWFsb2cpLGUuZXEoMCkuZm9jdXMoKX0sX2tlZXBGb2N1czpmdW5jdGlvbih0KXtmdW5jdGlvbiBpKCl7dmFyIHQ9dGhpcy5kb2N1bWVudFswXS5hY3RpdmVFbGVtZW50LGk9dGhpcy51aURpYWxvZ1swXT09PXR8fGUuY29udGFpbnModGhpcy51aURpYWxvZ1swXSx0KTtpfHx0aGlzLl9mb2N1c1RhYmJhYmxlKCl9dC5wcmV2ZW50RGVmYXVsdCgpLGkuY2FsbCh0aGlzKSx0aGlzLl9kZWxheShpKX0sX2NyZWF0ZVdyYXBwZXI6ZnVuY3Rpb24oKXt0aGlzLnVpRGlhbG9nPWUoIjxkaXY+IikuYWRkQ2xhc3MoInVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1mcm9udCAiK3RoaXMub3B0aW9ucy5kaWFsb2dDbGFzcykuaGlkZSgpLmF0dHIoe3RhYkluZGV4Oi0xLHJvbGU6ImRpYWxvZyJ9KS5hcHBlbmRUbyh0aGlzLl9hcHBlbmRUbygpKSx0aGlzLl9vbih0aGlzLnVpRGlhbG9nLHtrZXlkb3duOmZ1bmN0aW9uKHQpe2lmKHRoaXMub3B0aW9ucy5jbG9zZU9uRXNjYXBlJiYhdC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmdC5rZXlDb2RlJiZ0LmtleUNvZGU9PT1lLnVpLmtleUNvZGUuRVNDQVBFKXJldHVybiB0LnByZXZlbnREZWZhdWx0KCksdGhpcy5jbG9zZSh0KSx2b2lkIDA7aWYodC5rZXlDb2RlPT09ZS51aS5rZXlDb2RlLlRBQiYmIXQuaXNEZWZhdWx0UHJldmVudGVkKCkpe3ZhciBpPXRoaXMudWlEaWFsb2cuZmluZCgiOnRhYmJhYmxlIikscz1pLmZpbHRlcigiOmZpcnN0Iiksbj1pLmZpbHRlcigiOmxhc3QiKTt0LnRhcmdldCE9PW5bMF0mJnQudGFyZ2V0IT09dGhpcy51aURpYWxvZ1swXXx8dC5zaGlmdEtleT90LnRhcmdldCE9PXNbMF0mJnQudGFyZ2V0IT09dGhpcy51aURpYWxvZ1swXXx8IXQuc2hpZnRLZXl8fCh0aGlzLl9kZWxheShmdW5jdGlvbigpe24uZm9jdXMoKX0pLHQucHJldmVudERlZmF1bHQoKSk6KHRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7cy5mb2N1cygpfSksdC5wcmV2ZW50RGVmYXVsdCgpKX19LG1vdXNlZG93bjpmdW5jdGlvbihlKXt0aGlzLl9tb3ZlVG9Ub3AoZSkmJnRoaXMuX2ZvY3VzVGFiYmFibGUoKX19KSx0aGlzLmVsZW1lbnQuZmluZCgiW2FyaWEtZGVzY3JpYmVkYnldIikubGVuZ3RofHx0aGlzLnVpRGlhbG9nLmF0dHIoeyJhcmlhLWRlc2NyaWJlZGJ5Ijp0aGlzLmVsZW1lbnQudW5pcXVlSWQoKS5hdHRyKCJpZCIpfSl9LF9jcmVhdGVUaXRsZWJhcjpmdW5jdGlvbigpe3ZhciB0O3RoaXMudWlEaWFsb2dUaXRsZWJhcj1lKCI8ZGl2PiIpLmFkZENsYXNzKCJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItYWxsIHVpLWhlbHBlci1jbGVhcmZpeCIpLnByZXBlbmRUbyh0aGlzLnVpRGlhbG9nKSx0aGlzLl9vbih0aGlzLnVpRGlhbG9nVGl0bGViYXIse21vdXNlZG93bjpmdW5jdGlvbih0KXtlKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIil8fHRoaXMudWlEaWFsb2cuZm9jdXMoKX19KSx0aGlzLnVpRGlhbG9nVGl0bGViYXJDbG9zZT1lKCI8YnV0dG9uIHR5cGU9J2J1dHRvbic+PC9idXR0b24+IikuYnV0dG9uKHtsYWJlbDp0aGlzLm9wdGlvbnMuY2xvc2VUZXh0LGljb25zOntwcmltYXJ5OiJ1aS1pY29uLWNsb3NldGhpY2sifSx0ZXh0OiExfSkuYWRkQ2xhc3MoInVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSIpLmFwcGVuZFRvKHRoaXMudWlEaWFsb2dUaXRsZWJhciksdGhpcy5fb24odGhpcy51aURpYWxvZ1RpdGxlYmFyQ2xvc2Use2NsaWNrOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSx0aGlzLmNsb3NlKGUpfX0pLHQ9ZSgiPHNwYW4+IikudW5pcXVlSWQoKS5hZGRDbGFzcygidWktZGlhbG9nLXRpdGxlIikucHJlcGVuZFRvKHRoaXMudWlEaWFsb2dUaXRsZWJhciksdGhpcy5fdGl0bGUodCksdGhpcy51aURpYWxvZy5hdHRyKHsiYXJpYS1sYWJlbGxlZGJ5Ijp0LmF0dHIoImlkIil9KX0sX3RpdGxlOmZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucy50aXRsZXx8ZS5odG1sKCImIzE2MDsiKSxlLnRleHQodGhpcy5vcHRpb25zLnRpdGxlKQp9LF9jcmVhdGVCdXR0b25QYW5lOmZ1bmN0aW9uKCl7dGhpcy51aURpYWxvZ0J1dHRvblBhbmU9ZSgiPGRpdj4iKS5hZGRDbGFzcygidWktZGlhbG9nLWJ1dHRvbnBhbmUgdWktd2lkZ2V0LWNvbnRlbnQgdWktaGVscGVyLWNsZWFyZml4IiksdGhpcy51aUJ1dHRvblNldD1lKCI8ZGl2PiIpLmFkZENsYXNzKCJ1aS1kaWFsb2ctYnV0dG9uc2V0IikuYXBwZW5kVG8odGhpcy51aURpYWxvZ0J1dHRvblBhbmUpLHRoaXMuX2NyZWF0ZUJ1dHRvbnMoKX0sX2NyZWF0ZUJ1dHRvbnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGk9dGhpcy5vcHRpb25zLmJ1dHRvbnM7cmV0dXJuIHRoaXMudWlEaWFsb2dCdXR0b25QYW5lLnJlbW92ZSgpLHRoaXMudWlCdXR0b25TZXQuZW1wdHkoKSxlLmlzRW1wdHlPYmplY3QoaSl8fGUuaXNBcnJheShpKSYmIWkubGVuZ3RoPyh0aGlzLnVpRGlhbG9nLnJlbW92ZUNsYXNzKCJ1aS1kaWFsb2ctYnV0dG9ucyIpLHZvaWQgMCk6KGUuZWFjaChpLGZ1bmN0aW9uKGkscyl7dmFyIG4sYTtzPWUuaXNGdW5jdGlvbihzKT97Y2xpY2s6cyx0ZXh0Oml9OnMscz1lLmV4dGVuZCh7dHlwZToiYnV0dG9uIn0scyksbj1zLmNsaWNrLHMuY2xpY2s9ZnVuY3Rpb24oKXtuLmFwcGx5KHQuZWxlbWVudFswXSxhcmd1bWVudHMpfSxhPXtpY29uczpzLmljb25zLHRleHQ6cy5zaG93VGV4dH0sZGVsZXRlIHMuaWNvbnMsZGVsZXRlIHMuc2hvd1RleHQsZSgiPGJ1dHRvbj48L2J1dHRvbj4iLHMpLmJ1dHRvbihhKS5hcHBlbmRUbyh0LnVpQnV0dG9uU2V0KX0pLHRoaXMudWlEaWFsb2cuYWRkQ2xhc3MoInVpLWRpYWxvZy1idXR0b25zIiksdGhpcy51aURpYWxvZ0J1dHRvblBhbmUuYXBwZW5kVG8odGhpcy51aURpYWxvZyksdm9pZCAwKX0sX21ha2VEcmFnZ2FibGU6ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3JldHVybntwb3NpdGlvbjplLnBvc2l0aW9uLG9mZnNldDplLm9mZnNldH19dmFyIGk9dGhpcyxzPXRoaXMub3B0aW9uczt0aGlzLnVpRGlhbG9nLmRyYWdnYWJsZSh7Y2FuY2VsOiIudWktZGlhbG9nLWNvbnRlbnQsIC51aS1kaWFsb2ctdGl0bGViYXItY2xvc2UiLGhhbmRsZToiLnVpLWRpYWxvZy10aXRsZWJhciIsY29udGFpbm1lbnQ6ImRvY3VtZW50IixzdGFydDpmdW5jdGlvbihzLG4pe2UodGhpcykuYWRkQ2xhc3MoInVpLWRpYWxvZy1kcmFnZ2luZyIpLGkuX2Jsb2NrRnJhbWVzKCksaS5fdHJpZ2dlcigiZHJhZ1N0YXJ0IixzLHQobikpfSxkcmFnOmZ1bmN0aW9uKGUscyl7aS5fdHJpZ2dlcigiZHJhZyIsZSx0KHMpKX0sc3RvcDpmdW5jdGlvbihuLGEpe3ZhciBvPWEub2Zmc2V0LmxlZnQtaS5kb2N1bWVudC5zY3JvbGxMZWZ0KCkscj1hLm9mZnNldC50b3AtaS5kb2N1bWVudC5zY3JvbGxUb3AoKTtzLnBvc2l0aW9uPXtteToibGVmdCB0b3AiLGF0OiJsZWZ0Iisobz49MD8iKyI6IiIpK28rIiAiKyJ0b3AiKyhyPj0wPyIrIjoiIikrcixvZjppLndpbmRvd30sZSh0aGlzKS5yZW1vdmVDbGFzcygidWktZGlhbG9nLWRyYWdnaW5nIiksaS5fdW5ibG9ja0ZyYW1lcygpLGkuX3RyaWdnZXIoImRyYWdTdG9wIixuLHQoYSkpfX0pfSxfbWFrZVJlc2l6YWJsZTpmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7cmV0dXJue29yaWdpbmFsUG9zaXRpb246ZS5vcmlnaW5hbFBvc2l0aW9uLG9yaWdpbmFsU2l6ZTplLm9yaWdpbmFsU2l6ZSxwb3NpdGlvbjplLnBvc2l0aW9uLHNpemU6ZS5zaXplfX12YXIgaT10aGlzLHM9dGhpcy5vcHRpb25zLG49cy5yZXNpemFibGUsYT10aGlzLnVpRGlhbG9nLmNzcygicG9zaXRpb24iKSxvPSJzdHJpbmciPT10eXBlb2Ygbj9uOiJuLGUscyx3LHNlLHN3LG5lLG53Ijt0aGlzLnVpRGlhbG9nLnJlc2l6YWJsZSh7Y2FuY2VsOiIudWktZGlhbG9nLWNvbnRlbnQiLGNvbnRhaW5tZW50OiJkb2N1bWVudCIsYWxzb1Jlc2l6ZTp0aGlzLmVsZW1lbnQsbWF4V2lkdGg6cy5tYXhXaWR0aCxtYXhIZWlnaHQ6cy5tYXhIZWlnaHQsbWluV2lkdGg6cy5taW5XaWR0aCxtaW5IZWlnaHQ6dGhpcy5fbWluSGVpZ2h0KCksaGFuZGxlczpvLHN0YXJ0OmZ1bmN0aW9uKHMsbil7ZSh0aGlzKS5hZGRDbGFzcygidWktZGlhbG9nLXJlc2l6aW5nIiksaS5fYmxvY2tGcmFtZXMoKSxpLl90cmlnZ2VyKCJyZXNpemVTdGFydCIscyx0KG4pKX0scmVzaXplOmZ1bmN0aW9uKGUscyl7aS5fdHJpZ2dlcigicmVzaXplIixlLHQocykpfSxzdG9wOmZ1bmN0aW9uKG4sYSl7dmFyIG89aS51aURpYWxvZy5vZmZzZXQoKSxyPW8ubGVmdC1pLmRvY3VtZW50LnNjcm9sbExlZnQoKSxoPW8udG9wLWkuZG9jdW1lbnQuc2Nyb2xsVG9wKCk7cy5oZWlnaHQ9aS51aURpYWxvZy5oZWlnaHQoKSxzLndpZHRoPWkudWlEaWFsb2cud2lkdGgoKSxzLnBvc2l0aW9uPXtteToibGVmdCB0b3AiLGF0OiJsZWZ0Iisocj49MD8iKyI6IiIpK3IrIiAiKyJ0b3AiKyhoPj0wPyIrIjoiIikraCxvZjppLndpbmRvd30sZSh0aGlzKS5yZW1vdmVDbGFzcygidWktZGlhbG9nLXJlc2l6aW5nIiksaS5fdW5ibG9ja0ZyYW1lcygpLGkuX3RyaWdnZXIoInJlc2l6ZVN0b3AiLG4sdChhKSl9fSkuY3NzKCJwb3NpdGlvbiIsYSl9LF90cmFja0ZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5fb24odGhpcy53aWRnZXQoKSx7Zm9jdXNpbjpmdW5jdGlvbih0KXt0aGlzLl9tYWtlRm9jdXNUYXJnZXQoKSx0aGlzLl9mb2N1c2VkRWxlbWVudD1lKHQudGFyZ2V0KX19KX0sX21ha2VGb2N1c1RhcmdldDpmdW5jdGlvbigpe3RoaXMuX3VudHJhY2tJbnN0YW5jZSgpLHRoaXMuX3RyYWNraW5nSW5zdGFuY2VzKCkudW5zaGlmdCh0aGlzKX0sX3VudHJhY2tJbnN0YW5jZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3RyYWNraW5nSW5zdGFuY2VzKCksaT1lLmluQXJyYXkodGhpcyx0KTstMSE9PWkmJnQuc3BsaWNlKGksMSl9LF90cmFja2luZ0luc3RhbmNlczpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZG9jdW1lbnQuZGF0YSgidWktZGlhbG9nLWluc3RhbmNlcyIpO3JldHVybiBlfHwoZT1bXSx0aGlzLmRvY3VtZW50LmRhdGEoInVpLWRpYWxvZy1pbnN0YW5jZXMiLGUpKSxlfSxfbWluSGVpZ2h0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zO3JldHVybiJhdXRvIj09PWUuaGVpZ2h0P2UubWluSGVpZ2h0Ok1hdGgubWluKGUubWluSGVpZ2h0LGUuaGVpZ2h0KX0sX3Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy51aURpYWxvZy5pcygiOnZpc2libGUiKTtlfHx0aGlzLnVpRGlhbG9nLnNob3coKSx0aGlzLnVpRGlhbG9nLnBvc2l0aW9uKHRoaXMub3B0aW9ucy5wb3NpdGlvbiksZXx8dGhpcy51aURpYWxvZy5oaWRlKCl9LF9zZXRPcHRpb25zOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMscz0hMSxuPXt9O2UuZWFjaCh0LGZ1bmN0aW9uKGUsdCl7aS5fc2V0T3B0aW9uKGUsdCksZSBpbiBpLnNpemVSZWxhdGVkT3B0aW9ucyYmKHM9ITApLGUgaW4gaS5yZXNpemFibGVSZWxhdGVkT3B0aW9ucyYmKG5bZV09dCl9KSxzJiYodGhpcy5fc2l6ZSgpLHRoaXMuX3Bvc2l0aW9uKCkpLHRoaXMudWlEaWFsb2cuaXMoIjpkYXRhKHVpLXJlc2l6YWJsZSkiKSYmdGhpcy51aURpYWxvZy5yZXNpemFibGUoIm9wdGlvbiIsbil9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXt2YXIgaSxzLG49dGhpcy51aURpYWxvZzsiZGlhbG9nQ2xhc3MiPT09ZSYmbi5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuZGlhbG9nQ2xhc3MpLmFkZENsYXNzKHQpLCJkaXNhYmxlZCIhPT1lJiYodGhpcy5fc3VwZXIoZSx0KSwiYXBwZW5kVG8iPT09ZSYmdGhpcy51aURpYWxvZy5hcHBlbmRUbyh0aGlzLl9hcHBlbmRUbygpKSwiYnV0dG9ucyI9PT1lJiZ0aGlzLl9jcmVhdGVCdXR0b25zKCksImNsb3NlVGV4dCI9PT1lJiZ0aGlzLnVpRGlhbG9nVGl0bGViYXJDbG9zZS5idXR0b24oe2xhYmVsOiIiK3R9KSwiZHJhZ2dhYmxlIj09PWUmJihpPW4uaXMoIjpkYXRhKHVpLWRyYWdnYWJsZSkiKSxpJiYhdCYmbi5kcmFnZ2FibGUoImRlc3Ryb3kiKSwhaSYmdCYmdGhpcy5fbWFrZURyYWdnYWJsZSgpKSwicG9zaXRpb24iPT09ZSYmdGhpcy5fcG9zaXRpb24oKSwicmVzaXphYmxlIj09PWUmJihzPW4uaXMoIjpkYXRhKHVpLXJlc2l6YWJsZSkiKSxzJiYhdCYmbi5yZXNpemFibGUoImRlc3Ryb3kiKSxzJiYic3RyaW5nIj09dHlwZW9mIHQmJm4ucmVzaXphYmxlKCJvcHRpb24iLCJoYW5kbGVzIix0KSxzfHx0PT09ITF8fHRoaXMuX21ha2VSZXNpemFibGUoKSksInRpdGxlIj09PWUmJnRoaXMuX3RpdGxlKHRoaXMudWlEaWFsb2dUaXRsZWJhci5maW5kKCIudWktZGlhbG9nLXRpdGxlIikpKX0sX3NpemU6ZnVuY3Rpb24oKXt2YXIgZSx0LGkscz10aGlzLm9wdGlvbnM7dGhpcy5lbGVtZW50LnNob3coKS5jc3Moe3dpZHRoOiJhdXRvIixtaW5IZWlnaHQ6MCxtYXhIZWlnaHQ6Im5vbmUiLGhlaWdodDowfSkscy5taW5XaWR0aD5zLndpZHRoJiYocy53aWR0aD1zLm1pbldpZHRoKSxlPXRoaXMudWlEaWFsb2cuY3NzKHtoZWlnaHQ6ImF1dG8iLHdpZHRoOnMud2lkdGh9KS5vdXRlckhlaWdodCgpLHQ9TWF0aC5tYXgoMCxzLm1pbkhlaWdodC1lKSxpPSJudW1iZXIiPT10eXBlb2Ygcy5tYXhIZWlnaHQ/TWF0aC5tYXgoMCxzLm1heEhlaWdodC1lKToibm9uZSIsImF1dG8iPT09cy5oZWlnaHQ/dGhpcy5lbGVtZW50LmNzcyh7bWluSGVpZ2h0OnQsbWF4SGVpZ2h0OmksaGVpZ2h0OiJhdXRvIn0pOnRoaXMuZWxlbWVudC5oZWlnaHQoTWF0aC5tYXgoMCxzLmhlaWdodC1lKSksdGhpcy51aURpYWxvZy5pcygiOmRhdGEodWktcmVzaXphYmxlKSIpJiZ0aGlzLnVpRGlhbG9nLnJlc2l6YWJsZSgib3B0aW9uIiwibWluSGVpZ2h0Iix0aGlzLl9taW5IZWlnaHQoKSl9LF9ibG9ja0ZyYW1lczpmdW5jdGlvbigpe3RoaXMuaWZyYW1lQmxvY2tzPXRoaXMuZG9jdW1lbnQuZmluZCgiaWZyYW1lIikubWFwKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTtyZXR1cm4gZSgiPGRpdj4iKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsd2lkdGg6dC5vdXRlcldpZHRoKCksaGVpZ2h0OnQub3V0ZXJIZWlnaHQoKX0pLmFwcGVuZFRvKHQucGFyZW50KCkpLm9mZnNldCh0Lm9mZnNldCgpKVswXX0pfSxfdW5ibG9ja0ZyYW1lczpmdW5jdGlvbigpe3RoaXMuaWZyYW1lQmxvY2tzJiYodGhpcy5pZnJhbWVCbG9ja3MucmVtb3ZlKCksZGVsZXRlIHRoaXMuaWZyYW1lQmxvY2tzKX0sX2FsbG93SW50ZXJhY3Rpb246ZnVuY3Rpb24odCl7cmV0dXJuIGUodC50YXJnZXQpLmNsb3Nlc3QoIi51aS1kaWFsb2ciKS5sZW5ndGg/ITA6ISFlKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktZGF0ZXBpY2tlciIpLmxlbmd0aH0sX2NyZWF0ZU92ZXJsYXk6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMubW9kYWwpe3ZhciB0PSEwO3RoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dD0hMX0pLHRoaXMuZG9jdW1lbnQuZGF0YSgidWktZGlhbG9nLW92ZXJsYXlzIil8fHRoaXMuX29uKHRoaXMuZG9jdW1lbnQse2ZvY3VzaW46ZnVuY3Rpb24oZSl7dHx8dGhpcy5fYWxsb3dJbnRlcmFjdGlvbihlKXx8KGUucHJldmVudERlZmF1bHQoKSx0aGlzLl90cmFja2luZ0luc3RhbmNlcygpWzBdLl9mb2N1c1RhYmJhYmxlKCkpfX0pLHRoaXMub3ZlcmxheT1lKCI8ZGl2PiIpLmFkZENsYXNzKCJ1aS13aWRnZXQtb3ZlcmxheSB1aS1mcm9udCIpLmFwcGVuZFRvKHRoaXMuX2FwcGVuZFRvKCkpLHRoaXMuX29uKHRoaXMub3ZlcmxheSx7bW91c2Vkb3duOiJfa2VlcEZvY3VzIn0pLHRoaXMuZG9jdW1lbnQuZGF0YSgidWktZGlhbG9nLW92ZXJsYXlzIiwodGhpcy5kb2N1bWVudC5kYXRhKCJ1aS1kaWFsb2ctb3ZlcmxheXMiKXx8MCkrMSl9fSxfZGVzdHJveU92ZXJsYXk6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMubW9kYWwmJnRoaXMub3ZlcmxheSl7dmFyIGU9dGhpcy5kb2N1bWVudC5kYXRhKCJ1aS1kaWFsb2ctb3ZlcmxheXMiKS0xO2U/dGhpcy5kb2N1bWVudC5kYXRhKCJ1aS1kaWFsb2ctb3ZlcmxheXMiLGUpOnRoaXMuZG9jdW1lbnQudW5iaW5kKCJmb2N1c2luIikucmVtb3ZlRGF0YSgidWktZGlhbG9nLW92ZXJsYXlzIiksdGhpcy5vdmVybGF5LnJlbW92ZSgpLHRoaXMub3ZlcmxheT1udWxsfX19KSxlLndpZGdldCgidWkucHJvZ3Jlc3NiYXIiLHt2ZXJzaW9uOiIxLjExLjQiLG9wdGlvbnM6e21heDoxMDAsdmFsdWU6MCxjaGFuZ2U6bnVsbCxjb21wbGV0ZTpudWxsfSxtaW46MCxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5vbGRWYWx1ZT10aGlzLm9wdGlvbnMudmFsdWU9dGhpcy5fY29uc3RyYWluZWRWYWx1ZSgpLHRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktcHJvZ3Jlc3NiYXIgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiKS5hdHRyKHtyb2xlOiJwcm9ncmVzc2JhciIsImFyaWEtdmFsdWVtaW4iOnRoaXMubWlufSksdGhpcy52YWx1ZURpdj1lKCI8ZGl2IGNsYXNzPSd1aS1wcm9ncmVzc2Jhci12YWx1ZSB1aS13aWRnZXQtaGVhZGVyIHVpLWNvcm5lci1sZWZ0Jz48L2Rpdj4iKS5hcHBlbmRUbyh0aGlzLmVsZW1lbnQpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktcHJvZ3Jlc3NiYXIgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0cigiYXJpYS12YWx1ZW1pbiIpLnJlbW92ZUF0dHIoImFyaWEtdmFsdWVtYXgiKS5yZW1vdmVBdHRyKCJhcmlhLXZhbHVlbm93IiksdGhpcy52YWx1ZURpdi5yZW1vdmUoKX0sdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWU/dGhpcy5vcHRpb25zLnZhbHVlOih0aGlzLm9wdGlvbnMudmFsdWU9dGhpcy5fY29uc3RyYWluZWRWYWx1ZShlKSx0aGlzLl9yZWZyZXNoVmFsdWUoKSx2b2lkIDApfSxfY29uc3RyYWluZWRWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9dGhpcy5vcHRpb25zLnZhbHVlKSx0aGlzLmluZGV0ZXJtaW5hdGU9ZT09PSExLCJudW1iZXIiIT10eXBlb2YgZSYmKGU9MCksdGhpcy5pbmRldGVybWluYXRlPyExOk1hdGgubWluKHRoaXMub3B0aW9ucy5tYXgsTWF0aC5tYXgodGhpcy5taW4sZSkpfSxfc2V0T3B0aW9uczpmdW5jdGlvbihlKXt2YXIgdD1lLnZhbHVlO2RlbGV0ZSBlLnZhbHVlLHRoaXMuX3N1cGVyKGUpLHRoaXMub3B0aW9ucy52YWx1ZT10aGlzLl9jb25zdHJhaW5lZFZhbHVlKHQpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7Im1heCI9PT1lJiYodD1NYXRoLm1heCh0aGlzLm1pbix0KSksImRpc2FibGVkIj09PWUmJnRoaXMuZWxlbWVudC50b2dnbGVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiLCEhdCkuYXR0cigiYXJpYS1kaXNhYmxlZCIsdCksdGhpcy5fc3VwZXIoZSx0KX0sX3BlcmNlbnRhZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmRldGVybWluYXRlPzEwMDoxMDAqKHRoaXMub3B0aW9ucy52YWx1ZS10aGlzLm1pbikvKHRoaXMub3B0aW9ucy5tYXgtdGhpcy5taW4pfSxfcmVmcmVzaFZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLnZhbHVlLGk9dGhpcy5fcGVyY2VudGFnZSgpO3RoaXMudmFsdWVEaXYudG9nZ2xlKHRoaXMuaW5kZXRlcm1pbmF0ZXx8dD50aGlzLm1pbikudG9nZ2xlQ2xhc3MoInVpLWNvcm5lci1yaWdodCIsdD09PXRoaXMub3B0aW9ucy5tYXgpLndpZHRoKGkudG9GaXhlZCgwKSsiJSIpLHRoaXMuZWxlbWVudC50b2dnbGVDbGFzcygidWktcHJvZ3Jlc3NiYXItaW5kZXRlcm1pbmF0ZSIsdGhpcy5pbmRldGVybWluYXRlKSx0aGlzLmluZGV0ZXJtaW5hdGU/KHRoaXMuZWxlbWVudC5yZW1vdmVBdHRyKCJhcmlhLXZhbHVlbm93IiksdGhpcy5vdmVybGF5RGl2fHwodGhpcy5vdmVybGF5RGl2PWUoIjxkaXYgY2xhc3M9J3VpLXByb2dyZXNzYmFyLW92ZXJsYXknPjwvZGl2PiIpLmFwcGVuZFRvKHRoaXMudmFsdWVEaXYpKSk6KHRoaXMuZWxlbWVudC5hdHRyKHsiYXJpYS12YWx1ZW1heCI6dGhpcy5vcHRpb25zLm1heCwiYXJpYS12YWx1ZW5vdyI6dH0pLHRoaXMub3ZlcmxheURpdiYmKHRoaXMub3ZlcmxheURpdi5yZW1vdmUoKSx0aGlzLm92ZXJsYXlEaXY9bnVsbCkpLHRoaXMub2xkVmFsdWUhPT10JiYodGhpcy5vbGRWYWx1ZT10LHRoaXMuX3RyaWdnZXIoImNoYW5nZSIpKSx0PT09dGhpcy5vcHRpb25zLm1heCYmdGhpcy5fdHJpZ2dlcigiY29tcGxldGUiKX19KSxlLndpZGdldCgidWkuc2VsZWN0bWVudSIse3ZlcnNpb246IjEuMTEuNCIsZGVmYXVsdEVsZW1lbnQ6IjxzZWxlY3Q+IixvcHRpb25zOnthcHBlbmRUbzpudWxsLGRpc2FibGVkOm51bGwsaWNvbnM6e2J1dHRvbjoidWktaWNvbi10cmlhbmdsZS0xLXMifSxwb3NpdGlvbjp7bXk6ImxlZnQgdG9wIixhdDoibGVmdCBib3R0b20iLGNvbGxpc2lvbjoibm9uZSJ9LHdpZHRoOm51bGwsY2hhbmdlOm51bGwsY2xvc2U6bnVsbCxmb2N1czpudWxsLG9wZW46bnVsbCxzZWxlY3Q6bnVsbH0sX2NyZWF0ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZWxlbWVudC51bmlxdWVJZCgpLmF0dHIoImlkIik7dGhpcy5pZHM9e2VsZW1lbnQ6ZSxidXR0b246ZSsiLWJ1dHRvbiIsbWVudTplKyItbWVudSJ9LHRoaXMuX2RyYXdCdXR0b24oKSx0aGlzLl9kcmF3TWVudSgpLHRoaXMub3B0aW9ucy5kaXNhYmxlZCYmdGhpcy5kaXNhYmxlKCl9LF9kcmF3QnV0dG9uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmxhYmVsPWUoImxhYmVsW2Zvcj0nIit0aGlzLmlkcy5lbGVtZW50KyInXSIpLmF0dHIoImZvciIsdGhpcy5pZHMuYnV0dG9uKSx0aGlzLl9vbih0aGlzLmxhYmVsLHtjbGljazpmdW5jdGlvbihlKXt0aGlzLmJ1dHRvbi5mb2N1cygpLGUucHJldmVudERlZmF1bHQoKX19KSx0aGlzLmVsZW1lbnQuaGlkZSgpLHRoaXMuYnV0dG9uPWUoIjxzcGFuPiIseyJjbGFzcyI6InVpLXNlbGVjdG1lbnUtYnV0dG9uIHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwiLHRhYmluZGV4OnRoaXMub3B0aW9ucy5kaXNhYmxlZD8tMTowLGlkOnRoaXMuaWRzLmJ1dHRvbixyb2xlOiJjb21ib2JveCIsImFyaWEtZXhwYW5kZWQiOiJmYWxzZSIsImFyaWEtYXV0b2NvbXBsZXRlIjoibGlzdCIsImFyaWEtb3ducyI6dGhpcy5pZHMubWVudSwiYXJpYS1oYXNwb3B1cCI6InRydWUifSkuaW5zZXJ0QWZ0ZXIodGhpcy5lbGVtZW50KSxlKCI8c3Bhbj4iLHsiY2xhc3MiOiJ1aS1pY29uICIrdGhpcy5vcHRpb25zLmljb25zLmJ1dHRvbn0pLnByZXBlbmRUbyh0aGlzLmJ1dHRvbiksdGhpcy5idXR0b25UZXh0PWUoIjxzcGFuPiIseyJjbGFzcyI6InVpLXNlbGVjdG1lbnUtdGV4dCJ9KS5hcHBlbmRUbyh0aGlzLmJ1dHRvbiksdGhpcy5fc2V0VGV4dCh0aGlzLmJ1dHRvblRleHQsdGhpcy5lbGVtZW50LmZpbmQoIm9wdGlvbjpzZWxlY3RlZCIpLnRleHQoKSksdGhpcy5fcmVzaXplQnV0dG9uKCksdGhpcy5fb24odGhpcy5idXR0b24sdGhpcy5fYnV0dG9uRXZlbnRzKSx0aGlzLmJ1dHRvbi5vbmUoImZvY3VzaW4iLGZ1bmN0aW9uKCl7dC5tZW51SXRlbXN8fHQuX3JlZnJlc2hNZW51KCl9KSx0aGlzLl9ob3ZlcmFibGUodGhpcy5idXR0b24pLHRoaXMuX2ZvY3VzYWJsZSh0aGlzLmJ1dHRvbil9LF9kcmF3TWVudTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5tZW51PWUoIjx1bD4iLHsiYXJpYS1oaWRkZW4iOiJ0cnVlIiwiYXJpYS1sYWJlbGxlZGJ5Ijp0aGlzLmlkcy5idXR0b24saWQ6dGhpcy5pZHMubWVudX0pLHRoaXMubWVudVdyYXA9ZSgiPGRpdj4iLHsiY2xhc3MiOiJ1aS1zZWxlY3RtZW51LW1lbnUgdWktZnJvbnQifSkuYXBwZW5kKHRoaXMubWVudSkuYXBwZW5kVG8odGhpcy5fYXBwZW5kVG8oKSksdGhpcy5tZW51SW5zdGFuY2U9dGhpcy5tZW51Lm1lbnUoe3JvbGU6Imxpc3Rib3giLHNlbGVjdDpmdW5jdGlvbihlLGkpe2UucHJldmVudERlZmF1bHQoKSx0Ll9zZXRTZWxlY3Rpb24oKSx0Ll9zZWxlY3QoaS5pdGVtLmRhdGEoInVpLXNlbGVjdG1lbnUtaXRlbSIpLGUpfSxmb2N1czpmdW5jdGlvbihlLGkpe3ZhciBzPWkuaXRlbS5kYXRhKCJ1aS1zZWxlY3RtZW51LWl0ZW0iKTtudWxsIT10LmZvY3VzSW5kZXgmJnMuaW5kZXghPT10LmZvY3VzSW5kZXgmJih0Ll90cmlnZ2VyKCJmb2N1cyIsZSx7aXRlbTpzfSksdC5pc09wZW58fHQuX3NlbGVjdChzLGUpKSx0LmZvY3VzSW5kZXg9cy5pbmRleCx0LmJ1dHRvbi5hdHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiLHQubWVudUl0ZW1zLmVxKHMuaW5kZXgpLmF0dHIoImlkIikpfX0pLm1lbnUoImluc3RhbmNlIiksdGhpcy5tZW51LmFkZENsYXNzKCJ1aS1jb3JuZXItYm90dG9tIikucmVtb3ZlQ2xhc3MoInVpLWNvcm5lci1hbGwiKSx0aGlzLm1lbnVJbnN0YW5jZS5fb2ZmKHRoaXMubWVudSwibW91c2VsZWF2ZSIpLHRoaXMubWVudUluc3RhbmNlLl9jbG9zZU9uRG9jdW1lbnRDbGljaz1mdW5jdGlvbigpe3JldHVybiExfSx0aGlzLm1lbnVJbnN0YW5jZS5faXNEaXZpZGVyPWZ1bmN0aW9uKCl7cmV0dXJuITF9fSxyZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5fcmVmcmVzaE1lbnUoKSx0aGlzLl9zZXRUZXh0KHRoaXMuYnV0dG9uVGV4dCx0aGlzLl9nZXRTZWxlY3RlZEl0ZW0oKS50ZXh0KCkpLHRoaXMub3B0aW9ucy53aWR0aHx8dGhpcy5fcmVzaXplQnV0dG9uKCl9LF9yZWZyZXNoTWVudTpmdW5jdGlvbigpe3RoaXMubWVudS5lbXB0eSgpO3ZhciBlLHQ9dGhpcy5lbGVtZW50LmZpbmQoIm9wdGlvbiIpO3QubGVuZ3RoJiYodGhpcy5fcGFyc2VPcHRpb25zKHQpLHRoaXMuX3JlbmRlck1lbnUodGhpcy5tZW51LHRoaXMuaXRlbXMpLHRoaXMubWVudUluc3RhbmNlLnJlZnJlc2goKSx0aGlzLm1lbnVJdGVtcz10aGlzLm1lbnUuZmluZCgibGkiKS5ub3QoIi51aS1zZWxlY3RtZW51LW9wdGdyb3VwIiksZT10aGlzLl9nZXRTZWxlY3RlZEl0ZW0oKSx0aGlzLm1lbnVJbnN0YW5jZS5mb2N1cyhudWxsLGUpLHRoaXMuX3NldEFyaWEoZS5kYXRhKCJ1aS1zZWxlY3RtZW51LWl0ZW0iKSksdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsdGhpcy5lbGVtZW50LnByb3AoImRpc2FibGVkIikpKX0sb3BlbjpmdW5jdGlvbihlKXt0aGlzLm9wdGlvbnMuZGlzYWJsZWR8fCh0aGlzLm1lbnVJdGVtcz8odGhpcy5tZW51LmZpbmQoIi51aS1zdGF0ZS1mb2N1cyIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpLHRoaXMubWVudUluc3RhbmNlLmZvY3VzKG51bGwsdGhpcy5fZ2V0U2VsZWN0ZWRJdGVtKCkpKTp0aGlzLl9yZWZyZXNoTWVudSgpLHRoaXMuaXNPcGVuPSEwLHRoaXMuX3RvZ2dsZUF0dHIoKSx0aGlzLl9yZXNpemVNZW51KCksdGhpcy5fcG9zaXRpb24oKSx0aGlzLl9vbih0aGlzLmRvY3VtZW50LHRoaXMuX2RvY3VtZW50Q2xpY2spLHRoaXMuX3RyaWdnZXIoIm9wZW4iLGUpKX0sX3Bvc2l0aW9uOmZ1bmN0aW9uKCl7dGhpcy5tZW51V3JhcC5wb3NpdGlvbihlLmV4dGVuZCh7b2Y6dGhpcy5idXR0b259LHRoaXMub3B0aW9ucy5wb3NpdGlvbikpfSxjbG9zZTpmdW5jdGlvbihlKXt0aGlzLmlzT3BlbiYmKHRoaXMuaXNPcGVuPSExLHRoaXMuX3RvZ2dsZUF0dHIoKSx0aGlzLnJhbmdlPW51bGwsdGhpcy5fb2ZmKHRoaXMuZG9jdW1lbnQpLHRoaXMuX3RyaWdnZXIoImNsb3NlIixlKSl9LHdpZGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmJ1dHRvbn0sbWVudVdpZGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lbnV9LF9yZW5kZXJNZW51OmZ1bmN0aW9uKHQsaSl7dmFyIHM9dGhpcyxuPSIiO2UuZWFjaChpLGZ1bmN0aW9uKGksYSl7YS5vcHRncm91cCE9PW4mJihlKCI8bGk+Iix7ImNsYXNzIjoidWktc2VsZWN0bWVudS1vcHRncm91cCB1aS1tZW51LWRpdmlkZXIiKyhhLmVsZW1lbnQucGFyZW50KCJvcHRncm91cCIpLnByb3AoImRpc2FibGVkIik/IiB1aS1zdGF0ZS1kaXNhYmxlZCI6IiIpLHRleHQ6YS5vcHRncm91cH0pLmFwcGVuZFRvKHQpLG49YS5vcHRncm91cCkscy5fcmVuZGVySXRlbURhdGEodCxhKX0pfSxfcmVuZGVySXRlbURhdGE6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fcmVuZGVySXRlbShlLHQpLmRhdGEoInVpLXNlbGVjdG1lbnUtaXRlbSIsdCl9LF9yZW5kZXJJdGVtOmZ1bmN0aW9uKHQsaSl7dmFyIHM9ZSgiPGxpPiIpO3JldHVybiBpLmRpc2FibGVkJiZzLmFkZENsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpLHRoaXMuX3NldFRleHQocyxpLmxhYmVsKSxzLmFwcGVuZFRvKHQpfSxfc2V0VGV4dDpmdW5jdGlvbihlLHQpe3Q/ZS50ZXh0KHQpOmUuaHRtbCgiJiMxNjA7Iil9LF9tb3ZlOmZ1bmN0aW9uKGUsdCl7dmFyIGkscyxuPSIudWktbWVudS1pdGVtIjt0aGlzLmlzT3Blbj9pPXRoaXMubWVudUl0ZW1zLmVxKHRoaXMuZm9jdXNJbmRleCk6KGk9dGhpcy5tZW51SXRlbXMuZXEodGhpcy5lbGVtZW50WzBdLnNlbGVjdGVkSW5kZXgpLG4rPSI6bm90KC51aS1zdGF0ZS1kaXNhYmxlZCkiKSxzPSJmaXJzdCI9PT1lfHwibGFzdCI9PT1lP2lbImZpcnN0Ij09PWU/InByZXZBbGwiOiJuZXh0QWxsIl0obikuZXEoLTEpOmlbZSsiQWxsIl0obikuZXEoMCkscy5sZW5ndGgmJnRoaXMubWVudUluc3RhbmNlLmZvY3VzKHQscyl9LF9nZXRTZWxlY3RlZEl0ZW06ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZW51SXRlbXMuZXEodGhpcy5lbGVtZW50WzBdLnNlbGVjdGVkSW5kZXgpfSxfdG9nZ2xlOmZ1bmN0aW9uKGUpe3RoaXNbdGhpcy5pc09wZW4/ImNsb3NlIjoib3BlbiJdKGUpfSxfc2V0U2VsZWN0aW9uOmZ1bmN0aW9uKCl7dmFyIGU7dGhpcy5yYW5nZSYmKHdpbmRvdy5nZXRTZWxlY3Rpb24/KGU9d2luZG93LmdldFNlbGVjdGlvbigpLGUucmVtb3ZlQWxsUmFuZ2VzKCksZS5hZGRSYW5nZSh0aGlzLnJhbmdlKSk6dGhpcy5yYW5nZS5zZWxlY3QoKSx0aGlzLmJ1dHRvbi5mb2N1cygpKX0sX2RvY3VtZW50Q2xpY2s6e21vdXNlZG93bjpmdW5jdGlvbih0KXt0aGlzLmlzT3BlbiYmKGUodC50YXJnZXQpLmNsb3Nlc3QoIi51aS1zZWxlY3RtZW51LW1lbnUsICMiK3RoaXMuaWRzLmJ1dHRvbikubGVuZ3RofHx0aGlzLmNsb3NlKHQpKX19LF9idXR0b25FdmVudHM6e21vdXNlZG93bjpmdW5jdGlvbigpe3ZhciBlO3dpbmRvdy5nZXRTZWxlY3Rpb24/KGU9d2luZG93LmdldFNlbGVjdGlvbigpLGUucmFuZ2VDb3VudCYmKHRoaXMucmFuZ2U9ZS5nZXRSYW5nZUF0KDApKSk6dGhpcy5yYW5nZT1kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKX0sY2xpY2s6ZnVuY3Rpb24oZSl7dGhpcy5fc2V0U2VsZWN0aW9uKCksdGhpcy5fdG9nZ2xlKGUpfSxrZXlkb3duOmZ1bmN0aW9uKHQpe3ZhciBpPSEwO3N3aXRjaCh0LmtleUNvZGUpe2Nhc2UgZS51aS5rZXlDb2RlLlRBQjpjYXNlIGUudWkua2V5Q29kZS5FU0NBUEU6dGhpcy5jbG9zZSh0KSxpPSExO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkVOVEVSOnRoaXMuaXNPcGVuJiZ0aGlzLl9zZWxlY3RGb2N1c2VkSXRlbSh0KTticmVhaztjYXNlIGUudWkua2V5Q29kZS5VUDp0LmFsdEtleT90aGlzLl90b2dnbGUodCk6dGhpcy5fbW92ZSgicHJldiIsdCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRE9XTjp0LmFsdEtleT90aGlzLl90b2dnbGUodCk6dGhpcy5fbW92ZSgibmV4dCIsdCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuU1BBQ0U6dGhpcy5pc09wZW4/dGhpcy5fc2VsZWN0Rm9jdXNlZEl0ZW0odCk6dGhpcy5fdG9nZ2xlKHQpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkxFRlQ6dGhpcy5fbW92ZSgicHJldiIsdCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuUklHSFQ6dGhpcy5fbW92ZSgibmV4dCIsdCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuSE9NRTpjYXNlIGUudWkua2V5Q29kZS5QQUdFX1VQOnRoaXMuX21vdmUoImZpcnN0Iix0KTticmVhaztjYXNlIGUudWkua2V5Q29kZS5FTkQ6Y2FzZSBlLnVpLmtleUNvZGUuUEFHRV9ET1dOOnRoaXMuX21vdmUoImxhc3QiLHQpO2JyZWFrO2RlZmF1bHQ6dGhpcy5tZW51LnRyaWdnZXIodCksaT0hMX1pJiZ0LnByZXZlbnREZWZhdWx0KCl9fSxfc2VsZWN0Rm9jdXNlZEl0ZW06ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5tZW51SXRlbXMuZXEodGhpcy5mb2N1c0luZGV4KTt0Lmhhc0NsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpfHx0aGlzLl9zZWxlY3QodC5kYXRhKCJ1aS1zZWxlY3RtZW51LWl0ZW0iKSxlKX0sX3NlbGVjdDpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMuZWxlbWVudFswXS5zZWxlY3RlZEluZGV4O3RoaXMuZWxlbWVudFswXS5zZWxlY3RlZEluZGV4PWUuaW5kZXgsdGhpcy5fc2V0VGV4dCh0aGlzLmJ1dHRvblRleHQsZS5sYWJlbCksdGhpcy5fc2V0QXJpYShlKSx0aGlzLl90cmlnZ2VyKCJzZWxlY3QiLHQse2l0ZW06ZX0pLGUuaW5kZXghPT1pJiZ0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLHQse2l0ZW06ZX0pLHRoaXMuY2xvc2UodCl9LF9zZXRBcmlhOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubWVudUl0ZW1zLmVxKGUuaW5kZXgpLmF0dHIoImlkIik7dGhpcy5idXR0b24uYXR0cih7ImFyaWEtbGFiZWxsZWRieSI6dCwiYXJpYS1hY3RpdmVkZXNjZW5kYW50Ijp0fSksdGhpcy5tZW51LmF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsdCl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXsiaWNvbnMiPT09ZSYmdGhpcy5idXR0b24uZmluZCgic3Bhbi51aS1pY29uIikucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmljb25zLmJ1dHRvbikuYWRkQ2xhc3ModC5idXR0b24pLHRoaXMuX3N1cGVyKGUsdCksImFwcGVuZFRvIj09PWUmJnRoaXMubWVudVdyYXAuYXBwZW5kVG8odGhpcy5fYXBwZW5kVG8oKSksImRpc2FibGVkIj09PWUmJih0aGlzLm1lbnVJbnN0YW5jZS5vcHRpb24oImRpc2FibGVkIix0KSx0aGlzLmJ1dHRvbi50b2dnbGVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiLHQpLmF0dHIoImFyaWEtZGlzYWJsZWQiLHQpLHRoaXMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIsdCksdD8odGhpcy5idXR0b24uYXR0cigidGFiaW5kZXgiLC0xKSx0aGlzLmNsb3NlKCkpOnRoaXMuYnV0dG9uLmF0dHIoInRhYmluZGV4IiwwKSksIndpZHRoIj09PWUmJnRoaXMuX3Jlc2l6ZUJ1dHRvbigpfSxfYXBwZW5kVG86ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMuYXBwZW5kVG87cmV0dXJuIHQmJih0PXQuanF1ZXJ5fHx0Lm5vZGVUeXBlP2UodCk6dGhpcy5kb2N1bWVudC5maW5kKHQpLmVxKDApKSx0JiZ0WzBdfHwodD10aGlzLmVsZW1lbnQuY2xvc2VzdCgiLnVpLWZyb250IikpLHQubGVuZ3RofHwodD10aGlzLmRvY3VtZW50WzBdLmJvZHkpLHR9LF90b2dnbGVBdHRyOmZ1bmN0aW9uKCl7dGhpcy5idXR0b24udG9nZ2xlQ2xhc3MoInVpLWNvcm5lci10b3AiLHRoaXMuaXNPcGVuKS50b2dnbGVDbGFzcygidWktY29ybmVyLWFsbCIsIXRoaXMuaXNPcGVuKS5hdHRyKCJhcmlhLWV4cGFuZGVkIix0aGlzLmlzT3BlbiksdGhpcy5tZW51V3JhcC50b2dnbGVDbGFzcygidWktc2VsZWN0bWVudS1vcGVuIix0aGlzLmlzT3BlbiksdGhpcy5tZW51LmF0dHIoImFyaWEtaGlkZGVuIiwhdGhpcy5pc09wZW4pfSxfcmVzaXplQnV0dG9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLndpZHRoO2V8fChlPXRoaXMuZWxlbWVudC5zaG93KCkub3V0ZXJXaWR0aCgpLHRoaXMuZWxlbWVudC5oaWRlKCkpLHRoaXMuYnV0dG9uLm91dGVyV2lkdGgoZSl9LF9yZXNpemVNZW51OmZ1bmN0aW9uKCl7dGhpcy5tZW51Lm91dGVyV2lkdGgoTWF0aC5tYXgodGhpcy5idXR0b24ub3V0ZXJXaWR0aCgpLHRoaXMubWVudS53aWR0aCgiIikub3V0ZXJXaWR0aCgpKzEpKX0sX2dldENyZWF0ZU9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm57ZGlzYWJsZWQ6dGhpcy5lbGVtZW50LnByb3AoImRpc2FibGVkIil9fSxfcGFyc2VPcHRpb25zOmZ1bmN0aW9uKHQpe3ZhciBpPVtdO3QuZWFjaChmdW5jdGlvbih0LHMpe3ZhciBuPWUocyksYT1uLnBhcmVudCgib3B0Z3JvdXAiKTtpLnB1c2goe2VsZW1lbnQ6bixpbmRleDp0LHZhbHVlOm4udmFsKCksbGFiZWw6bi50ZXh0KCksb3B0Z3JvdXA6YS5hdHRyKCJsYWJlbCIpfHwiIixkaXNhYmxlZDphLnByb3AoImRpc2FibGVkIil8fG4ucHJvcCgiZGlzYWJsZWQiKX0pfSksdGhpcy5pdGVtcz1pfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMubWVudVdyYXAucmVtb3ZlKCksdGhpcy5idXR0b24ucmVtb3ZlKCksdGhpcy5lbGVtZW50LnNob3coKSx0aGlzLmVsZW1lbnQucmVtb3ZlVW5pcXVlSWQoKSx0aGlzLmxhYmVsLmF0dHIoImZvciIsdGhpcy5pZHMuZWxlbWVudCl9fSksZS53aWRnZXQoInVpLnNsaWRlciIsZS51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMS40Iix3aWRnZXRFdmVudFByZWZpeDoic2xpZGUiLG9wdGlvbnM6e2FuaW1hdGU6ITEsZGlzdGFuY2U6MCxtYXg6MTAwLG1pbjowLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIixyYW5nZTohMSxzdGVwOjEsdmFsdWU6MCx2YWx1ZXM6bnVsbCxjaGFuZ2U6bnVsbCxzbGlkZTpudWxsLHN0YXJ0Om51bGwsc3RvcDpudWxsfSxudW1QYWdlczo1LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLl9rZXlTbGlkaW5nPSExLHRoaXMuX21vdXNlU2xpZGluZz0hMSx0aGlzLl9hbmltYXRlT2ZmPSEwLHRoaXMuX2hhbmRsZUluZGV4PW51bGwsdGhpcy5fZGV0ZWN0T3JpZW50YXRpb24oKSx0aGlzLl9tb3VzZUluaXQoKSx0aGlzLl9jYWxjdWxhdGVOZXdNYXgoKSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXNsaWRlciB1aS1zbGlkZXItIit0aGlzLm9yaWVudGF0aW9uKyIgdWktd2lkZ2V0IisiIHVpLXdpZGdldC1jb250ZW50IisiIHVpLWNvcm5lci1hbGwiKSx0aGlzLl9yZWZyZXNoKCksdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsdGhpcy5vcHRpb25zLmRpc2FibGVkKSx0aGlzLl9hbmltYXRlT2ZmPSExfSxfcmVmcmVzaDpmdW5jdGlvbigpe3RoaXMuX2NyZWF0ZVJhbmdlKCksdGhpcy5fY3JlYXRlSGFuZGxlcygpLHRoaXMuX3NldHVwRXZlbnRzKCksdGhpcy5fcmVmcmVzaFZhbHVlKCl9LF9jcmVhdGVIYW5kbGVzOmZ1bmN0aW9uKCl7dmFyIHQsaSxzPXRoaXMub3B0aW9ucyxuPXRoaXMuZWxlbWVudC5maW5kKCIudWktc2xpZGVyLWhhbmRsZSIpLmFkZENsYXNzKCJ1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwiKSxhPSI8c3BhbiBjbGFzcz0ndWktc2xpZGVyLWhhbmRsZSB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwnIHRhYmluZGV4PScwJz48L3NwYW4+IixvPVtdO2ZvcihpPXMudmFsdWVzJiZzLnZhbHVlcy5sZW5ndGh8fDEsbi5sZW5ndGg+aSYmKG4uc2xpY2UoaSkucmVtb3ZlKCksbj1uLnNsaWNlKDAsaSkpLHQ9bi5sZW5ndGg7aT50O3QrKylvLnB1c2goYSk7dGhpcy5oYW5kbGVzPW4uYWRkKGUoby5qb2luKCIiKSkuYXBwZW5kVG8odGhpcy5lbGVtZW50KSksdGhpcy5oYW5kbGU9dGhpcy5oYW5kbGVzLmVxKDApLHRoaXMuaGFuZGxlcy5lYWNoKGZ1bmN0aW9uKHQpe2UodGhpcykuZGF0YSgidWktc2xpZGVyLWhhbmRsZS1pbmRleCIsdCl9KX0sX2NyZWF0ZVJhbmdlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLGk9IiI7dC5yYW5nZT8odC5yYW5nZT09PSEwJiYodC52YWx1ZXM/dC52YWx1ZXMubGVuZ3RoJiYyIT09dC52YWx1ZXMubGVuZ3RoP3QudmFsdWVzPVt0LnZhbHVlc1swXSx0LnZhbHVlc1swXV06ZS5pc0FycmF5KHQudmFsdWVzKSYmKHQudmFsdWVzPXQudmFsdWVzLnNsaWNlKDApKTp0LnZhbHVlcz1bdGhpcy5fdmFsdWVNaW4oKSx0aGlzLl92YWx1ZU1pbigpXSksdGhpcy5yYW5nZSYmdGhpcy5yYW5nZS5sZW5ndGg/dGhpcy5yYW5nZS5yZW1vdmVDbGFzcygidWktc2xpZGVyLXJhbmdlLW1pbiB1aS1zbGlkZXItcmFuZ2UtbWF4IikuY3NzKHtsZWZ0OiIiLGJvdHRvbToiIn0pOih0aGlzLnJhbmdlPWUoIjxkaXY+PC9kaXY+IikuYXBwZW5kVG8odGhpcy5lbGVtZW50KSxpPSJ1aS1zbGlkZXItcmFuZ2UgdWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItYWxsIiksdGhpcy5yYW5nZS5hZGRDbGFzcyhpKygibWluIj09PXQucmFuZ2V8fCJtYXgiPT09dC5yYW5nZT8iIHVpLXNsaWRlci1yYW5nZS0iK3QucmFuZ2U6IiIpKSk6KHRoaXMucmFuZ2UmJnRoaXMucmFuZ2UucmVtb3ZlKCksdGhpcy5yYW5nZT1udWxsKX0sX3NldHVwRXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy5fb2ZmKHRoaXMuaGFuZGxlcyksdGhpcy5fb24odGhpcy5oYW5kbGVzLHRoaXMuX2hhbmRsZUV2ZW50cyksdGhpcy5faG92ZXJhYmxlKHRoaXMuaGFuZGxlcyksdGhpcy5fZm9jdXNhYmxlKHRoaXMuaGFuZGxlcyl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5oYW5kbGVzLnJlbW92ZSgpLHRoaXMucmFuZ2UmJnRoaXMucmFuZ2UucmVtb3ZlKCksdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zbGlkZXIgdWktc2xpZGVyLWhvcml6b250YWwgdWktc2xpZGVyLXZlcnRpY2FsIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIiksdGhpcy5fbW91c2VEZXN0cm95KCl9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24odCl7dmFyIGkscyxuLGEsbyxyLGgsbCx1PXRoaXMsZD10aGlzLm9wdGlvbnM7cmV0dXJuIGQuZGlzYWJsZWQ/ITE6KHRoaXMuZWxlbWVudFNpemU9e3dpZHRoOnRoaXMuZWxlbWVudC5vdXRlcldpZHRoKCksaGVpZ2h0OnRoaXMuZWxlbWVudC5vdXRlckhlaWdodCgpfSx0aGlzLmVsZW1lbnRPZmZzZXQ9dGhpcy5lbGVtZW50Lm9mZnNldCgpLGk9e3g6dC5wYWdlWCx5OnQucGFnZVl9LHM9dGhpcy5fbm9ybVZhbHVlRnJvbU1vdXNlKGkpLG49dGhpcy5fdmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpKzEsdGhpcy5oYW5kbGVzLmVhY2goZnVuY3Rpb24odCl7dmFyIGk9TWF0aC5hYnMocy11LnZhbHVlcyh0KSk7KG4+aXx8bj09PWkmJih0PT09dS5fbGFzdENoYW5nZWRWYWx1ZXx8dS52YWx1ZXModCk9PT1kLm1pbikpJiYobj1pLGE9ZSh0aGlzKSxvPXQpfSkscj10aGlzLl9zdGFydCh0LG8pLHI9PT0hMT8hMToodGhpcy5fbW91c2VTbGlkaW5nPSEwLHRoaXMuX2hhbmRsZUluZGV4PW8sYS5hZGRDbGFzcygidWktc3RhdGUtYWN0aXZlIikuZm9jdXMoKSxoPWEub2Zmc2V0KCksbD0hZSh0LnRhcmdldCkucGFyZW50cygpLmFkZEJhY2soKS5pcygiLnVpLXNsaWRlci1oYW5kbGUiKSx0aGlzLl9jbGlja09mZnNldD1sP3tsZWZ0OjAsdG9wOjB9OntsZWZ0OnQucGFnZVgtaC5sZWZ0LWEud2lkdGgoKS8yLHRvcDp0LnBhZ2VZLWgudG9wLWEuaGVpZ2h0KCkvMi0ocGFyc2VJbnQoYS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoYS5jc3MoImJvcmRlckJvdHRvbVdpZHRoIiksMTApfHwwKSsocGFyc2VJbnQoYS5jc3MoIm1hcmdpblRvcCIpLDEwKXx8MCl9LHRoaXMuaGFuZGxlcy5oYXNDbGFzcygidWktc3RhdGUtaG92ZXIiKXx8dGhpcy5fc2xpZGUodCxvLHMpLHRoaXMuX2FuaW1hdGVPZmY9ITAsITApKX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sX21vdXNlRHJhZzpmdW5jdGlvbihlKXt2YXIgdD17eDplLnBhZ2VYLHk6ZS5wYWdlWX0saT10aGlzLl9ub3JtVmFsdWVGcm9tTW91c2UodCk7cmV0dXJuIHRoaXMuX3NsaWRlKGUsdGhpcy5faGFuZGxlSW5kZXgsaSksITF9LF9tb3VzZVN0b3A6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaGFuZGxlcy5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlIiksdGhpcy5fbW91c2VTbGlkaW5nPSExLHRoaXMuX3N0b3AoZSx0aGlzLl9oYW5kbGVJbmRleCksdGhpcy5fY2hhbmdlKGUsdGhpcy5faGFuZGxlSW5kZXgpLHRoaXMuX2hhbmRsZUluZGV4PW51bGwsdGhpcy5fY2xpY2tPZmZzZXQ9bnVsbCx0aGlzLl9hbmltYXRlT2ZmPSExLCExfSxfZGV0ZWN0T3JpZW50YXRpb246ZnVuY3Rpb24oKXt0aGlzLm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCI9PT10aGlzLm9wdGlvbnMub3JpZW50YXRpb24/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCJ9LF9ub3JtVmFsdWVGcm9tTW91c2U6ZnVuY3Rpb24oZSl7dmFyIHQsaSxzLG4sYTtyZXR1cm4iaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uPyh0PXRoaXMuZWxlbWVudFNpemUud2lkdGgsaT1lLngtdGhpcy5lbGVtZW50T2Zmc2V0LmxlZnQtKHRoaXMuX2NsaWNrT2Zmc2V0P3RoaXMuX2NsaWNrT2Zmc2V0LmxlZnQ6MCkpOih0PXRoaXMuZWxlbWVudFNpemUuaGVpZ2h0LGk9ZS55LXRoaXMuZWxlbWVudE9mZnNldC50b3AtKHRoaXMuX2NsaWNrT2Zmc2V0P3RoaXMuX2NsaWNrT2Zmc2V0LnRvcDowKSkscz1pL3Qscz4xJiYocz0xKSwwPnMmJihzPTApLCJ2ZXJ0aWNhbCI9PT10aGlzLm9yaWVudGF0aW9uJiYocz0xLXMpLG49dGhpcy5fdmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpLGE9dGhpcy5fdmFsdWVNaW4oKStzKm4sdGhpcy5fdHJpbUFsaWduVmFsdWUoYSl9LF9zdGFydDpmdW5jdGlvbihlLHQpe3ZhciBpPXtoYW5kbGU6dGhpcy5oYW5kbGVzW3RdLHZhbHVlOnRoaXMudmFsdWUoKX07cmV0dXJuIHRoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoJiYoaS52YWx1ZT10aGlzLnZhbHVlcyh0KSxpLnZhbHVlcz10aGlzLnZhbHVlcygpKSx0aGlzLl90cmlnZ2VyKCJzdGFydCIsZSxpKX0sX3NsaWRlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcyxuLGE7dGhpcy5vcHRpb25zLnZhbHVlcyYmdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGg/KHM9dGhpcy52YWx1ZXModD8wOjEpLDI9PT10aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aCYmdGhpcy5vcHRpb25zLnJhbmdlPT09ITAmJigwPT09dCYmaT5zfHwxPT09dCYmcz5pKSYmKGk9cyksaSE9PXRoaXMudmFsdWVzKHQpJiYobj10aGlzLnZhbHVlcygpLG5bdF09aSxhPXRoaXMuX3RyaWdnZXIoInNsaWRlIixlLHtoYW5kbGU6dGhpcy5oYW5kbGVzW3RdLHZhbHVlOmksdmFsdWVzOm59KSxzPXRoaXMudmFsdWVzKHQ/MDoxKSxhIT09ITEmJnRoaXMudmFsdWVzKHQsaSkpKTppIT09dGhpcy52YWx1ZSgpJiYoYT10aGlzLl90cmlnZ2VyKCJzbGlkZSIsZSx7aGFuZGxlOnRoaXMuaGFuZGxlc1t0XSx2YWx1ZTppfSksYSE9PSExJiZ0aGlzLnZhbHVlKGkpKX0sX3N0b3A6ZnVuY3Rpb24oZSx0KXt2YXIgaT17aGFuZGxlOnRoaXMuaGFuZGxlc1t0XSx2YWx1ZTp0aGlzLnZhbHVlKCl9O3RoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoJiYoaS52YWx1ZT10aGlzLnZhbHVlcyh0KSxpLnZhbHVlcz10aGlzLnZhbHVlcygpKSx0aGlzLl90cmlnZ2VyKCJzdG9wIixlLGkpfSxfY2hhbmdlOmZ1bmN0aW9uKGUsdCl7aWYoIXRoaXMuX2tleVNsaWRpbmcmJiF0aGlzLl9tb3VzZVNsaWRpbmcpe3ZhciBpPXtoYW5kbGU6dGhpcy5oYW5kbGVzW3RdLHZhbHVlOnRoaXMudmFsdWUoKX07dGhpcy5vcHRpb25zLnZhbHVlcyYmdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGgmJihpLnZhbHVlPXRoaXMudmFsdWVzKHQpLGkudmFsdWVzPXRoaXMudmFsdWVzKCkpLHRoaXMuX2xhc3RDaGFuZ2VkVmFsdWU9dCx0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLGUsaSl9fSx2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5vcHRpb25zLnZhbHVlPXRoaXMuX3RyaW1BbGlnblZhbHVlKGUpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpLHRoaXMuX2NoYW5nZShudWxsLDApLHZvaWQgMCk6dGhpcy5fdmFsdWUoKX0sdmFsdWVzOmZ1bmN0aW9uKHQsaSl7dmFyIHMsbixhO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlyZXR1cm4gdGhpcy5vcHRpb25zLnZhbHVlc1t0XT10aGlzLl90cmltQWxpZ25WYWx1ZShpKSx0aGlzLl9yZWZyZXNoVmFsdWUoKSx0aGlzLl9jaGFuZ2UobnVsbCx0KSx2b2lkIDA7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuX3ZhbHVlcygpO2lmKCFlLmlzQXJyYXkoYXJndW1lbnRzWzBdKSlyZXR1cm4gdGhpcy5vcHRpb25zLnZhbHVlcyYmdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGg/dGhpcy5fdmFsdWVzKHQpOnRoaXMudmFsdWUoKTtmb3Iocz10aGlzLm9wdGlvbnMudmFsdWVzLG49YXJndW1lbnRzWzBdLGE9MDtzLmxlbmd0aD5hO2ErPTEpc1thXT10aGlzLl90cmltQWxpZ25WYWx1ZShuW2FdKSx0aGlzLl9jaGFuZ2UobnVsbCxhKTt0aGlzLl9yZWZyZXNoVmFsdWUoKX0sX3NldE9wdGlvbjpmdW5jdGlvbih0LGkpe3ZhciBzLG49MDtzd2l0Y2goInJhbmdlIj09PXQmJnRoaXMub3B0aW9ucy5yYW5nZT09PSEwJiYoIm1pbiI9PT1pPyh0aGlzLm9wdGlvbnMudmFsdWU9dGhpcy5fdmFsdWVzKDApLHRoaXMub3B0aW9ucy52YWx1ZXM9bnVsbCk6Im1heCI9PT1pJiYodGhpcy5vcHRpb25zLnZhbHVlPXRoaXMuX3ZhbHVlcyh0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aC0xKSx0aGlzLm9wdGlvbnMudmFsdWVzPW51bGwpKSxlLmlzQXJyYXkodGhpcy5vcHRpb25zLnZhbHVlcykmJihuPXRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoKSwiZGlzYWJsZWQiPT09dCYmdGhpcy5lbGVtZW50LnRvZ2dsZUNsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIsISFpKSx0aGlzLl9zdXBlcih0LGkpLHQpe2Nhc2Uib3JpZW50YXRpb24iOnRoaXMuX2RldGVjdE9yaWVudGF0aW9uKCksdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zbGlkZXItaG9yaXpvbnRhbCB1aS1zbGlkZXItdmVydGljYWwiKS5hZGRDbGFzcygidWktc2xpZGVyLSIrdGhpcy5vcmllbnRhdGlvbiksdGhpcy5fcmVmcmVzaFZhbHVlKCksdGhpcy5oYW5kbGVzLmNzcygiaG9yaXpvbnRhbCI9PT1pPyJib3R0b20iOiJsZWZ0IiwiIik7YnJlYWs7Y2FzZSJ2YWx1ZSI6dGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9yZWZyZXNoVmFsdWUoKSx0aGlzLl9jaGFuZ2UobnVsbCwwKSx0aGlzLl9hbmltYXRlT2ZmPSExO2JyZWFrO2Nhc2UidmFsdWVzIjpmb3IodGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9yZWZyZXNoVmFsdWUoKSxzPTA7bj5zO3MrPTEpdGhpcy5fY2hhbmdlKG51bGwscyk7dGhpcy5fYW5pbWF0ZU9mZj0hMTticmVhaztjYXNlInN0ZXAiOmNhc2UibWluIjpjYXNlIm1heCI6dGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9jYWxjdWxhdGVOZXdNYXgoKSx0aGlzLl9yZWZyZXNoVmFsdWUoKSx0aGlzLl9hbmltYXRlT2ZmPSExO2JyZWFrO2Nhc2UicmFuZ2UiOnRoaXMuX2FuaW1hdGVPZmY9ITAsdGhpcy5fcmVmcmVzaCgpLHRoaXMuX2FuaW1hdGVPZmY9ITF9fSxfdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnMudmFsdWU7cmV0dXJuIGU9dGhpcy5fdHJpbUFsaWduVmFsdWUoZSl9LF92YWx1ZXM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxzO2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHQ9dGhpcy5vcHRpb25zLnZhbHVlc1tlXSx0PXRoaXMuX3RyaW1BbGlnblZhbHVlKHQpO2lmKHRoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoKXtmb3IoaT10aGlzLm9wdGlvbnMudmFsdWVzLnNsaWNlKCkscz0wO2kubGVuZ3RoPnM7cys9MSlpW3NdPXRoaXMuX3RyaW1BbGlnblZhbHVlKGlbc10pO3JldHVybiBpfXJldHVybltdfSxfdHJpbUFsaWduVmFsdWU6ZnVuY3Rpb24oZSl7aWYodGhpcy5fdmFsdWVNaW4oKT49ZSlyZXR1cm4gdGhpcy5fdmFsdWVNaW4oKTtpZihlPj10aGlzLl92YWx1ZU1heCgpKXJldHVybiB0aGlzLl92YWx1ZU1heCgpO3ZhciB0PXRoaXMub3B0aW9ucy5zdGVwPjA/dGhpcy5vcHRpb25zLnN0ZXA6MSxpPShlLXRoaXMuX3ZhbHVlTWluKCkpJXQscz1lLWk7cmV0dXJuIDIqTWF0aC5hYnMoaSk+PXQmJihzKz1pPjA/dDotdCkscGFyc2VGbG9hdChzLnRvRml4ZWQoNSkpfSxfY2FsY3VsYXRlTmV3TWF4OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLm1heCx0PXRoaXMuX3ZhbHVlTWluKCksaT10aGlzLm9wdGlvbnMuc3RlcCxzPU1hdGguZmxvb3IoKyhlLXQpLnRvRml4ZWQodGhpcy5fcHJlY2lzaW9uKCkpL2kpKmk7ZT1zK3QsdGhpcy5tYXg9cGFyc2VGbG9hdChlLnRvRml4ZWQodGhpcy5fcHJlY2lzaW9uKCkpKX0sX3ByZWNpc2lvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3ByZWNpc2lvbk9mKHRoaXMub3B0aW9ucy5zdGVwKTtyZXR1cm4gbnVsbCE9PXRoaXMub3B0aW9ucy5taW4mJihlPU1hdGgubWF4KGUsdGhpcy5fcHJlY2lzaW9uT2YodGhpcy5vcHRpb25zLm1pbikpKSxlfSxfcHJlY2lzaW9uT2Y6ZnVuY3Rpb24oZSl7dmFyIHQ9IiIrZSxpPXQuaW5kZXhPZigiLiIpO3JldHVybi0xPT09aT8wOnQubGVuZ3RoLWktMX0sX3ZhbHVlTWluOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5taW59LF92YWx1ZU1heDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1heH0sX3JlZnJlc2hWYWx1ZTpmdW5jdGlvbigpe3ZhciB0LGkscyxuLGEsbz10aGlzLm9wdGlvbnMucmFuZ2Uscj10aGlzLm9wdGlvbnMsaD10aGlzLGw9dGhpcy5fYW5pbWF0ZU9mZj8hMTpyLmFuaW1hdGUsdT17fTt0aGlzLm9wdGlvbnMudmFsdWVzJiZ0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aD90aGlzLmhhbmRsZXMuZWFjaChmdW5jdGlvbihzKXtpPTEwMCooKGgudmFsdWVzKHMpLWguX3ZhbHVlTWluKCkpLyhoLl92YWx1ZU1heCgpLWguX3ZhbHVlTWluKCkpKSx1WyJob3Jpem9udGFsIj09PWgub3JpZW50YXRpb24/ImxlZnQiOiJib3R0b20iXT1pKyIlIixlKHRoaXMpLnN0b3AoMSwxKVtsPyJhbmltYXRlIjoiY3NzIl0odSxyLmFuaW1hdGUpLGgub3B0aW9ucy5yYW5nZT09PSEwJiYoImhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbj8oMD09PXMmJmgucmFuZ2Uuc3RvcCgxLDEpW2w/ImFuaW1hdGUiOiJjc3MiXSh7bGVmdDppKyIlIn0sci5hbmltYXRlKSwxPT09cyYmaC5yYW5nZVtsPyJhbmltYXRlIjoiY3NzIl0oe3dpZHRoOmktdCsiJSJ9LHtxdWV1ZTohMSxkdXJhdGlvbjpyLmFuaW1hdGV9KSk6KDA9PT1zJiZoLnJhbmdlLnN0b3AoMSwxKVtsPyJhbmltYXRlIjoiY3NzIl0oe2JvdHRvbTppKyIlIn0sci5hbmltYXRlKSwxPT09cyYmaC5yYW5nZVtsPyJhbmltYXRlIjoiY3NzIl0oe2hlaWdodDppLXQrIiUifSx7cXVldWU6ITEsZHVyYXRpb246ci5hbmltYXRlfSkpKSx0PWl9KToocz10aGlzLnZhbHVlKCksbj10aGlzLl92YWx1ZU1pbigpLGE9dGhpcy5fdmFsdWVNYXgoKSxpPWEhPT1uPzEwMCooKHMtbikvKGEtbikpOjAsdVsiaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uPyJsZWZ0IjoiYm90dG9tIl09aSsiJSIsdGhpcy5oYW5kbGUuc3RvcCgxLDEpW2w/ImFuaW1hdGUiOiJjc3MiXSh1LHIuYW5pbWF0ZSksIm1pbiI9PT1vJiYiaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uJiZ0aGlzLnJhbmdlLnN0b3AoMSwxKVtsPyJhbmltYXRlIjoiY3NzIl0oe3dpZHRoOmkrIiUifSxyLmFuaW1hdGUpLCJtYXgiPT09byYmImhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbiYmdGhpcy5yYW5nZVtsPyJhbmltYXRlIjoiY3NzIl0oe3dpZHRoOjEwMC1pKyIlIn0se3F1ZXVlOiExLGR1cmF0aW9uOnIuYW5pbWF0ZX0pLCJtaW4iPT09byYmInZlcnRpY2FsIj09PXRoaXMub3JpZW50YXRpb24mJnRoaXMucmFuZ2Uuc3RvcCgxLDEpW2w/ImFuaW1hdGUiOiJjc3MiXSh7aGVpZ2h0OmkrIiUifSxyLmFuaW1hdGUpLCJtYXgiPT09byYmInZlcnRpY2FsIj09PXRoaXMub3JpZW50YXRpb24mJnRoaXMucmFuZ2VbbD8iYW5pbWF0ZSI6ImNzcyJdKHtoZWlnaHQ6MTAwLWkrIiUifSx7cXVldWU6ITEsZHVyYXRpb246ci5hbmltYXRlfSkpfSxfaGFuZGxlRXZlbnRzOntrZXlkb3duOmZ1bmN0aW9uKHQpe3ZhciBpLHMsbixhLG89ZSh0LnRhcmdldCkuZGF0YSgidWktc2xpZGVyLWhhbmRsZS1pbmRleCIpO3N3aXRjaCh0LmtleUNvZGUpe2Nhc2UgZS51aS5rZXlDb2RlLkhPTUU6Y2FzZSBlLnVpLmtleUNvZGUuRU5EOmNhc2UgZS51aS5rZXlDb2RlLlBBR0VfVVA6Y2FzZSBlLnVpLmtleUNvZGUuUEFHRV9ET1dOOmNhc2UgZS51aS5rZXlDb2RlLlVQOmNhc2UgZS51aS5rZXlDb2RlLlJJR0hUOmNhc2UgZS51aS5rZXlDb2RlLkRPV046Y2FzZSBlLnVpLmtleUNvZGUuTEVGVDppZih0LnByZXZlbnREZWZhdWx0KCksIXRoaXMuX2tleVNsaWRpbmcmJih0aGlzLl9rZXlTbGlkaW5nPSEwLGUodC50YXJnZXQpLmFkZENsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKSxpPXRoaXMuX3N0YXJ0KHQsbyksaT09PSExKSlyZXR1cm59c3dpdGNoKGE9dGhpcy5vcHRpb25zLnN0ZXAscz1uPXRoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoP3RoaXMudmFsdWVzKG8pOnRoaXMudmFsdWUoKSx0LmtleUNvZGUpe2Nhc2UgZS51aS5rZXlDb2RlLkhPTUU6bj10aGlzLl92YWx1ZU1pbigpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkVORDpuPXRoaXMuX3ZhbHVlTWF4KCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuUEFHRV9VUDpuPXRoaXMuX3RyaW1BbGlnblZhbHVlKHMrKHRoaXMuX3ZhbHVlTWF4KCktdGhpcy5fdmFsdWVNaW4oKSkvdGhpcy5udW1QYWdlcyk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuUEFHRV9ET1dOOm49dGhpcy5fdHJpbUFsaWduVmFsdWUocy0odGhpcy5fdmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpKS90aGlzLm51bVBhZ2VzKTticmVhaztjYXNlIGUudWkua2V5Q29kZS5VUDpjYXNlIGUudWkua2V5Q29kZS5SSUdIVDppZihzPT09dGhpcy5fdmFsdWVNYXgoKSlyZXR1cm47bj10aGlzLl90cmltQWxpZ25WYWx1ZShzK2EpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkRPV046Y2FzZSBlLnVpLmtleUNvZGUuTEVGVDppZihzPT09dGhpcy5fdmFsdWVNaW4oKSlyZXR1cm47bj10aGlzLl90cmltQWxpZ25WYWx1ZShzLWEpfXRoaXMuX3NsaWRlKHQsbyxuKX0sa2V5dXA6ZnVuY3Rpb24odCl7dmFyIGk9ZSh0LnRhcmdldCkuZGF0YSgidWktc2xpZGVyLWhhbmRsZS1pbmRleCIpO3RoaXMuX2tleVNsaWRpbmcmJih0aGlzLl9rZXlTbGlkaW5nPSExLHRoaXMuX3N0b3AodCxpKSx0aGlzLl9jaGFuZ2UodCxpKSxlKHQudGFyZ2V0KS5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlIikpfX19KSxlLndpZGdldCgidWkuc3Bpbm5lciIse3ZlcnNpb246IjEuMTEuNCIsZGVmYXVsdEVsZW1lbnQ6IjxpbnB1dD4iLHdpZGdldEV2ZW50UHJlZml4OiJzcGluIixvcHRpb25zOntjdWx0dXJlOm51bGwsaWNvbnM6e2Rvd246InVpLWljb24tdHJpYW5nbGUtMS1zIix1cDoidWktaWNvbi10cmlhbmdsZS0xLW4ifSxpbmNyZW1lbnRhbDohMCxtYXg6bnVsbCxtaW46bnVsbCxudW1iZXJGb3JtYXQ6bnVsbCxwYWdlOjEwLHN0ZXA6MSxjaGFuZ2U6bnVsbCxzcGluOm51bGwsc3RhcnQ6bnVsbCxzdG9wOm51bGx9LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLl9zZXRPcHRpb24oIm1heCIsdGhpcy5vcHRpb25zLm1heCksdGhpcy5fc2V0T3B0aW9uKCJtaW4iLHRoaXMub3B0aW9ucy5taW4pLHRoaXMuX3NldE9wdGlvbigic3RlcCIsdGhpcy5vcHRpb25zLnN0ZXApLCIiIT09dGhpcy52YWx1ZSgpJiZ0aGlzLl92YWx1ZSh0aGlzLmVsZW1lbnQudmFsKCksITApLHRoaXMuX2RyYXcoKSx0aGlzLl9vbih0aGlzLl9ldmVudHMpLHRoaXMuX3JlZnJlc2goKSx0aGlzLl9vbih0aGlzLndpbmRvdyx7YmVmb3JldW5sb2FkOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoImF1dG9jb21wbGV0ZSIpfX0pfSxfZ2V0Q3JlYXRlT3B0aW9uczpmdW5jdGlvbigpe3ZhciB0PXt9LGk9dGhpcy5lbGVtZW50O3JldHVybiBlLmVhY2goWyJtaW4iLCJtYXgiLCJzdGVwIl0sZnVuY3Rpb24oZSxzKXt2YXIgbj1pLmF0dHIocyk7dm9pZCAwIT09biYmbi5sZW5ndGgmJih0W3NdPW4pfSksdH0sX2V2ZW50czp7a2V5ZG93bjpmdW5jdGlvbihlKXt0aGlzLl9zdGFydChlKSYmdGhpcy5fa2V5ZG93bihlKSYmZS5wcmV2ZW50RGVmYXVsdCgpfSxrZXl1cDoiX3N0b3AiLGZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5wcmV2aW91cz10aGlzLmVsZW1lbnQudmFsKCl9LGJsdXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY2FuY2VsQmx1cj8oZGVsZXRlIHRoaXMuY2FuY2VsQmx1cix2b2lkIDApOih0aGlzLl9zdG9wKCksdGhpcy5fcmVmcmVzaCgpLHRoaXMucHJldmlvdXMhPT10aGlzLmVsZW1lbnQudmFsKCkmJnRoaXMuX3RyaWdnZXIoImNoYW5nZSIsZSksdm9pZCAwKX0sbW91c2V3aGVlbDpmdW5jdGlvbihlLHQpe2lmKHQpe2lmKCF0aGlzLnNwaW5uaW5nJiYhdGhpcy5fc3RhcnQoZSkpcmV0dXJuITE7dGhpcy5fc3BpbigodD4wPzE6LTEpKnRoaXMub3B0aW9ucy5zdGVwLGUpLGNsZWFyVGltZW91dCh0aGlzLm1vdXNld2hlZWxUaW1lciksdGhpcy5tb3VzZXdoZWVsVGltZXI9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLnNwaW5uaW5nJiZ0aGlzLl9zdG9wKGUpfSwxMDApLGUucHJldmVudERlZmF1bHQoKX19LCJtb3VzZWRvd24gLnVpLXNwaW5uZXItYnV0dG9uIjpmdW5jdGlvbih0KXtmdW5jdGlvbiBpKCl7dmFyIGU9dGhpcy5lbGVtZW50WzBdPT09dGhpcy5kb2N1bWVudFswXS5hY3RpdmVFbGVtZW50O2V8fCh0aGlzLmVsZW1lbnQuZm9jdXMoKSx0aGlzLnByZXZpb3VzPXMsdGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLnByZXZpb3VzPXN9KSl9dmFyIHM7cz10aGlzLmVsZW1lbnRbMF09PT10aGlzLmRvY3VtZW50WzBdLmFjdGl2ZUVsZW1lbnQ/dGhpcy5wcmV2aW91czp0aGlzLmVsZW1lbnQudmFsKCksdC5wcmV2ZW50RGVmYXVsdCgpLGkuY2FsbCh0aGlzKSx0aGlzLmNhbmNlbEJsdXI9ITAsdGhpcy5fZGVsYXkoZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5jYW5jZWxCbHVyLGkuY2FsbCh0aGlzKX0pLHRoaXMuX3N0YXJ0KHQpIT09ITEmJnRoaXMuX3JlcGVhdChudWxsLGUodC5jdXJyZW50VGFyZ2V0KS5oYXNDbGFzcygidWktc3Bpbm5lci11cCIpPzE6LTEsdCl9LCJtb3VzZXVwIC51aS1zcGlubmVyLWJ1dHRvbiI6Il9zdG9wIiwibW91c2VlbnRlciAudWktc3Bpbm5lci1idXR0b24iOmZ1bmN0aW9uKHQpe3JldHVybiBlKHQuY3VycmVudFRhcmdldCkuaGFzQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpP3RoaXMuX3N0YXJ0KHQpPT09ITE/ITE6KHRoaXMuX3JlcGVhdChudWxsLGUodC5jdXJyZW50VGFyZ2V0KS5oYXNDbGFzcygidWktc3Bpbm5lci11cCIpPzE6LTEsdCksdm9pZCAwKTp2b2lkIDB9LCJtb3VzZWxlYXZlIC51aS1zcGlubmVyLWJ1dHRvbiI6Il9zdG9wIn0sX2RyYXc6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnVpU3Bpbm5lcj10aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXNwaW5uZXItaW5wdXQiKS5hdHRyKCJhdXRvY29tcGxldGUiLCJvZmYiKS53cmFwKHRoaXMuX3VpU3Bpbm5lckh0bWwoKSkucGFyZW50KCkuYXBwZW5kKHRoaXMuX2J1dHRvbkh0bWwoKSk7dGhpcy5lbGVtZW50LmF0dHIoInJvbGUiLCJzcGluYnV0dG9uIiksdGhpcy5idXR0b25zPWUuZmluZCgiLnVpLXNwaW5uZXItYnV0dG9uIikuYXR0cigidGFiSW5kZXgiLC0xKS5idXR0b24oKS5yZW1vdmVDbGFzcygidWktY29ybmVyLWFsbCIpLHRoaXMuYnV0dG9ucy5oZWlnaHQoKT5NYXRoLmNlaWwoLjUqZS5oZWlnaHQoKSkmJmUuaGVpZ2h0KCk+MCYmZS5oZWlnaHQoZS5oZWlnaHQoKSksdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLmRpc2FibGUoKX0sX2tleWRvd246ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5vcHRpb25zLHM9ZS51aS5rZXlDb2RlO3N3aXRjaCh0LmtleUNvZGUpe2Nhc2Ugcy5VUDpyZXR1cm4gdGhpcy5fcmVwZWF0KG51bGwsMSx0KSwhMDtjYXNlIHMuRE9XTjpyZXR1cm4gdGhpcy5fcmVwZWF0KG51bGwsLTEsdCksITA7Y2FzZSBzLlBBR0VfVVA6cmV0dXJuIHRoaXMuX3JlcGVhdChudWxsLGkucGFnZSx0KSwhMDtjYXNlIHMuUEFHRV9ET1dOOnJldHVybiB0aGlzLl9yZXBlYXQobnVsbCwtaS5wYWdlLHQpLCEwfXJldHVybiExfSxfdWlTcGlubmVySHRtbDpmdW5jdGlvbigpe3JldHVybiI8c3BhbiBjbGFzcz0ndWktc3Bpbm5lciB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCc+PC9zcGFuPiJ9LF9idXR0b25IdG1sOmZ1bmN0aW9uKCl7cmV0dXJuIjxhIGNsYXNzPSd1aS1zcGlubmVyLWJ1dHRvbiB1aS1zcGlubmVyLXVwIHVpLWNvcm5lci10cic+PHNwYW4gY2xhc3M9J3VpLWljb24gIit0aGlzLm9wdGlvbnMuaWNvbnMudXArIic+JiM5NjUwOzwvc3Bhbj4iKyI8L2E+IisiPGEgY2xhc3M9J3VpLXNwaW5uZXItYnV0dG9uIHVpLXNwaW5uZXItZG93biB1aS1jb3JuZXItYnInPiIrIjxzcGFuIGNsYXNzPSd1aS1pY29uICIrdGhpcy5vcHRpb25zLmljb25zLmRvd24rIic+JiM5NjYwOzwvc3Bhbj4iKyI8L2E+In0sX3N0YXJ0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNwaW5uaW5nfHx0aGlzLl90cmlnZ2VyKCJzdGFydCIsZSkhPT0hMT8odGhpcy5jb3VudGVyfHwodGhpcy5jb3VudGVyPTEpLHRoaXMuc3Bpbm5pbmc9ITAsITApOiExfSxfcmVwZWF0OmZ1bmN0aW9uKGUsdCxpKXtlPWV8fDUwMCxjbGVhclRpbWVvdXQodGhpcy50aW1lciksdGhpcy50aW1lcj10aGlzLl9kZWxheShmdW5jdGlvbigpe3RoaXMuX3JlcGVhdCg0MCx0LGkpfSxlKSx0aGlzLl9zcGluKHQqdGhpcy5vcHRpb25zLnN0ZXAsaSl9LF9zcGluOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy52YWx1ZSgpfHwwO3RoaXMuY291bnRlcnx8KHRoaXMuY291bnRlcj0xKSxpPXRoaXMuX2FkanVzdFZhbHVlKGkrZSp0aGlzLl9pbmNyZW1lbnQodGhpcy5jb3VudGVyKSksdGhpcy5zcGlubmluZyYmdGhpcy5fdHJpZ2dlcigic3BpbiIsdCx7dmFsdWU6aX0pPT09ITF8fCh0aGlzLl92YWx1ZShpKSx0aGlzLmNvdW50ZXIrKyl9LF9pbmNyZW1lbnQ6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5vcHRpb25zLmluY3JlbWVudGFsO3JldHVybiBpP2UuaXNGdW5jdGlvbihpKT9pKHQpOk1hdGguZmxvb3IodCp0KnQvNWU0LXQqdC81MDArMTcqdC8yMDArMSk6MX0sX3ByZWNpc2lvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3ByZWNpc2lvbk9mKHRoaXMub3B0aW9ucy5zdGVwKTtyZXR1cm4gbnVsbCE9PXRoaXMub3B0aW9ucy5taW4mJihlPU1hdGgubWF4KGUsdGhpcy5fcHJlY2lzaW9uT2YodGhpcy5vcHRpb25zLm1pbikpKSxlfSxfcHJlY2lzaW9uT2Y6ZnVuY3Rpb24oZSl7dmFyIHQ9IiIrZSxpPXQuaW5kZXhPZigiLiIpO3JldHVybi0xPT09aT8wOnQubGVuZ3RoLWktMX0sX2FkanVzdFZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LGkscz10aGlzLm9wdGlvbnM7cmV0dXJuIHQ9bnVsbCE9PXMubWluP3MubWluOjAsaT1lLXQsaT1NYXRoLnJvdW5kKGkvcy5zdGVwKSpzLnN0ZXAsZT10K2ksZT1wYXJzZUZsb2F0KGUudG9GaXhlZCh0aGlzLl9wcmVjaXNpb24oKSkpLG51bGwhPT1zLm1heCYmZT5zLm1heD9zLm1heDpudWxsIT09cy5taW4mJnMubWluPmU/cy5taW46ZX0sX3N0b3A6ZnVuY3Rpb24oZSl7dGhpcy5zcGlubmluZyYmKGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKSxjbGVhclRpbWVvdXQodGhpcy5tb3VzZXdoZWVsVGltZXIpLHRoaXMuY291bnRlcj0wLHRoaXMuc3Bpbm5pbmc9ITEsdGhpcy5fdHJpZ2dlcigic3RvcCIsZSkpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7aWYoImN1bHR1cmUiPT09ZXx8Im51bWJlckZvcm1hdCI9PT1lKXt2YXIgaT10aGlzLl9wYXJzZSh0aGlzLmVsZW1lbnQudmFsKCkpO3JldHVybiB0aGlzLm9wdGlvbnNbZV09dCx0aGlzLmVsZW1lbnQudmFsKHRoaXMuX2Zvcm1hdChpKSksdm9pZCAwfSgibWF4Ij09PWV8fCJtaW4iPT09ZXx8InN0ZXAiPT09ZSkmJiJzdHJpbmciPT10eXBlb2YgdCYmKHQ9dGhpcy5fcGFyc2UodCkpLCJpY29ucyI9PT1lJiYodGhpcy5idXR0b25zLmZpcnN0KCkuZmluZCgiLnVpLWljb24iKS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaWNvbnMudXApLmFkZENsYXNzKHQudXApLHRoaXMuYnV0dG9ucy5sYXN0KCkuZmluZCgiLnVpLWljb24iKS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaWNvbnMuZG93bikuYWRkQ2xhc3ModC5kb3duKSksdGhpcy5fc3VwZXIoZSx0KSwiZGlzYWJsZWQiPT09ZSYmKHRoaXMud2lkZ2V0KCkudG9nZ2xlQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIiwhIXQpLHRoaXMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIsISF0KSx0aGlzLmJ1dHRvbnMuYnV0dG9uKHQ/ImRpc2FibGUiOiJlbmFibGUiKSl9LF9zZXRPcHRpb25zOnMoZnVuY3Rpb24oZSl7dGhpcy5fc3VwZXIoZSl9KSxfcGFyc2U6ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiYiIiE9PWUmJihlPXdpbmRvdy5HbG9iYWxpemUmJnRoaXMub3B0aW9ucy5udW1iZXJGb3JtYXQ/R2xvYmFsaXplLnBhcnNlRmxvYXQoZSwxMCx0aGlzLm9wdGlvbnMuY3VsdHVyZSk6K2UpLCIiPT09ZXx8aXNOYU4oZSk/bnVsbDplCn0sX2Zvcm1hdDpmdW5jdGlvbihlKXtyZXR1cm4iIj09PWU/IiI6d2luZG93Lkdsb2JhbGl6ZSYmdGhpcy5vcHRpb25zLm51bWJlckZvcm1hdD9HbG9iYWxpemUuZm9ybWF0KGUsdGhpcy5vcHRpb25zLm51bWJlckZvcm1hdCx0aGlzLm9wdGlvbnMuY3VsdHVyZSk6ZX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuYXR0cih7ImFyaWEtdmFsdWVtaW4iOnRoaXMub3B0aW9ucy5taW4sImFyaWEtdmFsdWVtYXgiOnRoaXMub3B0aW9ucy5tYXgsImFyaWEtdmFsdWVub3ciOnRoaXMuX3BhcnNlKHRoaXMuZWxlbWVudC52YWwoKSl9KX0saXNWYWxpZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMudmFsdWUoKTtyZXR1cm4gbnVsbD09PWU/ITE6ZT09PXRoaXMuX2FkanVzdFZhbHVlKGUpfSxfdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaTsiIiE9PWUmJihpPXRoaXMuX3BhcnNlKGUpLG51bGwhPT1pJiYodHx8KGk9dGhpcy5fYWRqdXN0VmFsdWUoaSkpLGU9dGhpcy5fZm9ybWF0KGkpKSksdGhpcy5lbGVtZW50LnZhbChlKSx0aGlzLl9yZWZyZXNoKCl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zcGlubmVyLWlucHV0IikucHJvcCgiZGlzYWJsZWQiLCExKS5yZW1vdmVBdHRyKCJhdXRvY29tcGxldGUiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0cigiYXJpYS12YWx1ZW1pbiIpLnJlbW92ZUF0dHIoImFyaWEtdmFsdWVtYXgiKS5yZW1vdmVBdHRyKCJhcmlhLXZhbHVlbm93IiksdGhpcy51aVNwaW5uZXIucmVwbGFjZVdpdGgodGhpcy5lbGVtZW50KX0sc3RlcFVwOnMoZnVuY3Rpb24oZSl7dGhpcy5fc3RlcFVwKGUpfSksX3N0ZXBVcDpmdW5jdGlvbihlKXt0aGlzLl9zdGFydCgpJiYodGhpcy5fc3BpbigoZXx8MSkqdGhpcy5vcHRpb25zLnN0ZXApLHRoaXMuX3N0b3AoKSl9LHN0ZXBEb3duOnMoZnVuY3Rpb24oZSl7dGhpcy5fc3RlcERvd24oZSl9KSxfc3RlcERvd246ZnVuY3Rpb24oZSl7dGhpcy5fc3RhcnQoKSYmKHRoaXMuX3NwaW4oKGV8fDEpKi10aGlzLm9wdGlvbnMuc3RlcCksdGhpcy5fc3RvcCgpKX0scGFnZVVwOnMoZnVuY3Rpb24oZSl7dGhpcy5fc3RlcFVwKChlfHwxKSp0aGlzLm9wdGlvbnMucGFnZSl9KSxwYWdlRG93bjpzKGZ1bmN0aW9uKGUpe3RoaXMuX3N0ZXBEb3duKChlfHwxKSp0aGlzLm9wdGlvbnMucGFnZSl9KSx2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocyh0aGlzLl92YWx1ZSkuY2FsbCh0aGlzLGUpLHZvaWQgMCk6dGhpcy5fcGFyc2UodGhpcy5lbGVtZW50LnZhbCgpKX0sd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudWlTcGlubmVyfX0pLGUud2lkZ2V0KCJ1aS50YWJzIix7dmVyc2lvbjoiMS4xMS40IixkZWxheTozMDAsb3B0aW9uczp7YWN0aXZlOm51bGwsY29sbGFwc2libGU6ITEsZXZlbnQ6ImNsaWNrIixoZWlnaHRTdHlsZToiY29udGVudCIsaGlkZTpudWxsLHNob3c6bnVsbCxhY3RpdmF0ZTpudWxsLGJlZm9yZUFjdGl2YXRlOm51bGwsYmVmb3JlTG9hZDpudWxsLGxvYWQ6bnVsbH0sX2lzTG9jYWw6ZnVuY3Rpb24oKXt2YXIgZT0vIy4qJC87cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBpLHM7dD10LmNsb25lTm9kZSghMSksaT10LmhyZWYucmVwbGFjZShlLCIiKSxzPWxvY2F0aW9uLmhyZWYucmVwbGFjZShlLCIiKTt0cnl7aT1kZWNvZGVVUklDb21wb25lbnQoaSl9Y2F0Y2gobil7fXRyeXtzPWRlY29kZVVSSUNvbXBvbmVudChzKX1jYXRjaChuKXt9cmV0dXJuIHQuaGFzaC5sZW5ndGg+MSYmaT09PXN9fSgpLF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGk9dGhpcy5vcHRpb25zO3RoaXMucnVubmluZz0hMSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXRhYnMgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiKS50b2dnbGVDbGFzcygidWktdGFicy1jb2xsYXBzaWJsZSIsaS5jb2xsYXBzaWJsZSksdGhpcy5fcHJvY2Vzc1RhYnMoKSxpLmFjdGl2ZT10aGlzLl9pbml0aWFsQWN0aXZlKCksZS5pc0FycmF5KGkuZGlzYWJsZWQpJiYoaS5kaXNhYmxlZD1lLnVuaXF1ZShpLmRpc2FibGVkLmNvbmNhdChlLm1hcCh0aGlzLnRhYnMuZmlsdGVyKCIudWktc3RhdGUtZGlzYWJsZWQiKSxmdW5jdGlvbihlKXtyZXR1cm4gdC50YWJzLmluZGV4KGUpfSkpKS5zb3J0KCkpLHRoaXMuYWN0aXZlPXRoaXMub3B0aW9ucy5hY3RpdmUhPT0hMSYmdGhpcy5hbmNob3JzLmxlbmd0aD90aGlzLl9maW5kQWN0aXZlKGkuYWN0aXZlKTplKCksdGhpcy5fcmVmcmVzaCgpLHRoaXMuYWN0aXZlLmxlbmd0aCYmdGhpcy5sb2FkKGkuYWN0aXZlKX0sX2luaXRpYWxBY3RpdmU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMuYWN0aXZlLGk9dGhpcy5vcHRpb25zLmNvbGxhcHNpYmxlLHM9bG9jYXRpb24uaGFzaC5zdWJzdHJpbmcoMSk7cmV0dXJuIG51bGw9PT10JiYocyYmdGhpcy50YWJzLmVhY2goZnVuY3Rpb24oaSxuKXtyZXR1cm4gZShuKS5hdHRyKCJhcmlhLWNvbnRyb2xzIik9PT1zPyh0PWksITEpOnZvaWQgMH0pLG51bGw9PT10JiYodD10aGlzLnRhYnMuaW5kZXgodGhpcy50YWJzLmZpbHRlcigiLnVpLXRhYnMtYWN0aXZlIikpKSwobnVsbD09PXR8fC0xPT09dCkmJih0PXRoaXMudGFicy5sZW5ndGg/MDohMSkpLHQhPT0hMSYmKHQ9dGhpcy50YWJzLmluZGV4KHRoaXMudGFicy5lcSh0KSksLTE9PT10JiYodD1pPyExOjApKSwhaSYmdD09PSExJiZ0aGlzLmFuY2hvcnMubGVuZ3RoJiYodD0wKSx0fSxfZ2V0Q3JlYXRlRXZlbnREYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3RhYjp0aGlzLmFjdGl2ZSxwYW5lbDp0aGlzLmFjdGl2ZS5sZW5ndGg/dGhpcy5fZ2V0UGFuZWxGb3JUYWIodGhpcy5hY3RpdmUpOmUoKX19LF90YWJLZXlkb3duOmZ1bmN0aW9uKHQpe3ZhciBpPWUodGhpcy5kb2N1bWVudFswXS5hY3RpdmVFbGVtZW50KS5jbG9zZXN0KCJsaSIpLHM9dGhpcy50YWJzLmluZGV4KGkpLG49ITA7aWYoIXRoaXMuX2hhbmRsZVBhZ2VOYXYodCkpe3N3aXRjaCh0LmtleUNvZGUpe2Nhc2UgZS51aS5rZXlDb2RlLlJJR0hUOmNhc2UgZS51aS5rZXlDb2RlLkRPV046cysrO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLlVQOmNhc2UgZS51aS5rZXlDb2RlLkxFRlQ6bj0hMSxzLS07YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRU5EOnM9dGhpcy5hbmNob3JzLmxlbmd0aC0xO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkhPTUU6cz0wO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLlNQQUNFOnJldHVybiB0LnByZXZlbnREZWZhdWx0KCksY2xlYXJUaW1lb3V0KHRoaXMuYWN0aXZhdGluZyksdGhpcy5fYWN0aXZhdGUocyksdm9pZCAwO2Nhc2UgZS51aS5rZXlDb2RlLkVOVEVSOnJldHVybiB0LnByZXZlbnREZWZhdWx0KCksY2xlYXJUaW1lb3V0KHRoaXMuYWN0aXZhdGluZyksdGhpcy5fYWN0aXZhdGUocz09PXRoaXMub3B0aW9ucy5hY3RpdmU/ITE6cyksdm9pZCAwO2RlZmF1bHQ6cmV0dXJufXQucHJldmVudERlZmF1bHQoKSxjbGVhclRpbWVvdXQodGhpcy5hY3RpdmF0aW5nKSxzPXRoaXMuX2ZvY3VzTmV4dFRhYihzLG4pLHQuY3RybEtleXx8dC5tZXRhS2V5fHwoaS5hdHRyKCJhcmlhLXNlbGVjdGVkIiwiZmFsc2UiKSx0aGlzLnRhYnMuZXEocykuYXR0cigiYXJpYS1zZWxlY3RlZCIsInRydWUiKSx0aGlzLmFjdGl2YXRpbmc9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLm9wdGlvbigiYWN0aXZlIixzKX0sdGhpcy5kZWxheSkpfX0sX3BhbmVsS2V5ZG93bjpmdW5jdGlvbih0KXt0aGlzLl9oYW5kbGVQYWdlTmF2KHQpfHx0LmN0cmxLZXkmJnQua2V5Q29kZT09PWUudWkua2V5Q29kZS5VUCYmKHQucHJldmVudERlZmF1bHQoKSx0aGlzLmFjdGl2ZS5mb2N1cygpKX0sX2hhbmRsZVBhZ2VOYXY6ZnVuY3Rpb24odCl7cmV0dXJuIHQuYWx0S2V5JiZ0LmtleUNvZGU9PT1lLnVpLmtleUNvZGUuUEFHRV9VUD8odGhpcy5fYWN0aXZhdGUodGhpcy5fZm9jdXNOZXh0VGFiKHRoaXMub3B0aW9ucy5hY3RpdmUtMSwhMSkpLCEwKTp0LmFsdEtleSYmdC5rZXlDb2RlPT09ZS51aS5rZXlDb2RlLlBBR0VfRE9XTj8odGhpcy5fYWN0aXZhdGUodGhpcy5fZm9jdXNOZXh0VGFiKHRoaXMub3B0aW9ucy5hY3RpdmUrMSwhMCkpLCEwKTp2b2lkIDB9LF9maW5kTmV4dFRhYjpmdW5jdGlvbih0LGkpe2Z1bmN0aW9uIHMoKXtyZXR1cm4gdD5uJiYodD0wKSwwPnQmJih0PW4pLHR9Zm9yKHZhciBuPXRoaXMudGFicy5sZW5ndGgtMTstMSE9PWUuaW5BcnJheShzKCksdGhpcy5vcHRpb25zLmRpc2FibGVkKTspdD1pP3QrMTp0LTE7cmV0dXJuIHR9LF9mb2N1c05leHRUYWI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT10aGlzLl9maW5kTmV4dFRhYihlLHQpLHRoaXMudGFicy5lcShlKS5mb2N1cygpLGV9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4iYWN0aXZlIj09PWU/KHRoaXMuX2FjdGl2YXRlKHQpLHZvaWQgMCk6ImRpc2FibGVkIj09PWU/KHRoaXMuX3NldHVwRGlzYWJsZWQodCksdm9pZCAwKToodGhpcy5fc3VwZXIoZSx0KSwiY29sbGFwc2libGUiPT09ZSYmKHRoaXMuZWxlbWVudC50b2dnbGVDbGFzcygidWktdGFicy1jb2xsYXBzaWJsZSIsdCksdHx8dGhpcy5vcHRpb25zLmFjdGl2ZSE9PSExfHx0aGlzLl9hY3RpdmF0ZSgwKSksImV2ZW50Ij09PWUmJnRoaXMuX3NldHVwRXZlbnRzKHQpLCJoZWlnaHRTdHlsZSI9PT1lJiZ0aGlzLl9zZXR1cEhlaWdodFN0eWxlKHQpLHZvaWQgMCl9LF9zYW5pdGl6ZVNlbGVjdG9yOmZ1bmN0aW9uKGUpe3JldHVybiBlP2UucmVwbGFjZSgvWyEiJCUmJygpKissLlwvOjs8PT4/QFxbXF1cXmB7fH1+XS9nLCJcXCQmIik6IiJ9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMsaT10aGlzLnRhYmxpc3QuY2hpbGRyZW4oIjpoYXMoYVtocmVmXSkiKTt0LmRpc2FibGVkPWUubWFwKGkuZmlsdGVyKCIudWktc3RhdGUtZGlzYWJsZWQiKSxmdW5jdGlvbihlKXtyZXR1cm4gaS5pbmRleChlKX0pLHRoaXMuX3Byb2Nlc3NUYWJzKCksdC5hY3RpdmUhPT0hMSYmdGhpcy5hbmNob3JzLmxlbmd0aD90aGlzLmFjdGl2ZS5sZW5ndGgmJiFlLmNvbnRhaW5zKHRoaXMudGFibGlzdFswXSx0aGlzLmFjdGl2ZVswXSk/dGhpcy50YWJzLmxlbmd0aD09PXQuZGlzYWJsZWQubGVuZ3RoPyh0LmFjdGl2ZT0hMSx0aGlzLmFjdGl2ZT1lKCkpOnRoaXMuX2FjdGl2YXRlKHRoaXMuX2ZpbmROZXh0VGFiKE1hdGgubWF4KDAsdC5hY3RpdmUtMSksITEpKTp0LmFjdGl2ZT10aGlzLnRhYnMuaW5kZXgodGhpcy5hY3RpdmUpOih0LmFjdGl2ZT0hMSx0aGlzLmFjdGl2ZT1lKCkpLHRoaXMuX3JlZnJlc2goKX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt0aGlzLl9zZXR1cERpc2FibGVkKHRoaXMub3B0aW9ucy5kaXNhYmxlZCksdGhpcy5fc2V0dXBFdmVudHModGhpcy5vcHRpb25zLmV2ZW50KSx0aGlzLl9zZXR1cEhlaWdodFN0eWxlKHRoaXMub3B0aW9ucy5oZWlnaHRTdHlsZSksdGhpcy50YWJzLm5vdCh0aGlzLmFjdGl2ZSkuYXR0cih7ImFyaWEtc2VsZWN0ZWQiOiJmYWxzZSIsImFyaWEtZXhwYW5kZWQiOiJmYWxzZSIsdGFiSW5kZXg6LTF9KSx0aGlzLnBhbmVscy5ub3QodGhpcy5fZ2V0UGFuZWxGb3JUYWIodGhpcy5hY3RpdmUpKS5oaWRlKCkuYXR0cih7ImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KSx0aGlzLmFjdGl2ZS5sZW5ndGg/KHRoaXMuYWN0aXZlLmFkZENsYXNzKCJ1aS10YWJzLWFjdGl2ZSB1aS1zdGF0ZS1hY3RpdmUiKS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLCJhcmlhLWV4cGFuZGVkIjoidHJ1ZSIsdGFiSW5kZXg6MH0pLHRoaXMuX2dldFBhbmVsRm9yVGFiKHRoaXMuYWN0aXZlKS5zaG93KCkuYXR0cih7ImFyaWEtaGlkZGVuIjoiZmFsc2UifSkpOnRoaXMudGFicy5lcSgwKS5hdHRyKCJ0YWJJbmRleCIsMCl9LF9wcm9jZXNzVGFiczpmdW5jdGlvbigpe3ZhciB0PXRoaXMsaT10aGlzLnRhYnMscz10aGlzLmFuY2hvcnMsbj10aGlzLnBhbmVsczt0aGlzLnRhYmxpc3Q9dGhpcy5fZ2V0TGlzdCgpLmFkZENsYXNzKCJ1aS10YWJzLW5hdiB1aS1oZWxwZXItcmVzZXQgdWktaGVscGVyLWNsZWFyZml4IHVpLXdpZGdldC1oZWFkZXIgdWktY29ybmVyLWFsbCIpLmF0dHIoInJvbGUiLCJ0YWJsaXN0IikuZGVsZWdhdGUoIj4gbGkiLCJtb3VzZWRvd24iK3RoaXMuZXZlbnROYW1lc3BhY2UsZnVuY3Rpb24odCl7ZSh0aGlzKS5pcygiLnVpLXN0YXRlLWRpc2FibGVkIikmJnQucHJldmVudERlZmF1bHQoKX0pLmRlbGVnYXRlKCIudWktdGFicy1hbmNob3IiLCJmb2N1cyIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbigpe2UodGhpcykuY2xvc2VzdCgibGkiKS5pcygiLnVpLXN0YXRlLWRpc2FibGVkIikmJnRoaXMuYmx1cigpfSksdGhpcy50YWJzPXRoaXMudGFibGlzdC5maW5kKCI+IGxpOmhhcyhhW2hyZWZdKSIpLmFkZENsYXNzKCJ1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci10b3AiKS5hdHRyKHtyb2xlOiJ0YWIiLHRhYkluZGV4Oi0xfSksdGhpcy5hbmNob3JzPXRoaXMudGFicy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZSgiYSIsdGhpcylbMF19KS5hZGRDbGFzcygidWktdGFicy1hbmNob3IiKS5hdHRyKHtyb2xlOiJwcmVzZW50YXRpb24iLHRhYkluZGV4Oi0xfSksdGhpcy5wYW5lbHM9ZSgpLHRoaXMuYW5jaG9ycy5lYWNoKGZ1bmN0aW9uKGkscyl7dmFyIG4sYSxvLHI9ZShzKS51bmlxdWVJZCgpLmF0dHIoImlkIiksaD1lKHMpLmNsb3Nlc3QoImxpIiksbD1oLmF0dHIoImFyaWEtY29udHJvbHMiKTt0Ll9pc0xvY2FsKHMpPyhuPXMuaGFzaCxvPW4uc3Vic3RyaW5nKDEpLGE9dC5lbGVtZW50LmZpbmQodC5fc2FuaXRpemVTZWxlY3RvcihuKSkpOihvPWguYXR0cigiYXJpYS1jb250cm9scyIpfHxlKHt9KS51bmlxdWVJZCgpWzBdLmlkLG49IiMiK28sYT10LmVsZW1lbnQuZmluZChuKSxhLmxlbmd0aHx8KGE9dC5fY3JlYXRlUGFuZWwobyksYS5pbnNlcnRBZnRlcih0LnBhbmVsc1tpLTFdfHx0LnRhYmxpc3QpKSxhLmF0dHIoImFyaWEtbGl2ZSIsInBvbGl0ZSIpKSxhLmxlbmd0aCYmKHQucGFuZWxzPXQucGFuZWxzLmFkZChhKSksbCYmaC5kYXRhKCJ1aS10YWJzLWFyaWEtY29udHJvbHMiLGwpLGguYXR0cih7ImFyaWEtY29udHJvbHMiOm8sImFyaWEtbGFiZWxsZWRieSI6cn0pLGEuYXR0cigiYXJpYS1sYWJlbGxlZGJ5IixyKX0pLHRoaXMucGFuZWxzLmFkZENsYXNzKCJ1aS10YWJzLXBhbmVsIHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1ib3R0b20iKS5hdHRyKCJyb2xlIiwidGFicGFuZWwiKSxpJiYodGhpcy5fb2ZmKGkubm90KHRoaXMudGFicykpLHRoaXMuX29mZihzLm5vdCh0aGlzLmFuY2hvcnMpKSx0aGlzLl9vZmYobi5ub3QodGhpcy5wYW5lbHMpKSl9LF9nZXRMaXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFibGlzdHx8dGhpcy5lbGVtZW50LmZpbmQoIm9sLHVsIikuZXEoMCl9LF9jcmVhdGVQYW5lbDpmdW5jdGlvbih0KXtyZXR1cm4gZSgiPGRpdj4iKS5hdHRyKCJpZCIsdCkuYWRkQ2xhc3MoInVpLXRhYnMtcGFuZWwgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWJvdHRvbSIpLmRhdGEoInVpLXRhYnMtZGVzdHJveSIsITApfSxfc2V0dXBEaXNhYmxlZDpmdW5jdGlvbih0KXtlLmlzQXJyYXkodCkmJih0Lmxlbmd0aD90Lmxlbmd0aD09PXRoaXMuYW5jaG9ycy5sZW5ndGgmJih0PSEwKTp0PSExKTtmb3IodmFyIGkscz0wO2k9dGhpcy50YWJzW3NdO3MrKyl0PT09ITB8fC0xIT09ZS5pbkFycmF5KHMsdCk/ZShpKS5hZGRDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2FibGVkIiwidHJ1ZSIpOmUoaSkucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIikucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpO3RoaXMub3B0aW9ucy5kaXNhYmxlZD10fSxfc2V0dXBFdmVudHM6ZnVuY3Rpb24odCl7dmFyIGk9e307dCYmZS5lYWNoKHQuc3BsaXQoIiAiKSxmdW5jdGlvbihlLHQpe2lbdF09Il9ldmVudEhhbmRsZXIifSksdGhpcy5fb2ZmKHRoaXMuYW5jaG9ycy5hZGQodGhpcy50YWJzKS5hZGQodGhpcy5wYW5lbHMpKSx0aGlzLl9vbighMCx0aGlzLmFuY2hvcnMse2NsaWNrOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKX19KSx0aGlzLl9vbih0aGlzLmFuY2hvcnMsaSksdGhpcy5fb24odGhpcy50YWJzLHtrZXlkb3duOiJfdGFiS2V5ZG93biJ9KSx0aGlzLl9vbih0aGlzLnBhbmVscyx7a2V5ZG93bjoiX3BhbmVsS2V5ZG93biJ9KSx0aGlzLl9mb2N1c2FibGUodGhpcy50YWJzKSx0aGlzLl9ob3ZlcmFibGUodGhpcy50YWJzKX0sX3NldHVwSGVpZ2h0U3R5bGU6ZnVuY3Rpb24odCl7dmFyIGkscz10aGlzLmVsZW1lbnQucGFyZW50KCk7ImZpbGwiPT09dD8oaT1zLmhlaWdodCgpLGktPXRoaXMuZWxlbWVudC5vdXRlckhlaWdodCgpLXRoaXMuZWxlbWVudC5oZWlnaHQoKSx0aGlzLmVsZW1lbnQuc2libGluZ3MoIjp2aXNpYmxlIikuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUodGhpcykscz10LmNzcygicG9zaXRpb24iKTsiYWJzb2x1dGUiIT09cyYmImZpeGVkIiE9PXMmJihpLT10Lm91dGVySGVpZ2h0KCEwKSl9KSx0aGlzLmVsZW1lbnQuY2hpbGRyZW4oKS5ub3QodGhpcy5wYW5lbHMpLmVhY2goZnVuY3Rpb24oKXtpLT1lKHRoaXMpLm91dGVySGVpZ2h0KCEwKX0pLHRoaXMucGFuZWxzLmVhY2goZnVuY3Rpb24oKXtlKHRoaXMpLmhlaWdodChNYXRoLm1heCgwLGktZSh0aGlzKS5pbm5lckhlaWdodCgpK2UodGhpcykuaGVpZ2h0KCkpKX0pLmNzcygib3ZlcmZsb3ciLCJhdXRvIikpOiJhdXRvIj09PXQmJihpPTAsdGhpcy5wYW5lbHMuZWFjaChmdW5jdGlvbigpe2k9TWF0aC5tYXgoaSxlKHRoaXMpLmhlaWdodCgiIikuaGVpZ2h0KCkpfSkuaGVpZ2h0KGkpKX0sX2V2ZW50SGFuZGxlcjpmdW5jdGlvbih0KXt2YXIgaT10aGlzLm9wdGlvbnMscz10aGlzLmFjdGl2ZSxuPWUodC5jdXJyZW50VGFyZ2V0KSxhPW4uY2xvc2VzdCgibGkiKSxvPWFbMF09PT1zWzBdLHI9byYmaS5jb2xsYXBzaWJsZSxoPXI/ZSgpOnRoaXMuX2dldFBhbmVsRm9yVGFiKGEpLGw9cy5sZW5ndGg/dGhpcy5fZ2V0UGFuZWxGb3JUYWIocyk6ZSgpLHU9e29sZFRhYjpzLG9sZFBhbmVsOmwsbmV3VGFiOnI/ZSgpOmEsbmV3UGFuZWw6aH07dC5wcmV2ZW50RGVmYXVsdCgpLGEuaGFzQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIil8fGEuaGFzQ2xhc3MoInVpLXRhYnMtbG9hZGluZyIpfHx0aGlzLnJ1bm5pbmd8fG8mJiFpLmNvbGxhcHNpYmxlfHx0aGlzLl90cmlnZ2VyKCJiZWZvcmVBY3RpdmF0ZSIsdCx1KT09PSExfHwoaS5hY3RpdmU9cj8hMTp0aGlzLnRhYnMuaW5kZXgoYSksdGhpcy5hY3RpdmU9bz9lKCk6YSx0aGlzLnhociYmdGhpcy54aHIuYWJvcnQoKSxsLmxlbmd0aHx8aC5sZW5ndGh8fGUuZXJyb3IoImpRdWVyeSBVSSBUYWJzOiBNaXNtYXRjaGluZyBmcmFnbWVudCBpZGVudGlmaWVyLiIpLGgubGVuZ3RoJiZ0aGlzLmxvYWQodGhpcy50YWJzLmluZGV4KGEpLHQpLHRoaXMuX3RvZ2dsZSh0LHUpKX0sX3RvZ2dsZTpmdW5jdGlvbih0LGkpe2Z1bmN0aW9uIHMoKXthLnJ1bm5pbmc9ITEsYS5fdHJpZ2dlcigiYWN0aXZhdGUiLHQsaSl9ZnVuY3Rpb24gbigpe2kubmV3VGFiLmNsb3Nlc3QoImxpIikuYWRkQ2xhc3MoInVpLXRhYnMtYWN0aXZlIHVpLXN0YXRlLWFjdGl2ZSIpLG8ubGVuZ3RoJiZhLm9wdGlvbnMuc2hvdz9hLl9zaG93KG8sYS5vcHRpb25zLnNob3cscyk6KG8uc2hvdygpLHMoKSl9dmFyIGE9dGhpcyxvPWkubmV3UGFuZWwscj1pLm9sZFBhbmVsO3RoaXMucnVubmluZz0hMCxyLmxlbmd0aCYmdGhpcy5vcHRpb25zLmhpZGU/dGhpcy5faGlkZShyLHRoaXMub3B0aW9ucy5oaWRlLGZ1bmN0aW9uKCl7aS5vbGRUYWIuY2xvc2VzdCgibGkiKS5yZW1vdmVDbGFzcygidWktdGFicy1hY3RpdmUgdWktc3RhdGUtYWN0aXZlIiksbigpfSk6KGkub2xkVGFiLmNsb3Nlc3QoImxpIikucmVtb3ZlQ2xhc3MoInVpLXRhYnMtYWN0aXZlIHVpLXN0YXRlLWFjdGl2ZSIpLHIuaGlkZSgpLG4oKSksci5hdHRyKCJhcmlhLWhpZGRlbiIsInRydWUiKSxpLm9sZFRhYi5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6ImZhbHNlIiwiYXJpYS1leHBhbmRlZCI6ImZhbHNlIn0pLG8ubGVuZ3RoJiZyLmxlbmd0aD9pLm9sZFRhYi5hdHRyKCJ0YWJJbmRleCIsLTEpOm8ubGVuZ3RoJiZ0aGlzLnRhYnMuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIDA9PT1lKHRoaXMpLmF0dHIoInRhYkluZGV4Iil9KS5hdHRyKCJ0YWJJbmRleCIsLTEpLG8uYXR0cigiYXJpYS1oaWRkZW4iLCJmYWxzZSIpLGkubmV3VGFiLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoidHJ1ZSIsImFyaWEtZXhwYW5kZWQiOiJ0cnVlIix0YWJJbmRleDowfSl9LF9hY3RpdmF0ZTpmdW5jdGlvbih0KXt2YXIgaSxzPXRoaXMuX2ZpbmRBY3RpdmUodCk7c1swXSE9PXRoaXMuYWN0aXZlWzBdJiYocy5sZW5ndGh8fChzPXRoaXMuYWN0aXZlKSxpPXMuZmluZCgiLnVpLXRhYnMtYW5jaG9yIilbMF0sdGhpcy5fZXZlbnRIYW5kbGVyKHt0YXJnZXQ6aSxjdXJyZW50VGFyZ2V0OmkscHJldmVudERlZmF1bHQ6ZS5ub29wfSkpfSxfZmluZEFjdGl2ZTpmdW5jdGlvbih0KXtyZXR1cm4gdD09PSExP2UoKTp0aGlzLnRhYnMuZXEodCl9LF9nZXRJbmRleDpmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUmJihlPXRoaXMuYW5jaG9ycy5pbmRleCh0aGlzLmFuY2hvcnMuZmlsdGVyKCJbaHJlZiQ9JyIrZSsiJ10iKSkpLGV9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy54aHImJnRoaXMueGhyLmFib3J0KCksdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS10YWJzIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLXRhYnMtY29sbGFwc2libGUiKSx0aGlzLnRhYmxpc3QucmVtb3ZlQ2xhc3MoInVpLXRhYnMtbmF2IHVpLWhlbHBlci1yZXNldCB1aS1oZWxwZXItY2xlYXJmaXggdWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItYWxsIikucmVtb3ZlQXR0cigicm9sZSIpLHRoaXMuYW5jaG9ycy5yZW1vdmVDbGFzcygidWktdGFicy1hbmNob3IiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0cigidGFiSW5kZXgiKS5yZW1vdmVVbmlxdWVJZCgpLHRoaXMudGFibGlzdC51bmJpbmQodGhpcy5ldmVudE5hbWVzcGFjZSksdGhpcy50YWJzLmFkZCh0aGlzLnBhbmVscykuZWFjaChmdW5jdGlvbigpe2UuZGF0YSh0aGlzLCJ1aS10YWJzLWRlc3Ryb3kiKT9lKHRoaXMpLnJlbW92ZSgpOmUodGhpcykucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWRlZmF1bHQgdWktc3RhdGUtYWN0aXZlIHVpLXN0YXRlLWRpc2FibGVkIHVpLWNvcm5lci10b3AgdWktY29ybmVyLWJvdHRvbSB1aS13aWRnZXQtY29udGVudCB1aS10YWJzLWFjdGl2ZSB1aS10YWJzLXBhbmVsIikucmVtb3ZlQXR0cigidGFiSW5kZXgiKS5yZW1vdmVBdHRyKCJhcmlhLWxpdmUiKS5yZW1vdmVBdHRyKCJhcmlhLWJ1c3kiKS5yZW1vdmVBdHRyKCJhcmlhLXNlbGVjdGVkIikucmVtb3ZlQXR0cigiYXJpYS1sYWJlbGxlZGJ5IikucmVtb3ZlQXR0cigiYXJpYS1oaWRkZW4iKS5yZW1vdmVBdHRyKCJhcmlhLWV4cGFuZGVkIikucmVtb3ZlQXR0cigicm9sZSIpfSksdGhpcy50YWJzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLGk9dC5kYXRhKCJ1aS10YWJzLWFyaWEtY29udHJvbHMiKTtpP3QuYXR0cigiYXJpYS1jb250cm9scyIsaSkucmVtb3ZlRGF0YSgidWktdGFicy1hcmlhLWNvbnRyb2xzIik6dC5yZW1vdmVBdHRyKCJhcmlhLWNvbnRyb2xzIil9KSx0aGlzLnBhbmVscy5zaG93KCksImNvbnRlbnQiIT09dGhpcy5vcHRpb25zLmhlaWdodFN0eWxlJiZ0aGlzLnBhbmVscy5jc3MoImhlaWdodCIsIiIpfSxlbmFibGU6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5vcHRpb25zLmRpc2FibGVkO2khPT0hMSYmKHZvaWQgMD09PXQ/aT0hMToodD10aGlzLl9nZXRJbmRleCh0KSxpPWUuaXNBcnJheShpKT9lLm1hcChpLGZ1bmN0aW9uKGUpe3JldHVybiBlIT09dD9lOm51bGx9KTplLm1hcCh0aGlzLnRhYnMsZnVuY3Rpb24oZSxpKXtyZXR1cm4gaSE9PXQ/aTpudWxsfSkpLHRoaXMuX3NldHVwRGlzYWJsZWQoaSkpfSxkaXNhYmxlOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMub3B0aW9ucy5kaXNhYmxlZDtpZihpIT09ITApe2lmKHZvaWQgMD09PXQpaT0hMDtlbHNle2lmKHQ9dGhpcy5fZ2V0SW5kZXgodCksLTEhPT1lLmluQXJyYXkodCxpKSlyZXR1cm47aT1lLmlzQXJyYXkoaSk/ZS5tZXJnZShbdF0saSkuc29ydCgpOlt0XX10aGlzLl9zZXR1cERpc2FibGVkKGkpfX0sbG9hZDpmdW5jdGlvbih0LGkpe3Q9dGhpcy5fZ2V0SW5kZXgodCk7dmFyIHM9dGhpcyxuPXRoaXMudGFicy5lcSh0KSxhPW4uZmluZCgiLnVpLXRhYnMtYW5jaG9yIiksbz10aGlzLl9nZXRQYW5lbEZvclRhYihuKSxyPXt0YWI6bixwYW5lbDpvfSxoPWZ1bmN0aW9uKGUsdCl7ImFib3J0Ij09PXQmJnMucGFuZWxzLnN0b3AoITEsITApLG4ucmVtb3ZlQ2xhc3MoInVpLXRhYnMtbG9hZGluZyIpLG8ucmVtb3ZlQXR0cigiYXJpYS1idXN5IiksZT09PXMueGhyJiZkZWxldGUgcy54aHJ9O3RoaXMuX2lzTG9jYWwoYVswXSl8fCh0aGlzLnhocj1lLmFqYXgodGhpcy5fYWpheFNldHRpbmdzKGEsaSxyKSksdGhpcy54aHImJiJjYW5jZWxlZCIhPT10aGlzLnhoci5zdGF0dXNUZXh0JiYobi5hZGRDbGFzcygidWktdGFicy1sb2FkaW5nIiksby5hdHRyKCJhcmlhLWJ1c3kiLCJ0cnVlIiksdGhpcy54aHIuZG9uZShmdW5jdGlvbihlLHQsbil7c2V0VGltZW91dChmdW5jdGlvbigpe28uaHRtbChlKSxzLl90cmlnZ2VyKCJsb2FkIixpLHIpLGgobix0KX0sMSl9KS5mYWlsKGZ1bmN0aW9uKGUsdCl7c2V0VGltZW91dChmdW5jdGlvbigpe2goZSx0KX0sMSl9KSkpfSxfYWpheFNldHRpbmdzOmZ1bmN0aW9uKHQsaSxzKXt2YXIgbj10aGlzO3JldHVybnt1cmw6dC5hdHRyKCJocmVmIiksYmVmb3JlU2VuZDpmdW5jdGlvbih0LGEpe3JldHVybiBuLl90cmlnZ2VyKCJiZWZvcmVMb2FkIixpLGUuZXh0ZW5kKHtqcVhIUjp0LGFqYXhTZXR0aW5nczphfSxzKSl9fX0sX2dldFBhbmVsRm9yVGFiOmZ1bmN0aW9uKHQpe3ZhciBpPWUodCkuYXR0cigiYXJpYS1jb250cm9scyIpO3JldHVybiB0aGlzLmVsZW1lbnQuZmluZCh0aGlzLl9zYW5pdGl6ZVNlbGVjdG9yKCIjIitpKSl9fSksZS53aWRnZXQoInVpLnRvb2x0aXAiLHt2ZXJzaW9uOiIxLjExLjQiLG9wdGlvbnM6e2NvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLmF0dHIoInRpdGxlIil8fCIiO3JldHVybiBlKCI8YT4iKS50ZXh0KHQpLmh0bWwoKX0saGlkZTohMCxpdGVtczoiW3RpdGxlXTpub3QoW2Rpc2FibGVkXSkiLHBvc2l0aW9uOntteToibGVmdCB0b3ArMTUiLGF0OiJsZWZ0IGJvdHRvbSIsY29sbGlzaW9uOiJmbGlwZml0IGZsaXAifSxzaG93OiEwLHRvb2x0aXBDbGFzczpudWxsLHRyYWNrOiExLGNsb3NlOm51bGwsb3BlbjpudWxsfSxfYWRkRGVzY3JpYmVkQnk6ZnVuY3Rpb24odCxpKXt2YXIgcz0odC5hdHRyKCJhcmlhLWRlc2NyaWJlZGJ5Iil8fCIiKS5zcGxpdCgvXHMrLyk7cy5wdXNoKGkpLHQuZGF0YSgidWktdG9vbHRpcC1pZCIsaSkuYXR0cigiYXJpYS1kZXNjcmliZWRieSIsZS50cmltKHMuam9pbigiICIpKSl9LF9yZW1vdmVEZXNjcmliZWRCeTpmdW5jdGlvbih0KXt2YXIgaT10LmRhdGEoInVpLXRvb2x0aXAtaWQiKSxzPSh0LmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiKXx8IiIpLnNwbGl0KC9ccysvKSxuPWUuaW5BcnJheShpLHMpOy0xIT09biYmcy5zcGxpY2UobiwxKSx0LnJlbW92ZURhdGEoInVpLXRvb2x0aXAtaWQiKSxzPWUudHJpbShzLmpvaW4oIiAiKSkscz90LmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiLHMpOnQucmVtb3ZlQXR0cigiYXJpYS1kZXNjcmliZWRieSIpfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5fb24oe21vdXNlb3Zlcjoib3BlbiIsZm9jdXNpbjoib3BlbiJ9KSx0aGlzLnRvb2x0aXBzPXt9LHRoaXMucGFyZW50cz17fSx0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMuX2Rpc2FibGUoKSx0aGlzLmxpdmVSZWdpb249ZSgiPGRpdj4iKS5hdHRyKHtyb2xlOiJsb2ciLCJhcmlhLWxpdmUiOiJhc3NlcnRpdmUiLCJhcmlhLXJlbGV2YW50IjoiYWRkaXRpb25zIn0pLmFkZENsYXNzKCJ1aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUiKS5hcHBlbmRUbyh0aGlzLmRvY3VtZW50WzBdLmJvZHkpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKHQsaSl7dmFyIHM9dGhpcztyZXR1cm4iZGlzYWJsZWQiPT09dD8odGhpc1tpPyJfZGlzYWJsZSI6Il9lbmFibGUiXSgpLHRoaXMub3B0aW9uc1t0XT1pLHZvaWQgMCk6KHRoaXMuX3N1cGVyKHQsaSksImNvbnRlbnQiPT09dCYmZS5lYWNoKHRoaXMudG9vbHRpcHMsZnVuY3Rpb24oZSx0KXtzLl91cGRhdGVDb250ZW50KHQuZWxlbWVudCl9KSx2b2lkIDApfSxfZGlzYWJsZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7ZS5lYWNoKHRoaXMudG9vbHRpcHMsZnVuY3Rpb24oaSxzKXt2YXIgbj1lLkV2ZW50KCJibHVyIik7bi50YXJnZXQ9bi5jdXJyZW50VGFyZ2V0PXMuZWxlbWVudFswXSx0LmNsb3NlKG4sITApfSksdGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKS5hZGRCYWNrKCkuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUodGhpcyk7dC5pcygiW3RpdGxlXSIpJiZ0LmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiLHQuYXR0cigidGl0bGUiKSkucmVtb3ZlQXR0cigidGl0bGUiKX0pfSxfZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKS5hZGRCYWNrKCkuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUodGhpcyk7dC5kYXRhKCJ1aS10b29sdGlwLXRpdGxlIikmJnQuYXR0cigidGl0bGUiLHQuZGF0YSgidWktdG9vbHRpcC10aXRsZSIpKX0pfSxvcGVuOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMscz1lKHQ/dC50YXJnZXQ6dGhpcy5lbGVtZW50KS5jbG9zZXN0KHRoaXMub3B0aW9ucy5pdGVtcyk7cy5sZW5ndGgmJiFzLmRhdGEoInVpLXRvb2x0aXAtaWQiKSYmKHMuYXR0cigidGl0bGUiKSYmcy5kYXRhKCJ1aS10b29sdGlwLXRpdGxlIixzLmF0dHIoInRpdGxlIikpLHMuZGF0YSgidWktdG9vbHRpcC1vcGVuIiwhMCksdCYmIm1vdXNlb3ZlciI9PT10LnR5cGUmJnMucGFyZW50cygpLmVhY2goZnVuY3Rpb24oKXt2YXIgdCxzPWUodGhpcyk7cy5kYXRhKCJ1aS10b29sdGlwLW9wZW4iKSYmKHQ9ZS5FdmVudCgiYmx1ciIpLHQudGFyZ2V0PXQuY3VycmVudFRhcmdldD10aGlzLGkuY2xvc2UodCwhMCkpLHMuYXR0cigidGl0bGUiKSYmKHMudW5pcXVlSWQoKSxpLnBhcmVudHNbdGhpcy5pZF09e2VsZW1lbnQ6dGhpcyx0aXRsZTpzLmF0dHIoInRpdGxlIil9LHMuYXR0cigidGl0bGUiLCIiKSl9KSx0aGlzLl9yZWdpc3RlckNsb3NlSGFuZGxlcnModCxzKSx0aGlzLl91cGRhdGVDb250ZW50KHMsdCkpfSxfdXBkYXRlQ29udGVudDpmdW5jdGlvbihlLHQpe3ZhciBpLHM9dGhpcy5vcHRpb25zLmNvbnRlbnQsbj10aGlzLGE9dD90LnR5cGU6bnVsbDtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHM/dGhpcy5fb3Blbih0LGUscyk6KGk9cy5jYWxsKGVbMF0sZnVuY3Rpb24oaSl7bi5fZGVsYXkoZnVuY3Rpb24oKXtlLmRhdGEoInVpLXRvb2x0aXAtb3BlbiIpJiYodCYmKHQudHlwZT1hKSx0aGlzLl9vcGVuKHQsZSxpKSl9KX0pLGkmJnRoaXMuX29wZW4odCxlLGkpLHZvaWQgMCl9LF9vcGVuOmZ1bmN0aW9uKHQsaSxzKXtmdW5jdGlvbiBuKGUpe2wub2Y9ZSxvLmlzKCI6aGlkZGVuIil8fG8ucG9zaXRpb24obCl9dmFyIGEsbyxyLGgsbD1lLmV4dGVuZCh7fSx0aGlzLm9wdGlvbnMucG9zaXRpb24pO2lmKHMpe2lmKGE9dGhpcy5fZmluZChpKSlyZXR1cm4gYS50b29sdGlwLmZpbmQoIi51aS10b29sdGlwLWNvbnRlbnQiKS5odG1sKHMpLHZvaWQgMDtpLmlzKCJbdGl0bGVdIikmJih0JiYibW91c2VvdmVyIj09PXQudHlwZT9pLmF0dHIoInRpdGxlIiwiIik6aS5yZW1vdmVBdHRyKCJ0aXRsZSIpKSxhPXRoaXMuX3Rvb2x0aXAoaSksbz1hLnRvb2x0aXAsdGhpcy5fYWRkRGVzY3JpYmVkQnkoaSxvLmF0dHIoImlkIikpLG8uZmluZCgiLnVpLXRvb2x0aXAtY29udGVudCIpLmh0bWwocyksdGhpcy5saXZlUmVnaW9uLmNoaWxkcmVuKCkuaGlkZSgpLHMuY2xvbmU/KGg9cy5jbG9uZSgpLGgucmVtb3ZlQXR0cigiaWQiKS5maW5kKCJbaWRdIikucmVtb3ZlQXR0cigiaWQiKSk6aD1zLGUoIjxkaXY+IikuaHRtbChoKS5hcHBlbmRUbyh0aGlzLmxpdmVSZWdpb24pLHRoaXMub3B0aW9ucy50cmFjayYmdCYmL15tb3VzZS8udGVzdCh0LnR5cGUpPyh0aGlzLl9vbih0aGlzLmRvY3VtZW50LHttb3VzZW1vdmU6bn0pLG4odCkpOm8ucG9zaXRpb24oZS5leHRlbmQoe29mOml9LHRoaXMub3B0aW9ucy5wb3NpdGlvbikpLG8uaGlkZSgpLHRoaXMuX3Nob3cobyx0aGlzLm9wdGlvbnMuc2hvdyksdGhpcy5vcHRpb25zLnNob3cmJnRoaXMub3B0aW9ucy5zaG93LmRlbGF5JiYocj10aGlzLmRlbGF5ZWRTaG93PXNldEludGVydmFsKGZ1bmN0aW9uKCl7by5pcygiOnZpc2libGUiKSYmKG4obC5vZiksY2xlYXJJbnRlcnZhbChyKSl9LGUuZnguaW50ZXJ2YWwpKSx0aGlzLl90cmlnZ2VyKCJvcGVuIix0LHt0b29sdGlwOm99KX19LF9yZWdpc3RlckNsb3NlSGFuZGxlcnM6ZnVuY3Rpb24odCxpKXt2YXIgcz17a2V5dXA6ZnVuY3Rpb24odCl7aWYodC5rZXlDb2RlPT09ZS51aS5rZXlDb2RlLkVTQ0FQRSl7dmFyIHM9ZS5FdmVudCh0KTtzLmN1cnJlbnRUYXJnZXQ9aVswXSx0aGlzLmNsb3NlKHMsITApfX19O2lbMF0hPT10aGlzLmVsZW1lbnRbMF0mJihzLnJlbW92ZT1mdW5jdGlvbigpe3RoaXMuX3JlbW92ZVRvb2x0aXAodGhpcy5fZmluZChpKS50b29sdGlwKX0pLHQmJiJtb3VzZW92ZXIiIT09dC50eXBlfHwocy5tb3VzZWxlYXZlPSJjbG9zZSIpLHQmJiJmb2N1c2luIiE9PXQudHlwZXx8KHMuZm9jdXNvdXQ9ImNsb3NlIiksdGhpcy5fb24oITAsaSxzKX0sY2xvc2U6ZnVuY3Rpb24odCl7dmFyIGkscz10aGlzLG49ZSh0P3QuY3VycmVudFRhcmdldDp0aGlzLmVsZW1lbnQpLGE9dGhpcy5fZmluZChuKTtyZXR1cm4gYT8oaT1hLnRvb2x0aXAsYS5jbG9zaW5nfHwoY2xlYXJJbnRlcnZhbCh0aGlzLmRlbGF5ZWRTaG93KSxuLmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiKSYmIW4uYXR0cigidGl0bGUiKSYmbi5hdHRyKCJ0aXRsZSIsbi5kYXRhKCJ1aS10b29sdGlwLXRpdGxlIikpLHRoaXMuX3JlbW92ZURlc2NyaWJlZEJ5KG4pLGEuaGlkaW5nPSEwLGkuc3RvcCghMCksdGhpcy5faGlkZShpLHRoaXMub3B0aW9ucy5oaWRlLGZ1bmN0aW9uKCl7cy5fcmVtb3ZlVG9vbHRpcChlKHRoaXMpKX0pLG4ucmVtb3ZlRGF0YSgidWktdG9vbHRpcC1vcGVuIiksdGhpcy5fb2ZmKG4sIm1vdXNlbGVhdmUgZm9jdXNvdXQga2V5dXAiKSxuWzBdIT09dGhpcy5lbGVtZW50WzBdJiZ0aGlzLl9vZmYobiwicmVtb3ZlIiksdGhpcy5fb2ZmKHRoaXMuZG9jdW1lbnQsIm1vdXNlbW92ZSIpLHQmJiJtb3VzZWxlYXZlIj09PXQudHlwZSYmZS5lYWNoKHRoaXMucGFyZW50cyxmdW5jdGlvbih0LGkpe2UoaS5lbGVtZW50KS5hdHRyKCJ0aXRsZSIsaS50aXRsZSksZGVsZXRlIHMucGFyZW50c1t0XX0pLGEuY2xvc2luZz0hMCx0aGlzLl90cmlnZ2VyKCJjbG9zZSIsdCx7dG9vbHRpcDppfSksYS5oaWRpbmd8fChhLmNsb3Npbmc9ITEpKSx2b2lkIDApOihuLnJlbW92ZURhdGEoInVpLXRvb2x0aXAtb3BlbiIpLHZvaWQgMCl9LF90b29sdGlwOmZ1bmN0aW9uKHQpe3ZhciBpPWUoIjxkaXY+IikuYXR0cigicm9sZSIsInRvb2x0aXAiKS5hZGRDbGFzcygidWktdG9vbHRpcCB1aS13aWRnZXQgdWktY29ybmVyLWFsbCB1aS13aWRnZXQtY29udGVudCAiKyh0aGlzLm9wdGlvbnMudG9vbHRpcENsYXNzfHwiIikpLHM9aS51bmlxdWVJZCgpLmF0dHIoImlkIik7cmV0dXJuIGUoIjxkaXY+IikuYWRkQ2xhc3MoInVpLXRvb2x0aXAtY29udGVudCIpLmFwcGVuZFRvKGkpLGkuYXBwZW5kVG8odGhpcy5kb2N1bWVudFswXS5ib2R5KSx0aGlzLnRvb2x0aXBzW3NdPXtlbGVtZW50OnQsdG9vbHRpcDppfX0sX2ZpbmQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhKCJ1aS10b29sdGlwLWlkIik7cmV0dXJuIHQ/dGhpcy50b29sdGlwc1t0XTpudWxsfSxfcmVtb3ZlVG9vbHRpcDpmdW5jdGlvbihlKXtlLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLnRvb2x0aXBzW2UuYXR0cigiaWQiKV19LF9kZXN0cm95OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztlLmVhY2godGhpcy50b29sdGlwcyxmdW5jdGlvbihpLHMpe3ZhciBuPWUuRXZlbnQoImJsdXIiKSxhPXMuZWxlbWVudDtuLnRhcmdldD1uLmN1cnJlbnRUYXJnZXQ9YVswXSx0LmNsb3NlKG4sITApLGUoIiMiK2kpLnJlbW92ZSgpLGEuZGF0YSgidWktdG9vbHRpcC10aXRsZSIpJiYoYS5hdHRyKCJ0aXRsZSIpfHxhLmF0dHIoInRpdGxlIixhLmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiKSksYS5yZW1vdmVEYXRhKCJ1aS10b29sdGlwLXRpdGxlIikpfSksdGhpcy5saXZlUmVnaW9uLnJlbW92ZSgpfX0pO3ZhciBjPSJ1aS1lZmZlY3RzLSIscD1lO2UuZWZmZWN0cz17ZWZmZWN0Ont9fSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIGkoZSx0LGkpe3ZhciBzPWRbdC50eXBlXXx8e307cmV0dXJuIG51bGw9PWU/aXx8IXQuZGVmP251bGw6dC5kZWY6KGU9cy5mbG9vcj9+fmU6cGFyc2VGbG9hdChlKSxpc05hTihlKT90LmRlZjpzLm1vZD8oZStzLm1vZCklcy5tb2Q6MD5lPzA6ZT5zLm1heD9zLm1heDplKX1mdW5jdGlvbiBzKGkpe3ZhciBzPWwoKSxuPXMuX3JnYmE9W107cmV0dXJuIGk9aS50b0xvd2VyQ2FzZSgpLGYoaCxmdW5jdGlvbihlLGEpe3ZhciBvLHI9YS5yZS5leGVjKGkpLGg9ciYmYS5wYXJzZShyKSxsPWEuc3BhY2V8fCJyZ2JhIjtyZXR1cm4gaD8obz1zW2xdKGgpLHNbdVtsXS5jYWNoZV09b1t1W2xdLmNhY2hlXSxuPXMuX3JnYmE9by5fcmdiYSwhMSk6dH0pLG4ubGVuZ3RoPygiMCwwLDAsMCI9PT1uLmpvaW4oKSYmZS5leHRlbmQobixhLnRyYW5zcGFyZW50KSxzKTphW2ldfWZ1bmN0aW9uIG4oZSx0LGkpe3JldHVybiBpPShpKzEpJTEsMT42Kmk/ZSs2Kih0LWUpKmk6MT4yKmk/dDoyPjMqaT9lKzYqKHQtZSkqKDIvMy1pKTplfXZhciBhLG89ImJhY2tncm91bmRDb2xvciBib3JkZXJCb3R0b21Db2xvciBib3JkZXJMZWZ0Q29sb3IgYm9yZGVyUmlnaHRDb2xvciBib3JkZXJUb3BDb2xvciBjb2xvciBjb2x1bW5SdWxlQ29sb3Igb3V0bGluZUNvbG9yIHRleHREZWNvcmF0aW9uQ29sb3IgdGV4dEVtcGhhc2lzQ29sb3IiLHI9L14oW1wtK10pPVxzKihcZCtcLj9cZCopLyxoPVt7cmU6L3JnYmE/XChccyooXGR7MSwzfSlccyosXHMqKFxkezEsM30pXHMqLFxzKihcZHsxLDN9KVxzKig/OixccyooXGQ/KD86XC5cZCspPylccyopP1wpLyxwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm5bZVsxXSxlWzJdLGVbM10sZVs0XV19fSx7cmU6L3JnYmE/XChccyooXGQrKD86XC5cZCspPylcJVxzKixccyooXGQrKD86XC5cZCspPylcJVxzKixccyooXGQrKD86XC5cZCspPylcJVxzKig/OixccyooXGQ/KD86XC5cZCspPylccyopP1wpLyxwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm5bMi41NSplWzFdLDIuNTUqZVsyXSwyLjU1KmVbM10sZVs0XV19fSx7cmU6LyMoW2EtZjAtOV17Mn0pKFthLWYwLTldezJ9KShbYS1mMC05XXsyfSkvLHBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybltwYXJzZUludChlWzFdLDE2KSxwYXJzZUludChlWzJdLDE2KSxwYXJzZUludChlWzNdLDE2KV19fSx7cmU6LyMoW2EtZjAtOV0pKFthLWYwLTldKShbYS1mMC05XSkvLHBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybltwYXJzZUludChlWzFdK2VbMV0sMTYpLHBhcnNlSW50KGVbMl0rZVsyXSwxNikscGFyc2VJbnQoZVszXStlWzNdLDE2KV19fSx7cmU6L2hzbGE/XChccyooXGQrKD86XC5cZCspPylccyosXHMqKFxkKyg/OlwuXGQrKT8pXCVccyosXHMqKFxkKyg/OlwuXGQrKT8pXCVccyooPzosXHMqKFxkPyg/OlwuXGQrKT8pXHMqKT9cKS8sc3BhY2U6ImhzbGEiLHBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybltlWzFdLGVbMl0vMTAwLGVbM10vMTAwLGVbNF1dfX1dLGw9ZS5Db2xvcj1mdW5jdGlvbih0LGkscyxuKXtyZXR1cm4gbmV3IGUuQ29sb3IuZm4ucGFyc2UodCxpLHMsbil9LHU9e3JnYmE6e3Byb3BzOntyZWQ6e2lkeDowLHR5cGU6ImJ5dGUifSxncmVlbjp7aWR4OjEsdHlwZToiYnl0ZSJ9LGJsdWU6e2lkeDoyLHR5cGU6ImJ5dGUifX19LGhzbGE6e3Byb3BzOntodWU6e2lkeDowLHR5cGU6ImRlZ3JlZXMifSxzYXR1cmF0aW9uOntpZHg6MSx0eXBlOiJwZXJjZW50In0sbGlnaHRuZXNzOntpZHg6Mix0eXBlOiJwZXJjZW50In19fX0sZD17ImJ5dGUiOntmbG9vcjohMCxtYXg6MjU1fSxwZXJjZW50OnttYXg6MX0sZGVncmVlczp7bW9kOjM2MCxmbG9vcjohMH19LGM9bC5zdXBwb3J0PXt9LHA9ZSgiPHA+IilbMF0sZj1lLmVhY2g7cC5zdHlsZS5jc3NUZXh0PSJiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMSwxLDEsLjUpIixjLnJnYmE9cC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IuaW5kZXhPZigicmdiYSIpPi0xLGYodSxmdW5jdGlvbihlLHQpe3QuY2FjaGU9Il8iK2UsdC5wcm9wcy5hbHBoYT17aWR4OjMsdHlwZToicGVyY2VudCIsZGVmOjF9fSksbC5mbj1lLmV4dGVuZChsLnByb3RvdHlwZSx7cGFyc2U6ZnVuY3Rpb24obixvLHIsaCl7aWYobj09PXQpcmV0dXJuIHRoaXMuX3JnYmE9W251bGwsbnVsbCxudWxsLG51bGxdLHRoaXM7KG4uanF1ZXJ5fHxuLm5vZGVUeXBlKSYmKG49ZShuKS5jc3Mobyksbz10KTt2YXIgZD10aGlzLGM9ZS50eXBlKG4pLHA9dGhpcy5fcmdiYT1bXTtyZXR1cm4gbyE9PXQmJihuPVtuLG8scixoXSxjPSJhcnJheSIpLCJzdHJpbmciPT09Yz90aGlzLnBhcnNlKHMobil8fGEuX2RlZmF1bHQpOiJhcnJheSI9PT1jPyhmKHUucmdiYS5wcm9wcyxmdW5jdGlvbihlLHQpe3BbdC5pZHhdPWkoblt0LmlkeF0sdCl9KSx0aGlzKToib2JqZWN0Ij09PWM/KG4gaW5zdGFuY2VvZiBsP2YodSxmdW5jdGlvbihlLHQpe25bdC5jYWNoZV0mJihkW3QuY2FjaGVdPW5bdC5jYWNoZV0uc2xpY2UoKSl9KTpmKHUsZnVuY3Rpb24odCxzKXt2YXIgYT1zLmNhY2hlO2Yocy5wcm9wcyxmdW5jdGlvbihlLHQpe2lmKCFkW2FdJiZzLnRvKXtpZigiYWxwaGEiPT09ZXx8bnVsbD09bltlXSlyZXR1cm47ZFthXT1zLnRvKGQuX3JnYmEpfWRbYV1bdC5pZHhdPWkobltlXSx0LCEwKX0pLGRbYV0mJjA+ZS5pbkFycmF5KG51bGwsZFthXS5zbGljZSgwLDMpKSYmKGRbYV1bM109MSxzLmZyb20mJihkLl9yZ2JhPXMuZnJvbShkW2FdKSkpfSksdGhpcyk6dH0saXM6ZnVuY3Rpb24oZSl7dmFyIGk9bChlKSxzPSEwLG49dGhpcztyZXR1cm4gZih1LGZ1bmN0aW9uKGUsYSl7dmFyIG8scj1pW2EuY2FjaGVdO3JldHVybiByJiYobz1uW2EuY2FjaGVdfHxhLnRvJiZhLnRvKG4uX3JnYmEpfHxbXSxmKGEucHJvcHMsZnVuY3Rpb24oZSxpKXtyZXR1cm4gbnVsbCE9cltpLmlkeF0/cz1yW2kuaWR4XT09PW9baS5pZHhdOnR9KSksc30pLHN9LF9zcGFjZTpmdW5jdGlvbigpe3ZhciBlPVtdLHQ9dGhpcztyZXR1cm4gZih1LGZ1bmN0aW9uKGkscyl7dFtzLmNhY2hlXSYmZS5wdXNoKGkpfSksZS5wb3AoKX0sdHJhbnNpdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBzPWwoZSksbj1zLl9zcGFjZSgpLGE9dVtuXSxvPTA9PT10aGlzLmFscGhhKCk/bCgidHJhbnNwYXJlbnQiKTp0aGlzLHI9b1thLmNhY2hlXXx8YS50byhvLl9yZ2JhKSxoPXIuc2xpY2UoKTtyZXR1cm4gcz1zW2EuY2FjaGVdLGYoYS5wcm9wcyxmdW5jdGlvbihlLG4pe3ZhciBhPW4uaWR4LG89clthXSxsPXNbYV0sdT1kW24udHlwZV18fHt9O251bGwhPT1sJiYobnVsbD09PW8/aFthXT1sOih1Lm1vZCYmKGwtbz51Lm1vZC8yP28rPXUubW9kOm8tbD51Lm1vZC8yJiYoby09dS5tb2QpKSxoW2FdPWkoKGwtbykqdCtvLG4pKSl9KSx0aGlzW25dKGgpfSxibGVuZDpmdW5jdGlvbih0KXtpZigxPT09dGhpcy5fcmdiYVszXSlyZXR1cm4gdGhpczt2YXIgaT10aGlzLl9yZ2JhLnNsaWNlKCkscz1pLnBvcCgpLG49bCh0KS5fcmdiYTtyZXR1cm4gbChlLm1hcChpLGZ1bmN0aW9uKGUsdCl7cmV0dXJuKDEtcykqblt0XStzKmV9KSl9LHRvUmdiYVN0cmluZzpmdW5jdGlvbigpe3ZhciB0PSJyZ2JhKCIsaT1lLm1hcCh0aGlzLl9yZ2JhLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/dD4yPzE6MDplfSk7cmV0dXJuIDE9PT1pWzNdJiYoaS5wb3AoKSx0PSJyZ2IoIiksdCtpLmpvaW4oKSsiKSJ9LHRvSHNsYVN0cmluZzpmdW5jdGlvbigpe3ZhciB0PSJoc2xhKCIsaT1lLm1hcCh0aGlzLmhzbGEoKSxmdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT1lJiYoZT10PjI/MTowKSx0JiYzPnQmJihlPU1hdGgucm91bmQoMTAwKmUpKyIlIiksZX0pO3JldHVybiAxPT09aVszXSYmKGkucG9wKCksdD0iaHNsKCIpLHQraS5qb2luKCkrIikifSx0b0hleFN0cmluZzpmdW5jdGlvbih0KXt2YXIgaT10aGlzLl9yZ2JhLnNsaWNlKCkscz1pLnBvcCgpO3JldHVybiB0JiZpLnB1c2gofn4oMjU1KnMpKSwiIyIrZS5tYXAoaSxmdW5jdGlvbihlKXtyZXR1cm4gZT0oZXx8MCkudG9TdHJpbmcoMTYpLDE9PT1lLmxlbmd0aD8iMCIrZTplfSkuam9pbigiIil9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLl9yZ2JhWzNdPyJ0cmFuc3BhcmVudCI6dGhpcy50b1JnYmFTdHJpbmcoKX19KSxsLmZuLnBhcnNlLnByb3RvdHlwZT1sLmZuLHUuaHNsYS50bz1mdW5jdGlvbihlKXtpZihudWxsPT1lWzBdfHxudWxsPT1lWzFdfHxudWxsPT1lWzJdKXJldHVybltudWxsLG51bGwsbnVsbCxlWzNdXTt2YXIgdCxpLHM9ZVswXS8yNTUsbj1lWzFdLzI1NSxhPWVbMl0vMjU1LG89ZVszXSxyPU1hdGgubWF4KHMsbixhKSxoPU1hdGgubWluKHMsbixhKSxsPXItaCx1PXIraCxkPS41KnU7cmV0dXJuIHQ9aD09PXI/MDpzPT09cj82MCoobi1hKS9sKzM2MDpuPT09cj82MCooYS1zKS9sKzEyMDo2MCoocy1uKS9sKzI0MCxpPTA9PT1sPzA6LjU+PWQ/bC91OmwvKDItdSksW01hdGgucm91bmQodCklMzYwLGksZCxudWxsPT1vPzE6b119LHUuaHNsYS5mcm9tPWZ1bmN0aW9uKGUpe2lmKG51bGw9PWVbMF18fG51bGw9PWVbMV18fG51bGw9PWVbMl0pcmV0dXJuW251bGwsbnVsbCxudWxsLGVbM11dO3ZhciB0PWVbMF0vMzYwLGk9ZVsxXSxzPWVbMl0sYT1lWzNdLG89LjU+PXM/cyooMStpKTpzK2ktcyppLHI9MipzLW87cmV0dXJuW01hdGgucm91bmQoMjU1Km4ocixvLHQrMS8zKSksTWF0aC5yb3VuZCgyNTUqbihyLG8sdCkpLE1hdGgucm91bmQoMjU1Km4ocixvLHQtMS8zKSksYV19LGYodSxmdW5jdGlvbihzLG4pe3ZhciBhPW4ucHJvcHMsbz1uLmNhY2hlLGg9bi50byx1PW4uZnJvbTtsLmZuW3NdPWZ1bmN0aW9uKHMpe2lmKGgmJiF0aGlzW29dJiYodGhpc1tvXT1oKHRoaXMuX3JnYmEpKSxzPT09dClyZXR1cm4gdGhpc1tvXS5zbGljZSgpO3ZhciBuLHI9ZS50eXBlKHMpLGQ9ImFycmF5Ij09PXJ8fCJvYmplY3QiPT09cj9zOmFyZ3VtZW50cyxjPXRoaXNbb10uc2xpY2UoKTtyZXR1cm4gZihhLGZ1bmN0aW9uKGUsdCl7dmFyIHM9ZFsib2JqZWN0Ij09PXI/ZTp0LmlkeF07bnVsbD09cyYmKHM9Y1t0LmlkeF0pLGNbdC5pZHhdPWkocyx0KX0pLHU/KG49bCh1KGMpKSxuW29dPWMsbik6bChjKX0sZihhLGZ1bmN0aW9uKHQsaSl7bC5mblt0XXx8KGwuZm5bdF09ZnVuY3Rpb24obil7dmFyIGEsbz1lLnR5cGUobiksaD0iYWxwaGEiPT09dD90aGlzLl9oc2xhPyJoc2xhIjoicmdiYSI6cyxsPXRoaXNbaF0oKSx1PWxbaS5pZHhdO3JldHVybiJ1bmRlZmluZWQiPT09bz91OigiZnVuY3Rpb24iPT09byYmKG49bi5jYWxsKHRoaXMsdSksbz1lLnR5cGUobikpLG51bGw9PW4mJmkuZW1wdHk/dGhpczooInN0cmluZyI9PT1vJiYoYT1yLmV4ZWMobiksYSYmKG49dStwYXJzZUZsb2F0KGFbMl0pKigiKyI9PT1hWzFdPzE6LTEpKSksbFtpLmlkeF09bix0aGlzW2hdKGwpKSl9KX0pfSksbC5ob29rPWZ1bmN0aW9uKHQpe3ZhciBpPXQuc3BsaXQoIiAiKTtmKGksZnVuY3Rpb24odCxpKXtlLmNzc0hvb2tzW2ldPXtzZXQ6ZnVuY3Rpb24odCxuKXt2YXIgYSxvLHI9IiI7aWYoInRyYW5zcGFyZW50IiE9PW4mJigic3RyaW5nIiE9PWUudHlwZShuKXx8KGE9cyhuKSkpKXtpZihuPWwoYXx8biksIWMucmdiYSYmMSE9PW4uX3JnYmFbM10pe2ZvcihvPSJiYWNrZ3JvdW5kQ29sb3IiPT09aT90LnBhcmVudE5vZGU6dDsoIiI9PT1yfHwidHJhbnNwYXJlbnQiPT09cikmJm8mJm8uc3R5bGU7KXRyeXtyPWUuY3NzKG8sImJhY2tncm91bmRDb2xvciIpLG89by5wYXJlbnROb2RlfWNhdGNoKGgpe31uPW4uYmxlbmQociYmInRyYW5zcGFyZW50IiE9PXI/cjoiX2RlZmF1bHQiKX1uPW4udG9SZ2JhU3RyaW5nKCl9dHJ5e3Quc3R5bGVbaV09bn1jYXRjaChoKXt9fX0sZS5meC5zdGVwW2ldPWZ1bmN0aW9uKHQpe3QuY29sb3JJbml0fHwodC5zdGFydD1sKHQuZWxlbSxpKSx0LmVuZD1sKHQuZW5kKSx0LmNvbG9ySW5pdD0hMCksZS5jc3NIb29rc1tpXS5zZXQodC5lbGVtLHQuc3RhcnQudHJhbnNpdGlvbih0LmVuZCx0LnBvcykpfX0pfSxsLmhvb2sobyksZS5jc3NIb29rcy5ib3JkZXJDb2xvcj17ZXhwYW5kOmZ1bmN0aW9uKGUpe3ZhciB0PXt9O3JldHVybiBmKFsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0sZnVuY3Rpb24oaSxzKXt0WyJib3JkZXIiK3MrIkNvbG9yIl09ZX0pLHR9fSxhPWUuQ29sb3IubmFtZXM9e2FxdWE6IiMwMGZmZmYiLGJsYWNrOiIjMDAwMDAwIixibHVlOiIjMDAwMGZmIixmdWNoc2lhOiIjZmYwMGZmIixncmF5OiIjODA4MDgwIixncmVlbjoiIzAwODAwMCIsbGltZToiIzAwZmYwMCIsbWFyb29uOiIjODAwMDAwIixuYXZ5OiIjMDAwMDgwIixvbGl2ZToiIzgwODAwMCIscHVycGxlOiIjODAwMDgwIixyZWQ6IiNmZjAwMDAiLHNpbHZlcjoiI2MwYzBjMCIsdGVhbDoiIzAwODA4MCIsd2hpdGU6IiNmZmZmZmYiLHllbGxvdzoiI2ZmZmYwMCIsdHJhbnNwYXJlbnQ6W251bGwsbnVsbCxudWxsLDBdLF9kZWZhdWx0OiIjZmZmZmZmIn19KHApLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgaSxzLG49dC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3P3Qub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCk6dC5jdXJyZW50U3R5bGUsYT17fTtpZihuJiZuLmxlbmd0aCYmblswXSYmbltuWzBdXSlmb3Iocz1uLmxlbmd0aDtzLS07KWk9bltzXSwic3RyaW5nIj09dHlwZW9mIG5baV0mJihhW2UuY2FtZWxDYXNlKGkpXT1uW2ldKTtlbHNlIGZvcihpIGluIG4pInN0cmluZyI9PXR5cGVvZiBuW2ldJiYoYVtpXT1uW2ldKTtyZXR1cm4gYX1mdW5jdGlvbiBpKHQsaSl7dmFyIHMsYSxvPXt9O2ZvcihzIGluIGkpYT1pW3NdLHRbc10hPT1hJiYobltzXXx8KGUuZnguc3RlcFtzXXx8IWlzTmFOKHBhcnNlRmxvYXQoYSkpKSYmKG9bc109YSkpO3JldHVybiBvfXZhciBzPVsiYWRkIiwicmVtb3ZlIiwidG9nZ2xlIl0sbj17Ym9yZGVyOjEsYm9yZGVyQm90dG9tOjEsYm9yZGVyQ29sb3I6MSxib3JkZXJMZWZ0OjEsYm9yZGVyUmlnaHQ6MSxib3JkZXJUb3A6MSxib3JkZXJXaWR0aDoxLG1hcmdpbjoxLHBhZGRpbmc6MX07ZS5lYWNoKFsiYm9yZGVyTGVmdFN0eWxlIiwiYm9yZGVyUmlnaHRTdHlsZSIsImJvcmRlckJvdHRvbVN0eWxlIiwiYm9yZGVyVG9wU3R5bGUiXSxmdW5jdGlvbih0LGkpe2UuZnguc3RlcFtpXT1mdW5jdGlvbihlKXsoIm5vbmUiIT09ZS5lbmQmJiFlLnNldEF0dHJ8fDE9PT1lLnBvcyYmIWUuc2V0QXR0cikmJihwLnN0eWxlKGUuZWxlbSxpLGUuZW5kKSxlLnNldEF0dHI9ITApfX0pLGUuZm4uYWRkQmFja3x8KGUuZm4uYWRkQmFjaz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09ZT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSl9KSxlLmVmZmVjdHMuYW5pbWF0ZUNsYXNzPWZ1bmN0aW9uKG4sYSxvLHIpe3ZhciBoPWUuc3BlZWQoYSxvLHIpO3JldHVybiB0aGlzLnF1ZXVlKGZ1bmN0aW9uKCl7dmFyIGEsbz1lKHRoaXMpLHI9by5hdHRyKCJjbGFzcyIpfHwiIixsPWguY2hpbGRyZW4/by5maW5kKCIqIikuYWRkQmFjaygpOm87bD1sLm1hcChmdW5jdGlvbigpe3ZhciBpPWUodGhpcyk7cmV0dXJue2VsOmksc3RhcnQ6dCh0aGlzKX19KSxhPWZ1bmN0aW9uKCl7ZS5lYWNoKHMsZnVuY3Rpb24oZSx0KXtuW3RdJiZvW3QrIkNsYXNzIl0oblt0XSl9KX0sYSgpLGw9bC5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmQ9dCh0aGlzLmVsWzBdKSx0aGlzLmRpZmY9aSh0aGlzLnN0YXJ0LHRoaXMuZW5kKSx0aGlzfSksby5hdHRyKCJjbGFzcyIsciksbD1sLm1hcChmdW5jdGlvbigpe3ZhciB0PXRoaXMsaT1lLkRlZmVycmVkKCkscz1lLmV4dGVuZCh7fSxoLHtxdWV1ZTohMSxjb21wbGV0ZTpmdW5jdGlvbigpe2kucmVzb2x2ZSh0KX19KTtyZXR1cm4gdGhpcy5lbC5hbmltYXRlKHRoaXMuZGlmZixzKSxpLnByb21pc2UoKX0pLGUud2hlbi5hcHBseShlLGwuZ2V0KCkpLmRvbmUoZnVuY3Rpb24oKXthKCksZS5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbigpe3ZhciB0PXRoaXMuZWw7ZS5lYWNoKHRoaXMuZGlmZixmdW5jdGlvbihlKXt0LmNzcyhlLCIiKX0pfSksaC5jb21wbGV0ZS5jYWxsKG9bMF0pfSl9KX0sZS5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihpLHMsbixhKXtyZXR1cm4gcz9lLmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmNhbGwodGhpcyx7YWRkOml9LHMsbixhKTp0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KGUuZm4uYWRkQ2xhc3MpLHJlbW92ZUNsYXNzOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihpLHMsbixhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP2UuZWZmZWN0cy5hbmltYXRlQ2xhc3MuY2FsbCh0aGlzLHtyZW1vdmU6aX0scyxuLGEpOnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oZS5mbi5yZW1vdmVDbGFzcyksdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGkscyxuLGEsbyl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2Ygc3x8dm9pZCAwPT09cz9uP2UuZWZmZWN0cy5hbmltYXRlQ2xhc3MuY2FsbCh0aGlzLHM/e2FkZDppfTp7cmVtb3ZlOml9LG4sYSxvKTp0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTplLmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmNhbGwodGhpcyx7dG9nZ2xlOml9LHMsbixhKX19KGUuZm4udG9nZ2xlQ2xhc3MpLHN3aXRjaENsYXNzOmZ1bmN0aW9uKHQsaSxzLG4sYSl7cmV0dXJuIGUuZWZmZWN0cy5hbmltYXRlQ2xhc3MuY2FsbCh0aGlzLHthZGQ6aSxyZW1vdmU6dH0scyxuLGEpfX0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGkscyxuKXtyZXR1cm4gZS5pc1BsYWluT2JqZWN0KHQpJiYoaT10LHQ9dC5lZmZlY3QpLHQ9e2VmZmVjdDp0fSxudWxsPT1pJiYoaT17fSksZS5pc0Z1bmN0aW9uKGkpJiYobj1pLHM9bnVsbCxpPXt9KSwoIm51bWJlciI9PXR5cGVvZiBpfHxlLmZ4LnNwZWVkc1tpXSkmJihuPXMscz1pLGk9e30pLGUuaXNGdW5jdGlvbihzKSYmKG49cyxzPW51bGwpLGkmJmUuZXh0ZW5kKHQsaSkscz1zfHxpLmR1cmF0aW9uLHQuZHVyYXRpb249ZS5meC5vZmY/MDoibnVtYmVyIj09dHlwZW9mIHM/czpzIGluIGUuZnguc3BlZWRzP2UuZnguc3BlZWRzW3NdOmUuZnguc3BlZWRzLl9kZWZhdWx0LHQuY29tcGxldGU9bnx8aS5jb21wbGV0ZSx0fWZ1bmN0aW9uIGkodCl7cmV0dXJuIXR8fCJudW1iZXIiPT10eXBlb2YgdHx8ZS5meC5zcGVlZHNbdF0/ITA6InN0cmluZyIhPXR5cGVvZiB0fHxlLmVmZmVjdHMuZWZmZWN0W3RdP2UuaXNGdW5jdGlvbih0KT8hMDoib2JqZWN0IiE9dHlwZW9mIHR8fHQuZWZmZWN0PyExOiEwOiEwfWUuZXh0ZW5kKGUuZWZmZWN0cyx7dmVyc2lvbjoiMS4xMS40IixzYXZlOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBpPTA7dC5sZW5ndGg+aTtpKyspbnVsbCE9PXRbaV0mJmUuZGF0YShjK3RbaV0sZVswXS5zdHlsZVt0W2ldXSl9LHJlc3RvcmU6ZnVuY3Rpb24oZSx0KXt2YXIgaSxzO2ZvcihzPTA7dC5sZW5ndGg+cztzKyspbnVsbCE9PXRbc10mJihpPWUuZGF0YShjK3Rbc10pLHZvaWQgMD09PWkmJihpPSIiKSxlLmNzcyh0W3NdLGkpKX0sc2V0TW9kZTpmdW5jdGlvbihlLHQpe3JldHVybiJ0b2dnbGUiPT09dCYmKHQ9ZS5pcygiOmhpZGRlbiIpPyJzaG93IjoiaGlkZSIpLHR9LGdldEJhc2VsaW5lOmZ1bmN0aW9uKGUsdCl7dmFyIGkscztzd2l0Y2goZVswXSl7Y2FzZSJ0b3AiOmk9MDticmVhaztjYXNlIm1pZGRsZSI6aT0uNTticmVhaztjYXNlImJvdHRvbSI6aT0xO2JyZWFrO2RlZmF1bHQ6aT1lWzBdL3QuaGVpZ2h0fXN3aXRjaChlWzFdKXtjYXNlImxlZnQiOnM9MDticmVhaztjYXNlImNlbnRlciI6cz0uNTticmVhaztjYXNlInJpZ2h0IjpzPTE7YnJlYWs7ZGVmYXVsdDpzPWVbMV0vdC53aWR0aH1yZXR1cm57eDpzLHk6aX19LGNyZWF0ZVdyYXBwZXI6ZnVuY3Rpb24odCl7aWYodC5wYXJlbnQoKS5pcygiLnVpLWVmZmVjdHMtd3JhcHBlciIpKXJldHVybiB0LnBhcmVudCgpO3ZhciBpPXt3aWR0aDp0Lm91dGVyV2lkdGgoITApLGhlaWdodDp0Lm91dGVySGVpZ2h0KCEwKSwiZmxvYXQiOnQuY3NzKCJmbG9hdCIpfSxzPWUoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoInVpLWVmZmVjdHMtd3JhcHBlciIpLmNzcyh7Zm9udFNpemU6IjEwMCUiLGJhY2tncm91bmQ6InRyYW5zcGFyZW50Iixib3JkZXI6Im5vbmUiLG1hcmdpbjowLHBhZGRpbmc6MH0pLG49e3dpZHRoOnQud2lkdGgoKSxoZWlnaHQ6dC5oZWlnaHQoKX0sYT1kb2N1bWVudC5hY3RpdmVFbGVtZW50O3RyeXthLmlkfWNhdGNoKG8pe2E9ZG9jdW1lbnQuYm9keX1yZXR1cm4gdC53cmFwKHMpLCh0WzBdPT09YXx8ZS5jb250YWlucyh0WzBdLGEpKSYmZShhKS5mb2N1cygpLHM9dC5wYXJlbnQoKSwic3RhdGljIj09PXQuY3NzKCJwb3NpdGlvbiIpPyhzLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIn0pLHQuY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUifSkpOihlLmV4dGVuZChpLHtwb3NpdGlvbjp0LmNzcygicG9zaXRpb24iKSx6SW5kZXg6dC5jc3MoInotaW5kZXgiKX0pLGUuZWFjaChbInRvcCIsImxlZnQiLCJib3R0b20iLCJyaWdodCJdLGZ1bmN0aW9uKGUscyl7aVtzXT10LmNzcyhzKSxpc05hTihwYXJzZUludChpW3NdLDEwKSkmJihpW3NdPSJhdXRvIil9KSx0LmNzcyh7cG9zaXRpb246InJlbGF0aXZlIix0b3A6MCxsZWZ0OjAscmlnaHQ6ImF1dG8iLGJvdHRvbToiYXV0byJ9KSksdC5jc3Mobikscy5jc3MoaSkuc2hvdygpfSxyZW1vdmVXcmFwcGVyOmZ1bmN0aW9uKHQpe3ZhciBpPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIHQucGFyZW50KCkuaXMoIi51aS1lZmZlY3RzLXdyYXBwZXIiKSYmKHQucGFyZW50KCkucmVwbGFjZVdpdGgodCksKHRbMF09PT1pfHxlLmNvbnRhaW5zKHRbMF0saSkpJiZlKGkpLmZvY3VzKCkpLHR9LHNldFRyYW5zaXRpb246ZnVuY3Rpb24odCxpLHMsbil7cmV0dXJuIG49bnx8e30sZS5lYWNoKGksZnVuY3Rpb24oZSxpKXt2YXIgYT10LmNzc1VuaXQoaSk7YVswXT4wJiYobltpXT1hWzBdKnMrYVsxXSl9KSxufX0pLGUuZm4uZXh0ZW5kKHtlZmZlY3Q6ZnVuY3Rpb24oKXtmdW5jdGlvbiBpKHQpe2Z1bmN0aW9uIGkoKXtlLmlzRnVuY3Rpb24oYSkmJmEuY2FsbChuWzBdKSxlLmlzRnVuY3Rpb24odCkmJnQoKX12YXIgbj1lKHRoaXMpLGE9cy5jb21wbGV0ZSxyPXMubW9kZTsobi5pcygiOmhpZGRlbiIpPyJoaWRlIj09PXI6InNob3ciPT09cik/KG5bcl0oKSxpKCkpOm8uY2FsbChuWzBdLHMsaSl9dmFyIHM9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksbj1zLm1vZGUsYT1zLnF1ZXVlLG89ZS5lZmZlY3RzLmVmZmVjdFtzLmVmZmVjdF07cmV0dXJuIGUuZngub2ZmfHwhbz9uP3RoaXNbbl0ocy5kdXJhdGlvbixzLmNvbXBsZXRlKTp0aGlzLmVhY2goZnVuY3Rpb24oKXtzLmNvbXBsZXRlJiZzLmNvbXBsZXRlLmNhbGwodGhpcyl9KTphPT09ITE/dGhpcy5lYWNoKGkpOnRoaXMucXVldWUoYXx8ImZ4IixpKX0sc2hvdzpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24ocyl7aWYoaShzKSlyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG4ubW9kZT0ic2hvdyIsdGhpcy5lZmZlY3QuY2FsbCh0aGlzLG4pfX0oZS5mbi5zaG93KSxoaWRlOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihzKXtpZihpKHMpKXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt2YXIgbj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbi5tb2RlPSJoaWRlIix0aGlzLmVmZmVjdC5jYWxsKHRoaXMsbil9fShlLmZuLmhpZGUpLHRvZ2dsZTpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24ocyl7aWYoaShzKXx8ImJvb2xlYW4iPT10eXBlb2YgcylyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG4ubW9kZT0idG9nZ2xlIix0aGlzLmVmZmVjdC5jYWxsKHRoaXMsbil9fShlLmZuLnRvZ2dsZSksY3NzVW5pdDpmdW5jdGlvbih0KXt2YXIgaT10aGlzLmNzcyh0KSxzPVtdO3JldHVybiBlLmVhY2goWyJlbSIsInB4IiwiJSIsInB0Il0sZnVuY3Rpb24oZSx0KXtpLmluZGV4T2YodCk+MCYmKHM9W3BhcnNlRmxvYXQoaSksdF0pfSksc319KX0oKSxmdW5jdGlvbigpe3ZhciB0PXt9O2UuZWFjaChbIlF1YWQiLCJDdWJpYyIsIlF1YXJ0IiwiUXVpbnQiLCJFeHBvIl0sZnVuY3Rpb24oZSxpKXt0W2ldPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdyh0LGUrMil9fSksZS5leHRlbmQodCx7U2luZTpmdW5jdGlvbihlKXtyZXR1cm4gMS1NYXRoLmNvcyhlKk1hdGguUEkvMil9LENpcmM6ZnVuY3Rpb24oZSl7cmV0dXJuIDEtTWF0aC5zcXJ0KDEtZSplKX0sRWxhc3RpYzpmdW5jdGlvbihlKXtyZXR1cm4gMD09PWV8fDE9PT1lP2U6LU1hdGgucG93KDIsOCooZS0xKSkqTWF0aC5zaW4oKDgwKihlLTEpLTcuNSkqTWF0aC5QSS8xNSl9LEJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIGUqZSooMyplLTIpfSxCb3VuY2U6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LGk9NDsoKHQ9TWF0aC5wb3coMiwtLWkpKS0xKS8xMT5lOyk7cmV0dXJuIDEvTWF0aC5wb3coNCwzLWkpLTcuNTYyNSpNYXRoLnBvdygoMyp0LTIpLzIyLWUsMil9fSksZS5lYWNoKHQsZnVuY3Rpb24odCxpKXtlLmVhc2luZ1siZWFzZUluIit0XT1pLGUuZWFzaW5nWyJlYXNlT3V0Iit0XT1mdW5jdGlvbihlKXtyZXR1cm4gMS1pKDEtZSl9LGUuZWFzaW5nWyJlYXNlSW5PdXQiK3RdPWZ1bmN0aW9uKGUpe3JldHVybi41PmU/aSgyKmUpLzI6MS1pKC0yKmUrMikvMn19KX0oKSxlLmVmZmVjdHMsZS5lZmZlY3RzLmVmZmVjdC5ibGluZD1mdW5jdGlvbih0LGkpe3ZhciBzLG4sYSxvPWUodGhpcykscj0vdXB8ZG93bnx2ZXJ0aWNhbC8saD0vdXB8bGVmdHx2ZXJ0aWNhbHxob3Jpem9udGFsLyxsPVsicG9zaXRpb24iLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJoZWlnaHQiLCJ3aWR0aCJdLHU9ZS5lZmZlY3RzLnNldE1vZGUobyx0Lm1vZGV8fCJoaWRlIiksZD10LmRpcmVjdGlvbnx8InVwIixjPXIudGVzdChkKSxwPWM/ImhlaWdodCI6IndpZHRoIixmPWM/InRvcCI6ImxlZnQiLG09aC50ZXN0KGQpLGc9e30sdj0ic2hvdyI9PT11O28ucGFyZW50KCkuaXMoIi51aS1lZmZlY3RzLXdyYXBwZXIiKT9lLmVmZmVjdHMuc2F2ZShvLnBhcmVudCgpLGwpOmUuZWZmZWN0cy5zYXZlKG8sbCksby5zaG93KCkscz1lLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihvKS5jc3Moe292ZXJmbG93OiJoaWRkZW4ifSksbj1zW3BdKCksYT1wYXJzZUZsb2F0KHMuY3NzKGYpKXx8MCxnW3BdPXY/bjowLG18fChvLmNzcyhjPyJib3R0b20iOiJyaWdodCIsMCkuY3NzKGM/InRvcCI6ImxlZnQiLCJhdXRvIikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUifSksZ1tmXT12P2E6bithKSx2JiYocy5jc3MocCwwKSxtfHxzLmNzcyhmLGErbikpLHMuYW5pbWF0ZShnLHtkdXJhdGlvbjp0LmR1cmF0aW9uLGVhc2luZzp0LmVhc2luZyxxdWV1ZTohMSxjb21wbGV0ZTpmdW5jdGlvbigpeyJoaWRlIj09PXUmJm8uaGlkZSgpLGUuZWZmZWN0cy5yZXN0b3JlKG8sbCksZS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIobyksaSgpCn19KX0sZS5lZmZlY3RzLmVmZmVjdC5ib3VuY2U9ZnVuY3Rpb24odCxpKXt2YXIgcyxuLGEsbz1lKHRoaXMpLHI9WyJwb3NpdGlvbiIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsImhlaWdodCIsIndpZHRoIl0saD1lLmVmZmVjdHMuc2V0TW9kZShvLHQubW9kZXx8ImVmZmVjdCIpLGw9ImhpZGUiPT09aCx1PSJzaG93Ij09PWgsZD10LmRpcmVjdGlvbnx8InVwIixjPXQuZGlzdGFuY2UscD10LnRpbWVzfHw1LGY9MipwKyh1fHxsPzE6MCksbT10LmR1cmF0aW9uL2YsZz10LmVhc2luZyx2PSJ1cCI9PT1kfHwiZG93biI9PT1kPyJ0b3AiOiJsZWZ0Iix5PSJ1cCI9PT1kfHwibGVmdCI9PT1kLGI9by5xdWV1ZSgpLF89Yi5sZW5ndGg7Zm9yKCh1fHxsKSYmci5wdXNoKCJvcGFjaXR5IiksZS5lZmZlY3RzLnNhdmUobyxyKSxvLnNob3coKSxlLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihvKSxjfHwoYz1vWyJ0b3AiPT09dj8ib3V0ZXJIZWlnaHQiOiJvdXRlcldpZHRoIl0oKS8zKSx1JiYoYT17b3BhY2l0eToxfSxhW3ZdPTAsby5jc3MoIm9wYWNpdHkiLDApLmNzcyh2LHk/MiotYzoyKmMpLmFuaW1hdGUoYSxtLGcpKSxsJiYoYy89TWF0aC5wb3coMixwLTEpKSxhPXt9LGFbdl09MCxzPTA7cD5zO3MrKyluPXt9LG5bdl09KHk/Ii09IjoiKz0iKStjLG8uYW5pbWF0ZShuLG0sZykuYW5pbWF0ZShhLG0sZyksYz1sPzIqYzpjLzI7bCYmKG49e29wYWNpdHk6MH0sblt2XT0oeT8iLT0iOiIrPSIpK2Msby5hbmltYXRlKG4sbSxnKSksby5xdWV1ZShmdW5jdGlvbigpe2wmJm8uaGlkZSgpLGUuZWZmZWN0cy5yZXN0b3JlKG8sciksZS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIobyksaSgpfSksXz4xJiZiLnNwbGljZS5hcHBseShiLFsxLDBdLmNvbmNhdChiLnNwbGljZShfLGYrMSkpKSxvLmRlcXVldWUoKX0sZS5lZmZlY3RzLmVmZmVjdC5jbGlwPWZ1bmN0aW9uKHQsaSl7dmFyIHMsbixhLG89ZSh0aGlzKSxyPVsicG9zaXRpb24iLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJoZWlnaHQiLCJ3aWR0aCJdLGg9ZS5lZmZlY3RzLnNldE1vZGUobyx0Lm1vZGV8fCJoaWRlIiksbD0ic2hvdyI9PT1oLHU9dC5kaXJlY3Rpb258fCJ2ZXJ0aWNhbCIsZD0idmVydGljYWwiPT09dSxjPWQ/ImhlaWdodCI6IndpZHRoIixwPWQ/InRvcCI6ImxlZnQiLGY9e307ZS5lZmZlY3RzLnNhdmUobyxyKSxvLnNob3coKSxzPWUuZWZmZWN0cy5jcmVhdGVXcmFwcGVyKG8pLmNzcyh7b3ZlcmZsb3c6ImhpZGRlbiJ9KSxuPSJJTUciPT09b1swXS50YWdOYW1lP3M6byxhPW5bY10oKSxsJiYobi5jc3MoYywwKSxuLmNzcyhwLGEvMikpLGZbY109bD9hOjAsZltwXT1sPzA6YS8yLG4uYW5pbWF0ZShmLHtxdWV1ZTohMSxkdXJhdGlvbjp0LmR1cmF0aW9uLGVhc2luZzp0LmVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpe2x8fG8uaGlkZSgpLGUuZWZmZWN0cy5yZXN0b3JlKG8sciksZS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIobyksaSgpfX0pfSxlLmVmZmVjdHMuZWZmZWN0LmRyb3A9ZnVuY3Rpb24odCxpKXt2YXIgcyxuPWUodGhpcyksYT1bInBvc2l0aW9uIiwidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Iiwib3BhY2l0eSIsImhlaWdodCIsIndpZHRoIl0sbz1lLmVmZmVjdHMuc2V0TW9kZShuLHQubW9kZXx8ImhpZGUiKSxyPSJzaG93Ij09PW8saD10LmRpcmVjdGlvbnx8ImxlZnQiLGw9InVwIj09PWh8fCJkb3duIj09PWg/InRvcCI6ImxlZnQiLHU9InVwIj09PWh8fCJsZWZ0Ij09PWg/InBvcyI6Im5lZyIsZD17b3BhY2l0eTpyPzE6MH07ZS5lZmZlY3RzLnNhdmUobixhKSxuLnNob3coKSxlLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihuKSxzPXQuZGlzdGFuY2V8fG5bInRvcCI9PT1sPyJvdXRlckhlaWdodCI6Im91dGVyV2lkdGgiXSghMCkvMixyJiZuLmNzcygib3BhY2l0eSIsMCkuY3NzKGwsInBvcyI9PT11Py1zOnMpLGRbbF09KHI/InBvcyI9PT11PyIrPSI6Ii09IjoicG9zIj09PXU/Ii09IjoiKz0iKStzLG4uYW5pbWF0ZShkLHtxdWV1ZTohMSxkdXJhdGlvbjp0LmR1cmF0aW9uLGVhc2luZzp0LmVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpeyJoaWRlIj09PW8mJm4uaGlkZSgpLGUuZWZmZWN0cy5yZXN0b3JlKG4sYSksZS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIobiksaSgpfX0pfSxlLmVmZmVjdHMuZWZmZWN0LmV4cGxvZGU9ZnVuY3Rpb24odCxpKXtmdW5jdGlvbiBzKCl7Yi5wdXNoKHRoaXMpLGIubGVuZ3RoPT09ZCpjJiZuKCl9ZnVuY3Rpb24gbigpe3AuY3NzKHt2aXNpYmlsaXR5OiJ2aXNpYmxlIn0pLGUoYikucmVtb3ZlKCksbXx8cC5oaWRlKCksaSgpfXZhciBhLG8scixoLGwsdSxkPXQucGllY2VzP01hdGgucm91bmQoTWF0aC5zcXJ0KHQucGllY2VzKSk6MyxjPWQscD1lKHRoaXMpLGY9ZS5lZmZlY3RzLnNldE1vZGUocCx0Lm1vZGV8fCJoaWRlIiksbT0ic2hvdyI9PT1mLGc9cC5zaG93KCkuY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIikub2Zmc2V0KCksdj1NYXRoLmNlaWwocC5vdXRlcldpZHRoKCkvYykseT1NYXRoLmNlaWwocC5vdXRlckhlaWdodCgpL2QpLGI9W107Zm9yKGE9MDtkPmE7YSsrKWZvcihoPWcudG9wK2EqeSx1PWEtKGQtMSkvMixvPTA7Yz5vO28rKylyPWcubGVmdCtvKnYsbD1vLShjLTEpLzIscC5jbG9uZSgpLmFwcGVuZFRvKCJib2R5Iikud3JhcCgiPGRpdj48L2Rpdj4iKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToidmlzaWJsZSIsbGVmdDotbyp2LHRvcDotYSp5fSkucGFyZW50KCkuYWRkQ2xhc3MoInVpLWVmZmVjdHMtZXhwbG9kZSIpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIixvdmVyZmxvdzoiaGlkZGVuIix3aWR0aDp2LGhlaWdodDp5LGxlZnQ6cisobT9sKnY6MCksdG9wOmgrKG0/dSp5OjApLG9wYWNpdHk6bT8wOjF9KS5hbmltYXRlKHtsZWZ0OnIrKG0/MDpsKnYpLHRvcDpoKyhtPzA6dSp5KSxvcGFjaXR5Om0/MTowfSx0LmR1cmF0aW9ufHw1MDAsdC5lYXNpbmcscyl9LGUuZWZmZWN0cy5lZmZlY3QuZmFkZT1mdW5jdGlvbih0LGkpe3ZhciBzPWUodGhpcyksbj1lLmVmZmVjdHMuc2V0TW9kZShzLHQubW9kZXx8InRvZ2dsZSIpO3MuYW5pbWF0ZSh7b3BhY2l0eTpufSx7cXVldWU6ITEsZHVyYXRpb246dC5kdXJhdGlvbixlYXNpbmc6dC5lYXNpbmcsY29tcGxldGU6aX0pfSxlLmVmZmVjdHMuZWZmZWN0LmZvbGQ9ZnVuY3Rpb24odCxpKXt2YXIgcyxuLGE9ZSh0aGlzKSxvPVsicG9zaXRpb24iLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJoZWlnaHQiLCJ3aWR0aCJdLHI9ZS5lZmZlY3RzLnNldE1vZGUoYSx0Lm1vZGV8fCJoaWRlIiksaD0ic2hvdyI9PT1yLGw9ImhpZGUiPT09cix1PXQuc2l6ZXx8MTUsZD0vKFswLTldKyklLy5leGVjKHUpLGM9ISF0Lmhvcml6Rmlyc3QscD1oIT09YyxmPXA/WyJ3aWR0aCIsImhlaWdodCJdOlsiaGVpZ2h0Iiwid2lkdGgiXSxtPXQuZHVyYXRpb24vMixnPXt9LHY9e307ZS5lZmZlY3RzLnNhdmUoYSxvKSxhLnNob3coKSxzPWUuZWZmZWN0cy5jcmVhdGVXcmFwcGVyKGEpLmNzcyh7b3ZlcmZsb3c6ImhpZGRlbiJ9KSxuPXA/W3Mud2lkdGgoKSxzLmhlaWdodCgpXTpbcy5oZWlnaHQoKSxzLndpZHRoKCldLGQmJih1PXBhcnNlSW50KGRbMV0sMTApLzEwMCpuW2w/MDoxXSksaCYmcy5jc3MoYz97aGVpZ2h0OjAsd2lkdGg6dX06e2hlaWdodDp1LHdpZHRoOjB9KSxnW2ZbMF1dPWg/blswXTp1LHZbZlsxXV09aD9uWzFdOjAscy5hbmltYXRlKGcsbSx0LmVhc2luZykuYW5pbWF0ZSh2LG0sdC5lYXNpbmcsZnVuY3Rpb24oKXtsJiZhLmhpZGUoKSxlLmVmZmVjdHMucmVzdG9yZShhLG8pLGUuZWZmZWN0cy5yZW1vdmVXcmFwcGVyKGEpLGkoKX0pfSxlLmVmZmVjdHMuZWZmZWN0LmhpZ2hsaWdodD1mdW5jdGlvbih0LGkpe3ZhciBzPWUodGhpcyksbj1bImJhY2tncm91bmRJbWFnZSIsImJhY2tncm91bmRDb2xvciIsIm9wYWNpdHkiXSxhPWUuZWZmZWN0cy5zZXRNb2RlKHMsdC5tb2RlfHwic2hvdyIpLG89e2JhY2tncm91bmRDb2xvcjpzLmNzcygiYmFja2dyb3VuZENvbG9yIil9OyJoaWRlIj09PWEmJihvLm9wYWNpdHk9MCksZS5lZmZlY3RzLnNhdmUocyxuKSxzLnNob3coKS5jc3Moe2JhY2tncm91bmRJbWFnZToibm9uZSIsYmFja2dyb3VuZENvbG9yOnQuY29sb3J8fCIjZmZmZjk5In0pLmFuaW1hdGUobyx7cXVldWU6ITEsZHVyYXRpb246dC5kdXJhdGlvbixlYXNpbmc6dC5lYXNpbmcsY29tcGxldGU6ZnVuY3Rpb24oKXsiaGlkZSI9PT1hJiZzLmhpZGUoKSxlLmVmZmVjdHMucmVzdG9yZShzLG4pLGkoKX19KX0sZS5lZmZlY3RzLmVmZmVjdC5zaXplPWZ1bmN0aW9uKHQsaSl7dmFyIHMsbixhLG89ZSh0aGlzKSxyPVsicG9zaXRpb24iLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJ3aWR0aCIsImhlaWdodCIsIm92ZXJmbG93Iiwib3BhY2l0eSJdLGg9WyJwb3NpdGlvbiIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsIm92ZXJmbG93Iiwib3BhY2l0eSJdLGw9WyJ3aWR0aCIsImhlaWdodCIsIm92ZXJmbG93Il0sdT1bImZvbnRTaXplIl0sZD1bImJvcmRlclRvcFdpZHRoIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLGM9WyJib3JkZXJMZWZ0V2lkdGgiLCJib3JkZXJSaWdodFdpZHRoIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiXSxwPWUuZWZmZWN0cy5zZXRNb2RlKG8sdC5tb2RlfHwiZWZmZWN0IiksZj10LnJlc3RvcmV8fCJlZmZlY3QiIT09cCxtPXQuc2NhbGV8fCJib3RoIixnPXQub3JpZ2lufHxbIm1pZGRsZSIsImNlbnRlciJdLHY9by5jc3MoInBvc2l0aW9uIikseT1mP3I6aCxiPXtoZWlnaHQ6MCx3aWR0aDowLG91dGVySGVpZ2h0OjAsb3V0ZXJXaWR0aDowfTsic2hvdyI9PT1wJiZvLnNob3coKSxzPXtoZWlnaHQ6by5oZWlnaHQoKSx3aWR0aDpvLndpZHRoKCksb3V0ZXJIZWlnaHQ6by5vdXRlckhlaWdodCgpLG91dGVyV2lkdGg6by5vdXRlcldpZHRoKCl9LCJ0b2dnbGUiPT09dC5tb2RlJiYic2hvdyI9PT1wPyhvLmZyb209dC50b3x8YixvLnRvPXQuZnJvbXx8cyk6KG8uZnJvbT10LmZyb218fCgic2hvdyI9PT1wP2I6cyksby50bz10LnRvfHwoImhpZGUiPT09cD9iOnMpKSxhPXtmcm9tOnt5Om8uZnJvbS5oZWlnaHQvcy5oZWlnaHQseDpvLmZyb20ud2lkdGgvcy53aWR0aH0sdG86e3k6by50by5oZWlnaHQvcy5oZWlnaHQseDpvLnRvLndpZHRoL3Mud2lkdGh9fSwoImJveCI9PT1tfHwiYm90aCI9PT1tKSYmKGEuZnJvbS55IT09YS50by55JiYoeT15LmNvbmNhdChkKSxvLmZyb209ZS5lZmZlY3RzLnNldFRyYW5zaXRpb24obyxkLGEuZnJvbS55LG8uZnJvbSksby50bz1lLmVmZmVjdHMuc2V0VHJhbnNpdGlvbihvLGQsYS50by55LG8udG8pKSxhLmZyb20ueCE9PWEudG8ueCYmKHk9eS5jb25jYXQoYyksby5mcm9tPWUuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKG8sYyxhLmZyb20ueCxvLmZyb20pLG8udG89ZS5lZmZlY3RzLnNldFRyYW5zaXRpb24obyxjLGEudG8ueCxvLnRvKSkpLCgiY29udGVudCI9PT1tfHwiYm90aCI9PT1tKSYmYS5mcm9tLnkhPT1hLnRvLnkmJih5PXkuY29uY2F0KHUpLmNvbmNhdChsKSxvLmZyb209ZS5lZmZlY3RzLnNldFRyYW5zaXRpb24obyx1LGEuZnJvbS55LG8uZnJvbSksby50bz1lLmVmZmVjdHMuc2V0VHJhbnNpdGlvbihvLHUsYS50by55LG8udG8pKSxlLmVmZmVjdHMuc2F2ZShvLHkpLG8uc2hvdygpLGUuZWZmZWN0cy5jcmVhdGVXcmFwcGVyKG8pLG8uY3NzKCJvdmVyZmxvdyIsImhpZGRlbiIpLmNzcyhvLmZyb20pLGcmJihuPWUuZWZmZWN0cy5nZXRCYXNlbGluZShnLHMpLG8uZnJvbS50b3A9KHMub3V0ZXJIZWlnaHQtby5vdXRlckhlaWdodCgpKSpuLnksby5mcm9tLmxlZnQ9KHMub3V0ZXJXaWR0aC1vLm91dGVyV2lkdGgoKSkqbi54LG8udG8udG9wPShzLm91dGVySGVpZ2h0LW8udG8ub3V0ZXJIZWlnaHQpKm4ueSxvLnRvLmxlZnQ9KHMub3V0ZXJXaWR0aC1vLnRvLm91dGVyV2lkdGgpKm4ueCksby5jc3Moby5mcm9tKSwoImNvbnRlbnQiPT09bXx8ImJvdGgiPT09bSkmJihkPWQuY29uY2F0KFsibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIl0pLmNvbmNhdCh1KSxjPWMuY29uY2F0KFsibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0Il0pLGw9ci5jb25jYXQoZCkuY29uY2F0KGMpLG8uZmluZCgiKlt3aWR0aF0iKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9ZSh0aGlzKSxzPXtoZWlnaHQ6aS5oZWlnaHQoKSx3aWR0aDppLndpZHRoKCksb3V0ZXJIZWlnaHQ6aS5vdXRlckhlaWdodCgpLG91dGVyV2lkdGg6aS5vdXRlcldpZHRoKCl9O2YmJmUuZWZmZWN0cy5zYXZlKGksbCksaS5mcm9tPXtoZWlnaHQ6cy5oZWlnaHQqYS5mcm9tLnksd2lkdGg6cy53aWR0aCphLmZyb20ueCxvdXRlckhlaWdodDpzLm91dGVySGVpZ2h0KmEuZnJvbS55LG91dGVyV2lkdGg6cy5vdXRlcldpZHRoKmEuZnJvbS54fSxpLnRvPXtoZWlnaHQ6cy5oZWlnaHQqYS50by55LHdpZHRoOnMud2lkdGgqYS50by54LG91dGVySGVpZ2h0OnMuaGVpZ2h0KmEudG8ueSxvdXRlcldpZHRoOnMud2lkdGgqYS50by54fSxhLmZyb20ueSE9PWEudG8ueSYmKGkuZnJvbT1lLmVmZmVjdHMuc2V0VHJhbnNpdGlvbihpLGQsYS5mcm9tLnksaS5mcm9tKSxpLnRvPWUuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGksZCxhLnRvLnksaS50bykpLGEuZnJvbS54IT09YS50by54JiYoaS5mcm9tPWUuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGksYyxhLmZyb20ueCxpLmZyb20pLGkudG89ZS5lZmZlY3RzLnNldFRyYW5zaXRpb24oaSxjLGEudG8ueCxpLnRvKSksaS5jc3MoaS5mcm9tKSxpLmFuaW1hdGUoaS50byx0LmR1cmF0aW9uLHQuZWFzaW5nLGZ1bmN0aW9uKCl7ZiYmZS5lZmZlY3RzLnJlc3RvcmUoaSxsKX0pfSkpLG8uYW5pbWF0ZShvLnRvLHtxdWV1ZTohMSxkdXJhdGlvbjp0LmR1cmF0aW9uLGVhc2luZzp0LmVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpezA9PT1vLnRvLm9wYWNpdHkmJm8uY3NzKCJvcGFjaXR5IixvLmZyb20ub3BhY2l0eSksImhpZGUiPT09cCYmby5oaWRlKCksZS5lZmZlY3RzLnJlc3RvcmUobyx5KSxmfHwoInN0YXRpYyI9PT12P28uY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUiLHRvcDpvLnRvLnRvcCxsZWZ0Om8udG8ubGVmdH0pOmUuZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihlLHQpe28uY3NzKHQsZnVuY3Rpb24odCxpKXt2YXIgcz1wYXJzZUludChpLDEwKSxuPWU/by50by5sZWZ0Om8udG8udG9wO3JldHVybiJhdXRvIj09PWk/bisicHgiOnMrbisicHgifSl9KSksZS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIobyksaSgpfX0pfSxlLmVmZmVjdHMuZWZmZWN0LnNjYWxlPWZ1bmN0aW9uKHQsaSl7dmFyIHM9ZSh0aGlzKSxuPWUuZXh0ZW5kKCEwLHt9LHQpLGE9ZS5lZmZlY3RzLnNldE1vZGUocyx0Lm1vZGV8fCJlZmZlY3QiKSxvPXBhcnNlSW50KHQucGVyY2VudCwxMCl8fCgwPT09cGFyc2VJbnQodC5wZXJjZW50LDEwKT8wOiJoaWRlIj09PWE/MDoxMDApLHI9dC5kaXJlY3Rpb258fCJib3RoIixoPXQub3JpZ2luLGw9e2hlaWdodDpzLmhlaWdodCgpLHdpZHRoOnMud2lkdGgoKSxvdXRlckhlaWdodDpzLm91dGVySGVpZ2h0KCksb3V0ZXJXaWR0aDpzLm91dGVyV2lkdGgoKX0sdT17eToiaG9yaXpvbnRhbCIhPT1yP28vMTAwOjEseDoidmVydGljYWwiIT09cj9vLzEwMDoxfTtuLmVmZmVjdD0ic2l6ZSIsbi5xdWV1ZT0hMSxuLmNvbXBsZXRlPWksImVmZmVjdCIhPT1hJiYobi5vcmlnaW49aHx8WyJtaWRkbGUiLCJjZW50ZXIiXSxuLnJlc3RvcmU9ITApLG4uZnJvbT10LmZyb218fCgic2hvdyI9PT1hP3toZWlnaHQ6MCx3aWR0aDowLG91dGVySGVpZ2h0OjAsb3V0ZXJXaWR0aDowfTpsKSxuLnRvPXtoZWlnaHQ6bC5oZWlnaHQqdS55LHdpZHRoOmwud2lkdGgqdS54LG91dGVySGVpZ2h0Omwub3V0ZXJIZWlnaHQqdS55LG91dGVyV2lkdGg6bC5vdXRlcldpZHRoKnUueH0sbi5mYWRlJiYoInNob3ciPT09YSYmKG4uZnJvbS5vcGFjaXR5PTAsbi50by5vcGFjaXR5PTEpLCJoaWRlIj09PWEmJihuLmZyb20ub3BhY2l0eT0xLG4udG8ub3BhY2l0eT0wKSkscy5lZmZlY3Qobil9LGUuZWZmZWN0cy5lZmZlY3QucHVmZj1mdW5jdGlvbih0LGkpe3ZhciBzPWUodGhpcyksbj1lLmVmZmVjdHMuc2V0TW9kZShzLHQubW9kZXx8ImhpZGUiKSxhPSJoaWRlIj09PW4sbz1wYXJzZUludCh0LnBlcmNlbnQsMTApfHwxNTAscj1vLzEwMCxoPXtoZWlnaHQ6cy5oZWlnaHQoKSx3aWR0aDpzLndpZHRoKCksb3V0ZXJIZWlnaHQ6cy5vdXRlckhlaWdodCgpLG91dGVyV2lkdGg6cy5vdXRlcldpZHRoKCl9O2UuZXh0ZW5kKHQse2VmZmVjdDoic2NhbGUiLHF1ZXVlOiExLGZhZGU6ITAsbW9kZTpuLGNvbXBsZXRlOmkscGVyY2VudDphP286MTAwLGZyb206YT9oOntoZWlnaHQ6aC5oZWlnaHQqcix3aWR0aDpoLndpZHRoKnIsb3V0ZXJIZWlnaHQ6aC5vdXRlckhlaWdodCpyLG91dGVyV2lkdGg6aC5vdXRlcldpZHRoKnJ9fSkscy5lZmZlY3QodCl9LGUuZWZmZWN0cy5lZmZlY3QucHVsc2F0ZT1mdW5jdGlvbih0LGkpe3ZhciBzLG49ZSh0aGlzKSxhPWUuZWZmZWN0cy5zZXRNb2RlKG4sdC5tb2RlfHwic2hvdyIpLG89InNob3ciPT09YSxyPSJoaWRlIj09PWEsaD1vfHwiaGlkZSI9PT1hLGw9MioodC50aW1lc3x8NSkrKGg/MTowKSx1PXQuZHVyYXRpb24vbCxkPTAsYz1uLnF1ZXVlKCkscD1jLmxlbmd0aDtmb3IoKG98fCFuLmlzKCI6dmlzaWJsZSIpKSYmKG4uY3NzKCJvcGFjaXR5IiwwKS5zaG93KCksZD0xKSxzPTE7bD5zO3MrKyluLmFuaW1hdGUoe29wYWNpdHk6ZH0sdSx0LmVhc2luZyksZD0xLWQ7bi5hbmltYXRlKHtvcGFjaXR5OmR9LHUsdC5lYXNpbmcpLG4ucXVldWUoZnVuY3Rpb24oKXtyJiZuLmhpZGUoKSxpKCl9KSxwPjEmJmMuc3BsaWNlLmFwcGx5KGMsWzEsMF0uY29uY2F0KGMuc3BsaWNlKHAsbCsxKSkpLG4uZGVxdWV1ZSgpfSxlLmVmZmVjdHMuZWZmZWN0LnNoYWtlPWZ1bmN0aW9uKHQsaSl7dmFyIHMsbj1lKHRoaXMpLGE9WyJwb3NpdGlvbiIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsImhlaWdodCIsIndpZHRoIl0sbz1lLmVmZmVjdHMuc2V0TW9kZShuLHQubW9kZXx8ImVmZmVjdCIpLHI9dC5kaXJlY3Rpb258fCJsZWZ0IixoPXQuZGlzdGFuY2V8fDIwLGw9dC50aW1lc3x8Myx1PTIqbCsxLGQ9TWF0aC5yb3VuZCh0LmR1cmF0aW9uL3UpLGM9InVwIj09PXJ8fCJkb3duIj09PXI/InRvcCI6ImxlZnQiLHA9InVwIj09PXJ8fCJsZWZ0Ij09PXIsZj17fSxtPXt9LGc9e30sdj1uLnF1ZXVlKCkseT12Lmxlbmd0aDtmb3IoZS5lZmZlY3RzLnNhdmUobixhKSxuLnNob3coKSxlLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihuKSxmW2NdPShwPyItPSI6Iis9IikraCxtW2NdPShwPyIrPSI6Ii09IikrMipoLGdbY109KHA/Ii09IjoiKz0iKSsyKmgsbi5hbmltYXRlKGYsZCx0LmVhc2luZykscz0xO2w+cztzKyspbi5hbmltYXRlKG0sZCx0LmVhc2luZykuYW5pbWF0ZShnLGQsdC5lYXNpbmcpO24uYW5pbWF0ZShtLGQsdC5lYXNpbmcpLmFuaW1hdGUoZixkLzIsdC5lYXNpbmcpLnF1ZXVlKGZ1bmN0aW9uKCl7ImhpZGUiPT09byYmbi5oaWRlKCksZS5lZmZlY3RzLnJlc3RvcmUobixhKSxlLmVmZmVjdHMucmVtb3ZlV3JhcHBlcihuKSxpKCl9KSx5PjEmJnYuc3BsaWNlLmFwcGx5KHYsWzEsMF0uY29uY2F0KHYuc3BsaWNlKHksdSsxKSkpLG4uZGVxdWV1ZSgpfSxlLmVmZmVjdHMuZWZmZWN0LnNsaWRlPWZ1bmN0aW9uKHQsaSl7dmFyIHMsbj1lKHRoaXMpLGE9WyJwb3NpdGlvbiIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsIndpZHRoIiwiaGVpZ2h0Il0sbz1lLmVmZmVjdHMuc2V0TW9kZShuLHQubW9kZXx8InNob3ciKSxyPSJzaG93Ij09PW8saD10LmRpcmVjdGlvbnx8ImxlZnQiLGw9InVwIj09PWh8fCJkb3duIj09PWg/InRvcCI6ImxlZnQiLHU9InVwIj09PWh8fCJsZWZ0Ij09PWgsZD17fTtlLmVmZmVjdHMuc2F2ZShuLGEpLG4uc2hvdygpLHM9dC5kaXN0YW5jZXx8blsidG9wIj09PWw/Im91dGVySGVpZ2h0Ijoib3V0ZXJXaWR0aCJdKCEwKSxlLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihuKS5jc3Moe292ZXJmbG93OiJoaWRkZW4ifSksciYmbi5jc3MobCx1P2lzTmFOKHMpPyItIitzOi1zOnMpLGRbbF09KHI/dT8iKz0iOiItPSI6dT8iLT0iOiIrPSIpK3Msbi5hbmltYXRlKGQse3F1ZXVlOiExLGR1cmF0aW9uOnQuZHVyYXRpb24sZWFzaW5nOnQuZWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7ImhpZGUiPT09byYmbi5oaWRlKCksZS5lZmZlY3RzLnJlc3RvcmUobixhKSxlLmVmZmVjdHMucmVtb3ZlV3JhcHBlcihuKSxpKCl9fSl9LGUuZWZmZWN0cy5lZmZlY3QudHJhbnNmZXI9ZnVuY3Rpb24odCxpKXt2YXIgcz1lKHRoaXMpLG49ZSh0LnRvKSxhPSJmaXhlZCI9PT1uLmNzcygicG9zaXRpb24iKSxvPWUoImJvZHkiKSxyPWE/by5zY3JvbGxUb3AoKTowLGg9YT9vLnNjcm9sbExlZnQoKTowLGw9bi5vZmZzZXQoKSx1PXt0b3A6bC50b3AtcixsZWZ0OmwubGVmdC1oLGhlaWdodDpuLmlubmVySGVpZ2h0KCksd2lkdGg6bi5pbm5lcldpZHRoKCl9LGQ9cy5vZmZzZXQoKSxjPWUoIjxkaXYgY2xhc3M9J3VpLWVmZmVjdHMtdHJhbnNmZXInPjwvZGl2PiIpLmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpLmFkZENsYXNzKHQuY2xhc3NOYW1lKS5jc3Moe3RvcDpkLnRvcC1yLGxlZnQ6ZC5sZWZ0LWgsaGVpZ2h0OnMuaW5uZXJIZWlnaHQoKSx3aWR0aDpzLmlubmVyV2lkdGgoKSxwb3NpdGlvbjphPyJmaXhlZCI6ImFic29sdXRlIn0pLmFuaW1hdGUodSx0LmR1cmF0aW9uLHQuZWFzaW5nLGZ1bmN0aW9uKCl7Yy5yZW1vdmUoKSxpKCl9KX19KTs="></script>
<link href="data:text/css,%0A%0A%2Etocify%20%7B%0Awidth%3A%2020%25%3B%0Amax%2Dheight%3A%2090%25%3B%0Aoverflow%3A%20auto%3B%0Amargin%2Dleft%3A%202%25%3B%0Aposition%3A%20fixed%3B%0Aborder%3A%201px%20solid%20%23ccc%3B%0Aborder%2Dradius%3A%206px%3B%0A%7D%0A%0A%2Etocify%20ul%2C%20%2Etocify%20li%20%7B%0Alist%2Dstyle%3A%20none%3B%0Amargin%3A%200%3B%0Apadding%3A%200%3B%0Aborder%3A%20none%3B%0Aline%2Dheight%3A%2030px%3B%0A%7D%0A%0A%2Etocify%2Dheader%20%7B%0Atext%2Dindent%3A%2010px%3B%0A%7D%0A%0A%2Etocify%2Dsubheader%20%7B%0Atext%2Dindent%3A%2020px%3B%0Adisplay%3A%20none%3B%0A%7D%0A%0A%2Etocify%2Dsubheader%20li%20%7B%0Afont%2Dsize%3A%2012px%3B%0A%7D%0A%0A%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%7B%0Atext%2Dindent%3A%2030px%3B%0A%7D%0A%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%7B%0Atext%2Dindent%3A%2040px%3B%0A%7D%0A%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%7B%0Atext%2Dindent%3A%2050px%3B%0A%7D%0A%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%7B%0Atext%2Dindent%3A%2060px%3B%0A%7D%0A%0A%2Etocify%20%2Etocify%2Ditem%20%3E%20a%2C%20%2Etocify%20%2Enav%2Dlist%20%2Enav%2Dheader%20%7B%0Amargin%3A%200px%3B%0A%7D%0A%0A%2Etocify%20%2Etocify%2Ditem%20a%2C%20%2Etocify%20%2Elist%2Dgroup%2Ditem%20%7B%0Apadding%3A%205px%3B%0A%7D%0A%2Etocify%20%2Enav%2Dpills%20%3E%20li%20%7B%0Afloat%3A%20none%3B%0A%7D%0A%0A%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,LyoganF1ZXJ5IFRvY2lmeSAtIHYxLjkuMSAtIDIwMTMtMTAtMjIKICogaHR0cDovL3d3dy5ncmVnZnJhbmtvLmNvbS9qcXVlcnkudG9jaWZ5LmpzLwogKiBDb3B5cmlnaHQgKGMpIDIwMTMgR3JlZyBGcmFua287IExpY2Vuc2VkIE1JVCAqLwoKLy8gSW1tZWRpYXRlbHktSW52b2tlZCBGdW5jdGlvbiBFeHByZXNzaW9uIChJSUZFKSBbQmVuIEFsbWFuIEJsb2cgUG9zdF0oaHR0cDovL2JlbmFsbWFuLmNvbS9uZXdzLzIwMTAvMTEvaW1tZWRpYXRlbHktaW52b2tlZC1mdW5jdGlvbi1leHByZXNzaW9uLykgdGhhdCBjYWxscyBhbm90aGVyIElJRkUgdGhhdCBjb250YWlucyBhbGwgb2YgdGhlIHBsdWdpbiBsb2dpYy4gIEkgdXNlZCB0aGlzIHBhdHRlcm4gc28gdGhhdCBhbnlvbmUgdmlld2luZyB0aGlzIGNvZGUgd291bGQgbm90IGhhdmUgdG8gc2Nyb2xsIHRvIHRoZSBib3R0b20gb2YgdGhlIHBhZ2UgdG8gdmlldyB0aGUgbG9jYWwgcGFyYW1ldGVycyB0aGF0IHdlcmUgcGFzc2VkIHRvIHRoZSBtYWluIElJRkUuCihmdW5jdGlvbih0b2NpZnkpIHsKCiAgICAvLyBFQ01BU2NyaXB0IDUgU3RyaWN0IE1vZGU6IFtKb2huIFJlc2lnIEJsb2cgUG9zdF0oaHR0cDovL2Vqb2huLm9yZy9ibG9nL2VjbWFzY3JpcHQtNS1zdHJpY3QtbW9kZS1qc29uLWFuZC1tb3JlLykKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICAvLyBDYWxscyB0aGUgc2Vjb25kIElJRkUgYW5kIGxvY2FsbHkgcGFzc2VzIGluIHRoZSBnbG9iYWwgalF1ZXJ5LCB3aW5kb3csIGFuZCBkb2N1bWVudCBvYmplY3RzCiAgICB0b2NpZnkod2luZG93LmpRdWVyeSwgd2luZG93LCBkb2N1bWVudCk7CgogIH0KCiAgLy8gTG9jYWxseSBwYXNzZXMgaW4gYGpRdWVyeWAsIHRoZSBgd2luZG93YCBvYmplY3QsIHRoZSBgZG9jdW1lbnRgIG9iamVjdCwgYW5kIGFuIGB1bmRlZmluZWRgIHZhcmlhYmxlLiAgVGhlIGBqUXVlcnlgLCBgd2luZG93YCBhbmQgYGRvY3VtZW50YCBvYmplY3RzIGFyZSBwYXNzZWQgaW4gbG9jYWxseSwgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSwgc2luY2UgamF2YXNjcmlwdCBmaXJzdCBzZWFyY2hlcyBmb3IgYSB2YXJpYWJsZSBtYXRjaCB3aXRoaW4gdGhlIGxvY2FsIHZhcmlhYmxlcyBzZXQgYmVmb3JlIHNlYXJjaGluZyB0aGUgZ2xvYmFsIHZhcmlhYmxlcyBzZXQuICBBbGwgb2YgdGhlIGdsb2JhbCB2YXJpYWJsZXMgYXJlIGFsc28gcGFzc2VkIGluIGxvY2FsbHkgdG8gYmUgbWluaWZpZXIgZnJpZW5kbHkuIGB1bmRlZmluZWRgIGNhbiBiZSBwYXNzZWQgaW4gbG9jYWxseSwgYmVjYXVzZSBpdCBpcyBub3QgYSByZXNlcnZlZCB3b3JkIGluIEphdmFTY3JpcHQuCiAgKGZ1bmN0aW9uKCQsIHdpbmRvdywgZG9jdW1lbnQsIHVuZGVmaW5lZCkgewoKICAgIC8vIEVDTUFTY3JpcHQgNSBTdHJpY3QgTW9kZTogW0pvaG4gUmVzaWcgQmxvZyBQb3N0XShodHRwOi8vZWpvaG4ub3JnL2Jsb2cvZWNtYXNjcmlwdC01LXN0cmljdC1tb2RlLWpzb24tYW5kLW1vcmUvKQogICAgInVzZSBzdHJpY3QiOwoKICAgIHZhciB0b2NDbGFzc05hbWUgPSAidG9jaWZ5IiwKICAgICAgdG9jQ2xhc3MgPSAiLiIgKyB0b2NDbGFzc05hbWUsCiAgICAgIHRvY0ZvY3VzQ2xhc3NOYW1lID0gInRvY2lmeS1mb2N1cyIsCiAgICAgIHRvY0hvdmVyQ2xhc3NOYW1lID0gInRvY2lmeS1ob3ZlciIsCiAgICAgIGhpZGVUb2NDbGFzc05hbWUgPSAidG9jaWZ5LWhpZGUiLAogICAgICBoaWRlVG9jQ2xhc3MgPSAiLiIgKyBoaWRlVG9jQ2xhc3NOYW1lLAogICAgICBoZWFkZXJDbGFzc05hbWUgPSAidG9jaWZ5LWhlYWRlciIsCiAgICAgIGhlYWRlckNsYXNzID0gIi4iICsgaGVhZGVyQ2xhc3NOYW1lLAogICAgICBzdWJoZWFkZXJDbGFzc05hbWUgPSAidG9jaWZ5LXN1YmhlYWRlciIsCiAgICAgIHN1YmhlYWRlckNsYXNzID0gIi4iICsgc3ViaGVhZGVyQ2xhc3NOYW1lLAogICAgICBpdGVtQ2xhc3NOYW1lID0gInRvY2lmeS1pdGVtIiwKICAgICAgaXRlbUNsYXNzID0gIi4iICsgaXRlbUNsYXNzTmFtZSwKICAgICAgZXh0ZW5kUGFnZUNsYXNzTmFtZSA9ICJ0b2NpZnktZXh0ZW5kLXBhZ2UiLAogICAgICBleHRlbmRQYWdlQ2xhc3MgPSAiLiIgKyBleHRlbmRQYWdlQ2xhc3NOYW1lOwoKICAgIC8vIENhbGxpbmcgdGhlIGpRdWVyeVVJIFdpZGdldCBGYWN0b3J5IE1ldGhvZAogICAgJC53aWRnZXQoInRvYy50b2NpZnkiLCB7CgogICAgICAvL1BsdWdpbiB2ZXJzaW9uCiAgICAgIHZlcnNpb246ICIxLjkuMSIsCgogICAgICAvLyBUaGVzZSBvcHRpb25zIHdpbGwgYmUgdXNlZCBhcyBkZWZhdWx0cwogICAgICBvcHRpb25zOiB7CgogICAgICAgIC8vICoqY29udGV4dCoqOiBBY2NlcHRzIFN0cmluZzogQW55IGpRdWVyeSBzZWxlY3RvcgogICAgICAgIC8vIFRoZSBjb250YWluZXIgZWxlbWVudCB0aGF0IGhvbGRzIGFsbCBvZiB0aGUgZWxlbWVudHMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgdGFibGUgb2YgY29udGVudHMKICAgICAgICBjb250ZXh0OiAiYm9keSIsCgogICAgICAgIC8vICoqaWdub3JlU2VsZWN0b3IqKjogQWNjZXB0cyBTdHJpbmc6IEFueSBqUXVlcnkgc2VsZWN0b3IKICAgICAgICAvLyBBIHNlbGVjdG9yIHRvIGFueSBlbGVtZW50IHRoYXQgd291bGQgYmUgbWF0Y2hlZCBieSBzZWxlY3RvcnMgdGhhdCB5b3Ugd2lzaCB0byBiZSBpZ25vcmVkCiAgICAgICAgaWdub3JlU2VsZWN0b3I6IG51bGwsCgogICAgICAgIC8vICoqc2VsZWN0b3JzKio6IEFjY2VwdHMgYW4gQXJyYXkgb2YgU3RyaW5nczogQW55IGpRdWVyeSBzZWxlY3RvcnMKICAgICAgICAvLyBUaGUgZWxlbWVudCdzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHRhYmxlIG9mIGNvbnRlbnRzLiAgVGhlIG9yZGVyIGlzIHZlcnkgaW1wb3J0YW50IHNpbmNlIGl0IHdpbGwgZGV0ZXJtaW5lIHRoZSB0YWJsZSBvZiBjb250ZW50J3MgbmVzdGluZyBzdHJ1Y3R1cmUKICAgICAgICBzZWxlY3RvcnM6ICJoMSwgaDIsIGgzIiwKCiAgICAgICAgLy8gKipzaG93QW5kSGlkZSoqOiBBY2NlcHRzIGEgYm9vbGVhbjogdHJ1ZSBvciBmYWxzZQogICAgICAgIC8vIFVzZWQgdG8gZGV0ZXJtaW5lIGlmIGVsZW1lbnRzIHNob3VsZCBiZSBzaG93biBhbmQgaGlkZGVuCiAgICAgICAgc2hvd0FuZEhpZGU6IHRydWUsCgogICAgICAgIC8vICoqc2hvd0VmZmVjdCoqOiBBY2NlcHRzIFN0cmluZzogIm5vbmUiLCAiZmFkZUluIiwgInNob3ciLCBvciAic2xpZGVEb3duIgogICAgICAgIC8vIFVzZWQgdG8gZGlzcGxheSBhbnkgb2YgdGhlIHRhYmxlIG9mIGNvbnRlbnRzIG5lc3RlZCBpdGVtcwogICAgICAgIHNob3dFZmZlY3Q6ICJzbGlkZURvd24iLAoKICAgICAgICAvLyAqKnNob3dFZmZlY3RTcGVlZCoqOiBBY2NlcHRzIE51bWJlciAobWlsbGlzZWNvbmRzKSBvciBTdHJpbmc6ICJzbG93IiwgIm1lZGl1bSIsIG9yICJmYXN0IgogICAgICAgIC8vIFRoZSB0aW1lIGR1cmF0aW9uIG9mIHRoZSBzaG93IGFuaW1hdGlvbgogICAgICAgIHNob3dFZmZlY3RTcGVlZDogIm1lZGl1bSIsCgogICAgICAgIC8vICoqaGlkZUVmZmVjdCoqOiBBY2NlcHRzIFN0cmluZzogIm5vbmUiLCAiZmFkZU91dCIsICJoaWRlIiwgb3IgInNsaWRlVXAiCiAgICAgICAgLy8gVXNlZCB0byBoaWRlIGFueSBvZiB0aGUgdGFibGUgb2YgY29udGVudHMgbmVzdGVkIGl0ZW1zCiAgICAgICAgaGlkZUVmZmVjdDogInNsaWRlVXAiLAoKICAgICAgICAvLyAqKmhpZGVFZmZlY3RTcGVlZCoqOiBBY2NlcHRzIE51bWJlciAobWlsbGlzZWNvbmRzKSBvciBTdHJpbmc6ICJzbG93IiwgIm1lZGl1bSIsIG9yICJmYXN0IgogICAgICAgIC8vIFRoZSB0aW1lIGR1cmF0aW9uIG9mIHRoZSBoaWRlIGFuaW1hdGlvbgogICAgICAgIGhpZGVFZmZlY3RTcGVlZDogIm1lZGl1bSIsCgogICAgICAgIC8vICoqc21vb3RoU2Nyb2xsKio6IEFjY2VwdHMgYSBib29sZWFuOiB0cnVlIG9yIGZhbHNlCiAgICAgICAgLy8gRGV0ZXJtaW5lcyBpZiBhIGpRdWVyeSBhbmltYXRpb24gc2hvdWxkIGJlIHVzZWQgdG8gc2Nyb2xsIHRvIHNwZWNpZmljIHRhYmxlIG9mIGNvbnRlbnRzIGl0ZW1zIG9uIHRoZSBwYWdlCiAgICAgICAgc21vb3RoU2Nyb2xsOiB0cnVlLAoKICAgICAgICAvLyAqKnNtb290aFNjcm9sbFNwZWVkKio6IEFjY2VwdHMgTnVtYmVyIChtaWxsaXNlY29uZHMpIG9yIFN0cmluZzogInNsb3ciLCAibWVkaXVtIiwgb3IgImZhc3QiCiAgICAgICAgLy8gVGhlIHRpbWUgZHVyYXRpb24gb2YgdGhlIHNtb290aFNjcm9sbCBhbmltYXRpb24KICAgICAgICBzbW9vdGhTY3JvbGxTcGVlZDogIm1lZGl1bSIsCgogICAgICAgIC8vICoqc2Nyb2xsVG8qKjogQWNjZXB0cyBOdW1iZXIgKHBpeGVscykKICAgICAgICAvLyBUaGUgYW1vdW50IG9mIHNwYWNlIGJldHdlZW4gdGhlIHRvcCBvZiBwYWdlIGFuZCB0aGUgc2VsZWN0ZWQgdGFibGUgb2YgY29udGVudHMgaXRlbSBhZnRlciB0aGUgcGFnZSBoYXMgYmVlbiBzY3JvbGxlZAogICAgICAgIHNjcm9sbFRvOiAwLAoKICAgICAgICAvLyAqKnNob3dBbmRIaWRlT25TY3JvbGwqKjogQWNjZXB0cyBhIGJvb2xlYW46IHRydWUgb3IgZmFsc2UKICAgICAgICAvLyBEZXRlcm1pbmVzIGlmIHRhYmxlIG9mIGNvbnRlbnRzIG5lc3RlZCBpdGVtcyBzaG91bGQgYmUgc2hvd24gYW5kIGhpZGRlbiB3aGlsZSBzY3JvbGxpbmcKICAgICAgICBzaG93QW5kSGlkZU9uU2Nyb2xsOiB0cnVlLAoKICAgICAgICAvLyAqKmhpZ2hsaWdodE9uU2Nyb2xsKio6IEFjY2VwdHMgYSBib29sZWFuOiB0cnVlIG9yIGZhbHNlCiAgICAgICAgLy8gRGV0ZXJtaW5lcyBpZiB0YWJsZSBvZiBjb250ZW50cyBuZXN0ZWQgaXRlbXMgc2hvdWxkIGJlIGhpZ2hsaWdodGVkIChzZXQgdG8gYSBkaWZmZXJlbnQgY29sb3IpIHdoaWxlIHNjcm9sbGluZwogICAgICAgIGhpZ2hsaWdodE9uU2Nyb2xsOiB0cnVlLAoKICAgICAgICAvLyAqKmhpZ2hsaWdodE9mZnNldCoqOiBBY2NlcHRzIGEgbnVtYmVyCiAgICAgICAgLy8gVGhlIG9mZnNldCBkaXN0YW5jZSBpbiBwaXhlbHMgdG8gdHJpZ2dlciB0aGUgbmV4dCBhY3RpdmUgdGFibGUgb2YgY29udGVudHMgaXRlbQogICAgICAgIGhpZ2hsaWdodE9mZnNldDogNDAsCgogICAgICAgIC8vICoqdGhlbWUqKjogQWNjZXB0cyBhIHN0cmluZzogImJvb3RzdHJhcCIsICJqcXVlcnl1aSIsIG9yICJub25lIgogICAgICAgIC8vIERldGVybWluZXMgaWYgVHdpdHRlciBCb290c3RyYXAsIGpRdWVyeVVJLCBvciBUb2NpZnkgY2xhc3NlcyBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHRhYmxlIG9mIGNvbnRlbnRzCiAgICAgICAgdGhlbWU6ICJib290c3RyYXAiLAoKICAgICAgICAvLyAqKmV4dGVuZFBhZ2UqKjogQWNjZXB0cyBhIGJvb2xlYW46IHRydWUgb3IgZmFsc2UKICAgICAgICAvLyBJZiBhIHVzZXIgc2Nyb2xscyB0byB0aGUgYm90dG9tIG9mIHRoZSBwYWdlIGFuZCB0aGUgcGFnZSBpcyBub3QgdGFsbCBlbm91Z2ggdG8gc2Nyb2xsIHRvIHRoZSBsYXN0IHRhYmxlIG9mIGNvbnRlbnRzIGl0ZW0sIHRoZW4gdGhlIHBhZ2UgaGVpZ2h0IGlzIGluY3JlYXNlZAogICAgICAgIGV4dGVuZFBhZ2U6IHRydWUsCgogICAgICAgIC8vICoqZXh0ZW5kUGFnZU9mZnNldCoqOiBBY2NlcHRzIGEgbnVtYmVyOiBwaXhlbHMKICAgICAgICAvLyBIb3cgY2xvc2UgdG8gdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSBhIHVzZXIgbXVzdCBzY3JvbGwgYmVmb3JlIHRoZSBwYWdlIGlzIGV4dGVuZGVkCiAgICAgICAgZXh0ZW5kUGFnZU9mZnNldDogMTAwLAoKICAgICAgICAvLyAqKmhpc3RvcnkqKjogQWNjZXB0cyBhIGJvb2xlYW46IHRydWUgb3IgZmFsc2UKICAgICAgICAvLyBBZGRzIGEgaGFzaCB0byB0aGUgcGFnZSB1cmwgdG8gbWFpbnRhaW4gaGlzdG9yeQogICAgICAgIGhpc3Rvcnk6IHRydWUsCgogICAgICAgIC8vICoqc2Nyb2xsSGlzdG9yeSoqOiBBY2NlcHRzIGEgYm9vbGVhbjogdHJ1ZSBvciBmYWxzZQogICAgICAgIC8vIEFkZHMgYSBoYXNoIHRvIHRoZSBwYWdlIHVybCwgdG8gbWFpbnRhaW4gaGlzdG9yeSwgd2hlbiBzY3JvbGxpbmcgdG8gYSBUT0MgaXRlbQogICAgICAgIHNjcm9sbEhpc3Rvcnk6IGZhbHNlLAoKICAgICAgICAvLyAqKmhhc2hHZW5lcmF0b3IqKjogSG93IHRoZSBoYXNoIHZhbHVlICh0aGUgYW5jaG9yIHNlZ21lbnQgb2YgdGhlIFVSTCwgZm9sbG93aW5nIHRoZQogICAgICAgIC8vICMgY2hhcmFjdGVyKSB3aWxsIGJlIGdlbmVyYXRlZC4KICAgICAgICAvLwogICAgICAgIC8vICJjb21wYWN0IiAoZGVmYXVsdCkgLSAjQ29tcHJlc3Nlc0V2ZXJ5dGhpbmdUb2dldGhlcgogICAgICAgIC8vICJwcmV0dHkiIC0gI2xvb2tzLWxpa2UtYS1uaWNlLXVybC1hbmQtaXMtZWFzaWx5LXJlYWRhYmxlCiAgICAgICAgLy8gZnVuY3Rpb24odGV4dCwgZWxlbWVudCl7fSAtIFlvdXIgb3duIGhhc2ggZ2VuZXJhdGlvbiBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIHRleHQgYXMgYW4KICAgICAgICAvLyBhcmd1bWVudCwgYW5kIHJldHVybnMgdGhlIGhhc2ggdmFsdWUuCiAgICAgICAgaGFzaEdlbmVyYXRvcjogImNvbXBhY3QiLAoKICAgICAgICAvLyAqKmhpZ2hsaWdodERlZmF1bHQqKjogQWNjZXB0cyBhIGJvb2xlYW46IHRydWUgb3IgZmFsc2UKICAgICAgICAvLyBTZXQncyB0aGUgZmlyc3QgVE9DIGl0ZW0gYXMgYWN0aXZlIGlmIG5vIG90aGVyIFRPQyBpdGVtIGlzIGFjdGl2ZS4KICAgICAgICBoaWdobGlnaHREZWZhdWx0OiB0cnVlCgogICAgICB9LAoKICAgICAgLy8gX0NyZWF0ZQogICAgICAvLyAtLS0tLS0tCiAgICAgIC8vICAgICAgQ29uc3RydWN0cyB0aGUgcGx1Z2luLiAgT25seSBjYWxsZWQgb25jZS4KICAgICAgX2NyZWF0ZTogZnVuY3Rpb24oKSB7CgogICAgICAgIHZhciBzZWxmID0gdGhpczsKCiAgICAgICAgc2VsZi5leHRlbmRQYWdlU2Nyb2xsID0gdHJ1ZTsKCiAgICAgICAgLy8gSW50ZXJuYWwgYXJyYXkgdGhhdCBrZWVwcyB0cmFjayBvZiBhbGwgVE9DIGl0ZW1zIChIZWxwcyB0byByZWNvZ25pemUgaWYgdGhlcmUgYXJlIGR1cGxpY2F0ZSBUT0MgaXRlbSBzdHJpbmdzKQogICAgICAgIHNlbGYuaXRlbXMgPSBbXTsKCiAgICAgICAgLy8gR2VuZXJhdGVzIHRoZSBIVE1MIGZvciB0aGUgZHluYW1pYyB0YWJsZSBvZiBjb250ZW50cwogICAgICAgIHNlbGYuX2dlbmVyYXRlVG9jKCk7CgogICAgICAgIC8vIEFkZHMgQ1NTIGNsYXNzZXMgdG8gdGhlIG5ld2x5IGdlbmVyYXRlZCB0YWJsZSBvZiBjb250ZW50cyBIVE1MCiAgICAgICAgc2VsZi5fYWRkQ1NTQ2xhc3NlcygpOwoKICAgICAgICBzZWxmLndlYmtpdCA9IChmdW5jdGlvbigpIHsKCiAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIHdpbmRvdykgewoKICAgICAgICAgICAgaWYgKHByb3ApIHsKCiAgICAgICAgICAgICAgaWYgKHByb3AudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJ3ZWJraXQiKSAhPT0gLTEpIHsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKCiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICAgIH0oKSk7CgogICAgICAgIC8vIEFkZHMgalF1ZXJ5IGV2ZW50IGhhbmRsZXJzIHRvIHRoZSBuZXdseSBnZW5lcmF0ZWQgdGFibGUgb2YgY29udGVudHMKICAgICAgICBzZWxmLl9zZXRFdmVudEhhbmRsZXJzKCk7CgogICAgICAgIC8vIEJpbmRpbmcgdG8gdGhlIFdpbmRvdyBsb2FkIGV2ZW50IHRvIG1ha2Ugc3VyZSB0aGUgY29ycmVjdCBzY3JvbGxUb3AgaXMgY2FsY3VsYXRlZAogICAgICAgICQod2luZG93KS5vbigibG9hZCIsIGZ1bmN0aW9uKCkgewoKICAgICAgICAgIC8vIFNldHMgdGhlIGFjdGl2ZSBUT0MgaXRlbQogICAgICAgICAgc2VsZi5fc2V0QWN0aXZlRWxlbWVudCh0cnVlKTsKCiAgICAgICAgICAvLyBPbmNlIGFsbCBhbmltYXRpb25zIG9uIHRoZSBwYWdlIGFyZSBjb21wbGV0ZSwgdGhpcyBjYWxsYmFjayBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZAogICAgICAgICAgJCgiaHRtbCwgYm9keSIpLnByb21pc2UoKS5kb25lKGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgc2VsZi5leHRlbmRQYWdlU2Nyb2xsID0gZmFsc2U7CgogICAgICAgICAgICB9LCAwKTsKCiAgICAgICAgICB9KTsKCiAgICAgICAgfSk7CgogICAgICB9LAoKICAgICAgLy8gX2dlbmVyYXRlVG9jCiAgICAgIC8vIC0tLS0tLS0tLS0tLQogICAgICAvLyAgICAgIEdlbmVyYXRlcyB0aGUgSFRNTCBmb3IgdGhlIGR5bmFtaWMgdGFibGUgb2YgY29udGVudHMKICAgICAgX2dlbmVyYXRlVG9jOiBmdW5jdGlvbigpIHsKCiAgICAgICAgLy8gX0xvY2FsIHZhcmlhYmxlc18KCiAgICAgICAgLy8gU3RvcmVzIHRoZSBwbHVnaW4gY29udGV4dCBpbiB0aGUgc2VsZiB2YXJpYWJsZQogICAgICAgIHZhciBzZWxmID0gdGhpcywKCiAgICAgICAgICAvLyBBbGwgb2YgdGhlIEhUTUwgdGFncyBmb3VuZCB3aXRoaW4gdGhlIGNvbnRleHQgcHJvdmlkZWQgKGkuZS4gYm9keSkgdGhhdCBtYXRjaCB0aGUgdG9wIGxldmVsIGpRdWVyeSBzZWxlY3RvciBhYm92ZQogICAgICAgICAgZmlyc3RFbGVtLAoKICAgICAgICAgIC8vIEluc3RhbnRpYXRlZCB2YXJpYWJsZSB0aGF0IHdpbGwgc3RvcmUgdGhlIHRvcCBsZXZlbCBuZXdseSBjcmVhdGVkIHVub3JkZXJlZCBsaXN0IERPTSBlbGVtZW50CiAgICAgICAgICB1bCwKICAgICAgICAgIGlnbm9yZVNlbGVjdG9yID0gc2VsZi5vcHRpb25zLmlnbm9yZVNlbGVjdG9yOwoKCiAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBlbGVtZW50IHRvIHN0YXJ0IHRoZSB0b2Mgd2l0aAogICAgICAgIC8vIGdldCBhbGwgdGhlIHRvcCBsZXZlbCBzZWxlY3RvcnMKICAgICAgICBmaXJzdEVsZW0gPSBbXTsKICAgICAgICB2YXIgc2VsZWN0b3JzID0gdGhpcy5vcHRpb25zLnNlbGVjdG9ycy5yZXBsYWNlKC8gL2csICIiKS5zcGxpdCgiLCIpOwogICAgICAgIC8vIGZpbmQgdGhlIGZpcnN0IHNldCB0aGF0IGhhdmUgYXQgbGVhc3Qgb25lIG5vbi1pZ25vcmVkIGVsZW1lbnQKICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2VsZWN0b3JzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgZm91bmRTZWxlY3RvcnMgPSAkKHRoaXMub3B0aW9ucy5jb250ZXh0KS5maW5kKHNlbGVjdG9yc1tpXSk7CiAgICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8IGZvdW5kU2VsZWN0b3JzLmxlbmd0aDsgcysrKSB7CiAgICAgICAgICAgIGlmICghJChmb3VuZFNlbGVjdG9yc1tzXSkuaXMoaWdub3JlU2VsZWN0b3IpKSB7CiAgICAgICAgICAgICAgZmlyc3RFbGVtID0gZm91bmRTZWxlY3RvcnM7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChmaXJzdEVsZW0ubGVuZ3RoPiAwKQogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIGlmICghZmlyc3RFbGVtLmxlbmd0aCkgewoKICAgICAgICAgIHNlbGYuZWxlbWVudC5hZGRDbGFzcyhoaWRlVG9jQ2xhc3NOYW1lKTsKCiAgICAgICAgICByZXR1cm47CgogICAgICAgIH0KCiAgICAgICAgc2VsZi5lbGVtZW50LmFkZENsYXNzKHRvY0NsYXNzTmFtZSk7CgogICAgICAgIC8vIExvb3BzIHRocm91Z2ggZWFjaCB0b3AgbGV2ZWwgc2VsZWN0b3IKICAgICAgICBmaXJzdEVsZW0uZWFjaChmdW5jdGlvbihpbmRleCkgewoKICAgICAgICAgIC8vSWYgdGhlIGVsZW1lbnQgbWF0Y2hlcyB0aGUgaWdub3JlU2VsZWN0b3IgdGhlbiB3ZSBza2lwIGl0CiAgICAgICAgICBpZiAoJCh0aGlzKS5pcyhpZ25vcmVTZWxlY3RvcikpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIENyZWF0ZXMgYW4gdW5vcmRlcmVkIGxpc3QgSFRNTCBlbGVtZW50IGFuZCBhZGRzIGEgZHluYW1pYyBJRCBhbmQgc3RhbmRhcmQgY2xhc3MgbmFtZQogICAgICAgICAgdWwgPSAkKCI8dWwvPiIsIHsKICAgICAgICAgICAgImlkIjogaGVhZGVyQ2xhc3NOYW1lICsgaW5kZXgsCiAgICAgICAgICAgICJjbGFzcyI6IGhlYWRlckNsYXNzTmFtZQogICAgICAgICAgfSkuCgogICAgICAgICAgLy8gQXBwZW5kcyBhIHRvcCBsZXZlbCBsaXN0IGl0ZW0gSFRNTCBlbGVtZW50IHRvIHRoZSBwcmV2aW91c2x5IGNyZWF0ZWQgSFRNTCBoZWFkZXIKICAgICAgICAgIGFwcGVuZChzZWxmLl9uZXN0RWxlbWVudHMoJCh0aGlzKSwgaW5kZXgpKTsKCiAgICAgICAgICAvLyBBZGQgdGhlIGNyZWF0ZWQgdW5vcmRlcmVkIGxpc3QgZWxlbWVudCB0byB0aGUgSFRNTCBlbGVtZW50IGNhbGxpbmcgdGhlIHBsdWdpbgogICAgICAgICAgc2VsZi5lbGVtZW50LmFwcGVuZCh1bCk7CgogICAgICAgICAgLy8gRmluZHMgYWxsIG9mIHRoZSBIVE1MIHRhZ3MgYmV0d2VlbiB0aGUgaGVhZGVyIGFuZCBzdWJoZWFkZXIgZWxlbWVudHMKICAgICAgICAgICQodGhpcykubmV4dFVudGlsKHRoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkuZWFjaChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBuZXN0ZWQgc3ViaGVhZGVyIGVsZW1lbWVudHMKICAgICAgICAgICAgaWYgKCQodGhpcykuZmluZChzZWxmLm9wdGlvbnMuc2VsZWN0b3JzKS5sZW5ndGggPT09IDApIHsKCiAgICAgICAgICAgICAgLy8gTG9vcHMgdGhyb3VnaCBhbGwgb2YgdGhlIHN1YmhlYWRlciBlbGVtZW50cwogICAgICAgICAgICAgICQodGhpcykuZmlsdGVyKHNlbGYub3B0aW9ucy5zZWxlY3RvcnMpLmVhY2goZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgLy9JZiB0aGUgZWxlbWVudCBtYXRjaGVzIHRoZSBpZ25vcmVTZWxlY3RvciB0aGVuIHdlIHNraXAgaXQKICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmlzKGlnbm9yZVNlbGVjdG9yKSkgewogICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgc2VsZi5fYXBwZW5kU3ViaGVhZGVycy5jYWxsKHRoaXMsIHNlbGYsIHVsKTsKCiAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbmVzdGVkIHN1YmhlYWRlciBlbGVtZW50cwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgLy8gTG9vcHMgdGhyb3VnaCBhbGwgb2YgdGhlIHN1YmhlYWRlciBlbGVtZW50cwogICAgICAgICAgICAgICQodGhpcykuZmluZChzZWxmLm9wdGlvbnMuc2VsZWN0b3JzKS5lYWNoKGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgIC8vSWYgdGhlIGVsZW1lbnQgbWF0Y2hlcyB0aGUgaWdub3JlU2VsZWN0b3IgdGhlbiB3ZSBza2lwIGl0CiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5pcyhpZ25vcmVTZWxlY3RvcikpIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHNlbGYuX2FwcGVuZFN1YmhlYWRlcnMuY2FsbCh0aGlzLCBzZWxmLCB1bCk7CgogICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgfQoKICAgICAgICAgIH0pOwoKICAgICAgICB9KTsKCiAgICAgIH0sCgogICAgICBfc2V0QWN0aXZlRWxlbWVudDogZnVuY3Rpb24ocGFnZWxvYWQpIHsKCiAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAoKICAgICAgICAgIGhhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zdWJzdHJpbmcoMSksCgogICAgICAgICAgZWxlbSA9IHNlbGYuZWxlbWVudC5maW5kKCdsaVtkYXRhLXVuaXF1ZT0iJyArIGhhc2ggKyAnIl0nKTsKCiAgICAgICAgaWYgKGhhc2gubGVuZ3RoKSB7CgogICAgICAgICAgLy8gUmVtb3ZlcyBoaWdobGlnaHRpbmcgZnJvbSBhbGwgb2YgdGhlIGxpc3QgaXRlbSdzCiAgICAgICAgICBzZWxmLmVsZW1lbnQuZmluZCgiLiIgKyBzZWxmLmZvY3VzQ2xhc3MpLnJlbW92ZUNsYXNzKHNlbGYuZm9jdXNDbGFzcyk7CgogICAgICAgICAgLy8gSGlnaGxpZ2h0cyB0aGUgY3VycmVudCBsaXN0IGl0ZW0gdGhhdCB3YXMgY2xpY2tlZAogICAgICAgICAgZWxlbS5hZGRDbGFzcyhzZWxmLmZvY3VzQ2xhc3MpOwoKICAgICAgICAgIC8vIFRyaWdnZXJzIHRoZSBjbGljayBldmVudCBvbiB0aGUgY3VycmVudGx5IGZvY3VzZWQgVE9DIGl0ZW0KICAgICAgICAgIGVsZW0uY2xpY2soKTsKCiAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAvLyBSZW1vdmVzIGhpZ2hsaWdodGluZyBmcm9tIGFsbCBvZiB0aGUgbGlzdCBpdGVtJ3MKICAgICAgICAgIHNlbGYuZWxlbWVudC5maW5kKCIuIiArIHNlbGYuZm9jdXNDbGFzcykucmVtb3ZlQ2xhc3Moc2VsZi5mb2N1c0NsYXNzKTsKCiAgICAgICAgICBpZiAoIWhhc2gubGVuZ3RoICYmIHBhZ2Vsb2FkICYmIHNlbGYub3B0aW9ucy5oaWdobGlnaHREZWZhdWx0KSB7CgogICAgICAgICAgICAvLyBIaWdobGlnaHRzIHRoZSBmaXJzdCBUT0MgaXRlbSBpZiBubyBvdGhlciBpdGVtcyBhcmUgaGlnaGxpZ2h0ZWQKICAgICAgICAgICAgc2VsZi5lbGVtZW50LmZpbmQoaXRlbUNsYXNzKS5maXJzdCgpLmFkZENsYXNzKHNlbGYuZm9jdXNDbGFzcyk7CgogICAgICAgICAgfQoKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOwoKICAgICAgfSwKCiAgICAgIC8vIF9uZXN0RWxlbWVudHMKICAgICAgLy8gLS0tLS0tLS0tLS0tLQogICAgICAvLyAgICAgIEhlbHBzIGNyZWF0ZSB0aGUgdGFibGUgb2YgY29udGVudHMgbGlzdCBieSBhcHBlbmRpbmcgbmVzdGVkIGxpc3QgaXRlbXMKICAgICAgX25lc3RFbGVtZW50czogZnVuY3Rpb24oc2VsZiwgaW5kZXgpIHsKCiAgICAgICAgdmFyIGFyciwgaXRlbSwgaGFzaFZhbHVlOwoKICAgICAgICBhcnIgPSAkLmdyZXAodGhpcy5pdGVtcywgZnVuY3Rpb24oaXRlbSkgewoKICAgICAgICAgIHJldHVybiBpdGVtID09PSBzZWxmLnRleHQoKTsKCiAgICAgICAgfSk7CgogICAgICAgIC8vIElmIHRoZXJlIGlzIGFscmVhZHkgYSBkdXBsaWNhdGUgVE9DIGl0ZW0KICAgICAgICBpZiAoYXJyLmxlbmd0aCkgewoKICAgICAgICAgIC8vIEFkZHMgdGhlIGN1cnJlbnQgVE9DIGl0ZW0gdGV4dCBhbmQgaW5kZXggKGZvciBzbGlnaHQgcmFuZG9taXphdGlvbikgdG8gdGhlIGludGVybmFsIGFycmF5CiAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goc2VsZi50ZXh0KCkgKyBpbmRleCk7CgogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhlcmUgbm90IGEgZHVwbGljYXRlIFRPQyBpdGVtCiAgICAgICAgZWxzZSB7CgogICAgICAgICAgLy8gQWRkcyB0aGUgY3VycmVudCBUT0MgaXRlbSB0ZXh0IHRvIHRoZSBpbnRlcm5hbCBhcnJheQogICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHNlbGYudGV4dCgpKTsKCiAgICAgICAgfQoKICAgICAgICBoYXNoVmFsdWUgPSB0aGlzLl9nZW5lcmF0ZUhhc2hWYWx1ZShhcnIsIHNlbGYsIGluZGV4KTsKCiAgICAgICAgLy8gQXBwZW5kcyBhIGxpc3QgaXRlbSBIVE1MIGVsZW1lbnQgdG8gdGhlIGxhc3QgdW5vcmRlcmVkIGxpc3QgSFRNTCBlbGVtZW50IGZvdW5kIHdpdGhpbiB0aGUgSFRNTCBlbGVtZW50IGNhbGxpbmcgdGhlIHBsdWdpbgogICAgICAgIGl0ZW0gPSAkKCI8bGkvPiIsIHsKCiAgICAgICAgICAvLyBTZXRzIGEgY29tbW9uIGNsYXNzIG5hbWUgdG8gdGhlIGxpc3QgaXRlbQogICAgICAgICAgImNsYXNzIjogaXRlbUNsYXNzTmFtZSwKCiAgICAgICAgICAiZGF0YS11bmlxdWUiOiBoYXNoVmFsdWUKCiAgICAgICAgfSk7CgogICAgICAgIGlmICh0aGlzLm9wdGlvbnMudGhlbWUgIT09ICJib290c3RyYXAzIikgewoKICAgICAgICAgIGl0ZW0uYXBwZW5kKCQoIjxhLz4iLCB7CgogICAgICAgICAgICAiaHRtbCI6IHNlbGYuaHRtbCgpCgogICAgICAgICAgfSkpOwoKICAgICAgICB9IGVsc2UgewoKICAgICAgICAgIGl0ZW0uaHRtbChzZWxmLmh0bWwoKSk7CgogICAgICAgIH0KCiAgICAgICAgLy8gQWRkcyBhbiBIVE1MIGFuY2hvciB0YWcgYmVmb3JlIHRoZSBjdXJyZW50bHkgdHJhdmVyc2VkIEhUTUwgZWxlbWVudAogICAgICAgIHNlbGYuYmVmb3JlKCQoIjxkaXYvPiIsIHsKCiAgICAgICAgICAvLyBTZXRzIGEgbmFtZSBhdHRyaWJ1dGUgb24gdGhlIGFuY2hvciB0YWcgdG8gdGhlIHRleHQgb2YgdGhlIGN1cnJlbnRseSB0cmF2ZXJzZWQgSFRNTCBlbGVtZW50IChhbHNvIG1ha2luZyBzdXJlIHRoYXQgYWxsIHdoaXRlc3BhY2UgaXMgcmVwbGFjZWQgd2l0aCBhbiB1bmRlcnNjb3JlKQogICAgICAgICAgIm5hbWUiOiBoYXNoVmFsdWUsCgogICAgICAgICAgImRhdGEtdW5pcXVlIjogaGFzaFZhbHVlCgogICAgICAgIH0pKTsKCiAgICAgICAgcmV0dXJuIGl0ZW07CgogICAgICB9LAoKICAgICAgLy8gX2dlbmVyYXRlSGFzaFZhbHVlCiAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAvLyAgICAgIEdlbmVyYXRlcyB0aGUgaGFzaCB2YWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byByZWZlciB0byBlYWNoIGl0ZW0uCiAgICAgIF9nZW5lcmF0ZUhhc2hWYWx1ZTogZnVuY3Rpb24oYXJyLCBzZWxmLCBpbmRleCkgewoKICAgICAgICB2YXIgaGFzaFZhbHVlID0gIiIsCiAgICAgICAgICBoYXNoR2VuZXJhdG9yT3B0aW9uID0gdGhpcy5vcHRpb25zLmhhc2hHZW5lcmF0b3I7CgogICAgICAgIGlmIChoYXNoR2VuZXJhdG9yT3B0aW9uID09PSAicHJldHR5IikgewoKICAgICAgICAgIC8vIHByZXR0aWZ5IHRoZSB0ZXh0CiAgICAgICAgICBoYXNoVmFsdWUgPSBzZWxmLnRleHQoKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xzL2csICItIik7CgogICAgICAgICAgLy8gZml4IGRvdWJsZSBoeXBoZW5zCiAgICAgICAgICB3aGlsZSAoaGFzaFZhbHVlLmluZGV4T2YoIi0tIikgPiAtMSkgewogICAgICAgICAgICBoYXNoVmFsdWUgPSBoYXNoVmFsdWUucmVwbGFjZSgvLS0vZywgIi0iKTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyBmaXggY29sb24tc3BhY2UgaW5zdGFuY2VzCiAgICAgICAgICB3aGlsZSAoaGFzaFZhbHVlLmluZGV4T2YoIjotIikgPiAtMSkgewogICAgICAgICAgICBoYXNoVmFsdWUgPSBoYXNoVmFsdWUucmVwbGFjZSgvOi0vZywgIi0iKTsKICAgICAgICAgIH0KCiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaGFzaEdlbmVyYXRvck9wdGlvbiA9PT0gImZ1bmN0aW9uIikgewoKICAgICAgICAgIC8vIGNhbGwgdGhlIGZ1bmN0aW9uCiAgICAgICAgICBoYXNoVmFsdWUgPSBoYXNoR2VuZXJhdG9yT3B0aW9uKHNlbGYudGV4dCgpLCBzZWxmKTsKCiAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAvLyBjb21wYWN0IC0gdGhlIGRlZmF1bHQKICAgICAgICAgIGhhc2hWYWx1ZSA9IHNlbGYudGV4dCgpLnJlcGxhY2UoL1xzL2csICIiKTsKCiAgICAgICAgfQoKICAgICAgICAvLyBhZGQgdGhlIGluZGV4IGlmIHdlIG5lZWQgdG8KICAgICAgICBpZiAoYXJyLmxlbmd0aCkgewogICAgICAgICAgaGFzaFZhbHVlICs9ICIiICsgaW5kZXg7CiAgICAgICAgfQoKICAgICAgICAvLyByZXR1cm4gdGhlIHZhbHVlCiAgICAgICAgcmV0dXJuIGhhc2hWYWx1ZTsKCiAgICAgIH0sCgogICAgICAvLyBfYXBwZW5kRWxlbWVudHMKICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tCiAgICAgIC8vICAgICAgSGVscHMgY3JlYXRlIHRoZSB0YWJsZSBvZiBjb250ZW50cyBsaXN0IGJ5IGFwcGVuZGluZyBzdWJoZWFkZXIgZWxlbWVudHMKCiAgICAgIF9hcHBlbmRTdWJoZWFkZXJzOiBmdW5jdGlvbihzZWxmLCB1bCkgewoKICAgICAgICAvLyBUaGUgY3VycmVudCBlbGVtZW50IGluZGV4CiAgICAgICAgdmFyIGluZGV4ID0gJCh0aGlzKS5pbmRleChzZWxmLm9wdGlvbnMuc2VsZWN0b3JzKSwKCiAgICAgICAgICAvLyBGaW5kcyB0aGUgcHJldmlvdXMgaGVhZGVyIERPTSBlbGVtZW50CiAgICAgICAgICBwcmV2aW91c0hlYWRlciA9ICQoc2VsZi5vcHRpb25zLnNlbGVjdG9ycykuZXEoaW5kZXggLSAxKSwKCiAgICAgICAgICBjdXJyZW50VGFnTmFtZSA9ICskKHRoaXMpLnByb3AoInRhZ05hbWUiKS5jaGFyQXQoMSksCgogICAgICAgICAgcHJldmlvdXNUYWdOYW1lID0gK3ByZXZpb3VzSGVhZGVyLnByb3AoInRhZ05hbWUiKS5jaGFyQXQoMSksCgogICAgICAgICAgbGFzdFN1YmhlYWRlcjsKCiAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgaGVhZGVyIERPTSBlbGVtZW50IGlzIHNtYWxsZXIgdGhhbiB0aGUgcHJldmlvdXMgaGVhZGVyIERPTSBlbGVtZW50IG9yIHRoZSBmaXJzdCBzdWJoZWFkZXIKICAgICAgICBpZiAoY3VycmVudFRhZ05hbWUgPCBwcmV2aW91c1RhZ05hbWUpIHsKCiAgICAgICAgICAvLyBTZWxlY3RzIHRoZSBsYXN0IHVub3JkZXJlZCBsaXN0IEhUTUwgZm91bmQgd2l0aGluIHRoZSBIVE1MIGVsZW1lbnQgY2FsbGluZyB0aGUgcGx1Z2luCiAgICAgICAgICBzZWxmLmVsZW1lbnQuZmluZChzdWJoZWFkZXJDbGFzcyArICJbZGF0YS10YWc9IiArIGN1cnJlbnRUYWdOYW1lICsgIl0iKS5sYXN0KCkuYXBwZW5kKHNlbGYuX25lc3RFbGVtZW50cygkKHRoaXMpLCBpbmRleCkpOwoKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGhlYWRlciBET00gZWxlbWVudCBpcyB0aGUgc2FtZSB0eXBlIG9mIGhlYWRlcihlZy4gaDQpIGFzIHRoZSBwcmV2aW91cyBoZWFkZXIgRE9NIGVsZW1lbnQKICAgICAgICBlbHNlIGlmIChjdXJyZW50VGFnTmFtZSA9PT0gcHJldmlvdXNUYWdOYW1lKSB7CgogICAgICAgICAgdWwuZmluZChpdGVtQ2xhc3MpLmxhc3QoKS5hZnRlcihzZWxmLl9uZXN0RWxlbWVudHMoJCh0aGlzKSwgaW5kZXgpKTsKCiAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAvLyBTZWxlY3RzIHRoZSBsYXN0IHVub3JkZXJlZCBsaXN0IEhUTUwgZm91bmQgd2l0aGluIHRoZSBIVE1MIGVsZW1lbnQgY2FsbGluZyB0aGUgcGx1Z2luCiAgICAgICAgICB1bC5maW5kKGl0ZW1DbGFzcykubGFzdCgpLgoKICAgICAgICAgIC8vIEFwcGVuZHMgYW4gdW5vcmRlcmVkTGlzdCBIVE1MIGVsZW1lbnQgdG8gdGhlIGR5bmFtaWMgYHVub3JkZXJlZExpc3RgIHZhcmlhYmxlIGFuZCBzZXRzIGEgY29tbW9uIGNsYXNzIG5hbWUKICAgICAgICAgIGFmdGVyKCQoIjx1bC8+IiwgewoKICAgICAgICAgICAgImNsYXNzIjogc3ViaGVhZGVyQ2xhc3NOYW1lLAoKICAgICAgICAgICAgImRhdGEtdGFnIjogY3VycmVudFRhZ05hbWUKCiAgICAgICAgICB9KSkubmV4dChzdWJoZWFkZXJDbGFzcykuCgogICAgICAgICAgLy8gQXBwZW5kcyBhIGxpc3QgaXRlbSBIVE1MIGVsZW1lbnQgdG8gdGhlIGxhc3QgdW5vcmRlcmVkIGxpc3QgSFRNTCBlbGVtZW50IGZvdW5kIHdpdGhpbiB0aGUgSFRNTCBlbGVtZW50IGNhbGxpbmcgdGhlIHBsdWdpbgogICAgICAgICAgYXBwZW5kKHNlbGYuX25lc3RFbGVtZW50cygkKHRoaXMpLCBpbmRleCkpOwogICAgICAgIH0KCiAgICAgIH0sCgogICAgICAvLyBfc2V0RXZlbnRIYW5kbGVycwogICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tCiAgICAgIC8vICAgICAgQWRkcyBqUXVlcnkgZXZlbnQgaGFuZGxlcnMgdG8gdGhlIG5ld2x5IGdlbmVyYXRlZCB0YWJsZSBvZiBjb250ZW50cwogICAgICBfc2V0RXZlbnRIYW5kbGVyczogZnVuY3Rpb24oKSB7CgogICAgICAgIC8vIF9Mb2NhbCB2YXJpYWJsZXNfCgogICAgICAgIC8vIFN0b3JlcyB0aGUgcGx1Z2luIGNvbnRleHQgaW4gdGhlIHNlbGYgdmFyaWFibGUKICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCgogICAgICAgICAgLy8gSW5zdGFudGlhdGVzIGEgbmV3IHZhcmlhYmxlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGhvbGQgYSBzcGVjaWZpYyBlbGVtZW50J3MgY29udGV4dAogICAgICAgICAgJHNlbGYsCgogICAgICAgICAgLy8gSW5zdGFudGlhdGVzIGEgbmV3IHZhcmlhYmxlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgc21vb3RoU2Nyb2xsIGFuaW1hdGlvbiB0aW1lIGR1cmF0aW9uCiAgICAgICAgICBkdXJhdGlvbjsKCiAgICAgICAgLy8gRXZlbnQgZGVsZWdhdGlvbiB0aGF0IGxvb2tzIGZvciBhbnkgY2xpY2tzIG9uIGxpc3QgaXRlbSBlbGVtZW50cyBpbnNpZGUgb2YgdGhlIEhUTUwgZWxlbWVudCBjYWxsaW5nIHRoZSBwbHVnaW4KICAgICAgICB0aGlzLmVsZW1lbnQub24oImNsaWNrLnRvY2lmeSIsICJsaSIsIGZ1bmN0aW9uKGV2ZW50KSB7CgogICAgICAgICAgaWYgKHNlbGYub3B0aW9ucy5oaXN0b3J5KSB7CgogICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaCA9ICQodGhpcykuYXR0cigiZGF0YS11bmlxdWUiKTsKCiAgICAgICAgICB9CgogICAgICAgICAgLy8gUmVtb3ZlcyBoaWdobGlnaHRpbmcgZnJvbSBhbGwgb2YgdGhlIGxpc3QgaXRlbSdzCiAgICAgICAgICBzZWxmLmVsZW1lbnQuZmluZCgiLiIgKyBzZWxmLmZvY3VzQ2xhc3MpLnJlbW92ZUNsYXNzKHNlbGYuZm9jdXNDbGFzcyk7CgogICAgICAgICAgLy8gSGlnaGxpZ2h0cyB0aGUgY3VycmVudCBsaXN0IGl0ZW0gdGhhdCB3YXMgY2xpY2tlZAogICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcyhzZWxmLmZvY3VzQ2xhc3MpOwoKICAgICAgICAgIC8vIElmIHRoZSBzaG93QW5kSGlkZSBvcHRpb24gaXMgdHJ1ZQogICAgICAgICAgaWYgKHNlbGYub3B0aW9ucy5zaG93QW5kSGlkZSkgewoKICAgICAgICAgICAgdmFyIGVsZW0gPSAkKCdsaVtkYXRhLXVuaXF1ZT0iJyArICQodGhpcykuYXR0cigiZGF0YS11bmlxdWUiKSArICciXScpOwoKICAgICAgICAgICAgc2VsZi5fdHJpZ2dlclNob3coZWxlbSk7CgogICAgICAgICAgfQoKICAgICAgICAgIHNlbGYuX3Njcm9sbFRvKCQodGhpcykpOwoKICAgICAgICB9KTsKCiAgICAgICAgLy8gTW91c2VlbnRlciBhbmQgTW91c2VsZWF2ZSBldmVudCBoYW5kbGVycyBmb3IgdGhlIGxpc3QgaXRlbSdzIHdpdGhpbiB0aGUgSFRNTCBlbGVtZW50IGNhbGxpbmcgdGhlIHBsdWdpbgogICAgICAgIHRoaXMuZWxlbWVudC5maW5kKCJsaSIpLm9uKHsKCiAgICAgICAgICAvLyBNb3VzZWVudGVyIGV2ZW50IGhhbmRsZXIKICAgICAgICAgICJtb3VzZWVudGVyLnRvY2lmeSI6IGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgLy8gQWRkcyBhIGhvdmVyIENTUyBjbGFzcyB0byB0aGUgY3VycmVudCBsaXN0IGl0ZW0KICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcyhzZWxmLmhvdmVyQ2xhc3MpOwoKICAgICAgICAgICAgLy8gTWFrZXMgc3VyZSB0aGUgY3Vyc29yIGlzIHNldCB0byB0aGUgcG9pbnRlciBpY29uCiAgICAgICAgICAgICQodGhpcykuY3NzKCJjdXJzb3IiLCAicG9pbnRlciIpOwoKICAgICAgICAgIH0sCgogICAgICAgICAgLy8gTW91c2VsZWF2ZSBldmVudCBoYW5kbGVyCiAgICAgICAgICAibW91c2VsZWF2ZS50b2NpZnkiOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIGlmIChzZWxmLm9wdGlvbnMudGhlbWUgIT09ICJib290c3RyYXAiKSB7CgogICAgICAgICAgICAgIC8vIFJlbW92ZXMgdGhlIGhvdmVyIENTUyBjbGFzcyBmcm9tIHRoZSBjdXJyZW50IGxpc3QgaXRlbQogICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3Moc2VsZi5ob3ZlckNsYXNzKTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIC8vIG9ubHkgYXR0YWNoIGhhbmRsZXIgaWYgbmVlZGVkIChleHBlbnNpdmUgaW4gSUUpCiAgICAgICAgaWYgKHNlbGYub3B0aW9ucy5leHRlbmRQYWdlIHx8IHNlbGYub3B0aW9ucy5oaWdobGlnaHRPblNjcm9sbCB8fCBzZWxmLm9wdGlvbnMuc2Nyb2xsSGlzdG9yeSB8fCBzZWxmLm9wdGlvbnMuc2hvd0FuZEhpZGVPblNjcm9sbCkgewogICAgICAgICAgLy8gV2luZG93IHNjcm9sbCBldmVudCBoYW5kbGVyCiAgICAgICAgICAkKHdpbmRvdykub24oInNjcm9sbC50b2NpZnkiLCBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIC8vIE9uY2UgYWxsIGFuaW1hdGlvbnMgb24gdGhlIHBhZ2UgYXJlIGNvbXBsZXRlLCB0aGlzIGNhbGxiYWNrIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkCiAgICAgICAgICAgICQoImh0bWwsIGJvZHkiKS5wcm9taXNlKCkuZG9uZShmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgLy8gTG9jYWwgdmFyaWFibGVzCgogICAgICAgICAgICAgIC8vIFN0b3JlcyBob3cgZmFyIHRoZSB1c2VyIGhhcyBzY3JvbGxlZAogICAgICAgICAgICAgIHZhciB3aW5TY3JvbGxUb3AgPSAkKHdpbmRvdykuc2Nyb2xsVG9wKCksCgogICAgICAgICAgICAgICAgLy8gU3RvcmVzIHRoZSBoZWlnaHQgb2YgdGhlIHdpbmRvdwogICAgICAgICAgICAgICAgd2luSGVpZ2h0ID0gJCh3aW5kb3cpLmhlaWdodCgpLAoKICAgICAgICAgICAgICAgIC8vIFN0b3JlcyB0aGUgaGVpZ2h0IG9mIHRoZSBkb2N1bWVudAogICAgICAgICAgICAgICAgZG9jSGVpZ2h0ID0gJChkb2N1bWVudCkuaGVpZ2h0KCksCgogICAgICAgICAgICAgICAgc2Nyb2xsSGVpZ2h0ID0gJCgiYm9keSIpWzBdLnNjcm9sbEhlaWdodCwKCiAgICAgICAgICAgICAgICAvLyBJbnN0YW50aWF0ZXMgYSB2YXJpYWJsZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBob2xkIGEgc2VsZWN0ZWQgSFRNTCBlbGVtZW50CiAgICAgICAgICAgICAgICBlbGVtLAoKICAgICAgICAgICAgICAgIGxhc3RFbGVtLAoKICAgICAgICAgICAgICAgIGxhc3RFbGVtT2Zmc2V0LAoKICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtOwoKICAgICAgICAgICAgICBpZiAoc2VsZi5vcHRpb25zLmV4dGVuZFBhZ2UpIHsKCiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdXNlciBoYXMgc2Nyb2xsZWQgdG8gdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSBhbmQgdGhlIGxhc3QgdG9jIGl0ZW0gaXMgbm90IGZvY3VzZWQKICAgICAgICAgICAgICAgIGlmICgoc2VsZi53ZWJraXQgJiYgd2luU2Nyb2xsVG9wID49IHNjcm9sbEhlaWdodCAtIHdpbkhlaWdodCAtIHNlbGYub3B0aW9ucy5leHRlbmRQYWdlT2Zmc2V0KSB8fCAoIXNlbGYud2Via2l0ICYmIHdpbkhlaWdodCArIHdpblNjcm9sbFRvcCA+IGRvY0hlaWdodCAtIHNlbGYub3B0aW9ucy5leHRlbmRQYWdlT2Zmc2V0KSkgewoKICAgICAgICAgICAgICAgICAgaWYgKCEkKGV4dGVuZFBhZ2VDbGFzcykubGVuZ3RoKSB7CgogICAgICAgICAgICAgICAgICAgIGxhc3RFbGVtID0gJCgnZGl2W2RhdGEtdW5pcXVlPSInICsgJChpdGVtQ2xhc3MpLmxhc3QoKS5hdHRyKCJkYXRhLXVuaXF1ZSIpICsgJyJdJyk7CgogICAgICAgICAgICAgICAgICAgIGlmICghbGFzdEVsZW0ubGVuZ3RoKSByZXR1cm47CgogICAgICAgICAgICAgICAgICAgIC8vIEdldHMgdGhlIHRvcCBvZmZzZXQgb2YgdGhlIHBhZ2UgaGVhZGVyIHRoYXQgaXMgbGlua2VkIHRvIHRoZSBsYXN0IHRvYyBpdGVtCiAgICAgICAgICAgICAgICAgICAgbGFzdEVsZW1PZmZzZXQgPSBsYXN0RWxlbS5vZmZzZXQoKS50b3A7CgogICAgICAgICAgICAgICAgICAgIC8vIEFwcGVuZHMgYSBkaXYgdG8gdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSBhbmQgc2V0cyB0aGUgaGVpZ2h0IHRvIHRoZSBkaWZmZXJlbmNlIG9mIHRoZSB3aW5kb3cgc2Nyb2xsVG9wIGFuZCB0aGUgbGFzdCBlbGVtZW50J3MgcG9zaXRpb24gdG9wIG9mZnNldAogICAgICAgICAgICAgICAgICAgICQoc2VsZi5vcHRpb25zLmNvbnRleHQpLmFwcGVuZCgkKCI8ZGl2Lz4iLCB7CgogICAgICAgICAgICAgICAgICAgICAgImNsYXNzIjogZXh0ZW5kUGFnZUNsYXNzTmFtZSwKCiAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogTWF0aC5hYnMobGFzdEVsZW1PZmZzZXQgLSB3aW5TY3JvbGxUb3ApICsgInB4IiwKCiAgICAgICAgICAgICAgICAgICAgICAiZGF0YS11bmlxdWUiOiBleHRlbmRQYWdlQ2xhc3NOYW1lCgogICAgICAgICAgICAgICAgICAgIH0pKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuZXh0ZW5kUGFnZVNjcm9sbCkgewoKICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtID0gc2VsZi5lbGVtZW50LmZpbmQoJ2xpLicgKyBzZWxmLmZvY3VzQ2xhc3MpOwoKICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Njcm9sbFRvKCQoJ2RpdltkYXRhLXVuaXF1ZT0iJyArIGN1cnJlbnRFbGVtLmF0dHIoImRhdGEtdW5pcXVlIikgKyAnIl0nKSk7CgogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgLy8gVGhlIHplcm8gdGltZW91dCBlbnN1cmVzIHRoZSBmb2xsb3dpbmcgY29kZSBpcyBydW4gYWZ0ZXIgdGhlIHNjcm9sbCBldmVudHMKICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgIC8vIF9Mb2NhbCB2YXJpYWJsZXNfCgogICAgICAgICAgICAgICAgLy8gU3RvcmVzIHRoZSBkaXN0YW5jZSB0byB0aGUgY2xvc2VzdCBhbmNob3IKICAgICAgICAgICAgICAgIHZhciBjbG9zZXN0QW5jaG9yRGlzdGFuY2UgPSBudWxsLAoKICAgICAgICAgICAgICAgICAgLy8gU3RvcmVzIHRoZSBpbmRleCBvZiB0aGUgY2xvc2VzdCBhbmNob3IKICAgICAgICAgICAgICAgICAgY2xvc2VzdEFuY2hvcklkeCA9IG51bGwsCgogICAgICAgICAgICAgICAgICAvLyBLZWVwcyBhIHJlZmVyZW5jZSB0byBhbGwgYW5jaG9ycwogICAgICAgICAgICAgICAgICBhbmNob3JzID0gJChzZWxmLm9wdGlvbnMuY29udGV4dCkuZmluZCgiZGl2W2RhdGEtdW5pcXVlXSIpLAoKICAgICAgICAgICAgICAgICAgYW5jaG9yVGV4dDsKCiAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmVzIHRoZSBpbmRleCBvZiB0aGUgY2xvc2VzdCBhbmNob3IKICAgICAgICAgICAgICAgIGFuY2hvcnMuZWFjaChmdW5jdGlvbihpZHgpIHsKICAgICAgICAgICAgICAgICAgdmFyIGRpc3RhbmNlID0gTWF0aC5hYnMoKCQodGhpcykubmV4dCgpLmxlbmd0aCA/ICQodGhpcykubmV4dCgpIDogJCh0aGlzKSkub2Zmc2V0KCkudG9wIC0gd2luU2Nyb2xsVG9wIC0gc2VsZi5vcHRpb25zLmhpZ2hsaWdodE9mZnNldCk7CiAgICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0QW5jaG9yRGlzdGFuY2UgPT0gbnVsbCB8fCBkaXN0YW5jZSA8IGNsb3Nlc3RBbmNob3JEaXN0YW5jZSkgewogICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RBbmNob3JEaXN0YW5jZSA9IGRpc3RhbmNlOwogICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RBbmNob3JJZHggPSBpZHg7CiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBhbmNob3JUZXh0ID0gJChhbmNob3JzW2Nsb3Nlc3RBbmNob3JJZHhdKS5hdHRyKCJkYXRhLXVuaXF1ZSIpOwoKICAgICAgICAgICAgICAgIC8vIFN0b3JlcyB0aGUgbGlzdCBpdGVtIEhUTUwgZWxlbWVudCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50bHkgdHJhdmVyc2VkIGFuY2hvciB0YWcKICAgICAgICAgICAgICAgIGVsZW0gPSAkKCdsaVtkYXRhLXVuaXF1ZT0iJyArIGFuY2hvclRleHQgKyAnIl0nKTsKCiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYGhpZ2hsaWdodE9uU2Nyb2xsYCBvcHRpb24gaXMgdHJ1ZSBhbmQgYSBuZXh0IGVsZW1lbnQgaXMgZm91bmQKICAgICAgICAgICAgICAgIGlmIChzZWxmLm9wdGlvbnMuaGlnaGxpZ2h0T25TY3JvbGwgJiYgZWxlbS5sZW5ndGgpIHsKCiAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZXMgaGlnaGxpZ2h0aW5nIGZyb20gYWxsIG9mIHRoZSBsaXN0IGl0ZW0ncwogICAgICAgICAgICAgICAgICBzZWxmLmVsZW1lbnQuZmluZCgiLiIgKyBzZWxmLmZvY3VzQ2xhc3MpLnJlbW92ZUNsYXNzKHNlbGYuZm9jdXNDbGFzcyk7CgogICAgICAgICAgICAgICAgICAvLyBIaWdobGlnaHRzIHRoZSBjb3JyZXNwb25kaW5nIGxpc3QgaXRlbQogICAgICAgICAgICAgICAgICBlbGVtLmFkZENsYXNzKHNlbGYuZm9jdXNDbGFzcyk7CgogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChzZWxmLm9wdGlvbnMuc2Nyb2xsSGlzdG9yeSkgewoKICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5oYXNoICE9PSAiIyIgKyBhbmNob3JUZXh0KSB7CgogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCIjIiArIGFuY2hvclRleHQpOwoKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIElmIHRoZSBgc2hvd0FuZEhpZGVPblNjcm9sbGAgb3B0aW9uIGlzIHRydWUKICAgICAgICAgICAgICAgIGlmIChzZWxmLm9wdGlvbnMuc2hvd0FuZEhpZGVPblNjcm9sbCAmJiBzZWxmLm9wdGlvbnMuc2hvd0FuZEhpZGUpIHsKCiAgICAgICAgICAgICAgICAgIHNlbGYuX3RyaWdnZXJTaG93KGVsZW0sIHRydWUpOwoKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgfSwgMCk7CgogICAgICAgICAgICB9KTsKCiAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICB9LAoKICAgICAgLy8gU2hvdwogICAgICAvLyAtLS0tCiAgICAgIC8vICAgICAgT3BlbnMgdGhlIGN1cnJlbnQgc3ViLWhlYWRlcgogICAgICBzaG93OiBmdW5jdGlvbihlbGVtLCBzY3JvbGwpIHsKCiAgICAgICAgLy8gU3RvcmVzIHRoZSBwbHVnaW4gY29udGV4dCBpbiB0aGUgYHNlbGZgIHZhcmlhYmxlCiAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAogICAgICAgICAgZWxlbWVudCA9IGVsZW07CgogICAgICAgIC8vIElmIHRoZSBzdWItaGVhZGVyIGlzIG5vdCBhbHJlYWR5IHZpc2libGUKICAgICAgICBpZiAoIWVsZW0uaXMoIjp2aXNpYmxlIikpIHsKCiAgICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBlbGVtZW50IGRvZXMgbm90IGhhdmUgYW55IG5lc3RlZCBzdWJoZWFkZXJzLCBpcyBub3QgYSBoZWFkZXIsIGFuZCBpdHMgcGFyZW50IGlzIG5vdCB2aXNpYmxlCiAgICAgICAgICBpZiAoIWVsZW0uZmluZChzdWJoZWFkZXJDbGFzcykubGVuZ3RoICYmICFlbGVtLnBhcmVudCgpLmlzKGhlYWRlckNsYXNzKSAmJiAhZWxlbS5wYXJlbnQoKS5pcygiOnZpc2libGUiKSkgewoKICAgICAgICAgICAgLy8gU2V0cyB0aGUgY3VycmVudCBlbGVtZW50IHRvIGFsbCBvZiB0aGUgc3ViaGVhZGVycyB3aXRoaW4gdGhlIGN1cnJlbnQgaGVhZGVyCiAgICAgICAgICAgIGVsZW0gPSBlbGVtLnBhcmVudHMoc3ViaGVhZGVyQ2xhc3MpLmFkZChlbGVtKTsKCiAgICAgICAgICB9CgogICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGFueSBuZXN0ZWQgc3ViaGVhZGVycyBhbmQgaXMgbm90IGEgaGVhZGVyCiAgICAgICAgICBlbHNlIGlmICghZWxlbS5jaGlsZHJlbihzdWJoZWFkZXJDbGFzcykubGVuZ3RoICYmICFlbGVtLnBhcmVudCgpLmlzKGhlYWRlckNsYXNzKSkgewoKICAgICAgICAgICAgLy8gU2V0cyB0aGUgY3VycmVudCBlbGVtZW50IHRvIHRoZSBjbG9zZXN0IHN1YmhlYWRlcgogICAgICAgICAgICBlbGVtID0gZWxlbS5jbG9zZXN0KHN1YmhlYWRlckNsYXNzKTsKCiAgICAgICAgICB9CgogICAgICAgICAgLy9EZXRlcm1pbmVzIHdoYXQgalF1ZXJ5IGVmZmVjdCB0byB1c2UKICAgICAgICAgIHN3aXRjaCAoc2VsZi5vcHRpb25zLnNob3dFZmZlY3QpIHsKCiAgICAgICAgICAgIC8vVXNlcyBgbm8gZWZmZWN0YAogICAgICAgICAgICBjYXNlICJub25lIjoKCiAgICAgICAgICAgICAgZWxlbS5zaG93KCk7CgogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAvL1VzZXMgdGhlIGpRdWVyeSBgc2hvd2Agc3BlY2lhbCBlZmZlY3QKICAgICAgICAgICAgY2FzZSAic2hvdyI6CgogICAgICAgICAgICAgIGVsZW0uc2hvdyhzZWxmLm9wdGlvbnMuc2hvd0VmZmVjdFNwZWVkKTsKCiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgIC8vVXNlcyB0aGUgalF1ZXJ5IGBzbGlkZURvd25gIHNwZWNpYWwgZWZmZWN0CiAgICAgICAgICAgIGNhc2UgInNsaWRlRG93biI6CgogICAgICAgICAgICAgIGVsZW0uc2xpZGVEb3duKHNlbGYub3B0aW9ucy5zaG93RWZmZWN0U3BlZWQpOwoKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgLy9Vc2VzIHRoZSBqUXVlcnkgYGZhZGVJbmAgc3BlY2lhbCBlZmZlY3QKICAgICAgICAgICAgY2FzZSAiZmFkZUluIjoKCiAgICAgICAgICAgICAgZWxlbS5mYWRlSW4oc2VsZi5vcHRpb25zLnNob3dFZmZlY3RTcGVlZCk7CgogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAvL0lmIG5vbmUgb2YgdGhlIGFib3ZlIG9wdGlvbnMgd2VyZSBwYXNzZWQsIHRoZW4gYSBgalF1ZXJ5VUkgc2hvdyBlZmZlY3RgIGlzIGV4cGVjdGVkCiAgICAgICAgICAgIGRlZmF1bHQ6CgogICAgICAgICAgICAgIGVsZW0uc2hvdygpOwoKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgc3ViaGVhZGVyIHBhcmVudCBlbGVtZW50IGlzIGEgaGVhZGVyCiAgICAgICAgaWYgKGVsZW0ucGFyZW50KCkuaXMoaGVhZGVyQ2xhc3MpKSB7CgogICAgICAgICAgLy8gSGlkZXMgYWxsIG5vbi1hY3RpdmUgc3ViLWhlYWRlcnMKICAgICAgICAgIHNlbGYuaGlkZSgkKHN1YmhlYWRlckNsYXNzKS5ub3QoZWxlbSkpOwoKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBjdXJyZW50IHN1YmhlYWRlciBwYXJlbnQgZWxlbWVudCBpcyBub3QgYSBoZWFkZXIKICAgICAgICBlbHNlIHsKCiAgICAgICAgICAvLyBIaWRlcyBhbGwgbm9uLWFjdGl2ZSBzdWItaGVhZGVycwogICAgICAgICAgc2VsZi5oaWRlKCQoc3ViaGVhZGVyQ2xhc3MpLm5vdChlbGVtLmNsb3Nlc3QoaGVhZGVyQ2xhc3MpLmZpbmQoc3ViaGVhZGVyQ2xhc3MpLm5vdChlbGVtLnNpYmxpbmdzKCkpKSk7CgogICAgICAgIH0KCiAgICAgICAgLy8gTWFpbnRhaW5zIGNoYWluYWJsaXR5CiAgICAgICAgcmV0dXJuIHNlbGY7CgogICAgICB9LAoKICAgICAgLy8gSGlkZQogICAgICAvLyAtLS0tCiAgICAgIC8vICAgICAgQ2xvc2VzIHRoZSBjdXJyZW50IHN1Yi1oZWFkZXIKICAgICAgaGlkZTogZnVuY3Rpb24oZWxlbSkgewoKICAgICAgICAvLyBTdG9yZXMgdGhlIHBsdWdpbiBjb250ZXh0IGluIHRoZSBgc2VsZmAgdmFyaWFibGUKICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CgogICAgICAgIC8vRGV0ZXJtaW5lcyB3aGF0IGpRdWVyeSBlZmZlY3QgdG8gdXNlCiAgICAgICAgc3dpdGNoIChzZWxmLm9wdGlvbnMuaGlkZUVmZmVjdCkgewoKICAgICAgICAgIC8vIFVzZXMgYG5vIGVmZmVjdGAKICAgICAgICAgIGNhc2UgIm5vbmUiOgoKICAgICAgICAgICAgZWxlbS5oaWRlKCk7CgogICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIC8vIFVzZXMgdGhlIGpRdWVyeSBgaGlkZWAgc3BlY2lhbCBlZmZlY3QKICAgICAgICAgIGNhc2UgImhpZGUiOgoKICAgICAgICAgICAgZWxlbS5oaWRlKHNlbGYub3B0aW9ucy5oaWRlRWZmZWN0U3BlZWQpOwoKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAvLyBVc2VzIHRoZSBqUXVlcnkgYHNsaWRlVXBgIHNwZWNpYWwgZWZmZWN0CiAgICAgICAgICBjYXNlICJzbGlkZVVwIjoKCiAgICAgICAgICAgIGVsZW0uc2xpZGVVcChzZWxmLm9wdGlvbnMuaGlkZUVmZmVjdFNwZWVkKTsKCiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgLy8gVXNlcyB0aGUgalF1ZXJ5IGBmYWRlT3V0YCBzcGVjaWFsIGVmZmVjdAogICAgICAgICAgY2FzZSAiZmFkZU91dCI6CgogICAgICAgICAgICBlbGVtLmZhZGVPdXQoc2VsZi5vcHRpb25zLmhpZGVFZmZlY3RTcGVlZCk7CgogICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIC8vIElmIG5vbmUgb2YgdGhlIGFib3ZlIG9wdGlvbnMgd2VyZSBwYXNzZWQsIHRoZW4gYSBganF1ZXJ5VUkgaGlkZSBlZmZlY3RgIGlzIGV4cGVjdGVkCiAgICAgICAgICBkZWZhdWx0OgoKICAgICAgICAgICAgZWxlbS5oaWRlKCk7CgogICAgICAgICAgICBicmVhazsKCiAgICAgICAgfQoKICAgICAgICAvLyBNYWludGFpbnMgY2hhaW5hYmxpdHkKICAgICAgICByZXR1cm4gc2VsZjsKICAgICAgfSwKCiAgICAgIC8vIF90cmlnZ2VyU2hvdwogICAgICAvLyAtLS0tLS0tLS0tLS0KICAgICAgLy8gICAgICBEZXRlcm1pbmVzIHdoYXQgZWxlbWVudHMgZ2V0IHNob3duIG9uIHNjcm9sbCBhbmQgY2xpY2sKICAgICAgX3RyaWdnZXJTaG93OiBmdW5jdGlvbihlbGVtLCBzY3JvbGwpIHsKCiAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBlbGVtZW50J3MgcGFyZW50IGlzIGEgaGVhZGVyIGVsZW1lbnQgb3IgdGhlIG5leHQgZWxlbWVudCBpcyBhIG5lc3RlZCBzdWJoZWFkZXIgZWxlbWVudAogICAgICAgIGlmIChlbGVtLnBhcmVudCgpLmlzKGhlYWRlckNsYXNzKSB8fCBlbGVtLm5leHQoKS5pcyhzdWJoZWFkZXJDbGFzcykpIHsKCiAgICAgICAgICAvLyBTaG93cyB0aGUgbmV4dCBzdWItaGVhZGVyIGVsZW1lbnQKICAgICAgICAgIHNlbGYuc2hvdyhlbGVtLm5leHQoc3ViaGVhZGVyQ2xhc3MpLCBzY3JvbGwpOwoKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGVsZW1lbnQncyBwYXJlbnQgaXMgYSBzdWJoZWFkZXIgZWxlbWVudAogICAgICAgIGVsc2UgaWYgKGVsZW0ucGFyZW50KCkuaXMoc3ViaGVhZGVyQ2xhc3MpKSB7CgogICAgICAgICAgLy8gU2hvd3MgdGhlIHBhcmVudCBzdWItaGVhZGVyIGVsZW1lbnQKICAgICAgICAgIHNlbGYuc2hvdyhlbGVtLnBhcmVudCgpLCBzY3JvbGwpOwoKICAgICAgICB9CgogICAgICAgIC8vIE1haW50YWlucyBjaGFpbmFiaWxpdHkKICAgICAgICByZXR1cm4gc2VsZjsKCiAgICAgIH0sCgogICAgICAvLyBfYWRkQ1NTQ2xhc3NlcwogICAgICAvLyAtLS0tLS0tLS0tLS0tLQogICAgICAvLyAgICAgIEFkZHMgQ1NTIGNsYXNzZXMgdG8gdGhlIG5ld2x5IGdlbmVyYXRlZCB0YWJsZSBvZiBjb250ZW50cyBIVE1MCiAgICAgIF9hZGRDU1NDbGFzc2VzOiBmdW5jdGlvbigpIHsKCiAgICAgICAgLy8gSWYgdGhlIHVzZXIgd2FudHMgYSBqcXVlcnlVSSB0aGVtZQogICAgICAgIGlmICh0aGlzLm9wdGlvbnMudGhlbWUgPT09ICJqcXVlcnl1aSIpIHsKCiAgICAgICAgICB0aGlzLmZvY3VzQ2xhc3MgPSAidWktc3RhdGUtZGVmYXVsdCI7CgogICAgICAgICAgdGhpcy5ob3ZlckNsYXNzID0gInVpLXN0YXRlLWhvdmVyIjsKCiAgICAgICAgICAvL0FkZHMgdGhlIGRlZmF1bHQgc3R5bGluZyB0byB0aGUgZHJvcGRvd24gbGlzdAogICAgICAgICAgdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS13aWRnZXQiKS5maW5kKCIudG9jLXRpdGxlIikuYWRkQ2xhc3MoInVpLXdpZGdldC1oZWFkZXIiKS5lbmQoKS5maW5kKCJsaSIpLmFkZENsYXNzKCJ1aS13aWRnZXQtY29udGVudCIpOwoKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSB1c2VyIHdhbnRzIGEgdHdpdHRlckJvb3RzdHJhcCB0aGVtZQogICAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy50aGVtZSA9PT0gImJvb3RzdHJhcCIpIHsKCiAgICAgICAgICB0aGlzLmVsZW1lbnQuZmluZChoZWFkZXJDbGFzcyArICIsIiArIHN1YmhlYWRlckNsYXNzKS5hZGRDbGFzcygibmF2IG5hdi1saXN0Iik7CgogICAgICAgICAgdGhpcy5mb2N1c0NsYXNzID0gImFjdGl2ZSI7CgogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhlIHVzZXIgd2FudHMgYSB0d2l0dGVyQm9vdHN0cmFwIHRoZW1lCiAgICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnRoZW1lID09PSAiYm9vdHN0cmFwMyIpIHsKCiAgICAgICAgICB0aGlzLmVsZW1lbnQuZmluZChoZWFkZXJDbGFzcyArICIsIiArIHN1YmhlYWRlckNsYXNzKS5hZGRDbGFzcygibGlzdC1ncm91cCIpOwoKICAgICAgICAgIHRoaXMuZWxlbWVudC5maW5kKGl0ZW1DbGFzcykuYWRkQ2xhc3MoImxpc3QtZ3JvdXAtaXRlbSIpOwoKICAgICAgICAgIHRoaXMuZm9jdXNDbGFzcyA9ICJhY3RpdmUiOwoKICAgICAgICB9CgogICAgICAgIC8vIElmIGEgdXNlciBkb2VzIG5vdCB3YW50IGEgcHJlYnVpbHQgdGhlbWUKICAgICAgICBlbHNlIHsKCiAgICAgICAgICAvLyBBZGRzIG1vcmUgbmV1dHJhbCBjbGFzc2VzIChpbnN0ZWFkIG9mIGpxdWVyeXVpKQoKICAgICAgICAgIHRoaXMuZm9jdXNDbGFzcyA9IHRvY0ZvY3VzQ2xhc3NOYW1lOwoKICAgICAgICAgIHRoaXMuaG92ZXJDbGFzcyA9IHRvY0hvdmVyQ2xhc3NOYW1lOwoKICAgICAgICB9CgogICAgICAgIC8vTWFpbnRhaW5zIGNoYWluYWJpbGl0eQogICAgICAgIHJldHVybiB0aGlzOwoKICAgICAgfSwKCiAgICAgIC8vIHNldE9wdGlvbgogICAgICAvLyAtLS0tLS0tLS0KICAgICAgLy8gICAgICBTZXRzIGEgc2luZ2xlIFRvY2lmeSBvcHRpb24gYWZ0ZXIgdGhlIHBsdWdpbiBpcyBpbnZva2VkCiAgICAgIHNldE9wdGlvbjogZnVuY3Rpb24oKSB7CgogICAgICAgIC8vIENhbGxzIHRoZSBqUXVlcnlVSSBXaWRnZXQgRmFjdG9yeSBzZXRPcHRpb24gbWV0aG9kCiAgICAgICAgJC5XaWRnZXQucHJvdG90eXBlLl9zZXRPcHRpb24uYXBwbHkodGhpcywgYXJndW1lbnRzKTsKCiAgICAgIH0sCgogICAgICAvLyBzZXRPcHRpb25zCiAgICAgIC8vIC0tLS0tLS0tLS0KICAgICAgLy8gICAgICBTZXRzIGEgc2luZ2xlIG9yIG11bHRpcGxlIFRvY2lmeSBvcHRpb25zIGFmdGVyIHRoZSBwbHVnaW4gaXMgaW52b2tlZAogICAgICBzZXRPcHRpb25zOiBmdW5jdGlvbigpIHsKCiAgICAgICAgLy8gQ2FsbHMgdGhlIGpRdWVyeVVJIFdpZGdldCBGYWN0b3J5IHNldE9wdGlvbnMgbWV0aG9kCiAgICAgICAgJC5XaWRnZXQucHJvdG90eXBlLl9zZXRPcHRpb25zLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CgogICAgICB9LAoKICAgICAgLy8gX3Njcm9sbFRvCiAgICAgIC8vIC0tLS0tLS0tLQogICAgICAvLyAgICAgIFNjcm9sbHMgdG8gYSBzcGVjaWZpYyBlbGVtZW50CiAgICAgIF9zY3JvbGxUbzogZnVuY3Rpb24oZWxlbSkgewoKICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCiAgICAgICAgICBkdXJhdGlvbiA9IHNlbGYub3B0aW9ucy5zbW9vdGhTY3JvbGwgfHwgMCwKICAgICAgICAgIHNjcm9sbFRvID0gc2VsZi5vcHRpb25zLnNjcm9sbFRvLAogICAgICAgICAgY3VycmVudERpdiA9ICQoJ2RpdltkYXRhLXVuaXF1ZT0iJyArIGVsZW0uYXR0cigiZGF0YS11bmlxdWUiKSArICciXScpOwoKICAgICAgICBpZiAoIWN1cnJlbnREaXYubGVuZ3RoKSB7CgogICAgICAgICAgcmV0dXJuIHNlbGY7CgogICAgICAgIH0KCiAgICAgICAgLy8gT25jZSBhbGwgYW5pbWF0aW9ucyBvbiB0aGUgcGFnZSBhcmUgY29tcGxldGUsIHRoaXMgY2FsbGJhY2sgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQKICAgICAgICAkKCJodG1sLCBib2R5IikucHJvbWlzZSgpLmRvbmUoZnVuY3Rpb24oKSB7CgogICAgICAgICAgLy8gQW5pbWF0ZXMgdGhlIGh0bWwgYW5kIGJvZHkgZWxlbWVudCBzY3JvbGx0b3BzCiAgICAgICAgICAkKCJodG1sLCBib2R5IikuYW5pbWF0ZSh7CgogICAgICAgICAgICAvLyBTZXRzIHRoZSBqUXVlcnkgYHNjcm9sbFRvcGAgdG8gdGhlIHRvcCBvZmZzZXQgb2YgdGhlIEhUTUwgZGl2IHRhZyB0aGF0IG1hdGNoZXMgdGhlIGN1cnJlbnQgbGlzdCBpdGVtJ3MgYGRhdGEtdW5pcXVlYCB0YWcKICAgICAgICAgICAgInNjcm9sbFRvcCI6IGN1cnJlbnREaXYub2Zmc2V0KCkudG9wIC0gKCQuaXNGdW5jdGlvbihzY3JvbGxUbykgPyBzY3JvbGxUby5jYWxsKCkgOiBzY3JvbGxUbykgKyAicHgiCgogICAgICAgICAgfSwgewoKICAgICAgICAgICAgLy8gU2V0cyB0aGUgc21vb3RoU2Nyb2xsIGFuaW1hdGlvbiB0aW1lIGR1cmF0aW9uIHRvIHRoZSBzbW9vdGhTY3JvbGxTcGVlZCBvcHRpb24KICAgICAgICAgICAgImR1cmF0aW9uIjogZHVyYXRpb24KCiAgICAgICAgICB9KTsKCiAgICAgICAgfSk7CgogICAgICAgIC8vIE1haW50YWlucyBjaGFpbmFiaWxpdHkKICAgICAgICByZXR1cm4gc2VsZjsKCiAgICAgIH0KCiAgICB9KTsKCiAgfSkpOyAvL2VuZCBvZiBwbHVnaW4K"></script>
<script src="data:application/javascript;base64,CgovKioKICogalF1ZXJ5IFBsdWdpbjogU3RpY2t5IFRhYnMKICoKICogQGF1dGhvciBBaWRhbiBMaXN0ZXIgPGFpZGFuQHBocC5uZXQ+CiAqIGFkYXB0ZWQgYnkgUnViZW4gQXJzbGFuIHRvIGFjdGl2YXRlIHBhcmVudCB0YWJzIHRvbwogKiBodHRwOi8vd3d3LmFpZGFubGlzdGVyLmNvbS8yMDE0LzAzL3BlcnNpc3RpbmctdGhlLXRhYi1zdGF0ZS1pbi1ib290c3RyYXAvCiAqLwooZnVuY3Rpb24oJCkgewogICJ1c2Ugc3RyaWN0IjsKICAkLmZuLnJtYXJrZG93blN0aWNreVRhYnMgPSBmdW5jdGlvbigpIHsKICAgIHZhciBjb250ZXh0ID0gdGhpczsKICAgIC8vIFNob3cgdGhlIHRhYiBjb3JyZXNwb25kaW5nIHdpdGggdGhlIGhhc2ggaW4gdGhlIFVSTCwgb3IgdGhlIGZpcnN0IHRhYgogICAgdmFyIHNob3dTdHVmZkZyb21IYXNoID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2g7CiAgICAgIHZhciBzZWxlY3RvciA9IGhhc2ggPyAnYVtocmVmPSInICsgaGFzaCArICciXScgOiAnbGkuYWN0aXZlID4gYSc7CiAgICAgIHZhciAkc2VsZWN0b3IgPSAkKHNlbGVjdG9yLCBjb250ZXh0KTsKICAgICAgaWYoJHNlbGVjdG9yLmRhdGEoJ3RvZ2dsZScpID09PSAidGFiIikgewogICAgICAgICRzZWxlY3Rvci50YWIoJ3Nob3cnKTsKICAgICAgICAvLyB3YWxrIHVwIHRoZSBhbmNlc3RvcnMgb2YgdGhpcyBlbGVtZW50LCBzaG93IGFueSBoaWRkZW4gdGFicwogICAgICAgICRzZWxlY3Rvci5wYXJlbnRzKCcuc2VjdGlvbi50YWJzZXQnKS5lYWNoKGZ1bmN0aW9uKGksIGVsbSkgewogICAgICAgICAgdmFyIGxpbmsgPSAkKCdhW2hyZWY9IiMnICsgJChlbG0pLmF0dHIoJ2lkJykgKyAnIl0nKTsKICAgICAgICAgIGlmKGxpbmsuZGF0YSgndG9nZ2xlJykgPT09ICJ0YWIiKSB7CiAgICAgICAgICAgIGxpbmsudGFiKCJzaG93Iik7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH07CgoKICAgIC8vIFNldCB0aGUgY29ycmVjdCB0YWIgd2hlbiB0aGUgcGFnZSBsb2FkcwogICAgc2hvd1N0dWZmRnJvbUhhc2goY29udGV4dCk7CgogICAgLy8gU2V0IHRoZSBjb3JyZWN0IHRhYiB3aGVuIGEgdXNlciB1c2VzIHRoZWlyIGJhY2svZm9yd2FyZCBidXR0b24KICAgICQod2luZG93KS5vbignaGFzaGNoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICBzaG93U3R1ZmZGcm9tSGFzaChjb250ZXh0KTsKICAgIH0pOwoKICAgIC8vIENoYW5nZSB0aGUgVVJMIHdoZW4gdGFicyBhcmUgY2xpY2tlZAogICAgJCgnYScsIGNvbnRleHQpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgdGhpcy5ocmVmKTsKICAgICAgc2hvd1N0dWZmRnJvbUhhc2goY29udGV4dCk7CiAgICB9KTsKCiAgICByZXR1cm4gdGhpczsKICB9Owp9KGpRdWVyeSkpOwoKd2luZG93LmJ1aWxkVGFic2V0cyA9IGZ1bmN0aW9uKHRvY0lEKSB7CgogIC8vIGJ1aWxkIGEgdGFic2V0IGZyb20gYSBzZWN0aW9uIGRpdiB3aXRoIHRoZSAudGFic2V0IGNsYXNzCiAgZnVuY3Rpb24gYnVpbGRUYWJzZXQodGFic2V0KSB7CgogICAgLy8gY2hlY2sgZm9yIGZhZGUgYW5kIHBpbGxzIG9wdGlvbnMKICAgIHZhciBmYWRlID0gdGFic2V0Lmhhc0NsYXNzKCJ0YWJzZXQtZmFkZSIpOwogICAgdmFyIHBpbGxzID0gdGFic2V0Lmhhc0NsYXNzKCJ0YWJzZXQtcGlsbHMiKTsKICAgIHZhciBuYXZDbGFzcyA9IHBpbGxzID8gIm5hdi1waWxscyIgOiAibmF2LXRhYnMiOwoKICAgIC8vIGRldGVybWluZSB0aGUgaGVhZGluZyBsZXZlbCBvZiB0aGUgdGFic2V0IGFuZCB0YWJzCiAgICB2YXIgbWF0Y2ggPSB0YWJzZXQuYXR0cignY2xhc3MnKS5tYXRjaCgvbGV2ZWwoXGQpIC8pOwogICAgaWYgKG1hdGNoID09PSBudWxsKQogICAgICByZXR1cm47CiAgICB2YXIgdGFic2V0TGV2ZWwgPSBOdW1iZXIobWF0Y2hbMV0pOwogICAgdmFyIHRhYkxldmVsID0gdGFic2V0TGV2ZWwgKyAxOwoKICAgIC8vIGZpbmQgYWxsIHN1YmhlYWRpbmdzIGltbWVkaWF0ZWx5IGJlbG93CiAgICB2YXIgdGFicyA9IHRhYnNldC5maW5kKCJkaXYuc2VjdGlvbi5sZXZlbCIgKyB0YWJMZXZlbCk7CiAgICBpZiAoIXRhYnMubGVuZ3RoKQogICAgICByZXR1cm47CgogICAgLy8gY3JlYXRlIHRhYmxpc3QgYW5kIHRhYi1jb250ZW50IGVsZW1lbnRzCiAgICB2YXIgdGFiTGlzdCA9ICQoJzx1bCBjbGFzcz0ibmF2ICcgKyBuYXZDbGFzcyArICciIHJvbGU9InRhYmxpc3QiPjwvdWw+Jyk7CiAgICAkKHRhYnNbMF0pLmJlZm9yZSh0YWJMaXN0KTsKICAgIHZhciB0YWJDb250ZW50ID0gJCgnPGRpdiBjbGFzcz0idGFiLWNvbnRlbnQiPjwvZGl2PicpOwogICAgJCh0YWJzWzBdKS5iZWZvcmUodGFiQ29udGVudCk7CgogICAgLy8gYnVpbGQgdGhlIHRhYnNldAogICAgdmFyIGFjdGl2ZVRhYiA9IDA7CiAgICB0YWJzLmVhY2goZnVuY3Rpb24oaSkgewoKICAgICAgLy8gZ2V0IHRoZSB0YWIgZGl2CiAgICAgIHZhciB0YWIgPSAkKHRhYnNbaV0pOwoKICAgICAgLy8gZ2V0IHRoZSBpZCB0aGVuIHNhbml0aXplIGl0IGZvciB1c2Ugd2l0aCBib290c3RyYXAgdGFicwogICAgICB2YXIgaWQgPSB0YWIuYXR0cignaWQnKTsKCiAgICAgIC8vIHNlZSBpZiB0aGlzIGlzIG1hcmtlZCBhcyB0aGUgYWN0aXZlIHRhYgogICAgICBpZiAodGFiLmhhc0NsYXNzKCdhY3RpdmUnKSkKICAgICAgICBhY3RpdmVUYWIgPSBpOwoKICAgICAgLy8gcmVtb3ZlIGFueSB0YWJsZSBvZiBjb250ZW50cyBlbnRyaWVzIGFzc29jaWF0ZWQgd2l0aAogICAgICAvLyB0aGlzIElEIChzaW5jZSB3ZSdsbCBiZSByZW1vdmluZyB0aGUgaGVhZGluZyBlbGVtZW50KQogICAgICAkKCJkaXYjIiArIHRvY0lEICsgIiBsaSBhW2hyZWY9JyMiICsgaWQgKyAiJ10iKS5wYXJlbnQoKS5yZW1vdmUoKTsKCiAgICAgIC8vIHNhbml0aXplIHRoZSBpZCBmb3IgdXNlIHdpdGggYm9vdHN0cmFwIHRhYnMKICAgICAgaWQgPSBpZC5yZXBsYWNlKC9bLlwvPyYhIzw+XS9nLCAnJykucmVwbGFjZSgvXHMvZywgJ18nKTsKICAgICAgdGFiLmF0dHIoJ2lkJywgaWQpOwoKICAgICAgLy8gZ2V0IHRoZSBoZWFkaW5nIGVsZW1lbnQgd2l0aGluIGl0LCBncmFiIGl0J3MgdGV4dCwgdGhlbiByZW1vdmUgaXQKICAgICAgdmFyIGhlYWRpbmcgPSB0YWIuZmluZCgnaCcgKyB0YWJMZXZlbCArICc6Zmlyc3QnKTsKICAgICAgdmFyIGhlYWRpbmdUZXh0ID0gaGVhZGluZy5odG1sKCk7CiAgICAgIGhlYWRpbmcucmVtb3ZlKCk7CgogICAgICAvLyBidWlsZCBhbmQgYXBwZW5kIHRoZSB0YWIgbGlzdCBpdGVtCiAgICAgIHZhciBhID0gJCgnPGEgcm9sZT0idGFiIiBkYXRhLXRvZ2dsZT0idGFiIj4nICsgaGVhZGluZ1RleHQgKyAnPC9hPicpOwogICAgICBhLmF0dHIoJ2hyZWYnLCAnIycgKyBpZCk7CiAgICAgIGEuYXR0cignYXJpYS1jb250cm9scycsIGlkKTsKICAgICAgdmFyIGxpID0gJCgnPGxpIHJvbGU9InByZXNlbnRhdGlvbiI+PC9saT4nKTsKICAgICAgbGkuYXBwZW5kKGEpOwogICAgICB0YWJMaXN0LmFwcGVuZChsaSk7CgogICAgICAvLyBzZXQgaXQncyBhdHRyaWJ1dGVzCiAgICAgIHRhYi5hdHRyKCdyb2xlJywgJ3RhYnBhbmVsJyk7CiAgICAgIHRhYi5hZGRDbGFzcygndGFiLXBhbmUnKTsKICAgICAgdGFiLmFkZENsYXNzKCd0YWJiZWQtcGFuZScpOwogICAgICBpZiAoZmFkZSkKICAgICAgICB0YWIuYWRkQ2xhc3MoJ2ZhZGUnKTsKCiAgICAgIC8vIG1vdmUgaXQgaW50byB0aGUgdGFiIGNvbnRlbnQgZGl2CiAgICAgIHRhYi5kZXRhY2goKS5hcHBlbmRUbyh0YWJDb250ZW50KTsKICAgIH0pOwoKICAgIC8vIHNldCBhY3RpdmUgdGFiCiAgICAkKHRhYkxpc3QuY2hpbGRyZW4oJ2xpJylbYWN0aXZlVGFiXSkuYWRkQ2xhc3MoJ2FjdGl2ZScpOwogICAgdmFyIGFjdGl2ZSA9ICQodGFiQ29udGVudC5jaGlsZHJlbignZGl2LnNlY3Rpb24nKVthY3RpdmVUYWJdKTsKICAgIGFjdGl2ZS5hZGRDbGFzcygnYWN0aXZlJyk7CiAgICBpZiAoZmFkZSkKICAgICAgYWN0aXZlLmFkZENsYXNzKCdpbicpOwoKICAgIGlmICh0YWJzZXQuaGFzQ2xhc3MoInRhYnNldC1zdGlja3kiKSkKICAgICAgdGFic2V0LnJtYXJrZG93blN0aWNreVRhYnMoKTsKICB9CgogIC8vIGNvbnZlcnQgc2VjdGlvbiBkaXZzIHdpdGggdGhlIC50YWJzZXQgY2xhc3MgdG8gdGFic2V0cwogIHZhciB0YWJzZXRzID0gJCgiZGl2LnNlY3Rpb24udGFic2V0Iik7CiAgdGFic2V0cy5lYWNoKGZ1bmN0aW9uKGkpIHsKICAgIGJ1aWxkVGFic2V0KCQodGFic2V0c1tpXSkpOwogIH0pOwp9OwoK"></script>
<script src="data:application/javascript;base64,KGZ1bmN0aW9uKCkgewogIC8vIElmIHdpbmRvdy5IVE1MV2lkZ2V0cyBpcyBhbHJlYWR5IGRlZmluZWQsIHRoZW4gdXNlIGl0OyBvdGhlcndpc2UgY3JlYXRlIGEKICAvLyBuZXcgb2JqZWN0LiBUaGlzIGFsbG93cyBwcmVjZWRpbmcgY29kZSB0byBzZXQgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUKICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLgogIHdpbmRvdy5IVE1MV2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cyB8fCB7fTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLgogIHZhciB2aWV3ZXJNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUgPQogICAgICAvXGJ2aWV3ZXJfcGFuZT0xXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uKTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZS4gSWYgbm90LCBpdCdzIGEgc3RhdGljIGRvY3VtZW50LgogIC8vIE5vdGUgdGhhdCBzdGF0aWMgd2lkZ2V0cyBjYW4gYXBwZWFyIGluIGJvdGggU2hpbnkgYW5kIHN0YXRpYyBtb2RlcywgYnV0CiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4KICB2YXIgc2hpbnlNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnNoaW55TW9kZSA9CiAgICAgIHR5cGVvZih3aW5kb3cuU2hpbnkpICE9PSAidW5kZWZpbmVkIiAmJiAhIXdpbmRvdy5TaGlueS5vdXRwdXRCaW5kaW5nczsKCiAgLy8gV2UgY2FuJ3QgY291bnQgb24galF1ZXJ5IGJlaW5nIGF2YWlsYWJsZSwgc28gd2UgaW1wbGVtZW50IG91ciBvd24KICAvLyB2ZXJzaW9uIGlmIG5lY2Vzc2FyeS4KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKHR5cGVvZihqUXVlcnkpICE9PSAidW5kZWZpbmVkIiAmJiBzY29wZSBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICByZXR1cm4gc2NvcGUuZmluZChzZWxlY3Rvcik7CiAgICB9CiAgICBpZiAoc2NvcGUucXVlcnlTZWxlY3RvckFsbCkgewogICAgICByZXR1cm4gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPT09IG51bGwpCiAgICAgIHJldHVybiBbXTsKICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQogICAgICByZXR1cm4gdmFsdWU7CiAgICByZXR1cm4gW3ZhbHVlXTsKICB9CgogIC8vIEltcGxlbWVudCBqUXVlcnkncyBleHRlbmQKICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07CiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7CiAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgewogICAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4KICBmdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgY2FsbGJhY2ssIHRoaXNBcmcpIHsKICAgIGlmICh2YWx1ZXMuZm9yRWFjaCkgewogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7CiAgICB9IGVsc2UgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZXBsYWNlcyB0aGUgc3BlY2lmaWVkIG1ldGhvZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVuY1NvdXJjZS4KICAvLwogIC8vIE5vdGUgdGhhdCBmdW5jU291cmNlIHNob3VsZCBub3QgQkUgdGhlIG5ldyBtZXRob2QsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCiAgLy8gdGhhdCBSRVRVUk5TIHRoZSBuZXcgbWV0aG9kLiBmdW5jU291cmNlIHJlY2VpdmVzIGEgc2luZ2xlIGFyZ3VtZW50IHRoYXQgaXMKICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4KICAvLyBtZXRob2QgY2FuIGJlIGNhbGxlZCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiwgaXQgaGFzIHRoZSB0YXJnZXQgcGVybWFuZW50bHkKICAvLyBib3VuZCB0byBpdCBzbyAidGhpcyIgd2lsbCB3b3JrIGNvcnJlY3RseS4KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsKICAgIHZhciBzdXBlckZ1bmMgPSB0YXJnZXRbbWV0aG9kTmFtZV0gfHwgZnVuY3Rpb24oKSB7fTsKICAgIHZhciBzdXBlckZ1bmNCb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKICAgIH07CiAgICB0YXJnZXRbbWV0aG9kTmFtZV0gPSBmdW5jU291cmNlKHN1cGVyRnVuY0JvdW5kKTsKICB9CgogIC8vIEFkZCBhIG1ldGhvZCB0byBkZWxlZ2F0b3IgdGhhdCwgd2hlbiBpbnZva2VkLCBjYWxscwogIC8vIGRlbGVnYXRlZS5tZXRob2ROYW1lLiBJZiB0aGVyZSBpcyBubyBzdWNoIG1ldGhvZCBvbgogIC8vIHRoZSBkZWxlZ2F0ZWUsIGJ1dCB0aGVyZSB3YXMgb25lIG9uIGRlbGVnYXRvciBiZWZvcmUKICAvLyBkZWxlZ2F0ZU1ldGhvZCB3YXMgY2FsbGVkLCB0aGVuIHRoZSBvcmlnaW5hbCB2ZXJzaW9uCiAgLy8gaXMgaW52b2tlZCBpbnN0ZWFkLgogIC8vIEZvciBleGFtcGxlOgogIC8vCiAgLy8gdmFyIGEgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2ExJyk7IH0KICAvLyAgIG1ldGhvZDI6IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYTInKTsgfQogIC8vIH07CiAgLy8gdmFyIGIgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2IxJyk7IH0KICAvLyB9OwogIC8vIGRlbGVnYXRlTWV0aG9kKGEsIGIsICJtZXRob2QxIik7CiAgLy8gZGVsZWdhdGVNZXRob2QoYSwgYiwgIm1ldGhvZDIiKTsKICAvLyBhLm1ldGhvZDEoKTsKICAvLyBhLm1ldGhvZDIoKTsKICAvLwogIC8vIFRoZSBvdXRwdXQgd291bGQgYmUgImIxIiwgImEyIi4KICBmdW5jdGlvbiBkZWxlZ2F0ZU1ldGhvZChkZWxlZ2F0b3IsIGRlbGVnYXRlZSwgbWV0aG9kTmFtZSkgewogICAgdmFyIGluaGVyaXRlZCA9IGRlbGVnYXRvclttZXRob2ROYW1lXTsKICAgIGRlbGVnYXRvclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgdGFyZ2V0ID0gZGVsZWdhdGVlOwogICAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGVlW21ldGhvZE5hbWVdOwoKICAgICAgLy8gVGhlIG1ldGhvZCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBkZWxlZ2F0ZWUuIEluc3RlYWQsCiAgICAgIC8vIGNhbGwgdGhlIG1ldGhvZCBvbiB0aGUgZGVsZWdhdG9yLCBpZiBpdCBleGlzdHMuCiAgICAgIGlmICghbWV0aG9kKSB7CiAgICAgICAgdGFyZ2V0ID0gZGVsZWdhdG9yOwogICAgICAgIG1ldGhvZCA9IGluaGVyaXRlZDsKICAgICAgfQoKICAgICAgaWYgKG1ldGhvZCkgewogICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpOwogICAgICB9CiAgICB9OwogIH0KCiAgLy8gSW1wbGVtZW50IGEgdmFndWUgZmFjc2ltaWxpZSBvZiBqUXVlcnkncyBkYXRhIG1ldGhvZAogIGZ1bmN0aW9uIGVsZW1lbnREYXRhKGVsLCBuYW1lLCB2YWx1ZSkgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikgewogICAgICByZXR1cm4gZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV07CiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykgewogICAgICBlbFsiaHRtbHdpZGdldF9kYXRhXyIgKyBuYW1lXSA9IHZhbHVlOwogICAgICByZXR1cm4gZWw7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGVsZW1lbnREYXRhOiAiICsKICAgICAgICBhcmd1bWVudHMubGVuZ3RoKTsKICAgIH0KICB9CgogIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ0NjE3MC9lc2NhcGUtc3RyaW5nLWZvci11c2UtaW4tamF2YXNjcmlwdC1yZWdleAogIGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHIpIHsKICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1wtXFtcXVwvXHtcfVwoXClcKlwrXD9cLlxcXF5cJFx8XS9nLCAiXFwkJiIpOwogIH0KCiAgZnVuY3Rpb24gaGFzQ2xhc3MoZWwsIGNsYXNzTmFtZSkgewogICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgiXFxiIiArIGVzY2FwZVJlZ0V4cChjbGFzc05hbWUpICsgIlxcYiIpOwogICAgcmV0dXJuIHJlLnRlc3QoZWwuY2xhc3NOYW1lKTsKICB9CgogIC8vIGVsZW1lbnRzIC0gYXJyYXkgKG9yIGFycmF5LWxpa2Ugb2JqZWN0KSBvZiBIVE1MIGVsZW1lbnRzCiAgLy8gY2xhc3NOYW1lIC0gY2xhc3MgbmFtZSB0byB0ZXN0IGZvcgogIC8vIGluY2x1ZGUgLSBpZiB0cnVlLCBvbmx5IHJldHVybiBlbGVtZW50cyB3aXRoIGdpdmVuIGNsYXNzTmFtZTsKICAvLyAgIGlmIGZhbHNlLCBvbmx5IHJldHVybiBlbGVtZW50cyAqd2l0aG91dCogZ2l2ZW4gY2xhc3NOYW1lCiAgZnVuY3Rpb24gZmlsdGVyQnlDbGFzcyhlbGVtZW50cywgY2xhc3NOYW1lLCBpbmNsdWRlKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICBpZiAoaGFzQ2xhc3MoZWxlbWVudHNbaV0sIGNsYXNzTmFtZSkgPT0gaW5jbHVkZSkKICAgICAgICByZXN1bHRzLnB1c2goZWxlbWVudHNbaV0pOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfQoKICBmdW5jdGlvbiBvbihvYmosIGV2ZW50TmFtZSwgZnVuYykgewogICAgaWYgKG9iai5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgIG9iai5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZnVuYywgZmFsc2UpOwogICAgfSBlbHNlIGlmIChvYmouYXR0YWNoRXZlbnQpIHsKICAgICAgb2JqLmF0dGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBvZmYob2JqLCBldmVudE5hbWUsIGZ1bmMpIHsKICAgIGlmIChvYmoucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgb2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBmdW5jLCBmYWxzZSk7CiAgICBlbHNlIGlmIChvYmouZGV0YWNoRXZlbnQpIHsKICAgICAgb2JqLmRldGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICAvLyBUcmFuc2xhdGUgYXJyYXkgb2YgdmFsdWVzIHRvIHRvcC9yaWdodC9ib3R0b20vbGVmdCwgYXMgdXN1YWwgd2l0aAogIC8vIHRoZSAicGFkZGluZyIgQ1NTIHByb3BlcnR5CiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3BhZGRpbmcKICBmdW5jdGlvbiB1bnBhY2tQYWRkaW5nKHZhbHVlKSB7CiAgICBpZiAodHlwZW9mKHZhbHVlKSA9PT0gIm51bWJlciIpCiAgICAgIHZhbHVlID0gW3ZhbHVlXTsKICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDEpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMF0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzBdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDIpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDMpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDQpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzNdfTsKICAgIH0KICB9CgogIC8vIENvbnZlcnQgYW4gdW5wYWNrZWQgcGFkZGluZyBvYmplY3QgdG8gYSBDU1MgdmFsdWUKICBmdW5jdGlvbiBwYWRkaW5nVG9Dc3MocGFkZGluZ09iaikgewogICAgcmV0dXJuIHBhZGRpbmdPYmoudG9wICsgInB4ICIgKyBwYWRkaW5nT2JqLnJpZ2h0ICsgInB4ICIgKyBwYWRkaW5nT2JqLmJvdHRvbSArICJweCAiICsgcGFkZGluZ09iai5sZWZ0ICsgInB4IjsKICB9CgogIC8vIE1ha2VzIGEgbnVtYmVyIHN1aXRhYmxlIGZvciBDU1MKICBmdW5jdGlvbiBweCh4KSB7CiAgICBpZiAodHlwZW9mKHgpID09PSAibnVtYmVyIikKICAgICAgcmV0dXJuIHggKyAicHgiOwogICAgZWxzZQogICAgICByZXR1cm4geDsKICB9CgogIC8vIFJldHJpZXZlcyBydW50aW1lIHdpZGdldCBzaXppbmcgaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuCiAgLy8gVGhlIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbnVsbCwgb3IgYW4gb2JqZWN0IHdpdGggZmlsbCwgcGFkZGluZywKICAvLyBkZWZhdWx0V2lkdGgsIGRlZmF1bHRIZWlnaHQgZmllbGRzLgogIGZ1bmN0aW9uIHNpemluZ1BvbGljeShlbCkgewogICAgdmFyIHNpemluZ0VsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vaHRtbHdpZGdldC1zaXppbmcnXSIpOwogICAgaWYgKCFzaXppbmdFbCkKICAgICAgcmV0dXJuIG51bGw7CiAgICB2YXIgc3AgPSBKU09OLnBhcnNlKHNpemluZ0VsLnRleHRDb250ZW50IHx8IHNpemluZ0VsLnRleHQgfHwgInt9Iik7CiAgICBpZiAodmlld2VyTW9kZSkgewogICAgICByZXR1cm4gc3Audmlld2VyOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIHNwLmJyb3dzZXI7CiAgICB9CiAgfQoKICAvLyBAcGFyYW0gdGFza3MgQXJyYXkgb2Ygc3RyaW5ncyAob3IgZmFsc3kgdmFsdWUsIGluIHdoaWNoIGNhc2Ugbm8tb3ApLgogIC8vICAgRWFjaCBlbGVtZW50IG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCB5aWVsZHMgYQogIC8vICAgZnVuY3Rpb24uIE9yLCBjYW4gYmUgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICJjb2RlIiBhbmQgImRhdGEiCiAgLy8gICBwcm9wZXJ0aWVzOyBpbiB0aGlzIGNhc2UsIHRoZSAiY29kZSIgcHJvcGVydHkgc2hvdWxkIGJlIGEgc3RyaW5nCiAgLy8gICBvZiBKUyB0aGF0J3MgYW4gZXhwciB0aGF0IHlpZWxkcyBhIGZ1bmN0aW9uLCBhbmQgImRhdGEiIHNob3VsZCBiZQogIC8vICAgYW4gb2JqZWN0IHRoYXQgd2lsbCBiZSBhZGRlZCBhcyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHdoZW4gdGhhdAogIC8vICAgZnVuY3Rpb24gaXMgY2FsbGVkLgogIC8vIEBwYXJhbSB0YXJnZXQgVGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgInRoaXMiIGZvciBlYWNoIGZ1bmN0aW9uCiAgLy8gICBleGVjdXRpb24uCiAgLy8gQHBhcmFtIGFyZ3MgQXJyYXkgb2YgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb25zLiAoVGhlCiAgLy8gICBzYW1lIGFyZ3VtZW50cyB3aWxsIGJlIHBhc3NlZCB0byBhbGwgZnVuY3Rpb25zLikKICBmdW5jdGlvbiBldmFsQW5kUnVuKHRhc2tzLCB0YXJnZXQsIGFyZ3MpIHsKICAgIGlmICh0YXNrcykgewogICAgICBmb3JFYWNoKHRhc2tzLCBmdW5jdGlvbih0YXNrKSB7CiAgICAgICAgdmFyIHRoZXNlQXJncyA9IGFyZ3M7CiAgICAgICAgaWYgKHR5cGVvZih0YXNrKSA9PT0gIm9iamVjdCIpIHsKICAgICAgICAgIHRoZXNlQXJncyA9IHRoZXNlQXJncy5jb25jYXQoW3Rhc2suZGF0YV0pOwogICAgICAgICAgdGFzayA9IHRhc2suY29kZTsKICAgICAgICB9CiAgICAgICAgdmFyIHRhc2tGdW5jID0gdHJ5RXZhbCh0YXNrKTsKICAgICAgICBpZiAodHlwZW9mKHRhc2tGdW5jKSAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUYXNrIG11c3QgYmUgYSBmdW5jdGlvbiEgU291cmNlOlxuIiArIHRhc2spOwogICAgICAgIH0KICAgICAgICB0YXNrRnVuYy5hcHBseSh0YXJnZXQsIHRoZXNlQXJncyk7CiAgICAgIH0pOwogICAgfQogIH0KCiAgLy8gQXR0ZW1wdCBldmFsKCkgYm90aCB3aXRoIGFuZCB3aXRob3V0IGVuY2xvc2luZyBpbiBwYXJlbnRoZXNlcy4KICAvLyBOb3RlIHRoYXQgZW5jbG9zaW5nIGNvZXJjZXMgYSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBpbnRvCiAgLy8gYW4gZXhwcmVzc2lvbiB0aGF0IGV2YWwoKSBjYW4gcGFyc2UKICAvLyAob3RoZXJ3aXNlLCBhIFN5bnRheEVycm9yIGlzIHRocm93bikKICBmdW5jdGlvbiB0cnlFdmFsKGNvZGUpIHsKICAgIHZhciByZXN1bHQgPSBudWxsOwogICAgdHJ5IHsKICAgICAgcmVzdWx0ID0gZXZhbCgiKCIgKyBjb2RlICsgIikiKTsKICAgIH0gY2F0Y2goZXJyb3IpIHsKICAgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikpIHsKICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgfQogICAgICB0cnkgewogICAgICAgIHJlc3VsdCA9IGV2YWwoY29kZSk7CiAgICAgIH0gY2F0Y2goZSkgewogICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpIHsKICAgICAgICAgIHRocm93IGVycm9yOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aHJvdyBlOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHJlc3VsdDsKICB9CgogIGZ1bmN0aW9uIGluaXRTaXppbmcoZWwpIHsKICAgIHZhciBzaXppbmcgPSBzaXppbmdQb2xpY3koZWwpOwogICAgaWYgKCFzaXppbmcpCiAgICAgIHJldHVybjsKCiAgICB2YXIgY2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImh0bWx3aWRnZXRfY29udGFpbmVyIik7CiAgICBpZiAoIWNlbCkKICAgICAgcmV0dXJuOwoKICAgIGlmICh0eXBlb2Yoc2l6aW5nLnBhZGRpbmcpICE9PSAidW5kZWZpbmVkIikgewogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbiA9ICIwIjsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nID0gcGFkZGluZ1RvQ3NzKHVucGFja1BhZGRpbmcoc2l6aW5nLnBhZGRpbmcpKTsKICAgIH0KCiAgICBpZiAoc2l6aW5nLmZpbGwpIHsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLndpZHRoID0gIjEwMCUiOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmhlaWdodCA9ICIxMDAlIjsKICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLndpZHRoID0gIjEwMCUiOwogICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICBpZiAoY2VsKSB7CiAgICAgICAgY2VsLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIjsKICAgICAgICB2YXIgcGFkID0gdW5wYWNrUGFkZGluZyhzaXppbmcucGFkZGluZyk7CiAgICAgICAgY2VsLnN0eWxlLnRvcCA9IHBhZC50b3AgKyAicHgiOwogICAgICAgIGNlbC5zdHlsZS5yaWdodCA9IHBhZC5yaWdodCArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLmJvdHRvbSA9IHBhZC5ib3R0b20gKyAicHgiOwogICAgICAgIGNlbC5zdHlsZS5sZWZ0ID0gcGFkLmxlZnQgKyAicHgiOwogICAgICAgIGVsLnN0eWxlLndpZHRoID0gIjEwMCUiOwogICAgICAgIGVsLnN0eWxlLmhlaWdodCA9ICIxMDAlIjsKICAgICAgfQoKICAgICAgcmV0dXJuIHsKICAgICAgICBnZXRXaWR0aDogZnVuY3Rpb24oKSB7IHJldHVybiBjZWwub2Zmc2V0V2lkdGg7IH0sCiAgICAgICAgZ2V0SGVpZ2h0OiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbC5vZmZzZXRIZWlnaHQ7IH0KICAgICAgfTsKCiAgICB9IGVsc2UgewogICAgICBlbC5zdHlsZS53aWR0aCA9IHB4KHNpemluZy53aWR0aCk7CiAgICAgIGVsLnN0eWxlLmhlaWdodCA9IHB4KHNpemluZy5oZWlnaHQpOwoKICAgICAgcmV0dXJuIHsKICAgICAgICBnZXRXaWR0aDogZnVuY3Rpb24oKSB7IHJldHVybiBlbC5vZmZzZXRXaWR0aDsgfSwKICAgICAgICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gZWwub2Zmc2V0SGVpZ2h0OyB9CiAgICAgIH07CiAgICB9CiAgfQoKICAvLyBEZWZhdWx0IGltcGxlbWVudGF0aW9ucyBmb3IgbWV0aG9kcwogIHZhciBkZWZhdWx0cyA9IHsKICAgIGZpbmQ6IGZ1bmN0aW9uKHNjb3BlKSB7CiAgICAgIHJldHVybiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCAiLiIgKyB0aGlzLm5hbWUpOwogICAgfSwKICAgIHJlbmRlckVycm9yOiBmdW5jdGlvbihlbCwgZXJyKSB7CiAgICAgIHZhciAkZWwgPSAkKGVsKTsKCiAgICAgIHRoaXMuY2xlYXJFcnJvcihlbCk7CgogICAgICAvLyBBZGQgYWxsIHRoZXNlIGVycm9yIGNsYXNzZXMsIGFzIFNoaW55IGRvZXMKICAgICAgdmFyIGVyckNsYXNzID0gInNoaW55LW91dHB1dC1lcnJvciI7CiAgICAgIGlmIChlcnIudHlwZSAhPT0gbnVsbCkgewogICAgICAgIC8vIHVzZSB0aGUgY2xhc3NlcyBvZiB0aGUgZXJyb3IgY29uZGl0aW9uIGFzIENTUyBjbGFzcyBuYW1lcwogICAgICAgIGVyckNsYXNzID0gZXJyQ2xhc3MgKyAiICIgKyAkLm1hcChhc0FycmF5KGVyci50eXBlKSwgZnVuY3Rpb24odHlwZSkgewogICAgICAgICAgcmV0dXJuIGVyckNsYXNzICsgIi0iICsgdHlwZTsKICAgICAgICB9KS5qb2luKCIgIik7CiAgICAgIH0KICAgICAgZXJyQ2xhc3MgPSBlcnJDbGFzcyArICIgaHRtbHdpZGdldHMtZXJyb3IiOwoKICAgICAgLy8gSXMgZWwgaW5saW5lIG9yIGJsb2NrPyBJZiBpbmxpbmUgb3IgaW5saW5lLWJsb2NrLCBqdXN0IGRpc3BsYXk6bm9uZSBpdAogICAgICAvLyBhbmQgYWRkIGFuIGlubGluZSBlcnJvci4KICAgICAgdmFyIGRpc3BsYXkgPSAkZWwuY3NzKCJkaXNwbGF5Iik7CiAgICAgICRlbC5kYXRhKCJyZXN0b3JlLWRpc3BsYXktbW9kZSIsIGRpc3BsYXkpOwoKICAgICAgaWYgKGRpc3BsYXkgPT09ICJpbmxpbmUiIHx8IGRpc3BsYXkgPT09ICJpbmxpbmUtYmxvY2siKSB7CiAgICAgICAgJGVsLmhpZGUoKTsKICAgICAgICBpZiAoZXJyLm1lc3NhZ2UgIT09ICIiKSB7CiAgICAgICAgICB2YXIgZXJyb3JTcGFuID0gJCgiPHNwYW4+IikuYWRkQ2xhc3MoZXJyQ2xhc3MpOwogICAgICAgICAgZXJyb3JTcGFuLnRleHQoZXJyLm1lc3NhZ2UpOwogICAgICAgICAgJGVsLmFmdGVyKGVycm9yU3Bhbik7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGRpc3BsYXkgPT09ICJibG9jayIpIHsKICAgICAgICAvLyBJZiBibG9jaywgYWRkIGFuIGVycm9yIGp1c3QgYWZ0ZXIgdGhlIGVsLCBzZXQgdmlzaWJpbGl0eTpub25lIG9uIHRoZQogICAgICAgIC8vIGVsLCBhbmQgcG9zaXRpb24gdGhlIGVycm9yIHRvIGJlIG9uIHRvcCBvZiB0aGUgZWwuCiAgICAgICAgLy8gTWFyayBpdCB3aXRoIGEgdW5pcXVlIElEIGFuZCBDU1MgY2xhc3Mgc28gd2UgY2FuIHJlbW92ZSBpdCBsYXRlci4KICAgICAgICAkZWwuY3NzKCJ2aXNpYmlsaXR5IiwgImhpZGRlbiIpOwogICAgICAgIGlmIChlcnIubWVzc2FnZSAhPT0gIiIpIHsKICAgICAgICAgIHZhciBlcnJvckRpdiA9ICQoIjxkaXY+IikuYWRkQ2xhc3MoZXJyQ2xhc3MpLmNzcygicG9zaXRpb24iLCAiYWJzb2x1dGUiKQogICAgICAgICAgICAuY3NzKCJ0b3AiLCBlbC5vZmZzZXRUb3ApCiAgICAgICAgICAgIC5jc3MoImxlZnQiLCBlbC5vZmZzZXRMZWZ0KQogICAgICAgICAgICAvLyBzZXR0aW5nIHdpZHRoIGNhbiBwdXNoIG91dCB0aGUgcGFnZSBzaXplLCBmb3JjaW5nIG90aGVyd2lzZQogICAgICAgICAgICAvLyB1bm5lY2Vzc2FyeSBzY3JvbGxiYXJzIHRvIGFwcGVhciBhbmQgbWFraW5nIGl0IGltcG9zc2libGUgZm9yCiAgICAgICAgICAgIC8vIHRoZSBlbGVtZW50IHRvIHNocmluazsgc28gdXNlIG1heC13aWR0aCBpbnN0ZWFkCiAgICAgICAgICAgIC5jc3MoIm1heFdpZHRoIiwgZWwub2Zmc2V0V2lkdGgpCiAgICAgICAgICAgIC5jc3MoImhlaWdodCIsIGVsLm9mZnNldEhlaWdodCk7CiAgICAgICAgICBlcnJvckRpdi50ZXh0KGVyci5tZXNzYWdlKTsKICAgICAgICAgICRlbC5hZnRlcihlcnJvckRpdik7CgogICAgICAgICAgLy8gUmVhbGx5IGR1bWIgd2F5IHRvIGtlZXAgdGhlIHNpemUvcG9zaXRpb24gb2YgdGhlIGVycm9yIGluIHN5bmMgd2l0aAogICAgICAgICAgLy8gdGhlIHBhcmVudCBlbGVtZW50IGFzIHRoZSB3aW5kb3cgaXMgcmVzaXplZCBvciB3aGF0ZXZlci4KICAgICAgICAgIHZhciBpbnRJZCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoIWVycm9yRGl2WzBdLnBhcmVudEVsZW1lbnQpIHsKICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludElkKTsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZXJyb3JEaXYKICAgICAgICAgICAgICAuY3NzKCJ0b3AiLCBlbC5vZmZzZXRUb3ApCiAgICAgICAgICAgICAgLmNzcygibGVmdCIsIGVsLm9mZnNldExlZnQpCiAgICAgICAgICAgICAgLmNzcygibWF4V2lkdGgiLCBlbC5vZmZzZXRXaWR0aCkKICAgICAgICAgICAgICAuY3NzKCJoZWlnaHQiLCBlbC5vZmZzZXRIZWlnaHQpOwogICAgICAgICAgfSwgNTAwKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBjbGVhckVycm9yOiBmdW5jdGlvbihlbCkgewogICAgICB2YXIgJGVsID0gJChlbCk7CiAgICAgIHZhciBkaXNwbGF5ID0gJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIik7CiAgICAgICRlbC5kYXRhKCJyZXN0b3JlLWRpc3BsYXktbW9kZSIsIG51bGwpOwoKICAgICAgaWYgKGRpc3BsYXkgPT09ICJpbmxpbmUiIHx8IGRpc3BsYXkgPT09ICJpbmxpbmUtYmxvY2siKSB7CiAgICAgICAgaWYgKGRpc3BsYXkpCiAgICAgICAgICAkZWwuY3NzKCJkaXNwbGF5IiwgZGlzcGxheSk7CiAgICAgICAgJChlbC5uZXh0U2libGluZykuZmlsdGVyKCIuaHRtbHdpZGdldHMtZXJyb3IiKS5yZW1vdmUoKTsKICAgICAgfSBlbHNlIGlmIChkaXNwbGF5ID09PSAiYmxvY2siKXsKICAgICAgICAkZWwuY3NzKCJ2aXNpYmlsaXR5IiwgImluaGVyaXQiKTsKICAgICAgICAkKGVsLm5leHRTaWJsaW5nKS5maWx0ZXIoIi5odG1sd2lkZ2V0cy1lcnJvciIpLnJlbW92ZSgpOwogICAgICB9CiAgICB9LAogICAgc2l6aW5nOiB7fQogIH07CgogIC8vIENhbGxlZCBieSB3aWRnZXQgYmluZGluZ3MgdG8gcmVnaXN0ZXIgYSBuZXcgdHlwZSBvZiB3aWRnZXQuIFRoZSBkZWZpbml0aW9uCiAgLy8gb2JqZWN0IGNhbiBjb250YWluIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKICAvLyAtIG5hbWUgKHJlcXVpcmVkKSAtIEEgc3RyaW5nIGluZGljYXRpbmcgdGhlIGJpbmRpbmcgbmFtZSwgd2hpY2ggd2lsbCBiZQogIC8vICAgdXNlZCBieSBkZWZhdWx0IGFzIHRoZSBDU1MgY2xhc3NuYW1lIHRvIGxvb2sgZm9yLgogIC8vIC0gaW5pdGlhbGl6ZSAob3B0aW9uYWwpIC0gQSBmdW5jdGlvbihlbCkgdGhhdCB3aWxsIGJlIGNhbGxlZCBvbmNlIHBlcgogIC8vICAgd2lkZ2V0IGVsZW1lbnQ7IGlmIGEgdmFsdWUgaXMgcmV0dXJuZWQsIGl0IHdpbGwgYmUgcGFzc2VkIGFzIHRoZSB0aGlyZAogIC8vICAgdmFsdWUgdG8gcmVuZGVyVmFsdWUuCiAgLy8gLSByZW5kZXJWYWx1ZSAocmVxdWlyZWQpIC0gQSBmdW5jdGlvbihlbCwgZGF0YSwgaW5pdFZhbHVlKSB0aGF0IHdpbGwgYmUKICAvLyAgIGNhbGxlZCB3aXRoIGRhdGEuIFN0YXRpYyBjb250ZXh0cyB3aWxsIGNhdXNlIHRoaXMgdG8gYmUgY2FsbGVkIG9uY2UgcGVyCiAgLy8gICBlbGVtZW50OyBTaGlueSBhcHBzIHdpbGwgY2F1c2UgdGhpcyB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgcGVyCiAgLy8gICBlbGVtZW50LCBhcyB0aGUgZGF0YSBjaGFuZ2VzLgogIHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXQgPSBmdW5jdGlvbihkZWZpbml0aW9uKSB7CiAgICBpZiAoIWRlZmluaXRpb24ubmFtZSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldpZGdldCBtdXN0IGhhdmUgYSBuYW1lIik7CiAgICB9CiAgICBpZiAoIWRlZmluaXRpb24udHlwZSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldpZGdldCBtdXN0IGhhdmUgYSB0eXBlIik7CiAgICB9CiAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IG91dHB1dCB3aWRnZXRzCiAgICBpZiAoZGVmaW5pdGlvbi50eXBlICE9PSAib3V0cHV0IikgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB3aWRnZXQgdHlwZSAnIiArIGRlZmluaXRpb24udHlwZSArICInIik7CiAgICB9CiAgICAvLyBUT0RPOiBWZXJpZnkgdGhhdCAubmFtZSBpcyBhIHZhbGlkIENTUyBjbGFzc25hbWUKCiAgICAvLyBTdXBwb3J0IG5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9ucy4gT2xkLXN0eWxlIGNsYXNzLWJvdW5kCiAgICAvLyBkZWZpbml0aW9ucyBoYXZlIG9uZSB3aWRnZXQgIm9iamVjdCIgcGVyIHdpZGdldCBwZXIgdHlwZS9jbGFzcyBvZgogICAgLy8gd2lkZ2V0OyB0aGUgcmVuZGVyVmFsdWUgYW5kIHJlc2l6ZSBtZXRob2RzIG9uIHN1Y2ggd2lkZ2V0IG9iamVjdHMKICAgIC8vIHRha2UgZWwgYW5kIGluc3RhbmNlIGFyZ3VtZW50cywgYmVjYXVzZSB0aGUgd2lkZ2V0IG9iamVjdCBjYW4ndAogICAgLy8gc3RvcmUgdGhlbS4gTmV3LXN0eWxlIGluc3RhbmNlLWJvdW5kIGRlZmluaXRpb25zIGhhdmUgb25lIHdpZGdldAogICAgLy8gb2JqZWN0IHBlciB3aWRnZXQgaW5zdGFuY2U7IHRoZSBkZWZpbml0aW9uIHRoYXQncyBwYXNzZWQgaW4gZG9lc24ndAogICAgLy8gcHJvdmlkZSByZW5kZXJWYWx1ZSBvciByZXNpemUgbWV0aG9kcyBhdCBhbGwsIGp1c3QgdGhlIHNpbmdsZSBtZXRob2QKICAgIC8vICAgZmFjdG9yeShlbCwgd2lkdGgsIGhlaWdodCkKICAgIC8vIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IHRoYXQgaGFzIHJlbmRlclZhbHVlKHgpIGFuZCByZXNpemUodywgaCkuCiAgICAvLyBUaGlzIGVuYWJsZXMgYSBmYXIgbW9yZSBuYXR1cmFsIHByb2dyYW1taW5nIHN0eWxlIGZvciB0aGUgd2lkZ2V0CiAgICAvLyBhdXRob3IsIHdobyBjYW4gc3RvcmUgcGVyLWluc3RhbmNlIHN0YXRlIHVzaW5nIGVpdGhlciBPTy1zdHlsZQogICAgLy8gaW5zdGFuY2UgZmllbGRzIG9yIGZ1bmN0aW9uYWwtc3R5bGUgY2xvc3VyZSB2YXJpYWJsZXMgKEkgZ3Vlc3MgdGhpcwogICAgLy8gaXMgaW4gY29udHJhc3QgdG8gd2hhdCBjYW4gb25seSBiZSBjYWxsZWQgQy1zdHlsZSBwc2V1ZG8tT08gd2hpY2ggaXMKICAgIC8vIHdoYXQgd2UgcmVxdWlyZWQgYmVmb3JlKS4KICAgIGlmIChkZWZpbml0aW9uLmZhY3RvcnkpIHsKICAgICAgZGVmaW5pdGlvbiA9IGNyZWF0ZUxlZ2FjeURlZmluaXRpb25BZGFwdGVyKGRlZmluaXRpb24pOwogICAgfQoKICAgIGlmICghZGVmaW5pdGlvbi5yZW5kZXJWYWx1ZSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldpZGdldCBtdXN0IGhhdmUgYSByZW5kZXJWYWx1ZSBmdW5jdGlvbiIpOwogICAgfQoKICAgIC8vIEZvciBzdGF0aWMgcmVuZGVyaW5nIChub24tU2hpbnkpLCB1c2UgYSBzaW1wbGUgd2lkZ2V0IHJlZ2lzdHJhdGlvbgogICAgLy8gc2NoZW1lLiBXZSBhbHNvIHVzZSB0aGlzIHNjaGVtZSBmb3IgU2hpbnkgYXBwcy9kb2N1bWVudHMgdGhhdCBhbHNvCiAgICAvLyBjb250YWluIHN0YXRpYyB3aWRnZXRzLgogICAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMgPSB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyB8fCBbXTsKICAgIC8vIE1lcmdlIGRlZmF1bHRzIGludG8gdGhlIGRlZmluaXRpb247IGRvbid0IG11dGF0ZSB0aGUgb3JpZ2luYWwgZGVmaW5pdGlvbi4KICAgIHZhciBzdGF0aWNCaW5kaW5nID0gZXh0ZW5kKHt9LCBkZWZhdWx0cywgZGVmaW5pdGlvbik7CiAgICBvdmVycmlkZU1ldGhvZChzdGF0aWNCaW5kaW5nLCAiZmluZCIsIGZ1bmN0aW9uKHN1cGVyZnVuYykgewogICAgICByZXR1cm4gZnVuY3Rpb24oc2NvcGUpIHsKICAgICAgICB2YXIgcmVzdWx0cyA9IHN1cGVyZnVuYyhzY29wZSk7CiAgICAgICAgLy8gRmlsdGVyIG91dCBTaGlueSBvdXRwdXRzLCB3ZSBvbmx5IHdhbnQgdGhlIHN0YXRpYyBraW5kCiAgICAgICAgcmV0dXJuIGZpbHRlckJ5Q2xhc3MocmVzdWx0cywgImh0bWwtd2lkZ2V0LW91dHB1dCIsIGZhbHNlKTsKICAgICAgfTsKICAgIH0pOwogICAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMucHVzaChzdGF0aWNCaW5kaW5nKTsKCiAgICBpZiAoc2hpbnlNb2RlKSB7CiAgICAgIC8vIFNoaW55IGlzIHJ1bm5pbmcuIFJlZ2lzdGVyIHRoZSBkZWZpbml0aW9uIHdpdGggYW4gb3V0cHV0IGJpbmRpbmcuCiAgICAgIC8vIFRoZSBkZWZpbml0aW9uIGl0c2VsZiB3aWxsIG5vdCBiZSB0aGUgb3V0cHV0IGJpbmRpbmcsIGluc3RlYWQKICAgICAgLy8gd2Ugd2lsbCBtYWtlIGFuIG91dHB1dCBiaW5kaW5nIG9iamVjdCB0aGF0IGRlbGVnYXRlcyB0byB0aGUKICAgICAgLy8gZGVmaW5pdGlvbi4gVGhpcyBpcyBiZWNhdXNlIHdlIGZvb2xpc2hseSB1c2VkIHRoZSBzYW1lIG1ldGhvZAogICAgICAvLyBuYW1lIChyZW5kZXJWYWx1ZSkgZm9yIGh0bWx3aWRnZXRzIGRlZmluaXRpb24gYW5kIFNoaW55IGJpbmRpbmdzCiAgICAgIC8vIGJ1dCB0aGV5IGFjdHVhbGx5IGhhdmUgcXVpdGUgZGlmZmVyZW50IHNlbWFudGljcyAodGhlIFNoaW55CiAgICAgIC8vIGJpbmRpbmdzIHJlY2VpdmUgZGF0YSB0aGF0IGluY2x1ZGVzIGxvdHMgb2YgbWV0YWRhdGEgdGhhdCBpdAogICAgICAvLyBzdHJpcHMgb2ZmIGJlZm9yZSBjYWxsaW5nIGh0bWx3aWRnZXRzIHJlbmRlclZhbHVlKS4gV2UgY2FuJ3QKICAgICAgLy8ganVzdCBpZ25vcmUgdGhlIGRpZmZlcmVuY2UgYmVjYXVzZSBpbiBzb21lIHdpZGdldHMgaXQncyBoZWxwZnVsCiAgICAgIC8vIHRvIGNhbGwgdGhpcy5yZW5kZXJWYWx1ZSgpIGZyb20gaW5zaWRlIG9mIHJlc2l6ZSgpLCBhbmQgaWYKICAgICAgLy8gd2UncmUgbm90IGRlbGVnYXRpbmcsIHRoZW4gdGhhdCBjYWxsIHdpbGwgZ28gdG8gdGhlIFNoaW55CiAgICAgIC8vIHZlcnNpb24gaW5zdGVhZCBvZiB0aGUgaHRtbHdpZGdldHMgdmVyc2lvbi4KCiAgICAgIC8vIE1lcmdlIGRlZmF1bHRzIHdpdGggZGVmaW5pdGlvbiwgd2l0aG91dCBtdXRhdGluZyBlaXRoZXIuCiAgICAgIHZhciBiaW5kaW5nRGVmID0gZXh0ZW5kKHt9LCBkZWZhdWx0cywgZGVmaW5pdGlvbik7CgogICAgICAvLyBUaGlzIG9iamVjdCB3aWxsIGJlIG91ciBhY3R1YWwgU2hpbnkgYmluZGluZy4KICAgICAgdmFyIHNoaW55QmluZGluZyA9IG5ldyBTaGlueS5PdXRwdXRCaW5kaW5nKCk7CgogICAgICAvLyBXaXRoIGEgZmV3IGV4Y2VwdGlvbnMsIHdlJ2xsIHdhbnQgdG8gc2ltcGx5IHVzZSB0aGUgYmluZGluZ0RlZidzCiAgICAgIC8vIHZlcnNpb24gb2YgbWV0aG9kcyBpZiB0aGV5IGFyZSBhdmFpbGFibGUsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8KICAgICAgLy8gU2hpbnkncyBkZWZhdWx0cy4gTk9URTogSWYgU2hpbnkncyBvdXRwdXQgYmluZGluZ3MgZ2FpbiBhZGRpdGlvbmFsCiAgICAgIC8vIG1ldGhvZHMgaW4gdGhlIGZ1dHVyZSwgYW5kIHdlIHdhbnQgdGhlbSB0byBiZSBvdmVycmlkZWFibGUgYnkKICAgICAgLy8gSFRNTFdpZGdldCBiaW5kaW5nIGRlZmluaXRpb25zLCB0aGVuIHdlJ2xsIG5lZWQgdG8gYWRkIHRoZW0gdG8gdGhpcwogICAgICAvLyBsaXN0LgogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJnZXRJZCIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJvblZhbHVlQ2hhbmdlIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgIm9uVmFsdWVFcnJvciIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJyZW5kZXJFcnJvciIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJjbGVhckVycm9yIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgInNob3dQcm9ncmVzcyIpOwoKICAgICAgLy8gVGhlIGZpbmQsIHJlbmRlclZhbHVlLCBhbmQgcmVzaXplIGFyZSBoYW5kbGVkIGRpZmZlcmVudGx5LCBiZWNhdXNlIHdlCiAgICAgIC8vIHdhbnQgdG8gYWN0dWFsbHkgZGVjb3JhdGUgdGhlIGJlaGF2aW9yIG9mIHRoZSBiaW5kaW5nRGVmIG1ldGhvZHMuCgogICAgICBzaGlueUJpbmRpbmcuZmluZCA9IGZ1bmN0aW9uKHNjb3BlKSB7CiAgICAgICAgdmFyIHJlc3VsdHMgPSBiaW5kaW5nRGVmLmZpbmQoc2NvcGUpOwoKICAgICAgICAvLyBPbmx5IHJldHVybiBlbGVtZW50cyB0aGF0IGFyZSBTaGlueSBvdXRwdXRzLCBub3Qgc3RhdGljIG9uZXMKICAgICAgICB2YXIgZHluYW1pY1Jlc3VsdHMgPSByZXN1bHRzLmZpbHRlcigiLmh0bWwtd2lkZ2V0LW91dHB1dCIpOwoKICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgd2hhdGV2ZXIgY2F1c2VkIFNoaW55IHRvIHRoaW5rIHRoZXJlIG1pZ2h0IGJlCiAgICAgICAgLy8gbmV3IGR5bmFtaWMgb3V0cHV0cywgYWxzbyBjYXVzZWQgdGhlcmUgdG8gYmUgbmV3IHN0YXRpYyBvdXRwdXRzLgogICAgICAgIC8vIFNpbmNlIHRoZXJlIG1pZ2h0IGJlIGxvdHMgb2YgZGlmZmVyZW50IGh0bWx3aWRnZXRzIGJpbmRpbmdzLCB3ZQogICAgICAgIC8vIHNjaGVkdWxlIGV4ZWN1dGlvbiBmb3IgbGF0ZXItLW5vIG5lZWQgdG8gc3RhdGljUmVuZGVyIG11bHRpcGxlCiAgICAgICAgLy8gdGltZXMuCiAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSBkeW5hbWljUmVzdWx0cy5sZW5ndGgpCiAgICAgICAgICBzY2hlZHVsZVN0YXRpY1JlbmRlcigpOwoKICAgICAgICByZXR1cm4gZHluYW1pY1Jlc3VsdHM7CiAgICAgIH07CgogICAgICAvLyBXcmFwIHJlbmRlclZhbHVlIHRvIGhhbmRsZSBpbml0aWFsaXphdGlvbiwgd2hpY2ggdW5mb3J0dW5hdGVseSBpc24ndAogICAgICAvLyBzdXBwb3J0ZWQgbmF0aXZlbHkgYnkgU2hpbnkgYXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLgoKICAgICAgc2hpbnlCaW5kaW5nLnJlbmRlclZhbHVlID0gZnVuY3Rpb24oZWwsIGRhdGEpIHsKICAgICAgICBTaGlueS5yZW5kZXJEZXBlbmRlbmNpZXMoZGF0YS5kZXBzKTsKICAgICAgICAvLyBSZXNvbHZlIHN0cmluZ3MgbWFya2VkIGFzIGphdmFzY3JpcHQgbGl0ZXJhbHMgdG8gb2JqZWN0cwogICAgICAgIGlmICghKGRhdGEuZXZhbHMgaW5zdGFuY2VvZiBBcnJheSkpIGRhdGEuZXZhbHMgPSBbZGF0YS5ldmFsc107CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGRhdGEuZXZhbHMgJiYgaSA8IGRhdGEuZXZhbHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlcihkYXRhLngsIGRhdGEuZXZhbHNbaV0pOwogICAgICAgIH0KICAgICAgICBpZiAoIWJpbmRpbmdEZWYucmVuZGVyT25OdWxsVmFsdWUpIHsKICAgICAgICAgIGlmIChkYXRhLnggPT09IG51bGwpIHsKICAgICAgICAgICAgZWwuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlbC5zdHlsZS52aXNpYmlsaXR5ID0gImluaGVyaXQiOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoIWVsZW1lbnREYXRhKGVsLCAiaW5pdGlhbGl6ZWQiKSkgewogICAgICAgICAgaW5pdFNpemluZyhlbCk7CgogICAgICAgICAgZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIsIHRydWUpOwogICAgICAgICAgaWYgKGJpbmRpbmdEZWYuaW5pdGlhbGl6ZSkgewogICAgICAgICAgICB2YXIgcmVzdWx0ID0gYmluZGluZ0RlZi5pbml0aWFsaXplKGVsLCBlbC5vZmZzZXRXaWR0aCwKICAgICAgICAgICAgICBlbC5vZmZzZXRIZWlnaHQpOwogICAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiwgcmVzdWx0KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgYmluZGluZ0RlZi5yZW5kZXJWYWx1ZShlbCwgZGF0YS54LCBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IikpOwogICAgICAgIGV2YWxBbmRSdW4oZGF0YS5qc0hvb2tzLnJlbmRlciwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpLCBbZWwsIGRhdGEueF0pOwogICAgICB9OwoKICAgICAgLy8gT25seSBvdmVycmlkZSByZXNpemUgaWYgYmluZGluZ0RlZiBpbXBsZW1lbnRzIGl0CiAgICAgIGlmIChiaW5kaW5nRGVmLnJlc2l6ZSkgewogICAgICAgIHNoaW55QmluZGluZy5yZXNpemUgPSBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCkgewogICAgICAgICAgLy8gU2hpbnkgY2FuIGNhbGwgcmVzaXplIGJlZm9yZSBpbml0aWFsaXplL3JlbmRlclZhbHVlIGhhdmUgYmVlbgogICAgICAgICAgLy8gY2FsbGVkLCB3aGljaCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yIHdpZGdldHMuCiAgICAgICAgICBpZiAoZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIpKSB7CiAgICAgICAgICAgIGJpbmRpbmdEZWYucmVzaXplKGVsLCB3aWR0aCwgaGVpZ2h0LCBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IikpOwogICAgICAgICAgfQogICAgICAgIH07CiAgICAgIH0KCiAgICAgIFNoaW55Lm91dHB1dEJpbmRpbmdzLnJlZ2lzdGVyKHNoaW55QmluZGluZywgYmluZGluZ0RlZi5uYW1lKTsKICAgIH0KICB9OwoKICB2YXIgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gbnVsbDsKICBmdW5jdGlvbiBzY2hlZHVsZVN0YXRpY1JlbmRlcigpIHsKICAgIGlmICghc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkKSB7CiAgICAgIHNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gbnVsbDsKICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKCk7CiAgICAgIH0sIDEpOwogICAgfQogIH0KCiAgLy8gUmVuZGVyIHN0YXRpYyB3aWRnZXRzIGFmdGVyIHRoZSBkb2N1bWVudCBmaW5pc2hlcyBsb2FkaW5nCiAgLy8gU3RhdGljYWxseSByZW5kZXIgYWxsIGVsZW1lbnRzIHRoYXQgYXJlIG9mIHRoaXMgd2lkZ2V0J3MgY2xhc3MKICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgYmluZGluZ3MgPSB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyB8fCBbXTsKICAgIGZvckVhY2goYmluZGluZ3MsIGZ1bmN0aW9uKGJpbmRpbmcpIHsKICAgICAgdmFyIG1hdGNoZXMgPSBiaW5kaW5nLmZpbmQoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTsKICAgICAgZm9yRWFjaChtYXRjaGVzLCBmdW5jdGlvbihlbCkgewogICAgICAgIHZhciBzaXplT2JqID0gaW5pdFNpemluZyhlbCwgYmluZGluZyk7CgogICAgICAgIGlmIChoYXNDbGFzcyhlbCwgImh0bWwtd2lkZ2V0LXN0YXRpYy1ib3VuZCIpKQogICAgICAgICAgcmV0dXJuOwogICAgICAgIGVsLmNsYXNzTmFtZSA9IGVsLmNsYXNzTmFtZSArICIgaHRtbC13aWRnZXQtc3RhdGljLWJvdW5kIjsKCiAgICAgICAgdmFyIGluaXRSZXN1bHQ7CiAgICAgICAgaWYgKGJpbmRpbmcuaW5pdGlhbGl6ZSkgewogICAgICAgICAgaW5pdFJlc3VsdCA9IGJpbmRpbmcuaW5pdGlhbGl6ZShlbCwKICAgICAgICAgICAgc2l6ZU9iaiA/IHNpemVPYmouZ2V0V2lkdGgoKSA6IGVsLm9mZnNldFdpZHRoLAogICAgICAgICAgICBzaXplT2JqID8gc2l6ZU9iai5nZXRIZWlnaHQoKSA6IGVsLm9mZnNldEhlaWdodAogICAgICAgICAgKTsKICAgICAgICAgIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiLCBpbml0UmVzdWx0KTsKICAgICAgICB9CgogICAgICAgIGlmIChiaW5kaW5nLnJlc2l6ZSkgewogICAgICAgICAgdmFyIGxhc3RTaXplID0gewogICAgICAgICAgICB3OiBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgIGg6IHNpemVPYmogPyBzaXplT2JqLmdldEhlaWdodCgpIDogZWwub2Zmc2V0SGVpZ2h0CiAgICAgICAgICB9OwogICAgICAgICAgdmFyIHJlc2l6ZUhhbmRsZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBzaXplID0gewogICAgICAgICAgICAgIHc6IHNpemVPYmogPyBzaXplT2JqLmdldFdpZHRoKCkgOiBlbC5vZmZzZXRXaWR0aCwKICAgICAgICAgICAgICBoOiBzaXplT2JqID8gc2l6ZU9iai5nZXRIZWlnaHQoKSA6IGVsLm9mZnNldEhlaWdodAogICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAoc2l6ZS53ID09PSAwICYmIHNpemUuaCA9PT0gMCkKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIGlmIChzaXplLncgPT09IGxhc3RTaXplLncgJiYgc2l6ZS5oID09PSBsYXN0U2l6ZS5oKQogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgbGFzdFNpemUgPSBzaXplOwogICAgICAgICAgICBiaW5kaW5nLnJlc2l6ZShlbCwgc2l6ZS53LCBzaXplLmgsIGluaXRSZXN1bHQpOwogICAgICAgICAgfTsKCiAgICAgICAgICBvbih3aW5kb3csICJyZXNpemUiLCByZXNpemVIYW5kbGVyKTsKCiAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgY2FzZXMgd2hlcmUgd2UncmUgcnVubmluZyBpbiBhIFNoaW55CiAgICAgICAgICAvLyBhcHAsIGJ1dCB0aGUgd2lkZ2V0IGl0c2VsZiBpcyBub3QgYSBTaGlueSBvdXRwdXQsIGJ1dAogICAgICAgICAgLy8gcmF0aGVyIGEgc2ltcGxlIHN0YXRpYyB3aWRnZXQuIE9uZSBleGFtcGxlIG9mIHRoaXMgaXMKICAgICAgICAgIC8vIGFuIHJtYXJrZG93biBkb2N1bWVudCB0aGF0IGhhcyBydW50aW1lOnNoaW55IGFuZCB3aWRnZXQKICAgICAgICAgIC8vIHRoYXQgaXNuJ3QgaW4gYSByZW5kZXIgZnVuY3Rpb24uIFNoaW55IG9ubHkga25vd3MgdG8KICAgICAgICAgIC8vIGNhbGwgcmVzaXplIGhhbmRsZXJzIGZvciBTaGlueSBvdXRwdXRzLCBub3QgZm9yIHN0YXRpYwogICAgICAgICAgLy8gd2lkZ2V0cywgc28gd2UgZG8gaXQgb3Vyc2VsdmVzLgogICAgICAgICAgaWYgKHdpbmRvdy5qUXVlcnkpIHsKICAgICAgICAgICAgd2luZG93LmpRdWVyeShkb2N1bWVudCkub24oCiAgICAgICAgICAgICAgInNob3duLmh0bWx3aWRnZXRzIHNob3duLmJzLnRhYi5odG1sd2lkZ2V0cyBzaG93bi5icy5jb2xsYXBzZS5odG1sd2lkZ2V0cyIsCiAgICAgICAgICAgICAgcmVzaXplSGFuZGxlcgogICAgICAgICAgICApOwogICAgICAgICAgICB3aW5kb3cualF1ZXJ5KGRvY3VtZW50KS5vbigKICAgICAgICAgICAgICAiaGlkZGVuLmh0bWx3aWRnZXRzIGhpZGRlbi5icy50YWIuaHRtbHdpZGdldHMgaGlkZGVuLmJzLmNvbGxhcHNlLmh0bWx3aWRnZXRzIiwKICAgICAgICAgICAgICByZXNpemVIYW5kbGVyCiAgICAgICAgICAgICk7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBzcGVjaWZpYyBjYXNlIG9mIGlvc2xpZGVzLCB3aGljaAogICAgICAgICAgLy8gZmxpcHMgc2xpZGVzIGJldHdlZW4gZGlzcGxheTpub25lIGFuZCBkaXNwbGF5OmJsb2NrLgogICAgICAgICAgLy8gSWRlYWxseSB3ZSB3b3VsZCBub3QgaGF2ZSB0byBoYXZlIGlvc2xpZGUtc3BlY2lmaWMgY29kZQogICAgICAgICAgLy8gaGVyZSwgYnV0IHJhdGhlciBoYXZlIGlvc2xpZGVzIHJhaXNlIGEgZ2VuZXJpYyBldmVudCwKICAgICAgICAgIC8vIGJ1dCB0aGUgcm1hcmtkb3duIHBhY2thZ2UganVzdCB3ZW50IHRvIENSQU4gc28gdGhlCiAgICAgICAgICAvLyB3aW5kb3cgdG8gZ2V0dGluZyB0aGF0IGZpeGVkIG1heSBiZSBsb25nLgogICAgICAgICAgaWYgKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgICAgICAgIC8vIEl0J3MgT0sgdG8gbGltaXQgdGhpcyB0byB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcgogICAgICAgICAgICAvLyBicm93c2VycyBiZWNhdXNlIGlvc2xpZGVzIGl0c2VsZiBvbmx5IHN1cHBvcnRzCiAgICAgICAgICAgIC8vIHN1Y2ggYnJvd3NlcnMuCiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAic2xpZGVlbnRlciIsIHJlc2l6ZUhhbmRsZXIpOwogICAgICAgICAgICBvbihkb2N1bWVudCwgInNsaWRlbGVhdmUiLCByZXNpemVIYW5kbGVyKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciBzY3JpcHREYXRhID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vanNvbiddIik7CiAgICAgICAgaWYgKHNjcmlwdERhdGEpIHsKICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShzY3JpcHREYXRhLnRleHRDb250ZW50IHx8IHNjcmlwdERhdGEudGV4dCk7CiAgICAgICAgICAvLyBSZXNvbHZlIHN0cmluZ3MgbWFya2VkIGFzIGphdmFzY3JpcHQgbGl0ZXJhbHMgdG8gb2JqZWN0cwogICAgICAgICAgaWYgKCEoZGF0YS5ldmFscyBpbnN0YW5jZW9mIEFycmF5KSkgZGF0YS5ldmFscyA9IFtkYXRhLmV2YWxzXTsKICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBkYXRhLmV2YWxzICYmIGsgPCBkYXRhLmV2YWxzLmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlcihkYXRhLngsIGRhdGEuZXZhbHNba10pOwogICAgICAgICAgfQogICAgICAgICAgYmluZGluZy5yZW5kZXJWYWx1ZShlbCwgZGF0YS54LCBpbml0UmVzdWx0KTsKICAgICAgICAgIGV2YWxBbmRSdW4oZGF0YS5qc0hvb2tzLnJlbmRlciwgaW5pdFJlc3VsdCwgW2VsLCBkYXRhLnhdKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSk7CgogICAgaW52b2tlUG9zdFJlbmRlckhhbmRsZXJzKCk7CiAgfQoKCiAgZnVuY3Rpb24gaGFzX2pRdWVyeTMoKSB7CiAgICBpZiAoIXdpbmRvdy5qUXVlcnkpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgdmFyICR2ZXJzaW9uID0gd2luZG93LmpRdWVyeS5mbi5qcXVlcnk7CiAgICB2YXIgJG1ham9yX3ZlcnNpb24gPSBwYXJzZUludCgkdmVyc2lvbi5zcGxpdCgiLiIpWzBdKTsKICAgIHJldHVybiAkbWFqb3JfdmVyc2lvbiA+PSAzOwogIH0KCiAgLyoKICAvIFNoaW55IDEuNCBidW1wZWQgalF1ZXJ5IGZyb20gMS54IHRvIDMueCB3aGljaCBtZWFucyBqUXVlcnkncwogIC8gb24tcmVhZHkgaGFuZGxlciAoaS5lLiwgJChmbikpIGlzIG5vdyBhc3luY3Jvbm91cyAoaS5lLiwgaXQgbm93CiAgLyByZWFsbHkgbWVhbnMgJChzZXRUaW1lb3V0KGZuKSkuCiAgLyBodHRwczovL2pxdWVyeS5jb20vdXBncmFkZS1ndWlkZS8zLjAvI2JyZWFraW5nLWNoYW5nZS1kb2N1bWVudC1yZWFkeS1oYW5kbGVycy1hcmUtbm93LWFzeW5jaHJvbm91cwogIC8KICAvIFNpbmNlIFNoaW55IHVzZXMgJCgpIHRvIHNjaGVkdWxlIGluaXRTaGlueSwgc2hpbnk+PTEuNCBjYWxscyBpbml0U2hpbnkKICAvIG9uZSB0aWNrIGxhdGVyIHRoYW4gaXQgZGlkIGJlZm9yZSwgd2hpY2ggbWVhbnMgc3RhdGljUmVuZGVyKCkgaXMKICAvIGNhbGxlZCByZW5kZXJWYWx1ZSgpIGVhcmxpZXIgdGhhbiAoYWR2YW5jZWQpIHdpZGdldCBhdXRob3JzIG1pZ2h0IGJlIGV4cGVjdGluZy4KICAvIGh0dHBzOi8vZ2l0aHViLmNvbS9yc3R1ZGlvL3NoaW55L2lzc3Vlcy8yNjMwCiAgLwogIC8gRm9yIGEgY29uY3JldGUgZXhhbXBsZSwgbGVhZmxldCBoYXMgc29tZSBtZXRob2RzIChlLmcuLCB1cGRhdGVCb3VuZHMpCiAgLyB3aGljaCByZWZlcmVuY2UgU2hpbnkgbWV0aG9kcyByZWdpc3RlcmVkIGluIGluaXRTaGlueSAoZS5nLiwgc2V0SW5wdXRWYWx1ZSkuCiAgLyBTaW5jZSBsZWFmbGV0IGlzIHByaXZ5IHRvIHRoaXMgbGlmZS1jeWNsZSwgaXQga25vd3MgdG8gdXNlIHNldFRpbWVvdXQoKSB0bwogIC8gZGVsYXkgZXhlY3V0aW9uIG9mIHRob3NlIG1ldGhvZHMgKHVudGlsIFNoaW55IG1ldGhvZHMgYXJlIHJlYWR5KQogIC8gaHR0cHM6Ly9naXRodWIuY29tL3JzdHVkaW8vbGVhZmxldC9ibG9iLzE4ZWM5ODEvamF2YXNjcmlwdC9zcmMvaW5kZXguanMjTDI2Ni1MMjY4CiAgLwogIC8gSWRlYWxseSB3aWRnZXQgYXV0aG9ycyB3b3VsZG4ndCBuZWVkIHRvIHVzZSB0aGlzIHNldFRpbWVvdXQoKSBoYWNrIHRoYXQKICAvIGxlYWZsZXQgdXNlcyB0byBjYWxsIFNoaW55IG1ldGhvZHMgb24gYSBzdGF0aWNSZW5kZXIoKS4gSW4gdGhlIGxvbmcgcnVuLAogIC8gdGhlIGxvZ2ljIGluaXRTaGlueSBzaG91bGQgYmUgYnJva2VuIHVwIHNvIHRoYXQgbWV0aG9kIHJlZ2lzdHJhdGlvbiBoYXBwZW5zCiAgLyByaWdodCBhd2F5LCBidXQgYmluZGluZyBoYXBwZW5zIGxhdGVyLgogICovCiAgZnVuY3Rpb24gbWF5YmVTdGF0aWNSZW5kZXJMYXRlcigpIHsKICAgIGlmIChzaGlueU1vZGUgJiYgaGFzX2pRdWVyeTMoKSkgewogICAgICB3aW5kb3cualF1ZXJ5KHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIpOwogICAgfSBlbHNlIHsKICAgICAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpOwogICAgfQogIH0KCiAgaWYgKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbigpIHsKICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGFyZ3VtZW50cy5jYWxsZWUsIGZhbHNlKTsKICAgICAgbWF5YmVTdGF0aWNSZW5kZXJMYXRlcigpOwogICAgfSwgZmFsc2UpOwogIH0gZWxzZSBpZiAoZG9jdW1lbnQuYXR0YWNoRXZlbnQpIHsKICAgIGRvY3VtZW50LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCBmdW5jdGlvbigpIHsKICAgICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICJjb21wbGV0ZSIpIHsKICAgICAgICBkb2N1bWVudC5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwgYXJndW1lbnRzLmNhbGxlZSk7CiAgICAgICAgbWF5YmVTdGF0aWNSZW5kZXJMYXRlcigpOwogICAgICB9CiAgICB9KTsKICB9CgoKICB3aW5kb3cuSFRNTFdpZGdldHMuZ2V0QXR0YWNobWVudFVybCA9IGZ1bmN0aW9uKGRlcG5hbWUsIGtleSkgewogICAgLy8gSWYgbm8ga2V5LCBkZWZhdWx0IHRvIHRoZSBmaXJzdCBpdGVtCiAgICBpZiAodHlwZW9mKGtleSkgPT09ICJ1bmRlZmluZWQiKQogICAgICBrZXkgPSAxOwoKICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGVwbmFtZSArICItIiArIGtleSArICItYXR0YWNobWVudCIpOwogICAgaWYgKCFsaW5rKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiQXR0YWNobWVudCAiICsgZGVwbmFtZSArICIvIiArIGtleSArICIgbm90IGZvdW5kIGluIGRvY3VtZW50Iik7CiAgICB9CiAgICByZXR1cm4gbGluay5nZXRBdHRyaWJ1dGUoImhyZWYiKTsKICB9OwoKICB3aW5kb3cuSFRNTFdpZGdldHMuZGF0YWZyYW1lVG9EMyA9IGZ1bmN0aW9uKGRmKSB7CiAgICB2YXIgbmFtZXMgPSBbXTsKICAgIHZhciBsZW5ndGg7CiAgICBmb3IgKHZhciBuYW1lIGluIGRmKSB7CiAgICAgICAgaWYgKGRmLmhhc093blByb3BlcnR5KG5hbWUpKQogICAgICAgICAgICBuYW1lcy5wdXNoKG5hbWUpOwogICAgICAgIGlmICh0eXBlb2YoZGZbbmFtZV0pICE9PSAib2JqZWN0IiB8fCB0eXBlb2YoZGZbbmFtZV0ubGVuZ3RoKSA9PT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIik7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YobGVuZ3RoKSAhPT0gInVuZGVmaW5lZCIgJiYgbGVuZ3RoICE9PSBkZltuYW1lXS5sZW5ndGgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIG9mIHRoZSBzYW1lIGxlbmd0aCIpOwogICAgICAgIH0KICAgICAgICBsZW5ndGggPSBkZltuYW1lXS5sZW5ndGg7CiAgICB9CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdmFyIGl0ZW07CiAgICBmb3IgKHZhciByb3cgPSAwOyByb3cgPCBsZW5ndGg7IHJvdysrKSB7CiAgICAgICAgaXRlbSA9IHt9OwogICAgICAgIGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IG5hbWVzLmxlbmd0aDsgY29sKyspIHsKICAgICAgICAgICAgaXRlbVtuYW1lc1tjb2xdXSA9IGRmW25hbWVzW2NvbF1dW3Jvd107CiAgICAgICAgfQogICAgICAgIHJlc3VsdHMucHVzaChpdGVtKTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH07CgogIHdpbmRvdy5IVE1MV2lkZ2V0cy50cmFuc3Bvc2VBcnJheTJEID0gZnVuY3Rpb24oYXJyYXkpIHsKICAgICAgaWYgKGFycmF5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIGFycmF5OwogICAgICB2YXIgbmV3QXJyYXkgPSBhcnJheVswXS5tYXAoZnVuY3Rpb24oY29sLCBpKSB7CiAgICAgICAgICByZXR1cm4gYXJyYXkubWFwKGZ1bmN0aW9uKHJvdykgewogICAgICAgICAgICAgIHJldHVybiByb3dbaV0KICAgICAgICAgIH0pCiAgICAgIH0pOwogICAgICByZXR1cm4gbmV3QXJyYXk7CiAgfTsKICAvLyBTcGxpdCB2YWx1ZSBhdCBzcGxpdENoYXIsIGJ1dCBhbGxvdyBzcGxpdENoYXIgdG8gYmUgZXNjYXBlZAogIC8vIHVzaW5nIGVzY2FwZUNoYXIuIEFueSBvdGhlciBjaGFyYWN0ZXJzIGVzY2FwZWQgYnkgZXNjYXBlQ2hhcgogIC8vIHdpbGwgYmUgaW5jbHVkZWQgYXMgdXN1YWwgKGluY2x1ZGluZyBlc2NhcGVDaGFyIGl0c2VsZikuCiAgZnVuY3Rpb24gc3BsaXRXaXRoRXNjYXBlKHZhbHVlLCBzcGxpdENoYXIsIGVzY2FwZUNoYXIpIHsKICAgIHZhciByZXN1bHRzID0gW107CiAgICB2YXIgZXNjYXBlTW9kZSA9IGZhbHNlOwogICAgdmFyIGN1cnJlbnRSZXN1bHQgPSAiIjsKICAgIGZvciAodmFyIHBvcyA9IDA7IHBvcyA8IHZhbHVlLmxlbmd0aDsgcG9zKyspIHsKICAgICAgaWYgKCFlc2NhcGVNb2RlKSB7CiAgICAgICAgaWYgKHZhbHVlW3Bvc10gPT09IHNwbGl0Q2hhcikgewogICAgICAgICAgcmVzdWx0cy5wdXNoKGN1cnJlbnRSZXN1bHQpOwogICAgICAgICAgY3VycmVudFJlc3VsdCA9ICIiOwogICAgICAgIH0gZWxzZSBpZiAodmFsdWVbcG9zXSA9PT0gZXNjYXBlQ2hhcikgewogICAgICAgICAgZXNjYXBlTW9kZSA9IHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGN1cnJlbnRSZXN1bHQgKz0gdmFsdWVbcG9zXTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY3VycmVudFJlc3VsdCArPSB2YWx1ZVtwb3NdOwogICAgICAgIGVzY2FwZU1vZGUgPSBmYWxzZTsKICAgICAgfQogICAgfQogICAgaWYgKGN1cnJlbnRSZXN1bHQgIT09ICIiKSB7CiAgICAgIHJlc3VsdHMucHVzaChjdXJyZW50UmVzdWx0KTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH0KICAvLyBGdW5jdGlvbiBhdXRob3JlZCBieSBZaWh1aS9KSiBBbGxhaXJlCiAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyID0gZnVuY3Rpb24obywgbWVtYmVyKSB7CiAgICB2YXIgcGFydHMgPSBzcGxpdFdpdGhFc2NhcGUobWVtYmVyLCAnLicsICdcXCcpOwogICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXTsKICAgICAgLy8gcGFydCBtYXkgYmUgYSBjaGFyYWN0ZXIgb3IgJ251bWVyaWMnIG1lbWJlciBuYW1lCiAgICAgIGlmIChvICE9PSBudWxsICYmIHR5cGVvZiBvID09PSAib2JqZWN0IiAmJiBwYXJ0IGluIG8pIHsKICAgICAgICBpZiAoaSA9PSAobCAtIDEpKSB7IC8vIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIHRoZW4gZXZhbHVsYXRlCiAgICAgICAgICBpZiAodHlwZW9mIG9bcGFydF0gPT09ICJzdHJpbmciKQogICAgICAgICAgICBvW3BhcnRdID0gdHJ5RXZhbChvW3BhcnRdKTsKICAgICAgICB9IGVsc2UgeyAvLyBvdGhlcndpc2UgY29udGludWUgdG8gbmV4dCBlbWJlZGRlZCBvYmplY3QKICAgICAgICAgIG8gPSBvW3BhcnRdOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07CgogIC8vIFJldHJpZXZlIHRoZSBIVE1MV2lkZ2V0IGluc3RhbmNlIChpLmUuIHRoZSByZXR1cm4gdmFsdWUgb2YgYW4KICAvLyBIVE1MV2lkZ2V0IGJpbmRpbmcncyBpbml0aWFsaXplKCkgb3IgZmFjdG9yeSgpIGZ1bmN0aW9uKQogIC8vIGFzc29jaWF0ZWQgd2l0aCBhbiBlbGVtZW50LCBvciBudWxsIGlmIG5vbmUuCiAgd2luZG93LkhUTUxXaWRnZXRzLmdldEluc3RhbmNlID0gZnVuY3Rpb24oZWwpIHsKICAgIHJldHVybiBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0Iik7CiAgfTsKCiAgLy8gRmluZHMgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIHNjb3BlIHRoYXQgbWF0Y2hlcyB0aGUgc2VsZWN0b3IsCiAgLy8gYW5kIHJldHVybnMgdGhlIEhUTUxXaWRnZXQgaW5zdGFuY2UgKGkuZS4gdGhlIHJldHVybiB2YWx1ZSBvZgogIC8vIGFuIEhUTUxXaWRnZXQgYmluZGluZydzIGluaXRpYWxpemUoKSBvciBmYWN0b3J5KCkgZnVuY3Rpb24pCiAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoYXQgZWxlbWVudCwgaWYgYW55LiBJZiBubyBlbGVtZW50IG1hdGNoZXMgdGhlCiAgLy8gc2VsZWN0b3IsIG9yIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50IGhhcyBubyBIVE1MV2lkZ2V0CiAgLy8gaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIGl0LCB0aGVuIG51bGwgaXMgcmV0dXJuZWQuCiAgLy8KICAvLyBUaGUgc2NvcGUgYXJndW1lbnQgaXMgb3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byB3aW5kb3cuZG9jdW1lbnQuCiAgd2luZG93LkhUTUxXaWRnZXRzLmZpbmQgPSBmdW5jdGlvbihzY29wZSwgc2VsZWN0b3IpIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgc2VsZWN0b3IgPSBzY29wZTsKICAgICAgc2NvcGUgPSBkb2N1bWVudDsKICAgIH0KCiAgICB2YXIgZWwgPSBzY29wZS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKICAgIGlmIChlbCA9PT0gbnVsbCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB3aW5kb3cuSFRNTFdpZGdldHMuZ2V0SW5zdGFuY2UoZWwpOwogICAgfQogIH07CgogIC8vIEZpbmRzIGFsbCBlbGVtZW50cyBpbiB0aGUgc2NvcGUgdGhhdCBtYXRjaCB0aGUgc2VsZWN0b3IsIGFuZAogIC8vIHJldHVybnMgdGhlIEhUTUxXaWRnZXQgaW5zdGFuY2VzIChpLmUuIHRoZSByZXR1cm4gdmFsdWVzIG9mCiAgLy8gYW4gSFRNTFdpZGdldCBiaW5kaW5nJ3MgaW5pdGlhbGl6ZSgpIG9yIGZhY3RvcnkoKSBmdW5jdGlvbikKICAvLyBhc3NvY2lhdGVkIHdpdGggdGhlIGVsZW1lbnRzLCBpbiBhbiBhcnJheS4gSWYgZWxlbWVudHMgdGhhdAogIC8vIG1hdGNoIHRoZSBzZWxlY3RvciBkb24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgSFRNTFdpZGdldAogIC8vIGluc3RhbmNlLCB0aGUgcmV0dXJuZWQgYXJyYXkgd2lsbCBjb250YWluIG51bGxzLgogIC8vCiAgLy8gVGhlIHNjb3BlIGFyZ3VtZW50IGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gd2luZG93LmRvY3VtZW50LgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5maW5kQWxsID0gZnVuY3Rpb24oc2NvcGUsIHNlbGVjdG9yKSB7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7CiAgICAgIHNlbGVjdG9yID0gc2NvcGU7CiAgICAgIHNjb3BlID0gZG9jdW1lbnQ7CiAgICB9CgogICAgdmFyIG5vZGVzID0gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykgewogICAgICByZXN1bHRzLnB1c2god2luZG93LkhUTUxXaWRnZXRzLmdldEluc3RhbmNlKG5vZGVzW2ldKSk7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0czsKICB9OwoKICB2YXIgcG9zdFJlbmRlckhhbmRsZXJzID0gW107CiAgZnVuY3Rpb24gaW52b2tlUG9zdFJlbmRlckhhbmRsZXJzKCkgewogICAgd2hpbGUgKHBvc3RSZW5kZXJIYW5kbGVycy5sZW5ndGgpIHsKICAgICAgdmFyIGhhbmRsZXIgPSBwb3N0UmVuZGVySGFuZGxlcnMuc2hpZnQoKTsKICAgICAgaWYgKGhhbmRsZXIpIHsKICAgICAgICBoYW5kbGVyKCk7CiAgICAgIH0KICAgIH0KICB9CgogIC8vIFJlZ2lzdGVyIHRoZSBnaXZlbiBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBpbnZva2VkIGFmdGVyIHRoZQogIC8vIG5leHQgdGltZSBzdGF0aWMgd2lkZ2V0cyBhcmUgcmVuZGVyZWQuCiAgd2luZG93LkhUTUxXaWRnZXRzLmFkZFBvc3RSZW5kZXJIYW5kbGVyID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgIHBvc3RSZW5kZXJIYW5kbGVycy5wdXNoKGNhbGxiYWNrKTsKICB9OwoKICAvLyBUYWtlcyBhIG5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9uLCBhbmQgcmV0dXJucyBhbgogIC8vIG9sZC1zdHlsZSBjbGFzcy1ib3VuZCBkZWZpbml0aW9uLiBUaGlzIHNhdmVzIHVzIGZyb20gaGF2aW5nCiAgLy8gdG8gcmV3cml0ZSBhbGwgdGhlIGxvZ2ljIGluIHRoaXMgZmlsZSB0byBhY2NvbW9kYXRlIGJvdGgKICAvLyB0eXBlcyBvZiBkZWZpbml0aW9ucy4KICBmdW5jdGlvbiBjcmVhdGVMZWdhY3lEZWZpbml0aW9uQWRhcHRlcihkZWZuKSB7CiAgICB2YXIgcmVzdWx0ID0gewogICAgICBuYW1lOiBkZWZuLm5hbWUsCiAgICAgIHR5cGU6IGRlZm4udHlwZSwKICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQpIHsKICAgICAgICByZXR1cm4gZGVmbi5mYWN0b3J5KGVsLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgfSwKICAgICAgcmVuZGVyVmFsdWU6IGZ1bmN0aW9uKGVsLCB4LCBpbnN0YW5jZSkgewogICAgICAgIHJldHVybiBpbnN0YW5jZS5yZW5kZXJWYWx1ZSh4KTsKICAgICAgfSwKICAgICAgcmVzaXplOiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCwgaW5zdGFuY2UpIHsKICAgICAgICByZXR1cm4gaW5zdGFuY2UucmVzaXplKHdpZHRoLCBoZWlnaHQpOwogICAgICB9CiAgICB9OwoKICAgIGlmIChkZWZuLmZpbmQpCiAgICAgIHJlc3VsdC5maW5kID0gZGVmbi5maW5kOwogICAgaWYgKGRlZm4ucmVuZGVyRXJyb3IpCiAgICAgIHJlc3VsdC5yZW5kZXJFcnJvciA9IGRlZm4ucmVuZGVyRXJyb3I7CiAgICBpZiAoZGVmbi5jbGVhckVycm9yKQogICAgICByZXN1bHQuY2xlYXJFcnJvciA9IGRlZm4uY2xlYXJFcnJvcjsKCiAgICByZXR1cm4gcmVzdWx0OwogIH0KfSkoKTsKCg=="></script>
<link href="data:text/css,%2Edt%2Dcrosstalk%2Dfade%20%7B%0Aopacity%3A%200%2E2%3B%0A%7D%0Ahtml%20body%20div%2EDTS%20div%2EdataTables%5FscrollBody%20%7B%0Abackground%3A%20none%3B%0A%7D%0A%0Atable%2EdataTable%20%7B%0Adisplay%3A%20table%3B%0A%7D%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,KGZ1bmN0aW9uKCkgewoKLy8gc29tZSBoZWxwZXIgZnVuY3Rpb25zOiB1c2luZyBhIGdsb2JhbCBvYmplY3QgRFRXaWRnZXQgc28gdGhhdCBpdCBjYW4gYmUgdXNlZAovLyBpbiBKUygpIGNvZGUsIGUuZy4gZGF0YXRhYmxlKG9wdGlvbnMgPSBsaXN0KGZvbyA9IEpTKCdjb2RlJykpKTsgdW5saWtlIFIncwovLyBkeW5hbWljIHNjb3BpbmcsIHdoZW4gJ2NvZGUnIGlzIGV2YWwoKSdlZCwgSmF2YVNjcmlwdCBkb2VzIG5vdCBrbm93IG9iamVjdHMKLy8gZnJvbSB0aGUgInBhcmVudCBmcmFtZSIsIGUuZy4gSlMoJ0RUV2lkZ2V0Jykgd2lsbCBub3Qgd29yayB1bmxlc3MgaXQgd2FzIG1hZGUKLy8gYSBnbG9iYWwgb2JqZWN0CnZhciBEVFdpZGdldCA9IHt9OwoKLy8gMTIzNDU2NjY2Ljc4OTAgLT4gMTIzLDQ1Niw2NjYuNzg5MAp2YXIgbWFya0ludGVydmFsID0gZnVuY3Rpb24oZCwgZGlnaXRzLCBpbnRlcnZhbCwgbWFyaywgZGVjTWFyaywgcHJlY2lzaW9uKSB7CiAgeCA9IHByZWNpc2lvbiA/IGQudG9QcmVjaXNpb24oZGlnaXRzKSA6IGQudG9GaXhlZChkaWdpdHMpOwogIGlmICghL14tP1tcZC5dKyQvLnRlc3QoeCkpIHJldHVybiB4OwogIHZhciB4diA9IHguc3BsaXQoJy4nKTsKICBpZiAoeHYubGVuZ3RoID4gMikgcmV0dXJuIHg7ICAvLyBzaG91bGQgaGF2ZSBhdCBtb3N0IG9uZSBkZWNpbWFsIHBvaW50CiAgeHZbMF0gPSB4dlswXS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcQig/PShcXGR7JyArIGludGVydmFsICsgJ30pKyg/IVxcZCkpJywgJ2cnKSwgbWFyayk7CiAgcmV0dXJuIHh2LmpvaW4oZGVjTWFyayk7Cn07CgpEVFdpZGdldC5mb3JtYXRDdXJyZW5jeSA9IGZ1bmN0aW9uKGRhdGEsIGN1cnJlbmN5LCBkaWdpdHMsIGludGVydmFsLCBtYXJrLCBkZWNNYXJrLCBiZWZvcmUpIHsKICB2YXIgZCA9IHBhcnNlRmxvYXQoZGF0YSk7CiAgaWYgKGlzTmFOKGQpKSByZXR1cm4gJyc7CiAgdmFyIHJlcyA9IG1hcmtJbnRlcnZhbChkLCBkaWdpdHMsIGludGVydmFsLCBtYXJrLCBkZWNNYXJrKTsKICByZXMgPSBiZWZvcmUgPyAoL14tLy50ZXN0KHJlcykgPyAnLScgKyBjdXJyZW5jeSArIHJlcy5yZXBsYWNlKC9eLS8sICcnKSA6IGN1cnJlbmN5ICsgcmVzKSA6CiAgICByZXMgKyBjdXJyZW5jeTsKICByZXR1cm4gcmVzOwp9OwoKRFRXaWRnZXQuZm9ybWF0U3RyaW5nID0gZnVuY3Rpb24oZGF0YSwgcHJlZml4LCBzdWZmaXgpIHsKICB2YXIgZCA9IGRhdGE7CiAgaWYgKGQgPT09IG51bGwpIHJldHVybiAnJzsKICByZXR1cm4gcHJlZml4ICsgZCArIHN1ZmZpeDsKfTsKCkRUV2lkZ2V0LmZvcm1hdFBlcmNlbnRhZ2UgPSBmdW5jdGlvbihkYXRhLCBkaWdpdHMsIGludGVydmFsLCBtYXJrLCBkZWNNYXJrKSB7CiAgdmFyIGQgPSBwYXJzZUZsb2F0KGRhdGEpOwogIGlmIChpc05hTihkKSkgcmV0dXJuICcnOwogIHJldHVybiBtYXJrSW50ZXJ2YWwoZCAqIDEwMCwgZGlnaXRzLCBpbnRlcnZhbCwgbWFyaywgZGVjTWFyaykgKyAnJSc7Cn07CgpEVFdpZGdldC5mb3JtYXRSb3VuZCA9IGZ1bmN0aW9uKGRhdGEsIGRpZ2l0cywgaW50ZXJ2YWwsIG1hcmssIGRlY01hcmspIHsKICB2YXIgZCA9IHBhcnNlRmxvYXQoZGF0YSk7CiAgaWYgKGlzTmFOKGQpKSByZXR1cm4gJyc7CiAgcmV0dXJuIG1hcmtJbnRlcnZhbChkLCBkaWdpdHMsIGludGVydmFsLCBtYXJrLCBkZWNNYXJrKTsKfTsKCkRUV2lkZ2V0LmZvcm1hdFNpZ25pZiA9IGZ1bmN0aW9uKGRhdGEsIGRpZ2l0cywgaW50ZXJ2YWwsIG1hcmssIGRlY01hcmspIHsKICB2YXIgZCA9IHBhcnNlRmxvYXQoZGF0YSk7CiAgaWYgKGlzTmFOKGQpKSByZXR1cm4gJyc7CiAgcmV0dXJuIG1hcmtJbnRlcnZhbChkLCBkaWdpdHMsIGludGVydmFsLCBtYXJrLCBkZWNNYXJrLCB0cnVlKTsKfTsKCkRUV2lkZ2V0LmZvcm1hdERhdGUgPSBmdW5jdGlvbihkYXRhLCBtZXRob2QsIHBhcmFtcykgewogIHZhciBkID0gZGF0YTsKICBpZiAoZCA9PT0gbnVsbCkgcmV0dXJuICcnOwogIC8vIChuZXcgRGF0ZSgnMjAxNS0xMC0yOCcpKS50b0RhdGVTdHJpbmcoKSBtYXkgcmV0dXJuIDIwMTUtMTAtMjcgYmVjYXVzZSB0aGUKICAvLyBhY3R1YWwgdGltZSBjcmVhdGVkIGNvdWxkIGJlIGxpa2UgJ1R1ZSBPY3QgMjcgMjAxNSAxOTowMDowMCBHTVQtMDUwMCAoQ0RUKScsCiAgLy8gaS5lLiB0aGUgZGF0ZS1vbmx5IHN0cmluZyBpcyB0cmVhdGVkIGFzIFVUQyB0aW1lIGluc3RlYWQgb2YgbG9jYWwgdGltZQogIGlmICgobWV0aG9kID09PSAndG9EYXRlU3RyaW5nJyB8fCBtZXRob2QgPT09ICd0b0xvY2FsZURhdGVTdHJpbmcnKSAmJiAvXlxkezQsfVxEXGR7Mn1cRFxkezJ9JC8udGVzdChkKSkgewogICAgZCA9IGQuc3BsaXQoL1xELyk7CiAgICBkID0gbmV3IERhdGUoZFswXSwgZFsxXSAtIDEsIGRbMl0pOwogIH0gZWxzZSB7CiAgICBkID0gbmV3IERhdGUoZCk7CiAgfQogIHJldHVybiBkW21ldGhvZF0uYXBwbHkoZCwgcGFyYW1zKTsKfTsKCndpbmRvdy5EVFdpZGdldCA9IERUV2lkZ2V0OwoKdmFyIHRyYW5zcG9zZUFycmF5MkQgPSBmdW5jdGlvbihhKSB7CiAgcmV0dXJuIGEubGVuZ3RoID09PSAwID8gYSA6IEhUTUxXaWRnZXRzLnRyYW5zcG9zZUFycmF5MkQoYSk7Cn07Cgp2YXIgY3Jvc3N0YWxrUGx1Z2luc0luc3RhbGxlZCA9IGZhbHNlOwoKZnVuY3Rpb24gbWF5YmVJbnN0YWxsQ3Jvc3N0YWxrUGx1Z2lucygpIHsKICBpZiAoY3Jvc3N0YWxrUGx1Z2luc0luc3RhbGxlZCkKICAgIHJldHVybjsKICBjcm9zc3RhbGtQbHVnaW5zSW5zdGFsbGVkID0gdHJ1ZTsKCiAgJC5mbi5kYXRhVGFibGUuZXh0LmFmbkZpbHRlcmluZy5wdXNoKAogICAgZnVuY3Rpb24ob1NldHRpbmdzLCBhRGF0YSwgaURhdGFJbmRleCkgewogICAgICB2YXIgY3RmaWx0ZXIgPSBvU2V0dGluZ3MublRhYmxlLmN0ZmlsdGVyOwogICAgICBpZiAoY3RmaWx0ZXIgJiYgIWN0ZmlsdGVyW2lEYXRhSW5kZXhdKQogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgIHZhciBjdHNlbGVjdCA9IG9TZXR0aW5ncy5uVGFibGUuY3RzZWxlY3Q7CiAgICAgIGlmIChjdHNlbGVjdCAmJiAhY3RzZWxlY3RbaURhdGFJbmRleF0pCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgKTsKfQoKSFRNTFdpZGdldHMud2lkZ2V0KHsKICBuYW1lOiAiZGF0YXRhYmxlcyIsCiAgdHlwZTogIm91dHB1dCIsCiAgcmVuZGVyT25OdWxsVmFsdWU6IHRydWUsCiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQpIHsKICAgICQoZWwpLmh0bWwoJyZuYnNwOycpOwogICAgcmV0dXJuIHsKICAgICAgZGF0YTogbnVsbCwKICAgICAgY3RmaWx0ZXJIYW5kbGU6IG5ldyBjcm9zc3RhbGsuRmlsdGVySGFuZGxlKCksCiAgICAgIGN0ZmlsdGVyU3Vic2NyaXB0aW9uOiBudWxsLAogICAgICBjdHNlbGVjdEhhbmRsZTogbmV3IGNyb3NzdGFsay5TZWxlY3Rpb25IYW5kbGUoKSwKICAgICAgY3RzZWxlY3RTdWJzY3JpcHRpb246IG51bGwKICAgIH07CiAgfSwKICByZW5kZXJWYWx1ZTogZnVuY3Rpb24oZWwsIGRhdGEsIGluc3RhbmNlKSB7CiAgICBpZiAoZWwub2Zmc2V0V2lkdGggPT09IDAgfHwgZWwub2Zmc2V0SGVpZ2h0ID09PSAwKSB7CiAgICAgIGluc3RhbmNlLmRhdGEgPSBkYXRhOwogICAgICByZXR1cm47CiAgICB9CiAgICBpbnN0YW5jZS5kYXRhID0gbnVsbDsKICAgIHZhciAkZWwgPSAkKGVsKTsKICAgICRlbC5lbXB0eSgpOwoKICAgIGlmIChkYXRhID09PSBudWxsKSB7CiAgICAgICRlbC5hcHBlbmQoJyZuYnNwOycpOwogICAgICAvLyBjbGVhciBwcmV2aW91cyBTaGlueSBpbnB1dHMgKGlmIGFueSkKICAgICAgZm9yICh2YXIgaSBpbiBpbnN0YW5jZS5jbGVhcklucHV0cykgaW5zdGFuY2UuY2xlYXJJbnB1dHNbaV0oKTsKICAgICAgaW5zdGFuY2UuY2xlYXJJbnB1dHMgPSB7fTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBjcm9zc3RhbGtPcHRpb25zID0gZGF0YS5jcm9zc3RhbGtPcHRpb25zOwogICAgaWYgKCFjcm9zc3RhbGtPcHRpb25zKSBjcm9zc3RhbGtPcHRpb25zID0gewogICAgICAna2V5JzogbnVsbCwgJ2dyb3VwJzogbnVsbAogICAgfTsKICAgIGlmIChjcm9zc3RhbGtPcHRpb25zLmdyb3VwKSB7CiAgICAgIG1heWJlSW5zdGFsbENyb3NzdGFsa1BsdWdpbnMoKTsKICAgICAgaW5zdGFuY2UuY3RmaWx0ZXJIYW5kbGUuc2V0R3JvdXAoY3Jvc3N0YWxrT3B0aW9ucy5ncm91cCk7CiAgICAgIGluc3RhbmNlLmN0c2VsZWN0SGFuZGxlLnNldEdyb3VwKGNyb3NzdGFsa09wdGlvbnMuZ3JvdXApOwogICAgfQoKICAgIC8vIGlmIHdlIGFyZSBpbiB0aGUgdmlld2VyIHRoZW4gd2UgYWx3YXlzIHdhbnQgdG8gZmlsbENvbnRhaW5lciBhbmQKICAgIC8vIGFuZCBhdXRvSGlkZU5hdmlnYXRpb24gKHVubGVzcyB0aGUgdXNlciBoYXMgZXhwbGljaXRseSBzZXQgdGhlc2UpCiAgICBpZiAod2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUpIHsKICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KCJmaWxsQ29udGFpbmVyIikpCiAgICAgICAgZGF0YS5maWxsQ29udGFpbmVyID0gdHJ1ZTsKICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KCJhdXRvSGlkZU5hdmlnYXRpb24iKSkKICAgICAgICBkYXRhLmF1dG9IaWRlTmF2aWdhdGlvbiA9IHRydWU7CiAgICB9CgogICAgLy8gcHJvcGFnYXRlIGZpbGxDb250YWluZXIgdG8gaW5zdGFuY2UgKHNvIHdlIGhhdmUgaXQgaW4gcmVzaXplKQogICAgaW5zdGFuY2UuZmlsbENvbnRhaW5lciA9IGRhdGEuZmlsbENvbnRhaW5lcjsKCiAgICB2YXIgY2VsbHMgPSBkYXRhLmRhdGE7CgogICAgaWYgKGNlbGxzIGluc3RhbmNlb2YgQXJyYXkpIGNlbGxzID0gdHJhbnNwb3NlQXJyYXkyRChjZWxscyk7CgogICAgJGVsLmFwcGVuZChkYXRhLmNvbnRhaW5lcik7CiAgICB2YXIgJHRhYmxlID0gJGVsLmZpbmQoJ3RhYmxlJyk7CiAgICBpZiAoZGF0YS5jbGFzcykgJHRhYmxlLmFkZENsYXNzKGRhdGEuY2xhc3MpOwogICAgaWYgKGRhdGEuY2FwdGlvbikgJHRhYmxlLnByZXBlbmQoZGF0YS5jYXB0aW9uKTsKCiAgICBpZiAoIWRhdGEuc2VsZWN0aW9uKSBkYXRhLnNlbGVjdGlvbiA9IHsKICAgICAgbW9kZTogJ25vbmUnLCBzZWxlY3RlZDogbnVsbCwgdGFyZ2V0OiAncm93Jywgc2VsZWN0YWJsZTogbnVsbAogICAgfTsKICAgIGlmIChIVE1MV2lkZ2V0cy5zaGlueU1vZGUgJiYgZGF0YS5zZWxlY3Rpb24ubW9kZSAhPT0gJ25vbmUnICYmCiAgICAgICAgZGF0YS5zZWxlY3Rpb24udGFyZ2V0ID09PSAncm93K2NvbHVtbicpIHsKICAgICAgaWYgKCR0YWJsZS5jaGlsZHJlbigndGZvb3QnKS5sZW5ndGggPT09IDApIHsKICAgICAgICAkdGFibGUuYXBwZW5kKCQoJzx0Zm9vdD4nKSk7CiAgICAgICAgJHRhYmxlLmZpbmQoJ3RoZWFkIHRyJykuY2xvbmUoKS5hcHBlbmRUbygkdGFibGUuZmluZCgndGZvb3QnKSk7CiAgICAgIH0KICAgIH0KCiAgICAvLyBjb2x1bW4gZmlsdGVycwogICAgdmFyIGZpbHRlclJvdzsKICAgIHN3aXRjaCAoZGF0YS5maWx0ZXIpIHsKICAgICAgY2FzZSAndG9wJzoKICAgICAgICAkdGFibGUuY2hpbGRyZW4oJ3RoZWFkJykuYXBwZW5kKGRhdGEuZmlsdGVySFRNTCk7CiAgICAgICAgZmlsdGVyUm93ID0gJHRhYmxlLmZpbmQoJ3RoZWFkIHRyOmxhc3QgdGQnKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnYm90dG9tJzoKICAgICAgICBpZiAoJHRhYmxlLmNoaWxkcmVuKCd0Zm9vdCcpLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgJHRhYmxlLmFwcGVuZCgkKCc8dGZvb3Q+JykpOwogICAgICAgIH0KICAgICAgICAkdGFibGUuY2hpbGRyZW4oJ3Rmb290JykucHJlcGVuZChkYXRhLmZpbHRlckhUTUwpOwogICAgICAgIGZpbHRlclJvdyA9ICR0YWJsZS5maW5kKCd0Zm9vdCB0cjpmaXJzdCB0ZCcpOwogICAgICAgIGJyZWFrOwogICAgfQoKICAgIHZhciBvcHRpb25zID0geyBzZWFyY2hEZWxheTogMTAwMCB9OwogICAgaWYgKGNlbGxzICE9PSBudWxsKSAkLmV4dGVuZChvcHRpb25zLCB7CiAgICAgIGRhdGE6IGNlbGxzCiAgICB9KTsKCiAgICAvLyBvcHRpb25zIGZvciBmaWxsQ29udGFpbmVyCiAgICB2YXIgYm9vdHN0cmFwQWN0aXZlID0gdHlwZW9mKCQuZm4ucG9wb3ZlcikgIT0gJ3VuZGVmaW5lZCc7CiAgICBpZiAoaW5zdGFuY2UuZmlsbENvbnRhaW5lcikgewoKICAgICAgLy8gZm9yY2Ugc2Nyb2xsWC9zY3JvbGxZIGFuZCB0dXJuIG9mZiBhdXRvV2lkdGgKICAgICAgb3B0aW9ucy5zY3JvbGxYID0gdHJ1ZTsKICAgICAgb3B0aW9ucy5zY3JvbGxZID0gIjEwMHB4IjsgLy8gY2FuIGJlIGFueSB2YWx1ZSwgd2UnbGwgYWRqdXN0IGJlbG93CgogICAgICAvLyBpZiB3ZSBhcmVuJ3QgcGFnaW5hdGluZyB0aGVuIG1vdmUgYXJvdW5kIHRoZSBpbmZvL2ZpbHRlciBjb250cm9scwogICAgICAvLyB0byBzYXZlIHNwYWNlIGF0IHRoZSBib3R0b20gYW5kIHJlcGhyYXNlIHRoZSBpbmZvIGNhbGxiYWNrCiAgICAgIGlmIChkYXRhLm9wdGlvbnMucGFnaW5nID09PSBmYWxzZSkgewoKICAgICAgICAvLyB3ZSBrbm93IGhvdyB0byBkbyB0aGlzIGNsZWFubHkgZm9yIGJvb3RzdHJhcCwgbm90IHNvIG11Y2gKICAgICAgICAvLyBmb3Igb3RoZXIgdGhlbWVzL2xheW91dHMKICAgICAgICBpZiAoYm9vdHN0cmFwQWN0aXZlKSB7CiAgICAgICAgICBvcHRpb25zLmRvbSA9ICI8J3Jvdyc8J2NvbC1zbS00J2k+PCdjb2wtc20tOCdmPj4iICsKICAgICAgICAgICAgICAgICAgICAgICAgIjwncm93JzwnY29sLXNtLTEyJ3RyPj4iOwogICAgICAgIH0KCiAgICAgICAgb3B0aW9ucy5mbkluZm9DYWxsYmFjayA9IGZ1bmN0aW9uKG9TZXR0aW5ncywgaVN0YXJ0LCBpRW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaU1heCwgaVRvdGFsLCBzUHJlKSB7CiAgICAgICAgICByZXR1cm4gTnVtYmVyKGlUb3RhbCkudG9Mb2NhbGVTdHJpbmcoKSArICIgcmVjb3JkcyI7CiAgICAgICAgfTsKICAgICAgfQogICAgfQoKICAgIC8vIGF1dG8gaGlkZSBuYXZpZ2F0aW9uIGlmIHJlcXVlc3RlZAogICAgLy8gTm90ZSwgdGhpcyBvbmx5IHdvcmtzIG9uIGNsaWVudC1zaWRlIHByb2Nlc3NpbmcgbW9kZSBhcyBvbiBzZXJ2ZXItc2lkZSwKICAgIC8vIGNlbGxzIChkYXRhLmRhdGEpIGlzIG51bGw7IEluIGFkZGl0aW9uLCB3ZSByZXF1aXJlIHRoZSBwYWdlTGVuZ3RoIG9wdGlvbgogICAgLy8gYmVpbmcgcHJvdmlkZWQgZXhwbGljaXRseSB0byBlbmFibGUgdGhpcy4gRGVzcGl0ZSB3ZSBtYXkgYmUgYWJsZSB0byBkZWR1Y2UKICAgIC8vIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHBhZ2VMZW5ndGgsIGl0IG1heSBjb21wbGljYXRlIHRoaW5ncyBzbyB3ZSdkIHJhdGhlcgogICAgLy8gcHV0IHRoaXMgcmVzcG9uc2libGl0eSB0byB1c2VycyBhbmQgd2FybiB0aGVtIG9uIHRoZSBSIHNpZGUuCiAgICBpZiAoZGF0YS5hdXRvSGlkZU5hdmlnYXRpb24gPT09IHRydWUgJiYgZGF0YS5vcHRpb25zLnBhZ2luZyAhPT0gZmFsc2UpIHsKICAgICAgLy8gc3RyaXAgYWxsIG5hdiBpZiBsZW5ndGggPj0gY2VsbHMKICAgICAgaWYgKChjZWxscyBpbnN0YW5jZW9mIEFycmF5KSAmJiBkYXRhLm9wdGlvbnMucGFnZUxlbmd0aCA+PSBjZWxscy5sZW5ndGgpCiAgICAgICAgb3B0aW9ucy5kb20gPSBib290c3RyYXBBY3RpdmUgPyAiPCdyb3cnPCdjb2wtc20tMTIndHI+PiIgOiAidCI7CiAgICAgIC8vIGFsdGVybmF0aXZlbHkgbGVhbiB0aGluZ3Mgb3V0IGZvciBmbGV4ZGFzaGJvYXJkIG1vYmlsZSBwb3J0cmFpdAogICAgICBlbHNlIGlmIChib290c3RyYXBBY3RpdmUgJiYgd2luZG93LkZsZXhEYXNoYm9hcmQgJiYgd2luZG93LkZsZXhEYXNoYm9hcmQuaXNNb2JpbGVQaG9uZSgpKQogICAgICAgIG9wdGlvbnMuZG9tID0gIjwncm93JzwnY29sLXNtLTEyJ2Y+PiIgKwogICAgICAgICAgICAgICAgICAgICAgIjwncm93JzwnY29sLXNtLTEyJ3RyPj4iICArCiAgICAgICAgICAgICAgICAgICAgICAiPCdyb3cnPCdjb2wtc20tMTIncD4+IjsKICAgIH0KCiAgICAkLmV4dGVuZCh0cnVlLCBvcHRpb25zLCBkYXRhLm9wdGlvbnMgfHwge30pOwoKICAgIHZhciBzZWFyY2hDb2xzID0gb3B0aW9ucy5zZWFyY2hDb2xzOwogICAgaWYgKHNlYXJjaENvbHMpIHsKICAgICAgc2VhcmNoQ29scyA9IHNlYXJjaENvbHMubWFwKGZ1bmN0aW9uKHgpIHsKICAgICAgICByZXR1cm4geCA9PT0gbnVsbCA/ICcnIDogeC5zZWFyY2g7CiAgICAgIH0pOwogICAgICAvLyBGSVhNRTogdGhpcyBtZWFucyBJIGRvbid0IHJlc3BlY3QgdGhlIGVzY2FwZVJlZ2V4IHNldHRpbmcKICAgICAgZGVsZXRlIG9wdGlvbnMuc2VhcmNoQ29sczsKICAgIH0KCiAgICAvLyBzZXJ2ZXItc2lkZSBwcm9jZXNzaW5nPwogICAgdmFyIHNlcnZlciA9IG9wdGlvbnMuc2VydmVyU2lkZSA9PT0gdHJ1ZTsKCiAgICAvLyB1c2UgdGhlIGRhdGFTcmMgZnVuY3Rpb24gdG8gcHJlLXByb2Nlc3MgSlNPTiBkYXRhIHJldHVybmVkIGZyb20gUgogICAgdmFyIERUX3Jvd3NfYWxsID0gW10sIERUX3Jvd3NfY3VycmVudCA9IFtdOwogICAgaWYgKHNlcnZlciAmJiBIVE1MV2lkZ2V0cy5zaGlueU1vZGUgJiYgdHlwZW9mIG9wdGlvbnMuYWpheCA9PT0gJ29iamVjdCcgJiYKICAgICAgICAvXnNlc3Npb25cL1tcZGEtel0rXC9kYXRhb2JqLy50ZXN0KG9wdGlvbnMuYWpheC51cmwpICYmICFvcHRpb25zLmFqYXguZGF0YVNyYykgewogICAgICBvcHRpb25zLmFqYXguZGF0YVNyYyA9IGZ1bmN0aW9uKGpzb24pIHsKICAgICAgICBEVF9yb3dzX2FsbCA9ICQubWFrZUFycmF5KGpzb24uRFRfcm93c19hbGwpOwogICAgICAgIERUX3Jvd3NfY3VycmVudCA9ICQubWFrZUFycmF5KGpzb24uRFRfcm93c19jdXJyZW50KTsKICAgICAgICB2YXIgZGF0YSA9IGpzb24uZGF0YTsKICAgICAgICBpZiAoIWNvbFJlb3JkZXJFbmFibGVkKCkpIHJldHVybiBkYXRhOwogICAgICAgIHZhciB0YWJsZSA9ICR0YWJsZS5EYXRhVGFibGUoKSwgb3JkZXIgPSB0YWJsZS5jb2xSZW9yZGVyLm9yZGVyKCksIGZsYWcgPSB0cnVlLCBpLCBqLCByb3c7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IG9yZGVyLmxlbmd0aDsgKytpKSBpZiAob3JkZXJbaV0gIT09IGkpIGZsYWcgPSBmYWxzZTsKICAgICAgICBpZiAoZmxhZykgcmV0dXJuIGRhdGE7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHsKICAgICAgICAgIHJvdyA9IGRhdGFbaV0uc2xpY2UoKTsKICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBvcmRlci5sZW5ndGg7ICsraikgZGF0YVtpXVtqXSA9IHJvd1tvcmRlcltqXV07CiAgICAgICAgfQogICAgICAgIHJldHVybiBkYXRhOwogICAgICB9OwogICAgfQoKICAgIHZhciB0aGl6ID0gdGhpczsKICAgIGlmIChpbnN0YW5jZS5maWxsQ29udGFpbmVyKSAkdGFibGUub24oJ2luaXQuZHQnLCBmdW5jdGlvbihlKSB7CiAgICAgIHRoaXouZmlsbEF2YWlsYWJsZUhlaWdodChlbCwgJChlbCkuaW5uZXJIZWlnaHQoKSk7CiAgICB9KTsKICAgIC8vIElmIHRoZSBwYWdlIGNvbnRhaW5zIHNlcnZlcmFsIGRhdGF0YWJsZXMgYW5kIG9uZSBvZiB3aGljaCBlbmFibGVzIGNvbFJlb3JkZXIsCiAgICAvLyB0aGUgdGFibGUuY29sUmVvcmRlci5vcmRlcigpIGZ1bmN0aW9uIHdpbGwgZXhpc3QgYnV0IHRocm93cyBlcnJvciB3aGVuIGNhbGxlZC4KICAgIC8vIFNvIGl0IHNlZW1zIGxpa2UgdGhlIG9ubHkgd2F5IHRvIGtub3cgaWYgY29sUmVvcmRlciBpcyBlbmFibGVkIG9yIG5vdCBpcyB0bwogICAgLy8gY2hlY2sgdGhlIG9wdGlvbnMuCiAgICB2YXIgY29sUmVvcmRlckVuYWJsZWQgPSBmdW5jdGlvbigpIHsgcmV0dXJuICJjb2xSZW9yZGVyIiBpbiBvcHRpb25zOyB9OwogICAgdmFyIHRhYmxlID0gJHRhYmxlLkRhdGFUYWJsZShvcHRpb25zKTsKICAgICRlbC5kYXRhKCdkYXRhdGFibGUnLCB0YWJsZSk7CgogICAgLy8gVW5yZWdpc3RlciBwcmV2aW91cyBDcm9zc3RhbGsgZXZlbnQgc3Vic2NyaXB0aW9ucywgaWYgdGhleSBleGlzdAogICAgaWYgKGluc3RhbmNlLmN0ZmlsdGVyU3Vic2NyaXB0aW9uKSB7CiAgICAgIGluc3RhbmNlLmN0ZmlsdGVySGFuZGxlLm9mZigiY2hhbmdlIiwgaW5zdGFuY2UuY3RmaWx0ZXJTdWJzY3JpcHRpb24pOwogICAgICBpbnN0YW5jZS5jdGZpbHRlclN1YnNjcmlwdGlvbiA9IG51bGw7CiAgICB9CiAgICBpZiAoaW5zdGFuY2UuY3RzZWxlY3RTdWJzY3JpcHRpb24pIHsKICAgICAgaW5zdGFuY2UuY3RzZWxlY3RIYW5kbGUub2ZmKCJjaGFuZ2UiLCBpbnN0YW5jZS5jdHNlbGVjdFN1YnNjcmlwdGlvbik7CiAgICAgIGluc3RhbmNlLmN0c2VsZWN0U3Vic2NyaXB0aW9uID0gbnVsbDsKICAgIH0KCiAgICBpZiAoIWNyb3NzdGFsa09wdGlvbnMuZ3JvdXApIHsKICAgICAgJHRhYmxlWzBdLmN0ZmlsdGVyID0gbnVsbDsKICAgICAgJHRhYmxlWzBdLmN0c2VsZWN0ID0gbnVsbDsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBrZXkgPSBjcm9zc3RhbGtPcHRpb25zLmtleTsKICAgICAgZnVuY3Rpb24ga2V5c1RvTWF0Y2hlcyhrZXlzKSB7CiAgICAgICAgaWYgKCFrZXlzKSB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIHNlbGVjdGVkS2V5cyA9IHt9OwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHNlbGVjdGVkS2V5c1trZXlzW2ldXSA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgbWF0Y2hlcyA9IHt9OwogICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBrZXkubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgaWYgKHNlbGVjdGVkS2V5c1trZXlbal1dKQogICAgICAgICAgICAgIG1hdGNoZXNbal0gPSB0cnVlOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIG1hdGNoZXM7CiAgICAgICAgfQogICAgICB9CgogICAgICBmdW5jdGlvbiBhcHBseUNyb3NzdGFsa0ZpbHRlcihlKSB7CiAgICAgICAgJHRhYmxlWzBdLmN0ZmlsdGVyID0ga2V5c1RvTWF0Y2hlcyhlLnZhbHVlKTsKICAgICAgICB0YWJsZS5kcmF3KCk7CiAgICAgIH0KICAgICAgaW5zdGFuY2UuY3RmaWx0ZXJTdWJzY3JpcHRpb24gPSBpbnN0YW5jZS5jdGZpbHRlckhhbmRsZS5vbigiY2hhbmdlIiwgYXBwbHlDcm9zc3RhbGtGaWx0ZXIpOwogICAgICBhcHBseUNyb3NzdGFsa0ZpbHRlcih7dmFsdWU6IGluc3RhbmNlLmN0ZmlsdGVySGFuZGxlLmZpbHRlcmVkS2V5c30pOwoKICAgICAgZnVuY3Rpb24gYXBwbHlDcm9zc3RhbGtTZWxlY3Rpb24oZSkgewogICAgICAgIGlmIChlLnNlbmRlciAhPT0gaW5zdGFuY2UuY3RzZWxlY3RIYW5kbGUpIHsKICAgICAgICAgIHRhYmxlCiAgICAgICAgICAgIC5yb3dzKCcuJyArIHNlbENsYXNzLCB7c2VhcmNoOiAnYXBwbGllZCd9KQogICAgICAgICAgICAubm9kZXMoKQogICAgICAgICAgICAudG8kKCkKICAgICAgICAgICAgLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgIGlmIChzZWxlY3RlZFJvd3MpCiAgICAgICAgICAgIGNoYW5nZUlucHV0KCdyb3dzX3NlbGVjdGVkJywgc2VsZWN0ZWRSb3dzKCksIHZvaWQgMCwgdHJ1ZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoZS5zZW5kZXIgIT09IGluc3RhbmNlLmN0c2VsZWN0SGFuZGxlICYmIGUudmFsdWUgJiYgZS52YWx1ZS5sZW5ndGgpIHsKICAgICAgICAgIHZhciBtYXRjaGVzID0ga2V5c1RvTWF0Y2hlcyhlLnZhbHVlKTsKCiAgICAgICAgICAvLyBwZXJzaXN0ZW50IHNlbGVjdGlvbiB3aXRoIHBsb3RseSAoJiBsZWFmbGV0KQogICAgICAgICAgdmFyIGN0T3B0cyA9IGNyb3NzdGFsay52YXIoInBsb3RseUNyb3NzdGFsa09wdHMiKS5nZXQoKSB8fCB7fTsKICAgICAgICAgIGlmIChjdE9wdHMucGVyc2lzdGVudCA9PT0gdHJ1ZSkgewogICAgICAgICAgICB2YXIgbWF0Y2hlcyA9ICQuZXh0ZW5kKG1hdGNoZXMsICR0YWJsZVswXS5jdHNlbGVjdCk7CiAgICAgICAgICB9CgogICAgICAgICAgJHRhYmxlWzBdLmN0c2VsZWN0ID0gbWF0Y2hlczsKICAgICAgICAgIHRhYmxlLmRyYXcoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKCR0YWJsZVswXS5jdHNlbGVjdCkgewogICAgICAgICAgICAkdGFibGVbMF0uY3RzZWxlY3QgPSBudWxsOwogICAgICAgICAgICB0YWJsZS5kcmF3KCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGluc3RhbmNlLmN0c2VsZWN0U3Vic2NyaXB0aW9uID0gaW5zdGFuY2UuY3RzZWxlY3RIYW5kbGUub24oImNoYW5nZSIsIGFwcGx5Q3Jvc3N0YWxrU2VsZWN0aW9uKTsKICAgICAgLy8gVE9ETzogVGhpcyBuZXh0IGxpbmUgZG9lc24ndCBzZWVtIHRvIHdvcmsgd2hlbiByZW5kZXJEYXRhVGFibGUgaXMgdXNlZAogICAgICBhcHBseUNyb3NzdGFsa1NlbGVjdGlvbih7dmFsdWU6IGluc3RhbmNlLmN0c2VsZWN0SGFuZGxlLnZhbHVlfSk7CiAgICB9CgogICAgdmFyIGluQXJyYXkgPSBmdW5jdGlvbih2YWwsIGFycmF5KSB7CiAgICAgIHJldHVybiAkLmluQXJyYXkodmFsLCAkLm1ha2VBcnJheShhcnJheSkpID4gLTE7CiAgICB9OwoKICAgIC8vIGVuY29kZSArIHRvICUyQiB3aGVuIHNlYXJjaGluZyBpbiB0aGUgdGFibGUgb24gc2VydmVyIHNpZGUsIGJlY2F1c2UKICAgIC8vIHNoaW55OjpwYXJzZVF1ZXJ5U3RyaW5nKCkgdHJlYXRzICsgYXMgc3BhY2VzLCBhbmQgRGF0YVRhYmxlcyBkb2VzIG5vdAogICAgLy8gZW5jb2RlICsgdG8gJTJCIChvciAlIHRvICUyNSkgd2hlbiBzZW5kaW5nIHRoZSByZXF1ZXN0CiAgICB2YXIgZW5jb2RlX3BsdXMgPSBmdW5jdGlvbih4KSB7CiAgICAgIHJldHVybiBzZXJ2ZXIgPyB4LnJlcGxhY2UoLyUvZywgJyUyNScpLnJlcGxhY2UoL1wrL2csICclMkInKSA6IHg7CiAgICB9OwoKICAgIC8vIHNlYXJjaCB0aGUgaS10aCBjb2x1bW4KICAgIHZhciBzZWFyY2hDb2x1bW4gPSBmdW5jdGlvbihpLCB2YWx1ZSkgewogICAgICB2YXIgcmVnZXggPSBmYWxzZSwgY2kgPSB0cnVlOwogICAgICBpZiAob3B0aW9ucy5zZWFyY2gpIHsKICAgICAgICByZWdleCA9IG9wdGlvbnMuc2VhcmNoLnJlZ2V4LAogICAgICAgIGNpID0gb3B0aW9ucy5zZWFyY2guY2FzZUluc2Vuc2l0aXZlICE9PSBmYWxzZTsKICAgICAgfQogICAgICByZXR1cm4gdGFibGUuY29sdW1uKGkpLnNlYXJjaChlbmNvZGVfcGx1cyh2YWx1ZSksIHJlZ2V4LCAhcmVnZXgsIGNpKTsKICAgIH07CgogICAgaWYgKGRhdGEuZmlsdGVyICE9PSAnbm9uZScpIHsKCiAgICAgIGZpbHRlclJvdy5lYWNoKGZ1bmN0aW9uKGksIHRkKSB7CgogICAgICAgIHZhciAkdGQgPSAkKHRkKSwgdHlwZSA9ICR0ZC5kYXRhKCd0eXBlJyksIGZpbHRlcjsKICAgICAgICB2YXIgJGlucHV0ID0gJHRkLmNoaWxkcmVuKCdkaXYnKS5maXJzdCgpLmNoaWxkcmVuKCdpbnB1dCcpOwogICAgICAgICRpbnB1dC5wcm9wKCdkaXNhYmxlZCcsICF0YWJsZS5zZXR0aW5ncygpWzBdLmFvQ29sdW1uc1tpXS5iU2VhcmNoYWJsZSB8fCB0eXBlID09PSAnZGlzYWJsZWQnKTsKICAgICAgICAkaW5wdXQub24oJ2lucHV0IGJsdXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICRpbnB1dC5uZXh0KCdzcGFuJykudG9nZ2xlKEJvb2xlYW4oJGlucHV0LnZhbCgpKSk7CiAgICAgICAgfSk7CiAgICAgICAgLy8gQm9vdHN0cmFwIHNldHMgcG9pbnRlci1ldmVudHMgdG8gbm9uZSBhbmQgd2Ugd29uJ3QgYmUgYWJsZSB0byBjbGljawogICAgICAgIC8vIHRoZSBjbGVhciBidXR0b24KICAgICAgICAkaW5wdXQubmV4dCgnc3BhbicpLmNzcygncG9pbnRlci1ldmVudHMnLCAnYXV0bycpLmhpZGUoKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICQodGhpcykuaGlkZSgpLnByZXYoJ2lucHV0JykudmFsKCcnKS50cmlnZ2VyKCdpbnB1dCcpLmZvY3VzKCk7CiAgICAgICAgfSk7CiAgICAgICAgdmFyIHNlYXJjaENvbDsgIC8vIHNlYXJjaCBzdHJpbmcgZm9yIHRoaXMgY29sdW1uCiAgICAgICAgaWYgKHNlYXJjaENvbHMgJiYgc2VhcmNoQ29sc1tpXSkgewogICAgICAgICAgc2VhcmNoQ29sID0gc2VhcmNoQ29sc1tpXTsKICAgICAgICAgICRpbnB1dC52YWwoc2VhcmNoQ29sKS50cmlnZ2VyKCdpbnB1dCcpOwogICAgICAgIH0KICAgICAgICB2YXIgJHggPSAkdGQuY2hpbGRyZW4oJ2RpdicpLmxhc3QoKTsKCiAgICAgICAgLy8gcmVtb3ZlIHRoZSBvdmVyZmxvdzogaGlkZGVuIGF0dHJpYnV0ZSBvZiB0aGUgc2Nyb2xsSGVhZAogICAgICAgIC8vIChvdGhlcndpc2UgdGhlIHNjcm9sbGluZyB0YWJsZSBib2R5IG9ic2N1cmVzIHRoZSBmaWx0ZXJzKQogICAgICAgIC8vIFRoZSB3b3JrYXJvdW5kIGFuZCB0aGUgZGlzY3Vzc2lvbiBmcm9tCiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3JzdHVkaW8vRFQvaXNzdWVzLzU1NCNpc3N1ZWNvbW1lbnQtNTE4MDA3MzQ3CiAgICAgICAgLy8gT3RoZXJ3aXNlIHRoZSBmaWx0ZXIgc2VsZWN0aW9uIHdpbGwgbm90IGJlIGFuY2hvcmVkIHRvIHRoZSB2YWx1ZXMKICAgICAgICAvLyB3aGVuIHRoZSBjb2x1bW5zIG51bWJlciBpcyBtYW55IGFuZCBzY3JvbGxYIGlzIGVuYWJsZWQuCiAgICAgICAgdmFyIHNjcm9sbEhlYWQgPSAkKGVsKS5maW5kKCcuZGF0YVRhYmxlc19zY3JvbGxIZWFkLC5kYXRhVGFibGVzX3Njcm9sbEZvb3QnKTsKICAgICAgICB2YXIgY3NzT3ZlcmZsb3dIZWFkID0gc2Nyb2xsSGVhZC5jc3MoJ292ZXJmbG93Jyk7CiAgICAgICAgdmFyIHNjcm9sbEJvZHkgPSAkKGVsKS5maW5kKCcuZGF0YVRhYmxlc19zY3JvbGxCb2R5Jyk7CiAgICAgICAgdmFyIGNzc092ZXJmbG93Qm9keSA9IHNjcm9sbEJvZHkuY3NzKCdvdmVyZmxvdycpOwogICAgICAgIHZhciBzY3JvbGxUYWJsZSA9ICQoZWwpLmZpbmQoJy5kYXRhVGFibGVzX3Njcm9sbCcpOwogICAgICAgIHZhciBjc3NPdmVyZmxvd1RhYmxlID0gc2Nyb2xsVGFibGUuY3NzKCdvdmVyZmxvdycpOwogICAgICAgIGlmIChjc3NPdmVyZmxvd0hlYWQgPT09ICdoaWRkZW4nKSB7CiAgICAgICAgICAkeC5vbignc2hvdyBoaWRlJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoZS50eXBlID09PSAnc2hvdycpIHsKICAgICAgICAgICAgICBzY3JvbGxIZWFkLmNzcygnb3ZlcmZsb3cnLCAndmlzaWJsZScpOwogICAgICAgICAgICAgIHNjcm9sbEJvZHkuY3NzKCdvdmVyZmxvdycsICd2aXNpYmxlJyk7CiAgICAgICAgICAgICAgc2Nyb2xsVGFibGUuY3NzKCdvdmVyZmxvdy14JywgJ3Njcm9sbCcpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHNjcm9sbEhlYWQuY3NzKCdvdmVyZmxvdycsIGNzc092ZXJmbG93SGVhZCk7CiAgICAgICAgICAgICAgc2Nyb2xsQm9keS5jc3MoJ292ZXJmbG93JywgY3NzT3ZlcmZsb3dCb2R5KTsKICAgICAgICAgICAgICBzY3JvbGxUYWJsZS5jc3MoJ292ZXJmbG93LXgnLCBjc3NPdmVyZmxvd1RhYmxlKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgICAkeC5jc3MoJ3otaW5kZXgnLCAyNSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaW5BcnJheSh0eXBlLCBbJ2ZhY3RvcicsICdsb2dpY2FsJ10pKSB7CiAgICAgICAgICAkaW5wdXQub24oewogICAgICAgICAgICBjbGljazogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgJGlucHV0LnBhcmVudCgpLmhpZGUoKTsgJHguc2hvdygpLnRyaWdnZXIoJ3Nob3cnKTsgZmlsdGVyWzBdLnNlbGVjdGl6ZS5mb2N1cygpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgaWYgKCRpbnB1dC52YWwoKSA9PT0gJycpIGZpbHRlclswXS5zZWxlY3RpemUuc2V0VmFsdWUoW10pOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIHZhciAkaW5wdXQyID0gJHguY2hpbGRyZW4oJ3NlbGVjdCcpOwogICAgICAgICAgZmlsdGVyID0gJGlucHV0Mi5zZWxlY3RpemUoewogICAgICAgICAgICBvcHRpb25zOiAkaW5wdXQyLmRhdGEoJ29wdGlvbnMnKS5tYXAoZnVuY3Rpb24odiwgaSkgewogICAgICAgICAgICAgIHJldHVybiAoe3RleHQ6IHYsIHZhbHVlOiB2fSk7CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBwbHVnaW5zOiBbJ3JlbW92ZV9idXR0b24nXSwKICAgICAgICAgICAgaGlkZVNlbGVjdGVkOiB0cnVlLAogICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24odmFsdWUpIHsKICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHZhbHVlID0gW107IC8vIGNvbXBhdGliaWxpdHkgd2l0aCBqUXVlcnkgMy4wCiAgICAgICAgICAgICAgJGlucHV0LnZhbCh2YWx1ZS5sZW5ndGggPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiAnJyk7CiAgICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCkgJGlucHV0LnRyaWdnZXIoJ2lucHV0Jyk7CiAgICAgICAgICAgICAgJGlucHV0LmF0dHIoJ3RpdGxlJywgJGlucHV0LnZhbCgpKTsKICAgICAgICAgICAgICBpZiAoc2VydmVyKSB7CiAgICAgICAgICAgICAgICB0YWJsZS5jb2x1bW4oaSkuc2VhcmNoKHZhbHVlLmxlbmd0aCA/IGVuY29kZV9wbHVzKEpTT04uc3RyaW5naWZ5KHZhbHVlKSkgOiAnJykuZHJhdygpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAvLyB0dXJuIG9mZiBmaWx0ZXIgaWYgbm90aGluZyBzZWxlY3RlZAogICAgICAgICAgICAgICR0ZC5kYXRhKCdmaWx0ZXInLCB2YWx1ZS5sZW5ndGggPiAwKTsKICAgICAgICAgICAgICB0YWJsZS5kcmF3KCk7ICAvLyByZWRyYXcgdGFibGUsIGFuZCBmaWx0ZXJzIHdpbGwgYmUgYXBwbGllZAogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIGlmIChzZWFyY2hDb2wpIGZpbHRlclswXS5zZWxlY3RpemUuc2V0VmFsdWUoSlNPTi5wYXJzZShzZWFyY2hDb2wpKTsKICAgICAgICAgIGZpbHRlclswXS5zZWxlY3RpemUub24oJ2JsdXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgJHguaGlkZSgpLnRyaWdnZXIoJ2hpZGUnKTsgJGlucHV0LnBhcmVudCgpLnNob3coKTsgJGlucHV0LnRyaWdnZXIoJ2JsdXInKTsKICAgICAgICAgIH0pOwogICAgICAgICAgZmlsdGVyLm5leHQoJ2RpdicpLmNzcygnbWFyZ2luLWJvdHRvbScsICdhdXRvJyk7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnY2hhcmFjdGVyJykgewogICAgICAgICAgdmFyIGZ1biA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBzZWFyY2hDb2x1bW4oaSwgJGlucHV0LnZhbCgpKS5kcmF3KCk7CiAgICAgICAgICB9OwogICAgICAgICAgaWYgKHNlcnZlcikgewogICAgICAgICAgICBmdW4gPSAkLmZuLmRhdGFUYWJsZS51dGlsLnRocm90dGxlKGZ1biwgb3B0aW9ucy5zZWFyY2hEZWxheSk7CiAgICAgICAgICB9CiAgICAgICAgICAkaW5wdXQub24oJ2lucHV0JywgZnVuKTsKICAgICAgICB9IGVsc2UgaWYgKGluQXJyYXkodHlwZSwgWydudW1iZXInLCAnaW50ZWdlcicsICdkYXRlJywgJ3RpbWUnXSkpIHsKICAgICAgICAgIHZhciAkeDAgPSAkeDsKICAgICAgICAgICR4ID0gJHgwLmNoaWxkcmVuKCdkaXYnKS5maXJzdCgpOwogICAgICAgICAgJHgwLmNzcyh7CiAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJyNmZmYnLAogICAgICAgICAgICAnYm9yZGVyJzogJzFweCAjZGRkIHNvbGlkJywKICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnNHB4JywKICAgICAgICAgICAgJ3BhZGRpbmcnOiBkYXRhLnZlcnRpY2FsID8gJzM1cHggMjBweCc6ICcyMHB4IDIwcHggMTBweCAyMHB4JwogICAgICAgICAgfSk7CiAgICAgICAgICB2YXIgJHNwYW5zID0gJHgwLmNoaWxkcmVuKCdzcGFuJykuY3NzKHsKICAgICAgICAgICAgJ21hcmdpbi10b3AnOiBkYXRhLnZlcnRpY2FsID8gJzAnIDogJzEwcHgnLAogICAgICAgICAgICAnd2hpdGUtc3BhY2UnOiAnbm93cmFwJwogICAgICAgICAgfSk7CiAgICAgICAgICB2YXIgJHNwYW4xID0gJHNwYW5zLmZpcnN0KCksICRzcGFuMiA9ICRzcGFucy5sYXN0KCk7CiAgICAgICAgICB2YXIgcjEgPSArJHguZGF0YSgnbWluJyksIHIyID0gKyR4LmRhdGEoJ21heCcpOwogICAgICAgICAgLy8gd2hlbiB0aGUgbnVtYmVycyBhcmUgdG9vIHNtYWxsIG9yIGhhdmUgbWFueSBkZWNpbWFsIHBsYWNlcywgdGhlCiAgICAgICAgICAvLyBzbGlkZXIgbWF5IGhhdmUgbnVtZXJpYyBwcmVjaXNpb24gcHJvYmxlbXMgKCMxNTApCiAgICAgICAgICB2YXIgc2NhbGUgPSBNYXRoLnBvdygxMCwgTWF0aC5tYXgoMCwgKyR4LmRhdGEoJ3NjYWxlJykgfHwgMCkpOwogICAgICAgICAgcjEgPSBNYXRoLnJvdW5kKHIxICogc2NhbGUpOyByMiA9IE1hdGgucm91bmQocjIgKiBzY2FsZSk7CiAgICAgICAgICB2YXIgc2NhbGVCYWNrID0gZnVuY3Rpb24oeCwgc2NhbGUpIHsKICAgICAgICAgICAgaWYgKHNjYWxlID09PSAxKSByZXR1cm4geDsKICAgICAgICAgICAgdmFyIGQgPSBNYXRoLnJvdW5kKE1hdGgubG9nKHNjYWxlKSAvIE1hdGgubG9nKDEwKSk7CiAgICAgICAgICAgIC8vIHRvIGF2b2lkIHByb2JsZW1zIGxpa2UgMy40MjMvMTAwIC0+IDAuMDM0MjMwMDAwMDAwMDAwMDAzCiAgICAgICAgICAgIHJldHVybiAoeCAvIHNjYWxlKS50b0ZpeGVkKGQpOwogICAgICAgICAgfTsKICAgICAgICAgIHZhciBzbGlkZXJfbWluID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBmaWx0ZXIubm9VaVNsaWRlcignb3B0aW9ucycpLnJhbmdlLm1pbjsKICAgICAgICAgIH07CiAgICAgICAgICB2YXIgc2xpZGVyX21heCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gZmlsdGVyLm5vVWlTbGlkZXIoJ29wdGlvbnMnKS5yYW5nZS5tYXg7CiAgICAgICAgICB9OwogICAgICAgICAgJGlucHV0Lm9uKHsKICAgICAgICAgICAgZm9jdXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICR4MC5zaG93KCkudHJpZ2dlcignc2hvdycpOwogICAgICAgICAgICAgIC8vIGZpcnN0LCBtYWtlIHN1cmUgdGhlIHNsaWRlciBkaXYgbGVhdmVzIGF0IGxlYXN0IDIwcHggYmV0d2VlbgogICAgICAgICAgICAgIC8vIHRoZSB0d28gKHNsaWRlciB2YWx1ZSkgc3BhbidzCiAgICAgICAgICAgICAgJHgwLndpZHRoKE1hdGgubWF4KDE2MCwgJHNwYW4xLm91dGVyV2lkdGgoKSArICRzcGFuMi5vdXRlcldpZHRoKCkgKyAyMCkpOwogICAgICAgICAgICAgIC8vIHRoZW4sIGlmIHRoZSBpbnB1dCBpcyByZWFsbHkgd2lkZSBvciBzbGlkZXIgaXMgdmVydGljYWwsCiAgICAgICAgICAgICAgLy8gbWFrZSB0aGUgc2xpZGVyIHRoZSBzYW1lIHdpZHRoIGFzIHRoZSBpbnB1dAogICAgICAgICAgICAgIGlmICgkeDAub3V0ZXJXaWR0aCgpIDwgJGlucHV0Lm91dGVyV2lkdGgoKSB8fCBkYXRhLnZlcnRpY2FsKSB7CiAgICAgICAgICAgICAgICAkeDAub3V0ZXJXaWR0aCgkaW5wdXQub3V0ZXJXaWR0aCgpKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZSBzbGlkZXIgZGl2IGRvZXMgbm90IHJlYWNoIGJleW9uZCB0aGUgcmlnaHQgbWFyZ2luCiAgICAgICAgICAgICAgaWYgKCQod2luZG93KS53aWR0aCgpIDwgJHgwLm9mZnNldCgpLmxlZnQgKyAkeDAud2lkdGgoKSkgewogICAgICAgICAgICAgICAgJHgwLm9mZnNldCh7CiAgICAgICAgICAgICAgICAgICdsZWZ0JzogJGlucHV0Lm9mZnNldCgpLmxlZnQgKyAkaW5wdXQub3V0ZXJXaWR0aCgpIC0gJHgwLm91dGVyV2lkdGgoKQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBibHVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAkeDAuaGlkZSgpLnRyaWdnZXIoJ2hpZGUnKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIGlmICgkaW5wdXQudmFsKCkgPT09ICcnKSBmaWx0ZXIudmFsKFtzbGlkZXJfbWluKCksIHNsaWRlcl9tYXgoKV0pOwogICAgICAgICAgICB9LAogICAgICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHZhciB2ID0gJGlucHV0LnZhbCgpLnJlcGxhY2UoL1xzL2csICcnKTsKICAgICAgICAgICAgICBpZiAodiA9PT0gJycpIHJldHVybjsKICAgICAgICAgICAgICB2ID0gdi5zcGxpdCgnLi4uJyk7CiAgICAgICAgICAgICAgaWYgKHYubGVuZ3RoICE9PSAyKSB7CiAgICAgICAgICAgICAgICAkaW5wdXQucGFyZW50KCkuYWRkQ2xhc3MoJ2hhcy1lcnJvcicpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAodlswXSA9PT0gJycpIHZbMF0gPSBzbGlkZXJfbWluKCk7CiAgICAgICAgICAgICAgaWYgKHZbMV0gPT09ICcnKSB2WzFdID0gc2xpZGVyX21heCgpOwogICAgICAgICAgICAgICRpbnB1dC5wYXJlbnQoKS5yZW1vdmVDbGFzcygnaGFzLWVycm9yJyk7CiAgICAgICAgICAgICAgLy8gdHJlYXQgZGF0ZSBhcyBVVEMgdGltZSBhdCBtaWRuaWdodAogICAgICAgICAgICAgIHZhciBzdHJUaW1lID0gZnVuY3Rpb24oeCkgewogICAgICAgICAgICAgICAgdmFyIHMgPSB0eXBlID09PSAnZGF0ZScgPyAnVDAwOjAwOjAwWicgOiAnJzsKICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IERhdGUoeCArIHMpLmdldFRpbWUoKTsKICAgICAgICAgICAgICAgIC8vIGFkZCAxMCBtaW51dGVzIHRvIGRhdGUgc2luY2UgaXQgZG9lcyBub3QgaHVydCB0aGUgZGF0ZSwgYW5kCiAgICAgICAgICAgICAgICAvLyBpdCBoZWxwcyBhdm9pZCB0aGUgdHJpY2t5IGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgcHJvYmxlbXMsCiAgICAgICAgICAgICAgICAvLyBlLmcuIHNvbWV0aW1lcyB0aGUgZGF0ZSBtYXkgYmUgYSBmZXcgbWlsbGlzZWNvbmRzIGVhcmxpZXIKICAgICAgICAgICAgICAgIC8vIHRoYW4gdGhlIG1pZG5pZ2h0IGR1ZSB0byBwcmVjaXNpb24gcHJvYmxlbXMgaW4gbm9VaVNsaWRlcgogICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUgPT09ICdkYXRlJyA/IHQgKyAzNjAwMDAwIDogdDsKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIGlmIChpbkFycmF5KHR5cGUsIFsnZGF0ZScsICd0aW1lJ10pKSB7CiAgICAgICAgICAgICAgICB2WzBdID0gc3RyVGltZSh2WzBdKTsKICAgICAgICAgICAgICAgIHZbMV0gPSBzdHJUaW1lKHZbMV0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAodlswXSAhPSBzbGlkZXJfbWluKCkpIHZbMF0gKj0gc2NhbGU7CiAgICAgICAgICAgICAgaWYgKHZbMV0gIT0gc2xpZGVyX21heCgpKSB2WzFdICo9IHNjYWxlOwogICAgICAgICAgICAgIGZpbHRlci52YWwodik7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgICAgdmFyIGZvcm1hdERhdGUgPSBmdW5jdGlvbihkLCBpc29GbXQpIHsKICAgICAgICAgICAgZCA9IHNjYWxlQmFjayhkLCBzY2FsZSk7CiAgICAgICAgICAgIGlmICh0eXBlID09PSAnbnVtYmVyJykgcmV0dXJuIGQ7CiAgICAgICAgICAgIGlmICh0eXBlID09PSAnaW50ZWdlcicpIHJldHVybiBwYXJzZUludChkKTsKICAgICAgICAgICAgdmFyIHggPSBuZXcgRGF0ZSgrZCk7CiAgICAgICAgICAgIHZhciBmbXQgPSAoJ2ZpbHRlckRhdGVGbXQnIGluIGRhdGEpID8gZGF0YS5maWx0ZXJEYXRlRm10W2ldIDogdW5kZWZpbmVkOwogICAgICAgICAgICBpZiAoZm10ICE9PSB1bmRlZmluZWQgJiYgaXNvRm10ID09PSBmYWxzZSkgcmV0dXJuIHhbZm10Lm1ldGhvZF0uYXBwbHkoeCwgZm10LnBhcmFtcyk7CiAgICAgICAgICAgIGlmICh0eXBlID09PSAnZGF0ZScpIHsKICAgICAgICAgICAgICB2YXIgcGFkMCA9IGZ1bmN0aW9uKHgpIHsKICAgICAgICAgICAgICAgIHJldHVybiAoJzAnICsgeCkuc3Vic3RyKC0yLCAyKTsKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIHJldHVybiB4LmdldFVUQ0Z1bGxZZWFyKCkgKyAnLScgKyBwYWQwKDEgKyB4LmdldFVUQ01vbnRoKCkpCiAgICAgICAgICAgICAgICAgICAgICArICctJyArIHBhZDAoeC5nZXRVVENEYXRlKCkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHJldHVybiB4LnRvSVNPU3RyaW5nKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH07CiAgICAgICAgICB2YXIgb3B0cyA9IHR5cGUgPT09ICdkYXRlJyA/IHsgc3RlcDogNjAgKiA2MCAqIDEwMDAgfSA6CiAgICAgICAgICAgICAgICAgICAgIHR5cGUgPT09ICdpbnRlZ2VyJyA/IHsgc3RlcDogMSB9IDoge307CgogICAgICAgICAgb3B0cy5vcmllbnRhdGlvbiA9IGRhdGEudmVydGljYWwgPyAndmVydGljYWwnOiAnaG9yaXpvbnRhbCc7CiAgICAgICAgICBvcHRzLmRpcmVjdGlvbiA9IGRhdGEudmVydGljYWwgPyAncnRsJzogJ2x0cic7CgogICAgICAgICAgZmlsdGVyID0gJHgubm9VaVNsaWRlcigkLmV4dGVuZCh7CiAgICAgICAgICAgIHN0YXJ0OiBbcjEsIHIyXSwKICAgICAgICAgICAgcmFuZ2U6IHttaW46IHIxLCBtYXg6IHIyfSwKICAgICAgICAgICAgY29ubmVjdDogdHJ1ZQogICAgICAgICAgfSwgb3B0cykpOwogICAgICAgICAgaWYgKHNjYWxlID4gMSkgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdDEgPSByMSwgdDIgPSByMjsKICAgICAgICAgICAgdmFyIHZhbCA9IGZpbHRlci52YWwoKTsKICAgICAgICAgICAgd2hpbGUgKHZhbFswXSA+IHIxIHx8IHZhbFsxXSA8IHIyKSB7CiAgICAgICAgICAgICAgaWYgKHZhbFswXSA+IHIxKSB7CiAgICAgICAgICAgICAgICB0MSAtPSB2YWxbMF0gLSByMTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKHZhbFsxXSA8IHIyKSB7CiAgICAgICAgICAgICAgICB0MiArPSByMiAtIHZhbFsxXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZmlsdGVyID0gJHgubm9VaVNsaWRlcigkLmV4dGVuZCh7CiAgICAgICAgICAgICAgICBzdGFydDogW3QxLCB0Ml0sCiAgICAgICAgICAgICAgICByYW5nZToge21pbjogdDEsIG1heDogdDJ9LAogICAgICAgICAgICAgICAgY29ubmVjdDogdHJ1ZQogICAgICAgICAgICAgIH0sIG9wdHMpLCB0cnVlKTsKICAgICAgICAgICAgICB2YWwgPSBmaWx0ZXIudmFsKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcjEgID0gdDE7IHIyID0gdDI7CiAgICAgICAgICB9KSgpOwogICAgICAgICAgdmFyIHVwZGF0ZVNsaWRlclRleHQgPSBmdW5jdGlvbih2MSwgdjIpIHsKICAgICAgICAgICAgJHNwYW4xLnRleHQoZm9ybWF0RGF0ZSh2MSwgZmFsc2UpKTsgJHNwYW4yLnRleHQoZm9ybWF0RGF0ZSh2MiwgZmFsc2UpKTsKICAgICAgICAgIH07CiAgICAgICAgICB1cGRhdGVTbGlkZXJUZXh0KHIxLCByMik7CiAgICAgICAgICB2YXIgdXBkYXRlU2xpZGVyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdmFsID0gZmlsdGVyLnZhbCgpOwogICAgICAgICAgICAvLyB0dXJuIG9mZiBmaWx0ZXIgaWYgaW4gZnVsbCByYW5nZQogICAgICAgICAgICAkdGQuZGF0YSgnZmlsdGVyJywgdmFsWzBdID4gc2xpZGVyX21pbigpIHx8IHZhbFsxXSA8IHNsaWRlcl9tYXgoKSk7CiAgICAgICAgICAgIHZhciB2MSA9IGZvcm1hdERhdGUodmFsWzBdKSwgdjIgPSBmb3JtYXREYXRlKHZhbFsxXSksIGl2YWw7CiAgICAgICAgICAgIGlmICgkdGQuZGF0YSgnZmlsdGVyJykpIHsKICAgICAgICAgICAgICBpdmFsID0gdjEgKyAnIC4uLiAnICsgdjI7CiAgICAgICAgICAgICAgJGlucHV0LmF0dHIoJ3RpdGxlJywgaXZhbCkudmFsKGl2YWwpLnRyaWdnZXIoJ2lucHV0Jyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgJGlucHV0LmF0dHIoJ3RpdGxlJywgJycpLnZhbCgnJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdXBkYXRlU2xpZGVyVGV4dCh2YWxbMF0sIHZhbFsxXSk7CiAgICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdzbGlkZScpIHJldHVybjsgIC8vIG5vIHNlYXJjaGluZyB3aGVuIHNsaWRpbmcgb25seQogICAgICAgICAgICBpZiAoc2VydmVyKSB7CiAgICAgICAgICAgICAgdGFibGUuY29sdW1uKGkpLnNlYXJjaCgkdGQuZGF0YSgnZmlsdGVyJykgPyBpdmFsIDogJycpLmRyYXcoKTsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGFibGUuZHJhdygpOwogICAgICAgICAgfTsKICAgICAgICAgIGZpbHRlci5vbih7CiAgICAgICAgICAgIHNldDogdXBkYXRlU2xpZGVyLAogICAgICAgICAgICBzbGlkZTogdXBkYXRlU2xpZGVyCiAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIC8vIHNlcnZlci1zaWRlIHByb2Nlc3Npbmcgd2lsbCBiZSBoYW5kbGVkIGJ5IFIgKG9yIHdoYXRldmVyIHNlcnZlcgogICAgICAgIC8vIGxhbmd1YWdlIHlvdSB1c2UpOyB0aGUgZm9sbG93aW5nIGNvZGUgaXMgb25seSBuZWVkZWQgZm9yIGNsaWVudC1zaWRlCiAgICAgICAgLy8gcHJvY2Vzc2luZwogICAgICAgIGlmIChzZXJ2ZXIpIHsKICAgICAgICAgIC8vIGlmIGEgc2VhcmNoIHN0cmluZyBoYXMgYmVlbiBwcmUtc2V0LCBzZWFyY2ggbm93CiAgICAgICAgICBpZiAoc2VhcmNoQ29sKSBzZWFyY2hDb2x1bW4oaSwgc2VhcmNoQ29sKS5kcmF3KCk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB2YXIgY3VzdG9tRmlsdGVyID0gZnVuY3Rpb24oc2V0dGluZ3MsIGRhdGEsIGRhdGFJbmRleCkgewogICAgICAgICAgLy8gdGhlcmUgaXMgbm8gd2F5IHRvIGF0dGFjaCBhIHNlYXJjaCBmdW5jdGlvbiB0byBhIHNwZWNpZmljIHRhYmxlLAogICAgICAgICAgLy8gYW5kIHdlIG5lZWQgdG8gbWFrZSBzdXJlIGEgZ2xvYmFsIHNlYXJjaCBmdW5jdGlvbiBpcyBub3QgYXBwbGllZCB0bwogICAgICAgICAgLy8gYWxsIHRhYmxlcyAoaS5lLiBhIHJhbmdlIGZpbHRlciBpbiBhIHByZXZpb3VzIHRhYmxlIHNob3VsZCBub3QgYmUKICAgICAgICAgIC8vIGFwcGxpZWQgdG8gdGhlIGN1cnJlbnQgdGFibGUpOyB3ZSB1c2UgdGhlIHNldHRpbmdzIG9iamVjdCB0bwogICAgICAgICAgLy8gZGV0ZXJtaW5lIGlmIHdlIHdhbnQgdG8gcGVyZm9ybSBzZWFyY2hpbmcgb24gdGhlIGN1cnJlbnQgdGFibGUsCiAgICAgICAgICAvLyBzaW5jZSBzZXR0aW5ncy5zVGFibGVJZCB3aWxsIGJlIGRpZmZlcmVudCB0byBkaWZmZXJlbnQgdGFibGVzCiAgICAgICAgICBpZiAodGFibGUuc2V0dGluZ3MoKVswXSAhPT0gc2V0dGluZ3MpIHJldHVybiB0cnVlOwogICAgICAgICAgLy8gbm8gZmlsdGVyIG9uIHRoaXMgY29sdW1uIG9yIG5vIG5lZWQgdG8gZmlsdGVyIHRoaXMgY29sdW1uCiAgICAgICAgICBpZiAodHlwZW9mIGZpbHRlciA9PT0gJ3VuZGVmaW5lZCcgfHwgISR0ZC5kYXRhKCdmaWx0ZXInKSkgcmV0dXJuIHRydWU7CgogICAgICAgICAgdmFyIHIgPSBmaWx0ZXIudmFsKCksIHYsIHIwLCByMTsKICAgICAgICAgIHZhciBpX2RhdGEgPSBmdW5jdGlvbihpKSB7CiAgICAgICAgICAgIGlmICghY29sUmVvcmRlckVuYWJsZWQoKSkgcmV0dXJuIGk7CiAgICAgICAgICAgIHZhciBvcmRlciA9IHRhYmxlLmNvbFJlb3JkZXIub3JkZXIoKSwgazsKICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IG9yZGVyLmxlbmd0aDsgKytrKSBpZiAob3JkZXJba10gPT09IGkpIHJldHVybiBrOwogICAgICAgICAgICByZXR1cm4gaTsgLy8gaW4gdGhlb3J5IGl0IHdpbGwgbmV2ZXIgYmUgaGVyZS4uLgogICAgICAgICAgfQogICAgICAgICAgdiA9IGRhdGFbaV9kYXRhKGkpXTsKICAgICAgICAgIGlmICh0eXBlID09PSAnbnVtYmVyJyB8fCB0eXBlID09PSAnaW50ZWdlcicpIHsKICAgICAgICAgICAgdiA9IHBhcnNlRmxvYXQodik7CiAgICAgICAgICAgIC8vIGhvdyB0byBoYW5kbGUgTmFOPyBjdXJyZW50bHkgZXhjbHVkZSB0aGVzZSByb3dzCiAgICAgICAgICAgIGlmIChpc05hTih2KSkgcmV0dXJuKGZhbHNlKTsKICAgICAgICAgICAgcjAgPSBwYXJzZUZsb2F0KHNjYWxlQmFjayhyWzBdLCBzY2FsZSkpCiAgICAgICAgICAgIHIxID0gcGFyc2VGbG9hdChzY2FsZUJhY2soclsxXSwgc2NhbGUpKTsKICAgICAgICAgICAgaWYgKHYgPj0gcjAgJiYgdiA8PSByMSkgcmV0dXJuIHRydWU7CiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRlJyB8fCB0eXBlID09PSAndGltZScpIHsKICAgICAgICAgICAgdiA9IG5ldyBEYXRlKHYpOwogICAgICAgICAgICByMCA9IG5ldyBEYXRlKHJbMF0gLyBzY2FsZSk7IHIxID0gbmV3IERhdGUoclsxXSAvIHNjYWxlKTsKICAgICAgICAgICAgaWYgKHYgPj0gcjAgJiYgdiA8PSByMSkgcmV0dXJuIHRydWU7CiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdmYWN0b3InKSB7CiAgICAgICAgICAgIGlmIChyLmxlbmd0aCA9PT0gMCB8fCBpbkFycmF5KHYsIHIpKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2xvZ2ljYWwnKSB7CiAgICAgICAgICAgIGlmIChyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIGlmIChpbkFycmF5KHYgPT09ICcnID8gJ25hJyA6IHYsIHIpKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9OwoKICAgICAgICAkLmZuLmRhdGFUYWJsZS5leHQuc2VhcmNoLnB1c2goY3VzdG9tRmlsdGVyKTsKCiAgICAgICAgLy8gc2VhcmNoIGZvciB0aGUgcHJlc2V0IHNlYXJjaCBzdHJpbmdzIGlmIGl0IGlzIG5vbi1lbXB0eQogICAgICAgIGlmIChzZWFyY2hDb2wpIHsKICAgICAgICAgIGlmIChpbkFycmF5KHR5cGUsIFsnZmFjdG9yJywgJ2xvZ2ljYWwnXSkpIHsKICAgICAgICAgICAgZmlsdGVyWzBdLnNlbGVjdGl6ZS5zZXRWYWx1ZShKU09OLnBhcnNlKHNlYXJjaENvbCkpOwogICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnY2hhcmFjdGVyJykgewogICAgICAgICAgICAkaW5wdXQudHJpZ2dlcignaW5wdXQnKTsKICAgICAgICAgIH0gZWxzZSBpZiAoaW5BcnJheSh0eXBlLCBbJ251bWJlcicsICdpbnRlZ2VyJywgJ2RhdGUnLCAndGltZSddKSkgewogICAgICAgICAgICAkaW5wdXQudHJpZ2dlcignY2hhbmdlJyk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgfSk7CgogICAgfQoKICAgIC8vIGhpZ2hsaWdodCBzZWFyY2gga2V5d29yZHMKICAgIHZhciBoaWdobGlnaHQgPSBmdW5jdGlvbigpIHsKICAgICAgdmFyIGJvZHkgPSAkKHRhYmxlLnRhYmxlKCkuYm9keSgpKTsKICAgICAgLy8gcmVtb3ZpbmcgdGhlIG9sZCBoaWdobGlnaHRpbmcgZmlyc3QKICAgICAgYm9keS51bmhpZ2hsaWdodCgpOwoKICAgICAgLy8gZG9uJ3QgaGlnaGxpZ2h0IHRoZSAibm90IGZvdW5kIiByb3csIHNvIHdlIGdldCB0aGUgcm93cyB1c2luZyB0aGUgYXBpCiAgICAgIGlmICh0YWJsZS5yb3dzKHsgZmlsdGVyOiAnYXBwbGllZCcgfSkuZGF0YSgpLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwogICAgICAvLyBoaWdobGlnaHQgZ2xvYmFsIHNlYXJjaCBrZXl3b3JkcwogICAgICBib2R5LmhpZ2hsaWdodCgkLnRyaW0odGFibGUuc2VhcmNoKCkpLnNwbGl0KC9ccysvKSk7CiAgICAgIC8vIHRoZW4gaGlnaGxpZ2h0IGtleXdvcmRzIGZyb20gaW5kaXZpZHVhbCBjb2x1bW4gZmlsdGVycwogICAgICBpZiAoZmlsdGVyUm93KSBmaWx0ZXJSb3cuZWFjaChmdW5jdGlvbihpLCB0ZCkgewogICAgICAgIHZhciAkdGQgPSAkKHRkKSwgdHlwZSA9ICR0ZC5kYXRhKCd0eXBlJyk7CiAgICAgICAgaWYgKHR5cGUgIT09ICdjaGFyYWN0ZXInKSByZXR1cm47CiAgICAgICAgdmFyICRpbnB1dCA9ICR0ZC5jaGlsZHJlbignZGl2JykuZmlyc3QoKS5jaGlsZHJlbignaW5wdXQnKTsKICAgICAgICB2YXIgY29sdW1uID0gdGFibGUuY29sdW1uKGkpLm5vZGVzKCkudG8kKCksCiAgICAgICAgICAgIHZhbCA9ICQudHJpbSgkaW5wdXQudmFsKCkpOwogICAgICAgIGlmICh0eXBlICE9PSAnY2hhcmFjdGVyJyB8fCB2YWwgPT09ICcnKSByZXR1cm47CiAgICAgICAgY29sdW1uLmhpZ2hsaWdodCh2YWwuc3BsaXQoL1xzKy8pKTsKICAgICAgfSk7CiAgICB9OwoKICAgIGlmIChvcHRpb25zLnNlYXJjaEhpZ2hsaWdodCkgewogICAgICB0YWJsZQogICAgICAub24oJ2RyYXcuZHQuZHRoIGNvbHVtbi12aXNpYmlsaXR5LmR0LmR0aCBjb2x1bW4tcmVvcmRlci5kdC5kdGgnLCBoaWdobGlnaHQpCiAgICAgIC5vbignZGVzdHJveScsIGZ1bmN0aW9uKCkgewogICAgICAgIC8vIHJlbW92ZSBldmVudCBoYW5kbGVyCiAgICAgICAgdGFibGUub2ZmKCdkcmF3LmR0LmR0aCBjb2x1bW4tdmlzaWJpbGl0eS5kdC5kdGggY29sdW1uLXJlb3JkZXIuZHQuZHRoJyk7CiAgICAgIH0pOwoKICAgICAgLy8gU2V0IHRoZSBvcHRpb24gZm9yIGVzY2FwaW5nIHJlZ2V4IGNoYXJhY3RlcnMgaW4gb3VyIHNlYXJjaCBzdHJpbmcuICBUaGlzIHdpbGwgYmUgdXNlZAogICAgICAvLyBmb3IgYWxsIGZ1dHVyZSBtYXRjaGluZy4KICAgICAgalF1ZXJ5LmZuLmhpZ2hsaWdodC5vcHRpb25zLmVzY2FwZVJlZ2V4ID0gKCFvcHRpb25zLnNlYXJjaCB8fCAhb3B0aW9ucy5zZWFyY2gucmVnZXgpOwoKICAgICAgLy8gaW5pdGlhbCBoaWdobGlnaHQgZm9yIHN0YXRlIHNhdmVkIGNvbmRpdGlvbnMgYW5kIGluaXRpYWwgc3RhdGVzCiAgICAgIGhpZ2hsaWdodCgpOwogICAgfQoKICAgIC8vIHJ1biB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gb24gdGhlIHRhYmxlIGluc3RhbmNlCiAgICBpZiAodHlwZW9mIGRhdGEuY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIGRhdGEuY2FsbGJhY2sodGFibGUpOwoKICAgIC8vIGRvdWJsZSBjbGljayB0byBlZGl0IHRoZSBjZWxsLCByb3csIGNvbHVtbiwgb3IgYWxsIGNlbGxzCiAgICBpZiAoZGF0YS5lZGl0YWJsZSkgdGFibGUub24oJ2RibGNsaWNrLmR0JywgJ3Rib2R5IHRkJywgZnVuY3Rpb24oZSkgewogICAgICAvLyBvbmx5IGJyaW5nIHVwIHRoZSBlZGl0b3Igd2hlbiB0aGUgY2VsbCBpdHNlbGYgaXMgZGJjbGlja2VkLCBhbmQgaWdub3JlCiAgICAgIC8vIG90aGVyIGRiY2xpY2sgZXZlbnRzIGJ1YmJsZWQgdXAgKGUuZy4gZnJvbSB0aGUgPGlucHV0PikKICAgICAgaWYgKGUudGFyZ2V0ICE9PSB0aGlzKSByZXR1cm47CiAgICAgIHZhciB0YXJnZXQgPSBbXSwgaW1tZWRpYXRlID0gZmFsc2U7CiAgICAgIHN3aXRjaCAoZGF0YS5lZGl0YWJsZS50YXJnZXQpIHsKICAgICAgICBjYXNlICdjZWxsJzoKICAgICAgICAgIHRhcmdldCA9IFt0aGlzXTsKICAgICAgICAgIGltbWVkaWF0ZSA9IHRydWU7ICAvLyBlZGl0IHdpbGwgdGFrZSBlZmZlY3QgaW1tZWRpYXRlbHkKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ3Jvdyc6CiAgICAgICAgICB0YXJnZXQgPSB0YWJsZS5jZWxscyh0YWJsZS5jZWxsKHRoaXMpLmluZGV4KCkucm93LCAnKicpLm5vZGVzKCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdjb2x1bW4nOgogICAgICAgICAgdGFyZ2V0ID0gdGFibGUuY2VsbHMoJyonLCB0YWJsZS5jZWxsKHRoaXMpLmluZGV4KCkuY29sdW1uKS5ub2RlcygpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnYWxsJzoKICAgICAgICAgIHRhcmdldCA9IHRhYmxlLmNlbGxzKCkubm9kZXMoKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICB0aHJvdyAnVGhlIGVkaXRhYmxlIHBhcmFtZXRlciBtdXN0IGJlICJjZWxsIiwgInJvdyIsICJjb2x1bW4iLCBvciAiYWxsIic7CiAgICAgIH0KICAgICAgdmFyIGRpc2FibGVDb2xzID0gZGF0YS5lZGl0YWJsZS5kaXNhYmxlID8gZGF0YS5lZGl0YWJsZS5kaXNhYmxlLmNvbHVtbnMgOiBudWxsOwogICAgICB2YXIgbnVtZXJpY0NvbHMgPSBkYXRhLmVkaXRhYmxlLm51bWVyaWM7CiAgICAgIHZhciBhcmVhQ29scyA9IGRhdGEuZWRpdGFibGUuYXJlYTsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0YXJnZXQubGVuZ3RoOyBpKyspIHsKICAgICAgICAoZnVuY3Rpb24oY2VsbCwgY3VycmVudCkgewogICAgICAgICAgdmFyICRjZWxsID0gJChjZWxsKSwgaHRtbCA9ICRjZWxsLmh0bWwoKTsKICAgICAgICAgIHZhciBfY2VsbCA9IHRhYmxlLmNlbGwoY2VsbCksIHZhbHVlID0gX2NlbGwuZGF0YSgpLCBpbmRleCA9IF9jZWxsLmluZGV4KCkuY29sdW1uOwogICAgICAgICAgdmFyICRpbnB1dDsKICAgICAgICAgIGlmIChpbkFycmF5KGluZGV4LCBudW1lcmljQ29scykpIHsKICAgICAgICAgICAgJGlucHV0ID0gJCgnPGlucHV0IHR5cGU9Im51bWJlciI+Jyk7CiAgICAgICAgICB9IGVsc2UgaWYgKGluQXJyYXkoaW5kZXgsIGFyZWFDb2xzKSkgewogICAgICAgICAgICAkaW5wdXQgPSAkKCc8dGV4dGFyZWE+PC90ZXh0YXJlYT4nKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRpbnB1dCA9ICQoJzxpbnB1dCB0eXBlPSJ0ZXh0Ij4nKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICghaW1tZWRpYXRlKSB7CiAgICAgICAgICAgICRjZWxsLmRhdGEoJ2lucHV0JywgJGlucHV0KS5kYXRhKCdodG1sJywgaHRtbCk7CiAgICAgICAgICAgICRpbnB1dC5hdHRyKCd0aXRsZScsICdIaXQgQ3RybCtFbnRlciB0byBmaW5pc2ggZWRpdGluZywgb3IgRXNjIHRvIGNhbmNlbCcpOwogICAgICAgICAgfQogICAgICAgICAgJGlucHV0LnZhbCh2YWx1ZSk7CiAgICAgICAgICBpZiAoaW5BcnJheShpbmRleCwgZGlzYWJsZUNvbHMpKSB7CiAgICAgICAgICAgICRpbnB1dC5hdHRyKCdyZWFkb25seScsICcnKS5jc3MoJ2ZpbHRlcicsICdpbnZlcnQoMjUlKScpOwogICAgICAgICAgfQogICAgICAgICAgJGNlbGwuZW1wdHkoKS5hcHBlbmQoJGlucHV0KTsKICAgICAgICAgIGlmIChjZWxsID09PSBjdXJyZW50KSAkaW5wdXQuZm9jdXMoKTsKICAgICAgICAgICRpbnB1dC5jc3MoJ3dpZHRoJywgJzEwMCUnKTsKCiAgICAgICAgICBpZiAoaW1tZWRpYXRlKSAkaW5wdXQub24oJ2JsdXInLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB2YWx1ZU5ldyA9ICRpbnB1dC52YWwoKTsKICAgICAgICAgICAgaWYgKHZhbHVlTmV3ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICAgX2NlbGwuZGF0YSh2YWx1ZU5ldyk7CiAgICAgICAgICAgICAgaWYgKEhUTUxXaWRnZXRzLnNoaW55TW9kZSkgewogICAgICAgICAgICAgICAgY2hhbmdlSW5wdXQoJ2NlbGxfZWRpdCcsIFtjZWxsSW5mbyhjZWxsKV0sICdEVC5jZWxsSW5mbycsIG51bGwsIHtwcmlvcml0eTogJ2V2ZW50J30pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAvLyBmb3Igc2VydmVyLXNpZGUgcHJvY2Vzc2luZywgdXNlcnMgaGF2ZSB0byBjYWxsIHJlcGxhY2VEYXRhKCkgdG8gdXBkYXRlIHRoZSB0YWJsZQogICAgICAgICAgICAgIGlmICghc2VydmVyKSB0YWJsZS5kcmF3KGZhbHNlKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAkY2VsbC5odG1sKGh0bWwpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KS5vbigna2V5dXAnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIC8vIGhpdCBFc2NhcGUgdG8gY2FuY2VsIGVkaXRpbmcKICAgICAgICAgICAgaWYgKGUua2V5Q29kZSA9PT0gMjcpICRpbnB1dC50cmlnZ2VyKCdibHVyJyk7CiAgICAgICAgICB9KTsKCiAgICAgICAgICAvLyBidWxrIGVkaXQgKHJvdywgY29sdW1uLCBvciBhbGwpCiAgICAgICAgICBpZiAoIWltbWVkaWF0ZSkgJGlucHV0Lm9uKCdrZXl1cCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHJlbW92ZUlucHV0ID0gZnVuY3Rpb24oJGNlbGwsIHJlc3RvcmUpIHsKICAgICAgICAgICAgICAkY2VsbC5kYXRhKCdpbnB1dCcpLnJlbW92ZSgpOwogICAgICAgICAgICAgIGlmIChyZXN0b3JlKSAkY2VsbC5odG1sKCRjZWxsLmRhdGEoJ2h0bWwnKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGUua2V5Q29kZSA9PT0gMjcpIHsKICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRhcmdldC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgcmVtb3ZlSW5wdXQoJCh0YXJnZXRbaV0pLCB0cnVlKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5rZXlDb2RlID09PSAxMyAmJiBlLmN0cmxLZXkpIHsKICAgICAgICAgICAgICAvLyBDdHJsICsgRW50ZXIKICAgICAgICAgICAgICB2YXIgY2VsbCwgJGNlbGwsIF9jZWxsLCBjZWxsRGF0YSA9IFtdOwogICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGFyZ2V0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBjZWxsID0gdGFyZ2V0W2ldOyAkY2VsbCA9ICQoY2VsbCk7IF9jZWxsID0gdGFibGUuY2VsbChjZWxsKTsKICAgICAgICAgICAgICAgIF9jZWxsLmRhdGEoJGNlbGwuZGF0YSgnaW5wdXQnKS52YWwoKSk7CiAgICAgICAgICAgICAgICBIVE1MV2lkZ2V0cy5zaGlueU1vZGUgJiYgY2VsbERhdGEucHVzaChjZWxsSW5mbyhjZWxsKSk7CiAgICAgICAgICAgICAgICByZW1vdmVJbnB1dCgkY2VsbCwgZmFsc2UpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoSFRNTFdpZGdldHMuc2hpbnlNb2RlKSB7CiAgICAgICAgICAgICAgICBjaGFuZ2VJbnB1dCgnY2VsbF9lZGl0JywgY2VsbERhdGEsICdEVC5jZWxsSW5mbycsIG51bGwsIHtwcmlvcml0eTogImV2ZW50In0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoIXNlcnZlcikgdGFibGUuZHJhdyhmYWxzZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0pKHRhcmdldFtpXSwgdGhpcyk7CiAgICAgIH0KICAgIH0pOwoKICAgIC8vIGludGVyYWN0aW9uIHdpdGggc2hpbnkKICAgIGlmICghSFRNTFdpZGdldHMuc2hpbnlNb2RlICYmICFjcm9zc3RhbGtPcHRpb25zLmdyb3VwKSByZXR1cm47CgogICAgdmFyIG1ldGhvZHMgPSB7fTsKICAgIHZhciBzaGlueURhdGEgPSB7fTsKCiAgICBtZXRob2RzLnVwZGF0ZUNhcHRpb24gPSBmdW5jdGlvbihjYXB0aW9uKSB7CiAgICAgIGlmICghY2FwdGlvbikgcmV0dXJuOwogICAgICAkdGFibGUuY2hpbGRyZW4oJ2NhcHRpb24nKS5yZXBsYWNlV2l0aChjYXB0aW9uKTsKICAgIH0KCiAgICAvLyByZWdpc3RlciBjbGVhciBmdW5jdGlvbnMgdG8gcmVtb3ZlIGlucHV0IHZhbHVlcyB3aGVuIHRoZSB0YWJsZSBpcyByZW1vdmVkCiAgICBpbnN0YW5jZS5jbGVhcklucHV0cyA9IHt9OwoKICAgIHZhciBjaGFuZ2VJbnB1dCA9IGZ1bmN0aW9uKGlkLCB2YWx1ZSwgdHlwZSwgbm9Dcm9zc3RhbGssIG9wdHMpIHsKICAgICAgdmFyIGV2ZW50ID0gaWQ7CiAgICAgIGlkID0gZWwuaWQgKyAnXycgKyBpZDsKICAgICAgaWYgKHR5cGUpIGlkID0gaWQgKyAnOicgKyB0eXBlOwogICAgICAvLyBkbyBub3QgdXBkYXRlIGlmIHRoZSBuZXcgdmFsdWUgaXMgdGhlIHNhbWUgYXMgb2xkIHZhbHVlCiAgICAgIGlmIChldmVudCAhPT0gJ2NlbGxfZWRpdCcgJiYgIS9fY2xpY2tlZCQvLnRlc3QoZXZlbnQpICYmIHNoaW55RGF0YS5oYXNPd25Qcm9wZXJ0eShpZCkgJiYgc2hpbnlEYXRhW2lkXSA9PT0gSlNPTi5zdHJpbmdpZnkodmFsdWUpKQogICAgICAgIHJldHVybjsKICAgICAgc2hpbnlEYXRhW2lkXSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTsKICAgICAgaWYgKEhUTUxXaWRnZXRzLnNoaW55TW9kZSAmJiBTaGlueS5zZXRJbnB1dFZhbHVlKSB7CiAgICAgICAgU2hpbnkuc2V0SW5wdXRWYWx1ZShpZCwgdmFsdWUsIG9wdHMpOwogICAgICAgIGlmICghaW5zdGFuY2UuY2xlYXJJbnB1dHNbaWRdKSBpbnN0YW5jZS5jbGVhcklucHV0c1tpZF0gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIFNoaW55LnNldElucHV0VmFsdWUoaWQsIG51bGwpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gSEFDSwogICAgICBpZiAoZXZlbnQgPT09ICJyb3dzX3NlbGVjdGVkIiAmJiAhbm9Dcm9zc3RhbGspIHsKICAgICAgICBpZiAoY3Jvc3N0YWxrT3B0aW9ucy5ncm91cCkgewogICAgICAgICAgdmFyIGtleXMgPSBjcm9zc3RhbGtPcHRpb25zLmtleTsKICAgICAgICAgIHZhciBzZWxlY3RlZEtleXMgPSBudWxsOwogICAgICAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgICAgIHNlbGVjdGVkS2V5cyA9IFtdOwogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgLy8gVGhlIHZhbHVlIGFycmF5J3MgY29udGVudHMgdXNlIDEtYmFzZWQgcm93IG51bWJlcnMsIHNvIHdlIG11c3QKICAgICAgICAgICAgICAvLyBjb252ZXJ0IHRvIDAtYmFzZWQgYmVmb3JlIGluZGV4aW5nIGludG8gdGhlIGtleXMgYXJyYXkuCiAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzLnB1c2goa2V5c1t2YWx1ZVtpXSAtIDFdKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaW5zdGFuY2UuY3RzZWxlY3RIYW5kbGUuc2V0KHNlbGVjdGVkS2V5cyk7CiAgICAgICAgfQogICAgICB9CiAgICB9OwoKICAgIHZhciBhZGRPbmUgPSBmdW5jdGlvbih4KSB7CiAgICAgIHJldHVybiB4Lm1hcChmdW5jdGlvbihpKSB7IHJldHVybiAxICsgaTsgfSk7CiAgICB9OwoKICAgIHZhciB1bmlxdWUgPSBmdW5jdGlvbih4KSB7CiAgICAgIHZhciB1eCA9IFtdOwogICAgICAkLmVhY2goeCwgZnVuY3Rpb24oaSwgZWwpewogICAgICAgIGlmICgkLmluQXJyYXkoZWwsIHV4KSA9PT0gLTEpIHV4LnB1c2goZWwpOwogICAgICB9KTsKICAgICAgcmV0dXJuIHV4OwogICAgfQoKICAgIC8vIGNoYW5nZSB0aGUgcm93IGluZGV4IG9mIGEgY2VsbAogICAgdmFyIHR3ZWFrQ2VsbEluZGV4ID0gZnVuY3Rpb24oY2VsbCkgewogICAgICB2YXIgaW5mbyA9IGNlbGwuaW5kZXgoKTsKICAgICAgLy8gc29tZSBjZWxsIG1heSBub3QgYmUgdmFsaWQuIGUuZywgIzc1OQogICAgICAvLyB3aGVuIHVzaW5nIHRoZSBSb3dHcm91cCBleHRlbnNpb24sIGRhdGF0YWJsZXMgd2lsbAogICAgICAvLyBnZW5lcmF0ZSB0aGUgcm93IGxhYmVsIGFuZCB0aGUgY2VsbHMgYXJlIG5vdCBwYXJ0IG9mCiAgICAgIC8vIHRoZSBkYXRhIHRodXMgY29udGFpbiBubyByb3cvY29sIGluZm8KICAgICAgaWYgKGluZm8gPT09IHVuZGVmaW5lZCkKICAgICAgICByZXR1cm4ge3JvdzogbnVsbCwgY29sOiBudWxsfTsKICAgICAgaWYgKHNlcnZlcikgewogICAgICAgIGluZm8ucm93ID0gRFRfcm93c19jdXJyZW50W2luZm8ucm93XTsKICAgICAgfSBlbHNlIHsKICAgICAgICBpbmZvLnJvdyArPSAxOwogICAgICB9CiAgICAgIHJldHVybiB7cm93OiBpbmZvLnJvdywgY29sOiBpbmZvLmNvbHVtbn07CiAgICB9CgogICAgdmFyIGNsZWFuU2VsZWN0ZWRWYWx1ZXMgPSBmdW5jdGlvbigpIHsKICAgICAgY2hhbmdlSW5wdXQoJ3Jvd3Nfc2VsZWN0ZWQnLCBbXSk7CiAgICAgIGNoYW5nZUlucHV0KCdjb2x1bW5zX3NlbGVjdGVkJywgW10pOwogICAgICBjaGFuZ2VJbnB1dCgnY2VsbHNfc2VsZWN0ZWQnLCB0cmFuc3Bvc2VBcnJheTJEKFtdKSwgJ3NoaW55Lm1hdHJpeCcpOwogICAgfQogICAgLy8gIzgyOCB3ZSBzaG91bGQgY2xlYW4gdGhlIHNlbGVjdGlvbiBvbiB0aGUgc2VydmVyLXNpZGUgd2hlbiB0aGUgdGFibGUgcmVsb2FkcwogICAgY2xlYW5TZWxlY3RlZFZhbHVlcygpOwoKICAgIC8vIGEgZmxhZyB0byBpbmRpY2F0ZXMgaWYgc2VsZWN0IGV4dGVuc2lvbiBpcyBpbml0aWFsaXplZCBvciBub3QKICAgIHZhciBmbGFnU2VsZWN0RXh0ID0gdGFibGUuc2V0dGluZ3MoKVswXS5fc2VsZWN0ICE9PSB1bmRlZmluZWQ7CiAgICAvLyB0aGUgU2VsZWN0IGV4dGVuc2lvbiBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoZSBjbGllbnQgbW9kZSBhbmQKICAgIC8vIHdoZW4gdGhlIHNlbGVjdGlvbi5tb2RlIGlzIHNldCB0byBub25lCiAgICBpZiAoZGF0YS5zZWxlY3Rpb24ubW9kZSA9PT0gJ25vbmUnICYmICFzZXJ2ZXIgJiYgZmxhZ1NlbGVjdEV4dCkgewogICAgICB2YXIgdXBkYXRlUm93c1NlbGVjdGVkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIHJvd3MgPSB0YWJsZS5yb3dzKHtzZWxlY3RlZDogdHJ1ZX0pOwogICAgICAgIHZhciBzZWxlY3RlZCA9IFtdOwogICAgICAgICQuZWFjaChyb3dzLmluZGV4ZXMoKS50b0FycmF5KCksIGZ1bmN0aW9uKGksIHYpIHsKICAgICAgICAgIHNlbGVjdGVkLnB1c2godiArIDEpOwogICAgICAgIH0pOwogICAgICAgIGNoYW5nZUlucHV0KCdyb3dzX3NlbGVjdGVkJywgc2VsZWN0ZWQpOwogICAgICB9CiAgICAgIHZhciB1cGRhdGVDb2xzU2VsZWN0ZWQgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgY29sdW1ucyA9IHRhYmxlLmNvbHVtbnMoe3NlbGVjdGVkOiB0cnVlfSk7CiAgICAgICAgY2hhbmdlSW5wdXQoJ2NvbHVtbnNfc2VsZWN0ZWQnLCBjb2x1bW5zLmluZGV4ZXMoKS50b0FycmF5KCkpOwogICAgICB9CiAgICAgIHZhciB1cGRhdGVDZWxsc1NlbGVjdGVkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGNlbGxzID0gdGFibGUuY2VsbHMoe3NlbGVjdGVkOiB0cnVlfSk7CiAgICAgICAgdmFyIHNlbGVjdGVkID0gW107CiAgICAgICAgY2VsbHMuZXZlcnkoZnVuY3Rpb24oKSB7CiAgICAgICAgICB2YXIgcm93ID0gdGhpcy5pbmRleCgpLnJvdzsKICAgICAgICAgIHZhciBjb2wgPSB0aGlzLmluZGV4KCkuY29sdW1uOwogICAgICAgICAgc2VsZWN0ZWQgPSBzZWxlY3RlZC5jb25jYXQoW1tyb3cgKyAxLCBjb2xdXSk7CiAgICAgICAgfSk7CiAgICAgICAgY2hhbmdlSW5wdXQoJ2NlbGxzX3NlbGVjdGVkJywgdHJhbnNwb3NlQXJyYXkyRChzZWxlY3RlZCksICdzaGlueS5tYXRyaXgnKTsKICAgICAgfQogICAgICB0YWJsZS5vbignc2VsZWN0IGRlc2VsZWN0JywgZnVuY3Rpb24oZSwgZHQsIHR5cGUsIGluZGV4ZXMpIHsKICAgICAgICB1cGRhdGVSb3dzU2VsZWN0ZWQoKTsKICAgICAgICB1cGRhdGVDb2xzU2VsZWN0ZWQoKTsKICAgICAgICB1cGRhdGVDZWxsc1NlbGVjdGVkKCk7CiAgICAgIH0pCiAgICB9CgogICAgdmFyIHNlbE1vZGUgPSBkYXRhLnNlbGVjdGlvbi5tb2RlLCBzZWxUYXJnZXQgPSBkYXRhLnNlbGVjdGlvbi50YXJnZXQ7CiAgICB2YXIgc2VsRGlzYWJsZSA9IGRhdGEuc2VsZWN0aW9uLnNlbGVjdGFibGUgPT09IGZhbHNlOwogICAgaWYgKGluQXJyYXkoc2VsTW9kZSwgWydzaW5nbGUnLCAnbXVsdGlwbGUnXSkpIHsKICAgICAgdmFyIHNlbENsYXNzID0gaW5BcnJheShkYXRhLnN0eWxlLCBbJ2Jvb3RzdHJhcCcsICdib290c3RyYXA0J10pID8gJ2FjdGl2ZScgOiAnc2VsZWN0ZWQnOwogICAgICAvLyBzZWxlY3RlZDE6IHJvdyBpbmRpY2VzOyBzZWxlY3RlZDI6IGNvbHVtbiBpbmRpY2VzCiAgICAgIHZhciBpbml0U2VsID0gZnVuY3Rpb24oeCkgewogICAgICAgIGlmICh4ID09PSBudWxsIHx8IHR5cGVvZiB4ID09PSAnYm9vbGVhbicgfHwgc2VsVGFyZ2V0ID09PSAnY2VsbCcpIHsKICAgICAgICAgIHJldHVybiB7cm93czogW10sIGNvbHM6IFtdfTsKICAgICAgICB9IGVsc2UgaWYgKHNlbFRhcmdldCA9PT0gJ3JvdycpIHsKICAgICAgICAgIHJldHVybiB7cm93czogJC5tYWtlQXJyYXkoeCksIGNvbHM6IFtdfTsKICAgICAgICB9IGVsc2UgaWYgKHNlbFRhcmdldCA9PT0gJ2NvbHVtbicpIHsKICAgICAgICAgIHJldHVybiB7cm93czogW10sIGNvbHM6ICQubWFrZUFycmF5KHgpfTsKICAgICAgICB9IGVsc2UgaWYgKHNlbFRhcmdldCA9PT0gJ3Jvdytjb2x1bW4nKSB7CiAgICAgICAgICByZXR1cm4ge3Jvd3M6ICQubWFrZUFycmF5KHgucm93cyksIGNvbHM6ICQubWFrZUFycmF5KHguY29scyl9OwogICAgICAgIH0KICAgICAgfQogICAgICB2YXIgc2VsZWN0ZWQgPSBkYXRhLnNlbGVjdGlvbi5zZWxlY3RlZDsKICAgICAgdmFyIHNlbGVjdGVkMSA9IGluaXRTZWwoc2VsZWN0ZWQpLnJvd3MsIHNlbGVjdGVkMiA9IGluaXRTZWwoc2VsZWN0ZWQpLmNvbHM7CiAgICAgIC8vIHNlbGVjdGFibGUgc2hvdWxkIGNvbnRhaW4gZWl0aGVyIGFsbCBwb3NpdGl2ZSBvciBhbGwgbm9uLXBvc2l0aXZlIHZhbHVlcywgbm90IGJvdGgKICAgICAgLy8gcG9zaXRpdmUgdmFsdWVzIGluZGljYXRlICJzZWxlY3RhYmxlIiB3aGlsZSBub24tcG9zaXRpdmUgdmFsdWVzIG1lYW5zICJub25zZWxlY3RhYmxlIgogICAgICAvLyB0aGUgYXNzZXJ0aW9uIGlzIHBlcmZvcm1lZCBvbiBSIHNpZGUuIChvbmx5IGNvbHVtbiBpbmRpY2lkZXMgY291bGQgYmUgemVybyB3aGljaCBpbmRpY2F0ZXMKICAgICAgLy8gdGhlIHJvdyBuYW1lKQogICAgICB2YXIgc2VsZWN0YWJsZSA9IGRhdGEuc2VsZWN0aW9uLnNlbGVjdGFibGU7CiAgICAgIHZhciBzZWxlY3RhYmxlMSA9IGluaXRTZWwoc2VsZWN0YWJsZSkucm93cywgc2VsZWN0YWJsZTIgPSBpbml0U2VsKHNlbGVjdGFibGUpLmNvbHM7CgogICAgICAvLyBBZnRlciB1c2VycyByZW9yZGVyIHRoZSByb3dzIG9yIGZpbHRlciB0aGUgdGFibGUsIHdlIGNhbm5vdCB1c2UgdGhlIHRhYmxlIGluZGV4CiAgICAgIC8vIGRpcmVjdGx5LiBJbnN0ZWFkLCB3ZSBuZWVkIHRoaXMgZnVuY3Rpb24gdG8gZmluZCBvdXQgdGhlIHJvd3MgYmV0d2VlbiB0aGUgdHdvIGNsaWNrcy4KICAgICAgLy8gSWYgdXNlciBmaWx0ZXIgdGhlIHRhYmxlIGFnYWluIGJldHdlZW4gdGhlIHN0YXJ0IGNsaWNrIGFuZCB0aGUgZW5kIGNsaWNrLCB0aGUgYmVoYXZpb3IKICAgICAgLy8gd291bGQgYmUgdW5kZWZpbmVkLCBidXQgaXQgc2hvdWxkIG5vdCBiZSBhIHByb2JsZW0uCiAgICAgIHZhciBzaGlmdFNlbFJvd3NJbmRleCA9IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHsKICAgICAgICB2YXIgaW5kZXhlcyA9IHNlcnZlciA/IERUX3Jvd3NfYWxsIDogdGFibGUucm93cyh7IHNlYXJjaDogJ2FwcGxpZWQnIH0pLmluZGV4ZXMoKS50b0FycmF5KCk7CiAgICAgICAgc3RhcnQgPSBpbmRleGVzLmluZGV4T2Yoc3RhcnQpOyBlbmQgPSBpbmRleGVzLmluZGV4T2YoZW5kKTsKICAgICAgICAvLyBpZiBzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQsIHdlIG5lZWQgdG8gc3dhcAogICAgICAgIGlmIChzdGFydCA+IGVuZCkgewogICAgICAgICAgdmFyIHRtcCA9IGVuZDsgZW5kID0gc3RhcnQ7IHN0YXJ0ID0gdG1wOwogICAgICAgIH0KICAgICAgICByZXR1cm4gaW5kZXhlcy5zbGljZShzdGFydCwgZW5kICsgMSk7CiAgICAgIH0KCiAgICAgIHZhciBzZXJ2ZXJSb3dJbmRleCA9IGZ1bmN0aW9uKGNsaWVudFJvd0luZGV4KSB7CiAgICAgICAgcmV0dXJuIHNlcnZlciA/IERUX3Jvd3NfY3VycmVudFtjbGllbnRSb3dJbmRleF0gOiBjbGllbnRSb3dJbmRleCArIDE7CiAgICAgIH0KCiAgICAgIC8vIHJvdywgY29sdW1uLCBvciBjZWxsIHNlbGVjdGlvbgogICAgICB2YXIgbGFzdENsaWNrZWRSb3c7CiAgICAgIGlmIChpbkFycmF5KHNlbFRhcmdldCwgWydyb3cnLCAncm93K2NvbHVtbiddKSkgewogICAgICAgIC8vIEdldCB0aGUgY3VycmVudCBzZWxlY3RlZCByb3dzLiBJdCB3aWxsIGFsc28KICAgICAgICAvLyB1cGRhdGUgdGhlIHNlbGVjdGVkMSdzIHZhbHVlIGJhc2VkIG9uIHRoZSBjdXJyZW50IHJvdyBzZWxlY3Rpb24gc3RhdGUKICAgICAgICAvLyBOb3RlIHdlIGNhbid0IHB1dCB0aGlzIGZ1bmN0aW9uIGluc2lkZSBzZWxlY3RSb3dzKCkgZGlyZWN0bHksCiAgICAgICAgLy8gdGhlIHJlYXNvbiBpcyBtZXRob2Quc2VsZWN0Um93cygpIHdpbGwgb3ZlcnJpZGUgc2VsZWN0ZWQxJ3MgdmFsdWUgYnV0IHRoaXMKICAgICAgICAvLyBmdW5jdGlvbiB3aWxsIGFkZCByb3dzIHRvIHNlbGVjdGVkMSAoa2VlcCB0aGUgZXhpc3Rpbmcgc2VsZWN0aW9uKSwgd2hpY2ggaXMKICAgICAgICAvLyBpbmNvbnNpc3RlbnQgd2l0aCBjb2x1bW4gYW5kIGNlbGwgc2VsZWN0aW9uLgogICAgICAgIHZhciBzZWxlY3RlZFJvd3MgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHZhciByb3dzID0gdGFibGUucm93cygnLicgKyBzZWxDbGFzcyk7CiAgICAgICAgICB2YXIgaWR4ID0gcm93cy5pbmRleGVzKCkudG9BcnJheSgpOwogICAgICAgICAgaWYgKCFzZXJ2ZXIpIHsKICAgICAgICAgICAgc2VsZWN0ZWQxID0gYWRkT25lKGlkeCk7CiAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZDE7CiAgICAgICAgICB9CiAgICAgICAgICBpZHggPSBpZHgubWFwKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgcmV0dXJuIERUX3Jvd3NfY3VycmVudFtpXTsKICAgICAgICAgIH0pOwogICAgICAgICAgc2VsZWN0ZWQxID0gc2VsTW9kZSA9PT0gJ211bHRpcGxlJyA/IHVuaXF1ZShzZWxlY3RlZDEuY29uY2F0KGlkeCkpIDogaWR4OwogICAgICAgICAgcmV0dXJuIHNlbGVjdGVkMTsKICAgICAgICB9CiAgICAgICAgLy8gQ2hhbmdlIHNlbGVjdGVkMSdzIHZhbHVlIGJhc2VkIG9uIHNlbGVjdGFibGUxLCB0aGVuIHJlZnJlc2ggdGhlIHJvdyBzdGF0ZQogICAgICAgIHZhciBvbmx5S2VlcFNlbGVjdGFibGVSb3dzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBpZiAoc2VsRGlzYWJsZSkgeyAvLyB1c2VycyBjYW4ndCBzZWxlY3Q7IHVzZWZ1bCB3aGVuIG9ubHkgd2FudCBiYWNrZW5kIHNlbGVjdAogICAgICAgICAgICBzZWxlY3RlZDEgPSBbXTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgICAgaWYgKHNlbGVjdGFibGUxLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwogICAgICAgICAgdmFyIG5vbnNlbGVjdGFibGUgPSBzZWxlY3RhYmxlMVswXSA8PSAwOwogICAgICAgICAgaWYgKG5vbnNlbGVjdGFibGUpIHsKICAgICAgICAgICAgLy8gc2hvdWxkIG1ha2Ugc2VsZWN0YWJsZTEgcG9zaXRpdmUKICAgICAgICAgICAgc2VsZWN0ZWQxID0gJChzZWxlY3RlZDEpLm5vdChzZWxlY3RhYmxlMS5tYXAoZnVuY3Rpb24oaSkgeyByZXR1cm4gLWk7IH0pKS5nZXQoKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNlbGVjdGVkMSA9ICQoc2VsZWN0ZWQxKS5maWx0ZXIoc2VsZWN0YWJsZTEpLmdldCgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBDaGFuZ2Ugc2VsZWN0ZWQxJ3MgdmFsdWUgYmFzZWQgb24gc2VsZWN0YWJsZTEsIHRoZW4KICAgICAgICAvLyByZWZyZXNoIHRoZSByb3cgc2VsZWN0aW9uIHN0YXRlIGFjY29yZGluZyB0byB2YWx1ZXMgaW4gc2VsZWN0ZWQxCiAgICAgICAgdmFyIHNlbGVjdFJvd3MgPSBmdW5jdGlvbihpZ25vcmVTZWxlY3RhYmxlKSB7CiAgICAgICAgICBpZiAoIWlnbm9yZVNlbGVjdGFibGUpIG9ubHlLZWVwU2VsZWN0YWJsZVJvd3MoKTsKICAgICAgICAgIHRhYmxlLiQoJ3RyLicgKyBzZWxDbGFzcykucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgaWYgKHNlbGVjdGVkMS5sZW5ndGggPT09IDApIHJldHVybjsKICAgICAgICAgIGlmIChzZXJ2ZXIpIHsKICAgICAgICAgICAgdGFibGUucm93cyh7cGFnZTogJ2N1cnJlbnQnfSkuZXZlcnkoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgaWYgKGluQXJyYXkoRFRfcm93c19jdXJyZW50W3RoaXMuaW5kZXgoKV0sIHNlbGVjdGVkMSkpIHsKICAgICAgICAgICAgICAgICQodGhpcy5ub2RlKCkpLmFkZENsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyIHNlbGVjdGVkMCA9IHNlbGVjdGVkMS5tYXAoZnVuY3Rpb24oaSkgeyByZXR1cm4gaSAtIDE7IH0pOwogICAgICAgICAgICAkKHRhYmxlLnJvd3Moc2VsZWN0ZWQwKS5ub2RlcygpKS5hZGRDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRhYmxlLm9uKCdtb3VzZWRvd24uZHQnLCAndGJvZHkgdHInLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpLCB0aGlzUm93ID0gdGFibGUucm93KHRoaXMpOwogICAgICAgICAgaWYgKHNlbE1vZGUgPT09ICdtdWx0aXBsZScpIHsKICAgICAgICAgICAgaWYgKGUuc2hpZnRLZXkgJiYgbGFzdENsaWNrZWRSb3cgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgIC8vIHNlbGVjdCBvciBkZS1zZWxlY3QgZGVwZW5kcyBvbiB0aGUgbGFzdCBjbGlja2VkIHJvdydzIHN0YXR1cwogICAgICAgICAgICAgIHZhciBmbGFnU2VsID0gISR0aGlzLmhhc0NsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgICB2YXIgY3J0Q2xpY2tlZFJvdyA9IHNlcnZlclJvd0luZGV4KHRoaXNSb3cuaW5kZXgoKSk7CiAgICAgICAgICAgICAgaWYgKHNlcnZlcikgewogICAgICAgICAgICAgICAgdmFyIHJvd3NJbmRleCA9IHNoaWZ0U2VsUm93c0luZGV4KGxhc3RDbGlja2VkUm93LCBjcnRDbGlja2VkUm93KTsKICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBjdXJyZW50IHBhZ2UncyBzZWxDbGFzcwogICAgICAgICAgICAgICAgcm93c0luZGV4Lm1hcChmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgIHZhciByb3dJbmRleCA9IERUX3Jvd3NfY3VycmVudC5pbmRleE9mKGkpOwogICAgICAgICAgICAgICAgICBpZiAocm93SW5kZXggPj0gMCkgewogICAgICAgICAgICAgICAgICAgIHZhciByb3cgPSB0YWJsZS5yb3cocm93SW5kZXgpLm5vZGVzKCkudG8kKCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGZsYWdSb3dTZWwgPSAhcm93Lmhhc0NsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ1NlbCA9PT0gZmxhZ1Jvd1NlbCkgcm93LnRvZ2dsZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAvLyB1cGRhdGUgc2VsZWN0ZWQxCiAgICAgICAgICAgICAgICBpZiAoZmxhZ1NlbCkgewogICAgICAgICAgICAgICAgICBzZWxlY3RlZDEgPSB1bmlxdWUoc2VsZWN0ZWQxLmNvbmNhdChyb3dzSW5kZXgpKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkMSA9IHNlbGVjdGVkMS5maWx0ZXIoZnVuY3Rpb24oaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWluQXJyYXkoaW5kZXgsIHJvd3NJbmRleCk7CiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBqcyBzdGFydHMgZnJvbSAwCiAgICAgICAgICAgICAgICBzaGlmdFNlbFJvd3NJbmRleChsYXN0Q2xpY2tlZFJvdyAtIDEsIGNydENsaWNrZWRSb3cgLSAxKS5tYXAoZnVuY3Rpb24odmFsdWUpIHsKICAgICAgICAgICAgICAgICAgdmFyIHJvdyA9IHRhYmxlLnJvdyh2YWx1ZSkubm9kZXMoKS50byQoKTsKICAgICAgICAgICAgICAgICAgdmFyIGZsYWdSb3dTZWwgPSAhcm93Lmhhc0NsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgICAgICAgaWYgKGZsYWdTZWwgPT09IGZsYWdSb3dTZWwpIHJvdy50b2dnbGVDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICR0aGlzLnRvZ2dsZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCR0aGlzLmhhc0NsYXNzKHNlbENsYXNzKSkgewogICAgICAgICAgICAgICR0aGlzLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB0YWJsZS4kKCd0ci4nICsgc2VsQ2xhc3MpLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChzZXJ2ZXIgJiYgISR0aGlzLmhhc0NsYXNzKHNlbENsYXNzKSkgewogICAgICAgICAgICB2YXIgaWQgPSBEVF9yb3dzX2N1cnJlbnRbdGhpc1Jvdy5pbmRleCgpXTsKICAgICAgICAgICAgLy8gcmVtb3ZlIGlkIGZyb20gc2VsZWN0ZWQxIHNpbmNlIGl0cyBjbGFzcyAuc2VsZWN0ZWQgaGFzIGJlZW4gcmVtb3ZlZAogICAgICAgICAgICBpZiAoaW5BcnJheShpZCwgc2VsZWN0ZWQxKSkgc2VsZWN0ZWQxLnNwbGljZSgkLmluQXJyYXkoaWQsIHNlbGVjdGVkMSksIDEpOwogICAgICAgICAgfQogICAgICAgICAgc2VsZWN0ZWRSb3dzKCk7IC8vIHVwZGF0ZSBzZWxlY3RlZDEncyB2YWx1ZSBiYXNlZCBvbiBzZWxDbGFzcwogICAgICAgICAgc2VsZWN0Um93cyhmYWxzZSk7IC8vIG9ubHkga2VlcCB0aGUgc2VsZWN0YWJsZSByb3dzCiAgICAgICAgICBjaGFuZ2VJbnB1dCgncm93c19zZWxlY3RlZCcsIHNlbGVjdGVkMSk7CiAgICAgICAgICBjaGFuZ2VJbnB1dCgncm93X2xhc3RfY2xpY2tlZCcsIHNlcnZlclJvd0luZGV4KHRoaXNSb3cuaW5kZXgoKSksIG51bGwsIG51bGwsIHtwcmlvcml0eTogJ2V2ZW50J30pOwogICAgICAgICAgbGFzdENsaWNrZWRSb3cgPSBzZXJ2ZXJSb3dJbmRleCh0aGlzUm93LmluZGV4KCkpOwogICAgICAgIH0pOwogICAgICAgIHNlbGVjdFJvd3MoZmFsc2UpOyAgLy8gaW4gY2FzZSB1c2VycyBoYXZlIHNwZWNpZmllZCBwcmUtc2VsZWN0ZWQgcm93cwogICAgICAgIC8vIHJlc3RvcmUgc2VsZWN0ZWQgcm93cyBhZnRlciB0aGUgdGFibGUgaXMgcmVkcmF3biAoZS5nLiBzb3J0L3NlYXJjaC9wYWdlKTsKICAgICAgICAvLyBjbGllbnQtc2lkZSB0YWJsZXMgd2lsbCBwcmVzZXJ2ZSB0aGUgc2VsZWN0aW9ucyBhdXRvbWF0aWNhbGx5OyBmb3IKICAgICAgICAvLyBzZXJ2ZXItc2lkZSB0YWJsZXMsIHdlIGhhdmUgdG8gKnJlYWwqIHJvdyBpbmRpY2VzIGFyZSBpbiBgc2VsZWN0ZWQxYAogICAgICAgIGNoYW5nZUlucHV0KCdyb3dzX3NlbGVjdGVkJywgc2VsZWN0ZWQxKTsKICAgICAgICBpZiAoc2VydmVyKSB0YWJsZS5vbignZHJhdy5kdCcsIGZ1bmN0aW9uKGUpIHsgc2VsZWN0Um93cyhmYWxzZSk7IH0pOwogICAgICAgIG1ldGhvZHMuc2VsZWN0Um93cyA9IGZ1bmN0aW9uKHNlbGVjdGVkLCBpZ25vcmVTZWxlY3RhYmxlKSB7CiAgICAgICAgICBzZWxlY3RlZDEgPSAkLm1ha2VBcnJheShzZWxlY3RlZCk7CiAgICAgICAgICBzZWxlY3RSb3dzKGlnbm9yZVNlbGVjdGFibGUpOwogICAgICAgICAgY2hhbmdlSW5wdXQoJ3Jvd3Nfc2VsZWN0ZWQnLCBzZWxlY3RlZDEpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGluQXJyYXkoc2VsVGFyZ2V0LCBbJ2NvbHVtbicsICdyb3crY29sdW1uJ10pKSB7CiAgICAgICAgaWYgKHNlbFRhcmdldCA9PT0gJ3Jvdytjb2x1bW4nKSB7CiAgICAgICAgICAkKHRhYmxlLmNvbHVtbnMoKS5mb290ZXIoKSkuY3NzKCdjdXJzb3InLCAncG9pbnRlcicpOwogICAgICAgIH0KICAgICAgICAvLyB1cGRhdGUgc2VsZWN0ZWQyJ3MgdmFsdWUgYmFzZWQgb24gc2VsZWN0YWJsZTIKICAgICAgICB2YXIgb25seUtlZXBTZWxlY3RhYmxlQ29scyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgaWYgKHNlbERpc2FibGUpIHsgLy8gdXNlcnMgY2FuJ3Qgc2VsZWN0OyB1c2VmdWwgd2hlbiBvbmx5IHdhbnQgYmFja2VuZCBzZWxlY3QKICAgICAgICAgICAgc2VsZWN0ZWQyID0gW107CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChzZWxlY3RhYmxlMi5sZW5ndGggPT09IDApIHJldHVybjsKICAgICAgICAgIHZhciBub25zZWxlY3RhYmxlID0gc2VsZWN0YWJsZTJbMF0gPD0gMDsKICAgICAgICAgIGlmIChub25zZWxlY3RhYmxlKSB7CiAgICAgICAgICAgIC8vIG5lZWQgdG8gbWFrZSBzZWxlY3RhYmxlMiBwb3NpdGl2ZQogICAgICAgICAgICBzZWxlY3RlZDIgPSAkKHNlbGVjdGVkMikubm90KHNlbGVjdGFibGUyLm1hcChmdW5jdGlvbihpKSB7IHJldHVybiAtaTsgfSkpLmdldCgpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc2VsZWN0ZWQyID0gJChzZWxlY3RlZDIpLmZpbHRlcihzZWxlY3RhYmxlMikuZ2V0KCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIHVwZGF0ZSBzZWxlY3RlZDIgYW5kIHRoZW4KICAgICAgICAvLyByZWZyZXNoIHRoZSBjb2wgc2VsZWN0aW9uIHN0YXRlIGFjY29yZGluZyB0byB2YWx1ZXMgaW4gc2VsZWN0ZWQyCiAgICAgICAgdmFyIHNlbGVjdENvbHMgPSBmdW5jdGlvbihpZ25vcmVTZWxlY3RhYmxlKSB7CiAgICAgICAgICBpZiAoIWlnbm9yZVNlbGVjdGFibGUpIG9ubHlLZWVwU2VsZWN0YWJsZUNvbHMoKTsKICAgICAgICAgIC8vIGlmIHNlbGVjdGVkMiBpcyBub3QgYSB2YWxpZGUgaW5kZXggKGUuZy4sIGxhcmdlciB0aGFuIHRoZSBjb2x1bW4gbnVtYmVyKQogICAgICAgICAgLy8gdGFibGUuY29sdW1ucyhzZWxlY3RlZDIpIHdpbGwgZmFpbCBhbmQgcmVzdWx0IGluIGEgYmxhbmsgdGFibGUKICAgICAgICAgIC8vIHRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhlIHRhYmxlLnJvd3MoKSwgd2hlcmUgdGhlIG91dC1vZi1yYW5nZSBpbmRleGVzCiAgICAgICAgICAvLyBkb2Vzbid0IGFmZmVjdCBhdCBhbGwKICAgICAgICAgIHNlbGVjdGVkMiA9ICQoc2VsZWN0ZWQyKS5maWx0ZXIodGFibGUuY29sdW1ucygpLmluZGV4ZXMoKSkuZ2V0KCk7CiAgICAgICAgICB0YWJsZS5jb2x1bW5zKCkubm9kZXMoKS5mbGF0dGVuKCkudG8kKCkucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgaWYgKHNlbGVjdGVkMi5sZW5ndGggPiAwKQogICAgICAgICAgICB0YWJsZS5jb2x1bW5zKHNlbGVjdGVkMikubm9kZXMoKS5mbGF0dGVuKCkudG8kKCkuYWRkQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgIH0KICAgICAgICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHZhciBjb2xJZHggPSBzZWxUYXJnZXQgPT09ICdjb2x1bW4nID8gdGFibGUuY2VsbCh0aGlzKS5pbmRleCgpLmNvbHVtbiA6CiAgICAgICAgICAgICAgJC5pbkFycmF5KHRoaXMsIHRhYmxlLmNvbHVtbnMoKS5mb290ZXIoKSksCiAgICAgICAgICAgICAgdGhpc0NvbCA9ICQodGFibGUuY29sdW1uKGNvbElkeCkubm9kZXMoKSk7CiAgICAgICAgICBpZiAoY29sSWR4ID09PSAtMSkgcmV0dXJuOwogICAgICAgICAgaWYgKHRoaXNDb2wuaGFzQ2xhc3Moc2VsQ2xhc3MpKSB7CiAgICAgICAgICAgIHRoaXNDb2wucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICBzZWxlY3RlZDIuc3BsaWNlKCQuaW5BcnJheShjb2xJZHgsIHNlbGVjdGVkMiksIDEpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKHNlbE1vZGUgPT09ICdzaW5nbGUnKSAkKHRhYmxlLmNlbGxzKCkubm9kZXMoKSkucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICB0aGlzQ29sLmFkZENsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgc2VsZWN0ZWQyID0gc2VsTW9kZSA9PT0gJ3NpbmdsZScgPyBbY29sSWR4XSA6IHVuaXF1ZShzZWxlY3RlZDIuY29uY2F0KFtjb2xJZHhdKSk7CiAgICAgICAgICB9CiAgICAgICAgICBzZWxlY3RDb2xzKGZhbHNlKTsgLy8gdXBkYXRlIHNlbGVjdGVkMiBiYXNlZCBvbiBzZWxlY3RhYmxlCiAgICAgICAgICBjaGFuZ2VJbnB1dCgnY29sdW1uc19zZWxlY3RlZCcsIHNlbGVjdGVkMik7CiAgICAgICAgfQogICAgICAgIGlmIChzZWxUYXJnZXQgPT09ICdjb2x1bW4nKSB7CiAgICAgICAgICAkKHRhYmxlLnRhYmxlKCkuYm9keSgpKS5vbignY2xpY2suZHQnLCAndGQnLCBjYWxsYmFjayk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICQodGFibGUudGFibGUoKS5mb290ZXIoKSkub24oJ2NsaWNrLmR0JywgJ3RyIHRoJywgY2FsbGJhY2spOwogICAgICAgIH0KICAgICAgICBzZWxlY3RDb2xzKGZhbHNlKTsgIC8vIGluIGNhc2UgdXNlcnMgaGF2ZSBzcGVjaWZpZWQgcHJlLXNlbGVjdGVkIGNvbHVtbnMKICAgICAgICBjaGFuZ2VJbnB1dCgnY29sdW1uc19zZWxlY3RlZCcsIHNlbGVjdGVkMik7CiAgICAgICAgaWYgKHNlcnZlcikgdGFibGUub24oJ2RyYXcuZHQnLCBmdW5jdGlvbihlKSB7IHNlbGVjdENvbHMoZmFsc2UpOyB9KTsKICAgICAgICBtZXRob2RzLnNlbGVjdENvbHVtbnMgPSBmdW5jdGlvbihzZWxlY3RlZCwgaWdub3JlU2VsZWN0YWJsZSkgewogICAgICAgICAgc2VsZWN0ZWQyID0gJC5tYWtlQXJyYXkoc2VsZWN0ZWQpOwogICAgICAgICAgc2VsZWN0Q29scyhpZ25vcmVTZWxlY3RhYmxlKTsKICAgICAgICAgIGNoYW5nZUlucHV0KCdjb2x1bW5zX3NlbGVjdGVkJywgc2VsZWN0ZWQyKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChzZWxUYXJnZXQgPT09ICdjZWxsJykgewogICAgICAgIHZhciBzZWxlY3RlZDMgPSBbXSwgc2VsZWN0YWJsZTMgPSBbXTsKICAgICAgICBpZiAoc2VsZWN0ZWQgIT09IG51bGwpIHNlbGVjdGVkMyA9IHNlbGVjdGVkOwogICAgICAgIGlmIChzZWxlY3RhYmxlICE9PSBudWxsICYmIHR5cGVvZiBzZWxlY3RhYmxlICE9PSAnYm9vbGVhbicpIHNlbGVjdGFibGUzID0gc2VsZWN0YWJsZTsKICAgICAgICB2YXIgZmluZEluZGV4ID0gZnVuY3Rpb24oaWosIHNlbCkgewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWwubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGlqWzBdID09PSBzZWxbaV1bMF0gJiYgaWpbMV0gPT09IHNlbFtpXVsxXSkgcmV0dXJuIGk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgfQogICAgICAgICAvLyBDaGFuZ2Ugc2VsZWN0ZWQzJ3MgdmFsdWUgYmFzZWQgb24gc2VsZWN0YWJsZTMsIHRoZW4gcmVmcmVzaCB0aGUgY2VsbCBzdGF0ZQogICAgICAgIHZhciBvbmx5S2VlcFNlbGVjdGFibGVDZWxscyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgaWYgKHNlbERpc2FibGUpIHsgLy8gdXNlcnMgY2FuJ3Qgc2VsZWN0OyB1c2VmdWwgd2hlbiBvbmx5IHdhbnQgYmFja2VuZCBzZWxlY3QKICAgICAgICAgICAgc2VsZWN0ZWQzID0gW107CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChzZWxlY3RhYmxlMy5sZW5ndGggPT09IDApIHJldHVybjsKICAgICAgICAgIHZhciBub25zZWxlY3RhYmxlID0gc2VsZWN0YWJsZTNbMF1bMF0gPD0gMDsKICAgICAgICAgIHZhciBvdXQgPSBbXTsKICAgICAgICAgIGlmIChub25zZWxlY3RhYmxlKSB7CiAgICAgICAgICAgIHNlbGVjdGVkMy5tYXAoZnVuY3Rpb24oaWopIHsKICAgICAgICAgICAgICAvLyBzaG91bGQgbWFrZSBzZWxlY3RhYmxlMyBwb3NpdGl2ZQogICAgICAgICAgICAgIGlmIChmaW5kSW5kZXgoWy1palswXSwgLWlqWzFdXSwgc2VsZWN0YWJsZTMpID09PSAtMSkgeyBvdXQucHVzaChpaik7IH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzZWxlY3RlZDMubWFwKGZ1bmN0aW9uKGlqKSB7CiAgICAgICAgICAgICAgaWYgKGZpbmRJbmRleChpaiwgc2VsZWN0YWJsZTMpID4gLTEpIHsgb3V0LnB1c2goaWopOyB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgICAgc2VsZWN0ZWQzID0gb3V0OwogICAgICAgIH0KICAgICAgICAvLyBDaGFuZ2Ugc2VsZWN0ZWQzJ3MgdmFsdWUgYmFzZWQgb24gc2VsZWN0YWJsZTMsIHRoZW4KICAgICAgICAvLyByZWZyZXNoIHRoZSBjZWxsIHNlbGVjdGlvbiBzdGF0ZSBhY2NvcmRpbmcgdG8gdmFsdWVzIGluIHNlbGVjdGVkMwogICAgICAgIHZhciBzZWxlY3RDZWxscyA9IGZ1bmN0aW9uKGlnbm9yZVNlbGVjdGFibGUpIHsKICAgICAgICAgIGlmICghaWdub3JlU2VsZWN0YWJsZSkgb25seUtlZXBTZWxlY3RhYmxlQ2VsbHMoKTsKICAgICAgICAgIHRhYmxlLiQoJ3RkLicgKyBzZWxDbGFzcykucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgaWYgKHNlbGVjdGVkMy5sZW5ndGggPT09IDApIHJldHVybjsKICAgICAgICAgIGlmIChzZXJ2ZXIpIHsKICAgICAgICAgICAgdGFibGUuY2VsbHMoe3BhZ2U6ICdjdXJyZW50J30pLmV2ZXJ5KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHZhciBpbmZvID0gdHdlYWtDZWxsSW5kZXgodGhpcyk7CiAgICAgICAgICAgICAgaWYgKGZpbmRJbmRleChbaW5mby5yb3csIGluZm8uY29sXSwgc2VsZWN0ZWQzKSA+IC0xKQogICAgICAgICAgICAgICAgJCh0aGlzLm5vZGUoKSkuYWRkQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNlbGVjdGVkMy5tYXAoZnVuY3Rpb24oaWopIHsKICAgICAgICAgICAgICAkKHRhYmxlLmNlbGwoaWpbMF0gLSAxLCBpalsxXSkubm9kZSgpKS5hZGRDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgdGFibGUub24oJ2NsaWNrLmR0JywgJ3Rib2R5IHRkJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpLCBpbmZvID0gdHdlYWtDZWxsSW5kZXgodGFibGUuY2VsbCh0aGlzKSk7CiAgICAgICAgICBpZiAoJHRoaXMuaGFzQ2xhc3Moc2VsQ2xhc3MpKSB7CiAgICAgICAgICAgICR0aGlzLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgc2VsZWN0ZWQzLnNwbGljZShmaW5kSW5kZXgoW2luZm8ucm93LCBpbmZvLmNvbF0sIHNlbGVjdGVkMyksIDEpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKHNlbE1vZGUgPT09ICdzaW5nbGUnKSAkKHRhYmxlLmNlbGxzKCkubm9kZXMoKSkucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICAkdGhpcy5hZGRDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgIHNlbGVjdGVkMyA9IHNlbE1vZGUgPT09ICdzaW5nbGUnID8gW1tpbmZvLnJvdywgaW5mby5jb2xdXSA6CiAgICAgICAgICAgICAgdW5pcXVlKHNlbGVjdGVkMy5jb25jYXQoW1tpbmZvLnJvdywgaW5mby5jb2xdXSkpOwogICAgICAgICAgfQogICAgICAgICAgc2VsZWN0Q2VsbHMoZmFsc2UpOyAvLyBtdXN0IGNhbGwgdGhpcyB0byB1cGRhdGUgc2VsZWN0ZWQzIGJhc2VkIG9uIHNlbGVjdGFibGUzCiAgICAgICAgICBjaGFuZ2VJbnB1dCgnY2VsbHNfc2VsZWN0ZWQnLCB0cmFuc3Bvc2VBcnJheTJEKHNlbGVjdGVkMyksICdzaGlueS5tYXRyaXgnKTsKICAgICAgICB9KTsKICAgICAgICBzZWxlY3RDZWxscyhmYWxzZSk7ICAvLyBpbiBjYXNlIHVzZXJzIGhhdmUgc3BlY2lmaWVkIHByZS1zZWxlY3RlZCBjb2x1bW5zCiAgICAgICAgY2hhbmdlSW5wdXQoJ2NlbGxzX3NlbGVjdGVkJywgdHJhbnNwb3NlQXJyYXkyRChzZWxlY3RlZDMpLCAnc2hpbnkubWF0cml4Jyk7CgogICAgICAgIGlmIChzZXJ2ZXIpIHRhYmxlLm9uKCdkcmF3LmR0JywgZnVuY3Rpb24oZSkgeyBzZWxlY3RDZWxscyhmYWxzZSk7IH0pOwogICAgICAgIG1ldGhvZHMuc2VsZWN0Q2VsbHMgPSBmdW5jdGlvbihzZWxlY3RlZCwgaWdub3JlU2VsZWN0YWJsZSkgewogICAgICAgICAgc2VsZWN0ZWQzID0gc2VsZWN0ZWQgPyBzZWxlY3RlZCA6IFtdOwogICAgICAgICAgc2VsZWN0Q2VsbHMoaWdub3JlU2VsZWN0YWJsZSk7CiAgICAgICAgICBjaGFuZ2VJbnB1dCgnY2VsbHNfc2VsZWN0ZWQnLCB0cmFuc3Bvc2VBcnJheTJEKHNlbGVjdGVkMyksICdzaGlueS5tYXRyaXgnKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICAvLyBleHBvc2Ugc29tZSB0YWJsZSBpbmZvIHRvIFNoaW55CiAgICB2YXIgdXBkYXRlVGFibGVJbmZvID0gZnVuY3Rpb24oZSwgc2V0dGluZ3MpIHsKICAgICAgLy8gVE9ETzogaXMgYW55b25lIGludGVyZXN0ZWQgaW4gdGhlIHBhZ2UgaW5mbz8KICAgICAgLy8gY2hhbmdlSW5wdXQoJ3BhZ2VfaW5mbycsIHRhYmxlLnBhZ2UuaW5mbygpKTsKICAgICAgdmFyIHVwZGF0ZVJvd0luZm8gPSBmdW5jdGlvbihpZCwgbW9kaWZpZXIpIHsKICAgICAgICB2YXIgaWR4OwogICAgICAgIGlmIChzZXJ2ZXIpIHsKICAgICAgICAgIGlkeCA9IG1vZGlmaWVyLnBhZ2UgPT09ICdjdXJyZW50JyA/IERUX3Jvd3NfY3VycmVudCA6IERUX3Jvd3NfYWxsOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB2YXIgcm93cyA9IHRhYmxlLnJvd3MoJC5leHRlbmQoewogICAgICAgICAgICBzZWFyY2g6ICdhcHBsaWVkJywKICAgICAgICAgICAgcGFnZTogJ2FsbCcKICAgICAgICAgIH0sIG1vZGlmaWVyKSk7CiAgICAgICAgICBpZHggPSBhZGRPbmUocm93cy5pbmRleGVzKCkudG9BcnJheSgpKTsKICAgICAgICB9CiAgICAgICAgY2hhbmdlSW5wdXQoJ3Jvd3MnICsgJ18nICsgaWQsIGlkeCk7CiAgICAgIH07CiAgICAgIHVwZGF0ZVJvd0luZm8oJ2N1cnJlbnQnLCB7cGFnZTogJ2N1cnJlbnQnfSk7CiAgICAgIHVwZGF0ZVJvd0luZm8oJ2FsbCcsIHt9KTsKICAgIH0KICAgIHRhYmxlLm9uKCdkcmF3LmR0JywgdXBkYXRlVGFibGVJbmZvKTsKICAgIHVwZGF0ZVRhYmxlSW5mbygpOwoKICAgIC8vIHN0YXRlIGluZm8KICAgIHRhYmxlLm9uKCdkcmF3LmR0IGNvbHVtbi12aXNpYmlsaXR5LmR0JywgZnVuY3Rpb24oKSB7CiAgICAgIGNoYW5nZUlucHV0KCdzdGF0ZScsIHRhYmxlLnN0YXRlKCkpOwogICAgfSk7CiAgICBjaGFuZ2VJbnB1dCgnc3RhdGUnLCB0YWJsZS5zdGF0ZSgpKTsKCiAgICAvLyBzZWFyY2ggaW5mbwogICAgdmFyIHVwZGF0ZVNlYXJjaEluZm8gPSBmdW5jdGlvbigpIHsKICAgICAgY2hhbmdlSW5wdXQoJ3NlYXJjaCcsIHRhYmxlLnNlYXJjaCgpKTsKICAgICAgaWYgKGZpbHRlclJvdykgY2hhbmdlSW5wdXQoJ3NlYXJjaF9jb2x1bW5zJywgZmlsdGVyUm93LnRvQXJyYXkoKS5tYXAoZnVuY3Rpb24odGQpIHsKICAgICAgICByZXR1cm4gJCh0ZCkuZmluZCgnaW5wdXQnKS5maXJzdCgpLnZhbCgpOwogICAgICB9KSk7CiAgICB9CiAgICB0YWJsZS5vbignZHJhdy5kdCcsIHVwZGF0ZVNlYXJjaEluZm8pOwogICAgdXBkYXRlU2VhcmNoSW5mbygpOwoKICAgIHZhciBjZWxsSW5mbyA9IGZ1bmN0aW9uKHRoaXopIHsKICAgICAgdmFyIGluZm8gPSB0d2Vha0NlbGxJbmRleCh0YWJsZS5jZWxsKHRoaXopKTsKICAgICAgaW5mby52YWx1ZSA9IHRhYmxlLmNlbGwodGhpeikuZGF0YSgpOwogICAgICByZXR1cm4gaW5mbzsKICAgIH0KICAgIC8vIHRoZSBjdXJyZW50IGNlbGwgY2xpY2tlZCBvbgogICAgdGFibGUub24oJ2NsaWNrLmR0JywgJ3Rib2R5IHRkJywgZnVuY3Rpb24oKSB7CiAgICAgIGNoYW5nZUlucHV0KCdjZWxsX2NsaWNrZWQnLCBjZWxsSW5mbyh0aGlzKSwgbnVsbCwgbnVsbCwge3ByaW9yaXR5OiAnZXZlbnQnfSk7CiAgICB9KQogICAgY2hhbmdlSW5wdXQoJ2NlbGxfY2xpY2tlZCcsIHt9KTsKCiAgICAvLyBkbyBub3QgdHJpZ2dlciB0YWJsZSBzZWxlY3Rpb24gd2hlbiBjbGlja2luZyBvbiBsaW5rcyB1bmxlc3MgdGhleSBoYXZlIGNsYXNzZXMKICAgIHRhYmxlLm9uKCdjbGljay5kdCcsICd0Ym9keSB0ZCBhJywgZnVuY3Rpb24oZSkgewogICAgICBpZiAodGhpcy5jbGFzc05hbWUgPT09ICcnKSBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgfSk7CgogICAgbWV0aG9kcy5hZGRSb3cgPSBmdW5jdGlvbihkYXRhLCByb3duYW1lLCByZXNldFBhZ2luZykgewogICAgICB2YXIgbiA9IHRhYmxlLmNvbHVtbnMoKS5pbmRleGVzKCkubGVuZ3RoLCBkID0gbiAtIGRhdGEubGVuZ3RoOwogICAgICBpZiAoZCA9PT0gMSkgewogICAgICAgIGRhdGEgPSByb3duYW1lLmNvbmNhdChkYXRhKQogICAgICB9IGVsc2UgaWYgKGQgIT09IDApIHsKICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTsKICAgICAgICBjb25zb2xlLmxvZyh0YWJsZS5jb2x1bW5zKCkuaW5kZXhlcygpKTsKICAgICAgICB0aHJvdyAnTmV3IGRhdGEgbXVzdCBiZSBvZiB0aGUgc2FtZSBsZW5ndGggYXMgY3VycmVudCBkYXRhICgnICsgbiArICcpJzsKICAgICAgfTsKICAgICAgdGFibGUucm93LmFkZChkYXRhKS5kcmF3KHJlc2V0UGFnaW5nKTsKICAgIH0KCiAgICBtZXRob2RzLnVwZGF0ZVNlYXJjaCA9IGZ1bmN0aW9uKGtleXdvcmRzKSB7CiAgICAgIGlmIChrZXl3b3Jkcy5nbG9iYWwgIT09IG51bGwpCiAgICAgICAgJCh0YWJsZS50YWJsZSgpLmNvbnRhaW5lcigpKS5maW5kKCdpbnB1dFt0eXBlPXNlYXJjaF0nKS5maXJzdCgpCiAgICAgICAgICAgICAudmFsKGtleXdvcmRzLmdsb2JhbCkudHJpZ2dlcignaW5wdXQnKTsKICAgICAgdmFyIGNvbHVtbnMgPSBrZXl3b3Jkcy5jb2x1bW5zOwogICAgICBpZiAoIWZpbHRlclJvdyB8fCBjb2x1bW5zID09PSBudWxsKSByZXR1cm47CiAgICAgIGZpbHRlclJvdy50b0FycmF5KCkubWFwKGZ1bmN0aW9uKHRkLCBpKSB7CiAgICAgICAgdmFyIHYgPSB0eXBlb2YgY29sdW1ucyA9PT0gJ3N0cmluZycgPyBjb2x1bW5zIDogY29sdW1uc1tpXTsKICAgICAgICBpZiAodHlwZW9mIHYgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICBjb25zb2xlLmxvZygnVGhlIHNlYXJjaCBrZXl3b3JkIGZvciBjb2x1bW4gJyArIGkgKyAnIGlzIHVuZGVmaW5lZCcpCiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICQodGQpLmZpbmQoJ2lucHV0JykuZmlyc3QoKS52YWwodik7CiAgICAgICAgc2VhcmNoQ29sdW1uKGksIHYpOwogICAgICB9KTsKICAgICAgdGFibGUuZHJhdygpOwogICAgfQoKICAgIG1ldGhvZHMuaGlkZUNvbHMgPSBmdW5jdGlvbihoaWRlLCByZXNldCkgewogICAgICBpZiAocmVzZXQpIHRhYmxlLmNvbHVtbnMoKS52aXNpYmxlKHRydWUsIGZhbHNlKTsKICAgICAgdGFibGUuY29sdW1ucyhoaWRlKS52aXNpYmxlKGZhbHNlKTsKICAgIH0KCiAgICBtZXRob2RzLnNob3dDb2xzID0gZnVuY3Rpb24oc2hvdywgcmVzZXQpIHsKICAgICAgaWYgKHJlc2V0KSB0YWJsZS5jb2x1bW5zKCkudmlzaWJsZShmYWxzZSwgZmFsc2UpOwogICAgICB0YWJsZS5jb2x1bW5zKHNob3cpLnZpc2libGUodHJ1ZSk7CiAgICB9CgogICAgbWV0aG9kcy5jb2xSZW9yZGVyID0gZnVuY3Rpb24ob3JkZXIsIG9yaWdPcmRlcikgewogICAgICB0YWJsZS5jb2xSZW9yZGVyLm9yZGVyKG9yZGVyLCBvcmlnT3JkZXIpOwogICAgfQoKICAgIG1ldGhvZHMuc2VsZWN0UGFnZSA9IGZ1bmN0aW9uKHBhZ2UpIHsKICAgICAgaWYgKHRhYmxlLnBhZ2UuaW5mbygpLnBhZ2VzIDwgcGFnZSB8fCBwYWdlIDwgMSkgewogICAgICAgIHRocm93ICdTZWxlY3RlZCBwYWdlIGlzIG91dCBvZiByYW5nZSc7CiAgICAgIH07CiAgICAgIHRhYmxlLnBhZ2UocGFnZSAtIDEpLmRyYXcoZmFsc2UpOwogICAgfQoKICAgIG1ldGhvZHMucmVsb2FkRGF0YSA9IGZ1bmN0aW9uKHJlc2V0UGFnaW5nLCBjbGVhclNlbGVjdGlvbikgewogICAgICAvLyBlbXB0eSBzZWxlY3Rpb25zIGZpcnN0IGlmIG5lY2Vzc2FyeQogICAgICBpZiAobWV0aG9kcy5zZWxlY3RSb3dzICYmIGluQXJyYXkoJ3JvdycsIGNsZWFyU2VsZWN0aW9uKSkgbWV0aG9kcy5zZWxlY3RSb3dzKFtdKTsKICAgICAgaWYgKG1ldGhvZHMuc2VsZWN0Q29sdW1ucyAmJiBpbkFycmF5KCdjb2x1bW4nLCBjbGVhclNlbGVjdGlvbikpIG1ldGhvZHMuc2VsZWN0Q29sdW1ucyhbXSk7CiAgICAgIGlmIChtZXRob2RzLnNlbGVjdENlbGxzICYmIGluQXJyYXkoJ2NlbGwnLCBjbGVhclNlbGVjdGlvbikpIG1ldGhvZHMuc2VsZWN0Q2VsbHMoW10pOwogICAgICB0YWJsZS5hamF4LnJlbG9hZChudWxsLCByZXNldFBhZ2luZyk7CiAgICB9CgogICAgdGFibGUuc2hpbnlNZXRob2RzID0gbWV0aG9kczsKICB9LAogIHJlc2l6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQsIGluc3RhbmNlKSB7CiAgICBpZiAoaW5zdGFuY2UuZGF0YSkgdGhpcy5yZW5kZXJWYWx1ZShlbCwgaW5zdGFuY2UuZGF0YSwgaW5zdGFuY2UpOwoKICAgIC8vIGR5bmFtaWNhbGx5IGFkanVzdCBoZWlnaHQgaWYgZmlsbENvbnRhaW5lciA9IFRSVUUKICAgIGlmIChpbnN0YW5jZS5maWxsQ29udGFpbmVyKQogICAgICB0aGlzLmZpbGxBdmFpbGFibGVIZWlnaHQoZWwsIGhlaWdodCk7CgogICAgdGhpcy5hZGp1c3RXaWR0aChlbCk7CiAgfSwKCiAgLy8gZHluYW1pY2FsbHkgc2V0IHRoZSBzY3JvbGwgYm9keSB0byBmaWxsIGF2YWlsYWJsZSBoZWlnaHQKICAvLyAodXNlZCB3aXRoIGZpbGxDb250YWluZXIgPSBUUlVFKQogIGZpbGxBdmFpbGFibGVIZWlnaHQ6IGZ1bmN0aW9uKGVsLCBhdmFpbGFibGVIZWlnaHQpIHsKCiAgICAvLyBzZWUgaG93IG11Y2ggb2YgdGhlIHRhYmxlIGlzIG9jY3VwaWVkIGJ5IGhlYWRlci9mb290ZXIgZWxlbWVudHMKICAgIC8vIGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIGEgdGFyZ2V0IHNjcm9sbCBib2R5IGhlaWdodAogICAgdmFyIGR0V3JhcHBlciA9ICQoZWwpLmZpbmQoJ2Rpdi5kYXRhVGFibGVzX3dyYXBwZXInKTsKICAgIHZhciBkdFNjcm9sbEJvZHkgPSAkKGVsKS5maW5kKCQoJ2Rpdi5kYXRhVGFibGVzX3Njcm9sbEJvZHknKSk7CiAgICB2YXIgZnJhbWluZ0hlaWdodCA9IGR0V3JhcHBlci5pbm5lckhlaWdodCgpIC0gZHRTY3JvbGxCb2R5LmlubmVySGVpZ2h0KCk7CiAgICB2YXIgc2Nyb2xsQm9keUhlaWdodCA9IGF2YWlsYWJsZUhlaWdodCAtIGZyYW1pbmdIZWlnaHQ7CgogICAgLy8gc2V0IHRoZSBoZWlnaHQKICAgIGR0U2Nyb2xsQm9keS5oZWlnaHQoc2Nyb2xsQm9keUhlaWdodCArICdweCcpOwogIH0sCgogIC8vIGFkanVzdCB0aGUgd2lkdGggb2YgY29sdW1uczsgcmVtb3ZlIHRoZSBoYXJkLWNvZGVkIHdpZHRocyBvbiB0YWJsZSBhbmQgdGhlCiAgLy8gc2Nyb2xsIGhlYWRlciB3aGVuIHNjcm9sbFgvWSBhcmUgZW5hYmxlZAogIGFkanVzdFdpZHRoOiBmdW5jdGlvbihlbCkgewogICAgdmFyICRlbCA9ICQoZWwpLCB0YWJsZSA9ICRlbC5kYXRhKCdkYXRhdGFibGUnKTsKICAgIGlmICh0YWJsZSkgdGFibGUuY29sdW1ucy5hZGp1c3QoKTsKICAgICRlbC5maW5kKCcuZGF0YVRhYmxlc19zY3JvbGxIZWFkSW5uZXInKS5jc3MoJ3dpZHRoJywgJycpCiAgICAgICAgLmNoaWxkcmVuKCd0YWJsZScpLmNzcygnbWFyZ2luLWxlZnQnLCAnJyk7CiAgfQp9KTsKCiAgaWYgKCFIVE1MV2lkZ2V0cy5zaGlueU1vZGUpIHJldHVybjsKCiAgU2hpbnkuYWRkQ3VzdG9tTWVzc2FnZUhhbmRsZXIoJ2RhdGF0YWJsZS1jYWxscycsIGZ1bmN0aW9uKGRhdGEpIHsKICAgIHZhciBpZCA9IGRhdGEuaWQ7CiAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICB2YXIgdGFibGUgPSBlbCA/ICQoZWwpLmRhdGEoJ2RhdGF0YWJsZScpIDogbnVsbDsKICAgIGlmICghdGFibGUpIHsKICAgICAgY29uc29sZS5sb2coIkNvdWxkbid0IGZpbmQgdGFibGUgd2l0aCBpZCAiICsgaWQpOwogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIG1ldGhvZHMgPSB0YWJsZS5zaGlueU1ldGhvZHMsIGNhbGwgPSBkYXRhLmNhbGw7CiAgICBpZiAobWV0aG9kc1tjYWxsLm1ldGhvZF0pIHsKICAgICAgbWV0aG9kc1tjYWxsLm1ldGhvZF0uYXBwbHkodGFibGUsIGNhbGwuYXJncyk7CiAgICB9IGVsc2UgewogICAgICBjb25zb2xlLmxvZygiVW5rbm93biBtZXRob2QgIiArIGNhbGwubWV0aG9kKTsKICAgIH0KICB9KTsKCn0pKCk7Cg=="></script>
<link href="data:text/css,table%2EdataTable%7Bwidth%3A100%25%3Bmargin%3A0%20auto%3Bclear%3Aboth%3Bborder%2Dcollapse%3Aseparate%3Bborder%2Dspacing%3A0%7Dtable%2EdataTable%20thead%20th%2Ctable%2EdataTable%20tfoot%20th%7Bfont%2Dweight%3Abold%7Dtable%2EdataTable%20thead%20th%2Ctable%2EdataTable%20thead%20td%7Bpadding%3A10px%2018px%3Bborder%2Dbottom%3A1px%20solid%20%23111%7Dtable%2EdataTable%20thead%20th%3Aactive%2Ctable%2EdataTable%20thead%20td%3Aactive%7Boutline%3Anone%7Dtable%2EdataTable%20tfoot%20th%2Ctable%2EdataTable%20tfoot%20td%7Bpadding%3A10px%2018px%206px%2018px%3Bborder%2Dtop%3A1px%20solid%20%23111%7Dtable%2EdataTable%20thead%20%2Esorting%2Ctable%2EdataTable%20thead%20%2Esorting%5Fasc%2Ctable%2EdataTable%20thead%20%2Esorting%5Fdesc%2Ctable%2EdataTable%20thead%20%2Esorting%5Fasc%5Fdisabled%2Ctable%2EdataTable%20thead%20%2Esorting%5Fdesc%5Fdisabled%7Bcursor%3Apointer%3B%2Acursor%3Ahand%3Bbackground%2Drepeat%3Ano%2Drepeat%3Bbackground%2Dposition%3Acenter%20right%7Dtable%2EdataTable%20thead%20%2Esorting%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7XQMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL%2BTq%2FQCM1oNiJidwox0355mXnG%2FDrEtIQ6azioNZQxI0ykPhTQIwhCR%2BBmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P%2BGtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC%29%7Dtable%2EdataTable%20thead%20%2Esorting%5Fasc%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS%2FgDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM%2BwTENuQahAvEO9DMwiGdwAxOymGJQLxTyD%2BjgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg%3D%3D%29%7Dtable%2EdataTable%20thead%20%2Esorting%5Fdesc%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA%2FBOIv2PBIPFEUgxjB%2BIdQPwfC94HxLykus4GiD%2BhGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL%2BAuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII%3D%29%7Dtable%2EdataTable%20thead%20%2Esorting%5Fasc%5Fdisabled%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAW0lEQVQoz2NgoCm4w3Vnwh02wspK7%2Fy6k01Ikdadx3f%2B37l9RxmfIsY7c4GKQHDiHUbcyhzvvIMq%2B3THBpci3jv7oIpAcMcdduzKEu%2F8vPMdDn%2FeiWQYBYMKAAC3ykIEuYQJUgAAAABJRU5ErkJggg%3D%3D%29%7Dtable%2EdataTable%20thead%20%2Esorting%5Fdesc%5Fdisabled%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAWUlEQVQoz2NgGAWDCtyJvPPzznc4%2FHknEbsy9js77vyHw313eHGZZ3PnE1TRuzuOuK1lvDMRqmzuHUZ87lO%2Bcxuo6PEdLUIeyb7z604pYf%2By3Zlwh4u2YQoAc7ZCBHH4jigAAAAASUVORK5CYII%3D%29%7Dtable%2EdataTable%20tbody%20tr%7Bbackground%2Dcolor%3A%23ffffff%7Dtable%2EdataTable%20tbody%20tr%2Eselected%7Bbackground%2Dcolor%3A%23B0BED9%7Dtable%2EdataTable%20tbody%20th%2Ctable%2EdataTable%20tbody%20td%7Bpadding%3A8px%2010px%7Dtable%2EdataTable%2Erow%2Dborder%20tbody%20th%2Ctable%2EdataTable%2Erow%2Dborder%20tbody%20td%2Ctable%2EdataTable%2Edisplay%20tbody%20th%2Ctable%2EdataTable%2Edisplay%20tbody%20td%7Bborder%2Dtop%3A1px%20solid%20%23ddd%7Dtable%2EdataTable%2Erow%2Dborder%20tbody%20tr%3Afirst%2Dchild%20th%2Ctable%2EdataTable%2Erow%2Dborder%20tbody%20tr%3Afirst%2Dchild%20td%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3Afirst%2Dchild%20th%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3Afirst%2Dchild%20td%7Bborder%2Dtop%3Anone%7Dtable%2EdataTable%2Ecell%2Dborder%20tbody%20th%2Ctable%2EdataTable%2Ecell%2Dborder%20tbody%20td%7Bborder%2Dtop%3A1px%20solid%20%23ddd%3Bborder%2Dright%3A1px%20solid%20%23ddd%7Dtable%2EdataTable%2Ecell%2Dborder%20tbody%20tr%20th%3Afirst%2Dchild%2Ctable%2EdataTable%2Ecell%2Dborder%20tbody%20tr%20td%3Afirst%2Dchild%7Bborder%2Dleft%3A1px%20solid%20%23ddd%7Dtable%2EdataTable%2Ecell%2Dborder%20tbody%20tr%3Afirst%2Dchild%20th%2Ctable%2EdataTable%2Ecell%2Dborder%20tbody%20tr%3Afirst%2Dchild%20td%7Bborder%2Dtop%3Anone%7Dtable%2EdataTable%2Estripe%20tbody%20tr%2Eodd%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%7Bbackground%2Dcolor%3A%23f9f9f9%7Dtable%2EdataTable%2Estripe%20tbody%20tr%2Eodd%2Eselected%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%2Eselected%7Bbackground%2Dcolor%3A%23acbad4%7Dtable%2EdataTable%2Ehover%20tbody%20tr%3Ahover%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%7Bbackground%2Dcolor%3A%23f6f6f6%7Dtable%2EdataTable%2Ehover%20tbody%20tr%3Ahover%2Eselected%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%2Eselected%7Bbackground%2Dcolor%3A%23aab7d1%7Dtable%2EdataTable%2Eorder%2Dcolumn%20tbody%20tr%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%20tbody%20tr%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%20tbody%20tr%3E%2Esorting%5F3%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3E%2Esorting%5F1%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3E%2Esorting%5F2%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23fafafa%7Dtable%2EdataTable%2Eorder%2Dcolumn%20tbody%20tr%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%20tbody%20tr%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%20tbody%20tr%2Eselected%3E%2Esorting%5F3%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%2Eselected%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23acbad5%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eodd%3E%2Esorting%5F1%7Bbackground%2Dcolor%3A%23f1f1f1%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eodd%3E%2Esorting%5F2%7Bbackground%2Dcolor%3A%23f3f3f3%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eodd%3E%2Esorting%5F3%7Bbackground%2Dcolor%3Awhitesmoke%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eodd%2Eselected%3E%2Esorting%5F1%7Bbackground%2Dcolor%3A%23a6b4cd%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eodd%2Eselected%3E%2Esorting%5F2%7Bbackground%2Dcolor%3A%23a8b5cf%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%2Eselected%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eodd%2Eselected%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23a9b7d1%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eeven%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eeven%3E%2Esorting%5F1%7Bbackground%2Dcolor%3A%23fafafa%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eeven%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eeven%3E%2Esorting%5F2%7Bbackground%2Dcolor%3A%23fcfcfc%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eeven%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eeven%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23fefefe%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eeven%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eeven%2Eselected%3E%2Esorting%5F1%7Bbackground%2Dcolor%3A%23acbad5%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eeven%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eeven%2Eselected%3E%2Esorting%5F2%7Bbackground%2Dcolor%3A%23aebcd6%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eeven%2Eselected%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eeven%2Eselected%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23afbdd8%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%3E%2Esorting%5F1%7Bbackground%2Dcolor%3A%23eaeaea%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%3E%2Esorting%5F2%7Bbackground%2Dcolor%3A%23ececec%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23efefef%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F1%7Bbackground%2Dcolor%3A%23a2aec7%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F2%7Bbackground%2Dcolor%3A%23a3b0c9%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23a5b2cb%7Dtable%2EdataTable%2Eno%2Dfooter%7Bborder%2Dbottom%3A1px%20solid%20%23111%7Dtable%2EdataTable%2Enowrap%20th%2Ctable%2EdataTable%2Enowrap%20td%7Bwhite%2Dspace%3Anowrap%7Dtable%2EdataTable%2Ecompact%20thead%20th%2Ctable%2EdataTable%2Ecompact%20thead%20td%7Bpadding%3A4px%2017px%204px%204px%7Dtable%2EdataTable%2Ecompact%20tfoot%20th%2Ctable%2EdataTable%2Ecompact%20tfoot%20td%7Bpadding%3A4px%7Dtable%2EdataTable%2Ecompact%20tbody%20th%2Ctable%2EdataTable%2Ecompact%20tbody%20td%7Bpadding%3A4px%7Dtable%2EdataTable%20th%2Edt%2Dleft%2Ctable%2EdataTable%20td%2Edt%2Dleft%7Btext%2Dalign%3Aleft%7Dtable%2EdataTable%20th%2Edt%2Dcenter%2Ctable%2EdataTable%20td%2Edt%2Dcenter%2Ctable%2EdataTable%20td%2EdataTables%5Fempty%7Btext%2Dalign%3Acenter%7Dtable%2EdataTable%20th%2Edt%2Dright%2Ctable%2EdataTable%20td%2Edt%2Dright%7Btext%2Dalign%3Aright%7Dtable%2EdataTable%20th%2Edt%2Djustify%2Ctable%2EdataTable%20td%2Edt%2Djustify%7Btext%2Dalign%3Ajustify%7Dtable%2EdataTable%20th%2Edt%2Dnowrap%2Ctable%2EdataTable%20td%2Edt%2Dnowrap%7Bwhite%2Dspace%3Anowrap%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Dleft%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Dleft%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Dleft%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Dleft%7Btext%2Dalign%3Aleft%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Dcenter%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Dcenter%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Dcenter%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Dcenter%7Btext%2Dalign%3Acenter%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Dright%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Dright%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Dright%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Dright%7Btext%2Dalign%3Aright%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Djustify%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Djustify%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Djustify%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Djustify%7Btext%2Dalign%3Ajustify%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Dnowrap%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Dnowrap%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Dnowrap%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Dnowrap%7Bwhite%2Dspace%3Anowrap%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Dleft%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Dleft%7Btext%2Dalign%3Aleft%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Dcenter%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Dcenter%7Btext%2Dalign%3Acenter%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Dright%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Dright%7Btext%2Dalign%3Aright%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Djustify%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Djustify%7Btext%2Dalign%3Ajustify%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Dnowrap%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Dnowrap%7Bwhite%2Dspace%3Anowrap%7Dtable%2EdataTable%2Ctable%2EdataTable%20th%2Ctable%2EdataTable%20td%7Bbox%2Dsizing%3Acontent%2Dbox%7D%2EdataTables%5Fwrapper%7Bposition%3Arelative%3Bclear%3Aboth%3B%2Azoom%3A1%3Bzoom%3A1%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Flength%7Bfloat%3Aleft%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%7Bfloat%3Aright%3Btext%2Dalign%3Aright%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%20input%7Bmargin%2Dleft%3A0%2E5em%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Finfo%7Bclear%3Aboth%3Bfloat%3Aleft%3Bpadding%2Dtop%3A0%2E755em%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%7Bfloat%3Aright%3Btext%2Dalign%3Aright%3Bpadding%2Dtop%3A0%2E25em%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%7Bbox%2Dsizing%3Aborder%2Dbox%3Bdisplay%3Ainline%2Dblock%3Bmin%2Dwidth%3A1%2E5em%3Bpadding%3A0%2E5em%201em%3Bmargin%2Dleft%3A2px%3Btext%2Dalign%3Acenter%3Btext%2Ddecoration%3Anone%20%21important%3Bcursor%3Apointer%3B%2Acursor%3Ahand%3Bcolor%3A%23333%20%21important%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A2px%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Ecurrent%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Ecurrent%3Ahover%7Bcolor%3A%23333%20%21important%3Bborder%3A1px%20solid%20%23979797%3Bbackground%2Dcolor%3Awhite%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20left%20bottom%2C%20color%2Dstop%280%25%2C%20%23fff%29%2C%20color%2Dstop%28100%25%2C%20%23dcdcdc%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23dcdcdc%20100%25%29%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23dcdcdc%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23dcdcdc%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23dcdcdc%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%20%23fff%200%25%2C%20%23dcdcdc%20100%25%29%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Edisabled%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Edisabled%3Ahover%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Edisabled%3Aactive%7Bcursor%3Adefault%3Bcolor%3A%23666%20%21important%3Bborder%3A1px%20solid%20transparent%3Bbackground%3Atransparent%3Bbox%2Dshadow%3Anone%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%3Ahover%7Bcolor%3Awhite%20%21important%3Bborder%3A1px%20solid%20%23111%3Bbackground%2Dcolor%3A%23585858%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20left%20bottom%2C%20color%2Dstop%280%25%2C%20%23585858%29%2C%20color%2Dstop%28100%25%2C%20%23111%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23585858%200%25%2C%20%23111%20100%25%29%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23585858%200%25%2C%20%23111%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23585858%200%25%2C%20%23111%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23585858%200%25%2C%20%23111%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%20%23585858%200%25%2C%20%23111%20100%25%29%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%3Aactive%7Boutline%3Anone%3Bbackground%2Dcolor%3A%232b2b2b%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20left%20bottom%2C%20color%2Dstop%280%25%2C%20%232b2b2b%29%2C%20color%2Dstop%28100%25%2C%20%230c0c0c%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbox%2Dshadow%3Ainset%200%200%203px%20%23111%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Eellipsis%7Bpadding%3A0%201em%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fprocessing%7Bposition%3Aabsolute%3Btop%3A50%25%3Bleft%3A50%25%3Bwidth%3A100%25%3Bheight%3A40px%3Bmargin%2Dleft%3A%2D50%25%3Bmargin%2Dtop%3A%2D25px%3Bpadding%2Dtop%3A20px%3Btext%2Dalign%3Acenter%3Bfont%2Dsize%3A1%2E2em%3Bbackground%2Dcolor%3Awhite%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20right%20top%2C%20color%2Dstop%280%25%2C%20rgba%28255%2C255%2C255%2C0%29%29%2C%20color%2Dstop%2825%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%29%2C%20color%2Dstop%2875%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%29%2C%20color%2Dstop%28100%25%2C%20rgba%28255%2C255%2C255%2C0%29%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28left%2C%20rgba%28255%2C255%2C255%2C0%29%200%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2025%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2075%25%2C%20rgba%28255%2C255%2C255%2C0%29%20100%25%29%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28left%2C%20rgba%28255%2C255%2C255%2C0%29%200%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2025%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2075%25%2C%20rgba%28255%2C255%2C255%2C0%29%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28left%2C%20rgba%28255%2C255%2C255%2C0%29%200%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2025%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2075%25%2C%20rgba%28255%2C255%2C255%2C0%29%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28left%2C%20rgba%28255%2C255%2C255%2C0%29%200%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2025%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2075%25%2C%20rgba%28255%2C255%2C255%2C0%29%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20right%2C%20rgba%28255%2C255%2C255%2C0%29%200%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2025%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2075%25%2C%20rgba%28255%2C255%2C255%2C0%29%20100%25%29%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Flength%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Finfo%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fprocessing%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%7Bcolor%3A%23333%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%7Bclear%3Aboth%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%7B%2Amargin%2Dtop%3A%2D1px%3B%2Dwebkit%2Doverflow%2Dscrolling%3Atouch%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Ethead%3Etr%3Eth%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Ethead%3Etr%3Etd%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Etbody%3Etr%3Eth%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Etbody%3Etr%3Etd%7Bvertical%2Dalign%3Amiddle%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Ethead%3Etr%3Eth%3Ediv%2EdataTables%5Fsizing%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Ethead%3Etr%3Etd%3Ediv%2EdataTables%5Fsizing%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Etbody%3Etr%3Eth%3Ediv%2EdataTables%5Fsizing%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Etbody%3Etr%3Etd%3Ediv%2EdataTables%5Fsizing%7Bheight%3A0%3Boverflow%3Ahidden%3Bmargin%3A0%20%21important%3Bpadding%3A0%20%21important%7D%2EdataTables%5Fwrapper%2Eno%2Dfooter%20%2EdataTables%5FscrollBody%7Bborder%2Dbottom%3A1px%20solid%20%23111%7D%2EdataTables%5Fwrapper%2Eno%2Dfooter%20div%2EdataTables%5FscrollHead%20table%2EdataTable%2C%2EdataTables%5Fwrapper%2Eno%2Dfooter%20div%2EdataTables%5FscrollBody%3Etable%7Bborder%2Dbottom%3Anone%7D%2EdataTables%5Fwrapper%3Aafter%7Bvisibility%3Ahidden%3Bdisplay%3Ablock%3Bcontent%3A%22%22%3Bclear%3Aboth%3Bheight%3A0%7D%40media%20screen%20and%20%28max%2Dwidth%3A%20767px%29%7B%2EdataTables%5Fwrapper%20%2EdataTables%5Finfo%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%7Bfloat%3Anone%3Btext%2Dalign%3Acenter%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%7Bmargin%2Dtop%3A0%2E5em%7D%7D%40media%20screen%20and%20%28max%2Dwidth%3A%20640px%29%7B%2EdataTables%5Fwrapper%20%2EdataTables%5Flength%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%7Bfloat%3Anone%3Btext%2Dalign%3Acenter%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%7Bmargin%2Dtop%3A0%2E5em%7D%7D%0A" rel="stylesheet" />
<link href="data:text/css,%0Atable%2EdataTable%20tr%2Eselected%20td%2C%20table%2EdataTable%20td%2Eselected%20%7B%0Abackground%2Dcolor%3A%20%23b0bed9%20%21important%3B%0A%7D%0A%0A%2EdataTables%5FscrollBody%20%2EdataTables%5Fsizing%20%7B%0Avisibility%3A%20hidden%3B%0A%7D%0A%0Adiv%2Edatatables%20%7B%0Acolor%3A%20%23333%3B%0A%7D%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,LyohCiAgIENvcHlyaWdodCAyMDA4LTIwMTkgU3ByeU1lZGlhIEx0ZC4KCiBUaGlzIHNvdXJjZSBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGF2YWlsYWJsZSB1bmRlciB0aGUgZm9sbG93aW5nIGxpY2Vuc2U6CiAgIE1JVCBsaWNlbnNlIC0gaHR0cDovL2RhdGF0YWJsZXMubmV0L2xpY2Vuc2UKCiBUaGlzIHNvdXJjZSBmaWxlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkKIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIGxpY2Vuc2UgZmlsZXMgZm9yIGRldGFpbHMuCgogRm9yIGRldGFpbHMgcGxlYXNlIHJlZmVyIHRvOiBodHRwOi8vd3d3LmRhdGF0YWJsZXMubmV0CiBEYXRhVGFibGVzIDEuMTAuMjAKIMKpMjAwOC0yMDE5IFNwcnlNZWRpYSBMdGQgLSBkYXRhdGFibGVzLm5ldC9saWNlbnNlCiovCnZhciAkanNjb21wPSRqc2NvbXB8fHt9OyRqc2NvbXAuc2NvcGU9e307JGpzY29tcC5maW5kSW50ZXJuYWw9ZnVuY3Rpb24oZix6LHkpe2YgaW5zdGFuY2VvZiBTdHJpbmcmJihmPVN0cmluZyhmKSk7Zm9yKHZhciBwPWYubGVuZ3RoLEg9MDtIPHA7SCsrKXt2YXIgTD1mW0hdO2lmKHouY2FsbCh5LEwsSCxmKSlyZXR1cm57aTpILHY6TH19cmV0dXJue2k6LTEsdjp2b2lkIDB9fTskanNjb21wLkFTU1VNRV9FUzU9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExOyRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTsKJGpzY29tcC5kZWZpbmVQcm9wZXJ0eT0kanNjb21wLkFTU1VNRV9FUzV8fCJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydGllcz9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oZix6LHkpe2YhPUFycmF5LnByb3RvdHlwZSYmZiE9T2JqZWN0LnByb3RvdHlwZSYmKGZbel09eS52YWx1ZSl9OyRqc2NvbXAuZ2V0R2xvYmFsPWZ1bmN0aW9uKGYpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3c9PT1mP2Y6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWwmJm51bGwhPWdsb2JhbD9nbG9iYWw6Zn07JGpzY29tcC5nbG9iYWw9JGpzY29tcC5nZXRHbG9iYWwodGhpcyk7CiRqc2NvbXAucG9seWZpbGw9ZnVuY3Rpb24oZix6LHkscCl7aWYoeil7eT0kanNjb21wLmdsb2JhbDtmPWYuc3BsaXQoIi4iKTtmb3IocD0wO3A8Zi5sZW5ndGgtMTtwKyspe3ZhciBIPWZbcF07SCBpbiB5fHwoeVtIXT17fSk7eT15W0hdfWY9ZltmLmxlbmd0aC0xXTtwPXlbZl07ej16KHApO3ohPXAmJm51bGwhPXomJiRqc2NvbXAuZGVmaW5lUHJvcGVydHkoeSxmLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6en0pfX07JGpzY29tcC5wb2x5ZmlsbCgiQXJyYXkucHJvdG90eXBlLmZpbmQiLGZ1bmN0aW9uKGYpe3JldHVybiBmP2Y6ZnVuY3Rpb24oZix5KXtyZXR1cm4gJGpzY29tcC5maW5kSW50ZXJuYWwodGhpcyxmLHkpLnZ9fSwiZXM2IiwiZXMzIik7CihmdW5jdGlvbihmKXsiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiXSxmdW5jdGlvbih6KXtyZXR1cm4gZih6LHdpbmRvdyxkb2N1bWVudCl9KToib2JqZWN0Ij09PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKHoseSl7enx8KHo9d2luZG93KTt5fHwoeT0idW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3c/cmVxdWlyZSgianF1ZXJ5Iik6cmVxdWlyZSgianF1ZXJ5IikoeikpO3JldHVybiBmKHkseix6LmRvY3VtZW50KX06ZihqUXVlcnksd2luZG93LGRvY3VtZW50KX0pKGZ1bmN0aW9uKGYseix5LHApe2Z1bmN0aW9uIEgoYSl7dmFyIGIsYyxkPXt9O2YuZWFjaChhLGZ1bmN0aW9uKGUsaCl7KGI9ZS5tYXRjaCgvXihbXkEtWl0rPykoW0EtWl0pLykpJiYtMSE9PSJhIGFhIGFpIGFvIGFzIGIgZm4gaSBtIG8gcyAiLmluZGV4T2YoYlsxXSsiICIpJiYoYz1lLnJlcGxhY2UoYlswXSxiWzJdLnRvTG93ZXJDYXNlKCkpLApkW2NdPWUsIm8iPT09YlsxXSYmSChhW2VdKSl9KTthLl9odW5nYXJpYW5NYXA9ZH1mdW5jdGlvbiBMKGEsYixjKXthLl9odW5nYXJpYW5NYXB8fEgoYSk7dmFyIGQ7Zi5lYWNoKGIsZnVuY3Rpb24oZSxoKXtkPWEuX2h1bmdhcmlhbk1hcFtlXTtkPT09cHx8IWMmJmJbZF0hPT1wfHwoIm8iPT09ZC5jaGFyQXQoMCk/KGJbZF18fChiW2RdPXt9KSxmLmV4dGVuZCghMCxiW2RdLGJbZV0pLEwoYVtkXSxiW2RdLGMpKTpiW2RdPWJbZV0pfSl9ZnVuY3Rpb24gR2EoYSl7dmFyIGI9cS5kZWZhdWx0cy5vTGFuZ3VhZ2UsYz1iLnNEZWNpbWFsO2MmJkhhKGMpO2lmKGEpe3ZhciBkPWEuc1plcm9SZWNvcmRzOyFhLnNFbXB0eVRhYmxlJiZkJiYiTm8gZGF0YSBhdmFpbGFibGUgaW4gdGFibGUiPT09Yi5zRW1wdHlUYWJsZSYmTShhLGEsInNaZXJvUmVjb3JkcyIsInNFbXB0eVRhYmxlIik7IWEuc0xvYWRpbmdSZWNvcmRzJiZkJiYiTG9hZGluZy4uLiI9PT1iLnNMb2FkaW5nUmVjb3JkcyYmTShhLGEsCiJzWmVyb1JlY29yZHMiLCJzTG9hZGluZ1JlY29yZHMiKTthLnNJbmZvVGhvdXNhbmRzJiYoYS5zVGhvdXNhbmRzPWEuc0luZm9UaG91c2FuZHMpOyhhPWEuc0RlY2ltYWwpJiZjIT09YSYmSGEoYSl9fWZ1bmN0aW9uIGpiKGEpe0YoYSwib3JkZXJpbmciLCJiU29ydCIpO0YoYSwib3JkZXJNdWx0aSIsImJTb3J0TXVsdGkiKTtGKGEsIm9yZGVyQ2xhc3NlcyIsImJTb3J0Q2xhc3NlcyIpO0YoYSwib3JkZXJDZWxsc1RvcCIsImJTb3J0Q2VsbHNUb3AiKTtGKGEsIm9yZGVyIiwiYWFTb3J0aW5nIik7RihhLCJvcmRlckZpeGVkIiwiYWFTb3J0aW5nRml4ZWQiKTtGKGEsInBhZ2luZyIsImJQYWdpbmF0ZSIpO0YoYSwicGFnaW5nVHlwZSIsInNQYWdpbmF0aW9uVHlwZSIpO0YoYSwicGFnZUxlbmd0aCIsImlEaXNwbGF5TGVuZ3RoIik7RihhLCJzZWFyY2hpbmciLCJiRmlsdGVyIik7ImJvb2xlYW4iPT09dHlwZW9mIGEuc1Njcm9sbFgmJihhLnNTY3JvbGxYPWEuc1Njcm9sbFg/IjEwMCUiOgoiIik7ImJvb2xlYW4iPT09dHlwZW9mIGEuc2Nyb2xsWCYmKGEuc2Nyb2xsWD1hLnNjcm9sbFg/IjEwMCUiOiIiKTtpZihhPWEuYW9TZWFyY2hDb2xzKWZvcih2YXIgYj0wLGM9YS5sZW5ndGg7YjxjO2IrKylhW2JdJiZMKHEubW9kZWxzLm9TZWFyY2gsYVtiXSl9ZnVuY3Rpb24ga2IoYSl7RihhLCJvcmRlcmFibGUiLCJiU29ydGFibGUiKTtGKGEsIm9yZGVyRGF0YSIsImFEYXRhU29ydCIpO0YoYSwib3JkZXJTZXF1ZW5jZSIsImFzU29ydGluZyIpO0YoYSwib3JkZXJEYXRhVHlwZSIsInNvcnREYXRhVHlwZSIpO3ZhciBiPWEuYURhdGFTb3J0OyJudW1iZXIiIT09dHlwZW9mIGJ8fGYuaXNBcnJheShiKXx8KGEuYURhdGFTb3J0PVtiXSl9ZnVuY3Rpb24gbGIoYSl7aWYoIXEuX19icm93c2VyKXt2YXIgYj17fTtxLl9fYnJvd3Nlcj1iO3ZhciBjPWYoIjxkaXYvPiIpLmNzcyh7cG9zaXRpb246ImZpeGVkIix0b3A6MCxsZWZ0Oi0xKmYoeikuc2Nyb2xsTGVmdCgpLGhlaWdodDoxLHdpZHRoOjEsCm92ZXJmbG93OiJoaWRkZW4ifSkuYXBwZW5kKGYoIjxkaXYvPiIpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix0b3A6MSxsZWZ0OjEsd2lkdGg6MTAwLG92ZXJmbG93OiJzY3JvbGwifSkuYXBwZW5kKGYoIjxkaXYvPiIpLmNzcyh7d2lkdGg6IjEwMCUiLGhlaWdodDoxMH0pKSkuYXBwZW5kVG8oImJvZHkiKSxkPWMuY2hpbGRyZW4oKSxlPWQuY2hpbGRyZW4oKTtiLmJhcldpZHRoPWRbMF0ub2Zmc2V0V2lkdGgtZFswXS5jbGllbnRXaWR0aDtiLmJTY3JvbGxPdmVyc2l6ZT0xMDA9PT1lWzBdLm9mZnNldFdpZHRoJiYxMDAhPT1kWzBdLmNsaWVudFdpZHRoO2IuYlNjcm9sbGJhckxlZnQ9MSE9PU1hdGgucm91bmQoZS5vZmZzZXQoKS5sZWZ0KTtiLmJCb3VuZGluZz1jWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoPyEwOiExO2MucmVtb3ZlKCl9Zi5leHRlbmQoYS5vQnJvd3NlcixxLl9fYnJvd3Nlcik7YS5vU2Nyb2xsLmlCYXJXaWR0aD1xLl9fYnJvd3Nlci5iYXJXaWR0aH0KZnVuY3Rpb24gbWIoYSxiLGMsZCxlLGgpe3ZhciBnPSExO2lmKGMhPT1wKXt2YXIgaz1jO2c9ITB9Zm9yKDtkIT09ZTspYS5oYXNPd25Qcm9wZXJ0eShkKSYmKGs9Zz9iKGssYVtkXSxkLGEpOmFbZF0sZz0hMCxkKz1oKTtyZXR1cm4ga31mdW5jdGlvbiBJYShhLGIpe3ZhciBjPXEuZGVmYXVsdHMuY29sdW1uLGQ9YS5hb0NvbHVtbnMubGVuZ3RoO2M9Zi5leHRlbmQoe30scS5tb2RlbHMub0NvbHVtbixjLHtuVGg6Yj9iOnkuY3JlYXRlRWxlbWVudCgidGgiKSxzVGl0bGU6Yy5zVGl0bGU/Yy5zVGl0bGU6Yj9iLmlubmVySFRNTDoiIixhRGF0YVNvcnQ6Yy5hRGF0YVNvcnQ/Yy5hRGF0YVNvcnQ6W2RdLG1EYXRhOmMubURhdGE/Yy5tRGF0YTpkLGlkeDpkfSk7YS5hb0NvbHVtbnMucHVzaChjKTtjPWEuYW9QcmVTZWFyY2hDb2xzO2NbZF09Zi5leHRlbmQoe30scS5tb2RlbHMub1NlYXJjaCxjW2RdKTttYShhLGQsZihiKS5kYXRhKCkpfWZ1bmN0aW9uIG1hKGEsYixjKXtiPWEuYW9Db2x1bW5zW2JdOwp2YXIgZD1hLm9DbGFzc2VzLGU9ZihiLm5UaCk7aWYoIWIuc1dpZHRoT3JpZyl7Yi5zV2lkdGhPcmlnPWUuYXR0cigid2lkdGgiKXx8bnVsbDt2YXIgaD0oZS5hdHRyKCJzdHlsZSIpfHwiIikubWF0Y2goL3dpZHRoOlxzKihcZCtbcHhlbSVdKykvKTtoJiYoYi5zV2lkdGhPcmlnPWhbMV0pfWMhPT1wJiZudWxsIT09YyYmKGtiKGMpLEwocS5kZWZhdWx0cy5jb2x1bW4sYywhMCksYy5tRGF0YVByb3A9PT1wfHxjLm1EYXRhfHwoYy5tRGF0YT1jLm1EYXRhUHJvcCksYy5zVHlwZSYmKGIuX3NNYW51YWxUeXBlPWMuc1R5cGUpLGMuY2xhc3NOYW1lJiYhYy5zQ2xhc3MmJihjLnNDbGFzcz1jLmNsYXNzTmFtZSksYy5zQ2xhc3MmJmUuYWRkQ2xhc3MoYy5zQ2xhc3MpLGYuZXh0ZW5kKGIsYyksTShiLGMsInNXaWR0aCIsInNXaWR0aE9yaWciKSxjLmlEYXRhU29ydCE9PXAmJihiLmFEYXRhU29ydD1bYy5pRGF0YVNvcnRdKSxNKGIsYywiYURhdGFTb3J0IikpO3ZhciBnPWIubURhdGEsaz1VKGcpLApsPWIubVJlbmRlcj9VKGIubVJlbmRlcik6bnVsbDtjPWZ1bmN0aW9uKGEpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGEmJi0xIT09YS5pbmRleE9mKCJAIil9O2IuX2JBdHRyU3JjPWYuaXNQbGFpbk9iamVjdChnKSYmKGMoZy5zb3J0KXx8YyhnLnR5cGUpfHxjKGcuZmlsdGVyKSk7Yi5fc2V0dGVyPW51bGw7Yi5mbkdldERhdGE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWsoYSxiLHAsYyk7cmV0dXJuIGwmJmI/bChkLGIsYSxjKTpkfTtiLmZuU2V0RGF0YT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIFEoZykoYSxiLGMpfTsibnVtYmVyIiE9PXR5cGVvZiBnJiYoYS5fcm93UmVhZE9iamVjdD0hMCk7YS5vRmVhdHVyZXMuYlNvcnR8fChiLmJTb3J0YWJsZT0hMSxlLmFkZENsYXNzKGQuc1NvcnRhYmxlTm9uZSkpO2E9LTEhPT1mLmluQXJyYXkoImFzYyIsYi5hc1NvcnRpbmcpO2M9LTEhPT1mLmluQXJyYXkoImRlc2MiLGIuYXNTb3J0aW5nKTtiLmJTb3J0YWJsZSYmKGF8fGMpP2EmJiFjPyhiLnNTb3J0aW5nQ2xhc3M9CmQuc1NvcnRhYmxlQXNjLGIuc1NvcnRpbmdDbGFzc0pVST1kLnNTb3J0SlVJQXNjQWxsb3dlZCk6IWEmJmM/KGIuc1NvcnRpbmdDbGFzcz1kLnNTb3J0YWJsZURlc2MsYi5zU29ydGluZ0NsYXNzSlVJPWQuc1NvcnRKVUlEZXNjQWxsb3dlZCk6KGIuc1NvcnRpbmdDbGFzcz1kLnNTb3J0YWJsZSxiLnNTb3J0aW5nQ2xhc3NKVUk9ZC5zU29ydEpVSSk6KGIuc1NvcnRpbmdDbGFzcz1kLnNTb3J0YWJsZU5vbmUsYi5zU29ydGluZ0NsYXNzSlVJPSIiKX1mdW5jdGlvbiBhYShhKXtpZighMSE9PWEub0ZlYXR1cmVzLmJBdXRvV2lkdGgpe3ZhciBiPWEuYW9Db2x1bW5zO0phKGEpO2Zvcih2YXIgYz0wLGQ9Yi5sZW5ndGg7YzxkO2MrKyliW2NdLm5UaC5zdHlsZS53aWR0aD1iW2NdLnNXaWR0aH1iPWEub1Njcm9sbDsiIj09PWIuc1kmJiIiPT09Yi5zWHx8bmEoYSk7QShhLG51bGwsImNvbHVtbi1zaXppbmciLFthXSl9ZnVuY3Rpb24gYmEoYSxiKXthPW9hKGEsImJWaXNpYmxlIik7cmV0dXJuIm51bWJlciI9PT0KdHlwZW9mIGFbYl0/YVtiXTpudWxsfWZ1bmN0aW9uIGNhKGEsYil7YT1vYShhLCJiVmlzaWJsZSIpO2I9Zi5pbkFycmF5KGIsYSk7cmV0dXJuLTEhPT1iP2I6bnVsbH1mdW5jdGlvbiBXKGEpe3ZhciBiPTA7Zi5lYWNoKGEuYW9Db2x1bW5zLGZ1bmN0aW9uKGEsZCl7ZC5iVmlzaWJsZSYmIm5vbmUiIT09ZihkLm5UaCkuY3NzKCJkaXNwbGF5IikmJmIrK30pO3JldHVybiBifWZ1bmN0aW9uIG9hKGEsYil7dmFyIGM9W107Zi5tYXAoYS5hb0NvbHVtbnMsZnVuY3Rpb24oYSxlKXthW2JdJiZjLnB1c2goZSl9KTtyZXR1cm4gY31mdW5jdGlvbiBLYShhKXt2YXIgYj1hLmFvQ29sdW1ucyxjPWEuYW9EYXRhLGQ9cS5leHQudHlwZS5kZXRlY3QsZSxoLGc7dmFyIGs9MDtmb3IoZT1iLmxlbmd0aDtrPGU7aysrKXt2YXIgZj1iW2tdO3ZhciBuPVtdO2lmKCFmLnNUeXBlJiZmLl9zTWFudWFsVHlwZSlmLnNUeXBlPWYuX3NNYW51YWxUeXBlO2Vsc2UgaWYoIWYuc1R5cGUpe3ZhciBtPTA7Zm9yKGg9CmQubGVuZ3RoO208aDttKyspe3ZhciB3PTA7Zm9yKGc9Yy5sZW5ndGg7dzxnO3crKyl7blt3XT09PXAmJihuW3ddPUkoYSx3LGssInR5cGUiKSk7dmFyIHU9ZFttXShuW3ddLGEpO2lmKCF1JiZtIT09ZC5sZW5ndGgtMSlicmVhaztpZigiaHRtbCI9PT11KWJyZWFrfWlmKHUpe2Yuc1R5cGU9dTticmVha319Zi5zVHlwZXx8KGYuc1R5cGU9InN0cmluZyIpfX19ZnVuY3Rpb24gbmIoYSxiLGMsZCl7dmFyIGUsaCxnLGs9YS5hb0NvbHVtbnM7aWYoYilmb3IoZT1iLmxlbmd0aC0xOzA8PWU7ZS0tKXt2YXIgbD1iW2VdO3ZhciBuPWwudGFyZ2V0cyE9PXA/bC50YXJnZXRzOmwuYVRhcmdldHM7Zi5pc0FycmF5KG4pfHwobj1bbl0pO3ZhciBtPTA7Zm9yKGg9bi5sZW5ndGg7bTxoO20rKylpZigibnVtYmVyIj09PXR5cGVvZiBuW21dJiYwPD1uW21dKXtmb3IoO2subGVuZ3RoPD1uW21dOylJYShhKTtkKG5bbV0sbCl9ZWxzZSBpZigibnVtYmVyIj09PXR5cGVvZiBuW21dJiYwPm5bbV0pZChrLmxlbmd0aCsKblttXSxsKTtlbHNlIGlmKCJzdHJpbmciPT09dHlwZW9mIG5bbV0pe3ZhciB3PTA7Zm9yKGc9ay5sZW5ndGg7dzxnO3crKykoIl9hbGwiPT1uW21dfHxmKGtbd10ublRoKS5oYXNDbGFzcyhuW21dKSkmJmQodyxsKX19aWYoYylmb3IoZT0wLGE9Yy5sZW5ndGg7ZTxhO2UrKylkKGUsY1tlXSl9ZnVuY3Rpb24gUihhLGIsYyxkKXt2YXIgZT1hLmFvRGF0YS5sZW5ndGgsaD1mLmV4dGVuZCghMCx7fSxxLm1vZGVscy5vUm93LHtzcmM6Yz8iZG9tIjoiZGF0YSIsaWR4OmV9KTtoLl9hRGF0YT1iO2EuYW9EYXRhLnB1c2goaCk7Zm9yKHZhciBnPWEuYW9Db2x1bW5zLGs9MCxsPWcubGVuZ3RoO2s8bDtrKyspZ1trXS5zVHlwZT1udWxsO2EuYWlEaXNwbGF5TWFzdGVyLnB1c2goZSk7Yj1hLnJvd0lkRm4oYik7YiE9PXAmJihhLmFJZHNbYl09aCk7IWMmJmEub0ZlYXR1cmVzLmJEZWZlclJlbmRlcnx8TGEoYSxlLGMsZCk7cmV0dXJuIGV9ZnVuY3Rpb24gcGEoYSxiKXt2YXIgYztiIGluc3RhbmNlb2YKZnx8KGI9ZihiKSk7cmV0dXJuIGIubWFwKGZ1bmN0aW9uKGIsZSl7Yz1NYShhLGUpO3JldHVybiBSKGEsYy5kYXRhLGUsYy5jZWxscyl9KX1mdW5jdGlvbiBJKGEsYixjLGQpe3ZhciBlPWEuaURyYXcsaD1hLmFvQ29sdW1uc1tjXSxnPWEuYW9EYXRhW2JdLl9hRGF0YSxrPWguc0RlZmF1bHRDb250ZW50LGY9aC5mbkdldERhdGEoZyxkLHtzZXR0aW5nczphLHJvdzpiLGNvbDpjfSk7aWYoZj09PXApcmV0dXJuIGEuaURyYXdFcnJvciE9ZSYmbnVsbD09PWsmJihPKGEsMCwiUmVxdWVzdGVkIHVua25vd24gcGFyYW1ldGVyICIrKCJmdW5jdGlvbiI9PXR5cGVvZiBoLm1EYXRhPyJ7ZnVuY3Rpb259IjoiJyIraC5tRGF0YSsiJyIpKyIgZm9yIHJvdyAiK2IrIiwgY29sdW1uICIrYyw0KSxhLmlEcmF3RXJyb3I9ZSksaztpZigoZj09PWd8fG51bGw9PT1mKSYmbnVsbCE9PWsmJmQhPT1wKWY9aztlbHNlIGlmKCJmdW5jdGlvbiI9PT10eXBlb2YgZilyZXR1cm4gZi5jYWxsKGcpO3JldHVybiBudWxsPT09CmYmJiJkaXNwbGF5Ij09ZD8iIjpmfWZ1bmN0aW9uIG9iKGEsYixjLGQpe2EuYW9Db2x1bW5zW2NdLmZuU2V0RGF0YShhLmFvRGF0YVtiXS5fYURhdGEsZCx7c2V0dGluZ3M6YSxyb3c6Yixjb2w6Y30pfWZ1bmN0aW9uIE5hKGEpe3JldHVybiBmLm1hcChhLm1hdGNoKC8oXFwufFteXC5dKSsvZyl8fFsiIl0sZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXFxcLi9nLCIuIil9KX1mdW5jdGlvbiBVKGEpe2lmKGYuaXNQbGFpbk9iamVjdChhKSl7dmFyIGI9e307Zi5lYWNoKGEsZnVuY3Rpb24oYSxjKXtjJiYoYlthXT1VKGMpKX0pO3JldHVybiBmdW5jdGlvbihhLGMsaCxnKXt2YXIgZD1iW2NdfHxiLl87cmV0dXJuIGQhPT1wP2QoYSxjLGgsZyk6YX19aWYobnVsbD09PWEpcmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBhfTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEpcmV0dXJuIGZ1bmN0aW9uKGIsYyxoLGcpe3JldHVybiBhKGIsYyxoLGcpfTtpZigic3RyaW5nIiE9PXR5cGVvZiBhfHwKLTE9PT1hLmluZGV4T2YoIi4iKSYmLTE9PT1hLmluZGV4T2YoIlsiKSYmLTE9PT1hLmluZGV4T2YoIigiKSlyZXR1cm4gZnVuY3Rpb24oYixjKXtyZXR1cm4gYlthXX07dmFyIGM9ZnVuY3Rpb24oYSxiLGgpe2lmKCIiIT09aCl7dmFyIGQ9TmEoaCk7Zm9yKHZhciBlPTAsbD1kLmxlbmd0aDtlPGw7ZSsrKXtoPWRbZV0ubWF0Y2goZGEpO3ZhciBuPWRbZV0ubWF0Y2goWCk7aWYoaCl7ZFtlXT1kW2VdLnJlcGxhY2UoZGEsIiIpOyIiIT09ZFtlXSYmKGE9YVtkW2VdXSk7bj1bXTtkLnNwbGljZSgwLGUrMSk7ZD1kLmpvaW4oIi4iKTtpZihmLmlzQXJyYXkoYSkpZm9yKGU9MCxsPWEubGVuZ3RoO2U8bDtlKyspbi5wdXNoKGMoYVtlXSxiLGQpKTthPWhbMF0uc3Vic3RyaW5nKDEsaFswXS5sZW5ndGgtMSk7YT0iIj09PWE/bjpuLmpvaW4oYSk7YnJlYWt9ZWxzZSBpZihuKXtkW2VdPWRbZV0ucmVwbGFjZShYLCIiKTthPWFbZFtlXV0oKTtjb250aW51ZX1pZihudWxsPT09YXx8YVtkW2VdXT09PQpwKXJldHVybiBwO2E9YVtkW2VdXX19cmV0dXJuIGF9O3JldHVybiBmdW5jdGlvbihiLGUpe3JldHVybiBjKGIsZSxhKX19ZnVuY3Rpb24gUShhKXtpZihmLmlzUGxhaW5PYmplY3QoYSkpcmV0dXJuIFEoYS5fKTtpZihudWxsPT09YSlyZXR1cm4gZnVuY3Rpb24oKXt9O2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYSlyZXR1cm4gZnVuY3Rpb24oYixkLGUpe2EoYiwic2V0IixkLGUpfTtpZigic3RyaW5nIiE9PXR5cGVvZiBhfHwtMT09PWEuaW5kZXhPZigiLiIpJiYtMT09PWEuaW5kZXhPZigiWyIpJiYtMT09PWEuaW5kZXhPZigiKCIpKXJldHVybiBmdW5jdGlvbihiLGQpe2JbYV09ZH07dmFyIGI9ZnVuY3Rpb24oYSxkLGUpe2U9TmEoZSk7dmFyIGM9ZVtlLmxlbmd0aC0xXTtmb3IodmFyIGcsayxsPTAsbj1lLmxlbmd0aC0xO2w8bjtsKyspe2c9ZVtsXS5tYXRjaChkYSk7az1lW2xdLm1hdGNoKFgpO2lmKGcpe2VbbF09ZVtsXS5yZXBsYWNlKGRhLCIiKTthW2VbbF1dPVtdO2M9ZS5zbGljZSgpOwpjLnNwbGljZSgwLGwrMSk7Zz1jLmpvaW4oIi4iKTtpZihmLmlzQXJyYXkoZCkpZm9yKGs9MCxuPWQubGVuZ3RoO2s8bjtrKyspYz17fSxiKGMsZFtrXSxnKSxhW2VbbF1dLnB1c2goYyk7ZWxzZSBhW2VbbF1dPWQ7cmV0dXJufWsmJihlW2xdPWVbbF0ucmVwbGFjZShYLCIiKSxhPWFbZVtsXV0oZCkpO2lmKG51bGw9PT1hW2VbbF1dfHxhW2VbbF1dPT09cClhW2VbbF1dPXt9O2E9YVtlW2xdXX1pZihjLm1hdGNoKFgpKWFbYy5yZXBsYWNlKFgsIiIpXShkKTtlbHNlIGFbYy5yZXBsYWNlKGRhLCIiKV09ZH07cmV0dXJuIGZ1bmN0aW9uKGMsZCl7cmV0dXJuIGIoYyxkLGEpfX1mdW5jdGlvbiBPYShhKXtyZXR1cm4gSihhLmFvRGF0YSwiX2FEYXRhIil9ZnVuY3Rpb24gcWEoYSl7YS5hb0RhdGEubGVuZ3RoPTA7YS5haURpc3BsYXlNYXN0ZXIubGVuZ3RoPTA7YS5haURpc3BsYXkubGVuZ3RoPTA7YS5hSWRzPXt9fWZ1bmN0aW9uIHJhKGEsYixjKXtmb3IodmFyIGQ9LTEsZT0wLGg9YS5sZW5ndGg7ZTwKaDtlKyspYVtlXT09Yj9kPWU6YVtlXT5iJiZhW2VdLS07IC0xIT1kJiZjPT09cCYmYS5zcGxpY2UoZCwxKX1mdW5jdGlvbiBlYShhLGIsYyxkKXt2YXIgZT1hLmFvRGF0YVtiXSxoLGc9ZnVuY3Rpb24oYyxkKXtmb3IoO2MuY2hpbGROb2Rlcy5sZW5ndGg7KWMucmVtb3ZlQ2hpbGQoYy5maXJzdENoaWxkKTtjLmlubmVySFRNTD1JKGEsYixkLCJkaXNwbGF5Iil9O2lmKCJkb20iIT09YyYmKGMmJiJhdXRvIiE9PWN8fCJkb20iIT09ZS5zcmMpKXt2YXIgaz1lLmFuQ2VsbHM7aWYoaylpZihkIT09cClnKGtbZF0sZCk7ZWxzZSBmb3IoYz0wLGg9ay5sZW5ndGg7YzxoO2MrKylnKGtbY10sYyl9ZWxzZSBlLl9hRGF0YT1NYShhLGUsZCxkPT09cD9wOmUuX2FEYXRhKS5kYXRhO2UuX2FTb3J0RGF0YT1udWxsO2UuX2FGaWx0ZXJEYXRhPW51bGw7Zz1hLmFvQ29sdW1ucztpZihkIT09cClnW2RdLnNUeXBlPW51bGw7ZWxzZXtjPTA7Zm9yKGg9Zy5sZW5ndGg7YzxoO2MrKylnW2NdLnNUeXBlPW51bGw7ClBhKGEsZSl9fWZ1bmN0aW9uIE1hKGEsYixjLGQpe3ZhciBlPVtdLGg9Yi5maXJzdENoaWxkLGcsaz0wLGwsbj1hLmFvQ29sdW1ucyxtPWEuX3Jvd1JlYWRPYmplY3Q7ZD1kIT09cD9kOm0/e306W107dmFyIHc9ZnVuY3Rpb24oYSxiKXtpZigic3RyaW5nIj09PXR5cGVvZiBhKXt2YXIgYz1hLmluZGV4T2YoIkAiKTstMSE9PWMmJihjPWEuc3Vic3RyaW5nKGMrMSksUShhKShkLGIuZ2V0QXR0cmlidXRlKGMpKSl9fSx1PWZ1bmN0aW9uKGEpe2lmKGM9PT1wfHxjPT09aylnPW5ba10sbD1mLnRyaW0oYS5pbm5lckhUTUwpLGcmJmcuX2JBdHRyU3JjPyhRKGcubURhdGEuXykoZCxsKSx3KGcubURhdGEuc29ydCxhKSx3KGcubURhdGEudHlwZSxhKSx3KGcubURhdGEuZmlsdGVyLGEpKTptPyhnLl9zZXR0ZXJ8fChnLl9zZXR0ZXI9UShnLm1EYXRhKSksZy5fc2V0dGVyKGQsbCkpOmRba109bDtrKyt9O2lmKGgpZm9yKDtoOyl7dmFyIHE9aC5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpO2lmKCJURCI9PQpxfHwiVEgiPT1xKXUoaCksZS5wdXNoKGgpO2g9aC5uZXh0U2libGluZ31lbHNlIGZvcihlPWIuYW5DZWxscyxoPTAscT1lLmxlbmd0aDtoPHE7aCsrKXUoZVtoXSk7KGI9Yi5maXJzdENoaWxkP2I6Yi5uVHIpJiYoYj1iLmdldEF0dHJpYnV0ZSgiaWQiKSkmJlEoYS5yb3dJZCkoZCxiKTtyZXR1cm57ZGF0YTpkLGNlbGxzOmV9fWZ1bmN0aW9uIExhKGEsYixjLGQpe3ZhciBlPWEuYW9EYXRhW2JdLGg9ZS5fYURhdGEsZz1bXSxrLGw7aWYobnVsbD09PWUublRyKXt2YXIgbj1jfHx5LmNyZWF0ZUVsZW1lbnQoInRyIik7ZS5uVHI9bjtlLmFuQ2VsbHM9ZztuLl9EVF9Sb3dJbmRleD1iO1BhKGEsZSk7dmFyIG09MDtmb3Ioaz1hLmFvQ29sdW1ucy5sZW5ndGg7bTxrO20rKyl7dmFyIHc9YS5hb0NvbHVtbnNbbV07dmFyIHA9KGw9Yz8hMTohMCk/eS5jcmVhdGVFbGVtZW50KHcuc0NlbGxUeXBlKTpkW21dO3AuX0RUX0NlbGxJbmRleD17cm93OmIsY29sdW1uOm19O2cucHVzaChwKTtpZihsfHwKIShjJiYhdy5tUmVuZGVyJiZ3Lm1EYXRhPT09bXx8Zi5pc1BsYWluT2JqZWN0KHcubURhdGEpJiZ3Lm1EYXRhLl89PT1tKyIuZGlzcGxheSIpKXAuaW5uZXJIVE1MPUkoYSxiLG0sImRpc3BsYXkiKTt3LnNDbGFzcyYmKHAuY2xhc3NOYW1lKz0iICIrdy5zQ2xhc3MpO3cuYlZpc2libGUmJiFjP24uYXBwZW5kQ2hpbGQocCk6IXcuYlZpc2libGUmJmMmJnAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChwKTt3LmZuQ3JlYXRlZENlbGwmJncuZm5DcmVhdGVkQ2VsbC5jYWxsKGEub0luc3RhbmNlLHAsSShhLGIsbSksaCxiLG0pfUEoYSwiYW9Sb3dDcmVhdGVkQ2FsbGJhY2siLG51bGwsW24saCxiLGddKX1lLm5Uci5zZXRBdHRyaWJ1dGUoInJvbGUiLCJyb3ciKX1mdW5jdGlvbiBQYShhLGIpe3ZhciBjPWIublRyLGQ9Yi5fYURhdGE7aWYoYyl7aWYoYT1hLnJvd0lkRm4oZCkpYy5pZD1hO2QuRFRfUm93Q2xhc3MmJihhPWQuRFRfUm93Q2xhc3Muc3BsaXQoIiAiKSxiLl9fcm93Yz1iLl9fcm93Yz8KdGEoYi5fX3Jvd2MuY29uY2F0KGEpKTphLGYoYykucmVtb3ZlQ2xhc3MoYi5fX3Jvd2Muam9pbigiICIpKS5hZGRDbGFzcyhkLkRUX1Jvd0NsYXNzKSk7ZC5EVF9Sb3dBdHRyJiZmKGMpLmF0dHIoZC5EVF9Sb3dBdHRyKTtkLkRUX1Jvd0RhdGEmJmYoYykuZGF0YShkLkRUX1Jvd0RhdGEpfX1mdW5jdGlvbiBwYihhKXt2YXIgYixjLGQ9YS5uVEhlYWQsZT1hLm5URm9vdCxoPTA9PT1mKCJ0aCwgdGQiLGQpLmxlbmd0aCxnPWEub0NsYXNzZXMsaz1hLmFvQ29sdW1ucztoJiYoYz1mKCI8dHIvPiIpLmFwcGVuZFRvKGQpKTt2YXIgbD0wO2ZvcihiPWsubGVuZ3RoO2w8YjtsKyspe3ZhciBuPWtbbF07dmFyIG09ZihuLm5UaCkuYWRkQ2xhc3Mobi5zQ2xhc3MpO2gmJm0uYXBwZW5kVG8oYyk7YS5vRmVhdHVyZXMuYlNvcnQmJihtLmFkZENsYXNzKG4uc1NvcnRpbmdDbGFzcyksITEhPT1uLmJTb3J0YWJsZSYmKG0uYXR0cigidGFiaW5kZXgiLGEuaVRhYkluZGV4KS5hdHRyKCJhcmlhLWNvbnRyb2xzIiwKYS5zVGFibGVJZCksUWEoYSxuLm5UaCxsKSkpO24uc1RpdGxlIT1tWzBdLmlubmVySFRNTCYmbS5odG1sKG4uc1RpdGxlKTtSYShhLCJoZWFkZXIiKShhLG0sbixnKX1oJiZmYShhLmFvSGVhZGVyLGQpO2YoZCkuZmluZCgiPnRyIikuYXR0cigicm9sZSIsInJvdyIpO2YoZCkuZmluZCgiPnRyPnRoLCA+dHI+dGQiKS5hZGRDbGFzcyhnLnNIZWFkZXJUSCk7ZihlKS5maW5kKCI+dHI+dGgsID50cj50ZCIpLmFkZENsYXNzKGcuc0Zvb3RlclRIKTtpZihudWxsIT09ZSlmb3IoYT1hLmFvRm9vdGVyWzBdLGw9MCxiPWEubGVuZ3RoO2w8YjtsKyspbj1rW2xdLG4ublRmPWFbbF0uY2VsbCxuLnNDbGFzcyYmZihuLm5UZikuYWRkQ2xhc3Mobi5zQ2xhc3MpfWZ1bmN0aW9uIGhhKGEsYixjKXt2YXIgZCxlLGg9W10sZz1bXSxrPWEuYW9Db2x1bW5zLmxlbmd0aDtpZihiKXtjPT09cCYmKGM9ITEpO3ZhciBsPTA7Zm9yKGQ9Yi5sZW5ndGg7bDxkO2wrKyl7aFtsXT1iW2xdLnNsaWNlKCk7aFtsXS5uVHI9CmJbbF0ublRyO2ZvcihlPWstMTswPD1lO2UtLSlhLmFvQ29sdW1uc1tlXS5iVmlzaWJsZXx8Y3x8aFtsXS5zcGxpY2UoZSwxKTtnLnB1c2goW10pfWw9MDtmb3IoZD1oLmxlbmd0aDtsPGQ7bCsrKXtpZihhPWhbbF0ublRyKWZvcig7ZT1hLmZpcnN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoZSk7ZT0wO2ZvcihiPWhbbF0ubGVuZ3RoO2U8YjtlKyspe3ZhciBuPWs9MTtpZihnW2xdW2VdPT09cCl7YS5hcHBlbmRDaGlsZChoW2xdW2VdLmNlbGwpO2ZvcihnW2xdW2VdPTE7aFtsK2tdIT09cCYmaFtsXVtlXS5jZWxsPT1oW2wra11bZV0uY2VsbDspZ1tsK2tdW2VdPTEsaysrO2Zvcig7aFtsXVtlK25dIT09cCYmaFtsXVtlXS5jZWxsPT1oW2xdW2Urbl0uY2VsbDspe2ZvcihjPTA7YzxrO2MrKylnW2wrY11bZStuXT0xO24rK31mKGhbbF1bZV0uY2VsbCkuYXR0cigicm93c3BhbiIsaykuYXR0cigiY29sc3BhbiIsbil9fX19fWZ1bmN0aW9uIFMoYSl7dmFyIGI9QShhLCJhb1ByZURyYXdDYWxsYmFjayIsCiJwcmVEcmF3IixbYV0pO2lmKC0xIT09Zi5pbkFycmF5KCExLGIpKUsoYSwhMSk7ZWxzZXtiPVtdO3ZhciBjPTAsZD1hLmFzU3RyaXBlQ2xhc3NlcyxlPWQubGVuZ3RoLGg9YS5vTGFuZ3VhZ2UsZz1hLmlJbml0RGlzcGxheVN0YXJ0LGs9InNzcCI9PUQoYSksbD1hLmFpRGlzcGxheTthLmJEcmF3aW5nPSEwO2chPT1wJiYtMSE9PWcmJihhLl9pRGlzcGxheVN0YXJ0PWs/ZzpnPj1hLmZuUmVjb3Jkc0Rpc3BsYXkoKT8wOmcsYS5pSW5pdERpc3BsYXlTdGFydD0tMSk7Zz1hLl9pRGlzcGxheVN0YXJ0O3ZhciBuPWEuZm5EaXNwbGF5RW5kKCk7aWYoYS5iRGVmZXJMb2FkaW5nKWEuYkRlZmVyTG9hZGluZz0hMSxhLmlEcmF3KyssSyhhLCExKTtlbHNlIGlmKCFrKWEuaURyYXcrKztlbHNlIGlmKCFhLmJEZXN0cm95aW5nJiYhcWIoYSkpcmV0dXJuO2lmKDAhPT1sLmxlbmd0aClmb3IoaD1rP2EuYW9EYXRhLmxlbmd0aDpuLGs9az8wOmc7azxoO2srKyl7dmFyIG09bFtrXSx3PWEuYW9EYXRhW21dOwpudWxsPT09dy5uVHImJkxhKGEsbSk7dmFyIHU9dy5uVHI7aWYoMCE9PWUpe3ZhciBxPWRbYyVlXTt3Ll9zUm93U3RyaXBlIT1xJiYoZih1KS5yZW1vdmVDbGFzcyh3Ll9zUm93U3RyaXBlKS5hZGRDbGFzcyhxKSx3Ll9zUm93U3RyaXBlPXEpfUEoYSwiYW9Sb3dDYWxsYmFjayIsbnVsbCxbdSx3Ll9hRGF0YSxjLGssbV0pO2IucHVzaCh1KTtjKyt9ZWxzZSBjPWguc1plcm9SZWNvcmRzLDE9PWEuaURyYXcmJiJhamF4Ij09RChhKT9jPWguc0xvYWRpbmdSZWNvcmRzOmguc0VtcHR5VGFibGUmJjA9PT1hLmZuUmVjb3Jkc1RvdGFsKCkmJihjPWguc0VtcHR5VGFibGUpLGJbMF09ZigiPHRyLz4iLHsiY2xhc3MiOmU/ZFswXToiIn0pLmFwcGVuZChmKCI8dGQgLz4iLHt2YWxpZ246InRvcCIsY29sU3BhbjpXKGEpLCJjbGFzcyI6YS5vQ2xhc3Nlcy5zUm93RW1wdHl9KS5odG1sKGMpKVswXTtBKGEsImFvSGVhZGVyQ2FsbGJhY2siLCJoZWFkZXIiLFtmKGEublRIZWFkKS5jaGlsZHJlbigidHIiKVswXSwKT2EoYSksZyxuLGxdKTtBKGEsImFvRm9vdGVyQ2FsbGJhY2siLCJmb290ZXIiLFtmKGEublRGb290KS5jaGlsZHJlbigidHIiKVswXSxPYShhKSxnLG4sbF0pO2Q9ZihhLm5UQm9keSk7ZC5jaGlsZHJlbigpLmRldGFjaCgpO2QuYXBwZW5kKGYoYikpO0EoYSwiYW9EcmF3Q2FsbGJhY2siLCJkcmF3IixbYV0pO2EuYlNvcnRlZD0hMTthLmJGaWx0ZXJlZD0hMTthLmJEcmF3aW5nPSExfX1mdW5jdGlvbiBWKGEsYil7dmFyIGM9YS5vRmVhdHVyZXMsZD1jLmJGaWx0ZXI7Yy5iU29ydCYmcmIoYSk7ZD9pYShhLGEub1ByZXZpb3VzU2VhcmNoKTphLmFpRGlzcGxheT1hLmFpRGlzcGxheU1hc3Rlci5zbGljZSgpOyEwIT09YiYmKGEuX2lEaXNwbGF5U3RhcnQ9MCk7YS5fZHJhd0hvbGQ9YjtTKGEpO2EuX2RyYXdIb2xkPSExfWZ1bmN0aW9uIHNiKGEpe3ZhciBiPWEub0NsYXNzZXMsYz1mKGEublRhYmxlKTtjPWYoIjxkaXYvPiIpLmluc2VydEJlZm9yZShjKTt2YXIgZD1hLm9GZWF0dXJlcyxlPQpmKCI8ZGl2Lz4iLHtpZDphLnNUYWJsZUlkKyJfd3JhcHBlciIsImNsYXNzIjpiLnNXcmFwcGVyKyhhLm5URm9vdD8iIjoiICIrYi5zTm9Gb290ZXIpfSk7YS5uSG9sZGluZz1jWzBdO2EublRhYmxlV3JhcHBlcj1lWzBdO2EublRhYmxlUmVpbnNlcnRCZWZvcmU9YS5uVGFibGUubmV4dFNpYmxpbmc7Zm9yKHZhciBoPWEuc0RvbS5zcGxpdCgiIiksZyxrLGwsbixtLHAsdT0wO3U8aC5sZW5ndGg7dSsrKXtnPW51bGw7az1oW3VdO2lmKCI8Ij09ayl7bD1mKCI8ZGl2Lz4iKVswXTtuPWhbdSsxXTtpZigiJyI9PW58fCciJz09bil7bT0iIjtmb3IocD0yO2hbdStwXSE9bjspbSs9aFt1K3BdLHArKzsiSCI9PW0/bT1iLnNKVUlIZWFkZXI6IkYiPT1tJiYobT1iLnNKVUlGb290ZXIpOy0xIT1tLmluZGV4T2YoIi4iKT8obj1tLnNwbGl0KCIuIiksbC5pZD1uWzBdLnN1YnN0cigxLG5bMF0ubGVuZ3RoLTEpLGwuY2xhc3NOYW1lPW5bMV0pOiIjIj09bS5jaGFyQXQoMCk/bC5pZD1tLnN1YnN0cigxLAptLmxlbmd0aC0xKTpsLmNsYXNzTmFtZT1tO3UrPXB9ZS5hcHBlbmQobCk7ZT1mKGwpfWVsc2UgaWYoIj4iPT1rKWU9ZS5wYXJlbnQoKTtlbHNlIGlmKCJsIj09ayYmZC5iUGFnaW5hdGUmJmQuYkxlbmd0aENoYW5nZSlnPXRiKGEpO2Vsc2UgaWYoImYiPT1rJiZkLmJGaWx0ZXIpZz11YihhKTtlbHNlIGlmKCJyIj09ayYmZC5iUHJvY2Vzc2luZylnPXZiKGEpO2Vsc2UgaWYoInQiPT1rKWc9d2IoYSk7ZWxzZSBpZigiaSI9PWsmJmQuYkluZm8pZz14YihhKTtlbHNlIGlmKCJwIj09ayYmZC5iUGFnaW5hdGUpZz15YihhKTtlbHNlIGlmKDAhPT1xLmV4dC5mZWF0dXJlLmxlbmd0aClmb3IobD1xLmV4dC5mZWF0dXJlLHA9MCxuPWwubGVuZ3RoO3A8bjtwKyspaWYoaz09bFtwXS5jRmVhdHVyZSl7Zz1sW3BdLmZuSW5pdChhKTticmVha31nJiYobD1hLmFhbkZlYXR1cmVzLGxba118fChsW2tdPVtdKSxsW2tdLnB1c2goZyksZS5hcHBlbmQoZykpfWMucmVwbGFjZVdpdGgoZSk7YS5uSG9sZGluZz0KbnVsbH1mdW5jdGlvbiBmYShhLGIpe2I9ZihiKS5jaGlsZHJlbigidHIiKTt2YXIgYyxkLGU7YS5zcGxpY2UoMCxhLmxlbmd0aCk7dmFyIGg9MDtmb3IoZT1iLmxlbmd0aDtoPGU7aCsrKWEucHVzaChbXSk7aD0wO2ZvcihlPWIubGVuZ3RoO2g8ZTtoKyspe3ZhciBnPWJbaF07Zm9yKGM9Zy5maXJzdENoaWxkO2M7KXtpZigiVEQiPT1jLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCl8fCJUSCI9PWMubm9kZU5hbWUudG9VcHBlckNhc2UoKSl7dmFyIGs9MSpjLmdldEF0dHJpYnV0ZSgiY29sc3BhbiIpO3ZhciBsPTEqYy5nZXRBdHRyaWJ1dGUoInJvd3NwYW4iKTtrPWsmJjAhPT1rJiYxIT09az9rOjE7bD1sJiYwIT09bCYmMSE9PWw/bDoxO3ZhciBuPTA7Zm9yKGQ9YVtoXTtkW25dOyluKys7dmFyIG09bjt2YXIgcD0xPT09az8hMDohMTtmb3IoZD0wO2Q8aztkKyspZm9yKG49MDtuPGw7bisrKWFbaCtuXVttK2RdPXtjZWxsOmMsdW5pcXVlOnB9LGFbaCtuXS5uVHI9Z31jPWMubmV4dFNpYmxpbmd9fX0KZnVuY3Rpb24gdWEoYSxiLGMpe3ZhciBkPVtdO2N8fChjPWEuYW9IZWFkZXIsYiYmKGM9W10sZmEoYyxiKSkpO2I9MDtmb3IodmFyIGU9Yy5sZW5ndGg7YjxlO2IrKylmb3IodmFyIGg9MCxnPWNbYl0ubGVuZ3RoO2g8ZztoKyspIWNbYl1baF0udW5pcXVlfHxkW2hdJiZhLmJTb3J0Q2VsbHNUb3B8fChkW2hdPWNbYl1baF0uY2VsbCk7cmV0dXJuIGR9ZnVuY3Rpb24gdmEoYSxiLGMpe0EoYSwiYW9TZXJ2ZXJQYXJhbXMiLCJzZXJ2ZXJQYXJhbXMiLFtiXSk7aWYoYiYmZi5pc0FycmF5KGIpKXt2YXIgZD17fSxlPS8oLio/KVxbXF0kLztmLmVhY2goYixmdW5jdGlvbihhLGIpeyhhPWIubmFtZS5tYXRjaChlKSk/KGE9YVswXSxkW2FdfHwoZFthXT1bXSksZFthXS5wdXNoKGIudmFsdWUpKTpkW2IubmFtZV09Yi52YWx1ZX0pO2I9ZH12YXIgaD1hLmFqYXgsZz1hLm9JbnN0YW5jZSxrPWZ1bmN0aW9uKGIpe0EoYSxudWxsLCJ4aHIiLFthLGIsYS5qcVhIUl0pO2MoYil9O2lmKGYuaXNQbGFpbk9iamVjdChoKSYmCmguZGF0YSl7dmFyIGw9aC5kYXRhO3ZhciBuPSJmdW5jdGlvbiI9PT10eXBlb2YgbD9sKGIsYSk6bDtiPSJmdW5jdGlvbiI9PT10eXBlb2YgbCYmbj9uOmYuZXh0ZW5kKCEwLGIsbik7ZGVsZXRlIGguZGF0YX1uPXtkYXRhOmIsc3VjY2VzczpmdW5jdGlvbihiKXt2YXIgYz1iLmVycm9yfHxiLnNFcnJvcjtjJiZPKGEsMCxjKTthLmpzb249YjtrKGIpfSxkYXRhVHlwZToianNvbiIsY2FjaGU6ITEsdHlwZTphLnNTZXJ2ZXJNZXRob2QsZXJyb3I6ZnVuY3Rpb24oYixjLGQpe2Q9QShhLG51bGwsInhociIsW2EsbnVsbCxhLmpxWEhSXSk7LTE9PT1mLmluQXJyYXkoITAsZCkmJigicGFyc2VyZXJyb3IiPT1jP08oYSwwLCJJbnZhbGlkIEpTT04gcmVzcG9uc2UiLDEpOjQ9PT1iLnJlYWR5U3RhdGUmJk8oYSwwLCJBamF4IGVycm9yIiw3KSk7SyhhLCExKX19O2Eub0FqYXhEYXRhPWI7QShhLG51bGwsInByZVhociIsW2EsYl0pO2EuZm5TZXJ2ZXJEYXRhP2EuZm5TZXJ2ZXJEYXRhLmNhbGwoZywKYS5zQWpheFNvdXJjZSxmLm1hcChiLGZ1bmN0aW9uKGEsYil7cmV0dXJue25hbWU6Yix2YWx1ZTphfX0pLGssYSk6YS5zQWpheFNvdXJjZXx8InN0cmluZyI9PT10eXBlb2YgaD9hLmpxWEhSPWYuYWpheChmLmV4dGVuZChuLHt1cmw6aHx8YS5zQWpheFNvdXJjZX0pKToiZnVuY3Rpb24iPT09dHlwZW9mIGg/YS5qcVhIUj1oLmNhbGwoZyxiLGssYSk6KGEuanFYSFI9Zi5hamF4KGYuZXh0ZW5kKG4saCkpLGguZGF0YT1sKX1mdW5jdGlvbiBxYihhKXtyZXR1cm4gYS5iQWpheERhdGFHZXQ/KGEuaURyYXcrKyxLKGEsITApLHZhKGEsemIoYSksZnVuY3Rpb24oYil7QWIoYSxiKX0pLCExKTohMH1mdW5jdGlvbiB6YihhKXt2YXIgYj1hLmFvQ29sdW1ucyxjPWIubGVuZ3RoLGQ9YS5vRmVhdHVyZXMsZT1hLm9QcmV2aW91c1NlYXJjaCxoPWEuYW9QcmVTZWFyY2hDb2xzLGc9W10saz1ZKGEpO3ZhciBsPWEuX2lEaXNwbGF5U3RhcnQ7dmFyIG49ITEhPT1kLmJQYWdpbmF0ZT9hLl9pRGlzcGxheUxlbmd0aDoKLTE7dmFyIG09ZnVuY3Rpb24oYSxiKXtnLnB1c2goe25hbWU6YSx2YWx1ZTpifSl9O20oInNFY2hvIixhLmlEcmF3KTttKCJpQ29sdW1ucyIsYyk7bSgic0NvbHVtbnMiLEooYiwic05hbWUiKS5qb2luKCIsIikpO20oImlEaXNwbGF5U3RhcnQiLGwpO20oImlEaXNwbGF5TGVuZ3RoIixuKTt2YXIgcD17ZHJhdzphLmlEcmF3LGNvbHVtbnM6W10sb3JkZXI6W10sc3RhcnQ6bCxsZW5ndGg6bixzZWFyY2g6e3ZhbHVlOmUuc1NlYXJjaCxyZWdleDplLmJSZWdleH19O2ZvcihsPTA7bDxjO2wrKyl7dmFyIHU9YltsXTt2YXIgc2E9aFtsXTtuPSJmdW5jdGlvbiI9PXR5cGVvZiB1Lm1EYXRhPyJmdW5jdGlvbiI6dS5tRGF0YTtwLmNvbHVtbnMucHVzaCh7ZGF0YTpuLG5hbWU6dS5zTmFtZSxzZWFyY2hhYmxlOnUuYlNlYXJjaGFibGUsb3JkZXJhYmxlOnUuYlNvcnRhYmxlLHNlYXJjaDp7dmFsdWU6c2Euc1NlYXJjaCxyZWdleDpzYS5iUmVnZXh9fSk7bSgibURhdGFQcm9wXyIrbCxuKTtkLmJGaWx0ZXImJgoobSgic1NlYXJjaF8iK2wsc2Euc1NlYXJjaCksbSgiYlJlZ2V4XyIrbCxzYS5iUmVnZXgpLG0oImJTZWFyY2hhYmxlXyIrbCx1LmJTZWFyY2hhYmxlKSk7ZC5iU29ydCYmbSgiYlNvcnRhYmxlXyIrbCx1LmJTb3J0YWJsZSl9ZC5iRmlsdGVyJiYobSgic1NlYXJjaCIsZS5zU2VhcmNoKSxtKCJiUmVnZXgiLGUuYlJlZ2V4KSk7ZC5iU29ydCYmKGYuZWFjaChrLGZ1bmN0aW9uKGEsYil7cC5vcmRlci5wdXNoKHtjb2x1bW46Yi5jb2wsZGlyOmIuZGlyfSk7bSgiaVNvcnRDb2xfIithLGIuY29sKTttKCJzU29ydERpcl8iK2EsYi5kaXIpfSksbSgiaVNvcnRpbmdDb2xzIixrLmxlbmd0aCkpO2I9cS5leHQubGVnYWN5LmFqYXg7cmV0dXJuIG51bGw9PT1iP2Euc0FqYXhTb3VyY2U/ZzpwOmI/ZzpwfWZ1bmN0aW9uIEFiKGEsYil7dmFyIGM9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYlthXSE9PXA/YlthXTpiW2NdfSxkPXdhKGEsYiksZT1jKCJzRWNobyIsImRyYXciKSxoPWMoImlUb3RhbFJlY29yZHMiLAoicmVjb3Jkc1RvdGFsIik7Yz1jKCJpVG90YWxEaXNwbGF5UmVjb3JkcyIsInJlY29yZHNGaWx0ZXJlZCIpO2lmKGUpe2lmKDEqZTxhLmlEcmF3KXJldHVybjthLmlEcmF3PTEqZX1xYShhKTthLl9pUmVjb3Jkc1RvdGFsPXBhcnNlSW50KGgsMTApO2EuX2lSZWNvcmRzRGlzcGxheT1wYXJzZUludChjLDEwKTtlPTA7Zm9yKGg9ZC5sZW5ndGg7ZTxoO2UrKylSKGEsZFtlXSk7YS5haURpc3BsYXk9YS5haURpc3BsYXlNYXN0ZXIuc2xpY2UoKTthLmJBamF4RGF0YUdldD0hMTtTKGEpO2EuX2JJbml0Q29tcGxldGV8fHhhKGEsYik7YS5iQWpheERhdGFHZXQ9ITA7SyhhLCExKX1mdW5jdGlvbiB3YShhLGIpe2E9Zi5pc1BsYWluT2JqZWN0KGEuYWpheCkmJmEuYWpheC5kYXRhU3JjIT09cD9hLmFqYXguZGF0YVNyYzphLnNBamF4RGF0YVByb3A7cmV0dXJuImRhdGEiPT09YT9iLmFhRGF0YXx8YlthXToiIiE9PWE/VShhKShiKTpifWZ1bmN0aW9uIHViKGEpe3ZhciBiPWEub0NsYXNzZXMsYz0KYS5zVGFibGVJZCxkPWEub0xhbmd1YWdlLGU9YS5vUHJldmlvdXNTZWFyY2gsaD1hLmFhbkZlYXR1cmVzLGc9JzxpbnB1dCB0eXBlPSJzZWFyY2giIGNsYXNzPSInK2Iuc0ZpbHRlcklucHV0KyciLz4nLGs9ZC5zU2VhcmNoO2s9ay5tYXRjaCgvX0lOUFVUXy8pP2sucmVwbGFjZSgiX0lOUFVUXyIsZyk6aytnO2I9ZigiPGRpdi8+Iix7aWQ6aC5mP251bGw6YysiX2ZpbHRlciIsImNsYXNzIjpiLnNGaWx0ZXJ9KS5hcHBlbmQoZigiPGxhYmVsLz4iKS5hcHBlbmQoaykpO2g9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLnZhbHVlP3RoaXMudmFsdWU6IiI7YiE9ZS5zU2VhcmNoJiYoaWEoYSx7c1NlYXJjaDpiLGJSZWdleDplLmJSZWdleCxiU21hcnQ6ZS5iU21hcnQsYkNhc2VJbnNlbnNpdGl2ZTplLmJDYXNlSW5zZW5zaXRpdmV9KSxhLl9pRGlzcGxheVN0YXJ0PTAsUyhhKSl9O2c9bnVsbCE9PWEuc2VhcmNoRGVsYXk/YS5zZWFyY2hEZWxheToic3NwIj09PUQoYSk/NDAwOjA7dmFyIGw9ZigiaW5wdXQiLApiKS52YWwoZS5zU2VhcmNoKS5hdHRyKCJwbGFjZWhvbGRlciIsZC5zU2VhcmNoUGxhY2Vob2xkZXIpLm9uKCJrZXl1cC5EVCBzZWFyY2guRFQgaW5wdXQuRFQgcGFzdGUuRFQgY3V0LkRUIixnP1NhKGgsZyk6aCkub24oImtleXByZXNzLkRUIixmdW5jdGlvbihhKXtpZigxMz09YS5rZXlDb2RlKXJldHVybiExfSkuYXR0cigiYXJpYS1jb250cm9scyIsYyk7ZihhLm5UYWJsZSkub24oInNlYXJjaC5kdC5EVCIsZnVuY3Rpb24oYixjKXtpZihhPT09Yyl0cnl7bFswXSE9PXkuYWN0aXZlRWxlbWVudCYmbC52YWwoZS5zU2VhcmNoKX1jYXRjaCh3KXt9fSk7cmV0dXJuIGJbMF19ZnVuY3Rpb24gaWEoYSxiLGMpe3ZhciBkPWEub1ByZXZpb3VzU2VhcmNoLGU9YS5hb1ByZVNlYXJjaENvbHMsaD1mdW5jdGlvbihhKXtkLnNTZWFyY2g9YS5zU2VhcmNoO2QuYlJlZ2V4PWEuYlJlZ2V4O2QuYlNtYXJ0PWEuYlNtYXJ0O2QuYkNhc2VJbnNlbnNpdGl2ZT1hLmJDYXNlSW5zZW5zaXRpdmV9LGc9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuYkVzY2FwZVJlZ2V4IT09CnA/IWEuYkVzY2FwZVJlZ2V4OmEuYlJlZ2V4fTtLYShhKTtpZigic3NwIiE9RChhKSl7QmIoYSxiLnNTZWFyY2gsYyxnKGIpLGIuYlNtYXJ0LGIuYkNhc2VJbnNlbnNpdGl2ZSk7aChiKTtmb3IoYj0wO2I8ZS5sZW5ndGg7YisrKUNiKGEsZVtiXS5zU2VhcmNoLGIsZyhlW2JdKSxlW2JdLmJTbWFydCxlW2JdLmJDYXNlSW5zZW5zaXRpdmUpO0RiKGEpfWVsc2UgaChiKTthLmJGaWx0ZXJlZD0hMDtBKGEsbnVsbCwic2VhcmNoIixbYV0pfWZ1bmN0aW9uIERiKGEpe2Zvcih2YXIgYj1xLmV4dC5zZWFyY2gsYz1hLmFpRGlzcGxheSxkLGUsaD0wLGc9Yi5sZW5ndGg7aDxnO2grKyl7Zm9yKHZhciBrPVtdLGw9MCxuPWMubGVuZ3RoO2w8bjtsKyspZT1jW2xdLGQ9YS5hb0RhdGFbZV0sYltoXShhLGQuX2FGaWx0ZXJEYXRhLGUsZC5fYURhdGEsbCkmJmsucHVzaChlKTtjLmxlbmd0aD0wO2YubWVyZ2UoYyxrKX19ZnVuY3Rpb24gQ2IoYSxiLGMsZCxlLGgpe2lmKCIiIT09Yil7dmFyIGc9W10saz0KYS5haURpc3BsYXk7ZD1UYShiLGQsZSxoKTtmb3IoZT0wO2U8ay5sZW5ndGg7ZSsrKWI9YS5hb0RhdGFba1tlXV0uX2FGaWx0ZXJEYXRhW2NdLGQudGVzdChiKSYmZy5wdXNoKGtbZV0pO2EuYWlEaXNwbGF5PWd9fWZ1bmN0aW9uIEJiKGEsYixjLGQsZSxoKXtlPVRhKGIsZCxlLGgpO3ZhciBnPWEub1ByZXZpb3VzU2VhcmNoLnNTZWFyY2gsaz1hLmFpRGlzcGxheU1hc3RlcjtoPVtdOzAhPT1xLmV4dC5zZWFyY2gubGVuZ3RoJiYoYz0hMCk7dmFyIGY9RWIoYSk7aWYoMD49Yi5sZW5ndGgpYS5haURpc3BsYXk9ay5zbGljZSgpO2Vsc2V7aWYoZnx8Y3x8ZHx8Zy5sZW5ndGg+Yi5sZW5ndGh8fDAhPT1iLmluZGV4T2YoZyl8fGEuYlNvcnRlZClhLmFpRGlzcGxheT1rLnNsaWNlKCk7Yj1hLmFpRGlzcGxheTtmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKWUudGVzdChhLmFvRGF0YVtiW2NdXS5fc0ZpbHRlclJvdykmJmgucHVzaChiW2NdKTthLmFpRGlzcGxheT1ofX1mdW5jdGlvbiBUYShhLGIsCmMsZCl7YT1iP2E6VWEoYSk7YyYmKGE9Il4oPz0uKj8iK2YubWFwKGEubWF0Y2goLyJbXiJdKyJ8W14gXSsvZyl8fFsiIl0sZnVuY3Rpb24oYSl7aWYoJyInPT09YS5jaGFyQXQoMCkpe3ZhciBiPWEubWF0Y2goL14iKC4qKSIkLyk7YT1iP2JbMV06YX1yZXR1cm4gYS5yZXBsYWNlKCciJywiIil9KS5qb2luKCIpKD89Lio/IikrIikuKiQiKTtyZXR1cm4gbmV3IFJlZ0V4cChhLGQ/ImkiOiIiKX1mdW5jdGlvbiBFYihhKXt2YXIgYj1hLmFvQ29sdW1ucyxjLGQsZT1xLmV4dC50eXBlLnNlYXJjaDt2YXIgaD0hMTt2YXIgZz0wO2ZvcihjPWEuYW9EYXRhLmxlbmd0aDtnPGM7ZysrKXt2YXIgaz1hLmFvRGF0YVtnXTtpZighay5fYUZpbHRlckRhdGEpe3ZhciBmPVtdO3ZhciBuPTA7Zm9yKGQ9Yi5sZW5ndGg7bjxkO24rKyl7aD1iW25dO2lmKGguYlNlYXJjaGFibGUpe3ZhciBtPUkoYSxnLG4sImZpbHRlciIpO2VbaC5zVHlwZV0mJihtPWVbaC5zVHlwZV0obSkpO251bGw9PT1tJiYobT0iIik7CiJzdHJpbmciIT09dHlwZW9mIG0mJm0udG9TdHJpbmcmJihtPW0udG9TdHJpbmcoKSl9ZWxzZSBtPSIiO20uaW5kZXhPZiYmLTEhPT1tLmluZGV4T2YoIiYiKSYmKHlhLmlubmVySFRNTD1tLG09JGI/eWEudGV4dENvbnRlbnQ6eWEuaW5uZXJUZXh0KTttLnJlcGxhY2UmJihtPW0ucmVwbGFjZSgvW1xyXG5cdTIwMjhdL2csIiIpKTtmLnB1c2gobSl9ay5fYUZpbHRlckRhdGE9ZjtrLl9zRmlsdGVyUm93PWYuam9pbigiICAiKTtoPSEwfX1yZXR1cm4gaH1mdW5jdGlvbiBGYihhKXtyZXR1cm57c2VhcmNoOmEuc1NlYXJjaCxzbWFydDphLmJTbWFydCxyZWdleDphLmJSZWdleCxjYXNlSW5zZW5zaXRpdmU6YS5iQ2FzZUluc2Vuc2l0aXZlfX1mdW5jdGlvbiBHYihhKXtyZXR1cm57c1NlYXJjaDphLnNlYXJjaCxiU21hcnQ6YS5zbWFydCxiUmVnZXg6YS5yZWdleCxiQ2FzZUluc2Vuc2l0aXZlOmEuY2FzZUluc2Vuc2l0aXZlfX1mdW5jdGlvbiB4YihhKXt2YXIgYj1hLnNUYWJsZUlkLGM9YS5hYW5GZWF0dXJlcy5pLApkPWYoIjxkaXYvPiIseyJjbGFzcyI6YS5vQ2xhc3Nlcy5zSW5mbyxpZDpjP251bGw6YisiX2luZm8ifSk7Y3x8KGEuYW9EcmF3Q2FsbGJhY2sucHVzaCh7Zm46SGIsc05hbWU6ImluZm9ybWF0aW9uIn0pLGQuYXR0cigicm9sZSIsInN0YXR1cyIpLmF0dHIoImFyaWEtbGl2ZSIsInBvbGl0ZSIpLGYoYS5uVGFibGUpLmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiLGIrIl9pbmZvIikpO3JldHVybiBkWzBdfWZ1bmN0aW9uIEhiKGEpe3ZhciBiPWEuYWFuRmVhdHVyZXMuaTtpZigwIT09Yi5sZW5ndGgpe3ZhciBjPWEub0xhbmd1YWdlLGQ9YS5faURpc3BsYXlTdGFydCsxLGU9YS5mbkRpc3BsYXlFbmQoKSxoPWEuZm5SZWNvcmRzVG90YWwoKSxnPWEuZm5SZWNvcmRzRGlzcGxheSgpLGs9Zz9jLnNJbmZvOmMuc0luZm9FbXB0eTtnIT09aCYmKGsrPSIgIitjLnNJbmZvRmlsdGVyZWQpO2srPWMuc0luZm9Qb3N0Rml4O2s9SWIoYSxrKTtjPWMuZm5JbmZvQ2FsbGJhY2s7bnVsbCE9PWMmJihrPWMuY2FsbChhLm9JbnN0YW5jZSwKYSxkLGUsaCxnLGspKTtmKGIpLmh0bWwoayl9fWZ1bmN0aW9uIEliKGEsYil7dmFyIGM9YS5mbkZvcm1hdE51bWJlcixkPWEuX2lEaXNwbGF5U3RhcnQrMSxlPWEuX2lEaXNwbGF5TGVuZ3RoLGg9YS5mblJlY29yZHNEaXNwbGF5KCksZz0tMT09PWU7cmV0dXJuIGIucmVwbGFjZSgvX1NUQVJUXy9nLGMuY2FsbChhLGQpKS5yZXBsYWNlKC9fRU5EXy9nLGMuY2FsbChhLGEuZm5EaXNwbGF5RW5kKCkpKS5yZXBsYWNlKC9fTUFYXy9nLGMuY2FsbChhLGEuZm5SZWNvcmRzVG90YWwoKSkpLnJlcGxhY2UoL19UT1RBTF8vZyxjLmNhbGwoYSxoKSkucmVwbGFjZSgvX1BBR0VfL2csYy5jYWxsKGEsZz8xOk1hdGguY2VpbChkL2UpKSkucmVwbGFjZSgvX1BBR0VTXy9nLGMuY2FsbChhLGc/MTpNYXRoLmNlaWwoaC9lKSkpfWZ1bmN0aW9uIGphKGEpe3ZhciBiPWEuaUluaXREaXNwbGF5U3RhcnQsYz1hLmFvQ29sdW1uczt2YXIgZD1hLm9GZWF0dXJlczt2YXIgZT1hLmJEZWZlckxvYWRpbmc7aWYoYS5iSW5pdGlhbGlzZWQpe3NiKGEpOwpwYihhKTtoYShhLGEuYW9IZWFkZXIpO2hhKGEsYS5hb0Zvb3Rlcik7SyhhLCEwKTtkLmJBdXRvV2lkdGgmJkphKGEpO3ZhciBoPTA7Zm9yKGQ9Yy5sZW5ndGg7aDxkO2grKyl7dmFyIGc9Y1toXTtnLnNXaWR0aCYmKGcublRoLnN0eWxlLndpZHRoPUIoZy5zV2lkdGgpKX1BKGEsbnVsbCwicHJlSW5pdCIsW2FdKTtWKGEpO2M9RChhKTtpZigic3NwIiE9Y3x8ZSkiYWpheCI9PWM/dmEoYSxbXSxmdW5jdGlvbihjKXt2YXIgZD13YShhLGMpO2ZvcihoPTA7aDxkLmxlbmd0aDtoKyspUihhLGRbaF0pO2EuaUluaXREaXNwbGF5U3RhcnQ9YjtWKGEpO0soYSwhMSk7eGEoYSxjKX0sYSk6KEsoYSwhMSkseGEoYSkpfWVsc2Ugc2V0VGltZW91dChmdW5jdGlvbigpe2phKGEpfSwyMDApfWZ1bmN0aW9uIHhhKGEsYil7YS5fYkluaXRDb21wbGV0ZT0hMDsoYnx8YS5vSW5pdC5hYURhdGEpJiZhYShhKTtBKGEsbnVsbCwicGx1Z2luLWluaXQiLFthLGJdKTtBKGEsImFvSW5pdENvbXBsZXRlIiwiaW5pdCIsClthLGJdKX1mdW5jdGlvbiBWYShhLGIpe2I9cGFyc2VJbnQoYiwxMCk7YS5faURpc3BsYXlMZW5ndGg9YjtXYShhKTtBKGEsbnVsbCwibGVuZ3RoIixbYSxiXSl9ZnVuY3Rpb24gdGIoYSl7dmFyIGI9YS5vQ2xhc3NlcyxjPWEuc1RhYmxlSWQsZD1hLmFMZW5ndGhNZW51LGU9Zi5pc0FycmF5KGRbMF0pLGg9ZT9kWzBdOmQ7ZD1lP2RbMV06ZDtlPWYoIjxzZWxlY3QvPiIse25hbWU6YysiX2xlbmd0aCIsImFyaWEtY29udHJvbHMiOmMsImNsYXNzIjpiLnNMZW5ndGhTZWxlY3R9KTtmb3IodmFyIGc9MCxrPWgubGVuZ3RoO2c8aztnKyspZVswXVtnXT1uZXcgT3B0aW9uKCJudW1iZXIiPT09dHlwZW9mIGRbZ10/YS5mbkZvcm1hdE51bWJlcihkW2ddKTpkW2ddLGhbZ10pO3ZhciBsPWYoIjxkaXY+PGxhYmVsLz48L2Rpdj4iKS5hZGRDbGFzcyhiLnNMZW5ndGgpO2EuYWFuRmVhdHVyZXMubHx8KGxbMF0uaWQ9YysiX2xlbmd0aCIpO2wuY2hpbGRyZW4oKS5hcHBlbmQoYS5vTGFuZ3VhZ2Uuc0xlbmd0aE1lbnUucmVwbGFjZSgiX01FTlVfIiwKZVswXS5vdXRlckhUTUwpKTtmKCJzZWxlY3QiLGwpLnZhbChhLl9pRGlzcGxheUxlbmd0aCkub24oImNoYW5nZS5EVCIsZnVuY3Rpb24oYil7VmEoYSxmKHRoaXMpLnZhbCgpKTtTKGEpfSk7ZihhLm5UYWJsZSkub24oImxlbmd0aC5kdC5EVCIsZnVuY3Rpb24oYixjLGQpe2E9PT1jJiZmKCJzZWxlY3QiLGwpLnZhbChkKX0pO3JldHVybiBsWzBdfWZ1bmN0aW9uIHliKGEpe3ZhciBiPWEuc1BhZ2luYXRpb25UeXBlLGM9cS5leHQucGFnZXJbYl0sZD0iZnVuY3Rpb24iPT09dHlwZW9mIGMsZT1mdW5jdGlvbihhKXtTKGEpfTtiPWYoIjxkaXYvPiIpLmFkZENsYXNzKGEub0NsYXNzZXMuc1BhZ2luZytiKVswXTt2YXIgaD1hLmFhbkZlYXR1cmVzO2R8fGMuZm5Jbml0KGEsYixlKTtoLnB8fChiLmlkPWEuc1RhYmxlSWQrIl9wYWdpbmF0ZSIsYS5hb0RyYXdDYWxsYmFjay5wdXNoKHtmbjpmdW5jdGlvbihhKXtpZihkKXt2YXIgYj1hLl9pRGlzcGxheVN0YXJ0LGc9YS5faURpc3BsYXlMZW5ndGgsCmY9YS5mblJlY29yZHNEaXNwbGF5KCksbT0tMT09PWc7Yj1tPzA6TWF0aC5jZWlsKGIvZyk7Zz1tPzE6TWF0aC5jZWlsKGYvZyk7Zj1jKGIsZyk7dmFyIHA7bT0wO2ZvcihwPWgucC5sZW5ndGg7bTxwO20rKylSYShhLCJwYWdlQnV0dG9uIikoYSxoLnBbbV0sbSxmLGIsZyl9ZWxzZSBjLmZuVXBkYXRlKGEsZSl9LHNOYW1lOiJwYWdpbmF0aW9uIn0pKTtyZXR1cm4gYn1mdW5jdGlvbiBYYShhLGIsYyl7dmFyIGQ9YS5faURpc3BsYXlTdGFydCxlPWEuX2lEaXNwbGF5TGVuZ3RoLGg9YS5mblJlY29yZHNEaXNwbGF5KCk7MD09PWh8fC0xPT09ZT9kPTA6Im51bWJlciI9PT10eXBlb2YgYj8oZD1iKmUsZD5oJiYoZD0wKSk6ImZpcnN0Ij09Yj9kPTA6InByZXZpb3VzIj09Yj8oZD0wPD1lP2QtZTowLDA+ZCYmKGQ9MCkpOiJuZXh0Ij09Yj9kK2U8aCYmKGQrPWUpOiJsYXN0Ij09Yj9kPU1hdGguZmxvb3IoKGgtMSkvZSkqZTpPKGEsMCwiVW5rbm93biBwYWdpbmcgYWN0aW9uOiAiK2IsNSk7Yj0KYS5faURpc3BsYXlTdGFydCE9PWQ7YS5faURpc3BsYXlTdGFydD1kO2ImJihBKGEsbnVsbCwicGFnZSIsW2FdKSxjJiZTKGEpKTtyZXR1cm4gYn1mdW5jdGlvbiB2YihhKXtyZXR1cm4gZigiPGRpdi8+Iix7aWQ6YS5hYW5GZWF0dXJlcy5yP251bGw6YS5zVGFibGVJZCsiX3Byb2Nlc3NpbmciLCJjbGFzcyI6YS5vQ2xhc3Nlcy5zUHJvY2Vzc2luZ30pLmh0bWwoYS5vTGFuZ3VhZ2Uuc1Byb2Nlc3NpbmcpLmluc2VydEJlZm9yZShhLm5UYWJsZSlbMF19ZnVuY3Rpb24gSyhhLGIpe2Eub0ZlYXR1cmVzLmJQcm9jZXNzaW5nJiZmKGEuYWFuRmVhdHVyZXMucikuY3NzKCJkaXNwbGF5IixiPyJibG9jayI6Im5vbmUiKTtBKGEsbnVsbCwicHJvY2Vzc2luZyIsW2EsYl0pfWZ1bmN0aW9uIHdiKGEpe3ZhciBiPWYoYS5uVGFibGUpO2IuYXR0cigicm9sZSIsImdyaWQiKTt2YXIgYz1hLm9TY3JvbGw7aWYoIiI9PT1jLnNYJiYiIj09PWMuc1kpcmV0dXJuIGEublRhYmxlO3ZhciBkPWMuc1gsZT1jLnNZLApoPWEub0NsYXNzZXMsZz1iLmNoaWxkcmVuKCJjYXB0aW9uIiksaz1nLmxlbmd0aD9nWzBdLl9jYXB0aW9uU2lkZTpudWxsLGw9ZihiWzBdLmNsb25lTm9kZSghMSkpLG49ZihiWzBdLmNsb25lTm9kZSghMSkpLG09Yi5jaGlsZHJlbigidGZvb3QiKTttLmxlbmd0aHx8KG09bnVsbCk7bD1mKCI8ZGl2Lz4iLHsiY2xhc3MiOmguc1Njcm9sbFdyYXBwZXJ9KS5hcHBlbmQoZigiPGRpdi8+Iix7ImNsYXNzIjpoLnNTY3JvbGxIZWFkfSkuY3NzKHtvdmVyZmxvdzoiaGlkZGVuIixwb3NpdGlvbjoicmVsYXRpdmUiLGJvcmRlcjowLHdpZHRoOmQ/ZD9CKGQpOm51bGw6IjEwMCUifSkuYXBwZW5kKGYoIjxkaXYvPiIseyJjbGFzcyI6aC5zU2Nyb2xsSGVhZElubmVyfSkuY3NzKHsiYm94LXNpemluZyI6ImNvbnRlbnQtYm94Iix3aWR0aDpjLnNYSW5uZXJ8fCIxMDAlIn0pLmFwcGVuZChsLnJlbW92ZUF0dHIoImlkIikuY3NzKCJtYXJnaW4tbGVmdCIsMCkuYXBwZW5kKCJ0b3AiPT09az9nOm51bGwpLmFwcGVuZChiLmNoaWxkcmVuKCJ0aGVhZCIpKSkpKS5hcHBlbmQoZigiPGRpdi8+IiwKeyJjbGFzcyI6aC5zU2Nyb2xsQm9keX0pLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIixvdmVyZmxvdzoiYXV0byIsd2lkdGg6ZD9CKGQpOm51bGx9KS5hcHBlbmQoYikpO20mJmwuYXBwZW5kKGYoIjxkaXYvPiIseyJjbGFzcyI6aC5zU2Nyb2xsRm9vdH0pLmNzcyh7b3ZlcmZsb3c6ImhpZGRlbiIsYm9yZGVyOjAsd2lkdGg6ZD9kP0IoZCk6bnVsbDoiMTAwJSJ9KS5hcHBlbmQoZigiPGRpdi8+Iix7ImNsYXNzIjpoLnNTY3JvbGxGb290SW5uZXJ9KS5hcHBlbmQobi5yZW1vdmVBdHRyKCJpZCIpLmNzcygibWFyZ2luLWxlZnQiLDApLmFwcGVuZCgiYm90dG9tIj09PWs/ZzpudWxsKS5hcHBlbmQoYi5jaGlsZHJlbigidGZvb3QiKSkpKSk7Yj1sLmNoaWxkcmVuKCk7dmFyIHA9YlswXTtoPWJbMV07dmFyIHU9bT9iWzJdOm51bGw7aWYoZClmKGgpLm9uKCJzY3JvbGwuRFQiLGZ1bmN0aW9uKGEpe2E9dGhpcy5zY3JvbGxMZWZ0O3Auc2Nyb2xsTGVmdD1hO20mJih1LnNjcm9sbExlZnQ9YSl9KTsKZihoKS5jc3MoZSYmYy5iQ29sbGFwc2U/Im1heC1oZWlnaHQiOiJoZWlnaHQiLGUpO2EublNjcm9sbEhlYWQ9cDthLm5TY3JvbGxCb2R5PWg7YS5uU2Nyb2xsRm9vdD11O2EuYW9EcmF3Q2FsbGJhY2sucHVzaCh7Zm46bmEsc05hbWU6InNjcm9sbGluZyJ9KTtyZXR1cm4gbFswXX1mdW5jdGlvbiBuYShhKXt2YXIgYj1hLm9TY3JvbGwsYz1iLnNYLGQ9Yi5zWElubmVyLGU9Yi5zWTtiPWIuaUJhcldpZHRoO3ZhciBoPWYoYS5uU2Nyb2xsSGVhZCksZz1oWzBdLnN0eWxlLGs9aC5jaGlsZHJlbigiZGl2IiksbD1rWzBdLnN0eWxlLG49ay5jaGlsZHJlbigidGFibGUiKTtrPWEublNjcm9sbEJvZHk7dmFyIG09ZihrKSx3PWsuc3R5bGUsdT1mKGEublNjcm9sbEZvb3QpLmNoaWxkcmVuKCJkaXYiKSxxPXUuY2hpbGRyZW4oInRhYmxlIiksdD1mKGEublRIZWFkKSxyPWYoYS5uVGFibGUpLHY9clswXSx6YT12LnN0eWxlLFQ9YS5uVEZvb3Q/ZihhLm5URm9vdCk6bnVsbCxBPWEub0Jyb3dzZXIsCng9QS5iU2Nyb2xsT3ZlcnNpemUsYWM9SihhLmFvQ29sdW1ucywiblRoIiksWWE9W10seT1bXSx6PVtdLEM9W10sRyxIPWZ1bmN0aW9uKGEpe2E9YS5zdHlsZTthLnBhZGRpbmdUb3A9IjAiO2EucGFkZGluZ0JvdHRvbT0iMCI7YS5ib3JkZXJUb3BXaWR0aD0iMCI7YS5ib3JkZXJCb3R0b21XaWR0aD0iMCI7YS5oZWlnaHQ9MH07dmFyIEQ9ay5zY3JvbGxIZWlnaHQ+ay5jbGllbnRIZWlnaHQ7aWYoYS5zY3JvbGxCYXJWaXMhPT1EJiZhLnNjcm9sbEJhclZpcyE9PXApYS5zY3JvbGxCYXJWaXM9RCxhYShhKTtlbHNle2Euc2Nyb2xsQmFyVmlzPUQ7ci5jaGlsZHJlbigidGhlYWQsIHRmb290IikucmVtb3ZlKCk7aWYoVCl7dmFyIEU9VC5jbG9uZSgpLnByZXBlbmRUbyhyKTt2YXIgRj1ULmZpbmQoInRyIik7RT1FLmZpbmQoInRyIil9dmFyIEk9dC5jbG9uZSgpLnByZXBlbmRUbyhyKTt0PXQuZmluZCgidHIiKTtEPUkuZmluZCgidHIiKTtJLmZpbmQoInRoLCB0ZCIpLnJlbW92ZUF0dHIoInRhYmluZGV4Iik7CmN8fCh3LndpZHRoPSIxMDAlIixoWzBdLnN0eWxlLndpZHRoPSIxMDAlIik7Zi5lYWNoKHVhKGEsSSksZnVuY3Rpb24oYixjKXtHPWJhKGEsYik7Yy5zdHlsZS53aWR0aD1hLmFvQ29sdW1uc1tHXS5zV2lkdGh9KTtUJiZOKGZ1bmN0aW9uKGEpe2Euc3R5bGUud2lkdGg9IiJ9LEUpO2g9ci5vdXRlcldpZHRoKCk7IiI9PT1jPyh6YS53aWR0aD0iMTAwJSIseCYmKHIuZmluZCgidGJvZHkiKS5oZWlnaHQoKT5rLm9mZnNldEhlaWdodHx8InNjcm9sbCI9PW0uY3NzKCJvdmVyZmxvdy15IikpJiYoemEud2lkdGg9QihyLm91dGVyV2lkdGgoKS1iKSksaD1yLm91dGVyV2lkdGgoKSk6IiIhPT1kJiYoemEud2lkdGg9QihkKSxoPXIub3V0ZXJXaWR0aCgpKTtOKEgsRCk7TihmdW5jdGlvbihhKXt6LnB1c2goYS5pbm5lckhUTUwpO1lhLnB1c2goQihmKGEpLmNzcygid2lkdGgiKSkpfSxEKTtOKGZ1bmN0aW9uKGEsYil7LTEhPT1mLmluQXJyYXkoYSxhYykmJihhLnN0eWxlLndpZHRoPVlhW2JdKX0sCnQpO2YoRCkuaGVpZ2h0KDApO1QmJihOKEgsRSksTihmdW5jdGlvbihhKXtDLnB1c2goYS5pbm5lckhUTUwpO3kucHVzaChCKGYoYSkuY3NzKCJ3aWR0aCIpKSl9LEUpLE4oZnVuY3Rpb24oYSxiKXthLnN0eWxlLndpZHRoPXlbYl19LEYpLGYoRSkuaGVpZ2h0KDApKTtOKGZ1bmN0aW9uKGEsYil7YS5pbm5lckhUTUw9JzxkaXYgY2xhc3M9ImRhdGFUYWJsZXNfc2l6aW5nIj4nK3pbYl0rIjwvZGl2PiI7YS5jaGlsZE5vZGVzWzBdLnN0eWxlLmhlaWdodD0iMCI7YS5jaGlsZE5vZGVzWzBdLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iO2Euc3R5bGUud2lkdGg9WWFbYl19LEQpO1QmJk4oZnVuY3Rpb24oYSxiKXthLmlubmVySFRNTD0nPGRpdiBjbGFzcz0iZGF0YVRhYmxlc19zaXppbmciPicrQ1tiXSsiPC9kaXY+IjthLmNoaWxkTm9kZXNbMF0uc3R5bGUuaGVpZ2h0PSIwIjthLmNoaWxkTm9kZXNbMF0uc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiI7YS5zdHlsZS53aWR0aD15W2JdfSxFKTtyLm91dGVyV2lkdGgoKTwKaD8oRj1rLnNjcm9sbEhlaWdodD5rLm9mZnNldEhlaWdodHx8InNjcm9sbCI9PW0uY3NzKCJvdmVyZmxvdy15Iik/aCtiOmgseCYmKGsuc2Nyb2xsSGVpZ2h0Pmsub2Zmc2V0SGVpZ2h0fHwic2Nyb2xsIj09bS5jc3MoIm92ZXJmbG93LXkiKSkmJih6YS53aWR0aD1CKEYtYikpLCIiIT09YyYmIiI9PT1kfHxPKGEsMSwiUG9zc2libGUgY29sdW1uIG1pc2FsaWdubWVudCIsNikpOkY9IjEwMCUiO3cud2lkdGg9QihGKTtnLndpZHRoPUIoRik7VCYmKGEublNjcm9sbEZvb3Quc3R5bGUud2lkdGg9QihGKSk7IWUmJngmJih3LmhlaWdodD1CKHYub2Zmc2V0SGVpZ2h0K2IpKTtjPXIub3V0ZXJXaWR0aCgpO25bMF0uc3R5bGUud2lkdGg9QihjKTtsLndpZHRoPUIoYyk7ZD1yLmhlaWdodCgpPmsuY2xpZW50SGVpZ2h0fHwic2Nyb2xsIj09bS5jc3MoIm92ZXJmbG93LXkiKTtlPSJwYWRkaW5nIisoQS5iU2Nyb2xsYmFyTGVmdD8iTGVmdCI6IlJpZ2h0Iik7bFtlXT1kP2IrInB4IjoiMHB4IjtUJiYKKHFbMF0uc3R5bGUud2lkdGg9QihjKSx1WzBdLnN0eWxlLndpZHRoPUIoYyksdVswXS5zdHlsZVtlXT1kP2IrInB4IjoiMHB4Iik7ci5jaGlsZHJlbigiY29sZ3JvdXAiKS5pbnNlcnRCZWZvcmUoci5jaGlsZHJlbigidGhlYWQiKSk7bS50cmlnZ2VyKCJzY3JvbGwiKTshYS5iU29ydGVkJiYhYS5iRmlsdGVyZWR8fGEuX2RyYXdIb2xkfHwoay5zY3JvbGxUb3A9MCl9fWZ1bmN0aW9uIE4oYSxiLGMpe2Zvcih2YXIgZD0wLGU9MCxoPWIubGVuZ3RoLGcsaztlPGg7KXtnPWJbZV0uZmlyc3RDaGlsZDtmb3Ioaz1jP2NbZV0uZmlyc3RDaGlsZDpudWxsO2c7KTE9PT1nLm5vZGVUeXBlJiYoYz9hKGcsayxkKTphKGcsZCksZCsrKSxnPWcubmV4dFNpYmxpbmcsaz1jP2submV4dFNpYmxpbmc6bnVsbDtlKyt9fWZ1bmN0aW9uIEphKGEpe3ZhciBiPWEublRhYmxlLGM9YS5hb0NvbHVtbnMsZD1hLm9TY3JvbGwsZT1kLnNZLGg9ZC5zWCxnPWQuc1hJbm5lcixrPWMubGVuZ3RoLGw9b2EoYSwiYlZpc2libGUiKSwKbj1mKCJ0aCIsYS5uVEhlYWQpLG09Yi5nZXRBdHRyaWJ1dGUoIndpZHRoIikscD1iLnBhcmVudE5vZGUsdT0hMSxxLHQ9YS5vQnJvd3NlcjtkPXQuYlNjcm9sbE92ZXJzaXplOyhxPWIuc3R5bGUud2lkdGgpJiYtMSE9PXEuaW5kZXhPZigiJSIpJiYobT1xKTtmb3IocT0wO3E8bC5sZW5ndGg7cSsrKXt2YXIgcj1jW2xbcV1dO251bGwhPT1yLnNXaWR0aCYmKHIuc1dpZHRoPUpiKHIuc1dpZHRoT3JpZyxwKSx1PSEwKX1pZihkfHwhdSYmIWgmJiFlJiZrPT1XKGEpJiZrPT1uLmxlbmd0aClmb3IocT0wO3E8aztxKyspbD1iYShhLHEpLG51bGwhPT1sJiYoY1tsXS5zV2lkdGg9QihuLmVxKHEpLndpZHRoKCkpKTtlbHNle2s9ZihiKS5jbG9uZSgpLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpLnJlbW92ZUF0dHIoImlkIik7ay5maW5kKCJ0Ym9keSB0ciIpLnJlbW92ZSgpO3ZhciB2PWYoIjx0ci8+IikuYXBwZW5kVG8oay5maW5kKCJ0Ym9keSIpKTtrLmZpbmQoInRoZWFkLCB0Zm9vdCIpLnJlbW92ZSgpOwprLmFwcGVuZChmKGEublRIZWFkKS5jbG9uZSgpKS5hcHBlbmQoZihhLm5URm9vdCkuY2xvbmUoKSk7ay5maW5kKCJ0Zm9vdCB0aCwgdGZvb3QgdGQiKS5jc3MoIndpZHRoIiwiIik7bj11YShhLGsuZmluZCgidGhlYWQiKVswXSk7Zm9yKHE9MDtxPGwubGVuZ3RoO3ErKylyPWNbbFtxXV0sbltxXS5zdHlsZS53aWR0aD1udWxsIT09ci5zV2lkdGhPcmlnJiYiIiE9PXIuc1dpZHRoT3JpZz9CKHIuc1dpZHRoT3JpZyk6IiIsci5zV2lkdGhPcmlnJiZoJiZmKG5bcV0pLmFwcGVuZChmKCI8ZGl2Lz4iKS5jc3Moe3dpZHRoOnIuc1dpZHRoT3JpZyxtYXJnaW46MCxwYWRkaW5nOjAsYm9yZGVyOjAsaGVpZ2h0OjF9KSk7aWYoYS5hb0RhdGEubGVuZ3RoKWZvcihxPTA7cTxsLmxlbmd0aDtxKyspdT1sW3FdLHI9Y1t1XSxmKEtiKGEsdSkpLmNsb25lKCExKS5hcHBlbmQoci5zQ29udGVudFBhZGRpbmcpLmFwcGVuZFRvKHYpO2YoIltuYW1lXSIsaykucmVtb3ZlQXR0cigibmFtZSIpO3I9ZigiPGRpdi8+IikuY3NzKGh8fAplP3twb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowLGxlZnQ6MCxoZWlnaHQ6MSxyaWdodDowLG92ZXJmbG93OiJoaWRkZW4ifTp7fSkuYXBwZW5kKGspLmFwcGVuZFRvKHApO2gmJmc/ay53aWR0aChnKTpoPyhrLmNzcygid2lkdGgiLCJhdXRvIiksay5yZW1vdmVBdHRyKCJ3aWR0aCIpLGsud2lkdGgoKTxwLmNsaWVudFdpZHRoJiZtJiZrLndpZHRoKHAuY2xpZW50V2lkdGgpKTplP2sud2lkdGgocC5jbGllbnRXaWR0aCk6bSYmay53aWR0aChtKTtmb3IocT1lPTA7cTxsLmxlbmd0aDtxKyspcD1mKG5bcV0pLGc9cC5vdXRlcldpZHRoKCktcC53aWR0aCgpLHA9dC5iQm91bmRpbmc/TWF0aC5jZWlsKG5bcV0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpOnAub3V0ZXJXaWR0aCgpLGUrPXAsY1tsW3FdXS5zV2lkdGg9QihwLWcpO2Iuc3R5bGUud2lkdGg9QihlKTtyLnJlbW92ZSgpfW0mJihiLnN0eWxlLndpZHRoPUIobSkpOyFtJiYhaHx8YS5fcmVzekV2dHx8KGI9ZnVuY3Rpb24oKXtmKHopLm9uKCJyZXNpemUuRFQtIisKYS5zSW5zdGFuY2UsU2EoZnVuY3Rpb24oKXthYShhKX0pKX0sZD9zZXRUaW1lb3V0KGIsMUUzKTpiKCksYS5fcmVzekV2dD0hMCl9ZnVuY3Rpb24gSmIoYSxiKXtpZighYSlyZXR1cm4gMDthPWYoIjxkaXYvPiIpLmNzcygid2lkdGgiLEIoYSkpLmFwcGVuZFRvKGJ8fHkuYm9keSk7Yj1hWzBdLm9mZnNldFdpZHRoO2EucmVtb3ZlKCk7cmV0dXJuIGJ9ZnVuY3Rpb24gS2IoYSxiKXt2YXIgYz1MYihhLGIpO2lmKDA+YylyZXR1cm4gbnVsbDt2YXIgZD1hLmFvRGF0YVtjXTtyZXR1cm4gZC5uVHI/ZC5hbkNlbGxzW2JdOmYoIjx0ZC8+IikuaHRtbChJKGEsYyxiLCJkaXNwbGF5IikpWzBdfWZ1bmN0aW9uIExiKGEsYil7Zm9yKHZhciBjLGQ9LTEsZT0tMSxoPTAsZz1hLmFvRGF0YS5sZW5ndGg7aDxnO2grKyljPUkoYSxoLGIsImRpc3BsYXkiKSsiIixjPWMucmVwbGFjZShiYywiIiksYz1jLnJlcGxhY2UoLyZuYnNwOy9nLCIgIiksYy5sZW5ndGg+ZCYmKGQ9Yy5sZW5ndGgsZT1oKTtyZXR1cm4gZX0KZnVuY3Rpb24gQihhKXtyZXR1cm4gbnVsbD09PWE/IjBweCI6Im51bWJlciI9PXR5cGVvZiBhPzA+YT8iMHB4IjphKyJweCI6YS5tYXRjaCgvXGQkLyk/YSsicHgiOmF9ZnVuY3Rpb24gWShhKXt2YXIgYj1bXSxjPWEuYW9Db2x1bW5zO3ZhciBkPWEuYWFTb3J0aW5nRml4ZWQ7dmFyIGU9Zi5pc1BsYWluT2JqZWN0KGQpO3ZhciBoPVtdO3ZhciBnPWZ1bmN0aW9uKGEpe2EubGVuZ3RoJiYhZi5pc0FycmF5KGFbMF0pP2gucHVzaChhKTpmLm1lcmdlKGgsYSl9O2YuaXNBcnJheShkKSYmZyhkKTtlJiZkLnByZSYmZyhkLnByZSk7ZyhhLmFhU29ydGluZyk7ZSYmZC5wb3N0JiZnKGQucG9zdCk7Zm9yKGE9MDthPGgubGVuZ3RoO2ErKyl7dmFyIGs9aFthXVswXTtnPWNba10uYURhdGFTb3J0O2Q9MDtmb3IoZT1nLmxlbmd0aDtkPGU7ZCsrKXt2YXIgbD1nW2RdO3ZhciBuPWNbbF0uc1R5cGV8fCJzdHJpbmciO2hbYV0uX2lkeD09PXAmJihoW2FdLl9pZHg9Zi5pbkFycmF5KGhbYV1bMV0sY1tsXS5hc1NvcnRpbmcpKTsKYi5wdXNoKHtzcmM6ayxjb2w6bCxkaXI6aFthXVsxXSxpbmRleDpoW2FdLl9pZHgsdHlwZTpuLGZvcm1hdHRlcjpxLmV4dC50eXBlLm9yZGVyW24rIi1wcmUiXX0pfX1yZXR1cm4gYn1mdW5jdGlvbiByYihhKXt2YXIgYixjPVtdLGQ9cS5leHQudHlwZS5vcmRlcixlPWEuYW9EYXRhLGg9MCxnPWEuYWlEaXNwbGF5TWFzdGVyO0thKGEpO3ZhciBrPVkoYSk7dmFyIGY9MDtmb3IoYj1rLmxlbmd0aDtmPGI7ZisrKXt2YXIgbj1rW2ZdO24uZm9ybWF0dGVyJiZoKys7TWIoYSxuLmNvbCl9aWYoInNzcCIhPUQoYSkmJjAhPT1rLmxlbmd0aCl7Zj0wO2ZvcihiPWcubGVuZ3RoO2Y8YjtmKyspY1tnW2ZdXT1mO2g9PT1rLmxlbmd0aD9nLnNvcnQoZnVuY3Rpb24oYSxiKXt2YXIgZCxoPWsubGVuZ3RoLGc9ZVthXS5fYVNvcnREYXRhLGY9ZVtiXS5fYVNvcnREYXRhO2ZvcihkPTA7ZDxoO2QrKyl7dmFyIGw9a1tkXTt2YXIgbT1nW2wuY29sXTt2YXIgbj1mW2wuY29sXTttPW08bj8tMTptPm4/MTowOwppZigwIT09bSlyZXR1cm4iYXNjIj09PWwuZGlyP206LW19bT1jW2FdO249Y1tiXTtyZXR1cm4gbTxuPy0xOm0+bj8xOjB9KTpnLnNvcnQoZnVuY3Rpb24oYSxiKXt2YXIgaCxnPWsubGVuZ3RoLGY9ZVthXS5fYVNvcnREYXRhLGw9ZVtiXS5fYVNvcnREYXRhO2ZvcihoPTA7aDxnO2grKyl7dmFyIG09a1toXTt2YXIgbj1mW20uY29sXTt2YXIgcD1sW20uY29sXTttPWRbbS50eXBlKyItIittLmRpcl18fGRbInN0cmluZy0iK20uZGlyXTtuPW0obixwKTtpZigwIT09bilyZXR1cm4gbn1uPWNbYV07cD1jW2JdO3JldHVybiBuPHA/LTE6bj5wPzE6MH0pfWEuYlNvcnRlZD0hMH1mdW5jdGlvbiBOYihhKXt2YXIgYj1hLmFvQ29sdW1ucyxjPVkoYSk7YT1hLm9MYW5ndWFnZS5vQXJpYTtmb3IodmFyIGQ9MCxlPWIubGVuZ3RoO2Q8ZTtkKyspe3ZhciBoPWJbZF07dmFyIGc9aC5hc1NvcnRpbmc7dmFyIGs9aC5zVGl0bGUucmVwbGFjZSgvPC4qPz4vZywiIik7dmFyIGY9aC5uVGg7Zi5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtc29ydCIpOwpoLmJTb3J0YWJsZSYmKDA8Yy5sZW5ndGgmJmNbMF0uY29sPT1kPyhmLnNldEF0dHJpYnV0ZSgiYXJpYS1zb3J0IiwiYXNjIj09Y1swXS5kaXI/ImFzY2VuZGluZyI6ImRlc2NlbmRpbmciKSxoPWdbY1swXS5pbmRleCsxXXx8Z1swXSk6aD1nWzBdLGsrPSJhc2MiPT09aD9hLnNTb3J0QXNjZW5kaW5nOmEuc1NvcnREZXNjZW5kaW5nKTtmLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsayl9fWZ1bmN0aW9uIFphKGEsYixjLGQpe3ZhciBlPWEuYWFTb3J0aW5nLGg9YS5hb0NvbHVtbnNbYl0uYXNTb3J0aW5nLGc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLl9pZHg7Yz09PXAmJihjPWYuaW5BcnJheShhWzFdLGgpKTtyZXR1cm4gYysxPGgubGVuZ3RoP2MrMTpiP251bGw6MH07Im51bWJlciI9PT10eXBlb2YgZVswXSYmKGU9YS5hYVNvcnRpbmc9W2VdKTtjJiZhLm9GZWF0dXJlcy5iU29ydE11bHRpPyhjPWYuaW5BcnJheShiLEooZSwiMCIpKSwtMSE9PWM/KGI9ZyhlW2NdLCEwKSxudWxsPT09CmImJjE9PT1lLmxlbmd0aCYmKGI9MCksbnVsbD09PWI/ZS5zcGxpY2UoYywxKTooZVtjXVsxXT1oW2JdLGVbY10uX2lkeD1iKSk6KGUucHVzaChbYixoWzBdLDBdKSxlW2UubGVuZ3RoLTFdLl9pZHg9MCkpOmUubGVuZ3RoJiZlWzBdWzBdPT1iPyhiPWcoZVswXSksZS5sZW5ndGg9MSxlWzBdWzFdPWhbYl0sZVswXS5faWR4PWIpOihlLmxlbmd0aD0wLGUucHVzaChbYixoWzBdXSksZVswXS5faWR4PTApO1YoYSk7ImZ1bmN0aW9uIj09dHlwZW9mIGQmJmQoYSl9ZnVuY3Rpb24gUWEoYSxiLGMsZCl7dmFyIGU9YS5hb0NvbHVtbnNbY107JGEoYix7fSxmdW5jdGlvbihiKXshMSE9PWUuYlNvcnRhYmxlJiYoYS5vRmVhdHVyZXMuYlByb2Nlc3Npbmc/KEsoYSwhMCksc2V0VGltZW91dChmdW5jdGlvbigpe1phKGEsYyxiLnNoaWZ0S2V5LGQpOyJzc3AiIT09RChhKSYmSyhhLCExKX0sMCkpOlphKGEsYyxiLnNoaWZ0S2V5LGQpKX0pfWZ1bmN0aW9uIEFhKGEpe3ZhciBiPWEuYUxhc3RTb3J0LApjPWEub0NsYXNzZXMuc1NvcnRDb2x1bW4sZD1ZKGEpLGU9YS5vRmVhdHVyZXMsaDtpZihlLmJTb3J0JiZlLmJTb3J0Q2xhc3Nlcyl7ZT0wO2ZvcihoPWIubGVuZ3RoO2U8aDtlKyspe3ZhciBnPWJbZV0uc3JjO2YoSihhLmFvRGF0YSwiYW5DZWxscyIsZykpLnJlbW92ZUNsYXNzKGMrKDI+ZT9lKzE6MykpfWU9MDtmb3IoaD1kLmxlbmd0aDtlPGg7ZSsrKWc9ZFtlXS5zcmMsZihKKGEuYW9EYXRhLCJhbkNlbGxzIixnKSkuYWRkQ2xhc3MoYysoMj5lP2UrMTozKSl9YS5hTGFzdFNvcnQ9ZH1mdW5jdGlvbiBNYihhLGIpe3ZhciBjPWEuYW9Db2x1bW5zW2JdLGQ9cS5leHQub3JkZXJbYy5zU29ydERhdGFUeXBlXSxlO2QmJihlPWQuY2FsbChhLm9JbnN0YW5jZSxhLGIsY2EoYSxiKSkpO2Zvcih2YXIgaCxnPXEuZXh0LnR5cGUub3JkZXJbYy5zVHlwZSsiLXByZSJdLGs9MCxmPWEuYW9EYXRhLmxlbmd0aDtrPGY7aysrKWlmKGM9YS5hb0RhdGFba10sYy5fYVNvcnREYXRhfHwoYy5fYVNvcnREYXRhPQpbXSksIWMuX2FTb3J0RGF0YVtiXXx8ZCloPWQ/ZVtrXTpJKGEsayxiLCJzb3J0IiksYy5fYVNvcnREYXRhW2JdPWc/ZyhoKTpofWZ1bmN0aW9uIEJhKGEpe2lmKGEub0ZlYXR1cmVzLmJTdGF0ZVNhdmUmJiFhLmJEZXN0cm95aW5nKXt2YXIgYj17dGltZTorbmV3IERhdGUsc3RhcnQ6YS5faURpc3BsYXlTdGFydCxsZW5ndGg6YS5faURpc3BsYXlMZW5ndGgsb3JkZXI6Zi5leHRlbmQoITAsW10sYS5hYVNvcnRpbmcpLHNlYXJjaDpGYihhLm9QcmV2aW91c1NlYXJjaCksY29sdW1uczpmLm1hcChhLmFvQ29sdW1ucyxmdW5jdGlvbihiLGQpe3JldHVybnt2aXNpYmxlOmIuYlZpc2libGUsc2VhcmNoOkZiKGEuYW9QcmVTZWFyY2hDb2xzW2RdKX19KX07QShhLCJhb1N0YXRlU2F2ZVBhcmFtcyIsInN0YXRlU2F2ZVBhcmFtcyIsW2EsYl0pO2Eub1NhdmVkU3RhdGU9YjthLmZuU3RhdGVTYXZlQ2FsbGJhY2suY2FsbChhLm9JbnN0YW5jZSxhLGIpfX1mdW5jdGlvbiBPYihhLGIsYyl7dmFyIGQsCmUsaD1hLmFvQ29sdW1ucztiPWZ1bmN0aW9uKGIpe2lmKGImJmIudGltZSl7dmFyIGc9QShhLCJhb1N0YXRlTG9hZFBhcmFtcyIsInN0YXRlTG9hZFBhcmFtcyIsW2EsYl0pO2lmKC0xPT09Zi5pbkFycmF5KCExLGcpJiYoZz1hLmlTdGF0ZUR1cmF0aW9uLCEoMDxnJiZiLnRpbWU8K25ldyBEYXRlLTFFMypnfHxiLmNvbHVtbnMmJmgubGVuZ3RoIT09Yi5jb2x1bW5zLmxlbmd0aCkpKXthLm9Mb2FkZWRTdGF0ZT1mLmV4dGVuZCghMCx7fSxiKTtiLnN0YXJ0IT09cCYmKGEuX2lEaXNwbGF5U3RhcnQ9Yi5zdGFydCxhLmlJbml0RGlzcGxheVN0YXJ0PWIuc3RhcnQpO2IubGVuZ3RoIT09cCYmKGEuX2lEaXNwbGF5TGVuZ3RoPWIubGVuZ3RoKTtiLm9yZGVyIT09cCYmKGEuYWFTb3J0aW5nPVtdLGYuZWFjaChiLm9yZGVyLGZ1bmN0aW9uKGIsYyl7YS5hYVNvcnRpbmcucHVzaChjWzBdPj1oLmxlbmd0aD9bMCxjWzFdXTpjKX0pKTtiLnNlYXJjaCE9PXAmJmYuZXh0ZW5kKGEub1ByZXZpb3VzU2VhcmNoLApHYihiLnNlYXJjaCkpO2lmKGIuY29sdW1ucylmb3IoZD0wLGU9Yi5jb2x1bW5zLmxlbmd0aDtkPGU7ZCsrKWc9Yi5jb2x1bW5zW2RdLGcudmlzaWJsZSE9PXAmJihoW2RdLmJWaXNpYmxlPWcudmlzaWJsZSksZy5zZWFyY2ghPT1wJiZmLmV4dGVuZChhLmFvUHJlU2VhcmNoQ29sc1tkXSxHYihnLnNlYXJjaCkpO0EoYSwiYW9TdGF0ZUxvYWRlZCIsInN0YXRlTG9hZGVkIixbYSxiXSl9fWMoKX07aWYoYS5vRmVhdHVyZXMuYlN0YXRlU2F2ZSl7dmFyIGc9YS5mblN0YXRlTG9hZENhbGxiYWNrLmNhbGwoYS5vSW5zdGFuY2UsYSxiKTtnIT09cCYmYihnKX1lbHNlIGMoKX1mdW5jdGlvbiBDYShhKXt2YXIgYj1xLnNldHRpbmdzO2E9Zi5pbkFycmF5KGEsSihiLCJuVGFibGUiKSk7cmV0dXJuLTEhPT1hP2JbYV06bnVsbH1mdW5jdGlvbiBPKGEsYixjLGQpe2M9IkRhdGFUYWJsZXMgd2FybmluZzogIisoYT8idGFibGUgaWQ9IithLnNUYWJsZUlkKyIgLSAiOiIiKStjO2QmJihjKz0iLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGVycm9yLCBwbGVhc2Ugc2VlIGh0dHA6Ly9kYXRhdGFibGVzLm5ldC90bi8iKwpkKTtpZihiKXouY29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKGMpO2Vsc2UgaWYoYj1xLmV4dCxiPWIuc0Vyck1vZGV8fGIuZXJyTW9kZSxhJiZBKGEsbnVsbCwiZXJyb3IiLFthLGQsY10pLCJhbGVydCI9PWIpYWxlcnQoYyk7ZWxzZXtpZigidGhyb3ciPT1iKXRocm93IEVycm9yKGMpOyJmdW5jdGlvbiI9PXR5cGVvZiBiJiZiKGEsZCxjKX19ZnVuY3Rpb24gTShhLGIsYyxkKXtmLmlzQXJyYXkoYyk/Zi5lYWNoKGMsZnVuY3Rpb24oYyxkKXtmLmlzQXJyYXkoZCk/TShhLGIsZFswXSxkWzFdKTpNKGEsYixkKX0pOihkPT09cCYmKGQ9YyksYltjXSE9PXAmJihhW2RdPWJbY10pKX1mdW5jdGlvbiBhYihhLGIsYyl7dmFyIGQ7Zm9yKGQgaW4gYilpZihiLmhhc093blByb3BlcnR5KGQpKXt2YXIgZT1iW2RdO2YuaXNQbGFpbk9iamVjdChlKT8oZi5pc1BsYWluT2JqZWN0KGFbZF0pfHwoYVtkXT17fSksZi5leHRlbmQoITAsYVtkXSxlKSk6YyYmImRhdGEiIT09ZCYmImFhRGF0YSIhPT0KZCYmZi5pc0FycmF5KGUpP2FbZF09ZS5zbGljZSgpOmFbZF09ZX1yZXR1cm4gYX1mdW5jdGlvbiAkYShhLGIsYyl7ZihhKS5vbigiY2xpY2suRFQiLGIsZnVuY3Rpb24oYil7ZihhKS5ibHVyKCk7YyhiKX0pLm9uKCJrZXlwcmVzcy5EVCIsYixmdW5jdGlvbihhKXsxMz09PWEud2hpY2gmJihhLnByZXZlbnREZWZhdWx0KCksYyhhKSl9KS5vbigic2VsZWN0c3RhcnQuRFQiLGZ1bmN0aW9uKCl7cmV0dXJuITF9KX1mdW5jdGlvbiBFKGEsYixjLGQpe2MmJmFbYl0ucHVzaCh7Zm46YyxzTmFtZTpkfSl9ZnVuY3Rpb24gQShhLGIsYyxkKXt2YXIgZT1bXTtiJiYoZT1mLm1hcChhW2JdLnNsaWNlKCkucmV2ZXJzZSgpLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGIuZm4uYXBwbHkoYS5vSW5zdGFuY2UsZCl9KSk7bnVsbCE9PWMmJihiPWYuRXZlbnQoYysiLmR0IiksZihhLm5UYWJsZSkudHJpZ2dlcihiLGQpLGUucHVzaChiLnJlc3VsdCkpO3JldHVybiBlfWZ1bmN0aW9uIFdhKGEpe3ZhciBiPWEuX2lEaXNwbGF5U3RhcnQsCmM9YS5mbkRpc3BsYXlFbmQoKSxkPWEuX2lEaXNwbGF5TGVuZ3RoO2I+PWMmJihiPWMtZCk7Yi09YiVkO2lmKC0xPT09ZHx8MD5iKWI9MDthLl9pRGlzcGxheVN0YXJ0PWJ9ZnVuY3Rpb24gUmEoYSxiKXthPWEucmVuZGVyZXI7dmFyIGM9cS5leHQucmVuZGVyZXJbYl07cmV0dXJuIGYuaXNQbGFpbk9iamVjdChhKSYmYVtiXT9jW2FbYl1dfHxjLl86InN0cmluZyI9PT10eXBlb2YgYT9jW2FdfHxjLl86Yy5ffWZ1bmN0aW9uIEQoYSl7cmV0dXJuIGEub0ZlYXR1cmVzLmJTZXJ2ZXJTaWRlPyJzc3AiOmEuYWpheHx8YS5zQWpheFNvdXJjZT8iYWpheCI6ImRvbSJ9ZnVuY3Rpb24ga2EoYSxiKXt2YXIgYz1QYi5udW1iZXJzX2xlbmd0aCxkPU1hdGguZmxvb3IoYy8yKTtiPD1jP2E9WigwLGIpOmE8PWQ/KGE9WigwLGMtMiksYS5wdXNoKCJlbGxpcHNpcyIpLGEucHVzaChiLTEpKTooYT49Yi0xLWQ/YT1aKGItKGMtMiksYik6KGE9WihhLWQrMixhK2QtMSksYS5wdXNoKCJlbGxpcHNpcyIpLAphLnB1c2goYi0xKSksYS5zcGxpY2UoMCwwLCJlbGxpcHNpcyIpLGEuc3BsaWNlKDAsMCwwKSk7YS5EVF9lbD0ic3BhbiI7cmV0dXJuIGF9ZnVuY3Rpb24gSGEoYSl7Zi5lYWNoKHtudW06ZnVuY3Rpb24oYil7cmV0dXJuIERhKGIsYSl9LCJudW0tZm10IjpmdW5jdGlvbihiKXtyZXR1cm4gRGEoYixhLGJiKX0sImh0bWwtbnVtIjpmdW5jdGlvbihiKXtyZXR1cm4gRGEoYixhLEVhKX0sImh0bWwtbnVtLWZtdCI6ZnVuY3Rpb24oYil7cmV0dXJuIERhKGIsYSxFYSxiYil9fSxmdW5jdGlvbihiLGMpe0MudHlwZS5vcmRlcltiK2ErIi1wcmUiXT1jO2IubWF0Y2goL15odG1sXC0vKSYmKEMudHlwZS5zZWFyY2hbYithXT1DLnR5cGUuc2VhcmNoLmh0bWwpfSl9ZnVuY3Rpb24gUWIoYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGI9W0NhKHRoaXNbcS5leHQuaUFwaUluZGV4XSldLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKTtyZXR1cm4gcS5leHQuaW50ZXJuYWxbYV0uYXBwbHkodGhpcywKYil9fXZhciBxPWZ1bmN0aW9uKGEpe3RoaXMuJD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmFwaSghMCkuJChhLGIpfTt0aGlzLl89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5hcGkoITApLnJvd3MoYSxiKS5kYXRhKCl9O3RoaXMuYXBpPWZ1bmN0aW9uKGEpe3JldHVybiBhP25ldyB2KENhKHRoaXNbQy5pQXBpSW5kZXhdKSk6bmV3IHYodGhpcyl9O3RoaXMuZm5BZGREYXRhPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5hcGkoITApO2E9Zi5pc0FycmF5KGEpJiYoZi5pc0FycmF5KGFbMF0pfHxmLmlzUGxhaW5PYmplY3QoYVswXSkpP2Mucm93cy5hZGQoYSk6Yy5yb3cuYWRkKGEpOyhiPT09cHx8YikmJmMuZHJhdygpO3JldHVybiBhLmZsYXR0ZW4oKS50b0FycmF5KCl9O3RoaXMuZm5BZGp1c3RDb2x1bW5TaXppbmc9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5hcGkoITApLmNvbHVtbnMuYWRqdXN0KCksYz1iLnNldHRpbmdzKClbMF0sZD1jLm9TY3JvbGw7YT09PXB8fGE/Yi5kcmF3KCExKToKKCIiIT09ZC5zWHx8IiIhPT1kLnNZKSYmbmEoYyl9O3RoaXMuZm5DbGVhclRhYmxlPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuYXBpKCEwKS5jbGVhcigpOyhhPT09cHx8YSkmJmIuZHJhdygpfTt0aGlzLmZuQ2xvc2U9ZnVuY3Rpb24oYSl7dGhpcy5hcGkoITApLnJvdyhhKS5jaGlsZC5oaWRlKCl9O3RoaXMuZm5EZWxldGVSb3c9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuYXBpKCEwKTthPWQucm93cyhhKTt2YXIgZT1hLnNldHRpbmdzKClbMF0saD1lLmFvRGF0YVthWzBdWzBdXTthLnJlbW92ZSgpO2ImJmIuY2FsbCh0aGlzLGUsaCk7KGM9PT1wfHxjKSYmZC5kcmF3KCk7cmV0dXJuIGh9O3RoaXMuZm5EZXN0cm95PWZ1bmN0aW9uKGEpe3RoaXMuYXBpKCEwKS5kZXN0cm95KGEpfTt0aGlzLmZuRHJhdz1mdW5jdGlvbihhKXt0aGlzLmFwaSghMCkuZHJhdyhhKX07dGhpcy5mbkZpbHRlcj1mdW5jdGlvbihhLGIsYyxkLGUsZil7ZT10aGlzLmFwaSghMCk7bnVsbD09PWJ8fGI9PT1wPwplLnNlYXJjaChhLGMsZCxmKTplLmNvbHVtbihiKS5zZWFyY2goYSxjLGQsZik7ZS5kcmF3KCl9O3RoaXMuZm5HZXREYXRhPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5hcGkoITApO2lmKGEhPT1wKXt2YXIgZD1hLm5vZGVOYW1lP2Eubm9kZU5hbWUudG9Mb3dlckNhc2UoKToiIjtyZXR1cm4gYiE9PXB8fCJ0ZCI9PWR8fCJ0aCI9PWQ/Yy5jZWxsKGEsYikuZGF0YSgpOmMucm93KGEpLmRhdGEoKXx8bnVsbH1yZXR1cm4gYy5kYXRhKCkudG9BcnJheSgpfTt0aGlzLmZuR2V0Tm9kZXM9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5hcGkoITApO3JldHVybiBhIT09cD9iLnJvdyhhKS5ub2RlKCk6Yi5yb3dzKCkubm9kZXMoKS5mbGF0dGVuKCkudG9BcnJheSgpfTt0aGlzLmZuR2V0UG9zaXRpb249ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5hcGkoITApLGM9YS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpO3JldHVybiJUUiI9PWM/Yi5yb3coYSkuaW5kZXgoKToiVEQiPT1jfHwiVEgiPT1jPyhhPWIuY2VsbChhKS5pbmRleCgpLApbYS5yb3csYS5jb2x1bW5WaXNpYmxlLGEuY29sdW1uXSk6bnVsbH07dGhpcy5mbklzT3Blbj1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hcGkoITApLnJvdyhhKS5jaGlsZC5pc1Nob3duKCl9O3RoaXMuZm5PcGVuPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5hcGkoITApLnJvdyhhKS5jaGlsZChiLGMpLnNob3coKS5jaGlsZCgpWzBdfTt0aGlzLmZuUGFnZUNoYW5nZT1mdW5jdGlvbihhLGIpe2E9dGhpcy5hcGkoITApLnBhZ2UoYSk7KGI9PT1wfHxiKSYmYS5kcmF3KCExKX07dGhpcy5mblNldENvbHVtblZpcz1mdW5jdGlvbihhLGIsYyl7YT10aGlzLmFwaSghMCkuY29sdW1uKGEpLnZpc2libGUoYik7KGM9PT1wfHxjKSYmYS5jb2x1bW5zLmFkanVzdCgpLmRyYXcoKX07dGhpcy5mblNldHRpbmdzPWZ1bmN0aW9uKCl7cmV0dXJuIENhKHRoaXNbQy5pQXBpSW5kZXhdKX07dGhpcy5mblNvcnQ9ZnVuY3Rpb24oYSl7dGhpcy5hcGkoITApLm9yZGVyKGEpLmRyYXcoKX07dGhpcy5mblNvcnRMaXN0ZW5lcj0KZnVuY3Rpb24oYSxiLGMpe3RoaXMuYXBpKCEwKS5vcmRlci5saXN0ZW5lcihhLGIsYyl9O3RoaXMuZm5VcGRhdGU9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgaD10aGlzLmFwaSghMCk7Yz09PXB8fG51bGw9PT1jP2gucm93KGIpLmRhdGEoYSk6aC5jZWxsKGIsYykuZGF0YShhKTsoZT09PXB8fGUpJiZoLmNvbHVtbnMuYWRqdXN0KCk7KGQ9PT1wfHxkKSYmaC5kcmF3KCk7cmV0dXJuIDB9O3RoaXMuZm5WZXJzaW9uQ2hlY2s9Qy5mblZlcnNpb25DaGVjazt2YXIgYj10aGlzLGM9YT09PXAsZD10aGlzLmxlbmd0aDtjJiYoYT17fSk7dGhpcy5vQXBpPXRoaXMuaW50ZXJuYWw9Qy5pbnRlcm5hbDtmb3IodmFyIGUgaW4gcS5leHQuaW50ZXJuYWwpZSYmKHRoaXNbZV09UWIoZSkpO3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPXt9LGc9MTxkP2FiKGUsYSwhMCk6YSxrPTAsbDtlPXRoaXMuZ2V0QXR0cmlidXRlKCJpZCIpO3ZhciBuPSExLG09cS5kZWZhdWx0cyx3PWYodGhpcyk7aWYoInRhYmxlIiE9CnRoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlPKG51bGwsMCwiTm9uLXRhYmxlIG5vZGUgaW5pdGlhbGlzYXRpb24gKCIrdGhpcy5ub2RlTmFtZSsiKSIsMik7ZWxzZXtqYihtKTtrYihtLmNvbHVtbik7TChtLG0sITApO0wobS5jb2x1bW4sbS5jb2x1bW4sITApO0wobSxmLmV4dGVuZChnLHcuZGF0YSgpKSwhMCk7dmFyIHU9cS5zZXR0aW5ncztrPTA7Zm9yKGw9dS5sZW5ndGg7azxsO2srKyl7dmFyIHQ9dVtrXTtpZih0Lm5UYWJsZT09dGhpc3x8dC5uVEhlYWQmJnQublRIZWFkLnBhcmVudE5vZGU9PXRoaXN8fHQublRGb290JiZ0Lm5URm9vdC5wYXJlbnROb2RlPT10aGlzKXt2YXIgdj1nLmJSZXRyaWV2ZSE9PXA/Zy5iUmV0cmlldmU6bS5iUmV0cmlldmU7aWYoY3x8dilyZXR1cm4gdC5vSW5zdGFuY2U7aWYoZy5iRGVzdHJveSE9PXA/Zy5iRGVzdHJveTptLmJEZXN0cm95KXt0Lm9JbnN0YW5jZS5mbkRlc3Ryb3koKTticmVha31lbHNle08odCwwLCJDYW5ub3QgcmVpbml0aWFsaXNlIERhdGFUYWJsZSIsCjMpO3JldHVybn19aWYodC5zVGFibGVJZD09dGhpcy5pZCl7dS5zcGxpY2UoaywxKTticmVha319aWYobnVsbD09PWV8fCIiPT09ZSl0aGlzLmlkPWU9IkRhdGFUYWJsZXNfVGFibGVfIitxLmV4dC5fdW5pcXVlKys7dmFyIHI9Zi5leHRlbmQoITAse30scS5tb2RlbHMub1NldHRpbmdzLHtzRGVzdHJveVdpZHRoOndbMF0uc3R5bGUud2lkdGgsc0luc3RhbmNlOmUsc1RhYmxlSWQ6ZX0pO3IublRhYmxlPXRoaXM7ci5vQXBpPWIuaW50ZXJuYWw7ci5vSW5pdD1nO3UucHVzaChyKTtyLm9JbnN0YW5jZT0xPT09Yi5sZW5ndGg/Yjp3LmRhdGFUYWJsZSgpO2piKGcpO0dhKGcub0xhbmd1YWdlKTtnLmFMZW5ndGhNZW51JiYhZy5pRGlzcGxheUxlbmd0aCYmKGcuaURpc3BsYXlMZW5ndGg9Zi5pc0FycmF5KGcuYUxlbmd0aE1lbnVbMF0pP2cuYUxlbmd0aE1lbnVbMF1bMF06Zy5hTGVuZ3RoTWVudVswXSk7Zz1hYihmLmV4dGVuZCghMCx7fSxtKSxnKTtNKHIub0ZlYXR1cmVzLGcsImJQYWdpbmF0ZSBiTGVuZ3RoQ2hhbmdlIGJGaWx0ZXIgYlNvcnQgYlNvcnRNdWx0aSBiSW5mbyBiUHJvY2Vzc2luZyBiQXV0b1dpZHRoIGJTb3J0Q2xhc3NlcyBiU2VydmVyU2lkZSBiRGVmZXJSZW5kZXIiLnNwbGl0KCIgIikpOwpNKHIsZyxbImFzU3RyaXBlQ2xhc3NlcyIsImFqYXgiLCJmblNlcnZlckRhdGEiLCJmbkZvcm1hdE51bWJlciIsInNTZXJ2ZXJNZXRob2QiLCJhYVNvcnRpbmciLCJhYVNvcnRpbmdGaXhlZCIsImFMZW5ndGhNZW51Iiwic1BhZ2luYXRpb25UeXBlIiwic0FqYXhTb3VyY2UiLCJzQWpheERhdGFQcm9wIiwiaVN0YXRlRHVyYXRpb24iLCJzRG9tIiwiYlNvcnRDZWxsc1RvcCIsImlUYWJJbmRleCIsImZuU3RhdGVMb2FkQ2FsbGJhY2siLCJmblN0YXRlU2F2ZUNhbGxiYWNrIiwicmVuZGVyZXIiLCJzZWFyY2hEZWxheSIsInJvd0lkIixbImlDb29raWVEdXJhdGlvbiIsImlTdGF0ZUR1cmF0aW9uIl0sWyJvU2VhcmNoIiwib1ByZXZpb3VzU2VhcmNoIl0sWyJhb1NlYXJjaENvbHMiLCJhb1ByZVNlYXJjaENvbHMiXSxbImlEaXNwbGF5TGVuZ3RoIiwiX2lEaXNwbGF5TGVuZ3RoIl1dKTtNKHIub1Njcm9sbCxnLFtbInNTY3JvbGxYIiwic1giXSxbInNTY3JvbGxYSW5uZXIiLCJzWElubmVyIl0sClsic1Njcm9sbFkiLCJzWSJdLFsiYlNjcm9sbENvbGxhcHNlIiwiYkNvbGxhcHNlIl1dKTtNKHIub0xhbmd1YWdlLGcsImZuSW5mb0NhbGxiYWNrIik7RShyLCJhb0RyYXdDYWxsYmFjayIsZy5mbkRyYXdDYWxsYmFjaywidXNlciIpO0UociwiYW9TZXJ2ZXJQYXJhbXMiLGcuZm5TZXJ2ZXJQYXJhbXMsInVzZXIiKTtFKHIsImFvU3RhdGVTYXZlUGFyYW1zIixnLmZuU3RhdGVTYXZlUGFyYW1zLCJ1c2VyIik7RShyLCJhb1N0YXRlTG9hZFBhcmFtcyIsZy5mblN0YXRlTG9hZFBhcmFtcywidXNlciIpO0UociwiYW9TdGF0ZUxvYWRlZCIsZy5mblN0YXRlTG9hZGVkLCJ1c2VyIik7RShyLCJhb1Jvd0NhbGxiYWNrIixnLmZuUm93Q2FsbGJhY2ssInVzZXIiKTtFKHIsImFvUm93Q3JlYXRlZENhbGxiYWNrIixnLmZuQ3JlYXRlZFJvdywidXNlciIpO0UociwiYW9IZWFkZXJDYWxsYmFjayIsZy5mbkhlYWRlckNhbGxiYWNrLCJ1c2VyIik7RShyLCJhb0Zvb3RlckNhbGxiYWNrIixnLmZuRm9vdGVyQ2FsbGJhY2ssCiJ1c2VyIik7RShyLCJhb0luaXRDb21wbGV0ZSIsZy5mbkluaXRDb21wbGV0ZSwidXNlciIpO0UociwiYW9QcmVEcmF3Q2FsbGJhY2siLGcuZm5QcmVEcmF3Q2FsbGJhY2ssInVzZXIiKTtyLnJvd0lkRm49VShnLnJvd0lkKTtsYihyKTt2YXIgeD1yLm9DbGFzc2VzO2YuZXh0ZW5kKHgscS5leHQuY2xhc3NlcyxnLm9DbGFzc2VzKTt3LmFkZENsYXNzKHguc1RhYmxlKTtyLmlJbml0RGlzcGxheVN0YXJ0PT09cCYmKHIuaUluaXREaXNwbGF5U3RhcnQ9Zy5pRGlzcGxheVN0YXJ0LHIuX2lEaXNwbGF5U3RhcnQ9Zy5pRGlzcGxheVN0YXJ0KTtudWxsIT09Zy5pRGVmZXJMb2FkaW5nJiYoci5iRGVmZXJMb2FkaW5nPSEwLGU9Zi5pc0FycmF5KGcuaURlZmVyTG9hZGluZyksci5faVJlY29yZHNEaXNwbGF5PWU/Zy5pRGVmZXJMb2FkaW5nWzBdOmcuaURlZmVyTG9hZGluZyxyLl9pUmVjb3Jkc1RvdGFsPWU/Zy5pRGVmZXJMb2FkaW5nWzFdOmcuaURlZmVyTG9hZGluZyk7dmFyIHk9ci5vTGFuZ3VhZ2U7CmYuZXh0ZW5kKCEwLHksZy5vTGFuZ3VhZ2UpO3kuc1VybCYmKGYuYWpheCh7ZGF0YVR5cGU6Impzb24iLHVybDp5LnNVcmwsc3VjY2VzczpmdW5jdGlvbihhKXtHYShhKTtMKG0ub0xhbmd1YWdlLGEpO2YuZXh0ZW5kKCEwLHksYSk7amEocil9LGVycm9yOmZ1bmN0aW9uKCl7amEocil9fSksbj0hMCk7bnVsbD09PWcuYXNTdHJpcGVDbGFzc2VzJiYoci5hc1N0cmlwZUNsYXNzZXM9W3guc1N0cmlwZU9kZCx4LnNTdHJpcGVFdmVuXSk7ZT1yLmFzU3RyaXBlQ2xhc3Nlczt2YXIgej13LmNoaWxkcmVuKCJ0Ym9keSIpLmZpbmQoInRyIikuZXEoMCk7LTEhPT1mLmluQXJyYXkoITAsZi5tYXAoZSxmdW5jdGlvbihhLGIpe3JldHVybiB6Lmhhc0NsYXNzKGEpfSkpJiYoZigidGJvZHkgdHIiLHRoaXMpLnJlbW92ZUNsYXNzKGUuam9pbigiICIpKSxyLmFzRGVzdHJveVN0cmlwZXM9ZS5zbGljZSgpKTtlPVtdO3U9dGhpcy5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGhlYWQiKTswIT09dS5sZW5ndGgmJgooZmEoci5hb0hlYWRlcix1WzBdKSxlPXVhKHIpKTtpZihudWxsPT09Zy5hb0NvbHVtbnMpZm9yKHU9W10saz0wLGw9ZS5sZW5ndGg7azxsO2srKyl1LnB1c2gobnVsbCk7ZWxzZSB1PWcuYW9Db2x1bW5zO2s9MDtmb3IobD11Lmxlbmd0aDtrPGw7aysrKUlhKHIsZT9lW2tdOm51bGwpO25iKHIsZy5hb0NvbHVtbkRlZnMsdSxmdW5jdGlvbihhLGIpe21hKHIsYSxiKX0pO2lmKHoubGVuZ3RoKXt2YXIgQj1mdW5jdGlvbihhLGIpe3JldHVybiBudWxsIT09YS5nZXRBdHRyaWJ1dGUoImRhdGEtIitiKT9iOm51bGx9O2YoelswXSkuY2hpbGRyZW4oInRoLCB0ZCIpLmVhY2goZnVuY3Rpb24oYSxiKXt2YXIgYz1yLmFvQ29sdW1uc1thXTtpZihjLm1EYXRhPT09YSl7dmFyIGQ9QihiLCJzb3J0Iil8fEIoYiwib3JkZXIiKTtiPUIoYiwiZmlsdGVyIil8fEIoYiwic2VhcmNoIik7aWYobnVsbCE9PWR8fG51bGwhPT1iKWMubURhdGE9e186YSsiLmRpc3BsYXkiLHNvcnQ6bnVsbCE9PWQ/YSsiLkBkYXRhLSIrCmQ6cCx0eXBlOm51bGwhPT1kP2ErIi5AZGF0YS0iK2Q6cCxmaWx0ZXI6bnVsbCE9PWI/YSsiLkBkYXRhLSIrYjpwfSxtYShyLGEpfX0pfXZhciBDPXIub0ZlYXR1cmVzO2U9ZnVuY3Rpb24oKXtpZihnLmFhU29ydGluZz09PXApe3ZhciBhPXIuYWFTb3J0aW5nO2s9MDtmb3IobD1hLmxlbmd0aDtrPGw7aysrKWFba11bMV09ci5hb0NvbHVtbnNba10uYXNTb3J0aW5nWzBdfUFhKHIpO0MuYlNvcnQmJkUociwiYW9EcmF3Q2FsbGJhY2siLGZ1bmN0aW9uKCl7aWYoci5iU29ydGVkKXt2YXIgYT1ZKHIpLGI9e307Zi5lYWNoKGEsZnVuY3Rpb24oYSxjKXtiW2Muc3JjXT1jLmRpcn0pO0EocixudWxsLCJvcmRlciIsW3IsYSxiXSk7TmIocil9fSk7RShyLCJhb0RyYXdDYWxsYmFjayIsZnVuY3Rpb24oKXsoci5iU29ydGVkfHwic3NwIj09PUQocil8fEMuYkRlZmVyUmVuZGVyKSYmQWEocil9LCJzYyIpO2E9dy5jaGlsZHJlbigiY2FwdGlvbiIpLmVhY2goZnVuY3Rpb24oKXt0aGlzLl9jYXB0aW9uU2lkZT0KZih0aGlzKS5jc3MoImNhcHRpb24tc2lkZSIpfSk7dmFyIGI9dy5jaGlsZHJlbigidGhlYWQiKTswPT09Yi5sZW5ndGgmJihiPWYoIjx0aGVhZC8+IikuYXBwZW5kVG8odykpO3IublRIZWFkPWJbMF07Yj13LmNoaWxkcmVuKCJ0Ym9keSIpOzA9PT1iLmxlbmd0aCYmKGI9ZigiPHRib2R5Lz4iKS5hcHBlbmRUbyh3KSk7ci5uVEJvZHk9YlswXTtiPXcuY2hpbGRyZW4oInRmb290Iik7MD09PWIubGVuZ3RoJiYwPGEubGVuZ3RoJiYoIiIhPT1yLm9TY3JvbGwuc1h8fCIiIT09ci5vU2Nyb2xsLnNZKSYmKGI9ZigiPHRmb290Lz4iKS5hcHBlbmRUbyh3KSk7MD09PWIubGVuZ3RofHwwPT09Yi5jaGlsZHJlbigpLmxlbmd0aD93LmFkZENsYXNzKHguc05vRm9vdGVyKTowPGIubGVuZ3RoJiYoci5uVEZvb3Q9YlswXSxmYShyLmFvRm9vdGVyLHIublRGb290KSk7aWYoZy5hYURhdGEpZm9yKGs9MDtrPGcuYWFEYXRhLmxlbmd0aDtrKyspUihyLGcuYWFEYXRhW2tdKTtlbHNlKHIuYkRlZmVyTG9hZGluZ3x8CiJkb20iPT1EKHIpKSYmcGEocixmKHIublRCb2R5KS5jaGlsZHJlbigidHIiKSk7ci5haURpc3BsYXk9ci5haURpc3BsYXlNYXN0ZXIuc2xpY2UoKTtyLmJJbml0aWFsaXNlZD0hMDshMT09PW4mJmphKHIpfTtnLmJTdGF0ZVNhdmU/KEMuYlN0YXRlU2F2ZT0hMCxFKHIsImFvRHJhd0NhbGxiYWNrIixCYSwic3RhdGVfc2F2ZSIpLE9iKHIsZyxlKSk6ZSgpfX0pO2I9bnVsbDtyZXR1cm4gdGhpc30sQyx0LHgsY2I9e30sUmI9L1tcclxuXHUyMDI4XS9nLEVhPS88Lio/Pi9nLGNjPS9eXGR7Miw0fVtcLlwvXC1dXGR7MSwyfVtcLlwvXC1dXGR7MSwyfShbVCBdezF9XGR7MSwyfVs6XC5dXGR7Mn0oW1wuOl1cZHsyfSk/KT8kLyxkYz0vKFwvfFwufFwqfFwrfFw/fFx8fFwofFwpfFxbfFxdfFx7fFx9fFxcfFwkfFxefFwtKS9nLGJiPS9bJywkwqPigqzCpSVcdTIwMDlcdTIwMkZcdTIwQkRcdTIwYTlcdTIwQkFyZmvJg86eXS9naSxQPWZ1bmN0aW9uKGEpe3JldHVybiBhJiYhMCE9PWEmJiItIiE9PWE/ITE6CiEwfSxTYj1mdW5jdGlvbihhKXt2YXIgYj1wYXJzZUludChhLDEwKTtyZXR1cm4haXNOYU4oYikmJmlzRmluaXRlKGEpP2I6bnVsbH0sVGI9ZnVuY3Rpb24oYSxiKXtjYltiXXx8KGNiW2JdPW5ldyBSZWdFeHAoVWEoYiksImciKSk7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYSYmIi4iIT09Yj9hLnJlcGxhY2UoL1wuL2csIiIpLnJlcGxhY2UoY2JbYl0sIi4iKTphfSxkYj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9InN0cmluZyI9PT10eXBlb2YgYTtpZihQKGEpKXJldHVybiEwO2ImJmQmJihhPVRiKGEsYikpO2MmJmQmJihhPWEucmVwbGFjZShiYiwiIikpO3JldHVybiFpc05hTihwYXJzZUZsb2F0KGEpKSYmaXNGaW5pdGUoYSl9LFViPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gUChhKT8hMDpQKGEpfHwic3RyaW5nIj09PXR5cGVvZiBhP2RiKGEucmVwbGFjZShFYSwiIiksYixjKT8hMDpudWxsOm51bGx9LEo9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU9MCxoPWEubGVuZ3RoO2lmKGMhPT0KcClmb3IoO2U8aDtlKyspYVtlXSYmYVtlXVtiXSYmZC5wdXNoKGFbZV1bYl1bY10pO2Vsc2UgZm9yKDtlPGg7ZSsrKWFbZV0mJmQucHVzaChhW2VdW2JdKTtyZXR1cm4gZH0sbGE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9W10saD0wLGc9Yi5sZW5ndGg7aWYoZCE9PXApZm9yKDtoPGc7aCsrKWFbYltoXV1bY10mJmUucHVzaChhW2JbaF1dW2NdW2RdKTtlbHNlIGZvcig7aDxnO2grKyllLnB1c2goYVtiW2hdXVtjXSk7cmV0dXJuIGV9LFo9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTtpZihiPT09cCl7Yj0wO3ZhciBkPWF9ZWxzZSBkPWIsYj1hO2ZvcihhPWI7YTxkO2ErKyljLnB1c2goYSk7cmV0dXJuIGN9LFZiPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKWFbY10mJmIucHVzaChhW2NdKTtyZXR1cm4gYn0sdGE9ZnVuY3Rpb24oYSl7YTp7aWYoISgyPmEubGVuZ3RoKSl7dmFyIGI9YS5zbGljZSgpLnNvcnQoKTtmb3IodmFyIGM9YlswXSxkPTEsCmU9Yi5sZW5ndGg7ZDxlO2QrKyl7aWYoYltkXT09PWMpe2I9ITE7YnJlYWsgYX1jPWJbZF19fWI9ITB9aWYoYilyZXR1cm4gYS5zbGljZSgpO2I9W107ZT1hLmxlbmd0aDt2YXIgaCxnPTA7ZD0wO2E6Zm9yKDtkPGU7ZCsrKXtjPWFbZF07Zm9yKGg9MDtoPGc7aCsrKWlmKGJbaF09PT1jKWNvbnRpbnVlIGE7Yi5wdXNoKGMpO2crK31yZXR1cm4gYn07cS51dGlsPXt0aHJvdHRsZTpmdW5jdGlvbihhLGIpe3ZhciBjPWIhPT1wP2I6MjAwLGQsZTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYj10aGlzLGc9K25ldyBEYXRlLGY9YXJndW1lbnRzO2QmJmc8ZCtjPyhjbGVhclRpbWVvdXQoZSksZT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZD1wO2EuYXBwbHkoYixmKX0sYykpOihkPWcsYS5hcHBseShiLGYpKX19LGVzY2FwZVJlZ2V4OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoZGMsIlxcJDEiKX19O3ZhciBGPWZ1bmN0aW9uKGEsYixjKXthW2JdIT09cCYmKGFbY109YVtiXSl9LGRhPS9cWy4qP1xdJC8sClg9L1woXCkkLyxVYT1xLnV0aWwuZXNjYXBlUmVnZXgseWE9ZigiPGRpdj4iKVswXSwkYj15YS50ZXh0Q29udGVudCE9PXAsYmM9LzwuKj8+L2csU2E9cS51dGlsLnRocm90dGxlLFdiPVtdLEc9QXJyYXkucHJvdG90eXBlLGVjPWZ1bmN0aW9uKGEpe3ZhciBiLGM9cS5zZXR0aW5ncyxkPWYubWFwKGMsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5uVGFibGV9KTtpZihhKXtpZihhLm5UYWJsZSYmYS5vQXBpKXJldHVyblthXTtpZihhLm5vZGVOYW1lJiYidGFibGUiPT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXt2YXIgZT1mLmluQXJyYXkoYSxkKTtyZXR1cm4tMSE9PWU/W2NbZV1dOm51bGx9aWYoYSYmImZ1bmN0aW9uIj09PXR5cGVvZiBhLnNldHRpbmdzKXJldHVybiBhLnNldHRpbmdzKCkudG9BcnJheSgpOyJzdHJpbmciPT09dHlwZW9mIGE/Yj1mKGEpOmEgaW5zdGFuY2VvZiBmJiYoYj1hKX1lbHNlIHJldHVybltdO2lmKGIpcmV0dXJuIGIubWFwKGZ1bmN0aW9uKGEpe2U9Zi5pbkFycmF5KHRoaXMsCmQpO3JldHVybi0xIT09ZT9jW2VdOm51bGx9KS50b0FycmF5KCl9O3ZhciB2PWZ1bmN0aW9uKGEsYil7aWYoISh0aGlzIGluc3RhbmNlb2YgdikpcmV0dXJuIG5ldyB2KGEsYik7dmFyIGM9W10sZD1mdW5jdGlvbihhKXsoYT1lYyhhKSkmJmMucHVzaC5hcHBseShjLGEpfTtpZihmLmlzQXJyYXkoYSkpZm9yKHZhciBlPTAsaD1hLmxlbmd0aDtlPGg7ZSsrKWQoYVtlXSk7ZWxzZSBkKGEpO3RoaXMuY29udGV4dD10YShjKTtiJiZmLm1lcmdlKHRoaXMsYik7dGhpcy5zZWxlY3Rvcj17cm93czpudWxsLGNvbHM6bnVsbCxvcHRzOm51bGx9O3YuZXh0ZW5kKHRoaXMsdGhpcyxXYil9O3EuQXBpPXY7Zi5leHRlbmQodi5wcm90b3R5cGUse2FueTpmdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5jb3VudCgpfSxjb25jYXQ6Ry5jb25jYXQsY29udGV4dDpbXSxjb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZsYXR0ZW4oKS5sZW5ndGh9LGVhY2g6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz0KdGhpcy5sZW5ndGg7YjxjO2IrKylhLmNhbGwodGhpcyx0aGlzW2JdLGIsdGhpcyk7cmV0dXJuIHRoaXN9LGVxOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY29udGV4dDtyZXR1cm4gYi5sZW5ndGg+YT9uZXcgdihiW2FdLHRoaXNbYV0pOm51bGx9LGZpbHRlcjpmdW5jdGlvbihhKXt2YXIgYj1bXTtpZihHLmZpbHRlciliPUcuZmlsdGVyLmNhbGwodGhpcyxhLHRoaXMpO2Vsc2UgZm9yKHZhciBjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKWEuY2FsbCh0aGlzLHRoaXNbY10sYyx0aGlzKSYmYi5wdXNoKHRoaXNbY10pO3JldHVybiBuZXcgdih0aGlzLmNvbnRleHQsYil9LGZsYXR0ZW46ZnVuY3Rpb24oKXt2YXIgYT1bXTtyZXR1cm4gbmV3IHYodGhpcy5jb250ZXh0LGEuY29uY2F0LmFwcGx5KGEsdGhpcy50b0FycmF5KCkpKX0sam9pbjpHLmpvaW4saW5kZXhPZjpHLmluZGV4T2Z8fGZ1bmN0aW9uKGEsYil7Yj1ifHwwO2Zvcih2YXIgYz10aGlzLmxlbmd0aDtiPGM7YisrKWlmKHRoaXNbYl09PT0KYSlyZXR1cm4gYjtyZXR1cm4tMX0saXRlcmF0b3I6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9W10saCxnLGY9dGhpcy5jb250ZXh0LGwsbj10aGlzLnNlbGVjdG9yOyJzdHJpbmciPT09dHlwZW9mIGEmJihkPWMsYz1iLGI9YSxhPSExKTt2YXIgbT0wO2ZvcihoPWYubGVuZ3RoO208aDttKyspe3ZhciBxPW5ldyB2KGZbbV0pO2lmKCJ0YWJsZSI9PT1iKXt2YXIgdT1jLmNhbGwocSxmW21dLG0pO3UhPT1wJiZlLnB1c2godSl9ZWxzZSBpZigiY29sdW1ucyI9PT1ifHwicm93cyI9PT1iKXU9Yy5jYWxsKHEsZlttXSx0aGlzW21dLG0pLHUhPT1wJiZlLnB1c2godSk7ZWxzZSBpZigiY29sdW1uIj09PWJ8fCJjb2x1bW4tcm93cyI9PT1ifHwicm93Ij09PWJ8fCJjZWxsIj09PWIpe3ZhciB0PXRoaXNbbV07ImNvbHVtbi1yb3dzIj09PWImJihsPUZhKGZbbV0sbi5vcHRzKSk7dmFyIHg9MDtmb3IoZz10Lmxlbmd0aDt4PGc7eCsrKXU9dFt4XSx1PSJjZWxsIj09PWI/Yy5jYWxsKHEsZlttXSx1LnJvdywKdS5jb2x1bW4sbSx4KTpjLmNhbGwocSxmW21dLHUsbSx4LGwpLHUhPT1wJiZlLnB1c2godSl9fXJldHVybiBlLmxlbmd0aHx8ZD8oYT1uZXcgdihmLGE/ZS5jb25jYXQuYXBwbHkoW10sZSk6ZSksYj1hLnNlbGVjdG9yLGIucm93cz1uLnJvd3MsYi5jb2xzPW4uY29scyxiLm9wdHM9bi5vcHRzLGEpOnRoaXN9LGxhc3RJbmRleE9mOkcubGFzdEluZGV4T2Z8fGZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuaW5kZXhPZi5hcHBseSh0aGlzLnRvQXJyYXkucmV2ZXJzZSgpLGFyZ3VtZW50cyl9LGxlbmd0aDowLG1hcDpmdW5jdGlvbihhKXt2YXIgYj1bXTtpZihHLm1hcCliPUcubWFwLmNhbGwodGhpcyxhLHRoaXMpO2Vsc2UgZm9yKHZhciBjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKWIucHVzaChhLmNhbGwodGhpcyx0aGlzW2NdLGMpKTtyZXR1cm4gbmV3IHYodGhpcy5jb250ZXh0LGIpfSxwbHVjazpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGJbYV19KX0sCnBvcDpHLnBvcCxwdXNoOkcucHVzaCxyZWR1Y2U6Ry5yZWR1Y2V8fGZ1bmN0aW9uKGEsYil7cmV0dXJuIG1iKHRoaXMsYSxiLDAsdGhpcy5sZW5ndGgsMSl9LHJlZHVjZVJpZ2h0OkcucmVkdWNlUmlnaHR8fGZ1bmN0aW9uKGEsYil7cmV0dXJuIG1iKHRoaXMsYSxiLHRoaXMubGVuZ3RoLTEsLTEsLTEpfSxyZXZlcnNlOkcucmV2ZXJzZSxzZWxlY3RvcjpudWxsLHNoaWZ0Okcuc2hpZnQsc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHYodGhpcy5jb250ZXh0LHRoaXMpfSxzb3J0Okcuc29ydCxzcGxpY2U6Ry5zcGxpY2UsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBHLnNsaWNlLmNhbGwodGhpcyl9LHRvJDpmdW5jdGlvbigpe3JldHVybiBmKHRoaXMpfSx0b0pRdWVyeTpmdW5jdGlvbigpe3JldHVybiBmKHRoaXMpfSx1bmlxdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHYodGhpcy5jb250ZXh0LHRhKHRoaXMpKX0sdW5zaGlmdDpHLnVuc2hpZnR9KTt2LmV4dGVuZD1mdW5jdGlvbihhLApiLGMpe2lmKGMubGVuZ3RoJiZiJiYoYiBpbnN0YW5jZW9mIHZ8fGIuX19kdF93cmFwcGVyKSl7dmFyIGQsZT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQ9Yi5hcHBseShhLGFyZ3VtZW50cyk7di5leHRlbmQoZCxkLGMubWV0aG9kRXh0KTtyZXR1cm4gZH19O3ZhciBoPTA7Zm9yKGQ9Yy5sZW5ndGg7aDxkO2grKyl7dmFyIGc9Y1toXTtiW2cubmFtZV09ImZ1bmN0aW9uIj09PWcudHlwZT9lKGEsZy52YWwsZyk6Im9iamVjdCI9PT1nLnR5cGU/e306Zy52YWw7YltnLm5hbWVdLl9fZHRfd3JhcHBlcj0hMDt2LmV4dGVuZChhLGJbZy5uYW1lXSxnLnByb3BFeHQpfX19O3YucmVnaXN0ZXI9dD1mdW5jdGlvbihhLGIpe2lmKGYuaXNBcnJheShhKSlmb3IodmFyIGM9MCxkPWEubGVuZ3RoO2M8ZDtjKyspdi5yZWdpc3RlcihhW2NdLGIpO2Vsc2V7ZD1hLnNwbGl0KCIuIik7dmFyIGU9V2IsaDthPTA7Zm9yKGM9ZC5sZW5ndGg7YTxjO2ErKyl7dmFyIGc9KGg9LTEhPT0KZFthXS5pbmRleE9mKCIoKSIpKT9kW2FdLnJlcGxhY2UoIigpIiwiIik6ZFthXTthOnt2YXIgaz0wO2Zvcih2YXIgbD1lLmxlbmd0aDtrPGw7aysrKWlmKGVba10ubmFtZT09PWcpe2s9ZVtrXTticmVhayBhfWs9bnVsbH1rfHwoaz17bmFtZTpnLHZhbDp7fSxtZXRob2RFeHQ6W10scHJvcEV4dDpbXSx0eXBlOiJvYmplY3QifSxlLnB1c2goaykpO2E9PT1jLTE/KGsudmFsPWIsay50eXBlPSJmdW5jdGlvbiI9PT10eXBlb2YgYj8iZnVuY3Rpb24iOmYuaXNQbGFpbk9iamVjdChiKT8ib2JqZWN0Ijoib3RoZXIiKTplPWg/ay5tZXRob2RFeHQ6ay5wcm9wRXh0fX19O3YucmVnaXN0ZXJQbHVyYWw9eD1mdW5jdGlvbihhLGIsYyl7di5yZWdpc3RlcihhLGMpO3YucmVnaXN0ZXIoYixmdW5jdGlvbigpe3ZhciBhPWMuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBhPT09dGhpcz90aGlzOmEgaW5zdGFuY2VvZiB2P2EubGVuZ3RoP2YuaXNBcnJheShhWzBdKT9uZXcgdihhLmNvbnRleHQsCmFbMF0pOmFbMF06cDphfSl9O3ZhciBmYz1mdW5jdGlvbihhLGIpe2lmKCJudW1iZXIiPT09dHlwZW9mIGEpcmV0dXJuW2JbYV1dO3ZhciBjPWYubWFwKGIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5uVGFibGV9KTtyZXR1cm4gZihjKS5maWx0ZXIoYSkubWFwKGZ1bmN0aW9uKGEpe2E9Zi5pbkFycmF5KHRoaXMsYyk7cmV0dXJuIGJbYV19KS50b0FycmF5KCl9O3QoInRhYmxlcygpIixmdW5jdGlvbihhKXtyZXR1cm4gYT9uZXcgdihmYyhhLHRoaXMuY29udGV4dCkpOnRoaXN9KTt0KCJ0YWJsZSgpIixmdW5jdGlvbihhKXthPXRoaXMudGFibGVzKGEpO3ZhciBiPWEuY29udGV4dDtyZXR1cm4gYi5sZW5ndGg/bmV3IHYoYlswXSk6YX0pO3goInRhYmxlcygpLm5vZGVzKCkiLCJ0YWJsZSgpLm5vZGUoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGEpe3JldHVybiBhLm5UYWJsZX0sMSl9KTt4KCJ0YWJsZXMoKS5ib2R5KCkiLCJ0YWJsZSgpLmJvZHkoKSIsCmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihhKXtyZXR1cm4gYS5uVEJvZHl9LDEpfSk7eCgidGFibGVzKCkuaGVhZGVyKCkiLCJ0YWJsZSgpLmhlYWRlcigpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYSl7cmV0dXJuIGEublRIZWFkfSwxKX0pO3goInRhYmxlcygpLmZvb3RlcigpIiwidGFibGUoKS5mb290ZXIoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGEpe3JldHVybiBhLm5URm9vdH0sMSl9KTt4KCJ0YWJsZXMoKS5jb250YWluZXJzKCkiLCJ0YWJsZSgpLmNvbnRhaW5lcigpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYSl7cmV0dXJuIGEublRhYmxlV3JhcHBlcn0sMSl9KTt0KCJkcmF3KCkiLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYil7InBhZ2UiPT09CmE/UyhiKTooInN0cmluZyI9PT10eXBlb2YgYSYmKGE9ImZ1bGwtaG9sZCI9PT1hPyExOiEwKSxWKGIsITE9PT1hKSl9KX0pO3QoInBhZ2UoKSIsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1wP3RoaXMucGFnZS5pbmZvKCkucGFnZTp0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYil7WGEoYixhKX0pfSk7dCgicGFnZS5pbmZvKCkiLGZ1bmN0aW9uKGEpe2lmKDA9PT10aGlzLmNvbnRleHQubGVuZ3RoKXJldHVybiBwO2E9dGhpcy5jb250ZXh0WzBdO3ZhciBiPWEuX2lEaXNwbGF5U3RhcnQsYz1hLm9GZWF0dXJlcy5iUGFnaW5hdGU/YS5faURpc3BsYXlMZW5ndGg6LTEsZD1hLmZuUmVjb3Jkc0Rpc3BsYXkoKSxlPS0xPT09YztyZXR1cm57cGFnZTplPzA6TWF0aC5mbG9vcihiL2MpLHBhZ2VzOmU/MTpNYXRoLmNlaWwoZC9jKSxzdGFydDpiLGVuZDphLmZuRGlzcGxheUVuZCgpLGxlbmd0aDpjLHJlY29yZHNUb3RhbDphLmZuUmVjb3Jkc1RvdGFsKCkscmVjb3Jkc0Rpc3BsYXk6ZCwKc2VydmVyU2lkZToic3NwIj09PUQoYSl9fSk7dCgicGFnZS5sZW4oKSIsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1wPzAhPT10aGlzLmNvbnRleHQubGVuZ3RoP3RoaXMuY29udGV4dFswXS5faURpc3BsYXlMZW5ndGg6cDp0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYil7VmEoYixhKX0pfSk7dmFyIFhiPWZ1bmN0aW9uKGEsYixjKXtpZihjKXt2YXIgZD1uZXcgdihhKTtkLm9uZSgiZHJhdyIsZnVuY3Rpb24oKXtjKGQuYWpheC5qc29uKCkpfSl9aWYoInNzcCI9PUQoYSkpVihhLGIpO2Vsc2V7SyhhLCEwKTt2YXIgZT1hLmpxWEhSO2UmJjQhPT1lLnJlYWR5U3RhdGUmJmUuYWJvcnQoKTt2YShhLFtdLGZ1bmN0aW9uKGMpe3FhKGEpO2M9d2EoYSxjKTtmb3IodmFyIGQ9MCxlPWMubGVuZ3RoO2Q8ZTtkKyspUihhLGNbZF0pO1YoYSxiKTtLKGEsITEpfSl9fTt0KCJhamF4Lmpzb24oKSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNvbnRleHQ7aWYoMDxhLmxlbmd0aClyZXR1cm4gYVswXS5qc29ufSk7CnQoImFqYXgucGFyYW1zKCkiLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jb250ZXh0O2lmKDA8YS5sZW5ndGgpcmV0dXJuIGFbMF0ub0FqYXhEYXRhfSk7dCgiYWpheC5yZWxvYWQoKSIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGMpe1hiKGMsITE9PT1iLGEpfSl9KTt0KCJhamF4LnVybCgpIixmdW5jdGlvbihhKXt2YXIgYj10aGlzLmNvbnRleHQ7aWYoYT09PXApe2lmKDA9PT1iLmxlbmd0aClyZXR1cm4gcDtiPWJbMF07cmV0dXJuIGIuYWpheD9mLmlzUGxhaW5PYmplY3QoYi5hamF4KT9iLmFqYXgudXJsOmIuYWpheDpiLnNBamF4U291cmNlfXJldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYil7Zi5pc1BsYWluT2JqZWN0KGIuYWpheCk/Yi5hamF4LnVybD1hOmIuYWpheD1hfSl9KTt0KCJhamF4LnVybCgpLmxvYWQoKSIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGMpe1hiKGMsCiExPT09YixhKX0pfSk7dmFyIGViPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGg9W10sZyxrLGw7dmFyIG49dHlwZW9mIGI7YiYmInN0cmluZyIhPT1uJiYiZnVuY3Rpb24iIT09biYmYi5sZW5ndGghPT1wfHwoYj1bYl0pO249MDtmb3Ioaz1iLmxlbmd0aDtuPGs7bisrKXt2YXIgbT1iW25dJiZiW25dLnNwbGl0JiYhYltuXS5tYXRjaCgvW1xbXCg6XS8pP2Jbbl0uc3BsaXQoIiwiKTpbYltuXV07dmFyIHE9MDtmb3IobD1tLmxlbmd0aDtxPGw7cSsrKShnPWMoInN0cmluZyI9PT10eXBlb2YgbVtxXT9mLnRyaW0obVtxXSk6bVtxXSkpJiZnLmxlbmd0aCYmKGg9aC5jb25jYXQoZykpfWE9Qy5zZWxlY3RvclthXTtpZihhLmxlbmd0aClmb3Iobj0wLGs9YS5sZW5ndGg7bjxrO24rKyloPWFbbl0oZCxlLGgpO3JldHVybiB0YShoKX0sZmI9ZnVuY3Rpb24oYSl7YXx8KGE9e30pO2EuZmlsdGVyJiZhLnNlYXJjaD09PXAmJihhLnNlYXJjaD1hLmZpbHRlcik7cmV0dXJuIGYuZXh0ZW5kKHtzZWFyY2g6Im5vbmUiLApvcmRlcjoiY3VycmVudCIscGFnZToiYWxsIn0sYSl9LGdiPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wLGM9YS5sZW5ndGg7YjxjO2IrKylpZigwPGFbYl0ubGVuZ3RoKXJldHVybiBhWzBdPWFbYl0sYVswXS5sZW5ndGg9MSxhLmxlbmd0aD0xLGEuY29udGV4dD1bYS5jb250ZXh0W2JdXSxhO2EubGVuZ3RoPTA7cmV0dXJuIGF9LEZhPWZ1bmN0aW9uKGEsYil7dmFyIGM9W10sZD1hLmFpRGlzcGxheTt2YXIgZT1hLmFpRGlzcGxheU1hc3Rlcjt2YXIgaD1iLnNlYXJjaDt2YXIgZz1iLm9yZGVyO2I9Yi5wYWdlO2lmKCJzc3AiPT1EKGEpKXJldHVybiJyZW1vdmVkIj09PWg/W106WigwLGUubGVuZ3RoKTtpZigiY3VycmVudCI9PWIpZm9yKGc9YS5faURpc3BsYXlTdGFydCxhPWEuZm5EaXNwbGF5RW5kKCk7ZzxhO2crKyljLnB1c2goZFtnXSk7ZWxzZSBpZigiY3VycmVudCI9PWd8fCJhcHBsaWVkIj09ZylpZigibm9uZSI9PWgpYz1lLnNsaWNlKCk7ZWxzZSBpZigiYXBwbGllZCI9PWgpYz0KZC5zbGljZSgpO2Vsc2V7aWYoInJlbW92ZWQiPT1oKXt2YXIgaz17fTtnPTA7Zm9yKGE9ZC5sZW5ndGg7ZzxhO2crKylrW2RbZ11dPW51bGw7Yz1mLm1hcChlLGZ1bmN0aW9uKGEpe3JldHVybiBrLmhhc093blByb3BlcnR5KGEpP251bGw6YX0pfX1lbHNlIGlmKCJpbmRleCI9PWd8fCJvcmlnaW5hbCI9PWcpZm9yKGc9MCxhPWEuYW9EYXRhLmxlbmd0aDtnPGE7ZysrKSJub25lIj09aD9jLnB1c2goZyk6KGU9Zi5pbkFycmF5KGcsZCksKC0xPT09ZSYmInJlbW92ZWQiPT1ofHwwPD1lJiYiYXBwbGllZCI9PWgpJiZjLnB1c2goZykpO3JldHVybiBjfSxnYz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGViKCJyb3ciLGIsZnVuY3Rpb24oYil7dmFyIGU9U2IoYiksZz1hLmFvRGF0YTtpZihudWxsIT09ZSYmIWMpcmV0dXJuW2VdO2R8fChkPUZhKGEsYykpO2lmKG51bGwhPT1lJiYtMSE9PWYuaW5BcnJheShlLGQpKXJldHVybltlXTtpZihudWxsPT09Ynx8Yj09PXB8fCIiPT09YilyZXR1cm4gZDsKaWYoImZ1bmN0aW9uIj09PXR5cGVvZiBiKXJldHVybiBmLm1hcChkLGZ1bmN0aW9uKGEpe3ZhciBjPWdbYV07cmV0dXJuIGIoYSxjLl9hRGF0YSxjLm5Ucik/YTpudWxsfSk7aWYoYi5ub2RlTmFtZSl7ZT1iLl9EVF9Sb3dJbmRleDt2YXIgaz1iLl9EVF9DZWxsSW5kZXg7aWYoZSE9PXApcmV0dXJuIGdbZV0mJmdbZV0ublRyPT09Yj9bZV06W107aWYoaylyZXR1cm4gZ1trLnJvd10mJmdbay5yb3ddLm5Ucj09PWIucGFyZW50Tm9kZT9bay5yb3ddOltdO2U9ZihiKS5jbG9zZXN0KCIqW2RhdGEtZHQtcm93XSIpO3JldHVybiBlLmxlbmd0aD9bZS5kYXRhKCJkdC1yb3ciKV06W119aWYoInN0cmluZyI9PT10eXBlb2YgYiYmIiMiPT09Yi5jaGFyQXQoMCkmJihlPWEuYUlkc1tiLnJlcGxhY2UoL14jLywiIildLGUhPT1wKSlyZXR1cm5bZS5pZHhdO2U9VmIobGEoYS5hb0RhdGEsZCwiblRyIikpO3JldHVybiBmKGUpLmZpbHRlcihiKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fRFRfUm93SW5kZXh9KS50b0FycmF5KCl9LAphLGMpfTt0KCJyb3dzKCkiLGZ1bmN0aW9uKGEsYil7YT09PXA/YT0iIjpmLmlzUGxhaW5PYmplY3QoYSkmJihiPWEsYT0iIik7Yj1mYihiKTt2YXIgYz10aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYyl7cmV0dXJuIGdjKGMsYSxiKX0sMSk7Yy5zZWxlY3Rvci5yb3dzPWE7Yy5zZWxlY3Rvci5vcHRzPWI7cmV0dXJuIGN9KTt0KCJyb3dzKCkubm9kZXMoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigicm93IixmdW5jdGlvbihhLGIpe3JldHVybiBhLmFvRGF0YVtiXS5uVHJ8fHB9LDEpfSk7dCgicm93cygpLmRhdGEoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcighMCwicm93cyIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gbGEoYS5hb0RhdGEsYiwiX2FEYXRhIil9LDEpfSk7eCgicm93cygpLmNhY2hlKCkiLCJyb3coKS5jYWNoZSgpIixmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigicm93IixmdW5jdGlvbihiLGMpe2I9Yi5hb0RhdGFbY107CnJldHVybiJzZWFyY2giPT09YT9iLl9hRmlsdGVyRGF0YTpiLl9hU29ydERhdGF9LDEpfSk7eCgicm93cygpLmludmFsaWRhdGUoKSIsInJvdygpLmludmFsaWRhdGUoKSIsZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInJvdyIsZnVuY3Rpb24oYixjKXtlYShiLGMsYSl9KX0pO3goInJvd3MoKS5pbmRleGVzKCkiLCJyb3coKS5pbmRleCgpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJyb3ciLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGJ9LDEpfSk7eCgicm93cygpLmlkcygpIiwicm93KCkuaWQoKSIsZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9dGhpcy5jb250ZXh0LGQ9MCxlPWMubGVuZ3RoO2Q8ZTtkKyspZm9yKHZhciBoPTAsZz10aGlzW2RdLmxlbmd0aDtoPGc7aCsrKXt2YXIgZj1jW2RdLnJvd0lkRm4oY1tkXS5hb0RhdGFbdGhpc1tkXVtoXV0uX2FEYXRhKTtiLnB1c2goKCEwPT09YT8iIyI6IiIpK2YpfXJldHVybiBuZXcgdihjLGIpfSk7eCgicm93cygpLnJlbW92ZSgpIiwKInJvdygpLnJlbW92ZSgpIixmdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5pdGVyYXRvcigicm93IixmdW5jdGlvbihiLGMsZCl7dmFyIGU9Yi5hb0RhdGEsaD1lW2NdLGcsZjtlLnNwbGljZShjLDEpO3ZhciBsPTA7Zm9yKGc9ZS5sZW5ndGg7bDxnO2wrKyl7dmFyIG49ZVtsXTt2YXIgbT1uLmFuQ2VsbHM7bnVsbCE9PW4ublRyJiYobi5uVHIuX0RUX1Jvd0luZGV4PWwpO2lmKG51bGwhPT1tKWZvcihuPTAsZj1tLmxlbmd0aDtuPGY7bisrKW1bbl0uX0RUX0NlbGxJbmRleC5yb3c9bH1yYShiLmFpRGlzcGxheU1hc3RlcixjKTtyYShiLmFpRGlzcGxheSxjKTtyYShhW2RdLGMsITEpOzA8Yi5faVJlY29yZHNEaXNwbGF5JiZiLl9pUmVjb3Jkc0Rpc3BsYXktLTtXYShiKTtjPWIucm93SWRGbihoLl9hRGF0YSk7YyE9PXAmJmRlbGV0ZSBiLmFJZHNbY119KTt0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsZD1hLmFvRGF0YS5sZW5ndGg7YjxkO2IrKylhLmFvRGF0YVtiXS5pZHg9CmJ9KTtyZXR1cm4gdGhpc30pO3QoInJvd3MuYWRkKCkiLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihiKXt2YXIgYyxkPVtdO3ZhciBnPTA7Zm9yKGM9YS5sZW5ndGg7ZzxjO2crKyl7dmFyIGY9YVtnXTtmLm5vZGVOYW1lJiYiVFIiPT09Zi5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpP2QucHVzaChwYShiLGYpWzBdKTpkLnB1c2goUihiLGYpKX1yZXR1cm4gZH0sMSksYz10aGlzLnJvd3MoLTEpO2MucG9wKCk7Zi5tZXJnZShjLGIpO3JldHVybiBjfSk7dCgicm93KCkiLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGdiKHRoaXMucm93cyhhLGIpKX0pO3QoInJvdygpLmRhdGEoKSIsZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jb250ZXh0O2lmKGE9PT1wKXJldHVybiBiLmxlbmd0aCYmdGhpcy5sZW5ndGg/YlswXS5hb0RhdGFbdGhpc1swXV0uX2FEYXRhOnA7dmFyIGM9YlswXS5hb0RhdGFbdGhpc1swXV07Yy5fYURhdGE9YTtmLmlzQXJyYXkoYSkmJmMublRyLmlkJiYKUShiWzBdLnJvd0lkKShhLGMublRyLmlkKTtlYShiWzBdLHRoaXNbMF0sImRhdGEiKTtyZXR1cm4gdGhpc30pO3QoInJvdygpLm5vZGUoKSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNvbnRleHQ7cmV0dXJuIGEubGVuZ3RoJiZ0aGlzLmxlbmd0aD9hWzBdLmFvRGF0YVt0aGlzWzBdXS5uVHJ8fG51bGw6bnVsbH0pO3QoInJvdy5hZGQoKSIsZnVuY3Rpb24oYSl7YSBpbnN0YW5jZW9mIGYmJmEubGVuZ3RoJiYoYT1hWzBdKTt2YXIgYj10aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYil7cmV0dXJuIGEubm9kZU5hbWUmJiJUUiI9PT1hLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk/cGEoYixhKVswXTpSKGIsYSl9KTtyZXR1cm4gdGhpcy5yb3coYlswXSl9KTt2YXIgaGM9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9W10saD1mdW5jdGlvbihiLGMpe2lmKGYuaXNBcnJheShiKXx8YiBpbnN0YW5jZW9mIGYpZm9yKHZhciBkPTAsZz1iLmxlbmd0aDtkPGc7ZCsrKWgoYltkXSxjKTtlbHNlIGIubm9kZU5hbWUmJgoidHIiPT09Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP2UucHVzaChiKTooZD1mKCI8dHI+PHRkLz48L3RyPiIpLmFkZENsYXNzKGMpLGYoInRkIixkKS5hZGRDbGFzcyhjKS5odG1sKGIpWzBdLmNvbFNwYW49VyhhKSxlLnB1c2goZFswXSkpfTtoKGMsZCk7Yi5fZGV0YWlscyYmYi5fZGV0YWlscy5kZXRhY2goKTtiLl9kZXRhaWxzPWYoZSk7Yi5fZGV0YWlsc1Nob3cmJmIuX2RldGFpbHMuaW5zZXJ0QWZ0ZXIoYi5uVHIpfSxoYj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuY29udGV4dDtjLmxlbmd0aCYmKGE9Y1swXS5hb0RhdGFbYiE9PXA/YjphWzBdXSkmJmEuX2RldGFpbHMmJihhLl9kZXRhaWxzLnJlbW92ZSgpLGEuX2RldGFpbHNTaG93PXAsYS5fZGV0YWlscz1wKX0sWWI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmNvbnRleHQ7Yy5sZW5ndGgmJmEubGVuZ3RoJiYoYT1jWzBdLmFvRGF0YVthWzBdXSxhLl9kZXRhaWxzJiYoKGEuX2RldGFpbHNTaG93PWIpP2EuX2RldGFpbHMuaW5zZXJ0QWZ0ZXIoYS5uVHIpOgphLl9kZXRhaWxzLmRldGFjaCgpLGljKGNbMF0pKSl9LGljPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyB2KGEpLGM9YS5hb0RhdGE7Yi5vZmYoImRyYXcuZHQuRFRfZGV0YWlscyBjb2x1bW4tdmlzaWJpbGl0eS5kdC5EVF9kZXRhaWxzIGRlc3Ryb3kuZHQuRFRfZGV0YWlscyIpOzA8SihjLCJfZGV0YWlscyIpLmxlbmd0aCYmKGIub24oImRyYXcuZHQuRFRfZGV0YWlscyIsZnVuY3Rpb24oZCxlKXthPT09ZSYmYi5yb3dzKHtwYWdlOiJjdXJyZW50In0pLmVxKDApLmVhY2goZnVuY3Rpb24oYSl7YT1jW2FdO2EuX2RldGFpbHNTaG93JiZhLl9kZXRhaWxzLmluc2VydEFmdGVyKGEublRyKX0pfSksYi5vbigiY29sdW1uLXZpc2liaWxpdHkuZHQuRFRfZGV0YWlscyIsZnVuY3Rpb24oYixlLGYsZyl7aWYoYT09PWUpZm9yKGU9VyhlKSxmPTAsZz1jLmxlbmd0aDtmPGc7ZisrKWI9Y1tmXSxiLl9kZXRhaWxzJiZiLl9kZXRhaWxzLmNoaWxkcmVuKCJ0ZFtjb2xzcGFuXSIpLmF0dHIoImNvbHNwYW4iLAplKX0pLGIub24oImRlc3Ryb3kuZHQuRFRfZGV0YWlscyIsZnVuY3Rpb24oZCxlKXtpZihhPT09ZSlmb3IoZD0wLGU9Yy5sZW5ndGg7ZDxlO2QrKyljW2RdLl9kZXRhaWxzJiZoYihiLGQpfSkpfTt0KCJyb3coKS5jaGlsZCgpIixmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuY29udGV4dDtpZihhPT09cClyZXR1cm4gYy5sZW5ndGgmJnRoaXMubGVuZ3RoP2NbMF0uYW9EYXRhW3RoaXNbMF1dLl9kZXRhaWxzOnA7ITA9PT1hP3RoaXMuY2hpbGQuc2hvdygpOiExPT09YT9oYih0aGlzKTpjLmxlbmd0aCYmdGhpcy5sZW5ndGgmJmhjKGNbMF0sY1swXS5hb0RhdGFbdGhpc1swXV0sYSxiKTtyZXR1cm4gdGhpc30pO3QoWyJyb3coKS5jaGlsZC5zaG93KCkiLCJyb3coKS5jaGlsZCgpLnNob3coKSJdLGZ1bmN0aW9uKGEpe1liKHRoaXMsITApO3JldHVybiB0aGlzfSk7dChbInJvdygpLmNoaWxkLmhpZGUoKSIsInJvdygpLmNoaWxkKCkuaGlkZSgpIl0sZnVuY3Rpb24oKXtZYih0aGlzLCExKTsKcmV0dXJuIHRoaXN9KTt0KFsicm93KCkuY2hpbGQucmVtb3ZlKCkiLCJyb3coKS5jaGlsZCgpLnJlbW92ZSgpIl0sZnVuY3Rpb24oKXtoYih0aGlzKTtyZXR1cm4gdGhpc30pO3QoInJvdygpLmNoaWxkLmlzU2hvd24oKSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNvbnRleHQ7cmV0dXJuIGEubGVuZ3RoJiZ0aGlzLmxlbmd0aD9hWzBdLmFvRGF0YVt0aGlzWzBdXS5fZGV0YWlsc1Nob3d8fCExOiExfSk7dmFyIGpjPS9eKFteOl0rKToobmFtZXx2aXNJZHh8dmlzaWJsZSkkLyxaYj1mdW5jdGlvbihhLGIsYyxkLGUpe2M9W107ZD0wO2Zvcih2YXIgZj1lLmxlbmd0aDtkPGY7ZCsrKWMucHVzaChJKGEsZVtkXSxiKSk7cmV0dXJuIGN9LGtjPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmFvQ29sdW1ucyxlPUooZCwic05hbWUiKSxoPUooZCwiblRoIik7cmV0dXJuIGViKCJjb2x1bW4iLGIsZnVuY3Rpb24oYil7dmFyIGc9U2IoYik7aWYoIiI9PT1iKXJldHVybiBaKGQubGVuZ3RoKTtpZihudWxsIT09CmcpcmV0dXJuWzA8PWc/ZzpkLmxlbmd0aCtnXTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGIpe3ZhciBsPUZhKGEsYyk7cmV0dXJuIGYubWFwKGQsZnVuY3Rpb24oYyxkKXtyZXR1cm4gYihkLFpiKGEsZCwwLDAsbCksaFtkXSk/ZDpudWxsfSl9dmFyIG49InN0cmluZyI9PT10eXBlb2YgYj9iLm1hdGNoKGpjKToiIjtpZihuKXN3aXRjaChuWzJdKXtjYXNlICJ2aXNJZHgiOmNhc2UgInZpc2libGUiOmc9cGFyc2VJbnQoblsxXSwxMCk7aWYoMD5nKXt2YXIgbT1mLm1hcChkLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuYlZpc2libGU/YjpudWxsfSk7cmV0dXJuW21bbS5sZW5ndGgrZ11dfXJldHVybltiYShhLGcpXTtjYXNlICJuYW1lIjpyZXR1cm4gZi5tYXAoZSxmdW5jdGlvbihhLGIpe3JldHVybiBhPT09blsxXT9iOm51bGx9KTtkZWZhdWx0OnJldHVybltdfWlmKGIubm9kZU5hbWUmJmIuX0RUX0NlbGxJbmRleClyZXR1cm5bYi5fRFRfQ2VsbEluZGV4LmNvbHVtbl07Zz1mKGgpLmZpbHRlcihiKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZi5pbkFycmF5KHRoaXMsCmgpfSkudG9BcnJheSgpO2lmKGcubGVuZ3RofHwhYi5ub2RlTmFtZSlyZXR1cm4gZztnPWYoYikuY2xvc2VzdCgiKltkYXRhLWR0LWNvbHVtbl0iKTtyZXR1cm4gZy5sZW5ndGg/W2cuZGF0YSgiZHQtY29sdW1uIildOltdfSxhLGMpfTt0KCJjb2x1bW5zKCkiLGZ1bmN0aW9uKGEsYil7YT09PXA/YT0iIjpmLmlzUGxhaW5PYmplY3QoYSkmJihiPWEsYT0iIik7Yj1mYihiKTt2YXIgYz10aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYyl7cmV0dXJuIGtjKGMsYSxiKX0sMSk7Yy5zZWxlY3Rvci5jb2xzPWE7Yy5zZWxlY3Rvci5vcHRzPWI7cmV0dXJuIGN9KTt4KCJjb2x1bW5zKCkuaGVhZGVyKCkiLCJjb2x1bW4oKS5oZWFkZXIoKSIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY29sdW1uIixmdW5jdGlvbihhLGIpe3JldHVybiBhLmFvQ29sdW1uc1tiXS5uVGh9LDEpfSk7eCgiY29sdW1ucygpLmZvb3RlcigpIiwiY29sdW1uKCkuZm9vdGVyKCkiLGZ1bmN0aW9uKGEsCmIpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4iLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuYW9Db2x1bW5zW2JdLm5UZn0sMSl9KTt4KCJjb2x1bW5zKCkuZGF0YSgpIiwiY29sdW1uKCkuZGF0YSgpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4tcm93cyIsWmIsMSl9KTt4KCJjb2x1bW5zKCkuZGF0YVNyYygpIiwiY29sdW1uKCkuZGF0YVNyYygpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4iLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuYW9Db2x1bW5zW2JdLm1EYXRhfSwxKX0pO3goImNvbHVtbnMoKS5jYWNoZSgpIiwiY29sdW1uKCkuY2FjaGUoKSIsZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNvbHVtbi1yb3dzIixmdW5jdGlvbihiLGMsZCxlLGYpe3JldHVybiBsYShiLmFvRGF0YSxmLCJzZWFyY2giPT09YT8iX2FGaWx0ZXJEYXRhIjoiX2FTb3J0RGF0YSIsYyl9LDEpfSk7eCgiY29sdW1ucygpLm5vZGVzKCkiLAoiY29sdW1uKCkubm9kZXMoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY29sdW1uLXJvd3MiLGZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJuIGxhKGEuYW9EYXRhLGUsImFuQ2VsbHMiLGIpfSwxKX0pO3goImNvbHVtbnMoKS52aXNpYmxlKCkiLCJjb2x1bW4oKS52aXNpYmxlKCkiLGZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcyxkPXRoaXMuaXRlcmF0b3IoImNvbHVtbiIsZnVuY3Rpb24oYixjKXtpZihhPT09cClyZXR1cm4gYi5hb0NvbHVtbnNbY10uYlZpc2libGU7dmFyIGQ9Yi5hb0NvbHVtbnMsZT1kW2NdLGg9Yi5hb0RhdGEsbjtpZihhIT09cCYmZS5iVmlzaWJsZSE9PWEpe2lmKGEpe3ZhciBtPWYuaW5BcnJheSghMCxKKGQsImJWaXNpYmxlIiksYysxKTtkPTA7Zm9yKG49aC5sZW5ndGg7ZDxuO2QrKyl7dmFyIHE9aFtkXS5uVHI7Yj1oW2RdLmFuQ2VsbHM7cSYmcS5pbnNlcnRCZWZvcmUoYltjXSxiW21dfHxudWxsKX19ZWxzZSBmKEooYi5hb0RhdGEsImFuQ2VsbHMiLApjKSkuZGV0YWNoKCk7ZS5iVmlzaWJsZT1hfX0pO2EhPT1wJiZ0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oZCl7aGEoZCxkLmFvSGVhZGVyKTtoYShkLGQuYW9Gb290ZXIpO2QuYWlEaXNwbGF5Lmxlbmd0aHx8ZihkLm5UQm9keSkuZmluZCgidGRbY29sc3Bhbl0iKS5hdHRyKCJjb2xzcGFuIixXKGQpKTtCYShkKTtjLml0ZXJhdG9yKCJjb2x1bW4iLGZ1bmN0aW9uKGMsZCl7QShjLG51bGwsImNvbHVtbi12aXNpYmlsaXR5IixbYyxkLGEsYl0pfSk7KGI9PT1wfHxiKSYmYy5jb2x1bW5zLmFkanVzdCgpfSk7cmV0dXJuIGR9KTt4KCJjb2x1bW5zKCkuaW5kZXhlcygpIiwiY29sdW1uKCkuaW5kZXgoKSIsZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNvbHVtbiIsZnVuY3Rpb24oYixjKXtyZXR1cm4idmlzaWJsZSI9PT1hP2NhKGIsYyk6Y30sMSl9KTt0KCJjb2x1bW5zLmFkanVzdCgpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYSl7YWEoYSl9LAoxKX0pO3QoImNvbHVtbi5pbmRleCgpIixmdW5jdGlvbihhLGIpe2lmKDAhPT10aGlzLmNvbnRleHQubGVuZ3RoKXt2YXIgYz10aGlzLmNvbnRleHRbMF07aWYoImZyb21WaXNpYmxlIj09PWF8fCJ0b0RhdGEiPT09YSlyZXR1cm4gYmEoYyxiKTtpZigiZnJvbURhdGEiPT09YXx8InRvVmlzaWJsZSI9PT1hKXJldHVybiBjYShjLGIpfX0pO3QoImNvbHVtbigpIixmdW5jdGlvbihhLGIpe3JldHVybiBnYih0aGlzLmNvbHVtbnMoYSxiKSl9KTt2YXIgbGM9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuYW9EYXRhLGU9RmEoYSxjKSxoPVZiKGxhKGQsZSwiYW5DZWxscyIpKSxnPWYoW10uY29uY2F0LmFwcGx5KFtdLGgpKSxrLGw9YS5hb0NvbHVtbnMubGVuZ3RoLG4sbSxxLHUsdCx2O3JldHVybiBlYigiY2VsbCIsYixmdW5jdGlvbihiKXt2YXIgYz0iZnVuY3Rpb24iPT09dHlwZW9mIGI7aWYobnVsbD09PWJ8fGI9PT1wfHxjKXtuPVtdO209MDtmb3IocT1lLmxlbmd0aDttPHE7bSsrKWZvcihrPQplW21dLHU9MDt1PGw7dSsrKXQ9e3JvdzprLGNvbHVtbjp1fSxjPyh2PWRba10sYih0LEkoYSxrLHUpLHYuYW5DZWxscz92LmFuQ2VsbHNbdV06bnVsbCkmJm4ucHVzaCh0KSk6bi5wdXNoKHQpO3JldHVybiBufWlmKGYuaXNQbGFpbk9iamVjdChiKSlyZXR1cm4gYi5jb2x1bW4hPT1wJiZiLnJvdyE9PXAmJi0xIT09Zi5pbkFycmF5KGIucm93LGUpP1tiXTpbXTtjPWcuZmlsdGVyKGIpLm1hcChmdW5jdGlvbihhLGIpe3JldHVybntyb3c6Yi5fRFRfQ2VsbEluZGV4LnJvdyxjb2x1bW46Yi5fRFRfQ2VsbEluZGV4LmNvbHVtbn19KS50b0FycmF5KCk7aWYoYy5sZW5ndGh8fCFiLm5vZGVOYW1lKXJldHVybiBjO3Y9ZihiKS5jbG9zZXN0KCIqW2RhdGEtZHQtcm93XSIpO3JldHVybiB2Lmxlbmd0aD9be3Jvdzp2LmRhdGEoImR0LXJvdyIpLGNvbHVtbjp2LmRhdGEoImR0LWNvbHVtbiIpfV06W119LGEsYyl9O3QoImNlbGxzKCkiLGZ1bmN0aW9uKGEsYixjKXtmLmlzUGxhaW5PYmplY3QoYSkmJgooYS5yb3c9PT1wPyhjPWEsYT1udWxsKTooYz1iLGI9bnVsbCkpO2YuaXNQbGFpbk9iamVjdChiKSYmKGM9YixiPW51bGwpO2lmKG51bGw9PT1ifHxiPT09cClyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGIpe3JldHVybiBsYyhiLGEsZmIoYykpfSk7dmFyIGQ9Yz97cGFnZTpjLnBhZ2Usb3JkZXI6Yy5vcmRlcixzZWFyY2g6Yy5zZWFyY2h9Ont9LGU9dGhpcy5jb2x1bW5zKGIsZCksaD10aGlzLnJvd3MoYSxkKSxnLGssbCxuO2Q9dGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGEsYil7YT1bXTtnPTA7Zm9yKGs9aFtiXS5sZW5ndGg7ZzxrO2crKylmb3IobD0wLG49ZVtiXS5sZW5ndGg7bDxuO2wrKylhLnB1c2goe3JvdzpoW2JdW2ddLGNvbHVtbjplW2JdW2xdfSk7cmV0dXJuIGF9LDEpO2Q9YyYmYy5zZWxlY3RlZD90aGlzLmNlbGxzKGQsYyk6ZDtmLmV4dGVuZChkLnNlbGVjdG9yLHtjb2xzOmIscm93czphLG9wdHM6Y30pO3JldHVybiBkfSk7eCgiY2VsbHMoKS5ub2RlcygpIiwKImNlbGwoKS5ub2RlKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNlbGwiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4oYT1hLmFvRGF0YVtiXSkmJmEuYW5DZWxscz9hLmFuQ2VsbHNbY106cH0sMSl9KTt0KCJjZWxscygpLmRhdGEoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY2VsbCIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBJKGEsYixjKX0sMSl9KTt4KCJjZWxscygpLmNhY2hlKCkiLCJjZWxsKCkuY2FjaGUoKSIsZnVuY3Rpb24oYSl7YT0ic2VhcmNoIj09PWE/Il9hRmlsdGVyRGF0YSI6Il9hU29ydERhdGEiO3JldHVybiB0aGlzLml0ZXJhdG9yKCJjZWxsIixmdW5jdGlvbihiLGMsZCl7cmV0dXJuIGIuYW9EYXRhW2NdW2FdW2RdfSwxKX0pO3goImNlbGxzKCkucmVuZGVyKCkiLCJjZWxsKCkucmVuZGVyKCkiLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjZWxsIixmdW5jdGlvbihiLGMsZCl7cmV0dXJuIEkoYixjLGQsYSl9LAoxKX0pO3goImNlbGxzKCkuaW5kZXhlcygpIiwiY2VsbCgpLmluZGV4KCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNlbGwiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm57cm93OmIsY29sdW1uOmMsY29sdW1uVmlzaWJsZTpjYShhLGMpfX0sMSl9KTt4KCJjZWxscygpLmludmFsaWRhdGUoKSIsImNlbGwoKS5pbnZhbGlkYXRlKCkiLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjZWxsIixmdW5jdGlvbihiLGMsZCl7ZWEoYixjLGEsZCl9KX0pO3QoImNlbGwoKSIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBnYih0aGlzLmNlbGxzKGEsYixjKSl9KTt0KCJjZWxsKCkuZGF0YSgpIixmdW5jdGlvbihhKXt2YXIgYj10aGlzLmNvbnRleHQsYz10aGlzWzBdO2lmKGE9PT1wKXJldHVybiBiLmxlbmd0aCYmYy5sZW5ndGg/SShiWzBdLGNbMF0ucm93LGNbMF0uY29sdW1uKTpwO29iKGJbMF0sY1swXS5yb3csY1swXS5jb2x1bW4sYSk7ZWEoYlswXSxjWzBdLnJvdywKImRhdGEiLGNbMF0uY29sdW1uKTtyZXR1cm4gdGhpc30pO3QoIm9yZGVyKCkiLGZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jb250ZXh0O2lmKGE9PT1wKXJldHVybiAwIT09Yy5sZW5ndGg/Y1swXS5hYVNvcnRpbmc6cDsibnVtYmVyIj09PXR5cGVvZiBhP2E9W1thLGJdXTphLmxlbmd0aCYmIWYuaXNBcnJheShhWzBdKSYmKGE9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihiKXtiLmFhU29ydGluZz1hLnNsaWNlKCl9KX0pO3QoIm9yZGVyLmxpc3RlbmVyKCkiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGQpe1FhKGQsYSxiLGMpfSl9KTt0KCJvcmRlci5maXhlZCgpIixmdW5jdGlvbihhKXtpZighYSl7dmFyIGI9dGhpcy5jb250ZXh0O2I9Yi5sZW5ndGg/YlswXS5hYVNvcnRpbmdGaXhlZDpwO3JldHVybiBmLmlzQXJyYXkoYik/e3ByZTpifToKYn1yZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGIpe2IuYWFTb3J0aW5nRml4ZWQ9Zi5leHRlbmQoITAse30sYSl9KX0pO3QoWyJjb2x1bW5zKCkub3JkZXIoKSIsImNvbHVtbigpLm9yZGVyKCkiXSxmdW5jdGlvbihhKXt2YXIgYj10aGlzO3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYyxkKXt2YXIgZT1bXTtmLmVhY2goYltkXSxmdW5jdGlvbihiLGMpe2UucHVzaChbYyxhXSl9KTtjLmFhU29ydGluZz1lfSl9KTt0KCJzZWFyY2goKSIsZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dGhpcy5jb250ZXh0O3JldHVybiBhPT09cD8wIT09ZS5sZW5ndGg/ZVswXS5vUHJldmlvdXNTZWFyY2guc1NlYXJjaDpwOnRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihlKXtlLm9GZWF0dXJlcy5iRmlsdGVyJiZpYShlLGYuZXh0ZW5kKHt9LGUub1ByZXZpb3VzU2VhcmNoLHtzU2VhcmNoOmErIiIsYlJlZ2V4Om51bGw9PT1iPyExOmIsYlNtYXJ0Om51bGw9PT0KYz8hMDpjLGJDYXNlSW5zZW5zaXRpdmU6bnVsbD09PWQ/ITA6ZH0pLDEpfSl9KTt4KCJjb2x1bW5zKCkuc2VhcmNoKCkiLCJjb2x1bW4oKS5zZWFyY2goKSIsZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNvbHVtbiIsZnVuY3Rpb24oZSxoKXt2YXIgZz1lLmFvUHJlU2VhcmNoQ29scztpZihhPT09cClyZXR1cm4gZ1toXS5zU2VhcmNoO2Uub0ZlYXR1cmVzLmJGaWx0ZXImJihmLmV4dGVuZChnW2hdLHtzU2VhcmNoOmErIiIsYlJlZ2V4Om51bGw9PT1iPyExOmIsYlNtYXJ0Om51bGw9PT1jPyEwOmMsYkNhc2VJbnNlbnNpdGl2ZTpudWxsPT09ZD8hMDpkfSksaWEoZSxlLm9QcmV2aW91c1NlYXJjaCwxKSl9KX0pO3QoInN0YXRlKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGV4dC5sZW5ndGg/dGhpcy5jb250ZXh0WzBdLm9TYXZlZFN0YXRlOm51bGx9KTt0KCJzdGF0ZS5jbGVhcigpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsCmZ1bmN0aW9uKGEpe2EuZm5TdGF0ZVNhdmVDYWxsYmFjay5jYWxsKGEub0luc3RhbmNlLGEse30pfSl9KTt0KCJzdGF0ZS5sb2FkZWQoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZXh0Lmxlbmd0aD90aGlzLmNvbnRleHRbMF0ub0xvYWRlZFN0YXRlOm51bGx9KTt0KCJzdGF0ZS5zYXZlKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihhKXtCYShhKX0pfSk7cS52ZXJzaW9uQ2hlY2s9cS5mblZlcnNpb25DaGVjaz1mdW5jdGlvbihhKXt2YXIgYj1xLnZlcnNpb24uc3BsaXQoIi4iKTthPWEuc3BsaXQoIi4iKTtmb3IodmFyIGMsZCxlPTAsZj1hLmxlbmd0aDtlPGY7ZSsrKWlmKGM9cGFyc2VJbnQoYltlXSwxMCl8fDAsZD1wYXJzZUludChhW2VdLDEwKXx8MCxjIT09ZClyZXR1cm4gYz5kO3JldHVybiEwfTtxLmlzRGF0YVRhYmxlPXEuZm5Jc0RhdGFUYWJsZT1mdW5jdGlvbihhKXt2YXIgYj1mKGEpLmdldCgwKSxjPSExO2lmKGEgaW5zdGFuY2VvZgpxLkFwaSlyZXR1cm4hMDtmLmVhY2gocS5zZXR0aW5ncyxmdW5jdGlvbihhLGUpe2E9ZS5uU2Nyb2xsSGVhZD9mKCJ0YWJsZSIsZS5uU2Nyb2xsSGVhZClbMF06bnVsbDt2YXIgZD1lLm5TY3JvbGxGb290P2YoInRhYmxlIixlLm5TY3JvbGxGb290KVswXTpudWxsO2lmKGUublRhYmxlPT09Ynx8YT09PWJ8fGQ9PT1iKWM9ITB9KTtyZXR1cm4gY307cS50YWJsZXM9cS5mblRhYmxlcz1mdW5jdGlvbihhKXt2YXIgYj0hMTtmLmlzUGxhaW5PYmplY3QoYSkmJihiPWEuYXBpLGE9YS52aXNpYmxlKTt2YXIgYz1mLm1hcChxLnNldHRpbmdzLGZ1bmN0aW9uKGIpe2lmKCFhfHxhJiZmKGIublRhYmxlKS5pcygiOnZpc2libGUiKSlyZXR1cm4gYi5uVGFibGV9KTtyZXR1cm4gYj9uZXcgdihjKTpjfTtxLmNhbWVsVG9IdW5nYXJpYW49TDt0KCIkKCkiLGZ1bmN0aW9uKGEsYil7Yj10aGlzLnJvd3MoYikubm9kZXMoKTtiPWYoYik7cmV0dXJuIGYoW10uY29uY2F0KGIuZmlsdGVyKGEpLnRvQXJyYXkoKSwKYi5maW5kKGEpLnRvQXJyYXkoKSkpfSk7Zi5lYWNoKFsib24iLCJvbmUiLCJvZmYiXSxmdW5jdGlvbihhLGIpe3QoYisiKCkiLGZ1bmN0aW9uKCl7dmFyIGE9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTthWzBdPWYubWFwKGFbMF0uc3BsaXQoL1xzLyksZnVuY3Rpb24oYSl7cmV0dXJuIGEubWF0Y2goL1wuZHRcYi8pP2E6YSsiLmR0In0pLmpvaW4oIiAiKTt2YXIgZD1mKHRoaXMudGFibGVzKCkubm9kZXMoKSk7ZFtiXS5hcHBseShkLGEpO3JldHVybiB0aGlzfSl9KTt0KCJjbGVhcigpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYSl7cWEoYSl9KX0pO3QoInNldHRpbmdzKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB2KHRoaXMuY29udGV4dCx0aGlzLmNvbnRleHQpfSk7dCgiaW5pdCgpIixmdW5jdGlvbigpe3ZhciBhPXRoaXMuY29udGV4dDtyZXR1cm4gYS5sZW5ndGg/YVswXS5vSW5pdDpudWxsfSk7dCgiZGF0YSgpIiwKZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGEpe3JldHVybiBKKGEuYW9EYXRhLCJfYURhdGEiKX0pLmZsYXR0ZW4oKX0pO3QoImRlc3Ryb3koKSIsZnVuY3Rpb24oYSl7YT1hfHwhMTtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGIpe3ZhciBjPWIublRhYmxlV3JhcHBlci5wYXJlbnROb2RlLGQ9Yi5vQ2xhc3NlcyxlPWIublRhYmxlLGg9Yi5uVEJvZHksZz1iLm5USGVhZCxrPWIublRGb290LGw9ZihlKTtoPWYoaCk7dmFyIG49ZihiLm5UYWJsZVdyYXBwZXIpLG09Zi5tYXAoYi5hb0RhdGEsZnVuY3Rpb24oYSl7cmV0dXJuIGEublRyfSkscDtiLmJEZXN0cm95aW5nPSEwO0EoYiwiYW9EZXN0cm95Q2FsbGJhY2siLCJkZXN0cm95IixbYl0pO2F8fChuZXcgdihiKSkuY29sdW1ucygpLnZpc2libGUoITApO24ub2ZmKCIuRFQiKS5maW5kKCI6bm90KHRib2R5ICopIikub2ZmKCIuRFQiKTtmKHopLm9mZigiLkRULSIrYi5zSW5zdGFuY2UpOwplIT1nLnBhcmVudE5vZGUmJihsLmNoaWxkcmVuKCJ0aGVhZCIpLmRldGFjaCgpLGwuYXBwZW5kKGcpKTtrJiZlIT1rLnBhcmVudE5vZGUmJihsLmNoaWxkcmVuKCJ0Zm9vdCIpLmRldGFjaCgpLGwuYXBwZW5kKGspKTtiLmFhU29ydGluZz1bXTtiLmFhU29ydGluZ0ZpeGVkPVtdO0FhKGIpO2YobSkucmVtb3ZlQ2xhc3MoYi5hc1N0cmlwZUNsYXNzZXMuam9pbigiICIpKTtmKCJ0aCwgdGQiLGcpLnJlbW92ZUNsYXNzKGQuc1NvcnRhYmxlKyIgIitkLnNTb3J0YWJsZUFzYysiICIrZC5zU29ydGFibGVEZXNjKyIgIitkLnNTb3J0YWJsZU5vbmUpO2guY2hpbGRyZW4oKS5kZXRhY2goKTtoLmFwcGVuZChtKTtnPWE/InJlbW92ZSI6ImRldGFjaCI7bFtnXSgpO25bZ10oKTshYSYmYyYmKGMuaW5zZXJ0QmVmb3JlKGUsYi5uVGFibGVSZWluc2VydEJlZm9yZSksbC5jc3MoIndpZHRoIixiLnNEZXN0cm95V2lkdGgpLnJlbW92ZUNsYXNzKGQuc1RhYmxlKSwocD1iLmFzRGVzdHJveVN0cmlwZXMubGVuZ3RoKSYmCmguY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKGEpe2YodGhpcykuYWRkQ2xhc3MoYi5hc0Rlc3Ryb3lTdHJpcGVzW2ElcF0pfSkpO2M9Zi5pbkFycmF5KGIscS5zZXR0aW5ncyk7LTEhPT1jJiZxLnNldHRpbmdzLnNwbGljZShjLDEpfSl9KTtmLmVhY2goWyJjb2x1bW4iLCJyb3ciLCJjZWxsIl0sZnVuY3Rpb24oYSxiKXt0KGIrInMoKS5ldmVyeSgpIixmdW5jdGlvbihhKXt2YXIgYz10aGlzLnNlbGVjdG9yLm9wdHMsZT10aGlzO3JldHVybiB0aGlzLml0ZXJhdG9yKGIsZnVuY3Rpb24oZCxmLGssbCxuKXthLmNhbGwoZVtiXShmLCJjZWxsIj09PWI/azpjLCJjZWxsIj09PWI/YzpwKSxmLGssbCxuKX0pfSl9KTt0KCJpMThuKCkiLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmNvbnRleHRbMF07YT1VKGEpKGQub0xhbmd1YWdlKTthPT09cCYmKGE9Yik7YyE9PXAmJmYuaXNQbGFpbk9iamVjdChhKSYmKGE9YVtjXSE9PXA/YVtjXTphLl8pO3JldHVybiBhLnJlcGxhY2UoIiVkIixjKX0pOwpxLnZlcnNpb249IjEuMTAuMjAiO3Euc2V0dGluZ3M9W107cS5tb2RlbHM9e307cS5tb2RlbHMub1NlYXJjaD17YkNhc2VJbnNlbnNpdGl2ZTohMCxzU2VhcmNoOiIiLGJSZWdleDohMSxiU21hcnQ6ITB9O3EubW9kZWxzLm9Sb3c9e25UcjpudWxsLGFuQ2VsbHM6bnVsbCxfYURhdGE6W10sX2FTb3J0RGF0YTpudWxsLF9hRmlsdGVyRGF0YTpudWxsLF9zRmlsdGVyUm93Om51bGwsX3NSb3dTdHJpcGU6IiIsc3JjOm51bGwsaWR4Oi0xfTtxLm1vZGVscy5vQ29sdW1uPXtpZHg6bnVsbCxhRGF0YVNvcnQ6bnVsbCxhc1NvcnRpbmc6bnVsbCxiU2VhcmNoYWJsZTpudWxsLGJTb3J0YWJsZTpudWxsLGJWaXNpYmxlOm51bGwsX3NNYW51YWxUeXBlOm51bGwsX2JBdHRyU3JjOiExLGZuQ3JlYXRlZENlbGw6bnVsbCxmbkdldERhdGE6bnVsbCxmblNldERhdGE6bnVsbCxtRGF0YTpudWxsLG1SZW5kZXI6bnVsbCxuVGg6bnVsbCxuVGY6bnVsbCxzQ2xhc3M6bnVsbCxzQ29udGVudFBhZGRpbmc6bnVsbCwKc0RlZmF1bHRDb250ZW50Om51bGwsc05hbWU6bnVsbCxzU29ydERhdGFUeXBlOiJzdGQiLHNTb3J0aW5nQ2xhc3M6bnVsbCxzU29ydGluZ0NsYXNzSlVJOm51bGwsc1RpdGxlOm51bGwsc1R5cGU6bnVsbCxzV2lkdGg6bnVsbCxzV2lkdGhPcmlnOm51bGx9O3EuZGVmYXVsdHM9e2FhRGF0YTpudWxsLGFhU29ydGluZzpbWzAsImFzYyJdXSxhYVNvcnRpbmdGaXhlZDpbXSxhamF4Om51bGwsYUxlbmd0aE1lbnU6WzEwLDI1LDUwLDEwMF0sYW9Db2x1bW5zOm51bGwsYW9Db2x1bW5EZWZzOm51bGwsYW9TZWFyY2hDb2xzOltdLGFzU3RyaXBlQ2xhc3NlczpudWxsLGJBdXRvV2lkdGg6ITAsYkRlZmVyUmVuZGVyOiExLGJEZXN0cm95OiExLGJGaWx0ZXI6ITAsYkluZm86ITAsYkxlbmd0aENoYW5nZTohMCxiUGFnaW5hdGU6ITAsYlByb2Nlc3Npbmc6ITEsYlJldHJpZXZlOiExLGJTY3JvbGxDb2xsYXBzZTohMSxiU2VydmVyU2lkZTohMSxiU29ydDohMCxiU29ydE11bHRpOiEwLGJTb3J0Q2VsbHNUb3A6ITEsCmJTb3J0Q2xhc3NlczohMCxiU3RhdGVTYXZlOiExLGZuQ3JlYXRlZFJvdzpudWxsLGZuRHJhd0NhbGxiYWNrOm51bGwsZm5Gb290ZXJDYWxsYmFjazpudWxsLGZuRm9ybWF0TnVtYmVyOmZ1bmN0aW9uKGEpe3JldHVybiBhLnRvU3RyaW5nKCkucmVwbGFjZSgvXEIoPz0oXGR7M30pKyg/IVxkKSkvZyx0aGlzLm9MYW5ndWFnZS5zVGhvdXNhbmRzKX0sZm5IZWFkZXJDYWxsYmFjazpudWxsLGZuSW5mb0NhbGxiYWNrOm51bGwsZm5Jbml0Q29tcGxldGU6bnVsbCxmblByZURyYXdDYWxsYmFjazpudWxsLGZuUm93Q2FsbGJhY2s6bnVsbCxmblNlcnZlckRhdGE6bnVsbCxmblNlcnZlclBhcmFtczpudWxsLGZuU3RhdGVMb2FkQ2FsbGJhY2s6ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiBKU09OLnBhcnNlKCgtMT09PWEuaVN0YXRlRHVyYXRpb24/c2Vzc2lvblN0b3JhZ2U6bG9jYWxTdG9yYWdlKS5nZXRJdGVtKCJEYXRhVGFibGVzXyIrYS5zSW5zdGFuY2UrIl8iK2xvY2F0aW9uLnBhdGhuYW1lKSl9Y2F0Y2goYil7fX0sCmZuU3RhdGVMb2FkUGFyYW1zOm51bGwsZm5TdGF0ZUxvYWRlZDpudWxsLGZuU3RhdGVTYXZlQ2FsbGJhY2s6ZnVuY3Rpb24oYSxiKXt0cnl7KC0xPT09YS5pU3RhdGVEdXJhdGlvbj9zZXNzaW9uU3RvcmFnZTpsb2NhbFN0b3JhZ2UpLnNldEl0ZW0oIkRhdGFUYWJsZXNfIithLnNJbnN0YW5jZSsiXyIrbG9jYXRpb24ucGF0aG5hbWUsSlNPTi5zdHJpbmdpZnkoYikpfWNhdGNoKGMpe319LGZuU3RhdGVTYXZlUGFyYW1zOm51bGwsaVN0YXRlRHVyYXRpb246NzIwMCxpRGVmZXJMb2FkaW5nOm51bGwsaURpc3BsYXlMZW5ndGg6MTAsaURpc3BsYXlTdGFydDowLGlUYWJJbmRleDowLG9DbGFzc2VzOnt9LG9MYW5ndWFnZTp7b0FyaWE6e3NTb3J0QXNjZW5kaW5nOiI6IGFjdGl2YXRlIHRvIHNvcnQgY29sdW1uIGFzY2VuZGluZyIsc1NvcnREZXNjZW5kaW5nOiI6IGFjdGl2YXRlIHRvIHNvcnQgY29sdW1uIGRlc2NlbmRpbmcifSxvUGFnaW5hdGU6e3NGaXJzdDoiRmlyc3QiLHNMYXN0OiJMYXN0IiwKc05leHQ6Ik5leHQiLHNQcmV2aW91czoiUHJldmlvdXMifSxzRW1wdHlUYWJsZToiTm8gZGF0YSBhdmFpbGFibGUgaW4gdGFibGUiLHNJbmZvOiJTaG93aW5nIF9TVEFSVF8gdG8gX0VORF8gb2YgX1RPVEFMXyBlbnRyaWVzIixzSW5mb0VtcHR5OiJTaG93aW5nIDAgdG8gMCBvZiAwIGVudHJpZXMiLHNJbmZvRmlsdGVyZWQ6IihmaWx0ZXJlZCBmcm9tIF9NQVhfIHRvdGFsIGVudHJpZXMpIixzSW5mb1Bvc3RGaXg6IiIsc0RlY2ltYWw6IiIsc1Rob3VzYW5kczoiLCIsc0xlbmd0aE1lbnU6IlNob3cgX01FTlVfIGVudHJpZXMiLHNMb2FkaW5nUmVjb3JkczoiTG9hZGluZy4uLiIsc1Byb2Nlc3Npbmc6IlByb2Nlc3NpbmcuLi4iLHNTZWFyY2g6IlNlYXJjaDoiLHNTZWFyY2hQbGFjZWhvbGRlcjoiIixzVXJsOiIiLHNaZXJvUmVjb3JkczoiTm8gbWF0Y2hpbmcgcmVjb3JkcyBmb3VuZCJ9LG9TZWFyY2g6Zi5leHRlbmQoe30scS5tb2RlbHMub1NlYXJjaCksc0FqYXhEYXRhUHJvcDoiZGF0YSIsCnNBamF4U291cmNlOm51bGwsc0RvbToibGZydGlwIixzZWFyY2hEZWxheTpudWxsLHNQYWdpbmF0aW9uVHlwZToic2ltcGxlX251bWJlcnMiLHNTY3JvbGxYOiIiLHNTY3JvbGxYSW5uZXI6IiIsc1Njcm9sbFk6IiIsc1NlcnZlck1ldGhvZDoiR0VUIixyZW5kZXJlcjpudWxsLHJvd0lkOiJEVF9Sb3dJZCJ9O0gocS5kZWZhdWx0cyk7cS5kZWZhdWx0cy5jb2x1bW49e2FEYXRhU29ydDpudWxsLGlEYXRhU29ydDotMSxhc1NvcnRpbmc6WyJhc2MiLCJkZXNjIl0sYlNlYXJjaGFibGU6ITAsYlNvcnRhYmxlOiEwLGJWaXNpYmxlOiEwLGZuQ3JlYXRlZENlbGw6bnVsbCxtRGF0YTpudWxsLG1SZW5kZXI6bnVsbCxzQ2VsbFR5cGU6InRkIixzQ2xhc3M6IiIsc0NvbnRlbnRQYWRkaW5nOiIiLHNEZWZhdWx0Q29udGVudDpudWxsLHNOYW1lOiIiLHNTb3J0RGF0YVR5cGU6InN0ZCIsc1RpdGxlOm51bGwsc1R5cGU6bnVsbCxzV2lkdGg6bnVsbH07SChxLmRlZmF1bHRzLmNvbHVtbik7cS5tb2RlbHMub1NldHRpbmdzPQp7b0ZlYXR1cmVzOntiQXV0b1dpZHRoOm51bGwsYkRlZmVyUmVuZGVyOm51bGwsYkZpbHRlcjpudWxsLGJJbmZvOm51bGwsYkxlbmd0aENoYW5nZTpudWxsLGJQYWdpbmF0ZTpudWxsLGJQcm9jZXNzaW5nOm51bGwsYlNlcnZlclNpZGU6bnVsbCxiU29ydDpudWxsLGJTb3J0TXVsdGk6bnVsbCxiU29ydENsYXNzZXM6bnVsbCxiU3RhdGVTYXZlOm51bGx9LG9TY3JvbGw6e2JDb2xsYXBzZTpudWxsLGlCYXJXaWR0aDowLHNYOm51bGwsc1hJbm5lcjpudWxsLHNZOm51bGx9LG9MYW5ndWFnZTp7Zm5JbmZvQ2FsbGJhY2s6bnVsbH0sb0Jyb3dzZXI6e2JTY3JvbGxPdmVyc2l6ZTohMSxiU2Nyb2xsYmFyTGVmdDohMSxiQm91bmRpbmc6ITEsYmFyV2lkdGg6MH0sYWpheDpudWxsLGFhbkZlYXR1cmVzOltdLGFvRGF0YTpbXSxhaURpc3BsYXk6W10sYWlEaXNwbGF5TWFzdGVyOltdLGFJZHM6e30sYW9Db2x1bW5zOltdLGFvSGVhZGVyOltdLGFvRm9vdGVyOltdLG9QcmV2aW91c1NlYXJjaDp7fSwKYW9QcmVTZWFyY2hDb2xzOltdLGFhU29ydGluZzpudWxsLGFhU29ydGluZ0ZpeGVkOltdLGFzU3RyaXBlQ2xhc3NlczpudWxsLGFzRGVzdHJveVN0cmlwZXM6W10sc0Rlc3Ryb3lXaWR0aDowLGFvUm93Q2FsbGJhY2s6W10sYW9IZWFkZXJDYWxsYmFjazpbXSxhb0Zvb3RlckNhbGxiYWNrOltdLGFvRHJhd0NhbGxiYWNrOltdLGFvUm93Q3JlYXRlZENhbGxiYWNrOltdLGFvUHJlRHJhd0NhbGxiYWNrOltdLGFvSW5pdENvbXBsZXRlOltdLGFvU3RhdGVTYXZlUGFyYW1zOltdLGFvU3RhdGVMb2FkUGFyYW1zOltdLGFvU3RhdGVMb2FkZWQ6W10sc1RhYmxlSWQ6IiIsblRhYmxlOm51bGwsblRIZWFkOm51bGwsblRGb290Om51bGwsblRCb2R5Om51bGwsblRhYmxlV3JhcHBlcjpudWxsLGJEZWZlckxvYWRpbmc6ITEsYkluaXRpYWxpc2VkOiExLGFvT3BlblJvd3M6W10sc0RvbTpudWxsLHNlYXJjaERlbGF5Om51bGwsc1BhZ2luYXRpb25UeXBlOiJ0d29fYnV0dG9uIixpU3RhdGVEdXJhdGlvbjowLAphb1N0YXRlU2F2ZTpbXSxhb1N0YXRlTG9hZDpbXSxvU2F2ZWRTdGF0ZTpudWxsLG9Mb2FkZWRTdGF0ZTpudWxsLHNBamF4U291cmNlOm51bGwsc0FqYXhEYXRhUHJvcDpudWxsLGJBamF4RGF0YUdldDohMCxqcVhIUjpudWxsLGpzb246cCxvQWpheERhdGE6cCxmblNlcnZlckRhdGE6bnVsbCxhb1NlcnZlclBhcmFtczpbXSxzU2VydmVyTWV0aG9kOm51bGwsZm5Gb3JtYXROdW1iZXI6bnVsbCxhTGVuZ3RoTWVudTpudWxsLGlEcmF3OjAsYkRyYXdpbmc6ITEsaURyYXdFcnJvcjotMSxfaURpc3BsYXlMZW5ndGg6MTAsX2lEaXNwbGF5U3RhcnQ6MCxfaVJlY29yZHNUb3RhbDowLF9pUmVjb3Jkc0Rpc3BsYXk6MCxvQ2xhc3Nlczp7fSxiRmlsdGVyZWQ6ITEsYlNvcnRlZDohMSxiU29ydENlbGxzVG9wOm51bGwsb0luaXQ6bnVsbCxhb0Rlc3Ryb3lDYWxsYmFjazpbXSxmblJlY29yZHNUb3RhbDpmdW5jdGlvbigpe3JldHVybiJzc3AiPT1EKHRoaXMpPzEqdGhpcy5faVJlY29yZHNUb3RhbDoKdGhpcy5haURpc3BsYXlNYXN0ZXIubGVuZ3RofSxmblJlY29yZHNEaXNwbGF5OmZ1bmN0aW9uKCl7cmV0dXJuInNzcCI9PUQodGhpcyk/MSp0aGlzLl9pUmVjb3Jkc0Rpc3BsYXk6dGhpcy5haURpc3BsYXkubGVuZ3RofSxmbkRpc3BsYXlFbmQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9pRGlzcGxheUxlbmd0aCxiPXRoaXMuX2lEaXNwbGF5U3RhcnQsYz1iK2EsZD10aGlzLmFpRGlzcGxheS5sZW5ndGgsZT10aGlzLm9GZWF0dXJlcyxmPWUuYlBhZ2luYXRlO3JldHVybiBlLmJTZXJ2ZXJTaWRlPyExPT09Znx8LTE9PT1hP2IrZDpNYXRoLm1pbihiK2EsdGhpcy5faVJlY29yZHNEaXNwbGF5KTohZnx8Yz5kfHwtMT09PWE/ZDpjfSxvSW5zdGFuY2U6bnVsbCxzSW5zdGFuY2U6bnVsbCxpVGFiSW5kZXg6MCxuU2Nyb2xsSGVhZDpudWxsLG5TY3JvbGxGb290Om51bGwsYUxhc3RTb3J0OltdLG9QbHVnaW5zOnt9LHJvd0lkRm46bnVsbCxyb3dJZDpudWxsfTtxLmV4dD1DPXtidXR0b25zOnt9LApjbGFzc2VzOnt9LGJ1aWxkZXI6Ii1zb3VyY2UtIixlcnJNb2RlOiJhbGVydCIsZmVhdHVyZTpbXSxzZWFyY2g6W10sc2VsZWN0b3I6e2NlbGw6W10sY29sdW1uOltdLHJvdzpbXX0saW50ZXJuYWw6e30sbGVnYWN5OnthamF4Om51bGx9LHBhZ2VyOnt9LHJlbmRlcmVyOntwYWdlQnV0dG9uOnt9LGhlYWRlcjp7fX0sb3JkZXI6e30sdHlwZTp7ZGV0ZWN0OltdLHNlYXJjaDp7fSxvcmRlcjp7fX0sX3VuaXF1ZTowLGZuVmVyc2lvbkNoZWNrOnEuZm5WZXJzaW9uQ2hlY2ssaUFwaUluZGV4OjAsb0pVSUNsYXNzZXM6e30sc1ZlcnNpb246cS52ZXJzaW9ufTtmLmV4dGVuZChDLHthZm5GaWx0ZXJpbmc6Qy5zZWFyY2gsYVR5cGVzOkMudHlwZS5kZXRlY3Qsb2ZuU2VhcmNoOkMudHlwZS5zZWFyY2gsb1NvcnQ6Qy50eXBlLm9yZGVyLGFmblNvcnREYXRhOkMub3JkZXIsYW9GZWF0dXJlczpDLmZlYXR1cmUsb0FwaTpDLmludGVybmFsLG9TdGRDbGFzc2VzOkMuY2xhc3NlcyxvUGFnaW5hdGlvbjpDLnBhZ2VyfSk7CmYuZXh0ZW5kKHEuZXh0LmNsYXNzZXMse3NUYWJsZToiZGF0YVRhYmxlIixzTm9Gb290ZXI6Im5vLWZvb3RlciIsc1BhZ2VCdXR0b246InBhZ2luYXRlX2J1dHRvbiIsc1BhZ2VCdXR0b25BY3RpdmU6ImN1cnJlbnQiLHNQYWdlQnV0dG9uRGlzYWJsZWQ6ImRpc2FibGVkIixzU3RyaXBlT2RkOiJvZGQiLHNTdHJpcGVFdmVuOiJldmVuIixzUm93RW1wdHk6ImRhdGFUYWJsZXNfZW1wdHkiLHNXcmFwcGVyOiJkYXRhVGFibGVzX3dyYXBwZXIiLHNGaWx0ZXI6ImRhdGFUYWJsZXNfZmlsdGVyIixzSW5mbzoiZGF0YVRhYmxlc19pbmZvIixzUGFnaW5nOiJkYXRhVGFibGVzX3BhZ2luYXRlIHBhZ2luZ18iLHNMZW5ndGg6ImRhdGFUYWJsZXNfbGVuZ3RoIixzUHJvY2Vzc2luZzoiZGF0YVRhYmxlc19wcm9jZXNzaW5nIixzU29ydEFzYzoic29ydGluZ19hc2MiLHNTb3J0RGVzYzoic29ydGluZ19kZXNjIixzU29ydGFibGU6InNvcnRpbmciLHNTb3J0YWJsZUFzYzoic29ydGluZ19hc2NfZGlzYWJsZWQiLApzU29ydGFibGVEZXNjOiJzb3J0aW5nX2Rlc2NfZGlzYWJsZWQiLHNTb3J0YWJsZU5vbmU6InNvcnRpbmdfZGlzYWJsZWQiLHNTb3J0Q29sdW1uOiJzb3J0aW5nXyIsc0ZpbHRlcklucHV0OiIiLHNMZW5ndGhTZWxlY3Q6IiIsc1Njcm9sbFdyYXBwZXI6ImRhdGFUYWJsZXNfc2Nyb2xsIixzU2Nyb2xsSGVhZDoiZGF0YVRhYmxlc19zY3JvbGxIZWFkIixzU2Nyb2xsSGVhZElubmVyOiJkYXRhVGFibGVzX3Njcm9sbEhlYWRJbm5lciIsc1Njcm9sbEJvZHk6ImRhdGFUYWJsZXNfc2Nyb2xsQm9keSIsc1Njcm9sbEZvb3Q6ImRhdGFUYWJsZXNfc2Nyb2xsRm9vdCIsc1Njcm9sbEZvb3RJbm5lcjoiZGF0YVRhYmxlc19zY3JvbGxGb290SW5uZXIiLHNIZWFkZXJUSDoiIixzRm9vdGVyVEg6IiIsc1NvcnRKVUlBc2M6IiIsc1NvcnRKVUlEZXNjOiIiLHNTb3J0SlVJOiIiLHNTb3J0SlVJQXNjQWxsb3dlZDoiIixzU29ydEpVSURlc2NBbGxvd2VkOiIiLHNTb3J0SlVJV3JhcHBlcjoiIixzU29ydEljb246IiIsCnNKVUlIZWFkZXI6IiIsc0pVSUZvb3RlcjoiIn0pO3ZhciBQYj1xLmV4dC5wYWdlcjtmLmV4dGVuZChQYix7c2ltcGxlOmZ1bmN0aW9uKGEsYil7cmV0dXJuWyJwcmV2aW91cyIsIm5leHQiXX0sZnVsbDpmdW5jdGlvbihhLGIpe3JldHVyblsiZmlyc3QiLCJwcmV2aW91cyIsIm5leHQiLCJsYXN0Il19LG51bWJlcnM6ZnVuY3Rpb24oYSxiKXtyZXR1cm5ba2EoYSxiKV19LHNpbXBsZV9udW1iZXJzOmZ1bmN0aW9uKGEsYil7cmV0dXJuWyJwcmV2aW91cyIsa2EoYSxiKSwibmV4dCJdfSxmdWxsX251bWJlcnM6ZnVuY3Rpb24oYSxiKXtyZXR1cm5bImZpcnN0IiwicHJldmlvdXMiLGthKGEsYiksIm5leHQiLCJsYXN0Il19LGZpcnN0X2xhc3RfbnVtYmVyczpmdW5jdGlvbihhLGIpe3JldHVyblsiZmlyc3QiLGthKGEsYiksImxhc3QiXX0sX251bWJlcnM6a2EsbnVtYmVyc19sZW5ndGg6N30pO2YuZXh0ZW5kKCEwLHEuZXh0LnJlbmRlcmVyLHtwYWdlQnV0dG9uOntfOmZ1bmN0aW9uKGEsYiwKYyxkLGUsaCl7dmFyIGc9YS5vQ2xhc3NlcyxrPWEub0xhbmd1YWdlLm9QYWdpbmF0ZSxsPWEub0xhbmd1YWdlLm9BcmlhLnBhZ2luYXRlfHx7fSxuLG0scT0wLHQ9ZnVuY3Rpb24oYixkKXt2YXIgcCxyPWcuc1BhZ2VCdXR0b25EaXNhYmxlZCx1PWZ1bmN0aW9uKGIpe1hhKGEsYi5kYXRhLmFjdGlvbiwhMCl9O3ZhciB3PTA7Zm9yKHA9ZC5sZW5ndGg7dzxwO3crKyl7dmFyIHY9ZFt3XTtpZihmLmlzQXJyYXkodikpe3ZhciB4PWYoIjwiKyh2LkRUX2VsfHwiZGl2IikrIi8+IikuYXBwZW5kVG8oYik7dCh4LHYpfWVsc2V7bj1udWxsO209djt4PWEuaVRhYkluZGV4O3N3aXRjaCh2KXtjYXNlICJlbGxpcHNpcyI6Yi5hcHBlbmQoJzxzcGFuIGNsYXNzPSJlbGxpcHNpcyI+JiN4MjAyNjs8L3NwYW4+Jyk7YnJlYWs7Y2FzZSAiZmlyc3QiOm49ay5zRmlyc3Q7MD09PWUmJih4PS0xLG0rPSIgIityKTticmVhaztjYXNlICJwcmV2aW91cyI6bj1rLnNQcmV2aW91czswPT09ZSYmKHg9LTEsbSs9CiIgIityKTticmVhaztjYXNlICJuZXh0IjpuPWsuc05leHQ7ZT09PWgtMSYmKHg9LTEsbSs9IiAiK3IpO2JyZWFrO2Nhc2UgImxhc3QiOm49ay5zTGFzdDtlPT09aC0xJiYoeD0tMSxtKz0iICIrcik7YnJlYWs7ZGVmYXVsdDpuPXYrMSxtPWU9PT12P2cuc1BhZ2VCdXR0b25BY3RpdmU6IiJ9bnVsbCE9PW4mJih4PWYoIjxhPiIseyJjbGFzcyI6Zy5zUGFnZUJ1dHRvbisiICIrbSwiYXJpYS1jb250cm9scyI6YS5zVGFibGVJZCwiYXJpYS1sYWJlbCI6bFt2XSwiZGF0YS1kdC1pZHgiOnEsdGFiaW5kZXg6eCxpZDowPT09YyYmInN0cmluZyI9PT10eXBlb2Ygdj9hLnNUYWJsZUlkKyJfIit2Om51bGx9KS5odG1sKG4pLmFwcGVuZFRvKGIpLCRhKHgse2FjdGlvbjp2fSx1KSxxKyspfX19O3RyeXt2YXIgdj1mKGIpLmZpbmQoeS5hY3RpdmVFbGVtZW50KS5kYXRhKCJkdC1pZHgiKX1jYXRjaChtYyl7fXQoZihiKS5lbXB0eSgpLGQpO3YhPT1wJiZmKGIpLmZpbmQoIltkYXRhLWR0LWlkeD0iKwp2KyJdIikuZm9jdXMoKX19fSk7Zi5leHRlbmQocS5leHQudHlwZS5kZXRlY3QsW2Z1bmN0aW9uKGEsYil7Yj1iLm9MYW5ndWFnZS5zRGVjaW1hbDtyZXR1cm4gZGIoYSxiKT8ibnVtIitiOm51bGx9LGZ1bmN0aW9uKGEsYil7aWYoYSYmIShhIGluc3RhbmNlb2YgRGF0ZSkmJiFjYy50ZXN0KGEpKXJldHVybiBudWxsO2I9RGF0ZS5wYXJzZShhKTtyZXR1cm4gbnVsbCE9PWImJiFpc05hTihiKXx8UChhKT8iZGF0ZSI6bnVsbH0sZnVuY3Rpb24oYSxiKXtiPWIub0xhbmd1YWdlLnNEZWNpbWFsO3JldHVybiBkYihhLGIsITApPyJudW0tZm10IitiOm51bGx9LGZ1bmN0aW9uKGEsYil7Yj1iLm9MYW5ndWFnZS5zRGVjaW1hbDtyZXR1cm4gVWIoYSxiKT8iaHRtbC1udW0iK2I6bnVsbH0sZnVuY3Rpb24oYSxiKXtiPWIub0xhbmd1YWdlLnNEZWNpbWFsO3JldHVybiBVYihhLGIsITApPyJodG1sLW51bS1mbXQiK2I6bnVsbH0sZnVuY3Rpb24oYSxiKXtyZXR1cm4gUChhKXx8InN0cmluZyI9PT0KdHlwZW9mIGEmJi0xIT09YS5pbmRleE9mKCI8Iik/Imh0bWwiOm51bGx9XSk7Zi5leHRlbmQocS5leHQudHlwZS5zZWFyY2gse2h0bWw6ZnVuY3Rpb24oYSl7cmV0dXJuIFAoYSk/YToic3RyaW5nIj09PXR5cGVvZiBhP2EucmVwbGFjZShSYiwiICIpLnJlcGxhY2UoRWEsIiIpOiIifSxzdHJpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuIFAoYSk/YToic3RyaW5nIj09PXR5cGVvZiBhP2EucmVwbGFjZShSYiwiICIpOmF9fSk7dmFyIERhPWZ1bmN0aW9uKGEsYixjLGQpe2lmKDAhPT1hJiYoIWF8fCItIj09PWEpKXJldHVybi1JbmZpbml0eTtiJiYoYT1UYihhLGIpKTthLnJlcGxhY2UmJihjJiYoYT1hLnJlcGxhY2UoYywiIikpLGQmJihhPWEucmVwbGFjZShkLCIiKSkpO3JldHVybiAxKmF9O2YuZXh0ZW5kKEMudHlwZS5vcmRlcix7ImRhdGUtcHJlIjpmdW5jdGlvbihhKXthPURhdGUucGFyc2UoYSk7cmV0dXJuIGlzTmFOKGEpPy1JbmZpbml0eTphfSwiaHRtbC1wcmUiOmZ1bmN0aW9uKGEpe3JldHVybiBQKGEpPwoiIjphLnJlcGxhY2U/YS5yZXBsYWNlKC88Lio/Pi9nLCIiKS50b0xvd2VyQ2FzZSgpOmErIiJ9LCJzdHJpbmctcHJlIjpmdW5jdGlvbihhKXtyZXR1cm4gUChhKT8iIjoic3RyaW5nIj09PXR5cGVvZiBhP2EudG9Mb3dlckNhc2UoKTphLnRvU3RyaW5nP2EudG9TdHJpbmcoKToiIn0sInN0cmluZy1hc2MiOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE8Yj8tMTphPmI/MTowfSwic3RyaW5nLWRlc2MiOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE8Yj8xOmE+Yj8tMTowfX0pO0hhKCIiKTtmLmV4dGVuZCghMCxxLmV4dC5yZW5kZXJlcix7aGVhZGVyOntfOmZ1bmN0aW9uKGEsYixjLGQpe2YoYS5uVGFibGUpLm9uKCJvcmRlci5kdC5EVCIsZnVuY3Rpb24oZSxmLGcsayl7YT09PWYmJihlPWMuaWR4LGIucmVtb3ZlQ2xhc3MoYy5zU29ydGluZ0NsYXNzKyIgIitkLnNTb3J0QXNjKyIgIitkLnNTb3J0RGVzYykuYWRkQ2xhc3MoImFzYyI9PWtbZV0/ZC5zU29ydEFzYzoiZGVzYyI9PWtbZV0/ZC5zU29ydERlc2M6CmMuc1NvcnRpbmdDbGFzcykpfSl9LGpxdWVyeXVpOmZ1bmN0aW9uKGEsYixjLGQpe2YoIjxkaXYvPiIpLmFkZENsYXNzKGQuc1NvcnRKVUlXcmFwcGVyKS5hcHBlbmQoYi5jb250ZW50cygpKS5hcHBlbmQoZigiPHNwYW4vPiIpLmFkZENsYXNzKGQuc1NvcnRJY29uKyIgIitjLnNTb3J0aW5nQ2xhc3NKVUkpKS5hcHBlbmRUbyhiKTtmKGEublRhYmxlKS5vbigib3JkZXIuZHQuRFQiLGZ1bmN0aW9uKGUsZixnLGspe2E9PT1mJiYoZT1jLmlkeCxiLnJlbW92ZUNsYXNzKGQuc1NvcnRBc2MrIiAiK2Quc1NvcnREZXNjKS5hZGRDbGFzcygiYXNjIj09a1tlXT9kLnNTb3J0QXNjOiJkZXNjIj09a1tlXT9kLnNTb3J0RGVzYzpjLnNTb3J0aW5nQ2xhc3MpLGIuZmluZCgic3Bhbi4iK2Quc1NvcnRJY29uKS5yZW1vdmVDbGFzcyhkLnNTb3J0SlVJQXNjKyIgIitkLnNTb3J0SlVJRGVzYysiICIrZC5zU29ydEpVSSsiICIrZC5zU29ydEpVSUFzY0FsbG93ZWQrIiAiK2Quc1NvcnRKVUlEZXNjQWxsb3dlZCkuYWRkQ2xhc3MoImFzYyI9PQprW2VdP2Quc1NvcnRKVUlBc2M6ImRlc2MiPT1rW2VdP2Quc1NvcnRKVUlEZXNjOmMuc1NvcnRpbmdDbGFzc0pVSSkpfSl9fX0pO3ZhciBpYj1mdW5jdGlvbihhKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBhP2EucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IikucmVwbGFjZSgvIi9nLCImcXVvdDsiKTphfTtxLnJlbmRlcj17bnVtYmVyOmZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJue2Rpc3BsYXk6ZnVuY3Rpb24oZil7aWYoIm51bWJlciIhPT10eXBlb2YgZiYmInN0cmluZyIhPT10eXBlb2YgZilyZXR1cm4gZjt2YXIgZz0wPmY/Ii0iOiIiLGg9cGFyc2VGbG9hdChmKTtpZihpc05hTihoKSlyZXR1cm4gaWIoZik7aD1oLnRvRml4ZWQoYyk7Zj1NYXRoLmFicyhoKTtoPXBhcnNlSW50KGYsMTApO2Y9Yz9iKyhmLWgpLnRvRml4ZWQoYykuc3Vic3RyaW5nKDIpOiIiO3JldHVybiBnKyhkfHwiIikraC50b1N0cmluZygpLnJlcGxhY2UoL1xCKD89KFxkezN9KSsoPyFcZCkpL2csCmEpK2YrKGV8fCIiKX19fSx0ZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2Rpc3BsYXk6aWIsZmlsdGVyOmlifX19O2YuZXh0ZW5kKHEuZXh0LmludGVybmFsLHtfZm5FeHRlcm5BcGlGdW5jOlFiLF9mbkJ1aWxkQWpheDp2YSxfZm5BamF4VXBkYXRlOnFiLF9mbkFqYXhQYXJhbWV0ZXJzOnpiLF9mbkFqYXhVcGRhdGVEcmF3OkFiLF9mbkFqYXhEYXRhU3JjOndhLF9mbkFkZENvbHVtbjpJYSxfZm5Db2x1bW5PcHRpb25zOm1hLF9mbkFkanVzdENvbHVtblNpemluZzphYSxfZm5WaXNpYmxlVG9Db2x1bW5JbmRleDpiYSxfZm5Db2x1bW5JbmRleFRvVmlzaWJsZTpjYSxfZm5WaXNibGVDb2x1bW5zOlcsX2ZuR2V0Q29sdW1uczpvYSxfZm5Db2x1bW5UeXBlczpLYSxfZm5BcHBseUNvbHVtbkRlZnM6bmIsX2ZuSHVuZ2FyaWFuTWFwOkgsX2ZuQ2FtZWxUb0h1bmdhcmlhbjpMLF9mbkxhbmd1YWdlQ29tcGF0OkdhLF9mbkJyb3dzZXJEZXRlY3Q6bGIsX2ZuQWRkRGF0YTpSLF9mbkFkZFRyOnBhLF9mbk5vZGVUb0RhdGFJbmRleDpmdW5jdGlvbihhLApiKXtyZXR1cm4gYi5fRFRfUm93SW5kZXghPT1wP2IuX0RUX1Jvd0luZGV4Om51bGx9LF9mbk5vZGVUb0NvbHVtbkluZGV4OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5pbkFycmF5KGMsYS5hb0RhdGFbYl0uYW5DZWxscyl9LF9mbkdldENlbGxEYXRhOkksX2ZuU2V0Q2VsbERhdGE6b2IsX2ZuU3BsaXRPYmpOb3RhdGlvbjpOYSxfZm5HZXRPYmplY3REYXRhRm46VSxfZm5TZXRPYmplY3REYXRhRm46USxfZm5HZXREYXRhTWFzdGVyOk9hLF9mbkNsZWFyVGFibGU6cWEsX2ZuRGVsZXRlSW5kZXg6cmEsX2ZuSW52YWxpZGF0ZTplYSxfZm5HZXRSb3dFbGVtZW50czpNYSxfZm5DcmVhdGVUcjpMYSxfZm5CdWlsZEhlYWQ6cGIsX2ZuRHJhd0hlYWQ6aGEsX2ZuRHJhdzpTLF9mblJlRHJhdzpWLF9mbkFkZE9wdGlvbnNIdG1sOnNiLF9mbkRldGVjdEhlYWRlcjpmYSxfZm5HZXRVbmlxdWVUaHM6dWEsX2ZuRmVhdHVyZUh0bWxGaWx0ZXI6dWIsX2ZuRmlsdGVyQ29tcGxldGU6aWEsX2ZuRmlsdGVyQ3VzdG9tOkRiLApfZm5GaWx0ZXJDb2x1bW46Q2IsX2ZuRmlsdGVyOkJiLF9mbkZpbHRlckNyZWF0ZVNlYXJjaDpUYSxfZm5Fc2NhcGVSZWdleDpVYSxfZm5GaWx0ZXJEYXRhOkViLF9mbkZlYXR1cmVIdG1sSW5mbzp4YixfZm5VcGRhdGVJbmZvOkhiLF9mbkluZm9NYWNyb3M6SWIsX2ZuSW5pdGlhbGlzZTpqYSxfZm5Jbml0Q29tcGxldGU6eGEsX2ZuTGVuZ3RoQ2hhbmdlOlZhLF9mbkZlYXR1cmVIdG1sTGVuZ3RoOnRiLF9mbkZlYXR1cmVIdG1sUGFnaW5hdGU6eWIsX2ZuUGFnZUNoYW5nZTpYYSxfZm5GZWF0dXJlSHRtbFByb2Nlc3Npbmc6dmIsX2ZuUHJvY2Vzc2luZ0Rpc3BsYXk6SyxfZm5GZWF0dXJlSHRtbFRhYmxlOndiLF9mblNjcm9sbERyYXc6bmEsX2ZuQXBwbHlUb0NoaWxkcmVuOk4sX2ZuQ2FsY3VsYXRlQ29sdW1uV2lkdGhzOkphLF9mblRocm90dGxlOlNhLF9mbkNvbnZlcnRUb1dpZHRoOkpiLF9mbkdldFdpZGVzdE5vZGU6S2IsX2ZuR2V0TWF4TGVuU3RyaW5nOkxiLF9mblN0cmluZ1RvQ3NzOkIsCl9mblNvcnRGbGF0dGVuOlksX2ZuU29ydDpyYixfZm5Tb3J0QXJpYTpOYixfZm5Tb3J0TGlzdGVuZXI6WmEsX2ZuU29ydEF0dGFjaExpc3RlbmVyOlFhLF9mblNvcnRpbmdDbGFzc2VzOkFhLF9mblNvcnREYXRhOk1iLF9mblNhdmVTdGF0ZTpCYSxfZm5Mb2FkU3RhdGU6T2IsX2ZuU2V0dGluZ3NGcm9tTm9kZTpDYSxfZm5Mb2c6TyxfZm5NYXA6TSxfZm5CaW5kQWN0aW9uOiRhLF9mbkNhbGxiYWNrUmVnOkUsX2ZuQ2FsbGJhY2tGaXJlOkEsX2ZuTGVuZ3RoT3ZlcmZsb3c6V2EsX2ZuUmVuZGVyZXI6UmEsX2ZuRGF0YVNvdXJjZTpELF9mblJvd0F0dHJpYnV0ZXM6UGEsX2ZuRXh0ZW5kOmFiLF9mbkNhbGN1bGF0ZUVuZDpmdW5jdGlvbigpe319KTtmLmZuLmRhdGFUYWJsZT1xO3EuJD1mO2YuZm4uZGF0YVRhYmxlU2V0dGluZ3M9cS5zZXR0aW5ncztmLmZuLmRhdGFUYWJsZUV4dD1xLmV4dDtmLmZuLkRhdGFUYWJsZT1mdW5jdGlvbihhKXtyZXR1cm4gZih0aGlzKS5kYXRhVGFibGUoYSkuYXBpKCl9OwpmLmVhY2gocSxmdW5jdGlvbihhLGIpe2YuZm4uRGF0YVRhYmxlW2FdPWJ9KTtyZXR1cm4gZi5mbi5kYXRhVGFibGV9KTsK"></script>
<script src="data:application/javascript;base64,LyohCgpKU1ppcCAtIEEgSmF2YXNjcmlwdCBjbGFzcyBmb3IgZ2VuZXJhdGluZyBhbmQgcmVhZGluZyB6aXAgZmlsZXMKPGh0dHA6Ly9zdHVhcnRrLmNvbS9qc3ppcD4KCihjKSAyMDA5LTIwMTQgU3R1YXJ0IEtuaWdodGxleSA8c3R1YXJ0IFthdF0gc3R1YXJ0ay5jb20+CkR1YWwgbGljZW5jZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIG9yIEdQTHYzLiBTZWUgaHR0cHM6Ly9yYXcuZ2l0aHViLmNvbS9TdHVrL2pzemlwL21hc3Rlci9MSUNFTlNFLm1hcmtkb3duLgoKSlNaaXAgdXNlcyB0aGUgbGlicmFyeSBwYWtvIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSA6Cmh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvcGFrby9ibG9iL21hc3Rlci9MSUNFTlNFCiovCiFmdW5jdGlvbihhKXtpZigib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWEoKTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLGEpO2Vsc2V7dmFyIGI7InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/Yj13aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Yj1nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiYoYj1zZWxmKSxiLkpTWmlwPWEoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGEoYixjLGQpe2Z1bmN0aW9uIGUoZyxoKXtpZighY1tnXSl7aWYoIWJbZ10pe3ZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFoJiZpKXJldHVybiBpKGcsITApO2lmKGYpcmV0dXJuIGYoZywhMCk7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrZysiJyIpfXZhciBqPWNbZ109e2V4cG9ydHM6e319O2JbZ11bMF0uY2FsbChqLmV4cG9ydHMsZnVuY3Rpb24oYSl7dmFyIGM9YltnXVsxXVthXTtyZXR1cm4gZShjP2M6YSl9LGosai5leHBvcnRzLGEsYixjLGQpfXJldHVybiBjW2ddLmV4cG9ydHN9Zm9yKHZhciBmPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGc9MDtnPGQubGVuZ3RoO2crKyllKGRbZ10pO3JldHVybiBlfSh7MTpbZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgZD0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0iO2MuZW5jb2RlPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYixjLGUsZixnLGgsaSxqPSIiLGs9MDtrPGEubGVuZ3RoOyliPWEuY2hhckNvZGVBdChrKyspLGM9YS5jaGFyQ29kZUF0KGsrKyksZT1hLmNoYXJDb2RlQXQoaysrKSxmPWI+PjIsZz0oMyZiKTw8NHxjPj40LGg9KDE1JmMpPDwyfGU+PjYsaT02MyZlLGlzTmFOKGMpP2g9aT02NDppc05hTihlKSYmKGk9NjQpLGo9aitkLmNoYXJBdChmKStkLmNoYXJBdChnKStkLmNoYXJBdChoKStkLmNoYXJBdChpKTtyZXR1cm4gan0sYy5kZWNvZGU9ZnVuY3Rpb24oYSl7dmFyIGIsYyxlLGYsZyxoLGksaj0iIixrPTA7Zm9yKGE9YS5yZXBsYWNlKC9bXkEtWmEtejAtOVwrXC9cPV0vZywiIik7azxhLmxlbmd0aDspZj1kLmluZGV4T2YoYS5jaGFyQXQoaysrKSksZz1kLmluZGV4T2YoYS5jaGFyQXQoaysrKSksaD1kLmluZGV4T2YoYS5jaGFyQXQoaysrKSksaT1kLmluZGV4T2YoYS5jaGFyQXQoaysrKSksYj1mPDwyfGc+PjQsYz0oMTUmZyk8PDR8aD4+MixlPSgzJmgpPDw2fGksais9U3RyaW5nLmZyb21DaGFyQ29kZShiKSw2NCE9aCYmKGorPVN0cmluZy5mcm9tQ2hhckNvZGUoYykpLDY0IT1pJiYoais9U3RyaW5nLmZyb21DaGFyQ29kZShlKSk7cmV0dXJuIGp9fSx7fV0sMjpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYygpe3RoaXMuY29tcHJlc3NlZFNpemU9MCx0aGlzLnVuY29tcHJlc3NlZFNpemU9MCx0aGlzLmNyYzMyPTAsdGhpcy5jb21wcmVzc2lvbk1ldGhvZD1udWxsLHRoaXMuY29tcHJlc3NlZENvbnRlbnQ9bnVsbH1jLnByb3RvdHlwZT17Z2V0Q29udGVudDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxnZXRDb21wcmVzc2VkQ29udGVudDpmdW5jdGlvbigpe3JldHVybiBudWxsfX0sYi5leHBvcnRzPWN9LHt9XSwzOltmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2MuU1RPUkU9e21hZ2ljOiJceDAwXHgwMCIsY29tcHJlc3M6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LHVuY29tcHJlc3M6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LGNvbXByZXNzSW5wdXRUeXBlOm51bGwsdW5jb21wcmVzc0lucHV0VHlwZTpudWxsfSxjLkRFRkxBVEU9YSgiLi9mbGF0ZSIpfSx7Ii4vZmxhdGUiOjh9XSw0OltmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz1hKCIuL3V0aWxzIiksZD1bMCwxOTk2OTU5ODk0LDM5OTM5MTk3ODgsMjU2NzUyNDc5NCwxMjQ2MzQxMzcsMTg4NjA1NzYxNSwzOTE1NjIxNjg1LDI2NTczOTIwMzUsMjQ5MjY4Mjc0LDIwNDQ1MDgzMjQsMzc3MjExNTIzMCwyNTQ3MTc3ODY0LDE2Mjk0MTk5NSwyMTI1NTYxMDIxLDM4ODc2MDcwNDcsMjQyODQ0NDA0OSw0OTg1MzY1NDgsMTc4OTkyNzY2Niw0MDg5MDE2NjQ4LDIyMjcwNjEyMTQsNDUwNTQ4ODYxLDE4NDMyNTg2MDMsNDEwNzU4MDc1MywyMjExNjc3NjM5LDMyNTg4Mzk5MCwxNjg0Nzc3MTUyLDQyNTExMjIwNDIsMjMyMTkyNjYzNiwzMzU2MzM0ODcsMTY2MTM2NTQ2NSw0MTk1MzAyNzU1LDIzNjYxMTUzMTcsOTk3MDczMDk2LDEyODE5NTM4ODYsMzU3OTg1NTMzMiwyNzI0Njg4MjQyLDEwMDY4ODgxNDUsMTI1ODYwNzY4NywzNTI0MTAxNjI5LDI3Njg5NDI0NDMsOTAxMDk3NzIyLDExMTkwMDA2ODQsMzY4NjUxNzIwNiwyODk4MDY1NzI4LDg1MzA0NDQ1MSwxMTcyMjY2MTAxLDM3MDUwMTU3NTksMjg4MjYxNjY2NSw2NTE3Njc5ODAsMTM3MzUwMzU0NiwzMzY5NTU0MzA0LDMyMTgxMDQ1OTgsNTY1NTA3MjUzLDE0NTQ2MjE3MzEsMzQ4NTExMTcwNSwzMDk5NDM2MzAzLDY3MTI2Njk3NCwxNTk0MTk4MDI0LDMzMjI3MzA5MzAsMjk3MDM0NzgxMiw3OTU4MzU1MjcsMTQ4MzIzMDIyNSwzMjQ0MzY3Mjc1LDMwNjAxNDk1NjUsMTk5NDE0NjE5MiwzMTE1ODUzNCwyNTYzOTA3NzcyLDQwMjM3MTc5MzAsMTkwNzQ1OTQ2NSwxMTI2MzcyMTUsMjY4MDE1MzI1MywzOTA0NDI3MDU5LDIwMTM3NzYyOTAsMjUxNzIyMDM2LDI1MTcyMTUzNzQsMzc3NTgzMDA0MCwyMTM3NjU2NzYzLDE0MTM3NjgxMywyNDM5Mjc3NzE5LDM4NjUyNzEyOTcsMTgwMjE5NTQ0NCw0NzY4NjQ4NjYsMjIzODAwMTM2OCw0MDY2NTA4ODc4LDE4MTIzNzA5MjUsNDUzMDkyNzMxLDIxODE2MjUwMjUsNDExMTQ1MTIyMywxNzA2MDg4OTAyLDMxNDA0MjcwNCwyMzQ0NTMyMjAyLDQyNDAwMTc1MzIsMTY1ODY1ODI3MSwzNjY2MTk5NzcsMjM2MjY3MDMyMyw0MjI0OTk0NDA1LDEzMDM1MzU5NjAsOTg0OTYxNDg2LDI3NDcwMDcwOTIsMzU2OTAzNzUzOCwxMjU2MTcwODE3LDEwMzc2MDQzMTEsMjc2NTIxMDczMywzNTU0MDc5OTk1LDExMzEwMTQ1MDYsODc5Njc5OTk2LDI5MDkyNDM0NjIsMzY2Mzc3MTg1NiwxMTQxMTI0NDY3LDg1NTg0MjI3NywyODUyODAxNjMxLDM3MDg2NDg2NDksMTM0MjUzMzk0OCw2NTQ0NTkzMDYsMzE4ODM5NjA0OCwzMzczMDE1MTc0LDE0NjY0Nzk5MDksNTQ0MTc5NjM1LDMxMTA1MjM5MTMsMzQ2MjUyMjAxNSwxNTkxNjcxMDU0LDcwMjEzODc3NiwyOTY2NDYwNDUwLDMzNTI3OTk0MTIsMTUwNDkxODgwNyw3ODM1NTE4NzMsMzA4MjY0MDQ0MywzMjMzNDQyOTg5LDM5ODgyOTIzODQsMjU5NjI1NDY0Niw2MjMxNzA2OCwxOTU3ODEwODQyLDM5Mzk4NDU5NDUsMjY0NzgxNjExMSw4MTQ3MDk5NywxOTQzODAzNTIzLDM4MTQ5MTg5MzAsMjQ4OTU5NjgwNCwyMjUyNzQ0MzAsMjA1Mzc5MDM3NiwzODI2MTc1NzU1LDI0NjY5MDYwMTMsMTY3ODE2NzQzLDIwOTc2NTEzNzcsNDAyNzU1MjU4MCwyMjY1NDkwMzg2LDUwMzQ0NDA3MiwxNzYyMDUwODE0LDQxNTA0MTcyNDUsMjE1NDEyOTM1NSw0MjY1MjIyMjUsMTg1MjUwNzg3OSw0Mjc1MzEzNTI2LDIzMTIzMTc5MjAsMjgyNzUzNjI2LDE3NDI1NTU4NTIsNDE4OTcwODE0MywyMzk0ODc3OTQ1LDM5NzkxNzc2MywxNjIyMTgzNjM3LDM2MDQzOTA4ODgsMjcxNDg2NjU1OCw5NTM3Mjk3MzIsMTM0MDA3NjYyNiwzNTE4NzE5OTg1LDI3OTczNjA5OTksMTA2ODgyODM4MSwxMjE5NjM4ODU5LDM2MjQ3NDE4NTAsMjkzNjY3NTE0OCw5MDYxODU0NjIsMTA5MDgxMjUxMiwzNzQ3NjcyMDAzLDI4MjUzNzk2NjksODI5MzI5MTM1LDExODEzMzUxNjEsMzQxMjE3NzgwNCwzMTYwODM0ODQyLDYyODA4NTQwOCwxMzgyNjA1MzY2LDM0MjMzNjkxMDksMzEzODA3ODQ2Nyw1NzA1NjIyMzMsMTQyNjQwMDgxNSwzMzE3MzE2NTQyLDI5OTg3MzM2MDgsNzMzMjM5OTU0LDE1NTUyNjE5NTYsMzI2ODkzNTU5MSwzMDUwMzYwNjI1LDc1MjQ1OTQwMywxNTQxMzIwMjIxLDI2MDcwNzE5MjAsMzk2NTk3MzAzMCwxOTY5OTIyOTcyLDQwNzM1NDk4LDI2MTc4MzcyMjUsMzk0MzU3NzE1MSwxOTEzMDg3ODc3LDgzOTA4MzcxLDI1MTIzNDE2MzQsMzgwMzc0MDY5MiwyMDc1MjA4NjIyLDIxMzI2MTExMiwyNDYzMjcyNjAzLDM4NTU5OTAyODUsMjA5NDg1NDA3MSwxOTg5NTg4ODEsMjI2MjAyOTAxMiw0MDU3MjYwNjEwLDE3NTkzNTk5OTIsNTM0NDE0MTkwLDIxNzY3MTg1NDEsNDEzOTMyOTExNSwxODczODM2MDAxLDQxNDY2NDU2NywyMjgyMjQ4OTM0LDQyNzkyMDAzNjgsMTcxMTY4NDU1NCwyODUyODExMTYsMjQwNTgwMTcyNyw0MTY3MjE2NzQ1LDE2MzQ0Njc3OTUsMzc2MjI5NzAxLDI2ODUwNjc4OTYsMzYwODAwNzQwNiwxMzA4OTE4NjEyLDk1NjU0MzkzOCwyODA4NTU1MTA1LDM0OTU5NTgyNjMsMTIzMTYzNjMwMSwxMDQ3NDI3MDM1LDI5MzI5NTk4MTgsMzY1NDcwMzgzNiwxMDg4MzU5MjcwLDkzNjkxOGUzLDI4NDc3MTQ4OTksMzczNjgzNzgyOSwxMjAyOTAwODYzLDgxNzIzMzg5NywzMTgzMzQyMTA4LDM0MDEyMzcxMzAsMTQwNDI3NzU1Miw2MTU4MTgxNTAsMzEzNDIwNzQ5MywzNDUzNDIxMjAzLDE0MjM4NTc0NDksNjAxNDUwNDMxLDMwMDk4Mzc2MTQsMzI5NDcxMDQ1NiwxNTY3MTAzNzQ2LDcxMTkyODcyNCwzMDIwNjY4NDcxLDMyNzIzODAwNjUsMTUxMDMzNDIzNSw3NTUxNjcxMTddO2IuZXhwb3J0cz1mdW5jdGlvbihhLGIpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYXx8IWEubGVuZ3RoKXJldHVybiAwO3ZhciBlPSJzdHJpbmciIT09Yy5nZXRUeXBlT2YoYSk7InVuZGVmaW5lZCI9PXR5cGVvZiBiJiYoYj0wKTt2YXIgZj0wLGc9MCxoPTA7Yj0tMV5iO2Zvcih2YXIgaT0wLGo9YS5sZW5ndGg7aj5pO2krKyloPWU/YVtpXTphLmNoYXJDb2RlQXQoaSksZz0yNTUmKGJeaCksZj1kW2ddLGI9Yj4+PjheZjtyZXR1cm4tMV5ifX0seyIuL3V0aWxzIjoyMX1dLDU6W2Z1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGMoKXt0aGlzLmRhdGE9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMuaW5kZXg9MH12YXIgZD1hKCIuL3V0aWxzIik7Yy5wcm90b3R5cGU9e2NoZWNrT2Zmc2V0OmZ1bmN0aW9uKGEpe3RoaXMuY2hlY2tJbmRleCh0aGlzLmluZGV4K2EpfSxjaGVja0luZGV4OmZ1bmN0aW9uKGEpe2lmKHRoaXMubGVuZ3RoPGF8fDA+YSl0aHJvdyBuZXcgRXJyb3IoIkVuZCBvZiBkYXRhIHJlYWNoZWQgKGRhdGEgbGVuZ3RoID0gIit0aGlzLmxlbmd0aCsiLCBhc2tlZCBpbmRleCA9ICIrYSsiKS4gQ29ycnVwdGVkIHppcCA/Iil9LHNldEluZGV4OmZ1bmN0aW9uKGEpe3RoaXMuY2hlY2tJbmRleChhKSx0aGlzLmluZGV4PWF9LHNraXA6ZnVuY3Rpb24oYSl7dGhpcy5zZXRJbmRleCh0aGlzLmluZGV4K2EpfSxieXRlQXQ6ZnVuY3Rpb24oKXt9LHJlYWRJbnQ6ZnVuY3Rpb24oYSl7dmFyIGIsYz0wO2Zvcih0aGlzLmNoZWNrT2Zmc2V0KGEpLGI9dGhpcy5pbmRleCthLTE7Yj49dGhpcy5pbmRleDtiLS0pYz0oYzw8OCkrdGhpcy5ieXRlQXQoYik7cmV0dXJuIHRoaXMuaW5kZXgrPWEsY30scmVhZFN0cmluZzpmdW5jdGlvbihhKXtyZXR1cm4gZC50cmFuc2Zvcm1Ubygic3RyaW5nIix0aGlzLnJlYWREYXRhKGEpKX0scmVhZERhdGE6ZnVuY3Rpb24oKXt9LGxhc3RJbmRleE9mU2lnbmF0dXJlOmZ1bmN0aW9uKCl7fSxyZWFkRGF0ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMucmVhZEludCg0KTtyZXR1cm4gbmV3IERhdGUoKGE+PjI1JjEyNykrMTk4MCwoYT4+MjEmMTUpLTEsYT4+MTYmMzEsYT4+MTEmMzEsYT4+NSY2MywoMzEmYSk8PDEpfX0sYi5leHBvcnRzPWN9LHsiLi91dGlscyI6MjF9XSw2OltmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2MuYmFzZTY0PSExLGMuYmluYXJ5PSExLGMuZGlyPSExLGMuY3JlYXRlRm9sZGVycz0hMSxjLmRhdGU9bnVsbCxjLmNvbXByZXNzaW9uPW51bGwsYy5jb21wcmVzc2lvbk9wdGlvbnM9bnVsbCxjLmNvbW1lbnQ9bnVsbCxjLnVuaXhQZXJtaXNzaW9ucz1udWxsLGMuZG9zUGVybWlzc2lvbnM9bnVsbH0se31dLDc6W2Z1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7dmFyIGQ9YSgiLi91dGlscyIpO2Muc3RyaW5nMmJpbmFyeT1mdW5jdGlvbihhKXtyZXR1cm4gZC5zdHJpbmcyYmluYXJ5KGEpfSxjLnN0cmluZzJVaW50OEFycmF5PWZ1bmN0aW9uKGEpe3JldHVybiBkLnRyYW5zZm9ybVRvKCJ1aW50OGFycmF5IixhKX0sYy51aW50OEFycmF5MlN0cmluZz1mdW5jdGlvbihhKXtyZXR1cm4gZC50cmFuc2Zvcm1Ubygic3RyaW5nIixhKX0sYy5zdHJpbmcyQmxvYj1mdW5jdGlvbihhKXt2YXIgYj1kLnRyYW5zZm9ybVRvKCJhcnJheWJ1ZmZlciIsYSk7cmV0dXJuIGQuYXJyYXlCdWZmZXIyQmxvYihiKX0sYy5hcnJheUJ1ZmZlcjJCbG9iPWZ1bmN0aW9uKGEpe3JldHVybiBkLmFycmF5QnVmZmVyMkJsb2IoYSl9LGMudHJhbnNmb3JtVG89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZC50cmFuc2Zvcm1UbyhhLGIpfSxjLmdldFR5cGVPZj1mdW5jdGlvbihhKXtyZXR1cm4gZC5nZXRUeXBlT2YoYSl9LGMuY2hlY2tTdXBwb3J0PWZ1bmN0aW9uKGEpe3JldHVybiBkLmNoZWNrU3VwcG9ydChhKX0sYy5NQVhfVkFMVUVfMTZCSVRTPWQuTUFYX1ZBTFVFXzE2QklUUyxjLk1BWF9WQUxVRV8zMkJJVFM9ZC5NQVhfVkFMVUVfMzJCSVRTLGMucHJldHR5PWZ1bmN0aW9uKGEpe3JldHVybiBkLnByZXR0eShhKX0sYy5maW5kQ29tcHJlc3Npb249ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZmluZENvbXByZXNzaW9uKGEpfSxjLmlzUmVnRXhwPWZ1bmN0aW9uKGEpe3JldHVybiBkLmlzUmVnRXhwKGEpfX0seyIuL3V0aWxzIjoyMX1dLDg6W2Z1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7dmFyIGQ9InVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5JiYidW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQxNkFycmF5JiYidW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQzMkFycmF5LGU9YSgicGFrbyIpO2MudW5jb21wcmVzc0lucHV0VHlwZT1kPyJ1aW50OGFycmF5IjoiYXJyYXkiLGMuY29tcHJlc3NJbnB1dFR5cGU9ZD8idWludDhhcnJheSI6ImFycmF5IixjLm1hZ2ljPSJcYlx4MDAiLGMuY29tcHJlc3M9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZS5kZWZsYXRlUmF3KGEse2xldmVsOmIubGV2ZWx8fC0xfSl9LGMudW5jb21wcmVzcz1mdW5jdGlvbihhKXtyZXR1cm4gZS5pbmZsYXRlUmF3KGEpfX0se3Bha286MjR9XSw5OltmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKGEsYil7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBjPyh0aGlzLmZpbGVzPXt9LHRoaXMuY29tbWVudD1udWxsLHRoaXMucm9vdD0iIixhJiZ0aGlzLmxvYWQoYSxiKSx2b2lkKHRoaXMuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgYztmb3IodmFyIGIgaW4gdGhpcykiZnVuY3Rpb24iIT10eXBlb2YgdGhpc1tiXSYmKGFbYl09dGhpc1tiXSk7cmV0dXJuIGF9KSk6bmV3IGMoYSxiKX12YXIgZD1hKCIuL2Jhc2U2NCIpO2MucHJvdG90eXBlPWEoIi4vb2JqZWN0IiksYy5wcm90b3R5cGUubG9hZD1hKCIuL2xvYWQiKSxjLnN1cHBvcnQ9YSgiLi9zdXBwb3J0IiksYy5kZWZhdWx0cz1hKCIuL2RlZmF1bHRzIiksYy51dGlscz1hKCIuL2RlcHJlY2F0ZWRQdWJsaWNVdGlscyIpLGMuYmFzZTY0PXtlbmNvZGU6ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZW5jb2RlKGEpfSxkZWNvZGU6ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZGVjb2RlKGEpfX0sYy5jb21wcmVzc2lvbnM9YSgiLi9jb21wcmVzc2lvbnMiKSxiLmV4cG9ydHM9Y30seyIuL2Jhc2U2NCI6MSwiLi9jb21wcmVzc2lvbnMiOjMsIi4vZGVmYXVsdHMiOjYsIi4vZGVwcmVjYXRlZFB1YmxpY1V0aWxzIjo3LCIuL2xvYWQiOjEwLCIuL29iamVjdCI6MTMsIi4vc3VwcG9ydCI6MTd9XSwxMDpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7dmFyIGM9YSgiLi9iYXNlNjQiKSxkPWEoIi4vemlwRW50cmllcyIpO2IuZXhwb3J0cz1mdW5jdGlvbihhLGIpe3ZhciBlLGYsZyxoO2ZvcihiPWJ8fHt9LGIuYmFzZTY0JiYoYT1jLmRlY29kZShhKSksZj1uZXcgZChhLGIpLGU9Zi5maWxlcyxnPTA7ZzxlLmxlbmd0aDtnKyspaD1lW2ddLHRoaXMuZmlsZShoLmZpbGVOYW1lLGguZGVjb21wcmVzc2VkLHtiaW5hcnk6ITAsb3B0aW1pemVkQmluYXJ5U3RyaW5nOiEwLGRhdGU6aC5kYXRlLGRpcjpoLmRpcixjb21tZW50OmguZmlsZUNvbW1lbnQubGVuZ3RoP2guZmlsZUNvbW1lbnQ6bnVsbCx1bml4UGVybWlzc2lvbnM6aC51bml4UGVybWlzc2lvbnMsZG9zUGVybWlzc2lvbnM6aC5kb3NQZXJtaXNzaW9ucyxjcmVhdGVGb2xkZXJzOmIuY3JlYXRlRm9sZGVyc30pO3JldHVybiBmLnppcENvbW1lbnQubGVuZ3RoJiYodGhpcy5jb21tZW50PWYuemlwQ29tbWVudCksdGhpc319LHsiLi9iYXNlNjQiOjEsIi4vemlwRW50cmllcyI6MjJ9XSwxMTpbZnVuY3Rpb24oYSxiKXsoZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2IuZXhwb3J0cz1mdW5jdGlvbihiLGMpe3JldHVybiBuZXcgYShiLGMpfSxiLmV4cG9ydHMudGVzdD1mdW5jdGlvbihiKXtyZXR1cm4gYS5pc0J1ZmZlcihiKX19KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBCdWZmZXI/QnVmZmVyOnZvaWQgMCl9LHt9XSwxMjpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYyhhKXt0aGlzLmRhdGE9YSx0aGlzLmxlbmd0aD10aGlzLmRhdGEubGVuZ3RoLHRoaXMuaW5kZXg9MH12YXIgZD1hKCIuL3VpbnQ4QXJyYXlSZWFkZXIiKTtjLnByb3RvdHlwZT1uZXcgZCxjLnByb3RvdHlwZS5yZWFkRGF0YT1mdW5jdGlvbihhKXt0aGlzLmNoZWNrT2Zmc2V0KGEpO3ZhciBiPXRoaXMuZGF0YS5zbGljZSh0aGlzLmluZGV4LHRoaXMuaW5kZXgrYSk7cmV0dXJuIHRoaXMuaW5kZXgrPWEsYn0sYi5leHBvcnRzPWN9LHsiLi91aW50OEFycmF5UmVhZGVyIjoxOH1dLDEzOltmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz1hKCIuL3N1cHBvcnQiKSxkPWEoIi4vdXRpbHMiKSxlPWEoIi4vY3JjMzIiKSxmPWEoIi4vc2lnbmF0dXJlIiksZz1hKCIuL2RlZmF1bHRzIiksaD1hKCIuL2Jhc2U2NCIpLGk9YSgiLi9jb21wcmVzc2lvbnMiKSxqPWEoIi4vY29tcHJlc3NlZE9iamVjdCIpLGs9YSgiLi9ub2RlQnVmZmVyIiksbD1hKCIuL3V0ZjgiKSxtPWEoIi4vc3RyaW5nV3JpdGVyIiksbj1hKCIuL3VpbnQ4QXJyYXlXcml0ZXIiKSxvPWZ1bmN0aW9uKGEpe2lmKGEuX2RhdGEgaW5zdGFuY2VvZiBqJiYoYS5fZGF0YT1hLl9kYXRhLmdldENvbnRlbnQoKSxhLm9wdGlvbnMuYmluYXJ5PSEwLGEub3B0aW9ucy5iYXNlNjQ9ITEsInVpbnQ4YXJyYXkiPT09ZC5nZXRUeXBlT2YoYS5fZGF0YSkpKXt2YXIgYj1hLl9kYXRhO2EuX2RhdGE9bmV3IFVpbnQ4QXJyYXkoYi5sZW5ndGgpLDAhPT1iLmxlbmd0aCYmYS5fZGF0YS5zZXQoYiwwKX1yZXR1cm4gYS5fZGF0YX0scD1mdW5jdGlvbihhKXt2YXIgYj1vKGEpLGU9ZC5nZXRUeXBlT2YoYik7cmV0dXJuInN0cmluZyI9PT1lPyFhLm9wdGlvbnMuYmluYXJ5JiZjLm5vZGVidWZmZXI/ayhiLCJ1dGYtOCIpOmEuYXNCaW5hcnkoKTpifSxxPWZ1bmN0aW9uKGEpe3ZhciBiPW8odGhpcyk7cmV0dXJuIG51bGw9PT1ifHwidW5kZWZpbmVkIj09dHlwZW9mIGI/IiI6KHRoaXMub3B0aW9ucy5iYXNlNjQmJihiPWguZGVjb2RlKGIpKSxiPWEmJnRoaXMub3B0aW9ucy5iaW5hcnk/RC51dGY4ZGVjb2RlKGIpOmQudHJhbnNmb3JtVG8oInN0cmluZyIsYiksYXx8dGhpcy5vcHRpb25zLmJpbmFyeXx8KGI9ZC50cmFuc2Zvcm1Ubygic3RyaW5nIixELnV0ZjhlbmNvZGUoYikpKSxiKX0scj1mdW5jdGlvbihhLGIsYyl7dGhpcy5uYW1lPWEsdGhpcy5kaXI9Yy5kaXIsdGhpcy5kYXRlPWMuZGF0ZSx0aGlzLmNvbW1lbnQ9Yy5jb21tZW50LHRoaXMudW5peFBlcm1pc3Npb25zPWMudW5peFBlcm1pc3Npb25zLHRoaXMuZG9zUGVybWlzc2lvbnM9Yy5kb3NQZXJtaXNzaW9ucyx0aGlzLl9kYXRhPWIsdGhpcy5vcHRpb25zPWMsdGhpcy5faW5pdGlhbE1ldGFkYXRhPXtkaXI6Yy5kaXIsZGF0ZTpjLmRhdGV9fTtyLnByb3RvdHlwZT17YXNUZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHEuY2FsbCh0aGlzLCEwKX0sYXNCaW5hcnk6ZnVuY3Rpb24oKXtyZXR1cm4gcS5jYWxsKHRoaXMsITEpfSxhc05vZGVCdWZmZXI6ZnVuY3Rpb24oKXt2YXIgYT1wKHRoaXMpO3JldHVybiBkLnRyYW5zZm9ybVRvKCJub2RlYnVmZmVyIixhKX0sYXNVaW50OEFycmF5OmZ1bmN0aW9uKCl7dmFyIGE9cCh0aGlzKTtyZXR1cm4gZC50cmFuc2Zvcm1UbygidWludDhhcnJheSIsYSl9LGFzQXJyYXlCdWZmZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hc1VpbnQ4QXJyYXkoKS5idWZmZXJ9fTt2YXIgcz1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9IiI7Zm9yKGM9MDtiPmM7YysrKWQrPVN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JmEpLGE+Pj49ODtyZXR1cm4gZH0sdD1mdW5jdGlvbigpe3ZhciBhLGIsYz17fTtmb3IoYT0wO2E8YXJndW1lbnRzLmxlbmd0aDthKyspZm9yKGIgaW4gYXJndW1lbnRzW2FdKWFyZ3VtZW50c1thXS5oYXNPd25Qcm9wZXJ0eShiKSYmInVuZGVmaW5lZCI9PXR5cGVvZiBjW2JdJiYoY1tiXT1hcmd1bWVudHNbYV1bYl0pO3JldHVybiBjfSx1PWZ1bmN0aW9uKGEpe3JldHVybiBhPWF8fHt9LGEuYmFzZTY0IT09ITB8fG51bGwhPT1hLmJpbmFyeSYmdm9pZCAwIT09YS5iaW5hcnl8fChhLmJpbmFyeT0hMCksYT10KGEsZyksYS5kYXRlPWEuZGF0ZXx8bmV3IERhdGUsbnVsbCE9PWEuY29tcHJlc3Npb24mJihhLmNvbXByZXNzaW9uPWEuY29tcHJlc3Npb24udG9VcHBlckNhc2UoKSksYX0sdj1mdW5jdGlvbihhLGIsYyl7dmFyIGUsZj1kLmdldFR5cGVPZihiKTtpZihjPXUoYyksInN0cmluZyI9PXR5cGVvZiBjLnVuaXhQZXJtaXNzaW9ucyYmKGMudW5peFBlcm1pc3Npb25zPXBhcnNlSW50KGMudW5peFBlcm1pc3Npb25zLDgpKSxjLnVuaXhQZXJtaXNzaW9ucyYmMTYzODQmYy51bml4UGVybWlzc2lvbnMmJihjLmRpcj0hMCksYy5kb3NQZXJtaXNzaW9ucyYmMTYmYy5kb3NQZXJtaXNzaW9ucyYmKGMuZGlyPSEwKSxjLmRpciYmKGE9eChhKSksYy5jcmVhdGVGb2xkZXJzJiYoZT13KGEpKSYmeS5jYWxsKHRoaXMsZSwhMCksYy5kaXJ8fG51bGw9PT1ifHwidW5kZWZpbmVkIj09dHlwZW9mIGIpYy5iYXNlNjQ9ITEsYy5iaW5hcnk9ITEsYj1udWxsLGY9bnVsbDtlbHNlIGlmKCJzdHJpbmciPT09ZiljLmJpbmFyeSYmIWMuYmFzZTY0JiZjLm9wdGltaXplZEJpbmFyeVN0cmluZyE9PSEwJiYoYj1kLnN0cmluZzJiaW5hcnkoYikpO2Vsc2V7aWYoYy5iYXNlNjQ9ITEsYy5iaW5hcnk9ITAsIShmfHxiIGluc3RhbmNlb2YgaikpdGhyb3cgbmV3IEVycm9yKCJUaGUgZGF0YSBvZiAnIithKyInIGlzIGluIGFuIHVuc3VwcG9ydGVkIGZvcm1hdCAhIik7ImFycmF5YnVmZmVyIj09PWYmJihiPWQudHJhbnNmb3JtVG8oInVpbnQ4YXJyYXkiLGIpKX12YXIgZz1uZXcgcihhLGIsYyk7cmV0dXJuIHRoaXMuZmlsZXNbYV09ZyxnfSx3PWZ1bmN0aW9uKGEpeyIvIj09YS5zbGljZSgtMSkmJihhPWEuc3Vic3RyaW5nKDAsYS5sZW5ndGgtMSkpO3ZhciBiPWEubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4gYj4wP2Euc3Vic3RyaW5nKDAsYik6IiJ9LHg9ZnVuY3Rpb24oYSl7cmV0dXJuIi8iIT1hLnNsaWNlKC0xKSYmKGErPSIvIiksYX0seT1mdW5jdGlvbihhLGIpe3JldHVybiBiPSJ1bmRlZmluZWQiIT10eXBlb2YgYj9iOiExLGE9eChhKSx0aGlzLmZpbGVzW2FdfHx2LmNhbGwodGhpcyxhLG51bGwse2RpcjohMCxjcmVhdGVGb2xkZXJzOmJ9KSx0aGlzLmZpbGVzW2FdfSx6PWZ1bmN0aW9uKGEsYixjKXt2YXIgZixnPW5ldyBqO3JldHVybiBhLl9kYXRhIGluc3RhbmNlb2Ygaj8oZy51bmNvbXByZXNzZWRTaXplPWEuX2RhdGEudW5jb21wcmVzc2VkU2l6ZSxnLmNyYzMyPWEuX2RhdGEuY3JjMzIsMD09PWcudW5jb21wcmVzc2VkU2l6ZXx8YS5kaXI/KGI9aS5TVE9SRSxnLmNvbXByZXNzZWRDb250ZW50PSIiLGcuY3JjMzI9MCk6YS5fZGF0YS5jb21wcmVzc2lvbk1ldGhvZD09PWIubWFnaWM/Zy5jb21wcmVzc2VkQ29udGVudD1hLl9kYXRhLmdldENvbXByZXNzZWRDb250ZW50KCk6KGY9YS5fZGF0YS5nZXRDb250ZW50KCksZy5jb21wcmVzc2VkQ29udGVudD1iLmNvbXByZXNzKGQudHJhbnNmb3JtVG8oYi5jb21wcmVzc0lucHV0VHlwZSxmKSxjKSkpOihmPXAoYSksKCFmfHwwPT09Zi5sZW5ndGh8fGEuZGlyKSYmKGI9aS5TVE9SRSxmPSIiKSxnLnVuY29tcHJlc3NlZFNpemU9Zi5sZW5ndGgsZy5jcmMzMj1lKGYpLGcuY29tcHJlc3NlZENvbnRlbnQ9Yi5jb21wcmVzcyhkLnRyYW5zZm9ybVRvKGIuY29tcHJlc3NJbnB1dFR5cGUsZiksYykpLGcuY29tcHJlc3NlZFNpemU9Zy5jb21wcmVzc2VkQ29udGVudC5sZW5ndGgsZy5jb21wcmVzc2lvbk1ldGhvZD1iLm1hZ2ljLGd9LEE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hO3JldHVybiBhfHwoYz1iPzE2ODkzOjMzMjA0KSwoNjU1MzUmYyk8PDE2fSxCPWZ1bmN0aW9uKGEpe3JldHVybiA2MyYoYXx8MCl9LEM9ZnVuY3Rpb24oYSxiLGMsZyxoKXt2YXIgaSxqLGssbSxuPShjLmNvbXByZXNzZWRDb250ZW50LGQudHJhbnNmb3JtVG8oInN0cmluZyIsbC51dGY4ZW5jb2RlKGIubmFtZSkpKSxvPWIuY29tbWVudHx8IiIscD1kLnRyYW5zZm9ybVRvKCJzdHJpbmciLGwudXRmOGVuY29kZShvKSkscT1uLmxlbmd0aCE9PWIubmFtZS5sZW5ndGgscj1wLmxlbmd0aCE9PW8ubGVuZ3RoLHQ9Yi5vcHRpb25zLHU9IiIsdj0iIix3PSIiO2s9Yi5faW5pdGlhbE1ldGFkYXRhLmRpciE9PWIuZGlyP2IuZGlyOnQuZGlyLG09Yi5faW5pdGlhbE1ldGFkYXRhLmRhdGUhPT1iLmRhdGU/Yi5kYXRlOnQuZGF0ZTt2YXIgeD0wLHk9MDtrJiYoeHw9MTYpLCJVTklYIj09PWg/KHk9Nzk4LHh8PUEoYi51bml4UGVybWlzc2lvbnMsaykpOih5PTIwLHh8PUIoYi5kb3NQZXJtaXNzaW9ucyxrKSksaT1tLmdldEhvdXJzKCksaTw8PTYsaXw9bS5nZXRNaW51dGVzKCksaTw8PTUsaXw9bS5nZXRTZWNvbmRzKCkvMixqPW0uZ2V0RnVsbFllYXIoKS0xOTgwLGo8PD00LGp8PW0uZ2V0TW9udGgoKSsxLGo8PD01LGp8PW0uZ2V0RGF0ZSgpLHEmJih2PXMoMSwxKStzKGUobiksNCkrbix1Kz0idXAiK3Modi5sZW5ndGgsMikrdiksciYmKHc9cygxLDEpK3ModGhpcy5jcmMzMihwKSw0KStwLHUrPSJ1YyIrcyh3Lmxlbmd0aCwyKSt3KTt2YXIgej0iIjt6Kz0iXG5ceDAwIix6Kz1xfHxyPyJceDAwXGIiOiJceDAwXHgwMCIseis9Yy5jb21wcmVzc2lvbk1ldGhvZCx6Kz1zKGksMikseis9cyhqLDIpLHorPXMoYy5jcmMzMiw0KSx6Kz1zKGMuY29tcHJlc3NlZFNpemUsNCkseis9cyhjLnVuY29tcHJlc3NlZFNpemUsNCkseis9cyhuLmxlbmd0aCwyKSx6Kz1zKHUubGVuZ3RoLDIpO3ZhciBDPWYuTE9DQUxfRklMRV9IRUFERVIreituK3UsRD1mLkNFTlRSQUxfRklMRV9IRUFERVIrcyh5LDIpK3orcyhwLmxlbmd0aCwyKSsiXHgwMFx4MDBceDAwXHgwMCIrcyh4LDQpK3MoZyw0KStuK3UrcDtyZXR1cm57ZmlsZVJlY29yZDpDLGRpclJlY29yZDpELGNvbXByZXNzZWRPYmplY3Q6Y319LEQ9e2xvYWQ6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIkxvYWQgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLiBJcyB0aGUgZmlsZSBqc3ppcC1sb2FkLmpzIGluY2x1ZGVkID8iKX0sZmlsdGVyOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGY9W107Zm9yKGIgaW4gdGhpcy5maWxlcyl0aGlzLmZpbGVzLmhhc093blByb3BlcnR5KGIpJiYoZD10aGlzLmZpbGVzW2JdLGU9bmV3IHIoZC5uYW1lLGQuX2RhdGEsdChkLm9wdGlvbnMpKSxjPWIuc2xpY2UodGhpcy5yb290Lmxlbmd0aCxiLmxlbmd0aCksYi5zbGljZSgwLHRoaXMucm9vdC5sZW5ndGgpPT09dGhpcy5yb290JiZhKGMsZSkmJmYucHVzaChlKSk7cmV0dXJuIGZ9LGZpbGU6ZnVuY3Rpb24oYSxiLGMpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXtpZihkLmlzUmVnRXhwKGEpKXt2YXIgZT1hO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbihhLGIpe3JldHVybiFiLmRpciYmZS50ZXN0KGEpfSl9cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKGIsYyl7cmV0dXJuIWMuZGlyJiZiPT09YX0pWzBdfHxudWxsfXJldHVybiBhPXRoaXMucm9vdCthLHYuY2FsbCh0aGlzLGEsYixjKSx0aGlzfSxmb2xkZXI6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIHRoaXM7aWYoZC5pc1JlZ0V4cChhKSlyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oYixjKXtyZXR1cm4gYy5kaXImJmEudGVzdChiKX0pO3ZhciBiPXRoaXMucm9vdCthLGM9eS5jYWxsKHRoaXMsYiksZT10aGlzLmNsb25lKCk7cmV0dXJuIGUucm9vdD1jLm5hbWUsZX0scmVtb3ZlOmZ1bmN0aW9uKGEpe2E9dGhpcy5yb290K2E7dmFyIGI9dGhpcy5maWxlc1thXTtpZihifHwoIi8iIT1hLnNsaWNlKC0xKSYmKGErPSIvIiksYj10aGlzLmZpbGVzW2FdKSxiJiYhYi5kaXIpZGVsZXRlIHRoaXMuZmlsZXNbYV07ZWxzZSBmb3IodmFyIGM9dGhpcy5maWx0ZXIoZnVuY3Rpb24oYixjKXtyZXR1cm4gYy5uYW1lLnNsaWNlKDAsYS5sZW5ndGgpPT09YX0pLGQ9MDtkPGMubGVuZ3RoO2QrKylkZWxldGUgdGhpcy5maWxlc1tjW2RdLm5hbWVdO3JldHVybiB0aGlzfSxnZW5lcmF0ZTpmdW5jdGlvbihhKXthPXQoYXx8e30se2Jhc2U2NDohMCxjb21wcmVzc2lvbjoiU1RPUkUiLGNvbXByZXNzaW9uT3B0aW9uczpudWxsLHR5cGU6ImJhc2U2NCIscGxhdGZvcm06IkRPUyIsY29tbWVudDpudWxsLG1pbWVUeXBlOiJhcHBsaWNhdGlvbi96aXAifSksZC5jaGVja1N1cHBvcnQoYS50eXBlKSwoImRhcndpbiI9PT1hLnBsYXRmb3JtfHwiZnJlZWJzZCI9PT1hLnBsYXRmb3JtfHwibGludXgiPT09YS5wbGF0Zm9ybXx8InN1bm9zIj09PWEucGxhdGZvcm0pJiYoYS5wbGF0Zm9ybT0iVU5JWCIpLCJ3aW4zMiI9PT1hLnBsYXRmb3JtJiYoYS5wbGF0Zm9ybT0iRE9TIik7dmFyIGIsYyxlPVtdLGc9MCxqPTAsaz1kLnRyYW5zZm9ybVRvKCJzdHJpbmciLHRoaXMudXRmOGVuY29kZShhLmNvbW1lbnR8fHRoaXMuY29tbWVudHx8IiIpKTtmb3IodmFyIGwgaW4gdGhpcy5maWxlcylpZih0aGlzLmZpbGVzLmhhc093blByb3BlcnR5KGwpKXt2YXIgbz10aGlzLmZpbGVzW2xdLHA9by5vcHRpb25zLmNvbXByZXNzaW9ufHxhLmNvbXByZXNzaW9uLnRvVXBwZXJDYXNlKCkscT1pW3BdO2lmKCFxKXRocm93IG5ldyBFcnJvcihwKyIgaXMgbm90IGEgdmFsaWQgY29tcHJlc3Npb24gbWV0aG9kICEiKTt2YXIgcj1vLm9wdGlvbnMuY29tcHJlc3Npb25PcHRpb25zfHxhLmNvbXByZXNzaW9uT3B0aW9uc3x8e30sdT16LmNhbGwodGhpcyxvLHEsciksdj1DLmNhbGwodGhpcyxsLG8sdSxnLGEucGxhdGZvcm0pO2crPXYuZmlsZVJlY29yZC5sZW5ndGgrdS5jb21wcmVzc2VkU2l6ZSxqKz12LmRpclJlY29yZC5sZW5ndGgsZS5wdXNoKHYpfXZhciB3PSIiO3c9Zi5DRU5UUkFMX0RJUkVDVE9SWV9FTkQrIlx4MDBceDAwXHgwMFx4MDAiK3MoZS5sZW5ndGgsMikrcyhlLmxlbmd0aCwyKStzKGosNCkrcyhnLDQpK3Moay5sZW5ndGgsMikrazt2YXIgeD1hLnR5cGUudG9Mb3dlckNhc2UoKTtmb3IoYj0idWludDhhcnJheSI9PT14fHwiYXJyYXlidWZmZXIiPT09eHx8ImJsb2IiPT09eHx8Im5vZGVidWZmZXIiPT09eD9uZXcgbihnK2ordy5sZW5ndGgpOm5ldyBtKGcrait3Lmxlbmd0aCksYz0wO2M8ZS5sZW5ndGg7YysrKWIuYXBwZW5kKGVbY10uZmlsZVJlY29yZCksYi5hcHBlbmQoZVtjXS5jb21wcmVzc2VkT2JqZWN0LmNvbXByZXNzZWRDb250ZW50KTtmb3IoYz0wO2M8ZS5sZW5ndGg7YysrKWIuYXBwZW5kKGVbY10uZGlyUmVjb3JkKTtiLmFwcGVuZCh3KTt2YXIgeT1iLmZpbmFsaXplKCk7c3dpdGNoKGEudHlwZS50b0xvd2VyQ2FzZSgpKXtjYXNlInVpbnQ4YXJyYXkiOmNhc2UiYXJyYXlidWZmZXIiOmNhc2Uibm9kZWJ1ZmZlciI6cmV0dXJuIGQudHJhbnNmb3JtVG8oYS50eXBlLnRvTG93ZXJDYXNlKCkseSk7Y2FzZSJibG9iIjpyZXR1cm4gZC5hcnJheUJ1ZmZlcjJCbG9iKGQudHJhbnNmb3JtVG8oImFycmF5YnVmZmVyIix5KSxhLm1pbWVUeXBlKTtjYXNlImJhc2U2NCI6cmV0dXJuIGEuYmFzZTY0P2guZW5jb2RlKHkpOnk7ZGVmYXVsdDpyZXR1cm4geX19LGNyYzMyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGUoYSxiKX0sdXRmOGVuY29kZTpmdW5jdGlvbihhKXtyZXR1cm4gZC50cmFuc2Zvcm1Ubygic3RyaW5nIixsLnV0ZjhlbmNvZGUoYSkpfSx1dGY4ZGVjb2RlOmZ1bmN0aW9uKGEpe3JldHVybiBsLnV0ZjhkZWNvZGUoYSl9fTtiLmV4cG9ydHM9RH0seyIuL2Jhc2U2NCI6MSwiLi9jb21wcmVzc2VkT2JqZWN0IjoyLCIuL2NvbXByZXNzaW9ucyI6MywiLi9jcmMzMiI6NCwiLi9kZWZhdWx0cyI6NiwiLi9ub2RlQnVmZmVyIjoxMSwiLi9zaWduYXR1cmUiOjE0LCIuL3N0cmluZ1dyaXRlciI6MTYsIi4vc3VwcG9ydCI6MTcsIi4vdWludDhBcnJheVdyaXRlciI6MTksIi4vdXRmOCI6MjAsIi4vdXRpbHMiOjIxfV0sMTQ6W2Z1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7Yy5MT0NBTF9GSUxFX0hFQURFUj0iUEsDBCIsYy5DRU5UUkFMX0ZJTEVfSEVBREVSPSJQSwECIixjLkNFTlRSQUxfRElSRUNUT1JZX0VORD0iUEsFBiIsYy5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9MT0NBVE9SPSJQSwYHIixjLlpJUDY0X0NFTlRSQUxfRElSRUNUT1JZX0VORD0iUEsGBiIsYy5EQVRBX0RFU0NSSVBUT1I9IlBLB1xiIn0se31dLDE1OltmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKGEsYil7dGhpcy5kYXRhPWEsYnx8KHRoaXMuZGF0YT1lLnN0cmluZzJiaW5hcnkodGhpcy5kYXRhKSksdGhpcy5sZW5ndGg9dGhpcy5kYXRhLmxlbmd0aCx0aGlzLmluZGV4PTB9dmFyIGQ9YSgiLi9kYXRhUmVhZGVyIiksZT1hKCIuL3V0aWxzIik7Yy5wcm90b3R5cGU9bmV3IGQsYy5wcm90b3R5cGUuYnl0ZUF0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmRhdGEuY2hhckNvZGVBdChhKX0sYy5wcm90b3R5cGUubGFzdEluZGV4T2ZTaWduYXR1cmU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZGF0YS5sYXN0SW5kZXhPZihhKX0sYy5wcm90b3R5cGUucmVhZERhdGE9ZnVuY3Rpb24oYSl7dGhpcy5jaGVja09mZnNldChhKTt2YXIgYj10aGlzLmRhdGEuc2xpY2UodGhpcy5pbmRleCx0aGlzLmluZGV4K2EpO3JldHVybiB0aGlzLmluZGV4Kz1hLGJ9LGIuZXhwb3J0cz1jfSx7Ii4vZGF0YVJlYWRlciI6NSwiLi91dGlscyI6MjF9XSwxNjpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7dmFyIGM9YSgiLi91dGlscyIpLGQ9ZnVuY3Rpb24oKXt0aGlzLmRhdGE9W119O2QucHJvdG90eXBlPXthcHBlbmQ6ZnVuY3Rpb24oYSl7YT1jLnRyYW5zZm9ybVRvKCJzdHJpbmciLGEpLHRoaXMuZGF0YS5wdXNoKGEpfSxmaW5hbGl6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEuam9pbigiIil9fSxiLmV4cG9ydHM9ZH0seyIuL3V0aWxzIjoyMX1dLDE3OltmdW5jdGlvbihhLGIsYyl7KGZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtpZihjLmJhc2U2ND0hMCxjLmFycmF5PSEwLGMuc3RyaW5nPSEwLGMuYXJyYXlidWZmZXI9InVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmInVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5LGMubm9kZWJ1ZmZlcj0idW5kZWZpbmVkIiE9dHlwZW9mIGEsYy51aW50OGFycmF5PSJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhBcnJheSwidW5kZWZpbmVkIj09dHlwZW9mIEFycmF5QnVmZmVyKWMuYmxvYj0hMTtlbHNle3ZhciBiPW5ldyBBcnJheUJ1ZmZlcigwKTt0cnl7Yy5ibG9iPTA9PT1uZXcgQmxvYihbYl0se3R5cGU6ImFwcGxpY2F0aW9uL3ppcCJ9KS5zaXplfWNhdGNoKGQpe3RyeXt2YXIgZT13aW5kb3cuQmxvYkJ1aWxkZXJ8fHdpbmRvdy5XZWJLaXRCbG9iQnVpbGRlcnx8d2luZG93Lk1vekJsb2JCdWlsZGVyfHx3aW5kb3cuTVNCbG9iQnVpbGRlcixmPW5ldyBlO2YuYXBwZW5kKGIpLGMuYmxvYj0wPT09Zi5nZXRCbG9iKCJhcHBsaWNhdGlvbi96aXAiKS5zaXplfWNhdGNoKGQpe2MuYmxvYj0hMX19fX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIEJ1ZmZlcj9CdWZmZXI6dm9pZCAwKX0se31dLDE4OltmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKGEpe2EmJih0aGlzLmRhdGE9YSx0aGlzLmxlbmd0aD10aGlzLmRhdGEubGVuZ3RoLHRoaXMuaW5kZXg9MCl9dmFyIGQ9YSgiLi9kYXRhUmVhZGVyIik7Yy5wcm90b3R5cGU9bmV3IGQsYy5wcm90b3R5cGUuYnl0ZUF0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmRhdGFbYV19LGMucHJvdG90eXBlLmxhc3RJbmRleE9mU2lnbmF0dXJlPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1hLmNoYXJDb2RlQXQoMCksYz1hLmNoYXJDb2RlQXQoMSksZD1hLmNoYXJDb2RlQXQoMiksZT1hLmNoYXJDb2RlQXQoMyksZj10aGlzLmxlbmd0aC00O2Y+PTA7LS1mKWlmKHRoaXMuZGF0YVtmXT09PWImJnRoaXMuZGF0YVtmKzFdPT09YyYmdGhpcy5kYXRhW2YrMl09PT1kJiZ0aGlzLmRhdGFbZiszXT09PWUpcmV0dXJuIGY7cmV0dXJuLTF9LGMucHJvdG90eXBlLnJlYWREYXRhPWZ1bmN0aW9uKGEpe2lmKHRoaXMuY2hlY2tPZmZzZXQoYSksMD09PWEpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO3ZhciBiPXRoaXMuZGF0YS5zdWJhcnJheSh0aGlzLmluZGV4LHRoaXMuaW5kZXgrYSk7cmV0dXJuIHRoaXMuaW5kZXgrPWEsYn0sYi5leHBvcnRzPWN9LHsiLi9kYXRhUmVhZGVyIjo1fV0sMTk6W2Z1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO3ZhciBjPWEoIi4vdXRpbHMiKSxkPWZ1bmN0aW9uKGEpe3RoaXMuZGF0YT1uZXcgVWludDhBcnJheShhKSx0aGlzLmluZGV4PTB9O2QucHJvdG90eXBlPXthcHBlbmQ6ZnVuY3Rpb24oYSl7MCE9PWEubGVuZ3RoJiYoYT1jLnRyYW5zZm9ybVRvKCJ1aW50OGFycmF5IixhKSx0aGlzLmRhdGEuc2V0KGEsdGhpcy5pbmRleCksdGhpcy5pbmRleCs9YS5sZW5ndGgpfSxmaW5hbGl6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGF9fSxiLmV4cG9ydHM9ZH0seyIuL3V0aWxzIjoyMX1dLDIwOltmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Zvcih2YXIgZD1hKCIuL3V0aWxzIiksZT1hKCIuL3N1cHBvcnQiKSxmPWEoIi4vbm9kZUJ1ZmZlciIpLGc9bmV3IEFycmF5KDI1NiksaD0wOzI1Nj5oO2grKylnW2hdPWg+PTI1Mj82Omg+PTI0OD81Omg+PTI0MD80Omg+PTIyND8zOmg+PTE5Mj8yOjE7Z1syNTRdPWdbMjU0XT0xO3ZhciBpPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxmLGcsaD1hLmxlbmd0aCxpPTA7Zm9yKGY9MDtoPmY7ZisrKWM9YS5jaGFyQ29kZUF0KGYpLDU1Mjk2PT09KDY0NTEyJmMpJiZoPmYrMSYmKGQ9YS5jaGFyQ29kZUF0KGYrMSksNTYzMjA9PT0oNjQ1MTImZCkmJihjPTY1NTM2KyhjLTU1Mjk2PDwxMCkrKGQtNTYzMjApLGYrKykpLGkrPTEyOD5jPzE6MjA0OD5jPzI6NjU1MzY+Yz8zOjQ7Zm9yKGI9ZS51aW50OGFycmF5P25ldyBVaW50OEFycmF5KGkpOm5ldyBBcnJheShpKSxnPTAsZj0wO2k+ZztmKyspYz1hLmNoYXJDb2RlQXQoZiksNTUyOTY9PT0oNjQ1MTImYykmJmg+ZisxJiYoZD1hLmNoYXJDb2RlQXQoZisxKSw1NjMyMD09PSg2NDUxMiZkKSYmKGM9NjU1MzYrKGMtNTUyOTY8PDEwKSsoZC01NjMyMCksZisrKSksMTI4PmM/YltnKytdPWM6MjA0OD5jPyhiW2crK109MTkyfGM+Pj42LGJbZysrXT0xMjh8NjMmYyk6NjU1MzY+Yz8oYltnKytdPTIyNHxjPj4+MTIsYltnKytdPTEyOHxjPj4+NiY2MyxiW2crK109MTI4fDYzJmMpOihiW2crK109MjQwfGM+Pj4xOCxiW2crK109MTI4fGM+Pj4xMiY2MyxiW2crK109MTI4fGM+Pj42JjYzLGJbZysrXT0xMjh8NjMmYyk7cmV0dXJuIGJ9LGo9ZnVuY3Rpb24oYSxiKXt2YXIgYztmb3IoYj1ifHxhLmxlbmd0aCxiPmEubGVuZ3RoJiYoYj1hLmxlbmd0aCksYz1iLTE7Yz49MCYmMTI4PT09KDE5MiZhW2NdKTspYy0tO3JldHVybiAwPmM/YjowPT09Yz9iOmMrZ1thW2NdXT5iP2M6Yn0saz1mdW5jdGlvbihhKXt2YXIgYixjLGUsZixoPWEubGVuZ3RoLGk9bmV3IEFycmF5KDIqaCk7Zm9yKGM9MCxiPTA7aD5iOylpZihlPWFbYisrXSwxMjg+ZSlpW2MrK109ZTtlbHNlIGlmKGY9Z1tlXSxmPjQpaVtjKytdPTY1NTMzLGIrPWYtMTtlbHNle2ZvcihlJj0yPT09Zj8zMTozPT09Zj8xNTo3O2Y+MSYmaD5iOyllPWU8PDZ8NjMmYVtiKytdLGYtLTtmPjE/aVtjKytdPTY1NTMzOjY1NTM2PmU/aVtjKytdPWU6KGUtPTY1NTM2LGlbYysrXT01NTI5NnxlPj4xMCYxMDIzLGlbYysrXT01NjMyMHwxMDIzJmUpfXJldHVybiBpLmxlbmd0aCE9PWMmJihpLnN1YmFycmF5P2k9aS5zdWJhcnJheSgwLGMpOmkubGVuZ3RoPWMpLGQuYXBwbHlGcm9tQ2hhckNvZGUoaSl9O2MudXRmOGVuY29kZT1mdW5jdGlvbihhKXtyZXR1cm4gZS5ub2RlYnVmZmVyP2YoYSwidXRmLTgiKTppKGEpfSxjLnV0ZjhkZWNvZGU9ZnVuY3Rpb24oYSl7aWYoZS5ub2RlYnVmZmVyKXJldHVybiBkLnRyYW5zZm9ybVRvKCJub2RlYnVmZmVyIixhKS50b1N0cmluZygidXRmLTgiKTthPWQudHJhbnNmb3JtVG8oZS51aW50OGFycmF5PyJ1aW50OGFycmF5IjoiYXJyYXkiLGEpO2Zvcih2YXIgYj1bXSxjPTAsZj1hLmxlbmd0aCxnPTY1NTM2O2Y+Yzspe3ZhciBoPWooYSxNYXRoLm1pbihjK2csZikpO2IucHVzaChlLnVpbnQ4YXJyYXk/ayhhLnN1YmFycmF5KGMsaCkpOmsoYS5zbGljZShjLGgpKSksYz1ofXJldHVybiBiLmpvaW4oIiIpfX0seyIuL25vZGVCdWZmZXIiOjExLCIuL3N1cHBvcnQiOjE3LCIuL3V0aWxzIjoyMX1dLDIxOltmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSl7cmV0dXJuIGF9ZnVuY3Rpb24gZShhLGIpe2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7KytjKWJbY109MjU1JmEuY2hhckNvZGVBdChjKTtyZXR1cm4gYn1mdW5jdGlvbiBmKGEpe3ZhciBiPTY1NTM2LGQ9W10sZT1hLmxlbmd0aCxmPWMuZ2V0VHlwZU9mKGEpLGc9MCxoPSEwO3RyeXtzd2l0Y2goZil7Y2FzZSJ1aW50OGFycmF5IjpTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsbmV3IFVpbnQ4QXJyYXkoMCkpO2JyZWFrO2Nhc2Uibm9kZWJ1ZmZlciI6U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGooMCkpfX1jYXRjaChpKXtoPSExfWlmKCFoKXtmb3IodmFyIGs9IiIsbD0wO2w8YS5sZW5ndGg7bCsrKWsrPVN0cmluZy5mcm9tQ2hhckNvZGUoYVtsXSk7cmV0dXJuIGt9Zm9yKDtlPmcmJmI+MTspdHJ5e2QucHVzaCgiYXJyYXkiPT09Znx8Im5vZGVidWZmZXIiPT09Zj9TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsYS5zbGljZShnLE1hdGgubWluKGcrYixlKSkpOlN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxhLnN1YmFycmF5KGcsTWF0aC5taW4oZytiLGUpKSkpLGcrPWJ9Y2F0Y2goaSl7Yj1NYXRoLmZsb29yKGIvMil9cmV0dXJuIGQuam9pbigiIil9ZnVuY3Rpb24gZyhhLGIpe2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWJbY109YVtjXTtyZXR1cm4gYn12YXIgaD1hKCIuL3N1cHBvcnQiKSxpPWEoIi4vY29tcHJlc3Npb25zIiksaj1hKCIuL25vZGVCdWZmZXIiKTtjLnN0cmluZzJiaW5hcnk9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPSIiLGM9MDtjPGEubGVuZ3RoO2MrKyliKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSZhLmNoYXJDb2RlQXQoYykpO3JldHVybiBifSxjLmFycmF5QnVmZmVyMkJsb2I9ZnVuY3Rpb24oYSxiKXtjLmNoZWNrU3VwcG9ydCgiYmxvYiIpLGI9Ynx8ImFwcGxpY2F0aW9uL3ppcCI7dHJ5e3JldHVybiBuZXcgQmxvYihbYV0se3R5cGU6Yn0pfWNhdGNoKGQpe3RyeXt2YXIgZT13aW5kb3cuQmxvYkJ1aWxkZXJ8fHdpbmRvdy5XZWJLaXRCbG9iQnVpbGRlcnx8d2luZG93Lk1vekJsb2JCdWlsZGVyfHx3aW5kb3cuTVNCbG9iQnVpbGRlcixmPW5ldyBlO3JldHVybiBmLmFwcGVuZChhKSxmLmdldEJsb2IoYil9Y2F0Y2goZCl7dGhyb3cgbmV3IEVycm9yKCJCdWcgOiBjYW4ndCBjb25zdHJ1Y3QgdGhlIEJsb2IuIil9fX0sYy5hcHBseUZyb21DaGFyQ29kZT1mO3ZhciBrPXt9O2suc3RyaW5nPXtzdHJpbmc6ZCxhcnJheTpmdW5jdGlvbihhKXtyZXR1cm4gZShhLG5ldyBBcnJheShhLmxlbmd0aCkpfSxhcnJheWJ1ZmZlcjpmdW5jdGlvbihhKXtyZXR1cm4gay5zdHJpbmcudWludDhhcnJheShhKS5idWZmZXJ9LHVpbnQ4YXJyYXk6ZnVuY3Rpb24oYSl7cmV0dXJuIGUoYSxuZXcgVWludDhBcnJheShhLmxlbmd0aCkpfSxub2RlYnVmZmVyOmZ1bmN0aW9uKGEpe3JldHVybiBlKGEsaihhLmxlbmd0aCkpfX0say5hcnJheT17c3RyaW5nOmYsYXJyYXk6ZCxhcnJheWJ1ZmZlcjpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYSkuYnVmZmVyfSx1aW50OGFycmF5OmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVWludDhBcnJheShhKX0sbm9kZWJ1ZmZlcjpmdW5jdGlvbihhKXtyZXR1cm4gaihhKX19LGsuYXJyYXlidWZmZXI9e3N0cmluZzpmdW5jdGlvbihhKXtyZXR1cm4gZihuZXcgVWludDhBcnJheShhKSl9LGFycmF5OmZ1bmN0aW9uKGEpe3JldHVybiBnKG5ldyBVaW50OEFycmF5KGEpLG5ldyBBcnJheShhLmJ5dGVMZW5ndGgpKX0sYXJyYXlidWZmZXI6ZCx1aW50OGFycmF5OmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVWludDhBcnJheShhKX0sbm9kZWJ1ZmZlcjpmdW5jdGlvbihhKXtyZXR1cm4gaihuZXcgVWludDhBcnJheShhKSl9fSxrLnVpbnQ4YXJyYXk9e3N0cmluZzpmLGFycmF5OmZ1bmN0aW9uKGEpe3JldHVybiBnKGEsbmV3IEFycmF5KGEubGVuZ3RoKSl9LGFycmF5YnVmZmVyOmZ1bmN0aW9uKGEpe3JldHVybiBhLmJ1ZmZlcn0sdWludDhhcnJheTpkLG5vZGVidWZmZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGooYSl9fSxrLm5vZGVidWZmZXI9e3N0cmluZzpmLGFycmF5OmZ1bmN0aW9uKGEpe3JldHVybiBnKGEsbmV3IEFycmF5KGEubGVuZ3RoKSl9LGFycmF5YnVmZmVyOmZ1bmN0aW9uKGEpe3JldHVybiBrLm5vZGVidWZmZXIudWludDhhcnJheShhKS5idWZmZXJ9LHVpbnQ4YXJyYXk6ZnVuY3Rpb24oYSl7cmV0dXJuIGcoYSxuZXcgVWludDhBcnJheShhLmxlbmd0aCkpfSxub2RlYnVmZmVyOmR9LGMudHJhbnNmb3JtVG89ZnVuY3Rpb24oYSxiKXtpZihifHwoYj0iIiksIWEpcmV0dXJuIGI7Yy5jaGVja1N1cHBvcnQoYSk7dmFyIGQ9Yy5nZXRUeXBlT2YoYiksZT1rW2RdW2FdKGIpO3JldHVybiBlfSxjLmdldFR5cGVPZj1mdW5jdGlvbihhKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGE/InN0cmluZyI6IltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhKT8iYXJyYXkiOmgubm9kZWJ1ZmZlciYmai50ZXN0KGEpPyJub2RlYnVmZmVyIjpoLnVpbnQ4YXJyYXkmJmEgaW5zdGFuY2VvZiBVaW50OEFycmF5PyJ1aW50OGFycmF5IjpoLmFycmF5YnVmZmVyJiZhIGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/ImFycmF5YnVmZmVyIjp2b2lkIDB9LGMuY2hlY2tTdXBwb3J0PWZ1bmN0aW9uKGEpe3ZhciBiPWhbYS50b0xvd2VyQ2FzZSgpXTtpZighYil0aHJvdyBuZXcgRXJyb3IoYSsiIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyIil9LGMuTUFYX1ZBTFVFXzE2QklUUz02NTUzNSxjLk1BWF9WQUxVRV8zMkJJVFM9LTEsYy5wcmV0dHk9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPSIiO2ZvcihjPTA7YzwoYXx8IiIpLmxlbmd0aDtjKyspYj1hLmNoYXJDb2RlQXQoYyksZCs9IlxceCIrKDE2PmI/IjAiOiIiKStiLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO3JldHVybiBkfSxjLmZpbmRDb21wcmVzc2lvbj1mdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gaSlpZihpLmhhc093blByb3BlcnR5KGIpJiZpW2JdLm1hZ2ljPT09YSlyZXR1cm4gaVtiXTtyZXR1cm4gbnVsbH0sYy5pc1JlZ0V4cD1mdW5jdGlvbihhKXtyZXR1cm4iW29iamVjdCBSZWdFeHBdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhKX19LHsiLi9jb21wcmVzc2lvbnMiOjMsIi4vbm9kZUJ1ZmZlciI6MTEsIi4vc3VwcG9ydCI6MTd9XSwyMjpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYyhhLGIpe3RoaXMuZmlsZXM9W10sdGhpcy5sb2FkT3B0aW9ucz1iLGEmJnRoaXMubG9hZChhKX12YXIgZD1hKCIuL3N0cmluZ1JlYWRlciIpLGU9YSgiLi9ub2RlQnVmZmVyUmVhZGVyIiksZj1hKCIuL3VpbnQ4QXJyYXlSZWFkZXIiKSxnPWEoIi4vdXRpbHMiKSxoPWEoIi4vc2lnbmF0dXJlIiksaT1hKCIuL3ppcEVudHJ5Iiksaj1hKCIuL3N1cHBvcnQiKSxrPWEoIi4vb2JqZWN0Iik7Yy5wcm90b3R5cGU9e2NoZWNrU2lnbmF0dXJlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMucmVhZGVyLnJlYWRTdHJpbmcoNCk7aWYoYiE9PWEpdGhyb3cgbmV3IEVycm9yKCJDb3JydXB0ZWQgemlwIG9yIGJ1ZyA6IHVuZXhwZWN0ZWQgc2lnbmF0dXJlICgiK2cucHJldHR5KGIpKyIsIGV4cGVjdGVkICIrZy5wcmV0dHkoYSkrIikiKX0scmVhZEJsb2NrRW5kT2ZDZW50cmFsOmZ1bmN0aW9uKCl7dGhpcy5kaXNrTnVtYmVyPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksdGhpcy5kaXNrV2l0aENlbnRyYWxEaXJTdGFydD10aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuY2VudHJhbERpclJlY29yZHNPblRoaXNEaXNrPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksdGhpcy5jZW50cmFsRGlyUmVjb3Jkcz10aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuY2VudHJhbERpclNpemU9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLmNlbnRyYWxEaXJPZmZzZXQ9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLnppcENvbW1lbnRMZW5ndGg9dGhpcy5yZWFkZXIucmVhZEludCgyKSx0aGlzLnppcENvbW1lbnQ9dGhpcy5yZWFkZXIucmVhZFN0cmluZyh0aGlzLnppcENvbW1lbnRMZW5ndGgpLHRoaXMuemlwQ29tbWVudD1rLnV0ZjhkZWNvZGUodGhpcy56aXBDb21tZW50KX0scmVhZEJsb2NrWmlwNjRFbmRPZkNlbnRyYWw6ZnVuY3Rpb24oKXt0aGlzLnppcDY0RW5kT2ZDZW50cmFsU2l6ZT10aGlzLnJlYWRlci5yZWFkSW50KDgpLHRoaXMudmVyc2lvbk1hZGVCeT10aGlzLnJlYWRlci5yZWFkU3RyaW5nKDIpLHRoaXMudmVyc2lvbk5lZWRlZD10aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuZGlza051bWJlcj10aGlzLnJlYWRlci5yZWFkSW50KDQpLHRoaXMuZGlza1dpdGhDZW50cmFsRGlyU3RhcnQ9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLmNlbnRyYWxEaXJSZWNvcmRzT25UaGlzRGlzaz10aGlzLnJlYWRlci5yZWFkSW50KDgpLHRoaXMuY2VudHJhbERpclJlY29yZHM9dGhpcy5yZWFkZXIucmVhZEludCg4KSx0aGlzLmNlbnRyYWxEaXJTaXplPXRoaXMucmVhZGVyLnJlYWRJbnQoOCksdGhpcy5jZW50cmFsRGlyT2Zmc2V0PXRoaXMucmVhZGVyLnJlYWRJbnQoOCksdGhpcy56aXA2NEV4dGVuc2libGVEYXRhPXt9O2Zvcih2YXIgYSxiLGMsZD10aGlzLnppcDY0RW5kT2ZDZW50cmFsU2l6ZS00NCxlPTA7ZD5lOylhPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksYj10aGlzLnJlYWRlci5yZWFkSW50KDQpLGM9dGhpcy5yZWFkZXIucmVhZFN0cmluZyhiKSx0aGlzLnppcDY0RXh0ZW5zaWJsZURhdGFbYV09e2lkOmEsbGVuZ3RoOmIsdmFsdWU6Y319LHJlYWRCbG9ja1ppcDY0RW5kT2ZDZW50cmFsTG9jYXRvcjpmdW5jdGlvbigpe2lmKHRoaXMuZGlza1dpdGhaaXA2NENlbnRyYWxEaXJTdGFydD10aGlzLnJlYWRlci5yZWFkSW50KDQpLHRoaXMucmVsYXRpdmVPZmZzZXRFbmRPZlppcDY0Q2VudHJhbERpcj10aGlzLnJlYWRlci5yZWFkSW50KDgpLHRoaXMuZGlza3NDb3VudD10aGlzLnJlYWRlci5yZWFkSW50KDQpLHRoaXMuZGlza3NDb3VudD4xKXRocm93IG5ldyBFcnJvcigiTXVsdGktdm9sdW1lcyB6aXAgYXJlIG5vdCBzdXBwb3J0ZWQiKX0scmVhZExvY2FsRmlsZXM6ZnVuY3Rpb24oKXt2YXIgYSxiO2ZvcihhPTA7YTx0aGlzLmZpbGVzLmxlbmd0aDthKyspYj10aGlzLmZpbGVzW2FdLHRoaXMucmVhZGVyLnNldEluZGV4KGIubG9jYWxIZWFkZXJPZmZzZXQpLHRoaXMuY2hlY2tTaWduYXR1cmUoaC5MT0NBTF9GSUxFX0hFQURFUiksYi5yZWFkTG9jYWxQYXJ0KHRoaXMucmVhZGVyKSxiLmhhbmRsZVVURjgoKSxiLnByb2Nlc3NBdHRyaWJ1dGVzKCl9LHJlYWRDZW50cmFsRGlyOmZ1bmN0aW9uKCl7dmFyIGE7Zm9yKHRoaXMucmVhZGVyLnNldEluZGV4KHRoaXMuY2VudHJhbERpck9mZnNldCk7dGhpcy5yZWFkZXIucmVhZFN0cmluZyg0KT09PWguQ0VOVFJBTF9GSUxFX0hFQURFUjspYT1uZXcgaSh7emlwNjQ6dGhpcy56aXA2NH0sdGhpcy5sb2FkT3B0aW9ucyksYS5yZWFkQ2VudHJhbFBhcnQodGhpcy5yZWFkZXIpLHRoaXMuZmlsZXMucHVzaChhKX0scmVhZEVuZE9mQ2VudHJhbDpmdW5jdGlvbigpe3ZhciBhPXRoaXMucmVhZGVyLmxhc3RJbmRleE9mU2lnbmF0dXJlKGguQ0VOVFJBTF9ESVJFQ1RPUllfRU5EKTtpZigtMT09PWEpe3ZhciBiPSEwO3RyeXt0aGlzLnJlYWRlci5zZXRJbmRleCgwKSx0aGlzLmNoZWNrU2lnbmF0dXJlKGguTE9DQUxfRklMRV9IRUFERVIpLGI9ITF9Y2F0Y2goYyl7fXRocm93IG5ldyBFcnJvcihiPyJDYW4ndCBmaW5kIGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSA6IGlzIHRoaXMgYSB6aXAgZmlsZSA/IElmIGl0IGlzLCBzZWUgaHR0cDovL3N0dWsuZ2l0aHViLmlvL2pzemlwL2RvY3VtZW50YXRpb24vaG93dG8vcmVhZF96aXAuaHRtbCI6IkNvcnJ1cHRlZCB6aXAgOiBjYW4ndCBmaW5kIGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSIpfWlmKHRoaXMucmVhZGVyLnNldEluZGV4KGEpLHRoaXMuY2hlY2tTaWduYXR1cmUoaC5DRU5UUkFMX0RJUkVDVE9SWV9FTkQpLHRoaXMucmVhZEJsb2NrRW5kT2ZDZW50cmFsKCksdGhpcy5kaXNrTnVtYmVyPT09Zy5NQVhfVkFMVUVfMTZCSVRTfHx0aGlzLmRpc2tXaXRoQ2VudHJhbERpclN0YXJ0PT09Zy5NQVhfVkFMVUVfMTZCSVRTfHx0aGlzLmNlbnRyYWxEaXJSZWNvcmRzT25UaGlzRGlzaz09PWcuTUFYX1ZBTFVFXzE2QklUU3x8dGhpcy5jZW50cmFsRGlyUmVjb3Jkcz09PWcuTUFYX1ZBTFVFXzE2QklUU3x8dGhpcy5jZW50cmFsRGlyU2l6ZT09PWcuTUFYX1ZBTFVFXzMyQklUU3x8dGhpcy5jZW50cmFsRGlyT2Zmc2V0PT09Zy5NQVhfVkFMVUVfMzJCSVRTKXtpZih0aGlzLnppcDY0PSEwLGE9dGhpcy5yZWFkZXIubGFzdEluZGV4T2ZTaWduYXR1cmUoaC5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9MT0NBVE9SKSwtMT09PWEpdGhyb3cgbmV3IEVycm9yKCJDb3JydXB0ZWQgemlwIDogY2FuJ3QgZmluZCB0aGUgWklQNjQgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5IGxvY2F0b3IiKTt0aGlzLnJlYWRlci5zZXRJbmRleChhKSx0aGlzLmNoZWNrU2lnbmF0dXJlKGguWklQNjRfQ0VOVFJBTF9ESVJFQ1RPUllfTE9DQVRPUiksdGhpcy5yZWFkQmxvY2taaXA2NEVuZE9mQ2VudHJhbExvY2F0b3IoKSx0aGlzLnJlYWRlci5zZXRJbmRleCh0aGlzLnJlbGF0aXZlT2Zmc2V0RW5kT2ZaaXA2NENlbnRyYWxEaXIpLHRoaXMuY2hlY2tTaWduYXR1cmUoaC5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9FTkQpLHRoaXMucmVhZEJsb2NrWmlwNjRFbmRPZkNlbnRyYWwoKX19LHByZXBhcmVSZWFkZXI6ZnVuY3Rpb24oYSl7dmFyIGI9Zy5nZXRUeXBlT2YoYSk7dGhpcy5yZWFkZXI9InN0cmluZyIhPT1ifHxqLnVpbnQ4YXJyYXk/Im5vZGVidWZmZXIiPT09Yj9uZXcgZShhKTpuZXcgZihnLnRyYW5zZm9ybVRvKCJ1aW50OGFycmF5IixhKSk6bmV3IGQoYSx0aGlzLmxvYWRPcHRpb25zLm9wdGltaXplZEJpbmFyeVN0cmluZyl9LGxvYWQ6ZnVuY3Rpb24oYSl7dGhpcy5wcmVwYXJlUmVhZGVyKGEpLHRoaXMucmVhZEVuZE9mQ2VudHJhbCgpLHRoaXMucmVhZENlbnRyYWxEaXIoKSx0aGlzLnJlYWRMb2NhbEZpbGVzKCl9fSxiLmV4cG9ydHM9Y30seyIuL25vZGVCdWZmZXJSZWFkZXIiOjEyLCIuL29iamVjdCI6MTMsIi4vc2lnbmF0dXJlIjoxNCwiLi9zdHJpbmdSZWFkZXIiOjE1LCIuL3N1cHBvcnQiOjE3LCIuL3VpbnQ4QXJyYXlSZWFkZXIiOjE4LCIuL3V0aWxzIjoyMSwiLi96aXBFbnRyeSI6MjN9XSwyMzpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYyhhLGIpe3RoaXMub3B0aW9ucz1hLHRoaXMubG9hZE9wdGlvbnM9Yn12YXIgZD1hKCIuL3N0cmluZ1JlYWRlciIpLGU9YSgiLi91dGlscyIpLGY9YSgiLi9jb21wcmVzc2VkT2JqZWN0IiksZz1hKCIuL29iamVjdCIpLGg9MCxpPTM7Yy5wcm90b3R5cGU9e2lzRW5jcnlwdGVkOmZ1bmN0aW9uKCl7cmV0dXJuIDE9PT0oMSZ0aGlzLmJpdEZsYWcpfSx1c2VVVEY4OmZ1bmN0aW9uKCl7cmV0dXJuIDIwNDg9PT0oMjA0OCZ0aGlzLmJpdEZsYWcpfSxwcmVwYXJlQ29tcHJlc3NlZENvbnRlbnQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbigpe3ZhciBkPWEuaW5kZXg7YS5zZXRJbmRleChiKTt2YXIgZT1hLnJlYWREYXRhKGMpO3JldHVybiBhLnNldEluZGV4KGQpLGV9fSxwcmVwYXJlQ29udGVudDpmdW5jdGlvbihhLGIsYyxkLGYpe3JldHVybiBmdW5jdGlvbigpe3ZhciBhPWUudHJhbnNmb3JtVG8oZC51bmNvbXByZXNzSW5wdXRUeXBlLHRoaXMuZ2V0Q29tcHJlc3NlZENvbnRlbnQoKSksYj1kLnVuY29tcHJlc3MoYSk7aWYoYi5sZW5ndGghPT1mKXRocm93IG5ldyBFcnJvcigiQnVnIDogdW5jb21wcmVzc2VkIGRhdGEgc2l6ZSBtaXNtYXRjaCIpO3JldHVybiBifX0scmVhZExvY2FsUGFydDpmdW5jdGlvbihhKXt2YXIgYixjO2lmKGEuc2tpcCgyMiksdGhpcy5maWxlTmFtZUxlbmd0aD1hLnJlYWRJbnQoMiksYz1hLnJlYWRJbnQoMiksdGhpcy5maWxlTmFtZT1hLnJlYWRTdHJpbmcodGhpcy5maWxlTmFtZUxlbmd0aCksYS5za2lwKGMpLC0xPT10aGlzLmNvbXByZXNzZWRTaXplfHwtMT09dGhpcy51bmNvbXByZXNzZWRTaXplKXRocm93IG5ldyBFcnJvcigiQnVnIG9yIGNvcnJ1cHRlZCB6aXAgOiBkaWRuJ3QgZ2V0IGVub3VnaCBpbmZvcm1hdGlvbnMgZnJvbSB0aGUgY2VudHJhbCBkaXJlY3RvcnkgKGNvbXByZXNzZWRTaXplID09IC0xIHx8IHVuY29tcHJlc3NlZFNpemUgPT0gLTEpIik7aWYoYj1lLmZpbmRDb21wcmVzc2lvbih0aGlzLmNvbXByZXNzaW9uTWV0aG9kKSxudWxsPT09Yil0aHJvdyBuZXcgRXJyb3IoIkNvcnJ1cHRlZCB6aXAgOiBjb21wcmVzc2lvbiAiK2UucHJldHR5KHRoaXMuY29tcHJlc3Npb25NZXRob2QpKyIgdW5rbm93biAoaW5uZXIgZmlsZSA6ICIrdGhpcy5maWxlTmFtZSsiKSIpO2lmKHRoaXMuZGVjb21wcmVzc2VkPW5ldyBmLHRoaXMuZGVjb21wcmVzc2VkLmNvbXByZXNzZWRTaXplPXRoaXMuY29tcHJlc3NlZFNpemUsdGhpcy5kZWNvbXByZXNzZWQudW5jb21wcmVzc2VkU2l6ZT10aGlzLnVuY29tcHJlc3NlZFNpemUsdGhpcy5kZWNvbXByZXNzZWQuY3JjMzI9dGhpcy5jcmMzMix0aGlzLmRlY29tcHJlc3NlZC5jb21wcmVzc2lvbk1ldGhvZD10aGlzLmNvbXByZXNzaW9uTWV0aG9kLHRoaXMuZGVjb21wcmVzc2VkLmdldENvbXByZXNzZWRDb250ZW50PXRoaXMucHJlcGFyZUNvbXByZXNzZWRDb250ZW50KGEsYS5pbmRleCx0aGlzLmNvbXByZXNzZWRTaXplLGIpLHRoaXMuZGVjb21wcmVzc2VkLmdldENvbnRlbnQ9dGhpcy5wcmVwYXJlQ29udGVudChhLGEuaW5kZXgsdGhpcy5jb21wcmVzc2VkU2l6ZSxiLHRoaXMudW5jb21wcmVzc2VkU2l6ZSksdGhpcy5sb2FkT3B0aW9ucy5jaGVja0NSQzMyJiYodGhpcy5kZWNvbXByZXNzZWQ9ZS50cmFuc2Zvcm1Ubygic3RyaW5nIix0aGlzLmRlY29tcHJlc3NlZC5nZXRDb250ZW50KCkpLGcuY3JjMzIodGhpcy5kZWNvbXByZXNzZWQpIT09dGhpcy5jcmMzMikpdGhyb3cgbmV3IEVycm9yKCJDb3JydXB0ZWQgemlwIDogQ1JDMzIgbWlzbWF0Y2giKX0scmVhZENlbnRyYWxQYXJ0OmZ1bmN0aW9uKGEpe2lmKHRoaXMudmVyc2lvbk1hZGVCeT1hLnJlYWRJbnQoMiksdGhpcy52ZXJzaW9uTmVlZGVkPWEucmVhZEludCgyKSx0aGlzLmJpdEZsYWc9YS5yZWFkSW50KDIpLHRoaXMuY29tcHJlc3Npb25NZXRob2Q9YS5yZWFkU3RyaW5nKDIpLHRoaXMuZGF0ZT1hLnJlYWREYXRlKCksdGhpcy5jcmMzMj1hLnJlYWRJbnQoNCksdGhpcy5jb21wcmVzc2VkU2l6ZT1hLnJlYWRJbnQoNCksdGhpcy51bmNvbXByZXNzZWRTaXplPWEucmVhZEludCg0KSx0aGlzLmZpbGVOYW1lTGVuZ3RoPWEucmVhZEludCgyKSx0aGlzLmV4dHJhRmllbGRzTGVuZ3RoPWEucmVhZEludCgyKSx0aGlzLmZpbGVDb21tZW50TGVuZ3RoPWEucmVhZEludCgyKSx0aGlzLmRpc2tOdW1iZXJTdGFydD1hLnJlYWRJbnQoMiksdGhpcy5pbnRlcm5hbEZpbGVBdHRyaWJ1dGVzPWEucmVhZEludCgyKSx0aGlzLmV4dGVybmFsRmlsZUF0dHJpYnV0ZXM9YS5yZWFkSW50KDQpLHRoaXMubG9jYWxIZWFkZXJPZmZzZXQ9YS5yZWFkSW50KDQpLHRoaXMuaXNFbmNyeXB0ZWQoKSl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRlZCB6aXAgYXJlIG5vdCBzdXBwb3J0ZWQiKTt0aGlzLmZpbGVOYW1lPWEucmVhZFN0cmluZyh0aGlzLmZpbGVOYW1lTGVuZ3RoKSx0aGlzLnJlYWRFeHRyYUZpZWxkcyhhKSx0aGlzLnBhcnNlWklQNjRFeHRyYUZpZWxkKGEpLHRoaXMuZmlsZUNvbW1lbnQ9YS5yZWFkU3RyaW5nKHRoaXMuZmlsZUNvbW1lbnRMZW5ndGgpfSxwcm9jZXNzQXR0cmlidXRlczpmdW5jdGlvbigpe3RoaXMudW5peFBlcm1pc3Npb25zPW51bGwsdGhpcy5kb3NQZXJtaXNzaW9ucz1udWxsO3ZhciBhPXRoaXMudmVyc2lvbk1hZGVCeT4+ODt0aGlzLmRpcj0xNiZ0aGlzLmV4dGVybmFsRmlsZUF0dHJpYnV0ZXM/ITA6ITEsYT09PWgmJih0aGlzLmRvc1Blcm1pc3Npb25zPTYzJnRoaXMuZXh0ZXJuYWxGaWxlQXR0cmlidXRlcyksYT09PWkmJih0aGlzLnVuaXhQZXJtaXNzaW9ucz10aGlzLmV4dGVybmFsRmlsZUF0dHJpYnV0ZXM+PjE2JjY1NTM1KSx0aGlzLmRpcnx8Ii8iIT09dGhpcy5maWxlTmFtZS5zbGljZSgtMSl8fCh0aGlzLmRpcj0hMCl9LHBhcnNlWklQNjRFeHRyYUZpZWxkOmZ1bmN0aW9uKCl7aWYodGhpcy5leHRyYUZpZWxkc1sxXSl7dmFyIGE9bmV3IGQodGhpcy5leHRyYUZpZWxkc1sxXS52YWx1ZSk7dGhpcy51bmNvbXByZXNzZWRTaXplPT09ZS5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy51bmNvbXByZXNzZWRTaXplPWEucmVhZEludCg4KSksdGhpcy5jb21wcmVzc2VkU2l6ZT09PWUuTUFYX1ZBTFVFXzMyQklUUyYmKHRoaXMuY29tcHJlc3NlZFNpemU9YS5yZWFkSW50KDgpKSx0aGlzLmxvY2FsSGVhZGVyT2Zmc2V0PT09ZS5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy5sb2NhbEhlYWRlck9mZnNldD1hLnJlYWRJbnQoOCkpLHRoaXMuZGlza051bWJlclN0YXJ0PT09ZS5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy5kaXNrTnVtYmVyU3RhcnQ9YS5yZWFkSW50KDQpKX19LHJlYWRFeHRyYUZpZWxkczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZT1hLmluZGV4O2Zvcih0aGlzLmV4dHJhRmllbGRzPXRoaXMuZXh0cmFGaWVsZHN8fHt9O2EuaW5kZXg8ZSt0aGlzLmV4dHJhRmllbGRzTGVuZ3RoOyliPWEucmVhZEludCgyKSxjPWEucmVhZEludCgyKSxkPWEucmVhZFN0cmluZyhjKSx0aGlzLmV4dHJhRmllbGRzW2JdPXtpZDpiLGxlbmd0aDpjLHZhbHVlOmR9fSxoYW5kbGVVVEY4OmZ1bmN0aW9uKCl7aWYodGhpcy51c2VVVEY4KCkpdGhpcy5maWxlTmFtZT1nLnV0ZjhkZWNvZGUodGhpcy5maWxlTmFtZSksdGhpcy5maWxlQ29tbWVudD1nLnV0ZjhkZWNvZGUodGhpcy5maWxlQ29tbWVudCk7ZWxzZXt2YXIgYT10aGlzLmZpbmRFeHRyYUZpZWxkVW5pY29kZVBhdGgoKTtudWxsIT09YSYmKHRoaXMuZmlsZU5hbWU9YSk7dmFyIGI9dGhpcy5maW5kRXh0cmFGaWVsZFVuaWNvZGVDb21tZW50KCk7bnVsbCE9PWImJih0aGlzLmZpbGVDb21tZW50PWIpfX0sZmluZEV4dHJhRmllbGRVbmljb2RlUGF0aDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZXh0cmFGaWVsZHNbMjg3ODldO2lmKGEpe3ZhciBiPW5ldyBkKGEudmFsdWUpO3JldHVybiAxIT09Yi5yZWFkSW50KDEpP251bGw6Zy5jcmMzMih0aGlzLmZpbGVOYW1lKSE9PWIucmVhZEludCg0KT9udWxsOmcudXRmOGRlY29kZShiLnJlYWRTdHJpbmcoYS5sZW5ndGgtNSkpCn1yZXR1cm4gbnVsbH0sZmluZEV4dHJhRmllbGRVbmljb2RlQ29tbWVudDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZXh0cmFGaWVsZHNbMjU0NjFdO2lmKGEpe3ZhciBiPW5ldyBkKGEudmFsdWUpO3JldHVybiAxIT09Yi5yZWFkSW50KDEpP251bGw6Zy5jcmMzMih0aGlzLmZpbGVDb21tZW50KSE9PWIucmVhZEludCg0KT9udWxsOmcudXRmOGRlY29kZShiLnJlYWRTdHJpbmcoYS5sZW5ndGgtNSkpfXJldHVybiBudWxsfX0sYi5leHBvcnRzPWN9LHsiLi9jb21wcmVzc2VkT2JqZWN0IjoyLCIuL29iamVjdCI6MTMsIi4vc3RyaW5nUmVhZGVyIjoxNSwiLi91dGlscyI6MjF9XSwyNDpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7dmFyIGM9YSgiLi9saWIvdXRpbHMvY29tbW9uIikuYXNzaWduLGQ9YSgiLi9saWIvZGVmbGF0ZSIpLGU9YSgiLi9saWIvaW5mbGF0ZSIpLGY9YSgiLi9saWIvemxpYi9jb25zdGFudHMiKSxnPXt9O2MoZyxkLGUsZiksYi5leHBvcnRzPWd9LHsiLi9saWIvZGVmbGF0ZSI6MjUsIi4vbGliL2luZmxhdGUiOjI2LCIuL2xpYi91dGlscy9jb21tb24iOjI3LCIuL2xpYi96bGliL2NvbnN0YW50cyI6MzB9XSwyNTpbZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKGEsYil7dmFyIGM9bmV3IHMoYik7aWYoYy5wdXNoKGEsITApLGMuZXJyKXRocm93IGMubXNnO3JldHVybiBjLnJlc3VsdH1mdW5jdGlvbiBlKGEsYil7cmV0dXJuIGI9Ynx8e30sYi5yYXc9ITAsZChhLGIpfWZ1bmN0aW9uIGYoYSxiKXtyZXR1cm4gYj1ifHx7fSxiLmd6aXA9ITAsZChhLGIpfXZhciBnPWEoIi4vemxpYi9kZWZsYXRlLmpzIiksaD1hKCIuL3V0aWxzL2NvbW1vbiIpLGk9YSgiLi91dGlscy9zdHJpbmdzIiksaj1hKCIuL3psaWIvbWVzc2FnZXMiKSxrPWEoIi4vemxpYi96c3RyZWFtIiksbD0wLG09NCxuPTAsbz0xLHA9LTEscT0wLHI9OCxzPWZ1bmN0aW9uKGEpe3RoaXMub3B0aW9ucz1oLmFzc2lnbih7bGV2ZWw6cCxtZXRob2Q6cixjaHVua1NpemU6MTYzODQsd2luZG93Qml0czoxNSxtZW1MZXZlbDo4LHN0cmF0ZWd5OnEsdG86IiJ9LGF8fHt9KTt2YXIgYj10aGlzLm9wdGlvbnM7Yi5yYXcmJmIud2luZG93Qml0cz4wP2Iud2luZG93Qml0cz0tYi53aW5kb3dCaXRzOmIuZ3ppcCYmYi53aW5kb3dCaXRzPjAmJmIud2luZG93Qml0czwxNiYmKGIud2luZG93Qml0cys9MTYpLHRoaXMuZXJyPTAsdGhpcy5tc2c9IiIsdGhpcy5lbmRlZD0hMSx0aGlzLmNodW5rcz1bXSx0aGlzLnN0cm09bmV3IGssdGhpcy5zdHJtLmF2YWlsX291dD0wO3ZhciBjPWcuZGVmbGF0ZUluaXQyKHRoaXMuc3RybSxiLmxldmVsLGIubWV0aG9kLGIud2luZG93Qml0cyxiLm1lbUxldmVsLGIuc3RyYXRlZ3kpO2lmKGMhPT1uKXRocm93IG5ldyBFcnJvcihqW2NdKTtiLmhlYWRlciYmZy5kZWZsYXRlU2V0SGVhZGVyKHRoaXMuc3RybSxiLmhlYWRlcil9O3MucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9dGhpcy5zdHJtLGY9dGhpcy5vcHRpb25zLmNodW5rU2l6ZTtpZih0aGlzLmVuZGVkKXJldHVybiExO2Q9Yj09PX5+Yj9iOmI9PT0hMD9tOmwsZS5pbnB1dD0ic3RyaW5nIj09dHlwZW9mIGE/aS5zdHJpbmcyYnVmKGEpOmEsZS5uZXh0X2luPTAsZS5hdmFpbF9pbj1lLmlucHV0Lmxlbmd0aDtkb3tpZigwPT09ZS5hdmFpbF9vdXQmJihlLm91dHB1dD1uZXcgaC5CdWY4KGYpLGUubmV4dF9vdXQ9MCxlLmF2YWlsX291dD1mKSxjPWcuZGVmbGF0ZShlLGQpLGMhPT1vJiZjIT09bilyZXR1cm4gdGhpcy5vbkVuZChjKSx0aGlzLmVuZGVkPSEwLCExOygwPT09ZS5hdmFpbF9vdXR8fDA9PT1lLmF2YWlsX2luJiZkPT09bSkmJnRoaXMub25EYXRhKCJzdHJpbmciPT09dGhpcy5vcHRpb25zLnRvP2kuYnVmMmJpbnN0cmluZyhoLnNocmlua0J1ZihlLm91dHB1dCxlLm5leHRfb3V0KSk6aC5zaHJpbmtCdWYoZS5vdXRwdXQsZS5uZXh0X291dCkpfXdoaWxlKChlLmF2YWlsX2luPjB8fDA9PT1lLmF2YWlsX291dCkmJmMhPT1vKTtyZXR1cm4gZD09PW0/KGM9Zy5kZWZsYXRlRW5kKHRoaXMuc3RybSksdGhpcy5vbkVuZChjKSx0aGlzLmVuZGVkPSEwLGM9PT1uKTohMH0scy5wcm90b3R5cGUub25EYXRhPWZ1bmN0aW9uKGEpe3RoaXMuY2h1bmtzLnB1c2goYSl9LHMucHJvdG90eXBlLm9uRW5kPWZ1bmN0aW9uKGEpe2E9PT1uJiYodGhpcy5yZXN1bHQ9InN0cmluZyI9PT10aGlzLm9wdGlvbnMudG8/dGhpcy5jaHVua3Muam9pbigiIik6aC5mbGF0dGVuQ2h1bmtzKHRoaXMuY2h1bmtzKSksdGhpcy5jaHVua3M9W10sdGhpcy5lcnI9YSx0aGlzLm1zZz10aGlzLnN0cm0ubXNnfSxjLkRlZmxhdGU9cyxjLmRlZmxhdGU9ZCxjLmRlZmxhdGVSYXc9ZSxjLmd6aXA9Zn0seyIuL3V0aWxzL2NvbW1vbiI6MjcsIi4vdXRpbHMvc3RyaW5ncyI6MjgsIi4vemxpYi9kZWZsYXRlLmpzIjozMiwiLi96bGliL21lc3NhZ2VzIjozNywiLi96bGliL3pzdHJlYW0iOjM5fV0sMjY6W2Z1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhLGIpe3ZhciBjPW5ldyBtKGIpO2lmKGMucHVzaChhLCEwKSxjLmVycil0aHJvdyBjLm1zZztyZXR1cm4gYy5yZXN1bHR9ZnVuY3Rpb24gZShhLGIpe3JldHVybiBiPWJ8fHt9LGIucmF3PSEwLGQoYSxiKX12YXIgZj1hKCIuL3psaWIvaW5mbGF0ZS5qcyIpLGc9YSgiLi91dGlscy9jb21tb24iKSxoPWEoIi4vdXRpbHMvc3RyaW5ncyIpLGk9YSgiLi96bGliL2NvbnN0YW50cyIpLGo9YSgiLi96bGliL21lc3NhZ2VzIiksaz1hKCIuL3psaWIvenN0cmVhbSIpLGw9YSgiLi96bGliL2d6aGVhZGVyIiksbT1mdW5jdGlvbihhKXt0aGlzLm9wdGlvbnM9Zy5hc3NpZ24oe2NodW5rU2l6ZToxNjM4NCx3aW5kb3dCaXRzOjAsdG86IiJ9LGF8fHt9KTt2YXIgYj10aGlzLm9wdGlvbnM7Yi5yYXcmJmIud2luZG93Qml0cz49MCYmYi53aW5kb3dCaXRzPDE2JiYoYi53aW5kb3dCaXRzPS1iLndpbmRvd0JpdHMsMD09PWIud2luZG93Qml0cyYmKGIud2luZG93Qml0cz0tMTUpKSwhKGIud2luZG93Qml0cz49MCYmYi53aW5kb3dCaXRzPDE2KXx8YSYmYS53aW5kb3dCaXRzfHwoYi53aW5kb3dCaXRzKz0zMiksYi53aW5kb3dCaXRzPjE1JiZiLndpbmRvd0JpdHM8NDgmJjA9PT0oMTUmYi53aW5kb3dCaXRzKSYmKGIud2luZG93Qml0c3w9MTUpLHRoaXMuZXJyPTAsdGhpcy5tc2c9IiIsdGhpcy5lbmRlZD0hMSx0aGlzLmNodW5rcz1bXSx0aGlzLnN0cm09bmV3IGssdGhpcy5zdHJtLmF2YWlsX291dD0wO3ZhciBjPWYuaW5mbGF0ZUluaXQyKHRoaXMuc3RybSxiLndpbmRvd0JpdHMpO2lmKGMhPT1pLlpfT0spdGhyb3cgbmV3IEVycm9yKGpbY10pO3RoaXMuaGVhZGVyPW5ldyBsLGYuaW5mbGF0ZUdldEhlYWRlcih0aGlzLnN0cm0sdGhpcy5oZWFkZXIpfTttLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGosayxsPXRoaXMuc3RybSxtPXRoaXMub3B0aW9ucy5jaHVua1NpemU7aWYodGhpcy5lbmRlZClyZXR1cm4hMTtkPWI9PT1+fmI/YjpiPT09ITA/aS5aX0ZJTklTSDppLlpfTk9fRkxVU0gsbC5pbnB1dD0ic3RyaW5nIj09dHlwZW9mIGE/aC5iaW5zdHJpbmcyYnVmKGEpOmEsbC5uZXh0X2luPTAsbC5hdmFpbF9pbj1sLmlucHV0Lmxlbmd0aDtkb3tpZigwPT09bC5hdmFpbF9vdXQmJihsLm91dHB1dD1uZXcgZy5CdWY4KG0pLGwubmV4dF9vdXQ9MCxsLmF2YWlsX291dD1tKSxjPWYuaW5mbGF0ZShsLGkuWl9OT19GTFVTSCksYyE9PWkuWl9TVFJFQU1fRU5EJiZjIT09aS5aX09LKXJldHVybiB0aGlzLm9uRW5kKGMpLHRoaXMuZW5kZWQ9ITAsITE7bC5uZXh0X291dCYmKDA9PT1sLmF2YWlsX291dHx8Yz09PWkuWl9TVFJFQU1fRU5EfHwwPT09bC5hdmFpbF9pbiYmZD09PWkuWl9GSU5JU0gpJiYoInN0cmluZyI9PT10aGlzLm9wdGlvbnMudG8/KGU9aC51dGY4Ym9yZGVyKGwub3V0cHV0LGwubmV4dF9vdXQpLGo9bC5uZXh0X291dC1lLGs9aC5idWYyc3RyaW5nKGwub3V0cHV0LGUpLGwubmV4dF9vdXQ9aixsLmF2YWlsX291dD1tLWosaiYmZy5hcnJheVNldChsLm91dHB1dCxsLm91dHB1dCxlLGosMCksdGhpcy5vbkRhdGEoaykpOnRoaXMub25EYXRhKGcuc2hyaW5rQnVmKGwub3V0cHV0LGwubmV4dF9vdXQpKSl9d2hpbGUobC5hdmFpbF9pbj4wJiZjIT09aS5aX1NUUkVBTV9FTkQpO3JldHVybiBjPT09aS5aX1NUUkVBTV9FTkQmJihkPWkuWl9GSU5JU0gpLGQ9PT1pLlpfRklOSVNIPyhjPWYuaW5mbGF0ZUVuZCh0aGlzLnN0cm0pLHRoaXMub25FbmQoYyksdGhpcy5lbmRlZD0hMCxjPT09aS5aX09LKTohMH0sbS5wcm90b3R5cGUub25EYXRhPWZ1bmN0aW9uKGEpe3RoaXMuY2h1bmtzLnB1c2goYSl9LG0ucHJvdG90eXBlLm9uRW5kPWZ1bmN0aW9uKGEpe2E9PT1pLlpfT0smJih0aGlzLnJlc3VsdD0ic3RyaW5nIj09PXRoaXMub3B0aW9ucy50bz90aGlzLmNodW5rcy5qb2luKCIiKTpnLmZsYXR0ZW5DaHVua3ModGhpcy5jaHVua3MpKSx0aGlzLmNodW5rcz1bXSx0aGlzLmVycj1hLHRoaXMubXNnPXRoaXMuc3RybS5tc2d9LGMuSW5mbGF0ZT1tLGMuaW5mbGF0ZT1kLGMuaW5mbGF0ZVJhdz1lLGMudW5nemlwPWR9LHsiLi91dGlscy9jb21tb24iOjI3LCIuL3V0aWxzL3N0cmluZ3MiOjI4LCIuL3psaWIvY29uc3RhbnRzIjozMCwiLi96bGliL2d6aGVhZGVyIjozMywiLi96bGliL2luZmxhdGUuanMiOjM1LCIuL3psaWIvbWVzc2FnZXMiOjM3LCIuL3psaWIvenN0cmVhbSI6Mzl9XSwyNzpbZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgZD0idW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXkmJiJ1bmRlZmluZWQiIT10eXBlb2YgVWludDE2QXJyYXkmJiJ1bmRlZmluZWQiIT10eXBlb2YgSW50MzJBcnJheTtjLmFzc2lnbj1mdW5jdGlvbihhKXtmb3IodmFyIGI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2IubGVuZ3RoOyl7dmFyIGM9Yi5zaGlmdCgpO2lmKGMpe2lmKCJvYmplY3QiIT10eXBlb2YgYyl0aHJvdyBuZXcgVHlwZUVycm9yKGMrIm11c3QgYmUgbm9uLW9iamVjdCIpO2Zvcih2YXIgZCBpbiBjKWMuaGFzT3duUHJvcGVydHkoZCkmJihhW2RdPWNbZF0pfX1yZXR1cm4gYX0sYy5zaHJpbmtCdWY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5sZW5ndGg9PT1iP2E6YS5zdWJhcnJheT9hLnN1YmFycmF5KDAsYik6KGEubGVuZ3RoPWIsYSl9O3ZhciBlPXthcnJheVNldDpmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGIuc3ViYXJyYXkmJmEuc3ViYXJyYXkpcmV0dXJuIHZvaWQgYS5zZXQoYi5zdWJhcnJheShjLGMrZCksZSk7Zm9yKHZhciBmPTA7ZD5mO2YrKylhW2UrZl09YltjK2ZdfSxmbGF0dGVuQ2h1bmtzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZztmb3IoZD0wLGI9MCxjPWEubGVuZ3RoO2M+YjtiKyspZCs9YVtiXS5sZW5ndGg7Zm9yKGc9bmV3IFVpbnQ4QXJyYXkoZCksZT0wLGI9MCxjPWEubGVuZ3RoO2M+YjtiKyspZj1hW2JdLGcuc2V0KGYsZSksZSs9Zi5sZW5ndGg7cmV0dXJuIGd9fSxmPXthcnJheVNldDpmdW5jdGlvbihhLGIsYyxkLGUpe2Zvcih2YXIgZj0wO2Q+ZjtmKyspYVtlK2ZdPWJbYytmXX0sZmxhdHRlbkNodW5rczpmdW5jdGlvbihhKXtyZXR1cm5bXS5jb25jYXQuYXBwbHkoW10sYSl9fTtjLnNldFR5cGVkPWZ1bmN0aW9uKGEpe2E/KGMuQnVmOD1VaW50OEFycmF5LGMuQnVmMTY9VWludDE2QXJyYXksYy5CdWYzMj1JbnQzMkFycmF5LGMuYXNzaWduKGMsZSkpOihjLkJ1Zjg9QXJyYXksYy5CdWYxNj1BcnJheSxjLkJ1ZjMyPUFycmF5LGMuYXNzaWduKGMsZikpfSxjLnNldFR5cGVkKGQpfSx7fV0sMjg6W2Z1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhLGIpe2lmKDY1NTM3PmImJihhLnN1YmFycmF5JiZnfHwhYS5zdWJhcnJheSYmZikpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxlLnNocmlua0J1ZihhLGIpKTtmb3IodmFyIGM9IiIsZD0wO2I+ZDtkKyspYys9U3RyaW5nLmZyb21DaGFyQ29kZShhW2RdKTtyZXR1cm4gY312YXIgZT1hKCIuL2NvbW1vbiIpLGY9ITAsZz0hMDt0cnl7U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLFswXSl9Y2F0Y2goaCl7Zj0hMX10cnl7U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLG5ldyBVaW50OEFycmF5KDEpKX1jYXRjaChoKXtnPSExfWZvcih2YXIgaT1uZXcgZS5CdWY4KDI1Niksaj0wOzI1Nj5qO2orKylpW2pdPWo+PTI1Mj82Omo+PTI0OD81Omo+PTI0MD80Omo+PTIyND8zOmo+PTE5Mj8yOjE7aVsyNTRdPWlbMjU0XT0xLGMuc3RyaW5nMmJ1Zj1mdW5jdGlvbihhKXt2YXIgYixjLGQsZixnLGg9YS5sZW5ndGgsaT0wO2ZvcihmPTA7aD5mO2YrKyljPWEuY2hhckNvZGVBdChmKSw1NTI5Nj09PSg2NDUxMiZjKSYmaD5mKzEmJihkPWEuY2hhckNvZGVBdChmKzEpLDU2MzIwPT09KDY0NTEyJmQpJiYoYz02NTUzNisoYy01NTI5Njw8MTApKyhkLTU2MzIwKSxmKyspKSxpKz0xMjg+Yz8xOjIwNDg+Yz8yOjY1NTM2PmM/Mzo0O2ZvcihiPW5ldyBlLkJ1ZjgoaSksZz0wLGY9MDtpPmc7ZisrKWM9YS5jaGFyQ29kZUF0KGYpLDU1Mjk2PT09KDY0NTEyJmMpJiZoPmYrMSYmKGQ9YS5jaGFyQ29kZUF0KGYrMSksNTYzMjA9PT0oNjQ1MTImZCkmJihjPTY1NTM2KyhjLTU1Mjk2PDwxMCkrKGQtNTYzMjApLGYrKykpLDEyOD5jP2JbZysrXT1jOjIwNDg+Yz8oYltnKytdPTE5MnxjPj4+NixiW2crK109MTI4fDYzJmMpOjY1NTM2PmM/KGJbZysrXT0yMjR8Yz4+PjEyLGJbZysrXT0xMjh8Yz4+PjYmNjMsYltnKytdPTEyOHw2MyZjKTooYltnKytdPTI0MHxjPj4+MTgsYltnKytdPTEyOHxjPj4+MTImNjMsYltnKytdPTEyOHxjPj4+NiY2MyxiW2crK109MTI4fDYzJmMpO3JldHVybiBifSxjLmJ1ZjJiaW5zdHJpbmc9ZnVuY3Rpb24oYSl7cmV0dXJuIGQoYSxhLmxlbmd0aCl9LGMuYmluc3RyaW5nMmJ1Zj1mdW5jdGlvbihhKXtmb3IodmFyIGI9bmV3IGUuQnVmOChhLmxlbmd0aCksYz0wLGQ9Yi5sZW5ndGg7ZD5jO2MrKyliW2NdPWEuY2hhckNvZGVBdChjKTtyZXR1cm4gYn0sYy5idWYyc3RyaW5nPWZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaD1ifHxhLmxlbmd0aCxqPW5ldyBBcnJheSgyKmgpO2ZvcihlPTAsYz0wO2g+YzspaWYoZj1hW2MrK10sMTI4PmYpaltlKytdPWY7ZWxzZSBpZihnPWlbZl0sZz40KWpbZSsrXT02NTUzMyxjKz1nLTE7ZWxzZXtmb3IoZiY9Mj09PWc/MzE6Mz09PWc/MTU6NztnPjEmJmg+YzspZj1mPDw2fDYzJmFbYysrXSxnLS07Zz4xP2pbZSsrXT02NTUzMzo2NTUzNj5mP2pbZSsrXT1mOihmLT02NTUzNixqW2UrK109NTUyOTZ8Zj4+MTAmMTAyMyxqW2UrK109NTYzMjB8MTAyMyZmKX1yZXR1cm4gZChqLGUpfSxjLnV0Zjhib3JkZXI9ZnVuY3Rpb24oYSxiKXt2YXIgYztmb3IoYj1ifHxhLmxlbmd0aCxiPmEubGVuZ3RoJiYoYj1hLmxlbmd0aCksYz1iLTE7Yz49MCYmMTI4PT09KDE5MiZhW2NdKTspYy0tO3JldHVybiAwPmM/YjowPT09Yz9iOmMraVthW2NdXT5iP2M6Yn19LHsiLi9jb21tb24iOjI3fV0sMjk6W2Z1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGMoYSxiLGMsZCl7Zm9yKHZhciBlPTY1NTM1JmF8MCxmPWE+Pj4xNiY2NTUzNXwwLGc9MDswIT09Yzspe2c9Yz4yZTM/MmUzOmMsYy09ZztkbyBlPWUrYltkKytdfDAsZj1mK2V8MDt3aGlsZSgtLWcpO2UlPTY1NTIxLGYlPTY1NTIxfXJldHVybiBlfGY8PDE2fDB9Yi5leHBvcnRzPWN9LHt9XSwzMDpbZnVuY3Rpb24oYSxiKXtiLmV4cG9ydHM9e1pfTk9fRkxVU0g6MCxaX1BBUlRJQUxfRkxVU0g6MSxaX1NZTkNfRkxVU0g6MixaX0ZVTExfRkxVU0g6MyxaX0ZJTklTSDo0LFpfQkxPQ0s6NSxaX1RSRUVTOjYsWl9PSzowLFpfU1RSRUFNX0VORDoxLFpfTkVFRF9ESUNUOjIsWl9FUlJOTzotMSxaX1NUUkVBTV9FUlJPUjotMixaX0RBVEFfRVJST1I6LTMsWl9CVUZfRVJST1I6LTUsWl9OT19DT01QUkVTU0lPTjowLFpfQkVTVF9TUEVFRDoxLFpfQkVTVF9DT01QUkVTU0lPTjo5LFpfREVGQVVMVF9DT01QUkVTU0lPTjotMSxaX0ZJTFRFUkVEOjEsWl9IVUZGTUFOX09OTFk6MixaX1JMRTozLFpfRklYRUQ6NCxaX0RFRkFVTFRfU1RSQVRFR1k6MCxaX0JJTkFSWTowLFpfVEVYVDoxLFpfVU5LTk9XTjoyLFpfREVGTEFURUQ6OH19LHt9XSwzMTpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYygpe2Zvcih2YXIgYSxiPVtdLGM9MDsyNTY+YztjKyspe2E9Yztmb3IodmFyIGQ9MDs4PmQ7ZCsrKWE9MSZhPzM5ODgyOTIzODReYT4+PjE6YT4+PjE7YltjXT1hfXJldHVybiBifWZ1bmN0aW9uIGQoYSxiLGMsZCl7dmFyIGY9ZSxnPWQrYzthPS0xXmE7Zm9yKHZhciBoPWQ7Zz5oO2grKylhPWE+Pj44XmZbMjU1JihhXmJbaF0pXTtyZXR1cm4tMV5hfXZhciBlPWMoKTtiLmV4cG9ydHM9ZH0se31dLDMyOltmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSxiKXtyZXR1cm4gYS5tc2c9R1tiXSxifWZ1bmN0aW9uIGUoYSl7cmV0dXJuKGE8PDEpLShhPjQ/OTowKX1mdW5jdGlvbiBmKGEpe2Zvcih2YXIgYj1hLmxlbmd0aDstLWI+PTA7KWFbYl09MH1mdW5jdGlvbiBnKGEpe3ZhciBiPWEuc3RhdGUsYz1iLnBlbmRpbmc7Yz5hLmF2YWlsX291dCYmKGM9YS5hdmFpbF9vdXQpLDAhPT1jJiYoQy5hcnJheVNldChhLm91dHB1dCxiLnBlbmRpbmdfYnVmLGIucGVuZGluZ19vdXQsYyxhLm5leHRfb3V0KSxhLm5leHRfb3V0Kz1jLGIucGVuZGluZ19vdXQrPWMsYS50b3RhbF9vdXQrPWMsYS5hdmFpbF9vdXQtPWMsYi5wZW5kaW5nLT1jLDA9PT1iLnBlbmRpbmcmJihiLnBlbmRpbmdfb3V0PTApKX1mdW5jdGlvbiBoKGEsYil7RC5fdHJfZmx1c2hfYmxvY2soYSxhLmJsb2NrX3N0YXJ0Pj0wP2EuYmxvY2tfc3RhcnQ6LTEsYS5zdHJzdGFydC1hLmJsb2NrX3N0YXJ0LGIpLGEuYmxvY2tfc3RhcnQ9YS5zdHJzdGFydCxnKGEuc3RybSl9ZnVuY3Rpb24gaShhLGIpe2EucGVuZGluZ19idWZbYS5wZW5kaW5nKytdPWJ9ZnVuY3Rpb24gaihhLGIpe2EucGVuZGluZ19idWZbYS5wZW5kaW5nKytdPWI+Pj44JjI1NSxhLnBlbmRpbmdfYnVmW2EucGVuZGluZysrXT0yNTUmYn1mdW5jdGlvbiBrKGEsYixjLGQpe3ZhciBlPWEuYXZhaWxfaW47cmV0dXJuIGU+ZCYmKGU9ZCksMD09PWU/MDooYS5hdmFpbF9pbi09ZSxDLmFycmF5U2V0KGIsYS5pbnB1dCxhLm5leHRfaW4sZSxjKSwxPT09YS5zdGF0ZS53cmFwP2EuYWRsZXI9RShhLmFkbGVyLGIsZSxjKToyPT09YS5zdGF0ZS53cmFwJiYoYS5hZGxlcj1GKGEuYWRsZXIsYixlLGMpKSxhLm5leHRfaW4rPWUsYS50b3RhbF9pbis9ZSxlKX1mdW5jdGlvbiBsKGEsYil7dmFyIGMsZCxlPWEubWF4X2NoYWluX2xlbmd0aCxmPWEuc3Ryc3RhcnQsZz1hLnByZXZfbGVuZ3RoLGg9YS5uaWNlX21hdGNoLGk9YS5zdHJzdGFydD5hLndfc2l6ZS1qYj9hLnN0cnN0YXJ0LShhLndfc2l6ZS1qYik6MCxqPWEud2luZG93LGs9YS53X21hc2ssbD1hLnByZXYsbT1hLnN0cnN0YXJ0K2liLG49altmK2ctMV0sbz1qW2YrZ107YS5wcmV2X2xlbmd0aD49YS5nb29kX21hdGNoJiYoZT4+PTIpLGg+YS5sb29rYWhlYWQmJihoPWEubG9va2FoZWFkKTtkbyBpZihjPWIsaltjK2ddPT09byYmaltjK2ctMV09PT1uJiZqW2NdPT09altmXSYmalsrK2NdPT09altmKzFdKXtmKz0yLGMrKztkbzt3aGlsZShqWysrZl09PT1qWysrY10mJmpbKytmXT09PWpbKytjXSYmalsrK2ZdPT09alsrK2NdJiZqWysrZl09PT1qWysrY10mJmpbKytmXT09PWpbKytjXSYmalsrK2ZdPT09alsrK2NdJiZqWysrZl09PT1qWysrY10mJmpbKytmXT09PWpbKytjXSYmbT5mKTtpZihkPWliLShtLWYpLGY9bS1pYixkPmcpe2lmKGEubWF0Y2hfc3RhcnQ9YixnPWQsZD49aClicmVhaztuPWpbZitnLTFdLG89altmK2ddfX13aGlsZSgoYj1sW2Ima10pPmkmJjAhPT0tLWUpO3JldHVybiBnPD1hLmxvb2thaGVhZD9nOmEubG9va2FoZWFkfWZ1bmN0aW9uIG0oYSl7dmFyIGIsYyxkLGUsZixnPWEud19zaXplO2Rve2lmKGU9YS53aW5kb3dfc2l6ZS1hLmxvb2thaGVhZC1hLnN0cnN0YXJ0LGEuc3Ryc3RhcnQ+PWcrKGctamIpKXtDLmFycmF5U2V0KGEud2luZG93LGEud2luZG93LGcsZywwKSxhLm1hdGNoX3N0YXJ0LT1nLGEuc3Ryc3RhcnQtPWcsYS5ibG9ja19zdGFydC09ZyxjPWEuaGFzaF9zaXplLGI9YztkbyBkPWEuaGVhZFstLWJdLGEuaGVhZFtiXT1kPj1nP2QtZzowO3doaWxlKC0tYyk7Yz1nLGI9YztkbyBkPWEucHJldlstLWJdLGEucHJldltiXT1kPj1nP2QtZzowO3doaWxlKC0tYyk7ZSs9Z31pZigwPT09YS5zdHJtLmF2YWlsX2luKWJyZWFrO2lmKGM9ayhhLnN0cm0sYS53aW5kb3csYS5zdHJzdGFydCthLmxvb2thaGVhZCxlKSxhLmxvb2thaGVhZCs9YyxhLmxvb2thaGVhZCthLmluc2VydD49aGIpZm9yKGY9YS5zdHJzdGFydC1hLmluc2VydCxhLmluc19oPWEud2luZG93W2ZdLGEuaW5zX2g9KGEuaW5zX2g8PGEuaGFzaF9zaGlmdF5hLndpbmRvd1tmKzFdKSZhLmhhc2hfbWFzazthLmluc2VydCYmKGEuaW5zX2g9KGEuaW5zX2g8PGEuaGFzaF9zaGlmdF5hLndpbmRvd1tmK2hiLTFdKSZhLmhhc2hfbWFzayxhLnByZXZbZiZhLndfbWFza109YS5oZWFkW2EuaW5zX2hdLGEuaGVhZFthLmluc19oXT1mLGYrKyxhLmluc2VydC0tLCEoYS5sb29rYWhlYWQrYS5pbnNlcnQ8aGIpKTspO313aGlsZShhLmxvb2thaGVhZDxqYiYmMCE9PWEuc3RybS5hdmFpbF9pbil9ZnVuY3Rpb24gbihhLGIpe3ZhciBjPTY1NTM1O2ZvcihjPmEucGVuZGluZ19idWZfc2l6ZS01JiYoYz1hLnBlbmRpbmdfYnVmX3NpemUtNSk7Oyl7aWYoYS5sb29rYWhlYWQ8PTEpe2lmKG0oYSksMD09PWEubG9va2FoZWFkJiZiPT09SClyZXR1cm4gc2I7aWYoMD09PWEubG9va2FoZWFkKWJyZWFrfWEuc3Ryc3RhcnQrPWEubG9va2FoZWFkLGEubG9va2FoZWFkPTA7dmFyIGQ9YS5ibG9ja19zdGFydCtjO2lmKCgwPT09YS5zdHJzdGFydHx8YS5zdHJzdGFydD49ZCkmJihhLmxvb2thaGVhZD1hLnN0cnN0YXJ0LWQsYS5zdHJzdGFydD1kLGgoYSwhMSksMD09PWEuc3RybS5hdmFpbF9vdXQpKXJldHVybiBzYjtpZihhLnN0cnN0YXJ0LWEuYmxvY2tfc3RhcnQ+PWEud19zaXplLWpiJiYoaChhLCExKSwwPT09YS5zdHJtLmF2YWlsX291dCkpcmV0dXJuIHNifXJldHVybiBhLmluc2VydD0wLGI9PT1LPyhoKGEsITApLDA9PT1hLnN0cm0uYXZhaWxfb3V0P3ViOnZiKTphLnN0cnN0YXJ0PmEuYmxvY2tfc3RhcnQmJihoKGEsITEpLDA9PT1hLnN0cm0uYXZhaWxfb3V0KT9zYjpzYn1mdW5jdGlvbiBvKGEsYil7Zm9yKHZhciBjLGQ7Oyl7aWYoYS5sb29rYWhlYWQ8amIpe2lmKG0oYSksYS5sb29rYWhlYWQ8amImJmI9PT1IKXJldHVybiBzYjtpZigwPT09YS5sb29rYWhlYWQpYnJlYWt9aWYoYz0wLGEubG9va2FoZWFkPj1oYiYmKGEuaW5zX2g9KGEuaW5zX2g8PGEuaGFzaF9zaGlmdF5hLndpbmRvd1thLnN0cnN0YXJ0K2hiLTFdKSZhLmhhc2hfbWFzayxjPWEucHJldlthLnN0cnN0YXJ0JmEud19tYXNrXT1hLmhlYWRbYS5pbnNfaF0sYS5oZWFkW2EuaW5zX2hdPWEuc3Ryc3RhcnQpLDAhPT1jJiZhLnN0cnN0YXJ0LWM8PWEud19zaXplLWpiJiYoYS5tYXRjaF9sZW5ndGg9bChhLGMpKSxhLm1hdGNoX2xlbmd0aD49aGIpaWYoZD1ELl90cl90YWxseShhLGEuc3Ryc3RhcnQtYS5tYXRjaF9zdGFydCxhLm1hdGNoX2xlbmd0aC1oYiksYS5sb29rYWhlYWQtPWEubWF0Y2hfbGVuZ3RoLGEubWF0Y2hfbGVuZ3RoPD1hLm1heF9sYXp5X21hdGNoJiZhLmxvb2thaGVhZD49aGIpe2EubWF0Y2hfbGVuZ3RoLS07ZG8gYS5zdHJzdGFydCsrLGEuaW5zX2g9KGEuaW5zX2g8PGEuaGFzaF9zaGlmdF5hLndpbmRvd1thLnN0cnN0YXJ0K2hiLTFdKSZhLmhhc2hfbWFzayxjPWEucHJldlthLnN0cnN0YXJ0JmEud19tYXNrXT1hLmhlYWRbYS5pbnNfaF0sYS5oZWFkW2EuaW5zX2hdPWEuc3Ryc3RhcnQ7d2hpbGUoMCE9PS0tYS5tYXRjaF9sZW5ndGgpO2Euc3Ryc3RhcnQrK31lbHNlIGEuc3Ryc3RhcnQrPWEubWF0Y2hfbGVuZ3RoLGEubWF0Y2hfbGVuZ3RoPTAsYS5pbnNfaD1hLndpbmRvd1thLnN0cnN0YXJ0XSxhLmluc19oPShhLmluc19oPDxhLmhhc2hfc2hpZnReYS53aW5kb3dbYS5zdHJzdGFydCsxXSkmYS5oYXNoX21hc2s7ZWxzZSBkPUQuX3RyX3RhbGx5KGEsMCxhLndpbmRvd1thLnN0cnN0YXJ0XSksYS5sb29rYWhlYWQtLSxhLnN0cnN0YXJ0Kys7aWYoZCYmKGgoYSwhMSksMD09PWEuc3RybS5hdmFpbF9vdXQpKXJldHVybiBzYn1yZXR1cm4gYS5pbnNlcnQ9YS5zdHJzdGFydDxoYi0xP2Euc3Ryc3RhcnQ6aGItMSxiPT09Sz8oaChhLCEwKSwwPT09YS5zdHJtLmF2YWlsX291dD91Yjp2Yik6YS5sYXN0X2xpdCYmKGgoYSwhMSksMD09PWEuc3RybS5hdmFpbF9vdXQpP3NiOnRifWZ1bmN0aW9uIHAoYSxiKXtmb3IodmFyIGMsZCxlOzspe2lmKGEubG9va2FoZWFkPGpiKXtpZihtKGEpLGEubG9va2FoZWFkPGpiJiZiPT09SClyZXR1cm4gc2I7aWYoMD09PWEubG9va2FoZWFkKWJyZWFrfWlmKGM9MCxhLmxvb2thaGVhZD49aGImJihhLmluc19oPShhLmluc19oPDxhLmhhc2hfc2hpZnReYS53aW5kb3dbYS5zdHJzdGFydCtoYi0xXSkmYS5oYXNoX21hc2ssYz1hLnByZXZbYS5zdHJzdGFydCZhLndfbWFza109YS5oZWFkW2EuaW5zX2hdLGEuaGVhZFthLmluc19oXT1hLnN0cnN0YXJ0KSxhLnByZXZfbGVuZ3RoPWEubWF0Y2hfbGVuZ3RoLGEucHJldl9tYXRjaD1hLm1hdGNoX3N0YXJ0LGEubWF0Y2hfbGVuZ3RoPWhiLTEsMCE9PWMmJmEucHJldl9sZW5ndGg8YS5tYXhfbGF6eV9tYXRjaCYmYS5zdHJzdGFydC1jPD1hLndfc2l6ZS1qYiYmKGEubWF0Y2hfbGVuZ3RoPWwoYSxjKSxhLm1hdGNoX2xlbmd0aDw9NSYmKGEuc3RyYXRlZ3k9PT1TfHxhLm1hdGNoX2xlbmd0aD09PWhiJiZhLnN0cnN0YXJ0LWEubWF0Y2hfc3RhcnQ+NDA5NikmJihhLm1hdGNoX2xlbmd0aD1oYi0xKSksYS5wcmV2X2xlbmd0aD49aGImJmEubWF0Y2hfbGVuZ3RoPD1hLnByZXZfbGVuZ3RoKXtlPWEuc3Ryc3RhcnQrYS5sb29rYWhlYWQtaGIsZD1ELl90cl90YWxseShhLGEuc3Ryc3RhcnQtMS1hLnByZXZfbWF0Y2gsYS5wcmV2X2xlbmd0aC1oYiksYS5sb29rYWhlYWQtPWEucHJldl9sZW5ndGgtMSxhLnByZXZfbGVuZ3RoLT0yO2RvKythLnN0cnN0YXJ0PD1lJiYoYS5pbnNfaD0oYS5pbnNfaDw8YS5oYXNoX3NoaWZ0XmEud2luZG93W2Euc3Ryc3RhcnQraGItMV0pJmEuaGFzaF9tYXNrLGM9YS5wcmV2W2Euc3Ryc3RhcnQmYS53X21hc2tdPWEuaGVhZFthLmluc19oXSxhLmhlYWRbYS5pbnNfaF09YS5zdHJzdGFydCk7d2hpbGUoMCE9PS0tYS5wcmV2X2xlbmd0aCk7aWYoYS5tYXRjaF9hdmFpbGFibGU9MCxhLm1hdGNoX2xlbmd0aD1oYi0xLGEuc3Ryc3RhcnQrKyxkJiYoaChhLCExKSwwPT09YS5zdHJtLmF2YWlsX291dCkpcmV0dXJuIHNifWVsc2UgaWYoYS5tYXRjaF9hdmFpbGFibGUpe2lmKGQ9RC5fdHJfdGFsbHkoYSwwLGEud2luZG93W2Euc3Ryc3RhcnQtMV0pLGQmJmgoYSwhMSksYS5zdHJzdGFydCsrLGEubG9va2FoZWFkLS0sMD09PWEuc3RybS5hdmFpbF9vdXQpcmV0dXJuIHNifWVsc2UgYS5tYXRjaF9hdmFpbGFibGU9MSxhLnN0cnN0YXJ0KyssYS5sb29rYWhlYWQtLX1yZXR1cm4gYS5tYXRjaF9hdmFpbGFibGUmJihkPUQuX3RyX3RhbGx5KGEsMCxhLndpbmRvd1thLnN0cnN0YXJ0LTFdKSxhLm1hdGNoX2F2YWlsYWJsZT0wKSxhLmluc2VydD1hLnN0cnN0YXJ0PGhiLTE/YS5zdHJzdGFydDpoYi0xLGI9PT1LPyhoKGEsITApLDA9PT1hLnN0cm0uYXZhaWxfb3V0P3ViOnZiKTphLmxhc3RfbGl0JiYoaChhLCExKSwwPT09YS5zdHJtLmF2YWlsX291dCk/c2I6dGJ9ZnVuY3Rpb24gcShhLGIpe2Zvcih2YXIgYyxkLGUsZixnPWEud2luZG93Ozspe2lmKGEubG9va2FoZWFkPD1pYil7aWYobShhKSxhLmxvb2thaGVhZDw9aWImJmI9PT1IKXJldHVybiBzYjtpZigwPT09YS5sb29rYWhlYWQpYnJlYWt9aWYoYS5tYXRjaF9sZW5ndGg9MCxhLmxvb2thaGVhZD49aGImJmEuc3Ryc3RhcnQ+MCYmKGU9YS5zdHJzdGFydC0xLGQ9Z1tlXSxkPT09Z1srK2VdJiZkPT09Z1srK2VdJiZkPT09Z1srK2VdKSl7Zj1hLnN0cnN0YXJ0K2liO2RvO3doaWxlKGQ9PT1nWysrZV0mJmQ9PT1nWysrZV0mJmQ9PT1nWysrZV0mJmQ9PT1nWysrZV0mJmQ9PT1nWysrZV0mJmQ9PT1nWysrZV0mJmQ9PT1nWysrZV0mJmQ9PT1nWysrZV0mJmY+ZSk7YS5tYXRjaF9sZW5ndGg9aWItKGYtZSksYS5tYXRjaF9sZW5ndGg+YS5sb29rYWhlYWQmJihhLm1hdGNoX2xlbmd0aD1hLmxvb2thaGVhZCl9aWYoYS5tYXRjaF9sZW5ndGg+PWhiPyhjPUQuX3RyX3RhbGx5KGEsMSxhLm1hdGNoX2xlbmd0aC1oYiksYS5sb29rYWhlYWQtPWEubWF0Y2hfbGVuZ3RoLGEuc3Ryc3RhcnQrPWEubWF0Y2hfbGVuZ3RoLGEubWF0Y2hfbGVuZ3RoPTApOihjPUQuX3RyX3RhbGx5KGEsMCxhLndpbmRvd1thLnN0cnN0YXJ0XSksYS5sb29rYWhlYWQtLSxhLnN0cnN0YXJ0KyspLGMmJihoKGEsITEpLDA9PT1hLnN0cm0uYXZhaWxfb3V0KSlyZXR1cm4gc2J9cmV0dXJuIGEuaW5zZXJ0PTAsYj09PUs/KGgoYSwhMCksMD09PWEuc3RybS5hdmFpbF9vdXQ/dWI6dmIpOmEubGFzdF9saXQmJihoKGEsITEpLDA9PT1hLnN0cm0uYXZhaWxfb3V0KT9zYjp0Yn1mdW5jdGlvbiByKGEsYil7Zm9yKHZhciBjOzspe2lmKDA9PT1hLmxvb2thaGVhZCYmKG0oYSksMD09PWEubG9va2FoZWFkKSl7aWYoYj09PUgpcmV0dXJuIHNiO2JyZWFrfWlmKGEubWF0Y2hfbGVuZ3RoPTAsYz1ELl90cl90YWxseShhLDAsYS53aW5kb3dbYS5zdHJzdGFydF0pLGEubG9va2FoZWFkLS0sYS5zdHJzdGFydCsrLGMmJihoKGEsITEpLDA9PT1hLnN0cm0uYXZhaWxfb3V0KSlyZXR1cm4gc2J9cmV0dXJuIGEuaW5zZXJ0PTAsYj09PUs/KGgoYSwhMCksMD09PWEuc3RybS5hdmFpbF9vdXQ/dWI6dmIpOmEubGFzdF9saXQmJihoKGEsITEpLDA9PT1hLnN0cm0uYXZhaWxfb3V0KT9zYjp0Yn1mdW5jdGlvbiBzKGEpe2Eud2luZG93X3NpemU9MiphLndfc2l6ZSxmKGEuaGVhZCksYS5tYXhfbGF6eV9tYXRjaD1CW2EubGV2ZWxdLm1heF9sYXp5LGEuZ29vZF9tYXRjaD1CW2EubGV2ZWxdLmdvb2RfbGVuZ3RoLGEubmljZV9tYXRjaD1CW2EubGV2ZWxdLm5pY2VfbGVuZ3RoLGEubWF4X2NoYWluX2xlbmd0aD1CW2EubGV2ZWxdLm1heF9jaGFpbixhLnN0cnN0YXJ0PTAsYS5ibG9ja19zdGFydD0wLGEubG9va2FoZWFkPTAsYS5pbnNlcnQ9MCxhLm1hdGNoX2xlbmd0aD1hLnByZXZfbGVuZ3RoPWhiLTEsYS5tYXRjaF9hdmFpbGFibGU9MCxhLmluc19oPTB9ZnVuY3Rpb24gdCgpe3RoaXMuc3RybT1udWxsLHRoaXMuc3RhdHVzPTAsdGhpcy5wZW5kaW5nX2J1Zj1udWxsLHRoaXMucGVuZGluZ19idWZfc2l6ZT0wLHRoaXMucGVuZGluZ19vdXQ9MCx0aGlzLnBlbmRpbmc9MCx0aGlzLndyYXA9MCx0aGlzLmd6aGVhZD1udWxsLHRoaXMuZ3ppbmRleD0wLHRoaXMubWV0aG9kPVksdGhpcy5sYXN0X2ZsdXNoPS0xLHRoaXMud19zaXplPTAsdGhpcy53X2JpdHM9MCx0aGlzLndfbWFzaz0wLHRoaXMud2luZG93PW51bGwsdGhpcy53aW5kb3dfc2l6ZT0wLHRoaXMucHJldj1udWxsLHRoaXMuaGVhZD1udWxsLHRoaXMuaW5zX2g9MCx0aGlzLmhhc2hfc2l6ZT0wLHRoaXMuaGFzaF9iaXRzPTAsdGhpcy5oYXNoX21hc2s9MCx0aGlzLmhhc2hfc2hpZnQ9MCx0aGlzLmJsb2NrX3N0YXJ0PTAsdGhpcy5tYXRjaF9sZW5ndGg9MCx0aGlzLnByZXZfbWF0Y2g9MCx0aGlzLm1hdGNoX2F2YWlsYWJsZT0wLHRoaXMuc3Ryc3RhcnQ9MCx0aGlzLm1hdGNoX3N0YXJ0PTAsdGhpcy5sb29rYWhlYWQ9MCx0aGlzLnByZXZfbGVuZ3RoPTAsdGhpcy5tYXhfY2hhaW5fbGVuZ3RoPTAsdGhpcy5tYXhfbGF6eV9tYXRjaD0wLHRoaXMubGV2ZWw9MCx0aGlzLnN0cmF0ZWd5PTAsdGhpcy5nb29kX21hdGNoPTAsdGhpcy5uaWNlX21hdGNoPTAsdGhpcy5keW5fbHRyZWU9bmV3IEMuQnVmMTYoMipmYiksdGhpcy5keW5fZHRyZWU9bmV3IEMuQnVmMTYoMiooMipkYisxKSksdGhpcy5ibF90cmVlPW5ldyBDLkJ1ZjE2KDIqKDIqZWIrMSkpLGYodGhpcy5keW5fbHRyZWUpLGYodGhpcy5keW5fZHRyZWUpLGYodGhpcy5ibF90cmVlKSx0aGlzLmxfZGVzYz1udWxsLHRoaXMuZF9kZXNjPW51bGwsdGhpcy5ibF9kZXNjPW51bGwsdGhpcy5ibF9jb3VudD1uZXcgQy5CdWYxNihnYisxKSx0aGlzLmhlYXA9bmV3IEMuQnVmMTYoMipjYisxKSxmKHRoaXMuaGVhcCksdGhpcy5oZWFwX2xlbj0wLHRoaXMuaGVhcF9tYXg9MCx0aGlzLmRlcHRoPW5ldyBDLkJ1ZjE2KDIqY2IrMSksZih0aGlzLmRlcHRoKSx0aGlzLmxfYnVmPTAsdGhpcy5saXRfYnVmc2l6ZT0wLHRoaXMubGFzdF9saXQ9MCx0aGlzLmRfYnVmPTAsdGhpcy5vcHRfbGVuPTAsdGhpcy5zdGF0aWNfbGVuPTAsdGhpcy5tYXRjaGVzPTAsdGhpcy5pbnNlcnQ9MCx0aGlzLmJpX2J1Zj0wLHRoaXMuYmlfdmFsaWQ9MH1mdW5jdGlvbiB1KGEpe3ZhciBiO3JldHVybiBhJiZhLnN0YXRlPyhhLnRvdGFsX2luPWEudG90YWxfb3V0PTAsYS5kYXRhX3R5cGU9WCxiPWEuc3RhdGUsYi5wZW5kaW5nPTAsYi5wZW5kaW5nX291dD0wLGIud3JhcDwwJiYoYi53cmFwPS1iLndyYXApLGIuc3RhdHVzPWIud3JhcD9sYjpxYixhLmFkbGVyPTI9PT1iLndyYXA/MDoxLGIubGFzdF9mbHVzaD1ILEQuX3RyX2luaXQoYiksTSk6ZChhLE8pfWZ1bmN0aW9uIHYoYSl7dmFyIGI9dShhKTtyZXR1cm4gYj09PU0mJnMoYS5zdGF0ZSksYn1mdW5jdGlvbiB3KGEsYil7cmV0dXJuIGEmJmEuc3RhdGU/MiE9PWEuc3RhdGUud3JhcD9POihhLnN0YXRlLmd6aGVhZD1iLE0pOk99ZnVuY3Rpb24geChhLGIsYyxlLGYsZyl7aWYoIWEpcmV0dXJuIE87dmFyIGg9MTtpZihiPT09UiYmKGI9NiksMD5lPyhoPTAsZT0tZSk6ZT4xNSYmKGg9MixlLT0xNiksMT5mfHxmPlp8fGMhPT1ZfHw4PmV8fGU+MTV8fDA+Ynx8Yj45fHwwPmd8fGc+VilyZXR1cm4gZChhLE8pOzg9PT1lJiYoZT05KTt2YXIgaT1uZXcgdDtyZXR1cm4gYS5zdGF0ZT1pLGkuc3RybT1hLGkud3JhcD1oLGkuZ3poZWFkPW51bGwsaS53X2JpdHM9ZSxpLndfc2l6ZT0xPDxpLndfYml0cyxpLndfbWFzaz1pLndfc2l6ZS0xLGkuaGFzaF9iaXRzPWYrNyxpLmhhc2hfc2l6ZT0xPDxpLmhhc2hfYml0cyxpLmhhc2hfbWFzaz1pLmhhc2hfc2l6ZS0xLGkuaGFzaF9zaGlmdD1+figoaS5oYXNoX2JpdHMraGItMSkvaGIpLGkud2luZG93PW5ldyBDLkJ1ZjgoMippLndfc2l6ZSksaS5oZWFkPW5ldyBDLkJ1ZjE2KGkuaGFzaF9zaXplKSxpLnByZXY9bmV3IEMuQnVmMTYoaS53X3NpemUpLGkubGl0X2J1ZnNpemU9MTw8Zis2LGkucGVuZGluZ19idWZfc2l6ZT00KmkubGl0X2J1ZnNpemUsaS5wZW5kaW5nX2J1Zj1uZXcgQy5CdWY4KGkucGVuZGluZ19idWZfc2l6ZSksaS5kX2J1Zj1pLmxpdF9idWZzaXplPj4xLGkubF9idWY9MyppLmxpdF9idWZzaXplLGkubGV2ZWw9YixpLnN0cmF0ZWd5PWcsaS5tZXRob2Q9Yyx2KGEpfWZ1bmN0aW9uIHkoYSxiKXtyZXR1cm4geChhLGIsWSwkLF8sVyl9ZnVuY3Rpb24geihhLGIpe3ZhciBjLGgsayxsO2lmKCFhfHwhYS5zdGF0ZXx8Yj5MfHwwPmIpcmV0dXJuIGE/ZChhLE8pOk87aWYoaD1hLnN0YXRlLCFhLm91dHB1dHx8IWEuaW5wdXQmJjAhPT1hLmF2YWlsX2lufHxoLnN0YXR1cz09PXJiJiZiIT09SylyZXR1cm4gZChhLDA9PT1hLmF2YWlsX291dD9ROk8pO2lmKGguc3RybT1hLGM9aC5sYXN0X2ZsdXNoLGgubGFzdF9mbHVzaD1iLGguc3RhdHVzPT09bGIpaWYoMj09PWgud3JhcClhLmFkbGVyPTAsaShoLDMxKSxpKGgsMTM5KSxpKGgsOCksaC5nemhlYWQ/KGkoaCwoaC5nemhlYWQudGV4dD8xOjApKyhoLmd6aGVhZC5oY3JjPzI6MCkrKGguZ3poZWFkLmV4dHJhPzQ6MCkrKGguZ3poZWFkLm5hbWU/ODowKSsoaC5nemhlYWQuY29tbWVudD8xNjowKSksaShoLDI1NSZoLmd6aGVhZC50aW1lKSxpKGgsaC5nemhlYWQudGltZT4+OCYyNTUpLGkoaCxoLmd6aGVhZC50aW1lPj4xNiYyNTUpLGkoaCxoLmd6aGVhZC50aW1lPj4yNCYyNTUpLGkoaCw5PT09aC5sZXZlbD8yOmguc3RyYXRlZ3k+PVR8fGgubGV2ZWw8Mj80OjApLGkoaCwyNTUmaC5nemhlYWQub3MpLGguZ3poZWFkLmV4dHJhJiZoLmd6aGVhZC5leHRyYS5sZW5ndGgmJihpKGgsMjU1JmguZ3poZWFkLmV4dHJhLmxlbmd0aCksaShoLGguZ3poZWFkLmV4dHJhLmxlbmd0aD4+OCYyNTUpKSxoLmd6aGVhZC5oY3JjJiYoYS5hZGxlcj1GKGEuYWRsZXIsaC5wZW5kaW5nX2J1ZixoLnBlbmRpbmcsMCkpLGguZ3ppbmRleD0wLGguc3RhdHVzPW1iKTooaShoLDApLGkoaCwwKSxpKGgsMCksaShoLDApLGkoaCwwKSxpKGgsOT09PWgubGV2ZWw/MjpoLnN0cmF0ZWd5Pj1UfHxoLmxldmVsPDI/NDowKSxpKGgsd2IpLGguc3RhdHVzPXFiKTtlbHNle3ZhciBtPVkrKGgud19iaXRzLTg8PDQpPDw4LG49LTE7bj1oLnN0cmF0ZWd5Pj1UfHxoLmxldmVsPDI/MDpoLmxldmVsPDY/MTo2PT09aC5sZXZlbD8yOjMsbXw9bjw8NiwwIT09aC5zdHJzdGFydCYmKG18PWtiKSxtKz0zMS1tJTMxLGguc3RhdHVzPXFiLGooaCxtKSwwIT09aC5zdHJzdGFydCYmKGooaCxhLmFkbGVyPj4+MTYpLGooaCw2NTUzNSZhLmFkbGVyKSksYS5hZGxlcj0xfWlmKGguc3RhdHVzPT09bWIpaWYoaC5nemhlYWQuZXh0cmEpe2ZvcihrPWgucGVuZGluZztoLmd6aW5kZXg8KDY1NTM1JmguZ3poZWFkLmV4dHJhLmxlbmd0aCkmJihoLnBlbmRpbmchPT1oLnBlbmRpbmdfYnVmX3NpemV8fChoLmd6aGVhZC5oY3JjJiZoLnBlbmRpbmc+ayYmKGEuYWRsZXI9RihhLmFkbGVyLGgucGVuZGluZ19idWYsaC5wZW5kaW5nLWssaykpLGcoYSksaz1oLnBlbmRpbmcsaC5wZW5kaW5nIT09aC5wZW5kaW5nX2J1Zl9zaXplKSk7KWkoaCwyNTUmaC5nemhlYWQuZXh0cmFbaC5nemluZGV4XSksaC5nemluZGV4Kys7aC5nemhlYWQuaGNyYyYmaC5wZW5kaW5nPmsmJihhLmFkbGVyPUYoYS5hZGxlcixoLnBlbmRpbmdfYnVmLGgucGVuZGluZy1rLGspKSxoLmd6aW5kZXg9PT1oLmd6aGVhZC5leHRyYS5sZW5ndGgmJihoLmd6aW5kZXg9MCxoLnN0YXR1cz1uYil9ZWxzZSBoLnN0YXR1cz1uYjtpZihoLnN0YXR1cz09PW5iKWlmKGguZ3poZWFkLm5hbWUpe2s9aC5wZW5kaW5nO2Rve2lmKGgucGVuZGluZz09PWgucGVuZGluZ19idWZfc2l6ZSYmKGguZ3poZWFkLmhjcmMmJmgucGVuZGluZz5rJiYoYS5hZGxlcj1GKGEuYWRsZXIsaC5wZW5kaW5nX2J1ZixoLnBlbmRpbmctayxrKSksZyhhKSxrPWgucGVuZGluZyxoLnBlbmRpbmc9PT1oLnBlbmRpbmdfYnVmX3NpemUpKXtsPTE7YnJlYWt9bD1oLmd6aW5kZXg8aC5nemhlYWQubmFtZS5sZW5ndGg/MjU1JmguZ3poZWFkLm5hbWUuY2hhckNvZGVBdChoLmd6aW5kZXgrKyk6MCxpKGgsbCl9d2hpbGUoMCE9PWwpO2guZ3poZWFkLmhjcmMmJmgucGVuZGluZz5rJiYoYS5hZGxlcj1GKGEuYWRsZXIsaC5wZW5kaW5nX2J1ZixoLnBlbmRpbmctayxrKSksMD09PWwmJihoLmd6aW5kZXg9MCxoLnN0YXR1cz1vYil9ZWxzZSBoLnN0YXR1cz1vYjtpZihoLnN0YXR1cz09PW9iKWlmKGguZ3poZWFkLmNvbW1lbnQpe2s9aC5wZW5kaW5nO2Rve2lmKGgucGVuZGluZz09PWgucGVuZGluZ19idWZfc2l6ZSYmKGguZ3poZWFkLmhjcmMmJmgucGVuZGluZz5rJiYoYS5hZGxlcj1GKGEuYWRsZXIsaC5wZW5kaW5nX2J1ZixoLnBlbmRpbmctayxrKSksZyhhKSxrPWgucGVuZGluZyxoLnBlbmRpbmc9PT1oLnBlbmRpbmdfYnVmX3NpemUpKXtsPTE7YnJlYWt9bD1oLmd6aW5kZXg8aC5nemhlYWQuY29tbWVudC5sZW5ndGg/MjU1JmguZ3poZWFkLmNvbW1lbnQuY2hhckNvZGVBdChoLmd6aW5kZXgrKyk6MCxpKGgsbCl9d2hpbGUoMCE9PWwpO2guZ3poZWFkLmhjcmMmJmgucGVuZGluZz5rJiYoYS5hZGxlcj1GKGEuYWRsZXIsaC5wZW5kaW5nX2J1ZixoLnBlbmRpbmctayxrKSksMD09PWwmJihoLnN0YXR1cz1wYil9ZWxzZSBoLnN0YXR1cz1wYjtpZihoLnN0YXR1cz09PXBiJiYoaC5nemhlYWQuaGNyYz8oaC5wZW5kaW5nKzI+aC5wZW5kaW5nX2J1Zl9zaXplJiZnKGEpLGgucGVuZGluZysyPD1oLnBlbmRpbmdfYnVmX3NpemUmJihpKGgsMjU1JmEuYWRsZXIpLGkoaCxhLmFkbGVyPj44JjI1NSksYS5hZGxlcj0wLGguc3RhdHVzPXFiKSk6aC5zdGF0dXM9cWIpLDAhPT1oLnBlbmRpbmcpe2lmKGcoYSksMD09PWEuYXZhaWxfb3V0KXJldHVybiBoLmxhc3RfZmx1c2g9LTEsTX1lbHNlIGlmKDA9PT1hLmF2YWlsX2luJiZlKGIpPD1lKGMpJiZiIT09SylyZXR1cm4gZChhLFEpO2lmKGguc3RhdHVzPT09cmImJjAhPT1hLmF2YWlsX2luKXJldHVybiBkKGEsUSk7aWYoMCE9PWEuYXZhaWxfaW58fDAhPT1oLmxvb2thaGVhZHx8YiE9PUgmJmguc3RhdHVzIT09cmIpe3ZhciBvPWguc3RyYXRlZ3k9PT1UP3IoaCxiKTpoLnN0cmF0ZWd5PT09VT9xKGgsYik6QltoLmxldmVsXS5mdW5jKGgsYik7aWYoKG89PT11Ynx8bz09PXZiKSYmKGguc3RhdHVzPXJiKSxvPT09c2J8fG89PT11YilyZXR1cm4gMD09PWEuYXZhaWxfb3V0JiYoaC5sYXN0X2ZsdXNoPS0xKSxNO2lmKG89PT10YiYmKGI9PT1JP0QuX3RyX2FsaWduKGgpOmIhPT1MJiYoRC5fdHJfc3RvcmVkX2Jsb2NrKGgsMCwwLCExKSxiPT09SiYmKGYoaC5oZWFkKSwwPT09aC5sb29rYWhlYWQmJihoLnN0cnN0YXJ0PTAsaC5ibG9ja19zdGFydD0wLGguaW5zZXJ0PTApKSksZyhhKSwwPT09YS5hdmFpbF9vdXQpKXJldHVybiBoLmxhc3RfZmx1c2g9LTEsTX1yZXR1cm4gYiE9PUs/TTpoLndyYXA8PTA/TjooMj09PWgud3JhcD8oaShoLDI1NSZhLmFkbGVyKSxpKGgsYS5hZGxlcj4+OCYyNTUpLGkoaCxhLmFkbGVyPj4xNiYyNTUpLGkoaCxhLmFkbGVyPj4yNCYyNTUpLGkoaCwyNTUmYS50b3RhbF9pbiksaShoLGEudG90YWxfaW4+PjgmMjU1KSxpKGgsYS50b3RhbF9pbj4+MTYmMjU1KSxpKGgsYS50b3RhbF9pbj4+MjQmMjU1KSk6KGooaCxhLmFkbGVyPj4+MTYpLGooaCw2NTUzNSZhLmFkbGVyKSksZyhhKSxoLndyYXA+MCYmKGgud3JhcD0taC53cmFwKSwwIT09aC5wZW5kaW5nP006Til9ZnVuY3Rpb24gQShhKXt2YXIgYjtyZXR1cm4gYSYmYS5zdGF0ZT8oYj1hLnN0YXRlLnN0YXR1cyxiIT09bGImJmIhPT1tYiYmYiE9PW5iJiZiIT09b2ImJmIhPT1wYiYmYiE9PXFiJiZiIT09cmI/ZChhLE8pOihhLnN0YXRlPW51bGwsYj09PXFiP2QoYSxQKTpNKSk6T312YXIgQixDPWEoIi4uL3V0aWxzL2NvbW1vbiIpLEQ9YSgiLi90cmVlcyIpLEU9YSgiLi9hZGxlcjMyIiksRj1hKCIuL2NyYzMyIiksRz1hKCIuL21lc3NhZ2VzIiksSD0wLEk9MSxKPTMsSz00LEw9NSxNPTAsTj0xLE89LTIsUD0tMyxRPS01LFI9LTEsUz0xLFQ9MixVPTMsVj00LFc9MCxYPTIsWT04LFo9OSwkPTE1LF89OCxhYj0yOSxiYj0yNTYsY2I9YmIrMSthYixkYj0zMCxlYj0xOSxmYj0yKmNiKzEsZ2I9MTUsaGI9MyxpYj0yNTgsamI9aWIraGIrMSxrYj0zMixsYj00MixtYj02OSxuYj03MyxvYj05MSxwYj0xMDMscWI9MTEzLHJiPTY2NixzYj0xLHRiPTIsdWI9Myx2Yj00LHdiPTMseGI9ZnVuY3Rpb24oYSxiLGMsZCxlKXt0aGlzLmdvb2RfbGVuZ3RoPWEsdGhpcy5tYXhfbGF6eT1iLHRoaXMubmljZV9sZW5ndGg9Yyx0aGlzLm1heF9jaGFpbj1kLHRoaXMuZnVuYz1lfTtCPVtuZXcgeGIoMCwwLDAsMCxuKSxuZXcgeGIoNCw0LDgsNCxvKSxuZXcgeGIoNCw1LDE2LDgsbyksbmV3IHhiKDQsNiwzMiwzMixvKSxuZXcgeGIoNCw0LDE2LDE2LHApLG5ldyB4Yig4LDE2LDMyLDMyLHApLG5ldyB4Yig4LDE2LDEyOCwxMjgscCksbmV3IHhiKDgsMzIsMTI4LDI1NixwKSxuZXcgeGIoMzIsMTI4LDI1OCwxMDI0LHApLG5ldyB4YigzMiwyNTgsMjU4LDQwOTYscCldLGMuZGVmbGF0ZUluaXQ9eSxjLmRlZmxhdGVJbml0Mj14LGMuZGVmbGF0ZVJlc2V0PXYsYy5kZWZsYXRlUmVzZXRLZWVwPXUsYy5kZWZsYXRlU2V0SGVhZGVyPXcsYy5kZWZsYXRlPXosYy5kZWZsYXRlRW5kPUEsYy5kZWZsYXRlSW5mbz0icGFrbyBkZWZsYXRlIChmcm9tIE5vZGVjYSBwcm9qZWN0KSJ9LHsiLi4vdXRpbHMvY29tbW9uIjoyNywiLi9hZGxlcjMyIjoyOSwiLi9jcmMzMiI6MzEsIi4vbWVzc2FnZXMiOjM3LCIuL3RyZWVzIjozOH1dLDMzOltmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKCl7dGhpcy50ZXh0PTAsdGhpcy50aW1lPTAsdGhpcy54ZmxhZ3M9MCx0aGlzLm9zPTAsdGhpcy5leHRyYT1udWxsLHRoaXMuZXh0cmFfbGVuPTAsdGhpcy5uYW1lPSIiLHRoaXMuY29tbWVudD0iIix0aGlzLmhjcmM9MCx0aGlzLmRvbmU9ITF9Yi5leHBvcnRzPWN9LHt9XSwzNDpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7dmFyIGM9MzAsZD0xMjtiLmV4cG9ydHM9ZnVuY3Rpb24oYSxiKXt2YXIgZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHYsdyx4LHkseixBLEIsQztlPWEuc3RhdGUsZj1hLm5leHRfaW4sQj1hLmlucHV0LGc9ZisoYS5hdmFpbF9pbi01KSxoPWEubmV4dF9vdXQsQz1hLm91dHB1dCxpPWgtKGItYS5hdmFpbF9vdXQpLGo9aCsoYS5hdmFpbF9vdXQtMjU3KSxrPWUuZG1heCxsPWUud3NpemUsbT1lLndoYXZlLG49ZS53bmV4dCxvPWUud2luZG93LHA9ZS5ob2xkLHE9ZS5iaXRzLHI9ZS5sZW5jb2RlLHM9ZS5kaXN0Y29kZSx0PSgxPDxlLmxlbmJpdHMpLTEsdT0oMTw8ZS5kaXN0Yml0cyktMTthOmRvezE1PnEmJihwKz1CW2YrK108PHEscSs9OCxwKz1CW2YrK108PHEscSs9OCksdj1yW3AmdF07Yjpmb3IoOzspe2lmKHc9dj4+PjI0LHA+Pj49dyxxLT13LHc9dj4+PjE2JjI1NSwwPT09dylDW2grK109NjU1MzUmdjtlbHNle2lmKCEoMTYmdykpe2lmKDA9PT0oNjQmdykpe3Y9clsoNjU1MzUmdikrKHAmKDE8PHcpLTEpXTtjb250aW51ZSBifWlmKDMyJncpe2UubW9kZT1kO2JyZWFrIGF9YS5tc2c9ImludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSIsZS5tb2RlPWM7YnJlYWsgYX14PTY1NTM1JnYsdyY9MTUsdyYmKHc+cSYmKHArPUJbZisrXTw8cSxxKz04KSx4Kz1wJigxPDx3KS0xLHA+Pj49dyxxLT13KSwxNT5xJiYocCs9QltmKytdPDxxLHErPTgscCs9QltmKytdPDxxLHErPTgpLHY9c1twJnVdO2M6Zm9yKDs7KXtpZih3PXY+Pj4yNCxwPj4+PXcscS09dyx3PXY+Pj4xNiYyNTUsISgxNiZ3KSl7aWYoMD09PSg2NCZ3KSl7dj1zWyg2NTUzNSZ2KSsocCYoMTw8dyktMSldO2NvbnRpbnVlIGN9YS5tc2c9ImludmFsaWQgZGlzdGFuY2UgY29kZSIsZS5tb2RlPWM7YnJlYWsgYX1pZih5PTY1NTM1JnYsdyY9MTUsdz5xJiYocCs9QltmKytdPDxxLHErPTgsdz5xJiYocCs9QltmKytdPDxxLHErPTgpKSx5Kz1wJigxPDx3KS0xLHk+ayl7YS5tc2c9ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIixlLm1vZGU9YzticmVhayBhfWlmKHA+Pj49dyxxLT13LHc9aC1pLHk+dyl7aWYodz15LXcsdz5tJiZlLnNhbmUpe2EubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsZS5tb2RlPWM7YnJlYWsgYX1pZih6PTAsQT1vLDA9PT1uKXtpZih6Kz1sLXcseD53KXt4LT13O2RvIENbaCsrXT1vW3orK107d2hpbGUoLS13KTt6PWgteSxBPUN9fWVsc2UgaWYodz5uKXtpZih6Kz1sK24tdyx3LT1uLHg+dyl7eC09dztkbyBDW2grK109b1t6KytdO3doaWxlKC0tdyk7aWYoej0wLHg+bil7dz1uLHgtPXc7ZG8gQ1toKytdPW9beisrXTt3aGlsZSgtLXcpO3o9aC15LEE9Q319fWVsc2UgaWYoeis9bi13LHg+dyl7eC09dztkbyBDW2grK109b1t6KytdO3doaWxlKC0tdyk7ej1oLXksQT1DfWZvcig7eD4yOylDW2grK109QVt6KytdLENbaCsrXT1BW3orK10sQ1toKytdPUFbeisrXSx4LT0zO3gmJihDW2grK109QVt6KytdLHg+MSYmKENbaCsrXT1BW3orK10pKX1lbHNle3o9aC15O2RvIENbaCsrXT1DW3orK10sQ1toKytdPUNbeisrXSxDW2grK109Q1t6KytdLHgtPTM7d2hpbGUoeD4yKTt4JiYoQ1toKytdPUNbeisrXSx4PjEmJihDW2grK109Q1t6KytdKSl9YnJlYWt9fWJyZWFrfX13aGlsZShnPmYmJmo+aCk7eD1xPj4zLGYtPXgscS09eDw8MyxwJj0oMTw8cSktMSxhLm5leHRfaW49ZixhLm5leHRfb3V0PWgsYS5hdmFpbF9pbj1nPmY/NSsoZy1mKTo1LShmLWcpLGEuYXZhaWxfb3V0PWo+aD8yNTcrKGotaCk6MjU3LShoLWopLGUuaG9sZD1wLGUuYml0cz1xfX0se31dLDM1OltmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSl7cmV0dXJuKGE+Pj4yNCYyNTUpKyhhPj4+OCY2NTI4MCkrKCg2NTI4MCZhKTw8OCkrKCgyNTUmYSk8PDI0KX1mdW5jdGlvbiBlKCl7dGhpcy5tb2RlPTAsdGhpcy5sYXN0PSExLHRoaXMud3JhcD0wLHRoaXMuaGF2ZWRpY3Q9ITEsdGhpcy5mbGFncz0wLHRoaXMuZG1heD0wLHRoaXMuY2hlY2s9MCx0aGlzLnRvdGFsPTAsdGhpcy5oZWFkPW51bGwsdGhpcy53Yml0cz0wLHRoaXMud3NpemU9MCx0aGlzLndoYXZlPTAsdGhpcy53bmV4dD0wLHRoaXMud2luZG93PW51bGwsdGhpcy5ob2xkPTAsdGhpcy5iaXRzPTAsdGhpcy5sZW5ndGg9MCx0aGlzLm9mZnNldD0wLHRoaXMuZXh0cmE9MCx0aGlzLmxlbmNvZGU9bnVsbCx0aGlzLmRpc3Rjb2RlPW51bGwsdGhpcy5sZW5iaXRzPTAsdGhpcy5kaXN0Yml0cz0wLHRoaXMubmNvZGU9MCx0aGlzLm5sZW49MCx0aGlzLm5kaXN0PTAsdGhpcy5oYXZlPTAsdGhpcy5uZXh0PW51bGwsdGhpcy5sZW5zPW5ldyByLkJ1ZjE2KDMyMCksdGhpcy53b3JrPW5ldyByLkJ1ZjE2KDI4OCksdGhpcy5sZW5keW49bnVsbCx0aGlzLmRpc3RkeW49bnVsbCx0aGlzLnNhbmU9MCx0aGlzLmJhY2s9MCx0aGlzLndhcz0wfWZ1bmN0aW9uIGYoYSl7dmFyIGI7cmV0dXJuIGEmJmEuc3RhdGU/KGI9YS5zdGF0ZSxhLnRvdGFsX2luPWEudG90YWxfb3V0PWIudG90YWw9MCxhLm1zZz0iIixiLndyYXAmJihhLmFkbGVyPTEmYi53cmFwKSxiLm1vZGU9SyxiLmxhc3Q9MCxiLmhhdmVkaWN0PTAsYi5kbWF4PTMyNzY4LGIuaGVhZD1udWxsLGIuaG9sZD0wLGIuYml0cz0wLGIubGVuY29kZT1iLmxlbmR5bj1uZXcgci5CdWYzMihvYiksYi5kaXN0Y29kZT1iLmRpc3RkeW49bmV3IHIuQnVmMzIocGIpLGIuc2FuZT0xLGIuYmFjaz0tMSxDKTpGfWZ1bmN0aW9uIGcoYSl7dmFyIGI7cmV0dXJuIGEmJmEuc3RhdGU/KGI9YS5zdGF0ZSxiLndzaXplPTAsYi53aGF2ZT0wLGIud25leHQ9MCxmKGEpKTpGfWZ1bmN0aW9uIGgoYSxiKXt2YXIgYyxkO3JldHVybiBhJiZhLnN0YXRlPyhkPWEuc3RhdGUsMD5iPyhjPTAsYj0tYik6KGM9KGI+PjQpKzEsNDg+YiYmKGImPTE1KSksYiYmKDg+Ynx8Yj4xNSk/RjoobnVsbCE9PWQud2luZG93JiZkLndiaXRzIT09YiYmKGQud2luZG93PW51bGwpLGQud3JhcD1jLGQud2JpdHM9YixnKGEpKSk6Rn1mdW5jdGlvbiBpKGEsYil7dmFyIGMsZDtyZXR1cm4gYT8oZD1uZXcgZSxhLnN0YXRlPWQsZC53aW5kb3c9bnVsbCxjPWgoYSxiKSxjIT09QyYmKGEuc3RhdGU9bnVsbCksYyk6Rn1mdW5jdGlvbiBqKGEpe3JldHVybiBpKGEscmIpfWZ1bmN0aW9uIGsoYSl7aWYoc2Ipe3ZhciBiO2ZvcihwPW5ldyByLkJ1ZjMyKDUxMikscT1uZXcgci5CdWYzMigzMiksYj0wOzE0ND5iOylhLmxlbnNbYisrXT04O2Zvcig7MjU2PmI7KWEubGVuc1tiKytdPTk7Zm9yKDsyODA+YjspYS5sZW5zW2IrK109Nztmb3IoOzI4OD5iOylhLmxlbnNbYisrXT04O2Zvcih2KHgsYS5sZW5zLDAsMjg4LHAsMCxhLndvcmsse2JpdHM6OX0pLGI9MDszMj5iOylhLmxlbnNbYisrXT01O3YoeSxhLmxlbnMsMCwzMixxLDAsYS53b3JrLHtiaXRzOjV9KSxzYj0hMX1hLmxlbmNvZGU9cCxhLmxlbmJpdHM9OSxhLmRpc3Rjb2RlPXEsYS5kaXN0Yml0cz01fWZ1bmN0aW9uIGwoYSxiLGMsZCl7dmFyIGUsZj1hLnN0YXRlO3JldHVybiBudWxsPT09Zi53aW5kb3cmJihmLndzaXplPTE8PGYud2JpdHMsZi53bmV4dD0wLGYud2hhdmU9MCxmLndpbmRvdz1uZXcgci5CdWY4KGYud3NpemUpKSxkPj1mLndzaXplPyhyLmFycmF5U2V0KGYud2luZG93LGIsYy1mLndzaXplLGYud3NpemUsMCksZi53bmV4dD0wLGYud2hhdmU9Zi53c2l6ZSk6KGU9Zi53c2l6ZS1mLnduZXh0LGU+ZCYmKGU9ZCksci5hcnJheVNldChmLndpbmRvdyxiLGMtZCxlLGYud25leHQpLGQtPWUsZD8oci5hcnJheVNldChmLndpbmRvdyxiLGMtZCxkLDApLGYud25leHQ9ZCxmLndoYXZlPWYud3NpemUpOihmLnduZXh0Kz1lLGYud25leHQ9PT1mLndzaXplJiYoZi53bmV4dD0wKSxmLndoYXZlPGYud3NpemUmJihmLndoYXZlKz1lKSkpLDB9ZnVuY3Rpb24gbShhLGIpe3ZhciBjLGUsZixnLGgsaSxqLG0sbixvLHAscSxvYixwYixxYixyYixzYix0Yix1Yix2Yix3Yix4Yix5Yix6YixBYj0wLEJiPW5ldyByLkJ1ZjgoNCksQ2I9WzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdO2lmKCFhfHwhYS5zdGF0ZXx8IWEub3V0cHV0fHwhYS5pbnB1dCYmMCE9PWEuYXZhaWxfaW4pcmV0dXJuIEY7Yz1hLnN0YXRlLGMubW9kZT09PVYmJihjLm1vZGU9VyksaD1hLm5leHRfb3V0LGY9YS5vdXRwdXQsaj1hLmF2YWlsX291dCxnPWEubmV4dF9pbixlPWEuaW5wdXQsaT1hLmF2YWlsX2luLG09Yy5ob2xkLG49Yy5iaXRzLG89aSxwPWoseGI9QzthOmZvcig7Oylzd2l0Y2goYy5tb2RlKXtjYXNlIEs6aWYoMD09PWMud3JhcCl7Yy5tb2RlPVc7YnJlYWt9Zm9yKDsxNj5uOyl7aWYoMD09PWkpYnJlYWsgYTtpLS0sbSs9ZVtnKytdPDxuLG4rPTh9aWYoMiZjLndyYXAmJjM1NjE1PT09bSl7Yy5jaGVjaz0wLEJiWzBdPTI1NSZtLEJiWzFdPW0+Pj44JjI1NSxjLmNoZWNrPXQoYy5jaGVjayxCYiwyLDApLG09MCxuPTAsYy5tb2RlPUw7YnJlYWt9aWYoYy5mbGFncz0wLGMuaGVhZCYmKGMuaGVhZC5kb25lPSExKSwhKDEmYy53cmFwKXx8KCgoMjU1Jm0pPDw4KSsobT4+OCkpJTMxKXthLm1zZz0iaW5jb3JyZWN0IGhlYWRlciBjaGVjayIsYy5tb2RlPWxiO2JyZWFrfWlmKCgxNSZtKSE9PUope2EubXNnPSJ1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCIsYy5tb2RlPWxiO2JyZWFrfWlmKG0+Pj49NCxuLT00LHdiPSgxNSZtKSs4LDA9PT1jLndiaXRzKWMud2JpdHM9d2I7ZWxzZSBpZih3Yj5jLndiaXRzKXthLm1zZz0iaW52YWxpZCB3aW5kb3cgc2l6ZSIsYy5tb2RlPWxiO2JyZWFrfWMuZG1heD0xPDx3YixhLmFkbGVyPWMuY2hlY2s9MSxjLm1vZGU9NTEyJm0/VDpWLG09MCxuPTA7YnJlYWs7Y2FzZSBMOmZvcig7MTY+bjspe2lmKDA9PT1pKWJyZWFrIGE7aS0tLG0rPWVbZysrXTw8bixuKz04fWlmKGMuZmxhZ3M9bSwoMjU1JmMuZmxhZ3MpIT09Sil7YS5tc2c9InVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIixjLm1vZGU9bGI7YnJlYWt9aWYoNTczNDQmYy5mbGFncyl7YS5tc2c9InVua25vd24gaGVhZGVyIGZsYWdzIHNldCIsYy5tb2RlPWxiO2JyZWFrfWMuaGVhZCYmKGMuaGVhZC50ZXh0PW0+PjgmMSksNTEyJmMuZmxhZ3MmJihCYlswXT0yNTUmbSxCYlsxXT1tPj4+OCYyNTUsYy5jaGVjaz10KGMuY2hlY2ssQmIsMiwwKSksbT0wLG49MCxjLm1vZGU9TTtjYXNlIE06Zm9yKDszMj5uOyl7aWYoMD09PWkpYnJlYWsgYTtpLS0sbSs9ZVtnKytdPDxuLG4rPTh9Yy5oZWFkJiYoYy5oZWFkLnRpbWU9bSksNTEyJmMuZmxhZ3MmJihCYlswXT0yNTUmbSxCYlsxXT1tPj4+OCYyNTUsQmJbMl09bT4+PjE2JjI1NSxCYlszXT1tPj4+MjQmMjU1LGMuY2hlY2s9dChjLmNoZWNrLEJiLDQsMCkpLG09MCxuPTAsYy5tb2RlPU47Y2FzZSBOOmZvcig7MTY+bjspe2lmKDA9PT1pKWJyZWFrIGE7aS0tLG0rPWVbZysrXTw8bixuKz04fWMuaGVhZCYmKGMuaGVhZC54ZmxhZ3M9MjU1Jm0sYy5oZWFkLm9zPW0+PjgpLDUxMiZjLmZsYWdzJiYoQmJbMF09MjU1Jm0sQmJbMV09bT4+PjgmMjU1LGMuY2hlY2s9dChjLmNoZWNrLEJiLDIsMCkpLG09MCxuPTAsYy5tb2RlPU87Y2FzZSBPOmlmKDEwMjQmYy5mbGFncyl7Zm9yKDsxNj5uOyl7aWYoMD09PWkpYnJlYWsgYTtpLS0sbSs9ZVtnKytdPDxuLG4rPTh9Yy5sZW5ndGg9bSxjLmhlYWQmJihjLmhlYWQuZXh0cmFfbGVuPW0pLDUxMiZjLmZsYWdzJiYoQmJbMF09MjU1Jm0sQmJbMV09bT4+PjgmMjU1LGMuY2hlY2s9dChjLmNoZWNrLEJiLDIsMCkpLG09MCxuPTB9ZWxzZSBjLmhlYWQmJihjLmhlYWQuZXh0cmE9bnVsbCk7Yy5tb2RlPVA7Y2FzZSBQOmlmKDEwMjQmYy5mbGFncyYmKHE9Yy5sZW5ndGgscT5pJiYocT1pKSxxJiYoYy5oZWFkJiYod2I9Yy5oZWFkLmV4dHJhX2xlbi1jLmxlbmd0aCxjLmhlYWQuZXh0cmF8fChjLmhlYWQuZXh0cmE9bmV3IEFycmF5KGMuaGVhZC5leHRyYV9sZW4pKSxyLmFycmF5U2V0KGMuaGVhZC5leHRyYSxlLGcscSx3YikpLDUxMiZjLmZsYWdzJiYoYy5jaGVjaz10KGMuY2hlY2ssZSxxLGcpKSxpLT1xLGcrPXEsYy5sZW5ndGgtPXEpLGMubGVuZ3RoKSlicmVhayBhO2MubGVuZ3RoPTAsYy5tb2RlPVE7Y2FzZSBROmlmKDIwNDgmYy5mbGFncyl7aWYoMD09PWkpYnJlYWsgYTtxPTA7ZG8gd2I9ZVtnK3ErK10sYy5oZWFkJiZ3YiYmYy5sZW5ndGg8NjU1MzYmJihjLmhlYWQubmFtZSs9U3RyaW5nLmZyb21DaGFyQ29kZSh3YikpO3doaWxlKHdiJiZpPnEpO2lmKDUxMiZjLmZsYWdzJiYoYy5jaGVjaz10KGMuY2hlY2ssZSxxLGcpKSxpLT1xLGcrPXEsd2IpYnJlYWsgYX1lbHNlIGMuaGVhZCYmKGMuaGVhZC5uYW1lPW51bGwpO2MubGVuZ3RoPTAsYy5tb2RlPVI7Y2FzZSBSOmlmKDQwOTYmYy5mbGFncyl7aWYoMD09PWkpYnJlYWsgYTtxPTA7ZG8gd2I9ZVtnK3ErK10sYy5oZWFkJiZ3YiYmYy5sZW5ndGg8NjU1MzYmJihjLmhlYWQuY29tbWVudCs9U3RyaW5nLmZyb21DaGFyQ29kZSh3YikpO3doaWxlKHdiJiZpPnEpO2lmKDUxMiZjLmZsYWdzJiYoYy5jaGVjaz10KGMuY2hlY2ssZSxxLGcpKSxpLT1xLGcrPXEsd2IpYnJlYWsgYX1lbHNlIGMuaGVhZCYmKGMuaGVhZC5jb21tZW50PW51bGwpO2MubW9kZT1TO2Nhc2UgUzppZig1MTImYy5mbGFncyl7Zm9yKDsxNj5uOyl7aWYoMD09PWkpYnJlYWsgYTtpLS0sbSs9ZVtnKytdPDxuLG4rPTh9aWYobSE9PSg2NTUzNSZjLmNoZWNrKSl7YS5tc2c9ImhlYWRlciBjcmMgbWlzbWF0Y2giLGMubW9kZT1sYjticmVha31tPTAsbj0wfWMuaGVhZCYmKGMuaGVhZC5oY3JjPWMuZmxhZ3M+PjkmMSxjLmhlYWQuZG9uZT0hMCksYS5hZGxlcj1jLmNoZWNrPTAsYy5tb2RlPVY7YnJlYWs7Y2FzZSBUOmZvcig7MzI+bjspe2lmKDA9PT1pKWJyZWFrIGE7aS0tLG0rPWVbZysrXTw8bixuKz04fWEuYWRsZXI9Yy5jaGVjaz1kKG0pLG09MCxuPTAsYy5tb2RlPVU7Y2FzZSBVOmlmKDA9PT1jLmhhdmVkaWN0KXJldHVybiBhLm5leHRfb3V0PWgsYS5hdmFpbF9vdXQ9aixhLm5leHRfaW49ZyxhLmF2YWlsX2luPWksYy5ob2xkPW0sYy5iaXRzPW4sRTthLmFkbGVyPWMuY2hlY2s9MSxjLm1vZGU9VjtjYXNlIFY6aWYoYj09PUF8fGI9PT1CKWJyZWFrIGE7Y2FzZSBXOmlmKGMubGFzdCl7bT4+Pj03Jm4sbi09NyZuLGMubW9kZT1pYjticmVha31mb3IoOzM+bjspe2lmKDA9PT1pKWJyZWFrIGE7aS0tLG0rPWVbZysrXTw8bixuKz04fXN3aXRjaChjLmxhc3Q9MSZtLG0+Pj49MSxuLT0xLDMmbSl7Y2FzZSAwOmMubW9kZT1YO2JyZWFrO2Nhc2UgMTppZihrKGMpLGMubW9kZT1iYixiPT09Qil7bT4+Pj0yLG4tPTI7YnJlYWsgYX1icmVhaztjYXNlIDI6Yy5tb2RlPSQ7YnJlYWs7Y2FzZSAzOmEubXNnPSJpbnZhbGlkIGJsb2NrIHR5cGUiLGMubW9kZT1sYn1tPj4+PTIsbi09MjticmVhaztjYXNlIFg6Zm9yKG0+Pj49NyZuLG4tPTcmbjszMj5uOyl7aWYoMD09PWkpYnJlYWsgYTtpLS0sbSs9ZVtnKytdPDxuLG4rPTh9aWYoKDY1NTM1Jm0pIT09KG0+Pj4xNl42NTUzNSkpe2EubXNnPSJpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzIixjLm1vZGU9bGI7YnJlYWt9aWYoYy5sZW5ndGg9NjU1MzUmbSxtPTAsbj0wLGMubW9kZT1ZLGI9PT1CKWJyZWFrIGE7Y2FzZSBZOmMubW9kZT1aO2Nhc2UgWjppZihxPWMubGVuZ3RoKXtpZihxPmkmJihxPWkpLHE+aiYmKHE9aiksMD09PXEpYnJlYWsgYTtyLmFycmF5U2V0KGYsZSxnLHEsaCksaS09cSxnKz1xLGotPXEsaCs9cSxjLmxlbmd0aC09cTticmVha31jLm1vZGU9VjticmVhaztjYXNlICQ6Zm9yKDsxND5uOyl7aWYoMD09PWkpYnJlYWsgYTtpLS0sbSs9ZVtnKytdPDxuLG4rPTh9aWYoYy5ubGVuPSgzMSZtKSsyNTcsbT4+Pj01LG4tPTUsYy5uZGlzdD0oMzEmbSkrMSxtPj4+PTUsbi09NSxjLm5jb2RlPSgxNSZtKSs0LG0+Pj49NCxuLT00LGMubmxlbj4yODZ8fGMubmRpc3Q+MzApe2EubXNnPSJ0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scyIsYy5tb2RlPWxiO2JyZWFrfWMuaGF2ZT0wLGMubW9kZT1fO2Nhc2UgXzpmb3IoO2MuaGF2ZTxjLm5jb2RlOyl7Zm9yKDszPm47KXtpZigwPT09aSlicmVhayBhO2ktLSxtKz1lW2crK108PG4sbis9OH1jLmxlbnNbQ2JbYy5oYXZlKytdXT03Jm0sbT4+Pj0zLG4tPTN9Zm9yKDtjLmhhdmU8MTk7KWMubGVuc1tDYltjLmhhdmUrK11dPTA7aWYoYy5sZW5jb2RlPWMubGVuZHluLGMubGVuYml0cz03LHliPXtiaXRzOmMubGVuYml0c30seGI9dih3LGMubGVucywwLDE5LGMubGVuY29kZSwwLGMud29yayx5YiksYy5sZW5iaXRzPXliLmJpdHMseGIpe2EubXNnPSJpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQiLGMubW9kZT1sYjticmVha31jLmhhdmU9MCxjLm1vZGU9YWI7Y2FzZSBhYjpmb3IoO2MuaGF2ZTxjLm5sZW4rYy5uZGlzdDspe2Zvcig7QWI9Yy5sZW5jb2RlW20mKDE8PGMubGVuYml0cyktMV0scWI9QWI+Pj4yNCxyYj1BYj4+PjE2JjI1NSxzYj02NTUzNSZBYiwhKG4+PXFiKTspe2lmKDA9PT1pKWJyZWFrIGE7aS0tLG0rPWVbZysrXTw8bixuKz04fWlmKDE2PnNiKW0+Pj49cWIsbi09cWIsYy5sZW5zW2MuaGF2ZSsrXT1zYjtlbHNle2lmKDE2PT09c2Ipe2Zvcih6Yj1xYisyO3piPm47KXtpZigwPT09aSlicmVhayBhO2ktLSxtKz1lW2crK108PG4sbis9OH1pZihtPj4+PXFiLG4tPXFiLDA9PT1jLmhhdmUpe2EubXNnPSJpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0IixjLm1vZGU9bGI7YnJlYWt9d2I9Yy5sZW5zW2MuaGF2ZS0xXSxxPTMrKDMmbSksbT4+Pj0yLG4tPTJ9ZWxzZSBpZigxNz09PXNiKXtmb3IoemI9cWIrMzt6Yj5uOyl7aWYoMD09PWkpYnJlYWsgYTtpLS0sbSs9ZVtnKytdPDxuLG4rPTh9bT4+Pj1xYixuLT1xYix3Yj0wLHE9MysoNyZtKSxtPj4+PTMsbi09M31lbHNle2Zvcih6Yj1xYis3O3piPm47KXtpZigwPT09aSlicmVhayBhO2ktLSxtKz1lW2crK108PG4sbis9OH1tPj4+PXFiLG4tPXFiLHdiPTAscT0xMSsoMTI3Jm0pLG0+Pj49NyxuLT03fWlmKGMuaGF2ZStxPmMubmxlbitjLm5kaXN0KXthLm1zZz0iaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCIsYy5tb2RlPWxiO2JyZWFrfWZvcig7cS0tOyljLmxlbnNbYy5oYXZlKytdPXdifX1pZihjLm1vZGU9PT1sYilicmVhaztpZigwPT09Yy5sZW5zWzI1Nl0pe2EubXNnPSJpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2siLGMubW9kZT1sYjticmVha31pZihjLmxlbmJpdHM9OSx5Yj17Yml0czpjLmxlbmJpdHN9LHhiPXYoeCxjLmxlbnMsMCxjLm5sZW4sYy5sZW5jb2RlLDAsYy53b3JrLHliKSxjLmxlbmJpdHM9eWIuYml0cyx4Yil7YS5tc2c9ImludmFsaWQgbGl0ZXJhbC9sZW5ndGhzIHNldCIsYy5tb2RlPWxiO2JyZWFrfWlmKGMuZGlzdGJpdHM9NixjLmRpc3Rjb2RlPWMuZGlzdGR5bix5Yj17Yml0czpjLmRpc3RiaXRzfSx4Yj12KHksYy5sZW5zLGMubmxlbixjLm5kaXN0LGMuZGlzdGNvZGUsMCxjLndvcmsseWIpLGMuZGlzdGJpdHM9eWIuYml0cyx4Yil7YS5tc2c9ImludmFsaWQgZGlzdGFuY2VzIHNldCIsYy5tb2RlPWxiO2JyZWFrfWlmKGMubW9kZT1iYixiPT09QilicmVhayBhO2Nhc2UgYmI6Yy5tb2RlPWNiO2Nhc2UgY2I6aWYoaT49NiYmaj49MjU4KXthLm5leHRfb3V0PWgsYS5hdmFpbF9vdXQ9aixhLm5leHRfaW49ZyxhLmF2YWlsX2luPWksYy5ob2xkPW0sYy5iaXRzPW4sdShhLHApLGg9YS5uZXh0X291dCxmPWEub3V0cHV0LGo9YS5hdmFpbF9vdXQsZz1hLm5leHRfaW4sZT1hLmlucHV0LGk9YS5hdmFpbF9pbixtPWMuaG9sZCxuPWMuYml0cyxjLm1vZGU9PT1WJiYoYy5iYWNrPS0xKTsKYnJlYWt9Zm9yKGMuYmFjaz0wO0FiPWMubGVuY29kZVttJigxPDxjLmxlbmJpdHMpLTFdLHFiPUFiPj4+MjQscmI9QWI+Pj4xNiYyNTUsc2I9NjU1MzUmQWIsIShuPj1xYik7KXtpZigwPT09aSlicmVhayBhO2ktLSxtKz1lW2crK108PG4sbis9OH1pZihyYiYmMD09PSgyNDAmcmIpKXtmb3IodGI9cWIsdWI9cmIsdmI9c2I7QWI9Yy5sZW5jb2RlW3ZiKygobSYoMTw8dGIrdWIpLTEpPj50YildLHFiPUFiPj4+MjQscmI9QWI+Pj4xNiYyNTUsc2I9NjU1MzUmQWIsIShuPj10YitxYik7KXtpZigwPT09aSlicmVhayBhO2ktLSxtKz1lW2crK108PG4sbis9OH1tPj4+PXRiLG4tPXRiLGMuYmFjays9dGJ9aWYobT4+Pj1xYixuLT1xYixjLmJhY2srPXFiLGMubGVuZ3RoPXNiLDA9PT1yYil7Yy5tb2RlPWhiO2JyZWFrfWlmKDMyJnJiKXtjLmJhY2s9LTEsYy5tb2RlPVY7YnJlYWt9aWYoNjQmcmIpe2EubXNnPSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUiLGMubW9kZT1sYjticmVha31jLmV4dHJhPTE1JnJiLGMubW9kZT1kYjtjYXNlIGRiOmlmKGMuZXh0cmEpe2Zvcih6Yj1jLmV4dHJhO3piPm47KXtpZigwPT09aSlicmVhayBhO2ktLSxtKz1lW2crK108PG4sbis9OH1jLmxlbmd0aCs9bSYoMTw8Yy5leHRyYSktMSxtPj4+PWMuZXh0cmEsbi09Yy5leHRyYSxjLmJhY2srPWMuZXh0cmF9Yy53YXM9Yy5sZW5ndGgsYy5tb2RlPWViO2Nhc2UgZWI6Zm9yKDtBYj1jLmRpc3Rjb2RlW20mKDE8PGMuZGlzdGJpdHMpLTFdLHFiPUFiPj4+MjQscmI9QWI+Pj4xNiYyNTUsc2I9NjU1MzUmQWIsIShuPj1xYik7KXtpZigwPT09aSlicmVhayBhO2ktLSxtKz1lW2crK108PG4sbis9OH1pZigwPT09KDI0MCZyYikpe2Zvcih0Yj1xYix1Yj1yYix2Yj1zYjtBYj1jLmRpc3Rjb2RlW3ZiKygobSYoMTw8dGIrdWIpLTEpPj50YildLHFiPUFiPj4+MjQscmI9QWI+Pj4xNiYyNTUsc2I9NjU1MzUmQWIsIShuPj10YitxYik7KXtpZigwPT09aSlicmVhayBhO2ktLSxtKz1lW2crK108PG4sbis9OH1tPj4+PXRiLG4tPXRiLGMuYmFjays9dGJ9aWYobT4+Pj1xYixuLT1xYixjLmJhY2srPXFiLDY0JnJiKXthLm1zZz0iaW52YWxpZCBkaXN0YW5jZSBjb2RlIixjLm1vZGU9bGI7YnJlYWt9Yy5vZmZzZXQ9c2IsYy5leHRyYT0xNSZyYixjLm1vZGU9ZmI7Y2FzZSBmYjppZihjLmV4dHJhKXtmb3IoemI9Yy5leHRyYTt6Yj5uOyl7aWYoMD09PWkpYnJlYWsgYTtpLS0sbSs9ZVtnKytdPDxuLG4rPTh9Yy5vZmZzZXQrPW0mKDE8PGMuZXh0cmEpLTEsbT4+Pj1jLmV4dHJhLG4tPWMuZXh0cmEsYy5iYWNrKz1jLmV4dHJhfWlmKGMub2Zmc2V0PmMuZG1heCl7YS5tc2c9ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIixjLm1vZGU9bGI7YnJlYWt9Yy5tb2RlPWdiO2Nhc2UgZ2I6aWYoMD09PWopYnJlYWsgYTtpZihxPXAtaixjLm9mZnNldD5xKXtpZihxPWMub2Zmc2V0LXEscT5jLndoYXZlJiZjLnNhbmUpe2EubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsYy5tb2RlPWxiO2JyZWFrfXE+Yy53bmV4dD8ocS09Yy53bmV4dCxvYj1jLndzaXplLXEpOm9iPWMud25leHQtcSxxPmMubGVuZ3RoJiYocT1jLmxlbmd0aCkscGI9Yy53aW5kb3d9ZWxzZSBwYj1mLG9iPWgtYy5vZmZzZXQscT1jLmxlbmd0aDtxPmomJihxPWopLGotPXEsYy5sZW5ndGgtPXE7ZG8gZltoKytdPXBiW29iKytdO3doaWxlKC0tcSk7MD09PWMubGVuZ3RoJiYoYy5tb2RlPWNiKTticmVhaztjYXNlIGhiOmlmKDA9PT1qKWJyZWFrIGE7ZltoKytdPWMubGVuZ3RoLGotLSxjLm1vZGU9Y2I7YnJlYWs7Y2FzZSBpYjppZihjLndyYXApe2Zvcig7MzI+bjspe2lmKDA9PT1pKWJyZWFrIGE7aS0tLG18PWVbZysrXTw8bixuKz04fWlmKHAtPWosYS50b3RhbF9vdXQrPXAsYy50b3RhbCs9cCxwJiYoYS5hZGxlcj1jLmNoZWNrPWMuZmxhZ3M/dChjLmNoZWNrLGYscCxoLXApOnMoYy5jaGVjayxmLHAsaC1wKSkscD1qLChjLmZsYWdzP206ZChtKSkhPT1jLmNoZWNrKXthLm1zZz0iaW5jb3JyZWN0IGRhdGEgY2hlY2siLGMubW9kZT1sYjticmVha31tPTAsbj0wfWMubW9kZT1qYjtjYXNlIGpiOmlmKGMud3JhcCYmYy5mbGFncyl7Zm9yKDszMj5uOyl7aWYoMD09PWkpYnJlYWsgYTtpLS0sbSs9ZVtnKytdPDxuLG4rPTh9aWYobSE9PSg0Mjk0OTY3Mjk1JmMudG90YWwpKXthLm1zZz0iaW5jb3JyZWN0IGxlbmd0aCBjaGVjayIsYy5tb2RlPWxiO2JyZWFrfW09MCxuPTB9Yy5tb2RlPWtiO2Nhc2Uga2I6eGI9RDticmVhayBhO2Nhc2UgbGI6eGI9RzticmVhayBhO2Nhc2UgbWI6cmV0dXJuIEg7Y2FzZSBuYjpkZWZhdWx0OnJldHVybiBGfXJldHVybiBhLm5leHRfb3V0PWgsYS5hdmFpbF9vdXQ9aixhLm5leHRfaW49ZyxhLmF2YWlsX2luPWksYy5ob2xkPW0sYy5iaXRzPW4sKGMud3NpemV8fHAhPT1hLmF2YWlsX291dCYmYy5tb2RlPGxiJiYoYy5tb2RlPGlifHxiIT09eikpJiZsKGEsYS5vdXRwdXQsYS5uZXh0X291dCxwLWEuYXZhaWxfb3V0KT8oYy5tb2RlPW1iLEgpOihvLT1hLmF2YWlsX2luLHAtPWEuYXZhaWxfb3V0LGEudG90YWxfaW4rPW8sYS50b3RhbF9vdXQrPXAsYy50b3RhbCs9cCxjLndyYXAmJnAmJihhLmFkbGVyPWMuY2hlY2s9Yy5mbGFncz90KGMuY2hlY2ssZixwLGEubmV4dF9vdXQtcCk6cyhjLmNoZWNrLGYscCxhLm5leHRfb3V0LXApKSxhLmRhdGFfdHlwZT1jLmJpdHMrKGMubGFzdD82NDowKSsoYy5tb2RlPT09Vj8xMjg6MCkrKGMubW9kZT09PWJifHxjLm1vZGU9PT1ZPzI1NjowKSwoMD09PW8mJjA9PT1wfHxiPT09eikmJnhiPT09QyYmKHhiPUkpLHhiKX1mdW5jdGlvbiBuKGEpe2lmKCFhfHwhYS5zdGF0ZSlyZXR1cm4gRjt2YXIgYj1hLnN0YXRlO3JldHVybiBiLndpbmRvdyYmKGIud2luZG93PW51bGwpLGEuc3RhdGU9bnVsbCxDfWZ1bmN0aW9uIG8oYSxiKXt2YXIgYztyZXR1cm4gYSYmYS5zdGF0ZT8oYz1hLnN0YXRlLDA9PT0oMiZjLndyYXApP0Y6KGMuaGVhZD1iLGIuZG9uZT0hMSxDKSk6Rn12YXIgcCxxLHI9YSgiLi4vdXRpbHMvY29tbW9uIikscz1hKCIuL2FkbGVyMzIiKSx0PWEoIi4vY3JjMzIiKSx1PWEoIi4vaW5mZmFzdCIpLHY9YSgiLi9pbmZ0cmVlcyIpLHc9MCx4PTEseT0yLHo9NCxBPTUsQj02LEM9MCxEPTEsRT0yLEY9LTIsRz0tMyxIPS00LEk9LTUsSj04LEs9MSxMPTIsTT0zLE49NCxPPTUsUD02LFE9NyxSPTgsUz05LFQ9MTAsVT0xMSxWPTEyLFc9MTMsWD0xNCxZPTE1LFo9MTYsJD0xNyxfPTE4LGFiPTE5LGJiPTIwLGNiPTIxLGRiPTIyLGViPTIzLGZiPTI0LGdiPTI1LGhiPTI2LGliPTI3LGpiPTI4LGtiPTI5LGxiPTMwLG1iPTMxLG5iPTMyLG9iPTg1MixwYj01OTIscWI9MTUscmI9cWIsc2I9ITA7Yy5pbmZsYXRlUmVzZXQ9ZyxjLmluZmxhdGVSZXNldDI9aCxjLmluZmxhdGVSZXNldEtlZXA9ZixjLmluZmxhdGVJbml0PWosYy5pbmZsYXRlSW5pdDI9aSxjLmluZmxhdGU9bSxjLmluZmxhdGVFbmQ9bixjLmluZmxhdGVHZXRIZWFkZXI9byxjLmluZmxhdGVJbmZvPSJwYWtvIGluZmxhdGUgKGZyb20gTm9kZWNhIHByb2plY3QpIn0seyIuLi91dGlscy9jb21tb24iOjI3LCIuL2FkbGVyMzIiOjI5LCIuL2NyYzMyIjozMSwiLi9pbmZmYXN0IjozNCwiLi9pbmZ0cmVlcyI6MzZ9XSwzNjpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7dmFyIGM9YSgiLi4vdXRpbHMvY29tbW9uIiksZD0xNSxlPTg1MixmPTU5MixnPTAsaD0xLGk9MixqPVszLDQsNSw2LDcsOCw5LDEwLDExLDEzLDE1LDE3LDE5LDIzLDI3LDMxLDM1LDQzLDUxLDU5LDY3LDgzLDk5LDExNSwxMzEsMTYzLDE5NSwyMjcsMjU4LDAsMF0saz1bMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTcsMTcsMTcsMTcsMTgsMTgsMTgsMTgsMTksMTksMTksMTksMjAsMjAsMjAsMjAsMjEsMjEsMjEsMjEsMTYsNzIsNzhdLGw9WzEsMiwzLDQsNSw3LDksMTMsMTcsMjUsMzMsNDksNjUsOTcsMTI5LDE5MywyNTcsMzg1LDUxMyw3NjksMTAyNSwxNTM3LDIwNDksMzA3Myw0MDk3LDYxNDUsODE5MywxMjI4OSwxNjM4NSwyNDU3NywwLDBdLG09WzE2LDE2LDE2LDE2LDE3LDE3LDE4LDE4LDE5LDE5LDIwLDIwLDIxLDIxLDIyLDIyLDIzLDIzLDI0LDI0LDI1LDI1LDI2LDI2LDI3LDI3LDI4LDI4LDI5LDI5LDY0LDY0XTtiLmV4cG9ydHM9ZnVuY3Rpb24oYSxiLG4sbyxwLHEscixzKXt2YXIgdCx1LHYsdyx4LHkseixBLEIsQz1zLmJpdHMsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49bnVsbCxPPTAsUD1uZXcgYy5CdWYxNihkKzEpLFE9bmV3IGMuQnVmMTYoZCsxKSxSPW51bGwsUz0wO2ZvcihEPTA7ZD49RDtEKyspUFtEXT0wO2ZvcihFPTA7bz5FO0UrKylQW2JbbitFXV0rKztmb3IoSD1DLEc9ZDtHPj0xJiYwPT09UFtHXTtHLS0pO2lmKEg+RyYmKEg9RyksMD09PUcpcmV0dXJuIHBbcSsrXT0yMDk3MTUyMCxwW3ErK109MjA5NzE1MjAscy5iaXRzPTEsMDtmb3IoRj0xO0c+RiYmMD09PVBbRl07RisrKTtmb3IoRj5IJiYoSD1GKSxLPTEsRD0xO2Q+PUQ7RCsrKWlmKEs8PD0xLEstPVBbRF0sMD5LKXJldHVybi0xO2lmKEs+MCYmKGE9PT1nfHwxIT09RykpcmV0dXJuLTE7Zm9yKFFbMV09MCxEPTE7ZD5EO0QrKylRW0QrMV09UVtEXStQW0RdO2ZvcihFPTA7bz5FO0UrKykwIT09YltuK0VdJiYocltRW2JbbitFXV0rK109RSk7aWYoYT09PWc/KE49Uj1yLHk9MTkpOmE9PT1oPyhOPWosTy09MjU3LFI9ayxTLT0yNTcseT0yNTYpOihOPWwsUj1tLHk9LTEpLE09MCxFPTAsRD1GLHg9cSxJPUgsSj0wLHY9LTEsTD0xPDxILHc9TC0xLGE9PT1oJiZMPmV8fGE9PT1pJiZMPmYpcmV0dXJuIDE7Zm9yKHZhciBUPTA7Oyl7VCsrLHo9RC1KLHJbRV08eT8oQT0wLEI9cltFXSk6cltFXT55PyhBPVJbUytyW0VdXSxCPU5bTytyW0VdXSk6KEE9OTYsQj0wKSx0PTE8PEQtSix1PTE8PEksRj11O2RvIHUtPXQscFt4KyhNPj5KKSt1XT16PDwyNHxBPDwxNnxCfDA7d2hpbGUoMCE9PXUpO2Zvcih0PTE8PEQtMTtNJnQ7KXQ+Pj0xO2lmKDAhPT10PyhNJj10LTEsTSs9dCk6TT0wLEUrKywwPT09LS1QW0RdKXtpZihEPT09RylicmVhaztEPWJbbityW0VdXX1pZihEPkgmJihNJncpIT09dil7Zm9yKDA9PT1KJiYoSj1IKSx4Kz1GLEk9RC1KLEs9MTw8STtHPkkrSiYmKEstPVBbSStKXSwhKDA+PUspKTspSSsrLEs8PD0xO2lmKEwrPTE8PEksYT09PWgmJkw+ZXx8YT09PWkmJkw+ZilyZXR1cm4gMTt2PU0mdyxwW3ZdPUg8PDI0fEk8PDE2fHgtcXwwfX1yZXR1cm4gMCE9PU0mJihwW3grTV09RC1KPDwyNHw2NDw8MTZ8MCkscy5iaXRzPUgsMH19LHsiLi4vdXRpbHMvY29tbW9uIjoyN31dLDM3OltmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtiLmV4cG9ydHM9ezI6Im5lZWQgZGljdGlvbmFyeSIsMToic3RyZWFtIGVuZCIsMDoiIiwiLTEiOiJmaWxlIGVycm9yIiwiLTIiOiJzdHJlYW0gZXJyb3IiLCItMyI6ImRhdGEgZXJyb3IiLCItNCI6Imluc3VmZmljaWVudCBtZW1vcnkiLCItNSI6ImJ1ZmZlciBlcnJvciIsIi02IjoiaW5jb21wYXRpYmxlIHZlcnNpb24ifX0se31dLDM4OltmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSl7Zm9yKHZhciBiPWEubGVuZ3RoOy0tYj49MDspYVtiXT0wfWZ1bmN0aW9uIGUoYSl7cmV0dXJuIDI1Nj5hP2diW2FdOmdiWzI1NisoYT4+PjcpXX1mdW5jdGlvbiBmKGEsYil7YS5wZW5kaW5nX2J1ZlthLnBlbmRpbmcrK109MjU1JmIsYS5wZW5kaW5nX2J1ZlthLnBlbmRpbmcrK109Yj4+PjgmMjU1fWZ1bmN0aW9uIGcoYSxiLGMpe2EuYmlfdmFsaWQ+Vi1jPyhhLmJpX2J1Znw9Yjw8YS5iaV92YWxpZCY2NTUzNSxmKGEsYS5iaV9idWYpLGEuYmlfYnVmPWI+PlYtYS5iaV92YWxpZCxhLmJpX3ZhbGlkKz1jLVYpOihhLmJpX2J1Znw9Yjw8YS5iaV92YWxpZCY2NTUzNSxhLmJpX3ZhbGlkKz1jKX1mdW5jdGlvbiBoKGEsYixjKXtnKGEsY1syKmJdLGNbMipiKzFdKX1mdW5jdGlvbiBpKGEsYil7dmFyIGM9MDtkbyBjfD0xJmEsYT4+Pj0xLGM8PD0xO3doaWxlKC0tYj4wKTtyZXR1cm4gYz4+PjF9ZnVuY3Rpb24gaihhKXsxNj09PWEuYmlfdmFsaWQ/KGYoYSxhLmJpX2J1ZiksYS5iaV9idWY9MCxhLmJpX3ZhbGlkPTApOmEuYmlfdmFsaWQ+PTgmJihhLnBlbmRpbmdfYnVmW2EucGVuZGluZysrXT0yNTUmYS5iaV9idWYsYS5iaV9idWY+Pj04LGEuYmlfdmFsaWQtPTgpfWZ1bmN0aW9uIGsoYSxiKXt2YXIgYyxkLGUsZixnLGgsaT1iLmR5bl90cmVlLGo9Yi5tYXhfY29kZSxrPWIuc3RhdF9kZXNjLnN0YXRpY190cmVlLGw9Yi5zdGF0X2Rlc2MuaGFzX3N0cmVlLG09Yi5zdGF0X2Rlc2MuZXh0cmFfYml0cyxuPWIuc3RhdF9kZXNjLmV4dHJhX2Jhc2Usbz1iLnN0YXRfZGVzYy5tYXhfbGVuZ3RoLHA9MDtmb3IoZj0wO1U+PWY7ZisrKWEuYmxfY291bnRbZl09MDtmb3IoaVsyKmEuaGVhcFthLmhlYXBfbWF4XSsxXT0wLGM9YS5oZWFwX21heCsxO1Q+YztjKyspZD1hLmhlYXBbY10sZj1pWzIqaVsyKmQrMV0rMV0rMSxmPm8mJihmPW8scCsrKSxpWzIqZCsxXT1mLGQ+anx8KGEuYmxfY291bnRbZl0rKyxnPTAsZD49biYmKGc9bVtkLW5dKSxoPWlbMipkXSxhLm9wdF9sZW4rPWgqKGYrZyksbCYmKGEuc3RhdGljX2xlbis9aCooa1syKmQrMV0rZykpKTtpZigwIT09cCl7ZG97Zm9yKGY9by0xOzA9PT1hLmJsX2NvdW50W2ZdOylmLS07YS5ibF9jb3VudFtmXS0tLGEuYmxfY291bnRbZisxXSs9MixhLmJsX2NvdW50W29dLS0scC09Mn13aGlsZShwPjApO2ZvcihmPW87MCE9PWY7Zi0tKWZvcihkPWEuYmxfY291bnRbZl07MCE9PWQ7KWU9YS5oZWFwWy0tY10sZT5qfHwoaVsyKmUrMV0hPT1mJiYoYS5vcHRfbGVuKz0oZi1pWzIqZSsxXSkqaVsyKmVdLGlbMiplKzFdPWYpLGQtLSl9fWZ1bmN0aW9uIGwoYSxiLGMpe3ZhciBkLGUsZj1uZXcgQXJyYXkoVSsxKSxnPTA7Zm9yKGQ9MTtVPj1kO2QrKylmW2RdPWc9ZytjW2QtMV08PDE7Zm9yKGU9MDtiPj1lO2UrKyl7dmFyIGg9YVsyKmUrMV07MCE9PWgmJihhWzIqZV09aShmW2hdKyssaCkpfX1mdW5jdGlvbiBtKCl7dmFyIGEsYixjLGQsZSxmPW5ldyBBcnJheShVKzEpO2ZvcihjPTAsZD0wO08tMT5kO2QrKylmb3IoaWJbZF09YyxhPTA7YTwxPDxfW2RdO2ErKyloYltjKytdPWQ7Zm9yKGhiW2MtMV09ZCxlPTAsZD0wOzE2PmQ7ZCsrKWZvcihqYltkXT1lLGE9MDthPDE8PGFiW2RdO2ErKylnYltlKytdPWQ7Zm9yKGU+Pj03O1I+ZDtkKyspZm9yKGpiW2RdPWU8PDcsYT0wO2E8MTw8YWJbZF0tNzthKyspZ2JbMjU2K2UrK109ZDtmb3IoYj0wO1U+PWI7YisrKWZbYl09MDtmb3IoYT0wOzE0Mz49YTspZWJbMiphKzFdPTgsYSsrLGZbOF0rKztmb3IoOzI1NT49YTspZWJbMiphKzFdPTksYSsrLGZbOV0rKztmb3IoOzI3OT49YTspZWJbMiphKzFdPTcsYSsrLGZbN10rKztmb3IoOzI4Nz49YTspZWJbMiphKzFdPTgsYSsrLGZbOF0rKztmb3IobChlYixRKzEsZiksYT0wO1I+YTthKyspZmJbMiphKzFdPTUsZmJbMiphXT1pKGEsNSk7a2I9bmV3IG5iKGViLF8sUCsxLFEsVSksbGI9bmV3IG5iKGZiLGFiLDAsUixVKSxtYj1uZXcgbmIobmV3IEFycmF5KDApLGJiLDAsUyxXKX1mdW5jdGlvbiBuKGEpe3ZhciBiO2ZvcihiPTA7UT5iO2IrKylhLmR5bl9sdHJlZVsyKmJdPTA7Zm9yKGI9MDtSPmI7YisrKWEuZHluX2R0cmVlWzIqYl09MDtmb3IoYj0wO1M+YjtiKyspYS5ibF90cmVlWzIqYl09MDthLmR5bl9sdHJlZVsyKlhdPTEsYS5vcHRfbGVuPWEuc3RhdGljX2xlbj0wLGEubGFzdF9saXQ9YS5tYXRjaGVzPTB9ZnVuY3Rpb24gbyhhKXthLmJpX3ZhbGlkPjg/ZihhLGEuYmlfYnVmKTphLmJpX3ZhbGlkPjAmJihhLnBlbmRpbmdfYnVmW2EucGVuZGluZysrXT1hLmJpX2J1ZiksYS5iaV9idWY9MCxhLmJpX3ZhbGlkPTB9ZnVuY3Rpb24gcChhLGIsYyxkKXtvKGEpLGQmJihmKGEsYyksZihhLH5jKSksRS5hcnJheVNldChhLnBlbmRpbmdfYnVmLGEud2luZG93LGIsYyxhLnBlbmRpbmcpLGEucGVuZGluZys9Y31mdW5jdGlvbiBxKGEsYixjLGQpe3ZhciBlPTIqYixmPTIqYztyZXR1cm4gYVtlXTxhW2ZdfHxhW2VdPT09YVtmXSYmZFtiXTw9ZFtjXX1mdW5jdGlvbiByKGEsYixjKXtmb3IodmFyIGQ9YS5oZWFwW2NdLGU9Yzw8MTtlPD1hLmhlYXBfbGVuJiYoZTxhLmhlYXBfbGVuJiZxKGIsYS5oZWFwW2UrMV0sYS5oZWFwW2VdLGEuZGVwdGgpJiZlKyssIXEoYixkLGEuaGVhcFtlXSxhLmRlcHRoKSk7KWEuaGVhcFtjXT1hLmhlYXBbZV0sYz1lLGU8PD0xO2EuaGVhcFtjXT1kfWZ1bmN0aW9uIHMoYSxiLGMpe3ZhciBkLGYsaSxqLGs9MDtpZigwIT09YS5sYXN0X2xpdClkbyBkPWEucGVuZGluZ19idWZbYS5kX2J1ZisyKmtdPDw4fGEucGVuZGluZ19idWZbYS5kX2J1ZisyKmsrMV0sZj1hLnBlbmRpbmdfYnVmW2EubF9idWYra10saysrLDA9PT1kP2goYSxmLGIpOihpPWhiW2ZdLGgoYSxpK1ArMSxiKSxqPV9baV0sMCE9PWomJihmLT1pYltpXSxnKGEsZixqKSksZC0tLGk9ZShkKSxoKGEsaSxjKSxqPWFiW2ldLDAhPT1qJiYoZC09amJbaV0sZyhhLGQsaikpKTt3aGlsZShrPGEubGFzdF9saXQpO2goYSxYLGIpfWZ1bmN0aW9uIHQoYSxiKXt2YXIgYyxkLGUsZj1iLmR5bl90cmVlLGc9Yi5zdGF0X2Rlc2Muc3RhdGljX3RyZWUsaD1iLnN0YXRfZGVzYy5oYXNfc3RyZWUsaT1iLnN0YXRfZGVzYy5lbGVtcyxqPS0xO2ZvcihhLmhlYXBfbGVuPTAsYS5oZWFwX21heD1ULGM9MDtpPmM7YysrKTAhPT1mWzIqY10/KGEuaGVhcFsrK2EuaGVhcF9sZW5dPWo9YyxhLmRlcHRoW2NdPTApOmZbMipjKzFdPTA7Zm9yKDthLmhlYXBfbGVuPDI7KWU9YS5oZWFwWysrYS5oZWFwX2xlbl09Mj5qPysrajowLGZbMiplXT0xLGEuZGVwdGhbZV09MCxhLm9wdF9sZW4tLSxoJiYoYS5zdGF0aWNfbGVuLT1nWzIqZSsxXSk7Zm9yKGIubWF4X2NvZGU9aixjPWEuaGVhcF9sZW4+PjE7Yz49MTtjLS0pcihhLGYsYyk7ZT1pO2RvIGM9YS5oZWFwWzFdLGEuaGVhcFsxXT1hLmhlYXBbYS5oZWFwX2xlbi0tXSxyKGEsZiwxKSxkPWEuaGVhcFsxXSxhLmhlYXBbLS1hLmhlYXBfbWF4XT1jLGEuaGVhcFstLWEuaGVhcF9tYXhdPWQsZlsyKmVdPWZbMipjXStmWzIqZF0sYS5kZXB0aFtlXT0oYS5kZXB0aFtjXT49YS5kZXB0aFtkXT9hLmRlcHRoW2NdOmEuZGVwdGhbZF0pKzEsZlsyKmMrMV09ZlsyKmQrMV09ZSxhLmhlYXBbMV09ZSsrLHIoYSxmLDEpO3doaWxlKGEuaGVhcF9sZW4+PTIpO2EuaGVhcFstLWEuaGVhcF9tYXhdPWEuaGVhcFsxXSxrKGEsYiksbChmLGosYS5ibF9jb3VudCl9ZnVuY3Rpb24gdShhLGIsYyl7dmFyIGQsZSxmPS0xLGc9YlsxXSxoPTAsaT03LGo9NDtmb3IoMD09PWcmJihpPTEzOCxqPTMpLGJbMiooYysxKSsxXT02NTUzNSxkPTA7Yz49ZDtkKyspZT1nLGc9YlsyKihkKzEpKzFdLCsraDxpJiZlPT09Z3x8KGo+aD9hLmJsX3RyZWVbMiplXSs9aDowIT09ZT8oZSE9PWYmJmEuYmxfdHJlZVsyKmVdKyssYS5ibF90cmVlWzIqWV0rKyk6MTA+PWg/YS5ibF90cmVlWzIqWl0rKzphLmJsX3RyZWVbMiokXSsrLGg9MCxmPWUsMD09PWc/KGk9MTM4LGo9Myk6ZT09PWc/KGk9NixqPTMpOihpPTcsaj00KSl9ZnVuY3Rpb24gdihhLGIsYyl7dmFyIGQsZSxmPS0xLGk9YlsxXSxqPTAsaz03LGw9NDtmb3IoMD09PWkmJihrPTEzOCxsPTMpLGQ9MDtjPj1kO2QrKylpZihlPWksaT1iWzIqKGQrMSkrMV0sISgrK2o8ayYmZT09PWkpKXtpZihsPmope2RvIGgoYSxlLGEuYmxfdHJlZSk7d2hpbGUoMCE9PS0tail9ZWxzZSAwIT09ZT8oZSE9PWYmJihoKGEsZSxhLmJsX3RyZWUpLGotLSksaChhLFksYS5ibF90cmVlKSxnKGEsai0zLDIpKToxMD49aj8oaChhLFosYS5ibF90cmVlKSxnKGEsai0zLDMpKTooaChhLCQsYS5ibF90cmVlKSxnKGEsai0xMSw3KSk7aj0wLGY9ZSwwPT09aT8oaz0xMzgsbD0zKTplPT09aT8oaz02LGw9Myk6KGs9NyxsPTQpfX1mdW5jdGlvbiB3KGEpe3ZhciBiO2Zvcih1KGEsYS5keW5fbHRyZWUsYS5sX2Rlc2MubWF4X2NvZGUpLHUoYSxhLmR5bl9kdHJlZSxhLmRfZGVzYy5tYXhfY29kZSksdChhLGEuYmxfZGVzYyksYj1TLTE7Yj49MyYmMD09PWEuYmxfdHJlZVsyKmNiW2JdKzFdO2ItLSk7cmV0dXJuIGEub3B0X2xlbis9MyooYisxKSs1KzUrNCxifWZ1bmN0aW9uIHgoYSxiLGMsZCl7dmFyIGU7Zm9yKGcoYSxiLTI1Nyw1KSxnKGEsYy0xLDUpLGcoYSxkLTQsNCksZT0wO2Q+ZTtlKyspZyhhLGEuYmxfdHJlZVsyKmNiW2VdKzFdLDMpO3YoYSxhLmR5bl9sdHJlZSxiLTEpLHYoYSxhLmR5bl9kdHJlZSxjLTEpfWZ1bmN0aW9uIHkoYSl7dmFyIGIsYz00MDkzNjI0NDQ3O2ZvcihiPTA7MzE+PWI7YisrLGM+Pj49MSlpZigxJmMmJjAhPT1hLmR5bl9sdHJlZVsyKmJdKXJldHVybiBHO2lmKDAhPT1hLmR5bl9sdHJlZVsxOF18fDAhPT1hLmR5bl9sdHJlZVsyMF18fDAhPT1hLmR5bl9sdHJlZVsyNl0pcmV0dXJuIEg7Zm9yKGI9MzI7UD5iO2IrKylpZigwIT09YS5keW5fbHRyZWVbMipiXSlyZXR1cm4gSDtyZXR1cm4gR31mdW5jdGlvbiB6KGEpe3BifHwobSgpLHBiPSEwKSxhLmxfZGVzYz1uZXcgb2IoYS5keW5fbHRyZWUsa2IpLGEuZF9kZXNjPW5ldyBvYihhLmR5bl9kdHJlZSxsYiksYS5ibF9kZXNjPW5ldyBvYihhLmJsX3RyZWUsbWIpLGEuYmlfYnVmPTAsYS5iaV92YWxpZD0wLG4oYSl9ZnVuY3Rpb24gQShhLGIsYyxkKXtnKGEsKEo8PDEpKyhkPzE6MCksMykscChhLGIsYywhMCl9ZnVuY3Rpb24gQihhKXtnKGEsSzw8MSwzKSxoKGEsWCxlYiksaihhKX1mdW5jdGlvbiBDKGEsYixjLGQpe3ZhciBlLGYsaD0wO2EubGV2ZWw+MD8oYS5zdHJtLmRhdGFfdHlwZT09PUkmJihhLnN0cm0uZGF0YV90eXBlPXkoYSkpLHQoYSxhLmxfZGVzYyksdChhLGEuZF9kZXNjKSxoPXcoYSksZT1hLm9wdF9sZW4rMys3Pj4+MyxmPWEuc3RhdGljX2xlbiszKzc+Pj4zLGU+PWYmJihlPWYpKTplPWY9Yys1LGU+PWMrNCYmLTEhPT1iP0EoYSxiLGMsZCk6YS5zdHJhdGVneT09PUZ8fGY9PT1lPyhnKGEsKEs8PDEpKyhkPzE6MCksMykscyhhLGViLGZiKSk6KGcoYSwoTDw8MSkrKGQ/MTowKSwzKSx4KGEsYS5sX2Rlc2MubWF4X2NvZGUrMSxhLmRfZGVzYy5tYXhfY29kZSsxLGgrMSkscyhhLGEuZHluX2x0cmVlLGEuZHluX2R0cmVlKSksbihhKSxkJiZvKGEpfWZ1bmN0aW9uIEQoYSxiLGMpe3JldHVybiBhLnBlbmRpbmdfYnVmW2EuZF9idWYrMiphLmxhc3RfbGl0XT1iPj4+OCYyNTUsYS5wZW5kaW5nX2J1ZlthLmRfYnVmKzIqYS5sYXN0X2xpdCsxXT0yNTUmYixhLnBlbmRpbmdfYnVmW2EubF9idWYrYS5sYXN0X2xpdF09MjU1JmMsYS5sYXN0X2xpdCsrLDA9PT1iP2EuZHluX2x0cmVlWzIqY10rKzooYS5tYXRjaGVzKyssYi0tLGEuZHluX2x0cmVlWzIqKGhiW2NdK1ArMSldKyssYS5keW5fZHRyZWVbMiplKGIpXSsrKSxhLmxhc3RfbGl0PT09YS5saXRfYnVmc2l6ZS0xfXZhciBFPWEoIi4uL3V0aWxzL2NvbW1vbiIpLEY9NCxHPTAsSD0xLEk9MixKPTAsSz0xLEw9MixNPTMsTj0yNTgsTz0yOSxQPTI1NixRPVArMStPLFI9MzAsUz0xOSxUPTIqUSsxLFU9MTUsVj0xNixXPTcsWD0yNTYsWT0xNixaPTE3LCQ9MTgsXz1bMCwwLDAsMCwwLDAsMCwwLDEsMSwxLDEsMiwyLDIsMiwzLDMsMywzLDQsNCw0LDQsNSw1LDUsNSwwXSxhYj1bMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNiw3LDcsOCw4LDksOSwxMCwxMCwxMSwxMSwxMiwxMiwxMywxM10sYmI9WzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwzLDddLGNiPVsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSxkYj01MTIsZWI9bmV3IEFycmF5KDIqKFErMikpO2QoZWIpO3ZhciBmYj1uZXcgQXJyYXkoMipSKTtkKGZiKTt2YXIgZ2I9bmV3IEFycmF5KGRiKTtkKGdiKTt2YXIgaGI9bmV3IEFycmF5KE4tTSsxKTtkKGhiKTt2YXIgaWI9bmV3IEFycmF5KE8pO2QoaWIpO3ZhciBqYj1uZXcgQXJyYXkoUik7ZChqYik7dmFyIGtiLGxiLG1iLG5iPWZ1bmN0aW9uKGEsYixjLGQsZSl7dGhpcy5zdGF0aWNfdHJlZT1hLHRoaXMuZXh0cmFfYml0cz1iLHRoaXMuZXh0cmFfYmFzZT1jLHRoaXMuZWxlbXM9ZCx0aGlzLm1heF9sZW5ndGg9ZSx0aGlzLmhhc19zdHJlZT1hJiZhLmxlbmd0aH0sb2I9ZnVuY3Rpb24oYSxiKXt0aGlzLmR5bl90cmVlPWEsdGhpcy5tYXhfY29kZT0wLHRoaXMuc3RhdF9kZXNjPWJ9LHBiPSExO2MuX3RyX2luaXQ9eixjLl90cl9zdG9yZWRfYmxvY2s9QSxjLl90cl9mbHVzaF9ibG9jaz1DLGMuX3RyX3RhbGx5PUQsYy5fdHJfYWxpZ249Qn0seyIuLi91dGlscy9jb21tb24iOjI3fV0sMzk6W2Z1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGMoKXt0aGlzLmlucHV0PW51bGwsdGhpcy5uZXh0X2luPTAsdGhpcy5hdmFpbF9pbj0wLHRoaXMudG90YWxfaW49MCx0aGlzLm91dHB1dD1udWxsLHRoaXMubmV4dF9vdXQ9MCx0aGlzLmF2YWlsX291dD0wLHRoaXMudG90YWxfb3V0PTAsdGhpcy5tc2c9IiIsdGhpcy5zdGF0ZT1udWxsLHRoaXMuZGF0YV90eXBlPTIsdGhpcy5hZGxlcj0wfWIuZXhwb3J0cz1jfSx7fV19LHt9LFs5XSkoOSl9KTs="></script>
<script src="data:application/javascript;base64,LyohIHBkZm1ha2UgdjAuMS4zNiwgQGxpY2Vuc2UgTUlULCBAbGluayBodHRwOi8vcGRmbWFrZS5vcmcgKi8KKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHsKCWlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JykKCQltb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTsKCWVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKQoJCWRlZmluZShbXSwgZmFjdG9yeSk7CgllbHNlIHsKCQl2YXIgYSA9IGZhY3RvcnkoKTsKCQlmb3IodmFyIGkgaW4gYSkgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyA/IGV4cG9ydHMgOiByb290KVtpXSA9IGFbaV07Cgl9Cn0pKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzLCBmdW5jdGlvbigpIHsKcmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXAKLyoqKioqKi8gCS8vIFRoZSBtb2R1bGUgY2FjaGUKLyoqKioqKi8gCXZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307Ci8qKioqKiovCi8qKioqKiovIAkvLyBUaGUgcmVxdWlyZSBmdW5jdGlvbgovKioqKioqLyAJZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkgewovKioqKioqLwovKioqKioqLyAJCS8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZQovKioqKioqLyAJCWlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7Ci8qKioqKiovIAkJCXJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzOwovKioqKioqLyAJCX0KLyoqKioqKi8gCQkvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKQovKioqKioqLyAJCXZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHsKLyoqKioqKi8gCQkJaTogbW9kdWxlSWQsCi8qKioqKiovIAkJCWw6IGZhbHNlLAovKioqKioqLyAJCQlleHBvcnRzOiB7fQovKioqKioqLyAJCX07Ci8qKioqKiovCi8qKioqKiovIAkJLy8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uCi8qKioqKiovIAkJbW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7Ci8qKioqKiovCi8qKioqKiovIAkJLy8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZAovKioqKioqLyAJCW1vZHVsZS5sID0gdHJ1ZTsKLyoqKioqKi8KLyoqKioqKi8gCQkvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZQovKioqKioqLyAJCXJldHVybiBtb2R1bGUuZXhwb3J0czsKLyoqKioqKi8gCX0KLyoqKioqKi8KLyoqKioqKi8KLyoqKioqKi8gCS8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pCi8qKioqKiovIAlfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzOwovKioqKioqLwovKioqKioqLyAJLy8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGUKLyoqKioqKi8gCV9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7Ci8qKioqKiovCi8qKioqKiovIAkvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHMKLyoqKioqKi8gCV9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikgewovKioqKioqLyAJCWlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHsKLyoqKioqKi8gCQkJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsKLyoqKioqKi8gCQkJCWNvbmZpZ3VyYWJsZTogZmFsc2UsCi8qKioqKiovIAkJCQllbnVtZXJhYmxlOiB0cnVlLAovKioqKioqLyAJCQkJZ2V0OiBnZXR0ZXIKLyoqKioqKi8gCQkJfSk7Ci8qKioqKiovIAkJfQovKioqKioqLyAJfTsKLyoqKioqKi8KLyoqKioqKi8gCS8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzCi8qKioqKiovIAlfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHsKLyoqKioqKi8gCQl2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID8KLyoqKioqKi8gCQkJZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDoKLyoqKioqKi8gCQkJZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTsKLyoqKioqKi8gCQlfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7Ci8qKioqKiovIAkJcmV0dXJuIGdldHRlcjsKLyoqKioqKi8gCX07Ci8qKioqKiovCi8qKioqKiovIAkvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwKLyoqKioqKi8gCV9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTsKLyoqKioqKi8KLyoqKioqKi8gCS8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fCi8qKioqKiovIAlfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSAiIjsKLyoqKioqKi8KLyoqKioqKi8gCS8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0cwovKioqKioqLyAJcmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMTIyKTsKLyoqKioqKi8gfSkKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoqKioqKi8gKFsKLyogMCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKZnVuY3Rpb24gaXNTdHJpbmcodmFyaWFibGUpIHsKCXJldHVybiB0eXBlb2YgdmFyaWFibGUgPT09ICdzdHJpbmcnIHx8IHZhcmlhYmxlIGluc3RhbmNlb2YgU3RyaW5nOwp9CgpmdW5jdGlvbiBpc051bWJlcih2YXJpYWJsZSkgewoJcmV0dXJuIHR5cGVvZiB2YXJpYWJsZSA9PT0gJ251bWJlcicgfHwgdmFyaWFibGUgaW5zdGFuY2VvZiBOdW1iZXI7Cn0KCmZ1bmN0aW9uIGlzQm9vbGVhbih2YXJpYWJsZSkgewoJcmV0dXJuIHR5cGVvZiB2YXJpYWJsZSA9PT0gJ2Jvb2xlYW4nOwp9CgpmdW5jdGlvbiBpc0FycmF5KHZhcmlhYmxlKSB7CglyZXR1cm4gQXJyYXkuaXNBcnJheSh2YXJpYWJsZSk7Cn0KCmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFyaWFibGUpIHsKCXJldHVybiB0eXBlb2YgdmFyaWFibGUgPT09ICdmdW5jdGlvbic7Cn0KCmZ1bmN0aW9uIGlzT2JqZWN0KHZhcmlhYmxlKSB7CglyZXR1cm4gdmFyaWFibGUgIT09IG51bGwgJiYgdHlwZW9mIHZhcmlhYmxlID09PSAnb2JqZWN0JzsKfQoKZnVuY3Rpb24gaXNOdWxsKHZhcmlhYmxlKSB7CglyZXR1cm4gdmFyaWFibGUgPT09IG51bGw7Cn0KCmZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhcmlhYmxlKSB7CglyZXR1cm4gdmFyaWFibGUgPT09IHVuZGVmaW5lZDsKfQoKZnVuY3Rpb24gcGFjaygpIHsKCXZhciByZXN1bHQgPSB7fTsKCglmb3IgKHZhciBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQl2YXIgb2JqID0gYXJndW1lbnRzW2ldOwoKCQlpZiAob2JqKSB7CgkJCWZvciAodmFyIGtleSBpbiBvYmopIHsKCQkJCWlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkgewoJCQkJCXJlc3VsdFtrZXldID0gb2JqW2tleV07CgkJCQl9CgkJCX0KCQl9Cgl9CgoJcmV0dXJuIHJlc3VsdDsKfQoKZnVuY3Rpb24gb2Zmc2V0VmVjdG9yKHZlY3RvciwgeCwgeSkgewoJc3dpdGNoICh2ZWN0b3IudHlwZSkgewoJCWNhc2UgJ2VsbGlwc2UnOgoJCWNhc2UgJ3JlY3QnOgoJCQl2ZWN0b3IueCArPSB4OwoJCQl2ZWN0b3IueSArPSB5OwoJCQlicmVhazsKCQljYXNlICdsaW5lJzoKCQkJdmVjdG9yLngxICs9IHg7CgkJCXZlY3Rvci54MiArPSB4OwoJCQl2ZWN0b3IueTEgKz0geTsKCQkJdmVjdG9yLnkyICs9IHk7CgkJCWJyZWFrOwoJCWNhc2UgJ3BvbHlsaW5lJzoKCQkJZm9yICh2YXIgaSA9IDAsIGwgPSB2ZWN0b3IucG9pbnRzLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCQkJdmVjdG9yLnBvaW50c1tpXS54ICs9IHg7CgkJCQl2ZWN0b3IucG9pbnRzW2ldLnkgKz0geTsKCQkJfQoJCQlicmVhazsKCX0KfQoKZnVuY3Rpb24gZm9udFN0cmluZ2lmeShrZXksIHZhbCkgewoJaWYgKGtleSA9PT0gJ2ZvbnQnKSB7CgkJcmV0dXJuICdmb250JzsKCX0KCXJldHVybiB2YWw7Cn0KCm1vZHVsZS5leHBvcnRzID0gewoJaXNTdHJpbmc6IGlzU3RyaW5nLAoJaXNOdW1iZXI6IGlzTnVtYmVyLAoJaXNCb29sZWFuOiBpc0Jvb2xlYW4sCglpc0FycmF5OiBpc0FycmF5LAoJaXNGdW5jdGlvbjogaXNGdW5jdGlvbiwKCWlzT2JqZWN0OiBpc09iamVjdCwKCWlzTnVsbDogaXNOdWxsLAoJaXNVbmRlZmluZWQ6IGlzVW5kZWZpbmVkLAoJcGFjazogcGFjaywKCWZvbnRTdHJpbmdpZnk6IGZvbnRTdHJpbmdpZnksCglvZmZzZXRWZWN0b3I6IG9mZnNldFZlY3Rvcgp9OwoKCi8qKiovIH0pLAovKiAxICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKGdsb2JhbCkgey8qIQogKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci4KICoKICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGZlcm9zc0BmZXJvc3Mub3JnPiA8aHR0cDovL2Zlcm9zcy5vcmc+CiAqIEBsaWNlbnNlICBNSVQKICovCi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovCgoKCnZhciBiYXNlNjQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyNCkKdmFyIGllZWU3NTQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyNSkKdmFyIGlzQXJyYXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc2KQoKZXhwb3J0cy5CdWZmZXIgPSBCdWZmZXIKZXhwb3J0cy5TbG93QnVmZmVyID0gU2xvd0J1ZmZlcgpleHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTID0gNTAKCi8qKgogKiBJZiBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgOgogKiAgID09PSB0cnVlICAgIFVzZSBVaW50OEFycmF5IGltcGxlbWVudGF0aW9uIChmYXN0ZXN0KQogKiAgID09PSBmYWxzZSAgIFVzZSBPYmplY3QgaW1wbGVtZW50YXRpb24gKG1vc3QgY29tcGF0aWJsZSwgZXZlbiBJRTYpCiAqCiAqIEJyb3dzZXJzIHRoYXQgc3VwcG9ydCB0eXBlZCBhcnJheXMgYXJlIElFIDEwKywgRmlyZWZveCA0KywgQ2hyb21lIDcrLCBTYWZhcmkgNS4xKywKICogT3BlcmEgMTEuNissIGlPUyA0LjIrLgogKgogKiBEdWUgdG8gdmFyaW91cyBicm93c2VyIGJ1Z3MsIHNvbWV0aW1lcyB0aGUgT2JqZWN0IGltcGxlbWVudGF0aW9uIHdpbGwgYmUgdXNlZCBldmVuCiAqIHdoZW4gdGhlIGJyb3dzZXIgc3VwcG9ydHMgdHlwZWQgYXJyYXlzLgogKgogKiBOb3RlOgogKgogKiAgIC0gRmlyZWZveCA0LTI5IGxhY2tzIHN1cHBvcnQgZm9yIGFkZGluZyBuZXcgcHJvcGVydGllcyB0byBgVWludDhBcnJheWAgaW5zdGFuY2VzLAogKiAgICAgU2VlOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02OTU0MzguCiAqCiAqICAgLSBDaHJvbWUgOS0xMCBpcyBtaXNzaW5nIHRoZSBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uLgogKgogKiAgIC0gSUUxMCBoYXMgYSBicm9rZW4gYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFycmF5cyBvZgogKiAgICAgaW5jb3JyZWN0IGxlbmd0aCBpbiBzb21lIHNpdHVhdGlvbnMuCgogKiBXZSBkZXRlY3QgdGhlc2UgYnVnZ3kgYnJvd3NlcnMgYW5kIHNldCBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgIHRvIGBmYWxzZWAgc28gdGhleQogKiBnZXQgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgc2xvd2VyIGJ1dCBiZWhhdmVzIGNvcnJlY3RseS4KICovCkJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUID0gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlQgIT09IHVuZGVmaW5lZAogID8gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlQKICA6IHR5cGVkQXJyYXlTdXBwb3J0KCkKCi8qCiAqIEV4cG9ydCBrTWF4TGVuZ3RoIGFmdGVyIHR5cGVkIGFycmF5IHN1cHBvcnQgaXMgZGV0ZXJtaW5lZC4KICovCmV4cG9ydHMua01heExlbmd0aCA9IGtNYXhMZW5ndGgoKQoKZnVuY3Rpb24gdHlwZWRBcnJheVN1cHBvcnQgKCkgewogIHRyeSB7CiAgICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkoMSkKICAgIGFyci5fX3Byb3RvX18gPSB7X19wcm90b19fOiBVaW50OEFycmF5LnByb3RvdHlwZSwgZm9vOiBmdW5jdGlvbiAoKSB7IHJldHVybiA0MiB9fQogICAgcmV0dXJuIGFyci5mb28oKSA9PT0gNDIgJiYgLy8gdHlwZWQgYXJyYXkgaW5zdGFuY2VzIGNhbiBiZSBhdWdtZW50ZWQKICAgICAgICB0eXBlb2YgYXJyLnN1YmFycmF5ID09PSAnZnVuY3Rpb24nICYmIC8vIGNocm9tZSA5LTEwIGxhY2sgYHN1YmFycmF5YAogICAgICAgIGFyci5zdWJhcnJheSgxLCAxKS5ieXRlTGVuZ3RoID09PSAwIC8vIGllMTAgaGFzIGJyb2tlbiBgc3ViYXJyYXlgCiAgfSBjYXRjaCAoZSkgewogICAgcmV0dXJuIGZhbHNlCiAgfQp9CgpmdW5jdGlvbiBrTWF4TGVuZ3RoICgpIHsKICByZXR1cm4gQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQKICAgID8gMHg3ZmZmZmZmZgogICAgOiAweDNmZmZmZmZmCn0KCmZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlciAodGhhdCwgbGVuZ3RoKSB7CiAgaWYgKGtNYXhMZW5ndGgoKSA8IGxlbmd0aCkgewogICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoJykKICB9CiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7CiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2UKICAgIHRoYXQgPSBuZXcgVWludDhBcnJheShsZW5ndGgpCiAgICB0aGF0Ll9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGUKICB9IGVsc2UgewogICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzcwogICAgaWYgKHRoYXQgPT09IG51bGwpIHsKICAgICAgdGhhdCA9IG5ldyBCdWZmZXIobGVuZ3RoKQogICAgfQogICAgdGhhdC5sZW5ndGggPSBsZW5ndGgKICB9CgogIHJldHVybiB0aGF0Cn0KCi8qKgogKiBUaGUgQnVmZmVyIGNvbnN0cnVjdG9yIHJldHVybnMgaW5zdGFuY2VzIG9mIGBVaW50OEFycmF5YCB0aGF0IGhhdmUgdGhlaXIKICogcHJvdG90eXBlIGNoYW5nZWQgdG8gYEJ1ZmZlci5wcm90b3R5cGVgLiBGdXJ0aGVybW9yZSwgYEJ1ZmZlcmAgaXMgYSBzdWJjbGFzcyBvZgogKiBgVWludDhBcnJheWAsIHNvIHRoZSByZXR1cm5lZCBpbnN0YW5jZXMgd2lsbCBoYXZlIGFsbCB0aGUgbm9kZSBgQnVmZmVyYCBtZXRob2RzCiAqIGFuZCB0aGUgYFVpbnQ4QXJyYXlgIG1ldGhvZHMuIFNxdWFyZSBicmFja2V0IG5vdGF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkIC0tIGl0CiAqIHJldHVybnMgYSBzaW5nbGUgb2N0ZXQuCiAqCiAqIFRoZSBgVWludDhBcnJheWAgcHJvdG90eXBlIHJlbWFpbnMgdW5tb2RpZmllZC4KICovCgpmdW5jdGlvbiBCdWZmZXIgKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7CiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCAmJiAhKHRoaXMgaW5zdGFuY2VvZiBCdWZmZXIpKSB7CiAgICByZXR1cm4gbmV3IEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkKICB9CgogIC8vIENvbW1vbiBjYXNlLgogIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykgewogICAgaWYgKHR5cGVvZiBlbmNvZGluZ09yT2Zmc2V0ID09PSAnc3RyaW5nJykgewogICAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgJ0lmIGVuY29kaW5nIGlzIHNwZWNpZmllZCB0aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJwogICAgICApCiAgICB9CiAgICByZXR1cm4gYWxsb2NVbnNhZmUodGhpcywgYXJnKQogIH0KICByZXR1cm4gZnJvbSh0aGlzLCBhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkKfQoKQnVmZmVyLnBvb2xTaXplID0gODE5MiAvLyBub3QgdXNlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uCgovLyBUT0RPOiBMZWdhY3ksIG5vdCBuZWVkZWQgYW55bW9yZS4gUmVtb3ZlIGluIG5leHQgbWFqb3IgdmVyc2lvbi4KQnVmZmVyLl9hdWdtZW50ID0gZnVuY3Rpb24gKGFycikgewogIGFyci5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlCiAgcmV0dXJuIGFycgp9CgpmdW5jdGlvbiBmcm9tICh0aGF0LCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7CiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHsKICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKQogIH0KCiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgewogICAgcmV0dXJuIGZyb21BcnJheUJ1ZmZlcih0aGF0LCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKQogIH0KCiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHsKICAgIHJldHVybiBmcm9tU3RyaW5nKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0KQogIH0KCiAgcmV0dXJuIGZyb21PYmplY3QodGhhdCwgdmFsdWUpCn0KCi8qKgogKiBGdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBCdWZmZXIoYXJnLCBlbmNvZGluZykgYnV0IHRocm93cyBhIFR5cGVFcnJvcgogKiBpZiB2YWx1ZSBpcyBhIG51bWJlci4KICogQnVmZmVyLmZyb20oc3RyWywgZW5jb2RpbmddKQogKiBCdWZmZXIuZnJvbShhcnJheSkKICogQnVmZmVyLmZyb20oYnVmZmVyKQogKiBCdWZmZXIuZnJvbShhcnJheUJ1ZmZlclssIGJ5dGVPZmZzZXRbLCBsZW5ndGhdXSkKICoqLwpCdWZmZXIuZnJvbSA9IGZ1bmN0aW9uICh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7CiAgcmV0dXJuIGZyb20obnVsbCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkKfQoKaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7CiAgQnVmZmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBVaW50OEFycmF5LnByb3RvdHlwZQogIEJ1ZmZlci5fX3Byb3RvX18gPSBVaW50OEFycmF5CiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC5zcGVjaWVzICYmCiAgICAgIEJ1ZmZlcltTeW1ib2wuc3BlY2llc10gPT09IEJ1ZmZlcikgewogICAgLy8gRml4IHN1YmFycmF5KCkgaW4gRVMyMDE2LiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL3B1bGwvOTcKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIsIFN5bWJvbC5zcGVjaWVzLCB7CiAgICAgIHZhbHVlOiBudWxsLAogICAgICBjb25maWd1cmFibGU6IHRydWUKICAgIH0pCiAgfQp9CgpmdW5jdGlvbiBhc3NlcnRTaXplIChzaXplKSB7CiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykgewogICAgdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKQogIH0gZWxzZSBpZiAoc2l6ZSA8IDApIHsKICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCcic2l6ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgbmVnYXRpdmUnKQogIH0KfQoKZnVuY3Rpb24gYWxsb2MgKHRoYXQsIHNpemUsIGZpbGwsIGVuY29kaW5nKSB7CiAgYXNzZXJ0U2l6ZShzaXplKQogIGlmIChzaXplIDw9IDApIHsKICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSkKICB9CiAgaWYgKGZpbGwgIT09IHVuZGVmaW5lZCkgewogICAgLy8gT25seSBwYXkgYXR0ZW50aW9uIHRvIGVuY29kaW5nIGlmIGl0J3MgYSBzdHJpbmcuIFRoaXMKICAgIC8vIHByZXZlbnRzIGFjY2lkZW50YWxseSBzZW5kaW5nIGluIGEgbnVtYmVyIHRoYXQgd291bGQKICAgIC8vIGJlIGludGVycHJldHRlZCBhcyBhIHN0YXJ0IG9mZnNldC4KICAgIHJldHVybiB0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnCiAgICAgID8gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpLmZpbGwoZmlsbCwgZW5jb2RpbmcpCiAgICAgIDogY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpLmZpbGwoZmlsbCkKICB9CiAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKQp9CgovKioKICogQ3JlYXRlcyBhIG5ldyBmaWxsZWQgQnVmZmVyIGluc3RhbmNlLgogKiBhbGxvYyhzaXplWywgZmlsbFssIGVuY29kaW5nXV0pCiAqKi8KQnVmZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7CiAgcmV0dXJuIGFsbG9jKG51bGwsIHNpemUsIGZpbGwsIGVuY29kaW5nKQp9CgpmdW5jdGlvbiBhbGxvY1Vuc2FmZSAodGhhdCwgc2l6ZSkgewogIGFzc2VydFNpemUoc2l6ZSkKICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUgPCAwID8gMCA6IGNoZWNrZWQoc2l6ZSkgfCAwKQogIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgIHRoYXRbaV0gPSAwCiAgICB9CiAgfQogIHJldHVybiB0aGF0Cn0KCi8qKgogKiBFcXVpdmFsZW50IHRvIEJ1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLgogKiAqLwpCdWZmZXIuYWxsb2NVbnNhZmUgPSBmdW5jdGlvbiAoc2l6ZSkgewogIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKQp9Ci8qKgogKiBFcXVpdmFsZW50IHRvIFNsb3dCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS4KICovCkJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkgewogIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKQp9CgpmdW5jdGlvbiBmcm9tU3RyaW5nICh0aGF0LCBzdHJpbmcsIGVuY29kaW5nKSB7CiAgaWYgKHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycgfHwgZW5jb2RpbmcgPT09ICcnKSB7CiAgICBlbmNvZGluZyA9ICd1dGY4JwogIH0KCiAgaWYgKCFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHsKICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJyJlbmNvZGluZyIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBlbmNvZGluZycpCiAgfQoKICB2YXIgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcsIGVuY29kaW5nKSB8IDAKICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbmd0aCkKCiAgdmFyIGFjdHVhbCA9IHRoYXQud3JpdGUoc3RyaW5nLCBlbmNvZGluZykKCiAgaWYgKGFjdHVhbCAhPT0gbGVuZ3RoKSB7CiAgICAvLyBXcml0aW5nIGEgaGV4IHN0cmluZywgZm9yIGV4YW1wbGUsIHRoYXQgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzIHdpbGwKICAgIC8vIGNhdXNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IGludmFsaWQgY2hhcmFjdGVyIHRvIGJlIGlnbm9yZWQuIChlLmcuCiAgICAvLyAnYWJ4eGNkJyB3aWxsIGJlIHRyZWF0ZWQgYXMgJ2FiJykKICAgIHRoYXQgPSB0aGF0LnNsaWNlKDAsIGFjdHVhbCkKICB9CgogIHJldHVybiB0aGF0Cn0KCmZ1bmN0aW9uIGZyb21BcnJheUxpa2UgKHRoYXQsIGFycmF5KSB7CiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA8IDAgPyAwIDogY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMAogIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgbGVuZ3RoKQogIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHsKICAgIHRoYXRbaV0gPSBhcnJheVtpXSAmIDI1NQogIH0KICByZXR1cm4gdGhhdAp9CgpmdW5jdGlvbiBmcm9tQXJyYXlCdWZmZXIgKHRoYXQsIGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpIHsKICBhcnJheS5ieXRlTGVuZ3RoIC8vIHRoaXMgdGhyb3dzIGlmIGBhcnJheWAgaXMgbm90IGEgdmFsaWQgQXJyYXlCdWZmZXIKCiAgaWYgKGJ5dGVPZmZzZXQgPCAwIHx8IGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7CiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCdvZmZzZXRcJyBpcyBvdXQgb2YgYm91bmRzJykKICB9CgogIGlmIChhcnJheS5ieXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCArIChsZW5ndGggfHwgMCkpIHsKICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcJ2xlbmd0aFwnIGlzIG91dCBvZiBib3VuZHMnKQogIH0KCiAgaWYgKGJ5dGVPZmZzZXQgPT09IHVuZGVmaW5lZCAmJiBsZW5ndGggPT09IHVuZGVmaW5lZCkgewogICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSkKICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7CiAgICBhcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0KQogIH0gZWxzZSB7CiAgICBhcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpCiAgfQoKICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHsKICAgIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlLCBmb3IgYmVzdCBwZXJmb3JtYW5jZQogICAgdGhhdCA9IGFycmF5CiAgICB0aGF0Ll9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGUKICB9IGVsc2UgewogICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzcwogICAgdGhhdCA9IGZyb21BcnJheUxpa2UodGhhdCwgYXJyYXkpCiAgfQogIHJldHVybiB0aGF0Cn0KCmZ1bmN0aW9uIGZyb21PYmplY3QgKHRoYXQsIG9iaikgewogIGlmIChCdWZmZXIuaXNCdWZmZXIob2JqKSkgewogICAgdmFyIGxlbiA9IGNoZWNrZWQob2JqLmxlbmd0aCkgfCAwCiAgICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbikKCiAgICBpZiAodGhhdC5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIHRoYXQKICAgIH0KCiAgICBvYmouY29weSh0aGF0LCAwLCAwLCBsZW4pCiAgICByZXR1cm4gdGhhdAogIH0KCiAgaWYgKG9iaikgewogICAgaWYgKCh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmCiAgICAgICAgb2JqLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB8fCAnbGVuZ3RoJyBpbiBvYmopIHsKICAgICAgaWYgKHR5cGVvZiBvYmoubGVuZ3RoICE9PSAnbnVtYmVyJyB8fCBpc25hbihvYmoubGVuZ3RoKSkgewogICAgICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgMCkKICAgICAgfQogICAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LCBvYmopCiAgICB9CgogICAgaWYgKG9iai50eXBlID09PSAnQnVmZmVyJyAmJiBpc0FycmF5KG9iai5kYXRhKSkgewogICAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LCBvYmouZGF0YSkKICAgIH0KICB9CgogIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBhcnJheS1saWtlIG9iamVjdC4nKQp9CgpmdW5jdGlvbiBjaGVja2VkIChsZW5ndGgpIHsKICAvLyBOb3RlOiBjYW5ub3QgdXNlIGBsZW5ndGggPCBrTWF4TGVuZ3RoKClgIGhlcmUgYmVjYXVzZSB0aGF0IGZhaWxzIHdoZW4KICAvLyBsZW5ndGggaXMgTmFOICh3aGljaCBpcyBvdGhlcndpc2UgY29lcmNlZCB0byB6ZXJvLikKICBpZiAobGVuZ3RoID49IGtNYXhMZW5ndGgoKSkgewogICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZTogMHgnICsga01heExlbmd0aCgpLnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnKQogIH0KICByZXR1cm4gbGVuZ3RoIHwgMAp9CgpmdW5jdGlvbiBTbG93QnVmZmVyIChsZW5ndGgpIHsKICBpZiAoK2xlbmd0aCAhPSBsZW5ndGgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBlcWVxZXEKICAgIGxlbmd0aCA9IDAKICB9CiAgcmV0dXJuIEJ1ZmZlci5hbGxvYygrbGVuZ3RoKQp9CgpCdWZmZXIuaXNCdWZmZXIgPSBmdW5jdGlvbiBpc0J1ZmZlciAoYikgewogIHJldHVybiAhIShiICE9IG51bGwgJiYgYi5faXNCdWZmZXIpCn0KCkJ1ZmZlci5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAoYSwgYikgewogIGlmICghQnVmZmVyLmlzQnVmZmVyKGEpIHx8ICFCdWZmZXIuaXNCdWZmZXIoYikpIHsKICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50cyBtdXN0IGJlIEJ1ZmZlcnMnKQogIH0KCiAgaWYgKGEgPT09IGIpIHJldHVybiAwCgogIHZhciB4ID0gYS5sZW5ndGgKICB2YXIgeSA9IGIubGVuZ3RoCgogIGZvciAodmFyIGkgPSAwLCBsZW4gPSBNYXRoLm1pbih4LCB5KTsgaSA8IGxlbjsgKytpKSB7CiAgICBpZiAoYVtpXSAhPT0gYltpXSkgewogICAgICB4ID0gYVtpXQogICAgICB5ID0gYltpXQogICAgICBicmVhawogICAgfQogIH0KCiAgaWYgKHggPCB5KSByZXR1cm4gLTEKICBpZiAoeSA8IHgpIHJldHVybiAxCiAgcmV0dXJuIDAKfQoKQnVmZmVyLmlzRW5jb2RpbmcgPSBmdW5jdGlvbiBpc0VuY29kaW5nIChlbmNvZGluZykgewogIHN3aXRjaCAoU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpKSB7CiAgICBjYXNlICdoZXgnOgogICAgY2FzZSAndXRmOCc6CiAgICBjYXNlICd1dGYtOCc6CiAgICBjYXNlICdhc2NpaSc6CiAgICBjYXNlICdsYXRpbjEnOgogICAgY2FzZSAnYmluYXJ5JzoKICAgIGNhc2UgJ2Jhc2U2NCc6CiAgICBjYXNlICd1Y3MyJzoKICAgIGNhc2UgJ3Vjcy0yJzoKICAgIGNhc2UgJ3V0ZjE2bGUnOgogICAgY2FzZSAndXRmLTE2bGUnOgogICAgICByZXR1cm4gdHJ1ZQogICAgZGVmYXVsdDoKICAgICAgcmV0dXJuIGZhbHNlCiAgfQp9CgpCdWZmZXIuY29uY2F0ID0gZnVuY3Rpb24gY29uY2F0IChsaXN0LCBsZW5ndGgpIHsKICBpZiAoIWlzQXJyYXkobGlzdCkpIHsKICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKQogIH0KCiAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSB7CiAgICByZXR1cm4gQnVmZmVyLmFsbG9jKDApCiAgfQoKICB2YXIgaQogIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkgewogICAgbGVuZ3RoID0gMAogICAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHsKICAgICAgbGVuZ3RoICs9IGxpc3RbaV0ubGVuZ3RoCiAgICB9CiAgfQoKICB2YXIgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKGxlbmd0aCkKICB2YXIgcG9zID0gMAogIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7CiAgICB2YXIgYnVmID0gbGlzdFtpXQogICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgewogICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJykKICAgIH0KICAgIGJ1Zi5jb3B5KGJ1ZmZlciwgcG9zKQogICAgcG9zICs9IGJ1Zi5sZW5ndGgKICB9CiAgcmV0dXJuIGJ1ZmZlcgp9CgpmdW5jdGlvbiBieXRlTGVuZ3RoIChzdHJpbmcsIGVuY29kaW5nKSB7CiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihzdHJpbmcpKSB7CiAgICByZXR1cm4gc3RyaW5nLmxlbmd0aAogIH0KICBpZiAodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3ID09PSAnZnVuY3Rpb24nICYmCiAgICAgIChBcnJheUJ1ZmZlci5pc1ZpZXcoc3RyaW5nKSB8fCBzdHJpbmcgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikpIHsKICAgIHJldHVybiBzdHJpbmcuYnl0ZUxlbmd0aAogIH0KICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHsKICAgIHN0cmluZyA9ICcnICsgc3RyaW5nCiAgfQoKICB2YXIgbGVuID0gc3RyaW5nLmxlbmd0aAogIGlmIChsZW4gPT09IDApIHJldHVybiAwCgogIC8vIFVzZSBhIGZvciBsb29wIHRvIGF2b2lkIHJlY3Vyc2lvbgogIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlCiAgZm9yICg7OykgewogICAgc3dpdGNoIChlbmNvZGluZykgewogICAgICBjYXNlICdhc2NpaSc6CiAgICAgIGNhc2UgJ2xhdGluMSc6CiAgICAgIGNhc2UgJ2JpbmFyeSc6CiAgICAgICAgcmV0dXJuIGxlbgogICAgICBjYXNlICd1dGY4JzoKICAgICAgY2FzZSAndXRmLTgnOgogICAgICBjYXNlIHVuZGVmaW5lZDoKICAgICAgICByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGgKICAgICAgY2FzZSAndWNzMic6CiAgICAgIGNhc2UgJ3Vjcy0yJzoKICAgICAgY2FzZSAndXRmMTZsZSc6CiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzoKICAgICAgICByZXR1cm4gbGVuICogMgogICAgICBjYXNlICdoZXgnOgogICAgICAgIHJldHVybiBsZW4gPj4+IDEKICAgICAgY2FzZSAnYmFzZTY0JzoKICAgICAgICByZXR1cm4gYmFzZTY0VG9CeXRlcyhzdHJpbmcpLmxlbmd0aAogICAgICBkZWZhdWx0OgogICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgcmV0dXJuIHV0ZjhUb0J5dGVzKHN0cmluZykubGVuZ3RoIC8vIGFzc3VtZSB1dGY4CiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKQogICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZQogICAgfQogIH0KfQpCdWZmZXIuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGgKCmZ1bmN0aW9uIHNsb3dUb1N0cmluZyAoZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHsKICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZQoKICAvLyBObyBuZWVkIHRvIHZlcmlmeSB0aGF0ICJ0aGlzLmxlbmd0aCA8PSBNQVhfVUlOVDMyIiBzaW5jZSBpdCdzIGEgcmVhZC1vbmx5CiAgLy8gcHJvcGVydHkgb2YgYSB0eXBlZCBhcnJheS4KCiAgLy8gVGhpcyBiZWhhdmVzIG5laXRoZXIgbGlrZSBTdHJpbmcgbm9yIFVpbnQ4QXJyYXkgaW4gdGhhdCB3ZSBzZXQgc3RhcnQvZW5kCiAgLy8gdG8gdGhlaXIgdXBwZXIvbG93ZXIgYm91bmRzIGlmIHRoZSB2YWx1ZSBwYXNzZWQgaXMgb3V0IG9mIHJhbmdlLgogIC8vIHVuZGVmaW5lZCBpcyBoYW5kbGVkIHNwZWNpYWxseSBhcyBwZXIgRUNNQS0yNjIgNnRoIEVkaXRpb24sCiAgLy8gU2VjdGlvbiAxMy4zLjMuNyBSdW50aW1lIFNlbWFudGljczogS2V5ZWRCaW5kaW5nSW5pdGlhbGl6YXRpb24uCiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQgfHwgc3RhcnQgPCAwKSB7CiAgICBzdGFydCA9IDAKICB9CiAgLy8gUmV0dXJuIGVhcmx5IGlmIHN0YXJ0ID4gdGhpcy5sZW5ndGguIERvbmUgaGVyZSB0byBwcmV2ZW50IHBvdGVudGlhbCB1aW50MzIKICAvLyBjb2VyY2lvbiBmYWlsIGJlbG93LgogIGlmIChzdGFydCA+IHRoaXMubGVuZ3RoKSB7CiAgICByZXR1cm4gJycKICB9CgogIGlmIChlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPiB0aGlzLmxlbmd0aCkgewogICAgZW5kID0gdGhpcy5sZW5ndGgKICB9CgogIGlmIChlbmQgPD0gMCkgewogICAgcmV0dXJuICcnCiAgfQoKICAvLyBGb3JjZSBjb2Vyc2lvbiB0byB1aW50MzIuIFRoaXMgd2lsbCBhbHNvIGNvZXJjZSBmYWxzZXkvTmFOIHZhbHVlcyB0byAwLgogIGVuZCA+Pj49IDAKICBzdGFydCA+Pj49IDAKCiAgaWYgKGVuZCA8PSBzdGFydCkgewogICAgcmV0dXJuICcnCiAgfQoKICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4JwoKICB3aGlsZSAodHJ1ZSkgewogICAgc3dpdGNoIChlbmNvZGluZykgewogICAgICBjYXNlICdoZXgnOgogICAgICAgIHJldHVybiBoZXhTbGljZSh0aGlzLCBzdGFydCwgZW5kKQoKICAgICAgY2FzZSAndXRmOCc6CiAgICAgIGNhc2UgJ3V0Zi04JzoKICAgICAgICByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpCgogICAgICBjYXNlICdhc2NpaSc6CiAgICAgICAgcmV0dXJuIGFzY2lpU2xpY2UodGhpcywgc3RhcnQsIGVuZCkKCiAgICAgIGNhc2UgJ2xhdGluMSc6CiAgICAgIGNhc2UgJ2JpbmFyeSc6CiAgICAgICAgcmV0dXJuIGxhdGluMVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpCgogICAgICBjYXNlICdiYXNlNjQnOgogICAgICAgIHJldHVybiBiYXNlNjRTbGljZSh0aGlzLCBzdGFydCwgZW5kKQoKICAgICAgY2FzZSAndWNzMic6CiAgICAgIGNhc2UgJ3Vjcy0yJzoKICAgICAgY2FzZSAndXRmMTZsZSc6CiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzoKICAgICAgICByZXR1cm4gdXRmMTZsZVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpCgogICAgICBkZWZhdWx0OgogICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKQogICAgICAgIGVuY29kaW5nID0gKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKCkKICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWUKICAgIH0KICB9Cn0KCi8vIFRoZSBwcm9wZXJ0eSBpcyB1c2VkIGJ5IGBCdWZmZXIuaXNCdWZmZXJgIGFuZCBgaXMtYnVmZmVyYCAoaW4gU2FmYXJpIDUtNykgdG8gZGV0ZWN0Ci8vIEJ1ZmZlciBpbnN0YW5jZXMuCkJ1ZmZlci5wcm90b3R5cGUuX2lzQnVmZmVyID0gdHJ1ZQoKZnVuY3Rpb24gc3dhcCAoYiwgbiwgbSkgewogIHZhciBpID0gYltuXQogIGJbbl0gPSBiW21dCiAgYlttXSA9IGkKfQoKQnVmZmVyLnByb3RvdHlwZS5zd2FwMTYgPSBmdW5jdGlvbiBzd2FwMTYgKCkgewogIHZhciBsZW4gPSB0aGlzLmxlbmd0aAogIGlmIChsZW4gJSAyICE9PSAwKSB7CiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMnKQogIH0KICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSAyKSB7CiAgICBzd2FwKHRoaXMsIGksIGkgKyAxKQogIH0KICByZXR1cm4gdGhpcwp9CgpCdWZmZXIucHJvdG90eXBlLnN3YXAzMiA9IGZ1bmN0aW9uIHN3YXAzMiAoKSB7CiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoCiAgaWYgKGxlbiAlIDQgIT09IDApIHsKICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cycpCiAgfQogIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHsKICAgIHN3YXAodGhpcywgaSwgaSArIDMpCiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgMikKICB9CiAgcmV0dXJuIHRoaXMKfQoKQnVmZmVyLnByb3RvdHlwZS5zd2FwNjQgPSBmdW5jdGlvbiBzd2FwNjQgKCkgewogIHZhciBsZW4gPSB0aGlzLmxlbmd0aAogIGlmIChsZW4gJSA4ICE9PSAwKSB7CiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMnKQogIH0KICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSA4KSB7CiAgICBzd2FwKHRoaXMsIGksIGkgKyA3KQogICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDYpCiAgICBzd2FwKHRoaXMsIGkgKyAyLCBpICsgNSkKICAgIHN3YXAodGhpcywgaSArIDMsIGkgKyA0KQogIH0KICByZXR1cm4gdGhpcwp9CgpCdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkgewogIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aCB8IDAKICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gJycKICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCAwLCBsZW5ndGgpCiAgcmV0dXJuIHNsb3dUb1N0cmluZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpCn0KCkJ1ZmZlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzIChiKSB7CiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXInKQogIGlmICh0aGlzID09PSBiKSByZXR1cm4gdHJ1ZQogIHJldHVybiBCdWZmZXIuY29tcGFyZSh0aGlzLCBiKSA9PT0gMAp9CgpCdWZmZXIucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHsKICB2YXIgc3RyID0gJycKICB2YXIgbWF4ID0gZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFUwogIGlmICh0aGlzLmxlbmd0aCA+IDApIHsKICAgIHN0ciA9IHRoaXMudG9TdHJpbmcoJ2hleCcsIDAsIG1heCkubWF0Y2goLy57Mn0vZykuam9pbignICcpCiAgICBpZiAodGhpcy5sZW5ndGggPiBtYXgpIHN0ciArPSAnIC4uLiAnCiAgfQogIHJldHVybiAnPEJ1ZmZlciAnICsgc3RyICsgJz4nCn0KCkJ1ZmZlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKHRhcmdldCwgc3RhcnQsIGVuZCwgdGhpc1N0YXJ0LCB0aGlzRW5kKSB7CiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGFyZ2V0KSkgewogICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpCiAgfQoKICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCkgewogICAgc3RhcnQgPSAwCiAgfQogIGlmIChlbmQgPT09IHVuZGVmaW5lZCkgewogICAgZW5kID0gdGFyZ2V0ID8gdGFyZ2V0Lmxlbmd0aCA6IDAKICB9CiAgaWYgKHRoaXNTdGFydCA9PT0gdW5kZWZpbmVkKSB7CiAgICB0aGlzU3RhcnQgPSAwCiAgfQogIGlmICh0aGlzRW5kID09PSB1bmRlZmluZWQpIHsKICAgIHRoaXNFbmQgPSB0aGlzLmxlbmd0aAogIH0KCiAgaWYgKHN0YXJ0IDwgMCB8fCBlbmQgPiB0YXJnZXQubGVuZ3RoIHx8IHRoaXNTdGFydCA8IDAgfHwgdGhpc0VuZCA+IHRoaXMubGVuZ3RoKSB7CiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb3V0IG9mIHJhbmdlIGluZGV4JykKICB9CgogIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCAmJiBzdGFydCA+PSBlbmQpIHsKICAgIHJldHVybiAwCiAgfQogIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCkgewogICAgcmV0dXJuIC0xCiAgfQogIGlmIChzdGFydCA+PSBlbmQpIHsKICAgIHJldHVybiAxCiAgfQoKICBzdGFydCA+Pj49IDAKICBlbmQgPj4+PSAwCiAgdGhpc1N0YXJ0ID4+Pj0gMAogIHRoaXNFbmQgPj4+PSAwCgogIGlmICh0aGlzID09PSB0YXJnZXQpIHJldHVybiAwCgogIHZhciB4ID0gdGhpc0VuZCAtIHRoaXNTdGFydAogIHZhciB5ID0gZW5kIC0gc3RhcnQKICB2YXIgbGVuID0gTWF0aC5taW4oeCwgeSkKCiAgdmFyIHRoaXNDb3B5ID0gdGhpcy5zbGljZSh0aGlzU3RhcnQsIHRoaXNFbmQpCiAgdmFyIHRhcmdldENvcHkgPSB0YXJnZXQuc2xpY2Uoc3RhcnQsIGVuZCkKCiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkgewogICAgaWYgKHRoaXNDb3B5W2ldICE9PSB0YXJnZXRDb3B5W2ldKSB7CiAgICAgIHggPSB0aGlzQ29weVtpXQogICAgICB5ID0gdGFyZ2V0Q29weVtpXQogICAgICBicmVhawogICAgfQogIH0KCiAgaWYgKHggPCB5KSByZXR1cm4gLTEKICBpZiAoeSA8IHgpIHJldHVybiAxCiAgcmV0dXJuIDAKfQoKLy8gRmluZHMgZWl0aGVyIHRoZSBmaXJzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPj0gYGJ5dGVPZmZzZXRgLAovLyBPUiB0aGUgbGFzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPD0gYGJ5dGVPZmZzZXRgLgovLwovLyBBcmd1bWVudHM6Ci8vIC0gYnVmZmVyIC0gYSBCdWZmZXIgdG8gc2VhcmNoCi8vIC0gdmFsIC0gYSBzdHJpbmcsIEJ1ZmZlciwgb3IgbnVtYmVyCi8vIC0gYnl0ZU9mZnNldCAtIGFuIGluZGV4IGludG8gYGJ1ZmZlcmA7IHdpbGwgYmUgY2xhbXBlZCB0byBhbiBpbnQzMgovLyAtIGVuY29kaW5nIC0gYW4gb3B0aW9uYWwgZW5jb2RpbmcsIHJlbGV2YW50IGlzIHZhbCBpcyBhIHN0cmluZwovLyAtIGRpciAtIHRydWUgZm9yIGluZGV4T2YsIGZhbHNlIGZvciBsYXN0SW5kZXhPZgpmdW5jdGlvbiBiaWRpcmVjdGlvbmFsSW5kZXhPZiAoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHsKICAvLyBFbXB0eSBidWZmZXIgbWVhbnMgbm8gbWF0Y2gKICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xCgogIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0CiAgaWYgKHR5cGVvZiBieXRlT2Zmc2V0ID09PSAnc3RyaW5nJykgewogICAgZW5jb2RpbmcgPSBieXRlT2Zmc2V0CiAgICBieXRlT2Zmc2V0ID0gMAogIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA+IDB4N2ZmZmZmZmYpIHsKICAgIGJ5dGVPZmZzZXQgPSAweDdmZmZmZmZmCiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgLTB4ODAwMDAwMDApIHsKICAgIGJ5dGVPZmZzZXQgPSAtMHg4MDAwMDAwMAogIH0KICBieXRlT2Zmc2V0ID0gK2J5dGVPZmZzZXQgIC8vIENvZXJjZSB0byBOdW1iZXIuCiAgaWYgKGlzTmFOKGJ5dGVPZmZzZXQpKSB7CiAgICAvLyBieXRlT2Zmc2V0OiBpdCBpdCdzIHVuZGVmaW5lZCwgbnVsbCwgTmFOLCAiZm9vIiwgZXRjLCBzZWFyY2ggd2hvbGUgYnVmZmVyCiAgICBieXRlT2Zmc2V0ID0gZGlyID8gMCA6IChidWZmZXIubGVuZ3RoIC0gMSkKICB9CgogIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0OiBuZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyCiAgaWYgKGJ5dGVPZmZzZXQgPCAwKSBieXRlT2Zmc2V0ID0gYnVmZmVyLmxlbmd0aCArIGJ5dGVPZmZzZXQKICBpZiAoYnl0ZU9mZnNldCA+PSBidWZmZXIubGVuZ3RoKSB7CiAgICBpZiAoZGlyKSByZXR1cm4gLTEKICAgIGVsc2UgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggLSAxCiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgMCkgewogICAgaWYgKGRpcikgYnl0ZU9mZnNldCA9IDAKICAgIGVsc2UgcmV0dXJuIC0xCiAgfQoKICAvLyBOb3JtYWxpemUgdmFsCiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7CiAgICB2YWwgPSBCdWZmZXIuZnJvbSh2YWwsIGVuY29kaW5nKQogIH0KCiAgLy8gRmluYWxseSwgc2VhcmNoIGVpdGhlciBpbmRleE9mIChpZiBkaXIgaXMgdHJ1ZSkgb3IgbGFzdEluZGV4T2YKICBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbCkpIHsKICAgIC8vIFNwZWNpYWwgY2FzZTogbG9va2luZyBmb3IgZW1wdHkgc3RyaW5nL2J1ZmZlciBhbHdheXMgZmFpbHMKICAgIGlmICh2YWwubGVuZ3RoID09PSAwKSB7CiAgICAgIHJldHVybiAtMQogICAgfQogICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikKICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7CiAgICB2YWwgPSB2YWwgJiAweEZGIC8vIFNlYXJjaCBmb3IgYSBieXRlIHZhbHVlIFswLTI1NV0KICAgIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCAmJgogICAgICAgIHR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIGlmIChkaXIpIHsKICAgICAgICByZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KQogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KQogICAgICB9CiAgICB9CiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgWyB2YWwgXSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikKICB9CgogIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlcicpCn0KCmZ1bmN0aW9uIGFycmF5SW5kZXhPZiAoYXJyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHsKICB2YXIgaW5kZXhTaXplID0gMQogIHZhciBhcnJMZW5ndGggPSBhcnIubGVuZ3RoCiAgdmFyIHZhbExlbmd0aCA9IHZhbC5sZW5ndGgKCiAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQpIHsKICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpCiAgICBpZiAoZW5jb2RpbmcgPT09ICd1Y3MyJyB8fCBlbmNvZGluZyA9PT0gJ3Vjcy0yJyB8fAogICAgICAgIGVuY29kaW5nID09PSAndXRmMTZsZScgfHwgZW5jb2RpbmcgPT09ICd1dGYtMTZsZScpIHsKICAgICAgaWYgKGFyci5sZW5ndGggPCAyIHx8IHZhbC5sZW5ndGggPCAyKSB7CiAgICAgICAgcmV0dXJuIC0xCiAgICAgIH0KICAgICAgaW5kZXhTaXplID0gMgogICAgICBhcnJMZW5ndGggLz0gMgogICAgICB2YWxMZW5ndGggLz0gMgogICAgICBieXRlT2Zmc2V0IC89IDIKICAgIH0KICB9CgogIGZ1bmN0aW9uIHJlYWQgKGJ1ZiwgaSkgewogICAgaWYgKGluZGV4U2l6ZSA9PT0gMSkgewogICAgICByZXR1cm4gYnVmW2ldCiAgICB9IGVsc2UgewogICAgICByZXR1cm4gYnVmLnJlYWRVSW50MTZCRShpICogaW5kZXhTaXplKQogICAgfQogIH0KCiAgdmFyIGkKICBpZiAoZGlyKSB7CiAgICB2YXIgZm91bmRJbmRleCA9IC0xCiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpIDwgYXJyTGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKHJlYWQoYXJyLCBpKSA9PT0gcmVhZCh2YWwsIGZvdW5kSW5kZXggPT09IC0xID8gMCA6IGkgLSBmb3VuZEluZGV4KSkgewogICAgICAgIGlmIChmb3VuZEluZGV4ID09PSAtMSkgZm91bmRJbmRleCA9IGkKICAgICAgICBpZiAoaSAtIGZvdW5kSW5kZXggKyAxID09PSB2YWxMZW5ndGgpIHJldHVybiBmb3VuZEluZGV4ICogaW5kZXhTaXplCiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGZvdW5kSW5kZXggIT09IC0xKSBpIC09IGkgLSBmb3VuZEluZGV4CiAgICAgICAgZm91bmRJbmRleCA9IC0xCiAgICAgIH0KICAgIH0KICB9IGVsc2UgewogICAgaWYgKGJ5dGVPZmZzZXQgKyB2YWxMZW5ndGggPiBhcnJMZW5ndGgpIGJ5dGVPZmZzZXQgPSBhcnJMZW5ndGggLSB2YWxMZW5ndGgKICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPj0gMDsgaS0tKSB7CiAgICAgIHZhciBmb3VuZCA9IHRydWUKICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB2YWxMZW5ndGg7IGorKykgewogICAgICAgIGlmIChyZWFkKGFyciwgaSArIGopICE9PSByZWFkKHZhbCwgaikpIHsKICAgICAgICAgIGZvdW5kID0gZmFsc2UKICAgICAgICAgIGJyZWFrCiAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGkKICAgIH0KICB9CgogIHJldHVybiAtMQp9CgpCdWZmZXIucHJvdG90eXBlLmluY2x1ZGVzID0gZnVuY3Rpb24gaW5jbHVkZXMgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHsKICByZXR1cm4gdGhpcy5pbmRleE9mKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpICE9PSAtMQp9CgpCdWZmZXIucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiBpbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7CiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIHRydWUpCn0KCkJ1ZmZlci5wcm90b3R5cGUubGFzdEluZGV4T2YgPSBmdW5jdGlvbiBsYXN0SW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykgewogIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBmYWxzZSkKfQoKZnVuY3Rpb24gaGV4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkgewogIG9mZnNldCA9IE51bWJlcihvZmZzZXQpIHx8IDAKICB2YXIgcmVtYWluaW5nID0gYnVmLmxlbmd0aCAtIG9mZnNldAogIGlmICghbGVuZ3RoKSB7CiAgICBsZW5ndGggPSByZW1haW5pbmcKICB9IGVsc2UgewogICAgbGVuZ3RoID0gTnVtYmVyKGxlbmd0aCkKICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHsKICAgICAgbGVuZ3RoID0gcmVtYWluaW5nCiAgICB9CiAgfQoKICAvLyBtdXN0IGJlIGFuIGV2ZW4gbnVtYmVyIG9mIGRpZ2l0cwogIHZhciBzdHJMZW4gPSBzdHJpbmcubGVuZ3RoCiAgaWYgKHN0ckxlbiAlIDIgIT09IDApIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgaGV4IHN0cmluZycpCgogIGlmIChsZW5ndGggPiBzdHJMZW4gLyAyKSB7CiAgICBsZW5ndGggPSBzdHJMZW4gLyAyCiAgfQogIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgIHZhciBwYXJzZWQgPSBwYXJzZUludChzdHJpbmcuc3Vic3RyKGkgKiAyLCAyKSwgMTYpCiAgICBpZiAoaXNOYU4ocGFyc2VkKSkgcmV0dXJuIGkKICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHBhcnNlZAogIH0KICByZXR1cm4gaQp9CgpmdW5jdGlvbiB1dGY4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkgewogIHJldHVybiBibGl0QnVmZmVyKHV0ZjhUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpCn0KCmZ1bmN0aW9uIGFzY2lpV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkgewogIHJldHVybiBibGl0QnVmZmVyKGFzY2lpVG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKQp9CgpmdW5jdGlvbiBsYXRpbjFXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7CiAgcmV0dXJuIGFzY2lpV3JpdGUoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKQp9CgpmdW5jdGlvbiBiYXNlNjRXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7CiAgcmV0dXJuIGJsaXRCdWZmZXIoYmFzZTY0VG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKQp9CgpmdW5jdGlvbiB1Y3MyV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkgewogIHJldHVybiBibGl0QnVmZmVyKHV0ZjE2bGVUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpCn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiB3cml0ZSAoc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCwgZW5jb2RpbmcpIHsKICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nKQogIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkgewogICAgZW5jb2RpbmcgPSAndXRmOCcKICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoCiAgICBvZmZzZXQgPSAwCiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgZW5jb2RpbmcpCiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykgewogICAgZW5jb2RpbmcgPSBvZmZzZXQKICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoCiAgICBvZmZzZXQgPSAwCiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgb2Zmc2V0WywgbGVuZ3RoXVssIGVuY29kaW5nXSkKICB9IGVsc2UgaWYgKGlzRmluaXRlKG9mZnNldCkpIHsKICAgIG9mZnNldCA9IG9mZnNldCB8IDAKICAgIGlmIChpc0Zpbml0ZShsZW5ndGgpKSB7CiAgICAgIGxlbmd0aCA9IGxlbmd0aCB8IDAKICAgICAgaWYgKGVuY29kaW5nID09PSB1bmRlZmluZWQpIGVuY29kaW5nID0gJ3V0ZjgnCiAgICB9IGVsc2UgewogICAgICBlbmNvZGluZyA9IGxlbmd0aAogICAgICBsZW5ndGggPSB1bmRlZmluZWQKICAgIH0KICAvLyBsZWdhY3kgd3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0LCBsZW5ndGgpIC0gcmVtb3ZlIGluIHYwLjEzCiAgfSBlbHNlIHsKICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgJ0J1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkJwogICAgKQogIH0KCiAgdmFyIHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0CiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGxlbmd0aCA+IHJlbWFpbmluZykgbGVuZ3RoID0gcmVtYWluaW5nCgogIGlmICgoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpIHx8IG9mZnNldCA+IHRoaXMubGVuZ3RoKSB7CiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMnKQogIH0KCiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCcKCiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2UKICBmb3IgKDs7KSB7CiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7CiAgICAgIGNhc2UgJ2hleCc6CiAgICAgICAgcmV0dXJuIGhleFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpCgogICAgICBjYXNlICd1dGY4JzoKICAgICAgY2FzZSAndXRmLTgnOgogICAgICAgIHJldHVybiB1dGY4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkKCiAgICAgIGNhc2UgJ2FzY2lpJzoKICAgICAgICByZXR1cm4gYXNjaWlXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKQoKICAgICAgY2FzZSAnbGF0aW4xJzoKICAgICAgY2FzZSAnYmluYXJ5JzoKICAgICAgICByZXR1cm4gbGF0aW4xV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkKCiAgICAgIGNhc2UgJ2Jhc2U2NCc6CiAgICAgICAgLy8gV2FybmluZzogbWF4TGVuZ3RoIG5vdCB0YWtlbiBpbnRvIGFjY291bnQgaW4gYmFzZTY0V3JpdGUKICAgICAgICByZXR1cm4gYmFzZTY0V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkKCiAgICAgIGNhc2UgJ3VjczInOgogICAgICBjYXNlICd1Y3MtMic6CiAgICAgIGNhc2UgJ3V0ZjE2bGUnOgogICAgICBjYXNlICd1dGYtMTZsZSc6CiAgICAgICAgcmV0dXJuIHVjczJXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKQoKICAgICAgZGVmYXVsdDoKICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZykKICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpCiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlCiAgICB9CiAgfQp9CgpCdWZmZXIucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7CiAgcmV0dXJuIHsKICAgIHR5cGU6ICdCdWZmZXInLAogICAgZGF0YTogQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyIHx8IHRoaXMsIDApCiAgfQp9CgpmdW5jdGlvbiBiYXNlNjRTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7CiAgaWYgKHN0YXJ0ID09PSAwICYmIGVuZCA9PT0gYnVmLmxlbmd0aCkgewogICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1ZikKICB9IGVsc2UgewogICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1Zi5zbGljZShzdGFydCwgZW5kKSkKICB9Cn0KCmZ1bmN0aW9uIHV0ZjhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7CiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKQogIHZhciByZXMgPSBbXQoKICB2YXIgaSA9IHN0YXJ0CiAgd2hpbGUgKGkgPCBlbmQpIHsKICAgIHZhciBmaXJzdEJ5dGUgPSBidWZbaV0KICAgIHZhciBjb2RlUG9pbnQgPSBudWxsCiAgICB2YXIgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKSA/IDQKICAgICAgOiAoZmlyc3RCeXRlID4gMHhERikgPyAzCiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4QkYpID8gMgogICAgICA6IDEKCiAgICBpZiAoaSArIGJ5dGVzUGVyU2VxdWVuY2UgPD0gZW5kKSB7CiAgICAgIHZhciBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnQKCiAgICAgIHN3aXRjaCAoYnl0ZXNQZXJTZXF1ZW5jZSkgewogICAgICAgIGNhc2UgMToKICAgICAgICAgIGlmIChmaXJzdEJ5dGUgPCAweDgwKSB7CiAgICAgICAgICAgIGNvZGVQb2ludCA9IGZpcnN0Qnl0ZQogICAgICAgICAgfQogICAgICAgICAgYnJlYWsKICAgICAgICBjYXNlIDI6CiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXQogICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHsKICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweDFGKSA8PCAweDYgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpCiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3RikgewogICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnQKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgYnJlYWsKICAgICAgICBjYXNlIDM6CiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXQogICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kgKyAyXQogICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwKSB7CiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKQogICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0ZGICYmICh0ZW1wQ29kZVBvaW50IDwgMHhEODAwIHx8IHRlbXBDb2RlUG9pbnQgPiAweERGRkYpKSB7CiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBicmVhawogICAgICAgIGNhc2UgNDoKICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdCiAgICAgICAgICB0aGlyZEJ5dGUgPSBidWZbaSArIDJdCiAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXQogICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwICYmIChmb3VydGhCeXRlICYgMHhDMCkgPT09IDB4ODApIHsKICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweEYpIDw8IDB4MTIgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4QyB8ICh0aGlyZEJ5dGUgJiAweDNGKSA8PCAweDYgfCAoZm91cnRoQnl0ZSAmIDB4M0YpCiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkgewogICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnQKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgaWYgKGNvZGVQb2ludCA9PT0gbnVsbCkgewogICAgICAvLyB3ZSBkaWQgbm90IGdlbmVyYXRlIGEgdmFsaWQgY29kZVBvaW50IHNvIGluc2VydCBhCiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGUKICAgICAgY29kZVBvaW50ID0gMHhGRkZECiAgICAgIGJ5dGVzUGVyU2VxdWVuY2UgPSAxCiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikgewogICAgICAvLyBlbmNvZGUgdG8gdXRmMTYgKHN1cnJvZ2F0ZSBwYWlyIGRhbmNlKQogICAgICBjb2RlUG9pbnQgLT0gMHgxMDAwMAogICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApCiAgICAgIGNvZGVQb2ludCA9IDB4REMwMCB8IGNvZGVQb2ludCAmIDB4M0ZGCiAgICB9CgogICAgcmVzLnB1c2goY29kZVBvaW50KQogICAgaSArPSBieXRlc1BlclNlcXVlbmNlCiAgfQoKICByZXR1cm4gZGVjb2RlQ29kZVBvaW50c0FycmF5KHJlcykKfQoKLy8gQmFzZWQgb24gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjI3NDcyNzIvNjgwNzQyLCB0aGUgYnJvd3NlciB3aXRoCi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy4KLy8gV2UgZ28gMSBtYWduaXR1ZGUgbGVzcywgZm9yIHNhZmV0eQp2YXIgTUFYX0FSR1VNRU5UU19MRU5HVEggPSAweDEwMDAKCmZ1bmN0aW9uIGRlY29kZUNvZGVQb2ludHNBcnJheSAoY29kZVBvaW50cykgewogIHZhciBsZW4gPSBjb2RlUG9pbnRzLmxlbmd0aAogIGlmIChsZW4gPD0gTUFYX0FSR1VNRU5UU19MRU5HVEgpIHsKICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgY29kZVBvaW50cykgLy8gYXZvaWQgZXh0cmEgc2xpY2UoKQogIH0KCiAgLy8gRGVjb2RlIGluIGNodW5rcyB0byBhdm9pZCAiY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkIi4KICB2YXIgcmVzID0gJycKICB2YXIgaSA9IDAKICB3aGlsZSAoaSA8IGxlbikgewogICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoCiAgICAgIFN0cmluZywKICAgICAgY29kZVBvaW50cy5zbGljZShpLCBpICs9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKQogICAgKQogIH0KICByZXR1cm4gcmVzCn0KCmZ1bmN0aW9uIGFzY2lpU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkgewogIHZhciByZXQgPSAnJwogIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZCkKCiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHsKICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSAmIDB4N0YpCiAgfQogIHJldHVybiByZXQKfQoKZnVuY3Rpb24gbGF0aW4xU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkgewogIHZhciByZXQgPSAnJwogIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZCkKCiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHsKICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSkKICB9CiAgcmV0dXJuIHJldAp9CgpmdW5jdGlvbiBoZXhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7CiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGgKCiAgaWYgKCFzdGFydCB8fCBzdGFydCA8IDApIHN0YXJ0ID0gMAogIGlmICghZW5kIHx8IGVuZCA8IDAgfHwgZW5kID4gbGVuKSBlbmQgPSBsZW4KCiAgdmFyIG91dCA9ICcnCiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHsKICAgIG91dCArPSB0b0hleChidWZbaV0pCiAgfQogIHJldHVybiBvdXQKfQoKZnVuY3Rpb24gdXRmMTZsZVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHsKICB2YXIgYnl0ZXMgPSBidWYuc2xpY2Uoc3RhcnQsIGVuZCkKICB2YXIgcmVzID0gJycKICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSArPSAyKSB7CiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSArIGJ5dGVzW2kgKyAxXSAqIDI1NikKICB9CiAgcmV0dXJuIHJlcwp9CgpCdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gc2xpY2UgKHN0YXJ0LCBlbmQpIHsKICB2YXIgbGVuID0gdGhpcy5sZW5ndGgKICBzdGFydCA9IH5+c3RhcnQKICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IH5+ZW5kCgogIGlmIChzdGFydCA8IDApIHsKICAgIHN0YXJ0ICs9IGxlbgogICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwCiAgfSBlbHNlIGlmIChzdGFydCA+IGxlbikgewogICAgc3RhcnQgPSBsZW4KICB9CgogIGlmIChlbmQgPCAwKSB7CiAgICBlbmQgKz0gbGVuCiAgICBpZiAoZW5kIDwgMCkgZW5kID0gMAogIH0gZWxzZSBpZiAoZW5kID4gbGVuKSB7CiAgICBlbmQgPSBsZW4KICB9CgogIGlmIChlbmQgPCBzdGFydCkgZW5kID0gc3RhcnQKCiAgdmFyIG5ld0J1ZgogIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgewogICAgbmV3QnVmID0gdGhpcy5zdWJhcnJheShzdGFydCwgZW5kKQogICAgbmV3QnVmLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGUKICB9IGVsc2UgewogICAgdmFyIHNsaWNlTGVuID0gZW5kIC0gc3RhcnQKICAgIG5ld0J1ZiA9IG5ldyBCdWZmZXIoc2xpY2VMZW4sIHVuZGVmaW5lZCkKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2xpY2VMZW47ICsraSkgewogICAgICBuZXdCdWZbaV0gPSB0aGlzW2kgKyBzdGFydF0KICAgIH0KICB9CgogIHJldHVybiBuZXdCdWYKfQoKLyoKICogTmVlZCB0byBtYWtlIHN1cmUgdGhhdCBidWZmZXIgaXNuJ3QgdHJ5aW5nIHRvIHdyaXRlIG91dCBvZiBib3VuZHMuCiAqLwpmdW5jdGlvbiBjaGVja09mZnNldCAob2Zmc2V0LCBleHQsIGxlbmd0aCkgewogIGlmICgob2Zmc2V0ICUgMSkgIT09IDAgfHwgb2Zmc2V0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ29mZnNldCBpcyBub3QgdWludCcpCiAgaWYgKG9mZnNldCArIGV4dCA+IGxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgnKQp9CgpCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50TEUgPSBmdW5jdGlvbiByZWFkVUludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7CiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMAogIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpCgogIHZhciB2YWwgPSB0aGlzW29mZnNldF0KICB2YXIgbXVsID0gMQogIHZhciBpID0gMAogIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7CiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bAogIH0KCiAgcmV0dXJuIHZhbAp9CgpCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50QkUgPSBmdW5jdGlvbiByZWFkVUludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7CiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMAogIGlmICghbm9Bc3NlcnQpIHsKICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpCiAgfQoKICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdCiAgdmFyIG11bCA9IDEKICB3aGlsZSAoYnl0ZUxlbmd0aCA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHsKICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF0gKiBtdWwKICB9CgogIHJldHVybiB2YWwKfQoKQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHsKICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKQogIHJldHVybiB0aGlzW29mZnNldF0KfQoKQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2TEUgPSBmdW5jdGlvbiByZWFkVUludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHsKICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKQogIHJldHVybiB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KQp9CgpCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkgewogIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpCiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgOCkgfCB0aGlzW29mZnNldCArIDFdCn0KCkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aCkKCiAgcmV0dXJuICgodGhpc1tvZmZzZXRdKSB8CiAgICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHwKICAgICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpKSArCiAgICAgICh0aGlzW29mZnNldCArIDNdICogMHgxMDAwMDAwKQp9CgpCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkgewogIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpCgogIHJldHVybiAodGhpc1tvZmZzZXRdICogMHgxMDAwMDAwKSArCiAgICAoKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHwKICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHwKICAgIHRoaXNbb2Zmc2V0ICsgM10pCn0KCkJ1ZmZlci5wcm90b3R5cGUucmVhZEludExFID0gZnVuY3Rpb24gcmVhZEludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7CiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMAogIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpCgogIHZhciB2YWwgPSB0aGlzW29mZnNldF0KICB2YXIgbXVsID0gMQogIHZhciBpID0gMAogIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7CiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bAogIH0KICBtdWwgKj0gMHg4MAoKICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKQoKICByZXR1cm4gdmFsCn0KCkJ1ZmZlci5wcm90b3R5cGUucmVhZEludEJFID0gZnVuY3Rpb24gcmVhZEludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7CiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMAogIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpCgogIHZhciBpID0gYnl0ZUxlbmd0aAogIHZhciBtdWwgPSAxCiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1pXQogIHdoaWxlIChpID4gMCAmJiAobXVsICo9IDB4MTAwKSkgewogICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1pXSAqIG11bAogIH0KICBtdWwgKj0gMHg4MAoKICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKQoKICByZXR1cm4gdmFsCn0KCkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDggPSBmdW5jdGlvbiByZWFkSW50OCAob2Zmc2V0LCBub0Fzc2VydCkgewogIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpCiAgaWYgKCEodGhpc1tvZmZzZXRdICYgMHg4MCkpIHJldHVybiAodGhpc1tvZmZzZXRdKQogIHJldHVybiAoKDB4ZmYgLSB0aGlzW29mZnNldF0gKyAxKSAqIC0xKQp9CgpCdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFID0gZnVuY3Rpb24gcmVhZEludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHsKICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKQogIHZhciB2YWwgPSB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KQogIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWwKfQoKQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aCkKICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAxXSB8ICh0aGlzW29mZnNldF0gPDwgOCkKICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsCn0KCkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEUgPSBmdW5jdGlvbiByZWFkSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkgewogIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpCgogIHJldHVybiAodGhpc1tvZmZzZXRdKSB8CiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8CiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikgfAogICAgKHRoaXNbb2Zmc2V0ICsgM10gPDwgMjQpCn0KCkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyQkUgPSBmdW5jdGlvbiByZWFkSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkgewogIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpCgogIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDI0KSB8CiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfAogICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfAogICAgKHRoaXNbb2Zmc2V0ICsgM10pCn0KCkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEUgPSBmdW5jdGlvbiByZWFkRmxvYXRMRSAob2Zmc2V0LCBub0Fzc2VydCkgewogIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpCiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDIzLCA0KQp9CgpCdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdEJFID0gZnVuY3Rpb24gcmVhZEZsb2F0QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHsKICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKQogIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgMjMsIDQpCn0KCkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUxFID0gZnVuY3Rpb24gcmVhZERvdWJsZUxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aCkKICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgNTIsIDgpCn0KCkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFID0gZnVuY3Rpb24gcmVhZERvdWJsZUJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aCkKICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDUyLCA4KQp9CgpmdW5jdGlvbiBjaGVja0ludCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7CiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignImJ1ZmZlciIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpCiAgaWYgKHZhbHVlID4gbWF4IHx8IHZhbHVlIDwgbWluKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignInZhbHVlIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJykKICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpCn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50TEUgPSBmdW5jdGlvbiB3cml0ZVVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHsKICB2YWx1ZSA9ICt2YWx1ZQogIG9mZnNldCA9IG9mZnNldCB8IDAKICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDAKICBpZiAoIW5vQXNzZXJ0KSB7CiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxCiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMCkKICB9CgogIHZhciBtdWwgPSAxCiAgdmFyIGkgPSAwCiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGCiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHsKICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRgogIH0KCiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGgKfQoKQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlVUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkgewogIHZhbHVlID0gK3ZhbHVlCiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMAogIGlmICghbm9Bc3NlcnQpIHsKICAgIHZhciBtYXhCeXRlcyA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSAtIDEKICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKQogIH0KCiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMQogIHZhciBtdWwgPSAxCiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRgogIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkgewogICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGCiAgfQoKICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aAp9CgpCdWZmZXIucHJvdG90eXBlLndyaXRlVUludDggPSBmdW5jdGlvbiB3cml0ZVVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkgewogIHZhbHVlID0gK3ZhbHVlCiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4ZmYsIDApCiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgdmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKQogIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpCiAgcmV0dXJuIG9mZnNldCArIDEKfQoKZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MTYgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7CiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmYgKyB2YWx1ZSArIDEKICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDIpOyBpIDwgajsgKytpKSB7CiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgJiAoMHhmZiA8PCAoOCAqIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpKSkpID4+PgogICAgICAobGl0dGxlRW5kaWFuID8gaSA6IDEgLSBpKSAqIDgKICB9Cn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgdmFsdWUgPSArdmFsdWUKICBvZmZzZXQgPSBvZmZzZXQgfCAwCiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKQogIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgewogICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZikKICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpCiAgfSBlbHNlIHsKICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpCiAgfQogIHJldHVybiBvZmZzZXQgKyAyCn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgdmFsdWUgPSArdmFsdWUKICBvZmZzZXQgPSBvZmZzZXQgfCAwCiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKQogIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgewogICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KQogICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpCiAgfSBlbHNlIHsKICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKQogIH0KICByZXR1cm4gb2Zmc2V0ICsgMgp9CgpmdW5jdGlvbiBvYmplY3RXcml0ZVVJbnQzMiAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4pIHsKICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDEKICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDQpOyBpIDwgajsgKytpKSB7CiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgPj4+IChsaXR0bGVFbmRpYW4gPyBpIDogMyAtIGkpICogOCkgJiAweGZmCiAgfQp9CgpCdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkgewogIHZhbHVlID0gK3ZhbHVlCiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApCiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7CiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNCkKICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KQogICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOCkKICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpCiAgfSBlbHNlIHsKICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpCiAgfQogIHJldHVybiBvZmZzZXQgKyA0Cn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgdmFsdWUgPSArdmFsdWUKICBvZmZzZXQgPSBvZmZzZXQgfCAwCiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMCkKICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHsKICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpCiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNikKICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpCiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZikKICB9IGVsc2UgewogICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpCiAgfQogIHJldHVybiBvZmZzZXQgKyA0Cn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7CiAgdmFsdWUgPSArdmFsdWUKICBvZmZzZXQgPSBvZmZzZXQgfCAwCiAgaWYgKCFub0Fzc2VydCkgewogICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKQoKICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KQogIH0KCiAgdmFyIGkgPSAwCiAgdmFyIG11bCA9IDEKICB2YXIgc3ViID0gMAogIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRgogIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7CiAgICBpZiAodmFsdWUgPCAwICYmIHN1YiA9PT0gMCAmJiB0aGlzW29mZnNldCArIGkgLSAxXSAhPT0gMCkgewogICAgICBzdWIgPSAxCiAgICB9CiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGCiAgfQoKICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aAp9CgpCdWZmZXIucHJvdG90eXBlLndyaXRlSW50QkUgPSBmdW5jdGlvbiB3cml0ZUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkgewogIHZhbHVlID0gK3ZhbHVlCiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGlmICghbm9Bc3NlcnQpIHsKICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoIC0gMSkKCiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBsaW1pdCAtIDEsIC1saW1pdCkKICB9CgogIHZhciBpID0gYnl0ZUxlbmd0aCAtIDEKICB2YXIgbXVsID0gMQogIHZhciBzdWIgPSAwCiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRgogIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkgewogICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpICsgMV0gIT09IDApIHsKICAgICAgc3ViID0gMQogICAgfQogICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRgogIH0KCiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGgKfQoKQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDggPSBmdW5jdGlvbiB3cml0ZUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgdmFsdWUgPSArdmFsdWUKICBvZmZzZXQgPSBvZmZzZXQgfCAwCiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHg3ZiwgLTB4ODApCiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgdmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKQogIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZiArIHZhbHVlICsgMQogIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpCiAgcmV0dXJuIG9mZnNldCArIDEKfQoKQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgdmFsdWUgPSArdmFsdWUKICBvZmZzZXQgPSBvZmZzZXQgfCAwCiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKQogIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgewogICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZikKICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpCiAgfSBlbHNlIHsKICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpCiAgfQogIHJldHVybiBvZmZzZXQgKyAyCn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkJFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkgewogIHZhbHVlID0gK3ZhbHVlCiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMCkKICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHsKICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOCkKICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKQogIH0gZWxzZSB7CiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSkKICB9CiAgcmV0dXJuIG9mZnNldCArIDIKfQoKQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgdmFsdWUgPSArdmFsdWUKICBvZmZzZXQgPSBvZmZzZXQgfCAwCiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApCiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7CiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKQogICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOCkKICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KQogICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpCiAgfSBlbHNlIHsKICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpCiAgfQogIHJldHVybiBvZmZzZXQgKyA0Cn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkgewogIHZhbHVlID0gK3ZhbHVlCiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKQogIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMQogIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgewogICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNCkKICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KQogICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gOCkKICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKQogIH0gZWxzZSB7CiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSkKICB9CiAgcmV0dXJuIG9mZnNldCArIDQKfQoKZnVuY3Rpb24gY2hlY2tJRUVFNzU0IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHsKICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpCiAgaWYgKG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKQp9CgpmdW5jdGlvbiB3cml0ZUZsb2F0IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHsKICBpZiAoIW5vQXNzZXJ0KSB7CiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA0LCAzLjQwMjgyMzQ2NjM4NTI4ODZlKzM4LCAtMy40MDI4MjM0NjYzODUyODg2ZSszOCkKICB9CiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgMjMsIDQpCiAgcmV0dXJuIG9mZnNldCArIDQKfQoKQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0TEUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpCn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFID0gZnVuY3Rpb24gd3JpdGVGbG9hdEJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkgewogIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydCkKfQoKZnVuY3Rpb24gd3JpdGVEb3VibGUgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkgewogIGlmICghbm9Bc3NlcnQpIHsKICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDgsIDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4LCAtMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpCiAgfQogIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDUyLCA4KQogIHJldHVybiBvZmZzZXQgKyA4Cn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVMRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KQp9CgpCdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlQkUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkgewogIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpCn0KCi8vIGNvcHkodGFyZ2V0QnVmZmVyLCB0YXJnZXRTdGFydD0wLCBzb3VyY2VTdGFydD0wLCBzb3VyY2VFbmQ9YnVmZmVyLmxlbmd0aCkKQnVmZmVyLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAodGFyZ2V0LCB0YXJnZXRTdGFydCwgc3RhcnQsIGVuZCkgewogIGlmICghc3RhcnQpIHN0YXJ0ID0gMAogIGlmICghZW5kICYmIGVuZCAhPT0gMCkgZW5kID0gdGhpcy5sZW5ndGgKICBpZiAodGFyZ2V0U3RhcnQgPj0gdGFyZ2V0Lmxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQubGVuZ3RoCiAgaWYgKCF0YXJnZXRTdGFydCkgdGFyZ2V0U3RhcnQgPSAwCiAgaWYgKGVuZCA+IDAgJiYgZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0CgogIC8vIENvcHkgMCBieXRlczsgd2UncmUgZG9uZQogIGlmIChlbmQgPT09IHN0YXJ0KSByZXR1cm4gMAogIGlmICh0YXJnZXQubGVuZ3RoID09PSAwIHx8IHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gMAoKICAvLyBGYXRhbCBlcnJvciBjb25kaXRpb25zCiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkgewogICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3RhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMnKQogIH0KICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcycpCiAgaWYgKGVuZCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcycpCgogIC8vIEFyZSB3ZSBvb2I/CiAgaWYgKGVuZCA+IHRoaXMubGVuZ3RoKSBlbmQgPSB0aGlzLmxlbmd0aAogIGlmICh0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgPCBlbmQgLSBzdGFydCkgewogICAgZW5kID0gdGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0ICsgc3RhcnQKICB9CgogIHZhciBsZW4gPSBlbmQgLSBzdGFydAogIHZhciBpCgogIGlmICh0aGlzID09PSB0YXJnZXQgJiYgc3RhcnQgPCB0YXJnZXRTdGFydCAmJiB0YXJnZXRTdGFydCA8IGVuZCkgewogICAgLy8gZGVzY2VuZGluZyBjb3B5IGZyb20gZW5kCiAgICBmb3IgKGkgPSBsZW4gLSAxOyBpID49IDA7IC0taSkgewogICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XQogICAgfQogIH0gZWxzZSBpZiAobGVuIDwgMTAwMCB8fCAhQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHsKICAgIC8vIGFzY2VuZGluZyBjb3B5IGZyb20gc3RhcnQKICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkgewogICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XQogICAgfQogIH0gZWxzZSB7CiAgICBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbCgKICAgICAgdGFyZ2V0LAogICAgICB0aGlzLnN1YmFycmF5KHN0YXJ0LCBzdGFydCArIGxlbiksCiAgICAgIHRhcmdldFN0YXJ0CiAgICApCiAgfQoKICByZXR1cm4gbGVuCn0KCi8vIFVzYWdlOgovLyAgICBidWZmZXIuZmlsbChudW1iZXJbLCBvZmZzZXRbLCBlbmRdXSkKLy8gICAgYnVmZmVyLmZpbGwoYnVmZmVyWywgb2Zmc2V0WywgZW5kXV0pCi8vICAgIGJ1ZmZlci5maWxsKHN0cmluZ1ssIG9mZnNldFssIGVuZF1dWywgZW5jb2RpbmddKQpCdWZmZXIucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiBmaWxsICh2YWwsIHN0YXJ0LCBlbmQsIGVuY29kaW5nKSB7CiAgLy8gSGFuZGxlIHN0cmluZyBjYXNlczoKICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHsKICAgIGlmICh0eXBlb2Ygc3RhcnQgPT09ICdzdHJpbmcnKSB7CiAgICAgIGVuY29kaW5nID0gc3RhcnQKICAgICAgc3RhcnQgPSAwCiAgICAgIGVuZCA9IHRoaXMubGVuZ3RoCiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbmQgPT09ICdzdHJpbmcnKSB7CiAgICAgIGVuY29kaW5nID0gZW5kCiAgICAgIGVuZCA9IHRoaXMubGVuZ3RoCiAgICB9CiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMSkgewogICAgICB2YXIgY29kZSA9IHZhbC5jaGFyQ29kZUF0KDApCiAgICAgIGlmIChjb2RlIDwgMjU2KSB7CiAgICAgICAgdmFsID0gY29kZQogICAgICB9CiAgICB9CiAgICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnKSB7CiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2VuY29kaW5nIG11c3QgYmUgYSBzdHJpbmcnKQogICAgfQogICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycgJiYgIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkgewogICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpCiAgICB9CiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykgewogICAgdmFsID0gdmFsICYgMjU1CiAgfQoKICAvLyBJbnZhbGlkIHJhbmdlcyBhcmUgbm90IHNldCB0byBhIGRlZmF1bHQsIHNvIGNhbiByYW5nZSBjaGVjayBlYXJseS4KICBpZiAoc3RhcnQgPCAwIHx8IHRoaXMubGVuZ3RoIDwgc3RhcnQgfHwgdGhpcy5sZW5ndGggPCBlbmQpIHsKICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdPdXQgb2YgcmFuZ2UgaW5kZXgnKQogIH0KCiAgaWYgKGVuZCA8PSBzdGFydCkgewogICAgcmV0dXJuIHRoaXMKICB9CgogIHN0YXJ0ID0gc3RhcnQgPj4+IDAKICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IHRoaXMubGVuZ3RoIDogZW5kID4+PiAwCgogIGlmICghdmFsKSB2YWwgPSAwCgogIHZhciBpCiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7CiAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7CiAgICAgIHRoaXNbaV0gPSB2YWwKICAgIH0KICB9IGVsc2UgewogICAgdmFyIGJ5dGVzID0gQnVmZmVyLmlzQnVmZmVyKHZhbCkKICAgICAgPyB2YWwKICAgICAgOiB1dGY4VG9CeXRlcyhuZXcgQnVmZmVyKHZhbCwgZW5jb2RpbmcpLnRvU3RyaW5nKCkpCiAgICB2YXIgbGVuID0gYnl0ZXMubGVuZ3RoCiAgICBmb3IgKGkgPSAwOyBpIDwgZW5kIC0gc3RhcnQ7ICsraSkgewogICAgICB0aGlzW2kgKyBzdGFydF0gPSBieXRlc1tpICUgbGVuXQogICAgfQogIH0KCiAgcmV0dXJuIHRoaXMKfQoKLy8gSEVMUEVSIEZVTkNUSU9OUwovLyA9PT09PT09PT09PT09PT09Cgp2YXIgSU5WQUxJRF9CQVNFNjRfUkUgPSAvW14rXC8wLTlBLVphLXotX10vZwoKZnVuY3Rpb24gYmFzZTY0Y2xlYW4gKHN0cikgewogIC8vIE5vZGUgc3RyaXBzIG91dCBpbnZhbGlkIGNoYXJhY3RlcnMgbGlrZSBcbiBhbmQgXHQgZnJvbSB0aGUgc3RyaW5nLCBiYXNlNjQtanMgZG9lcyBub3QKICBzdHIgPSBzdHJpbmd0cmltKHN0cikucmVwbGFjZShJTlZBTElEX0JBU0U2NF9SRSwgJycpCiAgLy8gTm9kZSBjb252ZXJ0cyBzdHJpbmdzIHdpdGggbGVuZ3RoIDwgMiB0byAnJwogIGlmIChzdHIubGVuZ3RoIDwgMikgcmV0dXJuICcnCiAgLy8gTm9kZSBhbGxvd3MgZm9yIG5vbi1wYWRkZWQgYmFzZTY0IHN0cmluZ3MgKG1pc3NpbmcgdHJhaWxpbmcgPT09KSwgYmFzZTY0LWpzIGRvZXMgbm90CiAgd2hpbGUgKHN0ci5sZW5ndGggJSA0ICE9PSAwKSB7CiAgICBzdHIgPSBzdHIgKyAnPScKICB9CiAgcmV0dXJuIHN0cgp9CgpmdW5jdGlvbiBzdHJpbmd0cmltIChzdHIpIHsKICBpZiAoc3RyLnRyaW0pIHJldHVybiBzdHIudHJpbSgpCiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpCn0KCmZ1bmN0aW9uIHRvSGV4IChuKSB7CiAgaWYgKG4gPCAxNikgcmV0dXJuICcwJyArIG4udG9TdHJpbmcoMTYpCiAgcmV0dXJuIG4udG9TdHJpbmcoMTYpCn0KCmZ1bmN0aW9uIHV0ZjhUb0J5dGVzIChzdHJpbmcsIHVuaXRzKSB7CiAgdW5pdHMgPSB1bml0cyB8fCBJbmZpbml0eQogIHZhciBjb2RlUG9pbnQKICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aAogIHZhciBsZWFkU3Vycm9nYXRlID0gbnVsbAogIHZhciBieXRlcyA9IFtdCgogIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgIGNvZGVQb2ludCA9IHN0cmluZy5jaGFyQ29kZUF0KGkpCgogICAgLy8gaXMgc3Vycm9nYXRlIGNvbXBvbmVudAogICAgaWYgKGNvZGVQb2ludCA+IDB4RDdGRiAmJiBjb2RlUG9pbnQgPCAweEUwMDApIHsKICAgICAgLy8gbGFzdCBjaGFyIHdhcyBhIGxlYWQKICAgICAgaWYgKCFsZWFkU3Vycm9nYXRlKSB7CiAgICAgICAgLy8gbm8gbGVhZCB5ZXQKICAgICAgICBpZiAoY29kZVBvaW50ID4gMHhEQkZGKSB7CiAgICAgICAgICAvLyB1bmV4cGVjdGVkIHRyYWlsCiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRCkKICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfSBlbHNlIGlmIChpICsgMSA9PT0gbGVuZ3RoKSB7CiAgICAgICAgICAvLyB1bnBhaXJlZCBsZWFkCiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRCkKICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAgICAgICAvLyB2YWxpZCBsZWFkCiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludAoKICAgICAgICBjb250aW51ZQogICAgICB9CgogICAgICAvLyAyIGxlYWRzIGluIGEgcm93CiAgICAgIGlmIChjb2RlUG9pbnQgPCAweERDMDApIHsKICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRCkKICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50CiAgICAgICAgY29udGludWUKICAgICAgfQoKICAgICAgLy8gdmFsaWQgc3Vycm9nYXRlIHBhaXIKICAgICAgY29kZVBvaW50ID0gKGxlYWRTdXJyb2dhdGUgLSAweEQ4MDAgPDwgMTAgfCBjb2RlUG9pbnQgLSAweERDMDApICsgMHgxMDAwMAogICAgfSBlbHNlIGlmIChsZWFkU3Vycm9nYXRlKSB7CiAgICAgIC8vIHZhbGlkIGJtcCBjaGFyLCBidXQgbGFzdCBjaGFyIHdhcyBhIGxlYWQKICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpCiAgICB9CgogICAgbGVhZFN1cnJvZ2F0ZSA9IG51bGwKCiAgICAvLyBlbmNvZGUgdXRmOAogICAgaWYgKGNvZGVQb2ludCA8IDB4ODApIHsKICAgICAgaWYgKCh1bml0cyAtPSAxKSA8IDApIGJyZWFrCiAgICAgIGJ5dGVzLnB1c2goY29kZVBvaW50KQogICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDgwMCkgewogICAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWsKICAgICAgYnl0ZXMucHVzaCgKICAgICAgICBjb2RlUG9pbnQgPj4gMHg2IHwgMHhDMCwKICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MAogICAgICApCiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTAwMDApIHsKICAgICAgaWYgKCh1bml0cyAtPSAzKSA8IDApIGJyZWFrCiAgICAgIGJ5dGVzLnB1c2goCiAgICAgICAgY29kZVBvaW50ID4+IDB4QyB8IDB4RTAsCiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLAogICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwCiAgICAgICkKICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHgxMTAwMDApIHsKICAgICAgaWYgKCh1bml0cyAtPSA0KSA8IDApIGJyZWFrCiAgICAgIGJ5dGVzLnB1c2goCiAgICAgICAgY29kZVBvaW50ID4+IDB4MTIgfCAweEYwLAogICAgICAgIGNvZGVQb2ludCA+PiAweEMgJiAweDNGIHwgMHg4MCwKICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsCiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODAKICAgICAgKQogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvZGUgcG9pbnQnKQogICAgfQogIH0KCiAgcmV0dXJuIGJ5dGVzCn0KCmZ1bmN0aW9uIGFzY2lpVG9CeXRlcyAoc3RyKSB7CiAgdmFyIGJ5dGVBcnJheSA9IFtdCiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHsKICAgIC8vIE5vZGUncyBjb2RlIHNlZW1zIHRvIGJlIGRvaW5nIHRoaXMgYW5kIG5vdCAmIDB4N0YuLgogICAgYnl0ZUFycmF5LnB1c2goc3RyLmNoYXJDb2RlQXQoaSkgJiAweEZGKQogIH0KICByZXR1cm4gYnl0ZUFycmF5Cn0KCmZ1bmN0aW9uIHV0ZjE2bGVUb0J5dGVzIChzdHIsIHVuaXRzKSB7CiAgdmFyIGMsIGhpLCBsbwogIHZhciBieXRlQXJyYXkgPSBbXQogIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7CiAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWsKCiAgICBjID0gc3RyLmNoYXJDb2RlQXQoaSkKICAgIGhpID0gYyA+PiA4CiAgICBsbyA9IGMgJSAyNTYKICAgIGJ5dGVBcnJheS5wdXNoKGxvKQogICAgYnl0ZUFycmF5LnB1c2goaGkpCiAgfQoKICByZXR1cm4gYnl0ZUFycmF5Cn0KCmZ1bmN0aW9uIGJhc2U2NFRvQnl0ZXMgKHN0cikgewogIHJldHVybiBiYXNlNjQudG9CeXRlQXJyYXkoYmFzZTY0Y2xlYW4oc3RyKSkKfQoKZnVuY3Rpb24gYmxpdEJ1ZmZlciAoc3JjLCBkc3QsIG9mZnNldCwgbGVuZ3RoKSB7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgaWYgKChpICsgb2Zmc2V0ID49IGRzdC5sZW5ndGgpIHx8IChpID49IHNyYy5sZW5ndGgpKSBicmVhawogICAgZHN0W2kgKyBvZmZzZXRdID0gc3JjW2ldCiAgfQogIHJldHVybiBpCn0KCmZ1bmN0aW9uIGlzbmFuICh2YWwpIHsKICByZXR1cm4gdmFsICE9PSB2YWwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmUKfQoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oNykpKQoKLyoqKi8gfSksCi8qIDIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKdmFyIGNvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IHsgdmVyc2lvbjogJzIuNS4zJyB9OwppZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZgoKCi8qKiovIH0pLAovKiAzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTsKdmFyIGNvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpOwp2YXIgY3R4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7CnZhciBoaWRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7CnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJzsKCnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkgewogIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GOwogIHZhciBJU19HTE9CQUwgPSB0eXBlICYgJGV4cG9ydC5HOwogIHZhciBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TOwogIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7CiAgdmFyIElTX0JJTkQgPSB0eXBlICYgJGV4cG9ydC5COwogIHZhciBJU19XUkFQID0gdHlwZSAmICRleHBvcnQuVzsKICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pOwogIHZhciBleHBQcm90byA9IGV4cG9ydHNbUFJPVE9UWVBFXTsKICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTsKICB2YXIga2V5LCBvd24sIG91dDsKICBpZiAoSVNfR0xPQkFMKSBzb3VyY2UgPSBuYW1lOwogIGZvciAoa2V5IGluIHNvdXJjZSkgewogICAgLy8gY29udGFpbnMgaW4gbmF0aXZlCiAgICBvd24gPSAhSVNfRk9SQ0VEICYmIHRhcmdldCAmJiB0YXJnZXRba2V5XSAhPT0gdW5kZWZpbmVkOwogICAgaWYgKG93biAmJiBrZXkgaW4gZXhwb3J0cykgY29udGludWU7CiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZAogICAgb3V0ID0gb3duID8gdGFyZ2V0W2tleV0gOiBzb3VyY2Vba2V5XTsKICAgIC8vIHByZXZlbnQgZ2xvYmFsIHBvbGx1dGlvbiBmb3IgbmFtZXNwYWNlcwogICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV0KICAgIC8vIGJpbmQgdGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0CiAgICA6IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwgZ2xvYmFsKQogICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnkKICAgIDogSVNfV1JBUCAmJiB0YXJnZXRba2V5XSA9PSBvdXQgPyAoZnVuY3Rpb24gKEMpIHsKICAgICAgdmFyIEYgPSBmdW5jdGlvbiAoYSwgYiwgYykgewogICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykgewogICAgICAgICAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7CiAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDKCk7CiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpOwogICAgICAgICAgICBjYXNlIDI6IHJldHVybiBuZXcgQyhhLCBiKTsKICAgICAgICAgIH0gcmV0dXJuIG5ldyBDKGEsIGIsIGMpOwogICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgfTsKICAgICAgRltQUk9UT1RZUEVdID0gQ1tQUk9UT1RZUEVdOwogICAgICByZXR1cm4gRjsKICAgIC8vIG1ha2Ugc3RhdGljIHZlcnNpb25zIGZvciBwcm90b3R5cGUgbWV0aG9kcwogICAgfSkob3V0KSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0OwogICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlCiAgICBpZiAoSVNfUFJPVE8pIHsKICAgICAgKGV4cG9ydHMudmlydHVhbCB8fCAoZXhwb3J0cy52aXJ0dWFsID0ge30pKVtrZXldID0gb3V0OwogICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJQogICAgICBpZiAodHlwZSAmICRleHBvcnQuUiAmJiBleHBQcm90byAmJiAhZXhwUHJvdG9ba2V5XSkgaGlkZShleHBQcm90bywga2V5LCBvdXQpOwogICAgfQogIH0KfTsKLy8gdHlwZSBiaXRtYXAKJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWQKJGV4cG9ydC5HID0gMjsgICAvLyBnbG9iYWwKJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWMKJGV4cG9ydC5QID0gODsgICAvLyBwcm90bwokZXhwb3J0LkIgPSAxNjsgIC8vIGJpbmQKJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwCiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZQokZXhwb3J0LlIgPSAxMjg7IC8vIHJlYWwgcHJvdG8gbWV0aG9kIGZvciBgbGlicmFyeWAKbW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0OwoKCi8qKiovIH0pLAovKiA0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCnZhciBzdG9yZSA9IF9fd2VicGFja19yZXF1aXJlX18oNjUpKCd3a3MnKTsKdmFyIHVpZCA9IF9fd2VicGFja19yZXF1aXJlX18oMzgpOwp2YXIgU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCkuU3ltYm9sOwp2YXIgVVNFX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT0gJ2Z1bmN0aW9uJzsKCnZhciAkZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHsKICByZXR1cm4gc3RvcmVbbmFtZV0gfHwgKHN0b3JlW25hbWVdID0KICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7Cn07CgokZXhwb3J0cy5zdG9yZSA9IHN0b3JlOwoKCi8qKiovIH0pLAovKiA1ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHkKbW9kdWxlLmV4cG9ydHMgPSAhX193ZWJwYWNrX3JlcXVpcmVfXygxOSkoZnVuY3Rpb24gKCkgewogIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3Owp9KTsKCgovKioqLyB9KSwKLyogNiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTsKdmFyIElFOF9ET01fREVGSU5FID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5NSk7CnZhciB0b1ByaW1pdGl2ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNTgpOwp2YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7CgpleHBvcnRzLmYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykgewogIGFuT2JqZWN0KE8pOwogIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTsKICBhbk9iamVjdChBdHRyaWJ1dGVzKTsKICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7CiAgICByZXR1cm4gZFAoTywgUCwgQXR0cmlidXRlcyk7CiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9CiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTsKICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTsKICByZXR1cm4gTzsKfTsKCgovKioqLyB9KSwKLyogNyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Cgp2YXIgZzsKCi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlCmcgPSAoZnVuY3Rpb24oKSB7CglyZXR1cm4gdGhpczsKfSkoKTsKCnRyeSB7CgkvLyBUaGlzIHdvcmtzIGlmIGV2YWwgaXMgYWxsb3dlZCAoc2VlIENTUCkKCWcgPSBnIHx8IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCkgfHwgKDEsZXZhbCkoInRoaXMiKTsKfSBjYXRjaChlKSB7CgkvLyBUaGlzIHdvcmtzIGlmIHRoZSB3aW5kb3cgcmVmZXJlbmNlIGlzIGF2YWlsYWJsZQoJaWYodHlwZW9mIHdpbmRvdyA9PT0gIm9iamVjdCIpCgkJZyA9IHdpbmRvdzsKfQoKLy8gZyBjYW4gc3RpbGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGluZyB0byBkbyBhYm91dCBpdC4uLgovLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQncwovLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59Cgptb2R1bGUuZXhwb3J0cyA9IGc7CgoKLyoqKi8gfSksCi8qIDggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oQnVmZmVyLCBfX2Rpcm5hbWUpIHsKCmZ1bmN0aW9uIFZpcnR1YWxGaWxlU3lzdGVtKCkgewoJdGhpcy5maWxlU3lzdGVtID0ge307Cgl0aGlzLmJhc2VTeXN0ZW0gPSB7fTsKfQoKVmlydHVhbEZpbGVTeXN0ZW0ucHJvdG90eXBlLnJlYWRGaWxlU3luYyA9IGZ1bmN0aW9uIChmaWxlbmFtZSkgewoJZmlsZW5hbWUgPSBmaXhGaWxlbmFtZShmaWxlbmFtZSk7CgoJdmFyIGJhc2U2NGNvbnRlbnQgPSB0aGlzLmJhc2VTeXN0ZW1bZmlsZW5hbWVdOwoJaWYgKGJhc2U2NGNvbnRlbnQpIHsKCQlyZXR1cm4gbmV3IEJ1ZmZlcihiYXNlNjRjb250ZW50LCAnYmFzZTY0Jyk7Cgl9CgoJdmFyIGNvbnRlbnQgPSB0aGlzLmZpbGVTeXN0ZW1bZmlsZW5hbWVdOwoJaWYgKGNvbnRlbnQpIHsKCQlyZXR1cm4gY29udGVudDsKCX0KCgl0aHJvdyAnRmlsZSBcJycgKyBmaWxlbmFtZSArICdcJyBub3QgZm91bmQgaW4gdmlydHVhbCBmaWxlIHN5c3RlbSc7Cn07CgpWaXJ0dWFsRmlsZVN5c3RlbS5wcm90b3R5cGUud3JpdGVGaWxlU3luYyA9IGZ1bmN0aW9uIChmaWxlbmFtZSwgY29udGVudCkgewoJdGhpcy5maWxlU3lzdGVtW2ZpeEZpbGVuYW1lKGZpbGVuYW1lKV0gPSBjb250ZW50Owp9OwoKVmlydHVhbEZpbGVTeXN0ZW0ucHJvdG90eXBlLmJpbmRGUyA9IGZ1bmN0aW9uIChkYXRhKSB7Cgl0aGlzLmJhc2VTeXN0ZW0gPSBkYXRhIHx8IHt9Owp9OwoKCmZ1bmN0aW9uIGZpeEZpbGVuYW1lKGZpbGVuYW1lKSB7CglpZiAoZmlsZW5hbWUuaW5kZXhPZihfX2Rpcm5hbWUpID09PSAwKSB7CgkJZmlsZW5hbWUgPSBmaWxlbmFtZS5zdWJzdHJpbmcoX19kaXJuYW1lLmxlbmd0aCk7Cgl9CgoJaWYgKGZpbGVuYW1lLmluZGV4T2YoJy8nKSA9PT0gMCkgewoJCWZpbGVuYW1lID0gZmlsZW5hbWUuc3Vic3RyaW5nKDEpOwoJfQoKCXJldHVybiBmaWxlbmFtZTsKfQoKbW9kdWxlLmV4cG9ydHMgPSBuZXcgVmlydHVhbEZpbGVTeXN0ZW0oKTsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpLkJ1ZmZlciwgIi8iKSkKCi8qKiovIH0pLAovKiA5ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7CiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJzsKfTsKCgovKioqLyB9KSwKLyogMTAgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjgKdmFyIGdsb2JhbCA9IG1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyAhPSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuTWF0aCA9PSBNYXRoCiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGYKICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmMKICA6IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7CmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWYKCgovKioqLyB9KSwKLyogMTEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyCnZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTsKCi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdAovLyBkb24ndCBicmVhayB0aGluZ3MuICBCdXQgd2UgbmVlZCB0byB3cmFwIGl0IGluIGEgdHJ5IGNhdGNoIGluIGNhc2UgaXQgaXMKLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYQovLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLgoKdmFyIGNhY2hlZFNldFRpbWVvdXQ7CnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7CgpmdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkgewogICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7Cn0KZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpOwp9CihmdW5jdGlvbiAoKSB7CiAgICB0cnkgewogICAgICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDsKICAgICAgICB9CiAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7CiAgICB9CiAgICB0cnkgewogICAgICAgIGlmICh0eXBlb2YgY2xlYXJUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0OwogICAgICAgIH0KICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0OwogICAgfQp9ICgpKQpmdW5jdGlvbiBydW5UaW1lb3V0KGZ1bikgewogICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHsKICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnMKICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApOwogICAgfQogICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWQKICAgIGlmICgoY2FjaGVkU2V0VGltZW91dCA9PT0gZGVmYXVsdFNldFRpbW91dCB8fCAhY2FjaGVkU2V0VGltZW91dCkgJiYgc2V0VGltZW91dCkgewogICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0OwogICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7CiAgICB9CiAgICB0cnkgewogICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3MKICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dChmdW4sIDApOwogICAgfSBjYXRjaChlKXsKICAgICAgICB0cnkgewogICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHkKICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApOwogICAgICAgIH0gY2F0Y2goZSl7CiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yCiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTsKICAgICAgICB9CiAgICB9CgoKfQpmdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7CiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHsKICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnMKICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7CiAgICB9CiAgICAvLyBpZiBjbGVhclRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkCiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHsKICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7CiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpOwogICAgfQogICAgdHJ5IHsKICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzCiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpOwogICAgfSBjYXRjaCAoZSl7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseQogICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTsKICAgICAgICB9IGNhdGNoIChlKXsKICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuCiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXQKICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKHRoaXMsIG1hcmtlcik7CiAgICAgICAgfQogICAgfQoKCgp9CnZhciBxdWV1ZSA9IFtdOwp2YXIgZHJhaW5pbmcgPSBmYWxzZTsKdmFyIGN1cnJlbnRRdWV1ZTsKdmFyIHF1ZXVlSW5kZXggPSAtMTsKCmZ1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpIHsKICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIGRyYWluaW5nID0gZmFsc2U7CiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkgewogICAgICAgIHF1ZXVlID0gY3VycmVudFF1ZXVlLmNvbmNhdChxdWV1ZSk7CiAgICB9IGVsc2UgewogICAgICAgIHF1ZXVlSW5kZXggPSAtMTsKICAgIH0KICAgIGlmIChxdWV1ZS5sZW5ndGgpIHsKICAgICAgICBkcmFpblF1ZXVlKCk7CiAgICB9Cn0KCmZ1bmN0aW9uIGRyYWluUXVldWUoKSB7CiAgICBpZiAoZHJhaW5pbmcpIHsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTsKICAgIGRyYWluaW5nID0gdHJ1ZTsKCiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoOwogICAgd2hpbGUobGVuKSB7CiAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7CiAgICAgICAgcXVldWUgPSBbXTsKICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7CiAgICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHsKICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBxdWV1ZUluZGV4ID0gLTE7CiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoOwogICAgfQogICAgY3VycmVudFF1ZXVlID0gbnVsbDsKICAgIGRyYWluaW5nID0gZmFsc2U7CiAgICBydW5DbGVhclRpbWVvdXQodGltZW91dCk7Cn0KCnByb2Nlc3MubmV4dFRpY2sgPSBmdW5jdGlvbiAoZnVuKSB7CiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHsKICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICB9CiAgICB9CiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpOwogICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHsKICAgICAgICBydW5UaW1lb3V0KGRyYWluUXVldWUpOwogICAgfQp9OwoKLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0cwpmdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHsKICAgIHRoaXMuZnVuID0gZnVuOwogICAgdGhpcy5hcnJheSA9IGFycmF5Owp9Ckl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHsKICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpOwp9Owpwcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInOwpwcm9jZXNzLmJyb3dzZXIgPSB0cnVlOwpwcm9jZXNzLmVudiA9IHt9Owpwcm9jZXNzLmFyZ3YgPSBbXTsKcHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzCnByb2Nlc3MudmVyc2lvbnMgPSB7fTsKCmZ1bmN0aW9uIG5vb3AoKSB7fQoKcHJvY2Vzcy5vbiA9IG5vb3A7CnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wOwpwcm9jZXNzLm9uY2UgPSBub29wOwpwcm9jZXNzLm9mZiA9IG5vb3A7CnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wOwpwcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7CnByb2Nlc3MuZW1pdCA9IG5vb3A7CnByb2Nlc3MucHJlcGVuZExpc3RlbmVyID0gbm9vcDsKcHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDsKCnByb2Nlc3MubGlzdGVuZXJzID0gZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIFtdIH0KCnByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7Cn07Cgpwcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9Owpwcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikgewogICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTsKfTsKcHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTsKCgovKioqLyB9KSwKLyogMTIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjcuMQooZnVuY3Rpb24oKSB7CiAgdmFyIE51bWJlclQsIFByb3BlcnR5RGVzY3JpcHRvcjsKCiAgTnVtYmVyVCA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpLk51bWJlcjsKCiAgZXhwb3J0cy5yZXNvbHZlTGVuZ3RoID0gZnVuY3Rpb24obGVuZ3RoLCBzdHJlYW0sIHBhcmVudCkgewogICAgdmFyIHJlczsKICAgIGlmICh0eXBlb2YgbGVuZ3RoID09PSAnbnVtYmVyJykgewogICAgICByZXMgPSBsZW5ndGg7CiAgICB9IGVsc2UgaWYgKHR5cGVvZiBsZW5ndGggPT09ICdmdW5jdGlvbicpIHsKICAgICAgcmVzID0gbGVuZ3RoLmNhbGwocGFyZW50LCBwYXJlbnQpOwogICAgfSBlbHNlIGlmIChwYXJlbnQgJiYgdHlwZW9mIGxlbmd0aCA9PT0gJ3N0cmluZycpIHsKICAgICAgcmVzID0gcGFyZW50W2xlbmd0aF07CiAgICB9IGVsc2UgaWYgKHN0cmVhbSAmJiBsZW5ndGggaW5zdGFuY2VvZiBOdW1iZXJUKSB7CiAgICAgIHJlcyA9IGxlbmd0aC5kZWNvZGUoc3RyZWFtKTsKICAgIH0KICAgIGlmIChpc05hTihyZXMpKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGEgZml4ZWQgc2l6ZScpOwogICAgfQogICAgcmV0dXJuIHJlczsKICB9OwoKICBQcm9wZXJ0eURlc2NyaXB0b3IgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBQcm9wZXJ0eURlc2NyaXB0b3Iob3B0cykgewogICAgICB2YXIga2V5LCB2YWw7CiAgICAgIGlmIChvcHRzID09IG51bGwpIHsKICAgICAgICBvcHRzID0ge307CiAgICAgIH0KICAgICAgdGhpcy5lbnVtZXJhYmxlID0gdHJ1ZTsKICAgICAgdGhpcy5jb25maWd1cmFibGUgPSB0cnVlOwogICAgICBmb3IgKGtleSBpbiBvcHRzKSB7CiAgICAgICAgdmFsID0gb3B0c1trZXldOwogICAgICAgIHRoaXNba2V5XSA9IHZhbDsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBQcm9wZXJ0eURlc2NyaXB0b3I7CgogIH0pKCk7CgogIGV4cG9ydHMuUHJvcGVydHlEZXNjcmlwdG9yID0gUHJvcGVydHlEZXNjcmlwdG9yOwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMTMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIGRQID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKdmFyIGNyZWF0ZURlc2MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTsKbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkgewogIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7Cn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7CiAgb2JqZWN0W2tleV0gPSB2YWx1ZTsKICByZXR1cm4gb2JqZWN0Owp9OwoKCi8qKiovIH0pLAovKiAxNCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpOwptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkgewogIGlmICghaXNPYmplY3QoaXQpKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhbiBvYmplY3QhJyk7CiAgcmV0dXJuIGl0Owp9OwoKCi8qKiovIH0pLAovKiAxNSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy4KLy8KLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQovLyAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAovLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUKLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci8vCi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgovLwovLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwovLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4KLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUgovLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCgptb2R1bGUuZXhwb3J0cyA9IFN0cmVhbTsKCnZhciBFRSA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpLkV2ZW50RW1pdHRlcjsKdmFyIGluaGVyaXRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSk7Cgppbmhlcml0cyhTdHJlYW0sIEVFKTsKU3RyZWFtLlJlYWRhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NSk7ClN0cmVhbS5Xcml0YWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ2KTsKU3RyZWFtLkR1cGxleCA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ3KTsKU3RyZWFtLlRyYW5zZm9ybSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ4KTsKU3RyZWFtLlBhc3NUaHJvdWdoID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDkpOwoKLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC40LngKU3RyZWFtLlN0cmVhbSA9IFN0cmVhbTsKCgoKLy8gb2xkLXN0eWxlIHN0cmVhbXMuICBOb3RlIHRoYXQgdGhlIHBpcGUgbWV0aG9kICh0aGUgb25seSByZWxldmFudAovLyBwYXJ0IG9mIHRoaXMgY2xhc3MpIGlzIG92ZXJyaWRkZW4gaW4gdGhlIFJlYWRhYmxlIGNsYXNzLgoKZnVuY3Rpb24gU3RyZWFtKCkgewogIEVFLmNhbGwodGhpcyk7Cn0KClN0cmVhbS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uKGRlc3QsIG9wdGlvbnMpIHsKICB2YXIgc291cmNlID0gdGhpczsKCiAgZnVuY3Rpb24gb25kYXRhKGNodW5rKSB7CiAgICBpZiAoZGVzdC53cml0YWJsZSkgewogICAgICBpZiAoZmFsc2UgPT09IGRlc3Qud3JpdGUoY2h1bmspICYmIHNvdXJjZS5wYXVzZSkgewogICAgICAgIHNvdXJjZS5wYXVzZSgpOwogICAgICB9CiAgICB9CiAgfQoKICBzb3VyY2Uub24oJ2RhdGEnLCBvbmRhdGEpOwoKICBmdW5jdGlvbiBvbmRyYWluKCkgewogICAgaWYgKHNvdXJjZS5yZWFkYWJsZSAmJiBzb3VyY2UucmVzdW1lKSB7CiAgICAgIHNvdXJjZS5yZXN1bWUoKTsKICAgIH0KICB9CgogIGRlc3Qub24oJ2RyYWluJywgb25kcmFpbik7CgogIC8vIElmIHRoZSAnZW5kJyBvcHRpb24gaXMgbm90IHN1cHBsaWVkLCBkZXN0LmVuZCgpIHdpbGwgYmUgY2FsbGVkIHdoZW4KICAvLyBzb3VyY2UgZ2V0cyB0aGUgJ2VuZCcgb3IgJ2Nsb3NlJyBldmVudHMuICBPbmx5IGRlc3QuZW5kKCkgb25jZS4KICBpZiAoIWRlc3QuX2lzU3RkaW8gJiYgKCFvcHRpb25zIHx8IG9wdGlvbnMuZW5kICE9PSBmYWxzZSkpIHsKICAgIHNvdXJjZS5vbignZW5kJywgb25lbmQpOwogICAgc291cmNlLm9uKCdjbG9zZScsIG9uY2xvc2UpOwogIH0KCiAgdmFyIGRpZE9uRW5kID0gZmFsc2U7CiAgZnVuY3Rpb24gb25lbmQoKSB7CiAgICBpZiAoZGlkT25FbmQpIHJldHVybjsKICAgIGRpZE9uRW5kID0gdHJ1ZTsKCiAgICBkZXN0LmVuZCgpOwogIH0KCgogIGZ1bmN0aW9uIG9uY2xvc2UoKSB7CiAgICBpZiAoZGlkT25FbmQpIHJldHVybjsKICAgIGRpZE9uRW5kID0gdHJ1ZTsKCiAgICBpZiAodHlwZW9mIGRlc3QuZGVzdHJveSA9PT0gJ2Z1bmN0aW9uJykgZGVzdC5kZXN0cm95KCk7CiAgfQoKICAvLyBkb24ndCBsZWF2ZSBkYW5nbGluZyBwaXBlcyB3aGVuIHRoZXJlIGFyZSBlcnJvcnMuCiAgZnVuY3Rpb24gb25lcnJvcihlcikgewogICAgY2xlYW51cCgpOwogICAgaWYgKEVFLmxpc3RlbmVyQ291bnQodGhpcywgJ2Vycm9yJykgPT09IDApIHsKICAgICAgdGhyb3cgZXI7IC8vIFVuaGFuZGxlZCBzdHJlYW0gZXJyb3IgaW4gcGlwZS4KICAgIH0KICB9CgogIHNvdXJjZS5vbignZXJyb3InLCBvbmVycm9yKTsKICBkZXN0Lm9uKCdlcnJvcicsIG9uZXJyb3IpOwoKICAvLyByZW1vdmUgYWxsIHRoZSBldmVudCBsaXN0ZW5lcnMgdGhhdCB3ZXJlIGFkZGVkLgogIGZ1bmN0aW9uIGNsZWFudXAoKSB7CiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvbmRhdGEpOwogICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZHJhaW4nLCBvbmRyYWluKTsKCiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uZW5kKTsKICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTsKCiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7CiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpOwoKICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZW5kJywgY2xlYW51cCk7CiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgY2xlYW51cCk7CgogICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBjbGVhbnVwKTsKICB9CgogIHNvdXJjZS5vbignZW5kJywgY2xlYW51cCk7CiAgc291cmNlLm9uKCdjbG9zZScsIGNsZWFudXApOwoKICBkZXN0Lm9uKCdjbG9zZScsIGNsZWFudXApOwoKICBkZXN0LmVtaXQoJ3BpcGUnLCBzb3VyY2UpOwoKICAvLyBBbGxvdyBmb3IgdW5peC1saWtlIHVzYWdlOiBBLnBpcGUoQikucGlwZShDKQogIHJldHVybiBkZXN0Owp9OwoKCi8qKiovIH0pLAovKiAxNiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Ci8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLgovLwovLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQovLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi8vICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAovLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0Ci8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZQovLyBmb2xsb3dpbmcgY29uZGl0aW9uczoKLy8KLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi8vCi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTgovLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SCi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUKLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KCi8vIGEgZHVwbGV4IHN0cmVhbSBpcyBqdXN0IGEgc3RyZWFtIHRoYXQgaXMgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUuCi8vIFNpbmNlIEpTIGRvZXNuJ3QgaGF2ZSBtdWx0aXBsZSBwcm90b3R5cGFsIGluaGVyaXRhbmNlLCB0aGlzIGNsYXNzCi8vIHByb3RvdHlwYWxseSBpbmhlcml0cyBmcm9tIFJlYWRhYmxlLCBhbmQgdGhlbiBwYXJhc2l0aWNhbGx5IGZyb20KLy8gV3JpdGFibGUuCgoKCi8qPHJlcGxhY2VtZW50PiovCgp2YXIgcHJvY2Vzc05leHRUaWNrID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMikubmV4dFRpY2s7Ci8qPC9yZXBsYWNlbWVudD4qLwoKLyo8cmVwbGFjZW1lbnQ+Ki8KdmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqKSB7CiAgdmFyIGtleXMgPSBbXTsKICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7CiAgICBrZXlzLnB1c2goa2V5KTsKICB9cmV0dXJuIGtleXM7Cn07Ci8qPC9yZXBsYWNlbWVudD4qLwoKbW9kdWxlLmV4cG9ydHMgPSBEdXBsZXg7CgovKjxyZXBsYWNlbWVudD4qLwp2YXIgdXRpbCA9IF9fd2VicGFja19yZXF1aXJlX18oMjUpOwp1dGlsLmluaGVyaXRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSk7Ci8qPC9yZXBsYWNlbWVudD4qLwoKdmFyIFJlYWRhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Myk7CnZhciBXcml0YWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDYpOwoKdXRpbC5pbmhlcml0cyhEdXBsZXgsIFJlYWRhYmxlKTsKCnZhciBrZXlzID0gb2JqZWN0S2V5cyhXcml0YWJsZS5wcm90b3R5cGUpOwpmb3IgKHZhciB2ID0gMDsgdiA8IGtleXMubGVuZ3RoOyB2KyspIHsKICB2YXIgbWV0aG9kID0ga2V5c1t2XTsKICBpZiAoIUR1cGxleC5wcm90b3R5cGVbbWV0aG9kXSkgRHVwbGV4LnByb3RvdHlwZVttZXRob2RdID0gV3JpdGFibGUucHJvdG90eXBlW21ldGhvZF07Cn0KCmZ1bmN0aW9uIER1cGxleChvcHRpb25zKSB7CiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIER1cGxleCkpIHJldHVybiBuZXcgRHVwbGV4KG9wdGlvbnMpOwoKICBSZWFkYWJsZS5jYWxsKHRoaXMsIG9wdGlvbnMpOwogIFdyaXRhYmxlLmNhbGwodGhpcywgb3B0aW9ucyk7CgogIGlmIChvcHRpb25zICYmIG9wdGlvbnMucmVhZGFibGUgPT09IGZhbHNlKSB0aGlzLnJlYWRhYmxlID0gZmFsc2U7CgogIGlmIChvcHRpb25zICYmIG9wdGlvbnMud3JpdGFibGUgPT09IGZhbHNlKSB0aGlzLndyaXRhYmxlID0gZmFsc2U7CgogIHRoaXMuYWxsb3dIYWxmT3BlbiA9IHRydWU7CiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5hbGxvd0hhbGZPcGVuID09PSBmYWxzZSkgdGhpcy5hbGxvd0hhbGZPcGVuID0gZmFsc2U7CgogIHRoaXMub25jZSgnZW5kJywgb25lbmQpOwp9CgovLyB0aGUgbm8taGFsZi1vcGVuIGVuZm9yY2VyCmZ1bmN0aW9uIG9uZW5kKCkgewogIC8vIGlmIHdlIGFsbG93IGhhbGYtb3BlbiBzdGF0ZSwgb3IgaWYgdGhlIHdyaXRhYmxlIHNpZGUgZW5kZWQsCiAgLy8gdGhlbiB3ZSdyZSBvay4KICBpZiAodGhpcy5hbGxvd0hhbGZPcGVuIHx8IHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQpIHJldHVybjsKCiAgLy8gbm8gbW9yZSBkYXRhIGNhbiBiZSB3cml0dGVuLgogIC8vIEJ1dCBhbGxvdyBtb3JlIHdyaXRlcyB0byBoYXBwZW4gaW4gdGhpcyB0aWNrLgogIHByb2Nlc3NOZXh0VGljayhvbkVuZE5ULCB0aGlzKTsKfQoKZnVuY3Rpb24gb25FbmROVChzZWxmKSB7CiAgc2VsZi5lbmQoKTsKfQoKT2JqZWN0LmRlZmluZVByb3BlcnR5KER1cGxleC5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7CiAgZ2V0OiBmdW5jdGlvbiAoKSB7CiAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX3dyaXRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7CiAgfSwKICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZSkgewogICAgLy8gd2UgaWdub3JlIHRoZSB2YWx1ZSBpZiB0aGUgc3RyZWFtCiAgICAvLyBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0CiAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX3dyaXRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCkgewogICAgICByZXR1cm47CiAgICB9CgogICAgLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHVzZXIgaXMgZXhwbGljaXRseQogICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkCiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlOwogICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTsKICB9Cn0pOwoKRHVwbGV4LnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7CiAgdGhpcy5wdXNoKG51bGwpOwogIHRoaXMuZW5kKCk7CgogIHByb2Nlc3NOZXh0VGljayhjYiwgZXJyKTsKfTsKCmZ1bmN0aW9uIGZvckVhY2goeHMsIGYpIHsKICBmb3IgKHZhciBpID0gMCwgbCA9IHhzLmxlbmd0aDsgaSA8IGw7IGkrKykgewogICAgZih4c1tpXSwgaSk7CiAgfQp9CgovKioqLyB9KSwKLyogMTcgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gdG8gaW5kZXhlZCBvYmplY3QsIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzCnZhciBJT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NCk7CnZhciBkZWZpbmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Nik7Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7CiAgcmV0dXJuIElPYmplY3QoZGVmaW5lZChpdCkpOwp9OwoKCi8qKiovIH0pLAovKiAxOCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Cgp2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkgewogIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpOwp9OwoKCi8qKiovIH0pLAovKiAxOSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Cgptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7CiAgdHJ5IHsKICAgIHJldHVybiAhIWV4ZWMoKTsKICB9IGNhdGNoIChlKSB7CiAgICByZXR1cm4gdHJ1ZTsKICB9Cn07CgoKLyoqKi8gfSksCi8qIDIwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZwp2YXIgYUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Nyk7Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHsKICBhRnVuY3Rpb24oZm4pOwogIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjsKICBzd2l0Y2ggKGxlbmd0aCkgewogICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHsKICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7CiAgICB9OwogICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHsKICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7CiAgICB9OwogICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHsKICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7CiAgICB9OwogIH0KICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHsKICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpOwogIH07Cn07CgoKLyoqKi8gfSksCi8qIDIxICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCmlmICh0eXBlb2YgT2JqZWN0LmNyZWF0ZSA9PT0gJ2Z1bmN0aW9uJykgewogIC8vIGltcGxlbWVudGF0aW9uIGZyb20gc3RhbmRhcmQgbm9kZS5qcyAndXRpbCcgbW9kdWxlCiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHsKICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yCiAgICBjdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDdG9yLnByb3RvdHlwZSwgewogICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgIHZhbHVlOiBjdG9yLAogICAgICAgIGVudW1lcmFibGU6IGZhbHNlLAogICAgICAgIHdyaXRhYmxlOiB0cnVlLAogICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQogICAgICB9CiAgICB9KTsKICB9Owp9IGVsc2UgewogIC8vIG9sZCBzY2hvb2wgc2hpbSBmb3Igb2xkIGJyb3dzZXJzCiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHsKICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yCiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fQogICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZQogICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKQogICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yCiAgfQp9CgoKLyoqKi8gfSksCi8qIDIyICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS43LjEKKGZ1bmN0aW9uKCkgewogIHZhciBEZWNvZGVTdHJlYW0sIEZpeGVkLCBOdW1iZXJULAogICAgX19oYXNQcm9wID0ge30uaGFzT3duUHJvcGVydHksCiAgICBfX2V4dGVuZHMgPSBmdW5jdGlvbihjaGlsZCwgcGFyZW50KSB7IGZvciAodmFyIGtleSBpbiBwYXJlbnQpIHsgaWYgKF9faGFzUHJvcC5jYWxsKHBhcmVudCwga2V5KSkgY2hpbGRba2V5XSA9IHBhcmVudFtrZXldOyB9IGZ1bmN0aW9uIGN0b3IoKSB7IHRoaXMuY29uc3RydWN0b3IgPSBjaGlsZDsgfSBjdG9yLnByb3RvdHlwZSA9IHBhcmVudC5wcm90b3R5cGU7IGNoaWxkLnByb3RvdHlwZSA9IG5ldyBjdG9yKCk7IGNoaWxkLl9fc3VwZXJfXyA9IHBhcmVudC5wcm90b3R5cGU7IHJldHVybiBjaGlsZDsgfTsKCiAgRGVjb2RlU3RyZWFtID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MSk7CgogIE51bWJlclQgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBOdW1iZXJUKHR5cGUsIGVuZGlhbikgewogICAgICB0aGlzLnR5cGUgPSB0eXBlOwogICAgICB0aGlzLmVuZGlhbiA9IGVuZGlhbiAhPSBudWxsID8gZW5kaWFuIDogJ0JFJzsKICAgICAgdGhpcy5mbiA9IHRoaXMudHlwZTsKICAgICAgaWYgKHRoaXMudHlwZVt0aGlzLnR5cGUubGVuZ3RoIC0gMV0gIT09ICc4JykgewogICAgICAgIHRoaXMuZm4gKz0gdGhpcy5lbmRpYW47CiAgICAgIH0KICAgIH0KCiAgICBOdW1iZXJULnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBEZWNvZGVTdHJlYW0uVFlQRVNbdGhpcy50eXBlXTsKICAgIH07CgogICAgTnVtYmVyVC5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24oc3RyZWFtKSB7CiAgICAgIHJldHVybiBzdHJlYW1bJ3JlYWQnICsgdGhpcy5mbl0oKTsKICAgIH07CgogICAgTnVtYmVyVC5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24oc3RyZWFtLCB2YWwpIHsKICAgICAgcmV0dXJuIHN0cmVhbVsnd3JpdGUnICsgdGhpcy5mbl0odmFsKTsKICAgIH07CgogICAgcmV0dXJuIE51bWJlclQ7CgogIH0pKCk7CgogIGV4cG9ydHMuTnVtYmVyID0gTnVtYmVyVDsKCiAgZXhwb3J0cy51aW50OCA9IG5ldyBOdW1iZXJUKCdVSW50OCcpOwoKICBleHBvcnRzLnVpbnQxNmJlID0gZXhwb3J0cy51aW50MTYgPSBuZXcgTnVtYmVyVCgnVUludDE2JywgJ0JFJyk7CgogIGV4cG9ydHMudWludDE2bGUgPSBuZXcgTnVtYmVyVCgnVUludDE2JywgJ0xFJyk7CgogIGV4cG9ydHMudWludDI0YmUgPSBleHBvcnRzLnVpbnQyNCA9IG5ldyBOdW1iZXJUKCdVSW50MjQnLCAnQkUnKTsKCiAgZXhwb3J0cy51aW50MjRsZSA9IG5ldyBOdW1iZXJUKCdVSW50MjQnLCAnTEUnKTsKCiAgZXhwb3J0cy51aW50MzJiZSA9IGV4cG9ydHMudWludDMyID0gbmV3IE51bWJlclQoJ1VJbnQzMicsICdCRScpOwoKICBleHBvcnRzLnVpbnQzMmxlID0gbmV3IE51bWJlclQoJ1VJbnQzMicsICdMRScpOwoKICBleHBvcnRzLmludDggPSBuZXcgTnVtYmVyVCgnSW50OCcpOwoKICBleHBvcnRzLmludDE2YmUgPSBleHBvcnRzLmludDE2ID0gbmV3IE51bWJlclQoJ0ludDE2JywgJ0JFJyk7CgogIGV4cG9ydHMuaW50MTZsZSA9IG5ldyBOdW1iZXJUKCdJbnQxNicsICdMRScpOwoKICBleHBvcnRzLmludDI0YmUgPSBleHBvcnRzLmludDI0ID0gbmV3IE51bWJlclQoJ0ludDI0JywgJ0JFJyk7CgogIGV4cG9ydHMuaW50MjRsZSA9IG5ldyBOdW1iZXJUKCdJbnQyNCcsICdMRScpOwoKICBleHBvcnRzLmludDMyYmUgPSBleHBvcnRzLmludDMyID0gbmV3IE51bWJlclQoJ0ludDMyJywgJ0JFJyk7CgogIGV4cG9ydHMuaW50MzJsZSA9IG5ldyBOdW1iZXJUKCdJbnQzMicsICdMRScpOwoKICBleHBvcnRzLmZsb2F0YmUgPSBleHBvcnRzLmZsb2F0ID0gbmV3IE51bWJlclQoJ0Zsb2F0JywgJ0JFJyk7CgogIGV4cG9ydHMuZmxvYXRsZSA9IG5ldyBOdW1iZXJUKCdGbG9hdCcsICdMRScpOwoKICBleHBvcnRzLmRvdWJsZWJlID0gZXhwb3J0cy5kb3VibGUgPSBuZXcgTnVtYmVyVCgnRG91YmxlJywgJ0JFJyk7CgogIGV4cG9ydHMuZG91YmxlbGUgPSBuZXcgTnVtYmVyVCgnRG91YmxlJywgJ0xFJyk7CgogIEZpeGVkID0gKGZ1bmN0aW9uKF9zdXBlcikgewogICAgX19leHRlbmRzKEZpeGVkLCBfc3VwZXIpOwoKICAgIGZ1bmN0aW9uIEZpeGVkKHNpemUsIGVuZGlhbiwgZnJhY0JpdHMpIHsKICAgICAgaWYgKGZyYWNCaXRzID09IG51bGwpIHsKICAgICAgICBmcmFjQml0cyA9IHNpemUgPj4gMTsKICAgICAgfQogICAgICBGaXhlZC5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzLCAiSW50IiArIHNpemUsIGVuZGlhbik7CiAgICAgIHRoaXMuX3BvaW50ID0gMSA8PCBmcmFjQml0czsKICAgIH0KCiAgICBGaXhlZC5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24oc3RyZWFtKSB7CiAgICAgIHJldHVybiBGaXhlZC5fX3N1cGVyX18uZGVjb2RlLmNhbGwodGhpcywgc3RyZWFtKSAvIHRoaXMuX3BvaW50OwogICAgfTsKCiAgICBGaXhlZC5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24oc3RyZWFtLCB2YWwpIHsKICAgICAgcmV0dXJuIEZpeGVkLl9fc3VwZXJfXy5lbmNvZGUuY2FsbCh0aGlzLCBzdHJlYW0sIHZhbCAqIHRoaXMuX3BvaW50IHwgMCk7CiAgICB9OwoKICAgIHJldHVybiBGaXhlZDsKCiAgfSkoTnVtYmVyVCk7CgogIGV4cG9ydHMuRml4ZWQgPSBGaXhlZDsKCiAgZXhwb3J0cy5maXhlZDE2YmUgPSBleHBvcnRzLmZpeGVkMTYgPSBuZXcgRml4ZWQoMTYsICdCRScpOwoKICBleHBvcnRzLmZpeGVkMTZsZSA9IG5ldyBGaXhlZCgxNiwgJ0xFJyk7CgogIGV4cG9ydHMuZml4ZWQzMmJlID0gZXhwb3J0cy5maXhlZDMyID0gbmV3IEZpeGVkKDMyLCAnQkUnKTsKCiAgZXhwb3J0cy5maXhlZDMybGUgPSBuZXcgRml4ZWQoMzIsICdMRScpOwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMjMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKbW9kdWxlLmV4cG9ydHMgPSB7fTsKCgovKioqLyB9KSwKLyogMjQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKdmFyICRhdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjA3KSh0cnVlKTsKCi8vIDIxLjEuMy4yNyBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdKCkKX193ZWJwYWNrX3JlcXVpcmVfXyg2MSkoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7CiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldAogIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4Ci8vIDIxLjEuNS4yLjEgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KCkKfSwgZnVuY3Rpb24gKCkgewogIHZhciBPID0gdGhpcy5fdDsKICB2YXIgaW5kZXggPSB0aGlzLl9pOwogIHZhciBwb2ludDsKICBpZiAoaW5kZXggPj0gTy5sZW5ndGgpIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTsKICBwb2ludCA9ICRhdChPLCBpbmRleCk7CiAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7CiAgcmV0dXJuIHsgdmFsdWU6IHBvaW50LCBkb25lOiBmYWxzZSB9Owp9KTsKCgovKioqLyB9KSwKLyogMjUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKEJ1ZmZlcikgey8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLgovLwovLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQovLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi8vICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAovLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0Ci8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZQovLyBmb2xsb3dpbmcgY29uZGl0aW9uczoKLy8KLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi8vCi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTgovLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SCi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUKLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KCi8vIE5PVEU6IFRoZXNlIHR5cGUgY2hlY2tpbmcgZnVuY3Rpb25zIGludGVudGlvbmFsbHkgZG9uJ3QgdXNlIGBpbnN0YW5jZW9mYAovLyBiZWNhdXNlIGl0IGlzIGZyYWdpbGUgYW5kIGNhbiBiZSBlYXNpbHkgZmFrZWQgd2l0aCBgT2JqZWN0LmNyZWF0ZSgpYC4KCmZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7CiAgaWYgKEFycmF5LmlzQXJyYXkpIHsKICAgIHJldHVybiBBcnJheS5pc0FycmF5KGFyZyk7CiAgfQogIHJldHVybiBvYmplY3RUb1N0cmluZyhhcmcpID09PSAnW29iamVjdCBBcnJheV0nOwp9CmV4cG9ydHMuaXNBcnJheSA9IGlzQXJyYXk7CgpmdW5jdGlvbiBpc0Jvb2xlYW4oYXJnKSB7CiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJzsKfQpleHBvcnRzLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjsKCmZ1bmN0aW9uIGlzTnVsbChhcmcpIHsKICByZXR1cm4gYXJnID09PSBudWxsOwp9CmV4cG9ydHMuaXNOdWxsID0gaXNOdWxsOwoKZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7CiAgcmV0dXJuIGFyZyA9PSBudWxsOwp9CmV4cG9ydHMuaXNOdWxsT3JVbmRlZmluZWQgPSBpc051bGxPclVuZGVmaW5lZDsKCmZ1bmN0aW9uIGlzTnVtYmVyKGFyZykgewogIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJzsKfQpleHBvcnRzLmlzTnVtYmVyID0gaXNOdW1iZXI7CgpmdW5jdGlvbiBpc1N0cmluZyhhcmcpIHsKICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ3N0cmluZyc7Cn0KZXhwb3J0cy5pc1N0cmluZyA9IGlzU3RyaW5nOwoKZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7CiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnOwp9CmV4cG9ydHMuaXNTeW1ib2wgPSBpc1N5bWJvbDsKCmZ1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZykgewogIHJldHVybiBhcmcgPT09IHZvaWQgMDsKfQpleHBvcnRzLmlzVW5kZWZpbmVkID0gaXNVbmRlZmluZWQ7CgpmdW5jdGlvbiBpc1JlZ0V4cChyZSkgewogIHJldHVybiBvYmplY3RUb1N0cmluZyhyZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nOwp9CmV4cG9ydHMuaXNSZWdFeHAgPSBpc1JlZ0V4cDsKCmZ1bmN0aW9uIGlzT2JqZWN0KGFyZykgewogIHJldHVybiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiBhcmcgIT09IG51bGw7Cn0KZXhwb3J0cy5pc09iamVjdCA9IGlzT2JqZWN0OwoKZnVuY3Rpb24gaXNEYXRlKGQpIHsKICByZXR1cm4gb2JqZWN0VG9TdHJpbmcoZCkgPT09ICdbb2JqZWN0IERhdGVdJzsKfQpleHBvcnRzLmlzRGF0ZSA9IGlzRGF0ZTsKCmZ1bmN0aW9uIGlzRXJyb3IoZSkgewogIHJldHVybiAob2JqZWN0VG9TdHJpbmcoZSkgPT09ICdbb2JqZWN0IEVycm9yXScgfHwgZSBpbnN0YW5jZW9mIEVycm9yKTsKfQpleHBvcnRzLmlzRXJyb3IgPSBpc0Vycm9yOwoKZnVuY3Rpb24gaXNGdW5jdGlvbihhcmcpIHsKICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJzsKfQpleHBvcnRzLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uOwoKZnVuY3Rpb24gaXNQcmltaXRpdmUoYXJnKSB7CiAgcmV0dXJuIGFyZyA9PT0gbnVsbCB8fAogICAgICAgICB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicgfHwKICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ251bWJlcicgfHwKICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgfHwKICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCcgfHwgIC8vIEVTNiBzeW1ib2wKICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3VuZGVmaW5lZCc7Cn0KZXhwb3J0cy5pc1ByaW1pdGl2ZSA9IGlzUHJpbWl0aXZlOwoKZXhwb3J0cy5pc0J1ZmZlciA9IEJ1ZmZlci5pc0J1ZmZlcjsKCmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKG8pIHsKICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pOwp9CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXIpKQoKLyoqKi8gfSksCi8qIDI2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihCdWZmZXIpIHsvLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuNgoKLyoKUERGT2JqZWN0IC0gY29udmVydHMgSmF2YVNjcmlwdCB0eXBlcyBpbnRvIHRoZWlyIGNvcnJpc3BvbmRpbmcgUERGIHR5cGVzLgpCeSBEZXZvbiBHb3ZldHQKICovCgooZnVuY3Rpb24oKSB7CiAgdmFyIFBERk9iamVjdCwgUERGUmVmZXJlbmNlOwoKICBQREZPYmplY3QgPSAoZnVuY3Rpb24oKSB7CiAgICB2YXIgZXNjYXBhYmxlLCBlc2NhcGFibGVSZSwgcGFkLCBzd2FwQnl0ZXM7CgogICAgZnVuY3Rpb24gUERGT2JqZWN0KCkge30KCiAgICBwYWQgPSBmdW5jdGlvbihzdHIsIGxlbmd0aCkgewogICAgICByZXR1cm4gKEFycmF5KGxlbmd0aCArIDEpLmpvaW4oJzAnKSArIHN0cikuc2xpY2UoLWxlbmd0aCk7CiAgICB9OwoKICAgIGVzY2FwYWJsZVJlID0gL1tcblxyXHRcYlxmXChcKVxcXS9nOwoKICAgIGVzY2FwYWJsZSA9IHsKICAgICAgJ1xuJzogJ1xcbicsCiAgICAgICdccic6ICdcXHInLAogICAgICAnXHQnOiAnXFx0JywKICAgICAgJ1xiJzogJ1xcYicsCiAgICAgICdcZic6ICdcXGYnLAogICAgICAnXFwnOiAnXFxcXCcsCiAgICAgICcoJzogJ1xcKCcsCiAgICAgICcpJzogJ1xcKScKICAgIH07CgogICAgc3dhcEJ5dGVzID0gZnVuY3Rpb24oYnVmZikgewogICAgICB2YXIgYSwgaSwgaiwgbCwgcmVmOwogICAgICBsID0gYnVmZi5sZW5ndGg7CiAgICAgIGlmIChsICYgMHgwMSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcigiQnVmZmVyIGxlbmd0aCBtdXN0IGJlIGV2ZW4iKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBmb3IgKGkgPSBqID0gMCwgcmVmID0gbCAtIDE7IGogPCByZWY7IGkgPSBqICs9IDIpIHsKICAgICAgICAgIGEgPSBidWZmW2ldOwogICAgICAgICAgYnVmZltpXSA9IGJ1ZmZbaSArIDFdOwogICAgICAgICAgYnVmZltpICsgMV0gPSBhOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gYnVmZjsKICAgIH07CgogICAgUERGT2JqZWN0LmNvbnZlcnQgPSBmdW5jdGlvbihvYmplY3QpIHsKICAgICAgdmFyIGUsIGksIGlzVW5pY29kZSwgaXRlbXMsIGosIGtleSwgb3V0LCByZWYsIHN0cmluZywgdmFsOwogICAgICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ3N0cmluZycpIHsKICAgICAgICByZXR1cm4gJy8nICsgb2JqZWN0OwogICAgICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFN0cmluZykgewogICAgICAgIHN0cmluZyA9IG9iamVjdDsKICAgICAgICBpc1VuaWNvZGUgPSBmYWxzZTsKICAgICAgICBmb3IgKGkgPSBqID0gMCwgcmVmID0gc3RyaW5nLmxlbmd0aDsgaiA8IHJlZjsgaSA9IGogKz0gMSkgewogICAgICAgICAgaWYgKHN0cmluZy5jaGFyQ29kZUF0KGkpID4gMHg3ZikgewogICAgICAgICAgICBpc1VuaWNvZGUgPSB0cnVlOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKGlzVW5pY29kZSkgewogICAgICAgICAgc3RyaW5nID0gc3dhcEJ5dGVzKG5ldyBCdWZmZXIoJ1x1ZmVmZicgKyBzdHJpbmcsICd1dGYxNmxlJykpLnRvU3RyaW5nKCdiaW5hcnknKTsKICAgICAgICB9CiAgICAgICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoZXNjYXBhYmxlUmUsIGZ1bmN0aW9uKGMpIHsKICAgICAgICAgIHJldHVybiBlc2NhcGFibGVbY107CiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuICcoJyArIHN0cmluZyArICcpJzsKICAgICAgfSBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIob2JqZWN0KSkgewogICAgICAgIHJldHVybiAnPCcgKyBvYmplY3QudG9TdHJpbmcoJ2hleCcpICsgJz4nOwogICAgICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFBERlJlZmVyZW5jZSkgewogICAgICAgIHJldHVybiBvYmplY3QudG9TdHJpbmcoKTsKICAgICAgfSBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBEYXRlKSB7CiAgICAgICAgcmV0dXJuICcoRDonICsgcGFkKG9iamVjdC5nZXRVVENGdWxsWWVhcigpLCA0KSArIHBhZChvYmplY3QuZ2V0VVRDTW9udGgoKSArIDEsIDIpICsgcGFkKG9iamVjdC5nZXRVVENEYXRlKCksIDIpICsgcGFkKG9iamVjdC5nZXRVVENIb3VycygpLCAyKSArIHBhZChvYmplY3QuZ2V0VVRDTWludXRlcygpLCAyKSArIHBhZChvYmplY3QuZ2V0VVRDU2Vjb25kcygpLCAyKSArICdaKSc7CiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvYmplY3QpKSB7CiAgICAgICAgaXRlbXMgPSAoKGZ1bmN0aW9uKCkgewogICAgICAgICAgdmFyIGssIGxlbiwgcmVzdWx0czsKICAgICAgICAgIHJlc3VsdHMgPSBbXTsKICAgICAgICAgIGZvciAoayA9IDAsIGxlbiA9IG9iamVjdC5sZW5ndGg7IGsgPCBsZW47IGsrKykgewogICAgICAgICAgICBlID0gb2JqZWN0W2tdOwogICAgICAgICAgICByZXN1bHRzLnB1c2goUERGT2JqZWN0LmNvbnZlcnQoZSkpOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgICAgfSkoKSkuam9pbignICcpOwogICAgICAgIHJldHVybiAnWycgKyBpdGVtcyArICddJzsKICAgICAgfSBlbHNlIGlmICh7fS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT09ICdbb2JqZWN0IE9iamVjdF0nKSB7CiAgICAgICAgb3V0ID0gWyc8PCddOwogICAgICAgIGZvciAoa2V5IGluIG9iamVjdCkgewogICAgICAgICAgdmFsID0gb2JqZWN0W2tleV07CiAgICAgICAgICBvdXQucHVzaCgnLycgKyBrZXkgKyAnICcgKyBQREZPYmplY3QuY29udmVydCh2YWwpKTsKICAgICAgICB9CiAgICAgICAgb3V0LnB1c2goJz4+Jyk7CiAgICAgICAgcmV0dXJuIG91dC5qb2luKCdcbicpOwogICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdudW1iZXInKSB7CiAgICAgICAgcmV0dXJuIFBERk9iamVjdC5udW1iZXIob2JqZWN0KTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gJycgKyBvYmplY3Q7CiAgICAgIH0KICAgIH07CgogICAgUERGT2JqZWN0Lm51bWJlciA9IGZ1bmN0aW9uKG4pIHsKICAgICAgaWYgKG4gPiAtMWUyMSAmJiBuIDwgMWUyMSkgewogICAgICAgIHJldHVybiBNYXRoLnJvdW5kKG4gKiAxZTYpIC8gMWU2OwogICAgICB9CiAgICAgIHRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgbnVtYmVyOiAiICsgbik7CiAgICB9OwoKICAgIHJldHVybiBQREZPYmplY3Q7CgogIH0pKCk7CgogIG1vZHVsZS5leHBvcnRzID0gUERGT2JqZWN0OwoKICBQREZSZWZlcmVuY2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg3KTsKCn0pLmNhbGwodGhpcyk7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXIpKQoKLyoqKi8gfSksCi8qIDI3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHsKICByZXR1cm4gewogICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSwKICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSwKICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLAogICAgdmFsdWU6IHZhbHVlCiAgfTsKfTsKCgovKioqLyB9KSwKLyogMjggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKX193ZWJwYWNrX3JlcXVpcmVfXygyMDEpOwp2YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7CnZhciBoaWRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7CnZhciBJdGVyYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTsKdmFyIFRPX1NUUklOR19UQUcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpKCd0b1N0cmluZ1RhZycpOwoKdmFyIERPTUl0ZXJhYmxlcyA9ICgnQ1NTUnVsZUxpc3QsQ1NTU3R5bGVEZWNsYXJhdGlvbixDU1NWYWx1ZUxpc3QsQ2xpZW50UmVjdExpc3QsRE9NUmVjdExpc3QsRE9NU3RyaW5nTGlzdCwnICsKICAnRE9NVG9rZW5MaXN0LERhdGFUcmFuc2Zlckl0ZW1MaXN0LEZpbGVMaXN0LEhUTUxBbGxDb2xsZWN0aW9uLEhUTUxDb2xsZWN0aW9uLEhUTUxGb3JtRWxlbWVudCxIVE1MU2VsZWN0RWxlbWVudCwnICsKICAnTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCwnICsKICAnU1ZHUGF0aFNlZ0xpc3QsU1ZHUG9pbnRMaXN0LFNWR1N0cmluZ0xpc3QsU1ZHVHJhbnNmb3JtTGlzdCxTb3VyY2VCdWZmZXJMaXN0LFN0eWxlU2hlZXRMaXN0LFRleHRUcmFja0N1ZUxpc3QsJyArCiAgJ1RleHRUcmFja0xpc3QsVG91Y2hMaXN0Jykuc3BsaXQoJywnKTsKCmZvciAodmFyIGkgPSAwOyBpIDwgRE9NSXRlcmFibGVzLmxlbmd0aDsgaSsrKSB7CiAgdmFyIE5BTUUgPSBET01JdGVyYWJsZXNbaV07CiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07CiAgdmFyIHByb3RvID0gQ29sbGVjdGlvbiAmJiBDb2xsZWN0aW9uLnByb3RvdHlwZTsKICBpZiAocHJvdG8gJiYgIXByb3RvW1RPX1NUUklOR19UQUddKSBoaWRlKHByb3RvLCBUT19TVFJJTkdfVEFHLCBOQU1FKTsKICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7Cn0KCgovKioqLyB9KSwKLyogMjkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pCnZhciAka2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTAxKTsKdmFyIGVudW1CdWdLZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Nik7Cgptb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykgewogIHJldHVybiAka2V5cyhPLCBlbnVtQnVnS2V5cyk7Cn07CgoKLyoqKi8gfSksCi8qIDMwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudCkKdmFyIGRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU2KTsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHsKICByZXR1cm4gT2JqZWN0KGRlZmluZWQoaXQpKTsKfTsKCgovKioqLyB9KSwKLyogMzEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuCi8vCi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLy8gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwovLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQKLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlCi8vIGZvbGxvd2luZyBjb25kaXRpb25zOgovLwovLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAovLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLy8KLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgovLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOCi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAovLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IKLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRQovLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgoKZnVuY3Rpb24gRXZlbnRFbWl0dGVyKCkgewogIHRoaXMuX2V2ZW50cyA9IHRoaXMuX2V2ZW50cyB8fCB7fTsKICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSB0aGlzLl9tYXhMaXN0ZW5lcnMgfHwgdW5kZWZpbmVkOwp9Cm1vZHVsZS5leHBvcnRzID0gRXZlbnRFbWl0dGVyOwoKLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC4xMC54CkV2ZW50RW1pdHRlci5FdmVudEVtaXR0ZXIgPSBFdmVudEVtaXR0ZXI7CgpFdmVudEVtaXR0ZXIucHJvdG90eXBlLl9ldmVudHMgPSB1bmRlZmluZWQ7CkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX21heExpc3RlbmVycyA9IHVuZGVmaW5lZDsKCi8vIEJ5IGRlZmF1bHQgRXZlbnRFbWl0dGVycyB3aWxsIHByaW50IGEgd2FybmluZyBpZiBtb3JlIHRoYW4gMTAgbGlzdGVuZXJzIGFyZQovLyBhZGRlZCB0byBpdC4gVGhpcyBpcyBhIHVzZWZ1bCBkZWZhdWx0IHdoaWNoIGhlbHBzIGZpbmRpbmcgbWVtb3J5IGxlYWtzLgpFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycyA9IDEwOwoKLy8gT2J2aW91c2x5IG5vdCBhbGwgRW1pdHRlcnMgc2hvdWxkIGJlIGxpbWl0ZWQgdG8gMTAuIFRoaXMgZnVuY3Rpb24gYWxsb3dzCi8vIHRoYXQgdG8gYmUgaW5jcmVhc2VkLiBTZXQgdG8gemVybyBmb3IgdW5saW1pdGVkLgpFdmVudEVtaXR0ZXIucHJvdG90eXBlLnNldE1heExpc3RlbmVycyA9IGZ1bmN0aW9uKG4pIHsKICBpZiAoIWlzTnVtYmVyKG4pIHx8IG4gPCAwIHx8IGlzTmFOKG4pKQogICAgdGhyb3cgVHlwZUVycm9yKCduIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTsKICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSBuOwogIHJldHVybiB0aGlzOwp9OwoKRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24odHlwZSkgewogIHZhciBlciwgaGFuZGxlciwgbGVuLCBhcmdzLCBpLCBsaXN0ZW5lcnM7CgogIGlmICghdGhpcy5fZXZlbnRzKQogICAgdGhpcy5fZXZlbnRzID0ge307CgogIC8vIElmIHRoZXJlIGlzIG5vICdlcnJvcicgZXZlbnQgbGlzdGVuZXIgdGhlbiB0aHJvdy4KICBpZiAodHlwZSA9PT0gJ2Vycm9yJykgewogICAgaWYgKCF0aGlzLl9ldmVudHMuZXJyb3IgfHwKICAgICAgICAoaXNPYmplY3QodGhpcy5fZXZlbnRzLmVycm9yKSAmJiAhdGhpcy5fZXZlbnRzLmVycm9yLmxlbmd0aCkpIHsKICAgICAgZXIgPSBhcmd1bWVudHNbMV07CiAgICAgIGlmIChlciBpbnN0YW5jZW9mIEVycm9yKSB7CiAgICAgICAgdGhyb3cgZXI7IC8vIFVuaGFuZGxlZCAnZXJyb3InIGV2ZW50CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gQXQgbGVhc3QgZ2l2ZSBzb21lIGtpbmQgb2YgY29udGV4dCB0byB0aGUgdXNlcgogICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1VuY2F1Z2h0LCB1bnNwZWNpZmllZCAiZXJyb3IiIGV2ZW50LiAoJyArIGVyICsgJyknKTsKICAgICAgICBlcnIuY29udGV4dCA9IGVyOwogICAgICAgIHRocm93IGVycjsKICAgICAgfQogICAgfQogIH0KCiAgaGFuZGxlciA9IHRoaXMuX2V2ZW50c1t0eXBlXTsKCiAgaWYgKGlzVW5kZWZpbmVkKGhhbmRsZXIpKQogICAgcmV0dXJuIGZhbHNlOwoKICBpZiAoaXNGdW5jdGlvbihoYW5kbGVyKSkgewogICAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7CiAgICAgIC8vIGZhc3QgY2FzZXMKICAgICAgY2FzZSAxOgogICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAyOgogICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzLCBhcmd1bWVudHNbMV0pOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDM6CiAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMsIGFyZ3VtZW50c1sxXSwgYXJndW1lbnRzWzJdKTsKICAgICAgICBicmVhazsKICAgICAgLy8gc2xvd2VyCiAgICAgIGRlZmF1bHQ6CiAgICAgICAgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7CiAgICAgICAgaGFuZGxlci5hcHBseSh0aGlzLCBhcmdzKTsKICAgIH0KICB9IGVsc2UgaWYgKGlzT2JqZWN0KGhhbmRsZXIpKSB7CiAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTsKICAgIGxpc3RlbmVycyA9IGhhbmRsZXIuc2xpY2UoKTsKICAgIGxlbiA9IGxpc3RlbmVycy5sZW5ndGg7CiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCiAgICAgIGxpc3RlbmVyc1tpXS5hcHBseSh0aGlzLCBhcmdzKTsKICB9CgogIHJldHVybiB0cnVlOwp9OwoKRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IGZ1bmN0aW9uKHR5cGUsIGxpc3RlbmVyKSB7CiAgdmFyIG07CgogIGlmICghaXNGdW5jdGlvbihsaXN0ZW5lcikpCiAgICB0aHJvdyBUeXBlRXJyb3IoJ2xpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbicpOwoKICBpZiAoIXRoaXMuX2V2ZW50cykKICAgIHRoaXMuX2V2ZW50cyA9IHt9OwoKICAvLyBUbyBhdm9pZCByZWN1cnNpb24gaW4gdGhlIGNhc2UgdGhhdCB0eXBlID09PSAibmV3TGlzdGVuZXIiISBCZWZvcmUKICAvLyBhZGRpbmcgaXQgdG8gdGhlIGxpc3RlbmVycywgZmlyc3QgZW1pdCAibmV3TGlzdGVuZXIiLgogIGlmICh0aGlzLl9ldmVudHMubmV3TGlzdGVuZXIpCiAgICB0aGlzLmVtaXQoJ25ld0xpc3RlbmVyJywgdHlwZSwKICAgICAgICAgICAgICBpc0Z1bmN0aW9uKGxpc3RlbmVyLmxpc3RlbmVyKSA/CiAgICAgICAgICAgICAgbGlzdGVuZXIubGlzdGVuZXIgOiBsaXN0ZW5lcik7CgogIGlmICghdGhpcy5fZXZlbnRzW3R5cGVdKQogICAgLy8gT3B0aW1pemUgdGhlIGNhc2Ugb2Ygb25lIGxpc3RlbmVyLiBEb24ndCBuZWVkIHRoZSBleHRyYSBhcnJheSBvYmplY3QuCiAgICB0aGlzLl9ldmVudHNbdHlwZV0gPSBsaXN0ZW5lcjsKICBlbHNlIGlmIChpc09iamVjdCh0aGlzLl9ldmVudHNbdHlwZV0pKQogICAgLy8gSWYgd2UndmUgYWxyZWFkeSBnb3QgYW4gYXJyYXksIGp1c3QgYXBwZW5kLgogICAgdGhpcy5fZXZlbnRzW3R5cGVdLnB1c2gobGlzdGVuZXIpOwogIGVsc2UKICAgIC8vIEFkZGluZyB0aGUgc2Vjb25kIGVsZW1lbnQsIG5lZWQgdG8gY2hhbmdlIHRvIGFycmF5LgogICAgdGhpcy5fZXZlbnRzW3R5cGVdID0gW3RoaXMuX2V2ZW50c1t0eXBlXSwgbGlzdGVuZXJdOwoKICAvLyBDaGVjayBmb3IgbGlzdGVuZXIgbGVhawogIGlmIChpc09iamVjdCh0aGlzLl9ldmVudHNbdHlwZV0pICYmICF0aGlzLl9ldmVudHNbdHlwZV0ud2FybmVkKSB7CiAgICBpZiAoIWlzVW5kZWZpbmVkKHRoaXMuX21heExpc3RlbmVycykpIHsKICAgICAgbSA9IHRoaXMuX21heExpc3RlbmVyczsKICAgIH0gZWxzZSB7CiAgICAgIG0gPSBFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVyczsKICAgIH0KCiAgICBpZiAobSAmJiBtID4gMCAmJiB0aGlzLl9ldmVudHNbdHlwZV0ubGVuZ3RoID4gbSkgewogICAgICB0aGlzLl9ldmVudHNbdHlwZV0ud2FybmVkID0gdHJ1ZTsKICAgICAgY29uc29sZS5lcnJvcignKG5vZGUpIHdhcm5pbmc6IHBvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgJyArCiAgICAgICAgICAgICAgICAgICAgJ2xlYWsgZGV0ZWN0ZWQuICVkIGxpc3RlbmVycyBhZGRlZC4gJyArCiAgICAgICAgICAgICAgICAgICAgJ1VzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvIGluY3JlYXNlIGxpbWl0LicsCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRzW3R5cGVdLmxlbmd0aCk7CiAgICAgIGlmICh0eXBlb2YgY29uc29sZS50cmFjZSA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIC8vIG5vdCBzdXBwb3J0ZWQgaW4gSUUgMTAKICAgICAgICBjb25zb2xlLnRyYWNlKCk7CiAgICAgIH0KICAgIH0KICB9CgogIHJldHVybiB0aGlzOwp9OwoKRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbiA9IEV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXI7CgpFdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikgewogIGlmICghaXNGdW5jdGlvbihsaXN0ZW5lcikpCiAgICB0aHJvdyBUeXBlRXJyb3IoJ2xpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbicpOwoKICB2YXIgZmlyZWQgPSBmYWxzZTsKCiAgZnVuY3Rpb24gZygpIHsKICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgZyk7CgogICAgaWYgKCFmaXJlZCkgewogICAgICBmaXJlZCA9IHRydWU7CiAgICAgIGxpc3RlbmVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICB9CiAgfQoKICBnLmxpc3RlbmVyID0gbGlzdGVuZXI7CiAgdGhpcy5vbih0eXBlLCBnKTsKCiAgcmV0dXJuIHRoaXM7Cn07CgovLyBlbWl0cyBhICdyZW1vdmVMaXN0ZW5lcicgZXZlbnQgaWZmIHRoZSBsaXN0ZW5lciB3YXMgcmVtb3ZlZApFdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyID0gZnVuY3Rpb24odHlwZSwgbGlzdGVuZXIpIHsKICB2YXIgbGlzdCwgcG9zaXRpb24sIGxlbmd0aCwgaTsKCiAgaWYgKCFpc0Z1bmN0aW9uKGxpc3RlbmVyKSkKICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7CgogIGlmICghdGhpcy5fZXZlbnRzIHx8ICF0aGlzLl9ldmVudHNbdHlwZV0pCiAgICByZXR1cm4gdGhpczsKCiAgbGlzdCA9IHRoaXMuX2V2ZW50c1t0eXBlXTsKICBsZW5ndGggPSBsaXN0Lmxlbmd0aDsKICBwb3NpdGlvbiA9IC0xOwoKICBpZiAobGlzdCA9PT0gbGlzdGVuZXIgfHwKICAgICAgKGlzRnVuY3Rpb24obGlzdC5saXN0ZW5lcikgJiYgbGlzdC5saXN0ZW5lciA9PT0gbGlzdGVuZXIpKSB7CiAgICBkZWxldGUgdGhpcy5fZXZlbnRzW3R5cGVdOwogICAgaWYgKHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcikKICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIGxpc3RlbmVyKTsKCiAgfSBlbHNlIGlmIChpc09iamVjdChsaXN0KSkgewogICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gPiAwOykgewogICAgICBpZiAobGlzdFtpXSA9PT0gbGlzdGVuZXIgfHwKICAgICAgICAgIChsaXN0W2ldLmxpc3RlbmVyICYmIGxpc3RbaV0ubGlzdGVuZXIgPT09IGxpc3RlbmVyKSkgewogICAgICAgIHBvc2l0aW9uID0gaTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQoKICAgIGlmIChwb3NpdGlvbiA8IDApCiAgICAgIHJldHVybiB0aGlzOwoKICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMSkgewogICAgICBsaXN0Lmxlbmd0aCA9IDA7CiAgICAgIGRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07CiAgICB9IGVsc2UgewogICAgICBsaXN0LnNwbGljZShwb3NpdGlvbiwgMSk7CiAgICB9CgogICAgaWYgKHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcikKICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIGxpc3RlbmVyKTsKICB9CgogIHJldHVybiB0aGlzOwp9OwoKRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBmdW5jdGlvbih0eXBlKSB7CiAgdmFyIGtleSwgbGlzdGVuZXJzOwoKICBpZiAoIXRoaXMuX2V2ZW50cykKICAgIHJldHVybiB0aGlzOwoKICAvLyBub3QgbGlzdGVuaW5nIGZvciByZW1vdmVMaXN0ZW5lciwgbm8gbmVlZCB0byBlbWl0CiAgaWYgKCF0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXIpIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKQogICAgICB0aGlzLl9ldmVudHMgPSB7fTsKICAgIGVsc2UgaWYgKHRoaXMuX2V2ZW50c1t0eXBlXSkKICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLy8gZW1pdCByZW1vdmVMaXN0ZW5lciBmb3IgYWxsIGxpc3RlbmVycyBvbiBhbGwgZXZlbnRzCiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHsKICAgIGZvciAoa2V5IGluIHRoaXMuX2V2ZW50cykgewogICAgICBpZiAoa2V5ID09PSAncmVtb3ZlTGlzdGVuZXInKSBjb250aW51ZTsKICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoa2V5KTsKICAgIH0KICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCdyZW1vdmVMaXN0ZW5lcicpOwogICAgdGhpcy5fZXZlbnRzID0ge307CiAgICByZXR1cm4gdGhpczsKICB9CgogIGxpc3RlbmVycyA9IHRoaXMuX2V2ZW50c1t0eXBlXTsKCiAgaWYgKGlzRnVuY3Rpb24obGlzdGVuZXJzKSkgewogICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnMpOwogIH0gZWxzZSBpZiAobGlzdGVuZXJzKSB7CiAgICAvLyBMSUZPIG9yZGVyCiAgICB3aGlsZSAobGlzdGVuZXJzLmxlbmd0aCkKICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnNbbGlzdGVuZXJzLmxlbmd0aCAtIDFdKTsKICB9CiAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTsKCiAgcmV0dXJuIHRoaXM7Cn07CgpFdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVycyA9IGZ1bmN0aW9uKHR5cGUpIHsKICB2YXIgcmV0OwogIGlmICghdGhpcy5fZXZlbnRzIHx8ICF0aGlzLl9ldmVudHNbdHlwZV0pCiAgICByZXQgPSBbXTsKICBlbHNlIGlmIChpc0Z1bmN0aW9uKHRoaXMuX2V2ZW50c1t0eXBlXSkpCiAgICByZXQgPSBbdGhpcy5fZXZlbnRzW3R5cGVdXTsKICBlbHNlCiAgICByZXQgPSB0aGlzLl9ldmVudHNbdHlwZV0uc2xpY2UoKTsKICByZXR1cm4gcmV0Owp9OwoKRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5saXN0ZW5lckNvdW50ID0gZnVuY3Rpb24odHlwZSkgewogIGlmICh0aGlzLl9ldmVudHMpIHsKICAgIHZhciBldmxpc3RlbmVyID0gdGhpcy5fZXZlbnRzW3R5cGVdOwoKICAgIGlmIChpc0Z1bmN0aW9uKGV2bGlzdGVuZXIpKQogICAgICByZXR1cm4gMTsKICAgIGVsc2UgaWYgKGV2bGlzdGVuZXIpCiAgICAgIHJldHVybiBldmxpc3RlbmVyLmxlbmd0aDsKICB9CiAgcmV0dXJuIDA7Cn07CgpFdmVudEVtaXR0ZXIubGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uKGVtaXR0ZXIsIHR5cGUpIHsKICByZXR1cm4gZW1pdHRlci5saXN0ZW5lckNvdW50KHR5cGUpOwp9OwoKZnVuY3Rpb24gaXNGdW5jdGlvbihhcmcpIHsKICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJzsKfQoKZnVuY3Rpb24gaXNOdW1iZXIoYXJnKSB7CiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdudW1iZXInOwp9CgpmdW5jdGlvbiBpc09iamVjdChhcmcpIHsKICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsOwp9CgpmdW5jdGlvbiBpc1VuZGVmaW5lZChhcmcpIHsKICByZXR1cm4gYXJnID09PSB2b2lkIDA7Cn0KCgovKioqLyB9KSwKLyogMzIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24ocHJvY2VzcykgewoKaWYgKCFwcm9jZXNzLnZlcnNpb24gfHwKICAgIHByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCd2MC4nKSA9PT0gMCB8fAogICAgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YxLicpID09PSAwICYmIHByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCd2MS44LicpICE9PSAwKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSB7IG5leHRUaWNrOiBuZXh0VGljayB9Owp9IGVsc2UgewogIG1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcwp9CgpmdW5jdGlvbiBuZXh0VGljayhmbiwgYXJnMSwgYXJnMiwgYXJnMykgewogIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHsKICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJyJjYWxsYmFjayIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7CiAgfQogIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoOwogIHZhciBhcmdzLCBpOwogIHN3aXRjaCAobGVuKSB7CiAgY2FzZSAwOgogIGNhc2UgMToKICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZuKTsKICBjYXNlIDI6CiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tPbmUoKSB7CiAgICAgIGZuLmNhbGwobnVsbCwgYXJnMSk7CiAgICB9KTsKICBjYXNlIDM6CiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tUd28oKSB7CiAgICAgIGZuLmNhbGwobnVsbCwgYXJnMSwgYXJnMik7CiAgICB9KTsKICBjYXNlIDQ6CiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tUaHJlZSgpIHsKICAgICAgZm4uY2FsbChudWxsLCBhcmcxLCBhcmcyLCBhcmczKTsKICAgIH0pOwogIGRlZmF1bHQ6CiAgICBhcmdzID0gbmV3IEFycmF5KGxlbiAtIDEpOwogICAgaSA9IDA7CiAgICB3aGlsZSAoaSA8IGFyZ3MubGVuZ3RoKSB7CiAgICAgIGFyZ3NbaSsrXSA9IGFyZ3VtZW50c1tpXTsKICAgIH0KICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGljaygpIHsKICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7CiAgICB9KTsKICB9Cn0KCgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxMSkpKQoKLyoqKi8gfSksCi8qIDMzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qIGVzbGludC1kaXNhYmxlIG5vZGUvbm8tZGVwcmVjYXRlZC1hcGkgKi8KdmFyIGJ1ZmZlciA9IF9fd2VicGFja19yZXF1aXJlX18oMSkKdmFyIEJ1ZmZlciA9IGJ1ZmZlci5CdWZmZXIKCi8vIGFsdGVybmF0aXZlIHRvIHVzaW5nIE9iamVjdC5rZXlzIGZvciBvbGQgYnJvd3NlcnMKZnVuY3Rpb24gY29weVByb3BzIChzcmMsIGRzdCkgewogIGZvciAodmFyIGtleSBpbiBzcmMpIHsKICAgIGRzdFtrZXldID0gc3JjW2tleV0KICB9Cn0KaWYgKEJ1ZmZlci5mcm9tICYmIEJ1ZmZlci5hbGxvYyAmJiBCdWZmZXIuYWxsb2NVbnNhZmUgJiYgQnVmZmVyLmFsbG9jVW5zYWZlU2xvdykgewogIG1vZHVsZS5leHBvcnRzID0gYnVmZmVyCn0gZWxzZSB7CiAgLy8gQ29weSBwcm9wZXJ0aWVzIGZyb20gcmVxdWlyZSgnYnVmZmVyJykKICBjb3B5UHJvcHMoYnVmZmVyLCBleHBvcnRzKQogIGV4cG9ydHMuQnVmZmVyID0gU2FmZUJ1ZmZlcgp9CgpmdW5jdGlvbiBTYWZlQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkgewogIHJldHVybiBCdWZmZXIoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpCn0KCi8vIENvcHkgc3RhdGljIG1ldGhvZHMgZnJvbSBCdWZmZXIKY29weVByb3BzKEJ1ZmZlciwgU2FmZUJ1ZmZlcikKClNhZmVCdWZmZXIuZnJvbSA9IGZ1bmN0aW9uIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkgewogIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykgewogICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKQogIH0KICByZXR1cm4gQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKQp9CgpTYWZlQnVmZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7CiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykgewogICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpCiAgfQogIHZhciBidWYgPSBCdWZmZXIoc2l6ZSkKICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7CiAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykgewogICAgICBidWYuZmlsbChmaWxsLCBlbmNvZGluZykKICAgIH0gZWxzZSB7CiAgICAgIGJ1Zi5maWxsKGZpbGwpCiAgICB9CiAgfSBlbHNlIHsKICAgIGJ1Zi5maWxsKDApCiAgfQogIHJldHVybiBidWYKfQoKU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7CiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykgewogICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpCiAgfQogIHJldHVybiBCdWZmZXIoc2l6ZSkKfQoKU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkgewogIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHsKICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKQogIH0KICByZXR1cm4gYnVmZmVyLlNsb3dCdWZmZXIoc2l6ZSkKfQoKCi8qKiovIH0pLAovKiAzNCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKCnZhciBUWVBFRF9PSyA9ICAodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnKSAmJgogICAgICAgICAgICAgICAgKHR5cGVvZiBVaW50MTZBcnJheSAhPT0gJ3VuZGVmaW5lZCcpICYmCiAgICAgICAgICAgICAgICAodHlwZW9mIEludDMyQXJyYXkgIT09ICd1bmRlZmluZWQnKTsKCmZ1bmN0aW9uIF9oYXMob2JqLCBrZXkpIHsKICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KTsKfQoKZXhwb3J0cy5hc3NpZ24gPSBmdW5jdGlvbiAob2JqIC8qZnJvbTEsIGZyb20yLCBmcm9tMywgLi4uKi8pIHsKICB2YXIgc291cmNlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7CiAgd2hpbGUgKHNvdXJjZXMubGVuZ3RoKSB7CiAgICB2YXIgc291cmNlID0gc291cmNlcy5zaGlmdCgpOwogICAgaWYgKCFzb3VyY2UpIHsgY29udGludWU7IH0KCiAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gJ29iamVjdCcpIHsKICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzb3VyY2UgKyAnbXVzdCBiZSBub24tb2JqZWN0Jyk7CiAgICB9CgogICAgZm9yICh2YXIgcCBpbiBzb3VyY2UpIHsKICAgICAgaWYgKF9oYXMoc291cmNlLCBwKSkgewogICAgICAgIG9ialtwXSA9IHNvdXJjZVtwXTsKICAgICAgfQogICAgfQogIH0KCiAgcmV0dXJuIG9iajsKfTsKCgovLyByZWR1Y2UgYnVmZmVyIHNpemUsIGF2b2lkaW5nIG1lbSBjb3B5CmV4cG9ydHMuc2hyaW5rQnVmID0gZnVuY3Rpb24gKGJ1Ziwgc2l6ZSkgewogIGlmIChidWYubGVuZ3RoID09PSBzaXplKSB7IHJldHVybiBidWY7IH0KICBpZiAoYnVmLnN1YmFycmF5KSB7IHJldHVybiBidWYuc3ViYXJyYXkoMCwgc2l6ZSk7IH0KICBidWYubGVuZ3RoID0gc2l6ZTsKICByZXR1cm4gYnVmOwp9OwoKCnZhciBmblR5cGVkID0gewogIGFycmF5U2V0OiBmdW5jdGlvbiAoZGVzdCwgc3JjLCBzcmNfb2ZmcywgbGVuLCBkZXN0X29mZnMpIHsKICAgIGlmIChzcmMuc3ViYXJyYXkgJiYgZGVzdC5zdWJhcnJheSkgewogICAgICBkZXN0LnNldChzcmMuc3ViYXJyYXkoc3JjX29mZnMsIHNyY19vZmZzICsgbGVuKSwgZGVzdF9vZmZzKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgLy8gRmFsbGJhY2sgdG8gb3JkaW5hcnkgYXJyYXkKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgZGVzdFtkZXN0X29mZnMgKyBpXSA9IHNyY1tzcmNfb2ZmcyArIGldOwogICAgfQogIH0sCiAgLy8gSm9pbiBhcnJheSBvZiBjaHVua3MgdG8gc2luZ2xlIGFycmF5LgogIGZsYXR0ZW5DaHVua3M6IGZ1bmN0aW9uIChjaHVua3MpIHsKICAgIHZhciBpLCBsLCBsZW4sIHBvcywgY2h1bmssIHJlc3VsdDsKCiAgICAvLyBjYWxjdWxhdGUgZGF0YSBsZW5ndGgKICAgIGxlbiA9IDA7CiAgICBmb3IgKGkgPSAwLCBsID0gY2h1bmtzLmxlbmd0aDsgaSA8IGw7IGkrKykgewogICAgICBsZW4gKz0gY2h1bmtzW2ldLmxlbmd0aDsKICAgIH0KCiAgICAvLyBqb2luIGNodW5rcwogICAgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkobGVuKTsKICAgIHBvcyA9IDA7CiAgICBmb3IgKGkgPSAwLCBsID0gY2h1bmtzLmxlbmd0aDsgaSA8IGw7IGkrKykgewogICAgICBjaHVuayA9IGNodW5rc1tpXTsKICAgICAgcmVzdWx0LnNldChjaHVuaywgcG9zKTsKICAgICAgcG9zICs9IGNodW5rLmxlbmd0aDsKICAgIH0KCiAgICByZXR1cm4gcmVzdWx0OwogIH0KfTsKCnZhciBmblVudHlwZWQgPSB7CiAgYXJyYXlTZXQ6IGZ1bmN0aW9uIChkZXN0LCBzcmMsIHNyY19vZmZzLCBsZW4sIGRlc3Rfb2ZmcykgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICBkZXN0W2Rlc3Rfb2ZmcyArIGldID0gc3JjW3NyY19vZmZzICsgaV07CiAgICB9CiAgfSwKICAvLyBKb2luIGFycmF5IG9mIGNodW5rcyB0byBzaW5nbGUgYXJyYXkuCiAgZmxhdHRlbkNodW5rczogZnVuY3Rpb24gKGNodW5rcykgewogICAgcmV0dXJuIFtdLmNvbmNhdC5hcHBseShbXSwgY2h1bmtzKTsKICB9Cn07CgoKLy8gRW5hYmxlL0Rpc2FibGUgdHlwZWQgYXJyYXlzIHVzZSwgZm9yIHRlc3RpbmcKLy8KZXhwb3J0cy5zZXRUeXBlZCA9IGZ1bmN0aW9uIChvbikgewogIGlmIChvbikgewogICAgZXhwb3J0cy5CdWY4ICA9IFVpbnQ4QXJyYXk7CiAgICBleHBvcnRzLkJ1ZjE2ID0gVWludDE2QXJyYXk7CiAgICBleHBvcnRzLkJ1ZjMyID0gSW50MzJBcnJheTsKICAgIGV4cG9ydHMuYXNzaWduKGV4cG9ydHMsIGZuVHlwZWQpOwogIH0gZWxzZSB7CiAgICBleHBvcnRzLkJ1ZjggID0gQXJyYXk7CiAgICBleHBvcnRzLkJ1ZjE2ID0gQXJyYXk7CiAgICBleHBvcnRzLkJ1ZjMyID0gQXJyYXk7CiAgICBleHBvcnRzLmFzc2lnbihleHBvcnRzLCBmblVudHlwZWQpOwogIH0KfTsKCmV4cG9ydHMuc2V0VHlwZWQoVFlQRURfT0spOwoKCi8qKiovIH0pLAovKiAzNSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgpleHBvcnRzLmYgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTsKCgovKioqLyB9KSwKLyogMzYgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pCnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpOwp2YXIgZFBzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDApOwp2YXIgZW51bUJ1Z0tleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY2KTsKdmFyIElFX1BST1RPID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2NCkoJ0lFX1BST1RPJyk7CnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTsKdmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnOwoKLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZQp2YXIgY3JlYXRlRGljdCA9IGZ1bmN0aW9uICgpIHsKICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1ZwogIHZhciBpZnJhbWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk2KSgnaWZyYW1lJyk7CiAgdmFyIGkgPSBlbnVtQnVnS2V5cy5sZW5ndGg7CiAgdmFyIGx0ID0gJzwnOwogIHZhciBndCA9ICc+JzsKICB2YXIgaWZyYW1lRG9jdW1lbnQ7CiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgX193ZWJwYWNrX3JlcXVpcmVfXygyMDUpLmFwcGVuZENoaWxkKGlmcmFtZSk7CiAgaWZyYW1lLnNyYyA9ICdqYXZhc2NyaXB0Oic7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2NyaXB0LXVybAogIC8vIGNyZWF0ZURpY3QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5PYmplY3Q7CiAgLy8gaHRtbC5yZW1vdmVDaGlsZChpZnJhbWUpOwogIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7CiAgaWZyYW1lRG9jdW1lbnQub3BlbigpOwogIGlmcmFtZURvY3VtZW50LndyaXRlKGx0ICsgJ3NjcmlwdCcgKyBndCArICdkb2N1bWVudC5GPU9iamVjdCcgKyBsdCArICcvc2NyaXB0JyArIGd0KTsKICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpOwogIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GOwogIHdoaWxlIChpLS0pIGRlbGV0ZSBjcmVhdGVEaWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbaV1dOwogIHJldHVybiBjcmVhdGVEaWN0KCk7Cn07Cgptb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHsKICB2YXIgcmVzdWx0OwogIGlmIChPICE9PSBudWxsKSB7CiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7CiAgICByZXN1bHQgPSBuZXcgRW1wdHkoKTsKICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsOwogICAgLy8gYWRkICJfX3Byb3RvX18iIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGwKICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPOwogIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7CiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRQcyhyZXN1bHQsIFByb3BlcnRpZXMpOwp9OwoKCi8qKiovIH0pLAovKiAzNyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyA3LjEuMTUgVG9MZW5ndGgKdmFyIHRvSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oNjMpOwp2YXIgbWluID0gTWF0aC5taW47Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7CiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTEKfTsKCgovKioqLyB9KSwKLyogMzggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKdmFyIGlkID0gMDsKdmFyIHB4ID0gTWF0aC5yYW5kb20oKTsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7CiAgcmV0dXJuICdTeW1ib2woJy5jb25jYXQoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSwgJylfJywgKCsraWQgKyBweCkudG9TdHJpbmcoMzYpKTsKfTsKCgovKioqLyB9KSwKLyogMzkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIGRlZiA9IF9fd2VicGFja19yZXF1aXJlX18oNikuZjsKdmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpOwp2YXIgVEFHID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KSgndG9TdHJpbmdUYWcnKTsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCB0YWcsIHN0YXQpIHsKICBpZiAoaXQgJiYgIWhhcyhpdCA9IHN0YXQgPyBpdCA6IGl0LnByb3RvdHlwZSwgVEFHKSkgZGVmKGl0LCBUQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogdGFnIH0pOwp9OwoKCi8qKiovIH0pLAovKiA0MCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgTUVUQSA9IF9fd2VicGFja19yZXF1aXJlX18oMzgpKCdtZXRhJyk7CnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7CnZhciBoYXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KTsKdmFyIHNldERlc2MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpLmY7CnZhciBpZCA9IDA7CnZhciBpc0V4dGVuc2libGUgPSBPYmplY3QuaXNFeHRlbnNpYmxlIHx8IGZ1bmN0aW9uICgpIHsKICByZXR1cm4gdHJ1ZTsKfTsKdmFyIEZSRUVaRSA9ICFfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KShmdW5jdGlvbiAoKSB7CiAgcmV0dXJuIGlzRXh0ZW5zaWJsZShPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKTsKfSk7CnZhciBzZXRNZXRhID0gZnVuY3Rpb24gKGl0KSB7CiAgc2V0RGVzYyhpdCwgTUVUQSwgeyB2YWx1ZTogewogICAgaTogJ08nICsgKytpZCwgLy8gb2JqZWN0IElECiAgICB3OiB7fSAgICAgICAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIElEcwogIH0gfSk7Cn07CnZhciBmYXN0S2V5ID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHsKICAvLyByZXR1cm4gcHJpbWl0aXZlIHdpdGggcHJlZml4CiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCcgPyBpdCA6ICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgPyAnUycgOiAnUCcpICsgaXQ7CiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7CiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdAogICAgaWYgKCFpc0V4dGVuc2libGUoaXQpKSByZXR1cm4gJ0YnOwogICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGEKICAgIGlmICghY3JlYXRlKSByZXR1cm4gJ0UnOwogICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGEKICAgIHNldE1ldGEoaXQpOwogIC8vIHJldHVybiBvYmplY3QgSUQKICB9IHJldHVybiBpdFtNRVRBXS5pOwp9Owp2YXIgZ2V0V2VhayA9IGZ1bmN0aW9uIChpdCwgY3JlYXRlKSB7CiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7CiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdAogICAgaWYgKCFpc0V4dGVuc2libGUoaXQpKSByZXR1cm4gdHJ1ZTsKICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhCiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIGZhbHNlOwogICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGEKICAgIHNldE1ldGEoaXQpOwogIC8vIHJldHVybiBoYXNoIHdlYWsgY29sbGVjdGlvbnMgSURzCiAgfSByZXR1cm4gaXRbTUVUQV0udzsKfTsKLy8gYWRkIG1ldGFkYXRhIG9uIGZyZWV6ZS1mYW1pbHkgbWV0aG9kcyBjYWxsaW5nCnZhciBvbkZyZWV6ZSA9IGZ1bmN0aW9uIChpdCkgewogIGlmIChGUkVFWkUgJiYgbWV0YS5ORUVEICYmIGlzRXh0ZW5zaWJsZShpdCkgJiYgIWhhcyhpdCwgTUVUQSkpIHNldE1ldGEoaXQpOwogIHJldHVybiBpdDsKfTsKdmFyIG1ldGEgPSBtb2R1bGUuZXhwb3J0cyA9IHsKICBLRVk6IE1FVEEsCiAgTkVFRDogZmFsc2UsCiAgZmFzdEtleTogZmFzdEtleSwKICBnZXRXZWFrOiBnZXRXZWFrLAogIG9uRnJlZXplOiBvbkZyZWV6ZQp9OwoKCi8qKiovIH0pLAovKiA0MSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgY3R4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7CnZhciBjYWxsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTEpOwp2YXIgaXNBcnJheUl0ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExMik7CnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpOwp2YXIgdG9MZW5ndGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KTsKdmFyIGdldEl0ZXJGbiA9IF9fd2VicGFja19yZXF1aXJlX18oNjcpOwp2YXIgQlJFQUsgPSB7fTsKdmFyIFJFVFVSTiA9IHt9Owp2YXIgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhYmxlLCBlbnRyaWVzLCBmbiwgdGhhdCwgSVRFUkFUT1IpIHsKICB2YXIgaXRlckZuID0gSVRFUkFUT1IgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyYWJsZTsgfSA6IGdldEl0ZXJGbihpdGVyYWJsZSk7CiAgdmFyIGYgPSBjdHgoZm4sIHRoYXQsIGVudHJpZXMgPyAyIDogMSk7CiAgdmFyIGluZGV4ID0gMDsKICB2YXIgbGVuZ3RoLCBzdGVwLCBpdGVyYXRvciwgcmVzdWx0OwogIGlmICh0eXBlb2YgaXRlckZuICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdGVyYWJsZSArICcgaXMgbm90IGl0ZXJhYmxlIScpOwogIC8vIGZhc3QgY2FzZSBmb3IgYXJyYXlzIHdpdGggZGVmYXVsdCBpdGVyYXRvcgogIGlmIChpc0FycmF5SXRlcihpdGVyRm4pKSBmb3IgKGxlbmd0aCA9IHRvTGVuZ3RoKGl0ZXJhYmxlLmxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7CiAgICByZXN1bHQgPSBlbnRyaWVzID8gZihhbk9iamVjdChzdGVwID0gaXRlcmFibGVbaW5kZXhdKVswXSwgc3RlcFsxXSkgOiBmKGl0ZXJhYmxlW2luZGV4XSk7CiAgICBpZiAocmVzdWx0ID09PSBCUkVBSyB8fCByZXN1bHQgPT09IFJFVFVSTikgcmV0dXJuIHJlc3VsdDsKICB9IGVsc2UgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKGl0ZXJhYmxlKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOykgewogICAgcmVzdWx0ID0gY2FsbChpdGVyYXRvciwgZiwgc3RlcC52YWx1ZSwgZW50cmllcyk7CiAgICBpZiAocmVzdWx0ID09PSBCUkVBSyB8fCByZXN1bHQgPT09IFJFVFVSTikgcmV0dXJuIHJlc3VsdDsKICB9Cn07CmV4cG9ydHMuQlJFQUsgPSBCUkVBSzsKZXhwb3J0cy5SRVRVUk4gPSBSRVRVUk47CgoKLyoqKi8gfSksCi8qIDQyICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgp2YXIgaXNTdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzU3RyaW5nOwp2YXIgaXNOdW1iZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzTnVtYmVyOwp2YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzT2JqZWN0Owp2YXIgaXNBcnJheSA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNBcnJheTsKdmFyIExpbmVCcmVha2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3OCk7Cgp2YXIgTEVBRElORyA9IC9eKFxzKSsvZzsKdmFyIFRSQUlMSU5HID0gLyhccykrJC9nOwoKLyoqCiAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgVGV4dFRvb2xzIC0gdGV4dCBtZWFzdXJlbWVudCB1dGlsaXR5CiAqCiAqIEBjb25zdHJ1Y3RvcgogKiBAcGFyYW0ge0ZvbnRQcm92aWRlcn0gZm9udFByb3ZpZGVyCiAqLwpmdW5jdGlvbiBUZXh0VG9vbHMoZm9udFByb3ZpZGVyKSB7Cgl0aGlzLmZvbnRQcm92aWRlciA9IGZvbnRQcm92aWRlcjsKfQoKLyoqCiAqIENvbnZlcnRzIGFuIGFycmF5IG9mIHN0cmluZ3MgKG9yIGlubGluZS1kZWZpbml0aW9uLW9iamVjdHMpIGludG8gYSBjb2xsZWN0aW9uCiAqIG9mIGlubGluZXMgYW5kIGNhbGN1bGF0ZWQgbWluV2lkdGgvbWF4V2lkdGguCiAqIGFuZCB0aGVpciBtaW4vbWF4IHdpZHRocwogKiBAcGFyYW0gIHtPYmplY3R9IHRleHRBcnJheSAtIGFuIGFycmF5IG9mIGlubGluZS1kZWZpbml0aW9uLW9iamVjdHMgKG9yIHN0cmluZ3MpCiAqIEBwYXJhbSAge09iamVjdH0gc3R5bGVDb250ZXh0U3RhY2sgY3VycmVudCBzdHlsZSBzdGFjawogKiBAcmV0dXJuIHtPYmplY3R9ICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24gb2YgaW5saW5lcywgbWluV2lkdGgsIG1heFdpZHRoCiAqLwpUZXh0VG9vbHMucHJvdG90eXBlLmJ1aWxkSW5saW5lcyA9IGZ1bmN0aW9uICh0ZXh0QXJyYXksIHN0eWxlQ29udGV4dFN0YWNrKSB7Cgl2YXIgbWVhc3VyZWQgPSBtZWFzdXJlKHRoaXMuZm9udFByb3ZpZGVyLCB0ZXh0QXJyYXksIHN0eWxlQ29udGV4dFN0YWNrKTsKCgl2YXIgbWluV2lkdGggPSAwLAoJCW1heFdpZHRoID0gMCwKCQljdXJyZW50TGluZVdpZHRoOwoKCW1lYXN1cmVkLmZvckVhY2goZnVuY3Rpb24gKGlubGluZSkgewoJCW1pbldpZHRoID0gTWF0aC5tYXgobWluV2lkdGgsIGlubGluZS53aWR0aCAtIGlubGluZS5sZWFkaW5nQ3V0IC0gaW5saW5lLnRyYWlsaW5nQ3V0KTsKCgkJaWYgKCFjdXJyZW50TGluZVdpZHRoKSB7CgkJCWN1cnJlbnRMaW5lV2lkdGggPSB7d2lkdGg6IDAsIGxlYWRpbmdDdXQ6IGlubGluZS5sZWFkaW5nQ3V0LCB0cmFpbGluZ0N1dDogMH07CgkJfQoKCQljdXJyZW50TGluZVdpZHRoLndpZHRoICs9IGlubGluZS53aWR0aDsKCQljdXJyZW50TGluZVdpZHRoLnRyYWlsaW5nQ3V0ID0gaW5saW5lLnRyYWlsaW5nQ3V0OwoKCQltYXhXaWR0aCA9IE1hdGgubWF4KG1heFdpZHRoLCBnZXRUcmltbWVkV2lkdGgoY3VycmVudExpbmVXaWR0aCkpOwoKCQlpZiAoaW5saW5lLmxpbmVFbmQpIHsKCQkJY3VycmVudExpbmVXaWR0aCA9IG51bGw7CgkJfQoJfSk7CgoJaWYgKGdldFN0eWxlUHJvcGVydHkoe30sIHN0eWxlQ29udGV4dFN0YWNrLCAnbm9XcmFwJywgZmFsc2UpKSB7CgkJbWluV2lkdGggPSBtYXhXaWR0aDsKCX0KCglyZXR1cm4gewoJCWl0ZW1zOiBtZWFzdXJlZCwKCQltaW5XaWR0aDogbWluV2lkdGgsCgkJbWF4V2lkdGg6IG1heFdpZHRoCgl9OwoKCWZ1bmN0aW9uIGdldFRyaW1tZWRXaWR0aChpdGVtKSB7CgkJcmV0dXJuIE1hdGgubWF4KDAsIGl0ZW0ud2lkdGggLSBpdGVtLmxlYWRpbmdDdXQgLSBpdGVtLnRyYWlsaW5nQ3V0KTsKCX0KfTsKCi8qKgogKiBSZXR1cm5zIHNpemUgb2YgdGhlIHNwZWNpZmllZCBzdHJpbmcgKHdpdGhvdXQgYnJlYWtpbmcgaXQpIHVzaW5nIHRoZSBjdXJyZW50IHN0eWxlCiAqIEBwYXJhbSAge1N0cmluZ30gdGV4dCAgICAgICAgICAgICAgdGV4dCB0byBiZSBtZWFzdXJlZAogKiBAcGFyYW0gIHtPYmplY3R9IHN0eWxlQ29udGV4dFN0YWNrIGN1cnJlbnQgc3R5bGUgc3RhY2sKICogQHJldHVybiB7T2JqZWN0fSAgICAgICAgICAgICAgICAgICBzaXplIG9mIHRoZSBzcGVjaWZpZWQgc3RyaW5nCiAqLwpUZXh0VG9vbHMucHJvdG90eXBlLnNpemVPZlN0cmluZyA9IGZ1bmN0aW9uICh0ZXh0LCBzdHlsZUNvbnRleHRTdGFjaykgewoJdGV4dCA9IHRleHQgPyB0ZXh0LnRvU3RyaW5nKCkucmVwbGFjZSgvXHQvZywgJyAgICAnKSA6ICcnOwoKCS8vVE9ETzogcmVmYWN0b3IgLSBleHRyYWN0IGZyb20gbWVhc3VyZQoJdmFyIGZvbnROYW1lID0gZ2V0U3R5bGVQcm9wZXJ0eSh7fSwgc3R5bGVDb250ZXh0U3RhY2ssICdmb250JywgJ1JvYm90bycpOwoJdmFyIGZvbnRTaXplID0gZ2V0U3R5bGVQcm9wZXJ0eSh7fSwgc3R5bGVDb250ZXh0U3RhY2ssICdmb250U2l6ZScsIDEyKTsKCXZhciBmb250RmVhdHVyZXMgPSBnZXRTdHlsZVByb3BlcnR5KHt9LCBzdHlsZUNvbnRleHRTdGFjaywgJ2ZvbnRGZWF0dXJlcycsIG51bGwpOwoJdmFyIGJvbGQgPSBnZXRTdHlsZVByb3BlcnR5KHt9LCBzdHlsZUNvbnRleHRTdGFjaywgJ2JvbGQnLCBmYWxzZSk7Cgl2YXIgaXRhbGljcyA9IGdldFN0eWxlUHJvcGVydHkoe30sIHN0eWxlQ29udGV4dFN0YWNrLCAnaXRhbGljcycsIGZhbHNlKTsKCXZhciBsaW5lSGVpZ2h0ID0gZ2V0U3R5bGVQcm9wZXJ0eSh7fSwgc3R5bGVDb250ZXh0U3RhY2ssICdsaW5lSGVpZ2h0JywgMSk7Cgl2YXIgY2hhcmFjdGVyU3BhY2luZyA9IGdldFN0eWxlUHJvcGVydHkoe30sIHN0eWxlQ29udGV4dFN0YWNrLCAnY2hhcmFjdGVyU3BhY2luZycsIDApOwoKCXZhciBmb250ID0gdGhpcy5mb250UHJvdmlkZXIucHJvdmlkZUZvbnQoZm9udE5hbWUsIGJvbGQsIGl0YWxpY3MpOwoKCXJldHVybiB7CgkJd2lkdGg6IHdpZHRoT2ZTdHJpbmcodGV4dCwgZm9udCwgZm9udFNpemUsIGNoYXJhY3RlclNwYWNpbmcsIGZvbnRGZWF0dXJlcyksCgkJaGVpZ2h0OiBmb250LmxpbmVIZWlnaHQoZm9udFNpemUpICogbGluZUhlaWdodCwKCQlmb250U2l6ZTogZm9udFNpemUsCgkJbGluZUhlaWdodDogbGluZUhlaWdodCwKCQlhc2NlbmRlcjogZm9udC5hc2NlbmRlciAvIDEwMDAgKiBmb250U2l6ZSwKCQlkZXNjZW5kZXI6IGZvbnQuZGVzY2VuZGVyIC8gMTAwMCAqIGZvbnRTaXplCgl9Owp9OwoKVGV4dFRvb2xzLnByb3RvdHlwZS53aWR0aE9mU3RyaW5nID0gZnVuY3Rpb24gKHRleHQsIGZvbnQsIGZvbnRTaXplLCBjaGFyYWN0ZXJTcGFjaW5nLCBmb250RmVhdHVyZXMpIHsKCXJldHVybiB3aWR0aE9mU3RyaW5nKHRleHQsIGZvbnQsIGZvbnRTaXplLCBjaGFyYWN0ZXJTcGFjaW5nLCBmb250RmVhdHVyZXMpOwp9OwoKZnVuY3Rpb24gc3BsaXRXb3Jkcyh0ZXh0LCBub1dyYXApIHsKCXZhciByZXN1bHRzID0gW107Cgl0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cdC9nLCAnICAgICcpOwoKCWlmIChub1dyYXApIHsKCQlyZXN1bHRzLnB1c2goe3RleHQ6IHRleHR9KTsKCQlyZXR1cm4gcmVzdWx0czsKCX0KCgl2YXIgYnJlYWtlciA9IG5ldyBMaW5lQnJlYWtlcih0ZXh0KTsKCXZhciBsYXN0ID0gMDsKCXZhciBiazsKCgl3aGlsZSAoYmsgPSBicmVha2VyLm5leHRCcmVhaygpKSB7CgkJdmFyIHdvcmQgPSB0ZXh0LnNsaWNlKGxhc3QsIGJrLnBvc2l0aW9uKTsKCgkJaWYgKGJrLnJlcXVpcmVkIHx8IHdvcmQubWF0Y2goL1xyP1xuJHxcciQvKSkgeyAvLyBuZXcgbGluZQoJCQl3b3JkID0gd29yZC5yZXBsYWNlKC9ccj9cbiR8XHIkLywgJycpOwoJCQlyZXN1bHRzLnB1c2goe3RleHQ6IHdvcmQsIGxpbmVFbmQ6IHRydWV9KTsKCQl9IGVsc2UgewoJCQlyZXN1bHRzLnB1c2goe3RleHQ6IHdvcmR9KTsKCQl9CgoJCWxhc3QgPSBiay5wb3NpdGlvbjsKCX0KCglyZXR1cm4gcmVzdWx0czsKfQoKZnVuY3Rpb24gY29weVN0eWxlKHNvdXJjZSwgZGVzdGluYXRpb24pIHsKCWRlc3RpbmF0aW9uID0gZGVzdGluYXRpb24gfHwge307Cglzb3VyY2UgPSBzb3VyY2UgfHwge307IC8vVE9ETzogZGVmYXVsdCBzdHlsZQoKCWZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsKCQlpZiAoa2V5ICE9ICd0ZXh0JyAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkoa2V5KSkgewoJCQlkZXN0aW5hdGlvbltrZXldID0gc291cmNlW2tleV07CgkJfQoJfQoKCXJldHVybiBkZXN0aW5hdGlvbjsKfQoKZnVuY3Rpb24gbm9ybWFsaXplVGV4dEFycmF5KGFycmF5LCBzdHlsZUNvbnRleHRTdGFjaykgewoJZnVuY3Rpb24gZmxhdHRlbihhcnJheSkgewoJCXJldHVybiBhcnJheS5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cikgewoJCQl2YXIgY3VycmVudCA9IGlzQXJyYXkoY3VyLnRleHQpID8gZmxhdHRlbihjdXIudGV4dCkgOiBjdXI7CgkJCXZhciBtb3JlID0gW10uY29uY2F0KGN1cnJlbnQpLnNvbWUoQXJyYXkuaXNBcnJheSk7CgkJCXJldHVybiBwcmV2LmNvbmNhdChtb3JlID8gZmxhdHRlbihjdXJyZW50KSA6IGN1cnJlbnQpOwoJCX0sIFtdKTsKCX0KCgl2YXIgcmVzdWx0cyA9IFtdOwoKCWlmICghaXNBcnJheShhcnJheSkpIHsKCQlhcnJheSA9IFthcnJheV07Cgl9CgoJYXJyYXkgPSBmbGF0dGVuKGFycmF5KTsKCglmb3IgKHZhciBpID0gMCwgbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCXZhciBpdGVtID0gYXJyYXlbaV07CgkJdmFyIHN0eWxlID0gbnVsbDsKCQl2YXIgd29yZHM7CgoJCXZhciBub1dyYXAgPSBnZXRTdHlsZVByb3BlcnR5KGl0ZW0gfHwge30sIHN0eWxlQ29udGV4dFN0YWNrLCAnbm9XcmFwJywgZmFsc2UpOwoJCWlmIChpc09iamVjdChpdGVtKSkgewoJCQl3b3JkcyA9IHNwbGl0V29yZHMobm9ybWFsaXplU3RyaW5nKGl0ZW0udGV4dCksIG5vV3JhcCk7CgkJCXN0eWxlID0gY29weVN0eWxlKGl0ZW0pOwoJCX0gZWxzZSB7CgkJCXdvcmRzID0gc3BsaXRXb3Jkcyhub3JtYWxpemVTdHJpbmcoaXRlbSksIG5vV3JhcCk7CgkJfQoKCQlmb3IgKHZhciBpMiA9IDAsIGwyID0gd29yZHMubGVuZ3RoOyBpMiA8IGwyOyBpMisrKSB7CgkJCXZhciByZXN1bHQgPSB7CgkJCQl0ZXh0OiB3b3Jkc1tpMl0udGV4dAoJCQl9OwoKCQkJaWYgKHdvcmRzW2kyXS5saW5lRW5kKSB7CgkJCQlyZXN1bHQubGluZUVuZCA9IHRydWU7CgkJCX0KCgkJCWNvcHlTdHlsZShzdHlsZSwgcmVzdWx0KTsKCgkJCXJlc3VsdHMucHVzaChyZXN1bHQpOwoJCX0KCX0KCglyZXR1cm4gcmVzdWx0czsKfQoKZnVuY3Rpb24gbm9ybWFsaXplU3RyaW5nKHZhbHVlKSB7CglpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgewoJCXJldHVybiAnJzsKCX0gZWxzZSBpZiAoaXNOdW1iZXIodmFsdWUpKSB7CgkJcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7Cgl9IGVsc2UgaWYgKGlzU3RyaW5nKHZhbHVlKSkgewoJCXJldHVybiB2YWx1ZTsKCX0gZWxzZSB7CgkJcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7Cgl9Cn0KCmZ1bmN0aW9uIGdldFN0eWxlUHJvcGVydHkoaXRlbSwgc3R5bGVDb250ZXh0U3RhY2ssIHByb3BlcnR5LCBkZWZhdWx0VmFsdWUpIHsKCXZhciB2YWx1ZTsKCglpZiAoaXRlbVtwcm9wZXJ0eV0gIT09IHVuZGVmaW5lZCAmJiBpdGVtW3Byb3BlcnR5XSAhPT0gbnVsbCkgewoJCS8vIGl0ZW0gZGVmaW5lcyB0aGlzIHByb3BlcnR5CgkJcmV0dXJuIGl0ZW1bcHJvcGVydHldOwoJfQoKCWlmICghc3R5bGVDb250ZXh0U3RhY2spIHsKCQlyZXR1cm4gZGVmYXVsdFZhbHVlOwoJfQoKCXN0eWxlQ29udGV4dFN0YWNrLmF1dG8oaXRlbSwgZnVuY3Rpb24gKCkgewoJCXZhbHVlID0gc3R5bGVDb250ZXh0U3RhY2suZ2V0UHJvcGVydHkocHJvcGVydHkpOwoJfSk7CgoJaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHsKCQlyZXR1cm4gdmFsdWU7Cgl9IGVsc2UgewoJCXJldHVybiBkZWZhdWx0VmFsdWU7Cgl9Cn0KCmZ1bmN0aW9uIG1lYXN1cmUoZm9udFByb3ZpZGVyLCB0ZXh0QXJyYXksIHN0eWxlQ29udGV4dFN0YWNrKSB7Cgl2YXIgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVRleHRBcnJheSh0ZXh0QXJyYXksIHN0eWxlQ29udGV4dFN0YWNrKTsKCglpZiAobm9ybWFsaXplZC5sZW5ndGgpIHsKCQl2YXIgbGVhZGluZ0luZGVudCA9IGdldFN0eWxlUHJvcGVydHkobm9ybWFsaXplZFswXSwgc3R5bGVDb250ZXh0U3RhY2ssICdsZWFkaW5nSW5kZW50JywgMCk7CgoJCWlmIChsZWFkaW5nSW5kZW50KSB7CgkJCW5vcm1hbGl6ZWRbMF0ubGVhZGluZ0N1dCA9IC1sZWFkaW5nSW5kZW50OwoJCQlub3JtYWxpemVkWzBdLmxlYWRpbmdJbmRlbnQgPSBsZWFkaW5nSW5kZW50OwoJCX0KCX0KCglub3JtYWxpemVkLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKCQl2YXIgZm9udE5hbWUgPSBnZXRTdHlsZVByb3BlcnR5KGl0ZW0sIHN0eWxlQ29udGV4dFN0YWNrLCAnZm9udCcsICdSb2JvdG8nKTsKCQl2YXIgZm9udFNpemUgPSBnZXRTdHlsZVByb3BlcnR5KGl0ZW0sIHN0eWxlQ29udGV4dFN0YWNrLCAnZm9udFNpemUnLCAxMik7CgkJdmFyIGZvbnRGZWF0dXJlcyA9IGdldFN0eWxlUHJvcGVydHkoaXRlbSwgc3R5bGVDb250ZXh0U3RhY2ssICdmb250RmVhdHVyZXMnLCBudWxsKTsKCQl2YXIgYm9sZCA9IGdldFN0eWxlUHJvcGVydHkoaXRlbSwgc3R5bGVDb250ZXh0U3RhY2ssICdib2xkJywgZmFsc2UpOwoJCXZhciBpdGFsaWNzID0gZ2V0U3R5bGVQcm9wZXJ0eShpdGVtLCBzdHlsZUNvbnRleHRTdGFjaywgJ2l0YWxpY3MnLCBmYWxzZSk7CgkJdmFyIGNvbG9yID0gZ2V0U3R5bGVQcm9wZXJ0eShpdGVtLCBzdHlsZUNvbnRleHRTdGFjaywgJ2NvbG9yJywgJ2JsYWNrJyk7CgkJdmFyIGRlY29yYXRpb24gPSBnZXRTdHlsZVByb3BlcnR5KGl0ZW0sIHN0eWxlQ29udGV4dFN0YWNrLCAnZGVjb3JhdGlvbicsIG51bGwpOwoJCXZhciBkZWNvcmF0aW9uQ29sb3IgPSBnZXRTdHlsZVByb3BlcnR5KGl0ZW0sIHN0eWxlQ29udGV4dFN0YWNrLCAnZGVjb3JhdGlvbkNvbG9yJywgbnVsbCk7CgkJdmFyIGRlY29yYXRpb25TdHlsZSA9IGdldFN0eWxlUHJvcGVydHkoaXRlbSwgc3R5bGVDb250ZXh0U3RhY2ssICdkZWNvcmF0aW9uU3R5bGUnLCBudWxsKTsKCQl2YXIgYmFja2dyb3VuZCA9IGdldFN0eWxlUHJvcGVydHkoaXRlbSwgc3R5bGVDb250ZXh0U3RhY2ssICdiYWNrZ3JvdW5kJywgbnVsbCk7CgkJdmFyIGxpbmVIZWlnaHQgPSBnZXRTdHlsZVByb3BlcnR5KGl0ZW0sIHN0eWxlQ29udGV4dFN0YWNrLCAnbGluZUhlaWdodCcsIDEpOwoJCXZhciBjaGFyYWN0ZXJTcGFjaW5nID0gZ2V0U3R5bGVQcm9wZXJ0eShpdGVtLCBzdHlsZUNvbnRleHRTdGFjaywgJ2NoYXJhY3RlclNwYWNpbmcnLCAwKTsKCQl2YXIgbGluayA9IGdldFN0eWxlUHJvcGVydHkoaXRlbSwgc3R5bGVDb250ZXh0U3RhY2ssICdsaW5rJywgbnVsbCk7CgkJdmFyIGxpbmtUb1BhZ2UgPSBnZXRTdHlsZVByb3BlcnR5KGl0ZW0sIHN0eWxlQ29udGV4dFN0YWNrLCAnbGlua1RvUGFnZScsIG51bGwpOwoJCXZhciBub1dyYXAgPSBnZXRTdHlsZVByb3BlcnR5KGl0ZW0sIHN0eWxlQ29udGV4dFN0YWNrLCAnbm9XcmFwJywgbnVsbCk7CgkJdmFyIHByZXNlcnZlTGVhZGluZ1NwYWNlcyA9IGdldFN0eWxlUHJvcGVydHkoaXRlbSwgc3R5bGVDb250ZXh0U3RhY2ssICdwcmVzZXJ2ZUxlYWRpbmdTcGFjZXMnLCBmYWxzZSk7CgoJCXZhciBmb250ID0gZm9udFByb3ZpZGVyLnByb3ZpZGVGb250KGZvbnROYW1lLCBib2xkLCBpdGFsaWNzKTsKCgkJaXRlbS53aWR0aCA9IHdpZHRoT2ZTdHJpbmcoaXRlbS50ZXh0LCBmb250LCBmb250U2l6ZSwgY2hhcmFjdGVyU3BhY2luZywgZm9udEZlYXR1cmVzKTsKCQlpdGVtLmhlaWdodCA9IGZvbnQubGluZUhlaWdodChmb250U2l6ZSkgKiBsaW5lSGVpZ2h0OwoKCQl2YXIgbGVhZGluZ1NwYWNlcyA9IGl0ZW0udGV4dC5tYXRjaChMRUFESU5HKTsKCgkJaWYgKCFpdGVtLmxlYWRpbmdDdXQpIHsKCQkJaXRlbS5sZWFkaW5nQ3V0ID0gMDsKCQl9CgoJCWlmIChsZWFkaW5nU3BhY2VzICYmICFwcmVzZXJ2ZUxlYWRpbmdTcGFjZXMpIHsKCQkJaXRlbS5sZWFkaW5nQ3V0ICs9IHdpZHRoT2ZTdHJpbmcobGVhZGluZ1NwYWNlc1swXSwgZm9udCwgZm9udFNpemUsIGNoYXJhY3RlclNwYWNpbmcsIGZvbnRGZWF0dXJlcyk7CgkJfQoKCQl2YXIgdHJhaWxpbmdTcGFjZXMgPSBpdGVtLnRleHQubWF0Y2goVFJBSUxJTkcpOwoJCWlmICh0cmFpbGluZ1NwYWNlcykgewoJCQlpdGVtLnRyYWlsaW5nQ3V0ID0gd2lkdGhPZlN0cmluZyh0cmFpbGluZ1NwYWNlc1swXSwgZm9udCwgZm9udFNpemUsIGNoYXJhY3RlclNwYWNpbmcsIGZvbnRGZWF0dXJlcyk7CgkJfSBlbHNlIHsKCQkJaXRlbS50cmFpbGluZ0N1dCA9IDA7CgkJfQoKCQlpdGVtLmFsaWdubWVudCA9IGdldFN0eWxlUHJvcGVydHkoaXRlbSwgc3R5bGVDb250ZXh0U3RhY2ssICdhbGlnbm1lbnQnLCAnbGVmdCcpOwoJCWl0ZW0uZm9udCA9IGZvbnQ7CgkJaXRlbS5mb250U2l6ZSA9IGZvbnRTaXplOwoJCWl0ZW0uZm9udEZlYXR1cmVzID0gZm9udEZlYXR1cmVzOwoJCWl0ZW0uY2hhcmFjdGVyU3BhY2luZyA9IGNoYXJhY3RlclNwYWNpbmc7CgkJaXRlbS5jb2xvciA9IGNvbG9yOwoJCWl0ZW0uZGVjb3JhdGlvbiA9IGRlY29yYXRpb247CgkJaXRlbS5kZWNvcmF0aW9uQ29sb3IgPSBkZWNvcmF0aW9uQ29sb3I7CgkJaXRlbS5kZWNvcmF0aW9uU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CgkJaXRlbS5iYWNrZ3JvdW5kID0gYmFja2dyb3VuZDsKCQlpdGVtLmxpbmsgPSBsaW5rOwoJCWl0ZW0ubGlua1RvUGFnZSA9IGxpbmtUb1BhZ2U7CgkJaXRlbS5ub1dyYXAgPSBub1dyYXA7Cgl9KTsKCglyZXR1cm4gbm9ybWFsaXplZDsKfQoKZnVuY3Rpb24gd2lkdGhPZlN0cmluZyh0ZXh0LCBmb250LCBmb250U2l6ZSwgY2hhcmFjdGVyU3BhY2luZywgZm9udEZlYXR1cmVzKSB7CglyZXR1cm4gZm9udC53aWR0aE9mU3RyaW5nKHRleHQsIGZvbnRTaXplLCBmb250RmVhdHVyZXMpICsgKChjaGFyYWN0ZXJTcGFjaW5nIHx8IDApICogKHRleHQubGVuZ3RoIC0gMSkpOwp9Cgptb2R1bGUuZXhwb3J0cyA9IFRleHRUb29sczsKCgovKioqLyB9KSwKLyogNDMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjcuMQp2YXIgVW5pY29kZVRyaWUsIGluZmxhdGU7CgppbmZsYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3OSk7CgpVbmljb2RlVHJpZSA9IChmdW5jdGlvbigpIHsKICB2YXIgREFUQV9CTE9DS19MRU5HVEgsIERBVEFfR1JBTlVMQVJJVFksIERBVEFfTUFTSywgSU5ERVhfMV9PRkZTRVQsIElOREVYXzJfQkxPQ0tfTEVOR1RILCBJTkRFWF8yX0JNUF9MRU5HVEgsIElOREVYXzJfTUFTSywgSU5ERVhfU0hJRlQsIExTQ1BfSU5ERVhfMl9MRU5HVEgsIExTQ1BfSU5ERVhfMl9PRkZTRVQsIE9NSVRURURfQk1QX0lOREVYXzFfTEVOR1RILCBTSElGVF8xLCBTSElGVF8xXzIsIFNISUZUXzIsIFVURjhfMkJfSU5ERVhfMl9MRU5HVEgsIFVURjhfMkJfSU5ERVhfMl9PRkZTRVQ7CgogIFNISUZUXzEgPSA2ICsgNTsKCiAgU0hJRlRfMiA9IDU7CgogIFNISUZUXzFfMiA9IFNISUZUXzEgLSBTSElGVF8yOwoKICBPTUlUVEVEX0JNUF9JTkRFWF8xX0xFTkdUSCA9IDB4MTAwMDAgPj4gU0hJRlRfMTsKCiAgSU5ERVhfMl9CTE9DS19MRU5HVEggPSAxIDw8IFNISUZUXzFfMjsKCiAgSU5ERVhfMl9NQVNLID0gSU5ERVhfMl9CTE9DS19MRU5HVEggLSAxOwoKICBJTkRFWF9TSElGVCA9IDI7CgogIERBVEFfQkxPQ0tfTEVOR1RIID0gMSA8PCBTSElGVF8yOwoKICBEQVRBX01BU0sgPSBEQVRBX0JMT0NLX0xFTkdUSCAtIDE7CgogIExTQ1BfSU5ERVhfMl9PRkZTRVQgPSAweDEwMDAwID4+IFNISUZUXzI7CgogIExTQ1BfSU5ERVhfMl9MRU5HVEggPSAweDQwMCA+PiBTSElGVF8yOwoKICBJTkRFWF8yX0JNUF9MRU5HVEggPSBMU0NQX0lOREVYXzJfT0ZGU0VUICsgTFNDUF9JTkRFWF8yX0xFTkdUSDsKCiAgVVRGOF8yQl9JTkRFWF8yX09GRlNFVCA9IElOREVYXzJfQk1QX0xFTkdUSDsKCiAgVVRGOF8yQl9JTkRFWF8yX0xFTkdUSCA9IDB4ODAwID4+IDY7CgogIElOREVYXzFfT0ZGU0VUID0gVVRGOF8yQl9JTkRFWF8yX09GRlNFVCArIFVURjhfMkJfSU5ERVhfMl9MRU5HVEg7CgogIERBVEFfR1JBTlVMQVJJVFkgPSAxIDw8IElOREVYX1NISUZUOwoKICBmdW5jdGlvbiBVbmljb2RlVHJpZShkYXRhKSB7CiAgICB2YXIgaXNCdWZmZXIsIHVuY29tcHJlc3NlZExlbmd0aCwgdmlldzsKICAgIGlzQnVmZmVyID0gdHlwZW9mIGRhdGEucmVhZFVJbnQzMkJFID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkYXRhLnNsaWNlID09PSAnZnVuY3Rpb24nOwogICAgaWYgKGlzQnVmZmVyIHx8IGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7CiAgICAgIGlmIChpc0J1ZmZlcikgewogICAgICAgIHRoaXMuaGlnaFN0YXJ0ID0gZGF0YS5yZWFkVUludDMyQkUoMCk7CiAgICAgICAgdGhpcy5lcnJvclZhbHVlID0gZGF0YS5yZWFkVUludDMyQkUoNCk7CiAgICAgICAgdW5jb21wcmVzc2VkTGVuZ3RoID0gZGF0YS5yZWFkVUludDMyQkUoOCk7CiAgICAgICAgZGF0YSA9IGRhdGEuc2xpY2UoMTIpOwogICAgICB9IGVsc2UgewogICAgICAgIHZpZXcgPSBuZXcgRGF0YVZpZXcoZGF0YS5idWZmZXIpOwogICAgICAgIHRoaXMuaGlnaFN0YXJ0ID0gdmlldy5nZXRVaW50MzIoMCk7CiAgICAgICAgdGhpcy5lcnJvclZhbHVlID0gdmlldy5nZXRVaW50MzIoNCk7CiAgICAgICAgdW5jb21wcmVzc2VkTGVuZ3RoID0gdmlldy5nZXRVaW50MzIoOCk7CiAgICAgICAgZGF0YSA9IGRhdGEuc3ViYXJyYXkoMTIpOwogICAgICB9CiAgICAgIGRhdGEgPSBpbmZsYXRlKGRhdGEsIG5ldyBVaW50OEFycmF5KHVuY29tcHJlc3NlZExlbmd0aCkpOwogICAgICBkYXRhID0gaW5mbGF0ZShkYXRhLCBuZXcgVWludDhBcnJheSh1bmNvbXByZXNzZWRMZW5ndGgpKTsKICAgICAgdGhpcy5kYXRhID0gbmV3IFVpbnQzMkFycmF5KGRhdGEuYnVmZmVyKTsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuZGF0YSA9IGRhdGEuZGF0YSwgdGhpcy5oaWdoU3RhcnQgPSBkYXRhLmhpZ2hTdGFydCwgdGhpcy5lcnJvclZhbHVlID0gZGF0YS5lcnJvclZhbHVlOwogICAgfQogIH0KCiAgVW5pY29kZVRyaWUucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKGNvZGVQb2ludCkgewogICAgdmFyIGluZGV4OwogICAgaWYgKGNvZGVQb2ludCA8IDAgfHwgY29kZVBvaW50ID4gMHgxMGZmZmYpIHsKICAgICAgcmV0dXJuIHRoaXMuZXJyb3JWYWx1ZTsKICAgIH0KICAgIGlmIChjb2RlUG9pbnQgPCAweGQ4MDAgfHwgKGNvZGVQb2ludCA+IDB4ZGJmZiAmJiBjb2RlUG9pbnQgPD0gMHhmZmZmKSkgewogICAgICBpbmRleCA9ICh0aGlzLmRhdGFbY29kZVBvaW50ID4+IFNISUZUXzJdIDw8IElOREVYX1NISUZUKSArIChjb2RlUG9pbnQgJiBEQVRBX01BU0spOwogICAgICByZXR1cm4gdGhpcy5kYXRhW2luZGV4XTsKICAgIH0KICAgIGlmIChjb2RlUG9pbnQgPD0gMHhmZmZmKSB7CiAgICAgIGluZGV4ID0gKHRoaXMuZGF0YVtMU0NQX0lOREVYXzJfT0ZGU0VUICsgKChjb2RlUG9pbnQgLSAweGQ4MDApID4+IFNISUZUXzIpXSA8PCBJTkRFWF9TSElGVCkgKyAoY29kZVBvaW50ICYgREFUQV9NQVNLKTsKICAgICAgcmV0dXJuIHRoaXMuZGF0YVtpbmRleF07CiAgICB9CiAgICBpZiAoY29kZVBvaW50IDwgdGhpcy5oaWdoU3RhcnQpIHsKICAgICAgaW5kZXggPSB0aGlzLmRhdGFbKElOREVYXzFfT0ZGU0VUIC0gT01JVFRFRF9CTVBfSU5ERVhfMV9MRU5HVEgpICsgKGNvZGVQb2ludCA+PiBTSElGVF8xKV07CiAgICAgIGluZGV4ID0gdGhpcy5kYXRhW2luZGV4ICsgKChjb2RlUG9pbnQgPj4gU0hJRlRfMikgJiBJTkRFWF8yX01BU0spXTsKICAgICAgaW5kZXggPSAoaW5kZXggPDwgSU5ERVhfU0hJRlQpICsgKGNvZGVQb2ludCAmIERBVEFfTUFTSyk7CiAgICAgIHJldHVybiB0aGlzLmRhdGFbaW5kZXhdOwogICAgfQogICAgcmV0dXJuIHRoaXMuZGF0YVt0aGlzLmRhdGEubGVuZ3RoIC0gREFUQV9HUkFOVUxBUklUWV07CiAgfTsKCiAgcmV0dXJuIFVuaWNvZGVUcmllOwoKfSkoKTsKCm1vZHVsZS5leHBvcnRzID0gVW5pY29kZVRyaWU7CgoKLyoqKi8gfSksCi8qIDQ0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgp2YXIgaXNTdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzU3RyaW5nOwoKZnVuY3Rpb24gYnVpbGRDb2x1bW5XaWR0aHMoY29sdW1ucywgYXZhaWxhYmxlV2lkdGgpIHsKCXZhciBhdXRvQ29sdW1ucyA9IFtdLAoJCWF1dG9NaW4gPSAwLCBhdXRvTWF4ID0gMCwKCQlzdGFyQ29sdW1ucyA9IFtdLAoJCXN0YXJNYXhNaW4gPSAwLAoJCXN0YXJNYXhNYXggPSAwLAoJCWZpeGVkQ29sdW1ucyA9IFtdLAoJCWluaXRpYWxfYXZhaWxhYmxlV2lkdGggPSBhdmFpbGFibGVXaWR0aDsKCgljb2x1bW5zLmZvckVhY2goZnVuY3Rpb24gKGNvbHVtbikgewoJCWlmIChpc0F1dG9Db2x1bW4oY29sdW1uKSkgewoJCQlhdXRvQ29sdW1ucy5wdXNoKGNvbHVtbik7CgkJCWF1dG9NaW4gKz0gY29sdW1uLl9taW5XaWR0aDsKCQkJYXV0b01heCArPSBjb2x1bW4uX21heFdpZHRoOwoJCX0gZWxzZSBpZiAoaXNTdGFyQ29sdW1uKGNvbHVtbikpIHsKCQkJc3RhckNvbHVtbnMucHVzaChjb2x1bW4pOwoJCQlzdGFyTWF4TWluID0gTWF0aC5tYXgoc3Rhck1heE1pbiwgY29sdW1uLl9taW5XaWR0aCk7CgkJCXN0YXJNYXhNYXggPSBNYXRoLm1heChzdGFyTWF4TWF4LCBjb2x1bW4uX21heFdpZHRoKTsKCQl9IGVsc2UgewoJCQlmaXhlZENvbHVtbnMucHVzaChjb2x1bW4pOwoJCX0KCX0pOwoKCWZpeGVkQ29sdW1ucy5mb3JFYWNoKGZ1bmN0aW9uIChjb2wpIHsKCQkvLyB3aWR0aCBzcGVjaWZpZWQgYXMgJQoJCWlmIChpc1N0cmluZyhjb2wud2lkdGgpICYmIC9cZCslLy50ZXN0KGNvbC53aWR0aCkpIHsKCQkJY29sLndpZHRoID0gcGFyc2VGbG9hdChjb2wud2lkdGgpICogaW5pdGlhbF9hdmFpbGFibGVXaWR0aCAvIDEwMDsKCQl9CgkJaWYgKGNvbC53aWR0aCA8IChjb2wuX21pbldpZHRoKSAmJiBjb2wuZWxhc3RpY1dpZHRoKSB7CgkJCWNvbC5fY2FsY1dpZHRoID0gY29sLl9taW5XaWR0aDsKCQl9IGVsc2UgewoJCQljb2wuX2NhbGNXaWR0aCA9IGNvbC53aWR0aDsKCQl9CgoJCWF2YWlsYWJsZVdpZHRoIC09IGNvbC5fY2FsY1dpZHRoOwoJfSk7CgoJLy8gaHR0cDovL3d3dy5mcmVlc29mdC5vcmcvQ0lFL1JGQy8xOTQyLzE4Lmh0bQoJLy8gaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMi90YWJsZXMuaHRtbCN3aWR0aC1sYXlvdXQKCS8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtdGFibGVzLWFsZ29yaXRobXMvT3ZlcnZpZXcuc3JjLmh0bQoJdmFyIG1pblcgPSBhdXRvTWluICsgc3Rhck1heE1pbiAqIHN0YXJDb2x1bW5zLmxlbmd0aDsKCXZhciBtYXhXID0gYXV0b01heCArIHN0YXJNYXhNYXggKiBzdGFyQ29sdW1ucy5sZW5ndGg7CglpZiAobWluVyA+PSBhdmFpbGFibGVXaWR0aCkgewoJCS8vIGNhc2UgMSAtIHRoZXJlJ3Mgbm8gd2F5IHRvIGZpdCBhbGwgY29sdW1ucyB3aXRoaW4gYXZhaWxhYmxlIHdpZHRoCgkJLy8gdGhhdCdzIGFjdHVhbGx5IHByZXR0eSBiYWQgc2l0dWF0aW9uIHdpdGggUERGIGFzIHdlIGhhdmUgbm8gaG9yaXpvbnRhbCBzY3JvbGwKCQkvLyBubyBlYXN5IHdvcmthcm91bmQgKHVubGVzcyB3ZSBkZWNpZGUsIGluIHRoZSBmdXR1cmUsIHRvIHNwbGl0IHNpbmdsZSB3b3JkcykKCQkvLyBjdXJyZW50bHkgd2Ugc2ltcGx5IHVzZSBtaW5XaWR0aHMgZm9yIGFsbCBjb2x1bW5zCgkJYXV0b0NvbHVtbnMuZm9yRWFjaChmdW5jdGlvbiAoY29sKSB7CgkJCWNvbC5fY2FsY1dpZHRoID0gY29sLl9taW5XaWR0aDsKCQl9KTsKCgkJc3RhckNvbHVtbnMuZm9yRWFjaChmdW5jdGlvbiAoY29sKSB7CgkJCWNvbC5fY2FsY1dpZHRoID0gc3Rhck1heE1pbjsgLy8gc3Rhck1heE1pbiBhbHJlYWR5IGNvbnRhaW5zIHBhZGRpbmcKCQl9KTsKCX0gZWxzZSB7CgkJaWYgKG1heFcgPCBhdmFpbGFibGVXaWR0aCkgewoJCQkvLyBjYXNlIDIgLSB3ZSBjYW4gZml0IHJlc3Qgb2YgdGhlIHRhYmxlIHdpdGhpbiBhdmFpbGFibGUgc3BhY2UKCQkJYXV0b0NvbHVtbnMuZm9yRWFjaChmdW5jdGlvbiAoY29sKSB7CgkJCQljb2wuX2NhbGNXaWR0aCA9IGNvbC5fbWF4V2lkdGg7CgkJCQlhdmFpbGFibGVXaWR0aCAtPSBjb2wuX2NhbGNXaWR0aDsKCQkJfSk7CgkJfSBlbHNlIHsKCQkJLy8gbWF4VyBpcyB0b28gbGFyZ2UsIGJ1dCBtaW5XIGZpdHMgd2l0aGluIGF2YWlsYWJsZSB3aWR0aAoJCQl2YXIgVyA9IGF2YWlsYWJsZVdpZHRoIC0gbWluVzsKCQkJdmFyIEQgPSBtYXhXIC0gbWluVzsKCgkJCWF1dG9Db2x1bW5zLmZvckVhY2goZnVuY3Rpb24gKGNvbCkgewoJCQkJdmFyIGQgPSBjb2wuX21heFdpZHRoIC0gY29sLl9taW5XaWR0aDsKCQkJCWNvbC5fY2FsY1dpZHRoID0gY29sLl9taW5XaWR0aCArIGQgKiBXIC8gRDsKCQkJCWF2YWlsYWJsZVdpZHRoIC09IGNvbC5fY2FsY1dpZHRoOwoJCQl9KTsKCQl9CgoJCWlmIChzdGFyQ29sdW1ucy5sZW5ndGggPiAwKSB7CgkJCXZhciBzdGFyU2l6ZSA9IGF2YWlsYWJsZVdpZHRoIC8gc3RhckNvbHVtbnMubGVuZ3RoOwoKCQkJc3RhckNvbHVtbnMuZm9yRWFjaChmdW5jdGlvbiAoY29sKSB7CgkJCQljb2wuX2NhbGNXaWR0aCA9IHN0YXJTaXplOwoJCQl9KTsKCQl9Cgl9Cn0KCmZ1bmN0aW9uIGlzQXV0b0NvbHVtbihjb2x1bW4pIHsKCXJldHVybiBjb2x1bW4ud2lkdGggPT09ICdhdXRvJzsKfQoKZnVuY3Rpb24gaXNTdGFyQ29sdW1uKGNvbHVtbikgewoJcmV0dXJuIGNvbHVtbi53aWR0aCA9PT0gbnVsbCB8fCBjb2x1bW4ud2lkdGggPT09IHVuZGVmaW5lZCB8fCBjb2x1bW4ud2lkdGggPT09ICcqJyB8fCBjb2x1bW4ud2lkdGggPT09ICdzdGFyJzsKfQoKLy9UT0RPOiByZWZhY3RvciBhbmQgcmV1c2UgaW4gbWVhc3VyZVRhYmxlCmZ1bmN0aW9uIG1lYXN1cmVNaW5NYXgoY29sdW1ucykgewoJdmFyIHJlc3VsdCA9IHttaW46IDAsIG1heDogMH07CgoJdmFyIG1heFN0YXIgPSB7bWluOiAwLCBtYXg6IDB9OwoJdmFyIHN0YXJDb3VudCA9IDA7CgoJZm9yICh2YXIgaSA9IDAsIGwgPSBjb2x1bW5zLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCXZhciBjID0gY29sdW1uc1tpXTsKCgkJaWYgKGlzU3RhckNvbHVtbihjKSkgewoJCQltYXhTdGFyLm1pbiA9IE1hdGgubWF4KG1heFN0YXIubWluLCBjLl9taW5XaWR0aCk7CgkJCW1heFN0YXIubWF4ID0gTWF0aC5tYXgobWF4U3Rhci5tYXgsIGMuX21heFdpZHRoKTsKCQkJc3RhckNvdW50Kys7CgkJfSBlbHNlIGlmIChpc0F1dG9Db2x1bW4oYykpIHsKCQkJcmVzdWx0Lm1pbiArPSBjLl9taW5XaWR0aDsKCQkJcmVzdWx0Lm1heCArPSBjLl9tYXhXaWR0aDsKCQl9IGVsc2UgewoJCQlyZXN1bHQubWluICs9ICgoYy53aWR0aCAhPT0gdW5kZWZpbmVkICYmIGMud2lkdGgpIHx8IGMuX21pbldpZHRoKTsKCQkJcmVzdWx0Lm1heCArPSAoKGMud2lkdGggIT09IHVuZGVmaW5lZCAmJiBjLndpZHRoKSB8fCBjLl9tYXhXaWR0aCk7CgkJfQoJfQoKCWlmIChzdGFyQ291bnQpIHsKCQlyZXN1bHQubWluICs9IHN0YXJDb3VudCAqIG1heFN0YXIubWluOwoJCXJlc3VsdC5tYXggKz0gc3RhckNvdW50ICogbWF4U3Rhci5tYXg7Cgl9CgoJcmV0dXJuIHJlc3VsdDsKfQoKLyoqCiAqIENhbGN1bGF0ZXMgY29sdW1uIHdpZHRocwogKiBAcHJpdmF0ZQogKi8KbW9kdWxlLmV4cG9ydHMgPSB7CglidWlsZENvbHVtbldpZHRoczogYnVpbGRDb2x1bW5XaWR0aHMsCgltZWFzdXJlTWluTWF4OiBtZWFzdXJlTWluTWF4LAoJaXNBdXRvQ29sdW1uOiBpc0F1dG9Db2x1bW4sCglpc1N0YXJDb2x1bW46IGlzU3RhckNvbHVtbgp9OwoKCi8qKiovIH0pLAovKiA0NSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgzKTsKZXhwb3J0cy5TdHJlYW0gPSBleHBvcnRzOwpleHBvcnRzLlJlYWRhYmxlID0gZXhwb3J0czsKZXhwb3J0cy5Xcml0YWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDYpOwpleHBvcnRzLkR1cGxleCA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpOwpleHBvcnRzLlRyYW5zZm9ybSA9IF9fd2VicGFja19yZXF1aXJlX18oODYpOwpleHBvcnRzLlBhc3NUaHJvdWdoID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDUpOwoKCi8qKiovIH0pLAovKiA0NiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Ci8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihwcm9jZXNzLCBzZXRJbW1lZGlhdGUsIGdsb2JhbCkgey8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLgovLwovLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQovLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi8vICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAovLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0Ci8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZQovLyBmb2xsb3dpbmcgY29uZGl0aW9uczoKLy8KLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi8vCi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTgovLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SCi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUKLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KCi8vIEEgYml0IHNpbXBsZXIgdGhhbiByZWFkYWJsZSBzdHJlYW1zLgovLyBJbXBsZW1lbnQgYW4gYXN5bmMgLl93cml0ZShjaHVuaywgZW5jb2RpbmcsIGNiKSwgYW5kIGl0J2xsIGhhbmRsZSBhbGwKLy8gdGhlIGRyYWluIGV2ZW50IGVtaXNzaW9uIGFuZCBidWZmZXJpbmcuCgoKCi8qPHJlcGxhY2VtZW50PiovCgp2YXIgcHJvY2Vzc05leHRUaWNrID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMikubmV4dFRpY2s7Ci8qPC9yZXBsYWNlbWVudD4qLwoKbW9kdWxlLmV4cG9ydHMgPSBXcml0YWJsZTsKCi8qIDxyZXBsYWNlbWVudD4gKi8KZnVuY3Rpb24gV3JpdGVSZXEoY2h1bmssIGVuY29kaW5nLCBjYikgewogIHRoaXMuY2h1bmsgPSBjaHVuazsKICB0aGlzLmVuY29kaW5nID0gZW5jb2Rpbmc7CiAgdGhpcy5jYWxsYmFjayA9IGNiOwogIHRoaXMubmV4dCA9IG51bGw7Cn0KCi8vIEl0IHNlZW1zIGEgbGlua2VkIGxpc3QgYnV0IGl0IGlzIG5vdAovLyB0aGVyZSB3aWxsIGJlIG9ubHkgMiBvZiB0aGVzZSBmb3IgZWFjaCBzdHJlYW0KZnVuY3Rpb24gQ29ya2VkUmVxdWVzdChzdGF0ZSkgewogIHZhciBfdGhpcyA9IHRoaXM7CgogIHRoaXMubmV4dCA9IG51bGw7CiAgdGhpcy5lbnRyeSA9IG51bGw7CiAgdGhpcy5maW5pc2ggPSBmdW5jdGlvbiAoKSB7CiAgICBvbkNvcmtlZEZpbmlzaChfdGhpcywgc3RhdGUpOwogIH07Cn0KLyogPC9yZXBsYWNlbWVudD4gKi8KCi8qPHJlcGxhY2VtZW50PiovCnZhciBhc3luY1dyaXRlID0gIXByb2Nlc3MuYnJvd3NlciAmJiBbJ3YwLjEwJywgJ3YwLjkuJ10uaW5kZXhPZihwcm9jZXNzLnZlcnNpb24uc2xpY2UoMCwgNSkpID4gLTEgPyBzZXRJbW1lZGlhdGUgOiBwcm9jZXNzTmV4dFRpY2s7Ci8qPC9yZXBsYWNlbWVudD4qLwoKLyo8cmVwbGFjZW1lbnQ+Ki8KdmFyIER1cGxleDsKLyo8L3JlcGxhY2VtZW50PiovCgpXcml0YWJsZS5Xcml0YWJsZVN0YXRlID0gV3JpdGFibGVTdGF0ZTsKCi8qPHJlcGxhY2VtZW50PiovCnZhciB1dGlsID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNSk7CnV0aWwuaW5oZXJpdHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKTsKLyo8L3JlcGxhY2VtZW50PiovCgovKjxyZXBsYWNlbWVudD4qLwp2YXIgaW50ZXJuYWxVdGlsID0gewogIGRlcHJlY2F0ZTogX193ZWJwYWNrX3JlcXVpcmVfXygxNDQpCn07Ci8qPC9yZXBsYWNlbWVudD4qLwoKLyo8cmVwbGFjZW1lbnQ+Ki8KdmFyIFN0cmVhbSA9IF9fd2VicGFja19yZXF1aXJlX18oODQpOwovKjwvcmVwbGFjZW1lbnQ+Ki8KCi8qPHJlcGxhY2VtZW50PiovCgp2YXIgQnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMykuQnVmZmVyOwp2YXIgT3VyVWludDhBcnJheSA9IGdsb2JhbC5VaW50OEFycmF5IHx8IGZ1bmN0aW9uICgpIHt9OwpmdW5jdGlvbiBfdWludDhBcnJheVRvQnVmZmVyKGNodW5rKSB7CiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNodW5rKTsKfQpmdW5jdGlvbiBfaXNVaW50OEFycmF5KG9iaikgewogIHJldHVybiBCdWZmZXIuaXNCdWZmZXIob2JqKSB8fCBvYmogaW5zdGFuY2VvZiBPdXJVaW50OEFycmF5Owp9CgovKjwvcmVwbGFjZW1lbnQ+Ki8KCnZhciBkZXN0cm95SW1wbCA9IF9fd2VicGFja19yZXF1aXJlX18oODUpOwoKdXRpbC5pbmhlcml0cyhXcml0YWJsZSwgU3RyZWFtKTsKCmZ1bmN0aW9uIG5vcCgpIHt9CgpmdW5jdGlvbiBXcml0YWJsZVN0YXRlKG9wdGlvbnMsIHN0cmVhbSkgewogIER1cGxleCA9IER1cGxleCB8fCBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTsKCiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CgogIC8vIER1cGxleCBzdHJlYW1zIGFyZSBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZSwgYnV0IHNoYXJlCiAgLy8gdGhlIHNhbWUgb3B0aW9ucyBvYmplY3QuCiAgLy8gSG93ZXZlciwgc29tZSBjYXNlcyByZXF1aXJlIHNldHRpbmcgb3B0aW9ucyB0byBkaWZmZXJlbnQKICAvLyB2YWx1ZXMgZm9yIHRoZSByZWFkYWJsZSBhbmQgdGhlIHdyaXRhYmxlIHNpZGVzIG9mIHRoZSBkdXBsZXggc3RyZWFtLgogIC8vIFRoZXNlIG9wdGlvbnMgY2FuIGJlIHByb3ZpZGVkIHNlcGFyYXRlbHkgYXMgcmVhZGFibGVYWFggYW5kIHdyaXRhYmxlWFhYLgogIHZhciBpc0R1cGxleCA9IHN0cmVhbSBpbnN0YW5jZW9mIER1cGxleDsKCiAgLy8gb2JqZWN0IHN0cmVhbSBmbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgb3Igbm90IHRoaXMgc3RyZWFtCiAgLy8gY29udGFpbnMgYnVmZmVycyBvciBvYmplY3RzLgogIHRoaXMub2JqZWN0TW9kZSA9ICEhb3B0aW9ucy5vYmplY3RNb2RlOwoKICBpZiAoaXNEdXBsZXgpIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMub2JqZWN0TW9kZSB8fCAhIW9wdGlvbnMud3JpdGFibGVPYmplY3RNb2RlOwoKICAvLyB0aGUgcG9pbnQgYXQgd2hpY2ggd3JpdGUoKSBzdGFydHMgcmV0dXJuaW5nIGZhbHNlCiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyB0aGF0IHdlIGFsd2F5cyByZXR1cm4gZmFsc2UgaWYKICAvLyB0aGUgZW50aXJlIGJ1ZmZlciBpcyBub3QgZmx1c2hlZCBpbW1lZGlhdGVseSBvbiB3cml0ZSgpCiAgdmFyIGh3bSA9IG9wdGlvbnMuaGlnaFdhdGVyTWFyazsKICB2YXIgd3JpdGFibGVId20gPSBvcHRpb25zLndyaXRhYmxlSGlnaFdhdGVyTWFyazsKICB2YXIgZGVmYXVsdEh3bSA9IHRoaXMub2JqZWN0TW9kZSA/IDE2IDogMTYgKiAxMDI0OwoKICBpZiAoaHdtIHx8IGh3bSA9PT0gMCkgdGhpcy5oaWdoV2F0ZXJNYXJrID0gaHdtO2Vsc2UgaWYgKGlzRHVwbGV4ICYmICh3cml0YWJsZUh3bSB8fCB3cml0YWJsZUh3bSA9PT0gMCkpIHRoaXMuaGlnaFdhdGVyTWFyayA9IHdyaXRhYmxlSHdtO2Vsc2UgdGhpcy5oaWdoV2F0ZXJNYXJrID0gZGVmYXVsdEh3bTsKCiAgLy8gY2FzdCB0byBpbnRzLgogIHRoaXMuaGlnaFdhdGVyTWFyayA9IE1hdGguZmxvb3IodGhpcy5oaWdoV2F0ZXJNYXJrKTsKCiAgLy8gaWYgX2ZpbmFsIGhhcyBiZWVuIGNhbGxlZAogIHRoaXMuZmluYWxDYWxsZWQgPSBmYWxzZTsKCiAgLy8gZHJhaW4gZXZlbnQgZmxhZy4KICB0aGlzLm5lZWREcmFpbiA9IGZhbHNlOwogIC8vIGF0IHRoZSBzdGFydCBvZiBjYWxsaW5nIGVuZCgpCiAgdGhpcy5lbmRpbmcgPSBmYWxzZTsKICAvLyB3aGVuIGVuZCgpIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHJldHVybmVkCiAgdGhpcy5lbmRlZCA9IGZhbHNlOwogIC8vIHdoZW4gJ2ZpbmlzaCcgaXMgZW1pdHRlZAogIHRoaXMuZmluaXNoZWQgPSBmYWxzZTsKCiAgLy8gaGFzIGl0IGJlZW4gZGVzdHJveWVkCiAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTsKCiAgLy8gc2hvdWxkIHdlIGRlY29kZSBzdHJpbmdzIGludG8gYnVmZmVycyBiZWZvcmUgcGFzc2luZyB0byBfd3JpdGU/CiAgLy8gdGhpcyBpcyBoZXJlIHNvIHRoYXQgc29tZSBub2RlLWNvcmUgc3RyZWFtcyBjYW4gb3B0aW1pemUgc3RyaW5nCiAgLy8gaGFuZGxpbmcgYXQgYSBsb3dlciBsZXZlbC4KICB2YXIgbm9EZWNvZGUgPSBvcHRpb25zLmRlY29kZVN0cmluZ3MgPT09IGZhbHNlOwogIHRoaXMuZGVjb2RlU3RyaW5ncyA9ICFub0RlY29kZTsKCiAgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZwogIC8vIGVuY29kaW5nIGlzICdiaW5hcnknIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGlzIGNvbmZpZ3VyYWJsZS4KICAvLyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhlIHVuaXZlcnNlIHVzZXMgJ3V0ZjgnLCB0aG91Z2guCiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSBvcHRpb25zLmRlZmF1bHRFbmNvZGluZyB8fCAndXRmOCc7CgogIC8vIG5vdCBhbiBhY3R1YWwgYnVmZmVyIHdlIGtlZXAgdHJhY2sgb2YsIGJ1dCBhIG1lYXN1cmVtZW50CiAgLy8gb2YgaG93IG11Y2ggd2UncmUgd2FpdGluZyB0byBnZXQgcHVzaGVkIHRvIHNvbWUgdW5kZXJseWluZwogIC8vIHNvY2tldCBvciBmaWxlLgogIHRoaXMubGVuZ3RoID0gMDsKCiAgLy8gYSBmbGFnIHRvIHNlZSB3aGVuIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgYSB3cml0ZS4KICB0aGlzLndyaXRpbmcgPSBmYWxzZTsKCiAgLy8gd2hlbiB0cnVlIGFsbCB3cml0ZXMgd2lsbCBiZSBidWZmZXJlZCB1bnRpbCAudW5jb3JrKCkgY2FsbAogIHRoaXMuY29ya2VkID0gMDsKCiAgLy8gYSBmbGFnIHRvIGJlIGFibGUgdG8gdGVsbCBpZiB0aGUgb253cml0ZSBjYiBpcyBjYWxsZWQgaW1tZWRpYXRlbHksCiAgLy8gb3Igb24gYSBsYXRlciB0aWNrLiAgV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBhdCBmaXJzdCwgYmVjYXVzZSBhbnkKICAvLyBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCAibGF0ZXIiIHNob3VsZCBnZW5lcmFsbHkgYWxzbwogIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCB3cml0ZSBjYWxsLgogIHRoaXMuc3luYyA9IHRydWU7CgogIC8vIGEgZmxhZyB0byBrbm93IGlmIHdlJ3JlIHByb2Nlc3NpbmcgcHJldmlvdXNseSBidWZmZXJlZCBpdGVtcywgd2hpY2gKICAvLyBtYXkgY2FsbCB0aGUgX3dyaXRlKCkgY2FsbGJhY2sgaW4gdGhlIHNhbWUgdGljaywgc28gdGhhdCB3ZSBkb24ndAogIC8vIGVuZCB1cCBpbiBhbiBvdmVybGFwcGVkIG9ud3JpdGUgc2l0dWF0aW9uLgogIHRoaXMuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlOwoKICAvLyB0aGUgY2FsbGJhY2sgdGhhdCdzIHBhc3NlZCB0byBfd3JpdGUoY2h1bmssY2IpCiAgdGhpcy5vbndyaXRlID0gZnVuY3Rpb24gKGVyKSB7CiAgICBvbndyaXRlKHN0cmVhbSwgZXIpOwogIH07CgogIC8vIHRoZSBjYWxsYmFjayB0aGF0IHRoZSB1c2VyIHN1cHBsaWVzIHRvIHdyaXRlKGNodW5rLGVuY29kaW5nLGNiKQogIHRoaXMud3JpdGVjYiA9IG51bGw7CgogIC8vIHRoZSBhbW91bnQgdGhhdCBpcyBiZWluZyB3cml0dGVuIHdoZW4gX3dyaXRlIGlzIGNhbGxlZC4KICB0aGlzLndyaXRlbGVuID0gMDsKCiAgdGhpcy5idWZmZXJlZFJlcXVlc3QgPSBudWxsOwogIHRoaXMubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7CgogIC8vIG51bWJlciBvZiBwZW5kaW5nIHVzZXItc3VwcGxpZWQgd3JpdGUgY2FsbGJhY2tzCiAgLy8gdGhpcyBtdXN0IGJlIDAgYmVmb3JlICdmaW5pc2gnIGNhbiBiZSBlbWl0dGVkCiAgdGhpcy5wZW5kaW5nY2IgPSAwOwoKICAvLyBlbWl0IHByZWZpbmlzaCBpZiB0aGUgb25seSB0aGluZyB3ZSdyZSB3YWl0aW5nIGZvciBpcyBfd3JpdGUgY2JzCiAgLy8gVGhpcyBpcyByZWxldmFudCBmb3Igc3luY2hyb25vdXMgVHJhbnNmb3JtIHN0cmVhbXMKICB0aGlzLnByZWZpbmlzaGVkID0gZmFsc2U7CgogIC8vIFRydWUgaWYgdGhlIGVycm9yIHdhcyBhbHJlYWR5IGVtaXR0ZWQgYW5kIHNob3VsZCBub3QgYmUgdGhyb3duIGFnYWluCiAgdGhpcy5lcnJvckVtaXR0ZWQgPSBmYWxzZTsKCiAgLy8gY291bnQgYnVmZmVyZWQgcmVxdWVzdHMKICB0aGlzLmJ1ZmZlcmVkUmVxdWVzdENvdW50ID0gMDsKCiAgLy8gYWxsb2NhdGUgdGhlIGZpcnN0IENvcmtlZFJlcXVlc3QsIHRoZXJlIGlzIGFsd2F5cwogIC8vIG9uZSBhbGxvY2F0ZWQgYW5kIGZyZWUgdG8gdXNlLCBhbmQgd2UgbWFpbnRhaW4gYXQgbW9zdCB0d28KICB0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHRoaXMpOwp9CgpXcml0YWJsZVN0YXRlLnByb3RvdHlwZS5nZXRCdWZmZXIgPSBmdW5jdGlvbiBnZXRCdWZmZXIoKSB7CiAgdmFyIGN1cnJlbnQgPSB0aGlzLmJ1ZmZlcmVkUmVxdWVzdDsKICB2YXIgb3V0ID0gW107CiAgd2hpbGUgKGN1cnJlbnQpIHsKICAgIG91dC5wdXNoKGN1cnJlbnQpOwogICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDsKICB9CiAgcmV0dXJuIG91dDsKfTsKCihmdW5jdGlvbiAoKSB7CiAgdHJ5IHsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZVN0YXRlLnByb3RvdHlwZSwgJ2J1ZmZlcicsIHsKICAgICAgZ2V0OiBpbnRlcm5hbFV0aWwuZGVwcmVjYXRlKGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gdGhpcy5nZXRCdWZmZXIoKTsKICAgICAgfSwgJ193cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyICcgKyAnaW5zdGVhZC4nLCAnREVQMDAwMycpCiAgICB9KTsKICB9IGNhdGNoIChfKSB7fQp9KSgpOwoKLy8gVGVzdCBfd3JpdGFibGVTdGF0ZSBmb3IgaW5oZXJpdGFuY2UgdG8gYWNjb3VudCBmb3IgRHVwbGV4IHN0cmVhbXMsCi8vIHdob3NlIHByb3RvdHlwZSBjaGFpbiBvbmx5IHBvaW50cyB0byBSZWFkYWJsZS4KdmFyIHJlYWxIYXNJbnN0YW5jZTsKaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmhhc0luc3RhbmNlICYmIHR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXSA9PT0gJ2Z1bmN0aW9uJykgewogIHJlYWxIYXNJbnN0YW5jZSA9IEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZSwgU3ltYm9sLmhhc0luc3RhbmNlLCB7CiAgICB2YWx1ZTogZnVuY3Rpb24gKG9iamVjdCkgewogICAgICBpZiAocmVhbEhhc0luc3RhbmNlLmNhbGwodGhpcywgb2JqZWN0KSkgcmV0dXJuIHRydWU7CiAgICAgIGlmICh0aGlzICE9PSBXcml0YWJsZSkgcmV0dXJuIGZhbHNlOwoKICAgICAgcmV0dXJuIG9iamVjdCAmJiBvYmplY3QuX3dyaXRhYmxlU3RhdGUgaW5zdGFuY2VvZiBXcml0YWJsZVN0YXRlOwogICAgfQogIH0pOwp9IGVsc2UgewogIHJlYWxIYXNJbnN0YW5jZSA9IGZ1bmN0aW9uIChvYmplY3QpIHsKICAgIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiB0aGlzOwogIH07Cn0KCmZ1bmN0aW9uIFdyaXRhYmxlKG9wdGlvbnMpIHsKICBEdXBsZXggPSBEdXBsZXggfHwgX193ZWJwYWNrX3JlcXVpcmVfXygxNik7CgogIC8vIFdyaXRhYmxlIGN0b3IgaXMgYXBwbGllZCB0byBEdXBsZXhlcywgdG9vLgogIC8vIGByZWFsSGFzSW5zdGFuY2VgIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHVzaW5nIHBsYWluIGBpbnN0YW5jZW9mYAogIC8vIHdvdWxkIHJldHVybiBmYWxzZSwgYXMgbm8gYF93cml0YWJsZVN0YXRlYCBwcm9wZXJ0eSBpcyBhdHRhY2hlZC4KCiAgLy8gVHJ5aW5nIHRvIHVzZSB0aGUgY3VzdG9tIGBpbnN0YW5jZW9mYCBmb3IgV3JpdGFibGUgaGVyZSB3aWxsIGFsc28gYnJlYWsgdGhlCiAgLy8gTm9kZS5qcyBMYXp5VHJhbnNmb3JtIGltcGxlbWVudGF0aW9uLCB3aGljaCBoYXMgYSBub24tdHJpdmlhbCBnZXR0ZXIgZm9yCiAgLy8gYF93cml0YWJsZVN0YXRlYCB0aGF0IHdvdWxkIGxlYWQgdG8gaW5maW5pdGUgcmVjdXJzaW9uLgogIGlmICghcmVhbEhhc0luc3RhbmNlLmNhbGwoV3JpdGFibGUsIHRoaXMpICYmICEodGhpcyBpbnN0YW5jZW9mIER1cGxleCkpIHsKICAgIHJldHVybiBuZXcgV3JpdGFibGUob3B0aW9ucyk7CiAgfQoKICB0aGlzLl93cml0YWJsZVN0YXRlID0gbmV3IFdyaXRhYmxlU3RhdGUob3B0aW9ucywgdGhpcyk7CgogIC8vIGxlZ2FjeS4KICB0aGlzLndyaXRhYmxlID0gdHJ1ZTsKCiAgaWYgKG9wdGlvbnMpIHsKICAgIGlmICh0eXBlb2Ygb3B0aW9ucy53cml0ZSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fd3JpdGUgPSBvcHRpb25zLndyaXRlOwoKICAgIGlmICh0eXBlb2Ygb3B0aW9ucy53cml0ZXYgPT09ICdmdW5jdGlvbicpIHRoaXMuX3dyaXRldiA9IG9wdGlvbnMud3JpdGV2OwoKICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSB0aGlzLl9kZXN0cm95ID0gb3B0aW9ucy5kZXN0cm95OwoKICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5maW5hbCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmluYWwgPSBvcHRpb25zLmZpbmFsOwogIH0KCiAgU3RyZWFtLmNhbGwodGhpcyk7Cn0KCi8vIE90aGVyd2lzZSBwZW9wbGUgY2FuIHBpcGUgV3JpdGFibGUgc3RyZWFtcywgd2hpY2ggaXMganVzdCB3cm9uZy4KV3JpdGFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoKSB7CiAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZScpKTsKfTsKCmZ1bmN0aW9uIHdyaXRlQWZ0ZXJFbmQoc3RyZWFtLCBjYikgewogIHZhciBlciA9IG5ldyBFcnJvcignd3JpdGUgYWZ0ZXIgZW5kJyk7CiAgLy8gVE9ETzogZGVmZXIgZXJyb3IgZXZlbnRzIGNvbnNpc3RlbnRseSBldmVyeXdoZXJlLCBub3QganVzdCB0aGUgY2IKICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7CiAgcHJvY2Vzc05leHRUaWNrKGNiLCBlcik7Cn0KCi8vIENoZWNrcyB0aGF0IGEgdXNlci1zdXBwbGllZCBjaHVuayBpcyB2YWxpZCwgZXNwZWNpYWxseSBmb3IgdGhlIHBhcnRpY3VsYXIKLy8gbW9kZSB0aGUgc3RyZWFtIGlzIGluLiBDdXJyZW50bHkgdGhpcyBtZWFucyB0aGF0IGBudWxsYCBpcyBuZXZlciBhY2NlcHRlZAovLyBhbmQgdW5kZWZpbmVkL25vbi1zdHJpbmcgdmFsdWVzIGFyZSBvbmx5IGFsbG93ZWQgaW4gb2JqZWN0IG1vZGUuCmZ1bmN0aW9uIHZhbGlkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGNiKSB7CiAgdmFyIHZhbGlkID0gdHJ1ZTsKICB2YXIgZXIgPSBmYWxzZTsKCiAgaWYgKGNodW5rID09PSBudWxsKSB7CiAgICBlciA9IG5ldyBUeXBlRXJyb3IoJ01heSBub3Qgd3JpdGUgbnVsbCB2YWx1ZXMgdG8gc3RyZWFtJyk7CiAgfSBlbHNlIGlmICh0eXBlb2YgY2h1bmsgIT09ICdzdHJpbmcnICYmIGNodW5rICE9PSB1bmRlZmluZWQgJiYgIXN0YXRlLm9iamVjdE1vZGUpIHsKICAgIGVyID0gbmV3IFR5cGVFcnJvcignSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuaycpOwogIH0KICBpZiAoZXIpIHsKICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTsKICAgIHByb2Nlc3NOZXh0VGljayhjYiwgZXIpOwogICAgdmFsaWQgPSBmYWxzZTsKICB9CiAgcmV0dXJuIHZhbGlkOwp9CgpXcml0YWJsZS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikgewogIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7CiAgdmFyIHJldCA9IGZhbHNlOwogIHZhciBpc0J1ZiA9ICFzdGF0ZS5vYmplY3RNb2RlICYmIF9pc1VpbnQ4QXJyYXkoY2h1bmspOwoKICBpZiAoaXNCdWYgJiYgIUJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpIHsKICAgIGNodW5rID0gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuayk7CiAgfQoKICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7CiAgICBjYiA9IGVuY29kaW5nOwogICAgZW5jb2RpbmcgPSBudWxsOwogIH0KCiAgaWYgKGlzQnVmKSBlbmNvZGluZyA9ICdidWZmZXInO2Vsc2UgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSBzdGF0ZS5kZWZhdWx0RW5jb2Rpbmc7CgogIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIGNiID0gbm9wOwoKICBpZiAoc3RhdGUuZW5kZWQpIHdyaXRlQWZ0ZXJFbmQodGhpcywgY2IpO2Vsc2UgaWYgKGlzQnVmIHx8IHZhbGlkQ2h1bmsodGhpcywgc3RhdGUsIGNodW5rLCBjYikpIHsKICAgIHN0YXRlLnBlbmRpbmdjYisrOwogICAgcmV0ID0gd3JpdGVPckJ1ZmZlcih0aGlzLCBzdGF0ZSwgaXNCdWYsIGNodW5rLCBlbmNvZGluZywgY2IpOwogIH0KCiAgcmV0dXJuIHJldDsKfTsKCldyaXRhYmxlLnByb3RvdHlwZS5jb3JrID0gZnVuY3Rpb24gKCkgewogIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7CgogIHN0YXRlLmNvcmtlZCsrOwp9OwoKV3JpdGFibGUucHJvdG90eXBlLnVuY29yayA9IGZ1bmN0aW9uICgpIHsKICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlOwoKICBpZiAoc3RhdGUuY29ya2VkKSB7CiAgICBzdGF0ZS5jb3JrZWQtLTsKCiAgICBpZiAoIXN0YXRlLndyaXRpbmcgJiYgIXN0YXRlLmNvcmtlZCAmJiAhc3RhdGUuZmluaXNoZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSBjbGVhckJ1ZmZlcih0aGlzLCBzdGF0ZSk7CiAgfQp9OwoKV3JpdGFibGUucHJvdG90eXBlLnNldERlZmF1bHRFbmNvZGluZyA9IGZ1bmN0aW9uIHNldERlZmF1bHRFbmNvZGluZyhlbmNvZGluZykgewogIC8vIG5vZGU6OlBhcnNlRW5jb2RpbmcoKSByZXF1aXJlcyBsb3dlciBjYXNlLgogIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnKSBlbmNvZGluZyA9IGVuY29kaW5nLnRvTG93ZXJDYXNlKCk7CiAgaWYgKCEoWydoZXgnLCAndXRmOCcsICd1dGYtOCcsICdhc2NpaScsICdiaW5hcnknLCAnYmFzZTY0JywgJ3VjczInLCAndWNzLTInLCAndXRmMTZsZScsICd1dGYtMTZsZScsICdyYXcnXS5pbmRleE9mKChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpKSA+IC0xKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKTsKICB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZyA9IGVuY29kaW5nOwogIHJldHVybiB0aGlzOwp9OwoKZnVuY3Rpb24gZGVjb2RlQ2h1bmsoc3RhdGUsIGNodW5rLCBlbmNvZGluZykgewogIGlmICghc3RhdGUub2JqZWN0TW9kZSAmJiBzdGF0ZS5kZWNvZGVTdHJpbmdzICE9PSBmYWxzZSAmJiB0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7CiAgICBjaHVuayA9IEJ1ZmZlci5mcm9tKGNodW5rLCBlbmNvZGluZyk7CiAgfQogIHJldHVybiBjaHVuazsKfQoKLy8gaWYgd2UncmUgYWxyZWFkeSB3cml0aW5nIHNvbWV0aGluZywgdGhlbiBqdXN0IHB1dCB0aGlzCi8vIGluIHRoZSBxdWV1ZSwgYW5kIHdhaXQgb3VyIHR1cm4uICBPdGhlcndpc2UsIGNhbGwgX3dyaXRlCi8vIElmIHdlIHJldHVybiBmYWxzZSwgdGhlbiB3ZSBuZWVkIGEgZHJhaW4gZXZlbnQsIHNvIHNldCB0aGF0IGZsYWcuCmZ1bmN0aW9uIHdyaXRlT3JCdWZmZXIoc3RyZWFtLCBzdGF0ZSwgaXNCdWYsIGNodW5rLCBlbmNvZGluZywgY2IpIHsKICBpZiAoIWlzQnVmKSB7CiAgICB2YXIgbmV3Q2h1bmsgPSBkZWNvZGVDaHVuayhzdGF0ZSwgY2h1bmssIGVuY29kaW5nKTsKICAgIGlmIChjaHVuayAhPT0gbmV3Q2h1bmspIHsKICAgICAgaXNCdWYgPSB0cnVlOwogICAgICBlbmNvZGluZyA9ICdidWZmZXInOwogICAgICBjaHVuayA9IG5ld0NodW5rOwogICAgfQogIH0KICB2YXIgbGVuID0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7CgogIHN0YXRlLmxlbmd0aCArPSBsZW47CgogIHZhciByZXQgPSBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrOwogIC8vIHdlIG11c3QgZW5zdXJlIHRoYXQgcHJldmlvdXMgbmVlZERyYWluIHdpbGwgbm90IGJlIHJlc2V0IHRvIGZhbHNlLgogIGlmICghcmV0KSBzdGF0ZS5uZWVkRHJhaW4gPSB0cnVlOwoKICBpZiAoc3RhdGUud3JpdGluZyB8fCBzdGF0ZS5jb3JrZWQpIHsKICAgIHZhciBsYXN0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDsKICAgIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSB7CiAgICAgIGNodW5rOiBjaHVuaywKICAgICAgZW5jb2Rpbmc6IGVuY29kaW5nLAogICAgICBpc0J1ZjogaXNCdWYsCiAgICAgIGNhbGxiYWNrOiBjYiwKICAgICAgbmV4dDogbnVsbAogICAgfTsKICAgIGlmIChsYXN0KSB7CiAgICAgIGxhc3QubmV4dCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7CiAgICB9IGVsc2UgewogICAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0OwogICAgfQogICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQgKz0gMTsKICB9IGVsc2UgewogICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTsKICB9CgogIHJldHVybiByZXQ7Cn0KCmZ1bmN0aW9uIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgd3JpdGV2LCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpIHsKICBzdGF0ZS53cml0ZWxlbiA9IGxlbjsKICBzdGF0ZS53cml0ZWNiID0gY2I7CiAgc3RhdGUud3JpdGluZyA9IHRydWU7CiAgc3RhdGUuc3luYyA9IHRydWU7CiAgaWYgKHdyaXRldikgc3RyZWFtLl93cml0ZXYoY2h1bmssIHN0YXRlLm9ud3JpdGUpO2Vsc2Ugc3RyZWFtLl93cml0ZShjaHVuaywgZW5jb2RpbmcsIHN0YXRlLm9ud3JpdGUpOwogIHN0YXRlLnN5bmMgPSBmYWxzZTsKfQoKZnVuY3Rpb24gb253cml0ZUVycm9yKHN0cmVhbSwgc3RhdGUsIHN5bmMsIGVyLCBjYikgewogIC0tc3RhdGUucGVuZGluZ2NiOwoKICBpZiAoc3luYykgewogICAgLy8gZGVmZXIgdGhlIGNhbGxiYWNrIGlmIHdlIGFyZSBiZWluZyBjYWxsZWQgc3luY2hyb25vdXNseQogICAgLy8gdG8gYXZvaWQgcGlsaW5nIHVwIHRoaW5ncyBvbiB0aGUgc3RhY2sKICAgIHByb2Nlc3NOZXh0VGljayhjYiwgZXIpOwogICAgLy8gdGhpcyBjYW4gZW1pdCBmaW5pc2gsIGFuZCBpdCB3aWxsIGFsd2F5cyBoYXBwZW4KICAgIC8vIGFmdGVyIGVycm9yCiAgICBwcm9jZXNzTmV4dFRpY2soZmluaXNoTWF5YmUsIHN0cmVhbSwgc3RhdGUpOwogICAgc3RyZWFtLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7CiAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7CiAgfSBlbHNlIHsKICAgIC8vIHRoZSBjYWxsZXIgZXhwZWN0IHRoaXMgdG8gaGFwcGVuIGJlZm9yZSBpZgogICAgLy8gaXQgaXMgYXN5bmMKICAgIGNiKGVyKTsKICAgIHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlOwogICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpOwogICAgLy8gdGhpcyBjYW4gZW1pdCBmaW5pc2gsIGJ1dCBmaW5pc2ggbXVzdAogICAgLy8gYWx3YXlzIGZvbGxvdyBlcnJvcgogICAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7CiAgfQp9CgpmdW5jdGlvbiBvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpIHsKICBzdGF0ZS53cml0aW5nID0gZmFsc2U7CiAgc3RhdGUud3JpdGVjYiA9IG51bGw7CiAgc3RhdGUubGVuZ3RoIC09IHN0YXRlLndyaXRlbGVuOwogIHN0YXRlLndyaXRlbGVuID0gMDsKfQoKZnVuY3Rpb24gb253cml0ZShzdHJlYW0sIGVyKSB7CiAgdmFyIHN0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlOwogIHZhciBzeW5jID0gc3RhdGUuc3luYzsKICB2YXIgY2IgPSBzdGF0ZS53cml0ZWNiOwoKICBvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpOwoKICBpZiAoZXIpIG9ud3JpdGVFcnJvcihzdHJlYW0sIHN0YXRlLCBzeW5jLCBlciwgY2IpO2Vsc2UgewogICAgLy8gQ2hlY2sgaWYgd2UncmUgYWN0dWFsbHkgcmVhZHkgdG8gZmluaXNoLCBidXQgZG9uJ3QgZW1pdCB5ZXQKICAgIHZhciBmaW5pc2hlZCA9IG5lZWRGaW5pc2goc3RhdGUpOwoKICAgIGlmICghZmluaXNoZWQgJiYgIXN0YXRlLmNvcmtlZCAmJiAhc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QpIHsKICAgICAgY2xlYXJCdWZmZXIoc3RyZWFtLCBzdGF0ZSk7CiAgICB9CgogICAgaWYgKHN5bmMpIHsKICAgICAgLyo8cmVwbGFjZW1lbnQ+Ki8KICAgICAgYXN5bmNXcml0ZShhZnRlcldyaXRlLCBzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpOwogICAgICAvKjwvcmVwbGFjZW1lbnQ+Ki8KICAgIH0gZWxzZSB7CiAgICAgIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKTsKICAgIH0KICB9Cn0KCmZ1bmN0aW9uIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKSB7CiAgaWYgKCFmaW5pc2hlZCkgb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpOwogIHN0YXRlLnBlbmRpbmdjYi0tOwogIGNiKCk7CiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7Cn0KCi8vIE11c3QgZm9yY2UgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIG9uIG5leHRUaWNrLCBzbyB0aGF0IHdlIGRvbid0Ci8vIGVtaXQgJ2RyYWluJyBiZWZvcmUgdGhlIHdyaXRlKCkgY29uc3VtZXIgZ2V0cyB0aGUgJ2ZhbHNlJyByZXR1cm4KLy8gdmFsdWUsIGFuZCBoYXMgYSBjaGFuY2UgdG8gYXR0YWNoIGEgJ2RyYWluJyBsaXN0ZW5lci4KZnVuY3Rpb24gb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpIHsKICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLm5lZWREcmFpbikgewogICAgc3RhdGUubmVlZERyYWluID0gZmFsc2U7CiAgICBzdHJlYW0uZW1pdCgnZHJhaW4nKTsKICB9Cn0KCi8vIGlmIHRoZXJlJ3Mgc29tZXRoaW5nIGluIHRoZSBidWZmZXIgd2FpdGluZywgdGhlbiBwcm9jZXNzIGl0CmZ1bmN0aW9uIGNsZWFyQnVmZmVyKHN0cmVhbSwgc3RhdGUpIHsKICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gdHJ1ZTsKICB2YXIgZW50cnkgPSBzdGF0ZS5idWZmZXJlZFJlcXVlc3Q7CgogIGlmIChzdHJlYW0uX3dyaXRldiAmJiBlbnRyeSAmJiBlbnRyeS5uZXh0KSB7CiAgICAvLyBGYXN0IGNhc2UsIHdyaXRlIGV2ZXJ5dGhpbmcgdXNpbmcgX3dyaXRldigpCiAgICB2YXIgbCA9IHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50OwogICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheShsKTsKICAgIHZhciBob2xkZXIgPSBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWU7CiAgICBob2xkZXIuZW50cnkgPSBlbnRyeTsKCiAgICB2YXIgY291bnQgPSAwOwogICAgdmFyIGFsbEJ1ZmZlcnMgPSB0cnVlOwogICAgd2hpbGUgKGVudHJ5KSB7CiAgICAgIGJ1ZmZlcltjb3VudF0gPSBlbnRyeTsKICAgICAgaWYgKCFlbnRyeS5pc0J1ZikgYWxsQnVmZmVycyA9IGZhbHNlOwogICAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7CiAgICAgIGNvdW50ICs9IDE7CiAgICB9CiAgICBidWZmZXIuYWxsQnVmZmVycyA9IGFsbEJ1ZmZlcnM7CgogICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCB0cnVlLCBzdGF0ZS5sZW5ndGgsIGJ1ZmZlciwgJycsIGhvbGRlci5maW5pc2gpOwoKICAgIC8vIGRvV3JpdGUgaXMgYWxtb3N0IGFsd2F5cyBhc3luYywgZGVmZXIgdGhlc2UgdG8gc2F2ZSBhIGJpdCBvZiB0aW1lCiAgICAvLyBhcyB0aGUgaG90IHBhdGggZW5kcyB3aXRoIGRvV3JpdGUKICAgIHN0YXRlLnBlbmRpbmdjYisrOwogICAgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7CiAgICBpZiAoaG9sZGVyLm5leHQpIHsKICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gaG9sZGVyLm5leHQ7CiAgICAgIGhvbGRlci5uZXh0ID0gbnVsbDsKICAgIH0gZWxzZSB7CiAgICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHN0YXRlKTsKICAgIH0KICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50ID0gMDsKICB9IGVsc2UgewogICAgLy8gU2xvdyBjYXNlLCB3cml0ZSBjaHVua3Mgb25lLWJ5LW9uZQogICAgd2hpbGUgKGVudHJ5KSB7CiAgICAgIHZhciBjaHVuayA9IGVudHJ5LmNodW5rOwogICAgICB2YXIgZW5jb2RpbmcgPSBlbnRyeS5lbmNvZGluZzsKICAgICAgdmFyIGNiID0gZW50cnkuY2FsbGJhY2s7CiAgICAgIHZhciBsZW4gPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDsKCiAgICAgIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmFsc2UsIGxlbiwgY2h1bmssIGVuY29kaW5nLCBjYik7CiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDsKICAgICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQtLTsKICAgICAgLy8gaWYgd2UgZGlkbid0IGNhbGwgdGhlIG9ud3JpdGUgaW1tZWRpYXRlbHksIHRoZW4KICAgICAgLy8gaXQgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIHdhaXQgdW50aWwgaXQgZG9lcy4KICAgICAgLy8gYWxzbywgdGhhdCBtZWFucyB0aGF0IHRoZSBjaHVuayBhbmQgY2IgYXJlIGN1cnJlbnRseQogICAgICAvLyBiZWluZyBwcm9jZXNzZWQsIHNvIG1vdmUgdGhlIGJ1ZmZlciBjb3VudGVyIHBhc3QgdGhlbS4KICAgICAgaWYgKHN0YXRlLndyaXRpbmcpIHsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQoKICAgIGlmIChlbnRyeSA9PT0gbnVsbCkgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7CiAgfQoKICBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPSBlbnRyeTsKICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7Cn0KCldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikgewogIGNiKG5ldyBFcnJvcignX3dyaXRlKCkgaXMgbm90IGltcGxlbWVudGVkJykpOwp9OwoKV3JpdGFibGUucHJvdG90eXBlLl93cml0ZXYgPSBudWxsOwoKV3JpdGFibGUucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7CiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTsKCiAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2IgPSBjaHVuazsKICAgIGNodW5rID0gbnVsbDsKICAgIGVuY29kaW5nID0gbnVsbDsKICB9IGVsc2UgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2IgPSBlbmNvZGluZzsKICAgIGVuY29kaW5nID0gbnVsbDsKICB9CgogIGlmIChjaHVuayAhPT0gbnVsbCAmJiBjaHVuayAhPT0gdW5kZWZpbmVkKSB0aGlzLndyaXRlKGNodW5rLCBlbmNvZGluZyk7CgogIC8vIC5lbmQoKSBmdWxseSB1bmNvcmtzCiAgaWYgKHN0YXRlLmNvcmtlZCkgewogICAgc3RhdGUuY29ya2VkID0gMTsKICAgIHRoaXMudW5jb3JrKCk7CiAgfQoKICAvLyBpZ25vcmUgdW5uZWNlc3NhcnkgZW5kKCkgY2FsbHMuCiAgaWYgKCFzdGF0ZS5lbmRpbmcgJiYgIXN0YXRlLmZpbmlzaGVkKSBlbmRXcml0YWJsZSh0aGlzLCBzdGF0ZSwgY2IpOwp9OwoKZnVuY3Rpb24gbmVlZEZpbmlzaChzdGF0ZSkgewogIHJldHVybiBzdGF0ZS5lbmRpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9PT0gbnVsbCAmJiAhc3RhdGUuZmluaXNoZWQgJiYgIXN0YXRlLndyaXRpbmc7Cn0KZnVuY3Rpb24gY2FsbEZpbmFsKHN0cmVhbSwgc3RhdGUpIHsKICBzdHJlYW0uX2ZpbmFsKGZ1bmN0aW9uIChlcnIpIHsKICAgIHN0YXRlLnBlbmRpbmdjYi0tOwogICAgaWYgKGVycikgewogICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpOwogICAgfQogICAgc3RhdGUucHJlZmluaXNoZWQgPSB0cnVlOwogICAgc3RyZWFtLmVtaXQoJ3ByZWZpbmlzaCcpOwogICAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7CiAgfSk7Cn0KZnVuY3Rpb24gcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpIHsKICBpZiAoIXN0YXRlLnByZWZpbmlzaGVkICYmICFzdGF0ZS5maW5hbENhbGxlZCkgewogICAgaWYgKHR5cGVvZiBzdHJlYW0uX2ZpbmFsID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIHN0YXRlLnBlbmRpbmdjYisrOwogICAgICBzdGF0ZS5maW5hbENhbGxlZCA9IHRydWU7CiAgICAgIHByb2Nlc3NOZXh0VGljayhjYWxsRmluYWwsIHN0cmVhbSwgc3RhdGUpOwogICAgfSBlbHNlIHsKICAgICAgc3RhdGUucHJlZmluaXNoZWQgPSB0cnVlOwogICAgICBzdHJlYW0uZW1pdCgncHJlZmluaXNoJyk7CiAgICB9CiAgfQp9CgpmdW5jdGlvbiBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKSB7CiAgdmFyIG5lZWQgPSBuZWVkRmluaXNoKHN0YXRlKTsKICBpZiAobmVlZCkgewogICAgcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpOwogICAgaWYgKHN0YXRlLnBlbmRpbmdjYiA9PT0gMCkgewogICAgICBzdGF0ZS5maW5pc2hlZCA9IHRydWU7CiAgICAgIHN0cmVhbS5lbWl0KCdmaW5pc2gnKTsKICAgIH0KICB9CiAgcmV0dXJuIG5lZWQ7Cn0KCmZ1bmN0aW9uIGVuZFdyaXRhYmxlKHN0cmVhbSwgc3RhdGUsIGNiKSB7CiAgc3RhdGUuZW5kaW5nID0gdHJ1ZTsKICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTsKICBpZiAoY2IpIHsKICAgIGlmIChzdGF0ZS5maW5pc2hlZCkgcHJvY2Vzc05leHRUaWNrKGNiKTtlbHNlIHN0cmVhbS5vbmNlKCdmaW5pc2gnLCBjYik7CiAgfQogIHN0YXRlLmVuZGVkID0gdHJ1ZTsKICBzdHJlYW0ud3JpdGFibGUgPSBmYWxzZTsKfQoKZnVuY3Rpb24gb25Db3JrZWRGaW5pc2goY29ya1JlcSwgc3RhdGUsIGVycikgewogIHZhciBlbnRyeSA9IGNvcmtSZXEuZW50cnk7CiAgY29ya1JlcS5lbnRyeSA9IG51bGw7CiAgd2hpbGUgKGVudHJ5KSB7CiAgICB2YXIgY2IgPSBlbnRyeS5jYWxsYmFjazsKICAgIHN0YXRlLnBlbmRpbmdjYi0tOwogICAgY2IoZXJyKTsKICAgIGVudHJ5ID0gZW50cnkubmV4dDsKICB9CiAgaWYgKHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSkgewogICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlLm5leHQgPSBjb3JrUmVxOwogIH0gZWxzZSB7CiAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBjb3JrUmVxOwogIH0KfQoKT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLnByb3RvdHlwZSwgJ2Rlc3Ryb3llZCcsIHsKICBnZXQ6IGZ1bmN0aW9uICgpIHsKICAgIGlmICh0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkOwogIH0sCiAgc2V0OiBmdW5jdGlvbiAodmFsdWUpIHsKICAgIC8vIHdlIGlnbm9yZSB0aGUgdmFsdWUgaWYgdGhlIHN0cmVhbQogICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldAogICAgaWYgKCF0aGlzLl93cml0YWJsZVN0YXRlKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5CiAgICAvLyBtYW5hZ2luZyBkZXN0cm95ZWQKICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gdmFsdWU7CiAgfQp9KTsKCldyaXRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZGVzdHJveUltcGwuZGVzdHJveTsKV3JpdGFibGUucHJvdG90eXBlLl91bmRlc3Ryb3kgPSBkZXN0cm95SW1wbC51bmRlc3Ryb3k7CldyaXRhYmxlLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7CiAgdGhpcy5lbmQoKTsKICBjYihlcnIpOwp9OwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxMSksIF9fd2VicGFja19yZXF1aXJlX18oMTQyKS5zZXRJbW1lZGlhdGUsIF9fd2VicGFja19yZXF1aXJlX18oNykpKQoKLyoqKi8gfSksCi8qIDQ3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgp2YXIgQnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMykuQnVmZmVyOwoKdmFyIGlzRW5jb2RpbmcgPSBCdWZmZXIuaXNFbmNvZGluZyB8fCBmdW5jdGlvbiAoZW5jb2RpbmcpIHsKICBlbmNvZGluZyA9ICcnICsgZW5jb2Rpbmc7CiAgc3dpdGNoIChlbmNvZGluZyAmJiBlbmNvZGluZy50b0xvd2VyQ2FzZSgpKSB7CiAgICBjYXNlICdoZXgnOmNhc2UgJ3V0ZjgnOmNhc2UgJ3V0Zi04JzpjYXNlICdhc2NpaSc6Y2FzZSAnYmluYXJ5JzpjYXNlICdiYXNlNjQnOmNhc2UgJ3VjczInOmNhc2UgJ3Vjcy0yJzpjYXNlICd1dGYxNmxlJzpjYXNlICd1dGYtMTZsZSc6Y2FzZSAncmF3JzoKICAgICAgcmV0dXJuIHRydWU7CiAgICBkZWZhdWx0OgogICAgICByZXR1cm4gZmFsc2U7CiAgfQp9OwoKZnVuY3Rpb24gX25vcm1hbGl6ZUVuY29kaW5nKGVuYykgewogIGlmICghZW5jKSByZXR1cm4gJ3V0ZjgnOwogIHZhciByZXRyaWVkOwogIHdoaWxlICh0cnVlKSB7CiAgICBzd2l0Y2ggKGVuYykgewogICAgICBjYXNlICd1dGY4JzoKICAgICAgY2FzZSAndXRmLTgnOgogICAgICAgIHJldHVybiAndXRmOCc7CiAgICAgIGNhc2UgJ3VjczInOgogICAgICBjYXNlICd1Y3MtMic6CiAgICAgIGNhc2UgJ3V0ZjE2bGUnOgogICAgICBjYXNlICd1dGYtMTZsZSc6CiAgICAgICAgcmV0dXJuICd1dGYxNmxlJzsKICAgICAgY2FzZSAnbGF0aW4xJzoKICAgICAgY2FzZSAnYmluYXJ5JzoKICAgICAgICByZXR1cm4gJ2xhdGluMSc7CiAgICAgIGNhc2UgJ2Jhc2U2NCc6CiAgICAgIGNhc2UgJ2FzY2lpJzoKICAgICAgY2FzZSAnaGV4JzoKICAgICAgICByZXR1cm4gZW5jOwogICAgICBkZWZhdWx0OgogICAgICAgIGlmIChyZXRyaWVkKSByZXR1cm47IC8vIHVuZGVmaW5lZAogICAgICAgIGVuYyA9ICgnJyArIGVuYykudG9Mb3dlckNhc2UoKTsKICAgICAgICByZXRyaWVkID0gdHJ1ZTsKICAgIH0KICB9Cn07CgovLyBEbyBub3QgY2FjaGUgYEJ1ZmZlci5pc0VuY29kaW5nYCB3aGVuIGNoZWNraW5nIGVuY29kaW5nIG5hbWVzIGFzIHNvbWUKLy8gbW9kdWxlcyBtb25rZXktcGF0Y2ggaXQgdG8gc3VwcG9ydCBhZGRpdGlvbmFsIGVuY29kaW5ncwpmdW5jdGlvbiBub3JtYWxpemVFbmNvZGluZyhlbmMpIHsKICB2YXIgbmVuYyA9IF9ub3JtYWxpemVFbmNvZGluZyhlbmMpOwogIGlmICh0eXBlb2YgbmVuYyAhPT0gJ3N0cmluZycgJiYgKEJ1ZmZlci5pc0VuY29kaW5nID09PSBpc0VuY29kaW5nIHx8ICFpc0VuY29kaW5nKGVuYykpKSB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmMpOwogIHJldHVybiBuZW5jIHx8IGVuYzsKfQoKLy8gU3RyaW5nRGVjb2RlciBwcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIGVmZmljaWVudGx5IHNwbGl0dGluZyBhIHNlcmllcyBvZgovLyBidWZmZXJzIGludG8gYSBzZXJpZXMgb2YgSlMgc3RyaW5ncyB3aXRob3V0IGJyZWFraW5nIGFwYXJ0IG11bHRpLWJ5dGUKLy8gY2hhcmFjdGVycy4KZXhwb3J0cy5TdHJpbmdEZWNvZGVyID0gU3RyaW5nRGVjb2RlcjsKZnVuY3Rpb24gU3RyaW5nRGVjb2RlcihlbmNvZGluZykgewogIHRoaXMuZW5jb2RpbmcgPSBub3JtYWxpemVFbmNvZGluZyhlbmNvZGluZyk7CiAgdmFyIG5iOwogIHN3aXRjaCAodGhpcy5lbmNvZGluZykgewogICAgY2FzZSAndXRmMTZsZSc6CiAgICAgIHRoaXMudGV4dCA9IHV0ZjE2VGV4dDsKICAgICAgdGhpcy5lbmQgPSB1dGYxNkVuZDsKICAgICAgbmIgPSA0OwogICAgICBicmVhazsKICAgIGNhc2UgJ3V0ZjgnOgogICAgICB0aGlzLmZpbGxMYXN0ID0gdXRmOEZpbGxMYXN0OwogICAgICBuYiA9IDQ7CiAgICAgIGJyZWFrOwogICAgY2FzZSAnYmFzZTY0JzoKICAgICAgdGhpcy50ZXh0ID0gYmFzZTY0VGV4dDsKICAgICAgdGhpcy5lbmQgPSBiYXNlNjRFbmQ7CiAgICAgIG5iID0gMzsKICAgICAgYnJlYWs7CiAgICBkZWZhdWx0OgogICAgICB0aGlzLndyaXRlID0gc2ltcGxlV3JpdGU7CiAgICAgIHRoaXMuZW5kID0gc2ltcGxlRW5kOwogICAgICByZXR1cm47CiAgfQogIHRoaXMubGFzdE5lZWQgPSAwOwogIHRoaXMubGFzdFRvdGFsID0gMDsKICB0aGlzLmxhc3RDaGFyID0gQnVmZmVyLmFsbG9jVW5zYWZlKG5iKTsKfQoKU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoYnVmKSB7CiAgaWYgKGJ1Zi5sZW5ndGggPT09IDApIHJldHVybiAnJzsKICB2YXIgcjsKICB2YXIgaTsKICBpZiAodGhpcy5sYXN0TmVlZCkgewogICAgciA9IHRoaXMuZmlsbExhc3QoYnVmKTsKICAgIGlmIChyID09PSB1bmRlZmluZWQpIHJldHVybiAnJzsKICAgIGkgPSB0aGlzLmxhc3ROZWVkOwogICAgdGhpcy5sYXN0TmVlZCA9IDA7CiAgfSBlbHNlIHsKICAgIGkgPSAwOwogIH0KICBpZiAoaSA8IGJ1Zi5sZW5ndGgpIHJldHVybiByID8gciArIHRoaXMudGV4dChidWYsIGkpIDogdGhpcy50ZXh0KGJ1ZiwgaSk7CiAgcmV0dXJuIHIgfHwgJyc7Cn07CgpTdHJpbmdEZWNvZGVyLnByb3RvdHlwZS5lbmQgPSB1dGY4RW5kOwoKLy8gUmV0dXJucyBvbmx5IGNvbXBsZXRlIGNoYXJhY3RlcnMgaW4gYSBCdWZmZXIKU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUudGV4dCA9IHV0ZjhUZXh0OwoKLy8gQXR0ZW1wdHMgdG8gY29tcGxldGUgYSBwYXJ0aWFsIG5vbi1VVEYtOCBjaGFyYWN0ZXIgdXNpbmcgYnl0ZXMgZnJvbSBhIEJ1ZmZlcgpTdHJpbmdEZWNvZGVyLnByb3RvdHlwZS5maWxsTGFzdCA9IGZ1bmN0aW9uIChidWYpIHsKICBpZiAodGhpcy5sYXN0TmVlZCA8PSBidWYubGVuZ3RoKSB7CiAgICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQsIDAsIHRoaXMubGFzdE5lZWQpOwogICAgcmV0dXJuIHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywgMCwgdGhpcy5sYXN0VG90YWwpOwogIH0KICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQsIDAsIGJ1Zi5sZW5ndGgpOwogIHRoaXMubGFzdE5lZWQgLT0gYnVmLmxlbmd0aDsKfTsKCi8vIENoZWNrcyB0aGUgdHlwZSBvZiBhIFVURi04IGJ5dGUsIHdoZXRoZXIgaXQncyBBU0NJSSwgYSBsZWFkaW5nIGJ5dGUsIG9yIGEKLy8gY29udGludWF0aW9uIGJ5dGUuCmZ1bmN0aW9uIHV0ZjhDaGVja0J5dGUoYnl0ZSkgewogIGlmIChieXRlIDw9IDB4N0YpIHJldHVybiAwO2Vsc2UgaWYgKGJ5dGUgPj4gNSA9PT0gMHgwNikgcmV0dXJuIDI7ZWxzZSBpZiAoYnl0ZSA+PiA0ID09PSAweDBFKSByZXR1cm4gMztlbHNlIGlmIChieXRlID4+IDMgPT09IDB4MUUpIHJldHVybiA0OwogIHJldHVybiAtMTsKfQoKLy8gQ2hlY2tzIGF0IG1vc3QgMyBieXRlcyBhdCB0aGUgZW5kIG9mIGEgQnVmZmVyIGluIG9yZGVyIHRvIGRldGVjdCBhbgovLyBpbmNvbXBsZXRlIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyLiBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzICgyLCAzLCBvciA0KQovLyBuZWVkZWQgdG8gY29tcGxldGUgdGhlIFVURi04IGNoYXJhY3RlciAoaWYgYXBwbGljYWJsZSkgYXJlIHJldHVybmVkLgpmdW5jdGlvbiB1dGY4Q2hlY2tJbmNvbXBsZXRlKHNlbGYsIGJ1ZiwgaSkgewogIHZhciBqID0gYnVmLmxlbmd0aCAtIDE7CiAgaWYgKGogPCBpKSByZXR1cm4gMDsKICB2YXIgbmIgPSB1dGY4Q2hlY2tCeXRlKGJ1ZltqXSk7CiAgaWYgKG5iID49IDApIHsKICAgIGlmIChuYiA+IDApIHNlbGYubGFzdE5lZWQgPSBuYiAtIDE7CiAgICByZXR1cm4gbmI7CiAgfQogIGlmICgtLWogPCBpKSByZXR1cm4gMDsKICBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTsKICBpZiAobmIgPj0gMCkgewogICAgaWYgKG5iID4gMCkgc2VsZi5sYXN0TmVlZCA9IG5iIC0gMjsKICAgIHJldHVybiBuYjsKICB9CiAgaWYgKC0taiA8IGkpIHJldHVybiAwOwogIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pOwogIGlmIChuYiA+PSAwKSB7CiAgICBpZiAobmIgPiAwKSB7CiAgICAgIGlmIChuYiA9PT0gMikgbmIgPSAwO2Vsc2Ugc2VsZi5sYXN0TmVlZCA9IG5iIC0gMzsKICAgIH0KICAgIHJldHVybiBuYjsKICB9CiAgcmV0dXJuIDA7Cn0KCi8vIFZhbGlkYXRlcyBhcyBtYW55IGNvbnRpbnVhdGlvbiBieXRlcyBmb3IgYSBtdWx0aS1ieXRlIFVURi04IGNoYXJhY3RlciBhcwovLyBuZWVkZWQgb3IgYXJlIGF2YWlsYWJsZS4gSWYgd2Ugc2VlIGEgbm9uLWNvbnRpbnVhdGlvbiBieXRlIHdoZXJlIHdlIGV4cGVjdAovLyBvbmUsIHdlICJyZXBsYWNlIiB0aGUgdmFsaWRhdGVkIGNvbnRpbnVhdGlvbiBieXRlcyB3ZSd2ZSBzZWVuIHNvIGZhciB3aXRoCi8vIFVURi04IHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgKCdcdWZmZmQnKSwgdG8gbWF0Y2ggdjgncyBVVEYtOCBkZWNvZGluZwovLyBiZWhhdmlvci4gVGhlIGNvbnRpbnVhdGlvbiBieXRlIGNoZWNrIGlzIGluY2x1ZGVkIHRocmVlIHRpbWVzIGluIHRoZSBjYXNlCi8vIHdoZXJlIGFsbCBvZiB0aGUgY29udGludWF0aW9uIGJ5dGVzIGZvciBhIGNoYXJhY3RlciBleGlzdCBpbiB0aGUgc2FtZSBidWZmZXIuCi8vIEl0IGlzIGFsc28gZG9uZSB0aGlzIHdheSBhcyBhIHNsaWdodCBwZXJmb3JtYW5jZSBpbmNyZWFzZSBpbnN0ZWFkIG9mIHVzaW5nIGEKLy8gbG9vcC4KZnVuY3Rpb24gdXRmOENoZWNrRXh0cmFCeXRlcyhzZWxmLCBidWYsIHApIHsKICBpZiAoKGJ1ZlswXSAmIDB4QzApICE9PSAweDgwKSB7CiAgICBzZWxmLmxhc3ROZWVkID0gMDsKICAgIHJldHVybiAnXHVmZmZkJy5yZXBlYXQocCk7CiAgfQogIGlmIChzZWxmLmxhc3ROZWVkID4gMSAmJiBidWYubGVuZ3RoID4gMSkgewogICAgaWYgKChidWZbMV0gJiAweEMwKSAhPT0gMHg4MCkgewogICAgICBzZWxmLmxhc3ROZWVkID0gMTsKICAgICAgcmV0dXJuICdcdWZmZmQnLnJlcGVhdChwICsgMSk7CiAgICB9CiAgICBpZiAoc2VsZi5sYXN0TmVlZCA+IDIgJiYgYnVmLmxlbmd0aCA+IDIpIHsKICAgICAgaWYgKChidWZbMl0gJiAweEMwKSAhPT0gMHg4MCkgewogICAgICAgIHNlbGYubGFzdE5lZWQgPSAyOwogICAgICAgIHJldHVybiAnXHVmZmZkJy5yZXBlYXQocCArIDIpOwogICAgICB9CiAgICB9CiAgfQp9CgovLyBBdHRlbXB0cyB0byBjb21wbGV0ZSBhIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyIHVzaW5nIGJ5dGVzIGZyb20gYSBCdWZmZXIuCmZ1bmN0aW9uIHV0ZjhGaWxsTGFzdChidWYpIHsKICB2YXIgcCA9IHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZDsKICB2YXIgciA9IHV0ZjhDaGVja0V4dHJhQnl0ZXModGhpcywgYnVmLCBwKTsKICBpZiAociAhPT0gdW5kZWZpbmVkKSByZXR1cm4gcjsKICBpZiAodGhpcy5sYXN0TmVlZCA8PSBidWYubGVuZ3RoKSB7CiAgICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCBwLCAwLCB0aGlzLmxhc3ROZWVkKTsKICAgIHJldHVybiB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsIDAsIHRoaXMubGFzdFRvdGFsKTsKICB9CiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgcCwgMCwgYnVmLmxlbmd0aCk7CiAgdGhpcy5sYXN0TmVlZCAtPSBidWYubGVuZ3RoOwp9CgovLyBSZXR1cm5zIGFsbCBjb21wbGV0ZSBVVEYtOCBjaGFyYWN0ZXJzIGluIGEgQnVmZmVyLiBJZiB0aGUgQnVmZmVyIGVuZGVkIG9uIGEKLy8gcGFydGlhbCBjaGFyYWN0ZXIsIHRoZSBjaGFyYWN0ZXIncyBieXRlcyBhcmUgYnVmZmVyZWQgdW50aWwgdGhlIHJlcXVpcmVkCi8vIG51bWJlciBvZiBieXRlcyBhcmUgYXZhaWxhYmxlLgpmdW5jdGlvbiB1dGY4VGV4dChidWYsIGkpIHsKICB2YXIgdG90YWwgPSB1dGY4Q2hlY2tJbmNvbXBsZXRlKHRoaXMsIGJ1ZiwgaSk7CiAgaWYgKCF0aGlzLmxhc3ROZWVkKSByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGY4JywgaSk7CiAgdGhpcy5sYXN0VG90YWwgPSB0b3RhbDsKICB2YXIgZW5kID0gYnVmLmxlbmd0aCAtICh0b3RhbCAtIHRoaXMubGFzdE5lZWQpOwogIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIDAsIGVuZCk7CiAgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmOCcsIGksIGVuZCk7Cn0KCi8vIEZvciBVVEYtOCwgYSByZXBsYWNlbWVudCBjaGFyYWN0ZXIgZm9yIGVhY2ggYnVmZmVyZWQgYnl0ZSBvZiBhIChwYXJ0aWFsKQovLyBjaGFyYWN0ZXIgbmVlZHMgdG8gYmUgYWRkZWQgdG8gdGhlIG91dHB1dC4KZnVuY3Rpb24gdXRmOEVuZChidWYpIHsKICB2YXIgciA9IGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7CiAgaWYgKHRoaXMubGFzdE5lZWQpIHJldHVybiByICsgJ1x1ZmZmZCcucmVwZWF0KHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZCk7CiAgcmV0dXJuIHI7Cn0KCi8vIFVURi0xNkxFIHR5cGljYWxseSBuZWVkcyB0d28gYnl0ZXMgcGVyIGNoYXJhY3RlciwgYnV0IGV2ZW4gaWYgd2UgaGF2ZSBhbiBldmVuCi8vIG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUsIHdlIG5lZWQgdG8gY2hlY2sgaWYgd2UgZW5kIG9uIGEgbGVhZGluZy9oaWdoCi8vIHN1cnJvZ2F0ZS4gSW4gdGhhdCBjYXNlLCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBuZXh0IHR3byBieXRlcyBpbiBvcmRlciB0bwovLyBkZWNvZGUgdGhlIGxhc3QgY2hhcmFjdGVyIHByb3Blcmx5LgpmdW5jdGlvbiB1dGYxNlRleHQoYnVmLCBpKSB7CiAgaWYgKChidWYubGVuZ3RoIC0gaSkgJSAyID09PSAwKSB7CiAgICB2YXIgciA9IGJ1Zi50b1N0cmluZygndXRmMTZsZScsIGkpOwogICAgaWYgKHIpIHsKICAgICAgdmFyIGMgPSByLmNoYXJDb2RlQXQoci5sZW5ndGggLSAxKTsKICAgICAgaWYgKGMgPj0gMHhEODAwICYmIGMgPD0gMHhEQkZGKSB7CiAgICAgICAgdGhpcy5sYXN0TmVlZCA9IDI7CiAgICAgICAgdGhpcy5sYXN0VG90YWwgPSA0OwogICAgICAgIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDJdOwogICAgICAgIHRoaXMubGFzdENoYXJbMV0gPSBidWZbYnVmLmxlbmd0aCAtIDFdOwogICAgICAgIHJldHVybiByLnNsaWNlKDAsIC0xKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHI7CiAgfQogIHRoaXMubGFzdE5lZWQgPSAxOwogIHRoaXMubGFzdFRvdGFsID0gMjsKICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTsKICByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGYxNmxlJywgaSwgYnVmLmxlbmd0aCAtIDEpOwp9CgovLyBGb3IgVVRGLTE2TEUgd2UgZG8gbm90IGV4cGxpY2l0bHkgYXBwZW5kIHNwZWNpYWwgcmVwbGFjZW1lbnQgY2hhcmFjdGVycyBpZiB3ZQovLyBlbmQgb24gYSBwYXJ0aWFsIGNoYXJhY3Rlciwgd2Ugc2ltcGx5IGxldCB2OCBoYW5kbGUgdGhhdC4KZnVuY3Rpb24gdXRmMTZFbmQoYnVmKSB7CiAgdmFyIHIgPSBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnOwogIGlmICh0aGlzLmxhc3ROZWVkKSB7CiAgICB2YXIgZW5kID0gdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkOwogICAgcmV0dXJuIHIgKyB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCd1dGYxNmxlJywgMCwgZW5kKTsKICB9CiAgcmV0dXJuIHI7Cn0KCmZ1bmN0aW9uIGJhc2U2NFRleHQoYnVmLCBpKSB7CiAgdmFyIG4gPSAoYnVmLmxlbmd0aCAtIGkpICUgMzsKICBpZiAobiA9PT0gMCkgcmV0dXJuIGJ1Zi50b1N0cmluZygnYmFzZTY0JywgaSk7CiAgdGhpcy5sYXN0TmVlZCA9IDMgLSBuOwogIHRoaXMubGFzdFRvdGFsID0gMzsKICBpZiAobiA9PT0gMSkgewogICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07CiAgfSBlbHNlIHsKICAgIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDJdOwogICAgdGhpcy5sYXN0Q2hhclsxXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07CiAgfQogIHJldHVybiBidWYudG9TdHJpbmcoJ2Jhc2U2NCcsIGksIGJ1Zi5sZW5ndGggLSBuKTsKfQoKZnVuY3Rpb24gYmFzZTY0RW5kKGJ1ZikgewogIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJzsKICBpZiAodGhpcy5sYXN0TmVlZCkgcmV0dXJuIHIgKyB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCdiYXNlNjQnLCAwLCAzIC0gdGhpcy5sYXN0TmVlZCk7CiAgcmV0dXJuIHI7Cn0KCi8vIFBhc3MgYnl0ZXMgb24gdGhyb3VnaCBmb3Igc2luZ2xlLWJ5dGUgZW5jb2RpbmdzIChlLmcuIGFzY2lpLCBsYXRpbjEsIGhleCkKZnVuY3Rpb24gc2ltcGxlV3JpdGUoYnVmKSB7CiAgcmV0dXJuIGJ1Zi50b1N0cmluZyh0aGlzLmVuY29kaW5nKTsKfQoKZnVuY3Rpb24gc2ltcGxlRW5kKGJ1ZikgewogIHJldHVybiBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnOwp9CgovKioqLyB9KSwKLyogNDggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24ocHJvY2VzcykgewoKdmFyIEJ1ZmZlciA9IF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyOwp2YXIgVHJhbnNmb3JtID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSkuVHJhbnNmb3JtOwp2YXIgYmluZGluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTUwKTsKdmFyIHV0aWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ5KTsKdmFyIGFzc2VydCA9IF9fd2VicGFja19yZXF1aXJlX18oODgpLm9rOwp2YXIga01heExlbmd0aCA9IF9fd2VicGFja19yZXF1aXJlX18oMSkua01heExlbmd0aDsKdmFyIGtSYW5nZUVycm9yTWVzc2FnZSA9ICdDYW5ub3QgY3JlYXRlIGZpbmFsIEJ1ZmZlci4gSXQgd291bGQgYmUgbGFyZ2VyICcgKyAndGhhbiAweCcgKyBrTWF4TGVuZ3RoLnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnOwoKLy8gemxpYiBkb2Vzbid0IHByb3ZpZGUgdGhlc2UsIHNvIGtsdWRnZSB0aGVtIGluIGZvbGxvd2luZyB0aGUgc2FtZQovLyBjb25zdCBuYW1pbmcgc2NoZW1lIHpsaWIgdXNlcy4KYmluZGluZy5aX01JTl9XSU5ET1dCSVRTID0gODsKYmluZGluZy5aX01BWF9XSU5ET1dCSVRTID0gMTU7CmJpbmRpbmcuWl9ERUZBVUxUX1dJTkRPV0JJVFMgPSAxNTsKCi8vIGZld2VyIHRoYW4gNjQgYnl0ZXMgcGVyIGNodW5rIGlzIHN0dXBpZC4KLy8gdGVjaG5pY2FsbHkgaXQgY291bGQgd29yayB3aXRoIGFzIGZldyBhcyA4LCBidXQgZXZlbiA2NCBieXRlcwovLyBpcyBhYnN1cmRseSBsb3cuICBVc3VhbGx5IGEgTUIgb3IgbW9yZSBpcyBiZXN0LgpiaW5kaW5nLlpfTUlOX0NIVU5LID0gNjQ7CmJpbmRpbmcuWl9NQVhfQ0hVTksgPSBJbmZpbml0eTsKYmluZGluZy5aX0RFRkFVTFRfQ0hVTksgPSAxNiAqIDEwMjQ7CgpiaW5kaW5nLlpfTUlOX01FTUxFVkVMID0gMTsKYmluZGluZy5aX01BWF9NRU1MRVZFTCA9IDk7CmJpbmRpbmcuWl9ERUZBVUxUX01FTUxFVkVMID0gODsKCmJpbmRpbmcuWl9NSU5fTEVWRUwgPSAtMTsKYmluZGluZy5aX01BWF9MRVZFTCA9IDk7CmJpbmRpbmcuWl9ERUZBVUxUX0xFVkVMID0gYmluZGluZy5aX0RFRkFVTFRfQ09NUFJFU1NJT047CgovLyBleHBvc2UgYWxsIHRoZSB6bGliIGNvbnN0YW50cwp2YXIgYmtleXMgPSBPYmplY3Qua2V5cyhiaW5kaW5nKTsKZm9yICh2YXIgYmsgPSAwOyBiayA8IGJrZXlzLmxlbmd0aDsgYmsrKykgewogIHZhciBia2V5ID0gYmtleXNbYmtdOwogIGlmIChia2V5Lm1hdGNoKC9eWi8pKSB7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgYmtleSwgewogICAgICBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogYmluZGluZ1tia2V5XSwgd3JpdGFibGU6IGZhbHNlCiAgICB9KTsKICB9Cn0KCi8vIHRyYW5zbGF0aW9uIHRhYmxlIGZvciByZXR1cm4gY29kZXMuCnZhciBjb2RlcyA9IHsKICBaX09LOiBiaW5kaW5nLlpfT0ssCiAgWl9TVFJFQU1fRU5EOiBiaW5kaW5nLlpfU1RSRUFNX0VORCwKICBaX05FRURfRElDVDogYmluZGluZy5aX05FRURfRElDVCwKICBaX0VSUk5POiBiaW5kaW5nLlpfRVJSTk8sCiAgWl9TVFJFQU1fRVJST1I6IGJpbmRpbmcuWl9TVFJFQU1fRVJST1IsCiAgWl9EQVRBX0VSUk9SOiBiaW5kaW5nLlpfREFUQV9FUlJPUiwKICBaX01FTV9FUlJPUjogYmluZGluZy5aX01FTV9FUlJPUiwKICBaX0JVRl9FUlJPUjogYmluZGluZy5aX0JVRl9FUlJPUiwKICBaX1ZFUlNJT05fRVJST1I6IGJpbmRpbmcuWl9WRVJTSU9OX0VSUk9SCn07Cgp2YXIgY2tleXMgPSBPYmplY3Qua2V5cyhjb2Rlcyk7CmZvciAodmFyIGNrID0gMDsgY2sgPCBja2V5cy5sZW5ndGg7IGNrKyspIHsKICB2YXIgY2tleSA9IGNrZXlzW2NrXTsKICBjb2Rlc1tjb2Rlc1tja2V5XV0gPSBja2V5Owp9CgpPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ2NvZGVzJywgewogIGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiBPYmplY3QuZnJlZXplKGNvZGVzKSwgd3JpdGFibGU6IGZhbHNlCn0pOwoKZXhwb3J0cy5EZWZsYXRlID0gRGVmbGF0ZTsKZXhwb3J0cy5JbmZsYXRlID0gSW5mbGF0ZTsKZXhwb3J0cy5HemlwID0gR3ppcDsKZXhwb3J0cy5HdW56aXAgPSBHdW56aXA7CmV4cG9ydHMuRGVmbGF0ZVJhdyA9IERlZmxhdGVSYXc7CmV4cG9ydHMuSW5mbGF0ZVJhdyA9IEluZmxhdGVSYXc7CmV4cG9ydHMuVW56aXAgPSBVbnppcDsKCmV4cG9ydHMuY3JlYXRlRGVmbGF0ZSA9IGZ1bmN0aW9uIChvKSB7CiAgcmV0dXJuIG5ldyBEZWZsYXRlKG8pOwp9OwoKZXhwb3J0cy5jcmVhdGVJbmZsYXRlID0gZnVuY3Rpb24gKG8pIHsKICByZXR1cm4gbmV3IEluZmxhdGUobyk7Cn07CgpleHBvcnRzLmNyZWF0ZURlZmxhdGVSYXcgPSBmdW5jdGlvbiAobykgewogIHJldHVybiBuZXcgRGVmbGF0ZVJhdyhvKTsKfTsKCmV4cG9ydHMuY3JlYXRlSW5mbGF0ZVJhdyA9IGZ1bmN0aW9uIChvKSB7CiAgcmV0dXJuIG5ldyBJbmZsYXRlUmF3KG8pOwp9OwoKZXhwb3J0cy5jcmVhdGVHemlwID0gZnVuY3Rpb24gKG8pIHsKICByZXR1cm4gbmV3IEd6aXAobyk7Cn07CgpleHBvcnRzLmNyZWF0ZUd1bnppcCA9IGZ1bmN0aW9uIChvKSB7CiAgcmV0dXJuIG5ldyBHdW56aXAobyk7Cn07CgpleHBvcnRzLmNyZWF0ZVVuemlwID0gZnVuY3Rpb24gKG8pIHsKICByZXR1cm4gbmV3IFVuemlwKG8pOwp9OwoKLy8gQ29udmVuaWVuY2UgbWV0aG9kcy4KLy8gY29tcHJlc3MvZGVjb21wcmVzcyBhIHN0cmluZyBvciBidWZmZXIgaW4gb25lIHN0ZXAuCmV4cG9ydHMuZGVmbGF0ZSA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMsIGNhbGxiYWNrKSB7CiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7CiAgICBjYWxsYmFjayA9IG9wdHM7CiAgICBvcHRzID0ge307CiAgfQogIHJldHVybiB6bGliQnVmZmVyKG5ldyBEZWZsYXRlKG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTsKfTsKCmV4cG9ydHMuZGVmbGF0ZVN5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7CiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBEZWZsYXRlKG9wdHMpLCBidWZmZXIpOwp9OwoKZXhwb3J0cy5nemlwID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cywgY2FsbGJhY2spIHsKICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHsKICAgIGNhbGxiYWNrID0gb3B0czsKICAgIG9wdHMgPSB7fTsKICB9CiAgcmV0dXJuIHpsaWJCdWZmZXIobmV3IEd6aXAob3B0cyksIGJ1ZmZlciwgY2FsbGJhY2spOwp9OwoKZXhwb3J0cy5nemlwU3luYyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMpIHsKICByZXR1cm4gemxpYkJ1ZmZlclN5bmMobmV3IEd6aXAob3B0cyksIGJ1ZmZlcik7Cn07CgpleHBvcnRzLmRlZmxhdGVSYXcgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzLCBjYWxsYmFjaykgewogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2FsbGJhY2sgPSBvcHRzOwogICAgb3B0cyA9IHt9OwogIH0KICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgRGVmbGF0ZVJhdyhvcHRzKSwgYnVmZmVyLCBjYWxsYmFjayk7Cn07CgpleHBvcnRzLmRlZmxhdGVSYXdTeW5jID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cykgewogIHJldHVybiB6bGliQnVmZmVyU3luYyhuZXcgRGVmbGF0ZVJhdyhvcHRzKSwgYnVmZmVyKTsKfTsKCmV4cG9ydHMudW56aXAgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzLCBjYWxsYmFjaykgewogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2FsbGJhY2sgPSBvcHRzOwogICAgb3B0cyA9IHt9OwogIH0KICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgVW56aXAob3B0cyksIGJ1ZmZlciwgY2FsbGJhY2spOwp9OwoKZXhwb3J0cy51bnppcFN5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7CiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBVbnppcChvcHRzKSwgYnVmZmVyKTsKfTsKCmV4cG9ydHMuaW5mbGF0ZSA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMsIGNhbGxiYWNrKSB7CiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7CiAgICBjYWxsYmFjayA9IG9wdHM7CiAgICBvcHRzID0ge307CiAgfQogIHJldHVybiB6bGliQnVmZmVyKG5ldyBJbmZsYXRlKG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTsKfTsKCmV4cG9ydHMuaW5mbGF0ZVN5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7CiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBJbmZsYXRlKG9wdHMpLCBidWZmZXIpOwp9OwoKZXhwb3J0cy5ndW56aXAgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzLCBjYWxsYmFjaykgewogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2FsbGJhY2sgPSBvcHRzOwogICAgb3B0cyA9IHt9OwogIH0KICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgR3VuemlwKG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTsKfTsKCmV4cG9ydHMuZ3VuemlwU3luYyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMpIHsKICByZXR1cm4gemxpYkJ1ZmZlclN5bmMobmV3IEd1bnppcChvcHRzKSwgYnVmZmVyKTsKfTsKCmV4cG9ydHMuaW5mbGF0ZVJhdyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMsIGNhbGxiYWNrKSB7CiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7CiAgICBjYWxsYmFjayA9IG9wdHM7CiAgICBvcHRzID0ge307CiAgfQogIHJldHVybiB6bGliQnVmZmVyKG5ldyBJbmZsYXRlUmF3KG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTsKfTsKCmV4cG9ydHMuaW5mbGF0ZVJhd1N5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7CiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBJbmZsYXRlUmF3KG9wdHMpLCBidWZmZXIpOwp9OwoKZnVuY3Rpb24gemxpYkJ1ZmZlcihlbmdpbmUsIGJ1ZmZlciwgY2FsbGJhY2spIHsKICB2YXIgYnVmZmVycyA9IFtdOwogIHZhciBucmVhZCA9IDA7CgogIGVuZ2luZS5vbignZXJyb3InLCBvbkVycm9yKTsKICBlbmdpbmUub24oJ2VuZCcsIG9uRW5kKTsKCiAgZW5naW5lLmVuZChidWZmZXIpOwogIGZsb3coKTsKCiAgZnVuY3Rpb24gZmxvdygpIHsKICAgIHZhciBjaHVuazsKICAgIHdoaWxlIChudWxsICE9PSAoY2h1bmsgPSBlbmdpbmUucmVhZCgpKSkgewogICAgICBidWZmZXJzLnB1c2goY2h1bmspOwogICAgICBucmVhZCArPSBjaHVuay5sZW5ndGg7CiAgICB9CiAgICBlbmdpbmUub25jZSgncmVhZGFibGUnLCBmbG93KTsKICB9CgogIGZ1bmN0aW9uIG9uRXJyb3IoZXJyKSB7CiAgICBlbmdpbmUucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uRW5kKTsKICAgIGVuZ2luZS5yZW1vdmVMaXN0ZW5lcigncmVhZGFibGUnLCBmbG93KTsKICAgIGNhbGxiYWNrKGVycik7CiAgfQoKICBmdW5jdGlvbiBvbkVuZCgpIHsKICAgIHZhciBidWY7CiAgICB2YXIgZXJyID0gbnVsbDsKCiAgICBpZiAobnJlYWQgPj0ga01heExlbmd0aCkgewogICAgICBlcnIgPSBuZXcgUmFuZ2VFcnJvcihrUmFuZ2VFcnJvck1lc3NhZ2UpOwogICAgfSBlbHNlIHsKICAgICAgYnVmID0gQnVmZmVyLmNvbmNhdChidWZmZXJzLCBucmVhZCk7CiAgICB9CgogICAgYnVmZmVycyA9IFtdOwogICAgZW5naW5lLmNsb3NlKCk7CiAgICBjYWxsYmFjayhlcnIsIGJ1Zik7CiAgfQp9CgpmdW5jdGlvbiB6bGliQnVmZmVyU3luYyhlbmdpbmUsIGJ1ZmZlcikgewogIGlmICh0eXBlb2YgYnVmZmVyID09PSAnc3RyaW5nJykgYnVmZmVyID0gQnVmZmVyLmZyb20oYnVmZmVyKTsKCiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmZmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignTm90IGEgc3RyaW5nIG9yIGJ1ZmZlcicpOwoKICB2YXIgZmx1c2hGbGFnID0gZW5naW5lLl9maW5pc2hGbHVzaEZsYWc7CgogIHJldHVybiBlbmdpbmUuX3Byb2Nlc3NDaHVuayhidWZmZXIsIGZsdXNoRmxhZyk7Cn0KCi8vIGdlbmVyaWMgemxpYgovLyBtaW5pbWFsIDItYnl0ZSBoZWFkZXIKZnVuY3Rpb24gRGVmbGF0ZShvcHRzKSB7CiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERlZmxhdGUpKSByZXR1cm4gbmV3IERlZmxhdGUob3B0cyk7CiAgWmxpYi5jYWxsKHRoaXMsIG9wdHMsIGJpbmRpbmcuREVGTEFURSk7Cn0KCmZ1bmN0aW9uIEluZmxhdGUob3B0cykgewogIGlmICghKHRoaXMgaW5zdGFuY2VvZiBJbmZsYXRlKSkgcmV0dXJuIG5ldyBJbmZsYXRlKG9wdHMpOwogIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLklORkxBVEUpOwp9CgovLyBnemlwIC0gYmlnZ2VyIGhlYWRlciwgc2FtZSBkZWZsYXRlIGNvbXByZXNzaW9uCmZ1bmN0aW9uIEd6aXAob3B0cykgewogIGlmICghKHRoaXMgaW5zdGFuY2VvZiBHemlwKSkgcmV0dXJuIG5ldyBHemlwKG9wdHMpOwogIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLkdaSVApOwp9CgpmdW5jdGlvbiBHdW56aXAob3B0cykgewogIGlmICghKHRoaXMgaW5zdGFuY2VvZiBHdW56aXApKSByZXR1cm4gbmV3IEd1bnppcChvcHRzKTsKICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5HVU5aSVApOwp9CgovLyByYXcgLSBubyBoZWFkZXIKZnVuY3Rpb24gRGVmbGF0ZVJhdyhvcHRzKSB7CiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERlZmxhdGVSYXcpKSByZXR1cm4gbmV3IERlZmxhdGVSYXcob3B0cyk7CiAgWmxpYi5jYWxsKHRoaXMsIG9wdHMsIGJpbmRpbmcuREVGTEFURVJBVyk7Cn0KCmZ1bmN0aW9uIEluZmxhdGVSYXcob3B0cykgewogIGlmICghKHRoaXMgaW5zdGFuY2VvZiBJbmZsYXRlUmF3KSkgcmV0dXJuIG5ldyBJbmZsYXRlUmF3KG9wdHMpOwogIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLklORkxBVEVSQVcpOwp9CgovLyBhdXRvLWRldGVjdCBoZWFkZXIuCmZ1bmN0aW9uIFVuemlwKG9wdHMpIHsKICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVW56aXApKSByZXR1cm4gbmV3IFVuemlwKG9wdHMpOwogIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLlVOWklQKTsKfQoKZnVuY3Rpb24gaXNWYWxpZEZsdXNoRmxhZyhmbGFnKSB7CiAgcmV0dXJuIGZsYWcgPT09IGJpbmRpbmcuWl9OT19GTFVTSCB8fCBmbGFnID09PSBiaW5kaW5nLlpfUEFSVElBTF9GTFVTSCB8fCBmbGFnID09PSBiaW5kaW5nLlpfU1lOQ19GTFVTSCB8fCBmbGFnID09PSBiaW5kaW5nLlpfRlVMTF9GTFVTSCB8fCBmbGFnID09PSBiaW5kaW5nLlpfRklOSVNIIHx8IGZsYWcgPT09IGJpbmRpbmcuWl9CTE9DSzsKfQoKLy8gdGhlIFpsaWIgY2xhc3MgdGhleSBhbGwgaW5oZXJpdCBmcm9tCi8vIFRoaXMgdGhpbmcgbWFuYWdlcyB0aGUgcXVldWUgb2YgcmVxdWVzdHMsIGFuZCByZXR1cm5zCi8vIHRydWUgb3IgZmFsc2UgaWYgdGhlcmUgaXMgYW55dGhpbmcgaW4gdGhlIHF1ZXVlIHdoZW4KLy8geW91IGNhbGwgdGhlIC53cml0ZSgpIG1ldGhvZC4KCmZ1bmN0aW9uIFpsaWIob3B0cywgbW9kZSkgewogIHZhciBfdGhpcyA9IHRoaXM7CgogIHRoaXMuX29wdHMgPSBvcHRzID0gb3B0cyB8fCB7fTsKICB0aGlzLl9jaHVua1NpemUgPSBvcHRzLmNodW5rU2l6ZSB8fCBleHBvcnRzLlpfREVGQVVMVF9DSFVOSzsKCiAgVHJhbnNmb3JtLmNhbGwodGhpcywgb3B0cyk7CgogIGlmIChvcHRzLmZsdXNoICYmICFpc1ZhbGlkRmx1c2hGbGFnKG9wdHMuZmx1c2gpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZmx1c2ggZmxhZzogJyArIG9wdHMuZmx1c2gpOwogIH0KICBpZiAob3B0cy5maW5pc2hGbHVzaCAmJiAhaXNWYWxpZEZsdXNoRmxhZyhvcHRzLmZpbmlzaEZsdXNoKSkgewogICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGZsdXNoIGZsYWc6ICcgKyBvcHRzLmZpbmlzaEZsdXNoKTsKICB9CgogIHRoaXMuX2ZsdXNoRmxhZyA9IG9wdHMuZmx1c2ggfHwgYmluZGluZy5aX05PX0ZMVVNIOwogIHRoaXMuX2ZpbmlzaEZsdXNoRmxhZyA9IHR5cGVvZiBvcHRzLmZpbmlzaEZsdXNoICE9PSAndW5kZWZpbmVkJyA/IG9wdHMuZmluaXNoRmx1c2ggOiBiaW5kaW5nLlpfRklOSVNIOwoKICBpZiAob3B0cy5jaHVua1NpemUpIHsKICAgIGlmIChvcHRzLmNodW5rU2l6ZSA8IGV4cG9ydHMuWl9NSU5fQ0hVTksgfHwgb3B0cy5jaHVua1NpemUgPiBleHBvcnRzLlpfTUFYX0NIVU5LKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjaHVuayBzaXplOiAnICsgb3B0cy5jaHVua1NpemUpOwogICAgfQogIH0KCiAgaWYgKG9wdHMud2luZG93Qml0cykgewogICAgaWYgKG9wdHMud2luZG93Qml0cyA8IGV4cG9ydHMuWl9NSU5fV0lORE9XQklUUyB8fCBvcHRzLndpbmRvd0JpdHMgPiBleHBvcnRzLlpfTUFYX1dJTkRPV0JJVFMpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHdpbmRvd0JpdHM6ICcgKyBvcHRzLndpbmRvd0JpdHMpOwogICAgfQogIH0KCiAgaWYgKG9wdHMubGV2ZWwpIHsKICAgIGlmIChvcHRzLmxldmVsIDwgZXhwb3J0cy5aX01JTl9MRVZFTCB8fCBvcHRzLmxldmVsID4gZXhwb3J0cy5aX01BWF9MRVZFTCkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29tcHJlc3Npb24gbGV2ZWw6ICcgKyBvcHRzLmxldmVsKTsKICAgIH0KICB9CgogIGlmIChvcHRzLm1lbUxldmVsKSB7CiAgICBpZiAob3B0cy5tZW1MZXZlbCA8IGV4cG9ydHMuWl9NSU5fTUVNTEVWRUwgfHwgb3B0cy5tZW1MZXZlbCA+IGV4cG9ydHMuWl9NQVhfTUVNTEVWRUwpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1lbUxldmVsOiAnICsgb3B0cy5tZW1MZXZlbCk7CiAgICB9CiAgfQoKICBpZiAob3B0cy5zdHJhdGVneSkgewogICAgaWYgKG9wdHMuc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0ZJTFRFUkVEICYmIG9wdHMuc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0hVRkZNQU5fT05MWSAmJiBvcHRzLnN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9STEUgJiYgb3B0cy5zdHJhdGVneSAhPSBleHBvcnRzLlpfRklYRUQgJiYgb3B0cy5zdHJhdGVneSAhPSBleHBvcnRzLlpfREVGQVVMVF9TVFJBVEVHWSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RyYXRlZ3k6ICcgKyBvcHRzLnN0cmF0ZWd5KTsKICAgIH0KICB9CgogIGlmIChvcHRzLmRpY3Rpb25hcnkpIHsKICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKG9wdHMuZGljdGlvbmFyeSkpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRpY3Rpb25hcnk6IGl0IHNob3VsZCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpOwogICAgfQogIH0KCiAgdGhpcy5faGFuZGxlID0gbmV3IGJpbmRpbmcuWmxpYihtb2RlKTsKCiAgdmFyIHNlbGYgPSB0aGlzOwogIHRoaXMuX2hhZEVycm9yID0gZmFsc2U7CiAgdGhpcy5faGFuZGxlLm9uZXJyb3IgPSBmdW5jdGlvbiAobWVzc2FnZSwgZXJybm8pIHsKICAgIC8vIHRoZXJlIGlzIG5vIHdheSB0byBjbGVhbmx5IHJlY292ZXIuCiAgICAvLyBjb250aW51aW5nIG9ubHkgb2JzY3VyZXMgcHJvYmxlbXMuCiAgICBfY2xvc2Uoc2VsZik7CiAgICBzZWxmLl9oYWRFcnJvciA9IHRydWU7CgogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpOwogICAgZXJyb3IuZXJybm8gPSBlcnJubzsKICAgIGVycm9yLmNvZGUgPSBleHBvcnRzLmNvZGVzW2Vycm5vXTsKICAgIHNlbGYuZW1pdCgnZXJyb3InLCBlcnJvcik7CiAgfTsKCiAgdmFyIGxldmVsID0gZXhwb3J0cy5aX0RFRkFVTFRfQ09NUFJFU1NJT047CiAgaWYgKHR5cGVvZiBvcHRzLmxldmVsID09PSAnbnVtYmVyJykgbGV2ZWwgPSBvcHRzLmxldmVsOwoKICB2YXIgc3RyYXRlZ3kgPSBleHBvcnRzLlpfREVGQVVMVF9TVFJBVEVHWTsKICBpZiAodHlwZW9mIG9wdHMuc3RyYXRlZ3kgPT09ICdudW1iZXInKSBzdHJhdGVneSA9IG9wdHMuc3RyYXRlZ3k7CgogIHRoaXMuX2hhbmRsZS5pbml0KG9wdHMud2luZG93Qml0cyB8fCBleHBvcnRzLlpfREVGQVVMVF9XSU5ET1dCSVRTLCBsZXZlbCwgb3B0cy5tZW1MZXZlbCB8fCBleHBvcnRzLlpfREVGQVVMVF9NRU1MRVZFTCwgc3RyYXRlZ3ksIG9wdHMuZGljdGlvbmFyeSk7CgogIHRoaXMuX2J1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSh0aGlzLl9jaHVua1NpemUpOwogIHRoaXMuX29mZnNldCA9IDA7CiAgdGhpcy5fbGV2ZWwgPSBsZXZlbDsKICB0aGlzLl9zdHJhdGVneSA9IHN0cmF0ZWd5OwoKICB0aGlzLm9uY2UoJ2VuZCcsIHRoaXMuY2xvc2UpOwoKICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ19jbG9zZWQnLCB7CiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuICFfdGhpcy5faGFuZGxlOwogICAgfSwKICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKfQoKdXRpbC5pbmhlcml0cyhabGliLCBUcmFuc2Zvcm0pOwoKWmxpYi5wcm90b3R5cGUucGFyYW1zID0gZnVuY3Rpb24gKGxldmVsLCBzdHJhdGVneSwgY2FsbGJhY2spIHsKICBpZiAobGV2ZWwgPCBleHBvcnRzLlpfTUlOX0xFVkVMIHx8IGxldmVsID4gZXhwb3J0cy5aX01BWF9MRVZFTCkgewogICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgY29tcHJlc3Npb24gbGV2ZWw6ICcgKyBsZXZlbCk7CiAgfQogIGlmIChzdHJhdGVneSAhPSBleHBvcnRzLlpfRklMVEVSRUQgJiYgc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0hVRkZNQU5fT05MWSAmJiBzdHJhdGVneSAhPSBleHBvcnRzLlpfUkxFICYmIHN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9GSVhFRCAmJiBzdHJhdGVneSAhPSBleHBvcnRzLlpfREVGQVVMVF9TVFJBVEVHWSkgewogICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBzdHJhdGVneTogJyArIHN0cmF0ZWd5KTsKICB9CgogIGlmICh0aGlzLl9sZXZlbCAhPT0gbGV2ZWwgfHwgdGhpcy5fc3RyYXRlZ3kgIT09IHN0cmF0ZWd5KSB7CiAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICB0aGlzLmZsdXNoKGJpbmRpbmcuWl9TWU5DX0ZMVVNILCBmdW5jdGlvbiAoKSB7CiAgICAgIGFzc2VydChzZWxmLl9oYW5kbGUsICd6bGliIGJpbmRpbmcgY2xvc2VkJyk7CiAgICAgIHNlbGYuX2hhbmRsZS5wYXJhbXMobGV2ZWwsIHN0cmF0ZWd5KTsKICAgICAgaWYgKCFzZWxmLl9oYWRFcnJvcikgewogICAgICAgIHNlbGYuX2xldmVsID0gbGV2ZWw7CiAgICAgICAgc2VsZi5fc3RyYXRlZ3kgPSBzdHJhdGVneTsKICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7CiAgICAgIH0KICAgIH0pOwogIH0gZWxzZSB7CiAgICBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrKTsKICB9Cn07CgpabGliLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHsKICBhc3NlcnQodGhpcy5faGFuZGxlLCAnemxpYiBiaW5kaW5nIGNsb3NlZCcpOwogIHJldHVybiB0aGlzLl9oYW5kbGUucmVzZXQoKTsKfTsKCi8vIFRoaXMgaXMgdGhlIF9mbHVzaCBmdW5jdGlvbiBjYWxsZWQgYnkgdGhlIHRyYW5zZm9ybSBjbGFzcywKLy8gaW50ZXJuYWxseSwgd2hlbiB0aGUgbGFzdCBjaHVuayBoYXMgYmVlbiB3cml0dGVuLgpabGliLnByb3RvdHlwZS5fZmx1c2ggPSBmdW5jdGlvbiAoY2FsbGJhY2spIHsKICB0aGlzLl90cmFuc2Zvcm0oQnVmZmVyLmFsbG9jKDApLCAnJywgY2FsbGJhY2spOwp9OwoKWmxpYi5wcm90b3R5cGUuZmx1c2ggPSBmdW5jdGlvbiAoa2luZCwgY2FsbGJhY2spIHsKICB2YXIgX3RoaXMyID0gdGhpczsKCiAgdmFyIHdzID0gdGhpcy5fd3JpdGFibGVTdGF0ZTsKCiAgaWYgKHR5cGVvZiBraW5kID09PSAnZnVuY3Rpb24nIHx8IGtpbmQgPT09IHVuZGVmaW5lZCAmJiAhY2FsbGJhY2spIHsKICAgIGNhbGxiYWNrID0ga2luZDsKICAgIGtpbmQgPSBiaW5kaW5nLlpfRlVMTF9GTFVTSDsKICB9CgogIGlmICh3cy5lbmRlZCkgewogICAgaWYgKGNhbGxiYWNrKSBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrKTsKICB9IGVsc2UgaWYgKHdzLmVuZGluZykgewogICAgaWYgKGNhbGxiYWNrKSB0aGlzLm9uY2UoJ2VuZCcsIGNhbGxiYWNrKTsKICB9IGVsc2UgaWYgKHdzLm5lZWREcmFpbikgewogICAgaWYgKGNhbGxiYWNrKSB7CiAgICAgIHRoaXMub25jZSgnZHJhaW4nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIF90aGlzMi5mbHVzaChraW5kLCBjYWxsYmFjayk7CiAgICAgIH0pOwogICAgfQogIH0gZWxzZSB7CiAgICB0aGlzLl9mbHVzaEZsYWcgPSBraW5kOwogICAgdGhpcy53cml0ZShCdWZmZXIuYWxsb2MoMCksICcnLCBjYWxsYmFjayk7CiAgfQp9OwoKWmxpYi5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHsKICBfY2xvc2UodGhpcywgY2FsbGJhY2spOwogIHByb2Nlc3MubmV4dFRpY2soZW1pdENsb3NlTlQsIHRoaXMpOwp9OwoKZnVuY3Rpb24gX2Nsb3NlKGVuZ2luZSwgY2FsbGJhY2spIHsKICBpZiAoY2FsbGJhY2spIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2spOwoKICAvLyBDYWxsZXIgbWF5IGludm9rZSAuY2xvc2UgYWZ0ZXIgYSB6bGliIGVycm9yICh3aGljaCB3aWxsIG51bGwgX2hhbmRsZSkuCiAgaWYgKCFlbmdpbmUuX2hhbmRsZSkgcmV0dXJuOwoKICBlbmdpbmUuX2hhbmRsZS5jbG9zZSgpOwogIGVuZ2luZS5faGFuZGxlID0gbnVsbDsKfQoKZnVuY3Rpb24gZW1pdENsb3NlTlQoc2VsZikgewogIHNlbGYuZW1pdCgnY2xvc2UnKTsKfQoKWmxpYi5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7CiAgdmFyIGZsdXNoRmxhZzsKICB2YXIgd3MgPSB0aGlzLl93cml0YWJsZVN0YXRlOwogIHZhciBlbmRpbmcgPSB3cy5lbmRpbmcgfHwgd3MuZW5kZWQ7CiAgdmFyIGxhc3QgPSBlbmRpbmcgJiYgKCFjaHVuayB8fCB3cy5sZW5ndGggPT09IGNodW5rLmxlbmd0aCk7CgogIGlmIChjaHVuayAhPT0gbnVsbCAmJiAhQnVmZmVyLmlzQnVmZmVyKGNodW5rKSkgcmV0dXJuIGNiKG5ldyBFcnJvcignaW52YWxpZCBpbnB1dCcpKTsKCiAgaWYgKCF0aGlzLl9oYW5kbGUpIHJldHVybiBjYihuZXcgRXJyb3IoJ3psaWIgYmluZGluZyBjbG9zZWQnKSk7CgogIC8vIElmIGl0J3MgdGhlIGxhc3QgY2h1bmssIG9yIGEgZmluYWwgZmx1c2gsIHdlIHVzZSB0aGUgWl9GSU5JU0ggZmx1c2ggZmxhZwogIC8vIChvciB3aGF0ZXZlciBmbGFnIHdhcyBwcm92aWRlZCB1c2luZyBvcHRzLmZpbmlzaEZsdXNoKS4KICAvLyBJZiBpdCdzIGV4cGxpY2l0bHkgZmx1c2hpbmcgYXQgc29tZSBvdGhlciB0aW1lLCB0aGVuIHdlIHVzZQogIC8vIFpfRlVMTF9GTFVTSC4gT3RoZXJ3aXNlLCB1c2UgWl9OT19GTFVTSCBmb3IgbWF4aW11bSBjb21wcmVzc2lvbgogIC8vIGdvb2RuZXNzLgogIGlmIChsYXN0KSBmbHVzaEZsYWcgPSB0aGlzLl9maW5pc2hGbHVzaEZsYWc7ZWxzZSB7CiAgICBmbHVzaEZsYWcgPSB0aGlzLl9mbHVzaEZsYWc7CiAgICAvLyBvbmNlIHdlJ3ZlIGZsdXNoZWQgdGhlIGxhc3Qgb2YgdGhlIHF1ZXVlLCBzdG9wIGZsdXNoaW5nIGFuZAogICAgLy8gZ28gYmFjayB0byB0aGUgbm9ybWFsIGJlaGF2aW9yLgogICAgaWYgKGNodW5rLmxlbmd0aCA+PSB3cy5sZW5ndGgpIHsKICAgICAgdGhpcy5fZmx1c2hGbGFnID0gdGhpcy5fb3B0cy5mbHVzaCB8fCBiaW5kaW5nLlpfTk9fRkxVU0g7CiAgICB9CiAgfQoKICB0aGlzLl9wcm9jZXNzQ2h1bmsoY2h1bmssIGZsdXNoRmxhZywgY2IpOwp9OwoKWmxpYi5wcm90b3R5cGUuX3Byb2Nlc3NDaHVuayA9IGZ1bmN0aW9uIChjaHVuaywgZmx1c2hGbGFnLCBjYikgewogIHZhciBhdmFpbEluQmVmb3JlID0gY2h1bmsgJiYgY2h1bmsubGVuZ3RoOwogIHZhciBhdmFpbE91dEJlZm9yZSA9IHRoaXMuX2NodW5rU2l6ZSAtIHRoaXMuX29mZnNldDsKICB2YXIgaW5PZmYgPSAwOwoKICB2YXIgc2VsZiA9IHRoaXM7CgogIHZhciBhc3luYyA9IHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJzsKCiAgaWYgKCFhc3luYykgewogICAgdmFyIGJ1ZmZlcnMgPSBbXTsKICAgIHZhciBucmVhZCA9IDA7CgogICAgdmFyIGVycm9yOwogICAgdGhpcy5vbignZXJyb3InLCBmdW5jdGlvbiAoZXIpIHsKICAgICAgZXJyb3IgPSBlcjsKICAgIH0pOwoKICAgIGFzc2VydCh0aGlzLl9oYW5kbGUsICd6bGliIGJpbmRpbmcgY2xvc2VkJyk7CiAgICBkbyB7CiAgICAgIHZhciByZXMgPSB0aGlzLl9oYW5kbGUud3JpdGVTeW5jKGZsdXNoRmxhZywgY2h1bmssIC8vIGluCiAgICAgIGluT2ZmLCAvLyBpbl9vZmYKICAgICAgYXZhaWxJbkJlZm9yZSwgLy8gaW5fbGVuCiAgICAgIHRoaXMuX2J1ZmZlciwgLy8gb3V0CiAgICAgIHRoaXMuX29mZnNldCwgLy9vdXRfb2ZmCiAgICAgIGF2YWlsT3V0QmVmb3JlKTsgLy8gb3V0X2xlbgogICAgfSB3aGlsZSAoIXRoaXMuX2hhZEVycm9yICYmIGNhbGxiYWNrKHJlc1swXSwgcmVzWzFdKSk7CgogICAgaWYgKHRoaXMuX2hhZEVycm9yKSB7CiAgICAgIHRocm93IGVycm9yOwogICAgfQoKICAgIGlmIChucmVhZCA+PSBrTWF4TGVuZ3RoKSB7CiAgICAgIF9jbG9zZSh0aGlzKTsKICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3Ioa1JhbmdlRXJyb3JNZXNzYWdlKTsKICAgIH0KCiAgICB2YXIgYnVmID0gQnVmZmVyLmNvbmNhdChidWZmZXJzLCBucmVhZCk7CiAgICBfY2xvc2UodGhpcyk7CgogICAgcmV0dXJuIGJ1ZjsKICB9CgogIGFzc2VydCh0aGlzLl9oYW5kbGUsICd6bGliIGJpbmRpbmcgY2xvc2VkJyk7CiAgdmFyIHJlcSA9IHRoaXMuX2hhbmRsZS53cml0ZShmbHVzaEZsYWcsIGNodW5rLCAvLyBpbgogIGluT2ZmLCAvLyBpbl9vZmYKICBhdmFpbEluQmVmb3JlLCAvLyBpbl9sZW4KICB0aGlzLl9idWZmZXIsIC8vIG91dAogIHRoaXMuX29mZnNldCwgLy9vdXRfb2ZmCiAgYXZhaWxPdXRCZWZvcmUpOyAvLyBvdXRfbGVuCgogIHJlcS5idWZmZXIgPSBjaHVuazsKICByZXEuY2FsbGJhY2sgPSBjYWxsYmFjazsKCiAgZnVuY3Rpb24gY2FsbGJhY2soYXZhaWxJbkFmdGVyLCBhdmFpbE91dEFmdGVyKSB7CiAgICAvLyBXaGVuIHRoZSBjYWxsYmFjayBpcyB1c2VkIGluIGFuIGFzeW5jIHdyaXRlLCB0aGUgY2FsbGJhY2sncwogICAgLy8gY29udGV4dCBpcyB0aGUgYHJlcWAgb2JqZWN0IHRoYXQgd2FzIGNyZWF0ZWQuIFRoZSByZXEgb2JqZWN0CiAgICAvLyBpcyA9PT0gdGhpcy5faGFuZGxlLCBhbmQgdGhhdCdzIHdoeSBpdCdzIGltcG9ydGFudCB0byBudWxsCiAgICAvLyBvdXQgdGhlIHZhbHVlcyBhZnRlciB0aGV5IGFyZSBkb25lIGJlaW5nIHVzZWQuIGB0aGlzLl9oYW5kbGVgCiAgICAvLyBjYW4gc3RheSBpbiBtZW1vcnkgbG9uZ2VyIHRoYW4gdGhlIGNhbGxiYWNrIGFuZCBidWZmZXIgYXJlIG5lZWRlZC4KICAgIGlmICh0aGlzKSB7CiAgICAgIHRoaXMuYnVmZmVyID0gbnVsbDsKICAgICAgdGhpcy5jYWxsYmFjayA9IG51bGw7CiAgICB9CgogICAgaWYgKHNlbGYuX2hhZEVycm9yKSByZXR1cm47CgogICAgdmFyIGhhdmUgPSBhdmFpbE91dEJlZm9yZSAtIGF2YWlsT3V0QWZ0ZXI7CiAgICBhc3NlcnQoaGF2ZSA+PSAwLCAnaGF2ZSBzaG91bGQgbm90IGdvIGRvd24nKTsKCiAgICBpZiAoaGF2ZSA+IDApIHsKICAgICAgdmFyIG91dCA9IHNlbGYuX2J1ZmZlci5zbGljZShzZWxmLl9vZmZzZXQsIHNlbGYuX29mZnNldCArIGhhdmUpOwogICAgICBzZWxmLl9vZmZzZXQgKz0gaGF2ZTsKICAgICAgLy8gc2VydmUgc29tZSBvdXRwdXQgdG8gdGhlIGNvbnN1bWVyLgogICAgICBpZiAoYXN5bmMpIHsKICAgICAgICBzZWxmLnB1c2gob3V0KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBidWZmZXJzLnB1c2gob3V0KTsKICAgICAgICBucmVhZCArPSBvdXQubGVuZ3RoOwogICAgICB9CiAgICB9CgogICAgLy8gZXhoYXVzdGVkIHRoZSBvdXRwdXQgYnVmZmVyLCBvciB1c2VkIGFsbCB0aGUgaW5wdXQgY3JlYXRlIGEgbmV3IG9uZS4KICAgIGlmIChhdmFpbE91dEFmdGVyID09PSAwIHx8IHNlbGYuX29mZnNldCA+PSBzZWxmLl9jaHVua1NpemUpIHsKICAgICAgYXZhaWxPdXRCZWZvcmUgPSBzZWxmLl9jaHVua1NpemU7CiAgICAgIHNlbGYuX29mZnNldCA9IDA7CiAgICAgIHNlbGYuX2J1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShzZWxmLl9jaHVua1NpemUpOwogICAgfQoKICAgIGlmIChhdmFpbE91dEFmdGVyID09PSAwKSB7CiAgICAgIC8vIE5vdCBhY3R1YWxseSBkb25lLiAgTmVlZCB0byByZXByb2Nlc3MuCiAgICAgIC8vIEFsc28sIHVwZGF0ZSB0aGUgYXZhaWxJbkJlZm9yZSB0byB0aGUgYXZhaWxJbkFmdGVyIHZhbHVlLAogICAgICAvLyBzbyB0aGF0IGlmIHdlIGhhdmUgdG8gaGl0IGl0IGEgdGhpcmQgKGZvdXJ0aCwgZXRjLikgdGltZSwKICAgICAgLy8gaXQnbGwgaGF2ZSB0aGUgY29ycmVjdCBieXRlIGNvdW50cy4KICAgICAgaW5PZmYgKz0gYXZhaWxJbkJlZm9yZSAtIGF2YWlsSW5BZnRlcjsKICAgICAgYXZhaWxJbkJlZm9yZSA9IGF2YWlsSW5BZnRlcjsKCiAgICAgIGlmICghYXN5bmMpIHJldHVybiB0cnVlOwoKICAgICAgdmFyIG5ld1JlcSA9IHNlbGYuX2hhbmRsZS53cml0ZShmbHVzaEZsYWcsIGNodW5rLCBpbk9mZiwgYXZhaWxJbkJlZm9yZSwgc2VsZi5fYnVmZmVyLCBzZWxmLl9vZmZzZXQsIHNlbGYuX2NodW5rU2l6ZSk7CiAgICAgIG5ld1JlcS5jYWxsYmFjayA9IGNhbGxiYWNrOyAvLyB0aGlzIHNhbWUgZnVuY3Rpb24KICAgICAgbmV3UmVxLmJ1ZmZlciA9IGNodW5rOwogICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCFhc3luYykgcmV0dXJuIGZhbHNlOwoKICAgIC8vIGZpbmlzaGVkIHdpdGggdGhlIGNodW5rLgogICAgY2IoKTsKICB9Cn07Cgp1dGlsLmluaGVyaXRzKERlZmxhdGUsIFpsaWIpOwp1dGlsLmluaGVyaXRzKEluZmxhdGUsIFpsaWIpOwp1dGlsLmluaGVyaXRzKEd6aXAsIFpsaWIpOwp1dGlsLmluaGVyaXRzKEd1bnppcCwgWmxpYik7CnV0aWwuaW5oZXJpdHMoRGVmbGF0ZVJhdywgWmxpYik7CnV0aWwuaW5oZXJpdHMoSW5mbGF0ZVJhdywgWmxpYik7CnV0aWwuaW5oZXJpdHMoVW56aXAsIFpsaWIpOwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxMSkpKQoKLyoqKi8gfSksCi8qIDQ5ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwsIHByb2Nlc3MpIHsvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy4KLy8KLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQovLyAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAovLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUKLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci8vCi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgovLwovLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwovLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4KLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUgovLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCgp2YXIgZm9ybWF0UmVnRXhwID0gLyVbc2RqJV0vZzsKZXhwb3J0cy5mb3JtYXQgPSBmdW5jdGlvbihmKSB7CiAgaWYgKCFpc1N0cmluZyhmKSkgewogICAgdmFyIG9iamVjdHMgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIG9iamVjdHMucHVzaChpbnNwZWN0KGFyZ3VtZW50c1tpXSkpOwogICAgfQogICAgcmV0dXJuIG9iamVjdHMuam9pbignICcpOwogIH0KCiAgdmFyIGkgPSAxOwogIHZhciBhcmdzID0gYXJndW1lbnRzOwogIHZhciBsZW4gPSBhcmdzLmxlbmd0aDsKICB2YXIgc3RyID0gU3RyaW5nKGYpLnJlcGxhY2UoZm9ybWF0UmVnRXhwLCBmdW5jdGlvbih4KSB7CiAgICBpZiAoeCA9PT0gJyUlJykgcmV0dXJuICclJzsKICAgIGlmIChpID49IGxlbikgcmV0dXJuIHg7CiAgICBzd2l0Y2ggKHgpIHsKICAgICAgY2FzZSAnJXMnOiByZXR1cm4gU3RyaW5nKGFyZ3NbaSsrXSk7CiAgICAgIGNhc2UgJyVkJzogcmV0dXJuIE51bWJlcihhcmdzW2krK10pOwogICAgICBjYXNlICclaic6CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhcmdzW2krK10pOwogICAgICAgIH0gY2F0Y2ggKF8pIHsKICAgICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7CiAgICAgICAgfQogICAgICBkZWZhdWx0OgogICAgICAgIHJldHVybiB4OwogICAgfQogIH0pOwogIGZvciAodmFyIHggPSBhcmdzW2ldOyBpIDwgbGVuOyB4ID0gYXJnc1srK2ldKSB7CiAgICBpZiAoaXNOdWxsKHgpIHx8ICFpc09iamVjdCh4KSkgewogICAgICBzdHIgKz0gJyAnICsgeDsKICAgIH0gZWxzZSB7CiAgICAgIHN0ciArPSAnICcgKyBpbnNwZWN0KHgpOwogICAgfQogIH0KICByZXR1cm4gc3RyOwp9OwoKCi8vIE1hcmsgdGhhdCBhIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWQuCi8vIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuCi8vIElmIC0tbm8tZGVwcmVjYXRpb24gaXMgc2V0LCB0aGVuIGl0IGlzIGEgbm8tb3AuCmV4cG9ydHMuZGVwcmVjYXRlID0gZnVuY3Rpb24oZm4sIG1zZykgewogIC8vIEFsbG93IGZvciBkZXByZWNhdGluZyB0aGluZ3MgaW4gdGhlIHByb2Nlc3Mgb2Ygc3RhcnRpbmcgdXAuCiAgaWYgKGlzVW5kZWZpbmVkKGdsb2JhbC5wcm9jZXNzKSkgewogICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gZXhwb3J0cy5kZXByZWNhdGUoZm4sIG1zZykuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgIH07CiAgfQoKICBpZiAocHJvY2Vzcy5ub0RlcHJlY2F0aW9uID09PSB0cnVlKSB7CiAgICByZXR1cm4gZm47CiAgfQoKICB2YXIgd2FybmVkID0gZmFsc2U7CiAgZnVuY3Rpb24gZGVwcmVjYXRlZCgpIHsKICAgIGlmICghd2FybmVkKSB7CiAgICAgIGlmIChwcm9jZXNzLnRocm93RGVwcmVjYXRpb24pIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLnRyYWNlRGVwcmVjYXRpb24pIHsKICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY29uc29sZS5lcnJvcihtc2cpOwogICAgICB9CiAgICAgIHdhcm5lZCA9IHRydWU7CiAgICB9CiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICB9CgogIHJldHVybiBkZXByZWNhdGVkOwp9OwoKCnZhciBkZWJ1Z3MgPSB7fTsKdmFyIGRlYnVnRW52aXJvbjsKZXhwb3J0cy5kZWJ1Z2xvZyA9IGZ1bmN0aW9uKHNldCkgewogIGlmIChpc1VuZGVmaW5lZChkZWJ1Z0Vudmlyb24pKQogICAgZGVidWdFbnZpcm9uID0gcHJvY2Vzcy5lbnYuTk9ERV9ERUJVRyB8fCAnJzsKICBzZXQgPSBzZXQudG9VcHBlckNhc2UoKTsKICBpZiAoIWRlYnVnc1tzZXRdKSB7CiAgICBpZiAobmV3IFJlZ0V4cCgnXFxiJyArIHNldCArICdcXGInLCAnaScpLnRlc3QoZGVidWdFbnZpcm9uKSkgewogICAgICB2YXIgcGlkID0gcHJvY2Vzcy5waWQ7CiAgICAgIGRlYnVnc1tzZXRdID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIG1zZyA9IGV4cG9ydHMuZm9ybWF0LmFwcGx5KGV4cG9ydHMsIGFyZ3VtZW50cyk7CiAgICAgICAgY29uc29sZS5lcnJvcignJXMgJWQ6ICVzJywgc2V0LCBwaWQsIG1zZyk7CiAgICAgIH07CiAgICB9IGVsc2UgewogICAgICBkZWJ1Z3Nbc2V0XSA9IGZ1bmN0aW9uKCkge307CiAgICB9CiAgfQogIHJldHVybiBkZWJ1Z3Nbc2V0XTsKfTsKCgovKioKICogRWNob3MgdGhlIHZhbHVlIG9mIGEgdmFsdWUuIFRyeXMgdG8gcHJpbnQgdGhlIHZhbHVlIG91dAogKiBpbiB0aGUgYmVzdCB3YXkgcG9zc2libGUgZ2l2ZW4gdGhlIGRpZmZlcmVudCB0eXBlcy4KICoKICogQHBhcmFtIHtPYmplY3R9IG9iaiBUaGUgb2JqZWN0IHRvIHByaW50IG91dC4KICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uYWwgb3B0aW9ucyBvYmplY3QgdGhhdCBhbHRlcnMgdGhlIG91dHB1dC4KICovCi8qIGxlZ2FjeTogb2JqLCBzaG93SGlkZGVuLCBkZXB0aCwgY29sb3JzKi8KZnVuY3Rpb24gaW5zcGVjdChvYmosIG9wdHMpIHsKICAvLyBkZWZhdWx0IG9wdGlvbnMKICB2YXIgY3R4ID0gewogICAgc2VlbjogW10sCiAgICBzdHlsaXplOiBzdHlsaXplTm9Db2xvcgogIH07CiAgLy8gbGVnYWN5Li4uCiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gMykgY3R4LmRlcHRoID0gYXJndW1lbnRzWzJdOwogIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDQpIGN0eC5jb2xvcnMgPSBhcmd1bWVudHNbM107CiAgaWYgKGlzQm9vbGVhbihvcHRzKSkgewogICAgLy8gbGVnYWN5Li4uCiAgICBjdHguc2hvd0hpZGRlbiA9IG9wdHM7CiAgfSBlbHNlIGlmIChvcHRzKSB7CiAgICAvLyBnb3QgYW4gIm9wdGlvbnMiIG9iamVjdAogICAgZXhwb3J0cy5fZXh0ZW5kKGN0eCwgb3B0cyk7CiAgfQogIC8vIHNldCBkZWZhdWx0IG9wdGlvbnMKICBpZiAoaXNVbmRlZmluZWQoY3R4LnNob3dIaWRkZW4pKSBjdHguc2hvd0hpZGRlbiA9IGZhbHNlOwogIGlmIChpc1VuZGVmaW5lZChjdHguZGVwdGgpKSBjdHguZGVwdGggPSAyOwogIGlmIChpc1VuZGVmaW5lZChjdHguY29sb3JzKSkgY3R4LmNvbG9ycyA9IGZhbHNlOwogIGlmIChpc1VuZGVmaW5lZChjdHguY3VzdG9tSW5zcGVjdCkpIGN0eC5jdXN0b21JbnNwZWN0ID0gdHJ1ZTsKICBpZiAoY3R4LmNvbG9ycykgY3R4LnN0eWxpemUgPSBzdHlsaXplV2l0aENvbG9yOwogIHJldHVybiBmb3JtYXRWYWx1ZShjdHgsIG9iaiwgY3R4LmRlcHRoKTsKfQpleHBvcnRzLmluc3BlY3QgPSBpbnNwZWN0OwoKCi8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQU5TSV9lc2NhcGVfY29kZSNncmFwaGljcwppbnNwZWN0LmNvbG9ycyA9IHsKICAnYm9sZCcgOiBbMSwgMjJdLAogICdpdGFsaWMnIDogWzMsIDIzXSwKICAndW5kZXJsaW5lJyA6IFs0LCAyNF0sCiAgJ2ludmVyc2UnIDogWzcsIDI3XSwKICAnd2hpdGUnIDogWzM3LCAzOV0sCiAgJ2dyZXknIDogWzkwLCAzOV0sCiAgJ2JsYWNrJyA6IFszMCwgMzldLAogICdibHVlJyA6IFszNCwgMzldLAogICdjeWFuJyA6IFszNiwgMzldLAogICdncmVlbicgOiBbMzIsIDM5XSwKICAnbWFnZW50YScgOiBbMzUsIDM5XSwKICAncmVkJyA6IFszMSwgMzldLAogICd5ZWxsb3cnIDogWzMzLCAzOV0KfTsKCi8vIERvbid0IHVzZSAnYmx1ZScgbm90IHZpc2libGUgb24gY21kLmV4ZQppbnNwZWN0LnN0eWxlcyA9IHsKICAnc3BlY2lhbCc6ICdjeWFuJywKICAnbnVtYmVyJzogJ3llbGxvdycsCiAgJ2Jvb2xlYW4nOiAneWVsbG93JywKICAndW5kZWZpbmVkJzogJ2dyZXknLAogICdudWxsJzogJ2JvbGQnLAogICdzdHJpbmcnOiAnZ3JlZW4nLAogICdkYXRlJzogJ21hZ2VudGEnLAogIC8vICJuYW1lIjogaW50ZW50aW9uYWxseSBub3Qgc3R5bGluZwogICdyZWdleHAnOiAncmVkJwp9OwoKCmZ1bmN0aW9uIHN0eWxpemVXaXRoQ29sb3Ioc3RyLCBzdHlsZVR5cGUpIHsKICB2YXIgc3R5bGUgPSBpbnNwZWN0LnN0eWxlc1tzdHlsZVR5cGVdOwoKICBpZiAoc3R5bGUpIHsKICAgIHJldHVybiAnXHUwMDFiWycgKyBpbnNwZWN0LmNvbG9yc1tzdHlsZV1bMF0gKyAnbScgKyBzdHIgKwogICAgICAgICAgICdcdTAwMWJbJyArIGluc3BlY3QuY29sb3JzW3N0eWxlXVsxXSArICdtJzsKICB9IGVsc2UgewogICAgcmV0dXJuIHN0cjsKICB9Cn0KCgpmdW5jdGlvbiBzdHlsaXplTm9Db2xvcihzdHIsIHN0eWxlVHlwZSkgewogIHJldHVybiBzdHI7Cn0KCgpmdW5jdGlvbiBhcnJheVRvSGFzaChhcnJheSkgewogIHZhciBoYXNoID0ge307CgogIGFycmF5LmZvckVhY2goZnVuY3Rpb24odmFsLCBpZHgpIHsKICAgIGhhc2hbdmFsXSA9IHRydWU7CiAgfSk7CgogIHJldHVybiBoYXNoOwp9CgoKZnVuY3Rpb24gZm9ybWF0VmFsdWUoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzKSB7CiAgLy8gUHJvdmlkZSBhIGhvb2sgZm9yIHVzZXItc3BlY2lmaWVkIGluc3BlY3QgZnVuY3Rpb25zLgogIC8vIENoZWNrIHRoYXQgdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggYW4gaW5zcGVjdCBmdW5jdGlvbiBvbiBpdAogIGlmIChjdHguY3VzdG9tSW5zcGVjdCAmJgogICAgICB2YWx1ZSAmJgogICAgICBpc0Z1bmN0aW9uKHZhbHVlLmluc3BlY3QpICYmCiAgICAgIC8vIEZpbHRlciBvdXQgdGhlIHV0aWwgbW9kdWxlLCBpdCdzIGluc3BlY3QgZnVuY3Rpb24gaXMgc3BlY2lhbAogICAgICB2YWx1ZS5pbnNwZWN0ICE9PSBleHBvcnRzLmluc3BlY3QgJiYKICAgICAgLy8gQWxzbyBmaWx0ZXIgb3V0IGFueSBwcm90b3R5cGUgb2JqZWN0cyB1c2luZyB0aGUgY2lyY3VsYXIgY2hlY2suCiAgICAgICEodmFsdWUuY29uc3RydWN0b3IgJiYgdmFsdWUuY29uc3RydWN0b3IucHJvdG90eXBlID09PSB2YWx1ZSkpIHsKICAgIHZhciByZXQgPSB2YWx1ZS5pbnNwZWN0KHJlY3Vyc2VUaW1lcywgY3R4KTsKICAgIGlmICghaXNTdHJpbmcocmV0KSkgewogICAgICByZXQgPSBmb3JtYXRWYWx1ZShjdHgsIHJldCwgcmVjdXJzZVRpbWVzKTsKICAgIH0KICAgIHJldHVybiByZXQ7CiAgfQoKICAvLyBQcmltaXRpdmUgdHlwZXMgY2Fubm90IGhhdmUgcHJvcGVydGllcwogIHZhciBwcmltaXRpdmUgPSBmb3JtYXRQcmltaXRpdmUoY3R4LCB2YWx1ZSk7CiAgaWYgKHByaW1pdGl2ZSkgewogICAgcmV0dXJuIHByaW1pdGl2ZTsKICB9CgogIC8vIExvb2sgdXAgdGhlIGtleXMgb2YgdGhlIG9iamVjdC4KICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKTsKICB2YXIgdmlzaWJsZUtleXMgPSBhcnJheVRvSGFzaChrZXlzKTsKCiAgaWYgKGN0eC5zaG93SGlkZGVuKSB7CiAgICBrZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModmFsdWUpOwogIH0KCiAgLy8gSUUgZG9lc24ndCBtYWtlIGVycm9yIGZpZWxkcyBub24tZW51bWVyYWJsZQogIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9kd3c1MnNidCh2PXZzLjk0KS5hc3B4CiAgaWYgKGlzRXJyb3IodmFsdWUpCiAgICAgICYmIChrZXlzLmluZGV4T2YoJ21lc3NhZ2UnKSA+PSAwIHx8IGtleXMuaW5kZXhPZignZGVzY3JpcHRpb24nKSA+PSAwKSkgewogICAgcmV0dXJuIGZvcm1hdEVycm9yKHZhbHVlKTsKICB9CgogIC8vIFNvbWUgdHlwZSBvZiBvYmplY3Qgd2l0aG91dCBwcm9wZXJ0aWVzIGNhbiBiZSBzaG9ydGN1dHRlZC4KICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHsKICAgIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkgewogICAgICB2YXIgbmFtZSA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnOwogICAgICByZXR1cm4gY3R4LnN0eWxpemUoJ1tGdW5jdGlvbicgKyBuYW1lICsgJ10nLCAnc3BlY2lhbCcpOwogICAgfQogICAgaWYgKGlzUmVnRXhwKHZhbHVlKSkgewogICAgICByZXR1cm4gY3R4LnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwgJ3JlZ2V4cCcpOwogICAgfQogICAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHsKICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAnZGF0ZScpOwogICAgfQogICAgaWYgKGlzRXJyb3IodmFsdWUpKSB7CiAgICAgIHJldHVybiBmb3JtYXRFcnJvcih2YWx1ZSk7CiAgICB9CiAgfQoKICB2YXIgYmFzZSA9ICcnLCBhcnJheSA9IGZhbHNlLCBicmFjZXMgPSBbJ3snLCAnfSddOwoKICAvLyBNYWtlIEFycmF5IHNheSB0aGF0IHRoZXkgYXJlIEFycmF5CiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7CiAgICBhcnJheSA9IHRydWU7CiAgICBicmFjZXMgPSBbJ1snLCAnXSddOwogIH0KCiAgLy8gTWFrZSBmdW5jdGlvbnMgc2F5IHRoYXQgdGhleSBhcmUgZnVuY3Rpb25zCiAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7CiAgICB2YXIgbiA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnOwogICAgYmFzZSA9ICcgW0Z1bmN0aW9uJyArIG4gKyAnXSc7CiAgfQoKICAvLyBNYWtlIFJlZ0V4cHMgc2F5IHRoYXQgdGhleSBhcmUgUmVnRXhwcwogIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHsKICAgIGJhc2UgPSAnICcgKyBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpOwogIH0KCiAgLy8gTWFrZSBkYXRlcyB3aXRoIHByb3BlcnRpZXMgZmlyc3Qgc2F5IHRoZSBkYXRlCiAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHsKICAgIGJhc2UgPSAnICcgKyBEYXRlLnByb3RvdHlwZS50b1VUQ1N0cmluZy5jYWxsKHZhbHVlKTsKICB9CgogIC8vIE1ha2UgZXJyb3Igd2l0aCBtZXNzYWdlIGZpcnN0IHNheSB0aGUgZXJyb3IKICBpZiAoaXNFcnJvcih2YWx1ZSkpIHsKICAgIGJhc2UgPSAnICcgKyBmb3JtYXRFcnJvcih2YWx1ZSk7CiAgfQoKICBpZiAoa2V5cy5sZW5ndGggPT09IDAgJiYgKCFhcnJheSB8fCB2YWx1ZS5sZW5ndGggPT0gMCkpIHsKICAgIHJldHVybiBicmFjZXNbMF0gKyBiYXNlICsgYnJhY2VzWzFdOwogIH0KCiAgaWYgKHJlY3Vyc2VUaW1lcyA8IDApIHsKICAgIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHsKICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdyZWdleHAnKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBjdHguc3R5bGl6ZSgnW09iamVjdF0nLCAnc3BlY2lhbCcpOwogICAgfQogIH0KCiAgY3R4LnNlZW4ucHVzaCh2YWx1ZSk7CgogIHZhciBvdXRwdXQ7CiAgaWYgKGFycmF5KSB7CiAgICBvdXRwdXQgPSBmb3JtYXRBcnJheShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXlzKTsKICB9IGVsc2UgewogICAgb3V0cHV0ID0ga2V5cy5tYXAoZnVuY3Rpb24oa2V5KSB7CiAgICAgIHJldHVybiBmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXksIGFycmF5KTsKICAgIH0pOwogIH0KCiAgY3R4LnNlZW4ucG9wKCk7CgogIHJldHVybiByZWR1Y2VUb1NpbmdsZVN0cmluZyhvdXRwdXQsIGJhc2UsIGJyYWNlcyk7Cn0KCgpmdW5jdGlvbiBmb3JtYXRQcmltaXRpdmUoY3R4LCB2YWx1ZSkgewogIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpCiAgICByZXR1cm4gY3R4LnN0eWxpemUoJ3VuZGVmaW5lZCcsICd1bmRlZmluZWQnKTsKICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7CiAgICB2YXIgc2ltcGxlID0gJ1wnJyArIEpTT04uc3RyaW5naWZ5KHZhbHVlKS5yZXBsYWNlKC9eInwiJC9nLCAnJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLycvZywgIlxcJyIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXCIvZywgJyInKSArICdcJyc7CiAgICByZXR1cm4gY3R4LnN0eWxpemUoc2ltcGxlLCAnc3RyaW5nJyk7CiAgfQogIGlmIChpc051bWJlcih2YWx1ZSkpCiAgICByZXR1cm4gY3R4LnN0eWxpemUoJycgKyB2YWx1ZSwgJ251bWJlcicpOwogIGlmIChpc0Jvb2xlYW4odmFsdWUpKQogICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdib29sZWFuJyk7CiAgLy8gRm9yIHNvbWUgcmVhc29uIHR5cGVvZiBudWxsIGlzICJvYmplY3QiLCBzbyBzcGVjaWFsIGNhc2UgaGVyZS4KICBpZiAoaXNOdWxsKHZhbHVlKSkKICAgIHJldHVybiBjdHguc3R5bGl6ZSgnbnVsbCcsICdudWxsJyk7Cn0KCgpmdW5jdGlvbiBmb3JtYXRFcnJvcih2YWx1ZSkgewogIHJldHVybiAnWycgKyBFcnJvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgKyAnXSc7Cn0KCgpmdW5jdGlvbiBmb3JtYXRBcnJheShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXlzKSB7CiAgdmFyIG91dHB1dCA9IFtdOwogIGZvciAodmFyIGkgPSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsgKytpKSB7CiAgICBpZiAoaGFzT3duUHJvcGVydHkodmFsdWUsIFN0cmluZyhpKSkpIHsKICAgICAgb3V0cHV0LnB1c2goZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywKICAgICAgICAgIFN0cmluZyhpKSwgdHJ1ZSkpOwogICAgfSBlbHNlIHsKICAgICAgb3V0cHV0LnB1c2goJycpOwogICAgfQogIH0KICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7CiAgICBpZiAoIWtleS5tYXRjaCgvXlxkKyQvKSkgewogICAgICBvdXRwdXQucHVzaChmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLAogICAgICAgICAga2V5LCB0cnVlKSk7CiAgICB9CiAgfSk7CiAgcmV0dXJuIG91dHB1dDsKfQoKCmZ1bmN0aW9uIGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleSwgYXJyYXkpIHsKICB2YXIgbmFtZSwgc3RyLCBkZXNjOwogIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHZhbHVlLCBrZXkpIHx8IHsgdmFsdWU6IHZhbHVlW2tleV0gfTsKICBpZiAoZGVzYy5nZXQpIHsKICAgIGlmIChkZXNjLnNldCkgewogICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW0dldHRlci9TZXR0ZXJdJywgJ3NwZWNpYWwnKTsKICAgIH0gZWxzZSB7CiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbR2V0dGVyXScsICdzcGVjaWFsJyk7CiAgICB9CiAgfSBlbHNlIHsKICAgIGlmIChkZXNjLnNldCkgewogICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW1NldHRlcl0nLCAnc3BlY2lhbCcpOwogICAgfQogIH0KICBpZiAoIWhhc093blByb3BlcnR5KHZpc2libGVLZXlzLCBrZXkpKSB7CiAgICBuYW1lID0gJ1snICsga2V5ICsgJ10nOwogIH0KICBpZiAoIXN0cikgewogICAgaWYgKGN0eC5zZWVuLmluZGV4T2YoZGVzYy52YWx1ZSkgPCAwKSB7CiAgICAgIGlmIChpc051bGwocmVjdXJzZVRpbWVzKSkgewogICAgICAgIHN0ciA9IGZvcm1hdFZhbHVlKGN0eCwgZGVzYy52YWx1ZSwgbnVsbCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgc3RyID0gZm9ybWF0VmFsdWUoY3R4LCBkZXNjLnZhbHVlLCByZWN1cnNlVGltZXMgLSAxKTsKICAgICAgfQogICAgICBpZiAoc3RyLmluZGV4T2YoJ1xuJykgPiAtMSkgewogICAgICAgIGlmIChhcnJheSkgewogICAgICAgICAgc3RyID0gc3RyLnNwbGl0KCdcbicpLm1hcChmdW5jdGlvbihsaW5lKSB7CiAgICAgICAgICAgIHJldHVybiAnICAnICsgbGluZTsKICAgICAgICAgIH0pLmpvaW4oJ1xuJykuc3Vic3RyKDIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBzdHIgPSAnXG4nICsgc3RyLnNwbGl0KCdcbicpLm1hcChmdW5jdGlvbihsaW5lKSB7CiAgICAgICAgICAgIHJldHVybiAnICAgJyArIGxpbmU7CiAgICAgICAgICB9KS5qb2luKCdcbicpOwogICAgICAgIH0KICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tDaXJjdWxhcl0nLCAnc3BlY2lhbCcpOwogICAgfQogIH0KICBpZiAoaXNVbmRlZmluZWQobmFtZSkpIHsKICAgIGlmIChhcnJheSAmJiBrZXkubWF0Y2goL15cZCskLykpIHsKICAgICAgcmV0dXJuIHN0cjsKICAgIH0KICAgIG5hbWUgPSBKU09OLnN0cmluZ2lmeSgnJyArIGtleSk7CiAgICBpZiAobmFtZS5tYXRjaCgvXiIoW2EtekEtWl9dW2EtekEtWl8wLTldKikiJC8pKSB7CiAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cigxLCBuYW1lLmxlbmd0aCAtIDIpOwogICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ25hbWUnKTsKICAgIH0gZWxzZSB7CiAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoLycvZywgIlxcJyIpCiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcIi9nLCAnIicpCiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyheInwiJCkvZywgIiciKTsKICAgICAgbmFtZSA9IGN0eC5zdHlsaXplKG5hbWUsICdzdHJpbmcnKTsKICAgIH0KICB9CgogIHJldHVybiBuYW1lICsgJzogJyArIHN0cjsKfQoKCmZ1bmN0aW9uIHJlZHVjZVRvU2luZ2xlU3RyaW5nKG91dHB1dCwgYmFzZSwgYnJhY2VzKSB7CiAgdmFyIG51bUxpbmVzRXN0ID0gMDsKICB2YXIgbGVuZ3RoID0gb3V0cHV0LnJlZHVjZShmdW5jdGlvbihwcmV2LCBjdXIpIHsKICAgIG51bUxpbmVzRXN0Kys7CiAgICBpZiAoY3VyLmluZGV4T2YoJ1xuJykgPj0gMCkgbnVtTGluZXNFc3QrKzsKICAgIHJldHVybiBwcmV2ICsgY3VyLnJlcGxhY2UoL1x1MDAxYlxbXGRcZD9tL2csICcnKS5sZW5ndGggKyAxOwogIH0sIDApOwoKICBpZiAobGVuZ3RoID4gNjApIHsKICAgIHJldHVybiBicmFjZXNbMF0gKwogICAgICAgICAgIChiYXNlID09PSAnJyA/ICcnIDogYmFzZSArICdcbiAnKSArCiAgICAgICAgICAgJyAnICsKICAgICAgICAgICBvdXRwdXQuam9pbignLFxuICAnKSArCiAgICAgICAgICAgJyAnICsKICAgICAgICAgICBicmFjZXNbMV07CiAgfQoKICByZXR1cm4gYnJhY2VzWzBdICsgYmFzZSArICcgJyArIG91dHB1dC5qb2luKCcsICcpICsgJyAnICsgYnJhY2VzWzFdOwp9CgoKLy8gTk9URTogVGhlc2UgdHlwZSBjaGVja2luZyBmdW5jdGlvbnMgaW50ZW50aW9uYWxseSBkb24ndCB1c2UgYGluc3RhbmNlb2ZgCi8vIGJlY2F1c2UgaXQgaXMgZnJhZ2lsZSBhbmQgY2FuIGJlIGVhc2lseSBmYWtlZCB3aXRoIGBPYmplY3QuY3JlYXRlKClgLgpmdW5jdGlvbiBpc0FycmF5KGFyKSB7CiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXIpOwp9CmV4cG9ydHMuaXNBcnJheSA9IGlzQXJyYXk7CgpmdW5jdGlvbiBpc0Jvb2xlYW4oYXJnKSB7CiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJzsKfQpleHBvcnRzLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjsKCmZ1bmN0aW9uIGlzTnVsbChhcmcpIHsKICByZXR1cm4gYXJnID09PSBudWxsOwp9CmV4cG9ydHMuaXNOdWxsID0gaXNOdWxsOwoKZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7CiAgcmV0dXJuIGFyZyA9PSBudWxsOwp9CmV4cG9ydHMuaXNOdWxsT3JVbmRlZmluZWQgPSBpc051bGxPclVuZGVmaW5lZDsKCmZ1bmN0aW9uIGlzTnVtYmVyKGFyZykgewogIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJzsKfQpleHBvcnRzLmlzTnVtYmVyID0gaXNOdW1iZXI7CgpmdW5jdGlvbiBpc1N0cmluZyhhcmcpIHsKICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ3N0cmluZyc7Cn0KZXhwb3J0cy5pc1N0cmluZyA9IGlzU3RyaW5nOwoKZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7CiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnOwp9CmV4cG9ydHMuaXNTeW1ib2wgPSBpc1N5bWJvbDsKCmZ1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZykgewogIHJldHVybiBhcmcgPT09IHZvaWQgMDsKfQpleHBvcnRzLmlzVW5kZWZpbmVkID0gaXNVbmRlZmluZWQ7CgpmdW5jdGlvbiBpc1JlZ0V4cChyZSkgewogIHJldHVybiBpc09iamVjdChyZSkgJiYgb2JqZWN0VG9TdHJpbmcocmUpID09PSAnW29iamVjdCBSZWdFeHBdJzsKfQpleHBvcnRzLmlzUmVnRXhwID0gaXNSZWdFeHA7CgpmdW5jdGlvbiBpc09iamVjdChhcmcpIHsKICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsOwp9CmV4cG9ydHMuaXNPYmplY3QgPSBpc09iamVjdDsKCmZ1bmN0aW9uIGlzRGF0ZShkKSB7CiAgcmV0dXJuIGlzT2JqZWN0KGQpICYmIG9iamVjdFRvU3RyaW5nKGQpID09PSAnW29iamVjdCBEYXRlXSc7Cn0KZXhwb3J0cy5pc0RhdGUgPSBpc0RhdGU7CgpmdW5jdGlvbiBpc0Vycm9yKGUpIHsKICByZXR1cm4gaXNPYmplY3QoZSkgJiYKICAgICAgKG9iamVjdFRvU3RyaW5nKGUpID09PSAnW29iamVjdCBFcnJvcl0nIHx8IGUgaW5zdGFuY2VvZiBFcnJvcik7Cn0KZXhwb3J0cy5pc0Vycm9yID0gaXNFcnJvcjsKCmZ1bmN0aW9uIGlzRnVuY3Rpb24oYXJnKSB7CiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbic7Cn0KZXhwb3J0cy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjsKCmZ1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZykgewogIHJldHVybiBhcmcgPT09IG51bGwgfHwKICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nIHx8CiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8CiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnIHx8CiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnIHx8ICAvLyBFUzYgc3ltYm9sCiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnOwp9CmV4cG9ydHMuaXNQcmltaXRpdmUgPSBpc1ByaW1pdGl2ZTsKCmV4cG9ydHMuaXNCdWZmZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1MSk7CgpmdW5jdGlvbiBvYmplY3RUb1N0cmluZyhvKSB7CiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKTsKfQoKCmZ1bmN0aW9uIHBhZChuKSB7CiAgcmV0dXJuIG4gPCAxMCA/ICcwJyArIG4udG9TdHJpbmcoMTApIDogbi50b1N0cmluZygxMCk7Cn0KCgp2YXIgbW9udGhzID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsCiAgICAgICAgICAgICAgJ09jdCcsICdOb3YnLCAnRGVjJ107CgovLyAyNiBGZWIgMTY6MTk6MzQKZnVuY3Rpb24gdGltZXN0YW1wKCkgewogIHZhciBkID0gbmV3IERhdGUoKTsKICB2YXIgdGltZSA9IFtwYWQoZC5nZXRIb3VycygpKSwKICAgICAgICAgICAgICBwYWQoZC5nZXRNaW51dGVzKCkpLAogICAgICAgICAgICAgIHBhZChkLmdldFNlY29uZHMoKSldLmpvaW4oJzonKTsKICByZXR1cm4gW2QuZ2V0RGF0ZSgpLCBtb250aHNbZC5nZXRNb250aCgpXSwgdGltZV0uam9pbignICcpOwp9CgoKLy8gbG9nIGlzIGp1c3QgYSB0aGluIHdyYXBwZXIgdG8gY29uc29sZS5sb2cgdGhhdCBwcmVwZW5kcyBhIHRpbWVzdGFtcApleHBvcnRzLmxvZyA9IGZ1bmN0aW9uKCkgewogIGNvbnNvbGUubG9nKCclcyAtICVzJywgdGltZXN0YW1wKCksIGV4cG9ydHMuZm9ybWF0LmFwcGx5KGV4cG9ydHMsIGFyZ3VtZW50cykpOwp9OwoKCi8qKgogKiBJbmhlcml0IHRoZSBwcm90b3R5cGUgbWV0aG9kcyBmcm9tIG9uZSBjb25zdHJ1Y3RvciBpbnRvIGFub3RoZXIuCiAqCiAqIFRoZSBGdW5jdGlvbi5wcm90b3R5cGUuaW5oZXJpdHMgZnJvbSBsYW5nLmpzIHJld3JpdHRlbiBhcyBhIHN0YW5kYWxvbmUKICogZnVuY3Rpb24gKG5vdCBvbiBGdW5jdGlvbi5wcm90b3R5cGUpLiBOT1RFOiBJZiB0aGlzIGZpbGUgaXMgdG8gYmUgbG9hZGVkCiAqIGR1cmluZyBib290c3RyYXBwaW5nIHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgcmV3cml0dGVuIHVzaW5nIHNvbWUgbmF0aXZlCiAqIGZ1bmN0aW9ucyBhcyBwcm90b3R5cGUgc2V0dXAgdXNpbmcgbm9ybWFsIEphdmFTY3JpcHQgZG9lcyBub3Qgd29yayBhcwogKiBleHBlY3RlZCBkdXJpbmcgYm9vdHN0cmFwcGluZyAoc2VlIG1pcnJvci5qcyBpbiByMTE0OTAzKS4KICoKICogQHBhcmFtIHtmdW5jdGlvbn0gY3RvciBDb25zdHJ1Y3RvciBmdW5jdGlvbiB3aGljaCBuZWVkcyB0byBpbmhlcml0IHRoZQogKiAgICAgcHJvdG90eXBlLgogKiBAcGFyYW0ge2Z1bmN0aW9ufSBzdXBlckN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gdG8gaW5oZXJpdCBwcm90b3R5cGUgZnJvbS4KICovCmV4cG9ydHMuaW5oZXJpdHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1Mik7CgpleHBvcnRzLl9leHRlbmQgPSBmdW5jdGlvbihvcmlnaW4sIGFkZCkgewogIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIGFkZCBpc24ndCBhbiBvYmplY3QKICBpZiAoIWFkZCB8fCAhaXNPYmplY3QoYWRkKSkgcmV0dXJuIG9yaWdpbjsKCiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhhZGQpOwogIHZhciBpID0ga2V5cy5sZW5ndGg7CiAgd2hpbGUgKGktLSkgewogICAgb3JpZ2luW2tleXNbaV1dID0gYWRkW2tleXNbaV1dOwogIH0KICByZXR1cm4gb3JpZ2luOwp9OwoKZnVuY3Rpb24gaGFzT3duUHJvcGVydHkob2JqLCBwcm9wKSB7CiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOwp9CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyg3KSwgX193ZWJwYWNrX3JlcXVpcmVfXygxMSkpKQoKLyoqKi8gfSksCi8qIDUwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihCdWZmZXIpIHsvLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuNgooZnVuY3Rpb24oKSB7CiAgdmFyIEVtYmVkZGVkRm9udCwgUERGRm9udCwgU3RhbmRhcmRGb250LCBmb250a2l0OwoKICBmb250a2l0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjcpOwoKICBQREZGb250ID0gKGZ1bmN0aW9uKCkgewogICAgUERGRm9udC5vcGVuID0gZnVuY3Rpb24oZG9jdW1lbnQsIHNyYywgZmFtaWx5LCBpZCkgewogICAgICB2YXIgZm9udDsKICAgICAgaWYgKHR5cGVvZiBzcmMgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgaWYgKFN0YW5kYXJkRm9udC5pc1N0YW5kYXJkRm9udChzcmMpKSB7CiAgICAgICAgICByZXR1cm4gbmV3IFN0YW5kYXJkRm9udChkb2N1bWVudCwgc3JjLCBpZCk7CiAgICAgICAgfQogICAgICAgIGZvbnQgPSBmb250a2l0Lm9wZW5TeW5jKHNyYywgZmFtaWx5KTsKICAgICAgfSBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIoc3JjKSkgewogICAgICAgIGZvbnQgPSBmb250a2l0LmNyZWF0ZShzcmMsIGZhbWlseSk7CiAgICAgIH0gZWxzZSBpZiAoc3JjIGluc3RhbmNlb2YgVWludDhBcnJheSkgewogICAgICAgIGZvbnQgPSBmb250a2l0LmNyZWF0ZShuZXcgQnVmZmVyKHNyYyksIGZhbWlseSk7CiAgICAgIH0gZWxzZSBpZiAoc3JjIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHsKICAgICAgICBmb250ID0gZm9udGtpdC5jcmVhdGUobmV3IEJ1ZmZlcihuZXcgVWludDhBcnJheShzcmMpKSwgZmFtaWx5KTsKICAgICAgfQogICAgICBpZiAoZm9udCA9PSBudWxsKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgYSBzdXBwb3J0ZWQgZm9udCBmb3JtYXQgb3Igc3RhbmRhcmQgUERGIGZvbnQuJyk7CiAgICAgIH0KICAgICAgcmV0dXJuIG5ldyBFbWJlZGRlZEZvbnQoZG9jdW1lbnQsIGZvbnQsIGlkKTsKICAgIH07CgogICAgZnVuY3Rpb24gUERGRm9udCgpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY29uc3RydWN0IGEgUERGRm9udCBkaXJlY3RseS4nKTsKICAgIH0KCiAgICBQREZGb250LnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbih0ZXh0KSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzJyk7CiAgICB9OwoKICAgIFBERkZvbnQucHJvdG90eXBlLndpZHRoT2ZTdHJpbmcgPSBmdW5jdGlvbih0ZXh0KSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzJyk7CiAgICB9OwoKICAgIFBERkZvbnQucHJvdG90eXBlLnJlZiA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy5kaWN0aW9uYXJ5ICE9IG51bGwgPyB0aGlzLmRpY3Rpb25hcnkgOiB0aGlzLmRpY3Rpb25hcnkgPSB0aGlzLmRvY3VtZW50LnJlZigpOwogICAgfTsKCiAgICBQREZGb250LnByb3RvdHlwZS5maW5hbGl6ZSA9IGZ1bmN0aW9uKCkgewogICAgICBpZiAodGhpcy5lbWJlZGRlZCB8fCAodGhpcy5kaWN0aW9uYXJ5ID09IG51bGwpKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMuZW1iZWQoKTsKICAgICAgcmV0dXJuIHRoaXMuZW1iZWRkZWQgPSB0cnVlOwogICAgfTsKCiAgICBQREZGb250LnByb3RvdHlwZS5lbWJlZCA9IGZ1bmN0aW9uKCkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ011c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3NlcycpOwogICAgfTsKCiAgICBQREZGb250LnByb3RvdHlwZS5saW5lSGVpZ2h0ID0gZnVuY3Rpb24oc2l6ZSwgaW5jbHVkZUdhcCkgewogICAgICB2YXIgZ2FwOwogICAgICBpZiAoaW5jbHVkZUdhcCA9PSBudWxsKSB7CiAgICAgICAgaW5jbHVkZUdhcCA9IGZhbHNlOwogICAgICB9CiAgICAgIGdhcCA9IGluY2x1ZGVHYXAgPyB0aGlzLmxpbmVHYXAgOiAwOwogICAgICByZXR1cm4gKHRoaXMuYXNjZW5kZXIgKyBnYXAgLSB0aGlzLmRlc2NlbmRlcikgLyAxMDAwICogc2l6ZTsKICAgIH07CgogICAgcmV0dXJuIFBERkZvbnQ7CgogIH0pKCk7CgogIG1vZHVsZS5leHBvcnRzID0gUERGRm9udDsKCiAgU3RhbmRhcmRGb250ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOTIpOwoKICBFbWJlZGRlZEZvbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5NCk7Cgp9KS5jYWxsKHRoaXMpOwoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyKSkKCi8qKiovIH0pLAovKiA1MSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oQnVmZmVyKSB7Ly8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjcuMQooZnVuY3Rpb24oKSB7CiAgdmFyIERlY29kZVN0cmVhbSwgaWNvbnY7CgogIHRyeSB7CiAgICBpY29udiA9IF9fd2VicGFja19yZXF1aXJlX18oNTIpOwogIH0gY2F0Y2ggKF9lcnJvcikge30KCiAgRGVjb2RlU3RyZWFtID0gKGZ1bmN0aW9uKCkgewogICAgdmFyIGtleTsKCiAgICBmdW5jdGlvbiBEZWNvZGVTdHJlYW0oYnVmZmVyKSB7CiAgICAgIHRoaXMuYnVmZmVyID0gYnVmZmVyOwogICAgICB0aGlzLnBvcyA9IDA7CiAgICAgIHRoaXMubGVuZ3RoID0gdGhpcy5idWZmZXIubGVuZ3RoOwogICAgfQoKICAgIERlY29kZVN0cmVhbS5UWVBFUyA9IHsKICAgICAgVUludDg6IDEsCiAgICAgIFVJbnQxNjogMiwKICAgICAgVUludDI0OiAzLAogICAgICBVSW50MzI6IDQsCiAgICAgIEludDg6IDEsCiAgICAgIEludDE2OiAyLAogICAgICBJbnQyNDogMywKICAgICAgSW50MzI6IDQsCiAgICAgIEZsb2F0OiA0LAogICAgICBEb3VibGU6IDgKICAgIH07CgogICAgZm9yIChrZXkgaW4gQnVmZmVyLnByb3RvdHlwZSkgewogICAgICBpZiAoa2V5LnNsaWNlKDAsIDQpID09PSAncmVhZCcpIHsKICAgICAgICAoZnVuY3Rpb24oa2V5KSB7CiAgICAgICAgICB2YXIgYnl0ZXM7CiAgICAgICAgICBieXRlcyA9IERlY29kZVN0cmVhbS5UWVBFU1trZXkucmVwbGFjZSgvcmVhZHxbQkxdRS9nLCAnJyldOwogICAgICAgICAgcmV0dXJuIERlY29kZVN0cmVhbS5wcm90b3R5cGVba2V5XSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgcmV0OwogICAgICAgICAgICByZXQgPSB0aGlzLmJ1ZmZlcltrZXldKHRoaXMucG9zKTsKICAgICAgICAgICAgdGhpcy5wb3MgKz0gYnl0ZXM7CiAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAgICB9OwogICAgICAgIH0pKGtleSk7CiAgICAgIH0KICAgIH0KCiAgICBEZWNvZGVTdHJlYW0ucHJvdG90eXBlLnJlYWRTdHJpbmcgPSBmdW5jdGlvbihsZW5ndGgsIGVuY29kaW5nKSB7CiAgICAgIHZhciBidWYsIGJ5dGUsIGksIF9pLCBfcmVmOwogICAgICBpZiAoZW5jb2RpbmcgPT0gbnVsbCkgewogICAgICAgIGVuY29kaW5nID0gJ2FzY2lpJzsKICAgICAgfQogICAgICBzd2l0Y2ggKGVuY29kaW5nKSB7CiAgICAgICAgY2FzZSAndXRmMTZsZSc6CiAgICAgICAgY2FzZSAndWNzMic6CiAgICAgICAgY2FzZSAndXRmOCc6CiAgICAgICAgY2FzZSAnYXNjaWknOgogICAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnRvU3RyaW5nKGVuY29kaW5nLCB0aGlzLnBvcywgdGhpcy5wb3MgKz0gbGVuZ3RoKTsKICAgICAgICBjYXNlICd1dGYxNmJlJzoKICAgICAgICAgIGJ1ZiA9IG5ldyBCdWZmZXIodGhpcy5yZWFkQnVmZmVyKGxlbmd0aCkpOwogICAgICAgICAgZm9yIChpID0gX2kgPSAwLCBfcmVmID0gYnVmLmxlbmd0aCAtIDE7IF9pIDwgX3JlZjsgaSA9IF9pICs9IDIpIHsKICAgICAgICAgICAgYnl0ZSA9IGJ1ZltpXTsKICAgICAgICAgICAgYnVmW2ldID0gYnVmW2kgKyAxXTsKICAgICAgICAgICAgYnVmW2kgKyAxXSA9IGJ5dGU7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGYxNmxlJyk7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIGJ1ZiA9IHRoaXMucmVhZEJ1ZmZlcihsZW5ndGgpOwogICAgICAgICAgaWYgKGljb252KSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgcmV0dXJuIGljb252LmRlY29kZShidWYsIGVuY29kaW5nKTsKICAgICAgICAgICAgfSBjYXRjaCAoX2Vycm9yKSB7fQogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGJ1ZjsKICAgICAgfQogICAgfTsKCiAgICBEZWNvZGVTdHJlYW0ucHJvdG90eXBlLnJlYWRCdWZmZXIgPSBmdW5jdGlvbihsZW5ndGgpIHsKICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnNsaWNlKHRoaXMucG9zLCB0aGlzLnBvcyArPSBsZW5ndGgpOwogICAgfTsKCiAgICBEZWNvZGVTdHJlYW0ucHJvdG90eXBlLnJlYWRVSW50MjRCRSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gKHRoaXMucmVhZFVJbnQxNkJFKCkgPDwgOCkgKyB0aGlzLnJlYWRVSW50OCgpOwogICAgfTsKCiAgICBEZWNvZGVTdHJlYW0ucHJvdG90eXBlLnJlYWRVSW50MjRMRSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy5yZWFkVUludDE2TEUoKSArICh0aGlzLnJlYWRVSW50OCgpIDw8IDE2KTsKICAgIH07CgogICAgRGVjb2RlU3RyZWFtLnByb3RvdHlwZS5yZWFkSW50MjRCRSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gKHRoaXMucmVhZEludDE2QkUoKSA8PCA4KSArIHRoaXMucmVhZFVJbnQ4KCk7CiAgICB9OwoKICAgIERlY29kZVN0cmVhbS5wcm90b3R5cGUucmVhZEludDI0TEUgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMucmVhZFVJbnQxNkxFKCkgKyAodGhpcy5yZWFkSW50OCgpIDw8IDE2KTsKICAgIH07CgogICAgcmV0dXJuIERlY29kZVN0cmVhbTsKCiAgfSkoKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBEZWNvZGVTdHJlYW07Cgp9KS5jYWxsKHRoaXMpOwoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyKSkKCi8qKiovIH0pLAovKiA1MiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Ci8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihwcm9jZXNzKSB7CgovLyBTb21lIGVudmlyb25tZW50cyBkb24ndCBoYXZlIGdsb2JhbCBCdWZmZXIgKGUuZy4gUmVhY3QgTmF0aXZlKS4KLy8gU29sdXRpb24gd291bGQgYmUgaW5zdGFsbGluZyBucG0gbW9kdWxlcyAiYnVmZmVyIiBhbmQgInN0cmVhbSIgZXhwbGljaXRseS4KdmFyIEJ1ZmZlciA9IF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyOwoKdmFyIGJvbUhhbmRsaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNzApLAogICAgaWNvbnYgPSBtb2R1bGUuZXhwb3J0czsKCi8vIEFsbCBjb2RlY3MgYW5kIGFsaWFzZXMgYXJlIGtlcHQgaGVyZSwga2V5ZWQgYnkgZW5jb2RpbmcgbmFtZS9hbGlhcy4KLy8gVGhleSBhcmUgbGF6eSBsb2FkZWQgaW4gYGljb252LmdldENvZGVjYCBmcm9tIGBlbmNvZGluZ3MvaW5kZXguanNgLgppY29udi5lbmNvZGluZ3MgPSBudWxsOwoKLy8gQ2hhcmFjdGVycyBlbWl0dGVkIGluIGNhc2Ugb2YgZXJyb3IuCmljb252LmRlZmF1bHRDaGFyVW5pY29kZSA9ICfvv70nOwppY29udi5kZWZhdWx0Q2hhclNpbmdsZUJ5dGUgPSAnPyc7CgovLyBQdWJsaWMgQVBJLgppY29udi5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoc3RyLCBlbmNvZGluZywgb3B0aW9ucykgewogICAgc3RyID0gIiIgKyAoc3RyIHx8ICIiKTsgLy8gRW5zdXJlIHN0cmluZy4KCiAgICB2YXIgZW5jb2RlciA9IGljb252LmdldEVuY29kZXIoZW5jb2RpbmcsIG9wdGlvbnMpOwoKICAgIHZhciByZXMgPSBlbmNvZGVyLndyaXRlKHN0cik7CiAgICB2YXIgdHJhaWwgPSBlbmNvZGVyLmVuZCgpOwogICAgCiAgICByZXR1cm4gKHRyYWlsICYmIHRyYWlsLmxlbmd0aCA+IDApID8gQnVmZmVyLmNvbmNhdChbcmVzLCB0cmFpbF0pIDogcmVzOwp9CgppY29udi5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoYnVmLCBlbmNvZGluZywgb3B0aW9ucykgewogICAgaWYgKHR5cGVvZiBidWYgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgaWYgKCFpY29udi5za2lwRGVjb2RlV2FybmluZykgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKCdJY29udi1saXRlIHdhcm5pbmc6IGRlY29kZSgpLWluZyBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQuIFJlZmVyIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2h0dWNoa2luL2ljb252LWxpdGUvd2lraS9Vc2UtQnVmZmVycy13aGVuLWRlY29kaW5nJyk7CiAgICAgICAgICAgIGljb252LnNraXBEZWNvZGVXYXJuaW5nID0gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGJ1ZiA9IG5ldyBCdWZmZXIoIiIgKyAoYnVmIHx8ICIiKSwgImJpbmFyeSIpOyAvLyBFbnN1cmUgYnVmZmVyLgogICAgfQoKICAgIHZhciBkZWNvZGVyID0gaWNvbnYuZ2V0RGVjb2RlcihlbmNvZGluZywgb3B0aW9ucyk7CgogICAgdmFyIHJlcyA9IGRlY29kZXIud3JpdGUoYnVmKTsKICAgIHZhciB0cmFpbCA9IGRlY29kZXIuZW5kKCk7CgogICAgcmV0dXJuIHRyYWlsID8gKHJlcyArIHRyYWlsKSA6IHJlczsKfQoKaWNvbnYuZW5jb2RpbmdFeGlzdHMgPSBmdW5jdGlvbiBlbmNvZGluZ0V4aXN0cyhlbmMpIHsKICAgIHRyeSB7CiAgICAgICAgaWNvbnYuZ2V0Q29kZWMoZW5jKTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0KCi8vIExlZ2FjeSBhbGlhc2VzIHRvIGNvbnZlcnQgZnVuY3Rpb25zCmljb252LnRvRW5jb2RpbmcgPSBpY29udi5lbmNvZGU7Cmljb252LmZyb21FbmNvZGluZyA9IGljb252LmRlY29kZTsKCi8vIFNlYXJjaCBmb3IgYSBjb2RlYyBpbiBpY29udi5lbmNvZGluZ3MuIENhY2hlIGNvZGVjIGRhdGEgaW4gaWNvbnYuX2NvZGVjRGF0YUNhY2hlLgppY29udi5fY29kZWNEYXRhQ2FjaGUgPSB7fTsKaWNvbnYuZ2V0Q29kZWMgPSBmdW5jdGlvbiBnZXRDb2RlYyhlbmNvZGluZykgewogICAgaWYgKCFpY29udi5lbmNvZGluZ3MpCiAgICAgICAgaWNvbnYuZW5jb2RpbmdzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNzEpOyAvLyBMYXp5IGxvYWQgYWxsIGVuY29kaW5nIGRlZmluaXRpb25zLgogICAgCiAgICAvLyBDYW5vbmljYWxpemUgZW5jb2RpbmcgbmFtZTogc3RyaXAgYWxsIG5vbi1hbHBoYW51bWVyaWMgY2hhcnMgYW5kIGFwcGVuZGVkIHllYXIuCiAgICB2YXIgZW5jID0gKCcnK2VuY29kaW5nKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teMC05YS16XXw6XGR7NH0kL2csICIiKTsKCiAgICAvLyBUcmF2ZXJzZSBpY29udi5lbmNvZGluZ3MgdG8gZmluZCBhY3R1YWwgY29kZWMuCiAgICB2YXIgY29kZWNPcHRpb25zID0ge307CiAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIHZhciBjb2RlYyA9IGljb252Ll9jb2RlY0RhdGFDYWNoZVtlbmNdOwogICAgICAgIGlmIChjb2RlYykKICAgICAgICAgICAgcmV0dXJuIGNvZGVjOwoKICAgICAgICB2YXIgY29kZWNEZWYgPSBpY29udi5lbmNvZGluZ3NbZW5jXTsKCiAgICAgICAgc3dpdGNoICh0eXBlb2YgY29kZWNEZWYpIHsKICAgICAgICAgICAgY2FzZSAic3RyaW5nIjogLy8gRGlyZWN0IGFsaWFzIHRvIG90aGVyIGVuY29kaW5nLgogICAgICAgICAgICAgICAgZW5jID0gY29kZWNEZWY7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6IC8vIEFsaWFzIHdpdGggb3B0aW9ucy4gQ2FuIGJlIGxheWVyZWQuCiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gY29kZWNEZWYpCiAgICAgICAgICAgICAgICAgICAgY29kZWNPcHRpb25zW2tleV0gPSBjb2RlY0RlZltrZXldOwoKICAgICAgICAgICAgICAgIGlmICghY29kZWNPcHRpb25zLmVuY29kaW5nTmFtZSkKICAgICAgICAgICAgICAgICAgICBjb2RlY09wdGlvbnMuZW5jb2RpbmdOYW1lID0gZW5jOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBlbmMgPSBjb2RlY0RlZi50eXBlOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6IC8vIENvZGVjIGl0c2VsZi4KICAgICAgICAgICAgICAgIGlmICghY29kZWNPcHRpb25zLmVuY29kaW5nTmFtZSkKICAgICAgICAgICAgICAgICAgICBjb2RlY09wdGlvbnMuZW5jb2RpbmdOYW1lID0gZW5jOwoKICAgICAgICAgICAgICAgIC8vIFRoZSBjb2RlYyBmdW5jdGlvbiBtdXN0IGxvYWQgYWxsIHRhYmxlcyBhbmQgcmV0dXJuIG9iamVjdCB3aXRoIC5lbmNvZGVyIGFuZCAuZGVjb2RlciBtZXRob2RzLgogICAgICAgICAgICAgICAgLy8gSXQnbGwgYmUgY2FsbGVkIG9ubHkgb25jZSAoZm9yIGVhY2ggZGlmZmVyZW50IG9wdGlvbnMgb2JqZWN0KS4KICAgICAgICAgICAgICAgIGNvZGVjID0gbmV3IGNvZGVjRGVmKGNvZGVjT3B0aW9ucywgaWNvbnYpOwoKICAgICAgICAgICAgICAgIGljb252Ll9jb2RlY0RhdGFDYWNoZVtjb2RlY09wdGlvbnMuZW5jb2RpbmdOYW1lXSA9IGNvZGVjOyAvLyBTYXZlIGl0IHRvIGJlIHJldXNlZCBsYXRlci4KICAgICAgICAgICAgICAgIHJldHVybiBjb2RlYzsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkVuY29kaW5nIG5vdCByZWNvZ25pemVkOiAnIiArIGVuY29kaW5nICsgIicgKHNlYXJjaGVkIGFzOiAnIitlbmMrIicpIik7CiAgICAgICAgfQogICAgfQp9CgppY29udi5nZXRFbmNvZGVyID0gZnVuY3Rpb24gZ2V0RW5jb2RlcihlbmNvZGluZywgb3B0aW9ucykgewogICAgdmFyIGNvZGVjID0gaWNvbnYuZ2V0Q29kZWMoZW5jb2RpbmcpLAogICAgICAgIGVuY29kZXIgPSBuZXcgY29kZWMuZW5jb2RlcihvcHRpb25zLCBjb2RlYyk7CgogICAgaWYgKGNvZGVjLmJvbUF3YXJlICYmIG9wdGlvbnMgJiYgb3B0aW9ucy5hZGRCT00pCiAgICAgICAgZW5jb2RlciA9IG5ldyBib21IYW5kbGluZy5QcmVwZW5kQk9NKGVuY29kZXIsIG9wdGlvbnMpOwoKICAgIHJldHVybiBlbmNvZGVyOwp9CgppY29udi5nZXREZWNvZGVyID0gZnVuY3Rpb24gZ2V0RGVjb2RlcihlbmNvZGluZywgb3B0aW9ucykgewogICAgdmFyIGNvZGVjID0gaWNvbnYuZ2V0Q29kZWMoZW5jb2RpbmcpLAogICAgICAgIGRlY29kZXIgPSBuZXcgY29kZWMuZGVjb2RlcihvcHRpb25zLCBjb2RlYyk7CgogICAgaWYgKGNvZGVjLmJvbUF3YXJlICYmICEob3B0aW9ucyAmJiBvcHRpb25zLnN0cmlwQk9NID09PSBmYWxzZSkpCiAgICAgICAgZGVjb2RlciA9IG5ldyBib21IYW5kbGluZy5TdHJpcEJPTShkZWNvZGVyLCBvcHRpb25zKTsKCiAgICByZXR1cm4gZGVjb2RlcjsKfQoKCi8vIExvYWQgZXh0ZW5zaW9ucyBpbiBOb2RlLiBBbGwgb2YgdGhlbSBhcmUgb21pdHRlZCBpbiBCcm93c2VyaWZ5IGJ1aWxkIHZpYSAnYnJvd3NlcicgZmllbGQgaW4gcGFja2FnZS5qc29uLgp2YXIgbm9kZVZlciA9IHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLnZlcnNpb25zICYmIHByb2Nlc3MudmVyc2lvbnMubm9kZTsKaWYgKG5vZGVWZXIpIHsKCiAgICAvLyBMb2FkIHN0cmVhbWluZyBzdXBwb3J0IGluIE5vZGUgdjAuMTArCiAgICB2YXIgbm9kZVZlckFyciA9IG5vZGVWZXIuc3BsaXQoIi4iKS5tYXAoTnVtYmVyKTsKICAgIGlmIChub2RlVmVyQXJyWzBdID4gMCB8fCBub2RlVmVyQXJyWzFdID49IDEwKSB7CiAgICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXygxODUpKGljb252KTsKICAgIH0KCiAgICAvLyBMb2FkIE5vZGUgcHJpbWl0aXZlIGV4dGVuc2lvbnMuCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4NikoaWNvbnYpOwp9CgppZiAoZmFsc2UpIHsKICAgIGNvbnNvbGUuZXJyb3IoImljb252LWxpdGUgd2FybmluZzogamF2YXNjcmlwdCBmaWxlcyB1c2UgZW5jb2RpbmcgZGlmZmVyZW50IGZyb20gdXRmLTguIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXNodHVjaGtpbi9pY29udi1saXRlL3dpa2kvSmF2YXNjcmlwdC1zb3VyY2UtZmlsZS1lbmNvZGluZ3MgZm9yIG1vcmUgaW5mby4iKTsKfQoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oMTEpKSkKCi8qKiovIH0pLAovKiA1MyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Cgptb2R1bGUuZXhwb3J0cyA9IFtbIjAiLCJcdTAwMDAiLDEyNywi4oKsIl0sWyI4MTQwIiwi5LiC5LiE5LiF5LiG5LiP5LiS5LiX5Lif5Lig5Lih5Lij5Lim5Lip5Liu5Liv5Lix5Liz5Li15Li35Li85LmA5LmB5LmC5LmE5LmG5LmK5LmR5LmV5LmX5Lma5Lmb5Lmi5Lmj5Lmk5Lml5Lmn5Lmo5LmqIiw1LCLkubLkubQiLDksIuS5vyIsNiwi5LqH5LqKIl0sWyI4MTgwIiwi5LqQ5LqW5LqX5LqZ5Lqc5Lqd5Lqe5Lqj5Lqq5Lqv5Lqw5Lqx5Lq05Lq25Lq35Lq45Lq55Lq85Lq95Lq+5LuI5LuM5LuP5LuQ5LuS5Lua5Lub5Luc5Lug5Lui5Lum5Lun5Lup5Lut5Luu5Luv5Lux5Lu05Lu45Lu55Lu65Lu85Lu+5LyA5LyCIiw2LCLkvIvkvIzkvJIiLDQsIuS8nOS8neS8oeS8o+S8qOS8qeS8rOS8reS8ruS8seS8s+S8teS8t+S8ueS8u+S8viIsNCwi5L2E5L2F5L2HIiw1LCLkvZLkvZTkvZbkvaHkvaLkvabkvajkvarkvavkva3kva7kvbHkvbLkvbXkvbfkvbjkvbnkvbrkvb3kvoDkvoHkvoLkvoXkvobkvofkvorkvozkvo7kvpDkvpLkvpPkvpXkvpbkvpjkvpnkvprkvpzkvp7kvp/kvqHkvqIiXSxbIjgyNDAiLCLkvqTkvqvkvq3kvrAiLDQsIuS+tiIsOCwi5L+A5L+B5L+C5L+G5L+H5L+I5L+J5L+L5L+M5L+N5L+SIiw0LCLkv5nkv5vkv6Dkv6Lkv6Tkv6Xkv6fkv6vkv6zkv7Dkv7Lkv7Tkv7Xkv7bkv7fkv7nkv7vkv7zkv73kv78iLDExXSxbIjgyODAiLCLlgIvlgI7lgJDlgJHlgJPlgJXlgJblgJflgJvlgJ3lgJ7lgKDlgKLlgKPlgKTlgKflgKvlgK8iLDEwLCLlgLvlgL3lgL/lgYDlgYHlgYLlgYTlgYXlgYblgYnlgYrlgYvlgY3lgZAiLDQsIuWBluWBl+WBmOWBmeWBm+WBnSIsNywi5YGmIiw1LCLlga0iLDgsIuWBuOWBueWBuuWBvOWBveWCgeWCguWCg+WChOWChuWCh+WCieWCiuWCi+WCjOWCjiIsMjAsIuWCpOWCpuWCquWCq+WCrSIsNCwi5YKzIiw2LCLlgrwiXSxbIjgzNDAiLCLlgr0iLDE3LCLlg5AiLDUsIuWDl+WDmOWDmeWDmyIsMTAsIuWDqOWDqeWDquWDq+WDr+WDsOWDseWDsuWDtOWDtiIsNCwi5YO8Iiw5LCLlhIgiXSxbIjgzODAiLCLlhInlhIrlhIwiLDUsIuWEkyIsMTMsIuWEoiIsMjgsIuWFguWFh+WFiuWFjOWFjuWFj+WFkOWFkuWFk+WFl+WFmOWFmeWFm+WFnSIsNCwi5YWj5YWk5YWm5YWn5YWp5YWq5YWv5YWy5YW65YW+5YW/5YaD5YaE5YaG5YaH5YaK5YaL5YaO5YaP5YaQ5YaR5YaT5YaU5YaY5Yaa5Yad5Yae5Yaf5Yah5Yaj5YamIiw0LCLlhq3lhq7lhrTlhrjlhrnlhrrlhr7lhr/lh4Hlh4Llh4Plh4Xlh4jlh4rlh43lh47lh5Dlh5IiLDVdLFsiODQ0MCIsIuWHmOWHmeWHmuWHnOWHnuWHn+WHouWHo+WHpSIsNSwi5Yes5Yeu5Yex5Yey5Ye05Ye35Ye+5YiE5YiF5YiJ5YiL5YiM5YiP5YiQ5YiT5YiU5YiV5Yic5Yie5Yif5Yih5Yii5Yij5Yil5Yim5Yin5Yiq5Yis5Yiv5Yix5Yiy5Yi05Yi15Yi85Yi+5YmEIiw1LCLliYvliY7liY/liZLliZPliZXliZfliZgiXSxbIjg0ODAiLCLliZnliZrliZvliZ3liZ/liaDliaLliaPliaTliabliajliavliazlia3lia7libDlibHlibMiLDksIuWJvuWKgOWKgyIsNCwi5YqJIiw2LCLlipHlipLlipQiLDYsIuWKnOWKpOWKpeWKpuWKp+WKruWKr+WKsOWKtCIsOSwi5YuA5YuB5YuC5YuE5YuF5YuG5YuI5YuK5YuM5YuN5YuO5YuP5YuR5YuT5YuU5YuV5YuX5YuZIiw1LCLli6Dli6Hli6Lli6Pli6UiLDEwLCLli7EiLDcsIuWLu+WLvOWLveWMgeWMguWMg+WMhOWMh+WMieWMiuWMi+WMjOWMjiJdLFsiODU0MCIsIuWMkeWMkuWMk+WMlOWMmOWMm+WMnOWMnuWMn+WMouWMpOWMpeWMp+WMqOWMqeWMq+WMrOWMreWMryIsOSwi5Yy85Yy95Y2A5Y2C5Y2E5Y2G5Y2L5Y2M5Y2N5Y2Q5Y2U5Y2Y5Y2Z5Y2b5Y2d5Y2l5Y2o5Y2q5Y2s5Y2t5Y2y5Y225Y255Y275Y285Y295Y2+5Y6A5Y6B5Y6D5Y6H5Y6I5Y6K5Y6O5Y6PIl0sWyI4NTgwIiwi5Y6QIiw0LCLljpbljpfljpnljpvljpzljp7ljqDljqHljqTljqfljqrljqvljqzljq3ljq8iLDYsIuWOt+WOuOWOueWOuuWOvOWOveWOvuWPgOWPgyIsNCwi5Y+O5Y+P5Y+Q5Y+S5Y+T5Y+V5Y+a5Y+c5Y+d5Y+e5Y+h5Y+i5Y+n5Y+05Y+65Y++5Y+/5ZCA5ZCC5ZCF5ZCH5ZCL5ZCU5ZCY5ZCZ5ZCa5ZCc5ZCi5ZCk5ZCl5ZCq5ZCw5ZCz5ZC25ZC35ZC65ZC95ZC/5ZGB5ZGC5ZGE5ZGF5ZGH5ZGJ5ZGM5ZGN5ZGO5ZGP5ZGR5ZGa5ZGdIiw0LCLlkaPlkaXlkaflkakiLDcsIuWRtOWRueWRuuWRvuWRv+WSgeWSg+WSheWSh+WSiOWSieWSiuWSjeWSkeWSk+WSl+WSmOWSnOWSnuWSn+WSoOWSoSJdLFsiODY0MCIsIuWSouWSpeWSruWSsOWSsuWSteWStuWSt+WSueWSuuWSvOWSvuWTg+WTheWTiuWTi+WTluWTmOWTm+WToCIsNCwi5ZOr5ZOs5ZOv5ZOw5ZOx5ZO0Iiw1LCLlk7vlk77llIDllILllIPllITllIXllIjllIoiLDQsIuWUkuWUk+WUlSIsNSwi5ZSc5ZSd5ZSe5ZSf5ZSh5ZSl5ZSmIl0sWyI4NjgwIiwi5ZSo5ZSp5ZSr5ZSt5ZSy5ZS05ZS15ZS25ZS45ZS55ZS65ZS75ZS95ZWA5ZWC5ZWF5ZWH5ZWI5ZWLIiw0LCLllZHllZLllZPllZTllZciLDQsIuWVneWVnuWVn+WVoOWVouWVo+WVqOWVqeWVq+WVryIsNSwi5ZW55ZW65ZW95ZW/5ZaF5ZaG5ZaM5ZaN5ZaO5ZaQ5ZaS5ZaT5ZaV5ZaW5ZaX5Zaa5Zab5Zae5ZagIiw2LCLllqgiLDgsIuWWsuWWtOWWtuWWuOWWuuWWvOWWvyIsNCwi5ZeG5ZeH5ZeI5ZeK5ZeL5ZeO5ZeP5ZeQ5ZeV5ZeXIiw0LCLll57ll6Dll6Lll6fll6nll63ll67ll7Dll7Hll7Tll7bll7giLDQsIuWXv+WYguWYg+WYhOWYhSJdLFsiODc0MCIsIuWYhuWYh+WYiuWYi+WYjeWYkCIsNywi5ZiZ5Zia5Zic5Zid5Zig5Zih5Zii5Zil5Zim5Zio5Zip5Ziq5Zir5Ziu5Ziv5Ziw5Ziz5Zi15Zi35Zi45Zi65Zi85Zi95Zi+5ZmAIiwxMSwi5ZmPIiw0LCLlmZXlmZblmZrlmZvlmZ0iLDRdLFsiODc4MCIsIuWZo+WZpeWZpuWZp+WZreWZruWZr+WZsOWZsuWZs+WZtOWZteWZt+WZuOWZueWZuuWZvSIsNywi5ZqHIiw2LCLlmpDlmpHlmpLlmpQiLDE0LCLlmqQiLDEwLCLlmrAiLDYsIuWauOWaueWauuWau+WavSIsMTIsIuWbiyIsOCwi5ZuV5ZuW5ZuY5ZuZ5Zuc5Zuj5ZulIiw1LCLlm6zlm67lm6/lm7Llm7Plm7blm7flm7jlm7vlm7zlnIDlnIHlnILlnIXlnIflnIsiLDZdLFsiODg0MCIsIuWckiIsOSwi5Zyd5Zye5Zyg5Zyh5Zyi5Zyk5Zyl5Zym5Zyn5Zyr5Zyx5Zyy5Zy0Iiw0LCLlnLzlnL3lnL/lnYHlnYPlnYTlnYXlnYblnYjlnYnlnYvlnZIiLDQsIuWdmOWdmeWdouWdo+WdpeWdp+WdrOWdruWdsOWdseWdsuWdtOWdteWduOWdueWduuWdveWdvuWdv+WegCJdLFsiODg4MCIsIuWegeWeh+WeiOWeieWeiuWejSIsNCwi5Z6UIiw2LCLlnpzlnp3lnp7lnp/lnqXlnqjlnqrlnqzlnq/lnrDlnrHlnrPlnrXlnrblnrflnrkiLDgsIuWfhCIsNiwi5Z+M5Z+N5Z+Q5Z+R5Z+T5Z+W5Z+X5Z+b5Z+c5Z+e5Z+h5Z+i5Z+j5Z+lIiw3LCLln67ln7Dln7Hln7Lln7Pln7Xln7bln7fln7vln7zln77ln7/loIHloIPloITloIXloIjloInloIrloIzloI7loI/loJDloJLloJPloJTloJbloJfloJjloJrloJvloJzloJ3loJ/loKLloKPloKUiLDQsIuWgqyIsNCwi5aCx5aCy5aCz5aC05aC2Iiw3XSxbIjg5NDAiLCLloL4iLDUsIuWhhSIsNiwi5aGO5aGP5aGQ5aGS5aGT5aGV5aGW5aGX5aGZIiw0LCLloZ8iLDUsIuWhpiIsNCwi5aGtIiwxNiwi5aG/5aKC5aKE5aKG5aKH5aKI5aKK5aKL5aKMIl0sWyI4OTgwIiwi5aKNIiw0LCLlopQiLDQsIuWim+WinOWineWioCIsNywi5aKqIiwxNywi5aK95aK+5aK/5aOA5aOC5aOD5aOE5aOGIiwxMCwi5aOS5aOT5aOU5aOWIiwxMywi5aOlIiw1LCLlo63lo6/lo7Hlo7Llo7Tlo7Xlo7flo7jlo7oiLDcsIuWkg+WkheWkhuWkiCIsNCwi5aSO5aSQ5aSR5aSS5aST5aSX5aSY5aSb5aSd5aSe5aSg5aSh5aSi5aSj5aSm5aSo5aSs5aSw5aSy5aSz5aS15aS25aS7Il0sWyI4YTQwIiwi5aS95aS+5aS/5aWA5aWD5aWF5aWG5aWK5aWM5aWN5aWQ5aWS5aWT5aWZ5aWbIiw0LCLlpaHlpaPlpaTlpaYiLDEyLCLlpbXlpbflpbrlpbvlpbzlpb7lpb/lpoDlpoXlponlpovlpozlpo7lpo/lppDlppHlppTlppXlppjlpprlppvlppzlpp3lpp/lpqDlpqHlpqLlpqYiXSxbIjhhODAiLCLlpqflpqzlpq3lprDlprHlprMiLDUsIuWmuuWmvOWmveWmvyIsNiwi5aeH5aeI5aeJ5aeM5aeN5aeO5aeP5aeV5aeW5aeZ5aeb5aeeIiw0LCLlp6Tlp6blp6flp6nlp6rlp6vlp60iLDExLCLlp7rlp7zlp73lp77lqIDlqILlqIrlqIvlqI3lqI7lqI/lqJDlqJLlqJTlqJXlqJblqJflqJnlqJrlqJvlqJ3lqJ7lqKHlqKLlqKTlqKblqKflqKjlqKoiLDYsIuWos+WoteWotyIsNCwi5ai95ai+5ai/5amBIiw0LCLlqYflqYjlqYsiLDksIuWpluWpl+WpmOWpmeWpmyIsNV0sWyI4YjQwIiwi5amh5amj5amk5aml5amm5amo5amp5amrIiw4LCLlqbjlqbnlqbvlqbzlqb3lqb7lqoAiLDE3LCLlqpMiLDYsIuWqnCIsMTMsIuWqq+WqrCJdLFsiOGI4MCIsIuWqrSIsNCwi5aq05aq25aq35aq5Iiw0LCLlqr/lq4Dlq4MiLDUsIuWriuWri+WrjSIsNCwi5auT5auV5auX5auZ5aua5aub5aud5aue5auf5aui5auk5aul5aun5auo5auq5ausIiw0LCLlq7IiLDIyLCLlrIoiLDExLCLlrJgiLDI1LCLlrLPlrLXlrLblrLgiLDcsIuWtgSIsNl0sWyI4YzQwIiwi5a2IIiw3LCLlrZLlrZblrZ7lraDlraHlraflrajlravlra3lra7lra/lrbLlrbTlrbblrbflrbjlrbnlrbvlrbzlrb7lrb/lroLlroblrorlro3lro7lrpDlrpHlrpLlrpTlrpblrp/lrqflrqjlrqnlrqzlrq3lrq7lrq/lrrHlrrLlrrflrrrlrrvlrrzlr4Dlr4Hlr4Plr4jlr4nlr4rlr4vlr43lr47lr48iXSxbIjhjODAiLCLlr5Hlr5QiLDgsIuWvoOWvouWvo+WvpuWvp+WvqSIsNCwi5a+v5a+xIiw2LCLlr73lr77lsIDlsILlsIPlsIXlsIflsIjlsIvlsIzlsI3lsI7lsJDlsJLlsJPlsJflsJnlsJvlsJ7lsJ/lsKDlsKHlsKPlsKblsKjlsKnlsKrlsKvlsK3lsK7lsK/lsLDlsLLlsLPlsLXlsLblsLflsYPlsYTlsYblsYflsYzlsY3lsZLlsZPlsZTlsZblsZflsZjlsZrlsZvlsZzlsZ3lsZ/lsaLlsaTlsaciLDYsIuWxsOWxsiIsNiwi5bG75bG85bG95bG+5bKA5bKDIiw0LCLlsonlsorlsovlso7lso/lspLlspPlspXlsp0iLDQsIuWypCIsNF0sWyI4ZDQwIiwi5bKq5bKu5bKv5bKw5bKy5bK05bK25bK55bK65bK75bK85bK+5bOA5bOC5bOD5bOFIiw1LCLls4wiLDUsIuWzkyIsNSwi5bOaIiw2LCLls6Lls6Pls6fls6nls6vls6zls67ls6/ls7EiLDksIuWzvCIsNF0sWyI4ZDgwIiwi5bSB5bSE5bSF5bSIIiw1LCLltI8iLDQsIuW0leW0l+W0mOW0meW0muW0nOW0neW0nyIsNCwi5bSl5bSo5bSq5bSr5bSs5bSvIiw0LCLltLUiLDcsIuW0vyIsNywi5bWI5bWJ5bWNIiwxMCwi5bWZ5bWa5bWc5bWeIiwxMCwi5bWq5bWt5bWu5bWw5bWx5bWy5bWz5bW1IiwxMiwi5baDIiwyMSwi5baa5bab5bac5bae5baf5bagIl0sWyI4ZTQwIiwi5bahIiwyMSwi5ba4IiwxMiwi5beGIiw2LCLlt44iLDEyLCLlt5zlt5/lt6Dlt6Plt6Tlt6rlt6zlt60iXSxbIjhlODAiLCLlt7Dlt7Xlt7blt7giLDQsIuW3v+W4gOW4hOW4h+W4ieW4iuW4i+W4jeW4juW4kuW4k+W4l+W4niIsNywi5bioIiw0LCLluK/luLDluLIiLDQsIuW4ueW4uuW4vuW4v+W5gOW5geW5g+W5hiIsNSwi5bmNIiw2LCLluZYiLDQsIuW5nOW5neW5n+W5oOW5oyIsMTQsIuW5teW5t+W5ueW5vuW6geW6guW6g+W6heW6iOW6ieW6jOW6jeW6juW6kuW6mOW6m+W6neW6oeW6ouW6o+W6pOW6qCIsNCwi5bquIiw0LCLlurTlurrlurvlurzlur3lur8iLDZdLFsiOGY0MCIsIuW7huW7h+W7iOW7iyIsNSwi5buU5buV5buX5buY5buZ5bua5bucIiwxMSwi5bup5burIiw4LCLlu7Xlu7jlu7nlu7vlu7zlu73lvIXlvIblvIflvInlvIzlvI3lvI7lvJDlvJLlvJTlvJblvJnlvJrlvJzlvJ3lvJ7lvKHlvKLlvKPlvKQiXSxbIjhmODAiLCLlvKjlvKvlvKzlvK7lvLDlvLIiLDYsIuW8u+W8veW8vuW8v+W9gSIsMTQsIuW9keW9lOW9meW9muW9m+W9nOW9nuW9n+W9oOW9o+W9peW9p+W9qOW9q+W9ruW9r+W9suW9tOW9teW9tuW9uOW9uuW9veW9vuW9v+W+g+W+huW+jeW+juW+j+W+keW+k+W+lOW+luW+muW+m+W+neW+nuW+n+W+oOW+oiIsNSwi5b6p5b6r5b6s5b6vIiw1LCLlvrblvrjlvrnlvrrlvrvlvr4iLDQsIuW/h+W/iOW/iuW/i+W/juW/k+W/lOW/leW/muW/m+W/nOW/nuW/n+W/ouW/o+W/peW/puW/qOW/qeW/rOW/r+W/sOW/suW/s+W/tOW/tuW/t+W/ueW/uuW/vOaAhyJdLFsiOTA0MCIsIuaAiOaAieaAi+aAjOaAkOaAkeaAk+aAl+aAmOaAmuaAnuaAn+aAouaAo+aApOaArOaAreaAruaAsCIsNCwi5oC2Iiw0LCLmgL3mgL7mgYDmgYQiLDYsIuaBjOaBjuaBj+aBkeaBk+aBlOaBluaBl+aBmOaBm+aBnOaBnuaBn+aBoOaBoeaBpeaBpuaBruaBseaBsuaBtOaBteaBt+aBvuaCgCJdLFsiOTA4MCIsIuaCgeaCguaCheaChuaCh+aCiOaCiuaCi+aCjuaCj+aCkOaCkeaCk+aCleaCl+aCmOaCmeaCnOaCnuaCoeaCouaCpOaCpeaCp+aCqeaCquaCruaCsOaCs+aCteaCtuaCt+aCueaCuuaCvSIsNywi5oOH5oOI5oOJ5oOMIiw0LCLmg5Lmg5Pmg5Tmg5bmg5fmg5nmg5vmg57mg6EiLDQsIuaDquaDseaDsuaDteaDt+aDuOaDuyIsNCwi5oSC5oSD5oSE5oSF5oSH5oSK5oSL5oSM5oSQIiw0LCLmhJbmhJfmhJjmhJnmhJvmhJzmhJ3mhJ7mhKHmhKLmhKXmhKjmhKnmhKrmhKwiLDE4LCLmhYAiLDZdLFsiOTE0MCIsIuaFh+aFieaFi+aFjeaFj+aFkOaFkuaFk+aFlOaFliIsNiwi5oWe5oWf5oWg5oWh5oWj5oWk5oWl5oWm5oWpIiw2LCLmhbHmhbLmhbPmhbTmhbbmhbgiLDE4LCLmhozmho3mho8iLDQsIuaGlSJdLFsiOTE4MCIsIuaGliIsNiwi5oaeIiw4LCLmhqrmhqvmhq0iLDksIuaGuCIsNSwi5oa/5oeA5oeB5oeDIiw0LCLmh4nmh4wiLDQsIuaHk+aHlSIsMTYsIuaHpyIsMTMsIuaHtiIsOCwi5oiAIiw1LCLmiIfmiInmiJPmiJTmiJnmiJzmiJ3miJ7miKDmiKPmiKbmiKfmiKjmiKnmiKvmiK3miK/miLDmiLHmiLLmiLXmiLbmiLgiLDQsIuaJguaJhOaJheaJhuaJiiJdLFsiOTI0MCIsIuaJj+aJkOaJleaJluaJl+aJmeaJmuaJnCIsNiwi5omk5oml5omo5omx5omy5om05om15om35om45om65om75om95oqB5oqC5oqD5oqF5oqG5oqH5oqI5oqLIiw1LCLmipTmipnmipzmip3mip7miqPmiqbmiqfmiqnmiqrmiq3miq7miq/mirDmirLmirPmirTmirbmirfmirjmirrmir7mi4Dmi4EiXSxbIjkyODAiLCLmi4Pmi4vmi4/mi5Hmi5Xmi53mi57mi6Dmi6Hmi6Tmi6rmi6vmi7Dmi7Lmi7Xmi7jmi7nmi7rmi7vmjIDmjIPmjITmjIXmjIbmjIrmjIvmjIzmjI3mjI/mjJDmjJLmjJPmjJTmjJXmjJfmjJjmjJnmjJzmjKbmjKfmjKnmjKzmjK3mjK7mjLDmjLHmjLMiLDUsIuaMu+aMvOaMvuaMv+aNgOaNgeaNhOaNh+aNiOaNiuaNkeaNkuaNk+aNlOaNliIsNywi5o2g5o2k5o2l5o2m5o2o5o2q5o2r5o2s5o2v5o2w5o2y5o2z5o205o215o245o255o285o295o2+5o2/5o6B5o6D5o6E5o6F5o6G5o6L5o6N5o6R5o6T5o6U5o6V5o6X5o6ZIiw2LCLmjqHmjqTmjqbmjqvmjq/mjrHmjrLmjrXmjrbmjrnmjrvmjr3mjr/mj4AiXSxbIjkzNDAiLCLmj4Hmj4Lmj4Pmj4Xmj4fmj4jmj4rmj4vmj4zmj5Hmj5Pmj5Tmj5Xmj5ciLDYsIuaPn+aPouaPpCIsNCwi5o+r5o+s5o+u5o+v5o+w5o+x5o+z5o+15o+35o+55o+65o+75o+85o++5pCD5pCE5pCGIiw0LCLmkI3mkI7mkJHmkJLmkJUiLDUsIuaQneaQn+aQouaQo+aQpCJdLFsiOTM4MCIsIuaQpeaQp+aQqOaQqeaQq+aQriIsNSwi5pC1Iiw0LCLmkLvmkLzmkL7mkYDmkYLmkYPmkYnmkYsiLDYsIuaRk+aRleaRluaRl+aRmSIsNCwi5pGfIiw3LCLmkajmkarmkavmkazmka4iLDksIuaRuyIsNiwi5pKD5pKG5pKIIiw4LCLmkpPmkpTmkpfmkpjmkprmkpvmkpzmkp3mkp8iLDQsIuaSpeaSpuaSp+aSqOaSquaSq+aSr+aSseaSsuaSs+aStOaStuaSueaSu+aSveaSvuaSv+aTgeaTg+aThOaThiIsNiwi5pOP5pOR5pOT5pOU5pOV5pOW5pOZ5pOaIl0sWyI5NDQwIiwi5pOb5pOc5pOd5pOf5pOg5pOh5pOj5pOl5pOnIiwyNCwi5pSBIiw3LCLmlIoiLDcsIuaUkyIsNCwi5pSZIiw4XSxbIjk0ODAiLCLmlKLmlKPmlKTmlKYiLDQsIuaUrOaUreaUsOaUseaUsuaUs+aUt+aUuuaUvOaUveaVgCIsNCwi5pWG5pWH5pWK5pWL5pWN5pWO5pWQ5pWS5pWT5pWU5pWX5pWY5pWa5pWc5pWf5pWg5pWh5pWk5pWl5pWn5pWo5pWp5pWq5pWt5pWu5pWv5pWx5pWz5pW15pW25pW4IiwxNCwi5paI5paJ5paK5paN5paO5paP5paS5paU5paV5paW5paY5paa5pad5pae5pag5pai5paj5pam5pao5paq5pas5pau5paxIiw3LCLmlrrmlrvmlr7mlr/ml4Dml4Lml4fml4jml4nml4rml43ml5Dml5Hml5Pml5Tml5Xml5giLDcsIuaXoeaXo+aXpOaXquaXqyJdLFsiOTU0MCIsIuaXsuaXs+aXtOaXteaXuOaXueaXuyIsNCwi5piB5piE5piF5piH5piI5piJ5piL5piN5piQ5piR5piS5piW5piX5piY5pia5pib5pic5pie5pih5pii5pij5pik5pim5pip5piq5pir5pis5piu5piw5piy5piz5pi3Iiw0LCLmmL3mmL/mmYDmmYLmmYQiLDYsIuaZjeaZjuaZkOaZkeaZmCJdLFsiOTU4MCIsIuaZmeaZm+aZnOaZneaZnuaZoOaZouaZo+aZpeaZp+aZqSIsNCwi5pmx5pmy5pmz5pm15pm45pm55pm75pm85pm95pm/5pqA5pqB5pqD5pqF5pqG5pqI5pqJ5pqK5pqL5pqN5pqO5pqP5pqQ5pqS5pqT5pqU5pqV5pqYIiw0LCLmmp4iLDgsIuaaqSIsNCwi5pqvIiw0LCLmmrXmmrbmmrfmmrjmmrrmmrvmmrzmmr3mmr8iLDI1LCLmm5rmm54iLDcsIuabp+abqOabqiIsNSwi5pux5pu15pu25pu45pu65pu75pu95pyB5pyC5pyDIl0sWyI5NjQwIiwi5pyE5pyF5pyG5pyH5pyM5pyO5pyP5pyR5pyS5pyT5pyW5pyY5pyZ5pya5pyc5pye5pygIiw1LCLmnKfmnKnmnK7mnLDmnLLmnLPmnLbmnLfmnLjmnLnmnLvmnLzmnL7mnL/mnYHmnYTmnYXmnYfmnYrmnYvmnY3mnZLmnZTmnZXmnZciLDQsIuadneadouado+adpOadpuadp+adq+adrOadruadseadtOadtiJdLFsiOTY4MCIsIuaduOadueaduuadu+adveaegOaeguaeg+aeheaehuaeiOaeiuaejOaejeaejuaej+aekeaekuaek+aelOaeluaemeaem+aen+aeoOaeoeaepOaepuaeqeaerOaeruaeseaesuaetOaeuSIsNywi5p+C5p+FIiw5LCLmn5Xmn5bmn5fmn5vmn5/mn6Hmn6Pmn6Tmn6bmn6fmn6jmn6rmn6vmn63mn67mn7Lmn7UiLDcsIuafvuaggeagguagg+aghOaghuagjeagkOagkuaglOagleagmCIsNCwi5qCe5qCf5qCg5qCiIiw2LCLmoKsiLDYsIuagtOagteagtuaguuagu+agv+ahh+ahi+ahjeahj+ahkuahliIsNV0sWyI5NzQwIiwi5qGc5qGd5qGe5qGf5qGq5qGsIiw3LCLmobXmobgiLDgsIuaiguaihOaihyIsNywi5qKQ5qKR5qKS5qKU5qKV5qKW5qKYIiw5LCLmoqPmoqTmoqXmoqnmoqrmoqvmoqzmoq7morHmorLmorTmorbmorfmorgiXSxbIjk3ODAiLCLmorkiLDYsIuajgeajgyIsNSwi5qOK5qOM5qOO5qOP5qOQ5qOR5qOT5qOU5qOW5qOX5qOZ5qObIiw0LCLmo6Hmo6Lmo6QiLDksIuajr+ajsuajs+ajtOajtuajt+ajuOaju+ajveajvuajv+akgOakguakg+akhOakhiIsNCwi5qSM5qSP5qSR5qSTIiwxMSwi5qSh5qSi5qSj5qSlIiw3LCLmpK7mpK/mpLHmpLLmpLPmpLXmpLbmpLfmpLjmpLrmpLvmpLzmpL7mpYDmpYHmpYMiLDE2LCLmpZXmpZbmpZjmpZnmpZvmpZzmpZ8iXSxbIjk4NDAiLCLmpaHmpaLmpaTmpaXmpafmpajmpanmparmpazmpa3mpa/mpbDmpbIiLDQsIualuualu+alvealvualv+amgeamg+amheamiuami+amjOamjiIsNSwi5qaW5qaX5qaZ5qaa5qadIiw5LCLmpqnmpqrmpqzmpq7mpq/mprDmprLmprPmprXmprbmprjmprnmprrmprzmpr0iXSxbIjk4ODAiLCLmpr7mpr/mp4Dmp4IiLDcsIuani+anjeanj+ankeankuank+anlSIsNSwi5qec5qed5qee5qehIiwxMSwi5qeu5qev5qew5qex5qezIiw5LCLmp77mqIAiLDksIuaoiyIsMTEsIuaomSIsNSwi5qig5qiiIiw1LCLmqKnmqKvmqKzmqK3mqK7mqLDmqLLmqLPmqLTmqLYiLDYsIuaovyIsNCwi5qmF5qmG5qmIIiw3LCLmqZEiLDYsIuapmiJdLFsiOTk0MCIsIuapnCIsNCwi5qmi5qmj5qmk5qmmIiwxMCwi5qmyIiw2LCLmqbrmqbvmqb3mqb7mqb/mqoHmqoLmqoPmqoUiLDgsIuaqj+aqkiIsNCwi5qqYIiw3LCLmqqEiLDVdLFsiOTk4MCIsIuaqp+aqqOaqquaqrSIsMTE0LCLmrKXmrKbmrKgiLDZdLFsiOWE0MCIsIuasr+assOasseass+astOasteastuasuOasu+asvOasveasv+atgOatgeatguathOatheatiOatiuati+atjSIsMTEsIuatmiIsNywi5q2o5q2p5q2rIiwxMywi5q265q295q2+5q2/5q6A5q6F5q6IIl0sWyI5YTgwIiwi5q6M5q6O5q6P5q6Q5q6R5q6U5q6V5q6X5q6Y5q6Z5q6cIiw0LCLmrqIiLDcsIuauqyIsNywi5q625q64Iiw2LCLmr4Dmr4Pmr4Tmr4YiLDQsIuavjOavjuavkOavkeavmOavmuavnCIsNCwi5q+iIiw3LCLmr6zmr63mr67mr7Dmr7Hmr7Lmr7Tmr7bmr7fmr7jmr7rmr7vmr7zmr74iLDYsIuawiCIsNCwi5rCO5rCS5rCX5rCc5rCd5rCe5rCg5rCj5rCl5rCr5rCs5rCt5rCx5rCz5rC25rC35rC55rC65rC75rC85rC+5rC/5rGD5rGE5rGF5rGI5rGLIiw0LCLmsZHmsZLmsZPmsZbmsZgiXSxbIjliNDAiLCLmsZnmsZrmsaLmsaPmsaXmsabmsafmsasiLDQsIuaxseaxs+axteaxt+axuOaxuuaxu+axvOaxv+aygOayhOayh+ayiuayi+ayjeayjuaykeaykuayleayluayl+aymOaymuaynOayneaynuayoOayouayqOayrOayr+aysOaytOayteaytuayt+ayuuazgOazgeazguazg+azhuazh+aziOazi+azjeazjuazj+azkeazkuazmCJdLFsiOWI4MCIsIuazmeazmuaznOazneazn+azpOazpuazp+azqeazrOazreazsuaztOazueazv+a0gOa0gua0g+a0hea0hua0iOa0iea0iua0jea0j+a0kOa0kea0k+a0lOa0lea0lua0mOa0nOa0nea0nyIsNSwi5rSm5rSo5rSp5rSs5rSt5rSv5rSw5rS05rS25rS35rS45rS65rS/5rWA5rWC5rWE5rWJ5rWM5rWQ5rWV5rWW5rWX5rWY5rWb5rWd5rWf5rWh5rWi5rWk5rWl5rWn5rWo5rWr5rWs5rWt5rWw5rWx5rWy5rWz5rW15rW25rW55rW65rW75rW9Iiw0LCLmtoPmtoTmtobmtofmtormtovmto3mto/mtpDmtpLmtpYiLDQsIua2nOa2oua2pea2rOa2rea2sOa2sea2s+a2tOa2tua2t+a2uSIsNSwi5reB5reC5reD5reI5reJ5reKIl0sWyI5YzQwIiwi5reN5reO5reP5reQ5reS5reT5reU5reV5reX5rea5reb5rec5ref5rei5rej5rel5ren5reo5rep5req5ret5rev5rew5rey5re05re15re25re45re65re9Iiw3LCLmuIbmuIfmuIjmuInmuIvmuI/muJLmuJPmuJXmuJjmuJnmuJvmuJzmuJ7muJ/muKLmuKbmuKfmuKjmuKrmuKzmuK7muLDmuLHmuLPmuLUiXSxbIjljODAiLCLmuLbmuLfmuLnmuLsiLDcsIua5hSIsNywi5rmP5rmQ5rmR5rmS5rmV5rmX5rmZ5rma5rmc5rmd5rme5rmgIiwxMCwi5rms5rmt5rmvIiwxNCwi5rqA5rqB5rqC5rqE5rqH5rqI5rqKIiw0LCLmupEiLDYsIua6mea6mua6m+a6nea6nua6oOa6oea6o+a6pOa6pua6qOa6qea6q+a6rOa6rea6rua6sOa6s+a6tea6uOa6uea6vOa6vua6v+a7gOa7g+a7hOa7hea7hua7iOa7iea7iua7jOa7jea7jua7kOa7kua7lua7mOa7mea7m+a7nOa7nea7o+a7p+a7qiIsNV0sWyI5ZDQwIiwi5ruw5rux5ruy5ruz5ru15ru25ru35ru45ru6Iiw3LCLmvIPmvITmvIXmvIfmvIjmvIoiLDQsIua8kOa8kea8kua8liIsOSwi5ryh5ryi5ryj5ryl5rym5ryn5ryo5rys5ryu5ryw5ryy5ry05ry15ry3Iiw2LCLmvL/mvYDmvYHmvYIiXSxbIjlkODAiLCLmvYPmvYTmvYXmvYjmvYnmvYrmvYzmvY4iLDksIua9mea9mua9m+a9nea9n+a9oOa9oea9o+a9pOa9pea9pyIsNSwi5r2v5r2w5r2x5r2z5r215r225r235r255r275r29Iiw2LCLmvoXmvobmvofmvormvovmvo8iLDEyLCLmvp3mvp7mvp/mvqDmvqIiLDQsIua+qCIsMTAsIua+tOa+tea+t+a+uOa+uiIsNSwi5r+B5r+DIiw1LCLmv4oiLDYsIua/kyIsMTAsIua/n+a/oua/o+a/pOa/pSJdLFsiOWU0MCIsIua/piIsNywi5r+wIiwzMiwi54CSIiw3LCLngJwiLDYsIueApCIsNl0sWyI5ZTgwIiwi54CrIiw5LCLngLbngLfngLjngLoiLDE3LCLngY3ngY7ngZAiLDEzLCLngZ8iLDExLCLnga7ngbHngbLngbPngbTngbfngbnngbrngbvngb3ngoHngoLngoPngoTngobngofngojngovngozngo3ngo/ngpDngpHngpPngpfngpjngprngpvngp4iLDEyLCLngrDngrLngrTngrXngrbngrrngr7ngr/ng4Tng4Xng4bng4fng4nng4siLDEyLCLng5oiXSxbIjlmNDAiLCLng5zng53ng57ng6Dng6Hng6Lng6Png6Xng6rng67ng7AiLDYsIueDuOeDuueDu+eDvOeDviIsMTAsIueEiyIsNCwi54SR54SS54SU54SX54SbIiwxMCwi54SnIiw3LCLnhLLnhLPnhLQiXSxbIjlmODAiLCLnhLXnhLciLDEzLCLnhYbnhYfnhYjnhYnnhYvnhY3nhY8iLDEyLCLnhZ3nhZ8iLDQsIueFpeeFqSIsNCwi54Wv54Ww54Wx54W054W154W254W354W554W754W854W+Iiw1LCLnhoUiLDQsIueGi+eGjOeGjeeGjueGkOeGkeeGkueGk+eGleeGlueGl+eGmiIsNCwi54ahIiw2LCLnhqnnhqrnhqvnhq0iLDUsIueGtOeGtueGt+eGuOeGuiIsOCwi54eEIiw5LCLnh48iLDRdLFsiYTA0MCIsIueHliIsOSwi54eh54ei54ej54ek54em54eoIiw1LCLnh68iLDksIueHuiIsMTEsIueIhyIsMTldLFsiYTA4MCIsIueIm+eInOeIniIsOSwi54ip54ir54it54iu54iv54iy54iz54i054i654i854i+54mAIiw2LCLniYnniYrniYvniY7niY/niZDniZHniZPniZTniZXniZfniZjniZrniZzniZ7niaDniaPniaTniaXniajniarniavniaznia3nibDnibHnibPnibTnibbnibfnibjnibvnibznib3nioLnioPnioUiLDQsIueKjOeKjueKkOeKkeeKkyIsMTEsIueKoCIsMTEsIueKrueKseeKsueKs+eKteeKuiIsNiwi54uF54uG54uH54uJ54uK54uL54uM54uP54uR54uT54uU54uV54uW54uY54ua54ubIl0sWyJhMWExIiwi44CA44CB44CCwrfLicuHwqjjgIPjgIXigJTvvZ7igJbigKbigJjigJnigJzigJ3jgJTjgJXjgIgiLDcsIuOAluOAl+OAkOOAkcKxw5fDt+KItuKIp+KIqOKIkeKIj+KIquKIqeKIiOKIt+KImuKKpeKIpeKIoOKMkuKKmeKIq+KIruKJoeKJjOKJiOKIveKIneKJoOKJruKJr+KJpOKJpeKInuKIteKItOKZguKZgMKw4oCy4oCz4oSD77yEwqTvv6Dvv6HigLDCp+KEluKYhuKYheKXi+KXj+KXjuKXh+KXhuKWoeKWoOKWs+KWsuKAu+KGkuKGkOKGkeKGk+OAkyJdLFsiYTJhMSIsIuKFsCIsOV0sWyJhMmIxIiwi4pKIIiwxOSwi4pG0IiwxOSwi4pGgIiw5XSxbImEyZTUiLCLjiKAiLDldLFsiYTJmMSIsIuKFoCIsMTFdLFsiYTNhMSIsIu+8ge+8gu+8g++/pe+8hSIsODgsIu+/oyJdLFsiYTRhMSIsIuOBgSIsODJdLFsiYTVhMSIsIuOCoSIsODVdLFsiYTZhMSIsIs6RIiwxNiwizqMiLDZdLFsiYTZjMSIsIs6xIiwxNiwiz4MiLDZdLFsiYTZlMCIsIu+4te+4tu+4ue+4uu+4v++5gO+4ve+4vu+5ge+5gu+5g++5hCJdLFsiYTZlZSIsIu+4u++4vO+4t++4uO+4sSJdLFsiYTZmNCIsIu+4s++4tCJdLFsiYTdhMSIsItCQIiw1LCLQgdCWIiwyNV0sWyJhN2QxIiwi0LAiLDUsItGR0LYiLDI1XSxbImE4NDAiLCLLisuLy5nigJPigJXigKXigLXihIXihInihpbihpfihpjihpniiJXiiJ/iiKPiiZLiiabiiafiir/ilZAiLDM1LCLiloEiLDZdLFsiYTg4MCIsIuKWiCIsNywi4paT4paU4paV4pa84pa94pei4pej4pek4pel4piJ4oqV44CS44Cd44CeIl0sWyJhOGExIiwixIHDoceOw6DEk8OpxJvDqMSrw63HkMOsxY3Ds8eSw7LFq8O6x5TDuceWx5jHmsecw7zDqsmRIl0sWyJhOGJkIiwixYTFiCJdLFsiYThjMCIsIsmhIl0sWyJhOGM1Iiwi44SFIiwzNl0sWyJhOTQwIiwi44ChIiw4LCLjiqPjjo7jjo/jjpzjjp3jjp7jjqHjj4Tjj47jj5Hjj5Ljj5XvuLDvv6Lvv6QiXSxbImE5NTkiLCLihKHjiLEiXSxbImE5NWMiLCLigJAiXSxbImE5NjAiLCLjg7zjgpvjgpzjg73jg77jgIbjgp3jgp7vuYkiLDksIu+5lO+5le+5lu+5l++5mSIsOF0sWyJhOTgwIiwi77miIiw0LCLvuajvuanvuarvuasiXSxbImE5OTYiLCLjgIciXSxbImE5YTQiLCLilIAiLDc1XSxbImFhNDAiLCLni5zni53ni5/ni6IiLDUsIueLqueLq+eLteeLtueLueeLveeLvueLv+eMgOeMgueMhCIsNSwi54yL54yM54yN54yP54yQ54yR54yS54yU54yY54yZ54ya54yf54yg54yj54yk54ym54yn54yo54yt54yv54yw54yy54yz54y154y254y654y754y854y9542AIiw4XSxbImFhODAiLCLnjYnnjYrnjYvnjYznjY7njY/njZHnjZPnjZTnjZXnjZbnjZgiLDcsIueNoSIsMTAsIueNrueNsOeNsSJdLFsiYWI0MCIsIueNsiIsMTEsIueNvyIsNCwi546F546G546I546K546M546N546P546Q546S546T546U546V546X546Y546Z546a546c546d546e546g546h546jIiw1LCLnjqrnjqznjq3njrHnjrTnjrXnjrbnjrjnjrnnjrznjr3njr7njr/nj4Hnj4MiLDRdLFsiYWI4MCIsIuePi+ePjOePjuePkiIsNiwi54+a54+b54+c54+d54+f54+h54+i54+j54+k54+m54+o54+q54+r54+s54+u54+v54+w54+x54+zIiw0XSxbImFjNDAiLCLnj7giLDEwLCLnkITnkIfnkIjnkIvnkIznkI3nkI7nkJEiLDgsIueQnCIsNSwi55Cj55Ck55Cn55Cp55Cr55Ct55Cv55Cx55Cy55C3Iiw0LCLnkL3nkL7nkL/nkYDnkYIiLDExXSxbImFjODAiLCLnkY4iLDYsIueRlueRmOeRneeRoCIsMTIsIueRrueRr+eRsSIsNCwi55G455G555G6Il0sWyJhZDQwIiwi55G755G855G955G/55KC55KE55KF55KG55KI55KJ55KK55KM55KN55KP55KRIiwxMCwi55Kd55KfIiw3LCLnkqoiLDE1LCLnkrsiLDEyXSxbImFkODAiLCLnk4giLDksIueTkyIsOCwi55Od55Of55Oh55Ol55OnIiw2LCLnk7Dnk7Hnk7IiXSxbImFlNDAiLCLnk7Pnk7Xnk7giLDYsIueUgOeUgeeUgueUg+eUhSIsNywi55SO55SQ55SS55SU55SV55SW55SX55Sb55Sd55Se55SgIiw0LCLnlKbnlKfnlKrnlK7nlLTnlLbnlLnnlLznlL3nlL/nlYHnlYLnlYPnlYTnlYbnlYfnlYnnlYrnlY3nlZDnlZHnlZLnlZPnlZXnlZbnlZfnlZgiXSxbImFlODAiLCLnlZ0iLDcsIueVp+eVqOeVqeeVqyIsNiwi55Wz55W155W255W355W6Iiw0LCLnloDnloHnloLnloTnloXnlociXSxbImFmNDAiLCLnlojnlonnlornloznlo3nlo7nlpDnlpPnlpXnlpjnlpvnlpznlp7nlqLnlqYiLDQsIueWreeWtueWt+eWuueWu+eWv+eXgOeXgeeXhueXi+eXjOeXjueXj+eXkOeXkeeXk+eXl+eXmeeXmueXnOeXneeXn+eXoOeXoeeXpeeXqeeXrOeXreeXrueXr+eXsueXs+eXteeXtueXt+eXuOeXuueXu+eXveeXvueYgueYhOeYhueYhyJdLFsiYWY4MCIsIueYiOeYieeYi+eYjeeYjueYj+eYkeeYkueYk+eYlOeYlueYmueYnOeYneeYnueYoeeYo+eYp+eYqOeYrOeYrueYr+eYseeYsueYtueYt+eYueeYuueYu+eYveeZgeeZgueZhCJdLFsiYjA0MCIsIueZhSIsNiwi55mOIiw1LCLnmZXnmZciLDQsIueZneeZn+eZoOeZoeeZoueZpCIsNiwi55ms55mt55mu55mwIiw3LCLnmbnnmbrnmbznmb/nmoDnmoHnmoPnmoXnmonnmornmoznmo3nmo/nmpDnmpLnmpTnmpXnmpfnmpjnmprnmpsiXSxbImIwODAiLCLnmpwiLDcsIueapSIsOCwi55qv55qw55qz55q1Iiw5LCLnm4Dnm4Hnm4PllYrpmL/ln4PmjKjlk47llInlk4DnmpHnmYzolLznn67oib7noo3niLHpmpjpno3msKjlronkv7rmjInmmpflsrjog7rmoYjogq7mmILnm47lh7nmlZbnhqznv7HoooTlgrLlpaXmh4rmvrPoiq3mjYzmiZLlj63lkKfnrIblhavnlqTlt7Tmi5Tot4vpnbbmiorogJnlnZ3pnLjnvaLniLjnmb3mn4/nmb7mkYbkvbDotKXmi5znqJfmlpHnj63mkKzmibPoiKzpooHmnb/niYjmia7mi4zkvLTnk6PljYrlip7nu4rpgqbluK7moobmppzohoDnu5Hmo5Lno4XomozplZHlgo3osKToi57og57ljIXopJLliaUiXSxbImIxNDAiLCLnm4Tnm4fnm4nnm4vnm4znm5Pnm5Xnm5nnm5rnm5znm53nm57nm6AiLDQsIuebpiIsNywi55uw55uz55u155u255u355u655u755u955u/55yA55yC55yD55yF55yG55yK55yM55yOIiwxMCwi55yb55yc55yd55ye55yh55yj55yk55yl55yn55yq55yrIl0sWyJiMTgwIiwi55ys55yu55ywIiw0LCLnnLnnnLvnnL3nnL7nnL/nnYLnnYTnnYXnnYbnnYgiLDcsIuedkiIsNywi552c6JaE6Zu55L+d5aCh6aWx5a6d5oqx5oql5pq06LG56bKN54iG5p2v56KR5oKy5Y2R5YyX6L6I6IOM6LSd6ZKh5YCN54uI5aSH5oOr54SZ6KKr5aWU6Iuv5pys56yo5bSp57u355St5rO16Lmm6L+46YC86by75q+U6YSZ56yU5b2856Kn6JOW6JS95q+V5q+Z5q+W5biB5bqH55e56Zet5pWd5byK5b+F6L6f5aOB6IeC6YG/6Zmb6Z6t6L6557yW6LSs5omB5L6/5Y+Y5Y2e6L6o6L6p6L6r6YGN5qCH5b2q6IaY6KGo6bOW5oaL5Yir55iq5b2s5paM5r+S5ruo5a6+5pGI5YW15Yaw5p+E5LiZ56eJ6aW854KzIl0sWyJiMjQwIiwi552d552e552f552g552k552n552p552q552tIiwxMSwi552655275528556B556C556D556GIiw1LCLnno/nnpDnnpMiLDExLCLnnqHnnqPnnqTnnqbnnqjnnqvnnq3nnq7nnq/nnrHnnrLnnrTnnrYiLDRdLFsiYjI4MCIsIueevOeevuefgCIsMTIsIuefjiIsOCwi55+Y55+Z55+a55+dIiw0LCLnn6Tnl4Xlubbnjrvoj6Dmkq3mi6jpkrXms6LljZrli4PmkI/pk4LnrpTkvK/luJvoiLbohJbohormuKTms4rpqbPmjZXljZzlk7rooaXln6DkuI3luIPmraXnsL/pg6jmgJbmk6bnjJzoo4HmnZDmiY3otKLnnazouKnph4flvanoj5zolKHppJDlj4LompXmrovmg63mg6jngb/oi43oiLHku5Pmsqfol4/mk43ns5nmp73mm7nojYnljpXnrZbkvqflhozmtYvlsYLoua3mj5Llj4nojKzojLbmn6XnorTmkL3lr5/lspTlt67or6fmi4bmn7TosbrmkIDmjrronYnppovosJfnvKDpk7LkuqfpmJDpoqTmmIznjJYiXSxbImIzNDAiLCLnn6bnn6jnn6rnn6/nn7Dnn7Hnn7Lnn7Tnn7Xnn7fnn7nnn7rnn7vnn7znoIMiLDUsIuegiuegi+egjuegj+egkOegk+egleegmeegm+egnuegoOegoeegouegpOegqOegquegq+egruegr+egseegsuegs+egteegtuegveegv+ehgeehguehg+ehhOehhuehiOehieehiuehi+ehjeehj+ehkeehk+ehlOehmOehmeehmiJdLFsiYjM4MCIsIuehm+ehnOehniIsMTEsIuehryIsNywi56G456G556G656G756G9Iiw2LCLlnLrlsJ3luLjplb/lgb/ogqDljoLmlZ7nlYXllLHlgKHotoXmioTpkp7mnJ3lmLLmva7lt6LlkLXngpLovabmia/mkqTmjqPlvbvmvojpg7Toh6PovrDlsJjmmajlv7HmsonpmYjotoHooazmkpHnp7Dln47mqZnmiJDlkYjkuZjnqIvmg6nmvoTor5rmib/pgJ7pqovnp6TlkIPnl7TmjIHljJnmsaDov5/lvJvpqbDogLvpvb/kvojlsLrotaTnv4XmlqXngr3lhYXlhrLomavltIflrqDmir3phaznlbTouIznqKDmhIHnrbnku4fnu7jnnoXkuJHoh63liJ3lh7rmqbHljqjouofplITpm4/mu4HpmaTmpZoiXSxbImI0NDAiLCLnooTnooXnoobnoojnoornoovnoo/nopDnopLnopTnopXnopbnopnnop3nop7noqDnoqLnoqTnoqbnoqgiLDcsIueiteeitueit+eiuOeiuueiu+eivOeiveeiv+ejgOejguejg+ejhOejhuejh+ejiOejjOejjeejjuejj+ejkeejkuejk+ejluejl+ejmOejmiIsOV0sWyJiNDgwIiwi56Ok56Ol56Om56On56Op56Oq56Or56OtIiw0LCLno7Pno7Xno7bno7jno7nno7siLDUsIuekguekg+ekhOekhiIsNiwi56GA5YKo55+X5pCQ6Kem5aSE5o+j5bed56m/5qS95Lyg6Ii55ZaY5Liy55au56qX5bmi5bqK6Zev5Yib5ZC554KK5o226ZSk5Z6C5pil5qS/6YaH5ZSH5rez57qv6KCi5oiz57uw55a16Iyo56OB6ZuM6L6e5oWI55O36K+N5q2k5Yi66LWQ5qyh6IGq6JGx5Zux5YyG5LuO5Lib5YeR57KX6YaL57CH5L+D6Lm/56+h56qc5pGn5bSU5YKs6ISG55iB57K55res57+g5p2R5a2Y5a+456OL5pKu5pCT5o6q5oyr6ZSZ5pCt6L6+562U55ip5omT5aSn5ZGG5q255YKj5oi05bim5q6G5Luj6LS36KKL5b6F6YCuIl0sWyJiNTQwIiwi56SNIiw1LCLnpJQiLDksIueknyIsNCwi56SlIiwxNCwi56S1Iiw0LCLnpL3npL/npYLnpYPnpYTnpYXnpYfnpYoiLDgsIuellOelleelmOelmeeloeeloyJdLFsiYjU4MCIsIuelpOelpuelqeelquelq+elrOelruelsCIsNiwi56W556W7Iiw0LCLnpoLnpoPnpobnpofnpojnponnpovnpoznpo3npo7nppDnppHnppLmgKDogL3mi4XkuLnljZXpg7jmjrjog4bml6bmsK7kvYbmg67mt6Hor57lvLnom4vlvZPmjKHlhZrojaHmoaPliIDmjaPouYjlgJLlspvnpbflr7zliLDnqLvmgrzpgZPnm5flvrflvpfnmoTouaznga/nmbvnrYnnnqrlh7PpgpPloKTkvY7mu7Tov6rmlYznrJvni4TmtqTnv5/lq6HmirXlupXlnLDokoLnrKzluJ3lvJ/pgJLnvJTpoqDmjoLmu4fnopjngrnlhbjpnZvlnqvnlLXkvYPnlLjlupfmg6blpaDmt4Dmrr/noonlj7zpm5Xlh4vliIHmjonlkIrpkpPosIPot4zniLnnop/onbbov63osI3lj6AiXSxbImI2NDAiLCLnppMiLDYsIuemmyIsMTEsIuemqCIsMTAsIuemtCIsNCwi56a856a/56eC56eE56eF56eH56eI56eK56eM56eO56eP56eQ56eT56eU56eW56eX56eZIiw1LCLnp6Dnp6Hnp6Lnp6Xnp6jnp6oiXSxbImI2ODAiLCLnp6znp67np7EiLDYsIuenueenuuenvOenvuenv+eogeeohOeoheeoh+eoiOeoieeoiueojOeojyIsNCwi56iV56iW56iY56iZ56ib56ic5LiB55uv5Y+u6ZKJ6aG26byO6ZSt5a6a6K6i5Lii5Lic5Yas6JGj5oeC5Yqo5qCL5L6X5oGr5Ya75rSe5YWc5oqW5paX6Zmh6LGG6YCX55eY6YO9552j5q+S54qK54us6K+75aC155256LWM5p2c6ZWA6IKa5bqm5rih5aaS56uv55+t6ZS75q615pat57yO5aCG5YWR6Zif5a+55aKp5ZCo6Lmy5pWm6aG/5Zuk6ZKd55u+6YGB5o6H5ZOG5aSa5aS65Z6b6Lqy5py16Le66Ii15YmB5oOw5aCV6Ju+5bOo6bmF5L+E6aKd6K655ail5oG25Y6E5om86YGP6YSC6aW/5oGp6ICM5YS/6ICz5bCU6aW15rSx5LqMIl0sWyJiNzQwIiwi56id56if56ih56ii56ikIiwxNCwi56i056i156i256i456i656i+56mAIiw1LCLnqYciLDksIuepkiIsNCwi56mYIiwxNl0sWyJiNzgwIiwi56mpIiw2LCLnqbHnqbLnqbPnqbXnqbvnqbznqb3nqb7nqoLnqoXnqofnqonnqornqovnqoznqo7nqo/nqpDnqpPnqpTnqpnnqprnqpvnqp7nqqHnqqLotLDlj5HnvZrnrY/kvJDkuY/pmIDms5Xnj5Dol6nluIbnlarnv7vmqIrnn77pkpLnuYHlh6Hng6blj43ov5TojIPotKnniq/ppa3ms5vlnYroirPmlrnogqrmiL/pmLLlpqjku7/orr/nurrmlL7oj7LpnZ7llaHpo57ogqXljKror73lkKDogrrlup/msrjotLnoiqzphZrlkKnmsJvliIbnurflnZ/nhJrmsb7nsonlpYvku73lv7/mhKTnsqrkuLDlsIHmnqvonILls7DplIvpo47nlq/ng73pgKLlhq/nvJ3orr3lpYnlh6TkvZvlkKblpKvmlbfogqTlrbXmibbmi4LovpDluYXmsJ/nrKbkvI/kv5jmnI0iXSxbImI4NDAiLCLnqqPnqqTnqqfnqqnnqqrnqqvnqq4iLDQsIueqtCIsMTAsIuergCIsMTAsIuerjCIsOSwi56uX56uY56ua56ub56uc56ud56uh56ui56uk56unIiw1LCLnq67nq7Dnq7Hnq7Lnq7MiXSxbImI4ODAiLCLnq7QiLDQsIueru+ervOervuesgOesgeesguesheesh+esieesjOesjeesjueskOeskuesk+esluesl+esmOesmuesnOesneesn+esoeesoueso+esp+esqeesrea1rua2quemj+iiseW8l+eUq+aKmui+heS/r+mHnOaWp+iEr+iFkeW6nOiFkOi1tOWJr+imhui1i+WkjeWCheS7mOmYnOeItuiFuei0n+WvjOiuo+mZhOWmh+e8muWSkOWZtuWYjuivpeaUueamgumSmeeblua6ieW5sueUmOadhuafkeerv+iCnei1tuaEn+enhuaVoui1o+WGiOWImumSoue8uOiCm+e6suWyl+a4r+adoOevmeeai+mrmOiGj+e+lOezleaQnumVkOeov+WRiuWTpeatjOaQgeaIiOm4veiDs+eWmeWJsumdqeiRm+agvOibpOmYgemalOmTrOS4quWQhOe7meaguei3n+iAleabtOW6mue+uSJdLFsiYjk0MCIsIuesr+essOessuestOesteestuest+esueesu+esveesvyIsNSwi562G562I562K562N562O562T562V562X562Z562c562e562f562h562jIiwxMCwi562v562w562z562056225624562656285629562/566B566C566D566E566GIiw2LCLnro7nro8iXSxbImI5ODAiLCLnrpHnrpLnrpPnrpbnrpjnrpnnrprnrpvnrp7nrp/nrqDnrqPnrqTnrqXnrq7nrq/nrrDnrrLnrrPnrrXnrrbnrrfnrrkiLDcsIuevguevg+evhOWfguiAv+ail+W3peaUu+WKn+aBrem+muS+m+i6rOWFrOWuq+W8k+W3qeaxnuaLsei0oeWFsemSqeWLvuayn+iLn+eLl+WeouaehOi0reWkn+i+nOiPh+WSleeujeS8sOayveWtpOWnkem8k+WPpOibiumqqOiwt+iCoeaVhemhvuWbuumbh+WIrueTnOWJkOWvoeaMguikguS5luaLkOaAquajuuWFs+WumOWGoOingueuoemmhue9kOaDr+eBjOi0r+WFieW5v+mAm+eRsOinhOWcreehheW9kum+n+mXuui9qOmsvOivoeeZuOahguafnOi3qui0teWIvei+iua7muajjemUhemDreWbveaenOijuei/h+WTiCJdLFsiYmE0MCIsIuevheeviOevieeviuevi+evjeevjuevj+evkOevkuevlCIsNCwi56+b56+c56+e56+f56+g56+i56+j56+k56+n56+o56+p56+r56+s56+t56+v56+w56+yIiw0LCLnr7jnr7nnr7rnr7vnr73nr78iLDcsIuewiOewieewiuewjeewjuewkCIsNSwi57CX57CY57CZIl0sWyJiYTgwIiwi57CaIiw0LCLnsKAiLDUsIuewqOewqeewqyIsMTIsIuewuSIsNSwi57GC6aq45a2p5rW35rCm5Lql5a6z6aqH6YWj5oao6YKv6Z+p5ZCr5ra15a+S5Ye95ZaK572V57+w5pK85o2N5pex5oa+5oKN54SK5rGX5rGJ5aSv5p2t6Iiq5aOV5ZqO6LGq5q+r6YOd5aW96ICX5Y+35rWp5ZG15Zad6I236I+P5qC456a+5ZKM5L2V5ZCI55uS6LKJ6ZiC5rKz5ra46LWr6KSQ6bmk6LS65Zi/6buR55eV5b6I54ug5oGo5ZO85Lqo5qiq6KGh5oGS6L2w5ZOE54OY6Jm56bi/5rSq5a6P5byY57qi5ZaJ5L6v54y05ZC85Y6a5YCZ5ZCO5ZG85LmO5b+955Ga5aO26JGr6IOh6J2054uQ57OK5rmWIl0sWyJiYjQwIiwi57GDIiw5LCLnsY4iLDM2LCLnsbUiLDUsIuexviIsOV0sWyJiYjgwIiwi57KI57KKIiw2LCLnspPnspTnspbnspnnsprnspvnsqDnsqHnsqPnsqbnsqfnsqjnsqnnsqvnsqznsq3nsq/nsrDnsrQiLDQsIueyuueyu+W8p+iZjuWUrOaKpOS6kuayquaIt+iKseWTl+WNjueMvua7keeUu+WIkuWMluivneankOW+iuaAgOa3ruWdj+asoueOr+ahk+i/mOe8k+aNouaCo+WUpOeXquixoueElea2o+WupuW5u+iNkuaFjOm7hOejuuidl+ewp+eah+WHsOaDtueFjOaZg+W5jOaBjeiwjueBsOaMpei+ieW+veaBouiblOWbnuavgeaClOaFp+WNieaDoOaZpui0v+enveS8mueDqeaxh+ius+ivsue7mOiNpOaYj+Wpmumtgua1kea3t+ixgea0u+S8meeBq+iOt+aIluaDkemcjei0p+eluOWHu+WcvuWfuuacuueVuOeoveenr+eulSJdLFsiYmM0MCIsIueyv+ezgOezguezg+ezhOezhuezieezi+ezjiIsNiwi57OY57Oa57Ob57Od57Oe57OhIiw2LCLns6kiLDUsIuezsCIsNywi57O557O657O8IiwxMywi57SLIiw1XSxbImJjODAiLCLntJEiLDE0LCLntKHntKPntKTntKXntKbntKjntKnntKrntKzntK3ntK7ntLAiLDYsIuiCjOmlpei/uea/gOiupem4oeWnrOe7qee8ieWQieaegeajmOi+keexjembhuWPiuaApeeWvuaxsuWNs+Wriee6p+aMpOWHoOiEiuW3seiTn+aKgOWGgOWto+S8juelreWJguaCuOa1juWvhOWvguiuoeiusOaXouW/jOmZheWmk+e7p+e6quWYieaet+WkueS9s+WutuWKoOiNmumiiui0vueUsumSvuWBh+eovOS7t+aetumpvuWrgeatvOebkeWdmuWwluesuumXtOeFjuWFvOiCqeiJsOWluOe8hOiMp+ajgOafrOeiseeht+aLo+aNoeeugOS/reWJquWHj+iNkOanm+mJtOi3tei0seingemUrueureS7tiJdLFsiYmQ0MCIsIue0tyIsNTQsIue1ryIsN10sWyJiZDgwIiwi57W4IiwzMiwi5YGl6Iiw5YmR6aWv5riQ5rqF5ran5bu65YO15aec5bCG5rWG5rGf55aG6JKL5qGo5aWW6K6y5Yyg6YWx6ZmN6JWJ5qSS56SB54Sm6IO25Lqk6YOK5rWH6aqE5aiH5Zq85pCF6ZOw55+r5L6l6ISa54uh6KeS6aW657y057ue5Ym/5pWZ6YW16L2/6L6D5Y+r56qW5o+t5o6l55qG56e46KGX6Zi25oiq5Yqr6IqC5qGU5p2w5o23552r56ut5rSB57uT6Kej5aeQ5oiS6JeJ6Iql55WM5YCf5LuL55al6K+r5bGK5be+562L5pak6YeR5LuK5rSl6KWf57Sn6ZSm5LuF6LCo6L+b6Z2z5pmL56aB6L+R54Os5rW4Il0sWyJiZTQwIiwi57aZIiwxMiwi57anIiw2LCLntq8iLDQyXSxbImJlODAiLCLnt5oiLDMyLCLlsL3lirLojYblhaLojI7nnZvmmbbpsrjkuqzmg4rnsr7nsrPnu4/kupXorabmma/poojpnZnlooPmlazplZzlvoTnl4npnZbnq5/nq57lh4Dngq/nqpjmj6rnqbbnuqDnjpbpn63kuYXngbjkuZ3phZLljqnmlZHml6foh7zoiIXlko7lsLHnlprpnqDmi5jni5nnlr3lsYXpqbnoj4rlsYDlkoDnn6nkuL7msq7ogZrmi5Lmja7lt6jlhbfot53ouJ7plK/kv7Hlj6Xmg6fngqzliafmjZDpuYPlqJ/lgKbnnLfljbfnu6LmkoXmlKvmionmjpjlgJTniLXop4nlhrPor4Dnu53lnYfoj4zpkqflhpvlkJvls7siXSxbImJmNDAiLCLnt7siLDYyXSxbImJmODAiLCLnuLrnuLwiLDQsIue5giIsNCwi57mIIiwyMSwi5L+K56uj5rWa6YOh6aqP5ZaA5ZKW5Y2h5ZKv5byA5o+p5qW35Yev5oWo5YiK5aCq5YuY5Z2O56CN55yL5bq35oW357Og5omb5oqX5Lqi54KV6ICD5ou354Ok6Z2g5Z236Iub5p+v5qO156OV6aKX56eR5aOz5ZKz5Y+v5ri05YWL5Yi75a6i6K++6IKv5ZWD5Z6m5oGz5Z2R5ZCt56m65oGQ5a2U5o6n5oqg5Y+j5omj5a+H5p6v5ZOt56qf6Ium6YW35bqT6KOk5aS45Z6u5oyO6Leo6IOv5Z2X56235L6p5b+r5a695qy+5Yyh562Q54uC5qGG55+/55y25pe35Ya15LqP55uU5bK/56ql6JG15aWO6a2B5YKAIl0sWyJjMDQwIiwi57meIiwzNSwi57qDIiwyMywi57qc57qd57qeIl0sWyJjMDgwIiwi57qu57q057q757q857uW57uk57us57u557yK57yQ57ye57y357y557y7Iiw2LCLnvYPnvYYiLDksIue9kue9k+mmiOaEp+a6g+WdpOaYhuaNhuWbsOaLrOaJqeW7k+mYlOWeg+aLieWWh+icoeiFiui+o+WVpuiOseadpei1luiTneWpquagj+aLpuevrumYkeWFsOa+nOiwsOaPveiniOaHkue8hueDgua7peeQheamlOeLvOW7iumDjuacl+a1quaNnuWKs+eJouiAgeS9rOWnpemFqueDmea2neWLkuS5kOmbt+mVreiVvuejiue0r+WEoeWekuaTguiCi+exu+azquajsealnuWGt+WOmOaiqOeKgem7juevseeLuOemu+a8k+eQhuadjumHjOmypOekvOiOieiNlOWQj+agl+S4veWOieWKseegvuWOhuWIqeWCiOS+i+S/kCJdLFsiYzE0MCIsIue9lue9mee9m+e9nOe9nee9nue9oOe9oyIsNCwi572r572s572t572v572w572z57215722572357245726572757285729572/576A576CIiw3LCLnvovnvo3nvo8iLDQsIue+lSIsNCwi576b576c576g576i576j576l576m576oIiw2LCLnvrEiXSxbImMxODAiLCLnvrMiLDQsIue+uue+u+e+vue/gOe/gue/g+e/hOe/hue/h+e/iOe/iee/i+e/jee/jyIsNCwi57+W57+X57+ZIiw1LCLnv6Lnv6Pnl6Lnq4vnspLmsqXpmrblipvnkoPlk6nkv6nogZTojrLov57plbDlu4nmgJzmtp/luJjmlZvohLjpk77mgYvngrznu4Pnsq7lh4nmooHnsrHoia/kuKTovobph4/mmb7kuq7osIXmkqnogYrlg5rnlpfnh47lr6Xovr3mvabkuobmkoLplaPlu5bmlpnliJfoo4Lng4jliqPnjI7nkLPmnpfno7fpnJbkuLTpgrvps57mt4vlh5votYHlkJ3mi47njrLoj7Hpm7bpvoTpk4PkvLbnvprlh4zngbXpmbXlsq3pooblj6bku6TmupznkInmprTnoavppo/nlZnliJjnmKTmtYHmn7Plha3pvpnogYvlkpnnrLznqr8iXSxbImMyNDAiLCLnv6Tnv6fnv6jnv6rnv6vnv6znv63nv6/nv7Lnv7QiLDYsIue/vee/vue/v+iAguiAh+iAiOiAieiAiuiAjuiAj+iAkeiAk+iAmuiAm+iAneiAnuiAn+iAoeiAo+iApOiAqyIsNSwi6ICy6IC06IC56IC66IC86IC+6IGA6IGB6IGE6IGF6IGH6IGI6IGJ6IGO6IGP6IGQ6IGR6IGT6IGV6IGW6IGXIl0sWyJjMjgwIiwi6IGZ6IGbIiwxMywi6IGrIiw1LCLogbIiLDExLCLpmoblnoTmi6LpmYfmpbzlqITmkILnr5PmvI/pmYvoiqbljaLpooXlupDngonmjrPljaTomY/psoHpupPnoozpnLLot6/otYLpub/mvZ7npoTlvZXpmYbmiK7pqbTlkJXpk53kvqPml4XlsaXlsaHnvJXomZHmsK/lvovnjofmu6Tnu7/ls6bmjJvlrarmu6bljbXkubHmjqDnlaXmiqHova7kvKbku5HmsqbnurborrrokJ3onrrnvZfpgLvplKPnrqnpqqHoo7jokL3mtJvpqobnu5zlpojpurvnjpvnoIHomoLpqazpqoLlmJvlkJfln4vkubDpuqbljZbov4johInnnpLpppLom67mu6HolJPmm7zmhaLmvKsiXSxbImMzNDAiLCLogb7ogoHogoLogoXogojogorogo0iLDUsIuiClOiCleiCl+iCmeiCnuiCo+iCpuiCp+iCqOiCrOiCsOiCs+iCteiCtuiCuOiCueiCu+iDheiDhyIsNCwi6IOPIiw2LCLog5jog5/og6Dog6Log6Pog6bog67og7Xog7fog7nog7vog77og7/ohIDohIHohIPohITohIXohIfohIjohIsiXSxbImMzODAiLCLohIzohJXohJfohJnohJvohJzohJ3ohJ8iLDEyLCLohK3ohK7ohLDohLPohLTohLXohLfohLkiLDQsIuiEv+iwqeiKkuiMq+ebsuawk+W/meiOveeMq+iMhemUmuavm+efm+mThuWNr+iMguWGkuW4veiyjOi0uOS5iOeOq+aemuaihemFtumcieeFpOayoeecieWqkumVgeavj+e+juaYp+WvkOWmueWqmumXqOmXt+S7rOiQjOiSmeaqrOebn+mUsOeMm+aipuWtn+ecr+mGmumdoeeznOi/t+iwnOW8peexs+enmOinheazjOicnOWvhuW5guajieecoOe7teWGleWFjeWLieWoqee8hemdouiLl+aPj+eehOiXkOenkua4uuW6meWmmeiUkeeBreawkeaKv+eav+aVj+aCr+mXveaYjuien+m4o+mTreWQjeWRveiwrOaRuCJdLFsiYzQ0MCIsIuiFgCIsNSwi6IWH6IWJ6IWN6IWO6IWP6IWS6IWW6IWX6IWY6IWbIiw0LCLohaHohaLohaPohaTohabohajoharohavohazoha/ohbLohbPohbXohbbohbfohbjohoHohoMiLDQsIuiGieiGi+iGjOiGjeiGjuiGkOiGkiIsNSwi6IaZ6Iaa6IaeIiw0LCLohqTohqUiXSxbImM0ODAiLCLohqfohqnohqsiLDcsIuiGtCIsNSwi6Ia86Ia96Ia+6Ia/6IeE6IeF6IeH6IeI6IeJ6IeL6IeNIiw2LCLmkbnomJHmqKHohpzno6jmkanprZTmirnmnKvojqvloqjpu5jmsqvmvKDlr57pmYzosIvniZ/mn5Dmi4fniaHkuqnlp4bmr43lopPmmq7luZXli5/mhZXmnKjnm67nnabniafnqYbmi7/lk6rlkZDpkqDpgqPlqJznurPmsJbkuYPlpbbogJDlpYjljZfnlLfpmr7lm4rmjKDohJHmgbzpl7nmt5blkaLppoHlhoXlq6nog73lpq7pnJPlgKrms6XlsLzmi5/kvaDljL/ohbvpgIbmurrolKvmi4jlubTnor7mkrXmjbvlv7XlqJjphb/puJ/lsL/mjY/ogYLlrb3lla7plYrplY3mtoXmgqjmn6Dni57lh53lroEiXSxbImM1NDAiLCLoh5QiLDE0LCLoh6Toh6Xoh6boh6joh6noh6voh64iLDQsIuiHtSIsNSwi6Ie96Ie/6IiD6IiHIiw0LCLoiI7oiI/oiJHoiJPoiJUiLDUsIuiIneiIoOiIpOiIpeiIpuiIp+iIqeiIruiIsuiIuuiIvOiIveiIvyJdLFsiYzU4MCIsIuiJgOiJgeiJguiJg+iJheiJhuiJiOiJiuiJjOiJjeiJjuiJkCIsNywi6ImZ6Imb6Imc6Imd6Ime6ImgIiw3LCLoianmi6fms57niZvmia3pkq7nur3ohJPmtZPlhpzlvITlpbTliqrmgJLlpbPmmpbomZDnlp/mjKrmh6bns6/or7rlk6bmrKfpuKXmrrTol5XlkZXlgbbmsqTllarotrTniKzluJXmgJXnkLbmi43mjpLniYzlvpjmuYPmtL7mlIDmvZjnm5jno5Dnm7znlZTliKTlj5vkuZPlup7ml4HogKrog5bmipvlkobliKjngq7ooo3ot5Hms6Hlkbjog5rln7noo7TotZTpmarphY3kvanmspvllrfnm4bnoLDmiqjng7nmvo7lva3ok6zmo5rnobznr7fohqjmnIvpuY/mjafnorDlna/noJLpnLnmibnmiqvliojnkLXmr5ciXSxbImM2NDAiLCLoiaroiavoiazoia3oibHoibXoibboibfoibjoibvoibzoioDoioHoioPoioXoioboiofoionoiozoipDoipPoipToipXoipboiproipvoip7oiqDoiqLoiqPoiqfoirLoirXoirboirroirvoirzoir/oi4Doi4Loi4Poi4Xoi4boi4noi5Doi5boi5noi5roi53oi6Loi6foi6joi6noi6roi6zoi63oi67oi7Doi7Loi7Poi7Xoi7boi7giXSxbImM2ODAiLCLoi7roi7wiLDQsIuiMiuiMi+iMjeiMkOiMkuiMk+iMluiMmOiMmeiMnSIsOSwi6Iyp6Iyq6Iyu6Iyw6Iyy6Iy36Iy76Iy95ZWk6IS+55ay55qu5Yy555ee5YO75bGB6K2s56+H5YGP54mH6aqX6aOY5ryC55Oi56Wo5pKH556l5ou86aKR6LSr5ZOB6IGY5LmS5Z2q6Iu56JCN5bmz5Yet55O26K+E5bGP5Z2h5rO86aKH5amG56C06a2E6L+r57KV5YmW5omR6ZO65LuG6I6G6JGh6I+p6JKy5Z+U5py05ZyD5pmu5rWm6LCx5pud54CR5pyf5qy65qCW5oia5aa75LiD5YeE5ryG5p+S5rKP5YW25qOL5aWH5q2n55Wm5bSO6ISQ6b2Q5peX56WI56WB6aqR6LW35bKC5Lme5LyB5ZCv5aWR56CM5Zmo5rCU6L+E5byD5rG95rOj6K6r5o6QIl0sWyJjNzQwIiwi6Iy+6Iy/6I2B6I2C6I2E6I2F6I2I6I2KIiw0LCLojZPojZUiLDQsIuiNneiNouiNsCIsNiwi6I256I266I2+Iiw2LCLojofojojojorojovojozojo3ojo/ojpDojpHojpTojpXojpbojpfojpnojprojp3ojp/ojqEiLDYsIuiOrOiOreiOriJdLFsiYzc4MCIsIuiOr+iOteiOu+iOvuiOv+iPguiPg+iPhOiPhuiPiOiPieiPi+iPjeiPjuiPkOiPkeiPkuiPk+iPleiPl+iPmeiPmuiPm+iPnuiPouiPo+iPpOiPpuiPp+iPqOiPq+iPrOiPreaBsOa0veeJteaJpumSjumTheWNg+i/geetvuS7n+iwpuS5vum7lOmSsemSs+WJjea9nOmBo+a1heiwtOWgkeW1jOasoOatieaequWRm+iFlOe+jOWimeiUt+W8uuaKouaph+mUueaVsuaChOahpeeep+S5lOS+qOW3p+memOaSrOe/mOWzreS/j+eqjeWIh+iMhOS4lOaAr+eqg+mSpuS+teS6suenpueQtOWLpOiKueaTkuemveWvneaygemdkui9u+awouWAvuWNv+a4heaTjuaZtOawsOaDhemht+ivt+W6hueQvOept+eni+S4mOmCseeQg+axguWbmumFi+azhei2i+WMuuibhuabsui6r+WxiOmpsea4oCJdLFsiYzg0MCIsIuiPruiPr+iPsyIsNCwi6I+66I+76I+86I++6I+/6JCA6JCC6JCF6JCH6JCI6JCJ6JCK6JCQ6JCSIiw1LCLokJnokJrokJvokJ4iLDUsIuiQqSIsNywi6JCyIiw1LCLokLnokLrokLvokL4iLDcsIuiRh+iRiOiRiSJdLFsiYzg4MCIsIuiRiiIsNiwi6JGSIiw0LCLokZjokZ3okZ7okZ/okaDokaLokaQiLDQsIuiRquiRruiRr+iRsOiRsuiRtOiRt+iRueiRu+iRvOWPluWotum+i+i2o+WOu+WciOmip+adg+mGm+azieWFqOeXiuaLs+eKrOWIuOWKnee8uueClOeYuOWNtOm5iuamt+ehrumbgOijmee+pOeEtueHg+WGieafk+eTpOWjpOaUmOWat+iuqemltuaJsOe7leaDueeDreWjrOS7geS6uuW/jemfp+S7u+iupOWIg+Wmiue6q+aJlOS7jeaXpeaIjuiMuOiTieiNo+iejeeGlOa6tuWuuee7kuWGl+aPieaflOiCieiMueigleWEkuWtuuWmgui+seS5s+axneWFpeikpei9r+mYruiViueRnumUkOmXsOa2puiLpeW8seaSkua0kuiQqOiFrumzg+Whnui1m+S4ieWPgSJdLFsiYzk0MCIsIuiRvSIsNCwi6JKD6JKE6JKF6JKG6JKK6JKN6JKPIiw3LCLokpjokprokpvokp3okp7okp/okqDokqIiLDEyLCLokrDokrHokrPokrXokrbokrfokrvokrzokr7ok4Dok4Lok4Pok4Xok4bok4fok4jok4vok4zok47ok4/ok5Lok5Tok5Xok5ciXSxbImM5ODAiLCLok5giLDQsIuiTnuiToeiTouiTpOiTpyIsNCwi6JOt6JOu6JOv6JOxIiwxMCwi6JO96JO+6JSA6JSB6JSC5Lye5pWj5qGR5ZeT5Lin5pCU6aqa5omr5auC55Gf6Imy5rap5qOu5YOn6I6O56CC5p2A5Yi55rKZ57qx5YK75ZWl54We562b5pmS54+K6Iur5p2J5bGx5Yig54W96KGr6Zeq6ZmV5pOF6LWh6Iaz5ZaE5rGV5omH57yu5aKS5Lyk5ZWG6LWP5pmM5LiK5bCa6KOz5qKi5o2O56iN54On6IqN5Yu66Z+25bCR5ZOo6YK157uN5aWi6LWK6JuH6IiM6IiN6LWm5pGE5bCE5oWR5raJ56S+6K6+56C355Sz5ZG75Ly46Lqr5rex5aig57uF56We5rKI5a6h5am255Sa6IK+5oWO5riX5aOw55Sf55Sl54my5Y2H57uzIl0sWyJjYTQwIiwi6JSDIiw4LCLolI3olI7olI/olJDolJLolJTolJXolJbolJjolJnolJvolJzolJ3olJ7olKDolKIiLDgsIuiUrSIsOSwi6JS+Iiw0LCLolYTolYXolYbolYfolYsiLDEwXSxbImNhODAiLCLolZfolZjolZrolZvolZzolZ3olZ8iLDQsIuiVpeiVpuiVp+iVqSIsOCwi6JWz6JW16JW26JW36JW46JW86JW96JW/6JaA6JaB55yB55ub5Ymp6IOc5Zyj5biI5aSx54uu5pa95rm/6K+X5bC46Jmx5Y2B55+z5ou+5pe25LuA6aOf6JqA5a6e6K+G5Y+y55+i5L2/5bGO6am25aeL5byP56S65aOr5LiW5p+/5LqL5out6KqT6YCd5Yq/5piv5Zec5Zms6YCC5LuV5L6N6YeK6aWw5rCP5biC5oGD5a6k6KeG6K+V5pS25omL6aaW5a6I5a+/5o6I5ZSu5Y+X55im5YW96JSs5p6i5qKz5q6K5oqS6L6T5Y+U6IiS5reR55aP5Lmm6LWO5a2w54af6Jav5pqR5puZ572y6JyA6buN6byg5bGe5pyv6L+w5qCR5p2f5oiN56uW5aKF5bq25pWw5ryxIl0sWyJjYjQwIiwi6JaC6JaD6JaG6JaIIiw2LCLolpAiLDEwLCLolp0iLDYsIuiWpeiWpuiWp+iWqeiWq+iWrOiWreiWsSIsNSwi6Ja46Ja6Iiw2LCLol4IiLDYsIuiXiiIsNCwi6JeR6JeSIl0sWyJjYjgwIiwi6JeU6JeWIiw1LCLol50iLDYsIuiXpeiXpuiXp+iXqOiXqiIsMTQsIuaBleWIt+iAjeaRlOihsOeUqeW4heagk+aLtOmcnOWPjOeIveiwgeawtOedoeeojuWQrueerOmhuuiInOivtOehleaclOeDgeaWr+aSleWYtuaAneengeWPuOS4neatu+iChuWvuuWXo+Wbm+S8uuS8vOmlsuW3s+advuiAuOaAgumigumAgeWui+iuvOivteaQnOiJmOaTnuWXveiLj+mFpeS/l+e0oOmAn+eyn+WDs+Whkea6r+Wuv+ivieiCg+mFuOiSnOeul+iZvemai+maj+e7pemrk+eijuWygeepl+mBgumap+eln+WtmeaNn+esi+iTkeaireWUhue8qeeQkOe0oumUgeaJgOWhjOS7luWug+WlueWhlCJdLFsiY2M0MCIsIuiXueiXuuiXvOiXveiXvuiYgCIsNCwi6JiGIiwxMCwi6JiS6JiT6JiU6JiV6JiXIiwxNSwi6Jio6JiqIiwxMywi6Ji56Ji66Ji76Ji96Ji+6Ji/6JmAIl0sWyJjYzgwIiwi6JmBIiwxMSwi6JmS6JmT6JmVIiw0LCLomZvomZzomZ3omZ/omaDomaHomaMiLDcsIueNreaMnui5i+i4j+iDjuiLlOaKrOWPsOazsOmFnuWkquaAgeaxsOWdjeaRiui0queYq+a7qeWdm+aqgOeXsOa9reiwreiwiOWdpuavr+iikueis+aOouWPueeCreaxpOWhmOaQquWgguajoOiGm+WUkOezluWAmOi6uua3jOi2n+eDq+aOj+a2m+a7lOe7puiQhOahg+mAg+a3mOmZtuiuqOWll+eJueiXpOiFvueWvOiqiuair+WJlOi4oumUkeaPkOmimOi5hOWVvOS9k+abv+Waj+aDlea2leWJg+WxieWkqea3u+Whq+eUsOeUnOaBrOiIlOiFhuaMkeadoei/ouecuui3s+i0tOmTgeW4luWOheWQrOeDgyJdLFsiY2Q0MCIsIuiZreiZr+iZsOiZsiIsNiwi6JqDIiw2LCLomo4iLDQsIuialOialiIsNSwi6JqeIiw0LCLomqXomqbomqvomq3omq7omrLomrPomrfomrjomrnomrsiLDQsIuibgeibguibg+ibheibiOibjOibjeibkuibk+ibleibluibl+ibmuibnCJdLFsiY2Q4MCIsIuibneiboOiboeibouibo+ibpeibpuibp+ibqOibquibq+ibrOibr+ibteibtuibt+ibuuibu+ibvOibveibv+icgeichOicheichuici+icjOicjuicj+ickOickeiclOicluaxgOW7t+WBnOS6reW6reaMuuiJh+mAmuahkOmFruees+WQjOmTnOW9pOerpeahtuaNheetkue7n+eXm+WBt+aKleWktOmAj+WHuOeng+eqgeWbvuW+kumAlOa2guWxoOWcn+WQkOWFlOa5jeWbouaOqOmik+iFv+icleikqumAgOWQnuWxr+iHgOaLluaJmOiEsem4temZgOmprumpvOakreWmpeaLk+WUvuaMluWTh+ibmea0vOWog+eTpuiinOatquWkluixjOW8r+a5vueOqemhveS4uOeDt+WujOeil+aMveaZmuealuaDi+Wum+WpieS4h+iFleaxqueOi+S6oeaeiee9keW+gOaXuuacm+W/mOWmhOWogSJdLFsiY2U0MCIsIuicmeicm+icneicn+icoOicpOicpuicp+icqOicquicq+icrOicreicr+icsOicsuics+icteictuicuOicueicuuicvOicveidgCIsNiwi6J2K6J2L6J2N6J2P6J2Q6J2R6J2S6J2U6J2V6J2W6J2Y6J2aIiw1LCLonaHonaLonaYiLDcsIuidr+idseidsuids+idtSJdLFsiY2U4MCIsIuidt+iduOidueiduuidv+iegOiegeiehOiehuieh+ieieieiuiejOiejiIsNCwi6J6U6J6V6J6W6J6YIiw2LCLonqAiLDQsIuW3jeW+ruWNsemfpui/neahheWbtOWUr+aDn+S4uua9jee7tOiLh+iQjuWnlOS8n+S8quWwvue6rOacquiUmuWRs+eVj+iDg+WWgumtj+S9jea4reiwk+WwieaFsOWNq+eYn+a4qeiaiuaWh+mXu+e6ueWQu+eos+e0iumXruWXoee/geeTruaMneicl+a2oeeqneaIkeaWoeWNp+aPoeayg+W3q+WRnOmSqOS5jOaxoeivrOWxi+aXoOiKnOaip+WQvuWQtOavi+atpuS6lOaNguWNiOiInuS8jeS+ruWdnuaIiumbvuaZpOeJqeWLv+WKoeaCn+ivr+aYlOeGmeaekOilv+ehkuefveaZsOWYu+WQuOmUoeeJuiJdLFsiY2Y0MCIsIuiepeiepuiep+ieqeiequieruiesOieseiesuietOietuiet+ieuOieueieu+ievOievuiev+ifgSIsNCwi6J+H6J+I6J+J6J+MIiw0LCLon5QiLDYsIuifnOifneifnuifn+ifoeifouifo+ifpOifpuifp+ifqOifqeifq+ifrOifreifryIsOV0sWyJjZjgwIiwi6J+66J+76J+86J+96J+/6KCA6KCB6KCC6KCEIiw1LCLooIsiLDcsIuiglOigl+igmOigmeigmuignCIsNCwi6KCj56iA5oGv5biM5oKJ6Iad5aSV5oOc54aE54Ov5rqq5rGQ54qA5qqE6KKt5bit5Lmg5aqz5Zac6ZOj5rSX57O76ZqZ5oiP57uG556O6Jm+5Yyj6Zye6L6W5pqH5bOh5L6g54ut5LiL5Y6m5aSP5ZCT5o6A6ZSo5YWI5LuZ6bKc57qk5ZK46LSk6KGU6Ii36Zey5raO5bym5auM5pi+6Zmp546w54yu5Y6/6IW66aaF576h5a6q6Zm36ZmQ57q/55u45Y6i6ZW26aaZ566x6KWE5rmY5Lmh57+U56Wl6K+m5oOz5ZON5Lqr6aG55be35qmh5YOP5ZCR6LGh6JCn56Gd6ZyE5YmK5ZOu5Zqj6ZSA5raI5a615reG5pmTIl0sWyJkMDQwIiwi6KCkIiwxMywi6KCzIiw1LCLooLrooLvooL3ooL7ooL/ooYHooYLooYPooYYiLDUsIuihjiIsNSwi6KGV6KGW6KGY6KGaIiw2LCLooabooafooarooa3ooa/oobHoobPoobToobXoobboobjoobnooboiXSxbImQwODAiLCLoobvoobzoooDoooPooobooofooonooorooozooo7ooo/oopDoopHoopPoopToopXoopciLDQsIuiinSIsNCwi6KKj6KKlIiw1LCLlsI/lrZ3moKHogpbllbjnrJHmlYjmpZTkupvmrYfonY7pnovljY/mjJ/mkLrpgqrmlpzog4HosJDlhpnmorDljbjon7nmh4jms4Tms7vosKLlsZHolqroiq/plIzmrKPovpvmlrDlv7vlv4Pkv6HooYXmmJ/ohaXnjKnmg7rlhbTliJHlnovlvaLpgqLooYzphpLlubjmnY/mgKflp5PlhYTlh7bog7jljIjmsbnpm4TnhorkvJHkv67nvp7mnL3ll4XplIjnp4Doopbnu6Plop/miIzpnIDomZrlmJjpobvlvpDorrjok4TphZflj5nml63luo/nlZzmgaTnta7lqb/nu6rnu63ovanllqflrqPmgqzml4vnjoQiXSxbImQxNDAiLCLooqzooq7ooq/oorDoorIiLDQsIuiiuOiiueiiuuiiu+iiveiivuiiv+ijgOijg+ijhOijh+ijiOijiuiji+ijjOijjeijj+ijkOijkeijk+ijluijl+ijmiIsNCwi6KOg6KOh6KOm6KOn6KOpIiw2LCLoo7Loo7Xoo7boo7foo7roo7voo73oo7/opIDopIHopIMiLDVdLFsiZDE4MCIsIuikieikiyIsNCwi6KSR6KSUIiw0LCLopJwiLDQsIuikouiko+ikpOikpuikp+ikqOikqeikrOikreikruikr+ikseiksuiks+ikteikt+mAieeZo+ecqee7mumdtOiWm+WtpueptOmbquihgOWLi+eGj+W+quaXrOivouWvu+mpr+W3oeauieaxm+iureiur+mAiui/heWOi+aKvOm4pum4reWRgOS4q+iKveeJmeianOW0luihmea2r+mbheWTkeS6muiutueEieWSvemYieeDn+a3ueebkOS4peeglOickuWyqeW7tuiogOminOmYjueCjuayv+WlhOaOqeecvOihjea8lOiJs+WgsOeHleWOjOegmumbgeWUgeW9pueEsOWutOiwmumqjOaug+Wkrum4r+enp+adqOaJrOS9r+eWoee+iua0i+mYs+awp+S7sOeXkuWFu+agt+a8vumCgOiFsOWmlueRtiJdLFsiZDI0MCIsIuikuCIsOCwi6KWC6KWD6KWFIiwyNCwi6KWgIiw1LCLopaciLDE5LCLopbwiXSxbImQyODAiLCLopb3opb7opoDopoLopoTopoXopociLDI2LCLmkYflsKfpgaXnqpHosKPlp5rlkqzoiIDoja/opoHogIDmpLDlmY7ogLbniLfph47lhrbkuZ/pobXmjpbkuJrlj7bmm7PohYvlpJzmtrLkuIDlo7nljLvmj5bpk7Hkvp3kvIrooaPpopDlpLfpgZfnp7vku6rog7DnlpHmsoLlrpzlp6jlvZ3mpIXomoHlgJrlt7LkuZnnn6Pku6XoibrmipHmmJPpgpHlsbnkur/lvbnoh4bpgLjogoTnlqvkuqboo5TmhI/mr4Xlv4bkuYnnm4rmuqLor6Porq7osIror5HlvILnv7znv4znu47ojLXojavlm6Dmrrfpn7PpmLTlp7vlkJ/pk7bmt6vlr4Xppa7lsLnlvJXpmpAiXSxbImQzNDAiLCLopqIiLDMwLCLop4Pop43op5Pop5Top5Xop5fop5jop5nop5vop53op5/op6Dop6Hop6Lop6Top6fop6jop6nop6rop6zop63op67op7Dop7Hop7Lop7QiLDZdLFsiZDM4MCIsIuinuyIsNCwi6KiBIiw1LCLoqIgiLDIxLCLljbDoi7HmqLHlqbTpubDlupTnvKjojrnokKTokKXojafonYfov47otaLnm4jlvbHpopbnoazmmKDlk5/mi6XkvaPoh4Pnl4jlurjpm43ouIrom7nlko/ms7PmtozmsLjmgb/li4fnlKjlub3kvJjmgqDlv6flsKTnlLHpgq7pk4DnirnmsrnmuLjphYnmnInlj4vlj7PkvZHph4nor7Hlj4jlubzov4Lmt6Tkuo7nm4LmpobomZ7mhJroiIbkvZnkv57pgL7psbzmhInmuJ3muJTpmoXkuojlqLHpm6jkuI7lsb/nprnlrofor63nvr3njonln5/oiovpg4HlkIHpgYfllrvls6rlvqHmhIjmrLLni7HogrLoqokiXSxbImQ0NDAiLCLoqJ4iLDMxLCLoqL8iLDgsIuipiSIsMjFdLFsiZDQ4MCIsIuipnyIsMjUsIuipuiIsNiwi5rW05a+T6KOV6aKE6LGr6amt6biz5riK5Yak5YWD5Z6j6KKB5Y6f5o+06L6V5Zut5ZGY5ZyG54y/5rqQ57yY6L+c6IuR5oS/5oCo6Zmi5puw57qm6LaK6LeD6ZKl5bKz57Kk5pyI5oKm6ZiF6ICY5LqR6YOn5YyA6Zmo5YWB6L+Q6JW06YWd5pmV6Z+15a2V5Yyd56C45p2C5qC95ZOJ54G+5a6w6L295YaN5Zyo5ZKx5pSS5pqC6LWe6LWD6ISP6JGs6YGt57Of5Ye/6Je75p6j5pep5r6h6Jqk6LqB5Zmq6YCg55qC54G254el6LSj5oup5YiZ5rO96LS85oCO5aKe5oaO5pu+6LWg5omO5Zaz5rij5pyt6L2nIl0sWyJkNTQwIiwi6KqBIiw3LCLoqosiLDcsIuiqlCIsNDZdLFsiZDU4MCIsIuirgyIsMzIsIumToemXuOecqOagheamqOWSi+S5jeeCuOiviOaRmOaWi+WuheeqhOWAuuWvqOeeu+avoeipueeymOayvuebj+aWqei+l+W0reWxleiYuOagiOWNoOaImOermea5m+e7veaon+eroOW9sOa8s+W8oOaOjOa2qOadluS4iOW4kOi0puS7l+iDgOeYtOmanOaLm+aYreaJvuayvOi1teeFp+e9qeWFhuiCh+WPrOmBruaKmOWTsuibsOi+meiAhemUl+iUl+i/mea1meePjeaWn+ecn+eUhOegp+iHu+i0numSiOS+puaeleeWueiviumch+aMr+mVh+mYteiSuOaMo+edgeW+geeLsOS6ieaAlOaVtOaLr+ato+aUvyJdLFsiZDY0MCIsIuirpCIsMzQsIuisiCIsMjddLFsiZDY4MCIsIuispOispeispyIsMzAsIuW4p+eXh+mDkeivgeiKneaeneaUr+WQseicmOefpeiCouiEguaxgeS5i+e7h+iBjOebtOakjeauluaJp+WAvOS+hOWdgOaMh+atoui2vuWPquaXqOe6uOW/l+aMmuaOt+iHs+iHtOe9ruW4nOWzmeWItuaZuuenqeeomui0qOeCmeeXlOa7nuayu+eqkuS4reebheW/oOmSn+iht+e7iOenjeiCv+mHjeS7suS8l+iIn+WRqOW3nua0suivjOeypei9tOiCmOW4muWSkueaseWumeaYvOmqpOePoOagquibm+acseeMquivuOivm+mAkOerueeDm+eFruaLhOeeqeWYseS4u+iRl+afseWKqeibgOi0rumTuOetkSJdLFsiZDc0MCIsIuithiIsMzEsIuitpyIsNCwi6K2tIiwyNV0sWyJkNzgwIiwi6K6HIiwyNCwi6K6s6K6x6K676K+H6K+Q6K+q6LCJ6LCe5L2P5rOo56Wd6am75oqT54iq5ou95LiT56CW6L2s5pKw6LWa56+G5qGp5bqE6KOF5aaG5pKe5aOu54q25qSO6ZSl6L+96LWY5Z2g57yA6LCG5YeG5o2J5ouZ5Y2T5qGM55Ci6IyB6YWM5ZWE552A54G85rWK5YW55ZKo6LWE5ae/5ruL5reE5a2c57Sr5LuU57G95ruT5a2Q6Ieq5riN5a2X6ayD5qOV6Liq5a6X57u85oC757q16YK56LWw5aWP5o+N56ef6Laz5Y2S5peP56WW6K+F6Zi757uE6ZK757qC5Zi06YaJ5pyA572q5bCK6YG15pio5bem5L2Q5p+e5YGa5L2c5Z2Q5bqnIl0sWyJkODQwIiwi6LC4Iiw4LCLosYLosYPosYTosYXosYjosYrosYvosY0iLDcsIuixluixl+ixmOixmeixmyIsNSwi6LGjIiw2LCLosawiLDYsIuixtOixteixtuixt+ixuyIsNiwi6LKD6LKE6LKG6LKHIl0sWyJkODgwIiwi6LKI6LKL6LKNIiw2LCLospXospbospfospkiLDIwLCLkuo3kuIzlhYDkuJDlu7/ljYXkuJXkupjkuJ7prLLlrazlmankuKjnprrkuL/ljJXkuYflpK3niLvlja7msJDlm5/og6Tpppfmr5Pnnb7pvJfkuLbkup/pvJDkuZzkuankupPoiojlrZvllazlmI/ku4Tljo3ljp3ljqPljqXljq7pnaXotZ3ljJrlj7XljKbljK7ljL7otZzljabljaPliILliIjliI7liK3liLPliL/liYDliYzliZ7liaHliZzokq/lib3lioLlioHlipDlipPlhoLnvZTkurvku4Pku4nku4Lku6jku6Hku6vku57kvJvku7PkvKLkvaTku7XkvKXkvKfkvInkvKvkvZ7kvafmlLjkvZrkvZ0iXSxbImQ5NDAiLCLosq4iLDYyXSxbImQ5ODAiLCLos60iLDMyLCLkvZ/kvZfkvLLkvL3kvbbkvbTkvpHkvonkvoPkvo/kvb7kvbvkvqrkvbzkvqzkvpTkv6bkv6jkv6rkv4Xkv5rkv6Pkv5zkv5Hkv5/kv7jlgKnlgYzkv7PlgKzlgI/lgK7lgK3kv77lgJzlgIzlgKXlgKjlgb7lgYPlgZXlgYjlgY7lgazlgbvlgqXlgqflgqnlgrrlg5blhIblg63lg6zlg6blg67lhIflhIvku53msL3kvZjkvaXkv47pvqDmsYbnsbTlha7lt73pu4npppjlhoHlpJTli7nljI3oqIfljJDlh6vlpJnlhZXkuqDlhZbkurPooa7ooqTkurXohJToo5LnpoDlrLTooIPnvrjlhqvlhrHlhr3lhrwiXSxbImRhNDAiLCLotI4iLDE0LCLotKDotZHotZLotZfotZ/otaXotajotanotarotazota7ota/otbHotbLotbgiLDgsIui2gui2g+i2hui2h+i2iOi2iei2jCIsNCwi6LaS6LaT6LaVIiw5LCLotqDotqEiXSxbImRhODAiLCLotqLotqQiLDEyLCLotrLotrbotrfotrnotrvotr3ot4Dot4Hot4Lot4Xot4fot4jot4not4rot43ot5Dot5Lot5Pot5Tlh4flhpblhqLlhqXorqDorqborqforqrorrTorrXorrfor4Lor4Por4vor4/or47or5Lor5Por5Tor5bor5jor5nor5zor5/or6Dor6Tor6jor6nor67or7Dor7Por7bor7nor7zor7/osIDosILosITosIfosIzosI/osJHosJLosJTosJXosJbosJnosJvosJjosJ3osJ/osKDosKHosKXosKfosKrosKvosK7osK/osLLosLPosLXosLbljanljbrpmJ3pmKLpmKHpmLHpmKrpmL3pmLzpmYLpmYnpmZTpmZ/pmafpmazpmbLpmbTpmojpmo3pmpfpmrDpgpfpgpvpgp3pgpnpgqzpgqHpgrTpgrPpgrbpgroiXSxbImRiNDAiLCLot5Xot5jot5not5zot6Dot6Hot6Lot6Xot6bot6fot6not63ot67ot7Dot7Hot7Lot7Tot7bot7zot74iLDYsIui4hui4h+i4iOi4i+i4jei4jui4kOi4kei4kui4k+i4lSIsNywi6Lig6Lih6LikIiw0LCLouKvouK3ouLDouLLouLPouLTouLbouLfouLjouLvouLzouL4iXSxbImRiODAiLCLouL/ouYPouYXouYbouYwiLDQsIui5kyIsNSwi6LmaIiwxMSwi6Lmn6Lmo6Lmq6Lmr6Lmu6Lmx6YK46YKw6YOP6YOF6YK+6YOQ6YOE6YOH6YOT6YOm6YOi6YOc6YOX6YOb6YOr6YOv6YO+6YSE6YSi6YSe6YSj6YSx6YSv6YS56YWD6YWG5YiN5aWC5Yqi5Yqs5Yqt5Yq+5ZO/5YuQ5YuW5Yuw5Y+f54eu55+N5bu05Ye15Ye86ayv5Y625byB55Wa5bev5Z2M5Z6p5Z6h5aG+5aK85aOF5aOR5Zyp5Zys5Zyq5Zyz5Zy55Zyu5Zyv5Z2c5Zy75Z2C5Z2p5Z6F5Z2r5Z6G5Z285Z275Z2o5Z2t5Z225Z2z5Z6t5Z6k5Z6M5Z6y5Z+P5Z6n5Z605Z6T5Z6g5Z+V5Z+Y5Z+a5Z+Z5Z+S5Z645Z+05Z+v5Z+45Z+k5Z+dIl0sWyJkYzQwIiwi6Lmz6Lm16Lm3Iiw0LCLoub3oub7ouoDouoLouoPouoTouobouogiLDYsIui6kei6kui6k+i6lSIsNiwi6Lqd6LqfIiwxMSwi6Lqt6Lqu6Lqw6Lqx6LqzIiw2LCLoursiLDddLFsiZGM4MCIsIui7gyIsMTAsIui7jyIsMjEsIuWgi+WgjeWfveWfreWggOWgnuWgmeWhhOWgoOWhpeWhrOWigeWiieWimuWigOmmqOm8meaHv+iJueiJveiJv+iKj+iKiuiKqOiKhOiKjuiKkeiKl+iKmeiKq+iKuOiKvuiKsOiLiOiLiuiLo+iKmOiKt+iKruiLi+iLjOiLgeiKqeiKtOiKoeiKquiKn+iLhOiLjuiKpOiLoeiMieiLt+iLpOiMj+iMh+iLnOiLtOiLkuiLmOiMjOiLu+iLk+iMkeiMmuiMhuiMlOiMleiLoOiLleiMnOiNkeiNm+iNnOiMiOiOkuiMvOiMtOiMseiOm+iNnuiMr+iNj+iNh+iNg+iNn+iNgOiMl+iNoOiMreiMuuiMs+iNpuiNpSJdLFsiZGQ0MCIsIui7pSIsNjJdLFsiZGQ4MCIsIui8pCIsMzIsIuiNqOiMm+iNqeiNrOiNquiNreiNruiOsOiNuOiOs+iOtOiOoOiOquiOk+iOnOiOheiNvOiOtuiOqeiNveiOuOiNu+iOmOiOnuiOqOiOuuiOvOiPgeiQgeiPpeiPmOWgh+iQmOiQi+iPneiPveiPluiQnOiQuOiQkeiQhuiPlOiPn+iQj+iQg+iPuOiPueiPquiPheiPgOiQpuiPsOiPoeiRnOiRkeiRmuiRmeiRs+iSh+iSiOiRuuiSieiRuOiQvOiRhuiRqeiRtuiSjOiSjuiQseiRreiTgeiTjeiTkOiTpuiSveiTk+iTiuiSv+iSuuiToOiSoeiSueiStOiSl+iTpeiTo+iUjOeUjeiUuOiTsOiUueiUn+iUuiJdLFsiZGU0MCIsIui9hSIsMzIsIui9qui+gOi+jOi+kui+nei+oOi+oei+oui+pOi+pei+pui+p+i+qui+rOi+rei+rui+r+i+sui+s+i+tOi+tei+t+i+uOi+uui+u+i+vOi+v+i/gOi/g+i/hiJdLFsiZGU4MCIsIui/iSIsNCwi6L+P6L+S6L+W6L+X6L+a6L+g6L+h6L+j6L+n6L+s6L+v6L+x6L+y6L+06L+16L+26L+66L+76L+86L++6L+/6YCH6YCI6YCM6YCO6YCT6YCV6YCY6JWW6JS76JO/6JO86JWZ6JWI6JWo6JWk6JWe6JW6556i6JWD6JWy6JW76Jak6Jao6JaH6JaP6JW56Jau6Jac6JaF6Ja56Ja36Jaw6JeT6JeB6Jec6Je/6Jin6JiF6Jip6JiW6Ji85bu+5byI5aS85aWB6IC35aWV5aWa5aWY5YyP5bCi5bCl5bCs5bC05omM5omq5oqf5oq75ouK5oua5ouX5ouu5oyi5ou25oy55o2L5o2D5o6t5o+25o2x5o265o6O5o605o2t5o6s5o6K5o2p5o6u5o685o+y5o+45o+g5o+/5o+E5o+e5o+O5pGS5o+G5o6+5pGF5pGB5pCL5pCb5pCg5pCM5pCm5pCh5pGe5pKE5pGt5pKWIl0sWyJkZjQwIiwi6YCZ6YCc6YCj6YCk6YCl6YCnIiw1LCLpgLAiLDQsIumAt+mAuemAuumAvemAv+mBgOmBg+mBhemBhumBiCIsNCwi6YGO6YGU6YGV6YGW6YGZ6YGa6YGcIiw1LCLpgaTpgabpgafpganpgarpgavpgazpga8iLDQsIumBtiIsNiwi6YG+6YKBIl0sWyJkZjgwIiwi6YKE6YKF6YKG6YKH6YKJ6YKK6YKMIiw0LCLpgpLpgpTpgpbpgpjpgprpgpzpgp7pgp/pgqDpgqTpgqXpgqfpgqjpgqnpgqvpgq3pgrLpgrfpgrzpgr3pgr/pg4Dmkbrmkrfmkrjmkpnmkrrmk4Dmk5Dmk5fmk6Tmk6LmlInmlKXmlK7lvIvlv5LnlJnlvJHljZ/lj7Hlj73lj6nlj6jlj7vlkJLlkJblkIblkYvlkZLlkZPlkZTlkZblkYPlkKHlkZflkZnlkKPlkLLlkoLlkpTlkbflkbHlkaTlkprlkpvlkoTlkbblkablkp3lk5Dlkq3lk4LlkrTlk5Llkqflkqblk5Plk5TlkbLlkqPlk5Xlkrvlkr/lk4zlk5nlk5rlk5zlkqnlkqrlkqTlk53lk4/lk57llJvlk6fllKDlk73llJTlk7PllKLllKPllI/llJHllKfllKrllafllo/llrXllYnlla3llYHllZXllL/llZDllLwiXSxbImUwNDAiLCLpg4Lpg4Ppg4bpg4jpg4npg4vpg4zpg43pg5Lpg5Tpg5Xpg5bpg5jpg5npg5rpg57pg5/pg6Dpg6Ppg6Tpg6Xpg6npg6rpg6zpg67pg7Dpg7Hpg7Lpg7Ppg7Xpg7bpg7fpg7npg7rpg7vpg7zpg7/phIDphIHphIPphIUiLDE5LCLphJrphJvphJwiXSxbImUwODAiLCLphJ3phJ/phKDphKHphKQiLDEwLCLphLDphLIiLDYsIumEuiIsOCwi6YWE5ZS35ZWW5ZW15ZW25ZW35ZSz5ZSw5ZWc5ZaL5ZeS5ZaD5Zax5Za55ZaI5ZaB5Zaf5ZW+5ZeW5ZaR5ZW75Zef5Za95Za+5ZaU5ZaZ5Zeq5Ze35ZeJ5Zif5ZeR5Zer5Zes5ZeU5Zem5Zed5ZeE5Zev5Zel5Zey5Zez5ZeM5ZeN5Zeo5Ze15Zek6L6U5Zie5ZiI5ZiM5ZiB5Zik5Zij5Ze+5ZiA5Zin5Zit5ZmY5Zi55ZmX5Zis5ZmN5Zmi5ZmZ5Zmc5ZmM5ZmU5ZqG5Zmk5Zmx5Zmr5Zm75Zm85ZqF5ZqT5Zqv5ZuU5ZuX5Zud5Zuh5Zu15Zur5Zu55Zu/5ZyE5ZyK5ZyJ5Zyc5biP5biZ5biU5biR5bix5bi75bi8Il0sWyJlMTQwIiwi6YWF6YWH6YWI6YWR6YWT6YWU6YWV6YWW6YWY6YWZ6YWb6YWc6YWf6YWg6YWm6YWn6YWo6YWr6YWt6YWz6YW66YW76YW86YaAIiw0LCLphobphojphorpho7pho/phpMiLDYsIumGnCIsNSwi6YakIiw1LCLphqvphqzphrDphrHphrLphrPphrbphrfphrjphrnphrsiXSxbImUxODAiLCLphrwiLDEwLCLph4jph4vph5Dph5IiLDksIumHnSIsOCwi5bi35bmE5bmU5bmb5bme5bmh5bKM5bG65bKN5bKQ5bKW5bKI5bKY5bKZ5bKR5bKa5bKc5bK15bKi5bK95bKs5bKr5bKx5bKj5bOB5bK35bOE5bOS5bOk5bOL5bOl5bSC5bSD5bSn5bSm5bSu5bSk5bSe5bSG5bSb5bWY5bS+5bS05bS95bWs5bWb5bWv5bWd5bWr5bWL5bWK5bWp5bW05baC5baZ5bad6LGz5ba35beF5b2z5b235b6C5b6H5b6J5b6M5b6V5b6Z5b6c5b6o5b6t5b615b686KGi5b2h54qt54qw54q054q354q454uD54uB54uO54uN54uS54uo54uv54up54uy54u054u354yB54uz54yD54u6Il0sWyJlMjQwIiwi6YemIiw2Ml0sWyJlMjgwIiwi6YilIiwzMiwi54u754yX54yT54yh54yK54ye54yd54yV54yi54y554yl54ys54y454yx542Q542N542X542g542s542v542+6Iib5aSl6aOn5aSk5aSC6aWj6aWnIiw1LCLppbTppbfppb3ppoDppoTppofpporppo3pppDpppHpppPpppTpppXluoDlupHluovlupbluqXluqDlurnlurXlur7lurPotZPlu5Llu5Hlu5vlu6jlu6rohrrlv4Tlv4nlv5blv4/mgIPlv67mgITlv6Hlv6Tlv77mgIXmgIblv6rlv63lv7jmgJnmgLXmgKbmgJvmgI/mgI3mgKnmgKvmgIrmgL/mgKHmgbjmgbnmgbvmgbrmgYIiXSxbImUzNDAiLCLpiYYiLDQ1LCLpibUiLDE2XSxbImUzODAiLCLpioYiLDcsIumKjyIsMjQsIuaBquaBveaCluaCmuaCreaCneaCg+aCkuaCjOaCm+aDrOaCu+aCseaDneaDmOaDhuaDmuaCtOaEoOaEpuaEleaEo+aDtOaEgOaEjuaEq+aFiuaFteaGrOaGlOaGp+aGt+aHlOaHteW/nemas+mXqemXq+mXsemXs+mXtemXtumXvOmXvumYg+mYhOmYhumYiOmYiumYi+mYjOmYjemYj+mYkumYlemYlumYl+mYmemYmuS4rOeIv+aIleawteaxlOaxnOaxiuayo+ayheaykOaylOayjOaxqOaxqeaxtOaxtuayhuayqeazkOazlOayreazt+azuOazseazl+aysuazoOazluazuuazq+azruayseazk+azr+azviJdLFsiZTQ0MCIsIumKqCIsNSwi6YqvIiwyNCwi6YuJIiwzMV0sWyJlNDgwIiwi6YupIiwzMiwi5rS55rSn5rSM5rWD5rWI5rSH5rSE5rSZ5rSO5rSr5rWN5rSu5rS15rSa5rWP5rWS5rWU5rSz5raR5rWv5rae5rag5rWe5raT5raU5rWc5rWg5rW85rWj5ria5reH5reF5ree5riO5ra/5reg5riR5rem5red5reZ5riW5rar5riM5rau5rir5rmu5rmO5rmr5rqy5rmf5rqG5rmT5rmU5riy5ril5rmE5ruf5rqx5rqY5rug5ryt5rui5rql5rqn5rq95rq75rq35ruX5rq05ruP5rqP5ruC5rqf5r2i5r2G5r2H5ryk5ryV5ru55ryv5ry25r2L5r205ryq5ryJ5ryp5r6J5r6N5r6M5r245r2y5r285r265r+RIl0sWyJlNTQwIiwi6YyKIiw1MSwi6Yy/IiwxMF0sWyJlNTgwIiwi6Y2KIiwzMSwi6Y2r5r+J5r6n5r655r625r+C5r+h5r+u5r+e5r+g5r+v54Ca54Cj54Cb54C554C154GP54Ge5a6A5a6E5a6V5a6T5a6l5a6455Sv6aqe5pC05a+k5a+u6KSw5a+w6LmH6KyH6L626L+T6L+V6L+l6L+u6L+k6L+p6L+m6L+z6L+o6YCF6YCE6YCL6YCm6YCR6YCN6YCW6YCh6YC16YC26YCt6YCv6YGE6YGR6YGS6YGQ6YGo6YGY6YGi6YGb5pq56YG06YG96YKC6YKI6YKD6YKL5b2Q5b2X5b2W5b2Y5bC75ZKr5bGQ5bGZ5a2x5bGj5bGm57685byq5byp5byt6Im05by86ay75bGu5aaB5aaD5aaN5aap5aaq5aajIl0sWyJlNjQwIiwi6Y2sIiwzNCwi6Y6QIiwyN10sWyJlNjgwIiwi6Y6sIiwyOSwi6Y+L6Y+M6Y+N5aaX5aeK5aar5aae5aak5aeS5aay5aav5aeX5aa+5aiF5aiG5aed5aiI5aej5aeY5ae55aiM5aiJ5aiy5ai05aiR5aij5aiT5amA5amn5amK5amV5ai85ami5am16IOs5aqq5aqb5am35am65aq+5aur5aqy5auS5auU5aq45aug5auj5aux5auW5aum5auY5auc5ayJ5ayX5ayW5ayy5ay35a2A5bCV5bCc5a2a5a2l5a2z5a2R5a2T5a2i6am16am36am46am66am/6am96aqA6aqB6aqF6aqI6aqK6aqQ6aqS6aqT6aqW6aqY6aqb6aqc6aqd6aqf6aqg6aqi6aqj6aql6aqn57qf57qh57qj57ql57qo57qpIl0sWyJlNzQwIiwi6Y+OIiw3LCLpj5ciLDU0XSxbImU3ODAiLCLpkI4iLDMyLCLnuq3nurDnur7nu4Dnu4Hnu4Lnu4nnu4vnu4znu5Dnu5Tnu5fnu5vnu6Dnu6Hnu6jnu6vnu67nu6/nu7Hnu7LnvI3nu7bnu7rnu7vnu77nvIHnvILnvIPnvIfnvIjnvIvnvIznvI/nvJHnvJLnvJfnvJnnvJznvJvnvJ/nvKEiLDYsIue8que8q+e8rOe8ree8ryIsNCwi57y15bm655W/5beb55S+6YKV546O546R546u546i546f54+P54+C54+R5463546z54+A54+J54+I54+l54+Z6aG855CK54+p54+n54+e546654+y55CP55Cq55Gb55Cm55Cl55Co55Cw55Cu55CsIl0sWyJlODQwIiwi6ZCvIiwxNCwi6ZC/Iiw0Mywi6ZGs6ZGt6ZGu6ZGvIl0sWyJlODgwIiwi6ZGwIiwyMCwi6ZKR6ZKW6ZKY6ZOH6ZOP6ZOT6ZOU6ZOa6ZOm6ZO76ZSc6ZSg55Cb55Ca55GB55Gc55GX55GV55GZ55G355Gt55G+55Kc55KO55KA55KB55KH55KL55Ke55Ko55Kp55KQ55Kn55OS55K66Z+q6Z+r6Z+s5p2M5p2T5p2e5p2I5p2p5p6l5p6H5p2q5p2z5p6Y5p6n5p215p6o5p6e5p6t5p6L5p235p285p+w5qCJ5p+Y5qCK5p+p5p6w5qCM5p+Z5p615p+a5p6z5p+d5qCA5p+D5p645p+i5qCO5p+B5p+95qCy5qCz5qGg5qGh5qGO5qGi5qGE5qGk5qKD5qCd5qGV5qGm5qGB5qGn5qGA5qC+5qGK5qGJ5qCp5qK15qKP5qG05qG35qKT5qGr5qOC5qWu5qO85qSf5qSg5qO5Il0sWyJlOTQwIiwi6ZSn6ZSz6ZS96ZWD6ZWI6ZWL6ZWV6ZWa6ZWg6ZWu6ZW06ZW16ZW3Iiw3LCLploAiLDQyXSxbImU5ODAiLCLplqsiLDMyLCLmpKTmo7DmpIvmpIHmpZfmo6PmpJDmpbHmpLnmpaDmpYLmpZ3mpoTmpavmpoDmppjmpbjmpLTmp4zmpofmpojmp47mponmpabmpaPmpbnmppvmpqfmprvmpqvmpq3mp5TmprHmp4Hmp4rmp5/mppXmp6Dmpo3mp7/mqK/mp63mqJfmqJjmqaXmp7LmqYTmqL7mqqDmqZDmqZvmqLXmqo7mqbnmqL3mqKjmqZjmqbzmqpHmqpDmqqnmqpfmqqvnjLfnjZLmroHmroLmrofmroTmrpLmrpPmro3mrprmrpvmrqHmrqrovavova3ovbHovbLovbPovbXovbbovbjovbfovbnovbrovbzovb7ovoHovoLovoTovofovosiXSxbImVhNDAiLCLpl4wiLDI3LCLpl6zpl7/pmIfpmJPpmJjpmJvpmJ7pmKDpmKMiLDYsIumYq+mYrOmYremYr+mYsOmYt+mYuOmYuemYuumYvumZgemZg+mZiumZjumZj+mZkemZkumZk+mZlumZlyJdLFsiZWE4MCIsIumZmOmZmemZmumZnOmZnemZnumZoOmZo+mZpemZpumZq+mZrSIsNCwi6Zmz6Zm4IiwxMiwi6ZqH6ZqJ6ZqK6L6N6L6O6L6P6L6Y6L6a6LuO5oiL5oiX5oib5oif5oii5oih5oil5oik5ois6Ien55Ov55O055O/55SP55SR55ST5pS05peu5pev5pew5piK5piZ5p2y5piD5piV5piA54KF5pu35pid5pi05pix5pi25pi16ICG5pmf5pmU5pmB5pmP5pmW5pmh5pmX5pm35pqE5pqM5pqn5pqd5pq+5pub5puc5pum5pup6LSy6LSz6LS26LS76LS96LWA6LWF6LWG6LWI6LWJ6LWH6LWN6LWV6LWZ6KeH6KeK6KeL6KeM6KeO6KeP6KeQ6KeR54mu54qf54md54mm54mv54m+54m/54qE54qL54qN54qP54qS5oyI5oyy5o6wIl0sWyJlYjQwIiwi6ZqM6ZqO6ZqR6ZqS6ZqT6ZqV6ZqW6Zqa6Zqb6ZqdIiw5LCLpmqgiLDcsIumasemasumatOmatemat+mauOmauumau+mav+mbgumbg+mbiOmbiumbi+mbkOmbkembk+mblOmbliIsOSwi6ZuhIiw2LCLpm6siXSxbImViODAiLCLpm6zpm63pm67pm7Dpm7Hpm7Lpm7Tpm7Xpm7jpm7rpm7vpm7zpm73pm7/pnILpnIPpnIXpnIrpnIvpnIzpnJDpnJHpnJLpnJTpnJXpnJciLDQsIumcnemcn+mcoOaQv+aTmOiAhOavquavs+avveavteavueawheawh+awhuawjeawleawmOawmeawmuawoeawqeawpOawquawsuaUteaVleaVq+eJjeeJkueJlueIsOiZouWIluiCn+iCnOiCk+iCvOaciuiCveiCseiCq+iCreiCtOiCt+iDp+iDqOiDqeiDquiDm+iDguiDhOiDmeiDjeiDl+ackOiDneiDq+iDseiDtOiDreiEjeiEjuiDsuiDvOacleiEkuixmuiEtuiEnuiErOiEmOiEsuiFiOiFjOiFk+iFtOiFmeiFmuiFseiFoOiFqeiFvOiFveiFreiFp+WhjeWqteiGiOiGguiGkea7leiGo+iGquiHjOacpuiHiuiGuyJdLFsiZWM0MCIsIumcoSIsOCwi6Zyr6Zys6Zyu6Zyv6Zyx6ZyzIiw0LCLpnLrpnLvpnLzpnL3pnL8iLDE4LCLpnZTpnZXpnZfpnZjpnZrpnZzpnZ3pnZ/pnaPpnaTpnabpnafpnajpnaoiLDddLFsiZWM4MCIsIumdsumdtemdtyIsNCwi6Z29Iiw3LCLpnoYiLDQsIumejOmejumej+mekOmek+melemelumel+memSIsNCwi6IeB6Iam5qyk5qy35qy55q2D5q2G5q2Z6aOR6aOS6aOT6aOV6aOZ6aOa5q6z5b2A5q+C6Kez5paQ6b2R5paT5pa85peG5peE5peD5peM5peO5peS5peW54KA54Kc54KW54Kd54K754OA54K354Kr54Kx54Oo54OK54SQ54ST54SW54Sv54Sx54Wz54Wc54Wo54WF54Wy54WK54W454W654aY54az54a154ao54ag54eg54eU54en54e554id54io54Gs54SY54Wm54a55oi+5oi95omD5omI5omJ56S756WA56WG56WJ56Wb56Wc56WT56Wa56Wi56WX56Wg56Wv56Wn56W656aF56aK56aa56an56az5b+R5b+QIl0sWyJlZDQwIiwi6Z6e6Z6f6Z6h6Z6i6Z6kIiw2LCLpnqzpnq7pnrDpnrHpnrPpnrUiLDQ2XSxbImVkODAiLCLpn6Tpn6Xpn6jpn64iLDQsIumftOmftyIsMjMsIuaAvOaBneaBmuaBp+aBgeaBmeaBo+aCq+aEhuaEjeaFneaGqeaGneaHi+aHkeaIhuiCgOiBv+ayk+aztua3vOeftuefuOeggOegieegl+egmOegkeaWq+egreegnOegneegueeguuegu+egn+egvOegpeegrOego+egqeehjuehreehluehl+egpuehkOehh+ehjOehqueim+eik+eimueih+einOeioeeio+eisueiueeipeejlOejmeejieejrOejsuekheejtOekk+ekpOeknuektOm+m+m7uem7u+m7vOebseechOecjeebueech+eciOecmuecouecmeecreecpuecteecuOedkOedkeedh+edg+edmuedqCJdLFsiZWU0MCIsIumgjyIsNjJdLFsiZWU4MCIsIumhjiIsMzIsIuedouedpeedv+eejeedveeegOeejOeekeeen+eeoOeesOeeteeeveeUuueVgOeVjueVi+eViOeVm+eVsueVueeWg+e9mOe9oee9n+ipiOe9qOe9tOe9see9uee+gee9vuebjeebpeigsumShemShumSh+mSi+mSiumSjOmSjemSj+mSkOmSlOmSl+mSlemSmumSm+mSnOmSo+mSpOmSq+mSqumSremSrOmSr+mSsOmSsumStOmStiIsNCwi6ZK86ZK96ZK/6ZOE6ZOIIiw2LCLpk5Dpk5Hpk5Lpk5Xpk5bpk5fpk5npk5jpk5vpk57pk5/pk6Dpk6Lpk6Tpk6Xpk6fpk6jpk6oiXSxbImVmNDAiLCLpoa8iLDUsIumii+mijumikumilemimemio+miqCIsMzcsIumjj+mjkOmjlOmjlumjl+mjm+mjnOmjnemjoCIsNF0sWyJlZjgwIiwi6aOl6aOm6aOpIiwzMCwi6ZOp6ZOr6ZOu6ZOv6ZOz6ZO06ZO16ZO36ZO56ZO86ZO96ZO/6ZSD6ZSC6ZSG6ZSH6ZSJ6ZSK6ZSN6ZSO6ZSP6ZSSIiw0LCLplJjplJvplJ3plJ7plJ/plKLplKrplKvplKnplKzplLHplLLplLTplLbplLfplLjplLzplL7plL/plYLplLXplYTplYXplYbplYnplYzplY7plY/plZLplZPplZTplZbplZfplZjplZnplZvplZ7plZ/plZ3plaHplaLplaQiLDgsIumVr+mVsemVsumVs+mUuuefp+efrOmbieenleenreeno+enq+eohuW1h+eog+eogueonueolCJdLFsiZjA0MCIsIumkiCIsNCwi6aSO6aSP6aSRIiwyOCwi6aSvIiwyNl0sWyJmMDgwIiwi6aWKIiw5LCLppZYiLDEyLCLppaTppabppbPppbjppbnppbvppb7ppoLppoPpponnqLnnqLfnqZHpu4/ppqXnqbDnmojnmo7nmpPnmpnnmqTnk57nk6DnlKzpuKDpuKLpuKgiLDQsIum4sum4sem4tum4uOm4t+m4uem4uum4vum5gem5gum5hOm5hum5h+m5iOm5iem5i+m5jOm5jum5kem5lem5l+m5mum5m+m5nOm5num5o+m5piIsNiwi6bmx6bmt6bmz55aS55aU55aW55ag55ad55as55aj55az55a055a455eE55ax55aw55eD55eC55eW55eN55ej55eo55em55ek55er55en55iD55ex55e855e/55iQ55iA55iF55iM55iX55iK55il55iY55iV55iZIl0sWyJmMTQwIiwi6aaM6aaO6aaaIiwxMCwi6aam6aan6aapIiw0N10sWyJmMTgwIiwi6aeZIiwzMiwi55ib55i855ii55ig55mA55it55iw55i/55i155mD55i+55iz55mN55me55mU55mc55mW55mr55mv57+K56um56m456m556qA56qG56qI56qV56qm56qg56qs56qo56qt56qz6KGk6KGp6KGy6KG96KG/6KKC6KKi6KOG6KK36KK86KOJ6KOi6KOO6KOj6KOl6KOx6KSa6KO86KOo6KO+6KOw6KSh6KSZ6KST6KSb6KSK6KS06KSr6KS26KWB6KWm6KW755aL6IOl55qy55q055+c6ICS6ICU6ICW6ICc6ICg6ICi6ICl6ICm6ICn6ICp6ICo6ICx6ICL6IC16IGD6IGG6IGN6IGS6IGp6IGx6KaD6aG46aKA6aKDIl0sWyJmMjQwIiwi6ae6Iiw2Ml0sWyJmMjgwIiwi6ai5IiwzMiwi6aKJ6aKM6aKN6aKP6aKU6aKa6aKb6aKe6aKf6aKh6aKi6aKl6aKm6JmN6JmU6Jms6Jmu6Jm/6Jm66Jm86Jm76Jqo6JqN6JqL6Jqs6Jqd6Jqn6Jqj6Jqq6JqT6Jqp6Jq26JuE6Jq16JuO6Jqw6Jq66Jqx6Jqv6JuJ6JuP6Jq06Jup6Jux6Juy6Jut6Juz6JuQ6JyT6Jue6Ju06Juf6JuY6JuR6JyD6JyH6Ju46JyI6JyK6JyN6JyJ6Jyj6Jy76Jye6Jyl6Jyu6Jya6Jy+6J2I6Jy06Jyx6Jyp6Jy36Jy/6J6C6Jyi6J296J2+6J276J2g6J2w6J2M6J2u6J6L6J2T6J2j6J286J2k6J2Z6J2l6J6T6J6v6J6o6J+SIl0sWyJmMzQwIiwi6amaIiwxNywi6amy6aqD6aqJ6aqN6aqO6aqU6aqV6aqZ6aqm6aqpIiw2LCLpqrLpqrPpqrTpqrXpqrnpqrvpqr3pqr7pqr/pq4Ppq4Tpq4YiLDQsIumrjemrjumrj+mrkOmrkumrlOmrlemrlumrl+mrmemrmumrm+mrnCJdLFsiZjM4MCIsIumrnemrnumroOmroumro+mrpOmrpemrp+mrqOmrqemrqumrrOmrrumrsCIsOCwi6au66au8Iiw2LCLprITprIXprIbon4bonojonoXonq3onpfonoPonqvon6XonqzonrXonrPon4von5Ponr3on5Hon4Don4ron5von6ron6Don67ooJbooJPon77ooIrooJvooKHooLnooLznvLbnvYLnvYTnvYXoiJDnq7rnq73nrIjnrIPnrITnrJXnrIrnrKvnrI/nrYfnrLjnrKrnrJnnrK7nrLHnrKDnrKXnrKTnrLPnrL7nrJ7nrZjnrZrnrYXnrbXnrYznrZ3nraDnra7nrbvnraLnrbLnrbHnrpDnrqbnrqfnrrjnrqznrp3nrqjnroXnrqrnrpznrqLnrqvnrrTnr5Hnr4Hnr4znr53nr5rnr6Xnr6bnr6rnsIznr77nr7znsI/nsJbnsIsiXSxbImY0NDAiLCLprIfprIkiLDUsIumskOmskemskumslCIsMTAsIumsoOmsoemsoumspCIsMTAsIumssOmssemssyIsNywi6ay96ay+6ay/6a2A6a2G6a2K6a2L6a2M6a2O6a2Q6a2S6a2T6a2VIiw1XSxbImY0ODAiLCLprZsiLDMyLCLnsJ/nsKrnsKbnsLjnsYHnsYDoh77oiIHoiILoiIToh6zooYToiKHoiKLoiKPoiK3oiK/oiKjoiKvoiLjoiLvoiLPoiLToiL7oiYToiYnoiYvoiY/oiZroiZ/oiajoob7oooXooojoo5joo5/opZ7nvp3nvp/nvqfnvq/nvrDnvrLnsbzmlYnnspHnsp3nspznsp7nsqLnsrLnsrznsr3ns4Hns4fns4zns43ns4jns4Xns5fns6joia7mmqjnvr/nv47nv5Xnv6Xnv6Hnv6bnv6nnv67nv7Pns7jntbfntqbntq7nuYfnupvpurjpurTotbPotoTotpTotpHotrHotafota3osYfosYnphYrphZDphY7phY/phaQiXSxbImY1NDAiLCLprbwiLDYyXSxbImY1ODAiLCLprrsiLDMyLCLphaLphaHphbDphanpha/phb3phb7phbLphbTphbnphozphoXphpDpho3phpHphqLphqPphqrphq3phq7phq/phrXphrTphrrosZXpub7otrjot6vouIXouZnouanotrXotr/otrzotrrot4Tot5bot5fot5rot57ot47ot4/ot5vot4bot6zot7fot7jot6Pot7not7vot6TouInot73ouJTouJ3ouJ/ouKzouK7ouKPouK/ouLrouYDouLnouLXouL3ouLHouYnouYHouYLouZHouZLouYroubDoubboubzoua/oubTouoXouo/oupToupDoupzoup7osbjosoLosorosoXospjospTmlpvop5bop57op5rop5wiXSxbImY2NDAiLCLpr5wiLDYyXSxbImY2ODAiLCLpsJsiLDMyLCLop6Xop6vop6/oqL7orKbpnZPpm6npm7Ppm6/pnIbpnIHpnIjpnI/pnI7pnKrpnK3pnLDpnL7pvoDpvoPpvoUiLDUsIum+jOm7vum8i+m8jemauemavOmavembjumbkueev+mboOmKjumKrumLiOmMvumNqumPiumOj+mQvumRq+mxv+mygumyhemyhumyh+myiOeoo+myi+myjumykOmykemykumylOmylemymumym+myniIsNSwi6bKlIiw0LCLpsqvpsq3psq7psrAiLDcsIumyuumyu+myvOmyvemzhOmzhemzhumzh+mziumziyJdLFsiZjc0MCIsIumwvCIsNjJdLFsiZjc4MCIsIumxu+mxvemxvumygOmyg+myhOmyiemyiumyjOmyj+myk+mylumyl+mymOmymemynemyqumyrOmyr+myuemyviIsNCwi6bOI6bOJ6bOR6bOS6bOa6bOb6bOg6bOh6bOMIiw0LCLps5Pps5Tps5Xps5fps5jps5nps5zps53ps5/ps6LpnbzpnoXpnpHpnpLpnpTpnq/pnqvpnqPpnrLpnrTpqrHpqrDpqrfpuZjpqrbpqrrpqrzpq4Hpq4Dpq4Xpq4Lpq4vpq4zpq5HprYXprYPprYfprYnprYjprY3prZHpo6jppI3ppK7ppZXppZTpq5/pq6Hpq6bpq6/pq6vpq7vpq63pq7nprIjprI/prJPprJ/prKPpur3pur7nuLvpuoLpuofpuojpuovpupLpj5bpup3pup/pu5vpu5zpu53pu6Dpu5/pu6Lpu6npu6fpu6Xpu6rpu6/pvKLpvKzpvK/pvLnpvLfpvL3pvL7pvYQiXSxbImY4NDAiLCLps6MiLDYyXSxbImY4ODAiLCLptKIiLDMyXSxbImY5NDAiLCLptYMiLDYyXSxbImY5ODAiLCLptoIiLDMyXSxbImZhNDAiLCLptqMiLDYyXSxbImZhODAiLCLpt6IiLDMyXSxbImZiNDAiLCLpuIMiLDI3LCLpuKTpuKfpuK7puLDpuLTpuLvpuLzpuYDpuY3puZDpuZLpuZPpuZTpuZbpuZnpuZ3puZ/puaDpuaHpuaLpuaXpua7pua/pubLpubQiLDksIum6gCJdLFsiZmI4MCIsIum6gem6g+m6hOm6hem6hum6iem6ium6jCIsNSwi6bqUIiw4LCLpup7puqAiLDUsIum6p+m6qOm6qem6qiJdLFsiZmM0MCIsIum6qyIsOCwi6bq16bq26bq36bq56bq66bq86bq/Iiw0LCLpu4Xpu4bpu4fpu4jpu4rpu4vpu4zpu5Dpu5Lpu5Ppu5Xpu5bpu5fpu5npu5rpu57pu6Hpu6Ppu6Tpu6bpu6jpu6vpu6zpu63pu67pu7AiLDgsIum7uum7vem7vyIsNl0sWyJmYzgwIiwi6byGIiw0LCLpvIzpvI/pvJHpvJLpvJTpvJXpvJbpvJjpvJoiLDUsIum8oem8oyIsOCwi6byt6byu6byw6byxIl0sWyJmZDQwIiwi6byyIiw0LCLpvLjpvLrpvLzpvL8iLDQsIum9hSIsMTAsIum9kiIsMzhdLFsiZmQ4MCIsIum9uSIsNSwi6b6B6b6C6b6NIiwxMSwi6b6c6b6d6b6e6b6hIiw0LCLvpKzvpbnvppXvp6fvp7EiXSxbImZlNDAiLCLvqIzvqI3vqI7vqI/vqJHvqJPvqJTvqJjvqJ/vqKDvqKHvqKPvqKTvqKfvqKjvqKkiXV0KCi8qKiovIH0pLAovKiA1NCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5ncwp2YXIgY29mID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NSk7Ci8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMKbW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkgewogIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTsKfTsKCgovKioqLyB9KSwKLyogNTUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKdmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7Cgptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkgewogIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7Cn07CgoKLyoqKi8gfSksCi8qIDU2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCi8vIDcuMi4xIFJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7CiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgIiArIGl0KTsKICByZXR1cm4gaXQ7Cn07CgoKLyoqKi8gfSksCi8qIDU3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCnZhciBwSUUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1KTsKdmFyIGNyZWF0ZURlc2MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTsKdmFyIHRvSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpOwp2YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU4KTsKdmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpOwp2YXIgSUU4X0RPTV9ERUZJTkUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk1KTsKdmFyIGdPUEQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOwoKZXhwb3J0cy5mID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KSA/IGdPUEQgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkgewogIE8gPSB0b0lPYmplY3QoTyk7CiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpOwogIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHsKICAgIHJldHVybiBnT1BEKE8sIFApOwogIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfQogIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVEZXNjKCFwSUUuZi5jYWxsKE8sIFApLCBPW1BdKTsKfTsKCgovKioqLyB9KSwKLyogNTggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pCnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7Ci8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlCi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eXBlIGlzIGEgc3RyaW5nCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7CiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBpdDsKICB2YXIgZm4sIHZhbDsKICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDsKICBpZiAodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDsKICBpZiAoIVMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7CiAgdGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKTsKfTsKCgovKioqLyB9KSwKLyogNTkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gbW9zdCBPYmplY3QgbWV0aG9kcyBieSBFUzYgc2hvdWxkIGFjY2VwdCBwcmltaXRpdmVzCnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKdmFyIGNvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpOwp2YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KTsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZLCBleGVjKSB7CiAgdmFyIGZuID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldOwogIHZhciBleHAgPSB7fTsKICBleHBbS0VZXSA9IGV4ZWMoZm4pOwogICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkgeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApOwp9OwoKCi8qKiovIH0pLAovKiA2MCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9IHsgImRlZmF1bHQiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwMCksIF9fZXNNb2R1bGU6IHRydWUgfTsKCi8qKiovIH0pLAovKiA2MSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Cgp2YXIgTElCUkFSWSA9IF9fd2VicGFja19yZXF1aXJlX18oNjIpOwp2YXIgJGV4cG9ydCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7CnZhciByZWRlZmluZSA9IF9fd2VicGFja19yZXF1aXJlX18oOTkpOwp2YXIgaGlkZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpOwp2YXIgaGFzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOCk7CnZhciBJdGVyYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTsKdmFyICRpdGVyQ3JlYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMDMpOwp2YXIgc2V0VG9TdHJpbmdUYWcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5KTsKdmFyIGdldFByb3RvdHlwZU9mID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMDYpOwp2YXIgSVRFUkFUT1IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpKCdpdGVyYXRvcicpOwp2YXIgQlVHR1kgPSAhKFtdLmtleXMgJiYgJ25leHQnIGluIFtdLmtleXMoKSk7IC8vIFNhZmFyaSBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGAKdmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InOwp2YXIgS0VZUyA9ICdrZXlzJzsKdmFyIFZBTFVFUyA9ICd2YWx1ZXMnOwoKdmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9OwoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7CiAgJGl0ZXJDcmVhdGUoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpOwogIHZhciBnZXRNZXRob2QgPSBmdW5jdGlvbiAoa2luZCkgewogICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07CiAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTsKICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07CiAgICB9IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9OwogIH07CiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJzsKICB2YXIgREVGX1ZBTFVFUyA9IERFRkFVTFQgPT0gVkFMVUVTOwogIHZhciBWQUxVRVNfQlVHID0gZmFsc2U7CiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7CiAgdmFyICRuYXRpdmUgPSBwcm90b1tJVEVSQVRPUl0gfHwgcHJvdG9bRkZfSVRFUkFUT1JdIHx8IERFRkFVTFQgJiYgcHJvdG9bREVGQVVMVF07CiAgdmFyICRkZWZhdWx0ID0gKCFCVUdHWSAmJiAkbmF0aXZlKSB8fCBnZXRNZXRob2QoREVGQVVMVCk7CiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDsKICB2YXIgJGFueU5hdGl2ZSA9IE5BTUUgPT0gJ0FycmF5JyA/IHByb3RvLmVudHJpZXMgfHwgJG5hdGl2ZSA6ICRuYXRpdmU7CiAgdmFyIG1ldGhvZHMsIGtleSwgSXRlcmF0b3JQcm90b3R5cGU7CiAgLy8gRml4IG5hdGl2ZQogIGlmICgkYW55TmF0aXZlKSB7CiAgICBJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKCRhbnlOYXRpdmUuY2FsbChuZXcgQmFzZSgpKSk7CiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkgewogICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzCiAgICAgIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yUHJvdG90eXBlLCBUQUcsIHRydWUpOwogICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXMKICAgICAgaWYgKCFMSUJSQVJZICYmICFoYXMoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SKSkgaGlkZShJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpOwogICAgfQogIH0KICAvLyBmaXggQXJyYXkje3ZhbHVlcywgQEBpdGVyYXRvcn0ubmFtZSBpbiBWOCAvIEZGCiAgaWYgKERFRl9WQUxVRVMgJiYgJG5hdGl2ZSAmJiAkbmF0aXZlLm5hbWUgIT09IFZBTFVFUykgewogICAgVkFMVUVTX0JVRyA9IHRydWU7CiAgICAkZGVmYXVsdCA9IGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuICRuYXRpdmUuY2FsbCh0aGlzKTsgfTsKICB9CiAgLy8gRGVmaW5lIGl0ZXJhdG9yCiAgaWYgKCghTElCUkFSWSB8fCBGT1JDRUQpICYmIChCVUdHWSB8fCBWQUxVRVNfQlVHIHx8ICFwcm90b1tJVEVSQVRPUl0pKSB7CiAgICBoaWRlKHByb3RvLCBJVEVSQVRPUiwgJGRlZmF1bHQpOwogIH0KICAvLyBQbHVnIGZvciBsaWJyYXJ5CiAgSXRlcmF0b3JzW05BTUVdID0gJGRlZmF1bHQ7CiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzOwogIGlmIChERUZBVUxUKSB7CiAgICBtZXRob2RzID0gewogICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLAogICAgICBrZXlzOiBJU19TRVQgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChLRVlTKSwKICAgICAgZW50cmllczogJGVudHJpZXMKICAgIH07CiAgICBpZiAoRk9SQ0VEKSBmb3IgKGtleSBpbiBtZXRob2RzKSB7CiAgICAgIGlmICghKGtleSBpbiBwcm90bykpIHJlZGVmaW5lKHByb3RvLCBrZXksIG1ldGhvZHNba2V5XSk7CiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpOwogIH0KICByZXR1cm4gbWV0aG9kczsKfTsKCgovKioqLyB9KSwKLyogNjIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKbW9kdWxlLmV4cG9ydHMgPSB0cnVlOwoKCi8qKiovIH0pLAovKiA2MyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgovLyA3LjEuNCBUb0ludGVnZXIKdmFyIGNlaWwgPSBNYXRoLmNlaWw7CnZhciBmbG9vciA9IE1hdGguZmxvb3I7Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7CiAgcmV0dXJuIGlzTmFOKGl0ID0gK2l0KSA/IDAgOiAoaXQgPiAwID8gZmxvb3IgOiBjZWlsKShpdCk7Cn07CgoKLyoqKi8gfSksCi8qIDY0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCnZhciBzaGFyZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY1KSgna2V5cycpOwp2YXIgdWlkID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOCk7Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkgewogIHJldHVybiBzaGFyZWRba2V5XSB8fCAoc2hhcmVkW2tleV0gPSB1aWQoa2V5KSk7Cn07CgoKLyoqKi8gfSksCi8qIDY1ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTsKdmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nOwp2YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkgewogIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0ge30pOwp9OwoKCi8qKiovIH0pLAovKiA2NiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgovLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzCm1vZHVsZS5leHBvcnRzID0gKAogICdjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2YnCikuc3BsaXQoJywnKTsKCgovKioqLyB9KSwKLyogNjcgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIGNsYXNzb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY4KTsKdmFyIElURVJBVE9SID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KSgnaXRlcmF0b3InKTsKdmFyIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpOwptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMikuZ2V0SXRlcmF0b3JNZXRob2QgPSBmdW5jdGlvbiAoaXQpIHsKICBpZiAoaXQgIT0gdW5kZWZpbmVkKSByZXR1cm4gaXRbSVRFUkFUT1JdCiAgICB8fCBpdFsnQEBpdGVyYXRvciddCiAgICB8fCBJdGVyYXRvcnNbY2xhc3NvZihpdCldOwp9OwoKCi8qKiovIH0pLAovKiA2OCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBnZXR0aW5nIHRhZyBmcm9tIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKQp2YXIgY29mID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NSk7CnZhciBUQUcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpKCd0b1N0cmluZ1RhZycpOwovLyBFUzMgd3JvbmcgaGVyZQp2YXIgQVJHID0gY29mKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJzsKCi8vIGZhbGxiYWNrIGZvciBJRTExIFNjcmlwdCBBY2Nlc3MgRGVuaWVkIGVycm9yCnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkgewogIHRyeSB7CiAgICByZXR1cm4gaXRba2V5XTsKICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH0KfTsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7CiAgdmFyIE8sIFQsIEI7CiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnCiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2UKICAgIDogdHlwZW9mIChUID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUQUcpKSA9PSAnc3RyaW5nJyA/IFQKICAgIC8vIGJ1aWx0aW5UYWcgY2FzZQogICAgOiBBUkcgPyBjb2YoTykKICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2sKICAgIDogKEIgPSBjb2YoTykpID09ICdPYmplY3QnICYmIHR5cGVvZiBPLmNhbGxlZSA9PSAnZnVuY3Rpb24nID8gJ0FyZ3VtZW50cycgOiBCOwp9OwoKCi8qKiovIH0pLAovKiA2OSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKCnZhciBfaXRlcmF0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMyk7Cgp2YXIgX2l0ZXJhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2l0ZXJhdG9yKTsKCnZhciBfc3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMTYpOwoKdmFyIF9zeW1ib2wyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3ltYm9sKTsKCnZhciBfdHlwZW9mID0gdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09ICJmdW5jdGlvbiIgJiYgdHlwZW9mIF9pdGVyYXRvcjIuZGVmYXVsdCA9PT0gInN5bWJvbCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSAiZnVuY3Rpb24iICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gX3N5bWJvbDIuZGVmYXVsdCAmJiBvYmogIT09IF9zeW1ib2wyLmRlZmF1bHQucHJvdG90eXBlID8gInN5bWJvbCIgOiB0eXBlb2Ygb2JqOyB9OwoKZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH0KCmV4cG9ydHMuZGVmYXVsdCA9IHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSAiZnVuY3Rpb24iICYmIF90eXBlb2YoX2l0ZXJhdG9yMi5kZWZhdWx0KSA9PT0gInN5bWJvbCIgPyBmdW5jdGlvbiAob2JqKSB7CiAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICJ1bmRlZmluZWQiID8gInVuZGVmaW5lZCIgOiBfdHlwZW9mKG9iaik7Cn0gOiBmdW5jdGlvbiAob2JqKSB7CiAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gImZ1bmN0aW9uIiAmJiBvYmouY29uc3RydWN0b3IgPT09IF9zeW1ib2wyLmRlZmF1bHQgJiYgb2JqICE9PSBfc3ltYm9sMi5kZWZhdWx0LnByb3RvdHlwZSA/ICJzeW1ib2wiIDogdHlwZW9mIG9iaiA9PT0gInVuZGVmaW5lZCIgPyAidW5kZWZpbmVkIiA6IF90eXBlb2Yob2JqKTsKfTsKCi8qKiovIH0pLAovKiA3MCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpleHBvcnRzLmYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOwoKCi8qKiovIH0pLAovKiA3MSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7CnZhciBjb3JlID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTsKdmFyIExJQlJBUlkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYyKTsKdmFyIHdrc0V4dCA9IF9fd2VicGFja19yZXF1aXJlX18oNzApOwp2YXIgZGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpLmY7Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHsKICB2YXIgJFN5bWJvbCA9IGNvcmUuU3ltYm9sIHx8IChjb3JlLlN5bWJvbCA9IExJQlJBUlkgPyB7fSA6IGdsb2JhbC5TeW1ib2wgfHwge30pOwogIGlmIChuYW1lLmNoYXJBdCgwKSAhPSAnXycgJiYgIShuYW1lIGluICRTeW1ib2wpKSBkZWZpbmVQcm9wZXJ0eSgkU3ltYm9sLCBuYW1lLCB7IHZhbHVlOiB3a3NFeHQuZihuYW1lKSB9KTsKfTsKCgovKioqLyB9KSwKLyogNzIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sczsKCgovKioqLyB9KSwKLyogNzMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKCgovKioqLyB9KSwKLyogNzQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKbW9kdWxlLmV4cG9ydHMgPSB7ICJkZWZhdWx0IjogX193ZWJwYWNrX3JlcXVpcmVfXygyMjMpLCBfX2VzTW9kdWxlOiB0cnVlIH07CgovKioqLyB9KSwKLyogNzUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFRZUEUpIHsKICBpZiAoIWlzT2JqZWN0KGl0KSB8fCBpdC5fdCAhPT0gVFlQRSkgdGhyb3cgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCEnKTsKICByZXR1cm4gaXQ7Cn07CgoKLyoqKi8gfSksCi8qIDc2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCnZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nOwoKbW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIChhcnIpIHsKICByZXR1cm4gdG9TdHJpbmcuY2FsbChhcnIpID09ICdbb2JqZWN0IEFycmF5XSc7Cn07CgoKLyoqKi8gfSksCi8qIDc3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgpmdW5jdGlvbiBUcmF2ZXJzYWxUcmFja2VyKCkgewoJdGhpcy5ldmVudHMgPSB7fTsKfQoKVHJhdmVyc2FsVHJhY2tlci5wcm90b3R5cGUuc3RhcnRUcmFja2luZyA9IGZ1bmN0aW9uIChldmVudCwgY2FsbGJhY2spIHsKCXZhciBjYWxsYmFja3MgPSB0aGlzLmV2ZW50c1tldmVudF0gfHwgKHRoaXMuZXZlbnRzW2V2ZW50XSA9IFtdKTsKCglpZiAoY2FsbGJhY2tzLmluZGV4T2YoY2FsbGJhY2spIDwgMCkgewoJCWNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKCX0KfTsKClRyYXZlcnNhbFRyYWNrZXIucHJvdG90eXBlLnN0b3BUcmFja2luZyA9IGZ1bmN0aW9uIChldmVudCwgY2FsbGJhY2spIHsKCXZhciBjYWxsYmFja3MgPSB0aGlzLmV2ZW50c1tldmVudF07CgoJaWYgKCFjYWxsYmFja3MpIHsKCQlyZXR1cm47Cgl9CgoJdmFyIGluZGV4ID0gY2FsbGJhY2tzLmluZGV4T2YoY2FsbGJhY2spOwoJaWYgKGluZGV4ID49IDApIHsKCQljYWxsYmFja3Muc3BsaWNlKGluZGV4LCAxKTsKCX0KfTsKClRyYXZlcnNhbFRyYWNrZXIucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbiAoZXZlbnQpIHsKCXZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTsKCXZhciBjYWxsYmFja3MgPSB0aGlzLmV2ZW50c1tldmVudF07CgoJaWYgKCFjYWxsYmFja3MpIHsKCQlyZXR1cm47Cgl9CgoJY2FsbGJhY2tzLmZvckVhY2goZnVuY3Rpb24gKGNhbGxiYWNrKSB7CgkJY2FsbGJhY2suYXBwbHkodGhpcywgYXJncyk7Cgl9KTsKfTsKClRyYXZlcnNhbFRyYWNrZXIucHJvdG90eXBlLmF1dG8gPSBmdW5jdGlvbiAoZXZlbnQsIGNhbGxiYWNrLCBpbm5lckZ1bmN0aW9uKSB7Cgl0aGlzLnN0YXJ0VHJhY2tpbmcoZXZlbnQsIGNhbGxiYWNrKTsKCWlubmVyRnVuY3Rpb24oKTsKCXRoaXMuc3RvcFRyYWNraW5nKGV2ZW50LCBjYWxsYmFjayk7Cn07Cgptb2R1bGUuZXhwb3J0cyA9IFRyYXZlcnNhbFRyYWNrZXI7CgoKLyoqKi8gfSksCi8qIDc4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS43LjEKKGZ1bmN0aW9uKCkgewogIHZhciBBSSwgQUwsIEJBLCBCSywgQ0IsIENJX0JSSywgQ0osIENQX0JSSywgQ1IsIERJX0JSSywgSUQsIElOX0JSSywgTEYsIExpbmVCcmVha2VyLCBOTCwgTlMsIFBSX0JSSywgU0EsIFNHLCBTUCwgVW5pY29kZVRyaWUsIFdKLCBYWCwgYmFzZTY0LCBjaGFyYWN0ZXJDbGFzc2VzLCBjbGFzc1RyaWUsIGRhdGEsIGZzLCBwYWlyVGFibGUsIF9yZWYsIF9yZWYxOwoKICBVbmljb2RlVHJpZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDMpOwoKICAKCiAgYmFzZTY0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzEpOwoKICBfcmVmID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzIpLCBCSyA9IF9yZWYuQkssIENSID0gX3JlZi5DUiwgTEYgPSBfcmVmLkxGLCBOTCA9IF9yZWYuTkwsIENCID0gX3JlZi5DQiwgQkEgPSBfcmVmLkJBLCBTUCA9IF9yZWYuU1AsIFdKID0gX3JlZi5XSiwgU1AgPSBfcmVmLlNQLCBCSyA9IF9yZWYuQkssIExGID0gX3JlZi5MRiwgTkwgPSBfcmVmLk5MLCBBSSA9IF9yZWYuQUksIEFMID0gX3JlZi5BTCwgU0EgPSBfcmVmLlNBLCBTRyA9IF9yZWYuU0csIFhYID0gX3JlZi5YWCwgQ0ogPSBfcmVmLkNKLCBJRCA9IF9yZWYuSUQsIE5TID0gX3JlZi5OUywgY2hhcmFjdGVyQ2xhc3NlcyA9IF9yZWYuY2hhcmFjdGVyQ2xhc3NlczsKCiAgX3JlZjEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzMyksIERJX0JSSyA9IF9yZWYxLkRJX0JSSywgSU5fQlJLID0gX3JlZjEuSU5fQlJLLCBDSV9CUksgPSBfcmVmMS5DSV9CUkssIENQX0JSSyA9IF9yZWYxLkNQX0JSSywgUFJfQlJLID0gX3JlZjEuUFJfQlJLLCBwYWlyVGFibGUgPSBfcmVmMS5wYWlyVGFibGU7CgogIGRhdGEgPSBiYXNlNjQudG9CeXRlQXJyYXkoIkFBNElBQUFBQUFBQUFocWc1VlY3Tkp0WnZ6N2ZUQzh6VTVkZXBsVWxNclFvV3FtcWFoRDVTbzBhaXBZV3JVaFZGU1ZCUTEwaVNUdFV0VzZuS0RWRjZrN2Q3NWVRZkVVYkZjUTlLaUZTOTB0UUVvbGNQMjNuckxQbU8rZXNyLytmMzlyci9hMjkzdC9lNy9QOG5tZnZsejBPNlJ2ckJKQUR0YkJOYUQ4OElPS1RPbU9yQ3FodTl6RTc3MHZjMXBCVi94TDVkeGoyVjdaajRGR1NvbUZLU3RDV05sVjdoRzFWYWJaZloxTGFIYkZyUnd6ekxqelBvaTFVSERubFYvbFdiaGdJSUp2TEJwL3B1N0FIRWRSbklZK1JPZFh4ZzRmTnBNZFR4Vm5ubTA4T2pvemVqQVZzQnF3cXo4a2RkR1JsUnhzZDhjNTVkTlpvUHVleDZhN0R0NkwwTk5iMDNzcWdUbFIyL09UN2VUdDBZMFducFVYeExzcDVTTUFOYzREc21YNHpKVUJRdnpud2V4bTl0c01IK0M5dVJZTVBPZDk2WkhCMjlOWmpDSU0ybmZPN3RzbVF2ZVgzbDJyN2Z0ME40L1NSSjdrTzZZOFpDYWV1VVE0Z01UWjY3Y3A3VGd4dmxORHNQZ09CZFppMllUYW01UTdtMyswMGwrWEc3UHJEZTZZb1BtSGdLK3lMaWg3ZkFSMTZaRkNlRDlXdk9WdCtnZk5XL0tUNS9NNnJiLzlLRVJ0K04xbGFkNVJuZVZqenhYSHNMb2Z1VStUdnJFc3IzKzI2c1Z6NVdKaDZML3N2b1BLM3FlcEZIOWJ5c0Rsald0RDFGN0tyeHpXMWk5citlL05MeFYvYWN0czd6dW8zMDRKOSt0M1BkNlk2dThmM0VBcXhOUmd2NURaamFJM3VueXZrdkhQeWEvdjNtV1ZZT0MzOHFCcTExK3lIWjJiQXlQMUhia1Y5MnZkbm83cjJseHo5VXdDZENKVmZkMTROTGNwTzJDYWRIUy9YUEo5ZG9YZ3o1dkx2LzFPQlZTM2dYMEQ5bjZMaU5JRGZwaWxPOVJzTGdaMlcvd0l5OFcvUmg5M2pmb3o0cW1SVjJ4RWx2NnAybFJYUWRPNi9DdjhmNW5HbjN1MHdMWGpobnZDbGFiTDFvKzd5dklwdkxmVC94c0tHMzB5L3NUdnEzMGlhOUN6eHA5ZHI5di9lN1luL08wUUpYeHhCT0ptY2VQL0RCRmExcTF2Nm91ZG4vZTZxYy8zN2RVb052bllMNHBsUTlPb25lWU9oL3I4Zk9GbTd5bDdGRVRIWTlkWGQ1SzJuL3FFYzUzZE9FZTFUVEpjdkNmcDFkcFRDMzM0bDB2eWFGTDZtdHRORWJGanpPK1pWMm1MazBxYzNCcnhKNGQ5Z3dlTW1qUm9yeGI3dmljMHJTcTZENHd6QXlGV2FzMVRxUEUwc0xJOFhMQXJ5Qzh0UENoYU4zQUxFWlNXbXRCMzRTeVpjeFhZbi9FNFRnMExlTUlQaGdQS0Q5enlIR014eGh4bkREaWg3ZUk4NnhFQ1RNOHpvZFVDZGdmZlVtUmg0clE4enlBNm93L0FlaSswMWE4T01memlRUStHQUVraHdOL2NxVUZZQVZ6QTlleDRuNmpndHNpTXZYZjVCdFh4RVU0aFNwaHZ4M3Y4KzlhdThlRWVrRUVwa3JrbmUvekIxTStIQVB1WEl6M3BheEtsZmU4YURNZkdXQVg2TWQ2UHV1QWRLSEZWSCsrRWQ1TEVqaTk0WjV6ZWlKSXhibVdlTjdycjEvWmNhQmw1L25pbWRIc0hnSUgvc3N5TFVYWjRmRFE0NkhuQmIraFFxRzh5TmlLUnJYTC9iMUlQWURVc3UzZEZLdFJNY2pxbFJ2T05kNHhCdk91ZngyY1VIdWs4cG1HMUQ3UHlPUW1VbWx1aXNWRlM5T1dTOGZQSWU4TGlDdGp3SktuRUM5aHJTOXVLbUlTSTNXYTUrdmRYVUc5ZHR5ZnI3Zy9vSnYyd2J6ZVpVODM4RzZtRXZudFViM1NWVi9mQlo2SC9zTCtsRWx6ZVJySHkyWGJlN1VXWDFxNXNnT1E4MXJ2KzJiYWVqNGZQNG01TWYvR2tveGZEdFQzKytLUDdkbzlKbjI2YWE2eEFoQ2Y1TDlSWlZma1dLQ2NqSTFlWWJtMnBsdlRFcWtEeEtDNDAyYkd6WENZYUdudUFMSGFiQlQxZEZMdU9TQjdSb3JPUEVoWmFoMU5qWklnUi9VRkdmSzNwMUVsWW5ldk9NQkRMVVJkcElqckkrcVprNHNmZkdiUkZpWHVFbWRGamlBT0RsUUNKdklhQjFyVzYxTGpnM3k0ZVM0TEFjU2dEeHhaUXMwRFlhMTV3QTAzMlorbEdVZnBveU9yRm8zbWcxc1JRdE4vZkhIQ3gzVHJNOGVUcmxkTWJZaXNETFhiVURvWE1MZWpTcTBmVU51TzFtdVgwZ0VhOHZneWVna3FpcXFiQzNXMFM0Y0M5S210OE11Uy9oRk83WGVpM2Y4clN2SWpldmVNTTdreGpVaXhPcmw2Z0pzaGU0SlU3UGhPSHBmclJZdnU3eW9BWkthM0J1eWsySitLNVcrbk5UejFuaEpEaFJVZkRKTGlVWHhqeFhDSmVlYU9lL3I3SGxCUC91VVJjLzVlZmFaRVB4cjU1UWozOXJmVExrdWdVR3lNcndvN0hBZ2xmRWpEcmllaEYxalh0d0prUG9pWWtZUTVhb1hTQTdxYkNCR0txNWh3dHUyVmtwSTl4VkRvcC8xeHJDNTJlaUl2Q29QV3g0bExsNDBqbTl1cHZ5Y1ZQZnBhSDkvbzJENHhLWHBlTmpFMkhQUVJTKzNSRmFZVGM0VHh3N0R2cTVYNkpCUnd6czltdm9CNDlCSzZiK1hnc1pWSllpSW5UbFNYWis2MkZUMThta0ZWY1BLQ0pzb0Y1YWhiMTlXaGVaTFVZc1N3ZHJyVk0zYVEyWEU2U3pVMnhIRFM2aVdrb2RrNUFGNkY4V1VObW11c2hpOGFWcE1Qd2lJZkVpUVdvM0NBcE9ORFJqcmhEaVZua2FGc2FQNXJqSUprbXNONlYyNmxpNUxOTTNKeEdTeUtnb21rblR5eXJoY253djlRY3FhcTV1dEFoNDRXMzBTV284UTBYSEtSMGdsUEY0ZldzdDFGVUNuazJ3b0ZxM2l5OWZBYnpjako4ZnZTamdLVk9mbjE0UkRxeVF1SWdhR0padXN3VHl3ZENGU2E4OVNha01mNmZlKzlLYVFNWVFsS3hpSkJjenVQU2hvNHdtQmpkQSthZzZRVU9yMkdkcGNiU2w1MUF5NmtoaEJ0NVVYZHJueGM3WkdNeEN2ejk2QTRvTG9jeGgyK3B4KzF6a3lMYWNDR3J4blB6VFJTZ3JMS3BTdEZwSDVwcEtXbTdQZ01LWnR3Z3l0S0xPamJHQ09RTFRtK0tPb3dxYTFzZHV0OXJhajFDWkZrWkQwamJhS05McEpVYXJTSDVRa254MVlpT3hkQTVMNmQ1c2ZJL3VubWtTRjY1SWMvQXZ0WHQ5OFBucmR3bDV2Z3BwUTNkWXpXRndrblpzeTZ4aDJsbG1MeHBlZ0Y4YXlMd25pa25sWFJIaUY0aHp6cmdCOGpRNHdkSXFjYUhDRUF4eUp3Q2VHa1hQQlpZU3JyR2E0dk13WnZOTjlhSzBGNEpCT0s5bVE4ZzhFakViSVFWd3ZmUzJEOEd1Q1lzZHF3cVNXYlFyZldkVFJVSk1xbXBuV1BheDRaN0UxMzdJNmJySGJ2anBQbGZOWnBGMWQ3UFA3SEIvTVBIY0hWS1RNaExPNGYzQ1pjYWNjWkVPaVMyRHBLaVFCNUtYREorT3NwY3o0cVRSQ1J4Z3JLRVFJZ1VrS0xUS0t3c2tkeDJEV28zYmczUEVvQjVoMm5BMjRvbHdmS1NSK1FSNlRBdkVEaS8wY3poVVQ1OVJabU8xTUdlS0dlRWZ1T1NQV2ZMK1hLbWhxcFptT1ZSOW1KVk5EUEtPUzQ5THErVW0xMFlzQnliekRNdGVtbFBDT0pFdEU4emFYaHNhcUVzOWJuZ1NKR2hsT1RUTWxDWGx5OVF2NWNSTjNQVkxLN3pvTXB0dXRmN2lodXRyUS9YajdWcWVDZFV3bGVUVEtrbE9JOFdlcDloN2ZDWTBrVnREdElXS251YldBdmJOWnRzUlJxT1lsODAydmViUEVrWlJTWmM2d1hPZlB0cFB0TjVISTYzRVVGZnN5N1UvVExyOE5rSXphWTN2eDRBMjh4NzY1WFpNelJaVHBNazgxWUlNdXdKNSsvem9DdVpqMXdHbmFIT2J4YTVycEtaajRXaFQ2NzBtYVJ3MDR3MGUzY1pXNzRaMGFaZTJuMDVoalpheG02dXJlbno4RWY1TzZZdTFKMmFxWUFscXNDWHM1WkI1bzFKSjVsM3hrVFZyOHJKUTA5TkxzQnFSUkRUMklJak9QbWNKYTZ4UTFSNXlHUDlqQXNqMjN4WURUZXpkeXFHOFlXWjd2SkJJV0s1NksraURnY0hpbWlRT1RJYXNOU3VhMWZPQnhzS01NRUtkMTVqeFRsKzNDeXZHQ1IrVXlSd3VTSTJYdXdSSVBvTk5jbFBpaGZKaGFxMm1La05pandZTFk2ZmVxb2hrdHVrbUkzS0R2T3BON0l0Q3FISGhOdUtseE1mQkFFTzVMalcyUktoNmxFNUhkMWR0QU9vcGFjL1o0RmRzTnNqTWhYei91ZzhKR21iVkpUQStWT0JKWGRyWXlKY0luNStPRWVvSzhrV0VXRit3ZEc4WnRaSEtTcXVXRHREVnloRlBrUlZxZ3VLRmtMa0tDejQ2aGNVMVNVWTlvSjJTaytkbXEwa2dscWs0a3FLVDFDVjlKREVMUGpLMVdzV0drRVhGODdnOVA5OGU1ZmYwbUl1cG0vdzZ2YzNrQ2VxMDRYNWJnSlFsY01GUmpsRldtU2sra3NzWENBVmlrZmVBbE11enBVdkNTZFhpRytkYzZLcklpTHh4aGJFVnVLZjd2VzdLbURRSTk1YlplM0g5bU4zLzc3RjZmWjJZeC9GOXlDbGxsajhnWHBMV0xwZDUrdjkwaU9hRmE5c2Q3UHZ4MGxOYTFvMStia2laNjl3Q2lDMng5VUliNi9ib0JDdU5NQi9IWVIwUkM2K0ZEOU9lNXFyZ1FsNkpiWHRrYVluMHdrZE5oUk9McXlodjZjS3Z5TWoxRnZzMm8zT09Lb01ZVHViR0VOTGZZNUY2SDlkOHdYMWNuSU5zdnord1pGUXUzemhXVmx3SnZ3QkVwNjlEcXUvWm5rQmYzbklmYng0VEs3ek9WSkg1c0dKWCtJTXdrbjF2VkJuMzhHYnBUZzliSm5NY1RPYjVGNkNpNWdPbjlGY3k2UXpjdStGTDZtWUpKK2YyWlpKR2RhMVZxcnVaMEpSWEl0cDhYMGFUakljSmd6ZGFYbGhhN3E3a1Y0ZWJyTXN1bmZzUnlSYTlxWXVyeUJIQTBoYzFLVnNLZEUrb0kwbGpMbVNBeU16ZThsV21jNS9sUTE4c2x5VFZDL3ZBRFRjK1NOTTUrK2d6dFRCTHo0bTBhVlVLY2ZnT0VFeHVLVm9tSjdYUURadXppTURqRzZKUDl0Z1I3SlhaVGVvOVJHZXRXL1htOS9UZ1BKcFRnSEFDUE9Hdm15Mm1EbTlmbDA5V2VNbTlzUVVBWFAzU3UydUFwZUN3SlZUNWlXQ1hEZ21jdVRzRmdVOU5tNi9QdXNKelNiRFFJTWZsNklOWS9PQUV2WlJONTRCU1NYVUNsTTUxaW02V245VmhWYW1LSm16T2FGSkVyZ0pjczBldEZaNDBMSUYzRVBrakZUakdtQWhzZDE3NE5uT3dKVzhUZEoxRGphK0U2V2E2RlZTMjJIYWoxRERBNDc0RWVzb01QNW5ic3BBUEpMV0o4clljUDFEd0NzbGhubitnVEZtK3NTOXdZK1U2U29nQWE5dGl3cG94dWFGZXFtMk9LK3VvelI2U2ZpTENPUHozNkxpRGx6WHI2VVdkN0JwWTZtbHJOQU5rVE9lbWU1RWdubkFrUVJUR285VDZpWXhiVUtmR0pjSTlCK3ViMlBjeVVPZ3B3WGJPZjNiSEZXdHlnRDdGWWJSaGIrdmt6aTg3ZEIwSmVYbC92QnBCVXo5M1Z0cVppN0FMN0MxVm93VEYrdEdteXVydzdEQmNrdGMrVU1ZMEUxMEp3NFVSb2pmOE5kYU5wTjZFMXE0K096KzRZZVB0TUx5OEZQUlAiKTsKCiAgY2xhc3NUcmllID0gbmV3IFVuaWNvZGVUcmllKGRhdGEpOwoKICBMaW5lQnJlYWtlciA9IChmdW5jdGlvbigpIHsKICAgIHZhciBCcmVhaywgbWFwQ2xhc3MsIG1hcEZpcnN0OwoKICAgIGZ1bmN0aW9uIExpbmVCcmVha2VyKHN0cmluZykgewogICAgICB0aGlzLnN0cmluZyA9IHN0cmluZzsKICAgICAgdGhpcy5wb3MgPSAwOwogICAgICB0aGlzLmxhc3RQb3MgPSAwOwogICAgICB0aGlzLmN1ckNsYXNzID0gbnVsbDsKICAgICAgdGhpcy5uZXh0Q2xhc3MgPSBudWxsOwogICAgfQoKICAgIExpbmVCcmVha2VyLnByb3RvdHlwZS5uZXh0Q29kZVBvaW50ID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBjb2RlLCBuZXh0OwogICAgICBjb2RlID0gdGhpcy5zdHJpbmcuY2hhckNvZGVBdCh0aGlzLnBvcysrKTsKICAgICAgbmV4dCA9IHRoaXMuc3RyaW5nLmNoYXJDb2RlQXQodGhpcy5wb3MpOwogICAgICBpZiAoKDB4ZDgwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHhkYmZmKSAmJiAoMHhkYzAwIDw9IG5leHQgJiYgbmV4dCA8PSAweGRmZmYpKSB7CiAgICAgICAgdGhpcy5wb3MrKzsKICAgICAgICByZXR1cm4gKChjb2RlIC0gMHhkODAwKSAqIDB4NDAwKSArIChuZXh0IC0gMHhkYzAwKSArIDB4MTAwMDA7CiAgICAgIH0KICAgICAgcmV0dXJuIGNvZGU7CiAgICB9OwoKICAgIG1hcENsYXNzID0gZnVuY3Rpb24oYykgewogICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICBjYXNlIEFJOgogICAgICAgICAgcmV0dXJuIEFMOwogICAgICAgIGNhc2UgU0E6CiAgICAgICAgY2FzZSBTRzoKICAgICAgICBjYXNlIFhYOgogICAgICAgICAgcmV0dXJuIEFMOwogICAgICAgIGNhc2UgQ0o6CiAgICAgICAgICByZXR1cm4gTlM7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHJldHVybiBjOwogICAgICB9CiAgICB9OwoKICAgIG1hcEZpcnN0ID0gZnVuY3Rpb24oYykgewogICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICBjYXNlIExGOgogICAgICAgIGNhc2UgTkw6CiAgICAgICAgICByZXR1cm4gQks7CiAgICAgICAgY2FzZSBDQjoKICAgICAgICAgIHJldHVybiBCQTsKICAgICAgICBjYXNlIFNQOgogICAgICAgICAgcmV0dXJuIFdKOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICByZXR1cm4gYzsKICAgICAgfQogICAgfTsKCiAgICBMaW5lQnJlYWtlci5wcm90b3R5cGUubmV4dENoYXJDbGFzcyA9IGZ1bmN0aW9uKGZpcnN0KSB7CiAgICAgIGlmIChmaXJzdCA9PSBudWxsKSB7CiAgICAgICAgZmlyc3QgPSBmYWxzZTsKICAgICAgfQogICAgICByZXR1cm4gbWFwQ2xhc3MoY2xhc3NUcmllLmdldCh0aGlzLm5leHRDb2RlUG9pbnQoKSkpOwogICAgfTsKCiAgICBCcmVhayA9IChmdW5jdGlvbigpIHsKICAgICAgZnVuY3Rpb24gQnJlYWsocG9zaXRpb24sIHJlcXVpcmVkKSB7CiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uOwogICAgICAgIHRoaXMucmVxdWlyZWQgPSByZXF1aXJlZCAhPSBudWxsID8gcmVxdWlyZWQgOiBmYWxzZTsKICAgICAgfQoKICAgICAgcmV0dXJuIEJyZWFrOwoKICAgIH0pKCk7CgogICAgTGluZUJyZWFrZXIucHJvdG90eXBlLm5leHRCcmVhayA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgY3VyLCBsYXN0Q2xhc3MsIHNob3VsZEJyZWFrOwogICAgICBpZiAodGhpcy5jdXJDbGFzcyA9PSBudWxsKSB7CiAgICAgICAgdGhpcy5jdXJDbGFzcyA9IG1hcEZpcnN0KHRoaXMubmV4dENoYXJDbGFzcygpKTsKICAgICAgfQogICAgICB3aGlsZSAodGhpcy5wb3MgPCB0aGlzLnN0cmluZy5sZW5ndGgpIHsKICAgICAgICB0aGlzLmxhc3RQb3MgPSB0aGlzLnBvczsKICAgICAgICBsYXN0Q2xhc3MgPSB0aGlzLm5leHRDbGFzczsKICAgICAgICB0aGlzLm5leHRDbGFzcyA9IHRoaXMubmV4dENoYXJDbGFzcygpOwogICAgICAgIGlmICh0aGlzLmN1ckNsYXNzID09PSBCSyB8fCAodGhpcy5jdXJDbGFzcyA9PT0gQ1IgJiYgdGhpcy5uZXh0Q2xhc3MgIT09IExGKSkgewogICAgICAgICAgdGhpcy5jdXJDbGFzcyA9IG1hcEZpcnN0KG1hcENsYXNzKHRoaXMubmV4dENsYXNzKSk7CiAgICAgICAgICByZXR1cm4gbmV3IEJyZWFrKHRoaXMubGFzdFBvcywgdHJ1ZSk7CiAgICAgICAgfQogICAgICAgIGN1ciA9IChmdW5jdGlvbigpIHsKICAgICAgICAgIHN3aXRjaCAodGhpcy5uZXh0Q2xhc3MpIHsKICAgICAgICAgICAgY2FzZSBTUDoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJDbGFzczsKICAgICAgICAgICAgY2FzZSBCSzoKICAgICAgICAgICAgY2FzZSBMRjoKICAgICAgICAgICAgY2FzZSBOTDoKICAgICAgICAgICAgICByZXR1cm4gQks7CiAgICAgICAgICAgIGNhc2UgQ1I6CiAgICAgICAgICAgICAgcmV0dXJuIENSOwogICAgICAgICAgICBjYXNlIENCOgogICAgICAgICAgICAgIHJldHVybiBCQTsKICAgICAgICAgIH0KICAgICAgICB9KS5jYWxsKHRoaXMpOwogICAgICAgIGlmIChjdXIgIT0gbnVsbCkgewogICAgICAgICAgdGhpcy5jdXJDbGFzcyA9IGN1cjsKICAgICAgICAgIGlmICh0aGlzLm5leHRDbGFzcyA9PT0gQ0IpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBCcmVhayh0aGlzLmxhc3RQb3MpOwogICAgICAgICAgfQogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIHNob3VsZEJyZWFrID0gZmFsc2U7CiAgICAgICAgc3dpdGNoIChwYWlyVGFibGVbdGhpcy5jdXJDbGFzc11bdGhpcy5uZXh0Q2xhc3NdKSB7CiAgICAgICAgICBjYXNlIERJX0JSSzoKICAgICAgICAgICAgc2hvdWxkQnJlYWsgPSB0cnVlOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgSU5fQlJLOgogICAgICAgICAgICBzaG91bGRCcmVhayA9IGxhc3RDbGFzcyA9PT0gU1A7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBDSV9CUks6CiAgICAgICAgICAgIHNob3VsZEJyZWFrID0gbGFzdENsYXNzID09PSBTUDsKICAgICAgICAgICAgaWYgKCFzaG91bGRCcmVhaykgewogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBDUF9CUks6CiAgICAgICAgICAgIGlmIChsYXN0Q2xhc3MgIT09IFNQKSB7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdGhpcy5jdXJDbGFzcyA9IHRoaXMubmV4dENsYXNzOwogICAgICAgIGlmIChzaG91bGRCcmVhaykgewogICAgICAgICAgcmV0dXJuIG5ldyBCcmVhayh0aGlzLmxhc3RQb3MpOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAodGhpcy5wb3MgPj0gdGhpcy5zdHJpbmcubGVuZ3RoKSB7CiAgICAgICAgaWYgKHRoaXMubGFzdFBvcyA8IHRoaXMuc3RyaW5nLmxlbmd0aCkgewogICAgICAgICAgdGhpcy5sYXN0UG9zID0gdGhpcy5zdHJpbmcubGVuZ3RoOwogICAgICAgICAgcmV0dXJuIG5ldyBCcmVhayh0aGlzLnN0cmluZy5sZW5ndGgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICAgIH0KICAgIH07CgogICAgcmV0dXJuIExpbmVCcmVha2VyOwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IExpbmVCcmVha2VyOwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogNzkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKdmFyIFRJTkZfT0sgPSAwOwp2YXIgVElORl9EQVRBX0VSUk9SID0gLTM7CgpmdW5jdGlvbiBUcmVlKCkgewogIHRoaXMudGFibGUgPSBuZXcgVWludDE2QXJyYXkoMTYpOyAgIC8qIHRhYmxlIG9mIGNvZGUgbGVuZ3RoIGNvdW50cyAqLwogIHRoaXMudHJhbnMgPSBuZXcgVWludDE2QXJyYXkoMjg4KTsgIC8qIGNvZGUgLT4gc3ltYm9sIHRyYW5zbGF0aW9uIHRhYmxlICovCn0KCmZ1bmN0aW9uIERhdGEoc291cmNlLCBkZXN0KSB7CiAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7CiAgdGhpcy5zb3VyY2VJbmRleCA9IDA7CiAgdGhpcy50YWcgPSAwOwogIHRoaXMuYml0Y291bnQgPSAwOwogIAogIHRoaXMuZGVzdCA9IGRlc3Q7CiAgdGhpcy5kZXN0TGVuID0gMDsKICAKICB0aGlzLmx0cmVlID0gbmV3IFRyZWUoKTsgIC8qIGR5bmFtaWMgbGVuZ3RoL3N5bWJvbCB0cmVlICovCiAgdGhpcy5kdHJlZSA9IG5ldyBUcmVlKCk7ICAvKiBkeW5hbWljIGRpc3RhbmNlIHRyZWUgKi8KfQoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoKICogLS0gdW5pbml0aWFsaXplZCBnbG9iYWwgZGF0YSAoc3RhdGljIHN0cnVjdHVyZXMpIC0tICoKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgp2YXIgc2x0cmVlID0gbmV3IFRyZWUoKTsKdmFyIHNkdHJlZSA9IG5ldyBUcmVlKCk7CgovKiBleHRyYSBiaXRzIGFuZCBiYXNlIHRhYmxlcyBmb3IgbGVuZ3RoIGNvZGVzICovCnZhciBsZW5ndGhfYml0cyA9IG5ldyBVaW50OEFycmF5KDMwKTsKdmFyIGxlbmd0aF9iYXNlID0gbmV3IFVpbnQxNkFycmF5KDMwKTsKCi8qIGV4dHJhIGJpdHMgYW5kIGJhc2UgdGFibGVzIGZvciBkaXN0YW5jZSBjb2RlcyAqLwp2YXIgZGlzdF9iaXRzID0gbmV3IFVpbnQ4QXJyYXkoMzApOwp2YXIgZGlzdF9iYXNlID0gbmV3IFVpbnQxNkFycmF5KDMwKTsKCi8qIHNwZWNpYWwgb3JkZXJpbmcgb2YgY29kZSBsZW5ndGggY29kZXMgKi8KdmFyIGNsY2lkeCA9IG5ldyBVaW50OEFycmF5KFsKICAxNiwgMTcsIDE4LCAwLCA4LCA3LCA5LCA2LAogIDEwLCA1LCAxMSwgNCwgMTIsIDMsIDEzLCAyLAogIDE0LCAxLCAxNQpdKTsKCi8qIHVzZWQgYnkgdGluZl9kZWNvZGVfdHJlZXMsIGF2b2lkcyBhbGxvY2F0aW9ucyBldmVyeSBjYWxsICovCnZhciBjb2RlX3RyZWUgPSBuZXcgVHJlZSgpOwp2YXIgbGVuZ3RocyA9IG5ldyBVaW50OEFycmF5KDI4OCArIDMyKTsKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoKICogLS0gdXRpbGl0eSBmdW5jdGlvbnMgLS0gKgogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKLyogYnVpbGQgZXh0cmEgYml0cyBhbmQgYmFzZSB0YWJsZXMgKi8KZnVuY3Rpb24gdGluZl9idWlsZF9iaXRzX2Jhc2UoYml0cywgYmFzZSwgZGVsdGEsIGZpcnN0KSB7CiAgdmFyIGksIHN1bTsKCiAgLyogYnVpbGQgYml0cyB0YWJsZSAqLwogIGZvciAoaSA9IDA7IGkgPCBkZWx0YTsgKytpKSBiaXRzW2ldID0gMDsKICBmb3IgKGkgPSAwOyBpIDwgMzAgLSBkZWx0YTsgKytpKSBiaXRzW2kgKyBkZWx0YV0gPSBpIC8gZGVsdGEgfCAwOwoKICAvKiBidWlsZCBiYXNlIHRhYmxlICovCiAgZm9yIChzdW0gPSBmaXJzdCwgaSA9IDA7IGkgPCAzMDsgKytpKSB7CiAgICBiYXNlW2ldID0gc3VtOwogICAgc3VtICs9IDEgPDwgYml0c1tpXTsKICB9Cn0KCi8qIGJ1aWxkIHRoZSBmaXhlZCBodWZmbWFuIHRyZWVzICovCmZ1bmN0aW9uIHRpbmZfYnVpbGRfZml4ZWRfdHJlZXMobHQsIGR0KSB7CiAgdmFyIGk7CgogIC8qIGJ1aWxkIGZpeGVkIGxlbmd0aCB0cmVlICovCiAgZm9yIChpID0gMDsgaSA8IDc7ICsraSkgbHQudGFibGVbaV0gPSAwOwoKICBsdC50YWJsZVs3XSA9IDI0OwogIGx0LnRhYmxlWzhdID0gMTUyOwogIGx0LnRhYmxlWzldID0gMTEyOwoKICBmb3IgKGkgPSAwOyBpIDwgMjQ7ICsraSkgbHQudHJhbnNbaV0gPSAyNTYgKyBpOwogIGZvciAoaSA9IDA7IGkgPCAxNDQ7ICsraSkgbHQudHJhbnNbMjQgKyBpXSA9IGk7CiAgZm9yIChpID0gMDsgaSA8IDg7ICsraSkgbHQudHJhbnNbMjQgKyAxNDQgKyBpXSA9IDI4MCArIGk7CiAgZm9yIChpID0gMDsgaSA8IDExMjsgKytpKSBsdC50cmFuc1syNCArIDE0NCArIDggKyBpXSA9IDE0NCArIGk7CgogIC8qIGJ1aWxkIGZpeGVkIGRpc3RhbmNlIHRyZWUgKi8KICBmb3IgKGkgPSAwOyBpIDwgNTsgKytpKSBkdC50YWJsZVtpXSA9IDA7CgogIGR0LnRhYmxlWzVdID0gMzI7CgogIGZvciAoaSA9IDA7IGkgPCAzMjsgKytpKSBkdC50cmFuc1tpXSA9IGk7Cn0KCi8qIGdpdmVuIGFuIGFycmF5IG9mIGNvZGUgbGVuZ3RocywgYnVpbGQgYSB0cmVlICovCnZhciBvZmZzID0gbmV3IFVpbnQxNkFycmF5KDE2KTsKCmZ1bmN0aW9uIHRpbmZfYnVpbGRfdHJlZSh0LCBsZW5ndGhzLCBvZmYsIG51bSkgewogIHZhciBpLCBzdW07CgogIC8qIGNsZWFyIGNvZGUgbGVuZ3RoIGNvdW50IHRhYmxlICovCiAgZm9yIChpID0gMDsgaSA8IDE2OyArK2kpIHQudGFibGVbaV0gPSAwOwoKICAvKiBzY2FuIHN5bWJvbCBsZW5ndGhzLCBhbmQgc3VtIGNvZGUgbGVuZ3RoIGNvdW50cyAqLwogIGZvciAoaSA9IDA7IGkgPCBudW07ICsraSkgdC50YWJsZVtsZW5ndGhzW29mZiArIGldXSsrOwoKICB0LnRhYmxlWzBdID0gMDsKCiAgLyogY29tcHV0ZSBvZmZzZXQgdGFibGUgZm9yIGRpc3RyaWJ1dGlvbiBzb3J0ICovCiAgZm9yIChzdW0gPSAwLCBpID0gMDsgaSA8IDE2OyArK2kpIHsKICAgIG9mZnNbaV0gPSBzdW07CiAgICBzdW0gKz0gdC50YWJsZVtpXTsKICB9CgogIC8qIGNyZWF0ZSBjb2RlLT5zeW1ib2wgdHJhbnNsYXRpb24gdGFibGUgKHN5bWJvbHMgc29ydGVkIGJ5IGNvZGUpICovCiAgZm9yIChpID0gMDsgaSA8IG51bTsgKytpKSB7CiAgICBpZiAobGVuZ3Roc1tvZmYgKyBpXSkgdC50cmFuc1tvZmZzW2xlbmd0aHNbb2ZmICsgaV1dKytdID0gaTsKICB9Cn0KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKgogKiAtLSBkZWNvZGUgZnVuY3Rpb25zIC0tICoKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKLyogZ2V0IG9uZSBiaXQgZnJvbSBzb3VyY2Ugc3RyZWFtICovCmZ1bmN0aW9uIHRpbmZfZ2V0Yml0KGQpIHsKICAvKiBjaGVjayBpZiB0YWcgaXMgZW1wdHkgKi8KICBpZiAoIWQuYml0Y291bnQtLSkgewogICAgLyogbG9hZCBuZXh0IHRhZyAqLwogICAgZC50YWcgPSBkLnNvdXJjZVtkLnNvdXJjZUluZGV4KytdOwogICAgZC5iaXRjb3VudCA9IDc7CiAgfQoKICAvKiBzaGlmdCBiaXQgb3V0IG9mIHRhZyAqLwogIHZhciBiaXQgPSBkLnRhZyAmIDE7CiAgZC50YWcgPj4+PSAxOwoKICByZXR1cm4gYml0Owp9CgovKiByZWFkIGEgbnVtIGJpdCB2YWx1ZSBmcm9tIGEgc3RyZWFtIGFuZCBhZGQgYmFzZSAqLwpmdW5jdGlvbiB0aW5mX3JlYWRfYml0cyhkLCBudW0sIGJhc2UpIHsKICBpZiAoIW51bSkKICAgIHJldHVybiBiYXNlOwoKICB3aGlsZSAoZC5iaXRjb3VudCA8IDI0KSB7CiAgICBkLnRhZyB8PSBkLnNvdXJjZVtkLnNvdXJjZUluZGV4KytdIDw8IGQuYml0Y291bnQ7CiAgICBkLmJpdGNvdW50ICs9IDg7CiAgfQoKICB2YXIgdmFsID0gZC50YWcgJiAoMHhmZmZmID4+PiAoMTYgLSBudW0pKTsKICBkLnRhZyA+Pj49IG51bTsKICBkLmJpdGNvdW50IC09IG51bTsKICByZXR1cm4gdmFsICsgYmFzZTsKfQoKLyogZ2l2ZW4gYSBkYXRhIHN0cmVhbSBhbmQgYSB0cmVlLCBkZWNvZGUgYSBzeW1ib2wgKi8KZnVuY3Rpb24gdGluZl9kZWNvZGVfc3ltYm9sKGQsIHQpIHsKICB3aGlsZSAoZC5iaXRjb3VudCA8IDI0KSB7CiAgICBkLnRhZyB8PSBkLnNvdXJjZVtkLnNvdXJjZUluZGV4KytdIDw8IGQuYml0Y291bnQ7CiAgICBkLmJpdGNvdW50ICs9IDg7CiAgfQogIAogIHZhciBzdW0gPSAwLCBjdXIgPSAwLCBsZW4gPSAwOwogIHZhciB0YWcgPSBkLnRhZzsKCiAgLyogZ2V0IG1vcmUgYml0cyB3aGlsZSBjb2RlIHZhbHVlIGlzIGFib3ZlIHN1bSAqLwogIGRvIHsKICAgIGN1ciA9IDIgKiBjdXIgKyAodGFnICYgMSk7CiAgICB0YWcgPj4+PSAxOwogICAgKytsZW47CgogICAgc3VtICs9IHQudGFibGVbbGVuXTsKICAgIGN1ciAtPSB0LnRhYmxlW2xlbl07CiAgfSB3aGlsZSAoY3VyID49IDApOwogIAogIGQudGFnID0gdGFnOwogIGQuYml0Y291bnQgLT0gbGVuOwoKICByZXR1cm4gdC50cmFuc1tzdW0gKyBjdXJdOwp9CgovKiBnaXZlbiBhIGRhdGEgc3RyZWFtLCBkZWNvZGUgZHluYW1pYyB0cmVlcyBmcm9tIGl0ICovCmZ1bmN0aW9uIHRpbmZfZGVjb2RlX3RyZWVzKGQsIGx0LCBkdCkgewogIHZhciBobGl0LCBoZGlzdCwgaGNsZW47CiAgdmFyIGksIG51bSwgbGVuZ3RoOwoKICAvKiBnZXQgNSBiaXRzIEhMSVQgKDI1Ny0yODYpICovCiAgaGxpdCA9IHRpbmZfcmVhZF9iaXRzKGQsIDUsIDI1Nyk7CgogIC8qIGdldCA1IGJpdHMgSERJU1QgKDEtMzIpICovCiAgaGRpc3QgPSB0aW5mX3JlYWRfYml0cyhkLCA1LCAxKTsKCiAgLyogZ2V0IDQgYml0cyBIQ0xFTiAoNC0xOSkgKi8KICBoY2xlbiA9IHRpbmZfcmVhZF9iaXRzKGQsIDQsIDQpOwoKICBmb3IgKGkgPSAwOyBpIDwgMTk7ICsraSkgbGVuZ3Roc1tpXSA9IDA7CgogIC8qIHJlYWQgY29kZSBsZW5ndGhzIGZvciBjb2RlIGxlbmd0aCBhbHBoYWJldCAqLwogIGZvciAoaSA9IDA7IGkgPCBoY2xlbjsgKytpKSB7CiAgICAvKiBnZXQgMyBiaXRzIGNvZGUgbGVuZ3RoICgwLTcpICovCiAgICB2YXIgY2xlbiA9IHRpbmZfcmVhZF9iaXRzKGQsIDMsIDApOwogICAgbGVuZ3Roc1tjbGNpZHhbaV1dID0gY2xlbjsKICB9CgogIC8qIGJ1aWxkIGNvZGUgbGVuZ3RoIHRyZWUgKi8KICB0aW5mX2J1aWxkX3RyZWUoY29kZV90cmVlLCBsZW5ndGhzLCAwLCAxOSk7CgogIC8qIGRlY29kZSBjb2RlIGxlbmd0aHMgZm9yIHRoZSBkeW5hbWljIHRyZWVzICovCiAgZm9yIChudW0gPSAwOyBudW0gPCBobGl0ICsgaGRpc3Q7KSB7CiAgICB2YXIgc3ltID0gdGluZl9kZWNvZGVfc3ltYm9sKGQsIGNvZGVfdHJlZSk7CgogICAgc3dpdGNoIChzeW0pIHsKICAgICAgY2FzZSAxNjoKICAgICAgICAvKiBjb3B5IHByZXZpb3VzIGNvZGUgbGVuZ3RoIDMtNiB0aW1lcyAocmVhZCAyIGJpdHMpICovCiAgICAgICAgdmFyIHByZXYgPSBsZW5ndGhzW251bSAtIDFdOwogICAgICAgIGZvciAobGVuZ3RoID0gdGluZl9yZWFkX2JpdHMoZCwgMiwgMyk7IGxlbmd0aDsgLS1sZW5ndGgpIHsKICAgICAgICAgIGxlbmd0aHNbbnVtKytdID0gcHJldjsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMTc6CiAgICAgICAgLyogcmVwZWF0IGNvZGUgbGVuZ3RoIDAgZm9yIDMtMTAgdGltZXMgKHJlYWQgMyBiaXRzKSAqLwogICAgICAgIGZvciAobGVuZ3RoID0gdGluZl9yZWFkX2JpdHMoZCwgMywgMyk7IGxlbmd0aDsgLS1sZW5ndGgpIHsKICAgICAgICAgIGxlbmd0aHNbbnVtKytdID0gMDsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMTg6CiAgICAgICAgLyogcmVwZWF0IGNvZGUgbGVuZ3RoIDAgZm9yIDExLTEzOCB0aW1lcyAocmVhZCA3IGJpdHMpICovCiAgICAgICAgZm9yIChsZW5ndGggPSB0aW5mX3JlYWRfYml0cyhkLCA3LCAxMSk7IGxlbmd0aDsgLS1sZW5ndGgpIHsKICAgICAgICAgIGxlbmd0aHNbbnVtKytdID0gMDsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgLyogdmFsdWVzIDAtMTUgcmVwcmVzZW50IHRoZSBhY3R1YWwgY29kZSBsZW5ndGhzICovCiAgICAgICAgbGVuZ3Roc1tudW0rK10gPSBzeW07CiAgICAgICAgYnJlYWs7CiAgICB9CiAgfQoKICAvKiBidWlsZCBkeW5hbWljIHRyZWVzICovCiAgdGluZl9idWlsZF90cmVlKGx0LCBsZW5ndGhzLCAwLCBobGl0KTsKICB0aW5mX2J1aWxkX3RyZWUoZHQsIGxlbmd0aHMsIGhsaXQsIGhkaXN0KTsKfQoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKgogKiAtLSBibG9jayBpbmZsYXRlIGZ1bmN0aW9ucyAtLSAqCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgovKiBnaXZlbiBhIHN0cmVhbSBhbmQgdHdvIHRyZWVzLCBpbmZsYXRlIGEgYmxvY2sgb2YgZGF0YSAqLwpmdW5jdGlvbiB0aW5mX2luZmxhdGVfYmxvY2tfZGF0YShkLCBsdCwgZHQpIHsKICB3aGlsZSAoMSkgewogICAgdmFyIHN5bSA9IHRpbmZfZGVjb2RlX3N5bWJvbChkLCBsdCk7CgogICAgLyogY2hlY2sgZm9yIGVuZCBvZiBibG9jayAqLwogICAgaWYgKHN5bSA9PT0gMjU2KSB7CiAgICAgIHJldHVybiBUSU5GX09LOwogICAgfQoKICAgIGlmIChzeW0gPCAyNTYpIHsKICAgICAgZC5kZXN0W2QuZGVzdExlbisrXSA9IHN5bTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBsZW5ndGgsIGRpc3QsIG9mZnM7CiAgICAgIHZhciBpOwoKICAgICAgc3ltIC09IDI1NzsKCiAgICAgIC8qIHBvc3NpYmx5IGdldCBtb3JlIGJpdHMgZnJvbSBsZW5ndGggY29kZSAqLwogICAgICBsZW5ndGggPSB0aW5mX3JlYWRfYml0cyhkLCBsZW5ndGhfYml0c1tzeW1dLCBsZW5ndGhfYmFzZVtzeW1dKTsKCiAgICAgIGRpc3QgPSB0aW5mX2RlY29kZV9zeW1ib2woZCwgZHQpOwoKICAgICAgLyogcG9zc2libHkgZ2V0IG1vcmUgYml0cyBmcm9tIGRpc3RhbmNlIGNvZGUgKi8KICAgICAgb2ZmcyA9IGQuZGVzdExlbiAtIHRpbmZfcmVhZF9iaXRzKGQsIGRpc3RfYml0c1tkaXN0XSwgZGlzdF9iYXNlW2Rpc3RdKTsKCiAgICAgIC8qIGNvcHkgbWF0Y2ggKi8KICAgICAgZm9yIChpID0gb2ZmczsgaSA8IG9mZnMgKyBsZW5ndGg7ICsraSkgewogICAgICAgIGQuZGVzdFtkLmRlc3RMZW4rK10gPSBkLmRlc3RbaV07CiAgICAgIH0KICAgIH0KICB9Cn0KCi8qIGluZmxhdGUgYW4gdW5jb21wcmVzc2VkIGJsb2NrIG9mIGRhdGEgKi8KZnVuY3Rpb24gdGluZl9pbmZsYXRlX3VuY29tcHJlc3NlZF9ibG9jayhkKSB7CiAgdmFyIGxlbmd0aCwgaW52bGVuZ3RoOwogIHZhciBpOwogIAogIC8qIHVucmVhZCBmcm9tIGJpdGJ1ZmZlciAqLwogIHdoaWxlIChkLmJpdGNvdW50ID4gOCkgewogICAgZC5zb3VyY2VJbmRleC0tOwogICAgZC5iaXRjb3VudCAtPSA4OwogIH0KCiAgLyogZ2V0IGxlbmd0aCAqLwogIGxlbmd0aCA9IGQuc291cmNlW2Quc291cmNlSW5kZXggKyAxXTsKICBsZW5ndGggPSAyNTYgKiBsZW5ndGggKyBkLnNvdXJjZVtkLnNvdXJjZUluZGV4XTsKCiAgLyogZ2V0IG9uZSdzIGNvbXBsZW1lbnQgb2YgbGVuZ3RoICovCiAgaW52bGVuZ3RoID0gZC5zb3VyY2VbZC5zb3VyY2VJbmRleCArIDNdOwogIGludmxlbmd0aCA9IDI1NiAqIGludmxlbmd0aCArIGQuc291cmNlW2Quc291cmNlSW5kZXggKyAyXTsKCiAgLyogY2hlY2sgbGVuZ3RoICovCiAgaWYgKGxlbmd0aCAhPT0gKH5pbnZsZW5ndGggJiAweDAwMDBmZmZmKSkKICAgIHJldHVybiBUSU5GX0RBVEFfRVJST1I7CgogIGQuc291cmNlSW5kZXggKz0gNDsKCiAgLyogY29weSBibG9jayAqLwogIGZvciAoaSA9IGxlbmd0aDsgaTsgLS1pKQogICAgZC5kZXN0W2QuZGVzdExlbisrXSA9IGQuc291cmNlW2Quc291cmNlSW5kZXgrK107CgogIC8qIG1ha2Ugc3VyZSB3ZSBzdGFydCBuZXh0IGJsb2NrIG9uIGEgYnl0ZSBib3VuZGFyeSAqLwogIGQuYml0Y291bnQgPSAwOwoKICByZXR1cm4gVElORl9PSzsKfQoKLyogaW5mbGF0ZSBzdHJlYW0gZnJvbSBzb3VyY2UgdG8gZGVzdCAqLwpmdW5jdGlvbiB0aW5mX3VuY29tcHJlc3Moc291cmNlLCBkZXN0KSB7CiAgdmFyIGQgPSBuZXcgRGF0YShzb3VyY2UsIGRlc3QpOwogIHZhciBiZmluYWwsIGJ0eXBlLCByZXM7CgogIGRvIHsKICAgIC8qIHJlYWQgZmluYWwgYmxvY2sgZmxhZyAqLwogICAgYmZpbmFsID0gdGluZl9nZXRiaXQoZCk7CgogICAgLyogcmVhZCBibG9jayB0eXBlICgyIGJpdHMpICovCiAgICBidHlwZSA9IHRpbmZfcmVhZF9iaXRzKGQsIDIsIDApOwoKICAgIC8qIGRlY29tcHJlc3MgYmxvY2sgKi8KICAgIHN3aXRjaCAoYnR5cGUpIHsKICAgICAgY2FzZSAwOgogICAgICAgIC8qIGRlY29tcHJlc3MgdW5jb21wcmVzc2VkIGJsb2NrICovCiAgICAgICAgcmVzID0gdGluZl9pbmZsYXRlX3VuY29tcHJlc3NlZF9ibG9jayhkKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAxOgogICAgICAgIC8qIGRlY29tcHJlc3MgYmxvY2sgd2l0aCBmaXhlZCBodWZmbWFuIHRyZWVzICovCiAgICAgICAgcmVzID0gdGluZl9pbmZsYXRlX2Jsb2NrX2RhdGEoZCwgc2x0cmVlLCBzZHRyZWUpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDI6CiAgICAgICAgLyogZGVjb21wcmVzcyBibG9jayB3aXRoIGR5bmFtaWMgaHVmZm1hbiB0cmVlcyAqLwogICAgICAgIHRpbmZfZGVjb2RlX3RyZWVzKGQsIGQubHRyZWUsIGQuZHRyZWUpOwogICAgICAgIHJlcyA9IHRpbmZfaW5mbGF0ZV9ibG9ja19kYXRhKGQsIGQubHRyZWUsIGQuZHRyZWUpOwogICAgICAgIGJyZWFrOwogICAgICBkZWZhdWx0OgogICAgICAgIHJlcyA9IFRJTkZfREFUQV9FUlJPUjsKICAgIH0KCiAgICBpZiAocmVzICE9PSBUSU5GX09LKQogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGEgZXJyb3InKTsKCiAgfSB3aGlsZSAoIWJmaW5hbCk7CgogIGlmIChkLmRlc3RMZW4gPCBkLmRlc3QubGVuZ3RoKSB7CiAgICBpZiAodHlwZW9mIGQuZGVzdC5zbGljZSA9PT0gJ2Z1bmN0aW9uJykKICAgICAgcmV0dXJuIGQuZGVzdC5zbGljZSgwLCBkLmRlc3RMZW4pOwogICAgZWxzZQogICAgICByZXR1cm4gZC5kZXN0LnN1YmFycmF5KDAsIGQuZGVzdExlbik7CiAgfQogIAogIHJldHVybiBkLmRlc3Q7Cn0KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tICoKICogLS0gaW5pdGlhbGl6YXRpb24gLS0gKgogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKLyogYnVpbGQgZml4ZWQgaHVmZm1hbiB0cmVlcyAqLwp0aW5mX2J1aWxkX2ZpeGVkX3RyZWVzKHNsdHJlZSwgc2R0cmVlKTsKCi8qIGJ1aWxkIGV4dHJhIGJpdHMgYW5kIGJhc2UgdGFibGVzICovCnRpbmZfYnVpbGRfYml0c19iYXNlKGxlbmd0aF9iaXRzLCBsZW5ndGhfYmFzZSwgNCwgMyk7CnRpbmZfYnVpbGRfYml0c19iYXNlKGRpc3RfYml0cywgZGlzdF9iYXNlLCAyLCAxKTsKCi8qIGZpeCBhIHNwZWNpYWwgY2FzZSAqLwpsZW5ndGhfYml0c1syOF0gPSAwOwpsZW5ndGhfYmFzZVsyOF0gPSAyNTg7Cgptb2R1bGUuZXhwb3J0cyA9IHRpbmZfdW5jb21wcmVzczsKCgovKioqLyB9KSwKLyogODAgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKCnZhciBpc1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNTdHJpbmc7CnZhciBpc0FycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5pc0FycmF5Owp2YXIgaXNVbmRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzVW5kZWZpbmVkOwp2YXIgaXNOdWxsID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5pc051bGw7CgovKioKICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBTdHlsZUNvbnRleHRTdGFjayB1c2VkIGZvciBzdHlsZSBpbmhlcml0YW5jZSBhbmQgc3R5bGUgb3ZlcnJpZGVzCiAqCiAqIEBjb25zdHJ1Y3RvcgogKiBAdGhpcyB7U3R5bGVDb250ZXh0U3RhY2t9CiAqIEBwYXJhbSB7T2JqZWN0fSBuYW1lZCBzdHlsZXMgZGljdGlvbmFyeQogKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uYWwgZGVmYXVsdCBzdHlsZSBkZWZpbml0aW9uCiAqLwpmdW5jdGlvbiBTdHlsZUNvbnRleHRTdGFjayhzdHlsZURpY3Rpb25hcnksIGRlZmF1bHRTdHlsZSkgewoJdGhpcy5kZWZhdWx0U3R5bGUgPSBkZWZhdWx0U3R5bGUgfHwge307Cgl0aGlzLnN0eWxlRGljdGlvbmFyeSA9IHN0eWxlRGljdGlvbmFyeTsKCXRoaXMuc3R5bGVPdmVycmlkZXMgPSBbXTsKfQoKLyoqCiAqIENyZWF0ZXMgY2xvbmVkIHZlcnNpb24gb2YgY3VycmVudCBzdGFjawogKiBAcmV0dXJuIHtTdHlsZUNvbnRleHRTdGFja30gY3VycmVudCBzdGFjayBzbmFwc2hvdAogKi8KU3R5bGVDb250ZXh0U3RhY2sucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkgewoJdmFyIHN0YWNrID0gbmV3IFN0eWxlQ29udGV4dFN0YWNrKHRoaXMuc3R5bGVEaWN0aW9uYXJ5LCB0aGlzLmRlZmF1bHRTdHlsZSk7CgoJdGhpcy5zdHlsZU92ZXJyaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CgkJc3RhY2suc3R5bGVPdmVycmlkZXMucHVzaChpdGVtKTsKCX0pOwoKCXJldHVybiBzdGFjazsKfTsKCi8qKgogKiBQdXNoZXMgc3R5bGUtbmFtZSBvciBzdHlsZS1vdmVycmlkZXMtb2JqZWN0IG9udG8gdGhlIHN0YWNrIGZvciBmdXR1cmUgZXZhbHVhdGlvbgogKgogKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IHN0eWxlTmFtZU9yT3ZlcnJpZGUgc3R5bGUtbmFtZSAocmVmZXJyaW5nIHRvIHN0eWxlRGljdGlvbmFyeSkgb3IKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgbmV3IGRpY3Rpb25hcnkgZGVmaW5pbmcgb3ZlcnJpZGluZyBwcm9wZXJ0aWVzCiAqLwpTdHlsZUNvbnRleHRTdGFjay5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChzdHlsZU5hbWVPck92ZXJyaWRlKSB7Cgl0aGlzLnN0eWxlT3ZlcnJpZGVzLnB1c2goc3R5bGVOYW1lT3JPdmVycmlkZSk7Cn07CgovKioKICogUmVtb3ZlcyBsYXN0IHN0eWxlLW5hbWUgb3Igc3R5bGUtb3ZlcnJpZGVzLW9iamVjdCBmcm9tIHRoZSBzdGFjawogKgogKiBAcGFyYW0ge051bWJlcn0gaG93TWFueSAtIG9wdGlvbmFsIG51bWJlciBvZiBlbGVtZW50cyB0byBiZSBwb3BwZWQgKGlmIG5vdCBzcGVjaWZpZWQsCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lIGVsZW1lbnQgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIHN0YWNrKQogKi8KU3R5bGVDb250ZXh0U3RhY2sucHJvdG90eXBlLnBvcCA9IGZ1bmN0aW9uIChob3dNYW55KSB7Cglob3dNYW55ID0gaG93TWFueSB8fCAxOwoKCXdoaWxlIChob3dNYW55LS0gPiAwKSB7CgkJdGhpcy5zdHlsZU92ZXJyaWRlcy5wb3AoKTsKCX0KfTsKCi8qKgogKiBDcmVhdGVzIGEgc2V0IG9mIG5hbWVkIHN0eWxlcyBvci9hbmQgYSBzdHlsZS1vdmVycmlkZXMtb2JqZWN0IGJhc2VkIG9uIHRoZSBpdGVtLAogKiBwdXNoZXMgdGhvc2UgZWxlbWVudHMgb250byB0aGUgc3RhY2sgZm9yIGZ1dHVyZSBldmFsdWF0aW9uIGFuZCByZXR1cm5zIHRoZSBudW1iZXIKICogb2YgZWxlbWVudHMgcHVzaGVkLCBzbyB0aGV5IGNhbiBiZSBlYXNpbHkgcG9wZWQgdGhlbi4KICoKICogQHBhcmFtIHtPYmplY3R9IGl0ZW0gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25hbCBzdHlsZSBwcm9wZXJ0eSBhbmQvb3Igc3R5bGUgb3ZlcnJpZGVzCiAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBwdXNoZWQgb250byB0aGUgc3RhY2sKICovClN0eWxlQ29udGV4dFN0YWNrLnByb3RvdHlwZS5hdXRvcHVzaCA9IGZ1bmN0aW9uIChpdGVtKSB7CglpZiAoaXNTdHJpbmcoaXRlbSkpIHsKCQlyZXR1cm4gMDsKCX0KCgl2YXIgc3R5bGVOYW1lcyA9IFtdOwoKCWlmIChpdGVtLnN0eWxlKSB7CgkJaWYgKGlzQXJyYXkoaXRlbS5zdHlsZSkpIHsKCQkJc3R5bGVOYW1lcyA9IGl0ZW0uc3R5bGU7CgkJfSBlbHNlIHsKCQkJc3R5bGVOYW1lcyA9IFtpdGVtLnN0eWxlXTsKCQl9Cgl9CgoJZm9yICh2YXIgaSA9IDAsIGwgPSBzdHlsZU5hbWVzLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCXRoaXMucHVzaChzdHlsZU5hbWVzW2ldKTsKCX0KCgl2YXIgc3R5bGVQcm9wZXJ0aWVzID0gWwoJCSdmb250JywKCQknZm9udFNpemUnLAoJCSdmb250RmVhdHVyZXMnLAoJCSdib2xkJywKCQknaXRhbGljcycsCgkJJ2FsaWdubWVudCcsCgkJJ2NvbG9yJywKCQknY29sdW1uR2FwJywKCQknZmlsbENvbG9yJywKCQknZGVjb3JhdGlvbicsCgkJJ2RlY29yYXRpb25TdHlsZScsCgkJJ2RlY29yYXRpb25Db2xvcicsCgkJJ2JhY2tncm91bmQnLAoJCSdsaW5lSGVpZ2h0JywKCQknY2hhcmFjdGVyU3BhY2luZycsCgkJJ25vV3JhcCcsCgkJJ21hcmtlckNvbG9yJywKCQknbGVhZGluZ0luZGVudCcKCQkJLy8ndGFibGVDZWxsUGFkZGluZycKCQkJLy8gJ2NlbGxCb3JkZXInLAoJCQkvLyAnaGVhZGVyQ2VsbEJvcmRlcicsCgkJCS8vICdvZGRSb3dDZWxsQm9yZGVyJywKCQkJLy8gJ2V2ZW5Sb3dDZWxsQm9yZGVyJywKCQkJLy8gJ3RhYmxlQm9yZGVyJwoJXTsKCXZhciBzdHlsZU92ZXJyaWRlT2JqZWN0ID0ge307Cgl2YXIgcHVzaFN0eWxlT3ZlcnJpZGVPYmplY3QgPSBmYWxzZTsKCglzdHlsZVByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7CgkJaWYgKCFpc1VuZGVmaW5lZChpdGVtW2tleV0pICYmICFpc051bGwoaXRlbVtrZXldKSkgewoJCQlzdHlsZU92ZXJyaWRlT2JqZWN0W2tleV0gPSBpdGVtW2tleV07CgkJCXB1c2hTdHlsZU92ZXJyaWRlT2JqZWN0ID0gdHJ1ZTsKCQl9Cgl9KTsKCglpZiAocHVzaFN0eWxlT3ZlcnJpZGVPYmplY3QpIHsKCQl0aGlzLnB1c2goc3R5bGVPdmVycmlkZU9iamVjdCk7Cgl9CgoJcmV0dXJuIHN0eWxlTmFtZXMubGVuZ3RoICsgKHB1c2hTdHlsZU92ZXJyaWRlT2JqZWN0ID8gMSA6IDApOwp9OwoKLyoqCiAqIEF1dG9tYXRpY2FsbHkgcHVzaGVzIGVsZW1lbnRzIG9udG8gdGhlIHN0YWNrLCB1c2luZyBhdXRvcHVzaCBiYXNlZCBvbiBpdGVtLAogKiBleGVjdXRlcyBjYWxsYmFjayBhbmQgdGhlbiBwb3BzIGVsZW1lbnRzIGJhY2suIFJldHVybnMgdmFsdWUgcmV0dXJuZWQgYnkgY2FsbGJhY2sKICoKICogQHBhcmFtICB7T2JqZWN0fSAgIGl0ZW0gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25hbCBzdHlsZSBwcm9wZXJ0eSBhbmQvb3Igc3R5bGUgb3ZlcnJpZGVzCiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgYmV0d2VlbiBhdXRvcHVzaCBhbmQgcG9wCiAqIEByZXR1cm4ge09iamVjdH0gdmFsdWUgcmV0dXJuZWQgYnkgY2FsbGJhY2sKICovClN0eWxlQ29udGV4dFN0YWNrLnByb3RvdHlwZS5hdXRvID0gZnVuY3Rpb24gKGl0ZW0sIGNhbGxiYWNrKSB7Cgl2YXIgcHVzaGVkSXRlbXMgPSB0aGlzLmF1dG9wdXNoKGl0ZW0pOwoJdmFyIHJlc3VsdCA9IGNhbGxiYWNrKCk7CgoJaWYgKHB1c2hlZEl0ZW1zID4gMCkgewoJCXRoaXMucG9wKHB1c2hlZEl0ZW1zKTsKCX0KCglyZXR1cm4gcmVzdWx0Owp9OwoKLyoqCiAqIEV2YWx1YXRlcyBzdGFjayBhbmQgcmV0dXJucyB2YWx1ZSBvZiBhIG5hbWVkIHByb3BlcnR5CiAqCiAqIEBwYXJhbSB7U3RyaW5nfSBwcm9wZXJ0eSAtIHByb3BlcnR5IG5hbWUKICogQHJldHVybiBwcm9wZXJ0eSB2YWx1ZSBvciBudWxsIGlmIG5vdCBmb3VuZAogKi8KU3R5bGVDb250ZXh0U3RhY2sucHJvdG90eXBlLmdldFByb3BlcnR5ID0gZnVuY3Rpb24gKHByb3BlcnR5KSB7CglpZiAodGhpcy5zdHlsZU92ZXJyaWRlcykgewoJCWZvciAodmFyIGkgPSB0aGlzLnN0eWxlT3ZlcnJpZGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CgkJCXZhciBpdGVtID0gdGhpcy5zdHlsZU92ZXJyaWRlc1tpXTsKCgkJCWlmIChpc1N0cmluZyhpdGVtKSkgewoJCQkJLy8gbmFtZWQtc3R5bGUtb3ZlcnJpZGUKCQkJCXZhciBzdHlsZSA9IHRoaXMuc3R5bGVEaWN0aW9uYXJ5W2l0ZW1dOwoJCQkJaWYgKHN0eWxlICYmICFpc1VuZGVmaW5lZChzdHlsZVtwcm9wZXJ0eV0pICYmICFpc051bGwoc3R5bGVbcHJvcGVydHldKSkgewoJCQkJCXJldHVybiBzdHlsZVtwcm9wZXJ0eV07CgkJCQl9CgkJCX0gZWxzZSBpZiAoIWlzVW5kZWZpbmVkKGl0ZW1bcHJvcGVydHldKSAmJiAhaXNOdWxsKGl0ZW1bcHJvcGVydHldKSkgewoJCQkJLy8gc3R5bGUtb3ZlcnJpZGVzLW9iamVjdAoJCQkJcmV0dXJuIGl0ZW1bcHJvcGVydHldOwoJCQl9CgkJfQoJfQoKCXJldHVybiB0aGlzLmRlZmF1bHRTdHlsZSAmJiB0aGlzLmRlZmF1bHRTdHlsZVtwcm9wZXJ0eV07Cn07Cgptb2R1bGUuZXhwb3J0cyA9IFN0eWxlQ29udGV4dFN0YWNrOwoKCi8qKiovIH0pLAovKiA4MSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKdmFyIFRyYXZlcnNhbFRyYWNrZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc3KTsKdmFyIGlzU3RyaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5pc1N0cmluZzsKCi8qKgogKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIERvY3VtZW50Q29udGV4dCAtIGEgc3RvcmUgZm9yIGN1cnJlbnQgeCwgeSBwb3NpdGlvbnMgYW5kIGF2YWlsYWJsZSB3aWR0aC9oZWlnaHQuCiAqIEl0IGZhY2lsaXRhdGVzIGNvbHVtbiBkaXZpc2lvbnMgYW5kIHZlcnRpY2FsIHN5bmMKICovCmZ1bmN0aW9uIERvY3VtZW50Q29udGV4dChwYWdlU2l6ZSwgcGFnZU1hcmdpbnMpIHsKCXRoaXMucGFnZXMgPSBbXTsKCgl0aGlzLnBhZ2VNYXJnaW5zID0gcGFnZU1hcmdpbnM7CgoJdGhpcy54ID0gcGFnZU1hcmdpbnMubGVmdDsKCXRoaXMuYXZhaWxhYmxlV2lkdGggPSBwYWdlU2l6ZS53aWR0aCAtIHBhZ2VNYXJnaW5zLmxlZnQgLSBwYWdlTWFyZ2lucy5yaWdodDsKCXRoaXMuYXZhaWxhYmxlSGVpZ2h0ID0gMDsKCXRoaXMucGFnZSA9IC0xOwoKCXRoaXMuc25hcHNob3RzID0gW107CgoJdGhpcy5lbmRpbmdDZWxsID0gbnVsbDsKCgl0aGlzLnRyYWNrZXIgPSBuZXcgVHJhdmVyc2FsVHJhY2tlcigpOwoKCXRoaXMuYWRkUGFnZShwYWdlU2l6ZSk7CgoJdGhpcy5oYXNCYWNrZ3JvdW5kID0gZmFsc2U7Cn0KCkRvY3VtZW50Q29udGV4dC5wcm90b3R5cGUuYmVnaW5Db2x1bW5Hcm91cCA9IGZ1bmN0aW9uICgpIHsKCXRoaXMuc25hcHNob3RzLnB1c2goewoJCXg6IHRoaXMueCwKCQl5OiB0aGlzLnksCgkJYXZhaWxhYmxlSGVpZ2h0OiB0aGlzLmF2YWlsYWJsZUhlaWdodCwKCQlhdmFpbGFibGVXaWR0aDogdGhpcy5hdmFpbGFibGVXaWR0aCwKCQlwYWdlOiB0aGlzLnBhZ2UsCgkJYm90dG9tTW9zdDogewoJCQl4OiB0aGlzLngsCgkJCXk6IHRoaXMueSwKCQkJYXZhaWxhYmxlSGVpZ2h0OiB0aGlzLmF2YWlsYWJsZUhlaWdodCwKCQkJYXZhaWxhYmxlV2lkdGg6IHRoaXMuYXZhaWxhYmxlV2lkdGgsCgkJCXBhZ2U6IHRoaXMucGFnZQoJCX0sCgkJZW5kaW5nQ2VsbDogdGhpcy5lbmRpbmdDZWxsLAoJCWxhc3RDb2x1bW5XaWR0aDogdGhpcy5sYXN0Q29sdW1uV2lkdGgKCX0pOwoKCXRoaXMubGFzdENvbHVtbldpZHRoID0gMDsKfTsKCkRvY3VtZW50Q29udGV4dC5wcm90b3R5cGUuYmVnaW5Db2x1bW4gPSBmdW5jdGlvbiAod2lkdGgsIG9mZnNldCwgZW5kaW5nQ2VsbCkgewoJdmFyIHNhdmVkID0gdGhpcy5zbmFwc2hvdHNbdGhpcy5zbmFwc2hvdHMubGVuZ3RoIC0gMV07CgoJdGhpcy5jYWxjdWxhdGVCb3R0b21Nb3N0KHNhdmVkKTsKCgl0aGlzLmVuZGluZ0NlbGwgPSBlbmRpbmdDZWxsOwoJdGhpcy5wYWdlID0gc2F2ZWQucGFnZTsKCXRoaXMueCA9IHRoaXMueCArIHRoaXMubGFzdENvbHVtbldpZHRoICsgKG9mZnNldCB8fCAwKTsKCXRoaXMueSA9IHNhdmVkLnk7Cgl0aGlzLmF2YWlsYWJsZVdpZHRoID0gd2lkdGg7CS8vc2F2ZWQuYXZhaWxhYmxlV2lkdGggLSBvZmZzZXQ7Cgl0aGlzLmF2YWlsYWJsZUhlaWdodCA9IHNhdmVkLmF2YWlsYWJsZUhlaWdodDsKCgl0aGlzLmxhc3RDb2x1bW5XaWR0aCA9IHdpZHRoOwp9OwoKRG9jdW1lbnRDb250ZXh0LnByb3RvdHlwZS5jYWxjdWxhdGVCb3R0b21Nb3N0ID0gZnVuY3Rpb24gKGRlc3RDb250ZXh0KSB7CglpZiAodGhpcy5lbmRpbmdDZWxsKSB7CgkJdGhpcy5zYXZlQ29udGV4dEluRW5kaW5nQ2VsbCh0aGlzLmVuZGluZ0NlbGwpOwoJCXRoaXMuZW5kaW5nQ2VsbCA9IG51bGw7Cgl9IGVsc2UgewoJCWRlc3RDb250ZXh0LmJvdHRvbU1vc3QgPSBib3R0b21Nb3N0Q29udGV4dCh0aGlzLCBkZXN0Q29udGV4dC5ib3R0b21Nb3N0KTsKCX0KfTsKCkRvY3VtZW50Q29udGV4dC5wcm90b3R5cGUubWFya0VuZGluZyA9IGZ1bmN0aW9uIChlbmRpbmdDZWxsKSB7Cgl0aGlzLnBhZ2UgPSBlbmRpbmdDZWxsLl9jb2x1bW5FbmRpbmdDb250ZXh0LnBhZ2U7Cgl0aGlzLnggPSBlbmRpbmdDZWxsLl9jb2x1bW5FbmRpbmdDb250ZXh0Lng7Cgl0aGlzLnkgPSBlbmRpbmdDZWxsLl9jb2x1bW5FbmRpbmdDb250ZXh0Lnk7Cgl0aGlzLmF2YWlsYWJsZVdpZHRoID0gZW5kaW5nQ2VsbC5fY29sdW1uRW5kaW5nQ29udGV4dC5hdmFpbGFibGVXaWR0aDsKCXRoaXMuYXZhaWxhYmxlSGVpZ2h0ID0gZW5kaW5nQ2VsbC5fY29sdW1uRW5kaW5nQ29udGV4dC5hdmFpbGFibGVIZWlnaHQ7Cgl0aGlzLmxhc3RDb2x1bW5XaWR0aCA9IGVuZGluZ0NlbGwuX2NvbHVtbkVuZGluZ0NvbnRleHQubGFzdENvbHVtbldpZHRoOwp9OwoKRG9jdW1lbnRDb250ZXh0LnByb3RvdHlwZS5zYXZlQ29udGV4dEluRW5kaW5nQ2VsbCA9IGZ1bmN0aW9uIChlbmRpbmdDZWxsKSB7CgllbmRpbmdDZWxsLl9jb2x1bW5FbmRpbmdDb250ZXh0ID0gewoJCXBhZ2U6IHRoaXMucGFnZSwKCQl4OiB0aGlzLngsCgkJeTogdGhpcy55LAoJCWF2YWlsYWJsZUhlaWdodDogdGhpcy5hdmFpbGFibGVIZWlnaHQsCgkJYXZhaWxhYmxlV2lkdGg6IHRoaXMuYXZhaWxhYmxlV2lkdGgsCgkJbGFzdENvbHVtbldpZHRoOiB0aGlzLmxhc3RDb2x1bW5XaWR0aAoJfTsKfTsKCkRvY3VtZW50Q29udGV4dC5wcm90b3R5cGUuY29tcGxldGVDb2x1bW5Hcm91cCA9IGZ1bmN0aW9uIChoZWlnaHQpIHsKCXZhciBzYXZlZCA9IHRoaXMuc25hcHNob3RzLnBvcCgpOwoKCXRoaXMuY2FsY3VsYXRlQm90dG9tTW9zdChzYXZlZCk7CgoJdGhpcy5lbmRpbmdDZWxsID0gbnVsbDsKCXRoaXMueCA9IHNhdmVkLng7CgoJdmFyIHkgPSBzYXZlZC5ib3R0b21Nb3N0Lnk7CglpZiAoaGVpZ2h0KSB7CgkJaWYgKHNhdmVkLnBhZ2UgPT09IHNhdmVkLmJvdHRvbU1vc3QucGFnZSkgewoJCQlpZiAoKHNhdmVkLnkgKyBoZWlnaHQpID4geSkgewoJCQkJeSA9IHNhdmVkLnkgKyBoZWlnaHQ7CgkJCX0KCQl9IGVsc2UgewoJCQl5ICs9IGhlaWdodDsKCQl9Cgl9CgoJdGhpcy55ID0geTsKCXRoaXMucGFnZSA9IHNhdmVkLmJvdHRvbU1vc3QucGFnZTsKCXRoaXMuYXZhaWxhYmxlV2lkdGggPSBzYXZlZC5hdmFpbGFibGVXaWR0aDsKCXRoaXMuYXZhaWxhYmxlSGVpZ2h0ID0gc2F2ZWQuYm90dG9tTW9zdC5hdmFpbGFibGVIZWlnaHQ7CglpZiAoaGVpZ2h0KSB7CgkJdGhpcy5hdmFpbGFibGVIZWlnaHQgLT0gKHkgLSBzYXZlZC5ib3R0b21Nb3N0LnkpOwoJfQoJdGhpcy5sYXN0Q29sdW1uV2lkdGggPSBzYXZlZC5sYXN0Q29sdW1uV2lkdGg7Cn07CgpEb2N1bWVudENvbnRleHQucHJvdG90eXBlLmFkZE1hcmdpbiA9IGZ1bmN0aW9uIChsZWZ0LCByaWdodCkgewoJdGhpcy54ICs9IGxlZnQ7Cgl0aGlzLmF2YWlsYWJsZVdpZHRoIC09IGxlZnQgKyAocmlnaHQgfHwgMCk7Cn07CgpEb2N1bWVudENvbnRleHQucHJvdG90eXBlLm1vdmVEb3duID0gZnVuY3Rpb24gKG9mZnNldCkgewoJdGhpcy55ICs9IG9mZnNldDsKCXRoaXMuYXZhaWxhYmxlSGVpZ2h0IC09IG9mZnNldDsKCglyZXR1cm4gdGhpcy5hdmFpbGFibGVIZWlnaHQgPiAwOwp9OwoKRG9jdW1lbnRDb250ZXh0LnByb3RvdHlwZS5pbml0aWFsaXplUGFnZSA9IGZ1bmN0aW9uICgpIHsKCXRoaXMueSA9IHRoaXMucGFnZU1hcmdpbnMudG9wOwoJdGhpcy5hdmFpbGFibGVIZWlnaHQgPSB0aGlzLmdldEN1cnJlbnRQYWdlKCkucGFnZVNpemUuaGVpZ2h0IC0gdGhpcy5wYWdlTWFyZ2lucy50b3AgLSB0aGlzLnBhZ2VNYXJnaW5zLmJvdHRvbTsKCXRoaXMucGFnZVNuYXBzaG90KCkuYXZhaWxhYmxlV2lkdGggPSB0aGlzLmdldEN1cnJlbnRQYWdlKCkucGFnZVNpemUud2lkdGggLSB0aGlzLnBhZ2VNYXJnaW5zLmxlZnQgLSB0aGlzLnBhZ2VNYXJnaW5zLnJpZ2h0Owp9OwoKRG9jdW1lbnRDb250ZXh0LnByb3RvdHlwZS5wYWdlU25hcHNob3QgPSBmdW5jdGlvbiAoKSB7CglpZiAodGhpcy5zbmFwc2hvdHNbMF0pIHsKCQlyZXR1cm4gdGhpcy5zbmFwc2hvdHNbMF07Cgl9IGVsc2UgewoJCXJldHVybiB0aGlzOwoJfQp9OwoKRG9jdW1lbnRDb250ZXh0LnByb3RvdHlwZS5tb3ZlVG8gPSBmdW5jdGlvbiAoeCwgeSkgewoJaWYgKHggIT09IHVuZGVmaW5lZCAmJiB4ICE9PSBudWxsKSB7CgkJdGhpcy54ID0geDsKCQl0aGlzLmF2YWlsYWJsZVdpZHRoID0gdGhpcy5nZXRDdXJyZW50UGFnZSgpLnBhZ2VTaXplLndpZHRoIC0gdGhpcy54IC0gdGhpcy5wYWdlTWFyZ2lucy5yaWdodDsKCX0KCWlmICh5ICE9PSB1bmRlZmluZWQgJiYgeSAhPT0gbnVsbCkgewoJCXRoaXMueSA9IHk7CgkJdGhpcy5hdmFpbGFibGVIZWlnaHQgPSB0aGlzLmdldEN1cnJlbnRQYWdlKCkucGFnZVNpemUuaGVpZ2h0IC0gdGhpcy55IC0gdGhpcy5wYWdlTWFyZ2lucy5ib3R0b207Cgl9Cn07CgpEb2N1bWVudENvbnRleHQucHJvdG90eXBlLmJlZ2luRGV0YWNoZWRCbG9jayA9IGZ1bmN0aW9uICgpIHsKCXRoaXMuc25hcHNob3RzLnB1c2goewoJCXg6IHRoaXMueCwKCQl5OiB0aGlzLnksCgkJYXZhaWxhYmxlSGVpZ2h0OiB0aGlzLmF2YWlsYWJsZUhlaWdodCwKCQlhdmFpbGFibGVXaWR0aDogdGhpcy5hdmFpbGFibGVXaWR0aCwKCQlwYWdlOiB0aGlzLnBhZ2UsCgkJZW5kaW5nQ2VsbDogdGhpcy5lbmRpbmdDZWxsLAoJCWxhc3RDb2x1bW5XaWR0aDogdGhpcy5sYXN0Q29sdW1uV2lkdGgKCX0pOwp9OwoKRG9jdW1lbnRDb250ZXh0LnByb3RvdHlwZS5lbmREZXRhY2hlZEJsb2NrID0gZnVuY3Rpb24gKCkgewoJdmFyIHNhdmVkID0gdGhpcy5zbmFwc2hvdHMucG9wKCk7CgoJdGhpcy54ID0gc2F2ZWQueDsKCXRoaXMueSA9IHNhdmVkLnk7Cgl0aGlzLmF2YWlsYWJsZVdpZHRoID0gc2F2ZWQuYXZhaWxhYmxlV2lkdGg7Cgl0aGlzLmF2YWlsYWJsZUhlaWdodCA9IHNhdmVkLmF2YWlsYWJsZUhlaWdodDsKCXRoaXMucGFnZSA9IHNhdmVkLnBhZ2U7Cgl0aGlzLmVuZGluZ0NlbGwgPSBzYXZlZC5lbmRpbmdDZWxsOwoJdGhpcy5sYXN0Q29sdW1uV2lkdGggPSBzYXZlZC5sYXN0Q29sdW1uV2lkdGg7Cn07CgpmdW5jdGlvbiBwYWdlT3JpZW50YXRpb24ocGFnZU9yaWVudGF0aW9uU3RyaW5nLCBjdXJyZW50UGFnZU9yaWVudGF0aW9uKSB7CglpZiAocGFnZU9yaWVudGF0aW9uU3RyaW5nID09PSB1bmRlZmluZWQpIHsKCQlyZXR1cm4gY3VycmVudFBhZ2VPcmllbnRhdGlvbjsKCX0gZWxzZSBpZiAoaXNTdHJpbmcocGFnZU9yaWVudGF0aW9uU3RyaW5nKSAmJiAocGFnZU9yaWVudGF0aW9uU3RyaW5nLnRvTG93ZXJDYXNlKCkgPT09ICdsYW5kc2NhcGUnKSkgewoJCXJldHVybiAnbGFuZHNjYXBlJzsKCX0gZWxzZSB7CgkJcmV0dXJuICdwb3J0cmFpdCc7Cgl9Cn0KCnZhciBnZXRQYWdlU2l6ZSA9IGZ1bmN0aW9uIChjdXJyZW50UGFnZSwgbmV3UGFnZU9yaWVudGF0aW9uKSB7CgoJbmV3UGFnZU9yaWVudGF0aW9uID0gcGFnZU9yaWVudGF0aW9uKG5ld1BhZ2VPcmllbnRhdGlvbiwgY3VycmVudFBhZ2UucGFnZVNpemUub3JpZW50YXRpb24pOwoKCWlmIChuZXdQYWdlT3JpZW50YXRpb24gIT09IGN1cnJlbnRQYWdlLnBhZ2VTaXplLm9yaWVudGF0aW9uKSB7CgkJcmV0dXJuIHsKCQkJb3JpZW50YXRpb246IG5ld1BhZ2VPcmllbnRhdGlvbiwKCQkJd2lkdGg6IGN1cnJlbnRQYWdlLnBhZ2VTaXplLmhlaWdodCwKCQkJaGVpZ2h0OiBjdXJyZW50UGFnZS5wYWdlU2l6ZS53aWR0aAoJCX07Cgl9IGVsc2UgewoJCXJldHVybiB7CgkJCW9yaWVudGF0aW9uOiBjdXJyZW50UGFnZS5wYWdlU2l6ZS5vcmllbnRhdGlvbiwKCQkJd2lkdGg6IGN1cnJlbnRQYWdlLnBhZ2VTaXplLndpZHRoLAoJCQloZWlnaHQ6IGN1cnJlbnRQYWdlLnBhZ2VTaXplLmhlaWdodAoJCX07Cgl9Cgp9OwoKCkRvY3VtZW50Q29udGV4dC5wcm90b3R5cGUubW92ZVRvTmV4dFBhZ2UgPSBmdW5jdGlvbiAocGFnZU9yaWVudGF0aW9uKSB7Cgl2YXIgbmV4dFBhZ2VJbmRleCA9IHRoaXMucGFnZSArIDE7CgoJdmFyIHByZXZQYWdlID0gdGhpcy5wYWdlOwoJdmFyIHByZXZZID0gdGhpcy55OwoKCXZhciBjcmVhdGVOZXdQYWdlID0gbmV4dFBhZ2VJbmRleCA+PSB0aGlzLnBhZ2VzLmxlbmd0aDsKCWlmIChjcmVhdGVOZXdQYWdlKSB7CgkJdmFyIGN1cnJlbnRBdmFpbGFibGVXaWR0aCA9IHRoaXMuYXZhaWxhYmxlV2lkdGg7CgkJdmFyIGN1cnJlbnRQYWdlT3JpZW50YXRpb24gPSB0aGlzLmdldEN1cnJlbnRQYWdlKCkucGFnZVNpemUub3JpZW50YXRpb247CgoJCXZhciBwYWdlU2l6ZSA9IGdldFBhZ2VTaXplKHRoaXMuZ2V0Q3VycmVudFBhZ2UoKSwgcGFnZU9yaWVudGF0aW9uKTsKCQl0aGlzLmFkZFBhZ2UocGFnZVNpemUpOwoKCQlpZiAoY3VycmVudFBhZ2VPcmllbnRhdGlvbiA9PT0gcGFnZVNpemUub3JpZW50YXRpb24pIHsKCQkJdGhpcy5hdmFpbGFibGVXaWR0aCA9IGN1cnJlbnRBdmFpbGFibGVXaWR0aDsKCQl9Cgl9IGVsc2UgewoJCXRoaXMucGFnZSA9IG5leHRQYWdlSW5kZXg7CgkJdGhpcy5pbml0aWFsaXplUGFnZSgpOwoJfQoKCXJldHVybiB7CgkJbmV3UGFnZUNyZWF0ZWQ6IGNyZWF0ZU5ld1BhZ2UsCgkJcHJldlBhZ2U6IHByZXZQYWdlLAoJCXByZXZZOiBwcmV2WSwKCQl5OiB0aGlzLnkKCX07Cn07CgoKRG9jdW1lbnRDb250ZXh0LnByb3RvdHlwZS5hZGRQYWdlID0gZnVuY3Rpb24gKHBhZ2VTaXplKSB7Cgl2YXIgcGFnZSA9IHtpdGVtczogW10sIHBhZ2VTaXplOiBwYWdlU2l6ZX07Cgl0aGlzLnBhZ2VzLnB1c2gocGFnZSk7Cgl0aGlzLnBhZ2UgPSB0aGlzLnBhZ2VzLmxlbmd0aCAtIDE7Cgl0aGlzLmluaXRpYWxpemVQYWdlKCk7CgoJdGhpcy50cmFja2VyLmVtaXQoJ3BhZ2VBZGRlZCcpOwoKCXJldHVybiBwYWdlOwp9OwoKRG9jdW1lbnRDb250ZXh0LnByb3RvdHlwZS5nZXRDdXJyZW50UGFnZSA9IGZ1bmN0aW9uICgpIHsKCWlmICh0aGlzLnBhZ2UgPCAwIHx8IHRoaXMucGFnZSA+PSB0aGlzLnBhZ2VzLmxlbmd0aCkgewoJCXJldHVybiBudWxsOwoJfQoKCXJldHVybiB0aGlzLnBhZ2VzW3RoaXMucGFnZV07Cn07CgpEb2N1bWVudENvbnRleHQucHJvdG90eXBlLmdldEN1cnJlbnRQb3NpdGlvbiA9IGZ1bmN0aW9uICgpIHsKCXZhciBwYWdlU2l6ZSA9IHRoaXMuZ2V0Q3VycmVudFBhZ2UoKS5wYWdlU2l6ZTsKCXZhciBpbm5lckhlaWdodCA9IHBhZ2VTaXplLmhlaWdodCAtIHRoaXMucGFnZU1hcmdpbnMudG9wIC0gdGhpcy5wYWdlTWFyZ2lucy5ib3R0b207Cgl2YXIgaW5uZXJXaWR0aCA9IHBhZ2VTaXplLndpZHRoIC0gdGhpcy5wYWdlTWFyZ2lucy5sZWZ0IC0gdGhpcy5wYWdlTWFyZ2lucy5yaWdodDsKCglyZXR1cm4gewoJCXBhZ2VOdW1iZXI6IHRoaXMucGFnZSArIDEsCgkJcGFnZU9yaWVudGF0aW9uOiBwYWdlU2l6ZS5vcmllbnRhdGlvbiwKCQlwYWdlSW5uZXJIZWlnaHQ6IGlubmVySGVpZ2h0LAoJCXBhZ2VJbm5lcldpZHRoOiBpbm5lcldpZHRoLAoJCWxlZnQ6IHRoaXMueCwKCQl0b3A6IHRoaXMueSwKCQl2ZXJ0aWNhbFJhdGlvOiAoKHRoaXMueSAtIHRoaXMucGFnZU1hcmdpbnMudG9wKSAvIGlubmVySGVpZ2h0KSwKCQlob3Jpem9udGFsUmF0aW86ICgodGhpcy54IC0gdGhpcy5wYWdlTWFyZ2lucy5sZWZ0KSAvIGlubmVyV2lkdGgpCgl9Owp9OwoKZnVuY3Rpb24gYm90dG9tTW9zdENvbnRleHQoYzEsIGMyKSB7Cgl2YXIgcjsKCglpZiAoYzEucGFnZSA+IGMyLnBhZ2UpIHsKCQlyID0gYzE7Cgl9IGVsc2UgaWYgKGMyLnBhZ2UgPiBjMS5wYWdlKSB7CgkJciA9IGMyOwoJfSBlbHNlIHsKCQlyID0gKGMxLnkgPiBjMi55KSA/IGMxIDogYzI7Cgl9CgoJcmV0dXJuIHsKCQlwYWdlOiByLnBhZ2UsCgkJeDogci54LAoJCXk6IHIueSwKCQlhdmFpbGFibGVIZWlnaHQ6IHIuYXZhaWxhYmxlSGVpZ2h0LAoJCWF2YWlsYWJsZVdpZHRoOiByLmF2YWlsYWJsZVdpZHRoCgl9Owp9Cgptb2R1bGUuZXhwb3J0cyA9IERvY3VtZW50Q29udGV4dDsKCgovKioqLyB9KSwKLyogODIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKCi8qKgogKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIExpbmUKICoKICogQGNvbnN0cnVjdG9yCiAqIEB0aGlzIHtMaW5lfQogKiBAcGFyYW0ge051bWJlcn0gTWF4aW11bSB3aWR0aCB0aGlzIGxpbmUgY2FuIGhhdmUKICovCmZ1bmN0aW9uIExpbmUobWF4V2lkdGgpIHsKCXRoaXMubWF4V2lkdGggPSBtYXhXaWR0aDsKCXRoaXMubGVhZGluZ0N1dCA9IDA7Cgl0aGlzLnRyYWlsaW5nQ3V0ID0gMDsKCXRoaXMuaW5saW5lV2lkdGhzID0gMDsKCXRoaXMuaW5saW5lcyA9IFtdOwp9CgpMaW5lLnByb3RvdHlwZS5nZXRBc2NlbmRlckhlaWdodCA9IGZ1bmN0aW9uICgpIHsKCXZhciB5ID0gMDsKCgl0aGlzLmlubGluZXMuZm9yRWFjaChmdW5jdGlvbiAoaW5saW5lKSB7CgkJeSA9IE1hdGgubWF4KHksIGlubGluZS5mb250LmFzY2VuZGVyIC8gMTAwMCAqIGlubGluZS5mb250U2l6ZSk7Cgl9KTsKCXJldHVybiB5Owp9OwoKTGluZS5wcm90b3R5cGUuaGFzRW5vdWdoU3BhY2VGb3JJbmxpbmUgPSBmdW5jdGlvbiAoaW5saW5lKSB7CglpZiAodGhpcy5pbmxpbmVzLmxlbmd0aCA9PT0gMCkgewoJCXJldHVybiB0cnVlOwoJfQoJaWYgKHRoaXMubmV3TGluZUZvcmNlZCkgewoJCXJldHVybiBmYWxzZTsKCX0KCglyZXR1cm4gdGhpcy5pbmxpbmVXaWR0aHMgKyBpbmxpbmUud2lkdGggLSB0aGlzLmxlYWRpbmdDdXQgLSAoaW5saW5lLnRyYWlsaW5nQ3V0IHx8IDApIDw9IHRoaXMubWF4V2lkdGg7Cn07CgpMaW5lLnByb3RvdHlwZS5hZGRJbmxpbmUgPSBmdW5jdGlvbiAoaW5saW5lKSB7CglpZiAodGhpcy5pbmxpbmVzLmxlbmd0aCA9PT0gMCkgewoJCXRoaXMubGVhZGluZ0N1dCA9IGlubGluZS5sZWFkaW5nQ3V0IHx8IDA7Cgl9Cgl0aGlzLnRyYWlsaW5nQ3V0ID0gaW5saW5lLnRyYWlsaW5nQ3V0IHx8IDA7CgoJaW5saW5lLnggPSB0aGlzLmlubGluZVdpZHRocyAtIHRoaXMubGVhZGluZ0N1dDsKCgl0aGlzLmlubGluZXMucHVzaChpbmxpbmUpOwoJdGhpcy5pbmxpbmVXaWR0aHMgKz0gaW5saW5lLndpZHRoOwoKCWlmIChpbmxpbmUubGluZUVuZCkgewoJCXRoaXMubmV3TGluZUZvcmNlZCA9IHRydWU7Cgl9Cn07CgpMaW5lLnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uICgpIHsKCXJldHVybiB0aGlzLmlubGluZVdpZHRocyAtIHRoaXMubGVhZGluZ0N1dCAtIHRoaXMudHJhaWxpbmdDdXQ7Cn07CgovKioKICogUmV0dXJucyBsaW5lIGhlaWdodAogKiBAcmV0dXJuIHtOdW1iZXJ9CiAqLwpMaW5lLnByb3RvdHlwZS5nZXRIZWlnaHQgPSBmdW5jdGlvbiAoKSB7Cgl2YXIgbWF4ID0gMDsKCgl0aGlzLmlubGluZXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewoJCW1heCA9IE1hdGgubWF4KG1heCwgaXRlbS5oZWlnaHQgfHwgMCk7Cgl9KTsKCglyZXR1cm4gbWF4Owp9OwoKbW9kdWxlLmV4cG9ydHMgPSBMaW5lOwoKCi8qKiovIH0pLAovKiA4MyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Ci8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwsIHByb2Nlc3MpIHsvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy4KLy8KLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQovLyAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAovLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUKLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci8vCi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgovLwovLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwovLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4KLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUgovLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCgoKCi8qPHJlcGxhY2VtZW50PiovCgp2YXIgcHJvY2Vzc05leHRUaWNrID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMikubmV4dFRpY2s7Ci8qPC9yZXBsYWNlbWVudD4qLwoKbW9kdWxlLmV4cG9ydHMgPSBSZWFkYWJsZTsKCi8qPHJlcGxhY2VtZW50PiovCnZhciBpc0FycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Nik7Ci8qPC9yZXBsYWNlbWVudD4qLwoKLyo8cmVwbGFjZW1lbnQ+Ki8KdmFyIER1cGxleDsKLyo8L3JlcGxhY2VtZW50PiovCgpSZWFkYWJsZS5SZWFkYWJsZVN0YXRlID0gUmVhZGFibGVTdGF0ZTsKCi8qPHJlcGxhY2VtZW50PiovCnZhciBFRSA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpLkV2ZW50RW1pdHRlcjsKCnZhciBFRWxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbiAoZW1pdHRlciwgdHlwZSkgewogIHJldHVybiBlbWl0dGVyLmxpc3RlbmVycyh0eXBlKS5sZW5ndGg7Cn07Ci8qPC9yZXBsYWNlbWVudD4qLwoKLyo8cmVwbGFjZW1lbnQ+Ki8KdmFyIFN0cmVhbSA9IF9fd2VicGFja19yZXF1aXJlX18oODQpOwovKjwvcmVwbGFjZW1lbnQ+Ki8KCi8qPHJlcGxhY2VtZW50PiovCgp2YXIgQnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMykuQnVmZmVyOwp2YXIgT3VyVWludDhBcnJheSA9IGdsb2JhbC5VaW50OEFycmF5IHx8IGZ1bmN0aW9uICgpIHt9OwpmdW5jdGlvbiBfdWludDhBcnJheVRvQnVmZmVyKGNodW5rKSB7CiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNodW5rKTsKfQpmdW5jdGlvbiBfaXNVaW50OEFycmF5KG9iaikgewogIHJldHVybiBCdWZmZXIuaXNCdWZmZXIob2JqKSB8fCBvYmogaW5zdGFuY2VvZiBPdXJVaW50OEFycmF5Owp9CgovKjwvcmVwbGFjZW1lbnQ+Ki8KCi8qPHJlcGxhY2VtZW50PiovCnZhciB1dGlsID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNSk7CnV0aWwuaW5oZXJpdHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKTsKLyo8L3JlcGxhY2VtZW50PiovCgovKjxyZXBsYWNlbWVudD4qLwp2YXIgZGVidWdVdGlsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzkpOwp2YXIgZGVidWcgPSB2b2lkIDA7CmlmIChkZWJ1Z1V0aWwgJiYgZGVidWdVdGlsLmRlYnVnbG9nKSB7CiAgZGVidWcgPSBkZWJ1Z1V0aWwuZGVidWdsb2coJ3N0cmVhbScpOwp9IGVsc2UgewogIGRlYnVnID0gZnVuY3Rpb24gKCkge307Cn0KLyo8L3JlcGxhY2VtZW50PiovCgp2YXIgQnVmZmVyTGlzdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTQwKTsKdmFyIGRlc3Ryb3lJbXBsID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4NSk7CnZhciBTdHJpbmdEZWNvZGVyOwoKdXRpbC5pbmhlcml0cyhSZWFkYWJsZSwgU3RyZWFtKTsKCnZhciBrUHJveHlFdmVudHMgPSBbJ2Vycm9yJywgJ2Nsb3NlJywgJ2Rlc3Ryb3knLCAncGF1c2UnLCAncmVzdW1lJ107CgpmdW5jdGlvbiBwcmVwZW5kTGlzdGVuZXIoZW1pdHRlciwgZXZlbnQsIGZuKSB7CiAgLy8gU2FkbHkgdGhpcyBpcyBub3QgY2FjaGVhYmxlIGFzIHNvbWUgbGlicmFyaWVzIGJ1bmRsZSB0aGVpciBvd24KICAvLyBldmVudCBlbWl0dGVyIGltcGxlbWVudGF0aW9uIHdpdGggdGhlbS4KICBpZiAodHlwZW9mIGVtaXR0ZXIucHJlcGVuZExpc3RlbmVyID09PSAnZnVuY3Rpb24nKSByZXR1cm4gZW1pdHRlci5wcmVwZW5kTGlzdGVuZXIoZXZlbnQsIGZuKTsKCiAgLy8gVGhpcyBpcyBhIGhhY2sgdG8gbWFrZSBzdXJlIHRoYXQgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIGFueQogIC8vIHVzZXJsYW5kIG9uZXMuICBORVZFUiBETyBUSElTLiBUaGlzIGlzIGhlcmUgb25seSBiZWNhdXNlIHRoaXMgY29kZSBuZWVkcwogIC8vIHRvIGNvbnRpbnVlIHRvIHdvcmsgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBOb2RlLmpzIHRoYXQgZG8gbm90IGluY2x1ZGUKICAvLyB0aGUgcHJlcGVuZExpc3RlbmVyKCkgbWV0aG9kLiBUaGUgZ29hbCBpcyB0byBldmVudHVhbGx5IHJlbW92ZSB0aGlzIGhhY2suCiAgaWYgKCFlbWl0dGVyLl9ldmVudHMgfHwgIWVtaXR0ZXIuX2V2ZW50c1tldmVudF0pIGVtaXR0ZXIub24oZXZlbnQsIGZuKTtlbHNlIGlmIChpc0FycmF5KGVtaXR0ZXIuX2V2ZW50c1tldmVudF0pKSBlbWl0dGVyLl9ldmVudHNbZXZlbnRdLnVuc2hpZnQoZm4pO2Vsc2UgZW1pdHRlci5fZXZlbnRzW2V2ZW50XSA9IFtmbiwgZW1pdHRlci5fZXZlbnRzW2V2ZW50XV07Cn0KCmZ1bmN0aW9uIFJlYWRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtKSB7CiAgRHVwbGV4ID0gRHVwbGV4IHx8IF9fd2VicGFja19yZXF1aXJlX18oMTYpOwoKICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCiAgLy8gRHVwbGV4IHN0cmVhbXMgYXJlIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLCBidXQgc2hhcmUKICAvLyB0aGUgc2FtZSBvcHRpb25zIG9iamVjdC4KICAvLyBIb3dldmVyLCBzb21lIGNhc2VzIHJlcXVpcmUgc2V0dGluZyBvcHRpb25zIHRvIGRpZmZlcmVudAogIC8vIHZhbHVlcyBmb3IgdGhlIHJlYWRhYmxlIGFuZCB0aGUgd3JpdGFibGUgc2lkZXMgb2YgdGhlIGR1cGxleCBzdHJlYW0uCiAgLy8gVGhlc2Ugb3B0aW9ucyBjYW4gYmUgcHJvdmlkZWQgc2VwYXJhdGVseSBhcyByZWFkYWJsZVhYWCBhbmQgd3JpdGFibGVYWFguCiAgdmFyIGlzRHVwbGV4ID0gc3RyZWFtIGluc3RhbmNlb2YgRHVwbGV4OwoKICAvLyBvYmplY3Qgc3RyZWFtIGZsYWcuIFVzZWQgdG8gbWFrZSByZWFkKG4pIGlnbm9yZSBuIGFuZCB0bwogIC8vIG1ha2UgYWxsIHRoZSBidWZmZXIgbWVyZ2luZyBhbmQgbGVuZ3RoIGNoZWNrcyBnbyBhd2F5CiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7CgogIGlmIChpc0R1cGxleCkgdGhpcy5vYmplY3RNb2RlID0gdGhpcy5vYmplY3RNb2RlIHx8ICEhb3B0aW9ucy5yZWFkYWJsZU9iamVjdE1vZGU7CgogIC8vIHRoZSBwb2ludCBhdCB3aGljaCBpdCBzdG9wcyBjYWxsaW5nIF9yZWFkKCkgdG8gZmlsbCB0aGUgYnVmZmVyCiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyAiZG9uJ3QgY2FsbCBfcmVhZCBwcmVlbXB0aXZlbHkgZXZlciIKICB2YXIgaHdtID0gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrOwogIHZhciByZWFkYWJsZUh3bSA9IG9wdGlvbnMucmVhZGFibGVIaWdoV2F0ZXJNYXJrOwogIHZhciBkZWZhdWx0SHdtID0gdGhpcy5vYmplY3RNb2RlID8gMTYgOiAxNiAqIDEwMjQ7CgogIGlmIChod20gfHwgaHdtID09PSAwKSB0aGlzLmhpZ2hXYXRlck1hcmsgPSBod207ZWxzZSBpZiAoaXNEdXBsZXggJiYgKHJlYWRhYmxlSHdtIHx8IHJlYWRhYmxlSHdtID09PSAwKSkgdGhpcy5oaWdoV2F0ZXJNYXJrID0gcmVhZGFibGVId207ZWxzZSB0aGlzLmhpZ2hXYXRlck1hcmsgPSBkZWZhdWx0SHdtOwoKICAvLyBjYXN0IHRvIGludHMuCiAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gTWF0aC5mbG9vcih0aGlzLmhpZ2hXYXRlck1hcmspOwoKICAvLyBBIGxpbmtlZCBsaXN0IGlzIHVzZWQgdG8gc3RvcmUgZGF0YSBjaHVua3MgaW5zdGVhZCBvZiBhbiBhcnJheSBiZWNhdXNlIHRoZQogIC8vIGxpbmtlZCBsaXN0IGNhbiByZW1vdmUgZWxlbWVudHMgZnJvbSB0aGUgYmVnaW5uaW5nIGZhc3RlciB0aGFuCiAgLy8gYXJyYXkuc2hpZnQoKQogIHRoaXMuYnVmZmVyID0gbmV3IEJ1ZmZlckxpc3QoKTsKICB0aGlzLmxlbmd0aCA9IDA7CiAgdGhpcy5waXBlcyA9IG51bGw7CiAgdGhpcy5waXBlc0NvdW50ID0gMDsKICB0aGlzLmZsb3dpbmcgPSBudWxsOwogIHRoaXMuZW5kZWQgPSBmYWxzZTsKICB0aGlzLmVuZEVtaXR0ZWQgPSBmYWxzZTsKICB0aGlzLnJlYWRpbmcgPSBmYWxzZTsKCiAgLy8gYSBmbGFnIHRvIGJlIGFibGUgdG8gdGVsbCBpZiB0aGUgZXZlbnQgJ3JlYWRhYmxlJy8nZGF0YScgaXMgZW1pdHRlZAogIC8vIGltbWVkaWF0ZWx5LCBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlCiAgLy8gYW55IGFjdGlvbnMgdGhhdCBzaG91bGRuJ3QgaGFwcGVuIHVudGlsICJsYXRlciIgc2hvdWxkIGdlbmVyYWxseSBhbHNvCiAgLy8gbm90IGhhcHBlbiBiZWZvcmUgdGhlIGZpcnN0IHJlYWQgY2FsbC4KICB0aGlzLnN5bmMgPSB0cnVlOwoKICAvLyB3aGVuZXZlciB3ZSByZXR1cm4gbnVsbCwgdGhlbiB3ZSBzZXQgYSBmbGFnIHRvIHNheQogIC8vIHRoYXQgd2UncmUgYXdhaXRpbmcgYSAncmVhZGFibGUnIGV2ZW50IGVtaXNzaW9uLgogIHRoaXMubmVlZFJlYWRhYmxlID0gZmFsc2U7CiAgdGhpcy5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTsKICB0aGlzLnJlYWRhYmxlTGlzdGVuaW5nID0gZmFsc2U7CiAgdGhpcy5yZXN1bWVTY2hlZHVsZWQgPSBmYWxzZTsKCiAgLy8gaGFzIGl0IGJlZW4gZGVzdHJveWVkCiAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTsKCiAgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZwogIC8vIGVuY29kaW5nIGlzICdiaW5hcnknIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGlzIGNvbmZpZ3VyYWJsZS4KICAvLyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhlIHVuaXZlcnNlIHVzZXMgJ3V0ZjgnLCB0aG91Z2guCiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSBvcHRpb25zLmRlZmF1bHRFbmNvZGluZyB8fCAndXRmOCc7CgogIC8vIHRoZSBudW1iZXIgb2Ygd3JpdGVycyB0aGF0IGFyZSBhd2FpdGluZyBhIGRyYWluIGV2ZW50IGluIC5waXBlKClzCiAgdGhpcy5hd2FpdERyYWluID0gMDsKCiAgLy8gaWYgdHJ1ZSwgYSBtYXliZVJlYWRNb3JlIGhhcyBiZWVuIHNjaGVkdWxlZAogIHRoaXMucmVhZGluZ01vcmUgPSBmYWxzZTsKCiAgdGhpcy5kZWNvZGVyID0gbnVsbDsKICB0aGlzLmVuY29kaW5nID0gbnVsbDsKICBpZiAob3B0aW9ucy5lbmNvZGluZykgewogICAgaWYgKCFTdHJpbmdEZWNvZGVyKSBTdHJpbmdEZWNvZGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NykuU3RyaW5nRGVjb2RlcjsKICAgIHRoaXMuZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKG9wdGlvbnMuZW5jb2RpbmcpOwogICAgdGhpcy5lbmNvZGluZyA9IG9wdGlvbnMuZW5jb2Rpbmc7CiAgfQp9CgpmdW5jdGlvbiBSZWFkYWJsZShvcHRpb25zKSB7CiAgRHVwbGV4ID0gRHVwbGV4IHx8IF9fd2VicGFja19yZXF1aXJlX18oMTYpOwoKICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVhZGFibGUpKSByZXR1cm4gbmV3IFJlYWRhYmxlKG9wdGlvbnMpOwoKICB0aGlzLl9yZWFkYWJsZVN0YXRlID0gbmV3IFJlYWRhYmxlU3RhdGUob3B0aW9ucywgdGhpcyk7CgogIC8vIGxlZ2FjeQogIHRoaXMucmVhZGFibGUgPSB0cnVlOwoKICBpZiAob3B0aW9ucykgewogICAgaWYgKHR5cGVvZiBvcHRpb25zLnJlYWQgPT09ICdmdW5jdGlvbicpIHRoaXMuX3JlYWQgPSBvcHRpb25zLnJlYWQ7CgogICAgaWYgKHR5cGVvZiBvcHRpb25zLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHRoaXMuX2Rlc3Ryb3kgPSBvcHRpb25zLmRlc3Ryb3k7CiAgfQoKICBTdHJlYW0uY2FsbCh0aGlzKTsKfQoKT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSwgJ2Rlc3Ryb3llZCcsIHsKICBnZXQ6IGZ1bmN0aW9uICgpIHsKICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkOwogIH0sCiAgc2V0OiBmdW5jdGlvbiAodmFsdWUpIHsKICAgIC8vIHdlIGlnbm9yZSB0aGUgdmFsdWUgaWYgdGhlIHN0cmVhbQogICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldAogICAgaWYgKCF0aGlzLl9yZWFkYWJsZVN0YXRlKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5CiAgICAvLyBtYW5hZ2luZyBkZXN0cm95ZWQKICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gdmFsdWU7CiAgfQp9KTsKClJlYWRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZGVzdHJveUltcGwuZGVzdHJveTsKUmVhZGFibGUucHJvdG90eXBlLl91bmRlc3Ryb3kgPSBkZXN0cm95SW1wbC51bmRlc3Ryb3k7ClJlYWRhYmxlLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7CiAgdGhpcy5wdXNoKG51bGwpOwogIGNiKGVycik7Cn07CgovLyBNYW51YWxseSBzaG92ZSBzb21ldGhpbmcgaW50byB0aGUgcmVhZCgpIGJ1ZmZlci4KLy8gVGhpcyByZXR1cm5zIHRydWUgaWYgdGhlIGhpZ2hXYXRlck1hcmsgaGFzIG5vdCBiZWVuIGhpdCB5ZXQsCi8vIHNpbWlsYXIgdG8gaG93IFdyaXRhYmxlLndyaXRlKCkgcmV0dXJucyB0cnVlIGlmIHlvdSBzaG91bGQKLy8gd3JpdGUoKSBzb21lIG1vcmUuClJlYWRhYmxlLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZykgewogIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7CiAgdmFyIHNraXBDaHVua0NoZWNrOwoKICBpZiAoIXN0YXRlLm9iamVjdE1vZGUpIHsKICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7CiAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgc3RhdGUuZGVmYXVsdEVuY29kaW5nOwogICAgICBpZiAoZW5jb2RpbmcgIT09IHN0YXRlLmVuY29kaW5nKSB7CiAgICAgICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcpOwogICAgICAgIGVuY29kaW5nID0gJyc7CiAgICAgIH0KICAgICAgc2tpcENodW5rQ2hlY2sgPSB0cnVlOwogICAgfQogIH0gZWxzZSB7CiAgICBza2lwQ2h1bmtDaGVjayA9IHRydWU7CiAgfQoKICByZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLCBjaHVuaywgZW5jb2RpbmcsIGZhbHNlLCBza2lwQ2h1bmtDaGVjayk7Cn07CgovLyBVbnNoaWZ0IHNob3VsZCAqYWx3YXlzKiBiZSBzb21ldGhpbmcgZGlyZWN0bHkgb3V0IG9mIHJlYWQoKQpSZWFkYWJsZS5wcm90b3R5cGUudW5zaGlmdCA9IGZ1bmN0aW9uIChjaHVuaykgewogIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIGNodW5rLCBudWxsLCB0cnVlLCBmYWxzZSk7Cn07CgpmdW5jdGlvbiByZWFkYWJsZUFkZENodW5rKHN0cmVhbSwgY2h1bmssIGVuY29kaW5nLCBhZGRUb0Zyb250LCBza2lwQ2h1bmtDaGVjaykgewogIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTsKICBpZiAoY2h1bmsgPT09IG51bGwpIHsKICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTsKICAgIG9uRW9mQ2h1bmsoc3RyZWFtLCBzdGF0ZSk7CiAgfSBlbHNlIHsKICAgIHZhciBlcjsKICAgIGlmICghc2tpcENodW5rQ2hlY2spIGVyID0gY2h1bmtJbnZhbGlkKHN0YXRlLCBjaHVuayk7CiAgICBpZiAoZXIpIHsKICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpOwogICAgfSBlbHNlIGlmIChzdGF0ZS5vYmplY3RNb2RlIHx8IGNodW5rICYmIGNodW5rLmxlbmd0aCA+IDApIHsKICAgICAgaWYgKHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgIXN0YXRlLm9iamVjdE1vZGUgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKGNodW5rKSAhPT0gQnVmZmVyLnByb3RvdHlwZSkgewogICAgICAgIGNodW5rID0gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuayk7CiAgICAgIH0KCiAgICAgIGlmIChhZGRUb0Zyb250KSB7CiAgICAgICAgaWYgKHN0YXRlLmVuZEVtaXR0ZWQpIHN0cmVhbS5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignc3RyZWFtLnVuc2hpZnQoKSBhZnRlciBlbmQgZXZlbnQnKSk7ZWxzZSBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgdHJ1ZSk7CiAgICAgIH0gZWxzZSBpZiAoc3RhdGUuZW5kZWQpIHsKICAgICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ3N0cmVhbS5wdXNoKCkgYWZ0ZXIgRU9GJykpOwogICAgICB9IGVsc2UgewogICAgICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTsKICAgICAgICBpZiAoc3RhdGUuZGVjb2RlciAmJiAhZW5jb2RpbmcpIHsKICAgICAgICAgIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7CiAgICAgICAgICBpZiAoc3RhdGUub2JqZWN0TW9kZSB8fCBjaHVuay5sZW5ndGggIT09IDApIGFkZENodW5rKHN0cmVhbSwgc3RhdGUsIGNodW5rLCBmYWxzZSk7ZWxzZSBtYXliZVJlYWRNb3JlKHN0cmVhbSwgc3RhdGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgZmFsc2UpOwogICAgICAgIH0KICAgICAgfQogICAgfSBlbHNlIGlmICghYWRkVG9Gcm9udCkgewogICAgICBzdGF0ZS5yZWFkaW5nID0gZmFsc2U7CiAgICB9CiAgfQoKICByZXR1cm4gbmVlZE1vcmVEYXRhKHN0YXRlKTsKfQoKZnVuY3Rpb24gYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGFkZFRvRnJvbnQpIHsKICBpZiAoc3RhdGUuZmxvd2luZyAmJiBzdGF0ZS5sZW5ndGggPT09IDAgJiYgIXN0YXRlLnN5bmMpIHsKICAgIHN0cmVhbS5lbWl0KCdkYXRhJywgY2h1bmspOwogICAgc3RyZWFtLnJlYWQoMCk7CiAgfSBlbHNlIHsKICAgIC8vIHVwZGF0ZSB0aGUgYnVmZmVyIGluZm8uCiAgICBzdGF0ZS5sZW5ndGggKz0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7CiAgICBpZiAoYWRkVG9Gcm9udCkgc3RhdGUuYnVmZmVyLnVuc2hpZnQoY2h1bmspO2Vsc2Ugc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspOwoKICAgIGlmIChzdGF0ZS5uZWVkUmVhZGFibGUpIGVtaXRSZWFkYWJsZShzdHJlYW0pOwogIH0KICBtYXliZVJlYWRNb3JlKHN0cmVhbSwgc3RhdGUpOwp9CgpmdW5jdGlvbiBjaHVua0ludmFsaWQoc3RhdGUsIGNodW5rKSB7CiAgdmFyIGVyOwogIGlmICghX2lzVWludDhBcnJheShjaHVuaykgJiYgdHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiBjaHVuayAhPT0gdW5kZWZpbmVkICYmICFzdGF0ZS5vYmplY3RNb2RlKSB7CiAgICBlciA9IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbm9uLXN0cmluZy9idWZmZXIgY2h1bmsnKTsKICB9CiAgcmV0dXJuIGVyOwp9CgovLyBpZiBpdCdzIHBhc3QgdGhlIGhpZ2ggd2F0ZXIgbWFyaywgd2UgY2FuIHB1c2ggaW4gc29tZSBtb3JlLgovLyBBbHNvLCBpZiB3ZSBoYXZlIG5vIGRhdGEgeWV0LCB3ZSBjYW4gc3RhbmQgc29tZQovLyBtb3JlIGJ5dGVzLiAgVGhpcyBpcyB0byB3b3JrIGFyb3VuZCBjYXNlcyB3aGVyZSBod209MCwKLy8gc3VjaCBhcyB0aGUgcmVwbC4gIEFsc28sIGlmIHRoZSBwdXNoKCkgdHJpZ2dlcmVkIGEKLy8gcmVhZGFibGUgZXZlbnQsIGFuZCB0aGUgdXNlciBjYWxsZWQgcmVhZChsYXJnZU51bWJlcikgc3VjaCB0aGF0Ci8vIG5lZWRSZWFkYWJsZSB3YXMgc2V0LCB0aGVuIHdlIG91Z2h0IHRvIHB1c2ggbW9yZSwgc28gdGhhdCBhbm90aGVyCi8vICdyZWFkYWJsZScgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQuCmZ1bmN0aW9uIG5lZWRNb3JlRGF0YShzdGF0ZSkgewogIHJldHVybiAhc3RhdGUuZW5kZWQgJiYgKHN0YXRlLm5lZWRSZWFkYWJsZSB8fCBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmxlbmd0aCA9PT0gMCk7Cn0KClJlYWRhYmxlLnByb3RvdHlwZS5pc1BhdXNlZCA9IGZ1bmN0aW9uICgpIHsKICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nID09PSBmYWxzZTsKfTsKCi8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgpSZWFkYWJsZS5wcm90b3R5cGUuc2V0RW5jb2RpbmcgPSBmdW5jdGlvbiAoZW5jKSB7CiAgaWYgKCFTdHJpbmdEZWNvZGVyKSBTdHJpbmdEZWNvZGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NykuU3RyaW5nRGVjb2RlcjsKICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihlbmMpOwogIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2RpbmcgPSBlbmM7CiAgcmV0dXJuIHRoaXM7Cn07CgovLyBEb24ndCByYWlzZSB0aGUgaHdtID4gOE1CCnZhciBNQVhfSFdNID0gMHg4MDAwMDA7CmZ1bmN0aW9uIGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pIHsKICBpZiAobiA+PSBNQVhfSFdNKSB7CiAgICBuID0gTUFYX0hXTTsKICB9IGVsc2UgewogICAgLy8gR2V0IHRoZSBuZXh0IGhpZ2hlc3QgcG93ZXIgb2YgMiB0byBwcmV2ZW50IGluY3JlYXNpbmcgaHdtIGV4Y2Vzc2l2ZWx5IGluCiAgICAvLyB0aW55IGFtb3VudHMKICAgIG4tLTsKICAgIG4gfD0gbiA+Pj4gMTsKICAgIG4gfD0gbiA+Pj4gMjsKICAgIG4gfD0gbiA+Pj4gNDsKICAgIG4gfD0gbiA+Pj4gODsKICAgIG4gfD0gbiA+Pj4gMTY7CiAgICBuKys7CiAgfQogIHJldHVybiBuOwp9CgovLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZwovLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LgpmdW5jdGlvbiBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKSB7CiAgaWYgKG4gPD0gMCB8fCBzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIHJldHVybiAwOwogIGlmIChzdGF0ZS5vYmplY3RNb2RlKSByZXR1cm4gMTsKICBpZiAobiAhPT0gbikgewogICAgLy8gT25seSBmbG93IG9uZSBidWZmZXIgYXQgYSB0aW1lCiAgICBpZiAoc3RhdGUuZmxvd2luZyAmJiBzdGF0ZS5sZW5ndGgpIHJldHVybiBzdGF0ZS5idWZmZXIuaGVhZC5kYXRhLmxlbmd0aDtlbHNlIHJldHVybiBzdGF0ZS5sZW5ndGg7CiAgfQogIC8vIElmIHdlJ3JlIGFza2luZyBmb3IgbW9yZSB0aGFuIHRoZSBjdXJyZW50IGh3bSwgdGhlbiByYWlzZSB0aGUgaHdtLgogIGlmIChuID4gc3RhdGUuaGlnaFdhdGVyTWFyaykgc3RhdGUuaGlnaFdhdGVyTWFyayA9IGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pOwogIGlmIChuIDw9IHN0YXRlLmxlbmd0aCkgcmV0dXJuIG47CiAgLy8gRG9uJ3QgaGF2ZSBlbm91Z2gKICBpZiAoIXN0YXRlLmVuZGVkKSB7CiAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlOwogICAgcmV0dXJuIDA7CiAgfQogIHJldHVybiBzdGF0ZS5sZW5ndGg7Cn0KCi8vIHlvdSBjYW4gb3ZlcnJpZGUgZWl0aGVyIHRoaXMgbWV0aG9kLCBvciB0aGUgYXN5bmMgX3JlYWQobikgYmVsb3cuClJlYWRhYmxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG4pIHsKICBkZWJ1ZygncmVhZCcsIG4pOwogIG4gPSBwYXJzZUludChuLCAxMCk7CiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTsKICB2YXIgbk9yaWcgPSBuOwoKICBpZiAobiAhPT0gMCkgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7CgogIC8vIGlmIHdlJ3JlIGRvaW5nIHJlYWQoMCkgdG8gdHJpZ2dlciBhIHJlYWRhYmxlIGV2ZW50LCBidXQgd2UKICAvLyBhbHJlYWR5IGhhdmUgYSBidW5jaCBvZiBkYXRhIGluIHRoZSBidWZmZXIsIHRoZW4ganVzdCB0cmlnZ2VyCiAgLy8gdGhlICdyZWFkYWJsZScgZXZlbnQgYW5kIG1vdmUgb24uCiAgaWYgKG4gPT09IDAgJiYgc3RhdGUubmVlZFJlYWRhYmxlICYmIChzdGF0ZS5sZW5ndGggPj0gc3RhdGUuaGlnaFdhdGVyTWFyayB8fCBzdGF0ZS5lbmRlZCkpIHsKICAgIGRlYnVnKCdyZWFkOiBlbWl0UmVhZGFibGUnLCBzdGF0ZS5sZW5ndGgsIHN0YXRlLmVuZGVkKTsKICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIGVuZFJlYWRhYmxlKHRoaXMpO2Vsc2UgZW1pdFJlYWRhYmxlKHRoaXMpOwogICAgcmV0dXJuIG51bGw7CiAgfQoKICBuID0gaG93TXVjaFRvUmVhZChuLCBzdGF0ZSk7CgogIC8vIGlmIHdlJ3ZlIGVuZGVkLCBhbmQgd2UncmUgbm93IGNsZWFyLCB0aGVuIGZpbmlzaCBpdCB1cC4KICBpZiAobiA9PT0gMCAmJiBzdGF0ZS5lbmRlZCkgewogICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgZW5kUmVhZGFibGUodGhpcyk7CiAgICByZXR1cm4gbnVsbDsKICB9CgogIC8vIEFsbCB0aGUgYWN0dWFsIGNodW5rIGdlbmVyYXRpb24gbG9naWMgbmVlZHMgdG8gYmUKICAvLyAqYmVsb3cqIHRoZSBjYWxsIHRvIF9yZWFkLiAgVGhlIHJlYXNvbiBpcyB0aGF0IGluIGNlcnRhaW4KICAvLyBzeW50aGV0aWMgc3RyZWFtIGNhc2VzLCBzdWNoIGFzIHBhc3N0aHJvdWdoIHN0cmVhbXMsIF9yZWFkCiAgLy8gbWF5IGJlIGEgY29tcGxldGVseSBzeW5jaHJvbm91cyBvcGVyYXRpb24gd2hpY2ggbWF5IGNoYW5nZQogIC8vIHRoZSBzdGF0ZSBvZiB0aGUgcmVhZCBidWZmZXIsIHByb3ZpZGluZyBlbm91Z2ggZGF0YSB3aGVuCiAgLy8gYmVmb3JlIHRoZXJlIHdhcyAqbm90KiBlbm91Z2guCiAgLy8KICAvLyBTbywgdGhlIHN0ZXBzIGFyZToKICAvLyAxLiBGaWd1cmUgb3V0IHdoYXQgdGhlIHN0YXRlIG9mIHRoaW5ncyB3aWxsIGJlIGFmdGVyIHdlIGRvCiAgLy8gYSByZWFkIGZyb20gdGhlIGJ1ZmZlci4KICAvLwogIC8vIDIuIElmIHRoYXQgcmVzdWx0aW5nIHN0YXRlIHdpbGwgdHJpZ2dlciBhIF9yZWFkLCB0aGVuIGNhbGwgX3JlYWQuCiAgLy8gTm90ZSB0aGF0IHRoaXMgbWF5IGJlIGFzeW5jaHJvbm91cywgb3Igc3luY2hyb25vdXMuICBZZXMsIGl0IGlzCiAgLy8gZGVlcGx5IHVnbHkgdG8gd3JpdGUgQVBJcyB0aGlzIHdheSwgYnV0IHRoYXQgc3RpbGwgZG9lc24ndCBtZWFuCiAgLy8gdGhhdCB0aGUgUmVhZGFibGUgY2xhc3Mgc2hvdWxkIGJlaGF2ZSBpbXByb3Blcmx5LCBhcyBzdHJlYW1zIGFyZQogIC8vIGRlc2lnbmVkIHRvIGJlIHN5bmMvYXN5bmMgYWdub3N0aWMuCiAgLy8gVGFrZSBub3RlIGlmIHRoZSBfcmVhZCBjYWxsIGlzIHN5bmMgb3IgYXN5bmMgKGllLCBpZiB0aGUgcmVhZCBjYWxsCiAgLy8gaGFzIHJldHVybmVkIHlldCksIHNvIHRoYXQgd2Uga25vdyB3aGV0aGVyIG9yIG5vdCBpdCdzIHNhZmUgdG8gZW1pdAogIC8vICdyZWFkYWJsZScgZXRjLgogIC8vCiAgLy8gMy4gQWN0dWFsbHkgcHVsbCB0aGUgcmVxdWVzdGVkIGNodW5rcyBvdXQgb2YgdGhlIGJ1ZmZlciBhbmQgcmV0dXJuLgoKICAvLyBpZiB3ZSBuZWVkIGEgcmVhZGFibGUgZXZlbnQsIHRoZW4gd2UgbmVlZCB0byBkbyBzb21lIHJlYWRpbmcuCiAgdmFyIGRvUmVhZCA9IHN0YXRlLm5lZWRSZWFkYWJsZTsKICBkZWJ1ZygnbmVlZCByZWFkYWJsZScsIGRvUmVhZCk7CgogIC8vIGlmIHdlIGN1cnJlbnRseSBoYXZlIGxlc3MgdGhhbiB0aGUgaGlnaFdhdGVyTWFyaywgdGhlbiBhbHNvIHJlYWQgc29tZQogIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgfHwgc3RhdGUubGVuZ3RoIC0gbiA8IHN0YXRlLmhpZ2hXYXRlck1hcmspIHsKICAgIGRvUmVhZCA9IHRydWU7CiAgICBkZWJ1ZygnbGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsnLCBkb1JlYWQpOwogIH0KCiAgLy8gaG93ZXZlciwgaWYgd2UndmUgZW5kZWQsIHRoZW4gdGhlcmUncyBubyBwb2ludCwgYW5kIGlmIHdlJ3JlIGFscmVhZHkKICAvLyByZWFkaW5nLCB0aGVuIGl0J3MgdW5uZWNlc3NhcnkuCiAgaWYgKHN0YXRlLmVuZGVkIHx8IHN0YXRlLnJlYWRpbmcpIHsKICAgIGRvUmVhZCA9IGZhbHNlOwogICAgZGVidWcoJ3JlYWRpbmcgb3IgZW5kZWQnLCBkb1JlYWQpOwogIH0gZWxzZSBpZiAoZG9SZWFkKSB7CiAgICBkZWJ1ZygnZG8gcmVhZCcpOwogICAgc3RhdGUucmVhZGluZyA9IHRydWU7CiAgICBzdGF0ZS5zeW5jID0gdHJ1ZTsKICAgIC8vIGlmIHRoZSBsZW5ndGggaXMgY3VycmVudGx5IHplcm8sIHRoZW4gd2UgKm5lZWQqIGEgcmVhZGFibGUgZXZlbnQuCiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlOwogICAgLy8gY2FsbCBpbnRlcm5hbCByZWFkIG1ldGhvZAogICAgdGhpcy5fcmVhZChzdGF0ZS5oaWdoV2F0ZXJNYXJrKTsKICAgIHN0YXRlLnN5bmMgPSBmYWxzZTsKICAgIC8vIElmIF9yZWFkIHB1c2hlZCBkYXRhIHN5bmNocm9ub3VzbHksIHRoZW4gYHJlYWRpbmdgIHdpbGwgYmUgZmFsc2UsCiAgICAvLyBhbmQgd2UgbmVlZCB0byByZS1ldmFsdWF0ZSBob3cgbXVjaCBkYXRhIHdlIGNhbiByZXR1cm4gdG8gdGhlIHVzZXIuCiAgICBpZiAoIXN0YXRlLnJlYWRpbmcpIG4gPSBob3dNdWNoVG9SZWFkKG5PcmlnLCBzdGF0ZSk7CiAgfQoKICB2YXIgcmV0OwogIGlmIChuID4gMCkgcmV0ID0gZnJvbUxpc3Qobiwgc3RhdGUpO2Vsc2UgcmV0ID0gbnVsbDsKCiAgaWYgKHJldCA9PT0gbnVsbCkgewogICAgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTsKICAgIG4gPSAwOwogIH0gZWxzZSB7CiAgICBzdGF0ZS5sZW5ndGggLT0gbjsKICB9CgogIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHsKICAgIC8vIElmIHdlIGhhdmUgbm90aGluZyBpbiB0aGUgYnVmZmVyLCB0aGVuIHdlIHdhbnQgdG8ga25vdwogICAgLy8gYXMgc29vbiBhcyB3ZSAqZG8qIGdldCBzb21ldGhpbmcgaW50byB0aGUgYnVmZmVyLgogICAgaWYgKCFzdGF0ZS5lbmRlZCkgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTsKCiAgICAvLyBJZiB3ZSB0cmllZCB0byByZWFkKCkgcGFzdCB0aGUgRU9GLCB0aGVuIGVtaXQgZW5kIG9uIHRoZSBuZXh0IHRpY2suCiAgICBpZiAobk9yaWcgIT09IG4gJiYgc3RhdGUuZW5kZWQpIGVuZFJlYWRhYmxlKHRoaXMpOwogIH0KCiAgaWYgKHJldCAhPT0gbnVsbCkgdGhpcy5lbWl0KCdkYXRhJywgcmV0KTsKCiAgcmV0dXJuIHJldDsKfTsKCmZ1bmN0aW9uIG9uRW9mQ2h1bmsoc3RyZWFtLCBzdGF0ZSkgewogIGlmIChzdGF0ZS5lbmRlZCkgcmV0dXJuOwogIGlmIChzdGF0ZS5kZWNvZGVyKSB7CiAgICB2YXIgY2h1bmsgPSBzdGF0ZS5kZWNvZGVyLmVuZCgpOwogICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkgewogICAgICBzdGF0ZS5idWZmZXIucHVzaChjaHVuayk7CiAgICAgIHN0YXRlLmxlbmd0aCArPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDsKICAgIH0KICB9CiAgc3RhdGUuZW5kZWQgPSB0cnVlOwoKICAvLyBlbWl0ICdyZWFkYWJsZScgbm93IHRvIG1ha2Ugc3VyZSBpdCBnZXRzIHBpY2tlZCB1cC4KICBlbWl0UmVhZGFibGUoc3RyZWFtKTsKfQoKLy8gRG9uJ3QgZW1pdCByZWFkYWJsZSByaWdodCBhd2F5IGluIHN5bmMgbW9kZSwgYmVjYXVzZSB0aGlzIGNhbiB0cmlnZ2VyCi8vIGFub3RoZXIgcmVhZCgpIGNhbGwgPT4gc3RhY2sgb3ZlcmZsb3cuICBUaGlzIHdheSwgaXQgbWlnaHQgdHJpZ2dlcgovLyBhIG5leHRUaWNrIHJlY3Vyc2lvbiB3YXJuaW5nLCBidXQgdGhhdCdzIG5vdCBzbyBiYWQuCmZ1bmN0aW9uIGVtaXRSZWFkYWJsZShzdHJlYW0pIHsKICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7CiAgc3RhdGUubmVlZFJlYWRhYmxlID0gZmFsc2U7CiAgaWYgKCFzdGF0ZS5lbWl0dGVkUmVhZGFibGUpIHsKICAgIGRlYnVnKCdlbWl0UmVhZGFibGUnLCBzdGF0ZS5mbG93aW5nKTsKICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IHRydWU7CiAgICBpZiAoc3RhdGUuc3luYykgcHJvY2Vzc05leHRUaWNrKGVtaXRSZWFkYWJsZV8sIHN0cmVhbSk7ZWxzZSBlbWl0UmVhZGFibGVfKHN0cmVhbSk7CiAgfQp9CgpmdW5jdGlvbiBlbWl0UmVhZGFibGVfKHN0cmVhbSkgewogIGRlYnVnKCdlbWl0IHJlYWRhYmxlJyk7CiAgc3RyZWFtLmVtaXQoJ3JlYWRhYmxlJyk7CiAgZmxvdyhzdHJlYW0pOwp9CgovLyBhdCB0aGlzIHBvaW50LCB0aGUgdXNlciBoYXMgcHJlc3VtYWJseSBzZWVuIHRoZSAncmVhZGFibGUnIGV2ZW50LAovLyBhbmQgY2FsbGVkIHJlYWQoKSB0byBjb25zdW1lIHNvbWUgZGF0YS4gIHRoYXQgbWF5IGhhdmUgdHJpZ2dlcmVkCi8vIGluIHR1cm4gYW5vdGhlciBfcmVhZChuKSBjYWxsLCBpbiB3aGljaCBjYXNlIHJlYWRpbmcgPSB0cnVlIGlmCi8vIGl0J3MgaW4gcHJvZ3Jlc3MuCi8vIEhvd2V2ZXIsIGlmIHdlJ3JlIG5vdCBlbmRlZCwgb3IgcmVhZGluZywgYW5kIHRoZSBsZW5ndGggPCBod20sCi8vIHRoZW4gZ28gYWhlYWQgYW5kIHRyeSB0byByZWFkIHNvbWUgbW9yZSBwcmVlbXB0aXZlbHkuCmZ1bmN0aW9uIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSkgewogIGlmICghc3RhdGUucmVhZGluZ01vcmUpIHsKICAgIHN0YXRlLnJlYWRpbmdNb3JlID0gdHJ1ZTsKICAgIHByb2Nlc3NOZXh0VGljayhtYXliZVJlYWRNb3JlXywgc3RyZWFtLCBzdGF0ZSk7CiAgfQp9CgpmdW5jdGlvbiBtYXliZVJlYWRNb3JlXyhzdHJlYW0sIHN0YXRlKSB7CiAgdmFyIGxlbiA9IHN0YXRlLmxlbmd0aDsKICB3aGlsZSAoIXN0YXRlLnJlYWRpbmcgJiYgIXN0YXRlLmZsb3dpbmcgJiYgIXN0YXRlLmVuZGVkICYmIHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmspIHsKICAgIGRlYnVnKCdtYXliZVJlYWRNb3JlIHJlYWQgMCcpOwogICAgc3RyZWFtLnJlYWQoMCk7CiAgICBpZiAobGVuID09PSBzdGF0ZS5sZW5ndGgpCiAgICAgIC8vIGRpZG4ndCBnZXQgYW55IGRhdGEsIHN0b3Agc3Bpbm5pbmcuCiAgICAgIGJyZWFrO2Vsc2UgbGVuID0gc3RhdGUubGVuZ3RoOwogIH0KICBzdGF0ZS5yZWFkaW5nTW9yZSA9IGZhbHNlOwp9CgovLyBhYnN0cmFjdCBtZXRob2QuICB0byBiZSBvdmVycmlkZGVuIGluIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuCi8vIGNhbGwgY2IoZXIsIGRhdGEpIHdoZXJlIGRhdGEgaXMgPD0gbiBpbiBsZW5ndGguCi8vIGZvciB2aXJ0dWFsIChub24tc3RyaW5nLCBub24tYnVmZmVyKSBzdHJlYW1zLCAibGVuZ3RoIiBpcyBzb21ld2hhdAovLyBhcmJpdHJhcnksIGFuZCBwZXJoYXBzIG5vdCB2ZXJ5IG1lYW5pbmdmdWwuClJlYWRhYmxlLnByb3RvdHlwZS5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7CiAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignX3JlYWQoKSBpcyBub3QgaW1wbGVtZW50ZWQnKSk7Cn07CgpSZWFkYWJsZS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uIChkZXN0LCBwaXBlT3B0cykgewogIHZhciBzcmMgPSB0aGlzOwogIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7CgogIHN3aXRjaCAoc3RhdGUucGlwZXNDb3VudCkgewogICAgY2FzZSAwOgogICAgICBzdGF0ZS5waXBlcyA9IGRlc3Q7CiAgICAgIGJyZWFrOwogICAgY2FzZSAxOgogICAgICBzdGF0ZS5waXBlcyA9IFtzdGF0ZS5waXBlcywgZGVzdF07CiAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICAgc3RhdGUucGlwZXMucHVzaChkZXN0KTsKICAgICAgYnJlYWs7CiAgfQogIHN0YXRlLnBpcGVzQ291bnQgKz0gMTsKICBkZWJ1ZygncGlwZSBjb3VudD0lZCBvcHRzPSVqJywgc3RhdGUucGlwZXNDb3VudCwgcGlwZU9wdHMpOwoKICB2YXIgZG9FbmQgPSAoIXBpcGVPcHRzIHx8IHBpcGVPcHRzLmVuZCAhPT0gZmFsc2UpICYmIGRlc3QgIT09IHByb2Nlc3Muc3Rkb3V0ICYmIGRlc3QgIT09IHByb2Nlc3Muc3RkZXJyOwoKICB2YXIgZW5kRm4gPSBkb0VuZCA/IG9uZW5kIDogdW5waXBlOwogIGlmIChzdGF0ZS5lbmRFbWl0dGVkKSBwcm9jZXNzTmV4dFRpY2soZW5kRm4pO2Vsc2Ugc3JjLm9uY2UoJ2VuZCcsIGVuZEZuKTsKCiAgZGVzdC5vbigndW5waXBlJywgb251bnBpcGUpOwogIGZ1bmN0aW9uIG9udW5waXBlKHJlYWRhYmxlLCB1bnBpcGVJbmZvKSB7CiAgICBkZWJ1Zygnb251bnBpcGUnKTsKICAgIGlmIChyZWFkYWJsZSA9PT0gc3JjKSB7CiAgICAgIGlmICh1bnBpcGVJbmZvICYmIHVucGlwZUluZm8uaGFzVW5waXBlZCA9PT0gZmFsc2UpIHsKICAgICAgICB1bnBpcGVJbmZvLmhhc1VucGlwZWQgPSB0cnVlOwogICAgICAgIGNsZWFudXAoKTsKICAgICAgfQogICAgfQogIH0KCiAgZnVuY3Rpb24gb25lbmQoKSB7CiAgICBkZWJ1Zygnb25lbmQnKTsKICAgIGRlc3QuZW5kKCk7CiAgfQoKICAvLyB3aGVuIHRoZSBkZXN0IGRyYWlucywgaXQgcmVkdWNlcyB0aGUgYXdhaXREcmFpbiBjb3VudGVyCiAgLy8gb24gdGhlIHNvdXJjZS4gIFRoaXMgd291bGQgYmUgbW9yZSBlbGVnYW50IHdpdGggYSAub25jZSgpCiAgLy8gaGFuZGxlciBpbiBmbG93KCksIGJ1dCBhZGRpbmcgYW5kIHJlbW92aW5nIHJlcGVhdGVkbHkgaXMKICAvLyB0b28gc2xvdy4KICB2YXIgb25kcmFpbiA9IHBpcGVPbkRyYWluKHNyYyk7CiAgZGVzdC5vbignZHJhaW4nLCBvbmRyYWluKTsKCiAgdmFyIGNsZWFuZWRVcCA9IGZhbHNlOwogIGZ1bmN0aW9uIGNsZWFudXAoKSB7CiAgICBkZWJ1ZygnY2xlYW51cCcpOwogICAgLy8gY2xlYW51cCBldmVudCBoYW5kbGVycyBvbmNlIHRoZSBwaXBlIGlzIGJyb2tlbgogICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTsKICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKTsKICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2RyYWluJywgb25kcmFpbik7CiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpOwogICAgZGVzdC5yZW1vdmVMaXN0ZW5lcigndW5waXBlJywgb251bnBpcGUpOwogICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZCk7CiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIHVucGlwZSk7CiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvbmRhdGEpOwoKICAgIGNsZWFuZWRVcCA9IHRydWU7CgogICAgLy8gaWYgdGhlIHJlYWRlciBpcyB3YWl0aW5nIGZvciBhIGRyYWluIGV2ZW50IGZyb20gdGhpcwogICAgLy8gc3BlY2lmaWMgd3JpdGVyLCB0aGVuIGl0IHdvdWxkIGNhdXNlIGl0IHRvIG5ldmVyIHN0YXJ0CiAgICAvLyBmbG93aW5nIGFnYWluLgogICAgLy8gU28sIGlmIHRoaXMgaXMgYXdhaXRpbmcgYSBkcmFpbiwgdGhlbiB3ZSBqdXN0IGNhbGwgaXQgbm93LgogICAgLy8gSWYgd2UgZG9uJ3Qga25vdywgdGhlbiBhc3N1bWUgdGhhdCB3ZSBhcmUgd2FpdGluZyBmb3Igb25lLgogICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4gJiYgKCFkZXN0Ll93cml0YWJsZVN0YXRlIHx8IGRlc3QuX3dyaXRhYmxlU3RhdGUubmVlZERyYWluKSkgb25kcmFpbigpOwogIH0KCiAgLy8gSWYgdGhlIHVzZXIgcHVzaGVzIG1vcmUgZGF0YSB3aGlsZSB3ZSdyZSB3cml0aW5nIHRvIGRlc3QgdGhlbiB3ZSdsbCBlbmQgdXAKICAvLyBpbiBvbmRhdGEgYWdhaW4uIEhvd2V2ZXIsIHdlIG9ubHkgd2FudCB0byBpbmNyZWFzZSBhd2FpdERyYWluIG9uY2UgYmVjYXVzZQogIC8vIGRlc3Qgd2lsbCBvbmx5IGVtaXQgb25lICdkcmFpbicgZXZlbnQgZm9yIHRoZSBtdWx0aXBsZSB3cml0ZXMuCiAgLy8gPT4gSW50cm9kdWNlIGEgZ3VhcmQgb24gaW5jcmVhc2luZyBhd2FpdERyYWluLgogIHZhciBpbmNyZWFzZWRBd2FpdERyYWluID0gZmFsc2U7CiAgc3JjLm9uKCdkYXRhJywgb25kYXRhKTsKICBmdW5jdGlvbiBvbmRhdGEoY2h1bmspIHsKICAgIGRlYnVnKCdvbmRhdGEnKTsKICAgIGluY3JlYXNlZEF3YWl0RHJhaW4gPSBmYWxzZTsKICAgIHZhciByZXQgPSBkZXN0LndyaXRlKGNodW5rKTsKICAgIGlmIChmYWxzZSA9PT0gcmV0ICYmICFpbmNyZWFzZWRBd2FpdERyYWluKSB7CiAgICAgIC8vIElmIHRoZSB1c2VyIHVucGlwZWQgZHVyaW5nIGBkZXN0LndyaXRlKClgLCBpdCBpcyBwb3NzaWJsZQogICAgICAvLyB0byBnZXQgc3R1Y2sgaW4gYSBwZXJtYW5lbnRseSBwYXVzZWQgc3RhdGUgaWYgdGhhdCB3cml0ZQogICAgICAvLyBhbHNvIHJldHVybmVkIGZhbHNlLgogICAgICAvLyA9PiBDaGVjayB3aGV0aGVyIGBkZXN0YCBpcyBzdGlsbCBhIHBpcGluZyBkZXN0aW5hdGlvbi4KICAgICAgaWYgKChzdGF0ZS5waXBlc0NvdW50ID09PSAxICYmIHN0YXRlLnBpcGVzID09PSBkZXN0IHx8IHN0YXRlLnBpcGVzQ291bnQgPiAxICYmIGluZGV4T2Yoc3RhdGUucGlwZXMsIGRlc3QpICE9PSAtMSkgJiYgIWNsZWFuZWRVcCkgewogICAgICAgIGRlYnVnKCdmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2UnLCBzcmMuX3JlYWRhYmxlU3RhdGUuYXdhaXREcmFpbik7CiAgICAgICAgc3JjLl9yZWFkYWJsZVN0YXRlLmF3YWl0RHJhaW4rKzsKICAgICAgICBpbmNyZWFzZWRBd2FpdERyYWluID0gdHJ1ZTsKICAgICAgfQogICAgICBzcmMucGF1c2UoKTsKICAgIH0KICB9CgogIC8vIGlmIHRoZSBkZXN0IGhhcyBhbiBlcnJvciwgdGhlbiBzdG9wIHBpcGluZyBpbnRvIGl0LgogIC8vIGhvd2V2ZXIsIGRvbid0IHN1cHByZXNzIHRoZSB0aHJvd2luZyBiZWhhdmlvciBmb3IgdGhpcy4KICBmdW5jdGlvbiBvbmVycm9yKGVyKSB7CiAgICBkZWJ1Zygnb25lcnJvcicsIGVyKTsKICAgIHVucGlwZSgpOwogICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTsKICAgIGlmIChFRWxpc3RlbmVyQ291bnQoZGVzdCwgJ2Vycm9yJykgPT09IDApIGRlc3QuZW1pdCgnZXJyb3InLCBlcik7CiAgfQoKICAvLyBNYWtlIHN1cmUgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIHVzZXJsYW5kIG9uZXMuCiAgcHJlcGVuZExpc3RlbmVyKGRlc3QsICdlcnJvcicsIG9uZXJyb3IpOwoKICAvLyBCb3RoIGNsb3NlIGFuZCBmaW5pc2ggc2hvdWxkIHRyaWdnZXIgdW5waXBlLCBidXQgb25seSBvbmNlLgogIGZ1bmN0aW9uIG9uY2xvc2UoKSB7CiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7CiAgICB1bnBpcGUoKTsKICB9CiAgZGVzdC5vbmNlKCdjbG9zZScsIG9uY2xvc2UpOwogIGZ1bmN0aW9uIG9uZmluaXNoKCkgewogICAgZGVidWcoJ29uZmluaXNoJyk7CiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpOwogICAgdW5waXBlKCk7CiAgfQogIGRlc3Qub25jZSgnZmluaXNoJywgb25maW5pc2gpOwoKICBmdW5jdGlvbiB1bnBpcGUoKSB7CiAgICBkZWJ1ZygndW5waXBlJyk7CiAgICBzcmMudW5waXBlKGRlc3QpOwogIH0KCiAgLy8gdGVsbCB0aGUgZGVzdCB0aGF0IGl0J3MgYmVpbmcgcGlwZWQgdG8KICBkZXN0LmVtaXQoJ3BpcGUnLCBzcmMpOwoKICAvLyBzdGFydCB0aGUgZmxvdyBpZiBpdCBoYXNuJ3QgYmVlbiBzdGFydGVkIGFscmVhZHkuCiAgaWYgKCFzdGF0ZS5mbG93aW5nKSB7CiAgICBkZWJ1ZygncGlwZSByZXN1bWUnKTsKICAgIHNyYy5yZXN1bWUoKTsKICB9CgogIHJldHVybiBkZXN0Owp9OwoKZnVuY3Rpb24gcGlwZU9uRHJhaW4oc3JjKSB7CiAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKICAgIHZhciBzdGF0ZSA9IHNyYy5fcmVhZGFibGVTdGF0ZTsKICAgIGRlYnVnKCdwaXBlT25EcmFpbicsIHN0YXRlLmF3YWl0RHJhaW4pOwogICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4pIHN0YXRlLmF3YWl0RHJhaW4tLTsKICAgIGlmIChzdGF0ZS5hd2FpdERyYWluID09PSAwICYmIEVFbGlzdGVuZXJDb3VudChzcmMsICdkYXRhJykpIHsKICAgICAgc3RhdGUuZmxvd2luZyA9IHRydWU7CiAgICAgIGZsb3coc3JjKTsKICAgIH0KICB9Owp9CgpSZWFkYWJsZS5wcm90b3R5cGUudW5waXBlID0gZnVuY3Rpb24gKGRlc3QpIHsKICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlOwogIHZhciB1bnBpcGVJbmZvID0geyBoYXNVbnBpcGVkOiBmYWxzZSB9OwoKICAvLyBpZiB3ZSdyZSBub3QgcGlwaW5nIGFueXdoZXJlLCB0aGVuIGRvIG5vdGhpbmcuCiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDApIHJldHVybiB0aGlzOwoKICAvLyBqdXN0IG9uZSBkZXN0aW5hdGlvbi4gIG1vc3QgY29tbW9uIGNhc2UuCiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDEpIHsKICAgIC8vIHBhc3NlZCBpbiBvbmUsIGJ1dCBpdCdzIG5vdCB0aGUgcmlnaHQgb25lLgogICAgaWYgKGRlc3QgJiYgZGVzdCAhPT0gc3RhdGUucGlwZXMpIHJldHVybiB0aGlzOwoKICAgIGlmICghZGVzdCkgZGVzdCA9IHN0YXRlLnBpcGVzOwoKICAgIC8vIGdvdCBhIG1hdGNoLgogICAgc3RhdGUucGlwZXMgPSBudWxsOwogICAgc3RhdGUucGlwZXNDb3VudCA9IDA7CiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7CiAgICBpZiAoZGVzdCkgZGVzdC5lbWl0KCd1bnBpcGUnLCB0aGlzLCB1bnBpcGVJbmZvKTsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLy8gc2xvdyBjYXNlLiBtdWx0aXBsZSBwaXBlIGRlc3RpbmF0aW9ucy4KCiAgaWYgKCFkZXN0KSB7CiAgICAvLyByZW1vdmUgYWxsLgogICAgdmFyIGRlc3RzID0gc3RhdGUucGlwZXM7CiAgICB2YXIgbGVuID0gc3RhdGUucGlwZXNDb3VudDsKICAgIHN0YXRlLnBpcGVzID0gbnVsbDsKICAgIHN0YXRlLnBpcGVzQ291bnQgPSAwOwogICAgc3RhdGUuZmxvd2luZyA9IGZhbHNlOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgZGVzdHNbaV0uZW1pdCgndW5waXBlJywgdGhpcywgdW5waXBlSW5mbyk7CiAgICB9cmV0dXJuIHRoaXM7CiAgfQoKICAvLyB0cnkgdG8gZmluZCB0aGUgcmlnaHQgb25lLgogIHZhciBpbmRleCA9IGluZGV4T2Yoc3RhdGUucGlwZXMsIGRlc3QpOwogIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiB0aGlzOwoKICBzdGF0ZS5waXBlcy5zcGxpY2UoaW5kZXgsIDEpOwogIHN0YXRlLnBpcGVzQ291bnQgLT0gMTsKICBpZiAoc3RhdGUucGlwZXNDb3VudCA9PT0gMSkgc3RhdGUucGlwZXMgPSBzdGF0ZS5waXBlc1swXTsKCiAgZGVzdC5lbWl0KCd1bnBpcGUnLCB0aGlzLCB1bnBpcGVJbmZvKTsKCiAgcmV0dXJuIHRoaXM7Cn07CgovLyBzZXQgdXAgZGF0YSBldmVudHMgaWYgdGhleSBhcmUgYXNrZWQgZm9yCi8vIEVuc3VyZSByZWFkYWJsZSBsaXN0ZW5lcnMgZXZlbnR1YWxseSBnZXQgc29tZXRoaW5nClJlYWRhYmxlLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uIChldiwgZm4pIHsKICB2YXIgcmVzID0gU3RyZWFtLnByb3RvdHlwZS5vbi5jYWxsKHRoaXMsIGV2LCBmbik7CgogIGlmIChldiA9PT0gJ2RhdGEnKSB7CiAgICAvLyBTdGFydCBmbG93aW5nIG9uIG5leHQgdGljayBpZiBzdHJlYW0gaXNuJ3QgZXhwbGljaXRseSBwYXVzZWQKICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgIT09IGZhbHNlKSB0aGlzLnJlc3VtZSgpOwogIH0gZWxzZSBpZiAoZXYgPT09ICdyZWFkYWJsZScpIHsKICAgIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7CiAgICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQgJiYgIXN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nKSB7CiAgICAgIHN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nID0gc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTsKICAgICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7CiAgICAgIGlmICghc3RhdGUucmVhZGluZykgewogICAgICAgIHByb2Nlc3NOZXh0VGljayhuUmVhZGluZ05leHRUaWNrLCB0aGlzKTsKICAgICAgfSBlbHNlIGlmIChzdGF0ZS5sZW5ndGgpIHsKICAgICAgICBlbWl0UmVhZGFibGUodGhpcyk7CiAgICAgIH0KICAgIH0KICB9CgogIHJldHVybiByZXM7Cn07ClJlYWRhYmxlLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IFJlYWRhYmxlLnByb3RvdHlwZS5vbjsKCmZ1bmN0aW9uIG5SZWFkaW5nTmV4dFRpY2soc2VsZikgewogIGRlYnVnKCdyZWFkYWJsZSBuZXh0dGljayByZWFkIDAnKTsKICBzZWxmLnJlYWQoMCk7Cn0KCi8vIHBhdXNlKCkgYW5kIHJlc3VtZSgpIGFyZSByZW1uYW50cyBvZiB0aGUgbGVnYWN5IHJlYWRhYmxlIHN0cmVhbSBBUEkKLy8gSWYgdGhlIHVzZXIgdXNlcyB0aGVtLCB0aGVuIHN3aXRjaCBpbnRvIG9sZCBtb2RlLgpSZWFkYWJsZS5wcm90b3R5cGUucmVzdW1lID0gZnVuY3Rpb24gKCkgewogIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7CiAgaWYgKCFzdGF0ZS5mbG93aW5nKSB7CiAgICBkZWJ1ZygncmVzdW1lJyk7CiAgICBzdGF0ZS5mbG93aW5nID0gdHJ1ZTsKICAgIHJlc3VtZSh0aGlzLCBzdGF0ZSk7CiAgfQogIHJldHVybiB0aGlzOwp9OwoKZnVuY3Rpb24gcmVzdW1lKHN0cmVhbSwgc3RhdGUpIHsKICBpZiAoIXN0YXRlLnJlc3VtZVNjaGVkdWxlZCkgewogICAgc3RhdGUucmVzdW1lU2NoZWR1bGVkID0gdHJ1ZTsKICAgIHByb2Nlc3NOZXh0VGljayhyZXN1bWVfLCBzdHJlYW0sIHN0YXRlKTsKICB9Cn0KCmZ1bmN0aW9uIHJlc3VtZV8oc3RyZWFtLCBzdGF0ZSkgewogIGlmICghc3RhdGUucmVhZGluZykgewogICAgZGVidWcoJ3Jlc3VtZSByZWFkIDAnKTsKICAgIHN0cmVhbS5yZWFkKDApOwogIH0KCiAgc3RhdGUucmVzdW1lU2NoZWR1bGVkID0gZmFsc2U7CiAgc3RhdGUuYXdhaXREcmFpbiA9IDA7CiAgc3RyZWFtLmVtaXQoJ3Jlc3VtZScpOwogIGZsb3coc3RyZWFtKTsKICBpZiAoc3RhdGUuZmxvd2luZyAmJiAhc3RhdGUucmVhZGluZykgc3RyZWFtLnJlYWQoMCk7Cn0KClJlYWRhYmxlLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uICgpIHsKICBkZWJ1ZygnY2FsbCBwYXVzZSBmbG93aW5nPSVqJywgdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKTsKICBpZiAoZmFsc2UgIT09IHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZykgewogICAgZGVidWcoJ3BhdXNlJyk7CiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgPSBmYWxzZTsKICAgIHRoaXMuZW1pdCgncGF1c2UnKTsKICB9CiAgcmV0dXJuIHRoaXM7Cn07CgpmdW5jdGlvbiBmbG93KHN0cmVhbSkgewogIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTsKICBkZWJ1ZygnZmxvdycsIHN0YXRlLmZsb3dpbmcpOwogIHdoaWxlIChzdGF0ZS5mbG93aW5nICYmIHN0cmVhbS5yZWFkKCkgIT09IG51bGwpIHt9Cn0KCi8vIHdyYXAgYW4gb2xkLXN0eWxlIHN0cmVhbSBhcyB0aGUgYXN5bmMgZGF0YSBzb3VyY2UuCi8vIFRoaXMgaXMgKm5vdCogcGFydCBvZiB0aGUgcmVhZGFibGUgc3RyZWFtIGludGVyZmFjZS4KLy8gSXQgaXMgYW4gdWdseSB1bmZvcnR1bmF0ZSBtZXNzIG9mIGhpc3RvcnkuClJlYWRhYmxlLnByb3RvdHlwZS53cmFwID0gZnVuY3Rpb24gKHN0cmVhbSkgewogIHZhciBfdGhpcyA9IHRoaXM7CgogIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7CiAgdmFyIHBhdXNlZCA9IGZhbHNlOwoKICBzdHJlYW0ub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHsKICAgIGRlYnVnKCd3cmFwcGVkIGVuZCcpOwogICAgaWYgKHN0YXRlLmRlY29kZXIgJiYgIXN0YXRlLmVuZGVkKSB7CiAgICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7CiAgICAgIGlmIChjaHVuayAmJiBjaHVuay5sZW5ndGgpIF90aGlzLnB1c2goY2h1bmspOwogICAgfQoKICAgIF90aGlzLnB1c2gobnVsbCk7CiAgfSk7CgogIHN0cmVhbS5vbignZGF0YScsIGZ1bmN0aW9uIChjaHVuaykgewogICAgZGVidWcoJ3dyYXBwZWQgZGF0YScpOwogICAgaWYgKHN0YXRlLmRlY29kZXIpIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7CgogICAgLy8gZG9uJ3Qgc2tpcCBvdmVyIGZhbHN5IHZhbHVlcyBpbiBvYmplY3RNb2RlCiAgICBpZiAoc3RhdGUub2JqZWN0TW9kZSAmJiAoY2h1bmsgPT09IG51bGwgfHwgY2h1bmsgPT09IHVuZGVmaW5lZCkpIHJldHVybjtlbHNlIGlmICghc3RhdGUub2JqZWN0TW9kZSAmJiAoIWNodW5rIHx8ICFjaHVuay5sZW5ndGgpKSByZXR1cm47CgogICAgdmFyIHJldCA9IF90aGlzLnB1c2goY2h1bmspOwogICAgaWYgKCFyZXQpIHsKICAgICAgcGF1c2VkID0gdHJ1ZTsKICAgICAgc3RyZWFtLnBhdXNlKCk7CiAgICB9CiAgfSk7CgogIC8vIHByb3h5IGFsbCB0aGUgb3RoZXIgbWV0aG9kcy4KICAvLyBpbXBvcnRhbnQgd2hlbiB3cmFwcGluZyBmaWx0ZXJzIGFuZCBkdXBsZXhlcy4KICBmb3IgKHZhciBpIGluIHN0cmVhbSkgewogICAgaWYgKHRoaXNbaV0gPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygc3RyZWFtW2ldID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIHRoaXNbaV0gPSBmdW5jdGlvbiAobWV0aG9kKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHJldHVybiBzdHJlYW1bbWV0aG9kXS5hcHBseShzdHJlYW0sIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfShpKTsKICAgIH0KICB9CgogIC8vIHByb3h5IGNlcnRhaW4gaW1wb3J0YW50IGV2ZW50cy4KICBmb3IgKHZhciBuID0gMDsgbiA8IGtQcm94eUV2ZW50cy5sZW5ndGg7IG4rKykgewogICAgc3RyZWFtLm9uKGtQcm94eUV2ZW50c1tuXSwgdGhpcy5lbWl0LmJpbmQodGhpcywga1Byb3h5RXZlbnRzW25dKSk7CiAgfQoKICAvLyB3aGVuIHdlIHRyeSB0byBjb25zdW1lIHNvbWUgbW9yZSBieXRlcywgc2ltcGx5IHVucGF1c2UgdGhlCiAgLy8gdW5kZXJseWluZyBzdHJlYW0uCiAgdGhpcy5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7CiAgICBkZWJ1Zygnd3JhcHBlZCBfcmVhZCcsIG4pOwogICAgaWYgKHBhdXNlZCkgewogICAgICBwYXVzZWQgPSBmYWxzZTsKICAgICAgc3RyZWFtLnJlc3VtZSgpOwogICAgfQogIH07CgogIHJldHVybiB0aGlzOwp9OwoKLy8gZXhwb3NlZCBmb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5LgpSZWFkYWJsZS5fZnJvbUxpc3QgPSBmcm9tTGlzdDsKCi8vIFBsdWNrIG9mZiBuIGJ5dGVzIGZyb20gYW4gYXJyYXkgb2YgYnVmZmVycy4KLy8gTGVuZ3RoIGlzIHRoZSBjb21iaW5lZCBsZW5ndGhzIG9mIGFsbCB0aGUgYnVmZmVycyBpbiB0aGUgbGlzdC4KLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmcKLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS4KZnVuY3Rpb24gZnJvbUxpc3Qobiwgc3RhdGUpIHsKICAvLyBub3RoaW5nIGJ1ZmZlcmVkCiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7CgogIHZhciByZXQ7CiAgaWYgKHN0YXRlLm9iamVjdE1vZGUpIHJldCA9IHN0YXRlLmJ1ZmZlci5zaGlmdCgpO2Vsc2UgaWYgKCFuIHx8IG4gPj0gc3RhdGUubGVuZ3RoKSB7CiAgICAvLyByZWFkIGl0IGFsbCwgdHJ1bmNhdGUgdGhlIGxpc3QKICAgIGlmIChzdGF0ZS5kZWNvZGVyKSByZXQgPSBzdGF0ZS5idWZmZXIuam9pbignJyk7ZWxzZSBpZiAoc3RhdGUuYnVmZmVyLmxlbmd0aCA9PT0gMSkgcmV0ID0gc3RhdGUuYnVmZmVyLmhlYWQuZGF0YTtlbHNlIHJldCA9IHN0YXRlLmJ1ZmZlci5jb25jYXQoc3RhdGUubGVuZ3RoKTsKICAgIHN0YXRlLmJ1ZmZlci5jbGVhcigpOwogIH0gZWxzZSB7CiAgICAvLyByZWFkIHBhcnQgb2YgbGlzdAogICAgcmV0ID0gZnJvbUxpc3RQYXJ0aWFsKG4sIHN0YXRlLmJ1ZmZlciwgc3RhdGUuZGVjb2Rlcik7CiAgfQoKICByZXR1cm4gcmV0Owp9CgovLyBFeHRyYWN0cyBvbmx5IGVub3VnaCBidWZmZXJlZCBkYXRhIHRvIHNhdGlzZnkgdGhlIGFtb3VudCByZXF1ZXN0ZWQuCi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nCi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuCmZ1bmN0aW9uIGZyb21MaXN0UGFydGlhbChuLCBsaXN0LCBoYXNTdHJpbmdzKSB7CiAgdmFyIHJldDsKICBpZiAobiA8IGxpc3QuaGVhZC5kYXRhLmxlbmd0aCkgewogICAgLy8gc2xpY2UgaXMgdGhlIHNhbWUgZm9yIGJ1ZmZlcnMgYW5kIHN0cmluZ3MKICAgIHJldCA9IGxpc3QuaGVhZC5kYXRhLnNsaWNlKDAsIG4pOwogICAgbGlzdC5oZWFkLmRhdGEgPSBsaXN0LmhlYWQuZGF0YS5zbGljZShuKTsKICB9IGVsc2UgaWYgKG4gPT09IGxpc3QuaGVhZC5kYXRhLmxlbmd0aCkgewogICAgLy8gZmlyc3QgY2h1bmsgaXMgYSBwZXJmZWN0IG1hdGNoCiAgICByZXQgPSBsaXN0LnNoaWZ0KCk7CiAgfSBlbHNlIHsKICAgIC8vIHJlc3VsdCBzcGFucyBtb3JlIHRoYW4gb25lIGJ1ZmZlcgogICAgcmV0ID0gaGFzU3RyaW5ncyA/IGNvcHlGcm9tQnVmZmVyU3RyaW5nKG4sIGxpc3QpIDogY29weUZyb21CdWZmZXIobiwgbGlzdCk7CiAgfQogIHJldHVybiByZXQ7Cn0KCi8vIENvcGllcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgY2hhcmFjdGVycyBmcm9tIHRoZSBsaXN0IG9mIGJ1ZmZlcmVkIGRhdGEKLy8gY2h1bmtzLgovLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZwovLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LgpmdW5jdGlvbiBjb3B5RnJvbUJ1ZmZlclN0cmluZyhuLCBsaXN0KSB7CiAgdmFyIHAgPSBsaXN0LmhlYWQ7CiAgdmFyIGMgPSAxOwogIHZhciByZXQgPSBwLmRhdGE7CiAgbiAtPSByZXQubGVuZ3RoOwogIHdoaWxlIChwID0gcC5uZXh0KSB7CiAgICB2YXIgc3RyID0gcC5kYXRhOwogICAgdmFyIG5iID0gbiA+IHN0ci5sZW5ndGggPyBzdHIubGVuZ3RoIDogbjsKICAgIGlmIChuYiA9PT0gc3RyLmxlbmd0aCkgcmV0ICs9IHN0cjtlbHNlIHJldCArPSBzdHIuc2xpY2UoMCwgbik7CiAgICBuIC09IG5iOwogICAgaWYgKG4gPT09IDApIHsKICAgICAgaWYgKG5iID09PSBzdHIubGVuZ3RoKSB7CiAgICAgICAgKytjOwogICAgICAgIGlmIChwLm5leHQpIGxpc3QuaGVhZCA9IHAubmV4dDtlbHNlIGxpc3QuaGVhZCA9IGxpc3QudGFpbCA9IG51bGw7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbGlzdC5oZWFkID0gcDsKICAgICAgICBwLmRhdGEgPSBzdHIuc2xpY2UobmIpOwogICAgICB9CiAgICAgIGJyZWFrOwogICAgfQogICAgKytjOwogIH0KICBsaXN0Lmxlbmd0aCAtPSBjOwogIHJldHVybiByZXQ7Cn0KCi8vIENvcGllcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgYnl0ZXMgZnJvbSB0aGUgbGlzdCBvZiBidWZmZXJlZCBkYXRhIGNodW5rcy4KLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmcKLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS4KZnVuY3Rpb24gY29weUZyb21CdWZmZXIobiwgbGlzdCkgewogIHZhciByZXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUobik7CiAgdmFyIHAgPSBsaXN0LmhlYWQ7CiAgdmFyIGMgPSAxOwogIHAuZGF0YS5jb3B5KHJldCk7CiAgbiAtPSBwLmRhdGEubGVuZ3RoOwogIHdoaWxlIChwID0gcC5uZXh0KSB7CiAgICB2YXIgYnVmID0gcC5kYXRhOwogICAgdmFyIG5iID0gbiA+IGJ1Zi5sZW5ndGggPyBidWYubGVuZ3RoIDogbjsKICAgIGJ1Zi5jb3B5KHJldCwgcmV0Lmxlbmd0aCAtIG4sIDAsIG5iKTsKICAgIG4gLT0gbmI7CiAgICBpZiAobiA9PT0gMCkgewogICAgICBpZiAobmIgPT09IGJ1Zi5sZW5ndGgpIHsKICAgICAgICArK2M7CiAgICAgICAgaWYgKHAubmV4dCkgbGlzdC5oZWFkID0gcC5uZXh0O2Vsc2UgbGlzdC5oZWFkID0gbGlzdC50YWlsID0gbnVsbDsKICAgICAgfSBlbHNlIHsKICAgICAgICBsaXN0LmhlYWQgPSBwOwogICAgICAgIHAuZGF0YSA9IGJ1Zi5zbGljZShuYik7CiAgICAgIH0KICAgICAgYnJlYWs7CiAgICB9CiAgICArK2M7CiAgfQogIGxpc3QubGVuZ3RoIC09IGM7CiAgcmV0dXJuIHJldDsKfQoKZnVuY3Rpb24gZW5kUmVhZGFibGUoc3RyZWFtKSB7CiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlOwoKICAvLyBJZiB3ZSBnZXQgaGVyZSBiZWZvcmUgY29uc3VtaW5nIGFsbCB0aGUgYnl0ZXMsIHRoZW4gdGhhdCBpcyBhCiAgLy8gYnVnIGluIG5vZGUuICBTaG91bGQgbmV2ZXIgaGFwcGVuLgogIGlmIChzdGF0ZS5sZW5ndGggPiAwKSB0aHJvdyBuZXcgRXJyb3IoJyJlbmRSZWFkYWJsZSgpIiBjYWxsZWQgb24gbm9uLWVtcHR5IHN0cmVhbScpOwoKICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQpIHsKICAgIHN0YXRlLmVuZGVkID0gdHJ1ZTsKICAgIHByb2Nlc3NOZXh0VGljayhlbmRSZWFkYWJsZU5ULCBzdGF0ZSwgc3RyZWFtKTsKICB9Cn0KCmZ1bmN0aW9uIGVuZFJlYWRhYmxlTlQoc3RhdGUsIHN0cmVhbSkgewogIC8vIENoZWNrIHRoYXQgd2UgZGlkbid0IGdldCBvbmUgbGFzdCB1bnNoaWZ0LgogIGlmICghc3RhdGUuZW5kRW1pdHRlZCAmJiBzdGF0ZS5sZW5ndGggPT09IDApIHsKICAgIHN0YXRlLmVuZEVtaXR0ZWQgPSB0cnVlOwogICAgc3RyZWFtLnJlYWRhYmxlID0gZmFsc2U7CiAgICBzdHJlYW0uZW1pdCgnZW5kJyk7CiAgfQp9CgpmdW5jdGlvbiBmb3JFYWNoKHhzLCBmKSB7CiAgZm9yICh2YXIgaSA9IDAsIGwgPSB4cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKICAgIGYoeHNbaV0sIGkpOwogIH0KfQoKZnVuY3Rpb24gaW5kZXhPZih4cywgeCkgewogIGZvciAodmFyIGkgPSAwLCBsID0geHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CiAgICBpZiAoeHNbaV0gPT09IHgpIHJldHVybiBpOwogIH0KICByZXR1cm4gLTE7Cn0KLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oNyksIF9fd2VicGFja19yZXF1aXJlX18oMTEpKSkKCi8qKiovIH0pLAovKiA4NCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpLkV2ZW50RW1pdHRlcjsKCgovKioqLyB9KSwKLyogODUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKCi8qPHJlcGxhY2VtZW50PiovCgp2YXIgcHJvY2Vzc05leHRUaWNrID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMikubmV4dFRpY2s7Ci8qPC9yZXBsYWNlbWVudD4qLwoKLy8gdW5kb2N1bWVudGVkIGNiKCkgQVBJLCBuZWVkZWQgZm9yIGNvcmUsIG5vdCBmb3IgcHVibGljIEFQSQpmdW5jdGlvbiBkZXN0cm95KGVyciwgY2IpIHsKICB2YXIgX3RoaXMgPSB0aGlzOwoKICB2YXIgcmVhZGFibGVEZXN0cm95ZWQgPSB0aGlzLl9yZWFkYWJsZVN0YXRlICYmIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkOwogIHZhciB3cml0YWJsZURlc3Ryb3llZCA9IHRoaXMuX3dyaXRhYmxlU3RhdGUgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7CgogIGlmIChyZWFkYWJsZURlc3Ryb3llZCB8fCB3cml0YWJsZURlc3Ryb3llZCkgewogICAgaWYgKGNiKSB7CiAgICAgIGNiKGVycik7CiAgICB9IGVsc2UgaWYgKGVyciAmJiAoIXRoaXMuX3dyaXRhYmxlU3RhdGUgfHwgIXRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkKSkgewogICAgICBwcm9jZXNzTmV4dFRpY2soZW1pdEVycm9yTlQsIHRoaXMsIGVycik7CiAgICB9CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8vIHdlIHNldCBkZXN0cm95ZWQgdG8gdHJ1ZSBiZWZvcmUgZmlyaW5nIGVycm9yIGNhbGxiYWNrcyBpbiBvcmRlcgogIC8vIHRvIG1ha2UgaXQgcmUtZW50cmFuY2Ugc2FmZSBpbiBjYXNlIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2l0aGluIGNhbGxiYWNrcwoKICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSkgewogICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB0cnVlOwogIH0KCiAgLy8gaWYgdGhpcyBpcyBhIGR1cGxleCBzdHJlYW0gbWFyayB0aGUgd3JpdGFibGUgcGFydCBhcyBkZXN0cm95ZWQgYXMgd2VsbAogIGlmICh0aGlzLl93cml0YWJsZVN0YXRlKSB7CiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IHRydWU7CiAgfQoKICB0aGlzLl9kZXN0cm95KGVyciB8fCBudWxsLCBmdW5jdGlvbiAoZXJyKSB7CiAgICBpZiAoIWNiICYmIGVycikgewogICAgICBwcm9jZXNzTmV4dFRpY2soZW1pdEVycm9yTlQsIF90aGlzLCBlcnIpOwogICAgICBpZiAoX3RoaXMuX3dyaXRhYmxlU3RhdGUpIHsKICAgICAgICBfdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlOwogICAgICB9CiAgICB9IGVsc2UgaWYgKGNiKSB7CiAgICAgIGNiKGVycik7CiAgICB9CiAgfSk7CgogIHJldHVybiB0aGlzOwp9CgpmdW5jdGlvbiB1bmRlc3Ryb3koKSB7CiAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUpIHsKICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gZmFsc2U7CiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRpbmcgPSBmYWxzZTsKICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kZWQgPSBmYWxzZTsKICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCA9IGZhbHNlOwogIH0KCiAgaWYgKHRoaXMuX3dyaXRhYmxlU3RhdGUpIHsKICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gZmFsc2U7CiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkID0gZmFsc2U7CiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZyA9IGZhbHNlOwogICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZCA9IGZhbHNlOwogICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSBmYWxzZTsKICB9Cn0KCmZ1bmN0aW9uIGVtaXRFcnJvck5UKHNlbGYsIGVycikgewogIHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpOwp9Cgptb2R1bGUuZXhwb3J0cyA9IHsKICBkZXN0cm95OiBkZXN0cm95LAogIHVuZGVzdHJveTogdW5kZXN0cm95Cn07CgovKioqLyB9KSwKLyogODYgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwovLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy4KLy8KLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQovLyAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAovLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUKLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci8vCi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgovLwovLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwovLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4KLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUgovLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCgovLyBhIHRyYW5zZm9ybSBzdHJlYW0gaXMgYSByZWFkYWJsZS93cml0YWJsZSBzdHJlYW0gd2hlcmUgeW91IGRvCi8vIHNvbWV0aGluZyB3aXRoIHRoZSBkYXRhLiAgU29tZXRpbWVzIGl0J3MgY2FsbGVkIGEgImZpbHRlciIsCi8vIGJ1dCB0aGF0J3Mgbm90IGEgZ3JlYXQgbmFtZSBmb3IgaXQsIHNpbmNlIHRoYXQgaW1wbGllcyBhIHRoaW5nIHdoZXJlCi8vIHNvbWUgYml0cyBwYXNzIHRocm91Z2gsIGFuZCBvdGhlcnMgYXJlIHNpbXBseSBpZ25vcmVkLiAgKFRoYXQgd291bGQKLy8gYmUgYSB2YWxpZCBleGFtcGxlIG9mIGEgdHJhbnNmb3JtLCBvZiBjb3Vyc2UuKQovLwovLyBXaGlsZSB0aGUgb3V0cHV0IGlzIGNhdXNhbGx5IHJlbGF0ZWQgdG8gdGhlIGlucHV0LCBpdCdzIG5vdCBhCi8vIG5lY2Vzc2FyaWx5IHN5bW1ldHJpYyBvciBzeW5jaHJvbm91cyB0cmFuc2Zvcm1hdGlvbi4gIEZvciBleGFtcGxlLAovLyBhIHpsaWIgc3RyZWFtIG1pZ2h0IHRha2UgbXVsdGlwbGUgcGxhaW4tdGV4dCB3cml0ZXMoKSwgYW5kIHRoZW4KLy8gZW1pdCBhIHNpbmdsZSBjb21wcmVzc2VkIGNodW5rIHNvbWUgdGltZSBpbiB0aGUgZnV0dXJlLgovLwovLyBIZXJlJ3MgaG93IHRoaXMgd29ya3M6Ci8vCi8vIFRoZSBUcmFuc2Zvcm0gc3RyZWFtIGhhcyBhbGwgdGhlIGFzcGVjdHMgb2YgdGhlIHJlYWRhYmxlIGFuZCB3cml0YWJsZQovLyBzdHJlYW0gY2xhc3Nlcy4gIFdoZW4geW91IHdyaXRlKGNodW5rKSwgdGhhdCBjYWxscyBfd3JpdGUoY2h1bmssY2IpCi8vIGludGVybmFsbHksIGFuZCByZXR1cm5zIGZhbHNlIGlmIHRoZXJlJ3MgYSBsb3Qgb2YgcGVuZGluZyB3cml0ZXMKLy8gYnVmZmVyZWQgdXAuICBXaGVuIHlvdSBjYWxsIHJlYWQoKSwgdGhhdCBjYWxscyBfcmVhZChuKSB1bnRpbAovLyB0aGVyZSdzIGVub3VnaCBwZW5kaW5nIHJlYWRhYmxlIGRhdGEgYnVmZmVyZWQgdXAuCi8vCi8vIEluIGEgdHJhbnNmb3JtIHN0cmVhbSwgdGhlIHdyaXR0ZW4gZGF0YSBpcyBwbGFjZWQgaW4gYSBidWZmZXIuICBXaGVuCi8vIF9yZWFkKG4pIGlzIGNhbGxlZCwgaXQgdHJhbnNmb3JtcyB0aGUgcXVldWVkIHVwIGRhdGEsIGNhbGxpbmcgdGhlCi8vIGJ1ZmZlcmVkIF93cml0ZSBjYidzIGFzIGl0IGNvbnN1bWVzIGNodW5rcy4gIElmIGNvbnN1bWluZyBhIHNpbmdsZQovLyB3cml0dGVuIGNodW5rIHdvdWxkIHJlc3VsdCBpbiBtdWx0aXBsZSBvdXRwdXQgY2h1bmtzLCB0aGVuIHRoZSBmaXJzdAovLyBvdXRwdXR0ZWQgYml0IGNhbGxzIHRoZSByZWFkY2IsIGFuZCBzdWJzZXF1ZW50IGNodW5rcyBqdXN0IGdvIGludG8KLy8gdGhlIHJlYWQgYnVmZmVyLCBhbmQgd2lsbCBjYXVzZSBpdCB0byBlbWl0ICdyZWFkYWJsZScgaWYgbmVjZXNzYXJ5LgovLwovLyBUaGlzIHdheSwgYmFjay1wcmVzc3VyZSBpcyBhY3R1YWxseSBkZXRlcm1pbmVkIGJ5IHRoZSByZWFkaW5nIHNpZGUsCi8vIHNpbmNlIF9yZWFkIGhhcyB0byBiZSBjYWxsZWQgdG8gc3RhcnQgcHJvY2Vzc2luZyBhIG5ldyBjaHVuay4gIEhvd2V2ZXIsCi8vIGEgcGF0aG9sb2dpY2FsIGluZmxhdGUgdHlwZSBvZiB0cmFuc2Zvcm0gY2FuIGNhdXNlIGV4Y2Vzc2l2ZSBidWZmZXJpbmcKLy8gaGVyZS4gIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgc3RyZWFtIHdoZXJlIGV2ZXJ5IGJ5dGUgb2YgaW5wdXQgaXMKLy8gaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlciBmcm9tIDAtMjU1LCBhbmQgdGhlbiByZXN1bHRzIGluIHRoYXQgbWFueQovLyBieXRlcyBvZiBvdXRwdXQuICBXcml0aW5nIHRoZSA0IGJ5dGVzIHtmZixmZixmZixmZn0gd291bGQgcmVzdWx0IGluCi8vIDFrYiBvZiBkYXRhIGJlaW5nIG91dHB1dC4gIEluIHRoaXMgY2FzZSwgeW91IGNvdWxkIHdyaXRlIGEgdmVyeSBzbWFsbAovLyBhbW91bnQgb2YgaW5wdXQsIGFuZCBlbmQgdXAgd2l0aCBhIHZlcnkgbGFyZ2UgYW1vdW50IG9mIG91dHB1dC4gIEluCi8vIHN1Y2ggYSBwYXRob2xvZ2ljYWwgaW5mbGF0aW5nIG1lY2hhbmlzbSwgdGhlcmUnZCBiZSBubyB3YXkgdG8gdGVsbAovLyB0aGUgc3lzdGVtIHRvIHN0b3AgZG9pbmcgdGhlIHRyYW5zZm9ybS4gIEEgc2luZ2xlIDRNQiB3cml0ZSBjb3VsZAovLyBjYXVzZSB0aGUgc3lzdGVtIHRvIHJ1biBvdXQgb2YgbWVtb3J5LgovLwovLyBIb3dldmVyLCBldmVuIGluIHN1Y2ggYSBwYXRob2xvZ2ljYWwgY2FzZSwgb25seSBhIHNpbmdsZSB3cml0dGVuIGNodW5rCi8vIHdvdWxkIGJlIGNvbnN1bWVkLCBhbmQgdGhlbiB0aGUgcmVzdCB3b3VsZCB3YWl0ICh1bi10cmFuc2Zvcm1lZCkgdW50aWwKLy8gdGhlIHJlc3VsdHMgb2YgdGhlIHByZXZpb3VzIHRyYW5zZm9ybWVkIGNodW5rIHdlcmUgY29uc3VtZWQuCgoKCm1vZHVsZS5leHBvcnRzID0gVHJhbnNmb3JtOwoKdmFyIER1cGxleCA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpOwoKLyo8cmVwbGFjZW1lbnQ+Ki8KdmFyIHV0aWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KTsKdXRpbC5pbmhlcml0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMjEpOwovKjwvcmVwbGFjZW1lbnQ+Ki8KCnV0aWwuaW5oZXJpdHMoVHJhbnNmb3JtLCBEdXBsZXgpOwoKZnVuY3Rpb24gYWZ0ZXJUcmFuc2Zvcm0oZXIsIGRhdGEpIHsKICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTsKICB0cy50cmFuc2Zvcm1pbmcgPSBmYWxzZTsKCiAgdmFyIGNiID0gdHMud3JpdGVjYjsKCiAgaWYgKCFjYikgewogICAgcmV0dXJuIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ3dyaXRlIGNhbGxiYWNrIGNhbGxlZCBtdWx0aXBsZSB0aW1lcycpKTsKICB9CgogIHRzLndyaXRlY2h1bmsgPSBudWxsOwogIHRzLndyaXRlY2IgPSBudWxsOwoKICBpZiAoZGF0YSAhPSBudWxsKSAvLyBzaW5nbGUgZXF1YWxzIGNoZWNrIGZvciBib3RoIGBudWxsYCBhbmQgYHVuZGVmaW5lZGAKICAgIHRoaXMucHVzaChkYXRhKTsKCiAgY2IoZXIpOwoKICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlOwogIHJzLnJlYWRpbmcgPSBmYWxzZTsKICBpZiAocnMubmVlZFJlYWRhYmxlIHx8IHJzLmxlbmd0aCA8IHJzLmhpZ2hXYXRlck1hcmspIHsKICAgIHRoaXMuX3JlYWQocnMuaGlnaFdhdGVyTWFyayk7CiAgfQp9CgpmdW5jdGlvbiBUcmFuc2Zvcm0ob3B0aW9ucykgewogIGlmICghKHRoaXMgaW5zdGFuY2VvZiBUcmFuc2Zvcm0pKSByZXR1cm4gbmV3IFRyYW5zZm9ybShvcHRpb25zKTsKCiAgRHVwbGV4LmNhbGwodGhpcywgb3B0aW9ucyk7CgogIHRoaXMuX3RyYW5zZm9ybVN0YXRlID0gewogICAgYWZ0ZXJUcmFuc2Zvcm06IGFmdGVyVHJhbnNmb3JtLmJpbmQodGhpcyksCiAgICBuZWVkVHJhbnNmb3JtOiBmYWxzZSwKICAgIHRyYW5zZm9ybWluZzogZmFsc2UsCiAgICB3cml0ZWNiOiBudWxsLAogICAgd3JpdGVjaHVuazogbnVsbCwKICAgIHdyaXRlZW5jb2Rpbmc6IG51bGwKICB9OwoKICAvLyBzdGFydCBvdXQgYXNraW5nIGZvciBhIHJlYWRhYmxlIGV2ZW50IG9uY2UgZGF0YSBpcyB0cmFuc2Zvcm1lZC4KICB0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7CgogIC8vIHdlIGhhdmUgaW1wbGVtZW50ZWQgdGhlIF9yZWFkIG1ldGhvZCwgYW5kIGRvbmUgdGhlIG90aGVyIHRoaW5ncwogIC8vIHRoYXQgUmVhZGFibGUgd2FudHMgYmVmb3JlIHRoZSBmaXJzdCBfcmVhZCBjYWxsLCBzbyB1bnNldCB0aGUKICAvLyBzeW5jIGd1YXJkIGZsYWcuCiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5zeW5jID0gZmFsc2U7CgogIGlmIChvcHRpb25zKSB7CiAgICBpZiAodHlwZW9mIG9wdGlvbnMudHJhbnNmb3JtID09PSAnZnVuY3Rpb24nKSB0aGlzLl90cmFuc2Zvcm0gPSBvcHRpb25zLnRyYW5zZm9ybTsKCiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZmx1c2ggPT09ICdmdW5jdGlvbicpIHRoaXMuX2ZsdXNoID0gb3B0aW9ucy5mbHVzaDsKICB9CgogIC8vIFdoZW4gdGhlIHdyaXRhYmxlIHNpZGUgZmluaXNoZXMsIHRoZW4gZmx1c2ggb3V0IGFueXRoaW5nIHJlbWFpbmluZy4KICB0aGlzLm9uKCdwcmVmaW5pc2gnLCBwcmVmaW5pc2gpOwp9CgpmdW5jdGlvbiBwcmVmaW5pc2goKSB7CiAgdmFyIF90aGlzID0gdGhpczsKCiAgaWYgKHR5cGVvZiB0aGlzLl9mbHVzaCA9PT0gJ2Z1bmN0aW9uJykgewogICAgdGhpcy5fZmx1c2goZnVuY3Rpb24gKGVyLCBkYXRhKSB7CiAgICAgIGRvbmUoX3RoaXMsIGVyLCBkYXRhKTsKICAgIH0pOwogIH0gZWxzZSB7CiAgICBkb25lKHRoaXMsIG51bGwsIG51bGwpOwogIH0KfQoKVHJhbnNmb3JtLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZykgewogIHRoaXMuX3RyYW5zZm9ybVN0YXRlLm5lZWRUcmFuc2Zvcm0gPSBmYWxzZTsKICByZXR1cm4gRHVwbGV4LnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcywgY2h1bmssIGVuY29kaW5nKTsKfTsKCi8vIFRoaXMgaXMgdGhlIHBhcnQgd2hlcmUgeW91IGRvIHN0dWZmIQovLyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIGluIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuCi8vICdjaHVuaycgaXMgYW4gaW5wdXQgY2h1bmsuCi8vCi8vIENhbGwgYHB1c2gobmV3Q2h1bmspYCB0byBwYXNzIGFsb25nIHRyYW5zZm9ybWVkIG91dHB1dAovLyB0byB0aGUgcmVhZGFibGUgc2lkZS4gIFlvdSBtYXkgY2FsbCAncHVzaCcgemVybyBvciBtb3JlIHRpbWVzLgovLwovLyBDYWxsIGBjYihlcnIpYCB3aGVuIHlvdSBhcmUgZG9uZSB3aXRoIHRoaXMgY2h1bmsuICBJZiB5b3UgcGFzcwovLyBhbiBlcnJvciwgdGhlbiB0aGF0J2xsIHB1dCB0aGUgaHVydCBvbiB0aGUgd2hvbGUgb3BlcmF0aW9uLiAgSWYgeW91Ci8vIG5ldmVyIGNhbGwgY2IoKSwgdGhlbiB5b3UnbGwgbmV2ZXIgZ2V0IGFub3RoZXIgY2h1bmsuClRyYW5zZm9ybS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7CiAgdGhyb3cgbmV3IEVycm9yKCdfdHJhbnNmb3JtKCkgaXMgbm90IGltcGxlbWVudGVkJyk7Cn07CgpUcmFuc2Zvcm0ucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7CiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7CiAgdHMud3JpdGVjYiA9IGNiOwogIHRzLndyaXRlY2h1bmsgPSBjaHVuazsKICB0cy53cml0ZWVuY29kaW5nID0gZW5jb2Rpbmc7CiAgaWYgKCF0cy50cmFuc2Zvcm1pbmcpIHsKICAgIHZhciBycyA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7CiAgICBpZiAodHMubmVlZFRyYW5zZm9ybSB8fCBycy5uZWVkUmVhZGFibGUgfHwgcnMubGVuZ3RoIDwgcnMuaGlnaFdhdGVyTWFyaykgdGhpcy5fcmVhZChycy5oaWdoV2F0ZXJNYXJrKTsKICB9Cn07CgovLyBEb2Vzbid0IG1hdHRlciB3aGF0IHRoZSBhcmdzIGFyZSBoZXJlLgovLyBfdHJhbnNmb3JtIGRvZXMgYWxsIHRoZSB3b3JrLgovLyBUaGF0IHdlIGdvdCBoZXJlIG1lYW5zIHRoYXQgdGhlIHJlYWRhYmxlIHNpZGUgd2FudHMgbW9yZSBkYXRhLgpUcmFuc2Zvcm0ucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHsKICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTsKCiAgaWYgKHRzLndyaXRlY2h1bmsgIT09IG51bGwgJiYgdHMud3JpdGVjYiAmJiAhdHMudHJhbnNmb3JtaW5nKSB7CiAgICB0cy50cmFuc2Zvcm1pbmcgPSB0cnVlOwogICAgdGhpcy5fdHJhbnNmb3JtKHRzLndyaXRlY2h1bmssIHRzLndyaXRlZW5jb2RpbmcsIHRzLmFmdGVyVHJhbnNmb3JtKTsKICB9IGVsc2UgewogICAgLy8gbWFyayB0aGF0IHdlIG5lZWQgYSB0cmFuc2Zvcm0sIHNvIHRoYXQgYW55IGRhdGEgdGhhdCBjb21lcyBpbgogICAgLy8gd2lsbCBnZXQgcHJvY2Vzc2VkLCBub3cgdGhhdCB3ZSd2ZSBhc2tlZCBmb3IgaXQuCiAgICB0cy5uZWVkVHJhbnNmb3JtID0gdHJ1ZTsKICB9Cn07CgpUcmFuc2Zvcm0ucHJvdG90eXBlLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2IpIHsKICB2YXIgX3RoaXMyID0gdGhpczsKCiAgRHVwbGV4LnByb3RvdHlwZS5fZGVzdHJveS5jYWxsKHRoaXMsIGVyciwgZnVuY3Rpb24gKGVycjIpIHsKICAgIGNiKGVycjIpOwogICAgX3RoaXMyLmVtaXQoJ2Nsb3NlJyk7CiAgfSk7Cn07CgpmdW5jdGlvbiBkb25lKHN0cmVhbSwgZXIsIGRhdGEpIHsKICBpZiAoZXIpIHJldHVybiBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7CgogIGlmIChkYXRhICE9IG51bGwpIC8vIHNpbmdsZSBlcXVhbHMgY2hlY2sgZm9yIGJvdGggYG51bGxgIGFuZCBgdW5kZWZpbmVkYAogICAgc3RyZWFtLnB1c2goZGF0YSk7CgogIC8vIGlmIHRoZXJlJ3Mgbm90aGluZyBpbiB0aGUgd3JpdGUgYnVmZmVyLCB0aGVuIHRoYXQgbWVhbnMKICAvLyB0aGF0IG5vdGhpbmcgbW9yZSB3aWxsIGV2ZXIgYmUgcHJvdmlkZWQKICBpZiAoc3RyZWFtLl93cml0YWJsZVN0YXRlLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdDYWxsaW5nIHRyYW5zZm9ybSBkb25lIHdoZW4gd3MubGVuZ3RoICE9IDAnKTsKCiAgaWYgKHN0cmVhbS5fdHJhbnNmb3JtU3RhdGUudHJhbnNmb3JtaW5nKSB0aHJvdyBuZXcgRXJyb3IoJ0NhbGxpbmcgdHJhbnNmb3JtIGRvbmUgd2hlbiBzdGlsbCB0cmFuc2Zvcm1pbmcnKTsKCiAgcmV0dXJuIHN0cmVhbS5wdXNoKG51bGwpOwp9CgovKioqLyB9KSwKLyogODcgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKEJ1ZmZlcikgey8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CgovKgpQREZSZWZlcmVuY2UgLSByZXByZXNlbnRzIGEgcmVmZXJlbmNlIHRvIGFub3RoZXIgb2JqZWN0IGluIHRoZSBQREYgb2JqZWN0IGhlaXJhcmNoeQpCeSBEZXZvbiBHb3ZldHQKICovCgooZnVuY3Rpb24oKSB7CiAgdmFyIFBERk9iamVjdCwgUERGUmVmZXJlbmNlLCBzdHJlYW0sIHpsaWIsCiAgICBiaW5kID0gZnVuY3Rpb24oZm4sIG1lKXsgcmV0dXJuIGZ1bmN0aW9uKCl7IHJldHVybiBmbi5hcHBseShtZSwgYXJndW1lbnRzKTsgfTsgfSwKICAgIGV4dGVuZCA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsgZm9yICh2YXIga2V5IGluIHBhcmVudCkgeyBpZiAoaGFzUHJvcC5jYWxsKHBhcmVudCwga2V5KSkgY2hpbGRba2V5XSA9IHBhcmVudFtrZXldOyB9IGZ1bmN0aW9uIGN0b3IoKSB7IHRoaXMuY29uc3RydWN0b3IgPSBjaGlsZDsgfSBjdG9yLnByb3RvdHlwZSA9IHBhcmVudC5wcm90b3R5cGU7IGNoaWxkLnByb3RvdHlwZSA9IG5ldyBjdG9yKCk7IGNoaWxkLl9fc3VwZXJfXyA9IHBhcmVudC5wcm90b3R5cGU7IHJldHVybiBjaGlsZDsgfSwKICAgIGhhc1Byb3AgPSB7fS5oYXNPd25Qcm9wZXJ0eTsKCiAgemxpYiA9IF9fd2VicGFja19yZXF1aXJlX18oNDgpOwoKICBzdHJlYW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTsKCiAgUERGUmVmZXJlbmNlID0gKGZ1bmN0aW9uKHN1cGVyQ2xhc3MpIHsKICAgIGV4dGVuZChQREZSZWZlcmVuY2UsIHN1cGVyQ2xhc3MpOwoKICAgIGZ1bmN0aW9uIFBERlJlZmVyZW5jZShkb2N1bWVudCwgaWQsIGRhdGEpIHsKICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50OwogICAgICB0aGlzLmlkID0gaWQ7CiAgICAgIHRoaXMuZGF0YSA9IGRhdGEgIT0gbnVsbCA/IGRhdGEgOiB7fTsKICAgICAgdGhpcy5maW5hbGl6ZSA9IGJpbmQodGhpcy5maW5hbGl6ZSwgdGhpcyk7CiAgICAgIFBERlJlZmVyZW5jZS5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzLCB7CiAgICAgICAgZGVjb2RlU3RyaW5nczogZmFsc2UKICAgICAgfSk7CiAgICAgIHRoaXMuZ2VuID0gMDsKICAgICAgdGhpcy5kZWZsYXRlID0gbnVsbDsKICAgICAgdGhpcy5jb21wcmVzcyA9IHRoaXMuZG9jdW1lbnQuY29tcHJlc3MgJiYgIXRoaXMuZGF0YS5GaWx0ZXI7CiAgICAgIHRoaXMudW5jb21wcmVzc2VkTGVuZ3RoID0gMDsKICAgICAgdGhpcy5jaHVua3MgPSBbXTsKICAgIH0KCiAgICBQREZSZWZlcmVuY2UucHJvdG90eXBlLmluaXREZWZsYXRlID0gZnVuY3Rpb24oKSB7CiAgICAgIHRoaXMuZGF0YS5GaWx0ZXIgPSAnRmxhdGVEZWNvZGUnOwogICAgICB0aGlzLmRlZmxhdGUgPSB6bGliLmNyZWF0ZURlZmxhdGUoKTsKICAgICAgdGhpcy5kZWZsYXRlLm9uKCdkYXRhJywgKGZ1bmN0aW9uKF90aGlzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGNodW5rKSB7CiAgICAgICAgICBfdGhpcy5jaHVua3MucHVzaChjaHVuayk7CiAgICAgICAgICByZXR1cm4gX3RoaXMuZGF0YS5MZW5ndGggKz0gY2h1bmsubGVuZ3RoOwogICAgICAgIH07CiAgICAgIH0pKHRoaXMpKTsKICAgICAgcmV0dXJuIHRoaXMuZGVmbGF0ZS5vbignZW5kJywgdGhpcy5maW5hbGl6ZSk7CiAgICB9OwoKICAgIFBERlJlZmVyZW5jZS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24oY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykgewogICAgICB2YXIgYmFzZTsKICAgICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoY2h1bmspKSB7CiAgICAgICAgY2h1bmsgPSBuZXcgQnVmZmVyKGNodW5rICsgJ1xuJywgJ2JpbmFyeScpOwogICAgICB9CiAgICAgIHRoaXMudW5jb21wcmVzc2VkTGVuZ3RoICs9IGNodW5rLmxlbmd0aDsKICAgICAgaWYgKChiYXNlID0gdGhpcy5kYXRhKS5MZW5ndGggPT0gbnVsbCkgewogICAgICAgIGJhc2UuTGVuZ3RoID0gMDsKICAgICAgfQogICAgICBpZiAodGhpcy5jb21wcmVzcykgewogICAgICAgIGlmICghdGhpcy5kZWZsYXRlKSB7CiAgICAgICAgICB0aGlzLmluaXREZWZsYXRlKCk7CiAgICAgICAgfQogICAgICAgIHRoaXMuZGVmbGF0ZS53cml0ZShjaHVuayk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5jaHVua3MucHVzaChjaHVuayk7CiAgICAgICAgdGhpcy5kYXRhLkxlbmd0aCArPSBjaHVuay5sZW5ndGg7CiAgICAgIH0KICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgICB9OwoKICAgIFBERlJlZmVyZW5jZS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oY2h1bmspIHsKICAgICAgUERGUmVmZXJlbmNlLl9fc3VwZXJfXy5lbmQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgaWYgKHRoaXMuZGVmbGF0ZSkgewogICAgICAgIHJldHVybiB0aGlzLmRlZmxhdGUuZW5kKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUoKTsKICAgICAgfQogICAgfTsKCiAgICBQREZSZWZlcmVuY2UucHJvdG90eXBlLmZpbmFsaXplID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBjaHVuaywgaSwgbGVuLCByZWY7CiAgICAgIHRoaXMub2Zmc2V0ID0gdGhpcy5kb2N1bWVudC5fb2Zmc2V0OwogICAgICB0aGlzLmRvY3VtZW50Ll93cml0ZSh0aGlzLmlkICsgIiAiICsgdGhpcy5nZW4gKyAiIG9iaiIpOwogICAgICB0aGlzLmRvY3VtZW50Ll93cml0ZShQREZPYmplY3QuY29udmVydCh0aGlzLmRhdGEpKTsKICAgICAgaWYgKHRoaXMuY2h1bmtzLmxlbmd0aCkgewogICAgICAgIHRoaXMuZG9jdW1lbnQuX3dyaXRlKCdzdHJlYW0nKTsKICAgICAgICByZWYgPSB0aGlzLmNodW5rczsKICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICAgIGNodW5rID0gcmVmW2ldOwogICAgICAgICAgdGhpcy5kb2N1bWVudC5fd3JpdGUoY2h1bmspOwogICAgICAgIH0KICAgICAgICB0aGlzLmNodW5rcy5sZW5ndGggPSAwOwogICAgICAgIHRoaXMuZG9jdW1lbnQuX3dyaXRlKCdcbmVuZHN0cmVhbScpOwogICAgICB9CiAgICAgIHRoaXMuZG9jdW1lbnQuX3dyaXRlKCdlbmRvYmonKTsKICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuX3JlZkVuZCh0aGlzKTsKICAgIH07CgogICAgUERGUmVmZXJlbmNlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy5pZCArICIgIiArIHRoaXMuZ2VuICsgIiBSIjsKICAgIH07CgogICAgcmV0dXJuIFBERlJlZmVyZW5jZTsKCiAgfSkoc3RyZWFtLldyaXRhYmxlKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBQREZSZWZlcmVuY2U7CgogIFBERk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjYpOwoKfSkuY2FsbCh0aGlzKTsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpLkJ1ZmZlcikpCgovKioqLyB9KSwKLyogODggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oZ2xvYmFsKSB7CgovLyBjb21wYXJlIGFuZCBpc0J1ZmZlciB0YWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL2Jsb2IvNjgwZTllNWU0ODhmMjJhYWMyNzU5OWE1N2RjODQ0YTYzMTU5MjhkZC9pbmRleC5qcwovLyBvcmlnaW5hbCBub3RpY2U6CgovKiEKICogVGhlIGJ1ZmZlciBtb2R1bGUgZnJvbSBub2RlLmpzLCBmb3IgdGhlIGJyb3dzZXIuCiAqCiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxmZXJvc3NAZmVyb3NzLm9yZz4gPGh0dHA6Ly9mZXJvc3Mub3JnPgogKiBAbGljZW5zZSAgTUlUCiAqLwpmdW5jdGlvbiBjb21wYXJlKGEsIGIpIHsKICBpZiAoYSA9PT0gYikgewogICAgcmV0dXJuIDA7CiAgfQoKICB2YXIgeCA9IGEubGVuZ3RoOwogIHZhciB5ID0gYi5sZW5ndGg7CgogIGZvciAodmFyIGkgPSAwLCBsZW4gPSBNYXRoLm1pbih4LCB5KTsgaSA8IGxlbjsgKytpKSB7CiAgICBpZiAoYVtpXSAhPT0gYltpXSkgewogICAgICB4ID0gYVtpXTsKICAgICAgeSA9IGJbaV07CiAgICAgIGJyZWFrOwogICAgfQogIH0KCiAgaWYgKHggPCB5KSB7CiAgICByZXR1cm4gLTE7CiAgfQogIGlmICh5IDwgeCkgewogICAgcmV0dXJuIDE7CiAgfQogIHJldHVybiAwOwp9CmZ1bmN0aW9uIGlzQnVmZmVyKGIpIHsKICBpZiAoZ2xvYmFsLkJ1ZmZlciAmJiB0eXBlb2YgZ2xvYmFsLkJ1ZmZlci5pc0J1ZmZlciA9PT0gJ2Z1bmN0aW9uJykgewogICAgcmV0dXJuIGdsb2JhbC5CdWZmZXIuaXNCdWZmZXIoYik7CiAgfQogIHJldHVybiAhIShiICE9IG51bGwgJiYgYi5faXNCdWZmZXIpOwp9CgovLyBiYXNlZCBvbiBub2RlIGFzc2VydCwgb3JpZ2luYWwgbm90aWNlOgoKLy8gaHR0cDovL3dpa2kuY29tbW9uanMub3JnL3dpa2kvVW5pdF9UZXN0aW5nLzEuMAovLwovLyBUSElTIElTIE5PVCBURVNURUQgTk9SIExJS0VMWSBUTyBXT1JLIE9VVFNJREUgVjghCi8vCi8vIE9yaWdpbmFsbHkgZnJvbSBuYXJ3aGFsLmpzIChodHRwOi8vbmFyd2hhbGpzLm9yZykKLy8gQ29weXJpZ2h0IChjKSAyMDA5IFRob21hcyBSb2JpbnNvbiA8Mjgwbm9ydGguY29tPgovLwovLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICdTb2Z0d2FyZScpLCB0bwovLyBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQovLyByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKLy8gc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLy8KLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi8vCi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAnQVMgSVMnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAovLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLy8gQVVUSE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4KLy8gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgovLyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KCnZhciB1dGlsID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0OSk7CnZhciBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5Owp2YXIgcFNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlOwp2YXIgZnVuY3Rpb25zSGF2ZU5hbWVzID0gKGZ1bmN0aW9uICgpIHsKICByZXR1cm4gZnVuY3Rpb24gZm9vKCkge30ubmFtZSA9PT0gJ2Zvbyc7Cn0oKSk7CmZ1bmN0aW9uIHBUb1N0cmluZyAob2JqKSB7CiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopOwp9CmZ1bmN0aW9uIGlzVmlldyhhcnJidWYpIHsKICBpZiAoaXNCdWZmZXIoYXJyYnVmKSkgewogICAgcmV0dXJuIGZhbHNlOwogIH0KICBpZiAodHlwZW9mIGdsb2JhbC5BcnJheUJ1ZmZlciAhPT0gJ2Z1bmN0aW9uJykgewogICAgcmV0dXJuIGZhbHNlOwogIH0KICBpZiAodHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyA9PT0gJ2Z1bmN0aW9uJykgewogICAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyhhcnJidWYpOwogIH0KICBpZiAoIWFycmJ1ZikgewogICAgcmV0dXJuIGZhbHNlOwogIH0KICBpZiAoYXJyYnVmIGluc3RhbmNlb2YgRGF0YVZpZXcpIHsKICAgIHJldHVybiB0cnVlOwogIH0KICBpZiAoYXJyYnVmLmJ1ZmZlciAmJiBhcnJidWYuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHsKICAgIHJldHVybiB0cnVlOwogIH0KICByZXR1cm4gZmFsc2U7Cn0KLy8gMS4gVGhlIGFzc2VydCBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIHRoYXQgdGhyb3cKLy8gQXNzZXJ0aW9uRXJyb3IncyB3aGVuIHBhcnRpY3VsYXIgY29uZGl0aW9ucyBhcmUgbm90IG1ldC4gVGhlCi8vIGFzc2VydCBtb2R1bGUgbXVzdCBjb25mb3JtIHRvIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlLgoKdmFyIGFzc2VydCA9IG1vZHVsZS5leHBvcnRzID0gb2s7CgovLyAyLiBUaGUgQXNzZXJ0aW9uRXJyb3IgaXMgZGVmaW5lZCBpbiBhc3NlcnQuCi8vIG5ldyBhc3NlcnQuQXNzZXJ0aW9uRXJyb3IoeyBtZXNzYWdlOiBtZXNzYWdlLAovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsOiBhY3R1YWwsCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogZXhwZWN0ZWQgfSkKCnZhciByZWdleCA9IC9ccypmdW5jdGlvblxzKyhbXlwoXHNdKilccyovOwovLyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vbGpoYXJiL2Z1bmN0aW9uLnByb3RvdHlwZS5uYW1lL2Jsb2IvYWRlZWVlYzhiZmNjNjA2OGIxODdkN2Q5ZmIzZDViYjFkM2EzMDg5OS9pbXBsZW1lbnRhdGlvbi5qcwpmdW5jdGlvbiBnZXROYW1lKGZ1bmMpIHsKICBpZiAoIXV0aWwuaXNGdW5jdGlvbihmdW5jKSkgewogICAgcmV0dXJuOwogIH0KICBpZiAoZnVuY3Rpb25zSGF2ZU5hbWVzKSB7CiAgICByZXR1cm4gZnVuYy5uYW1lOwogIH0KICB2YXIgc3RyID0gZnVuYy50b1N0cmluZygpOwogIHZhciBtYXRjaCA9IHN0ci5tYXRjaChyZWdleCk7CiAgcmV0dXJuIG1hdGNoICYmIG1hdGNoWzFdOwp9CmFzc2VydC5Bc3NlcnRpb25FcnJvciA9IGZ1bmN0aW9uIEFzc2VydGlvbkVycm9yKG9wdGlvbnMpIHsKICB0aGlzLm5hbWUgPSAnQXNzZXJ0aW9uRXJyb3InOwogIHRoaXMuYWN0dWFsID0gb3B0aW9ucy5hY3R1YWw7CiAgdGhpcy5leHBlY3RlZCA9IG9wdGlvbnMuZXhwZWN0ZWQ7CiAgdGhpcy5vcGVyYXRvciA9IG9wdGlvbnMub3BlcmF0b3I7CiAgaWYgKG9wdGlvbnMubWVzc2FnZSkgewogICAgdGhpcy5tZXNzYWdlID0gb3B0aW9ucy5tZXNzYWdlOwogICAgdGhpcy5nZW5lcmF0ZWRNZXNzYWdlID0gZmFsc2U7CiAgfSBlbHNlIHsKICAgIHRoaXMubWVzc2FnZSA9IGdldE1lc3NhZ2UodGhpcyk7CiAgICB0aGlzLmdlbmVyYXRlZE1lc3NhZ2UgPSB0cnVlOwogIH0KICB2YXIgc3RhY2tTdGFydEZ1bmN0aW9uID0gb3B0aW9ucy5zdGFja1N0YXJ0RnVuY3Rpb24gfHwgZmFpbDsKICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHsKICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHN0YWNrU3RhcnRGdW5jdGlvbik7CiAgfSBlbHNlIHsKICAgIC8vIG5vbiB2OCBicm93c2VycyBzbyB3ZSBjYW4gaGF2ZSBhIHN0YWNrdHJhY2UKICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoKTsKICAgIGlmIChlcnIuc3RhY2spIHsKICAgICAgdmFyIG91dCA9IGVyci5zdGFjazsKCiAgICAgIC8vIHRyeSB0byBzdHJpcCB1c2VsZXNzIGZyYW1lcwogICAgICB2YXIgZm5fbmFtZSA9IGdldE5hbWUoc3RhY2tTdGFydEZ1bmN0aW9uKTsKICAgICAgdmFyIGlkeCA9IG91dC5pbmRleE9mKCdcbicgKyBmbl9uYW1lKTsKICAgICAgaWYgKGlkeCA+PSAwKSB7CiAgICAgICAgLy8gb25jZSB3ZSBoYXZlIGxvY2F0ZWQgdGhlIGZ1bmN0aW9uIGZyYW1lCiAgICAgICAgLy8gd2UgbmVlZCB0byBzdHJpcCBvdXQgZXZlcnl0aGluZyBiZWZvcmUgaXQgKGFuZCBpdHMgbGluZSkKICAgICAgICB2YXIgbmV4dF9saW5lID0gb3V0LmluZGV4T2YoJ1xuJywgaWR4ICsgMSk7CiAgICAgICAgb3V0ID0gb3V0LnN1YnN0cmluZyhuZXh0X2xpbmUgKyAxKTsKICAgICAgfQoKICAgICAgdGhpcy5zdGFjayA9IG91dDsKICAgIH0KICB9Cn07CgovLyBhc3NlcnQuQXNzZXJ0aW9uRXJyb3IgaW5zdGFuY2VvZiBFcnJvcgp1dGlsLmluaGVyaXRzKGFzc2VydC5Bc3NlcnRpb25FcnJvciwgRXJyb3IpOwoKZnVuY3Rpb24gdHJ1bmNhdGUocywgbikgewogIGlmICh0eXBlb2YgcyA9PT0gJ3N0cmluZycpIHsKICAgIHJldHVybiBzLmxlbmd0aCA8IG4gPyBzIDogcy5zbGljZSgwLCBuKTsKICB9IGVsc2UgewogICAgcmV0dXJuIHM7CiAgfQp9CmZ1bmN0aW9uIGluc3BlY3Qoc29tZXRoaW5nKSB7CiAgaWYgKGZ1bmN0aW9uc0hhdmVOYW1lcyB8fCAhdXRpbC5pc0Z1bmN0aW9uKHNvbWV0aGluZykpIHsKICAgIHJldHVybiB1dGlsLmluc3BlY3Qoc29tZXRoaW5nKTsKICB9CiAgdmFyIHJhd25hbWUgPSBnZXROYW1lKHNvbWV0aGluZyk7CiAgdmFyIG5hbWUgPSByYXduYW1lID8gJzogJyArIHJhd25hbWUgOiAnJzsKICByZXR1cm4gJ1tGdW5jdGlvbicgKyAgbmFtZSArICddJzsKfQpmdW5jdGlvbiBnZXRNZXNzYWdlKHNlbGYpIHsKICByZXR1cm4gdHJ1bmNhdGUoaW5zcGVjdChzZWxmLmFjdHVhbCksIDEyOCkgKyAnICcgKwogICAgICAgICBzZWxmLm9wZXJhdG9yICsgJyAnICsKICAgICAgICAgdHJ1bmNhdGUoaW5zcGVjdChzZWxmLmV4cGVjdGVkKSwgMTI4KTsKfQoKLy8gQXQgcHJlc2VudCBvbmx5IHRoZSB0aHJlZSBrZXlzIG1lbnRpb25lZCBhYm92ZSBhcmUgdXNlZCBhbmQKLy8gdW5kZXJzdG9vZCBieSB0aGUgc3BlYy4gSW1wbGVtZW50YXRpb25zIG9yIHN1YiBtb2R1bGVzIGNhbiBwYXNzCi8vIG90aGVyIGtleXMgdG8gdGhlIEFzc2VydGlvbkVycm9yJ3MgY29uc3RydWN0b3IgLSB0aGV5IHdpbGwgYmUKLy8gaWdub3JlZC4KCi8vIDMuIEFsbCBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtdXN0IHRocm93IGFuIEFzc2VydGlvbkVycm9yCi8vIHdoZW4gYSBjb3JyZXNwb25kaW5nIGNvbmRpdGlvbiBpcyBub3QgbWV0LCB3aXRoIGEgbWVzc2FnZSB0aGF0Ci8vIG1heSBiZSB1bmRlZmluZWQgaWYgbm90IHByb3ZpZGVkLiAgQWxsIGFzc2VydGlvbiBtZXRob2RzIHByb3ZpZGUKLy8gYm90aCB0aGUgYWN0dWFsIGFuZCBleHBlY3RlZCB2YWx1ZXMgdG8gdGhlIGFzc2VydGlvbiBlcnJvciBmb3IKLy8gZGlzcGxheSBwdXJwb3Nlcy4KCmZ1bmN0aW9uIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgb3BlcmF0b3IsIHN0YWNrU3RhcnRGdW5jdGlvbikgewogIHRocm93IG5ldyBhc3NlcnQuQXNzZXJ0aW9uRXJyb3IoewogICAgbWVzc2FnZTogbWVzc2FnZSwKICAgIGFjdHVhbDogYWN0dWFsLAogICAgZXhwZWN0ZWQ6IGV4cGVjdGVkLAogICAgb3BlcmF0b3I6IG9wZXJhdG9yLAogICAgc3RhY2tTdGFydEZ1bmN0aW9uOiBzdGFja1N0YXJ0RnVuY3Rpb24KICB9KTsKfQoKLy8gRVhURU5TSU9OISBhbGxvd3MgZm9yIHdlbGwgYmVoYXZlZCBlcnJvcnMgZGVmaW5lZCBlbHNld2hlcmUuCmFzc2VydC5mYWlsID0gZmFpbDsKCi8vIDQuIFB1cmUgYXNzZXJ0aW9uIHRlc3RzIHdoZXRoZXIgYSB2YWx1ZSBpcyB0cnV0aHksIGFzIGRldGVybWluZWQKLy8gYnkgISFndWFyZC4KLy8gYXNzZXJ0Lm9rKGd1YXJkLCBtZXNzYWdlX29wdCk7Ci8vIFRoaXMgc3RhdGVtZW50IGlzIGVxdWl2YWxlbnQgdG8gYXNzZXJ0LmVxdWFsKHRydWUsICEhZ3VhcmQsCi8vIG1lc3NhZ2Vfb3B0KTsuIFRvIHRlc3Qgc3RyaWN0bHkgZm9yIHRoZSB2YWx1ZSB0cnVlLCB1c2UKLy8gYXNzZXJ0LnN0cmljdEVxdWFsKHRydWUsIGd1YXJkLCBtZXNzYWdlX29wdCk7LgoKZnVuY3Rpb24gb2sodmFsdWUsIG1lc3NhZ2UpIHsKICBpZiAoIXZhbHVlKSBmYWlsKHZhbHVlLCB0cnVlLCBtZXNzYWdlLCAnPT0nLCBhc3NlcnQub2spOwp9CmFzc2VydC5vayA9IG9rOwoKLy8gNS4gVGhlIGVxdWFsaXR5IGFzc2VydGlvbiB0ZXN0cyBzaGFsbG93LCBjb2VyY2l2ZSBlcXVhbGl0eSB3aXRoCi8vID09LgovLyBhc3NlcnQuZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpOwoKYXNzZXJ0LmVxdWFsID0gZnVuY3Rpb24gZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgewogIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJz09JywgYXNzZXJ0LmVxdWFsKTsKfTsKCi8vIDYuIFRoZSBub24tZXF1YWxpdHkgYXNzZXJ0aW9uIHRlc3RzIGZvciB3aGV0aGVyIHR3byBvYmplY3RzIGFyZSBub3QgZXF1YWwKLy8gd2l0aCAhPSBhc3NlcnQubm90RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpOwoKYXNzZXJ0Lm5vdEVxdWFsID0gZnVuY3Rpb24gbm90RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgewogIGlmIChhY3R1YWwgPT0gZXhwZWN0ZWQpIHsKICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJyE9JywgYXNzZXJ0Lm5vdEVxdWFsKTsKICB9Cn07CgovLyA3LiBUaGUgZXF1aXZhbGVuY2UgYXNzZXJ0aW9uIHRlc3RzIGEgZGVlcCBlcXVhbGl0eSByZWxhdGlvbi4KLy8gYXNzZXJ0LmRlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlX29wdCk7Cgphc3NlcnQuZGVlcEVxdWFsID0gZnVuY3Rpb24gZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKICBpZiAoIV9kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgZmFsc2UpKSB7CiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICdkZWVwRXF1YWwnLCBhc3NlcnQuZGVlcEVxdWFsKTsKICB9Cn07Cgphc3NlcnQuZGVlcFN0cmljdEVxdWFsID0gZnVuY3Rpb24gZGVlcFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKICBpZiAoIV9kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgdHJ1ZSkpIHsKICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJ2RlZXBTdHJpY3RFcXVhbCcsIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwpOwogIH0KfTsKCmZ1bmN0aW9uIF9kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgc3RyaWN0LCBtZW1vcykgewogIC8vIDcuMS4gQWxsIGlkZW50aWNhbCB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGFzIGRldGVybWluZWQgYnkgPT09LgogIGlmIChhY3R1YWwgPT09IGV4cGVjdGVkKSB7CiAgICByZXR1cm4gdHJ1ZTsKICB9IGVsc2UgaWYgKGlzQnVmZmVyKGFjdHVhbCkgJiYgaXNCdWZmZXIoZXhwZWN0ZWQpKSB7CiAgICByZXR1cm4gY29tcGFyZShhY3R1YWwsIGV4cGVjdGVkKSA9PT0gMDsKCiAgLy8gNy4yLiBJZiB0aGUgZXhwZWN0ZWQgdmFsdWUgaXMgYSBEYXRlIG9iamVjdCwgdGhlIGFjdHVhbCB2YWx1ZSBpcwogIC8vIGVxdWl2YWxlbnQgaWYgaXQgaXMgYWxzbyBhIERhdGUgb2JqZWN0IHRoYXQgcmVmZXJzIHRvIHRoZSBzYW1lIHRpbWUuCiAgfSBlbHNlIGlmICh1dGlsLmlzRGF0ZShhY3R1YWwpICYmIHV0aWwuaXNEYXRlKGV4cGVjdGVkKSkgewogICAgcmV0dXJuIGFjdHVhbC5nZXRUaW1lKCkgPT09IGV4cGVjdGVkLmdldFRpbWUoKTsKCiAgLy8gNy4zIElmIHRoZSBleHBlY3RlZCB2YWx1ZSBpcyBhIFJlZ0V4cCBvYmplY3QsIHRoZSBhY3R1YWwgdmFsdWUgaXMKICAvLyBlcXVpdmFsZW50IGlmIGl0IGlzIGFsc28gYSBSZWdFeHAgb2JqZWN0IHdpdGggdGhlIHNhbWUgc291cmNlIGFuZAogIC8vIHByb3BlcnRpZXMgKGBnbG9iYWxgLCBgbXVsdGlsaW5lYCwgYGxhc3RJbmRleGAsIGBpZ25vcmVDYXNlYCkuCiAgfSBlbHNlIGlmICh1dGlsLmlzUmVnRXhwKGFjdHVhbCkgJiYgdXRpbC5pc1JlZ0V4cChleHBlY3RlZCkpIHsKICAgIHJldHVybiBhY3R1YWwuc291cmNlID09PSBleHBlY3RlZC5zb3VyY2UgJiYKICAgICAgICAgICBhY3R1YWwuZ2xvYmFsID09PSBleHBlY3RlZC5nbG9iYWwgJiYKICAgICAgICAgICBhY3R1YWwubXVsdGlsaW5lID09PSBleHBlY3RlZC5tdWx0aWxpbmUgJiYKICAgICAgICAgICBhY3R1YWwubGFzdEluZGV4ID09PSBleHBlY3RlZC5sYXN0SW5kZXggJiYKICAgICAgICAgICBhY3R1YWwuaWdub3JlQ2FzZSA9PT0gZXhwZWN0ZWQuaWdub3JlQ2FzZTsKCiAgLy8gNy40LiBPdGhlciBwYWlycyB0aGF0IGRvIG5vdCBib3RoIHBhc3MgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnLAogIC8vIGVxdWl2YWxlbmNlIGlzIGRldGVybWluZWQgYnkgPT0uCiAgfSBlbHNlIGlmICgoYWN0dWFsID09PSBudWxsIHx8IHR5cGVvZiBhY3R1YWwgIT09ICdvYmplY3QnKSAmJgogICAgICAgICAgICAgKGV4cGVjdGVkID09PSBudWxsIHx8IHR5cGVvZiBleHBlY3RlZCAhPT0gJ29iamVjdCcpKSB7CiAgICByZXR1cm4gc3RyaWN0ID8gYWN0dWFsID09PSBleHBlY3RlZCA6IGFjdHVhbCA9PSBleHBlY3RlZDsKCiAgLy8gSWYgYm90aCB2YWx1ZXMgYXJlIGluc3RhbmNlcyBvZiB0eXBlZCBhcnJheXMsIHdyYXAgdGhlaXIgdW5kZXJseWluZwogIC8vIEFycmF5QnVmZmVycyBpbiBhIEJ1ZmZlciBlYWNoIHRvIGluY3JlYXNlIHBlcmZvcm1hbmNlCiAgLy8gVGhpcyBvcHRpbWl6YXRpb24gcmVxdWlyZXMgdGhlIGFycmF5cyB0byBoYXZlIHRoZSBzYW1lIHR5cGUgYXMgY2hlY2tlZCBieQogIC8vIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgKGFrYSBwVG9TdHJpbmcpLiBOZXZlciBwZXJmb3JtIGJpbmFyeQogIC8vIGNvbXBhcmlzb25zIGZvciBGbG9hdCpBcnJheXMsIHRob3VnaCwgc2luY2UgZS5nLiArMCA9PT0gLTAgYnV0IHRoZWlyCiAgLy8gYml0IHBhdHRlcm5zIGFyZSBub3QgaWRlbnRpY2FsLgogIH0gZWxzZSBpZiAoaXNWaWV3KGFjdHVhbCkgJiYgaXNWaWV3KGV4cGVjdGVkKSAmJgogICAgICAgICAgICAgcFRvU3RyaW5nKGFjdHVhbCkgPT09IHBUb1N0cmluZyhleHBlY3RlZCkgJiYKICAgICAgICAgICAgICEoYWN0dWFsIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5IHx8CiAgICAgICAgICAgICAgIGFjdHVhbCBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkpIHsKICAgIHJldHVybiBjb21wYXJlKG5ldyBVaW50OEFycmF5KGFjdHVhbC5idWZmZXIpLAogICAgICAgICAgICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoZXhwZWN0ZWQuYnVmZmVyKSkgPT09IDA7CgogIC8vIDcuNSBGb3IgYWxsIG90aGVyIE9iamVjdCBwYWlycywgaW5jbHVkaW5nIEFycmF5IG9iamVjdHMsIGVxdWl2YWxlbmNlIGlzCiAgLy8gZGV0ZXJtaW5lZCBieSBoYXZpbmcgdGhlIHNhbWUgbnVtYmVyIG9mIG93bmVkIHByb3BlcnRpZXMgKGFzIHZlcmlmaWVkCiAgLy8gd2l0aCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwpLCB0aGUgc2FtZSBzZXQgb2Yga2V5cwogIC8vIChhbHRob3VnaCBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgb3JkZXIpLCBlcXVpdmFsZW50IHZhbHVlcyBmb3IgZXZlcnkKICAvLyBjb3JyZXNwb25kaW5nIGtleSwgYW5kIGFuIGlkZW50aWNhbCAncHJvdG90eXBlJyBwcm9wZXJ0eS4gTm90ZTogdGhpcwogIC8vIGFjY291bnRzIGZvciBib3RoIG5hbWVkIGFuZCBpbmRleGVkIHByb3BlcnRpZXMgb24gQXJyYXlzLgogIH0gZWxzZSBpZiAoaXNCdWZmZXIoYWN0dWFsKSAhPT0gaXNCdWZmZXIoZXhwZWN0ZWQpKSB7CiAgICByZXR1cm4gZmFsc2U7CiAgfSBlbHNlIHsKICAgIG1lbW9zID0gbWVtb3MgfHwge2FjdHVhbDogW10sIGV4cGVjdGVkOiBbXX07CgogICAgdmFyIGFjdHVhbEluZGV4ID0gbWVtb3MuYWN0dWFsLmluZGV4T2YoYWN0dWFsKTsKICAgIGlmIChhY3R1YWxJbmRleCAhPT0gLTEpIHsKICAgICAgaWYgKGFjdHVhbEluZGV4ID09PSBtZW1vcy5leHBlY3RlZC5pbmRleE9mKGV4cGVjdGVkKSkgewogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICB9CgogICAgbWVtb3MuYWN0dWFsLnB1c2goYWN0dWFsKTsKICAgIG1lbW9zLmV4cGVjdGVkLnB1c2goZXhwZWN0ZWQpOwoKICAgIHJldHVybiBvYmpFcXVpdihhY3R1YWwsIGV4cGVjdGVkLCBzdHJpY3QsIG1lbW9zKTsKICB9Cn0KCmZ1bmN0aW9uIGlzQXJndW1lbnRzKG9iamVjdCkgewogIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSA9PSAnW29iamVjdCBBcmd1bWVudHNdJzsKfQoKZnVuY3Rpb24gb2JqRXF1aXYoYSwgYiwgc3RyaWN0LCBhY3R1YWxWaXNpdGVkT2JqZWN0cykgewogIGlmIChhID09PSBudWxsIHx8IGEgPT09IHVuZGVmaW5lZCB8fCBiID09PSBudWxsIHx8IGIgPT09IHVuZGVmaW5lZCkKICAgIHJldHVybiBmYWxzZTsKICAvLyBpZiBvbmUgaXMgYSBwcmltaXRpdmUsIHRoZSBvdGhlciBtdXN0IGJlIHNhbWUKICBpZiAodXRpbC5pc1ByaW1pdGl2ZShhKSB8fCB1dGlsLmlzUHJpbWl0aXZlKGIpKQogICAgcmV0dXJuIGEgPT09IGI7CiAgaWYgKHN0cmljdCAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSkgIT09IE9iamVjdC5nZXRQcm90b3R5cGVPZihiKSkKICAgIHJldHVybiBmYWxzZTsKICB2YXIgYUlzQXJncyA9IGlzQXJndW1lbnRzKGEpOwogIHZhciBiSXNBcmdzID0gaXNBcmd1bWVudHMoYik7CiAgaWYgKChhSXNBcmdzICYmICFiSXNBcmdzKSB8fCAoIWFJc0FyZ3MgJiYgYklzQXJncykpCiAgICByZXR1cm4gZmFsc2U7CiAgaWYgKGFJc0FyZ3MpIHsKICAgIGEgPSBwU2xpY2UuY2FsbChhKTsKICAgIGIgPSBwU2xpY2UuY2FsbChiKTsKICAgIHJldHVybiBfZGVlcEVxdWFsKGEsIGIsIHN0cmljdCk7CiAgfQogIHZhciBrYSA9IG9iamVjdEtleXMoYSk7CiAgdmFyIGtiID0gb2JqZWN0S2V5cyhiKTsKICB2YXIga2V5LCBpOwogIC8vIGhhdmluZyB0aGUgc2FtZSBudW1iZXIgb2Ygb3duZWQgcHJvcGVydGllcyAoa2V5cyBpbmNvcnBvcmF0ZXMKICAvLyBoYXNPd25Qcm9wZXJ0eSkKICBpZiAoa2EubGVuZ3RoICE9PSBrYi5sZW5ndGgpCiAgICByZXR1cm4gZmFsc2U7CiAgLy90aGUgc2FtZSBzZXQgb2Yga2V5cyAoYWx0aG91Z2ggbm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIG9yZGVyKSwKICBrYS5zb3J0KCk7CiAga2Iuc29ydCgpOwogIC8vfn5+Y2hlYXAga2V5IHRlc3QKICBmb3IgKGkgPSBrYS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgewogICAgaWYgKGthW2ldICE9PSBrYltpXSkKICAgICAgcmV0dXJuIGZhbHNlOwogIH0KICAvL2VxdWl2YWxlbnQgdmFsdWVzIGZvciBldmVyeSBjb3JyZXNwb25kaW5nIGtleSwgYW5kCiAgLy9+fn5wb3NzaWJseSBleHBlbnNpdmUgZGVlcCB0ZXN0CiAgZm9yIChpID0ga2EubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgIGtleSA9IGthW2ldOwogICAgaWYgKCFfZGVlcEVxdWFsKGFba2V5XSwgYltrZXldLCBzdHJpY3QsIGFjdHVhbFZpc2l0ZWRPYmplY3RzKSkKICAgICAgcmV0dXJuIGZhbHNlOwogIH0KICByZXR1cm4gdHJ1ZTsKfQoKLy8gOC4gVGhlIG5vbi1lcXVpdmFsZW5jZSBhc3NlcnRpb24gdGVzdHMgZm9yIGFueSBkZWVwIGluZXF1YWxpdHkuCi8vIGFzc2VydC5ub3REZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpOwoKYXNzZXJ0Lm5vdERlZXBFcXVhbCA9IGZ1bmN0aW9uIG5vdERlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CiAgaWYgKF9kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgZmFsc2UpKSB7CiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICdub3REZWVwRXF1YWwnLCBhc3NlcnQubm90RGVlcEVxdWFsKTsKICB9Cn07Cgphc3NlcnQubm90RGVlcFN0cmljdEVxdWFsID0gbm90RGVlcFN0cmljdEVxdWFsOwpmdW5jdGlvbiBub3REZWVwU3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgewogIGlmIChfZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIHRydWUpKSB7CiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICdub3REZWVwU3RyaWN0RXF1YWwnLCBub3REZWVwU3RyaWN0RXF1YWwpOwogIH0KfQoKCi8vIDkuIFRoZSBzdHJpY3QgZXF1YWxpdHkgYXNzZXJ0aW9uIHRlc3RzIHN0cmljdCBlcXVhbGl0eSwgYXMgZGV0ZXJtaW5lZCBieSA9PT0uCi8vIGFzc2VydC5zdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlX29wdCk7Cgphc3NlcnQuc3RyaWN0RXF1YWwgPSBmdW5jdGlvbiBzdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CiAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJz09PScsIGFzc2VydC5zdHJpY3RFcXVhbCk7CiAgfQp9OwoKLy8gMTAuIFRoZSBzdHJpY3Qgbm9uLWVxdWFsaXR5IGFzc2VydGlvbiB0ZXN0cyBmb3Igc3RyaWN0IGluZXF1YWxpdHksIGFzCi8vIGRldGVybWluZWQgYnkgIT09LiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Vfb3B0KTsKCmFzc2VydC5ub3RTdHJpY3RFcXVhbCA9IGZ1bmN0aW9uIG5vdFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKICBpZiAoYWN0dWFsID09PSBleHBlY3RlZCkgewogICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnIT09JywgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKTsKICB9Cn07CgpmdW5jdGlvbiBleHBlY3RlZEV4Y2VwdGlvbihhY3R1YWwsIGV4cGVjdGVkKSB7CiAgaWYgKCFhY3R1YWwgfHwgIWV4cGVjdGVkKSB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGV4cGVjdGVkKSA9PSAnW29iamVjdCBSZWdFeHBdJykgewogICAgcmV0dXJuIGV4cGVjdGVkLnRlc3QoYWN0dWFsKTsKICB9CgogIHRyeSB7CiAgICBpZiAoYWN0dWFsIGluc3RhbmNlb2YgZXhwZWN0ZWQpIHsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgfSBjYXRjaCAoZSkgewogICAgLy8gSWdub3JlLiAgVGhlIGluc3RhbmNlb2YgY2hlY2sgZG9lc24ndCB3b3JrIGZvciBhcnJvdyBmdW5jdGlvbnMuCiAgfQoKICBpZiAoRXJyb3IuaXNQcm90b3R5cGVPZihleHBlY3RlZCkpIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgogIHJldHVybiBleHBlY3RlZC5jYWxsKHt9LCBhY3R1YWwpID09PSB0cnVlOwp9CgpmdW5jdGlvbiBfdHJ5QmxvY2soYmxvY2spIHsKICB2YXIgZXJyb3I7CiAgdHJ5IHsKICAgIGJsb2NrKCk7CiAgfSBjYXRjaCAoZSkgewogICAgZXJyb3IgPSBlOwogIH0KICByZXR1cm4gZXJyb3I7Cn0KCmZ1bmN0aW9uIF90aHJvd3Moc2hvdWxkVGhyb3csIGJsb2NrLCBleHBlY3RlZCwgbWVzc2FnZSkgewogIHZhciBhY3R1YWw7CgogIGlmICh0eXBlb2YgYmxvY2sgIT09ICdmdW5jdGlvbicpIHsKICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJyJibG9jayIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7CiAgfQoKICBpZiAodHlwZW9mIGV4cGVjdGVkID09PSAnc3RyaW5nJykgewogICAgbWVzc2FnZSA9IGV4cGVjdGVkOwogICAgZXhwZWN0ZWQgPSBudWxsOwogIH0KCiAgYWN0dWFsID0gX3RyeUJsb2NrKGJsb2NrKTsKCiAgbWVzc2FnZSA9IChleHBlY3RlZCAmJiBleHBlY3RlZC5uYW1lID8gJyAoJyArIGV4cGVjdGVkLm5hbWUgKyAnKS4nIDogJy4nKSArCiAgICAgICAgICAgIChtZXNzYWdlID8gJyAnICsgbWVzc2FnZSA6ICcuJyk7CgogIGlmIChzaG91bGRUaHJvdyAmJiAhYWN0dWFsKSB7CiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsICdNaXNzaW5nIGV4cGVjdGVkIGV4Y2VwdGlvbicgKyBtZXNzYWdlKTsKICB9CgogIHZhciB1c2VyUHJvdmlkZWRNZXNzYWdlID0gdHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnOwogIHZhciBpc1Vud2FudGVkRXhjZXB0aW9uID0gIXNob3VsZFRocm93ICYmIHV0aWwuaXNFcnJvcihhY3R1YWwpOwogIHZhciBpc1VuZXhwZWN0ZWRFeGNlcHRpb24gPSAhc2hvdWxkVGhyb3cgJiYgYWN0dWFsICYmICFleHBlY3RlZDsKCiAgaWYgKChpc1Vud2FudGVkRXhjZXB0aW9uICYmCiAgICAgIHVzZXJQcm92aWRlZE1lc3NhZ2UgJiYKICAgICAgZXhwZWN0ZWRFeGNlcHRpb24oYWN0dWFsLCBleHBlY3RlZCkpIHx8CiAgICAgIGlzVW5leHBlY3RlZEV4Y2VwdGlvbikgewogICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCAnR290IHVud2FudGVkIGV4Y2VwdGlvbicgKyBtZXNzYWdlKTsKICB9CgogIGlmICgoc2hvdWxkVGhyb3cgJiYgYWN0dWFsICYmIGV4cGVjdGVkICYmCiAgICAgICFleHBlY3RlZEV4Y2VwdGlvbihhY3R1YWwsIGV4cGVjdGVkKSkgfHwgKCFzaG91bGRUaHJvdyAmJiBhY3R1YWwpKSB7CiAgICB0aHJvdyBhY3R1YWw7CiAgfQp9CgovLyAxMS4gRXhwZWN0ZWQgdG8gdGhyb3cgYW4gZXJyb3I6Ci8vIGFzc2VydC50aHJvd3MoYmxvY2ssIEVycm9yX29wdCwgbWVzc2FnZV9vcHQpOwoKYXNzZXJ0LnRocm93cyA9IGZ1bmN0aW9uKGJsb2NrLCAvKm9wdGlvbmFsKi9lcnJvciwgLypvcHRpb25hbCovbWVzc2FnZSkgewogIF90aHJvd3ModHJ1ZSwgYmxvY2ssIGVycm9yLCBtZXNzYWdlKTsKfTsKCi8vIEVYVEVOU0lPTiEgVGhpcyBpcyBhbm5veWluZyB0byB3cml0ZSBvdXRzaWRlIHRoaXMgbW9kdWxlLgphc3NlcnQuZG9lc05vdFRocm93ID0gZnVuY3Rpb24oYmxvY2ssIC8qb3B0aW9uYWwqL2Vycm9yLCAvKm9wdGlvbmFsKi9tZXNzYWdlKSB7CiAgX3Rocm93cyhmYWxzZSwgYmxvY2ssIGVycm9yLCBtZXNzYWdlKTsKfTsKCmFzc2VydC5pZkVycm9yID0gZnVuY3Rpb24oZXJyKSB7IGlmIChlcnIpIHRocm93IGVycjsgfTsKCnZhciBvYmplY3RLZXlzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24gKG9iaikgewogIHZhciBrZXlzID0gW107CiAgZm9yICh2YXIga2V5IGluIG9iaikgewogICAgaWYgKGhhc093bi5jYWxsKG9iaiwga2V5KSkga2V5cy5wdXNoKGtleSk7CiAgfQogIHJldHVybiBrZXlzOwp9OwoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oNykpKQoKLyoqKi8gfSksCi8qIDg5ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgovLyBOb3RlOiBhZGxlcjMyIHRha2VzIDEyJSBmb3IgbGV2ZWwgMCBhbmQgMiUgZm9yIGxldmVsIDYuCi8vIEl0IGlzbid0IHdvcnRoIGl0IHRvIG1ha2UgYWRkaXRpb25hbCBvcHRpbWl6YXRpb25zIGFzIGluIG9yaWdpbmFsLgovLyBTbWFsbCBzaXplIGlzIHByZWZlcmFibGUuCgovLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW4KLy8KLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCi8vCi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLAovLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0Ci8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKLy8KLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3QKLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZQovLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZQovLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlCi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgovLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLgoKZnVuY3Rpb24gYWRsZXIzMihhZGxlciwgYnVmLCBsZW4sIHBvcykgewogIHZhciBzMSA9IChhZGxlciAmIDB4ZmZmZikgfDAsCiAgICAgIHMyID0gKChhZGxlciA+Pj4gMTYpICYgMHhmZmZmKSB8MCwKICAgICAgbiA9IDA7CgogIHdoaWxlIChsZW4gIT09IDApIHsKICAgIC8vIFNldCBsaW1pdCB+IHR3aWNlIGxlc3MgdGhhbiA1NTUyLCB0byBrZWVwCiAgICAvLyBzMiBpbiAzMS1iaXRzLCBiZWNhdXNlIHdlIGZvcmNlIHNpZ25lZCBpbnRzLgogICAgLy8gaW4gb3RoZXIgY2FzZSAlPSB3aWxsIGZhaWwuCiAgICBuID0gbGVuID4gMjAwMCA/IDIwMDAgOiBsZW47CiAgICBsZW4gLT0gbjsKCiAgICBkbyB7CiAgICAgIHMxID0gKHMxICsgYnVmW3BvcysrXSkgfDA7CiAgICAgIHMyID0gKHMyICsgczEpIHwwOwogICAgfSB3aGlsZSAoLS1uKTsKCiAgICBzMSAlPSA2NTUyMTsKICAgIHMyICU9IDY1NTIxOwogIH0KCiAgcmV0dXJuIChzMSB8IChzMiA8PCAxNikpIHwwOwp9CgoKbW9kdWxlLmV4cG9ydHMgPSBhZGxlcjMyOwoKCi8qKiovIH0pLAovKiA5MCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKLy8gTm90ZTogd2UgY2FuJ3QgZ2V0IHNpZ25pZmljYW50IHNwZWVkIGJvb3N0IGhlcmUuCi8vIFNvIHdyaXRlIGNvZGUgdG8gbWluaW1pemUgc2l6ZSAtIG5vIHByZWdlbmVyYXRlZCB0YWJsZXMKLy8gYW5kIGFycmF5IHRvb2xzIGRlcGVuZGVuY2llcy4KCi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlcgovLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpbgovLwovLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAovLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMKLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KLy8KLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsCi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXQKLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgovLwovLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdAovLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlCi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlCi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmUKLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uCgovLyBVc2Ugb3JkaW5hcnkgYXJyYXksIHNpbmNlIHVudHlwZWQgbWFrZXMgbm8gYm9vc3QgaGVyZQpmdW5jdGlvbiBtYWtlVGFibGUoKSB7CiAgdmFyIGMsIHRhYmxlID0gW107CgogIGZvciAodmFyIG4gPSAwOyBuIDwgMjU2OyBuKyspIHsKICAgIGMgPSBuOwogICAgZm9yICh2YXIgayA9IDA7IGsgPCA4OyBrKyspIHsKICAgICAgYyA9ICgoYyAmIDEpID8gKDB4RURCODgzMjAgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTsKICAgIH0KICAgIHRhYmxlW25dID0gYzsKICB9CgogIHJldHVybiB0YWJsZTsKfQoKLy8gQ3JlYXRlIHRhYmxlIG9uIGxvYWQuIEp1c3QgMjU1IHNpZ25lZCBsb25ncy4gTm90IGEgcHJvYmxlbS4KdmFyIGNyY1RhYmxlID0gbWFrZVRhYmxlKCk7CgoKZnVuY3Rpb24gY3JjMzIoY3JjLCBidWYsIGxlbiwgcG9zKSB7CiAgdmFyIHQgPSBjcmNUYWJsZSwKICAgICAgZW5kID0gcG9zICsgbGVuOwoKICBjcmMgXj0gLTE7CgogIGZvciAodmFyIGkgPSBwb3M7IGkgPCBlbmQ7IGkrKykgewogICAgY3JjID0gKGNyYyA+Pj4gOCkgXiB0WyhjcmMgXiBidWZbaV0pICYgMHhGRl07CiAgfQoKICByZXR1cm4gKGNyYyBeICgtMSkpOyAvLyA+Pj4gMDsKfQoKCm1vZHVsZS5leHBvcnRzID0gY3JjMzI7CgoKLyoqKi8gfSksCi8qIDkxICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCm1vZHVsZS5leHBvcnRzID0gW1siYTE0MCIsIu6ThiIsNjJdLFsiYTE4MCIsIu6UhSIsMzJdLFsiYTI0MCIsIu6UpiIsNjJdLFsiYTI4MCIsIu6VpSIsMzJdLFsiYTJhYiIsIu6dpiIsNV0sWyJhMmUzIiwi4oKs7p2tIl0sWyJhMmVmIiwi7p2u7p2vIl0sWyJhMmZkIiwi7p2w7p2xIl0sWyJhMzQwIiwi7paGIiw2Ml0sWyJhMzgwIiwi7peFIiwzMSwi44CAIl0sWyJhNDQwIiwi7pemIiw2Ml0sWyJhNDgwIiwi7pilIiwzMl0sWyJhNGY0Iiwi7p2yIiwxMF0sWyJhNTQwIiwi7pmGIiw2Ml0sWyJhNTgwIiwi7pqFIiwzMl0sWyJhNWY3Iiwi7p29Iiw3XSxbImE2NDAiLCLumqYiLDYyXSxbImE2ODAiLCLum6UiLDMyXSxbImE2YjkiLCLunoUiLDddLFsiYTZkOSIsIu6ejSIsNl0sWyJhNmVjIiwi7p6U7p6VIl0sWyJhNmYzIiwi7p6WIl0sWyJhNmY2Iiwi7p6XIiw4XSxbImE3NDAiLCLunIYiLDYyXSxbImE3ODAiLCLunYUiLDMyXSxbImE3YzIiLCLunqAiLDE0XSxbImE3ZjIiLCLunq8iLDEyXSxbImE4OTYiLCLunrwiLDEwXSxbImE4YmMiLCLun4ciXSxbImE4YmYiLCLHuSJdLFsiYThjMSIsIu6fie6fiu6fi+6fjCJdLFsiYThlYSIsIu6fjSIsMjBdLFsiYTk1OCIsIu6foiJdLFsiYTk1YiIsIu6foyJdLFsiYTk1ZCIsIu6fpO6fpe6fpiJdLFsiYTk4OSIsIuOAvuK/sCIsMTFdLFsiYTk5NyIsIu6ftCIsMTJdLFsiYTlmMCIsIu6ggSIsMTRdLFsiYWFhMSIsIu6AgCIsOTNdLFsiYWJhMSIsIu6BniIsOTNdLFsiYWNhMSIsIu6CvCIsOTNdLFsiYWRhMSIsIu6EmiIsOTNdLFsiYWVhMSIsIu6FuCIsOTNdLFsiYWZhMSIsIu6HliIsOTNdLFsiZDdmYSIsIu6gkCIsNF0sWyJmOGExIiwi7oi0Iiw5M10sWyJmOWExIiwi7oqSIiw5M10sWyJmYWExIiwi7ouwIiw5M10sWyJmYmExIiwi7o2OIiw5M10sWyJmY2ExIiwi7o6sIiw5M10sWyJmZGExIiwi7pCKIiw5M10sWyJmZTUwIiwi4rqB7qCW7qCX7qCY4rqE45Gz45GH4rqI4rqL7qCe45ae45ia45iO4rqM4rqX46Wu46SY7qCm46eP46ef46mz46eQ7qCr7qCs462O47Gu47Og4rqn7qCx7qCy4rqq5IGW5IWf4rqu5Iy34rqz4rq24rq37qC75I6x5I6s4rq75I+d5JOW5Jmh5JmM7qGDIl0sWyJmZTgwIiwi5Jyj5Jyp5J285J6N4ruK5KWH5KW65KW95KaC5KaD5KaF5KaG5Kaf5Kab5Ka35Ka27qGU7qGV5LKj5LKf5LKg5LKh5LG35LKi5LSTIiw2LCLktq7uoaTukagiLDkzXV0KCi8qKiovIH0pLAovKiA5MiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Cgptb2R1bGUuZXhwb3J0cyA9IFtbIjAiLCJcdTAwMDAiLDEyN10sWyJhMTQwIiwi44CA77yM44CB44CC77yO4oCn77yb77ya77yf77yB77iw4oCm4oCl77mQ77mR77mSwrfvuZTvuZXvuZbvuZfvvZzigJPvuLHigJTvuLPilbTvuLTvuY/vvIjvvInvuLXvuLbvvZvvvZ3vuLfvuLjjgJTjgJXvuLnvuLrjgJDjgJHvuLvvuLzjgIrjgIvvuL3vuL7jgIjjgInvuL/vuYDjgIzjgI3vuYHvuYLjgI7jgI/vuYPvuYTvuZnvuZoiXSxbImExYTEiLCLvuZvvuZzvuZ3vuZ7igJjigJnigJzigJ3jgJ3jgJ7igLXigLLvvIPvvIbvvIrigLvCp+OAg+KXi+KXj+KWs+KWsuKXjuKYhuKYheKXh+KXhuKWoeKWoOKWveKWvOOKo+KEhcKv77+j77y/y43vuYnvuYrvuY3vuY7vuYvvuYzvuZ/vuaDvuaHvvIvvvI3Dl8O3wrHiiJrvvJzvvJ7vvJ3iiabiiafiiaDiiJ7iiZLiiaHvuaIiLDQsIu+9nuKIqeKIquKKpeKIoOKIn+KKv+OPkuOPkeKIq+KIruKIteKItOKZgOKZguKKleKKmeKGkeKGk+KGkOKGkuKGluKGl+KGmeKGmOKIpeKIo++8jyJdLFsiYTI0MCIsIu+8vOKIle+5qO+8hO+/peOAku+/oO+/oe+8he+8oOKEg+KEie+5qe+5qu+5q+OPleOOnOOOneOOnuOPjuOOoeOOjuOOj+OPhMKw5YWZ5YWb5YWe5YWd5YWh5YWj5Zen55Op57OO4paBIiw3LCLilo/ilo7ilo3ilozilovilorilonilLzilLTilKzilKTilJzilpTilIDilILilpXilIzilJDilJTilJjila0iXSxbImEyYTEiLCLila7ilbDila/ilZDilZ7ilarilaHil6Lil6Pil6Xil6TilbHilbLilbPvvJAiLDksIuKFoCIsOSwi44ChIiw4LCLljYHljYTljYXvvKEiLDI1LCLvvYEiLDIxXSxbImEzNDAiLCLvvZfvvZjvvZnvvZrOkSIsMTYsIs6jIiw2LCLOsSIsMTYsIs+DIiw2LCLjhIUiLDEwXSxbImEzYTEiLCLjhJAiLDI1LCLLmcuJy4rLh8uLIl0sWyJhM2UxIiwi4oKsIl0sWyJhNDQwIiwi5LiA5LmZ5LiB5LiD5LmD5Lmd5LqG5LqM5Lq65YS/5YWl5YWr5Yeg5YiA5YiB5Yqb5YyV5Y2B5Y2c5Y+I5LiJ5LiL5LiI5LiK5Lir5Li45Yeh5LmF5LmI5Lmf5Lme5LqO5Lqh5YWA5YiD5Yu65Y2D5Y+J5Y+j5Zyf5aOr5aSV5aSn5aWz5a2Q5a2R5a2T5a+45bCP5bCi5bC45bGx5bed5bel5bex5bey5bez5be+5bmy5bu+5byL5byT5omNIl0sWyJhNGExIiwi5LiR5LiQ5LiN5Lit5Liw5Li55LmL5bC55LqI5LqR5LqV5LqS5LqU5Lqi5LuB5LuA5LuD5LuG5LuH5LuN5LuK5LuL5LuE5YWD5YWB5YWn5YWt5YWu5YWs5YaX5Ye25YiG5YiH5YiI5Yu75Yu+5Yu/5YyW5Yy55Y2I5Y2H5Y2F5Y2e5Y6E5Y+L5Y+K5Y+N5aOs5aSp5aSr5aSq5aSt5a2U5bCR5bCk5bC65bGv5be05bm75bu/5byU5byV5b+D5oiI5oi25omL5omO5pSv5paH5paX5pak5pa55pel5puw5pyI5pyo5qyg5q2i5q255q+L5q+U5q+b5rCP5rC054Gr54iq54i254i754mH54mZ54mb54qs546L5LiZIl0sWyJhNTQwIiwi5LiW5LiV5LiU5LiY5Li75LmN5LmP5LmO5Lul5LuY5LuU5LuV5LuW5LuX5Luj5Luk5LuZ5Lue5YWF5YWE5YaJ5YaK5Yas5Ye55Ye65Ye45YiK5Yqg5Yqf5YyF5YyG5YyX5Yyd5Luf5Y2K5Y2J5Y2h5Y2g5Y2v5Y2u5Y675Y+v5Y+k5Y+z5Y+s5Y+u5Y+p5Y+o5Y+85Y+45Y+15Y+r5Y+m5Y+q5Y+y5Y+x5Y+w5Y+l5Y+t5Y+75Zub5Zua5aSWIl0sWyJhNWExIiwi5aSu5aSx5aW05aW25a2V5a6D5bC85beo5ben5bem5biC5biD5bmz5bm85byB5byY5byX5b+F5oiK5omT5omU5omS5omR5pal5pem5pyu5pys5pyq5pyr5pyt5q2j5q+N5rCR5rCQ5rC45rGB5rGA5rC+54qv546E546J55Oc55Om55SY55Sf55So55Sp55Sw55Sx55Sy55Sz55aL55m955qu55q/55uu55+b55+i55+z56S656a+56m056uL5Lie5Lif5LmS5LmT5Lmp5LqZ5Lqk5Lqm5Lql5Lu/5LyJ5LyZ5LyK5LyV5LyN5LyQ5LyR5LyP5Luy5Lu25Lu75Luw5Luz5Lu95LyB5LyL5YWJ5YWH5YWG5YWI5YWoIl0sWyJhNjQwIiwi5YWx5YaN5Yaw5YiX5YiR5YiS5YiO5YiW5Yqj5YyI5Yyh5Yyg5Y2w5Y2x5ZCJ5ZCP5ZCM5ZCK5ZCQ5ZCB5ZCL5ZCE5ZCR5ZCN5ZCI5ZCD5ZCO5ZCG5ZCS5Zug5Zue5Zud5Zyz5Zyw5Zyo5Zyt5Zys5Zyv5Zyp5aSZ5aSa5aS35aS45aaE5aW45aaD5aW95aW55aaC5aaB5a2X5a2Y5a6H5a6I5a6F5a6J5a+65bCW5bG55bee5biG5bm25bm0Il0sWyJhNmExIiwi5byP5byb5b+Z5b+W5oiO5oiM5oiN5oiQ5omj5omb5omY5pS25pep5peo5pes5pet5puy5puz5pyJ5py95py05pyx5py15qyh5q2k5q275rCW5rGd5rGX5rGZ5rGf5rGg5rGQ5rGV5rGh5rGb5rGN5rGO54Gw54mf54md55m+56u557Gz57O457y2576K57696ICB6ICD6ICM6ICS6ICz6IG/6IKJ6IKL6IKM6Iej6Ieq6Iez6Ie86IiM6Iib6Iif6Imu6Imy6Im+6Jmr6KGA6KGM6KGj6KW/6Zih5Liy5Lqo5L2N5L2P5L2H5L2X5L2e5Ly05L2b5L2V5Lyw5L2Q5L2R5Ly95Ly65Ly45L2D5L2U5Ly85L2G5L2jIl0sWyJhNzQwIiwi5L2c5L2g5Lyv5L2O5Ly25L2Z5L2d5L2I5L2a5YWM5YWL5YWN5YW15Ya25Ya35Yil5Yik5Yip5Yiq5Yio5Yqr5Yqp5Yqq5Yqs5Yyj5Y2z5Y215ZCd5ZCt5ZCe5ZC+5ZCm5ZGO5ZCn5ZGG5ZGD5ZCz5ZGI5ZGC5ZCb5ZCp5ZGK5ZC55ZC75ZC45ZCu5ZC15ZC25ZCg5ZC85ZGA5ZCx5ZCr5ZCf5ZCs5Zuq5Zuw5Zuk5Zur5Z2K5Z2R5Z2A5Z2NIl0sWyJhN2ExIiwi5Z2H5Z2O5Zy+5Z2Q5Z2P5Zy75aOv5aS+5aad5aaS5aao5aae5aaj5aaZ5aaW5aaN5aak5aaT5aaK5aal5a2d5a2c5a2a5a2b5a6M5a6L5a6P5bCs5bGA5bGB5bC/5bC+5bKQ5bKR5bKU5bKM5ber5biM5bqP5bqH5bqK5bu35byE5byf5b2k5b2i5b235b255b+Y5b+M5b+X5b+N5b+x5b+r5b+45b+q5oiS5oiR5oqE5oqX5oqW5oqA5om25oqJ5omt5oqK5om85om+5om55omz5oqS5omv5oqY5omu5oqV5oqT5oqR5oqG5pS55pS75pS45pex5pu05p2f5p2O5p2P5p2Q5p2R5p2c5p2W5p2e5p2J5p2G5p2gIl0sWyJhODQwIiwi5p2T5p2X5q2l5q+P5rGC5rGe5rKZ5rKB5rKI5rKJ5rKF5rKb5rGq5rG65rKQ5rGw5rKM5rGo5rKW5rKS5rG95rKD5rGy5rG+5rG05rKG5rG25rKN5rKU5rKY5rKC54G254G854G954G454mi54mh54mg54uE54uC546W55Ss55Sr55S355S455qC55uv55+j56eB56eA56a/56m257O7572V6IKW6IKT6IKd6IKY6IKb6IKa6IKy6Imv6IqSIl0sWyJhOGExIiwi6IqL6IqN6KaL6KeS6KiA6LC36LGG6LGV6LKd6LWk6LWw6Laz6Lqr6LuK6L6b6L6w6L+C6L+G6L+F6L+E5beh6YKR6YKi6YKq6YKm6YKj6YWJ6YeG6YeM6Ziy6Ziu6Zix6Ziq6Zis5Lim5LmW5Lmz5LqL5Lqb5Lqe5Lqr5Lqs5L2v5L6d5L6N5L2z5L2/5L2s5L6b5L6L5L6G5L6D5L2w5L215L6I5L2p5L275L6W5L2+5L6P5L6R5L265YWU5YWS5YWV5YWp5YW35YW25YW45Ya95Ye95Yi75Yi45Yi35Yi65Yiw5Yiu5Yi25YmB5Yq+5Yq75Y2S5Y2U5Y2T5Y2R5Y2m5Y235Y245Y255Y+W5Y+U5Y+X5ZGz5ZG1Il0sWyJhOTQwIiwi5ZKW5ZG45ZKV5ZKA5ZG75ZG35ZKE5ZKS5ZKG5ZG85ZKQ5ZGx5ZG25ZKM5ZKa5ZGi5ZGo5ZKL5ZG95ZKO5Zu65Z6D5Z235Z2q5Z2p5Z2h5Z2m5Z2k5Z285aSc5aWJ5aWH5aWI5aWE5aWU5aa+5aa75aeU5aa55aau5aeR5aeG5aeQ5aeN5aeL5aeT5aeK5aav5aaz5aeS5aeF5a2f5a2k5a2j5a6X5a6a5a6Y5a6c5a6Z5a6b5bCa5bGI5bGFIl0sWyJhOWExIiwi5bGG5bK35bKh5bK45bKp5bKr5bKx5bKz5biY5bia5biW5biV5bib5biR5bm45bqa5bqX5bqc5bqV5bqW5bu25bym5byn5byp5b6A5b6B5b2/5b285b+d5b+g5b+95b+15b+/5oCP5oCU5oCv5oC15oCW5oCq5oCV5oCh5oCn5oCp5oCr5oCb5oiW5oiV5oi/5oi+5omA5om/5ouJ5ouM5ouE5oq/5ouC5oq55ouS5oub5oqr5ouT5ouU5ouL5ouI5oqo5oq95oq85ouQ5ouZ5ouH5ouN5oq15oua5oqx5ouY5ouW5ouX5ouG5oqs5ouO5pS+5pan5pa85pe65piU5piT5piM5piG5piC5piO5piA5piP5piV5piKIl0sWyJhYTQwIiwi5piH5pyN5pyL5p2t5p6L5p6V5p2x5p6c5p2z5p235p6H5p6d5p6X5p2v5p2w5p2/5p6J5p2+5p6Q5p215p6a5p6T5p285p2q5p2y5qyj5q2m5q2n5q2/5rCT5rCb5rOj5rOo5rOz5rKx5rOM5rOl5rKz5rK95rK+5rK85rOi5rKr5rOV5rOT5rK45rOE5rK55rOB5rKu5rOX5rOF5rOx5rK/5rK75rOh5rOb5rOK5rKs5rOv5rOc5rOW5rOgIl0sWyJhYWExIiwi54KV54KO54KS54KK54KZ54is54it54i454mI54mn54mp54uA54uO54uZ54uX54uQ546p546o546f546r546l55S955ad55aZ55aa55qE55uC55uy55u055+l55+956S+56WA56WB56eJ56eI56m656m556u657O+572U576M576L6ICF6IK66IKl6IKi6IKx6IKh6IKr6IKp6IK06IKq6IKv6Iel6Ie+6IiN6Iqz6Iqd6IqZ6Iqt6Iq96Iqf6Iq56Iqx6Iqs6Iql6Iqv6Iq46Iqj6Iqw6Iq+6Iq36JmO6Jmx5Yid6KGo6LuL6L+O6L+U6L+R6YK16YK46YKx6YK26YeH6YeR6ZW36ZaA6Zic6ZmA6Zi/6Zi76ZmEIl0sWyJhYjQwIiwi6ZmC6Zq56Zuo6Z2S6Z2e5Lqf5Lqt5Lqu5L+h5L615L6v5L6/5L+g5L+R5L+P5L+d5L+D5L625L+Y5L+f5L+K5L+X5L6u5L+Q5L+E5L+C5L+a5L+O5L+e5L635YWX5YaS5YaR5Yag5YmO5YmD5YmK5YmN5YmM5YmL5YmH5YuH5YuJ5YuD5YuB5YyN5Y2X5Y275Y6a5Y+b5ZKs5ZOA5ZKo5ZOO5ZOJ5ZK45ZKm5ZKz5ZOH5ZOC5ZK95ZKq5ZOBIl0sWyJhYmExIiwi5ZOE5ZOI5ZKv5ZKr5ZKx5ZK75ZKp5ZKn5ZK/5Zu/5Z6C5Z6L5Z6g5Z6j5Z6i5Z+O5Z6u5Z6T5aWV5aWR5aWP5aWO5aWQ5aec5aeY5ae/5aej5aeo5aiD5ael5aeq5aea5aem5aiB5ae75a2p5a6j5a6m5a6k5a6i5a6l5bCB5bGO5bGP5bGN5bGL5bOZ5bOS5be35bid5bil5bif5bm95bqg5bqm5bu65byI5byt5b2l5b6I5b6F5b6K5b6L5b6H5b6M5b6J5oCS5oCd5oCg5oCl5oCO5oCo5oGN5oGw5oGo5oGi5oGG5oGD5oGs5oGr5oGq5oGk5omB5ouc5oyW5oyJ5ou85out5oyB5ouu5ou95oyH5oux5ou3Il0sWyJhYzQwIiwi5ouv5ous5ou+5ou05oyR5oyC5pS/5pWF5par5pa95pei5pil5pit5pig5pin5piv5pif5pio5pix5pik5pu35p+/5p+T5p+x5p+U5p+Q5p+s5p625p6v5p+15p+p5p+v5p+E5p+R5p605p+a5p+l5p645p+P5p+e5p+z5p6w5p+Z5p+i5p+d5p+S5q2q5q6D5q6G5q615q+S5q+X5rCf5rOJ5rSL5rSy5rSq5rWB5rSl5rSM5rSx5rSe5rSXIl0sWyJhY2ExIiwi5rS75rS95rS+5rS25rSb5rO15rS55rSn5rS45rSp5rSu5rS15rSO5rSr54Kr54K654Kz54Ks54Kv54Kt54K454Ku54Kk54iw54my54mv54m054up54ug54uh546354+K5467546y54+N54+A546z55Sa55St55WP55WM55WO55WL55ar55ak55al55ai55aj55m455qG55qH55qI55uI55uG55uD55uF55yB55u555u455yJ55yL55u+55u855yH55+c56CC56CU56CM56CN56WG56WJ56WI56WH56a556a656eR56eS56eL56m/56qB56u/56u957G957SC57SF57SA57SJ57SH57SE57SG57y4576O576/6ICEIl0sWyJhZDQwIiwi6ICQ6ICN6ICR6IC26IOW6IOl6IOa6IOD6IOE6IOM6IOh6IOb6IOO6IOe6IOk6IOd6Ie06Iii6Iun6IyD6IyF6Iuj6Iub6Ium6IyE6Iul6IyC6IyJ6IuS6IuX6Iux6IyB6Iuc6IuU6IuR6Iue6IuT6Iuf6Iuv6IyG6JmQ6Jm56Jm76Jm66KGN6KGr6KaB6KeU6KiI6KiC6KiD6LKe6LKg6LW06LWz6La06LuN6LuM6L+w6L+m6L+i6L+q6L+lIl0sWyJhZGExIiwi6L+t6L+r6L+k6L+o6YOK6YOO6YOB6YOD6YWL6YWK6YeN6ZaC6ZmQ6ZmL6ZmM6ZmN6Z2i6Z2p6Z+L6Z+t6Z+z6aCB6aKo6aOb6aOf6aaW6aaZ5LmY5Lqz5YCM5YCN5YCj5L+v5YCm5YCl5L+45YCp5YCW5YCG5YC85YCf5YCa5YCS5YCR5L+65YCA5YCU5YCo5L+x5YCh5YCL5YCZ5YCY5L+z5L+u5YCt5YCq5L++5YCr5YCJ5YW85Yak5Yal5Yai5YeN5YeM5YeG5YeL5YmW5Ymc5YmU5Ymb5Ymd5Yyq5Y2/5Y6f5Y6d5Y+f5ZOo5ZSQ5ZSB5ZS35ZO85ZOl5ZOy5ZSG5ZO65ZSU5ZOp5ZOt5ZOh5ZSJ5ZOu5ZOqIl0sWyJhZTQwIiwi5ZOm5ZSn5ZSH5ZO95ZSP5ZyD5ZyE5Z+C5Z+U5Z+L5Z+D5aCJ5aSP5aWX5aWY5aWa5aiR5aiY5aic5aif5aib5aiT5aes5aig5aij5aip5ail5aiM5aiJ5a2r5bGY5a6w5a6z5a625a605a6u5a615a655a645bCE5bGR5bGV5bGQ5bOt5bO95bO75bOq5bOo5bOw5bO25bSB5bO05beu5bit5bir5bqr5bqt5bqn5byx5b6S5b6R5b6Q5oGZIl0sWyJhZWExIiwi5oGj5oGl5oGQ5oGV5oGt5oGp5oGv5oKE5oKf5oKa5oKN5oKU5oKM5oKF5oKW5omH5ouz5oyI5ou/5o2O5oy+5oyv5o2V5o2C5o2G5o2P5o2J5oy65o2Q5oy95oyq5oyr5oyo5o2N5o2M5pWI5pWJ5paZ5peB5peF5pmC5pmJ5pmP5pmD5pmS5pmM5pmF5pmB5pu45pyU5pyV5pyX5qCh5qC45qGI5qGG5qGT5qC55qGC5qGU5qCp5qKz5qCX5qGM5qGR5qC95p+05qGQ5qGA5qC85qGD5qCq5qGF5qCT5qCY5qGB5q6K5q6J5q635rCj5rCn5rCo5rCm5rCk5rOw5rWq5raV5raI5raH5rWm5rW45rW35rWZ5raTIl0sWyJhZjQwIiwi5rWs5raJ5rWu5rWa5rW05rWp5raM5raK5rW55raF5rWl5raU54OK54OY54Ok54OZ54OI54OP54i554m554u854u554u954u454u3546G54+t55CJ54+u54+g54+q54+e55WU55Wd55Wc55Wa55WZ55a+55eF55eH55ay55az55a955a855a555eC55a455qL55qw55uK55uN55uO55yp55yf55yg55yo55+p56Cw56Cn56C456Cd56C056C3Il0sWyJhZmExIiwi56Cl56Ct56Cg56Cf56Cy56WV56WQ56Wg56Wf56WW56We56Wd56WX56Wa56ek56ej56en56ef56em56ep56eY56qE56qI56uZ56yG56yR57KJ57Sh57SX57SL57SK57Sg57Si57SU57SQ57SV57Sa57Sc57SN57SZ57Sb57y6572f576U57+F57+B6ICG6ICY6ICV6ICZ6ICX6IC96IC/6IOx6ISC6IOw6ISF6IOt6IO06ISG6IO46IOz6ISI6IO96ISK6IO86IOv6Iet6Ies6IiA6IiQ6Iiq6Iir6Iio6Iis6Iq76Iyr6I2S6I2U6I2K6Iy46I2Q6I2J6Iy16Iy06I2P6Iyy6Iy56Iy26IyX6I2A6Iyx6Iyo6I2DIl0sWyJiMDQwIiwi6JmU6JqK6Jqq6JqT6Jqk6Jqp6JqM6Jqj6Jqc6KGw6KG36KKB6KKC6KG96KG56KiY6KiQ6KiO6KiM6KiV6KiK6KiX6KiT6KiW6KiP6KiR6LGI6LG66LG56LKh6LKi6LW36Lqs6LuS6LuU6LuP6L6x6YCB6YCG6L+36YCA6L+66L+06YCD6L+96YCF6L+46YKV6YOh6YOd6YOi6YWS6YWN6YWM6YeY6Yed6YeX6Yec6YeZ6ZaD6Zmi6Zmj6ZmhIl0sWyJiMGExIiwi6Zmb6Zmd6Zmk6ZmY6Zme6Zq76aOi6aas6aqo6auY6ayl6ayy6ay85Lm+5YG65YG95YGc5YGH5YGD5YGM5YGa5YGJ5YGl5YG25YGO5YGV5YG15YG05YG35YGP5YCP5YGv5YGt5YWc5YaV5Yew5Ymq5Ymv5YuS5YuZ5YuY5YuV5YyQ5YyP5YyZ5Yy/5Y2A5Yy+5Y+D5pu85ZWG5ZWq5ZWm5ZWE5ZWe5ZWh5ZWD5ZWK5ZSx5ZWW5ZWP5ZWV5ZSv5ZWk5ZS45ZSu5ZWc5ZSs5ZWj5ZSz5ZWB5ZWX5ZyI5ZyL5ZyJ5Z+f5aCF5aCK5aCG5Z+g5Z+k5Z+65aCC5aC15Z+35Z+55aSg5aWi5ai25amB5amJ5amm5amq5amAIl0sWyJiMTQwIiwi5ai85ami5ama5amG5amK5a2w5a+H5a+F5a+E5a+C5a6/5a+G5bCJ5bCI5bCH5bGg5bGc5bGd5bSH5bSG5bSO5bSb5bSW5bSi5bSR5bSp5bSU5bSZ5bSk5bSn5bSX5bei5bi45bi25biz5bi35bq35bq45bq25bq15bq+5by15by35b2X5b2s5b2p5b2r5b6X5b6Z5b6e5b6Y5b6h5b6g5b6c5oG/5oKj5oKJ5oKg5oKo5oOL5oK05oOm5oK9Il0sWyJiMWExIiwi5oOF5oK75oK15oOc5oK85oOY5oOV5oOG5oOf5oK45oOa5oOH5oia5oib5omI5o6g5o6n5o2y5o6W5o6i5o6l5o235o2n5o6Y5o6q5o2x5o6p5o6J5o6D5o6b5o2r5o6o5o6E5o6I5o6Z5o6h5o6s5o6S5o6P5o6A5o275o2p5o2o5o265pWd5pWW5pWR5pWZ5pWX5ZWf5pWP5pWY5pWV5pWU5pac5pab5pas5peP5peL5peM5peO5pmd5pma5pmk5pmo5pmm5pme5pu55YuX5pyb5qKB5qKv5qKi5qKT5qK15qG/5qG25qKx5qKn5qKX5qKw5qKD5qOE5qKt5qKG5qKF5qKU5qKd5qKo5qKf5qKh5qKC5qyy5q66Il0sWyJiMjQwIiwi5q+r5q+s5rCr5raO5ra85rez5reZ5ray5reh5reM5rek5re75re65riF5reH5reL5rav5reR5rau5ree5re55ra45re35re15reF5reS5ria5ra15rea5rer5reY5req5rex5reu5reo5reG5reE5raq5res5ra/5rem54O554SJ54SK54O954Ov54i954m954qB54yc54yb54yW54yT54yZ546H55CF55CK55CD55CG54++55CN55Og55O2Il0sWyJiMmExIiwi55O355Sc55Si55Wl55Wm55Wi55Ww55aP55eU55eV55a155eK55eN55qO55uU55uS55ub55y355y+55y855y255y455y656Gr56GD56GO56Wl56Wo56Wt56e756qS56qV56yg56yo56yb56ys56ym56yZ56ye56yu57KS57KX57KV57WG57WD57Wx57Su57S557S857WA57Sw57Sz57WE57Sv57WC57Sy57Sx57y9576e576a57+M57+O57+S6ICc6IGK6IGG6ISv6ISW6ISj6ISr6ISp6ISw6ISk6IiC6Ii16Ii36Ii26Ii56I6O6I6e6I6Y6I246I6i6I6W6I696I6r6I6S6I6K6I6T6I6J6I6g6I236I276I28Il0sWyJiMzQwIiwi6I6G6I6n6JmV5b2q6JuH6JuA6Jq26JuE6Jq16JuG6JuL6Jqx6Jqv6JuJ6KGT6KKe6KKI6KKr6KKS6KKW6KKN6KKL6KaT6KaP6Kiq6Kid6Kij6Kil6Kix6Kit6Kif6Kib6Kii6LGJ6LGa6LKp6LKs6LKr6LKo6LKq6LKn6LWn6LWm6La+6La66Lub6Luf6YCZ6YCN6YCa6YCX6YCj6YCf6YCd6YCQ6YCV6YCe6YCg6YCP6YCi6YCW6YCb6YCUIl0sWyJiM2ExIiwi6YOo6YOt6YO96YWX6YeO6Ye16Yem6Yej6Yen6Yet6Yep6ZaJ6Zmq6Zm16Zmz6Zm46Zmw6Zm06Zm26Zm36Zms6ZuA6Zuq6Zup56ug56uf6aCC6aCD6a2a6bOl6bm16bm/6bql6bq75YKi5YKN5YKF5YKZ5YKR5YKA5YKW5YKY5YKa5pyA5Yex5Ymy5Ym05Ym15Ymp5Yue5Yud5Yub5Y2a5Y6l5ZW75ZaA5Zan5ZW85ZaK5Zad5ZaY5ZaC5Zac5Zaq5ZaU5ZaH5ZaL5ZaD5Zaz5Zau5Zaf5ZS+5Zay5Zaa5Za75Zas5Zax5ZW+5ZaJ5Zar5ZaZ5ZyN5aCv5aCq5aC05aCk5aCw5aCx5aCh5aCd5aCg5aO55aO65aWgIl0sWyJiNDQwIiwi5am35aqa5am/5aqS5aqb5aqn5a2z5a2x5a+S5a+M5a+T5a+Q5bCK5bCL5bCx5bWM5bWQ5bS05bWH5be95bmF5bi95bmA5bmD5bm+5buK5buB5buC5buE5by85b2t5b6p5b6q5b6o5oOR5oOh5oKy5oK25oOg5oSc5oSj5oO65oSV5oOw5oO75oO05oWo5oOx5oSO5oO25oSJ5oSA5oSS5oif5omJ5o6j5o6M5o+P5o+A5o+p5o+J5o+G5o+NIl0sWyJiNGExIiwi5o+S5o+j5o+Q5o+h5o+W5o+t5o+u5o225o+05o+q5o+b5pGS5o+a5o+55pWe5pWm5pWi5pWj5paR5paQ5pav5pmu5pmw5pm05pm25pmv5pqR5pm65pm+5pm35pu+5pu/5pyf5pyd5qO65qOV5qOg5qOY5qOX5qSF5qOf5qO15qOu5qOn5qO55qOS5qOy5qOj5qOL5qON5qSN5qSS5qSO5qOJ5qOa5qWu5qO75qy+5qy65qy95q6Y5q6W5q685q+v5rCu5rCv5rCs5riv5ri45rmU5rih5riy5rmn5rmK5rig5ril5rij5rib5rmb5rmY5rik5rmW5rmu5rit5rim5rmv5ri05rmN5ri65ris5rmD5rid5ri+5ruLIl0sWyJiNTQwIiwi5rqJ5riZ5rmO5rmj5rmE5rmy5rmp5rmf54SZ54Sa54Sm54Sw54Sh54S254Wu54Sc54mM54qE54qA54y254yl54y054yp55C655Cq55Cz55Ci55Cl55C155C255C055Cv55Cb55Cm55Co55Sl55Sm55Wr55Wq55ei55eb55ej55eZ55eY55ee55eg55m755m855qW55qT55q055uc552P55+t56Gd56Gs56Gv56iN56iI56iL56iF56iA56qYIl0sWyJiNWExIiwi56qX56qW56ul56uj562J562W562G562Q562S562U562N562L562P562R57Kf57Kl57We57WQ57Wo57WV57Sr57Wu57Wy57Wh57Wm57Wi57Ww57Wz5ZaE57+U57+V6ICL6IGS6IKF6IWV6IWU6IWL6IWR6IWO6IS56IWG6IS+6IWM6IWT6IW06IiS6Iic6I+p6JCD6I+46JCN6I+g6I+F6JCL6I+B6I+v6I+x6I+06JGX6JCK6I+w6JCM6I+M6I+96I+y6I+K6JC46JCO6JCE6I+c6JCH6I+U6I+f6Jmb6Juf6JuZ6Jut6JuU6Jub6Juk6JuQ6Jue6KGX6KOB6KOC6KKx6KaD6KaW6Ki76Kmg6KmV6Kme6Ki86KmBIl0sWyJiNjQwIiwi6KmU6Kmb6KmQ6KmG6Ki06Ki66Ki26KmW6LGh6LKC6LKv6LK86LKz6LK96LOB6LK76LOA6LK06LK36LK26LK/6LK46LaK6LaF6LaB6LeO6Led6LeL6Lea6LeR6LeM6Leb6LeG6Lu76Lu46Lu86L6c6YCu6YC16YCx6YC46YCy6YC26YSC6YO16YSJ6YO+6YWj6YWl6YeP6YiU6YiV6Yij6YiJ6Yie6YiN6YiQ6YiH6YiR6ZaU6ZaP6ZaL6ZaRIl0sWyJiNmExIiwi6ZaT6ZaS6ZaO6ZqK6ZqO6ZqL6Zm96ZqF6ZqG6ZqN6Zmy6ZqE6ZuB6ZuF6ZuE6ZuG6ZuH6Zuv6Zuy6Z+M6aCF6aCG6aCI6aOn6aOq6aOv6aOp6aOy6aOt6aau6aat6buD6buN6buR5LqC5YKt5YK15YKy5YKz5YOF5YK+5YKs5YK35YK75YKv5YOH5Ym/5Ym35Ym95Yuf5Yum5Yuk5Yui5Yuj5Yyv5Zef5Zeo5ZeT5Zem5ZeO5Zec5ZeH5ZeR5Zej5Zek5Zev5Zea5Zeh5ZeF5ZeG5Zel5ZeJ5ZyS5ZyT5aGe5aGR5aGY5aGX5aGa5aGU5aGr5aGM5aGt5aGK5aGi5aGS5aGL5aWn5auB5auJ5auM5aq+5aq95aq8Il0sWyJiNzQwIiwi5aqz5auC5aqy5bWp5bWv5bmM5bm55buJ5buI5byS5b2Z5b6s5b6u5oSa5oSP5oWI5oSf5oOz5oSb5oO55oSB5oSI5oWO5oWM5oWE5oWN5oS+5oS05oSn5oSN5oSG5oS35oih5oii5pCT5pC+5pCe5pCq5pCt5pC95pCs5pCP5pCc5pCU5pCN5pC25pCW5pCX5pCG5pWs5paf5paw5pqX5pqJ5pqH5pqI5pqW5pqE5pqY5pqN5pyD5qaU5qWtIl0sWyJiN2ExIiwi5qWa5qW35qWg5qWU5qW15qSw5qaC5qWK5qWo5qWr5qWe5qWT5qW55qaG5qWd5qWj5qWb5q2H5q2y5q+A5q6/5q+T5q+95rqi5rqv5ruT5rq25ruC5rqQ5rqd5ruH5ruF5rql5rqY5rq85rq65rqr5ruR5rqW5rqc5ruE5ruU5rqq5rqn5rq054WO54WZ54Wp54Wk54WJ54Wn54Wc54Ws54Wm54WM54Wl54We54WG54Wo54WW54i654mS54y3542F54y/54y+55Gv55Ga55GV55Gf55Ge55GB55C/55GZ55Gb55Gc55W255W455iA55ew55iB55ey55ex55e655e/55e055ez55ue55uf552b552r552m552e552jIl0sWyJiODQwIiwi5525552q552s552c552l552o552i55+u56KO56Kw56KX56KY56KM56KJ56G856KR56KT56G/56W656W/56aB6JCs56a956ic56ia56ig56iU56if56ie56qf56qg562356+A562g562u562n57Kx57Kz57K157aT57W557aR57aB57aP57Wb572u572p572q572y576p576o576k6IGW6IGY6IKG6IKE6IWx6IWw6IW46IWl6IWu6IWz6IWrIl0sWyJiOGExIiwi6IW56IW66IWm6IiF6ImH6JKC6JG36JC96JCx6JG16JGm6JGr6JGJ6JGs6JGb6JC86JC16JGh6JGj6JGp6JGt6JGG6Jme6Jmc6Jmf6Ju56JyT6JyI6JyH6JyA6Ju+6Ju76JyC6JyD6JyG6JyK6KGZ6KOf6KOU6KOZ6KOc6KOY6KOd6KOh6KOK6KOV6KOS6Kac6Kej6Kmr6Kmy6Kmz6Kmm6Kmp6Kmw6KqH6Km86Kmj6Kqg6Kmx6KqF6Kmt6Kmi6Kmu6Kms6Km56Km76Ki+6Kmo6LGi6LKK6LKJ6LOK6LOH6LOI6LOE6LKy6LOD6LOC6LOF6Leh6Lef6Leo6Lev6Lez6Le66Leq6Lek6Lem6Lqy6LyD6LyJ6Lu+6LyKIl0sWyJiOTQwIiwi6L6f6L6y6YGL6YGK6YGT6YGC6YGU6YC86YGV6YGQ6YGH6YGP6YGO6YGN6YGR6YC+6YGB6YSS6YSX6YWs6YWq6YWp6YeJ6Yi36YmX6Yi46Yi96YmA6Yi+6Ymb6YmL6Ymk6YmR6Yi06YmJ6YmN6YmF6Yi56Yi/6Yma6ZaY6ZqY6ZqU6ZqV6ZuN6ZuL6ZuJ6ZuK6Zu36Zu76Zu56Zu26Z2W6Z206Z226aCQ6aCR6aCT6aCK6aCS6aCM6aO86aO0Il0sWyJiOWExIiwi6aO96aO+6aaz6aax6aa06auh6bOp6bqC6byO6byT6byg5YOn5YOu5YOl5YOW5YOt5YOa5YOV5YOP5YOR5YOx5YOO5YOp5YWi5Yez5YqD5YqC5Yyx5Y6t5Ze+5ZiA5Zib5ZiX5Ze95ZiU5ZiG5ZiJ5ZiN5ZiO5Ze35ZiW5Zif5ZiI5ZiQ5Ze25ZyY5ZyW5aG15aG+5aKD5aKT5aKK5aG55aKF5aG95aO95aSl5aSi5aSk5aWq5aWp5auh5aum5aup5auX5auW5auY5auj5a215a+e5a+n5a+h5a+l5a+m5a+o5a+i5a+k5a+f5bCN5bGi5baE5baH5bmb5bmj5bmV5bmX5bmU5buT5buW5byK5b2G5b2w5b655oWHIl0sWyJiYTQwIiwi5oS/5oWL5oW35oWi5oWj5oWf5oWa5oWY5oW15oiq5pKH5pGY5pGU5pKk5pG45pGf5pG65pGR5pGn5pC05pGt5pG75pWy5pah5peX5peW5pqi5pqo5pqd5qac5qao5qaV5qeB5qau5qeT5qeL5qab5qa35qa75qar5qa05qeQ5qeN5qat5qeM5qam5qeD5qaj5q2J5q2M5rCz5ryz5ryU5ru+5ryT5ru05ryp5ry+5ryg5rys5ryP5ryC5ryiIl0sWyJiYWExIiwi5ru/5ruv5ryG5ryx5ry45ryy5ryj5ryV5ryr5ryv5r6I5ryq5rus5ryB5ruy5ruM5ru354aU54aZ54W954aK54aE54aS54i+54qS54qW542E542Q55Gk55Gj55Gq55Gw55Gt55SE55aR55in55iN55iL55iJ55iT55uh55uj556E5529552/552h56OB56Kf56Kn56Kz56Kp56Kj56aO56aP56aN56iu56ix56qq56qp56ut56uv566h566V566L5621566X566d566U566P5664566H566E57K557K957K+57a757aw57ac57a957a+57ag57eK57a057ay57ax57a657ai57a/57a157a457at57eS57eH57asIl0sWyJiYjQwIiwi572w57+g57+h57+f6IGe6IGa6IKH6IWQ6IaA6IaP6IaI6IaK6IW/6IaC6Ien6Ie66IiH6IiU6Iie6ImL6JOJ6JK/6JOG6JOE6JKZ6JKe6JKy6JKc6JOL6JK46JOA6JOT6JKQ6JK86JOR6JOK6Jy/6Jyc6Jy76Jyi6Jyl6Jy06JyY6J2V6Jy36Jyp6KOz6KSC6KO06KO56KO46KO96KOo6KSa6KOv6Kqm6KqM6Kqe6Kqj6KqN6Kqh6KqT6KqkIl0sWyJiYmExIiwi6Kqq6Kql6Kqo6KqY6KqR6Kqa6Kqn6LGq6LKN6LKM6LOT6LOR6LOS6LWr6LaZ6LaV6Le86LyU6LyS6LyV6LyT6L6j6YGg6YGY6YGc6YGj6YGZ6YGe6YGi6YGd6YGb6YSZ6YSY6YSe6YW16YW46YW36YW06Ym46YqA6YqF6YqY6YqW6Ym76YqT6Yqc6Yqo6Ym86YqR6Zah6Zao6Zap6Zaj6Zal6Zak6ZqZ6Zqc6Zqb6ZuM6ZuS6ZyA6Z286Z6F6Z+26aCX6aCY6aKv6aKx6aSD6aSF6aSM6aSJ6aeB6aqv6aqw6aum6a2B6a2C6bO06bO26bOz6bq86by76b2K5YSE5YSA5YO75YO15YO55YSC5YSI5YSJ5YSF5YecIl0sWyJiYzQwIiwi5YqH5YqI5YqJ5YqN5YqK5Yuw5Y6y5Ziu5Zi75Zi55Ziy5Zi/5Zi05Zip5ZmT5ZmO5ZmX5Zm05Zi25Ziv5Ziw5aKA5aKf5aKe5aKz5aKc5aKu5aKp5aKm5aWt5ayJ5au75ayL5au15ayM5ayI5a+u5a+s5a+p5a+r5bGk5bGl5bad5baU5bmi5bmf5bmh5bui5bua5buf5bud5buj5bug5b2I5b2x5b635b615oW25oWn5oWu5oWd5oWV5oaCIl0sWyJiY2ExIiwi5oW85oWw5oWr5oW+5oan5oaQ5oar5oaO5oas5oaa5oak5oaU5oau5oiu5pGp5pGv5pG55pKe5pKy5pKI5pKQ5pKw5pKl5pKT5pKV5pKp5pKS5pKu5pKt5pKr5pKa5pKs5pKZ5pKi5pKz5pW15pW35pW45pqu5pqr5pq05pqx5qij5qif5qeo5qiB5qie5qiZ5qe95qih5qiT5qiK5qez5qiC5qiF5qet5qiR5q2Q5q2O5q6k5q+F5q+G5ry/5r285r6E5r2R5r2m5r2U5r6G5r2t5r2b5r245r2u5r6O5r265r2w5r2k5r6X5r2Y5ruV5r2v5r2g5r2f54af54as54ax54ao54mW54qb542O542X55Gp55KL55KDIl0sWyJiZDQwIiwi55G+55KA55W/55ig55ip55if55ik55im55ih55ii55qa55q655uk556O556H556M556R556L56OL56OF56K656OK56K+56OV56K856OQ56i/56i856mA56i956i356i756qv56qu566t566x56+E566056+G56+H56+B566g56+M57OK57eg57e057ev57e757eY57es57ed57eo57ej57ea57ee57ep57ae57eZ57ey57e557215723576vIl0sWyJiZGExIiwi57+p6ICm6Iab6Iac6Iad6Iag6Iaa6IaY6JSX6JS96JSa6JOu6JSs6JSt6JST6JSR6JSj6JSh6JSU6JOs6JSl6JO/6JSG6J6C6J206J226J2g6J2m6J246J2o6J2Z6J2X6J2M6J2T6KGb6KGd6KSQ6KSH6KSS6KST6KSV6KSK6Kq86KuS6KuH6KuE6KqV6KuL6Ku46Kqy6KuJ6KuC6Kq/6Kqw6KuW6KuN6Kq26Kq56Kub6LGM6LGO6LGs6LOg6LOe6LOm6LOk6LOs6LOt6LOi6LOj6LOc6LOq6LOh6LWt6Laf6Laj6Lir6LiQ6Lid6Lii6LiP6Lip6Lif6Lih6Lie6Lq66Lyd6Lyb6Lyf6Lyp6Lym6Lyq6Lyc6LyeIl0sWyJiZTQwIiwi6Lyl6YGp6YGu6YGo6YGt6YG36YSw6YSt6YSn6YSx6YaH6YaJ6YaL6YaD6YuF6Yq76Yq36Yuq6Yqs6Yuk6YuB6Yqz6Yq86YuS6YuH6Yuw6Yqy6Zat6Zax6ZyE6ZyG6ZyH6ZyJ6Z2g6Z6N6Z6L6Z6P6aCh6aCr6aCc6aKz6aSK6aST6aSS6aSY6aed6aeQ6aef6aeb6aeR6aeV6aeS6aeZ6aq36auu6auv6ayn6a2F6a2E6a236a2v6bSG6bSJIl0sWyJiZWExIiwi6bSD6bqp6bq+6buO5aKo6b2S5YSS5YSY5YSU5YSQ5YSV5YaA5Yaq5Yed5YqR5YqT5Yuz5ZmZ5Zmr5Zm55Zmp5Zmk5Zm45Zmq5Zmo5Zml5Zmx5Zmv5Zms5Zmi5Zm25aOB5aK+5aOH5aOF5aWu5ayd5ay05a245a+w5bCO5b2K5oay5oaR5oap5oaK5oeN5oa25oa+5oeK5oeI5oiw5pOF5pOB5pOL5pK75pK85pOa5pOE5pOH5pOC5pON5pK/5pOS5pOU5pK+5pW05puG5puJ5pq55puE5puH5pq45qi95qi45qi65qmZ5qmr5qmY5qi55qmE5qmi5qmh5qmL5qmH5qi15qmf5qmI5q2Z5q235rCF5r+C5r6x5r6hIl0sWyJiZjQwIiwi5r+D5r6k5r+B5r6n5r6z5r+A5r655r625r6m5r6g5r6054a+54eJ54eQ54eS54eI54eV54a554eO54eZ54ec54eD54eE542o55Kc55Kj55KY55Kf55Ke55Oi55SM55SN55i055i455i655un55ul556g556e556f556l56Oo56Oa56Os56On56am56mN56mO56mG56mM56mL56q656+Z57CR56+J56+k56+b56+h56+p56+m57OV57OW57iKIl0sWyJiZmExIiwi57iR57iI57ib57ij57ie57id57iJ57iQ5725576y57+w57+x57+u6ICo6Iaz6Iap6Iao6Ie76IiI6ImY6ImZ6JWK6JWZ6JWI6JWo6JWp6JWD6JWJ6JWt6JWq6JWe6J6D6J6f6J6e6J6i6J6N6KGh6KSq6KSy6KSl6KSr6KSh6Kaq6Kam6Kum6Ku66Kur6Kux6KyA6Kuc6Kun6Kuu6Ku+6KyB6KyC6Ku36Kut6Kuz6Ku26Ku86LGr6LGt6LKT6LO06LmE6Lix6Li06LmC6Li56Li16Ly76Lyv6Ly46Lyz6L6o6L6m6YG16YG06YG46YGy6YG86YG66YS06YaS6Yyg6Yy26Yu46Yyz6Yyv6Yyi6Yu86Yyr6YyE6YyaIl0sWyJjMDQwIiwi6YyQ6Yym6Yyh6YyV6Yyu6YyZ6Za76Zqn6Zqo6Zqq6ZuV6ZyO6ZyR6ZyW6ZyN6ZyT6ZyP6Z2b6Z2c6Z2m6Z6Y6aCw6aC46aC76aC36aCt6aC56aCk6aSQ6aSo6aSe6aSb6aSh6aSa6aet6aei6aex6aq46aq86au76aut6ayo6a6R6bSV6bSj6bSm6bSo6bSS6bSb6buY6buU6b6N6b6c5YSq5YSf5YSh5YSy5Yu15ZqO5ZqA5ZqQ5ZqF5ZqHIl0sWyJjMGExIiwi5ZqP5aOV5aOT5aOR5aOO5ayw5ayq5ayk5a265bC35bGo5ba85ba65ba95ba45bmr5b2M5b695oeJ5oeC5oeH5oem5oeL5oiy5oi05pOO5pOK5pOY5pOg5pOw5pOm5pOs5pOx5pOi5pOt5paC5paD5puZ5puW5qqA5qqU5qqE5qqi5qqc5qub5qqj5qm+5qqX5qqQ5qqg5q2c5q6u5q+a5rCI5r+Y5r+x5r+f5r+g5r+b5r+k5r+r5r+v5r6A5r+s5r+h5r+p5r+V5r+u5r+w54en54ef54eu54em54el54et54es54e054eg54i154mG542w542y55Kp55Kw55Km55Ko55mG55mC55mM55uq556z556q556w556sIl0sWyJjMTQwIiwi556n556t55+v56O356O656O056Ov56SB56an56aq56mX56q/57CH57CN56++56+357CM56+g57Og57Oc57Oe57Oi57Of57OZ57Od57iu57i+57mG57i357iy57mD57ir57i957ix57mF57mB57i057i557mI57i157i/57iv572E57+z57+86IGx6IGy6IGw6IGv6IGz6IeG6IeD6Ia66IeC6IeA6Ia/6Ia96IeJ6Ia+6Ieo6IiJ6Imx6JaqIl0sWyJjMWExIiwi6JaE6JW+6Jac6JaR6JaU6Jav6Jab6JaH6Jao6JaK6Jmn6J+A6J+R6J6z6J+S6J+G6J6r6J676J666J+I6J+L6KS76KS26KWE6KS46KS96Kas6KyO6KyX6KyZ6Kyb6KyK6Kyg6Kyd6KyE6KyQ6LGB6LC/6LGz6LO66LO96LO86LO46LO76Lao6LmJ6LmL6LmI6LmK6L2E6Ly+6L2C6L2F6Ly/6YG/6YG96YKE6YKB6YKC6YKA6YS56Yaj6Yae6Yac6Y2N6Y6C6Yyo6Y216Y2K6Y2l6Y2L6YyY6Y2+6Y2s6Y2b6Y2w6Y2a6Y2U6ZeK6ZeL6ZeM6ZeI6ZeG6Zqx6Zq46ZuW6Zyc6Zye6Z6g6Z+T6aGG6aK26aS16aiBIl0sWyJjMjQwIiwi6ae/6a6u6a6r6a6q6a6t6bS76bS/6bqL6buP6bue6buc6bud6bub6by+6b2L5Y+i5ZqV5Zqu5aOZ5aOY5ay45b2d5oej5oiz5pO05pOy5pO+5pSG5pO65pO75pO35pa35puc5pym5qqz5qqs5quD5qq75qq45quC5qqu5qqv5q2f5q245q6v54CJ54CL5r++54CG5r+654CR54CP54e754e854e+54e45423542155Kn55K/55SV55mW55mYIl0sWyJjMmExIiwi55mS5569556/5567556856SO56au56mh56mi56mg56uE56uF57Cr57Cn57Cq57Ce57Cj57Ch57On57mU57mV57me57ma57mh57mS57mZ572I57+557+76IG36IG26IeN6IeP6IiK6JeP6Jap6JeN6JeQ6JeJ6Jaw6Ja66Ja56Jam6J+v6J+s6J+y6J+g6KaG6Kay6Ke06Kyo6Ky56Kys6Kyr6LGQ6LSF6LmZ6Lmj6Lmm6Lmk6Lmf6LmV6LuA6L2J6L2N6YKH6YKD6YKI6Yar6Yas6YeQ6Y6U6Y6K6Y6W6Y6i6Y6z6Y6u6Y6s6Y6w6Y6Y6Y6a6Y6X6ZeU6ZeW6ZeQ6ZeV6Zui6Zuc6ZuZ6Zub6Zue6Zyk6Z6j6Z6mIl0sWyJjMzQwIiwi6Z6t6Z+56aGN6aGP6aGM6aGO6aGT6aK66aS+6aS/6aS96aSu6aal6aiO6auB6ayD6ayG6a2P6a2O6a2N6a+K6a+J6a+96a+I6a+A6bWR6bWd6bWg6bug6byV6bys5YSz5Zql5aOe5aOf5aOi5a+16b6Q5bus5oey5oe35oe25oe15pSA5pSP5pug5pud5qul5qud5qua5quT54Cb54Cf54Co54Ca54Cd54CV54CY54iG54iN54mY54qi5424Il0sWyJjM2ExIiwi542655K955OK55Oj55aH55aG55mf55mh55+H56SZ56ax56mr56mp57C+57C/57C457C957C357GA57mr57mt57m557mp57mq576F57mz5762576557646IeY6Jep6Jed6Jeq6JeV6Jek6Jel6Je36J+76KCF6KCN6J+56J++6KWg6KWf6KWW6KWe6K2B6K2c6K2Y6K2J6K2a6K2O6K2P6K2G6K2Z6LSI6LSK6Lm86Lmy6LqH6Lm26Lms6Lm66Lm06L2U6L2O6L6t6YKK6YKL6Yax6Yau6Y+h6Y+R6Y+f6Y+D6Y+I6Y+c6Y+d6Y+W6Y+i6Y+N6Y+Y6Y+k6Y+X6Y+o6Zec6Zq06Zuj6Zyq6Zyn6Z2h6Z+c6Z+76aGeIl0sWyJjNDQwIiwi6aGY6aGb6aK86aWF6aWJ6aiW6aiZ6ayN6a+o6a+n6a+W6a+b6baJ6bWh6bWy6bWq6bWs6bqS6bqX6bqT6bq05Yu45Zqo5Zq35Zq25Zq05Zq85aOk5a2A5a2D5a295a+25beJ5oe45oe65pSY5pSU5pSZ5pum5pyn5qus54C+54Cw54Cy54iQ542755OP55mi55ml56Sm56Sq56Ss56Sr56uH56u257GM57GD57GN57Ov57Ow6L6u57m957m8Il0sWyJjNGExIiwi57qC572M6ICA6Iea6Imm6Je76Je56JiR6Je66JiG6JiL6JiH6JiK6KCU6KCV6KWk6Ka66Ke46K2w6K2s6K2m6K2v6K2f6K2r6LSP6LSN6LqJ6LqB6LqF6LqC6Ya06YeL6ZCY6ZCD6Y+96Zeh6Zyw6aOE6aWS6aWR6aao6air6aiw6ai36ai16bCT6bCN6bm56bq16buo6byv6b2f6b2j6b2h5YS35YS45ZuB5ZuA5ZuC5aSU5bGs5beN5oe85oe+5pSd5pSc5paV5pup5qu75qyE5qu65q6y54GM54ib54qn55OW55OU55mp55+T57GQ57qP57qM57686JiX6Jit6Jia6KCj6KCi6KCh6KCf6KWq6KWs6Ka96K20Il0sWyJjNTQwIiwi6K236K296LST6LqK6LqN6LqL6L2f6L6v6Ya66ZCu6ZCz6ZC16ZC66ZC46ZCy6ZCr6Zei6Zy46Zy56Zyy6Z+/6aGn6aGl6aWX6amF6amD6amA6ai+6auP6a2U6a2R6bCt6bCl6bav6ba06beC6ba46bqd6buv6byZ6b2c6b2m6b2n5YS85YS75ZuI5ZuK5ZuJ5a2/5beU5beS5b2O5oe/5pSk5qyK5q2h54GR54GY546A55Ok55aK55mu55msIl0sWyJjNWExIiwi56az57Gg57Gf6IG+6IG96Ief6KWy6KWv6Ke86K6A6LSW6LSX6LqR6LqT6L2h6YWI6ZGE6ZGR6ZGS6Zy96Zy+6Z+D6Z+B6aGr6aWV6amV6amN6auS6aya6bGJ6bCx6bC+6bC76beT6beX6by06b2s6b2q6b6U5ZuM5beW5oiA5pSj5pSr5pSq5pus5qyQ55Oa56uK57Gk57Gj57Gl57qT57qW57qU6Iei6Ji46Ji/6KCx6K6K6YKQ6YKP6ZGj6ZGg6ZGk6Z2o6aGv6aWc6ama6amb6amX6auT6auU6auR6bGU6bGX6bGW6bel6bqf6bu05ZuR5aOp5pSs54Ge55mx55my55+X572Q576I6KC26KC56KGi6K6T6K6SIl0sWyJjNjQwIiwi6K6W6Im36LSb6YeA6ZGq6Z2C6Z2I6Z2E6Z+G6aGw6amf6ayi6a2Y6bGf6be56be66bm86bm96byH6b236b2y5buz5qyW54Gj57Gs57Gu6KC76KeA6Lqh6YeB6ZGy6ZGw6aGx6aWe6auW6ayj6buM54Gk55+a6K6a6ZG36Z+J6ami6aml57qc6K6c6Lqq6YeF6ZG96ZG+6ZG86bG36bG46bu36LGU6ZG/6bia54io6amq6ayx6bib6bie57GyIl0sWyJjOTQwIiwi5LmC5Lmc5Ye15Yya5Y6C5LiH5LiM5LmH5LqN5ZuX76iM5bGu5b2z5LiP5YaH5LiO5Liu5LqT5LuC5LuJ5LuI5YaY5Yu85Y2s5Y655Zyg5aSD5aSs5bCQ5be/5peh5q6z5q+M5rCU54i/5Lix5Li85Luo5Luc5Lup5Luh5Lud5Lua5YiM5Yyc5Y2M5Zyi5Zyj5aSX5aSv5a6B5a6E5bCS5bC75bG05bGz5biE5bqA5bqC5b+J5oiJ5omQ5rCVIl0sWyJjOWExIiwi5rC25rGD5rC/5rC754qu54qw546K56a46IKK6Zie5LyO5LyY5Lys5Lu15LyU5Lux5LyA5Lu35LyI5Lyd5LyC5LyF5Lyi5LyT5LyE5Lu05LyS5Yax5YiT5YiJ5YiQ5Yqm5Yyi5Yyf5Y2N5Y6K5ZCH5Zuh5Zuf5Zyu5Zyq5Zy05aS85aaA5aW85aaF5aW75aW+5aW35aW/5a2W5bCV5bCl5bG85bG65bG75bG+5bef5bm15bqE5byC5bya5b205b+V5b+U5b+P5omc5ome5omk5omh5omm5omi5omZ5omg5oma5oml5pev5peu5py+5py55py45py75py65py/5py85pyz5rCY5rGG5rGS5rGc5rGP5rGK5rGU5rGLIl0sWyJjYTQwIiwi5rGM54Gx54me54q054q1546O55Sq55m/56m1572R6Im46Im86IqA6Im96Im/6JmN6KW+6YKZ6YKX6YKY6YKb6YKU6Zii6Zik6Zig6Zij5L2W5Ly75L2i5L2J5L2T5L2k5Ly+5L2n5L2S5L2f5L2B5L2Y5Lyt5Lyz5Ly/5L2h5YaP5Ya55Yic5Yie5Yih5Yqt5Yqu5YyJ5Y2j5Y2y5Y6O5Y6P5ZCw5ZC35ZCq5ZGU5ZGF5ZCZ5ZCc5ZCl5ZCYIl0sWyJjYWExIiwi5ZC95ZGP5ZGB5ZCo5ZCk5ZGH5Zuu5Zun5Zul5Z2B5Z2F5Z2M5Z2J5Z2L5Z2S5aSG5aWA5aam5aaY5aag5aaX5aaO5aai5aaQ5aaP5aan5aah5a6O5a6S5bCo5bCq5bKN5bKP5bKI5bKL5bKJ5bKS5bKK5bKG5bKT5bKV5beg5biK5biO5bqL5bqJ5bqM5bqI5bqN5byF5byd5b245b225b+S5b+R5b+Q5b+t5b+o5b+u5b+z5b+h5b+k5b+j5b+65b+v5b+35b+75oCA5b+05oi65oqD5oqM5oqO5oqP5oqU5oqH5omx5om75om65omw5oqB5oqI5om35om95omy5om05pS35pew5pe05pez5pey5pe15p2F5p2HIl0sWyJjYjQwIiwi5p2Z5p2V5p2M5p2I5p2d5p2N5p2a5p2L5q+Q5rCZ5rCa5rG45rGn5rGr5rKE5rKL5rKP5rGx5rGv5rGp5rKa5rGt5rKH5rKV5rKc5rGm5rGz5rGl5rG75rKO54G054G654mj54q/54q954uD54uG54uB54q654uF546V546X546T546U546S55S655S555aU55aV55qB56S96IC06IKV6IKZ6IKQ6IKS6IKc6IqQ6IqP6IqF6IqO6IqR6IqTIl0sWyJjYmExIiwi6IqK6IqD6IqE6LG46L+J6L6/6YKf6YKh6YKl6YKe6YKn6YKg6Ziw6Zio6Ziv6Zit5Liz5L6Y5L285L6F5L295L6A5L6H5L225L205L6J5L6E5L235L2M5L6X5L2q5L6a5L255L6B5L245L6Q5L6c5L6U5L6e5L6S5L6C5L6V5L2r5L2u5Yae5Ya85Ya+5Yi15Yiy5Yiz5YmG5Yix5Yq85YyK5YyL5Yy85Y6S5Y6U5ZKH5ZG/5ZKB5ZKR5ZKC5ZKI5ZGr5ZG65ZG+5ZGl5ZGs5ZG05ZGm5ZKN5ZGv5ZGh5ZGg5ZKY5ZGj5ZGn5ZGk5Zu35Zu55Z2v5Z2y5Z2t5Z2r5Z2x5Z2w5Z225Z6A5Z215Z275Z2z5Z205Z2iIl0sWyJjYzQwIiwi5Z2o5Z295aSM5aWF5aa15aa65aeP5aeO5aay5aeM5aeB5aa25aa85aeD5aeW5aax5aa95aeA5aeI5aa05aeH5a2i5a2l5a6T5a6V5bGE5bGH5bKu5bKk5bKg5bK15bKv5bKo5bKs5bKf5bKj5bKt5bKi5bKq5bKn5bKd5bKl5bK25bKw5bKm5biX5biU5biZ5byo5byi5byj5byk5b2U5b6C5b2+5b295b+e5b+l5oCt5oCm5oCZ5oCy5oCLIl0sWyJjY2ExIiwi5oC05oCK5oCX5oCz5oCa5oCe5oCs5oCi5oCN5oCQ5oCu5oCT5oCR5oCM5oCJ5oCc5oiU5oi95oqt5oq05ouR5oq+5oqq5oq25ouK5oqu5oqz5oqv5oq75oqp5oqw5oq45pS95pao5pa75piJ5pe85piE5piS5piI5pe75piD5piL5piN5piF5pe95piR5piQ5pu25pyK5p6F5p2s5p6O5p6S5p225p275p6Y5p6G5p6E5p205p6N5p6M5p265p6f5p6R5p6Z5p6D5p295p6B5p245p255p6U5qyl5q6A5q2+5q+e5rCd5rKT5rOs5rOr5rOu5rOZ5rK25rOU5rKt5rOn5rK35rOQ5rOC5rK65rOD5rOG5rOt5rOyIl0sWyJjZDQwIiwi5rOS5rOd5rK05rKK5rKd5rKA5rOe5rOA5rSw5rON5rOH5rKw5rO55rOP5rOp5rOR54KU54KY54KF54KT54KG54KE54KR54KW54KC54Ka54KD54mq54uW54uL54uY54uJ54uc54uS54uU54ua54uM54uR546k546h546t546m546i546g546s546d55Od55Oo55S/55WA55S+55aM55aY55qv55uz55ux55uw55u155+455+855+555+755+6Il0sWyJjZGExIiwi55+356WC56S/56eF56m456m756u757G157O96IC16IKP6IKu6IKj6IK46IK16IKt6Iig6Iqg6IuA6Iqr6Iqa6IqY6Iqb6Iq16Iqn6Iqu6Iq86Iqe6Iq66Iq06Iqo6Iqh6Iqp6IuC6Iqk6IuD6Iq26Iqi6Jmw6Jmv6Jmt6Jmu6LGW6L+S6L+L6L+T6L+N6L+W6L+V6L+X6YKy6YK06YKv6YKz6YKw6Zi56Zi96Zi86Zi66ZmD5L+N5L+F5L+T5L6y5L+J5L+L5L+B5L+U5L+c5L+Z5L675L6z5L+b5L+H5L+W5L665L+A5L655L+s5YmE5YmJ5YuA5YuC5Yy95Y285Y6X5Y6W5Y6Z5Y6Y5ZK65ZKh5ZKt5ZKl5ZOPIl0sWyJjZTQwIiwi5ZOD6IyN5ZK35ZKu5ZOW5ZK25ZOF5ZOG5ZKg5ZGw5ZK85ZKi5ZK+5ZGy5ZOe5ZKw5Z615Z6e5Z6f5Z6k5Z6M5Z6X5Z6d5Z6b5Z6U5Z6Y5Z6P5Z6Z5Z6l5Z6a5Z6V5aO05aSN5aWT5aeh5aee5aeu5aiA5aex5aed5ae65ae95ae85ae25aek5aey5ae35aeb5aep5aez5ae15aeg5ae+5ae05aet5a6o5bGM5bOQ5bOY5bOM5bOX5bOL5bObIl0sWyJjZWExIiwi5bOe5bOa5bOJ5bOH5bOK5bOW5bOT5bOU5bOP5bOI5bOG5bOO5bOf5bO45be55bih5bii5bij5big5bik5bqw5bqk5bqi5bqb5bqj5bql5byH5byu5b2W5b6G5oC35oC55oGU5oGy5oGe5oGF5oGT5oGH5oGJ5oGb5oGM5oGA5oGC5oGf5oCk5oGE5oGY5oGm5oGu5omC5omD5ouP5oyN5oyL5ou15oyO5oyD5our5ou55oyP5oyM5ou45ou25oyA5oyT5oyU5ou65oyV5ou75ouw5pWB5pWD5paq5pa/5pi25pih5piy5pi15pic5pim5pii5piz5pir5pi65pid5pi05pi55piu5pyP5pyQ5p+B5p+y5p+I5p66Il0sWyJjZjQwIiwi5p+c5p675p+45p+Y5p+A5p635p+F5p+r5p+k5p+f5p615p+N5p6z5p+35p+25p+u5p+j5p+C5p655p+O5p+n5p+w5p6y5p+85p+G5p+t5p+M5p6u5p+m5p+b5p+65p+J5p+K5p+D5p+q5p+L5qyo5q6C5q6E5q625q+W5q+Y5q+g5rCg5rCh5rSo5rS05rSt5rSf5rS85rS/5rSS5rSK5rOa5rSz5rSE5rSZ5rS65rSa5rSR5rSA5rSd5rWCIl0sWyJjZmExIiwi5rSB5rSY5rS35rSD5rSP5rWA5rSH5rSg5rSs5rSI5rSi5rSJ5rSQ54K354Kf54K+54Kx54Kw54Kh54K054K154Kp54mB54mJ54mK54ms54mw54mz54mu54uK54uk54uo54ur54uf54uq54um54uj546F54+M54+C54+I54+F546554625461546054+r546/54+H546+54+D54+G546454+L55Os55Ou55Su55WH55WI55an55aq55m555uE55yI55yD55yE55yF55yK55u355u755u655+n55+o56CG56CR56CS56CF56CQ56CP56CO56CJ56CD56CT56WK56WM56WL56WF56WE56eV56eN56eP56eW56eO56qAIl0sWyJkMDQwIiwi56m+56uR56yA56yB57G657G457G557G/57KA57KB57SD57SI57SB572Y576R576N576+6ICH6ICO6ICP6ICU6IC36IOY6IOH6IOg6IOR6IOI6IOC6IOQ6IOF6IOj6IOZ6IOc6IOK6IOV6IOJ6IOP6IOX6IOm6ION6Ie/6Iih6IqU6IuZ6Iu+6Iu56IyH6Iuo6IyA6IuV6Iy66Iur6IuW6Iu06Ius6Iuh6Iuy6Iu16IyM6Iu76Iu26Iuw6IuqIl0sWyJkMGExIiwi6Iuk6Iug6Iu66Iuz6Iut6Jm36Jm06Jm86Jmz6KGB6KGO6KGn6KGq6KGp6KeT6KiE6KiH6LWy6L+j6L+h6L+u6L+g6YOx6YK96YK/6YOV6YOF6YK+6YOH6YOL6YOI6YeU6YeT6ZmU6ZmP6ZmR6ZmT6ZmK6ZmO5YCe5YCF5YCH5YCT5YCi5YCw5YCb5L+15L+05YCz5YC35YCs5L+25L+35YCX5YCc5YCg5YCn5YC15YCv5YCx5YCO5YWa5YaU5YaT5YeK5YeE5YeF5YeI5YeO5Ymh5Yma5YmS5Yme5Ymf5YmV5Ymi5YuN5YyO5Y6e5ZSm5ZOi5ZSX5ZSS5ZOn5ZOz5ZOk5ZSa5ZO/5ZSE5ZSI5ZOr5ZSR5ZSF5ZOxIl0sWyJkMTQwIiwi5ZSK5ZO75ZO35ZO45ZOg5ZSO5ZSD5ZSL5ZyB5ZyC5Z+M5aCy5Z+V5Z+S5Z665Z+G5Z695Z685Z645Z625Z6/5Z+H5Z+Q5Z655Z+B5aSO5aWK5aiZ5aiW5ait5aiu5aiV5aiP5aiX5aiK5aie5aiz5a2s5a6n5a6t5a6s5bCD5bGW5bGU5bOs5bO/5bOu5bOx5bO35bSA5bO55bip5bio5bqo5bqu5bqq5bqs5byz5byw5b2n5oGd5oGa5oGnIl0sWyJkMWExIiwi5oGB5oKi5oKI5oKA5oKS5oKB5oKd5oKD5oKV5oKb5oKX5oKH5oKc5oKO5oiZ5omG5ouy5oyQ5o2W5oys5o2E5o2F5oy25o2D5o+k5oy55o2L5o2K5oy85oyp5o2B5oy05o2Y5o2U5o2Z5oyt5o2H5oyz5o2a5o2R5oy45o2X5o2A5o2I5pWK5pWG5peG5peD5peE5peC5pmK5pmf5pmH5pmR5pyS5pyT5qCf5qCa5qGJ5qCy5qCz5qC75qGL5qGP5qCW5qCx5qCc5qC15qCr5qCt5qCv5qGO5qGE5qC05qCd5qCS5qCU5qCm5qCo5qCu5qGN5qC65qCl5qCg5qys5qyv5qyt5qyx5qy05q2t6IKC5q6I5q+m5q+kIl0sWyJkMjQwIiwi5q+o5q+j5q+i5q+n5rCl5rW65rWj5rWk5rW25rSN5rWh5raS5rWY5rWi5rWt5rWv5raR5raN5rev5rW/5raG5rWe5rWn5rWg5raX5rWw5rW85rWf5raC5raY5rSv5rWo5raL5rW+5raA5raE5rSW5raD5rW75rW95rW15raQ54Oc54OT54OR54Od54OL57y554Oi54OX54OS54Oe54Og54OU54ON54OF54OG54OH54Oa54OO54Oh54mC54m4Il0sWyJkMmExIiwi54m354m254yA54u654u054u+54u254uz54u754yB54+T54+Z54+l54+W546854+n54+j54+p54+c54+S54+b54+U54+d54+a54+X54+Y54+o55Oe55Of55O055O155Sh55Wb55Wf55aw55eB55a755eE55eA55a/55a255a655qK55uJ55yd55yb55yQ55yT55yS55yj55yR55yV55yZ55ya55yi55yn56Cj56Cs56Ci56C156Cv56Co56Cu56Cr56Ch56Cp56Cz56Cq56Cx56WU56Wb56WP56Wc56WT56WS56WR56er56es56eg56eu56et56eq56ec56ee56ed56qG56qJ56qF56qL56qM56qK56qH56uY56yQIl0sWyJkMzQwIiwi56yE56yT56yF56yP56yI56yK56yO56yJ56yS57KE57KR57KK57KM57KI57KN57KF57Se57Sd57SR57SO57SY57SW57ST57Sf57SS57SP57SM572c572h572e572g572d572b576W576S57+D57+C57+A6ICW6IC+6IC56IO66IOy6IO56IO16ISB6IO76ISA6IiB6Iiv6Iil6Iyz6Iyt6I2E6IyZ6I2R6Iyl6I2W6Iy/6I2B6Iym6Iyc6IyiIl0sWyJkM2ExIiwi6I2C6I2O6Iyb6Iyq6IyI6Iy86I2N6IyW6Iyk6Iyg6Iy36Iyv6Iyp6I2H6I2F6I2M6I2T6Iye6Iys6I2L6Iyn6I2I6JmT6JmS6Jqi6Jqo6JqW6JqN6JqR6Jqe6JqH6JqX6JqG6JqL6Jqa6JqF6Jql6JqZ6Jqh6Jqn6JqV6JqY6JqO6Jqd6JqQ6JqU6KGD6KGE6KGt6KG16KG26KGy6KKA6KGx6KG/6KGv6KKD6KG+6KG06KG86KiS6LGH6LGX6LG76LKk6LKj6LW26LW46La16La36La26LuR6LuT6L++6L+16YCC6L+/6L+76YCE6L+86L+26YOW6YOg6YOZ6YOa6YOj6YOf6YOl6YOY6YOb6YOX6YOc6YOk6YWQIl0sWyJkNDQwIiwi6YWO6YWP6YeV6Yei6Yea6Zmc6Zmf6Zq86aOj6auf6ayv5Lm/5YGw5YGq5YGh5YGe5YGg5YGT5YGL5YGd5YGy5YGI5YGN5YGB5YGb5YGK5YGi5YCV5YGF5YGf5YGp5YGr5YGj5YGk5YGG5YGA5YGu5YGz5YGX5YGR5YeQ5Ymr5Ymt5Yms5Ymu5YuW5YuT5Yyt5Y6c5ZW15ZW25ZS85ZWN5ZWQ5ZS05ZSq5ZWR5ZWi5ZS25ZS15ZSw5ZWS5ZWFIl0sWyJkNGExIiwi5ZSM5ZSy5ZWl5ZWO5ZS55ZWI5ZSt5ZS75ZWA5ZWL5ZyK5ZyH5Z+75aCU5Z+i5Z+25Z+c5Z+05aCA5Z+t5Z+95aCI5Z+45aCL5Z+z5Z+P5aCH5Z+u5Z+j5Z+y5Z+l5Z+s5Z+h5aCO5Z+85aCQ5Z+n5aCB5aCM5Z+x5Z+p5Z+w5aCN5aCE5aWc5amg5amY5amV5amn5ame5ai45ai15amt5amQ5amf5aml5ams5amT5amk5amX5amD5amd5amS5amE5amb5amI5aqO5ai+5amN5ai55amM5amw5amp5amH5amR5amW5amC5amc5a2y5a2u5a+B5a+A5bGZ5bSe5bSL5bSd5bSa5bSg5bSM5bSo5bSN5bSm5bSl5bSPIl0sWyJkNTQwIiwi5bSw5bSS5bSj5bSf5bSu5bi+5bi05bqx5bq05bq55bqy5bqz5by25by45b6b5b6W5b6f5oKK5oKQ5oKG5oK+5oKw5oK65oOT5oOU5oOP5oOk5oOZ5oOd5oOI5oKx5oOb5oK35oOK5oK/5oOD5oON5oOA5oyy5o2l5o6K5o6C5o295o695o6e5o6t5o6d5o6X5o6r5o6O5o2v5o6H5o6Q5o2u5o6v5o215o6c5o2t5o6u5o285o6k5oy75o6fIl0sWyJkNWExIiwi5o245o6F5o6B5o6R5o6N5o2w5pWT5peN5pml5pmh5pmb5pmZ5pmc5pmi5pyY5qG55qKH5qKQ5qKc5qGt5qGu5qKu5qKr5qWW5qGv5qKj5qKs5qKp5qG15qG05qKy5qKP5qG35qKS5qG85qGr5qGy5qKq5qKA5qGx5qG+5qKb5qKW5qKL5qKg5qKJ5qKk5qG45qG75qKR5qKM5qKK5qG95qy25qyz5qy35qy45q6R5q6P5q6N5q6O5q6M5rCq5reA5rar5ra05raz5rm05ras5rep5rei5ra35re25reU5riA5reI5reg5ref5reW5ra+5rel5rec5red5reb5re05reK5ra95ret5rew5ra65reV5reC5reP5reJIl0sWyJkNjQwIiwi5reQ5rey5reT5re95reX5reN5rej5ra754O654SN54O354SX54O054SM54Ow54SE54Oz54SQ54O854O/54SG54ST54SA54O454O254SL54SC54SO54m+54m754m854m/54yd54yX54yH54yR54yY54yK54yI54u/54yP54ye546I54+254+454+155CE55CB54+955CH55CA54+654+854+/55CM55CL54+055CI55Wk55Wj55eO55eS55ePIl0sWyJkNmExIiwi55eL55eM55eR55eQ55qP55qJ55uT55y555yv55yt55yx55yy55y055yz55y955yl55y755y156GI56GS56GJ56GN56GK56GM56Cm56GF56GQ56Wk56Wn56Wp56Wq56Wj56Wr56Wh56a756e656e456e256e356qP56qU56qQ56y1562H56y056yl56yw56yi56yk56yz56yY56yq56yd56yx56yr56yt56yv56yy56y456ya56yj57KU57KY57KW57Kj57S157S957S457S257S657WF57Ss57Sp57WB57WH57S+57S/57WK57S757So572j576V576c576d576b57+K57+L57+N57+Q57+R57+H57+P57+J6ICfIl0sWyJkNzQwIiwi6ICe6ICb6IGH6IGD6IGI6ISY6ISl6ISZ6ISb6ISt6ISf6ISs6ISe6ISh6ISV6ISn6ISd6ISi6IiR6Ii46Iiz6Ii66Ii06Iiy6Im06I6Q6I6j6I6o6I6N6I266I2z6I6k6I206I6P6I6B6I6V6I6Z6I216I6U6I6p6I296I6D6I6M6I6d6I6b6I6q6I6L6I2+6I6l6I6v6I6I6I6X6I6w6I2/6I6m6I6H6I6u6I226I6a6JmZ6JmW6Jq/6Jq3Il0sWyJkN2ExIiwi6JuC6JuB6JuF6Jq66Jqw6JuI6Jq56Jqz6Jq46JuM6Jq06Jq76Jq86JuD6Jq96Jq+6KGS6KKJ6KKV6KKo6KKi6KKq6KKa6KKR6KKh6KKf6KKY6KKn6KKZ6KKb6KKX6KKk6KKs6KKM6KKT6KKO6KaC6KeW6KeZ6KeV6Kiw6Kin6Kis6Kie6LC56LC76LGc6LGd6LG96LKl6LW96LW76LW56La86LeC6La56La/6LeB6LuY6Lue6Lud6Luc6LuX6Lug6Luh6YCk6YCL6YCR6YCc6YCM6YCh6YOv6YOq6YOw6YO06YOy6YOz6YOU6YOr6YOs6YOp6YWW6YWY6YWa6YWT6YWV6Yes6Ye06Yex6Yez6Ye46Yek6Ye56YeqIl0sWyJkODQwIiwi6Yer6Ye36Yeo6Yeu6ZW66ZaG6ZaI6Zm86Zmt6Zmr6Zmx6Zmv6Zq/6Z2q6aCE6aOl6aaX5YKb5YKV5YKU5YKe5YKL5YKj5YKD5YKM5YKO5YKd5YGo5YKc5YKS5YKC5YKH5YWf5YeU5YyS5YyR5Y6k5Y6n5ZaR5Zao5Zal5Zat5ZW35ZmF5Zai5ZaT5ZaI5ZaP5Za15ZaB5Zaj5ZaS5Zak5ZW95ZaM5Zam5ZW/5ZaV5Zah5ZaO5ZyM5aCp5aC3Il0sWyJkOGExIiwi5aCZ5aCe5aCn5aCj5aCo5Z+15aGI5aCl5aCc5aCb5aCz5aC/5aC25aCu5aC55aC45aCt5aCs5aC75aWh5aqv5aqU5aqf5am65aqi5aqe5am45aqm5am85aql5aqs5aqV5aqu5ai35aqE5aqK5aqX5aqD5aqL5aqp5am75am95aqM5aqc5aqP5aqT5aqd5a+q5a+N5a+L5a+U5a+R5a+K5a+O5bCM5bCw5bS35bWD5bWr5bWB5bWL5bS/5bS15bWR5bWO5bWV5bSz5bS65bWS5bS95bSx5bWZ5bWC5bS55bWJ5bS45bS85bSy5bS25bWA5bWF5bmE5bmB5b2Y5b6m5b6l5b6r5oOJ5oK55oOM5oOi5oOO5oOE5oSUIl0sWyJkOTQwIiwi5oOy5oSK5oSW5oSF5oO15oST5oO45oO85oO+5oOB5oSD5oSY5oSd5oSQ5oO/5oSE5oSL5omK5o6U5o6x5o6w5o+O5o+l5o+o5o+v5o+D5pKd5o+z5o+K5o+g5o+25o+V5o+y5o+15pGh5o+f5o6+5o+d5o+c5o+E5o+Y5o+T5o+C5o+H5o+M5o+L5o+I5o+w5o+X5o+Z5pSy5pWn5pWq5pWk5pWc5pWo5pWl5paM5pad5pae5pau5peQ5peSIl0sWyJkOWExIiwi5pm85pms5pm75pqA5pmx5pm55pmq5pmy5pyB5qSM5qOT5qSE5qOc5qSq5qOs5qOq5qOx5qSP5qOW5qO35qOr5qOk5qO25qST5qSQ5qOz5qOh5qSH5qOM5qSI5qWw5qK05qSR5qOv5qOG5qSU5qO45qOQ5qO95qO85qOo5qSL5qSK5qSX5qOO5qOI5qOd5qOe5qOm5qO05qOR5qSG5qOU5qOp5qSV5qSl5qOH5qy55qy75qy/5qy85q6U5q6X5q6Z5q6V5q695q+w5q+y5q+z5rCw5re85rmG5rmH5rif5rmJ5rqI5ri85ri95rmF5rmi5rir5ri/5rmB5rmd5rmz5ric5riz5rmL5rmA5rmR5ri75riD5riu5rmeIl0sWyJkYTQwIiwi5rmo5rmc5rmh5rix5rio5rmg5rmx5rmr5ri55rii5riw5rmT5rml5rin5rm45rmk5rm35rmV5rm55rmS5rmm5ri15ri25rma54Sg54Se54Sv54O754Su54Sx54Sj54Sl54Si54Sy54Sf54So54S654Sb54mL54ma54qI54qJ54qG54qF54qL54yS54yL54yw54yi54yx54yz54yn54yy54yt54ym54yj54y154yM55Cu55Cs55Cw55Cr55CWIl0sWyJkYWExIiwi55Ca55Ch55Ct55Cx55Ck55Cj55Cd55Cp55Cg55Cy55O755Sv55Wv55Ws55en55ea55eh55em55ed55ef55ek55eX55qV55qS55ua552G552H552E552N552F552K552O552L552M55+e55+s56Gg56Gk56Gl56Gc56Gt56Gx56Gq56Gu56Gw56Gp56Go56Ge56Gi56W056Wz56Wy56Ww56iC56iK56iD56iM56iE56qZ56um56uk562K56y7562E562I562M562O562A562Y562F57Ki57Ke57Ko57Kh57WY57Wv57Wj57WT57WW57Wn57Wq57WP57Wt57Wc57Wr57WS57WU57Wp57WR57Wf57WO57y+57y/572lIl0sWyJkYjQwIiwi572m576i576g576h57+X6IGR6IGP6IGQ6IO+6IOU6IWD6IWK6IWS6IWP6IWH6IS96IWN6IS66Iem6Ieu6Ie36Ie46Ie56IiE6Ii86Ii96Ii/6Im16Iy76I+P6I+56JCj6I+A6I+o6JCS6I+n6I+k6I+86I+26JCQ6I+G6I+I6I+r6I+j6I6/6JCB6I+d6I+l6I+Y6I+/6I+h6I+L6I+O6I+W6I+16I+J6JCJ6JCP6I+e6JCR6JCG6I+C6I+zIl0sWyJkYmExIiwi6I+V6I+66I+H6I+R6I+q6JCT6I+D6I+s6I+u6I+E6I+76I+X6I+i6JCb6I+b6I++6JuY6Jui6Jum6JuT6Juj6Jua6Juq6Jud6Jur6Juc6Jus6Jup6JuX6Juo6JuR6KGI6KGW6KGV6KK66KOX6KK56KK46KOA6KK+6KK26KK86KK36KK96KKy6KSB6KOJ6KaV6KaY6KaX6Ked6Kea6Keb6KmO6KmN6Ki56KmZ6KmA6KmX6KmY6KmE6KmF6KmS6KmI6KmR6KmK6KmM6KmP6LGf6LKB6LKA6LK66LK+6LKw6LK56LK16LaE6LaA6LaJ6LeY6LeT6LeN6LeH6LeW6Lec6LeP6LeV6LeZ6LeI6LeX6LeF6Luv6Lu36Lu6Il0sWyJkYzQwIiwi6Lu56Lum6Luu6Lul6Lu16Lun6Luo6Lu26Lur6Lux6Lus6Lu06Lup6YCt6YC06YCv6YSG6YSs6YSE6YO/6YO86YSI6YO56YO76YSB6YSA6YSH6YSF6YSD6YWh6YWk6YWf6YWi6YWg6YiB6YiK6Yil6YiD6Yia6Yim6YiP6YiM6YiA6YiS6Ye/6Ye96YiG6YiE6Yin6YiC6Yic6Yik6YiZ6YiX6YiF6YiW6ZW76ZaN6ZaM6ZaQ6ZqH6Zm+6ZqIIl0sWyJkY2ExIiwi6ZqJ6ZqD6ZqA6ZuC6ZuI6ZuD6Zux6Zuw6Z2s6Z2w6Z2u6aCH6aKp6aOr6bOm6bu55LqD5LqE5Lq25YK95YK/5YOG5YKu5YOE5YOK5YK05YOI5YOC5YKw5YOB5YK65YKx5YOL5YOJ5YK25YK45YeX5Ym65Ym45Ym75Ym85ZeD5Zeb5ZeM5ZeQ5ZeL5ZeK5Zed5ZeA5ZeU5ZeE5Zep5Za/5ZeS5ZaN5ZeP5ZeV5Zei5ZeW5ZeI5Zey5ZeN5ZeZ5ZeC5ZyU5aGT5aGo5aGk5aGP5aGN5aGJ5aGv5aGV5aGO5aGd5aGZ5aGl5aGb5aC95aGj5aGx5aO85auH5auE5auL5aq65aq45aqx5aq15aqw5aq/5auI5aq75auGIl0sWyJkZDQwIiwi5aq35auA5auK5aq05aq25auN5aq55aqQ5a+W5a+Y5a+Z5bCf5bCz5bWx5bWj5bWK5bWl5bWy5bWs5bWe5bWo5bWn5bWi5bew5bmP5bmO5bmK5bmN5bmL5buF5buM5buG5buL5buH5b2A5b6v5b6t5oO35oWJ5oWK5oSr5oWF5oS25oSy5oSu5oWG5oSv5oWP5oSp5oWA5oig6YWo5oij5oil5oik5o+F5o+x5o+r5pCQ5pCS5pCJ5pCg5pCkIl0sWyJkZGExIiwi5pCz5pGD5pCf5pCV5pCY5pC55pC35pCi5pCj5pCM5pCm5pCw5pCo5pGB5pC15pCv5pCK5pCa5pGA5pCl5pCn5pCL5o+n5pCb5pCu5pCh5pCO5pWv5paS5peT5pqG5pqM5pqV5pqQ5pqL5pqK5pqZ5pqU5pm45pyg5qWm5qWf5qS45qWO5qWi5qWx5qS/5qWF5qWq5qS55qWC5qWX5qWZ5qW65qWI5qWJ5qS15qWs5qSz5qS95qWl5qOw5qW45qS05qWp5qWA5qWv5qWE5qW25qWY5qWB5qW05qWM5qS75qWL5qS35qWc5qWP5qWR5qSy5qWS5qSv5qW75qS85q2G5q2F5q2D5q2C5q2I5q2B5q6b76iN5q+75q+8Il0sWyJkZTQwIiwi5q+55q+35q+45rqb5ruW5ruI5rqP5ruA5rqf5rqT5rqU5rqg5rqx5rq55ruG5ruS5rq95ruB5rqe5ruJ5rq35rqw5ruN5rqm5ruP5rqy5rq+5ruD5ruc5ruY5rqZ5rqS5rqO5rqN5rqk5rqh5rq/5rqz5ruQ5ruK5rqX5rqu5rqj54WH54WU54WS54Wj54Wg54WB54Wd54Wi54Wy54W454Wq54Wh54WC54WY54WD54WL54Ww54Wf54WQ54WTIl0sWyJkZWExIiwi54WE54WN54Wa54mP54qN54qM54qR54qQ54qO54y8542C54y754y6542A542K542J55GE55GK55GL55GS55GR55GX55GA55GP55GQ55GO55GC55GG55GN55GU55Oh55O/55O+55O955Sd55W555W35qaD55ev55iP55iD55e355e+55e855e555e455iQ55e755e255et55e155e955qZ55q155ud552V552f552g552S552W552a552p552n552U552Z552t55+g56KH56Ka56KU56KP56KE56KV56KF56KG56Kh56KD56G556KZ56KA56KW56G756W856aC56W956W556iR56iY56iZ56iS56iX56iV56ii56iTIl0sWyJkZjQwIiwi56ib56iQ56qj56qi56qe56ur562m562k562t5620562p562y562l562z562x562w562h56245622562j57Ky57K057Kv57aI57aG57aA57aN57W/57aF57W657aO57W757aD57W857aM57aU57aE57W957aS572t572r572n572o572s576m576l576n57+b57+c6ICh6IWk6IWg6IW36IWc6IWp6IWb6IWi6IWy5pyh6IWe6IW26IWn6IWvIl0sWyJkZmExIiwi6IWE6IWh6Iid6ImJ6ImE6ImA6ImC6ImF6JOx6JC/6JGW6JG26JG56JKP6JKN6JGl6JGR6JGA6JKG6JGn6JCw6JGN6JG96JGa6JGZ6JG06JGz6JGd6JSH6JGe6JC36JC66JC06JG66JGD6JG46JCy6JGF6JCp6I+Z6JGL6JCv6JGC6JCt6JGf6JGw6JC56JGO6JGM6JGS6JGv6JOF6JKO6JC76JGH6JC26JCz6JGo6JG+6JGE6JCr6JGg6JGU6JGu6JGQ6JyL6JyE6Ju36JyM6Ju66JuW6Ju16J2N6Ju46JyO6JyJ6JyB6Ju26JyN6JyF6KOW6KOL6KON6KOO6KOe6KOb6KOa6KOM6KOQ6KaF6Kab6Kef6Kel6KekIl0sWyJlMDQwIiwi6Keh6Keg6Kei6Kec6Kem6Km26KqG6Km/6Kmh6Ki/6Km36KqC6KqE6Km16KqD6KqB6Km06Km66LC86LGL6LGK6LGl6LGk6LGm6LKG6LKE6LKF6LOM6LWo6LWp6LaR6LaM6LaO6LaP6LaN6LaT6LaU6LaQ6LaS6Lew6Leg6Les6Lex6Leu6LeQ6Lep6Lej6Lei6Len6Ley6Ler6Le06LyG6Lu/6LyB6LyA6LyF6LyH6LyI6LyC6LyL6YGS6YC/Il0sWyJlMGExIiwi6YGE6YGJ6YC96YSQ6YSN6YSP6YSR6YSW6YSU6YSL6YSO6YWu6YWv6YmI6YmS6Yiw6Yi66Ymm6Yiz6Yml6Yme6YqD6Yiu6YmK6YmG6Ymt6Yms6YmP6Ymg6Ymn6Ymv6Yi26Ymh6Ymw6Yix6YmU6Ymj6YmQ6Ymy6YmO6YmT6YmM6YmW6Yiy6Zaf6Zac6Zae6Zab6ZqS6ZqT6ZqR6ZqX6ZuO6Zu66Zu96Zu46Zu16Z2z6Z236Z246Z2y6aCP6aCN6aCO6aKs6aO26aO56aav6aay6aaw6aa16aqt6aqr6a2b6bOq6bOt6bOn6bqA6bu95YOm5YOU5YOX5YOo5YOz5YOb5YOq5YOd5YOk5YOT5YOs5YOw5YOv5YOj5YOgIl0sWyJlMTQwIiwi5YeY5YqA5YqB5Yup5Yur5Yyw5Y6s5Zin5ZiV5ZiM5ZiS5Ze85ZiP5Zic5ZiB5ZiT5ZiC5Ze65Zid5ZiE5Ze/5Ze55aKJ5aG85aKQ5aKY5aKG5aKB5aG/5aG05aKL5aG65aKH5aKR5aKO5aG25aKC5aKI5aG75aKU5aKP5aO+5aWr5auc5auu5aul5auV5auq5aua5aut5aur5auz5aui5aug5aub5aus5aue5aud5auZ5auo5auf5a235a+gIl0sWyJlMWExIiwi5a+j5bGj5baC5baA5bW95baG5bW65baB5bW35baK5baJ5baI5bW+5bW85baN5bW55bW/5bmY5bmZ5bmT5buY5buR5buX5buO5buc5buV5buZ5buS5buU5b2E5b2D5b2v5b625oSs5oSo5oWB5oWe5oWx5oWz5oWS5oWT5oWy5oWs5oaA5oW05oWU5oW65oWb5oWl5oS75oWq5oWh5oWW5oip5oin5oir5pCr5pGN5pGb5pGd5pG05pG25pGy5pGz5pG95pG15pGm5pKm5pGO5pKC5pGe5pGc5pGL5pGT5pGg5pGQ5pG/5pC/5pGs5pGr5pGZ5pGl5pG35pWz5pag5pqh5pqg5pqf5pyF5pyE5pyi5qax5qa25qeJIl0sWyJlMjQwIiwi5qag5qeO5qaW5qaw5qas5qa85qaR5qaZ5qaO5qan5qaN5qap5qa+5qav5qa/5qeE5qa95qak5qeU5qa55qeK5qaa5qeP5qaz5qaT5qaq5qah5qae5qeZ5qaX5qaQ5qeC5qa15qal5qeG5q2K5q2N5q2L5q6e5q6f5q6g5q+D5q+E5q++5ruO5ru15rux5ryD5ryl5ru45ry35ru75ryu5ryJ5r2O5ryZ5rya5ryn5ryY5ry75ryS5rut5ryKIl0sWyJlMmExIiwi5ry25r2z5ru55ruu5ryt5r2A5ryw5ry85ry15rur5ryH5ryO5r2D5ryF5ru95ru25ry55ryc5ru85ry65ryf5ryN5rye5ryI5ryh54aH54aQ54aJ54aA54aF54aC54aP54W754aG54aB54aX54mE54mT54qX54qV54qT542D542N542R542M55Gi55Gz55Gx55G155Gy55Gn55Gu55SA55SC55SD55W955aQ55iW55iI55iM55iV55iR55iK55iU55q4556B5528556F556C552u556A552v552+556D56Ky56Kq56K056Kt56Ko56G+56Kr56Ke56Kl56Kg56Ks56Ki56Kk56aY56aK56aL56aW56aV56aU56aTIl0sWyJlMzQwIiwi56aX56aI56aS56aQ56ir56mK56iw56iv56io56im56qo56qr56qs56uu566I566c566K566R566Q566W566N566M566b566O566F566Y5YqE566Z566k566C57K757K/57K857K657an57a357eC57aj57aq57eB57eA57eF57ad57eO57eE57eG57eL57eM57av57a557aW57a857af57am57au57ap57ah57eJ572z57+i57+j57+l57+eIl0sWyJlM2ExIiwi6ICk6IGd6IGc6IaJ6IaG6IaD6IaH6IaN6IaM6IaL6IiV6JKX6JKk6JKh6JKf6JK66JOO6JOC6JKs6JKu6JKr6JK56JK06JOB6JON6JKq6JKa6JKx6JOQ6JKd6JKn6JK76JKi6JKU6JOH6JOM6JKb6JKp6JKv6JKo6JOW6JKY6JK26JOP6JKg6JOX6JOU6JOS6JOb6JKw6JKR6Jmh6Jyz6Jyj6Jyo6J2r6J2A6Jyu6Jye6Jyh6JyZ6Jyb6J2D6Jys6J2B6Jy+6J2G6Jyg6Jyy6Jyq6Jyt6Jy86JyS6Jy66Jyx6Jy16J2C6Jym6Jyn6Jy46Jyk6Jya6Jyw6JyR6KO36KOn6KOx6KOy6KO66KO+6KOu6KO86KO26KO7Il0sWyJlNDQwIiwi6KOw6KOs6KOr6Kad6Kah6Kaf6Kae6Kep6Ker6Keo6Kqr6KqZ6KqL6KqS6KqP6KqW6LC96LGo6LGp6LOV6LOP6LOX6LaW6LiJ6LiC6Le/6LiN6Le96LiK6LiD6LiH6LiG6LiF6Le+6LiA6LiE6LyQ6LyR6LyO6LyN6YSj6YSc6YSg6YSi6YSf6YSd6YSa6YSk6YSh6YSb6YW66YWy6YW56YWz6Yql6Yqk6Ym26Yqb6Ym66Yqg6YqU6Yqq6YqNIl0sWyJlNGExIiwi6Yqm6Yqa6Yqr6Ym56YqX6Ym/6Yqj6Yuu6YqO6YqC6YqV6Yqi6Ym96YqI6Yqh6YqK6YqG6YqM6YqZ6Yqn6Ym+6YqH6Yqp6Yqd6YqL6Yit6Zqe6Zqh6Zu/6Z2Y6Z296Z266Z2+6Z6D6Z6A6Z6C6Z276Z6E6Z6B6Z2/6Z+O6Z+N6aCW6aKt6aKu6aSC6aSA6aSH6aad6aac6aeD6aa56aa76aa66aeC6aa96aeH6aqx6auj6aun6ay+6ay/6a2g6a2h6a2f6bOx6bOy6bO16bqn5YO/5YSD5YSw5YO45YSG5YSH5YO25YO+5YSL5YSM5YO95YSK5YqL5YqM5Yux5Yuv5ZmI5ZmC5ZmM5Zi15ZmB5ZmK5ZmJ5ZmG5ZmYIl0sWyJlNTQwIiwi5Zma5ZmA5Ziz5Zi95Zis5Zi+5Zi45Ziq5Zi65Zya5aKr5aKd5aKx5aKg5aKj5aKv5aKs5aKl5aKh5aO/5au/5au05au95au35au25ayD5au45ayC5au55ayB5ayH5ayF5ayP5bGn5baZ5baX5baf5baS5bai5baT5baV5bag5bac5bah5baa5bae5bmp5bmd5bmg5bmc57ez5bub5bue5buh5b2J5b6y5oaL5oaD5oW55oax5oaw5oai5oaJIl0sWyJlNWExIiwi5oab5oaT5oav5oat5oaf5oaS5oaq5oah5oaN5oWm5oaz5oit5pGu5pGw5pKW5pKg5pKF5pKX5pKc5pKP5pKL5pKK5pKM5pKj5pKf5pGo5pKx5pKY5pW25pW65pW55pW75pay5paz5pq15pqw5pqp5pqy5pq35pqq5pqv5qiA5qiG5qiX5qel5qe45qiV5qex5qek5qig5qe/5qes5qei5qib5qid5qe+5qin5qey5qeu5qiU5qe35qen5qmA5qiI5qem5qe75qiN5qe85qer5qiJ5qiE5qiY5qil5qiP5qe25qim5qiH5qe05qiW5q2R5q6l5q6j5q6i5q6m5rCB5rCA5q+/5rCC5r2B5rym5r2+5r6H5r+G5r6SIl0sWyJlNjQwIiwi5r6N5r6J5r6M5r2i5r2P5r6F5r2a5r6W5r225r2s5r6C5r2V5r2y5r2S5r2Q5r2X5r6U5r6T5r2d5ryA5r2h5r2r5r295r2n5r6Q5r2T5r6L5r2p5r2/5r6V5r2j5r235r2q5r2754ay54av54ab54aw54ag54aa54ap54a154ad54al54ae54ak54ah54aq54ac54an54az54qY54qa542Y542S542e542f542g542d542b542h542a542ZIl0sWyJlNmExIiwi542i55KH55KJ55KK55KG55KB55G955KF55KI55G855G555SI55SH55W+55il55ie55iZ55id55ic55ij55ia55io55ib55qc55qd55qe55qb556N556P556J556I56ON56K756OP56OM56OR56OO56OU56OI56OD56OE56OJ56aa56ah56ag56ac56ai56ab5q2256i556qy56q056qz566356+L566+566s56+O566v566556+K566157OF57OI57OM57OL57e357eb57eq57en57eX57eh57iD57e657em57e257ex57ew57eu57ef5722576s576w576t57+t57+r57+q57+s57+m57+o6IGk6IGn6Iaj6IafIl0sWyJlNzQwIiwi6Iae6IaV6Iai6IaZ6IaX6IiW6ImP6ImT6ImS6ImQ6ImO6ImR6JSk6JS76JSP6JSA6JSp6JSO6JSJ6JSN6JSf6JSK6JSn6JSc6JO76JSr6JO66JSI6JSM6JO06JSq6JOy6JSV6JO36JOr6JOz6JO86JSS6JOq6JOp6JSW6JO+6JSo6JSd6JSu6JSC6JO96JSe6JO26JSx6JSm6JOn6JOo6JOw6JOv6JO56JSY6JSg6JSw6JSL6JSZ6JSv6JmiIl0sWyJlN2ExIiwi6J2W6J2j6J2k6J236J+h6J2z6J2Y6J2U6J2b6J2S6J2h6J2a6J2R6J2e6J2t6J2q6J2Q6J2O6J2f6J2d6J2v6J2s6J266J2u6J2c6J2l6J2P6J276J216J2i6J2n6J2p6KGa6KSF6KSM6KSU6KSL6KSX6KSY6KSZ6KSG6KSW6KSR6KSO6KSJ6Kai6Kak6Kaj6Ket6Kew6Kes6KuP6KuG6Kq46KuT6KuR6KuU6KuV6Kq76KuX6Kq+6KuA6KuF6KuY6KuD6Kq66Kq96KuZ6LC+6LGN6LKP6LOl6LOf6LOZ6LOo6LOa6LOd6LOn6Lag6Lac6Lah6Lab6Lig6Lij6Lil6Lik6Liu6LiV6Lib6LiW6LiR6LiZ6Lim6LinIl0sWyJlODQwIiwi6LiU6LiS6LiY6LiT6Lic6LiX6Lia6Lys6Lyk6LyY6Lya6Lyg6Lyj6LyW6LyX6YGz6YGw6YGv6YGn6YGr6YSv6YSr6YSp6YSq6YSy6YSm6YSu6YaF6YaG6YaK6YaB6YaC6YaE6YaA6YuQ6YuD6YuE6YuA6YuZ6Yq26YuP6Yux6Yuf6YuY6Yup6YuX6Yud6YuM6Yuv6YuC6Yuo6YuK6YuI6YuO6Yum6YuN6YuV6YuJ6Yug6Yue6Yun6YuR6YuTIl0sWyJlOGExIiwi6Yq16Yuh6YuG6Yq06ZW86Zas6Zar6Zau6Zaw6Zqk6Zqi6ZuT6ZyF6ZyI6ZyC6Z2a6Z6K6Z6O6Z6I6Z+Q6Z+P6aCe6aCd6aCm6aCp6aCo6aCg6aCb6aCn6aKy6aSI6aO66aSR6aSU6aSW6aSX6aSV6aec6aeN6aeP6aeT6aeU6aeO6aeJ6aeW6aeY6aeL6aeX6aeM6aqz6aus6aur6auz6auy6aux6a2G6a2D6a2n6a206a2x6a2m6a226a216a2w6a2o6a2k6a2s6bO86bO66bO96bO/6bO36bSH6bSA6bO56bO76bSI6bSF6bSE6bqD6buT6byP6byQ5YSc5YST5YSX5YSa5YSR5Yee5Yy05Y+h5Zmw5Zmg5ZmuIl0sWyJlOTQwIiwi5Zmz5Zmm5Zmj5Zmt5Zmy5Zme5Zm35Zyc5Zyb5aOI5aK95aOJ5aK/5aK65aOC5aK85aOG5ayX5ayZ5ayb5ayh5ayU5ayT5ayQ5ayW5ayo5aya5ayg5aye5a+v5bas5bax5bap5ban5ba15baw5bau5baq5bao5bay5bat5bav5ba05bmn5bmo5bmm5bmv5bup5bun5bum5buo5bul5b2L5b685oad5oao5oaW5oeF5oa05oeG5oeB5oeM5oa6Il0sWyJlOWExIiwi5oa/5oa45oaM5pOX5pOW5pOQ5pOP5pOJ5pK95pKJ5pOD5pOb5pOz5pOZ5pSz5pW/5pW85pai5puI5pq+5puA5puK5puL5puP5pq95pq75pq65puM5pyj5qi05qmm5qmJ5qmn5qiy5qmo5qi+5qmd5qmt5qm25qmb5qmR5qio5qma5qi75qi/5qmB5qmq5qmk5qmQ5qmP5qmU5qmv5qmp5qmg5qi85qme5qmW5qmV5qmN5qmO5qmG5q2V5q2U5q2W5q6n5q6q5q6r5q+I5q+H5rCE5rCD5rCG5r6t5r+L5r6j5r+H5r685r+O5r+I5r2e5r+E5r695r6e5r+K5r6o54CE5r6l5r6u5r665r6s5r6q5r+P5r6/5r64Il0sWyJlYTQwIiwi5r6i5r+J5r6r5r+N5r6v5r6y5r6w54eF54eC54a/54a454eW54eA54eB54eL54eU54eK54eH54eP54a954eY54a854eG54ea54eb54qd54qe542p542m542n542s542l542r542q55G/55Ka55Kg55KU55KS55KV55Kh55SL55aA55iv55it55ix55i955iz55i855i155iy55iw55q755um556a556d556h556c556b556i556j556V556ZIl0sWyJlYWExIiwi556X56Od56Op56Ol56Oq56Oe56Oj56Ob56Oh56Oi56Ot56Of56Og56ak56mE56mI56mH56q256q456q156qx56q356+e56+j56+n56+d56+V56+l56+a56+o56+556+U56+q56+i56+c56+r56+Y56+f57OS57OU57OX57OQ57OR57iS57ih57iX57iM57if57ig57iT57iO57ic57iV57ia57ii57iL57iP57iW57iN57iU57il57ik572D572757285726576x57+v6ICq6ICp6IGs6Iax6Iam6Iau6Ia56Ia16Iar6Iaw6Ias6Ia06Iay6Ia36Ian6Iey6ImV6ImW6ImX6JWW6JWF6JWr6JWN6JWT6JWh6JWYIl0sWyJlYjQwIiwi6JWA6JWG6JWk6JWB6JWi6JWE6JWR6JWH6JWj6JS+6JWb6JWx6JWO6JWu6JW16JWV6JWn6JWg6JaM6JWm6JWd6JWU6JWl6JWs6Jmj6Jml6Jmk6J6b6J6P6J6X6J6T6J6S6J6I6J6B6J6W6J6Y6J256J6H6J6j6J6F6J6Q6J6R6J6d6J6E6J6U6J6c6J6a6J6J6KSe6KSm6KSw6KSt6KSu6KSn6KSx6KSi6KSp6KSj6KSv6KSs6KSf6Kex6KugIl0sWyJlYmExIiwi6Kui6Kuy6Ku06Ku16Kud6KyU6Kuk6Kuf6Kuw6KuI6Kue6Kuh6Kuo6Ku/6Kuv6Ku76LKR6LKS6LKQ6LO16LOu6LOx6LOw6LOz6LWs6LWu6Lal6Lan6Liz6Li+6Li46LmA6LmF6Li26Li86Li96LmB6Liw6Li/6Lq96Ly26Lyu6Ly16Lyy6Ly56Ly36Ly06YG26YG56YG76YKG6YO66YSz6YS16YS26YaT6YaQ6YaR6YaN6YaP6Yyn6Yye6YyI6Yyf6YyG6YyP6Y266Yy46Yy86Yyb6Yyj6YyS6YyB6Y2G6Yyt6YyO6YyN6YuL6Yyd6Yu66Yyl6YyT6Yu56Yu36Yy06YyC6Yyk6Yu/6Yyp6Yy56Yy16Yyq6YyU6YyMIl0sWyJlYzQwIiwi6YyL6Yu+6YyJ6YyA6Yu76YyW6Za86ZeN6Za+6Za56Za66Za26Za/6Za16Za96Zqp6ZuU6ZyL6ZyS6ZyQ6Z6Z6Z6X6Z6U6Z+w6Z+46aC16aCv6aCy6aSk6aSf6aSn6aSp6aae6aeu6aes6ael6aek6aew6aej6aeq6aep6aen6aq56aq/6aq06aq76au26au66au56au36ayz6a6A6a6F6a6H6a286a2+6a276a6C6a6T6a6S6a6Q6a266a6VIl0sWyJlY2ExIiwi6a296a6I6bSl6bSX6bSg6bSe6bSU6bSp6bSd6bSY6bSi6bSQ6bSZ6bSf6bqI6bqG6bqH6bqu6bqt6buV6buW6bu66byS6by95YSm5YSl5YSi5YSk5YSg5YSp5Yu05ZqT5ZqM5ZqN5ZqG5ZqE5ZqD5Zm+5ZqC5Zm/5ZqB5aOW5aOU5aOP5aOS5ayt5ayl5ayy5ayj5ays5ayn5aym5ayv5ayu5a275a+x5a+y5ba35bms5bmq5b6+5b675oeD5oa15oa85oen5oeg5oel5oek5oeo5oee5pOv5pOp5pOj5pOr5pOk5pOo5paB5paA5pa25pea5puS5qqN5qqW5qqB5qql5qqJ5qqf5qqb5qqh5qqe5qqH5qqT5qqOIl0sWyJlZDQwIiwi5qqV5qqD5qqo5qqk5qqR5qm/5qqm5qqa5qqF5qqM5qqS5q2b5q6t5rCJ5r+M5r6p5r+05r+U5r+j5r+c5r+t5r+n5r+m5r+e5r+y5r+d5r+i5r+o54eh54ex54eo54ey54ek54ew54ei542z542u542v55KX55Ky55Kr55KQ55Kq55Kt55Kx55Kl55Kv55SQ55SR55SS55SP55aE55mD55mI55mJ55mH55qk55up5561556r556y55635562Il0sWyJlZGExIiwi5560556x556o55+w56Oz56O956SC56O756O856Oy56SF56O556O+56SE56ar56ao56mc56mb56mW56mY56mU56ma56q+56uA56uB57CF57CP56+y57CA56+/56+757CO56+057CL56+z57CC57CJ57CD57CB56+456+957CG56+w56+x57CQ57CK57Oo57it57i857mC57iz6aGI57i457iq57mJ57mA57mH57ip57mM57iw57i757i257mE57i6572F572/572+572957+057+y6ICs6Ia76IeE6IeM6IeK6IeF6IeH6Ia86Iep6Imb6Ima6Imc6JaD6JaA6JaP6Jan6JaV6Jag6JaL6Jaj6JW76Jak6Jaa6JaeIl0sWyJlZTQwIiwi6JW36JW86JaJ6Jah6JW66JW46JWX6JaO6JaW6JaG6JaN6JaZ6Jad6JaB6Jai6JaC6JaI6JaF6JW56JW26JaY6JaQ6Jaf6Jmo6J6+6J6q6J6t6J+F6J6w6J6s6J656J616J686J6u6J+J6J+D6J+C6J+M6J636J6v6J+E6J+K6J606J626J6/6J646J696J+e6J6y6KS16KSz6KS86KS+6KWB6KWS6KS36KWC6Kat6Kav6Kau6Key6Kez6KyeIl0sWyJlZWExIiwi6KyY6KyW6KyR6KyF6KyL6Kyi6KyP6KyS6KyV6KyH6KyN6KyI6KyG6Kyc6KyT6Kya6LGP6LGw6LGy6LGx6LGv6LKV6LKU6LO56LWv6LmO6LmN6LmT6LmQ6LmM6LmH6L2D6L2A6YKF6YG+6YS46Yaa6Yai6Yab6YaZ6Yaf6Yah6Yad6Yag6Y6h6Y6D6Y6v6Y2k6Y2W6Y2H6Y286Y2Y6Y2c6Y226Y2J6Y2Q6Y2R6Y2g6Y2t6Y6P6Y2M6Y2q6Y256Y2X6Y2V6Y2S6Y2P6Y2x6Y236Y276Y2h6Y2e6Y2j6Y2n6Y6A6Y2O6Y2Z6ZeH6ZeA6ZeJ6ZeD6ZeF6Za36Zqu6Zqw6Zqs6Zyg6Zyf6ZyY6Zyd6ZyZ6Z6a6Z6h6Z6cIl0sWyJlZjQwIiwi6Z6e6Z6d6Z+V6Z+U6Z+x6aGB6aGE6aGK6aGJ6aGF6aGD6aSl6aSr6aSs6aSq6aSz6aSy6aSv6aSt6aSx6aSw6aaY6aaj6aah6aiC6ae66ae06ae36ae56ae46ae26ae76ae96ae+6ae86aiD6aq+6au+6au96ayB6au86a2I6a6a6a6o6a6e6a6b6a6m6a6h6a6l6a6k6a6G6a6i6a6g6a6v6bSz6bWB6bWn6bS26bSu6bSv6bSx6bS46bSwIl0sWyJlZmExIiwi6bWF6bWC6bWD6bS+6bS36bWA6bS957+16bSt6bqK6bqJ6bqN6bqw6buI6bua6bu76bu/6byk6byj6byi6b2U6b6g5YSx5YSt5YSu5ZqY5Zqc5ZqX5Zqa5Zqd5ZqZ5aWw5ay85bGp5bGq5beA5bmt5bmu5oeY5oef5oet5oeu5oex5oeq5oew5oer5oeW5oep5pO/5pSE5pO95pO45pSB5pSD5pO85paU5peb5pua5pub5puY5quF5qq55qq95quh5quG5qq65qq25qq35quH5qq05qqt5q2e5q+J5rCL54CH54CM54CN54CB54CF54CU54CO5r+/54CA5r+754Cm5r+85r+354CK54iB54e/54e554iD54e95422Il0sWyJmMDQwIiwi55K455OA55K155OB55K+55K255K755OC55SU55ST55mc55mk55mZ55mQ55mT55mX55ma55qm55q955us55+C556656O/56SM56ST56SU56SJ56SQ56SS56SR56at56as56mf57Cc57Cp57CZ57Cg57Cf57Ct57Cd57Cm57Co57Ci57Cl57Cw57mc57mQ57mW57mj57mY57mi57mf57mR57mg57mX57mT5761576z57+357+46IG16IeR6IeSIl0sWyJmMGExIiwi6IeQ6Imf6Ime6Ja06JeG6JeA6JeD6JeC6Jaz6Ja16Ja96JeH6JeE6Ja/6JeL6JeO6JeI6JeF6Jax6Ja26JeS6Jik6Ja46Ja36Ja+6Jmp6J+n6J+m6J+i6J+b6J+r6J+q6J+l6J+f6J+z6J+k6J+U6J+c6J+T6J+t6J+Y6J+j6J6k6J+X6J+Z6KCB6J+06J+o6J+d6KWT6KWL6KWP6KWM6KWG6KWQ6KWR6KWJ6Kyq6Kyn6Kyj6Kyz6Kyw6Ky16K2H6Kyv6Ky86Ky+6Kyx6Kyl6Ky36Kym6Ky26Kyu6Kyk6Ky76Ky96Ky66LGC6LG16LKZ6LKY6LKX6LO+6LSE6LSC6LSA6Lmc6Lmi6Lmg6LmX6LmW6Lme6Lml6LmnIl0sWyJmMTQwIiwi6Lmb6Lma6Lmh6Lmd6Lmp6LmU6L2G6L2H6L2I6L2L6YSo6YS66YS76YS+6Yao6Yal6Yan6Yav6Yaq6Y616Y6M6Y6S6Y636Y6b6Y6d6Y6J6Y6n6Y6O6Y6q6Y6e6Y6m6Y6V6Y6I6Y6Z6Y6f6Y6N6Y6x6Y6R6Y6y6Y6k6Y6o6Y606Y6j6Y6l6ZeS6ZeT6ZeR6Zqz6ZuX6Zua5beC6Zuf6ZuY6Zud6Zyj6Zyi6Zyl6Z6s6Z6u6Z6o6Z6r6Z6k6Z6qIl0sWyJmMWExIiwi6Z6i6Z6l6Z+X6Z+Z6Z+W6Z+Y6Z+66aGQ6aGR6aGS6aK46aWB6aS86aS66aiP6aiL6aiJ6aiN6aiE6aiR6aiK6aiF6aiH6aiG6auA6auc6ayI6ayE6ayF6ayp6ay16a2K6a2M6a2L6a+H6a+G6a+D6a6/6a+B6a616a646a+T6a626a+E6a656a696bWc6bWT6bWP6bWK6bWb6bWL6bWZ6bWW6bWM6bWX6bWS6bWU6bWf6bWY6bWa6bqO6bqM6buf6byB6byA6byW6byl6byr6byq6byp6byo6b2M6b2V5YS05YS15YqW5Yu35Y605Zqr5Zqt5Zqm5Zqn5Zqq5Zqs5aOa5aOd5aOb5aSS5ay95ay+5ay/5beD5bmwIl0sWyJmMjQwIiwi5b6/5oe75pSH5pSQ5pSN5pSJ5pSM5pSO5paE5pee5ped5pue5qun5qug5quM5quR5quZ5quL5quf5quc5quQ5qur5quP5quN5que5q2g5q6w5rCM54CZ54Cn54Cg54CW54Cr54Ch54Ci54Cj54Cp54CX54Ck54Cc54Cq54iM54iK54iH54iC54iF54ql54qm54qk54qj54qh55OL55OF55K355OD55SW55mg55+J55+K55+E55+x56Sd56SbIl0sWyJmMmExIiwi56Sh56Sc56SX56Se56aw56mn56mo57Cz57C857C557Cs57C757Os57Oq57m257m157m457mw57m357mv57m657my57m057mo572L572K576D576G576357+957++6IG46IeX6IeV6Imk6Imh6Imj6Jer6Jex6Jet6JeZ6Jeh6Jeo6Jea6JeX6Jes6Jey6Je46JeY6Jef6Jej6Jec6JeR6Jew6Jem6Jev6Jee6Jei6KCA6J+66KCD6J+26J+36KCJ6KCM6KCL6KCG6J+86KCI6J+/6KCK6KCC6KWi6KWa6KWb6KWX6KWh6KWc6KWY6KWd6KWZ6KaI6Ka36Ka26Ke26K2Q6K2I6K2K6K2A6K2T6K2W6K2U6K2L6K2VIl0sWyJmMzQwIiwi6K2R6K2C6K2S6K2X6LGD6LG36LG26LKa6LSG6LSH6LSJ6Las6Laq6Lat6Lar6Lmt6Lm46Lmz6Lmq6Lmv6Lm76LuC6L2S6L2R6L2P6L2Q6L2T6L606YWA6YS/6Yaw6Yat6Y+e6Y+H6Y+P6Y+C6Y+a6Y+Q6Y+56Y+s6Y+M6Y+Z6Y6p6Y+m6Y+K6Y+U6Y+u6Y+j6Y+V6Y+E6Y+O6Y+A6Y+S6Y+n6ZW96Zea6Zeb6Zuh6Zyp6Zyr6Zys6Zyo6ZymIl0sWyJmM2ExIiwi6Z6z6Z636Z626Z+d6Z+e6Z+f6aGc6aGZ6aGd6aGX6aK/6aK96aK76aK+6aWI6aWH6aWD6aam6aan6aia6aiV6ail6aid6aik6aib6aii6aig6ain6aij6aie6aic6aiU6auC6ayL6ayK6ayO6ayM6ay36a+q6a+r6a+g6a+e6a+k6a+m6a+i6a+w6a+U6a+X6a+s6a+c6a+Z6a+l6a+V6a+h6a+a6bW36baB6baK6baE6baI6bWx6baA6bW46baG6baL6baM6bW96bWr6bW06bW16bWw6bWp6baF6bWz6bW76baC6bWv6bW56bW/6baH6bWo6bqU6bqR6buA6bu86byt6b2A6b2B6b2N6b2W6b2X6b2Y5Yy35ZqyIl0sWyJmNDQwIiwi5Zq15Zqz5aOj5a2F5beG5beH5buu5buv5b+A5b+B5oe55pSX5pSW5pSV5pST5pef5puo5puj5puk5quz5quw5quq5quo5qu55qux5quu5quv54C854C154Cv54C354C054Cx54GC54C454C/54C654C554GA54C754Cz54GB54iT54iU54qo5429542855K655qr55qq55q+55ut55+M55+O55+P55+N55+y56Sl56Sj56Sn56So56Sk56SpIl0sWyJmNGExIiwi56ay56mu56ms56mt56u357GJ57GI57GK57GH57GF57Ou57m757m+57qB57qA576657+/6IG56Ieb6IeZ6IiL6Imo6Imp6Jii6Je/6JiB6Je+6Jib6JiA6Je26JiE6JiJ6JiF6JiM6Je96KCZ6KCQ6KCR6KCX6KCT6KCW6KWj6KWm6Ka56Ke36K2g6K2q6K2d6K2o6K2j6K2l6K2n6K2t6Lau6LqG6LqI6LqE6L2Z6L2W6L2X6L2V6L2Y6L2a6YKN6YWD6YWB6Ya36Ya16Yay6Yaz6ZCL6ZCT6Y+76ZCg6ZCP6ZCU6Y++6ZCV6ZCQ6ZCo6ZCZ6ZCN6Y+16ZCA6Y+36ZCH6ZCO6ZCW6ZCS6Y+66ZCJ6Y+46ZCK6Y+/Il0sWyJmNTQwIiwi6Y+86ZCM6Y+26ZCR6ZCG6Zee6Zeg6Zef6Zyu6Zyv6Z656Z676Z+96Z++6aGg6aGi6aGj6aGf6aOB6aOC6aWQ6aWO6aWZ6aWM6aWL6aWT6aiy6ai06aix6ais6aiq6ai26aip6aiu6ai46ait6auH6auK6auG6ayQ6ayS6ayR6bCL6bCI6a+36bCF6bCS6a+46bGA6bCH6bCO6bCG6bCX6bCU6bCJ6baf6baZ6bak6bad6baS6baY6baQ6babIl0sWyJmNWExIiwi6bag6baU6bac6baq6baX6bah6baa6bai6bao6bae6baj6ba/6bap6baW6bam6ban6bqZ6bqb6bqa6bul6buk6bun6bum6byw6byu6b2b6b2g6b2e6b2d6b2Z6b6R5YS65YS55YqY5YqX5ZuD5Zq95Zq+5a2I5a2H5beL5beP5bux5oe95pSb5qyC5qu85qyD5qu45qyA54GD54GE54GK54GI54GJ54GF54GG54id54ia54iZ542+55SX55mq55+Q56St56Sx56Sv57GU57GT57Oy57qK57qH57qI57qL57qG57qN572N57676ICw6Ied6JiY6Jiq6Jim6Jif6Jij6Jic6JiZ6Jin6Jiu6Jih6Jig6Jip6Jie6JilIl0sWyJmNjQwIiwi6KCp6KCd6KCb6KCg6KCk6KCc6KCr6KGK6KWt6KWp6KWu6KWr6Ke66K256K246K2F6K266K276LSQ6LSU6Lav6LqO6LqM6L2e6L2b6L2d6YWG6YWE6YWF6Ya56ZC/6ZC76ZC26ZCp6ZC96ZC86ZCw6ZC56ZCq6ZC36ZCs6ZGA6ZCx6Zel6Zek6Zej6Zy16Zy66Z6/6Z+h6aGk6aOJ6aOG6aOA6aWY6aWW6ai56ai96amG6amE6amC6amB6ai6Il0sWyJmNmExIiwi6ai/6auN6ayV6ayX6ayY6ayW6ay66a2S6bCr6bCd6bCc6bCs6bCj6bCo6bCp6bCk6bCh6ba36ba26ba86beB6beH6beK6beP6ba+6beF6beD6ba76ba16beO6ba56ba66bas6beI6bax6bat6beM6baz6beN6bay6bm66bqc6bur6buu6but6byb6byY6bya6byx6b2O6b2l6b2k6b6S5Lq55ZuG5ZuF5ZuL5aWx5a2L5a2M5beV5beR5buy5pSh5pSg5pSm5pSi5qyL5qyI5qyJ5rCN54GV54GW54GX54GS54ie54if54qp542/55OY55OV55OZ55OX55mt55qt56S156a056mw56mx57GX57Gc57GZ57Gb57GaIl0sWyJmNzQwIiwi57O057Ox57qR572P576H6Iee6Imr6Ji06Ji16Jiz6Jis6Jiy6Ji26KCs6KCo6KCm6KCq6KCl6KWx6Ka/6Ka+6Ke76K2+6K6E6K6C6K6G6K6F6K2/6LSV6LqV6LqU6Lqa6LqS6LqQ6LqW6LqX6L2g6L2i6YWH6ZGM6ZGQ6ZGK6ZGL6ZGP6ZGH6ZGF6ZGI6ZGJ6ZGG6Zy/6Z+j6aGq6aGp6aOL6aWU6aWb6amO6amT6amU6amM6amP6amI6amKIl0sWyJmN2ExIiwi6amJ6amS6amQ6auQ6ayZ6ayr6ay76a2W6a2V6bGG6bGI6bC/6bGE6bC56bCz6bGB6bC86bC36bC06bCy6bC96bC26beb6beS6bee6bea6beL6beQ6bec6beR6bef6bep6beZ6beY6beW6be16beV6bed6bq26buw6by16byz6byy6b2C6b2r6b6V6b6i5YS95YqZ5aOo5aOn5aWy5a2N5beY6KCv5b2P5oiB5oiD5oiE5pSp5pSl5paW5pur5qyR5qyS5qyP5q+K54Gb54Ga54ii546C546B546D55mw55+U57Gn57Gm57qV6Ims6Ji66JmA6Ji56Ji86Jix6Ji76Ji+6KCw6KCy6KCu6KCz6KW26KW06KWz6Ke+Il0sWyJmODQwIiwi6K6M6K6O6K6L6K6I6LGF6LSZ6LqY6L2k6L2j6Ya86ZGi6ZGV6ZGd6ZGX6ZGe6Z+E6Z+F6aCA6amW6amZ6aye6ayf6ayg6bGS6bGY6bGQ6bGK6bGN6bGL6bGV6bGZ6bGM6bGO6be76be36bev6bej6ber6be46bek6be26beh6beu6bem6bey6bew6bei6bes6be06bez6beo6bet6buC6buQ6buy6buz6byG6byc6by46by36by26b2D6b2PIl0sWyJmOGExIiwi6b2x6b2w6b2u6b2v5ZuT5ZuN5a2O5bGt5pSt5put5puu5qyT54Gf54Gh54Gd54Gg54ij55Ob55Ol55+V56S456a356a257Gq57qX576J6Imt6JmD6KC46KC36KC16KGL6K6U6K6V6Lqe6Lqf6Lqg6Lqd6Ya+6Ya96YeC6ZGr6ZGo6ZGp6Zul6Z2G6Z2D6Z2H6Z+H6Z+l6ame6auV6a2Z6bGj6bGn6bGm6bGi6bGe6bGg6biC6be+6biH6biD6biG6biF6biA6biB6biJ6be/6be96biE6bqg6bye6b2G6b206b216b225ZuU5pSu5pa45qyY5qyZ5qyX5qya54Gi54im54qq55+Y55+Z56S557Gp57Gr57O257qaIl0sWyJmOTQwIiwi57qY57qb57qZ6Ieg6Ieh6JmG6JmH6JmI6KW56KW66KW86KW76Ke/6K6Y6K6Z6Lql6Lqk6Lqj6ZGu6ZGt6ZGv6ZGx6ZGz6Z2J6aGy6aWf6bGo6bGu6bGt6biL6biN6biQ6biP6biS6biR6bqh6bu16byJ6b2H6b246b276b266b255Zye54Gm57Gv6KC86Lay6Lqm6YeD6ZG06ZG46ZG26ZG16amg6bG06bGz6bGx6bG16biU6biT6bu26byKIl0sWyJmOWExIiwi6b6k54Go54Gl57O36Jmq6KC+6KC96KC/6K6e6LKc6Lqp6LuJ6Z2L6aGz6aG06aOM6aWh6aar6amk6amm6amn6ayk6biV6biX6b2I5oiH5qye54in6JmM6Lqo6ZKC6ZKA6ZKB6amp6amo6ayu6biZ54ip6JmL6K6f6ZKD6bG56bq355m16amr6bG66bid54Gp54Gq6bqk6b2+6b2J6b6Y56KB6Yq56KOP5aK75oGS57Kn5au64pWU4pWm4pWX4pWg4pWs4pWj4pWa4pWp4pWd4pWS4pWk4pWV4pWe4pWq4pWh4pWY4pWn4pWb4pWT4pWl4pWW4pWf4pWr4pWi4pWZ4pWo4pWc4pWR4pWQ4pWt4pWu4pWw4pWv4paTIl1dCgovKioqLyB9KSwKLyogOTMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjcuMQooZnVuY3Rpb24oKSB7CiAgdmFyIEFycmF5VCwgTnVtYmVyVCwgdXRpbHM7CgogIE51bWJlclQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKS5OdW1iZXI7CgogIHV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7CgogIEFycmF5VCA9IChmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIEFycmF5VCh0eXBlLCBsZW5ndGgsIGxlbmd0aFR5cGUpIHsKICAgICAgdGhpcy50eXBlID0gdHlwZTsKICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7CiAgICAgIHRoaXMubGVuZ3RoVHlwZSA9IGxlbmd0aFR5cGUgIT0gbnVsbCA/IGxlbmd0aFR5cGUgOiAnY291bnQnOwogICAgfQoKICAgIEFycmF5VC5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24oc3RyZWFtLCBwYXJlbnQpIHsKICAgICAgdmFyIGN0eCwgaSwgbGVuZ3RoLCBwb3MsIHJlcywgdGFyZ2V0LCBfaTsKICAgICAgcG9zID0gc3RyZWFtLnBvczsKICAgICAgcmVzID0gW107CiAgICAgIGN0eCA9IHBhcmVudDsKICAgICAgaWYgKHRoaXMubGVuZ3RoICE9IG51bGwpIHsKICAgICAgICBsZW5ndGggPSB1dGlscy5yZXNvbHZlTGVuZ3RoKHRoaXMubGVuZ3RoLCBzdHJlYW0sIHBhcmVudCk7CiAgICAgIH0KICAgICAgaWYgKHRoaXMubGVuZ3RoIGluc3RhbmNlb2YgTnVtYmVyVCkgewogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHJlcywgewogICAgICAgICAgcGFyZW50OiB7CiAgICAgICAgICAgIHZhbHVlOiBwYXJlbnQKICAgICAgICAgIH0sCiAgICAgICAgICBfc3RhcnRPZmZzZXQ6IHsKICAgICAgICAgICAgdmFsdWU6IHBvcwogICAgICAgICAgfSwKICAgICAgICAgIF9jdXJyZW50T2Zmc2V0OiB7CiAgICAgICAgICAgIHZhbHVlOiAwLAogICAgICAgICAgICB3cml0YWJsZTogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgIF9sZW5ndGg6IHsKICAgICAgICAgICAgdmFsdWU6IGxlbmd0aAogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIGN0eCA9IHJlczsKICAgICAgfQogICAgICBpZiAoKGxlbmd0aCA9PSBudWxsKSB8fCB0aGlzLmxlbmd0aFR5cGUgPT09ICdieXRlcycpIHsKICAgICAgICB0YXJnZXQgPSBsZW5ndGggIT0gbnVsbCA/IHN0cmVhbS5wb3MgKyBsZW5ndGggOiAocGFyZW50ICE9IG51bGwgPyBwYXJlbnQuX2xlbmd0aCA6IHZvaWQgMCkgPyBwYXJlbnQuX3N0YXJ0T2Zmc2V0ICsgcGFyZW50Ll9sZW5ndGggOiBzdHJlYW0ubGVuZ3RoOwogICAgICAgIHdoaWxlIChzdHJlYW0ucG9zIDwgdGFyZ2V0KSB7CiAgICAgICAgICByZXMucHVzaCh0aGlzLnR5cGUuZGVjb2RlKHN0cmVhbSwgY3R4KSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGZvciAoaSA9IF9pID0gMDsgX2kgPCBsZW5ndGg7IGkgPSBfaSArPSAxKSB7CiAgICAgICAgICByZXMucHVzaCh0aGlzLnR5cGUuZGVjb2RlKHN0cmVhbSwgY3R4KSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiByZXM7CiAgICB9OwoKICAgIEFycmF5VC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKGFycmF5LCBjdHgpIHsKICAgICAgdmFyIGl0ZW0sIHNpemUsIF9pLCBfbGVuOwogICAgICBpZiAoIWFycmF5KSB7CiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS5zaXplKG51bGwsIGN0eCkgKiB1dGlscy5yZXNvbHZlTGVuZ3RoKHRoaXMubGVuZ3RoLCBudWxsLCBjdHgpOwogICAgICB9CiAgICAgIHNpemUgPSAwOwogICAgICBpZiAodGhpcy5sZW5ndGggaW5zdGFuY2VvZiBOdW1iZXJUKSB7CiAgICAgICAgc2l6ZSArPSB0aGlzLmxlbmd0aC5zaXplKCk7CiAgICAgICAgY3R4ID0gewogICAgICAgICAgcGFyZW50OiBjdHgKICAgICAgICB9OwogICAgICB9CiAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gYXJyYXkubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHsKICAgICAgICBpdGVtID0gYXJyYXlbX2ldOwogICAgICAgIHNpemUgKz0gdGhpcy50eXBlLnNpemUoaXRlbSwgY3R4KTsKICAgICAgfQogICAgICByZXR1cm4gc2l6ZTsKICAgIH07CgogICAgQXJyYXlULnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIGFycmF5LCBwYXJlbnQpIHsKICAgICAgdmFyIGN0eCwgaSwgaXRlbSwgcHRyLCBfaSwgX2xlbjsKICAgICAgY3R4ID0gcGFyZW50OwogICAgICBpZiAodGhpcy5sZW5ndGggaW5zdGFuY2VvZiBOdW1iZXJUKSB7CiAgICAgICAgY3R4ID0gewogICAgICAgICAgcG9pbnRlcnM6IFtdLAogICAgICAgICAgc3RhcnRPZmZzZXQ6IHN0cmVhbS5wb3MsCiAgICAgICAgICBwYXJlbnQ6IHBhcmVudAogICAgICAgIH07CiAgICAgICAgY3R4LnBvaW50ZXJPZmZzZXQgPSBzdHJlYW0ucG9zICsgdGhpcy5zaXplKGFycmF5LCBjdHgpOwogICAgICAgIHRoaXMubGVuZ3RoLmVuY29kZShzdHJlYW0sIGFycmF5Lmxlbmd0aCk7CiAgICAgIH0KICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBhcnJheS5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykgewogICAgICAgIGl0ZW0gPSBhcnJheVtfaV07CiAgICAgICAgdGhpcy50eXBlLmVuY29kZShzdHJlYW0sIGl0ZW0sIGN0eCk7CiAgICAgIH0KICAgICAgaWYgKHRoaXMubGVuZ3RoIGluc3RhbmNlb2YgTnVtYmVyVCkgewogICAgICAgIGkgPSAwOwogICAgICAgIHdoaWxlIChpIDwgY3R4LnBvaW50ZXJzLmxlbmd0aCkgewogICAgICAgICAgcHRyID0gY3R4LnBvaW50ZXJzW2krK107CiAgICAgICAgICBwdHIudHlwZS5lbmNvZGUoc3RyZWFtLCBwdHIudmFsKTsKICAgICAgICB9CiAgICAgIH0KICAgIH07CgogICAgcmV0dXJuIEFycmF5VDsKCiAgfSkoKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBBcnJheVQ7Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiA5NCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuNy4xCihmdW5jdGlvbigpIHsKICB2YXIgU3RydWN0LCB1dGlsczsKCiAgdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTsKCiAgU3RydWN0ID0gKGZ1bmN0aW9uKCkgewogICAgZnVuY3Rpb24gU3RydWN0KGZpZWxkcykgewogICAgICB0aGlzLmZpZWxkcyA9IGZpZWxkcyAhPSBudWxsID8gZmllbGRzIDoge307CiAgICB9CgogICAgU3RydWN0LnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIHBhcmVudCwgbGVuZ3RoKSB7CiAgICAgIHZhciByZXMsIF9yZWY7CiAgICAgIGlmIChsZW5ndGggPT0gbnVsbCkgewogICAgICAgIGxlbmd0aCA9IDA7CiAgICAgIH0KICAgICAgcmVzID0gdGhpcy5fc2V0dXAoc3RyZWFtLCBwYXJlbnQsIGxlbmd0aCk7CiAgICAgIHRoaXMuX3BhcnNlRmllbGRzKHN0cmVhbSwgcmVzLCB0aGlzLmZpZWxkcyk7CiAgICAgIGlmICgoX3JlZiA9IHRoaXMucHJvY2VzcykgIT0gbnVsbCkgewogICAgICAgIF9yZWYuY2FsbChyZXMsIHN0cmVhbSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlczsKICAgIH07CgogICAgU3RydWN0LnByb3RvdHlwZS5fc2V0dXAgPSBmdW5jdGlvbihzdHJlYW0sIHBhcmVudCwgbGVuZ3RoKSB7CiAgICAgIHZhciByZXM7CiAgICAgIHJlcyA9IHt9OwogICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhyZXMsIHsKICAgICAgICBwYXJlbnQ6IHsKICAgICAgICAgIHZhbHVlOiBwYXJlbnQKICAgICAgICB9LAogICAgICAgIF9zdGFydE9mZnNldDogewogICAgICAgICAgdmFsdWU6IHN0cmVhbS5wb3MKICAgICAgICB9LAogICAgICAgIF9jdXJyZW50T2Zmc2V0OiB7CiAgICAgICAgICB2YWx1ZTogMCwKICAgICAgICAgIHdyaXRhYmxlOiB0cnVlCiAgICAgICAgfSwKICAgICAgICBfbGVuZ3RoOiB7CiAgICAgICAgICB2YWx1ZTogbGVuZ3RoCiAgICAgICAgfQogICAgICB9KTsKICAgICAgcmV0dXJuIHJlczsKICAgIH07CgogICAgU3RydWN0LnByb3RvdHlwZS5fcGFyc2VGaWVsZHMgPSBmdW5jdGlvbihzdHJlYW0sIHJlcywgZmllbGRzKSB7CiAgICAgIHZhciBrZXksIHR5cGUsIHZhbDsKICAgICAgZm9yIChrZXkgaW4gZmllbGRzKSB7CiAgICAgICAgdHlwZSA9IGZpZWxkc1trZXldOwogICAgICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgdmFsID0gdHlwZS5jYWxsKHJlcywgcmVzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFsID0gdHlwZS5kZWNvZGUoc3RyZWFtLCByZXMpOwogICAgICAgIH0KICAgICAgICBpZiAodmFsICE9PSB2b2lkIDApIHsKICAgICAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiB1dGlscy5Qcm9wZXJ0eURlc2NyaXB0b3IpIHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcywga2V5LCB2YWwpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmVzW2tleV0gPSB2YWw7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJlcy5fY3VycmVudE9mZnNldCA9IHN0cmVhbS5wb3MgLSByZXMuX3N0YXJ0T2Zmc2V0OwogICAgICB9CiAgICB9OwoKICAgIFN0cnVjdC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKHZhbCwgcGFyZW50LCBpbmNsdWRlUG9pbnRlcnMpIHsKICAgICAgdmFyIGN0eCwga2V5LCBzaXplLCB0eXBlLCBfcmVmOwogICAgICBpZiAodmFsID09IG51bGwpIHsKICAgICAgICB2YWwgPSB7fTsKICAgICAgfQogICAgICBpZiAoaW5jbHVkZVBvaW50ZXJzID09IG51bGwpIHsKICAgICAgICBpbmNsdWRlUG9pbnRlcnMgPSB0cnVlOwogICAgICB9CiAgICAgIGN0eCA9IHsKICAgICAgICBwYXJlbnQ6IHBhcmVudCwKICAgICAgICB2YWw6IHZhbCwKICAgICAgICBwb2ludGVyU2l6ZTogMAogICAgICB9OwogICAgICBzaXplID0gMDsKICAgICAgX3JlZiA9IHRoaXMuZmllbGRzOwogICAgICBmb3IgKGtleSBpbiBfcmVmKSB7CiAgICAgICAgdHlwZSA9IF9yZWZba2V5XTsKICAgICAgICBpZiAodHlwZS5zaXplICE9IG51bGwpIHsKICAgICAgICAgIHNpemUgKz0gdHlwZS5zaXplKHZhbFtrZXldLCBjdHgpOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoaW5jbHVkZVBvaW50ZXJzKSB7CiAgICAgICAgc2l6ZSArPSBjdHgucG9pbnRlclNpemU7CiAgICAgIH0KICAgICAgcmV0dXJuIHNpemU7CiAgICB9OwoKICAgIFN0cnVjdC5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24oc3RyZWFtLCB2YWwsIHBhcmVudCkgewogICAgICB2YXIgY3R4LCBpLCBrZXksIHB0ciwgdHlwZSwgX3JlZiwgX3JlZjE7CiAgICAgIGlmICgoX3JlZiA9IHRoaXMucHJlRW5jb2RlKSAhPSBudWxsKSB7CiAgICAgICAgX3JlZi5jYWxsKHZhbCwgc3RyZWFtKTsKICAgICAgfQogICAgICBjdHggPSB7CiAgICAgICAgcG9pbnRlcnM6IFtdLAogICAgICAgIHN0YXJ0T2Zmc2V0OiBzdHJlYW0ucG9zLAogICAgICAgIHBhcmVudDogcGFyZW50LAogICAgICAgIHZhbDogdmFsLAogICAgICAgIHBvaW50ZXJTaXplOiAwCiAgICAgIH07CiAgICAgIGN0eC5wb2ludGVyT2Zmc2V0ID0gc3RyZWFtLnBvcyArIHRoaXMuc2l6ZSh2YWwsIGN0eCwgZmFsc2UpOwogICAgICBfcmVmMSA9IHRoaXMuZmllbGRzOwogICAgICBmb3IgKGtleSBpbiBfcmVmMSkgewogICAgICAgIHR5cGUgPSBfcmVmMVtrZXldOwogICAgICAgIGlmICh0eXBlLmVuY29kZSAhPSBudWxsKSB7CiAgICAgICAgICB0eXBlLmVuY29kZShzdHJlYW0sIHZhbFtrZXldLCBjdHgpOwogICAgICAgIH0KICAgICAgfQogICAgICBpID0gMDsKICAgICAgd2hpbGUgKGkgPCBjdHgucG9pbnRlcnMubGVuZ3RoKSB7CiAgICAgICAgcHRyID0gY3R4LnBvaW50ZXJzW2krK107CiAgICAgICAgcHRyLnR5cGUuZW5jb2RlKHN0cmVhbSwgcHRyLnZhbCwgcHRyLnBhcmVudCk7CiAgICAgIH0KICAgIH07CgogICAgcmV0dXJuIFN0cnVjdDsKCiAgfSkoKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBTdHJ1Y3Q7Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiA5NSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9ICFfX3dlYnBhY2tfcmVxdWlyZV9fKDUpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KShmdW5jdGlvbiAoKSB7CiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3dlYnBhY2tfcmVxdWlyZV9fKDk2KSgnZGl2JyksICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3Owp9KTsKCgovKioqLyB9KSwKLyogOTYgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTsKdmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCkuZG9jdW1lbnQ7Ci8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRQp2YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7CiAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTsKfTsKCgovKioqLyB9KSwKLyogOTcgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHsKICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7CiAgcmV0dXJuIGl0Owp9OwoKCi8qKiovIH0pLAovKiA5OCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Cgptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChkb25lLCB2YWx1ZSkgewogIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZG9uZTogISFkb25lIH07Cn07CgoKLyoqKi8gfSksCi8qIDk5ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7CgoKLyoqKi8gfSksCi8qIDEwMCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgZFAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOwp2YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTsKdmFyIGdldEtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KTsKCm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7CiAgYW5PYmplY3QoTyk7CiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpOwogIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDsKICB2YXIgaSA9IDA7CiAgdmFyIFA7CiAgd2hpbGUgKGxlbmd0aCA+IGkpIGRQLmYoTywgUCA9IGtleXNbaSsrXSwgUHJvcGVydGllc1tQXSk7CiAgcmV0dXJuIE87Cn07CgoKLyoqKi8gfSksCi8qIDEwMSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgaGFzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOCk7CnZhciB0b0lPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTsKdmFyIGFycmF5SW5kZXhPZiA9IF9fd2VicGFja19yZXF1aXJlX18oMjA0KShmYWxzZSk7CnZhciBJRV9QUk9UTyA9IF9fd2VicGFja19yZXF1aXJlX18oNjQpKCdJRV9QUk9UTycpOwoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykgewogIHZhciBPID0gdG9JT2JqZWN0KG9iamVjdCk7CiAgdmFyIGkgPSAwOwogIHZhciByZXN1bHQgPSBbXTsKICB2YXIga2V5OwogIGZvciAoa2V5IGluIE8pIGlmIChrZXkgIT0gSUVfUFJPVE8pIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7CiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5cwogIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzKE8sIGtleSA9IG5hbWVzW2krK10pKSB7CiAgICB+YXJyYXlJbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpOwogIH0KICByZXR1cm4gcmVzdWx0Owp9OwoKCi8qKiovIH0pLAovKiAxMDIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIHRvSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oNjMpOwp2YXIgbWF4ID0gTWF0aC5tYXg7CnZhciBtaW4gPSBNYXRoLm1pbjsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkgewogIGluZGV4ID0gdG9JbnRlZ2VyKGluZGV4KTsKICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTsKfTsKCgovKioqLyB9KSwKLyogMTAzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0geyAiZGVmYXVsdCI6IF9fd2VicGFja19yZXF1aXJlX18oMjE1KSwgX19lc01vZHVsZTogdHJ1ZSB9OwoKLyoqKi8gfSksCi8qIDEwNCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyA3LjIuMiBJc0FycmF5KGFyZ3VtZW50KQp2YXIgY29mID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NSk7Cm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZykgewogIHJldHVybiBjb2YoYXJnKSA9PSAnQXJyYXknOwp9OwoKCi8qKiovIH0pLAovKiAxMDUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gMTkuMS4yLjcgLyAxNS4yLjMuNCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKQp2YXIgJGtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMSk7CnZhciBoaWRkZW5LZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2NikuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7CgpleHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHsKICByZXR1cm4gJGtleXMoTywgaGlkZGVuS2V5cyk7Cn07CgoKLyoqKi8gfSksCi8qIDEwNiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKCmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsKICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgewogICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIik7CiAgfQp9OwoKLyoqKi8gfSksCi8qIDEwNyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKCnZhciBfZGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc0KTsKCnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVmaW5lUHJvcGVydHkpOwoKZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH0KCmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsKICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOwogICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7CiAgICAgIGlmICgidmFsdWUiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOwogICAgICAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsKICAgIH0KICB9CgogIHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7CiAgICBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOwogICAgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7CiAgICByZXR1cm4gQ29uc3RydWN0b3I7CiAgfTsKfSgpOwoKLyoqKi8gfSksCi8qIDEwOCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Cgp2YXIgZFAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpLmY7CnZhciBjcmVhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KTsKdmFyIHJlZGVmaW5lQWxsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDkpOwp2YXIgY3R4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7CnZhciBhbkluc3RhbmNlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTApOwp2YXIgZm9yT2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQxKTsKdmFyICRpdGVyRGVmaW5lID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2MSk7CnZhciBzdGVwID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5OCk7CnZhciBzZXRTcGVjaWVzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMjgpOwp2YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOwp2YXIgZmFzdEtleSA9IF9fd2VicGFja19yZXF1aXJlX18oNDApLmZhc3RLZXk7CnZhciB2YWxpZGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNzUpOwp2YXIgU0laRSA9IERFU0NSSVBUT1JTID8gJ19zJyA6ICdzaXplJzsKCnZhciBnZXRFbnRyeSA9IGZ1bmN0aW9uICh0aGF0LCBrZXkpIHsKICAvLyBmYXN0IGNhc2UKICB2YXIgaW5kZXggPSBmYXN0S2V5KGtleSk7CiAgdmFyIGVudHJ5OwogIGlmIChpbmRleCAhPT0gJ0YnKSByZXR1cm4gdGhhdC5faVtpbmRleF07CiAgLy8gZnJvemVuIG9iamVjdCBjYXNlCiAgZm9yIChlbnRyeSA9IHRoYXQuX2Y7IGVudHJ5OyBlbnRyeSA9IGVudHJ5Lm4pIHsKICAgIGlmIChlbnRyeS5rID09IGtleSkgcmV0dXJuIGVudHJ5OwogIH0KfTsKCm1vZHVsZS5leHBvcnRzID0gewogIGdldENvbnN0cnVjdG9yOiBmdW5jdGlvbiAod3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUikgewogICAgdmFyIEMgPSB3cmFwcGVyKGZ1bmN0aW9uICh0aGF0LCBpdGVyYWJsZSkgewogICAgICBhbkluc3RhbmNlKHRoYXQsIEMsIE5BTUUsICdfaScpOwogICAgICB0aGF0Ll90ID0gTkFNRTsgICAgICAgICAvLyBjb2xsZWN0aW9uIHR5cGUKICAgICAgdGhhdC5faSA9IGNyZWF0ZShudWxsKTsgLy8gaW5kZXgKICAgICAgdGhhdC5fZiA9IHVuZGVmaW5lZDsgICAgLy8gZmlyc3QgZW50cnkKICAgICAgdGhhdC5fbCA9IHVuZGVmaW5lZDsgICAgLy8gbGFzdCBlbnRyeQogICAgICB0aGF0W1NJWkVdID0gMDsgICAgICAgICAvLyBzaXplCiAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRoYXRbQURERVJdLCB0aGF0KTsKICAgIH0pOwogICAgcmVkZWZpbmVBbGwoQy5wcm90b3R5cGUsIHsKICAgICAgLy8gMjMuMS4zLjEgTWFwLnByb3RvdHlwZS5jbGVhcigpCiAgICAgIC8vIDIzLjIuMy4yIFNldC5wcm90b3R5cGUuY2xlYXIoKQogICAgICBjbGVhcjogZnVuY3Rpb24gY2xlYXIoKSB7CiAgICAgICAgZm9yICh2YXIgdGhhdCA9IHZhbGlkYXRlKHRoaXMsIE5BTUUpLCBkYXRhID0gdGhhdC5faSwgZW50cnkgPSB0aGF0Ll9mOyBlbnRyeTsgZW50cnkgPSBlbnRyeS5uKSB7CiAgICAgICAgICBlbnRyeS5yID0gdHJ1ZTsKICAgICAgICAgIGlmIChlbnRyeS5wKSBlbnRyeS5wID0gZW50cnkucC5uID0gdW5kZWZpbmVkOwogICAgICAgICAgZGVsZXRlIGRhdGFbZW50cnkuaV07CiAgICAgICAgfQogICAgICAgIHRoYXQuX2YgPSB0aGF0Ll9sID0gdW5kZWZpbmVkOwogICAgICAgIHRoYXRbU0laRV0gPSAwOwogICAgICB9LAogICAgICAvLyAyMy4xLjMuMyBNYXAucHJvdG90eXBlLmRlbGV0ZShrZXkpCiAgICAgIC8vIDIzLjIuMy40IFNldC5wcm90b3R5cGUuZGVsZXRlKHZhbHVlKQogICAgICAnZGVsZXRlJzogZnVuY3Rpb24gKGtleSkgewogICAgICAgIHZhciB0aGF0ID0gdmFsaWRhdGUodGhpcywgTkFNRSk7CiAgICAgICAgdmFyIGVudHJ5ID0gZ2V0RW50cnkodGhhdCwga2V5KTsKICAgICAgICBpZiAoZW50cnkpIHsKICAgICAgICAgIHZhciBuZXh0ID0gZW50cnkubjsKICAgICAgICAgIHZhciBwcmV2ID0gZW50cnkucDsKICAgICAgICAgIGRlbGV0ZSB0aGF0Ll9pW2VudHJ5LmldOwogICAgICAgICAgZW50cnkuciA9IHRydWU7CiAgICAgICAgICBpZiAocHJldikgcHJldi5uID0gbmV4dDsKICAgICAgICAgIGlmIChuZXh0KSBuZXh0LnAgPSBwcmV2OwogICAgICAgICAgaWYgKHRoYXQuX2YgPT0gZW50cnkpIHRoYXQuX2YgPSBuZXh0OwogICAgICAgICAgaWYgKHRoYXQuX2wgPT0gZW50cnkpIHRoYXQuX2wgPSBwcmV2OwogICAgICAgICAgdGhhdFtTSVpFXS0tOwogICAgICAgIH0gcmV0dXJuICEhZW50cnk7CiAgICAgIH0sCiAgICAgIC8vIDIzLjIuMy42IFNldC5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuLCB0aGlzQXJnID0gdW5kZWZpbmVkKQogICAgICAvLyAyMy4xLjMuNSBNYXAucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiwgdGhpc0FyZyA9IHVuZGVmaW5lZCkKICAgICAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykgewogICAgICAgIHZhbGlkYXRlKHRoaXMsIE5BTUUpOwogICAgICAgIHZhciBmID0gY3R4KGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCAzKTsKICAgICAgICB2YXIgZW50cnk7CiAgICAgICAgd2hpbGUgKGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhpcy5fZikgewogICAgICAgICAgZihlbnRyeS52LCBlbnRyeS5rLCB0aGlzKTsKICAgICAgICAgIC8vIHJldmVydCB0byB0aGUgbGFzdCBleGlzdGluZyBlbnRyeQogICAgICAgICAgd2hpbGUgKGVudHJ5ICYmIGVudHJ5LnIpIGVudHJ5ID0gZW50cnkucDsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIC8vIDIzLjEuMy43IE1hcC5wcm90b3R5cGUuaGFzKGtleSkKICAgICAgLy8gMjMuMi4zLjcgU2V0LnByb3RvdHlwZS5oYXModmFsdWUpCiAgICAgIGhhczogZnVuY3Rpb24gaGFzKGtleSkgewogICAgICAgIHJldHVybiAhIWdldEVudHJ5KHZhbGlkYXRlKHRoaXMsIE5BTUUpLCBrZXkpOwogICAgICB9CiAgICB9KTsKICAgIGlmIChERVNDUklQVE9SUykgZFAoQy5wcm90b3R5cGUsICdzaXplJywgewogICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gdmFsaWRhdGUodGhpcywgTkFNRSlbU0laRV07CiAgICAgIH0KICAgIH0pOwogICAgcmV0dXJuIEM7CiAgfSwKICBkZWY6IGZ1bmN0aW9uICh0aGF0LCBrZXksIHZhbHVlKSB7CiAgICB2YXIgZW50cnkgPSBnZXRFbnRyeSh0aGF0LCBrZXkpOwogICAgdmFyIHByZXYsIGluZGV4OwogICAgLy8gY2hhbmdlIGV4aXN0aW5nIGVudHJ5CiAgICBpZiAoZW50cnkpIHsKICAgICAgZW50cnkudiA9IHZhbHVlOwogICAgLy8gY3JlYXRlIG5ldyBlbnRyeQogICAgfSBlbHNlIHsKICAgICAgdGhhdC5fbCA9IGVudHJ5ID0gewogICAgICAgIGk6IGluZGV4ID0gZmFzdEtleShrZXksIHRydWUpLCAvLyA8LSBpbmRleAogICAgICAgIGs6IGtleSwgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSBrZXkKICAgICAgICB2OiB2YWx1ZSwgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gdmFsdWUKICAgICAgICBwOiBwcmV2ID0gdGhhdC5fbCwgICAgICAgICAgICAgLy8gPC0gcHJldmlvdXMgZW50cnkKICAgICAgICBuOiB1bmRlZmluZWQsICAgICAgICAgICAgICAgICAgLy8gPC0gbmV4dCBlbnRyeQogICAgICAgIHI6IGZhbHNlICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSByZW1vdmVkCiAgICAgIH07CiAgICAgIGlmICghdGhhdC5fZikgdGhhdC5fZiA9IGVudHJ5OwogICAgICBpZiAocHJldikgcHJldi5uID0gZW50cnk7CiAgICAgIHRoYXRbU0laRV0rKzsKICAgICAgLy8gYWRkIHRvIGluZGV4CiAgICAgIGlmIChpbmRleCAhPT0gJ0YnKSB0aGF0Ll9pW2luZGV4XSA9IGVudHJ5OwogICAgfSByZXR1cm4gdGhhdDsKICB9LAogIGdldEVudHJ5OiBnZXRFbnRyeSwKICBzZXRTdHJvbmc6IGZ1bmN0aW9uIChDLCBOQU1FLCBJU19NQVApIHsKICAgIC8vIGFkZCAua2V5cywgLnZhbHVlcywgLmVudHJpZXMsIFtAQGl0ZXJhdG9yXQogICAgLy8gMjMuMS4zLjQsIDIzLjEuMy44LCAyMy4xLjMuMTEsIDIzLjEuMy4xMiwgMjMuMi4zLjUsIDIzLjIuMy44LCAyMy4yLjMuMTAsIDIzLjIuMy4xMQogICAgJGl0ZXJEZWZpbmUoQywgTkFNRSwgZnVuY3Rpb24gKGl0ZXJhdGVkLCBraW5kKSB7CiAgICAgIHRoaXMuX3QgPSB2YWxpZGF0ZShpdGVyYXRlZCwgTkFNRSk7IC8vIHRhcmdldAogICAgICB0aGlzLl9rID0ga2luZDsgICAgICAgICAgICAgICAgICAgICAvLyBraW5kCiAgICAgIHRoaXMuX2wgPSB1bmRlZmluZWQ7ICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzCiAgICB9LCBmdW5jdGlvbiAoKSB7CiAgICAgIHZhciB0aGF0ID0gdGhpczsKICAgICAgdmFyIGtpbmQgPSB0aGF0Ll9rOwogICAgICB2YXIgZW50cnkgPSB0aGF0Ll9sOwogICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnkKICAgICAgd2hpbGUgKGVudHJ5ICYmIGVudHJ5LnIpIGVudHJ5ID0gZW50cnkucDsKICAgICAgLy8gZ2V0IG5leHQgZW50cnkKICAgICAgaWYgKCF0aGF0Ll90IHx8ICEodGhhdC5fbCA9IGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhhdC5fdC5fZikpIHsKICAgICAgICAvLyBvciBmaW5pc2ggdGhlIGl0ZXJhdGlvbgogICAgICAgIHRoYXQuX3QgPSB1bmRlZmluZWQ7CiAgICAgICAgcmV0dXJuIHN0ZXAoMSk7CiAgICAgIH0KICAgICAgLy8gcmV0dXJuIHN0ZXAgYnkga2luZAogICAgICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGVudHJ5LmspOwogICAgICBpZiAoa2luZCA9PSAndmFsdWVzJykgcmV0dXJuIHN0ZXAoMCwgZW50cnkudik7CiAgICAgIHJldHVybiBzdGVwKDAsIFtlbnRyeS5rLCBlbnRyeS52XSk7CiAgICB9LCBJU19NQVAgPyAnZW50cmllcycgOiAndmFsdWVzJywgIUlTX01BUCwgdHJ1ZSk7CgogICAgLy8gYWRkIFtAQHNwZWNpZXNdLCAyMy4xLjIuMiwgMjMuMi4yLjIKICAgIHNldFNwZWNpZXMoTkFNRSk7CiAgfQp9OwoKCi8qKiovIH0pLAovKiAxMDkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIGhpZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIHNhZmUpIHsKICBmb3IgKHZhciBrZXkgaW4gc3JjKSB7CiAgICBpZiAoc2FmZSAmJiB0YXJnZXRba2V5XSkgdGFyZ2V0W2tleV0gPSBzcmNba2V5XTsKICAgIGVsc2UgaGlkZSh0YXJnZXQsIGtleSwgc3JjW2tleV0pOwogIH0gcmV0dXJuIHRhcmdldDsKfTsKCgovKioqLyB9KSwKLyogMTEwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBDb25zdHJ1Y3RvciwgbmFtZSwgZm9yYmlkZGVuRmllbGQpIHsKICBpZiAoIShpdCBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSB8fCAoZm9yYmlkZGVuRmllbGQgIT09IHVuZGVmaW5lZCAmJiBmb3JiaWRkZW5GaWVsZCBpbiBpdCkpIHsKICAgIHRocm93IFR5cGVFcnJvcihuYW1lICsgJzogaW5jb3JyZWN0IGludm9jYXRpb24hJyk7CiAgfSByZXR1cm4gaXQ7Cn07CgoKLyoqKi8gfSksCi8qIDExMSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBjYWxsIHNvbWV0aGluZyBvbiBpdGVyYXRvciBzdGVwIHdpdGggc2FmZSBjbG9zaW5nIG9uIGVycm9yCnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpOwptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRvciwgZm4sIHZhbHVlLCBlbnRyaWVzKSB7CiAgdHJ5IHsKICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7CiAgLy8gNy40LjYgSXRlcmF0b3JDbG9zZShpdGVyYXRvciwgY29tcGxldGlvbikKICB9IGNhdGNoIChlKSB7CiAgICB2YXIgcmV0ID0gaXRlcmF0b3JbJ3JldHVybiddOwogICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSBhbk9iamVjdChyZXQuY2FsbChpdGVyYXRvcikpOwogICAgdGhyb3cgZTsKICB9Cn07CgoKLyoqKi8gfSksCi8qIDExMiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yCnZhciBJdGVyYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTsKdmFyIElURVJBVE9SID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KSgnaXRlcmF0b3InKTsKdmFyIEFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7Cgptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkgewogIHJldHVybiBpdCAhPT0gdW5kZWZpbmVkICYmIChJdGVyYXRvcnMuQXJyYXkgPT09IGl0IHx8IEFycmF5UHJvdG9bSVRFUkFUT1JdID09PSBpdCk7Cn07CgoKLyoqKi8gfSksCi8qIDExMyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Cgp2YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7CnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKdmFyIG1ldGEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQwKTsKdmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSk7CnZhciBoaWRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7CnZhciByZWRlZmluZUFsbCA9IF9fd2VicGFja19yZXF1aXJlX18oMTA5KTsKdmFyIGZvck9mID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MSk7CnZhciBhbkluc3RhbmNlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTApOwp2YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpOwp2YXIgc2V0VG9TdHJpbmdUYWcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5KTsKdmFyIGRQID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KS5mOwp2YXIgZWFjaCA9IF9fd2VicGFja19yZXF1aXJlX18oMjI5KSgwKTsKdmFyIERFU0NSSVBUT1JTID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE5BTUUsIHdyYXBwZXIsIG1ldGhvZHMsIGNvbW1vbiwgSVNfTUFQLCBJU19XRUFLKSB7CiAgdmFyIEJhc2UgPSBnbG9iYWxbTkFNRV07CiAgdmFyIEMgPSBCYXNlOwogIHZhciBBRERFUiA9IElTX01BUCA/ICdzZXQnIDogJ2FkZCc7CiAgdmFyIHByb3RvID0gQyAmJiBDLnByb3RvdHlwZTsKICB2YXIgTyA9IHt9OwogIGlmICghREVTQ1JJUFRPUlMgfHwgdHlwZW9mIEMgIT0gJ2Z1bmN0aW9uJyB8fCAhKElTX1dFQUsgfHwgcHJvdG8uZm9yRWFjaCAmJiAhZmFpbHMoZnVuY3Rpb24gKCkgewogICAgbmV3IEMoKS5lbnRyaWVzKCkubmV4dCgpOwogIH0pKSkgewogICAgLy8gY3JlYXRlIGNvbGxlY3Rpb24gY29uc3RydWN0b3IKICAgIEMgPSBjb21tb24uZ2V0Q29uc3RydWN0b3Iod3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUik7CiAgICByZWRlZmluZUFsbChDLnByb3RvdHlwZSwgbWV0aG9kcyk7CiAgICBtZXRhLk5FRUQgPSB0cnVlOwogIH0gZWxzZSB7CiAgICBDID0gd3JhcHBlcihmdW5jdGlvbiAodGFyZ2V0LCBpdGVyYWJsZSkgewogICAgICBhbkluc3RhbmNlKHRhcmdldCwgQywgTkFNRSwgJ19jJyk7CiAgICAgIHRhcmdldC5fYyA9IG5ldyBCYXNlKCk7CiAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRhcmdldFtBRERFUl0sIHRhcmdldCk7CiAgICB9KTsKICAgIGVhY2goJ2FkZCxjbGVhcixkZWxldGUsZm9yRWFjaCxnZXQsaGFzLHNldCxrZXlzLHZhbHVlcyxlbnRyaWVzLHRvSlNPTicuc3BsaXQoJywnKSwgZnVuY3Rpb24gKEtFWSkgewogICAgICB2YXIgSVNfQURERVIgPSBLRVkgPT0gJ2FkZCcgfHwgS0VZID09ICdzZXQnOwogICAgICBpZiAoS0VZIGluIHByb3RvICYmICEoSVNfV0VBSyAmJiBLRVkgPT0gJ2NsZWFyJykpIGhpZGUoQy5wcm90b3R5cGUsIEtFWSwgZnVuY3Rpb24gKGEsIGIpIHsKICAgICAgICBhbkluc3RhbmNlKHRoaXMsIEMsIEtFWSk7CiAgICAgICAgaWYgKCFJU19BRERFUiAmJiBJU19XRUFLICYmICFpc09iamVjdChhKSkgcmV0dXJuIEtFWSA9PSAnZ2V0JyA/IHVuZGVmaW5lZCA6IGZhbHNlOwogICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9jW0tFWV0oYSA9PT0gMCA/IDAgOiBhLCBiKTsKICAgICAgICByZXR1cm4gSVNfQURERVIgPyB0aGlzIDogcmVzdWx0OwogICAgICB9KTsKICAgIH0pOwogICAgSVNfV0VBSyB8fCBkUChDLnByb3RvdHlwZSwgJ3NpemUnLCB7CiAgICAgIGdldDogZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiB0aGlzLl9jLnNpemU7CiAgICAgIH0KICAgIH0pOwogIH0KCiAgc2V0VG9TdHJpbmdUYWcoQywgTkFNRSk7CgogIE9bTkFNRV0gPSBDOwogICRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GLCBPKTsKCiAgaWYgKCFJU19XRUFLKSBjb21tb24uc2V0U3Ryb25nKEMsIE5BTUUsIElTX01BUCk7CgogIHJldHVybiBDOwp9OwoKCi8qKiovIH0pLAovKiAxMTQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTgp2YXIgY2xhc3NvZiA9IF9fd2VicGFja19yZXF1aXJlX18oNjgpOwp2YXIgZnJvbSA9IF9fd2VicGFja19yZXF1aXJlX18oMjMzKTsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTkFNRSkgewogIHJldHVybiBmdW5jdGlvbiB0b0pTT04oKSB7CiAgICBpZiAoY2xhc3NvZih0aGlzKSAhPSBOQU1FKSB0aHJvdyBUeXBlRXJyb3IoTkFNRSArICIjdG9KU09OIGlzbid0IGdlbmVyaWMiKTsKICAgIHJldHVybiBmcm9tKHRoaXMpOwogIH07Cn07CgoKLyoqKi8gfSksCi8qIDExNSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgovLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vCnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENPTExFQ1RJT04pIHsKICAkZXhwb3J0KCRleHBvcnQuUywgQ09MTEVDVElPTiwgeyBvZjogZnVuY3Rpb24gb2YoKSB7CiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsKICAgIHZhciBBID0gbmV3IEFycmF5KGxlbmd0aCk7CiAgICB3aGlsZSAobGVuZ3RoLS0pIEFbbGVuZ3RoXSA9IGFyZ3VtZW50c1tsZW5ndGhdOwogICAgcmV0dXJuIG5ldyB0aGlzKEEpOwogIH0gfSk7Cn07CgoKLyoqKi8gfSksCi8qIDExNiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgovLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vCnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKdmFyIGFGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oOTcpOwp2YXIgY3R4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7CnZhciBmb3JPZiA9IF9fd2VicGFja19yZXF1aXJlX18oNDEpOwoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ09MTEVDVElPTikgewogICRleHBvcnQoJGV4cG9ydC5TLCBDT0xMRUNUSU9OLCB7IGZyb206IGZ1bmN0aW9uIGZyb20oc291cmNlIC8qICwgbWFwRm4sIHRoaXNBcmcgKi8pIHsKICAgIHZhciBtYXBGbiA9IGFyZ3VtZW50c1sxXTsKICAgIHZhciBtYXBwaW5nLCBBLCBuLCBjYjsKICAgIGFGdW5jdGlvbih0aGlzKTsKICAgIG1hcHBpbmcgPSBtYXBGbiAhPT0gdW5kZWZpbmVkOwogICAgaWYgKG1hcHBpbmcpIGFGdW5jdGlvbihtYXBGbik7CiAgICBpZiAoc291cmNlID09IHVuZGVmaW5lZCkgcmV0dXJuIG5ldyB0aGlzKCk7CiAgICBBID0gW107CiAgICBpZiAobWFwcGluZykgewogICAgICBuID0gMDsKICAgICAgY2IgPSBjdHgobWFwRm4sIGFyZ3VtZW50c1syXSwgMik7CiAgICAgIGZvck9mKHNvdXJjZSwgZmFsc2UsIGZ1bmN0aW9uIChuZXh0SXRlbSkgewogICAgICAgIEEucHVzaChjYihuZXh0SXRlbSwgbisrKSk7CiAgICAgIH0pOwogICAgfSBlbHNlIHsKICAgICAgZm9yT2Yoc291cmNlLCBmYWxzZSwgQS5wdXNoLCBBKTsKICAgIH0KICAgIHJldHVybiBuZXcgdGhpcyhBKTsKICB9IH0pOwp9OwoKCi8qKiovIH0pLAovKiAxMTcgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogQ29weXJpZ2h0IDIwMTMgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KCiAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoqLwoKdmFyIEJyb3RsaUlucHV0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTgpLkJyb3RsaUlucHV0Owp2YXIgQnJvdGxpT3V0cHV0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTgpLkJyb3RsaU91dHB1dDsKdmFyIEJyb3RsaUJpdFJlYWRlciA9IF9fd2VicGFja19yZXF1aXJlX18oMjg1KTsKdmFyIEJyb3RsaURpY3Rpb25hcnkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExOSk7CnZhciBIdWZmbWFuQ29kZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTIwKS5IdWZmbWFuQ29kZTsKdmFyIEJyb3RsaUJ1aWxkSHVmZm1hblRhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMjApLkJyb3RsaUJ1aWxkSHVmZm1hblRhYmxlOwp2YXIgQ29udGV4dCA9IF9fd2VicGFja19yZXF1aXJlX18oMjg5KTsKdmFyIFByZWZpeCA9IF9fd2VicGFja19yZXF1aXJlX18oMjkwKTsKdmFyIFRyYW5zZm9ybSA9IF9fd2VicGFja19yZXF1aXJlX18oMjkxKTsKCnZhciBrRGVmYXVsdENvZGVMZW5ndGggPSA4Owp2YXIga0NvZGVMZW5ndGhSZXBlYXRDb2RlID0gMTY7CnZhciBrTnVtTGl0ZXJhbENvZGVzID0gMjU2Owp2YXIga051bUluc2VydEFuZENvcHlDb2RlcyA9IDcwNDsKdmFyIGtOdW1CbG9ja0xlbmd0aENvZGVzID0gMjY7CnZhciBrTGl0ZXJhbENvbnRleHRCaXRzID0gNjsKdmFyIGtEaXN0YW5jZUNvbnRleHRCaXRzID0gMjsKCnZhciBIVUZGTUFOX1RBQkxFX0JJVFMgPSA4Owp2YXIgSFVGRk1BTl9UQUJMRV9NQVNLID0gMHhmZjsKLyogTWF4aW11bSBwb3NzaWJsZSBIdWZmbWFuIHRhYmxlIHNpemUgZm9yIGFuIGFscGhhYmV0IHNpemUgb2YgNzA0LCBtYXggY29kZQogKiBsZW5ndGggMTUgYW5kIHJvb3QgdGFibGUgYml0cyA4LiAqLwp2YXIgSFVGRk1BTl9NQVhfVEFCTEVfU0laRSA9IDEwODA7Cgp2YXIgQ09ERV9MRU5HVEhfQ09ERVMgPSAxODsKdmFyIGtDb2RlTGVuZ3RoQ29kZU9yZGVyID0gbmV3IFVpbnQ4QXJyYXkoWwogIDEsIDIsIDMsIDQsIDAsIDUsIDE3LCA2LCAxNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwKXSk7Cgp2YXIgTlVNX0RJU1RBTkNFX1NIT1JUX0NPREVTID0gMTY7CnZhciBrRGlzdGFuY2VTaG9ydENvZGVJbmRleE9mZnNldCA9IG5ldyBVaW50OEFycmF5KFsKICAzLCAyLCAxLCAwLCAzLCAzLCAzLCAzLCAzLCAzLCAyLCAyLCAyLCAyLCAyLCAyCl0pOwoKdmFyIGtEaXN0YW5jZVNob3J0Q29kZVZhbHVlT2Zmc2V0ID0gbmV3IEludDhBcnJheShbCiAgMCwgMCwgMCwgMCwgLTEsIDEsIC0yLCAyLCAtMywgMywgLTEsIDEsIC0yLCAyLCAtMywgMwpdKTsKCnZhciBrTWF4SHVmZm1hblRhYmxlU2l6ZSA9IG5ldyBVaW50MTZBcnJheShbCiAgMjU2LCA0MDIsIDQzNiwgNDY4LCA1MDAsIDUzNCwgNTY2LCA1OTgsIDYzMCwgNjYyLCA2OTQsIDcyNiwgNzU4LCA3OTAsIDgyMiwKICA4NTQsIDg4NiwgOTIwLCA5NTIsIDk4NCwgMTAxNiwgMTA0OCwgMTA4MApdKTsKCmZ1bmN0aW9uIERlY29kZVdpbmRvd0JpdHMoYnIpIHsKICB2YXIgbjsKICBpZiAoYnIucmVhZEJpdHMoMSkgPT09IDApIHsKICAgIHJldHVybiAxNjsKICB9CiAgCiAgbiA9IGJyLnJlYWRCaXRzKDMpOwogIGlmIChuID4gMCkgewogICAgcmV0dXJuIDE3ICsgbjsKICB9CiAgCiAgbiA9IGJyLnJlYWRCaXRzKDMpOwogIGlmIChuID4gMCkgewogICAgcmV0dXJuIDggKyBuOwogIH0KICAKICByZXR1cm4gMTc7Cn0KCi8qIERlY29kZXMgYSBudW1iZXIgaW4gdGhlIHJhbmdlIFswLi4yNTVdLCBieSByZWFkaW5nIDEgLSAxMSBiaXRzLiAqLwpmdW5jdGlvbiBEZWNvZGVWYXJMZW5VaW50OChicikgewogIGlmIChici5yZWFkQml0cygxKSkgewogICAgdmFyIG5iaXRzID0gYnIucmVhZEJpdHMoMyk7CiAgICBpZiAobmJpdHMgPT09IDApIHsKICAgICAgcmV0dXJuIDE7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gYnIucmVhZEJpdHMobmJpdHMpICsgKDEgPDwgbmJpdHMpOwogICAgfQogIH0KICByZXR1cm4gMDsKfQoKZnVuY3Rpb24gTWV0YUJsb2NrTGVuZ3RoKCkgewogIHRoaXMubWV0YV9ibG9ja19sZW5ndGggPSAwOwogIHRoaXMuaW5wdXRfZW5kID0gMDsKICB0aGlzLmlzX3VuY29tcHJlc3NlZCA9IDA7CiAgdGhpcy5pc19tZXRhZGF0YSA9IGZhbHNlOwp9CgpmdW5jdGlvbiBEZWNvZGVNZXRhQmxvY2tMZW5ndGgoYnIpIHsKICB2YXIgb3V0ID0gbmV3IE1ldGFCbG9ja0xlbmd0aDsgIAogIHZhciBzaXplX25pYmJsZXM7CiAgdmFyIHNpemVfYnl0ZXM7CiAgdmFyIGk7CiAgCiAgb3V0LmlucHV0X2VuZCA9IGJyLnJlYWRCaXRzKDEpOwogIGlmIChvdXQuaW5wdXRfZW5kICYmIGJyLnJlYWRCaXRzKDEpKSB7CiAgICByZXR1cm4gb3V0OwogIH0KICAKICBzaXplX25pYmJsZXMgPSBici5yZWFkQml0cygyKSArIDQ7CiAgaWYgKHNpemVfbmliYmxlcyA9PT0gNykgewogICAgb3V0LmlzX21ldGFkYXRhID0gdHJ1ZTsKICAgIAogICAgaWYgKGJyLnJlYWRCaXRzKDEpICE9PSAwKQogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVzZXJ2ZWQgYml0Jyk7CiAgICAKICAgIHNpemVfYnl0ZXMgPSBici5yZWFkQml0cygyKTsKICAgIGlmIChzaXplX2J5dGVzID09PSAwKQogICAgICByZXR1cm4gb3V0OwogICAgCiAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZV9ieXRlczsgaSsrKSB7CiAgICAgIHZhciBuZXh0X2J5dGUgPSBici5yZWFkQml0cyg4KTsKICAgICAgaWYgKGkgKyAxID09PSBzaXplX2J5dGVzICYmIHNpemVfYnl0ZXMgPiAxICYmIG5leHRfYnl0ZSA9PT0gMCkKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc2l6ZSBieXRlJyk7CiAgICAgIAogICAgICBvdXQubWV0YV9ibG9ja19sZW5ndGggfD0gbmV4dF9ieXRlIDw8IChpICogOCk7CiAgICB9CiAgfSBlbHNlIHsKICAgIGZvciAoaSA9IDA7IGkgPCBzaXplX25pYmJsZXM7ICsraSkgewogICAgICB2YXIgbmV4dF9uaWJibGUgPSBici5yZWFkQml0cyg0KTsKICAgICAgaWYgKGkgKyAxID09PSBzaXplX25pYmJsZXMgJiYgc2l6ZV9uaWJibGVzID4gNCAmJiBuZXh0X25pYmJsZSA9PT0gMCkKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc2l6ZSBuaWJibGUnKTsKICAgICAgCiAgICAgIG91dC5tZXRhX2Jsb2NrX2xlbmd0aCB8PSBuZXh0X25pYmJsZSA8PCAoaSAqIDQpOwogICAgfQogIH0KICAKICArK291dC5tZXRhX2Jsb2NrX2xlbmd0aDsKICAKICBpZiAoIW91dC5pbnB1dF9lbmQgJiYgIW91dC5pc19tZXRhZGF0YSkgewogICAgb3V0LmlzX3VuY29tcHJlc3NlZCA9IGJyLnJlYWRCaXRzKDEpOwogIH0KICAKICByZXR1cm4gb3V0Owp9CgovKiBEZWNvZGVzIHRoZSBuZXh0IEh1ZmZtYW4gY29kZSBmcm9tIGJpdC1zdHJlYW0uICovCmZ1bmN0aW9uIFJlYWRTeW1ib2wodGFibGUsIGluZGV4LCBicikgewogIHZhciBzdGFydF9pbmRleCA9IGluZGV4OwogIAogIHZhciBuYml0czsKICBici5maWxsQml0V2luZG93KCk7CiAgaW5kZXggKz0gKGJyLnZhbF8gPj4+IGJyLmJpdF9wb3NfKSAmIEhVRkZNQU5fVEFCTEVfTUFTSzsKICBuYml0cyA9IHRhYmxlW2luZGV4XS5iaXRzIC0gSFVGRk1BTl9UQUJMRV9CSVRTOwogIGlmIChuYml0cyA+IDApIHsKICAgIGJyLmJpdF9wb3NfICs9IEhVRkZNQU5fVEFCTEVfQklUUzsKICAgIGluZGV4ICs9IHRhYmxlW2luZGV4XS52YWx1ZTsKICAgIGluZGV4ICs9IChici52YWxfID4+PiBici5iaXRfcG9zXykgJiAoKDEgPDwgbmJpdHMpIC0gMSk7CiAgfQogIGJyLmJpdF9wb3NfICs9IHRhYmxlW2luZGV4XS5iaXRzOwogIHJldHVybiB0YWJsZVtpbmRleF0udmFsdWU7Cn0KCmZ1bmN0aW9uIFJlYWRIdWZmbWFuQ29kZUxlbmd0aHMoY29kZV9sZW5ndGhfY29kZV9sZW5ndGhzLCBudW1fc3ltYm9scywgY29kZV9sZW5ndGhzLCBicikgewogIHZhciBzeW1ib2wgPSAwOwogIHZhciBwcmV2X2NvZGVfbGVuID0ga0RlZmF1bHRDb2RlTGVuZ3RoOwogIHZhciByZXBlYXQgPSAwOwogIHZhciByZXBlYXRfY29kZV9sZW4gPSAwOwogIHZhciBzcGFjZSA9IDMyNzY4OwogIAogIHZhciB0YWJsZSA9IFtdOwogIGZvciAodmFyIGkgPSAwOyBpIDwgMzI7IGkrKykKICAgIHRhYmxlLnB1c2gobmV3IEh1ZmZtYW5Db2RlKDAsIDApKTsKICAKICBCcm90bGlCdWlsZEh1ZmZtYW5UYWJsZSh0YWJsZSwgMCwgNSwgY29kZV9sZW5ndGhfY29kZV9sZW5ndGhzLCBDT0RFX0xFTkdUSF9DT0RFUyk7CgogIHdoaWxlIChzeW1ib2wgPCBudW1fc3ltYm9scyAmJiBzcGFjZSA+IDApIHsKICAgIHZhciBwID0gMDsKICAgIHZhciBjb2RlX2xlbjsKICAgIAogICAgYnIucmVhZE1vcmVJbnB1dCgpOwogICAgYnIuZmlsbEJpdFdpbmRvdygpOwogICAgcCArPSAoYnIudmFsXyA+Pj4gYnIuYml0X3Bvc18pICYgMzE7CiAgICBici5iaXRfcG9zXyArPSB0YWJsZVtwXS5iaXRzOwogICAgY29kZV9sZW4gPSB0YWJsZVtwXS52YWx1ZSAmIDB4ZmY7CiAgICBpZiAoY29kZV9sZW4gPCBrQ29kZUxlbmd0aFJlcGVhdENvZGUpIHsKICAgICAgcmVwZWF0ID0gMDsKICAgICAgY29kZV9sZW5ndGhzW3N5bWJvbCsrXSA9IGNvZGVfbGVuOwogICAgICBpZiAoY29kZV9sZW4gIT09IDApIHsKICAgICAgICBwcmV2X2NvZGVfbGVuID0gY29kZV9sZW47CiAgICAgICAgc3BhY2UgLT0gMzI3NjggPj4gY29kZV9sZW47CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIHZhciBleHRyYV9iaXRzID0gY29kZV9sZW4gLSAxNDsKICAgICAgdmFyIG9sZF9yZXBlYXQ7CiAgICAgIHZhciByZXBlYXRfZGVsdGE7CiAgICAgIHZhciBuZXdfbGVuID0gMDsKICAgICAgaWYgKGNvZGVfbGVuID09PSBrQ29kZUxlbmd0aFJlcGVhdENvZGUpIHsKICAgICAgICBuZXdfbGVuID0gcHJldl9jb2RlX2xlbjsKICAgICAgfQogICAgICBpZiAocmVwZWF0X2NvZGVfbGVuICE9PSBuZXdfbGVuKSB7CiAgICAgICAgcmVwZWF0ID0gMDsKICAgICAgICByZXBlYXRfY29kZV9sZW4gPSBuZXdfbGVuOwogICAgICB9CiAgICAgIG9sZF9yZXBlYXQgPSByZXBlYXQ7CiAgICAgIGlmIChyZXBlYXQgPiAwKSB7CiAgICAgICAgcmVwZWF0IC09IDI7CiAgICAgICAgcmVwZWF0IDw8PSBleHRyYV9iaXRzOwogICAgICB9CiAgICAgIHJlcGVhdCArPSBici5yZWFkQml0cyhleHRyYV9iaXRzKSArIDM7CiAgICAgIHJlcGVhdF9kZWx0YSA9IHJlcGVhdCAtIG9sZF9yZXBlYXQ7CiAgICAgIGlmIChzeW1ib2wgKyByZXBlYXRfZGVsdGEgPiBudW1fc3ltYm9scykgewogICAgICAgIHRocm93IG5ldyBFcnJvcignW1JlYWRIdWZmbWFuQ29kZUxlbmd0aHNdIHN5bWJvbCArIHJlcGVhdF9kZWx0YSA+IG51bV9zeW1ib2xzJyk7CiAgICAgIH0KICAgICAgCiAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgcmVwZWF0X2RlbHRhOyB4KyspCiAgICAgICAgY29kZV9sZW5ndGhzW3N5bWJvbCArIHhdID0gcmVwZWF0X2NvZGVfbGVuOwogICAgICAKICAgICAgc3ltYm9sICs9IHJlcGVhdF9kZWx0YTsKICAgICAgCiAgICAgIGlmIChyZXBlYXRfY29kZV9sZW4gIT09IDApIHsKICAgICAgICBzcGFjZSAtPSByZXBlYXRfZGVsdGEgPDwgKDE1IC0gcmVwZWF0X2NvZGVfbGVuKTsKICAgICAgfQogICAgfQogIH0KICBpZiAoc3BhY2UgIT09IDApIHsKICAgIHRocm93IG5ldyBFcnJvcigiW1JlYWRIdWZmbWFuQ29kZUxlbmd0aHNdIHNwYWNlID0gIiArIHNwYWNlKTsKICB9CiAgCiAgZm9yICg7IHN5bWJvbCA8IG51bV9zeW1ib2xzOyBzeW1ib2wrKykKICAgIGNvZGVfbGVuZ3Roc1tzeW1ib2xdID0gMDsKfQoKZnVuY3Rpb24gUmVhZEh1ZmZtYW5Db2RlKGFscGhhYmV0X3NpemUsIHRhYmxlcywgdGFibGUsIGJyKSB7CiAgdmFyIHRhYmxlX3NpemUgPSAwOwogIHZhciBzaW1wbGVfY29kZV9vcl9za2lwOwogIHZhciBjb2RlX2xlbmd0aHMgPSBuZXcgVWludDhBcnJheShhbHBoYWJldF9zaXplKTsKICAKICBici5yZWFkTW9yZUlucHV0KCk7CiAgCiAgLyogc2ltcGxlX2NvZGVfb3Jfc2tpcCBpcyB1c2VkIGFzIGZvbGxvd3M6CiAgICAgMSBmb3Igc2ltcGxlIGNvZGU7CiAgICAgMCBmb3Igbm8gc2tpcHBpbmcsIDIgc2tpcHMgMiBjb2RlIGxlbmd0aHMsIDMgc2tpcHMgMyBjb2RlIGxlbmd0aHMgKi8KICBzaW1wbGVfY29kZV9vcl9za2lwID0gYnIucmVhZEJpdHMoMik7CiAgaWYgKHNpbXBsZV9jb2RlX29yX3NraXAgPT09IDEpIHsKICAgIC8qIFJlYWQgc3ltYm9scywgY29kZXMgJiBjb2RlIGxlbmd0aHMgZGlyZWN0bHkuICovCiAgICB2YXIgaTsKICAgIHZhciBtYXhfYml0c19jb3VudGVyID0gYWxwaGFiZXRfc2l6ZSAtIDE7CiAgICB2YXIgbWF4X2JpdHMgPSAwOwogICAgdmFyIHN5bWJvbHMgPSBuZXcgSW50MzJBcnJheSg0KTsKICAgIHZhciBudW1fc3ltYm9scyA9IGJyLnJlYWRCaXRzKDIpICsgMTsKICAgIHdoaWxlIChtYXhfYml0c19jb3VudGVyKSB7CiAgICAgIG1heF9iaXRzX2NvdW50ZXIgPj49IDE7CiAgICAgICsrbWF4X2JpdHM7CiAgICB9CgogICAgZm9yIChpID0gMDsgaSA8IG51bV9zeW1ib2xzOyArK2kpIHsKICAgICAgc3ltYm9sc1tpXSA9IGJyLnJlYWRCaXRzKG1heF9iaXRzKSAlIGFscGhhYmV0X3NpemU7CiAgICAgIGNvZGVfbGVuZ3Roc1tzeW1ib2xzW2ldXSA9IDI7CiAgICB9CiAgICBjb2RlX2xlbmd0aHNbc3ltYm9sc1swXV0gPSAxOwogICAgc3dpdGNoIChudW1fc3ltYm9scykgewogICAgICBjYXNlIDE6CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMzoKICAgICAgICBpZiAoKHN5bWJvbHNbMF0gPT09IHN5bWJvbHNbMV0pIHx8CiAgICAgICAgICAgIChzeW1ib2xzWzBdID09PSBzeW1ib2xzWzJdKSB8fAogICAgICAgICAgICAoc3ltYm9sc1sxXSA9PT0gc3ltYm9sc1syXSkpIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcignW1JlYWRIdWZmbWFuQ29kZV0gaW52YWxpZCBzeW1ib2xzJyk7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDI6CiAgICAgICAgaWYgKHN5bWJvbHNbMF0gPT09IHN5bWJvbHNbMV0pIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcignW1JlYWRIdWZmbWFuQ29kZV0gaW52YWxpZCBzeW1ib2xzJyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGNvZGVfbGVuZ3Roc1tzeW1ib2xzWzFdXSA9IDE7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgNDoKICAgICAgICBpZiAoKHN5bWJvbHNbMF0gPT09IHN5bWJvbHNbMV0pIHx8CiAgICAgICAgICAgIChzeW1ib2xzWzBdID09PSBzeW1ib2xzWzJdKSB8fAogICAgICAgICAgICAoc3ltYm9sc1swXSA9PT0gc3ltYm9sc1szXSkgfHwKICAgICAgICAgICAgKHN5bWJvbHNbMV0gPT09IHN5bWJvbHNbMl0pIHx8CiAgICAgICAgICAgIChzeW1ib2xzWzFdID09PSBzeW1ib2xzWzNdKSB8fAogICAgICAgICAgICAoc3ltYm9sc1syXSA9PT0gc3ltYm9sc1szXSkpIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcignW1JlYWRIdWZmbWFuQ29kZV0gaW52YWxpZCBzeW1ib2xzJyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChici5yZWFkQml0cygxKSkgewogICAgICAgICAgY29kZV9sZW5ndGhzW3N5bWJvbHNbMl1dID0gMzsKICAgICAgICAgIGNvZGVfbGVuZ3Roc1tzeW1ib2xzWzNdXSA9IDM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGNvZGVfbGVuZ3Roc1tzeW1ib2xzWzBdXSA9IDI7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwogICAgfQogIH0gZWxzZSB7ICAvKiBEZWNvZGUgSHVmZm1hbi1jb2RlZCBjb2RlIGxlbmd0aHMuICovCiAgICB2YXIgaTsKICAgIHZhciBjb2RlX2xlbmd0aF9jb2RlX2xlbmd0aHMgPSBuZXcgVWludDhBcnJheShDT0RFX0xFTkdUSF9DT0RFUyk7CiAgICB2YXIgc3BhY2UgPSAzMjsKICAgIHZhciBudW1fY29kZXMgPSAwOwogICAgLyogU3RhdGljIEh1ZmZtYW4gY29kZSBmb3IgdGhlIGNvZGUgbGVuZ3RoIGNvZGUgbGVuZ3RocyAqLwogICAgdmFyIGh1ZmYgPSBbCiAgICAgIG5ldyBIdWZmbWFuQ29kZSgyLCAwKSwgbmV3IEh1ZmZtYW5Db2RlKDIsIDQpLCBuZXcgSHVmZm1hbkNvZGUoMiwgMyksIG5ldyBIdWZmbWFuQ29kZSgzLCAyKSwgCiAgICAgIG5ldyBIdWZmbWFuQ29kZSgyLCAwKSwgbmV3IEh1ZmZtYW5Db2RlKDIsIDQpLCBuZXcgSHVmZm1hbkNvZGUoMiwgMyksIG5ldyBIdWZmbWFuQ29kZSg0LCAxKSwKICAgICAgbmV3IEh1ZmZtYW5Db2RlKDIsIDApLCBuZXcgSHVmZm1hbkNvZGUoMiwgNCksIG5ldyBIdWZmbWFuQ29kZSgyLCAzKSwgbmV3IEh1ZmZtYW5Db2RlKDMsIDIpLCAKICAgICAgbmV3IEh1ZmZtYW5Db2RlKDIsIDApLCBuZXcgSHVmZm1hbkNvZGUoMiwgNCksIG5ldyBIdWZmbWFuQ29kZSgyLCAzKSwgbmV3IEh1ZmZtYW5Db2RlKDQsIDUpCiAgICBdOwogICAgZm9yIChpID0gc2ltcGxlX2NvZGVfb3Jfc2tpcDsgaSA8IENPREVfTEVOR1RIX0NPREVTICYmIHNwYWNlID4gMDsgKytpKSB7CiAgICAgIHZhciBjb2RlX2xlbl9pZHggPSBrQ29kZUxlbmd0aENvZGVPcmRlcltpXTsKICAgICAgdmFyIHAgPSAwOwogICAgICB2YXIgdjsKICAgICAgYnIuZmlsbEJpdFdpbmRvdygpOwogICAgICBwICs9IChici52YWxfID4+PiBici5iaXRfcG9zXykgJiAxNTsKICAgICAgYnIuYml0X3Bvc18gKz0gaHVmZltwXS5iaXRzOwogICAgICB2ID0gaHVmZltwXS52YWx1ZTsKICAgICAgY29kZV9sZW5ndGhfY29kZV9sZW5ndGhzW2NvZGVfbGVuX2lkeF0gPSB2OwogICAgICBpZiAodiAhPT0gMCkgewogICAgICAgIHNwYWNlIC09ICgzMiA+PiB2KTsKICAgICAgICArK251bV9jb2RlczsKICAgICAgfQogICAgfQogICAgCiAgICBpZiAoIShudW1fY29kZXMgPT09IDEgfHwgc3BhY2UgPT09IDApKQogICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tSZWFkSHVmZm1hbkNvZGVdIGludmFsaWQgbnVtX2NvZGVzIG9yIHNwYWNlJyk7CiAgICAKICAgIFJlYWRIdWZmbWFuQ29kZUxlbmd0aHMoY29kZV9sZW5ndGhfY29kZV9sZW5ndGhzLCBhbHBoYWJldF9zaXplLCBjb2RlX2xlbmd0aHMsIGJyKTsKICB9CiAgCiAgdGFibGVfc2l6ZSA9IEJyb3RsaUJ1aWxkSHVmZm1hblRhYmxlKHRhYmxlcywgdGFibGUsIEhVRkZNQU5fVEFCTEVfQklUUywgY29kZV9sZW5ndGhzLCBhbHBoYWJldF9zaXplKTsKICAKICBpZiAodGFibGVfc2l6ZSA9PT0gMCkgewogICAgdGhyb3cgbmV3IEVycm9yKCJbUmVhZEh1ZmZtYW5Db2RlXSBCdWlsZEh1ZmZtYW5UYWJsZSBmYWlsZWQ6ICIpOwogIH0KICAKICByZXR1cm4gdGFibGVfc2l6ZTsKfQoKZnVuY3Rpb24gUmVhZEJsb2NrTGVuZ3RoKHRhYmxlLCBpbmRleCwgYnIpIHsKICB2YXIgY29kZTsKICB2YXIgbmJpdHM7CiAgY29kZSA9IFJlYWRTeW1ib2wodGFibGUsIGluZGV4LCBicik7CiAgbmJpdHMgPSBQcmVmaXgua0Jsb2NrTGVuZ3RoUHJlZml4Q29kZVtjb2RlXS5uYml0czsKICByZXR1cm4gUHJlZml4LmtCbG9ja0xlbmd0aFByZWZpeENvZGVbY29kZV0ub2Zmc2V0ICsgYnIucmVhZEJpdHMobmJpdHMpOwp9CgpmdW5jdGlvbiBUcmFuc2xhdGVTaG9ydENvZGVzKGNvZGUsIHJpbmdidWZmZXIsIGluZGV4KSB7CiAgdmFyIHZhbDsKICBpZiAoY29kZSA8IE5VTV9ESVNUQU5DRV9TSE9SVF9DT0RFUykgewogICAgaW5kZXggKz0ga0Rpc3RhbmNlU2hvcnRDb2RlSW5kZXhPZmZzZXRbY29kZV07CiAgICBpbmRleCAmPSAzOwogICAgdmFsID0gcmluZ2J1ZmZlcltpbmRleF0gKyBrRGlzdGFuY2VTaG9ydENvZGVWYWx1ZU9mZnNldFtjb2RlXTsKICB9IGVsc2UgewogICAgdmFsID0gY29kZSAtIE5VTV9ESVNUQU5DRV9TSE9SVF9DT0RFUyArIDE7CiAgfQogIHJldHVybiB2YWw7Cn0KCmZ1bmN0aW9uIE1vdmVUb0Zyb250KHYsIGluZGV4KSB7CiAgdmFyIHZhbHVlID0gdltpbmRleF07CiAgdmFyIGkgPSBpbmRleDsKICBmb3IgKDsgaTsgLS1pKSB2W2ldID0gdltpIC0gMV07CiAgdlswXSA9IHZhbHVlOwp9CgpmdW5jdGlvbiBJbnZlcnNlTW92ZVRvRnJvbnRUcmFuc2Zvcm0odiwgdl9sZW4pIHsKICB2YXIgbXRmID0gbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICB2YXIgaTsKICBmb3IgKGkgPSAwOyBpIDwgMjU2OyArK2kpIHsKICAgIG10ZltpXSA9IGk7CiAgfQogIGZvciAoaSA9IDA7IGkgPCB2X2xlbjsgKytpKSB7CiAgICB2YXIgaW5kZXggPSB2W2ldOwogICAgdltpXSA9IG10ZltpbmRleF07CiAgICBpZiAoaW5kZXgpIE1vdmVUb0Zyb250KG10ZiwgaW5kZXgpOwogIH0KfQoKLyogQ29udGFpbnMgYSBjb2xsZWN0aW9uIG9mIGh1ZmZtYW4gdHJlZXMgd2l0aCB0aGUgc2FtZSBhbHBoYWJldCBzaXplLiAqLwpmdW5jdGlvbiBIdWZmbWFuVHJlZUdyb3VwKGFscGhhYmV0X3NpemUsIG51bV9odHJlZXMpIHsKICB0aGlzLmFscGhhYmV0X3NpemUgPSBhbHBoYWJldF9zaXplOwogIHRoaXMubnVtX2h0cmVlcyA9IG51bV9odHJlZXM7CiAgdGhpcy5jb2RlcyA9IG5ldyBBcnJheShudW1faHRyZWVzICsgbnVtX2h0cmVlcyAqIGtNYXhIdWZmbWFuVGFibGVTaXplWyhhbHBoYWJldF9zaXplICsgMzEpID4+PiA1XSk7ICAKICB0aGlzLmh0cmVlcyA9IG5ldyBVaW50MzJBcnJheShudW1faHRyZWVzKTsKfQoKSHVmZm1hblRyZWVHcm91cC5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24oYnIpIHsKICB2YXIgaTsKICB2YXIgdGFibGVfc2l6ZTsKICB2YXIgbmV4dCA9IDA7CiAgZm9yIChpID0gMDsgaSA8IHRoaXMubnVtX2h0cmVlczsgKytpKSB7CiAgICB0aGlzLmh0cmVlc1tpXSA9IG5leHQ7CiAgICB0YWJsZV9zaXplID0gUmVhZEh1ZmZtYW5Db2RlKHRoaXMuYWxwaGFiZXRfc2l6ZSwgdGhpcy5jb2RlcywgbmV4dCwgYnIpOwogICAgbmV4dCArPSB0YWJsZV9zaXplOwogIH0KfTsKCmZ1bmN0aW9uIERlY29kZUNvbnRleHRNYXAoY29udGV4dF9tYXBfc2l6ZSwgYnIpIHsKICB2YXIgb3V0ID0geyBudW1faHRyZWVzOiBudWxsLCBjb250ZXh0X21hcDogbnVsbCB9OwogIHZhciB1c2VfcmxlX2Zvcl96ZXJvczsKICB2YXIgbWF4X3J1bl9sZW5ndGhfcHJlZml4ID0gMDsKICB2YXIgdGFibGU7CiAgdmFyIGk7CiAgCiAgYnIucmVhZE1vcmVJbnB1dCgpOwogIHZhciBudW1faHRyZWVzID0gb3V0Lm51bV9odHJlZXMgPSBEZWNvZGVWYXJMZW5VaW50OChicikgKyAxOwoKICB2YXIgY29udGV4dF9tYXAgPSBvdXQuY29udGV4dF9tYXAgPSBuZXcgVWludDhBcnJheShjb250ZXh0X21hcF9zaXplKTsKICBpZiAobnVtX2h0cmVlcyA8PSAxKSB7CiAgICByZXR1cm4gb3V0OwogIH0KCiAgdXNlX3JsZV9mb3JfemVyb3MgPSBici5yZWFkQml0cygxKTsKICBpZiAodXNlX3JsZV9mb3JfemVyb3MpIHsKICAgIG1heF9ydW5fbGVuZ3RoX3ByZWZpeCA9IGJyLnJlYWRCaXRzKDQpICsgMTsKICB9CiAgCiAgdGFibGUgPSBbXTsKICBmb3IgKGkgPSAwOyBpIDwgSFVGRk1BTl9NQVhfVEFCTEVfU0laRTsgaSsrKSB7CiAgICB0YWJsZVtpXSA9IG5ldyBIdWZmbWFuQ29kZSgwLCAwKTsKICB9CiAgCiAgUmVhZEh1ZmZtYW5Db2RlKG51bV9odHJlZXMgKyBtYXhfcnVuX2xlbmd0aF9wcmVmaXgsIHRhYmxlLCAwLCBicik7CiAgCiAgZm9yIChpID0gMDsgaSA8IGNvbnRleHRfbWFwX3NpemU7KSB7CiAgICB2YXIgY29kZTsKCiAgICBici5yZWFkTW9yZUlucHV0KCk7CiAgICBjb2RlID0gUmVhZFN5bWJvbCh0YWJsZSwgMCwgYnIpOwogICAgaWYgKGNvZGUgPT09IDApIHsKICAgICAgY29udGV4dF9tYXBbaV0gPSAwOwogICAgICArK2k7CiAgICB9IGVsc2UgaWYgKGNvZGUgPD0gbWF4X3J1bl9sZW5ndGhfcHJlZml4KSB7CiAgICAgIHZhciByZXBzID0gMSArICgxIDw8IGNvZGUpICsgYnIucmVhZEJpdHMoY29kZSk7CiAgICAgIHdoaWxlICgtLXJlcHMpIHsKICAgICAgICBpZiAoaSA+PSBjb250ZXh0X21hcF9zaXplKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIltEZWNvZGVDb250ZXh0TWFwXSBpID49IGNvbnRleHRfbWFwX3NpemUiKTsKICAgICAgICB9CiAgICAgICAgY29udGV4dF9tYXBbaV0gPSAwOwogICAgICAgICsraTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgY29udGV4dF9tYXBbaV0gPSBjb2RlIC0gbWF4X3J1bl9sZW5ndGhfcHJlZml4OwogICAgICArK2k7CiAgICB9CiAgfQogIGlmIChici5yZWFkQml0cygxKSkgewogICAgSW52ZXJzZU1vdmVUb0Zyb250VHJhbnNmb3JtKGNvbnRleHRfbWFwLCBjb250ZXh0X21hcF9zaXplKTsKICB9CiAgCiAgcmV0dXJuIG91dDsKfQoKZnVuY3Rpb24gRGVjb2RlQmxvY2tUeXBlKG1heF9ibG9ja190eXBlLCB0cmVlcywgdHJlZV90eXBlLCBibG9ja190eXBlcywgcmluZ2J1ZmZlcnMsIGluZGV4ZXMsIGJyKSB7CiAgdmFyIHJpbmdidWZmZXIgPSB0cmVlX3R5cGUgKiAyOwogIHZhciBpbmRleCA9IHRyZWVfdHlwZTsKICB2YXIgdHlwZV9jb2RlID0gUmVhZFN5bWJvbCh0cmVlcywgdHJlZV90eXBlICogSFVGRk1BTl9NQVhfVEFCTEVfU0laRSwgYnIpOwogIHZhciBibG9ja190eXBlOwogIGlmICh0eXBlX2NvZGUgPT09IDApIHsKICAgIGJsb2NrX3R5cGUgPSByaW5nYnVmZmVyc1tyaW5nYnVmZmVyICsgKGluZGV4ZXNbaW5kZXhdICYgMSldOwogIH0gZWxzZSBpZiAodHlwZV9jb2RlID09PSAxKSB7CiAgICBibG9ja190eXBlID0gcmluZ2J1ZmZlcnNbcmluZ2J1ZmZlciArICgoaW5kZXhlc1tpbmRleF0gLSAxKSAmIDEpXSArIDE7CiAgfSBlbHNlIHsKICAgIGJsb2NrX3R5cGUgPSB0eXBlX2NvZGUgLSAyOwogIH0KICBpZiAoYmxvY2tfdHlwZSA+PSBtYXhfYmxvY2tfdHlwZSkgewogICAgYmxvY2tfdHlwZSAtPSBtYXhfYmxvY2tfdHlwZTsKICB9CiAgYmxvY2tfdHlwZXNbdHJlZV90eXBlXSA9IGJsb2NrX3R5cGU7CiAgcmluZ2J1ZmZlcnNbcmluZ2J1ZmZlciArIChpbmRleGVzW2luZGV4XSAmIDEpXSA9IGJsb2NrX3R5cGU7CiAgKytpbmRleGVzW2luZGV4XTsKfQoKZnVuY3Rpb24gQ29weVVuY29tcHJlc3NlZEJsb2NrVG9PdXRwdXQob3V0cHV0LCBsZW4sIHBvcywgcmluZ2J1ZmZlciwgcmluZ2J1ZmZlcl9tYXNrLCBicikgewogIHZhciByYl9zaXplID0gcmluZ2J1ZmZlcl9tYXNrICsgMTsKICB2YXIgcmJfcG9zID0gcG9zICYgcmluZ2J1ZmZlcl9tYXNrOwogIHZhciBicl9wb3MgPSBici5wb3NfICYgQnJvdGxpQml0UmVhZGVyLklCVUZfTUFTSzsKICB2YXIgbmJ5dGVzOwoKICAvKiBGb3Igc2hvcnQgbGVuZ3RocyBjb3B5IGJ5dGUtYnktYnl0ZSAqLwogIGlmIChsZW4gPCA4IHx8IGJyLmJpdF9wb3NfICsgKGxlbiA8PCAzKSA8IGJyLmJpdF9lbmRfcG9zXykgewogICAgd2hpbGUgKGxlbi0tID4gMCkgewogICAgICBici5yZWFkTW9yZUlucHV0KCk7CiAgICAgIHJpbmdidWZmZXJbcmJfcG9zKytdID0gYnIucmVhZEJpdHMoOCk7CiAgICAgIGlmIChyYl9wb3MgPT09IHJiX3NpemUpIHsKICAgICAgICBvdXRwdXQud3JpdGUocmluZ2J1ZmZlciwgcmJfc2l6ZSk7CiAgICAgICAgcmJfcG9zID0gMDsKICAgICAgfQogICAgfQogICAgcmV0dXJuOwogIH0KCiAgaWYgKGJyLmJpdF9lbmRfcG9zXyA8IDMyKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ1tDb3B5VW5jb21wcmVzc2VkQmxvY2tUb091dHB1dF0gYnIuYml0X2VuZF9wb3NfIDwgMzInKTsKICB9CgogIC8qIENvcHkgcmVtYWluaW5nIDAtNCBieXRlcyBmcm9tIGJyLnZhbF8gdG8gcmluZ2J1ZmZlci4gKi8KICB3aGlsZSAoYnIuYml0X3Bvc18gPCAzMikgewogICAgcmluZ2J1ZmZlcltyYl9wb3NdID0gKGJyLnZhbF8gPj4+IGJyLmJpdF9wb3NfKTsKICAgIGJyLmJpdF9wb3NfICs9IDg7CiAgICArK3JiX3BvczsKICAgIC0tbGVuOwogIH0KCiAgLyogQ29weSByZW1haW5pbmcgYnl0ZXMgZnJvbSBici5idWZfIHRvIHJpbmdidWZmZXIuICovCiAgbmJ5dGVzID0gKGJyLmJpdF9lbmRfcG9zXyAtIGJyLmJpdF9wb3NfKSA+PiAzOwogIGlmIChicl9wb3MgKyBuYnl0ZXMgPiBCcm90bGlCaXRSZWFkZXIuSUJVRl9NQVNLKSB7CiAgICB2YXIgdGFpbCA9IEJyb3RsaUJpdFJlYWRlci5JQlVGX01BU0sgKyAxIC0gYnJfcG9zOwogICAgZm9yICh2YXIgeCA9IDA7IHggPCB0YWlsOyB4KyspCiAgICAgIHJpbmdidWZmZXJbcmJfcG9zICsgeF0gPSBici5idWZfW2JyX3BvcyArIHhdOwogICAgCiAgICBuYnl0ZXMgLT0gdGFpbDsKICAgIHJiX3BvcyArPSB0YWlsOwogICAgbGVuIC09IHRhaWw7CiAgICBicl9wb3MgPSAwOwogIH0KCiAgZm9yICh2YXIgeCA9IDA7IHggPCBuYnl0ZXM7IHgrKykKICAgIHJpbmdidWZmZXJbcmJfcG9zICsgeF0gPSBici5idWZfW2JyX3BvcyArIHhdOwogIAogIHJiX3BvcyArPSBuYnl0ZXM7CiAgbGVuIC09IG5ieXRlczsKCiAgLyogSWYgd2Ugd3JvdGUgcGFzdCB0aGUgbG9naWNhbCBlbmQgb2YgdGhlIHJpbmdidWZmZXIsIGNvcHkgdGhlIHRhaWwgb2YgdGhlCiAgICAgcmluZ2J1ZmZlciB0byBpdHMgYmVnaW5uaW5nIGFuZCBmbHVzaCB0aGUgcmluZ2J1ZmZlciB0byB0aGUgb3V0cHV0LiAqLwogIGlmIChyYl9wb3MgPj0gcmJfc2l6ZSkgewogICAgb3V0cHV0LndyaXRlKHJpbmdidWZmZXIsIHJiX3NpemUpOwogICAgcmJfcG9zIC09IHJiX3NpemU7ICAgIAogICAgZm9yICh2YXIgeCA9IDA7IHggPCByYl9wb3M7IHgrKykKICAgICAgcmluZ2J1ZmZlclt4XSA9IHJpbmdidWZmZXJbcmJfc2l6ZSArIHhdOwogIH0KCiAgLyogSWYgd2UgaGF2ZSBtb3JlIHRvIGNvcHkgdGhhbiB0aGUgcmVtYWluaW5nIHNpemUgb2YgdGhlIHJpbmdidWZmZXIsIHRoZW4gd2UKICAgICBmaXJzdCBmaWxsIHRoZSByaW5nYnVmZmVyIGZyb20gdGhlIGlucHV0IGFuZCB0aGVuIGZsdXNoIHRoZSByaW5nYnVmZmVyIHRvCiAgICAgdGhlIG91dHB1dCAqLwogIHdoaWxlIChyYl9wb3MgKyBsZW4gPj0gcmJfc2l6ZSkgewogICAgbmJ5dGVzID0gcmJfc2l6ZSAtIHJiX3BvczsKICAgIGlmIChici5pbnB1dF8ucmVhZChyaW5nYnVmZmVyLCByYl9wb3MsIG5ieXRlcykgPCBuYnl0ZXMpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdbQ29weVVuY29tcHJlc3NlZEJsb2NrVG9PdXRwdXRdIG5vdCBlbm91Z2ggYnl0ZXMnKTsKICAgIH0KICAgIG91dHB1dC53cml0ZShyaW5nYnVmZmVyLCByYl9zaXplKTsKICAgIGxlbiAtPSBuYnl0ZXM7CiAgICByYl9wb3MgPSAwOwogIH0KCiAgLyogQ29weSBzdHJhaWdodCBmcm9tIHRoZSBpbnB1dCBvbnRvIHRoZSByaW5nYnVmZmVyLiBUaGUgcmluZ2J1ZmZlciB3aWxsIGJlCiAgICAgZmx1c2hlZCB0byB0aGUgb3V0cHV0IGF0IGEgbGF0ZXIgdGltZS4gKi8KICBpZiAoYnIuaW5wdXRfLnJlYWQocmluZ2J1ZmZlciwgcmJfcG9zLCBsZW4pIDwgbGVuKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ1tDb3B5VW5jb21wcmVzc2VkQmxvY2tUb091dHB1dF0gbm90IGVub3VnaCBieXRlcycpOwogIH0KCiAgLyogUmVzdG9yZSB0aGUgc3RhdGUgb2YgdGhlIGJpdCByZWFkZXIuICovCiAgYnIucmVzZXQoKTsKfQoKLyogQWR2YW5jZXMgdGhlIGJpdCByZWFkZXIgcG9zaXRpb24gdG8gdGhlIG5leHQgYnl0ZSBib3VuZGFyeSBhbmQgdmVyaWZpZXMKICAgdGhhdCBhbnkgc2tpcHBlZCBiaXRzIGFyZSBzZXQgdG8gemVyby4gKi8KZnVuY3Rpb24gSnVtcFRvQnl0ZUJvdW5kYXJ5KGJyKSB7CiAgdmFyIG5ld19iaXRfcG9zID0gKGJyLmJpdF9wb3NfICsgNykgJiB+NzsKICB2YXIgcGFkX2JpdHMgPSBici5yZWFkQml0cyhuZXdfYml0X3BvcyAtIGJyLmJpdF9wb3NfKTsKICByZXR1cm4gcGFkX2JpdHMgPT0gMDsKfQoKZnVuY3Rpb24gQnJvdGxpRGVjb21wcmVzc2VkU2l6ZShidWZmZXIpIHsKICB2YXIgaW5wdXQgPSBuZXcgQnJvdGxpSW5wdXQoYnVmZmVyKTsKICB2YXIgYnIgPSBuZXcgQnJvdGxpQml0UmVhZGVyKGlucHV0KTsKICBEZWNvZGVXaW5kb3dCaXRzKGJyKTsKICB2YXIgb3V0ID0gRGVjb2RlTWV0YUJsb2NrTGVuZ3RoKGJyKTsKICByZXR1cm4gb3V0Lm1ldGFfYmxvY2tfbGVuZ3RoOwp9CgpleHBvcnRzLkJyb3RsaURlY29tcHJlc3NlZFNpemUgPSBCcm90bGlEZWNvbXByZXNzZWRTaXplOwoKZnVuY3Rpb24gQnJvdGxpRGVjb21wcmVzc0J1ZmZlcihidWZmZXIsIG91dHB1dF9zaXplKSB7CiAgdmFyIGlucHV0ID0gbmV3IEJyb3RsaUlucHV0KGJ1ZmZlcik7CiAgCiAgaWYgKG91dHB1dF9zaXplID09IG51bGwpIHsKICAgIG91dHB1dF9zaXplID0gQnJvdGxpRGVjb21wcmVzc2VkU2l6ZShidWZmZXIpOwogIH0KICAKICB2YXIgb3V0cHV0X2J1ZmZlciA9IG5ldyBVaW50OEFycmF5KG91dHB1dF9zaXplKTsKICB2YXIgb3V0cHV0ID0gbmV3IEJyb3RsaU91dHB1dChvdXRwdXRfYnVmZmVyKTsKICAKICBCcm90bGlEZWNvbXByZXNzKGlucHV0LCBvdXRwdXQpOwogIAogIGlmIChvdXRwdXQucG9zIDwgb3V0cHV0LmJ1ZmZlci5sZW5ndGgpIHsKICAgIG91dHB1dC5idWZmZXIgPSBvdXRwdXQuYnVmZmVyLnN1YmFycmF5KDAsIG91dHB1dC5wb3MpOwogIH0KICAKICByZXR1cm4gb3V0cHV0LmJ1ZmZlcjsKfQoKZXhwb3J0cy5Ccm90bGlEZWNvbXByZXNzQnVmZmVyID0gQnJvdGxpRGVjb21wcmVzc0J1ZmZlcjsKCmZ1bmN0aW9uIEJyb3RsaURlY29tcHJlc3MoaW5wdXQsIG91dHB1dCkgewogIHZhciBpOwogIHZhciBwb3MgPSAwOwogIHZhciBpbnB1dF9lbmQgPSAwOwogIHZhciB3aW5kb3dfYml0cyA9IDA7CiAgdmFyIG1heF9iYWNrd2FyZF9kaXN0YW5jZTsKICB2YXIgbWF4X2Rpc3RhbmNlID0gMDsKICB2YXIgcmluZ2J1ZmZlcl9zaXplOwogIHZhciByaW5nYnVmZmVyX21hc2s7CiAgdmFyIHJpbmdidWZmZXI7CiAgdmFyIHJpbmdidWZmZXJfZW5kOwogIC8qIFRoaXMgcmluZyBidWZmZXIgaG9sZHMgYSBmZXcgcGFzdCBjb3B5IGRpc3RhbmNlcyB0aGF0IHdpbGwgYmUgdXNlZCBieSAqLwogIC8qIHNvbWUgc3BlY2lhbCBkaXN0YW5jZSBjb2Rlcy4gKi8KICB2YXIgZGlzdF9yYiA9IFsgMTYsIDE1LCAxMSwgNCBdOwogIHZhciBkaXN0X3JiX2lkeCA9IDA7CiAgLyogVGhlIHByZXZpb3VzIDIgYnl0ZXMgdXNlZCBmb3IgY29udGV4dC4gKi8KICB2YXIgcHJldl9ieXRlMSA9IDA7CiAgdmFyIHByZXZfYnl0ZTIgPSAwOwogIHZhciBoZ3JvdXAgPSBbbmV3IEh1ZmZtYW5UcmVlR3JvdXAoMCwgMCksIG5ldyBIdWZmbWFuVHJlZUdyb3VwKDAsIDApLCBuZXcgSHVmZm1hblRyZWVHcm91cCgwLCAwKV07CiAgdmFyIGJsb2NrX3R5cGVfdHJlZXM7CiAgdmFyIGJsb2NrX2xlbl90cmVlczsKICB2YXIgYnI7CgogIC8qIFdlIG5lZWQgdGhlIHNsYWNrIHJlZ2lvbiBmb3IgdGhlIGZvbGxvd2luZyByZWFzb25zOgogICAgICAgLSBhbHdheXMgZG9pbmcgdHdvIDgtYnl0ZSBjb3BpZXMgZm9yIGZhc3QgYmFja3dhcmQgY29weWluZwogICAgICAgLSB0cmFuc2Zvcm1zCiAgICAgICAtIGZsdXNoaW5nIHRoZSBpbnB1dCByaW5nYnVmZmVyIHdoZW4gZGVjb2RpbmcgdW5jb21wcmVzc2VkIGJsb2NrcyAqLwogIHZhciBrUmluZ0J1ZmZlcldyaXRlQWhlYWRTbGFjayA9IDEyOCArIEJyb3RsaUJpdFJlYWRlci5SRUFEX1NJWkU7CgogIGJyID0gbmV3IEJyb3RsaUJpdFJlYWRlcihpbnB1dCk7CgogIC8qIERlY29kZSB3aW5kb3cgc2l6ZS4gKi8KICB3aW5kb3dfYml0cyA9IERlY29kZVdpbmRvd0JpdHMoYnIpOwogIG1heF9iYWNrd2FyZF9kaXN0YW5jZSA9ICgxIDw8IHdpbmRvd19iaXRzKSAtIDE2OwoKICByaW5nYnVmZmVyX3NpemUgPSAxIDw8IHdpbmRvd19iaXRzOwogIHJpbmdidWZmZXJfbWFzayA9IHJpbmdidWZmZXJfc2l6ZSAtIDE7CiAgcmluZ2J1ZmZlciA9IG5ldyBVaW50OEFycmF5KHJpbmdidWZmZXJfc2l6ZSArIGtSaW5nQnVmZmVyV3JpdGVBaGVhZFNsYWNrICsgQnJvdGxpRGljdGlvbmFyeS5tYXhEaWN0aW9uYXJ5V29yZExlbmd0aCk7CiAgcmluZ2J1ZmZlcl9lbmQgPSByaW5nYnVmZmVyX3NpemU7CgogIGJsb2NrX3R5cGVfdHJlZXMgPSBbXTsKICBibG9ja19sZW5fdHJlZXMgPSBbXTsKICBmb3IgKHZhciB4ID0gMDsgeCA8IDMgKiBIVUZGTUFOX01BWF9UQUJMRV9TSVpFOyB4KyspIHsKICAgIGJsb2NrX3R5cGVfdHJlZXNbeF0gPSBuZXcgSHVmZm1hbkNvZGUoMCwgMCk7CiAgICBibG9ja19sZW5fdHJlZXNbeF0gPSBuZXcgSHVmZm1hbkNvZGUoMCwgMCk7CiAgfQoKICB3aGlsZSAoIWlucHV0X2VuZCkgewogICAgdmFyIG1ldGFfYmxvY2tfcmVtYWluaW5nX2xlbiA9IDA7CiAgICB2YXIgaXNfdW5jb21wcmVzc2VkOwogICAgdmFyIGJsb2NrX2xlbmd0aCA9IFsgMSA8PCAyOCwgMSA8PCAyOCwgMSA8PCAyOCBdOwogICAgdmFyIGJsb2NrX3R5cGUgPSBbIDAgXTsKICAgIHZhciBudW1fYmxvY2tfdHlwZXMgPSBbIDEsIDEsIDEgXTsKICAgIHZhciBibG9ja190eXBlX3JiID0gWyAwLCAxLCAwLCAxLCAwLCAxIF07CiAgICB2YXIgYmxvY2tfdHlwZV9yYl9pbmRleCA9IFsgMCBdOwogICAgdmFyIGRpc3RhbmNlX3Bvc3RmaXhfYml0czsKICAgIHZhciBudW1fZGlyZWN0X2Rpc3RhbmNlX2NvZGVzOwogICAgdmFyIGRpc3RhbmNlX3Bvc3RmaXhfbWFzazsKICAgIHZhciBudW1fZGlzdGFuY2VfY29kZXM7CiAgICB2YXIgY29udGV4dF9tYXAgPSBudWxsOwogICAgdmFyIGNvbnRleHRfbW9kZXMgPSBudWxsOwogICAgdmFyIG51bV9saXRlcmFsX2h0cmVlczsKICAgIHZhciBkaXN0X2NvbnRleHRfbWFwID0gbnVsbDsKICAgIHZhciBudW1fZGlzdF9odHJlZXM7CiAgICB2YXIgY29udGV4dF9vZmZzZXQgPSAwOwogICAgdmFyIGNvbnRleHRfbWFwX3NsaWNlID0gbnVsbDsKICAgIHZhciBsaXRlcmFsX2h0cmVlX2luZGV4ID0gMDsKICAgIHZhciBkaXN0X2NvbnRleHRfb2Zmc2V0ID0gMDsKICAgIHZhciBkaXN0X2NvbnRleHRfbWFwX3NsaWNlID0gbnVsbDsKICAgIHZhciBkaXN0X2h0cmVlX2luZGV4ID0gMDsKICAgIHZhciBjb250ZXh0X2xvb2t1cF9vZmZzZXQxID0gMDsKICAgIHZhciBjb250ZXh0X2xvb2t1cF9vZmZzZXQyID0gMDsKICAgIHZhciBjb250ZXh0X21vZGU7CiAgICB2YXIgaHRyZWVfY29tbWFuZDsKCiAgICBmb3IgKGkgPSAwOyBpIDwgMzsgKytpKSB7CiAgICAgIGhncm91cFtpXS5jb2RlcyA9IG51bGw7CiAgICAgIGhncm91cFtpXS5odHJlZXMgPSBudWxsOwogICAgfQoKICAgIGJyLnJlYWRNb3JlSW5wdXQoKTsKICAgIAogICAgdmFyIF9vdXQgPSBEZWNvZGVNZXRhQmxvY2tMZW5ndGgoYnIpOwogICAgbWV0YV9ibG9ja19yZW1haW5pbmdfbGVuID0gX291dC5tZXRhX2Jsb2NrX2xlbmd0aDsKICAgIGlmIChwb3MgKyBtZXRhX2Jsb2NrX3JlbWFpbmluZ19sZW4gPiBvdXRwdXQuYnVmZmVyLmxlbmd0aCkgewogICAgICAvKiBXZSBuZWVkIHRvIGdyb3cgdGhlIG91dHB1dCBidWZmZXIgdG8gZml0IHRoZSBhZGRpdGlvbmFsIGRhdGEuICovCiAgICAgIHZhciB0bXAgPSBuZXcgVWludDhBcnJheSggcG9zICsgbWV0YV9ibG9ja19yZW1haW5pbmdfbGVuICk7CiAgICAgIHRtcC5zZXQoIG91dHB1dC5idWZmZXIgKTsKICAgICAgb3V0cHV0LmJ1ZmZlciA9IHRtcDsKICAgIH0gICAgCiAgICBpbnB1dF9lbmQgPSBfb3V0LmlucHV0X2VuZDsKICAgIGlzX3VuY29tcHJlc3NlZCA9IF9vdXQuaXNfdW5jb21wcmVzc2VkOwogICAgCiAgICBpZiAoX291dC5pc19tZXRhZGF0YSkgewogICAgICBKdW1wVG9CeXRlQm91bmRhcnkoYnIpOwogICAgICAKICAgICAgZm9yICg7IG1ldGFfYmxvY2tfcmVtYWluaW5nX2xlbiA+IDA7IC0tbWV0YV9ibG9ja19yZW1haW5pbmdfbGVuKSB7CiAgICAgICAgYnIucmVhZE1vcmVJbnB1dCgpOwogICAgICAgIC8qIFJlYWQgb25lIGJ5dGUgYW5kIGlnbm9yZSBpdC4gKi8KICAgICAgICBici5yZWFkQml0cyg4KTsKICAgICAgfQogICAgICAKICAgICAgY29udGludWU7CiAgICB9CiAgICAKICAgIGlmIChtZXRhX2Jsb2NrX3JlbWFpbmluZ19sZW4gPT09IDApIHsKICAgICAgY29udGludWU7CiAgICB9CiAgICAKICAgIGlmIChpc191bmNvbXByZXNzZWQpIHsKICAgICAgYnIuYml0X3Bvc18gPSAoYnIuYml0X3Bvc18gKyA3KSAmIH43OwogICAgICBDb3B5VW5jb21wcmVzc2VkQmxvY2tUb091dHB1dChvdXRwdXQsIG1ldGFfYmxvY2tfcmVtYWluaW5nX2xlbiwgcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaW5nYnVmZmVyLCByaW5nYnVmZmVyX21hc2ssIGJyKTsKICAgICAgcG9zICs9IG1ldGFfYmxvY2tfcmVtYWluaW5nX2xlbjsKICAgICAgY29udGludWU7CiAgICB9CiAgICAKICAgIGZvciAoaSA9IDA7IGkgPCAzOyArK2kpIHsKICAgICAgbnVtX2Jsb2NrX3R5cGVzW2ldID0gRGVjb2RlVmFyTGVuVWludDgoYnIpICsgMTsKICAgICAgaWYgKG51bV9ibG9ja190eXBlc1tpXSA+PSAyKSB7CiAgICAgICAgUmVhZEh1ZmZtYW5Db2RlKG51bV9ibG9ja190eXBlc1tpXSArIDIsIGJsb2NrX3R5cGVfdHJlZXMsIGkgKiBIVUZGTUFOX01BWF9UQUJMRV9TSVpFLCBicik7CiAgICAgICAgUmVhZEh1ZmZtYW5Db2RlKGtOdW1CbG9ja0xlbmd0aENvZGVzLCBibG9ja19sZW5fdHJlZXMsIGkgKiBIVUZGTUFOX01BWF9UQUJMRV9TSVpFLCBicik7CiAgICAgICAgYmxvY2tfbGVuZ3RoW2ldID0gUmVhZEJsb2NrTGVuZ3RoKGJsb2NrX2xlbl90cmVlcywgaSAqIEhVRkZNQU5fTUFYX1RBQkxFX1NJWkUsIGJyKTsKICAgICAgICBibG9ja190eXBlX3JiX2luZGV4W2ldID0gMTsKICAgICAgfQogICAgfQogICAgCiAgICBici5yZWFkTW9yZUlucHV0KCk7CiAgICAKICAgIGRpc3RhbmNlX3Bvc3RmaXhfYml0cyA9IGJyLnJlYWRCaXRzKDIpOwogICAgbnVtX2RpcmVjdF9kaXN0YW5jZV9jb2RlcyA9IE5VTV9ESVNUQU5DRV9TSE9SVF9DT0RFUyArIChici5yZWFkQml0cyg0KSA8PCBkaXN0YW5jZV9wb3N0Zml4X2JpdHMpOwogICAgZGlzdGFuY2VfcG9zdGZpeF9tYXNrID0gKDEgPDwgZGlzdGFuY2VfcG9zdGZpeF9iaXRzKSAtIDE7CiAgICBudW1fZGlzdGFuY2VfY29kZXMgPSAobnVtX2RpcmVjdF9kaXN0YW5jZV9jb2RlcyArICg0OCA8PCBkaXN0YW5jZV9wb3N0Zml4X2JpdHMpKTsKICAgIGNvbnRleHRfbW9kZXMgPSBuZXcgVWludDhBcnJheShudW1fYmxvY2tfdHlwZXNbMF0pOwoKICAgIGZvciAoaSA9IDA7IGkgPCBudW1fYmxvY2tfdHlwZXNbMF07ICsraSkgewogICAgICAgYnIucmVhZE1vcmVJbnB1dCgpOwogICAgICAgY29udGV4dF9tb2Rlc1tpXSA9IChici5yZWFkQml0cygyKSA8PCAxKTsKICAgIH0KICAgIAogICAgdmFyIF9vMSA9IERlY29kZUNvbnRleHRNYXAobnVtX2Jsb2NrX3R5cGVzWzBdIDw8IGtMaXRlcmFsQ29udGV4dEJpdHMsIGJyKTsKICAgIG51bV9saXRlcmFsX2h0cmVlcyA9IF9vMS5udW1faHRyZWVzOwogICAgY29udGV4dF9tYXAgPSBfbzEuY29udGV4dF9tYXA7CiAgICAKICAgIHZhciBfbzIgPSBEZWNvZGVDb250ZXh0TWFwKG51bV9ibG9ja190eXBlc1syXSA8PCBrRGlzdGFuY2VDb250ZXh0Qml0cywgYnIpOwogICAgbnVtX2Rpc3RfaHRyZWVzID0gX28yLm51bV9odHJlZXM7CiAgICBkaXN0X2NvbnRleHRfbWFwID0gX28yLmNvbnRleHRfbWFwOwogICAgCiAgICBoZ3JvdXBbMF0gPSBuZXcgSHVmZm1hblRyZWVHcm91cChrTnVtTGl0ZXJhbENvZGVzLCBudW1fbGl0ZXJhbF9odHJlZXMpOwogICAgaGdyb3VwWzFdID0gbmV3IEh1ZmZtYW5UcmVlR3JvdXAoa051bUluc2VydEFuZENvcHlDb2RlcywgbnVtX2Jsb2NrX3R5cGVzWzFdKTsKICAgIGhncm91cFsyXSA9IG5ldyBIdWZmbWFuVHJlZUdyb3VwKG51bV9kaXN0YW5jZV9jb2RlcywgbnVtX2Rpc3RfaHRyZWVzKTsKCiAgICBmb3IgKGkgPSAwOyBpIDwgMzsgKytpKSB7CiAgICAgIGhncm91cFtpXS5kZWNvZGUoYnIpOwogICAgfQoKICAgIGNvbnRleHRfbWFwX3NsaWNlID0gMDsKICAgIGRpc3RfY29udGV4dF9tYXBfc2xpY2UgPSAwOwogICAgY29udGV4dF9tb2RlID0gY29udGV4dF9tb2Rlc1tibG9ja190eXBlWzBdXTsKICAgIGNvbnRleHRfbG9va3VwX29mZnNldDEgPSBDb250ZXh0Lmxvb2t1cE9mZnNldHNbY29udGV4dF9tb2RlXTsKICAgIGNvbnRleHRfbG9va3VwX29mZnNldDIgPSBDb250ZXh0Lmxvb2t1cE9mZnNldHNbY29udGV4dF9tb2RlICsgMV07CiAgICBodHJlZV9jb21tYW5kID0gaGdyb3VwWzFdLmh0cmVlc1swXTsKCiAgICB3aGlsZSAobWV0YV9ibG9ja19yZW1haW5pbmdfbGVuID4gMCkgewogICAgICB2YXIgY21kX2NvZGU7CiAgICAgIHZhciByYW5nZV9pZHg7CiAgICAgIHZhciBpbnNlcnRfY29kZTsKICAgICAgdmFyIGNvcHlfY29kZTsKICAgICAgdmFyIGluc2VydF9sZW5ndGg7CiAgICAgIHZhciBjb3B5X2xlbmd0aDsKICAgICAgdmFyIGRpc3RhbmNlX2NvZGU7CiAgICAgIHZhciBkaXN0YW5jZTsKICAgICAgdmFyIGNvbnRleHQ7CiAgICAgIHZhciBqOwogICAgICB2YXIgY29weV9kc3Q7CgogICAgICBici5yZWFkTW9yZUlucHV0KCk7CiAgICAgIAogICAgICBpZiAoYmxvY2tfbGVuZ3RoWzFdID09PSAwKSB7CiAgICAgICAgRGVjb2RlQmxvY2tUeXBlKG51bV9ibG9ja190eXBlc1sxXSwKICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfdHlwZV90cmVlcywgMSwgYmxvY2tfdHlwZSwgYmxvY2tfdHlwZV9yYiwKICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfdHlwZV9yYl9pbmRleCwgYnIpOwogICAgICAgIGJsb2NrX2xlbmd0aFsxXSA9IFJlYWRCbG9ja0xlbmd0aChibG9ja19sZW5fdHJlZXMsIEhVRkZNQU5fTUFYX1RBQkxFX1NJWkUsIGJyKTsKICAgICAgICBodHJlZV9jb21tYW5kID0gaGdyb3VwWzFdLmh0cmVlc1tibG9ja190eXBlWzFdXTsKICAgICAgfQogICAgICAtLWJsb2NrX2xlbmd0aFsxXTsKICAgICAgY21kX2NvZGUgPSBSZWFkU3ltYm9sKGhncm91cFsxXS5jb2RlcywgaHRyZWVfY29tbWFuZCwgYnIpOwogICAgICByYW5nZV9pZHggPSBjbWRfY29kZSA+PiA2OwogICAgICBpZiAocmFuZ2VfaWR4ID49IDIpIHsKICAgICAgICByYW5nZV9pZHggLT0gMjsKICAgICAgICBkaXN0YW5jZV9jb2RlID0gLTE7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZGlzdGFuY2VfY29kZSA9IDA7CiAgICAgIH0KICAgICAgaW5zZXJ0X2NvZGUgPSBQcmVmaXgua0luc2VydFJhbmdlTHV0W3JhbmdlX2lkeF0gKyAoKGNtZF9jb2RlID4+IDMpICYgNyk7CiAgICAgIGNvcHlfY29kZSA9IFByZWZpeC5rQ29weVJhbmdlTHV0W3JhbmdlX2lkeF0gKyAoY21kX2NvZGUgJiA3KTsKICAgICAgaW5zZXJ0X2xlbmd0aCA9IFByZWZpeC5rSW5zZXJ0TGVuZ3RoUHJlZml4Q29kZVtpbnNlcnRfY29kZV0ub2Zmc2V0ICsKICAgICAgICAgIGJyLnJlYWRCaXRzKFByZWZpeC5rSW5zZXJ0TGVuZ3RoUHJlZml4Q29kZVtpbnNlcnRfY29kZV0ubmJpdHMpOwogICAgICBjb3B5X2xlbmd0aCA9IFByZWZpeC5rQ29weUxlbmd0aFByZWZpeENvZGVbY29weV9jb2RlXS5vZmZzZXQgKwogICAgICAgICAgYnIucmVhZEJpdHMoUHJlZml4LmtDb3B5TGVuZ3RoUHJlZml4Q29kZVtjb3B5X2NvZGVdLm5iaXRzKTsKICAgICAgcHJldl9ieXRlMSA9IHJpbmdidWZmZXJbcG9zLTEgJiByaW5nYnVmZmVyX21hc2tdOwogICAgICBwcmV2X2J5dGUyID0gcmluZ2J1ZmZlcltwb3MtMiAmIHJpbmdidWZmZXJfbWFza107CiAgICAgIGZvciAoaiA9IDA7IGogPCBpbnNlcnRfbGVuZ3RoOyArK2opIHsKICAgICAgICBici5yZWFkTW9yZUlucHV0KCk7CgogICAgICAgIGlmIChibG9ja19sZW5ndGhbMF0gPT09IDApIHsKICAgICAgICAgIERlY29kZUJsb2NrVHlwZShudW1fYmxvY2tfdHlwZXNbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfdHlwZV90cmVlcywgMCwgYmxvY2tfdHlwZSwgYmxvY2tfdHlwZV9yYiwKICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja190eXBlX3JiX2luZGV4LCBicik7CiAgICAgICAgICBibG9ja19sZW5ndGhbMF0gPSBSZWFkQmxvY2tMZW5ndGgoYmxvY2tfbGVuX3RyZWVzLCAwLCBicik7CiAgICAgICAgICBjb250ZXh0X29mZnNldCA9IGJsb2NrX3R5cGVbMF0gPDwga0xpdGVyYWxDb250ZXh0Qml0czsKICAgICAgICAgIGNvbnRleHRfbWFwX3NsaWNlID0gY29udGV4dF9vZmZzZXQ7CiAgICAgICAgICBjb250ZXh0X21vZGUgPSBjb250ZXh0X21vZGVzW2Jsb2NrX3R5cGVbMF1dOwogICAgICAgICAgY29udGV4dF9sb29rdXBfb2Zmc2V0MSA9IENvbnRleHQubG9va3VwT2Zmc2V0c1tjb250ZXh0X21vZGVdOwogICAgICAgICAgY29udGV4dF9sb29rdXBfb2Zmc2V0MiA9IENvbnRleHQubG9va3VwT2Zmc2V0c1tjb250ZXh0X21vZGUgKyAxXTsKICAgICAgICB9CiAgICAgICAgY29udGV4dCA9IChDb250ZXh0Lmxvb2t1cFtjb250ZXh0X2xvb2t1cF9vZmZzZXQxICsgcHJldl9ieXRlMV0gfAogICAgICAgICAgICAgICAgICAgQ29udGV4dC5sb29rdXBbY29udGV4dF9sb29rdXBfb2Zmc2V0MiArIHByZXZfYnl0ZTJdKTsKICAgICAgICBsaXRlcmFsX2h0cmVlX2luZGV4ID0gY29udGV4dF9tYXBbY29udGV4dF9tYXBfc2xpY2UgKyBjb250ZXh0XTsKICAgICAgICAtLWJsb2NrX2xlbmd0aFswXTsKICAgICAgICBwcmV2X2J5dGUyID0gcHJldl9ieXRlMTsKICAgICAgICBwcmV2X2J5dGUxID0gUmVhZFN5bWJvbChoZ3JvdXBbMF0uY29kZXMsIGhncm91cFswXS5odHJlZXNbbGl0ZXJhbF9odHJlZV9pbmRleF0sIGJyKTsKICAgICAgICByaW5nYnVmZmVyW3BvcyAmIHJpbmdidWZmZXJfbWFza10gPSBwcmV2X2J5dGUxOwogICAgICAgIGlmICgocG9zICYgcmluZ2J1ZmZlcl9tYXNrKSA9PT0gcmluZ2J1ZmZlcl9tYXNrKSB7CiAgICAgICAgICBvdXRwdXQud3JpdGUocmluZ2J1ZmZlciwgcmluZ2J1ZmZlcl9zaXplKTsKICAgICAgICB9CiAgICAgICAgKytwb3M7CiAgICAgIH0KICAgICAgbWV0YV9ibG9ja19yZW1haW5pbmdfbGVuIC09IGluc2VydF9sZW5ndGg7CiAgICAgIGlmIChtZXRhX2Jsb2NrX3JlbWFpbmluZ19sZW4gPD0gMCkgYnJlYWs7CgogICAgICBpZiAoZGlzdGFuY2VfY29kZSA8IDApIHsKICAgICAgICB2YXIgY29udGV4dDsKICAgICAgICAKICAgICAgICBici5yZWFkTW9yZUlucHV0KCk7CiAgICAgICAgaWYgKGJsb2NrX2xlbmd0aFsyXSA9PT0gMCkgewogICAgICAgICAgRGVjb2RlQmxvY2tUeXBlKG51bV9ibG9ja190eXBlc1syXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja190eXBlX3RyZWVzLCAyLCBibG9ja190eXBlLCBibG9ja190eXBlX3JiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX3R5cGVfcmJfaW5kZXgsIGJyKTsKICAgICAgICAgIGJsb2NrX2xlbmd0aFsyXSA9IFJlYWRCbG9ja0xlbmd0aChibG9ja19sZW5fdHJlZXMsIDIgKiBIVUZGTUFOX01BWF9UQUJMRV9TSVpFLCBicik7CiAgICAgICAgICBkaXN0X2NvbnRleHRfb2Zmc2V0ID0gYmxvY2tfdHlwZVsyXSA8PCBrRGlzdGFuY2VDb250ZXh0Qml0czsKICAgICAgICAgIGRpc3RfY29udGV4dF9tYXBfc2xpY2UgPSBkaXN0X2NvbnRleHRfb2Zmc2V0OwogICAgICAgIH0KICAgICAgICAtLWJsb2NrX2xlbmd0aFsyXTsKICAgICAgICBjb250ZXh0ID0gKGNvcHlfbGVuZ3RoID4gNCA/IDMgOiBjb3B5X2xlbmd0aCAtIDIpICYgMHhmZjsKICAgICAgICBkaXN0X2h0cmVlX2luZGV4ID0gZGlzdF9jb250ZXh0X21hcFtkaXN0X2NvbnRleHRfbWFwX3NsaWNlICsgY29udGV4dF07CiAgICAgICAgZGlzdGFuY2VfY29kZSA9IFJlYWRTeW1ib2woaGdyb3VwWzJdLmNvZGVzLCBoZ3JvdXBbMl0uaHRyZWVzW2Rpc3RfaHRyZWVfaW5kZXhdLCBicik7CiAgICAgICAgaWYgKGRpc3RhbmNlX2NvZGUgPj0gbnVtX2RpcmVjdF9kaXN0YW5jZV9jb2RlcykgewogICAgICAgICAgdmFyIG5iaXRzOwogICAgICAgICAgdmFyIHBvc3RmaXg7CiAgICAgICAgICB2YXIgb2Zmc2V0OwogICAgICAgICAgZGlzdGFuY2VfY29kZSAtPSBudW1fZGlyZWN0X2Rpc3RhbmNlX2NvZGVzOwogICAgICAgICAgcG9zdGZpeCA9IGRpc3RhbmNlX2NvZGUgJiBkaXN0YW5jZV9wb3N0Zml4X21hc2s7CiAgICAgICAgICBkaXN0YW5jZV9jb2RlID4+PSBkaXN0YW5jZV9wb3N0Zml4X2JpdHM7CiAgICAgICAgICBuYml0cyA9IChkaXN0YW5jZV9jb2RlID4+IDEpICsgMTsKICAgICAgICAgIG9mZnNldCA9ICgoMiArIChkaXN0YW5jZV9jb2RlICYgMSkpIDw8IG5iaXRzKSAtIDQ7CiAgICAgICAgICBkaXN0YW5jZV9jb2RlID0gbnVtX2RpcmVjdF9kaXN0YW5jZV9jb2RlcyArCiAgICAgICAgICAgICAgKChvZmZzZXQgKyBici5yZWFkQml0cyhuYml0cykpIDw8CiAgICAgICAgICAgICAgIGRpc3RhbmNlX3Bvc3RmaXhfYml0cykgKyBwb3N0Zml4OwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyogQ29udmVydCB0aGUgZGlzdGFuY2UgY29kZSB0byB0aGUgYWN0dWFsIGRpc3RhbmNlIGJ5IHBvc3NpYmx5IGxvb2tpbmcgKi8KICAgICAgLyogdXAgcGFzdCBkaXN0bmFjZXMgZnJvbSB0aGUgcmluZ2J1ZmZlci4gKi8KICAgICAgZGlzdGFuY2UgPSBUcmFuc2xhdGVTaG9ydENvZGVzKGRpc3RhbmNlX2NvZGUsIGRpc3RfcmIsIGRpc3RfcmJfaWR4KTsKICAgICAgaWYgKGRpc3RhbmNlIDwgMCkgewogICAgICAgIHRocm93IG5ldyBFcnJvcignW0Jyb3RsaURlY29tcHJlc3NdIGludmFsaWQgZGlzdGFuY2UnKTsKICAgICAgfQoKICAgICAgaWYgKHBvcyA8IG1heF9iYWNrd2FyZF9kaXN0YW5jZSAmJgogICAgICAgICAgbWF4X2Rpc3RhbmNlICE9PSBtYXhfYmFja3dhcmRfZGlzdGFuY2UpIHsKICAgICAgICBtYXhfZGlzdGFuY2UgPSBwb3M7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbWF4X2Rpc3RhbmNlID0gbWF4X2JhY2t3YXJkX2Rpc3RhbmNlOwogICAgICB9CgogICAgICBjb3B5X2RzdCA9IHBvcyAmIHJpbmdidWZmZXJfbWFzazsKCiAgICAgIGlmIChkaXN0YW5jZSA+IG1heF9kaXN0YW5jZSkgewogICAgICAgIGlmIChjb3B5X2xlbmd0aCA+PSBCcm90bGlEaWN0aW9uYXJ5Lm1pbkRpY3Rpb25hcnlXb3JkTGVuZ3RoICYmCiAgICAgICAgICAgIGNvcHlfbGVuZ3RoIDw9IEJyb3RsaURpY3Rpb25hcnkubWF4RGljdGlvbmFyeVdvcmRMZW5ndGgpIHsKICAgICAgICAgIHZhciBvZmZzZXQgPSBCcm90bGlEaWN0aW9uYXJ5Lm9mZnNldHNCeUxlbmd0aFtjb3B5X2xlbmd0aF07CiAgICAgICAgICB2YXIgd29yZF9pZCA9IGRpc3RhbmNlIC0gbWF4X2Rpc3RhbmNlIC0gMTsKICAgICAgICAgIHZhciBzaGlmdCA9IEJyb3RsaURpY3Rpb25hcnkuc2l6ZUJpdHNCeUxlbmd0aFtjb3B5X2xlbmd0aF07CiAgICAgICAgICB2YXIgbWFzayA9ICgxIDw8IHNoaWZ0KSAtIDE7CiAgICAgICAgICB2YXIgd29yZF9pZHggPSB3b3JkX2lkICYgbWFzazsKICAgICAgICAgIHZhciB0cmFuc2Zvcm1faWR4ID0gd29yZF9pZCA+PiBzaGlmdDsKICAgICAgICAgIG9mZnNldCArPSB3b3JkX2lkeCAqIGNvcHlfbGVuZ3RoOwogICAgICAgICAgaWYgKHRyYW5zZm9ybV9pZHggPCBUcmFuc2Zvcm0ua051bVRyYW5zZm9ybXMpIHsKICAgICAgICAgICAgdmFyIGxlbiA9IFRyYW5zZm9ybS50cmFuc2Zvcm1EaWN0aW9uYXJ5V29yZChyaW5nYnVmZmVyLCBjb3B5X2RzdCwgb2Zmc2V0LCBjb3B5X2xlbmd0aCwgdHJhbnNmb3JtX2lkeCk7CiAgICAgICAgICAgIGNvcHlfZHN0ICs9IGxlbjsKICAgICAgICAgICAgcG9zICs9IGxlbjsKICAgICAgICAgICAgbWV0YV9ibG9ja19yZW1haW5pbmdfbGVuIC09IGxlbjsKICAgICAgICAgICAgaWYgKGNvcHlfZHN0ID49IHJpbmdidWZmZXJfZW5kKSB7CiAgICAgICAgICAgICAgb3V0cHV0LndyaXRlKHJpbmdidWZmZXIsIHJpbmdidWZmZXJfc2l6ZSk7CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgZm9yICh2YXIgX3ggPSAwOyBfeCA8IChjb3B5X2RzdCAtIHJpbmdidWZmZXJfZW5kKTsgX3grKykKICAgICAgICAgICAgICAgIHJpbmdidWZmZXJbX3hdID0gcmluZ2J1ZmZlcltyaW5nYnVmZmVyX2VuZCArIF94XTsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGJhY2t3YXJkIHJlZmVyZW5jZS4gcG9zOiAiICsgcG9zICsgIiBkaXN0YW5jZTogIiArIGRpc3RhbmNlICsKICAgICAgICAgICAgICAiIGxlbjogIiArIGNvcHlfbGVuZ3RoICsgIiBieXRlcyBsZWZ0OiAiICsgbWV0YV9ibG9ja19yZW1haW5pbmdfbGVuKTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGJhY2t3YXJkIHJlZmVyZW5jZS4gcG9zOiAiICsgcG9zICsgIiBkaXN0YW5jZTogIiArIGRpc3RhbmNlICsKICAgICAgICAgICAgIiBsZW46ICIgKyBjb3B5X2xlbmd0aCArICIgYnl0ZXMgbGVmdDogIiArIG1ldGFfYmxvY2tfcmVtYWluaW5nX2xlbik7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGlmIChkaXN0YW5jZV9jb2RlID4gMCkgewogICAgICAgICAgZGlzdF9yYltkaXN0X3JiX2lkeCAmIDNdID0gZGlzdGFuY2U7CiAgICAgICAgICArK2Rpc3RfcmJfaWR4OwogICAgICAgIH0KCiAgICAgICAgaWYgKGNvcHlfbGVuZ3RoID4gbWV0YV9ibG9ja19yZW1haW5pbmdfbGVuKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYmFja3dhcmQgcmVmZXJlbmNlLiBwb3M6ICIgKyBwb3MgKyAiIGRpc3RhbmNlOiAiICsgZGlzdGFuY2UgKwogICAgICAgICAgICAiIGxlbjogIiArIGNvcHlfbGVuZ3RoICsgIiBieXRlcyBsZWZ0OiAiICsgbWV0YV9ibG9ja19yZW1haW5pbmdfbGVuKTsKICAgICAgICB9CgogICAgICAgIGZvciAoaiA9IDA7IGogPCBjb3B5X2xlbmd0aDsgKytqKSB7CiAgICAgICAgICByaW5nYnVmZmVyW3BvcyAmIHJpbmdidWZmZXJfbWFza10gPSByaW5nYnVmZmVyWyhwb3MgLSBkaXN0YW5jZSkgJiByaW5nYnVmZmVyX21hc2tdOwogICAgICAgICAgaWYgKChwb3MgJiByaW5nYnVmZmVyX21hc2spID09PSByaW5nYnVmZmVyX21hc2spIHsKICAgICAgICAgICAgb3V0cHV0LndyaXRlKHJpbmdidWZmZXIsIHJpbmdidWZmZXJfc2l6ZSk7CiAgICAgICAgICB9CiAgICAgICAgICArK3BvczsKICAgICAgICAgIC0tbWV0YV9ibG9ja19yZW1haW5pbmdfbGVuOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyogV2hlbiB3ZSBnZXQgaGVyZSwgd2UgbXVzdCBoYXZlIGluc2VydGVkIGF0IGxlYXN0IG9uZSBsaXRlcmFsIGFuZCAqLwogICAgICAvKiBtYWRlIGEgY29weSBvZiBhdCBsZWFzdCBsZW5ndGggdHdvLCB0aGVyZWZvcmUgYWNjZXNzaW5nIHRoZSBsYXN0IDIgKi8KICAgICAgLyogYnl0ZXMgaXMgdmFsaWQuICovCiAgICAgIHByZXZfYnl0ZTEgPSByaW5nYnVmZmVyWyhwb3MgLSAxKSAmIHJpbmdidWZmZXJfbWFza107CiAgICAgIHByZXZfYnl0ZTIgPSByaW5nYnVmZmVyWyhwb3MgLSAyKSAmIHJpbmdidWZmZXJfbWFza107CiAgICB9CgogICAgLyogUHJvdGVjdCBwb3MgZnJvbSBvdmVyZmxvdywgd3JhcCBpdCBhcm91bmQgYXQgZXZlcnkgR0Igb2YgaW5wdXQgZGF0YSAqLwogICAgcG9zICY9IDB4M2ZmZmZmZmY7CiAgfQoKICBvdXRwdXQud3JpdGUocmluZ2J1ZmZlciwgcG9zICYgcmluZ2J1ZmZlcl9tYXNrKTsKfQoKZXhwb3J0cy5Ccm90bGlEZWNvbXByZXNzID0gQnJvdGxpRGVjb21wcmVzczsKCkJyb3RsaURpY3Rpb25hcnkuaW5pdCgpOwoKCi8qKiovIH0pLAovKiAxMTggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKZnVuY3Rpb24gQnJvdGxpSW5wdXQoYnVmZmVyKSB7CiAgdGhpcy5idWZmZXIgPSBidWZmZXI7CiAgdGhpcy5wb3MgPSAwOwp9CgpCcm90bGlJbnB1dC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKGJ1ZiwgaSwgY291bnQpIHsKICBpZiAodGhpcy5wb3MgKyBjb3VudCA+IHRoaXMuYnVmZmVyLmxlbmd0aCkgewogICAgY291bnQgPSB0aGlzLmJ1ZmZlci5sZW5ndGggLSB0aGlzLnBvczsKICB9CiAgCiAgZm9yICh2YXIgcCA9IDA7IHAgPCBjb3VudDsgcCsrKQogICAgYnVmW2kgKyBwXSA9IHRoaXMuYnVmZmVyW3RoaXMucG9zICsgcF07CiAgCiAgdGhpcy5wb3MgKz0gY291bnQ7CiAgcmV0dXJuIGNvdW50Owp9CgpleHBvcnRzLkJyb3RsaUlucHV0ID0gQnJvdGxpSW5wdXQ7CgpmdW5jdGlvbiBCcm90bGlPdXRwdXQoYnVmKSB7CiAgdGhpcy5idWZmZXIgPSBidWY7CiAgdGhpcy5wb3MgPSAwOwp9CgpCcm90bGlPdXRwdXQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oYnVmLCBjb3VudCkgewogIGlmICh0aGlzLnBvcyArIGNvdW50ID4gdGhpcy5idWZmZXIubGVuZ3RoKQogICAgdGhyb3cgbmV3IEVycm9yKCdPdXRwdXQgYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2gnKTsKICAKICB0aGlzLmJ1ZmZlci5zZXQoYnVmLnN1YmFycmF5KDAsIGNvdW50KSwgdGhpcy5wb3MpOwogIHRoaXMucG9zICs9IGNvdW50OwogIHJldHVybiBjb3VudDsKfTsKCmV4cG9ydHMuQnJvdGxpT3V0cHV0ID0gQnJvdGxpT3V0cHV0OwoKCi8qKiovIH0pLAovKiAxMTkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogQ29weXJpZ2h0IDIwMTMgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KCiAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgQ29sbGVjdGlvbiBvZiBzdGF0aWMgZGljdGlvbmFyeSB3b3Jkcy4KKi8KCnZhciBkYXRhID0gX193ZWJwYWNrX3JlcXVpcmVfXygyODYpOwpleHBvcnRzLmluaXQgPSBmdW5jdGlvbigpIHsKICBleHBvcnRzLmRpY3Rpb25hcnkgPSBkYXRhLmluaXQoKTsKfTsKCmV4cG9ydHMub2Zmc2V0c0J5TGVuZ3RoID0gbmV3IFVpbnQzMkFycmF5KFsKICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgIDQwOTYsICA5MjE2LCAyMTUwNCwgMzU4NDAsIDQ0MDMyLAogNTMyNDgsIDYzNDg4LCA3NDc1MiwgODcwNDAsIDkzNjk2LCAxMDA4NjQsIDEwNDcwNCwgMTA2NzUyLCAxMDg5MjgsIDExMzUzNiwKIDExNTk2OCwgMTE4NTI4LCAxMTk4NzIsIDEyMTI4MCwgMTIyMDE2LApdKTsKCmV4cG9ydHMuc2l6ZUJpdHNCeUxlbmd0aCA9IG5ldyBVaW50OEFycmF5KFsKICAwLCAgMCwgIDAsICAwLCAxMCwgMTAsIDExLCAxMSwgMTAsIDEwLAogMTAsIDEwLCAxMCwgIDksICA5LCAgOCwgIDcsICA3LCAgOCwgIDcsCiAgNywgIDYsICA2LCAgNSwgIDUsCl0pOwoKZXhwb3J0cy5taW5EaWN0aW9uYXJ5V29yZExlbmd0aCA9IDQ7CmV4cG9ydHMubWF4RGljdGlvbmFyeVdvcmRMZW5ndGggPSAyNDsKCgovKioqLyB9KSwKLyogMTIwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCmZ1bmN0aW9uIEh1ZmZtYW5Db2RlKGJpdHMsIHZhbHVlKSB7CiAgdGhpcy5iaXRzID0gYml0czsgICAvKiBudW1iZXIgb2YgYml0cyB1c2VkIGZvciB0aGlzIHN5bWJvbCAqLwogIHRoaXMudmFsdWUgPSB2YWx1ZTsgLyogc3ltYm9sIHZhbHVlIG9yIHRhYmxlIG9mZnNldCAqLwp9CgpleHBvcnRzLkh1ZmZtYW5Db2RlID0gSHVmZm1hbkNvZGU7Cgp2YXIgTUFYX0xFTkdUSCA9IDE1OwoKLyogUmV0dXJucyByZXZlcnNlKHJldmVyc2Uoa2V5LCBsZW4pICsgMSwgbGVuKSwgd2hlcmUgcmV2ZXJzZShrZXksIGxlbikgaXMgdGhlCiAgIGJpdC13aXNlIHJldmVyc2FsIG9mIHRoZSBsZW4gbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiBrZXkuICovCmZ1bmN0aW9uIEdldE5leHRLZXkoa2V5LCBsZW4pIHsKICB2YXIgc3RlcCA9IDEgPDwgKGxlbiAtIDEpOwogIHdoaWxlIChrZXkgJiBzdGVwKSB7CiAgICBzdGVwID4+PSAxOwogIH0KICByZXR1cm4gKGtleSAmIChzdGVwIC0gMSkpICsgc3RlcDsKfQoKLyogU3RvcmVzIGNvZGUgaW4gdGFibGVbMF0sIHRhYmxlW3N0ZXBdLCB0YWJsZVsyKnN0ZXBdLCAuLi4sIHRhYmxlW2VuZF0gKi8KLyogQXNzdW1lcyB0aGF0IGVuZCBpcyBhbiBpbnRlZ2VyIG11bHRpcGxlIG9mIHN0ZXAgKi8KZnVuY3Rpb24gUmVwbGljYXRlVmFsdWUodGFibGUsIGksIHN0ZXAsIGVuZCwgY29kZSkgewogIGRvIHsKICAgIGVuZCAtPSBzdGVwOwogICAgdGFibGVbaSArIGVuZF0gPSBuZXcgSHVmZm1hbkNvZGUoY29kZS5iaXRzLCBjb2RlLnZhbHVlKTsKICB9IHdoaWxlIChlbmQgPiAwKTsKfQoKLyogUmV0dXJucyB0aGUgdGFibGUgd2lkdGggb2YgdGhlIG5leHQgMm5kIGxldmVsIHRhYmxlLiBjb3VudCBpcyB0aGUgaGlzdG9ncmFtCiAgIG9mIGJpdCBsZW5ndGhzIGZvciB0aGUgcmVtYWluaW5nIHN5bWJvbHMsIGxlbiBpcyB0aGUgY29kZSBsZW5ndGggb2YgdGhlIG5leHQKICAgcHJvY2Vzc2VkIHN5bWJvbCAqLwpmdW5jdGlvbiBOZXh0VGFibGVCaXRTaXplKGNvdW50LCBsZW4sIHJvb3RfYml0cykgewogIHZhciBsZWZ0ID0gMSA8PCAobGVuIC0gcm9vdF9iaXRzKTsKICB3aGlsZSAobGVuIDwgTUFYX0xFTkdUSCkgewogICAgbGVmdCAtPSBjb3VudFtsZW5dOwogICAgaWYgKGxlZnQgPD0gMCkgYnJlYWs7CiAgICArK2xlbjsKICAgIGxlZnQgPDw9IDE7CiAgfQogIHJldHVybiBsZW4gLSByb290X2JpdHM7Cn0KCmV4cG9ydHMuQnJvdGxpQnVpbGRIdWZmbWFuVGFibGUgPSBmdW5jdGlvbihyb290X3RhYmxlLCB0YWJsZSwgcm9vdF9iaXRzLCBjb2RlX2xlbmd0aHMsIGNvZGVfbGVuZ3Roc19zaXplKSB7CiAgdmFyIHN0YXJ0X3RhYmxlID0gdGFibGU7CiAgdmFyIGNvZGU7ICAgICAgICAgICAgLyogY3VycmVudCB0YWJsZSBlbnRyeSAqLwogIHZhciBsZW47ICAgICAgICAgICAgIC8qIGN1cnJlbnQgY29kZSBsZW5ndGggKi8KICB2YXIgc3ltYm9sOyAgICAgICAgICAvKiBzeW1ib2wgaW5kZXggaW4gb3JpZ2luYWwgb3Igc29ydGVkIHRhYmxlICovCiAgdmFyIGtleTsgICAgICAgICAgICAgLyogcmV2ZXJzZWQgcHJlZml4IGNvZGUgKi8KICB2YXIgc3RlcDsgICAgICAgICAgICAvKiBzdGVwIHNpemUgdG8gcmVwbGljYXRlIHZhbHVlcyBpbiBjdXJyZW50IHRhYmxlICovCiAgdmFyIGxvdzsgICAgICAgICAgICAgLyogbG93IGJpdHMgZm9yIGN1cnJlbnQgcm9vdCBlbnRyeSAqLwogIHZhciBtYXNrOyAgICAgICAgICAgIC8qIG1hc2sgZm9yIGxvdyBiaXRzICovCiAgdmFyIHRhYmxlX2JpdHM7ICAgICAgLyoga2V5IGxlbmd0aCBvZiBjdXJyZW50IHRhYmxlICovCiAgdmFyIHRhYmxlX3NpemU7ICAgICAgLyogc2l6ZSBvZiBjdXJyZW50IHRhYmxlICovCiAgdmFyIHRvdGFsX3NpemU7ICAgICAgLyogc3VtIG9mIHJvb3QgdGFibGUgc2l6ZSBhbmQgMm5kIGxldmVsIHRhYmxlIHNpemVzICovCiAgdmFyIHNvcnRlZDsgICAgICAgICAgLyogc3ltYm9scyBzb3J0ZWQgYnkgY29kZSBsZW5ndGggKi8KICB2YXIgY291bnQgPSBuZXcgSW50MzJBcnJheShNQVhfTEVOR1RIICsgMSk7ICAvKiBudW1iZXIgb2YgY29kZXMgb2YgZWFjaCBsZW5ndGggKi8KICB2YXIgb2Zmc2V0ID0gbmV3IEludDMyQXJyYXkoTUFYX0xFTkdUSCArIDEpOyAgLyogb2Zmc2V0cyBpbiBzb3J0ZWQgdGFibGUgZm9yIGVhY2ggbGVuZ3RoICovCgogIHNvcnRlZCA9IG5ldyBJbnQzMkFycmF5KGNvZGVfbGVuZ3Roc19zaXplKTsKCiAgLyogYnVpbGQgaGlzdG9ncmFtIG9mIGNvZGUgbGVuZ3RocyAqLwogIGZvciAoc3ltYm9sID0gMDsgc3ltYm9sIDwgY29kZV9sZW5ndGhzX3NpemU7IHN5bWJvbCsrKSB7CiAgICBjb3VudFtjb2RlX2xlbmd0aHNbc3ltYm9sXV0rKzsKICB9CgogIC8qIGdlbmVyYXRlIG9mZnNldHMgaW50byBzb3J0ZWQgc3ltYm9sIHRhYmxlIGJ5IGNvZGUgbGVuZ3RoICovCiAgb2Zmc2V0WzFdID0gMDsKICBmb3IgKGxlbiA9IDE7IGxlbiA8IE1BWF9MRU5HVEg7IGxlbisrKSB7CiAgICBvZmZzZXRbbGVuICsgMV0gPSBvZmZzZXRbbGVuXSArIGNvdW50W2xlbl07CiAgfQoKICAvKiBzb3J0IHN5bWJvbHMgYnkgbGVuZ3RoLCBieSBzeW1ib2wgb3JkZXIgd2l0aGluIGVhY2ggbGVuZ3RoICovCiAgZm9yIChzeW1ib2wgPSAwOyBzeW1ib2wgPCBjb2RlX2xlbmd0aHNfc2l6ZTsgc3ltYm9sKyspIHsKICAgIGlmIChjb2RlX2xlbmd0aHNbc3ltYm9sXSAhPT0gMCkgewogICAgICBzb3J0ZWRbb2Zmc2V0W2NvZGVfbGVuZ3Roc1tzeW1ib2xdXSsrXSA9IHN5bWJvbDsKICAgIH0KICB9CiAgCiAgdGFibGVfYml0cyA9IHJvb3RfYml0czsKICB0YWJsZV9zaXplID0gMSA8PCB0YWJsZV9iaXRzOwogIHRvdGFsX3NpemUgPSB0YWJsZV9zaXplOwoKICAvKiBzcGVjaWFsIGNhc2UgY29kZSB3aXRoIG9ubHkgb25lIHZhbHVlICovCiAgaWYgKG9mZnNldFtNQVhfTEVOR1RIXSA9PT0gMSkgewogICAgZm9yIChrZXkgPSAwOyBrZXkgPCB0b3RhbF9zaXplOyArK2tleSkgewogICAgICByb290X3RhYmxlW3RhYmxlICsga2V5XSA9IG5ldyBIdWZmbWFuQ29kZSgwLCBzb3J0ZWRbMF0gJiAweGZmZmYpOwogICAgfQogICAgCiAgICByZXR1cm4gdG90YWxfc2l6ZTsKICB9CgogIC8qIGZpbGwgaW4gcm9vdCB0YWJsZSAqLwogIGtleSA9IDA7CiAgc3ltYm9sID0gMDsKICBmb3IgKGxlbiA9IDEsIHN0ZXAgPSAyOyBsZW4gPD0gcm9vdF9iaXRzOyArK2xlbiwgc3RlcCA8PD0gMSkgewogICAgZm9yICg7IGNvdW50W2xlbl0gPiAwOyAtLWNvdW50W2xlbl0pIHsKICAgICAgY29kZSA9IG5ldyBIdWZmbWFuQ29kZShsZW4gJiAweGZmLCBzb3J0ZWRbc3ltYm9sKytdICYgMHhmZmZmKTsKICAgICAgUmVwbGljYXRlVmFsdWUocm9vdF90YWJsZSwgdGFibGUgKyBrZXksIHN0ZXAsIHRhYmxlX3NpemUsIGNvZGUpOwogICAgICBrZXkgPSBHZXROZXh0S2V5KGtleSwgbGVuKTsKICAgIH0KICB9CgogIC8qIGZpbGwgaW4gMm5kIGxldmVsIHRhYmxlcyBhbmQgYWRkIHBvaW50ZXJzIHRvIHJvb3QgdGFibGUgKi8KICBtYXNrID0gdG90YWxfc2l6ZSAtIDE7CiAgbG93ID0gLTE7CiAgZm9yIChsZW4gPSByb290X2JpdHMgKyAxLCBzdGVwID0gMjsgbGVuIDw9IE1BWF9MRU5HVEg7ICsrbGVuLCBzdGVwIDw8PSAxKSB7CiAgICBmb3IgKDsgY291bnRbbGVuXSA+IDA7IC0tY291bnRbbGVuXSkgewogICAgICBpZiAoKGtleSAmIG1hc2spICE9PSBsb3cpIHsKICAgICAgICB0YWJsZSArPSB0YWJsZV9zaXplOwogICAgICAgIHRhYmxlX2JpdHMgPSBOZXh0VGFibGVCaXRTaXplKGNvdW50LCBsZW4sIHJvb3RfYml0cyk7CiAgICAgICAgdGFibGVfc2l6ZSA9IDEgPDwgdGFibGVfYml0czsKICAgICAgICB0b3RhbF9zaXplICs9IHRhYmxlX3NpemU7CiAgICAgICAgbG93ID0ga2V5ICYgbWFzazsKICAgICAgICByb290X3RhYmxlW3N0YXJ0X3RhYmxlICsgbG93XSA9IG5ldyBIdWZmbWFuQ29kZSgodGFibGVfYml0cyArIHJvb3RfYml0cykgJiAweGZmLCAoKHRhYmxlIC0gc3RhcnRfdGFibGUpIC0gbG93KSAmIDB4ZmZmZik7CiAgICAgIH0KICAgICAgY29kZSA9IG5ldyBIdWZmbWFuQ29kZSgobGVuIC0gcm9vdF9iaXRzKSAmIDB4ZmYsIHNvcnRlZFtzeW1ib2wrK10gJiAweGZmZmYpOwogICAgICBSZXBsaWNhdGVWYWx1ZShyb290X3RhYmxlLCB0YWJsZSArIChrZXkgPj4gcm9vdF9iaXRzKSwgc3RlcCwgdGFibGVfc2l6ZSwgY29kZSk7CiAgICAgIGtleSA9IEdldE5leHRLZXkoa2V5LCBsZW4pOwogICAgfQogIH0KICAKICByZXR1cm4gdG90YWxfc2l6ZTsKfQoKCi8qKiovIH0pLAovKiAxMjEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKEJ1ZmZlcikgey8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CgovKgpQREZJbWFnZSAtIGVtYmVkcyBpbWFnZXMgaW4gUERGIGRvY3VtZW50cwpCeSBEZXZvbiBHb3ZldHQKICovCgooZnVuY3Rpb24oKSB7CiAgdmFyIERhdGEsIEpQRUcsIFBERkltYWdlLCBQTkcsIGZzOwoKICBmcyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7CgogIERhdGEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5OCk7CgogIEpQRUcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5OSk7CgogIFBORyA9IF9fd2VicGFja19yZXF1aXJlX18oMzAwKTsKCiAgUERGSW1hZ2UgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBQREZJbWFnZSgpIHt9CgogICAgUERGSW1hZ2Uub3BlbiA9IGZ1bmN0aW9uKHNyYywgbGFiZWwpIHsKICAgICAgdmFyIGRhdGEsIG1hdGNoOwogICAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKHNyYykpIHsKICAgICAgICBkYXRhID0gc3JjOwogICAgICB9IGVsc2UgaWYgKHNyYyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7CiAgICAgICAgZGF0YSA9IG5ldyBCdWZmZXIobmV3IFVpbnQ4QXJyYXkoc3JjKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKG1hdGNoID0gL15kYXRhOi4rO2Jhc2U2NCwoLiopJC8uZXhlYyhzcmMpKSB7CiAgICAgICAgICBkYXRhID0gbmV3IEJ1ZmZlcihtYXRjaFsxXSwgJ2Jhc2U2NCcpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBkYXRhID0gZnMucmVhZEZpbGVTeW5jKHNyYyk7CiAgICAgICAgICBpZiAoIWRhdGEpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoZGF0YVswXSA9PT0gMHhmZiAmJiBkYXRhWzFdID09PSAweGQ4KSB7CiAgICAgICAgcmV0dXJuIG5ldyBKUEVHKGRhdGEsIGxhYmVsKTsKICAgICAgfSBlbHNlIGlmIChkYXRhWzBdID09PSAweDg5ICYmIGRhdGEudG9TdHJpbmcoJ2FzY2lpJywgMSwgNCkgPT09ICdQTkcnKSB7CiAgICAgICAgcmV0dXJuIG5ldyBQTkcoZGF0YSwgbGFiZWwpOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBpbWFnZSBmb3JtYXQuJyk7CiAgICAgIH0KICAgIH07CgogICAgcmV0dXJuIFBERkltYWdlOwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IFBERkltYWdlOwoKfSkuY2FsbCh0aGlzKTsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpLkJ1ZmZlcikpCgovKioqLyB9KSwKLyogMTIyICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwpIHttb2R1bGUuZXhwb3J0cyA9IGdsb2JhbFsicGRmTWFrZSJdID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMjMpOwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyg3KSkpCgovKioqLyB9KSwKLyogMTIzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKEJ1ZmZlciwgZ2xvYmFsKSB7Cgp2YXIgUGRmUHJpbnRlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTI2KTsKdmFyIGlzRnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzRnVuY3Rpb247CnZhciBGaWxlU2F2ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwNik7CnZhciBzYXZlQXMgPSBGaWxlU2F2ZXIuc2F2ZUFzOwoKdmFyIGRlZmF1bHRDbGllbnRGb250cyA9IHsKCVJvYm90bzogewoJCW5vcm1hbDogJ1JvYm90by1SZWd1bGFyLnR0ZicsCgkJYm9sZDogJ1JvYm90by1NZWRpdW0udHRmJywKCQlpdGFsaWNzOiAnUm9ib3RvLUl0YWxpYy50dGYnLAoJCWJvbGRpdGFsaWNzOiAnUm9ib3RvLU1lZGl1bUl0YWxpYy50dGYnCgl9Cn07CgpmdW5jdGlvbiBEb2N1bWVudChkb2NEZWZpbml0aW9uLCB0YWJsZUxheW91dHMsIGZvbnRzLCB2ZnMpIHsKCXRoaXMuZG9jRGVmaW5pdGlvbiA9IGRvY0RlZmluaXRpb247Cgl0aGlzLnRhYmxlTGF5b3V0cyA9IHRhYmxlTGF5b3V0cyB8fCBudWxsOwoJdGhpcy5mb250cyA9IGZvbnRzIHx8IGRlZmF1bHRDbGllbnRGb250czsKCXRoaXMudmZzID0gdmZzOwp9CgpmdW5jdGlvbiBjYW5DcmVhdGVQZGYoKSB7CgkvLyBFbnN1cmUgdGhlIGJyb3dzZXIgcHJvdmlkZXMgdGhlIGxldmVsIG9mIHN1cHBvcnQgbmVlZGVkCglpZiAoIU9iamVjdC5rZXlzKSB7CgkJcmV0dXJuIGZhbHNlOwoJfQoJcmV0dXJuIHRydWU7Cn0KCkRvY3VtZW50LnByb3RvdHlwZS5fY3JlYXRlRG9jID0gZnVuY3Rpb24gKG9wdGlvbnMsIGNhbGxiYWNrKSB7CglvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCWlmICh0aGlzLnRhYmxlTGF5b3V0cykgewoJCW9wdGlvbnMudGFibGVMYXlvdXRzID0gdGhpcy50YWJsZUxheW91dHM7Cgl9CgoJdmFyIHByaW50ZXIgPSBuZXcgUGRmUHJpbnRlcih0aGlzLmZvbnRzKTsKCV9fd2VicGFja19yZXF1aXJlX18oOCkuYmluZEZTKHRoaXMudmZzKTsgLy8gYmluZCB2aXJ0dWFsIGZpbGUgc3lzdGVtIHRvIGZpbGUgc3lzdGVtCgoJdmFyIGRvYyA9IHByaW50ZXIuY3JlYXRlUGRmS2l0RG9jdW1lbnQodGhpcy5kb2NEZWZpbml0aW9uLCBvcHRpb25zKTsKCXZhciBjaHVua3MgPSBbXTsKCXZhciByZXN1bHQ7CgoJZG9jLm9uKCdyZWFkYWJsZScsIGZ1bmN0aW9uICgpIHsKCQl2YXIgY2h1bms7CgkJd2hpbGUgKChjaHVuayA9IGRvYy5yZWFkKDkwMDcxOTkyNTQ3NDA5OTEpKSAhPT0gbnVsbCkgewoJCQljaHVua3MucHVzaChjaHVuayk7CgkJfQoJfSk7Cglkb2Mub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHsKCQlyZXN1bHQgPSBCdWZmZXIuY29uY2F0KGNodW5rcyk7CgkJY2FsbGJhY2socmVzdWx0LCBkb2MuX3BkZk1ha2VQYWdlcyk7Cgl9KTsKCWRvYy5lbmQoKTsKfTsKCkRvY3VtZW50LnByb3RvdHlwZS5fZ2V0UGFnZXMgPSBmdW5jdGlvbiAob3B0aW9ucywgY2IpIHsKCWlmICghY2IpIHsKCQl0aHJvdyAnX2dldFBhZ2VzIGlzIGFuIGFzeW5jIG1ldGhvZCBhbmQgbmVlZHMgYSBjYWxsYmFjayBhcmd1bWVudCc7Cgl9Cgl0aGlzLl9jcmVhdGVEb2Mob3B0aW9ucywgZnVuY3Rpb24gKGlnbm9yZUJ1ZmZlciwgcGFnZXMpIHsKCQljYihwYWdlcyk7Cgl9KTsKfTsKCkRvY3VtZW50LnByb3RvdHlwZS5fYnVmZmVyVG9CbG9iID0gZnVuY3Rpb24gKGJ1ZmZlcikgewoJdmFyIGJsb2I7Cgl0cnkgewoJCWJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9wZGYnfSk7Cgl9IGNhdGNoIChlKSB7CgkJLy8gT2xkIGJyb3dzZXIgd2hpY2ggY2FuJ3QgaGFuZGxlIGl0IHdpdGhvdXQgbWFraW5nIGl0IGFuIGJ5dGUgYXJyYXkgKGllMTApCgkJaWYgKGUubmFtZSA9PT0gJ0ludmFsaWRTdGF0ZUVycm9yJykgewoJCQl2YXIgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKCQkJYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXkuYnVmZmVyXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9wZGYnfSk7CgkJfQoJfQoKCWlmICghYmxvYikgewoJCXRocm93ICdDb3VsZCBub3QgZ2VuZXJhdGUgYmxvYic7Cgl9CgoJcmV0dXJuIGJsb2I7Cn07CgpEb2N1bWVudC5wcm90b3R5cGUuX29wZW5XaW5kb3cgPSBmdW5jdGlvbiAoKSB7CgkvLyB3ZSBoYXZlIHRvIG9wZW4gdGhlIHdpbmRvdyBpbW1lZGlhdGVseSBhbmQgc3RvcmUgdGhlIHJlZmVyZW5jZQoJLy8gb3RoZXJ3aXNlIHBvcHVwIGJsb2NrZXJzIHdpbGwgc3RvcCB1cwoJdmFyIHdpbiA9IHdpbmRvdy5vcGVuKCcnLCAnX2JsYW5rJyk7CglpZiAod2luID09PSBudWxsKSB7CgkJdGhyb3cgJ09wZW4gUERGIGluIG5ldyB3aW5kb3cgYmxvY2tlZCBieSBicm93c2VyJzsKCX0KCglyZXR1cm4gd2luOwp9OwoKRG9jdW1lbnQucHJvdG90eXBlLl9vcGVuUGRmID0gZnVuY3Rpb24gKG9wdGlvbnMsIHdpbikgewoJaWYgKCF3aW4pIHsKCQl3aW4gPSB0aGlzLl9vcGVuV2luZG93KCk7Cgl9Cgl0cnkgewoJCXRoaXMuZ2V0QmxvYihmdW5jdGlvbiAocmVzdWx0KSB7CgkJCXZhciB1cmxDcmVhdG9yID0gd2luZG93LlVSTCB8fCB3aW5kb3cud2Via2l0VVJMOwoJCQl2YXIgcGRmVXJsID0gdXJsQ3JlYXRvci5jcmVhdGVPYmplY3RVUkwocmVzdWx0KTsKCQkJd2luLmxvY2F0aW9uLmhyZWYgPSBwZGZVcmw7CgkJfSwgb3B0aW9ucyk7Cgl9IGNhdGNoIChlKSB7CgkJd2luLmNsb3NlKCk7CgkJdGhyb3cgZTsKCX0KfTsKCkRvY3VtZW50LnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24gKG9wdGlvbnMsIHdpbikgewoJb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CglvcHRpb25zLmF1dG9QcmludCA9IGZhbHNlOwoJd2luID0gd2luIHx8IG51bGw7CgoJdGhpcy5fb3BlblBkZihvcHRpb25zLCB3aW4pOwp9OwoKCkRvY3VtZW50LnByb3RvdHlwZS5wcmludCA9IGZ1bmN0aW9uIChvcHRpb25zLCB3aW4pIHsKCW9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwoJb3B0aW9ucy5hdXRvUHJpbnQgPSB0cnVlOwoJd2luID0gd2luIHx8IG51bGw7CgoJdGhpcy5fb3BlblBkZihvcHRpb25zLCB3aW4pOwp9OwoKRG9jdW1lbnQucHJvdG90eXBlLmRvd25sb2FkID0gZnVuY3Rpb24gKGRlZmF1bHRGaWxlTmFtZSwgY2IsIG9wdGlvbnMpIHsKCWlmIChpc0Z1bmN0aW9uKGRlZmF1bHRGaWxlTmFtZSkpIHsKCQljYiA9IGRlZmF1bHRGaWxlTmFtZTsKCQlkZWZhdWx0RmlsZU5hbWUgPSBudWxsOwoJfQoKCWRlZmF1bHRGaWxlTmFtZSA9IGRlZmF1bHRGaWxlTmFtZSB8fCAnZmlsZS5wZGYnOwoJdGhpcy5nZXRCbG9iKGZ1bmN0aW9uIChyZXN1bHQpIHsKCQlzYXZlQXMocmVzdWx0LCBkZWZhdWx0RmlsZU5hbWUpOwoKCQlpZiAoaXNGdW5jdGlvbihjYikpIHsKCQkJY2IoKTsKCQl9Cgl9LCBvcHRpb25zKTsKfTsKCkRvY3VtZW50LnByb3RvdHlwZS5nZXRCYXNlNjQgPSBmdW5jdGlvbiAoY2IsIG9wdGlvbnMpIHsKCWlmICghY2IpIHsKCQl0aHJvdyAnZ2V0QmFzZTY0IGlzIGFuIGFzeW5jIG1ldGhvZCBhbmQgbmVlZHMgYSBjYWxsYmFjayBhcmd1bWVudCc7Cgl9Cgl0aGlzLmdldEJ1ZmZlcihmdW5jdGlvbiAoYnVmZmVyKSB7CgkJY2IoYnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKSk7Cgl9LCBvcHRpb25zKTsKfTsKCkRvY3VtZW50LnByb3RvdHlwZS5nZXREYXRhVXJsID0gZnVuY3Rpb24gKGNiLCBvcHRpb25zKSB7CglpZiAoIWNiKSB7CgkJdGhyb3cgJ2dldERhdGFVcmwgaXMgYW4gYXN5bmMgbWV0aG9kIGFuZCBuZWVkcyBhIGNhbGxiYWNrIGFyZ3VtZW50JzsKCX0KCXRoaXMuZ2V0QnVmZmVyKGZ1bmN0aW9uIChidWZmZXIpIHsKCQljYignZGF0YTphcHBsaWNhdGlvbi9wZGY7YmFzZTY0LCcgKyBidWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpKTsKCX0sIG9wdGlvbnMpOwp9OwoKRG9jdW1lbnQucHJvdG90eXBlLmdldEJsb2IgPSBmdW5jdGlvbiAoY2IsIG9wdGlvbnMpIHsKCWlmICghY2IpIHsKCQl0aHJvdyAnZ2V0QmxvYiBpcyBhbiBhc3luYyBtZXRob2QgYW5kIG5lZWRzIGEgY2FsbGJhY2sgYXJndW1lbnQnOwoJfQoJdmFyIHRoYXQgPSB0aGlzOwoJdGhpcy5nZXRCdWZmZXIoZnVuY3Rpb24gKHJlc3VsdCkgewoJCXZhciBibG9iID0gdGhhdC5fYnVmZmVyVG9CbG9iKHJlc3VsdCk7CgkJY2IoYmxvYik7Cgl9LCBvcHRpb25zKTsKfTsKCkRvY3VtZW50LnByb3RvdHlwZS5nZXRCdWZmZXIgPSBmdW5jdGlvbiAoY2IsIG9wdGlvbnMpIHsKCWlmICghY2IpIHsKCQl0aHJvdyAnZ2V0QnVmZmVyIGlzIGFuIGFzeW5jIG1ldGhvZCBhbmQgbmVlZHMgYSBjYWxsYmFjayBhcmd1bWVudCc7Cgl9Cgl0aGlzLl9jcmVhdGVEb2Mob3B0aW9ucywgZnVuY3Rpb24gKGJ1ZmZlcikgewoJCWNiKGJ1ZmZlcik7Cgl9KTsKfTsKCm1vZHVsZS5leHBvcnRzID0gewoJY3JlYXRlUGRmOiBmdW5jdGlvbiAoZG9jRGVmaW5pdGlvbikgewoJCWlmICghY2FuQ3JlYXRlUGRmKCkpIHsKCQkJdGhyb3cgJ1lvdXIgYnJvd3NlciBkb2VzIG5vdCBwcm92aWRlIHRoZSBsZXZlbCBvZiBzdXBwb3J0IG5lZWRlZCc7CgkJfQoJCXJldHVybiBuZXcgRG9jdW1lbnQoZG9jRGVmaW5pdGlvbiwgZ2xvYmFsLnBkZk1ha2UudGFibGVMYXlvdXRzLCBnbG9iYWwucGRmTWFrZS5mb250cywgZ2xvYmFsLnBkZk1ha2UudmZzKTsKCX0KfTsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpLkJ1ZmZlciwgX193ZWJwYWNrX3JlcXVpcmVfXyg3KSkpCgovKioqLyB9KSwKLyogMTI0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgpleHBvcnRzLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoCmV4cG9ydHMudG9CeXRlQXJyYXkgPSB0b0J5dGVBcnJheQpleHBvcnRzLmZyb21CeXRlQXJyYXkgPSBmcm9tQnl0ZUFycmF5Cgp2YXIgbG9va3VwID0gW10KdmFyIHJldkxvb2t1cCA9IFtdCnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXkKCnZhciBjb2RlID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nCmZvciAodmFyIGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7CiAgbG9va3VwW2ldID0gY29kZVtpXQogIHJldkxvb2t1cFtjb2RlLmNoYXJDb2RlQXQoaSldID0gaQp9CgovLyBTdXBwb3J0IGRlY29kaW5nIFVSTC1zYWZlIGJhc2U2NCBzdHJpbmdzLCBhcyBOb2RlLmpzIGRvZXMuCi8vIFNlZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzZTY0I1VSTF9hcHBsaWNhdGlvbnMKcmV2TG9va3VwWyctJy5jaGFyQ29kZUF0KDApXSA9IDYyCnJldkxvb2t1cFsnXycuY2hhckNvZGVBdCgwKV0gPSA2MwoKZnVuY3Rpb24gcGxhY2VIb2xkZXJzQ291bnQgKGI2NCkgewogIHZhciBsZW4gPSBiNjQubGVuZ3RoCiAgaWYgKGxlbiAlIDQgPiAwKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQnKQogIH0KCiAgLy8gdGhlIG51bWJlciBvZiBlcXVhbCBzaWducyAocGxhY2UgaG9sZGVycykKICAvLyBpZiB0aGVyZSBhcmUgdHdvIHBsYWNlaG9sZGVycywgdGhhbiB0aGUgdHdvIGNoYXJhY3RlcnMgYmVmb3JlIGl0CiAgLy8gcmVwcmVzZW50IG9uZSBieXRlCiAgLy8gaWYgdGhlcmUgaXMgb25seSBvbmUsIHRoZW4gdGhlIHRocmVlIGNoYXJhY3RlcnMgYmVmb3JlIGl0IHJlcHJlc2VudCAyIGJ5dGVzCiAgLy8gdGhpcyBpcyBqdXN0IGEgY2hlYXAgaGFjayB0byBub3QgZG8gaW5kZXhPZiB0d2ljZQogIHJldHVybiBiNjRbbGVuIC0gMl0gPT09ICc9JyA/IDIgOiBiNjRbbGVuIC0gMV0gPT09ICc9JyA/IDEgOiAwCn0KCmZ1bmN0aW9uIGJ5dGVMZW5ndGggKGI2NCkgewogIC8vIGJhc2U2NCBpcyA0LzMgKyB1cCB0byB0d28gY2hhcmFjdGVycyBvZiB0aGUgb3JpZ2luYWwgZGF0YQogIHJldHVybiAoYjY0Lmxlbmd0aCAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0NvdW50KGI2NCkKfQoKZnVuY3Rpb24gdG9CeXRlQXJyYXkgKGI2NCkgewogIHZhciBpLCBsLCB0bXAsIHBsYWNlSG9sZGVycywgYXJyCiAgdmFyIGxlbiA9IGI2NC5sZW5ndGgKICBwbGFjZUhvbGRlcnMgPSBwbGFjZUhvbGRlcnNDb3VudChiNjQpCgogIGFyciA9IG5ldyBBcnIoKGxlbiAqIDMgLyA0KSAtIHBsYWNlSG9sZGVycykKCiAgLy8gaWYgdGhlcmUgYXJlIHBsYWNlaG9sZGVycywgb25seSBnZXQgdXAgdG8gdGhlIGxhc3QgY29tcGxldGUgNCBjaGFycwogIGwgPSBwbGFjZUhvbGRlcnMgPiAwID8gbGVuIC0gNCA6IGxlbgoKICB2YXIgTCA9IDAKCiAgZm9yIChpID0gMDsgaSA8IGw7IGkgKz0gNCkgewogICAgdG1wID0gKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTgpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDEyKSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA8PCA2KSB8IHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMyldCiAgICBhcnJbTCsrXSA9ICh0bXAgPj4gMTYpICYgMHhGRgogICAgYXJyW0wrK10gPSAodG1wID4+IDgpICYgMHhGRgogICAgYXJyW0wrK10gPSB0bXAgJiAweEZGCiAgfQoKICBpZiAocGxhY2VIb2xkZXJzID09PSAyKSB7CiAgICB0bXAgPSAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAyKSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA+PiA0KQogICAgYXJyW0wrK10gPSB0bXAgJiAweEZGCiAgfSBlbHNlIGlmIChwbGFjZUhvbGRlcnMgPT09IDEpIHsKICAgIHRtcCA9IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDEwKSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCA0KSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA+PiAyKQogICAgYXJyW0wrK10gPSAodG1wID4+IDgpICYgMHhGRgogICAgYXJyW0wrK10gPSB0bXAgJiAweEZGCiAgfQoKICByZXR1cm4gYXJyCn0KCmZ1bmN0aW9uIHRyaXBsZXRUb0Jhc2U2NCAobnVtKSB7CiAgcmV0dXJuIGxvb2t1cFtudW0gPj4gMTggJiAweDNGXSArIGxvb2t1cFtudW0gPj4gMTIgJiAweDNGXSArIGxvb2t1cFtudW0gPj4gNiAmIDB4M0ZdICsgbG9va3VwW251bSAmIDB4M0ZdCn0KCmZ1bmN0aW9uIGVuY29kZUNodW5rICh1aW50OCwgc3RhcnQsIGVuZCkgewogIHZhciB0bXAKICB2YXIgb3V0cHV0ID0gW10KICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gMykgewogICAgdG1wID0gKCh1aW50OFtpXSA8PCAxNikgJiAweEZGMDAwMCkgKyAoKHVpbnQ4W2kgKyAxXSA8PCA4KSAmIDB4RkYwMCkgKyAodWludDhbaSArIDJdICYgMHhGRikKICAgIG91dHB1dC5wdXNoKHRyaXBsZXRUb0Jhc2U2NCh0bXApKQogIH0KICByZXR1cm4gb3V0cHV0LmpvaW4oJycpCn0KCmZ1bmN0aW9uIGZyb21CeXRlQXJyYXkgKHVpbnQ4KSB7CiAgdmFyIHRtcAogIHZhciBsZW4gPSB1aW50OC5sZW5ndGgKICB2YXIgZXh0cmFCeXRlcyA9IGxlbiAlIDMgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXMKICB2YXIgb3V0cHV0ID0gJycKICB2YXIgcGFydHMgPSBbXQogIHZhciBtYXhDaHVua0xlbmd0aCA9IDE2MzgzIC8vIG11c3QgYmUgbXVsdGlwbGUgb2YgMwoKICAvLyBnbyB0aHJvdWdoIHRoZSBhcnJheSBldmVyeSB0aHJlZSBieXRlcywgd2UnbGwgZGVhbCB3aXRoIHRyYWlsaW5nIHN0dWZmIGxhdGVyCiAgZm9yICh2YXIgaSA9IDAsIGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzOyBpIDwgbGVuMjsgaSArPSBtYXhDaHVua0xlbmd0aCkgewogICAgcGFydHMucHVzaChlbmNvZGVDaHVuayh1aW50OCwgaSwgKGkgKyBtYXhDaHVua0xlbmd0aCkgPiBsZW4yID8gbGVuMiA6IChpICsgbWF4Q2h1bmtMZW5ndGgpKSkKICB9CgogIC8vIHBhZCB0aGUgZW5kIHdpdGggemVyb3MsIGJ1dCBtYWtlIHN1cmUgdG8gbm90IGZvcmdldCB0aGUgZXh0cmEgYnl0ZXMKICBpZiAoZXh0cmFCeXRlcyA9PT0gMSkgewogICAgdG1wID0gdWludDhbbGVuIC0gMV0KICAgIG91dHB1dCArPSBsb29rdXBbdG1wID4+IDJdCiAgICBvdXRwdXQgKz0gbG9va3VwWyh0bXAgPDwgNCkgJiAweDNGXQogICAgb3V0cHV0ICs9ICc9PScKICB9IGVsc2UgaWYgKGV4dHJhQnl0ZXMgPT09IDIpIHsKICAgIHRtcCA9ICh1aW50OFtsZW4gLSAyXSA8PCA4KSArICh1aW50OFtsZW4gLSAxXSkKICAgIG91dHB1dCArPSBsb29rdXBbdG1wID4+IDEwXQogICAgb3V0cHV0ICs9IGxvb2t1cFsodG1wID4+IDQpICYgMHgzRl0KICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA8PCAyKSAmIDB4M0ZdCiAgICBvdXRwdXQgKz0gJz0nCiAgfQoKICBwYXJ0cy5wdXNoKG91dHB1dCkKCiAgcmV0dXJuIHBhcnRzLmpvaW4oJycpCn0KCgovKioqLyB9KSwKLyogMTI1ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCmV4cG9ydHMucmVhZCA9IGZ1bmN0aW9uIChidWZmZXIsIG9mZnNldCwgaXNMRSwgbUxlbiwgbkJ5dGVzKSB7CiAgdmFyIGUsIG0KICB2YXIgZUxlbiA9IG5CeXRlcyAqIDggLSBtTGVuIC0gMQogIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxCiAgdmFyIGVCaWFzID0gZU1heCA+PiAxCiAgdmFyIG5CaXRzID0gLTcKICB2YXIgaSA9IGlzTEUgPyAobkJ5dGVzIC0gMSkgOiAwCiAgdmFyIGQgPSBpc0xFID8gLTEgOiAxCiAgdmFyIHMgPSBidWZmZXJbb2Zmc2V0ICsgaV0KCiAgaSArPSBkCgogIGUgPSBzICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpCiAgcyA+Pj0gKC1uQml0cykKICBuQml0cyArPSBlTGVuCiAgZm9yICg7IG5CaXRzID4gMDsgZSA9IGUgKiAyNTYgKyBidWZmZXJbb2Zmc2V0ICsgaV0sIGkgKz0gZCwgbkJpdHMgLT0gOCkge30KCiAgbSA9IGUgJiAoKDEgPDwgKC1uQml0cykpIC0gMSkKICBlID4+PSAoLW5CaXRzKQogIG5CaXRzICs9IG1MZW4KICBmb3IgKDsgbkJpdHMgPiAwOyBtID0gbSAqIDI1NiArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fQoKICBpZiAoZSA9PT0gMCkgewogICAgZSA9IDEgLSBlQmlhcwogIH0gZWxzZSBpZiAoZSA9PT0gZU1heCkgewogICAgcmV0dXJuIG0gPyBOYU4gOiAoKHMgPyAtMSA6IDEpICogSW5maW5pdHkpCiAgfSBlbHNlIHsKICAgIG0gPSBtICsgTWF0aC5wb3coMiwgbUxlbikKICAgIGUgPSBlIC0gZUJpYXMKICB9CiAgcmV0dXJuIChzID8gLTEgOiAxKSAqIG0gKiBNYXRoLnBvdygyLCBlIC0gbUxlbikKfQoKZXhwb3J0cy53cml0ZSA9IGZ1bmN0aW9uIChidWZmZXIsIHZhbHVlLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykgewogIHZhciBlLCBtLCBjCiAgdmFyIGVMZW4gPSBuQnl0ZXMgKiA4IC0gbUxlbiAtIDEKICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMQogIHZhciBlQmlhcyA9IGVNYXggPj4gMQogIHZhciBydCA9IChtTGVuID09PSAyMyA/IE1hdGgucG93KDIsIC0yNCkgLSBNYXRoLnBvdygyLCAtNzcpIDogMCkKICB2YXIgaSA9IGlzTEUgPyAwIDogKG5CeXRlcyAtIDEpCiAgdmFyIGQgPSBpc0xFID8gMSA6IC0xCiAgdmFyIHMgPSB2YWx1ZSA8IDAgfHwgKHZhbHVlID09PSAwICYmIDEgLyB2YWx1ZSA8IDApID8gMSA6IDAKCiAgdmFsdWUgPSBNYXRoLmFicyh2YWx1ZSkKCiAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gSW5maW5pdHkpIHsKICAgIG0gPSBpc05hTih2YWx1ZSkgPyAxIDogMAogICAgZSA9IGVNYXgKICB9IGVsc2UgewogICAgZSA9IE1hdGguZmxvb3IoTWF0aC5sb2codmFsdWUpIC8gTWF0aC5MTjIpCiAgICBpZiAodmFsdWUgKiAoYyA9IE1hdGgucG93KDIsIC1lKSkgPCAxKSB7CiAgICAgIGUtLQogICAgICBjICo9IDIKICAgIH0KICAgIGlmIChlICsgZUJpYXMgPj0gMSkgewogICAgICB2YWx1ZSArPSBydCAvIGMKICAgIH0gZWxzZSB7CiAgICAgIHZhbHVlICs9IHJ0ICogTWF0aC5wb3coMiwgMSAtIGVCaWFzKQogICAgfQogICAgaWYgKHZhbHVlICogYyA+PSAyKSB7CiAgICAgIGUrKwogICAgICBjIC89IDIKICAgIH0KCiAgICBpZiAoZSArIGVCaWFzID49IGVNYXgpIHsKICAgICAgbSA9IDAKICAgICAgZSA9IGVNYXgKICAgIH0gZWxzZSBpZiAoZSArIGVCaWFzID49IDEpIHsKICAgICAgbSA9ICh2YWx1ZSAqIGMgLSAxKSAqIE1hdGgucG93KDIsIG1MZW4pCiAgICAgIGUgPSBlICsgZUJpYXMKICAgIH0gZWxzZSB7CiAgICAgIG0gPSB2YWx1ZSAqIE1hdGgucG93KDIsIGVCaWFzIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKQogICAgICBlID0gMAogICAgfQogIH0KCiAgZm9yICg7IG1MZW4gPj0gODsgYnVmZmVyW29mZnNldCArIGldID0gbSAmIDB4ZmYsIGkgKz0gZCwgbSAvPSAyNTYsIG1MZW4gLT0gOCkge30KCiAgZSA9IChlIDw8IG1MZW4pIHwgbQogIGVMZW4gKz0gbUxlbgogIGZvciAoOyBlTGVuID4gMDsgYnVmZmVyW29mZnNldCArIGldID0gZSAmIDB4ZmYsIGkgKz0gZCwgZSAvPSAyNTYsIGVMZW4gLT0gOCkge30KCiAgYnVmZmVyW29mZnNldCArIGkgLSBkXSB8PSBzICogMTI4Cn0KCgovKioqLyB9KSwKLyogMTI2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKLyplc2xpbnQgbm8tdW51c2VkLXZhcnM6IFsiZXJyb3IiLCB7ImFyZ3MiOiAibm9uZSJ9XSovCgoKdmFyIEZvbnRQcm92aWRlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTI3KTsKdmFyIExheW91dEJ1aWxkZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyOCk7CnZhciBQZGZLaXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzOCk7CnZhciBzaXplcyA9IF9fd2VicGFja19yZXF1aXJlX18oMzAzKTsKdmFyIEltYWdlTWVhc3VyZSA9IF9fd2VicGFja19yZXF1aXJlX18oMzA0KTsKdmFyIHRleHREZWNvcmF0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwNSk7CnZhciBUZXh0VG9vbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQyKTsKdmFyIGlzRnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzRnVuY3Rpb247CnZhciBpc1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNTdHJpbmc7CnZhciBpc051bWJlciA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNOdW1iZXI7CnZhciBpc0Jvb2xlYW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzQm9vbGVhbjsKdmFyIGlzQXJyYXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzQXJyYXk7CgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vIFBkZlByaW50ZXIKCi8qKgogKiBAY2xhc3MgQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBhIFBkZlByaW50ZXIgd2hpY2ggdHVybnMgZG9jdW1lbnQgZGVmaW5pdGlvbiBpbnRvIGEgcGRmCiAqCiAqIEBwYXJhbSB7T2JqZWN0fSBmb250RGVzY3JpcHRvcnMgZm9udCBkZWZpbml0aW9uIGRpY3Rpb25hcnkKICoKICogQGV4YW1wbGUKICogdmFyIGZvbnREZXNjcmlwdG9ycyA9IHsKICoJUm9ib3RvOiB7CiAqCQlub3JtYWw6ICdmb250cy9Sb2JvdG8tUmVndWxhci50dGYnLAogKgkJYm9sZDogJ2ZvbnRzL1JvYm90by1NZWRpdW0udHRmJywKICoJCWl0YWxpY3M6ICdmb250cy9Sb2JvdG8tSXRhbGljLnR0ZicsCiAqCQlib2xkaXRhbGljczogJ2ZvbnRzL1JvYm90by1NZWRpdW1JdGFsaWMudHRmJwogKgl9CiAqIH07CiAqCiAqIHZhciBwcmludGVyID0gbmV3IFBkZlByaW50ZXIoZm9udERlc2NyaXB0b3JzKTsKICovCmZ1bmN0aW9uIFBkZlByaW50ZXIoZm9udERlc2NyaXB0b3JzKSB7Cgl0aGlzLmZvbnREZXNjcmlwdG9ycyA9IGZvbnREZXNjcmlwdG9yczsKfQoKLyoqCiAqIEV4ZWN1dGVzIGxheW91dCBlbmdpbmUgZm9yIHRoZSBzcGVjaWZpZWQgZG9jdW1lbnQgYW5kIHJlbmRlcnMgaXQgaW50byBhIHBkZmtpdCBkb2N1bWVudAogKiByZWFkeSB0byBiZSBzYXZlZC4KICoKICogQHBhcmFtIHtPYmplY3R9IGRvY0RlZmluaXRpb24gZG9jdW1lbnQgZGVmaW5pdGlvbgogKiBAcGFyYW0ge09iamVjdH0gZG9jRGVmaW5pdGlvbi5jb250ZW50IGFuIGFycmF5IGRlc2NyaWJpbmcgdGhlIHBkZiBzdHJ1Y3R1cmUgKGZvciBtb3JlIGluZm9ybWF0aW9uIHRha2UgYSBsb29rIGF0IHRoZSBleGFtcGxlcyBpbiB0aGUgL2V4YW1wbGVzIGZvbGRlcikKICogQHBhcmFtIHtPYmplY3R9IFtkb2NEZWZpbml0aW9uLmRlZmF1bHRTdHlsZV0gZGVmYXVsdCAoaW1wbGljaXQpIHN0eWxlIGRlZmluaXRpb24KICogQHBhcmFtIHtPYmplY3R9IFtkb2NEZWZpbml0aW9uLnN0eWxlc10gZGljdGlvbmFyeSBkZWZpbmluZyBhbGwgc3R5bGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBkb2N1bWVudAogKiBAcGFyYW0ge09iamVjdH0gW2RvY0RlZmluaXRpb24ucGFnZVNpemVdIHBhZ2Ugc2l6ZSAocGRma2l0IHVuaXRzLCBBNCBkaW1lbnNpb25zIGJ5IGRlZmF1bHQpCiAqIEBwYXJhbSB7TnVtYmVyfSBkb2NEZWZpbml0aW9uLnBhZ2VTaXplLndpZHRoIHdpZHRoCiAqIEBwYXJhbSB7TnVtYmVyfSBkb2NEZWZpbml0aW9uLnBhZ2VTaXplLmhlaWdodCBoZWlnaHQKICogQHBhcmFtIHtPYmplY3R9IFtkb2NEZWZpbml0aW9uLnBhZ2VNYXJnaW5zXSBwYWdlIG1hcmdpbnMgKHBkZmtpdCB1bml0cykKICogQHBhcmFtIHtOdW1iZXJ9IGRvY0RlZmluaXRpb24ubWF4UGFnZXNOdW1iZXIgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMgdG8gcmVuZGVyCiAqCiAqIEBleGFtcGxlCiAqCiAqIHZhciBkb2NEZWZpbml0aW9uID0gewogKiAJaW5mbzogewogKgkJdGl0bGU6ICdhd2Vzb21lIERvY3VtZW50JywKICoJCWF1dGhvcjogJ2pvaG4gZG9lJywKICoJCXN1YmplY3Q6ICdzdWJqZWN0IG9mIGRvY3VtZW50JywKICoJCWtleXdvcmRzOiAna2V5d29yZHMgZm9yIGRvY3VtZW50JywKICogCX0sCiAqCWNvbnRlbnQ6IFsKICoJCSdGaXJzdCBwYXJhZ3JhcGgnLAogKgkJJ1NlY29uZCBwYXJhZ3JhcGgsIHRoaXMgdGltZSBhIGxpdHRsZSBiaXQgbG9uZ2VyJywKICoJCXsgdGV4dDogJ1RoaXJkIHBhcmFncmFwaCwgc2xpZ2h0bHkgYmlnZ2VyIGZvbnQgc2l6ZScsIGZvbnRTaXplOiAyMCB9LAogKgkJeyB0ZXh0OiAnQW5vdGhlciBwYXJhZ3JhcGggdXNpbmcgYSBuYW1lZCBzdHlsZScsIHN0eWxlOiAnaGVhZGVyJyB9LAogKgkJeyB0ZXh0OiBbJ3BsYXlpbmcgd2l0aCAnLCAnaW5saW5lcycgXSB9LAogKgkJeyB0ZXh0OiBbJ2FuZCAnLCB7IHRleHQ6ICdyZXN0eWxpbmcgJywgYm9sZDogdHJ1ZSB9LCAndGhlbSddIH0sCiAqCV0sCiAqCXN0eWxlczogewogKgkJaGVhZGVyOiB7IGZvbnRTaXplOiAzMCwgYm9sZDogdHJ1ZSB9CiAqCX0KICogfQogKgogKiB2YXIgcGRmS2l0RG9jID0gcHJpbnRlci5jcmVhdGVQZGZLaXREb2N1bWVudChkb2NEZWZpbml0aW9uKTsKICoKICogcGRmS2l0RG9jLnBpcGUoZnMuY3JlYXRlV3JpdGVTdHJlYW0oJ3NhbXBsZS5wZGYnKSk7CiAqIHBkZktpdERvYy5lbmQoKTsKICoKICogQHJldHVybiB7T2JqZWN0fSBhIHBkZktpdCBkb2N1bWVudCBvYmplY3Qgd2hpY2ggY2FuIGJlIHNhdmVkIG9yIGVuY29kZSB0byBkYXRhLXVybAogKi8KUGRmUHJpbnRlci5wcm90b3R5cGUuY3JlYXRlUGRmS2l0RG9jdW1lbnQgPSBmdW5jdGlvbiAoZG9jRGVmaW5pdGlvbiwgb3B0aW9ucykgewoJb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CgoJdmFyIHBhZ2VTaXplID0gZml4UGFnZVNpemUoZG9jRGVmaW5pdGlvbi5wYWdlU2l6ZSwgZG9jRGVmaW5pdGlvbi5wYWdlT3JpZW50YXRpb24pOwoJdmFyIGNvbXByZXNzUGRmID0gaXNCb29sZWFuKGRvY0RlZmluaXRpb24uY29tcHJlc3MpID8gZG9jRGVmaW5pdGlvbi5jb21wcmVzcyA6IHRydWU7CgoJdGhpcy5wZGZLaXREb2MgPSBuZXcgUGRmS2l0KHtzaXplOiBbcGFnZVNpemUud2lkdGgsIHBhZ2VTaXplLmhlaWdodF0sIGF1dG9GaXJzdFBhZ2U6IGZhbHNlLCBjb21wcmVzczogY29tcHJlc3NQZGZ9KTsKCXNldE1ldGFkYXRhKGRvY0RlZmluaXRpb24sIHRoaXMucGRmS2l0RG9jKTsKCgl0aGlzLmZvbnRQcm92aWRlciA9IG5ldyBGb250UHJvdmlkZXIodGhpcy5mb250RGVzY3JpcHRvcnMsIHRoaXMucGRmS2l0RG9jKTsKCglkb2NEZWZpbml0aW9uLmltYWdlcyA9IGRvY0RlZmluaXRpb24uaW1hZ2VzIHx8IHt9OwoKCXZhciBidWlsZGVyID0gbmV3IExheW91dEJ1aWxkZXIocGFnZVNpemUsIGZpeFBhZ2VNYXJnaW5zKGRvY0RlZmluaXRpb24ucGFnZU1hcmdpbnMgfHwgNDApLCBuZXcgSW1hZ2VNZWFzdXJlKHRoaXMucGRmS2l0RG9jLCBkb2NEZWZpbml0aW9uLmltYWdlcykpOwoKCXJlZ2lzdGVyRGVmYXVsdFRhYmxlTGF5b3V0cyhidWlsZGVyKTsKCWlmIChvcHRpb25zLnRhYmxlTGF5b3V0cykgewoJCWJ1aWxkZXIucmVnaXN0ZXJUYWJsZUxheW91dHMob3B0aW9ucy50YWJsZUxheW91dHMpOwoJfQoKCXZhciBwYWdlcyA9IGJ1aWxkZXIubGF5b3V0RG9jdW1lbnQoZG9jRGVmaW5pdGlvbi5jb250ZW50LCB0aGlzLmZvbnRQcm92aWRlciwgZG9jRGVmaW5pdGlvbi5zdHlsZXMgfHwge30sIGRvY0RlZmluaXRpb24uZGVmYXVsdFN0eWxlIHx8IHtmb250U2l6ZTogMTIsIGZvbnQ6ICdSb2JvdG8nfSwgZG9jRGVmaW5pdGlvbi5iYWNrZ3JvdW5kLCBkb2NEZWZpbml0aW9uLmhlYWRlciwgZG9jRGVmaW5pdGlvbi5mb290ZXIsIGRvY0RlZmluaXRpb24uaW1hZ2VzLCBkb2NEZWZpbml0aW9uLndhdGVybWFyaywgZG9jRGVmaW5pdGlvbi5wYWdlQnJlYWtCZWZvcmUpOwoJdmFyIG1heE51bWJlclBhZ2VzID0gZG9jRGVmaW5pdGlvbi5tYXhQYWdlc051bWJlciB8fCAtMTsKCWlmIChpc051bWJlcihtYXhOdW1iZXJQYWdlcykgJiYgbWF4TnVtYmVyUGFnZXMgPiAtMSkgewoJCXBhZ2VzID0gcGFnZXMuc2xpY2UoMCwgbWF4TnVtYmVyUGFnZXMpOwoJfQoKCS8vIGlmIHBhZ2VTaXplLmhlaWdodCBpcyBzZXQgdG8gSW5maW5pdHksIGNhbGN1bGF0ZSB0aGUgYWN0dWFsIGhlaWdodCBvZiB0aGUgcGFnZSB0aGF0CgkvLyB3YXMgbGFpZCBvdXQgdXNpbmcgdGhlIGhlaWdodCBvZiBlYWNoIG9mIHRoZSBpdGVtcyBpbiB0aGUgcGFnZS4KCWlmIChwYWdlU2l6ZS5oZWlnaHQgPT09IEluZmluaXR5KSB7CgkJdmFyIHBhZ2VIZWlnaHQgPSBjYWxjdWxhdGVQYWdlSGVpZ2h0KHBhZ2VzLCBkb2NEZWZpbml0aW9uLnBhZ2VNYXJnaW5zKTsKCQl0aGlzLnBkZktpdERvYy5vcHRpb25zLnNpemUgPSBbcGFnZVNpemUud2lkdGgsIHBhZ2VIZWlnaHRdOwoJfQoKCXJlbmRlclBhZ2VzKHBhZ2VzLCB0aGlzLmZvbnRQcm92aWRlciwgdGhpcy5wZGZLaXREb2MsIG9wdGlvbnMucHJvZ3Jlc3NDYWxsYmFjayk7CgoJaWYgKG9wdGlvbnMuYXV0b1ByaW50KSB7CgkJdmFyIHByaW50QWN0aW9uUmVmID0gdGhpcy5wZGZLaXREb2MucmVmKHsKCQkJVHlwZTogJ0FjdGlvbicsCgkJCVM6ICdOYW1lZCcsCgkJCU46ICdQcmludCcKCQl9KTsKCQl0aGlzLnBkZktpdERvYy5fcm9vdC5kYXRhLk9wZW5BY3Rpb24gPSBwcmludEFjdGlvblJlZjsKCQlwcmludEFjdGlvblJlZi5lbmQoKTsKCX0KCXJldHVybiB0aGlzLnBkZktpdERvYzsKfTsKCmZ1bmN0aW9uIHNldE1ldGFkYXRhKGRvY0RlZmluaXRpb24sIHBkZktpdERvYykgewoJLy8gUERGIHN0YW5kYXJkIGhhcyB0aGVzZSBwcm9wZXJ0aWVzIHJlc2VydmVkOiBUaXRsZSwgQXV0aG9yLCBTdWJqZWN0LCBLZXl3b3JkcywKCS8vIENyZWF0b3IsIFByb2R1Y2VyLCBDcmVhdGlvbkRhdGUsIE1vZERhdGUsIFRyYXBwZWQuCgkvLyBUbyBrZWVwIHRoZSBwZGZtYWtlIGFwaSBjb25zaXN0ZW50LCB0aGUgaW5mbyBmaWVsZCBhcmUgZGVmaW5lZCBsb3dlcmNhc2UuCgkvLyBDdXN0b20gcHJvcGVydGllcyBkb24ndCBjb250YWluIGEgc3BhY2UuCglmdW5jdGlvbiBzdGFuZGFyZGl6ZVByb3BlcnR5S2V5KGtleSkgewoJCXZhciBzdGFuZGFyZFByb3BlcnRpZXMgPSBbJ1RpdGxlJywgJ0F1dGhvcicsICdTdWJqZWN0JywgJ0tleXdvcmRzJywKCQkJJ0NyZWF0b3InLCAnUHJvZHVjZXInLCAnQ3JlYXRpb25EYXRlJywgJ01vZERhdGUnLCAnVHJhcHBlZCddOwoJCXZhciBzdGFuZGFyZGl6ZWRLZXkgPSBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc2xpY2UoMSk7CgkJaWYgKHN0YW5kYXJkUHJvcGVydGllcy5pbmRleE9mKHN0YW5kYXJkaXplZEtleSkgIT09IC0xKSB7CgkJCXJldHVybiBzdGFuZGFyZGl6ZWRLZXk7CgkJfQoKCQlyZXR1cm4ga2V5LnJlcGxhY2UoL1xzKy9nLCAnJyk7Cgl9CgoJcGRmS2l0RG9jLmluZm8uUHJvZHVjZXIgPSAncGRmbWFrZSc7CglwZGZLaXREb2MuaW5mby5DcmVhdG9yID0gJ3BkZm1ha2UnOwoKCWlmIChkb2NEZWZpbml0aW9uLmluZm8pIHsKCQlmb3IgKHZhciBrZXkgaW4gZG9jRGVmaW5pdGlvbi5pbmZvKSB7CgkJCXZhciB2YWx1ZSA9IGRvY0RlZmluaXRpb24uaW5mb1trZXldOwoJCQlpZiAodmFsdWUpIHsKCQkJCWtleSA9IHN0YW5kYXJkaXplUHJvcGVydHlLZXkoa2V5KTsKCQkJCXBkZktpdERvYy5pbmZvW2tleV0gPSB2YWx1ZTsKCQkJfQoJCX0KCX0KfQoKZnVuY3Rpb24gY2FsY3VsYXRlUGFnZUhlaWdodChwYWdlcywgbWFyZ2lucykgewoJZnVuY3Rpb24gZ2V0SXRlbUhlaWdodChpdGVtKSB7CgkJaWYgKGlzRnVuY3Rpb24oaXRlbS5pdGVtLmdldEhlaWdodCkpIHsKCQkJcmV0dXJuIGl0ZW0uaXRlbS5nZXRIZWlnaHQoKTsKCQl9IGVsc2UgaWYgKGl0ZW0uaXRlbS5faGVpZ2h0KSB7CgkJCXJldHVybiBpdGVtLml0ZW0uX2hlaWdodDsKCQl9IGVsc2UgewoJCQkvLyBUT0RPOiBhZGQgc3VwcG9ydCBmb3IgbmV4dCBpdGVtIHR5cGVzCgkJCXJldHVybiAwOwoJCX0KCX0KCgl2YXIgZml4ZWRNYXJnaW5zID0gZml4UGFnZU1hcmdpbnMobWFyZ2lucyB8fCA0MCk7Cgl2YXIgaGVpZ2h0ID0gZml4ZWRNYXJnaW5zLnRvcCArIGZpeGVkTWFyZ2lucy5ib3R0b207CglwYWdlcy5mb3JFYWNoKGZ1bmN0aW9uIChwYWdlKSB7CgkJcGFnZS5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CgkJCWhlaWdodCArPSBnZXRJdGVtSGVpZ2h0KGl0ZW0pOwoJCX0pOwoJfSk7CglyZXR1cm4gaGVpZ2h0Owp9CgpmdW5jdGlvbiBmaXhQYWdlU2l6ZShwYWdlU2l6ZSwgcGFnZU9yaWVudGF0aW9uKSB7CglmdW5jdGlvbiBpc05lZWRTd2FwUGFnZVNpemVzKHBhZ2VPcmllbnRhdGlvbikgewoJCWlmIChpc1N0cmluZyhwYWdlT3JpZW50YXRpb24pKSB7CgkJCXBhZ2VPcmllbnRhdGlvbiA9IHBhZ2VPcmllbnRhdGlvbi50b0xvd2VyQ2FzZSgpOwoJCQlyZXR1cm4gKChwYWdlT3JpZW50YXRpb24gPT09ICdwb3J0cmFpdCcpICYmIChzaXplLndpZHRoID4gc2l6ZS5oZWlnaHQpKSB8fAoJCQkJKChwYWdlT3JpZW50YXRpb24gPT09ICdsYW5kc2NhcGUnKSAmJiAoc2l6ZS53aWR0aCA8IHNpemUuaGVpZ2h0KSk7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvLyBpZiBwYWdlU2l6ZS5oZWlnaHQgaXMgc2V0IHRvIGF1dG8sIHNldCB0aGUgaGVpZ2h0IHRvIGluZmluaXR5IHNvIHRoZXJlIGFyZSBubyBwYWdlIGJyZWFrcy4KCWlmIChwYWdlU2l6ZSAmJiBwYWdlU2l6ZS5oZWlnaHQgPT09ICdhdXRvJykgewoJCXBhZ2VTaXplLmhlaWdodCA9IEluZmluaXR5OwoJfQoKCXZhciBzaXplID0gcGFnZVNpemUyd2lkdGhBbmRIZWlnaHQocGFnZVNpemUgfHwgJ0E0Jyk7CglpZiAoaXNOZWVkU3dhcFBhZ2VTaXplcyhwYWdlT3JpZW50YXRpb24pKSB7IC8vIHN3YXAgcGFnZSBzaXplcwoJCXNpemUgPSB7d2lkdGg6IHNpemUuaGVpZ2h0LCBoZWlnaHQ6IHNpemUud2lkdGh9OwoJfQoJc2l6ZS5vcmllbnRhdGlvbiA9IHNpemUud2lkdGggPiBzaXplLmhlaWdodCA/ICdsYW5kc2NhcGUnIDogJ3BvcnRyYWl0JzsKCXJldHVybiBzaXplOwp9CgpmdW5jdGlvbiBmaXhQYWdlTWFyZ2lucyhtYXJnaW4pIHsKCWlmICghbWFyZ2luKSB7CgkJcmV0dXJuIG51bGw7Cgl9CgoJaWYgKGlzTnVtYmVyKG1hcmdpbikpIHsKCQltYXJnaW4gPSB7bGVmdDogbWFyZ2luLCByaWdodDogbWFyZ2luLCB0b3A6IG1hcmdpbiwgYm90dG9tOiBtYXJnaW59OwoJfSBlbHNlIGlmIChpc0FycmF5KG1hcmdpbikpIHsKCQlpZiAobWFyZ2luLmxlbmd0aCA9PT0gMikgewoJCQltYXJnaW4gPSB7bGVmdDogbWFyZ2luWzBdLCB0b3A6IG1hcmdpblsxXSwgcmlnaHQ6IG1hcmdpblswXSwgYm90dG9tOiBtYXJnaW5bMV19OwoJCX0gZWxzZSBpZiAobWFyZ2luLmxlbmd0aCA9PT0gNCkgewoJCQltYXJnaW4gPSB7bGVmdDogbWFyZ2luWzBdLCB0b3A6IG1hcmdpblsxXSwgcmlnaHQ6IG1hcmdpblsyXSwgYm90dG9tOiBtYXJnaW5bM119OwoJCX0gZWxzZSB7CgkJCXRocm93ICdJbnZhbGlkIHBhZ2VNYXJnaW5zIGRlZmluaXRpb24nOwoJCX0KCX0KCglyZXR1cm4gbWFyZ2luOwp9CgpmdW5jdGlvbiByZWdpc3RlckRlZmF1bHRUYWJsZUxheW91dHMobGF5b3V0QnVpbGRlcikgewoJbGF5b3V0QnVpbGRlci5yZWdpc3RlclRhYmxlTGF5b3V0cyh7CgkJbm9Cb3JkZXJzOiB7CgkJCWhMaW5lV2lkdGg6IGZ1bmN0aW9uIChpKSB7CgkJCQlyZXR1cm4gMDsKCQkJfSwKCQkJdkxpbmVXaWR0aDogZnVuY3Rpb24gKGkpIHsKCQkJCXJldHVybiAwOwoJCQl9LAoJCQlwYWRkaW5nTGVmdDogZnVuY3Rpb24gKGkpIHsKCQkJCXJldHVybiBpICYmIDQgfHwgMDsKCQkJfSwKCQkJcGFkZGluZ1JpZ2h0OiBmdW5jdGlvbiAoaSwgbm9kZSkgewoJCQkJcmV0dXJuIChpIDwgbm9kZS50YWJsZS53aWR0aHMubGVuZ3RoIC0gMSkgPyA0IDogMDsKCQkJfQoJCX0sCgkJaGVhZGVyTGluZU9ubHk6IHsKCQkJaExpbmVXaWR0aDogZnVuY3Rpb24gKGksIG5vZGUpIHsKCQkJCWlmIChpID09PSAwIHx8IGkgPT09IG5vZGUudGFibGUuYm9keS5sZW5ndGgpIHsKCQkJCQlyZXR1cm4gMDsKCQkJCX0KCQkJCXJldHVybiAoaSA9PT0gbm9kZS50YWJsZS5oZWFkZXJSb3dzKSA/IDIgOiAwOwoJCQl9LAoJCQl2TGluZVdpZHRoOiBmdW5jdGlvbiAoaSkgewoJCQkJcmV0dXJuIDA7CgkJCX0sCgkJCXBhZGRpbmdMZWZ0OiBmdW5jdGlvbiAoaSkgewoJCQkJcmV0dXJuIGkgPT09IDAgPyAwIDogODsKCQkJfSwKCQkJcGFkZGluZ1JpZ2h0OiBmdW5jdGlvbiAoaSwgbm9kZSkgewoJCQkJcmV0dXJuIChpID09PSBub2RlLnRhYmxlLndpZHRocy5sZW5ndGggLSAxKSA/IDAgOiA4OwoJCQl9CgkJfSwKCQlsaWdodEhvcml6b250YWxMaW5lczogewoJCQloTGluZVdpZHRoOiBmdW5jdGlvbiAoaSwgbm9kZSkgewoJCQkJaWYgKGkgPT09IDAgfHwgaSA9PT0gbm9kZS50YWJsZS5ib2R5Lmxlbmd0aCkgewoJCQkJCXJldHVybiAwOwoJCQkJfQoJCQkJcmV0dXJuIChpID09PSBub2RlLnRhYmxlLmhlYWRlclJvd3MpID8gMiA6IDE7CgkJCX0sCgkJCXZMaW5lV2lkdGg6IGZ1bmN0aW9uIChpKSB7CgkJCQlyZXR1cm4gMDsKCQkJfSwKCQkJaExpbmVDb2xvcjogZnVuY3Rpb24gKGkpIHsKCQkJCXJldHVybiBpID09PSAxID8gJ2JsYWNrJyA6ICcjYWFhJzsKCQkJfSwKCQkJcGFkZGluZ0xlZnQ6IGZ1bmN0aW9uIChpKSB7CgkJCQlyZXR1cm4gaSA9PT0gMCA/IDAgOiA4OwoJCQl9LAoJCQlwYWRkaW5nUmlnaHQ6IGZ1bmN0aW9uIChpLCBub2RlKSB7CgkJCQlyZXR1cm4gKGkgPT09IG5vZGUudGFibGUud2lkdGhzLmxlbmd0aCAtIDEpID8gMCA6IDg7CgkJCX0KCQl9Cgl9KTsKfQoKZnVuY3Rpb24gcGFnZVNpemUyd2lkdGhBbmRIZWlnaHQocGFnZVNpemUpIHsKCWlmIChpc1N0cmluZyhwYWdlU2l6ZSkpIHsKCQl2YXIgc2l6ZSA9IHNpemVzW3BhZ2VTaXplLnRvVXBwZXJDYXNlKCldOwoJCWlmICghc2l6ZSkgewoJCQl0aHJvdyAnUGFnZSBzaXplICcgKyBwYWdlU2l6ZSArICcgbm90IHJlY29nbml6ZWQnOwoJCX0KCQlyZXR1cm4ge3dpZHRoOiBzaXplWzBdLCBoZWlnaHQ6IHNpemVbMV19OwoJfQoKCXJldHVybiBwYWdlU2l6ZTsKfQoKZnVuY3Rpb24gdXBkYXRlUGFnZU9yaWVudGF0aW9uSW5PcHRpb25zKGN1cnJlbnRQYWdlLCBwZGZLaXREb2MpIHsKCXZhciBwcmV2aW91c1BhZ2VPcmllbnRhdGlvbiA9IHBkZktpdERvYy5vcHRpb25zLnNpemVbMF0gPiBwZGZLaXREb2Mub3B0aW9ucy5zaXplWzFdID8gJ2xhbmRzY2FwZScgOiAncG9ydHJhaXQnOwoKCWlmIChjdXJyZW50UGFnZS5wYWdlU2l6ZS5vcmllbnRhdGlvbiAhPT0gcHJldmlvdXNQYWdlT3JpZW50YXRpb24pIHsKCQl2YXIgd2lkdGggPSBwZGZLaXREb2Mub3B0aW9ucy5zaXplWzBdOwoJCXZhciBoZWlnaHQgPSBwZGZLaXREb2Mub3B0aW9ucy5zaXplWzFdOwoJCXBkZktpdERvYy5vcHRpb25zLnNpemUgPSBbaGVpZ2h0LCB3aWR0aF07Cgl9Cn0KCmZ1bmN0aW9uIHJlbmRlclBhZ2VzKHBhZ2VzLCBmb250UHJvdmlkZXIsIHBkZktpdERvYywgcHJvZ3Jlc3NDYWxsYmFjaykgewoJcGRmS2l0RG9jLl9wZGZNYWtlUGFnZXMgPSBwYWdlczsKCXBkZktpdERvYy5hZGRQYWdlKCk7CgoJdmFyIHRvdGFsSXRlbXMgPSAwOwoJaWYgKHByb2dyZXNzQ2FsbGJhY2spIHsKCQlwYWdlcy5mb3JFYWNoKGZ1bmN0aW9uIChwYWdlKSB7CgkJCXRvdGFsSXRlbXMgKz0gcGFnZS5pdGVtcy5sZW5ndGg7CgkJfSk7Cgl9CgoJdmFyIHJlbmRlcmVkSXRlbXMgPSAwOwoJcHJvZ3Jlc3NDYWxsYmFjayA9IHByb2dyZXNzQ2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307CgoJZm9yICh2YXIgaSA9IDA7IGkgPCBwYWdlcy5sZW5ndGg7IGkrKykgewoJCWlmIChpID4gMCkgewoJCQl1cGRhdGVQYWdlT3JpZW50YXRpb25Jbk9wdGlvbnMocGFnZXNbaV0sIHBkZktpdERvYyk7CgkJCXBkZktpdERvYy5hZGRQYWdlKHBkZktpdERvYy5vcHRpb25zKTsKCQl9CgoJCXZhciBwYWdlID0gcGFnZXNbaV07CgkJZm9yICh2YXIgaWkgPSAwLCBpbCA9IHBhZ2UuaXRlbXMubGVuZ3RoOyBpaSA8IGlsOyBpaSsrKSB7CgkJCXZhciBpdGVtID0gcGFnZS5pdGVtc1tpaV07CgkJCXN3aXRjaCAoaXRlbS50eXBlKSB7CgkJCQljYXNlICd2ZWN0b3InOgoJCQkJCXJlbmRlclZlY3RvcihpdGVtLml0ZW0sIHBkZktpdERvYyk7CgkJCQkJYnJlYWs7CgkJCQljYXNlICdsaW5lJzoKCQkJCQlyZW5kZXJMaW5lKGl0ZW0uaXRlbSwgaXRlbS5pdGVtLngsIGl0ZW0uaXRlbS55LCBwZGZLaXREb2MpOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAnaW1hZ2UnOgoJCQkJCXJlbmRlckltYWdlKGl0ZW0uaXRlbSwgaXRlbS5pdGVtLngsIGl0ZW0uaXRlbS55LCBwZGZLaXREb2MpOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAnYmVnaW5DbGlwJzoKCQkJCQliZWdpbkNsaXAoaXRlbS5pdGVtLCBwZGZLaXREb2MpOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAnZW5kQ2xpcCc6CgkJCQkJZW5kQ2xpcChwZGZLaXREb2MpOwoJCQkJCWJyZWFrOwoJCQl9CgkJCXJlbmRlcmVkSXRlbXMrKzsKCQkJcHJvZ3Jlc3NDYWxsYmFjayhyZW5kZXJlZEl0ZW1zIC8gdG90YWxJdGVtcyk7CgkJfQoJCWlmIChwYWdlLndhdGVybWFyaykgewoJCQlyZW5kZXJXYXRlcm1hcmsocGFnZSwgcGRmS2l0RG9jKTsKCQl9Cgl9Cn0KCmZ1bmN0aW9uIHJlbmRlckxpbmUobGluZSwgeCwgeSwgcGRmS2l0RG9jKSB7CglpZiAobGluZS5fcGFnZU5vZGVSZWYpIHsKCQl2YXIgbmV3V2lkdGg7CgkJdmFyIGRpZmZXaWR0aDsKCQl2YXIgdGV4dFRvb2xzID0gbmV3IFRleHRUb29scyhudWxsKTsKCQl2YXIgcGFnZU51bWJlciA9IGxpbmUuX3BhZ2VOb2RlUmVmLnBvc2l0aW9uc1swXS5wYWdlTnVtYmVyLnRvU3RyaW5nKCk7CgoJCWxpbmUuaW5saW5lc1swXS50ZXh0ID0gcGFnZU51bWJlcjsKCQlsaW5lLmlubGluZXNbMF0ubGlua1RvUGFnZSA9IHBhZ2VOdW1iZXI7CgkJbmV3V2lkdGggPSB0ZXh0VG9vbHMud2lkdGhPZlN0cmluZyhsaW5lLmlubGluZXNbMF0udGV4dCwgbGluZS5pbmxpbmVzWzBdLmZvbnQsIGxpbmUuaW5saW5lc1swXS5mb250U2l6ZSwgbGluZS5pbmxpbmVzWzBdLmNoYXJhY3RlclNwYWNpbmcsIGxpbmUuaW5saW5lc1swXS5mb250RmVhdHVyZXMpOwoJCWRpZmZXaWR0aCA9IGxpbmUuaW5saW5lc1swXS53aWR0aCAtIG5ld1dpZHRoOwoJCWxpbmUuaW5saW5lc1swXS53aWR0aCA9IG5ld1dpZHRoOwoKCQlzd2l0Y2ggKGxpbmUuaW5saW5lc1swXS5hbGlnbm1lbnQpIHsKCQkJY2FzZSAncmlnaHQnOgoJCQkJbGluZS5pbmxpbmVzWzBdLnggKz0gZGlmZldpZHRoOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2NlbnRlcic6CgkJCQlsaW5lLmlubGluZXNbMF0ueCArPSBkaWZmV2lkdGggLyAyOwoJCQkJYnJlYWs7CgkJfQoJfQoKCXggPSB4IHx8IDA7Cgl5ID0geSB8fCAwOwoKCXZhciBsaW5lSGVpZ2h0ID0gbGluZS5nZXRIZWlnaHQoKTsKCXZhciBhc2NlbmRlckhlaWdodCA9IGxpbmUuZ2V0QXNjZW5kZXJIZWlnaHQoKTsKCXZhciBkZXNjZW50ID0gbGluZUhlaWdodCAtIGFzY2VuZGVySGVpZ2h0OwoKCXRleHREZWNvcmF0b3IuZHJhd0JhY2tncm91bmQobGluZSwgeCwgeSwgcGRmS2l0RG9jKTsKCgkvL1RPRE86IGxpbmUub3B0aW1pemVJbmxpbmVzKCk7Cglmb3IgKHZhciBpID0gMCwgbCA9IGxpbmUuaW5saW5lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQl2YXIgaW5saW5lID0gbGluZS5pbmxpbmVzW2ldOwoJCXZhciBzaGlmdFRvQmFzZWxpbmUgPSBsaW5lSGVpZ2h0IC0gKChpbmxpbmUuZm9udC5hc2NlbmRlciAvIDEwMDApICogaW5saW5lLmZvbnRTaXplKSAtIGRlc2NlbnQ7CgkJdmFyIG9wdGlvbnMgPSB7CgkJCWxpbmVCcmVhazogZmFsc2UsCgkJCXRleHRXaWR0aDogaW5saW5lLndpZHRoLAoJCQljaGFyYWN0ZXJTcGFjaW5nOiBpbmxpbmUuY2hhcmFjdGVyU3BhY2luZywKCQkJd29yZENvdW50OiAxLAoJCQlsaW5rOiBpbmxpbmUubGluawoJCX07CgoJCWlmIChpbmxpbmUuZm9udEZlYXR1cmVzKSB7CgkJCW9wdGlvbnMuZmVhdHVyZXMgPSBpbmxpbmUuZm9udEZlYXR1cmVzOwoJCX0KCgkJcGRmS2l0RG9jLmZpbGwoaW5saW5lLmNvbG9yIHx8ICdibGFjaycpOwoKCQlwZGZLaXREb2MuX2ZvbnQgPSBpbmxpbmUuZm9udDsKCQlwZGZLaXREb2MuZm9udFNpemUoaW5saW5lLmZvbnRTaXplKTsKCQlwZGZLaXREb2MudGV4dChpbmxpbmUudGV4dCwgeCArIGlubGluZS54LCB5ICsgc2hpZnRUb0Jhc2VsaW5lLCBvcHRpb25zKTsKCgkJaWYgKGlubGluZS5saW5rVG9QYWdlKSB7CgkJCXZhciBfcmVmID0gcGRmS2l0RG9jLnJlZih7VHlwZTogJ0FjdGlvbicsIFM6ICdHb1RvJywgRDogW2lubGluZS5saW5rVG9QYWdlLCAwLCAwXX0pLmVuZCgpOwoJCQlwZGZLaXREb2MuYW5ub3RhdGUoeCArIGlubGluZS54LCB5ICsgc2hpZnRUb0Jhc2VsaW5lLCBpbmxpbmUud2lkdGgsIGlubGluZS5oZWlnaHQsIHtTdWJ0eXBlOiAnTGluaycsIERlc3Q6IFtpbmxpbmUubGlua1RvUGFnZSAtIDEsICdYWVonLCBudWxsLCBudWxsLCBudWxsXX0pOwoJCX0KCgl9CgoJdGV4dERlY29yYXRvci5kcmF3RGVjb3JhdGlvbnMobGluZSwgeCwgeSwgcGRmS2l0RG9jKTsKfQoKZnVuY3Rpb24gcmVuZGVyV2F0ZXJtYXJrKHBhZ2UsIHBkZktpdERvYykgewoJdmFyIHdhdGVybWFyayA9IHBhZ2Uud2F0ZXJtYXJrOwoKCXBkZktpdERvYy5maWxsKHdhdGVybWFyay5jb2xvcik7CglwZGZLaXREb2Mub3BhY2l0eSh3YXRlcm1hcmsub3BhY2l0eSk7CgoJcGRmS2l0RG9jLnNhdmUoKTsKCgl2YXIgYW5nbGUgPSBNYXRoLmF0YW4yKHBkZktpdERvYy5wYWdlLmhlaWdodCwgcGRmS2l0RG9jLnBhZ2Uud2lkdGgpICogLTE4MCAvIE1hdGguUEk7CglwZGZLaXREb2Mucm90YXRlKGFuZ2xlLCB7b3JpZ2luOiBbcGRmS2l0RG9jLnBhZ2Uud2lkdGggLyAyLCBwZGZLaXREb2MucGFnZS5oZWlnaHQgLyAyXX0pOwoKCXZhciB4ID0gcGRmS2l0RG9jLnBhZ2Uud2lkdGggLyAyIC0gd2F0ZXJtYXJrLnNpemUuc2l6ZS53aWR0aCAvIDI7Cgl2YXIgeSA9IHBkZktpdERvYy5wYWdlLmhlaWdodCAvIDIgLSB3YXRlcm1hcmsuc2l6ZS5zaXplLmhlaWdodCAvIDQ7CgoJcGRmS2l0RG9jLl9mb250ID0gd2F0ZXJtYXJrLmZvbnQ7CglwZGZLaXREb2MuZm9udFNpemUod2F0ZXJtYXJrLnNpemUuZm9udFNpemUpOwoJcGRmS2l0RG9jLnRleHQod2F0ZXJtYXJrLnRleHQsIHgsIHksIHtsaW5lQnJlYWs6IGZhbHNlfSk7CgoJcGRmS2l0RG9jLnJlc3RvcmUoKTsKfQoKZnVuY3Rpb24gcmVuZGVyVmVjdG9yKHZlY3RvciwgcGRmS2l0RG9jKSB7CgkvL1RPRE86IHBkZiBvcHRpbWl6YXRpb24gKHRoZXJlJ3Mgbm8gbmVlZCB0byB3cml0ZSBhbGwgcHJvcGVydGllcyBldmVyeXRpbWUpCglwZGZLaXREb2MubGluZVdpZHRoKHZlY3Rvci5saW5lV2lkdGggfHwgMSk7CglpZiAodmVjdG9yLmRhc2gpIHsKCQlwZGZLaXREb2MuZGFzaCh2ZWN0b3IuZGFzaC5sZW5ndGgsIHtzcGFjZTogdmVjdG9yLmRhc2guc3BhY2UgfHwgdmVjdG9yLmRhc2gubGVuZ3RoLCBwaGFzZTogdmVjdG9yLmRhc2gucGhhc2UgfHwgMH0pOwoJfSBlbHNlIHsKCQlwZGZLaXREb2MudW5kYXNoKCk7Cgl9CglwZGZLaXREb2MubGluZUpvaW4odmVjdG9yLmxpbmVKb2luIHx8ICdtaXRlcicpOwoJcGRmS2l0RG9jLmxpbmVDYXAodmVjdG9yLmxpbmVDYXAgfHwgJ2J1dHQnKTsKCgkvL1RPRE86IGNsaXBwaW5nCgoJc3dpdGNoICh2ZWN0b3IudHlwZSkgewoJCWNhc2UgJ2VsbGlwc2UnOgoJCQlwZGZLaXREb2MuZWxsaXBzZSh2ZWN0b3IueCwgdmVjdG9yLnksIHZlY3Rvci5yMSwgdmVjdG9yLnIyKTsKCQkJYnJlYWs7CgkJY2FzZSAncmVjdCc6CgkJCWlmICh2ZWN0b3IucikgewoJCQkJcGRmS2l0RG9jLnJvdW5kZWRSZWN0KHZlY3Rvci54LCB2ZWN0b3IueSwgdmVjdG9yLncsIHZlY3Rvci5oLCB2ZWN0b3Iucik7CgkJCX0gZWxzZSB7CgkJCQlwZGZLaXREb2MucmVjdCh2ZWN0b3IueCwgdmVjdG9yLnksIHZlY3Rvci53LCB2ZWN0b3IuaCk7CgkJCX0KCgkJCWlmICh2ZWN0b3IubGluZWFyR3JhZGllbnQpIHsKCQkJCXZhciBncmFkaWVudCA9IHBkZktpdERvYy5saW5lYXJHcmFkaWVudCh2ZWN0b3IueCwgdmVjdG9yLnksIHZlY3Rvci54ICsgdmVjdG9yLncsIHZlY3Rvci55KTsKCQkJCXZhciBzdGVwID0gMSAvICh2ZWN0b3IubGluZWFyR3JhZGllbnQubGVuZ3RoIC0gMSk7CgoJCQkJZm9yICh2YXIgaSA9IDA7IGkgPCB2ZWN0b3IubGluZWFyR3JhZGllbnQubGVuZ3RoOyBpKyspIHsKCQkJCQlncmFkaWVudC5zdG9wKGkgKiBzdGVwLCB2ZWN0b3IubGluZWFyR3JhZGllbnRbaV0pOwoJCQkJfQoKCQkJCXZlY3Rvci5jb2xvciA9IGdyYWRpZW50OwoJCQl9CgkJCWJyZWFrOwoJCWNhc2UgJ2xpbmUnOgoJCQlwZGZLaXREb2MubW92ZVRvKHZlY3Rvci54MSwgdmVjdG9yLnkxKTsKCQkJcGRmS2l0RG9jLmxpbmVUbyh2ZWN0b3IueDIsIHZlY3Rvci55Mik7CgkJCWJyZWFrOwoJCWNhc2UgJ3BvbHlsaW5lJzoKCQkJaWYgKHZlY3Rvci5wb2ludHMubGVuZ3RoID09PSAwKSB7CgkJCQlicmVhazsKCQkJfQoKCQkJcGRmS2l0RG9jLm1vdmVUbyh2ZWN0b3IucG9pbnRzWzBdLngsIHZlY3Rvci5wb2ludHNbMF0ueSk7CgkJCWZvciAodmFyIGkgPSAxLCBsID0gdmVjdG9yLnBvaW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQkJCXBkZktpdERvYy5saW5lVG8odmVjdG9yLnBvaW50c1tpXS54LCB2ZWN0b3IucG9pbnRzW2ldLnkpOwoJCQl9CgoJCQlpZiAodmVjdG9yLnBvaW50cy5sZW5ndGggPiAxKSB7CgkJCQl2YXIgcDEgPSB2ZWN0b3IucG9pbnRzWzBdOwoJCQkJdmFyIHBuID0gdmVjdG9yLnBvaW50c1t2ZWN0b3IucG9pbnRzLmxlbmd0aCAtIDFdOwoKCQkJCWlmICh2ZWN0b3IuY2xvc2VQYXRoIHx8IHAxLnggPT09IHBuLnggJiYgcDEueSA9PT0gcG4ueSkgewoJCQkJCXBkZktpdERvYy5jbG9zZVBhdGgoKTsKCQkJCX0KCQkJfQoJCQlicmVhazsKCQljYXNlICdwYXRoJzoKCQkJcGRmS2l0RG9jLnBhdGgodmVjdG9yLmQpOwoJCQlicmVhazsKCX0KCglpZiAodmVjdG9yLmNvbG9yICYmIHZlY3Rvci5saW5lQ29sb3IpIHsKCQlwZGZLaXREb2MuZmlsbENvbG9yKHZlY3Rvci5jb2xvciwgdmVjdG9yLmZpbGxPcGFjaXR5IHx8IDEpOwoJCXBkZktpdERvYy5zdHJva2VDb2xvcih2ZWN0b3IubGluZUNvbG9yLCB2ZWN0b3Iuc3Ryb2tlT3BhY2l0eSB8fCAxKTsKCQlwZGZLaXREb2MuZmlsbEFuZFN0cm9rZSgpOwoJfSBlbHNlIGlmICh2ZWN0b3IuY29sb3IpIHsKCQlwZGZLaXREb2MuZmlsbENvbG9yKHZlY3Rvci5jb2xvciwgdmVjdG9yLmZpbGxPcGFjaXR5IHx8IDEpOwoJCXBkZktpdERvYy5maWxsKCk7Cgl9IGVsc2UgewoJCXBkZktpdERvYy5zdHJva2VDb2xvcih2ZWN0b3IubGluZUNvbG9yIHx8ICdibGFjaycsIHZlY3Rvci5zdHJva2VPcGFjaXR5IHx8IDEpOwoJCXBkZktpdERvYy5zdHJva2UoKTsKCX0KfQoKZnVuY3Rpb24gcmVuZGVySW1hZ2UoaW1hZ2UsIHgsIHksIHBkZktpdERvYykgewoJcGRmS2l0RG9jLmltYWdlKGltYWdlLmltYWdlLCBpbWFnZS54LCBpbWFnZS55LCB7d2lkdGg6IGltYWdlLl93aWR0aCwgaGVpZ2h0OiBpbWFnZS5faGVpZ2h0fSk7CglpZiAoaW1hZ2UubGluaykgewoJCXBkZktpdERvYy5saW5rKGltYWdlLngsIGltYWdlLnksIGltYWdlLl93aWR0aCwgaW1hZ2UuX2hlaWdodCwgaW1hZ2UubGluayk7Cgl9Cn0KCmZ1bmN0aW9uIGJlZ2luQ2xpcChyZWN0LCBwZGZLaXREb2MpIHsKCXBkZktpdERvYy5zYXZlKCk7CglwZGZLaXREb2MuYWRkQ29udGVudCgnJyArIHJlY3QueCArICcgJyArIHJlY3QueSArICcgJyArIHJlY3Qud2lkdGggKyAnICcgKyByZWN0LmhlaWdodCArICcgcmUnKTsKCXBkZktpdERvYy5jbGlwKCk7Cn0KCmZ1bmN0aW9uIGVuZENsaXAocGRmS2l0RG9jKSB7CglwZGZLaXREb2MucmVzdG9yZSgpOwp9Cgptb2R1bGUuZXhwb3J0cyA9IFBkZlByaW50ZXI7CgoKLyoqKi8gfSksCi8qIDEyNyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKdmFyIGlzQXJyYXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzQXJyYXk7CgpmdW5jdGlvbiB0eXBlTmFtZShib2xkLCBpdGFsaWNzKSB7Cgl2YXIgdHlwZSA9ICdub3JtYWwnOwoJaWYgKGJvbGQgJiYgaXRhbGljcykgewoJCXR5cGUgPSAnYm9sZGl0YWxpY3MnOwoJfSBlbHNlIGlmIChib2xkKSB7CgkJdHlwZSA9ICdib2xkJzsKCX0gZWxzZSBpZiAoaXRhbGljcykgewoJCXR5cGUgPSAnaXRhbGljcyc7Cgl9CglyZXR1cm4gdHlwZTsKfQoKZnVuY3Rpb24gRm9udFByb3ZpZGVyKGZvbnREZXNjcmlwdG9ycywgcGRmS2l0RG9jKSB7Cgl0aGlzLmZvbnRzID0ge307Cgl0aGlzLnBkZktpdERvYyA9IHBkZktpdERvYzsKCXRoaXMuZm9udENhY2hlID0ge307CgoJZm9yICh2YXIgZm9udCBpbiBmb250RGVzY3JpcHRvcnMpIHsKCQlpZiAoZm9udERlc2NyaXB0b3JzLmhhc093blByb3BlcnR5KGZvbnQpKSB7CgkJCXZhciBmb250RGVmID0gZm9udERlc2NyaXB0b3JzW2ZvbnRdOwoKCQkJdGhpcy5mb250c1tmb250XSA9IHsKCQkJCW5vcm1hbDogZm9udERlZi5ub3JtYWwsCgkJCQlib2xkOiBmb250RGVmLmJvbGQsCgkJCQlpdGFsaWNzOiBmb250RGVmLml0YWxpY3MsCgkJCQlib2xkaXRhbGljczogZm9udERlZi5ib2xkaXRhbGljcwoJCQl9OwoJCX0KCX0KfQoKRm9udFByb3ZpZGVyLnByb3RvdHlwZS5wcm92aWRlRm9udCA9IGZ1bmN0aW9uIChmYW1pbHlOYW1lLCBib2xkLCBpdGFsaWNzKSB7Cgl2YXIgdHlwZSA9IHR5cGVOYW1lKGJvbGQsIGl0YWxpY3MpOwoJaWYgKCF0aGlzLmZvbnRzW2ZhbWlseU5hbWVdIHx8ICF0aGlzLmZvbnRzW2ZhbWlseU5hbWVdW3R5cGVdKSB7CgkJdGhyb3cgbmV3IEVycm9yKCdGb250IFwnJyArIGZhbWlseU5hbWUgKyAnXCcgaW4gc3R5bGUgXCcnICsgdHlwZSArICdcJyBpcyBub3QgZGVmaW5lZCBpbiB0aGUgZm9udCBzZWN0aW9uIG9mIHRoZSBkb2N1bWVudCBkZWZpbml0aW9uLicpOwoJfQoKCXRoaXMuZm9udENhY2hlW2ZhbWlseU5hbWVdID0gdGhpcy5mb250Q2FjaGVbZmFtaWx5TmFtZV0gfHwge307CgoJaWYgKCF0aGlzLmZvbnRDYWNoZVtmYW1pbHlOYW1lXVt0eXBlXSkgewoJCXZhciBkZWYgPSB0aGlzLmZvbnRzW2ZhbWlseU5hbWVdW3R5cGVdOwoJCWlmICghaXNBcnJheShkZWYpKSB7CgkJCWRlZiA9IFtkZWZdOwoJCX0KCQl0aGlzLmZvbnRDYWNoZVtmYW1pbHlOYW1lXVt0eXBlXSA9IHRoaXMucGRmS2l0RG9jLmZvbnQuYXBwbHkodGhpcy5wZGZLaXREb2MsIGRlZikuX2ZvbnQ7Cgl9CgoJcmV0dXJuIHRoaXMuZm9udENhY2hlW2ZhbWlseU5hbWVdW3R5cGVdOwp9OwoKbW9kdWxlLmV4cG9ydHMgPSBGb250UHJvdmlkZXI7CgoKLyoqKi8gfSksCi8qIDEyOCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKdmFyIFRyYXZlcnNhbFRyYWNrZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc3KTsKdmFyIERvY1ByZXByb2Nlc3NvciA9IF9fd2VicGFja19yZXF1aXJlX18oMTI5KTsKdmFyIERvY01lYXN1cmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzMCk7CnZhciBEb2N1bWVudENvbnRleHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgxKTsKdmFyIFBhZ2VFbGVtZW50V3JpdGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzUpOwp2YXIgQ29sdW1uQ2FsY3VsYXRvciA9IF9fd2VicGFja19yZXF1aXJlX18oNDQpOwp2YXIgVGFibGVQcm9jZXNzb3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzNyk7CnZhciBMaW5lID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Mik7CnZhciBpc1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNTdHJpbmc7CnZhciBpc0FycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5pc0FycmF5Owp2YXIgcGFjayA9IF9fd2VicGFja19yZXF1aXJlX18oMCkucGFjazsKdmFyIG9mZnNldFZlY3RvciA9IF9fd2VicGFja19yZXF1aXJlX18oMCkub2Zmc2V0VmVjdG9yOwp2YXIgZm9udFN0cmluZ2lmeSA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuZm9udFN0cmluZ2lmeTsKdmFyIGlzRnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzRnVuY3Rpb247CnZhciBUZXh0VG9vbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQyKTsKdmFyIFN0eWxlQ29udGV4dFN0YWNrID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4MCk7CgpmdW5jdGlvbiBhZGRBbGwodGFyZ2V0LCBvdGhlckFycmF5KSB7CglvdGhlckFycmF5LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKCQl0YXJnZXQucHVzaChpdGVtKTsKCX0pOwp9CgovKioKICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBMYXlvdXRCdWlsZGVyIC0gbGF5b3V0IGVuZ2luZSB3aGljaCB0dXJucyBkb2N1bWVudC1kZWZpbml0aW9uLW9iamVjdAogKiBpbnRvIGEgc2V0IG9mIHBhZ2VzLCBsaW5lcywgaW5saW5lcyBhbmQgdmVjdG9ycyByZWFkeSB0byBiZSByZW5kZXJlZCBpbnRvIGEgUERGCiAqCiAqIEBwYXJhbSB7T2JqZWN0fSBwYWdlU2l6ZSAtIGFuIG9iamVjdCBkZWZpbmluZyBwYWdlIHdpZHRoIGFuZCBoZWlnaHQKICogQHBhcmFtIHtPYmplY3R9IHBhZ2VNYXJnaW5zIC0gYW4gb2JqZWN0IGRlZmluaW5nIHRvcCwgbGVmdCwgcmlnaHQgYW5kIGJvdHRvbSBtYXJnaW5zCiAqLwpmdW5jdGlvbiBMYXlvdXRCdWlsZGVyKHBhZ2VTaXplLCBwYWdlTWFyZ2lucywgaW1hZ2VNZWFzdXJlKSB7Cgl0aGlzLnBhZ2VTaXplID0gcGFnZVNpemU7Cgl0aGlzLnBhZ2VNYXJnaW5zID0gcGFnZU1hcmdpbnM7Cgl0aGlzLnRyYWNrZXIgPSBuZXcgVHJhdmVyc2FsVHJhY2tlcigpOwoJdGhpcy5pbWFnZU1lYXN1cmUgPSBpbWFnZU1lYXN1cmU7Cgl0aGlzLnRhYmxlTGF5b3V0cyA9IHt9Owp9CgpMYXlvdXRCdWlsZGVyLnByb3RvdHlwZS5yZWdpc3RlclRhYmxlTGF5b3V0cyA9IGZ1bmN0aW9uICh0YWJsZUxheW91dHMpIHsKCXRoaXMudGFibGVMYXlvdXRzID0gcGFjayh0aGlzLnRhYmxlTGF5b3V0cywgdGFibGVMYXlvdXRzKTsKfTsKCi8qKgogKiBFeGVjdXRlcyBsYXlvdXQgZW5naW5lIG9uIGRvY3VtZW50LWRlZmluaXRpb24tb2JqZWN0IGFuZCBjcmVhdGVzIGFuIGFycmF5IG9mIHBhZ2VzCiAqIGNvbnRhaW5pbmcgcG9zaXRpb25lZCBCbG9ja3MsIExpbmVzIGFuZCBpbmxpbmVzCiAqCiAqIEBwYXJhbSB7T2JqZWN0fSBkb2NTdHJ1Y3R1cmUgZG9jdW1lbnQtZGVmaW5pdGlvbi1vYmplY3QKICogQHBhcmFtIHtPYmplY3R9IGZvbnRQcm92aWRlciBmb250IHByb3ZpZGVyCiAqIEBwYXJhbSB7T2JqZWN0fSBzdHlsZURpY3Rpb25hcnkgZGljdGlvbmFyeSB3aXRoIHN0eWxlIGRlZmluaXRpb25zCiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0U3R5bGUgZGVmYXVsdCBzdHlsZSBkZWZpbml0aW9uCiAqIEByZXR1cm4ge0FycmF5fSBhbiBhcnJheSBvZiBwYWdlcwogKi8KTGF5b3V0QnVpbGRlci5wcm90b3R5cGUubGF5b3V0RG9jdW1lbnQgPSBmdW5jdGlvbiAoZG9jU3RydWN0dXJlLCBmb250UHJvdmlkZXIsIHN0eWxlRGljdGlvbmFyeSwgZGVmYXVsdFN0eWxlLCBiYWNrZ3JvdW5kLCBoZWFkZXIsIGZvb3RlciwgaW1hZ2VzLCB3YXRlcm1hcmssIHBhZ2VCcmVha0JlZm9yZUZjdCkgewoKCWZ1bmN0aW9uIGFkZFBhZ2VCcmVha3NJZk5lY2Vzc2FyeShsaW5lYXJOb2RlTGlzdCwgcGFnZXMpIHsKCgkJaWYgKCFpc0Z1bmN0aW9uKHBhZ2VCcmVha0JlZm9yZUZjdCkpIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJbGluZWFyTm9kZUxpc3QgPSBsaW5lYXJOb2RlTGlzdC5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHsKCQkJcmV0dXJuIG5vZGUucG9zaXRpb25zLmxlbmd0aCA+IDA7CgkJfSk7CgoJCWxpbmVhck5vZGVMaXN0LmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHsKCQkJdmFyIG5vZGVJbmZvID0ge307CgkJCVsKCQkJCSdpZCcsICd0ZXh0JywgJ3VsJywgJ29sJywgJ3RhYmxlJywgJ2ltYWdlJywgJ3FyJywgJ2NhbnZhcycsICdjb2x1bW5zJywKCQkJCSdoZWFkbGluZUxldmVsJywgJ3N0eWxlJywgJ3BhZ2VCcmVhaycsICdwYWdlT3JpZW50YXRpb24nLAoJCQkJJ3dpZHRoJywgJ2hlaWdodCcKCQkJXS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsKCQkJCWlmIChub2RlW2tleV0gIT09IHVuZGVmaW5lZCkgewoJCQkJCW5vZGVJbmZvW2tleV0gPSBub2RlW2tleV07CgkJCQl9CgkJCX0pOwoJCQlub2RlSW5mby5zdGFydFBvc2l0aW9uID0gbm9kZS5wb3NpdGlvbnNbMF07CgkJCW5vZGVJbmZvLnBhZ2VOdW1iZXJzID0gbm9kZS5wb3NpdGlvbnMubWFwKGZ1bmN0aW9uIChub2RlKSB7CgkJCQlyZXR1cm4gbm9kZS5wYWdlTnVtYmVyOwoJCQl9KS5maWx0ZXIoZnVuY3Rpb24gKGVsZW1lbnQsIHBvc2l0aW9uLCBhcnJheSkgewoJCQkJcmV0dXJuIGFycmF5LmluZGV4T2YoZWxlbWVudCkgPT09IHBvc2l0aW9uOwoJCQl9KTsKCQkJbm9kZUluZm8ucGFnZXMgPSBwYWdlcy5sZW5ndGg7CgkJCW5vZGVJbmZvLnN0YWNrID0gaXNBcnJheShub2RlLnN0YWNrKTsKCgkJCW5vZGUubm9kZUluZm8gPSBub2RlSW5mbzsKCQl9KTsKCgkJcmV0dXJuIGxpbmVhck5vZGVMaXN0LnNvbWUoZnVuY3Rpb24gKG5vZGUsIGluZGV4LCBmb2xsb3dpbmdOb2RlTGlzdCkgewoJCQlpZiAobm9kZS5wYWdlQnJlYWsgIT09ICdiZWZvcmUnICYmICFub2RlLnBhZ2VCcmVha0NhbGN1bGF0ZWQpIHsKCQkJCW5vZGUucGFnZUJyZWFrQ2FsY3VsYXRlZCA9IHRydWU7CgkJCQl2YXIgcGFnZU51bWJlciA9IG5vZGUubm9kZUluZm8ucGFnZU51bWJlcnNbMF07CgoJCQkJdmFyIGZvbGxvd2luZ05vZGVzT25QYWdlID0gZm9sbG93aW5nTm9kZUxpc3Quc2xpY2UoaW5kZXggKyAxKS5maWx0ZXIoZnVuY3Rpb24gKG5vZGUwKSB7CgkJCQkJcmV0dXJuIG5vZGUwLm5vZGVJbmZvLnBhZ2VOdW1iZXJzLmluZGV4T2YocGFnZU51bWJlcikgPiAtMTsKCQkJCX0pOwoKCQkJCXZhciBub2Rlc09uTmV4dFBhZ2UgPSBmb2xsb3dpbmdOb2RlTGlzdC5zbGljZShpbmRleCArIDEpLmZpbHRlcihmdW5jdGlvbiAobm9kZTApIHsKCQkJCQlyZXR1cm4gbm9kZTAubm9kZUluZm8ucGFnZU51bWJlcnMuaW5kZXhPZihwYWdlTnVtYmVyICsgMSkgPiAtMTsKCQkJCX0pOwoKCQkJCXZhciBwcmV2aW91c05vZGVzT25QYWdlID0gZm9sbG93aW5nTm9kZUxpc3Quc2xpY2UoMCwgaW5kZXgpLmZpbHRlcihmdW5jdGlvbiAobm9kZTApIHsKCQkJCQlyZXR1cm4gbm9kZTAubm9kZUluZm8ucGFnZU51bWJlcnMuaW5kZXhPZihwYWdlTnVtYmVyKSA+IC0xOwoJCQkJfSk7CgoJCQkJaWYgKAoJCQkJCXBhZ2VCcmVha0JlZm9yZUZjdCgKCQkJCQkJbm9kZS5ub2RlSW5mbywKCQkJCQkJZm9sbG93aW5nTm9kZXNPblBhZ2UubWFwKGZ1bmN0aW9uIChub2RlKSB7CgkJCQkJCQlyZXR1cm4gbm9kZS5ub2RlSW5mbzsKCQkJCQkJfSksCgkJCQkJCW5vZGVzT25OZXh0UGFnZS5tYXAoZnVuY3Rpb24gKG5vZGUpIHsKCQkJCQkJCXJldHVybiBub2RlLm5vZGVJbmZvOwoJCQkJCQl9KSwKCQkJCQkJcHJldmlvdXNOb2Rlc09uUGFnZS5tYXAoZnVuY3Rpb24gKG5vZGUpIHsKCQkJCQkJCXJldHVybiBub2RlLm5vZGVJbmZvOwoJCQkJCQl9KSkpIHsKCQkJCQlub2RlLnBhZ2VCcmVhayA9ICdiZWZvcmUnOwoJCQkJCXJldHVybiB0cnVlOwoJCQkJfQoJCQl9CgkJfSk7Cgl9CgoJdGhpcy5kb2NQcmVwcm9jZXNzb3IgPSBuZXcgRG9jUHJlcHJvY2Vzc29yKCk7Cgl0aGlzLmRvY01lYXN1cmUgPSBuZXcgRG9jTWVhc3VyZShmb250UHJvdmlkZXIsIHN0eWxlRGljdGlvbmFyeSwgZGVmYXVsdFN0eWxlLCB0aGlzLmltYWdlTWVhc3VyZSwgdGhpcy50YWJsZUxheW91dHMsIGltYWdlcyk7CgoKCWZ1bmN0aW9uIHJlc2V0WFlzKHJlc3VsdCkgewoJCXJlc3VsdC5saW5lYXJOb2RlTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7CgkJCW5vZGUucmVzZXRYWSgpOwoJCX0pOwoJfQoKCXZhciByZXN1bHQgPSB0aGlzLnRyeUxheW91dERvY3VtZW50KGRvY1N0cnVjdHVyZSwgZm9udFByb3ZpZGVyLCBzdHlsZURpY3Rpb25hcnksIGRlZmF1bHRTdHlsZSwgYmFja2dyb3VuZCwgaGVhZGVyLCBmb290ZXIsIGltYWdlcywgd2F0ZXJtYXJrKTsKCXdoaWxlIChhZGRQYWdlQnJlYWtzSWZOZWNlc3NhcnkocmVzdWx0LmxpbmVhck5vZGVMaXN0LCByZXN1bHQucGFnZXMpKSB7CgkJcmVzZXRYWXMocmVzdWx0KTsKCQlyZXN1bHQgPSB0aGlzLnRyeUxheW91dERvY3VtZW50KGRvY1N0cnVjdHVyZSwgZm9udFByb3ZpZGVyLCBzdHlsZURpY3Rpb25hcnksIGRlZmF1bHRTdHlsZSwgYmFja2dyb3VuZCwgaGVhZGVyLCBmb290ZXIsIGltYWdlcywgd2F0ZXJtYXJrKTsKCX0KCglyZXR1cm4gcmVzdWx0LnBhZ2VzOwp9OwoKTGF5b3V0QnVpbGRlci5wcm90b3R5cGUudHJ5TGF5b3V0RG9jdW1lbnQgPSBmdW5jdGlvbiAoZG9jU3RydWN0dXJlLCBmb250UHJvdmlkZXIsIHN0eWxlRGljdGlvbmFyeSwgZGVmYXVsdFN0eWxlLCBiYWNrZ3JvdW5kLCBoZWFkZXIsIGZvb3RlciwgaW1hZ2VzLCB3YXRlcm1hcmssIHBhZ2VCcmVha0JlZm9yZUZjdCkgewoKCXRoaXMubGluZWFyTm9kZUxpc3QgPSBbXTsKCWRvY1N0cnVjdHVyZSA9IHRoaXMuZG9jUHJlcHJvY2Vzc29yLnByZXByb2Nlc3NEb2N1bWVudChkb2NTdHJ1Y3R1cmUpOwoJZG9jU3RydWN0dXJlID0gdGhpcy5kb2NNZWFzdXJlLm1lYXN1cmVEb2N1bWVudChkb2NTdHJ1Y3R1cmUpOwoKCXRoaXMud3JpdGVyID0gbmV3IFBhZ2VFbGVtZW50V3JpdGVyKAoJCW5ldyBEb2N1bWVudENvbnRleHQodGhpcy5wYWdlU2l6ZSwgdGhpcy5wYWdlTWFyZ2lucyksIHRoaXMudHJhY2tlcik7CgoJdmFyIF90aGlzID0gdGhpczsKCXRoaXMud3JpdGVyLmNvbnRleHQoKS50cmFja2VyLnN0YXJ0VHJhY2tpbmcoJ3BhZ2VBZGRlZCcsIGZ1bmN0aW9uICgpIHsKCQlfdGhpcy5hZGRCYWNrZ3JvdW5kKGJhY2tncm91bmQpOwoJfSk7CgoJdGhpcy5hZGRCYWNrZ3JvdW5kKGJhY2tncm91bmQpOwoJdGhpcy5wcm9jZXNzTm9kZShkb2NTdHJ1Y3R1cmUpOwoJdGhpcy5hZGRIZWFkZXJzQW5kRm9vdGVycyhoZWFkZXIsIGZvb3Rlcik7CglpZiAod2F0ZXJtYXJrICE9IG51bGwpIHsKCQl0aGlzLmFkZFdhdGVybWFyayh3YXRlcm1hcmssIGZvbnRQcm92aWRlciwgZGVmYXVsdFN0eWxlKTsKCX0KCglyZXR1cm4ge3BhZ2VzOiB0aGlzLndyaXRlci5jb250ZXh0KCkucGFnZXMsIGxpbmVhck5vZGVMaXN0OiB0aGlzLmxpbmVhck5vZGVMaXN0fTsKfTsKCgpMYXlvdXRCdWlsZGVyLnByb3RvdHlwZS5hZGRCYWNrZ3JvdW5kID0gZnVuY3Rpb24gKGJhY2tncm91bmQpIHsKCXZhciBiYWNrZ3JvdW5kR2V0dGVyID0gaXNGdW5jdGlvbihiYWNrZ3JvdW5kKSA/IGJhY2tncm91bmQgOiBmdW5jdGlvbiAoKSB7CgkJcmV0dXJuIGJhY2tncm91bmQ7Cgl9OwoKCXZhciBwYWdlQmFja2dyb3VuZCA9IGJhY2tncm91bmRHZXR0ZXIodGhpcy53cml0ZXIuY29udGV4dCgpLnBhZ2UgKyAxKTsKCglpZiAocGFnZUJhY2tncm91bmQpIHsKCQl2YXIgcGFnZVNpemUgPSB0aGlzLndyaXRlci5jb250ZXh0KCkuZ2V0Q3VycmVudFBhZ2UoKS5wYWdlU2l6ZTsKCQl0aGlzLndyaXRlci5iZWdpblVuYnJlYWthYmxlQmxvY2socGFnZVNpemUud2lkdGgsIHBhZ2VTaXplLmhlaWdodCk7CgkJcGFnZUJhY2tncm91bmQgPSB0aGlzLmRvY1ByZXByb2Nlc3Nvci5wcmVwcm9jZXNzRG9jdW1lbnQocGFnZUJhY2tncm91bmQpOwoJCXRoaXMucHJvY2Vzc05vZGUodGhpcy5kb2NNZWFzdXJlLm1lYXN1cmVEb2N1bWVudChwYWdlQmFja2dyb3VuZCkpOwoJCXRoaXMud3JpdGVyLmNvbW1pdFVuYnJlYWthYmxlQmxvY2soMCwgMCk7CgkJdGhpcy53cml0ZXIuY29udGV4dCgpLmhhc0JhY2tncm91bmQgPSB0cnVlOwoJfQp9OwoKTGF5b3V0QnVpbGRlci5wcm90b3R5cGUuYWRkU3RhdGljUmVwZWF0YWJsZSA9IGZ1bmN0aW9uIChoZWFkZXJPckZvb3Rlciwgc2l6ZUZ1bmN0aW9uKSB7Cgl0aGlzLmFkZER5bmFtaWNSZXBlYXRhYmxlKGZ1bmN0aW9uICgpIHsKCQlyZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShoZWFkZXJPckZvb3RlcikpOyAvLyBjb3B5IHRvIG5ldyBvYmplY3QKCX0sIHNpemVGdW5jdGlvbik7Cn07CgpMYXlvdXRCdWlsZGVyLnByb3RvdHlwZS5hZGREeW5hbWljUmVwZWF0YWJsZSA9IGZ1bmN0aW9uIChub2RlR2V0dGVyLCBzaXplRnVuY3Rpb24pIHsKCXZhciBwYWdlcyA9IHRoaXMud3JpdGVyLmNvbnRleHQoKS5wYWdlczsKCglmb3IgKHZhciBwYWdlSW5kZXggPSAwLCBsID0gcGFnZXMubGVuZ3RoOyBwYWdlSW5kZXggPCBsOyBwYWdlSW5kZXgrKykgewoJCXRoaXMud3JpdGVyLmNvbnRleHQoKS5wYWdlID0gcGFnZUluZGV4OwoKCQl2YXIgbm9kZSA9IG5vZGVHZXR0ZXIocGFnZUluZGV4ICsgMSwgbCwgdGhpcy53cml0ZXIuY29udGV4dCgpLnBhZ2VzW3BhZ2VJbmRleF0ucGFnZVNpemUpOwoKCQlpZiAobm9kZSkgewoJCQl2YXIgc2l6ZXMgPSBzaXplRnVuY3Rpb24odGhpcy53cml0ZXIuY29udGV4dCgpLmdldEN1cnJlbnRQYWdlKCkucGFnZVNpemUsIHRoaXMucGFnZU1hcmdpbnMpOwoJCQl0aGlzLndyaXRlci5iZWdpblVuYnJlYWthYmxlQmxvY2soc2l6ZXMud2lkdGgsIHNpemVzLmhlaWdodCk7CgkJCW5vZGUgPSB0aGlzLmRvY1ByZXByb2Nlc3Nvci5wcmVwcm9jZXNzRG9jdW1lbnQobm9kZSk7CgkJCXRoaXMucHJvY2Vzc05vZGUodGhpcy5kb2NNZWFzdXJlLm1lYXN1cmVEb2N1bWVudChub2RlKSk7CgkJCXRoaXMud3JpdGVyLmNvbW1pdFVuYnJlYWthYmxlQmxvY2soc2l6ZXMueCwgc2l6ZXMueSk7CgkJfQoJfQp9OwoKTGF5b3V0QnVpbGRlci5wcm90b3R5cGUuYWRkSGVhZGVyc0FuZEZvb3RlcnMgPSBmdW5jdGlvbiAoaGVhZGVyLCBmb290ZXIpIHsKCXZhciBoZWFkZXJTaXplRmN0ID0gZnVuY3Rpb24gKHBhZ2VTaXplLCBwYWdlTWFyZ2lucykgewoJCXJldHVybiB7CgkJCXg6IDAsCgkJCXk6IDAsCgkJCXdpZHRoOiBwYWdlU2l6ZS53aWR0aCwKCQkJaGVpZ2h0OiBwYWdlTWFyZ2lucy50b3AKCQl9OwoJfTsKCgl2YXIgZm9vdGVyU2l6ZUZjdCA9IGZ1bmN0aW9uIChwYWdlU2l6ZSwgcGFnZU1hcmdpbnMpIHsKCQlyZXR1cm4gewoJCQl4OiAwLAoJCQl5OiBwYWdlU2l6ZS5oZWlnaHQgLSBwYWdlTWFyZ2lucy5ib3R0b20sCgkJCXdpZHRoOiBwYWdlU2l6ZS53aWR0aCwKCQkJaGVpZ2h0OiBwYWdlTWFyZ2lucy5ib3R0b20KCQl9OwoJfTsKCglpZiAoaXNGdW5jdGlvbihoZWFkZXIpKSB7CgkJdGhpcy5hZGREeW5hbWljUmVwZWF0YWJsZShoZWFkZXIsIGhlYWRlclNpemVGY3QpOwoJfSBlbHNlIGlmIChoZWFkZXIpIHsKCQl0aGlzLmFkZFN0YXRpY1JlcGVhdGFibGUoaGVhZGVyLCBoZWFkZXJTaXplRmN0KTsKCX0KCglpZiAoaXNGdW5jdGlvbihmb290ZXIpKSB7CgkJdGhpcy5hZGREeW5hbWljUmVwZWF0YWJsZShmb290ZXIsIGZvb3RlclNpemVGY3QpOwoJfSBlbHNlIGlmIChmb290ZXIpIHsKCQl0aGlzLmFkZFN0YXRpY1JlcGVhdGFibGUoZm9vdGVyLCBmb290ZXJTaXplRmN0KTsKCX0KfTsKCkxheW91dEJ1aWxkZXIucHJvdG90eXBlLmFkZFdhdGVybWFyayA9IGZ1bmN0aW9uICh3YXRlcm1hcmssIGZvbnRQcm92aWRlciwgZGVmYXVsdFN0eWxlKSB7CglpZiAoaXNTdHJpbmcod2F0ZXJtYXJrKSkgewoJCXdhdGVybWFyayA9IHsndGV4dCc6IHdhdGVybWFya307Cgl9CgoJaWYgKCF3YXRlcm1hcmsudGV4dCkgeyAvLyBlbXB0eSB3YXRlcm1hcmsgdGV4dAoJCXJldHVybjsKCX0KCgl3YXRlcm1hcmsuZm9udCA9IHdhdGVybWFyay5mb250IHx8IGRlZmF1bHRTdHlsZS5mb250IHx8ICdSb2JvdG8nOwoJd2F0ZXJtYXJrLmNvbG9yID0gd2F0ZXJtYXJrLmNvbG9yIHx8ICdibGFjayc7Cgl3YXRlcm1hcmsub3BhY2l0eSA9IHdhdGVybWFyay5vcGFjaXR5IHx8IDAuNjsKCXdhdGVybWFyay5ib2xkID0gd2F0ZXJtYXJrLmJvbGQgfHwgZmFsc2U7Cgl3YXRlcm1hcmsuaXRhbGljcyA9IHdhdGVybWFyay5pdGFsaWNzIHx8IGZhbHNlOwoKCXZhciB3YXRlcm1hcmtPYmplY3QgPSB7CgkJdGV4dDogd2F0ZXJtYXJrLnRleHQsCgkJZm9udDogZm9udFByb3ZpZGVyLnByb3ZpZGVGb250KHdhdGVybWFyay5mb250LCB3YXRlcm1hcmsuYm9sZCwgd2F0ZXJtYXJrLml0YWxpY3MpLAoJCXNpemU6IGdldFNpemUodGhpcy5wYWdlU2l6ZSwgd2F0ZXJtYXJrLCBmb250UHJvdmlkZXIpLAoJCWNvbG9yOiB3YXRlcm1hcmsuY29sb3IsCgkJb3BhY2l0eTogd2F0ZXJtYXJrLm9wYWNpdHkKCX07CgoJdmFyIHBhZ2VzID0gdGhpcy53cml0ZXIuY29udGV4dCgpLnBhZ2VzOwoJZm9yICh2YXIgaSA9IDAsIGwgPSBwYWdlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQlwYWdlc1tpXS53YXRlcm1hcmsgPSB3YXRlcm1hcmtPYmplY3Q7Cgl9CgoJZnVuY3Rpb24gZ2V0U2l6ZShwYWdlU2l6ZSwgd2F0ZXJtYXJrLCBmb250UHJvdmlkZXIpIHsKCQl2YXIgd2lkdGggPSBwYWdlU2l6ZS53aWR0aDsKCQl2YXIgaGVpZ2h0ID0gcGFnZVNpemUuaGVpZ2h0OwoJCXZhciB0YXJnZXRXaWR0aCA9IE1hdGguc3FydCh3aWR0aCAqIHdpZHRoICsgaGVpZ2h0ICogaGVpZ2h0KSAqIDAuODsgLyogcGFnZSBkaWFnb25hbCAqIHNhbXBsZSBmYWN0b3IgKi8KCQl2YXIgdGV4dFRvb2xzID0gbmV3IFRleHRUb29scyhmb250UHJvdmlkZXIpOwoJCXZhciBzdHlsZUNvbnRleHRTdGFjayA9IG5ldyBTdHlsZUNvbnRleHRTdGFjayhudWxsLCB7Zm9udDogd2F0ZXJtYXJrLmZvbnQsIGJvbGQ6IHdhdGVybWFyay5ib2xkLCBpdGFsaWNzOiB3YXRlcm1hcmsuaXRhbGljc30pOwoJCXZhciBzaXplOwoKCQkvKioKCQkgKiBCaW5hcnkgc2VhcmNoIHRoZSBiZXN0IGZvbnQgc2l6ZS4KCQkgKiBJbml0aWFsIGJvdW5kcyBbMCwgMTAwMF0KCQkgKiBCcmVhayB3aGVuIHJhbmdlIDwgMQoJCSAqLwoJCXZhciBhID0gMDsKCQl2YXIgYiA9IDEwMDA7CgkJdmFyIGMgPSAoYSArIGIpIC8gMjsKCQl3aGlsZSAoTWF0aC5hYnMoYSAtIGIpID4gMSkgewoJCQlzdHlsZUNvbnRleHRTdGFjay5wdXNoKHsKCQkJCWZvbnRTaXplOiBjCgkJCX0pOwoJCQlzaXplID0gdGV4dFRvb2xzLnNpemVPZlN0cmluZyh3YXRlcm1hcmsudGV4dCwgc3R5bGVDb250ZXh0U3RhY2spOwoJCQlpZiAoc2l6ZS53aWR0aCA+IHRhcmdldFdpZHRoKSB7CgkJCQliID0gYzsKCQkJCWMgPSAoYSArIGIpIC8gMjsKCQkJfSBlbHNlIGlmIChzaXplLndpZHRoIDwgdGFyZ2V0V2lkdGgpIHsKCQkJCWEgPSBjOwoJCQkJYyA9IChhICsgYikgLyAyOwoJCQl9CgkJCXN0eWxlQ29udGV4dFN0YWNrLnBvcCgpOwoJCX0KCQkvKgoJCSBFbmQgYmluYXJ5IHNlYXJjaAoJCSAqLwoJCXJldHVybiB7c2l6ZTogc2l6ZSwgZm9udFNpemU6IGN9OwoJfQp9OwoKZnVuY3Rpb24gZGVjb3JhdGVOb2RlKG5vZGUpIHsKCXZhciB4ID0gbm9kZS54LCB5ID0gbm9kZS55OwoJbm9kZS5wb3NpdGlvbnMgPSBbXTsKCglpZiAoaXNBcnJheShub2RlLmNhbnZhcykpIHsKCQlub2RlLmNhbnZhcy5mb3JFYWNoKGZ1bmN0aW9uICh2ZWN0b3IpIHsKCQkJdmFyIHggPSB2ZWN0b3IueCwgeSA9IHZlY3Rvci55LCB4MSA9IHZlY3Rvci54MSwgeTEgPSB2ZWN0b3IueTEsIHgyID0gdmVjdG9yLngyLCB5MiA9IHZlY3Rvci55MjsKCQkJdmVjdG9yLnJlc2V0WFkgPSBmdW5jdGlvbiAoKSB7CgkJCQl2ZWN0b3IueCA9IHg7CgkJCQl2ZWN0b3IueSA9IHk7CgkJCQl2ZWN0b3IueDEgPSB4MTsKCQkJCXZlY3Rvci55MSA9IHkxOwoJCQkJdmVjdG9yLngyID0geDI7CgkJCQl2ZWN0b3IueTIgPSB5MjsKCQkJfTsKCQl9KTsKCX0KCglub2RlLnJlc2V0WFkgPSBmdW5jdGlvbiAoKSB7CgkJbm9kZS54ID0geDsKCQlub2RlLnkgPSB5OwoJCWlmIChpc0FycmF5KG5vZGUuY2FudmFzKSkgewoJCQlub2RlLmNhbnZhcy5mb3JFYWNoKGZ1bmN0aW9uICh2ZWN0b3IpIHsKCQkJCXZlY3Rvci5yZXNldFhZKCk7CgkJCX0pOwoJCX0KCX07Cn0KCkxheW91dEJ1aWxkZXIucHJvdG90eXBlLnByb2Nlc3NOb2RlID0gZnVuY3Rpb24gKG5vZGUpIHsKCXZhciBzZWxmID0gdGhpczsKCgl0aGlzLmxpbmVhck5vZGVMaXN0LnB1c2gobm9kZSk7CglkZWNvcmF0ZU5vZGUobm9kZSk7CgoJYXBwbHlNYXJnaW5zKGZ1bmN0aW9uICgpIHsKCQl2YXIgdW5icmVha2FibGUgPSBub2RlLnVuYnJlYWthYmxlOwoJCWlmICh1bmJyZWFrYWJsZSkgewoJCQlzZWxmLndyaXRlci5iZWdpblVuYnJlYWthYmxlQmxvY2soKTsKCQl9CgoJCXZhciBhYnNQb3NpdGlvbiA9IG5vZGUuYWJzb2x1dGVQb3NpdGlvbjsKCQlpZiAoYWJzUG9zaXRpb24pIHsKCQkJc2VsZi53cml0ZXIuY29udGV4dCgpLmJlZ2luRGV0YWNoZWRCbG9jaygpOwoJCQlzZWxmLndyaXRlci5jb250ZXh0KCkubW92ZVRvKGFic1Bvc2l0aW9uLnggfHwgMCwgYWJzUG9zaXRpb24ueSB8fCAwKTsKCQl9CgoJCXZhciByZWxQb3NpdGlvbiA9IG5vZGUucmVsYXRpdmVQb3NpdGlvbjsKCQlpZiAocmVsUG9zaXRpb24pIHsKCQkJc2VsZi53cml0ZXIuY29udGV4dCgpLmJlZ2luRGV0YWNoZWRCbG9jaygpOwoJCQlzZWxmLndyaXRlci5jb250ZXh0KCkubW92ZVRvKChyZWxQb3NpdGlvbi54IHx8IDApICsgc2VsZi53cml0ZXIuY29udGV4dCgpLngsIChyZWxQb3NpdGlvbi55IHx8IDApICsgc2VsZi53cml0ZXIuY29udGV4dCgpLnkpOwoJCX0KCgkJaWYgKG5vZGUuc3RhY2spIHsKCQkJc2VsZi5wcm9jZXNzVmVydGljYWxDb250YWluZXIobm9kZSk7CgkJfSBlbHNlIGlmIChub2RlLmNvbHVtbnMpIHsKCQkJc2VsZi5wcm9jZXNzQ29sdW1ucyhub2RlKTsKCQl9IGVsc2UgaWYgKG5vZGUudWwpIHsKCQkJc2VsZi5wcm9jZXNzTGlzdChmYWxzZSwgbm9kZSk7CgkJfSBlbHNlIGlmIChub2RlLm9sKSB7CgkJCXNlbGYucHJvY2Vzc0xpc3QodHJ1ZSwgbm9kZSk7CgkJfSBlbHNlIGlmIChub2RlLnRhYmxlKSB7CgkJCXNlbGYucHJvY2Vzc1RhYmxlKG5vZGUpOwoJCX0gZWxzZSBpZiAobm9kZS50ZXh0ICE9PSB1bmRlZmluZWQpIHsKCQkJc2VsZi5wcm9jZXNzTGVhZihub2RlKTsKCQl9IGVsc2UgaWYgKG5vZGUudG9jKSB7CgkJCXNlbGYucHJvY2Vzc1RvYyhub2RlKTsKCQl9IGVsc2UgaWYgKG5vZGUuaW1hZ2UpIHsKCQkJc2VsZi5wcm9jZXNzSW1hZ2Uobm9kZSk7CgkJfSBlbHNlIGlmIChub2RlLmNhbnZhcykgewoJCQlzZWxmLnByb2Nlc3NDYW52YXMobm9kZSk7CgkJfSBlbHNlIGlmIChub2RlLnFyKSB7CgkJCXNlbGYucHJvY2Vzc1FyKG5vZGUpOwoJCX0gZWxzZSBpZiAoIW5vZGUuX3NwYW4pIHsKCQkJdGhyb3cgJ1VucmVjb2duaXplZCBkb2N1bWVudCBzdHJ1Y3R1cmU6ICcgKyBKU09OLnN0cmluZ2lmeShub2RlLCBmb250U3RyaW5naWZ5KTsKCQl9CgoJCWlmIChhYnNQb3NpdGlvbiB8fCByZWxQb3NpdGlvbikgewoJCQlzZWxmLndyaXRlci5jb250ZXh0KCkuZW5kRGV0YWNoZWRCbG9jaygpOwoJCX0KCgkJaWYgKHVuYnJlYWthYmxlKSB7CgkJCXNlbGYud3JpdGVyLmNvbW1pdFVuYnJlYWthYmxlQmxvY2soKTsKCQl9Cgl9KTsKCglmdW5jdGlvbiBhcHBseU1hcmdpbnMoY2FsbGJhY2spIHsKCQl2YXIgbWFyZ2luID0gbm9kZS5fbWFyZ2luOwoKCQlpZiAobm9kZS5wYWdlQnJlYWsgPT09ICdiZWZvcmUnKSB7CgkJCXNlbGYud3JpdGVyLm1vdmVUb05leHRQYWdlKG5vZGUucGFnZU9yaWVudGF0aW9uKTsKCQl9CgoJCWlmIChtYXJnaW4pIHsKCQkJc2VsZi53cml0ZXIuY29udGV4dCgpLm1vdmVEb3duKG1hcmdpblsxXSk7CgkJCXNlbGYud3JpdGVyLmNvbnRleHQoKS5hZGRNYXJnaW4obWFyZ2luWzBdLCBtYXJnaW5bMl0pOwoJCX0KCgkJY2FsbGJhY2soKTsKCgkJaWYgKG1hcmdpbikgewoJCQlzZWxmLndyaXRlci5jb250ZXh0KCkuYWRkTWFyZ2luKC1tYXJnaW5bMF0sIC1tYXJnaW5bMl0pOwoJCQlzZWxmLndyaXRlci5jb250ZXh0KCkubW92ZURvd24obWFyZ2luWzNdKTsKCQl9CgoJCWlmIChub2RlLnBhZ2VCcmVhayA9PT0gJ2FmdGVyJykgewoJCQlzZWxmLndyaXRlci5tb3ZlVG9OZXh0UGFnZShub2RlLnBhZ2VPcmllbnRhdGlvbik7CgkJfQoJfQp9OwoKLy8gdmVydGljYWwgY29udGFpbmVyCkxheW91dEJ1aWxkZXIucHJvdG90eXBlLnByb2Nlc3NWZXJ0aWNhbENvbnRhaW5lciA9IGZ1bmN0aW9uIChub2RlKSB7Cgl2YXIgc2VsZiA9IHRoaXM7Cglub2RlLnN0YWNrLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKCQlzZWxmLnByb2Nlc3NOb2RlKGl0ZW0pOwoJCWFkZEFsbChub2RlLnBvc2l0aW9ucywgaXRlbS5wb3NpdGlvbnMpOwoKCQkvL1RPRE86IHBhcmFncmFwaCBnYXAKCX0pOwp9OwoKLy8gY29sdW1ucwpMYXlvdXRCdWlsZGVyLnByb3RvdHlwZS5wcm9jZXNzQ29sdW1ucyA9IGZ1bmN0aW9uIChjb2x1bW5Ob2RlKSB7Cgl2YXIgY29sdW1ucyA9IGNvbHVtbk5vZGUuY29sdW1uczsKCXZhciBhdmFpbGFibGVXaWR0aCA9IHRoaXMud3JpdGVyLmNvbnRleHQoKS5hdmFpbGFibGVXaWR0aDsKCXZhciBnYXBzID0gZ2FwQXJyYXkoY29sdW1uTm9kZS5fZ2FwKTsKCglpZiAoZ2FwcykgewoJCWF2YWlsYWJsZVdpZHRoIC09IChnYXBzLmxlbmd0aCAtIDEpICogY29sdW1uTm9kZS5fZ2FwOwoJfQoKCUNvbHVtbkNhbGN1bGF0b3IuYnVpbGRDb2x1bW5XaWR0aHMoY29sdW1ucywgYXZhaWxhYmxlV2lkdGgpOwoJdmFyIHJlc3VsdCA9IHRoaXMucHJvY2Vzc1Jvdyhjb2x1bW5zLCBjb2x1bW5zLCBnYXBzKTsKCWFkZEFsbChjb2x1bW5Ob2RlLnBvc2l0aW9ucywgcmVzdWx0LnBvc2l0aW9ucyk7CgoKCWZ1bmN0aW9uIGdhcEFycmF5KGdhcCkgewoJCWlmICghZ2FwKSB7CgkJCXJldHVybiBudWxsOwoJCX0KCgkJdmFyIGdhcHMgPSBbXTsKCQlnYXBzLnB1c2goMCk7CgoJCWZvciAodmFyIGkgPSBjb2x1bW5zLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHsKCQkJZ2Fwcy5wdXNoKGdhcCk7CgkJfQoKCQlyZXR1cm4gZ2FwczsKCX0KfTsKCkxheW91dEJ1aWxkZXIucHJvdG90eXBlLnByb2Nlc3NSb3cgPSBmdW5jdGlvbiAoY29sdW1ucywgd2lkdGhzLCBnYXBzLCB0YWJsZUJvZHksIHRhYmxlUm93LCBoZWlnaHQpIHsKCXZhciBzZWxmID0gdGhpczsKCXZhciBwYWdlQnJlYWtzID0gW10sIHBvc2l0aW9ucyA9IFtdOwoKCXRoaXMudHJhY2tlci5hdXRvKCdwYWdlQ2hhbmdlZCcsIHN0b3JlUGFnZUJyZWFrRGF0YSwgZnVuY3Rpb24gKCkgewoJCXdpZHRocyA9IHdpZHRocyB8fCBjb2x1bW5zOwoKCQlzZWxmLndyaXRlci5jb250ZXh0KCkuYmVnaW5Db2x1bW5Hcm91cCgpOwoKCQlmb3IgKHZhciBpID0gMCwgbCA9IGNvbHVtbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJCXZhciBjb2x1bW4gPSBjb2x1bW5zW2ldOwoJCQl2YXIgd2lkdGggPSB3aWR0aHNbaV0uX2NhbGNXaWR0aDsKCQkJdmFyIGxlZnRPZmZzZXQgPSBjb2xMZWZ0T2Zmc2V0KGkpOwoKCQkJaWYgKGNvbHVtbi5jb2xTcGFuICYmIGNvbHVtbi5jb2xTcGFuID4gMSkgewoJCQkJZm9yICh2YXIgaiA9IDE7IGogPCBjb2x1bW4uY29sU3BhbjsgaisrKSB7CgkJCQkJd2lkdGggKz0gd2lkdGhzWysraV0uX2NhbGNXaWR0aCArIGdhcHNbaV07CgkJCQl9CgkJCX0KCgkJCXNlbGYud3JpdGVyLmNvbnRleHQoKS5iZWdpbkNvbHVtbih3aWR0aCwgbGVmdE9mZnNldCwgZ2V0RW5kaW5nQ2VsbChjb2x1bW4sIGkpKTsKCQkJaWYgKCFjb2x1bW4uX3NwYW4pIHsKCQkJCXNlbGYucHJvY2Vzc05vZGUoY29sdW1uKTsKCQkJCWFkZEFsbChwb3NpdGlvbnMsIGNvbHVtbi5wb3NpdGlvbnMpOwoJCQl9IGVsc2UgaWYgKGNvbHVtbi5fY29sdW1uRW5kaW5nQ29udGV4dCkgewoJCQkJLy8gcm93LXNwYW4gZW5kaW5nCgkJCQlzZWxmLndyaXRlci5jb250ZXh0KCkubWFya0VuZGluZyhjb2x1bW4pOwoJCQl9CgkJfQoKCQlzZWxmLndyaXRlci5jb250ZXh0KCkuY29tcGxldGVDb2x1bW5Hcm91cChoZWlnaHQpOwoJfSk7CgoJcmV0dXJuIHtwYWdlQnJlYWtzOiBwYWdlQnJlYWtzLCBwb3NpdGlvbnM6IHBvc2l0aW9uc307CgoJZnVuY3Rpb24gc3RvcmVQYWdlQnJlYWtEYXRhKGRhdGEpIHsKCQl2YXIgcGFnZURlc2M7CgoJCWZvciAodmFyIGkgPSAwLCBsID0gcGFnZUJyZWFrcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQkJdmFyIGRlc2MgPSBwYWdlQnJlYWtzW2ldOwoJCQlpZiAoZGVzYy5wcmV2UGFnZSA9PT0gZGF0YS5wcmV2UGFnZSkgewoJCQkJcGFnZURlc2MgPSBkZXNjOwoJCQkJYnJlYWs7CgkJCX0KCQl9CgoJCWlmICghcGFnZURlc2MpIHsKCQkJcGFnZURlc2MgPSBkYXRhOwoJCQlwYWdlQnJlYWtzLnB1c2gocGFnZURlc2MpOwoJCX0KCQlwYWdlRGVzYy5wcmV2WSA9IE1hdGgubWF4KHBhZ2VEZXNjLnByZXZZLCBkYXRhLnByZXZZKTsKCQlwYWdlRGVzYy55ID0gTWF0aC5taW4ocGFnZURlc2MueSwgZGF0YS55KTsKCX0KCglmdW5jdGlvbiBjb2xMZWZ0T2Zmc2V0KGkpIHsKCQlpZiAoZ2FwcyAmJiBnYXBzLmxlbmd0aCA+IGkpIHsKCQkJcmV0dXJuIGdhcHNbaV07CgkJfQoJCXJldHVybiAwOwoJfQoKCWZ1bmN0aW9uIGdldEVuZGluZ0NlbGwoY29sdW1uLCBjb2x1bW5JbmRleCkgewoJCWlmIChjb2x1bW4ucm93U3BhbiAmJiBjb2x1bW4ucm93U3BhbiA+IDEpIHsKCQkJdmFyIGVuZGluZ1JvdyA9IHRhYmxlUm93ICsgY29sdW1uLnJvd1NwYW4gLSAxOwoJCQlpZiAoZW5kaW5nUm93ID49IHRhYmxlQm9keS5sZW5ndGgpIHsKCQkJCXRocm93ICdSb3cgc3BhbiBmb3IgY29sdW1uICcgKyBjb2x1bW5JbmRleCArICcgKHdpdGggaW5kZXhlcyBzdGFydGluZyBmcm9tIDApIGV4Y2VlZGVkIHJvdyBjb3VudCc7CgkJCX0KCQkJcmV0dXJuIHRhYmxlQm9keVtlbmRpbmdSb3ddW2NvbHVtbkluZGV4XTsKCQl9CgoJCXJldHVybiBudWxsOwoJfQp9OwoKLy8gbGlzdHMKTGF5b3V0QnVpbGRlci5wcm90b3R5cGUucHJvY2Vzc0xpc3QgPSBmdW5jdGlvbiAob3JkZXJlZExpc3QsIG5vZGUpIHsKCXZhciBzZWxmID0gdGhpcywKCQlpdGVtcyA9IG9yZGVyZWRMaXN0ID8gbm9kZS5vbCA6IG5vZGUudWwsCgkJZ2FwU2l6ZSA9IG5vZGUuX2dhcFNpemU7CgoJdGhpcy53cml0ZXIuY29udGV4dCgpLmFkZE1hcmdpbihnYXBTaXplLndpZHRoKTsKCgl2YXIgbmV4dE1hcmtlcjsKCXRoaXMudHJhY2tlci5hdXRvKCdsaW5lQWRkZWQnLCBhZGRNYXJrZXJUb0ZpcnN0TGVhZiwgZnVuY3Rpb24gKCkgewoJCWl0ZW1zLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKCQkJbmV4dE1hcmtlciA9IGl0ZW0ubGlzdE1hcmtlcjsKCQkJc2VsZi5wcm9jZXNzTm9kZShpdGVtKTsKCQkJYWRkQWxsKG5vZGUucG9zaXRpb25zLCBpdGVtLnBvc2l0aW9ucyk7CgkJfSk7Cgl9KTsKCgl0aGlzLndyaXRlci5jb250ZXh0KCkuYWRkTWFyZ2luKC1nYXBTaXplLndpZHRoKTsKCglmdW5jdGlvbiBhZGRNYXJrZXJUb0ZpcnN0TGVhZihsaW5lKSB7CgkJLy8gSSdtIG5vdCB2ZXJ5IGhhcHB5IHdpdGggdGhlIHdheSBsaXN0IHByb2Nlc3NpbmcgaXMgaW1wbGVtZW50ZWQKCQkvLyAoYm90aCBjb2RlIGFuZCBhbGdvcml0aG0gc2hvdWxkIGJlIHJldGhpbmtlZCkKCQlpZiAobmV4dE1hcmtlcikgewoJCQl2YXIgbWFya2VyID0gbmV4dE1hcmtlcjsKCQkJbmV4dE1hcmtlciA9IG51bGw7CgoJCQlpZiAobWFya2VyLmNhbnZhcykgewoJCQkJdmFyIHZlY3RvciA9IG1hcmtlci5jYW52YXNbMF07CgoJCQkJb2Zmc2V0VmVjdG9yKHZlY3RvciwgLW1hcmtlci5fbWluV2lkdGgsIDApOwoJCQkJc2VsZi53cml0ZXIuYWRkVmVjdG9yKHZlY3Rvcik7CgkJCX0gZWxzZSBpZiAobWFya2VyLl9pbmxpbmVzKSB7CgkJCQl2YXIgbWFya2VyTGluZSA9IG5ldyBMaW5lKHNlbGYucGFnZVNpemUud2lkdGgpOwoJCQkJbWFya2VyTGluZS5hZGRJbmxpbmUobWFya2VyLl9pbmxpbmVzWzBdKTsKCQkJCW1hcmtlckxpbmUueCA9IC1tYXJrZXIuX21pbldpZHRoOwoJCQkJbWFya2VyTGluZS55ID0gbGluZS5nZXRBc2NlbmRlckhlaWdodCgpIC0gbWFya2VyTGluZS5nZXRBc2NlbmRlckhlaWdodCgpOwoJCQkJc2VsZi53cml0ZXIuYWRkTGluZShtYXJrZXJMaW5lLCB0cnVlKTsKCQkJfQoJCX0KCX0KfTsKCi8vIHRhYmxlcwpMYXlvdXRCdWlsZGVyLnByb3RvdHlwZS5wcm9jZXNzVGFibGUgPSBmdW5jdGlvbiAodGFibGVOb2RlKSB7Cgl2YXIgcHJvY2Vzc29yID0gbmV3IFRhYmxlUHJvY2Vzc29yKHRhYmxlTm9kZSk7CgoJcHJvY2Vzc29yLmJlZ2luVGFibGUodGhpcy53cml0ZXIpOwoKCXZhciByb3dIZWlnaHRzID0gdGFibGVOb2RlLnRhYmxlLmhlaWdodHM7Cglmb3IgKHZhciBpID0gMCwgbCA9IHRhYmxlTm9kZS50YWJsZS5ib2R5Lmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCXByb2Nlc3Nvci5iZWdpblJvdyhpLCB0aGlzLndyaXRlcik7CgoJCXZhciBoZWlnaHQ7CgkJaWYgKGlzRnVuY3Rpb24ocm93SGVpZ2h0cykpIHsKCQkJaGVpZ2h0ID0gcm93SGVpZ2h0cyhpKTsKCQl9IGVsc2UgaWYgKGlzQXJyYXkocm93SGVpZ2h0cykpIHsKCQkJaGVpZ2h0ID0gcm93SGVpZ2h0c1tpXTsKCQl9IGVsc2UgewoJCQloZWlnaHQgPSByb3dIZWlnaHRzOwoJCX0KCgkJaWYgKGhlaWdodCA9PT0gJ2F1dG8nKSB7CgkJCWhlaWdodCA9IHVuZGVmaW5lZDsKCQl9CgoJCXZhciByZXN1bHQgPSB0aGlzLnByb2Nlc3NSb3codGFibGVOb2RlLnRhYmxlLmJvZHlbaV0sIHRhYmxlTm9kZS50YWJsZS53aWR0aHMsIHRhYmxlTm9kZS5fb2Zmc2V0cy5vZmZzZXRzLCB0YWJsZU5vZGUudGFibGUuYm9keSwgaSwgaGVpZ2h0KTsKCQlhZGRBbGwodGFibGVOb2RlLnBvc2l0aW9ucywgcmVzdWx0LnBvc2l0aW9ucyk7CgoJCXByb2Nlc3Nvci5lbmRSb3coaSwgdGhpcy53cml0ZXIsIHJlc3VsdC5wYWdlQnJlYWtzKTsKCX0KCglwcm9jZXNzb3IuZW5kVGFibGUodGhpcy53cml0ZXIpOwp9OwoKLy8gbGVhZnMgKHRleHRzKQpMYXlvdXRCdWlsZGVyLnByb3RvdHlwZS5wcm9jZXNzTGVhZiA9IGZ1bmN0aW9uIChub2RlKSB7Cgl2YXIgbGluZSA9IHRoaXMuYnVpbGROZXh0TGluZShub2RlKTsKCXZhciBjdXJyZW50SGVpZ2h0ID0gKGxpbmUpID8gbGluZS5nZXRIZWlnaHQoKSA6IDA7Cgl2YXIgbWF4SGVpZ2h0ID0gbm9kZS5tYXhIZWlnaHQgfHwgLTE7CgoJaWYgKG5vZGUuX3RvY0l0ZW1SZWYpIHsKCQlsaW5lLl9wYWdlTm9kZVJlZiA9IG5vZGUuX3RvY0l0ZW1SZWY7Cgl9CgoJaWYgKG5vZGUuX3BhZ2VSZWYpIHsKCQlsaW5lLl9wYWdlTm9kZVJlZiA9IG5vZGUuX3BhZ2VSZWYuX25vZGVSZWY7Cgl9CgoJd2hpbGUgKGxpbmUgJiYgKG1heEhlaWdodCA9PT0gLTEgfHwgY3VycmVudEhlaWdodCA8IG1heEhlaWdodCkpIHsKCQl2YXIgcG9zaXRpb25zID0gdGhpcy53cml0ZXIuYWRkTGluZShsaW5lKTsKCQlub2RlLnBvc2l0aW9ucy5wdXNoKHBvc2l0aW9ucyk7CgkJbGluZSA9IHRoaXMuYnVpbGROZXh0TGluZShub2RlKTsKCQlpZiAobGluZSkgewoJCQljdXJyZW50SGVpZ2h0ICs9IGxpbmUuZ2V0SGVpZ2h0KCk7CgkJfQoJfQp9OwoKTGF5b3V0QnVpbGRlci5wcm90b3R5cGUucHJvY2Vzc1RvYyA9IGZ1bmN0aW9uIChub2RlKSB7CglpZiAobm9kZS50b2MudGl0bGUpIHsKCQl0aGlzLnByb2Nlc3NOb2RlKG5vZGUudG9jLnRpdGxlKTsKCX0KCXRoaXMucHJvY2Vzc05vZGUobm9kZS50b2MuX3RhYmxlKTsKfTsKCkxheW91dEJ1aWxkZXIucHJvdG90eXBlLmJ1aWxkTmV4dExpbmUgPSBmdW5jdGlvbiAodGV4dE5vZGUpIHsKCglmdW5jdGlvbiBjbG9uZUlubGluZShpbmxpbmUpIHsKCQl2YXIgbmV3SW5saW5lID0gaW5saW5lLmNvbnN0cnVjdG9yKCk7CgkJZm9yICh2YXIga2V5IGluIGlubGluZSkgewoJCQluZXdJbmxpbmVba2V5XSA9IGlubGluZVtrZXldOwoJCX0KCQlyZXR1cm4gbmV3SW5saW5lOwoJfQoKCWlmICghdGV4dE5vZGUuX2lubGluZXMgfHwgdGV4dE5vZGUuX2lubGluZXMubGVuZ3RoID09PSAwKSB7CgkJcmV0dXJuIG51bGw7Cgl9CgoJdmFyIGxpbmUgPSBuZXcgTGluZSh0aGlzLndyaXRlci5jb250ZXh0KCkuYXZhaWxhYmxlV2lkdGgpOwoJdmFyIHRleHRUb29scyA9IG5ldyBUZXh0VG9vbHMobnVsbCk7CgoJd2hpbGUgKHRleHROb2RlLl9pbmxpbmVzICYmIHRleHROb2RlLl9pbmxpbmVzLmxlbmd0aCA+IDAgJiYgbGluZS5oYXNFbm91Z2hTcGFjZUZvcklubGluZSh0ZXh0Tm9kZS5faW5saW5lc1swXSkpIHsKCQl2YXIgaW5saW5lID0gdGV4dE5vZGUuX2lubGluZXMuc2hpZnQoKTsKCgkJaWYgKCFpbmxpbmUubm9XcmFwICYmIGlubGluZS50ZXh0Lmxlbmd0aCA+IDEgJiYgaW5saW5lLndpZHRoID4gbGluZS5tYXhXaWR0aCkgewoJCQl2YXIgd2lkdGhQZXJDaGFyID0gaW5saW5lLndpZHRoIC8gaW5saW5lLnRleHQubGVuZ3RoOwoJCQl2YXIgbWF4Q2hhcnMgPSBNYXRoLmZsb29yKGxpbmUubWF4V2lkdGggLyB3aWR0aFBlckNoYXIpOwoJCQlpZiAobWF4Q2hhcnMgPCAxKSB7CgkJCQltYXhDaGFycyA9IDE7CgkJCX0KCQkJaWYgKG1heENoYXJzIDwgaW5saW5lLnRleHQubGVuZ3RoKSB7CgkJCQl2YXIgbmV3SW5saW5lID0gY2xvbmVJbmxpbmUoaW5saW5lKTsKCgkJCQluZXdJbmxpbmUudGV4dCA9IGlubGluZS50ZXh0LnN1YnN0cihtYXhDaGFycyk7CgkJCQlpbmxpbmUudGV4dCA9IGlubGluZS50ZXh0LnN1YnN0cigwLCBtYXhDaGFycyk7CgoJCQkJbmV3SW5saW5lLndpZHRoID0gdGV4dFRvb2xzLndpZHRoT2ZTdHJpbmcobmV3SW5saW5lLnRleHQsIG5ld0lubGluZS5mb250LCBuZXdJbmxpbmUuZm9udFNpemUsIG5ld0lubGluZS5jaGFyYWN0ZXJTcGFjaW5nLCBuZXdJbmxpbmUuZm9udEZlYXR1cmVzKTsKCQkJCWlubGluZS53aWR0aCA9IHRleHRUb29scy53aWR0aE9mU3RyaW5nKGlubGluZS50ZXh0LCBpbmxpbmUuZm9udCwgaW5saW5lLmZvbnRTaXplLCBpbmxpbmUuY2hhcmFjdGVyU3BhY2luZywgaW5saW5lLmZvbnRGZWF0dXJlcyk7CgoJCQkJdGV4dE5vZGUuX2lubGluZXMudW5zaGlmdChuZXdJbmxpbmUpOwoJCQl9CgkJfQoKCQlsaW5lLmFkZElubGluZShpbmxpbmUpOwoJfQoKCWxpbmUubGFzdExpbmVJblBhcmFncmFwaCA9IHRleHROb2RlLl9pbmxpbmVzLmxlbmd0aCA9PT0gMDsKCglyZXR1cm4gbGluZTsKfTsKCi8vIGltYWdlcwpMYXlvdXRCdWlsZGVyLnByb3RvdHlwZS5wcm9jZXNzSW1hZ2UgPSBmdW5jdGlvbiAobm9kZSkgewoJdmFyIHBvc2l0aW9uID0gdGhpcy53cml0ZXIuYWRkSW1hZ2Uobm9kZSk7Cglub2RlLnBvc2l0aW9ucy5wdXNoKHBvc2l0aW9uKTsKfTsKCkxheW91dEJ1aWxkZXIucHJvdG90eXBlLnByb2Nlc3NDYW52YXMgPSBmdW5jdGlvbiAobm9kZSkgewoJdmFyIGhlaWdodCA9IG5vZGUuX21pbkhlaWdodDsKCglpZiAobm9kZS5hYnNvbHV0ZVBvc2l0aW9uID09PSB1bmRlZmluZWQgJiYgdGhpcy53cml0ZXIuY29udGV4dCgpLmF2YWlsYWJsZUhlaWdodCA8IGhlaWdodCkgewoJCS8vIFRPRE86IHN1cHBvcnQgZm9yIGNhbnZhcyBsYXJnZXIgdGhhbiBhIHBhZ2UKCQkvLyBUT0RPOiBzdXBwb3J0IGZvciBvdGhlciBvdmVyZmxvdyBtZXRob2RzCgoJCXRoaXMud3JpdGVyLm1vdmVUb05leHRQYWdlKCk7Cgl9CgoJdGhpcy53cml0ZXIuYWxpZ25DYW52YXMobm9kZSk7CgoJbm9kZS5jYW52YXMuZm9yRWFjaChmdW5jdGlvbiAodmVjdG9yKSB7CgkJdmFyIHBvc2l0aW9uID0gdGhpcy53cml0ZXIuYWRkVmVjdG9yKHZlY3Rvcik7CgkJbm9kZS5wb3NpdGlvbnMucHVzaChwb3NpdGlvbik7Cgl9LCB0aGlzKTsKCgl0aGlzLndyaXRlci5jb250ZXh0KCkubW92ZURvd24oaGVpZ2h0KTsKfTsKCkxheW91dEJ1aWxkZXIucHJvdG90eXBlLnByb2Nlc3NRciA9IGZ1bmN0aW9uIChub2RlKSB7Cgl2YXIgcG9zaXRpb24gPSB0aGlzLndyaXRlci5hZGRRcihub2RlKTsKCW5vZGUucG9zaXRpb25zLnB1c2gocG9zaXRpb24pOwp9OwoKbW9kdWxlLmV4cG9ydHMgPSBMYXlvdXRCdWlsZGVyOwoKCi8qKiovIH0pLAovKiAxMjkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oQnVmZmVyKSB7Cgp2YXIgaXNTdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzU3RyaW5nOwp2YXIgaXNOdW1iZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzTnVtYmVyOwp2YXIgaXNCb29sZWFuID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5pc0Jvb2xlYW47CnZhciBpc0FycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5pc0FycmF5Owp2YXIgaXNVbmRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzVW5kZWZpbmVkOwp2YXIgZm9udFN0cmluZ2lmeSA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuZm9udFN0cmluZ2lmeTsKCmZ1bmN0aW9uIERvY1ByZXByb2Nlc3NvcigpIHsKCn0KCkRvY1ByZXByb2Nlc3Nvci5wcm90b3R5cGUucHJlcHJvY2Vzc0RvY3VtZW50ID0gZnVuY3Rpb24gKGRvY1N0cnVjdHVyZSkgewoJdGhpcy50b2NzID0gW107Cgl0aGlzLm5vZGVSZWZlcmVuY2VzID0gW107CglyZXR1cm4gdGhpcy5wcmVwcm9jZXNzTm9kZShkb2NTdHJ1Y3R1cmUpOwp9OwoKRG9jUHJlcHJvY2Vzc29yLnByb3RvdHlwZS5wcmVwcm9jZXNzTm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7CgkvLyBleHBhbmQgc2hvcnRjdXRzIGFuZCBjYXN0aW5nIHZhbHVlcwoJaWYgKGlzQXJyYXkobm9kZSkpIHsKCQlub2RlID0ge3N0YWNrOiBub2RlfTsKCX0gZWxzZSBpZiAoaXNTdHJpbmcobm9kZSkpIHsKCQlub2RlID0ge3RleHQ6IG5vZGV9OwoJfSBlbHNlIGlmIChpc051bWJlcihub2RlKSB8fCBpc0Jvb2xlYW4obm9kZSkpIHsKCQlub2RlID0ge3RleHQ6IG5vZGUudG9TdHJpbmcoKX07Cgl9IGVsc2UgaWYgKG5vZGUgPT09IG51bGwpIHsKCQlub2RlID0ge3RleHQ6ICcnfTsKCX0gZWxzZSBpZiAoT2JqZWN0LmtleXMobm9kZSkubGVuZ3RoID09PSAwKSB7IC8vIGVtcHR5IG9iamVjdAoJCW5vZGUgPSB7dGV4dDogJyd9OwoJfQoKCWlmIChub2RlLmNvbHVtbnMpIHsKCQlyZXR1cm4gdGhpcy5wcmVwcm9jZXNzQ29sdW1ucyhub2RlKTsKCX0gZWxzZSBpZiAobm9kZS5zdGFjaykgewoJCXJldHVybiB0aGlzLnByZXByb2Nlc3NWZXJ0aWNhbENvbnRhaW5lcihub2RlKTsKCX0gZWxzZSBpZiAobm9kZS51bCkgewoJCXJldHVybiB0aGlzLnByZXByb2Nlc3NMaXN0KG5vZGUpOwoJfSBlbHNlIGlmIChub2RlLm9sKSB7CgkJcmV0dXJuIHRoaXMucHJlcHJvY2Vzc0xpc3Qobm9kZSk7Cgl9IGVsc2UgaWYgKG5vZGUudGFibGUpIHsKCQlyZXR1cm4gdGhpcy5wcmVwcm9jZXNzVGFibGUobm9kZSk7Cgl9IGVsc2UgaWYgKG5vZGUudGV4dCAhPT0gdW5kZWZpbmVkKSB7CgkJcmV0dXJuIHRoaXMucHJlcHJvY2Vzc1RleHQobm9kZSk7Cgl9IGVsc2UgaWYgKG5vZGUudG9jKSB7CgkJcmV0dXJuIHRoaXMucHJlcHJvY2Vzc1RvYyhub2RlKTsKCX0gZWxzZSBpZiAobm9kZS5pbWFnZSkgewoJCXJldHVybiB0aGlzLnByZXByb2Nlc3NJbWFnZShub2RlKTsKCX0gZWxzZSBpZiAobm9kZS5jYW52YXMpIHsKCQlyZXR1cm4gdGhpcy5wcmVwcm9jZXNzQ2FudmFzKG5vZGUpOwoJfSBlbHNlIGlmIChub2RlLnFyKSB7CgkJcmV0dXJuIHRoaXMucHJlcHJvY2Vzc1FyKG5vZGUpOwoJfSBlbHNlIGlmIChub2RlLnBhZ2VSZWZlcmVuY2UgfHwgbm9kZS50ZXh0UmVmZXJlbmNlKSB7CgkJcmV0dXJuIHRoaXMucHJlcHJvY2Vzc1RleHQobm9kZSk7Cgl9IGVsc2UgewoJCXRocm93ICdVbnJlY29nbml6ZWQgZG9jdW1lbnQgc3RydWN0dXJlOiAnICsgSlNPTi5zdHJpbmdpZnkobm9kZSwgZm9udFN0cmluZ2lmeSk7Cgl9Cn07CgpEb2NQcmVwcm9jZXNzb3IucHJvdG90eXBlLnByZXByb2Nlc3NDb2x1bW5zID0gZnVuY3Rpb24gKG5vZGUpIHsKCXZhciBjb2x1bW5zID0gbm9kZS5jb2x1bW5zOwoKCWZvciAodmFyIGkgPSAwLCBsID0gY29sdW1ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQljb2x1bW5zW2ldID0gdGhpcy5wcmVwcm9jZXNzTm9kZShjb2x1bW5zW2ldKTsKCX0KCglyZXR1cm4gbm9kZTsKfTsKCkRvY1ByZXByb2Nlc3Nvci5wcm90b3R5cGUucHJlcHJvY2Vzc1ZlcnRpY2FsQ29udGFpbmVyID0gZnVuY3Rpb24gKG5vZGUpIHsKCXZhciBpdGVtcyA9IG5vZGUuc3RhY2s7CgoJZm9yICh2YXIgaSA9IDAsIGwgPSBpdGVtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQlpdGVtc1tpXSA9IHRoaXMucHJlcHJvY2Vzc05vZGUoaXRlbXNbaV0pOwoJfQoKCXJldHVybiBub2RlOwp9OwoKRG9jUHJlcHJvY2Vzc29yLnByb3RvdHlwZS5wcmVwcm9jZXNzTGlzdCA9IGZ1bmN0aW9uIChub2RlKSB7Cgl2YXIgaXRlbXMgPSBub2RlLnVsIHx8IG5vZGUub2w7CgoJZm9yICh2YXIgaSA9IDAsIGwgPSBpdGVtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQlpdGVtc1tpXSA9IHRoaXMucHJlcHJvY2Vzc05vZGUoaXRlbXNbaV0pOwoJfQoKCXJldHVybiBub2RlOwp9OwoKRG9jUHJlcHJvY2Vzc29yLnByb3RvdHlwZS5wcmVwcm9jZXNzVGFibGUgPSBmdW5jdGlvbiAobm9kZSkgewoJdmFyIGNvbCwgcm93LCBjb2xzLCByb3dzOwoKCWZvciAoY29sID0gMCwgY29scyA9IG5vZGUudGFibGUuYm9keVswXS5sZW5ndGg7IGNvbCA8IGNvbHM7IGNvbCsrKSB7CgkJZm9yIChyb3cgPSAwLCByb3dzID0gbm9kZS50YWJsZS5ib2R5Lmxlbmd0aDsgcm93IDwgcm93czsgcm93KyspIHsKCQkJdmFyIHJvd0RhdGEgPSBub2RlLnRhYmxlLmJvZHlbcm93XTsKCQkJdmFyIGRhdGEgPSByb3dEYXRhW2NvbF07CgkJCWlmIChkYXRhICE9PSB1bmRlZmluZWQpIHsKCQkJCWlmIChkYXRhID09PSBudWxsKSB7IC8vIHRyYW5zZm9ybSB0byBvYmplY3QKCQkJCQlkYXRhID0gJyc7CgkJCQl9CgkJCQlpZiAoIWRhdGEuX3NwYW4pIHsKCQkJCQlyb3dEYXRhW2NvbF0gPSB0aGlzLnByZXByb2Nlc3NOb2RlKGRhdGEpOwoJCQkJfQoJCQl9CgkJfQoJfQoKCXJldHVybiBub2RlOwp9OwoKRG9jUHJlcHJvY2Vzc29yLnByb3RvdHlwZS5wcmVwcm9jZXNzVGV4dCA9IGZ1bmN0aW9uIChub2RlKSB7CglpZiAobm9kZS50b2NJdGVtKSB7CgkJaWYgKCFpc0FycmF5KG5vZGUudG9jSXRlbSkpIHsKCQkJbm9kZS50b2NJdGVtID0gW25vZGUudG9jSXRlbV07CgkJfQoKCQlmb3IgKHZhciBpID0gMCwgbCA9IG5vZGUudG9jSXRlbS5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQkJaWYgKCFpc1N0cmluZyhub2RlLnRvY0l0ZW1baV0pKSB7CgkJCQlub2RlLnRvY0l0ZW1baV0gPSAnX2RlZmF1bHRfJzsKCQkJfQoKCQkJdmFyIHRvY0l0ZW1JZCA9IG5vZGUudG9jSXRlbVtpXTsKCgkJCWlmICghdGhpcy50b2NzW3RvY0l0ZW1JZF0pIHsKCQkJCXRoaXMudG9jc1t0b2NJdGVtSWRdID0ge3RvYzoge19pdGVtczogW10sIF9wc2V1ZG86IHRydWV9fTsKCQkJfQoKCQkJdGhpcy50b2NzW3RvY0l0ZW1JZF0udG9jLl9pdGVtcy5wdXNoKG5vZGUpOwoJCX0KCX0KCglpZiAobm9kZS5pZCkgewoJCWlmICh0aGlzLm5vZGVSZWZlcmVuY2VzW25vZGUuaWRdKSB7CgkJCWlmICghdGhpcy5ub2RlUmVmZXJlbmNlc1tub2RlLmlkXS5fcHNldWRvKSB7CgkJCQl0aHJvdyAiTm9kZSBpZCAnIiArIG5vZGUuaWQgKyAiJyBhbHJlYWR5IGV4aXN0cyI7CgkJCX0KCgkJCXRoaXMubm9kZVJlZmVyZW5jZXNbbm9kZS5pZF0uX25vZGVSZWYgPSBub2RlOwoJCQl0aGlzLm5vZGVSZWZlcmVuY2VzW25vZGUuaWRdLl9wc2V1ZG8gPSBmYWxzZTsKCQl9IGVsc2UgewoJCQl0aGlzLm5vZGVSZWZlcmVuY2VzW25vZGUuaWRdID0ge19ub2RlUmVmOiBub2RlfTsKCQl9Cgl9CgoJaWYgKG5vZGUucGFnZVJlZmVyZW5jZSkgewoJCWlmICghdGhpcy5ub2RlUmVmZXJlbmNlc1tub2RlLnBhZ2VSZWZlcmVuY2VdKSB7CgkJCXRoaXMubm9kZVJlZmVyZW5jZXNbbm9kZS5wYWdlUmVmZXJlbmNlXSA9IHtfbm9kZVJlZjoge30sIF9wc2V1ZG86IHRydWV9OwoJCX0KCQlub2RlLnRleHQgPSAnMDAwMDAnOwoJCW5vZGUuX3BhZ2VSZWYgPSB0aGlzLm5vZGVSZWZlcmVuY2VzW25vZGUucGFnZVJlZmVyZW5jZV07Cgl9CgoJaWYgKG5vZGUudGV4dFJlZmVyZW5jZSkgewoJCWlmICghdGhpcy5ub2RlUmVmZXJlbmNlc1tub2RlLnRleHRSZWZlcmVuY2VdKSB7CgkJCXRoaXMubm9kZVJlZmVyZW5jZXNbbm9kZS50ZXh0UmVmZXJlbmNlXSA9IHtfbm9kZVJlZjoge30sIF9wc2V1ZG86IHRydWV9OwoJCX0KCgkJbm9kZS50ZXh0ID0gJyc7CgkJbm9kZS5fdGV4dFJlZiA9IHRoaXMubm9kZVJlZmVyZW5jZXNbbm9kZS50ZXh0UmVmZXJlbmNlXTsKCX0KCglpZiAobm9kZS50ZXh0ICYmIG5vZGUudGV4dC50ZXh0KSB7CgkJbm9kZS50ZXh0ID0gW3RoaXMucHJlcHJvY2Vzc05vZGUobm9kZS50ZXh0KV07Cgl9CgoJcmV0dXJuIG5vZGU7Cn07CgpEb2NQcmVwcm9jZXNzb3IucHJvdG90eXBlLnByZXByb2Nlc3NUb2MgPSBmdW5jdGlvbiAobm9kZSkgewoJaWYgKCFub2RlLnRvYy5pZCkgewoJCW5vZGUudG9jLmlkID0gJ19kZWZhdWx0Xyc7Cgl9CgoJbm9kZS50b2MudGl0bGUgPSBub2RlLnRvYy50aXRsZSA/IHRoaXMucHJlcHJvY2Vzc05vZGUobm9kZS50b2MudGl0bGUpIDogbnVsbDsKCW5vZGUudG9jLl9pdGVtcyA9IFtdOwoKCWlmICh0aGlzLnRvY3Nbbm9kZS50b2MuaWRdKSB7CgkJaWYgKCF0aGlzLnRvY3Nbbm9kZS50b2MuaWRdLnRvYy5fcHNldWRvKSB7CgkJCXRocm93ICJUT0MgJyIgKyBub2RlLnRvYy5pZCArICInIGFscmVhZHkgZXhpc3RzIjsKCQl9CgoJCW5vZGUudG9jLl9pdGVtcyA9IHRoaXMudG9jc1tub2RlLnRvYy5pZF0udG9jLl9pdGVtczsKCX0KCgl0aGlzLnRvY3Nbbm9kZS50b2MuaWRdID0gbm9kZTsKCglyZXR1cm4gbm9kZTsKfTsKCkRvY1ByZXByb2Nlc3Nvci5wcm90b3R5cGUucHJlcHJvY2Vzc0ltYWdlID0gZnVuY3Rpb24gKG5vZGUpIHsKCWlmICghaXNVbmRlZmluZWQobm9kZS5pbWFnZS50eXBlKSAmJiAhaXNVbmRlZmluZWQobm9kZS5pbWFnZS5kYXRhKSAmJiAobm9kZS5pbWFnZS50eXBlID09PSAnQnVmZmVyJykgJiYgaXNBcnJheShub2RlLmltYWdlLmRhdGEpKSB7CgkJbm9kZS5pbWFnZSA9IEJ1ZmZlci5mcm9tKG5vZGUuaW1hZ2UuZGF0YSk7Cgl9CglyZXR1cm4gbm9kZTsKfTsKCkRvY1ByZXByb2Nlc3Nvci5wcm90b3R5cGUucHJlcHJvY2Vzc0NhbnZhcyA9IGZ1bmN0aW9uIChub2RlKSB7CglyZXR1cm4gbm9kZTsKfTsKCkRvY1ByZXByb2Nlc3Nvci5wcm90b3R5cGUucHJlcHJvY2Vzc1FyID0gZnVuY3Rpb24gKG5vZGUpIHsKCXJldHVybiBub2RlOwp9OwoKbW9kdWxlLmV4cG9ydHMgPSBEb2NQcmVwcm9jZXNzb3I7Ci8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpLkJ1ZmZlcikpCgovKioqLyB9KSwKLyogMTMwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKLyplc2xpbnQgbm8tdW51c2VkLXZhcnM6IFsiZXJyb3IiLCB7ImFyZ3MiOiAibm9uZSJ9XSovCgoKCnZhciBUZXh0VG9vbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQyKTsKdmFyIFN0eWxlQ29udGV4dFN0YWNrID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4MCk7CnZhciBDb2x1bW5DYWxjdWxhdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NCk7CnZhciBpc1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNTdHJpbmc7CnZhciBpc051bWJlciA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNOdW1iZXI7CnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNPYmplY3Q7CnZhciBpc0FycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5pc0FycmF5Owp2YXIgZm9udFN0cmluZ2lmeSA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuZm9udFN0cmluZ2lmeTsKdmFyIHBhY2sgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLnBhY2s7CnZhciBxckVuY29kZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzNCk7CgovKioKICogQHByaXZhdGUKICovCmZ1bmN0aW9uIERvY01lYXN1cmUoZm9udFByb3ZpZGVyLCBzdHlsZURpY3Rpb25hcnksIGRlZmF1bHRTdHlsZSwgaW1hZ2VNZWFzdXJlLCB0YWJsZUxheW91dHMsIGltYWdlcykgewoJdGhpcy50ZXh0VG9vbHMgPSBuZXcgVGV4dFRvb2xzKGZvbnRQcm92aWRlcik7Cgl0aGlzLnN0eWxlU3RhY2sgPSBuZXcgU3R5bGVDb250ZXh0U3RhY2soc3R5bGVEaWN0aW9uYXJ5LCBkZWZhdWx0U3R5bGUpOwoJdGhpcy5pbWFnZU1lYXN1cmUgPSBpbWFnZU1lYXN1cmU7Cgl0aGlzLnRhYmxlTGF5b3V0cyA9IHRhYmxlTGF5b3V0czsKCXRoaXMuaW1hZ2VzID0gaW1hZ2VzOwoJdGhpcy5hdXRvSW1hZ2VJbmRleCA9IDE7Cn0KCi8qKgogKiBNZWFzdXJlcyBhbGwgbm9kZXMgYW5kIHNldHMgbWluL21heC13aWR0aCBwcm9wZXJ0aWVzIHJlcXVpcmVkIGZvciB0aGUgc2Vjb25kCiAqIGxheW91dC1wYXNzLgogKiBAcGFyYW0gIHtPYmplY3R9IGRvY1N0cnVjdHVyZSBkb2N1bWVudC1kZWZpbml0aW9uLW9iamVjdAogKiBAcmV0dXJuIHtPYmplY3R9ICAgICAgICAgICAgICBkb2N1bWVudC1tZWFzdXJlbWVudC1vYmplY3QKICovCkRvY01lYXN1cmUucHJvdG90eXBlLm1lYXN1cmVEb2N1bWVudCA9IGZ1bmN0aW9uIChkb2NTdHJ1Y3R1cmUpIHsKCXJldHVybiB0aGlzLm1lYXN1cmVOb2RlKGRvY1N0cnVjdHVyZSk7Cn07CgpEb2NNZWFzdXJlLnByb3RvdHlwZS5tZWFzdXJlTm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7CgoJdmFyIHNlbGYgPSB0aGlzOwoKCXJldHVybiB0aGlzLnN0eWxlU3RhY2suYXV0byhub2RlLCBmdW5jdGlvbiAoKSB7CgkJLy8gVE9ETzogcmVmYWN0b3IgKyByZXRoaW5rIHdoZXRoZXIgdGhpcyBpcyB0aGUgcHJvcGVyIHdheSB0byBoYW5kbGUgbWFyZ2lucwoJCW5vZGUuX21hcmdpbiA9IGdldE5vZGVNYXJnaW4obm9kZSk7CgoJCWlmIChub2RlLmNvbHVtbnMpIHsKCQkJcmV0dXJuIGV4dGVuZE1hcmdpbnMoc2VsZi5tZWFzdXJlQ29sdW1ucyhub2RlKSk7CgkJfSBlbHNlIGlmIChub2RlLnN0YWNrKSB7CgkJCXJldHVybiBleHRlbmRNYXJnaW5zKHNlbGYubWVhc3VyZVZlcnRpY2FsQ29udGFpbmVyKG5vZGUpKTsKCQl9IGVsc2UgaWYgKG5vZGUudWwpIHsKCQkJcmV0dXJuIGV4dGVuZE1hcmdpbnMoc2VsZi5tZWFzdXJlVW5vcmRlcmVkTGlzdChub2RlKSk7CgkJfSBlbHNlIGlmIChub2RlLm9sKSB7CgkJCXJldHVybiBleHRlbmRNYXJnaW5zKHNlbGYubWVhc3VyZU9yZGVyZWRMaXN0KG5vZGUpKTsKCQl9IGVsc2UgaWYgKG5vZGUudGFibGUpIHsKCQkJcmV0dXJuIGV4dGVuZE1hcmdpbnMoc2VsZi5tZWFzdXJlVGFibGUobm9kZSkpOwoJCX0gZWxzZSBpZiAobm9kZS50ZXh0ICE9PSB1bmRlZmluZWQpIHsKCQkJcmV0dXJuIGV4dGVuZE1hcmdpbnMoc2VsZi5tZWFzdXJlTGVhZihub2RlKSk7CgkJfSBlbHNlIGlmIChub2RlLnRvYykgewoJCQlyZXR1cm4gZXh0ZW5kTWFyZ2lucyhzZWxmLm1lYXN1cmVUb2Mobm9kZSkpOwoJCX0gZWxzZSBpZiAobm9kZS5pbWFnZSkgewoJCQlyZXR1cm4gZXh0ZW5kTWFyZ2lucyhzZWxmLm1lYXN1cmVJbWFnZShub2RlKSk7CgkJfSBlbHNlIGlmIChub2RlLmNhbnZhcykgewoJCQlyZXR1cm4gZXh0ZW5kTWFyZ2lucyhzZWxmLm1lYXN1cmVDYW52YXMobm9kZSkpOwoJCX0gZWxzZSBpZiAobm9kZS5xcikgewoJCQlyZXR1cm4gZXh0ZW5kTWFyZ2lucyhzZWxmLm1lYXN1cmVRcihub2RlKSk7CgkJfSBlbHNlIHsKCQkJdGhyb3cgJ1VucmVjb2duaXplZCBkb2N1bWVudCBzdHJ1Y3R1cmU6ICcgKyBKU09OLnN0cmluZ2lmeShub2RlLCBmb250U3RyaW5naWZ5KTsKCQl9Cgl9KTsKCglmdW5jdGlvbiBleHRlbmRNYXJnaW5zKG5vZGUpIHsKCQl2YXIgbWFyZ2luID0gbm9kZS5fbWFyZ2luOwoKCQlpZiAobWFyZ2luKSB7CgkJCW5vZGUuX21pbldpZHRoICs9IG1hcmdpblswXSArIG1hcmdpblsyXTsKCQkJbm9kZS5fbWF4V2lkdGggKz0gbWFyZ2luWzBdICsgbWFyZ2luWzJdOwoJCX0KCgkJcmV0dXJuIG5vZGU7Cgl9CgoJZnVuY3Rpb24gZ2V0Tm9kZU1hcmdpbigpIHsKCgkJZnVuY3Rpb24gcHJvY2Vzc1NpbmdsZU1hcmdpbnMobm9kZSwgY3VycmVudE1hcmdpbikgewoJCQlpZiAobm9kZS5tYXJnaW5MZWZ0IHx8IG5vZGUubWFyZ2luVG9wIHx8IG5vZGUubWFyZ2luUmlnaHQgfHwgbm9kZS5tYXJnaW5Cb3R0b20pIHsKCQkJCXJldHVybiBbCgkJCQkJbm9kZS5tYXJnaW5MZWZ0IHx8IGN1cnJlbnRNYXJnaW5bMF0gfHwgMCwKCQkJCQlub2RlLm1hcmdpblRvcCB8fCBjdXJyZW50TWFyZ2luWzFdIHx8IDAsCgkJCQkJbm9kZS5tYXJnaW5SaWdodCB8fCBjdXJyZW50TWFyZ2luWzJdIHx8IDAsCgkJCQkJbm9kZS5tYXJnaW5Cb3R0b20gfHwgY3VycmVudE1hcmdpblszXSB8fCAwCgkJCQldOwoJCQl9CgkJCXJldHVybiBjdXJyZW50TWFyZ2luOwoJCX0KCgkJZnVuY3Rpb24gZmxhdHRlblN0eWxlQXJyYXkoc3R5bGVBcnJheSkgewoJCQl2YXIgZmxhdHRlbmVkU3R5bGVzID0ge307CgkJCWZvciAodmFyIGkgPSBzdHlsZUFycmF5Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CgkJCQl2YXIgc3R5bGVOYW1lID0gc3R5bGVBcnJheVtpXTsKCQkJCXZhciBzdHlsZSA9IHNlbGYuc3R5bGVTdGFjay5zdHlsZURpY3Rpb25hcnlbc3R5bGVOYW1lXTsKCQkJCWZvciAodmFyIGtleSBpbiBzdHlsZSkgewoJCQkJCWlmIChzdHlsZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7CgkJCQkJCWZsYXR0ZW5lZFN0eWxlc1trZXldID0gc3R5bGVba2V5XTsKCQkJCQl9CgkJCQl9CgkJCX0KCQkJcmV0dXJuIGZsYXR0ZW5lZFN0eWxlczsKCQl9CgoJCWZ1bmN0aW9uIGNvbnZlcnRNYXJnaW4obWFyZ2luKSB7CgkJCWlmIChpc051bWJlcihtYXJnaW4pKSB7CgkJCQltYXJnaW4gPSBbbWFyZ2luLCBtYXJnaW4sIG1hcmdpbiwgbWFyZ2luXTsKCQkJfSBlbHNlIGlmIChpc0FycmF5KG1hcmdpbikpIHsKCQkJCWlmIChtYXJnaW4ubGVuZ3RoID09PSAyKSB7CgkJCQkJbWFyZ2luID0gW21hcmdpblswXSwgbWFyZ2luWzFdLCBtYXJnaW5bMF0sIG1hcmdpblsxXV07CgkJCQl9CgkJCX0KCQkJcmV0dXJuIG1hcmdpbjsKCQl9CgoJCXZhciBtYXJnaW4gPSBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXTsKCgkJaWYgKG5vZGUuc3R5bGUpIHsKCQkJdmFyIHN0eWxlQXJyYXkgPSBpc0FycmF5KG5vZGUuc3R5bGUpID8gbm9kZS5zdHlsZSA6IFtub2RlLnN0eWxlXTsKCQkJdmFyIGZsYXR0ZW5lZFN0eWxlQXJyYXkgPSBmbGF0dGVuU3R5bGVBcnJheShzdHlsZUFycmF5KTsKCgkJCWlmIChmbGF0dGVuZWRTdHlsZUFycmF5KSB7CgkJCQltYXJnaW4gPSBwcm9jZXNzU2luZ2xlTWFyZ2lucyhmbGF0dGVuZWRTdHlsZUFycmF5LCBtYXJnaW4pOwoJCQl9CgoJCQlpZiAoZmxhdHRlbmVkU3R5bGVBcnJheS5tYXJnaW4pIHsKCQkJCW1hcmdpbiA9IGNvbnZlcnRNYXJnaW4oZmxhdHRlbmVkU3R5bGVBcnJheS5tYXJnaW4pOwoJCQl9CgkJfQoKCQltYXJnaW4gPSBwcm9jZXNzU2luZ2xlTWFyZ2lucyhub2RlLCBtYXJnaW4pOwoKCQlpZiAobm9kZS5tYXJnaW4pIHsKCQkJbWFyZ2luID0gY29udmVydE1hcmdpbihub2RlLm1hcmdpbik7CgkJfQoKCQlpZiAobWFyZ2luWzBdID09PSB1bmRlZmluZWQgJiYgbWFyZ2luWzFdID09PSB1bmRlZmluZWQgJiYgbWFyZ2luWzJdID09PSB1bmRlZmluZWQgJiYgbWFyZ2luWzNdID09PSB1bmRlZmluZWQpIHsKCQkJcmV0dXJuIG51bGw7CgkJfSBlbHNlIHsKCQkJcmV0dXJuIG1hcmdpbjsKCQl9Cgl9Cn07CgpEb2NNZWFzdXJlLnByb3RvdHlwZS5jb252ZXJ0SWZCYXNlNjRJbWFnZSA9IGZ1bmN0aW9uIChub2RlKSB7CglpZiAoL15kYXRhOmltYWdlXC8oanBlZ3xqcGd8cG5nKTtiYXNlNjQsLy50ZXN0KG5vZGUuaW1hZ2UpKSB7CgkJdmFyIGxhYmVsID0gJyQkcGRmbWFrZSQkJyArIHRoaXMuYXV0b0ltYWdlSW5kZXgrKzsKCQl0aGlzLmltYWdlc1tsYWJlbF0gPSBub2RlLmltYWdlOwoJCW5vZGUuaW1hZ2UgPSBsYWJlbDsKCX0KfTsKCkRvY01lYXN1cmUucHJvdG90eXBlLm1lYXN1cmVJbWFnZSA9IGZ1bmN0aW9uIChub2RlKSB7CglpZiAodGhpcy5pbWFnZXMpIHsKCQl0aGlzLmNvbnZlcnRJZkJhc2U2NEltYWdlKG5vZGUpOwoJfQoKCXZhciBpbWFnZVNpemUgPSB0aGlzLmltYWdlTWVhc3VyZS5tZWFzdXJlSW1hZ2Uobm9kZS5pbWFnZSk7CgoJaWYgKG5vZGUuZml0KSB7CgkJdmFyIGZhY3RvciA9IChpbWFnZVNpemUud2lkdGggLyBpbWFnZVNpemUuaGVpZ2h0ID4gbm9kZS5maXRbMF0gLyBub2RlLmZpdFsxXSkgPyBub2RlLmZpdFswXSAvIGltYWdlU2l6ZS53aWR0aCA6IG5vZGUuZml0WzFdIC8gaW1hZ2VTaXplLmhlaWdodDsKCQlub2RlLl93aWR0aCA9IG5vZGUuX21pbldpZHRoID0gbm9kZS5fbWF4V2lkdGggPSBpbWFnZVNpemUud2lkdGggKiBmYWN0b3I7CgkJbm9kZS5faGVpZ2h0ID0gaW1hZ2VTaXplLmhlaWdodCAqIGZhY3RvcjsKCX0gZWxzZSB7CgkJbm9kZS5fd2lkdGggPSBub2RlLl9taW5XaWR0aCA9IG5vZGUuX21heFdpZHRoID0gbm9kZS53aWR0aCB8fCBpbWFnZVNpemUud2lkdGg7CgkJbm9kZS5faGVpZ2h0ID0gbm9kZS5oZWlnaHQgfHwgKGltYWdlU2l6ZS5oZWlnaHQgKiBub2RlLl93aWR0aCAvIGltYWdlU2l6ZS53aWR0aCk7CgoJCWlmIChpc051bWJlcihub2RlLm1heFdpZHRoKSAmJiBub2RlLm1heFdpZHRoIDwgbm9kZS5fd2lkdGgpIHsKCQkJbm9kZS5fd2lkdGggPSBub2RlLl9taW5XaWR0aCA9IG5vZGUuX21heFdpZHRoID0gbm9kZS5tYXhXaWR0aDsKCQkJbm9kZS5faGVpZ2h0ID0gbm9kZS5fd2lkdGggKiBpbWFnZVNpemUuaGVpZ2h0IC8gaW1hZ2VTaXplLndpZHRoOwoJCX0KCgkJaWYgKGlzTnVtYmVyKG5vZGUubWF4SGVpZ2h0KSAmJiBub2RlLm1heEhlaWdodCA8IG5vZGUuX2hlaWdodCkgewoJCQlub2RlLl9oZWlnaHQgPSBub2RlLm1heEhlaWdodDsKCQkJbm9kZS5fd2lkdGggPSBub2RlLl9taW5XaWR0aCA9IG5vZGUuX21heFdpZHRoID0gbm9kZS5faGVpZ2h0ICogaW1hZ2VTaXplLndpZHRoIC8gaW1hZ2VTaXplLmhlaWdodDsKCQl9CgoJCWlmIChpc051bWJlcihub2RlLm1pbldpZHRoKSAmJiBub2RlLm1pbldpZHRoID4gbm9kZS5fd2lkdGgpIHsKCQkJbm9kZS5fd2lkdGggPSBub2RlLl9taW5XaWR0aCA9IG5vZGUuX21heFdpZHRoID0gbm9kZS5taW5XaWR0aDsKCQkJbm9kZS5faGVpZ2h0ID0gbm9kZS5fd2lkdGggKiBpbWFnZVNpemUuaGVpZ2h0IC8gaW1hZ2VTaXplLndpZHRoOwoJCX0KCgkJaWYgKGlzTnVtYmVyKG5vZGUubWluSGVpZ2h0KSAmJiBub2RlLm1pbkhlaWdodCA+IG5vZGUuX2hlaWdodCkgewoJCQlub2RlLl9oZWlnaHQgPSBub2RlLm1pbkhlaWdodDsKCQkJbm9kZS5fd2lkdGggPSBub2RlLl9taW5XaWR0aCA9IG5vZGUuX21heFdpZHRoID0gbm9kZS5faGVpZ2h0ICogaW1hZ2VTaXplLndpZHRoIC8gaW1hZ2VTaXplLmhlaWdodDsKCQl9Cgl9CgoJbm9kZS5fYWxpZ25tZW50ID0gdGhpcy5zdHlsZVN0YWNrLmdldFByb3BlcnR5KCdhbGlnbm1lbnQnKTsKCXJldHVybiBub2RlOwp9OwoKRG9jTWVhc3VyZS5wcm90b3R5cGUubWVhc3VyZUxlYWYgPSBmdW5jdGlvbiAobm9kZSkgewoKCWlmIChub2RlLl90ZXh0UmVmICYmIG5vZGUuX3RleHRSZWYuX25vZGVSZWYudGV4dCkgewoJCW5vZGUudGV4dCA9IG5vZGUuX3RleHRSZWYuX25vZGVSZWYudGV4dDsKCX0KCgkvLyBNYWtlIHN1cmUgc3R5bGUgcHJvcGVydGllcyBvZiB0aGUgbm9kZSBpdHNlbGYgYXJlIGNvbnNpZGVyZWQgd2hlbiBidWlsZGluZyBpbmxpbmVzLgoJLy8gV2UgY291bGQgYWxzbyBqdXN0IHBhc3MgW25vZGVdIHRvIGJ1aWxkSW5saW5lcywgYnV0IHRoYXQgZmFpbHMgZm9yIGJ1bGxldCBwb2ludHMuCgl2YXIgc3R5bGVTdGFjayA9IHRoaXMuc3R5bGVTdGFjay5jbG9uZSgpOwoJc3R5bGVTdGFjay5wdXNoKG5vZGUpOwoKCXZhciBkYXRhID0gdGhpcy50ZXh0VG9vbHMuYnVpbGRJbmxpbmVzKG5vZGUudGV4dCwgc3R5bGVTdGFjayk7CgoJbm9kZS5faW5saW5lcyA9IGRhdGEuaXRlbXM7Cglub2RlLl9taW5XaWR0aCA9IGRhdGEubWluV2lkdGg7Cglub2RlLl9tYXhXaWR0aCA9IGRhdGEubWF4V2lkdGg7CgoJcmV0dXJuIG5vZGU7Cn07CgpEb2NNZWFzdXJlLnByb3RvdHlwZS5tZWFzdXJlVG9jID0gZnVuY3Rpb24gKG5vZGUpIHsKCWlmIChub2RlLnRvYy50aXRsZSkgewoJCW5vZGUudG9jLnRpdGxlID0gdGhpcy5tZWFzdXJlTm9kZShub2RlLnRvYy50aXRsZSk7Cgl9CgoJdmFyIGJvZHkgPSBbXTsKCXZhciB0ZXh0U3R5bGUgPSBub2RlLnRvYy50ZXh0U3R5bGUgfHwge307Cgl2YXIgbnVtYmVyU3R5bGUgPSBub2RlLnRvYy5udW1iZXJTdHlsZSB8fCB0ZXh0U3R5bGU7Cgl2YXIgdGV4dE1hcmdpbiA9IG5vZGUudG9jLnRleHRNYXJnaW4gfHwgWzAsIDAsIDAsIDBdOwoJZm9yICh2YXIgaSA9IDAsIGwgPSBub2RlLnRvYy5faXRlbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJdmFyIGl0ZW0gPSBub2RlLnRvYy5faXRlbXNbaV07CgkJdmFyIGxpbmVTdHlsZSA9IG5vZGUudG9jLl9pdGVtc1tpXS50b2NTdHlsZSB8fCB0ZXh0U3R5bGU7CgkJdmFyIGxpbmVNYXJnaW4gPSBub2RlLnRvYy5faXRlbXNbaV0udG9jTWFyZ2luIHx8IHRleHRNYXJnaW47CgkJYm9keS5wdXNoKFsKCQkJe3RleHQ6IGl0ZW0udGV4dCwgYWxpZ25tZW50OiAnbGVmdCcsIHN0eWxlOiBsaW5lU3R5bGUsIG1hcmdpbjogbGluZU1hcmdpbn0sCgkJCXt0ZXh0OiAnMDAwMDAnLCBhbGlnbm1lbnQ6ICdyaWdodCcsIF90b2NJdGVtUmVmOiBpdGVtLCBzdHlsZTogbnVtYmVyU3R5bGUsIG1hcmdpbjogWzAsIGxpbmVNYXJnaW5bMV0sIDAsIGxpbmVNYXJnaW5bM11dfQoJCV0pOwoJfQoKCglub2RlLnRvYy5fdGFibGUgPSB7CgkJdGFibGU6IHsKCQkJZG9udEJyZWFrUm93czogdHJ1ZSwKCQkJd2lkdGhzOiBbJyonLCAnYXV0byddLAoJCQlib2R5OiBib2R5CgkJfSwKCQlsYXlvdXQ6ICdub0JvcmRlcnMnCgl9OwoKCW5vZGUudG9jLl90YWJsZSA9IHRoaXMubWVhc3VyZU5vZGUobm9kZS50b2MuX3RhYmxlKTsKCglyZXR1cm4gbm9kZTsKfTsKCkRvY01lYXN1cmUucHJvdG90eXBlLm1lYXN1cmVWZXJ0aWNhbENvbnRhaW5lciA9IGZ1bmN0aW9uIChub2RlKSB7Cgl2YXIgaXRlbXMgPSBub2RlLnN0YWNrOwoKCW5vZGUuX21pbldpZHRoID0gMDsKCW5vZGUuX21heFdpZHRoID0gMDsKCglmb3IgKHZhciBpID0gMCwgbCA9IGl0ZW1zLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCWl0ZW1zW2ldID0gdGhpcy5tZWFzdXJlTm9kZShpdGVtc1tpXSk7CgoJCW5vZGUuX21pbldpZHRoID0gTWF0aC5tYXgobm9kZS5fbWluV2lkdGgsIGl0ZW1zW2ldLl9taW5XaWR0aCk7CgkJbm9kZS5fbWF4V2lkdGggPSBNYXRoLm1heChub2RlLl9tYXhXaWR0aCwgaXRlbXNbaV0uX21heFdpZHRoKTsKCX0KCglyZXR1cm4gbm9kZTsKfTsKCkRvY01lYXN1cmUucHJvdG90eXBlLmdhcFNpemVGb3JMaXN0ID0gZnVuY3Rpb24gKCkgewoJcmV0dXJuIHRoaXMudGV4dFRvb2xzLnNpemVPZlN0cmluZygnOS4gJywgdGhpcy5zdHlsZVN0YWNrKTsKfTsKCkRvY01lYXN1cmUucHJvdG90eXBlLmJ1aWxkVW5vcmRlcmVkTWFya2VyID0gZnVuY3Rpb24gKHN0eWxlU3RhY2ssIGdhcFNpemUsIHR5cGUpIHsKCWZ1bmN0aW9uIGJ1aWxkRGlzYyhnYXBTaXplLCBjb2xvcikgewoJCS8vIFRPRE86IGFzY2VuZGVyLWJhc2VkIGNhbGN1bGF0aW9ucwoJCXZhciByYWRpdXMgPSBnYXBTaXplLmZvbnRTaXplIC8gNjsKCQlyZXR1cm4gewoJCQljYW52YXM6IFt7CgkJCQkJeDogcmFkaXVzLAoJCQkJCXk6IChnYXBTaXplLmhlaWdodCAvIGdhcFNpemUubGluZUhlaWdodCkgKyBnYXBTaXplLmRlc2NlbmRlciAtIGdhcFNpemUuZm9udFNpemUgLyAzLAoJCQkJCXIxOiByYWRpdXMsCgkJCQkJcjI6IHJhZGl1cywKCQkJCQl0eXBlOiAnZWxsaXBzZScsCgkJCQkJY29sb3I6IGNvbG9yCgkJCQl9XQoJCX07Cgl9CgoJZnVuY3Rpb24gYnVpbGRTcXVhcmUoZ2FwU2l6ZSwgY29sb3IpIHsKCQkvLyBUT0RPOiBhc2NlbmRlci1iYXNlZCBjYWxjdWxhdGlvbnMKCQl2YXIgc2l6ZSA9IGdhcFNpemUuZm9udFNpemUgLyAzOwoJCXJldHVybiB7CgkJCWNhbnZhczogW3sKCQkJCQl4OiAwLAoJCQkJCXk6IChnYXBTaXplLmhlaWdodCAvIGdhcFNpemUubGluZUhlaWdodCkgKyBnYXBTaXplLmRlc2NlbmRlciAtIChnYXBTaXplLmZvbnRTaXplIC8gMykgLSAoc2l6ZSAvIDIpLAoJCQkJCWg6IHNpemUsCgkJCQkJdzogc2l6ZSwKCQkJCQl0eXBlOiAncmVjdCcsCgkJCQkJY29sb3I6IGNvbG9yCgkJCQl9XQoJCX07Cgl9CgoJZnVuY3Rpb24gYnVpbGRDaXJjbGUoZ2FwU2l6ZSwgY29sb3IpIHsKCQkvLyBUT0RPOiBhc2NlbmRlci1iYXNlZCBjYWxjdWxhdGlvbnMKCQl2YXIgcmFkaXVzID0gZ2FwU2l6ZS5mb250U2l6ZSAvIDY7CgkJcmV0dXJuIHsKCQkJY2FudmFzOiBbewoJCQkJCXg6IHJhZGl1cywKCQkJCQl5OiAoZ2FwU2l6ZS5oZWlnaHQgLyBnYXBTaXplLmxpbmVIZWlnaHQpICsgZ2FwU2l6ZS5kZXNjZW5kZXIgLSBnYXBTaXplLmZvbnRTaXplIC8gMywKCQkJCQlyMTogcmFkaXVzLAoJCQkJCXIyOiByYWRpdXMsCgkJCQkJdHlwZTogJ2VsbGlwc2UnLAoJCQkJCWxpbmVDb2xvcjogY29sb3IKCQkJCX1dCgkJfTsKCX0KCgl2YXIgbWFya2VyOwoJdmFyIGNvbG9yID0gc3R5bGVTdGFjay5nZXRQcm9wZXJ0eSgnbWFya2VyQ29sb3InKSB8fCBzdHlsZVN0YWNrLmdldFByb3BlcnR5KCdjb2xvcicpIHx8ICdibGFjayc7CgoJc3dpdGNoICh0eXBlKSB7CgkJY2FzZSAnY2lyY2xlJzoKCQkJbWFya2VyID0gYnVpbGRDaXJjbGUoZ2FwU2l6ZSwgY29sb3IpOwoJCQlicmVhazsKCgkJY2FzZSAnc3F1YXJlJzoKCQkJbWFya2VyID0gYnVpbGRTcXVhcmUoZ2FwU2l6ZSwgY29sb3IpOwoJCQlicmVhazsKCgkJY2FzZSAnbm9uZSc6CgkJCW1hcmtlciA9IHt9OwoJCQlicmVhazsKCgkJY2FzZSAnZGlzYyc6CgkJZGVmYXVsdDoKCQkJbWFya2VyID0gYnVpbGREaXNjKGdhcFNpemUsIGNvbG9yKTsKCQkJYnJlYWs7Cgl9CgoJbWFya2VyLl9taW5XaWR0aCA9IG1hcmtlci5fbWF4V2lkdGggPSBnYXBTaXplLndpZHRoOwoJbWFya2VyLl9taW5IZWlnaHQgPSBtYXJrZXIuX21heEhlaWdodCA9IGdhcFNpemUuaGVpZ2h0OwoKCXJldHVybiBtYXJrZXI7Cn07CgpEb2NNZWFzdXJlLnByb3RvdHlwZS5idWlsZE9yZGVyZWRNYXJrZXIgPSBmdW5jdGlvbiAoY291bnRlciwgc3R5bGVTdGFjaywgdHlwZSwgc2VwYXJhdG9yKSB7CglmdW5jdGlvbiBwcmVwYXJlQWxwaGEoY291bnRlcikgewoJCWZ1bmN0aW9uIHRvQWxwaGEobnVtKSB7CgkJCXJldHVybiAobnVtID49IDI2ID8gdG9BbHBoYSgobnVtIC8gMjYgPj4gMCkgLSAxKSA6ICcnKSArICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidbbnVtICUgMjYgPj4gMF07CgkJfQoKCQlpZiAoY291bnRlciA8IDEpIHsKCQkJcmV0dXJuIGNvdW50ZXIudG9TdHJpbmcoKTsKCQl9CgoJCXJldHVybiB0b0FscGhhKGNvdW50ZXIgLSAxKTsKCX0KCglmdW5jdGlvbiBwcmVwYXJlUm9tYW4oY291bnRlcikgewoJCWlmIChjb3VudGVyIDwgMSB8fCBjb3VudGVyID4gNDk5OSkgewoJCQlyZXR1cm4gY291bnRlci50b1N0cmluZygpOwoJCX0KCQl2YXIgbnVtID0gY291bnRlcjsKCQl2YXIgbG9va3VwID0ge006IDEwMDAsIENNOiA5MDAsIEQ6IDUwMCwgQ0Q6IDQwMCwgQzogMTAwLCBYQzogOTAsIEw6IDUwLCBYTDogNDAsIFg6IDEwLCBJWDogOSwgVjogNSwgSVY6IDQsIEk6IDF9LCByb21hbiA9ICcnLCBpOwoJCWZvciAoaSBpbiBsb29rdXApIHsKCQkJd2hpbGUgKG51bSA+PSBsb29rdXBbaV0pIHsKCQkJCXJvbWFuICs9IGk7CgkJCQludW0gLT0gbG9va3VwW2ldOwoJCQl9CgkJfQoJCXJldHVybiByb21hbjsKCX0KCglmdW5jdGlvbiBwcmVwYXJlRGVjaW1hbChjb3VudGVyKSB7CgkJcmV0dXJuIGNvdW50ZXIudG9TdHJpbmcoKTsKCX0KCgl2YXIgY291bnRlclRleHQ7Cglzd2l0Y2ggKHR5cGUpIHsKCQljYXNlICdub25lJzoKCQkJY291bnRlclRleHQgPSBudWxsOwoJCQlicmVhazsKCgkJY2FzZSAndXBwZXItYWxwaGEnOgoJCQljb3VudGVyVGV4dCA9IHByZXBhcmVBbHBoYShjb3VudGVyKS50b1VwcGVyQ2FzZSgpOwoJCQlicmVhazsKCgkJY2FzZSAnbG93ZXItYWxwaGEnOgoJCQljb3VudGVyVGV4dCA9IHByZXBhcmVBbHBoYShjb3VudGVyKTsKCQkJYnJlYWs7CgoJCWNhc2UgJ3VwcGVyLXJvbWFuJzoKCQkJY291bnRlclRleHQgPSBwcmVwYXJlUm9tYW4oY291bnRlcik7CgkJCWJyZWFrOwoKCQljYXNlICdsb3dlci1yb21hbic6CgkJCWNvdW50ZXJUZXh0ID0gcHJlcGFyZVJvbWFuKGNvdW50ZXIpLnRvTG93ZXJDYXNlKCk7CgkJCWJyZWFrOwoKCQljYXNlICdkZWNpbWFsJzoKCQlkZWZhdWx0OgoJCQljb3VudGVyVGV4dCA9IHByZXBhcmVEZWNpbWFsKGNvdW50ZXIpOwoJCQlicmVhazsKCX0KCglpZiAoY291bnRlclRleHQgPT09IG51bGwpIHsKCQlyZXR1cm4ge307Cgl9CgoJaWYgKHNlcGFyYXRvcikgewoJCWlmIChpc0FycmF5KHNlcGFyYXRvcikpIHsKCQkJaWYgKHNlcGFyYXRvclswXSkgewoJCQkJY291bnRlclRleHQgPSBzZXBhcmF0b3JbMF0gKyBjb3VudGVyVGV4dDsKCQkJfQoKCQkJaWYgKHNlcGFyYXRvclsxXSkgewoJCQkJY291bnRlclRleHQgKz0gc2VwYXJhdG9yWzFdOwoJCQl9CgkJCWNvdW50ZXJUZXh0ICs9ICcgJzsKCQl9IGVsc2UgewoJCQljb3VudGVyVGV4dCArPSBzZXBhcmF0b3IgKyAnICc7CgkJfQoJfQoKCXZhciB0ZXh0QXJyYXkgPSB7dGV4dDogY291bnRlclRleHR9OwoJdmFyIG1hcmtlckNvbG9yID0gc3R5bGVTdGFjay5nZXRQcm9wZXJ0eSgnbWFya2VyQ29sb3InKTsKCWlmIChtYXJrZXJDb2xvcikgewoJCXRleHRBcnJheS5jb2xvciA9IG1hcmtlckNvbG9yOwoJfQoKCXJldHVybiB7X2lubGluZXM6IHRoaXMudGV4dFRvb2xzLmJ1aWxkSW5saW5lcyh0ZXh0QXJyYXksIHN0eWxlU3RhY2spLml0ZW1zfTsKfTsKCkRvY01lYXN1cmUucHJvdG90eXBlLm1lYXN1cmVVbm9yZGVyZWRMaXN0ID0gZnVuY3Rpb24gKG5vZGUpIHsKCXZhciBzdHlsZSA9IHRoaXMuc3R5bGVTdGFjay5jbG9uZSgpOwoJdmFyIGl0ZW1zID0gbm9kZS51bDsKCW5vZGUudHlwZSA9IG5vZGUudHlwZSB8fCAnZGlzYyc7Cglub2RlLl9nYXBTaXplID0gdGhpcy5nYXBTaXplRm9yTGlzdCgpOwoJbm9kZS5fbWluV2lkdGggPSAwOwoJbm9kZS5fbWF4V2lkdGggPSAwOwoKCWZvciAodmFyIGkgPSAwLCBsID0gaXRlbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJdmFyIGl0ZW0gPSBpdGVtc1tpXSA9IHRoaXMubWVhc3VyZU5vZGUoaXRlbXNbaV0pOwoKCQlpZiAoIWl0ZW0ub2wgJiYgIWl0ZW0udWwpIHsKCQkJaXRlbS5saXN0TWFya2VyID0gdGhpcy5idWlsZFVub3JkZXJlZE1hcmtlcihzdHlsZSwgbm9kZS5fZ2FwU2l6ZSwgaXRlbS5saXN0VHlwZSB8fCBub2RlLnR5cGUpOwoJCX0KCgkJbm9kZS5fbWluV2lkdGggPSBNYXRoLm1heChub2RlLl9taW5XaWR0aCwgaXRlbXNbaV0uX21pbldpZHRoICsgbm9kZS5fZ2FwU2l6ZS53aWR0aCk7CgkJbm9kZS5fbWF4V2lkdGggPSBNYXRoLm1heChub2RlLl9tYXhXaWR0aCwgaXRlbXNbaV0uX21heFdpZHRoICsgbm9kZS5fZ2FwU2l6ZS53aWR0aCk7Cgl9CgoJcmV0dXJuIG5vZGU7Cn07CgpEb2NNZWFzdXJlLnByb3RvdHlwZS5tZWFzdXJlT3JkZXJlZExpc3QgPSBmdW5jdGlvbiAobm9kZSkgewoJdmFyIHN0eWxlID0gdGhpcy5zdHlsZVN0YWNrLmNsb25lKCk7Cgl2YXIgaXRlbXMgPSBub2RlLm9sOwoJbm9kZS50eXBlID0gbm9kZS50eXBlIHx8ICdkZWNpbWFsJzsKCW5vZGUuc2VwYXJhdG9yID0gbm9kZS5zZXBhcmF0b3IgfHwgJy4nOwoJbm9kZS5yZXZlcnNlZCA9IG5vZGUucmV2ZXJzZWQgfHwgZmFsc2U7CglpZiAoIW5vZGUuc3RhcnQpIHsKCQlub2RlLnN0YXJ0ID0gbm9kZS5yZXZlcnNlZCA/IGl0ZW1zLmxlbmd0aCA6IDE7Cgl9Cglub2RlLl9nYXBTaXplID0gdGhpcy5nYXBTaXplRm9yTGlzdCgpOwoJbm9kZS5fbWluV2lkdGggPSAwOwoJbm9kZS5fbWF4V2lkdGggPSAwOwoKCXZhciBjb3VudGVyID0gbm9kZS5zdGFydDsKCWZvciAodmFyIGkgPSAwLCBsID0gaXRlbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJdmFyIGl0ZW0gPSBpdGVtc1tpXSA9IHRoaXMubWVhc3VyZU5vZGUoaXRlbXNbaV0pOwoKCQlpZiAoIWl0ZW0ub2wgJiYgIWl0ZW0udWwpIHsKCQkJaXRlbS5saXN0TWFya2VyID0gdGhpcy5idWlsZE9yZGVyZWRNYXJrZXIoaXRlbS5jb3VudGVyIHx8IGNvdW50ZXIsIHN0eWxlLCBpdGVtLmxpc3RUeXBlIHx8IG5vZGUudHlwZSwgbm9kZS5zZXBhcmF0b3IpOwoJCQlpZiAoaXRlbS5saXN0TWFya2VyLl9pbmxpbmVzKSB7CgkJCQlub2RlLl9nYXBTaXplLndpZHRoID0gTWF0aC5tYXgobm9kZS5fZ2FwU2l6ZS53aWR0aCwgaXRlbS5saXN0TWFya2VyLl9pbmxpbmVzWzBdLndpZHRoKTsKCQkJfQoJCX0gIC8vIFRPRE86IGVsc2UgLSBuZXN0ZWQgbGlzdHMgbnVtYmVyaW5nCgoJCW5vZGUuX21pbldpZHRoID0gTWF0aC5tYXgobm9kZS5fbWluV2lkdGgsIGl0ZW1zW2ldLl9taW5XaWR0aCk7CgkJbm9kZS5fbWF4V2lkdGggPSBNYXRoLm1heChub2RlLl9tYXhXaWR0aCwgaXRlbXNbaV0uX21heFdpZHRoKTsKCgkJaWYgKG5vZGUucmV2ZXJzZWQpIHsKCQkJY291bnRlci0tOwoJCX0gZWxzZSB7CgkJCWNvdW50ZXIrKzsKCQl9Cgl9CgoJbm9kZS5fbWluV2lkdGggKz0gbm9kZS5fZ2FwU2l6ZS53aWR0aDsKCW5vZGUuX21heFdpZHRoICs9IG5vZGUuX2dhcFNpemUud2lkdGg7CgoJZm9yICh2YXIgaSA9IDAsIGwgPSBpdGVtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQl2YXIgaXRlbSA9IGl0ZW1zW2ldOwoJCWlmICghaXRlbS5vbCAmJiAhaXRlbS51bCkgewoJCQlpdGVtLmxpc3RNYXJrZXIuX21pbldpZHRoID0gaXRlbS5saXN0TWFya2VyLl9tYXhXaWR0aCA9IG5vZGUuX2dhcFNpemUud2lkdGg7CgkJfQoJfQoKCXJldHVybiBub2RlOwp9OwoKRG9jTWVhc3VyZS5wcm90b3R5cGUubWVhc3VyZUNvbHVtbnMgPSBmdW5jdGlvbiAobm9kZSkgewoJdmFyIGNvbHVtbnMgPSBub2RlLmNvbHVtbnM7Cglub2RlLl9nYXAgPSB0aGlzLnN0eWxlU3RhY2suZ2V0UHJvcGVydHkoJ2NvbHVtbkdhcCcpIHx8IDA7CgoJZm9yICh2YXIgaSA9IDAsIGwgPSBjb2x1bW5zLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCWNvbHVtbnNbaV0gPSB0aGlzLm1lYXN1cmVOb2RlKGNvbHVtbnNbaV0pOwoJfQoKCXZhciBtZWFzdXJlcyA9IENvbHVtbkNhbGN1bGF0b3IubWVhc3VyZU1pbk1heChjb2x1bW5zKTsKCgl2YXIgbnVtR2FwcyA9IChjb2x1bW5zLmxlbmd0aCA+IDApID8gKGNvbHVtbnMubGVuZ3RoIC0gMSkgOiAwOwoJbm9kZS5fbWluV2lkdGggPSBtZWFzdXJlcy5taW4gKyBub2RlLl9nYXAgKiBudW1HYXBzOwoJbm9kZS5fbWF4V2lkdGggPSBtZWFzdXJlcy5tYXggKyBub2RlLl9nYXAgKiBudW1HYXBzOwoKCXJldHVybiBub2RlOwp9OwoKRG9jTWVhc3VyZS5wcm90b3R5cGUubWVhc3VyZVRhYmxlID0gZnVuY3Rpb24gKG5vZGUpIHsKCWV4dGVuZFRhYmxlV2lkdGhzKG5vZGUpOwoJbm9kZS5fbGF5b3V0ID0gZ2V0TGF5b3V0KHRoaXMudGFibGVMYXlvdXRzKTsKCW5vZGUuX29mZnNldHMgPSBnZXRPZmZzZXRzKG5vZGUuX2xheW91dCk7CgoJdmFyIGNvbFNwYW5zID0gW107Cgl2YXIgY29sLCByb3csIGNvbHMsIHJvd3M7CgoJZm9yIChjb2wgPSAwLCBjb2xzID0gbm9kZS50YWJsZS5ib2R5WzBdLmxlbmd0aDsgY29sIDwgY29sczsgY29sKyspIHsKCQl2YXIgYyA9IG5vZGUudGFibGUud2lkdGhzW2NvbF07CgkJYy5fbWluV2lkdGggPSAwOwoJCWMuX21heFdpZHRoID0gMDsKCgkJZm9yIChyb3cgPSAwLCByb3dzID0gbm9kZS50YWJsZS5ib2R5Lmxlbmd0aDsgcm93IDwgcm93czsgcm93KyspIHsKCQkJdmFyIHJvd0RhdGEgPSBub2RlLnRhYmxlLmJvZHlbcm93XTsKCQkJdmFyIGRhdGEgPSByb3dEYXRhW2NvbF07CgkJCWlmIChkYXRhID09PSB1bmRlZmluZWQpIHsKCQkJCWNvbnNvbGUuZXJyb3IoJ01hbGZvcm1lZCB0YWJsZSByb3cgJywgcm93RGF0YSwgJ2luIG5vZGUgJywgbm9kZSk7CgkJCQl0aHJvdyAnTWFsZm9ybWVkIHRhYmxlIHJvdywgYSBjZWxsIGlzIHVuZGVmaW5lZC4nOwoJCQl9CgkJCWlmIChkYXRhID09PSBudWxsKSB7IC8vIHRyYW5zZm9ybSB0byBvYmplY3QKCQkJCWRhdGEgPSAnJzsKCQkJfQoKCQkJaWYgKCFkYXRhLl9zcGFuKSB7CgkJCQlkYXRhID0gcm93RGF0YVtjb2xdID0gdGhpcy5zdHlsZVN0YWNrLmF1dG8oZGF0YSwgbWVhc3VyZUNiKHRoaXMsIGRhdGEpKTsKCgkJCQlpZiAoZGF0YS5jb2xTcGFuICYmIGRhdGEuY29sU3BhbiA+IDEpIHsKCQkJCQltYXJrU3BhbnMocm93RGF0YSwgY29sLCBkYXRhLmNvbFNwYW4pOwoJCQkJCWNvbFNwYW5zLnB1c2goe2NvbDogY29sLCBzcGFuOiBkYXRhLmNvbFNwYW4sIG1pbldpZHRoOiBkYXRhLl9taW5XaWR0aCwgbWF4V2lkdGg6IGRhdGEuX21heFdpZHRofSk7CgkJCQl9IGVsc2UgewoJCQkJCWMuX21pbldpZHRoID0gTWF0aC5tYXgoYy5fbWluV2lkdGgsIGRhdGEuX21pbldpZHRoKTsKCQkJCQljLl9tYXhXaWR0aCA9IE1hdGgubWF4KGMuX21heFdpZHRoLCBkYXRhLl9tYXhXaWR0aCk7CgkJCQl9CgkJCX0KCgkJCWlmIChkYXRhLnJvd1NwYW4gJiYgZGF0YS5yb3dTcGFuID4gMSkgewoJCQkJbWFya1ZTcGFucyhub2RlLnRhYmxlLCByb3csIGNvbCwgZGF0YS5yb3dTcGFuKTsKCQkJfQoJCX0KCX0KCglleHRlbmRXaWR0aHNGb3JDb2xTcGFucygpOwoKCXZhciBtZWFzdXJlcyA9IENvbHVtbkNhbGN1bGF0b3IubWVhc3VyZU1pbk1heChub2RlLnRhYmxlLndpZHRocyk7CgoJbm9kZS5fbWluV2lkdGggPSBtZWFzdXJlcy5taW4gKyBub2RlLl9vZmZzZXRzLnRvdGFsOwoJbm9kZS5fbWF4V2lkdGggPSBtZWFzdXJlcy5tYXggKyBub2RlLl9vZmZzZXRzLnRvdGFsOwoKCXJldHVybiBub2RlOwoKCWZ1bmN0aW9uIG1lYXN1cmVDYihfdGhpcywgZGF0YSkgewoJCXJldHVybiBmdW5jdGlvbiAoKSB7CgkJCWlmIChpc09iamVjdChkYXRhKSkgewoJCQkJZGF0YS5maWxsQ29sb3IgPSBfdGhpcy5zdHlsZVN0YWNrLmdldFByb3BlcnR5KCdmaWxsQ29sb3InKTsKCQkJfQoJCQlyZXR1cm4gX3RoaXMubWVhc3VyZU5vZGUoZGF0YSk7CgkJfTsKCX0KCglmdW5jdGlvbiBnZXRMYXlvdXQodGFibGVMYXlvdXRzKSB7CgkJdmFyIGxheW91dCA9IG5vZGUubGF5b3V0OwoKCQlpZiAoaXNTdHJpbmcobGF5b3V0KSkgewoJCQlsYXlvdXQgPSB0YWJsZUxheW91dHNbbGF5b3V0XTsKCQl9CgoJCXZhciBkZWZhdWx0TGF5b3V0ID0gewoJCQloTGluZVdpZHRoOiBmdW5jdGlvbiAoaSwgbm9kZSkgewoJCQkJcmV0dXJuIDE7CgkJCX0sCgkJCXZMaW5lV2lkdGg6IGZ1bmN0aW9uIChpLCBub2RlKSB7CgkJCQlyZXR1cm4gMTsKCQkJfSwKCQkJaExpbmVDb2xvcjogZnVuY3Rpb24gKGksIG5vZGUpIHsKCQkJCXJldHVybiAnYmxhY2snOwoJCQl9LAoJCQl2TGluZUNvbG9yOiBmdW5jdGlvbiAoaSwgbm9kZSkgewoJCQkJcmV0dXJuICdibGFjayc7CgkJCX0sCgkJCXBhZGRpbmdMZWZ0OiBmdW5jdGlvbiAoaSwgbm9kZSkgewoJCQkJcmV0dXJuIDQ7CgkJCX0sCgkJCXBhZGRpbmdSaWdodDogZnVuY3Rpb24gKGksIG5vZGUpIHsKCQkJCXJldHVybiA0OwoJCQl9LAoJCQlwYWRkaW5nVG9wOiBmdW5jdGlvbiAoaSwgbm9kZSkgewoJCQkJcmV0dXJuIDI7CgkJCX0sCgkJCXBhZGRpbmdCb3R0b206IGZ1bmN0aW9uIChpLCBub2RlKSB7CgkJCQlyZXR1cm4gMjsKCQkJfSwKCQkJZmlsbENvbG9yOiBmdW5jdGlvbiAoaSwgbm9kZSkgewoJCQkJcmV0dXJuIG51bGw7CgkJCX0sCgkJCWRlZmF1bHRCb3JkZXI6IHRydWUKCQl9OwoKCQlyZXR1cm4gcGFjayhkZWZhdWx0TGF5b3V0LCBsYXlvdXQpOwoJfQoKCWZ1bmN0aW9uIGdldE9mZnNldHMobGF5b3V0KSB7CgkJdmFyIG9mZnNldHMgPSBbXTsKCQl2YXIgdG90YWxPZmZzZXQgPSAwOwoJCXZhciBwcmV2UmlnaHRQYWRkaW5nID0gMDsKCgkJZm9yICh2YXIgaSA9IDAsIGwgPSBub2RlLnRhYmxlLndpZHRocy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQkJdmFyIGxPZmZzZXQgPSBwcmV2UmlnaHRQYWRkaW5nICsgbGF5b3V0LnZMaW5lV2lkdGgoaSwgbm9kZSkgKyBsYXlvdXQucGFkZGluZ0xlZnQoaSwgbm9kZSk7CgkJCW9mZnNldHMucHVzaChsT2Zmc2V0KTsKCQkJdG90YWxPZmZzZXQgKz0gbE9mZnNldDsKCQkJcHJldlJpZ2h0UGFkZGluZyA9IGxheW91dC5wYWRkaW5nUmlnaHQoaSwgbm9kZSk7CgkJfQoKCQl0b3RhbE9mZnNldCArPSBwcmV2UmlnaHRQYWRkaW5nICsgbGF5b3V0LnZMaW5lV2lkdGgobm9kZS50YWJsZS53aWR0aHMubGVuZ3RoLCBub2RlKTsKCgkJcmV0dXJuIHsKCQkJdG90YWw6IHRvdGFsT2Zmc2V0LAoJCQlvZmZzZXRzOiBvZmZzZXRzCgkJfTsKCX0KCglmdW5jdGlvbiBleHRlbmRXaWR0aHNGb3JDb2xTcGFucygpIHsKCQl2YXIgcSwgajsKCgkJZm9yICh2YXIgaSA9IDAsIGwgPSBjb2xTcGFucy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQkJdmFyIHNwYW4gPSBjb2xTcGFuc1tpXTsKCgkJCXZhciBjdXJyZW50TWluTWF4ID0gZ2V0TWluTWF4KHNwYW4uY29sLCBzcGFuLnNwYW4sIG5vZGUuX29mZnNldHMpOwoJCQl2YXIgbWluRGlmZmVyZW5jZSA9IHNwYW4ubWluV2lkdGggLSBjdXJyZW50TWluTWF4Lm1pbldpZHRoOwoJCQl2YXIgbWF4RGlmZmVyZW5jZSA9IHNwYW4ubWF4V2lkdGggLSBjdXJyZW50TWluTWF4Lm1heFdpZHRoOwoKCQkJaWYgKG1pbkRpZmZlcmVuY2UgPiAwKSB7CgkJCQlxID0gbWluRGlmZmVyZW5jZSAvIHNwYW4uc3BhbjsKCgkJCQlmb3IgKGogPSAwOyBqIDwgc3Bhbi5zcGFuOyBqKyspIHsKCQkJCQlub2RlLnRhYmxlLndpZHRoc1tzcGFuLmNvbCArIGpdLl9taW5XaWR0aCArPSBxOwoJCQkJfQoJCQl9CgoJCQlpZiAobWF4RGlmZmVyZW5jZSA+IDApIHsKCQkJCXEgPSBtYXhEaWZmZXJlbmNlIC8gc3Bhbi5zcGFuOwoKCQkJCWZvciAoaiA9IDA7IGogPCBzcGFuLnNwYW47IGorKykgewoJCQkJCW5vZGUudGFibGUud2lkdGhzW3NwYW4uY29sICsgal0uX21heFdpZHRoICs9IHE7CgkJCQl9CgkJCX0KCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0TWluTWF4KGNvbCwgc3Bhbiwgb2Zmc2V0cykgewoJCXZhciByZXN1bHQgPSB7bWluV2lkdGg6IDAsIG1heFdpZHRoOiAwfTsKCgkJZm9yICh2YXIgaSA9IDA7IGkgPCBzcGFuOyBpKyspIHsKCQkJcmVzdWx0Lm1pbldpZHRoICs9IG5vZGUudGFibGUud2lkdGhzW2NvbCArIGldLl9taW5XaWR0aCArIChpID8gb2Zmc2V0cy5vZmZzZXRzW2NvbCArIGldIDogMCk7CgkJCXJlc3VsdC5tYXhXaWR0aCArPSBub2RlLnRhYmxlLndpZHRoc1tjb2wgKyBpXS5fbWF4V2lkdGggKyAoaSA/IG9mZnNldHMub2Zmc2V0c1tjb2wgKyBpXSA6IDApOwoJCX0KCgkJcmV0dXJuIHJlc3VsdDsKCX0KCglmdW5jdGlvbiBtYXJrU3BhbnMocm93RGF0YSwgY29sLCBzcGFuKSB7CgkJZm9yICh2YXIgaSA9IDE7IGkgPCBzcGFuOyBpKyspIHsKCQkJcm93RGF0YVtjb2wgKyBpXSA9IHsKCQkJCV9zcGFuOiB0cnVlLAoJCQkJX21pbldpZHRoOiAwLAoJCQkJX21heFdpZHRoOiAwLAoJCQkJcm93U3Bhbjogcm93RGF0YVtjb2xdLnJvd1NwYW4KCQkJfTsKCQl9Cgl9CgoJZnVuY3Rpb24gbWFya1ZTcGFucyh0YWJsZSwgcm93LCBjb2wsIHNwYW4pIHsKCQlmb3IgKHZhciBpID0gMTsgaSA8IHNwYW47IGkrKykgewoJCQl0YWJsZS5ib2R5W3JvdyArIGldW2NvbF0gPSB7CgkJCQlfc3BhbjogdHJ1ZSwKCQkJCV9taW5XaWR0aDogMCwKCQkJCV9tYXhXaWR0aDogMCwKCQkJCWZpbGxDb2xvcjogdGFibGUuYm9keVtyb3ddW2NvbF0uZmlsbENvbG9yCgkJCX07CgkJfQoJfQoKCWZ1bmN0aW9uIGV4dGVuZFRhYmxlV2lkdGhzKG5vZGUpIHsKCQlpZiAoIW5vZGUudGFibGUud2lkdGhzKSB7CgkJCW5vZGUudGFibGUud2lkdGhzID0gJ2F1dG8nOwoJCX0KCgkJaWYgKGlzU3RyaW5nKG5vZGUudGFibGUud2lkdGhzKSkgewoJCQlub2RlLnRhYmxlLndpZHRocyA9IFtub2RlLnRhYmxlLndpZHRoc107CgoJCQl3aGlsZSAobm9kZS50YWJsZS53aWR0aHMubGVuZ3RoIDwgbm9kZS50YWJsZS5ib2R5WzBdLmxlbmd0aCkgewoJCQkJbm9kZS50YWJsZS53aWR0aHMucHVzaChub2RlLnRhYmxlLndpZHRoc1tub2RlLnRhYmxlLndpZHRocy5sZW5ndGggLSAxXSk7CgkJCX0KCQl9CgoJCWZvciAodmFyIGkgPSAwLCBsID0gbm9kZS50YWJsZS53aWR0aHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJCXZhciB3ID0gbm9kZS50YWJsZS53aWR0aHNbaV07CgkJCWlmIChpc051bWJlcih3KSB8fCBpc1N0cmluZyh3KSkgewoJCQkJbm9kZS50YWJsZS53aWR0aHNbaV0gPSB7d2lkdGg6IHd9OwoJCQl9CgkJfQoJfQp9OwoKRG9jTWVhc3VyZS5wcm90b3R5cGUubWVhc3VyZUNhbnZhcyA9IGZ1bmN0aW9uIChub2RlKSB7Cgl2YXIgdyA9IDAsIGggPSAwOwoKCWZvciAodmFyIGkgPSAwLCBsID0gbm9kZS5jYW52YXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJdmFyIHZlY3RvciA9IG5vZGUuY2FudmFzW2ldOwoKCQlzd2l0Y2ggKHZlY3Rvci50eXBlKSB7CgkJCWNhc2UgJ2VsbGlwc2UnOgoJCQkJdyA9IE1hdGgubWF4KHcsIHZlY3Rvci54ICsgdmVjdG9yLnIxKTsKCQkJCWggPSBNYXRoLm1heChoLCB2ZWN0b3IueSArIHZlY3Rvci5yMik7CgkJCQlicmVhazsKCQkJY2FzZSAncmVjdCc6CgkJCQl3ID0gTWF0aC5tYXgodywgdmVjdG9yLnggKyB2ZWN0b3Iudyk7CgkJCQloID0gTWF0aC5tYXgoaCwgdmVjdG9yLnkgKyB2ZWN0b3IuaCk7CgkJCQlicmVhazsKCQkJY2FzZSAnbGluZSc6CgkJCQl3ID0gTWF0aC5tYXgodywgdmVjdG9yLngxLCB2ZWN0b3IueDIpOwoJCQkJaCA9IE1hdGgubWF4KGgsIHZlY3Rvci55MSwgdmVjdG9yLnkyKTsKCQkJCWJyZWFrOwoJCQljYXNlICdwb2x5bGluZSc6CgkJCQlmb3IgKHZhciBpMiA9IDAsIGwyID0gdmVjdG9yLnBvaW50cy5sZW5ndGg7IGkyIDwgbDI7IGkyKyspIHsKCQkJCQl3ID0gTWF0aC5tYXgodywgdmVjdG9yLnBvaW50c1tpMl0ueCk7CgkJCQkJaCA9IE1hdGgubWF4KGgsIHZlY3Rvci5wb2ludHNbaTJdLnkpOwoJCQkJfQoJCQkJYnJlYWs7CgkJfQoJfQoKCW5vZGUuX21pbldpZHRoID0gbm9kZS5fbWF4V2lkdGggPSB3OwoJbm9kZS5fbWluSGVpZ2h0ID0gbm9kZS5fbWF4SGVpZ2h0ID0gaDsKCW5vZGUuX2FsaWdubWVudCA9IHRoaXMuc3R5bGVTdGFjay5nZXRQcm9wZXJ0eSgnYWxpZ25tZW50Jyk7CgoJcmV0dXJuIG5vZGU7Cn07CgpEb2NNZWFzdXJlLnByb3RvdHlwZS5tZWFzdXJlUXIgPSBmdW5jdGlvbiAobm9kZSkgewoJbm9kZSA9IHFyRW5jb2Rlci5tZWFzdXJlKG5vZGUpOwoJbm9kZS5fYWxpZ25tZW50ID0gdGhpcy5zdHlsZVN0YWNrLmdldFByb3BlcnR5KCdhbGlnbm1lbnQnKTsKCXJldHVybiBub2RlOwp9OwoKbW9kdWxlLmV4cG9ydHMgPSBEb2NNZWFzdXJlOwoKCi8qKiovIH0pLAovKiAxMzEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIGxvb2t1cCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJzsKCjsoZnVuY3Rpb24gKGV4cG9ydHMpIHsKCSd1c2Ugc3RyaWN0JzsKCiAgdmFyIEFyciA9ICh0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcpCiAgICA/IFVpbnQ4QXJyYXkKICAgIDogQXJyYXkKCgl2YXIgUExVUyAgID0gJysnLmNoYXJDb2RlQXQoMCkKCXZhciBTTEFTSCAgPSAnLycuY2hhckNvZGVBdCgwKQoJdmFyIE5VTUJFUiA9ICcwJy5jaGFyQ29kZUF0KDApCgl2YXIgTE9XRVIgID0gJ2EnLmNoYXJDb2RlQXQoMCkKCXZhciBVUFBFUiAgPSAnQScuY2hhckNvZGVBdCgwKQoJdmFyIFBMVVNfVVJMX1NBRkUgPSAnLScuY2hhckNvZGVBdCgwKQoJdmFyIFNMQVNIX1VSTF9TQUZFID0gJ18nLmNoYXJDb2RlQXQoMCkKCglmdW5jdGlvbiBkZWNvZGUgKGVsdCkgewoJCXZhciBjb2RlID0gZWx0LmNoYXJDb2RlQXQoMCkKCQlpZiAoY29kZSA9PT0gUExVUyB8fAoJCSAgICBjb2RlID09PSBQTFVTX1VSTF9TQUZFKQoJCQlyZXR1cm4gNjIgLy8gJysnCgkJaWYgKGNvZGUgPT09IFNMQVNIIHx8CgkJICAgIGNvZGUgPT09IFNMQVNIX1VSTF9TQUZFKQoJCQlyZXR1cm4gNjMgLy8gJy8nCgkJaWYgKGNvZGUgPCBOVU1CRVIpCgkJCXJldHVybiAtMSAvL25vIG1hdGNoCgkJaWYgKGNvZGUgPCBOVU1CRVIgKyAxMCkKCQkJcmV0dXJuIGNvZGUgLSBOVU1CRVIgKyAyNiArIDI2CgkJaWYgKGNvZGUgPCBVUFBFUiArIDI2KQoJCQlyZXR1cm4gY29kZSAtIFVQUEVSCgkJaWYgKGNvZGUgPCBMT1dFUiArIDI2KQoJCQlyZXR1cm4gY29kZSAtIExPV0VSICsgMjYKCX0KCglmdW5jdGlvbiBiNjRUb0J5dGVBcnJheSAoYjY0KSB7CgkJdmFyIGksIGosIGwsIHRtcCwgcGxhY2VIb2xkZXJzLCBhcnIKCgkJaWYgKGI2NC5sZW5ndGggJSA0ID4gMCkgewoJCQl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQnKQoJCX0KCgkJLy8gdGhlIG51bWJlciBvZiBlcXVhbCBzaWducyAocGxhY2UgaG9sZGVycykKCQkvLyBpZiB0aGVyZSBhcmUgdHdvIHBsYWNlaG9sZGVycywgdGhhbiB0aGUgdHdvIGNoYXJhY3RlcnMgYmVmb3JlIGl0CgkJLy8gcmVwcmVzZW50IG9uZSBieXRlCgkJLy8gaWYgdGhlcmUgaXMgb25seSBvbmUsIHRoZW4gdGhlIHRocmVlIGNoYXJhY3RlcnMgYmVmb3JlIGl0IHJlcHJlc2VudCAyIGJ5dGVzCgkJLy8gdGhpcyBpcyBqdXN0IGEgY2hlYXAgaGFjayB0byBub3QgZG8gaW5kZXhPZiB0d2ljZQoJCXZhciBsZW4gPSBiNjQubGVuZ3RoCgkJcGxhY2VIb2xkZXJzID0gJz0nID09PSBiNjQuY2hhckF0KGxlbiAtIDIpID8gMiA6ICc9JyA9PT0gYjY0LmNoYXJBdChsZW4gLSAxKSA/IDEgOiAwCgoJCS8vIGJhc2U2NCBpcyA0LzMgKyB1cCB0byB0d28gY2hhcmFjdGVycyBvZiB0aGUgb3JpZ2luYWwgZGF0YQoJCWFyciA9IG5ldyBBcnIoYjY0Lmxlbmd0aCAqIDMgLyA0IC0gcGxhY2VIb2xkZXJzKQoKCQkvLyBpZiB0aGVyZSBhcmUgcGxhY2Vob2xkZXJzLCBvbmx5IGdldCB1cCB0byB0aGUgbGFzdCBjb21wbGV0ZSA0IGNoYXJzCgkJbCA9IHBsYWNlSG9sZGVycyA+IDAgPyBiNjQubGVuZ3RoIC0gNCA6IGI2NC5sZW5ndGgKCgkJdmFyIEwgPSAwCgoJCWZ1bmN0aW9uIHB1c2ggKHYpIHsKCQkJYXJyW0wrK10gPSB2CgkJfQoKCQlmb3IgKGkgPSAwLCBqID0gMDsgaSA8IGw7IGkgKz0gNCwgaiArPSAzKSB7CgkJCXRtcCA9IChkZWNvZGUoYjY0LmNoYXJBdChpKSkgPDwgMTgpIHwgKGRlY29kZShiNjQuY2hhckF0KGkgKyAxKSkgPDwgMTIpIHwgKGRlY29kZShiNjQuY2hhckF0KGkgKyAyKSkgPDwgNikgfCBkZWNvZGUoYjY0LmNoYXJBdChpICsgMykpCgkJCXB1c2goKHRtcCAmIDB4RkYwMDAwKSA+PiAxNikKCQkJcHVzaCgodG1wICYgMHhGRjAwKSA+PiA4KQoJCQlwdXNoKHRtcCAmIDB4RkYpCgkJfQoKCQlpZiAocGxhY2VIb2xkZXJzID09PSAyKSB7CgkJCXRtcCA9IChkZWNvZGUoYjY0LmNoYXJBdChpKSkgPDwgMikgfCAoZGVjb2RlKGI2NC5jaGFyQXQoaSArIDEpKSA+PiA0KQoJCQlwdXNoKHRtcCAmIDB4RkYpCgkJfSBlbHNlIGlmIChwbGFjZUhvbGRlcnMgPT09IDEpIHsKCQkJdG1wID0gKGRlY29kZShiNjQuY2hhckF0KGkpKSA8PCAxMCkgfCAoZGVjb2RlKGI2NC5jaGFyQXQoaSArIDEpKSA8PCA0KSB8IChkZWNvZGUoYjY0LmNoYXJBdChpICsgMikpID4+IDIpCgkJCXB1c2goKHRtcCA+PiA4KSAmIDB4RkYpCgkJCXB1c2godG1wICYgMHhGRikKCQl9CgoJCXJldHVybiBhcnIKCX0KCglmdW5jdGlvbiB1aW50OFRvQmFzZTY0ICh1aW50OCkgewoJCXZhciBpLAoJCQlleHRyYUJ5dGVzID0gdWludDgubGVuZ3RoICUgMywgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXMKCQkJb3V0cHV0ID0gIiIsCgkJCXRlbXAsIGxlbmd0aAoKCQlmdW5jdGlvbiBlbmNvZGUgKG51bSkgewoJCQlyZXR1cm4gbG9va3VwLmNoYXJBdChudW0pCgkJfQoKCQlmdW5jdGlvbiB0cmlwbGV0VG9CYXNlNjQgKG51bSkgewoJCQlyZXR1cm4gZW5jb2RlKG51bSA+PiAxOCAmIDB4M0YpICsgZW5jb2RlKG51bSA+PiAxMiAmIDB4M0YpICsgZW5jb2RlKG51bSA+PiA2ICYgMHgzRikgKyBlbmNvZGUobnVtICYgMHgzRikKCQl9CgoJCS8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXIKCQlmb3IgKGkgPSAwLCBsZW5ndGggPSB1aW50OC5sZW5ndGggLSBleHRyYUJ5dGVzOyBpIDwgbGVuZ3RoOyBpICs9IDMpIHsKCQkJdGVtcCA9ICh1aW50OFtpXSA8PCAxNikgKyAodWludDhbaSArIDFdIDw8IDgpICsgKHVpbnQ4W2kgKyAyXSkKCQkJb3V0cHV0ICs9IHRyaXBsZXRUb0Jhc2U2NCh0ZW1wKQoJCX0KCgkJLy8gcGFkIHRoZSBlbmQgd2l0aCB6ZXJvcywgYnV0IG1ha2Ugc3VyZSB0byBub3QgZm9yZ2V0IHRoZSBleHRyYSBieXRlcwoJCXN3aXRjaCAoZXh0cmFCeXRlcykgewoJCQljYXNlIDE6CgkJCQl0ZW1wID0gdWludDhbdWludDgubGVuZ3RoIC0gMV0KCQkJCW91dHB1dCArPSBlbmNvZGUodGVtcCA+PiAyKQoJCQkJb3V0cHV0ICs9IGVuY29kZSgodGVtcCA8PCA0KSAmIDB4M0YpCgkJCQlvdXRwdXQgKz0gJz09JwoJCQkJYnJlYWsKCQkJY2FzZSAyOgoJCQkJdGVtcCA9ICh1aW50OFt1aW50OC5sZW5ndGggLSAyXSA8PCA4KSArICh1aW50OFt1aW50OC5sZW5ndGggLSAxXSkKCQkJCW91dHB1dCArPSBlbmNvZGUodGVtcCA+PiAxMCkKCQkJCW91dHB1dCArPSBlbmNvZGUoKHRlbXAgPj4gNCkgJiAweDNGKQoJCQkJb3V0cHV0ICs9IGVuY29kZSgodGVtcCA8PCAyKSAmIDB4M0YpCgkJCQlvdXRwdXQgKz0gJz0nCgkJCQlicmVhawoJCX0KCgkJcmV0dXJuIG91dHB1dAoJfQoKCWV4cG9ydHMudG9CeXRlQXJyYXkgPSBiNjRUb0J5dGVBcnJheQoJZXhwb3J0cy5mcm9tQnl0ZUFycmF5ID0gdWludDhUb0Jhc2U2NAp9KCBmYWxzZSA/ICh0aGlzLmJhc2U2NGpzID0ge30pIDogZXhwb3J0cykpCgoKLyoqKi8gfSksCi8qIDEzMiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgovLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuNy4xCihmdW5jdGlvbigpIHsKICB2YXIgQUksIEFMLCBCMiwgQkEsIEJCLCBCSywgQ0IsIENKLCBDTCwgQ00sIENQLCBDUiwgRVgsIEdMLCBIMiwgSDMsIEhMLCBIWSwgSUQsIElOLCBJUywgSkwsIEpULCBKViwgTEYsIE5MLCBOUywgTlUsIE9QLCBQTywgUFIsIFFVLCBSSSwgU0EsIFNHLCBTUCwgU1ksIFdKLCBYWCwgWlc7CgogIGV4cG9ydHMuT1AgPSBPUCA9IDA7CgogIGV4cG9ydHMuQ0wgPSBDTCA9IDE7CgogIGV4cG9ydHMuQ1AgPSBDUCA9IDI7CgogIGV4cG9ydHMuUVUgPSBRVSA9IDM7CgogIGV4cG9ydHMuR0wgPSBHTCA9IDQ7CgogIGV4cG9ydHMuTlMgPSBOUyA9IDU7CgogIGV4cG9ydHMuRVggPSBFWCA9IDY7CgogIGV4cG9ydHMuU1kgPSBTWSA9IDc7CgogIGV4cG9ydHMuSVMgPSBJUyA9IDg7CgogIGV4cG9ydHMuUFIgPSBQUiA9IDk7CgogIGV4cG9ydHMuUE8gPSBQTyA9IDEwOwoKICBleHBvcnRzLk5VID0gTlUgPSAxMTsKCiAgZXhwb3J0cy5BTCA9IEFMID0gMTI7CgogIGV4cG9ydHMuSEwgPSBITCA9IDEzOwoKICBleHBvcnRzLklEID0gSUQgPSAxNDsKCiAgZXhwb3J0cy5JTiA9IElOID0gMTU7CgogIGV4cG9ydHMuSFkgPSBIWSA9IDE2OwoKICBleHBvcnRzLkJBID0gQkEgPSAxNzsKCiAgZXhwb3J0cy5CQiA9IEJCID0gMTg7CgogIGV4cG9ydHMuQjIgPSBCMiA9IDE5OwoKICBleHBvcnRzLlpXID0gWlcgPSAyMDsKCiAgZXhwb3J0cy5DTSA9IENNID0gMjE7CgogIGV4cG9ydHMuV0ogPSBXSiA9IDIyOwoKICBleHBvcnRzLkgyID0gSDIgPSAyMzsKCiAgZXhwb3J0cy5IMyA9IEgzID0gMjQ7CgogIGV4cG9ydHMuSkwgPSBKTCA9IDI1OwoKICBleHBvcnRzLkpWID0gSlYgPSAyNjsKCiAgZXhwb3J0cy5KVCA9IEpUID0gMjc7CgogIGV4cG9ydHMuUkkgPSBSSSA9IDI4OwoKICBleHBvcnRzLkFJID0gQUkgPSAyOTsKCiAgZXhwb3J0cy5CSyA9IEJLID0gMzA7CgogIGV4cG9ydHMuQ0IgPSBDQiA9IDMxOwoKICBleHBvcnRzLkNKID0gQ0ogPSAzMjsKCiAgZXhwb3J0cy5DUiA9IENSID0gMzM7CgogIGV4cG9ydHMuTEYgPSBMRiA9IDM0OwoKICBleHBvcnRzLk5MID0gTkwgPSAzNTsKCiAgZXhwb3J0cy5TQSA9IFNBID0gMzY7CgogIGV4cG9ydHMuU0cgPSBTRyA9IDM3OwoKICBleHBvcnRzLlNQID0gU1AgPSAzODsKCiAgZXhwb3J0cy5YWCA9IFhYID0gMzk7Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiAxMzMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjcuMQooZnVuY3Rpb24oKSB7CiAgdmFyIENJX0JSSywgQ1BfQlJLLCBESV9CUkssIElOX0JSSywgUFJfQlJLOwoKICBleHBvcnRzLkRJX0JSSyA9IERJX0JSSyA9IDA7CgogIGV4cG9ydHMuSU5fQlJLID0gSU5fQlJLID0gMTsKCiAgZXhwb3J0cy5DSV9CUksgPSBDSV9CUksgPSAyOwoKICBleHBvcnRzLkNQX0JSSyA9IENQX0JSSyA9IDM7CgogIGV4cG9ydHMuUFJfQlJLID0gUFJfQlJLID0gNDsKCiAgZXhwb3J0cy5wYWlyVGFibGUgPSBbW1BSX0JSSywgUFJfQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIENQX0JSSywgUFJfQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW1BSX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLXSwgW0lOX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0lOX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgRElfQlJLXSwgW0lOX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0lOX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0lOX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0lOX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgRElfQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgRElfQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0lOX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgUFJfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0lOX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0lOX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIElOX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIElOX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIElOX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIElOX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLXV07Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiAxMzQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwovKmVzbGludCBuby11bnVzZWQtdmFyczogWyJlcnJvciIsIHsiYXJncyI6ICJub25lIn1dKi8KLyplc2xpbnQgbm8tcmVkZWNsYXJlOiAib2ZmIiovCgoKLyogcXIuanMgLS0gUVIgY29kZSBnZW5lcmF0b3IgaW4gSmF2YXNjcmlwdCAocmV2aXNpb24gMjAxMS0wMS0xOSkKICogV3JpdHRlbiBieSBLYW5nIFNlb25naG9vbiA8cHVibGljK3FyanNAbWVhcmllLm9yZz4uCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgaW4gdGhlIHB1YmxpYyBkb21haW47IGlmIHlvdXIganVyaXNkaWN0aW9uIGRvZXMgbm90CiAqIHJlY29nbml6ZSB0aGUgcHVibGljIGRvbWFpbiB0aGUgdGVybXMgb2YgQ3JlYXRpdmUgQ29tbW9ucyBDQzAgbGljZW5zZQogKiBhcHBseS4gSW4gdGhlIG90aGVyIHdvcmRzLCB5b3UgY2FuIGFsd2F5cyBkbyB3aGF0IHlvdSB3YW50LgogKi8KCgovLyBwZXItdmVyc2lvbiBpbmZvcm1hdGlvbiAoY2YuIEpJUyBYIDA1MTA6MjAwNCBwcC4gMzAtLTM2LCA3MSkKLy8KLy8gWzBdOiB0aGUgZGVncmVlIG9mIGdlbmVyYXRvciBwb2x5bm9taWFsIGJ5IEVDQyBsZXZlbHMKLy8gWzFdOiAjIG9mIGNvZGUgYmxvY2tzIGJ5IEVDQyBsZXZlbHMKLy8gWzJdOiBsZWZ0LXRvcCBwb3NpdGlvbnMgb2YgYWxpZ25tZW50IHBhdHRlcm5zCi8vCi8vIHRoZSBudW1iZXIgaW4gdGhpcyB0YWJsZSAoaW4gcGFydGljdWxhciwgWzBdKSBkb2VzIG5vdCBleGFjdGx5IG1hdGNoIHdpdGgKLy8gdGhlIG51bWJlcnMgaW4gdGhlIHNwZWNmaWNpYXRpb24uIHNlZSBhdWd1bWVudGVjY3MgYmVsb3cgZm9yIHRoZSByZWFzb24uCnZhciBWRVJTSU9OUyA9IFsKCW51bGwsCglbWzEwLCA3LCAxNywgMTNdLCBbMSwgMSwgMSwgMV0sIFtdXSwKCVtbMTYsIDEwLCAyOCwgMjJdLCBbMSwgMSwgMSwgMV0sIFs0LCAxNl1dLAoJW1syNiwgMTUsIDIyLCAxOF0sIFsxLCAxLCAyLCAyXSwgWzQsIDIwXV0sCglbWzE4LCAyMCwgMTYsIDI2XSwgWzIsIDEsIDQsIDJdLCBbNCwgMjRdXSwKCVtbMjQsIDI2LCAyMiwgMThdLCBbMiwgMSwgNCwgNF0sIFs0LCAyOF1dLAoJW1sxNiwgMTgsIDI4LCAyNF0sIFs0LCAyLCA0LCA0XSwgWzQsIDMyXV0sCglbWzE4LCAyMCwgMjYsIDE4XSwgWzQsIDIsIDUsIDZdLCBbNCwgMjAsIDM2XV0sCglbWzIyLCAyNCwgMjYsIDIyXSwgWzQsIDIsIDYsIDZdLCBbNCwgMjIsIDQwXV0sCglbWzIyLCAzMCwgMjQsIDIwXSwgWzUsIDIsIDgsIDhdLCBbNCwgMjQsIDQ0XV0sCglbWzI2LCAxOCwgMjgsIDI0XSwgWzUsIDQsIDgsIDhdLCBbNCwgMjYsIDQ4XV0sCglbWzMwLCAyMCwgMjQsIDI4XSwgWzUsIDQsIDExLCA4XSwgWzQsIDI4LCA1Ml1dLAoJW1syMiwgMjQsIDI4LCAyNl0sIFs4LCA0LCAxMSwgMTBdLCBbNCwgMzAsIDU2XV0sCglbWzIyLCAyNiwgMjIsIDI0XSwgWzksIDQsIDE2LCAxMl0sIFs0LCAzMiwgNjBdXSwKCVtbMjQsIDMwLCAyNCwgMjBdLCBbOSwgNCwgMTYsIDE2XSwgWzQsIDI0LCA0NCwgNjRdXSwKCVtbMjQsIDIyLCAyNCwgMzBdLCBbMTAsIDYsIDE4LCAxMl0sIFs0LCAyNCwgNDYsIDY4XV0sCglbWzI4LCAyNCwgMzAsIDI0XSwgWzEwLCA2LCAxNiwgMTddLCBbNCwgMjQsIDQ4LCA3Ml1dLAoJW1syOCwgMjgsIDI4LCAyOF0sIFsxMSwgNiwgMTksIDE2XSwgWzQsIDI4LCA1MiwgNzZdXSwKCVtbMjYsIDMwLCAyOCwgMjhdLCBbMTMsIDYsIDIxLCAxOF0sIFs0LCAyOCwgNTQsIDgwXV0sCglbWzI2LCAyOCwgMjYsIDI2XSwgWzE0LCA3LCAyNSwgMjFdLCBbNCwgMjgsIDU2LCA4NF1dLAoJW1syNiwgMjgsIDI4LCAzMF0sIFsxNiwgOCwgMjUsIDIwXSwgWzQsIDMyLCA2MCwgODhdXSwKCVtbMjYsIDI4LCAzMCwgMjhdLCBbMTcsIDgsIDI1LCAyM10sIFs0LCAyNiwgNDgsIDcwLCA5Ml1dLAoJW1syOCwgMjgsIDI0LCAzMF0sIFsxNywgOSwgMzQsIDIzXSwgWzQsIDI0LCA0OCwgNzIsIDk2XV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzE4LCA5LCAzMCwgMjVdLCBbNCwgMjgsIDUyLCA3NiwgMTAwXV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzIwLCAxMCwgMzIsIDI3XSwgWzQsIDI2LCA1MiwgNzgsIDEwNF1dLAoJW1syOCwgMjYsIDMwLCAzMF0sIFsyMSwgMTIsIDM1LCAyOV0sIFs0LCAzMCwgNTYsIDgyLCAxMDhdXSwKCVtbMjgsIDI4LCAzMCwgMjhdLCBbMjMsIDEyLCAzNywgMzRdLCBbNCwgMjgsIDU2LCA4NCwgMTEyXV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzI1LCAxMiwgNDAsIDM0XSwgWzQsIDMyLCA2MCwgODgsIDExNl1dLAoJW1syOCwgMzAsIDMwLCAzMF0sIFsyNiwgMTMsIDQyLCAzNV0sIFs0LCAyNCwgNDgsIDcyLCA5NiwgMTIwXV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzI4LCAxNCwgNDUsIDM4XSwgWzQsIDI4LCA1MiwgNzYsIDEwMCwgMTI0XV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzI5LCAxNSwgNDgsIDQwXSwgWzQsIDI0LCA1MCwgNzYsIDEwMiwgMTI4XV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzMxLCAxNiwgNTEsIDQzXSwgWzQsIDI4LCA1NCwgODAsIDEwNiwgMTMyXV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzMzLCAxNywgNTQsIDQ1XSwgWzQsIDMyLCA1OCwgODQsIDExMCwgMTM2XV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzM1LCAxOCwgNTcsIDQ4XSwgWzQsIDI4LCA1NiwgODQsIDExMiwgMTQwXV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzM3LCAxOSwgNjAsIDUxXSwgWzQsIDMyLCA2MCwgODgsIDExNiwgMTQ0XV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzM4LCAxOSwgNjMsIDUzXSwgWzQsIDI4LCA1MiwgNzYsIDEwMCwgMTI0LCAxNDhdXSwKCVtbMjgsIDMwLCAzMCwgMzBdLCBbNDAsIDIwLCA2NiwgNTZdLCBbNCwgMjIsIDQ4LCA3NCwgMTAwLCAxMjYsIDE1Ml1dLAoJW1syOCwgMzAsIDMwLCAzMF0sIFs0MywgMjEsIDcwLCA1OV0sIFs0LCAyNiwgNTIsIDc4LCAxMDQsIDEzMCwgMTU2XV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzQ1LCAyMiwgNzQsIDYyXSwgWzQsIDMwLCA1NiwgODIsIDEwOCwgMTM0LCAxNjBdXSwKCVtbMjgsIDMwLCAzMCwgMzBdLCBbNDcsIDI0LCA3NywgNjVdLCBbNCwgMjQsIDUyLCA4MCwgMTA4LCAxMzYsIDE2NF1dLAoJW1syOCwgMzAsIDMwLCAzMF0sIFs0OSwgMjUsIDgxLCA2OF0sIFs0LCAyOCwgNTYsIDg0LCAxMTIsIDE0MCwgMTY4XV1dOwoKLy8gbW9kZSBjb25zdGFudHMgKGNmLiBUYWJsZSAyIGluIEpJUyBYIDA1MTA6MjAwNCBwLiAxNikKdmFyIE1PREVfVEVSTUlOQVRPUiA9IDA7CnZhciBNT0RFX05VTUVSSUMgPSAxLCBNT0RFX0FMUEhBTlVNRVJJQyA9IDIsIE1PREVfT0NURVQgPSA0LCBNT0RFX0tBTkpJID0gODsKCi8vIHZhbGlkYXRpb24gcmVnZXhwcwp2YXIgTlVNRVJJQ19SRUdFWFAgPSAvXlxkKiQvOwp2YXIgQUxQSEFOVU1FUklDX1JFR0VYUCA9IC9eW0EtWmEtejAtOSAkJSorXC0uLzpdKiQvOwp2YXIgQUxQSEFOVU1FUklDX09VVF9SRUdFWFAgPSAvXltBLVowLTkgJCUqK1wtLi86XSokLzsKCi8vIEVDQyBsZXZlbHMgKGNmLiBUYWJsZSAyMiBpbiBKSVMgWCAwNTEwOjIwMDQgcC4gNDUpCnZhciBFQ0NMRVZFTF9MID0gMSwgRUNDTEVWRUxfTSA9IDAsIEVDQ0xFVkVMX1EgPSAzLCBFQ0NMRVZFTF9IID0gMjsKCi8vIEdGKDJeOCktdG8taW50ZWdlciBtYXBwaW5nIHdpdGggYSByZWR1Y2luZyBwb2x5bm9taWFsIHheOCt4XjQreF4zK3heMisxCi8vIGludmFyaWFudDogR0YyNTZfTUFQW0dGMjU2X0lOVk1BUFtpXV0gPT0gaSBmb3IgYWxsIGkgaW4gWzEsMjU2KQp2YXIgR0YyNTZfTUFQID0gW10sIEdGMjU2X0lOVk1BUCA9IFstMV07CmZvciAodmFyIGkgPSAwLCB2ID0gMTsgaSA8IDI1NTsgKytpKSB7CglHRjI1Nl9NQVAucHVzaCh2KTsKCUdGMjU2X0lOVk1BUFt2XSA9IGk7Cgl2ID0gKHYgKiAyKSBeICh2ID49IDEyOCA/IDB4MTFkIDogMCk7Cn0KCi8vIGdlbmVyYXRvciBwb2x5bm9taWFscyB1cCB0byBkZWdyZWUgMzAKLy8gKHNob3VsZCBtYXRjaCB3aXRoIHBvbHlub21pYWxzIGluIEpJUyBYIDA1MTA6MjAwNCBBcHBlbmRpeCBBKQovLwovLyBnZW5lcmF0b3IgcG9seW5vbWlhbCBvZiBkZWdyZWUgSyBpcyBwcm9kdWN0IG9mICh4LVxhbHBoYV4wKSwgKHgtXGFscGhhXjEpLAovLyAuLi4sICh4LVxhbHBoYV4oSy0xKSkuIGJ5IGNvbnZlbnRpb24sIHdlIG9taXQgdGhlIEstdGggY29lZmZpY2llbnQgKGFsd2F5cyAxKQovLyBmcm9tIHRoZSByZXN1bHQ7IGFsc28gb3RoZXIgY29lZmZpY2llbnRzIGFyZSB3cml0dGVuIGluIHRlcm1zIG9mIHRoZSBleHBvbmVudAovLyB0byBcYWxwaGEgdG8gYXZvaWQgdGhlIHJlZHVuZGFudCBjYWxjdWxhdGlvbi4gKHNlZSBhbHNvIGNhbGN1bGF0ZWVjYyBiZWxvdy4pCnZhciBHRjI1Nl9HRU5QT0xZID0gW1tdXTsKZm9yICh2YXIgaSA9IDA7IGkgPCAzMDsgKytpKSB7Cgl2YXIgcHJldnBvbHkgPSBHRjI1Nl9HRU5QT0xZW2ldLCBwb2x5ID0gW107Cglmb3IgKHZhciBqID0gMDsgaiA8PSBpOyArK2opIHsKCQl2YXIgYSA9IChqIDwgaSA/IEdGMjU2X01BUFtwcmV2cG9seVtqXV0gOiAwKTsKCQl2YXIgYiA9IEdGMjU2X01BUFsoaSArIChwcmV2cG9seVtqIC0gMV0gfHwgMCkpICUgMjU1XTsKCQlwb2x5LnB1c2goR0YyNTZfSU5WTUFQW2EgXiBiXSk7Cgl9CglHRjI1Nl9HRU5QT0xZLnB1c2gocG9seSk7Cn0KCi8vIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXIgbWFwcGluZyAoY2YuIFRhYmxlIDUgaW4gSklTIFggMDUxMDoyMDA0IHAuIDE5KQp2YXIgQUxQSEFOVU1FUklDX01BUCA9IHt9Owpmb3IgKHZhciBpID0gMDsgaSA8IDQ1OyArK2kpIHsKCUFMUEhBTlVNRVJJQ19NQVBbJzAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiAkJSorLS4vOicuY2hhckF0KGkpXSA9IGk7Cn0KCi8vIG1hc2sgZnVuY3Rpb25zIGluIHRlcm1zIG9mIHJvdyAjIGFuZCBjb2x1bW4gIwovLyAoY2YuIFRhYmxlIDIwIGluIEpJUyBYIDA1MTA6MjAwNCBwLiA0MikKLypqc2hpbnQgdW51c2VkOiBmYWxzZSAqLwp2YXIgTUFTS0ZVTkNTID0gWwoJZnVuY3Rpb24gKGksIGopIHsKCQlyZXR1cm4gKGkgKyBqKSAlIDIgPT09IDA7Cgl9LAoJZnVuY3Rpb24gKGksIGopIHsKCQlyZXR1cm4gaSAlIDIgPT09IDA7Cgl9LAoJZnVuY3Rpb24gKGksIGopIHsKCQlyZXR1cm4gaiAlIDMgPT09IDA7Cgl9LAoJZnVuY3Rpb24gKGksIGopIHsKCQlyZXR1cm4gKGkgKyBqKSAlIDMgPT09IDA7Cgl9LAoJZnVuY3Rpb24gKGksIGopIHsKCQlyZXR1cm4gKCgoaSAvIDIpIHwgMCkgKyAoKGogLyAzKSB8IDApKSAlIDIgPT09IDA7Cgl9LAoJZnVuY3Rpb24gKGksIGopIHsKCQlyZXR1cm4gKGkgKiBqKSAlIDIgKyAoaSAqIGopICUgMyA9PT0gMDsKCX0sCglmdW5jdGlvbiAoaSwgaikgewoJCXJldHVybiAoKGkgKiBqKSAlIDIgKyAoaSAqIGopICUgMykgJSAyID09PSAwOwoJfSwKCWZ1bmN0aW9uIChpLCBqKSB7CgkJcmV0dXJuICgoaSArIGopICUgMiArIChpICogaikgJSAzKSAlIDIgPT09IDA7Cgl9XTsKCi8vIHJldHVybnMgdHJ1ZSB3aGVuIHRoZSB2ZXJzaW9uIGluZm9ybWF0aW9uIGhhcyB0byBiZSBlbWJlZGVkLgp2YXIgbmVlZHN2ZXJpbmZvID0gZnVuY3Rpb24gKHZlcikgewoJcmV0dXJuIHZlciA+IDY7Cn07CgovLyByZXR1cm5zIHRoZSBzaXplIG9mIGVudGlyZSBRUiBjb2RlIGZvciBnaXZlbiB2ZXJzaW9uLgp2YXIgZ2V0c2l6ZWJ5dmVyID0gZnVuY3Rpb24gKHZlcikgewoJcmV0dXJuIDQgKiB2ZXIgKyAxNzsKfTsKCi8vIHJldHVybnMgdGhlIG51bWJlciBvZiBiaXRzIGF2YWlsYWJsZSBmb3IgY29kZSB3b3JkcyBpbiB0aGlzIHZlcnNpb24uCnZhciBuZnVsbGJpdHMgPSBmdW5jdGlvbiAodmVyKSB7CgkvKgoJICogfDwtLS0tLS0tLS0tLS0tLS0gbiAtLS0tLS0tLS0tLS0tLS0+fAoJICogfCAgICAgICAgfDwtLS0tLSBuLTE3IC0tLS0+fCAgICAgICAgfAoJICogKy0tLS0tLS0rICAgICAgICAgICAgICAgIC8vLystLS0tLS0tKyAtLS0tCgkgKiB8ICAgICAgIHwgICAgICAgICAgICAgICAgLy8vfCAgICAgICB8ICAgIF4KCSAqIHwgIDl4OSAgfCAgICAgICBAQEBAQCAgICAvLy98ICA5eDggIHwgICAgfAoJICogfCAgICAgICB8ICMgIyAjIEA1eDVAICMgIyAjIHwgICAgICAgfCAgICB8CgkgKiArLS0tLS0tLSsgICAgICAgQEBAQEAgICAgICAgKy0tLS0tLS0rICAgIHwKCSAqICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tfAoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiB8CgkgKiAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgkgKiAgICAgQEBAQEAgICAgICAgQEBAQEAgICAgICAgQEBAQEAgICAgICB8IG4KCSAqICAgICBANXg1QCAgICAgICBANXg1QCAgICAgICBANXg1QCAgIG4tMTcKCSAqICAgICBAQEBAQCAgICAgICBAQEBAQCAgICAgICBAQEBAQCAgICAgIHwgfAoJICogICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8CgkgKiAvLy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IHwKCSAqIC8vLy8vLyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tfAoJICogKy0tLS0tLS0rICAgICAgIEBAQEBAICAgICAgIEBAQEBAICAgICAgICB8CgkgKiB8ICAgICAgIHwgICAgICAgQDV4NUAgICAgICAgQDV4NUAgICAgICAgIHwKCSAqIHwgIDh4OSAgfCAgICAgICBAQEBAQCAgICAgICBAQEBAQCAgICAgICAgfAoJICogfCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CgkgKiArLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0KCSAqCgkgKiB3aGVuIHRoZSBlbnRpcmUgY29kZSBoYXMgbl4yIG1vZHVsZXMgYW5kIHRoZXJlIGFyZSBtXjItMyBhbGlnbm1lbnQKCSAqIHBhdHRlcm5zLCB3ZSBoYXZlOgoJICogLSAyMjUgKD0gOXg5ICsgOXg4ICsgOHg5KSBtb2R1bGVzIGZvciBmaW5kZXIgcGF0dGVybnMgYW5kCgkgKiAgIGZvcm1hdCBpbmZvcm1hdGlvbjsKCSAqIC0gMm4tMzQgKD0gMihuLTE3KSkgbW9kdWxlcyBmb3IgdGltaW5nIHBhdHRlcm5zOwoJICogLSAzNiAoPSAzeDYgKyA2eDMpIG1vZHVsZXMgZm9yIHZlcnNpb24gaW5mb3JtYXRpb24sIGlmIGFueTsKCSAqIC0gMjVtXjItNzUgKD0gKG1eMi0zKSg1eDUpKSBtb2R1bGVzIGZvciBhbGlnbm1lbnQgcGF0dGVybnMKCSAqICAgaWYgYW55LCBidXQgMTBtLTIwICg9IDIobS0yKXg1KSBvZiB0aGVtIG92ZXJsYXBzIHdpdGgKCSAqICAgdGltaW5nIHBhdHRlcm5zLgoJICovCgl2YXIgdiA9IFZFUlNJT05TW3Zlcl07Cgl2YXIgbmJpdHMgPSAxNiAqIHZlciAqIHZlciArIDEyOCAqIHZlciArIDY0OyAvLyBmaW5kZXIsIHRpbWluZyBhbmQgZm9ybWF0IGluZm8uCglpZiAobmVlZHN2ZXJpbmZvKHZlcikpCgkJbmJpdHMgLT0gMzY7IC8vIHZlcnNpb24gaW5mb3JtYXRpb24KCWlmICh2WzJdLmxlbmd0aCkgeyAvLyBhbGlnbm1lbnQgcGF0dGVybnMKCQluYml0cyAtPSAyNSAqIHZbMl0ubGVuZ3RoICogdlsyXS5sZW5ndGggLSAxMCAqIHZbMl0ubGVuZ3RoIC0gNTU7Cgl9CglyZXR1cm4gbmJpdHM7Cn07CgovLyByZXR1cm5zIHRoZSBudW1iZXIgb2YgYml0cyBhdmFpbGFibGUgZm9yIGRhdGEgcG9ydGlvbnMgKGkuZS4gZXhjbHVkZXMgRUNDCi8vIGJpdHMgYnV0IGluY2x1ZGVzIG1vZGUgYW5kIGxlbmd0aCBiaXRzKSBpbiB0aGlzIHZlcnNpb24gYW5kIEVDQyBsZXZlbC4KdmFyIG5kYXRhYml0cyA9IGZ1bmN0aW9uICh2ZXIsIGVjY2xldmVsKSB7Cgl2YXIgbmJpdHMgPSBuZnVsbGJpdHModmVyKSAmIH43OyAvLyBubyBzdWItb2N0ZXQgY29kZSB3b3JkcwoJdmFyIHYgPSBWRVJTSU9OU1t2ZXJdOwoJbmJpdHMgLT0gOCAqIHZbMF1bZWNjbGV2ZWxdICogdlsxXVtlY2NsZXZlbF07IC8vIGVjYyBiaXRzCglyZXR1cm4gbmJpdHM7Cn07CgovLyByZXR1cm5zIHRoZSBudW1iZXIgb2YgYml0cyByZXF1aXJlZCBmb3IgdGhlIGxlbmd0aCBvZiBkYXRhLgovLyAoY2YuIFRhYmxlIDMgaW4gSklTIFggMDUxMDoyMDA0IHAuIDE2KQp2YXIgbmRhdGFsZW5iaXRzID0gZnVuY3Rpb24gKHZlciwgbW9kZSkgewoJc3dpdGNoIChtb2RlKSB7CgkJY2FzZSBNT0RFX05VTUVSSUM6CgkJCXJldHVybiAodmVyIDwgMTAgPyAxMCA6IHZlciA8IDI3ID8gMTIgOiAxNCk7CgkJY2FzZSBNT0RFX0FMUEhBTlVNRVJJQzoKCQkJcmV0dXJuICh2ZXIgPCAxMCA/IDkgOiB2ZXIgPCAyNyA/IDExIDogMTMpOwoJCWNhc2UgTU9ERV9PQ1RFVDoKCQkJcmV0dXJuICh2ZXIgPCAxMCA/IDggOiAxNik7CgkJY2FzZSBNT0RFX0tBTkpJOgoJCQlyZXR1cm4gKHZlciA8IDEwID8gOCA6IHZlciA8IDI3ID8gMTAgOiAxMik7Cgl9Cn07CgovLyByZXR1cm5zIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBkYXRhIHBvc3NpYmxlIGluIGdpdmVuIGNvbmZpZ3VyYXRpb24uCnZhciBnZXRtYXhkYXRhbGVuID0gZnVuY3Rpb24gKHZlciwgbW9kZSwgZWNjbGV2ZWwpIHsKCXZhciBuYml0cyA9IG5kYXRhYml0cyh2ZXIsIGVjY2xldmVsKSAtIDQgLSBuZGF0YWxlbmJpdHModmVyLCBtb2RlKTsgLy8gNCBmb3IgbW9kZSBiaXRzCglzd2l0Y2ggKG1vZGUpIHsKCQljYXNlIE1PREVfTlVNRVJJQzoKCQkJcmV0dXJuICgobmJpdHMgLyAxMCkgfCAwKSAqIDMgKyAobmJpdHMgJSAxMCA8IDQgPyAwIDogbmJpdHMgJSAxMCA8IDcgPyAxIDogMik7CgkJY2FzZSBNT0RFX0FMUEhBTlVNRVJJQzoKCQkJcmV0dXJuICgobmJpdHMgLyAxMSkgfCAwKSAqIDIgKyAobmJpdHMgJSAxMSA8IDYgPyAwIDogMSk7CgkJY2FzZSBNT0RFX09DVEVUOgoJCQlyZXR1cm4gKG5iaXRzIC8gOCkgfCAwOwoJCWNhc2UgTU9ERV9LQU5KSToKCQkJcmV0dXJuIChuYml0cyAvIDEzKSB8IDA7Cgl9Cn07CgovLyBjaGVja3MgaWYgdGhlIGdpdmVuIGRhdGEgY2FuIGJlIGVuY29kZWQgaW4gZ2l2ZW4gbW9kZSwgYW5kIHJldHVybnMKLy8gdGhlIGNvbnZlcnRlZCBkYXRhIGZvciB0aGUgZnVydGhlciBwcm9jZXNzaW5nIGlmIHBvc3NpYmxlLiBvdGhlcndpc2UKLy8gcmV0dXJucyBudWxsLgovLwovLyB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSBsZW5ndGggb2YgZGF0YTsgaXQgaXMgYSBkdXR5IG9mCi8vIGVuY29kZSBmdW5jdGlvbiBiZWxvdyAoYXMgaXQgZGVwZW5kcyBvbiB0aGUgdmVyc2lvbiBhbmQgRUNDIGxldmVsIHRvbykuCnZhciB2YWxpZGF0ZWRhdGEgPSBmdW5jdGlvbiAobW9kZSwgZGF0YSkgewoJc3dpdGNoIChtb2RlKSB7CgkJY2FzZSBNT0RFX05VTUVSSUM6CgkJCWlmICghZGF0YS5tYXRjaChOVU1FUklDX1JFR0VYUCkpCgkJCQlyZXR1cm4gbnVsbDsKCQkJcmV0dXJuIGRhdGE7CgoJCWNhc2UgTU9ERV9BTFBIQU5VTUVSSUM6CgkJCWlmICghZGF0YS5tYXRjaChBTFBIQU5VTUVSSUNfUkVHRVhQKSkKCQkJCXJldHVybiBudWxsOwoJCQlyZXR1cm4gZGF0YS50b1VwcGVyQ2FzZSgpOwoKCQljYXNlIE1PREVfT0NURVQ6CgkJCWlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHsgLy8gZW5jb2RlIGFzIHV0Zi04IHN0cmluZwoJCQkJdmFyIG5ld2RhdGEgPSBbXTsKCQkJCWZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkgewoJCQkJCXZhciBjaCA9IGRhdGEuY2hhckNvZGVBdChpKTsKCQkJCQlpZiAoY2ggPCAweDgwKSB7CgkJCQkJCW5ld2RhdGEucHVzaChjaCk7CgkJCQkJfSBlbHNlIGlmIChjaCA8IDB4ODAwKSB7CgkJCQkJCW5ld2RhdGEucHVzaCgweGMwIHwgKGNoID4+IDYpLAoJCQkJCQkJMHg4MCB8IChjaCAmIDB4M2YpKTsKCQkJCQl9IGVsc2UgaWYgKGNoIDwgMHgxMDAwMCkgewoJCQkJCQluZXdkYXRhLnB1c2goMHhlMCB8IChjaCA+PiAxMiksCgkJCQkJCQkweDgwIHwgKChjaCA+PiA2KSAmIDB4M2YpLAoJCQkJCQkJMHg4MCB8IChjaCAmIDB4M2YpKTsKCQkJCQl9IGVsc2UgewoJCQkJCQluZXdkYXRhLnB1c2goMHhmMCB8IChjaCA+PiAxOCksCgkJCQkJCQkweDgwIHwgKChjaCA+PiAxMikgJiAweDNmKSwKCQkJCQkJCTB4ODAgfCAoKGNoID4+IDYpICYgMHgzZiksCgkJCQkJCQkweDgwIHwgKGNoICYgMHgzZikpOwoJCQkJCX0KCQkJCX0KCQkJCXJldHVybiBuZXdkYXRhOwoJCQl9IGVsc2UgewoJCQkJcmV0dXJuIGRhdGE7CgkJCX0KCX0KfTsKCi8vIHJldHVybnMgdGhlIGNvZGUgd29yZHMgKHNhbnMgRUNDIGJpdHMpIGZvciBnaXZlbiBkYXRhIGFuZCBjb25maWd1cmF0aW9ucy4KLy8gcmVxdWlyZXMgZGF0YSB0byBiZSBwcmVwcm9jZXNzZWQgYnkgdmFsaWRhdGVkYXRhLiBubyBsZW5ndGggY2hlY2sgaXMKLy8gcGVyZm9ybWVkLCBhbmQgZXZlcnl0aGluZyBoYXMgdG8gYmUgY2hlY2tlZCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgp2YXIgZW5jb2RlID0gZnVuY3Rpb24gKHZlciwgbW9kZSwgZGF0YSwgbWF4YnVmbGVuKSB7Cgl2YXIgYnVmID0gW107Cgl2YXIgYml0cyA9IDAsIHJlbWFpbmluZyA9IDg7Cgl2YXIgZGF0YWxlbiA9IGRhdGEubGVuZ3RoOwoKCS8vIHRoaXMgZnVuY3Rpb24gaXMgaW50ZW50aW9uYWxseSBuby1vcCB3aGVuIG49MC4KCXZhciBwYWNrID0gZnVuY3Rpb24gKHgsIG4pIHsKCQlpZiAobiA+PSByZW1haW5pbmcpIHsKCQkJYnVmLnB1c2goYml0cyB8ICh4ID4+IChuIC09IHJlbWFpbmluZykpKTsKCQkJd2hpbGUgKG4gPj0gOCkKCQkJCWJ1Zi5wdXNoKCh4ID4+IChuIC09IDgpKSAmIDI1NSk7CgkJCWJpdHMgPSAwOwoJCQlyZW1haW5pbmcgPSA4OwoJCX0KCQlpZiAobiA+IDApCgkJCWJpdHMgfD0gKHggJiAoKDEgPDwgbikgLSAxKSkgPDwgKHJlbWFpbmluZyAtPSBuKTsKCX07CgoJdmFyIG5sZW5iaXRzID0gbmRhdGFsZW5iaXRzKHZlciwgbW9kZSk7CglwYWNrKG1vZGUsIDQpOwoJcGFjayhkYXRhbGVuLCBubGVuYml0cyk7CgoJc3dpdGNoIChtb2RlKSB7CgkJY2FzZSBNT0RFX05VTUVSSUM6CgkJCWZvciAodmFyIGkgPSAyOyBpIDwgZGF0YWxlbjsgaSArPSAzKSB7CgkJCQlwYWNrKHBhcnNlSW50KGRhdGEuc3Vic3RyaW5nKGkgLSAyLCBpICsgMSksIDEwKSwgMTApOwoJCQl9CgkJCXBhY2socGFyc2VJbnQoZGF0YS5zdWJzdHJpbmcoaSAtIDIpLCAxMCksIFswLCA0LCA3XVtkYXRhbGVuICUgM10pOwoJCQlicmVhazsKCgkJY2FzZSBNT0RFX0FMUEhBTlVNRVJJQzoKCQkJZm9yICh2YXIgaSA9IDE7IGkgPCBkYXRhbGVuOyBpICs9IDIpIHsKCQkJCXBhY2soQUxQSEFOVU1FUklDX01BUFtkYXRhLmNoYXJBdChpIC0gMSldICogNDUgKwoJCQkJCUFMUEhBTlVNRVJJQ19NQVBbZGF0YS5jaGFyQXQoaSldLCAxMSk7CgkJCX0KCQkJaWYgKGRhdGFsZW4gJSAyID09IDEpIHsKCQkJCXBhY2soQUxQSEFOVU1FUklDX01BUFtkYXRhLmNoYXJBdChpIC0gMSldLCA2KTsKCQkJfQoJCQlicmVhazsKCgkJY2FzZSBNT0RFX09DVEVUOgoJCQlmb3IgKHZhciBpID0gMDsgaSA8IGRhdGFsZW47ICsraSkgewoJCQkJcGFjayhkYXRhW2ldLCA4KTsKCQkJfQoJCQlicmVhazsKCX0KCgkvLyBmaW5hbCBiaXRzLiBpdCBpcyBwb3NzaWJsZSB0aGF0IGFkZGluZyB0ZXJtaW5hdG9yIGNhdXNlcyB0aGUgYnVmZmVyCgkvLyB0byBvdmVyZmxvdywgYnV0IHRoZW4gdGhlIGJ1ZmZlciB0cnVuY2F0ZWQgdG8gdGhlIG1heGltdW0gc2l6ZSB3aWxsCgkvLyBiZSB2YWxpZCBhcyB0aGUgdHJ1bmNhdGVkIHRlcm1pbmF0b3IgbW9kZSBiaXRzIGFuZCBwYWRkaW5nIGlzCgkvLyBpZGVudGljYWwgaW4gYXBwZWFyYW5jZSAoY2YuIEpJUyBYIDA1MTA6MjAwNCBzZWMgOC40LjgpLgoJcGFjayhNT0RFX1RFUk1JTkFUT1IsIDQpOwoJaWYgKHJlbWFpbmluZyA8IDgpCgkJYnVmLnB1c2goYml0cyk7CgoJLy8gdGhlIHBhZGRpbmcgdG8gZmlsbCB1cCB0aGUgcmVtYWluaW5nIHNwYWNlLiB3ZSBzaG91bGQgbm90IGFkZCBhbnkKCS8vIHdvcmRzIHdoZW4gdGhlIG92ZXJmbG93IGFscmVhZHkgb2NjdXJyZWQuCgl3aGlsZSAoYnVmLmxlbmd0aCArIDEgPCBtYXhidWZsZW4pCgkJYnVmLnB1c2goMHhlYywgMHgxMSk7CglpZiAoYnVmLmxlbmd0aCA8IG1heGJ1ZmxlbikKCQlidWYucHVzaCgweGVjKTsKCXJldHVybiBidWY7Cn07CgovLyBjYWxjdWxhdGVzIEVDQyBjb2RlIHdvcmRzIGZvciBnaXZlbiBjb2RlIHdvcmRzIGFuZCBnZW5lcmF0b3IgcG9seW5vbWlhbC4KLy8KLy8gdGhpcyBpcyBxdWl0ZSBzaW1pbGFyIHRvIENSQyBjYWxjdWxhdGlvbiBhcyBib3RoIFJlZWQtU29sb21vbiBhbmQgQ1JDIHVzZQovLyB0aGUgY2VydGFpbiBraW5kIG9mIGN5Y2xpYyBjb2Rlcywgd2hpY2ggaXMgZWZmZWN0aXZlbHkgdGhlIGRpdmlzaW9uIG9mCi8vIHplcm8tYXVndW1lbnRlZCBwb2x5bm9taWFsIGJ5IHRoZSBnZW5lcmF0b3IgcG9seW5vbWlhbC4gdGhlIG9ubHkgZGlmZmVyZW5jZQovLyBpcyB0aGF0IFJlZWQtU29sb21vbiB1c2VzIEdGKDJeOCksIGluc3RlYWQgb2YgQ1JDJ3MgR0YoMiksIGFuZCBSZWVkLVNvbG9tb24KLy8gdXNlcyB0aGUgZGlmZmVyZW50IGdlbmVyYXRvciBwb2x5bm9taWFsIHRoYW4gQ1JDJ3MuCnZhciBjYWxjdWxhdGVlY2MgPSBmdW5jdGlvbiAocG9seSwgZ2VucG9seSkgewoJdmFyIG1vZHVsdXMgPSBwb2x5LnNsaWNlKDApOwoJdmFyIHBvbHlsZW4gPSBwb2x5Lmxlbmd0aCwgZ2VucG9seWxlbiA9IGdlbnBvbHkubGVuZ3RoOwoJZm9yICh2YXIgaSA9IDA7IGkgPCBnZW5wb2x5bGVuOyArK2kpCgkJbW9kdWx1cy5wdXNoKDApOwoJZm9yICh2YXIgaSA9IDA7IGkgPCBwb2x5bGVuOyApIHsKCQl2YXIgcXVvdGllbnQgPSBHRjI1Nl9JTlZNQVBbbW9kdWx1c1tpKytdXTsKCQlpZiAocXVvdGllbnQgPj0gMCkgewoJCQlmb3IgKHZhciBqID0gMDsgaiA8IGdlbnBvbHlsZW47ICsraikgewoJCQkJbW9kdWx1c1tpICsgal0gXj0gR0YyNTZfTUFQWyhxdW90aWVudCArIGdlbnBvbHlbal0pICUgMjU1XTsKCQkJfQoJCX0KCX0KCXJldHVybiBtb2R1bHVzLnNsaWNlKHBvbHlsZW4pOwp9OwoKLy8gYXVndW1lbnRzIEVDQyBjb2RlIHdvcmRzIHRvIGdpdmVuIGNvZGUgd29yZHMuIHRoZSByZXN1bHRpbmcgd29yZHMgYXJlCi8vIHJlYWR5IHRvIGJlIGVuY29kZWQgaW4gdGhlIG1hdHJpeC4KLy8KLy8gdGhlIG11Y2ggb2YgYWN0dWFsIGF1Z3VtZW50aW5nIHByb2NlZHVyZSBmb2xsb3dzIEpJUyBYIDA1MTA6MjAwNCBzZWMgOC43LgovLyB0aGUgY29kZSBpcyBzaW1wbGlmaWVkIHVzaW5nIHRoZSBmYWN0IHRoYXQgdGhlIHNpemUgb2YgZWFjaCBjb2RlICYgRUNDCi8vIGJsb2NrcyBpcyBhbG1vc3Qgc2FtZTsgZm9yIGV4YW1wbGUsIHdoZW4gd2UgaGF2ZSA0IGJsb2NrcyBhbmQgNDYgZGF0YSB3b3JkcwovLyB0aGUgbnVtYmVyIG9mIGNvZGUgd29yZHMgaW4gdGhvc2UgYmxvY2tzIGFyZSAxMSwgMTEsIDEyLCAxMiByZXNwZWN0aXZlbHkuCnZhciBhdWd1bWVudGVjY3MgPSBmdW5jdGlvbiAocG9seSwgbmJsb2NrcywgZ2VucG9seSkgewoJdmFyIHN1YnNpemVzID0gW107Cgl2YXIgc3Vic2l6ZSA9IChwb2x5Lmxlbmd0aCAvIG5ibG9ja3MpIHwgMCwgc3Vic2l6ZTAgPSAwOwoJdmFyIHBpdm90ID0gbmJsb2NrcyAtIHBvbHkubGVuZ3RoICUgbmJsb2NrczsKCWZvciAodmFyIGkgPSAwOyBpIDwgcGl2b3Q7ICsraSkgewoJCXN1YnNpemVzLnB1c2goc3Vic2l6ZTApOwoJCXN1YnNpemUwICs9IHN1YnNpemU7Cgl9Cglmb3IgKHZhciBpID0gcGl2b3Q7IGkgPCBuYmxvY2tzOyArK2kpIHsKCQlzdWJzaXplcy5wdXNoKHN1YnNpemUwKTsKCQlzdWJzaXplMCArPSBzdWJzaXplICsgMTsKCX0KCXN1YnNpemVzLnB1c2goc3Vic2l6ZTApOwoKCXZhciBlY2NzID0gW107Cglmb3IgKHZhciBpID0gMDsgaSA8IG5ibG9ja3M7ICsraSkgewoJCWVjY3MucHVzaChjYWxjdWxhdGVlY2MocG9seS5zbGljZShzdWJzaXplc1tpXSwgc3Vic2l6ZXNbaSArIDFdKSwgZ2VucG9seSkpOwoJfQoKCXZhciByZXN1bHQgPSBbXTsKCXZhciBuaXRlbXNwZXJibG9jayA9IChwb2x5Lmxlbmd0aCAvIG5ibG9ja3MpIHwgMDsKCWZvciAodmFyIGkgPSAwOyBpIDwgbml0ZW1zcGVyYmxvY2s7ICsraSkgewoJCWZvciAodmFyIGogPSAwOyBqIDwgbmJsb2NrczsgKytqKSB7CgkJCXJlc3VsdC5wdXNoKHBvbHlbc3Vic2l6ZXNbal0gKyBpXSk7CgkJfQoJfQoJZm9yICh2YXIgaiA9IHBpdm90OyBqIDwgbmJsb2NrczsgKytqKSB7CgkJcmVzdWx0LnB1c2gocG9seVtzdWJzaXplc1tqICsgMV0gLSAxXSk7Cgl9Cglmb3IgKHZhciBpID0gMDsgaSA8IGdlbnBvbHkubGVuZ3RoOyArK2kpIHsKCQlmb3IgKHZhciBqID0gMDsgaiA8IG5ibG9ja3M7ICsraikgewoJCQlyZXN1bHQucHVzaChlY2NzW2pdW2ldKTsKCQl9Cgl9CglyZXR1cm4gcmVzdWx0Owp9OwoKLy8gYXVndW1lbnRzIEJDSChwK3EscSkgY29kZSB0byB0aGUgcG9seW5vbWlhbCBvdmVyIEdGKDIpLCBnaXZlbiB0aGUgcHJvcGVyCi8vIGdlbnBvbHkuIHRoZSBib3RoIGlucHV0IGFuZCBvdXRwdXQgYXJlIGluIGJpbmFyeSBudW1iZXJzLCBhbmQgdW5saWtlCi8vIGNhbGN1bGF0ZWVjYyBnZW5wb2x5IHNob3VsZCBpbmNsdWRlIHRoZSAxIGJpdCBmb3IgdGhlIGhpZ2hlc3QgZGVncmVlLgovLwovLyBhY3R1YWwgcG9seW5vbWlhbHMgdXNlZCBmb3IgdGhpcyBwcm9jZWR1cmUgYXJlIGFzIGZvbGxvd3M6Ci8vIC0gcD0xMCwgcT01LCBnZW5wb2x5PXheMTAreF44K3heNSt4XjQreF4yK3grMSAoSklTIFggMDUxMDoyMDA0IEFwcGVuZGl4IEMpCi8vIC0gcD0xOCwgcT02LCBnZW5wb2x5PXheMTIreF4xMSt4XjEwK3heOSt4XjgreF41K3heMisxIChpYmlkLiBBcHBlbmRpeCBEKQp2YXIgYXVndW1lbnRiY2ggPSBmdW5jdGlvbiAocG9seSwgcCwgZ2VucG9seSwgcSkgewoJdmFyIG1vZHVsdXMgPSBwb2x5IDw8IHE7Cglmb3IgKHZhciBpID0gcCAtIDE7IGkgPj0gMDsgLS1pKSB7CgkJaWYgKChtb2R1bHVzID4+IChxICsgaSkpICYgMSkKCQkJbW9kdWx1cyBePSBnZW5wb2x5IDw8IGk7Cgl9CglyZXR1cm4gKHBvbHkgPDwgcSkgfCBtb2R1bHVzOwp9OwoKLy8gY3JlYXRlcyB0aGUgYmFzZSBtYXRyaXggZm9yIGdpdmVuIHZlcnNpb24uIGl0IHJldHVybnMgdHdvIG1hdHJpY2VzLCBvbmUgb2YKLy8gdGhlbSBpcyB0aGUgYWN0dWFsIG9uZSBhbmQgdGhlIGFub3RoZXIgcmVwcmVzZW50cyB0aGUgInJlc2VydmVkIiBwb3J0aW9uCi8vIChlLmcuIGZpbmRlciBhbmQgdGltaW5nIHBhdHRlcm5zKSBvZiB0aGUgbWF0cml4LgovLwovLyBzb21lIGVudHJpZXMgaW4gdGhlIG1hdHJpeCBtYXkgYmUgdW5kZWZpbmVkLCByYXRoZXIgdGhhbiAwIG9yIDEuIHRoaXMgaXMKLy8gaW50ZW50aW9uYWwgKG5vIGluaXRpYWxpemF0aW9uIG5lZWRlZCEpLCBhbmQgcHV0ZGF0YSBiZWxvdyB3aWxsIGZpbGwKLy8gdGhlIHJlbWFpbmluZyBvbmVzLgp2YXIgbWFrZWJhc2VtYXRyaXggPSBmdW5jdGlvbiAodmVyKSB7Cgl2YXIgdiA9IFZFUlNJT05TW3Zlcl0sIG4gPSBnZXRzaXplYnl2ZXIodmVyKTsKCXZhciBtYXRyaXggPSBbXSwgcmVzZXJ2ZWQgPSBbXTsKCWZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CgkJbWF0cml4LnB1c2goW10pOwoJCXJlc2VydmVkLnB1c2goW10pOwoJfQoKCXZhciBibGl0ID0gZnVuY3Rpb24gKHksIHgsIGgsIHcsIGJpdHMpIHsKCQlmb3IgKHZhciBpID0gMDsgaSA8IGg7ICsraSkgewoJCQlmb3IgKHZhciBqID0gMDsgaiA8IHc7ICsraikgewoJCQkJbWF0cml4W3kgKyBpXVt4ICsgal0gPSAoYml0c1tpXSA+PiBqKSAmIDE7CgkJCQlyZXNlcnZlZFt5ICsgaV1beCArIGpdID0gMTsKCQkJfQoJCX0KCX07CgoJLy8gZmluZGVyIHBhdHRlcm5zIGFuZCBhIHBhcnQgb2YgdGltaW5nIHBhdHRlcm5zCgkvLyB3aWxsIGFsc28gbWFyayB0aGUgZm9ybWF0IGluZm9ybWF0aW9uIGFyZWEgKG5vdCB5ZXQgd3JpdHRlbikgYXMgcmVzZXJ2ZWQuCglibGl0KDAsIDAsIDksIDksIFsweDdmLCAweDQxLCAweDVkLCAweDVkLCAweDVkLCAweDQxLCAweDE3ZiwgMHgwMCwgMHg0MF0pOwoJYmxpdChuIC0gOCwgMCwgOCwgOSwgWzB4MTAwLCAweDdmLCAweDQxLCAweDVkLCAweDVkLCAweDVkLCAweDQxLCAweDdmXSk7CglibGl0KDAsIG4gLSA4LCA5LCA4LCBbMHhmZSwgMHg4MiwgMHhiYSwgMHhiYSwgMHhiYSwgMHg4MiwgMHhmZSwgMHgwMCwgMHgwMF0pOwoKCS8vIHRoZSByZXN0IG9mIHRpbWluZyBwYXR0ZXJucwoJZm9yICh2YXIgaSA9IDk7IGkgPCBuIC0gODsgKytpKSB7CgkJbWF0cml4WzZdW2ldID0gbWF0cml4W2ldWzZdID0gfmkgJiAxOwoJCXJlc2VydmVkWzZdW2ldID0gcmVzZXJ2ZWRbaV1bNl0gPSAxOwoJfQoKCS8vIGFsaWdubWVudCBwYXR0ZXJucwoJdmFyIGFsaWducyA9IHZbMl0sIG0gPSBhbGlnbnMubGVuZ3RoOwoJZm9yICh2YXIgaSA9IDA7IGkgPCBtOyArK2kpIHsKCQl2YXIgbWluaiA9IChpID09PSAwIHx8IGkgPT09IG0gLSAxID8gMSA6IDApLCBtYXhqID0gKGkgPT09IDAgPyBtIC0gMSA6IG0pOwoJCWZvciAodmFyIGogPSBtaW5qOyBqIDwgbWF4ajsgKytqKSB7CgkJCWJsaXQoYWxpZ25zW2ldLCBhbGlnbnNbal0sIDUsIDUsIFsweDFmLCAweDExLCAweDE1LCAweDExLCAweDFmXSk7CgkJfQoJfQoKCS8vIHZlcnNpb24gaW5mb3JtYXRpb24KCWlmIChuZWVkc3ZlcmluZm8odmVyKSkgewoJCXZhciBjb2RlID0gYXVndW1lbnRiY2godmVyLCA2LCAweDFmMjUsIDEyKTsKCQl2YXIgayA9IDA7CgkJZm9yICh2YXIgaSA9IDA7IGkgPCA2OyArK2kpIHsKCQkJZm9yICh2YXIgaiA9IDA7IGogPCAzOyArK2opIHsKCQkJCW1hdHJpeFtpXVsobiAtIDExKSArIGpdID0gbWF0cml4WyhuIC0gMTEpICsgal1baV0gPSAoY29kZSA+PiBrKyspICYgMTsKCQkJCXJlc2VydmVkW2ldWyhuIC0gMTEpICsgal0gPSByZXNlcnZlZFsobiAtIDExKSArIGpdW2ldID0gMTsKCQkJfQoJCX0KCX0KCglyZXR1cm4ge21hdHJpeDogbWF0cml4LCByZXNlcnZlZDogcmVzZXJ2ZWR9Owp9OwoKLy8gZmlsbHMgdGhlIGRhdGEgcG9ydGlvbiAoaS5lLiB1bm1hcmtlZCBpbiByZXNlcnZlZCkgb2YgdGhlIG1hdHJpeCB3aXRoIGdpdmVuCi8vIGNvZGUgd29yZHMuIHRoZSBzaXplIG9mIGNvZGUgd29yZHMgc2hvdWxkIGJlIG5vIG1vcmUgdGhhbiBhdmFpbGFibGUgYml0cywKLy8gYW5kIHJlbWFpbmluZyBiaXRzIGFyZSBwYWRkZWQgdG8gMCAoY2YuIEpJUyBYIDA1MTA6MjAwNCBzZWMgOC43LjMpLgp2YXIgcHV0ZGF0YSA9IGZ1bmN0aW9uIChtYXRyaXgsIHJlc2VydmVkLCBidWYpIHsKCXZhciBuID0gbWF0cml4Lmxlbmd0aDsKCXZhciBrID0gMCwgZGlyID0gLTE7Cglmb3IgKHZhciBpID0gbiAtIDE7IGkgPj0gMDsgaSAtPSAyKSB7CgkJaWYgKGkgPT0gNikKCQkJLS1pOyAvLyBza2lwIHRoZSBlbnRpcmUgdGltaW5nIHBhdHRlcm4gY29sdW1uCgkJdmFyIGpqID0gKGRpciA8IDAgPyBuIC0gMSA6IDApOwoJCWZvciAodmFyIGogPSAwOyBqIDwgbjsgKytqKSB7CgkJCWZvciAodmFyIGlpID0gaTsgaWkgPiBpIC0gMjsgLS1paSkgewoJCQkJaWYgKCFyZXNlcnZlZFtqal1baWldKSB7CgkJCQkJLy8gbWF5IG92ZXJmbG93LCBidXQgKHVuZGVmaW5lZCA+PiB4KQoJCQkJCS8vIGlzIDAgc28gaXQgd2lsbCBhdXRvLXBhZCB0byB6ZXJvLgoJCQkJCW1hdHJpeFtqal1baWldID0gKGJ1ZltrID4+IDNdID4+ICh+ayAmIDcpKSAmIDE7CgkJCQkJKytrOwoJCQkJfQoJCQl9CgkJCWpqICs9IGRpcjsKCQl9CgkJZGlyID0gLWRpcjsKCX0KCXJldHVybiBtYXRyaXg7Cn07CgovLyBYT1ItbWFza3MgdGhlIGRhdGEgcG9ydGlvbiBvZiB0aGUgbWF0cml4LiByZXBlYXRpbmcgdGhlIGNhbGwgd2l0aCB0aGUgc2FtZQovLyBhcmd1bWVudHMgd2lsbCByZXZlcnQgdGhlIHByaW9yIGNhbGwgKGNvbnZlbmllbnQgaW4gdGhlIG1hdHJpeCBldmFsdWF0aW9uKS4KdmFyIG1hc2tkYXRhID0gZnVuY3Rpb24gKG1hdHJpeCwgcmVzZXJ2ZWQsIG1hc2spIHsKCXZhciBtYXNrZiA9IE1BU0tGVU5DU1ttYXNrXTsKCXZhciBuID0gbWF0cml4Lmxlbmd0aDsKCWZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CgkJZm9yICh2YXIgaiA9IDA7IGogPCBuOyArK2opIHsKCQkJaWYgKCFyZXNlcnZlZFtpXVtqXSkKCQkJCW1hdHJpeFtpXVtqXSBePSBtYXNrZihpLCBqKTsKCQl9Cgl9CglyZXR1cm4gbWF0cml4Owp9OwoKLy8gcHV0cyB0aGUgZm9ybWF0IGluZm9ybWF0aW9uLgp2YXIgcHV0Zm9ybWF0aW5mbyA9IGZ1bmN0aW9uIChtYXRyaXgsIHJlc2VydmVkLCBlY2NsZXZlbCwgbWFzaykgewoJdmFyIG4gPSBtYXRyaXgubGVuZ3RoOwoJdmFyIGNvZGUgPSBhdWd1bWVudGJjaCgoZWNjbGV2ZWwgPDwgMykgfCBtYXNrLCA1LCAweDUzNywgMTApIF4gMHg1NDEyOwoJZm9yICh2YXIgaSA9IDA7IGkgPCAxNTsgKytpKSB7CgkJdmFyIHIgPSBbMCwgMSwgMiwgMywgNCwgNSwgNywgOCwgbiAtIDcsIG4gLSA2LCBuIC0gNSwgbiAtIDQsIG4gLSAzLCBuIC0gMiwgbiAtIDFdW2ldOwoJCXZhciBjID0gW24gLSAxLCBuIC0gMiwgbiAtIDMsIG4gLSA0LCBuIC0gNSwgbiAtIDYsIG4gLSA3LCBuIC0gOCwgNywgNSwgNCwgMywgMiwgMSwgMF1baV07CgkJbWF0cml4W3JdWzhdID0gbWF0cml4WzhdW2NdID0gKGNvZGUgPj4gaSkgJiAxOwoJCS8vIHdlIGRvbid0IGhhdmUgdG8gbWFyayB0aG9zZSBiaXRzIHJlc2VydmVkOyBhbHdheXMgZG9uZQoJCS8vIGluIG1ha2ViYXNlbWF0cml4IGFib3ZlLgoJfQoJcmV0dXJuIG1hdHJpeDsKfTsKCi8vIGV2YWx1YXRlcyB0aGUgcmVzdWx0aW5nIG1hdHJpeCBhbmQgcmV0dXJucyB0aGUgc2NvcmUgKGxvd2VyIGlzIGJldHRlcikuCi8vIChjZi4gSklTIFggMDUxMDoyMDA0IHNlYyA4LjguMikKLy8KLy8gdGhlIGV2YWx1YXRpb24gcHJvY2VkdXJlIHRyaWVzIHRvIGF2b2lkIHRoZSBwcm9ibGVtYXRpYyBwYXR0ZXJucyBuYXR1cmFsbHkKLy8gb2NjdXJpbmcgZnJvbSB0aGUgb3JpZ2luYWwgbWF0cml4LiBmb3IgZXhhbXBsZSwgaXQgcGVuYWx0aXplcyB0aGUgcGF0dGVybnMKLy8gd2hpY2gganVzdCBsb29rIGxpa2UgdGhlIGZpbmRlciBwYXR0ZXJuIHdoaWNoIHdpbGwgY29uZnVzZSB0aGUgZGVjb2Rlci4KLy8gd2UgY2hvb3NlIHRoZSBtYXNrIHdoaWNoIHJlc3VsdHMgaW4gdGhlIGxvd2VzdCBzY29yZSBhbW9uZyA4IHBvc3NpYmxlIG9uZXMuCi8vCi8vIG5vdGU6IHp4aW5nIHNlZW1zIHRvIHVzZSB0aGUgc2FtZSBwcm9jZWR1cmUgYW5kIGluIG1hbnkgY2FzZXMgaXRzIGNob2ljZQovLyBhZ3JlZXMgdG8gb3VycywgYnV0IHNvbWV0aW1lcyBpdCBkb2VzIG5vdC4gcHJhY3RpY2FsbHkgaXQgZG9lc24ndCBtYXR0ZXIuCnZhciBldmFsdWF0ZW1hdHJpeCA9IGZ1bmN0aW9uIChtYXRyaXgpIHsKCS8vIE4xKyhrLTUpIHBvaW50cyBmb3IgZWFjaCBjb25zZWN1dGl2ZSByb3cgb2YgayBzYW1lLWNvbG9yZWQgbW9kdWxlcywKCS8vIHdoZXJlIGsgPj0gNS4gbm8gb3ZlcmxhcHBpbmcgcm93IGNvdW50cy4KCXZhciBQRU5BTFRZX0NPTlNFQ1VUSVZFID0gMzsKCS8vIE4yIHBvaW50cyBmb3IgZWFjaCAyeDIgYmxvY2sgb2Ygc2FtZS1jb2xvcmVkIG1vZHVsZXMuCgkvLyBvdmVybGFwcGluZyBibG9jayBkb2VzIGNvdW50LgoJdmFyIFBFTkFMVFlfVFdPQllUV08gPSAzOwoJLy8gTjMgcG9pbnRzIGZvciBlYWNoIHBhdHRlcm4gd2l0aCA+NFc6MUI6MVc6M0I6MVc6MUIgb3IKCS8vIDFCOjFXOjNCOjFXOjFCOj40Vywgb3IgdGhlaXIgbXVsdGlwbGVzIChlLmcuIGhpZ2hseSB1bmxpa2VseSwKCS8vIGJ1dCAxM1c6M0I6M1c6OUI6M1c6M0IgY291bnRzKS4KCXZhciBQRU5BTFRZX0ZJTkRFUkxJS0UgPSA0MDsKCS8vIE40KmsgcG9pbnRzIGZvciBldmVyeSAoNSprKSUgZGV2aWF0aW9uIGZyb20gNTAlIGJsYWNrIGRlbnNpdHkuCgkvLyBpLmUuIGs9MSBmb3IgNTV+NjAlIGFuZCA0MH40NSUsIGs9MiBmb3IgNjB+NjUlIGFuZCAzNX40MCUsIGV0Yy4KCXZhciBQRU5BTFRZX0RFTlNJVFkgPSAxMDsKCgl2YXIgZXZhbHVhdGVncm91cCA9IGZ1bmN0aW9uIChncm91cHMpIHsgLy8gYXNzdW1lcyBbVyxCLFcsQixXLC4uLixCLFddCgkJdmFyIHNjb3JlID0gMDsKCQlmb3IgKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7ICsraSkgewoJCQlpZiAoZ3JvdXBzW2ldID49IDUpCgkJCQlzY29yZSArPSBQRU5BTFRZX0NPTlNFQ1VUSVZFICsgKGdyb3Vwc1tpXSAtIDUpOwoJCX0KCQlmb3IgKHZhciBpID0gNTsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkgKz0gMikgewoJCQl2YXIgcCA9IGdyb3Vwc1tpXTsKCQkJaWYgKGdyb3Vwc1tpIC0gMV0gPT0gcCAmJiBncm91cHNbaSAtIDJdID09IDMgKiBwICYmIGdyb3Vwc1tpIC0gM10gPT0gcCAmJgoJCQkJZ3JvdXBzW2kgLSA0XSA9PSBwICYmIChncm91cHNbaSAtIDVdID49IDQgKiBwIHx8IGdyb3Vwc1tpICsgMV0gPj0gNCAqIHApKSB7CgkJCQkvLyB0aGlzIHBhcnQgZGlmZmVycyBmcm9tIHp4aW5nLi4uCgkJCQlzY29yZSArPSBQRU5BTFRZX0ZJTkRFUkxJS0U7CgkJCX0KCQl9CgkJcmV0dXJuIHNjb3JlOwoJfTsKCgl2YXIgbiA9IG1hdHJpeC5sZW5ndGg7Cgl2YXIgc2NvcmUgPSAwLCBuYmxhY2tzID0gMDsKCWZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CgkJdmFyIHJvdyA9IG1hdHJpeFtpXTsKCQl2YXIgZ3JvdXBzOwoKCQkvLyBldmFsdWF0ZSB0aGUgY3VycmVudCByb3cKCQlncm91cHMgPSBbMF07IC8vIHRoZSBmaXJzdCBlbXB0eSBncm91cCBvZiB3aGl0ZQoJCWZvciAodmFyIGogPSAwOyBqIDwgbjsgKSB7CgkJCXZhciBrOwoJCQlmb3IgKGsgPSAwOyBqIDwgbiAmJiByb3dbal07ICsraykKCQkJCSsrajsKCQkJZ3JvdXBzLnB1c2goayk7CgkJCWZvciAoayA9IDA7IGogPCBuICYmICFyb3dbal07ICsraykKCQkJCSsrajsKCQkJZ3JvdXBzLnB1c2goayk7CgkJfQoJCXNjb3JlICs9IGV2YWx1YXRlZ3JvdXAoZ3JvdXBzKTsKCgkJLy8gZXZhbHVhdGUgdGhlIGN1cnJlbnQgY29sdW1uCgkJZ3JvdXBzID0gWzBdOwoJCWZvciAodmFyIGogPSAwOyBqIDwgbjsgKSB7CgkJCXZhciBrOwoJCQlmb3IgKGsgPSAwOyBqIDwgbiAmJiBtYXRyaXhbal1baV07ICsraykKCQkJCSsrajsKCQkJZ3JvdXBzLnB1c2goayk7CgkJCWZvciAoayA9IDA7IGogPCBuICYmICFtYXRyaXhbal1baV07ICsraykKCQkJCSsrajsKCQkJZ3JvdXBzLnB1c2goayk7CgkJfQoJCXNjb3JlICs9IGV2YWx1YXRlZ3JvdXAoZ3JvdXBzKTsKCgkJLy8gY2hlY2sgdGhlIDJ4MiBib3ggYW5kIGNhbGN1bGF0ZSB0aGUgZGVuc2l0eQoJCXZhciBuZXh0cm93ID0gbWF0cml4W2kgKyAxXSB8fCBbXTsKCQluYmxhY2tzICs9IHJvd1swXTsKCQlmb3IgKHZhciBqID0gMTsgaiA8IG47ICsraikgewoJCQl2YXIgcCA9IHJvd1tqXTsKCQkJbmJsYWNrcyArPSBwOwoJCQkvLyBhdCBsZWFzdCBjb21wYXJpc29uIHdpdGggbmV4dCByb3cgc2hvdWxkIGJlIHN0cmljdC4uLgoJCQlpZiAocm93W2ogLSAxXSA9PSBwICYmIG5leHRyb3dbal0gPT09IHAgJiYgbmV4dHJvd1tqIC0gMV0gPT09IHApIHsKCQkJCXNjb3JlICs9IFBFTkFMVFlfVFdPQllUV087CgkJCX0KCQl9Cgl9CgoJc2NvcmUgKz0gUEVOQUxUWV9ERU5TSVRZICogKChNYXRoLmFicyhuYmxhY2tzIC8gbiAvIG4gLSAwLjUpIC8gMC4wNSkgfCAwKTsKCXJldHVybiBzY29yZTsKfTsKCi8vIHJldHVybnMgdGhlIGZ1bGx5IGVuY29kZWQgUVIgY29kZSBtYXRyaXggd2hpY2ggY29udGFpbnMgZ2l2ZW4gZGF0YS4KLy8gaXQgYWxzbyBjaG9vc2VzIHRoZSBiZXN0IG1hc2sgYXV0b21hdGljYWxseSB3aGVuIG1hc2sgaXMgLTEuCnZhciBnZW5lcmF0ZSA9IGZ1bmN0aW9uIChkYXRhLCB2ZXIsIG1vZGUsIGVjY2xldmVsLCBtYXNrKSB7Cgl2YXIgdiA9IFZFUlNJT05TW3Zlcl07Cgl2YXIgYnVmID0gZW5jb2RlKHZlciwgbW9kZSwgZGF0YSwgbmRhdGFiaXRzKHZlciwgZWNjbGV2ZWwpID4+IDMpOwoJYnVmID0gYXVndW1lbnRlY2NzKGJ1ZiwgdlsxXVtlY2NsZXZlbF0sIEdGMjU2X0dFTlBPTFlbdlswXVtlY2NsZXZlbF1dKTsKCgl2YXIgcmVzdWx0ID0gbWFrZWJhc2VtYXRyaXgodmVyKTsKCXZhciBtYXRyaXggPSByZXN1bHQubWF0cml4LCByZXNlcnZlZCA9IHJlc3VsdC5yZXNlcnZlZDsKCXB1dGRhdGEobWF0cml4LCByZXNlcnZlZCwgYnVmKTsKCglpZiAobWFzayA8IDApIHsKCQkvLyBmaW5kIHRoZSBiZXN0IG1hc2sKCQltYXNrZGF0YShtYXRyaXgsIHJlc2VydmVkLCAwKTsKCQlwdXRmb3JtYXRpbmZvKG1hdHJpeCwgcmVzZXJ2ZWQsIGVjY2xldmVsLCAwKTsKCQl2YXIgYmVzdG1hc2sgPSAwLCBiZXN0c2NvcmUgPSBldmFsdWF0ZW1hdHJpeChtYXRyaXgpOwoJCW1hc2tkYXRhKG1hdHJpeCwgcmVzZXJ2ZWQsIDApOwoJCWZvciAobWFzayA9IDE7IG1hc2sgPCA4OyArK21hc2spIHsKCQkJbWFza2RhdGEobWF0cml4LCByZXNlcnZlZCwgbWFzayk7CgkJCXB1dGZvcm1hdGluZm8obWF0cml4LCByZXNlcnZlZCwgZWNjbGV2ZWwsIG1hc2spOwoJCQl2YXIgc2NvcmUgPSBldmFsdWF0ZW1hdHJpeChtYXRyaXgpOwoJCQlpZiAoYmVzdHNjb3JlID4gc2NvcmUpIHsKCQkJCWJlc3RzY29yZSA9IHNjb3JlOwoJCQkJYmVzdG1hc2sgPSBtYXNrOwoJCQl9CgkJCW1hc2tkYXRhKG1hdHJpeCwgcmVzZXJ2ZWQsIG1hc2spOwoJCX0KCQltYXNrID0gYmVzdG1hc2s7Cgl9CgoJbWFza2RhdGEobWF0cml4LCByZXNlcnZlZCwgbWFzayk7CglwdXRmb3JtYXRpbmZvKG1hdHJpeCwgcmVzZXJ2ZWQsIGVjY2xldmVsLCBtYXNrKTsKCXJldHVybiBtYXRyaXg7Cn07CgovLyB0aGUgcHVibGljIGludGVyZmFjZSBpcyB0cml2aWFsOyB0aGUgb3B0aW9ucyBhdmFpbGFibGUgYXJlIGFzIGZvbGxvd3M6Ci8vCi8vIC0gdmVyc2lvbjogYW4gaW50ZWdlciBpbiBbMSw0MF0uIHdoZW4gb21pdHRlZCAob3IgLTEpIHRoZSBzbWFsbGVzdCBwb3NzaWJsZQovLyAgIHZlcnNpb24gaXMgY2hvc2VuLgovLyAtIG1vZGU6IG9uZSBvZiAnbnVtZXJpYycsICdhbHBoYW51bWVyaWMnLCAnb2N0ZXQnLiB3aGVuIG9taXR0ZWQgdGhlIHNtYWxsZXN0Ci8vICAgcG9zc2libGUgbW9kZSBpcyBjaG9zZW4uCi8vIC0gZWNjTGV2ZWw6IG9uZSBvZiAnTCcsICdNJywgJ1EnLCAnSCcuIGRlZmF1bHRzIHRvICdMJy4KLy8gLSBtYXNrOiBhbiBpbnRlZ2VyIGluIFswLDddLiB3aGVuIG9taXR0ZWQgKG9yIC0xKSB0aGUgYmVzdCBtYXNrIGlzIGNob3Nlbi4KLy8KCmZ1bmN0aW9uIGdlbmVyYXRlRnJhbWUoZGF0YSwgb3B0aW9ucykgewoJdmFyIE1PREVTID0geydudW1lcmljJzogTU9ERV9OVU1FUklDLCAnYWxwaGFudW1lcmljJzogTU9ERV9BTFBIQU5VTUVSSUMsCgkJJ29jdGV0JzogTU9ERV9PQ1RFVH07Cgl2YXIgRUNDTEVWRUxTID0geydMJzogRUNDTEVWRUxfTCwgJ00nOiBFQ0NMRVZFTF9NLCAnUSc6IEVDQ0xFVkVMX1EsCgkJJ0gnOiBFQ0NMRVZFTF9IfTsKCglvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCXZhciB2ZXIgPSBvcHRpb25zLnZlcnNpb24gfHwgLTE7Cgl2YXIgZWNjbGV2ZWwgPSBFQ0NMRVZFTFNbKG9wdGlvbnMuZWNjTGV2ZWwgfHwgJ0wnKS50b1VwcGVyQ2FzZSgpXTsKCXZhciBtb2RlID0gb3B0aW9ucy5tb2RlID8gTU9ERVNbb3B0aW9ucy5tb2RlLnRvTG93ZXJDYXNlKCldIDogLTE7Cgl2YXIgbWFzayA9ICdtYXNrJyBpbiBvcHRpb25zID8gb3B0aW9ucy5tYXNrIDogLTE7CgoJaWYgKG1vZGUgPCAwKSB7CgkJaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykgewoJCQlpZiAoZGF0YS5tYXRjaChOVU1FUklDX1JFR0VYUCkpIHsKCQkJCW1vZGUgPSBNT0RFX05VTUVSSUM7CgkJCX0gZWxzZSBpZiAoZGF0YS5tYXRjaChBTFBIQU5VTUVSSUNfT1VUX1JFR0VYUCkpIHsKCQkJCS8vIHdoaWxlIGVuY29kZSBzdXBwb3J0cyBjYXNlLWluc2Vuc2l0aXZlIGVuY29kaW5nLCB3ZSByZXN0cmljdCB0aGUgZGF0YSB0byBiZSB1cHBlcmNhc2VkIHdoZW4gYXV0by1zZWxlY3RpbmcgdGhlIG1vZGUuCgkJCQltb2RlID0gTU9ERV9BTFBIQU5VTUVSSUM7CgkJCX0gZWxzZSB7CgkJCQltb2RlID0gTU9ERV9PQ1RFVDsKCQkJfQoJCX0gZWxzZSB7CgkJCW1vZGUgPSBNT0RFX09DVEVUOwoJCX0KCX0gZWxzZSBpZiAoIShtb2RlID09IE1PREVfTlVNRVJJQyB8fCBtb2RlID09IE1PREVfQUxQSEFOVU1FUklDIHx8CgkJbW9kZSA9PSBNT0RFX09DVEVUKSkgewoJCXRocm93ICdpbnZhbGlkIG9yIHVuc3VwcG9ydGVkIG1vZGUnOwoJfQoKCWRhdGEgPSB2YWxpZGF0ZWRhdGEobW9kZSwgZGF0YSk7CglpZiAoZGF0YSA9PT0gbnVsbCkKCQl0aHJvdyAnaW52YWxpZCBkYXRhIGZvcm1hdCc7CgoJaWYgKGVjY2xldmVsIDwgMCB8fCBlY2NsZXZlbCA+IDMpCgkJdGhyb3cgJ2ludmFsaWQgRUNDIGxldmVsJzsKCglpZiAodmVyIDwgMCkgewoJCWZvciAodmVyID0gMTsgdmVyIDw9IDQwOyArK3ZlcikgewoJCQlpZiAoZGF0YS5sZW5ndGggPD0gZ2V0bWF4ZGF0YWxlbih2ZXIsIG1vZGUsIGVjY2xldmVsKSkKCQkJCWJyZWFrOwoJCX0KCQlpZiAodmVyID4gNDApCgkJCXRocm93ICd0b28gbGFyZ2UgZGF0YSBmb3IgdGhlIFFyIGZvcm1hdCc7Cgl9IGVsc2UgaWYgKHZlciA8IDEgfHwgdmVyID4gNDApIHsKCQl0aHJvdyAnaW52YWxpZCBRciB2ZXJzaW9uISBzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCA0MCc7Cgl9CgoJaWYgKG1hc2sgIT0gLTEgJiYgKG1hc2sgPCAwIHx8IG1hc2sgPiA4KSkKCQl0aHJvdyAnaW52YWxpZCBtYXNrJzsKCS8vY29uc29sZS5sb2coJ3ZlcnNpb246JywgdmVyLCAnbW9kZTonLCBtb2RlLCAnRUNDOicsIGVjY2xldmVsLCAnbWFzazonLCBtYXNrICkKCXJldHVybiBnZW5lcmF0ZShkYXRhLCB2ZXIsIG1vZGUsIGVjY2xldmVsLCBtYXNrKTsKfQoKCi8vIG9wdGlvbnMKLy8gLSBtb2R1bGVzaXplOiBhIG51bWJlci4gdGhpcyBpcyBhIHNpemUgb2YgZWFjaCBtb2R1bGVzIGluIHBpeGVscywgYW5kCi8vICAgZGVmYXVsdHMgdG8gNXB4LgovLyAtIG1hcmdpbjogYSBudW1iZXIuIHRoaXMgaXMgYSBzaXplIG9mIG1hcmdpbiBpbiAqbW9kdWxlcyosIGFuZCBkZWZhdWx0cyB0bwovLyAgIDQgKHdoaXRlIG1vZHVsZXMpLiB0aGUgc3BlY2ZpY2lhdGlvbiBtYW5kYXRlcyB0aGUgbWFyZ2luIG5vIGxlc3MgdGhhbiA0Ci8vICAgbW9kdWxlcywgc28gaXQgaXMgYmV0dGVyIG5vdCB0byBhbHRlciB0aGlzIHZhbHVlIHVubGVzcyB5b3Uga25vdyB3aGF0Ci8vICAgeW91J3JlIGRvaW5nLgpmdW5jdGlvbiBidWlsZENhbnZhcyhkYXRhLCBvcHRpb25zKSB7CgoJdmFyIGNhbnZhcyA9IFtdOwoJdmFyIGJhY2tncm91bmQgPSBvcHRpb25zLmJhY2tncm91bmQgfHwgJyNmZmYnOwoJdmFyIGZvcmVncm91bmQgPSBvcHRpb25zLmZvcmVncm91bmQgfHwgJyMwMDAnOwoJLy92YXIgbWFyZ2luID0gb3B0aW9ucy5tYXJnaW4gfHwgNDsKCXZhciBtYXRyaXggPSBnZW5lcmF0ZUZyYW1lKGRhdGEsIG9wdGlvbnMpOwoJdmFyIG4gPSBtYXRyaXgubGVuZ3RoOwoJdmFyIG1vZFNpemUgPSBNYXRoLmZsb29yKG9wdGlvbnMuZml0ID8gb3B0aW9ucy5maXQgLyBuIDogNSk7Cgl2YXIgc2l6ZSA9IG4gKiBtb2RTaXplOwoKCWNhbnZhcy5wdXNoKHsKCQl0eXBlOiAncmVjdCcsCgkJeDogMCwgeTogMCwgdzogc2l6ZSwgaDogc2l6ZSwgbGluZVdpZHRoOiAwLCBjb2xvcjogYmFja2dyb3VuZAoJfSk7CgoJZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKCQlmb3IgKHZhciBqID0gMDsgaiA8IG47ICsraikgewoJCQlpZiAobWF0cml4W2ldW2pdKSB7CgkJCQljYW52YXMucHVzaCh7CgkJCQkJdHlwZTogJ3JlY3QnLAoJCQkJCXg6IG1vZFNpemUgKiBqLAoJCQkJCXk6IG1vZFNpemUgKiBpLAoJCQkJCXc6IG1vZFNpemUsCgkJCQkJaDogbW9kU2l6ZSwKCQkJCQlsaW5lV2lkdGg6IDAsCgkJCQkJY29sb3I6IGZvcmVncm91bmQKCQkJCX0pOwoJCQl9CgkJfQoJfQoKCXJldHVybiB7CgkJY2FudmFzOiBjYW52YXMsCgkJc2l6ZTogc2l6ZQoJfTsKCn0KCmZ1bmN0aW9uIG1lYXN1cmUobm9kZSkgewoJdmFyIGNkID0gYnVpbGRDYW52YXMobm9kZS5xciwgbm9kZSk7Cglub2RlLl9jYW52YXMgPSBjZC5jYW52YXM7Cglub2RlLl93aWR0aCA9IG5vZGUuX2hlaWdodCA9IG5vZGUuX21pbldpZHRoID0gbm9kZS5fbWF4V2lkdGggPSBub2RlLl9taW5IZWlnaHQgPSBub2RlLl9tYXhIZWlnaHQgPSBjZC5zaXplOwoJcmV0dXJuIG5vZGU7Cn0KCm1vZHVsZS5leHBvcnRzID0gewoJbWVhc3VyZTogbWVhc3VyZQp9OwoKLyoqKi8gfSksCi8qIDEzNSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKdmFyIEVsZW1lbnRXcml0ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzNik7CgovKioKICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBQYWdlRWxlbWVudFdyaXRlciAtIGFuIGV4dGVuZGVkIEVsZW1lbnRXcml0ZXIKICogd2hpY2ggY2FuIGhhbmRsZToKICogLSBwYWdlLWJyZWFrcyAoaXQgYWRkcyBuZXcgcGFnZXMgd2hlbiB0aGVyZSdzIG5vdCBlbm91Z2ggc3BhY2UgbGVmdCksCiAqIC0gcmVwZWF0YWJsZSBmcmFnbWVudHMgKGxpa2UgdGFibGUtaGVhZGVycywgd2hpY2ggYXJlIHJlcGVhdGVkIGV2ZXJ5dGltZQogKiAgICAgICAgICAgICAgICAgICAgICAgICBhIHBhZ2UtYnJlYWsgb2NjdXJzKQogKiAtIHRyYW5zYWN0aW9ucyAodXNlZCBmb3IgdW5icmVha2FibGUtYmxvY2tzIHdoZW4gd2Ugd2FudCB0byBtYWtlIHN1cmUKICogICAgICAgICAgICAgICAgIHdob2xlIGJsb2NrIHdpbGwgYmUgcmVuZGVyZWQgb24gdGhlIHNhbWUgcGFnZSkKICovCmZ1bmN0aW9uIFBhZ2VFbGVtZW50V3JpdGVyKGNvbnRleHQsIHRyYWNrZXIpIHsKCXRoaXMudHJhbnNhY3Rpb25MZXZlbCA9IDA7Cgl0aGlzLnJlcGVhdGFibGVzID0gW107Cgl0aGlzLnRyYWNrZXIgPSB0cmFja2VyOwoJdGhpcy53cml0ZXIgPSBuZXcgRWxlbWVudFdyaXRlcihjb250ZXh0LCB0cmFja2VyKTsKfQoKZnVuY3Rpb24gZml0T25QYWdlKHNlbGYsIGFkZEZjdCkgewoJdmFyIHBvc2l0aW9uID0gYWRkRmN0KHNlbGYpOwoJaWYgKCFwb3NpdGlvbikgewoJCXNlbGYubW92ZVRvTmV4dFBhZ2UoKTsKCQlwb3NpdGlvbiA9IGFkZEZjdChzZWxmKTsKCX0KCXJldHVybiBwb3NpdGlvbjsKfQoKUGFnZUVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmFkZExpbmUgPSBmdW5jdGlvbiAobGluZSwgZG9udFVwZGF0ZUNvbnRleHRQb3NpdGlvbiwgaW5kZXgpIHsKCXJldHVybiBmaXRPblBhZ2UodGhpcywgZnVuY3Rpb24gKHNlbGYpIHsKCQlyZXR1cm4gc2VsZi53cml0ZXIuYWRkTGluZShsaW5lLCBkb250VXBkYXRlQ29udGV4dFBvc2l0aW9uLCBpbmRleCk7Cgl9KTsKfTsKClBhZ2VFbGVtZW50V3JpdGVyLnByb3RvdHlwZS5hZGRJbWFnZSA9IGZ1bmN0aW9uIChpbWFnZSwgaW5kZXgpIHsKCXJldHVybiBmaXRPblBhZ2UodGhpcywgZnVuY3Rpb24gKHNlbGYpIHsKCQlyZXR1cm4gc2VsZi53cml0ZXIuYWRkSW1hZ2UoaW1hZ2UsIGluZGV4KTsKCX0pOwp9OwoKUGFnZUVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmFkZFFyID0gZnVuY3Rpb24gKHFyLCBpbmRleCkgewoJcmV0dXJuIGZpdE9uUGFnZSh0aGlzLCBmdW5jdGlvbiAoc2VsZikgewoJCXJldHVybiBzZWxmLndyaXRlci5hZGRRcihxciwgaW5kZXgpOwoJfSk7Cn07CgpQYWdlRWxlbWVudFdyaXRlci5wcm90b3R5cGUuYWRkVmVjdG9yID0gZnVuY3Rpb24gKHZlY3RvciwgaWdub3JlQ29udGV4dFgsIGlnbm9yZUNvbnRleHRZLCBpbmRleCkgewoJcmV0dXJuIHRoaXMud3JpdGVyLmFkZFZlY3Rvcih2ZWN0b3IsIGlnbm9yZUNvbnRleHRYLCBpZ25vcmVDb250ZXh0WSwgaW5kZXgpOwp9OwoKUGFnZUVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmJlZ2luQ2xpcCA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7CglyZXR1cm4gdGhpcy53cml0ZXIuYmVnaW5DbGlwKHdpZHRoLCBoZWlnaHQpOwp9OwoKUGFnZUVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmVuZENsaXAgPSBmdW5jdGlvbiAoKSB7CglyZXR1cm4gdGhpcy53cml0ZXIuZW5kQ2xpcCgpOwp9OwoKUGFnZUVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmFsaWduQ2FudmFzID0gZnVuY3Rpb24gKG5vZGUpIHsKCXRoaXMud3JpdGVyLmFsaWduQ2FudmFzKG5vZGUpOwp9OwoKUGFnZUVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmFkZEZyYWdtZW50ID0gZnVuY3Rpb24gKGZyYWdtZW50LCB1c2VCbG9ja1hPZmZzZXQsIHVzZUJsb2NrWU9mZnNldCwgZG9udFVwZGF0ZUNvbnRleHRQb3NpdGlvbikgewoJaWYgKCF0aGlzLndyaXRlci5hZGRGcmFnbWVudChmcmFnbWVudCwgdXNlQmxvY2tYT2Zmc2V0LCB1c2VCbG9ja1lPZmZzZXQsIGRvbnRVcGRhdGVDb250ZXh0UG9zaXRpb24pKSB7CgkJdGhpcy5tb3ZlVG9OZXh0UGFnZSgpOwoJCXRoaXMud3JpdGVyLmFkZEZyYWdtZW50KGZyYWdtZW50LCB1c2VCbG9ja1hPZmZzZXQsIHVzZUJsb2NrWU9mZnNldCwgZG9udFVwZGF0ZUNvbnRleHRQb3NpdGlvbik7Cgl9Cn07CgpQYWdlRWxlbWVudFdyaXRlci5wcm90b3R5cGUubW92ZVRvTmV4dFBhZ2UgPSBmdW5jdGlvbiAocGFnZU9yaWVudGF0aW9uKSB7CgoJdmFyIG5leHRQYWdlID0gdGhpcy53cml0ZXIuY29udGV4dC5tb3ZlVG9OZXh0UGFnZShwYWdlT3JpZW50YXRpb24pOwoKCWlmIChuZXh0UGFnZS5uZXdQYWdlQ3JlYXRlZCkgewoJCXRoaXMucmVwZWF0YWJsZXMuZm9yRWFjaChmdW5jdGlvbiAocmVwKSB7CgkJCXRoaXMud3JpdGVyLmFkZEZyYWdtZW50KHJlcCwgdHJ1ZSk7CgkJfSwgdGhpcyk7Cgl9IGVsc2UgewoJCXRoaXMucmVwZWF0YWJsZXMuZm9yRWFjaChmdW5jdGlvbiAocmVwKSB7CgkJCXRoaXMud3JpdGVyLmNvbnRleHQubW92ZURvd24ocmVwLmhlaWdodCk7CgkJfSwgdGhpcyk7Cgl9CgoJdGhpcy53cml0ZXIudHJhY2tlci5lbWl0KCdwYWdlQ2hhbmdlZCcsIHsKCQlwcmV2UGFnZTogbmV4dFBhZ2UucHJldlBhZ2UsCgkJcHJldlk6IG5leHRQYWdlLnByZXZZLAoJCXk6IG5leHRQYWdlLnkKCX0pOwp9OwoKUGFnZUVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmJlZ2luVW5icmVha2FibGVCbG9jayA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7CglpZiAodGhpcy50cmFuc2FjdGlvbkxldmVsKysgPT09IDApIHsKCQl0aGlzLm9yaWdpbmFsWCA9IHRoaXMud3JpdGVyLmNvbnRleHQueDsKCQl0aGlzLndyaXRlci5wdXNoQ29udGV4dCh3aWR0aCwgaGVpZ2h0KTsKCX0KfTsKClBhZ2VFbGVtZW50V3JpdGVyLnByb3RvdHlwZS5jb21taXRVbmJyZWFrYWJsZUJsb2NrID0gZnVuY3Rpb24gKGZvcmNlZFgsIGZvcmNlZFkpIHsKCWlmICgtLXRoaXMudHJhbnNhY3Rpb25MZXZlbCA9PT0gMCkgewoJCXZhciB1bmJyZWFrYWJsZUNvbnRleHQgPSB0aGlzLndyaXRlci5jb250ZXh0OwoJCXRoaXMud3JpdGVyLnBvcENvbnRleHQoKTsKCgkJdmFyIG5iUGFnZXMgPSB1bmJyZWFrYWJsZUNvbnRleHQucGFnZXMubGVuZ3RoOwoJCWlmIChuYlBhZ2VzID4gMCkgewoJCQkvLyBubyBzdXBwb3J0IGZvciBtdWx0aS1wYWdlIHVuYnJlYWthYmxlQmxvY2tzCgkJCXZhciBmcmFnbWVudCA9IHVuYnJlYWthYmxlQ29udGV4dC5wYWdlc1swXTsKCQkJZnJhZ21lbnQueE9mZnNldCA9IGZvcmNlZFg7CgkJCWZyYWdtZW50LnlPZmZzZXQgPSBmb3JjZWRZOwoKCQkJLy9UT0RPOiB2ZWN0b3JzIGNhbiBpbmZsdWVuY2UgaGVpZ2h0IGluIHNvbWUgc2l0dWF0aW9ucwoJCQlpZiAobmJQYWdlcyA+IDEpIHsKCQkJCS8vIG9uIG91dC1vZi1jb250ZXh0IGJsb2NzIChoZWFkZXJzLCBmb290ZXJzLCBiYWNrZ3JvdW5kKSBoZWlnaHQgc2hvdWxkIGJlIHRoZSB3aG9sZSBEb2N1bWVudENvbnRleHQgaGVpZ2h0CgkJCQlpZiAoZm9yY2VkWCAhPT0gdW5kZWZpbmVkIHx8IGZvcmNlZFkgIT09IHVuZGVmaW5lZCkgewoJCQkJCWZyYWdtZW50LmhlaWdodCA9IHVuYnJlYWthYmxlQ29udGV4dC5nZXRDdXJyZW50UGFnZSgpLnBhZ2VTaXplLmhlaWdodCAtIHVuYnJlYWthYmxlQ29udGV4dC5wYWdlTWFyZ2lucy50b3AgLSB1bmJyZWFrYWJsZUNvbnRleHQucGFnZU1hcmdpbnMuYm90dG9tOwoJCQkJfSBlbHNlIHsKCQkJCQlmcmFnbWVudC5oZWlnaHQgPSB0aGlzLndyaXRlci5jb250ZXh0LmdldEN1cnJlbnRQYWdlKCkucGFnZVNpemUuaGVpZ2h0IC0gdGhpcy53cml0ZXIuY29udGV4dC5wYWdlTWFyZ2lucy50b3AgLSB0aGlzLndyaXRlci5jb250ZXh0LnBhZ2VNYXJnaW5zLmJvdHRvbTsKCQkJCQlmb3IgKHZhciBpID0gMCwgbCA9IHRoaXMucmVwZWF0YWJsZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJCQkJCWZyYWdtZW50LmhlaWdodCAtPSB0aGlzLnJlcGVhdGFibGVzW2ldLmhlaWdodDsKCQkJCQl9CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQlmcmFnbWVudC5oZWlnaHQgPSB1bmJyZWFrYWJsZUNvbnRleHQueTsKCQkJfQoKCQkJaWYgKGZvcmNlZFggIT09IHVuZGVmaW5lZCB8fCBmb3JjZWRZICE9PSB1bmRlZmluZWQpIHsKCQkJCXRoaXMud3JpdGVyLmFkZEZyYWdtZW50KGZyYWdtZW50LCB0cnVlLCB0cnVlLCB0cnVlKTsKCQkJfSBlbHNlIHsKCQkJCXRoaXMuYWRkRnJhZ21lbnQoZnJhZ21lbnQpOwoJCQl9CgkJfQoJfQp9OwoKUGFnZUVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmN1cnJlbnRCbG9ja1RvUmVwZWF0YWJsZSA9IGZ1bmN0aW9uICgpIHsKCXZhciB1bmJyZWFrYWJsZUNvbnRleHQgPSB0aGlzLndyaXRlci5jb250ZXh0OwoJdmFyIHJlcCA9IHtpdGVtczogW119OwoKCXVuYnJlYWthYmxlQ29udGV4dC5wYWdlc1swXS5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CgkJcmVwLml0ZW1zLnB1c2goaXRlbSk7Cgl9KTsKCglyZXAueE9mZnNldCA9IHRoaXMub3JpZ2luYWxYOwoKCS8vVE9ETzogdmVjdG9ycyBjYW4gaW5mbHVlbmNlIGhlaWdodCBpbiBzb21lIHNpdHVhdGlvbnMKCXJlcC5oZWlnaHQgPSB1bmJyZWFrYWJsZUNvbnRleHQueTsKCglyZXR1cm4gcmVwOwp9OwoKUGFnZUVsZW1lbnRXcml0ZXIucHJvdG90eXBlLnB1c2hUb1JlcGVhdGFibGVzID0gZnVuY3Rpb24gKHJlcCkgewoJdGhpcy5yZXBlYXRhYmxlcy5wdXNoKHJlcCk7Cn07CgpQYWdlRWxlbWVudFdyaXRlci5wcm90b3R5cGUucG9wRnJvbVJlcGVhdGFibGVzID0gZnVuY3Rpb24gKCkgewoJdGhpcy5yZXBlYXRhYmxlcy5wb3AoKTsKfTsKClBhZ2VFbGVtZW50V3JpdGVyLnByb3RvdHlwZS5jb250ZXh0ID0gZnVuY3Rpb24gKCkgewoJcmV0dXJuIHRoaXMud3JpdGVyLmNvbnRleHQ7Cn07Cgptb2R1bGUuZXhwb3J0cyA9IFBhZ2VFbGVtZW50V3JpdGVyOwoKCi8qKiovIH0pLAovKiAxMzYgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKCnZhciBMaW5lID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Mik7CnZhciBpc051bWJlciA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNOdW1iZXI7CnZhciBwYWNrID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5wYWNrOwp2YXIgb2Zmc2V0VmVjdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5vZmZzZXRWZWN0b3I7CnZhciBEb2N1bWVudENvbnRleHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgxKTsKCi8qKgogKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEVsZW1lbnRXcml0ZXIgLSBhIGxpbmUvdmVjdG9yIHdyaXRlciwgd2hpY2ggYWRkcwogKiBlbGVtZW50cyB0byBjdXJyZW50IHBhZ2UgYW5kIHNldHMgdGhlaXIgcG9zaXRpb25zIGJhc2VkIG9uIHRoZSBjb250ZXh0CiAqLwpmdW5jdGlvbiBFbGVtZW50V3JpdGVyKGNvbnRleHQsIHRyYWNrZXIpIHsKCXRoaXMuY29udGV4dCA9IGNvbnRleHQ7Cgl0aGlzLmNvbnRleHRTdGFjayA9IFtdOwoJdGhpcy50cmFja2VyID0gdHJhY2tlcjsKfQoKZnVuY3Rpb24gYWRkUGFnZUl0ZW0ocGFnZSwgaXRlbSwgaW5kZXgpIHsKCWlmIChpbmRleCA9PT0gbnVsbCB8fCBpbmRleCA9PT0gdW5kZWZpbmVkIHx8IGluZGV4IDwgMCB8fCBpbmRleCA+IHBhZ2UuaXRlbXMubGVuZ3RoKSB7CgkJcGFnZS5pdGVtcy5wdXNoKGl0ZW0pOwoJfSBlbHNlIHsKCQlwYWdlLml0ZW1zLnNwbGljZShpbmRleCwgMCwgaXRlbSk7Cgl9Cn0KCkVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmFkZExpbmUgPSBmdW5jdGlvbiAobGluZSwgZG9udFVwZGF0ZUNvbnRleHRQb3NpdGlvbiwgaW5kZXgpIHsKCXZhciBoZWlnaHQgPSBsaW5lLmdldEhlaWdodCgpOwoJdmFyIGNvbnRleHQgPSB0aGlzLmNvbnRleHQ7Cgl2YXIgcGFnZSA9IGNvbnRleHQuZ2V0Q3VycmVudFBhZ2UoKSwKCQlwb3NpdGlvbiA9IHRoaXMuZ2V0Q3VycmVudFBvc2l0aW9uT25QYWdlKCk7CgoJaWYgKGNvbnRleHQuYXZhaWxhYmxlSGVpZ2h0IDwgaGVpZ2h0IHx8ICFwYWdlKSB7CgkJcmV0dXJuIGZhbHNlOwoJfQoKCWxpbmUueCA9IGNvbnRleHQueCArIChsaW5lLnggfHwgMCk7CglsaW5lLnkgPSBjb250ZXh0LnkgKyAobGluZS55IHx8IDApOwoKCXRoaXMuYWxpZ25MaW5lKGxpbmUpOwoKCWFkZFBhZ2VJdGVtKHBhZ2UsIHsKCQl0eXBlOiAnbGluZScsCgkJaXRlbTogbGluZQoJfSwgaW5kZXgpOwoJdGhpcy50cmFja2VyLmVtaXQoJ2xpbmVBZGRlZCcsIGxpbmUpOwoKCWlmICghZG9udFVwZGF0ZUNvbnRleHRQb3NpdGlvbikgewoJCWNvbnRleHQubW92ZURvd24oaGVpZ2h0KTsKCX0KCglyZXR1cm4gcG9zaXRpb247Cn07CgpFbGVtZW50V3JpdGVyLnByb3RvdHlwZS5hbGlnbkxpbmUgPSBmdW5jdGlvbiAobGluZSkgewoJdmFyIHdpZHRoID0gdGhpcy5jb250ZXh0LmF2YWlsYWJsZVdpZHRoOwoJdmFyIGxpbmVXaWR0aCA9IGxpbmUuZ2V0V2lkdGgoKTsKCgl2YXIgYWxpZ25tZW50ID0gbGluZS5pbmxpbmVzICYmIGxpbmUuaW5saW5lcy5sZW5ndGggPiAwICYmIGxpbmUuaW5saW5lc1swXS5hbGlnbm1lbnQ7CgoJdmFyIG9mZnNldCA9IDA7Cglzd2l0Y2ggKGFsaWdubWVudCkgewoJCWNhc2UgJ3JpZ2h0JzoKCQkJb2Zmc2V0ID0gd2lkdGggLSBsaW5lV2lkdGg7CgkJCWJyZWFrOwoJCWNhc2UgJ2NlbnRlcic6CgkJCW9mZnNldCA9ICh3aWR0aCAtIGxpbmVXaWR0aCkgLyAyOwoJCQlicmVhazsKCX0KCglpZiAob2Zmc2V0KSB7CgkJbGluZS54ID0gKGxpbmUueCB8fCAwKSArIG9mZnNldDsKCX0KCglpZiAoYWxpZ25tZW50ID09PSAnanVzdGlmeScgJiYKCQkhbGluZS5uZXdMaW5lRm9yY2VkICYmCgkJIWxpbmUubGFzdExpbmVJblBhcmFncmFwaCAmJgoJCWxpbmUuaW5saW5lcy5sZW5ndGggPiAxKSB7CgkJdmFyIGFkZGl0aW9uYWxTcGFjaW5nID0gKHdpZHRoIC0gbGluZVdpZHRoKSAvIChsaW5lLmlubGluZXMubGVuZ3RoIC0gMSk7CgoJCWZvciAodmFyIGkgPSAxLCBsID0gbGluZS5pbmxpbmVzLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCQlvZmZzZXQgPSBpICogYWRkaXRpb25hbFNwYWNpbmc7CgoJCQlsaW5lLmlubGluZXNbaV0ueCArPSBvZmZzZXQ7CgkJCWxpbmUuaW5saW5lc1tpXS5qdXN0aWZ5U2hpZnQgPSBhZGRpdGlvbmFsU3BhY2luZzsKCQl9Cgl9Cn07CgpFbGVtZW50V3JpdGVyLnByb3RvdHlwZS5hZGRJbWFnZSA9IGZ1bmN0aW9uIChpbWFnZSwgaW5kZXgpIHsKCXZhciBjb250ZXh0ID0gdGhpcy5jb250ZXh0OwoJdmFyIHBhZ2UgPSBjb250ZXh0LmdldEN1cnJlbnRQYWdlKCksCgkJcG9zaXRpb24gPSB0aGlzLmdldEN1cnJlbnRQb3NpdGlvbk9uUGFnZSgpOwoKCWlmICghcGFnZSB8fCAoaW1hZ2UuYWJzb2x1dGVQb3NpdGlvbiA9PT0gdW5kZWZpbmVkICYmIGNvbnRleHQuYXZhaWxhYmxlSGVpZ2h0IDwgaW1hZ2UuX2hlaWdodCAmJiBwYWdlLml0ZW1zLmxlbmd0aCA+IDApKSB7CgkJcmV0dXJuIGZhbHNlOwoJfQoKCWlmIChpbWFnZS5feCA9PT0gdW5kZWZpbmVkKSB7CgkJaW1hZ2UuX3ggPSBpbWFnZS54IHx8IDA7Cgl9CgoJaW1hZ2UueCA9IGNvbnRleHQueCArIGltYWdlLl94OwoJaW1hZ2UueSA9IGNvbnRleHQueTsKCgl0aGlzLmFsaWduSW1hZ2UoaW1hZ2UpOwoKCWFkZFBhZ2VJdGVtKHBhZ2UsIHsKCQl0eXBlOiAnaW1hZ2UnLAoJCWl0ZW06IGltYWdlCgl9LCBpbmRleCk7CgoJY29udGV4dC5tb3ZlRG93bihpbWFnZS5faGVpZ2h0KTsKCglyZXR1cm4gcG9zaXRpb247Cn07CgpFbGVtZW50V3JpdGVyLnByb3RvdHlwZS5hZGRRciA9IGZ1bmN0aW9uIChxciwgaW5kZXgpIHsKCXZhciBjb250ZXh0ID0gdGhpcy5jb250ZXh0OwoJdmFyIHBhZ2UgPSBjb250ZXh0LmdldEN1cnJlbnRQYWdlKCksCgkJcG9zaXRpb24gPSB0aGlzLmdldEN1cnJlbnRQb3NpdGlvbk9uUGFnZSgpOwoKCWlmICghcGFnZSB8fCAocXIuYWJzb2x1dGVQb3NpdGlvbiA9PT0gdW5kZWZpbmVkICYmIGNvbnRleHQuYXZhaWxhYmxlSGVpZ2h0IDwgcXIuX2hlaWdodCkpIHsKCQlyZXR1cm4gZmFsc2U7Cgl9CgoJaWYgKHFyLl94ID09PSB1bmRlZmluZWQpIHsKCQlxci5feCA9IHFyLnggfHwgMDsKCX0KCglxci54ID0gY29udGV4dC54ICsgcXIuX3g7Cglxci55ID0gY29udGV4dC55OwoKCXRoaXMuYWxpZ25JbWFnZShxcik7CgoJZm9yICh2YXIgaSA9IDAsIGwgPSBxci5fY2FudmFzLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCXZhciB2ZWN0b3IgPSBxci5fY2FudmFzW2ldOwoJCXZlY3Rvci54ICs9IHFyLng7CgkJdmVjdG9yLnkgKz0gcXIueTsKCQl0aGlzLmFkZFZlY3Rvcih2ZWN0b3IsIHRydWUsIHRydWUsIGluZGV4KTsKCX0KCgljb250ZXh0Lm1vdmVEb3duKHFyLl9oZWlnaHQpOwoKCXJldHVybiBwb3NpdGlvbjsKfTsKCkVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmFsaWduSW1hZ2UgPSBmdW5jdGlvbiAoaW1hZ2UpIHsKCXZhciB3aWR0aCA9IHRoaXMuY29udGV4dC5hdmFpbGFibGVXaWR0aDsKCXZhciBpbWFnZVdpZHRoID0gaW1hZ2UuX21pbldpZHRoOwoJdmFyIG9mZnNldCA9IDA7Cglzd2l0Y2ggKGltYWdlLl9hbGlnbm1lbnQpIHsKCQljYXNlICdyaWdodCc6CgkJCW9mZnNldCA9IHdpZHRoIC0gaW1hZ2VXaWR0aDsKCQkJYnJlYWs7CgkJY2FzZSAnY2VudGVyJzoKCQkJb2Zmc2V0ID0gKHdpZHRoIC0gaW1hZ2VXaWR0aCkgLyAyOwoJCQlicmVhazsKCX0KCglpZiAob2Zmc2V0KSB7CgkJaW1hZ2UueCA9IChpbWFnZS54IHx8IDApICsgb2Zmc2V0OwoJfQp9OwoKRWxlbWVudFdyaXRlci5wcm90b3R5cGUuYWxpZ25DYW52YXMgPSBmdW5jdGlvbiAobm9kZSkgewoJdmFyIHdpZHRoID0gdGhpcy5jb250ZXh0LmF2YWlsYWJsZVdpZHRoOwoJdmFyIGNhbnZhc1dpZHRoID0gbm9kZS5fbWluV2lkdGg7Cgl2YXIgb2Zmc2V0ID0gMDsKCXN3aXRjaCAobm9kZS5fYWxpZ25tZW50KSB7CgkJY2FzZSAncmlnaHQnOgoJCQlvZmZzZXQgPSB3aWR0aCAtIGNhbnZhc1dpZHRoOwoJCQlicmVhazsKCQljYXNlICdjZW50ZXInOgoJCQlvZmZzZXQgPSAod2lkdGggLSBjYW52YXNXaWR0aCkgLyAyOwoJCQlicmVhazsKCX0KCWlmIChvZmZzZXQpIHsKCQlub2RlLmNhbnZhcy5mb3JFYWNoKGZ1bmN0aW9uICh2ZWN0b3IpIHsKCQkJb2Zmc2V0VmVjdG9yKHZlY3Rvciwgb2Zmc2V0LCAwKTsKCQl9KTsKCX0KfTsKCkVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmFkZFZlY3RvciA9IGZ1bmN0aW9uICh2ZWN0b3IsIGlnbm9yZUNvbnRleHRYLCBpZ25vcmVDb250ZXh0WSwgaW5kZXgpIHsKCXZhciBjb250ZXh0ID0gdGhpcy5jb250ZXh0OwoJdmFyIHBhZ2UgPSBjb250ZXh0LmdldEN1cnJlbnRQYWdlKCksCgkJcG9zaXRpb24gPSB0aGlzLmdldEN1cnJlbnRQb3NpdGlvbk9uUGFnZSgpOwoKCWlmIChwYWdlKSB7CgkJb2Zmc2V0VmVjdG9yKHZlY3RvciwgaWdub3JlQ29udGV4dFggPyAwIDogY29udGV4dC54LCBpZ25vcmVDb250ZXh0WSA/IDAgOiBjb250ZXh0LnkpOwoJCWFkZFBhZ2VJdGVtKHBhZ2UsIHsKCQkJdHlwZTogJ3ZlY3RvcicsCgkJCWl0ZW06IHZlY3RvcgoJCX0sIGluZGV4KTsKCQlyZXR1cm4gcG9zaXRpb247Cgl9Cn07CgpFbGVtZW50V3JpdGVyLnByb3RvdHlwZS5iZWdpbkNsaXAgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkgewoJdmFyIGN0eCA9IHRoaXMuY29udGV4dDsKCXZhciBwYWdlID0gY3R4LmdldEN1cnJlbnRQYWdlKCk7CglwYWdlLml0ZW1zLnB1c2goewoJCXR5cGU6ICdiZWdpbkNsaXAnLAoJCWl0ZW06IHt4OiBjdHgueCwgeTogY3R4LnksIHdpZHRoOiB3aWR0aCwgaGVpZ2h0OiBoZWlnaHR9Cgl9KTsKCXJldHVybiB0cnVlOwp9OwoKRWxlbWVudFdyaXRlci5wcm90b3R5cGUuZW5kQ2xpcCA9IGZ1bmN0aW9uICgpIHsKCXZhciBjdHggPSB0aGlzLmNvbnRleHQ7Cgl2YXIgcGFnZSA9IGN0eC5nZXRDdXJyZW50UGFnZSgpOwoJcGFnZS5pdGVtcy5wdXNoKHsKCQl0eXBlOiAnZW5kQ2xpcCcKCX0pOwoJcmV0dXJuIHRydWU7Cn07CgpmdW5jdGlvbiBjbG9uZUxpbmUobGluZSkgewoJdmFyIHJlc3VsdCA9IG5ldyBMaW5lKGxpbmUubWF4V2lkdGgpOwoKCWZvciAodmFyIGtleSBpbiBsaW5lKSB7CgkJaWYgKGxpbmUuaGFzT3duUHJvcGVydHkoa2V5KSkgewoJCQlyZXN1bHRba2V5XSA9IGxpbmVba2V5XTsKCQl9Cgl9CgoJcmV0dXJuIHJlc3VsdDsKfQoKRWxlbWVudFdyaXRlci5wcm90b3R5cGUuYWRkRnJhZ21lbnQgPSBmdW5jdGlvbiAoYmxvY2ssIHVzZUJsb2NrWE9mZnNldCwgdXNlQmxvY2tZT2Zmc2V0LCBkb250VXBkYXRlQ29udGV4dFBvc2l0aW9uKSB7Cgl2YXIgY3R4ID0gdGhpcy5jb250ZXh0OwoJdmFyIHBhZ2UgPSBjdHguZ2V0Q3VycmVudFBhZ2UoKTsKCglpZiAoIXVzZUJsb2NrWE9mZnNldCAmJiBibG9jay5oZWlnaHQgPiBjdHguYXZhaWxhYmxlSGVpZ2h0KSB7CgkJcmV0dXJuIGZhbHNlOwoJfQoKCWJsb2NrLml0ZW1zLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKCQlzd2l0Y2ggKGl0ZW0udHlwZSkgewoJCQljYXNlICdsaW5lJzoKCQkJCXZhciBsID0gY2xvbmVMaW5lKGl0ZW0uaXRlbSk7CgoJCQkJbC54ID0gKGwueCB8fCAwKSArICh1c2VCbG9ja1hPZmZzZXQgPyAoYmxvY2sueE9mZnNldCB8fCAwKSA6IGN0eC54KTsKCQkJCWwueSA9IChsLnkgfHwgMCkgKyAodXNlQmxvY2tZT2Zmc2V0ID8gKGJsb2NrLnlPZmZzZXQgfHwgMCkgOiBjdHgueSk7CgoJCQkJcGFnZS5pdGVtcy5wdXNoKHsKCQkJCQl0eXBlOiAnbGluZScsCgkJCQkJaXRlbTogbAoJCQkJfSk7CgkJCQlicmVhazsKCgkJCWNhc2UgJ3ZlY3Rvcic6CgkJCQl2YXIgdiA9IHBhY2soaXRlbS5pdGVtKTsKCgkJCQlvZmZzZXRWZWN0b3IodiwgdXNlQmxvY2tYT2Zmc2V0ID8gKGJsb2NrLnhPZmZzZXQgfHwgMCkgOiBjdHgueCwgdXNlQmxvY2tZT2Zmc2V0ID8gKGJsb2NrLnlPZmZzZXQgfHwgMCkgOiBjdHgueSk7CgkJCQlwYWdlLml0ZW1zLnB1c2goewoJCQkJCXR5cGU6ICd2ZWN0b3InLAoJCQkJCWl0ZW06IHYKCQkJCX0pOwoJCQkJYnJlYWs7CgoJCQljYXNlICdpbWFnZSc6CgkJCQl2YXIgaW1nID0gcGFjayhpdGVtLml0ZW0pOwoKCQkJCWltZy54ID0gKGltZy54IHx8IDApICsgKHVzZUJsb2NrWE9mZnNldCA/IChibG9jay54T2Zmc2V0IHx8IDApIDogY3R4LngpOwoJCQkJaW1nLnkgPSAoaW1nLnkgfHwgMCkgKyAodXNlQmxvY2tZT2Zmc2V0ID8gKGJsb2NrLnlPZmZzZXQgfHwgMCkgOiBjdHgueSk7CgoJCQkJcGFnZS5pdGVtcy5wdXNoKHsKCQkJCQl0eXBlOiAnaW1hZ2UnLAoJCQkJCWl0ZW06IGltZwoJCQkJfSk7CgkJCQlicmVhazsKCQl9Cgl9KTsKCglpZiAoIWRvbnRVcGRhdGVDb250ZXh0UG9zaXRpb24pIHsKCQljdHgubW92ZURvd24oYmxvY2suaGVpZ2h0KTsKCX0KCglyZXR1cm4gdHJ1ZTsKfTsKCi8qKgogKiBQdXNoZXMgdGhlIHByb3ZpZGVkIGNvbnRleHQgb250byB0aGUgc3RhY2sgb3IgY3JlYXRlcyBhIG5ldyBvbmUKICoKICogcHVzaENvbnRleHQoY29udGV4dCkgLSBwdXNoZXMgdGhlIHByb3ZpZGVkIGNvbnRleHQgYW5kIG1ha2VzIGl0IGN1cnJlbnQKICogcHVzaENvbnRleHQod2lkdGgsIGhlaWdodCkgLSBjcmVhdGVzIGFuZCBwdXNoZXMgYSBuZXcgY29udGV4dCB3aXRoIHRoZSBzcGVjaWZpZWQgd2lkdGggYW5kIGhlaWdodAogKiBwdXNoQ29udGV4dCgpIC0gY3JlYXRlcyBhIG5ldyBjb250ZXh0IGZvciB1bmJyZWFrYWJsZSBibG9ja3MgKHdpdGggY3VycmVudCBhdmFpbGFibGVXaWR0aCBhbmQgZnVsbC1wYWdlLWhlaWdodCkKICovCkVsZW1lbnRXcml0ZXIucHJvdG90eXBlLnB1c2hDb250ZXh0ID0gZnVuY3Rpb24gKGNvbnRleHRPcldpZHRoLCBoZWlnaHQpIHsKCWlmIChjb250ZXh0T3JXaWR0aCA9PT0gdW5kZWZpbmVkKSB7CgkJaGVpZ2h0ID0gdGhpcy5jb250ZXh0LmdldEN1cnJlbnRQYWdlKCkuaGVpZ2h0IC0gdGhpcy5jb250ZXh0LnBhZ2VNYXJnaW5zLnRvcCAtIHRoaXMuY29udGV4dC5wYWdlTWFyZ2lucy5ib3R0b207CgkJY29udGV4dE9yV2lkdGggPSB0aGlzLmNvbnRleHQuYXZhaWxhYmxlV2lkdGg7Cgl9CgoJaWYgKGlzTnVtYmVyKGNvbnRleHRPcldpZHRoKSkgewoJCWNvbnRleHRPcldpZHRoID0gbmV3IERvY3VtZW50Q29udGV4dCh7d2lkdGg6IGNvbnRleHRPcldpZHRoLCBoZWlnaHQ6IGhlaWdodH0sIHtsZWZ0OiAwLCByaWdodDogMCwgdG9wOiAwLCBib3R0b206IDB9KTsKCX0KCgl0aGlzLmNvbnRleHRTdGFjay5wdXNoKHRoaXMuY29udGV4dCk7Cgl0aGlzLmNvbnRleHQgPSBjb250ZXh0T3JXaWR0aDsKfTsKCkVsZW1lbnRXcml0ZXIucHJvdG90eXBlLnBvcENvbnRleHQgPSBmdW5jdGlvbiAoKSB7Cgl0aGlzLmNvbnRleHQgPSB0aGlzLmNvbnRleHRTdGFjay5wb3AoKTsKfTsKCkVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmdldEN1cnJlbnRQb3NpdGlvbk9uUGFnZSA9IGZ1bmN0aW9uICgpIHsKCXJldHVybiAodGhpcy5jb250ZXh0U3RhY2tbMF0gfHwgdGhpcy5jb250ZXh0KS5nZXRDdXJyZW50UG9zaXRpb24oKTsKfTsKCgptb2R1bGUuZXhwb3J0cyA9IEVsZW1lbnRXcml0ZXI7CgoKLyoqKi8gfSksCi8qIDEzNyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKdmFyIENvbHVtbkNhbGN1bGF0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ0KTsKdmFyIGlzRnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzRnVuY3Rpb247CgpmdW5jdGlvbiBUYWJsZVByb2Nlc3Nvcih0YWJsZU5vZGUpIHsKCXRoaXMudGFibGVOb2RlID0gdGFibGVOb2RlOwp9CgpUYWJsZVByb2Nlc3Nvci5wcm90b3R5cGUuYmVnaW5UYWJsZSA9IGZ1bmN0aW9uICh3cml0ZXIpIHsKCXZhciB0YWJsZU5vZGU7Cgl2YXIgYXZhaWxhYmxlV2lkdGg7Cgl2YXIgc2VsZiA9IHRoaXM7CgoJdGFibGVOb2RlID0gdGhpcy50YWJsZU5vZGU7Cgl0aGlzLm9mZnNldHMgPSB0YWJsZU5vZGUuX29mZnNldHM7Cgl0aGlzLmxheW91dCA9IHRhYmxlTm9kZS5fbGF5b3V0OwoKCWF2YWlsYWJsZVdpZHRoID0gd3JpdGVyLmNvbnRleHQoKS5hdmFpbGFibGVXaWR0aCAtIHRoaXMub2Zmc2V0cy50b3RhbDsKCUNvbHVtbkNhbGN1bGF0b3IuYnVpbGRDb2x1bW5XaWR0aHModGFibGVOb2RlLnRhYmxlLndpZHRocywgYXZhaWxhYmxlV2lkdGgpOwoKCXRoaXMudGFibGVXaWR0aCA9IHRhYmxlTm9kZS5fb2Zmc2V0cy50b3RhbCArIGdldFRhYmxlSW5uZXJDb250ZW50V2lkdGgoKTsKCXRoaXMucm93U3BhbkRhdGEgPSBwcmVwYXJlUm93U3BhbkRhdGEoKTsKCXRoaXMuY2xlYW5VcFJlcGVhdGFibGVzID0gZmFsc2U7CgoJdGhpcy5oZWFkZXJSb3dzID0gdGFibGVOb2RlLnRhYmxlLmhlYWRlclJvd3MgfHwgMDsKCXRoaXMucm93c1dpdGhvdXRQYWdlQnJlYWsgPSB0aGlzLmhlYWRlclJvd3MgKyAodGFibGVOb2RlLnRhYmxlLmtlZXBXaXRoSGVhZGVyUm93cyB8fCAwKTsKCXRoaXMuZG9udEJyZWFrUm93cyA9IHRhYmxlTm9kZS50YWJsZS5kb250QnJlYWtSb3dzIHx8IGZhbHNlOwoKCWlmICh0aGlzLnJvd3NXaXRob3V0UGFnZUJyZWFrKSB7CgkJd3JpdGVyLmJlZ2luVW5icmVha2FibGVCbG9jaygpOwoJfQoKCS8vIHVwZGF0ZSB0aGUgYm9yZGVyIHByb3BlcnRpZXMgb2YgYWxsIGNlbGxzIGJlZm9yZSBkcmF3aW5nIGFueSBsaW5lcwoJcHJlcGFyZUNlbGxCb3JkZXJzKHRoaXMudGFibGVOb2RlLnRhYmxlLmJvZHkpOwoKCXRoaXMuZHJhd0hvcml6b250YWxMaW5lKDAsIHdyaXRlcik7CgoJZnVuY3Rpb24gZ2V0VGFibGVJbm5lckNvbnRlbnRXaWR0aCgpIHsKCQl2YXIgd2lkdGggPSAwOwoKCQl0YWJsZU5vZGUudGFibGUud2lkdGhzLmZvckVhY2goZnVuY3Rpb24gKHcpIHsKCQkJd2lkdGggKz0gdy5fY2FsY1dpZHRoOwoJCX0pOwoKCQlyZXR1cm4gd2lkdGg7Cgl9CgoJZnVuY3Rpb24gcHJlcGFyZVJvd1NwYW5EYXRhKCkgewoJCXZhciByc2QgPSBbXTsKCQl2YXIgeCA9IDA7CgkJdmFyIGxhc3RXaWR0aCA9IDA7CgoJCXJzZC5wdXNoKHtsZWZ0OiAwLCByb3dTcGFuOiAwfSk7CgoJCWZvciAodmFyIGkgPSAwLCBsID0gc2VsZi50YWJsZU5vZGUudGFibGUuYm9keVswXS5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQkJdmFyIHBhZGRpbmdzID0gc2VsZi5sYXlvdXQucGFkZGluZ0xlZnQoaSwgc2VsZi50YWJsZU5vZGUpICsgc2VsZi5sYXlvdXQucGFkZGluZ1JpZ2h0KGksIHNlbGYudGFibGVOb2RlKTsKCQkJdmFyIGxCb3JkZXIgPSBzZWxmLmxheW91dC52TGluZVdpZHRoKGksIHNlbGYudGFibGVOb2RlKTsKCQkJbGFzdFdpZHRoID0gcGFkZGluZ3MgKyBsQm9yZGVyICsgc2VsZi50YWJsZU5vZGUudGFibGUud2lkdGhzW2ldLl9jYWxjV2lkdGg7CgkJCXJzZFtyc2QubGVuZ3RoIC0gMV0ud2lkdGggPSBsYXN0V2lkdGg7CgkJCXggKz0gbGFzdFdpZHRoOwoJCQlyc2QucHVzaCh7bGVmdDogeCwgcm93U3BhbjogMCwgd2lkdGg6IDB9KTsKCQl9CgoJCXJldHVybiByc2Q7Cgl9CgoJLy8gSXRlcmF0ZSB0aHJvdWdoIGFsbCBjZWxscy4gSWYgdGhlIGN1cnJlbnQgY2VsbCBpcyB0aGUgc3RhcnQgb2YgYQoJLy8gcm93U3Bhbi9jb2xTcGFuLCB1cGRhdGUgdGhlIGJvcmRlciBwcm9wZXJ0eSBvZiB0aGUgY2VsbHMgb24gaXRzCgkvLyBib3R0b20vcmlnaHQgYWNjb3JkaW5nbHkuIFRoaXMgaXMgbmVlZGVkIHNpbmNlIGVhY2ggaXRlcmF0aW9uIG9mIHRoZQoJLy8gbGluZS1kcmF3aW5nIGxvb3BzIGRyYXdzIGxpbmVzIGZvciBhIHNpbmdsZSBjZWxsLCBub3QgZm9yIGFuIGVudGlyZQoJLy8gcm93U3Bhbi9jb2xTcGFuLgoJZnVuY3Rpb24gcHJlcGFyZUNlbGxCb3JkZXJzKGJvZHkpIHsKCQlmb3IgKHZhciByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgYm9keS5sZW5ndGg7IHJvd0luZGV4KyspIHsKCQkJdmFyIHJvdyA9IGJvZHlbcm93SW5kZXhdOwoKCQkJZm9yICh2YXIgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IHJvdy5sZW5ndGg7IGNvbEluZGV4KyspIHsKCQkJCXZhciBjZWxsID0gcm93W2NvbEluZGV4XTsKCgkJCQlpZiAoY2VsbC5ib3JkZXIpIHsKCQkJCQl2YXIgcm93U3BhbiA9IGNlbGwucm93U3BhbiB8fCAxOwoJCQkJCXZhciBjb2xTcGFuID0gY2VsbC5jb2xTcGFuIHx8IDE7CgoJCQkJCWZvciAodmFyIHJvd09mZnNldCA9IDA7IHJvd09mZnNldCA8IHJvd1NwYW47IHJvd09mZnNldCsrKSB7CgkJCQkJCS8vIHNldCBsZWZ0IGJvcmRlcgoJCQkJCQlpZiAoY2VsbC5ib3JkZXJbMF0gIT09IHVuZGVmaW5lZCAmJiByb3dPZmZzZXQgPiAwKSB7CgkJCQkJCQlzZXRCb3JkZXIocm93SW5kZXggKyByb3dPZmZzZXQsIGNvbEluZGV4LCAwLCBjZWxsLmJvcmRlclswXSk7CgkJCQkJCX0KCgkJCQkJCS8vIHNldCByaWdodCBib3JkZXIKCQkJCQkJaWYgKGNlbGwuYm9yZGVyWzJdICE9PSB1bmRlZmluZWQpIHsKCQkJCQkJCXNldEJvcmRlcihyb3dJbmRleCArIHJvd09mZnNldCwgY29sSW5kZXggKyBjb2xTcGFuIC0gMSwgMiwgY2VsbC5ib3JkZXJbMl0pOwoJCQkJCQl9CgkJCQkJfQoKCQkJCQlmb3IgKHZhciBjb2xPZmZzZXQgPSAwOyBjb2xPZmZzZXQgPCBjb2xTcGFuOyBjb2xPZmZzZXQrKykgewoJCQkJCQkvLyBzZXQgdG9wIGJvcmRlcgoJCQkJCQlpZiAoY2VsbC5ib3JkZXJbMV0gIT09IHVuZGVmaW5lZCAmJiBjb2xPZmZzZXQgPiAwKSB7CgkJCQkJCQlzZXRCb3JkZXIocm93SW5kZXgsIGNvbEluZGV4ICsgY29sT2Zmc2V0LCAxLCBjZWxsLmJvcmRlclsxXSk7CgkJCQkJCX0KCgkJCQkJCS8vIHNldCBib3R0b20gYm9yZGVyCgkJCQkJCWlmIChjZWxsLmJvcmRlclszXSAhPT0gdW5kZWZpbmVkKSB7CgkJCQkJCQlzZXRCb3JkZXIocm93SW5kZXggKyByb3dTcGFuIC0gMSwgY29sSW5kZXggKyBjb2xPZmZzZXQsIDMsIGNlbGwuYm9yZGVyWzNdKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJLy8gaGVscGVyIGZ1bmN0aW9uIHRvIHNldCB0aGUgYm9yZGVyIGZvciBhIGdpdmVuIGNlbGwKCQlmdW5jdGlvbiBzZXRCb3JkZXIocm93SW5kZXgsIGNvbEluZGV4LCBib3JkZXJJbmRleCwgYm9yZGVyVmFsdWUpIHsKCQkJdmFyIGNlbGwgPSBib2R5W3Jvd0luZGV4XVtjb2xJbmRleF07CgkJCWNlbGwuYm9yZGVyID0gY2VsbC5ib3JkZXIgfHwge307CgkJCWNlbGwuYm9yZGVyW2JvcmRlckluZGV4XSA9IGJvcmRlclZhbHVlOwoJCX0KCX0KfTsKClRhYmxlUHJvY2Vzc29yLnByb3RvdHlwZS5vblJvd0JyZWFrID0gZnVuY3Rpb24gKHJvd0luZGV4LCB3cml0ZXIpIHsKCXZhciBzZWxmID0gdGhpczsKCXJldHVybiBmdW5jdGlvbiAoKSB7CgkJdmFyIG9mZnNldCA9IHNlbGYucm93UGFkZGluZ1RvcCArICghc2VsZi5oZWFkZXJSb3dzID8gc2VsZi50b3BMaW5lV2lkdGggOiAwKTsKCQl3cml0ZXIuY29udGV4dCgpLmF2YWlsYWJsZUhlaWdodCAtPSBzZWxmLnJlc2VydmVkQXRCb3R0b207CgkJd3JpdGVyLmNvbnRleHQoKS5tb3ZlRG93bihvZmZzZXQpOwoJfTsKfTsKClRhYmxlUHJvY2Vzc29yLnByb3RvdHlwZS5iZWdpblJvdyA9IGZ1bmN0aW9uIChyb3dJbmRleCwgd3JpdGVyKSB7Cgl0aGlzLnRvcExpbmVXaWR0aCA9IHRoaXMubGF5b3V0LmhMaW5lV2lkdGgocm93SW5kZXgsIHRoaXMudGFibGVOb2RlKTsKCXRoaXMucm93UGFkZGluZ1RvcCA9IHRoaXMubGF5b3V0LnBhZGRpbmdUb3Aocm93SW5kZXgsIHRoaXMudGFibGVOb2RlKTsKCXRoaXMuYm90dG9tTGluZVdpZHRoID0gdGhpcy5sYXlvdXQuaExpbmVXaWR0aChyb3dJbmRleCArIDEsIHRoaXMudGFibGVOb2RlKTsKCXRoaXMucm93UGFkZGluZ0JvdHRvbSA9IHRoaXMubGF5b3V0LnBhZGRpbmdCb3R0b20ocm93SW5kZXgsIHRoaXMudGFibGVOb2RlKTsKCgl0aGlzLnJvd0NhbGxiYWNrID0gdGhpcy5vblJvd0JyZWFrKHJvd0luZGV4LCB3cml0ZXIpOwoJd3JpdGVyLnRyYWNrZXIuc3RhcnRUcmFja2luZygncGFnZUNoYW5nZWQnLCB0aGlzLnJvd0NhbGxiYWNrKTsKCWlmICh0aGlzLmRvbnRCcmVha1Jvd3MpIHsKCQl3cml0ZXIuYmVnaW5VbmJyZWFrYWJsZUJsb2NrKCk7Cgl9Cgl0aGlzLnJvd1RvcFkgPSB3cml0ZXIuY29udGV4dCgpLnk7Cgl0aGlzLnJlc2VydmVkQXRCb3R0b20gPSB0aGlzLmJvdHRvbUxpbmVXaWR0aCArIHRoaXMucm93UGFkZGluZ0JvdHRvbTsKCgl3cml0ZXIuY29udGV4dCgpLmF2YWlsYWJsZUhlaWdodCAtPSB0aGlzLnJlc2VydmVkQXRCb3R0b207CgoJd3JpdGVyLmNvbnRleHQoKS5tb3ZlRG93bih0aGlzLnJvd1BhZGRpbmdUb3ApOwp9OwoKVGFibGVQcm9jZXNzb3IucHJvdG90eXBlLmRyYXdIb3Jpem9udGFsTGluZSA9IGZ1bmN0aW9uIChsaW5lSW5kZXgsIHdyaXRlciwgb3ZlcnJpZGVZKSB7Cgl2YXIgbGluZVdpZHRoID0gdGhpcy5sYXlvdXQuaExpbmVXaWR0aChsaW5lSW5kZXgsIHRoaXMudGFibGVOb2RlKTsKCWlmIChsaW5lV2lkdGgpIHsKCQl2YXIgb2Zmc2V0ID0gbGluZVdpZHRoIC8gMjsKCQl2YXIgY3VycmVudExpbmUgPSBudWxsOwoJCXZhciBib2R5ID0gdGhpcy50YWJsZU5vZGUudGFibGUuYm9keTsKCgkJZm9yICh2YXIgaSA9IDAsIGwgPSB0aGlzLnJvd1NwYW5EYXRhLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCQl2YXIgZGF0YSA9IHRoaXMucm93U3BhbkRhdGFbaV07CgkJCXZhciBzaG91bGREcmF3TGluZSA9ICFkYXRhLnJvd1NwYW47CgoJCQkvLyBkcmF3IG9ubHkgaWYgdGhlIGN1cnJlbnQgY2VsbCByZXF1aXJlcyBhIHRvcCBib3JkZXIgb3IgdGhlIGNlbGwgaW4gdGhlCgkJCS8vIHJvdyBhYm92ZSByZXF1aXJlcyBhIGJvdHRvbSBib3JkZXIKCQkJaWYgKHNob3VsZERyYXdMaW5lICYmIGkgPCBsIC0gMSkgewoJCQkJdmFyIHRvcEJvcmRlciA9IGZhbHNlLCBib3R0b21Cb3JkZXIgPSBmYWxzZTsKCgkJCQkvLyB0aGUgY3VycmVudCBjZWxsCgkJCQlpZiAobGluZUluZGV4IDwgYm9keS5sZW5ndGgpIHsKCQkJCQl2YXIgY2VsbCA9IGJvZHlbbGluZUluZGV4XVtpXTsKCQkJCQl0b3BCb3JkZXIgPSBjZWxsLmJvcmRlciA/IGNlbGwuYm9yZGVyWzFdIDogdGhpcy5sYXlvdXQuZGVmYXVsdEJvcmRlcjsKCQkJCX0KCgkJCQkvLyB0aGUgY2VsbCBpbiB0aGUgcm93IGFib3ZlCgkJCQlpZiAobGluZUluZGV4ID4gMCkgewoJCQkJCXZhciBjZWxsQWJvdmUgPSBib2R5W2xpbmVJbmRleCAtIDFdW2ldOwoJCQkJCWJvdHRvbUJvcmRlciA9IGNlbGxBYm92ZS5ib3JkZXIgPyBjZWxsQWJvdmUuYm9yZGVyWzNdIDogdGhpcy5sYXlvdXQuZGVmYXVsdEJvcmRlcjsKCQkJCX0KCgkJCQlzaG91bGREcmF3TGluZSA9IHRvcEJvcmRlciB8fCBib3R0b21Cb3JkZXI7CgkJCX0KCgkJCWlmICghY3VycmVudExpbmUgJiYgc2hvdWxkRHJhd0xpbmUpIHsKCQkJCWN1cnJlbnRMaW5lID0ge2xlZnQ6IGRhdGEubGVmdCwgd2lkdGg6IDB9OwoJCQl9CgoJCQlpZiAoc2hvdWxkRHJhd0xpbmUpIHsKCQkJCWN1cnJlbnRMaW5lLndpZHRoICs9IChkYXRhLndpZHRoIHx8IDApOwoJCQl9CgoJCQl2YXIgeSA9IChvdmVycmlkZVkgfHwgMCkgKyBvZmZzZXQ7CgoJCQlpZiAoIXNob3VsZERyYXdMaW5lIHx8IGkgPT09IGwgLSAxKSB7CgkJCQlpZiAoY3VycmVudExpbmUgJiYgY3VycmVudExpbmUud2lkdGgpIHsKCQkJCQl3cml0ZXIuYWRkVmVjdG9yKHsKCQkJCQkJdHlwZTogJ2xpbmUnLAoJCQkJCQl4MTogY3VycmVudExpbmUubGVmdCwKCQkJCQkJeDI6IGN1cnJlbnRMaW5lLmxlZnQgKyBjdXJyZW50TGluZS53aWR0aCwKCQkJCQkJeTE6IHksCgkJCQkJCXkyOiB5LAoJCQkJCQlsaW5lV2lkdGg6IGxpbmVXaWR0aCwKCQkJCQkJbGluZUNvbG9yOiBpc0Z1bmN0aW9uKHRoaXMubGF5b3V0LmhMaW5lQ29sb3IpID8gdGhpcy5sYXlvdXQuaExpbmVDb2xvcihsaW5lSW5kZXgsIHRoaXMudGFibGVOb2RlKSA6IHRoaXMubGF5b3V0LmhMaW5lQ29sb3IKCQkJCQl9LCBmYWxzZSwgb3ZlcnJpZGVZKTsKCQkJCQljdXJyZW50TGluZSA9IG51bGw7CgkJCQl9CgkJCX0KCQl9CgoJCXdyaXRlci5jb250ZXh0KCkubW92ZURvd24obGluZVdpZHRoKTsKCX0KfTsKClRhYmxlUHJvY2Vzc29yLnByb3RvdHlwZS5kcmF3VmVydGljYWxMaW5lID0gZnVuY3Rpb24gKHgsIHkwLCB5MSwgdkxpbmVJbmRleCwgd3JpdGVyKSB7Cgl2YXIgd2lkdGggPSB0aGlzLmxheW91dC52TGluZVdpZHRoKHZMaW5lSW5kZXgsIHRoaXMudGFibGVOb2RlKTsKCWlmICh3aWR0aCA9PT0gMCkgewoJCXJldHVybjsKCX0KCXdyaXRlci5hZGRWZWN0b3IoewoJCXR5cGU6ICdsaW5lJywKCQl4MTogeCArIHdpZHRoIC8gMiwKCQl4MjogeCArIHdpZHRoIC8gMiwKCQl5MTogeTAsCgkJeTI6IHkxLAoJCWxpbmVXaWR0aDogd2lkdGgsCgkJbGluZUNvbG9yOiBpc0Z1bmN0aW9uKHRoaXMubGF5b3V0LnZMaW5lQ29sb3IpID8gdGhpcy5sYXlvdXQudkxpbmVDb2xvcih2TGluZUluZGV4LCB0aGlzLnRhYmxlTm9kZSkgOiB0aGlzLmxheW91dC52TGluZUNvbG9yCgl9LCBmYWxzZSwgdHJ1ZSk7Cn07CgpUYWJsZVByb2Nlc3Nvci5wcm90b3R5cGUuZW5kVGFibGUgPSBmdW5jdGlvbiAod3JpdGVyKSB7CglpZiAodGhpcy5jbGVhblVwUmVwZWF0YWJsZXMpIHsKCQl3cml0ZXIucG9wRnJvbVJlcGVhdGFibGVzKCk7CgkJdGhpcy5oZWFkZXJSZXBlYXRhYmxlSGVpZ2h0ID0gbnVsbDsKCX0KfTsKClRhYmxlUHJvY2Vzc29yLnByb3RvdHlwZS5lbmRSb3cgPSBmdW5jdGlvbiAocm93SW5kZXgsIHdyaXRlciwgcGFnZUJyZWFrcykgewoJdmFyIGwsIGk7Cgl2YXIgc2VsZiA9IHRoaXM7Cgl3cml0ZXIudHJhY2tlci5zdG9wVHJhY2tpbmcoJ3BhZ2VDaGFuZ2VkJywgdGhpcy5yb3dDYWxsYmFjayk7Cgl3cml0ZXIuY29udGV4dCgpLm1vdmVEb3duKHRoaXMubGF5b3V0LnBhZGRpbmdCb3R0b20ocm93SW5kZXgsIHRoaXMudGFibGVOb2RlKSk7Cgl3cml0ZXIuY29udGV4dCgpLmF2YWlsYWJsZUhlaWdodCArPSB0aGlzLnJlc2VydmVkQXRCb3R0b207CgoJdmFyIGVuZGluZ1BhZ2UgPSB3cml0ZXIuY29udGV4dCgpLnBhZ2U7Cgl2YXIgZW5kaW5nWSA9IHdyaXRlci5jb250ZXh0KCkueTsKCgl2YXIgeHMgPSBnZXRMaW5lWHMoKTsKCgl2YXIgeXMgPSBbXTsKCgl2YXIgaGFzQnJlYWtzID0gcGFnZUJyZWFrcyAmJiBwYWdlQnJlYWtzLmxlbmd0aCA+IDA7Cgl2YXIgYm9keSA9IHRoaXMudGFibGVOb2RlLnRhYmxlLmJvZHk7CgoJeXMucHVzaCh7CgkJeTA6IHRoaXMucm93VG9wWSwKCQlwYWdlOiBoYXNCcmVha3MgPyBwYWdlQnJlYWtzWzBdLnByZXZQYWdlIDogZW5kaW5nUGFnZQoJfSk7CgoJaWYgKGhhc0JyZWFrcykgewoJCWZvciAoaSA9IDAsIGwgPSBwYWdlQnJlYWtzLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCQl2YXIgcGFnZUJyZWFrID0gcGFnZUJyZWFrc1tpXTsKCQkJeXNbeXMubGVuZ3RoIC0gMV0ueTEgPSBwYWdlQnJlYWsucHJldlk7CgoJCQl5cy5wdXNoKHt5MDogcGFnZUJyZWFrLnksIHBhZ2U6IHBhZ2VCcmVhay5wcmV2UGFnZSArIDF9KTsKCgkJCWlmICh0aGlzLmhlYWRlclJlcGVhdGFibGVIZWlnaHQpIHsKCQkJCXlzW3lzLmxlbmd0aCAtIDFdLnkwICs9IHRoaXMuaGVhZGVyUmVwZWF0YWJsZUhlaWdodDsKCQkJfQoJCX0KCX0KCgl5c1t5cy5sZW5ndGggLSAxXS55MSA9IGVuZGluZ1k7CgoJdmFyIHNraXBPcnBoYW5lUGFkZGluZyA9ICh5c1swXS55MSAtIHlzWzBdLnkwID09PSB0aGlzLnJvd1BhZGRpbmdUb3ApOwoJZm9yICh2YXIgeWkgPSAoc2tpcE9ycGhhbmVQYWRkaW5nID8gMSA6IDApLCB5bCA9IHlzLmxlbmd0aDsgeWkgPCB5bDsgeWkrKykgewoJCXZhciB3aWxsQnJlYWsgPSB5aSA8IHlzLmxlbmd0aCAtIDE7CgkJdmFyIHJvd0JyZWFrV2l0aG91dEhlYWRlciA9ICh5aSA+IDAgJiYgIXRoaXMuaGVhZGVyUm93cyk7CgkJdmFyIGh6TGluZU9mZnNldCA9IHJvd0JyZWFrV2l0aG91dEhlYWRlciA/IDAgOiB0aGlzLnRvcExpbmVXaWR0aDsKCQl2YXIgeTEgPSB5c1t5aV0ueTA7CgkJdmFyIHkyID0geXNbeWldLnkxOwoKCQlpZiAod2lsbEJyZWFrKSB7CgkJCXkyID0geTIgKyB0aGlzLnJvd1BhZGRpbmdCb3R0b207CgkJfQoKCQlpZiAod3JpdGVyLmNvbnRleHQoKS5wYWdlICE9IHlzW3lpXS5wYWdlKSB7CgkJCXdyaXRlci5jb250ZXh0KCkucGFnZSA9IHlzW3lpXS5wYWdlOwoKCQkJLy9UT0RPOiBidWdneSwgYXZhaWxhYmxlSGVpZ2h0IHNob3VsZCBiZSB1cGRhdGVkIG9uIGV2ZXJ5IHBhZ2VDaGFuZ2VkIGV2ZW50CgkJCS8vIFRhYmxlUHJvY2Vzc29yIHNob3VsZCBiZSBwYWdlQ2hhbmdlZCBsaXN0ZW5lciwgaW5zdGVhZCBvZiBwcm9jZXNzUm93CgkJCXRoaXMucmVzZXJ2ZWRBdEJvdHRvbSA9IDA7CgkJfQoKCQlmb3IgKGkgPSAwLCBsID0geHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJCXZhciBsZWZ0Qm9yZGVyID0gZmFsc2UsIHJpZ2h0Qm9yZGVyID0gZmFsc2U7CgkJCXZhciBjb2xJbmRleCA9IHhzW2ldLmluZGV4OwoKCQkJLy8gdGhlIGN1cnJlbnQgY2VsbAoJCQlpZiAoY29sSW5kZXggPCBib2R5W3Jvd0luZGV4XS5sZW5ndGgpIHsKCQkJCXZhciBjZWxsID0gYm9keVtyb3dJbmRleF1bY29sSW5kZXhdOwoJCQkJbGVmdEJvcmRlciA9IGNlbGwuYm9yZGVyID8gY2VsbC5ib3JkZXJbMF0gOiB0aGlzLmxheW91dC5kZWZhdWx0Qm9yZGVyOwoJCQl9CgoJCQkvLyB0aGUgY2VsbCBmcm9tIGJlZm9yZSBjb2x1bW4KCQkJaWYgKGNvbEluZGV4ID4gMCkgewoJCQkJdmFyIGNlbGwgPSBib2R5W3Jvd0luZGV4XVtjb2xJbmRleCAtIDFdOwoJCQkJcmlnaHRCb3JkZXIgPSBjZWxsLmJvcmRlciA/IGNlbGwuYm9yZGVyWzJdIDogdGhpcy5sYXlvdXQuZGVmYXVsdEJvcmRlcjsKCQkJfQoKCQkJaWYgKGxlZnRCb3JkZXIgfHwgcmlnaHRCb3JkZXIpIHsKCQkJCXRoaXMuZHJhd1ZlcnRpY2FsTGluZSh4c1tpXS54LCB5MSAtIGh6TGluZU9mZnNldCwgeTIgKyB0aGlzLmJvdHRvbUxpbmVXaWR0aCwgeHNbaV0uaW5kZXgsIHdyaXRlcik7CgkJCX0KCgkJCWlmIChpIDwgbCAtIDEpIHsKCQkJCXZhciBmaWxsQ29sb3IgPSBib2R5W3Jvd0luZGV4XVtjb2xJbmRleF0uZmlsbENvbG9yOwoJCQkJaWYgKCFmaWxsQ29sb3IpIHsKCQkJCQlmaWxsQ29sb3IgPSBpc0Z1bmN0aW9uKHRoaXMubGF5b3V0LmZpbGxDb2xvcikgPyB0aGlzLmxheW91dC5maWxsQ29sb3Iocm93SW5kZXgsIHRoaXMudGFibGVOb2RlLCBjb2xJbmRleCkgOiB0aGlzLmxheW91dC5maWxsQ29sb3I7CgkJCQl9CgkJCQlpZiAoZmlsbENvbG9yKSB7CgkJCQkJdmFyIHdCb3JkZXIgPSAobGVmdEJvcmRlciB8fCByaWdodEJvcmRlcikgPyB0aGlzLmxheW91dC52TGluZVdpZHRoKGNvbEluZGV4LCB0aGlzLnRhYmxlTm9kZSkgOiAwOwoJCQkJCXZhciB4ZiA9IHhzW2ldLnggKyB3Qm9yZGVyOwoJCQkJCXZhciB5ZiA9IHRoaXMuZG9udEJyZWFrUm93cyA/IHkxIDogeTEgLSBoekxpbmVPZmZzZXQ7CgkJCQkJd3JpdGVyLmFkZFZlY3Rvcih7CgkJCQkJCXR5cGU6ICdyZWN0JywKCQkJCQkJeDogeGYsCgkJCQkJCXk6IHlmLAoJCQkJCQl3OiB4c1tpICsgMV0ueCAtIHhmLAoJCQkJCQloOiB5MiArIHRoaXMuYm90dG9tTGluZVdpZHRoIC0geWYsCgkJCQkJCWxpbmVXaWR0aDogMCwKCQkJCQkJY29sb3I6IGZpbGxDb2xvcgoJCQkJCX0sIGZhbHNlLCB0cnVlLCB3cml0ZXIuY29udGV4dCgpLmhhc0JhY2tncm91bmQgPyAxIDogMCk7CgkJCQl9CgkJCX0KCQl9CgoJCWlmICh3aWxsQnJlYWsgJiYgdGhpcy5sYXlvdXQuaExpbmVXaGVuQnJva2VuICE9PSBmYWxzZSkgewoJCQl0aGlzLmRyYXdIb3Jpem9udGFsTGluZShyb3dJbmRleCArIDEsIHdyaXRlciwgeTIpOwoJCX0KCQlpZiAocm93QnJlYWtXaXRob3V0SGVhZGVyICYmIHRoaXMubGF5b3V0LmhMaW5lV2hlbkJyb2tlbiAhPT0gZmFsc2UpIHsKCQkJdGhpcy5kcmF3SG9yaXpvbnRhbExpbmUocm93SW5kZXgsIHdyaXRlciwgeTEpOwoJCX0KCX0KCgl3cml0ZXIuY29udGV4dCgpLnBhZ2UgPSBlbmRpbmdQYWdlOwoJd3JpdGVyLmNvbnRleHQoKS55ID0gZW5kaW5nWTsKCgl2YXIgcm93ID0gdGhpcy50YWJsZU5vZGUudGFibGUuYm9keVtyb3dJbmRleF07Cglmb3IgKGkgPSAwLCBsID0gcm93Lmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCWlmIChyb3dbaV0ucm93U3BhbikgewoJCQl0aGlzLnJvd1NwYW5EYXRhW2ldLnJvd1NwYW4gPSByb3dbaV0ucm93U3BhbjsKCgkJCS8vIGZpeCBjb2xTcGFucwoJCQlpZiAocm93W2ldLmNvbFNwYW4gJiYgcm93W2ldLmNvbFNwYW4gPiAxKSB7CgkJCQlmb3IgKHZhciBqID0gMTsgaiA8IHJvd1tpXS5yb3dTcGFuOyBqKyspIHsKCQkJCQl0aGlzLnRhYmxlTm9kZS50YWJsZS5ib2R5W3Jvd0luZGV4ICsgal1baV0uX2NvbFNwYW4gPSByb3dbaV0uY29sU3BhbjsKCQkJCX0KCQkJfQoJCX0KCgkJaWYgKHRoaXMucm93U3BhbkRhdGFbaV0ucm93U3BhbiA+IDApIHsKCQkJdGhpcy5yb3dTcGFuRGF0YVtpXS5yb3dTcGFuLS07CgkJfQoJfQoKCXRoaXMuZHJhd0hvcml6b250YWxMaW5lKHJvd0luZGV4ICsgMSwgd3JpdGVyKTsKCglpZiAodGhpcy5oZWFkZXJSb3dzICYmIHJvd0luZGV4ID09PSB0aGlzLmhlYWRlclJvd3MgLSAxKSB7CgkJdGhpcy5oZWFkZXJSZXBlYXRhYmxlID0gd3JpdGVyLmN1cnJlbnRCbG9ja1RvUmVwZWF0YWJsZSgpOwoJfQoKCWlmICh0aGlzLmRvbnRCcmVha1Jvd3MpIHsKCQl3cml0ZXIudHJhY2tlci5hdXRvKCdwYWdlQ2hhbmdlZCcsCgkJCWZ1bmN0aW9uICgpIHsKCQkJCWlmICghc2VsZi5oZWFkZXJSb3dzICYmIHNlbGYubGF5b3V0LmhMaW5lV2hlbkJyb2tlbiAhPT0gZmFsc2UpIHsKCQkJCQlzZWxmLmRyYXdIb3Jpem9udGFsTGluZShyb3dJbmRleCwgd3JpdGVyKTsKCQkJCX0KCQkJfSwKCQkJZnVuY3Rpb24gKCkgewoJCQkJd3JpdGVyLmNvbW1pdFVuYnJlYWthYmxlQmxvY2soKTsKCQkJfQoJCSk7Cgl9CgoJaWYgKHRoaXMuaGVhZGVyUmVwZWF0YWJsZSAmJiAocm93SW5kZXggPT09ICh0aGlzLnJvd3NXaXRob3V0UGFnZUJyZWFrIC0gMSkgfHwgcm93SW5kZXggPT09IHRoaXMudGFibGVOb2RlLnRhYmxlLmJvZHkubGVuZ3RoIC0gMSkpIHsKCQl0aGlzLmhlYWRlclJlcGVhdGFibGVIZWlnaHQgPSB0aGlzLmhlYWRlclJlcGVhdGFibGUuaGVpZ2h0OwoJCXdyaXRlci5jb21taXRVbmJyZWFrYWJsZUJsb2NrKCk7CgkJd3JpdGVyLnB1c2hUb1JlcGVhdGFibGVzKHRoaXMuaGVhZGVyUmVwZWF0YWJsZSk7CgkJdGhpcy5jbGVhblVwUmVwZWF0YWJsZXMgPSB0cnVlOwoJCXRoaXMuaGVhZGVyUmVwZWF0YWJsZSA9IG51bGw7Cgl9CgoJZnVuY3Rpb24gZ2V0TGluZVhzKCkgewoJCXZhciByZXN1bHQgPSBbXTsKCQl2YXIgY29scyA9IDA7CgoJCWZvciAodmFyIGkgPSAwLCBsID0gc2VsZi50YWJsZU5vZGUudGFibGUuYm9keVtyb3dJbmRleF0ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJCWlmICghY29scykgewoJCQkJcmVzdWx0LnB1c2goe3g6IHNlbGYucm93U3BhbkRhdGFbaV0ubGVmdCwgaW5kZXg6IGl9KTsKCgkJCQl2YXIgaXRlbSA9IHNlbGYudGFibGVOb2RlLnRhYmxlLmJvZHlbcm93SW5kZXhdW2ldOwoJCQkJY29scyA9IChpdGVtLl9jb2xTcGFuIHx8IGl0ZW0uY29sU3BhbiB8fCAwKTsKCQkJfQoJCQlpZiAoY29scyA+IDApIHsKCQkJCWNvbHMtLTsKCQkJfQoJCX0KCgkJcmVzdWx0LnB1c2goe3g6IHNlbGYucm93U3BhbkRhdGFbc2VsZi5yb3dTcGFuRGF0YS5sZW5ndGggLSAxXS5sZWZ0LCBpbmRleDogc2VsZi5yb3dTcGFuRGF0YS5sZW5ndGggLSAxfSk7CgoJCXJldHVybiByZXN1bHQ7Cgl9Cn07Cgptb2R1bGUuZXhwb3J0cyA9IFRhYmxlUHJvY2Vzc29yOwoKCi8qKiovIH0pLAovKiAxMzggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKEJ1ZmZlcikgey8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CgovKgpQREZEb2N1bWVudCAtIHJlcHJlc2VudHMgYW4gZW50aXJlIFBERiBkb2N1bWVudApCeSBEZXZvbiBHb3ZldHQKICovCgooZnVuY3Rpb24oKSB7CiAgdmFyIFBERkRvY3VtZW50LCBQREZPYmplY3QsIFBERlBhZ2UsIFBERlJlZmVyZW5jZSwgZnMsIHN0cmVhbSwKICAgIGV4dGVuZCA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsgZm9yICh2YXIga2V5IGluIHBhcmVudCkgeyBpZiAoaGFzUHJvcC5jYWxsKHBhcmVudCwga2V5KSkgY2hpbGRba2V5XSA9IHBhcmVudFtrZXldOyB9IGZ1bmN0aW9uIGN0b3IoKSB7IHRoaXMuY29uc3RydWN0b3IgPSBjaGlsZDsgfSBjdG9yLnByb3RvdHlwZSA9IHBhcmVudC5wcm90b3R5cGU7IGNoaWxkLnByb3RvdHlwZSA9IG5ldyBjdG9yKCk7IGNoaWxkLl9fc3VwZXJfXyA9IHBhcmVudC5wcm90b3R5cGU7IHJldHVybiBjaGlsZDsgfSwKICAgIGhhc1Byb3AgPSB7fS5oYXNPd25Qcm9wZXJ0eTsKCiAgc3RyZWFtID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7CgogIGZzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTsKCiAgUERGT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNik7CgogIFBERlJlZmVyZW5jZSA9IF9fd2VicGFja19yZXF1aXJlX18oODcpOwoKICBQREZQYWdlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjEpOwoKICBQREZEb2N1bWVudCA9IChmdW5jdGlvbihzdXBlckNsYXNzKSB7CiAgICB2YXIgbWl4aW47CgogICAgZXh0ZW5kKFBERkRvY3VtZW50LCBzdXBlckNsYXNzKTsKCiAgICBmdW5jdGlvbiBQREZEb2N1bWVudChvcHRpb25zMSkgewogICAgICB2YXIga2V5LCByZWYxLCByZWYyLCB2YWw7CiAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMxICE9IG51bGwgPyBvcHRpb25zMSA6IHt9OwogICAgICBQREZEb2N1bWVudC5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgdGhpcy52ZXJzaW9uID0gMS4zOwogICAgICB0aGlzLmNvbXByZXNzID0gKHJlZjEgPSB0aGlzLm9wdGlvbnMuY29tcHJlc3MpICE9IG51bGwgPyByZWYxIDogdHJ1ZTsKICAgICAgdGhpcy5fcGFnZUJ1ZmZlciA9IFtdOwogICAgICB0aGlzLl9wYWdlQnVmZmVyU3RhcnQgPSAwOwogICAgICB0aGlzLl9vZmZzZXRzID0gW107CiAgICAgIHRoaXMuX3dhaXRpbmcgPSAwOwogICAgICB0aGlzLl9lbmRlZCA9IGZhbHNlOwogICAgICB0aGlzLl9vZmZzZXQgPSAwOwogICAgICB0aGlzLl9yb290ID0gdGhpcy5yZWYoewogICAgICAgIFR5cGU6ICdDYXRhbG9nJywKICAgICAgICBQYWdlczogdGhpcy5yZWYoewogICAgICAgICAgVHlwZTogJ1BhZ2VzJywKICAgICAgICAgIENvdW50OiAwLAogICAgICAgICAgS2lkczogW10KICAgICAgICB9KQogICAgICB9KTsKICAgICAgdGhpcy5wYWdlID0gbnVsbDsKICAgICAgdGhpcy5pbml0Q29sb3IoKTsKICAgICAgdGhpcy5pbml0VmVjdG9yKCk7CiAgICAgIHRoaXMuaW5pdEZvbnRzKCk7CiAgICAgIHRoaXMuaW5pdFRleHQoKTsKICAgICAgdGhpcy5pbml0SW1hZ2VzKCk7CiAgICAgIHRoaXMuaW5mbyA9IHsKICAgICAgICBQcm9kdWNlcjogJ1BERktpdCcsCiAgICAgICAgQ3JlYXRvcjogJ1BERktpdCcsCiAgICAgICAgQ3JlYXRpb25EYXRlOiBuZXcgRGF0ZSgpCiAgICAgIH07CiAgICAgIGlmICh0aGlzLm9wdGlvbnMuaW5mbykgewogICAgICAgIHJlZjIgPSB0aGlzLm9wdGlvbnMuaW5mbzsKICAgICAgICBmb3IgKGtleSBpbiByZWYyKSB7CiAgICAgICAgICB2YWwgPSByZWYyW2tleV07CiAgICAgICAgICB0aGlzLmluZm9ba2V5XSA9IHZhbDsKICAgICAgICB9CiAgICAgIH0KICAgICAgdGhpcy5fd3JpdGUoIiVQREYtIiArIHRoaXMudmVyc2lvbik7CiAgICAgIHRoaXMuX3dyaXRlKCIlXHhGRlx4RkZceEZGXHhGRiIpOwogICAgICBpZiAodGhpcy5vcHRpb25zLmF1dG9GaXJzdFBhZ2UgIT09IGZhbHNlKSB7CiAgICAgICAgdGhpcy5hZGRQYWdlKCk7CiAgICAgIH0KICAgIH0KCiAgICBtaXhpbiA9IGZ1bmN0aW9uKG1ldGhvZHMpIHsKICAgICAgdmFyIG1ldGhvZCwgbmFtZSwgcmVzdWx0czsKICAgICAgcmVzdWx0cyA9IFtdOwogICAgICBmb3IgKG5hbWUgaW4gbWV0aG9kcykgewogICAgICAgIG1ldGhvZCA9IG1ldGhvZHNbbmFtZV07CiAgICAgICAgcmVzdWx0cy5wdXNoKFBERkRvY3VtZW50LnByb3RvdHlwZVtuYW1lXSA9IG1ldGhvZCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9OwoKICAgIG1peGluKF9fd2VicGFja19yZXF1aXJlX18oMTYyKSk7CgogICAgbWl4aW4oX193ZWJwYWNrX3JlcXVpcmVfXygxNjQpKTsKCiAgICBtaXhpbihfX3dlYnBhY2tfcmVxdWlyZV9fKDE2NikpOwoKICAgIG1peGluKF9fd2VicGFja19yZXF1aXJlX18oMjk1KSk7CgogICAgbWl4aW4oX193ZWJwYWNrX3JlcXVpcmVfXygyOTcpKTsKCiAgICBtaXhpbihfX3dlYnBhY2tfcmVxdWlyZV9fKDMwMikpOwoKICAgIFBERkRvY3VtZW50LnByb3RvdHlwZS5hZGRQYWdlID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICB2YXIgcGFnZXM7CiAgICAgIGlmIChvcHRpb25zID09IG51bGwpIHsKICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zOwogICAgICB9CiAgICAgIGlmICghdGhpcy5vcHRpb25zLmJ1ZmZlclBhZ2VzKSB7CiAgICAgICAgdGhpcy5mbHVzaFBhZ2VzKCk7CiAgICAgIH0KICAgICAgdGhpcy5wYWdlID0gbmV3IFBERlBhZ2UodGhpcywgb3B0aW9ucyk7CiAgICAgIHRoaXMuX3BhZ2VCdWZmZXIucHVzaCh0aGlzLnBhZ2UpOwogICAgICBwYWdlcyA9IHRoaXMuX3Jvb3QuZGF0YS5QYWdlcy5kYXRhOwogICAgICBwYWdlcy5LaWRzLnB1c2godGhpcy5wYWdlLmRpY3Rpb25hcnkpOwogICAgICBwYWdlcy5Db3VudCsrOwogICAgICB0aGlzLnggPSB0aGlzLnBhZ2UubWFyZ2lucy5sZWZ0OwogICAgICB0aGlzLnkgPSB0aGlzLnBhZ2UubWFyZ2lucy50b3A7CiAgICAgIHRoaXMuX2N0bSA9IFsxLCAwLCAwLCAxLCAwLCAwXTsKICAgICAgdGhpcy50cmFuc2Zvcm0oMSwgMCwgMCwgLTEsIDAsIHRoaXMucGFnZS5oZWlnaHQpOwogICAgICB0aGlzLmVtaXQoJ3BhZ2VBZGRlZCcpOwogICAgICByZXR1cm4gdGhpczsKICAgIH07CgogICAgUERGRG9jdW1lbnQucHJvdG90eXBlLmJ1ZmZlcmVkUGFnZVJhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiB7CiAgICAgICAgc3RhcnQ6IHRoaXMuX3BhZ2VCdWZmZXJTdGFydCwKICAgICAgICBjb3VudDogdGhpcy5fcGFnZUJ1ZmZlci5sZW5ndGgKICAgICAgfTsKICAgIH07CgogICAgUERGRG9jdW1lbnQucHJvdG90eXBlLnN3aXRjaFRvUGFnZSA9IGZ1bmN0aW9uKG4pIHsKICAgICAgdmFyIHBhZ2U7CiAgICAgIGlmICghKHBhZ2UgPSB0aGlzLl9wYWdlQnVmZmVyW24gLSB0aGlzLl9wYWdlQnVmZmVyU3RhcnRdKSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcigic3dpdGNoVG9QYWdlKCIgKyBuICsgIikgb3V0IG9mIGJvdW5kcywgY3VycmVudCBidWZmZXIgY292ZXJzIHBhZ2VzICIgKyB0aGlzLl9wYWdlQnVmZmVyU3RhcnQgKyAiIHRvICIgKyAodGhpcy5fcGFnZUJ1ZmZlclN0YXJ0ICsgdGhpcy5fcGFnZUJ1ZmZlci5sZW5ndGggLSAxKSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMucGFnZSA9IHBhZ2U7CiAgICB9OwoKICAgIFBERkRvY3VtZW50LnByb3RvdHlwZS5mbHVzaFBhZ2VzID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBpLCBsZW4sIHBhZ2UsIHBhZ2VzOwogICAgICBwYWdlcyA9IHRoaXMuX3BhZ2VCdWZmZXI7CiAgICAgIHRoaXMuX3BhZ2VCdWZmZXIgPSBbXTsKICAgICAgdGhpcy5fcGFnZUJ1ZmZlclN0YXJ0ICs9IHBhZ2VzLmxlbmd0aDsKICAgICAgZm9yIChpID0gMCwgbGVuID0gcGFnZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICBwYWdlID0gcGFnZXNbaV07CiAgICAgICAgcGFnZS5lbmQoKTsKICAgICAgfQogICAgfTsKCiAgICBQREZEb2N1bWVudC5wcm90b3R5cGUucmVmID0gZnVuY3Rpb24oZGF0YSkgewogICAgICB2YXIgcmVmOwogICAgICByZWYgPSBuZXcgUERGUmVmZXJlbmNlKHRoaXMsIHRoaXMuX29mZnNldHMubGVuZ3RoICsgMSwgZGF0YSk7CiAgICAgIHRoaXMuX29mZnNldHMucHVzaChudWxsKTsKICAgICAgdGhpcy5fd2FpdGluZysrOwogICAgICByZXR1cm4gcmVmOwogICAgfTsKCiAgICBQREZEb2N1bWVudC5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbigpIHt9OwoKICAgIFBERkRvY3VtZW50LnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbihkYXRhKSB7CiAgICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKGRhdGEpKSB7CiAgICAgICAgZGF0YSA9IG5ldyBCdWZmZXIoZGF0YSArICdcbicsICdiaW5hcnknKTsKICAgICAgfQogICAgICB0aGlzLnB1c2goZGF0YSk7CiAgICAgIHJldHVybiB0aGlzLl9vZmZzZXQgKz0gZGF0YS5sZW5ndGg7CiAgICB9OwoKICAgIFBERkRvY3VtZW50LnByb3RvdHlwZS5hZGRDb250ZW50ID0gZnVuY3Rpb24oZGF0YSkgewogICAgICB0aGlzLnBhZ2Uud3JpdGUoZGF0YSk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfTsKCiAgICBQREZEb2N1bWVudC5wcm90b3R5cGUuX3JlZkVuZCA9IGZ1bmN0aW9uKHJlZikgewogICAgICB0aGlzLl9vZmZzZXRzW3JlZi5pZCAtIDFdID0gcmVmLm9mZnNldDsKICAgICAgaWYgKC0tdGhpcy5fd2FpdGluZyA9PT0gMCAmJiB0aGlzLl9lbmRlZCkgewogICAgICAgIHRoaXMuX2ZpbmFsaXplKCk7CiAgICAgICAgcmV0dXJuIHRoaXMuX2VuZGVkID0gZmFsc2U7CiAgICAgIH0KICAgIH07CgogICAgUERGRG9jdW1lbnQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oZmlsZW5hbWUsIGZuKSB7CiAgICAgIHZhciBlcnI7CiAgICAgIGVyciA9IG5ldyBFcnJvcignUERGRG9jdW1lbnQjd3JpdGUgaXMgZGVwcmVjYXRlZCwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFBERktpdC4gUGxlYXNlIHBpcGUgdGhlIGRvY3VtZW50IGludG8gYSBOb2RlIHN0cmVhbS4nKTsKICAgICAgY29uc29sZS53YXJuKGVyci5zdGFjayk7CiAgICAgIHRoaXMucGlwZShmcy5jcmVhdGVXcml0ZVN0cmVhbShmaWxlbmFtZSkpOwogICAgICB0aGlzLmVuZCgpOwogICAgICByZXR1cm4gdGhpcy5vbmNlKCdlbmQnLCBmbik7CiAgICB9OwoKICAgIFBERkRvY3VtZW50LnByb3RvdHlwZS5vdXRwdXQgPSBmdW5jdGlvbihmbikgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BERkRvY3VtZW50I291dHB1dCBpcyBkZXByZWNhdGVkLCBhbmQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFBERktpdC4gUGxlYXNlIHBpcGUgdGhlIGRvY3VtZW50IGludG8gYSBOb2RlIHN0cmVhbS4nKTsKICAgIH07CgogICAgUERGRG9jdW1lbnQucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgZm9udCwga2V5LCBuYW1lLCByZWYxLCByZWYyLCB2YWw7CiAgICAgIHRoaXMuZmx1c2hQYWdlcygpOwogICAgICB0aGlzLl9pbmZvID0gdGhpcy5yZWYoKTsKICAgICAgcmVmMSA9IHRoaXMuaW5mbzsKICAgICAgZm9yIChrZXkgaW4gcmVmMSkgewogICAgICAgIHZhbCA9IHJlZjFba2V5XTsKICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgIHZhbCA9IG5ldyBTdHJpbmcodmFsKTsKICAgICAgICB9CiAgICAgICAgdGhpcy5faW5mby5kYXRhW2tleV0gPSB2YWw7CiAgICAgIH0KICAgICAgdGhpcy5faW5mby5lbmQoKTsKICAgICAgcmVmMiA9IHRoaXMuX2ZvbnRGYW1pbGllczsKICAgICAgZm9yIChuYW1lIGluIHJlZjIpIHsKICAgICAgICBmb250ID0gcmVmMltuYW1lXTsKICAgICAgICBmb250LmZpbmFsaXplKCk7CiAgICAgIH0KICAgICAgdGhpcy5fcm9vdC5lbmQoKTsKICAgICAgdGhpcy5fcm9vdC5kYXRhLlBhZ2VzLmVuZCgpOwogICAgICBpZiAodGhpcy5fd2FpdGluZyA9PT0gMCkgewogICAgICAgIHJldHVybiB0aGlzLl9maW5hbGl6ZSgpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLl9lbmRlZCA9IHRydWU7CiAgICAgIH0KICAgIH07CgogICAgUERGRG9jdW1lbnQucHJvdG90eXBlLl9maW5hbGl6ZSA9IGZ1bmN0aW9uKGZuKSB7CiAgICAgIHZhciBpLCBsZW4sIG9mZnNldCwgcmVmMSwgeFJlZk9mZnNldDsKICAgICAgeFJlZk9mZnNldCA9IHRoaXMuX29mZnNldDsKICAgICAgdGhpcy5fd3JpdGUoInhyZWYiKTsKICAgICAgdGhpcy5fd3JpdGUoIjAgIiArICh0aGlzLl9vZmZzZXRzLmxlbmd0aCArIDEpKTsKICAgICAgdGhpcy5fd3JpdGUoIjAwMDAwMDAwMDAgNjU1MzUgZiAiKTsKICAgICAgcmVmMSA9IHRoaXMuX29mZnNldHM7CiAgICAgIGZvciAoaSA9IDAsIGxlbiA9IHJlZjEubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICBvZmZzZXQgPSByZWYxW2ldOwogICAgICAgIG9mZnNldCA9ICgnMDAwMDAwMDAwMCcgKyBvZmZzZXQpLnNsaWNlKC0xMCk7CiAgICAgICAgdGhpcy5fd3JpdGUob2Zmc2V0ICsgJyAwMDAwMCBuICcpOwogICAgICB9CiAgICAgIHRoaXMuX3dyaXRlKCd0cmFpbGVyJyk7CiAgICAgIHRoaXMuX3dyaXRlKFBERk9iamVjdC5jb252ZXJ0KHsKICAgICAgICBTaXplOiB0aGlzLl9vZmZzZXRzLmxlbmd0aCArIDEsCiAgICAgICAgUm9vdDogdGhpcy5fcm9vdCwKICAgICAgICBJbmZvOiB0aGlzLl9pbmZvCiAgICAgIH0pKTsKICAgICAgdGhpcy5fd3JpdGUoJ3N0YXJ0eHJlZicpOwogICAgICB0aGlzLl93cml0ZSgiIiArIHhSZWZPZmZzZXQpOwogICAgICB0aGlzLl93cml0ZSgnJSVFT0YnKTsKICAgICAgcmV0dXJuIHRoaXMucHVzaChudWxsKTsKICAgIH07CgogICAgUERGRG9jdW1lbnQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiAiW29iamVjdCBQREZEb2N1bWVudF0iOwogICAgfTsKCiAgICByZXR1cm4gUERGRG9jdW1lbnQ7CgogIH0pKHN0cmVhbS5SZWFkYWJsZSk7CgogIG1vZHVsZS5leHBvcnRzID0gUERGRG9jdW1lbnQ7Cgp9KS5jYWxsKHRoaXMpOwoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyKSkKCi8qKiovIH0pLAovKiAxMzkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKLyogKGlnbm9yZWQpICovCgovKioqLyB9KSwKLyogMTQwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgpmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpOyB9IH0KCnZhciBCdWZmZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMzKS5CdWZmZXI7CnZhciB1dGlsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDEpOwoKZnVuY3Rpb24gY29weUJ1ZmZlcihzcmMsIHRhcmdldCwgb2Zmc2V0KSB7CiAgc3JjLmNvcHkodGFyZ2V0LCBvZmZzZXQpOwp9Cgptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBCdWZmZXJMaXN0KCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJ1ZmZlckxpc3QpOwoKICAgIHRoaXMuaGVhZCA9IG51bGw7CiAgICB0aGlzLnRhaWwgPSBudWxsOwogICAgdGhpcy5sZW5ndGggPSAwOwogIH0KCiAgQnVmZmVyTGlzdC5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIHB1c2godikgewogICAgdmFyIGVudHJ5ID0geyBkYXRhOiB2LCBuZXh0OiBudWxsIH07CiAgICBpZiAodGhpcy5sZW5ndGggPiAwKSB0aGlzLnRhaWwubmV4dCA9IGVudHJ5O2Vsc2UgdGhpcy5oZWFkID0gZW50cnk7CiAgICB0aGlzLnRhaWwgPSBlbnRyeTsKICAgICsrdGhpcy5sZW5ndGg7CiAgfTsKCiAgQnVmZmVyTGlzdC5wcm90b3R5cGUudW5zaGlmdCA9IGZ1bmN0aW9uIHVuc2hpZnQodikgewogICAgdmFyIGVudHJ5ID0geyBkYXRhOiB2LCBuZXh0OiB0aGlzLmhlYWQgfTsKICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgdGhpcy50YWlsID0gZW50cnk7CiAgICB0aGlzLmhlYWQgPSBlbnRyeTsKICAgICsrdGhpcy5sZW5ndGg7CiAgfTsKCiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuc2hpZnQgPSBmdW5jdGlvbiBzaGlmdCgpIHsKICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwogICAgdmFyIHJldCA9IHRoaXMuaGVhZC5kYXRhOwogICAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO2Vsc2UgdGhpcy5oZWFkID0gdGhpcy5oZWFkLm5leHQ7CiAgICAtLXRoaXMubGVuZ3RoOwogICAgcmV0dXJuIHJldDsKICB9OwoKICBCdWZmZXJMaXN0LnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uIGNsZWFyKCkgewogICAgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbnVsbDsKICAgIHRoaXMubGVuZ3RoID0gMDsKICB9OwoKICBCdWZmZXJMaXN0LnByb3RvdHlwZS5qb2luID0gZnVuY3Rpb24gam9pbihzKSB7CiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybiAnJzsKICAgIHZhciBwID0gdGhpcy5oZWFkOwogICAgdmFyIHJldCA9ICcnICsgcC5kYXRhOwogICAgd2hpbGUgKHAgPSBwLm5leHQpIHsKICAgICAgcmV0ICs9IHMgKyBwLmRhdGE7CiAgICB9cmV0dXJuIHJldDsKICB9OwoKICBCdWZmZXJMaXN0LnByb3RvdHlwZS5jb25jYXQgPSBmdW5jdGlvbiBjb25jYXQobikgewogICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gQnVmZmVyLmFsbG9jKDApOwogICAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSByZXR1cm4gdGhpcy5oZWFkLmRhdGE7CiAgICB2YXIgcmV0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKG4gPj4+IDApOwogICAgdmFyIHAgPSB0aGlzLmhlYWQ7CiAgICB2YXIgaSA9IDA7CiAgICB3aGlsZSAocCkgewogICAgICBjb3B5QnVmZmVyKHAuZGF0YSwgcmV0LCBpKTsKICAgICAgaSArPSBwLmRhdGEubGVuZ3RoOwogICAgICBwID0gcC5uZXh0OwogICAgfQogICAgcmV0dXJuIHJldDsKICB9OwoKICByZXR1cm4gQnVmZmVyTGlzdDsKfSgpOwoKaWYgKHV0aWwgJiYgdXRpbC5pbnNwZWN0ICYmIHV0aWwuaW5zcGVjdC5jdXN0b20pIHsKICBtb2R1bGUuZXhwb3J0cy5wcm90b3R5cGVbdXRpbC5pbnNwZWN0LmN1c3RvbV0gPSBmdW5jdGlvbiAoKSB7CiAgICB2YXIgb2JqID0gdXRpbC5pbnNwZWN0KHsgbGVuZ3RoOiB0aGlzLmxlbmd0aCB9KTsKICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnICcgKyBvYmo7CiAgfTsKfQoKLyoqKi8gfSksCi8qIDE0MSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgovKiAoaWdub3JlZCkgKi8KCi8qKiovIH0pLAovKiAxNDIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKGdsb2JhbCkge3ZhciBhcHBseSA9IEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseTsKCi8vIERPTSBBUElzLCBmb3IgY29tcGxldGVuZXNzCgpleHBvcnRzLnNldFRpbWVvdXQgPSBmdW5jdGlvbigpIHsKICByZXR1cm4gbmV3IFRpbWVvdXQoYXBwbHkuY2FsbChzZXRUaW1lb3V0LCB3aW5kb3csIGFyZ3VtZW50cyksIGNsZWFyVGltZW91dCk7Cn07CmV4cG9ydHMuc2V0SW50ZXJ2YWwgPSBmdW5jdGlvbigpIHsKICByZXR1cm4gbmV3IFRpbWVvdXQoYXBwbHkuY2FsbChzZXRJbnRlcnZhbCwgd2luZG93LCBhcmd1bWVudHMpLCBjbGVhckludGVydmFsKTsKfTsKZXhwb3J0cy5jbGVhclRpbWVvdXQgPQpleHBvcnRzLmNsZWFySW50ZXJ2YWwgPSBmdW5jdGlvbih0aW1lb3V0KSB7CiAgaWYgKHRpbWVvdXQpIHsKICAgIHRpbWVvdXQuY2xvc2UoKTsKICB9Cn07CgpmdW5jdGlvbiBUaW1lb3V0KGlkLCBjbGVhckZuKSB7CiAgdGhpcy5faWQgPSBpZDsKICB0aGlzLl9jbGVhckZuID0gY2xlYXJGbjsKfQpUaW1lb3V0LnByb3RvdHlwZS51bnJlZiA9IFRpbWVvdXQucHJvdG90eXBlLnJlZiA9IGZ1bmN0aW9uKCkge307ClRpbWVvdXQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKSB7CiAgdGhpcy5fY2xlYXJGbi5jYWxsKHdpbmRvdywgdGhpcy5faWQpOwp9OwoKLy8gRG9lcyBub3Qgc3RhcnQgdGhlIHRpbWUsIGp1c3Qgc2V0cyB1cCB0aGUgbWVtYmVycyBuZWVkZWQuCmV4cG9ydHMuZW5yb2xsID0gZnVuY3Rpb24oaXRlbSwgbXNlY3MpIHsKICBjbGVhclRpbWVvdXQoaXRlbS5faWRsZVRpbWVvdXRJZCk7CiAgaXRlbS5faWRsZVRpbWVvdXQgPSBtc2VjczsKfTsKCmV4cG9ydHMudW5lbnJvbGwgPSBmdW5jdGlvbihpdGVtKSB7CiAgY2xlYXJUaW1lb3V0KGl0ZW0uX2lkbGVUaW1lb3V0SWQpOwogIGl0ZW0uX2lkbGVUaW1lb3V0ID0gLTE7Cn07CgpleHBvcnRzLl91bnJlZkFjdGl2ZSA9IGV4cG9ydHMuYWN0aXZlID0gZnVuY3Rpb24oaXRlbSkgewogIGNsZWFyVGltZW91dChpdGVtLl9pZGxlVGltZW91dElkKTsKCiAgdmFyIG1zZWNzID0gaXRlbS5faWRsZVRpbWVvdXQ7CiAgaWYgKG1zZWNzID49IDApIHsKICAgIGl0ZW0uX2lkbGVUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uIG9uVGltZW91dCgpIHsKICAgICAgaWYgKGl0ZW0uX29uVGltZW91dCkKICAgICAgICBpdGVtLl9vblRpbWVvdXQoKTsKICAgIH0sIG1zZWNzKTsKICB9Cn07CgovLyBzZXRpbW1lZGlhdGUgYXR0YWNoZXMgaXRzZWxmIHRvIHRoZSBnbG9iYWwgb2JqZWN0Cl9fd2VicGFja19yZXF1aXJlX18oMTQzKTsKLy8gT24gc29tZSBleG90aWMgZW52aXJvbm1lbnRzLCBpdCdzIG5vdCBjbGVhciB3aGljaCBvYmplY3QgYHNldGltbWVpZGF0ZWAgd2FzCi8vIGFibGUgdG8gaW5zdGFsbCBvbnRvLiAgU2VhcmNoIGVhY2ggcG9zc2liaWxpdHkgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlCi8vIGBzZXRpbW1lZGlhdGVgIGxpYnJhcnkuCmV4cG9ydHMuc2V0SW1tZWRpYXRlID0gKHR5cGVvZiBzZWxmICE9PSAidW5kZWZpbmVkIiAmJiBzZWxmLnNldEltbWVkaWF0ZSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAodHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgJiYgZ2xvYmFsLnNldEltbWVkaWF0ZSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAodGhpcyAmJiB0aGlzLnNldEltbWVkaWF0ZSk7CmV4cG9ydHMuY2xlYXJJbW1lZGlhdGUgPSAodHlwZW9mIHNlbGYgIT09ICJ1bmRlZmluZWQiICYmIHNlbGYuY2xlYXJJbW1lZGlhdGUpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgJiYgZ2xvYmFsLmNsZWFySW1tZWRpYXRlKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMgJiYgdGhpcy5jbGVhckltbWVkaWF0ZSk7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyg3KSkpCgovKioqLyB9KSwKLyogMTQzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwsIHByb2Nlc3MpIHsoZnVuY3Rpb24gKGdsb2JhbCwgdW5kZWZpbmVkKSB7CiAgICAidXNlIHN0cmljdCI7CgogICAgaWYgKGdsb2JhbC5zZXRJbW1lZGlhdGUpIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIG5leHRIYW5kbGUgPSAxOyAvLyBTcGVjIHNheXMgZ3JlYXRlciB0aGFuIHplcm8KICAgIHZhciB0YXNrc0J5SGFuZGxlID0ge307CiAgICB2YXIgY3VycmVudGx5UnVubmluZ0FUYXNrID0gZmFsc2U7CiAgICB2YXIgZG9jID0gZ2xvYmFsLmRvY3VtZW50OwogICAgdmFyIHJlZ2lzdGVySW1tZWRpYXRlOwoKICAgIGZ1bmN0aW9uIHNldEltbWVkaWF0ZShjYWxsYmFjaykgewogICAgICAvLyBDYWxsYmFjayBjYW4gZWl0aGVyIGJlIGEgZnVuY3Rpb24gb3IgYSBzdHJpbmcKICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikgewogICAgICAgIGNhbGxiYWNrID0gbmV3IEZ1bmN0aW9uKCIiICsgY2FsbGJhY2spOwogICAgICB9CiAgICAgIC8vIENvcHkgZnVuY3Rpb24gYXJndW1lbnRzCiAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2kgKyAxXTsKICAgICAgfQogICAgICAvLyBTdG9yZSBhbmQgcmVnaXN0ZXIgdGhlIHRhc2sKICAgICAgdmFyIHRhc2sgPSB7IGNhbGxiYWNrOiBjYWxsYmFjaywgYXJnczogYXJncyB9OwogICAgICB0YXNrc0J5SGFuZGxlW25leHRIYW5kbGVdID0gdGFzazsKICAgICAgcmVnaXN0ZXJJbW1lZGlhdGUobmV4dEhhbmRsZSk7CiAgICAgIHJldHVybiBuZXh0SGFuZGxlKys7CiAgICB9CgogICAgZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaGFuZGxlKSB7CiAgICAgICAgZGVsZXRlIHRhc2tzQnlIYW5kbGVbaGFuZGxlXTsKICAgIH0KCiAgICBmdW5jdGlvbiBydW4odGFzaykgewogICAgICAgIHZhciBjYWxsYmFjayA9IHRhc2suY2FsbGJhY2s7CiAgICAgICAgdmFyIGFyZ3MgPSB0YXNrLmFyZ3M7CiAgICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkgewogICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAyOgogICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdLCBhcmdzWzFdKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAzOgogICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkodW5kZWZpbmVkLCBhcmdzKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIHJ1bklmUHJlc2VudChoYW5kbGUpIHsKICAgICAgICAvLyBGcm9tIHRoZSBzcGVjOiAiV2FpdCB1bnRpbCBhbnkgaW52b2NhdGlvbnMgb2YgdGhpcyBhbGdvcml0aG0gc3RhcnRlZCBiZWZvcmUgdGhpcyBvbmUgaGF2ZSBjb21wbGV0ZWQuIgogICAgICAgIC8vIFNvIGlmIHdlJ3JlIGN1cnJlbnRseSBydW5uaW5nIGEgdGFzaywgd2UnbGwgbmVlZCB0byBkZWxheSB0aGlzIGludm9jYXRpb24uCiAgICAgICAgaWYgKGN1cnJlbnRseVJ1bm5pbmdBVGFzaykgewogICAgICAgICAgICAvLyBEZWxheSBieSBkb2luZyBhIHNldFRpbWVvdXQuIHNldEltbWVkaWF0ZSB3YXMgdHJpZWQgaW5zdGVhZCwgYnV0IGluIEZpcmVmb3ggNyBpdCBnZW5lcmF0ZWQgYQogICAgICAgICAgICAvLyAidG9vIG11Y2ggcmVjdXJzaW9uIiBlcnJvci4KICAgICAgICAgICAgc2V0VGltZW91dChydW5JZlByZXNlbnQsIDAsIGhhbmRsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyIHRhc2sgPSB0YXNrc0J5SGFuZGxlW2hhbmRsZV07CiAgICAgICAgICAgIGlmICh0YXNrKSB7CiAgICAgICAgICAgICAgICBjdXJyZW50bHlSdW5uaW5nQVRhc2sgPSB0cnVlOwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBydW4odGFzayk7CiAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgIGNsZWFySW1tZWRpYXRlKGhhbmRsZSk7CiAgICAgICAgICAgICAgICAgICAgY3VycmVudGx5UnVubmluZ0FUYXNrID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gaW5zdGFsbE5leHRUaWNrSW1wbGVtZW50YXRpb24oKSB7CiAgICAgICAgcmVnaXN0ZXJJbW1lZGlhdGUgPSBmdW5jdGlvbihoYW5kbGUpIHsKICAgICAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7IHJ1bklmUHJlc2VudChoYW5kbGUpOyB9KTsKICAgICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIGNhblVzZVBvc3RNZXNzYWdlKCkgewogICAgICAgIC8vIFRoZSB0ZXN0IGFnYWluc3QgYGltcG9ydFNjcmlwdHNgIHByZXZlbnRzIHRoaXMgaW1wbGVtZW50YXRpb24gZnJvbSBiZWluZyBpbnN0YWxsZWQgaW5zaWRlIGEgd2ViIHdvcmtlciwKICAgICAgICAvLyB3aGVyZSBgZ2xvYmFsLnBvc3RNZXNzYWdlYCBtZWFucyBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQgYW5kIGNhbid0IGJlIHVzZWQgZm9yIHRoaXMgcHVycG9zZS4KICAgICAgICBpZiAoZ2xvYmFsLnBvc3RNZXNzYWdlICYmICFnbG9iYWwuaW1wb3J0U2NyaXB0cykgewogICAgICAgICAgICB2YXIgcG9zdE1lc3NhZ2VJc0FzeW5jaHJvbm91cyA9IHRydWU7CiAgICAgICAgICAgIHZhciBvbGRPbk1lc3NhZ2UgPSBnbG9iYWwub25tZXNzYWdlOwogICAgICAgICAgICBnbG9iYWwub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBwb3N0TWVzc2FnZUlzQXN5bmNocm9ub3VzID0gZmFsc2U7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZSgiIiwgIioiKTsKICAgICAgICAgICAgZ2xvYmFsLm9ubWVzc2FnZSA9IG9sZE9uTWVzc2FnZTsKICAgICAgICAgICAgcmV0dXJuIHBvc3RNZXNzYWdlSXNBc3luY2hyb25vdXM7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGluc3RhbGxQb3N0TWVzc2FnZUltcGxlbWVudGF0aW9uKCkgewogICAgICAgIC8vIEluc3RhbGxzIGFuIGV2ZW50IGhhbmRsZXIgb24gYGdsb2JhbGAgZm9yIHRoZSBgbWVzc2FnZWAgZXZlbnQ6IHNlZQogICAgICAgIC8vICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vRE9NL3dpbmRvdy5wb3N0TWVzc2FnZQogICAgICAgIC8vICogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvY29tbXMuaHRtbCNjcm9zc0RvY3VtZW50TWVzc2FnZXMKCiAgICAgICAgdmFyIG1lc3NhZ2VQcmVmaXggPSAic2V0SW1tZWRpYXRlJCIgKyBNYXRoLnJhbmRvbSgpICsgIiQiOwogICAgICAgIHZhciBvbkdsb2JhbE1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewogICAgICAgICAgICBpZiAoZXZlbnQuc291cmNlID09PSBnbG9iYWwgJiYKICAgICAgICAgICAgICAgIHR5cGVvZiBldmVudC5kYXRhID09PSAic3RyaW5nIiAmJgogICAgICAgICAgICAgICAgZXZlbnQuZGF0YS5pbmRleE9mKG1lc3NhZ2VQcmVmaXgpID09PSAwKSB7CiAgICAgICAgICAgICAgICBydW5JZlByZXNlbnQoK2V2ZW50LmRhdGEuc2xpY2UobWVzc2FnZVByZWZpeC5sZW5ndGgpKTsKICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIGlmIChnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICAgICAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIG9uR2xvYmFsTWVzc2FnZSwgZmFsc2UpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGdsb2JhbC5hdHRhY2hFdmVudCgib25tZXNzYWdlIiwgb25HbG9iYWxNZXNzYWdlKTsKICAgICAgICB9CgogICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7CiAgICAgICAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShtZXNzYWdlUHJlZml4ICsgaGFuZGxlLCAiKiIpOwogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gaW5zdGFsbE1lc3NhZ2VDaGFubmVsSW1wbGVtZW50YXRpb24oKSB7CiAgICAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKICAgICAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAgIHZhciBoYW5kbGUgPSBldmVudC5kYXRhOwogICAgICAgICAgICBydW5JZlByZXNlbnQoaGFuZGxlKTsKICAgICAgICB9OwoKICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uKGhhbmRsZSkgewogICAgICAgICAgICBjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKGhhbmRsZSk7CiAgICAgICAgfTsKICAgIH0KCiAgICBmdW5jdGlvbiBpbnN0YWxsUmVhZHlTdGF0ZUNoYW5nZUltcGxlbWVudGF0aW9uKCkgewogICAgICAgIHZhciBodG1sID0gZG9jLmRvY3VtZW50RWxlbWVudDsKICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uKGhhbmRsZSkgewogICAgICAgICAgICAvLyBDcmVhdGUgYSA8c2NyaXB0PiBlbGVtZW50OyBpdHMgcmVhZHlzdGF0ZWNoYW5nZSBldmVudCB3aWxsIGJlIGZpcmVkIGFzeW5jaHJvbm91c2x5IG9uY2UgaXQgaXMgaW5zZXJ0ZWQKICAgICAgICAgICAgLy8gaW50byB0aGUgZG9jdW1lbnQuIERvIHNvLCB0aHVzIHF1ZXVpbmcgdXAgdGhlIHRhc2suIFJlbWVtYmVyIHRvIGNsZWFuIHVwIG9uY2UgaXQncyBiZWVuIGNhbGxlZC4KICAgICAgICAgICAgdmFyIHNjcmlwdCA9IGRvYy5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKICAgICAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJ1bklmUHJlc2VudChoYW5kbGUpOwogICAgICAgICAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7CiAgICAgICAgICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHNjcmlwdCk7CiAgICAgICAgICAgICAgICBzY3JpcHQgPSBudWxsOwogICAgICAgICAgICB9OwogICAgICAgICAgICBodG1sLmFwcGVuZENoaWxkKHNjcmlwdCk7CiAgICAgICAgfTsKICAgIH0KCiAgICBmdW5jdGlvbiBpbnN0YWxsU2V0VGltZW91dEltcGxlbWVudGF0aW9uKCkgewogICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7CiAgICAgICAgICAgIHNldFRpbWVvdXQocnVuSWZQcmVzZW50LCAwLCBoYW5kbGUpOwogICAgICAgIH07CiAgICB9CgogICAgLy8gSWYgc3VwcG9ydGVkLCB3ZSBzaG91bGQgYXR0YWNoIHRvIHRoZSBwcm90b3R5cGUgb2YgZ2xvYmFsLCBzaW5jZSB0aGF0IGlzIHdoZXJlIHNldFRpbWVvdXQgZXQgYWwuIGxpdmUuCiAgICB2YXIgYXR0YWNoVG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKGdsb2JhbCk7CiAgICBhdHRhY2hUbyA9IGF0dGFjaFRvICYmIGF0dGFjaFRvLnNldFRpbWVvdXQgPyBhdHRhY2hUbyA6IGdsb2JhbDsKCiAgICAvLyBEb24ndCBnZXQgZm9vbGVkIGJ5IGUuZy4gYnJvd3NlcmlmeSBlbnZpcm9ubWVudHMuCiAgICBpZiAoe30udG9TdHJpbmcuY2FsbChnbG9iYWwucHJvY2VzcykgPT09ICJbb2JqZWN0IHByb2Nlc3NdIikgewogICAgICAgIC8vIEZvciBOb2RlLmpzIGJlZm9yZSAwLjkKICAgICAgICBpbnN0YWxsTmV4dFRpY2tJbXBsZW1lbnRhdGlvbigpOwoKICAgIH0gZWxzZSBpZiAoY2FuVXNlUG9zdE1lc3NhZ2UoKSkgewogICAgICAgIC8vIEZvciBub24tSUUxMCBtb2Rlcm4gYnJvd3NlcnMKICAgICAgICBpbnN0YWxsUG9zdE1lc3NhZ2VJbXBsZW1lbnRhdGlvbigpOwoKICAgIH0gZWxzZSBpZiAoZ2xvYmFsLk1lc3NhZ2VDaGFubmVsKSB7CiAgICAgICAgLy8gRm9yIHdlYiB3b3JrZXJzLCB3aGVyZSBzdXBwb3J0ZWQKICAgICAgICBpbnN0YWxsTWVzc2FnZUNoYW5uZWxJbXBsZW1lbnRhdGlvbigpOwoKICAgIH0gZWxzZSBpZiAoZG9jICYmICJvbnJlYWR5c3RhdGVjaGFuZ2UiIGluIGRvYy5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSkgewogICAgICAgIC8vIEZvciBJRSA24oCTOAogICAgICAgIGluc3RhbGxSZWFkeVN0YXRlQ2hhbmdlSW1wbGVtZW50YXRpb24oKTsKCiAgICB9IGVsc2UgewogICAgICAgIC8vIEZvciBvbGRlciBicm93c2VycwogICAgICAgIGluc3RhbGxTZXRUaW1lb3V0SW1wbGVtZW50YXRpb24oKTsKICAgIH0KCiAgICBhdHRhY2hUby5zZXRJbW1lZGlhdGUgPSBzZXRJbW1lZGlhdGU7CiAgICBhdHRhY2hUby5jbGVhckltbWVkaWF0ZSA9IGNsZWFySW1tZWRpYXRlOwp9KHR5cGVvZiBzZWxmID09PSAidW5kZWZpbmVkIiA/IHR5cGVvZiBnbG9iYWwgPT09ICJ1bmRlZmluZWQiID8gdGhpcyA6IGdsb2JhbCA6IHNlbGYpKTsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKSkpCgovKioqLyB9KSwKLyogMTQ0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwpIHsKLyoqCiAqIE1vZHVsZSBleHBvcnRzLgogKi8KCm1vZHVsZS5leHBvcnRzID0gZGVwcmVjYXRlOwoKLyoqCiAqIE1hcmsgdGhhdCBhIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWQuCiAqIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuCiAqCiAqIElmIGBsb2NhbFN0b3JhZ2Uubm9EZXByZWNhdGlvbiA9IHRydWVgIGlzIHNldCwgdGhlbiBpdCBpcyBhIG5vLW9wLgogKgogKiBJZiBgbG9jYWxTdG9yYWdlLnRocm93RGVwcmVjYXRpb24gPSB0cnVlYCBpcyBzZXQsIHRoZW4gZGVwcmVjYXRlZCBmdW5jdGlvbnMKICogd2lsbCB0aHJvdyBhbiBFcnJvciB3aGVuIGludm9rZWQuCiAqCiAqIElmIGBsb2NhbFN0b3JhZ2UudHJhY2VEZXByZWNhdGlvbiA9IHRydWVgIGlzIHNldCwgdGhlbiBkZXByZWNhdGVkIGZ1bmN0aW9ucwogKiB3aWxsIGludm9rZSBgY29uc29sZS50cmFjZSgpYCBpbnN0ZWFkIG9mIGBjb25zb2xlLmVycm9yKClgLgogKgogKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiAtIHRoZSBmdW5jdGlvbiB0byBkZXByZWNhdGUKICogQHBhcmFtIHtTdHJpbmd9IG1zZyAtIHRoZSBzdHJpbmcgdG8gcHJpbnQgdG8gdGhlIGNvbnNvbGUgd2hlbiBgZm5gIGlzIGludm9rZWQKICogQHJldHVybnMge0Z1bmN0aW9ufSBhIG5ldyAiZGVwcmVjYXRlZCIgdmVyc2lvbiBvZiBgZm5gCiAqIEBhcGkgcHVibGljCiAqLwoKZnVuY3Rpb24gZGVwcmVjYXRlIChmbiwgbXNnKSB7CiAgaWYgKGNvbmZpZygnbm9EZXByZWNhdGlvbicpKSB7CiAgICByZXR1cm4gZm47CiAgfQoKICB2YXIgd2FybmVkID0gZmFsc2U7CiAgZnVuY3Rpb24gZGVwcmVjYXRlZCgpIHsKICAgIGlmICghd2FybmVkKSB7CiAgICAgIGlmIChjb25maWcoJ3Rocm93RGVwcmVjYXRpb24nKSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpOwogICAgICB9IGVsc2UgaWYgKGNvbmZpZygndHJhY2VEZXByZWNhdGlvbicpKSB7CiAgICAgICAgY29uc29sZS50cmFjZShtc2cpOwogICAgICB9IGVsc2UgewogICAgICAgIGNvbnNvbGUud2Fybihtc2cpOwogICAgICB9CiAgICAgIHdhcm5lZCA9IHRydWU7CiAgICB9CiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICB9CgogIHJldHVybiBkZXByZWNhdGVkOwp9CgovKioKICogQ2hlY2tzIGBsb2NhbFN0b3JhZ2VgIGZvciBib29sZWFuIHZhbHVlcyBmb3IgdGhlIGdpdmVuIGBuYW1lYC4KICoKICogQHBhcmFtIHtTdHJpbmd9IG5hbWUKICogQHJldHVybnMge0Jvb2xlYW59CiAqIEBhcGkgcHJpdmF0ZQogKi8KCmZ1bmN0aW9uIGNvbmZpZyAobmFtZSkgewogIC8vIGFjY2Vzc2luZyBnbG9iYWwubG9jYWxTdG9yYWdlIGNhbiB0cmlnZ2VyIGEgRE9NRXhjZXB0aW9uIGluIHNhbmRib3hlZCBpZnJhbWVzCiAgdHJ5IHsKICAgIGlmICghZ2xvYmFsLmxvY2FsU3RvcmFnZSkgcmV0dXJuIGZhbHNlOwogIH0gY2F0Y2ggKF8pIHsKICAgIHJldHVybiBmYWxzZTsKICB9CiAgdmFyIHZhbCA9IGdsb2JhbC5sb2NhbFN0b3JhZ2VbbmFtZV07CiAgaWYgKG51bGwgPT0gdmFsKSByZXR1cm4gZmFsc2U7CiAgcmV0dXJuIFN0cmluZyh2YWwpLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJzsKfQoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oNykpKQoKLyoqKi8gfSksCi8qIDE0NSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Ci8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLgovLwovLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQovLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi8vICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAovLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0Ci8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZQovLyBmb2xsb3dpbmcgY29uZGl0aW9uczoKLy8KLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi8vCi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTgovLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SCi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUKLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KCi8vIGEgcGFzc3Rocm91Z2ggc3RyZWFtLgovLyBiYXNpY2FsbHkganVzdCB0aGUgbW9zdCBtaW5pbWFsIHNvcnQgb2YgVHJhbnNmb3JtIHN0cmVhbS4KLy8gRXZlcnkgd3JpdHRlbiBjaHVuayBnZXRzIG91dHB1dCBhcy1pcy4KCgoKbW9kdWxlLmV4cG9ydHMgPSBQYXNzVGhyb3VnaDsKCnZhciBUcmFuc2Zvcm0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg2KTsKCi8qPHJlcGxhY2VtZW50PiovCnZhciB1dGlsID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNSk7CnV0aWwuaW5oZXJpdHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKTsKLyo8L3JlcGxhY2VtZW50PiovCgp1dGlsLmluaGVyaXRzKFBhc3NUaHJvdWdoLCBUcmFuc2Zvcm0pOwoKZnVuY3Rpb24gUGFzc1Rocm91Z2gob3B0aW9ucykgewogIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQYXNzVGhyb3VnaCkpIHJldHVybiBuZXcgUGFzc1Rocm91Z2gob3B0aW9ucyk7CgogIFRyYW5zZm9ybS5jYWxsKHRoaXMsIG9wdGlvbnMpOwp9CgpQYXNzVGhyb3VnaC5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7CiAgY2IobnVsbCwgY2h1bmspOwp9OwoKLyoqKi8gfSksCi8qIDE0NiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oNDYpOwoKCi8qKiovIH0pLAovKiAxNDcgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTsKCgovKioqLyB9KSwKLyogMTQ4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NSkuVHJhbnNmb3JtCgoKLyoqKi8gfSksCi8qIDE0OSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oNDUpLlBhc3NUaHJvdWdoCgoKLyoqKi8gfSksCi8qIDE1MCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Ci8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihCdWZmZXIsIHByb2Nlc3MpIHsKLyogZXNsaW50IGNhbWVsY2FzZTogIm9mZiIgKi8KCnZhciBhc3NlcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg4KTsKCnZhciBac3RyZWFtID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTMpOwp2YXIgemxpYl9kZWZsYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTQpOwp2YXIgemxpYl9pbmZsYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTcpOwp2YXIgY29uc3RhbnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjApOwoKZm9yICh2YXIga2V5IGluIGNvbnN0YW50cykgewogIGV4cG9ydHNba2V5XSA9IGNvbnN0YW50c1trZXldOwp9CgovLyB6bGliIG1vZGVzCmV4cG9ydHMuTk9ORSA9IDA7CmV4cG9ydHMuREVGTEFURSA9IDE7CmV4cG9ydHMuSU5GTEFURSA9IDI7CmV4cG9ydHMuR1pJUCA9IDM7CmV4cG9ydHMuR1VOWklQID0gNDsKZXhwb3J0cy5ERUZMQVRFUkFXID0gNTsKZXhwb3J0cy5JTkZMQVRFUkFXID0gNjsKZXhwb3J0cy5VTlpJUCA9IDc7Cgp2YXIgR1pJUF9IRUFERVJfSUQxID0gMHgxZjsKdmFyIEdaSVBfSEVBREVSX0lEMiA9IDB4OGI7CgovKioKICogRW11bGF0ZSBOb2RlJ3MgemxpYiBDKysgbGF5ZXIgZm9yIHVzZSBieSB0aGUgSlMgbGF5ZXIgaW4gaW5kZXguanMKICovCmZ1bmN0aW9uIFpsaWIobW9kZSkgewogIGlmICh0eXBlb2YgbW9kZSAhPT0gJ251bWJlcicgfHwgbW9kZSA8IGV4cG9ydHMuREVGTEFURSB8fCBtb2RlID4gZXhwb3J0cy5VTlpJUCkgewogICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQmFkIGFyZ3VtZW50Jyk7CiAgfQoKICB0aGlzLmRpY3Rpb25hcnkgPSBudWxsOwogIHRoaXMuZXJyID0gMDsKICB0aGlzLmZsdXNoID0gMDsKICB0aGlzLmluaXRfZG9uZSA9IGZhbHNlOwogIHRoaXMubGV2ZWwgPSAwOwogIHRoaXMubWVtTGV2ZWwgPSAwOwogIHRoaXMubW9kZSA9IG1vZGU7CiAgdGhpcy5zdHJhdGVneSA9IDA7CiAgdGhpcy53aW5kb3dCaXRzID0gMDsKICB0aGlzLndyaXRlX2luX3Byb2dyZXNzID0gZmFsc2U7CiAgdGhpcy5wZW5kaW5nX2Nsb3NlID0gZmFsc2U7CiAgdGhpcy5nemlwX2lkX2J5dGVzX3JlYWQgPSAwOwp9CgpabGliLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHsKICBpZiAodGhpcy53cml0ZV9pbl9wcm9ncmVzcykgewogICAgdGhpcy5wZW5kaW5nX2Nsb3NlID0gdHJ1ZTsKICAgIHJldHVybjsKICB9CgogIHRoaXMucGVuZGluZ19jbG9zZSA9IGZhbHNlOwoKICBhc3NlcnQodGhpcy5pbml0X2RvbmUsICdjbG9zZSBiZWZvcmUgaW5pdCcpOwogIGFzc2VydCh0aGlzLm1vZGUgPD0gZXhwb3J0cy5VTlpJUCk7CgogIGlmICh0aGlzLm1vZGUgPT09IGV4cG9ydHMuREVGTEFURSB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuR1pJUCB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuREVGTEFURVJBVykgewogICAgemxpYl9kZWZsYXRlLmRlZmxhdGVFbmQodGhpcy5zdHJtKTsKICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gZXhwb3J0cy5JTkZMQVRFIHx8IHRoaXMubW9kZSA9PT0gZXhwb3J0cy5HVU5aSVAgfHwgdGhpcy5tb2RlID09PSBleHBvcnRzLklORkxBVEVSQVcgfHwgdGhpcy5tb2RlID09PSBleHBvcnRzLlVOWklQKSB7CiAgICB6bGliX2luZmxhdGUuaW5mbGF0ZUVuZCh0aGlzLnN0cm0pOwogIH0KCiAgdGhpcy5tb2RlID0gZXhwb3J0cy5OT05FOwoKICB0aGlzLmRpY3Rpb25hcnkgPSBudWxsOwp9OwoKWmxpYi5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoZmx1c2gsIGlucHV0LCBpbl9vZmYsIGluX2xlbiwgb3V0LCBvdXRfb2ZmLCBvdXRfbGVuKSB7CiAgcmV0dXJuIHRoaXMuX3dyaXRlKHRydWUsIGZsdXNoLCBpbnB1dCwgaW5fb2ZmLCBpbl9sZW4sIG91dCwgb3V0X29mZiwgb3V0X2xlbik7Cn07CgpabGliLnByb3RvdHlwZS53cml0ZVN5bmMgPSBmdW5jdGlvbiAoZmx1c2gsIGlucHV0LCBpbl9vZmYsIGluX2xlbiwgb3V0LCBvdXRfb2ZmLCBvdXRfbGVuKSB7CiAgcmV0dXJuIHRoaXMuX3dyaXRlKGZhbHNlLCBmbHVzaCwgaW5wdXQsIGluX29mZiwgaW5fbGVuLCBvdXQsIG91dF9vZmYsIG91dF9sZW4pOwp9OwoKWmxpYi5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGFzeW5jLCBmbHVzaCwgaW5wdXQsIGluX29mZiwgaW5fbGVuLCBvdXQsIG91dF9vZmYsIG91dF9sZW4pIHsKICBhc3NlcnQuZXF1YWwoYXJndW1lbnRzLmxlbmd0aCwgOCk7CgogIGFzc2VydCh0aGlzLmluaXRfZG9uZSwgJ3dyaXRlIGJlZm9yZSBpbml0Jyk7CiAgYXNzZXJ0KHRoaXMubW9kZSAhPT0gZXhwb3J0cy5OT05FLCAnYWxyZWFkeSBmaW5hbGl6ZWQnKTsKICBhc3NlcnQuZXF1YWwoZmFsc2UsIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MsICd3cml0ZSBhbHJlYWR5IGluIHByb2dyZXNzJyk7CiAgYXNzZXJ0LmVxdWFsKGZhbHNlLCB0aGlzLnBlbmRpbmdfY2xvc2UsICdjbG9zZSBpcyBwZW5kaW5nJyk7CgogIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSB0cnVlOwoKICBhc3NlcnQuZXF1YWwoZmFsc2UsIGZsdXNoID09PSB1bmRlZmluZWQsICdtdXN0IHByb3ZpZGUgZmx1c2ggdmFsdWUnKTsKCiAgdGhpcy53cml0ZV9pbl9wcm9ncmVzcyA9IHRydWU7CgogIGlmIChmbHVzaCAhPT0gZXhwb3J0cy5aX05PX0ZMVVNIICYmIGZsdXNoICE9PSBleHBvcnRzLlpfUEFSVElBTF9GTFVTSCAmJiBmbHVzaCAhPT0gZXhwb3J0cy5aX1NZTkNfRkxVU0ggJiYgZmx1c2ggIT09IGV4cG9ydHMuWl9GVUxMX0ZMVVNIICYmIGZsdXNoICE9PSBleHBvcnRzLlpfRklOSVNIICYmIGZsdXNoICE9PSBleHBvcnRzLlpfQkxPQ0spIHsKICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBmbHVzaCB2YWx1ZScpOwogIH0KCiAgaWYgKGlucHV0ID09IG51bGwpIHsKICAgIGlucHV0ID0gQnVmZmVyLmFsbG9jKDApOwogICAgaW5fbGVuID0gMDsKICAgIGluX29mZiA9IDA7CiAgfQoKICB0aGlzLnN0cm0uYXZhaWxfaW4gPSBpbl9sZW47CiAgdGhpcy5zdHJtLmlucHV0ID0gaW5wdXQ7CiAgdGhpcy5zdHJtLm5leHRfaW4gPSBpbl9vZmY7CiAgdGhpcy5zdHJtLmF2YWlsX291dCA9IG91dF9sZW47CiAgdGhpcy5zdHJtLm91dHB1dCA9IG91dDsKICB0aGlzLnN0cm0ubmV4dF9vdXQgPSBvdXRfb2ZmOwogIHRoaXMuZmx1c2ggPSBmbHVzaDsKCiAgaWYgKCFhc3luYykgewogICAgLy8gc3luYyB2ZXJzaW9uCiAgICB0aGlzLl9wcm9jZXNzKCk7CgogICAgaWYgKHRoaXMuX2NoZWNrRXJyb3IoKSkgewogICAgICByZXR1cm4gdGhpcy5fYWZ0ZXJTeW5jKCk7CiAgICB9CiAgICByZXR1cm47CiAgfQoKICAvLyBhc3luYyB2ZXJzaW9uCiAgdmFyIHNlbGYgPSB0aGlzOwogIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgc2VsZi5fcHJvY2VzcygpOwogICAgc2VsZi5fYWZ0ZXIoKTsKICB9KTsKCiAgcmV0dXJuIHRoaXM7Cn07CgpabGliLnByb3RvdHlwZS5fYWZ0ZXJTeW5jID0gZnVuY3Rpb24gKCkgewogIHZhciBhdmFpbF9vdXQgPSB0aGlzLnN0cm0uYXZhaWxfb3V0OwogIHZhciBhdmFpbF9pbiA9IHRoaXMuc3RybS5hdmFpbF9pbjsKCiAgdGhpcy53cml0ZV9pbl9wcm9ncmVzcyA9IGZhbHNlOwoKICByZXR1cm4gW2F2YWlsX2luLCBhdmFpbF9vdXRdOwp9OwoKWmxpYi5wcm90b3R5cGUuX3Byb2Nlc3MgPSBmdW5jdGlvbiAoKSB7CiAgdmFyIG5leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGUgPSBudWxsOwoKICAvLyBJZiB0aGUgYXZhaWxfb3V0IGlzIGxlZnQgYXQgMCwgdGhlbiBpdCBtZWFucyB0aGF0IGl0IHJhbiBvdXQKICAvLyBvZiByb29tLiAgSWYgdGhlcmUgd2FzIGF2YWlsX291dCBsZWZ0IG92ZXIsIHRoZW4gaXQgbWVhbnMKICAvLyB0aGF0IGFsbCBvZiB0aGUgaW5wdXQgd2FzIGNvbnN1bWVkLgogIHN3aXRjaCAodGhpcy5tb2RlKSB7CiAgICBjYXNlIGV4cG9ydHMuREVGTEFURToKICAgIGNhc2UgZXhwb3J0cy5HWklQOgogICAgY2FzZSBleHBvcnRzLkRFRkxBVEVSQVc6CiAgICAgIHRoaXMuZXJyID0gemxpYl9kZWZsYXRlLmRlZmxhdGUodGhpcy5zdHJtLCB0aGlzLmZsdXNoKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIGV4cG9ydHMuVU5aSVA6CiAgICAgIGlmICh0aGlzLnN0cm0uYXZhaWxfaW4gPiAwKSB7CiAgICAgICAgbmV4dF9leHBlY3RlZF9oZWFkZXJfYnl0ZSA9IHRoaXMuc3RybS5uZXh0X2luOwogICAgICB9CgogICAgICBzd2l0Y2ggKHRoaXMuZ3ppcF9pZF9ieXRlc19yZWFkKSB7CiAgICAgICAgY2FzZSAwOgogICAgICAgICAgaWYgKG5leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGUgPT09IG51bGwpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CgogICAgICAgICAgaWYgKHRoaXMuc3RybS5pbnB1dFtuZXh0X2V4cGVjdGVkX2hlYWRlcl9ieXRlXSA9PT0gR1pJUF9IRUFERVJfSUQxKSB7CiAgICAgICAgICAgIHRoaXMuZ3ppcF9pZF9ieXRlc19yZWFkID0gMTsKICAgICAgICAgICAgbmV4dF9leHBlY3RlZF9oZWFkZXJfYnl0ZSsrOwoKICAgICAgICAgICAgaWYgKHRoaXMuc3RybS5hdmFpbF9pbiA9PT0gMSkgewogICAgICAgICAgICAgIC8vIFRoZSBvbmx5IGF2YWlsYWJsZSBieXRlIHdhcyBhbHJlYWR5IHJlYWQuCiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMubW9kZSA9IGV4cG9ydHMuSU5GTEFURTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CgogICAgICAgIC8vIGZhbGx0aHJvdWdoCiAgICAgICAgY2FzZSAxOgogICAgICAgICAgaWYgKG5leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGUgPT09IG51bGwpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CgogICAgICAgICAgaWYgKHRoaXMuc3RybS5pbnB1dFtuZXh0X2V4cGVjdGVkX2hlYWRlcl9ieXRlXSA9PT0gR1pJUF9IRUFERVJfSUQyKSB7CiAgICAgICAgICAgIHRoaXMuZ3ppcF9pZF9ieXRlc19yZWFkID0gMjsKICAgICAgICAgICAgdGhpcy5tb2RlID0gZXhwb3J0cy5HVU5aSVA7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBUaGVyZSBpcyBubyBhY3R1YWwgZGlmZmVyZW5jZSBiZXR3ZWVuIElORkxBVEUgYW5kIElORkxBVEVSQVcKICAgICAgICAgICAgLy8gKGFmdGVyIGluaXRpYWxpemF0aW9uKS4KICAgICAgICAgICAgdGhpcy5tb2RlID0gZXhwb3J0cy5JTkZMQVRFOwogICAgICAgICAgfQoKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgbnVtYmVyIG9mIGd6aXAgbWFnaWMgbnVtYmVyIGJ5dGVzIHJlYWQnKTsKICAgICAgfQoKICAgIC8vIGZhbGx0aHJvdWdoCiAgICBjYXNlIGV4cG9ydHMuSU5GTEFURToKICAgIGNhc2UgZXhwb3J0cy5HVU5aSVA6CiAgICBjYXNlIGV4cG9ydHMuSU5GTEFURVJBVzoKICAgICAgdGhpcy5lcnIgPSB6bGliX2luZmxhdGUuaW5mbGF0ZSh0aGlzLnN0cm0sIHRoaXMuZmx1c2gKCiAgICAgIC8vIElmIGRhdGEgd2FzIGVuY29kZWQgd2l0aCBkaWN0aW9uYXJ5CiAgICAgICk7aWYgKHRoaXMuZXJyID09PSBleHBvcnRzLlpfTkVFRF9ESUNUICYmIHRoaXMuZGljdGlvbmFyeSkgewogICAgICAgIC8vIExvYWQgaXQKICAgICAgICB0aGlzLmVyciA9IHpsaWJfaW5mbGF0ZS5pbmZsYXRlU2V0RGljdGlvbmFyeSh0aGlzLnN0cm0sIHRoaXMuZGljdGlvbmFyeSk7CiAgICAgICAgaWYgKHRoaXMuZXJyID09PSBleHBvcnRzLlpfT0spIHsKICAgICAgICAgIC8vIEFuZCB0cnkgdG8gZGVjb2RlIGFnYWluCiAgICAgICAgICB0aGlzLmVyciA9IHpsaWJfaW5mbGF0ZS5pbmZsYXRlKHRoaXMuc3RybSwgdGhpcy5mbHVzaCk7CiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmVyciA9PT0gZXhwb3J0cy5aX0RBVEFfRVJST1IpIHsKICAgICAgICAgIC8vIEJvdGggaW5mbGF0ZVNldERpY3Rpb25hcnkoKSBhbmQgaW5mbGF0ZSgpIHJldHVybiBaX0RBVEFfRVJST1IuCiAgICAgICAgICAvLyBNYWtlIGl0IHBvc3NpYmxlIGZvciBBZnRlcigpIHRvIHRlbGwgYSBiYWQgZGljdGlvbmFyeSBmcm9tIGJhZAogICAgICAgICAgLy8gaW5wdXQuCiAgICAgICAgICB0aGlzLmVyciA9IGV4cG9ydHMuWl9ORUVEX0RJQ1Q7CiAgICAgICAgfQogICAgICB9CiAgICAgIHdoaWxlICh0aGlzLnN0cm0uYXZhaWxfaW4gPiAwICYmIHRoaXMubW9kZSA9PT0gZXhwb3J0cy5HVU5aSVAgJiYgdGhpcy5lcnIgPT09IGV4cG9ydHMuWl9TVFJFQU1fRU5EICYmIHRoaXMuc3RybS5uZXh0X2luWzBdICE9PSAweDAwKSB7CiAgICAgICAgLy8gQnl0ZXMgcmVtYWluIGluIGlucHV0IGJ1ZmZlci4gUGVyaGFwcyB0aGlzIGlzIGFub3RoZXIgY29tcHJlc3NlZAogICAgICAgIC8vIG1lbWJlciBpbiB0aGUgc2FtZSBhcmNoaXZlLCBvciBqdXN0IHRyYWlsaW5nIGdhcmJhZ2UuCiAgICAgICAgLy8gVHJhaWxpbmcgemVybyBieXRlcyBhcmUgb2theSwgdGhvdWdoLCBzaW5jZSB0aGV5IGFyZSBmcmVxdWVudGx5CiAgICAgICAgLy8gdXNlZCBmb3IgcGFkZGluZy4KCiAgICAgICAgdGhpcy5yZXNldCgpOwogICAgICAgIHRoaXMuZXJyID0gemxpYl9pbmZsYXRlLmluZmxhdGUodGhpcy5zdHJtLCB0aGlzLmZsdXNoKTsKICAgICAgfQogICAgICBicmVhazsKICAgIGRlZmF1bHQ6CiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBtb2RlICcgKyB0aGlzLm1vZGUpOwogIH0KfTsKClpsaWIucHJvdG90eXBlLl9jaGVja0Vycm9yID0gZnVuY3Rpb24gKCkgewogIC8vIEFjY2VwdGFibGUgZXJyb3Igc3RhdGVzIGRlcGVuZCBvbiB0aGUgdHlwZSBvZiB6bGliIHN0cmVhbS4KICBzd2l0Y2ggKHRoaXMuZXJyKSB7CiAgICBjYXNlIGV4cG9ydHMuWl9PSzoKICAgIGNhc2UgZXhwb3J0cy5aX0JVRl9FUlJPUjoKICAgICAgaWYgKHRoaXMuc3RybS5hdmFpbF9vdXQgIT09IDAgJiYgdGhpcy5mbHVzaCA9PT0gZXhwb3J0cy5aX0ZJTklTSCkgewogICAgICAgIHRoaXMuX2Vycm9yKCd1bmV4cGVjdGVkIGVuZCBvZiBmaWxlJyk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIGJyZWFrOwogICAgY2FzZSBleHBvcnRzLlpfU1RSRUFNX0VORDoKICAgICAgLy8gbm9ybWFsIHN0YXR1c2VzLCBub3QgZmF0YWwKICAgICAgYnJlYWs7CiAgICBjYXNlIGV4cG9ydHMuWl9ORUVEX0RJQ1Q6CiAgICAgIGlmICh0aGlzLmRpY3Rpb25hcnkgPT0gbnVsbCkgewogICAgICAgIHRoaXMuX2Vycm9yKCdNaXNzaW5nIGRpY3Rpb25hcnknKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLl9lcnJvcignQmFkIGRpY3Rpb25hcnknKTsKICAgICAgfQogICAgICByZXR1cm4gZmFsc2U7CiAgICBkZWZhdWx0OgogICAgICAvLyBzb21ldGhpbmcgZWxzZS4KICAgICAgdGhpcy5fZXJyb3IoJ1psaWIgZXJyb3InKTsKICAgICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgcmV0dXJuIHRydWU7Cn07CgpabGliLnByb3RvdHlwZS5fYWZ0ZXIgPSBmdW5jdGlvbiAoKSB7CiAgaWYgKCF0aGlzLl9jaGVja0Vycm9yKCkpIHsKICAgIHJldHVybjsKICB9CgogIHZhciBhdmFpbF9vdXQgPSB0aGlzLnN0cm0uYXZhaWxfb3V0OwogIHZhciBhdmFpbF9pbiA9IHRoaXMuc3RybS5hdmFpbF9pbjsKCiAgdGhpcy53cml0ZV9pbl9wcm9ncmVzcyA9IGZhbHNlOwoKICAvLyBjYWxsIHRoZSB3cml0ZSgpIGNiCiAgdGhpcy5jYWxsYmFjayhhdmFpbF9pbiwgYXZhaWxfb3V0KTsKCiAgaWYgKHRoaXMucGVuZGluZ19jbG9zZSkgewogICAgdGhpcy5jbG9zZSgpOwogIH0KfTsKClpsaWIucHJvdG90eXBlLl9lcnJvciA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7CiAgaWYgKHRoaXMuc3RybS5tc2cpIHsKICAgIG1lc3NhZ2UgPSB0aGlzLnN0cm0ubXNnOwogIH0KICB0aGlzLm9uZXJyb3IobWVzc2FnZSwgdGhpcy5lcnIKCiAgLy8gbm8gaG9wZSBvZiByZXNjdWUuCiAgKTt0aGlzLndyaXRlX2luX3Byb2dyZXNzID0gZmFsc2U7CiAgaWYgKHRoaXMucGVuZGluZ19jbG9zZSkgewogICAgdGhpcy5jbG9zZSgpOwogIH0KfTsKClpsaWIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAod2luZG93Qml0cywgbGV2ZWwsIG1lbUxldmVsLCBzdHJhdGVneSwgZGljdGlvbmFyeSkgewogIGFzc2VydChhcmd1bWVudHMubGVuZ3RoID09PSA0IHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDUsICdpbml0KHdpbmRvd0JpdHMsIGxldmVsLCBtZW1MZXZlbCwgc3RyYXRlZ3ksIFtkaWN0aW9uYXJ5XSknKTsKCiAgYXNzZXJ0KHdpbmRvd0JpdHMgPj0gOCAmJiB3aW5kb3dCaXRzIDw9IDE1LCAnaW52YWxpZCB3aW5kb3dCaXRzJyk7CiAgYXNzZXJ0KGxldmVsID49IC0xICYmIGxldmVsIDw9IDksICdpbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsJyk7CgogIGFzc2VydChtZW1MZXZlbCA+PSAxICYmIG1lbUxldmVsIDw9IDksICdpbnZhbGlkIG1lbWxldmVsJyk7CgogIGFzc2VydChzdHJhdGVneSA9PT0gZXhwb3J0cy5aX0ZJTFRFUkVEIHx8IHN0cmF0ZWd5ID09PSBleHBvcnRzLlpfSFVGRk1BTl9PTkxZIHx8IHN0cmF0ZWd5ID09PSBleHBvcnRzLlpfUkxFIHx8IHN0cmF0ZWd5ID09PSBleHBvcnRzLlpfRklYRUQgfHwgc3RyYXRlZ3kgPT09IGV4cG9ydHMuWl9ERUZBVUxUX1NUUkFURUdZLCAnaW52YWxpZCBzdHJhdGVneScpOwoKICB0aGlzLl9pbml0KGxldmVsLCB3aW5kb3dCaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3ksIGRpY3Rpb25hcnkpOwogIHRoaXMuX3NldERpY3Rpb25hcnkoKTsKfTsKClpsaWIucHJvdG90eXBlLnBhcmFtcyA9IGZ1bmN0aW9uICgpIHsKICB0aHJvdyBuZXcgRXJyb3IoJ2RlZmxhdGVQYXJhbXMgTm90IHN1cHBvcnRlZCcpOwp9OwoKWmxpYi5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7CiAgdGhpcy5fcmVzZXQoKTsKICB0aGlzLl9zZXREaWN0aW9uYXJ5KCk7Cn07CgpabGliLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIChsZXZlbCwgd2luZG93Qml0cywgbWVtTGV2ZWwsIHN0cmF0ZWd5LCBkaWN0aW9uYXJ5KSB7CiAgdGhpcy5sZXZlbCA9IGxldmVsOwogIHRoaXMud2luZG93Qml0cyA9IHdpbmRvd0JpdHM7CiAgdGhpcy5tZW1MZXZlbCA9IG1lbUxldmVsOwogIHRoaXMuc3RyYXRlZ3kgPSBzdHJhdGVneTsKCiAgdGhpcy5mbHVzaCA9IGV4cG9ydHMuWl9OT19GTFVTSDsKCiAgdGhpcy5lcnIgPSBleHBvcnRzLlpfT0s7CgogIGlmICh0aGlzLm1vZGUgPT09IGV4cG9ydHMuR1pJUCB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuR1VOWklQKSB7CiAgICB0aGlzLndpbmRvd0JpdHMgKz0gMTY7CiAgfQoKICBpZiAodGhpcy5tb2RlID09PSBleHBvcnRzLlVOWklQKSB7CiAgICB0aGlzLndpbmRvd0JpdHMgKz0gMzI7CiAgfQoKICBpZiAodGhpcy5tb2RlID09PSBleHBvcnRzLkRFRkxBVEVSQVcgfHwgdGhpcy5tb2RlID09PSBleHBvcnRzLklORkxBVEVSQVcpIHsKICAgIHRoaXMud2luZG93Qml0cyA9IC0xICogdGhpcy53aW5kb3dCaXRzOwogIH0KCiAgdGhpcy5zdHJtID0gbmV3IFpzdHJlYW0oKTsKCiAgc3dpdGNoICh0aGlzLm1vZGUpIHsKICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFOgogICAgY2FzZSBleHBvcnRzLkdaSVA6CiAgICBjYXNlIGV4cG9ydHMuREVGTEFURVJBVzoKICAgICAgdGhpcy5lcnIgPSB6bGliX2RlZmxhdGUuZGVmbGF0ZUluaXQyKHRoaXMuc3RybSwgdGhpcy5sZXZlbCwgZXhwb3J0cy5aX0RFRkxBVEVELCB0aGlzLndpbmRvd0JpdHMsIHRoaXMubWVtTGV2ZWwsIHRoaXMuc3RyYXRlZ3kpOwogICAgICBicmVhazsKICAgIGNhc2UgZXhwb3J0cy5JTkZMQVRFOgogICAgY2FzZSBleHBvcnRzLkdVTlpJUDoKICAgIGNhc2UgZXhwb3J0cy5JTkZMQVRFUkFXOgogICAgY2FzZSBleHBvcnRzLlVOWklQOgogICAgICB0aGlzLmVyciA9IHpsaWJfaW5mbGF0ZS5pbmZsYXRlSW5pdDIodGhpcy5zdHJtLCB0aGlzLndpbmRvd0JpdHMpOwogICAgICBicmVhazsKICAgIGRlZmF1bHQ6CiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBtb2RlICcgKyB0aGlzLm1vZGUpOwogIH0KCiAgaWYgKHRoaXMuZXJyICE9PSBleHBvcnRzLlpfT0spIHsKICAgIHRoaXMuX2Vycm9yKCdJbml0IGVycm9yJyk7CiAgfQoKICB0aGlzLmRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5OwoKICB0aGlzLndyaXRlX2luX3Byb2dyZXNzID0gZmFsc2U7CiAgdGhpcy5pbml0X2RvbmUgPSB0cnVlOwp9OwoKWmxpYi5wcm90b3R5cGUuX3NldERpY3Rpb25hcnkgPSBmdW5jdGlvbiAoKSB7CiAgaWYgKHRoaXMuZGljdGlvbmFyeSA9PSBudWxsKSB7CiAgICByZXR1cm47CiAgfQoKICB0aGlzLmVyciA9IGV4cG9ydHMuWl9PSzsKCiAgc3dpdGNoICh0aGlzLm1vZGUpIHsKICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFOgogICAgY2FzZSBleHBvcnRzLkRFRkxBVEVSQVc6CiAgICAgIHRoaXMuZXJyID0gemxpYl9kZWZsYXRlLmRlZmxhdGVTZXREaWN0aW9uYXJ5KHRoaXMuc3RybSwgdGhpcy5kaWN0aW9uYXJ5KTsKICAgICAgYnJlYWs7CiAgICBkZWZhdWx0OgogICAgICBicmVhazsKICB9CgogIGlmICh0aGlzLmVyciAhPT0gZXhwb3J0cy5aX09LKSB7CiAgICB0aGlzLl9lcnJvcignRmFpbGVkIHRvIHNldCBkaWN0aW9uYXJ5Jyk7CiAgfQp9OwoKWmxpYi5wcm90b3R5cGUuX3Jlc2V0ID0gZnVuY3Rpb24gKCkgewogIHRoaXMuZXJyID0gZXhwb3J0cy5aX09LOwoKICBzd2l0Y2ggKHRoaXMubW9kZSkgewogICAgY2FzZSBleHBvcnRzLkRFRkxBVEU6CiAgICBjYXNlIGV4cG9ydHMuREVGTEFURVJBVzoKICAgIGNhc2UgZXhwb3J0cy5HWklQOgogICAgICB0aGlzLmVyciA9IHpsaWJfZGVmbGF0ZS5kZWZsYXRlUmVzZXQodGhpcy5zdHJtKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIGV4cG9ydHMuSU5GTEFURToKICAgIGNhc2UgZXhwb3J0cy5JTkZMQVRFUkFXOgogICAgY2FzZSBleHBvcnRzLkdVTlpJUDoKICAgICAgdGhpcy5lcnIgPSB6bGliX2luZmxhdGUuaW5mbGF0ZVJlc2V0KHRoaXMuc3RybSk7CiAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICAgYnJlYWs7CiAgfQoKICBpZiAodGhpcy5lcnIgIT09IGV4cG9ydHMuWl9PSykgewogICAgdGhpcy5fZXJyb3IoJ0ZhaWxlZCB0byByZXNldCBzdHJlYW0nKTsKICB9Cn07CgpleHBvcnRzLlpsaWIgPSBabGliOwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXIsIF9fd2VicGFja19yZXF1aXJlX18oMTEpKSkKCi8qKiovIH0pLAovKiAxNTEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0J1ZmZlcihhcmcpIHsKICByZXR1cm4gYXJnICYmIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnCiAgICAmJiB0eXBlb2YgYXJnLmNvcHkgPT09ICdmdW5jdGlvbicKICAgICYmIHR5cGVvZiBhcmcuZmlsbCA9PT0gJ2Z1bmN0aW9uJwogICAgJiYgdHlwZW9mIGFyZy5yZWFkVUludDggPT09ICdmdW5jdGlvbic7Cn0KCi8qKiovIH0pLAovKiAxNTIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKaWYgKHR5cGVvZiBPYmplY3QuY3JlYXRlID09PSAnZnVuY3Rpb24nKSB7CiAgLy8gaW1wbGVtZW50YXRpb24gZnJvbSBzdGFuZGFyZCBub2RlLmpzICd1dGlsJyBtb2R1bGUKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3RvcikgewogICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3IKICAgIGN0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckN0b3IucHJvdG90eXBlLCB7CiAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgdmFsdWU6IGN0b3IsCiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsCiAgICAgICAgd3JpdGFibGU6IHRydWUsCiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlCiAgICAgIH0KICAgIH0pOwogIH07Cn0gZWxzZSB7CiAgLy8gb2xkIHNjaG9vbCBzaGltIGZvciBvbGQgYnJvd3NlcnMKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3RvcikgewogICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3IKICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9CiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlCiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpCiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3IKICB9Cn0KCgovKioqLyB9KSwKLyogMTUzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgovLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW4KLy8KLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCi8vCi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLAovLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0Ci8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKLy8KLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3QKLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZQovLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZQovLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlCi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgovLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLgoKZnVuY3Rpb24gWlN0cmVhbSgpIHsKICAvKiBuZXh0IGlucHV0IGJ5dGUgKi8KICB0aGlzLmlucHV0ID0gbnVsbDsgLy8gSlMgc3BlY2lmaWMsIGJlY2F1c2Ugd2UgaGF2ZSBubyBwb2ludGVycwogIHRoaXMubmV4dF9pbiA9IDA7CiAgLyogbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBhdCBpbnB1dCAqLwogIHRoaXMuYXZhaWxfaW4gPSAwOwogIC8qIHRvdGFsIG51bWJlciBvZiBpbnB1dCBieXRlcyByZWFkIHNvIGZhciAqLwogIHRoaXMudG90YWxfaW4gPSAwOwogIC8qIG5leHQgb3V0cHV0IGJ5dGUgc2hvdWxkIGJlIHB1dCB0aGVyZSAqLwogIHRoaXMub3V0cHV0ID0gbnVsbDsgLy8gSlMgc3BlY2lmaWMsIGJlY2F1c2Ugd2UgaGF2ZSBubyBwb2ludGVycwogIHRoaXMubmV4dF9vdXQgPSAwOwogIC8qIHJlbWFpbmluZyBmcmVlIHNwYWNlIGF0IG91dHB1dCAqLwogIHRoaXMuYXZhaWxfb3V0ID0gMDsKICAvKiB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgb3V0cHV0IHNvIGZhciAqLwogIHRoaXMudG90YWxfb3V0ID0gMDsKICAvKiBsYXN0IGVycm9yIG1lc3NhZ2UsIE5VTEwgaWYgbm8gZXJyb3IgKi8KICB0aGlzLm1zZyA9ICcnLypaX05VTEwqLzsKICAvKiBub3QgdmlzaWJsZSBieSBhcHBsaWNhdGlvbnMgKi8KICB0aGlzLnN0YXRlID0gbnVsbDsKICAvKiBiZXN0IGd1ZXNzIGFib3V0IHRoZSBkYXRhIHR5cGU6IGJpbmFyeSBvciB0ZXh0ICovCiAgdGhpcy5kYXRhX3R5cGUgPSAyLypaX1VOS05PV04qLzsKICAvKiBhZGxlcjMyIHZhbHVlIG9mIHRoZSB1bmNvbXByZXNzZWQgZGF0YSAqLwogIHRoaXMuYWRsZXIgPSAwOwp9Cgptb2R1bGUuZXhwb3J0cyA9IFpTdHJlYW07CgoKLyoqKi8gfSksCi8qIDE1NCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyCi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luCi8vCi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlcwovLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgovLwovLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSwKLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdAovLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6Ci8vCi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90Ci8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmUKLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmUKLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLgovLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZQovLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi4KCnZhciB1dGlscyAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNCk7CnZhciB0cmVlcyAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTUpOwp2YXIgYWRsZXIzMiA9IF9fd2VicGFja19yZXF1aXJlX18oODkpOwp2YXIgY3JjMzIgICA9IF9fd2VicGFja19yZXF1aXJlX18oOTApOwp2YXIgbXNnICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTU2KTsKCi8qIFB1YmxpYyBjb25zdGFudHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCgoKLyogQWxsb3dlZCBmbHVzaCB2YWx1ZXM7IHNlZSBkZWZsYXRlKCkgYW5kIGluZmxhdGUoKSBiZWxvdyBmb3IgZGV0YWlscyAqLwp2YXIgWl9OT19GTFVTSCAgICAgID0gMDsKdmFyIFpfUEFSVElBTF9GTFVTSCA9IDE7Ci8vdmFyIFpfU1lOQ19GTFVTSCAgICA9IDI7CnZhciBaX0ZVTExfRkxVU0ggICAgPSAzOwp2YXIgWl9GSU5JU0ggICAgICAgID0gNDsKdmFyIFpfQkxPQ0sgICAgICAgICA9IDU7Ci8vdmFyIFpfVFJFRVMgICAgICAgICA9IDY7CgoKLyogUmV0dXJuIGNvZGVzIGZvciB0aGUgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBmdW5jdGlvbnMuIE5lZ2F0aXZlIHZhbHVlcwogKiBhcmUgZXJyb3JzLCBwb3NpdGl2ZSB2YWx1ZXMgYXJlIHVzZWQgZm9yIHNwZWNpYWwgYnV0IG5vcm1hbCBldmVudHMuCiAqLwp2YXIgWl9PSyAgICAgICAgICAgID0gMDsKdmFyIFpfU1RSRUFNX0VORCAgICA9IDE7Ci8vdmFyIFpfTkVFRF9ESUNUICAgICA9IDI7Ci8vdmFyIFpfRVJSTk8gICAgICAgICA9IC0xOwp2YXIgWl9TVFJFQU1fRVJST1IgID0gLTI7CnZhciBaX0RBVEFfRVJST1IgICAgPSAtMzsKLy92YXIgWl9NRU1fRVJST1IgICAgID0gLTQ7CnZhciBaX0JVRl9FUlJPUiAgICAgPSAtNTsKLy92YXIgWl9WRVJTSU9OX0VSUk9SID0gLTY7CgoKLyogY29tcHJlc3Npb24gbGV2ZWxzICovCi8vdmFyIFpfTk9fQ09NUFJFU1NJT04gICAgICA9IDA7Ci8vdmFyIFpfQkVTVF9TUEVFRCAgICAgICAgICA9IDE7Ci8vdmFyIFpfQkVTVF9DT01QUkVTU0lPTiAgICA9IDk7CnZhciBaX0RFRkFVTFRfQ09NUFJFU1NJT04gPSAtMTsKCgp2YXIgWl9GSUxURVJFRCAgICAgICAgICAgID0gMTsKdmFyIFpfSFVGRk1BTl9PTkxZICAgICAgICA9IDI7CnZhciBaX1JMRSAgICAgICAgICAgICAgICAgPSAzOwp2YXIgWl9GSVhFRCAgICAgICAgICAgICAgID0gNDsKdmFyIFpfREVGQVVMVF9TVFJBVEVHWSAgICA9IDA7CgovKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGRhdGFfdHlwZSBmaWVsZCAodGhvdWdoIHNlZSBpbmZsYXRlKCkpICovCi8vdmFyIFpfQklOQVJZICAgICAgICAgICAgICA9IDA7Ci8vdmFyIFpfVEVYVCAgICAgICAgICAgICAgICA9IDE7Ci8vdmFyIFpfQVNDSUkgICAgICAgICAgICAgICA9IDE7IC8vID0gWl9URVhUCnZhciBaX1VOS05PV04gICAgICAgICAgICAgPSAyOwoKCi8qIFRoZSBkZWZsYXRlIGNvbXByZXNzaW9uIG1ldGhvZCAqLwp2YXIgWl9ERUZMQVRFRCAgPSA4OwoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KCgp2YXIgTUFYX01FTV9MRVZFTCA9IDk7Ci8qIE1heGltdW0gdmFsdWUgZm9yIG1lbUxldmVsIGluIGRlZmxhdGVJbml0MiAqLwp2YXIgTUFYX1dCSVRTID0gMTU7Ci8qIDMySyBMWjc3IHdpbmRvdyAqLwp2YXIgREVGX01FTV9MRVZFTCA9IDg7CgoKdmFyIExFTkdUSF9DT0RFUyAgPSAyOTsKLyogbnVtYmVyIG9mIGxlbmd0aCBjb2Rlcywgbm90IGNvdW50aW5nIHRoZSBzcGVjaWFsIEVORF9CTE9DSyBjb2RlICovCnZhciBMSVRFUkFMUyAgICAgID0gMjU2OwovKiBudW1iZXIgb2YgbGl0ZXJhbCBieXRlcyAwLi4yNTUgKi8KdmFyIExfQ09ERVMgICAgICAgPSBMSVRFUkFMUyArIDEgKyBMRU5HVEhfQ09ERVM7Ci8qIG51bWJlciBvZiBMaXRlcmFsIG9yIExlbmd0aCBjb2RlcywgaW5jbHVkaW5nIHRoZSBFTkRfQkxPQ0sgY29kZSAqLwp2YXIgRF9DT0RFUyAgICAgICA9IDMwOwovKiBudW1iZXIgb2YgZGlzdGFuY2UgY29kZXMgKi8KdmFyIEJMX0NPREVTICAgICAgPSAxOTsKLyogbnVtYmVyIG9mIGNvZGVzIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGJpdCBsZW5ndGhzICovCnZhciBIRUFQX1NJWkUgICAgID0gMiAqIExfQ09ERVMgKyAxOwovKiBtYXhpbXVtIGhlYXAgc2l6ZSAqLwp2YXIgTUFYX0JJVFMgID0gMTU7Ci8qIEFsbCBjb2RlcyBtdXN0IG5vdCBleGNlZWQgTUFYX0JJVFMgYml0cyAqLwoKdmFyIE1JTl9NQVRDSCA9IDM7CnZhciBNQVhfTUFUQ0ggPSAyNTg7CnZhciBNSU5fTE9PS0FIRUFEID0gKE1BWF9NQVRDSCArIE1JTl9NQVRDSCArIDEpOwoKdmFyIFBSRVNFVF9ESUNUID0gMHgyMDsKCnZhciBJTklUX1NUQVRFID0gNDI7CnZhciBFWFRSQV9TVEFURSA9IDY5Owp2YXIgTkFNRV9TVEFURSA9IDczOwp2YXIgQ09NTUVOVF9TVEFURSA9IDkxOwp2YXIgSENSQ19TVEFURSA9IDEwMzsKdmFyIEJVU1lfU1RBVEUgPSAxMTM7CnZhciBGSU5JU0hfU1RBVEUgPSA2NjY7Cgp2YXIgQlNfTkVFRF9NT1JFICAgICAgPSAxOyAvKiBibG9jayBub3QgY29tcGxldGVkLCBuZWVkIG1vcmUgaW5wdXQgb3IgbW9yZSBvdXRwdXQgKi8KdmFyIEJTX0JMT0NLX0RPTkUgICAgID0gMjsgLyogYmxvY2sgZmx1c2ggcGVyZm9ybWVkICovCnZhciBCU19GSU5JU0hfU1RBUlRFRCA9IDM7IC8qIGZpbmlzaCBzdGFydGVkLCBuZWVkIG9ubHkgbW9yZSBvdXRwdXQgYXQgbmV4dCBkZWZsYXRlICovCnZhciBCU19GSU5JU0hfRE9ORSAgICA9IDQ7IC8qIGZpbmlzaCBkb25lLCBhY2NlcHQgbm8gbW9yZSBpbnB1dCBvciBvdXRwdXQgKi8KCnZhciBPU19DT0RFID0gMHgwMzsgLy8gVW5peCA6KSAuIERvbid0IGRldGVjdCwgdXNlIHRoaXMgZGVmYXVsdC4KCmZ1bmN0aW9uIGVycihzdHJtLCBlcnJvckNvZGUpIHsKICBzdHJtLm1zZyA9IG1zZ1tlcnJvckNvZGVdOwogIHJldHVybiBlcnJvckNvZGU7Cn0KCmZ1bmN0aW9uIHJhbmsoZikgewogIHJldHVybiAoKGYpIDw8IDEpIC0gKChmKSA+IDQgPyA5IDogMCk7Cn0KCmZ1bmN0aW9uIHplcm8oYnVmKSB7IHZhciBsZW4gPSBidWYubGVuZ3RoOyB3aGlsZSAoLS1sZW4gPj0gMCkgeyBidWZbbGVuXSA9IDA7IH0gfQoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogRmx1c2ggYXMgbXVjaCBwZW5kaW5nIG91dHB1dCBhcyBwb3NzaWJsZS4gQWxsIGRlZmxhdGUoKSBvdXRwdXQgZ29lcwogKiB0aHJvdWdoIHRoaXMgZnVuY3Rpb24gc28gc29tZSBhcHBsaWNhdGlvbnMgbWF5IHdpc2ggdG8gbW9kaWZ5IGl0CiAqIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSBsYXJnZSBzdHJtLT5vdXRwdXQgYnVmZmVyIGFuZCBjb3B5aW5nIGludG8gaXQuCiAqIChTZWUgYWxzbyByZWFkX2J1ZigpKS4KICovCmZ1bmN0aW9uIGZsdXNoX3BlbmRpbmcoc3RybSkgewogIHZhciBzID0gc3RybS5zdGF0ZTsKCiAgLy9fdHJfZmx1c2hfYml0cyhzKTsKICB2YXIgbGVuID0gcy5wZW5kaW5nOwogIGlmIChsZW4gPiBzdHJtLmF2YWlsX291dCkgewogICAgbGVuID0gc3RybS5hdmFpbF9vdXQ7CiAgfQogIGlmIChsZW4gPT09IDApIHsgcmV0dXJuOyB9CgogIHV0aWxzLmFycmF5U2V0KHN0cm0ub3V0cHV0LCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmdfb3V0LCBsZW4sIHN0cm0ubmV4dF9vdXQpOwogIHN0cm0ubmV4dF9vdXQgKz0gbGVuOwogIHMucGVuZGluZ19vdXQgKz0gbGVuOwogIHN0cm0udG90YWxfb3V0ICs9IGxlbjsKICBzdHJtLmF2YWlsX291dCAtPSBsZW47CiAgcy5wZW5kaW5nIC09IGxlbjsKICBpZiAocy5wZW5kaW5nID09PSAwKSB7CiAgICBzLnBlbmRpbmdfb3V0ID0gMDsKICB9Cn0KCgpmdW5jdGlvbiBmbHVzaF9ibG9ja19vbmx5KHMsIGxhc3QpIHsKICB0cmVlcy5fdHJfZmx1c2hfYmxvY2socywgKHMuYmxvY2tfc3RhcnQgPj0gMCA/IHMuYmxvY2tfc3RhcnQgOiAtMSksIHMuc3Ryc3RhcnQgLSBzLmJsb2NrX3N0YXJ0LCBsYXN0KTsKICBzLmJsb2NrX3N0YXJ0ID0gcy5zdHJzdGFydDsKICBmbHVzaF9wZW5kaW5nKHMuc3RybSk7Cn0KCgpmdW5jdGlvbiBwdXRfYnl0ZShzLCBiKSB7CiAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSBiOwp9CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBQdXQgYSBzaG9ydCBpbiB0aGUgcGVuZGluZyBidWZmZXIuIFRoZSAxNi1iaXQgdmFsdWUgaXMgcHV0IGluIE1TQiBvcmRlci4KICogSU4gYXNzZXJ0aW9uOiB0aGUgc3RyZWFtIHN0YXRlIGlzIGNvcnJlY3QgYW5kIHRoZXJlIGlzIGVub3VnaCByb29tIGluCiAqIHBlbmRpbmdfYnVmLgogKi8KZnVuY3Rpb24gcHV0U2hvcnRNU0IocywgYikgewovLyAgcHV0X2J5dGUocywgKEJ5dGUpKGIgPj4gOCkpOwovLyAgcHV0X2J5dGUocywgKEJ5dGUpKGIgJiAweGZmKSk7CiAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSAoYiA+Pj4gOCkgJiAweGZmOwogIHMucGVuZGluZ19idWZbcy5wZW5kaW5nKytdID0gYiAmIDB4ZmY7Cn0KCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogUmVhZCBhIG5ldyBidWZmZXIgZnJvbSB0aGUgY3VycmVudCBpbnB1dCBzdHJlYW0sIHVwZGF0ZSB0aGUgYWRsZXIzMgogKiBhbmQgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuICBBbGwgZGVmbGF0ZSgpIGlucHV0IGdvZXMgdGhyb3VnaAogKiB0aGlzIGZ1bmN0aW9uIHNvIHNvbWUgYXBwbGljYXRpb25zIG1heSB3aXNoIHRvIG1vZGlmeSBpdCB0byBhdm9pZAogKiBhbGxvY2F0aW5nIGEgbGFyZ2Ugc3RybS0+aW5wdXQgYnVmZmVyIGFuZCBjb3B5aW5nIGZyb20gaXQuCiAqIChTZWUgYWxzbyBmbHVzaF9wZW5kaW5nKCkpLgogKi8KZnVuY3Rpb24gcmVhZF9idWYoc3RybSwgYnVmLCBzdGFydCwgc2l6ZSkgewogIHZhciBsZW4gPSBzdHJtLmF2YWlsX2luOwoKICBpZiAobGVuID4gc2l6ZSkgeyBsZW4gPSBzaXplOyB9CiAgaWYgKGxlbiA9PT0gMCkgeyByZXR1cm4gMDsgfQoKICBzdHJtLmF2YWlsX2luIC09IGxlbjsKCiAgLy8gem1lbWNweShidWYsIHN0cm0tPm5leHRfaW4sIGxlbik7CiAgdXRpbHMuYXJyYXlTZXQoYnVmLCBzdHJtLmlucHV0LCBzdHJtLm5leHRfaW4sIGxlbiwgc3RhcnQpOwogIGlmIChzdHJtLnN0YXRlLndyYXAgPT09IDEpIHsKICAgIHN0cm0uYWRsZXIgPSBhZGxlcjMyKHN0cm0uYWRsZXIsIGJ1ZiwgbGVuLCBzdGFydCk7CiAgfQoKICBlbHNlIGlmIChzdHJtLnN0YXRlLndyYXAgPT09IDIpIHsKICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBidWYsIGxlbiwgc3RhcnQpOwogIH0KCiAgc3RybS5uZXh0X2luICs9IGxlbjsKICBzdHJtLnRvdGFsX2luICs9IGxlbjsKCiAgcmV0dXJuIGxlbjsKfQoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBTZXQgbWF0Y2hfc3RhcnQgdG8gdGhlIGxvbmdlc3QgbWF0Y2ggc3RhcnRpbmcgYXQgdGhlIGdpdmVuIHN0cmluZyBhbmQKICogcmV0dXJuIGl0cyBsZW5ndGguIE1hdGNoZXMgc2hvcnRlciBvciBlcXVhbCB0byBwcmV2X2xlbmd0aCBhcmUgZGlzY2FyZGVkLAogKiBpbiB3aGljaCBjYXNlIHRoZSByZXN1bHQgaXMgZXF1YWwgdG8gcHJldl9sZW5ndGggYW5kIG1hdGNoX3N0YXJ0IGlzCiAqIGdhcmJhZ2UuCiAqIElOIGFzc2VydGlvbnM6IGN1cl9tYXRjaCBpcyB0aGUgaGVhZCBvZiB0aGUgaGFzaCBjaGFpbiBmb3IgdGhlIGN1cnJlbnQKICogICBzdHJpbmcgKHN0cnN0YXJ0KSBhbmQgaXRzIGRpc3RhbmNlIGlzIDw9IE1BWF9ESVNULCBhbmQgcHJldl9sZW5ndGggPj0gMQogKiBPVVQgYXNzZXJ0aW9uOiB0aGUgbWF0Y2ggbGVuZ3RoIGlzIG5vdCBncmVhdGVyIHRoYW4gcy0+bG9va2FoZWFkLgogKi8KZnVuY3Rpb24gbG9uZ2VzdF9tYXRjaChzLCBjdXJfbWF0Y2gpIHsKICB2YXIgY2hhaW5fbGVuZ3RoID0gcy5tYXhfY2hhaW5fbGVuZ3RoOyAgICAgIC8qIG1heCBoYXNoIGNoYWluIGxlbmd0aCAqLwogIHZhciBzY2FuID0gcy5zdHJzdGFydDsgLyogY3VycmVudCBzdHJpbmcgKi8KICB2YXIgbWF0Y2g7ICAgICAgICAgICAgICAgICAgICAgICAvKiBtYXRjaGVkIHN0cmluZyAqLwogIHZhciBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGVuZ3RoIG9mIGN1cnJlbnQgbWF0Y2ggKi8KICB2YXIgYmVzdF9sZW4gPSBzLnByZXZfbGVuZ3RoOyAgICAgICAgICAgICAgLyogYmVzdCBtYXRjaCBsZW5ndGggc28gZmFyICovCiAgdmFyIG5pY2VfbWF0Y2ggPSBzLm5pY2VfbWF0Y2g7ICAgICAgICAgICAgIC8qIHN0b3AgaWYgbWF0Y2ggbG9uZyBlbm91Z2ggKi8KICB2YXIgbGltaXQgPSAocy5zdHJzdGFydCA+IChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpKSA/CiAgICAgIHMuc3Ryc3RhcnQgLSAocy53X3NpemUgLSBNSU5fTE9PS0FIRUFEKSA6IDAvKk5JTCovOwoKICB2YXIgX3dpbiA9IHMud2luZG93OyAvLyBzaG9ydGN1dAoKICB2YXIgd21hc2sgPSBzLndfbWFzazsKICB2YXIgcHJldiAgPSBzLnByZXY7CgogIC8qIFN0b3Agd2hlbiBjdXJfbWF0Y2ggYmVjb21lcyA8PSBsaW1pdC4gVG8gc2ltcGxpZnkgdGhlIGNvZGUsCiAgICogd2UgcHJldmVudCBtYXRjaGVzIHdpdGggdGhlIHN0cmluZyBvZiB3aW5kb3cgaW5kZXggMC4KICAgKi8KCiAgdmFyIHN0cmVuZCA9IHMuc3Ryc3RhcnQgKyBNQVhfTUFUQ0g7CiAgdmFyIHNjYW5fZW5kMSAgPSBfd2luW3NjYW4gKyBiZXN0X2xlbiAtIDFdOwogIHZhciBzY2FuX2VuZCAgID0gX3dpbltzY2FuICsgYmVzdF9sZW5dOwoKICAvKiBUaGUgY29kZSBpcyBvcHRpbWl6ZWQgZm9yIEhBU0hfQklUUyA+PSA4IGFuZCBNQVhfTUFUQ0gtMiBtdWx0aXBsZSBvZiAxNi4KICAgKiBJdCBpcyBlYXN5IHRvIGdldCByaWQgb2YgdGhpcyBvcHRpbWl6YXRpb24gaWYgbmVjZXNzYXJ5LgogICAqLwogIC8vIEFzc2VydChzLT5oYXNoX2JpdHMgPj0gOCAmJiBNQVhfTUFUQ0ggPT0gMjU4LCAiQ29kZSB0b28gY2xldmVyIik7CgogIC8qIERvIG5vdCB3YXN0ZSB0b28gbXVjaCB0aW1lIGlmIHdlIGFscmVhZHkgaGF2ZSBhIGdvb2QgbWF0Y2g6ICovCiAgaWYgKHMucHJldl9sZW5ndGggPj0gcy5nb29kX21hdGNoKSB7CiAgICBjaGFpbl9sZW5ndGggPj49IDI7CiAgfQogIC8qIERvIG5vdCBsb29rIGZvciBtYXRjaGVzIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBpbnB1dC4gVGhpcyBpcyBuZWNlc3NhcnkKICAgKiB0byBtYWtlIGRlZmxhdGUgZGV0ZXJtaW5pc3RpYy4KICAgKi8KICBpZiAobmljZV9tYXRjaCA+IHMubG9va2FoZWFkKSB7IG5pY2VfbWF0Y2ggPSBzLmxvb2thaGVhZDsgfQoKICAvLyBBc3NlcnQoKHVsZylzLT5zdHJzdGFydCA8PSBzLT53aW5kb3dfc2l6ZS1NSU5fTE9PS0FIRUFELCAibmVlZCBsb29rYWhlYWQiKTsKCiAgZG8gewogICAgLy8gQXNzZXJ0KGN1cl9tYXRjaCA8IHMtPnN0cnN0YXJ0LCAibm8gZnV0dXJlIik7CiAgICBtYXRjaCA9IGN1cl9tYXRjaDsKCiAgICAvKiBTa2lwIHRvIG5leHQgbWF0Y2ggaWYgdGhlIG1hdGNoIGxlbmd0aCBjYW5ub3QgaW5jcmVhc2UKICAgICAqIG9yIGlmIHRoZSBtYXRjaCBsZW5ndGggaXMgbGVzcyB0aGFuIDIuICBOb3RlIHRoYXQgdGhlIGNoZWNrcyBiZWxvdwogICAgICogZm9yIGluc3VmZmljaWVudCBsb29rYWhlYWQgb25seSBvY2N1ciBvY2Nhc2lvbmFsbHkgZm9yIHBlcmZvcm1hbmNlCiAgICAgKiByZWFzb25zLiAgVGhlcmVmb3JlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHdpbGwgYmUgYWNjZXNzZWQsIGFuZAogICAgICogY29uZGl0aW9uYWwganVtcHMgd2lsbCBiZSBtYWRlIHRoYXQgZGVwZW5kIG9uIHRob3NlIHZhbHVlcy4KICAgICAqIEhvd2V2ZXIgdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2ggaXMgbGltaXRlZCB0byB0aGUgbG9va2FoZWFkLCBzbwogICAgICogdGhlIG91dHB1dCBvZiBkZWZsYXRlIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgdW5pbml0aWFsaXplZCB2YWx1ZXMuCiAgICAgKi8KCiAgICBpZiAoX3dpblttYXRjaCArIGJlc3RfbGVuXSAgICAgIT09IHNjYW5fZW5kICB8fAogICAgICAgIF93aW5bbWF0Y2ggKyBiZXN0X2xlbiAtIDFdICE9PSBzY2FuX2VuZDEgfHwKICAgICAgICBfd2luW21hdGNoXSAgICAgICAgICAgICAgICAhPT0gX3dpbltzY2FuXSB8fAogICAgICAgIF93aW5bKyttYXRjaF0gICAgICAgICAgICAgICE9PSBfd2luW3NjYW4gKyAxXSkgewogICAgICBjb250aW51ZTsKICAgIH0KCiAgICAvKiBUaGUgY2hlY2sgYXQgYmVzdF9sZW4tMSBjYW4gYmUgcmVtb3ZlZCBiZWNhdXNlIGl0IHdpbGwgYmUgbWFkZQogICAgICogYWdhaW4gbGF0ZXIuIChUaGlzIGhldXJpc3RpYyBpcyBub3QgYWx3YXlzIGEgd2luLikKICAgICAqIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY29tcGFyZSBzY2FuWzJdIGFuZCBtYXRjaFsyXSBzaW5jZSB0aGV5CiAgICAgKiBhcmUgYWx3YXlzIGVxdWFsIHdoZW4gdGhlIG90aGVyIGJ5dGVzIG1hdGNoLCBnaXZlbiB0aGF0CiAgICAgKiB0aGUgaGFzaCBrZXlzIGFyZSBlcXVhbCBhbmQgdGhhdCBIQVNIX0JJVFMgPj0gOC4KICAgICAqLwogICAgc2NhbiArPSAyOwogICAgbWF0Y2grKzsKICAgIC8vIEFzc2VydCgqc2NhbiA9PSAqbWF0Y2gsICJtYXRjaFsyXT8iKTsKCiAgICAvKiBXZSBjaGVjayBmb3IgaW5zdWZmaWNpZW50IGxvb2thaGVhZCBvbmx5IGV2ZXJ5IDh0aCBjb21wYXJpc29uOwogICAgICogdGhlIDI1NnRoIGNoZWNrIHdpbGwgYmUgbWFkZSBhdCBzdHJzdGFydCsyNTguCiAgICAgKi8KICAgIGRvIHsKICAgICAgLypqc2hpbnQgbm9lbXB0eTpmYWxzZSovCiAgICB9IHdoaWxlIChfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiYgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmCiAgICAgICAgICAgICBfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiYgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmCiAgICAgICAgICAgICBfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiYgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmCiAgICAgICAgICAgICBfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiYgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmCiAgICAgICAgICAgICBzY2FuIDwgc3RyZW5kKTsKCiAgICAvLyBBc3NlcnQoc2NhbiA8PSBzLT53aW5kb3crKHVuc2lnbmVkKShzLT53aW5kb3dfc2l6ZS0xKSwgIndpbGQgc2NhbiIpOwoKICAgIGxlbiA9IE1BWF9NQVRDSCAtIChzdHJlbmQgLSBzY2FuKTsKICAgIHNjYW4gPSBzdHJlbmQgLSBNQVhfTUFUQ0g7CgogICAgaWYgKGxlbiA+IGJlc3RfbGVuKSB7CiAgICAgIHMubWF0Y2hfc3RhcnQgPSBjdXJfbWF0Y2g7CiAgICAgIGJlc3RfbGVuID0gbGVuOwogICAgICBpZiAobGVuID49IG5pY2VfbWF0Y2gpIHsKICAgICAgICBicmVhazsKICAgICAgfQogICAgICBzY2FuX2VuZDEgID0gX3dpbltzY2FuICsgYmVzdF9sZW4gLSAxXTsKICAgICAgc2Nhbl9lbmQgICA9IF93aW5bc2NhbiArIGJlc3RfbGVuXTsKICAgIH0KICB9IHdoaWxlICgoY3VyX21hdGNoID0gcHJldltjdXJfbWF0Y2ggJiB3bWFza10pID4gbGltaXQgJiYgLS1jaGFpbl9sZW5ndGggIT09IDApOwoKICBpZiAoYmVzdF9sZW4gPD0gcy5sb29rYWhlYWQpIHsKICAgIHJldHVybiBiZXN0X2xlbjsKICB9CiAgcmV0dXJuIHMubG9va2FoZWFkOwp9CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIEZpbGwgdGhlIHdpbmRvdyB3aGVuIHRoZSBsb29rYWhlYWQgYmVjb21lcyBpbnN1ZmZpY2llbnQuCiAqIFVwZGF0ZXMgc3Ryc3RhcnQgYW5kIGxvb2thaGVhZC4KICoKICogSU4gYXNzZXJ0aW9uOiBsb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFECiAqIE9VVCBhc3NlcnRpb25zOiBzdHJzdGFydCA8PSB3aW5kb3dfc2l6ZS1NSU5fTE9PS0FIRUFECiAqICAgIEF0IGxlYXN0IG9uZSBieXRlIGhhcyBiZWVuIHJlYWQsIG9yIGF2YWlsX2luID09IDA7IHJlYWRzIGFyZQogKiAgICBwZXJmb3JtZWQgZm9yIGF0IGxlYXN0IHR3byBieXRlcyAocmVxdWlyZWQgZm9yIHRoZSB6aXAgdHJhbnNsYXRlX2VvbAogKiAgICBvcHRpb24gLS0gbm90IHN1cHBvcnRlZCBoZXJlKS4KICovCmZ1bmN0aW9uIGZpbGxfd2luZG93KHMpIHsKICB2YXIgX3dfc2l6ZSA9IHMud19zaXplOwogIHZhciBwLCBuLCBtLCBtb3JlLCBzdHI7CgogIC8vQXNzZXJ0KHMtPmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQsICJhbHJlYWR5IGVub3VnaCBsb29rYWhlYWQiKTsKCiAgZG8gewogICAgbW9yZSA9IHMud2luZG93X3NpemUgLSBzLmxvb2thaGVhZCAtIHMuc3Ryc3RhcnQ7CgogICAgLy8gSlMgaW50cyBoYXZlIDMyIGJpdCwgYmxvY2sgYmVsb3cgbm90IG5lZWRlZAogICAgLyogRGVhbCB3aXRoICFAIyQlIDY0SyBsaW1pdDogKi8KICAgIC8vaWYgKHNpemVvZihpbnQpIDw9IDIpIHsKICAgIC8vICAgIGlmIChtb3JlID09IDAgJiYgcy0+c3Ryc3RhcnQgPT0gMCAmJiBzLT5sb29rYWhlYWQgPT0gMCkgewogICAgLy8gICAgICAgIG1vcmUgPSB3c2l6ZTsKICAgIC8vCiAgICAvLyAgfSBlbHNlIGlmIChtb3JlID09ICh1bnNpZ25lZCkoLTEpKSB7CiAgICAvLyAgICAgICAgLyogVmVyeSB1bmxpa2VseSwgYnV0IHBvc3NpYmxlIG9uIDE2IGJpdCBtYWNoaW5lIGlmCiAgICAvLyAgICAgICAgICogc3Ryc3RhcnQgPT0gMCAmJiBsb29rYWhlYWQgPT0gMSAoaW5wdXQgZG9uZSBhIGJ5dGUgYXQgdGltZSkKICAgIC8vICAgICAgICAgKi8KICAgIC8vICAgICAgICBtb3JlLS07CiAgICAvLyAgICB9CiAgICAvL30KCgogICAgLyogSWYgdGhlIHdpbmRvdyBpcyBhbG1vc3QgZnVsbCBhbmQgdGhlcmUgaXMgaW5zdWZmaWNpZW50IGxvb2thaGVhZCwKICAgICAqIG1vdmUgdGhlIHVwcGVyIGhhbGYgdG8gdGhlIGxvd2VyIG9uZSB0byBtYWtlIHJvb20gaW4gdGhlIHVwcGVyIGhhbGYuCiAgICAgKi8KICAgIGlmIChzLnN0cnN0YXJ0ID49IF93X3NpemUgKyAoX3dfc2l6ZSAtIE1JTl9MT09LQUhFQUQpKSB7CgogICAgICB1dGlscy5hcnJheVNldChzLndpbmRvdywgcy53aW5kb3csIF93X3NpemUsIF93X3NpemUsIDApOwogICAgICBzLm1hdGNoX3N0YXJ0IC09IF93X3NpemU7CiAgICAgIHMuc3Ryc3RhcnQgLT0gX3dfc2l6ZTsKICAgICAgLyogd2Ugbm93IGhhdmUgc3Ryc3RhcnQgPj0gTUFYX0RJU1QgKi8KICAgICAgcy5ibG9ja19zdGFydCAtPSBfd19zaXplOwoKICAgICAgLyogU2xpZGUgdGhlIGhhc2ggdGFibGUgKGNvdWxkIGJlIGF2b2lkZWQgd2l0aCAzMiBiaXQgdmFsdWVzCiAgICAgICBhdCB0aGUgZXhwZW5zZSBvZiBtZW1vcnkgdXNhZ2UpLiBXZSBzbGlkZSBldmVuIHdoZW4gbGV2ZWwgPT0gMAogICAgICAgdG8ga2VlcCB0aGUgaGFzaCB0YWJsZSBjb25zaXN0ZW50IGlmIHdlIHN3aXRjaCBiYWNrIHRvIGxldmVsID4gMAogICAgICAgbGF0ZXIuIChVc2luZyBsZXZlbCAwIHBlcm1hbmVudGx5IGlzIG5vdCBhbiBvcHRpbWFsIHVzYWdlIG9mCiAgICAgICB6bGliLCBzbyB3ZSBkb24ndCBjYXJlIGFib3V0IHRoaXMgcGF0aG9sb2dpY2FsIGNhc2UuKQogICAgICAgKi8KCiAgICAgIG4gPSBzLmhhc2hfc2l6ZTsKICAgICAgcCA9IG47CiAgICAgIGRvIHsKICAgICAgICBtID0gcy5oZWFkWy0tcF07CiAgICAgICAgcy5oZWFkW3BdID0gKG0gPj0gX3dfc2l6ZSA/IG0gLSBfd19zaXplIDogMCk7CiAgICAgIH0gd2hpbGUgKC0tbik7CgogICAgICBuID0gX3dfc2l6ZTsKICAgICAgcCA9IG47CiAgICAgIGRvIHsKICAgICAgICBtID0gcy5wcmV2Wy0tcF07CiAgICAgICAgcy5wcmV2W3BdID0gKG0gPj0gX3dfc2l6ZSA/IG0gLSBfd19zaXplIDogMCk7CiAgICAgICAgLyogSWYgbiBpcyBub3Qgb24gYW55IGhhc2ggY2hhaW4sIHByZXZbbl0gaXMgZ2FyYmFnZSBidXQKICAgICAgICAgKiBpdHMgdmFsdWUgd2lsbCBuZXZlciBiZSB1c2VkLgogICAgICAgICAqLwogICAgICB9IHdoaWxlICgtLW4pOwoKICAgICAgbW9yZSArPSBfd19zaXplOwogICAgfQogICAgaWYgKHMuc3RybS5hdmFpbF9pbiA9PT0gMCkgewogICAgICBicmVhazsKICAgIH0KCiAgICAvKiBJZiB0aGVyZSB3YXMgbm8gc2xpZGluZzoKICAgICAqICAgIHN0cnN0YXJ0IDw9IFdTSVpFK01BWF9ESVNULTEgJiYgbG9va2FoZWFkIDw9IE1JTl9MT09LQUhFQUQgLSAxICYmCiAgICAgKiAgICBtb3JlID09IHdpbmRvd19zaXplIC0gbG9va2FoZWFkIC0gc3Ryc3RhcnQKICAgICAqID0+IG1vcmUgPj0gd2luZG93X3NpemUgLSAoTUlOX0xPT0tBSEVBRC0xICsgV1NJWkUgKyBNQVhfRElTVC0xKQogICAgICogPT4gbW9yZSA+PSB3aW5kb3dfc2l6ZSAtIDIqV1NJWkUgKyAyCiAgICAgKiBJbiB0aGUgQklHX01FTSBvciBNTUFQIGNhc2UgKG5vdCB5ZXQgc3VwcG9ydGVkKSwKICAgICAqICAgd2luZG93X3NpemUgPT0gaW5wdXRfc2l6ZSArIE1JTl9MT09LQUhFQUQgICYmCiAgICAgKiAgIHN0cnN0YXJ0ICsgcy0+bG9va2FoZWFkIDw9IGlucHV0X3NpemUgPT4gbW9yZSA+PSBNSU5fTE9PS0FIRUFELgogICAgICogT3RoZXJ3aXNlLCB3aW5kb3dfc2l6ZSA9PSAyKldTSVpFIHNvIG1vcmUgPj0gMi4KICAgICAqIElmIHRoZXJlIHdhcyBzbGlkaW5nLCBtb3JlID49IFdTSVpFLiBTbyBpbiBhbGwgY2FzZXMsIG1vcmUgPj0gMi4KICAgICAqLwogICAgLy9Bc3NlcnQobW9yZSA+PSAyLCAibW9yZSA8IDIiKTsKICAgIG4gPSByZWFkX2J1ZihzLnN0cm0sIHMud2luZG93LCBzLnN0cnN0YXJ0ICsgcy5sb29rYWhlYWQsIG1vcmUpOwogICAgcy5sb29rYWhlYWQgKz0gbjsKCiAgICAvKiBJbml0aWFsaXplIHRoZSBoYXNoIHZhbHVlIG5vdyB0aGF0IHdlIGhhdmUgc29tZSBpbnB1dDogKi8KICAgIGlmIChzLmxvb2thaGVhZCArIHMuaW5zZXJ0ID49IE1JTl9NQVRDSCkgewogICAgICBzdHIgPSBzLnN0cnN0YXJ0IC0gcy5pbnNlcnQ7CiAgICAgIHMuaW5zX2ggPSBzLndpbmRvd1tzdHJdOwoKICAgICAgLyogVVBEQVRFX0hBU0gocywgcy0+aW5zX2gsIHMtPndpbmRvd1tzdHIgKyAxXSk7ICovCiAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3N0ciArIDFdKSAmIHMuaGFzaF9tYXNrOwovLyNpZiBNSU5fTUFUQ0ggIT0gMwovLyAgICAgICAgQ2FsbCB1cGRhdGVfaGFzaCgpIE1JTl9NQVRDSC0zIG1vcmUgdGltZXMKLy8jZW5kaWYKICAgICAgd2hpbGUgKHMuaW5zZXJ0KSB7CiAgICAgICAgLyogVVBEQVRFX0hBU0gocywgcy0+aW5zX2gsIHMtPndpbmRvd1tzdHIgKyBNSU5fTUFUQ0gtMV0pOyAqLwogICAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3N0ciArIE1JTl9NQVRDSCAtIDFdKSAmIHMuaGFzaF9tYXNrOwoKICAgICAgICBzLnByZXZbc3RyICYgcy53X21hc2tdID0gcy5oZWFkW3MuaW5zX2hdOwogICAgICAgIHMuaGVhZFtzLmluc19oXSA9IHN0cjsKICAgICAgICBzdHIrKzsKICAgICAgICBzLmluc2VydC0tOwogICAgICAgIGlmIChzLmxvb2thaGVhZCArIHMuaW5zZXJ0IDwgTUlOX01BVENIKSB7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIC8qIElmIHRoZSB3aG9sZSBpbnB1dCBoYXMgbGVzcyB0aGFuIE1JTl9NQVRDSCBieXRlcywgaW5zX2ggaXMgZ2FyYmFnZSwKICAgICAqIGJ1dCB0aGlzIGlzIG5vdCBpbXBvcnRhbnQgc2luY2Ugb25seSBsaXRlcmFsIGJ5dGVzIHdpbGwgYmUgZW1pdHRlZC4KICAgICAqLwoKICB9IHdoaWxlIChzLmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQgJiYgcy5zdHJtLmF2YWlsX2luICE9PSAwKTsKCiAgLyogSWYgdGhlIFdJTl9JTklUIGJ5dGVzIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgZGF0YSBoYXZlIG5ldmVyIGJlZW4KICAgKiB3cml0dGVuLCB0aGVuIHplcm8gdGhvc2UgYnl0ZXMgaW4gb3JkZXIgdG8gYXZvaWQgbWVtb3J5IGNoZWNrIHJlcG9ydHMgb2YKICAgKiB0aGUgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgKG9yIHVuaW5pdGlhbGlzZWQgYXMgSnVsaWFuIHdyaXRlcykgYnl0ZXMgYnkKICAgKiB0aGUgbG9uZ2VzdCBtYXRjaCByb3V0aW5lcy4gIFVwZGF0ZSB0aGUgaGlnaCB3YXRlciBtYXJrIGZvciB0aGUgbmV4dAogICAqIHRpbWUgdGhyb3VnaCBoZXJlLiAgV0lOX0lOSVQgaXMgc2V0IHRvIE1BWF9NQVRDSCBzaW5jZSB0aGUgbG9uZ2VzdCBtYXRjaAogICAqIHJvdXRpbmVzIGFsbG93IHNjYW5uaW5nIHRvIHN0cnN0YXJ0ICsgTUFYX01BVENILCBpZ25vcmluZyBsb29rYWhlYWQuCiAgICovCi8vICBpZiAocy5oaWdoX3dhdGVyIDwgcy53aW5kb3dfc2l6ZSkgewovLyAgICB2YXIgY3VyciA9IHMuc3Ryc3RhcnQgKyBzLmxvb2thaGVhZDsKLy8gICAgdmFyIGluaXQgPSAwOwovLwovLyAgICBpZiAocy5oaWdoX3dhdGVyIDwgY3VycikgewovLyAgICAgIC8qIFByZXZpb3VzIGhpZ2ggd2F0ZXIgbWFyayBiZWxvdyBjdXJyZW50IGRhdGEgLS0gemVybyBXSU5fSU5JVAovLyAgICAgICAqIGJ5dGVzIG9yIHVwIHRvIGVuZCBvZiB3aW5kb3csIHdoaWNoZXZlciBpcyBsZXNzLgovLyAgICAgICAqLwovLyAgICAgIGluaXQgPSBzLndpbmRvd19zaXplIC0gY3VycjsKLy8gICAgICBpZiAoaW5pdCA+IFdJTl9JTklUKQovLyAgICAgICAgaW5pdCA9IFdJTl9JTklUOwovLyAgICAgIHptZW16ZXJvKHMtPndpbmRvdyArIGN1cnIsICh1bnNpZ25lZClpbml0KTsKLy8gICAgICBzLT5oaWdoX3dhdGVyID0gY3VyciArIGluaXQ7Ci8vICAgIH0KLy8gICAgZWxzZSBpZiAocy0+aGlnaF93YXRlciA8ICh1bGcpY3VyciArIFdJTl9JTklUKSB7Ci8vICAgICAgLyogSGlnaCB3YXRlciBtYXJrIGF0IG9yIGFib3ZlIGN1cnJlbnQgZGF0YSwgYnV0IGJlbG93IGN1cnJlbnQgZGF0YQovLyAgICAgICAqIHBsdXMgV0lOX0lOSVQgLS0gemVybyBvdXQgdG8gY3VycmVudCBkYXRhIHBsdXMgV0lOX0lOSVQsIG9yIHVwCi8vICAgICAgICogdG8gZW5kIG9mIHdpbmRvdywgd2hpY2hldmVyIGlzIGxlc3MuCi8vICAgICAgICovCi8vICAgICAgaW5pdCA9ICh1bGcpY3VyciArIFdJTl9JTklUIC0gcy0+aGlnaF93YXRlcjsKLy8gICAgICBpZiAoaW5pdCA+IHMtPndpbmRvd19zaXplIC0gcy0+aGlnaF93YXRlcikKLy8gICAgICAgIGluaXQgPSBzLT53aW5kb3dfc2l6ZSAtIHMtPmhpZ2hfd2F0ZXI7Ci8vICAgICAgem1lbXplcm8ocy0+d2luZG93ICsgcy0+aGlnaF93YXRlciwgKHVuc2lnbmVkKWluaXQpOwovLyAgICAgIHMtPmhpZ2hfd2F0ZXIgKz0gaW5pdDsKLy8gICAgfQovLyAgfQovLwovLyAgQXNzZXJ0KCh1bGcpcy0+c3Ryc3RhcnQgPD0gcy0+d2luZG93X3NpemUgLSBNSU5fTE9PS0FIRUFELAovLyAgICAibm90IGVub3VnaCByb29tIGZvciBzZWFyY2giKTsKfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIENvcHkgd2l0aG91dCBjb21wcmVzc2lvbiBhcyBtdWNoIGFzIHBvc3NpYmxlIGZyb20gdGhlIGlucHV0IHN0cmVhbSwgcmV0dXJuCiAqIHRoZSBjdXJyZW50IGJsb2NrIHN0YXRlLgogKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGluc2VydCBuZXcgc3RyaW5ncyBpbiB0aGUgZGljdGlvbmFyeSBzaW5jZQogKiB1bmNvbXByZXNzaWJsZSBkYXRhIGlzIHByb2JhYmx5IG5vdCB1c2VmdWwuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZAogKiBvbmx5IGZvciB0aGUgbGV2ZWw9MCBjb21wcmVzc2lvbiBvcHRpb24uCiAqIE5PVEU6IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIG9wdGltaXplZCB0byBhdm9pZCBleHRyYSBjb3B5aW5nIGZyb20KICogd2luZG93IHRvIHBlbmRpbmdfYnVmLgogKi8KZnVuY3Rpb24gZGVmbGF0ZV9zdG9yZWQocywgZmx1c2gpIHsKICAvKiBTdG9yZWQgYmxvY2tzIGFyZSBsaW1pdGVkIHRvIDB4ZmZmZiBieXRlcywgcGVuZGluZ19idWYgaXMgbGltaXRlZAogICAqIHRvIHBlbmRpbmdfYnVmX3NpemUsIGFuZCBlYWNoIHN0b3JlZCBibG9jayBoYXMgYSA1IGJ5dGUgaGVhZGVyOgogICAqLwogIHZhciBtYXhfYmxvY2tfc2l6ZSA9IDB4ZmZmZjsKCiAgaWYgKG1heF9ibG9ja19zaXplID4gcy5wZW5kaW5nX2J1Zl9zaXplIC0gNSkgewogICAgbWF4X2Jsb2NrX3NpemUgPSBzLnBlbmRpbmdfYnVmX3NpemUgLSA1OwogIH0KCiAgLyogQ29weSBhcyBtdWNoIGFzIHBvc3NpYmxlIGZyb20gaW5wdXQgdG8gb3V0cHV0OiAqLwogIGZvciAoOzspIHsKICAgIC8qIEZpbGwgdGhlIHdpbmRvdyBhcyBtdWNoIGFzIHBvc3NpYmxlOiAqLwogICAgaWYgKHMubG9va2FoZWFkIDw9IDEpIHsKCiAgICAgIC8vQXNzZXJ0KHMtPnN0cnN0YXJ0IDwgcy0+d19zaXplK01BWF9ESVNUKHMpIHx8CiAgICAgIC8vICBzLT5ibG9ja19zdGFydCA+PSAobG9uZylzLT53X3NpemUsICJzbGlkZSB0b28gbGF0ZSIpOwovLyAgICAgIGlmICghKHMuc3Ryc3RhcnQgPCBzLndfc2l6ZSArIChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpIHx8Ci8vICAgICAgICBzLmJsb2NrX3N0YXJ0ID49IHMud19zaXplKSkgewovLyAgICAgICAgdGhyb3cgIG5ldyBFcnJvcigic2xpZGUgdG9vIGxhdGUiKTsKLy8gICAgICB9CgogICAgICBmaWxsX3dpbmRvdyhzKTsKICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwICYmIGZsdXNoID09PSBaX05PX0ZMVVNIKSB7CiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTsKICAgICAgfQoKICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgLyogZmx1c2ggdGhlIGN1cnJlbnQgYmxvY2sgKi8KICAgIH0KICAgIC8vQXNzZXJ0KHMtPmJsb2NrX3N0YXJ0ID49IDBMLCAiYmxvY2sgZ29uZSIpOwovLyAgICBpZiAocy5ibG9ja19zdGFydCA8IDApIHRocm93IG5ldyBFcnJvcigiYmxvY2sgZ29uZSIpOwoKICAgIHMuc3Ryc3RhcnQgKz0gcy5sb29rYWhlYWQ7CiAgICBzLmxvb2thaGVhZCA9IDA7CgogICAgLyogRW1pdCBhIHN0b3JlZCBibG9jayBpZiBwZW5kaW5nX2J1ZiB3aWxsIGJlIGZ1bGw6ICovCiAgICB2YXIgbWF4X3N0YXJ0ID0gcy5ibG9ja19zdGFydCArIG1heF9ibG9ja19zaXplOwoKICAgIGlmIChzLnN0cnN0YXJ0ID09PSAwIHx8IHMuc3Ryc3RhcnQgPj0gbWF4X3N0YXJ0KSB7CiAgICAgIC8qIHN0cnN0YXJ0ID09IDAgaXMgcG9zc2libGUgd2hlbiB3cmFwYXJvdW5kIG9uIDE2LWJpdCBtYWNoaW5lICovCiAgICAgIHMubG9va2FoZWFkID0gcy5zdHJzdGFydCAtIG1heF9zdGFydDsKICAgICAgcy5zdHJzdGFydCA9IG1heF9zdGFydDsKICAgICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqLwogICAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTsKICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFOwogICAgICB9CiAgICAgIC8qKiovCgoKICAgIH0KICAgIC8qIEZsdXNoIGlmIHdlIG1heSBoYXZlIHRvIHNsaWRlLCBvdGhlcndpc2UgYmxvY2tfc3RhcnQgbWF5IGJlY29tZQogICAgICogbmVnYXRpdmUgYW5kIHRoZSBkYXRhIHdpbGwgYmUgZ29uZToKICAgICAqLwogICAgaWYgKHMuc3Ryc3RhcnQgLSBzLmJsb2NrX3N0YXJ0ID49IChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpKSB7CiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi8KICAgICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7CiAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7CiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTsKICAgICAgfQogICAgICAvKioqLwogICAgfQogIH0KCiAgcy5pbnNlcnQgPSAwOwoKICBpZiAoZmx1c2ggPT09IFpfRklOSVNIKSB7CiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDEpOyAqKiovCiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpOwogICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEOwogICAgfQogICAgLyoqKi8KICAgIHJldHVybiBCU19GSU5JU0hfRE9ORTsKICB9CgogIGlmIChzLnN0cnN0YXJ0ID4gcy5ibG9ja19zdGFydCkgewogICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqLwogICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7CiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkgewogICAgICByZXR1cm4gQlNfTkVFRF9NT1JFOwogICAgfQogICAgLyoqKi8KICB9CgogIHJldHVybiBCU19ORUVEX01PUkU7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBDb21wcmVzcyBhcyBtdWNoIGFzIHBvc3NpYmxlIGZyb20gdGhlIGlucHV0IHN0cmVhbSwgcmV0dXJuIHRoZSBjdXJyZW50CiAqIGJsb2NrIHN0YXRlLgogKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHBlcmZvcm0gbGF6eSBldmFsdWF0aW9uIG9mIG1hdGNoZXMgYW5kIGluc2VydHMKICogbmV3IHN0cmluZ3MgaW4gdGhlIGRpY3Rpb25hcnkgb25seSBmb3IgdW5tYXRjaGVkIHN0cmluZ3Mgb3IgZm9yIHNob3J0CiAqIG1hdGNoZXMuIEl0IGlzIHVzZWQgb25seSBmb3IgdGhlIGZhc3QgY29tcHJlc3Npb24gb3B0aW9ucy4KICovCmZ1bmN0aW9uIGRlZmxhdGVfZmFzdChzLCBmbHVzaCkgewogIHZhciBoYXNoX2hlYWQ7ICAgICAgICAvKiBoZWFkIG9mIHRoZSBoYXNoIGNoYWluICovCiAgdmFyIGJmbHVzaDsgICAgICAgICAgIC8qIHNldCBpZiBjdXJyZW50IGJsb2NrIG11c3QgYmUgZmx1c2hlZCAqLwoKICBmb3IgKDs7KSB7CiAgICAvKiBNYWtlIHN1cmUgdGhhdCB3ZSBhbHdheXMgaGF2ZSBlbm91Z2ggbG9va2FoZWFkLCBleGNlcHQKICAgICAqIGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0IGZpbGUuIFdlIG5lZWQgTUFYX01BVENIIGJ5dGVzCiAgICAgKiBmb3IgdGhlIG5leHQgbWF0Y2gsIHBsdXMgTUlOX01BVENIIGJ5dGVzIHRvIGluc2VydCB0aGUKICAgICAqIHN0cmluZyBmb2xsb3dpbmcgdGhlIG5leHQgbWF0Y2guCiAgICAgKi8KICAgIGlmIChzLmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQpIHsKICAgICAgZmlsbF93aW5kb3cocyk7CiAgICAgIGlmIChzLmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQgJiYgZmx1c2ggPT09IFpfTk9fRkxVU0gpIHsKICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFOwogICAgICB9CiAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkgewogICAgICAgIGJyZWFrOyAvKiBmbHVzaCB0aGUgY3VycmVudCBibG9jayAqLwogICAgICB9CiAgICB9CgogICAgLyogSW5zZXJ0IHRoZSBzdHJpbmcgd2luZG93W3N0cnN0YXJ0IC4uIHN0cnN0YXJ0KzJdIGluIHRoZQogICAgICogZGljdGlvbmFyeSwgYW5kIHNldCBoYXNoX2hlYWQgdG8gdGhlIGhlYWQgb2YgdGhlIGhhc2ggY2hhaW46CiAgICAgKi8KICAgIGhhc2hfaGVhZCA9IDAvKk5JTCovOwogICAgaWYgKHMubG9va2FoZWFkID49IE1JTl9NQVRDSCkgewogICAgICAvKioqIElOU0VSVF9TVFJJTkcocywgcy5zdHJzdGFydCwgaGFzaF9oZWFkKTsgKioqLwogICAgICBzLmluc19oID0gKChzLmluc19oIDw8IHMuaGFzaF9zaGlmdCkgXiBzLndpbmRvd1tzLnN0cnN0YXJ0ICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7CiAgICAgIGhhc2hfaGVhZCA9IHMucHJldltzLnN0cnN0YXJ0ICYgcy53X21hc2tdID0gcy5oZWFkW3MuaW5zX2hdOwogICAgICBzLmhlYWRbcy5pbnNfaF0gPSBzLnN0cnN0YXJ0OwogICAgICAvKioqLwogICAgfQoKICAgIC8qIEZpbmQgdGhlIGxvbmdlc3QgbWF0Y2gsIGRpc2NhcmRpbmcgdGhvc2UgPD0gcHJldl9sZW5ndGguCiAgICAgKiBBdCB0aGlzIHBvaW50IHdlIGhhdmUgYWx3YXlzIG1hdGNoX2xlbmd0aCA8IE1JTl9NQVRDSAogICAgICovCiAgICBpZiAoaGFzaF9oZWFkICE9PSAwLypOSUwqLyAmJiAoKHMuc3Ryc3RhcnQgLSBoYXNoX2hlYWQpIDw9IChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpKSkgewogICAgICAvKiBUbyBzaW1wbGlmeSB0aGUgY29kZSwgd2UgcHJldmVudCBtYXRjaGVzIHdpdGggdGhlIHN0cmluZwogICAgICAgKiBvZiB3aW5kb3cgaW5kZXggMCAoaW4gcGFydGljdWxhciB3ZSBoYXZlIHRvIGF2b2lkIGEgbWF0Y2gKICAgICAgICogb2YgdGhlIHN0cmluZyB3aXRoIGl0c2VsZiBhdCB0aGUgc3RhcnQgb2YgdGhlIGlucHV0IGZpbGUpLgogICAgICAgKi8KICAgICAgcy5tYXRjaF9sZW5ndGggPSBsb25nZXN0X21hdGNoKHMsIGhhc2hfaGVhZCk7CiAgICAgIC8qIGxvbmdlc3RfbWF0Y2goKSBzZXRzIG1hdGNoX3N0YXJ0ICovCiAgICB9CiAgICBpZiAocy5tYXRjaF9sZW5ndGggPj0gTUlOX01BVENIKSB7CiAgICAgIC8vIGNoZWNrX21hdGNoKHMsIHMuc3Ryc3RhcnQsIHMubWF0Y2hfc3RhcnQsIHMubWF0Y2hfbGVuZ3RoKTsgLy8gZm9yIGRlYnVnIG9ubHkKCiAgICAgIC8qKiogX3RyX3RhbGx5X2Rpc3Qocywgcy5zdHJzdGFydCAtIHMubWF0Y2hfc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgIHMubWF0Y2hfbGVuZ3RoIC0gTUlOX01BVENILCBiZmx1c2gpOyAqKiovCiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCBzLnN0cnN0YXJ0IC0gcy5tYXRjaF9zdGFydCwgcy5tYXRjaF9sZW5ndGggLSBNSU5fTUFUQ0gpOwoKICAgICAgcy5sb29rYWhlYWQgLT0gcy5tYXRjaF9sZW5ndGg7CgogICAgICAvKiBJbnNlcnQgbmV3IHN0cmluZ3MgaW4gdGhlIGhhc2ggdGFibGUgb25seSBpZiB0aGUgbWF0Y2ggbGVuZ3RoCiAgICAgICAqIGlzIG5vdCB0b28gbGFyZ2UuIFRoaXMgc2F2ZXMgdGltZSBidXQgZGVncmFkZXMgY29tcHJlc3Npb24uCiAgICAgICAqLwogICAgICBpZiAocy5tYXRjaF9sZW5ndGggPD0gcy5tYXhfbGF6eV9tYXRjaC8qbWF4X2luc2VydF9sZW5ndGgqLyAmJiBzLmxvb2thaGVhZCA+PSBNSU5fTUFUQ0gpIHsKICAgICAgICBzLm1hdGNoX2xlbmd0aC0tOyAvKiBzdHJpbmcgYXQgc3Ryc3RhcnQgYWxyZWFkeSBpbiB0YWJsZSAqLwogICAgICAgIGRvIHsKICAgICAgICAgIHMuc3Ryc3RhcnQrKzsKICAgICAgICAgIC8qKiogSU5TRVJUX1NUUklORyhzLCBzLnN0cnN0YXJ0LCBoYXNoX2hlYWQpOyAqKiovCiAgICAgICAgICBzLmluc19oID0gKChzLmluc19oIDw8IHMuaGFzaF9zaGlmdCkgXiBzLndpbmRvd1tzLnN0cnN0YXJ0ICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7CiAgICAgICAgICBoYXNoX2hlYWQgPSBzLnByZXZbcy5zdHJzdGFydCAmIHMud19tYXNrXSA9IHMuaGVhZFtzLmluc19oXTsKICAgICAgICAgIHMuaGVhZFtzLmluc19oXSA9IHMuc3Ryc3RhcnQ7CiAgICAgICAgICAvKioqLwogICAgICAgICAgLyogc3Ryc3RhcnQgbmV2ZXIgZXhjZWVkcyBXU0laRS1NQVhfTUFUQ0gsIHNvIHRoZXJlIGFyZQogICAgICAgICAgICogYWx3YXlzIE1JTl9NQVRDSCBieXRlcyBhaGVhZC4KICAgICAgICAgICAqLwogICAgICAgIH0gd2hpbGUgKC0tcy5tYXRjaF9sZW5ndGggIT09IDApOwogICAgICAgIHMuc3Ryc3RhcnQrKzsKICAgICAgfSBlbHNlCiAgICAgIHsKICAgICAgICBzLnN0cnN0YXJ0ICs9IHMubWF0Y2hfbGVuZ3RoOwogICAgICAgIHMubWF0Y2hfbGVuZ3RoID0gMDsKICAgICAgICBzLmluc19oID0gcy53aW5kb3dbcy5zdHJzdGFydF07CiAgICAgICAgLyogVVBEQVRFX0hBU0gocywgcy5pbnNfaCwgcy53aW5kb3dbcy5zdHJzdGFydCsxXSk7ICovCiAgICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbcy5zdHJzdGFydCArIDFdKSAmIHMuaGFzaF9tYXNrOwoKLy8jaWYgTUlOX01BVENIICE9IDMKLy8gICAgICAgICAgICAgICAgQ2FsbCBVUERBVEVfSEFTSCgpIE1JTl9NQVRDSC0zIG1vcmUgdGltZXMKLy8jZW5kaWYKICAgICAgICAvKiBJZiBsb29rYWhlYWQgPCBNSU5fTUFUQ0gsIGluc19oIGlzIGdhcmJhZ2UsIGJ1dCBpdCBkb2VzIG5vdAogICAgICAgICAqIG1hdHRlciBzaW5jZSBpdCB3aWxsIGJlIHJlY29tcHV0ZWQgYXQgbmV4dCBkZWZsYXRlIGNhbGwuCiAgICAgICAgICovCiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIC8qIE5vIG1hdGNoLCBvdXRwdXQgYSBsaXRlcmFsIGJ5dGUgKi8KICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIiVjIiwgcy53aW5kb3dbcy5zdHJzdGFydF0pKTsKICAgICAgLyoqKiBfdHJfdGFsbHlfbGl0KHMsIHMud2luZG93W3Muc3Ryc3RhcnRdLCBiZmx1c2gpOyAqKiovCiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAwLCBzLndpbmRvd1tzLnN0cnN0YXJ0XSk7CgogICAgICBzLmxvb2thaGVhZC0tOwogICAgICBzLnN0cnN0YXJ0Kys7CiAgICB9CiAgICBpZiAoYmZsdXNoKSB7CiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi8KICAgICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7CiAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7CiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTsKICAgICAgfQogICAgICAvKioqLwogICAgfQogIH0KICBzLmluc2VydCA9ICgocy5zdHJzdGFydCA8IChNSU5fTUFUQ0ggLSAxKSkgPyBzLnN0cnN0YXJ0IDogTUlOX01BVENIIC0gMSk7CiAgaWYgKGZsdXNoID09PSBaX0ZJTklTSCkgewogICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAxKTsgKioqLwogICAgZmx1c2hfYmxvY2tfb25seShzLCB0cnVlKTsKICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7CiAgICAgIHJldHVybiBCU19GSU5JU0hfU1RBUlRFRDsKICAgIH0KICAgIC8qKiovCiAgICByZXR1cm4gQlNfRklOSVNIX0RPTkU7CiAgfQogIGlmIChzLmxhc3RfbGl0KSB7CiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDApOyAqKiovCiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTsKICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7CiAgICAgIHJldHVybiBCU19ORUVEX01PUkU7CiAgICB9CiAgICAvKioqLwogIH0KICByZXR1cm4gQlNfQkxPQ0tfRE9ORTsKfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIFNhbWUgYXMgYWJvdmUsIGJ1dCBhY2hpZXZlcyBiZXR0ZXIgY29tcHJlc3Npb24uIFdlIHVzZSBhIGxhenkKICogZXZhbHVhdGlvbiBmb3IgbWF0Y2hlczogYSBtYXRjaCBpcyBmaW5hbGx5IGFkb3B0ZWQgb25seSBpZiB0aGVyZSBpcwogKiBubyBiZXR0ZXIgbWF0Y2ggYXQgdGhlIG5leHQgd2luZG93IHBvc2l0aW9uLgogKi8KZnVuY3Rpb24gZGVmbGF0ZV9zbG93KHMsIGZsdXNoKSB7CiAgdmFyIGhhc2hfaGVhZDsgICAgICAgICAgLyogaGVhZCBvZiBoYXNoIGNoYWluICovCiAgdmFyIGJmbHVzaDsgICAgICAgICAgICAgIC8qIHNldCBpZiBjdXJyZW50IGJsb2NrIG11c3QgYmUgZmx1c2hlZCAqLwoKICB2YXIgbWF4X2luc2VydDsKCiAgLyogUHJvY2VzcyB0aGUgaW5wdXQgYmxvY2suICovCiAgZm9yICg7OykgewogICAgLyogTWFrZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGhhdmUgZW5vdWdoIGxvb2thaGVhZCwgZXhjZXB0CiAgICAgKiBhdCB0aGUgZW5kIG9mIHRoZSBpbnB1dCBmaWxlLiBXZSBuZWVkIE1BWF9NQVRDSCBieXRlcwogICAgICogZm9yIHRoZSBuZXh0IG1hdGNoLCBwbHVzIE1JTl9NQVRDSCBieXRlcyB0byBpbnNlcnQgdGhlCiAgICAgKiBzdHJpbmcgZm9sbG93aW5nIHRoZSBuZXh0IG1hdGNoLgogICAgICovCiAgICBpZiAocy5sb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFEKSB7CiAgICAgIGZpbGxfd2luZG93KHMpOwogICAgICBpZiAocy5sb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFEICYmIGZsdXNoID09PSBaX05PX0ZMVVNIKSB7CiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTsKICAgICAgfQogICAgICBpZiAocy5sb29rYWhlYWQgPT09IDApIHsgYnJlYWs7IH0gLyogZmx1c2ggdGhlIGN1cnJlbnQgYmxvY2sgKi8KICAgIH0KCiAgICAvKiBJbnNlcnQgdGhlIHN0cmluZyB3aW5kb3dbc3Ryc3RhcnQgLi4gc3Ryc3RhcnQrMl0gaW4gdGhlCiAgICAgKiBkaWN0aW9uYXJ5LCBhbmQgc2V0IGhhc2hfaGVhZCB0byB0aGUgaGVhZCBvZiB0aGUgaGFzaCBjaGFpbjoKICAgICAqLwogICAgaGFzaF9oZWFkID0gMC8qTklMKi87CiAgICBpZiAocy5sb29rYWhlYWQgPj0gTUlOX01BVENIKSB7CiAgICAgIC8qKiogSU5TRVJUX1NUUklORyhzLCBzLnN0cnN0YXJ0LCBoYXNoX2hlYWQpOyAqKiovCiAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3Muc3Ryc3RhcnQgKyBNSU5fTUFUQ0ggLSAxXSkgJiBzLmhhc2hfbWFzazsKICAgICAgaGFzaF9oZWFkID0gcy5wcmV2W3Muc3Ryc3RhcnQgJiBzLndfbWFza10gPSBzLmhlYWRbcy5pbnNfaF07CiAgICAgIHMuaGVhZFtzLmluc19oXSA9IHMuc3Ryc3RhcnQ7CiAgICAgIC8qKiovCiAgICB9CgogICAgLyogRmluZCB0aGUgbG9uZ2VzdCBtYXRjaCwgZGlzY2FyZGluZyB0aG9zZSA8PSBwcmV2X2xlbmd0aC4KICAgICAqLwogICAgcy5wcmV2X2xlbmd0aCA9IHMubWF0Y2hfbGVuZ3RoOwogICAgcy5wcmV2X21hdGNoID0gcy5tYXRjaF9zdGFydDsKICAgIHMubWF0Y2hfbGVuZ3RoID0gTUlOX01BVENIIC0gMTsKCiAgICBpZiAoaGFzaF9oZWFkICE9PSAwLypOSUwqLyAmJiBzLnByZXZfbGVuZ3RoIDwgcy5tYXhfbGF6eV9tYXRjaCAmJgogICAgICAgIHMuc3Ryc3RhcnQgLSBoYXNoX2hlYWQgPD0gKHMud19zaXplIC0gTUlOX0xPT0tBSEVBRCkvKk1BWF9ESVNUKHMpKi8pIHsKICAgICAgLyogVG8gc2ltcGxpZnkgdGhlIGNvZGUsIHdlIHByZXZlbnQgbWF0Y2hlcyB3aXRoIHRoZSBzdHJpbmcKICAgICAgICogb2Ygd2luZG93IGluZGV4IDAgKGluIHBhcnRpY3VsYXIgd2UgaGF2ZSB0byBhdm9pZCBhIG1hdGNoCiAgICAgICAqIG9mIHRoZSBzdHJpbmcgd2l0aCBpdHNlbGYgYXQgdGhlIHN0YXJ0IG9mIHRoZSBpbnB1dCBmaWxlKS4KICAgICAgICovCiAgICAgIHMubWF0Y2hfbGVuZ3RoID0gbG9uZ2VzdF9tYXRjaChzLCBoYXNoX2hlYWQpOwogICAgICAvKiBsb25nZXN0X21hdGNoKCkgc2V0cyBtYXRjaF9zdGFydCAqLwoKICAgICAgaWYgKHMubWF0Y2hfbGVuZ3RoIDw9IDUgJiYKICAgICAgICAgKHMuc3RyYXRlZ3kgPT09IFpfRklMVEVSRUQgfHwgKHMubWF0Y2hfbGVuZ3RoID09PSBNSU5fTUFUQ0ggJiYgcy5zdHJzdGFydCAtIHMubWF0Y2hfc3RhcnQgPiA0MDk2LypUT09fRkFSKi8pKSkgewoKICAgICAgICAvKiBJZiBwcmV2X21hdGNoIGlzIGFsc28gTUlOX01BVENILCBtYXRjaF9zdGFydCBpcyBnYXJiYWdlCiAgICAgICAgICogYnV0IHdlIHdpbGwgaWdub3JlIHRoZSBjdXJyZW50IG1hdGNoIGFueXdheS4KICAgICAgICAgKi8KICAgICAgICBzLm1hdGNoX2xlbmd0aCA9IE1JTl9NQVRDSCAtIDE7CiAgICAgIH0KICAgIH0KICAgIC8qIElmIHRoZXJlIHdhcyBhIG1hdGNoIGF0IHRoZSBwcmV2aW91cyBzdGVwIGFuZCB0aGUgY3VycmVudAogICAgICogbWF0Y2ggaXMgbm90IGJldHRlciwgb3V0cHV0IHRoZSBwcmV2aW91cyBtYXRjaDoKICAgICAqLwogICAgaWYgKHMucHJldl9sZW5ndGggPj0gTUlOX01BVENIICYmIHMubWF0Y2hfbGVuZ3RoIDw9IHMucHJldl9sZW5ndGgpIHsKICAgICAgbWF4X2luc2VydCA9IHMuc3Ryc3RhcnQgKyBzLmxvb2thaGVhZCAtIE1JTl9NQVRDSDsKICAgICAgLyogRG8gbm90IGluc2VydCBzdHJpbmdzIGluIGhhc2ggdGFibGUgYmV5b25kIHRoaXMuICovCgogICAgICAvL2NoZWNrX21hdGNoKHMsIHMuc3Ryc3RhcnQtMSwgcy5wcmV2X21hdGNoLCBzLnByZXZfbGVuZ3RoKTsKCiAgICAgIC8qKipfdHJfdGFsbHlfZGlzdChzLCBzLnN0cnN0YXJ0IC0gMSAtIHMucHJldl9tYXRjaCwKICAgICAgICAgICAgICAgICAgICAgcy5wcmV2X2xlbmd0aCAtIE1JTl9NQVRDSCwgYmZsdXNoKTsqKiovCiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCBzLnN0cnN0YXJ0IC0gMSAtIHMucHJldl9tYXRjaCwgcy5wcmV2X2xlbmd0aCAtIE1JTl9NQVRDSCk7CiAgICAgIC8qIEluc2VydCBpbiBoYXNoIHRhYmxlIGFsbCBzdHJpbmdzIHVwIHRvIHRoZSBlbmQgb2YgdGhlIG1hdGNoLgogICAgICAgKiBzdHJzdGFydC0xIGFuZCBzdHJzdGFydCBhcmUgYWxyZWFkeSBpbnNlcnRlZC4gSWYgdGhlcmUgaXMgbm90CiAgICAgICAqIGVub3VnaCBsb29rYWhlYWQsIHRoZSBsYXN0IHR3byBzdHJpbmdzIGFyZSBub3QgaW5zZXJ0ZWQgaW4KICAgICAgICogdGhlIGhhc2ggdGFibGUuCiAgICAgICAqLwogICAgICBzLmxvb2thaGVhZCAtPSBzLnByZXZfbGVuZ3RoIC0gMTsKICAgICAgcy5wcmV2X2xlbmd0aCAtPSAyOwogICAgICBkbyB7CiAgICAgICAgaWYgKCsrcy5zdHJzdGFydCA8PSBtYXhfaW5zZXJ0KSB7CiAgICAgICAgICAvKioqIElOU0VSVF9TVFJJTkcocywgcy5zdHJzdGFydCwgaGFzaF9oZWFkKTsgKioqLwogICAgICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbcy5zdHJzdGFydCArIE1JTl9NQVRDSCAtIDFdKSAmIHMuaGFzaF9tYXNrOwogICAgICAgICAgaGFzaF9oZWFkID0gcy5wcmV2W3Muc3Ryc3RhcnQgJiBzLndfbWFza10gPSBzLmhlYWRbcy5pbnNfaF07CiAgICAgICAgICBzLmhlYWRbcy5pbnNfaF0gPSBzLnN0cnN0YXJ0OwogICAgICAgICAgLyoqKi8KICAgICAgICB9CiAgICAgIH0gd2hpbGUgKC0tcy5wcmV2X2xlbmd0aCAhPT0gMCk7CiAgICAgIHMubWF0Y2hfYXZhaWxhYmxlID0gMDsKICAgICAgcy5tYXRjaF9sZW5ndGggPSBNSU5fTUFUQ0ggLSAxOwogICAgICBzLnN0cnN0YXJ0Kys7CgogICAgICBpZiAoYmZsdXNoKSB7CiAgICAgICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqLwogICAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpOwogICAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7CiAgICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFOwogICAgICAgIH0KICAgICAgICAvKioqLwogICAgICB9CgogICAgfSBlbHNlIGlmIChzLm1hdGNoX2F2YWlsYWJsZSkgewogICAgICAvKiBJZiB0aGVyZSB3YXMgbm8gbWF0Y2ggYXQgdGhlIHByZXZpb3VzIHBvc2l0aW9uLCBvdXRwdXQgYQogICAgICAgKiBzaW5nbGUgbGl0ZXJhbC4gSWYgdGhlcmUgd2FzIGEgbWF0Y2ggYnV0IHRoZSBjdXJyZW50IG1hdGNoCiAgICAgICAqIGlzIGxvbmdlciwgdHJ1bmNhdGUgdGhlIHByZXZpb3VzIG1hdGNoIHRvIGEgc2luZ2xlIGxpdGVyYWwuCiAgICAgICAqLwogICAgICAvL1RyYWNldnYoKHN0ZGVyciwiJWMiLCBzLT53aW5kb3dbcy0+c3Ryc3RhcnQtMV0pKTsKICAgICAgLyoqKiBfdHJfdGFsbHlfbGl0KHMsIHMud2luZG93W3Muc3Ryc3RhcnQtMV0sIGJmbHVzaCk7ICoqKi8KICAgICAgYmZsdXNoID0gdHJlZXMuX3RyX3RhbGx5KHMsIDAsIHMud2luZG93W3Muc3Ryc3RhcnQgLSAxXSk7CgogICAgICBpZiAoYmZsdXNoKSB7CiAgICAgICAgLyoqKiBGTFVTSF9CTE9DS19PTkxZKHMsIDApICoqKi8KICAgICAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTsKICAgICAgICAvKioqLwogICAgICB9CiAgICAgIHMuc3Ryc3RhcnQrKzsKICAgICAgcy5sb29rYWhlYWQtLTsKICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICAvKiBUaGVyZSBpcyBubyBwcmV2aW91cyBtYXRjaCB0byBjb21wYXJlIHdpdGgsIHdhaXQgZm9yCiAgICAgICAqIHRoZSBuZXh0IHN0ZXAgdG8gZGVjaWRlLgogICAgICAgKi8KICAgICAgcy5tYXRjaF9hdmFpbGFibGUgPSAxOwogICAgICBzLnN0cnN0YXJ0Kys7CiAgICAgIHMubG9va2FoZWFkLS07CiAgICB9CiAgfQogIC8vQXNzZXJ0IChmbHVzaCAhPSBaX05PX0ZMVVNILCAibm8gZmx1c2g/Iik7CiAgaWYgKHMubWF0Y2hfYXZhaWxhYmxlKSB7CiAgICAvL1RyYWNldnYoKHN0ZGVyciwiJWMiLCBzLT53aW5kb3dbcy0+c3Ryc3RhcnQtMV0pKTsKICAgIC8qKiogX3RyX3RhbGx5X2xpdChzLCBzLndpbmRvd1tzLnN0cnN0YXJ0LTFdLCBiZmx1c2gpOyAqKiovCiAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgMCwgcy53aW5kb3dbcy5zdHJzdGFydCAtIDFdKTsKCiAgICBzLm1hdGNoX2F2YWlsYWJsZSA9IDA7CiAgfQogIHMuaW5zZXJ0ID0gcy5zdHJzdGFydCA8IE1JTl9NQVRDSCAtIDEgPyBzLnN0cnN0YXJ0IDogTUlOX01BVENIIC0gMTsKICBpZiAoZmx1c2ggPT09IFpfRklOSVNIKSB7CiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDEpOyAqKiovCiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpOwogICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEOwogICAgfQogICAgLyoqKi8KICAgIHJldHVybiBCU19GSU5JU0hfRE9ORTsKICB9CiAgaWYgKHMubGFzdF9saXQpIHsKICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi8KICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpOwogICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTsKICAgIH0KICAgIC8qKiovCiAgfQoKICByZXR1cm4gQlNfQkxPQ0tfRE9ORTsKfQoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBGb3IgWl9STEUsIHNpbXBseSBsb29rIGZvciBydW5zIG9mIGJ5dGVzLCBnZW5lcmF0ZSBtYXRjaGVzIG9ubHkgb2YgZGlzdGFuY2UKICogb25lLiAgRG8gbm90IG1haW50YWluIGEgaGFzaCB0YWJsZS4gIChJdCB3aWxsIGJlIHJlZ2VuZXJhdGVkIGlmIHRoaXMgcnVuIG9mCiAqIGRlZmxhdGUgc3dpdGNoZXMgYXdheSBmcm9tIFpfUkxFLikKICovCmZ1bmN0aW9uIGRlZmxhdGVfcmxlKHMsIGZsdXNoKSB7CiAgdmFyIGJmbHVzaDsgICAgICAgICAgICAvKiBzZXQgaWYgY3VycmVudCBibG9jayBtdXN0IGJlIGZsdXNoZWQgKi8KICB2YXIgcHJldjsgICAgICAgICAgICAgIC8qIGJ5dGUgYXQgZGlzdGFuY2Ugb25lIHRvIG1hdGNoICovCiAgdmFyIHNjYW4sIHN0cmVuZDsgICAgICAvKiBzY2FuIGdvZXMgdXAgdG8gc3RyZW5kIGZvciBsZW5ndGggb2YgcnVuICovCgogIHZhciBfd2luID0gcy53aW5kb3c7CgogIGZvciAoOzspIHsKICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGVub3VnaCBsb29rYWhlYWQsIGV4Y2VwdAogICAgICogYXQgdGhlIGVuZCBvZiB0aGUgaW5wdXQgZmlsZS4gV2UgbmVlZCBNQVhfTUFUQ0ggYnl0ZXMKICAgICAqIGZvciB0aGUgbG9uZ2VzdCBydW4sIHBsdXMgb25lIGZvciB0aGUgdW5yb2xsZWQgbG9vcC4KICAgICAqLwogICAgaWYgKHMubG9va2FoZWFkIDw9IE1BWF9NQVRDSCkgewogICAgICBmaWxsX3dpbmRvdyhzKTsKICAgICAgaWYgKHMubG9va2FoZWFkIDw9IE1BWF9NQVRDSCAmJiBmbHVzaCA9PT0gWl9OT19GTFVTSCkgewogICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7CiAgICAgIH0KICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7IGJyZWFrOyB9IC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovCiAgICB9CgogICAgLyogU2VlIGhvdyBtYW55IHRpbWVzIHRoZSBwcmV2aW91cyBieXRlIHJlcGVhdHMgKi8KICAgIHMubWF0Y2hfbGVuZ3RoID0gMDsKICAgIGlmIChzLmxvb2thaGVhZCA+PSBNSU5fTUFUQ0ggJiYgcy5zdHJzdGFydCA+IDApIHsKICAgICAgc2NhbiA9IHMuc3Ryc3RhcnQgLSAxOwogICAgICBwcmV2ID0gX3dpbltzY2FuXTsKICAgICAgaWYgKHByZXYgPT09IF93aW5bKytzY2FuXSAmJiBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYgcHJldiA9PT0gX3dpblsrK3NjYW5dKSB7CiAgICAgICAgc3RyZW5kID0gcy5zdHJzdGFydCArIE1BWF9NQVRDSDsKICAgICAgICBkbyB7CiAgICAgICAgICAvKmpzaGludCBub2VtcHR5OmZhbHNlKi8KICAgICAgICB9IHdoaWxlIChwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmCiAgICAgICAgICAgICAgICAgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmIHByZXYgPT09IF93aW5bKytzY2FuXSAmJgogICAgICAgICAgICAgICAgIHByZXYgPT09IF93aW5bKytzY2FuXSAmJiBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYKICAgICAgICAgICAgICAgICBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmCiAgICAgICAgICAgICAgICAgc2NhbiA8IHN0cmVuZCk7CiAgICAgICAgcy5tYXRjaF9sZW5ndGggPSBNQVhfTUFUQ0ggLSAoc3RyZW5kIC0gc2Nhbik7CiAgICAgICAgaWYgKHMubWF0Y2hfbGVuZ3RoID4gcy5sb29rYWhlYWQpIHsKICAgICAgICAgIHMubWF0Y2hfbGVuZ3RoID0gcy5sb29rYWhlYWQ7CiAgICAgICAgfQogICAgICB9CiAgICAgIC8vQXNzZXJ0KHNjYW4gPD0gcy0+d2luZG93Kyh1SW50KShzLT53aW5kb3dfc2l6ZS0xKSwgIndpbGQgc2NhbiIpOwogICAgfQoKICAgIC8qIEVtaXQgbWF0Y2ggaWYgaGF2ZSBydW4gb2YgTUlOX01BVENIIG9yIGxvbmdlciwgZWxzZSBlbWl0IGxpdGVyYWwgKi8KICAgIGlmIChzLm1hdGNoX2xlbmd0aCA+PSBNSU5fTUFUQ0gpIHsKICAgICAgLy9jaGVja19tYXRjaChzLCBzLnN0cnN0YXJ0LCBzLnN0cnN0YXJ0IC0gMSwgcy5tYXRjaF9sZW5ndGgpOwoKICAgICAgLyoqKiBfdHJfdGFsbHlfZGlzdChzLCAxLCBzLm1hdGNoX2xlbmd0aCAtIE1JTl9NQVRDSCwgYmZsdXNoKTsgKioqLwogICAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgMSwgcy5tYXRjaF9sZW5ndGggLSBNSU5fTUFUQ0gpOwoKICAgICAgcy5sb29rYWhlYWQgLT0gcy5tYXRjaF9sZW5ndGg7CiAgICAgIHMuc3Ryc3RhcnQgKz0gcy5tYXRjaF9sZW5ndGg7CiAgICAgIHMubWF0Y2hfbGVuZ3RoID0gMDsKICAgIH0gZWxzZSB7CiAgICAgIC8qIE5vIG1hdGNoLCBvdXRwdXQgYSBsaXRlcmFsIGJ5dGUgKi8KICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIiVjIiwgcy0+d2luZG93W3MtPnN0cnN0YXJ0XSkpOwogICAgICAvKioqIF90cl90YWxseV9saXQocywgcy53aW5kb3dbcy5zdHJzdGFydF0sIGJmbHVzaCk7ICoqKi8KICAgICAgYmZsdXNoID0gdHJlZXMuX3RyX3RhbGx5KHMsIDAsIHMud2luZG93W3Muc3Ryc3RhcnRdKTsKCiAgICAgIHMubG9va2FoZWFkLS07CiAgICAgIHMuc3Ryc3RhcnQrKzsKICAgIH0KICAgIGlmIChiZmx1c2gpIHsKICAgICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqLwogICAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTsKICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFOwogICAgICB9CiAgICAgIC8qKiovCiAgICB9CiAgfQogIHMuaW5zZXJ0ID0gMDsKICBpZiAoZmx1c2ggPT09IFpfRklOSVNIKSB7CiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDEpOyAqKiovCiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpOwogICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEOwogICAgfQogICAgLyoqKi8KICAgIHJldHVybiBCU19GSU5JU0hfRE9ORTsKICB9CiAgaWYgKHMubGFzdF9saXQpIHsKICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi8KICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpOwogICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTsKICAgIH0KICAgIC8qKiovCiAgfQogIHJldHVybiBCU19CTE9DS19ET05FOwp9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogRm9yIFpfSFVGRk1BTl9PTkxZLCBkbyBub3QgbG9vayBmb3IgbWF0Y2hlcy4gIERvIG5vdCBtYWludGFpbiBhIGhhc2ggdGFibGUuCiAqIChJdCB3aWxsIGJlIHJlZ2VuZXJhdGVkIGlmIHRoaXMgcnVuIG9mIGRlZmxhdGUgc3dpdGNoZXMgYXdheSBmcm9tIEh1ZmZtYW4uKQogKi8KZnVuY3Rpb24gZGVmbGF0ZV9odWZmKHMsIGZsdXNoKSB7CiAgdmFyIGJmbHVzaDsgICAgICAgICAgICAgLyogc2V0IGlmIGN1cnJlbnQgYmxvY2sgbXVzdCBiZSBmbHVzaGVkICovCgogIGZvciAoOzspIHsKICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGhhdmUgYSBsaXRlcmFsIHRvIHdyaXRlLiAqLwogICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7CiAgICAgIGZpbGxfd2luZG93KHMpOwogICAgICBpZiAocy5sb29rYWhlYWQgPT09IDApIHsKICAgICAgICBpZiAoZmx1c2ggPT09IFpfTk9fRkxVU0gpIHsKICAgICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7CiAgICAgICAgfQogICAgICAgIGJyZWFrOyAgICAgIC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovCiAgICAgIH0KICAgIH0KCiAgICAvKiBPdXRwdXQgYSBsaXRlcmFsIGJ5dGUgKi8KICAgIHMubWF0Y2hfbGVuZ3RoID0gMDsKICAgIC8vVHJhY2V2digoc3RkZXJyLCIlYyIsIHMtPndpbmRvd1tzLT5zdHJzdGFydF0pKTsKICAgIC8qKiogX3RyX3RhbGx5X2xpdChzLCBzLndpbmRvd1tzLnN0cnN0YXJ0XSwgYmZsdXNoKTsgKioqLwogICAgYmZsdXNoID0gdHJlZXMuX3RyX3RhbGx5KHMsIDAsIHMud2luZG93W3Muc3Ryc3RhcnRdKTsKICAgIHMubG9va2FoZWFkLS07CiAgICBzLnN0cnN0YXJ0Kys7CiAgICBpZiAoYmZsdXNoKSB7CiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi8KICAgICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7CiAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7CiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTsKICAgICAgfQogICAgICAvKioqLwogICAgfQogIH0KICBzLmluc2VydCA9IDA7CiAgaWYgKGZsdXNoID09PSBaX0ZJTklTSCkgewogICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAxKTsgKioqLwogICAgZmx1c2hfYmxvY2tfb25seShzLCB0cnVlKTsKICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7CiAgICAgIHJldHVybiBCU19GSU5JU0hfU1RBUlRFRDsKICAgIH0KICAgIC8qKiovCiAgICByZXR1cm4gQlNfRklOSVNIX0RPTkU7CiAgfQogIGlmIChzLmxhc3RfbGl0KSB7CiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDApOyAqKiovCiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTsKICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7CiAgICAgIHJldHVybiBCU19ORUVEX01PUkU7CiAgICB9CiAgICAvKioqLwogIH0KICByZXR1cm4gQlNfQkxPQ0tfRE9ORTsKfQoKLyogVmFsdWVzIGZvciBtYXhfbGF6eV9tYXRjaCwgZ29vZF9tYXRjaCBhbmQgbWF4X2NoYWluX2xlbmd0aCwgZGVwZW5kaW5nIG9uCiAqIHRoZSBkZXNpcmVkIHBhY2sgbGV2ZWwgKDAuLjkpLiBUaGUgdmFsdWVzIGdpdmVuIGJlbG93IGhhdmUgYmVlbiB0dW5lZCB0bwogKiBleGNsdWRlIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2UgZm9yIHBhdGhvbG9naWNhbCBmaWxlcy4gQmV0dGVyIHZhbHVlcyBtYXkgYmUKICogZm91bmQgZm9yIHNwZWNpZmljIGZpbGVzLgogKi8KZnVuY3Rpb24gQ29uZmlnKGdvb2RfbGVuZ3RoLCBtYXhfbGF6eSwgbmljZV9sZW5ndGgsIG1heF9jaGFpbiwgZnVuYykgewogIHRoaXMuZ29vZF9sZW5ndGggPSBnb29kX2xlbmd0aDsKICB0aGlzLm1heF9sYXp5ID0gbWF4X2xhenk7CiAgdGhpcy5uaWNlX2xlbmd0aCA9IG5pY2VfbGVuZ3RoOwogIHRoaXMubWF4X2NoYWluID0gbWF4X2NoYWluOwogIHRoaXMuZnVuYyA9IGZ1bmM7Cn0KCnZhciBjb25maWd1cmF0aW9uX3RhYmxlOwoKY29uZmlndXJhdGlvbl90YWJsZSA9IFsKICAvKiAgICAgIGdvb2QgbGF6eSBuaWNlIGNoYWluICovCiAgbmV3IENvbmZpZygwLCAwLCAwLCAwLCBkZWZsYXRlX3N0b3JlZCksICAgICAgICAgIC8qIDAgc3RvcmUgb25seSAqLwogIG5ldyBDb25maWcoNCwgNCwgOCwgNCwgZGVmbGF0ZV9mYXN0KSwgICAgICAgICAgICAvKiAxIG1heCBzcGVlZCwgbm8gbGF6eSBtYXRjaGVzICovCiAgbmV3IENvbmZpZyg0LCA1LCAxNiwgOCwgZGVmbGF0ZV9mYXN0KSwgICAgICAgICAgIC8qIDIgKi8KICBuZXcgQ29uZmlnKDQsIDYsIDMyLCAzMiwgZGVmbGF0ZV9mYXN0KSwgICAgICAgICAgLyogMyAqLwoKICBuZXcgQ29uZmlnKDQsIDQsIDE2LCAxNiwgZGVmbGF0ZV9zbG93KSwgICAgICAgICAgLyogNCBsYXp5IG1hdGNoZXMgKi8KICBuZXcgQ29uZmlnKDgsIDE2LCAzMiwgMzIsIGRlZmxhdGVfc2xvdyksICAgICAgICAgLyogNSAqLwogIG5ldyBDb25maWcoOCwgMTYsIDEyOCwgMTI4LCBkZWZsYXRlX3Nsb3cpLCAgICAgICAvKiA2ICovCiAgbmV3IENvbmZpZyg4LCAzMiwgMTI4LCAyNTYsIGRlZmxhdGVfc2xvdyksICAgICAgIC8qIDcgKi8KICBuZXcgQ29uZmlnKDMyLCAxMjgsIDI1OCwgMTAyNCwgZGVmbGF0ZV9zbG93KSwgICAgLyogOCAqLwogIG5ldyBDb25maWcoMzIsIDI1OCwgMjU4LCA0MDk2LCBkZWZsYXRlX3Nsb3cpICAgICAvKiA5IG1heCBjb21wcmVzc2lvbiAqLwpdOwoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBJbml0aWFsaXplIHRoZSAibG9uZ2VzdCBtYXRjaCIgcm91dGluZXMgZm9yIGEgbmV3IHpsaWIgc3RyZWFtCiAqLwpmdW5jdGlvbiBsbV9pbml0KHMpIHsKICBzLndpbmRvd19zaXplID0gMiAqIHMud19zaXplOwoKICAvKioqIENMRUFSX0hBU0gocyk7ICoqKi8KICB6ZXJvKHMuaGVhZCk7IC8vIEZpbGwgd2l0aCBOSUwgKD0gMCk7CgogIC8qIFNldCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnM6CiAgICovCiAgcy5tYXhfbGF6eV9tYXRjaCA9IGNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0ubWF4X2xhenk7CiAgcy5nb29kX21hdGNoID0gY29uZmlndXJhdGlvbl90YWJsZVtzLmxldmVsXS5nb29kX2xlbmd0aDsKICBzLm5pY2VfbWF0Y2ggPSBjb25maWd1cmF0aW9uX3RhYmxlW3MubGV2ZWxdLm5pY2VfbGVuZ3RoOwogIHMubWF4X2NoYWluX2xlbmd0aCA9IGNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0ubWF4X2NoYWluOwoKICBzLnN0cnN0YXJ0ID0gMDsKICBzLmJsb2NrX3N0YXJ0ID0gMDsKICBzLmxvb2thaGVhZCA9IDA7CiAgcy5pbnNlcnQgPSAwOwogIHMubWF0Y2hfbGVuZ3RoID0gcy5wcmV2X2xlbmd0aCA9IE1JTl9NQVRDSCAtIDE7CiAgcy5tYXRjaF9hdmFpbGFibGUgPSAwOwogIHMuaW5zX2ggPSAwOwp9CgoKZnVuY3Rpb24gRGVmbGF0ZVN0YXRlKCkgewogIHRoaXMuc3RybSA9IG51bGw7ICAgICAgICAgICAgLyogcG9pbnRlciBiYWNrIHRvIHRoaXMgemxpYiBzdHJlYW0gKi8KICB0aGlzLnN0YXR1cyA9IDA7ICAgICAgICAgICAgLyogYXMgdGhlIG5hbWUgaW1wbGllcyAqLwogIHRoaXMucGVuZGluZ19idWYgPSBudWxsOyAgICAgIC8qIG91dHB1dCBzdGlsbCBwZW5kaW5nICovCiAgdGhpcy5wZW5kaW5nX2J1Zl9zaXplID0gMDsgIC8qIHNpemUgb2YgcGVuZGluZ19idWYgKi8KICB0aGlzLnBlbmRpbmdfb3V0ID0gMDsgICAgICAgLyogbmV4dCBwZW5kaW5nIGJ5dGUgdG8gb3V0cHV0IHRvIHRoZSBzdHJlYW0gKi8KICB0aGlzLnBlbmRpbmcgPSAwOyAgICAgICAgICAgLyogbmIgb2YgYnl0ZXMgaW4gdGhlIHBlbmRpbmcgYnVmZmVyICovCiAgdGhpcy53cmFwID0gMDsgICAgICAgICAgICAgIC8qIGJpdCAwIHRydWUgZm9yIHpsaWIsIGJpdCAxIHRydWUgZm9yIGd6aXAgKi8KICB0aGlzLmd6aGVhZCA9IG51bGw7ICAgICAgICAgLyogZ3ppcCBoZWFkZXIgaW5mb3JtYXRpb24gdG8gd3JpdGUgKi8KICB0aGlzLmd6aW5kZXggPSAwOyAgICAgICAgICAgLyogd2hlcmUgaW4gZXh0cmEsIG5hbWUsIG9yIGNvbW1lbnQgKi8KICB0aGlzLm1ldGhvZCA9IFpfREVGTEFURUQ7IC8qIGNhbiBvbmx5IGJlIERFRkxBVEVEICovCiAgdGhpcy5sYXN0X2ZsdXNoID0gLTE7ICAgLyogdmFsdWUgb2YgZmx1c2ggcGFyYW0gZm9yIHByZXZpb3VzIGRlZmxhdGUgY2FsbCAqLwoKICB0aGlzLndfc2l6ZSA9IDA7ICAvKiBMWjc3IHdpbmRvdyBzaXplICgzMksgYnkgZGVmYXVsdCkgKi8KICB0aGlzLndfYml0cyA9IDA7ICAvKiBsb2cyKHdfc2l6ZSkgICg4Li4xNikgKi8KICB0aGlzLndfbWFzayA9IDA7ICAvKiB3X3NpemUgLSAxICovCgogIHRoaXMud2luZG93ID0gbnVsbDsKICAvKiBTbGlkaW5nIHdpbmRvdy4gSW5wdXQgYnl0ZXMgYXJlIHJlYWQgaW50byB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIHdpbmRvdywKICAgKiBhbmQgbW92ZSB0byB0aGUgZmlyc3QgaGFsZiBsYXRlciB0byBrZWVwIGEgZGljdGlvbmFyeSBvZiBhdCBsZWFzdCB3U2l6ZQogICAqIGJ5dGVzLiBXaXRoIHRoaXMgb3JnYW5pemF0aW9uLCBtYXRjaGVzIGFyZSBsaW1pdGVkIHRvIGEgZGlzdGFuY2Ugb2YKICAgKiB3U2l6ZS1NQVhfTUFUQ0ggYnl0ZXMsIGJ1dCB0aGlzIGVuc3VyZXMgdGhhdCBJTyBpcyBhbHdheXMKICAgKiBwZXJmb3JtZWQgd2l0aCBhIGxlbmd0aCBtdWx0aXBsZSBvZiB0aGUgYmxvY2sgc2l6ZS4KICAgKi8KCiAgdGhpcy53aW5kb3dfc2l6ZSA9IDA7CiAgLyogQWN0dWFsIHNpemUgb2Ygd2luZG93OiAyKndTaXplLCBleGNlcHQgd2hlbiB0aGUgdXNlciBpbnB1dCBidWZmZXIKICAgKiBpcyBkaXJlY3RseSB1c2VkIGFzIHNsaWRpbmcgd2luZG93LgogICAqLwoKICB0aGlzLnByZXYgPSBudWxsOwogIC8qIExpbmsgdG8gb2xkZXIgc3RyaW5nIHdpdGggc2FtZSBoYXNoIGluZGV4LiBUbyBsaW1pdCB0aGUgc2l6ZSBvZiB0aGlzCiAgICogYXJyYXkgdG8gNjRLLCB0aGlzIGxpbmsgaXMgbWFpbnRhaW5lZCBvbmx5IGZvciB0aGUgbGFzdCAzMksgc3RyaW5ncy4KICAgKiBBbiBpbmRleCBpbiB0aGlzIGFycmF5IGlzIHRodXMgYSB3aW5kb3cgaW5kZXggbW9kdWxvIDMySy4KICAgKi8KCiAgdGhpcy5oZWFkID0gbnVsbDsgICAvKiBIZWFkcyBvZiB0aGUgaGFzaCBjaGFpbnMgb3IgTklMLiAqLwoKICB0aGlzLmluc19oID0gMDsgICAgICAgLyogaGFzaCBpbmRleCBvZiBzdHJpbmcgdG8gYmUgaW5zZXJ0ZWQgKi8KICB0aGlzLmhhc2hfc2l6ZSA9IDA7ICAgLyogbnVtYmVyIG9mIGVsZW1lbnRzIGluIGhhc2ggdGFibGUgKi8KICB0aGlzLmhhc2hfYml0cyA9IDA7ICAgLyogbG9nMihoYXNoX3NpemUpICovCiAgdGhpcy5oYXNoX21hc2sgPSAwOyAgIC8qIGhhc2hfc2l6ZS0xICovCgogIHRoaXMuaGFzaF9zaGlmdCA9IDA7CiAgLyogTnVtYmVyIG9mIGJpdHMgYnkgd2hpY2ggaW5zX2ggbXVzdCBiZSBzaGlmdGVkIGF0IGVhY2ggaW5wdXQKICAgKiBzdGVwLiBJdCBtdXN0IGJlIHN1Y2ggdGhhdCBhZnRlciBNSU5fTUFUQ0ggc3RlcHMsIHRoZSBvbGRlc3QKICAgKiBieXRlIG5vIGxvbmdlciB0YWtlcyBwYXJ0IGluIHRoZSBoYXNoIGtleSwgdGhhdCBpczoKICAgKiAgIGhhc2hfc2hpZnQgKiBNSU5fTUFUQ0ggPj0gaGFzaF9iaXRzCiAgICovCgogIHRoaXMuYmxvY2tfc3RhcnQgPSAwOwogIC8qIFdpbmRvdyBwb3NpdGlvbiBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50IG91dHB1dCBibG9jay4gR2V0cwogICAqIG5lZ2F0aXZlIHdoZW4gdGhlIHdpbmRvdyBpcyBtb3ZlZCBiYWNrd2FyZHMuCiAgICovCgogIHRoaXMubWF0Y2hfbGVuZ3RoID0gMDsgICAgICAvKiBsZW5ndGggb2YgYmVzdCBtYXRjaCAqLwogIHRoaXMucHJldl9tYXRjaCA9IDA7ICAgICAgICAvKiBwcmV2aW91cyBtYXRjaCAqLwogIHRoaXMubWF0Y2hfYXZhaWxhYmxlID0gMDsgICAvKiBzZXQgaWYgcHJldmlvdXMgbWF0Y2ggZXhpc3RzICovCiAgdGhpcy5zdHJzdGFydCA9IDA7ICAgICAgICAgIC8qIHN0YXJ0IG9mIHN0cmluZyB0byBpbnNlcnQgKi8KICB0aGlzLm1hdGNoX3N0YXJ0ID0gMDsgICAgICAgLyogc3RhcnQgb2YgbWF0Y2hpbmcgc3RyaW5nICovCiAgdGhpcy5sb29rYWhlYWQgPSAwOyAgICAgICAgIC8qIG51bWJlciBvZiB2YWxpZCBieXRlcyBhaGVhZCBpbiB3aW5kb3cgKi8KCiAgdGhpcy5wcmV2X2xlbmd0aCA9IDA7CiAgLyogTGVuZ3RoIG9mIHRoZSBiZXN0IG1hdGNoIGF0IHByZXZpb3VzIHN0ZXAuIE1hdGNoZXMgbm90IGdyZWF0ZXIgdGhhbiB0aGlzCiAgICogYXJlIGRpc2NhcmRlZC4gVGhpcyBpcyB1c2VkIGluIHRoZSBsYXp5IG1hdGNoIGV2YWx1YXRpb24uCiAgICovCgogIHRoaXMubWF4X2NoYWluX2xlbmd0aCA9IDA7CiAgLyogVG8gc3BlZWQgdXAgZGVmbGF0aW9uLCBoYXNoIGNoYWlucyBhcmUgbmV2ZXIgc2VhcmNoZWQgYmV5b25kIHRoaXMKICAgKiBsZW5ndGguICBBIGhpZ2hlciBsaW1pdCBpbXByb3ZlcyBjb21wcmVzc2lvbiByYXRpbyBidXQgZGVncmFkZXMgdGhlCiAgICogc3BlZWQuCiAgICovCgogIHRoaXMubWF4X2xhenlfbWF0Y2ggPSAwOwogIC8qIEF0dGVtcHQgdG8gZmluZCBhIGJldHRlciBtYXRjaCBvbmx5IHdoZW4gdGhlIGN1cnJlbnQgbWF0Y2ggaXMgc3RyaWN0bHkKICAgKiBzbWFsbGVyIHRoYW4gdGhpcyB2YWx1ZS4gVGhpcyBtZWNoYW5pc20gaXMgdXNlZCBvbmx5IGZvciBjb21wcmVzc2lvbgogICAqIGxldmVscyA+PSA0LgogICAqLwogIC8vIFRoYXQncyBhbGlhcyB0byBtYXhfbGF6eV9tYXRjaCwgZG9uJ3QgdXNlIGRpcmVjdGx5CiAgLy90aGlzLm1heF9pbnNlcnRfbGVuZ3RoID0gMDsKICAvKiBJbnNlcnQgbmV3IHN0cmluZ3MgaW4gdGhlIGhhc2ggdGFibGUgb25seSBpZiB0aGUgbWF0Y2ggbGVuZ3RoIGlzIG5vdAogICAqIGdyZWF0ZXIgdGhhbiB0aGlzIGxlbmd0aC4gVGhpcyBzYXZlcyB0aW1lIGJ1dCBkZWdyYWRlcyBjb21wcmVzc2lvbi4KICAgKiBtYXhfaW5zZXJ0X2xlbmd0aCBpcyB1c2VkIG9ubHkgZm9yIGNvbXByZXNzaW9uIGxldmVscyA8PSAzLgogICAqLwoKICB0aGlzLmxldmVsID0gMDsgICAgIC8qIGNvbXByZXNzaW9uIGxldmVsICgxLi45KSAqLwogIHRoaXMuc3RyYXRlZ3kgPSAwOyAgLyogZmF2b3Igb3IgZm9yY2UgSHVmZm1hbiBjb2RpbmcqLwoKICB0aGlzLmdvb2RfbWF0Y2ggPSAwOwogIC8qIFVzZSBhIGZhc3RlciBzZWFyY2ggd2hlbiB0aGUgcHJldmlvdXMgbWF0Y2ggaXMgbG9uZ2VyIHRoYW4gdGhpcyAqLwoKICB0aGlzLm5pY2VfbWF0Y2ggPSAwOyAvKiBTdG9wIHNlYXJjaGluZyB3aGVuIGN1cnJlbnQgbWF0Y2ggZXhjZWVkcyB0aGlzICovCgogICAgICAgICAgICAgIC8qIHVzZWQgYnkgdHJlZXMuYzogKi8KCiAgLyogRGlkbid0IHVzZSBjdF9kYXRhIHR5cGVkZWYgYmVsb3cgdG8gc3VwcHJlc3MgY29tcGlsZXIgd2FybmluZyAqLwoKICAvLyBzdHJ1Y3QgY3RfZGF0YV9zIGR5bl9sdHJlZVtIRUFQX1NJWkVdOyAgIC8qIGxpdGVyYWwgYW5kIGxlbmd0aCB0cmVlICovCiAgLy8gc3RydWN0IGN0X2RhdGFfcyBkeW5fZHRyZWVbMipEX0NPREVTKzFdOyAvKiBkaXN0YW5jZSB0cmVlICovCiAgLy8gc3RydWN0IGN0X2RhdGFfcyBibF90cmVlWzIqQkxfQ09ERVMrMV07ICAvKiBIdWZmbWFuIHRyZWUgZm9yIGJpdCBsZW5ndGhzICovCgogIC8vIFVzZSBmbGF0IGFycmF5IG9mIERPVUJMRSBzaXplLCB3aXRoIGludGVybGVhdmVkIGZhdGEsCiAgLy8gYmVjYXVzZSBKUyBkb2VzIG5vdCBzdXBwb3J0IGVmZmVjdGl2ZQogIHRoaXMuZHluX2x0cmVlICA9IG5ldyB1dGlscy5CdWYxNihIRUFQX1NJWkUgKiAyKTsKICB0aGlzLmR5bl9kdHJlZSAgPSBuZXcgdXRpbHMuQnVmMTYoKDIgKiBEX0NPREVTICsgMSkgKiAyKTsKICB0aGlzLmJsX3RyZWUgICAgPSBuZXcgdXRpbHMuQnVmMTYoKDIgKiBCTF9DT0RFUyArIDEpICogMik7CiAgemVybyh0aGlzLmR5bl9sdHJlZSk7CiAgemVybyh0aGlzLmR5bl9kdHJlZSk7CiAgemVybyh0aGlzLmJsX3RyZWUpOwoKICB0aGlzLmxfZGVzYyAgID0gbnVsbDsgICAgICAgICAvKiBkZXNjLiBmb3IgbGl0ZXJhbCB0cmVlICovCiAgdGhpcy5kX2Rlc2MgICA9IG51bGw7ICAgICAgICAgLyogZGVzYy4gZm9yIGRpc3RhbmNlIHRyZWUgKi8KICB0aGlzLmJsX2Rlc2MgID0gbnVsbDsgICAgICAgICAvKiBkZXNjLiBmb3IgYml0IGxlbmd0aCB0cmVlICovCgogIC8vdXNoIGJsX2NvdW50W01BWF9CSVRTKzFdOwogIHRoaXMuYmxfY291bnQgPSBuZXcgdXRpbHMuQnVmMTYoTUFYX0JJVFMgKyAxKTsKICAvKiBudW1iZXIgb2YgY29kZXMgYXQgZWFjaCBiaXQgbGVuZ3RoIGZvciBhbiBvcHRpbWFsIHRyZWUgKi8KCiAgLy9pbnQgaGVhcFsyKkxfQ09ERVMrMV07ICAgICAgLyogaGVhcCB1c2VkIHRvIGJ1aWxkIHRoZSBIdWZmbWFuIHRyZWVzICovCiAgdGhpcy5oZWFwID0gbmV3IHV0aWxzLkJ1ZjE2KDIgKiBMX0NPREVTICsgMSk7ICAvKiBoZWFwIHVzZWQgdG8gYnVpbGQgdGhlIEh1ZmZtYW4gdHJlZXMgKi8KICB6ZXJvKHRoaXMuaGVhcCk7CgogIHRoaXMuaGVhcF9sZW4gPSAwOyAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgaGVhcCAqLwogIHRoaXMuaGVhcF9tYXggPSAwOyAgICAgICAgICAgICAgIC8qIGVsZW1lbnQgb2YgbGFyZ2VzdCBmcmVxdWVuY3kgKi8KICAvKiBUaGUgc29ucyBvZiBoZWFwW25dIGFyZSBoZWFwWzIqbl0gYW5kIGhlYXBbMipuKzFdLiBoZWFwWzBdIGlzIG5vdCB1c2VkLgogICAqIFRoZSBzYW1lIGhlYXAgYXJyYXkgaXMgdXNlZCB0byBidWlsZCBhbGwgdHJlZXMuCiAgICovCgogIHRoaXMuZGVwdGggPSBuZXcgdXRpbHMuQnVmMTYoMiAqIExfQ09ERVMgKyAxKTsgLy91Y2ggZGVwdGhbMipMX0NPREVTKzFdOwogIHplcm8odGhpcy5kZXB0aCk7CiAgLyogRGVwdGggb2YgZWFjaCBzdWJ0cmVlIHVzZWQgYXMgdGllIGJyZWFrZXIgZm9yIHRyZWVzIG9mIGVxdWFsIGZyZXF1ZW5jeQogICAqLwoKICB0aGlzLmxfYnVmID0gMDsgICAgICAgICAgLyogYnVmZmVyIGluZGV4IGZvciBsaXRlcmFscyBvciBsZW5ndGhzICovCgogIHRoaXMubGl0X2J1ZnNpemUgPSAwOwogIC8qIFNpemUgb2YgbWF0Y2ggYnVmZmVyIGZvciBsaXRlcmFscy9sZW5ndGhzLiAgVGhlcmUgYXJlIDQgcmVhc29ucyBmb3IKICAgKiBsaW1pdGluZyBsaXRfYnVmc2l6ZSB0byA2NEs6CiAgICogICAtIGZyZXF1ZW5jaWVzIGNhbiBiZSBrZXB0IGluIDE2IGJpdCBjb3VudGVycwogICAqICAgLSBpZiBjb21wcmVzc2lvbiBpcyBub3Qgc3VjY2Vzc2Z1bCBmb3IgdGhlIGZpcnN0IGJsb2NrLCBhbGwgaW5wdXQKICAgKiAgICAgZGF0YSBpcyBzdGlsbCBpbiB0aGUgd2luZG93IHNvIHdlIGNhbiBzdGlsbCBlbWl0IGEgc3RvcmVkIGJsb2NrIGV2ZW4KICAgKiAgICAgd2hlbiBpbnB1dCBjb21lcyBmcm9tIHN0YW5kYXJkIGlucHV0LiAgKFRoaXMgY2FuIGFsc28gYmUgZG9uZSBmb3IKICAgKiAgICAgYWxsIGJsb2NrcyBpZiBsaXRfYnVmc2l6ZSBpcyBub3QgZ3JlYXRlciB0aGFuIDMySy4pCiAgICogICAtIGlmIGNvbXByZXNzaW9uIGlzIG5vdCBzdWNjZXNzZnVsIGZvciBhIGZpbGUgc21hbGxlciB0aGFuIDY0Sywgd2UgY2FuCiAgICogICAgIGV2ZW4gZW1pdCBhIHN0b3JlZCBmaWxlIGluc3RlYWQgb2YgYSBzdG9yZWQgYmxvY2sgKHNhdmluZyA1IGJ5dGVzKS4KICAgKiAgICAgVGhpcyBpcyBhcHBsaWNhYmxlIG9ubHkgZm9yIHppcCAobm90IGd6aXAgb3IgemxpYikuCiAgICogICAtIGNyZWF0aW5nIG5ldyBIdWZmbWFuIHRyZWVzIGxlc3MgZnJlcXVlbnRseSBtYXkgbm90IHByb3ZpZGUgZmFzdAogICAqICAgICBhZGFwdGF0aW9uIHRvIGNoYW5nZXMgaW4gdGhlIGlucHV0IGRhdGEgc3RhdGlzdGljcy4gKFRha2UgZm9yCiAgICogICAgIGV4YW1wbGUgYSBiaW5hcnkgZmlsZSB3aXRoIHBvb3JseSBjb21wcmVzc2libGUgY29kZSBmb2xsb3dlZCBieQogICAqICAgICBhIGhpZ2hseSBjb21wcmVzc2libGUgc3RyaW5nIHRhYmxlLikgU21hbGxlciBidWZmZXIgc2l6ZXMgZ2l2ZQogICAqICAgICBmYXN0IGFkYXB0YXRpb24gYnV0IGhhdmUgb2YgY291cnNlIHRoZSBvdmVyaGVhZCBvZiB0cmFuc21pdHRpbmcKICAgKiAgICAgdHJlZXMgbW9yZSBmcmVxdWVudGx5LgogICAqICAgLSBJIGNhbid0IGNvdW50IGFib3ZlIDQKICAgKi8KCiAgdGhpcy5sYXN0X2xpdCA9IDA7ICAgICAgLyogcnVubmluZyBpbmRleCBpbiBsX2J1ZiAqLwoKICB0aGlzLmRfYnVmID0gMDsKICAvKiBCdWZmZXIgaW5kZXggZm9yIGRpc3RhbmNlcy4gVG8gc2ltcGxpZnkgdGhlIGNvZGUsIGRfYnVmIGFuZCBsX2J1ZiBoYXZlCiAgICogdGhlIHNhbWUgbnVtYmVyIG9mIGVsZW1lbnRzLiBUbyB1c2UgZGlmZmVyZW50IGxlbmd0aHMsIGFuIGV4dHJhIGZsYWcKICAgKiBhcnJheSB3b3VsZCBiZSBuZWNlc3NhcnkuCiAgICovCgogIHRoaXMub3B0X2xlbiA9IDA7ICAgICAgIC8qIGJpdCBsZW5ndGggb2YgY3VycmVudCBibG9jayB3aXRoIG9wdGltYWwgdHJlZXMgKi8KICB0aGlzLnN0YXRpY19sZW4gPSAwOyAgICAvKiBiaXQgbGVuZ3RoIG9mIGN1cnJlbnQgYmxvY2sgd2l0aCBzdGF0aWMgdHJlZXMgKi8KICB0aGlzLm1hdGNoZXMgPSAwOyAgICAgICAvKiBudW1iZXIgb2Ygc3RyaW5nIG1hdGNoZXMgaW4gY3VycmVudCBibG9jayAqLwogIHRoaXMuaW5zZXJ0ID0gMDsgICAgICAgIC8qIGJ5dGVzIGF0IGVuZCBvZiB3aW5kb3cgbGVmdCB0byBpbnNlcnQgKi8KCgogIHRoaXMuYmlfYnVmID0gMDsKICAvKiBPdXRwdXQgYnVmZmVyLiBiaXRzIGFyZSBpbnNlcnRlZCBzdGFydGluZyBhdCB0aGUgYm90dG9tIChsZWFzdAogICAqIHNpZ25pZmljYW50IGJpdHMpLgogICAqLwogIHRoaXMuYmlfdmFsaWQgPSAwOwogIC8qIE51bWJlciBvZiB2YWxpZCBiaXRzIGluIGJpX2J1Zi4gIEFsbCBiaXRzIGFib3ZlIHRoZSBsYXN0IHZhbGlkIGJpdAogICAqIGFyZSBhbHdheXMgemVyby4KICAgKi8KCiAgLy8gVXNlZCBmb3Igd2luZG93IG1lbW9yeSBpbml0LiBXZSBzYWZlbHkgaWdub3JlIGl0IGZvciBKUy4gVGhhdCBtYWtlcwogIC8vIHNlbnNlIG9ubHkgZm9yIHBvaW50ZXJzIGFuZCBtZW1vcnkgY2hlY2sgdG9vbHMuCiAgLy90aGlzLmhpZ2hfd2F0ZXIgPSAwOwogIC8qIEhpZ2ggd2F0ZXIgbWFyayBvZmZzZXQgaW4gd2luZG93IGZvciBpbml0aWFsaXplZCBieXRlcyAtLSBieXRlcyBhYm92ZQogICAqIHRoaXMgYXJlIHNldCB0byB6ZXJvIGluIG9yZGVyIHRvIGF2b2lkIG1lbW9yeSBjaGVjayB3YXJuaW5ncyB3aGVuCiAgICogbG9uZ2VzdCBtYXRjaCByb3V0aW5lcyBhY2Nlc3MgYnl0ZXMgcGFzdCB0aGUgaW5wdXQuICBUaGlzIGlzIHRoZW4KICAgKiB1cGRhdGVkIHRvIHRoZSBuZXcgaGlnaCB3YXRlciBtYXJrLgogICAqLwp9CgoKZnVuY3Rpb24gZGVmbGF0ZVJlc2V0S2VlcChzdHJtKSB7CiAgdmFyIHM7CgogIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkgewogICAgcmV0dXJuIGVycihzdHJtLCBaX1NUUkVBTV9FUlJPUik7CiAgfQoKICBzdHJtLnRvdGFsX2luID0gc3RybS50b3RhbF9vdXQgPSAwOwogIHN0cm0uZGF0YV90eXBlID0gWl9VTktOT1dOOwoKICBzID0gc3RybS5zdGF0ZTsKICBzLnBlbmRpbmcgPSAwOwogIHMucGVuZGluZ19vdXQgPSAwOwoKICBpZiAocy53cmFwIDwgMCkgewogICAgcy53cmFwID0gLXMud3JhcDsKICAgIC8qIHdhcyBtYWRlIG5lZ2F0aXZlIGJ5IGRlZmxhdGUoLi4uLCBaX0ZJTklTSCk7ICovCiAgfQogIHMuc3RhdHVzID0gKHMud3JhcCA/IElOSVRfU1RBVEUgOiBCVVNZX1NUQVRFKTsKICBzdHJtLmFkbGVyID0gKHMud3JhcCA9PT0gMikgPwogICAgMCAgLy8gY3JjMzIoMCwgWl9OVUxMLCAwKQogIDoKICAgIDE7IC8vIGFkbGVyMzIoMCwgWl9OVUxMLCAwKQogIHMubGFzdF9mbHVzaCA9IFpfTk9fRkxVU0g7CiAgdHJlZXMuX3RyX2luaXQocyk7CiAgcmV0dXJuIFpfT0s7Cn0KCgpmdW5jdGlvbiBkZWZsYXRlUmVzZXQoc3RybSkgewogIHZhciByZXQgPSBkZWZsYXRlUmVzZXRLZWVwKHN0cm0pOwogIGlmIChyZXQgPT09IFpfT0spIHsKICAgIGxtX2luaXQoc3RybS5zdGF0ZSk7CiAgfQogIHJldHVybiByZXQ7Cn0KCgpmdW5jdGlvbiBkZWZsYXRlU2V0SGVhZGVyKHN0cm0sIGhlYWQpIHsKICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUpIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9CiAgaWYgKHN0cm0uc3RhdGUud3JhcCAhPT0gMikgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH0KICBzdHJtLnN0YXRlLmd6aGVhZCA9IGhlYWQ7CiAgcmV0dXJuIFpfT0s7Cn0KCgpmdW5jdGlvbiBkZWZsYXRlSW5pdDIoc3RybSwgbGV2ZWwsIG1ldGhvZCwgd2luZG93Qml0cywgbWVtTGV2ZWwsIHN0cmF0ZWd5KSB7CiAgaWYgKCFzdHJtKSB7IC8vID09PSBaX05VTEwKICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKICB9CiAgdmFyIHdyYXAgPSAxOwoKICBpZiAobGV2ZWwgPT09IFpfREVGQVVMVF9DT01QUkVTU0lPTikgewogICAgbGV2ZWwgPSA2OwogIH0KCiAgaWYgKHdpbmRvd0JpdHMgPCAwKSB7IC8qIHN1cHByZXNzIHpsaWIgd3JhcHBlciAqLwogICAgd3JhcCA9IDA7CiAgICB3aW5kb3dCaXRzID0gLXdpbmRvd0JpdHM7CiAgfQoKICBlbHNlIGlmICh3aW5kb3dCaXRzID4gMTUpIHsKICAgIHdyYXAgPSAyOyAgICAgICAgICAgLyogd3JpdGUgZ3ppcCB3cmFwcGVyIGluc3RlYWQgKi8KICAgIHdpbmRvd0JpdHMgLT0gMTY7CiAgfQoKCiAgaWYgKG1lbUxldmVsIDwgMSB8fCBtZW1MZXZlbCA+IE1BWF9NRU1fTEVWRUwgfHwgbWV0aG9kICE9PSBaX0RFRkxBVEVEIHx8CiAgICB3aW5kb3dCaXRzIDwgOCB8fCB3aW5kb3dCaXRzID4gMTUgfHwgbGV2ZWwgPCAwIHx8IGxldmVsID4gOSB8fAogICAgc3RyYXRlZ3kgPCAwIHx8IHN0cmF0ZWd5ID4gWl9GSVhFRCkgewogICAgcmV0dXJuIGVycihzdHJtLCBaX1NUUkVBTV9FUlJPUik7CiAgfQoKCiAgaWYgKHdpbmRvd0JpdHMgPT09IDgpIHsKICAgIHdpbmRvd0JpdHMgPSA5OwogIH0KICAvKiB1bnRpbCAyNTYtYnl0ZSB3aW5kb3cgYnVnIGZpeGVkICovCgogIHZhciBzID0gbmV3IERlZmxhdGVTdGF0ZSgpOwoKICBzdHJtLnN0YXRlID0gczsKICBzLnN0cm0gPSBzdHJtOwoKICBzLndyYXAgPSB3cmFwOwogIHMuZ3poZWFkID0gbnVsbDsKICBzLndfYml0cyA9IHdpbmRvd0JpdHM7CiAgcy53X3NpemUgPSAxIDw8IHMud19iaXRzOwogIHMud19tYXNrID0gcy53X3NpemUgLSAxOwoKICBzLmhhc2hfYml0cyA9IG1lbUxldmVsICsgNzsKICBzLmhhc2hfc2l6ZSA9IDEgPDwgcy5oYXNoX2JpdHM7CiAgcy5oYXNoX21hc2sgPSBzLmhhc2hfc2l6ZSAtIDE7CiAgcy5oYXNoX3NoaWZ0ID0gfn4oKHMuaGFzaF9iaXRzICsgTUlOX01BVENIIC0gMSkgLyBNSU5fTUFUQ0gpOwoKICBzLndpbmRvdyA9IG5ldyB1dGlscy5CdWY4KHMud19zaXplICogMik7CiAgcy5oZWFkID0gbmV3IHV0aWxzLkJ1ZjE2KHMuaGFzaF9zaXplKTsKICBzLnByZXYgPSBuZXcgdXRpbHMuQnVmMTYocy53X3NpemUpOwoKICAvLyBEb24ndCBuZWVkIG1lbSBpbml0IG1hZ2ljIGZvciBKUy4KICAvL3MuaGlnaF93YXRlciA9IDA7ICAvKiBub3RoaW5nIHdyaXR0ZW4gdG8gcy0+d2luZG93IHlldCAqLwoKICBzLmxpdF9idWZzaXplID0gMSA8PCAobWVtTGV2ZWwgKyA2KTsgLyogMTZLIGVsZW1lbnRzIGJ5IGRlZmF1bHQgKi8KCiAgcy5wZW5kaW5nX2J1Zl9zaXplID0gcy5saXRfYnVmc2l6ZSAqIDQ7CgogIC8vb3ZlcmxheSA9ICh1c2hmICopIFpBTExPQyhzdHJtLCBzLT5saXRfYnVmc2l6ZSwgc2l6ZW9mKHVzaCkrMik7CiAgLy9zLT5wZW5kaW5nX2J1ZiA9ICh1Y2hmICopIG92ZXJsYXk7CiAgcy5wZW5kaW5nX2J1ZiA9IG5ldyB1dGlscy5CdWY4KHMucGVuZGluZ19idWZfc2l6ZSk7CgogIC8vIEl0IGlzIG9mZnNldCBmcm9tIGBzLnBlbmRpbmdfYnVmYCAoc2l6ZSBpcyBgcy5saXRfYnVmc2l6ZSAqIDJgKQogIC8vcy0+ZF9idWYgPSBvdmVybGF5ICsgcy0+bGl0X2J1ZnNpemUvc2l6ZW9mKHVzaCk7CiAgcy5kX2J1ZiA9IDEgKiBzLmxpdF9idWZzaXplOwoKICAvL3MtPmxfYnVmID0gcy0+cGVuZGluZ19idWYgKyAoMStzaXplb2YodXNoKSkqcy0+bGl0X2J1ZnNpemU7CiAgcy5sX2J1ZiA9ICgxICsgMikgKiBzLmxpdF9idWZzaXplOwoKICBzLmxldmVsID0gbGV2ZWw7CiAgcy5zdHJhdGVneSA9IHN0cmF0ZWd5OwogIHMubWV0aG9kID0gbWV0aG9kOwoKICByZXR1cm4gZGVmbGF0ZVJlc2V0KHN0cm0pOwp9CgpmdW5jdGlvbiBkZWZsYXRlSW5pdChzdHJtLCBsZXZlbCkgewogIHJldHVybiBkZWZsYXRlSW5pdDIoc3RybSwgbGV2ZWwsIFpfREVGTEFURUQsIE1BWF9XQklUUywgREVGX01FTV9MRVZFTCwgWl9ERUZBVUxUX1NUUkFURUdZKTsKfQoKCmZ1bmN0aW9uIGRlZmxhdGUoc3RybSwgZmx1c2gpIHsKICB2YXIgb2xkX2ZsdXNoLCBzOwogIHZhciBiZWcsIHZhbDsgLy8gZm9yIGd6aXAgaGVhZGVyIHdyaXRlIG9ubHkKCiAgaWYgKCFzdHJtIHx8ICFzdHJtLnN0YXRlIHx8CiAgICBmbHVzaCA+IFpfQkxPQ0sgfHwgZmx1c2ggPCAwKSB7CiAgICByZXR1cm4gc3RybSA/IGVycihzdHJtLCBaX1NUUkVBTV9FUlJPUikgOiBaX1NUUkVBTV9FUlJPUjsKICB9CgogIHMgPSBzdHJtLnN0YXRlOwoKICBpZiAoIXN0cm0ub3V0cHV0IHx8CiAgICAgICghc3RybS5pbnB1dCAmJiBzdHJtLmF2YWlsX2luICE9PSAwKSB8fAogICAgICAocy5zdGF0dXMgPT09IEZJTklTSF9TVEFURSAmJiBmbHVzaCAhPT0gWl9GSU5JU0gpKSB7CiAgICByZXR1cm4gZXJyKHN0cm0sIChzdHJtLmF2YWlsX291dCA9PT0gMCkgPyBaX0JVRl9FUlJPUiA6IFpfU1RSRUFNX0VSUk9SKTsKICB9CgogIHMuc3RybSA9IHN0cm07IC8qIGp1c3QgaW4gY2FzZSAqLwogIG9sZF9mbHVzaCA9IHMubGFzdF9mbHVzaDsKICBzLmxhc3RfZmx1c2ggPSBmbHVzaDsKCiAgLyogV3JpdGUgdGhlIGhlYWRlciAqLwogIGlmIChzLnN0YXR1cyA9PT0gSU5JVF9TVEFURSkgewoKICAgIGlmIChzLndyYXAgPT09IDIpIHsgLy8gR1pJUCBoZWFkZXIKICAgICAgc3RybS5hZGxlciA9IDA7ICAvL2NyYzMyKDBMLCBaX05VTEwsIDApOwogICAgICBwdXRfYnl0ZShzLCAzMSk7CiAgICAgIHB1dF9ieXRlKHMsIDEzOSk7CiAgICAgIHB1dF9ieXRlKHMsIDgpOwogICAgICBpZiAoIXMuZ3poZWFkKSB7IC8vIHMtPmd6aGVhZCA9PSBaX05VTEwKICAgICAgICBwdXRfYnl0ZShzLCAwKTsKICAgICAgICBwdXRfYnl0ZShzLCAwKTsKICAgICAgICBwdXRfYnl0ZShzLCAwKTsKICAgICAgICBwdXRfYnl0ZShzLCAwKTsKICAgICAgICBwdXRfYnl0ZShzLCAwKTsKICAgICAgICBwdXRfYnl0ZShzLCBzLmxldmVsID09PSA5ID8gMiA6CiAgICAgICAgICAgICAgICAgICAgKHMuc3RyYXRlZ3kgPj0gWl9IVUZGTUFOX09OTFkgfHwgcy5sZXZlbCA8IDIgPwogICAgICAgICAgICAgICAgICAgICA0IDogMCkpOwogICAgICAgIHB1dF9ieXRlKHMsIE9TX0NPREUpOwogICAgICAgIHMuc3RhdHVzID0gQlVTWV9TVEFURTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQudGV4dCA/IDEgOiAwKSArCiAgICAgICAgICAgICAgICAgICAgKHMuZ3poZWFkLmhjcmMgPyAyIDogMCkgKwogICAgICAgICAgICAgICAgICAgICghcy5nemhlYWQuZXh0cmEgPyAwIDogNCkgKwogICAgICAgICAgICAgICAgICAgICghcy5nemhlYWQubmFtZSA/IDAgOiA4KSArCiAgICAgICAgICAgICAgICAgICAgKCFzLmd6aGVhZC5jb21tZW50ID8gMCA6IDE2KQogICAgICAgICAgICAgICAgKTsKICAgICAgICBwdXRfYnl0ZShzLCBzLmd6aGVhZC50aW1lICYgMHhmZik7CiAgICAgICAgcHV0X2J5dGUocywgKHMuZ3poZWFkLnRpbWUgPj4gOCkgJiAweGZmKTsKICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQudGltZSA+PiAxNikgJiAweGZmKTsKICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQudGltZSA+PiAyNCkgJiAweGZmKTsKICAgICAgICBwdXRfYnl0ZShzLCBzLmxldmVsID09PSA5ID8gMiA6CiAgICAgICAgICAgICAgICAgICAgKHMuc3RyYXRlZ3kgPj0gWl9IVUZGTUFOX09OTFkgfHwgcy5sZXZlbCA8IDIgPwogICAgICAgICAgICAgICAgICAgICA0IDogMCkpOwogICAgICAgIHB1dF9ieXRlKHMsIHMuZ3poZWFkLm9zICYgMHhmZik7CiAgICAgICAgaWYgKHMuZ3poZWFkLmV4dHJhICYmIHMuZ3poZWFkLmV4dHJhLmxlbmd0aCkgewogICAgICAgICAgcHV0X2J5dGUocywgcy5nemhlYWQuZXh0cmEubGVuZ3RoICYgMHhmZik7CiAgICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQuZXh0cmEubGVuZ3RoID4+IDgpICYgMHhmZik7CiAgICAgICAgfQogICAgICAgIGlmIChzLmd6aGVhZC5oY3JjKSB7CiAgICAgICAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgcy5wZW5kaW5nX2J1Ziwgcy5wZW5kaW5nLCAwKTsKICAgICAgICB9CiAgICAgICAgcy5nemluZGV4ID0gMDsKICAgICAgICBzLnN0YXR1cyA9IEVYVFJBX1NUQVRFOwogICAgICB9CiAgICB9CiAgICBlbHNlIC8vIERFRkxBVEUgaGVhZGVyCiAgICB7CiAgICAgIHZhciBoZWFkZXIgPSAoWl9ERUZMQVRFRCArICgocy53X2JpdHMgLSA4KSA8PCA0KSkgPDwgODsKICAgICAgdmFyIGxldmVsX2ZsYWdzID0gLTE7CgogICAgICBpZiAocy5zdHJhdGVneSA+PSBaX0hVRkZNQU5fT05MWSB8fCBzLmxldmVsIDwgMikgewogICAgICAgIGxldmVsX2ZsYWdzID0gMDsKICAgICAgfSBlbHNlIGlmIChzLmxldmVsIDwgNikgewogICAgICAgIGxldmVsX2ZsYWdzID0gMTsKICAgICAgfSBlbHNlIGlmIChzLmxldmVsID09PSA2KSB7CiAgICAgICAgbGV2ZWxfZmxhZ3MgPSAyOwogICAgICB9IGVsc2UgewogICAgICAgIGxldmVsX2ZsYWdzID0gMzsKICAgICAgfQogICAgICBoZWFkZXIgfD0gKGxldmVsX2ZsYWdzIDw8IDYpOwogICAgICBpZiAocy5zdHJzdGFydCAhPT0gMCkgeyBoZWFkZXIgfD0gUFJFU0VUX0RJQ1Q7IH0KICAgICAgaGVhZGVyICs9IDMxIC0gKGhlYWRlciAlIDMxKTsKCiAgICAgIHMuc3RhdHVzID0gQlVTWV9TVEFURTsKICAgICAgcHV0U2hvcnRNU0IocywgaGVhZGVyKTsKCiAgICAgIC8qIFNhdmUgdGhlIGFkbGVyMzIgb2YgdGhlIHByZXNldCBkaWN0aW9uYXJ5OiAqLwogICAgICBpZiAocy5zdHJzdGFydCAhPT0gMCkgewogICAgICAgIHB1dFNob3J0TVNCKHMsIHN0cm0uYWRsZXIgPj4+IDE2KTsKICAgICAgICBwdXRTaG9ydE1TQihzLCBzdHJtLmFkbGVyICYgMHhmZmZmKTsKICAgICAgfQogICAgICBzdHJtLmFkbGVyID0gMTsgLy8gYWRsZXIzMigwTCwgWl9OVUxMLCAwKTsKICAgIH0KICB9CgovLyNpZmRlZiBHWklQCiAgaWYgKHMuc3RhdHVzID09PSBFWFRSQV9TVEFURSkgewogICAgaWYgKHMuZ3poZWFkLmV4dHJhLyogIT0gWl9OVUxMKi8pIHsKICAgICAgYmVnID0gcy5wZW5kaW5nOyAgLyogc3RhcnQgb2YgYnl0ZXMgdG8gdXBkYXRlIGNyYyAqLwoKICAgICAgd2hpbGUgKHMuZ3ppbmRleCA8IChzLmd6aGVhZC5leHRyYS5sZW5ndGggJiAweGZmZmYpKSB7CiAgICAgICAgaWYgKHMucGVuZGluZyA9PT0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7CiAgICAgICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHsKICAgICAgICAgICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIHMucGVuZGluZ19idWYsIHMucGVuZGluZyAtIGJlZywgYmVnKTsKICAgICAgICAgIH0KICAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7CiAgICAgICAgICBiZWcgPSBzLnBlbmRpbmc7CiAgICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHB1dF9ieXRlKHMsIHMuZ3poZWFkLmV4dHJhW3MuZ3ppbmRleF0gJiAweGZmKTsKICAgICAgICBzLmd6aW5kZXgrKzsKICAgICAgfQogICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHsKICAgICAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgcy5wZW5kaW5nX2J1Ziwgcy5wZW5kaW5nIC0gYmVnLCBiZWcpOwogICAgICB9CiAgICAgIGlmIChzLmd6aW5kZXggPT09IHMuZ3poZWFkLmV4dHJhLmxlbmd0aCkgewogICAgICAgIHMuZ3ppbmRleCA9IDA7CiAgICAgICAgcy5zdGF0dXMgPSBOQU1FX1NUQVRFOwogICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgcy5zdGF0dXMgPSBOQU1FX1NUQVRFOwogICAgfQogIH0KICBpZiAocy5zdGF0dXMgPT09IE5BTUVfU1RBVEUpIHsKICAgIGlmIChzLmd6aGVhZC5uYW1lLyogIT0gWl9OVUxMKi8pIHsKICAgICAgYmVnID0gcy5wZW5kaW5nOyAgLyogc3RhcnQgb2YgYnl0ZXMgdG8gdXBkYXRlIGNyYyAqLwogICAgICAvL2ludCB2YWw7CgogICAgICBkbyB7CiAgICAgICAgaWYgKHMucGVuZGluZyA9PT0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7CiAgICAgICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHsKICAgICAgICAgICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIHMucGVuZGluZ19idWYsIHMucGVuZGluZyAtIGJlZywgYmVnKTsKICAgICAgICAgIH0KICAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7CiAgICAgICAgICBiZWcgPSBzLnBlbmRpbmc7CiAgICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHsKICAgICAgICAgICAgdmFsID0gMTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIEpTIHNwZWNpZmljOiBsaXR0bGUgbWFnaWMgdG8gYWRkIHplcm8gdGVybWluYXRvciB0byBlbmQgb2Ygc3RyaW5nCiAgICAgICAgaWYgKHMuZ3ppbmRleCA8IHMuZ3poZWFkLm5hbWUubGVuZ3RoKSB7CiAgICAgICAgICB2YWwgPSBzLmd6aGVhZC5uYW1lLmNoYXJDb2RlQXQocy5nemluZGV4KyspICYgMHhmZjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFsID0gMDsKICAgICAgICB9CiAgICAgICAgcHV0X2J5dGUocywgdmFsKTsKICAgICAgfSB3aGlsZSAodmFsICE9PSAwKTsKCiAgICAgIGlmIChzLmd6aGVhZC5oY3JjICYmIHMucGVuZGluZyA+IGJlZykgewogICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcgLSBiZWcsIGJlZyk7CiAgICAgIH0KICAgICAgaWYgKHZhbCA9PT0gMCkgewogICAgICAgIHMuZ3ppbmRleCA9IDA7CiAgICAgICAgcy5zdGF0dXMgPSBDT01NRU5UX1NUQVRFOwogICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgcy5zdGF0dXMgPSBDT01NRU5UX1NUQVRFOwogICAgfQogIH0KICBpZiAocy5zdGF0dXMgPT09IENPTU1FTlRfU1RBVEUpIHsKICAgIGlmIChzLmd6aGVhZC5jb21tZW50LyogIT0gWl9OVUxMKi8pIHsKICAgICAgYmVnID0gcy5wZW5kaW5nOyAgLyogc3RhcnQgb2YgYnl0ZXMgdG8gdXBkYXRlIGNyYyAqLwogICAgICAvL2ludCB2YWw7CgogICAgICBkbyB7CiAgICAgICAgaWYgKHMucGVuZGluZyA9PT0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7CiAgICAgICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHsKICAgICAgICAgICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIHMucGVuZGluZ19idWYsIHMucGVuZGluZyAtIGJlZywgYmVnKTsKICAgICAgICAgIH0KICAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7CiAgICAgICAgICBiZWcgPSBzLnBlbmRpbmc7CiAgICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHsKICAgICAgICAgICAgdmFsID0gMTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIEpTIHNwZWNpZmljOiBsaXR0bGUgbWFnaWMgdG8gYWRkIHplcm8gdGVybWluYXRvciB0byBlbmQgb2Ygc3RyaW5nCiAgICAgICAgaWYgKHMuZ3ppbmRleCA8IHMuZ3poZWFkLmNvbW1lbnQubGVuZ3RoKSB7CiAgICAgICAgICB2YWwgPSBzLmd6aGVhZC5jb21tZW50LmNoYXJDb2RlQXQocy5nemluZGV4KyspICYgMHhmZjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFsID0gMDsKICAgICAgICB9CiAgICAgICAgcHV0X2J5dGUocywgdmFsKTsKICAgICAgfSB3aGlsZSAodmFsICE9PSAwKTsKCiAgICAgIGlmIChzLmd6aGVhZC5oY3JjICYmIHMucGVuZGluZyA+IGJlZykgewogICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcgLSBiZWcsIGJlZyk7CiAgICAgIH0KICAgICAgaWYgKHZhbCA9PT0gMCkgewogICAgICAgIHMuc3RhdHVzID0gSENSQ19TVEFURTsKICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgIHMuc3RhdHVzID0gSENSQ19TVEFURTsKICAgIH0KICB9CiAgaWYgKHMuc3RhdHVzID09PSBIQ1JDX1NUQVRFKSB7CiAgICBpZiAocy5nemhlYWQuaGNyYykgewogICAgICBpZiAocy5wZW5kaW5nICsgMiA+IHMucGVuZGluZ19idWZfc2l6ZSkgewogICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7CiAgICAgIH0KICAgICAgaWYgKHMucGVuZGluZyArIDIgPD0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7CiAgICAgICAgcHV0X2J5dGUocywgc3RybS5hZGxlciAmIDB4ZmYpOwogICAgICAgIHB1dF9ieXRlKHMsIChzdHJtLmFkbGVyID4+IDgpICYgMHhmZik7CiAgICAgICAgc3RybS5hZGxlciA9IDA7IC8vY3JjMzIoMEwsIFpfTlVMTCwgMCk7CiAgICAgICAgcy5zdGF0dXMgPSBCVVNZX1NUQVRFOwogICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgcy5zdGF0dXMgPSBCVVNZX1NUQVRFOwogICAgfQogIH0KLy8jZW5kaWYKCiAgLyogRmx1c2ggYXMgbXVjaCBwZW5kaW5nIG91dHB1dCBhcyBwb3NzaWJsZSAqLwogIGlmIChzLnBlbmRpbmcgIT09IDApIHsKICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7CiAgICBpZiAoc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgLyogU2luY2UgYXZhaWxfb3V0IGlzIDAsIGRlZmxhdGUgd2lsbCBiZSBjYWxsZWQgYWdhaW4gd2l0aAogICAgICAgKiBtb3JlIG91dHB1dCBzcGFjZSwgYnV0IHBvc3NpYmx5IHdpdGggYm90aCBwZW5kaW5nIGFuZAogICAgICAgKiBhdmFpbF9pbiBlcXVhbCB0byB6ZXJvLiBUaGVyZSB3b24ndCBiZSBhbnl0aGluZyB0byBkbywKICAgICAgICogYnV0IHRoaXMgaXMgbm90IGFuIGVycm9yIHNpdHVhdGlvbiBzbyBtYWtlIHN1cmUgd2UKICAgICAgICogcmV0dXJuIE9LIGluc3RlYWQgb2YgQlVGX0VSUk9SIGF0IG5leHQgY2FsbCBvZiBkZWZsYXRlOgogICAgICAgKi8KICAgICAgcy5sYXN0X2ZsdXNoID0gLTE7CiAgICAgIHJldHVybiBaX09LOwogICAgfQoKICAgIC8qIE1ha2Ugc3VyZSB0aGVyZSBpcyBzb21ldGhpbmcgdG8gZG8gYW5kIGF2b2lkIGR1cGxpY2F0ZSBjb25zZWN1dGl2ZQogICAgICogZmx1c2hlcy4gRm9yIHJlcGVhdGVkIGFuZCB1c2VsZXNzIGNhbGxzIHdpdGggWl9GSU5JU0gsIHdlIGtlZXAKICAgICAqIHJldHVybmluZyBaX1NUUkVBTV9FTkQgaW5zdGVhZCBvZiBaX0JVRl9FUlJPUi4KICAgICAqLwogIH0gZWxzZSBpZiAoc3RybS5hdmFpbF9pbiA9PT0gMCAmJiByYW5rKGZsdXNoKSA8PSByYW5rKG9sZF9mbHVzaCkgJiYKICAgIGZsdXNoICE9PSBaX0ZJTklTSCkgewogICAgcmV0dXJuIGVycihzdHJtLCBaX0JVRl9FUlJPUik7CiAgfQoKICAvKiBVc2VyIG11c3Qgbm90IHByb3ZpZGUgbW9yZSBpbnB1dCBhZnRlciB0aGUgZmlyc3QgRklOSVNIOiAqLwogIGlmIChzLnN0YXR1cyA9PT0gRklOSVNIX1NUQVRFICYmIHN0cm0uYXZhaWxfaW4gIT09IDApIHsKICAgIHJldHVybiBlcnIoc3RybSwgWl9CVUZfRVJST1IpOwogIH0KCiAgLyogU3RhcnQgYSBuZXcgYmxvY2sgb3IgY29udGludWUgdGhlIGN1cnJlbnQgb25lLgogICAqLwogIGlmIChzdHJtLmF2YWlsX2luICE9PSAwIHx8IHMubG9va2FoZWFkICE9PSAwIHx8CiAgICAoZmx1c2ggIT09IFpfTk9fRkxVU0ggJiYgcy5zdGF0dXMgIT09IEZJTklTSF9TVEFURSkpIHsKICAgIHZhciBic3RhdGUgPSAocy5zdHJhdGVneSA9PT0gWl9IVUZGTUFOX09OTFkpID8gZGVmbGF0ZV9odWZmKHMsIGZsdXNoKSA6CiAgICAgIChzLnN0cmF0ZWd5ID09PSBaX1JMRSA/IGRlZmxhdGVfcmxlKHMsIGZsdXNoKSA6CiAgICAgICAgY29uZmlndXJhdGlvbl90YWJsZVtzLmxldmVsXS5mdW5jKHMsIGZsdXNoKSk7CgogICAgaWYgKGJzdGF0ZSA9PT0gQlNfRklOSVNIX1NUQVJURUQgfHwgYnN0YXRlID09PSBCU19GSU5JU0hfRE9ORSkgewogICAgICBzLnN0YXR1cyA9IEZJTklTSF9TVEFURTsKICAgIH0KICAgIGlmIChic3RhdGUgPT09IEJTX05FRURfTU9SRSB8fCBic3RhdGUgPT09IEJTX0ZJTklTSF9TVEFSVEVEKSB7CiAgICAgIGlmIChzdHJtLmF2YWlsX291dCA9PT0gMCkgewogICAgICAgIHMubGFzdF9mbHVzaCA9IC0xOwogICAgICAgIC8qIGF2b2lkIEJVRl9FUlJPUiBuZXh0IGNhbGwsIHNlZSBhYm92ZSAqLwogICAgICB9CiAgICAgIHJldHVybiBaX09LOwogICAgICAvKiBJZiBmbHVzaCAhPSBaX05PX0ZMVVNIICYmIGF2YWlsX291dCA9PSAwLCB0aGUgbmV4dCBjYWxsCiAgICAgICAqIG9mIGRlZmxhdGUgc2hvdWxkIHVzZSB0aGUgc2FtZSBmbHVzaCBwYXJhbWV0ZXIgdG8gbWFrZSBzdXJlCiAgICAgICAqIHRoYXQgdGhlIGZsdXNoIGlzIGNvbXBsZXRlLiBTbyB3ZSBkb24ndCBoYXZlIHRvIG91dHB1dCBhbgogICAgICAgKiBlbXB0eSBibG9jayBoZXJlLCB0aGlzIHdpbGwgYmUgZG9uZSBhdCBuZXh0IGNhbGwuIFRoaXMgYWxzbwogICAgICAgKiBlbnN1cmVzIHRoYXQgZm9yIGEgdmVyeSBzbWFsbCBvdXRwdXQgYnVmZmVyLCB3ZSBlbWl0IGF0IG1vc3QKICAgICAgICogb25lIGVtcHR5IGJsb2NrLgogICAgICAgKi8KICAgIH0KICAgIGlmIChic3RhdGUgPT09IEJTX0JMT0NLX0RPTkUpIHsKICAgICAgaWYgKGZsdXNoID09PSBaX1BBUlRJQUxfRkxVU0gpIHsKICAgICAgICB0cmVlcy5fdHJfYWxpZ24ocyk7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoZmx1c2ggIT09IFpfQkxPQ0spIHsgLyogRlVMTF9GTFVTSCBvciBTWU5DX0ZMVVNIICovCgogICAgICAgIHRyZWVzLl90cl9zdG9yZWRfYmxvY2socywgMCwgMCwgZmFsc2UpOwogICAgICAgIC8qIEZvciBhIGZ1bGwgZmx1c2gsIHRoaXMgZW1wdHkgYmxvY2sgd2lsbCBiZSByZWNvZ25pemVkCiAgICAgICAgICogYXMgYSBzcGVjaWFsIG1hcmtlciBieSBpbmZsYXRlX3N5bmMoKS4KICAgICAgICAgKi8KICAgICAgICBpZiAoZmx1c2ggPT09IFpfRlVMTF9GTFVTSCkgewogICAgICAgICAgLyoqKiBDTEVBUl9IQVNIKHMpOyAqKiovICAgICAgICAgICAgIC8qIGZvcmdldCBoaXN0b3J5ICovCiAgICAgICAgICB6ZXJvKHMuaGVhZCk7IC8vIEZpbGwgd2l0aCBOSUwgKD0gMCk7CgogICAgICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7CiAgICAgICAgICAgIHMuc3Ryc3RhcnQgPSAwOwogICAgICAgICAgICBzLmJsb2NrX3N0YXJ0ID0gMDsKICAgICAgICAgICAgcy5pbnNlcnQgPSAwOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICBmbHVzaF9wZW5kaW5nKHN0cm0pOwogICAgICBpZiAoc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgICBzLmxhc3RfZmx1c2ggPSAtMTsgLyogYXZvaWQgQlVGX0VSUk9SIGF0IG5leHQgY2FsbCwgc2VlIGFib3ZlICovCiAgICAgICAgcmV0dXJuIFpfT0s7CiAgICAgIH0KICAgIH0KICB9CiAgLy9Bc3NlcnQoc3RybS0+YXZhaWxfb3V0ID4gMCwgImJ1ZzIiKTsKICAvL2lmIChzdHJtLmF2YWlsX291dCA8PSAwKSB7IHRocm93IG5ldyBFcnJvcigiYnVnMiIpO30KCiAgaWYgKGZsdXNoICE9PSBaX0ZJTklTSCkgeyByZXR1cm4gWl9PSzsgfQogIGlmIChzLndyYXAgPD0gMCkgeyByZXR1cm4gWl9TVFJFQU1fRU5EOyB9CgogIC8qIFdyaXRlIHRoZSB0cmFpbGVyICovCiAgaWYgKHMud3JhcCA9PT0gMikgewogICAgcHV0X2J5dGUocywgc3RybS5hZGxlciAmIDB4ZmYpOwogICAgcHV0X2J5dGUocywgKHN0cm0uYWRsZXIgPj4gOCkgJiAweGZmKTsKICAgIHB1dF9ieXRlKHMsIChzdHJtLmFkbGVyID4+IDE2KSAmIDB4ZmYpOwogICAgcHV0X2J5dGUocywgKHN0cm0uYWRsZXIgPj4gMjQpICYgMHhmZik7CiAgICBwdXRfYnl0ZShzLCBzdHJtLnRvdGFsX2luICYgMHhmZik7CiAgICBwdXRfYnl0ZShzLCAoc3RybS50b3RhbF9pbiA+PiA4KSAmIDB4ZmYpOwogICAgcHV0X2J5dGUocywgKHN0cm0udG90YWxfaW4gPj4gMTYpICYgMHhmZik7CiAgICBwdXRfYnl0ZShzLCAoc3RybS50b3RhbF9pbiA+PiAyNCkgJiAweGZmKTsKICB9CiAgZWxzZQogIHsKICAgIHB1dFNob3J0TVNCKHMsIHN0cm0uYWRsZXIgPj4+IDE2KTsKICAgIHB1dFNob3J0TVNCKHMsIHN0cm0uYWRsZXIgJiAweGZmZmYpOwogIH0KCiAgZmx1c2hfcGVuZGluZyhzdHJtKTsKICAvKiBJZiBhdmFpbF9vdXQgaXMgemVybywgdGhlIGFwcGxpY2F0aW9uIHdpbGwgY2FsbCBkZWZsYXRlIGFnYWluCiAgICogdG8gZmx1c2ggdGhlIHJlc3QuCiAgICovCiAgaWYgKHMud3JhcCA+IDApIHsgcy53cmFwID0gLXMud3JhcDsgfQogIC8qIHdyaXRlIHRoZSB0cmFpbGVyIG9ubHkgb25jZSEgKi8KICByZXR1cm4gcy5wZW5kaW5nICE9PSAwID8gWl9PSyA6IFpfU1RSRUFNX0VORDsKfQoKZnVuY3Rpb24gZGVmbGF0ZUVuZChzdHJtKSB7CiAgdmFyIHN0YXR1czsKCiAgaWYgKCFzdHJtLyo9PSBaX05VTEwqLyB8fCAhc3RybS5zdGF0ZS8qPT0gWl9OVUxMKi8pIHsKICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKICB9CgogIHN0YXR1cyA9IHN0cm0uc3RhdGUuc3RhdHVzOwogIGlmIChzdGF0dXMgIT09IElOSVRfU1RBVEUgJiYKICAgIHN0YXR1cyAhPT0gRVhUUkFfU1RBVEUgJiYKICAgIHN0YXR1cyAhPT0gTkFNRV9TVEFURSAmJgogICAgc3RhdHVzICE9PSBDT01NRU5UX1NUQVRFICYmCiAgICBzdGF0dXMgIT09IEhDUkNfU1RBVEUgJiYKICAgIHN0YXR1cyAhPT0gQlVTWV9TVEFURSAmJgogICAgc3RhdHVzICE9PSBGSU5JU0hfU1RBVEUKICApIHsKICAgIHJldHVybiBlcnIoc3RybSwgWl9TVFJFQU1fRVJST1IpOwogIH0KCiAgc3RybS5zdGF0ZSA9IG51bGw7CgogIHJldHVybiBzdGF0dXMgPT09IEJVU1lfU1RBVEUgPyBlcnIoc3RybSwgWl9EQVRBX0VSUk9SKSA6IFpfT0s7Cn0KCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIEluaXRpYWxpemVzIHRoZSBjb21wcmVzc2lvbiBkaWN0aW9uYXJ5IGZyb20gdGhlIGdpdmVuIGJ5dGUKICogc2VxdWVuY2Ugd2l0aG91dCBwcm9kdWNpbmcgYW55IGNvbXByZXNzZWQgb3V0cHV0LgogKi8KZnVuY3Rpb24gZGVmbGF0ZVNldERpY3Rpb25hcnkoc3RybSwgZGljdGlvbmFyeSkgewogIHZhciBkaWN0TGVuZ3RoID0gZGljdGlvbmFyeS5sZW5ndGg7CgogIHZhciBzOwogIHZhciBzdHIsIG47CiAgdmFyIHdyYXA7CiAgdmFyIGF2YWlsOwogIHZhciBuZXh0OwogIHZhciBpbnB1dDsKICB2YXIgdG1wRGljdDsKCiAgaWYgKCFzdHJtLyo9PSBaX05VTEwqLyB8fCAhc3RybS5zdGF0ZS8qPT0gWl9OVUxMKi8pIHsKICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKICB9CgogIHMgPSBzdHJtLnN0YXRlOwogIHdyYXAgPSBzLndyYXA7CgogIGlmICh3cmFwID09PSAyIHx8ICh3cmFwID09PSAxICYmIHMuc3RhdHVzICE9PSBJTklUX1NUQVRFKSB8fCBzLmxvb2thaGVhZCkgewogICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwogIH0KCiAgLyogd2hlbiB1c2luZyB6bGliIHdyYXBwZXJzLCBjb21wdXRlIEFkbGVyLTMyIGZvciBwcm92aWRlZCBkaWN0aW9uYXJ5ICovCiAgaWYgKHdyYXAgPT09IDEpIHsKICAgIC8qIGFkbGVyMzIoc3RybS0+YWRsZXIsIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgpOyAqLwogICAgc3RybS5hZGxlciA9IGFkbGVyMzIoc3RybS5hZGxlciwgZGljdGlvbmFyeSwgZGljdExlbmd0aCwgMCk7CiAgfQoKICBzLndyYXAgPSAwOyAgIC8qIGF2b2lkIGNvbXB1dGluZyBBZGxlci0zMiBpbiByZWFkX2J1ZiAqLwoKICAvKiBpZiBkaWN0aW9uYXJ5IHdvdWxkIGZpbGwgd2luZG93LCBqdXN0IHJlcGxhY2UgdGhlIGhpc3RvcnkgKi8KICBpZiAoZGljdExlbmd0aCA+PSBzLndfc2l6ZSkgewogICAgaWYgKHdyYXAgPT09IDApIHsgICAgICAgICAgICAvKiBhbHJlYWR5IGVtcHR5IG90aGVyd2lzZSAqLwogICAgICAvKioqIENMRUFSX0hBU0gocyk7ICoqKi8KICAgICAgemVybyhzLmhlYWQpOyAvLyBGaWxsIHdpdGggTklMICg9IDApOwogICAgICBzLnN0cnN0YXJ0ID0gMDsKICAgICAgcy5ibG9ja19zdGFydCA9IDA7CiAgICAgIHMuaW5zZXJ0ID0gMDsKICAgIH0KICAgIC8qIHVzZSB0aGUgdGFpbCAqLwogICAgLy8gZGljdGlvbmFyeSA9IGRpY3Rpb25hcnkuc2xpY2UoZGljdExlbmd0aCAtIHMud19zaXplKTsKICAgIHRtcERpY3QgPSBuZXcgdXRpbHMuQnVmOChzLndfc2l6ZSk7CiAgICB1dGlscy5hcnJheVNldCh0bXBEaWN0LCBkaWN0aW9uYXJ5LCBkaWN0TGVuZ3RoIC0gcy53X3NpemUsIHMud19zaXplLCAwKTsKICAgIGRpY3Rpb25hcnkgPSB0bXBEaWN0OwogICAgZGljdExlbmd0aCA9IHMud19zaXplOwogIH0KICAvKiBpbnNlcnQgZGljdGlvbmFyeSBpbnRvIHdpbmRvdyBhbmQgaGFzaCAqLwogIGF2YWlsID0gc3RybS5hdmFpbF9pbjsKICBuZXh0ID0gc3RybS5uZXh0X2luOwogIGlucHV0ID0gc3RybS5pbnB1dDsKICBzdHJtLmF2YWlsX2luID0gZGljdExlbmd0aDsKICBzdHJtLm5leHRfaW4gPSAwOwogIHN0cm0uaW5wdXQgPSBkaWN0aW9uYXJ5OwogIGZpbGxfd2luZG93KHMpOwogIHdoaWxlIChzLmxvb2thaGVhZCA+PSBNSU5fTUFUQ0gpIHsKICAgIHN0ciA9IHMuc3Ryc3RhcnQ7CiAgICBuID0gcy5sb29rYWhlYWQgLSAoTUlOX01BVENIIC0gMSk7CiAgICBkbyB7CiAgICAgIC8qIFVQREFURV9IQVNIKHMsIHMtPmluc19oLCBzLT53aW5kb3dbc3RyICsgTUlOX01BVENILTFdKTsgKi8KICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbc3RyICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7CgogICAgICBzLnByZXZbc3RyICYgcy53X21hc2tdID0gcy5oZWFkW3MuaW5zX2hdOwoKICAgICAgcy5oZWFkW3MuaW5zX2hdID0gc3RyOwogICAgICBzdHIrKzsKICAgIH0gd2hpbGUgKC0tbik7CiAgICBzLnN0cnN0YXJ0ID0gc3RyOwogICAgcy5sb29rYWhlYWQgPSBNSU5fTUFUQ0ggLSAxOwogICAgZmlsbF93aW5kb3cocyk7CiAgfQogIHMuc3Ryc3RhcnQgKz0gcy5sb29rYWhlYWQ7CiAgcy5ibG9ja19zdGFydCA9IHMuc3Ryc3RhcnQ7CiAgcy5pbnNlcnQgPSBzLmxvb2thaGVhZDsKICBzLmxvb2thaGVhZCA9IDA7CiAgcy5tYXRjaF9sZW5ndGggPSBzLnByZXZfbGVuZ3RoID0gTUlOX01BVENIIC0gMTsKICBzLm1hdGNoX2F2YWlsYWJsZSA9IDA7CiAgc3RybS5uZXh0X2luID0gbmV4dDsKICBzdHJtLmlucHV0ID0gaW5wdXQ7CiAgc3RybS5hdmFpbF9pbiA9IGF2YWlsOwogIHMud3JhcCA9IHdyYXA7CiAgcmV0dXJuIFpfT0s7Cn0KCgpleHBvcnRzLmRlZmxhdGVJbml0ID0gZGVmbGF0ZUluaXQ7CmV4cG9ydHMuZGVmbGF0ZUluaXQyID0gZGVmbGF0ZUluaXQyOwpleHBvcnRzLmRlZmxhdGVSZXNldCA9IGRlZmxhdGVSZXNldDsKZXhwb3J0cy5kZWZsYXRlUmVzZXRLZWVwID0gZGVmbGF0ZVJlc2V0S2VlcDsKZXhwb3J0cy5kZWZsYXRlU2V0SGVhZGVyID0gZGVmbGF0ZVNldEhlYWRlcjsKZXhwb3J0cy5kZWZsYXRlID0gZGVmbGF0ZTsKZXhwb3J0cy5kZWZsYXRlRW5kID0gZGVmbGF0ZUVuZDsKZXhwb3J0cy5kZWZsYXRlU2V0RGljdGlvbmFyeSA9IGRlZmxhdGVTZXREaWN0aW9uYXJ5OwpleHBvcnRzLmRlZmxhdGVJbmZvID0gJ3Bha28gZGVmbGF0ZSAoZnJvbSBOb2RlY2EgcHJvamVjdCknOwoKLyogTm90IGltcGxlbWVudGVkCmV4cG9ydHMuZGVmbGF0ZUJvdW5kID0gZGVmbGF0ZUJvdW5kOwpleHBvcnRzLmRlZmxhdGVDb3B5ID0gZGVmbGF0ZUNvcHk7CmV4cG9ydHMuZGVmbGF0ZVBhcmFtcyA9IGRlZmxhdGVQYXJhbXM7CmV4cG9ydHMuZGVmbGF0ZVBlbmRpbmcgPSBkZWZsYXRlUGVuZGluZzsKZXhwb3J0cy5kZWZsYXRlUHJpbWUgPSBkZWZsYXRlUHJpbWU7CmV4cG9ydHMuZGVmbGF0ZVR1bmUgPSBkZWZsYXRlVHVuZTsKKi8KCgovKioqLyB9KSwKLyogMTU1ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgovLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW4KLy8KLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCi8vCi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLAovLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0Ci8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKLy8KLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3QKLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZQovLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZQovLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlCi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgovLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLgoKdmFyIHV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNCk7CgovKiBQdWJsaWMgY29uc3RhbnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwoKCi8vdmFyIFpfRklMVEVSRUQgICAgICAgICAgPSAxOwovL3ZhciBaX0hVRkZNQU5fT05MWSAgICAgID0gMjsKLy92YXIgWl9STEUgICAgICAgICAgICAgICA9IDM7CnZhciBaX0ZJWEVEICAgICAgICAgICAgICAgPSA0OwovL3ZhciBaX0RFRkFVTFRfU1RSQVRFR1kgID0gMDsKCi8qIFBvc3NpYmxlIHZhbHVlcyBvZiB0aGUgZGF0YV90eXBlIGZpZWxkICh0aG91Z2ggc2VlIGluZmxhdGUoKSkgKi8KdmFyIFpfQklOQVJZICAgICAgICAgICAgICA9IDA7CnZhciBaX1RFWFQgICAgICAgICAgICAgICAgPSAxOwovL3ZhciBaX0FTQ0lJICAgICAgICAgICAgID0gMTsgLy8gPSBaX1RFWFQKdmFyIFpfVU5LTk9XTiAgICAgICAgICAgICA9IDI7CgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwoKCmZ1bmN0aW9uIHplcm8oYnVmKSB7IHZhciBsZW4gPSBidWYubGVuZ3RoOyB3aGlsZSAoLS1sZW4gPj0gMCkgeyBidWZbbGVuXSA9IDA7IH0gfQoKLy8gRnJvbSB6dXRpbC5oCgp2YXIgU1RPUkVEX0JMT0NLID0gMDsKdmFyIFNUQVRJQ19UUkVFUyA9IDE7CnZhciBEWU5fVFJFRVMgICAgPSAyOwovKiBUaGUgdGhyZWUga2luZHMgb2YgYmxvY2sgdHlwZSAqLwoKdmFyIE1JTl9NQVRDSCAgICA9IDM7CnZhciBNQVhfTUFUQ0ggICAgPSAyNTg7Ci8qIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIG1hdGNoIGxlbmd0aHMgKi8KCi8vIEZyb20gZGVmbGF0ZS5oCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBJbnRlcm5hbCBjb21wcmVzc2lvbiBzdGF0ZS4KICovCgp2YXIgTEVOR1RIX0NPREVTICA9IDI5OwovKiBudW1iZXIgb2YgbGVuZ3RoIGNvZGVzLCBub3QgY291bnRpbmcgdGhlIHNwZWNpYWwgRU5EX0JMT0NLIGNvZGUgKi8KCnZhciBMSVRFUkFMUyAgICAgID0gMjU2OwovKiBudW1iZXIgb2YgbGl0ZXJhbCBieXRlcyAwLi4yNTUgKi8KCnZhciBMX0NPREVTICAgICAgID0gTElURVJBTFMgKyAxICsgTEVOR1RIX0NPREVTOwovKiBudW1iZXIgb2YgTGl0ZXJhbCBvciBMZW5ndGggY29kZXMsIGluY2x1ZGluZyB0aGUgRU5EX0JMT0NLIGNvZGUgKi8KCnZhciBEX0NPREVTICAgICAgID0gMzA7Ci8qIG51bWJlciBvZiBkaXN0YW5jZSBjb2RlcyAqLwoKdmFyIEJMX0NPREVTICAgICAgPSAxOTsKLyogbnVtYmVyIG9mIGNvZGVzIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGJpdCBsZW5ndGhzICovCgp2YXIgSEVBUF9TSVpFICAgICA9IDIgKiBMX0NPREVTICsgMTsKLyogbWF4aW11bSBoZWFwIHNpemUgKi8KCnZhciBNQVhfQklUUyAgICAgID0gMTU7Ci8qIEFsbCBjb2RlcyBtdXN0IG5vdCBleGNlZWQgTUFYX0JJVFMgYml0cyAqLwoKdmFyIEJ1Zl9zaXplICAgICAgPSAxNjsKLyogc2l6ZSBvZiBiaXQgYnVmZmVyIGluIGJpX2J1ZiAqLwoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBDb25zdGFudHMKICovCgp2YXIgTUFYX0JMX0JJVFMgPSA3OwovKiBCaXQgbGVuZ3RoIGNvZGVzIG11c3Qgbm90IGV4Y2VlZCBNQVhfQkxfQklUUyBiaXRzICovCgp2YXIgRU5EX0JMT0NLICAgPSAyNTY7Ci8qIGVuZCBvZiBibG9jayBsaXRlcmFsIGNvZGUgKi8KCnZhciBSRVBfM182ICAgICA9IDE2OwovKiByZXBlYXQgcHJldmlvdXMgYml0IGxlbmd0aCAzLTYgdGltZXMgKDIgYml0cyBvZiByZXBlYXQgY291bnQpICovCgp2YXIgUkVQWl8zXzEwICAgPSAxNzsKLyogcmVwZWF0IGEgemVybyBsZW5ndGggMy0xMCB0aW1lcyAgKDMgYml0cyBvZiByZXBlYXQgY291bnQpICovCgp2YXIgUkVQWl8xMV8xMzggPSAxODsKLyogcmVwZWF0IGEgemVybyBsZW5ndGggMTEtMTM4IHRpbWVzICAoNyBiaXRzIG9mIHJlcGVhdCBjb3VudCkgKi8KCi8qIGVzbGludC1kaXNhYmxlIGNvbW1hLXNwYWNpbmcsYXJyYXktYnJhY2tldC1zcGFjaW5nICovCnZhciBleHRyYV9sYml0cyA9ICAgLyogZXh0cmEgYml0cyBmb3IgZWFjaCBsZW5ndGggY29kZSAqLwogIFswLDAsMCwwLDAsMCwwLDAsMSwxLDEsMSwyLDIsMiwyLDMsMywzLDMsNCw0LDQsNCw1LDUsNSw1LDBdOwoKdmFyIGV4dHJhX2RiaXRzID0gICAvKiBleHRyYSBiaXRzIGZvciBlYWNoIGRpc3RhbmNlIGNvZGUgKi8KICBbMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNiw3LDcsOCw4LDksOSwxMCwxMCwxMSwxMSwxMiwxMiwxMywxM107Cgp2YXIgZXh0cmFfYmxiaXRzID0gIC8qIGV4dHJhIGJpdHMgZm9yIGVhY2ggYml0IGxlbmd0aCBjb2RlICovCiAgWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwzLDddOwoKdmFyIGJsX29yZGVyID0KICBbMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV07Ci8qIGVzbGludC1lbmFibGUgY29tbWEtc3BhY2luZyxhcnJheS1icmFja2V0LXNwYWNpbmcgKi8KCi8qIFRoZSBsZW5ndGhzIG9mIHRoZSBiaXQgbGVuZ3RoIGNvZGVzIGFyZSBzZW50IGluIG9yZGVyIG9mIGRlY3JlYXNpbmcKICogcHJvYmFiaWxpdHksIHRvIGF2b2lkIHRyYW5zbWl0dGluZyB0aGUgbGVuZ3RocyBmb3IgdW51c2VkIGJpdCBsZW5ndGggY29kZXMuCiAqLwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIExvY2FsIGRhdGEuIFRoZXNlIGFyZSBpbml0aWFsaXplZCBvbmx5IG9uY2UuCiAqLwoKLy8gV2UgcHJlLWZpbGwgYXJyYXlzIHdpdGggMCB0byBhdm9pZCB1bmluaXRpYWxpemVkIGdhcHMKCnZhciBESVNUX0NPREVfTEVOID0gNTEyOyAvKiBzZWUgZGVmaW5pdGlvbiBvZiBhcnJheSBkaXN0X2NvZGUgYmVsb3cgKi8KCi8vICEhISEgVXNlIGZsYXQgYXJyYXkgaW5zdGVhZCBvZiBzdHJ1Y3R1cmUsIEZyZXEgPSBpKjIsIExlbiA9IGkqMisxCnZhciBzdGF0aWNfbHRyZWUgID0gbmV3IEFycmF5KChMX0NPREVTICsgMikgKiAyKTsKemVybyhzdGF0aWNfbHRyZWUpOwovKiBUaGUgc3RhdGljIGxpdGVyYWwgdHJlZS4gU2luY2UgdGhlIGJpdCBsZW5ndGhzIGFyZSBpbXBvc2VkLCB0aGVyZSBpcyBubwogKiBuZWVkIGZvciB0aGUgTF9DT0RFUyBleHRyYSBjb2RlcyB1c2VkIGR1cmluZyBoZWFwIGNvbnN0cnVjdGlvbi4gSG93ZXZlcgogKiBUaGUgY29kZXMgMjg2IGFuZCAyODcgYXJlIG5lZWRlZCB0byBidWlsZCBhIGNhbm9uaWNhbCB0cmVlIChzZWUgX3RyX2luaXQKICogYmVsb3cpLgogKi8KCnZhciBzdGF0aWNfZHRyZWUgID0gbmV3IEFycmF5KERfQ09ERVMgKiAyKTsKemVybyhzdGF0aWNfZHRyZWUpOwovKiBUaGUgc3RhdGljIGRpc3RhbmNlIHRyZWUuIChBY3R1YWxseSBhIHRyaXZpYWwgdHJlZSBzaW5jZSBhbGwgY29kZXMgdXNlCiAqIDUgYml0cy4pCiAqLwoKdmFyIF9kaXN0X2NvZGUgICAgPSBuZXcgQXJyYXkoRElTVF9DT0RFX0xFTik7Cnplcm8oX2Rpc3RfY29kZSk7Ci8qIERpc3RhbmNlIGNvZGVzLiBUaGUgZmlyc3QgMjU2IHZhbHVlcyBjb3JyZXNwb25kIHRvIHRoZSBkaXN0YW5jZXMKICogMyAuLiAyNTgsIHRoZSBsYXN0IDI1NiB2YWx1ZXMgY29ycmVzcG9uZCB0byB0aGUgdG9wIDggYml0cyBvZgogKiB0aGUgMTUgYml0IGRpc3RhbmNlcy4KICovCgp2YXIgX2xlbmd0aF9jb2RlICA9IG5ldyBBcnJheShNQVhfTUFUQ0ggLSBNSU5fTUFUQ0ggKyAxKTsKemVybyhfbGVuZ3RoX2NvZGUpOwovKiBsZW5ndGggY29kZSBmb3IgZWFjaCBub3JtYWxpemVkIG1hdGNoIGxlbmd0aCAoMCA9PSBNSU5fTUFUQ0gpICovCgp2YXIgYmFzZV9sZW5ndGggICA9IG5ldyBBcnJheShMRU5HVEhfQ09ERVMpOwp6ZXJvKGJhc2VfbGVuZ3RoKTsKLyogRmlyc3Qgbm9ybWFsaXplZCBsZW5ndGggZm9yIGVhY2ggY29kZSAoMCA9IE1JTl9NQVRDSCkgKi8KCnZhciBiYXNlX2Rpc3QgICAgID0gbmV3IEFycmF5KERfQ09ERVMpOwp6ZXJvKGJhc2VfZGlzdCk7Ci8qIEZpcnN0IG5vcm1hbGl6ZWQgZGlzdGFuY2UgZm9yIGVhY2ggY29kZSAoMCA9IGRpc3RhbmNlIG9mIDEpICovCgoKZnVuY3Rpb24gU3RhdGljVHJlZURlc2Moc3RhdGljX3RyZWUsIGV4dHJhX2JpdHMsIGV4dHJhX2Jhc2UsIGVsZW1zLCBtYXhfbGVuZ3RoKSB7CgogIHRoaXMuc3RhdGljX3RyZWUgID0gc3RhdGljX3RyZWU7ICAvKiBzdGF0aWMgdHJlZSBvciBOVUxMICovCiAgdGhpcy5leHRyYV9iaXRzICAgPSBleHRyYV9iaXRzOyAgIC8qIGV4dHJhIGJpdHMgZm9yIGVhY2ggY29kZSBvciBOVUxMICovCiAgdGhpcy5leHRyYV9iYXNlICAgPSBleHRyYV9iYXNlOyAgIC8qIGJhc2UgaW5kZXggZm9yIGV4dHJhX2JpdHMgKi8KICB0aGlzLmVsZW1zICAgICAgICA9IGVsZW1zOyAgICAgICAgLyogbWF4IG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdHJlZSAqLwogIHRoaXMubWF4X2xlbmd0aCAgID0gbWF4X2xlbmd0aDsgICAvKiBtYXggYml0IGxlbmd0aCBmb3IgdGhlIGNvZGVzICovCgogIC8vIHNob3cgaWYgYHN0YXRpY190cmVlYCBoYXMgZGF0YSBvciBkdW1teSAtIG5lZWRlZCBmb3IgbW9ub21vcnBoaWMgb2JqZWN0cwogIHRoaXMuaGFzX3N0cmVlICAgID0gc3RhdGljX3RyZWUgJiYgc3RhdGljX3RyZWUubGVuZ3RoOwp9CgoKdmFyIHN0YXRpY19sX2Rlc2M7CnZhciBzdGF0aWNfZF9kZXNjOwp2YXIgc3RhdGljX2JsX2Rlc2M7CgoKZnVuY3Rpb24gVHJlZURlc2MoZHluX3RyZWUsIHN0YXRfZGVzYykgewogIHRoaXMuZHluX3RyZWUgPSBkeW5fdHJlZTsgICAgIC8qIHRoZSBkeW5hbWljIHRyZWUgKi8KICB0aGlzLm1heF9jb2RlID0gMDsgICAgICAgICAgICAvKiBsYXJnZXN0IGNvZGUgd2l0aCBub24gemVybyBmcmVxdWVuY3kgKi8KICB0aGlzLnN0YXRfZGVzYyA9IHN0YXRfZGVzYzsgICAvKiB0aGUgY29ycmVzcG9uZGluZyBzdGF0aWMgdHJlZSAqLwp9CgoKCmZ1bmN0aW9uIGRfY29kZShkaXN0KSB7CiAgcmV0dXJuIGRpc3QgPCAyNTYgPyBfZGlzdF9jb2RlW2Rpc3RdIDogX2Rpc3RfY29kZVsyNTYgKyAoZGlzdCA+Pj4gNyldOwp9CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIE91dHB1dCBhIHNob3J0IExTQiBmaXJzdCBvbiB0aGUgc3RyZWFtLgogKiBJTiBhc3NlcnRpb246IHRoZXJlIGlzIGVub3VnaCByb29tIGluIHBlbmRpbmdCdWYuCiAqLwpmdW5jdGlvbiBwdXRfc2hvcnQocywgdykgewovLyAgICBwdXRfYnl0ZShzLCAodWNoKSgodykgJiAweGZmKSk7Ci8vICAgIHB1dF9ieXRlKHMsICh1Y2gpKCh1c2gpKHcpID4+IDgpKTsKICBzLnBlbmRpbmdfYnVmW3MucGVuZGluZysrXSA9ICh3KSAmIDB4ZmY7CiAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSAodyA+Pj4gOCkgJiAweGZmOwp9CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIFNlbmQgYSB2YWx1ZSBvbiBhIGdpdmVuIG51bWJlciBvZiBiaXRzLgogKiBJTiBhc3NlcnRpb246IGxlbmd0aCA8PSAxNiBhbmQgdmFsdWUgZml0cyBpbiBsZW5ndGggYml0cy4KICovCmZ1bmN0aW9uIHNlbmRfYml0cyhzLCB2YWx1ZSwgbGVuZ3RoKSB7CiAgaWYgKHMuYmlfdmFsaWQgPiAoQnVmX3NpemUgLSBsZW5ndGgpKSB7CiAgICBzLmJpX2J1ZiB8PSAodmFsdWUgPDwgcy5iaV92YWxpZCkgJiAweGZmZmY7CiAgICBwdXRfc2hvcnQocywgcy5iaV9idWYpOwogICAgcy5iaV9idWYgPSB2YWx1ZSA+PiAoQnVmX3NpemUgLSBzLmJpX3ZhbGlkKTsKICAgIHMuYmlfdmFsaWQgKz0gbGVuZ3RoIC0gQnVmX3NpemU7CiAgfSBlbHNlIHsKICAgIHMuYmlfYnVmIHw9ICh2YWx1ZSA8PCBzLmJpX3ZhbGlkKSAmIDB4ZmZmZjsKICAgIHMuYmlfdmFsaWQgKz0gbGVuZ3RoOwogIH0KfQoKCmZ1bmN0aW9uIHNlbmRfY29kZShzLCBjLCB0cmVlKSB7CiAgc2VuZF9iaXRzKHMsIHRyZWVbYyAqIDJdLyouQ29kZSovLCB0cmVlW2MgKiAyICsgMV0vKi5MZW4qLyk7Cn0KCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogUmV2ZXJzZSB0aGUgZmlyc3QgbGVuIGJpdHMgb2YgYSBjb2RlLCB1c2luZyBzdHJhaWdodGZvcndhcmQgY29kZSAoYSBmYXN0ZXIKICogbWV0aG9kIHdvdWxkIHVzZSBhIHRhYmxlKQogKiBJTiBhc3NlcnRpb246IDEgPD0gbGVuIDw9IDE1CiAqLwpmdW5jdGlvbiBiaV9yZXZlcnNlKGNvZGUsIGxlbikgewogIHZhciByZXMgPSAwOwogIGRvIHsKICAgIHJlcyB8PSBjb2RlICYgMTsKICAgIGNvZGUgPj4+PSAxOwogICAgcmVzIDw8PSAxOwogIH0gd2hpbGUgKC0tbGVuID4gMCk7CiAgcmV0dXJuIHJlcyA+Pj4gMTsKfQoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBGbHVzaCB0aGUgYml0IGJ1ZmZlciwga2VlcGluZyBhdCBtb3N0IDcgYml0cyBpbiBpdC4KICovCmZ1bmN0aW9uIGJpX2ZsdXNoKHMpIHsKICBpZiAocy5iaV92YWxpZCA9PT0gMTYpIHsKICAgIHB1dF9zaG9ydChzLCBzLmJpX2J1Zik7CiAgICBzLmJpX2J1ZiA9IDA7CiAgICBzLmJpX3ZhbGlkID0gMDsKCiAgfSBlbHNlIGlmIChzLmJpX3ZhbGlkID49IDgpIHsKICAgIHMucGVuZGluZ19idWZbcy5wZW5kaW5nKytdID0gcy5iaV9idWYgJiAweGZmOwogICAgcy5iaV9idWYgPj49IDg7CiAgICBzLmJpX3ZhbGlkIC09IDg7CiAgfQp9CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIENvbXB1dGUgdGhlIG9wdGltYWwgYml0IGxlbmd0aHMgZm9yIGEgdHJlZSBhbmQgdXBkYXRlIHRoZSB0b3RhbCBiaXQgbGVuZ3RoCiAqIGZvciB0aGUgY3VycmVudCBibG9jay4KICogSU4gYXNzZXJ0aW9uOiB0aGUgZmllbGRzIGZyZXEgYW5kIGRhZCBhcmUgc2V0LCBoZWFwW2hlYXBfbWF4XSBhbmQKICogICAgYWJvdmUgYXJlIHRoZSB0cmVlIG5vZGVzIHNvcnRlZCBieSBpbmNyZWFzaW5nIGZyZXF1ZW5jeS4KICogT1VUIGFzc2VydGlvbnM6IHRoZSBmaWVsZCBsZW4gaXMgc2V0IHRvIHRoZSBvcHRpbWFsIGJpdCBsZW5ndGgsIHRoZQogKiAgICAgYXJyYXkgYmxfY291bnQgY29udGFpbnMgdGhlIGZyZXF1ZW5jaWVzIGZvciBlYWNoIGJpdCBsZW5ndGguCiAqICAgICBUaGUgbGVuZ3RoIG9wdF9sZW4gaXMgdXBkYXRlZDsgc3RhdGljX2xlbiBpcyBhbHNvIHVwZGF0ZWQgaWYgc3RyZWUgaXMKICogICAgIG5vdCBudWxsLgogKi8KZnVuY3Rpb24gZ2VuX2JpdGxlbihzLCBkZXNjKQovLyAgICBkZWZsYXRlX3N0YXRlICpzOwovLyAgICB0cmVlX2Rlc2MgKmRlc2M7ICAgIC8qIHRoZSB0cmVlIGRlc2NyaXB0b3IgKi8KewogIHZhciB0cmVlICAgICAgICAgICAgPSBkZXNjLmR5bl90cmVlOwogIHZhciBtYXhfY29kZSAgICAgICAgPSBkZXNjLm1heF9jb2RlOwogIHZhciBzdHJlZSAgICAgICAgICAgPSBkZXNjLnN0YXRfZGVzYy5zdGF0aWNfdHJlZTsKICB2YXIgaGFzX3N0cmVlICAgICAgID0gZGVzYy5zdGF0X2Rlc2MuaGFzX3N0cmVlOwogIHZhciBleHRyYSAgICAgICAgICAgPSBkZXNjLnN0YXRfZGVzYy5leHRyYV9iaXRzOwogIHZhciBiYXNlICAgICAgICAgICAgPSBkZXNjLnN0YXRfZGVzYy5leHRyYV9iYXNlOwogIHZhciBtYXhfbGVuZ3RoICAgICAgPSBkZXNjLnN0YXRfZGVzYy5tYXhfbGVuZ3RoOwogIHZhciBoOyAgICAgICAgICAgICAgLyogaGVhcCBpbmRleCAqLwogIHZhciBuLCBtOyAgICAgICAgICAgLyogaXRlcmF0ZSBvdmVyIHRoZSB0cmVlIGVsZW1lbnRzICovCiAgdmFyIGJpdHM7ICAgICAgICAgICAvKiBiaXQgbGVuZ3RoICovCiAgdmFyIHhiaXRzOyAgICAgICAgICAvKiBleHRyYSBiaXRzICovCiAgdmFyIGY7ICAgICAgICAgICAgICAvKiBmcmVxdWVuY3kgKi8KICB2YXIgb3ZlcmZsb3cgPSAwOyAgIC8qIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIGJpdCBsZW5ndGggdG9vIGxhcmdlICovCgogIGZvciAoYml0cyA9IDA7IGJpdHMgPD0gTUFYX0JJVFM7IGJpdHMrKykgewogICAgcy5ibF9jb3VudFtiaXRzXSA9IDA7CiAgfQoKICAvKiBJbiBhIGZpcnN0IHBhc3MsIGNvbXB1dGUgdGhlIG9wdGltYWwgYml0IGxlbmd0aHMgKHdoaWNoIG1heQogICAqIG92ZXJmbG93IGluIHRoZSBjYXNlIG9mIHRoZSBiaXQgbGVuZ3RoIHRyZWUpLgogICAqLwogIHRyZWVbcy5oZWFwW3MuaGVhcF9tYXhdICogMiArIDFdLyouTGVuKi8gPSAwOyAvKiByb290IG9mIHRoZSBoZWFwICovCgogIGZvciAoaCA9IHMuaGVhcF9tYXggKyAxOyBoIDwgSEVBUF9TSVpFOyBoKyspIHsKICAgIG4gPSBzLmhlYXBbaF07CiAgICBiaXRzID0gdHJlZVt0cmVlW24gKiAyICsgMV0vKi5EYWQqLyAqIDIgKyAxXS8qLkxlbiovICsgMTsKICAgIGlmIChiaXRzID4gbWF4X2xlbmd0aCkgewogICAgICBiaXRzID0gbWF4X2xlbmd0aDsKICAgICAgb3ZlcmZsb3crKzsKICAgIH0KICAgIHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gYml0czsKICAgIC8qIFdlIG92ZXJ3cml0ZSB0cmVlW25dLkRhZCB3aGljaCBpcyBubyBsb25nZXIgbmVlZGVkICovCgogICAgaWYgKG4gPiBtYXhfY29kZSkgeyBjb250aW51ZTsgfSAvKiBub3QgYSBsZWFmIG5vZGUgKi8KCiAgICBzLmJsX2NvdW50W2JpdHNdKys7CiAgICB4Yml0cyA9IDA7CiAgICBpZiAobiA+PSBiYXNlKSB7CiAgICAgIHhiaXRzID0gZXh0cmFbbiAtIGJhc2VdOwogICAgfQogICAgZiA9IHRyZWVbbiAqIDJdLyouRnJlcSovOwogICAgcy5vcHRfbGVuICs9IGYgKiAoYml0cyArIHhiaXRzKTsKICAgIGlmIChoYXNfc3RyZWUpIHsKICAgICAgcy5zdGF0aWNfbGVuICs9IGYgKiAoc3RyZWVbbiAqIDIgKyAxXS8qLkxlbiovICsgeGJpdHMpOwogICAgfQogIH0KICBpZiAob3ZlcmZsb3cgPT09IDApIHsgcmV0dXJuOyB9CgogIC8vIFRyYWNlKChzdGRlcnIsIlxuYml0IGxlbmd0aCBvdmVyZmxvd1xuIikpOwogIC8qIFRoaXMgaGFwcGVucyBmb3IgZXhhbXBsZSBvbiBvYmoyIGFuZCBwaWMgb2YgdGhlIENhbGdhcnkgY29ycHVzICovCgogIC8qIEZpbmQgdGhlIGZpcnN0IGJpdCBsZW5ndGggd2hpY2ggY291bGQgaW5jcmVhc2U6ICovCiAgZG8gewogICAgYml0cyA9IG1heF9sZW5ndGggLSAxOwogICAgd2hpbGUgKHMuYmxfY291bnRbYml0c10gPT09IDApIHsgYml0cy0tOyB9CiAgICBzLmJsX2NvdW50W2JpdHNdLS07ICAgICAgLyogbW92ZSBvbmUgbGVhZiBkb3duIHRoZSB0cmVlICovCiAgICBzLmJsX2NvdW50W2JpdHMgKyAxXSArPSAyOyAvKiBtb3ZlIG9uZSBvdmVyZmxvdyBpdGVtIGFzIGl0cyBicm90aGVyICovCiAgICBzLmJsX2NvdW50W21heF9sZW5ndGhdLS07CiAgICAvKiBUaGUgYnJvdGhlciBvZiB0aGUgb3ZlcmZsb3cgaXRlbSBhbHNvIG1vdmVzIG9uZSBzdGVwIHVwLAogICAgICogYnV0IHRoaXMgZG9lcyBub3QgYWZmZWN0IGJsX2NvdW50W21heF9sZW5ndGhdCiAgICAgKi8KICAgIG92ZXJmbG93IC09IDI7CiAgfSB3aGlsZSAob3ZlcmZsb3cgPiAwKTsKCiAgLyogTm93IHJlY29tcHV0ZSBhbGwgYml0IGxlbmd0aHMsIHNjYW5uaW5nIGluIGluY3JlYXNpbmcgZnJlcXVlbmN5LgogICAqIGggaXMgc3RpbGwgZXF1YWwgdG8gSEVBUF9TSVpFLiAoSXQgaXMgc2ltcGxlciB0byByZWNvbnN0cnVjdCBhbGwKICAgKiBsZW5ndGhzIGluc3RlYWQgb2YgZml4aW5nIG9ubHkgdGhlIHdyb25nIG9uZXMuIFRoaXMgaWRlYSBpcyB0YWtlbgogICAqIGZyb20gJ2FyJyB3cml0dGVuIGJ5IEhhcnVoaWtvIE9rdW11cmEuKQogICAqLwogIGZvciAoYml0cyA9IG1heF9sZW5ndGg7IGJpdHMgIT09IDA7IGJpdHMtLSkgewogICAgbiA9IHMuYmxfY291bnRbYml0c107CiAgICB3aGlsZSAobiAhPT0gMCkgewogICAgICBtID0gcy5oZWFwWy0taF07CiAgICAgIGlmIChtID4gbWF4X2NvZGUpIHsgY29udGludWU7IH0KICAgICAgaWYgKHRyZWVbbSAqIDIgKyAxXS8qLkxlbiovICE9PSBiaXRzKSB7CiAgICAgICAgLy8gVHJhY2UoKHN0ZGVyciwiY29kZSAlZCBiaXRzICVkLT4lZFxuIiwgbSwgdHJlZVttXS5MZW4sIGJpdHMpKTsKICAgICAgICBzLm9wdF9sZW4gKz0gKGJpdHMgLSB0cmVlW20gKiAyICsgMV0vKi5MZW4qLykgKiB0cmVlW20gKiAyXS8qLkZyZXEqLzsKICAgICAgICB0cmVlW20gKiAyICsgMV0vKi5MZW4qLyA9IGJpdHM7CiAgICAgIH0KICAgICAgbi0tOwogICAgfQogIH0KfQoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBHZW5lcmF0ZSB0aGUgY29kZXMgZm9yIGEgZ2l2ZW4gdHJlZSBhbmQgYml0IGNvdW50cyAod2hpY2ggbmVlZCBub3QgYmUKICogb3B0aW1hbCkuCiAqIElOIGFzc2VydGlvbjogdGhlIGFycmF5IGJsX2NvdW50IGNvbnRhaW5zIHRoZSBiaXQgbGVuZ3RoIHN0YXRpc3RpY3MgZm9yCiAqIHRoZSBnaXZlbiB0cmVlIGFuZCB0aGUgZmllbGQgbGVuIGlzIHNldCBmb3IgYWxsIHRyZWUgZWxlbWVudHMuCiAqIE9VVCBhc3NlcnRpb246IHRoZSBmaWVsZCBjb2RlIGlzIHNldCBmb3IgYWxsIHRyZWUgZWxlbWVudHMgb2Ygbm9uCiAqICAgICB6ZXJvIGNvZGUgbGVuZ3RoLgogKi8KZnVuY3Rpb24gZ2VuX2NvZGVzKHRyZWUsIG1heF9jb2RlLCBibF9jb3VudCkKLy8gICAgY3RfZGF0YSAqdHJlZTsgICAgICAgICAgICAgLyogdGhlIHRyZWUgdG8gZGVjb3JhdGUgKi8KLy8gICAgaW50IG1heF9jb2RlOyAgICAgICAgICAgICAgLyogbGFyZ2VzdCBjb2RlIHdpdGggbm9uIHplcm8gZnJlcXVlbmN5ICovCi8vICAgIHVzaGYgKmJsX2NvdW50OyAgICAgICAgICAgIC8qIG51bWJlciBvZiBjb2RlcyBhdCBlYWNoIGJpdCBsZW5ndGggKi8KewogIHZhciBuZXh0X2NvZGUgPSBuZXcgQXJyYXkoTUFYX0JJVFMgKyAxKTsgLyogbmV4dCBjb2RlIHZhbHVlIGZvciBlYWNoIGJpdCBsZW5ndGggKi8KICB2YXIgY29kZSA9IDA7ICAgICAgICAgICAgICAvKiBydW5uaW5nIGNvZGUgdmFsdWUgKi8KICB2YXIgYml0czsgICAgICAgICAgICAgICAgICAvKiBiaXQgaW5kZXggKi8KICB2YXIgbjsgICAgICAgICAgICAgICAgICAgICAvKiBjb2RlIGluZGV4ICovCgogIC8qIFRoZSBkaXN0cmlidXRpb24gY291bnRzIGFyZSBmaXJzdCB1c2VkIHRvIGdlbmVyYXRlIHRoZSBjb2RlIHZhbHVlcwogICAqIHdpdGhvdXQgYml0IHJldmVyc2FsLgogICAqLwogIGZvciAoYml0cyA9IDE7IGJpdHMgPD0gTUFYX0JJVFM7IGJpdHMrKykgewogICAgbmV4dF9jb2RlW2JpdHNdID0gY29kZSA9IChjb2RlICsgYmxfY291bnRbYml0cyAtIDFdKSA8PCAxOwogIH0KICAvKiBDaGVjayB0aGF0IHRoZSBiaXQgY291bnRzIGluIGJsX2NvdW50IGFyZSBjb25zaXN0ZW50LiBUaGUgbGFzdCBjb2RlCiAgICogbXVzdCBiZSBhbGwgb25lcy4KICAgKi8KICAvL0Fzc2VydCAoY29kZSArIGJsX2NvdW50W01BWF9CSVRTXS0xID09ICgxPDxNQVhfQklUUyktMSwKICAvLyAgICAgICAgImluY29uc2lzdGVudCBiaXQgY291bnRzIik7CiAgLy9UcmFjZXYoKHN0ZGVyciwiXG5nZW5fY29kZXM6IG1heF9jb2RlICVkICIsIG1heF9jb2RlKSk7CgogIGZvciAobiA9IDA7ICBuIDw9IG1heF9jb2RlOyBuKyspIHsKICAgIHZhciBsZW4gPSB0cmVlW24gKiAyICsgMV0vKi5MZW4qLzsKICAgIGlmIChsZW4gPT09IDApIHsgY29udGludWU7IH0KICAgIC8qIE5vdyByZXZlcnNlIHRoZSBiaXRzICovCiAgICB0cmVlW24gKiAyXS8qLkNvZGUqLyA9IGJpX3JldmVyc2UobmV4dF9jb2RlW2xlbl0rKywgbGVuKTsKCiAgICAvL1RyYWNlY3YodHJlZSAhPSBzdGF0aWNfbHRyZWUsIChzdGRlcnIsIlxubiAlM2QgJWMgbCAlMmQgYyAlNHggKCV4KSAiLAogICAgLy8gICAgIG4sIChpc2dyYXBoKG4pID8gbiA6ICcgJyksIGxlbiwgdHJlZVtuXS5Db2RlLCBuZXh0X2NvZGVbbGVuXS0xKSk7CiAgfQp9CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIEluaXRpYWxpemUgdGhlIHZhcmlvdXMgJ2NvbnN0YW50JyB0YWJsZXMuCiAqLwpmdW5jdGlvbiB0cl9zdGF0aWNfaW5pdCgpIHsKICB2YXIgbjsgICAgICAgIC8qIGl0ZXJhdGVzIG92ZXIgdHJlZSBlbGVtZW50cyAqLwogIHZhciBiaXRzOyAgICAgLyogYml0IGNvdW50ZXIgKi8KICB2YXIgbGVuZ3RoOyAgIC8qIGxlbmd0aCB2YWx1ZSAqLwogIHZhciBjb2RlOyAgICAgLyogY29kZSB2YWx1ZSAqLwogIHZhciBkaXN0OyAgICAgLyogZGlzdGFuY2UgaW5kZXggKi8KICB2YXIgYmxfY291bnQgPSBuZXcgQXJyYXkoTUFYX0JJVFMgKyAxKTsKICAvKiBudW1iZXIgb2YgY29kZXMgYXQgZWFjaCBiaXQgbGVuZ3RoIGZvciBhbiBvcHRpbWFsIHRyZWUgKi8KCiAgLy8gZG8gY2hlY2sgaW4gX3RyX2luaXQoKQogIC8vaWYgKHN0YXRpY19pbml0X2RvbmUpIHJldHVybjsKCiAgLyogRm9yIHNvbWUgZW1iZWRkZWQgdGFyZ2V0cywgZ2xvYmFsIHZhcmlhYmxlcyBhcmUgbm90IGluaXRpYWxpemVkOiAqLwovKiNpZmRlZiBOT19JTklUX0dMT0JBTF9QT0lOVEVSUwogIHN0YXRpY19sX2Rlc2Muc3RhdGljX3RyZWUgPSBzdGF0aWNfbHRyZWU7CiAgc3RhdGljX2xfZGVzYy5leHRyYV9iaXRzID0gZXh0cmFfbGJpdHM7CiAgc3RhdGljX2RfZGVzYy5zdGF0aWNfdHJlZSA9IHN0YXRpY19kdHJlZTsKICBzdGF0aWNfZF9kZXNjLmV4dHJhX2JpdHMgPSBleHRyYV9kYml0czsKICBzdGF0aWNfYmxfZGVzYy5leHRyYV9iaXRzID0gZXh0cmFfYmxiaXRzOwojZW5kaWYqLwoKICAvKiBJbml0aWFsaXplIHRoZSBtYXBwaW5nIGxlbmd0aCAoMC4uMjU1KSAtPiBsZW5ndGggY29kZSAoMC4uMjgpICovCiAgbGVuZ3RoID0gMDsKICBmb3IgKGNvZGUgPSAwOyBjb2RlIDwgTEVOR1RIX0NPREVTIC0gMTsgY29kZSsrKSB7CiAgICBiYXNlX2xlbmd0aFtjb2RlXSA9IGxlbmd0aDsKICAgIGZvciAobiA9IDA7IG4gPCAoMSA8PCBleHRyYV9sYml0c1tjb2RlXSk7IG4rKykgewogICAgICBfbGVuZ3RoX2NvZGVbbGVuZ3RoKytdID0gY29kZTsKICAgIH0KICB9CiAgLy9Bc3NlcnQgKGxlbmd0aCA9PSAyNTYsICJ0cl9zdGF0aWNfaW5pdDogbGVuZ3RoICE9IDI1NiIpOwogIC8qIE5vdGUgdGhhdCB0aGUgbGVuZ3RoIDI1NSAobWF0Y2ggbGVuZ3RoIDI1OCkgY2FuIGJlIHJlcHJlc2VudGVkCiAgICogaW4gdHdvIGRpZmZlcmVudCB3YXlzOiBjb2RlIDI4NCArIDUgYml0cyBvciBjb2RlIDI4NSwgc28gd2UKICAgKiBvdmVyd3JpdGUgbGVuZ3RoX2NvZGVbMjU1XSB0byB1c2UgdGhlIGJlc3QgZW5jb2Rpbmc6CiAgICovCiAgX2xlbmd0aF9jb2RlW2xlbmd0aCAtIDFdID0gY29kZTsKCiAgLyogSW5pdGlhbGl6ZSB0aGUgbWFwcGluZyBkaXN0ICgwLi4zMkspIC0+IGRpc3QgY29kZSAoMC4uMjkpICovCiAgZGlzdCA9IDA7CiAgZm9yIChjb2RlID0gMDsgY29kZSA8IDE2OyBjb2RlKyspIHsKICAgIGJhc2VfZGlzdFtjb2RlXSA9IGRpc3Q7CiAgICBmb3IgKG4gPSAwOyBuIDwgKDEgPDwgZXh0cmFfZGJpdHNbY29kZV0pOyBuKyspIHsKICAgICAgX2Rpc3RfY29kZVtkaXN0KytdID0gY29kZTsKICAgIH0KICB9CiAgLy9Bc3NlcnQgKGRpc3QgPT0gMjU2LCAidHJfc3RhdGljX2luaXQ6IGRpc3QgIT0gMjU2Iik7CiAgZGlzdCA+Pj0gNzsgLyogZnJvbSBub3cgb24sIGFsbCBkaXN0YW5jZXMgYXJlIGRpdmlkZWQgYnkgMTI4ICovCiAgZm9yICg7IGNvZGUgPCBEX0NPREVTOyBjb2RlKyspIHsKICAgIGJhc2VfZGlzdFtjb2RlXSA9IGRpc3QgPDwgNzsKICAgIGZvciAobiA9IDA7IG4gPCAoMSA8PCAoZXh0cmFfZGJpdHNbY29kZV0gLSA3KSk7IG4rKykgewogICAgICBfZGlzdF9jb2RlWzI1NiArIGRpc3QrK10gPSBjb2RlOwogICAgfQogIH0KICAvL0Fzc2VydCAoZGlzdCA9PSAyNTYsICJ0cl9zdGF0aWNfaW5pdDogMjU2K2Rpc3QgIT0gNTEyIik7CgogIC8qIENvbnN0cnVjdCB0aGUgY29kZXMgb2YgdGhlIHN0YXRpYyBsaXRlcmFsIHRyZWUgKi8KICBmb3IgKGJpdHMgPSAwOyBiaXRzIDw9IE1BWF9CSVRTOyBiaXRzKyspIHsKICAgIGJsX2NvdW50W2JpdHNdID0gMDsKICB9CgogIG4gPSAwOwogIHdoaWxlIChuIDw9IDE0MykgewogICAgc3RhdGljX2x0cmVlW24gKiAyICsgMV0vKi5MZW4qLyA9IDg7CiAgICBuKys7CiAgICBibF9jb3VudFs4XSsrOwogIH0KICB3aGlsZSAobiA8PSAyNTUpIHsKICAgIHN0YXRpY19sdHJlZVtuICogMiArIDFdLyouTGVuKi8gPSA5OwogICAgbisrOwogICAgYmxfY291bnRbOV0rKzsKICB9CiAgd2hpbGUgKG4gPD0gMjc5KSB7CiAgICBzdGF0aWNfbHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gNzsKICAgIG4rKzsKICAgIGJsX2NvdW50WzddKys7CiAgfQogIHdoaWxlIChuIDw9IDI4NykgewogICAgc3RhdGljX2x0cmVlW24gKiAyICsgMV0vKi5MZW4qLyA9IDg7CiAgICBuKys7CiAgICBibF9jb3VudFs4XSsrOwogIH0KICAvKiBDb2RlcyAyODYgYW5kIDI4NyBkbyBub3QgZXhpc3QsIGJ1dCB3ZSBtdXN0IGluY2x1ZGUgdGhlbSBpbiB0aGUKICAgKiB0cmVlIGNvbnN0cnVjdGlvbiB0byBnZXQgYSBjYW5vbmljYWwgSHVmZm1hbiB0cmVlIChsb25nZXN0IGNvZGUKICAgKiBhbGwgb25lcykKICAgKi8KICBnZW5fY29kZXMoc3RhdGljX2x0cmVlLCBMX0NPREVTICsgMSwgYmxfY291bnQpOwoKICAvKiBUaGUgc3RhdGljIGRpc3RhbmNlIHRyZWUgaXMgdHJpdmlhbDogKi8KICBmb3IgKG4gPSAwOyBuIDwgRF9DT0RFUzsgbisrKSB7CiAgICBzdGF0aWNfZHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gNTsKICAgIHN0YXRpY19kdHJlZVtuICogMl0vKi5Db2RlKi8gPSBiaV9yZXZlcnNlKG4sIDUpOwogIH0KCiAgLy8gTm93IGRhdGEgcmVhZHkgYW5kIHdlIGNhbiBpbml0IHN0YXRpYyB0cmVlcwogIHN0YXRpY19sX2Rlc2MgPSBuZXcgU3RhdGljVHJlZURlc2Moc3RhdGljX2x0cmVlLCBleHRyYV9sYml0cywgTElURVJBTFMgKyAxLCBMX0NPREVTLCBNQVhfQklUUyk7CiAgc3RhdGljX2RfZGVzYyA9IG5ldyBTdGF0aWNUcmVlRGVzYyhzdGF0aWNfZHRyZWUsIGV4dHJhX2RiaXRzLCAwLCAgICAgICAgICBEX0NPREVTLCBNQVhfQklUUyk7CiAgc3RhdGljX2JsX2Rlc2MgPSBuZXcgU3RhdGljVHJlZURlc2MobmV3IEFycmF5KDApLCBleHRyYV9ibGJpdHMsIDAsICAgICAgICAgQkxfQ09ERVMsIE1BWF9CTF9CSVRTKTsKCiAgLy9zdGF0aWNfaW5pdF9kb25lID0gdHJ1ZTsKfQoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBJbml0aWFsaXplIGEgbmV3IGJsb2NrLgogKi8KZnVuY3Rpb24gaW5pdF9ibG9jayhzKSB7CiAgdmFyIG47IC8qIGl0ZXJhdGVzIG92ZXIgdHJlZSBlbGVtZW50cyAqLwoKICAvKiBJbml0aWFsaXplIHRoZSB0cmVlcy4gKi8KICBmb3IgKG4gPSAwOyBuIDwgTF9DT0RFUzsgIG4rKykgeyBzLmR5bl9sdHJlZVtuICogMl0vKi5GcmVxKi8gPSAwOyB9CiAgZm9yIChuID0gMDsgbiA8IERfQ09ERVM7ICBuKyspIHsgcy5keW5fZHRyZWVbbiAqIDJdLyouRnJlcSovID0gMDsgfQogIGZvciAobiA9IDA7IG4gPCBCTF9DT0RFUzsgbisrKSB7IHMuYmxfdHJlZVtuICogMl0vKi5GcmVxKi8gPSAwOyB9CgogIHMuZHluX2x0cmVlW0VORF9CTE9DSyAqIDJdLyouRnJlcSovID0gMTsKICBzLm9wdF9sZW4gPSBzLnN0YXRpY19sZW4gPSAwOwogIHMubGFzdF9saXQgPSBzLm1hdGNoZXMgPSAwOwp9CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIEZsdXNoIHRoZSBiaXQgYnVmZmVyIGFuZCBhbGlnbiB0aGUgb3V0cHV0IG9uIGEgYnl0ZSBib3VuZGFyeQogKi8KZnVuY3Rpb24gYmlfd2luZHVwKHMpCnsKICBpZiAocy5iaV92YWxpZCA+IDgpIHsKICAgIHB1dF9zaG9ydChzLCBzLmJpX2J1Zik7CiAgfSBlbHNlIGlmIChzLmJpX3ZhbGlkID4gMCkgewogICAgLy9wdXRfYnl0ZShzLCAoQnl0ZSlzLT5iaV9idWYpOwogICAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSBzLmJpX2J1ZjsKICB9CiAgcy5iaV9idWYgPSAwOwogIHMuYmlfdmFsaWQgPSAwOwp9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogQ29weSBhIHN0b3JlZCBibG9jaywgc3RvcmluZyBmaXJzdCB0aGUgbGVuZ3RoIGFuZCBpdHMKICogb25lJ3MgY29tcGxlbWVudCBpZiByZXF1ZXN0ZWQuCiAqLwpmdW5jdGlvbiBjb3B5X2Jsb2NrKHMsIGJ1ZiwgbGVuLCBoZWFkZXIpCi8vRGVmbGF0ZVN0YXRlICpzOwovL2NoYXJmICAgICpidWY7ICAgIC8qIHRoZSBpbnB1dCBkYXRhICovCi8vdW5zaWduZWQgbGVuOyAgICAgLyogaXRzIGxlbmd0aCAqLwovL2ludCAgICAgIGhlYWRlcjsgIC8qIHRydWUgaWYgYmxvY2sgaGVhZGVyIG11c3QgYmUgd3JpdHRlbiAqLwp7CiAgYmlfd2luZHVwKHMpOyAgICAgICAgLyogYWxpZ24gb24gYnl0ZSBib3VuZGFyeSAqLwoKICBpZiAoaGVhZGVyKSB7CiAgICBwdXRfc2hvcnQocywgbGVuKTsKICAgIHB1dF9zaG9ydChzLCB+bGVuKTsKICB9Ci8vICB3aGlsZSAobGVuLS0pIHsKLy8gICAgcHV0X2J5dGUocywgKmJ1ZisrKTsKLy8gIH0KICB1dGlscy5hcnJheVNldChzLnBlbmRpbmdfYnVmLCBzLndpbmRvdywgYnVmLCBsZW4sIHMucGVuZGluZyk7CiAgcy5wZW5kaW5nICs9IGxlbjsKfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIENvbXBhcmVzIHRvIHN1YnRyZWVzLCB1c2luZyB0aGUgdHJlZSBkZXB0aCBhcyB0aWUgYnJlYWtlciB3aGVuCiAqIHRoZSBzdWJ0cmVlcyBoYXZlIGVxdWFsIGZyZXF1ZW5jeS4gVGhpcyBtaW5pbWl6ZXMgdGhlIHdvcnN0IGNhc2UgbGVuZ3RoLgogKi8KZnVuY3Rpb24gc21hbGxlcih0cmVlLCBuLCBtLCBkZXB0aCkgewogIHZhciBfbjIgPSBuICogMjsKICB2YXIgX20yID0gbSAqIDI7CiAgcmV0dXJuICh0cmVlW19uMl0vKi5GcmVxKi8gPCB0cmVlW19tMl0vKi5GcmVxKi8gfHwKICAgICAgICAgKHRyZWVbX24yXS8qLkZyZXEqLyA9PT0gdHJlZVtfbTJdLyouRnJlcSovICYmIGRlcHRoW25dIDw9IGRlcHRoW21dKSk7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBSZXN0b3JlIHRoZSBoZWFwIHByb3BlcnR5IGJ5IG1vdmluZyBkb3duIHRoZSB0cmVlIHN0YXJ0aW5nIGF0IG5vZGUgaywKICogZXhjaGFuZ2luZyBhIG5vZGUgd2l0aCB0aGUgc21hbGxlc3Qgb2YgaXRzIHR3byBzb25zIGlmIG5lY2Vzc2FyeSwgc3RvcHBpbmcKICogd2hlbiB0aGUgaGVhcCBwcm9wZXJ0eSBpcyByZS1lc3RhYmxpc2hlZCAoZWFjaCBmYXRoZXIgc21hbGxlciB0aGFuIGl0cwogKiB0d28gc29ucykuCiAqLwpmdW5jdGlvbiBwcWRvd25oZWFwKHMsIHRyZWUsIGspCi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7Ci8vICAgIGN0X2RhdGEgKnRyZWU7ICAvKiB0aGUgdHJlZSB0byByZXN0b3JlICovCi8vICAgIGludCBrOyAgICAgICAgICAgICAgIC8qIG5vZGUgdG8gbW92ZSBkb3duICovCnsKICB2YXIgdiA9IHMuaGVhcFtrXTsKICB2YXIgaiA9IGsgPDwgMTsgIC8qIGxlZnQgc29uIG9mIGsgKi8KICB3aGlsZSAoaiA8PSBzLmhlYXBfbGVuKSB7CiAgICAvKiBTZXQgaiB0byB0aGUgc21hbGxlc3Qgb2YgdGhlIHR3byBzb25zOiAqLwogICAgaWYgKGogPCBzLmhlYXBfbGVuICYmCiAgICAgIHNtYWxsZXIodHJlZSwgcy5oZWFwW2ogKyAxXSwgcy5oZWFwW2pdLCBzLmRlcHRoKSkgewogICAgICBqKys7CiAgICB9CiAgICAvKiBFeGl0IGlmIHYgaXMgc21hbGxlciB0aGFuIGJvdGggc29ucyAqLwogICAgaWYgKHNtYWxsZXIodHJlZSwgdiwgcy5oZWFwW2pdLCBzLmRlcHRoKSkgeyBicmVhazsgfQoKICAgIC8qIEV4Y2hhbmdlIHYgd2l0aCB0aGUgc21hbGxlc3Qgc29uICovCiAgICBzLmhlYXBba10gPSBzLmhlYXBbal07CiAgICBrID0gajsKCiAgICAvKiBBbmQgY29udGludWUgZG93biB0aGUgdHJlZSwgc2V0dGluZyBqIHRvIHRoZSBsZWZ0IHNvbiBvZiBrICovCiAgICBqIDw8PSAxOwogIH0KICBzLmhlYXBba10gPSB2Owp9CgoKLy8gaW5saW5lZCBtYW51YWxseQovLyB2YXIgU01BTExFU1QgPSAxOwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIFNlbmQgdGhlIGJsb2NrIGRhdGEgY29tcHJlc3NlZCB1c2luZyB0aGUgZ2l2ZW4gSHVmZm1hbiB0cmVlcwogKi8KZnVuY3Rpb24gY29tcHJlc3NfYmxvY2socywgbHRyZWUsIGR0cmVlKQovLyAgICBkZWZsYXRlX3N0YXRlICpzOwovLyAgICBjb25zdCBjdF9kYXRhICpsdHJlZTsgLyogbGl0ZXJhbCB0cmVlICovCi8vICAgIGNvbnN0IGN0X2RhdGEgKmR0cmVlOyAvKiBkaXN0YW5jZSB0cmVlICovCnsKICB2YXIgZGlzdDsgICAgICAgICAgIC8qIGRpc3RhbmNlIG9mIG1hdGNoZWQgc3RyaW5nICovCiAgdmFyIGxjOyAgICAgICAgICAgICAvKiBtYXRjaCBsZW5ndGggb3IgdW5tYXRjaGVkIGNoYXIgKGlmIGRpc3QgPT0gMCkgKi8KICB2YXIgbHggPSAwOyAgICAgICAgIC8qIHJ1bm5pbmcgaW5kZXggaW4gbF9idWYgKi8KICB2YXIgY29kZTsgICAgICAgICAgIC8qIHRoZSBjb2RlIHRvIHNlbmQgKi8KICB2YXIgZXh0cmE7ICAgICAgICAgIC8qIG51bWJlciBvZiBleHRyYSBiaXRzIHRvIHNlbmQgKi8KCiAgaWYgKHMubGFzdF9saXQgIT09IDApIHsKICAgIGRvIHsKICAgICAgZGlzdCA9IChzLnBlbmRpbmdfYnVmW3MuZF9idWYgKyBseCAqIDJdIDw8IDgpIHwgKHMucGVuZGluZ19idWZbcy5kX2J1ZiArIGx4ICogMiArIDFdKTsKICAgICAgbGMgPSBzLnBlbmRpbmdfYnVmW3MubF9idWYgKyBseF07CiAgICAgIGx4Kys7CgogICAgICBpZiAoZGlzdCA9PT0gMCkgewogICAgICAgIHNlbmRfY29kZShzLCBsYywgbHRyZWUpOyAvKiBzZW5kIGEgbGl0ZXJhbCBieXRlICovCiAgICAgICAgLy9UcmFjZWN2KGlzZ3JhcGgobGMpLCAoc3RkZXJyLCIgJyVjJyAiLCBsYykpOwogICAgICB9IGVsc2UgewogICAgICAgIC8qIEhlcmUsIGxjIGlzIHRoZSBtYXRjaCBsZW5ndGggLSBNSU5fTUFUQ0ggKi8KICAgICAgICBjb2RlID0gX2xlbmd0aF9jb2RlW2xjXTsKICAgICAgICBzZW5kX2NvZGUocywgY29kZSArIExJVEVSQUxTICsgMSwgbHRyZWUpOyAvKiBzZW5kIHRoZSBsZW5ndGggY29kZSAqLwogICAgICAgIGV4dHJhID0gZXh0cmFfbGJpdHNbY29kZV07CiAgICAgICAgaWYgKGV4dHJhICE9PSAwKSB7CiAgICAgICAgICBsYyAtPSBiYXNlX2xlbmd0aFtjb2RlXTsKICAgICAgICAgIHNlbmRfYml0cyhzLCBsYywgZXh0cmEpOyAgICAgICAvKiBzZW5kIHRoZSBleHRyYSBsZW5ndGggYml0cyAqLwogICAgICAgIH0KICAgICAgICBkaXN0LS07IC8qIGRpc3QgaXMgbm93IHRoZSBtYXRjaCBkaXN0YW5jZSAtIDEgKi8KICAgICAgICBjb2RlID0gZF9jb2RlKGRpc3QpOwogICAgICAgIC8vQXNzZXJ0IChjb2RlIDwgRF9DT0RFUywgImJhZCBkX2NvZGUiKTsKCiAgICAgICAgc2VuZF9jb2RlKHMsIGNvZGUsIGR0cmVlKTsgICAgICAgLyogc2VuZCB0aGUgZGlzdGFuY2UgY29kZSAqLwogICAgICAgIGV4dHJhID0gZXh0cmFfZGJpdHNbY29kZV07CiAgICAgICAgaWYgKGV4dHJhICE9PSAwKSB7CiAgICAgICAgICBkaXN0IC09IGJhc2VfZGlzdFtjb2RlXTsKICAgICAgICAgIHNlbmRfYml0cyhzLCBkaXN0LCBleHRyYSk7ICAgLyogc2VuZCB0aGUgZXh0cmEgZGlzdGFuY2UgYml0cyAqLwogICAgICAgIH0KICAgICAgfSAvKiBsaXRlcmFsIG9yIG1hdGNoIHBhaXIgPyAqLwoKICAgICAgLyogQ2hlY2sgdGhhdCB0aGUgb3ZlcmxheSBiZXR3ZWVuIHBlbmRpbmdfYnVmIGFuZCBkX2J1ZitsX2J1ZiBpcyBvazogKi8KICAgICAgLy9Bc3NlcnQoKHVJbnQpKHMtPnBlbmRpbmcpIDwgcy0+bGl0X2J1ZnNpemUgKyAyKmx4LAogICAgICAvLyAgICAgICAicGVuZGluZ0J1ZiBvdmVyZmxvdyIpOwoKICAgIH0gd2hpbGUgKGx4IDwgcy5sYXN0X2xpdCk7CiAgfQoKICBzZW5kX2NvZGUocywgRU5EX0JMT0NLLCBsdHJlZSk7Cn0KCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogQ29uc3RydWN0IG9uZSBIdWZmbWFuIHRyZWUgYW5kIGFzc2lnbnMgdGhlIGNvZGUgYml0IHN0cmluZ3MgYW5kIGxlbmd0aHMuCiAqIFVwZGF0ZSB0aGUgdG90YWwgYml0IGxlbmd0aCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suCiAqIElOIGFzc2VydGlvbjogdGhlIGZpZWxkIGZyZXEgaXMgc2V0IGZvciBhbGwgdHJlZSBlbGVtZW50cy4KICogT1VUIGFzc2VydGlvbnM6IHRoZSBmaWVsZHMgbGVuIGFuZCBjb2RlIGFyZSBzZXQgdG8gdGhlIG9wdGltYWwgYml0IGxlbmd0aAogKiAgICAgYW5kIGNvcnJlc3BvbmRpbmcgY29kZS4gVGhlIGxlbmd0aCBvcHRfbGVuIGlzIHVwZGF0ZWQ7IHN0YXRpY19sZW4gaXMKICogICAgIGFsc28gdXBkYXRlZCBpZiBzdHJlZSBpcyBub3QgbnVsbC4gVGhlIGZpZWxkIG1heF9jb2RlIGlzIHNldC4KICovCmZ1bmN0aW9uIGJ1aWxkX3RyZWUocywgZGVzYykKLy8gICAgZGVmbGF0ZV9zdGF0ZSAqczsKLy8gICAgdHJlZV9kZXNjICpkZXNjOyAvKiB0aGUgdHJlZSBkZXNjcmlwdG9yICovCnsKICB2YXIgdHJlZSAgICAgPSBkZXNjLmR5bl90cmVlOwogIHZhciBzdHJlZSAgICA9IGRlc2Muc3RhdF9kZXNjLnN0YXRpY190cmVlOwogIHZhciBoYXNfc3RyZWUgPSBkZXNjLnN0YXRfZGVzYy5oYXNfc3RyZWU7CiAgdmFyIGVsZW1zICAgID0gZGVzYy5zdGF0X2Rlc2MuZWxlbXM7CiAgdmFyIG4sIG07ICAgICAgICAgIC8qIGl0ZXJhdGUgb3ZlciBoZWFwIGVsZW1lbnRzICovCiAgdmFyIG1heF9jb2RlID0gLTE7IC8qIGxhcmdlc3QgY29kZSB3aXRoIG5vbiB6ZXJvIGZyZXF1ZW5jeSAqLwogIHZhciBub2RlOyAgICAgICAgICAvKiBuZXcgbm9kZSBiZWluZyBjcmVhdGVkICovCgogIC8qIENvbnN0cnVjdCB0aGUgaW5pdGlhbCBoZWFwLCB3aXRoIGxlYXN0IGZyZXF1ZW50IGVsZW1lbnQgaW4KICAgKiBoZWFwW1NNQUxMRVNUXS4gVGhlIHNvbnMgb2YgaGVhcFtuXSBhcmUgaGVhcFsyKm5dIGFuZCBoZWFwWzIqbisxXS4KICAgKiBoZWFwWzBdIGlzIG5vdCB1c2VkLgogICAqLwogIHMuaGVhcF9sZW4gPSAwOwogIHMuaGVhcF9tYXggPSBIRUFQX1NJWkU7CgogIGZvciAobiA9IDA7IG4gPCBlbGVtczsgbisrKSB7CiAgICBpZiAodHJlZVtuICogMl0vKi5GcmVxKi8gIT09IDApIHsKICAgICAgcy5oZWFwWysrcy5oZWFwX2xlbl0gPSBtYXhfY29kZSA9IG47CiAgICAgIHMuZGVwdGhbbl0gPSAwOwoKICAgIH0gZWxzZSB7CiAgICAgIHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gMDsKICAgIH0KICB9CgogIC8qIFRoZSBwa3ppcCBmb3JtYXQgcmVxdWlyZXMgdGhhdCBhdCBsZWFzdCBvbmUgZGlzdGFuY2UgY29kZSBleGlzdHMsCiAgICogYW5kIHRoYXQgYXQgbGVhc3Qgb25lIGJpdCBzaG91bGQgYmUgc2VudCBldmVuIGlmIHRoZXJlIGlzIG9ubHkgb25lCiAgICogcG9zc2libGUgY29kZS4gU28gdG8gYXZvaWQgc3BlY2lhbCBjaGVja3MgbGF0ZXIgb24gd2UgZm9yY2UgYXQgbGVhc3QKICAgKiB0d28gY29kZXMgb2Ygbm9uIHplcm8gZnJlcXVlbmN5LgogICAqLwogIHdoaWxlIChzLmhlYXBfbGVuIDwgMikgewogICAgbm9kZSA9IHMuaGVhcFsrK3MuaGVhcF9sZW5dID0gKG1heF9jb2RlIDwgMiA/ICsrbWF4X2NvZGUgOiAwKTsKICAgIHRyZWVbbm9kZSAqIDJdLyouRnJlcSovID0gMTsKICAgIHMuZGVwdGhbbm9kZV0gPSAwOwogICAgcy5vcHRfbGVuLS07CgogICAgaWYgKGhhc19zdHJlZSkgewogICAgICBzLnN0YXRpY19sZW4gLT0gc3RyZWVbbm9kZSAqIDIgKyAxXS8qLkxlbiovOwogICAgfQogICAgLyogbm9kZSBpcyAwIG9yIDEgc28gaXQgZG9lcyBub3QgaGF2ZSBleHRyYSBiaXRzICovCiAgfQogIGRlc2MubWF4X2NvZGUgPSBtYXhfY29kZTsKCiAgLyogVGhlIGVsZW1lbnRzIGhlYXBbaGVhcF9sZW4vMisxIC4uIGhlYXBfbGVuXSBhcmUgbGVhdmVzIG9mIHRoZSB0cmVlLAogICAqIGVzdGFibGlzaCBzdWItaGVhcHMgb2YgaW5jcmVhc2luZyBsZW5ndGhzOgogICAqLwogIGZvciAobiA9IChzLmhlYXBfbGVuID4+IDEvKmludCAvMiovKTsgbiA+PSAxOyBuLS0pIHsgcHFkb3duaGVhcChzLCB0cmVlLCBuKTsgfQoKICAvKiBDb25zdHJ1Y3QgdGhlIEh1ZmZtYW4gdHJlZSBieSByZXBlYXRlZGx5IGNvbWJpbmluZyB0aGUgbGVhc3QgdHdvCiAgICogZnJlcXVlbnQgbm9kZXMuCiAgICovCiAgbm9kZSA9IGVsZW1zOyAgICAgICAgICAgICAgLyogbmV4dCBpbnRlcm5hbCBub2RlIG9mIHRoZSB0cmVlICovCiAgZG8gewogICAgLy9wcXJlbW92ZShzLCB0cmVlLCBuKTsgIC8qIG4gPSBub2RlIG9mIGxlYXN0IGZyZXF1ZW5jeSAqLwogICAgLyoqKiBwcXJlbW92ZSAqKiovCiAgICBuID0gcy5oZWFwWzEvKlNNQUxMRVNUKi9dOwogICAgcy5oZWFwWzEvKlNNQUxMRVNUKi9dID0gcy5oZWFwW3MuaGVhcF9sZW4tLV07CiAgICBwcWRvd25oZWFwKHMsIHRyZWUsIDEvKlNNQUxMRVNUKi8pOwogICAgLyoqKi8KCiAgICBtID0gcy5oZWFwWzEvKlNNQUxMRVNUKi9dOyAvKiBtID0gbm9kZSBvZiBuZXh0IGxlYXN0IGZyZXF1ZW5jeSAqLwoKICAgIHMuaGVhcFstLXMuaGVhcF9tYXhdID0gbjsgLyoga2VlcCB0aGUgbm9kZXMgc29ydGVkIGJ5IGZyZXF1ZW5jeSAqLwogICAgcy5oZWFwWy0tcy5oZWFwX21heF0gPSBtOwoKICAgIC8qIENyZWF0ZSBhIG5ldyBub2RlIGZhdGhlciBvZiBuIGFuZCBtICovCiAgICB0cmVlW25vZGUgKiAyXS8qLkZyZXEqLyA9IHRyZWVbbiAqIDJdLyouRnJlcSovICsgdHJlZVttICogMl0vKi5GcmVxKi87CiAgICBzLmRlcHRoW25vZGVdID0gKHMuZGVwdGhbbl0gPj0gcy5kZXB0aFttXSA/IHMuZGVwdGhbbl0gOiBzLmRlcHRoW21dKSArIDE7CiAgICB0cmVlW24gKiAyICsgMV0vKi5EYWQqLyA9IHRyZWVbbSAqIDIgKyAxXS8qLkRhZCovID0gbm9kZTsKCiAgICAvKiBhbmQgaW5zZXJ0IHRoZSBuZXcgbm9kZSBpbiB0aGUgaGVhcCAqLwogICAgcy5oZWFwWzEvKlNNQUxMRVNUKi9dID0gbm9kZSsrOwogICAgcHFkb3duaGVhcChzLCB0cmVlLCAxLypTTUFMTEVTVCovKTsKCiAgfSB3aGlsZSAocy5oZWFwX2xlbiA+PSAyKTsKCiAgcy5oZWFwWy0tcy5oZWFwX21heF0gPSBzLmhlYXBbMS8qU01BTExFU1QqL107CgogIC8qIEF0IHRoaXMgcG9pbnQsIHRoZSBmaWVsZHMgZnJlcSBhbmQgZGFkIGFyZSBzZXQuIFdlIGNhbiBub3cKICAgKiBnZW5lcmF0ZSB0aGUgYml0IGxlbmd0aHMuCiAgICovCiAgZ2VuX2JpdGxlbihzLCBkZXNjKTsKCiAgLyogVGhlIGZpZWxkIGxlbiBpcyBub3cgc2V0LCB3ZSBjYW4gZ2VuZXJhdGUgdGhlIGJpdCBjb2RlcyAqLwogIGdlbl9jb2Rlcyh0cmVlLCBtYXhfY29kZSwgcy5ibF9jb3VudCk7Cn0KCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogU2NhbiBhIGxpdGVyYWwgb3IgZGlzdGFuY2UgdHJlZSB0byBkZXRlcm1pbmUgdGhlIGZyZXF1ZW5jaWVzIG9mIHRoZSBjb2RlcwogKiBpbiB0aGUgYml0IGxlbmd0aCB0cmVlLgogKi8KZnVuY3Rpb24gc2Nhbl90cmVlKHMsIHRyZWUsIG1heF9jb2RlKQovLyAgICBkZWZsYXRlX3N0YXRlICpzOwovLyAgICBjdF9kYXRhICp0cmVlOyAgIC8qIHRoZSB0cmVlIHRvIGJlIHNjYW5uZWQgKi8KLy8gICAgaW50IG1heF9jb2RlOyAgICAvKiBhbmQgaXRzIGxhcmdlc3QgY29kZSBvZiBub24gemVybyBmcmVxdWVuY3kgKi8KewogIHZhciBuOyAgICAgICAgICAgICAgICAgICAgIC8qIGl0ZXJhdGVzIG92ZXIgYWxsIHRyZWUgZWxlbWVudHMgKi8KICB2YXIgcHJldmxlbiA9IC0xOyAgICAgICAgICAvKiBsYXN0IGVtaXR0ZWQgbGVuZ3RoICovCiAgdmFyIGN1cmxlbjsgICAgICAgICAgICAgICAgLyogbGVuZ3RoIG9mIGN1cnJlbnQgY29kZSAqLwoKICB2YXIgbmV4dGxlbiA9IHRyZWVbMCAqIDIgKyAxXS8qLkxlbiovOyAvKiBsZW5ndGggb2YgbmV4dCBjb2RlICovCgogIHZhciBjb3VudCA9IDA7ICAgICAgICAgICAgIC8qIHJlcGVhdCBjb3VudCBvZiB0aGUgY3VycmVudCBjb2RlICovCiAgdmFyIG1heF9jb3VudCA9IDc7ICAgICAgICAgLyogbWF4IHJlcGVhdCBjb3VudCAqLwogIHZhciBtaW5fY291bnQgPSA0OyAgICAgICAgIC8qIG1pbiByZXBlYXQgY291bnQgKi8KCiAgaWYgKG5leHRsZW4gPT09IDApIHsKICAgIG1heF9jb3VudCA9IDEzODsKICAgIG1pbl9jb3VudCA9IDM7CiAgfQogIHRyZWVbKG1heF9jb2RlICsgMSkgKiAyICsgMV0vKi5MZW4qLyA9IDB4ZmZmZjsgLyogZ3VhcmQgKi8KCiAgZm9yIChuID0gMDsgbiA8PSBtYXhfY29kZTsgbisrKSB7CiAgICBjdXJsZW4gPSBuZXh0bGVuOwogICAgbmV4dGxlbiA9IHRyZWVbKG4gKyAxKSAqIDIgKyAxXS8qLkxlbiovOwoKICAgIGlmICgrK2NvdW50IDwgbWF4X2NvdW50ICYmIGN1cmxlbiA9PT0gbmV4dGxlbikgewogICAgICBjb250aW51ZTsKCiAgICB9IGVsc2UgaWYgKGNvdW50IDwgbWluX2NvdW50KSB7CiAgICAgIHMuYmxfdHJlZVtjdXJsZW4gKiAyXS8qLkZyZXEqLyArPSBjb3VudDsKCiAgICB9IGVsc2UgaWYgKGN1cmxlbiAhPT0gMCkgewoKICAgICAgaWYgKGN1cmxlbiAhPT0gcHJldmxlbikgeyBzLmJsX3RyZWVbY3VybGVuICogMl0vKi5GcmVxKi8rKzsgfQogICAgICBzLmJsX3RyZWVbUkVQXzNfNiAqIDJdLyouRnJlcSovKys7CgogICAgfSBlbHNlIGlmIChjb3VudCA8PSAxMCkgewogICAgICBzLmJsX3RyZWVbUkVQWl8zXzEwICogMl0vKi5GcmVxKi8rKzsKCiAgICB9IGVsc2UgewogICAgICBzLmJsX3RyZWVbUkVQWl8xMV8xMzggKiAyXS8qLkZyZXEqLysrOwogICAgfQoKICAgIGNvdW50ID0gMDsKICAgIHByZXZsZW4gPSBjdXJsZW47CgogICAgaWYgKG5leHRsZW4gPT09IDApIHsKICAgICAgbWF4X2NvdW50ID0gMTM4OwogICAgICBtaW5fY291bnQgPSAzOwoKICAgIH0gZWxzZSBpZiAoY3VybGVuID09PSBuZXh0bGVuKSB7CiAgICAgIG1heF9jb3VudCA9IDY7CiAgICAgIG1pbl9jb3VudCA9IDM7CgogICAgfSBlbHNlIHsKICAgICAgbWF4X2NvdW50ID0gNzsKICAgICAgbWluX2NvdW50ID0gNDsKICAgIH0KICB9Cn0KCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogU2VuZCBhIGxpdGVyYWwgb3IgZGlzdGFuY2UgdHJlZSBpbiBjb21wcmVzc2VkIGZvcm0sIHVzaW5nIHRoZSBjb2RlcyBpbgogKiBibF90cmVlLgogKi8KZnVuY3Rpb24gc2VuZF90cmVlKHMsIHRyZWUsIG1heF9jb2RlKQovLyAgICBkZWZsYXRlX3N0YXRlICpzOwovLyAgICBjdF9kYXRhICp0cmVlOyAvKiB0aGUgdHJlZSB0byBiZSBzY2FubmVkICovCi8vICAgIGludCBtYXhfY29kZTsgICAgICAgLyogYW5kIGl0cyBsYXJnZXN0IGNvZGUgb2Ygbm9uIHplcm8gZnJlcXVlbmN5ICovCnsKICB2YXIgbjsgICAgICAgICAgICAgICAgICAgICAvKiBpdGVyYXRlcyBvdmVyIGFsbCB0cmVlIGVsZW1lbnRzICovCiAgdmFyIHByZXZsZW4gPSAtMTsgICAgICAgICAgLyogbGFzdCBlbWl0dGVkIGxlbmd0aCAqLwogIHZhciBjdXJsZW47ICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBvZiBjdXJyZW50IGNvZGUgKi8KCiAgdmFyIG5leHRsZW4gPSB0cmVlWzAgKiAyICsgMV0vKi5MZW4qLzsgLyogbGVuZ3RoIG9mIG5leHQgY29kZSAqLwoKICB2YXIgY291bnQgPSAwOyAgICAgICAgICAgICAvKiByZXBlYXQgY291bnQgb2YgdGhlIGN1cnJlbnQgY29kZSAqLwogIHZhciBtYXhfY291bnQgPSA3OyAgICAgICAgIC8qIG1heCByZXBlYXQgY291bnQgKi8KICB2YXIgbWluX2NvdW50ID0gNDsgICAgICAgICAvKiBtaW4gcmVwZWF0IGNvdW50ICovCgogIC8qIHRyZWVbbWF4X2NvZGUrMV0uTGVuID0gLTE7ICovICAvKiBndWFyZCBhbHJlYWR5IHNldCAqLwogIGlmIChuZXh0bGVuID09PSAwKSB7CiAgICBtYXhfY291bnQgPSAxMzg7CiAgICBtaW5fY291bnQgPSAzOwogIH0KCiAgZm9yIChuID0gMDsgbiA8PSBtYXhfY29kZTsgbisrKSB7CiAgICBjdXJsZW4gPSBuZXh0bGVuOwogICAgbmV4dGxlbiA9IHRyZWVbKG4gKyAxKSAqIDIgKyAxXS8qLkxlbiovOwoKICAgIGlmICgrK2NvdW50IDwgbWF4X2NvdW50ICYmIGN1cmxlbiA9PT0gbmV4dGxlbikgewogICAgICBjb250aW51ZTsKCiAgICB9IGVsc2UgaWYgKGNvdW50IDwgbWluX2NvdW50KSB7CiAgICAgIGRvIHsgc2VuZF9jb2RlKHMsIGN1cmxlbiwgcy5ibF90cmVlKTsgfSB3aGlsZSAoLS1jb3VudCAhPT0gMCk7CgogICAgfSBlbHNlIGlmIChjdXJsZW4gIT09IDApIHsKICAgICAgaWYgKGN1cmxlbiAhPT0gcHJldmxlbikgewogICAgICAgIHNlbmRfY29kZShzLCBjdXJsZW4sIHMuYmxfdHJlZSk7CiAgICAgICAgY291bnQtLTsKICAgICAgfQogICAgICAvL0Fzc2VydChjb3VudCA+PSAzICYmIGNvdW50IDw9IDYsICIgM182PyIpOwogICAgICBzZW5kX2NvZGUocywgUkVQXzNfNiwgcy5ibF90cmVlKTsKICAgICAgc2VuZF9iaXRzKHMsIGNvdW50IC0gMywgMik7CgogICAgfSBlbHNlIGlmIChjb3VudCA8PSAxMCkgewogICAgICBzZW5kX2NvZGUocywgUkVQWl8zXzEwLCBzLmJsX3RyZWUpOwogICAgICBzZW5kX2JpdHMocywgY291bnQgLSAzLCAzKTsKCiAgICB9IGVsc2UgewogICAgICBzZW5kX2NvZGUocywgUkVQWl8xMV8xMzgsIHMuYmxfdHJlZSk7CiAgICAgIHNlbmRfYml0cyhzLCBjb3VudCAtIDExLCA3KTsKICAgIH0KCiAgICBjb3VudCA9IDA7CiAgICBwcmV2bGVuID0gY3VybGVuOwogICAgaWYgKG5leHRsZW4gPT09IDApIHsKICAgICAgbWF4X2NvdW50ID0gMTM4OwogICAgICBtaW5fY291bnQgPSAzOwoKICAgIH0gZWxzZSBpZiAoY3VybGVuID09PSBuZXh0bGVuKSB7CiAgICAgIG1heF9jb3VudCA9IDY7CiAgICAgIG1pbl9jb3VudCA9IDM7CgogICAgfSBlbHNlIHsKICAgICAgbWF4X2NvdW50ID0gNzsKICAgICAgbWluX2NvdW50ID0gNDsKICAgIH0KICB9Cn0KCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogQ29uc3RydWN0IHRoZSBIdWZmbWFuIHRyZWUgZm9yIHRoZSBiaXQgbGVuZ3RocyBhbmQgcmV0dXJuIHRoZSBpbmRleCBpbgogKiBibF9vcmRlciBvZiB0aGUgbGFzdCBiaXQgbGVuZ3RoIGNvZGUgdG8gc2VuZC4KICovCmZ1bmN0aW9uIGJ1aWxkX2JsX3RyZWUocykgewogIHZhciBtYXhfYmxpbmRleDsgIC8qIGluZGV4IG9mIGxhc3QgYml0IGxlbmd0aCBjb2RlIG9mIG5vbiB6ZXJvIGZyZXEgKi8KCiAgLyogRGV0ZXJtaW5lIHRoZSBiaXQgbGVuZ3RoIGZyZXF1ZW5jaWVzIGZvciBsaXRlcmFsIGFuZCBkaXN0YW5jZSB0cmVlcyAqLwogIHNjYW5fdHJlZShzLCBzLmR5bl9sdHJlZSwgcy5sX2Rlc2MubWF4X2NvZGUpOwogIHNjYW5fdHJlZShzLCBzLmR5bl9kdHJlZSwgcy5kX2Rlc2MubWF4X2NvZGUpOwoKICAvKiBCdWlsZCB0aGUgYml0IGxlbmd0aCB0cmVlOiAqLwogIGJ1aWxkX3RyZWUocywgcy5ibF9kZXNjKTsKICAvKiBvcHRfbGVuIG5vdyBpbmNsdWRlcyB0aGUgbGVuZ3RoIG9mIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9ucywgZXhjZXB0CiAgICogdGhlIGxlbmd0aHMgb2YgdGhlIGJpdCBsZW5ndGhzIGNvZGVzIGFuZCB0aGUgNSs1KzQgYml0cyBmb3IgdGhlIGNvdW50cy4KICAgKi8KCiAgLyogRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgYml0IGxlbmd0aCBjb2RlcyB0byBzZW5kLiBUaGUgcGt6aXAgZm9ybWF0CiAgICogcmVxdWlyZXMgdGhhdCBhdCBsZWFzdCA0IGJpdCBsZW5ndGggY29kZXMgYmUgc2VudC4gKGFwcG5vdGUudHh0IHNheXMKICAgKiAzIGJ1dCB0aGUgYWN0dWFsIHZhbHVlIHVzZWQgaXMgNC4pCiAgICovCiAgZm9yIChtYXhfYmxpbmRleCA9IEJMX0NPREVTIC0gMTsgbWF4X2JsaW5kZXggPj0gMzsgbWF4X2JsaW5kZXgtLSkgewogICAgaWYgKHMuYmxfdHJlZVtibF9vcmRlclttYXhfYmxpbmRleF0gKiAyICsgMV0vKi5MZW4qLyAhPT0gMCkgewogICAgICBicmVhazsKICAgIH0KICB9CiAgLyogVXBkYXRlIG9wdF9sZW4gdG8gaW5jbHVkZSB0aGUgYml0IGxlbmd0aCB0cmVlIGFuZCBjb3VudHMgKi8KICBzLm9wdF9sZW4gKz0gMyAqIChtYXhfYmxpbmRleCArIDEpICsgNSArIDUgKyA0OwogIC8vVHJhY2V2KChzdGRlcnIsICJcbmR5biB0cmVlczogZHluICVsZCwgc3RhdCAlbGQiLAogIC8vICAgICAgICBzLT5vcHRfbGVuLCBzLT5zdGF0aWNfbGVuKSk7CgogIHJldHVybiBtYXhfYmxpbmRleDsKfQoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBTZW5kIHRoZSBoZWFkZXIgZm9yIGEgYmxvY2sgdXNpbmcgZHluYW1pYyBIdWZmbWFuIHRyZWVzOiB0aGUgY291bnRzLCB0aGUKICogbGVuZ3RocyBvZiB0aGUgYml0IGxlbmd0aCBjb2RlcywgdGhlIGxpdGVyYWwgdHJlZSBhbmQgdGhlIGRpc3RhbmNlIHRyZWUuCiAqIElOIGFzc2VydGlvbjogbGNvZGVzID49IDI1NywgZGNvZGVzID49IDEsIGJsY29kZXMgPj0gNC4KICovCmZ1bmN0aW9uIHNlbmRfYWxsX3RyZWVzKHMsIGxjb2RlcywgZGNvZGVzLCBibGNvZGVzKQovLyAgICBkZWZsYXRlX3N0YXRlICpzOwovLyAgICBpbnQgbGNvZGVzLCBkY29kZXMsIGJsY29kZXM7IC8qIG51bWJlciBvZiBjb2RlcyBmb3IgZWFjaCB0cmVlICovCnsKICB2YXIgcmFuazsgICAgICAgICAgICAgICAgICAgIC8qIGluZGV4IGluIGJsX29yZGVyICovCgogIC8vQXNzZXJ0IChsY29kZXMgPj0gMjU3ICYmIGRjb2RlcyA+PSAxICYmIGJsY29kZXMgPj0gNCwgIm5vdCBlbm91Z2ggY29kZXMiKTsKICAvL0Fzc2VydCAobGNvZGVzIDw9IExfQ09ERVMgJiYgZGNvZGVzIDw9IERfQ09ERVMgJiYgYmxjb2RlcyA8PSBCTF9DT0RFUywKICAvLyAgICAgICAgInRvbyBtYW55IGNvZGVzIik7CiAgLy9UcmFjZXYoKHN0ZGVyciwgIlxuYmwgY291bnRzOiAiKSk7CiAgc2VuZF9iaXRzKHMsIGxjb2RlcyAtIDI1NywgNSk7IC8qIG5vdCArMjU1IGFzIHN0YXRlZCBpbiBhcHBub3RlLnR4dCAqLwogIHNlbmRfYml0cyhzLCBkY29kZXMgLSAxLCAgIDUpOwogIHNlbmRfYml0cyhzLCBibGNvZGVzIC0gNCwgIDQpOyAvKiBub3QgLTMgYXMgc3RhdGVkIGluIGFwcG5vdGUudHh0ICovCiAgZm9yIChyYW5rID0gMDsgcmFuayA8IGJsY29kZXM7IHJhbmsrKykgewogICAgLy9UcmFjZXYoKHN0ZGVyciwgIlxuYmwgY29kZSAlMmQgIiwgYmxfb3JkZXJbcmFua10pKTsKICAgIHNlbmRfYml0cyhzLCBzLmJsX3RyZWVbYmxfb3JkZXJbcmFua10gKiAyICsgMV0vKi5MZW4qLywgMyk7CiAgfQogIC8vVHJhY2V2KChzdGRlcnIsICJcbmJsIHRyZWU6IHNlbnQgJWxkIiwgcy0+Yml0c19zZW50KSk7CgogIHNlbmRfdHJlZShzLCBzLmR5bl9sdHJlZSwgbGNvZGVzIC0gMSk7IC8qIGxpdGVyYWwgdHJlZSAqLwogIC8vVHJhY2V2KChzdGRlcnIsICJcbmxpdCB0cmVlOiBzZW50ICVsZCIsIHMtPmJpdHNfc2VudCkpOwoKICBzZW5kX3RyZWUocywgcy5keW5fZHRyZWUsIGRjb2RlcyAtIDEpOyAvKiBkaXN0YW5jZSB0cmVlICovCiAgLy9UcmFjZXYoKHN0ZGVyciwgIlxuZGlzdCB0cmVlOiBzZW50ICVsZCIsIHMtPmJpdHNfc2VudCkpOwp9CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIENoZWNrIGlmIHRoZSBkYXRhIHR5cGUgaXMgVEVYVCBvciBCSU5BUlksIHVzaW5nIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtOgogKiAtIFRFWFQgaWYgdGhlIHR3byBjb25kaXRpb25zIGJlbG93IGFyZSBzYXRpc2ZpZWQ6CiAqICAgIGEpIFRoZXJlIGFyZSBubyBub24tcG9ydGFibGUgY29udHJvbCBjaGFyYWN0ZXJzIGJlbG9uZ2luZyB0byB0aGUKICogICAgICAgImJsYWNrIGxpc3QiICgwLi42LCAxNC4uMjUsIDI4Li4zMSkuCiAqICAgIGIpIFRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwcmludGFibGUgY2hhcmFjdGVyIGJlbG9uZ2luZyB0byB0aGUKICogICAgICAgIndoaXRlIGxpc3QiICg5IHtUQUJ9LCAxMCB7TEZ9LCAxMyB7Q1J9LCAzMi4uMjU1KS4KICogLSBCSU5BUlkgb3RoZXJ3aXNlLgogKiAtIFRoZSBmb2xsb3dpbmcgcGFydGlhbGx5LXBvcnRhYmxlIGNvbnRyb2wgY2hhcmFjdGVycyBmb3JtIGEKICogICAiZ3JheSBsaXN0IiB0aGF0IGlzIGlnbm9yZWQgaW4gdGhpcyBkZXRlY3Rpb24gYWxnb3JpdGhtOgogKiAgICg3IHtCRUx9LCA4IHtCU30sIDExIHtWVH0sIDEyIHtGRn0sIDI2IHtTVUJ9LCAyNyB7RVNDfSkuCiAqIElOIGFzc2VydGlvbjogdGhlIGZpZWxkcyBGcmVxIG9mIGR5bl9sdHJlZSBhcmUgc2V0LgogKi8KZnVuY3Rpb24gZGV0ZWN0X2RhdGFfdHlwZShzKSB7CiAgLyogYmxhY2tfbWFzayBpcyB0aGUgYml0IG1hc2sgb2YgYmxhY2stbGlzdGVkIGJ5dGVzCiAgICogc2V0IGJpdHMgMC4uNiwgMTQuLjI1LCBhbmQgMjguLjMxCiAgICogMHhmM2ZmYzA3ZiA9IGJpbmFyeSAxMTExMDAxMTExMTExMTExMTEwMDAwMDAwMTExMTExMQogICAqLwogIHZhciBibGFja19tYXNrID0gMHhmM2ZmYzA3ZjsKICB2YXIgbjsKCiAgLyogQ2hlY2sgZm9yIG5vbi10ZXh0dWFsICgiYmxhY2stbGlzdGVkIikgYnl0ZXMuICovCiAgZm9yIChuID0gMDsgbiA8PSAzMTsgbisrLCBibGFja19tYXNrID4+Pj0gMSkgewogICAgaWYgKChibGFja19tYXNrICYgMSkgJiYgKHMuZHluX2x0cmVlW24gKiAyXS8qLkZyZXEqLyAhPT0gMCkpIHsKICAgICAgcmV0dXJuIFpfQklOQVJZOwogICAgfQogIH0KCiAgLyogQ2hlY2sgZm9yIHRleHR1YWwgKCJ3aGl0ZS1saXN0ZWQiKSBieXRlcy4gKi8KICBpZiAocy5keW5fbHRyZWVbOSAqIDJdLyouRnJlcSovICE9PSAwIHx8IHMuZHluX2x0cmVlWzEwICogMl0vKi5GcmVxKi8gIT09IDAgfHwKICAgICAgcy5keW5fbHRyZWVbMTMgKiAyXS8qLkZyZXEqLyAhPT0gMCkgewogICAgcmV0dXJuIFpfVEVYVDsKICB9CiAgZm9yIChuID0gMzI7IG4gPCBMSVRFUkFMUzsgbisrKSB7CiAgICBpZiAocy5keW5fbHRyZWVbbiAqIDJdLyouRnJlcSovICE9PSAwKSB7CiAgICAgIHJldHVybiBaX1RFWFQ7CiAgICB9CiAgfQoKICAvKiBUaGVyZSBhcmUgbm8gImJsYWNrLWxpc3RlZCIgb3IgIndoaXRlLWxpc3RlZCIgYnl0ZXM6CiAgICogdGhpcyBzdHJlYW0gZWl0aGVyIGlzIGVtcHR5IG9yIGhhcyB0b2xlcmF0ZWQgKCJncmF5LWxpc3RlZCIpIGJ5dGVzIG9ubHkuCiAgICovCiAgcmV0dXJuIFpfQklOQVJZOwp9CgoKdmFyIHN0YXRpY19pbml0X2RvbmUgPSBmYWxzZTsKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBJbml0aWFsaXplIHRoZSB0cmVlIGRhdGEgc3RydWN0dXJlcyBmb3IgYSBuZXcgemxpYiBzdHJlYW0uCiAqLwpmdW5jdGlvbiBfdHJfaW5pdChzKQp7CgogIGlmICghc3RhdGljX2luaXRfZG9uZSkgewogICAgdHJfc3RhdGljX2luaXQoKTsKICAgIHN0YXRpY19pbml0X2RvbmUgPSB0cnVlOwogIH0KCiAgcy5sX2Rlc2MgID0gbmV3IFRyZWVEZXNjKHMuZHluX2x0cmVlLCBzdGF0aWNfbF9kZXNjKTsKICBzLmRfZGVzYyAgPSBuZXcgVHJlZURlc2Mocy5keW5fZHRyZWUsIHN0YXRpY19kX2Rlc2MpOwogIHMuYmxfZGVzYyA9IG5ldyBUcmVlRGVzYyhzLmJsX3RyZWUsIHN0YXRpY19ibF9kZXNjKTsKCiAgcy5iaV9idWYgPSAwOwogIHMuYmlfdmFsaWQgPSAwOwoKICAvKiBJbml0aWFsaXplIHRoZSBmaXJzdCBibG9jayBvZiB0aGUgZmlyc3QgZmlsZTogKi8KICBpbml0X2Jsb2NrKHMpOwp9CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIFNlbmQgYSBzdG9yZWQgYmxvY2sKICovCmZ1bmN0aW9uIF90cl9zdG9yZWRfYmxvY2socywgYnVmLCBzdG9yZWRfbGVuLCBsYXN0KQovL0RlZmxhdGVTdGF0ZSAqczsKLy9jaGFyZiAqYnVmOyAgICAgICAvKiBpbnB1dCBibG9jayAqLwovL3VsZyBzdG9yZWRfbGVuOyAgIC8qIGxlbmd0aCBvZiBpbnB1dCBibG9jayAqLwovL2ludCBsYXN0OyAgICAgICAgIC8qIG9uZSBpZiB0aGlzIGlzIHRoZSBsYXN0IGJsb2NrIGZvciBhIGZpbGUgKi8KewogIHNlbmRfYml0cyhzLCAoU1RPUkVEX0JMT0NLIDw8IDEpICsgKGxhc3QgPyAxIDogMCksIDMpOyAgICAvKiBzZW5kIGJsb2NrIHR5cGUgKi8KICBjb3B5X2Jsb2NrKHMsIGJ1Ziwgc3RvcmVkX2xlbiwgdHJ1ZSk7IC8qIHdpdGggaGVhZGVyICovCn0KCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogU2VuZCBvbmUgZW1wdHkgc3RhdGljIGJsb2NrIHRvIGdpdmUgZW5vdWdoIGxvb2thaGVhZCBmb3IgaW5mbGF0ZS4KICogVGhpcyB0YWtlcyAxMCBiaXRzLCBvZiB3aGljaCA3IG1heSByZW1haW4gaW4gdGhlIGJpdCBidWZmZXIuCiAqLwpmdW5jdGlvbiBfdHJfYWxpZ24ocykgewogIHNlbmRfYml0cyhzLCBTVEFUSUNfVFJFRVMgPDwgMSwgMyk7CiAgc2VuZF9jb2RlKHMsIEVORF9CTE9DSywgc3RhdGljX2x0cmVlKTsKICBiaV9mbHVzaChzKTsKfQoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBEZXRlcm1pbmUgdGhlIGJlc3QgZW5jb2RpbmcgZm9yIHRoZSBjdXJyZW50IGJsb2NrOiBkeW5hbWljIHRyZWVzLCBzdGF0aWMKICogdHJlZXMgb3Igc3RvcmUsIGFuZCBvdXRwdXQgdGhlIGVuY29kZWQgYmxvY2sgdG8gdGhlIHppcCBmaWxlLgogKi8KZnVuY3Rpb24gX3RyX2ZsdXNoX2Jsb2NrKHMsIGJ1Ziwgc3RvcmVkX2xlbiwgbGFzdCkKLy9EZWZsYXRlU3RhdGUgKnM7Ci8vY2hhcmYgKmJ1ZjsgICAgICAgLyogaW5wdXQgYmxvY2ssIG9yIE5VTEwgaWYgdG9vIG9sZCAqLwovL3VsZyBzdG9yZWRfbGVuOyAgIC8qIGxlbmd0aCBvZiBpbnB1dCBibG9jayAqLwovL2ludCBsYXN0OyAgICAgICAgIC8qIG9uZSBpZiB0aGlzIGlzIHRoZSBsYXN0IGJsb2NrIGZvciBhIGZpbGUgKi8KewogIHZhciBvcHRfbGVuYiwgc3RhdGljX2xlbmI7ICAvKiBvcHRfbGVuIGFuZCBzdGF0aWNfbGVuIGluIGJ5dGVzICovCiAgdmFyIG1heF9ibGluZGV4ID0gMDsgICAgICAgIC8qIGluZGV4IG9mIGxhc3QgYml0IGxlbmd0aCBjb2RlIG9mIG5vbiB6ZXJvIGZyZXEgKi8KCiAgLyogQnVpbGQgdGhlIEh1ZmZtYW4gdHJlZXMgdW5sZXNzIGEgc3RvcmVkIGJsb2NrIGlzIGZvcmNlZCAqLwogIGlmIChzLmxldmVsID4gMCkgewoKICAgIC8qIENoZWNrIGlmIHRoZSBmaWxlIGlzIGJpbmFyeSBvciB0ZXh0ICovCiAgICBpZiAocy5zdHJtLmRhdGFfdHlwZSA9PT0gWl9VTktOT1dOKSB7CiAgICAgIHMuc3RybS5kYXRhX3R5cGUgPSBkZXRlY3RfZGF0YV90eXBlKHMpOwogICAgfQoKICAgIC8qIENvbnN0cnVjdCB0aGUgbGl0ZXJhbCBhbmQgZGlzdGFuY2UgdHJlZXMgKi8KICAgIGJ1aWxkX3RyZWUocywgcy5sX2Rlc2MpOwogICAgLy8gVHJhY2V2KChzdGRlcnIsICJcbmxpdCBkYXRhOiBkeW4gJWxkLCBzdGF0ICVsZCIsIHMtPm9wdF9sZW4sCiAgICAvLyAgICAgICAgcy0+c3RhdGljX2xlbikpOwoKICAgIGJ1aWxkX3RyZWUocywgcy5kX2Rlc2MpOwogICAgLy8gVHJhY2V2KChzdGRlcnIsICJcbmRpc3QgZGF0YTogZHluICVsZCwgc3RhdCAlbGQiLCBzLT5vcHRfbGVuLAogICAgLy8gICAgICAgIHMtPnN0YXRpY19sZW4pKTsKICAgIC8qIEF0IHRoaXMgcG9pbnQsIG9wdF9sZW4gYW5kIHN0YXRpY19sZW4gYXJlIHRoZSB0b3RhbCBiaXQgbGVuZ3RocyBvZgogICAgICogdGhlIGNvbXByZXNzZWQgYmxvY2sgZGF0YSwgZXhjbHVkaW5nIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9ucy4KICAgICAqLwoKICAgIC8qIEJ1aWxkIHRoZSBiaXQgbGVuZ3RoIHRyZWUgZm9yIHRoZSBhYm92ZSB0d28gdHJlZXMsIGFuZCBnZXQgdGhlIGluZGV4CiAgICAgKiBpbiBibF9vcmRlciBvZiB0aGUgbGFzdCBiaXQgbGVuZ3RoIGNvZGUgdG8gc2VuZC4KICAgICAqLwogICAgbWF4X2JsaW5kZXggPSBidWlsZF9ibF90cmVlKHMpOwoKICAgIC8qIERldGVybWluZSB0aGUgYmVzdCBlbmNvZGluZy4gQ29tcHV0ZSB0aGUgYmxvY2sgbGVuZ3RocyBpbiBieXRlcy4gKi8KICAgIG9wdF9sZW5iID0gKHMub3B0X2xlbiArIDMgKyA3KSA+Pj4gMzsKICAgIHN0YXRpY19sZW5iID0gKHMuc3RhdGljX2xlbiArIDMgKyA3KSA+Pj4gMzsKCiAgICAvLyBUcmFjZXYoKHN0ZGVyciwgIlxub3B0ICVsdSglbHUpIHN0YXQgJWx1KCVsdSkgc3RvcmVkICVsdSBsaXQgJXUgIiwKICAgIC8vICAgICAgICBvcHRfbGVuYiwgcy0+b3B0X2xlbiwgc3RhdGljX2xlbmIsIHMtPnN0YXRpY19sZW4sIHN0b3JlZF9sZW4sCiAgICAvLyAgICAgICAgcy0+bGFzdF9saXQpKTsKCiAgICBpZiAoc3RhdGljX2xlbmIgPD0gb3B0X2xlbmIpIHsgb3B0X2xlbmIgPSBzdGF0aWNfbGVuYjsgfQoKICB9IGVsc2UgewogICAgLy8gQXNzZXJ0KGJ1ZiAhPSAoY2hhciopMCwgImxvc3QgYnVmIik7CiAgICBvcHRfbGVuYiA9IHN0YXRpY19sZW5iID0gc3RvcmVkX2xlbiArIDU7IC8qIGZvcmNlIGEgc3RvcmVkIGJsb2NrICovCiAgfQoKICBpZiAoKHN0b3JlZF9sZW4gKyA0IDw9IG9wdF9sZW5iKSAmJiAoYnVmICE9PSAtMSkpIHsKICAgIC8qIDQ6IHR3byB3b3JkcyBmb3IgdGhlIGxlbmd0aHMgKi8KCiAgICAvKiBUaGUgdGVzdCBidWYgIT0gTlVMTCBpcyBvbmx5IG5lY2Vzc2FyeSBpZiBMSVRfQlVGU0laRSA+IFdTSVpFLgogICAgICogT3RoZXJ3aXNlIHdlIGNhbid0IGhhdmUgcHJvY2Vzc2VkIG1vcmUgdGhhbiBXU0laRSBpbnB1dCBieXRlcyBzaW5jZQogICAgICogdGhlIGxhc3QgYmxvY2sgZmx1c2gsIGJlY2F1c2UgY29tcHJlc3Npb24gd291bGQgaGF2ZSBiZWVuCiAgICAgKiBzdWNjZXNzZnVsLiBJZiBMSVRfQlVGU0laRSA8PSBXU0laRSwgaXQgaXMgbmV2ZXIgdG9vIGxhdGUgdG8KICAgICAqIHRyYW5zZm9ybSBhIGJsb2NrIGludG8gYSBzdG9yZWQgYmxvY2suCiAgICAgKi8KICAgIF90cl9zdG9yZWRfYmxvY2socywgYnVmLCBzdG9yZWRfbGVuLCBsYXN0KTsKCiAgfSBlbHNlIGlmIChzLnN0cmF0ZWd5ID09PSBaX0ZJWEVEIHx8IHN0YXRpY19sZW5iID09PSBvcHRfbGVuYikgewoKICAgIHNlbmRfYml0cyhzLCAoU1RBVElDX1RSRUVTIDw8IDEpICsgKGxhc3QgPyAxIDogMCksIDMpOwogICAgY29tcHJlc3NfYmxvY2socywgc3RhdGljX2x0cmVlLCBzdGF0aWNfZHRyZWUpOwoKICB9IGVsc2UgewogICAgc2VuZF9iaXRzKHMsIChEWU5fVFJFRVMgPDwgMSkgKyAobGFzdCA/IDEgOiAwKSwgMyk7CiAgICBzZW5kX2FsbF90cmVlcyhzLCBzLmxfZGVzYy5tYXhfY29kZSArIDEsIHMuZF9kZXNjLm1heF9jb2RlICsgMSwgbWF4X2JsaW5kZXggKyAxKTsKICAgIGNvbXByZXNzX2Jsb2NrKHMsIHMuZHluX2x0cmVlLCBzLmR5bl9kdHJlZSk7CiAgfQogIC8vIEFzc2VydCAocy0+Y29tcHJlc3NlZF9sZW4gPT0gcy0+Yml0c19zZW50LCAiYmFkIGNvbXByZXNzZWQgc2l6ZSIpOwogIC8qIFRoZSBhYm92ZSBjaGVjayBpcyBtYWRlIG1vZCAyXjMyLCBmb3IgZmlsZXMgbGFyZ2VyIHRoYW4gNTEyIE1CCiAgICogYW5kIHVMb25nIGltcGxlbWVudGVkIG9uIDMyIGJpdHMuCiAgICovCiAgaW5pdF9ibG9jayhzKTsKCiAgaWYgKGxhc3QpIHsKICAgIGJpX3dpbmR1cChzKTsKICB9CiAgLy8gVHJhY2V2KChzdGRlcnIsIlxuY29tcHJsZW4gJWx1KCVsdSkgIiwgcy0+Y29tcHJlc3NlZF9sZW4+PjMsCiAgLy8gICAgICAgcy0+Y29tcHJlc3NlZF9sZW4tNypsYXN0KSk7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBTYXZlIHRoZSBtYXRjaCBpbmZvIGFuZCB0YWxseSB0aGUgZnJlcXVlbmN5IGNvdW50cy4gUmV0dXJuIHRydWUgaWYKICogdGhlIGN1cnJlbnQgYmxvY2sgbXVzdCBiZSBmbHVzaGVkLgogKi8KZnVuY3Rpb24gX3RyX3RhbGx5KHMsIGRpc3QsIGxjKQovLyAgICBkZWZsYXRlX3N0YXRlICpzOwovLyAgICB1bnNpZ25lZCBkaXN0OyAgLyogZGlzdGFuY2Ugb2YgbWF0Y2hlZCBzdHJpbmcgKi8KLy8gICAgdW5zaWduZWQgbGM7ICAgIC8qIG1hdGNoIGxlbmd0aC1NSU5fTUFUQ0ggb3IgdW5tYXRjaGVkIGNoYXIgKGlmIGRpc3Q9PTApICovCnsKICAvL3ZhciBvdXRfbGVuZ3RoLCBpbl9sZW5ndGgsIGRjb2RlOwoKICBzLnBlbmRpbmdfYnVmW3MuZF9idWYgKyBzLmxhc3RfbGl0ICogMl0gICAgID0gKGRpc3QgPj4+IDgpICYgMHhmZjsKICBzLnBlbmRpbmdfYnVmW3MuZF9idWYgKyBzLmxhc3RfbGl0ICogMiArIDFdID0gZGlzdCAmIDB4ZmY7CgogIHMucGVuZGluZ19idWZbcy5sX2J1ZiArIHMubGFzdF9saXRdID0gbGMgJiAweGZmOwogIHMubGFzdF9saXQrKzsKCiAgaWYgKGRpc3QgPT09IDApIHsKICAgIC8qIGxjIGlzIHRoZSB1bm1hdGNoZWQgY2hhciAqLwogICAgcy5keW5fbHRyZWVbbGMgKiAyXS8qLkZyZXEqLysrOwogIH0gZWxzZSB7CiAgICBzLm1hdGNoZXMrKzsKICAgIC8qIEhlcmUsIGxjIGlzIHRoZSBtYXRjaCBsZW5ndGggLSBNSU5fTUFUQ0ggKi8KICAgIGRpc3QtLTsgICAgICAgICAgICAgLyogZGlzdCA9IG1hdGNoIGRpc3RhbmNlIC0gMSAqLwogICAgLy9Bc3NlcnQoKHVzaClkaXN0IDwgKHVzaClNQVhfRElTVChzKSAmJgogICAgLy8gICAgICAgKHVzaClsYyA8PSAodXNoKShNQVhfTUFUQ0gtTUlOX01BVENIKSAmJgogICAgLy8gICAgICAgKHVzaClkX2NvZGUoZGlzdCkgPCAodXNoKURfQ09ERVMsICAiX3RyX3RhbGx5OiBiYWQgbWF0Y2giKTsKCiAgICBzLmR5bl9sdHJlZVsoX2xlbmd0aF9jb2RlW2xjXSArIExJVEVSQUxTICsgMSkgKiAyXS8qLkZyZXEqLysrOwogICAgcy5keW5fZHRyZWVbZF9jb2RlKGRpc3QpICogMl0vKi5GcmVxKi8rKzsKICB9CgovLyAoISkgVGhpcyBibG9jayBpcyBkaXNhYmxlZCBpbiB6bGliIGRlZmF1bHRzLAovLyBkb24ndCBlbmFibGUgaXQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5CgovLyNpZmRlZiBUUlVOQ0FURV9CTE9DSwovLyAgLyogVHJ5IHRvIGd1ZXNzIGlmIGl0IGlzIHByb2ZpdGFibGUgdG8gc3RvcCB0aGUgY3VycmVudCBibG9jayBoZXJlICovCi8vICBpZiAoKHMubGFzdF9saXQgJiAweDFmZmYpID09PSAwICYmIHMubGV2ZWwgPiAyKSB7Ci8vICAgIC8qIENvbXB1dGUgYW4gdXBwZXIgYm91bmQgZm9yIHRoZSBjb21wcmVzc2VkIGxlbmd0aCAqLwovLyAgICBvdXRfbGVuZ3RoID0gcy5sYXN0X2xpdCo4OwovLyAgICBpbl9sZW5ndGggPSBzLnN0cnN0YXJ0IC0gcy5ibG9ja19zdGFydDsKLy8KLy8gICAgZm9yIChkY29kZSA9IDA7IGRjb2RlIDwgRF9DT0RFUzsgZGNvZGUrKykgewovLyAgICAgIG91dF9sZW5ndGggKz0gcy5keW5fZHRyZWVbZGNvZGUqMl0vKi5GcmVxKi8gKiAoNSArIGV4dHJhX2RiaXRzW2Rjb2RlXSk7Ci8vICAgIH0KLy8gICAgb3V0X2xlbmd0aCA+Pj49IDM7Ci8vICAgIC8vVHJhY2V2KChzdGRlcnIsIlxubGFzdF9saXQgJXUsIGluICVsZCwgb3V0IH4lbGQoJWxkJSUpICIsCi8vICAgIC8vICAgICAgIHMtPmxhc3RfbGl0LCBpbl9sZW5ndGgsIG91dF9sZW5ndGgsCi8vICAgIC8vICAgICAgIDEwMEwgLSBvdXRfbGVuZ3RoKjEwMEwvaW5fbGVuZ3RoKSk7Ci8vICAgIGlmIChzLm1hdGNoZXMgPCAocy5sYXN0X2xpdD4+MSkvKmludCAvMiovICYmIG91dF9sZW5ndGggPCAoaW5fbGVuZ3RoPj4xKS8qaW50IC8yKi8pIHsKLy8gICAgICByZXR1cm4gdHJ1ZTsKLy8gICAgfQovLyAgfQovLyNlbmRpZgoKICByZXR1cm4gKHMubGFzdF9saXQgPT09IHMubGl0X2J1ZnNpemUgLSAxKTsKICAvKiBXZSBhdm9pZCBlcXVhbGl0eSB3aXRoIGxpdF9idWZzaXplIGJlY2F1c2Ugb2Ygd3JhcGFyb3VuZCBhdCA2NEsKICAgKiBvbiAxNiBiaXQgbWFjaGluZXMgYW5kIGJlY2F1c2Ugc3RvcmVkIGJsb2NrcyBhcmUgcmVzdHJpY3RlZCB0bwogICAqIDY0Sy0xIGJ5dGVzLgogICAqLwp9CgpleHBvcnRzLl90cl9pbml0ICA9IF90cl9pbml0OwpleHBvcnRzLl90cl9zdG9yZWRfYmxvY2sgPSBfdHJfc3RvcmVkX2Jsb2NrOwpleHBvcnRzLl90cl9mbHVzaF9ibG9jayAgPSBfdHJfZmx1c2hfYmxvY2s7CmV4cG9ydHMuX3RyX3RhbGx5ID0gX3RyX3RhbGx5OwpleHBvcnRzLl90cl9hbGlnbiA9IF90cl9hbGlnbjsKCgovKioqLyB9KSwKLyogMTU2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgovLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW4KLy8KLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCi8vCi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLAovLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0Ci8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKLy8KLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3QKLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZQovLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZQovLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlCi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgovLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLgoKbW9kdWxlLmV4cG9ydHMgPSB7CiAgMjogICAgICAnbmVlZCBkaWN0aW9uYXJ5JywgICAgIC8qIFpfTkVFRF9ESUNUICAgICAgIDIgICovCiAgMTogICAgICAnc3RyZWFtIGVuZCcsICAgICAgICAgIC8qIFpfU1RSRUFNX0VORCAgICAgIDEgICovCiAgMDogICAgICAnJywgICAgICAgICAgICAgICAgICAgIC8qIFpfT0sgICAgICAgICAgICAgIDAgICovCiAgJy0xJzogICAnZmlsZSBlcnJvcicsICAgICAgICAgIC8qIFpfRVJSTk8gICAgICAgICAoLTEpICovCiAgJy0yJzogICAnc3RyZWFtIGVycm9yJywgICAgICAgIC8qIFpfU1RSRUFNX0VSUk9SICAoLTIpICovCiAgJy0zJzogICAnZGF0YSBlcnJvcicsICAgICAgICAgIC8qIFpfREFUQV9FUlJPUiAgICAoLTMpICovCiAgJy00JzogICAnaW5zdWZmaWNpZW50IG1lbW9yeScsIC8qIFpfTUVNX0VSUk9SICAgICAoLTQpICovCiAgJy01JzogICAnYnVmZmVyIGVycm9yJywgICAgICAgIC8qIFpfQlVGX0VSUk9SICAgICAoLTUpICovCiAgJy02JzogICAnaW5jb21wYXRpYmxlIHZlcnNpb24nIC8qIFpfVkVSU0lPTl9FUlJPUiAoLTYpICovCn07CgoKLyoqKi8gfSksCi8qIDE1NyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyCi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luCi8vCi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlcwovLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgovLwovLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSwKLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdAovLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6Ci8vCi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90Ci8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmUKLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmUKLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLgovLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZQovLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi4KCnZhciB1dGlscyAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNCk7CnZhciBhZGxlcjMyICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4OSk7CnZhciBjcmMzMiAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5MCk7CnZhciBpbmZsYXRlX2Zhc3QgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTgpOwp2YXIgaW5mbGF0ZV90YWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTU5KTsKCnZhciBDT0RFUyA9IDA7CnZhciBMRU5TID0gMTsKdmFyIERJU1RTID0gMjsKCi8qIFB1YmxpYyBjb25zdGFudHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCgoKLyogQWxsb3dlZCBmbHVzaCB2YWx1ZXM7IHNlZSBkZWZsYXRlKCkgYW5kIGluZmxhdGUoKSBiZWxvdyBmb3IgZGV0YWlscyAqLwovL3ZhciBaX05PX0ZMVVNIICAgICAgPSAwOwovL3ZhciBaX1BBUlRJQUxfRkxVU0ggPSAxOwovL3ZhciBaX1NZTkNfRkxVU0ggICAgPSAyOwovL3ZhciBaX0ZVTExfRkxVU0ggICAgPSAzOwp2YXIgWl9GSU5JU0ggICAgICAgID0gNDsKdmFyIFpfQkxPQ0sgICAgICAgICA9IDU7CnZhciBaX1RSRUVTICAgICAgICAgPSA2OwoKCi8qIFJldHVybiBjb2RlcyBmb3IgdGhlIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gZnVuY3Rpb25zLiBOZWdhdGl2ZSB2YWx1ZXMKICogYXJlIGVycm9ycywgcG9zaXRpdmUgdmFsdWVzIGFyZSB1c2VkIGZvciBzcGVjaWFsIGJ1dCBub3JtYWwgZXZlbnRzLgogKi8KdmFyIFpfT0sgICAgICAgICAgICA9IDA7CnZhciBaX1NUUkVBTV9FTkQgICAgPSAxOwp2YXIgWl9ORUVEX0RJQ1QgICAgID0gMjsKLy92YXIgWl9FUlJOTyAgICAgICAgID0gLTE7CnZhciBaX1NUUkVBTV9FUlJPUiAgPSAtMjsKdmFyIFpfREFUQV9FUlJPUiAgICA9IC0zOwp2YXIgWl9NRU1fRVJST1IgICAgID0gLTQ7CnZhciBaX0JVRl9FUlJPUiAgICAgPSAtNTsKLy92YXIgWl9WRVJTSU9OX0VSUk9SID0gLTY7CgovKiBUaGUgZGVmbGF0ZSBjb21wcmVzc2lvbiBtZXRob2QgKi8KdmFyIFpfREVGTEFURUQgID0gODsKCgovKiBTVEFURVMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwoKCnZhciAgICBIRUFEID0gMTsgICAgICAgLyogaTogd2FpdGluZyBmb3IgbWFnaWMgaGVhZGVyICovCnZhciAgICBGTEFHUyA9IDI7ICAgICAgLyogaTogd2FpdGluZyBmb3IgbWV0aG9kIGFuZCBmbGFncyAoZ3ppcCkgKi8KdmFyICAgIFRJTUUgPSAzOyAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBtb2RpZmljYXRpb24gdGltZSAoZ3ppcCkgKi8KdmFyICAgIE9TID0gNDsgICAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBleHRyYSBmbGFncyBhbmQgb3BlcmF0aW5nIHN5c3RlbSAoZ3ppcCkgKi8KdmFyICAgIEVYTEVOID0gNTsgICAgICAvKiBpOiB3YWl0aW5nIGZvciBleHRyYSBsZW5ndGggKGd6aXApICovCnZhciAgICBFWFRSQSA9IDY7ICAgICAgLyogaTogd2FpdGluZyBmb3IgZXh0cmEgYnl0ZXMgKGd6aXApICovCnZhciAgICBOQU1FID0gNzsgICAgICAgLyogaTogd2FpdGluZyBmb3IgZW5kIG9mIGZpbGUgbmFtZSAoZ3ppcCkgKi8KdmFyICAgIENPTU1FTlQgPSA4OyAgICAvKiBpOiB3YWl0aW5nIGZvciBlbmQgb2YgY29tbWVudCAoZ3ppcCkgKi8KdmFyICAgIEhDUkMgPSA5OyAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBoZWFkZXIgY3JjIChnemlwKSAqLwp2YXIgICAgRElDVElEID0gMTA7ICAgIC8qIGk6IHdhaXRpbmcgZm9yIGRpY3Rpb25hcnkgY2hlY2sgdmFsdWUgKi8KdmFyICAgIERJQ1QgPSAxMTsgICAgICAvKiB3YWl0aW5nIGZvciBpbmZsYXRlU2V0RGljdGlvbmFyeSgpIGNhbGwgKi8KdmFyICAgICAgICBUWVBFID0gMTI7ICAgICAgLyogaTogd2FpdGluZyBmb3IgdHlwZSBiaXRzLCBpbmNsdWRpbmcgbGFzdC1mbGFnIGJpdCAqLwp2YXIgICAgICAgIFRZUEVETyA9IDEzOyAgICAvKiBpOiBzYW1lLCBidXQgc2tpcCBjaGVjayB0byBleGl0IGluZmxhdGUgb24gbmV3IGJsb2NrICovCnZhciAgICAgICAgU1RPUkVEID0gMTQ7ICAgIC8qIGk6IHdhaXRpbmcgZm9yIHN0b3JlZCBzaXplIChsZW5ndGggYW5kIGNvbXBsZW1lbnQpICovCnZhciAgICAgICAgQ09QWV8gPSAxNTsgICAgIC8qIGkvbzogc2FtZSBhcyBDT1BZIGJlbG93LCBidXQgb25seSBmaXJzdCB0aW1lIGluICovCnZhciAgICAgICAgQ09QWSA9IDE2OyAgICAgIC8qIGkvbzogd2FpdGluZyBmb3IgaW5wdXQgb3Igb3V0cHV0IHRvIGNvcHkgc3RvcmVkIGJsb2NrICovCnZhciAgICAgICAgVEFCTEUgPSAxNzsgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGR5bmFtaWMgYmxvY2sgdGFibGUgbGVuZ3RocyAqLwp2YXIgICAgICAgIExFTkxFTlMgPSAxODsgICAvKiBpOiB3YWl0aW5nIGZvciBjb2RlIGxlbmd0aCBjb2RlIGxlbmd0aHMgKi8KdmFyICAgICAgICBDT0RFTEVOUyA9IDE5OyAgLyogaTogd2FpdGluZyBmb3IgbGVuZ3RoL2xpdCBhbmQgZGlzdGFuY2UgY29kZSBsZW5ndGhzICovCnZhciAgICAgICAgICAgIExFTl8gPSAyMDsgICAgICAvKiBpOiBzYW1lIGFzIExFTiBiZWxvdywgYnV0IG9ubHkgZmlyc3QgdGltZSBpbiAqLwp2YXIgICAgICAgICAgICBMRU4gPSAyMTsgICAgICAgLyogaTogd2FpdGluZyBmb3IgbGVuZ3RoL2xpdC9lb2IgY29kZSAqLwp2YXIgICAgICAgICAgICBMRU5FWFQgPSAyMjsgICAgLyogaTogd2FpdGluZyBmb3IgbGVuZ3RoIGV4dHJhIGJpdHMgKi8KdmFyICAgICAgICAgICAgRElTVCA9IDIzOyAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGRpc3RhbmNlIGNvZGUgKi8KdmFyICAgICAgICAgICAgRElTVEVYVCA9IDI0OyAgIC8qIGk6IHdhaXRpbmcgZm9yIGRpc3RhbmNlIGV4dHJhIGJpdHMgKi8KdmFyICAgICAgICAgICAgTUFUQ0ggPSAyNTsgICAgIC8qIG86IHdhaXRpbmcgZm9yIG91dHB1dCBzcGFjZSB0byBjb3B5IHN0cmluZyAqLwp2YXIgICAgICAgICAgICBMSVQgPSAyNjsgICAgICAgLyogbzogd2FpdGluZyBmb3Igb3V0cHV0IHNwYWNlIHRvIHdyaXRlIGxpdGVyYWwgKi8KdmFyICAgIENIRUNLID0gMjc7ICAgICAvKiBpOiB3YWl0aW5nIGZvciAzMi1iaXQgY2hlY2sgdmFsdWUgKi8KdmFyICAgIExFTkdUSCA9IDI4OyAgICAvKiBpOiB3YWl0aW5nIGZvciAzMi1iaXQgbGVuZ3RoIChnemlwKSAqLwp2YXIgICAgRE9ORSA9IDI5OyAgICAgIC8qIGZpbmlzaGVkIGNoZWNrLCBkb25lIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovCnZhciAgICBCQUQgPSAzMDsgICAgICAgLyogZ290IGEgZGF0YSBlcnJvciAtLSByZW1haW4gaGVyZSB1bnRpbCByZXNldCAqLwp2YXIgICAgTUVNID0gMzE7ICAgICAgIC8qIGdvdCBhbiBpbmZsYXRlKCkgbWVtb3J5IGVycm9yIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovCnZhciAgICBTWU5DID0gMzI7ICAgICAgLyogbG9va2luZyBmb3Igc3luY2hyb25pemF0aW9uIGJ5dGVzIHRvIHJlc3RhcnQgaW5mbGF0ZSgpICovCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwoKCgp2YXIgRU5PVUdIX0xFTlMgPSA4NTI7CnZhciBFTk9VR0hfRElTVFMgPSA1OTI7Ci8vdmFyIEVOT1VHSCA9ICAoRU5PVUdIX0xFTlMrRU5PVUdIX0RJU1RTKTsKCnZhciBNQVhfV0JJVFMgPSAxNTsKLyogMzJLIExaNzcgd2luZG93ICovCnZhciBERUZfV0JJVFMgPSBNQVhfV0JJVFM7CgoKZnVuY3Rpb24genN3YXAzMihxKSB7CiAgcmV0dXJuICAoKChxID4+PiAyNCkgJiAweGZmKSArCiAgICAgICAgICAoKHEgPj4+IDgpICYgMHhmZjAwKSArCiAgICAgICAgICAoKHEgJiAweGZmMDApIDw8IDgpICsKICAgICAgICAgICgocSAmIDB4ZmYpIDw8IDI0KSk7Cn0KCgpmdW5jdGlvbiBJbmZsYXRlU3RhdGUoKSB7CiAgdGhpcy5tb2RlID0gMDsgICAgICAgICAgICAgLyogY3VycmVudCBpbmZsYXRlIG1vZGUgKi8KICB0aGlzLmxhc3QgPSBmYWxzZTsgICAgICAgICAgLyogdHJ1ZSBpZiBwcm9jZXNzaW5nIGxhc3QgYmxvY2sgKi8KICB0aGlzLndyYXAgPSAwOyAgICAgICAgICAgICAgLyogYml0IDAgdHJ1ZSBmb3IgemxpYiwgYml0IDEgdHJ1ZSBmb3IgZ3ppcCAqLwogIHRoaXMuaGF2ZWRpY3QgPSBmYWxzZTsgICAgICAvKiB0cnVlIGlmIGRpY3Rpb25hcnkgcHJvdmlkZWQgKi8KICB0aGlzLmZsYWdzID0gMDsgICAgICAgICAgICAgLyogZ3ppcCBoZWFkZXIgbWV0aG9kIGFuZCBmbGFncyAoMCBpZiB6bGliKSAqLwogIHRoaXMuZG1heCA9IDA7ICAgICAgICAgICAgICAvKiB6bGliIGhlYWRlciBtYXggZGlzdGFuY2UgKElORkxBVEVfU1RSSUNUKSAqLwogIHRoaXMuY2hlY2sgPSAwOyAgICAgICAgICAgICAvKiBwcm90ZWN0ZWQgY29weSBvZiBjaGVjayB2YWx1ZSAqLwogIHRoaXMudG90YWwgPSAwOyAgICAgICAgICAgICAvKiBwcm90ZWN0ZWQgY29weSBvZiBvdXRwdXQgY291bnQgKi8KICAvLyBUT0RPOiBtYXkgYmUge30KICB0aGlzLmhlYWQgPSBudWxsOyAgICAgICAgICAgLyogd2hlcmUgdG8gc2F2ZSBnemlwIGhlYWRlciBpbmZvcm1hdGlvbiAqLwoKICAvKiBzbGlkaW5nIHdpbmRvdyAqLwogIHRoaXMud2JpdHMgPSAwOyAgICAgICAgICAgICAvKiBsb2cgYmFzZSAyIG9mIHJlcXVlc3RlZCB3aW5kb3cgc2l6ZSAqLwogIHRoaXMud3NpemUgPSAwOyAgICAgICAgICAgICAvKiB3aW5kb3cgc2l6ZSBvciB6ZXJvIGlmIG5vdCB1c2luZyB3aW5kb3cgKi8KICB0aGlzLndoYXZlID0gMDsgICAgICAgICAgICAgLyogdmFsaWQgYnl0ZXMgaW4gdGhlIHdpbmRvdyAqLwogIHRoaXMud25leHQgPSAwOyAgICAgICAgICAgICAvKiB3aW5kb3cgd3JpdGUgaW5kZXggKi8KICB0aGlzLndpbmRvdyA9IG51bGw7ICAgICAgICAgLyogYWxsb2NhdGVkIHNsaWRpbmcgd2luZG93LCBpZiBuZWVkZWQgKi8KCiAgLyogYml0IGFjY3VtdWxhdG9yICovCiAgdGhpcy5ob2xkID0gMDsgICAgICAgICAgICAgIC8qIGlucHV0IGJpdCBhY2N1bXVsYXRvciAqLwogIHRoaXMuYml0cyA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgYml0cyBpbiAiaW4iICovCgogIC8qIGZvciBzdHJpbmcgYW5kIHN0b3JlZCBibG9jayBjb3B5aW5nICovCiAgdGhpcy5sZW5ndGggPSAwOyAgICAgICAgICAgIC8qIGxpdGVyYWwgb3IgbGVuZ3RoIG9mIGRhdGEgdG8gY29weSAqLwogIHRoaXMub2Zmc2V0ID0gMDsgICAgICAgICAgICAvKiBkaXN0YW5jZSBiYWNrIHRvIGNvcHkgc3RyaW5nIGZyb20gKi8KCiAgLyogZm9yIHRhYmxlIGFuZCBjb2RlIGRlY29kaW5nICovCiAgdGhpcy5leHRyYSA9IDA7ICAgICAgICAgICAgIC8qIGV4dHJhIGJpdHMgbmVlZGVkICovCgogIC8qIGZpeGVkIGFuZCBkeW5hbWljIGNvZGUgdGFibGVzICovCiAgdGhpcy5sZW5jb2RlID0gbnVsbDsgICAgICAgICAgLyogc3RhcnRpbmcgdGFibGUgZm9yIGxlbmd0aC9saXRlcmFsIGNvZGVzICovCiAgdGhpcy5kaXN0Y29kZSA9IG51bGw7ICAgICAgICAgLyogc3RhcnRpbmcgdGFibGUgZm9yIGRpc3RhbmNlIGNvZGVzICovCiAgdGhpcy5sZW5iaXRzID0gMDsgICAgICAgICAgIC8qIGluZGV4IGJpdHMgZm9yIGxlbmNvZGUgKi8KICB0aGlzLmRpc3RiaXRzID0gMDsgICAgICAgICAgLyogaW5kZXggYml0cyBmb3IgZGlzdGNvZGUgKi8KCiAgLyogZHluYW1pYyB0YWJsZSBidWlsZGluZyAqLwogIHRoaXMubmNvZGUgPSAwOyAgICAgICAgICAgICAvKiBudW1iZXIgb2YgY29kZSBsZW5ndGggY29kZSBsZW5ndGhzICovCiAgdGhpcy5ubGVuID0gMDsgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBsZW5ndGggY29kZSBsZW5ndGhzICovCiAgdGhpcy5uZGlzdCA9IDA7ICAgICAgICAgICAgIC8qIG51bWJlciBvZiBkaXN0YW5jZSBjb2RlIGxlbmd0aHMgKi8KICB0aGlzLmhhdmUgPSAwOyAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGNvZGUgbGVuZ3RocyBpbiBsZW5zW10gKi8KICB0aGlzLm5leHQgPSBudWxsOyAgICAgICAgICAgICAgLyogbmV4dCBhdmFpbGFibGUgc3BhY2UgaW4gY29kZXNbXSAqLwoKICB0aGlzLmxlbnMgPSBuZXcgdXRpbHMuQnVmMTYoMzIwKTsgLyogdGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIGNvZGUgbGVuZ3RocyAqLwogIHRoaXMud29yayA9IG5ldyB1dGlscy5CdWYxNigyODgpOyAvKiB3b3JrIGFyZWEgZm9yIGNvZGUgdGFibGUgYnVpbGRpbmcgKi8KCiAgLyoKICAgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIHBvaW50ZXJzIGluIGpzLCB3ZSB1c2UgbGVuY29kZSBhbmQgZGlzdGNvZGUgZGlyZWN0bHkKICAgYXMgYnVmZmVycyBzbyB3ZSBkb24ndCBuZWVkIGNvZGVzCiAgKi8KICAvL3RoaXMuY29kZXMgPSBuZXcgdXRpbHMuQnVmMzIoRU5PVUdIKTsgICAgICAgLyogc3BhY2UgZm9yIGNvZGUgdGFibGVzICovCiAgdGhpcy5sZW5keW4gPSBudWxsOyAgICAgICAgICAgICAgLyogZHluYW1pYyB0YWJsZSBmb3IgbGVuZ3RoL2xpdGVyYWwgY29kZXMgKEpTIHNwZWNpZmljKSAqLwogIHRoaXMuZGlzdGR5biA9IG51bGw7ICAgICAgICAgICAgIC8qIGR5bmFtaWMgdGFibGUgZm9yIGRpc3RhbmNlIGNvZGVzIChKUyBzcGVjaWZpYykgKi8KICB0aGlzLnNhbmUgPSAwOyAgICAgICAgICAgICAgICAgICAvKiBpZiBmYWxzZSwgYWxsb3cgaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyICovCiAgdGhpcy5iYWNrID0gMDsgICAgICAgICAgICAgICAgICAgLyogYml0cyBiYWNrIG9mIGxhc3QgdW5wcm9jZXNzZWQgbGVuZ3RoL2xpdCAqLwogIHRoaXMud2FzID0gMDsgICAgICAgICAgICAgICAgICAgIC8qIGluaXRpYWwgbGVuZ3RoIG9mIG1hdGNoICovCn0KCmZ1bmN0aW9uIGluZmxhdGVSZXNldEtlZXAoc3RybSkgewogIHZhciBzdGF0ZTsKCiAgaWYgKCFzdHJtIHx8ICFzdHJtLnN0YXRlKSB7IHJldHVybiBaX1NUUkVBTV9FUlJPUjsgfQogIHN0YXRlID0gc3RybS5zdGF0ZTsKICBzdHJtLnRvdGFsX2luID0gc3RybS50b3RhbF9vdXQgPSBzdGF0ZS50b3RhbCA9IDA7CiAgc3RybS5tc2cgPSAnJzsgLypaX05VTEwqLwogIGlmIChzdGF0ZS53cmFwKSB7ICAgICAgIC8qIHRvIHN1cHBvcnQgaWxsLWNvbmNlaXZlZCBKYXZhIHRlc3Qgc3VpdGUgKi8KICAgIHN0cm0uYWRsZXIgPSBzdGF0ZS53cmFwICYgMTsKICB9CiAgc3RhdGUubW9kZSA9IEhFQUQ7CiAgc3RhdGUubGFzdCA9IDA7CiAgc3RhdGUuaGF2ZWRpY3QgPSAwOwogIHN0YXRlLmRtYXggPSAzMjc2ODsKICBzdGF0ZS5oZWFkID0gbnVsbC8qWl9OVUxMKi87CiAgc3RhdGUuaG9sZCA9IDA7CiAgc3RhdGUuYml0cyA9IDA7CiAgLy9zdGF0ZS5sZW5jb2RlID0gc3RhdGUuZGlzdGNvZGUgPSBzdGF0ZS5uZXh0ID0gc3RhdGUuY29kZXM7CiAgc3RhdGUubGVuY29kZSA9IHN0YXRlLmxlbmR5biA9IG5ldyB1dGlscy5CdWYzMihFTk9VR0hfTEVOUyk7CiAgc3RhdGUuZGlzdGNvZGUgPSBzdGF0ZS5kaXN0ZHluID0gbmV3IHV0aWxzLkJ1ZjMyKEVOT1VHSF9ESVNUUyk7CgogIHN0YXRlLnNhbmUgPSAxOwogIHN0YXRlLmJhY2sgPSAtMTsKICAvL1RyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogcmVzZXRcbiIpKTsKICByZXR1cm4gWl9PSzsKfQoKZnVuY3Rpb24gaW5mbGF0ZVJlc2V0KHN0cm0pIHsKICB2YXIgc3RhdGU7CgogIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH0KICBzdGF0ZSA9IHN0cm0uc3RhdGU7CiAgc3RhdGUud3NpemUgPSAwOwogIHN0YXRlLndoYXZlID0gMDsKICBzdGF0ZS53bmV4dCA9IDA7CiAgcmV0dXJuIGluZmxhdGVSZXNldEtlZXAoc3RybSk7Cgp9CgpmdW5jdGlvbiBpbmZsYXRlUmVzZXQyKHN0cm0sIHdpbmRvd0JpdHMpIHsKICB2YXIgd3JhcDsKICB2YXIgc3RhdGU7CgogIC8qIGdldCB0aGUgc3RhdGUgKi8KICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUpIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9CiAgc3RhdGUgPSBzdHJtLnN0YXRlOwoKICAvKiBleHRyYWN0IHdyYXAgcmVxdWVzdCBmcm9tIHdpbmRvd0JpdHMgcGFyYW1ldGVyICovCiAgaWYgKHdpbmRvd0JpdHMgPCAwKSB7CiAgICB3cmFwID0gMDsKICAgIHdpbmRvd0JpdHMgPSAtd2luZG93Qml0czsKICB9CiAgZWxzZSB7CiAgICB3cmFwID0gKHdpbmRvd0JpdHMgPj4gNCkgKyAxOwogICAgaWYgKHdpbmRvd0JpdHMgPCA0OCkgewogICAgICB3aW5kb3dCaXRzICY9IDE1OwogICAgfQogIH0KCiAgLyogc2V0IG51bWJlciBvZiB3aW5kb3cgYml0cywgZnJlZSB3aW5kb3cgaWYgZGlmZmVyZW50ICovCiAgaWYgKHdpbmRvd0JpdHMgJiYgKHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSkpIHsKICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKICB9CiAgaWYgKHN0YXRlLndpbmRvdyAhPT0gbnVsbCAmJiBzdGF0ZS53Yml0cyAhPT0gd2luZG93Qml0cykgewogICAgc3RhdGUud2luZG93ID0gbnVsbDsKICB9CgogIC8qIHVwZGF0ZSBzdGF0ZSBhbmQgcmVzZXQgdGhlIHJlc3Qgb2YgaXQgKi8KICBzdGF0ZS53cmFwID0gd3JhcDsKICBzdGF0ZS53Yml0cyA9IHdpbmRvd0JpdHM7CiAgcmV0dXJuIGluZmxhdGVSZXNldChzdHJtKTsKfQoKZnVuY3Rpb24gaW5mbGF0ZUluaXQyKHN0cm0sIHdpbmRvd0JpdHMpIHsKICB2YXIgcmV0OwogIHZhciBzdGF0ZTsKCiAgaWYgKCFzdHJtKSB7IHJldHVybiBaX1NUUkVBTV9FUlJPUjsgfQogIC8vc3RybS5tc2cgPSBaX05VTEw7ICAgICAgICAgICAgICAgICAvKiBpbiBjYXNlIHdlIHJldHVybiBhbiBlcnJvciAqLwoKICBzdGF0ZSA9IG5ldyBJbmZsYXRlU3RhdGUoKTsKCiAgLy9pZiAoc3RhdGUgPT09IFpfTlVMTCkgcmV0dXJuIFpfTUVNX0VSUk9SOwogIC8vVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiBhbGxvY2F0ZWRcbiIpKTsKICBzdHJtLnN0YXRlID0gc3RhdGU7CiAgc3RhdGUud2luZG93ID0gbnVsbC8qWl9OVUxMKi87CiAgcmV0ID0gaW5mbGF0ZVJlc2V0MihzdHJtLCB3aW5kb3dCaXRzKTsKICBpZiAocmV0ICE9PSBaX09LKSB7CiAgICBzdHJtLnN0YXRlID0gbnVsbC8qWl9OVUxMKi87CiAgfQogIHJldHVybiByZXQ7Cn0KCmZ1bmN0aW9uIGluZmxhdGVJbml0KHN0cm0pIHsKICByZXR1cm4gaW5mbGF0ZUluaXQyKHN0cm0sIERFRl9XQklUUyk7Cn0KCgovKgogUmV0dXJuIHN0YXRlIHdpdGggbGVuZ3RoIGFuZCBkaXN0YW5jZSBkZWNvZGluZyB0YWJsZXMgYW5kIGluZGV4IHNpemVzIHNldCB0bwogZml4ZWQgY29kZSBkZWNvZGluZy4gIE5vcm1hbGx5IHRoaXMgcmV0dXJucyBmaXhlZCB0YWJsZXMgZnJvbSBpbmZmaXhlZC5oLgogSWYgQlVJTERGSVhFRCBpcyBkZWZpbmVkLCB0aGVuIGluc3RlYWQgdGhpcyByb3V0aW5lIGJ1aWxkcyB0aGUgdGFibGVzIHRoZQogZmlyc3QgdGltZSBpdCdzIGNhbGxlZCwgYW5kIHJldHVybnMgdGhvc2UgdGFibGVzIHRoZSBmaXJzdCB0aW1lIGFuZAogdGhlcmVhZnRlci4gIFRoaXMgcmVkdWNlcyB0aGUgc2l6ZSBvZiB0aGUgY29kZSBieSBhYm91dCAySyBieXRlcywgaW4KIGV4Y2hhbmdlIGZvciBhIGxpdHRsZSBleGVjdXRpb24gdGltZS4gIEhvd2V2ZXIsIEJVSUxERklYRUQgc2hvdWxkIG5vdCBiZQogdXNlZCBmb3IgdGhyZWFkZWQgYXBwbGljYXRpb25zLCBzaW5jZSB0aGUgcmV3cml0aW5nIG9mIHRoZSB0YWJsZXMgYW5kIHZpcmdpbgogbWF5IG5vdCBiZSB0aHJlYWQtc2FmZS4KICovCnZhciB2aXJnaW4gPSB0cnVlOwoKdmFyIGxlbmZpeCwgZGlzdGZpeDsgLy8gV2UgaGF2ZSBubyBwb2ludGVycyBpbiBKUywgc28ga2VlcCB0YWJsZXMgc2VwYXJhdGUKCmZ1bmN0aW9uIGZpeGVkdGFibGVzKHN0YXRlKSB7CiAgLyogYnVpbGQgZml4ZWQgaHVmZm1hbiB0YWJsZXMgaWYgZmlyc3QgY2FsbCAobWF5IG5vdCBiZSB0aHJlYWQgc2FmZSkgKi8KICBpZiAodmlyZ2luKSB7CiAgICB2YXIgc3ltOwoKICAgIGxlbmZpeCA9IG5ldyB1dGlscy5CdWYzMig1MTIpOwogICAgZGlzdGZpeCA9IG5ldyB1dGlscy5CdWYzMigzMik7CgogICAgLyogbGl0ZXJhbC9sZW5ndGggdGFibGUgKi8KICAgIHN5bSA9IDA7CiAgICB3aGlsZSAoc3ltIDwgMTQ0KSB7IHN0YXRlLmxlbnNbc3ltKytdID0gODsgfQogICAgd2hpbGUgKHN5bSA8IDI1NikgeyBzdGF0ZS5sZW5zW3N5bSsrXSA9IDk7IH0KICAgIHdoaWxlIChzeW0gPCAyODApIHsgc3RhdGUubGVuc1tzeW0rK10gPSA3OyB9CiAgICB3aGlsZSAoc3ltIDwgMjg4KSB7IHN0YXRlLmxlbnNbc3ltKytdID0gODsgfQoKICAgIGluZmxhdGVfdGFibGUoTEVOUywgIHN0YXRlLmxlbnMsIDAsIDI4OCwgbGVuZml4LCAgIDAsIHN0YXRlLndvcmssIHsgYml0czogOSB9KTsKCiAgICAvKiBkaXN0YW5jZSB0YWJsZSAqLwogICAgc3ltID0gMDsKICAgIHdoaWxlIChzeW0gPCAzMikgeyBzdGF0ZS5sZW5zW3N5bSsrXSA9IDU7IH0KCiAgICBpbmZsYXRlX3RhYmxlKERJU1RTLCBzdGF0ZS5sZW5zLCAwLCAzMiwgICBkaXN0Zml4LCAwLCBzdGF0ZS53b3JrLCB7IGJpdHM6IDUgfSk7CgogICAgLyogZG8gdGhpcyBqdXN0IG9uY2UgKi8KICAgIHZpcmdpbiA9IGZhbHNlOwogIH0KCiAgc3RhdGUubGVuY29kZSA9IGxlbmZpeDsKICBzdGF0ZS5sZW5iaXRzID0gOTsKICBzdGF0ZS5kaXN0Y29kZSA9IGRpc3RmaXg7CiAgc3RhdGUuZGlzdGJpdHMgPSA1Owp9CgoKLyoKIFVwZGF0ZSB0aGUgd2luZG93IHdpdGggdGhlIGxhc3Qgd3NpemUgKG5vcm1hbGx5IDMySykgYnl0ZXMgd3JpdHRlbiBiZWZvcmUKIHJldHVybmluZy4gIElmIHdpbmRvdyBkb2VzIG5vdCBleGlzdCB5ZXQsIGNyZWF0ZSBpdC4gIFRoaXMgaXMgb25seSBjYWxsZWQKIHdoZW4gYSB3aW5kb3cgaXMgYWxyZWFkeSBpbiB1c2UsIG9yIHdoZW4gb3V0cHV0IGhhcyBiZWVuIHdyaXR0ZW4gZHVyaW5nIHRoaXMKIGluZmxhdGUgY2FsbCwgYnV0IHRoZSBlbmQgb2YgdGhlIGRlZmxhdGUgc3RyZWFtIGhhcyBub3QgYmVlbiByZWFjaGVkIHlldC4KIEl0IGlzIGFsc28gY2FsbGVkIHRvIGNyZWF0ZSBhIHdpbmRvdyBmb3IgZGljdGlvbmFyeSBkYXRhIHdoZW4gYSBkaWN0aW9uYXJ5CiBpcyBsb2FkZWQuCgogUHJvdmlkaW5nIG91dHB1dCBidWZmZXJzIGxhcmdlciB0aGFuIDMySyB0byBpbmZsYXRlKCkgc2hvdWxkIHByb3ZpZGUgYSBzcGVlZAogYWR2YW50YWdlLCBzaW5jZSBvbmx5IHRoZSBsYXN0IDMySyBvZiBvdXRwdXQgaXMgY29waWVkIHRvIHRoZSBzbGlkaW5nIHdpbmRvdwogdXBvbiByZXR1cm4gZnJvbSBpbmZsYXRlKCksIGFuZCBzaW5jZSBhbGwgZGlzdGFuY2VzIGFmdGVyIHRoZSBmaXJzdCAzMksgb2YKIG91dHB1dCB3aWxsIGZhbGwgaW4gdGhlIG91dHB1dCBkYXRhLCBtYWtpbmcgbWF0Y2ggY29waWVzIHNpbXBsZXIgYW5kIGZhc3Rlci4KIFRoZSBhZHZhbnRhZ2UgbWF5IGJlIGRlcGVuZGVudCBvbiB0aGUgc2l6ZSBvZiB0aGUgcHJvY2Vzc29yJ3MgZGF0YSBjYWNoZXMuCiAqLwpmdW5jdGlvbiB1cGRhdGV3aW5kb3coc3RybSwgc3JjLCBlbmQsIGNvcHkpIHsKICB2YXIgZGlzdDsKICB2YXIgc3RhdGUgPSBzdHJtLnN0YXRlOwoKICAvKiBpZiBpdCBoYXNuJ3QgYmVlbiBkb25lIGFscmVhZHksIGFsbG9jYXRlIHNwYWNlIGZvciB0aGUgd2luZG93ICovCiAgaWYgKHN0YXRlLndpbmRvdyA9PT0gbnVsbCkgewogICAgc3RhdGUud3NpemUgPSAxIDw8IHN0YXRlLndiaXRzOwogICAgc3RhdGUud25leHQgPSAwOwogICAgc3RhdGUud2hhdmUgPSAwOwoKICAgIHN0YXRlLndpbmRvdyA9IG5ldyB1dGlscy5CdWY4KHN0YXRlLndzaXplKTsKICB9CgogIC8qIGNvcHkgc3RhdGUtPndzaXplIG9yIGxlc3Mgb3V0cHV0IGJ5dGVzIGludG8gdGhlIGNpcmN1bGFyIHdpbmRvdyAqLwogIGlmIChjb3B5ID49IHN0YXRlLndzaXplKSB7CiAgICB1dGlscy5hcnJheVNldChzdGF0ZS53aW5kb3csIHNyYywgZW5kIC0gc3RhdGUud3NpemUsIHN0YXRlLndzaXplLCAwKTsKICAgIHN0YXRlLnduZXh0ID0gMDsKICAgIHN0YXRlLndoYXZlID0gc3RhdGUud3NpemU7CiAgfQogIGVsc2UgewogICAgZGlzdCA9IHN0YXRlLndzaXplIC0gc3RhdGUud25leHQ7CiAgICBpZiAoZGlzdCA+IGNvcHkpIHsKICAgICAgZGlzdCA9IGNvcHk7CiAgICB9CiAgICAvL3ptZW1jcHkoc3RhdGUtPndpbmRvdyArIHN0YXRlLT53bmV4dCwgZW5kIC0gY29weSwgZGlzdCk7CiAgICB1dGlscy5hcnJheVNldChzdGF0ZS53aW5kb3csIHNyYywgZW5kIC0gY29weSwgZGlzdCwgc3RhdGUud25leHQpOwogICAgY29weSAtPSBkaXN0OwogICAgaWYgKGNvcHkpIHsKICAgICAgLy96bWVtY3B5KHN0YXRlLT53aW5kb3csIGVuZCAtIGNvcHksIGNvcHkpOwogICAgICB1dGlscy5hcnJheVNldChzdGF0ZS53aW5kb3csIHNyYywgZW5kIC0gY29weSwgY29weSwgMCk7CiAgICAgIHN0YXRlLnduZXh0ID0gY29weTsKICAgICAgc3RhdGUud2hhdmUgPSBzdGF0ZS53c2l6ZTsKICAgIH0KICAgIGVsc2UgewogICAgICBzdGF0ZS53bmV4dCArPSBkaXN0OwogICAgICBpZiAoc3RhdGUud25leHQgPT09IHN0YXRlLndzaXplKSB7IHN0YXRlLnduZXh0ID0gMDsgfQogICAgICBpZiAoc3RhdGUud2hhdmUgPCBzdGF0ZS53c2l6ZSkgeyBzdGF0ZS53aGF2ZSArPSBkaXN0OyB9CiAgICB9CiAgfQogIHJldHVybiAwOwp9CgpmdW5jdGlvbiBpbmZsYXRlKHN0cm0sIGZsdXNoKSB7CiAgdmFyIHN0YXRlOwogIHZhciBpbnB1dCwgb3V0cHV0OyAgICAgICAgICAvLyBpbnB1dC9vdXRwdXQgYnVmZmVycwogIHZhciBuZXh0OyAgICAgICAgICAgICAgICAgICAvKiBuZXh0IGlucHV0IElOREVYICovCiAgdmFyIHB1dDsgICAgICAgICAgICAgICAgICAgIC8qIG5leHQgb3V0cHV0IElOREVYICovCiAgdmFyIGhhdmUsIGxlZnQ7ICAgICAgICAgICAgIC8qIGF2YWlsYWJsZSBpbnB1dCBhbmQgb3V0cHV0ICovCiAgdmFyIGhvbGQ7ICAgICAgICAgICAgICAgICAgIC8qIGJpdCBidWZmZXIgKi8KICB2YXIgYml0czsgICAgICAgICAgICAgICAgICAgLyogYml0cyBpbiBiaXQgYnVmZmVyICovCiAgdmFyIF9pbiwgX291dDsgICAgICAgICAgICAgIC8qIHNhdmUgc3RhcnRpbmcgYXZhaWxhYmxlIGlucHV0IGFuZCBvdXRwdXQgKi8KICB2YXIgY29weTsgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIHN0b3JlZCBvciBtYXRjaCBieXRlcyB0byBjb3B5ICovCiAgdmFyIGZyb207ICAgICAgICAgICAgICAgICAgIC8qIHdoZXJlIHRvIGNvcHkgbWF0Y2ggYnl0ZXMgZnJvbSAqLwogIHZhciBmcm9tX3NvdXJjZTsKICB2YXIgaGVyZSA9IDA7ICAgICAgICAgICAgICAgLyogY3VycmVudCBkZWNvZGluZyB0YWJsZSBlbnRyeSAqLwogIHZhciBoZXJlX2JpdHMsIGhlcmVfb3AsIGhlcmVfdmFsOyAvLyBwYWtlZCAiaGVyZSIgZGVub3JtYWxpemVkIChKUyBzcGVjaWZpYykKICAvL3ZhciBsYXN0OyAgICAgICAgICAgICAgICAgICAvKiBwYXJlbnQgdGFibGUgZW50cnkgKi8KICB2YXIgbGFzdF9iaXRzLCBsYXN0X29wLCBsYXN0X3ZhbDsgLy8gcGFrZWQgImxhc3QiIGRlbm9ybWFsaXplZCAoSlMgc3BlY2lmaWMpCiAgdmFyIGxlbjsgICAgICAgICAgICAgICAgICAgIC8qIGxlbmd0aCB0byBjb3B5IGZvciByZXBlYXRzLCBiaXRzIHRvIGRyb3AgKi8KICB2YXIgcmV0OyAgICAgICAgICAgICAgICAgICAgLyogcmV0dXJuIGNvZGUgKi8KICB2YXIgaGJ1ZiA9IG5ldyB1dGlscy5CdWY4KDQpOyAgICAvKiBidWZmZXIgZm9yIGd6aXAgaGVhZGVyIGNyYyBjYWxjdWxhdGlvbiAqLwogIHZhciBvcHRzOwoKICB2YXIgbjsgLy8gdGVtcG9yYXJ5IHZhciBmb3IgTkVFRF9CSVRTCgogIHZhciBvcmRlciA9IC8qIHBlcm11dGF0aW9uIG9mIGNvZGUgbGVuZ3RocyAqLwogICAgWyAxNiwgMTcsIDE4LCAwLCA4LCA3LCA5LCA2LCAxMCwgNSwgMTEsIDQsIDEyLCAzLCAxMywgMiwgMTQsIDEsIDE1IF07CgoKICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUgfHwgIXN0cm0ub3V0cHV0IHx8CiAgICAgICghc3RybS5pbnB1dCAmJiBzdHJtLmF2YWlsX2luICE9PSAwKSkgewogICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwogIH0KCiAgc3RhdGUgPSBzdHJtLnN0YXRlOwogIGlmIChzdGF0ZS5tb2RlID09PSBUWVBFKSB7IHN0YXRlLm1vZGUgPSBUWVBFRE87IH0gICAgLyogc2tpcCBjaGVjayAqLwoKCiAgLy8tLS0gTE9BRCgpIC0tLQogIHB1dCA9IHN0cm0ubmV4dF9vdXQ7CiAgb3V0cHV0ID0gc3RybS5vdXRwdXQ7CiAgbGVmdCA9IHN0cm0uYXZhaWxfb3V0OwogIG5leHQgPSBzdHJtLm5leHRfaW47CiAgaW5wdXQgPSBzdHJtLmlucHV0OwogIGhhdmUgPSBzdHJtLmF2YWlsX2luOwogIGhvbGQgPSBzdGF0ZS5ob2xkOwogIGJpdHMgPSBzdGF0ZS5iaXRzOwogIC8vLS0tCgogIF9pbiA9IGhhdmU7CiAgX291dCA9IGxlZnQ7CiAgcmV0ID0gWl9PSzsKCiAgaW5mX2xlYXZlOiAvLyBnb3RvIGVtdWxhdGlvbgogIGZvciAoOzspIHsKICAgIHN3aXRjaCAoc3RhdGUubW9kZSkgewogICAgICBjYXNlIEhFQUQ6CiAgICAgICAgaWYgKHN0YXRlLndyYXAgPT09IDApIHsKICAgICAgICAgIHN0YXRlLm1vZGUgPSBUWVBFRE87CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgLy89PT0gTkVFREJJVFMoMTYpOwogICAgICAgIHdoaWxlIChiaXRzIDwgMTYpIHsKICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgICAgaGF2ZS0tOwogICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7CiAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgfQogICAgICAgIC8vPT09Ly8KICAgICAgICBpZiAoKHN0YXRlLndyYXAgJiAyKSAmJiBob2xkID09PSAweDhiMWYpIHsgIC8qIGd6aXAgaGVhZGVyICovCiAgICAgICAgICBzdGF0ZS5jaGVjayA9IDAvKmNyYzMyKDBMLCBaX05VTEwsIDApKi87CiAgICAgICAgICAvLz09PSBDUkMyKHN0YXRlLmNoZWNrLCBob2xkKTsKICAgICAgICAgIGhidWZbMF0gPSBob2xkICYgMHhmZjsKICAgICAgICAgIGhidWZbMV0gPSAoaG9sZCA+Pj4gOCkgJiAweGZmOwogICAgICAgICAgc3RhdGUuY2hlY2sgPSBjcmMzMihzdGF0ZS5jaGVjaywgaGJ1ZiwgMiwgMCk7CiAgICAgICAgICAvLz09PS8vCgogICAgICAgICAgLy89PT0gSU5JVEJJVFMoKTsKICAgICAgICAgIGhvbGQgPSAwOwogICAgICAgICAgYml0cyA9IDA7CiAgICAgICAgICAvLz09PS8vCiAgICAgICAgICBzdGF0ZS5tb2RlID0gRkxBR1M7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgc3RhdGUuZmxhZ3MgPSAwOyAgICAgICAgICAgLyogZXhwZWN0IHpsaWIgaGVhZGVyICovCiAgICAgICAgaWYgKHN0YXRlLmhlYWQpIHsKICAgICAgICAgIHN0YXRlLmhlYWQuZG9uZSA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAoIShzdGF0ZS53cmFwICYgMSkgfHwgICAvKiBjaGVjayBpZiB6bGliIGhlYWRlciBhbGxvd2VkICovCiAgICAgICAgICAoKChob2xkICYgMHhmZikvKkJJVFMoOCkqLyA8PCA4KSArIChob2xkID4+IDgpKSAlIDMxKSB7CiAgICAgICAgICBzdHJtLm1zZyA9ICdpbmNvcnJlY3QgaGVhZGVyIGNoZWNrJzsKICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYgKChob2xkICYgMHgwZikvKkJJVFMoNCkqLyAhPT0gWl9ERUZMQVRFRCkgewogICAgICAgICAgc3RybS5tc2cgPSAndW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QnOwogICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICAvLy0tLSBEUk9QQklUUyg0KSAtLS0vLwogICAgICAgIGhvbGQgPj4+PSA0OwogICAgICAgIGJpdHMgLT0gNDsKICAgICAgICAvLy0tLS8vCiAgICAgICAgbGVuID0gKGhvbGQgJiAweDBmKS8qQklUUyg0KSovICsgODsKICAgICAgICBpZiAoc3RhdGUud2JpdHMgPT09IDApIHsKICAgICAgICAgIHN0YXRlLndiaXRzID0gbGVuOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChsZW4gPiBzdGF0ZS53Yml0cykgewogICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCB3aW5kb3cgc2l6ZSc7CiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHN0YXRlLmRtYXggPSAxIDw8IGxlbjsKICAgICAgICAvL1RyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICB6bGliIGhlYWRlciBva1xuIikpOwogICAgICAgIHN0cm0uYWRsZXIgPSBzdGF0ZS5jaGVjayA9IDEvKmFkbGVyMzIoMEwsIFpfTlVMTCwgMCkqLzsKICAgICAgICBzdGF0ZS5tb2RlID0gaG9sZCAmIDB4MjAwID8gRElDVElEIDogVFlQRTsKICAgICAgICAvLz09PSBJTklUQklUUygpOwogICAgICAgIGhvbGQgPSAwOwogICAgICAgIGJpdHMgPSAwOwogICAgICAgIC8vPT09Ly8KICAgICAgICBicmVhazsKICAgICAgY2FzZSBGTEFHUzoKICAgICAgICAvLz09PSBORUVEQklUUygxNik7ICovCiAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikgewogICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICBoYXZlLS07CiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0czsKICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICB9CiAgICAgICAgLy89PT0vLwogICAgICAgIHN0YXRlLmZsYWdzID0gaG9sZDsKICAgICAgICBpZiAoKHN0YXRlLmZsYWdzICYgMHhmZikgIT09IFpfREVGTEFURUQpIHsKICAgICAgICAgIHN0cm0ubXNnID0gJ3Vua25vd24gY29tcHJlc3Npb24gbWV0aG9kJzsKICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHhlMDAwKSB7CiAgICAgICAgICBzdHJtLm1zZyA9ICd1bmtub3duIGhlYWRlciBmbGFncyBzZXQnOwogICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpZiAoc3RhdGUuaGVhZCkgewogICAgICAgICAgc3RhdGUuaGVhZC50ZXh0ID0gKChob2xkID4+IDgpICYgMSk7CiAgICAgICAgfQogICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkgewogICAgICAgICAgLy89PT0gQ1JDMihzdGF0ZS5jaGVjaywgaG9sZCk7CiAgICAgICAgICBoYnVmWzBdID0gaG9sZCAmIDB4ZmY7CiAgICAgICAgICBoYnVmWzFdID0gKGhvbGQgPj4+IDgpICYgMHhmZjsKICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGhidWYsIDIsIDApOwogICAgICAgICAgLy89PT0vLwogICAgICAgIH0KICAgICAgICAvLz09PSBJTklUQklUUygpOwogICAgICAgIGhvbGQgPSAwOwogICAgICAgIGJpdHMgPSAwOwogICAgICAgIC8vPT09Ly8KICAgICAgICBzdGF0ZS5tb2RlID0gVElNRTsKICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgIGNhc2UgVElNRToKICAgICAgICAvLz09PSBORUVEQklUUygzMik7ICovCiAgICAgICAgd2hpbGUgKGJpdHMgPCAzMikgewogICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICBoYXZlLS07CiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0czsKICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICB9CiAgICAgICAgLy89PT0vLwogICAgICAgIGlmIChzdGF0ZS5oZWFkKSB7CiAgICAgICAgICBzdGF0ZS5oZWFkLnRpbWUgPSBob2xkOwogICAgICAgIH0KICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHsKICAgICAgICAgIC8vPT09IENSQzQoc3RhdGUuY2hlY2ssIGhvbGQpCiAgICAgICAgICBoYnVmWzBdID0gaG9sZCAmIDB4ZmY7CiAgICAgICAgICBoYnVmWzFdID0gKGhvbGQgPj4+IDgpICYgMHhmZjsKICAgICAgICAgIGhidWZbMl0gPSAoaG9sZCA+Pj4gMTYpICYgMHhmZjsKICAgICAgICAgIGhidWZbM10gPSAoaG9sZCA+Pj4gMjQpICYgMHhmZjsKICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGhidWYsIDQsIDApOwogICAgICAgICAgLy89PT0KICAgICAgICB9CiAgICAgICAgLy89PT0gSU5JVEJJVFMoKTsKICAgICAgICBob2xkID0gMDsKICAgICAgICBiaXRzID0gMDsKICAgICAgICAvLz09PS8vCiAgICAgICAgc3RhdGUubW9kZSA9IE9TOwogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBPUzoKICAgICAgICAvLz09PSBORUVEQklUUygxNik7ICovCiAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikgewogICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICBoYXZlLS07CiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0czsKICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICB9CiAgICAgICAgLy89PT0vLwogICAgICAgIGlmIChzdGF0ZS5oZWFkKSB7CiAgICAgICAgICBzdGF0ZS5oZWFkLnhmbGFncyA9IChob2xkICYgMHhmZik7CiAgICAgICAgICBzdGF0ZS5oZWFkLm9zID0gKGhvbGQgPj4gOCk7CiAgICAgICAgfQogICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkgewogICAgICAgICAgLy89PT0gQ1JDMihzdGF0ZS5jaGVjaywgaG9sZCk7CiAgICAgICAgICBoYnVmWzBdID0gaG9sZCAmIDB4ZmY7CiAgICAgICAgICBoYnVmWzFdID0gKGhvbGQgPj4+IDgpICYgMHhmZjsKICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGhidWYsIDIsIDApOwogICAgICAgICAgLy89PT0vLwogICAgICAgIH0KICAgICAgICAvLz09PSBJTklUQklUUygpOwogICAgICAgIGhvbGQgPSAwOwogICAgICAgIGJpdHMgPSAwOwogICAgICAgIC8vPT09Ly8KICAgICAgICBzdGF0ZS5tb2RlID0gRVhMRU47CiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqLwogICAgICBjYXNlIEVYTEVOOgogICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDQwMCkgewogICAgICAgICAgLy89PT0gTkVFREJJVFMoMTYpOyAqLwogICAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikgewogICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH0KICAgICAgICAgICAgaGF2ZS0tOwogICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0czsKICAgICAgICAgICAgYml0cyArPSA4OwogICAgICAgICAgfQogICAgICAgICAgLy89PT0vLwogICAgICAgICAgc3RhdGUubGVuZ3RoID0gaG9sZDsKICAgICAgICAgIGlmIChzdGF0ZS5oZWFkKSB7CiAgICAgICAgICAgIHN0YXRlLmhlYWQuZXh0cmFfbGVuID0gaG9sZDsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkgewogICAgICAgICAgICAvLz09PSBDUkMyKHN0YXRlLmNoZWNrLCBob2xkKTsKICAgICAgICAgICAgaGJ1ZlswXSA9IGhvbGQgJiAweGZmOwogICAgICAgICAgICBoYnVmWzFdID0gKGhvbGQgPj4+IDgpICYgMHhmZjsKICAgICAgICAgICAgc3RhdGUuY2hlY2sgPSBjcmMzMihzdGF0ZS5jaGVjaywgaGJ1ZiwgMiwgMCk7CiAgICAgICAgICAgIC8vPT09Ly8KICAgICAgICAgIH0KICAgICAgICAgIC8vPT09IElOSVRCSVRTKCk7CiAgICAgICAgICBob2xkID0gMDsKICAgICAgICAgIGJpdHMgPSAwOwogICAgICAgICAgLy89PT0vLwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChzdGF0ZS5oZWFkKSB7CiAgICAgICAgICBzdGF0ZS5oZWFkLmV4dHJhID0gbnVsbC8qWl9OVUxMKi87CiAgICAgICAgfQogICAgICAgIHN0YXRlLm1vZGUgPSBFWFRSQTsKICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgIGNhc2UgRVhUUkE6CiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwNDAwKSB7CiAgICAgICAgICBjb3B5ID0gc3RhdGUubGVuZ3RoOwogICAgICAgICAgaWYgKGNvcHkgPiBoYXZlKSB7IGNvcHkgPSBoYXZlOyB9CiAgICAgICAgICBpZiAoY29weSkgewogICAgICAgICAgICBpZiAoc3RhdGUuaGVhZCkgewogICAgICAgICAgICAgIGxlbiA9IHN0YXRlLmhlYWQuZXh0cmFfbGVuIC0gc3RhdGUubGVuZ3RoOwogICAgICAgICAgICAgIGlmICghc3RhdGUuaGVhZC5leHRyYSkgewogICAgICAgICAgICAgICAgLy8gVXNlIHVudHlwZWQgYXJyYXkgZm9yIG1vcmUgY29udmVuaWVudCBwcm9jZXNzaW5nIGxhdGVyCiAgICAgICAgICAgICAgICBzdGF0ZS5oZWFkLmV4dHJhID0gbmV3IEFycmF5KHN0YXRlLmhlYWQuZXh0cmFfbGVuKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdXRpbHMuYXJyYXlTZXQoCiAgICAgICAgICAgICAgICBzdGF0ZS5oZWFkLmV4dHJhLAogICAgICAgICAgICAgICAgaW5wdXQsCiAgICAgICAgICAgICAgICBuZXh0LAogICAgICAgICAgICAgICAgLy8gZXh0cmEgZmllbGQgaXMgbGltaXRlZCB0byA2NTUzNiBieXRlcwogICAgICAgICAgICAgICAgLy8gLSBubyBuZWVkIGZvciBhZGRpdGlvbmFsIHNpemUgY2hlY2sKICAgICAgICAgICAgICAgIGNvcHksCiAgICAgICAgICAgICAgICAvKmxlbiArIGNvcHkgPiBzdGF0ZS5oZWFkLmV4dHJhX21heCAtIGxlbiA/IHN0YXRlLmhlYWQuZXh0cmFfbWF4IDogY29weSwqLwogICAgICAgICAgICAgICAgbGVuCiAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAvL3ptZW1jcHkoc3RhdGUuaGVhZC5leHRyYSArIGxlbiwgbmV4dCwKICAgICAgICAgICAgICAvLyAgICAgICAgbGVuICsgY29weSA+IHN0YXRlLmhlYWQuZXh0cmFfbWF4ID8KICAgICAgICAgICAgICAvLyAgICAgICAgc3RhdGUuaGVhZC5leHRyYV9tYXggLSBsZW4gOiBjb3B5KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHsKICAgICAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBpbnB1dCwgY29weSwgbmV4dCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaGF2ZSAtPSBjb3B5OwogICAgICAgICAgICBuZXh0ICs9IGNvcHk7CiAgICAgICAgICAgIHN0YXRlLmxlbmd0aCAtPSBjb3B5OwogICAgICAgICAgfQogICAgICAgICAgaWYgKHN0YXRlLmxlbmd0aCkgeyBicmVhayBpbmZfbGVhdmU7IH0KICAgICAgICB9CiAgICAgICAgc3RhdGUubGVuZ3RoID0gMDsKICAgICAgICBzdGF0ZS5tb2RlID0gTkFNRTsKICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgIGNhc2UgTkFNRToKICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDA4MDApIHsKICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgICAgY29weSA9IDA7CiAgICAgICAgICBkbyB7CiAgICAgICAgICAgIC8vIFRPRE86IDIgb3IgMSBieXRlcz8KICAgICAgICAgICAgbGVuID0gaW5wdXRbbmV4dCArIGNvcHkrK107CiAgICAgICAgICAgIC8qIHVzZSBjb25zdGFudCBsaW1pdCBiZWNhdXNlIGluIGpzIHdlIHNob3VsZCBub3QgcHJlYWxsb2NhdGUgbWVtb3J5ICovCiAgICAgICAgICAgIGlmIChzdGF0ZS5oZWFkICYmIGxlbiAmJgogICAgICAgICAgICAgICAgKHN0YXRlLmxlbmd0aCA8IDY1NTM2IC8qc3RhdGUuaGVhZC5uYW1lX21heCovKSkgewogICAgICAgICAgICAgIHN0YXRlLmhlYWQubmFtZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGxlbik7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gd2hpbGUgKGxlbiAmJiBjb3B5IDwgaGF2ZSk7CgogICAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7CiAgICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGlucHV0LCBjb3B5LCBuZXh0KTsKICAgICAgICAgIH0KICAgICAgICAgIGhhdmUgLT0gY29weTsKICAgICAgICAgIG5leHQgKz0gY29weTsKICAgICAgICAgIGlmIChsZW4pIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHN0YXRlLmhlYWQpIHsKICAgICAgICAgIHN0YXRlLmhlYWQubmFtZSA9IG51bGw7CiAgICAgICAgfQogICAgICAgIHN0YXRlLmxlbmd0aCA9IDA7CiAgICAgICAgc3RhdGUubW9kZSA9IENPTU1FTlQ7CiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqLwogICAgICBjYXNlIENPTU1FTlQ6CiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgxMDAwKSB7CiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH0KICAgICAgICAgIGNvcHkgPSAwOwogICAgICAgICAgZG8gewogICAgICAgICAgICBsZW4gPSBpbnB1dFtuZXh0ICsgY29weSsrXTsKICAgICAgICAgICAgLyogdXNlIGNvbnN0YW50IGxpbWl0IGJlY2F1c2UgaW4ganMgd2Ugc2hvdWxkIG5vdCBwcmVhbGxvY2F0ZSBtZW1vcnkgKi8KICAgICAgICAgICAgaWYgKHN0YXRlLmhlYWQgJiYgbGVuICYmCiAgICAgICAgICAgICAgICAoc3RhdGUubGVuZ3RoIDwgNjU1MzYgLypzdGF0ZS5oZWFkLmNvbW1fbWF4Ki8pKSB7CiAgICAgICAgICAgICAgc3RhdGUuaGVhZC5jb21tZW50ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUobGVuKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSB3aGlsZSAobGVuICYmIGNvcHkgPCBoYXZlKTsKICAgICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkgewogICAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBpbnB1dCwgY29weSwgbmV4dCk7CiAgICAgICAgICB9CiAgICAgICAgICBoYXZlIC09IGNvcHk7CiAgICAgICAgICBuZXh0ICs9IGNvcHk7CiAgICAgICAgICBpZiAobGVuKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChzdGF0ZS5oZWFkKSB7CiAgICAgICAgICBzdGF0ZS5oZWFkLmNvbW1lbnQgPSBudWxsOwogICAgICAgIH0KICAgICAgICBzdGF0ZS5tb2RlID0gSENSQzsKICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgIGNhc2UgSENSQzoKICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHsKICAgICAgICAgIC8vPT09IE5FRURCSVRTKDE2KTsgKi8KICAgICAgICAgIHdoaWxlIChiaXRzIDwgMTYpIHsKICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICAgIGhhdmUtLTsKICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7CiAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgIH0KICAgICAgICAgIC8vPT09Ly8KICAgICAgICAgIGlmIChob2xkICE9PSAoc3RhdGUuY2hlY2sgJiAweGZmZmYpKSB7CiAgICAgICAgICAgIHN0cm0ubXNnID0gJ2hlYWRlciBjcmMgbWlzbWF0Y2gnOwogICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgIC8vPT09IElOSVRCSVRTKCk7CiAgICAgICAgICBob2xkID0gMDsKICAgICAgICAgIGJpdHMgPSAwOwogICAgICAgICAgLy89PT0vLwogICAgICAgIH0KICAgICAgICBpZiAoc3RhdGUuaGVhZCkgewogICAgICAgICAgc3RhdGUuaGVhZC5oY3JjID0gKChzdGF0ZS5mbGFncyA+PiA5KSAmIDEpOwogICAgICAgICAgc3RhdGUuaGVhZC5kb25lID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgc3RybS5hZGxlciA9IHN0YXRlLmNoZWNrID0gMDsKICAgICAgICBzdGF0ZS5tb2RlID0gVFlQRTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSBESUNUSUQ6CiAgICAgICAgLy89PT0gTkVFREJJVFMoMzIpOyAqLwogICAgICAgIHdoaWxlIChiaXRzIDwgMzIpIHsKICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgICAgaGF2ZS0tOwogICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7CiAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgfQogICAgICAgIC8vPT09Ly8KICAgICAgICBzdHJtLmFkbGVyID0gc3RhdGUuY2hlY2sgPSB6c3dhcDMyKGhvbGQpOwogICAgICAgIC8vPT09IElOSVRCSVRTKCk7CiAgICAgICAgaG9sZCA9IDA7CiAgICAgICAgYml0cyA9IDA7CiAgICAgICAgLy89PT0vLwogICAgICAgIHN0YXRlLm1vZGUgPSBESUNUOwogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBESUNUOgogICAgICAgIGlmIChzdGF0ZS5oYXZlZGljdCA9PT0gMCkgewogICAgICAgICAgLy8tLS0gUkVTVE9SRSgpIC0tLQogICAgICAgICAgc3RybS5uZXh0X291dCA9IHB1dDsKICAgICAgICAgIHN0cm0uYXZhaWxfb3V0ID0gbGVmdDsKICAgICAgICAgIHN0cm0ubmV4dF9pbiA9IG5leHQ7CiAgICAgICAgICBzdHJtLmF2YWlsX2luID0gaGF2ZTsKICAgICAgICAgIHN0YXRlLmhvbGQgPSBob2xkOwogICAgICAgICAgc3RhdGUuYml0cyA9IGJpdHM7CiAgICAgICAgICAvLy0tLQogICAgICAgICAgcmV0dXJuIFpfTkVFRF9ESUNUOwogICAgICAgIH0KICAgICAgICBzdHJtLmFkbGVyID0gc3RhdGUuY2hlY2sgPSAxLyphZGxlcjMyKDBMLCBaX05VTEwsIDApKi87CiAgICAgICAgc3RhdGUubW9kZSA9IFRZUEU7CiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqLwogICAgICBjYXNlIFRZUEU6CiAgICAgICAgaWYgKGZsdXNoID09PSBaX0JMT0NLIHx8IGZsdXNoID09PSBaX1RSRUVTKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBUWVBFRE86CiAgICAgICAgaWYgKHN0YXRlLmxhc3QpIHsKICAgICAgICAgIC8vLS0tIEJZVEVCSVRTKCkgLS0tLy8KICAgICAgICAgIGhvbGQgPj4+PSBiaXRzICYgNzsKICAgICAgICAgIGJpdHMgLT0gYml0cyAmIDc7CiAgICAgICAgICAvLy0tLS8vCiAgICAgICAgICBzdGF0ZS5tb2RlID0gQ0hFQ0s7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgLy89PT0gTkVFREJJVFMoMyk7ICovCiAgICAgICAgd2hpbGUgKGJpdHMgPCAzKSB7CiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH0KICAgICAgICAgIGhhdmUtLTsKICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzOwogICAgICAgICAgYml0cyArPSA4OwogICAgICAgIH0KICAgICAgICAvLz09PS8vCiAgICAgICAgc3RhdGUubGFzdCA9IChob2xkICYgMHgwMSkvKkJJVFMoMSkqLzsKICAgICAgICAvLy0tLSBEUk9QQklUUygxKSAtLS0vLwogICAgICAgIGhvbGQgPj4+PSAxOwogICAgICAgIGJpdHMgLT0gMTsKICAgICAgICAvLy0tLS8vCgogICAgICAgIHN3aXRjaCAoKGhvbGQgJiAweDAzKS8qQklUUygyKSovKSB7CiAgICAgICAgICBjYXNlIDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdG9yZWQgYmxvY2sgKi8KICAgICAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICBzdG9yZWQgYmxvY2slc1xuIiwKICAgICAgICAgICAgLy8gICAgICAgIHN0YXRlLmxhc3QgPyAiIChsYXN0KSIgOiAiIikpOwogICAgICAgICAgICBzdGF0ZS5tb2RlID0gU1RPUkVEOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZpeGVkIGJsb2NrICovCiAgICAgICAgICAgIGZpeGVkdGFibGVzKHN0YXRlKTsKICAgICAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICBmaXhlZCBjb2RlcyBibG9jayVzXG4iLAogICAgICAgICAgICAvLyAgICAgICAgc3RhdGUubGFzdCA/ICIgKGxhc3QpIiA6ICIiKSk7CiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBMRU5fOyAgICAgICAgICAgICAvKiBkZWNvZGUgY29kZXMgKi8KICAgICAgICAgICAgaWYgKGZsdXNoID09PSBaX1RSRUVTKSB7CiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoMikgLS0tLy8KICAgICAgICAgICAgICBob2xkID4+Pj0gMjsKICAgICAgICAgICAgICBiaXRzIC09IDI7CiAgICAgICAgICAgICAgLy8tLS0vLwogICAgICAgICAgICAgIGJyZWFrIGluZl9sZWF2ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGR5bmFtaWMgYmxvY2sgKi8KICAgICAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICBkeW5hbWljIGNvZGVzIGJsb2NrJXNcbiIsCiAgICAgICAgICAgIC8vICAgICAgICBzdGF0ZS5sYXN0ID8gIiAobGFzdCkiIDogIiIpKTsKICAgICAgICAgICAgc3RhdGUubW9kZSA9IFRBQkxFOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBibG9jayB0eXBlJzsKICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICB9CiAgICAgICAgLy8tLS0gRFJPUEJJVFMoMikgLS0tLy8KICAgICAgICBob2xkID4+Pj0gMjsKICAgICAgICBiaXRzIC09IDI7CiAgICAgICAgLy8tLS0vLwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIFNUT1JFRDoKICAgICAgICAvLy0tLSBCWVRFQklUUygpIC0tLS8vIC8qIGdvIHRvIGJ5dGUgYm91bmRhcnkgKi8KICAgICAgICBob2xkID4+Pj0gYml0cyAmIDc7CiAgICAgICAgYml0cyAtPSBiaXRzICYgNzsKICAgICAgICAvLy0tLS8vCiAgICAgICAgLy89PT0gTkVFREJJVFMoMzIpOyAqLwogICAgICAgIHdoaWxlIChiaXRzIDwgMzIpIHsKICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgICAgaGF2ZS0tOwogICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7CiAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgfQogICAgICAgIC8vPT09Ly8KICAgICAgICBpZiAoKGhvbGQgJiAweGZmZmYpICE9PSAoKGhvbGQgPj4+IDE2KSBeIDB4ZmZmZikpIHsKICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMnOwogICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBzdGF0ZS5sZW5ndGggPSBob2xkICYgMHhmZmZmOwogICAgICAgIC8vVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICBzdG9yZWQgbGVuZ3RoICV1XG4iLAogICAgICAgIC8vICAgICAgICBzdGF0ZS5sZW5ndGgpKTsKICAgICAgICAvLz09PSBJTklUQklUUygpOwogICAgICAgIGhvbGQgPSAwOwogICAgICAgIGJpdHMgPSAwOwogICAgICAgIC8vPT09Ly8KICAgICAgICBzdGF0ZS5tb2RlID0gQ09QWV87CiAgICAgICAgaWYgKGZsdXNoID09PSBaX1RSRUVTKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBDT1BZXzoKICAgICAgICBzdGF0ZS5tb2RlID0gQ09QWTsKICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgIGNhc2UgQ09QWToKICAgICAgICBjb3B5ID0gc3RhdGUubGVuZ3RoOwogICAgICAgIGlmIChjb3B5KSB7CiAgICAgICAgICBpZiAoY29weSA+IGhhdmUpIHsgY29weSA9IGhhdmU7IH0KICAgICAgICAgIGlmIChjb3B5ID4gbGVmdCkgeyBjb3B5ID0gbGVmdDsgfQogICAgICAgICAgaWYgKGNvcHkgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICAvLy0tLSB6bWVtY3B5KHB1dCwgbmV4dCwgY29weSk7IC0tLQogICAgICAgICAgdXRpbHMuYXJyYXlTZXQob3V0cHV0LCBpbnB1dCwgbmV4dCwgY29weSwgcHV0KTsKICAgICAgICAgIC8vLS0tLy8KICAgICAgICAgIGhhdmUgLT0gY29weTsKICAgICAgICAgIG5leHQgKz0gY29weTsKICAgICAgICAgIGxlZnQgLT0gY29weTsKICAgICAgICAgIHB1dCArPSBjb3B5OwogICAgICAgICAgc3RhdGUubGVuZ3RoIC09IGNvcHk7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgIHN0b3JlZCBlbmRcbiIpKTsKICAgICAgICBzdGF0ZS5tb2RlID0gVFlQRTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSBUQUJMRToKICAgICAgICAvLz09PSBORUVEQklUUygxNCk7ICovCiAgICAgICAgd2hpbGUgKGJpdHMgPCAxNCkgewogICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICBoYXZlLS07CiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0czsKICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICB9CiAgICAgICAgLy89PT0vLwogICAgICAgIHN0YXRlLm5sZW4gPSAoaG9sZCAmIDB4MWYpLypCSVRTKDUpKi8gKyAyNTc7CiAgICAgICAgLy8tLS0gRFJPUEJJVFMoNSkgLS0tLy8KICAgICAgICBob2xkID4+Pj0gNTsKICAgICAgICBiaXRzIC09IDU7CiAgICAgICAgLy8tLS0vLwogICAgICAgIHN0YXRlLm5kaXN0ID0gKGhvbGQgJiAweDFmKS8qQklUUyg1KSovICsgMTsKICAgICAgICAvLy0tLSBEUk9QQklUUyg1KSAtLS0vLwogICAgICAgIGhvbGQgPj4+PSA1OwogICAgICAgIGJpdHMgLT0gNTsKICAgICAgICAvLy0tLS8vCiAgICAgICAgc3RhdGUubmNvZGUgPSAoaG9sZCAmIDB4MGYpLypCSVRTKDQpKi8gKyA0OwogICAgICAgIC8vLS0tIERST1BCSVRTKDQpIC0tLS8vCiAgICAgICAgaG9sZCA+Pj49IDQ7CiAgICAgICAgYml0cyAtPSA0OwogICAgICAgIC8vLS0tLy8KLy8jaWZuZGVmIFBLWklQX0JVR19XT1JLQVJPVU5ECiAgICAgICAgaWYgKHN0YXRlLm5sZW4gPiAyODYgfHwgc3RhdGUubmRpc3QgPiAzMCkgewogICAgICAgICAgc3RybS5tc2cgPSAndG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMnOwogICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KLy8jZW5kaWYKICAgICAgICAvL1RyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgdGFibGUgc2l6ZXMgb2tcbiIpKTsKICAgICAgICBzdGF0ZS5oYXZlID0gMDsKICAgICAgICBzdGF0ZS5tb2RlID0gTEVOTEVOUzsKICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgIGNhc2UgTEVOTEVOUzoKICAgICAgICB3aGlsZSAoc3RhdGUuaGF2ZSA8IHN0YXRlLm5jb2RlKSB7CiAgICAgICAgICAvLz09PSBORUVEQklUUygzKTsKICAgICAgICAgIHdoaWxlIChiaXRzIDwgMykgewogICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH0KICAgICAgICAgICAgaGF2ZS0tOwogICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0czsKICAgICAgICAgICAgYml0cyArPSA4OwogICAgICAgICAgfQogICAgICAgICAgLy89PT0vLwogICAgICAgICAgc3RhdGUubGVuc1tvcmRlcltzdGF0ZS5oYXZlKytdXSA9IChob2xkICYgMHgwNyk7Ly9CSVRTKDMpOwogICAgICAgICAgLy8tLS0gRFJPUEJJVFMoMykgLS0tLy8KICAgICAgICAgIGhvbGQgPj4+PSAzOwogICAgICAgICAgYml0cyAtPSAzOwogICAgICAgICAgLy8tLS0vLwogICAgICAgIH0KICAgICAgICB3aGlsZSAoc3RhdGUuaGF2ZSA8IDE5KSB7CiAgICAgICAgICBzdGF0ZS5sZW5zW29yZGVyW3N0YXRlLmhhdmUrK11dID0gMDsKICAgICAgICB9CiAgICAgICAgLy8gV2UgaGF2ZSBzZXBhcmF0ZSB0YWJsZXMgJiBubyBwb2ludGVycy4gMiBjb21tZW50ZWQgbGluZXMgYmVsb3cgbm90IG5lZWRlZC4KICAgICAgICAvL3N0YXRlLm5leHQgPSBzdGF0ZS5jb2RlczsKICAgICAgICAvL3N0YXRlLmxlbmNvZGUgPSBzdGF0ZS5uZXh0OwogICAgICAgIC8vIFN3aXRjaCB0byB1c2UgZHluYW1pYyB0YWJsZQogICAgICAgIHN0YXRlLmxlbmNvZGUgPSBzdGF0ZS5sZW5keW47CiAgICAgICAgc3RhdGUubGVuYml0cyA9IDc7CgogICAgICAgIG9wdHMgPSB7IGJpdHM6IHN0YXRlLmxlbmJpdHMgfTsKICAgICAgICByZXQgPSBpbmZsYXRlX3RhYmxlKENPREVTLCBzdGF0ZS5sZW5zLCAwLCAxOSwgc3RhdGUubGVuY29kZSwgMCwgc3RhdGUud29yaywgb3B0cyk7CiAgICAgICAgc3RhdGUubGVuYml0cyA9IG9wdHMuYml0czsKCiAgICAgICAgaWYgKHJldCkgewogICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0JzsKICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgIGNvZGUgbGVuZ3RocyBva1xuIikpOwogICAgICAgIHN0YXRlLmhhdmUgPSAwOwogICAgICAgIHN0YXRlLm1vZGUgPSBDT0RFTEVOUzsKICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgIGNhc2UgQ09ERUxFTlM6CiAgICAgICAgd2hpbGUgKHN0YXRlLmhhdmUgPCBzdGF0ZS5ubGVuICsgc3RhdGUubmRpc3QpIHsKICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgaGVyZSA9IHN0YXRlLmxlbmNvZGVbaG9sZCAmICgoMSA8PCBzdGF0ZS5sZW5iaXRzKSAtIDEpXTsvKkJJVFMoc3RhdGUubGVuYml0cykqLwogICAgICAgICAgICBoZXJlX2JpdHMgPSBoZXJlID4+PiAyNDsKICAgICAgICAgICAgaGVyZV9vcCA9IChoZXJlID4+PiAxNikgJiAweGZmOwogICAgICAgICAgICBoZXJlX3ZhbCA9IGhlcmUgJiAweGZmZmY7CgogICAgICAgICAgICBpZiAoKGhlcmVfYml0cykgPD0gYml0cykgeyBicmVhazsgfQogICAgICAgICAgICAvLy0tLSBQVUxMQllURSgpIC0tLS8vCiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgICAgICBoYXZlLS07CiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzOwogICAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgICAgIC8vLS0tLy8KICAgICAgICAgIH0KICAgICAgICAgIGlmIChoZXJlX3ZhbCA8IDE2KSB7CiAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy8KICAgICAgICAgICAgaG9sZCA+Pj49IGhlcmVfYml0czsKICAgICAgICAgICAgYml0cyAtPSBoZXJlX2JpdHM7CiAgICAgICAgICAgIC8vLS0tLy8KICAgICAgICAgICAgc3RhdGUubGVuc1tzdGF0ZS5oYXZlKytdID0gaGVyZV92YWw7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYgKGhlcmVfdmFsID09PSAxNikgewogICAgICAgICAgICAgIC8vPT09IE5FRURCSVRTKGhlcmUuYml0cyArIDIpOwogICAgICAgICAgICAgIG4gPSBoZXJlX2JpdHMgKyAyOwogICAgICAgICAgICAgIHdoaWxlIChiaXRzIDwgbikgewogICAgICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICAgICAgICBoYXZlLS07CiAgICAgICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0czsKICAgICAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy89PT0vLwogICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy8KICAgICAgICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzOwogICAgICAgICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzOwogICAgICAgICAgICAgIC8vLS0tLy8KICAgICAgICAgICAgICBpZiAoc3RhdGUuaGF2ZSA9PT0gMCkgewogICAgICAgICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCc7CiAgICAgICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGxlbiA9IHN0YXRlLmxlbnNbc3RhdGUuaGF2ZSAtIDFdOwogICAgICAgICAgICAgIGNvcHkgPSAzICsgKGhvbGQgJiAweDAzKTsvL0JJVFMoMik7CiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoMikgLS0tLy8KICAgICAgICAgICAgICBob2xkID4+Pj0gMjsKICAgICAgICAgICAgICBiaXRzIC09IDI7CiAgICAgICAgICAgICAgLy8tLS0vLwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGhlcmVfdmFsID09PSAxNykgewogICAgICAgICAgICAgIC8vPT09IE5FRURCSVRTKGhlcmUuYml0cyArIDMpOwogICAgICAgICAgICAgIG4gPSBoZXJlX2JpdHMgKyAzOwogICAgICAgICAgICAgIHdoaWxlIChiaXRzIDwgbikgewogICAgICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICAgICAgICBoYXZlLS07CiAgICAgICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0czsKICAgICAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy89PT0vLwogICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy8KICAgICAgICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzOwogICAgICAgICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzOwogICAgICAgICAgICAgIC8vLS0tLy8KICAgICAgICAgICAgICBsZW4gPSAwOwogICAgICAgICAgICAgIGNvcHkgPSAzICsgKGhvbGQgJiAweDA3KTsvL0JJVFMoMyk7CiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoMykgLS0tLy8KICAgICAgICAgICAgICBob2xkID4+Pj0gMzsKICAgICAgICAgICAgICBiaXRzIC09IDM7CiAgICAgICAgICAgICAgLy8tLS0vLwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIC8vPT09IE5FRURCSVRTKGhlcmUuYml0cyArIDcpOwogICAgICAgICAgICAgIG4gPSBoZXJlX2JpdHMgKyA3OwogICAgICAgICAgICAgIHdoaWxlIChiaXRzIDwgbikgewogICAgICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICAgICAgICBoYXZlLS07CiAgICAgICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0czsKICAgICAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy89PT0vLwogICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy8KICAgICAgICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzOwogICAgICAgICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzOwogICAgICAgICAgICAgIC8vLS0tLy8KICAgICAgICAgICAgICBsZW4gPSAwOwogICAgICAgICAgICAgIGNvcHkgPSAxMSArIChob2xkICYgMHg3Zik7Ly9CSVRTKDcpOwogICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKDcpIC0tLS8vCiAgICAgICAgICAgICAgaG9sZCA+Pj49IDc7CiAgICAgICAgICAgICAgYml0cyAtPSA3OwogICAgICAgICAgICAgIC8vLS0tLy8KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoc3RhdGUuaGF2ZSArIGNvcHkgPiBzdGF0ZS5ubGVuICsgc3RhdGUubmRpc3QpIHsKICAgICAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0JzsKICAgICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHdoaWxlIChjb3B5LS0pIHsKICAgICAgICAgICAgICBzdGF0ZS5sZW5zW3N0YXRlLmhhdmUrK10gPSBsZW47CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qIGhhbmRsZSBlcnJvciBicmVha3MgaW4gd2hpbGUgKi8KICAgICAgICBpZiAoc3RhdGUubW9kZSA9PT0gQkFEKSB7IGJyZWFrOyB9CgogICAgICAgIC8qIGNoZWNrIGZvciBlbmQtb2YtYmxvY2sgY29kZSAoYmV0dGVyIGhhdmUgb25lKSAqLwogICAgICAgIGlmIChzdGF0ZS5sZW5zWzI1Nl0gPT09IDApIHsKICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgY29kZSAtLSBtaXNzaW5nIGVuZC1vZi1ibG9jayc7CiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICAvKiBidWlsZCBjb2RlIHRhYmxlcyAtLSBub3RlOiBkbyBub3QgY2hhbmdlIHRoZSBsZW5iaXRzIG9yIGRpc3RiaXRzCiAgICAgICAgICAgdmFsdWVzIGhlcmUgKDkgYW5kIDYpIHdpdGhvdXQgcmVhZGluZyB0aGUgY29tbWVudHMgaW4gaW5mdHJlZXMuaAogICAgICAgICAgIGNvbmNlcm5pbmcgdGhlIEVOT1VHSCBjb25zdGFudHMsIHdoaWNoIGRlcGVuZCBvbiB0aG9zZSB2YWx1ZXMgKi8KICAgICAgICBzdGF0ZS5sZW5iaXRzID0gOTsKCiAgICAgICAgb3B0cyA9IHsgYml0czogc3RhdGUubGVuYml0cyB9OwogICAgICAgIHJldCA9IGluZmxhdGVfdGFibGUoTEVOUywgc3RhdGUubGVucywgMCwgc3RhdGUubmxlbiwgc3RhdGUubGVuY29kZSwgMCwgc3RhdGUud29yaywgb3B0cyk7CiAgICAgICAgLy8gV2UgaGF2ZSBzZXBhcmF0ZSB0YWJsZXMgJiBubyBwb2ludGVycy4gMiBjb21tZW50ZWQgbGluZXMgYmVsb3cgbm90IG5lZWRlZC4KICAgICAgICAvLyBzdGF0ZS5uZXh0X2luZGV4ID0gb3B0cy50YWJsZV9pbmRleDsKICAgICAgICBzdGF0ZS5sZW5iaXRzID0gb3B0cy5iaXRzOwogICAgICAgIC8vIHN0YXRlLmxlbmNvZGUgPSBzdGF0ZS5uZXh0OwoKICAgICAgICBpZiAocmV0KSB7CiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQnOwogICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgc3RhdGUuZGlzdGJpdHMgPSA2OwogICAgICAgIC8vc3RhdGUuZGlzdGNvZGUuY29weShzdGF0ZS5jb2Rlcyk7CiAgICAgICAgLy8gU3dpdGNoIHRvIHVzZSBkeW5hbWljIHRhYmxlCiAgICAgICAgc3RhdGUuZGlzdGNvZGUgPSBzdGF0ZS5kaXN0ZHluOwogICAgICAgIG9wdHMgPSB7IGJpdHM6IHN0YXRlLmRpc3RiaXRzIH07CiAgICAgICAgcmV0ID0gaW5mbGF0ZV90YWJsZShESVNUUywgc3RhdGUubGVucywgc3RhdGUubmxlbiwgc3RhdGUubmRpc3QsIHN0YXRlLmRpc3Rjb2RlLCAwLCBzdGF0ZS53b3JrLCBvcHRzKTsKICAgICAgICAvLyBXZSBoYXZlIHNlcGFyYXRlIHRhYmxlcyAmIG5vIHBvaW50ZXJzLiAyIGNvbW1lbnRlZCBsaW5lcyBiZWxvdyBub3QgbmVlZGVkLgogICAgICAgIC8vIHN0YXRlLm5leHRfaW5kZXggPSBvcHRzLnRhYmxlX2luZGV4OwogICAgICAgIHN0YXRlLmRpc3RiaXRzID0gb3B0cy5iaXRzOwogICAgICAgIC8vIHN0YXRlLmRpc3Rjb2RlID0gc3RhdGUubmV4dDsKCiAgICAgICAgaWYgKHJldCkgewogICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBkaXN0YW5jZXMgc2V0JzsKICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgJ2luZmxhdGU6ICAgICAgIGNvZGVzIG9rXG4nKSk7CiAgICAgICAgc3RhdGUubW9kZSA9IExFTl87CiAgICAgICAgaWYgKGZsdXNoID09PSBaX1RSRUVTKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBMRU5fOgogICAgICAgIHN0YXRlLm1vZGUgPSBMRU47CiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqLwogICAgICBjYXNlIExFTjoKICAgICAgICBpZiAoaGF2ZSA+PSA2ICYmIGxlZnQgPj0gMjU4KSB7CiAgICAgICAgICAvLy0tLSBSRVNUT1JFKCkgLS0tCiAgICAgICAgICBzdHJtLm5leHRfb3V0ID0gcHV0OwogICAgICAgICAgc3RybS5hdmFpbF9vdXQgPSBsZWZ0OwogICAgICAgICAgc3RybS5uZXh0X2luID0gbmV4dDsKICAgICAgICAgIHN0cm0uYXZhaWxfaW4gPSBoYXZlOwogICAgICAgICAgc3RhdGUuaG9sZCA9IGhvbGQ7CiAgICAgICAgICBzdGF0ZS5iaXRzID0gYml0czsKICAgICAgICAgIC8vLS0tCiAgICAgICAgICBpbmZsYXRlX2Zhc3Qoc3RybSwgX291dCk7CiAgICAgICAgICAvLy0tLSBMT0FEKCkgLS0tCiAgICAgICAgICBwdXQgPSBzdHJtLm5leHRfb3V0OwogICAgICAgICAgb3V0cHV0ID0gc3RybS5vdXRwdXQ7CiAgICAgICAgICBsZWZ0ID0gc3RybS5hdmFpbF9vdXQ7CiAgICAgICAgICBuZXh0ID0gc3RybS5uZXh0X2luOwogICAgICAgICAgaW5wdXQgPSBzdHJtLmlucHV0OwogICAgICAgICAgaGF2ZSA9IHN0cm0uYXZhaWxfaW47CiAgICAgICAgICBob2xkID0gc3RhdGUuaG9sZDsKICAgICAgICAgIGJpdHMgPSBzdGF0ZS5iaXRzOwogICAgICAgICAgLy8tLS0KCiAgICAgICAgICBpZiAoc3RhdGUubW9kZSA9PT0gVFlQRSkgewogICAgICAgICAgICBzdGF0ZS5iYWNrID0gLTE7CiAgICAgICAgICB9CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgc3RhdGUuYmFjayA9IDA7CiAgICAgICAgZm9yICg7OykgewogICAgICAgICAgaGVyZSA9IHN0YXRlLmxlbmNvZGVbaG9sZCAmICgoMSA8PCBzdGF0ZS5sZW5iaXRzKSAtIDEpXTsgIC8qQklUUyhzdGF0ZS5sZW5iaXRzKSovCiAgICAgICAgICBoZXJlX2JpdHMgPSBoZXJlID4+PiAyNDsKICAgICAgICAgIGhlcmVfb3AgPSAoaGVyZSA+Pj4gMTYpICYgMHhmZjsKICAgICAgICAgIGhlcmVfdmFsID0gaGVyZSAmIDB4ZmZmZjsKCiAgICAgICAgICBpZiAoaGVyZV9iaXRzIDw9IGJpdHMpIHsgYnJlYWs7IH0KICAgICAgICAgIC8vLS0tIFBVTExCWVRFKCkgLS0tLy8KICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgICAgaGF2ZS0tOwogICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7CiAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgICAvLy0tLS8vCiAgICAgICAgfQogICAgICAgIGlmIChoZXJlX29wICYmIChoZXJlX29wICYgMHhmMCkgPT09IDApIHsKICAgICAgICAgIGxhc3RfYml0cyA9IGhlcmVfYml0czsKICAgICAgICAgIGxhc3Rfb3AgPSBoZXJlX29wOwogICAgICAgICAgbGFzdF92YWwgPSBoZXJlX3ZhbDsKICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgaGVyZSA9IHN0YXRlLmxlbmNvZGVbbGFzdF92YWwgKwogICAgICAgICAgICAgICAgICAgICgoaG9sZCAmICgoMSA8PCAobGFzdF9iaXRzICsgbGFzdF9vcCkpIC0gMSkpLypCSVRTKGxhc3QuYml0cyArIGxhc3Qub3ApKi8gPj4gbGFzdF9iaXRzKV07CiAgICAgICAgICAgIGhlcmVfYml0cyA9IGhlcmUgPj4+IDI0OwogICAgICAgICAgICBoZXJlX29wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmY7CiAgICAgICAgICAgIGhlcmVfdmFsID0gaGVyZSAmIDB4ZmZmZjsKCiAgICAgICAgICAgIGlmICgobGFzdF9iaXRzICsgaGVyZV9iaXRzKSA8PSBiaXRzKSB7IGJyZWFrOyB9CiAgICAgICAgICAgIC8vLS0tIFBVTExCWVRFKCkgLS0tLy8KICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICAgIGhhdmUtLTsKICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7CiAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgICAgLy8tLS0vLwogICAgICAgICAgfQogICAgICAgICAgLy8tLS0gRFJPUEJJVFMobGFzdC5iaXRzKSAtLS0vLwogICAgICAgICAgaG9sZCA+Pj49IGxhc3RfYml0czsKICAgICAgICAgIGJpdHMgLT0gbGFzdF9iaXRzOwogICAgICAgICAgLy8tLS0vLwogICAgICAgICAgc3RhdGUuYmFjayArPSBsYXN0X2JpdHM7CiAgICAgICAgfQogICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy8KICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzOwogICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzOwogICAgICAgIC8vLS0tLy8KICAgICAgICBzdGF0ZS5iYWNrICs9IGhlcmVfYml0czsKICAgICAgICBzdGF0ZS5sZW5ndGggPSBoZXJlX3ZhbDsKICAgICAgICBpZiAoaGVyZV9vcCA9PT0gMCkgewogICAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIGhlcmUudmFsID49IDB4MjAgJiYgaGVyZS52YWwgPCAweDdmID8KICAgICAgICAgIC8vICAgICAgICAiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsICclYydcbiIgOgogICAgICAgICAgLy8gICAgICAgICJpbmZsYXRlOiAgICAgICAgIGxpdGVyYWwgMHglMDJ4XG4iLCBoZXJlLnZhbCkpOwogICAgICAgICAgc3RhdGUubW9kZSA9IExJVDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpZiAoaGVyZV9vcCAmIDMyKSB7CiAgICAgICAgICAvL1RyYWNldnYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgICAgZW5kIG9mIGJsb2NrXG4iKSk7CiAgICAgICAgICBzdGF0ZS5iYWNrID0gLTE7CiAgICAgICAgICBzdGF0ZS5tb2RlID0gVFlQRTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpZiAoaGVyZV9vcCAmIDY0KSB7CiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUnOwogICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBzdGF0ZS5leHRyYSA9IGhlcmVfb3AgJiAxNTsKICAgICAgICBzdGF0ZS5tb2RlID0gTEVORVhUOwogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBMRU5FWFQ6CiAgICAgICAgaWYgKHN0YXRlLmV4dHJhKSB7CiAgICAgICAgICAvLz09PSBORUVEQklUUyhzdGF0ZS5leHRyYSk7CiAgICAgICAgICBuID0gc3RhdGUuZXh0cmE7CiAgICAgICAgICB3aGlsZSAoYml0cyA8IG4pIHsKICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICAgIGhhdmUtLTsKICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7CiAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgIH0KICAgICAgICAgIC8vPT09Ly8KICAgICAgICAgIHN0YXRlLmxlbmd0aCArPSBob2xkICYgKCgxIDw8IHN0YXRlLmV4dHJhKSAtIDEpLypCSVRTKHN0YXRlLmV4dHJhKSovOwogICAgICAgICAgLy8tLS0gRFJPUEJJVFMoc3RhdGUuZXh0cmEpIC0tLS8vCiAgICAgICAgICBob2xkID4+Pj0gc3RhdGUuZXh0cmE7CiAgICAgICAgICBiaXRzIC09IHN0YXRlLmV4dHJhOwogICAgICAgICAgLy8tLS0vLwogICAgICAgICAgc3RhdGUuYmFjayArPSBzdGF0ZS5leHRyYTsKICAgICAgICB9CiAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICAgIGxlbmd0aCAldVxuIiwgc3RhdGUubGVuZ3RoKSk7CiAgICAgICAgc3RhdGUud2FzID0gc3RhdGUubGVuZ3RoOwogICAgICAgIHN0YXRlLm1vZGUgPSBESVNUOwogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBESVNUOgogICAgICAgIGZvciAoOzspIHsKICAgICAgICAgIGhlcmUgPSBzdGF0ZS5kaXN0Y29kZVtob2xkICYgKCgxIDw8IHN0YXRlLmRpc3RiaXRzKSAtIDEpXTsvKkJJVFMoc3RhdGUuZGlzdGJpdHMpKi8KICAgICAgICAgIGhlcmVfYml0cyA9IGhlcmUgPj4+IDI0OwogICAgICAgICAgaGVyZV9vcCA9IChoZXJlID4+PiAxNikgJiAweGZmOwogICAgICAgICAgaGVyZV92YWwgPSBoZXJlICYgMHhmZmZmOwoKICAgICAgICAgIGlmICgoaGVyZV9iaXRzKSA8PSBiaXRzKSB7IGJyZWFrOyB9CiAgICAgICAgICAvLy0tLSBQVUxMQllURSgpIC0tLS8vCiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH0KICAgICAgICAgIGhhdmUtLTsKICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzOwogICAgICAgICAgYml0cyArPSA4OwogICAgICAgICAgLy8tLS0vLwogICAgICAgIH0KICAgICAgICBpZiAoKGhlcmVfb3AgJiAweGYwKSA9PT0gMCkgewogICAgICAgICAgbGFzdF9iaXRzID0gaGVyZV9iaXRzOwogICAgICAgICAgbGFzdF9vcCA9IGhlcmVfb3A7CiAgICAgICAgICBsYXN0X3ZhbCA9IGhlcmVfdmFsOwogICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICBoZXJlID0gc3RhdGUuZGlzdGNvZGVbbGFzdF92YWwgKwogICAgICAgICAgICAgICAgICAgICgoaG9sZCAmICgoMSA8PCAobGFzdF9iaXRzICsgbGFzdF9vcCkpIC0gMSkpLypCSVRTKGxhc3QuYml0cyArIGxhc3Qub3ApKi8gPj4gbGFzdF9iaXRzKV07CiAgICAgICAgICAgIGhlcmVfYml0cyA9IGhlcmUgPj4+IDI0OwogICAgICAgICAgICBoZXJlX29wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmY7CiAgICAgICAgICAgIGhlcmVfdmFsID0gaGVyZSAmIDB4ZmZmZjsKCiAgICAgICAgICAgIGlmICgobGFzdF9iaXRzICsgaGVyZV9iaXRzKSA8PSBiaXRzKSB7IGJyZWFrOyB9CiAgICAgICAgICAgIC8vLS0tIFBVTExCWVRFKCkgLS0tLy8KICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICAgIGhhdmUtLTsKICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7CiAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgICAgLy8tLS0vLwogICAgICAgICAgfQogICAgICAgICAgLy8tLS0gRFJPUEJJVFMobGFzdC5iaXRzKSAtLS0vLwogICAgICAgICAgaG9sZCA+Pj49IGxhc3RfYml0czsKICAgICAgICAgIGJpdHMgLT0gbGFzdF9iaXRzOwogICAgICAgICAgLy8tLS0vLwogICAgICAgICAgc3RhdGUuYmFjayArPSBsYXN0X2JpdHM7CiAgICAgICAgfQogICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy8KICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzOwogICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzOwogICAgICAgIC8vLS0tLy8KICAgICAgICBzdGF0ZS5iYWNrICs9IGhlcmVfYml0czsKICAgICAgICBpZiAoaGVyZV9vcCAmIDY0KSB7CiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlIGNvZGUnOwogICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBzdGF0ZS5vZmZzZXQgPSBoZXJlX3ZhbDsKICAgICAgICBzdGF0ZS5leHRyYSA9IChoZXJlX29wKSAmIDE1OwogICAgICAgIHN0YXRlLm1vZGUgPSBESVNURVhUOwogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBESVNURVhUOgogICAgICAgIGlmIChzdGF0ZS5leHRyYSkgewogICAgICAgICAgLy89PT0gTkVFREJJVFMoc3RhdGUuZXh0cmEpOwogICAgICAgICAgbiA9IHN0YXRlLmV4dHJhOwogICAgICAgICAgd2hpbGUgKGJpdHMgPCBuKSB7CiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgICAgICBoYXZlLS07CiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzOwogICAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgICB9CiAgICAgICAgICAvLz09PS8vCiAgICAgICAgICBzdGF0ZS5vZmZzZXQgKz0gaG9sZCAmICgoMSA8PCBzdGF0ZS5leHRyYSkgLSAxKS8qQklUUyhzdGF0ZS5leHRyYSkqLzsKICAgICAgICAgIC8vLS0tIERST1BCSVRTKHN0YXRlLmV4dHJhKSAtLS0vLwogICAgICAgICAgaG9sZCA+Pj49IHN0YXRlLmV4dHJhOwogICAgICAgICAgYml0cyAtPSBzdGF0ZS5leHRyYTsKICAgICAgICAgIC8vLS0tLy8KICAgICAgICAgIHN0YXRlLmJhY2sgKz0gc3RhdGUuZXh0cmE7CiAgICAgICAgfQovLyNpZmRlZiBJTkZMQVRFX1NUUklDVAogICAgICAgIGlmIChzdGF0ZS5vZmZzZXQgPiBzdGF0ZS5kbWF4KSB7CiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayc7CiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQovLyNlbmRpZgogICAgICAgIC8vVHJhY2V2digoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgICBkaXN0YW5jZSAldVxuIiwgc3RhdGUub2Zmc2V0KSk7CiAgICAgICAgc3RhdGUubW9kZSA9IE1BVENIOwogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBNQVRDSDoKICAgICAgICBpZiAobGVmdCA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH0KICAgICAgICBjb3B5ID0gX291dCAtIGxlZnQ7CiAgICAgICAgaWYgKHN0YXRlLm9mZnNldCA+IGNvcHkpIHsgICAgICAgICAvKiBjb3B5IGZyb20gd2luZG93ICovCiAgICAgICAgICBjb3B5ID0gc3RhdGUub2Zmc2V0IC0gY29weTsKICAgICAgICAgIGlmIChjb3B5ID4gc3RhdGUud2hhdmUpIHsKICAgICAgICAgICAgaWYgKHN0YXRlLnNhbmUpIHsKICAgICAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayc7CiAgICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQovLyAoISkgVGhpcyBibG9jayBpcyBkaXNhYmxlZCBpbiB6bGliIGRlZmF1bHRzLAovLyBkb24ndCBlbmFibGUgaXQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5Ci8vI2lmZGVmIElORkxBVEVfQUxMT1dfSU5WQUxJRF9ESVNUQU5DRV9UT09GQVJfQVJSUgovLyAgICAgICAgICBUcmFjZSgoc3RkZXJyLCAiaW5mbGF0ZS5jIHRvbyBmYXJcbiIpKTsKLy8gICAgICAgICAgY29weSAtPSBzdGF0ZS53aGF2ZTsKLy8gICAgICAgICAgaWYgKGNvcHkgPiBzdGF0ZS5sZW5ndGgpIHsgY29weSA9IHN0YXRlLmxlbmd0aDsgfQovLyAgICAgICAgICBpZiAoY29weSA+IGxlZnQpIHsgY29weSA9IGxlZnQ7IH0KLy8gICAgICAgICAgbGVmdCAtPSBjb3B5OwovLyAgICAgICAgICBzdGF0ZS5sZW5ndGggLT0gY29weTsKLy8gICAgICAgICAgZG8gewovLyAgICAgICAgICAgIG91dHB1dFtwdXQrK10gPSAwOwovLyAgICAgICAgICB9IHdoaWxlICgtLWNvcHkpOwovLyAgICAgICAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSB7IHN0YXRlLm1vZGUgPSBMRU47IH0KLy8gICAgICAgICAgYnJlYWs7Ci8vI2VuZGlmCiAgICAgICAgICB9CiAgICAgICAgICBpZiAoY29weSA+IHN0YXRlLnduZXh0KSB7CiAgICAgICAgICAgIGNvcHkgLT0gc3RhdGUud25leHQ7CiAgICAgICAgICAgIGZyb20gPSBzdGF0ZS53c2l6ZSAtIGNvcHk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZnJvbSA9IHN0YXRlLnduZXh0IC0gY29weTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChjb3B5ID4gc3RhdGUubGVuZ3RoKSB7IGNvcHkgPSBzdGF0ZS5sZW5ndGg7IH0KICAgICAgICAgIGZyb21fc291cmNlID0gc3RhdGUud2luZG93OwogICAgICAgIH0KICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjb3B5IGZyb20gb3V0cHV0ICovCiAgICAgICAgICBmcm9tX3NvdXJjZSA9IG91dHB1dDsKICAgICAgICAgIGZyb20gPSBwdXQgLSBzdGF0ZS5vZmZzZXQ7CiAgICAgICAgICBjb3B5ID0gc3RhdGUubGVuZ3RoOwogICAgICAgIH0KICAgICAgICBpZiAoY29weSA+IGxlZnQpIHsgY29weSA9IGxlZnQ7IH0KICAgICAgICBsZWZ0IC09IGNvcHk7CiAgICAgICAgc3RhdGUubGVuZ3RoIC09IGNvcHk7CiAgICAgICAgZG8gewogICAgICAgICAgb3V0cHV0W3B1dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107CiAgICAgICAgfSB3aGlsZSAoLS1jb3B5KTsKICAgICAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSB7IHN0YXRlLm1vZGUgPSBMRU47IH0KICAgICAgICBicmVhazsKICAgICAgY2FzZSBMSVQ6CiAgICAgICAgaWYgKGxlZnQgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgb3V0cHV0W3B1dCsrXSA9IHN0YXRlLmxlbmd0aDsKICAgICAgICBsZWZ0LS07CiAgICAgICAgc3RhdGUubW9kZSA9IExFTjsKICAgICAgICBicmVhazsKICAgICAgY2FzZSBDSEVDSzoKICAgICAgICBpZiAoc3RhdGUud3JhcCkgewogICAgICAgICAgLy89PT0gTkVFREJJVFMoMzIpOwogICAgICAgICAgd2hpbGUgKGJpdHMgPCAzMikgewogICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH0KICAgICAgICAgICAgaGF2ZS0tOwogICAgICAgICAgICAvLyBVc2UgJ3wnIGluc3RlYWQgb2YgJysnIHRvIG1ha2Ugc3VyZSB0aGF0IHJlc3VsdCBpcyBzaWduZWQKICAgICAgICAgICAgaG9sZCB8PSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7CiAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgIH0KICAgICAgICAgIC8vPT09Ly8KICAgICAgICAgIF9vdXQgLT0gbGVmdDsKICAgICAgICAgIHN0cm0udG90YWxfb3V0ICs9IF9vdXQ7CiAgICAgICAgICBzdGF0ZS50b3RhbCArPSBfb3V0OwogICAgICAgICAgaWYgKF9vdXQpIHsKICAgICAgICAgICAgc3RybS5hZGxlciA9IHN0YXRlLmNoZWNrID0KICAgICAgICAgICAgICAgIC8qVVBEQVRFKHN0YXRlLmNoZWNrLCBwdXQgLSBfb3V0LCBfb3V0KTsqLwogICAgICAgICAgICAgICAgKHN0YXRlLmZsYWdzID8gY3JjMzIoc3RhdGUuY2hlY2ssIG91dHB1dCwgX291dCwgcHV0IC0gX291dCkgOiBhZGxlcjMyKHN0YXRlLmNoZWNrLCBvdXRwdXQsIF9vdXQsIHB1dCAtIF9vdXQpKTsKCiAgICAgICAgICB9CiAgICAgICAgICBfb3V0ID0gbGVmdDsKICAgICAgICAgIC8vIE5COiBjcmMzMiBzdG9yZWQgYXMgc2lnbmVkIDMyLWJpdCBpbnQsIHpzd2FwMzIgcmV0dXJucyBzaWduZWQgdG9vCiAgICAgICAgICBpZiAoKHN0YXRlLmZsYWdzID8gaG9sZCA6IHpzd2FwMzIoaG9sZCkpICE9PSBzdGF0ZS5jaGVjaykgewogICAgICAgICAgICBzdHJtLm1zZyA9ICdpbmNvcnJlY3QgZGF0YSBjaGVjayc7CiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgLy89PT0gSU5JVEJJVFMoKTsKICAgICAgICAgIGhvbGQgPSAwOwogICAgICAgICAgYml0cyA9IDA7CiAgICAgICAgICAvLz09PS8vCiAgICAgICAgICAvL1RyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICBjaGVjayBtYXRjaGVzIHRyYWlsZXJcbiIpKTsKICAgICAgICB9CiAgICAgICAgc3RhdGUubW9kZSA9IExFTkdUSDsKICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgIGNhc2UgTEVOR1RIOgogICAgICAgIGlmIChzdGF0ZS53cmFwICYmIHN0YXRlLmZsYWdzKSB7CiAgICAgICAgICAvLz09PSBORUVEQklUUygzMik7CiAgICAgICAgICB3aGlsZSAoYml0cyA8IDMyKSB7CiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgICAgICBoYXZlLS07CiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzOwogICAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgICB9CiAgICAgICAgICAvLz09PS8vCiAgICAgICAgICBpZiAoaG9sZCAhPT0gKHN0YXRlLnRvdGFsICYgMHhmZmZmZmZmZikpIHsKICAgICAgICAgICAgc3RybS5tc2cgPSAnaW5jb3JyZWN0IGxlbmd0aCBjaGVjayc7CiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgLy89PT0gSU5JVEJJVFMoKTsKICAgICAgICAgIGhvbGQgPSAwOwogICAgICAgICAgYml0cyA9IDA7CiAgICAgICAgICAvLz09PS8vCiAgICAgICAgICAvL1RyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICBsZW5ndGggbWF0Y2hlcyB0cmFpbGVyXG4iKSk7CiAgICAgICAgfQogICAgICAgIHN0YXRlLm1vZGUgPSBET05FOwogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBET05FOgogICAgICAgIHJldCA9IFpfU1RSRUFNX0VORDsKICAgICAgICBicmVhayBpbmZfbGVhdmU7CiAgICAgIGNhc2UgQkFEOgogICAgICAgIHJldCA9IFpfREFUQV9FUlJPUjsKICAgICAgICBicmVhayBpbmZfbGVhdmU7CiAgICAgIGNhc2UgTUVNOgogICAgICAgIHJldHVybiBaX01FTV9FUlJPUjsKICAgICAgY2FzZSBTWU5DOgogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CiAgICB9CiAgfQoKICAvLyBpbmZfbGVhdmUgPC0gaGVyZSBpcyByZWFsIHBsYWNlIGZvciAiZ290byBpbmZfbGVhdmUiLCBlbXVsYXRlZCB2aWEgImJyZWFrIGluZl9sZWF2ZSIKCiAgLyoKICAgICBSZXR1cm4gZnJvbSBpbmZsYXRlKCksIHVwZGF0aW5nIHRoZSB0b3RhbCBjb3VudHMgYW5kIHRoZSBjaGVjayB2YWx1ZS4KICAgICBJZiB0aGVyZSB3YXMgbm8gcHJvZ3Jlc3MgZHVyaW5nIHRoZSBpbmZsYXRlKCkgY2FsbCwgcmV0dXJuIGEgYnVmZmVyCiAgICAgZXJyb3IuICBDYWxsIHVwZGF0ZXdpbmRvdygpIHRvIGNyZWF0ZSBhbmQvb3IgdXBkYXRlIHRoZSB3aW5kb3cgc3RhdGUuCiAgICAgTm90ZTogYSBtZW1vcnkgZXJyb3IgZnJvbSBpbmZsYXRlKCkgaXMgbm9uLXJlY292ZXJhYmxlLgogICAqLwoKICAvLy0tLSBSRVNUT1JFKCkgLS0tCiAgc3RybS5uZXh0X291dCA9IHB1dDsKICBzdHJtLmF2YWlsX291dCA9IGxlZnQ7CiAgc3RybS5uZXh0X2luID0gbmV4dDsKICBzdHJtLmF2YWlsX2luID0gaGF2ZTsKICBzdGF0ZS5ob2xkID0gaG9sZDsKICBzdGF0ZS5iaXRzID0gYml0czsKICAvLy0tLQoKICBpZiAoc3RhdGUud3NpemUgfHwgKF9vdXQgIT09IHN0cm0uYXZhaWxfb3V0ICYmIHN0YXRlLm1vZGUgPCBCQUQgJiYKICAgICAgICAgICAgICAgICAgICAgIChzdGF0ZS5tb2RlIDwgQ0hFQ0sgfHwgZmx1c2ggIT09IFpfRklOSVNIKSkpIHsKICAgIGlmICh1cGRhdGV3aW5kb3coc3RybSwgc3RybS5vdXRwdXQsIHN0cm0ubmV4dF9vdXQsIF9vdXQgLSBzdHJtLmF2YWlsX291dCkpIHsKICAgICAgc3RhdGUubW9kZSA9IE1FTTsKICAgICAgcmV0dXJuIFpfTUVNX0VSUk9SOwogICAgfQogIH0KICBfaW4gLT0gc3RybS5hdmFpbF9pbjsKICBfb3V0IC09IHN0cm0uYXZhaWxfb3V0OwogIHN0cm0udG90YWxfaW4gKz0gX2luOwogIHN0cm0udG90YWxfb3V0ICs9IF9vdXQ7CiAgc3RhdGUudG90YWwgKz0gX291dDsKICBpZiAoc3RhdGUud3JhcCAmJiBfb3V0KSB7CiAgICBzdHJtLmFkbGVyID0gc3RhdGUuY2hlY2sgPSAvKlVQREFURShzdGF0ZS5jaGVjaywgc3RybS5uZXh0X291dCAtIF9vdXQsIF9vdXQpOyovCiAgICAgIChzdGF0ZS5mbGFncyA/IGNyYzMyKHN0YXRlLmNoZWNrLCBvdXRwdXQsIF9vdXQsIHN0cm0ubmV4dF9vdXQgLSBfb3V0KSA6IGFkbGVyMzIoc3RhdGUuY2hlY2ssIG91dHB1dCwgX291dCwgc3RybS5uZXh0X291dCAtIF9vdXQpKTsKICB9CiAgc3RybS5kYXRhX3R5cGUgPSBzdGF0ZS5iaXRzICsgKHN0YXRlLmxhc3QgPyA2NCA6IDApICsKICAgICAgICAgICAgICAgICAgICAoc3RhdGUubW9kZSA9PT0gVFlQRSA/IDEyOCA6IDApICsKICAgICAgICAgICAgICAgICAgICAoc3RhdGUubW9kZSA9PT0gTEVOXyB8fCBzdGF0ZS5tb2RlID09PSBDT1BZXyA/IDI1NiA6IDApOwogIGlmICgoKF9pbiA9PT0gMCAmJiBfb3V0ID09PSAwKSB8fCBmbHVzaCA9PT0gWl9GSU5JU0gpICYmIHJldCA9PT0gWl9PSykgewogICAgcmV0ID0gWl9CVUZfRVJST1I7CiAgfQogIHJldHVybiByZXQ7Cn0KCmZ1bmN0aW9uIGluZmxhdGVFbmQoc3RybSkgewoKICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUgLyp8fCBzdHJtLT56ZnJlZSA9PSAoZnJlZV9mdW5jKTAqLykgewogICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwogIH0KCiAgdmFyIHN0YXRlID0gc3RybS5zdGF0ZTsKICBpZiAoc3RhdGUud2luZG93KSB7CiAgICBzdGF0ZS53aW5kb3cgPSBudWxsOwogIH0KICBzdHJtLnN0YXRlID0gbnVsbDsKICByZXR1cm4gWl9PSzsKfQoKZnVuY3Rpb24gaW5mbGF0ZUdldEhlYWRlcihzdHJtLCBoZWFkKSB7CiAgdmFyIHN0YXRlOwoKICAvKiBjaGVjayBzdGF0ZSAqLwogIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH0KICBzdGF0ZSA9IHN0cm0uc3RhdGU7CiAgaWYgKChzdGF0ZS53cmFwICYgMikgPT09IDApIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9CgogIC8qIHNhdmUgaGVhZGVyIHN0cnVjdHVyZSAqLwogIHN0YXRlLmhlYWQgPSBoZWFkOwogIGhlYWQuZG9uZSA9IGZhbHNlOwogIHJldHVybiBaX09LOwp9CgpmdW5jdGlvbiBpbmZsYXRlU2V0RGljdGlvbmFyeShzdHJtLCBkaWN0aW9uYXJ5KSB7CiAgdmFyIGRpY3RMZW5ndGggPSBkaWN0aW9uYXJ5Lmxlbmd0aDsKCiAgdmFyIHN0YXRlOwogIHZhciBkaWN0aWQ7CiAgdmFyIHJldDsKCiAgLyogY2hlY2sgc3RhdGUgKi8KICBpZiAoIXN0cm0gLyogPT0gWl9OVUxMICovIHx8ICFzdHJtLnN0YXRlIC8qID09IFpfTlVMTCAqLykgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH0KICBzdGF0ZSA9IHN0cm0uc3RhdGU7CgogIGlmIChzdGF0ZS53cmFwICE9PSAwICYmIHN0YXRlLm1vZGUgIT09IERJQ1QpIHsKICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKICB9CgogIC8qIGNoZWNrIGZvciBjb3JyZWN0IGRpY3Rpb25hcnkgaWRlbnRpZmllciAqLwogIGlmIChzdGF0ZS5tb2RlID09PSBESUNUKSB7CiAgICBkaWN0aWQgPSAxOyAvKiBhZGxlcjMyKDAsIG51bGwsIDApKi8KICAgIC8qIGRpY3RpZCA9IGFkbGVyMzIoZGljdGlkLCBkaWN0aW9uYXJ5LCBkaWN0TGVuZ3RoKTsgKi8KICAgIGRpY3RpZCA9IGFkbGVyMzIoZGljdGlkLCBkaWN0aW9uYXJ5LCBkaWN0TGVuZ3RoLCAwKTsKICAgIGlmIChkaWN0aWQgIT09IHN0YXRlLmNoZWNrKSB7CiAgICAgIHJldHVybiBaX0RBVEFfRVJST1I7CiAgICB9CiAgfQogIC8qIGNvcHkgZGljdGlvbmFyeSB0byB3aW5kb3cgdXNpbmcgdXBkYXRld2luZG93KCksIHdoaWNoIHdpbGwgYW1lbmQgdGhlCiAgIGV4aXN0aW5nIGRpY3Rpb25hcnkgaWYgYXBwcm9wcmlhdGUgKi8KICByZXQgPSB1cGRhdGV3aW5kb3coc3RybSwgZGljdGlvbmFyeSwgZGljdExlbmd0aCwgZGljdExlbmd0aCk7CiAgaWYgKHJldCkgewogICAgc3RhdGUubW9kZSA9IE1FTTsKICAgIHJldHVybiBaX01FTV9FUlJPUjsKICB9CiAgc3RhdGUuaGF2ZWRpY3QgPSAxOwogIC8vIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICBkaWN0aW9uYXJ5IHNldFxuIikpOwogIHJldHVybiBaX09LOwp9CgpleHBvcnRzLmluZmxhdGVSZXNldCA9IGluZmxhdGVSZXNldDsKZXhwb3J0cy5pbmZsYXRlUmVzZXQyID0gaW5mbGF0ZVJlc2V0MjsKZXhwb3J0cy5pbmZsYXRlUmVzZXRLZWVwID0gaW5mbGF0ZVJlc2V0S2VlcDsKZXhwb3J0cy5pbmZsYXRlSW5pdCA9IGluZmxhdGVJbml0OwpleHBvcnRzLmluZmxhdGVJbml0MiA9IGluZmxhdGVJbml0MjsKZXhwb3J0cy5pbmZsYXRlID0gaW5mbGF0ZTsKZXhwb3J0cy5pbmZsYXRlRW5kID0gaW5mbGF0ZUVuZDsKZXhwb3J0cy5pbmZsYXRlR2V0SGVhZGVyID0gaW5mbGF0ZUdldEhlYWRlcjsKZXhwb3J0cy5pbmZsYXRlU2V0RGljdGlvbmFyeSA9IGluZmxhdGVTZXREaWN0aW9uYXJ5OwpleHBvcnRzLmluZmxhdGVJbmZvID0gJ3Bha28gaW5mbGF0ZSAoZnJvbSBOb2RlY2EgcHJvamVjdCknOwoKLyogTm90IGltcGxlbWVudGVkCmV4cG9ydHMuaW5mbGF0ZUNvcHkgPSBpbmZsYXRlQ29weTsKZXhwb3J0cy5pbmZsYXRlR2V0RGljdGlvbmFyeSA9IGluZmxhdGVHZXREaWN0aW9uYXJ5OwpleHBvcnRzLmluZmxhdGVNYXJrID0gaW5mbGF0ZU1hcms7CmV4cG9ydHMuaW5mbGF0ZVByaW1lID0gaW5mbGF0ZVByaW1lOwpleHBvcnRzLmluZmxhdGVTeW5jID0gaW5mbGF0ZVN5bmM7CmV4cG9ydHMuaW5mbGF0ZVN5bmNQb2ludCA9IGluZmxhdGVTeW5jUG9pbnQ7CmV4cG9ydHMuaW5mbGF0ZVVuZGVybWluZSA9IGluZmxhdGVVbmRlcm1pbmU7CiovCgoKLyoqKi8gfSksCi8qIDE1OCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyCi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luCi8vCi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlcwovLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgovLwovLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSwKLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdAovLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6Ci8vCi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90Ci8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmUKLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmUKLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLgovLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZQovLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi4KCi8vIFNlZSBzdGF0ZSBkZWZzIGZyb20gaW5mbGF0ZS5qcwp2YXIgQkFEID0gMzA7ICAgICAgIC8qIGdvdCBhIGRhdGEgZXJyb3IgLS0gcmVtYWluIGhlcmUgdW50aWwgcmVzZXQgKi8KdmFyIFRZUEUgPSAxMjsgICAgICAvKiBpOiB3YWl0aW5nIGZvciB0eXBlIGJpdHMsIGluY2x1ZGluZyBsYXN0LWZsYWcgYml0ICovCgovKgogICBEZWNvZGUgbGl0ZXJhbCwgbGVuZ3RoLCBhbmQgZGlzdGFuY2UgY29kZXMgYW5kIHdyaXRlIG91dCB0aGUgcmVzdWx0aW5nCiAgIGxpdGVyYWwgYW5kIG1hdGNoIGJ5dGVzIHVudGlsIGVpdGhlciBub3QgZW5vdWdoIGlucHV0IG9yIG91dHB1dCBpcwogICBhdmFpbGFibGUsIGFuIGVuZC1vZi1ibG9jayBpcyBlbmNvdW50ZXJlZCwgb3IgYSBkYXRhIGVycm9yIGlzIGVuY291bnRlcmVkLgogICBXaGVuIGxhcmdlIGVub3VnaCBpbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMgYXJlIHN1cHBsaWVkIHRvIGluZmxhdGUoKSwgZm9yCiAgIGV4YW1wbGUsIGEgMTZLIGlucHV0IGJ1ZmZlciBhbmQgYSA2NEsgb3V0cHV0IGJ1ZmZlciwgbW9yZSB0aGFuIDk1JSBvZiB0aGUKICAgaW5mbGF0ZSBleGVjdXRpb24gdGltZSBpcyBzcGVudCBpbiB0aGlzIHJvdXRpbmUuCgogICBFbnRyeSBhc3N1bXB0aW9uczoKCiAgICAgICAgc3RhdGUubW9kZSA9PT0gTEVOCiAgICAgICAgc3RybS5hdmFpbF9pbiA+PSA2CiAgICAgICAgc3RybS5hdmFpbF9vdXQgPj0gMjU4CiAgICAgICAgc3RhcnQgPj0gc3RybS5hdmFpbF9vdXQKICAgICAgICBzdGF0ZS5iaXRzIDwgOAoKICAgT24gcmV0dXJuLCBzdGF0ZS5tb2RlIGlzIG9uZSBvZjoKCiAgICAgICAgTEVOIC0tIHJhbiBvdXQgb2YgZW5vdWdoIG91dHB1dCBzcGFjZSBvciBlbm91Z2ggYXZhaWxhYmxlIGlucHV0CiAgICAgICAgVFlQRSAtLSByZWFjaGVkIGVuZCBvZiBibG9jayBjb2RlLCBpbmZsYXRlKCkgdG8gaW50ZXJwcmV0IG5leHQgYmxvY2sKICAgICAgICBCQUQgLS0gZXJyb3IgaW4gYmxvY2sgZGF0YQoKICAgTm90ZXM6CgogICAgLSBUaGUgbWF4aW11bSBpbnB1dCBiaXRzIHVzZWQgYnkgYSBsZW5ndGgvZGlzdGFuY2UgcGFpciBpcyAxNSBiaXRzIGZvciB0aGUKICAgICAgbGVuZ3RoIGNvZGUsIDUgYml0cyBmb3IgdGhlIGxlbmd0aCBleHRyYSwgMTUgYml0cyBmb3IgdGhlIGRpc3RhbmNlIGNvZGUsCiAgICAgIGFuZCAxMyBiaXRzIGZvciB0aGUgZGlzdGFuY2UgZXh0cmEuICBUaGlzIHRvdGFscyA0OCBiaXRzLCBvciBzaXggYnl0ZXMuCiAgICAgIFRoZXJlZm9yZSBpZiBzdHJtLmF2YWlsX2luID49IDYsIHRoZW4gdGhlcmUgaXMgZW5vdWdoIGlucHV0IHRvIGF2b2lkCiAgICAgIGNoZWNraW5nIGZvciBhdmFpbGFibGUgaW5wdXQgd2hpbGUgZGVjb2RpbmcuCgogICAgLSBUaGUgbWF4aW11bSBieXRlcyB0aGF0IGEgc2luZ2xlIGxlbmd0aC9kaXN0YW5jZSBwYWlyIGNhbiBvdXRwdXQgaXMgMjU4CiAgICAgIGJ5dGVzLCB3aGljaCBpcyB0aGUgbWF4aW11bSBsZW5ndGggdGhhdCBjYW4gYmUgY29kZWQuICBpbmZsYXRlX2Zhc3QoKQogICAgICByZXF1aXJlcyBzdHJtLmF2YWlsX291dCA+PSAyNTggZm9yIGVhY2ggbG9vcCB0byBhdm9pZCBjaGVja2luZyBmb3IKICAgICAgb3V0cHV0IHNwYWNlLgogKi8KbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmZsYXRlX2Zhc3Qoc3RybSwgc3RhcnQpIHsKICB2YXIgc3RhdGU7CiAgdmFyIF9pbjsgICAgICAgICAgICAgICAgICAgIC8qIGxvY2FsIHN0cm0uaW5wdXQgKi8KICB2YXIgbGFzdDsgICAgICAgICAgICAgICAgICAgLyogaGF2ZSBlbm91Z2ggaW5wdXQgd2hpbGUgaW4gPCBsYXN0ICovCiAgdmFyIF9vdXQ7ICAgICAgICAgICAgICAgICAgIC8qIGxvY2FsIHN0cm0ub3V0cHV0ICovCiAgdmFyIGJlZzsgICAgICAgICAgICAgICAgICAgIC8qIGluZmxhdGUoKSdzIGluaXRpYWwgc3RybS5vdXRwdXQgKi8KICB2YXIgZW5kOyAgICAgICAgICAgICAgICAgICAgLyogd2hpbGUgb3V0IDwgZW5kLCBlbm91Z2ggc3BhY2UgYXZhaWxhYmxlICovCi8vI2lmZGVmIElORkxBVEVfU1RSSUNUCiAgdmFyIGRtYXg7ICAgICAgICAgICAgICAgICAgIC8qIG1heGltdW0gZGlzdGFuY2UgZnJvbSB6bGliIGhlYWRlciAqLwovLyNlbmRpZgogIHZhciB3c2l6ZTsgICAgICAgICAgICAgICAgICAvKiB3aW5kb3cgc2l6ZSBvciB6ZXJvIGlmIG5vdCB1c2luZyB3aW5kb3cgKi8KICB2YXIgd2hhdmU7ICAgICAgICAgICAgICAgICAgLyogdmFsaWQgYnl0ZXMgaW4gdGhlIHdpbmRvdyAqLwogIHZhciB3bmV4dDsgICAgICAgICAgICAgICAgICAvKiB3aW5kb3cgd3JpdGUgaW5kZXggKi8KICAvLyBVc2UgYHNfd2luZG93YCBpbnN0ZWFkIGB3aW5kb3dgLCBhdm9pZCBjb25mbGljdCB3aXRoIGluc3RydW1lbnRhdGlvbiB0b29scwogIHZhciBzX3dpbmRvdzsgICAgICAgICAgICAgICAvKiBhbGxvY2F0ZWQgc2xpZGluZyB3aW5kb3csIGlmIHdzaXplICE9IDAgKi8KICB2YXIgaG9sZDsgICAgICAgICAgICAgICAgICAgLyogbG9jYWwgc3RybS5ob2xkICovCiAgdmFyIGJpdHM7ICAgICAgICAgICAgICAgICAgIC8qIGxvY2FsIHN0cm0uYml0cyAqLwogIHZhciBsY29kZTsgICAgICAgICAgICAgICAgICAvKiBsb2NhbCBzdHJtLmxlbmNvZGUgKi8KICB2YXIgZGNvZGU7ICAgICAgICAgICAgICAgICAgLyogbG9jYWwgc3RybS5kaXN0Y29kZSAqLwogIHZhciBsbWFzazsgICAgICAgICAgICAgICAgICAvKiBtYXNrIGZvciBmaXJzdCBsZXZlbCBvZiBsZW5ndGggY29kZXMgKi8KICB2YXIgZG1hc2s7ICAgICAgICAgICAgICAgICAgLyogbWFzayBmb3IgZmlyc3QgbGV2ZWwgb2YgZGlzdGFuY2UgY29kZXMgKi8KICB2YXIgaGVyZTsgICAgICAgICAgICAgICAgICAgLyogcmV0cmlldmVkIHRhYmxlIGVudHJ5ICovCiAgdmFyIG9wOyAgICAgICAgICAgICAgICAgICAgIC8qIGNvZGUgYml0cywgb3BlcmF0aW9uLCBleHRyYSBiaXRzLCBvciAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgd2luZG93IHBvc2l0aW9uLCB3aW5kb3cgYnl0ZXMgdG8gY29weSAqLwogIHZhciBsZW47ICAgICAgICAgICAgICAgICAgICAvKiBtYXRjaCBsZW5ndGgsIHVudXNlZCBieXRlcyAqLwogIHZhciBkaXN0OyAgICAgICAgICAgICAgICAgICAvKiBtYXRjaCBkaXN0YW5jZSAqLwogIHZhciBmcm9tOyAgICAgICAgICAgICAgICAgICAvKiB3aGVyZSB0byBjb3B5IG1hdGNoIGZyb20gKi8KICB2YXIgZnJvbV9zb3VyY2U7CgoKICB2YXIgaW5wdXQsIG91dHB1dDsgLy8gSlMgc3BlY2lmaWMsIGJlY2F1c2Ugd2UgaGF2ZSBubyBwb2ludGVycwoKICAvKiBjb3B5IHN0YXRlIHRvIGxvY2FsIHZhcmlhYmxlcyAqLwogIHN0YXRlID0gc3RybS5zdGF0ZTsKICAvL2hlcmUgPSBzdGF0ZS5oZXJlOwogIF9pbiA9IHN0cm0ubmV4dF9pbjsKICBpbnB1dCA9IHN0cm0uaW5wdXQ7CiAgbGFzdCA9IF9pbiArIChzdHJtLmF2YWlsX2luIC0gNSk7CiAgX291dCA9IHN0cm0ubmV4dF9vdXQ7CiAgb3V0cHV0ID0gc3RybS5vdXRwdXQ7CiAgYmVnID0gX291dCAtIChzdGFydCAtIHN0cm0uYXZhaWxfb3V0KTsKICBlbmQgPSBfb3V0ICsgKHN0cm0uYXZhaWxfb3V0IC0gMjU3KTsKLy8jaWZkZWYgSU5GTEFURV9TVFJJQ1QKICBkbWF4ID0gc3RhdGUuZG1heDsKLy8jZW5kaWYKICB3c2l6ZSA9IHN0YXRlLndzaXplOwogIHdoYXZlID0gc3RhdGUud2hhdmU7CiAgd25leHQgPSBzdGF0ZS53bmV4dDsKICBzX3dpbmRvdyA9IHN0YXRlLndpbmRvdzsKICBob2xkID0gc3RhdGUuaG9sZDsKICBiaXRzID0gc3RhdGUuYml0czsKICBsY29kZSA9IHN0YXRlLmxlbmNvZGU7CiAgZGNvZGUgPSBzdGF0ZS5kaXN0Y29kZTsKICBsbWFzayA9ICgxIDw8IHN0YXRlLmxlbmJpdHMpIC0gMTsKICBkbWFzayA9ICgxIDw8IHN0YXRlLmRpc3RiaXRzKSAtIDE7CgoKICAvKiBkZWNvZGUgbGl0ZXJhbHMgYW5kIGxlbmd0aC9kaXN0YW5jZXMgdW50aWwgZW5kLW9mLWJsb2NrIG9yIG5vdCBlbm91Z2gKICAgICBpbnB1dCBkYXRhIG9yIG91dHB1dCBzcGFjZSAqLwoKICB0b3A6CiAgZG8gewogICAgaWYgKGJpdHMgPCAxNSkgewogICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzOwogICAgICBiaXRzICs9IDg7CiAgICAgIGhvbGQgKz0gaW5wdXRbX2luKytdIDw8IGJpdHM7CiAgICAgIGJpdHMgKz0gODsKICAgIH0KCiAgICBoZXJlID0gbGNvZGVbaG9sZCAmIGxtYXNrXTsKCiAgICBkb2xlbjoKICAgIGZvciAoOzspIHsgLy8gR290byBlbXVsYXRpb24KICAgICAgb3AgPSBoZXJlID4+PiAyNC8qaGVyZS5iaXRzKi87CiAgICAgIGhvbGQgPj4+PSBvcDsKICAgICAgYml0cyAtPSBvcDsKICAgICAgb3AgPSAoaGVyZSA+Pj4gMTYpICYgMHhmZi8qaGVyZS5vcCovOwogICAgICBpZiAob3AgPT09IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxpdGVyYWwgKi8KICAgICAgICAvL1RyYWNldnYoKHN0ZGVyciwgaGVyZS52YWwgPj0gMHgyMCAmJiBoZXJlLnZhbCA8IDB4N2YgPwogICAgICAgIC8vICAgICAgICAiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsICclYydcbiIgOgogICAgICAgIC8vICAgICAgICAiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsIDB4JTAyeFxuIiwgaGVyZS52YWwpKTsKICAgICAgICBvdXRwdXRbX291dCsrXSA9IGhlcmUgJiAweGZmZmYvKmhlcmUudmFsKi87CiAgICAgIH0KICAgICAgZWxzZSBpZiAob3AgJiAxNikgeyAgICAgICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBiYXNlICovCiAgICAgICAgbGVuID0gaGVyZSAmIDB4ZmZmZi8qaGVyZS52YWwqLzsKICAgICAgICBvcCAmPSAxNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgZXh0cmEgYml0cyAqLwogICAgICAgIGlmIChvcCkgewogICAgICAgICAgaWYgKGJpdHMgPCBvcCkgewogICAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzOwogICAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgICB9CiAgICAgICAgICBsZW4gKz0gaG9sZCAmICgoMSA8PCBvcCkgLSAxKTsKICAgICAgICAgIGhvbGQgPj4+PSBvcDsKICAgICAgICAgIGJpdHMgLT0gb3A7CiAgICAgICAgfQogICAgICAgIC8vVHJhY2V2digoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgICBsZW5ndGggJXVcbiIsIGxlbikpOwogICAgICAgIGlmIChiaXRzIDwgMTUpIHsKICAgICAgICAgIGhvbGQgKz0gaW5wdXRbX2luKytdIDw8IGJpdHM7CiAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzOwogICAgICAgICAgYml0cyArPSA4OwogICAgICAgIH0KICAgICAgICBoZXJlID0gZGNvZGVbaG9sZCAmIGRtYXNrXTsKCiAgICAgICAgZG9kaXN0OgogICAgICAgIGZvciAoOzspIHsgLy8gZ290byBlbXVsYXRpb24KICAgICAgICAgIG9wID0gaGVyZSA+Pj4gMjQvKmhlcmUuYml0cyovOwogICAgICAgICAgaG9sZCA+Pj49IG9wOwogICAgICAgICAgYml0cyAtPSBvcDsKICAgICAgICAgIG9wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmYvKmhlcmUub3AqLzsKCiAgICAgICAgICBpZiAob3AgJiAxNikgeyAgICAgICAgICAgICAgICAgICAgICAvKiBkaXN0YW5jZSBiYXNlICovCiAgICAgICAgICAgIGRpc3QgPSBoZXJlICYgMHhmZmZmLypoZXJlLnZhbCovOwogICAgICAgICAgICBvcCAmPSAxNTsgICAgICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBleHRyYSBiaXRzICovCiAgICAgICAgICAgIGlmIChiaXRzIDwgb3ApIHsKICAgICAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzOwogICAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgICAgICBpZiAoYml0cyA8IG9wKSB7CiAgICAgICAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzOwogICAgICAgICAgICAgICAgYml0cyArPSA4OwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBkaXN0ICs9IGhvbGQgJiAoKDEgPDwgb3ApIC0gMSk7Ci8vI2lmZGVmIElORkxBVEVfU1RSSUNUCiAgICAgICAgICAgIGlmIChkaXN0ID4gZG1heCkgewogICAgICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrJzsKICAgICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEOwogICAgICAgICAgICAgIGJyZWFrIHRvcDsKICAgICAgICAgICAgfQovLyNlbmRpZgogICAgICAgICAgICBob2xkID4+Pj0gb3A7CiAgICAgICAgICAgIGJpdHMgLT0gb3A7CiAgICAgICAgICAgIC8vVHJhY2V2digoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgICBkaXN0YW5jZSAldVxuIiwgZGlzdCkpOwogICAgICAgICAgICBvcCA9IF9vdXQgLSBiZWc7ICAgICAgICAgICAgICAgIC8qIG1heCBkaXN0YW5jZSBpbiBvdXRwdXQgKi8KICAgICAgICAgICAgaWYgKGRpc3QgPiBvcCkgeyAgICAgICAgICAgICAgICAvKiBzZWUgaWYgY29weSBmcm9tIHdpbmRvdyAqLwogICAgICAgICAgICAgIG9wID0gZGlzdCAtIG9wOyAgICAgICAgICAgICAgIC8qIGRpc3RhbmNlIGJhY2sgaW4gd2luZG93ICovCiAgICAgICAgICAgICAgaWYgKG9wID4gd2hhdmUpIHsKICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zYW5lKSB7CiAgICAgICAgICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrJzsKICAgICAgICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICAgICAgICAgICAgYnJlYWsgdG9wOwogICAgICAgICAgICAgICAgfQoKLy8gKCEpIFRoaXMgYmxvY2sgaXMgZGlzYWJsZWQgaW4gemxpYiBkZWZhdWx0cywKLy8gZG9uJ3QgZW5hYmxlIGl0IGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eQovLyNpZmRlZiBJTkZMQVRFX0FMTE9XX0lOVkFMSURfRElTVEFOQ0VfVE9PRkFSX0FSUlIKLy8gICAgICAgICAgICAgICAgaWYgKGxlbiA8PSBvcCAtIHdoYXZlKSB7Ci8vICAgICAgICAgICAgICAgICAgZG8gewovLyAgICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSAwOwovLyAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tbGVuKTsKLy8gICAgICAgICAgICAgICAgICBjb250aW51ZSB0b3A7Ci8vICAgICAgICAgICAgICAgIH0KLy8gICAgICAgICAgICAgICAgbGVuIC09IG9wIC0gd2hhdmU7Ci8vICAgICAgICAgICAgICAgIGRvIHsKLy8gICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IDA7Ci8vICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tb3AgPiB3aGF2ZSk7Ci8vICAgICAgICAgICAgICAgIGlmIChvcCA9PT0gMCkgewovLyAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDsKLy8gICAgICAgICAgICAgICAgICBkbyB7Ci8vICAgICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdOwovLyAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tbGVuKTsKLy8gICAgICAgICAgICAgICAgICBjb250aW51ZSB0b3A7Ci8vICAgICAgICAgICAgICAgIH0KLy8jZW5kaWYKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZnJvbSA9IDA7IC8vIHdpbmRvdyBpbmRleAogICAgICAgICAgICAgIGZyb21fc291cmNlID0gc193aW5kb3c7CiAgICAgICAgICAgICAgaWYgKHduZXh0ID09PSAwKSB7ICAgICAgICAgICAvKiB2ZXJ5IGNvbW1vbiBjYXNlICovCiAgICAgICAgICAgICAgICBmcm9tICs9IHdzaXplIC0gb3A7CiAgICAgICAgICAgICAgICBpZiAob3AgPCBsZW4pIHsgICAgICAgICAvKiBzb21lIGZyb20gd2luZG93ICovCiAgICAgICAgICAgICAgICAgIGxlbiAtPSBvcDsKICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gc193aW5kb3dbZnJvbSsrXTsKICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7CiAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDsgIC8qIHJlc3QgZnJvbSBvdXRwdXQgKi8KICAgICAgICAgICAgICAgICAgZnJvbV9zb3VyY2UgPSBvdXRwdXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgaWYgKHduZXh0IDwgb3ApIHsgICAgICAvKiB3cmFwIGFyb3VuZCB3aW5kb3cgKi8KICAgICAgICAgICAgICAgIGZyb20gKz0gd3NpemUgKyB3bmV4dCAtIG9wOwogICAgICAgICAgICAgICAgb3AgLT0gd25leHQ7CiAgICAgICAgICAgICAgICBpZiAob3AgPCBsZW4pIHsgICAgICAgICAvKiBzb21lIGZyb20gZW5kIG9mIHdpbmRvdyAqLwogICAgICAgICAgICAgICAgICBsZW4gLT0gb3A7CiAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IHNfd2luZG93W2Zyb20rK107CiAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tb3ApOwogICAgICAgICAgICAgICAgICBmcm9tID0gMDsKICAgICAgICAgICAgICAgICAgaWYgKHduZXh0IDwgbGVuKSB7ICAvKiBzb21lIGZyb20gc3RhcnQgb2Ygd2luZG93ICovCiAgICAgICAgICAgICAgICAgICAgb3AgPSB3bmV4dDsKICAgICAgICAgICAgICAgICAgICBsZW4gLT0gb3A7CiAgICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBzX3dpbmRvd1tmcm9tKytdOwogICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tb3ApOwogICAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDsgICAgICAvKiByZXN0IGZyb20gb3V0cHV0ICovCiAgICAgICAgICAgICAgICAgICAgZnJvbV9zb3VyY2UgPSBvdXRwdXQ7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbnRpZ3VvdXMgaW4gd2luZG93ICovCiAgICAgICAgICAgICAgICBmcm9tICs9IHduZXh0IC0gb3A7CiAgICAgICAgICAgICAgICBpZiAob3AgPCBsZW4pIHsgICAgICAgICAvKiBzb21lIGZyb20gd2luZG93ICovCiAgICAgICAgICAgICAgICAgIGxlbiAtPSBvcDsKICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gc193aW5kb3dbZnJvbSsrXTsKICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7CiAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDsgIC8qIHJlc3QgZnJvbSBvdXRwdXQgKi8KICAgICAgICAgICAgICAgICAgZnJvbV9zb3VyY2UgPSBvdXRwdXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHdoaWxlIChsZW4gPiAyKSB7CiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107CiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107CiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107CiAgICAgICAgICAgICAgICBsZW4gLT0gMzsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKGxlbikgewogICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBmcm9tX3NvdXJjZVtmcm9tKytdOwogICAgICAgICAgICAgICAgaWYgKGxlbiA+IDEpIHsKICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBmcm9tX3NvdXJjZVtmcm9tKytdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBmcm9tID0gX291dCAtIGRpc3Q7ICAgICAgICAgIC8qIGNvcHkgZGlyZWN0IGZyb20gb3V0cHV0ICovCiAgICAgICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1pbmltdW0gbGVuZ3RoIGlzIHRocmVlICovCiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdOwogICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBvdXRwdXRbZnJvbSsrXTsKICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gb3V0cHV0W2Zyb20rK107CiAgICAgICAgICAgICAgICBsZW4gLT0gMzsKICAgICAgICAgICAgICB9IHdoaWxlIChsZW4gPiAyKTsKICAgICAgICAgICAgICBpZiAobGVuKSB7CiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdOwogICAgICAgICAgICAgICAgaWYgKGxlbiA+IDEpIHsKICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBvdXRwdXRbZnJvbSsrXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKChvcCAmIDY0KSA9PT0gMCkgeyAgICAgICAgICAvKiAybmQgbGV2ZWwgZGlzdGFuY2UgY29kZSAqLwogICAgICAgICAgICBoZXJlID0gZGNvZGVbKGhlcmUgJiAweGZmZmYpLypoZXJlLnZhbCovICsgKGhvbGQgJiAoKDEgPDwgb3ApIC0gMSkpXTsKICAgICAgICAgICAgY29udGludWUgZG9kaXN0OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgY29kZSc7CiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7CiAgICAgICAgICAgIGJyZWFrIHRvcDsKICAgICAgICAgIH0KCiAgICAgICAgICBicmVhazsgLy8gbmVlZCB0byBlbXVsYXRlIGdvdG8gdmlhICJjb250aW51ZSIKICAgICAgICB9CiAgICAgIH0KICAgICAgZWxzZSBpZiAoKG9wICYgNjQpID09PSAwKSB7ICAgICAgICAgICAgICAvKiAybmQgbGV2ZWwgbGVuZ3RoIGNvZGUgKi8KICAgICAgICBoZXJlID0gbGNvZGVbKGhlcmUgJiAweGZmZmYpLypoZXJlLnZhbCovICsgKGhvbGQgJiAoKDEgPDwgb3ApIC0gMSkpXTsKICAgICAgICBjb250aW51ZSBkb2xlbjsKICAgICAgfQogICAgICBlbHNlIGlmIChvcCAmIDMyKSB7ICAgICAgICAgICAgICAgICAgICAgLyogZW5kLW9mLWJsb2NrICovCiAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICAgIGVuZCBvZiBibG9ja1xuIikpOwogICAgICAgIHN0YXRlLm1vZGUgPSBUWVBFOwogICAgICAgIGJyZWFrIHRvcDsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUnOwogICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7CiAgICAgICAgYnJlYWsgdG9wOwogICAgICB9CgogICAgICBicmVhazsgLy8gbmVlZCB0byBlbXVsYXRlIGdvdG8gdmlhICJjb250aW51ZSIKICAgIH0KICB9IHdoaWxlIChfaW4gPCBsYXN0ICYmIF9vdXQgPCBlbmQpOwoKICAvKiByZXR1cm4gdW51c2VkIGJ5dGVzIChvbiBlbnRyeSwgYml0cyA8IDgsIHNvIGluIHdvbid0IGdvIHRvbyBmYXIgYmFjaykgKi8KICBsZW4gPSBiaXRzID4+IDM7CiAgX2luIC09IGxlbjsKICBiaXRzIC09IGxlbiA8PCAzOwogIGhvbGQgJj0gKDEgPDwgYml0cykgLSAxOwoKICAvKiB1cGRhdGUgc3RhdGUgYW5kIHJldHVybiAqLwogIHN0cm0ubmV4dF9pbiA9IF9pbjsKICBzdHJtLm5leHRfb3V0ID0gX291dDsKICBzdHJtLmF2YWlsX2luID0gKF9pbiA8IGxhc3QgPyA1ICsgKGxhc3QgLSBfaW4pIDogNSAtIChfaW4gLSBsYXN0KSk7CiAgc3RybS5hdmFpbF9vdXQgPSAoX291dCA8IGVuZCA/IDI1NyArIChlbmQgLSBfb3V0KSA6IDI1NyAtIChfb3V0IC0gZW5kKSk7CiAgc3RhdGUuaG9sZCA9IGhvbGQ7CiAgc3RhdGUuYml0cyA9IGJpdHM7CiAgcmV0dXJuOwp9OwoKCi8qKiovIH0pLAovKiAxNTkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKCi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlcgovLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpbgovLwovLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAovLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMKLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KLy8KLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsCi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXQKLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgovLwovLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdAovLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlCi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlCi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmUKLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uCgp2YXIgdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM0KTsKCnZhciBNQVhCSVRTID0gMTU7CnZhciBFTk9VR0hfTEVOUyA9IDg1MjsKdmFyIEVOT1VHSF9ESVNUUyA9IDU5MjsKLy92YXIgRU5PVUdIID0gKEVOT1VHSF9MRU5TK0VOT1VHSF9ESVNUUyk7Cgp2YXIgQ09ERVMgPSAwOwp2YXIgTEVOUyA9IDE7CnZhciBESVNUUyA9IDI7Cgp2YXIgbGJhc2UgPSBbIC8qIExlbmd0aCBjb2RlcyAyNTcuLjI4NSBiYXNlICovCiAgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMywgMTUsIDE3LCAxOSwgMjMsIDI3LCAzMSwKICAzNSwgNDMsIDUxLCA1OSwgNjcsIDgzLCA5OSwgMTE1LCAxMzEsIDE2MywgMTk1LCAyMjcsIDI1OCwgMCwgMApdOwoKdmFyIGxleHQgPSBbIC8qIExlbmd0aCBjb2RlcyAyNTcuLjI4NSBleHRyYSAqLwogIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTcsIDE3LCAxNywgMTcsIDE4LCAxOCwgMTgsIDE4LAogIDE5LCAxOSwgMTksIDE5LCAyMCwgMjAsIDIwLCAyMCwgMjEsIDIxLCAyMSwgMjEsIDE2LCA3MiwgNzgKXTsKCnZhciBkYmFzZSA9IFsgLyogRGlzdGFuY2UgY29kZXMgMC4uMjkgYmFzZSAqLwogIDEsIDIsIDMsIDQsIDUsIDcsIDksIDEzLCAxNywgMjUsIDMzLCA0OSwgNjUsIDk3LCAxMjksIDE5MywKICAyNTcsIDM4NSwgNTEzLCA3NjksIDEwMjUsIDE1MzcsIDIwNDksIDMwNzMsIDQwOTcsIDYxNDUsCiAgODE5MywgMTIyODksIDE2Mzg1LCAyNDU3NywgMCwgMApdOwoKdmFyIGRleHQgPSBbIC8qIERpc3RhbmNlIGNvZGVzIDAuLjI5IGV4dHJhICovCiAgMTYsIDE2LCAxNiwgMTYsIDE3LCAxNywgMTgsIDE4LCAxOSwgMTksIDIwLCAyMCwgMjEsIDIxLCAyMiwgMjIsCiAgMjMsIDIzLCAyNCwgMjQsIDI1LCAyNSwgMjYsIDI2LCAyNywgMjcsCiAgMjgsIDI4LCAyOSwgMjksIDY0LCA2NApdOwoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmZsYXRlX3RhYmxlKHR5cGUsIGxlbnMsIGxlbnNfaW5kZXgsIGNvZGVzLCB0YWJsZSwgdGFibGVfaW5kZXgsIHdvcmssIG9wdHMpCnsKICB2YXIgYml0cyA9IG9wdHMuYml0czsKICAgICAgLy9oZXJlID0gb3B0cy5oZXJlOyAvKiB0YWJsZSBlbnRyeSBmb3IgZHVwbGljYXRpb24gKi8KCiAgdmFyIGxlbiA9IDA7ICAgICAgICAgICAgICAgLyogYSBjb2RlJ3MgbGVuZ3RoIGluIGJpdHMgKi8KICB2YXIgc3ltID0gMDsgICAgICAgICAgICAgICAvKiBpbmRleCBvZiBjb2RlIHN5bWJvbHMgKi8KICB2YXIgbWluID0gMCwgbWF4ID0gMDsgICAgICAgICAgLyogbWluaW11bSBhbmQgbWF4aW11bSBjb2RlIGxlbmd0aHMgKi8KICB2YXIgcm9vdCA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgaW5kZXggYml0cyBmb3Igcm9vdCB0YWJsZSAqLwogIHZhciBjdXJyID0gMDsgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBpbmRleCBiaXRzIGZvciBjdXJyZW50IHRhYmxlICovCiAgdmFyIGRyb3AgPSAwOyAgICAgICAgICAgICAgLyogY29kZSBiaXRzIHRvIGRyb3AgZm9yIHN1Yi10YWJsZSAqLwogIHZhciBsZWZ0ID0gMDsgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIHByZWZpeCBjb2RlcyBhdmFpbGFibGUgKi8KICB2YXIgdXNlZCA9IDA7ICAgICAgICAgICAgICAvKiBjb2RlIGVudHJpZXMgaW4gdGFibGUgdXNlZCAqLwogIHZhciBodWZmID0gMDsgICAgICAgICAgICAgIC8qIEh1ZmZtYW4gY29kZSAqLwogIHZhciBpbmNyOyAgICAgICAgICAgICAgLyogZm9yIGluY3JlbWVudGluZyBjb2RlLCBpbmRleCAqLwogIHZhciBmaWxsOyAgICAgICAgICAgICAgLyogaW5kZXggZm9yIHJlcGxpY2F0aW5nIGVudHJpZXMgKi8KICB2YXIgbG93OyAgICAgICAgICAgICAgIC8qIGxvdyBiaXRzIGZvciBjdXJyZW50IHJvb3QgZW50cnkgKi8KICB2YXIgbWFzazsgICAgICAgICAgICAgIC8qIG1hc2sgZm9yIGxvdyByb290IGJpdHMgKi8KICB2YXIgbmV4dDsgICAgICAgICAgICAgLyogbmV4dCBhdmFpbGFibGUgc3BhY2UgaW4gdGFibGUgKi8KICB2YXIgYmFzZSA9IG51bGw7ICAgICAvKiBiYXNlIHZhbHVlIHRhYmxlIHRvIHVzZSAqLwogIHZhciBiYXNlX2luZGV4ID0gMDsKLy8gIHZhciBzaG9leHRyYTsgICAgLyogZXh0cmEgYml0cyB0YWJsZSB0byB1c2UgKi8KICB2YXIgZW5kOyAgICAgICAgICAgICAgICAgICAgLyogdXNlIGJhc2UgYW5kIGV4dHJhIGZvciBzeW1ib2wgPiBlbmQgKi8KICB2YXIgY291bnQgPSBuZXcgdXRpbHMuQnVmMTYoTUFYQklUUyArIDEpOyAvL1tNQVhCSVRTKzFdOyAgICAvKiBudW1iZXIgb2YgY29kZXMgb2YgZWFjaCBsZW5ndGggKi8KICB2YXIgb2ZmcyA9IG5ldyB1dGlscy5CdWYxNihNQVhCSVRTICsgMSk7IC8vW01BWEJJVFMrMV07ICAgICAvKiBvZmZzZXRzIGluIHRhYmxlIGZvciBlYWNoIGxlbmd0aCAqLwogIHZhciBleHRyYSA9IG51bGw7CiAgdmFyIGV4dHJhX2luZGV4ID0gMDsKCiAgdmFyIGhlcmVfYml0cywgaGVyZV9vcCwgaGVyZV92YWw7CgogIC8qCiAgIFByb2Nlc3MgYSBzZXQgb2YgY29kZSBsZW5ndGhzIHRvIGNyZWF0ZSBhIGNhbm9uaWNhbCBIdWZmbWFuIGNvZGUuICBUaGUKICAgY29kZSBsZW5ndGhzIGFyZSBsZW5zWzAuLmNvZGVzLTFdLiAgRWFjaCBsZW5ndGggY29ycmVzcG9uZHMgdG8gdGhlCiAgIHN5bWJvbHMgMC4uY29kZXMtMS4gIFRoZSBIdWZmbWFuIGNvZGUgaXMgZ2VuZXJhdGVkIGJ5IGZpcnN0IHNvcnRpbmcgdGhlCiAgIHN5bWJvbHMgYnkgbGVuZ3RoIGZyb20gc2hvcnQgdG8gbG9uZywgYW5kIHJldGFpbmluZyB0aGUgc3ltYm9sIG9yZGVyCiAgIGZvciBjb2RlcyB3aXRoIGVxdWFsIGxlbmd0aHMuICBUaGVuIHRoZSBjb2RlIHN0YXJ0cyB3aXRoIGFsbCB6ZXJvIGJpdHMKICAgZm9yIHRoZSBmaXJzdCBjb2RlIG9mIHRoZSBzaG9ydGVzdCBsZW5ndGgsIGFuZCB0aGUgY29kZXMgYXJlIGludGVnZXIKICAgaW5jcmVtZW50cyBmb3IgdGhlIHNhbWUgbGVuZ3RoLCBhbmQgemVyb3MgYXJlIGFwcGVuZGVkIGFzIHRoZSBsZW5ndGgKICAgaW5jcmVhc2VzLiAgRm9yIHRoZSBkZWZsYXRlIGZvcm1hdCwgdGhlc2UgYml0cyBhcmUgc3RvcmVkIGJhY2t3YXJkcwogICBmcm9tIHRoZWlyIG1vcmUgbmF0dXJhbCBpbnRlZ2VyIGluY3JlbWVudCBvcmRlcmluZywgYW5kIHNvIHdoZW4gdGhlCiAgIGRlY29kaW5nIHRhYmxlcyBhcmUgYnVpbHQgaW4gdGhlIGxhcmdlIGxvb3AgYmVsb3csIHRoZSBpbnRlZ2VyIGNvZGVzCiAgIGFyZSBpbmNyZW1lbnRlZCBiYWNrd2FyZHMuCgogICBUaGlzIHJvdXRpbmUgYXNzdW1lcywgYnV0IGRvZXMgbm90IGNoZWNrLCB0aGF0IGFsbCBvZiB0aGUgZW50cmllcyBpbgogICBsZW5zW10gYXJlIGluIHRoZSByYW5nZSAwLi5NQVhCSVRTLiAgVGhlIGNhbGxlciBtdXN0IGFzc3VyZSB0aGlzLgogICAxLi5NQVhCSVRTIGlzIGludGVycHJldGVkIGFzIHRoYXQgY29kZSBsZW5ndGguICB6ZXJvIG1lYW5zIHRoYXQgdGhhdAogICBzeW1ib2wgZG9lcyBub3Qgb2NjdXIgaW4gdGhpcyBjb2RlLgoKICAgVGhlIGNvZGVzIGFyZSBzb3J0ZWQgYnkgY29tcHV0aW5nIGEgY291bnQgb2YgY29kZXMgZm9yIGVhY2ggbGVuZ3RoLAogICBjcmVhdGluZyBmcm9tIHRoYXQgYSB0YWJsZSBvZiBzdGFydGluZyBpbmRpY2VzIGZvciBlYWNoIGxlbmd0aCBpbiB0aGUKICAgc29ydGVkIHRhYmxlLCBhbmQgdGhlbiBlbnRlcmluZyB0aGUgc3ltYm9scyBpbiBvcmRlciBpbiB0aGUgc29ydGVkCiAgIHRhYmxlLiAgVGhlIHNvcnRlZCB0YWJsZSBpcyB3b3JrW10sIHdpdGggdGhhdCBzcGFjZSBiZWluZyBwcm92aWRlZCBieQogICB0aGUgY2FsbGVyLgoKICAgVGhlIGxlbmd0aCBjb3VudHMgYXJlIHVzZWQgZm9yIG90aGVyIHB1cnBvc2VzIGFzIHdlbGwsIGkuZS4gZmluZGluZwogICB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBsZW5ndGggY29kZXMsIGRldGVybWluaW5nIGlmIHRoZXJlIGFyZSBhbnkKICAgY29kZXMgYXQgYWxsLCBjaGVja2luZyBmb3IgYSB2YWxpZCBzZXQgb2YgbGVuZ3RocywgYW5kIGxvb2tpbmcgYWhlYWQKICAgYXQgbGVuZ3RoIGNvdW50cyB0byBkZXRlcm1pbmUgc3ViLXRhYmxlIHNpemVzIHdoZW4gYnVpbGRpbmcgdGhlCiAgIGRlY29kaW5nIHRhYmxlcy4KICAgKi8KCiAgLyogYWNjdW11bGF0ZSBsZW5ndGhzIGZvciBjb2RlcyAoYXNzdW1lcyBsZW5zW10gYWxsIGluIDAuLk1BWEJJVFMpICovCiAgZm9yIChsZW4gPSAwOyBsZW4gPD0gTUFYQklUUzsgbGVuKyspIHsKICAgIGNvdW50W2xlbl0gPSAwOwogIH0KICBmb3IgKHN5bSA9IDA7IHN5bSA8IGNvZGVzOyBzeW0rKykgewogICAgY291bnRbbGVuc1tsZW5zX2luZGV4ICsgc3ltXV0rKzsKICB9CgogIC8qIGJvdW5kIGNvZGUgbGVuZ3RocywgZm9yY2Ugcm9vdCB0byBiZSB3aXRoaW4gY29kZSBsZW5ndGhzICovCiAgcm9vdCA9IGJpdHM7CiAgZm9yIChtYXggPSBNQVhCSVRTOyBtYXggPj0gMTsgbWF4LS0pIHsKICAgIGlmIChjb3VudFttYXhdICE9PSAwKSB7IGJyZWFrOyB9CiAgfQogIGlmIChyb290ID4gbWF4KSB7CiAgICByb290ID0gbWF4OwogIH0KICBpZiAobWF4ID09PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgLyogbm8gc3ltYm9scyB0byBjb2RlIGF0IGFsbCAqLwogICAgLy90YWJsZS5vcFtvcHRzLnRhYmxlX2luZGV4XSA9IDY0OyAgLy9oZXJlLm9wID0gKHZhciBjaGFyKTY0OyAgICAvKiBpbnZhbGlkIGNvZGUgbWFya2VyICovCiAgICAvL3RhYmxlLmJpdHNbb3B0cy50YWJsZV9pbmRleF0gPSAxOyAgIC8vaGVyZS5iaXRzID0gKHZhciBjaGFyKTE7CiAgICAvL3RhYmxlLnZhbFtvcHRzLnRhYmxlX2luZGV4KytdID0gMDsgICAvL2hlcmUudmFsID0gKHZhciBzaG9ydCkwOwogICAgdGFibGVbdGFibGVfaW5kZXgrK10gPSAoMSA8PCAyNCkgfCAoNjQgPDwgMTYpIHwgMDsKCgogICAgLy90YWJsZS5vcFtvcHRzLnRhYmxlX2luZGV4XSA9IDY0OwogICAgLy90YWJsZS5iaXRzW29wdHMudGFibGVfaW5kZXhdID0gMTsKICAgIC8vdGFibGUudmFsW29wdHMudGFibGVfaW5kZXgrK10gPSAwOwogICAgdGFibGVbdGFibGVfaW5kZXgrK10gPSAoMSA8PCAyNCkgfCAoNjQgPDwgMTYpIHwgMDsKCiAgICBvcHRzLmJpdHMgPSAxOwogICAgcmV0dXJuIDA7ICAgICAvKiBubyBzeW1ib2xzLCBidXQgd2FpdCBmb3IgZGVjb2RpbmcgdG8gcmVwb3J0IGVycm9yICovCiAgfQogIGZvciAobWluID0gMTsgbWluIDwgbWF4OyBtaW4rKykgewogICAgaWYgKGNvdW50W21pbl0gIT09IDApIHsgYnJlYWs7IH0KICB9CiAgaWYgKHJvb3QgPCBtaW4pIHsKICAgIHJvb3QgPSBtaW47CiAgfQoKICAvKiBjaGVjayBmb3IgYW4gb3Zlci1zdWJzY3JpYmVkIG9yIGluY29tcGxldGUgc2V0IG9mIGxlbmd0aHMgKi8KICBsZWZ0ID0gMTsKICBmb3IgKGxlbiA9IDE7IGxlbiA8PSBNQVhCSVRTOyBsZW4rKykgewogICAgbGVmdCA8PD0gMTsKICAgIGxlZnQgLT0gY291bnRbbGVuXTsKICAgIGlmIChsZWZ0IDwgMCkgewogICAgICByZXR1cm4gLTE7CiAgICB9ICAgICAgICAvKiBvdmVyLXN1YnNjcmliZWQgKi8KICB9CiAgaWYgKGxlZnQgPiAwICYmICh0eXBlID09PSBDT0RFUyB8fCBtYXggIT09IDEpKSB7CiAgICByZXR1cm4gLTE7ICAgICAgICAgICAgICAgICAgICAgIC8qIGluY29tcGxldGUgc2V0ICovCiAgfQoKICAvKiBnZW5lcmF0ZSBvZmZzZXRzIGludG8gc3ltYm9sIHRhYmxlIGZvciBlYWNoIGxlbmd0aCBmb3Igc29ydGluZyAqLwogIG9mZnNbMV0gPSAwOwogIGZvciAobGVuID0gMTsgbGVuIDwgTUFYQklUUzsgbGVuKyspIHsKICAgIG9mZnNbbGVuICsgMV0gPSBvZmZzW2xlbl0gKyBjb3VudFtsZW5dOwogIH0KCiAgLyogc29ydCBzeW1ib2xzIGJ5IGxlbmd0aCwgYnkgc3ltYm9sIG9yZGVyIHdpdGhpbiBlYWNoIGxlbmd0aCAqLwogIGZvciAoc3ltID0gMDsgc3ltIDwgY29kZXM7IHN5bSsrKSB7CiAgICBpZiAobGVuc1tsZW5zX2luZGV4ICsgc3ltXSAhPT0gMCkgewogICAgICB3b3JrW29mZnNbbGVuc1tsZW5zX2luZGV4ICsgc3ltXV0rK10gPSBzeW07CiAgICB9CiAgfQoKICAvKgogICBDcmVhdGUgYW5kIGZpbGwgaW4gZGVjb2RpbmcgdGFibGVzLiAgSW4gdGhpcyBsb29wLCB0aGUgdGFibGUgYmVpbmcKICAgZmlsbGVkIGlzIGF0IG5leHQgYW5kIGhhcyBjdXJyIGluZGV4IGJpdHMuICBUaGUgY29kZSBiZWluZyB1c2VkIGlzIGh1ZmYKICAgd2l0aCBsZW5ndGggbGVuLiAgVGhhdCBjb2RlIGlzIGNvbnZlcnRlZCB0byBhbiBpbmRleCBieSBkcm9wcGluZyBkcm9wCiAgIGJpdHMgb2ZmIG9mIHRoZSBib3R0b20uICBGb3IgY29kZXMgd2hlcmUgbGVuIGlzIGxlc3MgdGhhbiBkcm9wICsgY3VyciwKICAgdGhvc2UgdG9wIGRyb3AgKyBjdXJyIC0gbGVuIGJpdHMgYXJlIGluY3JlbWVudGVkIHRocm91Z2ggYWxsIHZhbHVlcyB0bwogICBmaWxsIHRoZSB0YWJsZSB3aXRoIHJlcGxpY2F0ZWQgZW50cmllcy4KCiAgIHJvb3QgaXMgdGhlIG51bWJlciBvZiBpbmRleCBiaXRzIGZvciB0aGUgcm9vdCB0YWJsZS4gIFdoZW4gbGVuIGV4Y2VlZHMKICAgcm9vdCwgc3ViLXRhYmxlcyBhcmUgY3JlYXRlZCBwb2ludGVkIHRvIGJ5IHRoZSByb290IGVudHJ5IHdpdGggYW4gaW5kZXgKICAgb2YgdGhlIGxvdyByb290IGJpdHMgb2YgaHVmZi4gIFRoaXMgaXMgc2F2ZWQgaW4gbG93IHRvIGNoZWNrIGZvciB3aGVuIGEKICAgbmV3IHN1Yi10YWJsZSBzaG91bGQgYmUgc3RhcnRlZC4gIGRyb3AgaXMgemVybyB3aGVuIHRoZSByb290IHRhYmxlIGlzCiAgIGJlaW5nIGZpbGxlZCwgYW5kIGRyb3AgaXMgcm9vdCB3aGVuIHN1Yi10YWJsZXMgYXJlIGJlaW5nIGZpbGxlZC4KCiAgIFdoZW4gYSBuZXcgc3ViLXRhYmxlIGlzIG5lZWRlZCwgaXQgaXMgbmVjZXNzYXJ5IHRvIGxvb2sgYWhlYWQgaW4gdGhlCiAgIGNvZGUgbGVuZ3RocyB0byBkZXRlcm1pbmUgd2hhdCBzaXplIHN1Yi10YWJsZSBpcyBuZWVkZWQuICBUaGUgbGVuZ3RoCiAgIGNvdW50cyBhcmUgdXNlZCBmb3IgdGhpcywgYW5kIHNvIGNvdW50W10gaXMgZGVjcmVtZW50ZWQgYXMgY29kZXMgYXJlCiAgIGVudGVyZWQgaW4gdGhlIHRhYmxlcy4KCiAgIHVzZWQga2VlcHMgdHJhY2sgb2YgaG93IG1hbnkgdGFibGUgZW50cmllcyBoYXZlIGJlZW4gYWxsb2NhdGVkIGZyb20gdGhlCiAgIHByb3ZpZGVkICp0YWJsZSBzcGFjZS4gIEl0IGlzIGNoZWNrZWQgZm9yIExFTlMgYW5kIERJU1QgdGFibGVzIGFnYWluc3QKICAgdGhlIGNvbnN0YW50cyBFTk9VR0hfTEVOUyBhbmQgRU5PVUdIX0RJU1RTIHRvIGd1YXJkIGFnYWluc3QgY2hhbmdlcyBpbgogICB0aGUgaW5pdGlhbCByb290IHRhYmxlIHNpemUgY29uc3RhbnRzLiAgU2VlIHRoZSBjb21tZW50cyBpbiBpbmZ0cmVlcy5oCiAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKICAgc3ltIGluY3JlbWVudHMgdGhyb3VnaCBhbGwgc3ltYm9scywgYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMgd2hlbgogICBhbGwgY29kZXMgb2YgbGVuZ3RoIG1heCwgaS5lLiBhbGwgY29kZXMsIGhhdmUgYmVlbiBwcm9jZXNzZWQuICBUaGlzCiAgIHJvdXRpbmUgcGVybWl0cyBpbmNvbXBsZXRlIGNvZGVzLCBzbyBhbm90aGVyIGxvb3AgYWZ0ZXIgdGhpcyBvbmUgZmlsbHMKICAgaW4gdGhlIHJlc3Qgb2YgdGhlIGRlY29kaW5nIHRhYmxlcyB3aXRoIGludmFsaWQgY29kZSBtYXJrZXJzLgogICAqLwoKICAvKiBzZXQgdXAgZm9yIGNvZGUgdHlwZSAqLwogIC8vIHBvb3IgbWFuIG9wdGltaXphdGlvbiAtIHVzZSBpZi1lbHNlIGluc3RlYWQgb2Ygc3dpdGNoLAogIC8vIHRvIGF2b2lkIGRlb3B0cyBpbiBvbGQgdjgKICBpZiAodHlwZSA9PT0gQ09ERVMpIHsKICAgIGJhc2UgPSBleHRyYSA9IHdvcms7ICAgIC8qIGR1bW15IHZhbHVlLS1ub3QgdXNlZCAqLwogICAgZW5kID0gMTk7CgogIH0gZWxzZSBpZiAodHlwZSA9PT0gTEVOUykgewogICAgYmFzZSA9IGxiYXNlOwogICAgYmFzZV9pbmRleCAtPSAyNTc7CiAgICBleHRyYSA9IGxleHQ7CiAgICBleHRyYV9pbmRleCAtPSAyNTc7CiAgICBlbmQgPSAyNTY7CgogIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAvKiBESVNUUyAqLwogICAgYmFzZSA9IGRiYXNlOwogICAgZXh0cmEgPSBkZXh0OwogICAgZW5kID0gLTE7CiAgfQoKICAvKiBpbml0aWFsaXplIG9wdHMgZm9yIGxvb3AgKi8KICBodWZmID0gMDsgICAgICAgICAgICAgICAgICAgLyogc3RhcnRpbmcgY29kZSAqLwogIHN5bSA9IDA7ICAgICAgICAgICAgICAgICAgICAvKiBzdGFydGluZyBjb2RlIHN5bWJvbCAqLwogIGxlbiA9IG1pbjsgICAgICAgICAgICAgICAgICAvKiBzdGFydGluZyBjb2RlIGxlbmd0aCAqLwogIG5leHQgPSB0YWJsZV9pbmRleDsgICAgICAgICAgICAgIC8qIGN1cnJlbnQgdGFibGUgdG8gZmlsbCBpbiAqLwogIGN1cnIgPSByb290OyAgICAgICAgICAgICAgICAvKiBjdXJyZW50IHRhYmxlIGluZGV4IGJpdHMgKi8KICBkcm9wID0gMDsgICAgICAgICAgICAgICAgICAgLyogY3VycmVudCBiaXRzIHRvIGRyb3AgZnJvbSBjb2RlIGZvciBpbmRleCAqLwogIGxvdyA9IC0xOyAgICAgICAgICAgICAgICAgICAvKiB0cmlnZ2VyIG5ldyBzdWItdGFibGUgd2hlbiBsZW4gPiByb290ICovCiAgdXNlZCA9IDEgPDwgcm9vdDsgICAgICAgICAgLyogdXNlIHJvb3QgdGFibGUgZW50cmllcyAqLwogIG1hc2sgPSB1c2VkIC0gMTsgICAgICAgICAgICAvKiBtYXNrIGZvciBjb21wYXJpbmcgbG93ICovCgogIC8qIGNoZWNrIGF2YWlsYWJsZSB0YWJsZSBzcGFjZSAqLwogIGlmICgodHlwZSA9PT0gTEVOUyAmJiB1c2VkID4gRU5PVUdIX0xFTlMpIHx8CiAgICAodHlwZSA9PT0gRElTVFMgJiYgdXNlZCA+IEVOT1VHSF9ESVNUUykpIHsKICAgIHJldHVybiAxOwogIH0KCiAgLyogcHJvY2VzcyBhbGwgY29kZXMgYW5kIG1ha2UgdGFibGUgZW50cmllcyAqLwogIGZvciAoOzspIHsKICAgIC8qIGNyZWF0ZSB0YWJsZSBlbnRyeSAqLwogICAgaGVyZV9iaXRzID0gbGVuIC0gZHJvcDsKICAgIGlmICh3b3JrW3N5bV0gPCBlbmQpIHsKICAgICAgaGVyZV9vcCA9IDA7CiAgICAgIGhlcmVfdmFsID0gd29ya1tzeW1dOwogICAgfQogICAgZWxzZSBpZiAod29ya1tzeW1dID4gZW5kKSB7CiAgICAgIGhlcmVfb3AgPSBleHRyYVtleHRyYV9pbmRleCArIHdvcmtbc3ltXV07CiAgICAgIGhlcmVfdmFsID0gYmFzZVtiYXNlX2luZGV4ICsgd29ya1tzeW1dXTsKICAgIH0KICAgIGVsc2UgewogICAgICBoZXJlX29wID0gMzIgKyA2NDsgICAgICAgICAvKiBlbmQgb2YgYmxvY2sgKi8KICAgICAgaGVyZV92YWwgPSAwOwogICAgfQoKICAgIC8qIHJlcGxpY2F0ZSBmb3IgdGhvc2UgaW5kaWNlcyB3aXRoIGxvdyBsZW4gYml0cyBlcXVhbCB0byBodWZmICovCiAgICBpbmNyID0gMSA8PCAobGVuIC0gZHJvcCk7CiAgICBmaWxsID0gMSA8PCBjdXJyOwogICAgbWluID0gZmlsbDsgICAgICAgICAgICAgICAgIC8qIHNhdmUgb2Zmc2V0IHRvIG5leHQgdGFibGUgKi8KICAgIGRvIHsKICAgICAgZmlsbCAtPSBpbmNyOwogICAgICB0YWJsZVtuZXh0ICsgKGh1ZmYgPj4gZHJvcCkgKyBmaWxsXSA9IChoZXJlX2JpdHMgPDwgMjQpIHwgKGhlcmVfb3AgPDwgMTYpIHwgaGVyZV92YWwgfDA7CiAgICB9IHdoaWxlIChmaWxsICE9PSAwKTsKCiAgICAvKiBiYWNrd2FyZHMgaW5jcmVtZW50IHRoZSBsZW4tYml0IGNvZGUgaHVmZiAqLwogICAgaW5jciA9IDEgPDwgKGxlbiAtIDEpOwogICAgd2hpbGUgKGh1ZmYgJiBpbmNyKSB7CiAgICAgIGluY3IgPj49IDE7CiAgICB9CiAgICBpZiAoaW5jciAhPT0gMCkgewogICAgICBodWZmICY9IGluY3IgLSAxOwogICAgICBodWZmICs9IGluY3I7CiAgICB9IGVsc2UgewogICAgICBodWZmID0gMDsKICAgIH0KCiAgICAvKiBnbyB0byBuZXh0IHN5bWJvbCwgdXBkYXRlIGNvdW50LCBsZW4gKi8KICAgIHN5bSsrOwogICAgaWYgKC0tY291bnRbbGVuXSA9PT0gMCkgewogICAgICBpZiAobGVuID09PSBtYXgpIHsgYnJlYWs7IH0KICAgICAgbGVuID0gbGVuc1tsZW5zX2luZGV4ICsgd29ya1tzeW1dXTsKICAgIH0KCiAgICAvKiBjcmVhdGUgbmV3IHN1Yi10YWJsZSBpZiBuZWVkZWQgKi8KICAgIGlmIChsZW4gPiByb290ICYmIChodWZmICYgbWFzaykgIT09IGxvdykgewogICAgICAvKiBpZiBmaXJzdCB0aW1lLCB0cmFuc2l0aW9uIHRvIHN1Yi10YWJsZXMgKi8KICAgICAgaWYgKGRyb3AgPT09IDApIHsKICAgICAgICBkcm9wID0gcm9vdDsKICAgICAgfQoKICAgICAgLyogaW5jcmVtZW50IHBhc3QgbGFzdCB0YWJsZSAqLwogICAgICBuZXh0ICs9IG1pbjsgICAgICAgICAgICAvKiBoZXJlIG1pbiBpcyAxIDw8IGN1cnIgKi8KCiAgICAgIC8qIGRldGVybWluZSBsZW5ndGggb2YgbmV4dCB0YWJsZSAqLwogICAgICBjdXJyID0gbGVuIC0gZHJvcDsKICAgICAgbGVmdCA9IDEgPDwgY3VycjsKICAgICAgd2hpbGUgKGN1cnIgKyBkcm9wIDwgbWF4KSB7CiAgICAgICAgbGVmdCAtPSBjb3VudFtjdXJyICsgZHJvcF07CiAgICAgICAgaWYgKGxlZnQgPD0gMCkgeyBicmVhazsgfQogICAgICAgIGN1cnIrKzsKICAgICAgICBsZWZ0IDw8PSAxOwogICAgICB9CgogICAgICAvKiBjaGVjayBmb3IgZW5vdWdoIHNwYWNlICovCiAgICAgIHVzZWQgKz0gMSA8PCBjdXJyOwogICAgICBpZiAoKHR5cGUgPT09IExFTlMgJiYgdXNlZCA+IEVOT1VHSF9MRU5TKSB8fAogICAgICAgICh0eXBlID09PSBESVNUUyAmJiB1c2VkID4gRU5PVUdIX0RJU1RTKSkgewogICAgICAgIHJldHVybiAxOwogICAgICB9CgogICAgICAvKiBwb2ludCBlbnRyeSBpbiByb290IHRhYmxlIHRvIHN1Yi10YWJsZSAqLwogICAgICBsb3cgPSBodWZmICYgbWFzazsKICAgICAgLyp0YWJsZS5vcFtsb3ddID0gY3VycjsKICAgICAgdGFibGUuYml0c1tsb3ddID0gcm9vdDsKICAgICAgdGFibGUudmFsW2xvd10gPSBuZXh0IC0gb3B0cy50YWJsZV9pbmRleDsqLwogICAgICB0YWJsZVtsb3ddID0gKHJvb3QgPDwgMjQpIHwgKGN1cnIgPDwgMTYpIHwgKG5leHQgLSB0YWJsZV9pbmRleCkgfDA7CiAgICB9CiAgfQoKICAvKiBmaWxsIGluIHJlbWFpbmluZyB0YWJsZSBlbnRyeSBpZiBjb2RlIGlzIGluY29tcGxldGUgKGd1YXJhbnRlZWQgdG8gaGF2ZQogICBhdCBtb3N0IG9uZSByZW1haW5pbmcgZW50cnksIHNpbmNlIGlmIHRoZSBjb2RlIGlzIGluY29tcGxldGUsIHRoZQogICBtYXhpbXVtIGNvZGUgbGVuZ3RoIHRoYXQgd2FzIGFsbG93ZWQgdG8gZ2V0IHRoaXMgZmFyIGlzIG9uZSBiaXQpICovCiAgaWYgKGh1ZmYgIT09IDApIHsKICAgIC8vdGFibGUub3BbbmV4dCArIGh1ZmZdID0gNjQ7ICAgICAgICAgICAgLyogaW52YWxpZCBjb2RlIG1hcmtlciAqLwogICAgLy90YWJsZS5iaXRzW25leHQgKyBodWZmXSA9IGxlbiAtIGRyb3A7CiAgICAvL3RhYmxlLnZhbFtuZXh0ICsgaHVmZl0gPSAwOwogICAgdGFibGVbbmV4dCArIGh1ZmZdID0gKChsZW4gLSBkcm9wKSA8PCAyNCkgfCAoNjQgPDwgMTYpIHwwOwogIH0KCiAgLyogc2V0IHJldHVybiBwYXJhbWV0ZXJzICovCiAgLy9vcHRzLnRhYmxlX2luZGV4ICs9IHVzZWQ7CiAgb3B0cy5iaXRzID0gcm9vdDsKICByZXR1cm4gMDsKfTsKCgovKioqLyB9KSwKLyogMTYwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgovLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW4KLy8KLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCi8vCi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLAovLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0Ci8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKLy8KLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3QKLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZQovLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZQovLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlCi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgovLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLgoKbW9kdWxlLmV4cG9ydHMgPSB7CgogIC8qIEFsbG93ZWQgZmx1c2ggdmFsdWVzOyBzZWUgZGVmbGF0ZSgpIGFuZCBpbmZsYXRlKCkgYmVsb3cgZm9yIGRldGFpbHMgKi8KICBaX05PX0ZMVVNIOiAgICAgICAgIDAsCiAgWl9QQVJUSUFMX0ZMVVNIOiAgICAxLAogIFpfU1lOQ19GTFVTSDogICAgICAgMiwKICBaX0ZVTExfRkxVU0g6ICAgICAgIDMsCiAgWl9GSU5JU0g6ICAgICAgICAgICA0LAogIFpfQkxPQ0s6ICAgICAgICAgICAgNSwKICBaX1RSRUVTOiAgICAgICAgICAgIDYsCgogIC8qIFJldHVybiBjb2RlcyBmb3IgdGhlIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gZnVuY3Rpb25zLiBOZWdhdGl2ZSB2YWx1ZXMKICAqIGFyZSBlcnJvcnMsIHBvc2l0aXZlIHZhbHVlcyBhcmUgdXNlZCBmb3Igc3BlY2lhbCBidXQgbm9ybWFsIGV2ZW50cy4KICAqLwogIFpfT0s6ICAgICAgICAgICAgICAgMCwKICBaX1NUUkVBTV9FTkQ6ICAgICAgIDEsCiAgWl9ORUVEX0RJQ1Q6ICAgICAgICAyLAogIFpfRVJSTk86ICAgICAgICAgICAtMSwKICBaX1NUUkVBTV9FUlJPUjogICAgLTIsCiAgWl9EQVRBX0VSUk9SOiAgICAgIC0zLAogIC8vWl9NRU1fRVJST1I6ICAgICAtNCwKICBaX0JVRl9FUlJPUjogICAgICAgLTUsCiAgLy9aX1ZFUlNJT05fRVJST1I6IC02LAoKICAvKiBjb21wcmVzc2lvbiBsZXZlbHMgKi8KICBaX05PX0NPTVBSRVNTSU9OOiAgICAgICAgIDAsCiAgWl9CRVNUX1NQRUVEOiAgICAgICAgICAgICAxLAogIFpfQkVTVF9DT01QUkVTU0lPTjogICAgICAgOSwKICBaX0RFRkFVTFRfQ09NUFJFU1NJT046ICAgLTEsCgoKICBaX0ZJTFRFUkVEOiAgICAgICAgICAgICAgIDEsCiAgWl9IVUZGTUFOX09OTFk6ICAgICAgICAgICAyLAogIFpfUkxFOiAgICAgICAgICAgICAgICAgICAgMywKICBaX0ZJWEVEOiAgICAgICAgICAgICAgICAgIDQsCiAgWl9ERUZBVUxUX1NUUkFURUdZOiAgICAgICAwLAoKICAvKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGRhdGFfdHlwZSBmaWVsZCAodGhvdWdoIHNlZSBpbmZsYXRlKCkpICovCiAgWl9CSU5BUlk6ICAgICAgICAgICAgICAgICAwLAogIFpfVEVYVDogICAgICAgICAgICAgICAgICAgMSwKICAvL1pfQVNDSUk6ICAgICAgICAgICAgICAgIDEsIC8vID0gWl9URVhUIChkZXByZWNhdGVkKQogIFpfVU5LTk9XTjogICAgICAgICAgICAgICAgMiwKCiAgLyogVGhlIGRlZmxhdGUgY29tcHJlc3Npb24gbWV0aG9kICovCiAgWl9ERUZMQVRFRDogICAgICAgICAgICAgICA4CiAgLy9aX05VTEw6ICAgICAgICAgICAgICAgICBudWxsIC8vIFVzZSAtMSBvciBudWxsIGlubGluZSwgZGVwZW5kaW5nIG9uIHZhciB0eXBlCn07CgoKLyoqKi8gfSksCi8qIDE2MSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgovLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuNgoKLyoKUERGUGFnZSAtIHJlcHJlc2VudHMgYSBzaW5nbGUgcGFnZSBpbiB0aGUgUERGIGRvY3VtZW50CkJ5IERldm9uIEdvdmV0dAogKi8KCihmdW5jdGlvbigpIHsKICB2YXIgUERGUGFnZTsKCiAgUERGUGFnZSA9IChmdW5jdGlvbigpIHsKICAgIHZhciBERUZBVUxUX01BUkdJTlMsIFNJWkVTOwoKICAgIGZ1bmN0aW9uIFBERlBhZ2UoZG9jdW1lbnQsIG9wdGlvbnMpIHsKICAgICAgdmFyIGRpbWVuc2lvbnM7CiAgICAgIHRoaXMuZG9jdW1lbnQgPSBkb2N1bWVudDsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICB0aGlzLnNpemUgPSBvcHRpb25zLnNpemUgfHwgJ2xldHRlcic7CiAgICAgIHRoaXMubGF5b3V0ID0gb3B0aW9ucy5sYXlvdXQgfHwgJ3BvcnRyYWl0JzsKICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLm1hcmdpbiA9PT0gJ251bWJlcicpIHsKICAgICAgICB0aGlzLm1hcmdpbnMgPSB7CiAgICAgICAgICB0b3A6IG9wdGlvbnMubWFyZ2luLAogICAgICAgICAgbGVmdDogb3B0aW9ucy5tYXJnaW4sCiAgICAgICAgICBib3R0b206IG9wdGlvbnMubWFyZ2luLAogICAgICAgICAgcmlnaHQ6IG9wdGlvbnMubWFyZ2luCiAgICAgICAgfTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLm1hcmdpbnMgPSBvcHRpb25zLm1hcmdpbnMgfHwgREVGQVVMVF9NQVJHSU5TOwogICAgICB9CiAgICAgIGRpbWVuc2lvbnMgPSBBcnJheS5pc0FycmF5KHRoaXMuc2l6ZSkgPyB0aGlzLnNpemUgOiBTSVpFU1t0aGlzLnNpemUudG9VcHBlckNhc2UoKV07CiAgICAgIHRoaXMud2lkdGggPSBkaW1lbnNpb25zW3RoaXMubGF5b3V0ID09PSAncG9ydHJhaXQnID8gMCA6IDFdOwogICAgICB0aGlzLmhlaWdodCA9IGRpbWVuc2lvbnNbdGhpcy5sYXlvdXQgPT09ICdwb3J0cmFpdCcgPyAxIDogMF07CiAgICAgIHRoaXMuY29udGVudCA9IHRoaXMuZG9jdW1lbnQucmVmKCk7CiAgICAgIHRoaXMucmVzb3VyY2VzID0gdGhpcy5kb2N1bWVudC5yZWYoewogICAgICAgIFByb2NTZXQ6IFsnUERGJywgJ1RleHQnLCAnSW1hZ2VCJywgJ0ltYWdlQycsICdJbWFnZUknXQogICAgICB9KTsKICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcywgewogICAgICAgIGZvbnRzOiB7CiAgICAgICAgICBnZXQ6IChmdW5jdGlvbihfdGhpcykgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFyIGJhc2U7CiAgICAgICAgICAgICAgcmV0dXJuIChiYXNlID0gX3RoaXMucmVzb3VyY2VzLmRhdGEpLkZvbnQgIT0gbnVsbCA/IGJhc2UuRm9udCA6IGJhc2UuRm9udCA9IHt9OwogICAgICAgICAgICB9OwogICAgICAgICAgfSkodGhpcykKICAgICAgICB9LAogICAgICAgIHhvYmplY3RzOiB7CiAgICAgICAgICBnZXQ6IChmdW5jdGlvbihfdGhpcykgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFyIGJhc2U7CiAgICAgICAgICAgICAgcmV0dXJuIChiYXNlID0gX3RoaXMucmVzb3VyY2VzLmRhdGEpLlhPYmplY3QgIT0gbnVsbCA/IGJhc2UuWE9iamVjdCA6IGJhc2UuWE9iamVjdCA9IHt9OwogICAgICAgICAgICB9OwogICAgICAgICAgfSkodGhpcykKICAgICAgICB9LAogICAgICAgIGV4dF9nc3RhdGVzOiB7CiAgICAgICAgICBnZXQ6IChmdW5jdGlvbihfdGhpcykgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFyIGJhc2U7CiAgICAgICAgICAgICAgcmV0dXJuIChiYXNlID0gX3RoaXMucmVzb3VyY2VzLmRhdGEpLkV4dEdTdGF0ZSAhPSBudWxsID8gYmFzZS5FeHRHU3RhdGUgOiBiYXNlLkV4dEdTdGF0ZSA9IHt9OwogICAgICAgICAgICB9OwogICAgICAgICAgfSkodGhpcykKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5zOiB7CiAgICAgICAgICBnZXQ6IChmdW5jdGlvbihfdGhpcykgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFyIGJhc2U7CiAgICAgICAgICAgICAgcmV0dXJuIChiYXNlID0gX3RoaXMucmVzb3VyY2VzLmRhdGEpLlBhdHRlcm4gIT0gbnVsbCA/IGJhc2UuUGF0dGVybiA6IGJhc2UuUGF0dGVybiA9IHt9OwogICAgICAgICAgICB9OwogICAgICAgICAgfSkodGhpcykKICAgICAgICB9LAogICAgICAgIGFubm90YXRpb25zOiB7CiAgICAgICAgICBnZXQ6IChmdW5jdGlvbihfdGhpcykgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFyIGJhc2U7CiAgICAgICAgICAgICAgcmV0dXJuIChiYXNlID0gX3RoaXMuZGljdGlvbmFyeS5kYXRhKS5Bbm5vdHMgIT0gbnVsbCA/IGJhc2UuQW5ub3RzIDogYmFzZS5Bbm5vdHMgPSBbXTsKICAgICAgICAgICAgfTsKICAgICAgICAgIH0pKHRoaXMpCiAgICAgICAgfQogICAgICB9KTsKICAgICAgdGhpcy5kaWN0aW9uYXJ5ID0gdGhpcy5kb2N1bWVudC5yZWYoewogICAgICAgIFR5cGU6ICdQYWdlJywKICAgICAgICBQYXJlbnQ6IHRoaXMuZG9jdW1lbnQuX3Jvb3QuZGF0YS5QYWdlcywKICAgICAgICBNZWRpYUJveDogWzAsIDAsIHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0XSwKICAgICAgICBDb250ZW50czogdGhpcy5jb250ZW50LAogICAgICAgIFJlc291cmNlczogdGhpcy5yZXNvdXJjZXMKICAgICAgfSk7CiAgICB9CgogICAgUERGUGFnZS5wcm90b3R5cGUubWF4WSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy5oZWlnaHQgLSB0aGlzLm1hcmdpbnMuYm90dG9tOwogICAgfTsKCiAgICBQREZQYWdlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGNodW5rKSB7CiAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQud3JpdGUoY2h1bmspOwogICAgfTsKCiAgICBQREZQYWdlLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHsKICAgICAgdGhpcy5kaWN0aW9uYXJ5LmVuZCgpOwogICAgICB0aGlzLnJlc291cmNlcy5lbmQoKTsKICAgICAgcmV0dXJuIHRoaXMuY29udGVudC5lbmQoKTsKICAgIH07CgogICAgREVGQVVMVF9NQVJHSU5TID0gewogICAgICB0b3A6IDcyLAogICAgICBsZWZ0OiA3MiwKICAgICAgYm90dG9tOiA3MiwKICAgICAgcmlnaHQ6IDcyCiAgICB9OwoKICAgIFNJWkVTID0gewogICAgICAnNEEwJzogWzQ3NjcuODcsIDY3NDAuNzldLAogICAgICAnMkEwJzogWzMzNzAuMzksIDQ3NjcuODddLAogICAgICBBMDogWzIzODMuOTQsIDMzNzAuMzldLAogICAgICBBMTogWzE2ODMuNzgsIDIzODMuOTRdLAogICAgICBBMjogWzExOTAuNTUsIDE2ODMuNzhdLAogICAgICBBMzogWzg0MS44OSwgMTE5MC41NV0sCiAgICAgIEE0OiBbNTk1LjI4LCA4NDEuODldLAogICAgICBBNTogWzQxOS41MywgNTk1LjI4XSwKICAgICAgQTY6IFsyOTcuNjQsIDQxOS41M10sCiAgICAgIEE3OiBbMjA5Ljc2LCAyOTcuNjRdLAogICAgICBBODogWzE0Ny40MCwgMjA5Ljc2XSwKICAgICAgQTk6IFsxMDQuODgsIDE0Ny40MF0sCiAgICAgIEExMDogWzczLjcwLCAxMDQuODhdLAogICAgICBCMDogWzI4MzQuNjUsIDQwMDguMTldLAogICAgICBCMTogWzIwMDQuMDksIDI4MzQuNjVdLAogICAgICBCMjogWzE0MTcuMzIsIDIwMDQuMDldLAogICAgICBCMzogWzEwMDAuNjMsIDE0MTcuMzJdLAogICAgICBCNDogWzcwOC42NiwgMTAwMC42M10sCiAgICAgIEI1OiBbNDk4LjkwLCA3MDguNjZdLAogICAgICBCNjogWzM1NC4zMywgNDk4LjkwXSwKICAgICAgQjc6IFsyNDkuNDUsIDM1NC4zM10sCiAgICAgIEI4OiBbMTc1Ljc1LCAyNDkuNDVdLAogICAgICBCOTogWzEyNC43MiwgMTc1Ljc1XSwKICAgICAgQjEwOiBbODcuODcsIDEyNC43Ml0sCiAgICAgIEMwOiBbMjU5OS4zNywgMzY3Ni41NF0sCiAgICAgIEMxOiBbMTgzNi44NSwgMjU5OS4zN10sCiAgICAgIEMyOiBbMTI5OC4yNywgMTgzNi44NV0sCiAgICAgIEMzOiBbOTE4LjQzLCAxMjk4LjI3XSwKICAgICAgQzQ6IFs2NDkuMTMsIDkxOC40M10sCiAgICAgIEM1OiBbNDU5LjIxLCA2NDkuMTNdLAogICAgICBDNjogWzMyMy4xNSwgNDU5LjIxXSwKICAgICAgQzc6IFsyMjkuNjEsIDMyMy4xNV0sCiAgICAgIEM4OiBbMTYxLjU3LCAyMjkuNjFdLAogICAgICBDOTogWzExMy4zOSwgMTYxLjU3XSwKICAgICAgQzEwOiBbNzkuMzcsIDExMy4zOV0sCiAgICAgIFJBMDogWzI0MzcuODAsIDM0NTguMjddLAogICAgICBSQTE6IFsxNzI5LjEzLCAyNDM3LjgwXSwKICAgICAgUkEyOiBbMTIxOC45MCwgMTcyOS4xM10sCiAgICAgIFJBMzogWzg2NC41NywgMTIxOC45MF0sCiAgICAgIFJBNDogWzYwOS40NSwgODY0LjU3XSwKICAgICAgU1JBMDogWzI1NTEuMTgsIDM2MjguMzVdLAogICAgICBTUkExOiBbMTgxNC4xNywgMjU1MS4xOF0sCiAgICAgIFNSQTI6IFsxMjc1LjU5LCAxODE0LjE3XSwKICAgICAgU1JBMzogWzkwNy4wOSwgMTI3NS41OV0sCiAgICAgIFNSQTQ6IFs2MzcuODAsIDkwNy4wOV0sCiAgICAgIEVYRUNVVElWRTogWzUyMS44NiwgNzU2LjAwXSwKICAgICAgRk9MSU86IFs2MTIuMDAsIDkzNi4wMF0sCiAgICAgIExFR0FMOiBbNjEyLjAwLCAxMDA4LjAwXSwKICAgICAgTEVUVEVSOiBbNjEyLjAwLCA3OTIuMDBdLAogICAgICBUQUJMT0lEOiBbNzkyLjAwLCAxMjI0LjAwXQogICAgfTsKCiAgICByZXR1cm4gUERGUGFnZTsKCiAgfSkoKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBQREZQYWdlOwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMTYyICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CihmdW5jdGlvbigpIHsKICB2YXIgUERGR3JhZGllbnQsIFBERkxpbmVhckdyYWRpZW50LCBQREZSYWRpYWxHcmFkaWVudCwgbmFtZWRDb2xvcnMsIHJlZjsKCiAgcmVmID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjMpLCBQREZHcmFkaWVudCA9IHJlZi5QREZHcmFkaWVudCwgUERGTGluZWFyR3JhZGllbnQgPSByZWYuUERGTGluZWFyR3JhZGllbnQsIFBERlJhZGlhbEdyYWRpZW50ID0gcmVmLlBERlJhZGlhbEdyYWRpZW50OwoKICBtb2R1bGUuZXhwb3J0cyA9IHsKICAgIGluaXRDb2xvcjogZnVuY3Rpb24oKSB7CiAgICAgIHRoaXMuX29wYWNpdHlSZWdpc3RyeSA9IHt9OwogICAgICB0aGlzLl9vcGFjaXR5Q291bnQgPSAwOwogICAgICByZXR1cm4gdGhpcy5fZ3JhZENvdW50ID0gMDsKICAgIH0sCiAgICBfbm9ybWFsaXplQ29sb3I6IGZ1bmN0aW9uKGNvbG9yKSB7CiAgICAgIHZhciBoZXgsIHBhcnQ7CiAgICAgIGlmIChjb2xvciBpbnN0YW5jZW9mIFBERkdyYWRpZW50KSB7CiAgICAgICAgcmV0dXJuIGNvbG9yOwogICAgICB9CiAgICAgIGlmICh0eXBlb2YgY29sb3IgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgaWYgKGNvbG9yLmNoYXJBdCgwKSA9PT0gJyMnKSB7CiAgICAgICAgICBpZiAoY29sb3IubGVuZ3RoID09PSA0KSB7CiAgICAgICAgICAgIGNvbG9yID0gY29sb3IucmVwbGFjZSgvIyhbMC05QS1GXSkoWzAtOUEtRl0pKFswLTlBLUZdKS9pLCAiIyQxJDEkMiQyJDMkMyIpOwogICAgICAgICAgfQogICAgICAgICAgaGV4ID0gcGFyc2VJbnQoY29sb3Iuc2xpY2UoMSksIDE2KTsKICAgICAgICAgIGNvbG9yID0gW2hleCA+PiAxNiwgaGV4ID4+IDggJiAweGZmLCBoZXggJiAweGZmXTsKICAgICAgICB9IGVsc2UgaWYgKG5hbWVkQ29sb3JzW2NvbG9yXSkgewogICAgICAgICAgY29sb3IgPSBuYW1lZENvbG9yc1tjb2xvcl07CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSkgewogICAgICAgIGlmIChjb2xvci5sZW5ndGggPT09IDMpIHsKICAgICAgICAgIGNvbG9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgaSwgbGVuLCByZXN1bHRzOwogICAgICAgICAgICByZXN1bHRzID0gW107CiAgICAgICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IGNvbG9yLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgICAgICAgcGFydCA9IGNvbG9yW2ldOwogICAgICAgICAgICAgIHJlc3VsdHMucHVzaChwYXJ0IC8gMjU1KTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgICAgIH0pKCk7CiAgICAgICAgfSBlbHNlIGlmIChjb2xvci5sZW5ndGggPT09IDQpIHsKICAgICAgICAgIGNvbG9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgaSwgbGVuLCByZXN1bHRzOwogICAgICAgICAgICByZXN1bHRzID0gW107CiAgICAgICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IGNvbG9yLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgICAgICAgcGFydCA9IGNvbG9yW2ldOwogICAgICAgICAgICAgIHJlc3VsdHMucHVzaChwYXJ0IC8gMTAwKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgICAgIH0pKCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBjb2xvcjsKICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0sCiAgICBfc2V0Q29sb3I6IGZ1bmN0aW9uKGNvbG9yLCBzdHJva2UpIHsKICAgICAgdmFyIG9wLCBzcGFjZTsKICAgICAgY29sb3IgPSB0aGlzLl9ub3JtYWxpemVDb2xvcihjb2xvcik7CiAgICAgIGlmICghY29sb3IpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgb3AgPSBzdHJva2UgPyAnU0NOJyA6ICdzY24nOwogICAgICBpZiAoY29sb3IgaW5zdGFuY2VvZiBQREZHcmFkaWVudCkgewogICAgICAgIHRoaXMuX3NldENvbG9yU3BhY2UoJ1BhdHRlcm4nLCBzdHJva2UpOwogICAgICAgIGNvbG9yLmFwcGx5KG9wKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBzcGFjZSA9IGNvbG9yLmxlbmd0aCA9PT0gNCA/ICdEZXZpY2VDTVlLJyA6ICdEZXZpY2VSR0InOwogICAgICAgIHRoaXMuX3NldENvbG9yU3BhY2Uoc3BhY2UsIHN0cm9rZSk7CiAgICAgICAgY29sb3IgPSBjb2xvci5qb2luKCcgJyk7CiAgICAgICAgdGhpcy5hZGRDb250ZW50KGNvbG9yICsgIiAiICsgb3ApOwogICAgICB9CiAgICAgIHJldHVybiB0cnVlOwogICAgfSwKICAgIF9zZXRDb2xvclNwYWNlOiBmdW5jdGlvbihzcGFjZSwgc3Ryb2tlKSB7CiAgICAgIHZhciBvcDsKICAgICAgb3AgPSBzdHJva2UgPyAnQ1MnIDogJ2NzJzsKICAgICAgcmV0dXJuIHRoaXMuYWRkQ29udGVudCgiLyIgKyBzcGFjZSArICIgIiArIG9wKTsKICAgIH0sCiAgICBmaWxsQ29sb3I6IGZ1bmN0aW9uKGNvbG9yLCBvcGFjaXR5KSB7CiAgICAgIHZhciBzZXQ7CiAgICAgIHNldCA9IHRoaXMuX3NldENvbG9yKGNvbG9yLCBmYWxzZSk7CiAgICAgIGlmIChzZXQpIHsKICAgICAgICB0aGlzLmZpbGxPcGFjaXR5KG9wYWNpdHkpOwogICAgICB9CiAgICAgIHRoaXMuX2ZpbGxDb2xvciA9IFtjb2xvciwgb3BhY2l0eV07CiAgICAgIHJldHVybiB0aGlzOwogICAgfSwKICAgIHN0cm9rZUNvbG9yOiBmdW5jdGlvbihjb2xvciwgb3BhY2l0eSkgewogICAgICB2YXIgc2V0OwogICAgICBzZXQgPSB0aGlzLl9zZXRDb2xvcihjb2xvciwgdHJ1ZSk7CiAgICAgIGlmIChzZXQpIHsKICAgICAgICB0aGlzLnN0cm9rZU9wYWNpdHkob3BhY2l0eSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXM7CiAgICB9LAogICAgb3BhY2l0eTogZnVuY3Rpb24ob3BhY2l0eSkgewogICAgICB0aGlzLl9kb09wYWNpdHkob3BhY2l0eSwgb3BhY2l0eSk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSwKICAgIGZpbGxPcGFjaXR5OiBmdW5jdGlvbihvcGFjaXR5KSB7CiAgICAgIHRoaXMuX2RvT3BhY2l0eShvcGFjaXR5LCBudWxsKTsKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9LAogICAgc3Ryb2tlT3BhY2l0eTogZnVuY3Rpb24ob3BhY2l0eSkgewogICAgICB0aGlzLl9kb09wYWNpdHkobnVsbCwgb3BhY2l0eSk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSwKICAgIF9kb09wYWNpdHk6IGZ1bmN0aW9uKGZpbGxPcGFjaXR5LCBzdHJva2VPcGFjaXR5KSB7CiAgICAgIHZhciBkaWN0aW9uYXJ5LCBpZCwga2V5LCBuYW1lLCByZWYxOwogICAgICBpZiAoISgoZmlsbE9wYWNpdHkgIT0gbnVsbCkgfHwgKHN0cm9rZU9wYWNpdHkgIT0gbnVsbCkpKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChmaWxsT3BhY2l0eSAhPSBudWxsKSB7CiAgICAgICAgZmlsbE9wYWNpdHkgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBmaWxsT3BhY2l0eSkpOwogICAgICB9CiAgICAgIGlmIChzdHJva2VPcGFjaXR5ICE9IG51bGwpIHsKICAgICAgICBzdHJva2VPcGFjaXR5ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgc3Ryb2tlT3BhY2l0eSkpOwogICAgICB9CiAgICAgIGtleSA9IGZpbGxPcGFjaXR5ICsgIl8iICsgc3Ryb2tlT3BhY2l0eTsKICAgICAgaWYgKHRoaXMuX29wYWNpdHlSZWdpc3RyeVtrZXldKSB7CiAgICAgICAgcmVmMSA9IHRoaXMuX29wYWNpdHlSZWdpc3RyeVtrZXldLCBkaWN0aW9uYXJ5ID0gcmVmMVswXSwgbmFtZSA9IHJlZjFbMV07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZGljdGlvbmFyeSA9IHsKICAgICAgICAgIFR5cGU6ICdFeHRHU3RhdGUnCiAgICAgICAgfTsKICAgICAgICBpZiAoZmlsbE9wYWNpdHkgIT0gbnVsbCkgewogICAgICAgICAgZGljdGlvbmFyeS5jYSA9IGZpbGxPcGFjaXR5OwogICAgICAgIH0KICAgICAgICBpZiAoc3Ryb2tlT3BhY2l0eSAhPSBudWxsKSB7CiAgICAgICAgICBkaWN0aW9uYXJ5LkNBID0gc3Ryb2tlT3BhY2l0eTsKICAgICAgICB9CiAgICAgICAgZGljdGlvbmFyeSA9IHRoaXMucmVmKGRpY3Rpb25hcnkpOwogICAgICAgIGRpY3Rpb25hcnkuZW5kKCk7CiAgICAgICAgaWQgPSArK3RoaXMuX29wYWNpdHlDb3VudDsKICAgICAgICBuYW1lID0gIkdzIiArIGlkOwogICAgICAgIHRoaXMuX29wYWNpdHlSZWdpc3RyeVtrZXldID0gW2RpY3Rpb25hcnksIG5hbWVdOwogICAgICB9CiAgICAgIHRoaXMucGFnZS5leHRfZ3N0YXRlc1tuYW1lXSA9IGRpY3Rpb25hcnk7CiAgICAgIHJldHVybiB0aGlzLmFkZENvbnRlbnQoIi8iICsgbmFtZSArICIgZ3MiKTsKICAgIH0sCiAgICBsaW5lYXJHcmFkaWVudDogZnVuY3Rpb24oeDEsIHkxLCB4MiwgeTIpIHsKICAgICAgcmV0dXJuIG5ldyBQREZMaW5lYXJHcmFkaWVudCh0aGlzLCB4MSwgeTEsIHgyLCB5Mik7CiAgICB9LAogICAgcmFkaWFsR3JhZGllbnQ6IGZ1bmN0aW9uKHgxLCB5MSwgcjEsIHgyLCB5MiwgcjIpIHsKICAgICAgcmV0dXJuIG5ldyBQREZSYWRpYWxHcmFkaWVudCh0aGlzLCB4MSwgeTEsIHIxLCB4MiwgeTIsIHIyKTsKICAgIH0KICB9OwoKICBuYW1lZENvbG9ycyA9IHsKICAgIGFsaWNlYmx1ZTogWzI0MCwgMjQ4LCAyNTVdLAogICAgYW50aXF1ZXdoaXRlOiBbMjUwLCAyMzUsIDIxNV0sCiAgICBhcXVhOiBbMCwgMjU1LCAyNTVdLAogICAgYXF1YW1hcmluZTogWzEyNywgMjU1LCAyMTJdLAogICAgYXp1cmU6IFsyNDAsIDI1NSwgMjU1XSwKICAgIGJlaWdlOiBbMjQ1LCAyNDUsIDIyMF0sCiAgICBiaXNxdWU6IFsyNTUsIDIyOCwgMTk2XSwKICAgIGJsYWNrOiBbMCwgMCwgMF0sCiAgICBibGFuY2hlZGFsbW9uZDogWzI1NSwgMjM1LCAyMDVdLAogICAgYmx1ZTogWzAsIDAsIDI1NV0sCiAgICBibHVldmlvbGV0OiBbMTM4LCA0MywgMjI2XSwKICAgIGJyb3duOiBbMTY1LCA0MiwgNDJdLAogICAgYnVybHl3b29kOiBbMjIyLCAxODQsIDEzNV0sCiAgICBjYWRldGJsdWU6IFs5NSwgMTU4LCAxNjBdLAogICAgY2hhcnRyZXVzZTogWzEyNywgMjU1LCAwXSwKICAgIGNob2NvbGF0ZTogWzIxMCwgMTA1LCAzMF0sCiAgICBjb3JhbDogWzI1NSwgMTI3LCA4MF0sCiAgICBjb3JuZmxvd2VyYmx1ZTogWzEwMCwgMTQ5LCAyMzddLAogICAgY29ybnNpbGs6IFsyNTUsIDI0OCwgMjIwXSwKICAgIGNyaW1zb246IFsyMjAsIDIwLCA2MF0sCiAgICBjeWFuOiBbMCwgMjU1LCAyNTVdLAogICAgZGFya2JsdWU6IFswLCAwLCAxMzldLAogICAgZGFya2N5YW46IFswLCAxMzksIDEzOV0sCiAgICBkYXJrZ29sZGVucm9kOiBbMTg0LCAxMzQsIDExXSwKICAgIGRhcmtncmF5OiBbMTY5LCAxNjksIDE2OV0sCiAgICBkYXJrZ3JlZW46IFswLCAxMDAsIDBdLAogICAgZGFya2dyZXk6IFsxNjksIDE2OSwgMTY5XSwKICAgIGRhcmtraGFraTogWzE4OSwgMTgzLCAxMDddLAogICAgZGFya21hZ2VudGE6IFsxMzksIDAsIDEzOV0sCiAgICBkYXJrb2xpdmVncmVlbjogWzg1LCAxMDcsIDQ3XSwKICAgIGRhcmtvcmFuZ2U6IFsyNTUsIDE0MCwgMF0sCiAgICBkYXJrb3JjaGlkOiBbMTUzLCA1MCwgMjA0XSwKICAgIGRhcmtyZWQ6IFsxMzksIDAsIDBdLAogICAgZGFya3NhbG1vbjogWzIzMywgMTUwLCAxMjJdLAogICAgZGFya3NlYWdyZWVuOiBbMTQzLCAxODgsIDE0M10sCiAgICBkYXJrc2xhdGVibHVlOiBbNzIsIDYxLCAxMzldLAogICAgZGFya3NsYXRlZ3JheTogWzQ3LCA3OSwgNzldLAogICAgZGFya3NsYXRlZ3JleTogWzQ3LCA3OSwgNzldLAogICAgZGFya3R1cnF1b2lzZTogWzAsIDIwNiwgMjA5XSwKICAgIGRhcmt2aW9sZXQ6IFsxNDgsIDAsIDIxMV0sCiAgICBkZWVwcGluazogWzI1NSwgMjAsIDE0N10sCiAgICBkZWVwc2t5Ymx1ZTogWzAsIDE5MSwgMjU1XSwKICAgIGRpbWdyYXk6IFsxMDUsIDEwNSwgMTA1XSwKICAgIGRpbWdyZXk6IFsxMDUsIDEwNSwgMTA1XSwKICAgIGRvZGdlcmJsdWU6IFszMCwgMTQ0LCAyNTVdLAogICAgZmlyZWJyaWNrOiBbMTc4LCAzNCwgMzRdLAogICAgZmxvcmFsd2hpdGU6IFsyNTUsIDI1MCwgMjQwXSwKICAgIGZvcmVzdGdyZWVuOiBbMzQsIDEzOSwgMzRdLAogICAgZnVjaHNpYTogWzI1NSwgMCwgMjU1XSwKICAgIGdhaW5zYm9ybzogWzIyMCwgMjIwLCAyMjBdLAogICAgZ2hvc3R3aGl0ZTogWzI0OCwgMjQ4LCAyNTVdLAogICAgZ29sZDogWzI1NSwgMjE1LCAwXSwKICAgIGdvbGRlbnJvZDogWzIxOCwgMTY1LCAzMl0sCiAgICBncmF5OiBbMTI4LCAxMjgsIDEyOF0sCiAgICBncmV5OiBbMTI4LCAxMjgsIDEyOF0sCiAgICBncmVlbjogWzAsIDEyOCwgMF0sCiAgICBncmVlbnllbGxvdzogWzE3MywgMjU1LCA0N10sCiAgICBob25leWRldzogWzI0MCwgMjU1LCAyNDBdLAogICAgaG90cGluazogWzI1NSwgMTA1LCAxODBdLAogICAgaW5kaWFucmVkOiBbMjA1LCA5MiwgOTJdLAogICAgaW5kaWdvOiBbNzUsIDAsIDEzMF0sCiAgICBpdm9yeTogWzI1NSwgMjU1LCAyNDBdLAogICAga2hha2k6IFsyNDAsIDIzMCwgMTQwXSwKICAgIGxhdmVuZGVyOiBbMjMwLCAyMzAsIDI1MF0sCiAgICBsYXZlbmRlcmJsdXNoOiBbMjU1LCAyNDAsIDI0NV0sCiAgICBsYXduZ3JlZW46IFsxMjQsIDI1MiwgMF0sCiAgICBsZW1vbmNoaWZmb246IFsyNTUsIDI1MCwgMjA1XSwKICAgIGxpZ2h0Ymx1ZTogWzE3MywgMjE2LCAyMzBdLAogICAgbGlnaHRjb3JhbDogWzI0MCwgMTI4LCAxMjhdLAogICAgbGlnaHRjeWFuOiBbMjI0LCAyNTUsIDI1NV0sCiAgICBsaWdodGdvbGRlbnJvZHllbGxvdzogWzI1MCwgMjUwLCAyMTBdLAogICAgbGlnaHRncmF5OiBbMjExLCAyMTEsIDIxMV0sCiAgICBsaWdodGdyZWVuOiBbMTQ0LCAyMzgsIDE0NF0sCiAgICBsaWdodGdyZXk6IFsyMTEsIDIxMSwgMjExXSwKICAgIGxpZ2h0cGluazogWzI1NSwgMTgyLCAxOTNdLAogICAgbGlnaHRzYWxtb246IFsyNTUsIDE2MCwgMTIyXSwKICAgIGxpZ2h0c2VhZ3JlZW46IFszMiwgMTc4LCAxNzBdLAogICAgbGlnaHRza3libHVlOiBbMTM1LCAyMDYsIDI1MF0sCiAgICBsaWdodHNsYXRlZ3JheTogWzExOSwgMTM2LCAxNTNdLAogICAgbGlnaHRzbGF0ZWdyZXk6IFsxMTksIDEzNiwgMTUzXSwKICAgIGxpZ2h0c3RlZWxibHVlOiBbMTc2LCAxOTYsIDIyMl0sCiAgICBsaWdodHllbGxvdzogWzI1NSwgMjU1LCAyMjRdLAogICAgbGltZTogWzAsIDI1NSwgMF0sCiAgICBsaW1lZ3JlZW46IFs1MCwgMjA1LCA1MF0sCiAgICBsaW5lbjogWzI1MCwgMjQwLCAyMzBdLAogICAgbWFnZW50YTogWzI1NSwgMCwgMjU1XSwKICAgIG1hcm9vbjogWzEyOCwgMCwgMF0sCiAgICBtZWRpdW1hcXVhbWFyaW5lOiBbMTAyLCAyMDUsIDE3MF0sCiAgICBtZWRpdW1ibHVlOiBbMCwgMCwgMjA1XSwKICAgIG1lZGl1bW9yY2hpZDogWzE4NiwgODUsIDIxMV0sCiAgICBtZWRpdW1wdXJwbGU6IFsxNDcsIDExMiwgMjE5XSwKICAgIG1lZGl1bXNlYWdyZWVuOiBbNjAsIDE3OSwgMTEzXSwKICAgIG1lZGl1bXNsYXRlYmx1ZTogWzEyMywgMTA0LCAyMzhdLAogICAgbWVkaXVtc3ByaW5nZ3JlZW46IFswLCAyNTAsIDE1NF0sCiAgICBtZWRpdW10dXJxdW9pc2U6IFs3MiwgMjA5LCAyMDRdLAogICAgbWVkaXVtdmlvbGV0cmVkOiBbMTk5LCAyMSwgMTMzXSwKICAgIG1pZG5pZ2h0Ymx1ZTogWzI1LCAyNSwgMTEyXSwKICAgIG1pbnRjcmVhbTogWzI0NSwgMjU1LCAyNTBdLAogICAgbWlzdHlyb3NlOiBbMjU1LCAyMjgsIDIyNV0sCiAgICBtb2NjYXNpbjogWzI1NSwgMjI4LCAxODFdLAogICAgbmF2YWpvd2hpdGU6IFsyNTUsIDIyMiwgMTczXSwKICAgIG5hdnk6IFswLCAwLCAxMjhdLAogICAgb2xkbGFjZTogWzI1MywgMjQ1LCAyMzBdLAogICAgb2xpdmU6IFsxMjgsIDEyOCwgMF0sCiAgICBvbGl2ZWRyYWI6IFsxMDcsIDE0MiwgMzVdLAogICAgb3JhbmdlOiBbMjU1LCAxNjUsIDBdLAogICAgb3JhbmdlcmVkOiBbMjU1LCA2OSwgMF0sCiAgICBvcmNoaWQ6IFsyMTgsIDExMiwgMjE0XSwKICAgIHBhbGVnb2xkZW5yb2Q6IFsyMzgsIDIzMiwgMTcwXSwKICAgIHBhbGVncmVlbjogWzE1MiwgMjUxLCAxNTJdLAogICAgcGFsZXR1cnF1b2lzZTogWzE3NSwgMjM4LCAyMzhdLAogICAgcGFsZXZpb2xldHJlZDogWzIxOSwgMTEyLCAxNDddLAogICAgcGFwYXlhd2hpcDogWzI1NSwgMjM5LCAyMTNdLAogICAgcGVhY2hwdWZmOiBbMjU1LCAyMTgsIDE4NV0sCiAgICBwZXJ1OiBbMjA1LCAxMzMsIDYzXSwKICAgIHBpbms6IFsyNTUsIDE5MiwgMjAzXSwKICAgIHBsdW06IFsyMjEsIDE2MCwgMjIxXSwKICAgIHBvd2RlcmJsdWU6IFsxNzYsIDIyNCwgMjMwXSwKICAgIHB1cnBsZTogWzEyOCwgMCwgMTI4XSwKICAgIHJlZDogWzI1NSwgMCwgMF0sCiAgICByb3N5YnJvd246IFsxODgsIDE0MywgMTQzXSwKICAgIHJveWFsYmx1ZTogWzY1LCAxMDUsIDIyNV0sCiAgICBzYWRkbGVicm93bjogWzEzOSwgNjksIDE5XSwKICAgIHNhbG1vbjogWzI1MCwgMTI4LCAxMTRdLAogICAgc2FuZHlicm93bjogWzI0NCwgMTY0LCA5Nl0sCiAgICBzZWFncmVlbjogWzQ2LCAxMzksIDg3XSwKICAgIHNlYXNoZWxsOiBbMjU1LCAyNDUsIDIzOF0sCiAgICBzaWVubmE6IFsxNjAsIDgyLCA0NV0sCiAgICBzaWx2ZXI6IFsxOTIsIDE5MiwgMTkyXSwKICAgIHNreWJsdWU6IFsxMzUsIDIwNiwgMjM1XSwKICAgIHNsYXRlYmx1ZTogWzEwNiwgOTAsIDIwNV0sCiAgICBzbGF0ZWdyYXk6IFsxMTIsIDEyOCwgMTQ0XSwKICAgIHNsYXRlZ3JleTogWzExMiwgMTI4LCAxNDRdLAogICAgc25vdzogWzI1NSwgMjUwLCAyNTBdLAogICAgc3ByaW5nZ3JlZW46IFswLCAyNTUsIDEyN10sCiAgICBzdGVlbGJsdWU6IFs3MCwgMTMwLCAxODBdLAogICAgdGFuOiBbMjEwLCAxODAsIDE0MF0sCiAgICB0ZWFsOiBbMCwgMTI4LCAxMjhdLAogICAgdGhpc3RsZTogWzIxNiwgMTkxLCAyMTZdLAogICAgdG9tYXRvOiBbMjU1LCA5OSwgNzFdLAogICAgdHVycXVvaXNlOiBbNjQsIDIyNCwgMjA4XSwKICAgIHZpb2xldDogWzIzOCwgMTMwLCAyMzhdLAogICAgd2hlYXQ6IFsyNDUsIDIyMiwgMTc5XSwKICAgIHdoaXRlOiBbMjU1LCAyNTUsIDI1NV0sCiAgICB3aGl0ZXNtb2tlOiBbMjQ1LCAyNDUsIDI0NV0sCiAgICB5ZWxsb3c6IFsyNTUsIDI1NSwgMF0sCiAgICB5ZWxsb3dncmVlbjogWzE1NCwgMjA1LCA1MF0KICB9OwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMTYzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CihmdW5jdGlvbigpIHsKICB2YXIgUERGR3JhZGllbnQsIFBERkxpbmVhckdyYWRpZW50LCBQREZSYWRpYWxHcmFkaWVudCwKICAgIGV4dGVuZCA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsgZm9yICh2YXIga2V5IGluIHBhcmVudCkgeyBpZiAoaGFzUHJvcC5jYWxsKHBhcmVudCwga2V5KSkgY2hpbGRba2V5XSA9IHBhcmVudFtrZXldOyB9IGZ1bmN0aW9uIGN0b3IoKSB7IHRoaXMuY29uc3RydWN0b3IgPSBjaGlsZDsgfSBjdG9yLnByb3RvdHlwZSA9IHBhcmVudC5wcm90b3R5cGU7IGNoaWxkLnByb3RvdHlwZSA9IG5ldyBjdG9yKCk7IGNoaWxkLl9fc3VwZXJfXyA9IHBhcmVudC5wcm90b3R5cGU7IHJldHVybiBjaGlsZDsgfSwKICAgIGhhc1Byb3AgPSB7fS5oYXNPd25Qcm9wZXJ0eTsKCiAgUERGR3JhZGllbnQgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBQREZHcmFkaWVudChkb2MpIHsKICAgICAgdGhpcy5kb2MgPSBkb2M7CiAgICAgIHRoaXMuc3RvcHMgPSBbXTsKICAgICAgdGhpcy5lbWJlZGRlZCA9IGZhbHNlOwogICAgICB0aGlzLnRyYW5zZm9ybSA9IFsxLCAwLCAwLCAxLCAwLCAwXTsKICAgICAgdGhpcy5fY29sb3JTcGFjZSA9ICdEZXZpY2VSR0InOwogICAgfQoKICAgIFBERkdyYWRpZW50LnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24ocG9zLCBjb2xvciwgb3BhY2l0eSkgewogICAgICBpZiAob3BhY2l0eSA9PSBudWxsKSB7CiAgICAgICAgb3BhY2l0eSA9IDE7CiAgICAgIH0KICAgICAgb3BhY2l0eSA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIG9wYWNpdHkpKTsKICAgICAgdGhpcy5zdG9wcy5wdXNoKFtwb3MsIHRoaXMuZG9jLl9ub3JtYWxpemVDb2xvcihjb2xvciksIG9wYWNpdHldKTsKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9OwoKICAgIFBERkdyYWRpZW50LnByb3RvdHlwZS5zZXRUcmFuc2Zvcm0gPSBmdW5jdGlvbihtMTEsIG0xMiwgbTIxLCBtMjIsIGR4LCBkeSkgewogICAgICB0aGlzLnRyYW5zZm9ybSA9IFttMTEsIG0xMiwgbTIxLCBtMjIsIGR4LCBkeV07CiAgICAgIHJldHVybiB0aGlzOwogICAgfTsKCiAgICBQREZHcmFkaWVudC5wcm90b3R5cGUuZW1iZWQgPSBmdW5jdGlvbihtKSB7CiAgICAgIHZhciBib3VuZHMsIGVuY29kZSwgZm4sIGZvcm0sIGdyYWQsIGdzdGF0ZSwgaSwgaiwgaywgbGFzdCwgbGVuLCBvcGFjaXR5UGF0dGVybiwgcGFnZUJCb3gsIHBhdHRlcm4sIHJlZiwgcmVmMSwgc2hhZGVyLCBzdG9wLCBzdG9wcywgdjsKICAgICAgaWYgKHRoaXMuc3RvcHMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMuZW1iZWRkZWQgPSB0cnVlOwogICAgICB0aGlzLm1hdHJpeCA9IG07CiAgICAgIGxhc3QgPSB0aGlzLnN0b3BzW3RoaXMuc3RvcHMubGVuZ3RoIC0gMV07CiAgICAgIGlmIChsYXN0WzBdIDwgMSkgewogICAgICAgIHRoaXMuc3RvcHMucHVzaChbMSwgbGFzdFsxXSwgbGFzdFsyXV0pOwogICAgICB9CiAgICAgIGJvdW5kcyA9IFtdOwogICAgICBlbmNvZGUgPSBbXTsKICAgICAgc3RvcHMgPSBbXTsKICAgICAgZm9yIChpID0gaiA9IDAsIHJlZiA9IHRoaXMuc3RvcHMubGVuZ3RoIC0gMTsgMCA8PSByZWYgPyBqIDwgcmVmIDogaiA+IHJlZjsgaSA9IDAgPD0gcmVmID8gKytqIDogLS1qKSB7CiAgICAgICAgZW5jb2RlLnB1c2goMCwgMSk7CiAgICAgICAgaWYgKGkgKyAyICE9PSB0aGlzLnN0b3BzLmxlbmd0aCkgewogICAgICAgICAgYm91bmRzLnB1c2godGhpcy5zdG9wc1tpICsgMV1bMF0pOwogICAgICAgIH0KICAgICAgICBmbiA9IHRoaXMuZG9jLnJlZih7CiAgICAgICAgICBGdW5jdGlvblR5cGU6IDIsCiAgICAgICAgICBEb21haW46IFswLCAxXSwKICAgICAgICAgIEMwOiB0aGlzLnN0b3BzW2kgKyAwXVsxXSwKICAgICAgICAgIEMxOiB0aGlzLnN0b3BzW2kgKyAxXVsxXSwKICAgICAgICAgIE46IDEKICAgICAgICB9KTsKICAgICAgICBzdG9wcy5wdXNoKGZuKTsKICAgICAgICBmbi5lbmQoKTsKICAgICAgfQogICAgICBpZiAoc3RvcHMubGVuZ3RoID09PSAxKSB7CiAgICAgICAgZm4gPSBzdG9wc1swXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBmbiA9IHRoaXMuZG9jLnJlZih7CiAgICAgICAgICBGdW5jdGlvblR5cGU6IDMsCiAgICAgICAgICBEb21haW46IFswLCAxXSwKICAgICAgICAgIEZ1bmN0aW9uczogc3RvcHMsCiAgICAgICAgICBCb3VuZHM6IGJvdW5kcywKICAgICAgICAgIEVuY29kZTogZW5jb2RlCiAgICAgICAgfSk7CiAgICAgICAgZm4uZW5kKCk7CiAgICAgIH0KICAgICAgdGhpcy5pZCA9ICdTaCcgKyAoKyt0aGlzLmRvYy5fZ3JhZENvdW50KTsKICAgICAgc2hhZGVyID0gdGhpcy5zaGFkZXIoZm4pOwogICAgICBzaGFkZXIuZW5kKCk7CiAgICAgIHBhdHRlcm4gPSB0aGlzLmRvYy5yZWYoewogICAgICAgIFR5cGU6ICdQYXR0ZXJuJywKICAgICAgICBQYXR0ZXJuVHlwZTogMiwKICAgICAgICBTaGFkaW5nOiBzaGFkZXIsCiAgICAgICAgTWF0cml4OiAoZnVuY3Rpb24oKSB7CiAgICAgICAgICB2YXIgaywgbGVuLCByZWYxLCByZXN1bHRzOwogICAgICAgICAgcmVmMSA9IHRoaXMubWF0cml4OwogICAgICAgICAgcmVzdWx0cyA9IFtdOwogICAgICAgICAgZm9yIChrID0gMCwgbGVuID0gcmVmMS5sZW5ndGg7IGsgPCBsZW47IGsrKykgewogICAgICAgICAgICB2ID0gcmVmMVtrXTsKICAgICAgICAgICAgcmVzdWx0cy5wdXNoKCt2LnRvRml4ZWQoNSkpOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgICAgfSkuY2FsbCh0aGlzKQogICAgICB9KTsKICAgICAgcGF0dGVybi5lbmQoKTsKICAgICAgaWYgKHRoaXMuc3RvcHMuc29tZShmdW5jdGlvbihzdG9wKSB7CiAgICAgICAgcmV0dXJuIHN0b3BbMl0gPCAxOwogICAgICB9KSkgewogICAgICAgIGdyYWQgPSB0aGlzLm9wYWNpdHlHcmFkaWVudCgpOwogICAgICAgIGdyYWQuX2NvbG9yU3BhY2UgPSAnRGV2aWNlR3JheSc7CiAgICAgICAgcmVmMSA9IHRoaXMuc3RvcHM7CiAgICAgICAgZm9yIChrID0gMCwgbGVuID0gcmVmMS5sZW5ndGg7IGsgPCBsZW47IGsrKykgewogICAgICAgICAgc3RvcCA9IHJlZjFba107CiAgICAgICAgICBncmFkLnN0b3Aoc3RvcFswXSwgW3N0b3BbMl1dKTsKICAgICAgICB9CiAgICAgICAgZ3JhZCA9IGdyYWQuZW1iZWQodGhpcy5tYXRyaXgpOwogICAgICAgIHBhZ2VCQm94ID0gWzAsIDAsIHRoaXMuZG9jLnBhZ2Uud2lkdGgsIHRoaXMuZG9jLnBhZ2UuaGVpZ2h0XTsKICAgICAgICBmb3JtID0gdGhpcy5kb2MucmVmKHsKICAgICAgICAgIFR5cGU6ICdYT2JqZWN0JywKICAgICAgICAgIFN1YnR5cGU6ICdGb3JtJywKICAgICAgICAgIEZvcm1UeXBlOiAxLAogICAgICAgICAgQkJveDogcGFnZUJCb3gsCiAgICAgICAgICBHcm91cDogewogICAgICAgICAgICBUeXBlOiAnR3JvdXAnLAogICAgICAgICAgICBTOiAnVHJhbnNwYXJlbmN5JywKICAgICAgICAgICAgQ1M6ICdEZXZpY2VHcmF5JwogICAgICAgICAgfSwKICAgICAgICAgIFJlc291cmNlczogewogICAgICAgICAgICBQcm9jU2V0OiBbJ1BERicsICdUZXh0JywgJ0ltYWdlQicsICdJbWFnZUMnLCAnSW1hZ2VJJ10sCiAgICAgICAgICAgIFBhdHRlcm46IHsKICAgICAgICAgICAgICBTaDE6IGdyYWQKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIGZvcm0ud3JpdGUoIi9QYXR0ZXJuIGNzIC9TaDEgc2NuIik7CiAgICAgICAgZm9ybS5lbmQoKHBhZ2VCQm94LmpvaW4oIiAiKSkgKyAiIHJlIGYiKTsKICAgICAgICBnc3RhdGUgPSB0aGlzLmRvYy5yZWYoewogICAgICAgICAgVHlwZTogJ0V4dEdTdGF0ZScsCiAgICAgICAgICBTTWFzazogewogICAgICAgICAgICBUeXBlOiAnTWFzaycsCiAgICAgICAgICAgIFM6ICdMdW1pbm9zaXR5JywKICAgICAgICAgICAgRzogZm9ybQogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIGdzdGF0ZS5lbmQoKTsKICAgICAgICBvcGFjaXR5UGF0dGVybiA9IHRoaXMuZG9jLnJlZih7CiAgICAgICAgICBUeXBlOiAnUGF0dGVybicsCiAgICAgICAgICBQYXR0ZXJuVHlwZTogMSwKICAgICAgICAgIFBhaW50VHlwZTogMSwKICAgICAgICAgIFRpbGluZ1R5cGU6IDIsCiAgICAgICAgICBCQm94OiBwYWdlQkJveCwKICAgICAgICAgIFhTdGVwOiBwYWdlQkJveFsyXSwKICAgICAgICAgIFlTdGVwOiBwYWdlQkJveFszXSwKICAgICAgICAgIFJlc291cmNlczogewogICAgICAgICAgICBQcm9jU2V0OiBbJ1BERicsICdUZXh0JywgJ0ltYWdlQicsICdJbWFnZUMnLCAnSW1hZ2VJJ10sCiAgICAgICAgICAgIFBhdHRlcm46IHsKICAgICAgICAgICAgICBTaDE6IHBhdHRlcm4KICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXh0R1N0YXRlOiB7CiAgICAgICAgICAgICAgR3MxOiBnc3RhdGUKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIG9wYWNpdHlQYXR0ZXJuLndyaXRlKCIvR3MxIGdzIC9QYXR0ZXJuIGNzIC9TaDEgc2NuIik7CiAgICAgICAgb3BhY2l0eVBhdHRlcm4uZW5kKChwYWdlQkJveC5qb2luKCIgIikpICsgIiByZSBmIik7CiAgICAgICAgdGhpcy5kb2MucGFnZS5wYXR0ZXJuc1t0aGlzLmlkXSA9IG9wYWNpdHlQYXR0ZXJuOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuZG9jLnBhZ2UucGF0dGVybnNbdGhpcy5pZF0gPSBwYXR0ZXJuOwogICAgICB9CiAgICAgIHJldHVybiBwYXR0ZXJuOwogICAgfTsKCiAgICBQREZHcmFkaWVudC5wcm90b3R5cGUuYXBwbHkgPSBmdW5jdGlvbihvcCkgewogICAgICB2YXIgZHgsIGR5LCBtLCBtMCwgbTEsIG0xMSwgbTEyLCBtMiwgbTIxLCBtMjIsIG0zLCBtNCwgbTUsIHJlZiwgcmVmMTsKICAgICAgcmVmID0gdGhpcy5kb2MuX2N0bS5zbGljZSgpLCBtMCA9IHJlZlswXSwgbTEgPSByZWZbMV0sIG0yID0gcmVmWzJdLCBtMyA9IHJlZlszXSwgbTQgPSByZWZbNF0sIG01ID0gcmVmWzVdOwogICAgICByZWYxID0gdGhpcy50cmFuc2Zvcm0sIG0xMSA9IHJlZjFbMF0sIG0xMiA9IHJlZjFbMV0sIG0yMSA9IHJlZjFbMl0sIG0yMiA9IHJlZjFbM10sIGR4ID0gcmVmMVs0XSwgZHkgPSByZWYxWzVdOwogICAgICBtID0gW20wICogbTExICsgbTIgKiBtMTIsIG0xICogbTExICsgbTMgKiBtMTIsIG0wICogbTIxICsgbTIgKiBtMjIsIG0xICogbTIxICsgbTMgKiBtMjIsIG0wICogZHggKyBtMiAqIGR5ICsgbTQsIG0xICogZHggKyBtMyAqIGR5ICsgbTVdOwogICAgICBpZiAoISh0aGlzLmVtYmVkZGVkICYmIG0uam9pbigiICIpID09PSB0aGlzLm1hdHJpeC5qb2luKCIgIikpKSB7CiAgICAgICAgdGhpcy5lbWJlZChtKTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy5kb2MuYWRkQ29udGVudCgiLyIgKyB0aGlzLmlkICsgIiAiICsgb3ApOwogICAgfTsKCiAgICByZXR1cm4gUERGR3JhZGllbnQ7CgogIH0pKCk7CgogIFBERkxpbmVhckdyYWRpZW50ID0gKGZ1bmN0aW9uKHN1cGVyQ2xhc3MpIHsKICAgIGV4dGVuZChQREZMaW5lYXJHcmFkaWVudCwgc3VwZXJDbGFzcyk7CgogICAgZnVuY3Rpb24gUERGTGluZWFyR3JhZGllbnQoZG9jLCB4MSwgeTEsIHgyLCB5MikgewogICAgICB0aGlzLmRvYyA9IGRvYzsKICAgICAgdGhpcy54MSA9IHgxOwogICAgICB0aGlzLnkxID0geTE7CiAgICAgIHRoaXMueDIgPSB4MjsKICAgICAgdGhpcy55MiA9IHkyOwogICAgICBQREZMaW5lYXJHcmFkaWVudC5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgIH0KCiAgICBQREZMaW5lYXJHcmFkaWVudC5wcm90b3R5cGUuc2hhZGVyID0gZnVuY3Rpb24oZm4pIHsKICAgICAgcmV0dXJuIHRoaXMuZG9jLnJlZih7CiAgICAgICAgU2hhZGluZ1R5cGU6IDIsCiAgICAgICAgQ29sb3JTcGFjZTogdGhpcy5fY29sb3JTcGFjZSwKICAgICAgICBDb29yZHM6IFt0aGlzLngxLCB0aGlzLnkxLCB0aGlzLngyLCB0aGlzLnkyXSwKICAgICAgICBGdW5jdGlvbjogZm4sCiAgICAgICAgRXh0ZW5kOiBbdHJ1ZSwgdHJ1ZV0KICAgICAgfSk7CiAgICB9OwoKICAgIFBERkxpbmVhckdyYWRpZW50LnByb3RvdHlwZS5vcGFjaXR5R3JhZGllbnQgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIG5ldyBQREZMaW5lYXJHcmFkaWVudCh0aGlzLmRvYywgdGhpcy54MSwgdGhpcy55MSwgdGhpcy54MiwgdGhpcy55Mik7CiAgICB9OwoKICAgIHJldHVybiBQREZMaW5lYXJHcmFkaWVudDsKCiAgfSkoUERGR3JhZGllbnQpOwoKICBQREZSYWRpYWxHcmFkaWVudCA9IChmdW5jdGlvbihzdXBlckNsYXNzKSB7CiAgICBleHRlbmQoUERGUmFkaWFsR3JhZGllbnQsIHN1cGVyQ2xhc3MpOwoKICAgIGZ1bmN0aW9uIFBERlJhZGlhbEdyYWRpZW50KGRvYywgeDEsIHkxLCByMSwgeDIsIHkyLCByMikgewogICAgICB0aGlzLmRvYyA9IGRvYzsKICAgICAgdGhpcy54MSA9IHgxOwogICAgICB0aGlzLnkxID0geTE7CiAgICAgIHRoaXMucjEgPSByMTsKICAgICAgdGhpcy54MiA9IHgyOwogICAgICB0aGlzLnkyID0geTI7CiAgICAgIHRoaXMucjIgPSByMjsKICAgICAgUERGUmFkaWFsR3JhZGllbnQuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICB9CgogICAgUERGUmFkaWFsR3JhZGllbnQucHJvdG90eXBlLnNoYWRlciA9IGZ1bmN0aW9uKGZuKSB7CiAgICAgIHJldHVybiB0aGlzLmRvYy5yZWYoewogICAgICAgIFNoYWRpbmdUeXBlOiAzLAogICAgICAgIENvbG9yU3BhY2U6IHRoaXMuX2NvbG9yU3BhY2UsCiAgICAgICAgQ29vcmRzOiBbdGhpcy54MSwgdGhpcy55MSwgdGhpcy5yMSwgdGhpcy54MiwgdGhpcy55MiwgdGhpcy5yMl0sCiAgICAgICAgRnVuY3Rpb246IGZuLAogICAgICAgIEV4dGVuZDogW3RydWUsIHRydWVdCiAgICAgIH0pOwogICAgfTsKCiAgICBQREZSYWRpYWxHcmFkaWVudC5wcm90b3R5cGUub3BhY2l0eUdyYWRpZW50ID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBuZXcgUERGUmFkaWFsR3JhZGllbnQodGhpcy5kb2MsIHRoaXMueDEsIHRoaXMueTEsIHRoaXMucjEsIHRoaXMueDIsIHRoaXMueTIsIHRoaXMucjIpOwogICAgfTsKCiAgICByZXR1cm4gUERGUmFkaWFsR3JhZGllbnQ7CgogIH0pKFBERkdyYWRpZW50KTsKCiAgbW9kdWxlLmV4cG9ydHMgPSB7CiAgICBQREZHcmFkaWVudDogUERGR3JhZGllbnQsCiAgICBQREZMaW5lYXJHcmFkaWVudDogUERGTGluZWFyR3JhZGllbnQsCiAgICBQREZSYWRpYWxHcmFkaWVudDogUERGUmFkaWFsR3JhZGllbnQKICB9OwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMTY0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CihmdW5jdGlvbigpIHsKICB2YXIgS0FQUEEsIFNWR1BhdGgsIG51bWJlciwKICAgIHNsaWNlID0gW10uc2xpY2U7CgogIFNWR1BhdGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2NSk7CgogIG51bWJlciA9IF9fd2VicGFja19yZXF1aXJlX18oMjYpLm51bWJlcjsKCiAgS0FQUEEgPSA0LjAgKiAoKE1hdGguc3FydCgyKSAtIDEuMCkgLyAzLjApOwoKICBtb2R1bGUuZXhwb3J0cyA9IHsKICAgIGluaXRWZWN0b3I6IGZ1bmN0aW9uKCkgewogICAgICB0aGlzLl9jdG0gPSBbMSwgMCwgMCwgMSwgMCwgMF07CiAgICAgIHJldHVybiB0aGlzLl9jdG1TdGFjayA9IFtdOwogICAgfSwKICAgIHNhdmU6IGZ1bmN0aW9uKCkgewogICAgICB0aGlzLl9jdG1TdGFjay5wdXNoKHRoaXMuX2N0bS5zbGljZSgpKTsKICAgICAgcmV0dXJuIHRoaXMuYWRkQ29udGVudCgncScpOwogICAgfSwKICAgIHJlc3RvcmU6IGZ1bmN0aW9uKCkgewogICAgICB0aGlzLl9jdG0gPSB0aGlzLl9jdG1TdGFjay5wb3AoKSB8fCBbMSwgMCwgMCwgMSwgMCwgMF07CiAgICAgIHJldHVybiB0aGlzLmFkZENvbnRlbnQoJ1EnKTsKICAgIH0sCiAgICBjbG9zZVBhdGg6IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy5hZGRDb250ZW50KCdoJyk7CiAgICB9LAogICAgbGluZVdpZHRoOiBmdW5jdGlvbih3KSB7CiAgICAgIHJldHVybiB0aGlzLmFkZENvbnRlbnQoKG51bWJlcih3KSkgKyAiIHciKTsKICAgIH0sCiAgICBfQ0FQX1NUWUxFUzogewogICAgICBCVVRUOiAwLAogICAgICBST1VORDogMSwKICAgICAgU1FVQVJFOiAyCiAgICB9LAogICAgbGluZUNhcDogZnVuY3Rpb24oYykgewogICAgICBpZiAodHlwZW9mIGMgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgYyA9IHRoaXMuX0NBUF9TVFlMRVNbYy50b1VwcGVyQ2FzZSgpXTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy5hZGRDb250ZW50KGMgKyAiIEoiKTsKICAgIH0sCiAgICBfSk9JTl9TVFlMRVM6IHsKICAgICAgTUlURVI6IDAsCiAgICAgIFJPVU5EOiAxLAogICAgICBCRVZFTDogMgogICAgfSwKICAgIGxpbmVKb2luOiBmdW5jdGlvbihqKSB7CiAgICAgIGlmICh0eXBlb2YgaiA9PT0gJ3N0cmluZycpIHsKICAgICAgICBqID0gdGhpcy5fSk9JTl9TVFlMRVNbai50b1VwcGVyQ2FzZSgpXTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy5hZGRDb250ZW50KGogKyAiIGoiKTsKICAgIH0sCiAgICBtaXRlckxpbWl0OiBmdW5jdGlvbihtKSB7CiAgICAgIHJldHVybiB0aGlzLmFkZENvbnRlbnQoKG51bWJlcihtKSkgKyAiIE0iKTsKICAgIH0sCiAgICBkYXNoOiBmdW5jdGlvbihsZW5ndGgsIG9wdGlvbnMpIHsKICAgICAgdmFyIHBoYXNlLCByZWYsIHNwYWNlLCB2OwogICAgICBpZiAob3B0aW9ucyA9PSBudWxsKSB7CiAgICAgICAgb3B0aW9ucyA9IHt9OwogICAgICB9CiAgICAgIGlmIChsZW5ndGggPT0gbnVsbCkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CiAgICAgIGlmIChBcnJheS5pc0FycmF5KGxlbmd0aCkpIHsKICAgICAgICBsZW5ndGggPSAoKGZ1bmN0aW9uKCkgewogICAgICAgICAgdmFyIGksIGxlbiwgcmVzdWx0czsKICAgICAgICAgIHJlc3VsdHMgPSBbXTsKICAgICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IGxlbmd0aC5sZW5ndGg7IGkgPCBsZW47IGkrKykgewogICAgICAgICAgICB2ID0gbGVuZ3RoW2ldOwogICAgICAgICAgICByZXN1bHRzLnB1c2gobnVtYmVyKHYpKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiByZXN1bHRzOwogICAgICAgIH0pKCkpLmpvaW4oJyAnKTsKICAgICAgICBwaGFzZSA9IG9wdGlvbnMucGhhc2UgfHwgMDsKICAgICAgICByZXR1cm4gdGhpcy5hZGRDb250ZW50KCJbIiArIGxlbmd0aCArICJdICIgKyAobnVtYmVyKHBoYXNlKSkgKyAiIGQiKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBzcGFjZSA9IChyZWYgPSBvcHRpb25zLnNwYWNlKSAhPSBudWxsID8gcmVmIDogbGVuZ3RoOwogICAgICAgIHBoYXNlID0gb3B0aW9ucy5waGFzZSB8fCAwOwogICAgICAgIHJldHVybiB0aGlzLmFkZENvbnRlbnQoIlsiICsgKG51bWJlcihsZW5ndGgpKSArICIgIiArIChudW1iZXIoc3BhY2UpKSArICJdICIgKyAobnVtYmVyKHBoYXNlKSkgKyAiIGQiKTsKICAgICAgfQogICAgfSwKICAgIHVuZGFzaDogZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLmFkZENvbnRlbnQoIltdIDAgZCIpOwogICAgfSwKICAgIG1vdmVUbzogZnVuY3Rpb24oeCwgeSkgewogICAgICByZXR1cm4gdGhpcy5hZGRDb250ZW50KChudW1iZXIoeCkpICsgIiAiICsgKG51bWJlcih5KSkgKyAiIG0iKTsKICAgIH0sCiAgICBsaW5lVG86IGZ1bmN0aW9uKHgsIHkpIHsKICAgICAgcmV0dXJuIHRoaXMuYWRkQ29udGVudCgobnVtYmVyKHgpKSArICIgIiArIChudW1iZXIoeSkpICsgIiBsIik7CiAgICB9LAogICAgYmV6aWVyQ3VydmVUbzogZnVuY3Rpb24oY3AxeCwgY3AxeSwgY3AyeCwgY3AyeSwgeCwgeSkgewogICAgICByZXR1cm4gdGhpcy5hZGRDb250ZW50KChudW1iZXIoY3AxeCkpICsgIiAiICsgKG51bWJlcihjcDF5KSkgKyAiICIgKyAobnVtYmVyKGNwMngpKSArICIgIiArIChudW1iZXIoY3AyeSkpICsgIiAiICsgKG51bWJlcih4KSkgKyAiICIgKyAobnVtYmVyKHkpKSArICIgYyIpOwogICAgfSwKICAgIHF1YWRyYXRpY0N1cnZlVG86IGZ1bmN0aW9uKGNweCwgY3B5LCB4LCB5KSB7CiAgICAgIHJldHVybiB0aGlzLmFkZENvbnRlbnQoKG51bWJlcihjcHgpKSArICIgIiArIChudW1iZXIoY3B5KSkgKyAiICIgKyAobnVtYmVyKHgpKSArICIgIiArIChudW1iZXIoeSkpICsgIiB2Iik7CiAgICB9LAogICAgcmVjdDogZnVuY3Rpb24oeCwgeSwgdywgaCkgewogICAgICByZXR1cm4gdGhpcy5hZGRDb250ZW50KChudW1iZXIoeCkpICsgIiAiICsgKG51bWJlcih5KSkgKyAiICIgKyAobnVtYmVyKHcpKSArICIgIiArIChudW1iZXIoaCkpICsgIiByZSIpOwogICAgfSwKICAgIHJvdW5kZWRSZWN0OiBmdW5jdGlvbih4LCB5LCB3LCBoLCByKSB7CiAgICAgIHZhciBjOwogICAgICBpZiAociA9PSBudWxsKSB7CiAgICAgICAgciA9IDA7CiAgICAgIH0KICAgICAgciA9IE1hdGgubWluKHIsIDAuNSAqIHcsIDAuNSAqIGgpOwogICAgICBjID0gciAqICgxLjAgLSBLQVBQQSk7CiAgICAgIHRoaXMubW92ZVRvKHggKyByLCB5KTsKICAgICAgdGhpcy5saW5lVG8oeCArIHcgLSByLCB5KTsKICAgICAgdGhpcy5iZXppZXJDdXJ2ZVRvKHggKyB3IC0gYywgeSwgeCArIHcsIHkgKyBjLCB4ICsgdywgeSArIHIpOwogICAgICB0aGlzLmxpbmVUbyh4ICsgdywgeSArIGggLSByKTsKICAgICAgdGhpcy5iZXppZXJDdXJ2ZVRvKHggKyB3LCB5ICsgaCAtIGMsIHggKyB3IC0gYywgeSArIGgsIHggKyB3IC0gciwgeSArIGgpOwogICAgICB0aGlzLmxpbmVUbyh4ICsgciwgeSArIGgpOwogICAgICB0aGlzLmJlemllckN1cnZlVG8oeCArIGMsIHkgKyBoLCB4LCB5ICsgaCAtIGMsIHgsIHkgKyBoIC0gcik7CiAgICAgIHRoaXMubGluZVRvKHgsIHkgKyByKTsKICAgICAgdGhpcy5iZXppZXJDdXJ2ZVRvKHgsIHkgKyBjLCB4ICsgYywgeSwgeCArIHIsIHkpOwogICAgICByZXR1cm4gdGhpcy5jbG9zZVBhdGgoKTsKICAgIH0sCiAgICBlbGxpcHNlOiBmdW5jdGlvbih4LCB5LCByMSwgcjIpIHsKICAgICAgdmFyIG94LCBveSwgeGUsIHhtLCB5ZSwgeW07CiAgICAgIGlmIChyMiA9PSBudWxsKSB7CiAgICAgICAgcjIgPSByMTsKICAgICAgfQogICAgICB4IC09IHIxOwogICAgICB5IC09IHIyOwogICAgICBveCA9IHIxICogS0FQUEE7CiAgICAgIG95ID0gcjIgKiBLQVBQQTsKICAgICAgeGUgPSB4ICsgcjEgKiAyOwogICAgICB5ZSA9IHkgKyByMiAqIDI7CiAgICAgIHhtID0geCArIHIxOwogICAgICB5bSA9IHkgKyByMjsKICAgICAgdGhpcy5tb3ZlVG8oeCwgeW0pOwogICAgICB0aGlzLmJlemllckN1cnZlVG8oeCwgeW0gLSBveSwgeG0gLSBveCwgeSwgeG0sIHkpOwogICAgICB0aGlzLmJlemllckN1cnZlVG8oeG0gKyBveCwgeSwgeGUsIHltIC0gb3ksIHhlLCB5bSk7CiAgICAgIHRoaXMuYmV6aWVyQ3VydmVUbyh4ZSwgeW0gKyBveSwgeG0gKyBveCwgeWUsIHhtLCB5ZSk7CiAgICAgIHRoaXMuYmV6aWVyQ3VydmVUbyh4bSAtIG94LCB5ZSwgeCwgeW0gKyBveSwgeCwgeW0pOwogICAgICByZXR1cm4gdGhpcy5jbG9zZVBhdGgoKTsKICAgIH0sCiAgICBjaXJjbGU6IGZ1bmN0aW9uKHgsIHksIHJhZGl1cykgewogICAgICByZXR1cm4gdGhpcy5lbGxpcHNlKHgsIHksIHJhZGl1cyk7CiAgICB9LAogICAgYXJjOiBmdW5jdGlvbih4LCB5LCByYWRpdXMsIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCBhbnRpY2xvY2t3aXNlKSB7CiAgICAgIHZhciBIQUxGX1BJLCBUV09fUEksIGF4LCBheSwgY3AxeCwgY3AxeSwgY3AyeCwgY3AyeSwgY3VyQW5nLCBkZWx0YUFuZywgZGVsdGFDeCwgZGVsdGFDeSwgZGlyLCBoYW5kbGVMZW4sIGksIG51bVNlZ3MsIHJlZiwgc2VnQW5nLCBzZWdJZHg7CiAgICAgIGlmIChhbnRpY2xvY2t3aXNlID09IG51bGwpIHsKICAgICAgICBhbnRpY2xvY2t3aXNlID0gZmFsc2U7CiAgICAgIH0KICAgICAgVFdPX1BJID0gMi4wICogTWF0aC5QSTsKICAgICAgSEFMRl9QSSA9IDAuNSAqIE1hdGguUEk7CiAgICAgIGRlbHRhQW5nID0gZW5kQW5nbGUgLSBzdGFydEFuZ2xlOwogICAgICBpZiAoTWF0aC5hYnMoZGVsdGFBbmcpID4gVFdPX1BJKSB7CiAgICAgICAgZGVsdGFBbmcgPSBUV09fUEk7CiAgICAgIH0gZWxzZSBpZiAoZGVsdGFBbmcgIT09IDAgJiYgYW50aWNsb2Nrd2lzZSAhPT0gKGRlbHRhQW5nIDwgMCkpIHsKICAgICAgICBkaXIgPSBhbnRpY2xvY2t3aXNlID8gLTEgOiAxOwogICAgICAgIGRlbHRhQW5nID0gZGlyICogVFdPX1BJICsgZGVsdGFBbmc7CiAgICAgIH0KICAgICAgbnVtU2VncyA9IE1hdGguY2VpbChNYXRoLmFicyhkZWx0YUFuZykgLyBIQUxGX1BJKTsKICAgICAgc2VnQW5nID0gZGVsdGFBbmcgLyBudW1TZWdzOwogICAgICBoYW5kbGVMZW4gPSAoc2VnQW5nIC8gSEFMRl9QSSkgKiBLQVBQQSAqIHJhZGl1czsKICAgICAgY3VyQW5nID0gc3RhcnRBbmdsZTsKICAgICAgZGVsdGFDeCA9IC1NYXRoLnNpbihjdXJBbmcpICogaGFuZGxlTGVuOwogICAgICBkZWx0YUN5ID0gTWF0aC5jb3MoY3VyQW5nKSAqIGhhbmRsZUxlbjsKICAgICAgYXggPSB4ICsgTWF0aC5jb3MoY3VyQW5nKSAqIHJhZGl1czsKICAgICAgYXkgPSB5ICsgTWF0aC5zaW4oY3VyQW5nKSAqIHJhZGl1czsKICAgICAgdGhpcy5tb3ZlVG8oYXgsIGF5KTsKICAgICAgZm9yIChzZWdJZHggPSBpID0gMCwgcmVmID0gbnVtU2VnczsgMCA8PSByZWYgPyBpIDwgcmVmIDogaSA+IHJlZjsgc2VnSWR4ID0gMCA8PSByZWYgPyArK2kgOiAtLWkpIHsKICAgICAgICBjcDF4ID0gYXggKyBkZWx0YUN4OwogICAgICAgIGNwMXkgPSBheSArIGRlbHRhQ3k7CiAgICAgICAgY3VyQW5nICs9IHNlZ0FuZzsKICAgICAgICBheCA9IHggKyBNYXRoLmNvcyhjdXJBbmcpICogcmFkaXVzOwogICAgICAgIGF5ID0geSArIE1hdGguc2luKGN1ckFuZykgKiByYWRpdXM7CiAgICAgICAgZGVsdGFDeCA9IC1NYXRoLnNpbihjdXJBbmcpICogaGFuZGxlTGVuOwogICAgICAgIGRlbHRhQ3kgPSBNYXRoLmNvcyhjdXJBbmcpICogaGFuZGxlTGVuOwogICAgICAgIGNwMnggPSBheCAtIGRlbHRhQ3g7CiAgICAgICAgY3AyeSA9IGF5IC0gZGVsdGFDeTsKICAgICAgICB0aGlzLmJlemllckN1cnZlVG8oY3AxeCwgY3AxeSwgY3AyeCwgY3AyeSwgYXgsIGF5KTsKICAgICAgfQogICAgICByZXR1cm4gdGhpczsKICAgIH0sCiAgICBwb2x5Z29uOiBmdW5jdGlvbigpIHsKICAgICAgdmFyIGksIGxlbiwgcG9pbnQsIHBvaW50czsKICAgICAgcG9pbnRzID0gMSA8PSBhcmd1bWVudHMubGVuZ3RoID8gc2xpY2UuY2FsbChhcmd1bWVudHMsIDApIDogW107CiAgICAgIHRoaXMubW92ZVRvLmFwcGx5KHRoaXMsIHBvaW50cy5zaGlmdCgpKTsKICAgICAgZm9yIChpID0gMCwgbGVuID0gcG9pbnRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgcG9pbnQgPSBwb2ludHNbaV07CiAgICAgICAgdGhpcy5saW5lVG8uYXBwbHkodGhpcywgcG9pbnQpOwogICAgICB9CiAgICAgIHJldHVybiB0aGlzLmNsb3NlUGF0aCgpOwogICAgfSwKICAgIHBhdGg6IGZ1bmN0aW9uKHBhdGgpIHsKICAgICAgU1ZHUGF0aC5hcHBseSh0aGlzLCBwYXRoKTsKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9LAogICAgX3dpbmRpbmdSdWxlOiBmdW5jdGlvbihydWxlKSB7CiAgICAgIGlmICgvZXZlbi0/b2RkLy50ZXN0KHJ1bGUpKSB7CiAgICAgICAgcmV0dXJuICcqJzsKICAgICAgfQogICAgICByZXR1cm4gJyc7CiAgICB9LAogICAgZmlsbDogZnVuY3Rpb24oY29sb3IsIHJ1bGUpIHsKICAgICAgaWYgKC8oZXZlbi0/b2RkKXwobm9uLT96ZXJvKS8udGVzdChjb2xvcikpIHsKICAgICAgICBydWxlID0gY29sb3I7CiAgICAgICAgY29sb3IgPSBudWxsOwogICAgICB9CiAgICAgIGlmIChjb2xvcikgewogICAgICAgIHRoaXMuZmlsbENvbG9yKGNvbG9yKTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy5hZGRDb250ZW50KCdmJyArIHRoaXMuX3dpbmRpbmdSdWxlKHJ1bGUpKTsKICAgIH0sCiAgICBzdHJva2U6IGZ1bmN0aW9uKGNvbG9yKSB7CiAgICAgIGlmIChjb2xvcikgewogICAgICAgIHRoaXMuc3Ryb2tlQ29sb3IoY29sb3IpOwogICAgICB9CiAgICAgIHJldHVybiB0aGlzLmFkZENvbnRlbnQoJ1MnKTsKICAgIH0sCiAgICBmaWxsQW5kU3Ryb2tlOiBmdW5jdGlvbihmaWxsQ29sb3IsIHN0cm9rZUNvbG9yLCBydWxlKSB7CiAgICAgIHZhciBpc0ZpbGxSdWxlOwogICAgICBpZiAoc3Ryb2tlQ29sb3IgPT0gbnVsbCkgewogICAgICAgIHN0cm9rZUNvbG9yID0gZmlsbENvbG9yOwogICAgICB9CiAgICAgIGlzRmlsbFJ1bGUgPSAvKGV2ZW4tP29kZCl8KG5vbi0/emVybykvOwogICAgICBpZiAoaXNGaWxsUnVsZS50ZXN0KGZpbGxDb2xvcikpIHsKICAgICAgICBydWxlID0gZmlsbENvbG9yOwogICAgICAgIGZpbGxDb2xvciA9IG51bGw7CiAgICAgIH0KICAgICAgaWYgKGlzRmlsbFJ1bGUudGVzdChzdHJva2VDb2xvcikpIHsKICAgICAgICBydWxlID0gc3Ryb2tlQ29sb3I7CiAgICAgICAgc3Ryb2tlQ29sb3IgPSBmaWxsQ29sb3I7CiAgICAgIH0KICAgICAgaWYgKGZpbGxDb2xvcikgewogICAgICAgIHRoaXMuZmlsbENvbG9yKGZpbGxDb2xvcik7CiAgICAgICAgdGhpcy5zdHJva2VDb2xvcihzdHJva2VDb2xvcik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuYWRkQ29udGVudCgnQicgKyB0aGlzLl93aW5kaW5nUnVsZShydWxlKSk7CiAgICB9LAogICAgY2xpcDogZnVuY3Rpb24ocnVsZSkgewogICAgICByZXR1cm4gdGhpcy5hZGRDb250ZW50KCdXJyArIHRoaXMuX3dpbmRpbmdSdWxlKHJ1bGUpICsgJyBuJyk7CiAgICB9LAogICAgdHJhbnNmb3JtOiBmdW5jdGlvbihtMTEsIG0xMiwgbTIxLCBtMjIsIGR4LCBkeSkgewogICAgICB2YXIgbSwgbTAsIG0xLCBtMiwgbTMsIG00LCBtNSwgdiwgdmFsdWVzOwogICAgICBtID0gdGhpcy5fY3RtOwogICAgICBtMCA9IG1bMF0sIG0xID0gbVsxXSwgbTIgPSBtWzJdLCBtMyA9IG1bM10sIG00ID0gbVs0XSwgbTUgPSBtWzVdOwogICAgICBtWzBdID0gbTAgKiBtMTEgKyBtMiAqIG0xMjsKICAgICAgbVsxXSA9IG0xICogbTExICsgbTMgKiBtMTI7CiAgICAgIG1bMl0gPSBtMCAqIG0yMSArIG0yICogbTIyOwogICAgICBtWzNdID0gbTEgKiBtMjEgKyBtMyAqIG0yMjsKICAgICAgbVs0XSA9IG0wICogZHggKyBtMiAqIGR5ICsgbTQ7CiAgICAgIG1bNV0gPSBtMSAqIGR4ICsgbTMgKiBkeSArIG01OwogICAgICB2YWx1ZXMgPSAoKGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBpLCBsZW4sIHJlZiwgcmVzdWx0czsKICAgICAgICByZWYgPSBbbTExLCBtMTIsIG0yMSwgbTIyLCBkeCwgZHldOwogICAgICAgIHJlc3VsdHMgPSBbXTsKICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICAgIHYgPSByZWZbaV07CiAgICAgICAgICByZXN1bHRzLnB1c2gobnVtYmVyKHYpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgIH0pKCkpLmpvaW4oJyAnKTsKICAgICAgcmV0dXJuIHRoaXMuYWRkQ29udGVudCh2YWx1ZXMgKyAiIGNtIik7CiAgICB9LAogICAgdHJhbnNsYXRlOiBmdW5jdGlvbih4LCB5KSB7CiAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybSgxLCAwLCAwLCAxLCB4LCB5KTsKICAgIH0sCiAgICByb3RhdGU6IGZ1bmN0aW9uKGFuZ2xlLCBvcHRpb25zKSB7CiAgICAgIHZhciBjb3MsIHJhZCwgcmVmLCBzaW4sIHgsIHgxLCB5LCB5MTsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICByYWQgPSBhbmdsZSAqIE1hdGguUEkgLyAxODA7CiAgICAgIGNvcyA9IE1hdGguY29zKHJhZCk7CiAgICAgIHNpbiA9IE1hdGguc2luKHJhZCk7CiAgICAgIHggPSB5ID0gMDsKICAgICAgaWYgKG9wdGlvbnMub3JpZ2luICE9IG51bGwpIHsKICAgICAgICByZWYgPSBvcHRpb25zLm9yaWdpbiwgeCA9IHJlZlswXSwgeSA9IHJlZlsxXTsKICAgICAgICB4MSA9IHggKiBjb3MgLSB5ICogc2luOwogICAgICAgIHkxID0geCAqIHNpbiArIHkgKiBjb3M7CiAgICAgICAgeCAtPSB4MTsKICAgICAgICB5IC09IHkxOwogICAgICB9CiAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybShjb3MsIHNpbiwgLXNpbiwgY29zLCB4LCB5KTsKICAgIH0sCiAgICBzY2FsZTogZnVuY3Rpb24oeEZhY3RvciwgeUZhY3Rvciwgb3B0aW9ucykgewogICAgICB2YXIgcmVmLCB4LCB5OwogICAgICBpZiAoeUZhY3RvciA9PSBudWxsKSB7CiAgICAgICAgeUZhY3RvciA9IHhGYWN0b3I7CiAgICAgIH0KICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICBpZiAodHlwZW9mIHlGYWN0b3IgPT09ICJvYmplY3QiKSB7CiAgICAgICAgb3B0aW9ucyA9IHlGYWN0b3I7CiAgICAgICAgeUZhY3RvciA9IHhGYWN0b3I7CiAgICAgIH0KICAgICAgeCA9IHkgPSAwOwogICAgICBpZiAob3B0aW9ucy5vcmlnaW4gIT0gbnVsbCkgewogICAgICAgIHJlZiA9IG9wdGlvbnMub3JpZ2luLCB4ID0gcmVmWzBdLCB5ID0gcmVmWzFdOwogICAgICAgIHggLT0geEZhY3RvciAqIHg7CiAgICAgICAgeSAtPSB5RmFjdG9yICogeTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm0oeEZhY3RvciwgMCwgMCwgeUZhY3RvciwgeCwgeSk7CiAgICB9CiAgfTsKCn0pLmNhbGwodGhpcyk7CgoKLyoqKi8gfSksCi8qIDE2NSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgovLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuNgooZnVuY3Rpb24oKSB7CiAgdmFyIFNWR1BhdGg7CgogIFNWR1BhdGggPSAoZnVuY3Rpb24oKSB7CiAgICB2YXIgYXBwbHksIGFyY1RvU2VnbWVudHMsIGN4LCBjeSwgcGFyYW1ldGVycywgcGFyc2UsIHB4LCBweSwgcnVubmVycywgc2VnbWVudFRvQmV6aWVyLCBzb2x2ZUFyYywgc3gsIHN5OwoKICAgIGZ1bmN0aW9uIFNWR1BhdGgoKSB7fQoKICAgIFNWR1BhdGguYXBwbHkgPSBmdW5jdGlvbihkb2MsIHBhdGgpIHsKICAgICAgdmFyIGNvbW1hbmRzOwogICAgICBjb21tYW5kcyA9IHBhcnNlKHBhdGgpOwogICAgICByZXR1cm4gYXBwbHkoY29tbWFuZHMsIGRvYyk7CiAgICB9OwoKICAgIHBhcmFtZXRlcnMgPSB7CiAgICAgIEE6IDcsCiAgICAgIGE6IDcsCiAgICAgIEM6IDYsCiAgICAgIGM6IDYsCiAgICAgIEg6IDEsCiAgICAgIGg6IDEsCiAgICAgIEw6IDIsCiAgICAgIGw6IDIsCiAgICAgIE06IDIsCiAgICAgIG06IDIsCiAgICAgIFE6IDQsCiAgICAgIHE6IDQsCiAgICAgIFM6IDQsCiAgICAgIHM6IDQsCiAgICAgIFQ6IDIsCiAgICAgIHQ6IDIsCiAgICAgIFY6IDEsCiAgICAgIHY6IDEsCiAgICAgIFo6IDAsCiAgICAgIHo6IDAKICAgIH07CgogICAgcGFyc2UgPSBmdW5jdGlvbihwYXRoKSB7CiAgICAgIHZhciBhcmdzLCBjLCBjbWQsIGN1ckFyZywgZm91bmREZWNpbWFsLCBqLCBsZW4sIHBhcmFtcywgcmV0OwogICAgICByZXQgPSBbXTsKICAgICAgYXJncyA9IFtdOwogICAgICBjdXJBcmcgPSAiIjsKICAgICAgZm91bmREZWNpbWFsID0gZmFsc2U7CiAgICAgIHBhcmFtcyA9IDA7CiAgICAgIGZvciAoaiA9IDAsIGxlbiA9IHBhdGgubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHsKICAgICAgICBjID0gcGF0aFtqXTsKICAgICAgICBpZiAocGFyYW1ldGVyc1tjXSAhPSBudWxsKSB7CiAgICAgICAgICBwYXJhbXMgPSBwYXJhbWV0ZXJzW2NdOwogICAgICAgICAgaWYgKGNtZCkgewogICAgICAgICAgICBpZiAoY3VyQXJnLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICBhcmdzW2FyZ3MubGVuZ3RoXSA9ICtjdXJBcmc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0W3JldC5sZW5ndGhdID0gewogICAgICAgICAgICAgIGNtZDogY21kLAogICAgICAgICAgICAgIGFyZ3M6IGFyZ3MKICAgICAgICAgICAgfTsKICAgICAgICAgICAgYXJncyA9IFtdOwogICAgICAgICAgICBjdXJBcmcgPSAiIjsKICAgICAgICAgICAgZm91bmREZWNpbWFsID0gZmFsc2U7CiAgICAgICAgICB9CiAgICAgICAgICBjbWQgPSBjOwogICAgICAgIH0gZWxzZSBpZiAoKGMgPT09ICIgIiB8fCBjID09PSAiLCIpIHx8IChjID09PSAiLSIgJiYgY3VyQXJnLmxlbmd0aCA+IDAgJiYgY3VyQXJnW2N1ckFyZy5sZW5ndGggLSAxXSAhPT0gJ2UnKSB8fCAoYyA9PT0gIi4iICYmIGZvdW5kRGVjaW1hbCkpIHsKICAgICAgICAgIGlmIChjdXJBcmcubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSBwYXJhbXMpIHsKICAgICAgICAgICAgcmV0W3JldC5sZW5ndGhdID0gewogICAgICAgICAgICAgIGNtZDogY21kLAogICAgICAgICAgICAgIGFyZ3M6IGFyZ3MKICAgICAgICAgICAgfTsKICAgICAgICAgICAgYXJncyA9IFsrY3VyQXJnXTsKICAgICAgICAgICAgaWYgKGNtZCA9PT0gIk0iKSB7CiAgICAgICAgICAgICAgY21kID0gIkwiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChjbWQgPT09ICJtIikgewogICAgICAgICAgICAgIGNtZCA9ICJsIjsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYXJnc1thcmdzLmxlbmd0aF0gPSArY3VyQXJnOwogICAgICAgICAgfQogICAgICAgICAgZm91bmREZWNpbWFsID0gYyA9PT0gIi4iOwogICAgICAgICAgY3VyQXJnID0gYyA9PT0gJy0nIHx8IGMgPT09ICcuJyA/IGMgOiAnJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY3VyQXJnICs9IGM7CiAgICAgICAgICBpZiAoYyA9PT0gJy4nKSB7CiAgICAgICAgICAgIGZvdW5kRGVjaW1hbCA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChjdXJBcmcubGVuZ3RoID4gMCkgewogICAgICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gcGFyYW1zKSB7CiAgICAgICAgICByZXRbcmV0Lmxlbmd0aF0gPSB7CiAgICAgICAgICAgIGNtZDogY21kLAogICAgICAgICAgICBhcmdzOiBhcmdzCiAgICAgICAgICB9OwogICAgICAgICAgYXJncyA9IFsrY3VyQXJnXTsKICAgICAgICAgIGlmIChjbWQgPT09ICJNIikgewogICAgICAgICAgICBjbWQgPSAiTCI7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoY21kID09PSAibSIpIHsKICAgICAgICAgICAgY21kID0gImwiOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBhcmdzW2FyZ3MubGVuZ3RoXSA9ICtjdXJBcmc7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldFtyZXQubGVuZ3RoXSA9IHsKICAgICAgICBjbWQ6IGNtZCwKICAgICAgICBhcmdzOiBhcmdzCiAgICAgIH07CiAgICAgIHJldHVybiByZXQ7CiAgICB9OwoKICAgIGN4ID0gY3kgPSBweCA9IHB5ID0gc3ggPSBzeSA9IDA7CgogICAgYXBwbHkgPSBmdW5jdGlvbihjb21tYW5kcywgZG9jKSB7CiAgICAgIHZhciBjLCBpLCBqLCBsZW4sIG5hbWU7CiAgICAgIGN4ID0gY3kgPSBweCA9IHB5ID0gc3ggPSBzeSA9IDA7CiAgICAgIGZvciAoaSA9IGogPSAwLCBsZW4gPSBjb21tYW5kcy5sZW5ndGg7IGogPCBsZW47IGkgPSArK2opIHsKICAgICAgICBjID0gY29tbWFuZHNbaV07CiAgICAgICAgaWYgKHR5cGVvZiBydW5uZXJzW25hbWUgPSBjLmNtZF0gPT09ICJmdW5jdGlvbiIpIHsKICAgICAgICAgIHJ1bm5lcnNbbmFtZV0oZG9jLCBjLmFyZ3MpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gY3ggPSBjeSA9IHB4ID0gcHkgPSAwOwogICAgfTsKCiAgICBydW5uZXJzID0gewogICAgICBNOiBmdW5jdGlvbihkb2MsIGEpIHsKICAgICAgICBjeCA9IGFbMF07CiAgICAgICAgY3kgPSBhWzFdOwogICAgICAgIHB4ID0gcHkgPSBudWxsOwogICAgICAgIHN4ID0gY3g7CiAgICAgICAgc3kgPSBjeTsKICAgICAgICByZXR1cm4gZG9jLm1vdmVUbyhjeCwgY3kpOwogICAgICB9LAogICAgICBtOiBmdW5jdGlvbihkb2MsIGEpIHsKICAgICAgICBjeCArPSBhWzBdOwogICAgICAgIGN5ICs9IGFbMV07CiAgICAgICAgcHggPSBweSA9IG51bGw7CiAgICAgICAgc3ggPSBjeDsKICAgICAgICBzeSA9IGN5OwogICAgICAgIHJldHVybiBkb2MubW92ZVRvKGN4LCBjeSk7CiAgICAgIH0sCiAgICAgIEM6IGZ1bmN0aW9uKGRvYywgYSkgewogICAgICAgIGN4ID0gYVs0XTsKICAgICAgICBjeSA9IGFbNV07CiAgICAgICAgcHggPSBhWzJdOwogICAgICAgIHB5ID0gYVszXTsKICAgICAgICByZXR1cm4gZG9jLmJlemllckN1cnZlVG8uYXBwbHkoZG9jLCBhKTsKICAgICAgfSwKICAgICAgYzogZnVuY3Rpb24oZG9jLCBhKSB7CiAgICAgICAgZG9jLmJlemllckN1cnZlVG8oYVswXSArIGN4LCBhWzFdICsgY3ksIGFbMl0gKyBjeCwgYVszXSArIGN5LCBhWzRdICsgY3gsIGFbNV0gKyBjeSk7CiAgICAgICAgcHggPSBjeCArIGFbMl07CiAgICAgICAgcHkgPSBjeSArIGFbM107CiAgICAgICAgY3ggKz0gYVs0XTsKICAgICAgICByZXR1cm4gY3kgKz0gYVs1XTsKICAgICAgfSwKICAgICAgUzogZnVuY3Rpb24oZG9jLCBhKSB7CiAgICAgICAgaWYgKHB4ID09PSBudWxsKSB7CiAgICAgICAgICBweCA9IGN4OwogICAgICAgICAgcHkgPSBjeTsKICAgICAgICB9CiAgICAgICAgZG9jLmJlemllckN1cnZlVG8oY3ggLSAocHggLSBjeCksIGN5IC0gKHB5IC0gY3kpLCBhWzBdLCBhWzFdLCBhWzJdLCBhWzNdKTsKICAgICAgICBweCA9IGFbMF07CiAgICAgICAgcHkgPSBhWzFdOwogICAgICAgIGN4ID0gYVsyXTsKICAgICAgICByZXR1cm4gY3kgPSBhWzNdOwogICAgICB9LAogICAgICBzOiBmdW5jdGlvbihkb2MsIGEpIHsKICAgICAgICBpZiAocHggPT09IG51bGwpIHsKICAgICAgICAgIHB4ID0gY3g7CiAgICAgICAgICBweSA9IGN5OwogICAgICAgIH0KICAgICAgICBkb2MuYmV6aWVyQ3VydmVUbyhjeCAtIChweCAtIGN4KSwgY3kgLSAocHkgLSBjeSksIGN4ICsgYVswXSwgY3kgKyBhWzFdLCBjeCArIGFbMl0sIGN5ICsgYVszXSk7CiAgICAgICAgcHggPSBjeCArIGFbMF07CiAgICAgICAgcHkgPSBjeSArIGFbMV07CiAgICAgICAgY3ggKz0gYVsyXTsKICAgICAgICByZXR1cm4gY3kgKz0gYVszXTsKICAgICAgfSwKICAgICAgUTogZnVuY3Rpb24oZG9jLCBhKSB7CiAgICAgICAgcHggPSBhWzBdOwogICAgICAgIHB5ID0gYVsxXTsKICAgICAgICBjeCA9IGFbMl07CiAgICAgICAgY3kgPSBhWzNdOwogICAgICAgIHJldHVybiBkb2MucXVhZHJhdGljQ3VydmVUbyhhWzBdLCBhWzFdLCBjeCwgY3kpOwogICAgICB9LAogICAgICBxOiBmdW5jdGlvbihkb2MsIGEpIHsKICAgICAgICBkb2MucXVhZHJhdGljQ3VydmVUbyhhWzBdICsgY3gsIGFbMV0gKyBjeSwgYVsyXSArIGN4LCBhWzNdICsgY3kpOwogICAgICAgIHB4ID0gY3ggKyBhWzBdOwogICAgICAgIHB5ID0gY3kgKyBhWzFdOwogICAgICAgIGN4ICs9IGFbMl07CiAgICAgICAgcmV0dXJuIGN5ICs9IGFbM107CiAgICAgIH0sCiAgICAgIFQ6IGZ1bmN0aW9uKGRvYywgYSkgewogICAgICAgIGlmIChweCA9PT0gbnVsbCkgewogICAgICAgICAgcHggPSBjeDsKICAgICAgICAgIHB5ID0gY3k7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHB4ID0gY3ggLSAocHggLSBjeCk7CiAgICAgICAgICBweSA9IGN5IC0gKHB5IC0gY3kpOwogICAgICAgIH0KICAgICAgICBkb2MucXVhZHJhdGljQ3VydmVUbyhweCwgcHksIGFbMF0sIGFbMV0pOwogICAgICAgIHB4ID0gY3ggLSAocHggLSBjeCk7CiAgICAgICAgcHkgPSBjeSAtIChweSAtIGN5KTsKICAgICAgICBjeCA9IGFbMF07CiAgICAgICAgcmV0dXJuIGN5ID0gYVsxXTsKICAgICAgfSwKICAgICAgdDogZnVuY3Rpb24oZG9jLCBhKSB7CiAgICAgICAgaWYgKHB4ID09PSBudWxsKSB7CiAgICAgICAgICBweCA9IGN4OwogICAgICAgICAgcHkgPSBjeTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcHggPSBjeCAtIChweCAtIGN4KTsKICAgICAgICAgIHB5ID0gY3kgLSAocHkgLSBjeSk7CiAgICAgICAgfQogICAgICAgIGRvYy5xdWFkcmF0aWNDdXJ2ZVRvKHB4LCBweSwgY3ggKyBhWzBdLCBjeSArIGFbMV0pOwogICAgICAgIGN4ICs9IGFbMF07CiAgICAgICAgcmV0dXJuIGN5ICs9IGFbMV07CiAgICAgIH0sCiAgICAgIEE6IGZ1bmN0aW9uKGRvYywgYSkgewogICAgICAgIHNvbHZlQXJjKGRvYywgY3gsIGN5LCBhKTsKICAgICAgICBjeCA9IGFbNV07CiAgICAgICAgcmV0dXJuIGN5ID0gYVs2XTsKICAgICAgfSwKICAgICAgYTogZnVuY3Rpb24oZG9jLCBhKSB7CiAgICAgICAgYVs1XSArPSBjeDsKICAgICAgICBhWzZdICs9IGN5OwogICAgICAgIHNvbHZlQXJjKGRvYywgY3gsIGN5LCBhKTsKICAgICAgICBjeCA9IGFbNV07CiAgICAgICAgcmV0dXJuIGN5ID0gYVs2XTsKICAgICAgfSwKICAgICAgTDogZnVuY3Rpb24oZG9jLCBhKSB7CiAgICAgICAgY3ggPSBhWzBdOwogICAgICAgIGN5ID0gYVsxXTsKICAgICAgICBweCA9IHB5ID0gbnVsbDsKICAgICAgICByZXR1cm4gZG9jLmxpbmVUbyhjeCwgY3kpOwogICAgICB9LAogICAgICBsOiBmdW5jdGlvbihkb2MsIGEpIHsKICAgICAgICBjeCArPSBhWzBdOwogICAgICAgIGN5ICs9IGFbMV07CiAgICAgICAgcHggPSBweSA9IG51bGw7CiAgICAgICAgcmV0dXJuIGRvYy5saW5lVG8oY3gsIGN5KTsKICAgICAgfSwKICAgICAgSDogZnVuY3Rpb24oZG9jLCBhKSB7CiAgICAgICAgY3ggPSBhWzBdOwogICAgICAgIHB4ID0gcHkgPSBudWxsOwogICAgICAgIHJldHVybiBkb2MubGluZVRvKGN4LCBjeSk7CiAgICAgIH0sCiAgICAgIGg6IGZ1bmN0aW9uKGRvYywgYSkgewogICAgICAgIGN4ICs9IGFbMF07CiAgICAgICAgcHggPSBweSA9IG51bGw7CiAgICAgICAgcmV0dXJuIGRvYy5saW5lVG8oY3gsIGN5KTsKICAgICAgfSwKICAgICAgVjogZnVuY3Rpb24oZG9jLCBhKSB7CiAgICAgICAgY3kgPSBhWzBdOwogICAgICAgIHB4ID0gcHkgPSBudWxsOwogICAgICAgIHJldHVybiBkb2MubGluZVRvKGN4LCBjeSk7CiAgICAgIH0sCiAgICAgIHY6IGZ1bmN0aW9uKGRvYywgYSkgewogICAgICAgIGN5ICs9IGFbMF07CiAgICAgICAgcHggPSBweSA9IG51bGw7CiAgICAgICAgcmV0dXJuIGRvYy5saW5lVG8oY3gsIGN5KTsKICAgICAgfSwKICAgICAgWjogZnVuY3Rpb24oZG9jKSB7CiAgICAgICAgZG9jLmNsb3NlUGF0aCgpOwogICAgICAgIGN4ID0gc3g7CiAgICAgICAgcmV0dXJuIGN5ID0gc3k7CiAgICAgIH0sCiAgICAgIHo6IGZ1bmN0aW9uKGRvYykgewogICAgICAgIGRvYy5jbG9zZVBhdGgoKTsKICAgICAgICBjeCA9IHN4OwogICAgICAgIHJldHVybiBjeSA9IHN5OwogICAgICB9CiAgICB9OwoKICAgIHNvbHZlQXJjID0gZnVuY3Rpb24oZG9jLCB4LCB5LCBjb29yZHMpIHsKICAgICAgdmFyIGJleiwgZXgsIGV5LCBqLCBsYXJnZSwgbGVuLCByZXN1bHRzLCByb3QsIHJ4LCByeSwgc2VnLCBzZWdzLCBzd2VlcDsKICAgICAgcnggPSBjb29yZHNbMF0sIHJ5ID0gY29vcmRzWzFdLCByb3QgPSBjb29yZHNbMl0sIGxhcmdlID0gY29vcmRzWzNdLCBzd2VlcCA9IGNvb3Jkc1s0XSwgZXggPSBjb29yZHNbNV0sIGV5ID0gY29vcmRzWzZdOwogICAgICBzZWdzID0gYXJjVG9TZWdtZW50cyhleCwgZXksIHJ4LCByeSwgbGFyZ2UsIHN3ZWVwLCByb3QsIHgsIHkpOwogICAgICByZXN1bHRzID0gW107CiAgICAgIGZvciAoaiA9IDAsIGxlbiA9IHNlZ3MubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHsKICAgICAgICBzZWcgPSBzZWdzW2pdOwogICAgICAgIGJleiA9IHNlZ21lbnRUb0Jlemllci5hcHBseShudWxsLCBzZWcpOwogICAgICAgIHJlc3VsdHMucHVzaChkb2MuYmV6aWVyQ3VydmVUby5hcHBseShkb2MsIGJleikpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfTsKCiAgICBhcmNUb1NlZ21lbnRzID0gZnVuY3Rpb24oeCwgeSwgcngsIHJ5LCBsYXJnZSwgc3dlZXAsIHJvdGF0ZVgsIG94LCBveSkgewogICAgICB2YXIgYTAwLCBhMDEsIGExMCwgYTExLCBjb3NfdGgsIGQsIGksIGosIHBsLCByZWYsIHJlc3VsdCwgc2VnbWVudHMsIHNmYWN0b3IsIHNmYWN0b3Jfc3EsIHNpbl90aCwgdGgsIHRoMCwgdGgxLCB0aDIsIHRoMywgdGhfYXJjLCB4MCwgeDEsIHhjLCB5MCwgeTEsIHljOwogICAgICB0aCA9IHJvdGF0ZVggKiAoTWF0aC5QSSAvIDE4MCk7CiAgICAgIHNpbl90aCA9IE1hdGguc2luKHRoKTsKICAgICAgY29zX3RoID0gTWF0aC5jb3ModGgpOwogICAgICByeCA9IE1hdGguYWJzKHJ4KTsKICAgICAgcnkgPSBNYXRoLmFicyhyeSk7CiAgICAgIHB4ID0gY29zX3RoICogKG94IC0geCkgKiAwLjUgKyBzaW5fdGggKiAob3kgLSB5KSAqIDAuNTsKICAgICAgcHkgPSBjb3NfdGggKiAob3kgLSB5KSAqIDAuNSAtIHNpbl90aCAqIChveCAtIHgpICogMC41OwogICAgICBwbCA9IChweCAqIHB4KSAvIChyeCAqIHJ4KSArIChweSAqIHB5KSAvIChyeSAqIHJ5KTsKICAgICAgaWYgKHBsID4gMSkgewogICAgICAgIHBsID0gTWF0aC5zcXJ0KHBsKTsKICAgICAgICByeCAqPSBwbDsKICAgICAgICByeSAqPSBwbDsKICAgICAgfQogICAgICBhMDAgPSBjb3NfdGggLyByeDsKICAgICAgYTAxID0gc2luX3RoIC8gcng7CiAgICAgIGExMCA9ICgtc2luX3RoKSAvIHJ5OwogICAgICBhMTEgPSBjb3NfdGggLyByeTsKICAgICAgeDAgPSBhMDAgKiBveCArIGEwMSAqIG95OwogICAgICB5MCA9IGExMCAqIG94ICsgYTExICogb3k7CiAgICAgIHgxID0gYTAwICogeCArIGEwMSAqIHk7CiAgICAgIHkxID0gYTEwICogeCArIGExMSAqIHk7CiAgICAgIGQgPSAoeDEgLSB4MCkgKiAoeDEgLSB4MCkgKyAoeTEgLSB5MCkgKiAoeTEgLSB5MCk7CiAgICAgIHNmYWN0b3Jfc3EgPSAxIC8gZCAtIDAuMjU7CiAgICAgIGlmIChzZmFjdG9yX3NxIDwgMCkgewogICAgICAgIHNmYWN0b3Jfc3EgPSAwOwogICAgICB9CiAgICAgIHNmYWN0b3IgPSBNYXRoLnNxcnQoc2ZhY3Rvcl9zcSk7CiAgICAgIGlmIChzd2VlcCA9PT0gbGFyZ2UpIHsKICAgICAgICBzZmFjdG9yID0gLXNmYWN0b3I7CiAgICAgIH0KICAgICAgeGMgPSAwLjUgKiAoeDAgKyB4MSkgLSBzZmFjdG9yICogKHkxIC0geTApOwogICAgICB5YyA9IDAuNSAqICh5MCArIHkxKSArIHNmYWN0b3IgKiAoeDEgLSB4MCk7CiAgICAgIHRoMCA9IE1hdGguYXRhbjIoeTAgLSB5YywgeDAgLSB4Yyk7CiAgICAgIHRoMSA9IE1hdGguYXRhbjIoeTEgLSB5YywgeDEgLSB4Yyk7CiAgICAgIHRoX2FyYyA9IHRoMSAtIHRoMDsKICAgICAgaWYgKHRoX2FyYyA8IDAgJiYgc3dlZXAgPT09IDEpIHsKICAgICAgICB0aF9hcmMgKz0gMiAqIE1hdGguUEk7CiAgICAgIH0gZWxzZSBpZiAodGhfYXJjID4gMCAmJiBzd2VlcCA9PT0gMCkgewogICAgICAgIHRoX2FyYyAtPSAyICogTWF0aC5QSTsKICAgICAgfQogICAgICBzZWdtZW50cyA9IE1hdGguY2VpbChNYXRoLmFicyh0aF9hcmMgLyAoTWF0aC5QSSAqIDAuNSArIDAuMDAxKSkpOwogICAgICByZXN1bHQgPSBbXTsKICAgICAgZm9yIChpID0gaiA9IDAsIHJlZiA9IHNlZ21lbnRzOyAwIDw9IHJlZiA/IGogPCByZWYgOiBqID4gcmVmOyBpID0gMCA8PSByZWYgPyArK2ogOiAtLWopIHsKICAgICAgICB0aDIgPSB0aDAgKyBpICogdGhfYXJjIC8gc2VnbWVudHM7CiAgICAgICAgdGgzID0gdGgwICsgKGkgKyAxKSAqIHRoX2FyYyAvIHNlZ21lbnRzOwogICAgICAgIHJlc3VsdFtpXSA9IFt4YywgeWMsIHRoMiwgdGgzLCByeCwgcnksIHNpbl90aCwgY29zX3RoXTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0OwogICAgfTsKCiAgICBzZWdtZW50VG9CZXppZXIgPSBmdW5jdGlvbihjeCwgY3ksIHRoMCwgdGgxLCByeCwgcnksIHNpbl90aCwgY29zX3RoKSB7CiAgICAgIHZhciBhMDAsIGEwMSwgYTEwLCBhMTEsIHQsIHRoX2hhbGYsIHgxLCB4MiwgeDMsIHkxLCB5MiwgeTM7CiAgICAgIGEwMCA9IGNvc190aCAqIHJ4OwogICAgICBhMDEgPSAtc2luX3RoICogcnk7CiAgICAgIGExMCA9IHNpbl90aCAqIHJ4OwogICAgICBhMTEgPSBjb3NfdGggKiByeTsKICAgICAgdGhfaGFsZiA9IDAuNSAqICh0aDEgLSB0aDApOwogICAgICB0ID0gKDggLyAzKSAqIE1hdGguc2luKHRoX2hhbGYgKiAwLjUpICogTWF0aC5zaW4odGhfaGFsZiAqIDAuNSkgLyBNYXRoLnNpbih0aF9oYWxmKTsKICAgICAgeDEgPSBjeCArIE1hdGguY29zKHRoMCkgLSB0ICogTWF0aC5zaW4odGgwKTsKICAgICAgeTEgPSBjeSArIE1hdGguc2luKHRoMCkgKyB0ICogTWF0aC5jb3ModGgwKTsKICAgICAgeDMgPSBjeCArIE1hdGguY29zKHRoMSk7CiAgICAgIHkzID0gY3kgKyBNYXRoLnNpbih0aDEpOwogICAgICB4MiA9IHgzICsgdCAqIE1hdGguc2luKHRoMSk7CiAgICAgIHkyID0geTMgLSB0ICogTWF0aC5jb3ModGgxKTsKICAgICAgcmV0dXJuIFthMDAgKiB4MSArIGEwMSAqIHkxLCBhMTAgKiB4MSArIGExMSAqIHkxLCBhMDAgKiB4MiArIGEwMSAqIHkyLCBhMTAgKiB4MiArIGExMSAqIHkyLCBhMDAgKiB4MyArIGEwMSAqIHkzLCBhMTAgKiB4MyArIGExMSAqIHkzXTsKICAgIH07CgogICAgcmV0dXJuIFNWR1BhdGg7CgogIH0pKCk7CgogIG1vZHVsZS5leHBvcnRzID0gU1ZHUGF0aDsKCn0pLmNhbGwodGhpcyk7CgoKLyoqKi8gfSksCi8qIDE2NiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuNgooZnVuY3Rpb24oKSB7CiAgdmFyIFBERkZvbnQ7CgogIFBERkZvbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUwKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSB7CiAgICBpbml0Rm9udHM6IGZ1bmN0aW9uKCkgewogICAgICB0aGlzLl9mb250RmFtaWxpZXMgPSB7fTsKICAgICAgdGhpcy5fZm9udENvdW50ID0gMDsKICAgICAgdGhpcy5fZm9udFNpemUgPSAxMjsKICAgICAgdGhpcy5fZm9udCA9IG51bGw7CiAgICAgIHRoaXMuX3JlZ2lzdGVyZWRGb250cyA9IHt9OwogICAgICAKICAgIH0sCiAgICBmb250OiBmdW5jdGlvbihzcmMsIGZhbWlseSwgc2l6ZSkgewogICAgICB2YXIgY2FjaGVLZXksIGZvbnQsIGlkLCByZWY7CiAgICAgIGlmICh0eXBlb2YgZmFtaWx5ID09PSAnbnVtYmVyJykgewogICAgICAgIHNpemUgPSBmYW1pbHk7CiAgICAgICAgZmFtaWx5ID0gbnVsbDsKICAgICAgfQogICAgICBpZiAodHlwZW9mIHNyYyA9PT0gJ3N0cmluZycgJiYgdGhpcy5fcmVnaXN0ZXJlZEZvbnRzW3NyY10pIHsKICAgICAgICBjYWNoZUtleSA9IHNyYzsKICAgICAgICByZWYgPSB0aGlzLl9yZWdpc3RlcmVkRm9udHNbc3JjXSwgc3JjID0gcmVmLnNyYywgZmFtaWx5ID0gcmVmLmZhbWlseTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjYWNoZUtleSA9IGZhbWlseSB8fCBzcmM7CiAgICAgICAgaWYgKHR5cGVvZiBjYWNoZUtleSAhPT0gJ3N0cmluZycpIHsKICAgICAgICAgIGNhY2hlS2V5ID0gbnVsbDsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKHNpemUgIT0gbnVsbCkgewogICAgICAgIHRoaXMuZm9udFNpemUoc2l6ZSk7CiAgICAgIH0KICAgICAgaWYgKGZvbnQgPSB0aGlzLl9mb250RmFtaWxpZXNbY2FjaGVLZXldKSB7CiAgICAgICAgdGhpcy5fZm9udCA9IGZvbnQ7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgIH0KICAgICAgaWQgPSAnRicgKyAoKyt0aGlzLl9mb250Q291bnQpOwogICAgICB0aGlzLl9mb250ID0gUERGRm9udC5vcGVuKHRoaXMsIHNyYywgZmFtaWx5LCBpZCk7CiAgICAgIGlmIChmb250ID0gdGhpcy5fZm9udEZhbWlsaWVzW3RoaXMuX2ZvbnQubmFtZV0pIHsKICAgICAgICB0aGlzLl9mb250ID0gZm9udDsKICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICBpZiAoY2FjaGVLZXkpIHsKICAgICAgICB0aGlzLl9mb250RmFtaWxpZXNbY2FjaGVLZXldID0gdGhpcy5fZm9udDsKICAgICAgfQogICAgICBpZiAodGhpcy5fZm9udC5uYW1lKSB7CiAgICAgICAgdGhpcy5fZm9udEZhbWlsaWVzW3RoaXMuX2ZvbnQubmFtZV0gPSB0aGlzLl9mb250OwogICAgICB9CiAgICAgIHJldHVybiB0aGlzOwogICAgfSwKICAgIGZvbnRTaXplOiBmdW5jdGlvbihfZm9udFNpemUpIHsKICAgICAgdGhpcy5fZm9udFNpemUgPSBfZm9udFNpemU7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSwKICAgIGN1cnJlbnRMaW5lSGVpZ2h0OiBmdW5jdGlvbihpbmNsdWRlR2FwKSB7CiAgICAgIGlmIChpbmNsdWRlR2FwID09IG51bGwpIHsKICAgICAgICBpbmNsdWRlR2FwID0gZmFsc2U7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuX2ZvbnQubGluZUhlaWdodCh0aGlzLl9mb250U2l6ZSwgaW5jbHVkZUdhcCk7CiAgICB9LAogICAgcmVnaXN0ZXJGb250OiBmdW5jdGlvbihuYW1lLCBzcmMsIGZhbWlseSkgewogICAgICB0aGlzLl9yZWdpc3RlcmVkRm9udHNbbmFtZV0gPSB7CiAgICAgICAgc3JjOiBzcmMsCiAgICAgICAgZmFtaWx5OiBmYW1pbHkKICAgICAgfTsKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CiAgfTsKCn0pLmNhbGwodGhpcyk7CgoKLyoqKi8gfSksCi8qIDE2NyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Ci8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihCdWZmZXIsIHByb2Nlc3MpIHsKCmZ1bmN0aW9uIF9pbnRlcm9wRGVmYXVsdCAoZXgpIHsgcmV0dXJuIChleCAmJiAodHlwZW9mIGV4ID09PSAnb2JqZWN0JykgJiYgJ2RlZmF1bHQnIGluIGV4KSA/IGV4WydkZWZhdWx0J10gOiBleDsgfQoKdmFyIHIgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygxNjgpKTsKdmFyIF9PYmplY3QkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gX2ludGVyb3BEZWZhdWx0KF9fd2VicGFja19yZXF1aXJlX18oMTk3KSk7CnZhciBfZ2V0SXRlcmF0b3IgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXyg2MCkpOwp2YXIgX09iamVjdCRmcmVlemUgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygyMDkpKTsKdmFyIF9PYmplY3Qka2V5cyA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDIxMikpOwp2YXIgX3R5cGVvZiA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDY5KSk7CnZhciBfT2JqZWN0JGRlZmluZVByb3BlcnR5ID0gX2ludGVyb3BEZWZhdWx0KF9fd2VicGFja19yZXF1aXJlX18oNzQpKTsKdmFyIF9jbGFzc0NhbGxDaGVjayA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNikpOwp2YXIgX2NyZWF0ZUNsYXNzID0gX2ludGVyb3BEZWZhdWx0KF9fd2VicGFja19yZXF1aXJlX18oMTA3KSk7CnZhciBfTWFwID0gX2ludGVyb3BEZWZhdWx0KF9fd2VicGFja19yZXF1aXJlX18oMjI1KSk7CnZhciBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDIzNikpOwp2YXIgX2luaGVyaXRzID0gX2ludGVyb3BEZWZhdWx0KF9fd2VicGFja19yZXF1aXJlX18oMjM3KSk7CnZhciByZXN0cnVjdHVyZV9zcmNfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTsKdmFyIF9PYmplY3QkZGVmaW5lUHJvcGVydGllcyA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDI0NSkpOwp2YXIgaXNFcXVhbCA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDI0OCkpOwp2YXIgX09iamVjdCRhc3NpZ24gPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygyNTEpKTsKdmFyIF9TdHJpbmckZnJvbUNvZGVQb2ludCA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDI1NSkpOwp2YXIgX0FycmF5JGZyb20gPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygyNTgpKTsKdmFyIF9TZXQgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygyNjMpKTsKdmFyIHVuaWNvZGUgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygyNjkpKTsKdmFyIFVuaWNvZGVUcmllID0gX2ludGVyb3BEZWZhdWx0KF9fd2VicGFja19yZXF1aXJlX18oNDMpKTsKdmFyIFN0YXRlTWFjaGluZSA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDI3MSkpOwp2YXIgX051bWJlciRFUFNJTE9OID0gX2ludGVyb3BEZWZhdWx0KF9fd2VicGFja19yZXF1aXJlX18oMjgwKSk7CnZhciBjbG9uZURlZXAgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygyODMpKTsKdmFyIGluZmxhdGUgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXyg3OSkpOwp2YXIgYnJvdGxpID0gX2ludGVyb3BEZWZhdWx0KF9fd2VicGFja19yZXF1aXJlX18oMjg0KSk7CgoKCnZhciBmb250a2l0ID0ge307CmZvbnRraXQubG9nRXJyb3JzID0gZmFsc2U7Cgp2YXIgZm9ybWF0cyA9IFtdOwpmb250a2l0LnJlZ2lzdGVyRm9ybWF0ID0gZnVuY3Rpb24gKGZvcm1hdCkgewogIGZvcm1hdHMucHVzaChmb3JtYXQpOwp9OwoKZm9udGtpdC5vcGVuU3luYyA9IGZ1bmN0aW9uIChmaWxlbmFtZSwgcG9zdHNjcmlwdE5hbWUpIHsKICB2YXIgYnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KS5yZWFkRmlsZVN5bmMoZmlsZW5hbWUpOwogIHJldHVybiBmb250a2l0LmNyZWF0ZShidWZmZXIsIHBvc3RzY3JpcHROYW1lKTsKfTsKCmZvbnRraXQub3BlbiA9IGZ1bmN0aW9uIChmaWxlbmFtZSwgcG9zdHNjcmlwdE5hbWUsIGNhbGxiYWNrKSB7CiAgaWYgKHR5cGVvZiBwb3N0c2NyaXB0TmFtZSA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2FsbGJhY2sgPSBwb3N0c2NyaXB0TmFtZTsKICAgIHBvc3RzY3JpcHROYW1lID0gbnVsbDsKICB9CgogIF9fd2VicGFja19yZXF1aXJlX18oOCkucmVhZEZpbGUoZmlsZW5hbWUsIGZ1bmN0aW9uIChlcnIsIGJ1ZmZlcikgewogICAgaWYgKGVycikgewogICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTsKICAgIH0KCiAgICB0cnkgewogICAgICB2YXIgZm9udCA9IGZvbnRraXQuY3JlYXRlKGJ1ZmZlciwgcG9zdHNjcmlwdE5hbWUpOwogICAgfSBjYXRjaCAoZSkgewogICAgICByZXR1cm4gY2FsbGJhY2soZSk7CiAgICB9CgogICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIGZvbnQpOwogIH0pOwoKICByZXR1cm47Cn07Cgpmb250a2l0LmNyZWF0ZSA9IGZ1bmN0aW9uIChidWZmZXIsIHBvc3RzY3JpcHROYW1lKSB7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCBmb3JtYXRzLmxlbmd0aDsgaSsrKSB7CiAgICB2YXIgZm9ybWF0ID0gZm9ybWF0c1tpXTsKICAgIGlmIChmb3JtYXQucHJvYmUoYnVmZmVyKSkgewogICAgICB2YXIgZm9udCA9IG5ldyBmb3JtYXQobmV3IHIuRGVjb2RlU3RyZWFtKGJ1ZmZlcikpOwogICAgICBpZiAocG9zdHNjcmlwdE5hbWUpIHsKICAgICAgICByZXR1cm4gZm9udC5nZXRGb250KHBvc3RzY3JpcHROYW1lKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGZvbnQ7CiAgICB9CiAgfQoKICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZm9udCBmb3JtYXQnKTsKfTsKCi8qKgogKiBUaGlzIGRlY29yYXRvciBjYWNoZXMgdGhlIHJlc3VsdHMgb2YgYSBnZXR0ZXIgb3IgbWV0aG9kIHN1Y2ggdGhhdAogKiB0aGUgcmVzdWx0cyBhcmUgbGF6aWx5IGNvbXB1dGVkIG9uY2UsIGFuZCB0aGVuIGNhY2hlZC4KICogQHByaXZhdGUKICovCmZ1bmN0aW9uIGNhY2hlKHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKSB7CiAgaWYgKGRlc2NyaXB0b3IuZ2V0KSB7CiAgICB2YXIgZ2V0ID0gZGVzY3JpcHRvci5nZXQ7CiAgICBkZXNjcmlwdG9yLmdldCA9IGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIHZhbHVlID0gZ2V0LmNhbGwodGhpcyk7CiAgICAgIF9PYmplY3QkZGVmaW5lUHJvcGVydHkodGhpcywga2V5LCB7IHZhbHVlOiB2YWx1ZSB9KTsKICAgICAgcmV0dXJuIHZhbHVlOwogICAgfTsKICB9IGVsc2UgaWYgKHR5cGVvZiBkZXNjcmlwdG9yLnZhbHVlID09PSAnZnVuY3Rpb24nKSB7CiAgICB2YXIgZm4gPSBkZXNjcmlwdG9yLnZhbHVlOwoKICAgIHJldHVybiB7CiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgIHZhciBjYWNoZSA9IG5ldyBfTWFwKCk7CiAgICAgICAgZnVuY3Rpb24gbWVtb2l6ZWQoKSB7CiAgICAgICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykgewogICAgICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBrZXkgPSBhcmdzLmxlbmd0aCA+IDAgPyBhcmdzWzBdIDogJ3ZhbHVlJzsKICAgICAgICAgIGlmIChjYWNoZS5oYXMoa2V5KSkgewogICAgICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIHJlc3VsdCA9IGZuLmFwcGx5KHRoaXMsIGFyZ3MpOwogICAgICAgICAgY2FjaGUuc2V0KGtleSwgcmVzdWx0KTsKICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgfTsKCiAgICAgICAgX09iamVjdCRkZWZpbmVQcm9wZXJ0eSh0aGlzLCBrZXksIHsgdmFsdWU6IG1lbW9pemVkIH0pOwogICAgICAgIHJldHVybiBtZW1vaXplZDsKICAgICAgfQogICAgfTsKICB9Cn0KCnZhciBTdWJIZWFkZXIgPSBuZXcgci5TdHJ1Y3QoewogIGZpcnN0Q29kZTogci51aW50MTYsCiAgZW50cnlDb3VudDogci51aW50MTYsCiAgaWREZWx0YTogci5pbnQxNiwKICBpZFJhbmdlT2Zmc2V0OiByLnVpbnQxNgp9KTsKCnZhciBDbWFwR3JvdXAgPSBuZXcgci5TdHJ1Y3QoewogIHN0YXJ0Q2hhckNvZGU6IHIudWludDMyLAogIGVuZENoYXJDb2RlOiByLnVpbnQzMiwKICBnbHlwaElEOiByLnVpbnQzMgp9KTsKCnZhciBVbmljb2RlVmFsdWVSYW5nZSA9IG5ldyByLlN0cnVjdCh7CiAgc3RhcnRVbmljb2RlVmFsdWU6IHIudWludDI0LAogIGFkZGl0aW9uYWxDb3VudDogci51aW50OAp9KTsKCnZhciBVVlNNYXBwaW5nID0gbmV3IHIuU3RydWN0KHsKICB1bmljb2RlVmFsdWU6IHIudWludDI0LAogIGdseXBoSUQ6IHIudWludDE2Cn0pOwoKdmFyIERlZmF1bHRVVlMgPSBuZXcgci5BcnJheShVbmljb2RlVmFsdWVSYW5nZSwgci51aW50MzIpOwp2YXIgTm9uRGVmYXVsdFVWUyA9IG5ldyByLkFycmF5KFVWU01hcHBpbmcsIHIudWludDMyKTsKCnZhciBWYXJTZWxlY3RvclJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgdmFyU2VsZWN0b3I6IHIudWludDI0LAogIGRlZmF1bHRVVlM6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIERlZmF1bHRVVlMsIHsgdHlwZTogJ3BhcmVudCcgfSksCiAgbm9uRGVmYXVsdFVWUzogbmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgTm9uRGVmYXVsdFVWUywgeyB0eXBlOiAncGFyZW50JyB9KQp9KTsKCnZhciBDbWFwU3VidGFibGUgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3Qoci51aW50MTYsIHsKICAwOiB7IC8vIEJ5dGUgZW5jb2RpbmcKICAgIGxlbmd0aDogci51aW50MTYsIC8vIFRvdGFsIHRhYmxlIGxlbmd0aCBpbiBieXRlcyAoc2V0IHRvIDI2MiBmb3IgZm9ybWF0IDApCiAgICBsYW5ndWFnZTogci51aW50MTYsIC8vIExhbmd1YWdlIGNvZGUgZm9yIHRoaXMgZW5jb2Rpbmcgc3VidGFibGUsIG9yIHplcm8gaWYgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQKICAgIGNvZGVNYXA6IG5ldyByLkxhenlBcnJheShyLnVpbnQ4LCAyNTYpCiAgfSwKCiAgMjogeyAvLyBIaWdoLWJ5dGUgbWFwcGluZyAoQ0pLKQogICAgbGVuZ3RoOiByLnVpbnQxNiwKICAgIGxhbmd1YWdlOiByLnVpbnQxNiwKICAgIHN1YkhlYWRlcktleXM6IG5ldyByLkFycmF5KHIudWludDE2LCAyNTYpLAogICAgc3ViSGVhZGVyQ291bnQ6IGZ1bmN0aW9uIHN1YkhlYWRlckNvdW50KHQpIHsKICAgICAgcmV0dXJuIE1hdGgubWF4LmFwcGx5KE1hdGgsIHQuc3ViSGVhZGVyS2V5cyk7CiAgICB9LAogICAgc3ViSGVhZGVyczogbmV3IHIuTGF6eUFycmF5KFN1YkhlYWRlciwgJ3N1YkhlYWRlckNvdW50JyksCiAgICBnbHlwaEluZGV4QXJyYXk6IG5ldyByLkxhenlBcnJheShyLnVpbnQxNiwgJ3N1YkhlYWRlckNvdW50JykKICB9LAoKICA0OiB7IC8vIFNlZ21lbnQgbWFwcGluZyB0byBkZWx0YSB2YWx1ZXMKICAgIGxlbmd0aDogci51aW50MTYsIC8vIFRvdGFsIHRhYmxlIGxlbmd0aCBpbiBieXRlcwogICAgbGFuZ3VhZ2U6IHIudWludDE2LCAvLyBMYW5ndWFnZSBjb2RlCiAgICBzZWdDb3VudFgyOiByLnVpbnQxNiwKICAgIHNlZ0NvdW50OiBmdW5jdGlvbiBzZWdDb3VudCh0KSB7CiAgICAgIHJldHVybiB0LnNlZ0NvdW50WDIgPj4gMTsKICAgIH0sCiAgICBzZWFyY2hSYW5nZTogci51aW50MTYsCiAgICBlbnRyeVNlbGVjdG9yOiByLnVpbnQxNiwKICAgIHJhbmdlU2hpZnQ6IHIudWludDE2LAogICAgZW5kQ29kZTogbmV3IHIuTGF6eUFycmF5KHIudWludDE2LCAnc2VnQ291bnQnKSwKICAgIHJlc2VydmVkUGFkOiBuZXcgci5SZXNlcnZlZChyLnVpbnQxNiksIC8vIFRoaXMgdmFsdWUgc2hvdWxkIGJlIHplcm8KICAgIHN0YXJ0Q29kZTogbmV3IHIuTGF6eUFycmF5KHIudWludDE2LCAnc2VnQ291bnQnKSwKICAgIGlkRGVsdGE6IG5ldyByLkxhenlBcnJheShyLmludDE2LCAnc2VnQ291bnQnKSwKICAgIGlkUmFuZ2VPZmZzZXQ6IG5ldyByLkxhenlBcnJheShyLnVpbnQxNiwgJ3NlZ0NvdW50JyksCiAgICBnbHlwaEluZGV4QXJyYXk6IG5ldyByLkxhenlBcnJheShyLnVpbnQxNiwgZnVuY3Rpb24gKHQpIHsKICAgICAgcmV0dXJuICh0Lmxlbmd0aCAtIHQuX2N1cnJlbnRPZmZzZXQpIC8gMjsKICAgIH0pCiAgfSwKCiAgNjogeyAvLyBUcmltbWVkIHRhYmxlCiAgICBsZW5ndGg6IHIudWludDE2LAogICAgbGFuZ3VhZ2U6IHIudWludDE2LAogICAgZmlyc3RDb2RlOiByLnVpbnQxNiwKICAgIGVudHJ5Q291bnQ6IHIudWludDE2LAogICAgZ2x5cGhJbmRpY2VzOiBuZXcgci5MYXp5QXJyYXkoci51aW50MTYsICdlbnRyeUNvdW50JykKICB9LAoKICA4OiB7IC8vIG1peGVkIDE2LWJpdCBhbmQgMzItYml0IGNvdmVyYWdlCiAgICByZXNlcnZlZDogbmV3IHIuUmVzZXJ2ZWQoci51aW50MTYpLAogICAgbGVuZ3RoOiByLnVpbnQzMiwKICAgIGxhbmd1YWdlOiByLnVpbnQxNiwKICAgIGlzMzI6IG5ldyByLkxhenlBcnJheShyLnVpbnQ4LCA4MTkyKSwKICAgIG5Hcm91cHM6IHIudWludDMyLAogICAgZ3JvdXBzOiBuZXcgci5MYXp5QXJyYXkoQ21hcEdyb3VwLCAnbkdyb3VwcycpCiAgfSwKCiAgMTA6IHsgLy8gVHJpbW1lZCBBcnJheQogICAgcmVzZXJ2ZWQ6IG5ldyByLlJlc2VydmVkKHIudWludDE2KSwKICAgIGxlbmd0aDogci51aW50MzIsCiAgICBsYW5ndWFnZTogci51aW50MzIsCiAgICBmaXJzdENvZGU6IHIudWludDMyLAogICAgZW50cnlDb3VudDogci51aW50MzIsCiAgICBnbHlwaEluZGljZXM6IG5ldyByLkxhenlBcnJheShyLnVpbnQxNiwgJ251bUNoYXJzJykKICB9LAoKICAxMjogeyAvLyBTZWdtZW50ZWQgY292ZXJhZ2UKICAgIHJlc2VydmVkOiBuZXcgci5SZXNlcnZlZChyLnVpbnQxNiksCiAgICBsZW5ndGg6IHIudWludDMyLAogICAgbGFuZ3VhZ2U6IHIudWludDMyLAogICAgbkdyb3Vwczogci51aW50MzIsCiAgICBncm91cHM6IG5ldyByLkxhenlBcnJheShDbWFwR3JvdXAsICduR3JvdXBzJykKICB9LAoKICAxMzogeyAvLyBNYW55LXRvLW9uZSByYW5nZSBtYXBwaW5ncyAoc2FtZSBhcyAxMiBleGNlcHQgZm9yIGdyb3VwLnN0YXJ0R2x5cGhJRCkKICAgIHJlc2VydmVkOiBuZXcgci5SZXNlcnZlZChyLnVpbnQxNiksCiAgICBsZW5ndGg6IHIudWludDMyLAogICAgbGFuZ3VhZ2U6IHIudWludDMyLAogICAgbkdyb3Vwczogci51aW50MzIsCiAgICBncm91cHM6IG5ldyByLkxhenlBcnJheShDbWFwR3JvdXAsICduR3JvdXBzJykKICB9LAoKICAxNDogeyAvLyBVbmljb2RlIFZhcmlhdGlvbiBTZXF1ZW5jZXMKICAgIGxlbmd0aDogci51aW50MzIsCiAgICBudW1SZWNvcmRzOiByLnVpbnQzMiwKICAgIHZhclNlbGVjdG9yczogbmV3IHIuTGF6eUFycmF5KFZhclNlbGVjdG9yUmVjb3JkLCAnbnVtUmVjb3JkcycpCiAgfQp9KTsKCnZhciBDbWFwRW50cnkgPSBuZXcgci5TdHJ1Y3QoewogIHBsYXRmb3JtSUQ6IHIudWludDE2LCAvLyBQbGF0Zm9ybSBpZGVudGlmaWVyCiAgZW5jb2RpbmdJRDogci51aW50MTYsIC8vIFBsYXRmb3JtLXNwZWNpZmljIGVuY29kaW5nIGlkZW50aWZpZXIKICB0YWJsZTogbmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgQ21hcFN1YnRhYmxlLCB7IHR5cGU6ICdwYXJlbnQnLCBsYXp5OiB0cnVlIH0pCn0pOwoKLy8gY2hhcmFjdGVyIHRvIGdseXBoIG1hcHBpbmcKdmFyIGNtYXAgPSBuZXcgci5TdHJ1Y3QoewogIHZlcnNpb246IHIudWludDE2LAogIG51bVN1YnRhYmxlczogci51aW50MTYsCiAgdGFibGVzOiBuZXcgci5BcnJheShDbWFwRW50cnksICdudW1TdWJ0YWJsZXMnKQp9KTsKCi8vIGZvbnQgaGVhZGVyCnZhciBoZWFkID0gbmV3IHIuU3RydWN0KHsKICB2ZXJzaW9uOiByLmludDMyLCAvLyAweDAwMDEwMDAwICh2ZXJzaW9uIDEuMCkKICByZXZpc2lvbjogci5pbnQzMiwgLy8gc2V0IGJ5IGZvbnQgbWFudWZhY3R1cmVyCiAgY2hlY2tTdW1BZGp1c3RtZW50OiByLnVpbnQzMiwKICBtYWdpY051bWJlcjogci51aW50MzIsIC8vIHNldCB0byAweDVGMEYzQ0Y1CiAgZmxhZ3M6IHIudWludDE2LAogIHVuaXRzUGVyRW06IHIudWludDE2LCAvLyByYW5nZSBmcm9tIDY0IHRvIDE2Mzg0CiAgY3JlYXRlZDogbmV3IHIuQXJyYXkoci5pbnQzMiwgMiksCiAgbW9kaWZpZWQ6IG5ldyByLkFycmF5KHIuaW50MzIsIDIpLAogIHhNaW46IHIuaW50MTYsIC8vIGZvciBhbGwgZ2x5cGggYm91bmRpbmcgYm94ZXMKICB5TWluOiByLmludDE2LCAvLyBmb3IgYWxsIGdseXBoIGJvdW5kaW5nIGJveGVzCiAgeE1heDogci5pbnQxNiwgLy8gZm9yIGFsbCBnbHlwaCBib3VuZGluZyBib3hlcwogIHlNYXg6IHIuaW50MTYsIC8vIGZvciBhbGwgZ2x5cGggYm91bmRpbmcgYm94ZXMKICBtYWNTdHlsZTogbmV3IHIuQml0ZmllbGQoci51aW50MTYsIFsnYm9sZCcsICdpdGFsaWMnLCAndW5kZXJsaW5lJywgJ291dGxpbmUnLCAnc2hhZG93JywgJ2NvbmRlbnNlZCcsICdleHRlbmRlZCddKSwKICBsb3dlc3RSZWNQUEVNOiByLnVpbnQxNiwgLy8gc21hbGxlc3QgcmVhZGFibGUgc2l6ZSBpbiBwaXhlbHMKICBmb250RGlyZWN0aW9uSGludDogci5pbnQxNiwKICBpbmRleFRvTG9jRm9ybWF0OiByLmludDE2LCAvLyAwIGZvciBzaG9ydCBvZmZzZXRzLCAxIGZvciBsb25nCiAgZ2x5cGhEYXRhRm9ybWF0OiByLmludDE2IC8vIDAgZm9yIGN1cnJlbnQgZm9ybWF0Cn0pOwoKLy8gaG9yaXpvbnRhbCBoZWFkZXIKdmFyIGhoZWEgPSBuZXcgci5TdHJ1Y3QoewogIHZlcnNpb246IHIuaW50MzIsCiAgYXNjZW50OiByLmludDE2LCAvLyBEaXN0YW5jZSBmcm9tIGJhc2VsaW5lIG9mIGhpZ2hlc3QgYXNjZW5kZXIKICBkZXNjZW50OiByLmludDE2LCAvLyBEaXN0YW5jZSBmcm9tIGJhc2VsaW5lIG9mIGxvd2VzdCBkZXNjZW5kZXIKICBsaW5lR2FwOiByLmludDE2LCAvLyBUeXBvZ3JhcGhpYyBsaW5lIGdhcAogIGFkdmFuY2VXaWR0aE1heDogci51aW50MTYsIC8vIE1heGltdW0gYWR2YW5jZSB3aWR0aCB2YWx1ZSBpbiAnaG10eCcgdGFibGUKICBtaW5MZWZ0U2lkZUJlYXJpbmc6IHIuaW50MTYsIC8vIE1heGltdW0gYWR2YW5jZSB3aWR0aCB2YWx1ZSBpbiAnaG10eCcgdGFibGUKICBtaW5SaWdodFNpZGVCZWFyaW5nOiByLmludDE2LCAvLyBNaW5pbXVtIHJpZ2h0IHNpZGViZWFyaW5nIHZhbHVlCiAgeE1heEV4dGVudDogci5pbnQxNiwKICBjYXJldFNsb3BlUmlzZTogci5pbnQxNiwgLy8gVXNlZCB0byBjYWxjdWxhdGUgdGhlIHNsb3BlIG9mIHRoZSBjdXJzb3IgKHJpc2UvcnVuKTsgMSBmb3IgdmVydGljYWwKICBjYXJldFNsb3BlUnVuOiByLmludDE2LCAvLyAwIGZvciB2ZXJ0aWNhbAogIGNhcmV0T2Zmc2V0OiByLmludDE2LCAvLyBTZXQgdG8gMCBmb3Igbm9uLXNsYW50ZWQgZm9udHMKICByZXNlcnZlZDogbmV3IHIuUmVzZXJ2ZWQoci5pbnQxNiwgNCksCiAgbWV0cmljRGF0YUZvcm1hdDogci5pbnQxNiwgLy8gMCBmb3IgY3VycmVudCBmb3JtYXQKICBudW1iZXJPZk1ldHJpY3M6IHIudWludDE2IC8vIE51bWJlciBvZiBhZHZhbmNlIHdpZHRocyBpbiAnaG10eCcgdGFibGUKfSk7Cgp2YXIgSG10eEVudHJ5ID0gbmV3IHIuU3RydWN0KHsKICBhZHZhbmNlOiByLnVpbnQxNiwKICBiZWFyaW5nOiByLmludDE2Cn0pOwoKdmFyIGhtdHggPSBuZXcgci5TdHJ1Y3QoewogIG1ldHJpY3M6IG5ldyByLkxhenlBcnJheShIbXR4RW50cnksIGZ1bmN0aW9uICh0KSB7CiAgICByZXR1cm4gdC5wYXJlbnQuaGhlYS5udW1iZXJPZk1ldHJpY3M7CiAgfSksCiAgYmVhcmluZ3M6IG5ldyByLkxhenlBcnJheShyLmludDE2LCBmdW5jdGlvbiAodCkgewogICAgcmV0dXJuIHQucGFyZW50Lm1heHAubnVtR2x5cGhzIC0gdC5wYXJlbnQuaGhlYS5udW1iZXJPZk1ldHJpY3M7CiAgfSkKfSk7CgovLyBtYXhpdW11bSBwcm9maWxlCnZhciBtYXhwID0gbmV3IHIuU3RydWN0KHsKICB2ZXJzaW9uOiByLmludDMyLAogIG51bUdseXBoczogci51aW50MTYsIC8vIFRoZSBudW1iZXIgb2YgZ2x5cGhzIGluIHRoZSBmb250CiAgbWF4UG9pbnRzOiByLnVpbnQxNiwgLy8gTWF4aW11bSBwb2ludHMgaW4gYSBub24tY29tcG9zaXRlIGdseXBoCiAgbWF4Q29udG91cnM6IHIudWludDE2LCAvLyBNYXhpbXVtIGNvbnRvdXJzIGluIGEgbm9uLWNvbXBvc2l0ZSBnbHlwaAogIG1heENvbXBvbmVudFBvaW50czogci51aW50MTYsIC8vIE1heGltdW0gcG9pbnRzIGluIGEgY29tcG9zaXRlIGdseXBoCiAgbWF4Q29tcG9uZW50Q29udG91cnM6IHIudWludDE2LCAvLyBNYXhpbXVtIGNvbnRvdXJzIGluIGEgY29tcG9zaXRlIGdseXBoCiAgbWF4Wm9uZXM6IHIudWludDE2LCAvLyAxIGlmIGluc3RydWN0aW9ucyBkbyBub3QgdXNlIHRoZSB0d2lsaWdodCB6b25lLCAyIG90aGVyd2lzZQogIG1heFR3aWxpZ2h0UG9pbnRzOiByLnVpbnQxNiwgLy8gTWF4aW11bSBwb2ludHMgdXNlZCBpbiBaMAogIG1heFN0b3JhZ2U6IHIudWludDE2LCAvLyBOdW1iZXIgb2YgU3RvcmFnZSBBcmVhIGxvY2F0aW9ucwogIG1heEZ1bmN0aW9uRGVmczogci51aW50MTYsIC8vIE51bWJlciBvZiBGREVGcwogIG1heEluc3RydWN0aW9uRGVmczogci51aW50MTYsIC8vIE51bWJlciBvZiBJREVGcwogIG1heFN0YWNrRWxlbWVudHM6IHIudWludDE2LCAvLyBNYXhpbXVtIHN0YWNrIGRlcHRoCiAgbWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zOiByLnVpbnQxNiwgLy8gTWF4aW11bSBieXRlIGNvdW50IGZvciBnbHlwaCBpbnN0cnVjdGlvbnMKICBtYXhDb21wb25lbnRFbGVtZW50czogci51aW50MTYsIC8vIE1heGltdW0gbnVtYmVyIG9mIGNvbXBvbmVudHMgcmVmZXJlbmNlZCBhdCDigJx0b3AgbGV2ZWzigJ0gZm9yIGFueSBjb21wb3NpdGUgZ2x5cGgKICBtYXhDb21wb25lbnREZXB0aDogci51aW50MTYgLy8gTWF4aW11bSBsZXZlbHMgb2YgcmVjdXJzaW9uOyAxIGZvciBzaW1wbGUgY29tcG9uZW50cwp9KTsKCi8qKgogKiBHZXRzIGFuIGVuY29kaW5nIG5hbWUgZnJvbSBwbGF0Zm9ybSwgZW5jb2RpbmcsIGFuZCBsYW5ndWFnZSBpZHMuCiAqIFJldHVybmVkIGVuY29kaW5nIG5hbWVzIGNhbiBiZSB1c2VkIGluIGljb252LWxpdGUgdG8gZGVjb2RlIHRleHQuCiAqLwpmdW5jdGlvbiBnZXRFbmNvZGluZyhwbGF0Zm9ybUlELCBlbmNvZGluZ0lEKSB7CiAgdmFyIGxhbmd1YWdlSUQgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDA7CgogIGlmIChwbGF0Zm9ybUlEID09PSAxICYmIE1BQ19MQU5HVUFHRV9FTkNPRElOR1NbbGFuZ3VhZ2VJRF0pIHsKICAgIHJldHVybiBNQUNfTEFOR1VBR0VfRU5DT0RJTkdTW2xhbmd1YWdlSURdOwogIH0KCiAgcmV0dXJuIEVOQ09ESU5HU1twbGF0Zm9ybUlEXVtlbmNvZGluZ0lEXTsKfQoKLy8gTWFwIG9mIHBsYXRmb3JtIGlkcyB0byBlbmNvZGluZyBpZHMuCnZhciBFTkNPRElOR1MgPSBbCi8vIHVuaWNvZGUKWyd1dGYxNmJlJywgJ3V0ZjE2YmUnLCAndXRmMTZiZScsICd1dGYxNmJlJywgJ3V0ZjE2YmUnLCAndXRmMTZiZSddLAoKLy8gbWFjaW50b3NoCi8vIE1hcHBpbmdzIGF2YWlsYWJsZSBhdCBodHRwOi8vdW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL1ZFTkRPUlMvQVBQTEUvCi8vIDAJUm9tYW4gICAgICAgICAgICAgICAgIDE3CU1hbGF5YWxhbQovLyAxCUphcGFuZXNlCSAgICAgICAgICAgIDE4CVNpbmhhbGVzZQovLyAyCVRyYWRpdGlvbmFsIENoaW5lc2UJICAxOQlCdXJtZXNlCi8vIDMJS29yZWFuCSAgICAgICAgICAgICAgMjAJS2htZXIKLy8gNAlBcmFiaWMJICAgICAgICAgICAgICAyMQlUaGFpCi8vIDUJSGVicmV3CSAgICAgICAgICAgICAgMjIJTGFvdGlhbgovLyA2CUdyZWVrCSAgICAgICAgICAgICAgICAyMwlHZW9yZ2lhbgovLyA3CVJ1c3NpYW4JICAgICAgICAgICAgICAyNAlBcm1lbmlhbgovLyA4CVJTeW1ib2wJICAgICAgICAgICAgICAyNQlTaW1wbGlmaWVkIENoaW5lc2UKLy8gOQlEZXZhbmFnYXJpCSAgICAgICAgICAyNglUaWJldGFuCi8vIDEwCUd1cm11a2hpCSAgICAgICAgICAgIDI3CU1vbmdvbGlhbgovLyAxMQlHdWphcmF0aQkgICAgICAgICAgICAyOAlHZWV6Ci8vIDEyCU9yaXlhCSAgICAgICAgICAgICAgICAyOQlTbGF2aWMKLy8gMTMJQmVuZ2FsaQkgICAgICAgICAgICAgIDMwCVZpZXRuYW1lc2UKLy8gMTQJVGFtaWwJICAgICAgICAgICAgICAgIDMxCVNpbmRoaQovLyAxNQlUZWx1Z3UJICAgICAgICAgICAgICAzMgkoVW5pbnRlcnByZXRlZCkKLy8gMTYJS2FubmFkYQpbJ21hY3JvbWFuJywgJ3NoaWZ0LWppcycsICdiaWc1JywgJ2V1Yy1rcicsICdpc28tODg1OS02JywgJ2lzby04ODU5LTgnLCAnbWFjZ3JlZWsnLCAnbWFjY3lyaWxsaWMnLCAnc3ltYm9sJywgJ0RldmFuYWdhcmknLCAnR3VybXVraGknLCAnR3VqYXJhdGknLCAnT3JpeWEnLCAnQmVuZ2FsaScsICdUYW1pbCcsICdUZWx1Z3UnLCAnS2FubmFkYScsICdNYWxheWFsYW0nLCAnU2luaGFsZXNlJywgJ0J1cm1lc2UnLCAnS2htZXInLCAnbWFjdGhhaScsICdMYW90aWFuJywgJ0dlb3JnaWFuJywgJ0FybWVuaWFuJywgJ2diLTIzMTItODAnLCAnVGliZXRhbicsICdNb25nb2xpYW4nLCAnR2VleicsICdtYWNjZW50ZXVybycsICdWaWV0bmFtZXNlJywgJ1NpbmRoaSddLAoKLy8gSVNPIChkZXByZWNhdGVkKQpbJ2FzY2lpJ10sCgovLyB3aW5kb3dzCi8vIERvY3MgaGVyZTogaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3N5c3RlbS50ZXh0LmVuY29kaW5nKHY9dnMuMTEwKS5hc3B4Clsnc3ltYm9sJywgJ3V0ZjE2YmUnLCAnc2hpZnQtamlzJywgJ2diMTgwMzAnLCAnYmlnNScsICd3YW5zdW5nJywgJ2pvaGFiJywgbnVsbCwgbnVsbCwgbnVsbCwgJ3V0ZjE2YmUnXV07CgovLyBPdmVycmlkZXMgZm9yIE1hYyBzY3JpcHRzIGJ5IGxhbmd1YWdlIGlkLgovLyBTZWUgaHR0cDovL3VuaWNvZGUub3JnL1B1YmxpYy9NQVBQSU5HUy9WRU5ET1JTL0FQUExFL1JlYWRtZS50eHQKdmFyIE1BQ19MQU5HVUFHRV9FTkNPRElOR1MgPSB7CiAgMTU6ICdtYWNpY2VsYW5kJywKICAxNzogJ21hY3R1cmtpc2gnLAogIDE4OiAnbWFjY3JvYXRpYW4nLAogIDI0OiAnbWFjY2VudGV1cm8nLAogIDI1OiAnbWFjY2VudGV1cm8nLAogIDI2OiAnbWFjY2VudGV1cm8nLAogIDI3OiAnbWFjY2VudGV1cm8nLAogIDI4OiAnbWFjY2VudGV1cm8nLAogIDMwOiAnbWFjaWNlbGFuZCcsCiAgMzc6ICdtYWNyb21hbmlhJywKICAzODogJ21hY2NlbnRldXJvJywKICAzOTogJ21hY2NlbnRldXJvJywKICA0MDogJ21hY2NlbnRldXJvJywKICAxNDM6ICdtYWNpbnVpdCcsIC8vIFVuc3VwcG9ydGVkIGJ5IGljb252LWxpdGUKICAxNDY6ICdtYWNnYWVsaWMnIC8vIFVuc3VwcG9ydGVkIGJ5IGljb252LWxpdGUKfTsKCi8vIE1hcCBvZiBwbGF0Zm9ybSBpZHMgdG8gQkNQLTQ3IGxhbmd1YWdlIGNvZGVzLgp2YXIgTEFOR1VBR0VTID0gWwovLyB1bmljb2RlCltdLCB7IC8vIG1hY2ludG9zaAogIDA6ICdlbicsIDMwOiAnZm8nLCA2MDogJ2tzJywgOTA6ICdydycsCiAgMTogJ2ZyJywgMzE6ICdmYScsIDYxOiAna3UnLCA5MTogJ3JuJywKICAyOiAnZGUnLCAzMjogJ3J1JywgNjI6ICdzZCcsIDkyOiAnbnknLAogIDM6ICdpdCcsIDMzOiAnemgnLCA2MzogJ2JvJywgOTM6ICdtZycsCiAgNDogJ25sJywgMzQ6ICdubC1CRScsIDY0OiAnbmUnLCA5NDogJ2VvJywKICA1OiAnc3YnLCAzNTogJ2dhJywgNjU6ICdzYScsIDEyODogJ2N5JywKICA2OiAnZXMnLCAzNjogJ3NxJywgNjY6ICdtcicsIDEyOTogJ2V1JywKICA3OiAnZGEnLCAzNzogJ3JvJywgNjc6ICdibicsIDEzMDogJ2NhJywKICA4OiAncHQnLCAzODogJ2N6JywgNjg6ICdhcycsIDEzMTogJ2xhJywKICA5OiAnbm8nLCAzOTogJ3NrJywgNjk6ICdndScsIDEzMjogJ3F1JywKICAxMDogJ2hlJywgNDA6ICdzaScsIDcwOiAncGEnLCAxMzM6ICdnbicsCiAgMTE6ICdqYScsIDQxOiAneWknLCA3MTogJ29yJywgMTM0OiAnYXknLAogIDEyOiAnYXInLCA0MjogJ3NyJywgNzI6ICdtbCcsIDEzNTogJ3R0JywKICAxMzogJ2ZpJywgNDM6ICdtaycsIDczOiAna24nLCAxMzY6ICd1ZycsCiAgMTQ6ICdlbCcsIDQ0OiAnYmcnLCA3NDogJ3RhJywgMTM3OiAnZHonLAogIDE1OiAnaXMnLCA0NTogJ3VrJywgNzU6ICd0ZScsIDEzODogJ2p2JywKICAxNjogJ210JywgNDY6ICdiZScsIDc2OiAnc2knLCAxMzk6ICdzdScsCiAgMTc6ICd0cicsIDQ3OiAndXonLCA3NzogJ215JywgMTQwOiAnZ2wnLAogIDE4OiAnaHInLCA0ODogJ2trJywgNzg6ICdrbScsIDE0MTogJ2FmJywKICAxOTogJ3poLUhhbnQnLCA0OTogJ2F6LUN5cmwnLCA3OTogJ2xvJywgMTQyOiAnYnInLAogIDIwOiAndXInLCA1MDogJ2F6LUFyYWInLCA4MDogJ3ZpJywgMTQzOiAnaXUnLAogIDIxOiAnaGknLCA1MTogJ2h5JywgODE6ICdpZCcsIDE0NDogJ2dkJywKICAyMjogJ3RoJywgNTI6ICdrYScsIDgyOiAndGwnLCAxNDU6ICdndicsCiAgMjM6ICdrbycsIDUzOiAnbW8nLCA4MzogJ21zJywgMTQ2OiAnZ2EnLAogIDI0OiAnbHQnLCA1NDogJ2t5JywgODQ6ICdtcy1BcmFiJywgMTQ3OiAndG8nLAogIDI1OiAncGwnLCA1NTogJ3RnJywgODU6ICdhbScsIDE0ODogJ2VsLXBvbHl0b24nLAogIDI2OiAnaHUnLCA1NjogJ3RrJywgODY6ICd0aScsIDE0OTogJ2tsJywKICAyNzogJ2VzJywgNTc6ICdtbi1DTicsIDg3OiAnb20nLCAxNTA6ICdheicsCiAgMjg6ICdsdicsIDU4OiAnbW4nLCA4ODogJ3NvJywgMTUxOiAnbm4nLAogIDI5OiAnc2UnLCA1OTogJ3BzJywgODk6ICdzdycKfSwKCi8vIElTTyAoZGVwcmVjYXRlZCkKW10sIHsgLy8gd2luZG93cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAweDA0MzY6ICdhZicsIDB4NDAwOTogJ2VuLUlOJywgMHgwNDg3OiAncncnLCAweDA0MzI6ICd0bicsCiAgMHgwNDFDOiAnc3EnLCAweDE4MDk6ICdlbi1JRScsIDB4MDQ0MTogJ3N3JywgMHgwNDVCOiAnc2knLAogIDB4MDQ4NDogJ2dzdycsIDB4MjAwOTogJ2VuLUpNJywgMHgwNDU3OiAna29rJywgMHgwNDFCOiAnc2snLAogIDB4MDQ1RTogJ2FtJywgMHg0NDA5OiAnZW4tTVknLCAweDA0MTI6ICdrbycsIDB4MDQyNDogJ3NsJywKICAweDE0MDE6ICdhci1EWicsIDB4MTQwOTogJ2VuLU5aJywgMHgwNDQwOiAna3knLCAweDJDMEE6ICdlcy1BUicsCiAgMHgzQzAxOiAnYXItQkgnLCAweDM0MDk6ICdlbi1QSCcsIDB4MDQ1NDogJ2xvJywgMHg0MDBBOiAnZXMtQk8nLAogIDB4MEMwMTogJ2FyJywgMHg0ODA5OiAnZW4tU0cnLCAweDA0MjY6ICdsdicsIDB4MzQwQTogJ2VzLUNMJywKICAweDA4MDE6ICdhci1JUScsIDB4MUMwOTogJ2VuLVpBJywgMHgwNDI3OiAnbHQnLCAweDI0MEE6ICdlcy1DTycsCiAgMHgyQzAxOiAnYXItSk8nLCAweDJDMDk6ICdlbi1UVCcsIDB4MDgyRTogJ2RzYicsIDB4MTQwQTogJ2VzLUNSJywKICAweDM0MDE6ICdhci1LVycsIDB4MDgwOTogJ2VuLUdCJywgMHgwNDZFOiAnbGInLCAweDFDMEE6ICdlcy1ETycsCiAgMHgzMDAxOiAnYXItTEInLCAweDA0MDk6ICdlbicsIDB4MDQyRjogJ21rJywgMHgzMDBBOiAnZXMtRUMnLAogIDB4MTAwMTogJ2FyLUxZJywgMHgzMDA5OiAnZW4tWlcnLCAweDA4M0U6ICdtcy1CTicsIDB4NDQwQTogJ2VzLVNWJywKICAweDE4MDE6ICdhcnknLCAweDA0MjU6ICdldCcsIDB4MDQzRTogJ21zJywgMHgxMDBBOiAnZXMtR1QnLAogIDB4MjAwMTogJ2FyLU9NJywgMHgwNDM4OiAnZm8nLCAweDA0NEM6ICdtbCcsIDB4NDgwQTogJ2VzLUhOJywKICAweDQwMDE6ICdhci1RQScsIDB4MDQ2NDogJ2ZpbCcsIDB4MDQzQTogJ210JywgMHgwODBBOiAnZXMtTVgnLAogIDB4MDQwMTogJ2FyLVNBJywgMHgwNDBCOiAnZmknLCAweDA0ODE6ICdtaScsIDB4NEMwQTogJ2VzLU5JJywKICAweDI4MDE6ICdhci1TWScsIDB4MDgwQzogJ2ZyLUJFJywgMHgwNDdBOiAnYXJuJywgMHgxODBBOiAnZXMtUEEnLAogIDB4MUMwMTogJ2FlYicsIDB4MEMwQzogJ2ZyLUNBJywgMHgwNDRFOiAnbXInLCAweDNDMEE6ICdlcy1QWScsCiAgMHgzODAxOiAnYXItQUUnLCAweDA0MEM6ICdmcicsIDB4MDQ3QzogJ21vaCcsIDB4MjgwQTogJ2VzLVBFJywKICAweDI0MDE6ICdhci1ZRScsIDB4MTQwQzogJ2ZyLUxVJywgMHgwNDUwOiAnbW4nLCAweDUwMEE6ICdlcy1QUicsCiAgMHgwNDJCOiAnaHknLCAweDE4MEM6ICdmci1NQycsIDB4MDg1MDogJ21uLUNOJywgMHgwQzBBOiAnZXMnLAogIDB4MDQ0RDogJ2FzJywgMHgxMDBDOiAnZnItQ0gnLCAweDA0NjE6ICduZScsIDB4MDQwQTogJ2VzJywKICAweDA4MkM6ICdhei1DeXJsJywgMHgwNDYyOiAnZnknLCAweDA0MTQ6ICduYicsIDB4NTQwQTogJ2VzLVVTJywKICAweDA0MkM6ICdheicsIDB4MDQ1NjogJ2dsJywgMHgwODE0OiAnbm4nLCAweDM4MEE6ICdlcy1VWScsCiAgMHgwNDZEOiAnYmEnLCAweDA0Mzc6ICdrYScsIDB4MDQ4MjogJ29jJywgMHgyMDBBOiAnZXMtVkUnLAogIDB4MDQyRDogJ2V1JywgMHgwQzA3OiAnZGUtQVQnLCAweDA0NDg6ICdvcicsIDB4MDgxRDogJ3N2LUZJJywKICAweDA0MjM6ICdiZScsIDB4MDQwNzogJ2RlJywgMHgwNDYzOiAncHMnLCAweDA0MUQ6ICdzdicsCiAgMHgwODQ1OiAnYm4nLCAweDE0MDc6ICdkZS1MSScsIDB4MDQxNTogJ3BsJywgMHgwNDVBOiAnc3lyJywKICAweDA0NDU6ICdibi1JTicsIDB4MTAwNzogJ2RlLUxVJywgMHgwNDE2OiAncHQnLCAweDA0Mjg6ICd0ZycsCiAgMHgyMDFBOiAnYnMtQ3lybCcsIDB4MDgwNzogJ2RlLUNIJywgMHgwODE2OiAncHQtUFQnLCAweDA4NUY6ICd0em0nLAogIDB4MTQxQTogJ2JzJywgMHgwNDA4OiAnZWwnLCAweDA0NDY6ICdwYScsIDB4MDQ0OTogJ3RhJywKICAweDA0N0U6ICdicicsIDB4MDQ2RjogJ2tsJywgMHgwNDZCOiAncXUtQk8nLCAweDA0NDQ6ICd0dCcsCiAgMHgwNDAyOiAnYmcnLCAweDA0NDc6ICdndScsIDB4MDg2QjogJ3F1LUVDJywgMHgwNDRBOiAndGUnLAogIDB4MDQwMzogJ2NhJywgMHgwNDY4OiAnaGEnLCAweDBDNkI6ICdxdScsIDB4MDQxRTogJ3RoJywKICAweDBDMDQ6ICd6aC1ISycsIDB4MDQwRDogJ2hlJywgMHgwNDE4OiAncm8nLCAweDA0NTE6ICdibycsCiAgMHgxNDA0OiAnemgtTU8nLCAweDA0Mzk6ICdoaScsIDB4MDQxNzogJ3JtJywgMHgwNDFGOiAndHInLAogIDB4MDgwNDogJ3poJywgMHgwNDBFOiAnaHUnLCAweDA0MTk6ICdydScsIDB4MDQ0MjogJ3RrJywKICAweDEwMDQ6ICd6aC1TRycsIDB4MDQwRjogJ2lzJywgMHgyNDNCOiAnc21uJywgMHgwNDgwOiAndWcnLAogIDB4MDQwNDogJ3poLVRXJywgMHgwNDcwOiAnaWcnLCAweDEwM0I6ICdzbWotTk8nLCAweDA0MjI6ICd1aycsCiAgMHgwNDgzOiAnY28nLCAweDA0MjE6ICdpZCcsIDB4MTQzQjogJ3NtaicsIDB4MDQyRTogJ2hzYicsCiAgMHgwNDFBOiAnaHInLCAweDA0NUQ6ICdpdScsIDB4MEMzQjogJ3NlLUZJJywgMHgwNDIwOiAndXInLAogIDB4MTAxQTogJ2hyLUJBJywgMHgwODVEOiAnaXUtTGF0bicsIDB4MDQzQjogJ3NlJywgMHgwODQzOiAndXotQ3lybCcsCiAgMHgwNDA1OiAnY3MnLCAweDA4M0M6ICdnYScsIDB4MDgzQjogJ3NlLVNFJywgMHgwNDQzOiAndXonLAogIDB4MDQwNjogJ2RhJywgMHgwNDM0OiAneGgnLCAweDIwM0I6ICdzbXMnLCAweDA0MkE6ICd2aScsCiAgMHgwNDhDOiAncHJzJywgMHgwNDM1OiAnenUnLCAweDE4M0I6ICdzbWEtTk8nLCAweDA0NTI6ICdjeScsCiAgMHgwNDY1OiAnZHYnLCAweDA0MTA6ICdpdCcsIDB4MUMzQjogJ3NtcycsIDB4MDQ4ODogJ3dvJywKICAweDA4MTM6ICdubC1CRScsIDB4MDgxMDogJ2l0LUNIJywgMHgwNDRGOiAnc2EnLCAweDA0ODU6ICdzYWgnLAogIDB4MDQxMzogJ25sJywgMHgwNDExOiAnamEnLCAweDFDMUE6ICdzci1DeXJsLUJBJywgMHgwNDc4OiAnaWknLAogIDB4MEMwOTogJ2VuLUFVJywgMHgwNDRCOiAna24nLCAweDBDMUE6ICdzcicsIDB4MDQ2QTogJ3lvJywKICAweDI4MDk6ICdlbi1CWicsIDB4MDQzRjogJ2trJywgMHgxODFBOiAnc3ItTGF0bi1CQScsCiAgMHgxMDA5OiAnZW4tQ0EnLCAweDA0NTM6ICdrbScsIDB4MDgxQTogJ3NyLUxhdG4nLAogIDB4MjQwOTogJ2VuLTAyOScsIDB4MDQ4NjogJ3F1YycsIDB4MDQ2QzogJ25zbycKfV07Cgp2YXIgTmFtZVJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgcGxhdGZvcm1JRDogci51aW50MTYsCiAgZW5jb2RpbmdJRDogci51aW50MTYsCiAgbGFuZ3VhZ2VJRDogci51aW50MTYsCiAgbmFtZUlEOiByLnVpbnQxNiwKICBsZW5ndGg6IHIudWludDE2LAogIHN0cmluZzogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgbmV3IHIuU3RyaW5nKCdsZW5ndGgnLCBmdW5jdGlvbiAodCkgewogICAgcmV0dXJuIGdldEVuY29kaW5nKHQucGxhdGZvcm1JRCwgdC5lbmNvZGluZ0lELCB0Lmxhbmd1YWdlSUQpOwogIH0pLCB7IHR5cGU6ICdwYXJlbnQnLCByZWxhdGl2ZVRvOiAncGFyZW50LnN0cmluZ09mZnNldCcsIGFsbG93TnVsbDogZmFsc2UgfSkKfSk7Cgp2YXIgTGFuZ1RhZ1JlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgbGVuZ3RoOiByLnVpbnQxNiwKICB0YWc6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIG5ldyByLlN0cmluZygnbGVuZ3RoJywgJ3V0ZjE2YmUnKSwgeyB0eXBlOiAncGFyZW50JywgcmVsYXRpdmVUbzogJ3N0cmluZ09mZnNldCcgfSkKfSk7Cgp2YXIgTmFtZVRhYmxlID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIudWludDE2LCB7CiAgMDogewogICAgY291bnQ6IHIudWludDE2LAogICAgc3RyaW5nT2Zmc2V0OiByLnVpbnQxNiwKICAgIHJlY29yZHM6IG5ldyByLkFycmF5KE5hbWVSZWNvcmQsICdjb3VudCcpCiAgfSwKICAxOiB7CiAgICBjb3VudDogci51aW50MTYsCiAgICBzdHJpbmdPZmZzZXQ6IHIudWludDE2LAogICAgcmVjb3JkczogbmV3IHIuQXJyYXkoTmFtZVJlY29yZCwgJ2NvdW50JyksCiAgICBsYW5nVGFnQ291bnQ6IHIudWludDE2LAogICAgbGFuZ1RhZ3M6IG5ldyByLkFycmF5KExhbmdUYWdSZWNvcmQsICdsYW5nVGFnQ291bnQnKQogIH0KfSk7Cgp2YXIgTkFNRVMgPSBbJ2NvcHlyaWdodCcsICdmb250RmFtaWx5JywgJ2ZvbnRTdWJmYW1pbHknLCAndW5pcXVlU3ViZmFtaWx5JywgJ2Z1bGxOYW1lJywgJ3ZlcnNpb24nLCAncG9zdHNjcmlwdE5hbWUnLCAvLyBOb3RlOiBBIGZvbnQgbWF5IGhhdmUgb25seSBvbmUgUG9zdFNjcmlwdCBuYW1lIGFuZCB0aGF0IG5hbWUgbXVzdCBiZSBBU0NJSS4KJ3RyYWRlbWFyaycsICdtYW51ZmFjdHVyZXInLCAnZGVzaWduZXInLCAnZGVzY3JpcHRpb24nLCAndmVuZG9yVVJMJywgJ2Rlc2lnbmVyVVJMJywgJ2xpY2Vuc2UnLCAnbGljZW5zZVVSTCcsIG51bGwsIC8vIHJlc2VydmVkCidwcmVmZXJyZWRGYW1pbHknLCAncHJlZmVycmVkU3ViZmFtaWx5JywgJ2NvbXBhdGlibGVGdWxsJywgJ3NhbXBsZVRleHQnLCAncG9zdHNjcmlwdENJREZvbnROYW1lJywgJ3d3c0ZhbWlseU5hbWUnLCAnd3dzU3ViZmFtaWx5TmFtZSddOwoKTmFtZVRhYmxlLnByb2Nlc3MgPSBmdW5jdGlvbiAoc3RyZWFtKSB7CiAgdmFyIHJlY29yZHMgPSB7fTsKICBmb3IgKHZhciBfaXRlcmF0b3IgPSB0aGlzLnJlY29yZHMsIF9pc0FycmF5ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IpLCBfaSA9IDAsIF9pdGVyYXRvciA9IF9pc0FycmF5ID8gX2l0ZXJhdG9yIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcik7OykgewogICAgdmFyIF9yZWY7CgogICAgaWYgKF9pc0FycmF5KSB7CiAgICAgIGlmIChfaSA+PSBfaXRlcmF0b3IubGVuZ3RoKSBicmVhazsKICAgICAgX3JlZiA9IF9pdGVyYXRvcltfaSsrXTsKICAgIH0gZWxzZSB7CiAgICAgIF9pID0gX2l0ZXJhdG9yLm5leHQoKTsKICAgICAgaWYgKF9pLmRvbmUpIGJyZWFrOwogICAgICBfcmVmID0gX2kudmFsdWU7CiAgICB9CgogICAgdmFyIHJlY29yZCA9IF9yZWY7CgogICAgLy8gZmluZCBvdXQgd2hhdCBsYW5ndWFnZSB0aGlzIGlzIGZvcgogICAgdmFyIGxhbmd1YWdlID0gTEFOR1VBR0VTW3JlY29yZC5wbGF0Zm9ybUlEXVtyZWNvcmQubGFuZ3VhZ2VJRF07CgogICAgaWYgKGxhbmd1YWdlID09IG51bGwgJiYgdGhpcy5sYW5nVGFncyAhPSBudWxsICYmIHJlY29yZC5sYW5ndWFnZUlEID49IDB4ODAwMCkgewogICAgICBsYW5ndWFnZSA9IHRoaXMubGFuZ1RhZ3NbcmVjb3JkLmxhbmd1YWdlSUQgLSAweDgwMDBdLnRhZzsKICAgIH0KCiAgICBpZiAobGFuZ3VhZ2UgPT0gbnVsbCkgewogICAgICBsYW5ndWFnZSA9IHJlY29yZC5wbGF0Zm9ybUlEICsgJy0nICsgcmVjb3JkLmxhbmd1YWdlSUQ7CiAgICB9CgogICAgLy8gaWYgdGhlIG5hbWVJRCBpcyA+PSAyNTYsIGl0IGlzIGEgZm9udCBmZWF0dXJlIHJlY29yZCAoQUFUKQogICAgdmFyIGtleSA9IHJlY29yZC5uYW1lSUQgPj0gMjU2ID8gJ2ZvbnRGZWF0dXJlcycgOiBOQU1FU1tyZWNvcmQubmFtZUlEXSB8fCByZWNvcmQubmFtZUlEOwogICAgaWYgKHJlY29yZHNba2V5XSA9PSBudWxsKSB7CiAgICAgIHJlY29yZHNba2V5XSA9IHt9OwogICAgfQoKICAgIHZhciBvYmogPSByZWNvcmRzW2tleV07CiAgICBpZiAocmVjb3JkLm5hbWVJRCA+PSAyNTYpIHsKICAgICAgb2JqID0gb2JqW3JlY29yZC5uYW1lSURdIHx8IChvYmpbcmVjb3JkLm5hbWVJRF0gPSB7fSk7CiAgICB9CgogICAgaWYgKHR5cGVvZiByZWNvcmQuc3RyaW5nID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb2JqW2xhbmd1YWdlXSAhPT0gJ3N0cmluZycpIHsKICAgICAgb2JqW2xhbmd1YWdlXSA9IHJlY29yZC5zdHJpbmc7CiAgICB9CiAgfQoKICB0aGlzLnJlY29yZHMgPSByZWNvcmRzOwp9OwoKTmFtZVRhYmxlLnByZUVuY29kZSA9IGZ1bmN0aW9uICgpIHsKICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnJlY29yZHMpKSByZXR1cm47CiAgdGhpcy52ZXJzaW9uID0gMDsKCiAgdmFyIHJlY29yZHMgPSBbXTsKICBmb3IgKHZhciBrZXkgaW4gdGhpcy5yZWNvcmRzKSB7CiAgICB2YXIgdmFsID0gdGhpcy5yZWNvcmRzW2tleV07CiAgICBpZiAoa2V5ID09PSAnZm9udEZlYXR1cmVzJykgY29udGludWU7CgogICAgcmVjb3Jkcy5wdXNoKHsKICAgICAgcGxhdGZvcm1JRDogMywKICAgICAgZW5jb2RpbmdJRDogMSwKICAgICAgbGFuZ3VhZ2VJRDogMHg0MDksCiAgICAgIG5hbWVJRDogTkFNRVMuaW5kZXhPZihrZXkpLAogICAgICBsZW5ndGg6IEJ1ZmZlci5ieXRlTGVuZ3RoKHZhbC5lbiwgJ3V0ZjE2bGUnKSwKICAgICAgc3RyaW5nOiB2YWwuZW4KICAgIH0pOwoKICAgIGlmIChrZXkgPT09ICdwb3N0c2NyaXB0TmFtZScpIHsKICAgICAgcmVjb3Jkcy5wdXNoKHsKICAgICAgICBwbGF0Zm9ybUlEOiAxLAogICAgICAgIGVuY29kaW5nSUQ6IDAsCiAgICAgICAgbGFuZ3VhZ2VJRDogMCwKICAgICAgICBuYW1lSUQ6IE5BTUVTLmluZGV4T2Yoa2V5KSwKICAgICAgICBsZW5ndGg6IHZhbC5lbi5sZW5ndGgsCiAgICAgICAgc3RyaW5nOiB2YWwuZW4KICAgICAgfSk7CiAgICB9CiAgfQoKICB0aGlzLnJlY29yZHMgPSByZWNvcmRzOwogIHRoaXMuY291bnQgPSByZWNvcmRzLmxlbmd0aDsKICB0aGlzLnN0cmluZ09mZnNldCA9IE5hbWVUYWJsZS5zaXplKHRoaXMsIG51bGwsIGZhbHNlKTsKfTsKCnZhciBPUzIgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3Qoci51aW50MTYsIHsKICBoZWFkZXI6IHsKICAgIHhBdmdDaGFyV2lkdGg6IHIuaW50MTYsIC8vIGF2ZXJhZ2Ugd2VpZ2h0ZWQgYWR2YW5jZSB3aWR0aCBvZiBsb3dlciBjYXNlIGxldHRlcnMgYW5kIHNwYWNlCiAgICB1c1dlaWdodENsYXNzOiByLnVpbnQxNiwgLy8gdmlzdWFsIHdlaWdodCBvZiBzdHJva2UgaW4gZ2x5cGhzCiAgICB1c1dpZHRoQ2xhc3M6IHIudWludDE2LCAvLyByZWxhdGl2ZSBjaGFuZ2UgZnJvbSB0aGUgbm9ybWFsIGFzcGVjdCByYXRpbyAod2lkdGggdG8gaGVpZ2h0IHJhdGlvKQogICAgZnNUeXBlOiBuZXcgci5CaXRmaWVsZChyLnVpbnQxNiwgWy8vIEluZGljYXRlcyBmb250IGVtYmVkZGluZyBsaWNlbnNpbmcgcmlnaHRzCiAgICBudWxsLCAnbm9FbWJlZGRpbmcnLCAndmlld09ubHknLCAnZWRpdGFibGUnLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCAnbm9TdWJzZXR0aW5nJywgJ2JpdG1hcE9ubHknXSksCiAgICB5U3Vic2NyaXB0WFNpemU6IHIuaW50MTYsIC8vIHJlY29tbWVuZGVkIGhvcml6b250YWwgc2l6ZSBpbiBwaXhlbHMgZm9yIHN1YnNjcmlwdHMKICAgIHlTdWJzY3JpcHRZU2l6ZTogci5pbnQxNiwgLy8gcmVjb21tZW5kZWQgdmVydGljYWwgc2l6ZSBpbiBwaXhlbHMgZm9yIHN1YnNjcmlwdHMKICAgIHlTdWJzY3JpcHRYT2Zmc2V0OiByLmludDE2LCAvLyByZWNvbW1lbmRlZCBob3Jpem9udGFsIG9mZnNldCBmb3Igc3Vic2NyaXB0cwogICAgeVN1YnNjcmlwdFlPZmZzZXQ6IHIuaW50MTYsIC8vIHJlY29tbWVuZGVkIHZlcnRpY2FsIG9mZnNldCBmb3JtIHRoZSBiYXNlbGluZSBmb3Igc3Vic2NyaXB0cwogICAgeVN1cGVyc2NyaXB0WFNpemU6IHIuaW50MTYsIC8vIHJlY29tbWVuZGVkIGhvcml6b250YWwgc2l6ZSBpbiBwaXhlbHMgZm9yIHN1cGVyc2NyaXB0cwogICAgeVN1cGVyc2NyaXB0WVNpemU6IHIuaW50MTYsIC8vIHJlY29tbWVuZGVkIHZlcnRpY2FsIHNpemUgaW4gcGl4ZWxzIGZvciBzdXBlcnNjcmlwdHMKICAgIHlTdXBlcnNjcmlwdFhPZmZzZXQ6IHIuaW50MTYsIC8vIHJlY29tbWVuZGVkIGhvcml6b250YWwgb2Zmc2V0IGZvciBzdXBlcnNjcmlwdHMKICAgIHlTdXBlcnNjcmlwdFlPZmZzZXQ6IHIuaW50MTYsIC8vIHJlY29tbWVuZGVkIHZlcnRpY2FsIG9mZnNldCBmcm9tIHRoZSBiYXNlbGluZSBmb3Igc3VwZXJzY3JpcHRzCiAgICB5U3RyaWtlb3V0U2l6ZTogci5pbnQxNiwgLy8gd2lkdGggb2YgdGhlIHN0cmlrZW91dCBzdHJva2UKICAgIHlTdHJpa2VvdXRQb3NpdGlvbjogci5pbnQxNiwgLy8gcG9zaXRpb24gb2YgdGhlIHN0cmlrZW91dCBzdHJva2UgcmVsYXRpdmUgdG8gdGhlIGJhc2VsaW5lCiAgICBzRmFtaWx5Q2xhc3M6IHIuaW50MTYsIC8vIGNsYXNzaWZpY2F0aW9uIG9mIGZvbnQtZmFtaWx5IGRlc2lnbgogICAgcGFub3NlOiBuZXcgci5BcnJheShyLnVpbnQ4LCAxMCksIC8vIGRlc2NyaWJlIHRoZSB2aXN1YWwgY2hhcmFjdGVyaXN0aWNzIG9mIGEgZ2l2ZW4gdHlwZWZhY2UKICAgIHVsQ2hhclJhbmdlOiBuZXcgci5BcnJheShyLnVpbnQzMiwgNCksCiAgICB2ZW5kb3JJRDogbmV3IHIuU3RyaW5nKDQpLCAvLyBmb3VyIGNoYXJhY3RlciBpZGVudGlmaWVyIGZvciB0aGUgZm9udCB2ZW5kb3IKICAgIGZzU2VsZWN0aW9uOiBuZXcgci5CaXRmaWVsZChyLnVpbnQxNiwgWy8vIGJpdCBmaWVsZCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmb250CiAgICAnaXRhbGljJywgJ3VuZGVyc2NvcmUnLCAnbmVnYXRpdmUnLCAnb3V0bGluZWQnLCAnc3RyaWtlb3V0JywgJ2JvbGQnLCAncmVndWxhcicsICd1c2VUeXBvTWV0cmljcycsICd3d3MnLCAnb2JsaXF1ZSddKSwKICAgIHVzRmlyc3RDaGFySW5kZXg6IHIudWludDE2LCAvLyBUaGUgbWluaW11bSBVbmljb2RlIGluZGV4IGluIHRoaXMgZm9udAogICAgdXNMYXN0Q2hhckluZGV4OiByLnVpbnQxNiAvLyBUaGUgbWF4aW11bSBVbmljb2RlIGluZGV4IGluIHRoaXMgZm9udAogIH0sCgogIC8vIFRoZSBBcHBsZSB2ZXJzaW9uIG9mIHRoaXMgdGFibGUgZW5kcyBoZXJlLCBidXQgdGhlIE1pY3Jvc29mdCBvbmUgY29udGludWVzIG9uLi4uCiAgMDoge30sCgogIDE6IHsKICAgIHR5cG9Bc2NlbmRlcjogci5pbnQxNiwKICAgIHR5cG9EZXNjZW5kZXI6IHIuaW50MTYsCiAgICB0eXBvTGluZUdhcDogci5pbnQxNiwKICAgIHdpbkFzY2VudDogci51aW50MTYsCiAgICB3aW5EZXNjZW50OiByLnVpbnQxNiwKICAgIGNvZGVQYWdlUmFuZ2U6IG5ldyByLkFycmF5KHIudWludDMyLCAyKQogIH0sCgogIDI6IHsKICAgIC8vIHRoZXNlIHNob3VsZCBiZSBjb21tb24gd2l0aCB2ZXJzaW9uIDEgc29tZWhvdwogICAgdHlwb0FzY2VuZGVyOiByLmludDE2LAogICAgdHlwb0Rlc2NlbmRlcjogci5pbnQxNiwKICAgIHR5cG9MaW5lR2FwOiByLmludDE2LAogICAgd2luQXNjZW50OiByLnVpbnQxNiwKICAgIHdpbkRlc2NlbnQ6IHIudWludDE2LAogICAgY29kZVBhZ2VSYW5nZTogbmV3IHIuQXJyYXkoci51aW50MzIsIDIpLAoKICAgIHhIZWlnaHQ6IHIuaW50MTYsCiAgICBjYXBIZWlnaHQ6IHIuaW50MTYsCiAgICBkZWZhdWx0Q2hhcjogci51aW50MTYsCiAgICBicmVha0NoYXI6IHIudWludDE2LAogICAgbWF4Q29udGVudDogci51aW50MTYKICB9LAoKICA1OiB7CiAgICB0eXBvQXNjZW5kZXI6IHIuaW50MTYsCiAgICB0eXBvRGVzY2VuZGVyOiByLmludDE2LAogICAgdHlwb0xpbmVHYXA6IHIuaW50MTYsCiAgICB3aW5Bc2NlbnQ6IHIudWludDE2LAogICAgd2luRGVzY2VudDogci51aW50MTYsCiAgICBjb2RlUGFnZVJhbmdlOiBuZXcgci5BcnJheShyLnVpbnQzMiwgMiksCgogICAgeEhlaWdodDogci5pbnQxNiwKICAgIGNhcEhlaWdodDogci5pbnQxNiwKICAgIGRlZmF1bHRDaGFyOiByLnVpbnQxNiwKICAgIGJyZWFrQ2hhcjogci51aW50MTYsCiAgICBtYXhDb250ZW50OiByLnVpbnQxNiwKCiAgICB1c0xvd2VyT3B0aWNhbFBvaW50U2l6ZTogci51aW50MTYsCiAgICB1c1VwcGVyT3B0aWNhbFBvaW50U2l6ZTogci51aW50MTYKICB9Cn0pOwoKdmFyIHZlcnNpb25zID0gT1MyLnZlcnNpb25zOwp2ZXJzaW9uc1szXSA9IHZlcnNpb25zWzRdID0gdmVyc2lvbnNbMl07CgovLyBQb3N0U2NyaXB0IGluZm9ybWF0aW9uCnZhciBwb3N0ID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIuZml4ZWQzMiwgewogIGhlYWRlcjogeyAvLyB0aGVzZSBmaWVsZHMgZXhpc3QgYXQgdGhlIHRvcCBvZiBhbGwgdmVyc2lvbnMKICAgIGl0YWxpY0FuZ2xlOiByLmZpeGVkMzIsIC8vIEl0YWxpYyBhbmdsZSBpbiBjb3VudGVyLWNsb2Nrd2lzZSBkZWdyZWVzIGZyb20gdGhlIHZlcnRpY2FsLgogICAgdW5kZXJsaW5lUG9zaXRpb246IHIuaW50MTYsIC8vIFN1Z2dlc3RlZCBkaXN0YW5jZSBvZiB0aGUgdG9wIG9mIHRoZSB1bmRlcmxpbmUgZnJvbSB0aGUgYmFzZWxpbmUKICAgIHVuZGVybGluZVRoaWNrbmVzczogci5pbnQxNiwgLy8gU3VnZ2VzdGVkIHZhbHVlcyBmb3IgdGhlIHVuZGVybGluZSB0aGlja25lc3MKICAgIGlzRml4ZWRQaXRjaDogci51aW50MzIsIC8vIFdoZXRoZXIgdGhlIGZvbnQgaXMgbW9ub3NwYWNlZAogICAgbWluTWVtVHlwZTQyOiByLnVpbnQzMiwgLy8gTWluaW11bSBtZW1vcnkgdXNhZ2Ugd2hlbiBhIFRydWVUeXBlIGZvbnQgaXMgZG93bmxvYWRlZCBhcyBhIFR5cGUgNDIgZm9udAogICAgbWF4TWVtVHlwZTQyOiByLnVpbnQzMiwgLy8gTWF4aW11bSBtZW1vcnkgdXNhZ2Ugd2hlbiBhIFRydWVUeXBlIGZvbnQgaXMgZG93bmxvYWRlZCBhcyBhIFR5cGUgNDIgZm9udAogICAgbWluTWVtVHlwZTE6IHIudWludDMyLCAvLyBNaW5pbXVtIG1lbW9yeSB1c2FnZSB3aGVuIGEgVHJ1ZVR5cGUgZm9udCBpcyBkb3dubG9hZGVkIGFzIGEgVHlwZSAxIGZvbnQKICAgIG1heE1lbVR5cGUxOiByLnVpbnQzMiAvLyBNYXhpbXVtIG1lbW9yeSB1c2FnZSB3aGVuIGEgVHJ1ZVR5cGUgZm9udCBpcyBkb3dubG9hZGVkIGFzIGEgVHlwZSAxIGZvbnQKICB9LAoKICAxOiB7fSwgLy8gdmVyc2lvbiAxIGhhcyBubyBhZGRpdGlvbmFsIGZpZWxkcwoKICAyOiB7CiAgICBudW1iZXJPZkdseXBoczogci51aW50MTYsCiAgICBnbHlwaE5hbWVJbmRleDogbmV3IHIuQXJyYXkoci51aW50MTYsICdudW1iZXJPZkdseXBocycpLAogICAgbmFtZXM6IG5ldyByLkFycmF5KG5ldyByLlN0cmluZyhyLnVpbnQ4KSkKICB9LAoKICAyLjU6IHsKICAgIG51bWJlck9mR2x5cGhzOiByLnVpbnQxNiwKICAgIG9mZnNldHM6IG5ldyByLkFycmF5KHIudWludDgsICdudW1iZXJPZkdseXBocycpCiAgfSwKCiAgMzoge30sIC8vIHZlcnNpb24gMyBoYXMgbm8gYWRkaXRpb25hbCBmaWVsZHMKCiAgNDogewogICAgbWFwOiBuZXcgci5BcnJheShyLnVpbnQzMiwgZnVuY3Rpb24gKHQpIHsKICAgICAgcmV0dXJuIHQucGFyZW50Lm1heHAubnVtR2x5cGhzOwogICAgfSkKICB9Cn0pOwoKLy8gQW4gYXJyYXkgb2YgcHJlZGVmaW5lZCB2YWx1ZXMgYWNjZXNzaWJsZSBieSBpbnN0cnVjdGlvbnMKdmFyIGN2dCA9IG5ldyByLlN0cnVjdCh7CiAgY29udHJvbFZhbHVlczogbmV3IHIuQXJyYXkoci5pbnQxNikKfSk7CgovLyBBIGxpc3Qgb2YgaW5zdHJ1Y3Rpb25zIHRoYXQgYXJlIGV4ZWN1dGVkIG9uY2Ugd2hlbiBhIGZvbnQgaXMgZmlyc3QgdXNlZC4KLy8gVGhlc2UgaW5zdHJ1Y3Rpb25zIGFyZSBrbm93biBhcyB0aGUgZm9udCBwcm9ncmFtLiBUaGUgbWFpbiB1c2Ugb2YgdGhpcyB0YWJsZQovLyBpcyBmb3IgdGhlIGRlZmluaXRpb24gb2YgZnVuY3Rpb25zIHRoYXQgYXJlIHVzZWQgaW4gbWFueSBkaWZmZXJlbnQgZ2x5cGggcHJvZ3JhbXMuCnZhciBmcGdtID0gbmV3IHIuU3RydWN0KHsKICBpbnN0cnVjdGlvbnM6IG5ldyByLkFycmF5KHIudWludDgpCn0pOwoKdmFyIGxvY2EgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3QoJ2hlYWQuaW5kZXhUb0xvY0Zvcm1hdCcsIHsKICAwOiB7CiAgICBvZmZzZXRzOiBuZXcgci5BcnJheShyLnVpbnQxNikKICB9LAogIDE6IHsKICAgIG9mZnNldHM6IG5ldyByLkFycmF5KHIudWludDMyKQogIH0KfSk7Cgpsb2NhLnByb2Nlc3MgPSBmdW5jdGlvbiAoKSB7CiAgaWYgKHRoaXMudmVyc2lvbiA9PT0gMCkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm9mZnNldHMubGVuZ3RoOyBpKyspIHsKICAgICAgdGhpcy5vZmZzZXRzW2ldIDw8PSAxOwogICAgfQogIH0KfTsKCmxvY2EucHJlRW5jb2RlID0gZnVuY3Rpb24gKCkgewogIGlmICh0aGlzLnZlcnNpb24gIT0gbnVsbCkgcmV0dXJuOwoKICAvLyBhc3N1bWUgdGhpcy5vZmZzZXRzIGlzIGEgc29ydGVkIGFycmF5CiAgdGhpcy52ZXJzaW9uID0gdGhpcy5vZmZzZXRzW3RoaXMub2Zmc2V0cy5sZW5ndGggLSAxXSA+IDB4ZmZmZiA/IDEgOiAwOwoKICBpZiAodGhpcy52ZXJzaW9uID09PSAwKSB7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub2Zmc2V0cy5sZW5ndGg7IGkrKykgewogICAgICB0aGlzLm9mZnNldHNbaV0gPj4+PSAxOwogICAgfQogIH0KfTsKCi8vIFNldCBvZiBpbnN0cnVjdGlvbnMgZXhlY3V0ZWQgd2hlbmV2ZXIgdGhlIHBvaW50IHNpemUgb3IgZm9udCB0cmFuc2Zvcm1hdGlvbiBjaGFuZ2UKdmFyIHByZXAgPSBuZXcgci5TdHJ1Y3QoewogIGNvbnRyb2xWYWx1ZVByb2dyYW06IG5ldyByLkFycmF5KHIudWludDgpCn0pOwoKLy8gb25seSB1c2VkIGZvciBlbmNvZGluZwp2YXIgZ2x5ZiA9IG5ldyByLkFycmF5KG5ldyByLkJ1ZmZlcigpKTsKCnZhciBDRkZJbmRleCA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBDRkZJbmRleCh0eXBlKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ0ZGSW5kZXgpOwoKICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgfQoKICBDRkZJbmRleC5wcm90b3R5cGUuZ2V0Q0ZGVmVyc2lvbiA9IGZ1bmN0aW9uIGdldENGRlZlcnNpb24oY3R4KSB7CiAgICB3aGlsZSAoY3R4ICYmICFjdHguaGRyU2l6ZSkgewogICAgICBjdHggPSBjdHgucGFyZW50OwogICAgfQoKICAgIHJldHVybiBjdHggPyBjdHgudmVyc2lvbiA6IC0xOwogIH07CgogIENGRkluZGV4LnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoc3RyZWFtLCBwYXJlbnQpIHsKICAgIHZhciB2ZXJzaW9uID0gdGhpcy5nZXRDRkZWZXJzaW9uKHBhcmVudCk7CiAgICB2YXIgY291bnQgPSB2ZXJzaW9uID49IDIgPyBzdHJlYW0ucmVhZFVJbnQzMkJFKCkgOiBzdHJlYW0ucmVhZFVJbnQxNkJFKCk7CgogICAgaWYgKGNvdW50ID09PSAwKSB7CiAgICAgIHJldHVybiBbXTsKICAgIH0KCiAgICB2YXIgb2ZmU2l6ZSA9IHN0cmVhbS5yZWFkVUludDgoKTsKICAgIHZhciBvZmZzZXRUeXBlID0gdm9pZCAwOwogICAgaWYgKG9mZlNpemUgPT09IDEpIHsKICAgICAgb2Zmc2V0VHlwZSA9IHIudWludDg7CiAgICB9IGVsc2UgaWYgKG9mZlNpemUgPT09IDIpIHsKICAgICAgb2Zmc2V0VHlwZSA9IHIudWludDE2OwogICAgfSBlbHNlIGlmIChvZmZTaXplID09PSAzKSB7CiAgICAgIG9mZnNldFR5cGUgPSByLnVpbnQyNDsKICAgIH0gZWxzZSBpZiAob2ZmU2l6ZSA9PT0gNCkgewogICAgICBvZmZzZXRUeXBlID0gci51aW50MzI7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBvZmZzZXQgc2l6ZSBpbiBDRkZJbmRleDogIiArIG9mZlNpemUgKyAiICIgKyBzdHJlYW0ucG9zKTsKICAgIH0KCiAgICB2YXIgcmV0ID0gW107CiAgICB2YXIgc3RhcnRQb3MgPSBzdHJlYW0ucG9zICsgKGNvdW50ICsgMSkgKiBvZmZTaXplIC0gMTsKCiAgICB2YXIgc3RhcnQgPSBvZmZzZXRUeXBlLmRlY29kZShzdHJlYW0pOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgIHZhciBlbmQgPSBvZmZzZXRUeXBlLmRlY29kZShzdHJlYW0pOwoKICAgICAgaWYgKHRoaXMudHlwZSAhPSBudWxsKSB7CiAgICAgICAgdmFyIHBvcyA9IHN0cmVhbS5wb3M7CiAgICAgICAgc3RyZWFtLnBvcyA9IHN0YXJ0UG9zICsgc3RhcnQ7CgogICAgICAgIHBhcmVudC5sZW5ndGggPSBlbmQgLSBzdGFydDsKICAgICAgICByZXQucHVzaCh0aGlzLnR5cGUuZGVjb2RlKHN0cmVhbSwgcGFyZW50KSk7CiAgICAgICAgc3RyZWFtLnBvcyA9IHBvczsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXQucHVzaCh7CiAgICAgICAgICBvZmZzZXQ6IHN0YXJ0UG9zICsgc3RhcnQsCiAgICAgICAgICBsZW5ndGg6IGVuZCAtIHN0YXJ0CiAgICAgICAgfSk7CiAgICAgIH0KCiAgICAgIHN0YXJ0ID0gZW5kOwogICAgfQoKICAgIHN0cmVhbS5wb3MgPSBzdGFydFBvcyArIHN0YXJ0OwogICAgcmV0dXJuIHJldDsKICB9OwoKICBDRkZJbmRleC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uIHNpemUoYXJyLCBwYXJlbnQpIHsKICAgIHZhciBzaXplID0gMjsKICAgIGlmIChhcnIubGVuZ3RoID09PSAwKSB7CiAgICAgIHJldHVybiBzaXplOwogICAgfQoKICAgIHZhciB0eXBlID0gdGhpcy50eXBlIHx8IG5ldyByLkJ1ZmZlcigpOwoKICAgIC8vIGZpbmQgbWF4aW11bSBvZmZzZXQgdG8gZGV0bWluaW5lIG9mZnNldCB0eXBlCiAgICB2YXIgb2Zmc2V0ID0gMTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBpdGVtID0gYXJyW2ldOwogICAgICBvZmZzZXQgKz0gdHlwZS5zaXplKGl0ZW0sIHBhcmVudCk7CiAgICB9CgogICAgdmFyIG9mZnNldFR5cGUgPSB2b2lkIDA7CiAgICBpZiAob2Zmc2V0IDw9IDB4ZmYpIHsKICAgICAgb2Zmc2V0VHlwZSA9IHIudWludDg7CiAgICB9IGVsc2UgaWYgKG9mZnNldCA8PSAweGZmZmYpIHsKICAgICAgb2Zmc2V0VHlwZSA9IHIudWludDE2OwogICAgfSBlbHNlIGlmIChvZmZzZXQgPD0gMHhmZmZmZmYpIHsKICAgICAgb2Zmc2V0VHlwZSA9IHIudWludDI0OwogICAgfSBlbHNlIGlmIChvZmZzZXQgPD0gMHhmZmZmZmZmZikgewogICAgICBvZmZzZXRUeXBlID0gci51aW50MzI7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBvZmZzZXQgaW4gQ0ZGSW5kZXgiKTsKICAgIH0KCiAgICBzaXplICs9IDEgKyBvZmZzZXRUeXBlLnNpemUoKSAqIChhcnIubGVuZ3RoICsgMSk7CiAgICBzaXplICs9IG9mZnNldCAtIDE7CgogICAgcmV0dXJuIHNpemU7CiAgfTsKCiAgQ0ZGSW5kZXgucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShzdHJlYW0sIGFyciwgcGFyZW50KSB7CiAgICBzdHJlYW0ud3JpdGVVSW50MTZCRShhcnIubGVuZ3RoKTsKICAgIGlmIChhcnIubGVuZ3RoID09PSAwKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgdHlwZSA9IHRoaXMudHlwZSB8fCBuZXcgci5CdWZmZXIoKTsKCiAgICAvLyBmaW5kIG1heGltdW0gb2Zmc2V0IHRvIGRldG1pbmluZSBvZmZzZXQgdHlwZQogICAgdmFyIHNpemVzID0gW107CiAgICB2YXIgb2Zmc2V0ID0gMTsKICAgIGZvciAodmFyIF9pdGVyYXRvciA9IGFyciwgX2lzQXJyYXkgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvciksIF9pID0gMCwgX2l0ZXJhdG9yID0gX2lzQXJyYXkgPyBfaXRlcmF0b3IgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yKTs7KSB7CiAgICAgIHZhciBfcmVmOwoKICAgICAgaWYgKF9pc0FycmF5KSB7CiAgICAgICAgaWYgKF9pID49IF9pdGVyYXRvci5sZW5ndGgpIGJyZWFrOwogICAgICAgIF9yZWYgPSBfaXRlcmF0b3JbX2krK107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2kgPSBfaXRlcmF0b3IubmV4dCgpOwogICAgICAgIGlmIChfaS5kb25lKSBicmVhazsKICAgICAgICBfcmVmID0gX2kudmFsdWU7CiAgICAgIH0KCiAgICAgIHZhciBpdGVtID0gX3JlZjsKCiAgICAgIHZhciBzID0gdHlwZS5zaXplKGl0ZW0sIHBhcmVudCk7CiAgICAgIHNpemVzLnB1c2gocyk7CiAgICAgIG9mZnNldCArPSBzOwogICAgfQoKICAgIHZhciBvZmZzZXRUeXBlID0gdm9pZCAwOwogICAgaWYgKG9mZnNldCA8PSAweGZmKSB7CiAgICAgIG9mZnNldFR5cGUgPSByLnVpbnQ4OwogICAgfSBlbHNlIGlmIChvZmZzZXQgPD0gMHhmZmZmKSB7CiAgICAgIG9mZnNldFR5cGUgPSByLnVpbnQxNjsKICAgIH0gZWxzZSBpZiAob2Zmc2V0IDw9IDB4ZmZmZmZmKSB7CiAgICAgIG9mZnNldFR5cGUgPSByLnVpbnQyNDsKICAgIH0gZWxzZSBpZiAob2Zmc2V0IDw9IDB4ZmZmZmZmZmYpIHsKICAgICAgb2Zmc2V0VHlwZSA9IHIudWludDMyOwogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgb2Zmc2V0IGluIENGRkluZGV4Iik7CiAgICB9CgogICAgLy8gd3JpdGUgb2Zmc2V0IHNpemUKICAgIHN0cmVhbS53cml0ZVVJbnQ4KG9mZnNldFR5cGUuc2l6ZSgpKTsKCiAgICAvLyB3cml0ZSBlbGVtZW50cwogICAgb2Zmc2V0ID0gMTsKICAgIG9mZnNldFR5cGUuZW5jb2RlKHN0cmVhbSwgb2Zmc2V0KTsKCiAgICBmb3IgKHZhciBfaXRlcmF0b3IyID0gc2l6ZXMsIF9pc0FycmF5MiA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMiksIF9pMiA9IDAsIF9pdGVyYXRvcjIgPSBfaXNBcnJheTIgPyBfaXRlcmF0b3IyIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjIpOzspIHsKICAgICAgdmFyIF9yZWYyOwoKICAgICAgaWYgKF9pc0FycmF5MikgewogICAgICAgIGlmIChfaTIgPj0gX2l0ZXJhdG9yMi5sZW5ndGgpIGJyZWFrOwogICAgICAgIF9yZWYyID0gX2l0ZXJhdG9yMltfaTIrK107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2kyID0gX2l0ZXJhdG9yMi5uZXh0KCk7CiAgICAgICAgaWYgKF9pMi5kb25lKSBicmVhazsKICAgICAgICBfcmVmMiA9IF9pMi52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIHNpemUgPSBfcmVmMjsKCiAgICAgIG9mZnNldCArPSBzaXplOwogICAgICBvZmZzZXRUeXBlLmVuY29kZShzdHJlYW0sIG9mZnNldCk7CiAgICB9CgogICAgZm9yICh2YXIgX2l0ZXJhdG9yMyA9IGFyciwgX2lzQXJyYXkzID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IzKSwgX2kzID0gMCwgX2l0ZXJhdG9yMyA9IF9pc0FycmF5MyA/IF9pdGVyYXRvcjMgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMyk7OykgewogICAgICB2YXIgX3JlZjM7CgogICAgICBpZiAoX2lzQXJyYXkzKSB7CiAgICAgICAgaWYgKF9pMyA+PSBfaXRlcmF0b3IzLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZjMgPSBfaXRlcmF0b3IzW19pMysrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaTMgPSBfaXRlcmF0b3IzLm5leHQoKTsKICAgICAgICBpZiAoX2kzLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYzID0gX2kzLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgX2l0ZW0gPSBfcmVmMzsKCiAgICAgIHR5cGUuZW5jb2RlKHN0cmVhbSwgX2l0ZW0sIHBhcmVudCk7CiAgICB9CgogICAgcmV0dXJuOwogIH07CgogIHJldHVybiBDRkZJbmRleDsKfSgpOwoKdmFyIEZMT0FUX0VPRiA9IDB4ZjsKdmFyIEZMT0FUX0xPT0tVUCA9IFsnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsICcuJywgJ0UnLCAnRS0nLCBudWxsLCAnLSddOwoKdmFyIEZMT0FUX0VOQ09ERV9MT09LVVAgPSB7CiAgJy4nOiAxMCwKICAnRSc6IDExLAogICdFLSc6IDEyLAogICctJzogMTQKfTsKCnZhciBDRkZPcGVyYW5kID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIENGRk9wZXJhbmQoKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ0ZGT3BlcmFuZCk7CiAgfQoKICBDRkZPcGVyYW5kLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShzdHJlYW0sIHZhbHVlKSB7CiAgICBpZiAoMzIgPD0gdmFsdWUgJiYgdmFsdWUgPD0gMjQ2KSB7CiAgICAgIHJldHVybiB2YWx1ZSAtIDEzOTsKICAgIH0KCiAgICBpZiAoMjQ3IDw9IHZhbHVlICYmIHZhbHVlIDw9IDI1MCkgewogICAgICByZXR1cm4gKHZhbHVlIC0gMjQ3KSAqIDI1NiArIHN0cmVhbS5yZWFkVUludDgoKSArIDEwODsKICAgIH0KCiAgICBpZiAoMjUxIDw9IHZhbHVlICYmIHZhbHVlIDw9IDI1NCkgewogICAgICByZXR1cm4gLSh2YWx1ZSAtIDI1MSkgKiAyNTYgLSBzdHJlYW0ucmVhZFVJbnQ4KCkgLSAxMDg7CiAgICB9CgogICAgaWYgKHZhbHVlID09PSAyOCkgewogICAgICByZXR1cm4gc3RyZWFtLnJlYWRJbnQxNkJFKCk7CiAgICB9CgogICAgaWYgKHZhbHVlID09PSAyOSkgewogICAgICByZXR1cm4gc3RyZWFtLnJlYWRJbnQzMkJFKCk7CiAgICB9CgogICAgaWYgKHZhbHVlID09PSAzMCkgewogICAgICB2YXIgc3RyID0gJyc7CiAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgdmFyIGIgPSBzdHJlYW0ucmVhZFVJbnQ4KCk7CgogICAgICAgIHZhciBuMSA9IGIgPj4gNDsKICAgICAgICBpZiAobjEgPT09IEZMT0FUX0VPRikgewogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHN0ciArPSBGTE9BVF9MT09LVVBbbjFdOwoKICAgICAgICB2YXIgbjIgPSBiICYgMTU7CiAgICAgICAgaWYgKG4yID09PSBGTE9BVF9FT0YpIHsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBzdHIgKz0gRkxPQVRfTE9PS1VQW24yXTsKICAgICAgfQoKICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoc3RyKTsKICAgIH0KCiAgICByZXR1cm4gbnVsbDsKICB9OwoKICBDRkZPcGVyYW5kLnNpemUgPSBmdW5jdGlvbiBzaXplKHZhbHVlKSB7CiAgICAvLyBpZiB0aGUgdmFsdWUgbmVlZHMgdG8gYmUgZm9yY2VkIHRvIHRoZSBsYXJnZXN0IHNpemUgKDMyIGJpdCkKICAgIC8vIGUuZy4gZm9yIHVua25vd24gcG9pbnRlcnMsIHNldCB0byAzMjc2OAogICAgaWYgKHZhbHVlLmZvcmNlTGFyZ2UpIHsKICAgICAgdmFsdWUgPSAzMjc2ODsKICAgIH0KCiAgICBpZiAoKHZhbHVlIHwgMCkgIT09IHZhbHVlKSB7CiAgICAgIC8vIGZsb2F0aW5nIHBvaW50CiAgICAgIHZhciBzdHIgPSAnJyArIHZhbHVlOwogICAgICByZXR1cm4gMSArIE1hdGguY2VpbCgoc3RyLmxlbmd0aCArIDEpIC8gMik7CiAgICB9IGVsc2UgaWYgKC0xMDcgPD0gdmFsdWUgJiYgdmFsdWUgPD0gMTA3KSB7CiAgICAgIHJldHVybiAxOwogICAgfSBlbHNlIGlmICgxMDggPD0gdmFsdWUgJiYgdmFsdWUgPD0gMTEzMSB8fCAtMTEzMSA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSAtMTA4KSB7CiAgICAgIHJldHVybiAyOwogICAgfSBlbHNlIGlmICgtMzI3NjggPD0gdmFsdWUgJiYgdmFsdWUgPD0gMzI3NjcpIHsKICAgICAgcmV0dXJuIDM7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gNTsKICAgIH0KICB9OwoKICBDRkZPcGVyYW5kLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShzdHJlYW0sIHZhbHVlKSB7CiAgICAvLyBpZiB0aGUgdmFsdWUgbmVlZHMgdG8gYmUgZm9yY2VkIHRvIHRoZSBsYXJnZXN0IHNpemUgKDMyIGJpdCkKICAgIC8vIGUuZy4gZm9yIHVua25vd24gcG9pbnRlcnMsIHNhdmUgdGhlIG9sZCB2YWx1ZSBhbmQgc2V0IHRvIDMyNzY4CiAgICB2YXIgdmFsID0gTnVtYmVyKHZhbHVlKTsKCiAgICBpZiAodmFsdWUuZm9yY2VMYXJnZSkgewogICAgICBzdHJlYW0ud3JpdGVVSW50OCgyOSk7CiAgICAgIHJldHVybiBzdHJlYW0ud3JpdGVJbnQzMkJFKHZhbCk7CiAgICB9IGVsc2UgaWYgKCh2YWwgfCAwKSAhPT0gdmFsKSB7CiAgICAgIC8vIGZsb2F0aW5nIHBvaW50CiAgICAgIHN0cmVhbS53cml0ZVVJbnQ4KDMwKTsKCiAgICAgIHZhciBzdHIgPSAnJyArIHZhbDsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpICs9IDIpIHsKICAgICAgICB2YXIgYzEgPSBzdHJbaV07CiAgICAgICAgdmFyIG4xID0gRkxPQVRfRU5DT0RFX0xPT0tVUFtjMV0gfHwgK2MxOwoKICAgICAgICBpZiAoaSA9PT0gc3RyLmxlbmd0aCAtIDEpIHsKICAgICAgICAgIHZhciBuMiA9IEZMT0FUX0VPRjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIGMyID0gc3RyW2kgKyAxXTsKICAgICAgICAgIHZhciBuMiA9IEZMT0FUX0VOQ09ERV9MT09LVVBbYzJdIHx8ICtjMjsKICAgICAgICB9CgogICAgICAgIHN0cmVhbS53cml0ZVVJbnQ4KG4xIDw8IDQgfCBuMiAmIDE1KTsKICAgICAgfQoKICAgICAgaWYgKG4yICE9PSBGTE9BVF9FT0YpIHsKICAgICAgICByZXR1cm4gc3RyZWFtLndyaXRlVUludDgoRkxPQVRfRU9GIDw8IDQpOwogICAgICB9CiAgICB9IGVsc2UgaWYgKC0xMDcgPD0gdmFsICYmIHZhbCA8PSAxMDcpIHsKICAgICAgcmV0dXJuIHN0cmVhbS53cml0ZVVJbnQ4KHZhbCArIDEzOSk7CiAgICB9IGVsc2UgaWYgKDEwOCA8PSB2YWwgJiYgdmFsIDw9IDExMzEpIHsKICAgICAgdmFsIC09IDEwODsKICAgICAgc3RyZWFtLndyaXRlVUludDgoKHZhbCA+PiA4KSArIDI0Nyk7CiAgICAgIHJldHVybiBzdHJlYW0ud3JpdGVVSW50OCh2YWwgJiAweGZmKTsKICAgIH0gZWxzZSBpZiAoLTExMzEgPD0gdmFsICYmIHZhbCA8PSAtMTA4KSB7CiAgICAgIHZhbCA9IC12YWwgLSAxMDg7CiAgICAgIHN0cmVhbS53cml0ZVVJbnQ4KCh2YWwgPj4gOCkgKyAyNTEpOwogICAgICByZXR1cm4gc3RyZWFtLndyaXRlVUludDgodmFsICYgMHhmZik7CiAgICB9IGVsc2UgaWYgKC0zMjc2OCA8PSB2YWwgJiYgdmFsIDw9IDMyNzY3KSB7CiAgICAgIHN0cmVhbS53cml0ZVVJbnQ4KDI4KTsKICAgICAgcmV0dXJuIHN0cmVhbS53cml0ZUludDE2QkUodmFsKTsKICAgIH0gZWxzZSB7CiAgICAgIHN0cmVhbS53cml0ZVVJbnQ4KDI5KTsKICAgICAgcmV0dXJuIHN0cmVhbS53cml0ZUludDMyQkUodmFsKTsKICAgIH0KICB9OwoKICByZXR1cm4gQ0ZGT3BlcmFuZDsKfSgpOwoKdmFyIENGRkRpY3QgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gQ0ZGRGljdCgpIHsKICAgIHZhciBvcHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IFtdOwoKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDRkZEaWN0KTsKCiAgICB0aGlzLm9wcyA9IG9wczsKICAgIHRoaXMuZmllbGRzID0ge307CiAgICBmb3IgKHZhciBfaXRlcmF0b3IgPSBvcHMsIF9pc0FycmF5ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IpLCBfaSA9IDAsIF9pdGVyYXRvciA9IF9pc0FycmF5ID8gX2l0ZXJhdG9yIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcik7OykgewogICAgICB2YXIgX3JlZjsKCiAgICAgIGlmIChfaXNBcnJheSkgewogICAgICAgIGlmIChfaSA+PSBfaXRlcmF0b3IubGVuZ3RoKSBicmVhazsKICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICB9IGVsc2UgewogICAgICAgIF9pID0gX2l0ZXJhdG9yLm5leHQoKTsKICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgX3JlZiA9IF9pLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgZmllbGQgPSBfcmVmOwoKICAgICAgdmFyIGtleSA9IEFycmF5LmlzQXJyYXkoZmllbGRbMF0pID8gZmllbGRbMF1bMF0gPDwgOCB8IGZpZWxkWzBdWzFdIDogZmllbGRbMF07CiAgICAgIHRoaXMuZmllbGRzW2tleV0gPSBmaWVsZDsKICAgIH0KICB9CgogIENGRkRpY3QucHJvdG90eXBlLmRlY29kZU9wZXJhbmRzID0gZnVuY3Rpb24gZGVjb2RlT3BlcmFuZHModHlwZSwgc3RyZWFtLCByZXQsIG9wZXJhbmRzKSB7CiAgICB2YXIgX3RoaXMgPSB0aGlzOwoKICAgIGlmIChBcnJheS5pc0FycmF5KHR5cGUpKSB7CiAgICAgIHJldHVybiBvcGVyYW5kcy5tYXAoZnVuY3Rpb24gKG9wLCBpKSB7CiAgICAgICAgcmV0dXJuIF90aGlzLmRlY29kZU9wZXJhbmRzKHR5cGVbaV0sIHN0cmVhbSwgcmV0LCBbb3BdKTsKICAgICAgfSk7CiAgICB9IGVsc2UgaWYgKHR5cGUuZGVjb2RlICE9IG51bGwpIHsKICAgICAgcmV0dXJuIHR5cGUuZGVjb2RlKHN0cmVhbSwgcmV0LCBvcGVyYW5kcyk7CiAgICB9IGVsc2UgewogICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICBjYXNlICdudW1iZXInOgogICAgICAgIGNhc2UgJ29mZnNldCc6CiAgICAgICAgY2FzZSAnc2lkJzoKICAgICAgICAgIHJldHVybiBvcGVyYW5kc1swXTsKICAgICAgICBjYXNlICdib29sZWFuJzoKICAgICAgICAgIHJldHVybiAhIW9wZXJhbmRzWzBdOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICByZXR1cm4gb3BlcmFuZHM7CiAgICAgIH0KICAgIH0KICB9OwoKICBDRkZEaWN0LnByb3RvdHlwZS5lbmNvZGVPcGVyYW5kcyA9IGZ1bmN0aW9uIGVuY29kZU9wZXJhbmRzKHR5cGUsIHN0cmVhbSwgY3R4LCBvcGVyYW5kcykgewogICAgdmFyIF90aGlzMiA9IHRoaXM7CgogICAgaWYgKEFycmF5LmlzQXJyYXkodHlwZSkpIHsKICAgICAgcmV0dXJuIG9wZXJhbmRzLm1hcChmdW5jdGlvbiAob3AsIGkpIHsKICAgICAgICByZXR1cm4gX3RoaXMyLmVuY29kZU9wZXJhbmRzKHR5cGVbaV0sIHN0cmVhbSwgY3R4LCBvcClbMF07CiAgICAgIH0pOwogICAgfSBlbHNlIGlmICh0eXBlLmVuY29kZSAhPSBudWxsKSB7CiAgICAgIHJldHVybiB0eXBlLmVuY29kZShzdHJlYW0sIG9wZXJhbmRzLCBjdHgpOwogICAgfSBlbHNlIGlmICh0eXBlb2Ygb3BlcmFuZHMgPT09ICdudW1iZXInKSB7CiAgICAgIHJldHVybiBbb3BlcmFuZHNdOwogICAgfSBlbHNlIGlmICh0eXBlb2Ygb3BlcmFuZHMgPT09ICdib29sZWFuJykgewogICAgICByZXR1cm4gWytvcGVyYW5kc107CiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkob3BlcmFuZHMpKSB7CiAgICAgIHJldHVybiBvcGVyYW5kczsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBbb3BlcmFuZHNdOwogICAgfQogIH07CgogIENGRkRpY3QucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShzdHJlYW0sIHBhcmVudCkgewogICAgdmFyIGVuZCA9IHN0cmVhbS5wb3MgKyBwYXJlbnQubGVuZ3RoOwogICAgdmFyIHJldCA9IHt9OwogICAgdmFyIG9wZXJhbmRzID0gW107CgogICAgLy8gZGVmaW5lIGhpZGRlbiBwcm9wZXJ0aWVzCiAgICBfT2JqZWN0JGRlZmluZVByb3BlcnRpZXMocmV0LCB7CiAgICAgIHBhcmVudDogeyB2YWx1ZTogcGFyZW50IH0sCiAgICAgIF9zdGFydE9mZnNldDogeyB2YWx1ZTogc3RyZWFtLnBvcyB9CiAgICB9KTsKCiAgICAvLyBmaWxsIGluIGRlZmF1bHRzCiAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5maWVsZHMpIHsKICAgICAgdmFyIGZpZWxkID0gdGhpcy5maWVsZHNba2V5XTsKICAgICAgcmV0W2ZpZWxkWzFdXSA9IGZpZWxkWzNdOwogICAgfQoKICAgIHdoaWxlIChzdHJlYW0ucG9zIDwgZW5kKSB7CiAgICAgIHZhciBiID0gc3RyZWFtLnJlYWRVSW50OCgpOwogICAgICBpZiAoYiA8IDI4KSB7CiAgICAgICAgaWYgKGIgPT09IDEyKSB7CiAgICAgICAgICBiID0gYiA8PCA4IHwgc3RyZWFtLnJlYWRVSW50OCgpOwogICAgICAgIH0KCiAgICAgICAgdmFyIF9maWVsZCA9IHRoaXMuZmllbGRzW2JdOwogICAgICAgIGlmICghX2ZpZWxkKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gb3BlcmF0b3IgJyArIGIpOwogICAgICAgIH0KCiAgICAgICAgdmFyIHZhbCA9IHRoaXMuZGVjb2RlT3BlcmFuZHMoX2ZpZWxkWzJdLCBzdHJlYW0sIHJldCwgb3BlcmFuZHMpOwogICAgICAgIGlmICh2YWwgIT0gbnVsbCkgewogICAgICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIHJlc3RydWN0dXJlX3NyY191dGlscy5Qcm9wZXJ0eURlc2NyaXB0b3IpIHsKICAgICAgICAgICAgX09iamVjdCRkZWZpbmVQcm9wZXJ0eShyZXQsIF9maWVsZFsxXSwgdmFsKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldFtfZmllbGRbMV1dID0gdmFsOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgb3BlcmFuZHMgPSBbXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBvcGVyYW5kcy5wdXNoKENGRk9wZXJhbmQuZGVjb2RlKHN0cmVhbSwgYikpOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHJldDsKICB9OwoKICBDRkZEaWN0LnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24gc2l6ZShkaWN0LCBwYXJlbnQpIHsKICAgIHZhciBpbmNsdWRlUG9pbnRlcnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHRydWU7CgogICAgdmFyIGN0eCA9IHsKICAgICAgcGFyZW50OiBwYXJlbnQsCiAgICAgIHZhbDogZGljdCwKICAgICAgcG9pbnRlclNpemU6IDAsCiAgICAgIHN0YXJ0T2Zmc2V0OiBwYXJlbnQuc3RhcnRPZmZzZXQgfHwgMAogICAgfTsKCiAgICB2YXIgbGVuID0gMDsKCiAgICBmb3IgKHZhciBrIGluIHRoaXMuZmllbGRzKSB7CiAgICAgIHZhciBmaWVsZCA9IHRoaXMuZmllbGRzW2tdOwogICAgICB2YXIgdmFsID0gZGljdFtmaWVsZFsxXV07CiAgICAgIGlmICh2YWwgPT0gbnVsbCB8fCBpc0VxdWFsKHZhbCwgZmllbGRbM10pKSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KCiAgICAgIHZhciBvcGVyYW5kcyA9IHRoaXMuZW5jb2RlT3BlcmFuZHMoZmllbGRbMl0sIG51bGwsIGN0eCwgdmFsKTsKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMiA9IG9wZXJhbmRzLCBfaXNBcnJheTIgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjIpLCBfaTIgPSAwLCBfaXRlcmF0b3IyID0gX2lzQXJyYXkyID8gX2l0ZXJhdG9yMiA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IyKTs7KSB7CiAgICAgICAgdmFyIF9yZWYyOwoKICAgICAgICBpZiAoX2lzQXJyYXkyKSB7CiAgICAgICAgICBpZiAoX2kyID49IF9pdGVyYXRvcjIubGVuZ3RoKSBicmVhazsKICAgICAgICAgIF9yZWYyID0gX2l0ZXJhdG9yMltfaTIrK107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF9pMiA9IF9pdGVyYXRvcjIubmV4dCgpOwogICAgICAgICAgaWYgKF9pMi5kb25lKSBicmVhazsKICAgICAgICAgIF9yZWYyID0gX2kyLnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIG9wID0gX3JlZjI7CgogICAgICAgIGxlbiArPSBDRkZPcGVyYW5kLnNpemUob3ApOwogICAgICB9CgogICAgICB2YXIga2V5ID0gQXJyYXkuaXNBcnJheShmaWVsZFswXSkgPyBmaWVsZFswXSA6IFtmaWVsZFswXV07CiAgICAgIGxlbiArPSBrZXkubGVuZ3RoOwogICAgfQoKICAgIGlmIChpbmNsdWRlUG9pbnRlcnMpIHsKICAgICAgbGVuICs9IGN0eC5wb2ludGVyU2l6ZTsKICAgIH0KCiAgICByZXR1cm4gbGVuOwogIH07CgogIENGRkRpY3QucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShzdHJlYW0sIGRpY3QsIHBhcmVudCkgewogICAgdmFyIGN0eCA9IHsKICAgICAgcG9pbnRlcnM6IFtdLAogICAgICBzdGFydE9mZnNldDogc3RyZWFtLnBvcywKICAgICAgcGFyZW50OiBwYXJlbnQsCiAgICAgIHZhbDogZGljdCwKICAgICAgcG9pbnRlclNpemU6IDAKICAgIH07CgogICAgY3R4LnBvaW50ZXJPZmZzZXQgPSBzdHJlYW0ucG9zICsgdGhpcy5zaXplKGRpY3QsIGN0eCwgZmFsc2UpOwoKICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSB0aGlzLm9wcywgX2lzQXJyYXkzID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IzKSwgX2kzID0gMCwgX2l0ZXJhdG9yMyA9IF9pc0FycmF5MyA/IF9pdGVyYXRvcjMgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMyk7OykgewogICAgICB2YXIgX3JlZjM7CgogICAgICBpZiAoX2lzQXJyYXkzKSB7CiAgICAgICAgaWYgKF9pMyA+PSBfaXRlcmF0b3IzLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZjMgPSBfaXRlcmF0b3IzW19pMysrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaTMgPSBfaXRlcmF0b3IzLm5leHQoKTsKICAgICAgICBpZiAoX2kzLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYzID0gX2kzLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgZmllbGQgPSBfcmVmMzsKCiAgICAgIHZhciB2YWwgPSBkaWN0W2ZpZWxkWzFdXTsKICAgICAgaWYgKHZhbCA9PSBudWxsIHx8IGlzRXF1YWwodmFsLCBmaWVsZFszXSkpIHsKICAgICAgICBjb250aW51ZTsKICAgICAgfQoKICAgICAgdmFyIG9wZXJhbmRzID0gdGhpcy5lbmNvZGVPcGVyYW5kcyhmaWVsZFsyXSwgc3RyZWFtLCBjdHgsIHZhbCk7CiAgICAgIGZvciAodmFyIF9pdGVyYXRvcjQgPSBvcGVyYW5kcywgX2lzQXJyYXk0ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3I0KSwgX2k0ID0gMCwgX2l0ZXJhdG9yNCA9IF9pc0FycmF5NCA/IF9pdGVyYXRvcjQgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yNCk7OykgewogICAgICAgIHZhciBfcmVmNDsKCiAgICAgICAgaWYgKF9pc0FycmF5NCkgewogICAgICAgICAgaWYgKF9pNCA+PSBfaXRlcmF0b3I0Lmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmNCA9IF9pdGVyYXRvcjRbX2k0KytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaTQgPSBfaXRlcmF0b3I0Lm5leHQoKTsKICAgICAgICAgIGlmIChfaTQuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmNCA9IF9pNC52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBvcCA9IF9yZWY0OwoKICAgICAgICBDRkZPcGVyYW5kLmVuY29kZShzdHJlYW0sIG9wKTsKICAgICAgfQoKICAgICAgdmFyIGtleSA9IEFycmF5LmlzQXJyYXkoZmllbGRbMF0pID8gZmllbGRbMF0gOiBbZmllbGRbMF1dOwogICAgICBmb3IgKHZhciBfaXRlcmF0b3I1ID0ga2V5LCBfaXNBcnJheTUgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjUpLCBfaTUgPSAwLCBfaXRlcmF0b3I1ID0gX2lzQXJyYXk1ID8gX2l0ZXJhdG9yNSA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3I1KTs7KSB7CiAgICAgICAgdmFyIF9yZWY1OwoKICAgICAgICBpZiAoX2lzQXJyYXk1KSB7CiAgICAgICAgICBpZiAoX2k1ID49IF9pdGVyYXRvcjUubGVuZ3RoKSBicmVhazsKICAgICAgICAgIF9yZWY1ID0gX2l0ZXJhdG9yNVtfaTUrK107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF9pNSA9IF9pdGVyYXRvcjUubmV4dCgpOwogICAgICAgICAgaWYgKF9pNS5kb25lKSBicmVhazsKICAgICAgICAgIF9yZWY1ID0gX2k1LnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIF9vcCA9IF9yZWY1OwoKICAgICAgICBzdHJlYW0ud3JpdGVVSW50OChfb3ApOwogICAgICB9CiAgICB9CgogICAgdmFyIGkgPSAwOwogICAgd2hpbGUgKGkgPCBjdHgucG9pbnRlcnMubGVuZ3RoKSB7CiAgICAgIHZhciBwdHIgPSBjdHgucG9pbnRlcnNbaSsrXTsKICAgICAgcHRyLnR5cGUuZW5jb2RlKHN0cmVhbSwgcHRyLnZhbCwgcHRyLnBhcmVudCk7CiAgICB9CgogICAgcmV0dXJuOwogIH07CgogIHJldHVybiBDRkZEaWN0Owp9KCk7Cgp2YXIgQ0ZGUG9pbnRlciA9IGZ1bmN0aW9uIChfciRQb2ludGVyKSB7CiAgX2luaGVyaXRzKENGRlBvaW50ZXIsIF9yJFBvaW50ZXIpOwoKICBmdW5jdGlvbiBDRkZQb2ludGVyKHR5cGUpIHsKICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTsKCiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ0ZGUG9pbnRlcik7CgogICAgaWYgKG9wdGlvbnMudHlwZSA9PSBudWxsKSB7CiAgICAgIG9wdGlvbnMudHlwZSA9ICdnbG9iYWwnOwogICAgfQoKICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfciRQb2ludGVyLmNhbGwodGhpcywgbnVsbCwgdHlwZSwgb3B0aW9ucykpOwogIH0KCiAgQ0ZGUG9pbnRlci5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKHN0cmVhbSwgcGFyZW50LCBvcGVyYW5kcykgewogICAgdGhpcy5vZmZzZXRUeXBlID0gewogICAgICBkZWNvZGU6IGZ1bmN0aW9uIGRlY29kZSgpIHsKICAgICAgICByZXR1cm4gb3BlcmFuZHNbMF07CiAgICAgIH0KICAgIH07CgogICAgcmV0dXJuIF9yJFBvaW50ZXIucHJvdG90eXBlLmRlY29kZS5jYWxsKHRoaXMsIHN0cmVhbSwgcGFyZW50LCBvcGVyYW5kcyk7CiAgfTsKCiAgQ0ZGUG9pbnRlci5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKHN0cmVhbSwgdmFsdWUsIGN0eCkgewogICAgaWYgKCFzdHJlYW0pIHsKICAgICAgLy8gY29tcHV0ZSB0aGUgc2l6ZSAoc28gY3R4LnBvaW50ZXJTaXplIGlzIGNvcnJlY3QpCiAgICAgIHRoaXMub2Zmc2V0VHlwZSA9IHsKICAgICAgICBzaXplOiBmdW5jdGlvbiBzaXplKCkgewogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICB9OwoKICAgICAgdGhpcy5zaXplKHZhbHVlLCBjdHgpOwogICAgICByZXR1cm4gW25ldyBQdHIoMCldOwogICAgfQoKICAgIHZhciBwdHIgPSBudWxsOwogICAgdGhpcy5vZmZzZXRUeXBlID0gewogICAgICBlbmNvZGU6IGZ1bmN0aW9uIGVuY29kZShzdHJlYW0sIHZhbCkgewogICAgICAgIHJldHVybiBwdHIgPSB2YWw7CiAgICAgIH0KICAgIH07CgogICAgX3IkUG9pbnRlci5wcm90b3R5cGUuZW5jb2RlLmNhbGwodGhpcywgc3RyZWFtLCB2YWx1ZSwgY3R4KTsKICAgIHJldHVybiBbbmV3IFB0cihwdHIpXTsKICB9OwoKICByZXR1cm4gQ0ZGUG9pbnRlcjsKfShyLlBvaW50ZXIpOwoKdmFyIFB0ciA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBQdHIodmFsKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUHRyKTsKCiAgICB0aGlzLnZhbCA9IHZhbDsKICAgIHRoaXMuZm9yY2VMYXJnZSA9IHRydWU7CiAgfQoKICBQdHIucHJvdG90eXBlLnZhbHVlT2YgPSBmdW5jdGlvbiB2YWx1ZU9mKCkgewogICAgcmV0dXJuIHRoaXMudmFsOwogIH07CgogIHJldHVybiBQdHI7Cn0oKTsKCnZhciBDRkZCbGVuZE9wID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIENGRkJsZW5kT3AoKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ0ZGQmxlbmRPcCk7CiAgfQoKICBDRkZCbGVuZE9wLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShzdHJlYW0sIHBhcmVudCwgb3BlcmFuZHMpIHsKICAgIHZhciBudW1CbGVuZHMgPSBvcGVyYW5kcy5wb3AoKTsKCiAgICAvLyBUT0RPOiBhY3R1YWxseSBibGVuZC4gRm9yIG5vdyBqdXN0IGNvbnN1bWUgdGhlIGRlbHRhcwogICAgLy8gc2luY2Ugd2UgZG9uJ3QgdXNlIGFueSBvZiB0aGUgdmFsdWVzIGFueXdheS4KICAgIHdoaWxlIChvcGVyYW5kcy5sZW5ndGggPiBudW1CbGVuZHMpIHsKICAgICAgb3BlcmFuZHMucG9wKCk7CiAgICB9CiAgfTsKCiAgcmV0dXJuIENGRkJsZW5kT3A7Cn0oKTsKCnZhciBDRkZQcml2YXRlRGljdCA9IG5ldyBDRkZEaWN0KFsKLy8ga2V5ICAgICAgIG5hbWUgICAgICAgICAgICAgICAgICAgIHR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Cls2LCAnQmx1ZVZhbHVlcycsICdkZWx0YScsIG51bGxdLCBbNywgJ090aGVyQmx1ZXMnLCAnZGVsdGEnLCBudWxsXSwgWzgsICdGYW1pbHlCbHVlcycsICdkZWx0YScsIG51bGxdLCBbOSwgJ0ZhbWlseU90aGVyQmx1ZXMnLCAnZGVsdGEnLCBudWxsXSwgW1sxMiwgOV0sICdCbHVlU2NhbGUnLCAnbnVtYmVyJywgMC4wMzk2MjVdLCBbWzEyLCAxMF0sICdCbHVlU2hpZnQnLCAnbnVtYmVyJywgN10sIFtbMTIsIDExXSwgJ0JsdWVGdXp6JywgJ251bWJlcicsIDFdLCBbMTAsICdTdGRIVycsICdudW1iZXInLCBudWxsXSwgWzExLCAnU3RkVlcnLCAnbnVtYmVyJywgbnVsbF0sIFtbMTIsIDEyXSwgJ1N0ZW1TbmFwSCcsICdkZWx0YScsIG51bGxdLCBbWzEyLCAxM10sICdTdGVtU25hcFYnLCAnZGVsdGEnLCBudWxsXSwgW1sxMiwgMTRdLCAnRm9yY2VCb2xkJywgJ2Jvb2xlYW4nLCBmYWxzZV0sIFtbMTIsIDE3XSwgJ0xhbmd1YWdlR3JvdXAnLCAnbnVtYmVyJywgMF0sIFtbMTIsIDE4XSwgJ0V4cGFuc2lvbkZhY3RvcicsICdudW1iZXInLCAwLjA2XSwgW1sxMiwgMTldLCAnaW5pdGlhbFJhbmRvbVNlZWQnLCAnbnVtYmVyJywgMF0sIFsyMCwgJ2RlZmF1bHRXaWR0aFgnLCAnbnVtYmVyJywgMF0sIFsyMSwgJ25vbWluYWxXaWR0aFgnLCAnbnVtYmVyJywgMF0sIFsyMiwgJ3ZzaW5kZXgnLCAnbnVtYmVyJywgMF0sIFsyMywgJ2JsZW5kJywgQ0ZGQmxlbmRPcCwgbnVsbF0sIFsxOSwgJ1N1YnJzJywgbmV3IENGRlBvaW50ZXIobmV3IENGRkluZGV4KCksIHsgdHlwZTogJ2xvY2FsJyB9KSwgbnVsbF1dKTsKCi8vIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gQXBwZW5kaXggQSBvZiB0aGUgQ0ZGIHNwZWNpZmljYXRpb247IGRvCi8vIG5vdCBlZGl0LiBMZW5ndGggc2hvdWxkIGJlIDM5MS4KdmFyIHN0YW5kYXJkU3RyaW5ncyA9IFsiLm5vdGRlZiIsICJzcGFjZSIsICJleGNsYW0iLCAicXVvdGVkYmwiLCAibnVtYmVyc2lnbiIsICJkb2xsYXIiLCAicGVyY2VudCIsICJhbXBlcnNhbmQiLCAicXVvdGVyaWdodCIsICJwYXJlbmxlZnQiLCAicGFyZW5yaWdodCIsICJhc3RlcmlzayIsICJwbHVzIiwgImNvbW1hIiwgImh5cGhlbiIsICJwZXJpb2QiLCAic2xhc2giLCAiemVybyIsICJvbmUiLCAidHdvIiwgInRocmVlIiwgImZvdXIiLCAiZml2ZSIsICJzaXgiLCAic2V2ZW4iLCAiZWlnaHQiLCAibmluZSIsICJjb2xvbiIsICJzZW1pY29sb24iLCAibGVzcyIsICJlcXVhbCIsICJncmVhdGVyIiwgInF1ZXN0aW9uIiwgImF0IiwgIkEiLCAiQiIsICJDIiwgIkQiLCAiRSIsICJGIiwgIkciLCAiSCIsICJJIiwgIkoiLCAiSyIsICJMIiwgIk0iLCAiTiIsICJPIiwgIlAiLCAiUSIsICJSIiwgIlMiLCAiVCIsICJVIiwgIlYiLCAiVyIsICJYIiwgIlkiLCAiWiIsICJicmFja2V0bGVmdCIsICJiYWNrc2xhc2giLCAiYnJhY2tldHJpZ2h0IiwgImFzY2lpY2lyY3VtIiwgInVuZGVyc2NvcmUiLCAicXVvdGVsZWZ0IiwgImEiLCAiYiIsICJjIiwgImQiLCAiZSIsICJmIiwgImciLCAiaCIsICJpIiwgImoiLCAiayIsICJsIiwgIm0iLCAibiIsICJvIiwgInAiLCAicSIsICJyIiwgInMiLCAidCIsICJ1IiwgInYiLCAidyIsICJ4IiwgInkiLCAieiIsICJicmFjZWxlZnQiLCAiYmFyIiwgImJyYWNlcmlnaHQiLCAiYXNjaWl0aWxkZSIsICJleGNsYW1kb3duIiwgImNlbnQiLCAic3RlcmxpbmciLCAiZnJhY3Rpb24iLCAieWVuIiwgImZsb3JpbiIsICJzZWN0aW9uIiwgImN1cnJlbmN5IiwgInF1b3Rlc2luZ2xlIiwgInF1b3RlZGJsbGVmdCIsICJndWlsbGVtb3RsZWZ0IiwgImd1aWxzaW5nbGxlZnQiLCAiZ3VpbHNpbmdscmlnaHQiLCAiZmkiLCAiZmwiLCAiZW5kYXNoIiwgImRhZ2dlciIsICJkYWdnZXJkYmwiLCAicGVyaW9kY2VudGVyZWQiLCAicGFyYWdyYXBoIiwgImJ1bGxldCIsICJxdW90ZXNpbmdsYmFzZSIsICJxdW90ZWRibGJhc2UiLCAicXVvdGVkYmxyaWdodCIsICJndWlsbGVtb3RyaWdodCIsICJlbGxpcHNpcyIsICJwZXJ0aG91c2FuZCIsICJxdWVzdGlvbmRvd24iLCAiZ3JhdmUiLCAiYWN1dGUiLCAiY2lyY3VtZmxleCIsICJ0aWxkZSIsICJtYWNyb24iLCAiYnJldmUiLCAiZG90YWNjZW50IiwgImRpZXJlc2lzIiwgInJpbmciLCAiY2VkaWxsYSIsICJodW5nYXJ1bWxhdXQiLCAib2dvbmVrIiwgImNhcm9uIiwgImVtZGFzaCIsICJBRSIsICJvcmRmZW1pbmluZSIsICJMc2xhc2giLCAiT3NsYXNoIiwgIk9FIiwgIm9yZG1hc2N1bGluZSIsICJhZSIsICJkb3RsZXNzaSIsICJsc2xhc2giLCAib3NsYXNoIiwgIm9lIiwgImdlcm1hbmRibHMiLCAib25lc3VwZXJpb3IiLCAibG9naWNhbG5vdCIsICJtdSIsICJ0cmFkZW1hcmsiLCAiRXRoIiwgIm9uZWhhbGYiLCAicGx1c21pbnVzIiwgIlRob3JuIiwgIm9uZXF1YXJ0ZXIiLCAiZGl2aWRlIiwgImJyb2tlbmJhciIsICJkZWdyZWUiLCAidGhvcm4iLCAidGhyZWVxdWFydGVycyIsICJ0d29zdXBlcmlvciIsICJyZWdpc3RlcmVkIiwgIm1pbnVzIiwgImV0aCIsICJtdWx0aXBseSIsICJ0aHJlZXN1cGVyaW9yIiwgImNvcHlyaWdodCIsICJBYWN1dGUiLCAiQWNpcmN1bWZsZXgiLCAiQWRpZXJlc2lzIiwgIkFncmF2ZSIsICJBcmluZyIsICJBdGlsZGUiLCAiQ2NlZGlsbGEiLCAiRWFjdXRlIiwgIkVjaXJjdW1mbGV4IiwgIkVkaWVyZXNpcyIsICJFZ3JhdmUiLCAiSWFjdXRlIiwgIkljaXJjdW1mbGV4IiwgIklkaWVyZXNpcyIsICJJZ3JhdmUiLCAiTnRpbGRlIiwgIk9hY3V0ZSIsICJPY2lyY3VtZmxleCIsICJPZGllcmVzaXMiLCAiT2dyYXZlIiwgIk90aWxkZSIsICJTY2Fyb24iLCAiVWFjdXRlIiwgIlVjaXJjdW1mbGV4IiwgIlVkaWVyZXNpcyIsICJVZ3JhdmUiLCAiWWFjdXRlIiwgIllkaWVyZXNpcyIsICJaY2Fyb24iLCAiYWFjdXRlIiwgImFjaXJjdW1mbGV4IiwgImFkaWVyZXNpcyIsICJhZ3JhdmUiLCAiYXJpbmciLCAiYXRpbGRlIiwgImNjZWRpbGxhIiwgImVhY3V0ZSIsICJlY2lyY3VtZmxleCIsICJlZGllcmVzaXMiLCAiZWdyYXZlIiwgImlhY3V0ZSIsICJpY2lyY3VtZmxleCIsICJpZGllcmVzaXMiLCAiaWdyYXZlIiwgIm50aWxkZSIsICJvYWN1dGUiLCAib2NpcmN1bWZsZXgiLCAib2RpZXJlc2lzIiwgIm9ncmF2ZSIsICJvdGlsZGUiLCAic2Nhcm9uIiwgInVhY3V0ZSIsICJ1Y2lyY3VtZmxleCIsICJ1ZGllcmVzaXMiLCAidWdyYXZlIiwgInlhY3V0ZSIsICJ5ZGllcmVzaXMiLCAiemNhcm9uIiwgImV4Y2xhbXNtYWxsIiwgIkh1bmdhcnVtbGF1dHNtYWxsIiwgImRvbGxhcm9sZHN0eWxlIiwgImRvbGxhcnN1cGVyaW9yIiwgImFtcGVyc2FuZHNtYWxsIiwgIkFjdXRlc21hbGwiLCAicGFyZW5sZWZ0c3VwZXJpb3IiLCAicGFyZW5yaWdodHN1cGVyaW9yIiwgInR3b2RvdGVubGVhZGVyIiwgIm9uZWRvdGVubGVhZGVyIiwgInplcm9vbGRzdHlsZSIsICJvbmVvbGRzdHlsZSIsICJ0d29vbGRzdHlsZSIsICJ0aHJlZW9sZHN0eWxlIiwgImZvdXJvbGRzdHlsZSIsICJmaXZlb2xkc3R5bGUiLCAic2l4b2xkc3R5bGUiLCAic2V2ZW5vbGRzdHlsZSIsICJlaWdodG9sZHN0eWxlIiwgIm5pbmVvbGRzdHlsZSIsICJjb21tYXN1cGVyaW9yIiwgInRocmVlcXVhcnRlcnNlbWRhc2giLCAicGVyaW9kc3VwZXJpb3IiLCAicXVlc3Rpb25zbWFsbCIsICJhc3VwZXJpb3IiLCAiYnN1cGVyaW9yIiwgImNlbnRzdXBlcmlvciIsICJkc3VwZXJpb3IiLCAiZXN1cGVyaW9yIiwgImlzdXBlcmlvciIsICJsc3VwZXJpb3IiLCAibXN1cGVyaW9yIiwgIm5zdXBlcmlvciIsICJvc3VwZXJpb3IiLCAicnN1cGVyaW9yIiwgInNzdXBlcmlvciIsICJ0c3VwZXJpb3IiLCAiZmYiLCAiZmZpIiwgImZmbCIsICJwYXJlbmxlZnRpbmZlcmlvciIsICJwYXJlbnJpZ2h0aW5mZXJpb3IiLCAiQ2lyY3VtZmxleHNtYWxsIiwgImh5cGhlbnN1cGVyaW9yIiwgIkdyYXZlc21hbGwiLCAiQXNtYWxsIiwgIkJzbWFsbCIsICJDc21hbGwiLCAiRHNtYWxsIiwgIkVzbWFsbCIsICJGc21hbGwiLCAiR3NtYWxsIiwgIkhzbWFsbCIsICJJc21hbGwiLCAiSnNtYWxsIiwgIktzbWFsbCIsICJMc21hbGwiLCAiTXNtYWxsIiwgIk5zbWFsbCIsICJPc21hbGwiLCAiUHNtYWxsIiwgIlFzbWFsbCIsICJSc21hbGwiLCAiU3NtYWxsIiwgIlRzbWFsbCIsICJVc21hbGwiLCAiVnNtYWxsIiwgIldzbWFsbCIsICJYc21hbGwiLCAiWXNtYWxsIiwgIlpzbWFsbCIsICJjb2xvbm1vbmV0YXJ5IiwgIm9uZWZpdHRlZCIsICJydXBpYWgiLCAiVGlsZGVzbWFsbCIsICJleGNsYW1kb3duc21hbGwiLCAiY2VudG9sZHN0eWxlIiwgIkxzbGFzaHNtYWxsIiwgIlNjYXJvbnNtYWxsIiwgIlpjYXJvbnNtYWxsIiwgIkRpZXJlc2lzc21hbGwiLCAiQnJldmVzbWFsbCIsICJDYXJvbnNtYWxsIiwgIkRvdGFjY2VudHNtYWxsIiwgIk1hY3JvbnNtYWxsIiwgImZpZ3VyZWRhc2giLCAiaHlwaGVuaW5mZXJpb3IiLCAiT2dvbmVrc21hbGwiLCAiUmluZ3NtYWxsIiwgIkNlZGlsbGFzbWFsbCIsICJxdWVzdGlvbmRvd25zbWFsbCIsICJvbmVlaWdodGgiLCAidGhyZWVlaWdodGhzIiwgImZpdmVlaWdodGhzIiwgInNldmVuZWlnaHRocyIsICJvbmV0aGlyZCIsICJ0d290aGlyZHMiLCAiemVyb3N1cGVyaW9yIiwgImZvdXJzdXBlcmlvciIsICJmaXZlc3VwZXJpb3IiLCAic2l4c3VwZXJpb3IiLCAic2V2ZW5zdXBlcmlvciIsICJlaWdodHN1cGVyaW9yIiwgIm5pbmVzdXBlcmlvciIsICJ6ZXJvaW5mZXJpb3IiLCAib25laW5mZXJpb3IiLCAidHdvaW5mZXJpb3IiLCAidGhyZWVpbmZlcmlvciIsICJmb3VyaW5mZXJpb3IiLCAiZml2ZWluZmVyaW9yIiwgInNpeGluZmVyaW9yIiwgInNldmVuaW5mZXJpb3IiLCAiZWlnaHRpbmZlcmlvciIsICJuaW5laW5mZXJpb3IiLCAiY2VudGluZmVyaW9yIiwgImRvbGxhcmluZmVyaW9yIiwgInBlcmlvZGluZmVyaW9yIiwgImNvbW1haW5mZXJpb3IiLCAiQWdyYXZlc21hbGwiLCAiQWFjdXRlc21hbGwiLCAiQWNpcmN1bWZsZXhzbWFsbCIsICJBdGlsZGVzbWFsbCIsICJBZGllcmVzaXNzbWFsbCIsICJBcmluZ3NtYWxsIiwgIkFFc21hbGwiLCAiQ2NlZGlsbGFzbWFsbCIsICJFZ3JhdmVzbWFsbCIsICJFYWN1dGVzbWFsbCIsICJFY2lyY3VtZmxleHNtYWxsIiwgIkVkaWVyZXNpc3NtYWxsIiwgIklncmF2ZXNtYWxsIiwgIklhY3V0ZXNtYWxsIiwgIkljaXJjdW1mbGV4c21hbGwiLCAiSWRpZXJlc2lzc21hbGwiLCAiRXRoc21hbGwiLCAiTnRpbGRlc21hbGwiLCAiT2dyYXZlc21hbGwiLCAiT2FjdXRlc21hbGwiLCAiT2NpcmN1bWZsZXhzbWFsbCIsICJPdGlsZGVzbWFsbCIsICJPZGllcmVzaXNzbWFsbCIsICJPRXNtYWxsIiwgIk9zbGFzaHNtYWxsIiwgIlVncmF2ZXNtYWxsIiwgIlVhY3V0ZXNtYWxsIiwgIlVjaXJjdW1mbGV4c21hbGwiLCAiVWRpZXJlc2lzc21hbGwiLCAiWWFjdXRlc21hbGwiLCAiVGhvcm5zbWFsbCIsICJZZGllcmVzaXNzbWFsbCIsICIwMDEuMDAwIiwgIjAwMS4wMDEiLCAiMDAxLjAwMiIsICIwMDEuMDAzIiwgIkJsYWNrIiwgIkJvbGQiLCAiQm9vayIsICJMaWdodCIsICJNZWRpdW0iLCAiUmVndWxhciIsICJSb21hbiIsICJTZW1pYm9sZCJdOwoKdmFyIFN0YW5kYXJkRW5jb2RpbmcgPSBbJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnc3BhY2UnLCAnZXhjbGFtJywgJ3F1b3RlZGJsJywgJ251bWJlcnNpZ24nLCAnZG9sbGFyJywgJ3BlcmNlbnQnLCAnYW1wZXJzYW5kJywgJ3F1b3RlcmlnaHQnLCAncGFyZW5sZWZ0JywgJ3BhcmVucmlnaHQnLCAnYXN0ZXJpc2snLCAncGx1cycsICdjb21tYScsICdoeXBoZW4nLCAncGVyaW9kJywgJ3NsYXNoJywgJ3plcm8nLCAnb25lJywgJ3R3bycsICd0aHJlZScsICdmb3VyJywgJ2ZpdmUnLCAnc2l4JywgJ3NldmVuJywgJ2VpZ2h0JywgJ25pbmUnLCAnY29sb24nLCAnc2VtaWNvbG9uJywgJ2xlc3MnLCAnZXF1YWwnLCAnZ3JlYXRlcicsICdxdWVzdGlvbicsICdhdCcsICdBJywgJ0InLCAnQycsICdEJywgJ0UnLCAnRicsICdHJywgJ0gnLCAnSScsICdKJywgJ0snLCAnTCcsICdNJywgJ04nLCAnTycsICdQJywgJ1EnLCAnUicsICdTJywgJ1QnLCAnVScsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onLCAnYnJhY2tldGxlZnQnLCAnYmFja3NsYXNoJywgJ2JyYWNrZXRyaWdodCcsICdhc2NpaWNpcmN1bScsICd1bmRlcnNjb3JlJywgJ3F1b3RlbGVmdCcsICdhJywgJ2InLCAnYycsICdkJywgJ2UnLCAnZicsICdnJywgJ2gnLCAnaScsICdqJywgJ2snLCAnbCcsICdtJywgJ24nLCAnbycsICdwJywgJ3EnLCAncicsICdzJywgJ3QnLCAndScsICd2JywgJ3cnLCAneCcsICd5JywgJ3onLCAnYnJhY2VsZWZ0JywgJ2JhcicsICdicmFjZXJpZ2h0JywgJ2FzY2lpdGlsZGUnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJ2V4Y2xhbWRvd24nLCAnY2VudCcsICdzdGVybGluZycsICdmcmFjdGlvbicsICd5ZW4nLCAnZmxvcmluJywgJ3NlY3Rpb24nLCAnY3VycmVuY3knLCAncXVvdGVzaW5nbGUnLCAncXVvdGVkYmxsZWZ0JywgJ2d1aWxsZW1vdGxlZnQnLCAnZ3VpbHNpbmdsbGVmdCcsICdndWlsc2luZ2xyaWdodCcsICdmaScsICdmbCcsICcnLCAnZW5kYXNoJywgJ2RhZ2dlcicsICdkYWdnZXJkYmwnLCAncGVyaW9kY2VudGVyZWQnLCAnJywgJ3BhcmFncmFwaCcsICdidWxsZXQnLCAncXVvdGVzaW5nbGJhc2UnLCAncXVvdGVkYmxiYXNlJywgJ3F1b3RlZGJscmlnaHQnLCAnZ3VpbGxlbW90cmlnaHQnLCAnZWxsaXBzaXMnLCAncGVydGhvdXNhbmQnLCAnJywgJ3F1ZXN0aW9uZG93bicsICcnLCAnZ3JhdmUnLCAnYWN1dGUnLCAnY2lyY3VtZmxleCcsICd0aWxkZScsICdtYWNyb24nLCAnYnJldmUnLCAnZG90YWNjZW50JywgJ2RpZXJlc2lzJywgJycsICdyaW5nJywgJ2NlZGlsbGEnLCAnJywgJ2h1bmdhcnVtbGF1dCcsICdvZ29uZWsnLCAnY2Fyb24nLCAnZW1kYXNoJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICdBRScsICcnLCAnb3JkZmVtaW5pbmUnLCAnJywgJycsICcnLCAnJywgJ0xzbGFzaCcsICdPc2xhc2gnLCAnT0UnLCAnb3JkbWFzY3VsaW5lJywgJycsICcnLCAnJywgJycsICcnLCAnYWUnLCAnJywgJycsICcnLCAnZG90bGVzc2knLCAnJywgJycsICdsc2xhc2gnLCAnb3NsYXNoJywgJ29lJywgJ2dlcm1hbmRibHMnXTsKCnZhciBFeHBlcnRFbmNvZGluZyA9IFsnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICdzcGFjZScsICdleGNsYW1zbWFsbCcsICdIdW5nYXJ1bWxhdXRzbWFsbCcsICcnLCAnZG9sbGFyb2xkc3R5bGUnLCAnZG9sbGFyc3VwZXJpb3InLCAnYW1wZXJzYW5kc21hbGwnLCAnQWN1dGVzbWFsbCcsICdwYXJlbmxlZnRzdXBlcmlvcicsICdwYXJlbnJpZ2h0c3VwZXJpb3InLCAndHdvZG90ZW5sZWFkZXInLCAnb25lZG90ZW5sZWFkZXInLCAnY29tbWEnLCAnaHlwaGVuJywgJ3BlcmlvZCcsICdmcmFjdGlvbicsICd6ZXJvb2xkc3R5bGUnLCAnb25lb2xkc3R5bGUnLCAndHdvb2xkc3R5bGUnLCAndGhyZWVvbGRzdHlsZScsICdmb3Vyb2xkc3R5bGUnLCAnZml2ZW9sZHN0eWxlJywgJ3NpeG9sZHN0eWxlJywgJ3NldmVub2xkc3R5bGUnLCAnZWlnaHRvbGRzdHlsZScsICduaW5lb2xkc3R5bGUnLCAnY29sb24nLCAnc2VtaWNvbG9uJywgJ2NvbW1hc3VwZXJpb3InLCAndGhyZWVxdWFydGVyc2VtZGFzaCcsICdwZXJpb2RzdXBlcmlvcicsICdxdWVzdGlvbnNtYWxsJywgJycsICdhc3VwZXJpb3InLCAnYnN1cGVyaW9yJywgJ2NlbnRzdXBlcmlvcicsICdkc3VwZXJpb3InLCAnZXN1cGVyaW9yJywgJycsICcnLCAnaXN1cGVyaW9yJywgJycsICcnLCAnbHN1cGVyaW9yJywgJ21zdXBlcmlvcicsICduc3VwZXJpb3InLCAnb3N1cGVyaW9yJywgJycsICcnLCAncnN1cGVyaW9yJywgJ3NzdXBlcmlvcicsICd0c3VwZXJpb3InLCAnJywgJ2ZmJywgJ2ZpJywgJ2ZsJywgJ2ZmaScsICdmZmwnLCAncGFyZW5sZWZ0aW5mZXJpb3InLCAnJywgJ3BhcmVucmlnaHRpbmZlcmlvcicsICdDaXJjdW1mbGV4c21hbGwnLCAnaHlwaGVuc3VwZXJpb3InLCAnR3JhdmVzbWFsbCcsICdBc21hbGwnLCAnQnNtYWxsJywgJ0NzbWFsbCcsICdEc21hbGwnLCAnRXNtYWxsJywgJ0ZzbWFsbCcsICdHc21hbGwnLCAnSHNtYWxsJywgJ0lzbWFsbCcsICdKc21hbGwnLCAnS3NtYWxsJywgJ0xzbWFsbCcsICdNc21hbGwnLCAnTnNtYWxsJywgJ09zbWFsbCcsICdQc21hbGwnLCAnUXNtYWxsJywgJ1JzbWFsbCcsICdTc21hbGwnLCAnVHNtYWxsJywgJ1VzbWFsbCcsICdWc21hbGwnLCAnV3NtYWxsJywgJ1hzbWFsbCcsICdZc21hbGwnLCAnWnNtYWxsJywgJ2NvbG9ubW9uZXRhcnknLCAnb25lZml0dGVkJywgJ3J1cGlhaCcsICdUaWxkZXNtYWxsJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICdleGNsYW1kb3duc21hbGwnLCAnY2VudG9sZHN0eWxlJywgJ0xzbGFzaHNtYWxsJywgJycsICcnLCAnU2Nhcm9uc21hbGwnLCAnWmNhcm9uc21hbGwnLCAnRGllcmVzaXNzbWFsbCcsICdCcmV2ZXNtYWxsJywgJ0Nhcm9uc21hbGwnLCAnJywgJ0RvdGFjY2VudHNtYWxsJywgJycsICcnLCAnTWFjcm9uc21hbGwnLCAnJywgJycsICdmaWd1cmVkYXNoJywgJ2h5cGhlbmluZmVyaW9yJywgJycsICcnLCAnT2dvbmVrc21hbGwnLCAnUmluZ3NtYWxsJywgJ0NlZGlsbGFzbWFsbCcsICcnLCAnJywgJycsICdvbmVxdWFydGVyJywgJ29uZWhhbGYnLCAndGhyZWVxdWFydGVycycsICdxdWVzdGlvbmRvd25zbWFsbCcsICdvbmVlaWdodGgnLCAndGhyZWVlaWdodGhzJywgJ2ZpdmVlaWdodGhzJywgJ3NldmVuZWlnaHRocycsICdvbmV0aGlyZCcsICd0d290aGlyZHMnLCAnJywgJycsICd6ZXJvc3VwZXJpb3InLCAnb25lc3VwZXJpb3InLCAndHdvc3VwZXJpb3InLCAndGhyZWVzdXBlcmlvcicsICdmb3Vyc3VwZXJpb3InLCAnZml2ZXN1cGVyaW9yJywgJ3NpeHN1cGVyaW9yJywgJ3NldmVuc3VwZXJpb3InLCAnZWlnaHRzdXBlcmlvcicsICduaW5lc3VwZXJpb3InLCAnemVyb2luZmVyaW9yJywgJ29uZWluZmVyaW9yJywgJ3R3b2luZmVyaW9yJywgJ3RocmVlaW5mZXJpb3InLCAnZm91cmluZmVyaW9yJywgJ2ZpdmVpbmZlcmlvcicsICdzaXhpbmZlcmlvcicsICdzZXZlbmluZmVyaW9yJywgJ2VpZ2h0aW5mZXJpb3InLCAnbmluZWluZmVyaW9yJywgJ2NlbnRpbmZlcmlvcicsICdkb2xsYXJpbmZlcmlvcicsICdwZXJpb2RpbmZlcmlvcicsICdjb21tYWluZmVyaW9yJywgJ0FncmF2ZXNtYWxsJywgJ0FhY3V0ZXNtYWxsJywgJ0FjaXJjdW1mbGV4c21hbGwnLCAnQXRpbGRlc21hbGwnLCAnQWRpZXJlc2lzc21hbGwnLCAnQXJpbmdzbWFsbCcsICdBRXNtYWxsJywgJ0NjZWRpbGxhc21hbGwnLCAnRWdyYXZlc21hbGwnLCAnRWFjdXRlc21hbGwnLCAnRWNpcmN1bWZsZXhzbWFsbCcsICdFZGllcmVzaXNzbWFsbCcsICdJZ3JhdmVzbWFsbCcsICdJYWN1dGVzbWFsbCcsICdJY2lyY3VtZmxleHNtYWxsJywgJ0lkaWVyZXNpc3NtYWxsJywgJ0V0aHNtYWxsJywgJ050aWxkZXNtYWxsJywgJ09ncmF2ZXNtYWxsJywgJ09hY3V0ZXNtYWxsJywgJ09jaXJjdW1mbGV4c21hbGwnLCAnT3RpbGRlc21hbGwnLCAnT2RpZXJlc2lzc21hbGwnLCAnT0VzbWFsbCcsICdPc2xhc2hzbWFsbCcsICdVZ3JhdmVzbWFsbCcsICdVYWN1dGVzbWFsbCcsICdVY2lyY3VtZmxleHNtYWxsJywgJ1VkaWVyZXNpc3NtYWxsJywgJ1lhY3V0ZXNtYWxsJywgJ1Rob3Juc21hbGwnLCAnWWRpZXJlc2lzc21hbGwnXTsKCnZhciBJU09BZG9iZUNoYXJzZXQgPSBbJy5ub3RkZWYnLCAnc3BhY2UnLCAnZXhjbGFtJywgJ3F1b3RlZGJsJywgJ251bWJlcnNpZ24nLCAnZG9sbGFyJywgJ3BlcmNlbnQnLCAnYW1wZXJzYW5kJywgJ3F1b3RlcmlnaHQnLCAncGFyZW5sZWZ0JywgJ3BhcmVucmlnaHQnLCAnYXN0ZXJpc2snLCAncGx1cycsICdjb21tYScsICdoeXBoZW4nLCAncGVyaW9kJywgJ3NsYXNoJywgJ3plcm8nLCAnb25lJywgJ3R3bycsICd0aHJlZScsICdmb3VyJywgJ2ZpdmUnLCAnc2l4JywgJ3NldmVuJywgJ2VpZ2h0JywgJ25pbmUnLCAnY29sb24nLCAnc2VtaWNvbG9uJywgJ2xlc3MnLCAnZXF1YWwnLCAnZ3JlYXRlcicsICdxdWVzdGlvbicsICdhdCcsICdBJywgJ0InLCAnQycsICdEJywgJ0UnLCAnRicsICdHJywgJ0gnLCAnSScsICdKJywgJ0snLCAnTCcsICdNJywgJ04nLCAnTycsICdQJywgJ1EnLCAnUicsICdTJywgJ1QnLCAnVScsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onLCAnYnJhY2tldGxlZnQnLCAnYmFja3NsYXNoJywgJ2JyYWNrZXRyaWdodCcsICdhc2NpaWNpcmN1bScsICd1bmRlcnNjb3JlJywgJ3F1b3RlbGVmdCcsICdhJywgJ2InLCAnYycsICdkJywgJ2UnLCAnZicsICdnJywgJ2gnLCAnaScsICdqJywgJ2snLCAnbCcsICdtJywgJ24nLCAnbycsICdwJywgJ3EnLCAncicsICdzJywgJ3QnLCAndScsICd2JywgJ3cnLCAneCcsICd5JywgJ3onLCAnYnJhY2VsZWZ0JywgJ2JhcicsICdicmFjZXJpZ2h0JywgJ2FzY2lpdGlsZGUnLCAnZXhjbGFtZG93bicsICdjZW50JywgJ3N0ZXJsaW5nJywgJ2ZyYWN0aW9uJywgJ3llbicsICdmbG9yaW4nLCAnc2VjdGlvbicsICdjdXJyZW5jeScsICdxdW90ZXNpbmdsZScsICdxdW90ZWRibGxlZnQnLCAnZ3VpbGxlbW90bGVmdCcsICdndWlsc2luZ2xsZWZ0JywgJ2d1aWxzaW5nbHJpZ2h0JywgJ2ZpJywgJ2ZsJywgJ2VuZGFzaCcsICdkYWdnZXInLCAnZGFnZ2VyZGJsJywgJ3BlcmlvZGNlbnRlcmVkJywgJ3BhcmFncmFwaCcsICdidWxsZXQnLCAncXVvdGVzaW5nbGJhc2UnLCAncXVvdGVkYmxiYXNlJywgJ3F1b3RlZGJscmlnaHQnLCAnZ3VpbGxlbW90cmlnaHQnLCAnZWxsaXBzaXMnLCAncGVydGhvdXNhbmQnLCAncXVlc3Rpb25kb3duJywgJ2dyYXZlJywgJ2FjdXRlJywgJ2NpcmN1bWZsZXgnLCAndGlsZGUnLCAnbWFjcm9uJywgJ2JyZXZlJywgJ2RvdGFjY2VudCcsICdkaWVyZXNpcycsICdyaW5nJywgJ2NlZGlsbGEnLCAnaHVuZ2FydW1sYXV0JywgJ29nb25laycsICdjYXJvbicsICdlbWRhc2gnLCAnQUUnLCAnb3JkZmVtaW5pbmUnLCAnTHNsYXNoJywgJ09zbGFzaCcsICdPRScsICdvcmRtYXNjdWxpbmUnLCAnYWUnLCAnZG90bGVzc2knLCAnbHNsYXNoJywgJ29zbGFzaCcsICdvZScsICdnZXJtYW5kYmxzJywgJ29uZXN1cGVyaW9yJywgJ2xvZ2ljYWxub3QnLCAnbXUnLCAndHJhZGVtYXJrJywgJ0V0aCcsICdvbmVoYWxmJywgJ3BsdXNtaW51cycsICdUaG9ybicsICdvbmVxdWFydGVyJywgJ2RpdmlkZScsICdicm9rZW5iYXInLCAnZGVncmVlJywgJ3Rob3JuJywgJ3RocmVlcXVhcnRlcnMnLCAndHdvc3VwZXJpb3InLCAncmVnaXN0ZXJlZCcsICdtaW51cycsICdldGgnLCAnbXVsdGlwbHknLCAndGhyZWVzdXBlcmlvcicsICdjb3B5cmlnaHQnLCAnQWFjdXRlJywgJ0FjaXJjdW1mbGV4JywgJ0FkaWVyZXNpcycsICdBZ3JhdmUnLCAnQXJpbmcnLCAnQXRpbGRlJywgJ0NjZWRpbGxhJywgJ0VhY3V0ZScsICdFY2lyY3VtZmxleCcsICdFZGllcmVzaXMnLCAnRWdyYXZlJywgJ0lhY3V0ZScsICdJY2lyY3VtZmxleCcsICdJZGllcmVzaXMnLCAnSWdyYXZlJywgJ050aWxkZScsICdPYWN1dGUnLCAnT2NpcmN1bWZsZXgnLCAnT2RpZXJlc2lzJywgJ09ncmF2ZScsICdPdGlsZGUnLCAnU2Nhcm9uJywgJ1VhY3V0ZScsICdVY2lyY3VtZmxleCcsICdVZGllcmVzaXMnLCAnVWdyYXZlJywgJ1lhY3V0ZScsICdZZGllcmVzaXMnLCAnWmNhcm9uJywgJ2FhY3V0ZScsICdhY2lyY3VtZmxleCcsICdhZGllcmVzaXMnLCAnYWdyYXZlJywgJ2FyaW5nJywgJ2F0aWxkZScsICdjY2VkaWxsYScsICdlYWN1dGUnLCAnZWNpcmN1bWZsZXgnLCAnZWRpZXJlc2lzJywgJ2VncmF2ZScsICdpYWN1dGUnLCAnaWNpcmN1bWZsZXgnLCAnaWRpZXJlc2lzJywgJ2lncmF2ZScsICdudGlsZGUnLCAnb2FjdXRlJywgJ29jaXJjdW1mbGV4JywgJ29kaWVyZXNpcycsICdvZ3JhdmUnLCAnb3RpbGRlJywgJ3NjYXJvbicsICd1YWN1dGUnLCAndWNpcmN1bWZsZXgnLCAndWRpZXJlc2lzJywgJ3VncmF2ZScsICd5YWN1dGUnLCAneWRpZXJlc2lzJywgJ3pjYXJvbiddOwoKdmFyIEV4cGVydENoYXJzZXQgPSBbJy5ub3RkZWYnLCAnc3BhY2UnLCAnZXhjbGFtc21hbGwnLCAnSHVuZ2FydW1sYXV0c21hbGwnLCAnZG9sbGFyb2xkc3R5bGUnLCAnZG9sbGFyc3VwZXJpb3InLCAnYW1wZXJzYW5kc21hbGwnLCAnQWN1dGVzbWFsbCcsICdwYXJlbmxlZnRzdXBlcmlvcicsICdwYXJlbnJpZ2h0c3VwZXJpb3InLCAndHdvZG90ZW5sZWFkZXInLCAnb25lZG90ZW5sZWFkZXInLCAnY29tbWEnLCAnaHlwaGVuJywgJ3BlcmlvZCcsICdmcmFjdGlvbicsICd6ZXJvb2xkc3R5bGUnLCAnb25lb2xkc3R5bGUnLCAndHdvb2xkc3R5bGUnLCAndGhyZWVvbGRzdHlsZScsICdmb3Vyb2xkc3R5bGUnLCAnZml2ZW9sZHN0eWxlJywgJ3NpeG9sZHN0eWxlJywgJ3NldmVub2xkc3R5bGUnLCAnZWlnaHRvbGRzdHlsZScsICduaW5lb2xkc3R5bGUnLCAnY29sb24nLCAnc2VtaWNvbG9uJywgJ2NvbW1hc3VwZXJpb3InLCAndGhyZWVxdWFydGVyc2VtZGFzaCcsICdwZXJpb2RzdXBlcmlvcicsICdxdWVzdGlvbnNtYWxsJywgJ2FzdXBlcmlvcicsICdic3VwZXJpb3InLCAnY2VudHN1cGVyaW9yJywgJ2RzdXBlcmlvcicsICdlc3VwZXJpb3InLCAnaXN1cGVyaW9yJywgJ2xzdXBlcmlvcicsICdtc3VwZXJpb3InLCAnbnN1cGVyaW9yJywgJ29zdXBlcmlvcicsICdyc3VwZXJpb3InLCAnc3N1cGVyaW9yJywgJ3RzdXBlcmlvcicsICdmZicsICdmaScsICdmbCcsICdmZmknLCAnZmZsJywgJ3BhcmVubGVmdGluZmVyaW9yJywgJ3BhcmVucmlnaHRpbmZlcmlvcicsICdDaXJjdW1mbGV4c21hbGwnLCAnaHlwaGVuc3VwZXJpb3InLCAnR3JhdmVzbWFsbCcsICdBc21hbGwnLCAnQnNtYWxsJywgJ0NzbWFsbCcsICdEc21hbGwnLCAnRXNtYWxsJywgJ0ZzbWFsbCcsICdHc21hbGwnLCAnSHNtYWxsJywgJ0lzbWFsbCcsICdKc21hbGwnLCAnS3NtYWxsJywgJ0xzbWFsbCcsICdNc21hbGwnLCAnTnNtYWxsJywgJ09zbWFsbCcsICdQc21hbGwnLCAnUXNtYWxsJywgJ1JzbWFsbCcsICdTc21hbGwnLCAnVHNtYWxsJywgJ1VzbWFsbCcsICdWc21hbGwnLCAnV3NtYWxsJywgJ1hzbWFsbCcsICdZc21hbGwnLCAnWnNtYWxsJywgJ2NvbG9ubW9uZXRhcnknLCAnb25lZml0dGVkJywgJ3J1cGlhaCcsICdUaWxkZXNtYWxsJywgJ2V4Y2xhbWRvd25zbWFsbCcsICdjZW50b2xkc3R5bGUnLCAnTHNsYXNoc21hbGwnLCAnU2Nhcm9uc21hbGwnLCAnWmNhcm9uc21hbGwnLCAnRGllcmVzaXNzbWFsbCcsICdCcmV2ZXNtYWxsJywgJ0Nhcm9uc21hbGwnLCAnRG90YWNjZW50c21hbGwnLCAnTWFjcm9uc21hbGwnLCAnZmlndXJlZGFzaCcsICdoeXBoZW5pbmZlcmlvcicsICdPZ29uZWtzbWFsbCcsICdSaW5nc21hbGwnLCAnQ2VkaWxsYXNtYWxsJywgJ29uZXF1YXJ0ZXInLCAnb25laGFsZicsICd0aHJlZXF1YXJ0ZXJzJywgJ3F1ZXN0aW9uZG93bnNtYWxsJywgJ29uZWVpZ2h0aCcsICd0aHJlZWVpZ2h0aHMnLCAnZml2ZWVpZ2h0aHMnLCAnc2V2ZW5laWdodGhzJywgJ29uZXRoaXJkJywgJ3R3b3RoaXJkcycsICd6ZXJvc3VwZXJpb3InLCAnb25lc3VwZXJpb3InLCAndHdvc3VwZXJpb3InLCAndGhyZWVzdXBlcmlvcicsICdmb3Vyc3VwZXJpb3InLCAnZml2ZXN1cGVyaW9yJywgJ3NpeHN1cGVyaW9yJywgJ3NldmVuc3VwZXJpb3InLCAnZWlnaHRzdXBlcmlvcicsICduaW5lc3VwZXJpb3InLCAnemVyb2luZmVyaW9yJywgJ29uZWluZmVyaW9yJywgJ3R3b2luZmVyaW9yJywgJ3RocmVlaW5mZXJpb3InLCAnZm91cmluZmVyaW9yJywgJ2ZpdmVpbmZlcmlvcicsICdzaXhpbmZlcmlvcicsICdzZXZlbmluZmVyaW9yJywgJ2VpZ2h0aW5mZXJpb3InLCAnbmluZWluZmVyaW9yJywgJ2NlbnRpbmZlcmlvcicsICdkb2xsYXJpbmZlcmlvcicsICdwZXJpb2RpbmZlcmlvcicsICdjb21tYWluZmVyaW9yJywgJ0FncmF2ZXNtYWxsJywgJ0FhY3V0ZXNtYWxsJywgJ0FjaXJjdW1mbGV4c21hbGwnLCAnQXRpbGRlc21hbGwnLCAnQWRpZXJlc2lzc21hbGwnLCAnQXJpbmdzbWFsbCcsICdBRXNtYWxsJywgJ0NjZWRpbGxhc21hbGwnLCAnRWdyYXZlc21hbGwnLCAnRWFjdXRlc21hbGwnLCAnRWNpcmN1bWZsZXhzbWFsbCcsICdFZGllcmVzaXNzbWFsbCcsICdJZ3JhdmVzbWFsbCcsICdJYWN1dGVzbWFsbCcsICdJY2lyY3VtZmxleHNtYWxsJywgJ0lkaWVyZXNpc3NtYWxsJywgJ0V0aHNtYWxsJywgJ050aWxkZXNtYWxsJywgJ09ncmF2ZXNtYWxsJywgJ09hY3V0ZXNtYWxsJywgJ09jaXJjdW1mbGV4c21hbGwnLCAnT3RpbGRlc21hbGwnLCAnT2RpZXJlc2lzc21hbGwnLCAnT0VzbWFsbCcsICdPc2xhc2hzbWFsbCcsICdVZ3JhdmVzbWFsbCcsICdVYWN1dGVzbWFsbCcsICdVY2lyY3VtZmxleHNtYWxsJywgJ1VkaWVyZXNpc3NtYWxsJywgJ1lhY3V0ZXNtYWxsJywgJ1Rob3Juc21hbGwnLCAnWWRpZXJlc2lzc21hbGwnXTsKCnZhciBFeHBlcnRTdWJzZXRDaGFyc2V0ID0gWycubm90ZGVmJywgJ3NwYWNlJywgJ2RvbGxhcm9sZHN0eWxlJywgJ2RvbGxhcnN1cGVyaW9yJywgJ3BhcmVubGVmdHN1cGVyaW9yJywgJ3BhcmVucmlnaHRzdXBlcmlvcicsICd0d29kb3RlbmxlYWRlcicsICdvbmVkb3RlbmxlYWRlcicsICdjb21tYScsICdoeXBoZW4nLCAncGVyaW9kJywgJ2ZyYWN0aW9uJywgJ3plcm9vbGRzdHlsZScsICdvbmVvbGRzdHlsZScsICd0d29vbGRzdHlsZScsICd0aHJlZW9sZHN0eWxlJywgJ2ZvdXJvbGRzdHlsZScsICdmaXZlb2xkc3R5bGUnLCAnc2l4b2xkc3R5bGUnLCAnc2V2ZW5vbGRzdHlsZScsICdlaWdodG9sZHN0eWxlJywgJ25pbmVvbGRzdHlsZScsICdjb2xvbicsICdzZW1pY29sb24nLCAnY29tbWFzdXBlcmlvcicsICd0aHJlZXF1YXJ0ZXJzZW1kYXNoJywgJ3BlcmlvZHN1cGVyaW9yJywgJ2FzdXBlcmlvcicsICdic3VwZXJpb3InLCAnY2VudHN1cGVyaW9yJywgJ2RzdXBlcmlvcicsICdlc3VwZXJpb3InLCAnaXN1cGVyaW9yJywgJ2xzdXBlcmlvcicsICdtc3VwZXJpb3InLCAnbnN1cGVyaW9yJywgJ29zdXBlcmlvcicsICdyc3VwZXJpb3InLCAnc3N1cGVyaW9yJywgJ3RzdXBlcmlvcicsICdmZicsICdmaScsICdmbCcsICdmZmknLCAnZmZsJywgJ3BhcmVubGVmdGluZmVyaW9yJywgJ3BhcmVucmlnaHRpbmZlcmlvcicsICdoeXBoZW5zdXBlcmlvcicsICdjb2xvbm1vbmV0YXJ5JywgJ29uZWZpdHRlZCcsICdydXBpYWgnLCAnY2VudG9sZHN0eWxlJywgJ2ZpZ3VyZWRhc2gnLCAnaHlwaGVuaW5mZXJpb3InLCAnb25lcXVhcnRlcicsICdvbmVoYWxmJywgJ3RocmVlcXVhcnRlcnMnLCAnb25lZWlnaHRoJywgJ3RocmVlZWlnaHRocycsICdmaXZlZWlnaHRocycsICdzZXZlbmVpZ2h0aHMnLCAnb25ldGhpcmQnLCAndHdvdGhpcmRzJywgJ3plcm9zdXBlcmlvcicsICdvbmVzdXBlcmlvcicsICd0d29zdXBlcmlvcicsICd0aHJlZXN1cGVyaW9yJywgJ2ZvdXJzdXBlcmlvcicsICdmaXZlc3VwZXJpb3InLCAnc2l4c3VwZXJpb3InLCAnc2V2ZW5zdXBlcmlvcicsICdlaWdodHN1cGVyaW9yJywgJ25pbmVzdXBlcmlvcicsICd6ZXJvaW5mZXJpb3InLCAnb25laW5mZXJpb3InLCAndHdvaW5mZXJpb3InLCAndGhyZWVpbmZlcmlvcicsICdmb3VyaW5mZXJpb3InLCAnZml2ZWluZmVyaW9yJywgJ3NpeGluZmVyaW9yJywgJ3NldmVuaW5mZXJpb3InLCAnZWlnaHRpbmZlcmlvcicsICduaW5laW5mZXJpb3InLCAnY2VudGluZmVyaW9yJywgJ2RvbGxhcmluZmVyaW9yJywgJ3BlcmlvZGluZmVyaW9yJywgJ2NvbW1haW5mZXJpb3InXTsKCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi8vIFNjcmlwdHMgYW5kIExhbmd1YWdlcyAjCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgp2YXIgTGFuZ1N5c1RhYmxlID0gbmV3IHIuU3RydWN0KHsKICByZXNlcnZlZDogbmV3IHIuUmVzZXJ2ZWQoci51aW50MTYpLAogIHJlcUZlYXR1cmVJbmRleDogci51aW50MTYsCiAgZmVhdHVyZUNvdW50OiByLnVpbnQxNiwKICBmZWF0dXJlSW5kZXhlczogbmV3IHIuQXJyYXkoci51aW50MTYsICdmZWF0dXJlQ291bnQnKQp9KTsKCnZhciBMYW5nU3lzUmVjb3JkID0gbmV3IHIuU3RydWN0KHsKICB0YWc6IG5ldyByLlN0cmluZyg0KSwKICBsYW5nU3lzOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBMYW5nU3lzVGFibGUsIHsgdHlwZTogJ3BhcmVudCcgfSkKfSk7Cgp2YXIgU2NyaXB0ID0gbmV3IHIuU3RydWN0KHsKICBkZWZhdWx0TGFuZ1N5czogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgTGFuZ1N5c1RhYmxlKSwKICBjb3VudDogci51aW50MTYsCiAgbGFuZ1N5c1JlY29yZHM6IG5ldyByLkFycmF5KExhbmdTeXNSZWNvcmQsICdjb3VudCcpCn0pOwoKdmFyIFNjcmlwdFJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgdGFnOiBuZXcgci5TdHJpbmcoNCksCiAgc2NyaXB0OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBTY3JpcHQsIHsgdHlwZTogJ3BhcmVudCcgfSkKfSk7Cgp2YXIgU2NyaXB0TGlzdCA9IG5ldyByLkFycmF5KFNjcmlwdFJlY29yZCwgci51aW50MTYpOwoKLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwovLyBGZWF0dXJlcyBhbmQgTG9va3VwcyAjCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnZhciBGZWF0dXJlID0gbmV3IHIuU3RydWN0KHsKICBmZWF0dXJlUGFyYW1zOiByLnVpbnQxNiwgLy8gcG9pbnRlcgogIGxvb2t1cENvdW50OiByLnVpbnQxNiwKICBsb29rdXBMaXN0SW5kZXhlczogbmV3IHIuQXJyYXkoci51aW50MTYsICdsb29rdXBDb3VudCcpCn0pOwoKdmFyIEZlYXR1cmVSZWNvcmQgPSBuZXcgci5TdHJ1Y3QoewogIHRhZzogbmV3IHIuU3RyaW5nKDQpLAogIGZlYXR1cmU6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIEZlYXR1cmUsIHsgdHlwZTogJ3BhcmVudCcgfSkKfSk7Cgp2YXIgRmVhdHVyZUxpc3QgPSBuZXcgci5BcnJheShGZWF0dXJlUmVjb3JkLCByLnVpbnQxNik7Cgp2YXIgTG9va3VwRmxhZ3MgPSBuZXcgci5TdHJ1Y3QoewogIG1hcmtBdHRhY2htZW50VHlwZTogci51aW50OCwKICBmbGFnczogbmV3IHIuQml0ZmllbGQoci51aW50OCwgWydyaWdodFRvTGVmdCcsICdpZ25vcmVCYXNlR2x5cGhzJywgJ2lnbm9yZUxpZ2F0dXJlcycsICdpZ25vcmVNYXJrcycsICd1c2VNYXJrRmlsdGVyaW5nU2V0J10pCn0pOwoKZnVuY3Rpb24gTG9va3VwTGlzdChTdWJUYWJsZSkgewogIHZhciBMb29rdXAgPSBuZXcgci5TdHJ1Y3QoewogICAgbG9va3VwVHlwZTogci51aW50MTYsCiAgICBmbGFnczogTG9va3VwRmxhZ3MsCiAgICBzdWJUYWJsZUNvdW50OiByLnVpbnQxNiwKICAgIHN1YlRhYmxlczogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgU3ViVGFibGUpLCAnc3ViVGFibGVDb3VudCcpLAogICAgbWFya0ZpbHRlcmluZ1NldDogbmV3IHIuT3B0aW9uYWwoci51aW50MTYsIGZ1bmN0aW9uICh0KSB7CiAgICAgIHJldHVybiB0LmZsYWdzLmZsYWdzLnVzZU1hcmtGaWx0ZXJpbmdTZXQ7CiAgICB9KQogIH0pOwoKICByZXR1cm4gbmV3IHIuTGF6eUFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIExvb2t1cCksIHIudWludDE2KTsKfQoKLy8jIyMjIyMjIyMjIyMjIyMjIwovLyBDb3ZlcmFnZSBUYWJsZSAjCi8vIyMjIyMjIyMjIyMjIyMjIyMKCnZhciBSYW5nZVJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgc3RhcnQ6IHIudWludDE2LAogIGVuZDogci51aW50MTYsCiAgc3RhcnRDb3ZlcmFnZUluZGV4OiByLnVpbnQxNgp9KTsKCnZhciBDb3ZlcmFnZSA9IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQxNiwgewogIDE6IHsKICAgIGdseXBoQ291bnQ6IHIudWludDE2LAogICAgZ2x5cGhzOiBuZXcgci5BcnJheShyLnVpbnQxNiwgJ2dseXBoQ291bnQnKQogIH0sCiAgMjogewogICAgcmFuZ2VDb3VudDogci51aW50MTYsCiAgICByYW5nZVJlY29yZHM6IG5ldyByLkFycmF5KFJhbmdlUmVjb3JkLCAncmFuZ2VDb3VudCcpCiAgfQp9KTsKCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwovLyBDbGFzcyBEZWZpbml0aW9uIFRhYmxlICMKLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgp2YXIgQ2xhc3NSYW5nZVJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgc3RhcnQ6IHIudWludDE2LAogIGVuZDogci51aW50MTYsCiAgY2xhc3M6IHIudWludDE2Cn0pOwoKdmFyIENsYXNzRGVmID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIudWludDE2LCB7CiAgMTogeyAvLyBDbGFzcyBhcnJheQogICAgc3RhcnRHbHlwaDogci51aW50MTYsCiAgICBnbHlwaENvdW50OiByLnVpbnQxNiwKICAgIGNsYXNzVmFsdWVBcnJheTogbmV3IHIuQXJyYXkoci51aW50MTYsICdnbHlwaENvdW50JykKICB9LAogIDI6IHsgLy8gQ2xhc3MgcmFuZ2VzCiAgICBjbGFzc1JhbmdlQ291bnQ6IHIudWludDE2LAogICAgY2xhc3NSYW5nZVJlY29yZDogbmV3IHIuQXJyYXkoQ2xhc3NSYW5nZVJlY29yZCwgJ2NsYXNzUmFuZ2VDb3VudCcpCiAgfQp9KTsKCi8vIyMjIyMjIyMjIyMjIyMjCi8vIERldmljZSBUYWJsZSAjCi8vIyMjIyMjIyMjIyMjIyMjCgp2YXIgRGV2aWNlID0gbmV3IHIuU3RydWN0KHsKICBhOiByLnVpbnQxNiwgLy8gc3RhcnRTaXplIGZvciBoaW50aW5nIERldmljZSwgb3V0ZXJJbmRleCBmb3IgVmFyaWF0aW9uSW5kZXgKICBiOiByLnVpbnQxNiwgLy8gZW5kU2l6ZSBmb3IgRGV2aWNlLCBpbm5lckluZGV4IGZvciBWYXJpYXRpb25JbmRleAogIGRlbHRhRm9ybWF0OiByLnVpbnQxNgp9KTsKCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi8vIENvbnRleHR1YWwgU3Vic3RpdHV0aW9uL1Bvc2l0aW9uaW5nIFRhYmxlcyAjCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgp2YXIgTG9va3VwUmVjb3JkID0gbmV3IHIuU3RydWN0KHsKICBzZXF1ZW5jZUluZGV4OiByLnVpbnQxNiwKICBsb29rdXBMaXN0SW5kZXg6IHIudWludDE2Cn0pOwoKdmFyIFJ1bGUgPSBuZXcgci5TdHJ1Y3QoewogIGdseXBoQ291bnQ6IHIudWludDE2LAogIGxvb2t1cENvdW50OiByLnVpbnQxNiwKICBpbnB1dDogbmV3IHIuQXJyYXkoci51aW50MTYsIGZ1bmN0aW9uICh0KSB7CiAgICByZXR1cm4gdC5nbHlwaENvdW50IC0gMTsKICB9KSwKICBsb29rdXBSZWNvcmRzOiBuZXcgci5BcnJheShMb29rdXBSZWNvcmQsICdsb29rdXBDb3VudCcpCn0pOwoKdmFyIFJ1bGVTZXQgPSBuZXcgci5BcnJheShuZXcgci5Qb2ludGVyKHIudWludDE2LCBSdWxlKSwgci51aW50MTYpOwoKdmFyIENsYXNzUnVsZSA9IG5ldyByLlN0cnVjdCh7CiAgZ2x5cGhDb3VudDogci51aW50MTYsCiAgbG9va3VwQ291bnQ6IHIudWludDE2LAogIGNsYXNzZXM6IG5ldyByLkFycmF5KHIudWludDE2LCBmdW5jdGlvbiAodCkgewogICAgcmV0dXJuIHQuZ2x5cGhDb3VudCAtIDE7CiAgfSksCiAgbG9va3VwUmVjb3JkczogbmV3IHIuQXJyYXkoTG9va3VwUmVjb3JkLCAnbG9va3VwQ291bnQnKQp9KTsKCnZhciBDbGFzc1NldCA9IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIENsYXNzUnVsZSksIHIudWludDE2KTsKCnZhciBDb250ZXh0ID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIudWludDE2LCB7CiAgMTogeyAvLyBTaW1wbGUgY29udGV4dAogICAgY292ZXJhZ2U6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENvdmVyYWdlKSwKICAgIHJ1bGVTZXRDb3VudDogci51aW50MTYsCiAgICBydWxlU2V0czogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgUnVsZVNldCksICdydWxlU2V0Q291bnQnKQogIH0sCiAgMjogeyAvLyBDbGFzcy1iYXNlZCBjb250ZXh0CiAgICBjb3ZlcmFnZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLAogICAgY2xhc3NEZWY6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENsYXNzRGVmKSwKICAgIGNsYXNzU2V0Q250OiByLnVpbnQxNiwKICAgIGNsYXNzU2V0OiBuZXcgci5BcnJheShuZXcgci5Qb2ludGVyKHIudWludDE2LCBDbGFzc1NldCksICdjbGFzc1NldENudCcpCiAgfSwKICAzOiB7CiAgICBnbHlwaENvdW50OiByLnVpbnQxNiwKICAgIGxvb2t1cENvdW50OiByLnVpbnQxNiwKICAgIGNvdmVyYWdlczogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLCAnZ2x5cGhDb3VudCcpLAogICAgbG9va3VwUmVjb3JkczogbmV3IHIuQXJyYXkoTG9va3VwUmVjb3JkLCAnbG9va3VwQ291bnQnKQogIH0KfSk7CgovLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwovLyBDaGFpbmluZyBDb250ZXh0dWFsIFN1YnN0aXR1dGlvbi9Qb3NpdGlvbmluZyBUYWJsZXMgIwovLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKdmFyIENoYWluUnVsZSA9IG5ldyByLlN0cnVjdCh7CiAgYmFja3RyYWNrR2x5cGhDb3VudDogci51aW50MTYsCiAgYmFja3RyYWNrOiBuZXcgci5BcnJheShyLnVpbnQxNiwgJ2JhY2t0cmFja0dseXBoQ291bnQnKSwKICBpbnB1dEdseXBoQ291bnQ6IHIudWludDE2LAogIGlucHV0OiBuZXcgci5BcnJheShyLnVpbnQxNiwgZnVuY3Rpb24gKHQpIHsKICAgIHJldHVybiB0LmlucHV0R2x5cGhDb3VudCAtIDE7CiAgfSksCiAgbG9va2FoZWFkR2x5cGhDb3VudDogci51aW50MTYsCiAgbG9va2FoZWFkOiBuZXcgci5BcnJheShyLnVpbnQxNiwgJ2xvb2thaGVhZEdseXBoQ291bnQnKSwKICBsb29rdXBDb3VudDogci51aW50MTYsCiAgbG9va3VwUmVjb3JkczogbmV3IHIuQXJyYXkoTG9va3VwUmVjb3JkLCAnbG9va3VwQ291bnQnKQp9KTsKCnZhciBDaGFpblJ1bGVTZXQgPSBuZXcgci5BcnJheShuZXcgci5Qb2ludGVyKHIudWludDE2LCBDaGFpblJ1bGUpLCByLnVpbnQxNik7Cgp2YXIgQ2hhaW5pbmdDb250ZXh0ID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIudWludDE2LCB7CiAgMTogeyAvLyBTaW1wbGUgY29udGV4dCBnbHlwaCBzdWJzdGl0dXRpb24KICAgIGNvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICBjaGFpbkNvdW50OiByLnVpbnQxNiwKICAgIGNoYWluUnVsZVNldHM6IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIENoYWluUnVsZVNldCksICdjaGFpbkNvdW50JykKICB9LAoKICAyOiB7IC8vIENsYXNzLWJhc2VkIGNoYWluaW5nIGNvbnRleHQKICAgIGNvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICBiYWNrdHJhY2tDbGFzc0RlZjogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ2xhc3NEZWYpLAogICAgaW5wdXRDbGFzc0RlZjogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ2xhc3NEZWYpLAogICAgbG9va2FoZWFkQ2xhc3NEZWY6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENsYXNzRGVmKSwKICAgIGNoYWluQ291bnQ6IHIudWludDE2LAogICAgY2hhaW5DbGFzc1NldDogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ2hhaW5SdWxlU2V0KSwgJ2NoYWluQ291bnQnKQogIH0sCgogIDM6IHsgLy8gQ292ZXJhZ2UtYmFzZWQgY2hhaW5pbmcgY29udGV4dAogICAgYmFja3RyYWNrR2x5cGhDb3VudDogci51aW50MTYsCiAgICBiYWNrdHJhY2tDb3ZlcmFnZTogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLCAnYmFja3RyYWNrR2x5cGhDb3VudCcpLAogICAgaW5wdXRHbHlwaENvdW50OiByLnVpbnQxNiwKICAgIGlucHV0Q292ZXJhZ2U6IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIENvdmVyYWdlKSwgJ2lucHV0R2x5cGhDb3VudCcpLAogICAgbG9va2FoZWFkR2x5cGhDb3VudDogci51aW50MTYsCiAgICBsb29rYWhlYWRDb3ZlcmFnZTogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLCAnbG9va2FoZWFkR2x5cGhDb3VudCcpLAogICAgbG9va3VwQ291bnQ6IHIudWludDE2LAogICAgbG9va3VwUmVjb3JkczogbmV3IHIuQXJyYXkoTG9va3VwUmVjb3JkLCAnbG9va3VwQ291bnQnKQogIH0KfSk7Cgp2YXIgXzsKCi8qKioqKioqKioqKioqKioqKioqCiAqIFZhcmlhdGlvbiBTdG9yZSAqCiAqKioqKioqKioqKioqKioqKioqLwoKdmFyIEYyRE9UMTQgPSBuZXcgci5GaXhlZCgxNiwgJ0JFJywgMTQpOwp2YXIgUmVnaW9uQXhpc0Nvb3JkaW5hdGVzID0gbmV3IHIuU3RydWN0KHsKICBzdGFydENvb3JkOiBGMkRPVDE0LAogIHBlYWtDb29yZDogRjJET1QxNCwKICBlbmRDb29yZDogRjJET1QxNAp9KTsKCnZhciBWYXJpYXRpb25SZWdpb25MaXN0ID0gbmV3IHIuU3RydWN0KHsKICBheGlzQ291bnQ6IHIudWludDE2LAogIHJlZ2lvbkNvdW50OiByLnVpbnQxNiwKICB2YXJpYXRpb25SZWdpb25zOiBuZXcgci5BcnJheShuZXcgci5BcnJheShSZWdpb25BeGlzQ29vcmRpbmF0ZXMsICdheGlzQ291bnQnKSwgJ3JlZ2lvbkNvdW50JykKfSk7Cgp2YXIgRGVsdGFTZXQgPSBuZXcgci5TdHJ1Y3QoewogIHNob3J0RGVsdGFzOiBuZXcgci5BcnJheShyLmludDE2LCBmdW5jdGlvbiAodCkgewogICAgcmV0dXJuIHQucGFyZW50LnNob3J0RGVsdGFDb3VudDsKICB9KSwKICByZWdpb25EZWx0YXM6IG5ldyByLkFycmF5KHIuaW50OCwgZnVuY3Rpb24gKHQpIHsKICAgIHJldHVybiB0LnBhcmVudC5yZWdpb25JbmRleENvdW50IC0gdC5wYXJlbnQuc2hvcnREZWx0YUNvdW50OwogIH0pLAogIGRlbHRhczogZnVuY3Rpb24gZGVsdGFzKHQpIHsKICAgIHJldHVybiB0LnNob3J0RGVsdGFzLmNvbmNhdCh0LnJlZ2lvbkRlbHRhcyk7CiAgfQp9KTsKCnZhciBJdGVtVmFyaWF0aW9uRGF0YSA9IG5ldyByLlN0cnVjdCh7CiAgaXRlbUNvdW50OiByLnVpbnQxNiwKICBzaG9ydERlbHRhQ291bnQ6IHIudWludDE2LAogIHJlZ2lvbkluZGV4Q291bnQ6IHIudWludDE2LAogIHJlZ2lvbkluZGV4ZXM6IG5ldyByLkFycmF5KHIudWludDE2LCAncmVnaW9uSW5kZXhDb3VudCcpLAogIGRlbHRhU2V0czogbmV3IHIuQXJyYXkoRGVsdGFTZXQsICdpdGVtQ291bnQnKQp9KTsKCnZhciBJdGVtVmFyaWF0aW9uU3RvcmUgPSBuZXcgci5TdHJ1Y3QoewogIGZvcm1hdDogci51aW50MTYsCiAgdmFyaWF0aW9uUmVnaW9uTGlzdDogbmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgVmFyaWF0aW9uUmVnaW9uTGlzdCksCiAgdmFyaWF0aW9uRGF0YUNvdW50OiByLnVpbnQxNiwKICBpdGVtVmFyaWF0aW9uRGF0YTogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgSXRlbVZhcmlhdGlvbkRhdGEpLCAndmFyaWF0aW9uRGF0YUNvdW50JykKfSk7CgovKioqKioqKioqKioqKioqKioqKioqKgogKiBGZWF0dXJlIFZhcmlhdGlvbnMgKgogKioqKioqKioqKioqKioqKioqKioqKi8KCnZhciBDb25kaXRpb25UYWJsZSA9IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQxNiwgewogIDE6IChfID0gewogICAgYXhpc0luZGV4OiByLnVpbnQxNgogIH0sIF9bJ2F4aXNJbmRleCddID0gci51aW50MTYsIF8uZmlsdGVyUmFuZ2VNaW5WYWx1ZSA9IEYyRE9UMTQsIF8uZmlsdGVyUmFuZ2VNYXhWYWx1ZSA9IEYyRE9UMTQsIF8pCn0pOwoKdmFyIENvbmRpdGlvblNldCA9IG5ldyByLlN0cnVjdCh7CiAgY29uZGl0aW9uQ291bnQ6IHIudWludDE2LAogIGNvbmRpdGlvblRhYmxlOiBuZXcgci5BcnJheShuZXcgci5Qb2ludGVyKHIudWludDMyLCBDb25kaXRpb25UYWJsZSksICdjb25kaXRpb25Db3VudCcpCn0pOwoKdmFyIEZlYXR1cmVUYWJsZVN1YnN0aXR1dGlvblJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgZmVhdHVyZUluZGV4OiByLnVpbnQxNiwKICBhbHRlcm5hdGVGZWF0dXJlVGFibGU6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIEZlYXR1cmUsIHsgdHlwZTogJ3BhcmVudCcgfSkKfSk7Cgp2YXIgRmVhdHVyZVRhYmxlU3Vic3RpdHV0aW9uID0gbmV3IHIuU3RydWN0KHsKICB2ZXJzaW9uOiByLmZpeGVkMzIsCiAgc3Vic3RpdHV0aW9uQ291bnQ6IHIudWludDE2LAogIHN1YnN0aXR1dGlvbnM6IG5ldyByLkFycmF5KEZlYXR1cmVUYWJsZVN1YnN0aXR1dGlvblJlY29yZCwgJ3N1YnN0aXR1dGlvbkNvdW50JykKfSk7Cgp2YXIgRmVhdHVyZVZhcmlhdGlvblJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgY29uZGl0aW9uU2V0OiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBDb25kaXRpb25TZXQsIHsgdHlwZTogJ3BhcmVudCcgfSksCiAgZmVhdHVyZVRhYmxlU3Vic3RpdHV0aW9uOiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBGZWF0dXJlVGFibGVTdWJzdGl0dXRpb24sIHsgdHlwZTogJ3BhcmVudCcgfSkKfSk7Cgp2YXIgRmVhdHVyZVZhcmlhdGlvbnMgPSBuZXcgci5TdHJ1Y3QoewogIG1ham9yVmVyc2lvbjogci51aW50MTYsCiAgbWlub3JWZXJzaW9uOiByLnVpbnQxNiwKICBmZWF0dXJlVmFyaWF0aW9uUmVjb3JkQ291bnQ6IHIudWludDMyLAogIGZlYXR1cmVWYXJpYXRpb25SZWNvcmRzOiBuZXcgci5BcnJheShGZWF0dXJlVmFyaWF0aW9uUmVjb3JkLCAnZmVhdHVyZVZhcmlhdGlvblJlY29yZENvdW50JykKfSk7CgovLyBDaGVja3MgaWYgYW4gb3BlcmFuZCBpcyBhbiBpbmRleCBvZiBhIHByZWRlZmluZWQgdmFsdWUsCi8vIG90aGVyd2lzZSBkZWxlZ2F0ZXMgdG8gdGhlIHByb3ZpZGVkIHR5cGUuCgp2YXIgUHJlZGVmaW5lZE9wID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIFByZWRlZmluZWRPcChwcmVkZWZpbmVkT3BzLCB0eXBlKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUHJlZGVmaW5lZE9wKTsKCiAgICB0aGlzLnByZWRlZmluZWRPcHMgPSBwcmVkZWZpbmVkT3BzOwogICAgdGhpcy50eXBlID0gdHlwZTsKICB9CgogIFByZWRlZmluZWRPcC5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKHN0cmVhbSwgcGFyZW50LCBvcGVyYW5kcykgewogICAgaWYgKHRoaXMucHJlZGVmaW5lZE9wc1tvcGVyYW5kc1swXV0pIHsKICAgICAgcmV0dXJuIHRoaXMucHJlZGVmaW5lZE9wc1tvcGVyYW5kc1swXV07CiAgICB9CgogICAgcmV0dXJuIHRoaXMudHlwZS5kZWNvZGUoc3RyZWFtLCBwYXJlbnQsIG9wZXJhbmRzKTsKICB9OwoKICBQcmVkZWZpbmVkT3AucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbiBzaXplKHZhbHVlLCBjdHgpIHsKICAgIHJldHVybiB0aGlzLnR5cGUuc2l6ZSh2YWx1ZSwgY3R4KTsKICB9OwoKICBQcmVkZWZpbmVkT3AucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShzdHJlYW0sIHZhbHVlLCBjdHgpIHsKICAgIHZhciBpbmRleCA9IHRoaXMucHJlZGVmaW5lZE9wcy5pbmRleE9mKHZhbHVlKTsKICAgIGlmIChpbmRleCAhPT0gLTEpIHsKICAgICAgcmV0dXJuIGluZGV4OwogICAgfQoKICAgIHJldHVybiB0aGlzLnR5cGUuZW5jb2RlKHN0cmVhbSwgdmFsdWUsIGN0eCk7CiAgfTsKCiAgcmV0dXJuIFByZWRlZmluZWRPcDsKfSgpOwoKdmFyIENGRkVuY29kaW5nVmVyc2lvbiA9IGZ1bmN0aW9uIChfciROdW1iZXIpIHsKICBfaW5oZXJpdHMoQ0ZGRW5jb2RpbmdWZXJzaW9uLCBfciROdW1iZXIpOwoKICBmdW5jdGlvbiBDRkZFbmNvZGluZ1ZlcnNpb24oKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ0ZGRW5jb2RpbmdWZXJzaW9uKTsKCiAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX3IkTnVtYmVyLmNhbGwodGhpcywgJ1VJbnQ4JykpOwogIH0KCiAgQ0ZGRW5jb2RpbmdWZXJzaW9uLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoc3RyZWFtKSB7CiAgICByZXR1cm4gci51aW50OC5kZWNvZGUoc3RyZWFtKSAmIDB4N2Y7CiAgfTsKCiAgcmV0dXJuIENGRkVuY29kaW5nVmVyc2lvbjsKfShyLk51bWJlcik7Cgp2YXIgUmFuZ2UxID0gbmV3IHIuU3RydWN0KHsKICBmaXJzdDogci51aW50MTYsCiAgbkxlZnQ6IHIudWludDgKfSk7Cgp2YXIgUmFuZ2UyID0gbmV3IHIuU3RydWN0KHsKICBmaXJzdDogci51aW50MTYsCiAgbkxlZnQ6IHIudWludDE2Cn0pOwoKdmFyIENGRkN1c3RvbUVuY29kaW5nID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KG5ldyBDRkZFbmNvZGluZ1ZlcnNpb24oKSwgewogIDA6IHsKICAgIG5Db2Rlczogci51aW50OCwKICAgIGNvZGVzOiBuZXcgci5BcnJheShyLnVpbnQ4LCAnbkNvZGVzJykKICB9LAoKICAxOiB7CiAgICBuUmFuZ2VzOiByLnVpbnQ4LAogICAgcmFuZ2VzOiBuZXcgci5BcnJheShSYW5nZTEsICduUmFuZ2VzJykKICB9CgogIC8vIFRPRE86IHN1cHBsZW1lbnQ/Cn0pOwoKdmFyIENGRkVuY29kaW5nID0gbmV3IFByZWRlZmluZWRPcChbU3RhbmRhcmRFbmNvZGluZywgRXhwZXJ0RW5jb2RpbmddLCBuZXcgQ0ZGUG9pbnRlcihDRkZDdXN0b21FbmNvZGluZywgeyBsYXp5OiB0cnVlIH0pKTsKCi8vIERlY29kZXMgYW4gYXJyYXkgb2YgcmFuZ2VzIHVudGlsIHRoZSB0b3RhbAovLyBsZW5ndGggaXMgZXF1YWwgdG8gdGhlIHByb3ZpZGVkIGxlbmd0aC4KCnZhciBSYW5nZUFycmF5ID0gZnVuY3Rpb24gKF9yJEFycmF5KSB7CiAgX2luaGVyaXRzKFJhbmdlQXJyYXksIF9yJEFycmF5KTsKCiAgZnVuY3Rpb24gUmFuZ2VBcnJheSgpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSYW5nZUFycmF5KTsKCiAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX3IkQXJyYXkuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7CiAgfQoKICBSYW5nZUFycmF5LnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoc3RyZWFtLCBwYXJlbnQpIHsKICAgIHZhciBsZW5ndGggPSByZXN0cnVjdHVyZV9zcmNfdXRpbHMucmVzb2x2ZUxlbmd0aCh0aGlzLmxlbmd0aCwgc3RyZWFtLCBwYXJlbnQpOwogICAgdmFyIGNvdW50ID0gMDsKICAgIHZhciByZXMgPSBbXTsKICAgIHdoaWxlIChjb3VudCA8IGxlbmd0aCkgewogICAgICB2YXIgcmFuZ2UgPSB0aGlzLnR5cGUuZGVjb2RlKHN0cmVhbSwgcGFyZW50KTsKICAgICAgcmFuZ2Uub2Zmc2V0ID0gY291bnQ7CiAgICAgIGNvdW50ICs9IHJhbmdlLm5MZWZ0ICsgMTsKICAgICAgcmVzLnB1c2gocmFuZ2UpOwogICAgfQoKICAgIHJldHVybiByZXM7CiAgfTsKCiAgcmV0dXJuIFJhbmdlQXJyYXk7Cn0oci5BcnJheSk7Cgp2YXIgQ0ZGQ3VzdG9tQ2hhcnNldCA9IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQ4LCB7CiAgMDogewogICAgZ2x5cGhzOiBuZXcgci5BcnJheShyLnVpbnQxNiwgZnVuY3Rpb24gKHQpIHsKICAgICAgcmV0dXJuIHQucGFyZW50LkNoYXJTdHJpbmdzLmxlbmd0aCAtIDE7CiAgICB9KQogIH0sCgogIDE6IHsKICAgIHJhbmdlczogbmV3IFJhbmdlQXJyYXkoUmFuZ2UxLCBmdW5jdGlvbiAodCkgewogICAgICByZXR1cm4gdC5wYXJlbnQuQ2hhclN0cmluZ3MubGVuZ3RoIC0gMTsKICAgIH0pCiAgfSwKCiAgMjogewogICAgcmFuZ2VzOiBuZXcgUmFuZ2VBcnJheShSYW5nZTIsIGZ1bmN0aW9uICh0KSB7CiAgICAgIHJldHVybiB0LnBhcmVudC5DaGFyU3RyaW5ncy5sZW5ndGggLSAxOwogICAgfSkKICB9Cn0pOwoKdmFyIENGRkNoYXJzZXQgPSBuZXcgUHJlZGVmaW5lZE9wKFtJU09BZG9iZUNoYXJzZXQsIEV4cGVydENoYXJzZXQsIEV4cGVydFN1YnNldENoYXJzZXRdLCBuZXcgQ0ZGUG9pbnRlcihDRkZDdXN0b21DaGFyc2V0LCB7IGxhenk6IHRydWUgfSkpOwoKdmFyIEZEUmFuZ2UzID0gbmV3IHIuU3RydWN0KHsKICBmaXJzdDogci51aW50MTYsCiAgZmQ6IHIudWludDgKfSk7Cgp2YXIgRkRSYW5nZTQgPSBuZXcgci5TdHJ1Y3QoewogIGZpcnN0OiByLnVpbnQzMiwKICBmZDogci51aW50MTYKfSk7Cgp2YXIgRkRTZWxlY3QgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3Qoci51aW50OCwgewogIDA6IHsKICAgIGZkczogbmV3IHIuQXJyYXkoci51aW50OCwgZnVuY3Rpb24gKHQpIHsKICAgICAgcmV0dXJuIHQucGFyZW50LkNoYXJTdHJpbmdzLmxlbmd0aDsKICAgIH0pCiAgfSwKCiAgMzogewogICAgblJhbmdlczogci51aW50MTYsCiAgICByYW5nZXM6IG5ldyByLkFycmF5KEZEUmFuZ2UzLCAnblJhbmdlcycpLAogICAgc2VudGluZWw6IHIudWludDE2CiAgfSwKCiAgNDogewogICAgblJhbmdlczogci51aW50MzIsCiAgICByYW5nZXM6IG5ldyByLkFycmF5KEZEUmFuZ2U0LCAnblJhbmdlcycpLAogICAgc2VudGluZWw6IHIudWludDMyCiAgfQp9KTsKCnZhciBwdHIgPSBuZXcgQ0ZGUG9pbnRlcihDRkZQcml2YXRlRGljdCk7Cgp2YXIgQ0ZGUHJpdmF0ZU9wID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIENGRlByaXZhdGVPcCgpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDRkZQcml2YXRlT3ApOwogIH0KCiAgQ0ZGUHJpdmF0ZU9wLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoc3RyZWFtLCBwYXJlbnQsIG9wZXJhbmRzKSB7CiAgICBwYXJlbnQubGVuZ3RoID0gb3BlcmFuZHNbMF07CiAgICByZXR1cm4gcHRyLmRlY29kZShzdHJlYW0sIHBhcmVudCwgW29wZXJhbmRzWzFdXSk7CiAgfTsKCiAgQ0ZGUHJpdmF0ZU9wLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24gc2l6ZShkaWN0LCBjdHgpIHsKICAgIHJldHVybiBbQ0ZGUHJpdmF0ZURpY3Quc2l6ZShkaWN0LCBjdHgsIGZhbHNlKSwgcHRyLnNpemUoZGljdCwgY3R4KVswXV07CiAgfTsKCiAgQ0ZGUHJpdmF0ZU9wLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoc3RyZWFtLCBkaWN0LCBjdHgpIHsKICAgIHJldHVybiBbQ0ZGUHJpdmF0ZURpY3Quc2l6ZShkaWN0LCBjdHgsIGZhbHNlKSwgcHRyLmVuY29kZShzdHJlYW0sIGRpY3QsIGN0eClbMF1dOwogIH07CgogIHJldHVybiBDRkZQcml2YXRlT3A7Cn0oKTsKCnZhciBGb250RGljdCA9IG5ldyBDRkZEaWN0KFsKLy8ga2V5ICAgICAgIG5hbWUgICAgICAgICAgICAgICAgICAgdHlwZShzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQKWzE4LCAnUHJpdmF0ZScsIG5ldyBDRkZQcml2YXRlT3AoKSwgbnVsbF0sIFtbMTIsIDM4XSwgJ0ZvbnROYW1lJywgJ3NpZCcsIG51bGxdXSk7Cgp2YXIgQ0ZGVG9wRGljdCA9IG5ldyBDRkZEaWN0KFsKLy8ga2V5ICAgICAgIG5hbWUgICAgICAgICAgICAgICAgICAgdHlwZShzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQKW1sxMiwgMzBdLCAnUk9TJywgWydzaWQnLCAnc2lkJywgJ251bWJlciddLCBudWxsXSwgWzAsICd2ZXJzaW9uJywgJ3NpZCcsIG51bGxdLCBbMSwgJ05vdGljZScsICdzaWQnLCBudWxsXSwgW1sxMiwgMF0sICdDb3B5cmlnaHQnLCAnc2lkJywgbnVsbF0sIFsyLCAnRnVsbE5hbWUnLCAnc2lkJywgbnVsbF0sIFszLCAnRmFtaWx5TmFtZScsICdzaWQnLCBudWxsXSwgWzQsICdXZWlnaHQnLCAnc2lkJywgbnVsbF0sIFtbMTIsIDFdLCAnaXNGaXhlZFBpdGNoJywgJ2Jvb2xlYW4nLCBmYWxzZV0sIFtbMTIsIDJdLCAnSXRhbGljQW5nbGUnLCAnbnVtYmVyJywgMF0sIFtbMTIsIDNdLCAnVW5kZXJsaW5lUG9zaXRpb24nLCAnbnVtYmVyJywgLTEwMF0sIFtbMTIsIDRdLCAnVW5kZXJsaW5lVGhpY2tuZXNzJywgJ251bWJlcicsIDUwXSwgW1sxMiwgNV0sICdQYWludFR5cGUnLCAnbnVtYmVyJywgMF0sIFtbMTIsIDZdLCAnQ2hhcnN0cmluZ1R5cGUnLCAnbnVtYmVyJywgMl0sIFtbMTIsIDddLCAnRm9udE1hdHJpeCcsICdhcnJheScsIFswLjAwMSwgMCwgMCwgMC4wMDEsIDAsIDBdXSwgWzEzLCAnVW5pcXVlSUQnLCAnbnVtYmVyJywgbnVsbF0sIFs1LCAnRm9udEJCb3gnLCAnYXJyYXknLCBbMCwgMCwgMCwgMF1dLCBbWzEyLCA4XSwgJ1N0cm9rZVdpZHRoJywgJ251bWJlcicsIDBdLCBbMTQsICdYVUlEJywgJ2FycmF5JywgbnVsbF0sIFsxNSwgJ2NoYXJzZXQnLCBDRkZDaGFyc2V0LCBJU09BZG9iZUNoYXJzZXRdLCBbMTYsICdFbmNvZGluZycsIENGRkVuY29kaW5nLCBTdGFuZGFyZEVuY29kaW5nXSwgWzE3LCAnQ2hhclN0cmluZ3MnLCBuZXcgQ0ZGUG9pbnRlcihuZXcgQ0ZGSW5kZXgoKSksIG51bGxdLCBbMTgsICdQcml2YXRlJywgbmV3IENGRlByaXZhdGVPcCgpLCBudWxsXSwgW1sxMiwgMjBdLCAnU3ludGhldGljQmFzZScsICdudW1iZXInLCBudWxsXSwgW1sxMiwgMjFdLCAnUG9zdFNjcmlwdCcsICdzaWQnLCBudWxsXSwgW1sxMiwgMjJdLCAnQmFzZUZvbnROYW1lJywgJ3NpZCcsIG51bGxdLCBbWzEyLCAyM10sICdCYXNlRm9udEJsZW5kJywgJ2RlbHRhJywgbnVsbF0sCgovLyBDSUQgZm9udCBzcGVjaWZpYwpbWzEyLCAzMV0sICdDSURGb250VmVyc2lvbicsICdudW1iZXInLCAwXSwgW1sxMiwgMzJdLCAnQ0lERm9udFJldmlzaW9uJywgJ251bWJlcicsIDBdLCBbWzEyLCAzM10sICdDSURGb250VHlwZScsICdudW1iZXInLCAwXSwgW1sxMiwgMzRdLCAnQ0lEQ291bnQnLCAnbnVtYmVyJywgODcyMF0sIFtbMTIsIDM1XSwgJ1VJREJhc2UnLCAnbnVtYmVyJywgbnVsbF0sIFtbMTIsIDM3XSwgJ0ZEU2VsZWN0JywgbmV3IENGRlBvaW50ZXIoRkRTZWxlY3QpLCBudWxsXSwgW1sxMiwgMzZdLCAnRkRBcnJheScsIG5ldyBDRkZQb2ludGVyKG5ldyBDRkZJbmRleChGb250RGljdCkpLCBudWxsXSwgW1sxMiwgMzhdLCAnRm9udE5hbWUnLCAnc2lkJywgbnVsbF1dKTsKCnZhciBWYXJpYXRpb25TdG9yZSA9IG5ldyByLlN0cnVjdCh7CiAgbGVuZ3RoOiByLnVpbnQxNiwKICBpdGVtVmFyaWF0aW9uU3RvcmU6IEl0ZW1WYXJpYXRpb25TdG9yZQp9KTsKCnZhciBDRkYyVG9wRGljdCA9IG5ldyBDRkZEaWN0KFtbWzEyLCA3XSwgJ0ZvbnRNYXRyaXgnLCAnYXJyYXknLCBbMC4wMDEsIDAsIDAsIDAuMDAxLCAwLCAwXV0sIFsxNywgJ0NoYXJTdHJpbmdzJywgbmV3IENGRlBvaW50ZXIobmV3IENGRkluZGV4KCkpLCBudWxsXSwgW1sxMiwgMzddLCAnRkRTZWxlY3QnLCBuZXcgQ0ZGUG9pbnRlcihGRFNlbGVjdCksIG51bGxdLCBbWzEyLCAzNl0sICdGREFycmF5JywgbmV3IENGRlBvaW50ZXIobmV3IENGRkluZGV4KEZvbnREaWN0KSksIG51bGxdLCBbMjQsICd2c3RvcmUnLCBuZXcgQ0ZGUG9pbnRlcihWYXJpYXRpb25TdG9yZSksIG51bGxdLCBbMjUsICdtYXhzdGFjaycsICdudW1iZXInLCAxOTNdXSk7Cgp2YXIgQ0ZGVG9wID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIuZml4ZWQxNiwgewogIDE6IHsKICAgIGhkclNpemU6IHIudWludDgsCiAgICBvZmZTaXplOiByLnVpbnQ4LAogICAgbmFtZUluZGV4OiBuZXcgQ0ZGSW5kZXgobmV3IHIuU3RyaW5nKCdsZW5ndGgnKSksCiAgICB0b3BEaWN0SW5kZXg6IG5ldyBDRkZJbmRleChDRkZUb3BEaWN0KSwKICAgIHN0cmluZ0luZGV4OiBuZXcgQ0ZGSW5kZXgobmV3IHIuU3RyaW5nKCdsZW5ndGgnKSksCiAgICBnbG9iYWxTdWJySW5kZXg6IG5ldyBDRkZJbmRleCgpCiAgfSwKCiAgMjogewogICAgaGRyU2l6ZTogci51aW50OCwKICAgIGxlbmd0aDogci51aW50MTYsCiAgICB0b3BEaWN0OiBDRkYyVG9wRGljdCwKICAgIGdsb2JhbFN1YnJJbmRleDogbmV3IENGRkluZGV4KCkKICB9Cn0pOwoKdmFyIENGRkZvbnQgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gQ0ZGRm9udChzdHJlYW0pIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDRkZGb250KTsKCiAgICB0aGlzLnN0cmVhbSA9IHN0cmVhbTsKICAgIHRoaXMuZGVjb2RlKCk7CiAgfQoKICBDRkZGb250LmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShzdHJlYW0pIHsKICAgIHJldHVybiBuZXcgQ0ZGRm9udChzdHJlYW0pOwogIH07CgogIENGRkZvbnQucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZSgpIHsKICAgIHZhciBzdGFydCA9IHRoaXMuc3RyZWFtLnBvczsKICAgIHZhciB0b3AgPSBDRkZUb3AuZGVjb2RlKHRoaXMuc3RyZWFtKTsKICAgIGZvciAodmFyIGtleSBpbiB0b3ApIHsKICAgICAgdmFyIHZhbCA9IHRvcFtrZXldOwogICAgICB0aGlzW2tleV0gPSB2YWw7CiAgICB9CgogICAgaWYgKHRoaXMudmVyc2lvbiA8IDIpIHsKICAgICAgaWYgKHRoaXMudG9wRGljdEluZGV4Lmxlbmd0aCAhPT0gMSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcigiT25seSBhIHNpbmdsZSBmb250IGlzIGFsbG93ZWQgaW4gQ0ZGIik7CiAgICAgIH0KCiAgICAgIHRoaXMudG9wRGljdCA9IHRoaXMudG9wRGljdEluZGV4WzBdOwogICAgfQoKICAgIHRoaXMuaXNDSURGb250ID0gdGhpcy50b3BEaWN0LlJPUyAhPSBudWxsOwogICAgcmV0dXJuIHRoaXM7CiAgfTsKCiAgQ0ZGRm9udC5wcm90b3R5cGUuc3RyaW5nID0gZnVuY3Rpb24gc3RyaW5nKHNpZCkgewogICAgaWYgKHRoaXMudmVyc2lvbiA+PSAyKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIGlmIChzaWQgPCBzdGFuZGFyZFN0cmluZ3MubGVuZ3RoKSB7CiAgICAgIHJldHVybiBzdGFuZGFyZFN0cmluZ3Nbc2lkXTsKICAgIH0KCiAgICByZXR1cm4gdGhpcy5zdHJpbmdJbmRleFtzaWQgLSBzdGFuZGFyZFN0cmluZ3MubGVuZ3RoXTsKICB9OwoKICBDRkZGb250LnByb3RvdHlwZS5nZXRDaGFyU3RyaW5nID0gZnVuY3Rpb24gZ2V0Q2hhclN0cmluZyhnbHlwaCkgewogICAgdGhpcy5zdHJlYW0ucG9zID0gdGhpcy50b3BEaWN0LkNoYXJTdHJpbmdzW2dseXBoXS5vZmZzZXQ7CiAgICByZXR1cm4gdGhpcy5zdHJlYW0ucmVhZEJ1ZmZlcih0aGlzLnRvcERpY3QuQ2hhclN0cmluZ3NbZ2x5cGhdLmxlbmd0aCk7CiAgfTsKCiAgQ0ZGRm9udC5wcm90b3R5cGUuZ2V0R2x5cGhOYW1lID0gZnVuY3Rpb24gZ2V0R2x5cGhOYW1lKGdpZCkgewogICAgLy8gQ0ZGMiBnbHlwaCBuYW1lcyBhcmUgaW4gdGhlIHBvc3QgdGFibGUuCiAgICBpZiAodGhpcy52ZXJzaW9uID49IDIpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLy8gQ0lELWtleWVkIGZvbnRzIGRvbid0IGhhdmUgZ2x5cGggbmFtZXMKICAgIGlmICh0aGlzLmlzQ0lERm9udCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICB2YXIgY2hhcnNldCA9IHRoaXMudG9wRGljdC5jaGFyc2V0OwoKICAgIGlmIChBcnJheS5pc0FycmF5KGNoYXJzZXQpKSB7CiAgICAgIHJldHVybiBjaGFyc2V0W2dpZF07CiAgICB9CgogICAgaWYgKGdpZCA9PT0gMCkgewogICAgICByZXR1cm4gJy5ub3RkZWYnOwogICAgfQoKICAgIGdpZCAtPSAxOwoKICAgIHN3aXRjaCAoY2hhcnNldC52ZXJzaW9uKSB7CiAgICAgIGNhc2UgMDoKICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmcoY2hhcnNldC5nbHlwaHNbZ2lkXSk7CgogICAgICBjYXNlIDE6CiAgICAgIGNhc2UgMjoKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzZXQucmFuZ2VzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgcmFuZ2UgPSBjaGFyc2V0LnJhbmdlc1tpXTsKICAgICAgICAgIGlmIChyYW5nZS5vZmZzZXQgPD0gZ2lkICYmIGdpZCA8PSByYW5nZS5vZmZzZXQgKyByYW5nZS5uTGVmdCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmcocmFuZ2UuZmlyc3QgKyAoZ2lkIC0gcmFuZ2Uub2Zmc2V0KSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGJyZWFrOwogICAgfQoKICAgIHJldHVybiBudWxsOwogIH07CgogIENGRkZvbnQucHJvdG90eXBlLmZkRm9yR2x5cGggPSBmdW5jdGlvbiBmZEZvckdseXBoKGdpZCkgewogICAgaWYgKCF0aGlzLnRvcERpY3QuRkRTZWxlY3QpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgc3dpdGNoICh0aGlzLnRvcERpY3QuRkRTZWxlY3QudmVyc2lvbikgewogICAgICBjYXNlIDA6CiAgICAgICAgcmV0dXJuIHRoaXMudG9wRGljdC5GRFNlbGVjdC5mZHNbZ2lkXTsKCiAgICAgIGNhc2UgMzoKICAgICAgY2FzZSA0OgogICAgICAgIHZhciByYW5nZXMgPSB0aGlzLnRvcERpY3QuRkRTZWxlY3QucmFuZ2VzOwoKICAgICAgICB2YXIgbG93ID0gMDsKICAgICAgICB2YXIgaGlnaCA9IHJhbmdlcy5sZW5ndGggLSAxOwoKICAgICAgICB3aGlsZSAobG93IDw9IGhpZ2gpIHsKICAgICAgICAgIHZhciBtaWQgPSBsb3cgKyBoaWdoID4+IDE7CgogICAgICAgICAgaWYgKGdpZCA8IHJhbmdlc1ttaWRdLmZpcnN0KSB7CiAgICAgICAgICAgIGhpZ2ggPSBtaWQgLSAxOwogICAgICAgICAgfSBlbHNlIGlmIChtaWQgPCBoaWdoICYmIGdpZCA+IHJhbmdlc1ttaWQgKyAxXS5maXJzdCkgewogICAgICAgICAgICBsb3cgPSBtaWQgKyAxOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHJhbmdlc1ttaWRdLmZkOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgZGVmYXVsdDoKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gRkRTZWxlY3QgdmVyc2lvbjogJyArIHRoaXMudG9wRGljdC5GRFNlbGVjdC52ZXJzaW9uKTsKICAgIH0KICB9OwoKICBDRkZGb250LnByb3RvdHlwZS5wcml2YXRlRGljdEZvckdseXBoID0gZnVuY3Rpb24gcHJpdmF0ZURpY3RGb3JHbHlwaChnaWQpIHsKICAgIGlmICh0aGlzLnRvcERpY3QuRkRTZWxlY3QpIHsKICAgICAgdmFyIGZkID0gdGhpcy5mZEZvckdseXBoKGdpZCk7CiAgICAgIGlmICh0aGlzLnRvcERpY3QuRkRBcnJheVtmZF0pIHsKICAgICAgICByZXR1cm4gdGhpcy50b3BEaWN0LkZEQXJyYXlbZmRdLlByaXZhdGU7CiAgICAgIH0KCiAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIGlmICh0aGlzLnZlcnNpb24gPCAyKSB7CiAgICAgIHJldHVybiB0aGlzLnRvcERpY3QuUHJpdmF0ZTsKICAgIH0KCiAgICByZXR1cm4gdGhpcy50b3BEaWN0LkZEQXJyYXlbMF0uUHJpdmF0ZTsKICB9OwoKICBfY3JlYXRlQ2xhc3MoQ0ZGRm9udCwgW3sKICAgIGtleTogJ3Bvc3RzY3JpcHROYW1lJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICBpZiAodGhpcy52ZXJzaW9uIDwgMikgewogICAgICAgIHJldHVybiB0aGlzLm5hbWVJbmRleFswXTsKICAgICAgfQoKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgfSwgewogICAga2V5OiAnZnVsbE5hbWUnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLnN0cmluZyh0aGlzLnRvcERpY3QuRnVsbE5hbWUpOwogICAgfQogIH0sIHsKICAgIGtleTogJ2ZhbWlseU5hbWUnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLnN0cmluZyh0aGlzLnRvcERpY3QuRmFtaWx5TmFtZSk7CiAgICB9CiAgfV0pOwoKICByZXR1cm4gQ0ZGRm9udDsKfSgpOwoKdmFyIFZlcnRpY2FsT3JpZ2luID0gbmV3IHIuU3RydWN0KHsKICBnbHlwaEluZGV4OiByLnVpbnQxNiwKICB2ZXJ0T3JpZ2luWTogci5pbnQxNgp9KTsKCnZhciBWT1JHID0gbmV3IHIuU3RydWN0KHsKICBtYWpvclZlcnNpb246IHIudWludDE2LAogIG1pbm9yVmVyc2lvbjogci51aW50MTYsCiAgZGVmYXVsdFZlcnRPcmlnaW5ZOiByLmludDE2LAogIG51bVZlcnRPcmlnaW5ZTWV0cmljczogci51aW50MTYsCiAgbWV0cmljczogbmV3IHIuQXJyYXkoVmVydGljYWxPcmlnaW4sICdudW1WZXJ0T3JpZ2luWU1ldHJpY3MnKQp9KTsKCnZhciBCaWdNZXRyaWNzID0gbmV3IHIuU3RydWN0KHsKICBoZWlnaHQ6IHIudWludDgsCiAgd2lkdGg6IHIudWludDgsCiAgaG9yaUJlYXJpbmdYOiByLmludDgsCiAgaG9yaUJlYXJpbmdZOiByLmludDgsCiAgaG9yaUFkdmFuY2U6IHIudWludDgsCiAgdmVydEJlYXJpbmdYOiByLmludDgsCiAgdmVydEJlYXJpbmdZOiByLmludDgsCiAgdmVydEFkdmFuY2U6IHIudWludDgKfSk7Cgp2YXIgU21hbGxNZXRyaWNzID0gbmV3IHIuU3RydWN0KHsKICBoZWlnaHQ6IHIudWludDgsCiAgd2lkdGg6IHIudWludDgsCiAgYmVhcmluZ1g6IHIuaW50OCwKICBiZWFyaW5nWTogci5pbnQ4LAogIGFkdmFuY2U6IHIudWludDgKfSk7Cgp2YXIgRUJEVENvbXBvbmVudCA9IG5ldyByLlN0cnVjdCh7CiAgZ2x5cGg6IHIudWludDE2LAogIHhPZmZzZXQ6IHIuaW50OCwKICB5T2Zmc2V0OiByLmludDgKfSk7Cgp2YXIgQnl0ZUFsaWduZWQgPSBmdW5jdGlvbiBCeXRlQWxpZ25lZCgpIHsKICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQnl0ZUFsaWduZWQpOwp9OwoKdmFyIEJpdEFsaWduZWQgPSBmdW5jdGlvbiBCaXRBbGlnbmVkKCkgewogIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBCaXRBbGlnbmVkKTsKfTsKCnZhciBnbHlwaCA9IG5ldyByLlZlcnNpb25lZFN0cnVjdCgndmVyc2lvbicsIHsKICAxOiB7CiAgICBtZXRyaWNzOiBTbWFsbE1ldHJpY3MsCiAgICBkYXRhOiBCeXRlQWxpZ25lZAogIH0sCgogIDI6IHsKICAgIG1ldHJpY3M6IFNtYWxsTWV0cmljcywKICAgIGRhdGE6IEJpdEFsaWduZWQKICB9LAoKICAvLyBmb3JtYXQgMyBpcyBkZXByZWNhdGVkCiAgLy8gZm9ybWF0IDQgaXMgbm90IHN1cHBvcnRlZCBieSBNaWNyb3NvZnQKCiAgNTogewogICAgZGF0YTogQml0QWxpZ25lZAogIH0sCgogIDY6IHsKICAgIG1ldHJpY3M6IEJpZ01ldHJpY3MsCiAgICBkYXRhOiBCeXRlQWxpZ25lZAogIH0sCgogIDc6IHsKICAgIG1ldHJpY3M6IEJpZ01ldHJpY3MsCiAgICBkYXRhOiBCaXRBbGlnbmVkCiAgfSwKCiAgODogewogICAgbWV0cmljczogU21hbGxNZXRyaWNzLAogICAgcGFkOiBuZXcgci5SZXNlcnZlZChyLnVpbnQ4KSwKICAgIG51bUNvbXBvbmVudHM6IHIudWludDE2LAogICAgY29tcG9uZW50czogbmV3IHIuQXJyYXkoRUJEVENvbXBvbmVudCwgJ251bUNvbXBvbmVudHMnKQogIH0sCgogIDk6IHsKICAgIG1ldHJpY3M6IEJpZ01ldHJpY3MsCiAgICBwYWQ6IG5ldyByLlJlc2VydmVkKHIudWludDgpLAogICAgbnVtQ29tcG9uZW50czogci51aW50MTYsCiAgICBjb21wb25lbnRzOiBuZXcgci5BcnJheShFQkRUQ29tcG9uZW50LCAnbnVtQ29tcG9uZW50cycpCiAgfSwKCiAgMTc6IHsKICAgIG1ldHJpY3M6IFNtYWxsTWV0cmljcywKICAgIGRhdGFMZW46IHIudWludDMyLAogICAgZGF0YTogbmV3IHIuQnVmZmVyKCdkYXRhTGVuJykKICB9LAoKICAxODogewogICAgbWV0cmljczogQmlnTWV0cmljcywKICAgIGRhdGFMZW46IHIudWludDMyLAogICAgZGF0YTogbmV3IHIuQnVmZmVyKCdkYXRhTGVuJykKICB9LAoKICAxOTogewogICAgZGF0YUxlbjogci51aW50MzIsCiAgICBkYXRhOiBuZXcgci5CdWZmZXIoJ2RhdGFMZW4nKQogIH0KfSk7Cgp2YXIgU0JpdExpbmVNZXRyaWNzID0gbmV3IHIuU3RydWN0KHsKICBhc2NlbmRlcjogci5pbnQ4LAogIGRlc2NlbmRlcjogci5pbnQ4LAogIHdpZHRoTWF4OiByLnVpbnQ4LAogIGNhcmV0U2xvcGVOdW1lcmF0b3I6IHIuaW50OCwKICBjYXJldFNsb3BlRGVub21pbmF0b3I6IHIuaW50OCwKICBjYXJldE9mZnNldDogci5pbnQ4LAogIG1pbk9yaWdpblNCOiByLmludDgsCiAgbWluQWR2YW5jZVNCOiByLmludDgsCiAgbWF4QmVmb3JlQkw6IHIuaW50OCwKICBtaW5BZnRlckJMOiByLmludDgsCiAgcGFkOiBuZXcgci5SZXNlcnZlZChyLmludDgsIDIpCn0pOwoKdmFyIENvZGVPZmZzZXRQYWlyID0gbmV3IHIuU3RydWN0KHsKICBnbHlwaENvZGU6IHIudWludDE2LAogIG9mZnNldDogci51aW50MTYKfSk7Cgp2YXIgSW5kZXhTdWJ0YWJsZSA9IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQxNiwgewogIGhlYWRlcjogewogICAgaW1hZ2VGb3JtYXQ6IHIudWludDE2LAogICAgaW1hZ2VEYXRhT2Zmc2V0OiByLnVpbnQzMgogIH0sCgogIDE6IHsKICAgIG9mZnNldEFycmF5OiBuZXcgci5BcnJheShyLnVpbnQzMiwgZnVuY3Rpb24gKHQpIHsKICAgICAgcmV0dXJuIHQucGFyZW50Lmxhc3RHbHlwaEluZGV4IC0gdC5wYXJlbnQuZmlyc3RHbHlwaEluZGV4ICsgMTsKICAgIH0pCiAgfSwKCiAgMjogewogICAgaW1hZ2VTaXplOiByLnVpbnQzMiwKICAgIGJpZ01ldHJpY3M6IEJpZ01ldHJpY3MKICB9LAoKICAzOiB7CiAgICBvZmZzZXRBcnJheTogbmV3IHIuQXJyYXkoci51aW50MTYsIGZ1bmN0aW9uICh0KSB7CiAgICAgIHJldHVybiB0LnBhcmVudC5sYXN0R2x5cGhJbmRleCAtIHQucGFyZW50LmZpcnN0R2x5cGhJbmRleCArIDE7CiAgICB9KQogIH0sCgogIDQ6IHsKICAgIG51bUdseXBoczogci51aW50MzIsCiAgICBnbHlwaEFycmF5OiBuZXcgci5BcnJheShDb2RlT2Zmc2V0UGFpciwgZnVuY3Rpb24gKHQpIHsKICAgICAgcmV0dXJuIHQubnVtR2x5cGhzICsgMTsKICAgIH0pCiAgfSwKCiAgNTogewogICAgaW1hZ2VTaXplOiByLnVpbnQzMiwKICAgIGJpZ01ldHJpY3M6IEJpZ01ldHJpY3MsCiAgICBudW1HbHlwaHM6IHIudWludDMyLAogICAgZ2x5cGhDb2RlQXJyYXk6IG5ldyByLkFycmF5KHIudWludDE2LCAnbnVtR2x5cGhzJykKICB9Cn0pOwoKdmFyIEluZGV4U3VidGFibGVBcnJheSA9IG5ldyByLlN0cnVjdCh7CiAgZmlyc3RHbHlwaEluZGV4OiByLnVpbnQxNiwKICBsYXN0R2x5cGhJbmRleDogci51aW50MTYsCiAgc3VidGFibGU6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIEluZGV4U3VidGFibGUpCn0pOwoKdmFyIEJpdG1hcFNpemVUYWJsZSA9IG5ldyByLlN0cnVjdCh7CiAgaW5kZXhTdWJUYWJsZUFycmF5OiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBuZXcgci5BcnJheShJbmRleFN1YnRhYmxlQXJyYXksIDEpLCB7IHR5cGU6ICdwYXJlbnQnIH0pLAogIGluZGV4VGFibGVzU2l6ZTogci51aW50MzIsCiAgbnVtYmVyT2ZJbmRleFN1YlRhYmxlczogci51aW50MzIsCiAgY29sb3JSZWY6IHIudWludDMyLAogIGhvcmk6IFNCaXRMaW5lTWV0cmljcywKICB2ZXJ0OiBTQml0TGluZU1ldHJpY3MsCiAgc3RhcnRHbHlwaEluZGV4OiByLnVpbnQxNiwKICBlbmRHbHlwaEluZGV4OiByLnVpbnQxNiwKICBwcGVtWDogci51aW50OCwKICBwcGVtWTogci51aW50OCwKICBiaXREZXB0aDogci51aW50OCwKICBmbGFnczogbmV3IHIuQml0ZmllbGQoci51aW50OCwgWydob3Jpem9udGFsJywgJ3ZlcnRpY2FsJ10pCn0pOwoKdmFyIEVCTEMgPSBuZXcgci5TdHJ1Y3QoewogIHZlcnNpb246IHIudWludDMyLCAvLyAweDAwMDIwMDAwCiAgbnVtU2l6ZXM6IHIudWludDMyLAogIHNpemVzOiBuZXcgci5BcnJheShCaXRtYXBTaXplVGFibGUsICdudW1TaXplcycpCn0pOwoKdmFyIEltYWdlVGFibGUgPSBuZXcgci5TdHJ1Y3QoewogIHBwZW06IHIudWludDE2LAogIHJlc29sdXRpb246IHIudWludDE2LAogIGltYWdlT2Zmc2V0czogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgJ3ZvaWQnKSwgZnVuY3Rpb24gKHQpIHsKICAgIHJldHVybiB0LnBhcmVudC5wYXJlbnQubWF4cC5udW1HbHlwaHMgKyAxOwogIH0pCn0pOwoKLy8gVGhpcyBpcyB0aGUgQXBwbGUgc2JpeCB0YWJsZSwgdXNlZCBieSB0aGUgIkFwcGxlIENvbG9yIEVtb2ppIiBmb250LgovLyBJdCBpbmNsdWRlcyBzZXZlcmFsIGltYWdlIHRhYmxlcyB3aXRoIGltYWdlcyBmb3IgZWFjaCBiaXRtYXAgZ2x5cGgKLy8gb2Ygc2V2ZXJhbCBkaWZmZXJlbnQgc2l6ZXMuCnZhciBzYml4ID0gbmV3IHIuU3RydWN0KHsKICB2ZXJzaW9uOiByLnVpbnQxNiwKICBmbGFnczogbmV3IHIuQml0ZmllbGQoci51aW50MTYsIFsncmVuZGVyT3V0bGluZXMnXSksCiAgbnVtSW1nVGFibGVzOiByLnVpbnQzMiwKICBpbWFnZVRhYmxlczogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgSW1hZ2VUYWJsZSksICdudW1JbWdUYWJsZXMnKQp9KTsKCnZhciBMYXllclJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgZ2lkOiByLnVpbnQxNiwgLy8gR2x5cGggSUQgb2YgbGF5ZXIgZ2x5cGggKG11c3QgYmUgaW4gei1vcmRlciBmcm9tIGJvdHRvbSB0byB0b3ApLgogIHBhbGV0dGVJbmRleDogci51aW50MTYgLy8gSW5kZXggdmFsdWUgdG8gdXNlIGluIHRoZSBhcHByb3ByaWF0ZSBwYWxldHRlLiBUaGlzIHZhbHVlIG11c3QKfSk7IC8vIGJlIGxlc3MgdGhhbiBudW1QYWxldHRlRW50cmllcyBpbiB0aGUgQ1BBTCB0YWJsZSwgZXhjZXB0IGZvcgovLyB0aGUgc3BlY2lhbCBjYXNlIG5vdGVkIGJlbG93LiBFYWNoIHBhbGV0dGUgZW50cnkgaXMgMTYgYml0cy4KLy8gQSBwYWxldHRlIGluZGV4IG9mIDB4RkZGRiBpcyBhIHNwZWNpYWwgY2FzZSBpbmRpY2F0aW5nIHRoYXQKLy8gdGhlIHRleHQgZm9yZWdyb3VuZCBjb2xvciBzaG91bGQgYmUgdXNlZC4KCnZhciBCYXNlR2x5cGhSZWNvcmQgPSBuZXcgci5TdHJ1Y3QoewogIGdpZDogci51aW50MTYsIC8vIEdseXBoIElEIG9mIHJlZmVyZW5jZSBnbHlwaC4gVGhpcyBnbHlwaCBpcyBmb3IgcmVmZXJlbmNlIG9ubHkKICAvLyBhbmQgaXMgbm90IHJlbmRlcmVkIGZvciBjb2xvci4KICBmaXJzdExheWVySW5kZXg6IHIudWludDE2LCAvLyBJbmRleCAoZnJvbSBiZWdpbm5pbmcgb2YgdGhlIExheWVyIFJlY29yZHMpIHRvIHRoZSBsYXllciByZWNvcmQuCiAgLy8gVGhlcmUgd2lsbCBiZSBudW1MYXllcnMgY29uc2VjdXRpdmUgZW50cmllcyBmb3IgdGhpcyBiYXNlIGdseXBoLgogIG51bUxheWVyczogci51aW50MTYKfSk7Cgp2YXIgQ09MUiA9IG5ldyByLlN0cnVjdCh7CiAgdmVyc2lvbjogci51aW50MTYsCiAgbnVtQmFzZUdseXBoUmVjb3Jkczogci51aW50MTYsCiAgYmFzZUdseXBoUmVjb3JkOiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBuZXcgci5BcnJheShCYXNlR2x5cGhSZWNvcmQsICdudW1CYXNlR2x5cGhSZWNvcmRzJykpLAogIGxheWVyUmVjb3JkczogbmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgbmV3IHIuQXJyYXkoTGF5ZXJSZWNvcmQsICdudW1MYXllclJlY29yZHMnKSwgeyBsYXp5OiB0cnVlIH0pLAogIG51bUxheWVyUmVjb3Jkczogci51aW50MTYKfSk7Cgp2YXIgQ29sb3JSZWNvcmQgPSBuZXcgci5TdHJ1Y3QoewogIGJsdWU6IHIudWludDgsCiAgZ3JlZW46IHIudWludDgsCiAgcmVkOiByLnVpbnQ4LAogIGFscGhhOiByLnVpbnQ4Cn0pOwoKdmFyIENQQUwgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3Qoci51aW50MTYsIHsKICBoZWFkZXI6IHsKICAgIG51bVBhbGV0dGVFbnRyaWVzOiByLnVpbnQxNiwKICAgIG51bVBhbGV0dGVzOiByLnVpbnQxNiwKICAgIG51bUNvbG9yUmVjb3Jkczogci51aW50MTYsCiAgICBjb2xvclJlY29yZHM6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIG5ldyByLkFycmF5KENvbG9yUmVjb3JkLCAnbnVtQ29sb3JSZWNvcmRzJykpLAogICAgY29sb3JSZWNvcmRJbmRpY2VzOiBuZXcgci5BcnJheShyLnVpbnQxNiwgJ251bVBhbGV0dGVzJykKICB9LAogIDA6IHt9LAogIDE6IHsKICAgIG9mZnNldFBhbGV0dGVUeXBlQXJyYXk6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIG5ldyByLkFycmF5KHIudWludDMyLCAnbnVtUGFsZXR0ZXMnKSksCiAgICBvZmZzZXRQYWxldHRlTGFiZWxBcnJheTogbmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgbmV3IHIuQXJyYXkoci51aW50MTYsICdudW1QYWxldHRlcycpKSwKICAgIG9mZnNldFBhbGV0dGVFbnRyeUxhYmVsQXJyYXk6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIG5ldyByLkFycmF5KHIudWludDE2LCAnbnVtUGFsZXR0ZUVudHJpZXMnKSkKICB9Cn0pOwoKdmFyIEJhc2VDb29yZCA9IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQxNiwgewogIDE6IHsgLy8gRGVzaWduIHVuaXRzIG9ubHkKICAgIGNvb3JkaW5hdGU6IHIuaW50MTYgLy8gWCBvciBZIHZhbHVlLCBpbiBkZXNpZ24gdW5pdHMKICB9LAoKICAyOiB7IC8vIERlc2lnbiB1bml0cyBwbHVzIGNvbnRvdXIgcG9pbnQKICAgIGNvb3JkaW5hdGU6IHIuaW50MTYsIC8vIFggb3IgWSB2YWx1ZSwgaW4gZGVzaWduIHVuaXRzCiAgICByZWZlcmVuY2VHbHlwaDogci51aW50MTYsIC8vIEdseXBoSUQgb2YgY29udHJvbCBnbHlwaAogICAgYmFzZUNvb3JkUG9pbnQ6IHIudWludDE2IC8vIEluZGV4IG9mIGNvbnRvdXIgcG9pbnQgb24gdGhlIHJlZmVyZW5jZUdseXBoCiAgfSwKCiAgMzogeyAvLyBEZXNpZ24gdW5pdHMgcGx1cyBEZXZpY2UgdGFibGUKICAgIGNvb3JkaW5hdGU6IHIuaW50MTYsIC8vIFggb3IgWSB2YWx1ZSwgaW4gZGVzaWduIHVuaXRzCiAgICBkZXZpY2VUYWJsZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgRGV2aWNlKSAvLyBEZXZpY2UgdGFibGUgZm9yIFggb3IgWSB2YWx1ZQogIH0KfSk7Cgp2YXIgQmFzZVZhbHVlcyA9IG5ldyByLlN0cnVjdCh7CiAgZGVmYXVsdEluZGV4OiByLnVpbnQxNiwgLy8gSW5kZXggb2YgZGVmYXVsdCBiYXNlbGluZSBmb3IgdGhpcyBzY3JpcHQtc2FtZSBpbmRleCBpbiB0aGUgQmFzZVRhZ0xpc3QKICBiYXNlQ29vcmRDb3VudDogci51aW50MTYsCiAgYmFzZUNvb3JkczogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQmFzZUNvb3JkKSwgJ2Jhc2VDb29yZENvdW50JykKfSk7Cgp2YXIgRmVhdE1pbk1heFJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgdGFnOiBuZXcgci5TdHJpbmcoNCksIC8vIDQtYnl0ZSBmZWF0dXJlIGlkZW50aWZpY2F0aW9uIHRhZy1tdXN0IG1hdGNoIEZlYXR1cmVUYWcgaW4gRmVhdHVyZUxpc3QKICBtaW5Db29yZDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQmFzZUNvb3JkLCB7IHR5cGU6ICdwYXJlbnQnIH0pLCAvLyBNYXkgYmUgTlVMTAogIG1heENvb3JkOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBCYXNlQ29vcmQsIHsgdHlwZTogJ3BhcmVudCcgfSkgLy8gTWF5IGJlIE5VTEwKfSk7Cgp2YXIgTWluTWF4ID0gbmV3IHIuU3RydWN0KHsKICBtaW5Db29yZDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQmFzZUNvb3JkKSwgLy8gTWF5IGJlIE5VTEwKICBtYXhDb29yZDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQmFzZUNvb3JkKSwgLy8gTWF5IGJlIE5VTEwKICBmZWF0TWluTWF4Q291bnQ6IHIudWludDE2LCAvLyBNYXkgYmUgMAogIGZlYXRNaW5NYXhSZWNvcmRzOiBuZXcgci5BcnJheShGZWF0TWluTWF4UmVjb3JkLCAnZmVhdE1pbk1heENvdW50JykgLy8gSW4gYWxwaGFiZXRpY2FsIG9yZGVyCn0pOwoKdmFyIEJhc2VMYW5nU3lzUmVjb3JkID0gbmV3IHIuU3RydWN0KHsKICB0YWc6IG5ldyByLlN0cmluZyg0KSwgLy8gNC1ieXRlIGxhbmd1YWdlIHN5c3RlbSBpZGVudGlmaWNhdGlvbiB0YWcKICBtaW5NYXg6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIE1pbk1heCwgeyB0eXBlOiAncGFyZW50JyB9KQp9KTsKCnZhciBCYXNlU2NyaXB0ID0gbmV3IHIuU3RydWN0KHsKICBiYXNlVmFsdWVzOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBCYXNlVmFsdWVzKSwgLy8gTWF5IGJlIE5VTEwKICBkZWZhdWx0TWluTWF4OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBNaW5NYXgpLCAvLyBNYXkgYmUgTlVMTAogIGJhc2VMYW5nU3lzQ291bnQ6IHIudWludDE2LCAvLyBNYXkgYmUgMAogIGJhc2VMYW5nU3lzUmVjb3JkczogbmV3IHIuQXJyYXkoQmFzZUxhbmdTeXNSZWNvcmQsICdiYXNlTGFuZ1N5c0NvdW50JykgLy8gaW4gYWxwaGFiZXRpY2FsIG9yZGVyIGJ5IEJhc2VMYW5nU3lzVGFnCn0pOwoKdmFyIEJhc2VTY3JpcHRSZWNvcmQgPSBuZXcgci5TdHJ1Y3QoewogIHRhZzogbmV3IHIuU3RyaW5nKDQpLCAvLyA0LWJ5dGUgc2NyaXB0IGlkZW50aWZpY2F0aW9uIHRhZwogIHNjcmlwdDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQmFzZVNjcmlwdCwgeyB0eXBlOiAncGFyZW50JyB9KQp9KTsKCnZhciBCYXNlU2NyaXB0TGlzdCA9IG5ldyByLkFycmF5KEJhc2VTY3JpcHRSZWNvcmQsIHIudWludDE2KTsKCi8vIEFycmF5IG9mIDQtYnl0ZSBiYXNlbGluZSBpZGVudGlmaWNhdGlvbiB0YWdzLW11c3QgYmUgaW4gYWxwaGFiZXRpY2FsIG9yZGVyCnZhciBCYXNlVGFnTGlzdCA9IG5ldyByLkFycmF5KG5ldyByLlN0cmluZyg0KSwgci51aW50MTYpOwoKdmFyIEF4aXMgPSBuZXcgci5TdHJ1Y3QoewogIGJhc2VUYWdMaXN0OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBCYXNlVGFnTGlzdCksIC8vIE1heSBiZSBOVUxMCiAgYmFzZVNjcmlwdExpc3Q6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIEJhc2VTY3JpcHRMaXN0KQp9KTsKCnZhciBCQVNFID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIudWludDMyLCB7CiAgaGVhZGVyOiB7CiAgICBob3JpekF4aXM6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIEF4aXMpLCAvLyBNYXkgYmUgTlVMTAogICAgdmVydEF4aXM6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIEF4aXMpIC8vIE1heSBiZSBOVUxMCiAgfSwKCiAgMHgwMDAxMDAwMDoge30sCiAgMHgwMDAxMDAwMTogewogICAgaXRlbVZhcmlhdGlvblN0b3JlOiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBJdGVtVmFyaWF0aW9uU3RvcmUpCiAgfQp9KTsKCnZhciBBdHRhY2hQb2ludCA9IG5ldyByLkFycmF5KHIudWludDE2LCByLnVpbnQxNik7CnZhciBBdHRhY2hMaXN0ID0gbmV3IHIuU3RydWN0KHsKICBjb3ZlcmFnZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLAogIGdseXBoQ291bnQ6IHIudWludDE2LAogIGF0dGFjaFBvaW50czogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQXR0YWNoUG9pbnQpLCAnZ2x5cGhDb3VudCcpCn0pOwoKdmFyIENhcmV0VmFsdWUgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3Qoci51aW50MTYsIHsKICAxOiB7IC8vIERlc2lnbiB1bml0cyBvbmx5CiAgICBjb29yZGluYXRlOiByLmludDE2CiAgfSwKCiAgMjogeyAvLyBDb250b3VyIHBvaW50CiAgICBjYXJldFZhbHVlUG9pbnQ6IHIudWludDE2CiAgfSwKCiAgMzogeyAvLyBEZXNpZ24gdW5pdHMgcGx1cyBEZXZpY2UgdGFibGUKICAgIGNvb3JkaW5hdGU6IHIuaW50MTYsCiAgICBkZXZpY2VUYWJsZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgRGV2aWNlKQogIH0KfSk7Cgp2YXIgTGlnR2x5cGggPSBuZXcgci5BcnJheShuZXcgci5Qb2ludGVyKHIudWludDE2LCBDYXJldFZhbHVlKSwgci51aW50MTYpOwoKdmFyIExpZ0NhcmV0TGlzdCA9IG5ldyByLlN0cnVjdCh7CiAgY292ZXJhZ2U6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENvdmVyYWdlKSwKICBsaWdHbHlwaENvdW50OiByLnVpbnQxNiwKICBsaWdHbHlwaHM6IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIExpZ0dseXBoKSwgJ2xpZ0dseXBoQ291bnQnKQp9KTsKCnZhciBNYXJrR2x5cGhTZXRzRGVmID0gbmV3IHIuU3RydWN0KHsKICBtYXJrU2V0VGFibGVGb3JtYXQ6IHIudWludDE2LAogIG1hcmtTZXRDb3VudDogci51aW50MTYsCiAgY292ZXJhZ2U6IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MzIsIENvdmVyYWdlKSwgJ21hcmtTZXRDb3VudCcpCn0pOwoKdmFyIEdERUYgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3Qoci51aW50MzIsIHsKICBoZWFkZXI6IHsKICAgIGdseXBoQ2xhc3NEZWY6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENsYXNzRGVmKSwKICAgIGF0dGFjaExpc3Q6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIEF0dGFjaExpc3QpLAogICAgbGlnQ2FyZXRMaXN0OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBMaWdDYXJldExpc3QpLAogICAgbWFya0F0dGFjaENsYXNzRGVmOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDbGFzc0RlZikKICB9LAoKICAweDAwMDEwMDAwOiB7fSwKICAweDAwMDEwMDAyOiB7CiAgICBtYXJrR2x5cGhTZXRzRGVmOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBNYXJrR2x5cGhTZXRzRGVmKQogIH0sCiAgMHgwMDAxMDAwMzogewogICAgbWFya0dseXBoU2V0c0RlZjogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgTWFya0dseXBoU2V0c0RlZiksCiAgICBpdGVtVmFyaWF0aW9uU3RvcmU6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIEl0ZW1WYXJpYXRpb25TdG9yZSkKICB9Cn0pOwoKdmFyIFZhbHVlRm9ybWF0ID0gbmV3IHIuQml0ZmllbGQoci51aW50MTYsIFsneFBsYWNlbWVudCcsICd5UGxhY2VtZW50JywgJ3hBZHZhbmNlJywgJ3lBZHZhbmNlJywgJ3hQbGFEZXZpY2UnLCAneVBsYURldmljZScsICd4QWR2RGV2aWNlJywgJ3lBZHZEZXZpY2UnXSk7Cgp2YXIgdHlwZXMgPSB7CiAgeFBsYWNlbWVudDogci5pbnQxNiwKICB5UGxhY2VtZW50OiByLmludDE2LAogIHhBZHZhbmNlOiByLmludDE2LAogIHlBZHZhbmNlOiByLmludDE2LAogIHhQbGFEZXZpY2U6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIERldmljZSwgeyB0eXBlOiAnZ2xvYmFsJywgcmVsYXRpdmVUbzogJ3JlbCcgfSksCiAgeVBsYURldmljZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgRGV2aWNlLCB7IHR5cGU6ICdnbG9iYWwnLCByZWxhdGl2ZVRvOiAncmVsJyB9KSwKICB4QWR2RGV2aWNlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBEZXZpY2UsIHsgdHlwZTogJ2dsb2JhbCcsIHJlbGF0aXZlVG86ICdyZWwnIH0pLAogIHlBZHZEZXZpY2U6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIERldmljZSwgeyB0eXBlOiAnZ2xvYmFsJywgcmVsYXRpdmVUbzogJ3JlbCcgfSkKfTsKCnZhciBWYWx1ZVJlY29yZCA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBWYWx1ZVJlY29yZCgpIHsKICAgIHZhciBrZXkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6ICd2YWx1ZUZvcm1hdCc7CgogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFZhbHVlUmVjb3JkKTsKCiAgICB0aGlzLmtleSA9IGtleTsKICB9CgogIFZhbHVlUmVjb3JkLnByb3RvdHlwZS5idWlsZFN0cnVjdCA9IGZ1bmN0aW9uIGJ1aWxkU3RydWN0KHBhcmVudCkgewogICAgdmFyIHN0cnVjdCA9IHBhcmVudDsKICAgIHdoaWxlICghc3RydWN0W3RoaXMua2V5XSAmJiBzdHJ1Y3QucGFyZW50KSB7CiAgICAgIHN0cnVjdCA9IHN0cnVjdC5wYXJlbnQ7CiAgICB9CgogICAgaWYgKCFzdHJ1Y3RbdGhpcy5rZXldKSByZXR1cm47CgogICAgdmFyIGZpZWxkcyA9IHt9OwogICAgZmllbGRzLnJlbCA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIHN0cnVjdC5fc3RhcnRPZmZzZXQ7CiAgICB9OwoKICAgIHZhciBmb3JtYXQgPSBzdHJ1Y3RbdGhpcy5rZXldOwogICAgZm9yICh2YXIga2V5IGluIGZvcm1hdCkgewogICAgICBpZiAoZm9ybWF0W2tleV0pIHsKICAgICAgICBmaWVsZHNba2V5XSA9IHR5cGVzW2tleV07CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gbmV3IHIuU3RydWN0KGZpZWxkcyk7CiAgfTsKCiAgVmFsdWVSZWNvcmQucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbiBzaXplKHZhbCwgY3R4KSB7CiAgICByZXR1cm4gdGhpcy5idWlsZFN0cnVjdChjdHgpLnNpemUodmFsLCBjdHgpOwogIH07CgogIFZhbHVlUmVjb3JkLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoc3RyZWFtLCBwYXJlbnQpIHsKICAgIHZhciByZXMgPSB0aGlzLmJ1aWxkU3RydWN0KHBhcmVudCkuZGVjb2RlKHN0cmVhbSwgcGFyZW50KTsKICAgIGRlbGV0ZSByZXMucmVsOwogICAgcmV0dXJuIHJlczsKICB9OwoKICByZXR1cm4gVmFsdWVSZWNvcmQ7Cn0oKTsKCnZhciBQYWlyVmFsdWVSZWNvcmQgPSBuZXcgci5TdHJ1Y3QoewogIHNlY29uZEdseXBoOiByLnVpbnQxNiwKICB2YWx1ZTE6IG5ldyBWYWx1ZVJlY29yZCgndmFsdWVGb3JtYXQxJyksCiAgdmFsdWUyOiBuZXcgVmFsdWVSZWNvcmQoJ3ZhbHVlRm9ybWF0MicpCn0pOwoKdmFyIFBhaXJTZXQgPSBuZXcgci5BcnJheShQYWlyVmFsdWVSZWNvcmQsIHIudWludDE2KTsKCnZhciBDbGFzczJSZWNvcmQgPSBuZXcgci5TdHJ1Y3QoewogIHZhbHVlMTogbmV3IFZhbHVlUmVjb3JkKCd2YWx1ZUZvcm1hdDEnKSwKICB2YWx1ZTI6IG5ldyBWYWx1ZVJlY29yZCgndmFsdWVGb3JtYXQyJykKfSk7Cgp2YXIgQW5jaG9yID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIudWludDE2LCB7CiAgMTogeyAvLyBEZXNpZ24gdW5pdHMgb25seQogICAgeENvb3JkaW5hdGU6IHIuaW50MTYsCiAgICB5Q29vcmRpbmF0ZTogci5pbnQxNgogIH0sCgogIDI6IHsgLy8gRGVzaWduIHVuaXRzIHBsdXMgY29udG91ciBwb2ludAogICAgeENvb3JkaW5hdGU6IHIuaW50MTYsCiAgICB5Q29vcmRpbmF0ZTogci5pbnQxNiwKICAgIGFuY2hvclBvaW50OiByLnVpbnQxNgogIH0sCgogIDM6IHsgLy8gRGVzaWduIHVuaXRzIHBsdXMgRGV2aWNlIHRhYmxlcwogICAgeENvb3JkaW5hdGU6IHIuaW50MTYsCiAgICB5Q29vcmRpbmF0ZTogci5pbnQxNiwKICAgIHhEZXZpY2VUYWJsZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgRGV2aWNlKSwKICAgIHlEZXZpY2VUYWJsZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgRGV2aWNlKQogIH0KfSk7Cgp2YXIgRW50cnlFeGl0UmVjb3JkID0gbmV3IHIuU3RydWN0KHsKICBlbnRyeUFuY2hvcjogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQW5jaG9yLCB7IHR5cGU6ICdwYXJlbnQnIH0pLAogIGV4aXRBbmNob3I6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIEFuY2hvciwgeyB0eXBlOiAncGFyZW50JyB9KQp9KTsKCnZhciBNYXJrUmVjb3JkID0gbmV3IHIuU3RydWN0KHsKICBjbGFzczogci51aW50MTYsCiAgbWFya0FuY2hvcjogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQW5jaG9yLCB7IHR5cGU6ICdwYXJlbnQnIH0pCn0pOwoKdmFyIE1hcmtBcnJheSA9IG5ldyByLkFycmF5KE1hcmtSZWNvcmQsIHIudWludDE2KTsKCnZhciBCYXNlUmVjb3JkID0gbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQW5jaG9yKSwgZnVuY3Rpb24gKHQpIHsKICByZXR1cm4gdC5wYXJlbnQuY2xhc3NDb3VudDsKfSk7CnZhciBCYXNlQXJyYXkgPSBuZXcgci5BcnJheShCYXNlUmVjb3JkLCByLnVpbnQxNik7Cgp2YXIgQ29tcG9uZW50UmVjb3JkID0gbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQW5jaG9yKSwgZnVuY3Rpb24gKHQpIHsKICByZXR1cm4gdC5wYXJlbnQucGFyZW50LmNsYXNzQ291bnQ7Cn0pOwp2YXIgTGlnYXR1cmVBdHRhY2ggPSBuZXcgci5BcnJheShDb21wb25lbnRSZWNvcmQsIHIudWludDE2KTsKdmFyIExpZ2F0dXJlQXJyYXkgPSBuZXcgci5BcnJheShuZXcgci5Qb2ludGVyKHIudWludDE2LCBMaWdhdHVyZUF0dGFjaCksIHIudWludDE2KTsKCnZhciBHUE9TTG9va3VwID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KCdsb29rdXBUeXBlJywgewogIDE6IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQxNiwgeyAvLyBTaW5nbGUgQWRqdXN0bWVudAogICAgMTogeyAvLyBTaW5nbGUgcG9zaXRpb25pbmcgdmFsdWUKICAgICAgY292ZXJhZ2U6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENvdmVyYWdlKSwKICAgICAgdmFsdWVGb3JtYXQ6IFZhbHVlRm9ybWF0LAogICAgICB2YWx1ZTogbmV3IFZhbHVlUmVjb3JkKCkKICAgIH0sCiAgICAyOiB7CiAgICAgIGNvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICAgIHZhbHVlRm9ybWF0OiBWYWx1ZUZvcm1hdCwKICAgICAgdmFsdWVDb3VudDogci51aW50MTYsCiAgICAgIHZhbHVlczogbmV3IHIuTGF6eUFycmF5KG5ldyBWYWx1ZVJlY29yZCgpLCAndmFsdWVDb3VudCcpCiAgICB9CiAgfSksCgogIDI6IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQxNiwgeyAvLyBQYWlyIEFkanVzdG1lbnQgUG9zaXRpb25pbmcKICAgIDE6IHsgLy8gQWRqdXN0bWVudHMgZm9yIGdseXBoIHBhaXJzCiAgICAgIGNvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICAgIHZhbHVlRm9ybWF0MTogVmFsdWVGb3JtYXQsCiAgICAgIHZhbHVlRm9ybWF0MjogVmFsdWVGb3JtYXQsCiAgICAgIHBhaXJTZXRDb3VudDogci51aW50MTYsCiAgICAgIHBhaXJTZXRzOiBuZXcgci5MYXp5QXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgUGFpclNldCksICdwYWlyU2V0Q291bnQnKQogICAgfSwKCiAgICAyOiB7IC8vIENsYXNzIHBhaXIgYWRqdXN0bWVudAogICAgICBjb3ZlcmFnZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLAogICAgICB2YWx1ZUZvcm1hdDE6IFZhbHVlRm9ybWF0LAogICAgICB2YWx1ZUZvcm1hdDI6IFZhbHVlRm9ybWF0LAogICAgICBjbGFzc0RlZjE6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENsYXNzRGVmKSwKICAgICAgY2xhc3NEZWYyOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDbGFzc0RlZiksCiAgICAgIGNsYXNzMUNvdW50OiByLnVpbnQxNiwKICAgICAgY2xhc3MyQ291bnQ6IHIudWludDE2LAogICAgICBjbGFzc1JlY29yZHM6IG5ldyByLkxhenlBcnJheShuZXcgci5MYXp5QXJyYXkoQ2xhc3MyUmVjb3JkLCAnY2xhc3MyQ291bnQnKSwgJ2NsYXNzMUNvdW50JykKICAgIH0KICB9KSwKCiAgMzogeyAvLyBDdXJzaXZlIEF0dGFjaG1lbnQgUG9zaXRpb25pbmcKICAgIGZvcm1hdDogci51aW50MTYsCiAgICBjb3ZlcmFnZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLAogICAgZW50cnlFeGl0Q291bnQ6IHIudWludDE2LAogICAgZW50cnlFeGl0UmVjb3JkczogbmV3IHIuQXJyYXkoRW50cnlFeGl0UmVjb3JkLCAnZW50cnlFeGl0Q291bnQnKQogIH0sCgogIDQ6IHsgLy8gTWFya1RvQmFzZSBBdHRhY2htZW50IFBvc2l0aW9uaW5nCiAgICBmb3JtYXQ6IHIudWludDE2LAogICAgbWFya0NvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICBiYXNlQ292ZXJhZ2U6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENvdmVyYWdlKSwKICAgIGNsYXNzQ291bnQ6IHIudWludDE2LAogICAgbWFya0FycmF5OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBNYXJrQXJyYXkpLAogICAgYmFzZUFycmF5OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBCYXNlQXJyYXkpCiAgfSwKCiAgNTogeyAvLyBNYXJrVG9MaWdhdHVyZSBBdHRhY2htZW50IFBvc2l0aW9uaW5nCiAgICBmb3JtYXQ6IHIudWludDE2LAogICAgbWFya0NvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICBsaWdhdHVyZUNvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICBjbGFzc0NvdW50OiByLnVpbnQxNiwKICAgIG1hcmtBcnJheTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgTWFya0FycmF5KSwKICAgIGxpZ2F0dXJlQXJyYXk6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIExpZ2F0dXJlQXJyYXkpCiAgfSwKCiAgNjogeyAvLyBNYXJrVG9NYXJrIEF0dGFjaG1lbnQgUG9zaXRpb25pbmcKICAgIGZvcm1hdDogci51aW50MTYsCiAgICBtYXJrMUNvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICBtYXJrMkNvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICBjbGFzc0NvdW50OiByLnVpbnQxNiwKICAgIG1hcmsxQXJyYXk6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIE1hcmtBcnJheSksCiAgICBtYXJrMkFycmF5OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBCYXNlQXJyYXkpCiAgfSwKCiAgNzogQ29udGV4dCwgLy8gQ29udGV4dHVhbCBwb3NpdGlvbmluZwogIDg6IENoYWluaW5nQ29udGV4dCwgLy8gQ2hhaW5pbmcgY29udGV4dHVhbCBwb3NpdGlvbmluZwoKICA5OiB7IC8vIEV4dGVuc2lvbiBQb3NpdGlvbmluZwogICAgcG9zRm9ybWF0OiByLnVpbnQxNiwKICAgIGxvb2t1cFR5cGU6IHIudWludDE2LCAvLyBjYW5ub3QgYWxzbyBiZSA5CiAgICBleHRlbnNpb246IG5ldyByLlBvaW50ZXIoci51aW50MzIsIEdQT1NMb29rdXApCiAgfQp9KTsKCi8vIEZpeCBjaXJjdWxhciByZWZlcmVuY2UKR1BPU0xvb2t1cC52ZXJzaW9uc1s5XS5leHRlbnNpb24udHlwZSA9IEdQT1NMb29rdXA7Cgp2YXIgR1BPUyA9IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQzMiwgewogIGhlYWRlcjogewogICAgc2NyaXB0TGlzdDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgU2NyaXB0TGlzdCksCiAgICBmZWF0dXJlTGlzdDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgRmVhdHVyZUxpc3QpLAogICAgbG9va3VwTGlzdDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgbmV3IExvb2t1cExpc3QoR1BPU0xvb2t1cCkpCiAgfSwKCiAgMHgwMDAxMDAwMDoge30sCiAgMHgwMDAxMDAwMTogewogICAgZmVhdHVyZVZhcmlhdGlvbnM6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIEZlYXR1cmVWYXJpYXRpb25zKQogIH0KfSk7Cgp2YXIgU2VxdWVuY2UgPSBuZXcgci5BcnJheShyLnVpbnQxNiwgci51aW50MTYpOwp2YXIgQWx0ZXJuYXRlU2V0ID0gU2VxdWVuY2U7Cgp2YXIgTGlnYXR1cmUgPSBuZXcgci5TdHJ1Y3QoewogIGdseXBoOiByLnVpbnQxNiwKICBjb21wQ291bnQ6IHIudWludDE2LAogIGNvbXBvbmVudHM6IG5ldyByLkFycmF5KHIudWludDE2LCBmdW5jdGlvbiAodCkgewogICAgcmV0dXJuIHQuY29tcENvdW50IC0gMTsKICB9KQp9KTsKCnZhciBMaWdhdHVyZVNldCA9IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIExpZ2F0dXJlKSwgci51aW50MTYpOwoKdmFyIEdTVUJMb29rdXAgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3QoJ2xvb2t1cFR5cGUnLCB7CiAgMTogbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIudWludDE2LCB7IC8vIFNpbmdsZSBTdWJzdGl0dXRpb24KICAgIDE6IHsKICAgICAgY292ZXJhZ2U6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENvdmVyYWdlKSwKICAgICAgZGVsdGFHbHlwaElEOiByLmludDE2CiAgICB9LAogICAgMjogewogICAgICBjb3ZlcmFnZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLAogICAgICBnbHlwaENvdW50OiByLnVpbnQxNiwKICAgICAgc3Vic3RpdHV0ZTogbmV3IHIuTGF6eUFycmF5KHIudWludDE2LCAnZ2x5cGhDb3VudCcpCiAgICB9CiAgfSksCgogIDI6IHsgLy8gTXVsdGlwbGUgU3Vic3RpdHV0aW9uCiAgICBzdWJzdEZvcm1hdDogci51aW50MTYsCiAgICBjb3ZlcmFnZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLAogICAgY291bnQ6IHIudWludDE2LAogICAgc2VxdWVuY2VzOiBuZXcgci5MYXp5QXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgU2VxdWVuY2UpLCAnY291bnQnKQogIH0sCgogIDM6IHsgLy8gQWx0ZXJuYXRlIFN1YnN0aXR1dGlvbgogICAgc3Vic3RGb3JtYXQ6IHIudWludDE2LAogICAgY292ZXJhZ2U6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENvdmVyYWdlKSwKICAgIGNvdW50OiByLnVpbnQxNiwKICAgIGFsdGVybmF0ZVNldDogbmV3IHIuTGF6eUFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIEFsdGVybmF0ZVNldCksICdjb3VudCcpCiAgfSwKCiAgNDogeyAvLyBMaWdhdHVyZSBTdWJzdGl0dXRpb24KICAgIHN1YnN0Rm9ybWF0OiByLnVpbnQxNiwKICAgIGNvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICBjb3VudDogci51aW50MTYsCiAgICBsaWdhdHVyZVNldHM6IG5ldyByLkxhenlBcnJheShuZXcgci5Qb2ludGVyKHIudWludDE2LCBMaWdhdHVyZVNldCksICdjb3VudCcpCiAgfSwKCiAgNTogQ29udGV4dCwgLy8gQ29udGV4dHVhbCBTdWJzdGl0dXRpb24KICA2OiBDaGFpbmluZ0NvbnRleHQsIC8vIENoYWluaW5nIENvbnRleHR1YWwgU3Vic3RpdHV0aW9uCgogIDc6IHsgLy8gRXh0ZW5zaW9uIFN1YnN0aXR1dGlvbgogICAgc3Vic3RGb3JtYXQ6IHIudWludDE2LAogICAgbG9va3VwVHlwZTogci51aW50MTYsIC8vIGNhbm5vdCBhbHNvIGJlIDcKICAgIGV4dGVuc2lvbjogbmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgR1NVQkxvb2t1cCkKICB9LAoKICA4OiB7IC8vIFJldmVyc2UgQ2hhaW5pbmcgQ29udGV4dHVhbCBTaW5nbGUgU3Vic3RpdHV0aW9uCiAgICBzdWJzdEZvcm1hdDogci51aW50MTYsCiAgICBjb3ZlcmFnZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLAogICAgYmFja3RyYWNrQ292ZXJhZ2U6IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIENvdmVyYWdlKSwgJ2JhY2t0cmFja0dseXBoQ291bnQnKSwKICAgIGxvb2thaGVhZEdseXBoQ291bnQ6IHIudWludDE2LAogICAgbG9va2FoZWFkQ292ZXJhZ2U6IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIENvdmVyYWdlKSwgJ2xvb2thaGVhZEdseXBoQ291bnQnKSwKICAgIGdseXBoQ291bnQ6IHIudWludDE2LAogICAgc3Vic3RpdHV0ZXM6IG5ldyByLkFycmF5KHIudWludDE2LCAnZ2x5cGhDb3VudCcpCiAgfQp9KTsKCi8vIEZpeCBjaXJjdWxhciByZWZlcmVuY2UKR1NVQkxvb2t1cC52ZXJzaW9uc1s3XS5leHRlbnNpb24udHlwZSA9IEdTVUJMb29rdXA7Cgp2YXIgR1NVQiA9IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQzMiwgewogIGhlYWRlcjogewogICAgc2NyaXB0TGlzdDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgU2NyaXB0TGlzdCksCiAgICBmZWF0dXJlTGlzdDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgRmVhdHVyZUxpc3QpLAogICAgbG9va3VwTGlzdDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgbmV3IExvb2t1cExpc3QoR1NVQkxvb2t1cCkpCiAgfSwKCiAgMHgwMDAxMDAwMDoge30sCiAgMHgwMDAxMDAwMTogewogICAgZmVhdHVyZVZhcmlhdGlvbnM6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIEZlYXR1cmVWYXJpYXRpb25zKQogIH0KfSk7Cgp2YXIgSnN0ZkdTVUJNb2RMaXN0ID0gbmV3IHIuQXJyYXkoci51aW50MTYsIHIudWludDE2KTsKCnZhciBKc3RmUHJpb3JpdHkgPSBuZXcgci5TdHJ1Y3QoewogIHNocmlua2FnZUVuYWJsZUdTVUI6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIEpzdGZHU1VCTW9kTGlzdCksCiAgc2hyaW5rYWdlRGlzYWJsZUdTVUI6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIEpzdGZHU1VCTW9kTGlzdCksCiAgc2hyaW5rYWdlRW5hYmxlR1BPUzogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgSnN0ZkdTVUJNb2RMaXN0KSwKICBzaHJpbmthZ2VEaXNhYmxlR1BPUzogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgSnN0ZkdTVUJNb2RMaXN0KSwKICBzaHJpbmthZ2VKc3RmTWF4OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBuZXcgTG9va3VwTGlzdChHUE9TTG9va3VwKSksCiAgZXh0ZW5zaW9uRW5hYmxlR1NVQjogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgSnN0ZkdTVUJNb2RMaXN0KSwKICBleHRlbnNpb25EaXNhYmxlR1NVQjogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgSnN0ZkdTVUJNb2RMaXN0KSwKICBleHRlbnNpb25FbmFibGVHUE9TOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBKc3RmR1NVQk1vZExpc3QpLAogIGV4dGVuc2lvbkRpc2FibGVHUE9TOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBKc3RmR1NVQk1vZExpc3QpLAogIGV4dGVuc2lvbkpzdGZNYXg6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIG5ldyBMb29rdXBMaXN0KEdQT1NMb29rdXApKQp9KTsKCnZhciBKc3RmTGFuZ1N5cyA9IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIEpzdGZQcmlvcml0eSksIHIudWludDE2KTsKCnZhciBKc3RmTGFuZ1N5c1JlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgdGFnOiBuZXcgci5TdHJpbmcoNCksCiAganN0ZkxhbmdTeXM6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIEpzdGZMYW5nU3lzKQp9KTsKCnZhciBKc3RmU2NyaXB0ID0gbmV3IHIuU3RydWN0KHsKICBleHRlbmRlckdseXBoczogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgbmV3IHIuQXJyYXkoci51aW50MTYsIHIudWludDE2KSksIC8vIGFycmF5IG9mIGdseXBocyB0byBleHRlbmQgbGluZSBsZW5ndGgKICBkZWZhdWx0TGFuZ1N5czogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgSnN0ZkxhbmdTeXMpLAogIGxhbmdTeXNDb3VudDogci51aW50MTYsCiAgbGFuZ1N5c1JlY29yZHM6IG5ldyByLkFycmF5KEpzdGZMYW5nU3lzUmVjb3JkLCAnbGFuZ1N5c0NvdW50JykKfSk7Cgp2YXIgSnN0ZlNjcmlwdFJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgdGFnOiBuZXcgci5TdHJpbmcoNCksCiAgc2NyaXB0OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBKc3RmU2NyaXB0LCB7IHR5cGU6ICdwYXJlbnQnIH0pCn0pOwoKdmFyIEpTVEYgPSBuZXcgci5TdHJ1Y3QoewogIHZlcnNpb246IHIudWludDMyLCAvLyBzaG91bGQgYmUgMHgwMDAxMDAwMAogIHNjcmlwdENvdW50OiByLnVpbnQxNiwKICBzY3JpcHRMaXN0OiBuZXcgci5BcnJheShKc3RmU2NyaXB0UmVjb3JkLCAnc2NyaXB0Q291bnQnKQp9KTsKCi8vIFRPRE86IGFkZCB0aGlzIHRvIHJlc3RydWN0dXJlCgp2YXIgVmFyaWFibGVTaXplTnVtYmVyID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIFZhcmlhYmxlU2l6ZU51bWJlcihzaXplKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVmFyaWFibGVTaXplTnVtYmVyKTsKCiAgICB0aGlzLl9zaXplID0gc2l6ZTsKICB9CgogIFZhcmlhYmxlU2l6ZU51bWJlci5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKHN0cmVhbSwgcGFyZW50KSB7CiAgICBzd2l0Y2ggKHRoaXMuc2l6ZSgwLCBwYXJlbnQpKSB7CiAgICAgIGNhc2UgMToKICAgICAgICByZXR1cm4gc3RyZWFtLnJlYWRVSW50OCgpOwogICAgICBjYXNlIDI6CiAgICAgICAgcmV0dXJuIHN0cmVhbS5yZWFkVUludDE2QkUoKTsKICAgICAgY2FzZSAzOgogICAgICAgIHJldHVybiBzdHJlYW0ucmVhZFVJbnQyNEJFKCk7CiAgICAgIGNhc2UgNDoKICAgICAgICByZXR1cm4gc3RyZWFtLnJlYWRVSW50MzJCRSgpOwogICAgfQogIH07CgogIFZhcmlhYmxlU2l6ZU51bWJlci5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uIHNpemUodmFsLCBwYXJlbnQpIHsKICAgIHJldHVybiByZXN0cnVjdHVyZV9zcmNfdXRpbHMucmVzb2x2ZUxlbmd0aCh0aGlzLl9zaXplLCBudWxsLCBwYXJlbnQpOwogIH07CgogIHJldHVybiBWYXJpYWJsZVNpemVOdW1iZXI7Cn0oKTsKCnZhciBNYXBEYXRhRW50cnkgPSBuZXcgci5TdHJ1Y3QoewogIGVudHJ5OiBuZXcgVmFyaWFibGVTaXplTnVtYmVyKGZ1bmN0aW9uICh0KSB7CiAgICByZXR1cm4gKCh0LnBhcmVudC5lbnRyeUZvcm1hdCAmIDB4MDAzMCkgPj4gNCkgKyAxOwogIH0pLAogIG91dGVySW5kZXg6IGZ1bmN0aW9uIG91dGVySW5kZXgodCkgewogICAgcmV0dXJuIHQuZW50cnkgPj4gKHQucGFyZW50LmVudHJ5Rm9ybWF0ICYgMHgwMDBGKSArIDE7CiAgfSwKICBpbm5lckluZGV4OiBmdW5jdGlvbiBpbm5lckluZGV4KHQpIHsKICAgIHJldHVybiB0LmVudHJ5ICYgKDEgPDwgKHQucGFyZW50LmVudHJ5Rm9ybWF0ICYgMHgwMDBGKSArIDEpIC0gMTsKICB9Cn0pOwoKdmFyIERlbHRhU2V0SW5kZXhNYXAgPSBuZXcgci5TdHJ1Y3QoewogIGVudHJ5Rm9ybWF0OiByLnVpbnQxNiwKICBtYXBDb3VudDogci51aW50MTYsCiAgbWFwRGF0YTogbmV3IHIuQXJyYXkoTWFwRGF0YUVudHJ5LCAnbWFwQ291bnQnKQp9KTsKCnZhciBIVkFSID0gbmV3IHIuU3RydWN0KHsKICBtYWpvclZlcnNpb246IHIudWludDE2LAogIG1pbm9yVmVyc2lvbjogci51aW50MTYsCiAgaXRlbVZhcmlhdGlvblN0b3JlOiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBJdGVtVmFyaWF0aW9uU3RvcmUpLAogIGFkdmFuY2VXaWR0aE1hcHBpbmc6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIERlbHRhU2V0SW5kZXhNYXApLAogIExTQk1hcHBpbmc6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIERlbHRhU2V0SW5kZXhNYXApLAogIFJTQk1hcHBpbmc6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIERlbHRhU2V0SW5kZXhNYXApCn0pOwoKdmFyIFNpZ25hdHVyZSA9IG5ldyByLlN0cnVjdCh7CiAgZm9ybWF0OiByLnVpbnQzMiwKICBsZW5ndGg6IHIudWludDMyLAogIG9mZnNldDogci51aW50MzIKfSk7Cgp2YXIgU2lnbmF0dXJlQmxvY2sgPSBuZXcgci5TdHJ1Y3QoewogIHJlc2VydmVkOiBuZXcgci5SZXNlcnZlZChyLnVpbnQxNiwgMiksCiAgY2JTaWduYXR1cmU6IHIudWludDMyLCAvLyBMZW5ndGggKGluIGJ5dGVzKSBvZiB0aGUgUEtDUyM3IHBhY2tldCBpbiBwYlNpZ25hdHVyZQogIHNpZ25hdHVyZTogbmV3IHIuQnVmZmVyKCdjYlNpZ25hdHVyZScpCn0pOwoKdmFyIERTSUcgPSBuZXcgci5TdHJ1Y3QoewogIHVsVmVyc2lvbjogci51aW50MzIsIC8vIFZlcnNpb24gbnVtYmVyIG9mIHRoZSBEU0lHIHRhYmxlICgweDAwMDAwMDAxKQogIHVzTnVtU2lnczogci51aW50MTYsIC8vIE51bWJlciBvZiBzaWduYXR1cmVzIGluIHRoZSB0YWJsZQogIHVzRmxhZzogci51aW50MTYsIC8vIFBlcm1pc3Npb24gZmxhZ3MKICBzaWduYXR1cmVzOiBuZXcgci5BcnJheShTaWduYXR1cmUsICd1c051bVNpZ3MnKSwKICBzaWduYXR1cmVCbG9ja3M6IG5ldyByLkFycmF5KFNpZ25hdHVyZUJsb2NrLCAndXNOdW1TaWdzJykKfSk7Cgp2YXIgR2FzcFJhbmdlID0gbmV3IHIuU3RydWN0KHsKICByYW5nZU1heFBQRU06IHIudWludDE2LCAvLyBVcHBlciBsaW1pdCBvZiByYW5nZSwgaW4gcHBlbQogIHJhbmdlR2FzcEJlaGF2aW9yOiBuZXcgci5CaXRmaWVsZChyLnVpbnQxNiwgWy8vIEZsYWdzIGRlc2NyaWJpbmcgZGVzaXJlZCByYXN0ZXJpemVyIGJlaGF2aW9yCiAgJ2dyYXlzY2FsZScsICdncmlkZml0JywgJ3N5bW1ldHJpY1Ntb290aGluZycsICdzeW1tZXRyaWNHcmlkZml0JyAvLyBvbmx5IGluIHZlcnNpb24gMSwgZm9yIENsZWFyVHlwZQogIF0pCn0pOwoKdmFyIGdhc3AgPSBuZXcgci5TdHJ1Y3QoewogIHZlcnNpb246IHIudWludDE2LCAvLyBzZXQgdG8gMAogIG51bVJhbmdlczogci51aW50MTYsCiAgZ2FzcFJhbmdlczogbmV3IHIuQXJyYXkoR2FzcFJhbmdlLCAnbnVtUmFuZ2VzJykgLy8gU29ydGVkIGJ5IHBwZW0KfSk7Cgp2YXIgRGV2aWNlUmVjb3JkID0gbmV3IHIuU3RydWN0KHsKICBwaXhlbFNpemU6IHIudWludDgsCiAgbWF4aW11bVdpZHRoOiByLnVpbnQ4LAogIHdpZHRoczogbmV3IHIuQXJyYXkoci51aW50OCwgZnVuY3Rpb24gKHQpIHsKICAgIHJldHVybiB0LnBhcmVudC5wYXJlbnQubWF4cC5udW1HbHlwaHM7CiAgfSkKfSk7CgovLyBUaGUgSG9yaXpvbnRhbCBEZXZpY2UgTWV0cmljcyB0YWJsZSBzdG9yZXMgaW50ZWdlciBhZHZhbmNlIHdpZHRocyBzY2FsZWQgdG8gcGFydGljdWxhciBwaXhlbCBzaXplcwp2YXIgaGRteCA9IG5ldyByLlN0cnVjdCh7CiAgdmVyc2lvbjogci51aW50MTYsCiAgbnVtUmVjb3Jkczogci5pbnQxNiwKICBzaXplRGV2aWNlUmVjb3JkOiByLmludDMyLAogIHJlY29yZHM6IG5ldyByLkFycmF5KERldmljZVJlY29yZCwgJ251bVJlY29yZHMnKQp9KTsKCnZhciBLZXJuUGFpciA9IG5ldyByLlN0cnVjdCh7CiAgbGVmdDogci51aW50MTYsCiAgcmlnaHQ6IHIudWludDE2LAogIHZhbHVlOiByLmludDE2Cn0pOwoKdmFyIENsYXNzVGFibGUgPSBuZXcgci5TdHJ1Y3QoewogIGZpcnN0R2x5cGg6IHIudWludDE2LAogIG5HbHlwaHM6IHIudWludDE2LAogIG9mZnNldHM6IG5ldyByLkFycmF5KHIudWludDE2LCAnbkdseXBocycpLAogIG1heDogZnVuY3Rpb24gbWF4KHQpIHsKICAgIHJldHVybiB0Lm9mZnNldHMubGVuZ3RoICYmIE1hdGgubWF4LmFwcGx5KE1hdGgsIHQub2Zmc2V0cyk7CiAgfQp9KTsKCnZhciBLZXJuMkFycmF5ID0gbmV3IHIuU3RydWN0KHsKICBvZmY6IGZ1bmN0aW9uIG9mZih0KSB7CiAgICByZXR1cm4gdC5fc3RhcnRPZmZzZXQgLSB0LnBhcmVudC5wYXJlbnQuX3N0YXJ0T2Zmc2V0OwogIH0sCiAgbGVuOiBmdW5jdGlvbiBsZW4odCkgewogICAgcmV0dXJuICgodC5wYXJlbnQubGVmdFRhYmxlLm1heCAtIHQub2ZmKSAvIHQucGFyZW50LnJvd1dpZHRoICsgMSkgKiAodC5wYXJlbnQucm93V2lkdGggLyAyKTsKICB9LAogIHZhbHVlczogbmV3IHIuTGF6eUFycmF5KHIuaW50MTYsICdsZW4nKQp9KTsKCnZhciBLZXJuU3VidGFibGUgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3QoJ2Zvcm1hdCcsIHsKICAwOiB7CiAgICBuUGFpcnM6IHIudWludDE2LAogICAgc2VhcmNoUmFuZ2U6IHIudWludDE2LAogICAgZW50cnlTZWxlY3Rvcjogci51aW50MTYsCiAgICByYW5nZVNoaWZ0OiByLnVpbnQxNiwKICAgIHBhaXJzOiBuZXcgci5BcnJheShLZXJuUGFpciwgJ25QYWlycycpCiAgfSwKCiAgMjogewogICAgcm93V2lkdGg6IHIudWludDE2LAogICAgbGVmdFRhYmxlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDbGFzc1RhYmxlLCB7IHR5cGU6ICdwYXJlbnQnIH0pLAogICAgcmlnaHRUYWJsZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ2xhc3NUYWJsZSwgeyB0eXBlOiAncGFyZW50JyB9KSwKICAgIGFycmF5OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBLZXJuMkFycmF5LCB7IHR5cGU6ICdwYXJlbnQnIH0pCiAgfSwKCiAgMzogewogICAgZ2x5cGhDb3VudDogci51aW50MTYsCiAgICBrZXJuVmFsdWVDb3VudDogci51aW50OCwKICAgIGxlZnRDbGFzc0NvdW50OiByLnVpbnQ4LAogICAgcmlnaHRDbGFzc0NvdW50OiByLnVpbnQ4LAogICAgZmxhZ3M6IHIudWludDgsCiAgICBrZXJuVmFsdWU6IG5ldyByLkFycmF5KHIuaW50MTYsICdrZXJuVmFsdWVDb3VudCcpLAogICAgbGVmdENsYXNzOiBuZXcgci5BcnJheShyLnVpbnQ4LCAnZ2x5cGhDb3VudCcpLAogICAgcmlnaHRDbGFzczogbmV3IHIuQXJyYXkoci51aW50OCwgJ2dseXBoQ291bnQnKSwKICAgIGtlcm5JbmRleDogbmV3IHIuQXJyYXkoci51aW50OCwgZnVuY3Rpb24gKHQpIHsKICAgICAgcmV0dXJuIHQubGVmdENsYXNzQ291bnQgKiB0LnJpZ2h0Q2xhc3NDb3VudDsKICAgIH0pCiAgfQp9KTsKCnZhciBLZXJuVGFibGUgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3QoJ3ZlcnNpb24nLCB7CiAgMDogeyAvLyBNaWNyb3NvZnQgdXNlcyB0aGlzIGZvcm1hdAogICAgc3ViVmVyc2lvbjogci51aW50MTYsIC8vIE1pY3Jvc29mdCBoYXMgYW4gZXh0cmEgc3ViLXRhYmxlIHZlcnNpb24gbnVtYmVyCiAgICBsZW5ndGg6IHIudWludDE2LCAvLyBMZW5ndGggb2YgdGhlIHN1YnRhYmxlLCBpbiBieXRlcwogICAgZm9ybWF0OiByLnVpbnQ4LCAvLyBGb3JtYXQgb2Ygc3VidGFibGUKICAgIGNvdmVyYWdlOiBuZXcgci5CaXRmaWVsZChyLnVpbnQ4LCBbJ2hvcml6b250YWwnLCAvLyAxIGlmIHRhYmxlIGhhcyBob3Jpem9udGFsIGRhdGEsIDAgaWYgdmVydGljYWwKICAgICdtaW5pbXVtJywgLy8gSWYgc2V0IHRvIDEsIHRoZSB0YWJsZSBoYXMgbWluaW11bSB2YWx1ZXMuIElmIHNldCB0byAwLCB0aGUgdGFibGUgaGFzIGtlcm5pbmcgdmFsdWVzLgogICAgJ2Nyb3NzU3RyZWFtJywgLy8gSWYgc2V0IHRvIDEsIGtlcm5pbmcgaXMgcGVycGVuZGljdWxhciB0byB0aGUgZmxvdyBvZiB0aGUgdGV4dAogICAgJ292ZXJyaWRlJyAvLyBJZiBzZXQgdG8gMSB0aGUgdmFsdWUgaW4gdGhpcyB0YWJsZSByZXBsYWNlcyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUKICAgIF0pLAogICAgc3VidGFibGU6IEtlcm5TdWJ0YWJsZSwKICAgIHBhZGRpbmc6IG5ldyByLlJlc2VydmVkKHIudWludDgsIGZ1bmN0aW9uICh0KSB7CiAgICAgIHJldHVybiB0Lmxlbmd0aCAtIHQuX2N1cnJlbnRPZmZzZXQ7CiAgICB9KQogIH0sCiAgMTogeyAvLyBBcHBsZSB1c2VzIHRoaXMgZm9ybWF0CiAgICBsZW5ndGg6IHIudWludDMyLAogICAgY292ZXJhZ2U6IG5ldyByLkJpdGZpZWxkKHIudWludDgsIFtudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCAndmFyaWF0aW9uJywgLy8gU2V0IGlmIHRhYmxlIGhhcyB2YXJpYXRpb24ga2VybmluZyB2YWx1ZXMKICAgICdjcm9zc1N0cmVhbScsIC8vIFNldCBpZiB0YWJsZSBoYXMgY3Jvc3Mtc3RyZWFtIGtlcm5pbmcgdmFsdWVzCiAgICAndmVydGljYWwnIC8vIFNldCBpZiB0YWJsZSBoYXMgdmVydGljYWwga2VybmluZyB2YWx1ZXMKICAgIF0pLAogICAgZm9ybWF0OiByLnVpbnQ4LAogICAgdHVwbGVJbmRleDogci51aW50MTYsCiAgICBzdWJ0YWJsZTogS2VyblN1YnRhYmxlLAogICAgcGFkZGluZzogbmV3IHIuUmVzZXJ2ZWQoci51aW50OCwgZnVuY3Rpb24gKHQpIHsKICAgICAgcmV0dXJuIHQubGVuZ3RoIC0gdC5fY3VycmVudE9mZnNldDsKICAgIH0pCiAgfQp9KTsKCnZhciBrZXJuID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIudWludDE2LCB7CiAgMDogeyAvLyBNaWNyb3NvZnQgVmVyc2lvbgogICAgblRhYmxlczogci51aW50MTYsCiAgICB0YWJsZXM6IG5ldyByLkFycmF5KEtlcm5UYWJsZSwgJ25UYWJsZXMnKQogIH0sCgogIDE6IHsgLy8gQXBwbGUgVmVyc2lvbgogICAgcmVzZXJ2ZWQ6IG5ldyByLlJlc2VydmVkKHIudWludDE2KSwgLy8gdGhlIG90aGVyIGhhbGYgb2YgdGhlIHZlcnNpb24gbnVtYmVyCiAgICBuVGFibGVzOiByLnVpbnQzMiwKICAgIHRhYmxlczogbmV3IHIuQXJyYXkoS2VyblRhYmxlLCAnblRhYmxlcycpCiAgfQp9KTsKCi8vIExpbmVhciBUaHJlc2hvbGQgdGFibGUKLy8gUmVjb3JkcyB0aGUgcHBlbSBmb3IgZWFjaCBnbHlwaCBhdCB3aGljaCB0aGUgc2NhbGluZyBiZWNvbWVzIGxpbmVhciBhZ2FpbiwKLy8gZGVzcGl0ZSBpbnN0cnVjdGlvbnMgZWZmZWN0aW5nIHRoZSBhZHZhbmNlIHdpZHRoCnZhciBMVFNIID0gbmV3IHIuU3RydWN0KHsKICB2ZXJzaW9uOiByLnVpbnQxNiwKICBudW1HbHlwaHM6IHIudWludDE2LAogIHlQZWxzOiBuZXcgci5BcnJheShyLnVpbnQ4LCAnbnVtR2x5cGhzJykKfSk7CgovLyBQQ0wgNSBUYWJsZQovLyBOT1RFOiBUaGUgUENMVCB0YWJsZSBpcyBzdHJvbmdseSBkaXNjb3VyYWdlZCBmb3IgT3BlblR5cGUgZm9udHMgd2l0aCBUcnVlVHlwZSBvdXRsaW5lcwp2YXIgUENMVCA9IG5ldyByLlN0cnVjdCh7CiAgdmVyc2lvbjogci51aW50MTYsCiAgZm9udE51bWJlcjogci51aW50MzIsCiAgcGl0Y2g6IHIudWludDE2LAogIHhIZWlnaHQ6IHIudWludDE2LAogIHN0eWxlOiByLnVpbnQxNiwKICB0eXBlRmFtaWx5OiByLnVpbnQxNiwKICBjYXBIZWlnaHQ6IHIudWludDE2LAogIHN5bWJvbFNldDogci51aW50MTYsCiAgdHlwZWZhY2U6IG5ldyByLlN0cmluZygxNiksCiAgY2hhcmFjdGVyQ29tcGxlbWVudDogbmV3IHIuU3RyaW5nKDgpLAogIGZpbGVOYW1lOiBuZXcgci5TdHJpbmcoNiksCiAgc3Ryb2tlV2VpZ2h0OiBuZXcgci5TdHJpbmcoMSksCiAgd2lkdGhUeXBlOiBuZXcgci5TdHJpbmcoMSksCiAgc2VyaWZTdHlsZTogci51aW50OCwKICByZXNlcnZlZDogbmV3IHIuUmVzZXJ2ZWQoci51aW50OCkKfSk7CgovLyBWRE1YIHRhYmxlcyBjb250YWluIGFzY2VuZGVyL2Rlc2NlbmRlciBvdmVycmlkZXMgZm9yIGNlcnRhaW4gKHVzdWFsbHkgc21hbGwpCi8vIHNpemVzLiBUaGlzIGlzIG5lZWRlZCBpbiBvcmRlciB0byBtYXRjaCBmb250IG1ldHJpY3Mgb24gV2luZG93cy4KCnZhciBSYXRpbyA9IG5ldyByLlN0cnVjdCh7CiAgYkNoYXJTZXQ6IHIudWludDgsIC8vIENoYXJhY3RlciBzZXQKICB4UmF0aW86IHIudWludDgsIC8vIFZhbHVlIHRvIHVzZSBmb3IgeC1SYXRpbwogIHlTdGFydFJhdGlvOiByLnVpbnQ4LCAvLyBTdGFydGluZyB5LVJhdGlvIHZhbHVlCiAgeUVuZFJhdGlvOiByLnVpbnQ4IC8vIEVuZGluZyB5LVJhdGlvIHZhbHVlCn0pOwoKdmFyIHZUYWJsZSA9IG5ldyByLlN0cnVjdCh7CiAgeVBlbEhlaWdodDogci51aW50MTYsIC8vIHlQZWxIZWlnaHQgdG8gd2hpY2ggdmFsdWVzIGFwcGx5CiAgeU1heDogci5pbnQxNiwgLy8gTWF4aW11bSB2YWx1ZSAoaW4gcGVscykgZm9yIHRoaXMgeVBlbEhlaWdodAogIHlNaW46IHIuaW50MTYgLy8gTWluaW11bSB2YWx1ZSAoaW4gcGVscykgZm9yIHRoaXMgeVBlbEhlaWdodAp9KTsKCnZhciBWZG14R3JvdXAgPSBuZXcgci5TdHJ1Y3QoewogIHJlY3M6IHIudWludDE2LCAvLyBOdW1iZXIgb2YgaGVpZ2h0IHJlY29yZHMgaW4gdGhpcyBncm91cAogIHN0YXJ0c3o6IHIudWludDgsIC8vIFN0YXJ0aW5nIHlQZWxIZWlnaHQKICBlbmRzejogci51aW50OCwgLy8gRW5kaW5nIHlQZWxIZWlnaHQKICBlbnRyaWVzOiBuZXcgci5BcnJheSh2VGFibGUsICdyZWNzJykgLy8gVGhlIFZETVggcmVjb3Jkcwp9KTsKCnZhciBWRE1YID0gbmV3IHIuU3RydWN0KHsKICB2ZXJzaW9uOiByLnVpbnQxNiwgLy8gVmVyc2lvbiBudW1iZXIgKDAgb3IgMSkKICBudW1SZWNzOiByLnVpbnQxNiwgLy8gTnVtYmVyIG9mIFZETVggZ3JvdXBzIHByZXNlbnQKICBudW1SYXRpb3M6IHIudWludDE2LCAvLyBOdW1iZXIgb2YgYXNwZWN0IHJhdGlvIGdyb3VwaW5ncwogIHJhdGlvUmFuZ2VzOiBuZXcgci5BcnJheShSYXRpbywgJ251bVJhdGlvcycpLCAvLyBSYXRpbyByYW5nZXMKICBvZmZzZXRzOiBuZXcgci5BcnJheShyLnVpbnQxNiwgJ251bVJhdGlvcycpLCAvLyBPZmZzZXQgdG8gdGhlIFZETVggZ3JvdXAgZm9yIHRoaXMgcmF0aW8gcmFuZ2UKICBncm91cHM6IG5ldyByLkFycmF5KFZkbXhHcm91cCwgJ251bVJlY3MnKSAvLyBUaGUgYWN0dWFsIFZETVggZ3JvdXBpbmdzCn0pOwoKLy8gVmVydGljYWwgSGVhZGVyIFRhYmxlCnZhciB2aGVhID0gbmV3IHIuU3RydWN0KHsKICB2ZXJzaW9uOiByLnVpbnQxNiwgLy8gVmVyc2lvbiBudW1iZXIgb2YgdGhlIFZlcnRpY2FsIEhlYWRlciBUYWJsZQogIGFzY2VudDogci5pbnQxNiwgLy8gVGhlIHZlcnRpY2FsIHR5cG9ncmFwaGljIGFzY2VuZGVyIGZvciB0aGlzIGZvbnQKICBkZXNjZW50OiByLmludDE2LCAvLyBUaGUgdmVydGljYWwgdHlwb2dyYXBoaWMgZGVzY2VuZGVyIGZvciB0aGlzIGZvbnQKICBsaW5lR2FwOiByLmludDE2LCAvLyBUaGUgdmVydGljYWwgdHlwb2dyYXBoaWMgbGluZSBnYXAgZm9yIHRoaXMgZm9udAogIGFkdmFuY2VIZWlnaHRNYXg6IHIuaW50MTYsIC8vIFRoZSBtYXhpbXVtIGFkdmFuY2UgaGVpZ2h0IG1lYXN1cmVtZW50IGZvdW5kIGluIHRoZSBmb250CiAgbWluVG9wU2lkZUJlYXJpbmc6IHIuaW50MTYsIC8vIFRoZSBtaW5pbXVtIHRvcCBzaWRlIGJlYXJpbmcgbWVhc3VyZW1lbnQgZm91bmQgaW4gdGhlIGZvbnQKICBtaW5Cb3R0b21TaWRlQmVhcmluZzogci5pbnQxNiwgLy8gVGhlIG1pbmltdW0gYm90dG9tIHNpZGUgYmVhcmluZyBtZWFzdXJlbWVudCBmb3VuZCBpbiB0aGUgZm9udAogIHlNYXhFeHRlbnQ6IHIuaW50MTYsCiAgY2FyZXRTbG9wZVJpc2U6IHIuaW50MTYsIC8vIENhcmV0IHNsb3BlIChyaXNlL3J1bikKICBjYXJldFNsb3BlUnVuOiByLmludDE2LAogIGNhcmV0T2Zmc2V0OiByLmludDE2LCAvLyBTZXQgdmFsdWUgZXF1YWwgdG8gMCBmb3Igbm9uc2xhbnRlZCBmb250cwogIHJlc2VydmVkOiBuZXcgci5SZXNlcnZlZChyLmludDE2LCA0KSwKICBtZXRyaWNEYXRhRm9ybWF0OiByLmludDE2LCAvLyBTZXQgdG8gMAogIG51bWJlck9mTWV0cmljczogci51aW50MTYgLy8gTnVtYmVyIG9mIGFkdmFuY2UgaGVpZ2h0cyBpbiB0aGUgVmVydGljYWwgTWV0cmljcyB0YWJsZQp9KTsKCnZhciBWbXR4RW50cnkgPSBuZXcgci5TdHJ1Y3QoewogIGFkdmFuY2U6IHIudWludDE2LCAvLyBUaGUgYWR2YW5jZSBoZWlnaHQgb2YgdGhlIGdseXBoCiAgYmVhcmluZzogci5pbnQxNiAvLyBUaGUgdG9wIHNpZGViZWFyaW5nIG9mIHRoZSBnbHlwaAp9KTsKCi8vIFZlcnRpY2FsIE1ldHJpY3MgVGFibGUKdmFyIHZtdHggPSBuZXcgci5TdHJ1Y3QoewogIG1ldHJpY3M6IG5ldyByLkxhenlBcnJheShWbXR4RW50cnksIGZ1bmN0aW9uICh0KSB7CiAgICByZXR1cm4gdC5wYXJlbnQudmhlYS5udW1iZXJPZk1ldHJpY3M7CiAgfSksCiAgYmVhcmluZ3M6IG5ldyByLkxhenlBcnJheShyLmludDE2LCBmdW5jdGlvbiAodCkgewogICAgcmV0dXJuIHQucGFyZW50Lm1heHAubnVtR2x5cGhzIC0gdC5wYXJlbnQudmhlYS5udW1iZXJPZk1ldHJpY3M7CiAgfSkKfSk7Cgp2YXIgc2hvcnRGcmFjID0gbmV3IHIuRml4ZWQoMTYsICdCRScsIDE0KTsKCnZhciBDb3JyZXNwb25kZW5jZSA9IG5ldyByLlN0cnVjdCh7CiAgZnJvbUNvb3JkOiBzaG9ydEZyYWMsCiAgdG9Db29yZDogc2hvcnRGcmFjCn0pOwoKdmFyIFNlZ21lbnQgPSBuZXcgci5TdHJ1Y3QoewogIHBhaXJDb3VudDogci51aW50MTYsCiAgY29ycmVzcG9uZGVuY2U6IG5ldyByLkFycmF5KENvcnJlc3BvbmRlbmNlLCAncGFpckNvdW50JykKfSk7Cgp2YXIgYXZhciA9IG5ldyByLlN0cnVjdCh7CiAgdmVyc2lvbjogci5maXhlZDMyLAogIGF4aXNDb3VudDogci51aW50MzIsCiAgc2VnbWVudDogbmV3IHIuQXJyYXkoU2VnbWVudCwgJ2F4aXNDb3VudCcpCn0pOwoKdmFyIFVuYm91bmRlZEFycmF5QWNjZXNzb3IgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gVW5ib3VuZGVkQXJyYXlBY2Nlc3Nvcih0eXBlLCBzdHJlYW0sIHBhcmVudCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFVuYm91bmRlZEFycmF5QWNjZXNzb3IpOwoKICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgICB0aGlzLnN0cmVhbSA9IHN0cmVhbTsKICAgIHRoaXMucGFyZW50ID0gcGFyZW50OwogICAgdGhpcy5iYXNlID0gdGhpcy5zdHJlYW0ucG9zOwogICAgdGhpcy5faXRlbXMgPSBbXTsKICB9CgogIFVuYm91bmRlZEFycmF5QWNjZXNzb3IucHJvdG90eXBlLmdldEl0ZW0gPSBmdW5jdGlvbiBnZXRJdGVtKGluZGV4KSB7CiAgICBpZiAodGhpcy5faXRlbXNbaW5kZXhdID09IG51bGwpIHsKICAgICAgdmFyIHBvcyA9IHRoaXMuc3RyZWFtLnBvczsKICAgICAgdGhpcy5zdHJlYW0ucG9zID0gdGhpcy5iYXNlICsgdGhpcy50eXBlLnNpemUobnVsbCwgdGhpcy5wYXJlbnQpICogaW5kZXg7CiAgICAgIHRoaXMuX2l0ZW1zW2luZGV4XSA9IHRoaXMudHlwZS5kZWNvZGUodGhpcy5zdHJlYW0sIHRoaXMucGFyZW50KTsKICAgICAgdGhpcy5zdHJlYW0ucG9zID0gcG9zOwogICAgfQoKICAgIHJldHVybiB0aGlzLl9pdGVtc1tpbmRleF07CiAgfTsKCiAgVW5ib3VuZGVkQXJyYXlBY2Nlc3Nvci5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QoKSB7CiAgICByZXR1cm4gJ1tVbmJvdW5kZWRBcnJheSAnICsgdGhpcy50eXBlLmNvbnN0cnVjdG9yLm5hbWUgKyAnXSc7CiAgfTsKCiAgcmV0dXJuIFVuYm91bmRlZEFycmF5QWNjZXNzb3I7Cn0oKTsKCnZhciBVbmJvdW5kZWRBcnJheSA9IGZ1bmN0aW9uIChfciRBcnJheSkgewogIF9pbmhlcml0cyhVbmJvdW5kZWRBcnJheSwgX3IkQXJyYXkpOwoKICBmdW5jdGlvbiBVbmJvdW5kZWRBcnJheSh0eXBlKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVW5ib3VuZGVkQXJyYXkpOwoKICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfciRBcnJheS5jYWxsKHRoaXMsIHR5cGUsIDApKTsKICB9CgogIFVuYm91bmRlZEFycmF5LnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoc3RyZWFtLCBwYXJlbnQpIHsKICAgIHJldHVybiBuZXcgVW5ib3VuZGVkQXJyYXlBY2Nlc3Nvcih0aGlzLnR5cGUsIHN0cmVhbSwgcGFyZW50KTsKICB9OwoKICByZXR1cm4gVW5ib3VuZGVkQXJyYXk7Cn0oci5BcnJheSk7Cgp2YXIgTG9va3VwVGFibGUgPSBmdW5jdGlvbiBMb29rdXBUYWJsZSgpIHsKICB2YXIgVmFsdWVUeXBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiByLnVpbnQxNjsKCiAgLy8gSGVscGVyIGNsYXNzIHRoYXQgbWFrZXMgaW50ZXJuYWwgc3RydWN0dXJlcyBpbnZpc2libGUgdG8gcG9pbnRlcnMKICB2YXIgU2hhZG93ID0gZnVuY3Rpb24gKCkgewogICAgZnVuY3Rpb24gU2hhZG93KHR5cGUpIHsKICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNoYWRvdyk7CgogICAgICB0aGlzLnR5cGUgPSB0eXBlOwogICAgfQoKICAgIFNoYWRvdy5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKHN0cmVhbSwgY3R4KSB7CiAgICAgIGN0eCA9IGN0eC5wYXJlbnQucGFyZW50OwogICAgICByZXR1cm4gdGhpcy50eXBlLmRlY29kZShzdHJlYW0sIGN0eCk7CiAgICB9OwoKICAgIFNoYWRvdy5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uIHNpemUodmFsLCBjdHgpIHsKICAgICAgY3R4ID0gY3R4LnBhcmVudC5wYXJlbnQ7CiAgICAgIHJldHVybiB0aGlzLnR5cGUuc2l6ZSh2YWwsIGN0eCk7CiAgICB9OwoKICAgIFNoYWRvdy5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKHN0cmVhbSwgdmFsLCBjdHgpIHsKICAgICAgY3R4ID0gY3R4LnBhcmVudC5wYXJlbnQ7CiAgICAgIHJldHVybiB0aGlzLnR5cGUuZW5jb2RlKHN0cmVhbSwgdmFsLCBjdHgpOwogICAgfTsKCiAgICByZXR1cm4gU2hhZG93OwogIH0oKTsKCiAgVmFsdWVUeXBlID0gbmV3IFNoYWRvdyhWYWx1ZVR5cGUpOwoKICB2YXIgQmluYXJ5U2VhcmNoSGVhZGVyID0gbmV3IHIuU3RydWN0KHsKICAgIHVuaXRTaXplOiByLnVpbnQxNiwKICAgIG5Vbml0czogci51aW50MTYsCiAgICBzZWFyY2hSYW5nZTogci51aW50MTYsCiAgICBlbnRyeVNlbGVjdG9yOiByLnVpbnQxNiwKICAgIHJhbmdlU2hpZnQ6IHIudWludDE2CiAgfSk7CgogIHZhciBMb29rdXBTZWdtZW50U2luZ2xlID0gbmV3IHIuU3RydWN0KHsKICAgIGxhc3RHbHlwaDogci51aW50MTYsCiAgICBmaXJzdEdseXBoOiByLnVpbnQxNiwKICAgIHZhbHVlOiBWYWx1ZVR5cGUKICB9KTsKCiAgdmFyIExvb2t1cFNlZ21lbnRBcnJheSA9IG5ldyByLlN0cnVjdCh7CiAgICBsYXN0R2x5cGg6IHIudWludDE2LAogICAgZmlyc3RHbHlwaDogci51aW50MTYsCiAgICB2YWx1ZXM6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIG5ldyByLkFycmF5KFZhbHVlVHlwZSwgZnVuY3Rpb24gKHQpIHsKICAgICAgcmV0dXJuIHQubGFzdEdseXBoIC0gdC5maXJzdEdseXBoICsgMTsKICAgIH0pLCB7IHR5cGU6ICdwYXJlbnQnIH0pCiAgfSk7CgogIHZhciBMb29rdXBTaW5nbGUgPSBuZXcgci5TdHJ1Y3QoewogICAgZ2x5cGg6IHIudWludDE2LAogICAgdmFsdWU6IFZhbHVlVHlwZQogIH0pOwoKICByZXR1cm4gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIudWludDE2LCB7CiAgICAwOiB7CiAgICAgIHZhbHVlczogbmV3IFVuYm91bmRlZEFycmF5KFZhbHVlVHlwZSkgLy8gbGVuZ3RoID09IG51bWJlciBvZiBnbHlwaHMgbWF5YmU/CiAgICB9LAogICAgMjogewogICAgICBiaW5hcnlTZWFyY2hIZWFkZXI6IEJpbmFyeVNlYXJjaEhlYWRlciwKICAgICAgc2VnbWVudHM6IG5ldyByLkFycmF5KExvb2t1cFNlZ21lbnRTaW5nbGUsIGZ1bmN0aW9uICh0KSB7CiAgICAgICAgcmV0dXJuIHQuYmluYXJ5U2VhcmNoSGVhZGVyLm5Vbml0czsKICAgICAgfSkKICAgIH0sCiAgICA0OiB7CiAgICAgIGJpbmFyeVNlYXJjaEhlYWRlcjogQmluYXJ5U2VhcmNoSGVhZGVyLAogICAgICBzZWdtZW50czogbmV3IHIuQXJyYXkoTG9va3VwU2VnbWVudEFycmF5LCBmdW5jdGlvbiAodCkgewogICAgICAgIHJldHVybiB0LmJpbmFyeVNlYXJjaEhlYWRlci5uVW5pdHM7CiAgICAgIH0pCiAgICB9LAogICAgNjogewogICAgICBiaW5hcnlTZWFyY2hIZWFkZXI6IEJpbmFyeVNlYXJjaEhlYWRlciwKICAgICAgc2VnbWVudHM6IG5ldyByLkFycmF5KExvb2t1cFNpbmdsZSwgZnVuY3Rpb24gKHQpIHsKICAgICAgICByZXR1cm4gdC5iaW5hcnlTZWFyY2hIZWFkZXIublVuaXRzOwogICAgICB9KQogICAgfSwKICAgIDg6IHsKICAgICAgZmlyc3RHbHlwaDogci51aW50MTYsCiAgICAgIGNvdW50OiByLnVpbnQxNiwKICAgICAgdmFsdWVzOiBuZXcgci5BcnJheShWYWx1ZVR5cGUsICdjb3VudCcpCiAgICB9CiAgfSk7Cn07CgpmdW5jdGlvbiBTdGF0ZVRhYmxlKCkgewogIHZhciBlbnRyeURhdGEgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9OwogIHZhciBsb29rdXBUeXBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiByLnVpbnQxNjsKCiAgdmFyIGVudHJ5ID0gX09iamVjdCRhc3NpZ24oewogICAgbmV3U3RhdGU6IHIudWludDE2LAogICAgZmxhZ3M6IHIudWludDE2CiAgfSwgZW50cnlEYXRhKTsKCiAgdmFyIEVudHJ5ID0gbmV3IHIuU3RydWN0KGVudHJ5KTsKICB2YXIgU3RhdGVBcnJheSA9IG5ldyBVbmJvdW5kZWRBcnJheShuZXcgci5BcnJheShyLnVpbnQxNiwgZnVuY3Rpb24gKHQpIHsKICAgIHJldHVybiB0Lm5DbGFzc2VzOwogIH0pKTsKCiAgdmFyIFN0YXRlSGVhZGVyID0gbmV3IHIuU3RydWN0KHsKICAgIG5DbGFzc2VzOiByLnVpbnQzMiwKICAgIGNsYXNzVGFibGU6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIG5ldyBMb29rdXBUYWJsZShsb29rdXBUeXBlKSksCiAgICBzdGF0ZUFycmF5OiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBTdGF0ZUFycmF5KSwKICAgIGVudHJ5VGFibGU6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIG5ldyBVbmJvdW5kZWRBcnJheShFbnRyeSkpCiAgfSk7CgogIHJldHVybiBTdGF0ZUhlYWRlcjsKfQoKLy8gVGhpcyBpcyB0aGUgb2xkIHZlcnNpb24gb2YgdGhlIFN0YXRlVGFibGUgc3RydWN0dXJlCmZ1bmN0aW9uIFN0YXRlVGFibGUxKCkgewogIHZhciBlbnRyeURhdGEgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9OwogIHZhciBsb29rdXBUeXBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiByLnVpbnQxNjsKCiAgdmFyIENsYXNzTG9va3VwVGFibGUgPSBuZXcgci5TdHJ1Y3QoewogICAgdmVyc2lvbjogZnVuY3Rpb24gdmVyc2lvbigpIHsKICAgICAgcmV0dXJuIDg7CiAgICB9LAogICAgLy8gc2ltdWxhdGUgTG9va3VwVGFibGUKICAgIGZpcnN0R2x5cGg6IHIudWludDE2LAogICAgdmFsdWVzOiBuZXcgci5BcnJheShyLnVpbnQ4LCByLnVpbnQxNikKICB9KTsKCiAgdmFyIGVudHJ5ID0gX09iamVjdCRhc3NpZ24oewogICAgbmV3U3RhdGVPZmZzZXQ6IHIudWludDE2LAogICAgLy8gY29udmVydCBvZmZzZXQgdG8gc3RhdGVBcnJheSBpbmRleAogICAgbmV3U3RhdGU6IGZ1bmN0aW9uIG5ld1N0YXRlKHQpIHsKICAgICAgcmV0dXJuICh0Lm5ld1N0YXRlT2Zmc2V0IC0gKHQucGFyZW50LnN0YXRlQXJyYXkuYmFzZSAtIHQucGFyZW50Ll9zdGFydE9mZnNldCkpIC8gdC5wYXJlbnQubkNsYXNzZXM7CiAgICB9LAogICAgZmxhZ3M6IHIudWludDE2CiAgfSwgZW50cnlEYXRhKTsKCiAgdmFyIEVudHJ5ID0gbmV3IHIuU3RydWN0KGVudHJ5KTsKICB2YXIgU3RhdGVBcnJheSA9IG5ldyBVbmJvdW5kZWRBcnJheShuZXcgci5BcnJheShyLnVpbnQ4LCBmdW5jdGlvbiAodCkgewogICAgcmV0dXJuIHQubkNsYXNzZXM7CiAgfSkpOwoKICB2YXIgU3RhdGVIZWFkZXIxID0gbmV3IHIuU3RydWN0KHsKICAgIG5DbGFzc2VzOiByLnVpbnQxNiwKICAgIGNsYXNzVGFibGU6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENsYXNzTG9va3VwVGFibGUpLAogICAgc3RhdGVBcnJheTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgU3RhdGVBcnJheSksCiAgICBlbnRyeVRhYmxlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBuZXcgVW5ib3VuZGVkQXJyYXkoRW50cnkpKQogIH0pOwoKICByZXR1cm4gU3RhdGVIZWFkZXIxOwp9Cgp2YXIgQnNsblN1YnRhYmxlID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KCdmb3JtYXQnLCB7CiAgMDogeyAvLyBEaXN0YW5jZS1iYXNlZCwgbm8gbWFwcGluZwogICAgZGVsdGFzOiBuZXcgci5BcnJheShyLmludDE2LCAzMikKICB9LAoKICAxOiB7IC8vIERpc3RhbmNlLWJhc2VkLCB3aXRoIG1hcHBpbmcKICAgIGRlbHRhczogbmV3IHIuQXJyYXkoci5pbnQxNiwgMzIpLAogICAgbWFwcGluZ0RhdGE6IG5ldyBMb29rdXBUYWJsZShyLnVpbnQxNikKICB9LAoKICAyOiB7IC8vIENvbnRyb2wgcG9pbnQtYmFzZWQsIG5vIG1hcHBpbmcKICAgIHN0YW5kYXJkR2x5cGg6IHIudWludDE2LAogICAgY29udHJvbFBvaW50czogbmV3IHIuQXJyYXkoci51aW50MTYsIDMyKQogIH0sCgogIDM6IHsgLy8gQ29udHJvbCBwb2ludC1iYXNlZCwgd2l0aCBtYXBwaW5nCiAgICBzdGFuZGFyZEdseXBoOiByLnVpbnQxNiwKICAgIGNvbnRyb2xQb2ludHM6IG5ldyByLkFycmF5KHIudWludDE2LCAzMiksCiAgICBtYXBwaW5nRGF0YTogbmV3IExvb2t1cFRhYmxlKHIudWludDE2KQogIH0KfSk7Cgp2YXIgYnNsbiA9IG5ldyByLlN0cnVjdCh7CiAgdmVyc2lvbjogci5maXhlZDMyLAogIGZvcm1hdDogci51aW50MTYsCiAgZGVmYXVsdEJhc2VsaW5lOiByLnVpbnQxNiwKICBzdWJ0YWJsZTogQnNsblN1YnRhYmxlCn0pOwoKdmFyIFNldHRpbmcgPSBuZXcgci5TdHJ1Y3QoewogIHNldHRpbmc6IHIudWludDE2LAogIG5hbWVJbmRleDogci5pbnQxNiwKICBuYW1lOiBmdW5jdGlvbiBuYW1lKHQpIHsKICAgIHJldHVybiB0LnBhcmVudC5wYXJlbnQucGFyZW50Lm5hbWUucmVjb3Jkcy5mb250RmVhdHVyZXNbdC5uYW1lSW5kZXhdOwogIH0KfSk7Cgp2YXIgRmVhdHVyZU5hbWUgPSBuZXcgci5TdHJ1Y3QoewogIGZlYXR1cmU6IHIudWludDE2LAogIG5TZXR0aW5nczogci51aW50MTYsCiAgc2V0dGluZ1RhYmxlOiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBuZXcgci5BcnJheShTZXR0aW5nLCAnblNldHRpbmdzJyksIHsgdHlwZTogJ3BhcmVudCcgfSksCiAgZmVhdHVyZUZsYWdzOiBuZXcgci5CaXRmaWVsZChyLnVpbnQ4LCBbbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgJ2hhc0RlZmF1bHQnLCAnZXhjbHVzaXZlJ10pLAogIGRlZmF1bHRTZXR0aW5nOiByLnVpbnQ4LAogIG5hbWVJbmRleDogci5pbnQxNiwKICBuYW1lOiBmdW5jdGlvbiBuYW1lKHQpIHsKICAgIHJldHVybiB0LnBhcmVudC5wYXJlbnQubmFtZS5yZWNvcmRzLmZvbnRGZWF0dXJlc1t0Lm5hbWVJbmRleF07CiAgfQp9KTsKCnZhciBmZWF0ID0gbmV3IHIuU3RydWN0KHsKICB2ZXJzaW9uOiByLmZpeGVkMzIsCiAgZmVhdHVyZU5hbWVDb3VudDogci51aW50MTYsCiAgcmVzZXJ2ZWQxOiBuZXcgci5SZXNlcnZlZChyLnVpbnQxNiksCiAgcmVzZXJ2ZWQyOiBuZXcgci5SZXNlcnZlZChyLnVpbnQzMiksCiAgZmVhdHVyZU5hbWVzOiBuZXcgci5BcnJheShGZWF0dXJlTmFtZSwgJ2ZlYXR1cmVOYW1lQ291bnQnKQp9KTsKCnZhciBBeGlzJDEgPSBuZXcgci5TdHJ1Y3QoewogIGF4aXNUYWc6IG5ldyByLlN0cmluZyg0KSwKICBtaW5WYWx1ZTogci5maXhlZDMyLAogIGRlZmF1bHRWYWx1ZTogci5maXhlZDMyLAogIG1heFZhbHVlOiByLmZpeGVkMzIsCiAgZmxhZ3M6IHIudWludDE2LAogIG5hbWVJRDogci51aW50MTYsCiAgbmFtZTogZnVuY3Rpb24gbmFtZSh0KSB7CiAgICByZXR1cm4gdC5wYXJlbnQucGFyZW50Lm5hbWUucmVjb3Jkcy5mb250RmVhdHVyZXNbdC5uYW1lSURdOwogIH0KfSk7Cgp2YXIgSW5zdGFuY2UgPSBuZXcgci5TdHJ1Y3QoewogIG5hbWVJRDogci51aW50MTYsCiAgbmFtZTogZnVuY3Rpb24gbmFtZSh0KSB7CiAgICByZXR1cm4gdC5wYXJlbnQucGFyZW50Lm5hbWUucmVjb3Jkcy5mb250RmVhdHVyZXNbdC5uYW1lSURdOwogIH0sCiAgZmxhZ3M6IHIudWludDE2LAogIGNvb3JkOiBuZXcgci5BcnJheShyLmZpeGVkMzIsIGZ1bmN0aW9uICh0KSB7CiAgICByZXR1cm4gdC5wYXJlbnQuYXhpc0NvdW50OwogIH0pLAogIHBvc3RzY3JpcHROYW1lSUQ6IG5ldyByLk9wdGlvbmFsKHIudWludDE2LCBmdW5jdGlvbiAodCkgewogICAgcmV0dXJuIHQucGFyZW50Lmluc3RhbmNlU2l6ZSAtIHQuX2N1cnJlbnRPZmZzZXQgPiAwOwogIH0pCn0pOwoKdmFyIGZ2YXIgPSBuZXcgci5TdHJ1Y3QoewogIHZlcnNpb246IHIuZml4ZWQzMiwKICBvZmZzZXRUb0RhdGE6IHIudWludDE2LAogIGNvdW50U2l6ZVBhaXJzOiByLnVpbnQxNiwKICBheGlzQ291bnQ6IHIudWludDE2LAogIGF4aXNTaXplOiByLnVpbnQxNiwKICBpbnN0YW5jZUNvdW50OiByLnVpbnQxNiwKICBpbnN0YW5jZVNpemU6IHIudWludDE2LAogIGF4aXM6IG5ldyByLkFycmF5KEF4aXMkMSwgJ2F4aXNDb3VudCcpLAogIGluc3RhbmNlOiBuZXcgci5BcnJheShJbnN0YW5jZSwgJ2luc3RhbmNlQ291bnQnKQp9KTsKCnZhciBzaG9ydEZyYWMkMSA9IG5ldyByLkZpeGVkKDE2LCAnQkUnLCAxNCk7Cgp2YXIgT2Zmc2V0ID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIE9mZnNldCgpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBPZmZzZXQpOwogIH0KCiAgT2Zmc2V0LmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShzdHJlYW0sIHBhcmVudCkgewogICAgLy8gSW4gc2hvcnQgZm9ybWF0LCBvZmZzZXRzIGFyZSBtdWx0aXBsaWVkIGJ5IDIuCiAgICAvLyBUaGlzIGRvZXNuJ3Qgc2VlbSB0byBiZSBkb2N1bWVudGVkIGJ5IEFwcGxlLCBidXQgaXQKICAgIC8vIGlzIGltcGxlbWVudGVkIHRoaXMgd2F5IGluIEZyZWV0eXBlLgogICAgcmV0dXJuIHBhcmVudC5mbGFncyA/IHN0cmVhbS5yZWFkVUludDMyQkUoKSA6IHN0cmVhbS5yZWFkVUludDE2QkUoKSAqIDI7CiAgfTsKCiAgcmV0dXJuIE9mZnNldDsKfSgpOwoKdmFyIGd2YXIgPSBuZXcgci5TdHJ1Y3QoewogIHZlcnNpb246IHIudWludDE2LAogIHJlc2VydmVkOiBuZXcgci5SZXNlcnZlZChyLnVpbnQxNiksCiAgYXhpc0NvdW50OiByLnVpbnQxNiwKICBnbG9iYWxDb29yZENvdW50OiByLnVpbnQxNiwKICBnbG9iYWxDb29yZHM6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIG5ldyByLkFycmF5KG5ldyByLkFycmF5KHNob3J0RnJhYyQxLCAnYXhpc0NvdW50JyksICdnbG9iYWxDb29yZENvdW50JykpLAogIGdseXBoQ291bnQ6IHIudWludDE2LAogIGZsYWdzOiByLnVpbnQxNiwKICBvZmZzZXRUb0RhdGE6IHIudWludDMyLAogIG9mZnNldHM6IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoT2Zmc2V0LCAndm9pZCcsIHsgcmVsYXRpdmVUbzogJ29mZnNldFRvRGF0YScsIGFsbG93TnVsbDogZmFsc2UgfSksIGZ1bmN0aW9uICh0KSB7CiAgICByZXR1cm4gdC5nbHlwaENvdW50ICsgMTsKICB9KQp9KTsKCnZhciBDbGFzc1RhYmxlJDEgPSBuZXcgci5TdHJ1Y3QoewogIGxlbmd0aDogci51aW50MTYsCiAgY292ZXJhZ2U6IHIudWludDE2LAogIHN1YkZlYXR1cmVGbGFnczogci51aW50MzIsCiAgc3RhdGVUYWJsZTogbmV3IFN0YXRlVGFibGUxKCkKfSk7Cgp2YXIgV2lkdGhEZWx0YVJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAganVzdENsYXNzOiByLnVpbnQzMiwKICBiZWZvcmVHcm93TGltaXQ6IHIuZml4ZWQzMiwKICBiZWZvcmVTaHJpbmtMaW1pdDogci5maXhlZDMyLAogIGFmdGVyR3Jvd0xpbWl0OiByLmZpeGVkMzIsCiAgYWZ0ZXJTaHJpbmtMaW1pdDogci5maXhlZDMyLAogIGdyb3dGbGFnczogci51aW50MTYsCiAgc2hyaW5rRmxhZ3M6IHIudWludDE2Cn0pOwoKdmFyIFdpZHRoRGVsdGFDbHVzdGVyID0gbmV3IHIuQXJyYXkoV2lkdGhEZWx0YVJlY29yZCwgci51aW50MzIpOwoKdmFyIEFjdGlvbkRhdGEgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3QoJ2FjdGlvblR5cGUnLCB7CiAgMDogeyAvLyBEZWNvbXBvc2l0aW9uIGFjdGlvbgogICAgbG93ZXJMaW1pdDogci5maXhlZDMyLAogICAgdXBwZXJMaW1pdDogci5maXhlZDMyLAogICAgb3JkZXI6IHIudWludDE2LAogICAgZ2x5cGhzOiBuZXcgci5BcnJheShyLnVpbnQxNiwgci51aW50MTYpCiAgfSwKCiAgMTogeyAvLyBVbmNvbmRpdGlvbmFsIGFkZCBnbHlwaCBhY3Rpb24KICAgIGFkZEdseXBoOiByLnVpbnQxNgogIH0sCgogIDI6IHsgLy8gQ29uZGl0aW9uYWwgYWRkIGdseXBoIGFjdGlvbgogICAgc3Vic3RUaHJlc2hvbGQ6IHIuZml4ZWQzMiwKICAgIGFkZEdseXBoOiByLnVpbnQxNiwKICAgIHN1YnN0R2x5cGg6IHIudWludDE2CiAgfSwKCiAgMzoge30sIC8vIFN0cmV0Y2ggZ2x5cGggYWN0aW9uIChubyBkYXRhLCBub3Qgc3VwcG9ydGVkIGJ5IENvcmVUZXh0KQoKICA0OiB7IC8vIER1Y3RpbGUgZ2x5cGggYWN0aW9uIChub3Qgc3VwcG9ydGVkIGJ5IENvcmVUZXh0KQogICAgdmFyaWF0aW9uQXhpczogci51aW50MzIsCiAgICBtaW5pbXVtTGltaXQ6IHIuZml4ZWQzMiwKICAgIG5vU3RyZXRjaFZhbHVlOiByLmZpeGVkMzIsCiAgICBtYXhpbXVtTGltaXQ6IHIuZml4ZWQzMgogIH0sCgogIDU6IHsgLy8gUmVwZWF0ZWQgYWRkIGdseXBoIGFjdGlvbgogICAgZmxhZ3M6IHIudWludDE2LAogICAgZ2x5cGg6IHIudWludDE2CiAgfQp9KTsKCnZhciBBY3Rpb24gPSBuZXcgci5TdHJ1Y3QoewogIGFjdGlvbkNsYXNzOiByLnVpbnQxNiwKICBhY3Rpb25UeXBlOiByLnVpbnQxNiwKICBhY3Rpb25MZW5ndGg6IHIudWludDMyLAogIGFjdGlvbkRhdGE6IEFjdGlvbkRhdGEsCiAgcGFkZGluZzogbmV3IHIuUmVzZXJ2ZWQoci51aW50OCwgZnVuY3Rpb24gKHQpIHsKICAgIHJldHVybiB0LmFjdGlvbkxlbmd0aCAtIHQuX2N1cnJlbnRPZmZzZXQ7CiAgfSkKfSk7Cgp2YXIgUG9zdGNvbXBlbnNhdGlvbkFjdGlvbiA9IG5ldyByLkFycmF5KEFjdGlvbiwgci51aW50MzIpOwp2YXIgUG9zdENvbXBlbnNhdGlvblRhYmxlID0gbmV3IHIuU3RydWN0KHsKICBsb29rdXBUYWJsZTogbmV3IExvb2t1cFRhYmxlKG5ldyByLlBvaW50ZXIoci51aW50MTYsIFBvc3Rjb21wZW5zYXRpb25BY3Rpb24pKQp9KTsKCnZhciBKdXN0aWZpY2F0aW9uVGFibGUgPSBuZXcgci5TdHJ1Y3QoewogIGNsYXNzVGFibGU6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENsYXNzVGFibGUkMSwgeyB0eXBlOiAncGFyZW50JyB9KSwKICB3ZGNPZmZzZXQ6IHIudWludDE2LAogIHBvc3RDb21wZW5zYXRpb25UYWJsZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgUG9zdENvbXBlbnNhdGlvblRhYmxlLCB7IHR5cGU6ICdwYXJlbnQnIH0pLAogIHdpZHRoRGVsdGFDbHVzdGVyczogbmV3IExvb2t1cFRhYmxlKG5ldyByLlBvaW50ZXIoci51aW50MTYsIFdpZHRoRGVsdGFDbHVzdGVyLCB7IHR5cGU6ICdwYXJlbnQnLCByZWxhdGl2ZVRvOiAnd2RjT2Zmc2V0JyB9KSkKfSk7Cgp2YXIganVzdCA9IG5ldyByLlN0cnVjdCh7CiAgdmVyc2lvbjogci51aW50MzIsCiAgZm9ybWF0OiByLnVpbnQxNiwKICBob3Jpem9udGFsOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBKdXN0aWZpY2F0aW9uVGFibGUpLAogIHZlcnRpY2FsOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBKdXN0aWZpY2F0aW9uVGFibGUpCn0pOwoKdmFyIExpZ2F0dXJlRGF0YSA9IHsKICBhY3Rpb246IHIudWludDE2Cn07Cgp2YXIgQ29udGV4dHVhbERhdGEgPSB7CiAgbWFya0luZGV4OiByLnVpbnQxNiwKICBjdXJyZW50SW5kZXg6IHIudWludDE2Cn07Cgp2YXIgSW5zZXJ0aW9uRGF0YSA9IHsKICBjdXJyZW50SW5zZXJ0SW5kZXg6IHIudWludDE2LAogIG1hcmtlZEluc2VydEluZGV4OiByLnVpbnQxNgp9OwoKdmFyIFN1YnN0aXR1dGlvblRhYmxlID0gbmV3IHIuU3RydWN0KHsKICBpdGVtczogbmV3IFVuYm91bmRlZEFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MzIsIG5ldyBMb29rdXBUYWJsZSgpKSkKfSk7Cgp2YXIgU3VidGFibGVEYXRhID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KCd0eXBlJywgewogIDA6IHsgLy8gSW5kaWMgUmVhcnJhbmdlbWVudCBTdWJ0YWJsZQogICAgc3RhdGVUYWJsZTogbmV3IFN0YXRlVGFibGUoKQogIH0sCgogIDE6IHsgLy8gQ29udGV4dHVhbCBHbHlwaCBTdWJzdGl0dXRpb24gU3VidGFibGUKICAgIHN0YXRlVGFibGU6IG5ldyBTdGF0ZVRhYmxlKENvbnRleHR1YWxEYXRhKSwKICAgIHN1YnN0aXR1dGlvblRhYmxlOiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBTdWJzdGl0dXRpb25UYWJsZSkKICB9LAoKICAyOiB7IC8vIExpZ2F0dXJlIHN1YnRhYmxlCiAgICBzdGF0ZVRhYmxlOiBuZXcgU3RhdGVUYWJsZShMaWdhdHVyZURhdGEpLAogICAgbGlnYXR1cmVBY3Rpb25zOiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBuZXcgVW5ib3VuZGVkQXJyYXkoci51aW50MzIpKSwKICAgIGNvbXBvbmVudHM6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIG5ldyBVbmJvdW5kZWRBcnJheShyLnVpbnQxNikpLAogICAgbGlnYXR1cmVMaXN0OiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBuZXcgVW5ib3VuZGVkQXJyYXkoci51aW50MTYpKQogIH0sCgogIDQ6IHsgLy8gTm9uLWNvbnRleHR1YWwgR2x5cGggU3Vic3RpdHV0aW9uIFN1YnRhYmxlCiAgICBsb29rdXBUYWJsZTogbmV3IExvb2t1cFRhYmxlKCkKICB9LAoKICA1OiB7IC8vIEdseXBoIEluc2VydGlvbiBTdWJ0YWJsZQogICAgc3RhdGVUYWJsZTogbmV3IFN0YXRlVGFibGUoSW5zZXJ0aW9uRGF0YSksCiAgICBpbnNlcnRpb25BY3Rpb25zOiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBuZXcgVW5ib3VuZGVkQXJyYXkoci51aW50MTYpKQogIH0KfSk7Cgp2YXIgU3VidGFibGUgPSBuZXcgci5TdHJ1Y3QoewogIGxlbmd0aDogci51aW50MzIsCiAgY292ZXJhZ2U6IHIudWludDI0LAogIHR5cGU6IHIudWludDgsCiAgc3ViRmVhdHVyZUZsYWdzOiByLnVpbnQzMiwKICB0YWJsZTogU3VidGFibGVEYXRhLAogIHBhZGRpbmc6IG5ldyByLlJlc2VydmVkKHIudWludDgsIGZ1bmN0aW9uICh0KSB7CiAgICByZXR1cm4gdC5sZW5ndGggLSB0Ll9jdXJyZW50T2Zmc2V0OwogIH0pCn0pOwoKdmFyIEZlYXR1cmVFbnRyeSA9IG5ldyByLlN0cnVjdCh7CiAgZmVhdHVyZVR5cGU6IHIudWludDE2LAogIGZlYXR1cmVTZXR0aW5nOiByLnVpbnQxNiwKICBlbmFibGVGbGFnczogci51aW50MzIsCiAgZGlzYWJsZUZsYWdzOiByLnVpbnQzMgp9KTsKCnZhciBNb3J4Q2hhaW4gPSBuZXcgci5TdHJ1Y3QoewogIGRlZmF1bHRGbGFnczogci51aW50MzIsCiAgY2hhaW5MZW5ndGg6IHIudWludDMyLAogIG5GZWF0dXJlRW50cmllczogci51aW50MzIsCiAgblN1YnRhYmxlczogci51aW50MzIsCiAgZmVhdHVyZXM6IG5ldyByLkFycmF5KEZlYXR1cmVFbnRyeSwgJ25GZWF0dXJlRW50cmllcycpLAogIHN1YnRhYmxlczogbmV3IHIuQXJyYXkoU3VidGFibGUsICduU3VidGFibGVzJykKfSk7Cgp2YXIgbW9yeCA9IG5ldyByLlN0cnVjdCh7CiAgdmVyc2lvbjogci51aW50MTYsCiAgdW51c2VkOiBuZXcgci5SZXNlcnZlZChyLnVpbnQxNiksCiAgbkNoYWluczogci51aW50MzIsCiAgY2hhaW5zOiBuZXcgci5BcnJheShNb3J4Q2hhaW4sICduQ2hhaW5zJykKfSk7Cgp2YXIgT3B0aWNhbEJvdW5kcyA9IG5ldyByLlN0cnVjdCh7CiAgbGVmdDogci5pbnQxNiwKICB0b3A6IHIuaW50MTYsCiAgcmlnaHQ6IHIuaW50MTYsCiAgYm90dG9tOiByLmludDE2Cn0pOwoKdmFyIG9wYmQgPSBuZXcgci5TdHJ1Y3QoewogIHZlcnNpb246IHIuZml4ZWQzMiwKICBmb3JtYXQ6IHIudWludDE2LAogIGxvb2t1cFRhYmxlOiBuZXcgTG9va3VwVGFibGUoT3B0aWNhbEJvdW5kcykKfSk7Cgp2YXIgdGFibGVzID0ge307Ci8vIFJlcXVpcmVkIFRhYmxlcwp0YWJsZXMuY21hcCA9IGNtYXA7CnRhYmxlcy5oZWFkID0gaGVhZDsKdGFibGVzLmhoZWEgPSBoaGVhOwp0YWJsZXMuaG10eCA9IGhtdHg7CnRhYmxlcy5tYXhwID0gbWF4cDsKdGFibGVzLm5hbWUgPSBOYW1lVGFibGU7CnRhYmxlc1snT1MvMiddID0gT1MyOwp0YWJsZXMucG9zdCA9IHBvc3Q7CgovLyBUcnVlVHlwZSBPdXRsaW5lcwp0YWJsZXMuZnBnbSA9IGZwZ207CnRhYmxlcy5sb2NhID0gbG9jYTsKdGFibGVzLnByZXAgPSBwcmVwOwp0YWJsZXNbJ2N2dCAnXSA9IGN2dDsKdGFibGVzLmdseWYgPSBnbHlmOwoKLy8gUG9zdFNjcmlwdCBPdXRsaW5lcwp0YWJsZXNbJ0NGRiAnXSA9IENGRkZvbnQ7CnRhYmxlc1snQ0ZGMiddID0gQ0ZGRm9udDsKdGFibGVzLlZPUkcgPSBWT1JHOwoKLy8gQml0bWFwIEdseXBocwp0YWJsZXMuRUJMQyA9IEVCTEM7CnRhYmxlcy5DQkxDID0gdGFibGVzLkVCTEM7CnRhYmxlcy5zYml4ID0gc2JpeDsKdGFibGVzLkNPTFIgPSBDT0xSOwp0YWJsZXMuQ1BBTCA9IENQQUw7CgovLyBBZHZhbmNlZCBPcGVuVHlwZSBUYWJsZXMKdGFibGVzLkJBU0UgPSBCQVNFOwp0YWJsZXMuR0RFRiA9IEdERUY7CnRhYmxlcy5HUE9TID0gR1BPUzsKdGFibGVzLkdTVUIgPSBHU1VCOwp0YWJsZXMuSlNURiA9IEpTVEY7CgovLyBPcGVuVHlwZSB2YXJpYXRpb25zIHRhYmxlcwp0YWJsZXMuSFZBUiA9IEhWQVI7CgovLyBPdGhlciBPcGVuVHlwZSBUYWJsZXMKdGFibGVzLkRTSUcgPSBEU0lHOwp0YWJsZXMuZ2FzcCA9IGdhc3A7CnRhYmxlcy5oZG14ID0gaGRteDsKdGFibGVzLmtlcm4gPSBrZXJuOwp0YWJsZXMuTFRTSCA9IExUU0g7CnRhYmxlcy5QQ0xUID0gUENMVDsKdGFibGVzLlZETVggPSBWRE1YOwp0YWJsZXMudmhlYSA9IHZoZWE7CnRhYmxlcy52bXR4ID0gdm10eDsKCi8vIEFwcGxlIEFkdmFuY2VkIFR5cG9ncmFwaHkgVGFibGVzCnRhYmxlcy5hdmFyID0gYXZhcjsKdGFibGVzLmJzbG4gPSBic2xuOwp0YWJsZXMuZmVhdCA9IGZlYXQ7CnRhYmxlcy5mdmFyID0gZnZhcjsKdGFibGVzLmd2YXIgPSBndmFyOwp0YWJsZXMuanVzdCA9IGp1c3Q7CnRhYmxlcy5tb3J4ID0gbW9yeDsKdGFibGVzLm9wYmQgPSBvcGJkOwoKdmFyIFRhYmxlRW50cnkgPSBuZXcgci5TdHJ1Y3QoewogIHRhZzogbmV3IHIuU3RyaW5nKDQpLAogIGNoZWNrU3VtOiByLnVpbnQzMiwKICBvZmZzZXQ6IG5ldyByLlBvaW50ZXIoci51aW50MzIsICd2b2lkJywgeyB0eXBlOiAnZ2xvYmFsJyB9KSwKICBsZW5ndGg6IHIudWludDMyCn0pOwoKdmFyIERpcmVjdG9yeSA9IG5ldyByLlN0cnVjdCh7CiAgdGFnOiBuZXcgci5TdHJpbmcoNCksCiAgbnVtVGFibGVzOiByLnVpbnQxNiwKICBzZWFyY2hSYW5nZTogci51aW50MTYsCiAgZW50cnlTZWxlY3Rvcjogci51aW50MTYsCiAgcmFuZ2VTaGlmdDogci51aW50MTYsCiAgdGFibGVzOiBuZXcgci5BcnJheShUYWJsZUVudHJ5LCAnbnVtVGFibGVzJykKfSk7CgpEaXJlY3RvcnkucHJvY2VzcyA9IGZ1bmN0aW9uICgpIHsKICB2YXIgdGFibGVzID0ge307CiAgZm9yICh2YXIgX2l0ZXJhdG9yID0gdGhpcy50YWJsZXMsIF9pc0FycmF5ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IpLCBfaSA9IDAsIF9pdGVyYXRvciA9IF9pc0FycmF5ID8gX2l0ZXJhdG9yIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcik7OykgewogICAgdmFyIF9yZWY7CgogICAgaWYgKF9pc0FycmF5KSB7CiAgICAgIGlmIChfaSA+PSBfaXRlcmF0b3IubGVuZ3RoKSBicmVhazsKICAgICAgX3JlZiA9IF9pdGVyYXRvcltfaSsrXTsKICAgIH0gZWxzZSB7CiAgICAgIF9pID0gX2l0ZXJhdG9yLm5leHQoKTsKICAgICAgaWYgKF9pLmRvbmUpIGJyZWFrOwogICAgICBfcmVmID0gX2kudmFsdWU7CiAgICB9CgogICAgdmFyIHRhYmxlID0gX3JlZjsKCiAgICB0YWJsZXNbdGFibGUudGFnXSA9IHRhYmxlOwogIH0KCiAgdGhpcy50YWJsZXMgPSB0YWJsZXM7Cn07CgpEaXJlY3RvcnkucHJlRW5jb2RlID0gZnVuY3Rpb24gKHN0cmVhbSkgewogIHZhciB0YWJsZXMkJCA9IFtdOwogIGZvciAodmFyIHRhZyBpbiB0aGlzLnRhYmxlcykgewogICAgdmFyIHRhYmxlID0gdGhpcy50YWJsZXNbdGFnXTsKICAgIGlmICh0YWJsZSkgewogICAgICB0YWJsZXMkJC5wdXNoKHsKICAgICAgICB0YWc6IHRhZywKICAgICAgICBjaGVja1N1bTogMCwKICAgICAgICBvZmZzZXQ6IG5ldyByLlZvaWRQb2ludGVyKHRhYmxlc1t0YWddLCB0YWJsZSksCiAgICAgICAgbGVuZ3RoOiB0YWJsZXNbdGFnXS5zaXplKHRhYmxlKQogICAgICB9KTsKICAgIH0KICB9CgogIHRoaXMudGFnID0gJ3RydWUnOwogIHRoaXMubnVtVGFibGVzID0gdGFibGVzJCQubGVuZ3RoOwogIHRoaXMudGFibGVzID0gdGFibGVzJCQ7CgogIHRoaXMuc2VhcmNoUmFuZ2UgPSBNYXRoLmZsb29yKE1hdGgubG9nKHRoaXMubnVtVGFibGVzKSAvIE1hdGguTE4yKSAqIDE2OwogIHRoaXMuZW50cnlTZWxlY3RvciA9IE1hdGguZmxvb3IodGhpcy5zZWFyY2hSYW5nZSAvIE1hdGguTE4yKTsKICB0aGlzLnJhbmdlU2hpZnQgPSB0aGlzLm51bVRhYmxlcyAqIDE2IC0gdGhpcy5zZWFyY2hSYW5nZTsKfTsKCmZ1bmN0aW9uIGJpbmFyeVNlYXJjaChhcnIsIGNtcCkgewogIHZhciBtaW4gPSAwOwogIHZhciBtYXggPSBhcnIubGVuZ3RoIC0gMTsKICB3aGlsZSAobWluIDw9IG1heCkgewogICAgdmFyIG1pZCA9IG1pbiArIG1heCA+PiAxOwogICAgdmFyIHJlcyA9IGNtcChhcnJbbWlkXSk7CgogICAgaWYgKHJlcyA8IDApIHsKICAgICAgbWF4ID0gbWlkIC0gMTsKICAgIH0gZWxzZSBpZiAocmVzID4gMCkgewogICAgICBtaW4gPSBtaWQgKyAxOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIG1pZDsKICAgIH0KICB9CgogIHJldHVybiAtMTsKfQoKZnVuY3Rpb24gcmFuZ2UoaW5kZXgsIGVuZCkgewogIHZhciByYW5nZSA9IFtdOwogIHdoaWxlIChpbmRleCA8IGVuZCkgewogICAgcmFuZ2UucHVzaChpbmRleCsrKTsKICB9CiAgcmV0dXJuIHJhbmdlOwp9Cgp2YXIgX2NsYXNzJDE7CmZ1bmN0aW9uIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IkMSh0YXJnZXQsIHByb3BlcnR5LCBkZWNvcmF0b3JzLCBkZXNjcmlwdG9yLCBjb250ZXh0KSB7CiAgdmFyIGRlc2MgPSB7fTsKICBPYmplY3RbJ2tlJyArICd5cyddKGRlc2NyaXB0b3IpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgewogICAgZGVzY1trZXldID0gZGVzY3JpcHRvcltrZXldOwogIH0pOwogIGRlc2MuZW51bWVyYWJsZSA9ICEhZGVzYy5lbnVtZXJhYmxlOwogIGRlc2MuY29uZmlndXJhYmxlID0gISFkZXNjLmNvbmZpZ3VyYWJsZTsKCiAgaWYgKCd2YWx1ZScgaW4gZGVzYyB8fCBkZXNjLmluaXRpYWxpemVyKSB7CiAgICBkZXNjLndyaXRhYmxlID0gdHJ1ZTsKICB9CgogIGRlc2MgPSBkZWNvcmF0b3JzLnNsaWNlKCkucmV2ZXJzZSgpLnJlZHVjZShmdW5jdGlvbiAoZGVzYywgZGVjb3JhdG9yKSB7CiAgICByZXR1cm4gZGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHksIGRlc2MpIHx8IGRlc2M7CiAgfSwgZGVzYyk7CgogIGlmIChjb250ZXh0ICYmIGRlc2MuaW5pdGlhbGl6ZXIgIT09IHZvaWQgMCkgewogICAgZGVzYy52YWx1ZSA9IGRlc2MuaW5pdGlhbGl6ZXIgPyBkZXNjLmluaXRpYWxpemVyLmNhbGwoY29udGV4dCkgOiB2b2lkIDA7CiAgICBkZXNjLmluaXRpYWxpemVyID0gdW5kZWZpbmVkOwogIH0KCiAgaWYgKGRlc2MuaW5pdGlhbGl6ZXIgPT09IHZvaWQgMCkgewogICAgT2JqZWN0WydkZWZpbmUnICsgJ1Byb3BlcnR5J10odGFyZ2V0LCBwcm9wZXJ0eSwgZGVzYyk7CiAgICBkZXNjID0gbnVsbDsKICB9CgogIHJldHVybiBkZXNjOwp9CgovLyBpY29udi1saXRlIGlzIGFuIG9wdGlvbmFsIGRlcGVuZGVuY3kuCnRyeSB7CiAgdmFyIGljb252ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Mik7Cn0gY2F0Y2ggKGVycikge30KCnZhciBDbWFwUHJvY2Vzc29yID0gKF9jbGFzcyQxID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIENtYXBQcm9jZXNzb3IoY21hcFRhYmxlKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ21hcFByb2Nlc3Nvcik7CgogICAgLy8gQXR0ZW1wdCB0byBmaW5kIGEgVW5pY29kZSBjbWFwIGZpcnN0CiAgICB0aGlzLmVuY29kaW5nID0gbnVsbDsKICAgIHRoaXMuY21hcCA9IHRoaXMuZmluZFN1YnRhYmxlKGNtYXBUYWJsZSwgWwogICAgLy8gMzItYml0IHN1YnRhYmxlcwogICAgWzMsIDEwXSwgWzAsIDZdLCBbMCwgNF0sCgogICAgLy8gMTYtYml0IHN1YnRhYmxlcwogICAgWzMsIDFdLCBbMCwgM10sIFswLCAyXSwgWzAsIDFdLCBbMCwgMF1dKTsKCiAgICAvLyBJZiBub3QgdW5pY29kZSBjbWFwIHdhcyBmb3VuZCwgYW5kIGljb252LWxpdGUgaXMgaW5zdGFsbGVkLAogICAgLy8gdGFrZSB0aGUgZmlyc3QgdGFibGUgd2l0aCBhIHN1cHBvcnRlZCBlbmNvZGluZy4KICAgIGlmICghdGhpcy5jbWFwICYmIGljb252KSB7CiAgICAgIGZvciAodmFyIF9pdGVyYXRvciA9IGNtYXBUYWJsZS50YWJsZXMsIF9pc0FycmF5ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IpLCBfaSA9IDAsIF9pdGVyYXRvciA9IF9pc0FycmF5ID8gX2l0ZXJhdG9yIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcik7OykgewogICAgICAgIHZhciBfcmVmOwoKICAgICAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgICAgIGlmIChfaSA+PSBfaXRlcmF0b3IubGVuZ3RoKSBicmVhazsKICAgICAgICAgIF9yZWYgPSBfaXRlcmF0b3JbX2krK107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF9pID0gX2l0ZXJhdG9yLm5leHQoKTsKICAgICAgICAgIGlmIChfaS5kb25lKSBicmVhazsKICAgICAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBjbWFwID0gX3JlZjsKCiAgICAgICAgdmFyIGVuY29kaW5nID0gZ2V0RW5jb2RpbmcoY21hcC5wbGF0Zm9ybUlELCBjbWFwLmVuY29kaW5nSUQsIGNtYXAudGFibGUubGFuZ3VhZ2UgLSAxKTsKICAgICAgICBpZiAoaWNvbnYuZW5jb2RpbmdFeGlzdHMoZW5jb2RpbmcpKSB7CiAgICAgICAgICB0aGlzLmNtYXAgPSBjbWFwLnRhYmxlOwogICAgICAgICAgdGhpcy5lbmNvZGluZyA9IGVuY29kaW5nOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIGlmICghdGhpcy5jbWFwKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgYSBzdXBwb3J0ZWQgY21hcCB0YWJsZSIpOwogICAgfQoKICAgIHRoaXMudXZzID0gdGhpcy5maW5kU3VidGFibGUoY21hcFRhYmxlLCBbWzAsIDVdXSk7CiAgICBpZiAodGhpcy51dnMgJiYgdGhpcy51dnMudmVyc2lvbiAhPT0gMTQpIHsKICAgICAgdGhpcy51dnMgPSBudWxsOwogICAgfQogIH0KCiAgQ21hcFByb2Nlc3Nvci5wcm90b3R5cGUuZmluZFN1YnRhYmxlID0gZnVuY3Rpb24gZmluZFN1YnRhYmxlKGNtYXBUYWJsZSwgcGFpcnMpIHsKICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSBwYWlycywgX2lzQXJyYXkyID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IyKSwgX2kyID0gMCwgX2l0ZXJhdG9yMiA9IF9pc0FycmF5MiA/IF9pdGVyYXRvcjIgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMik7OykgewogICAgICB2YXIgX3JlZjI7CgogICAgICBpZiAoX2lzQXJyYXkyKSB7CiAgICAgICAgaWYgKF9pMiA+PSBfaXRlcmF0b3IyLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZjIgPSBfaXRlcmF0b3IyW19pMisrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaTIgPSBfaXRlcmF0b3IyLm5leHQoKTsKICAgICAgICBpZiAoX2kyLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYyID0gX2kyLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgX3JlZjMgPSBfcmVmMiwKICAgICAgICAgIHBsYXRmb3JtSUQgPSBfcmVmM1swXSwKICAgICAgICAgIGVuY29kaW5nSUQgPSBfcmVmM1sxXTsKCiAgICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSBjbWFwVGFibGUudGFibGVzLCBfaXNBcnJheTMgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjMpLCBfaTMgPSAwLCBfaXRlcmF0b3IzID0gX2lzQXJyYXkzID8gX2l0ZXJhdG9yMyA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IzKTs7KSB7CiAgICAgICAgdmFyIF9yZWY0OwoKICAgICAgICBpZiAoX2lzQXJyYXkzKSB7CiAgICAgICAgICBpZiAoX2kzID49IF9pdGVyYXRvcjMubGVuZ3RoKSBicmVhazsKICAgICAgICAgIF9yZWY0ID0gX2l0ZXJhdG9yM1tfaTMrK107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF9pMyA9IF9pdGVyYXRvcjMubmV4dCgpOwogICAgICAgICAgaWYgKF9pMy5kb25lKSBicmVhazsKICAgICAgICAgIF9yZWY0ID0gX2kzLnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIGNtYXAgPSBfcmVmNDsKCiAgICAgICAgaWYgKGNtYXAucGxhdGZvcm1JRCA9PT0gcGxhdGZvcm1JRCAmJiBjbWFwLmVuY29kaW5nSUQgPT09IGVuY29kaW5nSUQpIHsKICAgICAgICAgIHJldHVybiBjbWFwLnRhYmxlOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHJldHVybiBudWxsOwogIH07CgogIENtYXBQcm9jZXNzb3IucHJvdG90eXBlLmxvb2t1cCA9IGZ1bmN0aW9uIGxvb2t1cChjb2RlcG9pbnQsIHZhcmlhdGlvblNlbGVjdG9yKSB7CiAgICAvLyBJZiB0aGVyZSBpcyBubyBVbmljb2RlIGNtYXAgaW4gdGhpcyBmb250LCB3ZSBuZWVkIHRvIHJlLWVuY29kZQogICAgLy8gdGhlIGNvZGVwb2ludCBpbiB0aGUgZW5jb2RpbmcgdGhhdCB0aGUgY21hcCBzdXBwb3J0cy4KICAgIGlmICh0aGlzLmVuY29kaW5nKSB7CiAgICAgIHZhciBidWYgPSBpY29udi5lbmNvZGUoX1N0cmluZyRmcm9tQ29kZVBvaW50KGNvZGVwb2ludCksIHRoaXMuZW5jb2RpbmcpOwogICAgICBjb2RlcG9pbnQgPSAwOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1Zi5sZW5ndGg7IGkrKykgewogICAgICAgIGNvZGVwb2ludCA9IGNvZGVwb2ludCA8PCA4IHwgYnVmW2ldOwogICAgICB9CgogICAgICAvLyBPdGhlcndpc2UsIHRyeSB0byBnZXQgYSBVbmljb2RlIHZhcmlhdGlvbiBzZWxlY3RvciBmb3IgdGhpcyBjb2RlcG9pbnQgaWYgb25lIGlzIHByb3ZpZGVkLgogICAgfSBlbHNlIGlmICh2YXJpYXRpb25TZWxlY3RvcikgewogICAgICB2YXIgZ2lkID0gdGhpcy5nZXRWYXJpYXRpb25TZWxlY3Rvcihjb2RlcG9pbnQsIHZhcmlhdGlvblNlbGVjdG9yKTsKICAgICAgaWYgKGdpZCkgewogICAgICAgIHJldHVybiBnaWQ7CiAgICAgIH0KICAgIH0KCiAgICB2YXIgY21hcCA9IHRoaXMuY21hcDsKICAgIHN3aXRjaCAoY21hcC52ZXJzaW9uKSB7CiAgICAgIGNhc2UgMDoKICAgICAgICByZXR1cm4gY21hcC5jb2RlTWFwLmdldChjb2RlcG9pbnQpIHx8IDA7CgogICAgICBjYXNlIDQ6CiAgICAgICAgewogICAgICAgICAgdmFyIG1pbiA9IDA7CiAgICAgICAgICB2YXIgbWF4ID0gY21hcC5zZWdDb3VudCAtIDE7CiAgICAgICAgICB3aGlsZSAobWluIDw9IG1heCkgewogICAgICAgICAgICB2YXIgbWlkID0gbWluICsgbWF4ID4+IDE7CgogICAgICAgICAgICBpZiAoY29kZXBvaW50IDwgY21hcC5zdGFydENvZGUuZ2V0KG1pZCkpIHsKICAgICAgICAgICAgICBtYXggPSBtaWQgLSAxOwogICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGVwb2ludCA+IGNtYXAuZW5kQ29kZS5nZXQobWlkKSkgewogICAgICAgICAgICAgIG1pbiA9IG1pZCArIDE7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdmFyIHJhbmdlT2Zmc2V0ID0gY21hcC5pZFJhbmdlT2Zmc2V0LmdldChtaWQpOwogICAgICAgICAgICAgIHZhciBfZ2lkID0gdm9pZCAwOwoKICAgICAgICAgICAgICBpZiAocmFuZ2VPZmZzZXQgPT09IDApIHsKICAgICAgICAgICAgICAgIF9naWQgPSBjb2RlcG9pbnQgKyBjbWFwLmlkRGVsdGEuZ2V0KG1pZCk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHJhbmdlT2Zmc2V0IC8gMiArIChjb2RlcG9pbnQgLSBjbWFwLnN0YXJ0Q29kZS5nZXQobWlkKSkgLSAoY21hcC5zZWdDb3VudCAtIG1pZCk7CiAgICAgICAgICAgICAgICBfZ2lkID0gY21hcC5nbHlwaEluZGV4QXJyYXkuZ2V0KGluZGV4KSB8fCAwOwogICAgICAgICAgICAgICAgaWYgKF9naWQgIT09IDApIHsKICAgICAgICAgICAgICAgICAgX2dpZCArPSBjbWFwLmlkRGVsdGEuZ2V0KG1pZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICByZXR1cm4gX2dpZCAmIDB4ZmZmZjsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgIGNhc2UgODoKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RPRE86IGNtYXAgZm9ybWF0IDgnKTsKCiAgICAgIGNhc2UgNjoKICAgICAgY2FzZSAxMDoKICAgICAgICByZXR1cm4gY21hcC5nbHlwaEluZGljZXMuZ2V0KGNvZGVwb2ludCAtIGNtYXAuZmlyc3RDb2RlKSB8fCAwOwoKICAgICAgY2FzZSAxMjoKICAgICAgY2FzZSAxMzoKICAgICAgICB7CiAgICAgICAgICB2YXIgX21pbiA9IDA7CiAgICAgICAgICB2YXIgX21heCA9IGNtYXAubkdyb3VwcyAtIDE7CiAgICAgICAgICB3aGlsZSAoX21pbiA8PSBfbWF4KSB7CiAgICAgICAgICAgIHZhciBfbWlkID0gX21pbiArIF9tYXggPj4gMTsKICAgICAgICAgICAgdmFyIGdyb3VwID0gY21hcC5ncm91cHMuZ2V0KF9taWQpOwoKICAgICAgICAgICAgaWYgKGNvZGVwb2ludCA8IGdyb3VwLnN0YXJ0Q2hhckNvZGUpIHsKICAgICAgICAgICAgICBfbWF4ID0gX21pZCAtIDE7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZXBvaW50ID4gZ3JvdXAuZW5kQ2hhckNvZGUpIHsKICAgICAgICAgICAgICBfbWluID0gX21pZCArIDE7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgaWYgKGNtYXAudmVyc2lvbiA9PT0gMTIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBncm91cC5nbHlwaElEICsgKGNvZGVwb2ludCAtIGdyb3VwLnN0YXJ0Q2hhckNvZGUpOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZ3JvdXAuZ2x5cGhJRDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICBjYXNlIDE0OgogICAgICAgIHRocm93IG5ldyBFcnJvcignVE9ETzogY21hcCBmb3JtYXQgMTQnKTsKCiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGNtYXAgZm9ybWF0ICcgKyBjbWFwLnZlcnNpb24pOwogICAgfQogIH07CgogIENtYXBQcm9jZXNzb3IucHJvdG90eXBlLmdldFZhcmlhdGlvblNlbGVjdG9yID0gZnVuY3Rpb24gZ2V0VmFyaWF0aW9uU2VsZWN0b3IoY29kZXBvaW50LCB2YXJpYXRpb25TZWxlY3RvcikgewogICAgaWYgKCF0aGlzLnV2cykgewogICAgICByZXR1cm4gMDsKICAgIH0KCiAgICB2YXIgc2VsZWN0b3JzID0gdGhpcy51dnMudmFyU2VsZWN0b3JzLnRvQXJyYXkoKTsKICAgIHZhciBpID0gYmluYXJ5U2VhcmNoKHNlbGVjdG9ycywgZnVuY3Rpb24gKHgpIHsKICAgICAgcmV0dXJuIHZhcmlhdGlvblNlbGVjdG9yIC0geC52YXJTZWxlY3RvcjsKICAgIH0pOwogICAgdmFyIHNlbCA9IHNlbGVjdG9yc1tpXTsKCiAgICBpZiAoaSAhPT0gLTEgJiYgc2VsLmRlZmF1bHRVVlMpIHsKICAgICAgaSA9IGJpbmFyeVNlYXJjaChzZWwuZGVmYXVsdFVWUywgZnVuY3Rpb24gKHgpIHsKICAgICAgICByZXR1cm4gY29kZXBvaW50IDwgeC5zdGFydFVuaWNvZGVWYWx1ZSA/IC0xIDogY29kZXBvaW50ID4geC5zdGFydFVuaWNvZGVWYWx1ZSArIHguYWRkaXRpb25hbENvdW50ID8gKzEgOiAwOwogICAgICB9KTsKICAgIH0KCiAgICBpZiAoaSAhPT0gLTEgJiYgc2VsLm5vbkRlZmF1bHRVVlMpIHsKICAgICAgaSA9IGJpbmFyeVNlYXJjaChzZWwubm9uRGVmYXVsdFVWUywgZnVuY3Rpb24gKHgpIHsKICAgICAgICByZXR1cm4gY29kZXBvaW50IC0geC51bmljb2RlVmFsdWU7CiAgICAgIH0pOwogICAgICBpZiAoaSAhPT0gLTEpIHsKICAgICAgICByZXR1cm4gc2VsLm5vbkRlZmF1bHRVVlNbaV0uZ2x5cGhJRDsKICAgICAgfQogICAgfQoKICAgIHJldHVybiAwOwogIH07CgogIENtYXBQcm9jZXNzb3IucHJvdG90eXBlLmdldENoYXJhY3RlclNldCA9IGZ1bmN0aW9uIGdldENoYXJhY3RlclNldCgpIHsKICAgIHZhciBjbWFwID0gdGhpcy5jbWFwOwogICAgc3dpdGNoIChjbWFwLnZlcnNpb24pIHsKICAgICAgY2FzZSAwOgogICAgICAgIHJldHVybiByYW5nZSgwLCBjbWFwLmNvZGVNYXAubGVuZ3RoKTsKCiAgICAgIGNhc2UgNDoKICAgICAgICB7CiAgICAgICAgICB2YXIgcmVzID0gW107CiAgICAgICAgICB2YXIgZW5kQ29kZXMgPSBjbWFwLmVuZENvZGUudG9BcnJheSgpOwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbmRDb2Rlcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB2YXIgdGFpbCA9IGVuZENvZGVzW2ldICsgMTsKICAgICAgICAgICAgdmFyIHN0YXJ0ID0gY21hcC5zdGFydENvZGUuZ2V0KGkpOwogICAgICAgICAgICByZXMucHVzaC5hcHBseShyZXMsIHJhbmdlKHN0YXJ0LCB0YWlsKSk7CiAgICAgICAgICB9CgogICAgICAgICAgcmV0dXJuIHJlczsKICAgICAgICB9CgogICAgICBjYXNlIDg6CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUT0RPOiBjbWFwIGZvcm1hdCA4Jyk7CgogICAgICBjYXNlIDY6CiAgICAgIGNhc2UgMTA6CiAgICAgICAgcmV0dXJuIHJhbmdlKGNtYXAuZmlyc3RDb2RlLCBjbWFwLmZpcnN0Q29kZSArIGNtYXAuZ2x5cGhJbmRpY2VzLmxlbmd0aCk7CgogICAgICBjYXNlIDEyOgogICAgICBjYXNlIDEzOgogICAgICAgIHsKICAgICAgICAgIHZhciBfcmVzID0gW107CiAgICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3I0ID0gY21hcC5ncm91cHMudG9BcnJheSgpLCBfaXNBcnJheTQgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjQpLCBfaTQgPSAwLCBfaXRlcmF0b3I0ID0gX2lzQXJyYXk0ID8gX2l0ZXJhdG9yNCA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3I0KTs7KSB7CiAgICAgICAgICAgIHZhciBfcmVmNTsKCiAgICAgICAgICAgIGlmIChfaXNBcnJheTQpIHsKICAgICAgICAgICAgICBpZiAoX2k0ID49IF9pdGVyYXRvcjQubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgICBfcmVmNSA9IF9pdGVyYXRvcjRbX2k0KytdOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIF9pNCA9IF9pdGVyYXRvcjQubmV4dCgpOwogICAgICAgICAgICAgIGlmIChfaTQuZG9uZSkgYnJlYWs7CiAgICAgICAgICAgICAgX3JlZjUgPSBfaTQudmFsdWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBncm91cCA9IF9yZWY1OwoKICAgICAgICAgICAgX3Jlcy5wdXNoLmFwcGx5KF9yZXMsIHJhbmdlKGdyb3VwLnN0YXJ0Q2hhckNvZGUsIGdyb3VwLmVuZENoYXJDb2RlICsgMSkpOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBfcmVzOwogICAgICAgIH0KCiAgICAgIGNhc2UgMTQ6CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUT0RPOiBjbWFwIGZvcm1hdCAxNCcpOwoKICAgICAgZGVmYXVsdDoKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gY21hcCBmb3JtYXQgJyArIGNtYXAudmVyc2lvbik7CiAgICB9CiAgfTsKCiAgQ21hcFByb2Nlc3Nvci5wcm90b3R5cGUuY29kZVBvaW50c0ZvckdseXBoID0gZnVuY3Rpb24gY29kZVBvaW50c0ZvckdseXBoKGdpZCkgewogICAgdmFyIGNtYXAgPSB0aGlzLmNtYXA7CiAgICBzd2l0Y2ggKGNtYXAudmVyc2lvbikgewogICAgICBjYXNlIDA6CiAgICAgICAgewogICAgICAgICAgdmFyIHJlcyA9IFtdOwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKykgewogICAgICAgICAgICBpZiAoY21hcC5jb2RlTWFwLmdldChpKSA9PT0gZ2lkKSB7CiAgICAgICAgICAgICAgcmVzLnB1c2goaSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgIH0KCiAgICAgIGNhc2UgNDoKICAgICAgICB7CiAgICAgICAgICB2YXIgX3JlczIgPSBbXTsKICAgICAgICAgIGZvciAodmFyIF9pNSA9IDA7IF9pNSA8IGNtYXAuc2VnQ291bnQ7IF9pNSsrKSB7CiAgICAgICAgICAgIHZhciBlbmQgPSBjbWFwLmVuZENvZGUuZ2V0KF9pNSk7CiAgICAgICAgICAgIHZhciBzdGFydCA9IGNtYXAuc3RhcnRDb2RlLmdldChfaTUpOwogICAgICAgICAgICB2YXIgcmFuZ2VPZmZzZXQgPSBjbWFwLmlkUmFuZ2VPZmZzZXQuZ2V0KF9pNSk7CiAgICAgICAgICAgIHZhciBkZWx0YSA9IGNtYXAuaWREZWx0YS5nZXQoX2k1KTsKCiAgICAgICAgICAgIGZvciAodmFyIGMgPSBzdGFydDsgYyA8PSBlbmQ7IGMrKykgewogICAgICAgICAgICAgIHZhciBnID0gMDsKICAgICAgICAgICAgICBpZiAocmFuZ2VPZmZzZXQgPT09IDApIHsKICAgICAgICAgICAgICAgIGcgPSBjICsgZGVsdGE7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHJhbmdlT2Zmc2V0IC8gMiArIChjIC0gc3RhcnQpIC0gKGNtYXAuc2VnQ291bnQgLSBfaTUpOwogICAgICAgICAgICAgICAgZyA9IGNtYXAuZ2x5cGhJbmRleEFycmF5LmdldChpbmRleCkgfHwgMDsKICAgICAgICAgICAgICAgIGlmIChnICE9PSAwKSB7CiAgICAgICAgICAgICAgICAgIGcgKz0gZGVsdGE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICBpZiAoZyA9PT0gZ2lkKSB7CiAgICAgICAgICAgICAgICBfcmVzMi5wdXNoKGMpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBfcmVzMjsKICAgICAgICB9CgogICAgICBjYXNlIDEyOgogICAgICAgIHsKICAgICAgICAgIHZhciBfcmVzMyA9IFtdOwogICAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yNSA9IGNtYXAuZ3JvdXBzLnRvQXJyYXkoKSwgX2lzQXJyYXk1ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3I1KSwgX2k2ID0gMCwgX2l0ZXJhdG9yNSA9IF9pc0FycmF5NSA/IF9pdGVyYXRvcjUgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yNSk7OykgewogICAgICAgICAgICB2YXIgX3JlZjY7CgogICAgICAgICAgICBpZiAoX2lzQXJyYXk1KSB7CiAgICAgICAgICAgICAgaWYgKF9pNiA+PSBfaXRlcmF0b3I1Lmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICAgICAgX3JlZjYgPSBfaXRlcmF0b3I1W19pNisrXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBfaTYgPSBfaXRlcmF0b3I1Lm5leHQoKTsKICAgICAgICAgICAgICBpZiAoX2k2LmRvbmUpIGJyZWFrOwogICAgICAgICAgICAgIF9yZWY2ID0gX2k2LnZhbHVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgZ3JvdXAgPSBfcmVmNjsKCiAgICAgICAgICAgIGlmIChnaWQgPj0gZ3JvdXAuZ2x5cGhJRCAmJiBnaWQgPD0gZ3JvdXAuZ2x5cGhJRCArIChncm91cC5lbmRDaGFyQ29kZSAtIGdyb3VwLnN0YXJ0Q2hhckNvZGUpKSB7CiAgICAgICAgICAgICAgX3JlczMucHVzaChncm91cC5zdGFydENoYXJDb2RlICsgKGdpZCAtIGdyb3VwLmdseXBoSUQpKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBfcmVzMzsKICAgICAgICB9CgogICAgICBjYXNlIDEzOgogICAgICAgIHsKICAgICAgICAgIHZhciBfcmVzNCA9IFtdOwogICAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yNiA9IGNtYXAuZ3JvdXBzLnRvQXJyYXkoKSwgX2lzQXJyYXk2ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3I2KSwgX2k3ID0gMCwgX2l0ZXJhdG9yNiA9IF9pc0FycmF5NiA/IF9pdGVyYXRvcjYgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yNik7OykgewogICAgICAgICAgICB2YXIgX3JlZjc7CgogICAgICAgICAgICBpZiAoX2lzQXJyYXk2KSB7CiAgICAgICAgICAgICAgaWYgKF9pNyA+PSBfaXRlcmF0b3I2Lmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICAgICAgX3JlZjcgPSBfaXRlcmF0b3I2W19pNysrXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBfaTcgPSBfaXRlcmF0b3I2Lm5leHQoKTsKICAgICAgICAgICAgICBpZiAoX2k3LmRvbmUpIGJyZWFrOwogICAgICAgICAgICAgIF9yZWY3ID0gX2k3LnZhbHVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgX2dyb3VwID0gX3JlZjc7CgogICAgICAgICAgICBpZiAoZ2lkID09PSBfZ3JvdXAuZ2x5cGhJRCkgewogICAgICAgICAgICAgIF9yZXM0LnB1c2guYXBwbHkoX3JlczQsIHJhbmdlKF9ncm91cC5zdGFydENoYXJDb2RlLCBfZ3JvdXAuZW5kQ2hhckNvZGUgKyAxKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gX3JlczQ7CiAgICAgICAgfQoKICAgICAgZGVmYXVsdDoKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gY21hcCBmb3JtYXQgJyArIGNtYXAudmVyc2lvbik7CiAgICB9CiAgfTsKCiAgcmV0dXJuIENtYXBQcm9jZXNzb3I7Cn0oKSwgKF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IkMShfY2xhc3MkMS5wcm90b3R5cGUsICdnZXRDaGFyYWN0ZXJTZXQnLCBbY2FjaGVdLCBfT2JqZWN0JGdldE93blByb3BlcnR5RGVzY3JpcHRvcihfY2xhc3MkMS5wcm90b3R5cGUsICdnZXRDaGFyYWN0ZXJTZXQnKSwgX2NsYXNzJDEucHJvdG90eXBlKSwgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciQxKF9jbGFzcyQxLnByb3RvdHlwZSwgJ2NvZGVQb2ludHNGb3JHbHlwaCcsIFtjYWNoZV0sIF9PYmplY3QkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9jbGFzcyQxLnByb3RvdHlwZSwgJ2NvZGVQb2ludHNGb3JHbHlwaCcpLCBfY2xhc3MkMS5wcm90b3R5cGUpKSwgX2NsYXNzJDEpOwoKdmFyIEtlcm5Qcm9jZXNzb3IgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gS2VyblByb2Nlc3Nvcihmb250KSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgS2VyblByb2Nlc3Nvcik7CgogICAgdGhpcy5rZXJuID0gZm9udC5rZXJuOwogIH0KCiAgS2VyblByb2Nlc3Nvci5wcm90b3R5cGUucHJvY2VzcyA9IGZ1bmN0aW9uIHByb2Nlc3MoZ2x5cGhzLCBwb3NpdGlvbnMpIHsKICAgIGZvciAodmFyIGdseXBoSW5kZXggPSAwOyBnbHlwaEluZGV4IDwgZ2x5cGhzLmxlbmd0aCAtIDE7IGdseXBoSW5kZXgrKykgewogICAgICB2YXIgbGVmdCA9IGdseXBoc1tnbHlwaEluZGV4XS5pZDsKICAgICAgdmFyIHJpZ2h0ID0gZ2x5cGhzW2dseXBoSW5kZXggKyAxXS5pZDsKICAgICAgcG9zaXRpb25zW2dseXBoSW5kZXhdLnhBZHZhbmNlICs9IHRoaXMuZ2V0S2VybmluZyhsZWZ0LCByaWdodCk7CiAgICB9CiAgfTsKCiAgS2VyblByb2Nlc3Nvci5wcm90b3R5cGUuZ2V0S2VybmluZyA9IGZ1bmN0aW9uIGdldEtlcm5pbmcobGVmdCwgcmlnaHQpIHsKICAgIHZhciByZXMgPSAwOwoKICAgIGZvciAodmFyIF9pdGVyYXRvciA9IHRoaXMua2Vybi50YWJsZXMsIF9pc0FycmF5ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IpLCBfaSA9IDAsIF9pdGVyYXRvciA9IF9pc0FycmF5ID8gX2l0ZXJhdG9yIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcik7OykgewogICAgICB2YXIgX3JlZjsKCiAgICAgIGlmIChfaXNBcnJheSkgewogICAgICAgIGlmIChfaSA+PSBfaXRlcmF0b3IubGVuZ3RoKSBicmVhazsKICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICB9IGVsc2UgewogICAgICAgIF9pID0gX2l0ZXJhdG9yLm5leHQoKTsKICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgX3JlZiA9IF9pLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgdGFibGUgPSBfcmVmOwoKICAgICAgaWYgKHRhYmxlLmNvdmVyYWdlLmNyb3NzU3RyZWFtKSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KCiAgICAgIHN3aXRjaCAodGFibGUudmVyc2lvbikgewogICAgICAgIGNhc2UgMDoKICAgICAgICAgIGlmICghdGFibGUuY292ZXJhZ2UuaG9yaXpvbnRhbCkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KCiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICBpZiAodGFibGUuY292ZXJhZ2UudmVydGljYWwgfHwgdGFibGUuY292ZXJhZ2UudmFyaWF0aW9uKSB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQoKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGtlcm5pbmcgdGFibGUgdmVyc2lvbiAnICsgdGFibGUudmVyc2lvbik7CiAgICAgIH0KCiAgICAgIHZhciB2YWwgPSAwOwogICAgICB2YXIgcyA9IHRhYmxlLnN1YnRhYmxlOwogICAgICBzd2l0Y2ggKHRhYmxlLmZvcm1hdCkgewogICAgICAgIGNhc2UgMDoKICAgICAgICAgIHZhciBwYWlySWR4ID0gYmluYXJ5U2VhcmNoKHMucGFpcnMsIGZ1bmN0aW9uIChwYWlyKSB7CiAgICAgICAgICAgIHJldHVybiBsZWZ0IC0gcGFpci5sZWZ0IHx8IHJpZ2h0IC0gcGFpci5yaWdodDsKICAgICAgICAgIH0pOwoKICAgICAgICAgIGlmIChwYWlySWR4ID49IDApIHsKICAgICAgICAgICAgdmFsID0gcy5wYWlyc1twYWlySWR4XS52YWx1ZTsKICAgICAgICAgIH0KCiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyOgogICAgICAgICAgdmFyIGxlZnRPZmZzZXQgPSAwLAogICAgICAgICAgICAgIHJpZ2h0T2Zmc2V0ID0gMDsKICAgICAgICAgIGlmIChsZWZ0ID49IHMubGVmdFRhYmxlLmZpcnN0R2x5cGggJiYgbGVmdCA8IHMubGVmdFRhYmxlLmZpcnN0R2x5cGggKyBzLmxlZnRUYWJsZS5uR2x5cGhzKSB7CiAgICAgICAgICAgIGxlZnRPZmZzZXQgPSBzLmxlZnRUYWJsZS5vZmZzZXRzW2xlZnQgLSBzLmxlZnRUYWJsZS5maXJzdEdseXBoXTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGxlZnRPZmZzZXQgPSBzLmFycmF5Lm9mZjsKICAgICAgICAgIH0KCiAgICAgICAgICBpZiAocmlnaHQgPj0gcy5yaWdodFRhYmxlLmZpcnN0R2x5cGggJiYgcmlnaHQgPCBzLnJpZ2h0VGFibGUuZmlyc3RHbHlwaCArIHMucmlnaHRUYWJsZS5uR2x5cGhzKSB7CiAgICAgICAgICAgIHJpZ2h0T2Zmc2V0ID0gcy5yaWdodFRhYmxlLm9mZnNldHNbcmlnaHQgLSBzLnJpZ2h0VGFibGUuZmlyc3RHbHlwaF07CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIGluZGV4ID0gKGxlZnRPZmZzZXQgKyByaWdodE9mZnNldCAtIHMuYXJyYXkub2ZmKSAvIDI7CiAgICAgICAgICB2YWwgPSBzLmFycmF5LnZhbHVlcy5nZXQoaW5kZXgpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMzoKICAgICAgICAgIGlmIChsZWZ0ID49IHMuZ2x5cGhDb3VudCB8fCByaWdodCA+PSBzLmdseXBoQ291bnQpIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICB9CgogICAgICAgICAgdmFsID0gcy5rZXJuVmFsdWVbcy5rZXJuSW5kZXhbcy5sZWZ0Q2xhc3NbbGVmdF0gKiBzLnJpZ2h0Q2xhc3NDb3VudCArIHMucmlnaHRDbGFzc1tyaWdodF1dXTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBrZXJuaW5nIHN1Yi10YWJsZSBmb3JtYXQgJyArIHRhYmxlLmZvcm1hdCk7CiAgICAgIH0KCiAgICAgIC8vIE1pY3Jvc29mdCBzdXBwb3J0cyB0aGUgb3ZlcnJpZGUgZmxhZywgd2hpY2ggcmVzZXRzIHRoZSByZXN1bHQKICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgc3VtIG9mIHRoZSByZXN1bHRzIGZyb20gYWxsIHN1YnRhYmxlcyBpcyByZXR1cm5lZAogICAgICBpZiAodGFibGUuY292ZXJhZ2Uub3ZlcnJpZGUpIHsKICAgICAgICByZXMgPSB2YWw7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmVzICs9IHZhbDsKICAgICAgfQogICAgfQoKICAgIHJldHVybiByZXM7CiAgfTsKCiAgcmV0dXJuIEtlcm5Qcm9jZXNzb3I7Cn0oKTsKCi8qKgogKiBUaGlzIGNsYXNzIGlzIHVzZWQgd2hlbiBHUE9TIGRvZXMgbm90IGRlZmluZSAnbWFyaycgb3IgJ21rbWsnIGZlYXR1cmVzCiAqIGZvciBwb3NpdGlvbmluZyBtYXJrcyByZWxhdGl2ZSB0byBiYXNlIGdseXBocy4gSXQgdXNlcyB0aGUgdW5pY29kZQogKiBjb21iaW5pbmcgY2xhc3MgcHJvcGVydHkgdG8gcG9zaXRpb24gbWFya3MuCiAqCiAqIEJhc2VkIG9uIGNvZGUgZnJvbSBIYXJmYnV6eiwgdGhhbmtzIQogKiBodHRwczovL2dpdGh1Yi5jb20vYmVoZGFkL2hhcmZidXp6L2Jsb2IvbWFzdGVyL3NyYy9oYi1vdC1zaGFwZS1mYWxsYmFjay5jYwogKi8KCnZhciBVbmljb2RlTGF5b3V0RW5naW5lID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIFVuaWNvZGVMYXlvdXRFbmdpbmUoZm9udCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFVuaWNvZGVMYXlvdXRFbmdpbmUpOwoKICAgIHRoaXMuZm9udCA9IGZvbnQ7CiAgfQoKICBVbmljb2RlTGF5b3V0RW5naW5lLnByb3RvdHlwZS5wb3NpdGlvbkdseXBocyA9IGZ1bmN0aW9uIHBvc2l0aW9uR2x5cGhzKGdseXBocywgcG9zaXRpb25zKSB7CiAgICAvLyBmaW5kIGVhY2ggYmFzZSArIG1hcmsgY2x1c3RlciwgYW5kIHBvc2l0aW9uIHRoZSBtYXJrcyByZWxhdGl2ZSB0byB0aGUgYmFzZQogICAgdmFyIGNsdXN0ZXJTdGFydCA9IDA7CiAgICB2YXIgY2x1c3RlckVuZCA9IDA7CiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgZ2x5cGhzLmxlbmd0aDsgaW5kZXgrKykgewogICAgICB2YXIgZ2x5cGggPSBnbHlwaHNbaW5kZXhdOwogICAgICBpZiAoZ2x5cGguaXNNYXJrKSB7CiAgICAgICAgLy8gVE9ETzogaGFuZGxlIGxpZ2F0dXJlcwogICAgICAgIGNsdXN0ZXJFbmQgPSBpbmRleDsKICAgICAgfSBlbHNlIHsKICAgICAgICBpZiAoY2x1c3RlclN0YXJ0ICE9PSBjbHVzdGVyRW5kKSB7CiAgICAgICAgICB0aGlzLnBvc2l0aW9uQ2x1c3RlcihnbHlwaHMsIHBvc2l0aW9ucywgY2x1c3RlclN0YXJ0LCBjbHVzdGVyRW5kKTsKICAgICAgICB9CgogICAgICAgIGNsdXN0ZXJTdGFydCA9IGNsdXN0ZXJFbmQgPSBpbmRleDsKICAgICAgfQogICAgfQoKICAgIGlmIChjbHVzdGVyU3RhcnQgIT09IGNsdXN0ZXJFbmQpIHsKICAgICAgdGhpcy5wb3NpdGlvbkNsdXN0ZXIoZ2x5cGhzLCBwb3NpdGlvbnMsIGNsdXN0ZXJTdGFydCwgY2x1c3RlckVuZCk7CiAgICB9CgogICAgcmV0dXJuIHBvc2l0aW9uczsKICB9OwoKICBVbmljb2RlTGF5b3V0RW5naW5lLnByb3RvdHlwZS5wb3NpdGlvbkNsdXN0ZXIgPSBmdW5jdGlvbiBwb3NpdGlvbkNsdXN0ZXIoZ2x5cGhzLCBwb3NpdGlvbnMsIGNsdXN0ZXJTdGFydCwgY2x1c3RlckVuZCkgewogICAgdmFyIGJhc2UgPSBnbHlwaHNbY2x1c3RlclN0YXJ0XTsKICAgIHZhciBiYXNlQm94ID0gYmFzZS5jYm94LmNvcHkoKTsKCiAgICAvLyBhZGp1c3QgYm91bmRpbmcgYm94IGZvciBsaWdhdHVyZSBnbHlwaHMKICAgIGlmIChiYXNlLmNvZGVQb2ludHMubGVuZ3RoID4gMSkgewogICAgICAvLyBMVFIuIFRPRE86IFJUTCBzdXBwb3J0LgogICAgICBiYXNlQm94Lm1pblggKz0gKGJhc2UuY29kZVBvaW50cy5sZW5ndGggLSAxKSAqIGJhc2VCb3gud2lkdGggLyBiYXNlLmNvZGVQb2ludHMubGVuZ3RoOwogICAgfQoKICAgIHZhciB4T2Zmc2V0ID0gLXBvc2l0aW9uc1tjbHVzdGVyU3RhcnRdLnhBZHZhbmNlOwogICAgdmFyIHlPZmZzZXQgPSAwOwogICAgdmFyIHlHYXAgPSB0aGlzLmZvbnQudW5pdHNQZXJFbSAvIDE2OwoKICAgIC8vIHBvc2l0aW9uIGVhY2ggb2YgdGhlIG1hcmsgZ2x5cGhzIHJlbGF0aXZlIHRvIHRoZSBiYXNlIGdseXBoCiAgICBmb3IgKHZhciBpbmRleCA9IGNsdXN0ZXJTdGFydCArIDE7IGluZGV4IDw9IGNsdXN0ZXJFbmQ7IGluZGV4KyspIHsKICAgICAgdmFyIG1hcmsgPSBnbHlwaHNbaW5kZXhdOwogICAgICB2YXIgbWFya0JveCA9IG1hcmsuY2JveDsKICAgICAgdmFyIHBvc2l0aW9uID0gcG9zaXRpb25zW2luZGV4XTsKCiAgICAgIHZhciBjb21iaW5pbmdDbGFzcyA9IHRoaXMuZ2V0Q29tYmluaW5nQ2xhc3MobWFyay5jb2RlUG9pbnRzWzBdKTsKCiAgICAgIGlmIChjb21iaW5pbmdDbGFzcyAhPT0gJ05vdF9SZW9yZGVyZWQnKSB7CiAgICAgICAgcG9zaXRpb24ueE9mZnNldCA9IHBvc2l0aW9uLnlPZmZzZXQgPSAwOwoKICAgICAgICAvLyB4IHBvc2l0aW9uaW5nCiAgICAgICAgc3dpdGNoIChjb21iaW5pbmdDbGFzcykgewogICAgICAgICAgY2FzZSAnRG91YmxlX0Fib3ZlJzoKICAgICAgICAgIGNhc2UgJ0RvdWJsZV9CZWxvdyc6CiAgICAgICAgICAgIC8vIExUUi4gVE9ETzogUlRMIHN1cHBvcnQuCiAgICAgICAgICAgIHBvc2l0aW9uLnhPZmZzZXQgKz0gYmFzZUJveC5taW5YIC0gbWFya0JveC53aWR0aCAvIDIgLSBtYXJrQm94Lm1pblg7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgIGNhc2UgJ0F0dGFjaGVkX0JlbG93X0xlZnQnOgogICAgICAgICAgY2FzZSAnQmVsb3dfTGVmdCc6CiAgICAgICAgICBjYXNlICdBYm92ZV9MZWZ0JzoKICAgICAgICAgICAgLy8gbGVmdCBhbGlnbgogICAgICAgICAgICBwb3NpdGlvbi54T2Zmc2V0ICs9IGJhc2VCb3gubWluWCAtIG1hcmtCb3gubWluWDsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgY2FzZSAnQXR0YWNoZWRfQWJvdmVfUmlnaHQnOgogICAgICAgICAgY2FzZSAnQmVsb3dfUmlnaHQnOgogICAgICAgICAgY2FzZSAnQWJvdmVfUmlnaHQnOgogICAgICAgICAgICAvLyByaWdodCBhbGlnbgogICAgICAgICAgICBwb3NpdGlvbi54T2Zmc2V0ICs9IGJhc2VCb3gubWF4WCAtIG1hcmtCb3gud2lkdGggLSBtYXJrQm94Lm1pblg7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIC8vIEF0dGFjaGVkX0JlbG93LCBBdHRhY2hlZF9BYm92ZSwgQmVsb3csIEFib3ZlLCBvdGhlcgogICAgICAgICAgICAvLyBjZW50ZXIgYWxpZ24KICAgICAgICAgICAgcG9zaXRpb24ueE9mZnNldCArPSBiYXNlQm94Lm1pblggKyAoYmFzZUJveC53aWR0aCAtIG1hcmtCb3gud2lkdGgpIC8gMiAtIG1hcmtCb3gubWluWDsKICAgICAgICB9CgogICAgICAgIC8vIHkgcG9zaXRpb25pbmcKICAgICAgICBzd2l0Y2ggKGNvbWJpbmluZ0NsYXNzKSB7CiAgICAgICAgICBjYXNlICdEb3VibGVfQmVsb3cnOgogICAgICAgICAgY2FzZSAnQmVsb3dfTGVmdCc6CiAgICAgICAgICBjYXNlICdCZWxvdyc6CiAgICAgICAgICBjYXNlICdCZWxvd19SaWdodCc6CiAgICAgICAgICBjYXNlICdBdHRhY2hlZF9CZWxvd19MZWZ0JzoKICAgICAgICAgIGNhc2UgJ0F0dGFjaGVkX0JlbG93JzoKICAgICAgICAgICAgLy8gYWRkIGEgc21hbGwgZ2FwIGJldHdlZW4gdGhlIGdseXBocyBpZiB0aGV5IGFyZSBub3QgYXR0YWNoZWQKICAgICAgICAgICAgaWYgKGNvbWJpbmluZ0NsYXNzID09PSAnQXR0YWNoZWRfQmVsb3dfTGVmdCcgfHwgY29tYmluaW5nQ2xhc3MgPT09ICdBdHRhY2hlZF9CZWxvdycpIHsKICAgICAgICAgICAgICBiYXNlQm94Lm1pblkgKz0geUdhcDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcG9zaXRpb24ueU9mZnNldCA9IC1iYXNlQm94Lm1pblkgLSBtYXJrQm94Lm1heFk7CiAgICAgICAgICAgIGJhc2VCb3gubWluWSArPSBtYXJrQm94LmhlaWdodDsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgY2FzZSAnRG91YmxlX0Fib3ZlJzoKICAgICAgICAgIGNhc2UgJ0Fib3ZlX0xlZnQnOgogICAgICAgICAgY2FzZSAnQWJvdmUnOgogICAgICAgICAgY2FzZSAnQWJvdmVfUmlnaHQnOgogICAgICAgICAgY2FzZSAnQXR0YWNoZWRfQWJvdmUnOgogICAgICAgICAgY2FzZSAnQXR0YWNoZWRfQWJvdmVfUmlnaHQnOgogICAgICAgICAgICAvLyBhZGQgYSBzbWFsbCBnYXAgYmV0d2VlbiB0aGUgZ2x5cGhzIGlmIHRoZXkgYXJlIG5vdCBhdHRhY2hlZAogICAgICAgICAgICBpZiAoY29tYmluaW5nQ2xhc3MgPT09ICdBdHRhY2hlZF9BYm92ZScgfHwgY29tYmluaW5nQ2xhc3MgPT09ICdBdHRhY2hlZF9BYm92ZV9SaWdodCcpIHsKICAgICAgICAgICAgICBiYXNlQm94Lm1heFkgKz0geUdhcDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcG9zaXRpb24ueU9mZnNldCA9IGJhc2VCb3gubWF4WSAtIG1hcmtCb3gubWluWTsKICAgICAgICAgICAgYmFzZUJveC5tYXhZICs9IG1hcmtCb3guaGVpZ2h0OwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIHBvc2l0aW9uLnhBZHZhbmNlID0gcG9zaXRpb24ueUFkdmFuY2UgPSAwOwogICAgICAgIHBvc2l0aW9uLnhPZmZzZXQgKz0geE9mZnNldDsKICAgICAgICBwb3NpdGlvbi55T2Zmc2V0ICs9IHlPZmZzZXQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgeE9mZnNldCAtPSBwb3NpdGlvbi54QWR2YW5jZTsKICAgICAgICB5T2Zmc2V0IC09IHBvc2l0aW9uLnlBZHZhbmNlOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuOwogIH07CgogIFVuaWNvZGVMYXlvdXRFbmdpbmUucHJvdG90eXBlLmdldENvbWJpbmluZ0NsYXNzID0gZnVuY3Rpb24gZ2V0Q29tYmluaW5nQ2xhc3MoY29kZVBvaW50KSB7CiAgICB2YXIgY29tYmluaW5nQ2xhc3MgPSB1bmljb2RlLmdldENvbWJpbmluZ0NsYXNzKGNvZGVQb2ludCk7CgogICAgLy8gVGhhaSAvIExhbyBuZWVkIHNvbWUgcGVyLWNoYXJhY3RlciB3b3JrCiAgICBpZiAoKGNvZGVQb2ludCAmIH4weGZmKSA9PT0gMHgwZTAwKSB7CiAgICAgIGlmIChjb21iaW5pbmdDbGFzcyA9PT0gJ05vdF9SZW9yZGVyZWQnKSB7CiAgICAgICAgc3dpdGNoIChjb2RlUG9pbnQpIHsKICAgICAgICAgIGNhc2UgMHgwZTMxOgogICAgICAgICAgY2FzZSAweDBlMzQ6CiAgICAgICAgICBjYXNlIDB4MGUzNToKICAgICAgICAgIGNhc2UgMHgwZTM2OgogICAgICAgICAgY2FzZSAweDBlMzc6CiAgICAgICAgICBjYXNlIDB4MGU0NzoKICAgICAgICAgIGNhc2UgMHgwZTRjOgogICAgICAgICAgY2FzZSAweDBlM2Q6CiAgICAgICAgICBjYXNlIDB4MGU0ZToKICAgICAgICAgICAgcmV0dXJuICdBYm92ZV9SaWdodCc7CgogICAgICAgICAgY2FzZSAweDBlYjE6CiAgICAgICAgICBjYXNlIDB4MGViNDoKICAgICAgICAgIGNhc2UgMHgwZWI1OgogICAgICAgICAgY2FzZSAweDBlYjY6CiAgICAgICAgICBjYXNlIDB4MGViNzoKICAgICAgICAgIGNhc2UgMHgwZWJiOgogICAgICAgICAgY2FzZSAweDBlY2M6CiAgICAgICAgICBjYXNlIDB4MGVjZDoKICAgICAgICAgICAgcmV0dXJuICdBYm92ZSc7CgogICAgICAgICAgY2FzZSAweDBlYmM6CiAgICAgICAgICAgIHJldHVybiAnQmVsb3cnOwogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPT09IDB4MGUzYSkgewogICAgICAgIC8vIHZpcmFtYQogICAgICAgIHJldHVybiAnQmVsb3dfUmlnaHQnOwogICAgICB9CiAgICB9CgogICAgc3dpdGNoIChjb21iaW5pbmdDbGFzcykgewogICAgICAvLyBIZWJyZXcKCiAgICAgIGNhc2UgJ0NDQzEwJzogLy8gc2hldmEKICAgICAgY2FzZSAnQ0NDMTEnOiAvLyBoYXRhZiBzZWdvbAogICAgICBjYXNlICdDQ0MxMic6IC8vIGhhdGFmIHBhdGFoCiAgICAgIGNhc2UgJ0NDQzEzJzogLy8gaGF0YWYgcWFtYXRzCiAgICAgIGNhc2UgJ0NDQzE0JzogLy8gaGlyaXEKICAgICAgY2FzZSAnQ0NDMTUnOiAvLyB0c2VyZQogICAgICBjYXNlICdDQ0MxNic6IC8vIHNlZ29sCiAgICAgIGNhc2UgJ0NDQzE3JzogLy8gcGF0YWgKICAgICAgY2FzZSAnQ0NDMTgnOiAvLyBxYW1hdHMKICAgICAgY2FzZSAnQ0NDMjAnOiAvLyBxdWJ1dHMKICAgICAgY2FzZSAnQ0NDMjInOgogICAgICAgIC8vIG1ldGVnCiAgICAgICAgcmV0dXJuICdCZWxvdyc7CgogICAgICBjYXNlICdDQ0MyMyc6CiAgICAgICAgLy8gcmFmZQogICAgICAgIHJldHVybiAnQXR0YWNoZWRfQWJvdmUnOwoKICAgICAgY2FzZSAnQ0NDMjQnOgogICAgICAgIC8vIHNoaW4gZG90CiAgICAgICAgcmV0dXJuICdBYm92ZV9SaWdodCc7CgogICAgICBjYXNlICdDQ0MyNSc6IC8vIHNpbiBkb3QKICAgICAgY2FzZSAnQ0NDMTknOgogICAgICAgIC8vIGhvbGFtCiAgICAgICAgcmV0dXJuICdBYm92ZV9MZWZ0JzsKCiAgICAgIGNhc2UgJ0NDQzI2JzoKICAgICAgICAvLyBwb2ludCB2YXJpa2EKICAgICAgICByZXR1cm4gJ0Fib3ZlJzsKCiAgICAgIGNhc2UgJ0NDQzIxJzoKICAgICAgICAvLyBkYWdlc2gKICAgICAgICBicmVhazsKCiAgICAgIC8vIEFyYWJpYyBhbmQgU3lyaWFjCgogICAgICBjYXNlICdDQ0MyNyc6IC8vIGZhdGhhdGFuCiAgICAgIGNhc2UgJ0NDQzI4JzogLy8gZGFtbWF0YW4KICAgICAgY2FzZSAnQ0NDMzAnOiAvLyBmYXRoYQogICAgICBjYXNlICdDQ0MzMSc6IC8vIGRhbW1hCiAgICAgIGNhc2UgJ0NDQzMzJzogLy8gc2hhZGRhCiAgICAgIGNhc2UgJ0NDQzM0JzogLy8gc3VrdW4KICAgICAgY2FzZSAnQ0NDMzUnOiAvLyBzdXBlcnNjcmlwdCBhbGVmCiAgICAgIGNhc2UgJ0NDQzM2JzoKICAgICAgICAvLyBzdXBlcnNjcmlwdCBhbGFwaAogICAgICAgIHJldHVybiAnQWJvdmUnOwoKICAgICAgY2FzZSAnQ0NDMjknOiAvLyBrYXNyYXRhbgogICAgICBjYXNlICdDQ0MzMic6CiAgICAgICAgLy8ga2FzcmEKICAgICAgICByZXR1cm4gJ0JlbG93JzsKCiAgICAgIC8vIFRoYWkKCiAgICAgIGNhc2UgJ0NDQzEwMyc6CiAgICAgICAgLy8gc2FyYSB1IC8gc2FyYSB1dQogICAgICAgIHJldHVybiAnQmVsb3dfUmlnaHQnOwoKICAgICAgY2FzZSAnQ0NDMTA3JzoKICAgICAgICAvLyBtYWkKICAgICAgICByZXR1cm4gJ0Fib3ZlX1JpZ2h0JzsKCiAgICAgIC8vIExhbwoKICAgICAgY2FzZSAnQ0NDMTE4JzoKICAgICAgICAvLyBzaWduIHUgLyBzaWduIHV1CiAgICAgICAgcmV0dXJuICdCZWxvdyc7CgogICAgICBjYXNlICdDQ0MxMjInOgogICAgICAgIC8vIG1haQogICAgICAgIHJldHVybiAnQWJvdmUnOwoKICAgICAgLy8gVGliZXRhbgoKICAgICAgY2FzZSAnQ0NDMTI5JzogLy8gc2lnbiBhYQogICAgICBjYXNlICdDQ0MxMzInOgogICAgICAgIC8vIHNpZ24gdQogICAgICAgIHJldHVybiAnQmVsb3cnOwoKICAgICAgY2FzZSAnQ0NDMTMwJzoKICAgICAgICAvLyBzaWduIGkKICAgICAgICByZXR1cm4gJ0Fib3ZlJzsKICAgIH0KCiAgICByZXR1cm4gY29tYmluaW5nQ2xhc3M7CiAgfTsKCiAgcmV0dXJuIFVuaWNvZGVMYXlvdXRFbmdpbmU7Cn0oKTsKCi8qKgogKiBSZXByZXNlbnRzIGEgZ2x5cGggYm91bmRpbmcgYm94CiAqLwp2YXIgQkJveCA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBCQm94KCkgewogICAgdmFyIG1pblggPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IEluZmluaXR5OwogICAgdmFyIG1pblkgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IEluZmluaXR5OwogICAgdmFyIG1heFggPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IC1JbmZpbml0eTsKICAgIHZhciBtYXhZID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiAtSW5maW5pdHk7CgogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJCb3gpOwoKICAgIC8qKgogICAgICogVGhlIG1pbmltdW0gWCBwb3NpdGlvbiBpbiB0aGUgYm91bmRpbmcgYm94CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICB0aGlzLm1pblggPSBtaW5YOwoKICAgIC8qKgogICAgICogVGhlIG1pbmltdW0gWSBwb3NpdGlvbiBpbiB0aGUgYm91bmRpbmcgYm94CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICB0aGlzLm1pblkgPSBtaW5ZOwoKICAgIC8qKgogICAgICogVGhlIG1heG1pbXVtIFggcG9zaXRpb24gaW4gdGhlIGJvdW5kaW5nIGJveAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgdGhpcy5tYXhYID0gbWF4WDsKCiAgICAvKioKICAgICAqIFRoZSBtYXhtaW11bSBZIHBvc2l0aW9uIGluIHRoZSBib3VuZGluZyBib3gKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIHRoaXMubWF4WSA9IG1heFk7CiAgfQoKICAvKioKICAgKiBUaGUgd2lkdGggb2YgdGhlIGJvdW5kaW5nIGJveAogICAqIEB0eXBlIHtudW1iZXJ9CiAgICovCgoKICBCQm94LnByb3RvdHlwZS5hZGRQb2ludCA9IGZ1bmN0aW9uIGFkZFBvaW50KHgsIHkpIHsKICAgIGlmIChNYXRoLmFicyh4KSAhPT0gSW5maW5pdHkpIHsKICAgICAgaWYgKHggPCB0aGlzLm1pblgpIHsKICAgICAgICB0aGlzLm1pblggPSB4OwogICAgICB9CgogICAgICBpZiAoeCA+IHRoaXMubWF4WCkgewogICAgICAgIHRoaXMubWF4WCA9IHg7CiAgICAgIH0KICAgIH0KCiAgICBpZiAoTWF0aC5hYnMoeSkgIT09IEluZmluaXR5KSB7CiAgICAgIGlmICh5IDwgdGhpcy5taW5ZKSB7CiAgICAgICAgdGhpcy5taW5ZID0geTsKICAgICAgfQoKICAgICAgaWYgKHkgPiB0aGlzLm1heFkpIHsKICAgICAgICB0aGlzLm1heFkgPSB5OwogICAgICB9CiAgICB9CiAgfTsKCiAgQkJveC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkoKSB7CiAgICByZXR1cm4gbmV3IEJCb3godGhpcy5taW5YLCB0aGlzLm1pblksIHRoaXMubWF4WCwgdGhpcy5tYXhZKTsKICB9OwoKICBfY3JlYXRlQ2xhc3MoQkJveCwgW3sKICAgIGtleTogIndpZHRoIiwKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICByZXR1cm4gdGhpcy5tYXhYIC0gdGhpcy5taW5YOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGhlaWdodCBvZiB0aGUgYm91bmRpbmcgYm94CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCgogIH0sIHsKICAgIGtleTogImhlaWdodCIsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIHRoaXMubWF4WSAtIHRoaXMubWluWTsKICAgIH0KICB9XSk7CgogIHJldHVybiBCQm94Owp9KCk7CgovLyBUaGlzIG1hcHMgdGhlIFVuaWNvZGUgU2NyaXB0IHByb3BlcnR5IHRvIGFuIE9wZW5UeXBlIHNjcmlwdCB0YWcKLy8gRGF0YSBmcm9tIGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS90eXBvZ3JhcGh5L290c3BlYy9zY3JpcHR0YWdzLmh0bQovLyBhbmQgaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvVU5JREFUQS9Qcm9wZXJ0eVZhbHVlQWxpYXNlcy50eHQuCnZhciBVTklDT0RFX1NDUklQVFMgPSB7CiAgQ2F1Y2FzaWFuX0FsYmFuaWFuOiAnYWdoYicsCiAgQXJhYmljOiAnYXJhYicsCiAgSW1wZXJpYWxfQXJhbWFpYzogJ2FybWknLAogIEFybWVuaWFuOiAnYXJtbicsCiAgQXZlc3RhbjogJ2F2c3QnLAogIEJhbGluZXNlOiAnYmFsaScsCiAgQmFtdW06ICdiYW11JywKICBCYXNzYV9WYWg6ICdiYXNzJywKICBCYXRhazogJ2JhdGsnLAogIEJlbmdhbGk6IFsnYm5nMicsICdiZW5nJ10sCiAgQm9wb21vZm86ICdib3BvJywKICBCcmFobWk6ICdicmFoJywKICBCcmFpbGxlOiAnYnJhaScsCiAgQnVnaW5lc2U6ICdidWdpJywKICBCdWhpZDogJ2J1aGQnLAogIENoYWttYTogJ2Nha20nLAogIENhbmFkaWFuX0Fib3JpZ2luYWw6ICdjYW5zJywKICBDYXJpYW46ICdjYXJpJywKICBDaGFtOiAnY2hhbScsCiAgQ2hlcm9rZWU6ICdjaGVyJywKICBDb3B0aWM6ICdjb3B0JywKICBDeXByaW90OiAnY3BydCcsCiAgQ3lyaWxsaWM6ICdjeXJsJywKICBEZXZhbmFnYXJpOiBbJ2RldjInLCAnZGV2YSddLAogIERlc2VyZXQ6ICdkc3J0JywKICBEdXBsb3lhbjogJ2R1cGwnLAogIEVneXB0aWFuX0hpZXJvZ2x5cGhzOiAnZWd5cCcsCiAgRWxiYXNhbjogJ2VsYmEnLAogIEV0aGlvcGljOiAnZXRoaScsCiAgR2VvcmdpYW46ICdnZW9yJywKICBHbGFnb2xpdGljOiAnZ2xhZycsCiAgR290aGljOiAnZ290aCcsCiAgR3JhbnRoYTogJ2dyYW4nLAogIEdyZWVrOiAnZ3JlaycsCiAgR3VqYXJhdGk6IFsnZ2pyMicsICdndWpyJ10sCiAgR3VybXVraGk6IFsnZ3VyMicsICdndXJ1J10sCiAgSGFuZ3VsOiAnaGFuZycsCiAgSGFuOiAnaGFuaScsCiAgSGFudW5vbzogJ2hhbm8nLAogIEhlYnJldzogJ2hlYnInLAogIEhpcmFnYW5hOiAnaGlyYScsCiAgUGFoYXdoX0htb25nOiAnaG1uZycsCiAgS2F0YWthbmFfT3JfSGlyYWdhbmE6ICdocmt0JywKICBPbGRfSXRhbGljOiAnaXRhbCcsCiAgSmF2YW5lc2U6ICdqYXZhJywKICBLYXlhaF9MaTogJ2thbGknLAogIEthdGFrYW5hOiAna2FuYScsCiAgS2hhcm9zaHRoaTogJ2toYXInLAogIEtobWVyOiAna2htcicsCiAgS2hvamtpOiAna2hvaicsCiAgS2FubmFkYTogWydrbmQyJywgJ2tuZGEnXSwKICBLYWl0aGk6ICdrdGhpJywKICBUYWlfVGhhbTogJ2xhbmEnLAogIExhbzogJ2xhbyAnLAogIExhdGluOiAnbGF0bicsCiAgTGVwY2hhOiAnbGVwYycsCiAgTGltYnU6ICdsaW1iJywKICBMaW5lYXJfQTogJ2xpbmEnLAogIExpbmVhcl9COiAnbGluYicsCiAgTGlzdTogJ2xpc3UnLAogIEx5Y2lhbjogJ2x5Y2knLAogIEx5ZGlhbjogJ2x5ZGknLAogIE1haGFqYW5pOiAnbWFoaicsCiAgTWFuZGFpYzogJ21hbmQnLAogIE1hbmljaGFlYW46ICdtYW5pJywKICBNZW5kZV9LaWtha3VpOiAnbWVuZCcsCiAgTWVyb2l0aWNfQ3Vyc2l2ZTogJ21lcmMnLAogIE1lcm9pdGljX0hpZXJvZ2x5cGhzOiAnbWVybycsCiAgTWFsYXlhbGFtOiBbJ21sbTInLCAnbWx5bSddLAogIE1vZGk6ICdtb2RpJywKICBNb25nb2xpYW46ICdtb25nJywKICBNcm86ICdtcm9vJywKICBNZWV0ZWlfTWF5ZWs6ICdtdGVpJywKICBNeWFubWFyOiBbJ215bTInLCAnbXltciddLAogIE9sZF9Ob3J0aF9BcmFiaWFuOiAnbmFyYicsCiAgTmFiYXRhZWFuOiAnbmJhdCcsCiAgTmtvOiAnbmtvICcsCiAgT2doYW06ICdvZ2FtJywKICBPbF9DaGlraTogJ29sY2snLAogIE9sZF9UdXJraWM6ICdvcmtoJywKICBPcml5YTogWydvcnkyJywgJ29yeWEnXSwKICBPc21hbnlhOiAnb3NtYScsCiAgUGFsbXlyZW5lOiAncGFsbScsCiAgUGF1X0Npbl9IYXU6ICdwYXVjJywKICBPbGRfUGVybWljOiAncGVybScsCiAgUGhhZ3NfUGE6ICdwaGFnJywKICBJbnNjcmlwdGlvbmFsX1BhaGxhdmk6ICdwaGxpJywKICBQc2FsdGVyX1BhaGxhdmk6ICdwaGxwJywKICBQaG9lbmljaWFuOiAncGhueCcsCiAgTWlhbzogJ3BscmQnLAogIEluc2NyaXB0aW9uYWxfUGFydGhpYW46ICdwcnRpJywKICBSZWphbmc6ICdyam5nJywKICBSdW5pYzogJ3J1bnInLAogIFNhbWFyaXRhbjogJ3NhbXInLAogIE9sZF9Tb3V0aF9BcmFiaWFuOiAnc2FyYicsCiAgU2F1cmFzaHRyYTogJ3NhdXInLAogIFNoYXZpYW46ICdzaGF3JywKICBTaGFyYWRhOiAnc2hyZCcsCiAgU2lkZGhhbTogJ3NpZGQnLAogIEtodWRhd2FkaTogJ3NpbmQnLAogIFNpbmhhbGE6ICdzaW5oJywKICBTb3JhX1NvbXBlbmc6ICdzb3JhJywKICBTdW5kYW5lc2U6ICdzdW5kJywKICBTeWxvdGlfTmFncmk6ICdzeWxvJywKICBTeXJpYWM6ICdzeXJjJywKICBUYWdiYW53YTogJ3RhZ2InLAogIFRha3JpOiAndGFrcicsCiAgVGFpX0xlOiAndGFsZScsCiAgTmV3X1RhaV9MdWU6ICd0YWx1JywKICBUYW1pbDogWyd0bWwyJywgJ3RhbWwnXSwKICBUYWlfVmlldDogJ3RhdnQnLAogIFRlbHVndTogWyd0ZWwyJywgJ3RlbHUnXSwKICBUaWZpbmFnaDogJ3RmbmcnLAogIFRhZ2Fsb2c6ICd0Z2xnJywKICBUaGFhbmE6ICd0aGFhJywKICBUaGFpOiAndGhhaScsCiAgVGliZXRhbjogJ3RpYnQnLAogIFRpcmh1dGE6ICd0aXJoJywKICBVZ2FyaXRpYzogJ3VnYXInLAogIFZhaTogJ3ZhaSAnLAogIFdhcmFuZ19DaXRpOiAnd2FyYScsCiAgT2xkX1BlcnNpYW46ICd4cGVvJywKICBDdW5laWZvcm06ICd4c3V4JywKICBZaTogJ3lpICAnLAogIEluaGVyaXRlZDogJ3ppbmgnLAogIENvbW1vbjogJ3p5eXknLAogIFVua25vd246ICd6enp6Jwp9OwoKdmFyIE9QRU5UWVBFX1NDUklQVFMgPSB7fTsKZm9yICh2YXIgc2NyaXB0IGluIFVOSUNPREVfU0NSSVBUUykgewogIHZhciB0YWcgPSBVTklDT0RFX1NDUklQVFNbc2NyaXB0XTsKICBpZiAoQXJyYXkuaXNBcnJheSh0YWcpKSB7CiAgICBmb3IgKHZhciBfaXRlcmF0b3IgPSB0YWcsIF9pc0FycmF5ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IpLCBfaSA9IDAsIF9pdGVyYXRvciA9IF9pc0FycmF5ID8gX2l0ZXJhdG9yIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcik7OykgewogICAgICB2YXIgX3JlZjsKCiAgICAgIGlmIChfaXNBcnJheSkgewogICAgICAgIGlmIChfaSA+PSBfaXRlcmF0b3IubGVuZ3RoKSBicmVhazsKICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICB9IGVsc2UgewogICAgICAgIF9pID0gX2l0ZXJhdG9yLm5leHQoKTsKICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgX3JlZiA9IF9pLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgdCA9IF9yZWY7CgogICAgICBPUEVOVFlQRV9TQ1JJUFRTW3RdID0gc2NyaXB0OwogICAgfQogIH0gZWxzZSB7CiAgICBPUEVOVFlQRV9TQ1JJUFRTW3RhZ10gPSBzY3JpcHQ7CiAgfQp9CgpmdW5jdGlvbiBmcm9tT3BlblR5cGUodGFnKSB7CiAgcmV0dXJuIE9QRU5UWVBFX1NDUklQVFNbdGFnXTsKfQoKZnVuY3Rpb24gZm9yU3RyaW5nKHN0cmluZykgewogIHZhciBsZW4gPSBzdHJpbmcubGVuZ3RoOwogIHZhciBpZHggPSAwOwogIHdoaWxlIChpZHggPCBsZW4pIHsKICAgIHZhciBjb2RlID0gc3RyaW5nLmNoYXJDb2RlQXQoaWR4KyspOwoKICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSBoaWdoIHN1cnJvZ2F0ZQogICAgaWYgKDB4ZDgwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHhkYmZmICYmIGlkeCA8IGxlbikgewogICAgICB2YXIgbmV4dCA9IHN0cmluZy5jaGFyQ29kZUF0KGlkeCk7CgogICAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgbG93IHN1cnJvZ2F0ZQogICAgICBpZiAoMHhkYzAwIDw9IG5leHQgJiYgbmV4dCA8PSAweGRmZmYpIHsKICAgICAgICBpZHgrKzsKICAgICAgICBjb2RlID0gKChjb2RlICYgMHgzRkYpIDw8IDEwKSArIChuZXh0ICYgMHgzRkYpICsgMHgxMDAwMDsKICAgICAgfQogICAgfQoKICAgIHZhciBfc2NyaXB0ID0gdW5pY29kZS5nZXRTY3JpcHQoY29kZSk7CiAgICBpZiAoX3NjcmlwdCAhPT0gJ0NvbW1vbicgJiYgX3NjcmlwdCAhPT0gJ0luaGVyaXRlZCcgJiYgX3NjcmlwdCAhPT0gJ1Vua25vd24nKSB7CiAgICAgIHJldHVybiBVTklDT0RFX1NDUklQVFNbX3NjcmlwdF07CiAgICB9CiAgfQoKICByZXR1cm4gVU5JQ09ERV9TQ1JJUFRTLlVua25vd247Cn0KCmZ1bmN0aW9uIGZvckNvZGVQb2ludHMoY29kZVBvaW50cykgewogIGZvciAodmFyIGkgPSAwOyBpIDwgY29kZVBvaW50cy5sZW5ndGg7IGkrKykgewogICAgdmFyIGNvZGVQb2ludCA9IGNvZGVQb2ludHNbaV07CiAgICB2YXIgX3NjcmlwdDIgPSB1bmljb2RlLmdldFNjcmlwdChjb2RlUG9pbnQpOwogICAgaWYgKF9zY3JpcHQyICE9PSAnQ29tbW9uJyAmJiBfc2NyaXB0MiAhPT0gJ0luaGVyaXRlZCcgJiYgX3NjcmlwdDIgIT09ICdVbmtub3duJykgewogICAgICByZXR1cm4gVU5JQ09ERV9TQ1JJUFRTW19zY3JpcHQyXTsKICAgIH0KICB9CgogIHJldHVybiBVTklDT0RFX1NDUklQVFMuVW5rbm93bjsKfQoKLy8gVGhlIHNjcmlwdHMgaW4gdGhpcyBtYXAgYXJlIHdyaXR0ZW4gZnJvbSByaWdodCB0byBsZWZ0CnZhciBSVEwgPSB7CiAgYXJhYjogdHJ1ZSwgLy8gQXJhYmljCiAgaGVicjogdHJ1ZSwgLy8gSGVicmV3CiAgc3lyYzogdHJ1ZSwgLy8gU3lyaWFjCiAgdGhhYTogdHJ1ZSwgLy8gVGhhYW5hCiAgY3BydDogdHJ1ZSwgLy8gQ3lwcmlvdCBTeWxsYWJhcnkKICBraGFyOiB0cnVlLCAvLyBLaGFyb3N0aGkKICBwaG54OiB0cnVlLCAvLyBQaG9lbmljaWFuCiAgJ25rbyAnOiB0cnVlLCAvLyBOJ0tvCiAgbHlkaTogdHJ1ZSwgLy8gTHlkaWFuCiAgYXZzdDogdHJ1ZSwgLy8gQXZlc3RhbgogIGFybWk6IHRydWUsIC8vIEltcGVyaWFsIEFyYW1haWMKICBwaGxpOiB0cnVlLCAvLyBJbnNjcmlwdGlvbmFsIFBhaGxhdmkKICBwcnRpOiB0cnVlLCAvLyBJbnNjcmlwdGlvbmFsIFBhcnRoaWFuCiAgc2FyYjogdHJ1ZSwgLy8gT2xkIFNvdXRoIEFyYWJpYW4KICBvcmtoOiB0cnVlLCAvLyBPbGQgVHVya2ljLCBPcmtob24gUnVuaWMKICBzYW1yOiB0cnVlLCAvLyBTYW1hcml0YW4KICBtYW5kOiB0cnVlLCAvLyBNYW5kYWljLCBNYW5kYWVhbgogIG1lcmM6IHRydWUsIC8vIE1lcm9pdGljIEN1cnNpdmUKICBtZXJvOiB0cnVlLCAvLyBNZXJvaXRpYyBIaWVyb2dseXBocwoKICAvLyBVbmljb2RlIDcuMCAobm90IGxpc3RlZCBvbiBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9vdHNwZWMvc2NyaXB0dGFncy5odG0pCiAgbWFuaTogdHJ1ZSwgLy8gTWFuaWNoYWVhbgogIG1lbmQ6IHRydWUsIC8vIE1lbmRlIEtpa2FrdWkKICBuYmF0OiB0cnVlLCAvLyBOYWJhdGFlYW4KICBuYXJiOiB0cnVlLCAvLyBPbGQgTm9ydGggQXJhYmlhbgogIHBhbG06IHRydWUsIC8vIFBhbG15cmVuZQogIHBobHA6IHRydWUgLy8gUHNhbHRlciBQYWhsYXZpCn07CgpmdW5jdGlvbiBkaXJlY3Rpb24oc2NyaXB0KSB7CiAgaWYgKFJUTFtzY3JpcHRdKSB7CiAgICByZXR1cm4gJ3J0bCc7CiAgfQoKICByZXR1cm4gJ2x0cic7Cn0KCi8qKgogKiBSZXByZXNlbnRzIGEgcnVuIG9mIEdseXBoIGFuZCBHbHlwaFBvc2l0aW9uIG9iamVjdHMuCiAqIFJldHVybmVkIGJ5IHRoZSBmb250IGxheW91dCBtZXRob2QuCiAqLwoKdmFyIEdseXBoUnVuID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIEdseXBoUnVuKGdseXBocywgZmVhdHVyZXMsIHNjcmlwdCwgbGFuZ3VhZ2UsIGRpcmVjdGlvbiQkKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgR2x5cGhSdW4pOwoKICAgIC8qKgogICAgICogQW4gYXJyYXkgb2YgR2x5cGggb2JqZWN0cyBpbiB0aGUgcnVuCiAgICAgKiBAdHlwZSB7R2x5cGhbXX0KICAgICAqLwogICAgdGhpcy5nbHlwaHMgPSBnbHlwaHM7CgogICAgLyoqCiAgICAgKiBBbiBhcnJheSBvZiBHbHlwaFBvc2l0aW9uIG9iamVjdHMgZm9yIGVhY2ggZ2x5cGggaW4gdGhlIHJ1bgogICAgICogQHR5cGUge0dseXBoUG9zaXRpb25bXX0KICAgICAqLwogICAgdGhpcy5wb3NpdGlvbnMgPSBudWxsOwoKICAgIC8qKgogICAgICogVGhlIHNjcmlwdCB0aGF0IHdhcyByZXF1ZXN0ZWQgZm9yIHNoYXBpbmcuIFRoaXMgd2FzIGVpdGhlciBwYXNzZWQgaW4gb3IgZGV0ZWN0ZWQgYXV0b21hdGljYWxseS4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHRoaXMuc2NyaXB0ID0gc2NyaXB0OwoKICAgIC8qKgogICAgICogVGhlIGxhbmd1YWdlIHJlcXVlc3RlZCBmb3Igc2hhcGluZywgYXMgcGFzc2VkIGluLiBJZiBgbnVsbGAsIHRoZSBkZWZhdWx0IGxhbmd1YWdlIGZvciB0aGUKICAgICAqIHNjcmlwdCB3YXMgdXNlZC4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZSB8fCBudWxsOwoKICAgIC8qKgogICAgICogVGhlIGRpcmVjdGlvbiByZXF1ZXN0ZWQgZm9yIHNoYXBpbmcsIGFzIHBhc3NlZCBpbiAoZWl0aGVyIGx0ciBvciBydGwpLgogICAgICogSWYgYG51bGxgLCB0aGUgZGVmYXVsdCBkaXJlY3Rpb24gb2YgdGhlIHNjcmlwdCBpcyB1c2VkLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgdGhpcy5kaXJlY3Rpb24gPSBkaXJlY3Rpb24kJCB8fCBkaXJlY3Rpb24oc2NyaXB0KTsKCiAgICAvKioKICAgICAqIFRoZSBmZWF0dXJlcyByZXF1ZXN0ZWQgZHVyaW5nIHNoYXBpbmcuIFRoaXMgaXMgYSBjb21iaW5hdGlvbiBvZiB1c2VyCiAgICAgKiBzcGVjaWZpZWQgZmVhdHVyZXMgYW5kIGZlYXR1cmVzIGNob3NlbiBieSB0aGUgc2hhcGVyLgogICAgICogQHR5cGUge29iamVjdH0KICAgICAqLwogICAgdGhpcy5mZWF0dXJlcyA9IHt9OwoKICAgIC8vIENvbnZlcnQgZmVhdHVyZXMgdG8gYW4gb2JqZWN0CiAgICBpZiAoQXJyYXkuaXNBcnJheShmZWF0dXJlcykpIHsKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gZmVhdHVyZXMsIF9pc0FycmF5ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IpLCBfaSA9IDAsIF9pdGVyYXRvciA9IF9pc0FycmF5ID8gX2l0ZXJhdG9yIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcik7OykgewogICAgICAgIHZhciBfcmVmOwoKICAgICAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgICAgIGlmIChfaSA+PSBfaXRlcmF0b3IubGVuZ3RoKSBicmVhazsKICAgICAgICAgIF9yZWYgPSBfaXRlcmF0b3JbX2krK107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF9pID0gX2l0ZXJhdG9yLm5leHQoKTsKICAgICAgICAgIGlmIChfaS5kb25lKSBicmVhazsKICAgICAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciB0YWcgPSBfcmVmOwoKICAgICAgICB0aGlzLmZlYXR1cmVzW3RhZ10gPSB0cnVlOwogICAgICB9CiAgICB9IGVsc2UgaWYgKCh0eXBlb2YgZmVhdHVyZXMgPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKGZlYXR1cmVzKSkgPT09ICdvYmplY3QnKSB7CiAgICAgIHRoaXMuZmVhdHVyZXMgPSBmZWF0dXJlczsKICAgIH0KICB9CgogIC8qKgogICAqIFRoZSB0b3RhbCBhZHZhbmNlIHdpZHRoIG9mIHRoZSBydW4uCiAgICogQHR5cGUge251bWJlcn0KICAgKi8KCgogIF9jcmVhdGVDbGFzcyhHbHlwaFJ1biwgW3sKICAgIGtleTogJ2FkdmFuY2VXaWR0aCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgdmFyIHdpZHRoID0gMDsKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMiA9IHRoaXMucG9zaXRpb25zLCBfaXNBcnJheTIgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjIpLCBfaTIgPSAwLCBfaXRlcmF0b3IyID0gX2lzQXJyYXkyID8gX2l0ZXJhdG9yMiA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IyKTs7KSB7CiAgICAgICAgdmFyIF9yZWYyOwoKICAgICAgICBpZiAoX2lzQXJyYXkyKSB7CiAgICAgICAgICBpZiAoX2kyID49IF9pdGVyYXRvcjIubGVuZ3RoKSBicmVhazsKICAgICAgICAgIF9yZWYyID0gX2l0ZXJhdG9yMltfaTIrK107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF9pMiA9IF9pdGVyYXRvcjIubmV4dCgpOwogICAgICAgICAgaWYgKF9pMi5kb25lKSBicmVhazsKICAgICAgICAgIF9yZWYyID0gX2kyLnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIHBvc2l0aW9uID0gX3JlZjI7CgogICAgICAgIHdpZHRoICs9IHBvc2l0aW9uLnhBZHZhbmNlOwogICAgICB9CgogICAgICByZXR1cm4gd2lkdGg7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgdG90YWwgYWR2YW5jZSBoZWlnaHQgb2YgdGhlIHJ1bi4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnYWR2YW5jZUhlaWdodCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgdmFyIGhlaWdodCA9IDA7CiAgICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSB0aGlzLnBvc2l0aW9ucywgX2lzQXJyYXkzID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IzKSwgX2kzID0gMCwgX2l0ZXJhdG9yMyA9IF9pc0FycmF5MyA/IF9pdGVyYXRvcjMgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMyk7OykgewogICAgICAgIHZhciBfcmVmMzsKCiAgICAgICAgaWYgKF9pc0FycmF5MykgewogICAgICAgICAgaWYgKF9pMyA+PSBfaXRlcmF0b3IzLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmMyA9IF9pdGVyYXRvcjNbX2kzKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaTMgPSBfaXRlcmF0b3IzLm5leHQoKTsKICAgICAgICAgIGlmIChfaTMuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmMyA9IF9pMy52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBwb3NpdGlvbiA9IF9yZWYzOwoKICAgICAgICBoZWlnaHQgKz0gcG9zaXRpb24ueUFkdmFuY2U7CiAgICAgIH0KCiAgICAgIHJldHVybiBoZWlnaHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgYm91bmRpbmcgYm94IGNvbnRhaW5pbmcgYWxsIGdseXBocyBpbiB0aGUgcnVuLgogICAgICogQHR5cGUge0JCb3h9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnYmJveCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgdmFyIGJib3ggPSBuZXcgQkJveCgpOwoKICAgICAgdmFyIHggPSAwOwogICAgICB2YXIgeSA9IDA7CiAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmdseXBocy5sZW5ndGg7IGluZGV4KyspIHsKICAgICAgICB2YXIgZ2x5cGggPSB0aGlzLmdseXBoc1tpbmRleF07CiAgICAgICAgdmFyIHAgPSB0aGlzLnBvc2l0aW9uc1tpbmRleF07CiAgICAgICAgdmFyIGIgPSBnbHlwaC5iYm94OwoKICAgICAgICBiYm94LmFkZFBvaW50KGIubWluWCArIHggKyBwLnhPZmZzZXQsIGIubWluWSArIHkgKyBwLnlPZmZzZXQpOwogICAgICAgIGJib3guYWRkUG9pbnQoYi5tYXhYICsgeCArIHAueE9mZnNldCwgYi5tYXhZICsgeSArIHAueU9mZnNldCk7CgogICAgICAgIHggKz0gcC54QWR2YW5jZTsKICAgICAgICB5ICs9IHAueUFkdmFuY2U7CiAgICAgIH0KCiAgICAgIHJldHVybiBiYm94OwogICAgfQogIH1dKTsKCiAgcmV0dXJuIEdseXBoUnVuOwp9KCk7CgovKioKICogUmVwcmVzZW50cyBwb3NpdGlvbmluZyBpbmZvcm1hdGlvbiBmb3IgYSBnbHlwaCBpbiBhIEdseXBoUnVuLgogKi8KdmFyIEdseXBoUG9zaXRpb24gPSBmdW5jdGlvbiBHbHlwaFBvc2l0aW9uKCkgewogIHZhciB4QWR2YW5jZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogMDsKICB2YXIgeUFkdmFuY2UgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7CiAgdmFyIHhPZmZzZXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDA7CiAgdmFyIHlPZmZzZXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IDA7CgogIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBHbHlwaFBvc2l0aW9uKTsKCiAgLyoqCiAgICogVGhlIGFtb3VudCB0byBtb3ZlIHRoZSB2aXJ0dWFsIHBlbiBpbiB0aGUgWCBkaXJlY3Rpb24gYWZ0ZXIgcmVuZGVyaW5nIHRoaXMgZ2x5cGguCiAgICogQHR5cGUge251bWJlcn0KICAgKi8KICB0aGlzLnhBZHZhbmNlID0geEFkdmFuY2U7CgogIC8qKgogICAqIFRoZSBhbW91bnQgdG8gbW92ZSB0aGUgdmlydHVhbCBwZW4gaW4gdGhlIFkgZGlyZWN0aW9uIGFmdGVyIHJlbmRlcmluZyB0aGlzIGdseXBoLgogICAqIEB0eXBlIHtudW1iZXJ9CiAgICovCiAgdGhpcy55QWR2YW5jZSA9IHlBZHZhbmNlOwoKICAvKioKICAgKiBUaGUgb2Zmc2V0IGZyb20gdGhlIHBlbiBwb3NpdGlvbiBpbiB0aGUgWCBkaXJlY3Rpb24gYXQgd2hpY2ggdG8gcmVuZGVyIHRoaXMgZ2x5cGguCiAgICogQHR5cGUge251bWJlcn0KICAgKi8KICB0aGlzLnhPZmZzZXQgPSB4T2Zmc2V0OwoKICAvKioKICAgKiBUaGUgb2Zmc2V0IGZyb20gdGhlIHBlbiBwb3NpdGlvbiBpbiB0aGUgWSBkaXJlY3Rpb24gYXQgd2hpY2ggdG8gcmVuZGVyIHRoaXMgZ2x5cGguCiAgICogQHR5cGUge251bWJlcn0KICAgKi8KICB0aGlzLnlPZmZzZXQgPSB5T2Zmc2V0Owp9OwoKLy8gc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9mb250cy9UcnVlVHlwZS1SZWZlcmVuY2UtTWFudWFsL1JNMDkvQXBwZW5kaXhGLmh0bWwKLy8gYW5kIC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9WZXJzaW9ucy9BL0hlYWRlcnMvU0ZOVExheW91dFR5cGVzLmggb24gYSBNYWMKdmFyIGZlYXR1cmVzID0gewogIGFsbFR5cG9ncmFwaGljRmVhdHVyZXM6IHsKICAgIGNvZGU6IDAsCiAgICBleGNsdXNpdmU6IGZhbHNlLAogICAgYWxsVHlwZUZlYXR1cmVzOiAwCiAgfSwKICBsaWdhdHVyZXM6IHsKICAgIGNvZGU6IDEsCiAgICBleGNsdXNpdmU6IGZhbHNlLAogICAgcmVxdWlyZWRMaWdhdHVyZXM6IDAsCiAgICBjb21tb25MaWdhdHVyZXM6IDIsCiAgICByYXJlTGlnYXR1cmVzOiA0LAogICAgLy8gbG9nb3M6IDYKICAgIHJlYnVzUGljdHVyZXM6IDgsCiAgICBkaXBodGhvbmdMaWdhdHVyZXM6IDEwLAogICAgc3F1YXJlZExpZ2F0dXJlczogMTIsCiAgICBhYmJyZXZTcXVhcmVkTGlnYXR1cmVzOiAxNCwKICAgIHN5bWJvbExpZ2F0dXJlczogMTYsCiAgICBjb250ZXh0dWFsTGlnYXR1cmVzOiAxOCwKICAgIGhpc3RvcmljYWxMaWdhdHVyZXM6IDIwCiAgfSwKICBjdXJzaXZlQ29ubmVjdGlvbjogewogICAgY29kZTogMiwKICAgIGV4Y2x1c2l2ZTogdHJ1ZSwKICAgIHVuY29ubmVjdGVkOiAwLAogICAgcGFydGlhbGx5Q29ubmVjdGVkOiAxLAogICAgY3Vyc2l2ZTogMgogIH0sCiAgbGV0dGVyQ2FzZTogewogICAgY29kZTogMywKICAgIGV4Y2x1c2l2ZTogdHJ1ZQogIH0sCiAgLy8gdXBwZXJBbmRMb3dlckNhc2U6IDAgICAgICAgICAgIyBkZXByZWNhdGVkCiAgLy8gYWxsQ2FwczogMSAgICAgICAgICAgICAgICAgICAgIyBkZXByZWNhdGVkCiAgLy8gYWxsTG93ZXJDYXNlOiAyICAgICAgICAgICAgICAgIyBkZXByZWNhdGVkCiAgLy8gc21hbGxDYXBzOiAzICAgICAgICAgICAgICAgICAgIyBkZXByZWNhdGVkCiAgLy8gaW5pdGlhbENhcHM6IDQgICAgICAgICAgICAgICAgIyBkZXByZWNhdGVkCiAgLy8gaW5pdGlhbENhcHNBbmRTbWFsbENhcHM6IDUgICAgIyBkZXByZWNhdGVkCiAgdmVydGljYWxTdWJzdGl0dXRpb246IHsKICAgIGNvZGU6IDQsCiAgICBleGNsdXNpdmU6IGZhbHNlLAogICAgc3Vic3RpdHV0ZVZlcnRpY2FsRm9ybXM6IDAKICB9LAogIGxpbmd1aXN0aWNSZWFycmFuZ2VtZW50OiB7CiAgICBjb2RlOiA1LAogICAgZXhjbHVzaXZlOiBmYWxzZSwKICAgIGxpbmd1aXN0aWNSZWFycmFuZ2VtZW50OiAwCiAgfSwKICBudW1iZXJTcGFjaW5nOiB7CiAgICBjb2RlOiA2LAogICAgZXhjbHVzaXZlOiB0cnVlLAogICAgbW9ub3NwYWNlZE51bWJlcnM6IDAsCiAgICBwcm9wb3J0aW9uYWxOdW1iZXJzOiAxLAogICAgdGhpcmRXaWR0aE51bWJlcnM6IDIsCiAgICBxdWFydGVyV2lkdGhOdW1iZXJzOiAzCiAgfSwKICBzbWFydFN3YXNoOiB7CiAgICBjb2RlOiA4LAogICAgZXhjbHVzaXZlOiBmYWxzZSwKICAgIHdvcmRJbml0aWFsU3dhc2hlczogMCwKICAgIHdvcmRGaW5hbFN3YXNoZXM6IDIsCiAgICAvLyBsaW5lSW5pdGlhbFN3YXNoZXM6IDQKICAgIC8vIGxpbmVGaW5hbFN3YXNoZXM6IDYKICAgIG5vbkZpbmFsU3dhc2hlczogOAogIH0sCiAgZGlhY3JpdGljczogewogICAgY29kZTogOSwKICAgIGV4Y2x1c2l2ZTogdHJ1ZSwKICAgIHNob3dEaWFjcml0aWNzOiAwLAogICAgaGlkZURpYWNyaXRpY3M6IDEsCiAgICBkZWNvbXBvc2VEaWFjcml0aWNzOiAyCiAgfSwKICB2ZXJ0aWNhbFBvc2l0aW9uOiB7CiAgICBjb2RlOiAxMCwKICAgIGV4Y2x1c2l2ZTogdHJ1ZSwKICAgIG5vcm1hbFBvc2l0aW9uOiAwLAogICAgc3VwZXJpb3JzOiAxLAogICAgaW5mZXJpb3JzOiAyLAogICAgb3JkaW5hbHM6IDMsCiAgICBzY2llbnRpZmljSW5mZXJpb3JzOiA0CiAgfSwKICBmcmFjdGlvbnM6IHsKICAgIGNvZGU6IDExLAogICAgZXhjbHVzaXZlOiB0cnVlLAogICAgbm9GcmFjdGlvbnM6IDAsCiAgICB2ZXJ0aWNhbEZyYWN0aW9uczogMSwKICAgIGRpYWdvbmFsRnJhY3Rpb25zOiAyCiAgfSwKICBvdmVybGFwcGluZ0NoYXJhY3RlcnM6IHsKICAgIGNvZGU6IDEzLAogICAgZXhjbHVzaXZlOiBmYWxzZSwKICAgIHByZXZlbnRPdmVybGFwOiAwCiAgfSwKICB0eXBvZ3JhcGhpY0V4dHJhczogewogICAgY29kZTogMTQsCiAgICBleGNsdXNpdmU6IGZhbHNlLAogICAgLy8gaHlwaGVuc1RvRW1EYXNoOiAwCiAgICAvLyBoeXBoZW5Ub0VuRGFzaDogMgogICAgc2xhc2hlZFplcm86IDQKICB9LAogIC8vIGZvcm1JbnRlcnJvYmFuZzogNgogIC8vIHNtYXJ0UXVvdGVzOiA4CiAgLy8gcGVyaW9kc1RvRWxsaXBzaXM6IDEwCiAgbWF0aGVtYXRpY2FsRXh0cmFzOiB7CiAgICBjb2RlOiAxNSwKICAgIGV4Y2x1c2l2ZTogZmFsc2UsCiAgICAvLyBoeXBoZW5Ub01pbnVzOiAwCiAgICAvLyBhc3RlcmlzdG9NdWx0aXBseTogMgogICAgLy8gc2xhc2hUb0RpdmlkZTogNAogICAgLy8gaW5lcXVhbGl0eUxpZ2F0dXJlczogNgogICAgLy8gZXhwb25lbnRzOiA4CiAgICBtYXRoZW1hdGljYWxHcmVlazogMTAKICB9LAogIG9ybmFtZW50U2V0czogewogICAgY29kZTogMTYsCiAgICBleGNsdXNpdmU6IHRydWUsCiAgICBub09ybmFtZW50czogMCwKICAgIGRpbmdiYXRzOiAxLAogICAgcGlDaGFyYWN0ZXJzOiAyLAogICAgZmxldXJvbnM6IDMsCiAgICBkZWNvcmF0aXZlQm9yZGVyczogNCwKICAgIGludGVybmF0aW9uYWxTeW1ib2xzOiA1LAogICAgbWF0aFN5bWJvbHM6IDYKICB9LAogIGNoYXJhY3RlckFsdGVybmF0aXZlczogewogICAgY29kZTogMTcsCiAgICBleGNsdXNpdmU6IHRydWUsCiAgICBub0FsdGVybmF0ZXM6IDAKICB9LAogIC8vIHVzZXIgZGVmaW5lZCBvcHRpb25zCiAgZGVzaWduQ29tcGxleGl0eTogewogICAgY29kZTogMTgsCiAgICBleGNsdXNpdmU6IHRydWUsCiAgICBkZXNpZ25MZXZlbDE6IDAsCiAgICBkZXNpZ25MZXZlbDI6IDEsCiAgICBkZXNpZ25MZXZlbDM6IDIsCiAgICBkZXNpZ25MZXZlbDQ6IDMsCiAgICBkZXNpZ25MZXZlbDU6IDQKICB9LAogIHN0eWxlT3B0aW9uczogewogICAgY29kZTogMTksCiAgICBleGNsdXNpdmU6IHRydWUsCiAgICBub1N0eWxlT3B0aW9uczogMCwKICAgIGRpc3BsYXlUZXh0OiAxLAogICAgZW5ncmF2ZWRUZXh0OiAyLAogICAgaWxsdW1pbmF0ZWRDYXBzOiAzLAogICAgdGl0bGluZ0NhcHM6IDQsCiAgICB0YWxsQ2FwczogNQogIH0sCiAgY2hhcmFjdGVyU2hhcGU6IHsKICAgIGNvZGU6IDIwLAogICAgZXhjbHVzaXZlOiB0cnVlLAogICAgdHJhZGl0aW9uYWxDaGFyYWN0ZXJzOiAwLAogICAgc2ltcGxpZmllZENoYXJhY3RlcnM6IDEsCiAgICBKSVMxOTc4Q2hhcmFjdGVyczogMiwKICAgIEpJUzE5ODNDaGFyYWN0ZXJzOiAzLAogICAgSklTMTk5MENoYXJhY3RlcnM6IDQsCiAgICB0cmFkaXRpb25hbEFsdE9uZTogNSwKICAgIHRyYWRpdGlvbmFsQWx0VHdvOiA2LAogICAgdHJhZGl0aW9uYWxBbHRUaHJlZTogNywKICAgIHRyYWRpdGlvbmFsQWx0Rm91cjogOCwKICAgIHRyYWRpdGlvbmFsQWx0Rml2ZTogOSwKICAgIGV4cGVydENoYXJhY3RlcnM6IDEwLAogICAgSklTMjAwNENoYXJhY3RlcnM6IDExLAogICAgaG9qb0NoYXJhY3RlcnM6IDEyLAogICAgTkxDQ2hhcmFjdGVyczogMTMsCiAgICB0cmFkaXRpb25hbE5hbWVzQ2hhcmFjdGVyczogMTQKICB9LAogIG51bWJlckNhc2U6IHsKICAgIGNvZGU6IDIxLAogICAgZXhjbHVzaXZlOiB0cnVlLAogICAgbG93ZXJDYXNlTnVtYmVyczogMCwKICAgIHVwcGVyQ2FzZU51bWJlcnM6IDEKICB9LAogIHRleHRTcGFjaW5nOiB7CiAgICBjb2RlOiAyMiwKICAgIGV4Y2x1c2l2ZTogdHJ1ZSwKICAgIHByb3BvcnRpb25hbFRleHQ6IDAsCiAgICBtb25vc3BhY2VkVGV4dDogMSwKICAgIGhhbGZXaWR0aFRleHQ6IDIsCiAgICB0aGlyZFdpZHRoVGV4dDogMywKICAgIHF1YXJ0ZXJXaWR0aFRleHQ6IDQsCiAgICBhbHRQcm9wb3J0aW9uYWxUZXh0OiA1LAogICAgYWx0SGFsZldpZHRoVGV4dDogNgogIH0sCiAgdHJhbnNsaXRlcmF0aW9uOiB7CiAgICBjb2RlOiAyMywKICAgIGV4Y2x1c2l2ZTogdHJ1ZSwKICAgIG5vVHJhbnNsaXRlcmF0aW9uOiAwCiAgfSwKICAvLyBoYW5qYVRvSGFuZ3VsOiAxCiAgLy8gaGlyYWdhbmFUb0thdGFrYW5hOiAyCiAgLy8ga2F0YWthbmFUb0hpcmFnYW5hOiAzCiAgLy8ga2FuYVRvUm9tYW5pemF0aW9uOiA0CiAgLy8gcm9tYW5pemF0aW9uVG9IaXJhZ2FuYTogNQogIC8vIHJvbWFuaXphdGlvblRvS2F0YWthbmE6IDYKICAvLyBoYW5qYVRvSGFuZ3VsQWx0T25lOiA3CiAgLy8gaGFuamFUb0hhbmd1bEFsdFR3bzogOAogIC8vIGhhbmphVG9IYW5ndWxBbHRUaHJlZTogOQogIGFubm90YXRpb246IHsKICAgIGNvZGU6IDI0LAogICAgZXhjbHVzaXZlOiB0cnVlLAogICAgbm9Bbm5vdGF0aW9uOiAwLAogICAgYm94QW5ub3RhdGlvbjogMSwKICAgIHJvdW5kZWRCb3hBbm5vdGF0aW9uOiAyLAogICAgY2lyY2xlQW5ub3RhdGlvbjogMywKICAgIGludmVydGVkQ2lyY2xlQW5ub3RhdGlvbjogNCwKICAgIHBhcmVudGhlc2lzQW5ub3RhdGlvbjogNSwKICAgIHBlcmlvZEFubm90YXRpb246IDYsCiAgICByb21hbk51bWVyYWxBbm5vdGF0aW9uOiA3LAogICAgZGlhbW9uZEFubm90YXRpb246IDgsCiAgICBpbnZlcnRlZEJveEFubm90YXRpb246IDksCiAgICBpbnZlcnRlZFJvdW5kZWRCb3hBbm5vdGF0aW9uOiAxMAogIH0sCiAga2FuYVNwYWNpbmc6IHsKICAgIGNvZGU6IDI1LAogICAgZXhjbHVzaXZlOiB0cnVlLAogICAgZnVsbFdpZHRoS2FuYTogMCwKICAgIHByb3BvcnRpb25hbEthbmE6IDEKICB9LAogIGlkZW9ncmFwaGljU3BhY2luZzogewogICAgY29kZTogMjYsCiAgICBleGNsdXNpdmU6IHRydWUsCiAgICBmdWxsV2lkdGhJZGVvZ3JhcGhzOiAwLAogICAgcHJvcG9ydGlvbmFsSWRlb2dyYXBoczogMSwKICAgIGhhbGZXaWR0aElkZW9ncmFwaHM6IDIKICB9LAogIHVuaWNvZGVEZWNvbXBvc2l0aW9uOiB7CiAgICBjb2RlOiAyNywKICAgIGV4Y2x1c2l2ZTogZmFsc2UsCiAgICBjYW5vbmljYWxDb21wb3NpdGlvbjogMCwKICAgIGNvbXBhdGliaWxpdHlDb21wb3NpdGlvbjogMiwKICAgIHRyYW5zY29kaW5nQ29tcG9zaXRpb246IDQKICB9LAogIHJ1YnlLYW5hOiB7CiAgICBjb2RlOiAyOCwKICAgIGV4Y2x1c2l2ZTogZmFsc2UsCiAgICAvLyBub1J1YnlLYW5hOiAwICAgICAjIGRlcHJlY2F0ZWQgLSB1c2UgcnVieUthbmFPZmYgaW5zdGVhZAogICAgLy8gcnVieUthbmE6IDEgICAgICMgZGVwcmVjYXRlZCAtIHVzZSBydWJ5S2FuYU9uIGluc3RlYWQKICAgIHJ1YnlLYW5hOiAyCiAgfSwKICBDSktTeW1ib2xBbHRlcm5hdGl2ZXM6IHsKICAgIGNvZGU6IDI5LAogICAgZXhjbHVzaXZlOiB0cnVlLAogICAgbm9DSktTeW1ib2xBbHRlcm5hdGl2ZXM6IDAsCiAgICBDSktTeW1ib2xBbHRPbmU6IDEsCiAgICBDSktTeW1ib2xBbHRUd286IDIsCiAgICBDSktTeW1ib2xBbHRUaHJlZTogMywKICAgIENKS1N5bWJvbEFsdEZvdXI6IDQsCiAgICBDSktTeW1ib2xBbHRGaXZlOiA1CiAgfSwKICBpZGVvZ3JhcGhpY0FsdGVybmF0aXZlczogewogICAgY29kZTogMzAsCiAgICBleGNsdXNpdmU6IHRydWUsCiAgICBub0lkZW9ncmFwaGljQWx0ZXJuYXRpdmVzOiAwLAogICAgaWRlb2dyYXBoaWNBbHRPbmU6IDEsCiAgICBpZGVvZ3JhcGhpY0FsdFR3bzogMiwKICAgIGlkZW9ncmFwaGljQWx0VGhyZWU6IDMsCiAgICBpZGVvZ3JhcGhpY0FsdEZvdXI6IDQsCiAgICBpZGVvZ3JhcGhpY0FsdEZpdmU6IDUKICB9LAogIENKS1ZlcnRpY2FsUm9tYW5QbGFjZW1lbnQ6IHsKICAgIGNvZGU6IDMxLAogICAgZXhjbHVzaXZlOiB0cnVlLAogICAgQ0pLVmVydGljYWxSb21hbkNlbnRlcmVkOiAwLAogICAgQ0pLVmVydGljYWxSb21hbkhCYXNlbGluZTogMQogIH0sCiAgaXRhbGljQ0pLUm9tYW46IHsKICAgIGNvZGU6IDMyLAogICAgZXhjbHVzaXZlOiBmYWxzZSwKICAgIC8vIG5vQ0pLSXRhbGljUm9tYW46IDAgICAgICMgZGVwcmVjYXRlZCAtIHVzZSBDSktJdGFsaWNSb21hbk9mZiBpbnN0ZWFkCiAgICAvLyBDSktJdGFsaWNSb21hbjogMSAgICAgIyBkZXByZWNhdGVkIC0gdXNlIENKS0l0YWxpY1JvbWFuT24gaW5zdGVhZAogICAgQ0pLSXRhbGljUm9tYW46IDIKICB9LAogIGNhc2VTZW5zaXRpdmVMYXlvdXQ6IHsKICAgIGNvZGU6IDMzLAogICAgZXhjbHVzaXZlOiBmYWxzZSwKICAgIGNhc2VTZW5zaXRpdmVMYXlvdXQ6IDAsCiAgICBjYXNlU2Vuc2l0aXZlU3BhY2luZzogMgogIH0sCiAgYWx0ZXJuYXRlS2FuYTogewogICAgY29kZTogMzQsCiAgICBleGNsdXNpdmU6IGZhbHNlLAogICAgYWx0ZXJuYXRlSG9yaXpLYW5hOiAwLAogICAgYWx0ZXJuYXRlVmVydEthbmE6IDIKICB9LAogIHN0eWxpc3RpY0FsdGVybmF0aXZlczogewogICAgY29kZTogMzUsCiAgICBleGNsdXNpdmU6IGZhbHNlLAogICAgbm9TdHlsaXN0aWNBbHRlcm5hdGVzOiAwLAogICAgc3R5bGlzdGljQWx0T25lOiAyLAogICAgc3R5bGlzdGljQWx0VHdvOiA0LAogICAgc3R5bGlzdGljQWx0VGhyZWU6IDYsCiAgICBzdHlsaXN0aWNBbHRGb3VyOiA4LAogICAgc3R5bGlzdGljQWx0Rml2ZTogMTAsCiAgICBzdHlsaXN0aWNBbHRTaXg6IDEyLAogICAgc3R5bGlzdGljQWx0U2V2ZW46IDE0LAogICAgc3R5bGlzdGljQWx0RWlnaHQ6IDE2LAogICAgc3R5bGlzdGljQWx0TmluZTogMTgsCiAgICBzdHlsaXN0aWNBbHRUZW46IDIwLAogICAgc3R5bGlzdGljQWx0RWxldmVuOiAyMiwKICAgIHN0eWxpc3RpY0FsdFR3ZWx2ZTogMjQsCiAgICBzdHlsaXN0aWNBbHRUaGlydGVlbjogMjYsCiAgICBzdHlsaXN0aWNBbHRGb3VydGVlbjogMjgsCiAgICBzdHlsaXN0aWNBbHRGaWZ0ZWVuOiAzMCwKICAgIHN0eWxpc3RpY0FsdFNpeHRlZW46IDMyLAogICAgc3R5bGlzdGljQWx0U2V2ZW50ZWVuOiAzNCwKICAgIHN0eWxpc3RpY0FsdEVpZ2h0ZWVuOiAzNiwKICAgIHN0eWxpc3RpY0FsdE5pbmV0ZWVuOiAzOCwKICAgIHN0eWxpc3RpY0FsdFR3ZW50eTogNDAKICB9LAogIGNvbnRleHR1YWxBbHRlcm5hdGVzOiB7CiAgICBjb2RlOiAzNiwKICAgIGV4Y2x1c2l2ZTogZmFsc2UsCiAgICBjb250ZXh0dWFsQWx0ZXJuYXRlczogMCwKICAgIHN3YXNoQWx0ZXJuYXRlczogMiwKICAgIGNvbnRleHR1YWxTd2FzaEFsdGVybmF0ZXM6IDQKICB9LAogIGxvd2VyQ2FzZTogewogICAgY29kZTogMzcsCiAgICBleGNsdXNpdmU6IHRydWUsCiAgICBkZWZhdWx0TG93ZXJDYXNlOiAwLAogICAgbG93ZXJDYXNlU21hbGxDYXBzOiAxLAogICAgbG93ZXJDYXNlUGV0aXRlQ2FwczogMgogIH0sCiAgdXBwZXJDYXNlOiB7CiAgICBjb2RlOiAzOCwKICAgIGV4Y2x1c2l2ZTogdHJ1ZSwKICAgIGRlZmF1bHRVcHBlckNhc2U6IDAsCiAgICB1cHBlckNhc2VTbWFsbENhcHM6IDEsCiAgICB1cHBlckNhc2VQZXRpdGVDYXBzOiAyCiAgfSwKICBsYW5ndWFnZVRhZzogeyAvLyBpbmRpY2VzIGludG8gbHRhZyB0YWJsZQogICAgY29kZTogMzksCiAgICBleGNsdXNpdmU6IHRydWUKICB9LAogIENKS1JvbWFuU3BhY2luZzogewogICAgY29kZTogMTAzLAogICAgZXhjbHVzaXZlOiB0cnVlLAogICAgaGFsZldpZHRoQ0pLUm9tYW46IDAsCiAgICBwcm9wb3J0aW9uYWxDSktSb21hbjogMSwKICAgIGRlZmF1bHRDSktSb21hbjogMiwKICAgIGZ1bGxXaWR0aENKS1JvbWFuOiAzCiAgfQp9OwoKdmFyIGZlYXR1cmUgPSBmdW5jdGlvbiBmZWF0dXJlKG5hbWUsIHNlbGVjdG9yKSB7CiAgcmV0dXJuIFtmZWF0dXJlc1tuYW1lXS5jb2RlLCBmZWF0dXJlc1tuYW1lXVtzZWxlY3Rvcl1dOwp9OwoKdmFyIE9UTWFwcGluZyA9IHsKICBybGlnOiBmZWF0dXJlKCdsaWdhdHVyZXMnLCAncmVxdWlyZWRMaWdhdHVyZXMnKSwKICBjbGlnOiBmZWF0dXJlKCdsaWdhdHVyZXMnLCAnY29udGV4dHVhbExpZ2F0dXJlcycpLAogIGRsaWc6IGZlYXR1cmUoJ2xpZ2F0dXJlcycsICdyYXJlTGlnYXR1cmVzJyksCiAgaGxpZzogZmVhdHVyZSgnbGlnYXR1cmVzJywgJ2hpc3RvcmljYWxMaWdhdHVyZXMnKSwKICBsaWdhOiBmZWF0dXJlKCdsaWdhdHVyZXMnLCAnY29tbW9uTGlnYXR1cmVzJyksCiAgaGlzdDogZmVhdHVyZSgnbGlnYXR1cmVzJywgJ2hpc3RvcmljYWxMaWdhdHVyZXMnKSwgLy8gPz8KCiAgc21jcDogZmVhdHVyZSgnbG93ZXJDYXNlJywgJ2xvd2VyQ2FzZVNtYWxsQ2FwcycpLAogIHBjYXA6IGZlYXR1cmUoJ2xvd2VyQ2FzZScsICdsb3dlckNhc2VQZXRpdGVDYXBzJyksCgogIGZyYWM6IGZlYXR1cmUoJ2ZyYWN0aW9ucycsICdkaWFnb25hbEZyYWN0aW9ucycpLAogIGRub206IGZlYXR1cmUoJ2ZyYWN0aW9ucycsICdkaWFnb25hbEZyYWN0aW9ucycpLCAvLyA/PwogIG51bXI6IGZlYXR1cmUoJ2ZyYWN0aW9ucycsICdkaWFnb25hbEZyYWN0aW9ucycpLCAvLyA/PwogIGFmcmM6IGZlYXR1cmUoJ2ZyYWN0aW9ucycsICd2ZXJ0aWNhbEZyYWN0aW9ucycpLAogIC8vIGFhbHQKICAvLyBhYnZmLCBhYnZtLCBhYnZzLCBha2huLCBibHdmLCBibHdtLCBibHdzLCBjZmFyLCBjamN0LCBjcHNwLCBmYWx0LCBpc29sLCBqYWx0LCBsam1vLCBtc2V0PwogIC8vIGx0cmEsIGx0cm0sIG51a3QsIHByZWYsIHByZXMsIHBzdGYsIHBzdHMsIHJhbmQsIHJrcmYsIHJwaGYsIHJ0bGEsIHJ0bG0sIHNpemUsIHRqbW8sIHRudW0/CiAgLy8gdW5pYywgdmF0dSwgdmhhbCwgdmptbywgdnBhbCwgdnJ0MgogIC8vIGRpc3QgLT4gdHJhayB0YWJsZT8KICAvLyBrZXJuLCB2a3JuIC0+IGtlcm4gdGFibGUKICAvLyBsZmJkICsgb3BiZCArIHJ0YmQgLT4gb3BiZCB0YWJsZT8KICAvLyBtYXJrLCBta21rIC0+IGFjbnQgdGFibGU/CiAgLy8gbG9jbCAtPiBsYW5ndWFnZVRhZyArIGx0YWcgdGFibGUKCiAgY2FzZTogZmVhdHVyZSgnY2FzZVNlbnNpdGl2ZUxheW91dCcsICdjYXNlU2Vuc2l0aXZlTGF5b3V0JyksIC8vIGFsc28gY2FzZVNlbnNpdGl2ZVNwYWNpbmcKICBjY21wOiBmZWF0dXJlKCd1bmljb2RlRGVjb21wb3NpdGlvbicsICdjYW5vbmljYWxDb21wb3NpdGlvbicpLCAvLyBjb21wYXRpYmlsaXR5Q29tcG9zaXRpb24/CiAgY3BjdDogZmVhdHVyZSgnQ0pLVmVydGljYWxSb21hblBsYWNlbWVudCcsICdDSktWZXJ0aWNhbFJvbWFuQ2VudGVyZWQnKSwgLy8gZ3Vlc3MuLi4sIHByb2JhYmx5IG5vdCBnaXZlbiBiZWxvdwogIHZhbHQ6IGZlYXR1cmUoJ0NKS1ZlcnRpY2FsUm9tYW5QbGFjZW1lbnQnLCAnQ0pLVmVydGljYWxSb21hbkNlbnRlcmVkJyksCiAgc3dzaDogZmVhdHVyZSgnY29udGV4dHVhbEFsdGVybmF0ZXMnLCAnc3dhc2hBbHRlcm5hdGVzJyksCiAgY3N3aDogZmVhdHVyZSgnY29udGV4dHVhbEFsdGVybmF0ZXMnLCAnY29udGV4dHVhbFN3YXNoQWx0ZXJuYXRlcycpLAogIGN1cnM6IGZlYXR1cmUoJ2N1cnNpdmVDb25uZWN0aW9uJywgJ2N1cnNpdmUnKSwgLy8gPz8KICBjMnBjOiBmZWF0dXJlKCd1cHBlckNhc2UnLCAndXBwZXJDYXNlUGV0aXRlQ2FwcycpLAogIGMyc2M6IGZlYXR1cmUoJ3VwcGVyQ2FzZScsICd1cHBlckNhc2VTbWFsbENhcHMnKSwKCiAgaW5pdDogZmVhdHVyZSgnc21hcnRTd2FzaCcsICd3b3JkSW5pdGlhbFN3YXNoZXMnKSwgLy8gPz8KICBmaW4yOiBmZWF0dXJlKCdzbWFydFN3YXNoJywgJ3dvcmRGaW5hbFN3YXNoZXMnKSwgLy8gPz8KICBtZWRpOiBmZWF0dXJlKCdzbWFydFN3YXNoJywgJ25vbkZpbmFsU3dhc2hlcycpLCAvLyA/PwogIG1lZDI6IGZlYXR1cmUoJ3NtYXJ0U3dhc2gnLCAnbm9uRmluYWxTd2FzaGVzJyksIC8vID8/CiAgZmluMzogZmVhdHVyZSgnc21hcnRTd2FzaCcsICd3b3JkRmluYWxTd2FzaGVzJyksIC8vID8/CiAgZmluYTogZmVhdHVyZSgnc21hcnRTd2FzaCcsICd3b3JkRmluYWxTd2FzaGVzJyksIC8vID8/CgogIHBrbmE6IGZlYXR1cmUoJ2thbmFTcGFjaW5nJywgJ3Byb3BvcnRpb25hbEthbmEnKSwKICBoYWxmOiBmZWF0dXJlKCd0ZXh0U3BhY2luZycsICdoYWxmV2lkdGhUZXh0JyksIC8vIGFsc28gSGFsZldpZHRoQ0pLUm9tYW4sIEhhbGZXaWR0aElkZW9ncmFwaHM/CiAgaGFsdDogZmVhdHVyZSgndGV4dFNwYWNpbmcnLCAnYWx0SGFsZldpZHRoVGV4dCcpLAoKICBoa25hOiBmZWF0dXJlKCdhbHRlcm5hdGVLYW5hJywgJ2FsdGVybmF0ZUhvcml6S2FuYScpLAogIHZrbmE6IGZlYXR1cmUoJ2FsdGVybmF0ZUthbmEnLCAnYWx0ZXJuYXRlVmVydEthbmEnKSwKICAvLyBobmdsOiBmZWF0dXJlICd0cmFuc2xpdGVyYXRpb24nLCAnaGFuamFUb0hhbmd1bFNlbGVjdG9yJyAjIGRlcHJlY2F0ZWQKCiAgaXRhbDogZmVhdHVyZSgnaXRhbGljQ0pLUm9tYW4nLCAnQ0pLSXRhbGljUm9tYW4nKSwKICBsbnVtOiBmZWF0dXJlKCdudW1iZXJDYXNlJywgJ3VwcGVyQ2FzZU51bWJlcnMnKSwKICBvbnVtOiBmZWF0dXJlKCdudW1iZXJDYXNlJywgJ2xvd2VyQ2FzZU51bWJlcnMnKSwKICBtZ3JrOiBmZWF0dXJlKCdtYXRoZW1hdGljYWxFeHRyYXMnLCAnbWF0aGVtYXRpY2FsR3JlZWsnKSwKCiAgLy8gbmFsdDogbm90IGVub3VnaCBpbmZvLiB3aGF0IHR5cGUgb2YgYW5ub3RhdGlvbj8KICAvLyBvcm5tOiBkaXR0bywgd2hpY2ggb3JuYW1lbnQgc3R5bGU/CgogIGNhbHQ6IGZlYXR1cmUoJ2NvbnRleHR1YWxBbHRlcm5hdGVzJywgJ2NvbnRleHR1YWxBbHRlcm5hdGVzJyksIC8vIG9yIG1vcmU/CiAgdnJ0MjogZmVhdHVyZSgndmVydGljYWxTdWJzdGl0dXRpb24nLCAnc3Vic3RpdHV0ZVZlcnRpY2FsRm9ybXMnKSwgLy8gb2guLi4gYmVsb3c/CiAgdmVydDogZmVhdHVyZSgndmVydGljYWxTdWJzdGl0dXRpb24nLCAnc3Vic3RpdHV0ZVZlcnRpY2FsRm9ybXMnKSwKICB0bnVtOiBmZWF0dXJlKCdudW1iZXJTcGFjaW5nJywgJ21vbm9zcGFjZWROdW1iZXJzJyksCiAgcG51bTogZmVhdHVyZSgnbnVtYmVyU3BhY2luZycsICdwcm9wb3J0aW9uYWxOdW1iZXJzJyksCiAgc3VwczogZmVhdHVyZSgndmVydGljYWxQb3NpdGlvbicsICdzdXBlcmlvcnMnKSwKICBzdWJzOiBmZWF0dXJlKCd2ZXJ0aWNhbFBvc2l0aW9uJywgJ2luZmVyaW9ycycpLAogIG9yZG46IGZlYXR1cmUoJ3ZlcnRpY2FsUG9zaXRpb24nLCAnb3JkaW5hbHMnKSwKICBwd2lkOiBmZWF0dXJlKCd0ZXh0U3BhY2luZycsICdwcm9wb3J0aW9uYWxUZXh0JyksCiAgaHdpZDogZmVhdHVyZSgndGV4dFNwYWNpbmcnLCAnaGFsZldpZHRoVGV4dCcpLAogIHF3aWQ6IGZlYXR1cmUoJ3RleHRTcGFjaW5nJywgJ3F1YXJ0ZXJXaWR0aFRleHQnKSwgLy8gYWxzbyBRdWFydGVyV2lkdGhOdW1iZXJzPwogIHR3aWQ6IGZlYXR1cmUoJ3RleHRTcGFjaW5nJywgJ3RoaXJkV2lkdGhUZXh0JyksIC8vIGFsc28gVGhpcmRXaWR0aE51bWJlcnM/CiAgZndpZDogZmVhdHVyZSgndGV4dFNwYWNpbmcnLCAncHJvcG9ydGlvbmFsVGV4dCcpLCAvLz8/CiAgcGFsdDogZmVhdHVyZSgndGV4dFNwYWNpbmcnLCAnYWx0UHJvcG9ydGlvbmFsVGV4dCcpLAogIHRyYWQ6IGZlYXR1cmUoJ2NoYXJhY3RlclNoYXBlJywgJ3RyYWRpdGlvbmFsQ2hhcmFjdGVycycpLAogIHNtcGw6IGZlYXR1cmUoJ2NoYXJhY3RlclNoYXBlJywgJ3NpbXBsaWZpZWRDaGFyYWN0ZXJzJyksCiAganA3ODogZmVhdHVyZSgnY2hhcmFjdGVyU2hhcGUnLCAnSklTMTk3OENoYXJhY3RlcnMnKSwKICBqcDgzOiBmZWF0dXJlKCdjaGFyYWN0ZXJTaGFwZScsICdKSVMxOTgzQ2hhcmFjdGVycycpLAogIGpwOTA6IGZlYXR1cmUoJ2NoYXJhY3RlclNoYXBlJywgJ0pJUzE5OTBDaGFyYWN0ZXJzJyksCiAganAwNDogZmVhdHVyZSgnY2hhcmFjdGVyU2hhcGUnLCAnSklTMjAwNENoYXJhY3RlcnMnKSwKICBleHB0OiBmZWF0dXJlKCdjaGFyYWN0ZXJTaGFwZScsICdleHBlcnRDaGFyYWN0ZXJzJyksCiAgaG9qbzogZmVhdHVyZSgnY2hhcmFjdGVyU2hhcGUnLCAnaG9qb0NoYXJhY3RlcnMnKSwKICBubGNrOiBmZWF0dXJlKCdjaGFyYWN0ZXJTaGFwZScsICdOTENDaGFyYWN0ZXJzJyksCiAgdG5hbTogZmVhdHVyZSgnY2hhcmFjdGVyU2hhcGUnLCAndHJhZGl0aW9uYWxOYW1lc0NoYXJhY3RlcnMnKSwKICBydWJ5OiBmZWF0dXJlKCdydWJ5S2FuYScsICdydWJ5S2FuYScpLAogIHRpdGw6IGZlYXR1cmUoJ3N0eWxlT3B0aW9ucycsICd0aXRsaW5nQ2FwcycpLAogIHplcm86IGZlYXR1cmUoJ3R5cG9ncmFwaGljRXh0cmFzJywgJ3NsYXNoZWRaZXJvJyksCgogIHNzMDE6IGZlYXR1cmUoJ3N0eWxpc3RpY0FsdGVybmF0aXZlcycsICdzdHlsaXN0aWNBbHRPbmUnKSwKICBzczAyOiBmZWF0dXJlKCdzdHlsaXN0aWNBbHRlcm5hdGl2ZXMnLCAnc3R5bGlzdGljQWx0VHdvJyksCiAgc3MwMzogZmVhdHVyZSgnc3R5bGlzdGljQWx0ZXJuYXRpdmVzJywgJ3N0eWxpc3RpY0FsdFRocmVlJyksCiAgc3MwNDogZmVhdHVyZSgnc3R5bGlzdGljQWx0ZXJuYXRpdmVzJywgJ3N0eWxpc3RpY0FsdEZvdXInKSwKICBzczA1OiBmZWF0dXJlKCdzdHlsaXN0aWNBbHRlcm5hdGl2ZXMnLCAnc3R5bGlzdGljQWx0Rml2ZScpLAogIHNzMDY6IGZlYXR1cmUoJ3N0eWxpc3RpY0FsdGVybmF0aXZlcycsICdzdHlsaXN0aWNBbHRTaXgnKSwKICBzczA3OiBmZWF0dXJlKCdzdHlsaXN0aWNBbHRlcm5hdGl2ZXMnLCAnc3R5bGlzdGljQWx0U2V2ZW4nKSwKICBzczA4OiBmZWF0dXJlKCdzdHlsaXN0aWNBbHRlcm5hdGl2ZXMnLCAnc3R5bGlzdGljQWx0RWlnaHQnKSwKICBzczA5OiBmZWF0dXJlKCdzdHlsaXN0aWNBbHRlcm5hdGl2ZXMnLCAnc3R5bGlzdGljQWx0TmluZScpLAogIHNzMTA6IGZlYXR1cmUoJ3N0eWxpc3RpY0FsdGVybmF0aXZlcycsICdzdHlsaXN0aWNBbHRUZW4nKSwKICBzczExOiBmZWF0dXJlKCdzdHlsaXN0aWNBbHRlcm5hdGl2ZXMnLCAnc3R5bGlzdGljQWx0RWxldmVuJyksCiAgc3MxMjogZmVhdHVyZSgnc3R5bGlzdGljQWx0ZXJuYXRpdmVzJywgJ3N0eWxpc3RpY0FsdFR3ZWx2ZScpLAogIHNzMTM6IGZlYXR1cmUoJ3N0eWxpc3RpY0FsdGVybmF0aXZlcycsICdzdHlsaXN0aWNBbHRUaGlydGVlbicpLAogIHNzMTQ6IGZlYXR1cmUoJ3N0eWxpc3RpY0FsdGVybmF0aXZlcycsICdzdHlsaXN0aWNBbHRGb3VydGVlbicpLAogIHNzMTU6IGZlYXR1cmUoJ3N0eWxpc3RpY0FsdGVybmF0aXZlcycsICdzdHlsaXN0aWNBbHRGaWZ0ZWVuJyksCiAgc3MxNjogZmVhdHVyZSgnc3R5bGlzdGljQWx0ZXJuYXRpdmVzJywgJ3N0eWxpc3RpY0FsdFNpeHRlZW4nKSwKICBzczE3OiBmZWF0dXJlKCdzdHlsaXN0aWNBbHRlcm5hdGl2ZXMnLCAnc3R5bGlzdGljQWx0U2V2ZW50ZWVuJyksCiAgc3MxODogZmVhdHVyZSgnc3R5bGlzdGljQWx0ZXJuYXRpdmVzJywgJ3N0eWxpc3RpY0FsdEVpZ2h0ZWVuJyksCiAgc3MxOTogZmVhdHVyZSgnc3R5bGlzdGljQWx0ZXJuYXRpdmVzJywgJ3N0eWxpc3RpY0FsdE5pbmV0ZWVuJyksCiAgc3MyMDogZmVhdHVyZSgnc3R5bGlzdGljQWx0ZXJuYXRpdmVzJywgJ3N0eWxpc3RpY0FsdFR3ZW50eScpCn07CgovLyBzYWx0OiBmZWF0dXJlICdzdHlsaXN0aWNBbHRlcm5hdGl2ZXMnLCAnc3R5bGlzdGljQWx0T25lJyAjIGhtbSwgd2hpY2ggb25lIHRvIGNob29zZQoKLy8gQWRkIGN2MDEtY3Y5OSBmZWF0dXJlcwpmb3IgKHZhciBpID0gMTsgaSA8PSA5OTsgaSsrKSB7CiAgT1RNYXBwaW5nWydjdicgKyAoJzAwJyArIGkpLnNsaWNlKC0yKV0gPSBbZmVhdHVyZXMuY2hhcmFjdGVyQWx0ZXJuYXRpdmVzLmNvZGUsIGldOwp9CgovLyBjcmVhdGUgaW52ZXJzZSBtYXBwaW5nCnZhciBBQVRNYXBwaW5nID0ge307CmZvciAodmFyIG90IGluIE9UTWFwcGluZykgewogIHZhciBhYXQgPSBPVE1hcHBpbmdbb3RdOwogIGlmIChBQVRNYXBwaW5nW2FhdFswXV0gPT0gbnVsbCkgewogICAgQUFUTWFwcGluZ1thYXRbMF1dID0ge307CiAgfQoKICBBQVRNYXBwaW5nW2FhdFswXV1bYWF0WzFdXSA9IG90Owp9CgovLyBNYXBzIGFuIGFycmF5IG9mIE9wZW5UeXBlIGZlYXR1cmVzIHRvIEFBVCBmZWF0dXJlcwovLyBpbiB0aGUgZm9ybSBvZiB7ZmVhdHVyZVR5cGU6e2ZlYXR1cmVTZXR0aW5nOnRydWV9fQpmdW5jdGlvbiBtYXBPVFRvQUFUKGZlYXR1cmVzKSB7CiAgdmFyIHJlcyA9IHt9OwogIGZvciAodmFyIGsgaW4gZmVhdHVyZXMpIHsKICAgIHZhciByID0gdm9pZCAwOwogICAgaWYgKHIgPSBPVE1hcHBpbmdba10pIHsKICAgICAgaWYgKHJlc1tyWzBdXSA9PSBudWxsKSB7CiAgICAgICAgcmVzW3JbMF1dID0ge307CiAgICAgIH0KCiAgICAgIHJlc1tyWzBdXVtyWzFdXSA9IGZlYXR1cmVzW2tdOwogICAgfQogIH0KCiAgcmV0dXJuIHJlczsKfQoKLy8gTWFwcyBzdHJpbmdzIGluIGEgW2ZlYXR1cmVUeXBlLCBmZWF0dXJlU2V0dGluZ10KLy8gdG8gdGhlaXIgZXF1aXZhbGVudCBudW1iZXIgY29kZXMKZnVuY3Rpb24gbWFwRmVhdHVyZVN0cmluZ3MoZikgewogIHZhciB0eXBlID0gZlswXSwKICAgICAgc2V0dGluZyA9IGZbMV07CgogIGlmIChpc05hTih0eXBlKSkgewogICAgdmFyIHR5cGVDb2RlID0gZmVhdHVyZXNbdHlwZV0gJiYgZmVhdHVyZXNbdHlwZV0uY29kZTsKICB9IGVsc2UgewogICAgdmFyIHR5cGVDb2RlID0gdHlwZTsKICB9CgogIGlmIChpc05hTihzZXR0aW5nKSkgewogICAgdmFyIHNldHRpbmdDb2RlID0gZmVhdHVyZXNbdHlwZV0gJiYgZmVhdHVyZXNbdHlwZV1bc2V0dGluZ107CiAgfSBlbHNlIHsKICAgIHZhciBzZXR0aW5nQ29kZSA9IHNldHRpbmc7CiAgfQoKICByZXR1cm4gW3R5cGVDb2RlLCBzZXR0aW5nQ29kZV07Cn0KCi8vIE1hcHMgQUFUIGZlYXR1cmVzIHRvIGFuIGFycmF5IG9mIE9wZW5UeXBlIGZlYXR1cmVzCi8vIFN1cHBvcnRzIGJvdGggYXJyYXlzIGluIHRoZSBmb3JtIG9mIFtbZmVhdHVyZVR5cGUsIGZlYXR1cmVTZXR0aW5nXV0KLy8gYW5kIG9iamVjdHMgaW4gdGhlIGZvcm0gb2Yge2ZlYXR1cmVUeXBlOntmZWF0dXJlU2V0dGluZzp0cnVlfX0KLy8gZmVhdHVyZVR5cGVzIGFuZCBmZWF0dXJlU2V0dGluZ3MgY2FuIGJlIGVpdGhlciBzdHJpbmdzIG9yIG51bWJlciBjb2RlcwpmdW5jdGlvbiBtYXBBQVRUb09UKGZlYXR1cmVzKSB7CiAgdmFyIHJlcyA9IHt9OwogIGlmIChBcnJheS5pc0FycmF5KGZlYXR1cmVzKSkgewogICAgZm9yICh2YXIgayA9IDA7IGsgPCBmZWF0dXJlcy5sZW5ndGg7IGsrKykgewogICAgICB2YXIgciA9IHZvaWQgMDsKICAgICAgdmFyIGYgPSBtYXBGZWF0dXJlU3RyaW5ncyhmZWF0dXJlc1trXSk7CiAgICAgIGlmIChyID0gQUFUTWFwcGluZ1tmWzBdXSAmJiBBQVRNYXBwaW5nW2ZbMF1dW2ZbMV1dKSB7CiAgICAgICAgcmVzW3JdID0gdHJ1ZTsKICAgICAgfQogICAgfQogIH0gZWxzZSBpZiAoKHR5cGVvZiBmZWF0dXJlcyA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YoZmVhdHVyZXMpKSA9PT0gJ29iamVjdCcpIHsKICAgIGZvciAodmFyIHR5cGUgaW4gZmVhdHVyZXMpIHsKICAgICAgdmFyIF9mZWF0dXJlID0gZmVhdHVyZXNbdHlwZV07CiAgICAgIGZvciAodmFyIHNldHRpbmcgaW4gX2ZlYXR1cmUpIHsKICAgICAgICB2YXIgX3IgPSB2b2lkIDA7CiAgICAgICAgdmFyIF9mID0gbWFwRmVhdHVyZVN0cmluZ3MoW3R5cGUsIHNldHRpbmddKTsKICAgICAgICBpZiAoX2ZlYXR1cmVbc2V0dGluZ10gJiYgKF9yID0gQUFUTWFwcGluZ1tfZlswXV0gJiYgQUFUTWFwcGluZ1tfZlswXV1bX2ZbMV1dKSkgewogICAgICAgICAgcmVzW19yXSA9IHRydWU7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQoKICByZXR1cm4gX09iamVjdCRrZXlzKHJlcyk7Cn0KCnZhciBfY2xhc3MkMzsKZnVuY3Rpb24gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciQzKHRhcmdldCwgcHJvcGVydHksIGRlY29yYXRvcnMsIGRlc2NyaXB0b3IsIGNvbnRleHQpIHsKICB2YXIgZGVzYyA9IHt9OwogIE9iamVjdFsna2UnICsgJ3lzJ10oZGVzY3JpcHRvcikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7CiAgICBkZXNjW2tleV0gPSBkZXNjcmlwdG9yW2tleV07CiAgfSk7CiAgZGVzYy5lbnVtZXJhYmxlID0gISFkZXNjLmVudW1lcmFibGU7CiAgZGVzYy5jb25maWd1cmFibGUgPSAhIWRlc2MuY29uZmlndXJhYmxlOwoKICBpZiAoJ3ZhbHVlJyBpbiBkZXNjIHx8IGRlc2MuaW5pdGlhbGl6ZXIpIHsKICAgIGRlc2Mud3JpdGFibGUgPSB0cnVlOwogIH0KCiAgZGVzYyA9IGRlY29yYXRvcnMuc2xpY2UoKS5yZXZlcnNlKCkucmVkdWNlKGZ1bmN0aW9uIChkZXNjLCBkZWNvcmF0b3IpIHsKICAgIHJldHVybiBkZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eSwgZGVzYykgfHwgZGVzYzsKICB9LCBkZXNjKTsKCiAgaWYgKGNvbnRleHQgJiYgZGVzYy5pbml0aWFsaXplciAhPT0gdm9pZCAwKSB7CiAgICBkZXNjLnZhbHVlID0gZGVzYy5pbml0aWFsaXplciA/IGRlc2MuaW5pdGlhbGl6ZXIuY2FsbChjb250ZXh0KSA6IHZvaWQgMDsKICAgIGRlc2MuaW5pdGlhbGl6ZXIgPSB1bmRlZmluZWQ7CiAgfQoKICBpZiAoZGVzYy5pbml0aWFsaXplciA9PT0gdm9pZCAwKSB7CiAgICBPYmplY3RbJ2RlZmluZScgKyAnUHJvcGVydHknXSh0YXJnZXQsIHByb3BlcnR5LCBkZXNjKTsKICAgIGRlc2MgPSBudWxsOwogIH0KCiAgcmV0dXJuIGRlc2M7Cn0KCnZhciBBQVRMb29rdXBUYWJsZSA9IChfY2xhc3MkMyA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBBQVRMb29rdXBUYWJsZSh0YWJsZSkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEFBVExvb2t1cFRhYmxlKTsKCiAgICB0aGlzLnRhYmxlID0gdGFibGU7CiAgfQoKICBBQVRMb29rdXBUYWJsZS5wcm90b3R5cGUubG9va3VwID0gZnVuY3Rpb24gbG9va3VwKGdseXBoKSB7CiAgICBzd2l0Y2ggKHRoaXMudGFibGUudmVyc2lvbikgewogICAgICBjYXNlIDA6CiAgICAgICAgLy8gc2ltcGxlIGFycmF5IGZvcm1hdAogICAgICAgIHJldHVybiB0aGlzLnRhYmxlLnZhbHVlcy5nZXRJdGVtKGdseXBoKTsKCiAgICAgIGNhc2UgMjogLy8gc2VnbWVudCBmb3JtYXQKICAgICAgY2FzZSA0OgogICAgICAgIHsKICAgICAgICAgIHZhciBtaW4gPSAwOwogICAgICAgICAgdmFyIG1heCA9IHRoaXMudGFibGUuYmluYXJ5U2VhcmNoSGVhZGVyLm5Vbml0cyAtIDE7CgogICAgICAgICAgd2hpbGUgKG1pbiA8PSBtYXgpIHsKICAgICAgICAgICAgdmFyIG1pZCA9IG1pbiArIG1heCA+PiAxOwogICAgICAgICAgICB2YXIgc2VnID0gdGhpcy50YWJsZS5zZWdtZW50c1ttaWRdOwoKICAgICAgICAgICAgLy8gc3BlY2lhbCBlbmQgb2Ygc2VhcmNoIHZhbHVlCiAgICAgICAgICAgIGlmIChzZWcuZmlyc3RHbHlwaCA9PT0gMHhmZmZmKSB7CiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChnbHlwaCA8IHNlZy5maXJzdEdseXBoKSB7CiAgICAgICAgICAgICAgbWF4ID0gbWlkIC0gMTsKICAgICAgICAgICAgfSBlbHNlIGlmIChnbHlwaCA+IHNlZy5sYXN0R2x5cGgpIHsKICAgICAgICAgICAgICBtaW4gPSBtaWQgKyAxOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGlmICh0aGlzLnRhYmxlLnZlcnNpb24gPT09IDIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWcudmFsdWU7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWcudmFsdWVzW2dseXBoIC0gc2VnLmZpcnN0R2x5cGhdOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgIGNhc2UgNjoKICAgICAgICB7CiAgICAgICAgICAvLyBsb29rdXAgc2luZ2xlCiAgICAgICAgICB2YXIgX21pbiA9IDA7CiAgICAgICAgICB2YXIgX21heCA9IHRoaXMudGFibGUuYmluYXJ5U2VhcmNoSGVhZGVyLm5Vbml0cyAtIDE7CgogICAgICAgICAgd2hpbGUgKF9taW4gPD0gX21heCkgewogICAgICAgICAgICB2YXIgbWlkID0gX21pbiArIF9tYXggPj4gMTsKICAgICAgICAgICAgdmFyIHNlZyA9IHRoaXMudGFibGUuc2VnbWVudHNbbWlkXTsKCiAgICAgICAgICAgIC8vIHNwZWNpYWwgZW5kIG9mIHNlYXJjaCB2YWx1ZQogICAgICAgICAgICBpZiAoc2VnLmdseXBoID09PSAweGZmZmYpIHsKICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGdseXBoIDwgc2VnLmdseXBoKSB7CiAgICAgICAgICAgICAgX21heCA9IG1pZCAtIDE7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoZ2x5cGggPiBzZWcuZ2x5cGgpIHsKICAgICAgICAgICAgICBfbWluID0gbWlkICsgMTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gc2VnLnZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgICB9CgogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgY2FzZSA4OgogICAgICAgIC8vIGxvb2t1cCB0cmltbWVkCiAgICAgICAgcmV0dXJuIHRoaXMudGFibGUudmFsdWVzW2dseXBoIC0gdGhpcy50YWJsZS5maXJzdEdseXBoXTsKCiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGxvb2t1cCB0YWJsZSBmb3JtYXQ6ICcgKyB0aGlzLnRhYmxlLnZlcnNpb24pOwogICAgfQogIH07CgogIEFBVExvb2t1cFRhYmxlLnByb3RvdHlwZS5nbHlwaHNGb3JWYWx1ZSA9IGZ1bmN0aW9uIGdseXBoc0ZvclZhbHVlKGNsYXNzVmFsdWUpIHsKICAgIHZhciByZXMgPSBbXTsKCiAgICBzd2l0Y2ggKHRoaXMudGFibGUudmVyc2lvbikgewogICAgICBjYXNlIDI6IC8vIHNlZ21lbnQgZm9ybWF0CiAgICAgIGNhc2UgNDoKICAgICAgICB7CiAgICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IgPSB0aGlzLnRhYmxlLnNlZ21lbnRzLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgICAgICAgdmFyIF9yZWY7CgogICAgICAgICAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICAgICAgX3JlZiA9IF9pdGVyYXRvcltfaSsrXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgICAgICAgaWYgKF9pLmRvbmUpIGJyZWFrOwogICAgICAgICAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHNlZ21lbnQgPSBfcmVmOwoKICAgICAgICAgICAgaWYgKHRoaXMudGFibGUudmVyc2lvbiA9PT0gMiAmJiBzZWdtZW50LnZhbHVlID09PSBjbGFzc1ZhbHVlKSB7CiAgICAgICAgICAgICAgcmVzLnB1c2guYXBwbHkocmVzLCByYW5nZShzZWdtZW50LmZpcnN0R2x5cGgsIHNlZ21lbnQubGFzdEdseXBoICsgMSkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBzZWdtZW50LnZhbHVlcy5sZW5ndGg7IGluZGV4KyspIHsKICAgICAgICAgICAgICAgIGlmIChzZWdtZW50LnZhbHVlc1tpbmRleF0gPT09IGNsYXNzVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgcmVzLnB1c2goc2VnbWVudC5maXJzdEdseXBoICsgaW5kZXgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgIGNhc2UgNjoKICAgICAgICB7CiAgICAgICAgICAvLyBsb29rdXAgc2luZ2xlCiAgICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IyID0gdGhpcy50YWJsZS5zZWdtZW50cywgX2lzQXJyYXkyID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IyKSwgX2kyID0gMCwgX2l0ZXJhdG9yMiA9IF9pc0FycmF5MiA/IF9pdGVyYXRvcjIgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMik7OykgewogICAgICAgICAgICB2YXIgX3JlZjI7CgogICAgICAgICAgICBpZiAoX2lzQXJyYXkyKSB7CiAgICAgICAgICAgICAgaWYgKF9pMiA+PSBfaXRlcmF0b3IyLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICAgICAgX3JlZjIgPSBfaXRlcmF0b3IyW19pMisrXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBfaTIgPSBfaXRlcmF0b3IyLm5leHQoKTsKICAgICAgICAgICAgICBpZiAoX2kyLmRvbmUpIGJyZWFrOwogICAgICAgICAgICAgIF9yZWYyID0gX2kyLnZhbHVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgX3NlZ21lbnQgPSBfcmVmMjsKCiAgICAgICAgICAgIGlmIChfc2VnbWVudC52YWx1ZSA9PT0gY2xhc3NWYWx1ZSkgewogICAgICAgICAgICAgIHJlcy5wdXNoKF9zZWdtZW50LmdseXBoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgIGNhc2UgODoKICAgICAgICB7CiAgICAgICAgICAvLyBsb29rdXAgdHJpbW1lZAogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnRhYmxlLnZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAodGhpcy50YWJsZS52YWx1ZXNbaV0gPT09IGNsYXNzVmFsdWUpIHsKICAgICAgICAgICAgICByZXMucHVzaCh0aGlzLnRhYmxlLmZpcnN0R2x5cGggKyBpKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGxvb2t1cCB0YWJsZSBmb3JtYXQ6ICcgKyB0aGlzLnRhYmxlLnZlcnNpb24pOwogICAgfQoKICAgIHJldHVybiByZXM7CiAgfTsKCiAgcmV0dXJuIEFBVExvb2t1cFRhYmxlOwp9KCksIChfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yJDMoX2NsYXNzJDMucHJvdG90eXBlLCAnZ2x5cGhzRm9yVmFsdWUnLCBbY2FjaGVdLCBfT2JqZWN0JGdldE93blByb3BlcnR5RGVzY3JpcHRvcihfY2xhc3MkMy5wcm90b3R5cGUsICdnbHlwaHNGb3JWYWx1ZScpLCBfY2xhc3MkMy5wcm90b3R5cGUpKSwgX2NsYXNzJDMpOwoKdmFyIFNUQVJUX09GX1RFWFRfU1RBVEUgPSAwOwp2YXIgRU5EX09GX1RFWFRfQ0xBU1MgPSAwOwp2YXIgT1VUX09GX0JPVU5EU19DTEFTUyA9IDE7CnZhciBERUxFVEVEX0dMWVBIX0NMQVNTID0gMjsKdmFyIERPTlRfQURWQU5DRSA9IDB4NDAwMDsKCnZhciBBQVRTdGF0ZU1hY2hpbmUgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gQUFUU3RhdGVNYWNoaW5lKHN0YXRlVGFibGUpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBQVRTdGF0ZU1hY2hpbmUpOwoKICAgIHRoaXMuc3RhdGVUYWJsZSA9IHN0YXRlVGFibGU7CiAgICB0aGlzLmxvb2t1cFRhYmxlID0gbmV3IEFBVExvb2t1cFRhYmxlKHN0YXRlVGFibGUuY2xhc3NUYWJsZSk7CiAgfQoKICBBQVRTdGF0ZU1hY2hpbmUucHJvdG90eXBlLnByb2Nlc3MgPSBmdW5jdGlvbiBwcm9jZXNzKGdseXBocywgcmV2ZXJzZSwgcHJvY2Vzc0VudHJ5KSB7CiAgICB2YXIgY3VycmVudFN0YXRlID0gU1RBUlRfT0ZfVEVYVF9TVEFURTsgLy8gU1RBUlRfT0ZfTElORV9TVEFURSBpcyB1c2VkIGZvciBrYXNoaWRhIGdseXBoIGluc2VydGlvbnMgc29tZXRpbWVzIEkgdGhpbms/CiAgICB2YXIgaW5kZXggPSByZXZlcnNlID8gZ2x5cGhzLmxlbmd0aCAtIDEgOiAwOwogICAgdmFyIGRpciA9IHJldmVyc2UgPyAtMSA6IDE7CgogICAgd2hpbGUgKGRpciA9PT0gMSAmJiBpbmRleCA8PSBnbHlwaHMubGVuZ3RoIHx8IGRpciA9PT0gLTEgJiYgaW5kZXggPj0gLTEpIHsKICAgICAgdmFyIGdseXBoID0gbnVsbDsKICAgICAgdmFyIGNsYXNzQ29kZSA9IE9VVF9PRl9CT1VORFNfQ0xBU1M7CiAgICAgIHZhciBzaG91bGRBZHZhbmNlID0gdHJ1ZTsKCiAgICAgIGlmIChpbmRleCA9PT0gZ2x5cGhzLmxlbmd0aCB8fCBpbmRleCA9PT0gLTEpIHsKICAgICAgICBjbGFzc0NvZGUgPSBFTkRfT0ZfVEVYVF9DTEFTUzsKICAgICAgfSBlbHNlIHsKICAgICAgICBnbHlwaCA9IGdseXBoc1tpbmRleF07CiAgICAgICAgaWYgKGdseXBoLmlkID09PSAweGZmZmYpIHsKICAgICAgICAgIC8vIGRlbGV0ZWQgZ2x5cGgKICAgICAgICAgIGNsYXNzQ29kZSA9IERFTEVURURfR0xZUEhfQ0xBU1M7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGNsYXNzQ29kZSA9IHRoaXMubG9va3VwVGFibGUubG9va3VwKGdseXBoLmlkKTsKICAgICAgICAgIGlmIChjbGFzc0NvZGUgPT0gbnVsbCkgewogICAgICAgICAgICBjbGFzc0NvZGUgPSBPVVRfT0ZfQk9VTkRTX0NMQVNTOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgdmFyIHJvdyA9IHRoaXMuc3RhdGVUYWJsZS5zdGF0ZUFycmF5LmdldEl0ZW0oY3VycmVudFN0YXRlKTsKICAgICAgdmFyIGVudHJ5SW5kZXggPSByb3dbY2xhc3NDb2RlXTsKICAgICAgdmFyIGVudHJ5ID0gdGhpcy5zdGF0ZVRhYmxlLmVudHJ5VGFibGUuZ2V0SXRlbShlbnRyeUluZGV4KTsKCiAgICAgIGlmIChjbGFzc0NvZGUgIT09IEVORF9PRl9URVhUX0NMQVNTICYmIGNsYXNzQ29kZSAhPT0gREVMRVRFRF9HTFlQSF9DTEFTUykgewogICAgICAgIHByb2Nlc3NFbnRyeShnbHlwaCwgZW50cnksIGluZGV4KTsKICAgICAgICBzaG91bGRBZHZhbmNlID0gIShlbnRyeS5mbGFncyAmIERPTlRfQURWQU5DRSk7CiAgICAgIH0KCiAgICAgIGN1cnJlbnRTdGF0ZSA9IGVudHJ5Lm5ld1N0YXRlOwogICAgICBpZiAoc2hvdWxkQWR2YW5jZSkgewogICAgICAgIGluZGV4ICs9IGRpcjsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBnbHlwaHM7CiAgfTsKCiAgLyoqCiAgICogUGVyZm9ybXMgYSBkZXB0aC1maXJzdCB0cmF2ZXJzYWwgb2YgdGhlIGdseXBoIHN0cmluZ3MKICAgKiByZXByZXNlbnRlZCBieSB0aGUgc3RhdGUgbWFjaGluZS4KICAgKi8KCgogIEFBVFN0YXRlTWFjaGluZS5wcm90b3R5cGUudHJhdmVyc2UgPSBmdW5jdGlvbiB0cmF2ZXJzZShvcHRzKSB7CiAgICB2YXIgc3RhdGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7CiAgICB2YXIgdmlzaXRlZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogbmV3IF9TZXQoKTsKCiAgICBpZiAodmlzaXRlZC5oYXMoc3RhdGUpKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2aXNpdGVkLmFkZChzdGF0ZSk7CgogICAgdmFyIF9zdGF0ZVRhYmxlID0gdGhpcy5zdGF0ZVRhYmxlLAogICAgICAgIG5DbGFzc2VzID0gX3N0YXRlVGFibGUubkNsYXNzZXMsCiAgICAgICAgc3RhdGVBcnJheSA9IF9zdGF0ZVRhYmxlLnN0YXRlQXJyYXksCiAgICAgICAgZW50cnlUYWJsZSA9IF9zdGF0ZVRhYmxlLmVudHJ5VGFibGU7CgogICAgdmFyIHJvdyA9IHN0YXRlQXJyYXkuZ2V0SXRlbShzdGF0ZSk7CgogICAgLy8gU2tpcCBwcmVkZWZpbmVkIGNsYXNzZXMKICAgIGZvciAodmFyIGNsYXNzQ29kZSA9IDQ7IGNsYXNzQ29kZSA8IG5DbGFzc2VzOyBjbGFzc0NvZGUrKykgewogICAgICB2YXIgZW50cnlJbmRleCA9IHJvd1tjbGFzc0NvZGVdOwogICAgICB2YXIgZW50cnkgPSBlbnRyeVRhYmxlLmdldEl0ZW0oZW50cnlJbmRleCk7CgogICAgICAvLyBUcnkgYWxsIGdseXBocyBpbiB0aGUgY2xhc3MKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gdGhpcy5sb29rdXBUYWJsZS5nbHlwaHNGb3JWYWx1ZShjbGFzc0NvZGUpLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgICB2YXIgX3JlZjsKCiAgICAgICAgaWYgKF9pc0FycmF5KSB7CiAgICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmID0gX2kudmFsdWU7CiAgICAgICAgfQoKICAgICAgICB2YXIgZ2x5cGggPSBfcmVmOwoKICAgICAgICBpZiAob3B0cy5lbnRlcikgewogICAgICAgICAgb3B0cy5lbnRlcihnbHlwaCwgZW50cnkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGVudHJ5Lm5ld1N0YXRlICE9PSAwKSB7CiAgICAgICAgICB0aGlzLnRyYXZlcnNlKG9wdHMsIGVudHJ5Lm5ld1N0YXRlLCB2aXNpdGVkKTsKICAgICAgICB9CgogICAgICAgIGlmIChvcHRzLmV4aXQpIHsKICAgICAgICAgIG9wdHMuZXhpdChnbHlwaCwgZW50cnkpOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07CgogIHJldHVybiBBQVRTdGF0ZU1hY2hpbmU7Cn0oKTsKCnZhciBfY2xhc3MkMjsKZnVuY3Rpb24gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciQyKHRhcmdldCwgcHJvcGVydHksIGRlY29yYXRvcnMsIGRlc2NyaXB0b3IsIGNvbnRleHQpIHsKICB2YXIgZGVzYyA9IHt9OwogIE9iamVjdFsna2UnICsgJ3lzJ10oZGVzY3JpcHRvcikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7CiAgICBkZXNjW2tleV0gPSBkZXNjcmlwdG9yW2tleV07CiAgfSk7CiAgZGVzYy5lbnVtZXJhYmxlID0gISFkZXNjLmVudW1lcmFibGU7CiAgZGVzYy5jb25maWd1cmFibGUgPSAhIWRlc2MuY29uZmlndXJhYmxlOwoKICBpZiAoJ3ZhbHVlJyBpbiBkZXNjIHx8IGRlc2MuaW5pdGlhbGl6ZXIpIHsKICAgIGRlc2Mud3JpdGFibGUgPSB0cnVlOwogIH0KCiAgZGVzYyA9IGRlY29yYXRvcnMuc2xpY2UoKS5yZXZlcnNlKCkucmVkdWNlKGZ1bmN0aW9uIChkZXNjLCBkZWNvcmF0b3IpIHsKICAgIHJldHVybiBkZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eSwgZGVzYykgfHwgZGVzYzsKICB9LCBkZXNjKTsKCiAgaWYgKGNvbnRleHQgJiYgZGVzYy5pbml0aWFsaXplciAhPT0gdm9pZCAwKSB7CiAgICBkZXNjLnZhbHVlID0gZGVzYy5pbml0aWFsaXplciA/IGRlc2MuaW5pdGlhbGl6ZXIuY2FsbChjb250ZXh0KSA6IHZvaWQgMDsKICAgIGRlc2MuaW5pdGlhbGl6ZXIgPSB1bmRlZmluZWQ7CiAgfQoKICBpZiAoZGVzYy5pbml0aWFsaXplciA9PT0gdm9pZCAwKSB7CiAgICBPYmplY3RbJ2RlZmluZScgKyAnUHJvcGVydHknXSh0YXJnZXQsIHByb3BlcnR5LCBkZXNjKTsKICAgIGRlc2MgPSBudWxsOwogIH0KCiAgcmV0dXJuIGRlc2M7Cn0KCi8vIGluZGljIHJlcGxhY2VtZW50IGZsYWdzCnZhciBNQVJLX0ZJUlNUID0gMHg4MDAwOwp2YXIgTUFSS19MQVNUID0gMHgyMDAwOwp2YXIgVkVSQiA9IDB4MDAwRjsKCi8vIGNvbnRleHR1YWwgc3Vic3RpdHV0aW9uIGFuZCBnbHlwaCBpbnNlcnRpb24gZmxhZwp2YXIgU0VUX01BUksgPSAweDgwMDA7CgovLyBsaWdhdHVyZSBlbnRyeSBmbGFncwp2YXIgU0VUX0NPTVBPTkVOVCA9IDB4ODAwMDsKdmFyIFBFUkZPUk1fQUNUSU9OID0gMHgyMDAwOwoKLy8gbGlnYXR1cmUgYWN0aW9uIG1hc2tzCnZhciBMQVNUX01BU0sgPSAweDgwMDAwMDAwOwp2YXIgU1RPUkVfTUFTSyA9IDB4NDAwMDAwMDA7CnZhciBPRkZTRVRfTUFTSyA9IDB4M0ZGRkZGRkY7Cgp2YXIgUkVWRVJTRV9ESVJFQ1RJT04gPSAweDQwMDAwMDsKdmFyIENVUlJFTlRfSU5TRVJUX0JFRk9SRSA9IDB4MDgwMDsKdmFyIE1BUktFRF9JTlNFUlRfQkVGT1JFID0gMHgwNDAwOwp2YXIgQ1VSUkVOVF9JTlNFUlRfQ09VTlQgPSAweDAzRTA7CnZhciBNQVJLRURfSU5TRVJUX0NPVU5UID0gMHgwMDFGOwoKdmFyIEFBVE1vcnhQcm9jZXNzb3IgPSAoX2NsYXNzJDIgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gQUFUTW9yeFByb2Nlc3Nvcihmb250KSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQUFUTW9yeFByb2Nlc3Nvcik7CgogICAgdGhpcy5wcm9jZXNzSW5kaWNSZWFycmFnZW1lbnQgPSB0aGlzLnByb2Nlc3NJbmRpY1JlYXJyYWdlbWVudC5iaW5kKHRoaXMpOwogICAgdGhpcy5wcm9jZXNzQ29udGV4dHVhbFN1YnN0aXR1dGlvbiA9IHRoaXMucHJvY2Vzc0NvbnRleHR1YWxTdWJzdGl0dXRpb24uYmluZCh0aGlzKTsKICAgIHRoaXMucHJvY2Vzc0xpZ2F0dXJlID0gdGhpcy5wcm9jZXNzTGlnYXR1cmUuYmluZCh0aGlzKTsKICAgIHRoaXMucHJvY2Vzc05vbmNvbnRleHR1YWxTdWJzdGl0dXRpb25zID0gdGhpcy5wcm9jZXNzTm9uY29udGV4dHVhbFN1YnN0aXR1dGlvbnMuYmluZCh0aGlzKTsKICAgIHRoaXMucHJvY2Vzc0dseXBoSW5zZXJ0aW9uID0gdGhpcy5wcm9jZXNzR2x5cGhJbnNlcnRpb24uYmluZCh0aGlzKTsKICAgIHRoaXMuZm9udCA9IGZvbnQ7CiAgICB0aGlzLm1vcnggPSBmb250Lm1vcng7CiAgICB0aGlzLmlucHV0Q2FjaGUgPSBudWxsOwogIH0KCiAgLy8gUHJvY2Vzc2VzIGFuIGFycmF5IG9mIGdseXBocyBhbmQgYXBwbGllcyB0aGUgc3BlY2lmaWVkIGZlYXR1cmVzCiAgLy8gRmVhdHVyZXMgc2hvdWxkIGJlIGluIHRoZSBmb3JtIG9mIHtmZWF0dXJlVHlwZTp7ZmVhdHVyZVNldHRpbmc6dHJ1ZX19CgoKICBBQVRNb3J4UHJvY2Vzc29yLnByb3RvdHlwZS5wcm9jZXNzID0gZnVuY3Rpb24gcHJvY2VzcyhnbHlwaHMpIHsKICAgIHZhciBmZWF0dXJlcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307CgogICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gdGhpcy5tb3J4LmNoYWlucywgX2lzQXJyYXkgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvciksIF9pID0gMCwgX2l0ZXJhdG9yID0gX2lzQXJyYXkgPyBfaXRlcmF0b3IgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yKTs7KSB7CiAgICAgIHZhciBfcmVmOwoKICAgICAgaWYgKF9pc0FycmF5KSB7CiAgICAgICAgaWYgKF9pID49IF9pdGVyYXRvci5sZW5ndGgpIGJyZWFrOwogICAgICAgIF9yZWYgPSBfaXRlcmF0b3JbX2krK107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2kgPSBfaXRlcmF0b3IubmV4dCgpOwogICAgICAgIGlmIChfaS5kb25lKSBicmVhazsKICAgICAgICBfcmVmID0gX2kudmFsdWU7CiAgICAgIH0KCiAgICAgIHZhciBjaGFpbiA9IF9yZWY7CgogICAgICB2YXIgZmxhZ3MgPSBjaGFpbi5kZWZhdWx0RmxhZ3M7CgogICAgICAvLyBlbmFibGUvZGlzYWJsZSB0aGUgcmVxdWVzdGVkIGZlYXR1cmVzCiAgICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSBjaGFpbi5mZWF0dXJlcywgX2lzQXJyYXkyID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IyKSwgX2kyID0gMCwgX2l0ZXJhdG9yMiA9IF9pc0FycmF5MiA/IF9pdGVyYXRvcjIgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMik7OykgewogICAgICAgIHZhciBfcmVmMjsKCiAgICAgICAgaWYgKF9pc0FycmF5MikgewogICAgICAgICAgaWYgKF9pMiA+PSBfaXRlcmF0b3IyLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmMiA9IF9pdGVyYXRvcjJbX2kyKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaTIgPSBfaXRlcmF0b3IyLm5leHQoKTsKICAgICAgICAgIGlmIChfaTIuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmMiA9IF9pMi52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBmZWF0dXJlID0gX3JlZjI7CgogICAgICAgIHZhciBmID0gdm9pZCAwOwogICAgICAgIGlmICgoZiA9IGZlYXR1cmVzW2ZlYXR1cmUuZmVhdHVyZVR5cGVdKSAmJiBmW2ZlYXR1cmUuZmVhdHVyZVNldHRpbmddKSB7CiAgICAgICAgICBmbGFncyAmPSBmZWF0dXJlLmRpc2FibGVGbGFnczsKICAgICAgICAgIGZsYWdzIHw9IGZlYXR1cmUuZW5hYmxlRmxhZ3M7CiAgICAgICAgfQogICAgICB9CgogICAgICBmb3IgKHZhciBfaXRlcmF0b3IzID0gY2hhaW4uc3VidGFibGVzLCBfaXNBcnJheTMgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjMpLCBfaTMgPSAwLCBfaXRlcmF0b3IzID0gX2lzQXJyYXkzID8gX2l0ZXJhdG9yMyA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IzKTs7KSB7CiAgICAgICAgdmFyIF9yZWYzOwoKICAgICAgICBpZiAoX2lzQXJyYXkzKSB7CiAgICAgICAgICBpZiAoX2kzID49IF9pdGVyYXRvcjMubGVuZ3RoKSBicmVhazsKICAgICAgICAgIF9yZWYzID0gX2l0ZXJhdG9yM1tfaTMrK107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF9pMyA9IF9pdGVyYXRvcjMubmV4dCgpOwogICAgICAgICAgaWYgKF9pMy5kb25lKSBicmVhazsKICAgICAgICAgIF9yZWYzID0gX2kzLnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIHN1YnRhYmxlID0gX3JlZjM7CgogICAgICAgIGlmIChzdWJ0YWJsZS5zdWJGZWF0dXJlRmxhZ3MgJiBmbGFncykgewogICAgICAgICAgdGhpcy5wcm9jZXNzU3VidGFibGUoc3VidGFibGUsIGdseXBocyk7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgLy8gcmVtb3ZlIGRlbGV0ZWQgZ2x5cGhzCiAgICB2YXIgaW5kZXggPSBnbHlwaHMubGVuZ3RoIC0gMTsKICAgIHdoaWxlIChpbmRleCA+PSAwKSB7CiAgICAgIGlmIChnbHlwaHNbaW5kZXhdLmlkID09PSAweGZmZmYpIHsKICAgICAgICBnbHlwaHMuc3BsaWNlKGluZGV4LCAxKTsKICAgICAgfQoKICAgICAgaW5kZXgtLTsKICAgIH0KCiAgICByZXR1cm4gZ2x5cGhzOwogIH07CgogIEFBVE1vcnhQcm9jZXNzb3IucHJvdG90eXBlLnByb2Nlc3NTdWJ0YWJsZSA9IGZ1bmN0aW9uIHByb2Nlc3NTdWJ0YWJsZShzdWJ0YWJsZSwgZ2x5cGhzKSB7CiAgICB0aGlzLnN1YnRhYmxlID0gc3VidGFibGU7CiAgICB0aGlzLmdseXBocyA9IGdseXBoczsKICAgIGlmICh0aGlzLnN1YnRhYmxlLnR5cGUgPT09IDQpIHsKICAgICAgdGhpcy5wcm9jZXNzTm9uY29udGV4dHVhbFN1YnN0aXR1dGlvbnModGhpcy5zdWJ0YWJsZSwgdGhpcy5nbHlwaHMpOwogICAgICByZXR1cm47CiAgICB9CgogICAgdGhpcy5saWdhdHVyZVN0YWNrID0gW107CiAgICB0aGlzLm1hcmtlZEdseXBoID0gbnVsbDsKICAgIHRoaXMuZmlyc3RHbHlwaCA9IG51bGw7CiAgICB0aGlzLmxhc3RHbHlwaCA9IG51bGw7CiAgICB0aGlzLm1hcmtlZEluZGV4ID0gbnVsbDsKCiAgICB2YXIgc3RhdGVNYWNoaW5lID0gdGhpcy5nZXRTdGF0ZU1hY2hpbmUoc3VidGFibGUpOwogICAgdmFyIHByb2Nlc3MgPSB0aGlzLmdldFByb2Nlc3NvcigpOwoKICAgIHZhciByZXZlcnNlID0gISEodGhpcy5zdWJ0YWJsZS5jb3ZlcmFnZSAmIFJFVkVSU0VfRElSRUNUSU9OKTsKICAgIHJldHVybiBzdGF0ZU1hY2hpbmUucHJvY2Vzcyh0aGlzLmdseXBocywgcmV2ZXJzZSwgcHJvY2Vzcyk7CiAgfTsKCiAgQUFUTW9yeFByb2Nlc3Nvci5wcm90b3R5cGUuZ2V0U3RhdGVNYWNoaW5lID0gZnVuY3Rpb24gZ2V0U3RhdGVNYWNoaW5lKHN1YnRhYmxlKSB7CiAgICByZXR1cm4gbmV3IEFBVFN0YXRlTWFjaGluZShzdWJ0YWJsZS50YWJsZS5zdGF0ZVRhYmxlKTsKICB9OwoKICBBQVRNb3J4UHJvY2Vzc29yLnByb3RvdHlwZS5nZXRQcm9jZXNzb3IgPSBmdW5jdGlvbiBnZXRQcm9jZXNzb3IoKSB7CiAgICBzd2l0Y2ggKHRoaXMuc3VidGFibGUudHlwZSkgewogICAgICBjYXNlIDA6CiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0luZGljUmVhcnJhZ2VtZW50OwogICAgICBjYXNlIDE6CiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0NvbnRleHR1YWxTdWJzdGl0dXRpb247CiAgICAgIGNhc2UgMjoKICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzTGlnYXR1cmU7CiAgICAgIGNhc2UgNDoKICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzTm9uY29udGV4dHVhbFN1YnN0aXR1dGlvbnM7CiAgICAgIGNhc2UgNToKICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzR2x5cGhJbnNlcnRpb247CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1vcnggc3VidGFibGUgdHlwZTogJyArIHRoaXMuc3VidGFibGUudHlwZSk7CiAgICB9CiAgfTsKCiAgQUFUTW9yeFByb2Nlc3Nvci5wcm90b3R5cGUucHJvY2Vzc0luZGljUmVhcnJhZ2VtZW50ID0gZnVuY3Rpb24gcHJvY2Vzc0luZGljUmVhcnJhZ2VtZW50KGdseXBoLCBlbnRyeSwgaW5kZXgpIHsKICAgIGlmIChlbnRyeS5mbGFncyAmIE1BUktfRklSU1QpIHsKICAgICAgdGhpcy5maXJzdEdseXBoID0gaW5kZXg7CiAgICB9CgogICAgaWYgKGVudHJ5LmZsYWdzICYgTUFSS19MQVNUKSB7CiAgICAgIHRoaXMubGFzdEdseXBoID0gaW5kZXg7CiAgICB9CgogICAgcmVvcmRlckdseXBocyh0aGlzLmdseXBocywgZW50cnkuZmxhZ3MgJiBWRVJCLCB0aGlzLmZpcnN0R2x5cGgsIHRoaXMubGFzdEdseXBoKTsKICB9OwoKICBBQVRNb3J4UHJvY2Vzc29yLnByb3RvdHlwZS5wcm9jZXNzQ29udGV4dHVhbFN1YnN0aXR1dGlvbiA9IGZ1bmN0aW9uIHByb2Nlc3NDb250ZXh0dWFsU3Vic3RpdHV0aW9uKGdseXBoLCBlbnRyeSwgaW5kZXgpIHsKICAgIHZhciBzdWJzaXR1dGlvbnMgPSB0aGlzLnN1YnRhYmxlLnRhYmxlLnN1YnN0aXR1dGlvblRhYmxlLml0ZW1zOwogICAgaWYgKGVudHJ5Lm1hcmtJbmRleCAhPT0gMHhmZmZmKSB7CiAgICAgIHZhciBsb29rdXAgPSBzdWJzaXR1dGlvbnMuZ2V0SXRlbShlbnRyeS5tYXJrSW5kZXgpOwogICAgICB2YXIgbG9va3VwVGFibGUgPSBuZXcgQUFUTG9va3VwVGFibGUobG9va3VwKTsKICAgICAgZ2x5cGggPSB0aGlzLmdseXBoc1t0aGlzLm1hcmtlZEdseXBoXTsKICAgICAgdmFyIGdpZCA9IGxvb2t1cFRhYmxlLmxvb2t1cChnbHlwaC5pZCk7CiAgICAgIGlmIChnaWQpIHsKICAgICAgICB0aGlzLmdseXBoc1t0aGlzLm1hcmtlZEdseXBoXSA9IHRoaXMuZm9udC5nZXRHbHlwaChnaWQsIGdseXBoLmNvZGVQb2ludHMpOwogICAgICB9CiAgICB9CgogICAgaWYgKGVudHJ5LmN1cnJlbnRJbmRleCAhPT0gMHhmZmZmKSB7CiAgICAgIHZhciBfbG9va3VwID0gc3Vic2l0dXRpb25zLmdldEl0ZW0oZW50cnkuY3VycmVudEluZGV4KTsKICAgICAgdmFyIF9sb29rdXBUYWJsZSA9IG5ldyBBQVRMb29rdXBUYWJsZShfbG9va3VwKTsKICAgICAgZ2x5cGggPSB0aGlzLmdseXBoc1tpbmRleF07CiAgICAgIHZhciBnaWQgPSBfbG9va3VwVGFibGUubG9va3VwKGdseXBoLmlkKTsKICAgICAgaWYgKGdpZCkgewogICAgICAgIHRoaXMuZ2x5cGhzW2luZGV4XSA9IHRoaXMuZm9udC5nZXRHbHlwaChnaWQsIGdseXBoLmNvZGVQb2ludHMpOwogICAgICB9CiAgICB9CgogICAgaWYgKGVudHJ5LmZsYWdzICYgU0VUX01BUkspIHsKICAgICAgdGhpcy5tYXJrZWRHbHlwaCA9IGluZGV4OwogICAgfQogIH07CgogIEFBVE1vcnhQcm9jZXNzb3IucHJvdG90eXBlLnByb2Nlc3NMaWdhdHVyZSA9IGZ1bmN0aW9uIHByb2Nlc3NMaWdhdHVyZShnbHlwaCwgZW50cnksIGluZGV4KSB7CiAgICBpZiAoZW50cnkuZmxhZ3MgJiBTRVRfQ09NUE9ORU5UKSB7CiAgICAgIHRoaXMubGlnYXR1cmVTdGFjay5wdXNoKGluZGV4KTsKICAgIH0KCiAgICBpZiAoZW50cnkuZmxhZ3MgJiBQRVJGT1JNX0FDVElPTikgewogICAgICB2YXIgX2xpZ2F0dXJlU3RhY2s7CgogICAgICB2YXIgYWN0aW9ucyA9IHRoaXMuc3VidGFibGUudGFibGUubGlnYXR1cmVBY3Rpb25zOwogICAgICB2YXIgY29tcG9uZW50cyA9IHRoaXMuc3VidGFibGUudGFibGUuY29tcG9uZW50czsKICAgICAgdmFyIGxpZ2F0dXJlTGlzdCA9IHRoaXMuc3VidGFibGUudGFibGUubGlnYXR1cmVMaXN0OwoKICAgICAgdmFyIGFjdGlvbkluZGV4ID0gZW50cnkuYWN0aW9uOwogICAgICB2YXIgbGFzdCA9IGZhbHNlOwogICAgICB2YXIgbGlnYXR1cmVJbmRleCA9IDA7CiAgICAgIHZhciBjb2RlUG9pbnRzID0gW107CiAgICAgIHZhciBsaWdhdHVyZUdseXBocyA9IFtdOwoKICAgICAgd2hpbGUgKCFsYXN0KSB7CiAgICAgICAgdmFyIF9jb2RlUG9pbnRzOwoKICAgICAgICB2YXIgY29tcG9uZW50R2x5cGggPSB0aGlzLmxpZ2F0dXJlU3RhY2sucG9wKCk7CiAgICAgICAgKF9jb2RlUG9pbnRzID0gY29kZVBvaW50cykudW5zaGlmdC5hcHBseShfY29kZVBvaW50cywgdGhpcy5nbHlwaHNbY29tcG9uZW50R2x5cGhdLmNvZGVQb2ludHMpOwoKICAgICAgICB2YXIgYWN0aW9uID0gYWN0aW9ucy5nZXRJdGVtKGFjdGlvbkluZGV4KyspOwogICAgICAgIGxhc3QgPSAhIShhY3Rpb24gJiBMQVNUX01BU0spOwogICAgICAgIHZhciBzdG9yZSA9ICEhKGFjdGlvbiAmIFNUT1JFX01BU0spOwogICAgICAgIHZhciBvZmZzZXQgPSAoYWN0aW9uICYgT0ZGU0VUX01BU0spIDw8IDIgPj4gMjsgLy8gc2lnbiBleHRlbmQgMzAgdG8gMzIgYml0cwogICAgICAgIG9mZnNldCArPSB0aGlzLmdseXBoc1tjb21wb25lbnRHbHlwaF0uaWQ7CgogICAgICAgIHZhciBjb21wb25lbnQgPSBjb21wb25lbnRzLmdldEl0ZW0ob2Zmc2V0KTsKICAgICAgICBsaWdhdHVyZUluZGV4ICs9IGNvbXBvbmVudDsKCiAgICAgICAgaWYgKGxhc3QgfHwgc3RvcmUpIHsKICAgICAgICAgIHZhciBsaWdhdHVyZUVudHJ5ID0gbGlnYXR1cmVMaXN0LmdldEl0ZW0obGlnYXR1cmVJbmRleCk7CiAgICAgICAgICB0aGlzLmdseXBoc1tjb21wb25lbnRHbHlwaF0gPSB0aGlzLmZvbnQuZ2V0R2x5cGgobGlnYXR1cmVFbnRyeSwgY29kZVBvaW50cyk7CiAgICAgICAgICBsaWdhdHVyZUdseXBocy5wdXNoKGNvbXBvbmVudEdseXBoKTsKICAgICAgICAgIGxpZ2F0dXJlSW5kZXggPSAwOwogICAgICAgICAgY29kZVBvaW50cyA9IFtdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLmdseXBoc1tjb21wb25lbnRHbHlwaF0gPSB0aGlzLmZvbnQuZ2V0R2x5cGgoMHhmZmZmKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIFB1dCBsaWdhdHVyZSBnbHlwaCBpbmRleGVzIGJhY2sgb24gdGhlIHN0YWNrCiAgICAgIChfbGlnYXR1cmVTdGFjayA9IHRoaXMubGlnYXR1cmVTdGFjaykucHVzaC5hcHBseShfbGlnYXR1cmVTdGFjaywgbGlnYXR1cmVHbHlwaHMpOwogICAgfQogIH07CgogIEFBVE1vcnhQcm9jZXNzb3IucHJvdG90eXBlLnByb2Nlc3NOb25jb250ZXh0dWFsU3Vic3RpdHV0aW9ucyA9IGZ1bmN0aW9uIHByb2Nlc3NOb25jb250ZXh0dWFsU3Vic3RpdHV0aW9ucyhzdWJ0YWJsZSwgZ2x5cGhzLCBpbmRleCkgewogICAgdmFyIGxvb2t1cFRhYmxlID0gbmV3IEFBVExvb2t1cFRhYmxlKHN1YnRhYmxlLnRhYmxlLmxvb2t1cFRhYmxlKTsKCiAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBnbHlwaHMubGVuZ3RoOyBpbmRleCsrKSB7CiAgICAgIHZhciBnbHlwaCA9IGdseXBoc1tpbmRleF07CiAgICAgIGlmIChnbHlwaC5pZCAhPT0gMHhmZmZmKSB7CiAgICAgICAgdmFyIGdpZCA9IGxvb2t1cFRhYmxlLmxvb2t1cChnbHlwaC5pZCk7CiAgICAgICAgaWYgKGdpZCkgewogICAgICAgICAgLy8gMCBtZWFucyBkbyBub3RoaW5nCiAgICAgICAgICBnbHlwaHNbaW5kZXhdID0gdGhpcy5mb250LmdldEdseXBoKGdpZCwgZ2x5cGguY29kZVBvaW50cyk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfTsKCiAgQUFUTW9yeFByb2Nlc3Nvci5wcm90b3R5cGUuX2luc2VydEdseXBocyA9IGZ1bmN0aW9uIF9pbnNlcnRHbHlwaHMoZ2x5cGhJbmRleCwgaW5zZXJ0aW9uQWN0aW9uSW5kZXgsIGNvdW50LCBpc0JlZm9yZSkgewogICAgdmFyIF9nbHlwaHM7CgogICAgdmFyIGluc2VydGlvbnMgPSBbXTsKICAgIHdoaWxlIChjb3VudC0tKSB7CiAgICAgIHZhciBnaWQgPSB0aGlzLnN1YnRhYmxlLnRhYmxlLmluc2VydGlvbkFjdGlvbnMuZ2V0SXRlbShpbnNlcnRpb25BY3Rpb25JbmRleCsrKTsKICAgICAgaW5zZXJ0aW9ucy5wdXNoKHRoaXMuZm9udC5nZXRHbHlwaChnaWQpKTsKICAgIH0KCiAgICBpZiAoIWlzQmVmb3JlKSB7CiAgICAgIGdseXBoSW5kZXgrKzsKICAgIH0KCiAgICAoX2dseXBocyA9IHRoaXMuZ2x5cGhzKS5zcGxpY2UuYXBwbHkoX2dseXBocywgW2dseXBoSW5kZXgsIDBdLmNvbmNhdChpbnNlcnRpb25zKSk7CiAgfTsKCiAgQUFUTW9yeFByb2Nlc3Nvci5wcm90b3R5cGUucHJvY2Vzc0dseXBoSW5zZXJ0aW9uID0gZnVuY3Rpb24gcHJvY2Vzc0dseXBoSW5zZXJ0aW9uKGdseXBoLCBlbnRyeSwgaW5kZXgpIHsKICAgIGlmIChlbnRyeS5mbGFncyAmIFNFVF9NQVJLKSB7CiAgICAgIHRoaXMubWFya2VkSW5kZXggPSBpbmRleDsKICAgIH0KCiAgICBpZiAoZW50cnkubWFya2VkSW5zZXJ0SW5kZXggIT09IDB4ZmZmZikgewogICAgICB2YXIgY291bnQgPSAoZW50cnkuZmxhZ3MgJiBNQVJLRURfSU5TRVJUX0NPVU5UKSA+Pj4gNTsKICAgICAgdmFyIGlzQmVmb3JlID0gISEoZW50cnkuZmxhZ3MgJiBNQVJLRURfSU5TRVJUX0JFRk9SRSk7CiAgICAgIHRoaXMuX2luc2VydEdseXBocyh0aGlzLm1hcmtlZEluZGV4LCBlbnRyeS5tYXJrZWRJbnNlcnRJbmRleCwgY291bnQsIGlzQmVmb3JlKTsKICAgIH0KCiAgICBpZiAoZW50cnkuY3VycmVudEluc2VydEluZGV4ICE9PSAweGZmZmYpIHsKICAgICAgdmFyIF9jb3VudCA9IChlbnRyeS5mbGFncyAmIENVUlJFTlRfSU5TRVJUX0NPVU5UKSA+Pj4gNTsKICAgICAgdmFyIF9pc0JlZm9yZSA9ICEhKGVudHJ5LmZsYWdzICYgQ1VSUkVOVF9JTlNFUlRfQkVGT1JFKTsKICAgICAgdGhpcy5faW5zZXJ0R2x5cGhzKGluZGV4LCBlbnRyeS5jdXJyZW50SW5zZXJ0SW5kZXgsIF9jb3VudCwgX2lzQmVmb3JlKTsKICAgIH0KICB9OwoKICBBQVRNb3J4UHJvY2Vzc29yLnByb3RvdHlwZS5nZXRTdXBwb3J0ZWRGZWF0dXJlcyA9IGZ1bmN0aW9uIGdldFN1cHBvcnRlZEZlYXR1cmVzKCkgewogICAgdmFyIGZlYXR1cmVzID0gW107CiAgICBmb3IgKHZhciBfaXRlcmF0b3I0ID0gdGhpcy5tb3J4LmNoYWlucywgX2lzQXJyYXk0ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3I0KSwgX2k0ID0gMCwgX2l0ZXJhdG9yNCA9IF9pc0FycmF5NCA/IF9pdGVyYXRvcjQgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yNCk7OykgewogICAgICB2YXIgX3JlZjQ7CgogICAgICBpZiAoX2lzQXJyYXk0KSB7CiAgICAgICAgaWYgKF9pNCA+PSBfaXRlcmF0b3I0Lmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZjQgPSBfaXRlcmF0b3I0W19pNCsrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaTQgPSBfaXRlcmF0b3I0Lm5leHQoKTsKICAgICAgICBpZiAoX2k0LmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWY0ID0gX2k0LnZhbHVlOwogICAgICB9CgogICAgICB2YXIgY2hhaW4gPSBfcmVmNDsKCiAgICAgIGZvciAodmFyIF9pdGVyYXRvcjUgPSBjaGFpbi5mZWF0dXJlcywgX2lzQXJyYXk1ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3I1KSwgX2k1ID0gMCwgX2l0ZXJhdG9yNSA9IF9pc0FycmF5NSA/IF9pdGVyYXRvcjUgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yNSk7OykgewogICAgICAgIHZhciBfcmVmNTsKCiAgICAgICAgaWYgKF9pc0FycmF5NSkgewogICAgICAgICAgaWYgKF9pNSA+PSBfaXRlcmF0b3I1Lmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmNSA9IF9pdGVyYXRvcjVbX2k1KytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaTUgPSBfaXRlcmF0b3I1Lm5leHQoKTsKICAgICAgICAgIGlmIChfaTUuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmNSA9IF9pNS52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBmZWF0dXJlID0gX3JlZjU7CgogICAgICAgIGZlYXR1cmVzLnB1c2goW2ZlYXR1cmUuZmVhdHVyZVR5cGUsIGZlYXR1cmUuZmVhdHVyZVNldHRpbmddKTsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBmZWF0dXJlczsKICB9OwoKICBBQVRNb3J4UHJvY2Vzc29yLnByb3RvdHlwZS5nZW5lcmF0ZUlucHV0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlSW5wdXRzKGdpZCkgewogICAgaWYgKCF0aGlzLmlucHV0Q2FjaGUpIHsKICAgICAgdGhpcy5nZW5lcmF0ZUlucHV0Q2FjaGUoKTsKICAgIH0KCiAgICByZXR1cm4gdGhpcy5pbnB1dENhY2hlW2dpZF0gfHwgW107CiAgfTsKCiAgQUFUTW9yeFByb2Nlc3Nvci5wcm90b3R5cGUuZ2VuZXJhdGVJbnB1dENhY2hlID0gZnVuY3Rpb24gZ2VuZXJhdGVJbnB1dENhY2hlKCkgewogICAgdGhpcy5pbnB1dENhY2hlID0ge307CgogICAgZm9yICh2YXIgX2l0ZXJhdG9yNiA9IHRoaXMubW9yeC5jaGFpbnMsIF9pc0FycmF5NiA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yNiksIF9pNiA9IDAsIF9pdGVyYXRvcjYgPSBfaXNBcnJheTYgPyBfaXRlcmF0b3I2IDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjYpOzspIHsKICAgICAgdmFyIF9yZWY2OwoKICAgICAgaWYgKF9pc0FycmF5NikgewogICAgICAgIGlmIChfaTYgPj0gX2l0ZXJhdG9yNi5sZW5ndGgpIGJyZWFrOwogICAgICAgIF9yZWY2ID0gX2l0ZXJhdG9yNltfaTYrK107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2k2ID0gX2l0ZXJhdG9yNi5uZXh0KCk7CiAgICAgICAgaWYgKF9pNi5kb25lKSBicmVhazsKICAgICAgICBfcmVmNiA9IF9pNi52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIGNoYWluID0gX3JlZjY7CgogICAgICB2YXIgZmxhZ3MgPSBjaGFpbi5kZWZhdWx0RmxhZ3M7CgogICAgICBmb3IgKHZhciBfaXRlcmF0b3I3ID0gY2hhaW4uc3VidGFibGVzLCBfaXNBcnJheTcgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjcpLCBfaTcgPSAwLCBfaXRlcmF0b3I3ID0gX2lzQXJyYXk3ID8gX2l0ZXJhdG9yNyA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3I3KTs7KSB7CiAgICAgICAgdmFyIF9yZWY3OwoKICAgICAgICBpZiAoX2lzQXJyYXk3KSB7CiAgICAgICAgICBpZiAoX2k3ID49IF9pdGVyYXRvcjcubGVuZ3RoKSBicmVhazsKICAgICAgICAgIF9yZWY3ID0gX2l0ZXJhdG9yN1tfaTcrK107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF9pNyA9IF9pdGVyYXRvcjcubmV4dCgpOwogICAgICAgICAgaWYgKF9pNy5kb25lKSBicmVhazsKICAgICAgICAgIF9yZWY3ID0gX2k3LnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIHN1YnRhYmxlID0gX3JlZjc7CgogICAgICAgIGlmIChzdWJ0YWJsZS5zdWJGZWF0dXJlRmxhZ3MgJiBmbGFncykgewogICAgICAgICAgdGhpcy5nZW5lcmF0ZUlucHV0c0ZvclN1YnRhYmxlKHN1YnRhYmxlKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9OwoKICBBQVRNb3J4UHJvY2Vzc29yLnByb3RvdHlwZS5nZW5lcmF0ZUlucHV0c0ZvclN1YnRhYmxlID0gZnVuY3Rpb24gZ2VuZXJhdGVJbnB1dHNGb3JTdWJ0YWJsZShzdWJ0YWJsZSkgewogICAgdmFyIF90aGlzID0gdGhpczsKCiAgICAvLyBDdXJyZW50bHksIG9ubHkgc3VwcG9ydGluZyBsaWdhdHVyZSBzdWJ0YWJsZXMuCiAgICBpZiAoc3VidGFibGUudHlwZSAhPT0gMikgewogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIHJldmVyc2UgPSAhIShzdWJ0YWJsZS5jb3ZlcmFnZSAmIFJFVkVSU0VfRElSRUNUSU9OKTsKICAgIGlmIChyZXZlcnNlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignUmV2ZXJzZSBzdWJ0YWJsZSwgbm90IHN1cHBvcnRlZC4nKTsKICAgIH0KCiAgICB0aGlzLnN1YnRhYmxlID0gc3VidGFibGU7CiAgICB0aGlzLmxpZ2F0dXJlU3RhY2sgPSBbXTsKCiAgICB2YXIgc3RhdGVNYWNoaW5lID0gdGhpcy5nZXRTdGF0ZU1hY2hpbmUoc3VidGFibGUpOwogICAgdmFyIHByb2Nlc3MgPSB0aGlzLmdldFByb2Nlc3NvcigpOwoKICAgIHZhciBpbnB1dCA9IFtdOwogICAgdmFyIHN0YWNrID0gW107CiAgICB0aGlzLmdseXBocyA9IFtdOwoKICAgIHN0YXRlTWFjaGluZS50cmF2ZXJzZSh7CiAgICAgIGVudGVyOiBmdW5jdGlvbiBlbnRlcihnbHlwaCwgZW50cnkpIHsKICAgICAgICB2YXIgZ2x5cGhzID0gX3RoaXMuZ2x5cGhzOwogICAgICAgIHN0YWNrLnB1c2goewogICAgICAgICAgZ2x5cGhzOiBnbHlwaHMuc2xpY2UoKSwKICAgICAgICAgIGxpZ2F0dXJlU3RhY2s6IF90aGlzLmxpZ2F0dXJlU3RhY2suc2xpY2UoKQogICAgICAgIH0pOwoKICAgICAgICAvLyBBZGQgZ2x5cGggdG8gaW5wdXQgYW5kIGdseXBocyB0byBwcm9jZXNzLgogICAgICAgIHZhciBnID0gX3RoaXMuZm9udC5nZXRHbHlwaChnbHlwaCk7CiAgICAgICAgaW5wdXQucHVzaChnKTsKICAgICAgICBnbHlwaHMucHVzaChpbnB1dFtpbnB1dC5sZW5ndGggLSAxXSk7CgogICAgICAgIC8vIFByb2Nlc3MgbGlnYXR1cmUgc3Vic3RpdHV0aW9uCiAgICAgICAgcHJvY2VzcyhnbHlwaHNbZ2x5cGhzLmxlbmd0aCAtIDFdLCBlbnRyeSwgZ2x5cGhzLmxlbmd0aCAtIDEpOwoKICAgICAgICAvLyBBZGQgaW5wdXQgdG8gcmVzdWx0IGlmIG9ubHkgb25lIG1hdGNoaW5nIChub24tZGVsZXRlZCkgZ2x5cGggcmVtYWlucy4KICAgICAgICB2YXIgY291bnQgPSAwOwogICAgICAgIHZhciBmb3VuZCA9IDA7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBnbHlwaHMubGVuZ3RoICYmIGNvdW50IDw9IDE7IGkrKykgewogICAgICAgICAgaWYgKGdseXBoc1tpXS5pZCAhPT0gMHhmZmZmKSB7CiAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgIGZvdW5kID0gZ2x5cGhzW2ldLmlkOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGNvdW50ID09PSAxKSB7CiAgICAgICAgICB2YXIgcmVzdWx0ID0gaW5wdXQubWFwKGZ1bmN0aW9uIChnKSB7CiAgICAgICAgICAgIHJldHVybiBnLmlkOwogICAgICAgICAgfSk7CiAgICAgICAgICB2YXIgX2NhY2hlID0gX3RoaXMuaW5wdXRDYWNoZVtmb3VuZF07CiAgICAgICAgICBpZiAoX2NhY2hlKSB7CiAgICAgICAgICAgIF9jYWNoZS5wdXNoKHJlc3VsdCk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBfdGhpcy5pbnB1dENhY2hlW2ZvdW5kXSA9IFtyZXN1bHRdOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSwKCiAgICAgIGV4aXQ6IGZ1bmN0aW9uIGV4aXQoKSB7CiAgICAgICAgdmFyIF9zdGFjayRwb3AgPSBzdGFjay5wb3AoKTsKCiAgICAgICAgX3RoaXMuZ2x5cGhzID0gX3N0YWNrJHBvcC5nbHlwaHM7CiAgICAgICAgX3RoaXMubGlnYXR1cmVTdGFjayA9IF9zdGFjayRwb3AubGlnYXR1cmVTdGFjazsKCiAgICAgICAgaW5wdXQucG9wKCk7CiAgICAgIH0KICAgIH0pOwogIH07CgogIHJldHVybiBBQVRNb3J4UHJvY2Vzc29yOwp9KCksIChfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yJDIoX2NsYXNzJDIucHJvdG90eXBlLCAnZ2V0U3RhdGVNYWNoaW5lJywgW2NhY2hlXSwgX09iamVjdCRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzJDIucHJvdG90eXBlLCAnZ2V0U3RhdGVNYWNoaW5lJyksIF9jbGFzcyQyLnByb3RvdHlwZSkpLCBfY2xhc3MkMik7CgpmdW5jdGlvbiBzd2FwKGdseXBocywgcmFuZ2VBLCByYW5nZUIpIHsKICB2YXIgcmV2ZXJzZUEgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IGZhbHNlOwogIHZhciByZXZlcnNlQiA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogZmFsc2U7CgogIHZhciBlbmQgPSBnbHlwaHMuc3BsaWNlKHJhbmdlQlswXSAtIChyYW5nZUJbMV0gLSAxKSwgcmFuZ2VCWzFdKTsKICBpZiAocmV2ZXJzZUIpIHsKICAgIGVuZC5yZXZlcnNlKCk7CiAgfQoKICB2YXIgc3RhcnQgPSBnbHlwaHMuc3BsaWNlLmFwcGx5KGdseXBocywgW3JhbmdlQVswXSwgcmFuZ2VBWzFdXS5jb25jYXQoZW5kKSk7CiAgaWYgKHJldmVyc2VBKSB7CiAgICBzdGFydC5yZXZlcnNlKCk7CiAgfQoKICBnbHlwaHMuc3BsaWNlLmFwcGx5KGdseXBocywgW3JhbmdlQlswXSAtIChyYW5nZUFbMV0gLSAxKSwgMF0uY29uY2F0KHN0YXJ0KSk7CiAgcmV0dXJuIGdseXBoczsKfQoKZnVuY3Rpb24gcmVvcmRlckdseXBocyhnbHlwaHMsIHZlcmIsIGZpcnN0R2x5cGgsIGxhc3RHbHlwaCkgewogIHZhciBsZW5ndGggPSBsYXN0R2x5cGggLSBmaXJzdEdseXBoICsgMTsKICBzd2l0Y2ggKHZlcmIpIHsKICAgIGNhc2UgMDoKICAgICAgLy8gbm8gY2hhbmdlCiAgICAgIHJldHVybiBnbHlwaHM7CgogICAgY2FzZSAxOgogICAgICAvLyBBeCA9PiB4QQogICAgICByZXR1cm4gc3dhcChnbHlwaHMsIFtmaXJzdEdseXBoLCAxXSwgW2xhc3RHbHlwaCwgMF0pOwoKICAgIGNhc2UgMjoKICAgICAgLy8geEQgPT4gRHgKICAgICAgcmV0dXJuIHN3YXAoZ2x5cGhzLCBbZmlyc3RHbHlwaCwgMF0sIFtsYXN0R2x5cGgsIDFdKTsKCiAgICBjYXNlIDM6CiAgICAgIC8vIEF4RCA9PiBEeEEKICAgICAgcmV0dXJuIHN3YXAoZ2x5cGhzLCBbZmlyc3RHbHlwaCwgMV0sIFtsYXN0R2x5cGgsIDFdKTsKCiAgICBjYXNlIDQ6CiAgICAgIC8vIEFCeCA9PiB4QUIKICAgICAgcmV0dXJuIHN3YXAoZ2x5cGhzLCBbZmlyc3RHbHlwaCwgMl0sIFtsYXN0R2x5cGgsIDBdKTsKCiAgICBjYXNlIDU6CiAgICAgIC8vIEFCeCA9PiB4QkEKICAgICAgcmV0dXJuIHN3YXAoZ2x5cGhzLCBbZmlyc3RHbHlwaCwgMl0sIFtsYXN0R2x5cGgsIDBdLCB0cnVlLCBmYWxzZSk7CgogICAgY2FzZSA2OgogICAgICAvLyB4Q0QgPT4gQ0R4CiAgICAgIHJldHVybiBzd2FwKGdseXBocywgW2ZpcnN0R2x5cGgsIDBdLCBbbGFzdEdseXBoLCAyXSk7CgogICAgY2FzZSA3OgogICAgICAvLyB4Q0QgPT4gREN4CiAgICAgIHJldHVybiBzd2FwKGdseXBocywgW2ZpcnN0R2x5cGgsIDBdLCBbbGFzdEdseXBoLCAyXSwgZmFsc2UsIHRydWUpOwoKICAgIGNhc2UgODoKICAgICAgLy8gQXhDRCA9PiBDRHhBCiAgICAgIHJldHVybiBzd2FwKGdseXBocywgW2ZpcnN0R2x5cGgsIDFdLCBbbGFzdEdseXBoLCAyXSk7CgogICAgY2FzZSA5OgogICAgICAvLyBBeENEID0+IERDeEEKICAgICAgcmV0dXJuIHN3YXAoZ2x5cGhzLCBbZmlyc3RHbHlwaCwgMV0sIFtsYXN0R2x5cGgsIDJdLCBmYWxzZSwgdHJ1ZSk7CgogICAgY2FzZSAxMDoKICAgICAgLy8gQUJ4RCA9PiBEeEFCCiAgICAgIHJldHVybiBzd2FwKGdseXBocywgW2ZpcnN0R2x5cGgsIDJdLCBbbGFzdEdseXBoLCAxXSk7CgogICAgY2FzZSAxMToKICAgICAgLy8gQUJ4RCA9PiBEeEJBCiAgICAgIHJldHVybiBzd2FwKGdseXBocywgW2ZpcnN0R2x5cGgsIDJdLCBbbGFzdEdseXBoLCAxXSwgdHJ1ZSwgZmFsc2UpOwoKICAgIGNhc2UgMTI6CiAgICAgIC8vIEFCeENEID0+IENEeEFCCiAgICAgIHJldHVybiBzd2FwKGdseXBocywgW2ZpcnN0R2x5cGgsIDJdLCBbbGFzdEdseXBoLCAyXSk7CgogICAgY2FzZSAxMzoKICAgICAgLy8gQUJ4Q0QgPT4gQ0R4QkEKICAgICAgcmV0dXJuIHN3YXAoZ2x5cGhzLCBbZmlyc3RHbHlwaCwgMl0sIFtsYXN0R2x5cGgsIDJdLCB0cnVlLCBmYWxzZSk7CgogICAgY2FzZSAxNDoKICAgICAgLy8gQUJ4Q0QgPT4gREN4QUIKICAgICAgcmV0dXJuIHN3YXAoZ2x5cGhzLCBbZmlyc3RHbHlwaCwgMl0sIFtsYXN0R2x5cGgsIDJdLCBmYWxzZSwgdHJ1ZSk7CgogICAgY2FzZSAxNToKICAgICAgLy8gQUJ4Q0QgPT4gREN4QkEKICAgICAgcmV0dXJuIHN3YXAoZ2x5cGhzLCBbZmlyc3RHbHlwaCwgMl0sIFtsYXN0R2x5cGgsIDJdLCB0cnVlLCB0cnVlKTsKCiAgICBkZWZhdWx0OgogICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gdmVyYjogJyArIHZlcmIpOwogIH0KfQoKdmFyIEFBVExheW91dEVuZ2luZSA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBBQVRMYXlvdXRFbmdpbmUoZm9udCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEFBVExheW91dEVuZ2luZSk7CgogICAgdGhpcy5mb250ID0gZm9udDsKICAgIHRoaXMubW9yeFByb2Nlc3NvciA9IG5ldyBBQVRNb3J4UHJvY2Vzc29yKGZvbnQpOwogICAgdGhpcy5mYWxsYmFja1Bvc2l0aW9uID0gZmFsc2U7CiAgfQoKICBBQVRMYXlvdXRFbmdpbmUucHJvdG90eXBlLnN1YnN0aXR1dGUgPSBmdW5jdGlvbiBzdWJzdGl0dXRlKGdseXBoUnVuKSB7CiAgICAvLyBBQVQgZXhwZWN0cyB0aGUgZ2x5cGhzIHRvIGJlIGluIHZpc3VhbCBvcmRlciBwcmlvciB0byBtb3J4IHByb2Nlc3NpbmcsCiAgICAvLyBzbyByZXZlcnNlIHRoZSBnbHlwaHMgaWYgdGhlIHNjcmlwdCBpcyByaWdodC10by1sZWZ0LgogICAgaWYgKGdseXBoUnVuLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHsKICAgICAgZ2x5cGhSdW4uZ2x5cGhzLnJldmVyc2UoKTsKICAgIH0KCiAgICB0aGlzLm1vcnhQcm9jZXNzb3IucHJvY2VzcyhnbHlwaFJ1bi5nbHlwaHMsIG1hcE9UVG9BQVQoZ2x5cGhSdW4uZmVhdHVyZXMpKTsKICB9OwoKICBBQVRMYXlvdXRFbmdpbmUucHJvdG90eXBlLmdldEF2YWlsYWJsZUZlYXR1cmVzID0gZnVuY3Rpb24gZ2V0QXZhaWxhYmxlRmVhdHVyZXMoc2NyaXB0LCBsYW5ndWFnZSkgewogICAgcmV0dXJuIG1hcEFBVFRvT1QodGhpcy5tb3J4UHJvY2Vzc29yLmdldFN1cHBvcnRlZEZlYXR1cmVzKCkpOwogIH07CgogIEFBVExheW91dEVuZ2luZS5wcm90b3R5cGUuc3RyaW5nc0ZvckdseXBoID0gZnVuY3Rpb24gc3RyaW5nc0ZvckdseXBoKGdpZCkgewogICAgdmFyIGdseXBoU3RyaW5ncyA9IHRoaXMubW9yeFByb2Nlc3Nvci5nZW5lcmF0ZUlucHV0cyhnaWQpOwogICAgdmFyIHJlc3VsdCA9IG5ldyBfU2V0KCk7CgogICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gZ2x5cGhTdHJpbmdzLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgdmFyIF9yZWY7CgogICAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZiA9IF9pdGVyYXRvcltfaSsrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgaWYgKF9pLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIGdseXBocyA9IF9yZWY7CgogICAgICB0aGlzLl9hZGRTdHJpbmdzKGdseXBocywgMCwgcmVzdWx0LCAnJyk7CiAgICB9CgogICAgcmV0dXJuIHJlc3VsdDsKICB9OwoKICBBQVRMYXlvdXRFbmdpbmUucHJvdG90eXBlLl9hZGRTdHJpbmdzID0gZnVuY3Rpb24gX2FkZFN0cmluZ3MoZ2x5cGhzLCBpbmRleCwgc3RyaW5ncywgc3RyaW5nKSB7CiAgICB2YXIgY29kZVBvaW50cyA9IHRoaXMuZm9udC5fY21hcFByb2Nlc3Nvci5jb2RlUG9pbnRzRm9yR2x5cGgoZ2x5cGhzW2luZGV4XSk7CgogICAgZm9yICh2YXIgX2l0ZXJhdG9yMiA9IGNvZGVQb2ludHMsIF9pc0FycmF5MiA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMiksIF9pMiA9IDAsIF9pdGVyYXRvcjIgPSBfaXNBcnJheTIgPyBfaXRlcmF0b3IyIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjIpOzspIHsKICAgICAgdmFyIF9yZWYyOwoKICAgICAgaWYgKF9pc0FycmF5MikgewogICAgICAgIGlmIChfaTIgPj0gX2l0ZXJhdG9yMi5sZW5ndGgpIGJyZWFrOwogICAgICAgIF9yZWYyID0gX2l0ZXJhdG9yMltfaTIrK107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2kyID0gX2l0ZXJhdG9yMi5uZXh0KCk7CiAgICAgICAgaWYgKF9pMi5kb25lKSBicmVhazsKICAgICAgICBfcmVmMiA9IF9pMi52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIGNvZGVQb2ludCA9IF9yZWYyOwoKICAgICAgdmFyIHMgPSBzdHJpbmcgKyBfU3RyaW5nJGZyb21Db2RlUG9pbnQoY29kZVBvaW50KTsKICAgICAgaWYgKGluZGV4IDwgZ2x5cGhzLmxlbmd0aCAtIDEpIHsKICAgICAgICB0aGlzLl9hZGRTdHJpbmdzKGdseXBocywgaW5kZXggKyAxLCBzdHJpbmdzLCBzKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBzdHJpbmdzLmFkZChzKTsKICAgICAgfQogICAgfQogIH07CgogIHJldHVybiBBQVRMYXlvdXRFbmdpbmU7Cn0oKTsKCi8qKgogKiBTaGFwaW5nUGxhbnMgYXJlIHVzZWQgYnkgdGhlIE9wZW5UeXBlIHNoYXBlcnMgdG8gc3RvcmUgd2hpY2gKICogZmVhdHVyZXMgc2hvdWxkIGJ5IGFwcGxpZWQsIGFuZCBpbiB3aGF0IG9yZGVyIHRvIGFwcGx5IHRoZW0uCiAqIFRoZSBmZWF0dXJlcyBhcmUgYXBwbGllZCBpbiBncm91cHMgY2FsbGVkIHN0YWdlcy4gQSBmZWF0dXJlCiAqIGNhbiBiZSBhcHBsaWVkIGdsb2JhbGx5IHRvIGFsbCBnbHlwaHMsIG9yIGxvY2FsbHkgdG8gb25seQogKiBzcGVjaWZpYyBnbHlwaHMuCiAqCiAqIEBwcml2YXRlCiAqLwoKdmFyIFNoYXBpbmdQbGFuID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIFNoYXBpbmdQbGFuKGZvbnQsIHNjcmlwdCwgZGlyZWN0aW9uKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU2hhcGluZ1BsYW4pOwoKICAgIHRoaXMuZm9udCA9IGZvbnQ7CiAgICB0aGlzLnNjcmlwdCA9IHNjcmlwdDsKICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uOwogICAgdGhpcy5zdGFnZXMgPSBbXTsKICAgIHRoaXMuZ2xvYmFsRmVhdHVyZXMgPSB7fTsKICAgIHRoaXMuYWxsRmVhdHVyZXMgPSB7fTsKICB9CgogIC8qKgogICAqIEFkZHMgdGhlIGdpdmVuIGZlYXR1cmVzIHRvIHRoZSBsYXN0IHN0YWdlLgogICAqIElnbm9yZXMgZmVhdHVyZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBhcHBsaWVkLgogICAqLwoKCiAgU2hhcGluZ1BsYW4ucHJvdG90eXBlLl9hZGRGZWF0dXJlcyA9IGZ1bmN0aW9uIF9hZGRGZWF0dXJlcyhmZWF0dXJlcywgZ2xvYmFsKSB7CiAgICB2YXIgc3RhZ2VJbmRleCA9IHRoaXMuc3RhZ2VzLmxlbmd0aCAtIDE7CiAgICB2YXIgc3RhZ2UgPSB0aGlzLnN0YWdlc1tzdGFnZUluZGV4XTsKICAgIGZvciAodmFyIF9pdGVyYXRvciA9IGZlYXR1cmVzLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgdmFyIF9yZWY7CgogICAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZiA9IF9pdGVyYXRvcltfaSsrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgaWYgKF9pLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIGZlYXR1cmUgPSBfcmVmOwoKICAgICAgaWYgKHRoaXMuYWxsRmVhdHVyZXNbZmVhdHVyZV0gPT0gbnVsbCkgewogICAgICAgIHN0YWdlLnB1c2goZmVhdHVyZSk7CiAgICAgICAgdGhpcy5hbGxGZWF0dXJlc1tmZWF0dXJlXSA9IHN0YWdlSW5kZXg7CgogICAgICAgIGlmIChnbG9iYWwpIHsKICAgICAgICAgIHRoaXMuZ2xvYmFsRmVhdHVyZXNbZmVhdHVyZV0gPSB0cnVlOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07CgogIC8qKgogICAqIEFkZCBmZWF0dXJlcyB0byB0aGUgbGFzdCBzdGFnZQogICAqLwoKCiAgU2hhcGluZ1BsYW4ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZChhcmcpIHsKICAgIHZhciBnbG9iYWwgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRydWU7CgogICAgaWYgKHRoaXMuc3RhZ2VzLmxlbmd0aCA9PT0gMCkgewogICAgICB0aGlzLnN0YWdlcy5wdXNoKFtdKTsKICAgIH0KCiAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycpIHsKICAgICAgYXJnID0gW2FyZ107CiAgICB9CgogICAgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkgewogICAgICB0aGlzLl9hZGRGZWF0dXJlcyhhcmcsIGdsb2JhbCk7CiAgICB9IGVsc2UgaWYgKCh0eXBlb2YgYXJnID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihhcmcpKSA9PT0gJ29iamVjdCcpIHsKICAgICAgdGhpcy5fYWRkRmVhdHVyZXMoYXJnLmdsb2JhbCB8fCBbXSwgdHJ1ZSk7CiAgICAgIHRoaXMuX2FkZEZlYXR1cmVzKGFyZy5sb2NhbCB8fCBbXSwgZmFsc2UpOwogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBhcmd1bWVudCB0byBTaGFwaW5nUGxhbiNhZGQiKTsKICAgIH0KICB9OwoKICAvKioKICAgKiBBZGQgYSBuZXcgc3RhZ2UKICAgKi8KCgogIFNoYXBpbmdQbGFuLnByb3RvdHlwZS5hZGRTdGFnZSA9IGZ1bmN0aW9uIGFkZFN0YWdlKGFyZywgZ2xvYmFsKSB7CiAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJykgewogICAgICB0aGlzLnN0YWdlcy5wdXNoKGFyZywgW10pOwogICAgfSBlbHNlIHsKICAgICAgdGhpcy5zdGFnZXMucHVzaChbXSk7CiAgICAgIHRoaXMuYWRkKGFyZywgZ2xvYmFsKTsKICAgIH0KICB9OwoKICBTaGFwaW5nUGxhbi5wcm90b3R5cGUuc2V0RmVhdHVyZU92ZXJyaWRlcyA9IGZ1bmN0aW9uIHNldEZlYXR1cmVPdmVycmlkZXMoZmVhdHVyZXMpIHsKICAgIGlmIChBcnJheS5pc0FycmF5KGZlYXR1cmVzKSkgewogICAgICB0aGlzLmFkZChmZWF0dXJlcyk7CiAgICB9IGVsc2UgaWYgKCh0eXBlb2YgZmVhdHVyZXMgPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKGZlYXR1cmVzKSkgPT09ICdvYmplY3QnKSB7CiAgICAgIGZvciAodmFyIHRhZyBpbiBmZWF0dXJlcykgewogICAgICAgIGlmIChmZWF0dXJlc1t0YWddKSB7CiAgICAgICAgICB0aGlzLmFkZCh0YWcpOwogICAgICAgIH0gZWxzZSBpZiAodGhpcy5hbGxGZWF0dXJlc1t0YWddICE9IG51bGwpIHsKICAgICAgICAgIHZhciBzdGFnZSA9IHRoaXMuc3RhZ2VzW3RoaXMuYWxsRmVhdHVyZXNbdGFnXV07CiAgICAgICAgICBzdGFnZS5zcGxpY2Uoc3RhZ2UuaW5kZXhPZih0YWcpLCAxKTsKICAgICAgICAgIGRlbGV0ZSB0aGlzLmFsbEZlYXR1cmVzW3RhZ107CiAgICAgICAgICBkZWxldGUgdGhpcy5nbG9iYWxGZWF0dXJlc1t0YWddOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07CgogIC8qKgogICAqIEFzc2lnbnMgdGhlIGdsb2JhbCBmZWF0dXJlcyB0byB0aGUgZ2l2ZW4gZ2x5cGhzCiAgICovCgoKICBTaGFwaW5nUGxhbi5wcm90b3R5cGUuYXNzaWduR2xvYmFsRmVhdHVyZXMgPSBmdW5jdGlvbiBhc3NpZ25HbG9iYWxGZWF0dXJlcyhnbHlwaHMpIHsKICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSBnbHlwaHMsIF9pc0FycmF5MiA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMiksIF9pMiA9IDAsIF9pdGVyYXRvcjIgPSBfaXNBcnJheTIgPyBfaXRlcmF0b3IyIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjIpOzspIHsKICAgICAgdmFyIF9yZWYyOwoKICAgICAgaWYgKF9pc0FycmF5MikgewogICAgICAgIGlmIChfaTIgPj0gX2l0ZXJhdG9yMi5sZW5ndGgpIGJyZWFrOwogICAgICAgIF9yZWYyID0gX2l0ZXJhdG9yMltfaTIrK107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2kyID0gX2l0ZXJhdG9yMi5uZXh0KCk7CiAgICAgICAgaWYgKF9pMi5kb25lKSBicmVhazsKICAgICAgICBfcmVmMiA9IF9pMi52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIGdseXBoID0gX3JlZjI7CgogICAgICBmb3IgKHZhciBmZWF0dXJlIGluIHRoaXMuZ2xvYmFsRmVhdHVyZXMpIHsKICAgICAgICBnbHlwaC5mZWF0dXJlc1tmZWF0dXJlXSA9IHRydWU7CiAgICAgIH0KICAgIH0KICB9OwoKICAvKioKICAgKiBFeGVjdXRlcyB0aGUgcGxhbm5lZCBzdGFnZXMgdXNpbmcgdGhlIGdpdmVuIE9UUHJvY2Vzc29yCiAgICovCgoKICBTaGFwaW5nUGxhbi5wcm90b3R5cGUucHJvY2VzcyA9IGZ1bmN0aW9uIHByb2Nlc3MocHJvY2Vzc29yLCBnbHlwaHMsIHBvc2l0aW9ucykgewogICAgZm9yICh2YXIgX2l0ZXJhdG9yMyA9IHRoaXMuc3RhZ2VzLCBfaXNBcnJheTMgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjMpLCBfaTMgPSAwLCBfaXRlcmF0b3IzID0gX2lzQXJyYXkzID8gX2l0ZXJhdG9yMyA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IzKTs7KSB7CiAgICAgIHZhciBfcmVmMzsKCiAgICAgIGlmIChfaXNBcnJheTMpIHsKICAgICAgICBpZiAoX2kzID49IF9pdGVyYXRvcjMubGVuZ3RoKSBicmVhazsKICAgICAgICBfcmVmMyA9IF9pdGVyYXRvcjNbX2kzKytdOwogICAgICB9IGVsc2UgewogICAgICAgIF9pMyA9IF9pdGVyYXRvcjMubmV4dCgpOwogICAgICAgIGlmIChfaTMuZG9uZSkgYnJlYWs7CiAgICAgICAgX3JlZjMgPSBfaTMudmFsdWU7CiAgICAgIH0KCiAgICAgIHZhciBzdGFnZSA9IF9yZWYzOwoKICAgICAgaWYgKHR5cGVvZiBzdGFnZSA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIGlmICghcG9zaXRpb25zKSB7CiAgICAgICAgICBzdGFnZSh0aGlzLmZvbnQsIGdseXBocywgdGhpcyk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKHN0YWdlLmxlbmd0aCA+IDApIHsKICAgICAgICBwcm9jZXNzb3IuYXBwbHlGZWF0dXJlcyhzdGFnZSwgZ2x5cGhzLCBwb3NpdGlvbnMpOwogICAgICB9CiAgICB9CiAgfTsKCiAgcmV0dXJuIFNoYXBpbmdQbGFuOwp9KCk7Cgp2YXIgX2NsYXNzJDQ7CnZhciBfdGVtcDsKdmFyIFZBUklBVElPTl9GRUFUVVJFUyA9IFsncnZybiddOwp2YXIgQ09NTU9OX0ZFQVRVUkVTID0gWydjY21wJywgJ2xvY2wnLCAncmxpZycsICdtYXJrJywgJ21rbWsnXTsKdmFyIEZSQUNUSU9OQUxfRkVBVFVSRVMgPSBbJ2ZyYWMnLCAnbnVtcicsICdkbm9tJ107CnZhciBIT1JJWk9OVEFMX0ZFQVRVUkVTID0gWydjYWx0JywgJ2NsaWcnLCAnbGlnYScsICdyY2x0JywgJ2N1cnMnLCAna2VybiddOwp2YXIgRElSRUNUSU9OQUxfRkVBVFVSRVMgPSB7CiAgbHRyOiBbJ2x0cmEnLCAnbHRybSddLAogIHJ0bDogWydydGxhJywgJ3J0bG0nXQp9OwoKdmFyIERlZmF1bHRTaGFwZXIgPSAoX3RlbXAgPSBfY2xhc3MkNCA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBEZWZhdWx0U2hhcGVyKCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIERlZmF1bHRTaGFwZXIpOwogIH0KCiAgRGVmYXVsdFNoYXBlci5wbGFuID0gZnVuY3Rpb24gcGxhbihfcGxhbiwgZ2x5cGhzLCBmZWF0dXJlcykgewogICAgLy8gUGxhbiB0aGUgZmVhdHVyZXMgd2Ugd2FudCB0byBhcHBseQogICAgdGhpcy5wbGFuUHJlcHJvY2Vzc2luZyhfcGxhbik7CiAgICB0aGlzLnBsYW5GZWF0dXJlcyhfcGxhbik7CiAgICB0aGlzLnBsYW5Qb3N0cHJvY2Vzc2luZyhfcGxhbiwgZmVhdHVyZXMpOwoKICAgIC8vIEFzc2lnbiB0aGUgZ2xvYmFsIGZlYXR1cmVzIHRvIGFsbCB0aGUgZ2x5cGhzCiAgICBfcGxhbi5hc3NpZ25HbG9iYWxGZWF0dXJlcyhnbHlwaHMpOwoKICAgIC8vIEFzc2lnbiBsb2NhbCBmZWF0dXJlcyB0byBnbHlwaHMKICAgIHRoaXMuYXNzaWduRmVhdHVyZXMoX3BsYW4sIGdseXBocyk7CiAgfTsKCiAgRGVmYXVsdFNoYXBlci5wbGFuUHJlcHJvY2Vzc2luZyA9IGZ1bmN0aW9uIHBsYW5QcmVwcm9jZXNzaW5nKHBsYW4pIHsKICAgIHBsYW4uYWRkKHsKICAgICAgZ2xvYmFsOiBbXS5jb25jYXQoVkFSSUFUSU9OX0ZFQVRVUkVTLCBESVJFQ1RJT05BTF9GRUFUVVJFU1twbGFuLmRpcmVjdGlvbl0pLAogICAgICBsb2NhbDogRlJBQ1RJT05BTF9GRUFUVVJFUwogICAgfSk7CiAgfTsKCiAgRGVmYXVsdFNoYXBlci5wbGFuRmVhdHVyZXMgPSBmdW5jdGlvbiBwbGFuRmVhdHVyZXMocGxhbikgewogICAgLy8gRG8gbm90aGluZyBieSBkZWZhdWx0LiBMZXQgc3ViY2xhc3NlcyBvdmVycmlkZSB0aGlzLgogIH07CgogIERlZmF1bHRTaGFwZXIucGxhblBvc3Rwcm9jZXNzaW5nID0gZnVuY3Rpb24gcGxhblBvc3Rwcm9jZXNzaW5nKHBsYW4sIHVzZXJGZWF0dXJlcykgewogICAgcGxhbi5hZGQoW10uY29uY2F0KENPTU1PTl9GRUFUVVJFUywgSE9SSVpPTlRBTF9GRUFUVVJFUykpOwogICAgcGxhbi5zZXRGZWF0dXJlT3ZlcnJpZGVzKHVzZXJGZWF0dXJlcyk7CiAgfTsKCiAgRGVmYXVsdFNoYXBlci5hc3NpZ25GZWF0dXJlcyA9IGZ1bmN0aW9uIGFzc2lnbkZlYXR1cmVzKHBsYW4sIGdseXBocykgewogICAgLy8gRW5hYmxlIGNvbnRleHR1YWwgZnJhY3Rpb25zCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdseXBocy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgZ2x5cGggPSBnbHlwaHNbaV07CiAgICAgIGlmIChnbHlwaC5jb2RlUG9pbnRzWzBdID09PSAweDIwNDQpIHsKICAgICAgICAvLyBmcmFjdGlvbiBzbGFzaAogICAgICAgIHZhciBzdGFydCA9IGk7CiAgICAgICAgdmFyIGVuZCA9IGkgKyAxOwoKICAgICAgICAvLyBBcHBseSBudW1lcmF0b3IKICAgICAgICB3aGlsZSAoc3RhcnQgPiAwICYmIHVuaWNvZGUuaXNEaWdpdChnbHlwaHNbc3RhcnQgLSAxXS5jb2RlUG9pbnRzWzBdKSkgewogICAgICAgICAgZ2x5cGhzW3N0YXJ0IC0gMV0uZmVhdHVyZXMubnVtciA9IHRydWU7CiAgICAgICAgICBnbHlwaHNbc3RhcnQgLSAxXS5mZWF0dXJlcy5mcmFjID0gdHJ1ZTsKICAgICAgICAgIHN0YXJ0LS07CiAgICAgICAgfQoKICAgICAgICAvLyBBcHBseSBkZW5vbWluYXRvcgogICAgICAgIHdoaWxlIChlbmQgPCBnbHlwaHMubGVuZ3RoICYmIHVuaWNvZGUuaXNEaWdpdChnbHlwaHNbZW5kXS5jb2RlUG9pbnRzWzBdKSkgewogICAgICAgICAgZ2x5cGhzW2VuZF0uZmVhdHVyZXMuZG5vbSA9IHRydWU7CiAgICAgICAgICBnbHlwaHNbZW5kXS5mZWF0dXJlcy5mcmFjID0gdHJ1ZTsKICAgICAgICAgIGVuZCsrOwogICAgICAgIH0KCiAgICAgICAgLy8gQXBwbHkgZnJhY3Rpb24gc2xhc2gKICAgICAgICBnbHlwaC5mZWF0dXJlcy5mcmFjID0gdHJ1ZTsKICAgICAgICBpID0gZW5kIC0gMTsKICAgICAgfQogICAgfQogIH07CgogIHJldHVybiBEZWZhdWx0U2hhcGVyOwp9KCksIF9jbGFzcyQ0Lnplcm9NYXJrV2lkdGhzID0gJ0FGVEVSX0dQT1MnLCBfdGVtcCk7Cgp2YXIgdHJpZSA9IG5ldyBVbmljb2RlVHJpZShCdWZmZXIoIkFBRVFBQUFBQUFBQUFER2dBWlVCYXY3dDJDdFBBMEVVQmVEWkIwMHBpbjlBSlpJRWd5VUVqMFFod2VEQWdRT0p4Q0JSQkVsUVNCd1NpY0xna09Bd25OS1o1R2FZMmM3dXpqNG81eVpmWnJyYmVmYnVJeDJuU3EzQ0dtekFXSC8rSytVTzdNSWU3TU1oSE1NcG5NTUZYTUlWWEl0MnQzQ25QMDg4aVBxanFOTjhlNElqN1JsZTRMVUg4MnJMbTZpLzkyQStSRVJFUkVSRVJFUk5tZnovODlHRGVSQVJFUkVSemJOOGNlcHMySXd0OUgwQzkvQUo2eU9sRGtiVGN6Y290NVZTbThQbTF2Y0ZXZmI3K0JLT0xUdU9kMlVsVFg0d0dQODVFZzk1M2xXUEZibnVON1BranRMbWFsT1diTmVua0hPU2E3VDNLbVI5TVZUWjJ6WmtWajFrSGE2OE11ZVZLSDBSNHpxUTQ0V0VYTE04VmpjV0hQMFB0S0xmUHpRbk10R24zVzRRWWY2cXhGeGNlVkkzOTRyMnhuVisxcmloMGZWMVZ6ZjNmTzFuM2V2TDVKNzhydXZaNXB0WDJSd3k5MlRmYjF3bEVxdXQzVStzWjNIWE9lSjcvekRyYnl1UDYrWnowZnFhNk52M3ZoWTdZdTF4V25HZXZtc3ZzVXBUVC9SWUllOHdhVUgvcnZITVdLRnpMZk44TCtyVGZwNjQ1bWZYN2Z0bG5mRHRZeE41OXcwPSIsImJhc2U2NCIpKTsKdmFyIEZFQVRVUkVTID0gWydpc29sJywgJ2ZpbmEnLCAnZmluMicsICdmaW4zJywgJ21lZGknLCAnbWVkMicsICdpbml0J107Cgp2YXIgU2hhcGluZ0NsYXNzZXMgPSB7CiAgTm9uX0pvaW5pbmc6IDAsCiAgTGVmdF9Kb2luaW5nOiAxLAogIFJpZ2h0X0pvaW5pbmc6IDIsCiAgRHVhbF9Kb2luaW5nOiAzLAogIEpvaW5fQ2F1c2luZzogMywKICBBTEFQSDogNCwKICAnREFMQVRIIFJJU0gnOiA1LAogIFRyYW5zcGFyZW50OiA2Cn07Cgp2YXIgSVNPTCA9ICdpc29sJzsKdmFyIEZJTkEgPSAnZmluYSc7CnZhciBGSU4yID0gJ2ZpbjInOwp2YXIgRklOMyA9ICdmaW4zJzsKdmFyIE1FREkgPSAnbWVkaSc7CnZhciBNRUQyID0gJ21lZDInOwp2YXIgSU5JVCA9ICdpbml0JzsKdmFyIE5PTkUgPSBudWxsOwoKLy8gRWFjaCBlbnRyeSBpcyBbcHJldkFjdGlvbiwgY3VyQWN0aW9uLCBuZXh0U3RhdGVdCnZhciBTVEFURV9UQUJMRSA9IFsKLy8gICBOb25fSm9pbmluZywgICAgICAgIExlZnRfSm9pbmluZywgICAgICAgUmlnaHRfSm9pbmluZywgICAgIER1YWxfSm9pbmluZywgICAgICAgICAgIEFMQVBILCAgICAgICAgICAgIERBTEFUSCBSSVNICi8vIFN0YXRlIDA6IHByZXYgd2FzIFUsICBub3Qgd2lsbGluZyB0byBqb2luLgpbW05PTkUsIE5PTkUsIDBdLCBbTk9ORSwgSVNPTCwgMl0sIFtOT05FLCBJU09MLCAxXSwgW05PTkUsIElTT0wsIDJdLCBbTk9ORSwgSVNPTCwgMV0sIFtOT05FLCBJU09MLCA2XV0sCgovLyBTdGF0ZSAxOiBwcmV2IHdhcyBSIG9yIElTT0wvQUxBUEgsICBub3Qgd2lsbGluZyB0byBqb2luLgpbW05PTkUsIE5PTkUsIDBdLCBbTk9ORSwgSVNPTCwgMl0sIFtOT05FLCBJU09MLCAxXSwgW05PTkUsIElTT0wsIDJdLCBbTk9ORSwgRklOMiwgNV0sIFtOT05FLCBJU09MLCA2XV0sCgovLyBTdGF0ZSAyOiBwcmV2IHdhcyBEL0wgaW4gSVNPTCBmb3JtLCAgd2lsbGluZyB0byBqb2luLgpbW05PTkUsIE5PTkUsIDBdLCBbTk9ORSwgSVNPTCwgMl0sIFtJTklULCBGSU5BLCAxXSwgW0lOSVQsIEZJTkEsIDNdLCBbSU5JVCwgRklOQSwgNF0sIFtJTklULCBGSU5BLCA2XV0sCgovLyBTdGF0ZSAzOiBwcmV2IHdhcyBEIGluIEZJTkEgZm9ybSwgIHdpbGxpbmcgdG8gam9pbi4KW1tOT05FLCBOT05FLCAwXSwgW05PTkUsIElTT0wsIDJdLCBbTUVESSwgRklOQSwgMV0sIFtNRURJLCBGSU5BLCAzXSwgW01FREksIEZJTkEsIDRdLCBbTUVESSwgRklOQSwgNl1dLAoKLy8gU3RhdGUgNDogcHJldiB3YXMgRklOQSBBTEFQSCwgIG5vdCB3aWxsaW5nIHRvIGpvaW4uCltbTk9ORSwgTk9ORSwgMF0sIFtOT05FLCBJU09MLCAyXSwgW01FRDIsIElTT0wsIDFdLCBbTUVEMiwgSVNPTCwgMl0sIFtNRUQyLCBGSU4yLCA1XSwgW01FRDIsIElTT0wsIDZdXSwKCi8vIFN0YXRlIDU6IHByZXYgd2FzIEZJTjIvRklOMyBBTEFQSCwgIG5vdCB3aWxsaW5nIHRvIGpvaW4uCltbTk9ORSwgTk9ORSwgMF0sIFtOT05FLCBJU09MLCAyXSwgW0lTT0wsIElTT0wsIDFdLCBbSVNPTCwgSVNPTCwgMl0sIFtJU09MLCBGSU4yLCA1XSwgW0lTT0wsIElTT0wsIDZdXSwKCi8vIFN0YXRlIDY6IHByZXYgd2FzIERBTEFUSC9SSVNILCAgbm90IHdpbGxpbmcgdG8gam9pbi4KW1tOT05FLCBOT05FLCAwXSwgW05PTkUsIElTT0wsIDJdLCBbTk9ORSwgSVNPTCwgMV0sIFtOT05FLCBJU09MLCAyXSwgW05PTkUsIEZJTjMsIDVdLCBbTk9ORSwgSVNPTCwgNl1dXTsKCi8qKgogKiBUaGlzIGlzIGEgc2hhcGVyIGZvciBBcmFiaWMsIGFuZCBvdGhlciBjdXJzaXZlIHNjcmlwdHMuCiAqIEl0IHVzZXMgZGF0YSBmcm9tIEFyYWJpY1NoYXBpbmcudHh0IGluIHRoZSBVbmljb2RlIGRhdGFiYXNlLAogKiBjb21waWxlZCB0byBhIFVuaWNvZGVUcmllIGJ5IGdlbmVyYXRlLWRhdGEuY29mZmVlLgogKgogKiBUaGUgc2hhcGluZyBzdGF0ZSBtYWNoaW5lIHdhcyBwb3J0ZWQgZnJvbSBIYXJmYnV6ei4KICogaHR0cHM6Ly9naXRodWIuY29tL2JlaGRhZC9oYXJmYnV6ei9ibG9iL21hc3Rlci9zcmMvaGItb3Qtc2hhcGUtY29tcGxleC1hcmFiaWMuY2MKICovCgp2YXIgQXJhYmljU2hhcGVyID0gZnVuY3Rpb24gKF9EZWZhdWx0U2hhcGVyKSB7CiAgX2luaGVyaXRzKEFyYWJpY1NoYXBlciwgX0RlZmF1bHRTaGFwZXIpOwoKICBmdW5jdGlvbiBBcmFiaWNTaGFwZXIoKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQXJhYmljU2hhcGVyKTsKCiAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX0RlZmF1bHRTaGFwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7CiAgfQoKICBBcmFiaWNTaGFwZXIucGxhbkZlYXR1cmVzID0gZnVuY3Rpb24gcGxhbkZlYXR1cmVzKHBsYW4pIHsKICAgIHBsYW4uYWRkKFsnY2NtcCcsICdsb2NsJ10pOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBGRUFUVVJFUy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgZmVhdHVyZSA9IEZFQVRVUkVTW2ldOwogICAgICBwbGFuLmFkZFN0YWdlKGZlYXR1cmUsIGZhbHNlKTsKICAgIH0KCiAgICBwbGFuLmFkZFN0YWdlKCdtc2V0Jyk7CiAgfTsKCiAgQXJhYmljU2hhcGVyLmFzc2lnbkZlYXR1cmVzID0gZnVuY3Rpb24gYXNzaWduRmVhdHVyZXMocGxhbiwgZ2x5cGhzKSB7CiAgICBfRGVmYXVsdFNoYXBlci5hc3NpZ25GZWF0dXJlcy5jYWxsKHRoaXMsIHBsYW4sIGdseXBocyk7CgogICAgdmFyIHByZXYgPSAtMTsKICAgIHZhciBzdGF0ZSA9IDA7CiAgICB2YXIgYWN0aW9ucyA9IFtdOwoKICAgIC8vIEFwcGx5IHRoZSBzdGF0ZSBtYWNoaW5lIHRvIG1hcCBnbHlwaHMgdG8gZmVhdHVyZXMKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ2x5cGhzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBjdXJBY3Rpb24gPSB2b2lkIDAsCiAgICAgICAgICBwcmV2QWN0aW9uID0gdm9pZCAwOwogICAgICB2YXIgZ2x5cGggPSBnbHlwaHNbaV07CiAgICAgIHZhciB0eXBlID0gZ2V0U2hhcGluZ0NsYXNzKGdseXBoLmNvZGVQb2ludHNbMF0pOwogICAgICBpZiAodHlwZSA9PT0gU2hhcGluZ0NsYXNzZXMuVHJhbnNwYXJlbnQpIHsKICAgICAgICBhY3Rpb25zW2ldID0gTk9ORTsKICAgICAgICBjb250aW51ZTsKICAgICAgfQoKICAgICAgdmFyIF9TVEFURV9UQUJMRSRzdGF0ZSR0eSA9IFNUQVRFX1RBQkxFW3N0YXRlXVt0eXBlXTsKICAgICAgcHJldkFjdGlvbiA9IF9TVEFURV9UQUJMRSRzdGF0ZSR0eVswXTsKICAgICAgY3VyQWN0aW9uID0gX1NUQVRFX1RBQkxFJHN0YXRlJHR5WzFdOwogICAgICBzdGF0ZSA9IF9TVEFURV9UQUJMRSRzdGF0ZSR0eVsyXTsKCgogICAgICBpZiAocHJldkFjdGlvbiAhPT0gTk9ORSAmJiBwcmV2ICE9PSAtMSkgewogICAgICAgIGFjdGlvbnNbcHJldl0gPSBwcmV2QWN0aW9uOwogICAgICB9CgogICAgICBhY3Rpb25zW2ldID0gY3VyQWN0aW9uOwogICAgICBwcmV2ID0gaTsKICAgIH0KCiAgICAvLyBBcHBseSB0aGUgY2hvc2VuIGZlYXR1cmVzIHRvIHRoZWlyIHJlc3BlY3RpdmUgZ2x5cGhzCiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgZ2x5cGhzLmxlbmd0aDsgaW5kZXgrKykgewogICAgICB2YXIgZmVhdHVyZSA9IHZvaWQgMDsKICAgICAgdmFyIGdseXBoID0gZ2x5cGhzW2luZGV4XTsKICAgICAgaWYgKGZlYXR1cmUgPSBhY3Rpb25zW2luZGV4XSkgewogICAgICAgIGdseXBoLmZlYXR1cmVzW2ZlYXR1cmVdID0gdHJ1ZTsKICAgICAgfQogICAgfQogIH07CgogIHJldHVybiBBcmFiaWNTaGFwZXI7Cn0oRGVmYXVsdFNoYXBlcik7CgpmdW5jdGlvbiBnZXRTaGFwaW5nQ2xhc3MoY29kZVBvaW50KSB7CiAgdmFyIHJlcyA9IHRyaWUuZ2V0KGNvZGVQb2ludCk7CiAgaWYgKHJlcykgewogICAgcmV0dXJuIHJlcyAtIDE7CiAgfQoKICB2YXIgY2F0ZWdvcnkgPSB1bmljb2RlLmdldENhdGVnb3J5KGNvZGVQb2ludCk7CiAgaWYgKGNhdGVnb3J5ID09PSAnTW4nIHx8IGNhdGVnb3J5ID09PSAnTWUnIHx8IGNhdGVnb3J5ID09PSAnQ2YnKSB7CiAgICByZXR1cm4gU2hhcGluZ0NsYXNzZXMuVHJhbnNwYXJlbnQ7CiAgfQoKICByZXR1cm4gU2hhcGluZ0NsYXNzZXMuTm9uX0pvaW5pbmc7Cn0KCnZhciBHbHlwaEl0ZXJhdG9yID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIEdseXBoSXRlcmF0b3IoZ2x5cGhzLCBvcHRpb25zKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgR2x5cGhJdGVyYXRvcik7CgogICAgdGhpcy5nbHlwaHMgPSBnbHlwaHM7CiAgICB0aGlzLnJlc2V0KG9wdGlvbnMpOwogIH0KCiAgR2x5cGhJdGVyYXRvci5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiByZXNldCgpIHsKICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTsKICAgIHZhciBpbmRleCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMDsKCiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOwogICAgdGhpcy5mbGFncyA9IG9wdGlvbnMuZmxhZ3MgfHwge307CiAgICB0aGlzLm1hcmtBdHRhY2htZW50VHlwZSA9IG9wdGlvbnMubWFya0F0dGFjaG1lbnRUeXBlIHx8IDA7CiAgICB0aGlzLmluZGV4ID0gaW5kZXg7CiAgfTsKCiAgR2x5cGhJdGVyYXRvci5wcm90b3R5cGUuc2hvdWxkSWdub3JlID0gZnVuY3Rpb24gc2hvdWxkSWdub3JlKGdseXBoKSB7CiAgICByZXR1cm4gdGhpcy5mbGFncy5pZ25vcmVNYXJrcyAmJiBnbHlwaC5pc01hcmsgfHwgdGhpcy5mbGFncy5pZ25vcmVCYXNlR2x5cGhzICYmIGdseXBoLmlzQmFzZSB8fCB0aGlzLmZsYWdzLmlnbm9yZUxpZ2F0dXJlcyAmJiBnbHlwaC5pc0xpZ2F0dXJlIHx8IHRoaXMubWFya0F0dGFjaG1lbnRUeXBlICYmIGdseXBoLmlzTWFyayAmJiBnbHlwaC5tYXJrQXR0YWNobWVudFR5cGUgIT09IHRoaXMubWFya0F0dGFjaG1lbnRUeXBlOwogIH07CgogIEdseXBoSXRlcmF0b3IucHJvdG90eXBlLm1vdmUgPSBmdW5jdGlvbiBtb3ZlKGRpcikgewogICAgdGhpcy5pbmRleCArPSBkaXI7CiAgICB3aGlsZSAoMCA8PSB0aGlzLmluZGV4ICYmIHRoaXMuaW5kZXggPCB0aGlzLmdseXBocy5sZW5ndGggJiYgdGhpcy5zaG91bGRJZ25vcmUodGhpcy5nbHlwaHNbdGhpcy5pbmRleF0pKSB7CiAgICAgIHRoaXMuaW5kZXggKz0gZGlyOwogICAgfQoKICAgIGlmICgwID4gdGhpcy5pbmRleCB8fCB0aGlzLmluZGV4ID49IHRoaXMuZ2x5cGhzLmxlbmd0aCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICByZXR1cm4gdGhpcy5nbHlwaHNbdGhpcy5pbmRleF07CiAgfTsKCiAgR2x5cGhJdGVyYXRvci5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uIG5leHQoKSB7CiAgICByZXR1cm4gdGhpcy5tb3ZlKCsxKTsKICB9OwoKICBHbHlwaEl0ZXJhdG9yLnByb3RvdHlwZS5wcmV2ID0gZnVuY3Rpb24gcHJldigpIHsKICAgIHJldHVybiB0aGlzLm1vdmUoLTEpOwogIH07CgogIEdseXBoSXRlcmF0b3IucHJvdG90eXBlLnBlZWsgPSBmdW5jdGlvbiBwZWVrKCkgewogICAgdmFyIGNvdW50ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAxOwoKICAgIHZhciBpZHggPSB0aGlzLmluZGV4OwogICAgdmFyIHJlcyA9IHRoaXMuaW5jcmVtZW50KGNvdW50KTsKICAgIHRoaXMuaW5kZXggPSBpZHg7CiAgICByZXR1cm4gcmVzOwogIH07CgogIEdseXBoSXRlcmF0b3IucHJvdG90eXBlLnBlZWtJbmRleCA9IGZ1bmN0aW9uIHBlZWtJbmRleCgpIHsKICAgIHZhciBjb3VudCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogMTsKCiAgICB2YXIgaWR4ID0gdGhpcy5pbmRleDsKICAgIHRoaXMuaW5jcmVtZW50KGNvdW50KTsKICAgIHZhciByZXMgPSB0aGlzLmluZGV4OwogICAgdGhpcy5pbmRleCA9IGlkeDsKICAgIHJldHVybiByZXM7CiAgfTsKCiAgR2x5cGhJdGVyYXRvci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gaW5jcmVtZW50KCkgewogICAgdmFyIGNvdW50ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAxOwoKICAgIHZhciBkaXIgPSBjb3VudCA8IDAgPyAtMSA6IDE7CiAgICBjb3VudCA9IE1hdGguYWJzKGNvdW50KTsKICAgIHdoaWxlIChjb3VudC0tKSB7CiAgICAgIHRoaXMubW92ZShkaXIpOwogICAgfQoKICAgIHJldHVybiB0aGlzLmdseXBoc1t0aGlzLmluZGV4XTsKICB9OwoKICBfY3JlYXRlQ2xhc3MoR2x5cGhJdGVyYXRvciwgW3sKICAgIGtleTogImN1ciIsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZ2x5cGhzW3RoaXMuaW5kZXhdIHx8IG51bGw7CiAgICB9CiAgfV0pOwoKICByZXR1cm4gR2x5cGhJdGVyYXRvcjsKfSgpOwoKdmFyIERFRkFVTFRfU0NSSVBUUyA9IFsnREZMVCcsICdkZmx0JywgJ2xhdG4nXTsKCnZhciBPVFByb2Nlc3NvciA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBPVFByb2Nlc3Nvcihmb250LCB0YWJsZSkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE9UUHJvY2Vzc29yKTsKCiAgICB0aGlzLmZvbnQgPSBmb250OwogICAgdGhpcy50YWJsZSA9IHRhYmxlOwoKICAgIHRoaXMuc2NyaXB0ID0gbnVsbDsKICAgIHRoaXMuc2NyaXB0VGFnID0gbnVsbDsKCiAgICB0aGlzLmxhbmd1YWdlID0gbnVsbDsKICAgIHRoaXMubGFuZ3VhZ2VUYWcgPSBudWxsOwoKICAgIHRoaXMuZmVhdHVyZXMgPSB7fTsKICAgIHRoaXMubG9va3VwcyA9IHt9OwoKICAgIC8vIFNldHVwIHZhcmlhdGlvbiBzdWJzdGl0dXRpb25zCiAgICB0aGlzLnZhcmlhdGlvbnNJbmRleCA9IGZvbnQuX3ZhcmlhdGlvblByb2Nlc3NvciA/IHRoaXMuZmluZFZhcmlhdGlvbnNJbmRleChmb250Ll92YXJpYXRpb25Qcm9jZXNzb3Iubm9ybWFsaXplZENvb3JkcykgOiAtMTsKCiAgICAvLyBpbml0aWFsaXplIHRvIGRlZmF1bHQgc2NyaXB0ICsgbGFuZ3VhZ2UKICAgIHRoaXMuc2VsZWN0U2NyaXB0KCk7CgogICAgLy8gY3VycmVudCBjb250ZXh0IChzZXQgYnkgYXBwbHlGZWF0dXJlcykKICAgIHRoaXMuZ2x5cGhzID0gW107CiAgICB0aGlzLnBvc2l0aW9ucyA9IFtdOyAvLyBvbmx5IHVzZWQgYnkgR1BPUwogICAgdGhpcy5saWdhdHVyZUlEID0gMTsKICAgIHRoaXMuY3VycmVudEZlYXR1cmUgPSBudWxsOwogIH0KCiAgT1RQcm9jZXNzb3IucHJvdG90eXBlLmZpbmRTY3JpcHQgPSBmdW5jdGlvbiBmaW5kU2NyaXB0KHNjcmlwdCkgewogICAgaWYgKHRoaXMudGFibGUuc2NyaXB0TGlzdCA9PSBudWxsKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIGlmICghQXJyYXkuaXNBcnJheShzY3JpcHQpKSB7CiAgICAgIHNjcmlwdCA9IFtzY3JpcHRdOwogICAgfQoKICAgIGZvciAodmFyIF9pdGVyYXRvciA9IHNjcmlwdCwgX2lzQXJyYXkgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvciksIF9pID0gMCwgX2l0ZXJhdG9yID0gX2lzQXJyYXkgPyBfaXRlcmF0b3IgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yKTs7KSB7CiAgICAgIHZhciBfcmVmOwoKICAgICAgaWYgKF9pc0FycmF5KSB7CiAgICAgICAgaWYgKF9pID49IF9pdGVyYXRvci5sZW5ndGgpIGJyZWFrOwogICAgICAgIF9yZWYgPSBfaXRlcmF0b3JbX2krK107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2kgPSBfaXRlcmF0b3IubmV4dCgpOwogICAgICAgIGlmIChfaS5kb25lKSBicmVhazsKICAgICAgICBfcmVmID0gX2kudmFsdWU7CiAgICAgIH0KCiAgICAgIHZhciBzID0gX3JlZjsKCiAgICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSB0aGlzLnRhYmxlLnNjcmlwdExpc3QsIF9pc0FycmF5MiA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMiksIF9pMiA9IDAsIF9pdGVyYXRvcjIgPSBfaXNBcnJheTIgPyBfaXRlcmF0b3IyIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjIpOzspIHsKICAgICAgICB2YXIgX3JlZjI7CgogICAgICAgIGlmIChfaXNBcnJheTIpIHsKICAgICAgICAgIGlmIChfaTIgPj0gX2l0ZXJhdG9yMi5sZW5ndGgpIGJyZWFrOwogICAgICAgICAgX3JlZjIgPSBfaXRlcmF0b3IyW19pMisrXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgX2kyID0gX2l0ZXJhdG9yMi5uZXh0KCk7CiAgICAgICAgICBpZiAoX2kyLmRvbmUpIGJyZWFrOwogICAgICAgICAgX3JlZjIgPSBfaTIudmFsdWU7CiAgICAgICAgfQoKICAgICAgICB2YXIgZW50cnkgPSBfcmVmMjsKCiAgICAgICAgaWYgKGVudHJ5LnRhZyA9PT0gcykgewogICAgICAgICAgcmV0dXJuIGVudHJ5OwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHJldHVybiBudWxsOwogIH07CgogIE9UUHJvY2Vzc29yLnByb3RvdHlwZS5zZWxlY3RTY3JpcHQgPSBmdW5jdGlvbiBzZWxlY3RTY3JpcHQoc2NyaXB0LCBsYW5ndWFnZSwgZGlyZWN0aW9uJCQpIHsKICAgIHZhciBjaGFuZ2VkID0gZmFsc2U7CiAgICB2YXIgZW50cnkgPSB2b2lkIDA7CiAgICBpZiAoIXRoaXMuc2NyaXB0IHx8IHNjcmlwdCAhPT0gdGhpcy5zY3JpcHRUYWcpIHsKICAgICAgZW50cnkgPSB0aGlzLmZpbmRTY3JpcHQoc2NyaXB0KTsKICAgICAgaWYgKCFlbnRyeSkgewogICAgICAgIGVudHJ5ID0gdGhpcy5maW5kU2NyaXB0KERFRkFVTFRfU0NSSVBUUyk7CiAgICAgIH0KCiAgICAgIGlmICghZW50cnkpIHsKICAgICAgICByZXR1cm4gdGhpcy5zY3JpcHRUYWc7CiAgICAgIH0KCiAgICAgIHRoaXMuc2NyaXB0VGFnID0gZW50cnkudGFnOwogICAgICB0aGlzLnNjcmlwdCA9IGVudHJ5LnNjcmlwdDsKICAgICAgdGhpcy5sYW5ndWFnZSA9IG51bGw7CiAgICAgIHRoaXMubGFuZ3VhZ2VUYWcgPSBudWxsOwogICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgIH0KCiAgICBpZiAoIWRpcmVjdGlvbiQkIHx8IGRpcmVjdGlvbiQkICE9PSB0aGlzLmRpcmVjdGlvbikgewogICAgICB0aGlzLmRpcmVjdGlvbiA9IGRpcmVjdGlvbiQkIHx8IGRpcmVjdGlvbihzY3JpcHQpOwogICAgfQoKICAgIGlmIChsYW5ndWFnZSAmJiBsYW5ndWFnZS5sZW5ndGggPCA0KSB7CiAgICAgIGxhbmd1YWdlICs9ICcgJy5yZXBlYXQoNCAtIGxhbmd1YWdlLmxlbmd0aCk7CiAgICB9CgogICAgaWYgKCFsYW5ndWFnZSB8fCBsYW5ndWFnZSAhPT0gdGhpcy5sYW5ndWFnZVRhZykgewogICAgICB0aGlzLmxhbmd1YWdlID0gbnVsbDsKCiAgICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSB0aGlzLnNjcmlwdC5sYW5nU3lzUmVjb3JkcywgX2lzQXJyYXkzID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IzKSwgX2kzID0gMCwgX2l0ZXJhdG9yMyA9IF9pc0FycmF5MyA/IF9pdGVyYXRvcjMgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMyk7OykgewogICAgICAgIHZhciBfcmVmMzsKCiAgICAgICAgaWYgKF9pc0FycmF5MykgewogICAgICAgICAgaWYgKF9pMyA+PSBfaXRlcmF0b3IzLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmMyA9IF9pdGVyYXRvcjNbX2kzKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaTMgPSBfaXRlcmF0b3IzLm5leHQoKTsKICAgICAgICAgIGlmIChfaTMuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmMyA9IF9pMy52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBsYW5nID0gX3JlZjM7CgogICAgICAgIGlmIChsYW5nLnRhZyA9PT0gbGFuZ3VhZ2UpIHsKICAgICAgICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5nLmxhbmdTeXM7CiAgICAgICAgICB0aGlzLmxhbmd1YWdlVGFnID0gbGFuZy50YWc7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmICghdGhpcy5sYW5ndWFnZSkgewogICAgICAgIHRoaXMubGFuZ3VhZ2UgPSB0aGlzLnNjcmlwdC5kZWZhdWx0TGFuZ1N5czsKICAgICAgICB0aGlzLmxhbmd1YWdlVGFnID0gbnVsbDsKICAgICAgfQoKICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICB9CgogICAgLy8gQnVpbGQgYSBmZWF0dXJlIGxvb2t1cCB0YWJsZQogICAgaWYgKGNoYW5nZWQpIHsKICAgICAgdGhpcy5mZWF0dXJlcyA9IHt9OwogICAgICBpZiAodGhpcy5sYW5ndWFnZSkgewogICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjQgPSB0aGlzLmxhbmd1YWdlLmZlYXR1cmVJbmRleGVzLCBfaXNBcnJheTQgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjQpLCBfaTQgPSAwLCBfaXRlcmF0b3I0ID0gX2lzQXJyYXk0ID8gX2l0ZXJhdG9yNCA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3I0KTs7KSB7CiAgICAgICAgICB2YXIgX3JlZjQ7CgogICAgICAgICAgaWYgKF9pc0FycmF5NCkgewogICAgICAgICAgICBpZiAoX2k0ID49IF9pdGVyYXRvcjQubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgX3JlZjQgPSBfaXRlcmF0b3I0W19pNCsrXTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIF9pNCA9IF9pdGVyYXRvcjQubmV4dCgpOwogICAgICAgICAgICBpZiAoX2k0LmRvbmUpIGJyZWFrOwogICAgICAgICAgICBfcmVmNCA9IF9pNC52YWx1ZTsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgZmVhdHVyZUluZGV4ID0gX3JlZjQ7CgogICAgICAgICAgdmFyIHJlY29yZCA9IHRoaXMudGFibGUuZmVhdHVyZUxpc3RbZmVhdHVyZUluZGV4XTsKICAgICAgICAgIHZhciBzdWJzdGl0dXRlRmVhdHVyZSA9IHRoaXMuc3Vic3RpdHV0ZUZlYXR1cmVGb3JWYXJpYXRpb25zKGZlYXR1cmVJbmRleCk7CiAgICAgICAgICB0aGlzLmZlYXR1cmVzW3JlY29yZC50YWddID0gc3Vic3RpdHV0ZUZlYXR1cmUgfHwgcmVjb3JkLmZlYXR1cmU7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHRoaXMuc2NyaXB0VGFnOwogIH07CgogIE9UUHJvY2Vzc29yLnByb3RvdHlwZS5sb29rdXBzRm9yRmVhdHVyZXMgPSBmdW5jdGlvbiBsb29rdXBzRm9yRmVhdHVyZXMoKSB7CiAgICB2YXIgdXNlckZlYXR1cmVzID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBbXTsKICAgIHZhciBleGNsdWRlID0gYXJndW1lbnRzWzFdOwoKICAgIHZhciBsb29rdXBzID0gW107CiAgICBmb3IgKHZhciBfaXRlcmF0b3I1ID0gdXNlckZlYXR1cmVzLCBfaXNBcnJheTUgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjUpLCBfaTUgPSAwLCBfaXRlcmF0b3I1ID0gX2lzQXJyYXk1ID8gX2l0ZXJhdG9yNSA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3I1KTs7KSB7CiAgICAgIHZhciBfcmVmNTsKCiAgICAgIGlmIChfaXNBcnJheTUpIHsKICAgICAgICBpZiAoX2k1ID49IF9pdGVyYXRvcjUubGVuZ3RoKSBicmVhazsKICAgICAgICBfcmVmNSA9IF9pdGVyYXRvcjVbX2k1KytdOwogICAgICB9IGVsc2UgewogICAgICAgIF9pNSA9IF9pdGVyYXRvcjUubmV4dCgpOwogICAgICAgIGlmIChfaTUuZG9uZSkgYnJlYWs7CiAgICAgICAgX3JlZjUgPSBfaTUudmFsdWU7CiAgICAgIH0KCiAgICAgIHZhciB0YWcgPSBfcmVmNTsKCiAgICAgIHZhciBmZWF0dXJlID0gdGhpcy5mZWF0dXJlc1t0YWddOwogICAgICBpZiAoIWZlYXR1cmUpIHsKICAgICAgICBjb250aW51ZTsKICAgICAgfQoKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yNiA9IGZlYXR1cmUubG9va3VwTGlzdEluZGV4ZXMsIF9pc0FycmF5NiA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yNiksIF9pNiA9IDAsIF9pdGVyYXRvcjYgPSBfaXNBcnJheTYgPyBfaXRlcmF0b3I2IDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjYpOzspIHsKICAgICAgICB2YXIgX3JlZjY7CgogICAgICAgIGlmIChfaXNBcnJheTYpIHsKICAgICAgICAgIGlmIChfaTYgPj0gX2l0ZXJhdG9yNi5sZW5ndGgpIGJyZWFrOwogICAgICAgICAgX3JlZjYgPSBfaXRlcmF0b3I2W19pNisrXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgX2k2ID0gX2l0ZXJhdG9yNi5uZXh0KCk7CiAgICAgICAgICBpZiAoX2k2LmRvbmUpIGJyZWFrOwogICAgICAgICAgX3JlZjYgPSBfaTYudmFsdWU7CiAgICAgICAgfQoKICAgICAgICB2YXIgbG9va3VwSW5kZXggPSBfcmVmNjsKCiAgICAgICAgaWYgKGV4Y2x1ZGUgJiYgZXhjbHVkZS5pbmRleE9mKGxvb2t1cEluZGV4KSAhPT0gLTEpIHsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgbG9va3Vwcy5wdXNoKHsKICAgICAgICAgIGZlYXR1cmU6IHRhZywKICAgICAgICAgIGluZGV4OiBsb29rdXBJbmRleCwKICAgICAgICAgIGxvb2t1cDogdGhpcy50YWJsZS5sb29rdXBMaXN0LmdldChsb29rdXBJbmRleCkKICAgICAgICB9KTsKICAgICAgfQogICAgfQoKICAgIGxvb2t1cHMuc29ydChmdW5jdGlvbiAoYSwgYikgewogICAgICByZXR1cm4gYS5pbmRleCAtIGIuaW5kZXg7CiAgICB9KTsKICAgIHJldHVybiBsb29rdXBzOwogIH07CgogIE9UUHJvY2Vzc29yLnByb3RvdHlwZS5zdWJzdGl0dXRlRmVhdHVyZUZvclZhcmlhdGlvbnMgPSBmdW5jdGlvbiBzdWJzdGl0dXRlRmVhdHVyZUZvclZhcmlhdGlvbnMoZmVhdHVyZUluZGV4KSB7CiAgICBpZiAodGhpcy52YXJpYXRpb25zSW5kZXggPT09IC0xKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHZhciByZWNvcmQgPSB0aGlzLnRhYmxlLmZlYXR1cmVWYXJpYXRpb25zLmZlYXR1cmVWYXJpYXRpb25SZWNvcmRzW3RoaXMudmFyaWF0aW9uc0luZGV4XTsKICAgIHZhciBzdWJzdGl0dXRpb25zID0gcmVjb3JkLmZlYXR1cmVUYWJsZVN1YnN0aXR1dGlvbi5zdWJzdGl0dXRpb25zOwogICAgZm9yICh2YXIgX2l0ZXJhdG9yNyA9IHN1YnN0aXR1dGlvbnMsIF9pc0FycmF5NyA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yNyksIF9pNyA9IDAsIF9pdGVyYXRvcjcgPSBfaXNBcnJheTcgPyBfaXRlcmF0b3I3IDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjcpOzspIHsKICAgICAgdmFyIF9yZWY3OwoKICAgICAgaWYgKF9pc0FycmF5NykgewogICAgICAgIGlmIChfaTcgPj0gX2l0ZXJhdG9yNy5sZW5ndGgpIGJyZWFrOwogICAgICAgIF9yZWY3ID0gX2l0ZXJhdG9yN1tfaTcrK107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2k3ID0gX2l0ZXJhdG9yNy5uZXh0KCk7CiAgICAgICAgaWYgKF9pNy5kb25lKSBicmVhazsKICAgICAgICBfcmVmNyA9IF9pNy52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIHN1YnN0aXR1dGlvbiA9IF9yZWY3OwoKICAgICAgaWYgKHN1YnN0aXR1dGlvbi5mZWF0dXJlSW5kZXggPT09IGZlYXR1cmVJbmRleCkgewogICAgICAgIHJldHVybiBzdWJzdGl0dXRpb24uYWx0ZXJuYXRlRmVhdHVyZVRhYmxlOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIG51bGw7CiAgfTsKCiAgT1RQcm9jZXNzb3IucHJvdG90eXBlLmZpbmRWYXJpYXRpb25zSW5kZXggPSBmdW5jdGlvbiBmaW5kVmFyaWF0aW9uc0luZGV4KGNvb3JkcykgewogICAgdmFyIHZhcmlhdGlvbnMgPSB0aGlzLnRhYmxlLmZlYXR1cmVWYXJpYXRpb25zOwogICAgaWYgKCF2YXJpYXRpb25zKSB7CiAgICAgIHJldHVybiAtMTsKICAgIH0KCiAgICB2YXIgcmVjb3JkcyA9IHZhcmlhdGlvbnMuZmVhdHVyZVZhcmlhdGlvblJlY29yZHM7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlY29yZHMubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGNvbmRpdGlvbnMgPSByZWNvcmRzW2ldLmNvbmRpdGlvblNldC5jb25kaXRpb25UYWJsZTsKICAgICAgaWYgKHRoaXMudmFyaWF0aW9uQ29uZGl0aW9uc01hdGNoKGNvbmRpdGlvbnMsIGNvb3JkcykpIHsKICAgICAgICByZXR1cm4gaTsKICAgICAgfQogICAgfQoKICAgIHJldHVybiAtMTsKICB9OwoKICBPVFByb2Nlc3Nvci5wcm90b3R5cGUudmFyaWF0aW9uQ29uZGl0aW9uc01hdGNoID0gZnVuY3Rpb24gdmFyaWF0aW9uQ29uZGl0aW9uc01hdGNoKGNvbmRpdGlvbnMsIGNvb3JkcykgewogICAgcmV0dXJuIGNvbmRpdGlvbnMuZXZlcnkoZnVuY3Rpb24gKGNvbmRpdGlvbikgewogICAgICB2YXIgY29vcmQgPSBjb25kaXRpb24uYXhpc0luZGV4IDwgY29vcmRzLmxlbmd0aCA/IGNvb3Jkc1tjb25kaXRpb24uYXhpc0luZGV4XSA6IDA7CiAgICAgIHJldHVybiBjb25kaXRpb24uZmlsdGVyUmFuZ2VNaW5WYWx1ZSA8PSBjb29yZCAmJiBjb29yZCA8PSBjb25kaXRpb24uZmlsdGVyUmFuZ2VNYXhWYWx1ZTsKICAgIH0pOwogIH07CgogIE9UUHJvY2Vzc29yLnByb3RvdHlwZS5hcHBseUZlYXR1cmVzID0gZnVuY3Rpb24gYXBwbHlGZWF0dXJlcyh1c2VyRmVhdHVyZXMsIGdseXBocywgYWR2YW5jZXMpIHsKICAgIHZhciBsb29rdXBzID0gdGhpcy5sb29rdXBzRm9yRmVhdHVyZXModXNlckZlYXR1cmVzKTsKICAgIHRoaXMuYXBwbHlMb29rdXBzKGxvb2t1cHMsIGdseXBocywgYWR2YW5jZXMpOwogIH07CgogIE9UUHJvY2Vzc29yLnByb3RvdHlwZS5hcHBseUxvb2t1cHMgPSBmdW5jdGlvbiBhcHBseUxvb2t1cHMobG9va3VwcywgZ2x5cGhzLCBwb3NpdGlvbnMpIHsKICAgIHRoaXMuZ2x5cGhzID0gZ2x5cGhzOwogICAgdGhpcy5wb3NpdGlvbnMgPSBwb3NpdGlvbnM7CiAgICB0aGlzLmdseXBoSXRlcmF0b3IgPSBuZXcgR2x5cGhJdGVyYXRvcihnbHlwaHMpOwoKICAgIGZvciAodmFyIF9pdGVyYXRvcjggPSBsb29rdXBzLCBfaXNBcnJheTggPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjgpLCBfaTggPSAwLCBfaXRlcmF0b3I4ID0gX2lzQXJyYXk4ID8gX2l0ZXJhdG9yOCA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3I4KTs7KSB7CiAgICAgIHZhciBfcmVmODsKCiAgICAgIGlmIChfaXNBcnJheTgpIHsKICAgICAgICBpZiAoX2k4ID49IF9pdGVyYXRvcjgubGVuZ3RoKSBicmVhazsKICAgICAgICBfcmVmOCA9IF9pdGVyYXRvcjhbX2k4KytdOwogICAgICB9IGVsc2UgewogICAgICAgIF9pOCA9IF9pdGVyYXRvcjgubmV4dCgpOwogICAgICAgIGlmIChfaTguZG9uZSkgYnJlYWs7CiAgICAgICAgX3JlZjggPSBfaTgudmFsdWU7CiAgICAgIH0KCiAgICAgIHZhciBfcmVmOSA9IF9yZWY4LAogICAgICAgICAgZmVhdHVyZSA9IF9yZWY5LmZlYXR1cmUsCiAgICAgICAgICBsb29rdXAgPSBfcmVmOS5sb29rdXA7CgogICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlID0gZmVhdHVyZTsKICAgICAgdGhpcy5nbHlwaEl0ZXJhdG9yLnJlc2V0KGxvb2t1cC5mbGFncyk7CgogICAgICB3aGlsZSAodGhpcy5nbHlwaEl0ZXJhdG9yLmluZGV4IDwgZ2x5cGhzLmxlbmd0aCkgewogICAgICAgIGlmICghKGZlYXR1cmUgaW4gdGhpcy5nbHlwaEl0ZXJhdG9yLmN1ci5mZWF0dXJlcykpIHsKICAgICAgICAgIHRoaXMuZ2x5cGhJdGVyYXRvci5uZXh0KCk7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjkgPSBsb29rdXAuc3ViVGFibGVzLCBfaXNBcnJheTkgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjkpLCBfaTkgPSAwLCBfaXRlcmF0b3I5ID0gX2lzQXJyYXk5ID8gX2l0ZXJhdG9yOSA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3I5KTs7KSB7CiAgICAgICAgICB2YXIgX3JlZjEwOwoKICAgICAgICAgIGlmIChfaXNBcnJheTkpIHsKICAgICAgICAgICAgaWYgKF9pOSA+PSBfaXRlcmF0b3I5Lmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICAgIF9yZWYxMCA9IF9pdGVyYXRvcjlbX2k5KytdOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgX2k5ID0gX2l0ZXJhdG9yOS5uZXh0KCk7CiAgICAgICAgICAgIGlmIChfaTkuZG9uZSkgYnJlYWs7CiAgICAgICAgICAgIF9yZWYxMCA9IF9pOS52YWx1ZTsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgdGFibGUgPSBfcmVmMTA7CgogICAgICAgICAgdmFyIHJlcyA9IHRoaXMuYXBwbHlMb29rdXAobG9va3VwLmxvb2t1cFR5cGUsIHRhYmxlKTsKICAgICAgICAgIGlmIChyZXMpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0aGlzLmdseXBoSXRlcmF0b3IubmV4dCgpOwogICAgICB9CiAgICB9CiAgfTsKCiAgT1RQcm9jZXNzb3IucHJvdG90eXBlLmFwcGx5TG9va3VwID0gZnVuY3Rpb24gYXBwbHlMb29rdXAobG9va3VwLCB0YWJsZSkgewogICAgdGhyb3cgbmV3IEVycm9yKCJhcHBseUxvb2t1cCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMiKTsKICB9OwoKICBPVFByb2Nlc3Nvci5wcm90b3R5cGUuYXBwbHlMb29rdXBMaXN0ID0gZnVuY3Rpb24gYXBwbHlMb29rdXBMaXN0KGxvb2t1cFJlY29yZHMpIHsKICAgIHZhciBvcHRpb25zID0gdGhpcy5nbHlwaEl0ZXJhdG9yLm9wdGlvbnM7CiAgICB2YXIgZ2x5cGhJbmRleCA9IHRoaXMuZ2x5cGhJdGVyYXRvci5pbmRleDsKCiAgICBmb3IgKHZhciBfaXRlcmF0b3IxMCA9IGxvb2t1cFJlY29yZHMsIF9pc0FycmF5MTAgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjEwKSwgX2kxMCA9IDAsIF9pdGVyYXRvcjEwID0gX2lzQXJyYXkxMCA/IF9pdGVyYXRvcjEwIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjEwKTs7KSB7CiAgICAgIHZhciBfcmVmMTE7CgogICAgICBpZiAoX2lzQXJyYXkxMCkgewogICAgICAgIGlmIChfaTEwID49IF9pdGVyYXRvcjEwLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZjExID0gX2l0ZXJhdG9yMTBbX2kxMCsrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaTEwID0gX2l0ZXJhdG9yMTAubmV4dCgpOwogICAgICAgIGlmIChfaTEwLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYxMSA9IF9pMTAudmFsdWU7CiAgICAgIH0KCiAgICAgIHZhciBsb29rdXBSZWNvcmQgPSBfcmVmMTE7CgogICAgICAvLyBSZXNldCBmbGFncyBhbmQgZmluZCBnbHlwaCBpbmRleCBmb3IgdGhpcyBsb29rdXAgcmVjb3JkCiAgICAgIHRoaXMuZ2x5cGhJdGVyYXRvci5yZXNldChvcHRpb25zLCBnbHlwaEluZGV4KTsKICAgICAgdGhpcy5nbHlwaEl0ZXJhdG9yLmluY3JlbWVudChsb29rdXBSZWNvcmQuc2VxdWVuY2VJbmRleCk7CgogICAgICAvLyBHZXQgdGhlIGxvb2t1cCBhbmQgc2V0dXAgZmxhZ3MgZm9yIHN1YnRhYmxlcwogICAgICB2YXIgbG9va3VwID0gdGhpcy50YWJsZS5sb29rdXBMaXN0LmdldChsb29rdXBSZWNvcmQubG9va3VwTGlzdEluZGV4KTsKICAgICAgdGhpcy5nbHlwaEl0ZXJhdG9yLnJlc2V0KGxvb2t1cC5mbGFncywgdGhpcy5nbHlwaEl0ZXJhdG9yLmluZGV4KTsKCiAgICAgIC8vIEFwcGx5IGxvb2t1cCBzdWJ0YWJsZXMgdW50aWwgb25lIG1hdGNoZXMKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMTEgPSBsb29rdXAuc3ViVGFibGVzLCBfaXNBcnJheTExID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IxMSksIF9pMTEgPSAwLCBfaXRlcmF0b3IxMSA9IF9pc0FycmF5MTEgPyBfaXRlcmF0b3IxMSA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IxMSk7OykgewogICAgICAgIHZhciBfcmVmMTI7CgogICAgICAgIGlmIChfaXNBcnJheTExKSB7CiAgICAgICAgICBpZiAoX2kxMSA+PSBfaXRlcmF0b3IxMS5sZW5ndGgpIGJyZWFrOwogICAgICAgICAgX3JlZjEyID0gX2l0ZXJhdG9yMTFbX2kxMSsrXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgX2kxMSA9IF9pdGVyYXRvcjExLm5leHQoKTsKICAgICAgICAgIGlmIChfaTExLmRvbmUpIGJyZWFrOwogICAgICAgICAgX3JlZjEyID0gX2kxMS52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciB0YWJsZSA9IF9yZWYxMjsKCiAgICAgICAgaWYgKHRoaXMuYXBwbHlMb29rdXAobG9va3VwLmxvb2t1cFR5cGUsIHRhYmxlKSkgewogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgdGhpcy5nbHlwaEl0ZXJhdG9yLnJlc2V0KG9wdGlvbnMsIGdseXBoSW5kZXgpOwogICAgcmV0dXJuIHRydWU7CiAgfTsKCiAgT1RQcm9jZXNzb3IucHJvdG90eXBlLmNvdmVyYWdlSW5kZXggPSBmdW5jdGlvbiBjb3ZlcmFnZUluZGV4KGNvdmVyYWdlLCBnbHlwaCkgewogICAgaWYgKGdseXBoID09IG51bGwpIHsKICAgICAgZ2x5cGggPSB0aGlzLmdseXBoSXRlcmF0b3IuY3VyLmlkOwogICAgfQoKICAgIHN3aXRjaCAoY292ZXJhZ2UudmVyc2lvbikgewogICAgICBjYXNlIDE6CiAgICAgICAgcmV0dXJuIGNvdmVyYWdlLmdseXBocy5pbmRleE9mKGdseXBoKTsKCiAgICAgIGNhc2UgMjoKICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IxMiA9IGNvdmVyYWdlLnJhbmdlUmVjb3JkcywgX2lzQXJyYXkxMiA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMTIpLCBfaTEyID0gMCwgX2l0ZXJhdG9yMTIgPSBfaXNBcnJheTEyID8gX2l0ZXJhdG9yMTIgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMTIpOzspIHsKICAgICAgICAgIHZhciBfcmVmMTM7CgogICAgICAgICAgaWYgKF9pc0FycmF5MTIpIHsKICAgICAgICAgICAgaWYgKF9pMTIgPj0gX2l0ZXJhdG9yMTIubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgX3JlZjEzID0gX2l0ZXJhdG9yMTJbX2kxMisrXTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIF9pMTIgPSBfaXRlcmF0b3IxMi5uZXh0KCk7CiAgICAgICAgICAgIGlmIChfaTEyLmRvbmUpIGJyZWFrOwogICAgICAgICAgICBfcmVmMTMgPSBfaTEyLnZhbHVlOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciByYW5nZSA9IF9yZWYxMzsKCiAgICAgICAgICBpZiAocmFuZ2Uuc3RhcnQgPD0gZ2x5cGggJiYgZ2x5cGggPD0gcmFuZ2UuZW5kKSB7CiAgICAgICAgICAgIHJldHVybiByYW5nZS5zdGFydENvdmVyYWdlSW5kZXggKyBnbHlwaCAtIHJhbmdlLnN0YXJ0OwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgYnJlYWs7CiAgICB9CgogICAgcmV0dXJuIC0xOwogIH07CgogIE9UUHJvY2Vzc29yLnByb3RvdHlwZS5tYXRjaCA9IGZ1bmN0aW9uIG1hdGNoKHNlcXVlbmNlSW5kZXgsIHNlcXVlbmNlLCBmbiwgbWF0Y2hlZCkgewogICAgdmFyIHBvcyA9IHRoaXMuZ2x5cGhJdGVyYXRvci5pbmRleDsKICAgIHZhciBnbHlwaCA9IHRoaXMuZ2x5cGhJdGVyYXRvci5pbmNyZW1lbnQoc2VxdWVuY2VJbmRleCk7CiAgICB2YXIgaWR4ID0gMDsKCiAgICB3aGlsZSAoaWR4IDwgc2VxdWVuY2UubGVuZ3RoICYmIGdseXBoICYmIGZuKHNlcXVlbmNlW2lkeF0sIGdseXBoKSkgewogICAgICBpZiAobWF0Y2hlZCkgewogICAgICAgIG1hdGNoZWQucHVzaCh0aGlzLmdseXBoSXRlcmF0b3IuaW5kZXgpOwogICAgICB9CgogICAgICBpZHgrKzsKICAgICAgZ2x5cGggPSB0aGlzLmdseXBoSXRlcmF0b3IubmV4dCgpOwogICAgfQoKICAgIHRoaXMuZ2x5cGhJdGVyYXRvci5pbmRleCA9IHBvczsKICAgIGlmIChpZHggPCBzZXF1ZW5jZS5sZW5ndGgpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHJldHVybiBtYXRjaGVkIHx8IHRydWU7CiAgfTsKCiAgT1RQcm9jZXNzb3IucHJvdG90eXBlLnNlcXVlbmNlTWF0Y2hlcyA9IGZ1bmN0aW9uIHNlcXVlbmNlTWF0Y2hlcyhzZXF1ZW5jZUluZGV4LCBzZXF1ZW5jZSkgewogICAgcmV0dXJuIHRoaXMubWF0Y2goc2VxdWVuY2VJbmRleCwgc2VxdWVuY2UsIGZ1bmN0aW9uIChjb21wb25lbnQsIGdseXBoKSB7CiAgICAgIHJldHVybiBjb21wb25lbnQgPT09IGdseXBoLmlkOwogICAgfSk7CiAgfTsKCiAgT1RQcm9jZXNzb3IucHJvdG90eXBlLnNlcXVlbmNlTWF0Y2hJbmRpY2VzID0gZnVuY3Rpb24gc2VxdWVuY2VNYXRjaEluZGljZXMoc2VxdWVuY2VJbmRleCwgc2VxdWVuY2UpIHsKICAgIHZhciBfdGhpcyA9IHRoaXM7CgogICAgcmV0dXJuIHRoaXMubWF0Y2goc2VxdWVuY2VJbmRleCwgc2VxdWVuY2UsIGZ1bmN0aW9uIChjb21wb25lbnQsIGdseXBoKSB7CiAgICAgIC8vIElmIHRoZSBjdXJyZW50IGZlYXR1cmUgZG9lc24ndCBhcHBseSB0byB0aGlzIGdseXBoLAogICAgICBpZiAoIShfdGhpcy5jdXJyZW50RmVhdHVyZSBpbiBnbHlwaC5mZWF0dXJlcykpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIHJldHVybiBjb21wb25lbnQgPT09IGdseXBoLmlkOwogICAgfSwgW10pOwogIH07CgogIE9UUHJvY2Vzc29yLnByb3RvdHlwZS5jb3ZlcmFnZVNlcXVlbmNlTWF0Y2hlcyA9IGZ1bmN0aW9uIGNvdmVyYWdlU2VxdWVuY2VNYXRjaGVzKHNlcXVlbmNlSW5kZXgsIHNlcXVlbmNlKSB7CiAgICB2YXIgX3RoaXMyID0gdGhpczsKCiAgICByZXR1cm4gdGhpcy5tYXRjaChzZXF1ZW5jZUluZGV4LCBzZXF1ZW5jZSwgZnVuY3Rpb24gKGNvdmVyYWdlLCBnbHlwaCkgewogICAgICByZXR1cm4gX3RoaXMyLmNvdmVyYWdlSW5kZXgoY292ZXJhZ2UsIGdseXBoLmlkKSA+PSAwOwogICAgfSk7CiAgfTsKCiAgT1RQcm9jZXNzb3IucHJvdG90eXBlLmdldENsYXNzSUQgPSBmdW5jdGlvbiBnZXRDbGFzc0lEKGdseXBoLCBjbGFzc0RlZikgewogICAgc3dpdGNoIChjbGFzc0RlZi52ZXJzaW9uKSB7CiAgICAgIGNhc2UgMToKICAgICAgICAvLyBDbGFzcyBhcnJheQogICAgICAgIHZhciBpID0gZ2x5cGggLSBjbGFzc0RlZi5zdGFydEdseXBoOwogICAgICAgIGlmIChpID49IDAgJiYgaSA8IGNsYXNzRGVmLmNsYXNzVmFsdWVBcnJheS5sZW5ndGgpIHsKICAgICAgICAgIHJldHVybiBjbGFzc0RlZi5jbGFzc1ZhbHVlQXJyYXlbaV07CiAgICAgICAgfQoKICAgICAgICBicmVhazsKCiAgICAgIGNhc2UgMjoKICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IxMyA9IGNsYXNzRGVmLmNsYXNzUmFuZ2VSZWNvcmQsIF9pc0FycmF5MTMgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjEzKSwgX2kxMyA9IDAsIF9pdGVyYXRvcjEzID0gX2lzQXJyYXkxMyA/IF9pdGVyYXRvcjEzIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjEzKTs7KSB7CiAgICAgICAgICB2YXIgX3JlZjE0OwoKICAgICAgICAgIGlmIChfaXNBcnJheTEzKSB7CiAgICAgICAgICAgIGlmIChfaTEzID49IF9pdGVyYXRvcjEzLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICAgIF9yZWYxNCA9IF9pdGVyYXRvcjEzW19pMTMrK107CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBfaTEzID0gX2l0ZXJhdG9yMTMubmV4dCgpOwogICAgICAgICAgICBpZiAoX2kxMy5kb25lKSBicmVhazsKICAgICAgICAgICAgX3JlZjE0ID0gX2kxMy52YWx1ZTsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgcmFuZ2UgPSBfcmVmMTQ7CgogICAgICAgICAgaWYgKHJhbmdlLnN0YXJ0IDw9IGdseXBoICYmIGdseXBoIDw9IHJhbmdlLmVuZCkgewogICAgICAgICAgICByZXR1cm4gcmFuZ2UuY2xhc3M7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBicmVhazsKICAgIH0KCiAgICByZXR1cm4gMDsKICB9OwoKICBPVFByb2Nlc3Nvci5wcm90b3R5cGUuY2xhc3NTZXF1ZW5jZU1hdGNoZXMgPSBmdW5jdGlvbiBjbGFzc1NlcXVlbmNlTWF0Y2hlcyhzZXF1ZW5jZUluZGV4LCBzZXF1ZW5jZSwgY2xhc3NEZWYpIHsKICAgIHZhciBfdGhpczMgPSB0aGlzOwoKICAgIHJldHVybiB0aGlzLm1hdGNoKHNlcXVlbmNlSW5kZXgsIHNlcXVlbmNlLCBmdW5jdGlvbiAoY2xhc3NJRCwgZ2x5cGgpIHsKICAgICAgcmV0dXJuIGNsYXNzSUQgPT09IF90aGlzMy5nZXRDbGFzc0lEKGdseXBoLmlkLCBjbGFzc0RlZik7CiAgICB9KTsKICB9OwoKICBPVFByb2Nlc3Nvci5wcm90b3R5cGUuYXBwbHlDb250ZXh0ID0gZnVuY3Rpb24gYXBwbHlDb250ZXh0KHRhYmxlKSB7CiAgICBzd2l0Y2ggKHRhYmxlLnZlcnNpb24pIHsKICAgICAgY2FzZSAxOgogICAgICAgIHZhciBpbmRleCA9IHRoaXMuY292ZXJhZ2VJbmRleCh0YWJsZS5jb3ZlcmFnZSk7CiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgdmFyIHNldCA9IHRhYmxlLnJ1bGVTZXRzW2luZGV4XTsKICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IxNCA9IHNldCwgX2lzQXJyYXkxNCA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMTQpLCBfaTE0ID0gMCwgX2l0ZXJhdG9yMTQgPSBfaXNBcnJheTE0ID8gX2l0ZXJhdG9yMTQgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMTQpOzspIHsKICAgICAgICAgIHZhciBfcmVmMTU7CgogICAgICAgICAgaWYgKF9pc0FycmF5MTQpIHsKICAgICAgICAgICAgaWYgKF9pMTQgPj0gX2l0ZXJhdG9yMTQubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgX3JlZjE1ID0gX2l0ZXJhdG9yMTRbX2kxNCsrXTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIF9pMTQgPSBfaXRlcmF0b3IxNC5uZXh0KCk7CiAgICAgICAgICAgIGlmIChfaTE0LmRvbmUpIGJyZWFrOwogICAgICAgICAgICBfcmVmMTUgPSBfaTE0LnZhbHVlOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBydWxlID0gX3JlZjE1OwoKICAgICAgICAgIGlmICh0aGlzLnNlcXVlbmNlTWF0Y2hlcygxLCBydWxlLmlucHV0KSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5hcHBseUxvb2t1cExpc3QocnVsZS5sb29rdXBSZWNvcmRzKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGJyZWFrOwoKICAgICAgY2FzZSAyOgogICAgICAgIGlmICh0aGlzLmNvdmVyYWdlSW5kZXgodGFibGUuY292ZXJhZ2UpID09PSAtMSkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaW5kZXggPSB0aGlzLmdldENsYXNzSUQodGhpcy5nbHlwaEl0ZXJhdG9yLmN1ci5pZCwgdGFibGUuY2xhc3NEZWYpOwogICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHNldCA9IHRhYmxlLmNsYXNzU2V0W2luZGV4XTsKICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IxNSA9IHNldCwgX2lzQXJyYXkxNSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMTUpLCBfaTE1ID0gMCwgX2l0ZXJhdG9yMTUgPSBfaXNBcnJheTE1ID8gX2l0ZXJhdG9yMTUgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMTUpOzspIHsKICAgICAgICAgIHZhciBfcmVmMTY7CgogICAgICAgICAgaWYgKF9pc0FycmF5MTUpIHsKICAgICAgICAgICAgaWYgKF9pMTUgPj0gX2l0ZXJhdG9yMTUubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgX3JlZjE2ID0gX2l0ZXJhdG9yMTVbX2kxNSsrXTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIF9pMTUgPSBfaXRlcmF0b3IxNS5uZXh0KCk7CiAgICAgICAgICAgIGlmIChfaTE1LmRvbmUpIGJyZWFrOwogICAgICAgICAgICBfcmVmMTYgPSBfaTE1LnZhbHVlOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBfcnVsZSA9IF9yZWYxNjsKCiAgICAgICAgICBpZiAodGhpcy5jbGFzc1NlcXVlbmNlTWF0Y2hlcygxLCBfcnVsZS5jbGFzc2VzLCB0YWJsZS5jbGFzc0RlZikpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlMb29rdXBMaXN0KF9ydWxlLmxvb2t1cFJlY29yZHMpOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgYnJlYWs7CgogICAgICBjYXNlIDM6CiAgICAgICAgaWYgKHRoaXMuY292ZXJhZ2VTZXF1ZW5jZU1hdGNoZXMoMCwgdGFibGUuY292ZXJhZ2VzKSkgewogICAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlMb29rdXBMaXN0KHRhYmxlLmxvb2t1cFJlY29yZHMpOwogICAgICAgIH0KCiAgICAgICAgYnJlYWs7CiAgICB9CgogICAgcmV0dXJuIGZhbHNlOwogIH07CgogIE9UUHJvY2Vzc29yLnByb3RvdHlwZS5hcHBseUNoYWluaW5nQ29udGV4dCA9IGZ1bmN0aW9uIGFwcGx5Q2hhaW5pbmdDb250ZXh0KHRhYmxlKSB7CiAgICBzd2l0Y2ggKHRhYmxlLnZlcnNpb24pIHsKICAgICAgY2FzZSAxOgogICAgICAgIHZhciBpbmRleCA9IHRoaXMuY292ZXJhZ2VJbmRleCh0YWJsZS5jb3ZlcmFnZSk7CiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgdmFyIHNldCA9IHRhYmxlLmNoYWluUnVsZVNldHNbaW5kZXhdOwogICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjE2ID0gc2V0LCBfaXNBcnJheTE2ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IxNiksIF9pMTYgPSAwLCBfaXRlcmF0b3IxNiA9IF9pc0FycmF5MTYgPyBfaXRlcmF0b3IxNiA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IxNik7OykgewogICAgICAgICAgdmFyIF9yZWYxNzsKCiAgICAgICAgICBpZiAoX2lzQXJyYXkxNikgewogICAgICAgICAgICBpZiAoX2kxNiA+PSBfaXRlcmF0b3IxNi5sZW5ndGgpIGJyZWFrOwogICAgICAgICAgICBfcmVmMTcgPSBfaXRlcmF0b3IxNltfaTE2KytdOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgX2kxNiA9IF9pdGVyYXRvcjE2Lm5leHQoKTsKICAgICAgICAgICAgaWYgKF9pMTYuZG9uZSkgYnJlYWs7CiAgICAgICAgICAgIF9yZWYxNyA9IF9pMTYudmFsdWU7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIHJ1bGUgPSBfcmVmMTc7CgogICAgICAgICAgaWYgKHRoaXMuc2VxdWVuY2VNYXRjaGVzKC1ydWxlLmJhY2t0cmFjay5sZW5ndGgsIHJ1bGUuYmFja3RyYWNrKSAmJiB0aGlzLnNlcXVlbmNlTWF0Y2hlcygxLCBydWxlLmlucHV0KSAmJiB0aGlzLnNlcXVlbmNlTWF0Y2hlcygxICsgcnVsZS5pbnB1dC5sZW5ndGgsIHJ1bGUubG9va2FoZWFkKSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5hcHBseUxvb2t1cExpc3QocnVsZS5sb29rdXBSZWNvcmRzKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGJyZWFrOwoKICAgICAgY2FzZSAyOgogICAgICAgIGlmICh0aGlzLmNvdmVyYWdlSW5kZXgodGFibGUuY292ZXJhZ2UpID09PSAtMSkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaW5kZXggPSB0aGlzLmdldENsYXNzSUQodGhpcy5nbHlwaEl0ZXJhdG9yLmN1ci5pZCwgdGFibGUuaW5wdXRDbGFzc0RlZik7CiAgICAgICAgdmFyIHJ1bGVzID0gdGFibGUuY2hhaW5DbGFzc1NldFtpbmRleF07CiAgICAgICAgaWYgKCFydWxlcykgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMTcgPSBydWxlcywgX2lzQXJyYXkxNyA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMTcpLCBfaTE3ID0gMCwgX2l0ZXJhdG9yMTcgPSBfaXNBcnJheTE3ID8gX2l0ZXJhdG9yMTcgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMTcpOzspIHsKICAgICAgICAgIHZhciBfcmVmMTg7CgogICAgICAgICAgaWYgKF9pc0FycmF5MTcpIHsKICAgICAgICAgICAgaWYgKF9pMTcgPj0gX2l0ZXJhdG9yMTcubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgX3JlZjE4ID0gX2l0ZXJhdG9yMTdbX2kxNysrXTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIF9pMTcgPSBfaXRlcmF0b3IxNy5uZXh0KCk7CiAgICAgICAgICAgIGlmIChfaTE3LmRvbmUpIGJyZWFrOwogICAgICAgICAgICBfcmVmMTggPSBfaTE3LnZhbHVlOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBfcnVsZTIgPSBfcmVmMTg7CgogICAgICAgICAgaWYgKHRoaXMuY2xhc3NTZXF1ZW5jZU1hdGNoZXMoLV9ydWxlMi5iYWNrdHJhY2subGVuZ3RoLCBfcnVsZTIuYmFja3RyYWNrLCB0YWJsZS5iYWNrdHJhY2tDbGFzc0RlZikgJiYgdGhpcy5jbGFzc1NlcXVlbmNlTWF0Y2hlcygxLCBfcnVsZTIuaW5wdXQsIHRhYmxlLmlucHV0Q2xhc3NEZWYpICYmIHRoaXMuY2xhc3NTZXF1ZW5jZU1hdGNoZXMoMSArIF9ydWxlMi5pbnB1dC5sZW5ndGgsIF9ydWxlMi5sb29rYWhlYWQsIHRhYmxlLmxvb2thaGVhZENsYXNzRGVmKSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5hcHBseUxvb2t1cExpc3QoX3J1bGUyLmxvb2t1cFJlY29yZHMpOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgYnJlYWs7CgogICAgICBjYXNlIDM6CiAgICAgICAgaWYgKHRoaXMuY292ZXJhZ2VTZXF1ZW5jZU1hdGNoZXMoLXRhYmxlLmJhY2t0cmFja0dseXBoQ291bnQsIHRhYmxlLmJhY2t0cmFja0NvdmVyYWdlKSAmJiB0aGlzLmNvdmVyYWdlU2VxdWVuY2VNYXRjaGVzKDAsIHRhYmxlLmlucHV0Q292ZXJhZ2UpICYmIHRoaXMuY292ZXJhZ2VTZXF1ZW5jZU1hdGNoZXModGFibGUuaW5wdXRHbHlwaENvdW50LCB0YWJsZS5sb29rYWhlYWRDb3ZlcmFnZSkpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmFwcGx5TG9va3VwTGlzdCh0YWJsZS5sb29rdXBSZWNvcmRzKTsKICAgICAgICB9CgogICAgICAgIGJyZWFrOwogICAgfQoKICAgIHJldHVybiBmYWxzZTsKICB9OwoKICByZXR1cm4gT1RQcm9jZXNzb3I7Cn0oKTsKCnZhciBHbHlwaEluZm8gPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gR2x5cGhJbmZvKGZvbnQsIGlkKSB7CiAgICB2YXIgY29kZVBvaW50cyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogW107CiAgICB2YXIgZmVhdHVyZXMgPSBhcmd1bWVudHNbM107CgogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEdseXBoSW5mbyk7CgogICAgdGhpcy5fZm9udCA9IGZvbnQ7CiAgICB0aGlzLmNvZGVQb2ludHMgPSBjb2RlUG9pbnRzOwogICAgdGhpcy5pZCA9IGlkOwoKICAgIHRoaXMuZmVhdHVyZXMgPSB7fTsKICAgIGlmIChBcnJheS5pc0FycmF5KGZlYXR1cmVzKSkgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGZlYXR1cmUgPSBmZWF0dXJlc1tpXTsKICAgICAgICB0aGlzLmZlYXR1cmVzW2ZlYXR1cmVdID0gdHJ1ZTsKICAgICAgfQogICAgfSBlbHNlIGlmICgodHlwZW9mIGZlYXR1cmVzID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihmZWF0dXJlcykpID09PSAnb2JqZWN0JykgewogICAgICBfT2JqZWN0JGFzc2lnbih0aGlzLmZlYXR1cmVzLCBmZWF0dXJlcyk7CiAgICB9CgogICAgdGhpcy5saWdhdHVyZUlEID0gbnVsbDsKICAgIHRoaXMubGlnYXR1cmVDb21wb25lbnQgPSBudWxsOwogICAgdGhpcy5pc0xpZ2F0ZWQgPSBmYWxzZTsKICAgIHRoaXMuY3Vyc2l2ZUF0dGFjaG1lbnQgPSBudWxsOwogICAgdGhpcy5tYXJrQXR0YWNobWVudCA9IG51bGw7CiAgICB0aGlzLnNoYXBlckluZm8gPSBudWxsOwogICAgdGhpcy5zdWJzdGl0dXRlZCA9IGZhbHNlOwogICAgdGhpcy5pc011bHRpcGxpZWQgPSBmYWxzZTsKICB9CgogIEdseXBoSW5mby5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkoKSB7CiAgICByZXR1cm4gbmV3IEdseXBoSW5mbyh0aGlzLl9mb250LCB0aGlzLmlkLCB0aGlzLmNvZGVQb2ludHMsIHRoaXMuZmVhdHVyZXMpOwogIH07CgogIF9jcmVhdGVDbGFzcyhHbHlwaEluZm8sIFt7CiAgICBrZXk6ICdpZCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuX2lkOwogICAgfSwKICAgIHNldDogZnVuY3Rpb24gc2V0KGlkKSB7CiAgICAgIHRoaXMuX2lkID0gaWQ7CiAgICAgIHRoaXMuc3Vic3RpdHV0ZWQgPSB0cnVlOwoKICAgICAgdmFyIEdERUYgPSB0aGlzLl9mb250LkdERUY7CiAgICAgIGlmIChHREVGICYmIEdERUYuZ2x5cGhDbGFzc0RlZikgewogICAgICAgIC8vIFRPRE86IGNsZWFuIHRoaXMgdXAKICAgICAgICB2YXIgY2xhc3NJRCA9IE9UUHJvY2Vzc29yLnByb3RvdHlwZS5nZXRDbGFzc0lEKGlkLCBHREVGLmdseXBoQ2xhc3NEZWYpOwogICAgICAgIHRoaXMuaXNCYXNlID0gY2xhc3NJRCA9PT0gMTsKICAgICAgICB0aGlzLmlzTGlnYXR1cmUgPSBjbGFzc0lEID09PSAyOwogICAgICAgIHRoaXMuaXNNYXJrID0gY2xhc3NJRCA9PT0gMzsKICAgICAgICB0aGlzLm1hcmtBdHRhY2htZW50VHlwZSA9IEdERUYubWFya0F0dGFjaENsYXNzRGVmID8gT1RQcm9jZXNzb3IucHJvdG90eXBlLmdldENsYXNzSUQoaWQsIEdERUYubWFya0F0dGFjaENsYXNzRGVmKSA6IDA7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5pc01hcmsgPSB0aGlzLmNvZGVQb2ludHMuZXZlcnkodW5pY29kZS5pc01hcmspOwogICAgICAgIHRoaXMuaXNCYXNlID0gIXRoaXMuaXNNYXJrOwogICAgICAgIHRoaXMuaXNMaWdhdHVyZSA9IHRoaXMuY29kZVBvaW50cy5sZW5ndGggPiAxOwogICAgICAgIHRoaXMubWFya0F0dGFjaG1lbnRUeXBlID0gMDsKICAgICAgfQogICAgfQogIH1dKTsKCiAgcmV0dXJuIEdseXBoSW5mbzsKfSgpOwoKdmFyIF9jbGFzcyQ1Owp2YXIgX3RlbXAkMTsKLyoqCiAqIFRoaXMgaXMgYSBzaGFwZXIgZm9yIHRoZSBIYW5ndWwgc2NyaXB0LCB1c2VkIGJ5IHRoZSBLb3JlYW4gbGFuZ3VhZ2UuCiAqIEl0IGRvZXMgdGhlIGZvbGxvd2luZzoKICogICAtIGRlY29tcG9zZSBpZiB1bnN1cHBvcnRlZCBieSB0aGUgZm9udDoKICogICAgIDxMVj4gICAtPiA8TCxWPgogKiAgICAgPExWVD4gIC0+IDxMLFYsVD4KICogICAgIDxMVixUPiAtPiA8TCxWLFQ+CiAqCiAqICAgLSBjb21wb3NlIGlmIHN1cHBvcnRlZCBieSB0aGUgZm9udDoKICogICAgIDxMLFY+ICAgLT4gPExWPgogKiAgICAgPEwsVixUPiAtPiA8TFZUPgogKiAgICAgPExWLFQ+ICAtPiA8TFZUPgogKgogKiAgIC0gcmVvcmRlciB0b25lIG1hcmtzIChTIGlzIGFueSB2YWxpZCBzeWxsYWJsZSk6CiAqICAgICA8UywgTT4gLT4gPE0sIFM+CiAqCiAqICAgLSBhcHBseSBsam1vLCB2am1vLCBhbmQgdGptbyBPcGVuVHlwZSBmZWF0dXJlcyB0byBkZWNvbXBvc2VkIEphbW8gc2VxdWVuY2VzLgogKgogKiBUaGlzIGxvZ2ljIGlzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzOgogKiAgIC0gaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvT3BlblR5cGVEZXYvaGFuZ3VsL2ludHJvLmh0bQogKiAgIC0gaHR0cDovL2t0dWcub3JnL35ub21vcy9oYXJmYnV6ei1oYW5ndWwvaGFuZ3Vsc2hhcGVyLnBkZgogKi8KdmFyIEhhbmd1bFNoYXBlciA9IChfdGVtcCQxID0gX2NsYXNzJDUgPSBmdW5jdGlvbiAoX0RlZmF1bHRTaGFwZXIpIHsKICBfaW5oZXJpdHMoSGFuZ3VsU2hhcGVyLCBfRGVmYXVsdFNoYXBlcik7CgogIGZ1bmN0aW9uIEhhbmd1bFNoYXBlcigpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBIYW5ndWxTaGFwZXIpOwoKICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfRGVmYXVsdFNoYXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTsKICB9CgogIEhhbmd1bFNoYXBlci5wbGFuRmVhdHVyZXMgPSBmdW5jdGlvbiBwbGFuRmVhdHVyZXMocGxhbikgewogICAgcGxhbi5hZGQoWydsam1vJywgJ3ZqbW8nLCAndGptbyddLCBmYWxzZSk7CiAgfTsKCiAgSGFuZ3VsU2hhcGVyLmFzc2lnbkZlYXR1cmVzID0gZnVuY3Rpb24gYXNzaWduRmVhdHVyZXMocGxhbiwgZ2x5cGhzKSB7CiAgICB2YXIgc3RhdGUgPSAwOwogICAgdmFyIGkgPSAwOwogICAgd2hpbGUgKGkgPCBnbHlwaHMubGVuZ3RoKSB7CiAgICAgIHZhciBhY3Rpb24gPSB2b2lkIDA7CiAgICAgIHZhciBnbHlwaCA9IGdseXBoc1tpXTsKICAgICAgdmFyIGNvZGUgPSBnbHlwaC5jb2RlUG9pbnRzWzBdOwogICAgICB2YXIgdHlwZSA9IGdldFR5cGUoY29kZSk7CgogICAgICB2YXIgX1NUQVRFX1RBQkxFJHN0YXRlJHR5ID0gU1RBVEVfVEFCTEUkMVtzdGF0ZV1bdHlwZV07CiAgICAgIGFjdGlvbiA9IF9TVEFURV9UQUJMRSRzdGF0ZSR0eVswXTsKICAgICAgc3RhdGUgPSBfU1RBVEVfVEFCTEUkc3RhdGUkdHlbMV07CgoKICAgICAgc3dpdGNoIChhY3Rpb24pIHsKICAgICAgICBjYXNlIERFQ09NUE9TRToKICAgICAgICAgIC8vIERlY29tcG9zZSB0aGUgY29tcG9zZWQgc3lsbGFibGUgaWYgaXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZm9udC4KICAgICAgICAgIGlmICghcGxhbi5mb250Lmhhc0dseXBoRm9yQ29kZVBvaW50KGNvZGUpKSB7CiAgICAgICAgICAgIGkgPSBkZWNvbXBvc2UoZ2x5cGhzLCBpLCBwbGFuLmZvbnQpOwogICAgICAgICAgfQogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgQ09NUE9TRToKICAgICAgICAgIC8vIEZvdW5kIGEgZGVjb21wb3NlZCBzeWxsYWJsZS4gVHJ5IHRvIGNvbXBvc2UgaWYgc3VwcG9ydGVkIGJ5IHRoZSBmb250LgogICAgICAgICAgaSA9IGNvbXBvc2UoZ2x5cGhzLCBpLCBwbGFuLmZvbnQpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgVE9ORV9NQVJLOgogICAgICAgICAgLy8gR290IGEgdmFsaWQgc3lsbGFibGUsIGZvbGxvd2VkIGJ5IGEgdG9uZSBtYXJrLiBNb3ZlIHRoZSB0b25lIG1hcmsgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3lsbGFibGUuCiAgICAgICAgICByZW9yZGVyVG9uZU1hcmsoZ2x5cGhzLCBpLCBwbGFuLmZvbnQpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgSU5WQUxJRDoKICAgICAgICAgIC8vIFRvbmUgbWFyayBoYXMgbm8gdmFsaWQgc3lsbGFibGUgdG8gYXR0YWNoIHRvLCBzbyBpbnNlcnQgYSBkb3R0ZWQgY2lyY2xlCiAgICAgICAgICBpID0gaW5zZXJ0RG90dGVkQ2lyY2xlKGdseXBocywgaSwgcGxhbi5mb250KTsKICAgICAgICAgIGJyZWFrOwogICAgICB9CgogICAgICBpKys7CiAgICB9CiAgfTsKCiAgcmV0dXJuIEhhbmd1bFNoYXBlcjsKfShEZWZhdWx0U2hhcGVyKSwgX2NsYXNzJDUuemVyb01hcmtXaWR0aHMgPSAnTk9ORScsIF90ZW1wJDEpOwp2YXIgSEFOR1VMX0JBU0UgPSAweGFjMDA7CnZhciBIQU5HVUxfRU5EID0gMHhkN2E0Owp2YXIgSEFOR1VMX0NPVU5UID0gSEFOR1VMX0VORCAtIEhBTkdVTF9CQVNFICsgMTsKdmFyIExfQkFTRSA9IDB4MTEwMDsgLy8gbGVhZAp2YXIgVl9CQVNFID0gMHgxMTYxOyAvLyB2b3dlbAp2YXIgVF9CQVNFID0gMHgxMWE3OyAvLyB0cmFpbAp2YXIgTF9DT1VOVCA9IDE5Owp2YXIgVl9DT1VOVCA9IDIxOwp2YXIgVF9DT1VOVCA9IDI4Owp2YXIgTF9FTkQgPSBMX0JBU0UgKyBMX0NPVU5UIC0gMTsKdmFyIFZfRU5EID0gVl9CQVNFICsgVl9DT1VOVCAtIDE7CnZhciBUX0VORCA9IFRfQkFTRSArIFRfQ09VTlQgLSAxOwp2YXIgRE9UVEVEX0NJUkNMRSA9IDB4MjVjYzsKCnZhciBpc0wgPSBmdW5jdGlvbiBpc0woY29kZSkgewogIHJldHVybiAweDExMDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTE1ZiB8fCAweGE5NjAgPD0gY29kZSAmJiBjb2RlIDw9IDB4YTk3YzsKfTsKdmFyIGlzViA9IGZ1bmN0aW9uIGlzVihjb2RlKSB7CiAgcmV0dXJuIDB4MTE2MCA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMWE3IHx8IDB4ZDdiMCA8PSBjb2RlICYmIGNvZGUgPD0gMHhkN2M2Owp9Owp2YXIgaXNUID0gZnVuY3Rpb24gaXNUKGNvZGUpIHsKICByZXR1cm4gMHgxMWE4IDw9IGNvZGUgJiYgY29kZSA8PSAweDExZmYgfHwgMHhkN2NiIDw9IGNvZGUgJiYgY29kZSA8PSAweGQ3ZmI7Cn07CnZhciBpc1RvbmUgPSBmdW5jdGlvbiBpc1RvbmUoY29kZSkgewogIHJldHVybiAweDMwMmUgPD0gY29kZSAmJiBjb2RlIDw9IDB4MzAyZjsKfTsKdmFyIGlzTFZUID0gZnVuY3Rpb24gaXNMVlQoY29kZSkgewogIHJldHVybiBIQU5HVUxfQkFTRSA8PSBjb2RlICYmIGNvZGUgPD0gSEFOR1VMX0VORDsKfTsKdmFyIGlzTFYgPSBmdW5jdGlvbiBpc0xWKGNvZGUpIHsKICByZXR1cm4gY29kZSAtIEhBTkdVTF9CQVNFIDwgSEFOR1VMX0NPVU5UICYmIChjb2RlIC0gSEFOR1VMX0JBU0UpICUgVF9DT1VOVCA9PT0gMDsKfTsKdmFyIGlzQ29tYmluaW5nTCA9IGZ1bmN0aW9uIGlzQ29tYmluaW5nTChjb2RlKSB7CiAgcmV0dXJuIExfQkFTRSA8PSBjb2RlICYmIGNvZGUgPD0gTF9FTkQ7Cn07CnZhciBpc0NvbWJpbmluZ1YgPSBmdW5jdGlvbiBpc0NvbWJpbmluZ1YoY29kZSkgewogIHJldHVybiBWX0JBU0UgPD0gY29kZSAmJiBjb2RlIDw9IFZfRU5EOwp9Owp2YXIgaXNDb21iaW5pbmdUID0gZnVuY3Rpb24gaXNDb21iaW5pbmdUKGNvZGUpIHsKICByZXR1cm4gVF9CQVNFICsgMSAmJiAxIDw9IGNvZGUgJiYgY29kZSA8PSBUX0VORDsKfTsKCi8vIENoYXJhY3RlciBjYXRlZ29yaWVzCnZhciBYID0gMDsgLy8gT3RoZXIgY2hhcmFjdGVyCnZhciBMID0gMTsgLy8gTGVhZGluZyBjb25zb25hbnQKdmFyIFYgPSAyOyAvLyBNZWRpYWwgdm93ZWwKdmFyIFQgPSAzOyAvLyBUcmFpbGluZyBjb25zb25hbnQKdmFyIExWID0gNDsgLy8gQ29tcG9zZWQgPExWPiBzeWxsYWJsZQp2YXIgTFZUID0gNTsgLy8gQ29tcG9zZWQgPExWVD4gc3lsbGFibGUKdmFyIE0gPSA2OyAvLyBUb25lIG1hcmsKCi8vIFRoaXMgZnVuY3Rpb24gY2xhc3NpZmllcyBhIGNoYXJhY3RlciB1c2luZyB0aGUgYWJvdmUgY2F0ZWdvcmllcy4KZnVuY3Rpb24gZ2V0VHlwZShjb2RlKSB7CiAgaWYgKGlzTChjb2RlKSkgewogICAgcmV0dXJuIEw7CiAgfQogIGlmIChpc1YoY29kZSkpIHsKICAgIHJldHVybiBWOwogIH0KICBpZiAoaXNUKGNvZGUpKSB7CiAgICByZXR1cm4gVDsKICB9CiAgaWYgKGlzTFYoY29kZSkpIHsKICAgIHJldHVybiBMVjsKICB9CiAgaWYgKGlzTFZUKGNvZGUpKSB7CiAgICByZXR1cm4gTFZUOwogIH0KICBpZiAoaXNUb25lKGNvZGUpKSB7CiAgICByZXR1cm4gTTsKICB9CiAgcmV0dXJuIFg7Cn0KCi8vIFN0YXRlIG1hY2hpbmUgYWN0aW9ucwp2YXIgTk9fQUNUSU9OID0gMDsKdmFyIERFQ09NUE9TRSA9IDE7CnZhciBDT01QT1NFID0gMjsKdmFyIFRPTkVfTUFSSyA9IDQ7CnZhciBJTlZBTElEID0gNTsKCi8vIEJ1aWxkIGEgc3RhdGUgbWFjaGluZSB0aGF0IGFjY2VwdHMgdmFsaWQgc3lsbGFibGVzLCBhbmQgYXBwbGllcyBhY3Rpb25zIGFsb25nIHRoZSB3YXkuCi8vIFRoZSBsb2dpYyB0aGlzIGlzIGltcGxlbWVudGluZyBpcyBkb2N1bWVudGVkIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUuCnZhciBTVEFURV9UQUJMRSQxID0gWwovLyAgICAgICBYICAgICAgICAgICAgICAgICBMICAgICAgICAgICAgICAgICBWICAgICAgICAgICAgICAgIFQgICAgICAgICAgICAgICAgICBMViAgICAgICAgICAgICAgICBMVlQgICAgICAgICAgICAgICBNCi8vIFN0YXRlIDA6IHN0YXJ0IHN0YXRlCltbTk9fQUNUSU9OLCAwXSwgW05PX0FDVElPTiwgMV0sIFtOT19BQ1RJT04sIDBdLCBbTk9fQUNUSU9OLCAwXSwgW0RFQ09NUE9TRSwgMl0sIFtERUNPTVBPU0UsIDNdLCBbSU5WQUxJRCwgMF1dLAoKLy8gU3RhdGUgMTogPEw+CltbTk9fQUNUSU9OLCAwXSwgW05PX0FDVElPTiwgMV0sIFtDT01QT1NFLCAyXSwgW05PX0FDVElPTiwgMF0sIFtERUNPTVBPU0UsIDJdLCBbREVDT01QT1NFLCAzXSwgW0lOVkFMSUQsIDBdXSwKCi8vIFN0YXRlIDI6IDxMLFY+IG9yIDxMVj4KW1tOT19BQ1RJT04sIDBdLCBbTk9fQUNUSU9OLCAxXSwgW05PX0FDVElPTiwgMF0sIFtDT01QT1NFLCAzXSwgW0RFQ09NUE9TRSwgMl0sIFtERUNPTVBPU0UsIDNdLCBbVE9ORV9NQVJLLCAwXV0sCgovLyBTdGF0ZSAzOiA8TCxWLFQ+IG9yIDxMVlQ+CltbTk9fQUNUSU9OLCAwXSwgW05PX0FDVElPTiwgMV0sIFtOT19BQ1RJT04sIDBdLCBbTk9fQUNUSU9OLCAwXSwgW0RFQ09NUE9TRSwgMl0sIFtERUNPTVBPU0UsIDNdLCBbVE9ORV9NQVJLLCAwXV1dOwoKZnVuY3Rpb24gZ2V0R2x5cGgoZm9udCwgY29kZSwgZmVhdHVyZXMpIHsKICByZXR1cm4gbmV3IEdseXBoSW5mbyhmb250LCBmb250LmdseXBoRm9yQ29kZVBvaW50KGNvZGUpLmlkLCBbY29kZV0sIGZlYXR1cmVzKTsKfQoKZnVuY3Rpb24gZGVjb21wb3NlKGdseXBocywgaSwgZm9udCkgewogIHZhciBnbHlwaCA9IGdseXBoc1tpXTsKICB2YXIgY29kZSA9IGdseXBoLmNvZGVQb2ludHNbMF07CgogIHZhciBzID0gY29kZSAtIEhBTkdVTF9CQVNFOwogIHZhciB0ID0gVF9CQVNFICsgcyAlIFRfQ09VTlQ7CiAgcyA9IHMgLyBUX0NPVU5UIHwgMDsKICB2YXIgbCA9IExfQkFTRSArIHMgLyBWX0NPVU5UIHwgMDsKICB2YXIgdiA9IFZfQkFTRSArIHMgJSBWX0NPVU5UOwoKICAvLyBEb24ndCBkZWNvbXBvc2UgaWYgYWxsIG9mIHRoZSBjb21wb25lbnRzIGFyZSBub3QgYXZhaWxhYmxlCiAgaWYgKCFmb250Lmhhc0dseXBoRm9yQ29kZVBvaW50KGwpIHx8ICFmb250Lmhhc0dseXBoRm9yQ29kZVBvaW50KHYpIHx8IHQgIT09IFRfQkFTRSAmJiAhZm9udC5oYXNHbHlwaEZvckNvZGVQb2ludCh0KSkgewogICAgcmV0dXJuIGk7CiAgfQoKICAvLyBSZXBsYWNlIHRoZSBjdXJyZW50IGdseXBoIHdpdGggZGVjb21wb3NlZCBMLCBWLCBhbmQgVCBnbHlwaHMsCiAgLy8gYW5kIGFwcGx5IHRoZSBwcm9wZXIgT3BlblR5cGUgZmVhdHVyZXMgdG8gZWFjaCBjb21wb25lbnQuCiAgdmFyIGxqbW8gPSBnZXRHbHlwaChmb250LCBsLCBnbHlwaC5mZWF0dXJlcyk7CiAgbGptby5mZWF0dXJlcy5sam1vID0gdHJ1ZTsKCiAgdmFyIHZqbW8gPSBnZXRHbHlwaChmb250LCB2LCBnbHlwaC5mZWF0dXJlcyk7CiAgdmptby5mZWF0dXJlcy52am1vID0gdHJ1ZTsKCiAgdmFyIGluc2VydCA9IFtsam1vLCB2am1vXTsKCiAgaWYgKHQgPiBUX0JBU0UpIHsKICAgIHZhciB0am1vID0gZ2V0R2x5cGgoZm9udCwgdCwgZ2x5cGguZmVhdHVyZXMpOwogICAgdGptby5mZWF0dXJlcy50am1vID0gdHJ1ZTsKICAgIGluc2VydC5wdXNoKHRqbW8pOwogIH0KCiAgZ2x5cGhzLnNwbGljZS5hcHBseShnbHlwaHMsIFtpLCAxXS5jb25jYXQoaW5zZXJ0KSk7CiAgcmV0dXJuIGkgKyBpbnNlcnQubGVuZ3RoIC0gMTsKfQoKZnVuY3Rpb24gY29tcG9zZShnbHlwaHMsIGksIGZvbnQpIHsKICB2YXIgZ2x5cGggPSBnbHlwaHNbaV07CiAgdmFyIGNvZGUgPSBnbHlwaHNbaV0uY29kZVBvaW50c1swXTsKICB2YXIgdHlwZSA9IGdldFR5cGUoY29kZSk7CgogIHZhciBwcmV2ID0gZ2x5cGhzW2kgLSAxXS5jb2RlUG9pbnRzWzBdOwogIHZhciBwcmV2VHlwZSA9IGdldFR5cGUocHJldik7CgogIC8vIEZpZ3VyZSBvdXQgd2hhdCB0eXBlIG9mIHN5bGxhYmxlIHdlJ3JlIGRlYWxpbmcgd2l0aAogIHZhciBsdiA9IHZvaWQgMCwKICAgICAgbGptbyA9IHZvaWQgMCwKICAgICAgdmptbyA9IHZvaWQgMCwKICAgICAgdGptbyA9IHZvaWQgMDsKICBpZiAocHJldlR5cGUgPT09IExWICYmIHR5cGUgPT09IFQpIHsKICAgIC8vIDxMVixUPgogICAgbHYgPSBwcmV2OwogICAgdGptbyA9IGdseXBoOwogIH0gZWxzZSB7CiAgICBpZiAodHlwZSA9PT0gVikgewogICAgICAvLyA8TCxWPgogICAgICBsam1vID0gZ2x5cGhzW2kgLSAxXTsKICAgICAgdmptbyA9IGdseXBoOwogICAgfSBlbHNlIHsKICAgICAgLy8gPEwsVixUPgogICAgICBsam1vID0gZ2x5cGhzW2kgLSAyXTsKICAgICAgdmptbyA9IGdseXBoc1tpIC0gMV07CiAgICAgIHRqbW8gPSBnbHlwaDsKICAgIH0KCiAgICB2YXIgbCA9IGxqbW8uY29kZVBvaW50c1swXTsKICAgIHZhciB2ID0gdmptby5jb2RlUG9pbnRzWzBdOwoKICAgIC8vIE1ha2Ugc3VyZSBMIGFuZCBWIGFyZSBjb21iaW5pbmcgY2hhcmFjdGVycwogICAgaWYgKGlzQ29tYmluaW5nTChsKSAmJiBpc0NvbWJpbmluZ1YodikpIHsKICAgICAgbHYgPSBIQU5HVUxfQkFTRSArICgobCAtIExfQkFTRSkgKiBWX0NPVU5UICsgKHYgLSBWX0JBU0UpKSAqIFRfQ09VTlQ7CiAgICB9CiAgfQoKICB2YXIgdCA9IHRqbW8gJiYgdGptby5jb2RlUG9pbnRzWzBdIHx8IFRfQkFTRTsKICBpZiAobHYgIT0gbnVsbCAmJiAodCA9PT0gVF9CQVNFIHx8IGlzQ29tYmluaW5nVCh0KSkpIHsKICAgIHZhciBzID0gbHYgKyAodCAtIFRfQkFTRSk7CgogICAgLy8gUmVwbGFjZSB3aXRoIGEgY29tcG9zZWQgZ2x5cGggaWYgc3VwcG9ydGVkIGJ5IHRoZSBmb250LAogICAgLy8gb3RoZXJ3aXNlIGFwcGx5IHRoZSBwcm9wZXIgT3BlblR5cGUgZmVhdHVyZXMgdG8gZWFjaCBjb21wb25lbnQuCiAgICBpZiAoZm9udC5oYXNHbHlwaEZvckNvZGVQb2ludChzKSkgewogICAgICB2YXIgZGVsID0gcHJldlR5cGUgPT09IFYgPyAzIDogMjsKICAgICAgZ2x5cGhzLnNwbGljZShpIC0gZGVsICsgMSwgZGVsLCBnZXRHbHlwaChmb250LCBzLCBnbHlwaC5mZWF0dXJlcykpOwogICAgICByZXR1cm4gaSAtIGRlbCArIDE7CiAgICB9CiAgfQoKICAvLyBEaWRuJ3QgY29tcG9zZSAoZWl0aGVyIGEgbm9uLWNvbWJpbmluZyBjb21wb25lbnQgb3IgdW5zdXBwb3J0ZWQgYnkgZm9udCkuCiAgaWYgKGxqbW8pIHsKICAgIGxqbW8uZmVhdHVyZXMubGptbyA9IHRydWU7CiAgfQogIGlmICh2am1vKSB7CiAgICB2am1vLmZlYXR1cmVzLnZqbW8gPSB0cnVlOwogIH0KICBpZiAodGptbykgewogICAgdGptby5mZWF0dXJlcy50am1vID0gdHJ1ZTsKICB9CgogIGlmIChwcmV2VHlwZSA9PT0gTFYpIHsKICAgIC8vIFNlcXVlbmNlIHdhcyBvcmlnaW5hbGx5IDxMLFY+LCB3aGljaCBnb3QgY29tYmluZWQgZWFybGllci4KICAgIC8vIEVpdGhlciB0aGUgVCB3YXMgbm9uLWNvbWJpbmluZywgb3IgdGhlIExWVCBnbHlwaCB3YXNuJ3Qgc3VwcG9ydGVkLgogICAgLy8gRGVjb21wb3NlIHRoZSBnbHlwaCBhZ2FpbiBhbmQgYXBwbHkgT1QgZmVhdHVyZXMuCiAgICBkZWNvbXBvc2UoZ2x5cGhzLCBpIC0gMSwgZm9udCk7CiAgICByZXR1cm4gaSArIDE7CiAgfQoKICByZXR1cm4gaTsKfQoKZnVuY3Rpb24gZ2V0TGVuZ3RoKGNvZGUpIHsKICBzd2l0Y2ggKGdldFR5cGUoY29kZSkpIHsKICAgIGNhc2UgTFY6CiAgICBjYXNlIExWVDoKICAgICAgcmV0dXJuIDE7CiAgICBjYXNlIFY6CiAgICAgIHJldHVybiAyOwogICAgY2FzZSBUOgogICAgICByZXR1cm4gMzsKICB9Cn0KCmZ1bmN0aW9uIHJlb3JkZXJUb25lTWFyayhnbHlwaHMsIGksIGZvbnQpIHsKICB2YXIgZ2x5cGggPSBnbHlwaHNbaV07CiAgdmFyIGNvZGUgPSBnbHlwaHNbaV0uY29kZVBvaW50c1swXTsKCiAgLy8gTW92ZSB0b25lIG1hcmsgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgcHJldmlvdXMgc3lsbGFibGUsIHVubGVzcyBpdCBpcyB6ZXJvIHdpZHRoCiAgaWYgKGZvbnQuZ2x5cGhGb3JDb2RlUG9pbnQoY29kZSkuYWR2YW5jZVdpZHRoID09PSAwKSB7CiAgICByZXR1cm47CiAgfQoKICB2YXIgcHJldiA9IGdseXBoc1tpIC0gMV0uY29kZVBvaW50c1swXTsKICB2YXIgbGVuID0gZ2V0TGVuZ3RoKHByZXYpOwoKICBnbHlwaHMuc3BsaWNlKGksIDEpOwogIHJldHVybiBnbHlwaHMuc3BsaWNlKGkgLSBsZW4sIDAsIGdseXBoKTsKfQoKZnVuY3Rpb24gaW5zZXJ0RG90dGVkQ2lyY2xlKGdseXBocywgaSwgZm9udCkgewogIHZhciBnbHlwaCA9IGdseXBoc1tpXTsKICB2YXIgY29kZSA9IGdseXBoc1tpXS5jb2RlUG9pbnRzWzBdOwoKICBpZiAoZm9udC5oYXNHbHlwaEZvckNvZGVQb2ludChET1RURURfQ0lSQ0xFKSkgewogICAgdmFyIGRvdHRlZENpcmNsZSA9IGdldEdseXBoKGZvbnQsIERPVFRFRF9DSVJDTEUsIGdseXBoLmZlYXR1cmVzKTsKCiAgICAvLyBJZiB0aGUgdG9uZSBtYXJrIGlzIHplcm8gd2lkdGgsIGluc2VydCB0aGUgZG90dGVkIGNpcmNsZSBiZWZvcmUsIG90aGVyd2lzZSBhZnRlcgogICAgdmFyIGlkeCA9IGZvbnQuZ2x5cGhGb3JDb2RlUG9pbnQoY29kZSkuYWR2YW5jZVdpZHRoID09PSAwID8gaSA6IGkgKyAxOwogICAgZ2x5cGhzLnNwbGljZShpZHgsIDAsIGRvdHRlZENpcmNsZSk7CiAgICBpKys7CiAgfQoKICByZXR1cm4gaTsKfQoKdmFyIHN0YXRlVGFibGUgPSBbWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMCwgMTAsIDExLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxN10sIFswLCAwLCAwLCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMjUsIDI2LCAwLCAwLCAyNywgMF0sIFswLCAwLCAwLCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMzUsIDM2LCAwLCAwLCAzNywgMF0sIFswLCAwLCAwLCAzOCwgNSwgNywgNywgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDEzLCAwLCAwLCAxNiwgMF0sIFswLCAzOSwgMCwgMCwgMCwgNDAsIDQxLCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDM5LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDQzLCA0NCwgNDQsIDgsIDksIDAsIDAsIDAsIDAsIDEyLCA0MywgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA0MywgNDQsIDQ0LCA4LCA5LCAwLCAwLCAwLCAwLCAwLCA0MywgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0NSwgNDYsIDQ3LCA0OCwgNDksIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA1MCwgMCwgMCwgNTEsIDAsIDEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDAsIDU5LCAwLCAwLCA2MCwgNjEsIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDQsIDUsIDcsIDcsIDgsIDksIDAsIDEwLCAwLCAwLCAwLCAxMywgMCwgMCwgMTYsIDBdLCBbMCwgNjMsIDY0LCAwLCAwLCA0MCwgNDEsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgNjMsIDAsIDBdLCBbMCwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMCwgMTAsIDExLCAxMSwgMTIsIDEzLCAwLCAyLCAxNiwgMF0sIFswLCAwLCAwLCAxOCwgNjUsIDIwLCAyMSwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMjUsIDI2LCAwLCAwLCAyNywgMF0sIFswLCAwLCAwLCAwLCA2NiwgNjcsIDY3LCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgNjgsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNjksIDAsIDcwLCA3MCwgMCwgNzEsIDAsIDcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDczLCAxOSwgNzQsIDc0LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCAyNiwgMCwgMCwgMjcsIDBdLCBbMCwgNzUsIDAsIDAsIDAsIDc2LCA3NywgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgNzUsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNzksIDgwLCA4MCwgMjIsIDIzLCAwLCAwLCAwLCAwLCAyNSwgNzksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTgsIDE5LCAyMCwgNzQsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDI1LCAyNiwgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgODEsIDgyLCA4MywgODQsIDg1LCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDg2LCAwLCAwLCA4NywgMCwgMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTgsIDE5LCA3NCwgNzQsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDI2LCAwLCAwLCAyNywgMF0sIFswLCA4OSwgOTAsIDAsIDAsIDc2LCA3NywgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgODksIDAsIDBdLCBbMCwgMCwgMCwgMCwgOTEsIDkyLCA5MiwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMCwgOTMsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgOTQsIDI5LCA5NSwgMzEsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDAsIDM2LCAwLCAwLCAzNywgMF0sIFswLCA5NiwgMCwgMCwgMCwgOTcsIDk4LCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCA5NiwgMCwgMF0sIFswLCAwLCAwLCAwLCAxMDAsIDEwMSwgMTAxLCAzMiwgMzMsIDAsIDAsIDAsIDAsIDM1LCAxMDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMTAwLCAxMDEsIDEwMSwgMzIsIDMzLCAwLCAwLCAwLCAwLCAwLCAxMDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTA3LCAwLCAwLCAxMDgsIDAsIDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAyOCwgMjksIDk1LCAzMSwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMCwgMzYsIDAsIDAsIDM3LCAwXSwgWzAsIDExMCwgMTExLCAwLCAwLCA5NywgOTgsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDExMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAxMTIsIDExMywgMTEzLCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCAxMTQsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNSwgNywgNywgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDEzLCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAxMTUsIDExNiwgMTE3LCAxMTgsIDgsIDksIDAsIDEwLCAwLCAwLCAxMTksIDEyMCwgMCwgMCwgMTYsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTIxLCAxMjEsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgMCwgMCwgMF0sIFswLCAzOSwgMCwgMTIyLCAwLCAxMjMsIDEyMywgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCAzOSwgMCwgMF0sIFswLCAxMjQsIDY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQsIDAsIDBdLCBbMCwgMzksIDAsIDAsIDAsIDEyMSwgMTI1LCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDM5LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDEyNiwgMTI2LCA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDQ2LCA0NywgNDgsIDQ5LCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0OSwgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDEyNywgMTI3LCA0OSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAxMjgsIDEyNywgMTI3LCA0OSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAxMjksIDEzMCwgMTMxLCAxMzIsIDEzMywgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDUwLCAwLCAwLCAwLCAwLCAxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTM1LCA1NCwgNTYsIDU2LCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCA2MSwgMCwgMCwgNjIsIDBdLCBbMCwgMTM2LCAwLCAwLCAwLCAxMzcsIDEzOCwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDEzNiwgMCwgMF0sIFswLCAwLCAwLCAwLCAxNDAsIDE0MSwgMTQxLCA1NywgNTgsIDAsIDAsIDAsIDAsIDYwLCAxNDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMTQwLCAxNDEsIDE0MSwgNTcsIDU4LCAwLCAwLCAwLCAwLCAwLCAxNDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTQyLCAxNDMsIDE0NCwgMTQ1LCAxNDYsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDE0NywgMCwgMCwgMTQ4LCAwLCA1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTMsIDU0LCA1NiwgNTYsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDYxLCAwLCAwLCA2MiwgMF0sIFswLCAxNTAsIDE1MSwgMCwgMCwgMTM3LCAxMzgsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAxNTAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMTUyLCAxNTMsIDE1MywgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTU0LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDE1NSwgMTE2LCAxNTYsIDE1NywgOCwgOSwgMCwgMTAsIDAsIDAsIDE1OCwgMTIwLCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCAwLCAxMjEsIDEyMSwgMCwgOSwgMCwgMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgNzUsIDMsIDQsIDUsIDE1OSwgMTYwLCA4LCAxNjEsIDAsIDE2MiwgMCwgMTEsIDEyLCAxNjMsIDAsIDc1LCAxNiwgMF0sIFswLCAwLCAwLCAwLCAwLCA0MCwgMTY0LCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMTY1LCA0NCwgNDQsIDgsIDksIDAsIDAsIDAsIDAsIDAsIDE2NSwgMCwgMCwgMCwgMF0sIFswLCAxMjQsIDY0LCAwLCAwLCA0MCwgMTY0LCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDEyNCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA3MCwgNzAsIDAsIDcxLCAwLCA3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAxNjYsIDAsIDAsIDE2NywgMCwgNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDE5LCA3NCwgNzQsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDI2LCAwLCAwLCAyNywgMF0sIFswLCAwLCAwLCAwLCA3OSwgODAsIDgwLCAyMiwgMjMsIDAsIDAsIDAsIDAsIDAsIDc5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDE2OSwgMTcwLCAxNzEsIDE3MiwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMTczLCAxNzQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDAsIDAsIDE3NSwgMTc1LCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAwLCAwLCAwXSwgWzAsIDc1LCAwLCAxNzYsIDAsIDE3NywgMTc3LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgNzUsIDAsIDBdLCBbMCwgMTc4LCA5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc4LCAwLCAwXSwgWzAsIDc1LCAwLCAwLCAwLCAxNzUsIDE3OSwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgNzUsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTgwLCAxODAsIDIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDgyLCA4MywgODQsIDg1LCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDgzLCA4MywgODUsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTgxLCAxODEsIDg1LCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAxODIsIDE4MSwgMTgxLCA4NSwgMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTgzLCAxODQsIDE4NSwgMTg2LCAxODcsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgODYsIDAsIDAsIDAsIDAsIDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAxODksIDE3MCwgMTkwLCAxOTEsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDE5MiwgMTc0LCAwLCAwLCAyNywgMF0sIFswLCAwLCAwLCAwLCAwLCAxNzUsIDE3NSwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDc2LCAxOTMsIDAsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMTk0LCA4MCwgODAsIDIyLCAyMywgMCwgMCwgMCwgMCwgMCwgMTk0LCAwLCAwLCAwLCAwXSwgWzAsIDE3OCwgOTAsIDAsIDAsIDc2LCAxOTMsIDAsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDE3OCwgMCwgMF0sIFswLCAwLCAwLCAwLCAyOSwgOTUsIDMxLCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCAzNiwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMCwgMTAwLCAxMDEsIDEwMSwgMzIsIDMzLCAwLCAwLCAwLCAwLCAwLCAxMDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTk1LCAxOTYsIDE5NywgMTk4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAxOTksIDIwMCwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjAxLCAyMDEsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDAsIDAsIDBdLCBbMCwgOTYsIDAsIDIwMiwgMCwgMjAzLCAyMDMsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCA5NiwgMCwgMF0sIFswLCAyMDQsIDExMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjA0LCAwLCAwXSwgWzAsIDk2LCAwLCAwLCAwLCAyMDEsIDIwNSwgMCwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgOTYsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjA2LCAyMDYsIDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDEwMywgMTA0LCAxMDUsIDEwNiwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAxMDQsIDEwNCwgMTA2LCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDIwNywgMjA3LCAxMDYsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDIwOCwgMjA3LCAyMDcsIDEwNiwgMzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjA5LCAyMTAsIDIxMSwgMjEyLCAyMTMsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTA3LCAwLCAwLCAwLCAwLCAzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjE1LCAxOTYsIDIxNiwgMjE3LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAyMTgsIDIwMCwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjAxLCAyMDEsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA5NywgMjE5LCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDIyMCwgMTAxLCAxMDEsIDMyLCAzMywgMCwgMCwgMCwgMCwgMCwgMjIwLCAwLCAwLCAwLCAwXSwgWzAsIDIwNCwgMTExLCAwLCAwLCA5NywgMjE5LCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCAyMDQsIDAsIDBdLCBbMCwgMCwgMCwgMjIxLCAxMTYsIDIyMiwgMjIyLCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgMTIwLCAwLCAwLCAxNiwgMF0sIFswLCAyMjMsIDAsIDAsIDAsIDQwLCAyMjQsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgMjIzLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDIyNSwgNDQsIDQ0LCA4LCA5LCAwLCAwLCAwLCAwLCAxMTksIDIyNSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAxMTUsIDExNiwgMTE3LCAyMjIsIDgsIDksIDAsIDEwLCAwLCAwLCAxMTksIDEyMCwgMCwgMCwgMTYsIDBdLCBbMCwgMCwgMCwgMTE1LCAxMTYsIDIyMiwgMjIyLCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgMTIwLCAwLCAwLCAxNiwgMF0sIFswLCAyMjYsIDY0LCAwLCAwLCA0MCwgMjI0LCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDIyNiwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDM5LCAwLCAwLCAwLCAxMjEsIDEyMSwgMCwgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCAzOSwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDgsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjI3LCAwLCAyMjgsIDIyOSwgMCwgOSwgMCwgMTAsIDAsIDAsIDIzMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAzOSwgMCwgMTIyLCAwLCAxMjEsIDEyMSwgMCwgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCAzOSwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDIzMSwgMjMxLCA0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAyMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMTMwLCAxMzEsIDEzMiwgMTMzLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMywgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDIzMywgMjMzLCAxMzMsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMjM0LCAyMzMsIDIzMywgMTMzLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDIzNSwgMjM2LCAyMzcsIDIzOCwgMjM5LCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA1NCwgNTYsIDU2LCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCA2MSwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgMjQwLCAyNDEsIDI0MiwgMjQzLCA1NywgNTgsIDAsIDU5LCAwLCAwLCAyNDQsIDI0NSwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjQ2LCAyNDYsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwXSwgWzAsIDEzNiwgMCwgMjQ3LCAwLCAyNDgsIDI0OCwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAxMzYsIDAsIDBdLCBbMCwgMjQ5LCAxNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0OSwgMCwgMF0sIFswLCAxMzYsIDAsIDAsIDAsIDI0NiwgMjUwLCAwLCA1OCwgMCwgNTksIDAsIDAsIDAsIDEzOSwgMCwgMTM2LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI1MSwgMjUxLCA1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAxNDMsIDE0NCwgMTQ1LCAxNDYsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDYsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI1MiwgMjUyLCAxNDYsIDU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDI1MywgMjUyLCAyNTIsIDE0NiwgNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjU0LCAyNTUsIDI1NiwgMjU3LCAyNTgsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDE0NywgMCwgMCwgMCwgMCwgNTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDI2MCwgMjQxLCAyNjEsIDI2MiwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMjYzLCAyNDUsIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI0NiwgMjQ2LCAwLCA1OCwgMCwgNTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTM3LCAyNjQsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDI2NSwgMTQxLCAxNDEsIDU3LCA1OCwgMCwgMCwgMCwgMCwgMCwgMjY1LCAwLCAwLCAwLCAwXSwgWzAsIDI0OSwgMTUxLCAwLCAwLCAxMzcsIDI2NCwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDI0OSwgMCwgMF0sIFswLCAwLCAwLCAyMjEsIDExNiwgMjIyLCAyMjIsIDgsIDksIDAsIDEwLCAwLCAwLCAwLCAxMjAsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDAsIDIyNSwgNDQsIDQ0LCA4LCA5LCAwLCAwLCAwLCAwLCAxNTgsIDIyNSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAxNTUsIDExNiwgMTU2LCAyMjIsIDgsIDksIDAsIDEwLCAwLCAwLCAxNTgsIDEyMCwgMCwgMCwgMTYsIDBdLCBbMCwgMCwgMCwgMTU1LCAxMTYsIDIyMiwgMjIyLCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgMTIwLCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCA0MywgMjY2LCAyNjYsIDgsIDE2MSwgMCwgMjQsIDAsIDAsIDEyLCAyNjcsIDAsIDAsIDAsIDBdLCBbMCwgNzUsIDAsIDE3NiwgNDMsIDI2OCwgMjY4LCAyNjksIDE2MSwgMCwgMjQsIDAsIDAsIDAsIDI2NywgMCwgNzUsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjcwLCAwLCAwLCAyNzEsIDAsIDE2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMjczLCAyNzQsIDAsIDAsIDQwLCA0MSwgMCwgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCAyNzMsIDAsIDBdLCBbMCwgMCwgMCwgNDAsIDAsIDEyMywgMTIzLCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTIxLCAyNzUsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAxNjYsIDAsIDAsIDAsIDAsIDcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAyNzcsIDE3MCwgMjc4LCAyNzgsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDE3NCwgMCwgMCwgMjcsIDBdLCBbMCwgMjc5LCAwLCAwLCAwLCA3NiwgMjgwLCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAyNzksIDAsIDBdLCBbMCwgMCwgMCwgMCwgMjgxLCA4MCwgODAsIDIyLCAyMywgMCwgMCwgMCwgMCwgMTczLCAyODEsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTY5LCAxNzAsIDE3MSwgMjc4LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAxNzMsIDE3NCwgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgMTY5LCAxNzAsIDI3OCwgMjc4LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCAxNzQsIDAsIDAsIDI3LCAwXSwgWzAsIDI4MiwgOTAsIDAsIDAsIDc2LCAyODAsIDAsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDI4MiwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCA3NSwgMCwgMCwgMCwgMTc1LCAxNzUsIDAsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDc1LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgMjIsIDIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDI4MywgMCwgMjg0LCAyODUsIDAsIDIzLCAwLCAyNCwgMCwgMCwgMjg2LCAwLCAwLCAwLCAwLCAwXSwgWzAsIDc1LCAwLCAxNzYsIDAsIDE3NSwgMTc1LCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCA3NSwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAyODcsIDI4NywgODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMjg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDE4NCwgMTg1LCAxODYsIDE4NywgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAxODUsIDE4NSwgMTg3LCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI4OSwgMjg5LCAxODcsIDIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDI5MCwgMjg5LCAyODksIDE4NywgMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjkxLCAyOTIsIDI5MywgMjk0LCAyOTUsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAyNzcsIDE3MCwgMjc4LCAyNzgsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDE3NCwgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgMCwgMjgxLCA4MCwgODAsIDIyLCAyMywgMCwgMCwgMCwgMCwgMTkyLCAyODEsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTg5LCAxNzAsIDE5MCwgMjc4LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAxOTIsIDE3NCwgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgMTg5LCAxNzAsIDI3OCwgMjc4LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCAxNzQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDc2LCAwLCAxNzcsIDE3NywgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTc1LCAyOTYsIDAsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjk3LCAxOTYsIDI5OCwgMjk4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCAyMDAsIDAsIDAsIDM3LCAwXSwgWzAsIDI5OSwgMCwgMCwgMCwgOTcsIDMwMCwgMCwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgMjk5LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDMwMSwgMTAxLCAxMDEsIDMyLCAzMywgMCwgMCwgMCwgMCwgMTk5LCAzMDEsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTk1LCAxOTYsIDE5NywgMjk4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAxOTksIDIwMCwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMTk1LCAxOTYsIDI5OCwgMjk4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCAyMDAsIDAsIDAsIDM3LCAwXSwgWzAsIDMwMiwgMTExLCAwLCAwLCA5NywgMzAwLCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCAzMDIsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgOTYsIDAsIDAsIDAsIDIwMSwgMjAxLCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCA5NiwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAxMDEsIDEwMSwgMzIsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDMwMywgMCwgMzA0LCAzMDUsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMzA2LCAwLCAwLCAwLCAwLCAwXSwgWzAsIDk2LCAwLCAyMDIsIDAsIDIwMSwgMjAxLCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCA5NiwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAzMDcsIDMwNywgMTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDMwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAyMTAsIDIxMSwgMjEyLCAyMTMsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjExLCAyMTEsIDIxMywgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAzMDksIDMwOSwgMjEzLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAzMTAsIDMwOSwgMzA5LCAyMTMsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDMxMSwgMzEyLCAzMTMsIDMxNCwgMzE1LCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjk3LCAxOTYsIDI5OCwgMjk4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCAyMDAsIDAsIDAsIDM3LCAwXSwgWzAsIDAsIDAsIDAsIDMwMSwgMTAxLCAxMDEsIDMyLCAzMywgMCwgMCwgMCwgMCwgMjE4LCAzMDEsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjE1LCAxOTYsIDIxNiwgMjk4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAyMTgsIDIwMCwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMjE1LCAxOTYsIDI5OCwgMjk4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCAyMDAsIDAsIDAsIDM3LCAwXSwgWzAsIDAsIDAsIDk3LCAwLCAyMDMsIDIwMywgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjAxLCAzMTYsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMTE2LCAyMjIsIDIyMiwgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDEyMCwgMCwgMCwgMTYsIDBdLCBbMCwgMCwgMCwgMCwgMjI1LCA0NCwgNDQsIDgsIDksIDAsIDAsIDAsIDAsIDAsIDIyNSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAzMTcsIDMxOCwgMzE5LCAzMjAsIDgsIDksIDAsIDEwLCAwLCAwLCAzMjEsIDMyMiwgMCwgMCwgMTYsIDBdLCBbMCwgMjIzLCAwLCAzMjMsIDAsIDEyMywgMTIzLCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDIyMywgMCwgMF0sIFswLCAyMjMsIDAsIDAsIDAsIDEyMSwgMzI0LCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDIyMywgMCwgMF0sIFswLCAwLCAwLCAzMjUsIDMxOCwgMzI2LCAzMjcsIDgsIDksIDAsIDEwLCAwLCAwLCAzMjgsIDMyMiwgMCwgMCwgMTYsIDBdLCBbMCwgMCwgMCwgNjQsIDAsIDEyMSwgMTIxLCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAyMzAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjI3LCAwLCAyMjgsIDEyMSwgMCwgOSwgMCwgMTAsIDAsIDAsIDIzMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAyMjcsIDAsIDEyMSwgMTIxLCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NiwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAzMjksIDMyOSwgMTMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDMzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAyMzYsIDIzNywgMjM4LCAyMzksIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAyMzcsIDIzNywgMjM5LCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMzMxLCAzMzEsIDIzOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAzMzIsIDMzMSwgMzMxLCAyMzksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMzMzLCA0MCwgMTIxLCAzMzQsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAzMzUsIDI0MSwgMzM2LCAzMzYsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDI0NSwgMCwgMCwgNjIsIDBdLCBbMCwgMzM3LCAwLCAwLCAwLCAxMzcsIDMzOCwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDMzNywgMCwgMF0sIFswLCAwLCAwLCAwLCAzMzksIDE0MSwgMTQxLCA1NywgNTgsIDAsIDAsIDAsIDAsIDI0NCwgMzM5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDI0MCwgMjQxLCAyNDIsIDMzNiwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMjQ0LCAyNDUsIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDI0MCwgMjQxLCAzMzYsIDMzNiwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMjQ1LCAwLCAwLCA2MiwgMF0sIFswLCAzNDAsIDE1MSwgMCwgMCwgMTM3LCAzMzgsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAzNDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMTM2LCAwLCAwLCAwLCAyNDYsIDI0NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDEzNiwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAxNDEsIDE0MSwgNTcsIDU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDM0MSwgMCwgMzQyLCAzNDMsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMzQ0LCAwLCAwLCAwLCAwLCAwXSwgWzAsIDEzNiwgMCwgMjQ3LCAwLCAyNDYsIDI0NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDEzNiwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCA1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAzNDUsIDM0NSwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDM0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAyNTUsIDI1NiwgMjU3LCAyNTgsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI1NiwgMjU2LCAyNTgsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDM0NywgMzQ3LCAyNTgsIDU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDM0OCwgMzQ3LCAzNDcsIDI1OCwgNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMzQ5LCAzNTAsIDM1MSwgMzUyLCAzNTMsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMzM1LCAyNDEsIDMzNiwgMzM2LCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCAyNDUsIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDAsIDMzOSwgMTQxLCAxNDEsIDU3LCA1OCwgMCwgMCwgMCwgMCwgMjYzLCAzMzksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjYwLCAyNDEsIDI2MSwgMzM2LCA1NywgNTgsIDAsIDU5LCAwLCAwLCAyNjMsIDI0NSwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgMjYwLCAyNDEsIDMzNiwgMzM2LCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCAyNDUsIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDEzNywgMCwgMjQ4LCAyNDgsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDEzOSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAyNDYsIDM1NCwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTI2LCAxMjYsIDgsIDIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDM1NSwgOTAsIDAsIDAsIDEyMSwgMTI1LCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDM1NSwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAzNTYsIDM1NiwgMjY5LCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgMTYxLCAwLCAxNjIsIDAsIDAsIDAsIDM2MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjcwLCAwLCAwLCAwLCAwLCAxNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDM2NCwgMTE2LCAzNjUsIDM2NiwgOCwgMTYxLCAwLCAxNjIsIDAsIDAsIDM2NywgMTIwLCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCAwLCAzNjgsIDM2OCwgMCwgMTYxLCAwLCAxNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNDAsIDAsIDEyMSwgMTIxLCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAxNzAsIDI3OCwgMjc4LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCAxNzQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDAsIDI4MSwgODAsIDgwLCAyMiwgMjMsIDAsIDAsIDAsIDAsIDAsIDI4MSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAzNjksIDM3MCwgMzcxLCAzNzIsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDM3MywgMzc0LCAwLCAwLCAyNywgMF0sIFswLCAyNzksIDAsIDM3NSwgMCwgMTc3LCAxNzcsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAyNzksIDAsIDBdLCBbMCwgMjc5LCAwLCAwLCAwLCAxNzUsIDM3NiwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgMjc5LCAwLCAwXSwgWzAsIDAsIDAsIDM3NywgMzcwLCAzNzgsIDM3OSwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMzgwLCAzNzQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDkwLCAwLCAxNzUsIDE3NSwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzLCAwLCAwLCAwLCAwLCAyODYsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjgzLCAwLCAyODQsIDE3NSwgMCwgMjMsIDAsIDI0LCAwLCAwLCAyODYsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjgzLCAwLCAxNzUsIDE3NSwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDM4MSwgMzgxLCAxODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMzgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDI5MiwgMjkzLCAyOTQsIDI5NSwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAyOTMsIDI5MywgMjk1LCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDM4MywgMzgzLCAyOTUsIDIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDM4NCwgMzgzLCAzODMsIDI5NSwgMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMzg1LCA3NiwgMTc1LCAzODYsIDAsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNzYsIDAsIDE3NSwgMTc1LCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDE5NiwgMjk4LCAyOTgsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDAsIDIwMCwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMCwgMzAxLCAxMDEsIDEwMSwgMzIsIDMzLCAwLCAwLCAwLCAwLCAwLCAzMDEsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMzg3LCAzODgsIDM4OSwgMzkwLCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAzOTEsIDM5MiwgMCwgMCwgMzcsIDBdLCBbMCwgMjk5LCAwLCAzOTMsIDAsIDIwMywgMjAzLCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgMjk5LCAwLCAwXSwgWzAsIDI5OSwgMCwgMCwgMCwgMjAxLCAzOTQsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDI5OSwgMCwgMF0sIFswLCAwLCAwLCAzOTUsIDM4OCwgMzk2LCAzOTcsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDM5OCwgMzkyLCAwLCAwLCAzNywgMF0sIFswLCAwLCAwLCAxMTEsIDAsIDIwMSwgMjAxLCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzMsIDAsIDAsIDAsIDAsIDMwNiwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAzMDMsIDAsIDMwNCwgMjAxLCAwLCAzMywgMCwgMzQsIDAsIDAsIDMwNiwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAzMDMsIDAsIDIwMSwgMjAxLCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMywgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAzOTksIDM5OSwgMjEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDQwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAzMTIsIDMxMywgMzE0LCAzMTUsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMzEzLCAzMTMsIDMxNSwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA0MDEsIDQwMSwgMzE1LCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA0MDIsIDQwMSwgNDAxLCAzMTUsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQwMywgOTcsIDIwMSwgNDA0LCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDk3LCAwLCAyMDEsIDIwMSwgMCwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0MDUsIDMxOCwgNDA2LCA0MDYsIDgsIDksIDAsIDEwLCAwLCAwLCAwLCAzMjIsIDAsIDAsIDE2LCAwXSwgWzAsIDQwNywgMCwgMCwgMCwgNDAsIDQwOCwgMCwgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCA0MDcsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNDA5LCA0NCwgNDQsIDgsIDksIDAsIDAsIDAsIDAsIDMyMSwgNDA5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDMxNywgMzE4LCAzMTksIDQwNiwgOCwgOSwgMCwgMTAsIDAsIDAsIDMyMSwgMzIyLCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAzMTcsIDMxOCwgNDA2LCA0MDYsIDgsIDksIDAsIDEwLCAwLCAwLCAwLCAzMjIsIDAsIDAsIDE2LCAwXSwgWzAsIDQxMCwgNjQsIDAsIDAsIDQwLCA0MDgsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgNDEwLCAwLCAwXSwgWzAsIDIyMywgMCwgMCwgMCwgMTIxLCAxMjEsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgMjIzLCAwLCAwXSwgWzAsIDIyMywgMCwgMzIzLCAwLCAxMjEsIDEyMSwgMCwgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCAyMjMsIDAsIDBdLCBbMCwgMCwgMCwgNDA1LCAzMTgsIDQwNiwgNDA2LCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgMzIyLCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCA0MDksIDQ0LCA0NCwgOCwgOSwgMCwgMCwgMCwgMCwgMzI4LCA0MDksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMzI1LCAzMTgsIDMyNiwgNDA2LCA4LCA5LCAwLCAxMCwgMCwgMCwgMzI4LCAzMjIsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDMyNSwgMzE4LCA0MDYsIDQwNiwgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDMyMiwgMCwgMCwgMTYsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA0MTEsIDQxMSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDQxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA0MCwgMTIxLCAzMzQsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA0MTMsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMjQxLCAzMzYsIDMzNiwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMjQ1LCAwLCAwLCA2MiwgMF0sIFswLCAwLCAwLCAwLCAzMzksIDE0MSwgMTQxLCA1NywgNTgsIDAsIDAsIDAsIDAsIDAsIDMzOSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0MTQsIDQxNSwgNDE2LCA0MTcsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDQxOCwgNDE5LCAwLCAwLCA2MiwgMF0sIFswLCAzMzcsIDAsIDQyMCwgMCwgMjQ4LCAyNDgsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDEzOSwgMCwgMzM3LCAwLCAwXSwgWzAsIDMzNywgMCwgMCwgMCwgMjQ2LCA0MjEsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAzMzcsIDAsIDBdLCBbMCwgMCwgMCwgNDIyLCA0MTUsIDQyMywgNDI0LCA1NywgNTgsIDAsIDU5LCAwLCAwLCA0MjUsIDQxOSwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgMTUxLCAwLCAyNDYsIDI0NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4LCAwLCAwLCAwLCAwLCAzNDQsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMzQxLCAwLCAzNDIsIDI0NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAzNDQsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMzQxLCAwLCAyNDYsIDI0NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDMsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNDI2LCA0MjYsIDI1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCA0MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMzUwLCAzNTEsIDM1MiwgMzUzLCA1OCwgMCwgNTksIDAsIDAsIDAsIDEzOSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAzNTEsIDM1MSwgMzUzLCA1OCwgMCwgNTksIDAsIDAsIDAsIDEzOSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA0MjgsIDQyOCwgMzUzLCA1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA0MjksIDQyOCwgNDI4LCAzNTMsIDU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQzMCwgMTM3LCAyNDYsIDQzMSwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTM3LCAwLCAyNDYsIDI0NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNDMyLCAxMTYsIDQzMywgNDM0LCA4LCAxNjEsIDAsIDE2MiwgMCwgMCwgNDM1LCAxMjAsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDAsIDAsIDE4MCwgMTgwLCAyNjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMzU4LCAzNTksIDM2MCwgMzYxLCAxNjEsIDAsIDE2MiwgMCwgMCwgMCwgMzYyLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDM1OSwgMzU5LCAzNjEsIDE2MSwgMCwgMTYyLCAwLCAwLCAwLCAzNjIsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNDM2LCA0MzYsIDM2MSwgMTYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDQzNywgNDM2LCA0MzYsIDM2MSwgMTYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQzOCwgNDM5LCA0NDAsIDQ0MSwgNDQyLCAxNjEsIDAsIDE2MiwgMCwgMCwgMCwgMzYyLCAwLCAwLCAwLCAwXSwgWzAsIDQ0MywgMjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDMsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0NDQsIDExNiwgNDQ1LCA0NDUsIDgsIDE2MSwgMCwgMTYyLCAwLCAwLCAwLCAxMjAsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDAsIDIyNSwgNDQsIDQ0LCA4LCAxNjEsIDAsIDAsIDAsIDAsIDM2NywgMjI1LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDM2NCwgMTE2LCAzNjUsIDQ0NSwgOCwgMTYxLCAwLCAxNjIsIDAsIDAsIDM2NywgMTIwLCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAzNjQsIDExNiwgNDQ1LCA0NDUsIDgsIDE2MSwgMCwgMTYyLCAwLCAwLCAwLCAxMjAsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0NDYsIDM3MCwgNDQ3LCA0NDcsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDM3NCwgMCwgMCwgMjcsIDBdLCBbMCwgNDQ4LCAwLCAwLCAwLCA3NiwgNDQ5LCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCA0NDgsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNDUwLCA4MCwgODAsIDIyLCAyMywgMCwgMCwgMCwgMCwgMzczLCA0NTAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMzY5LCAzNzAsIDM3MSwgNDQ3LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAzNzMsIDM3NCwgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgMzY5LCAzNzAsIDQ0NywgNDQ3LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCAzNzQsIDAsIDAsIDI3LCAwXSwgWzAsIDQ1MSwgOTAsIDAsIDAsIDc2LCA0NDksIDAsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDQ1MSwgMCwgMF0sIFswLCAyNzksIDAsIDAsIDAsIDE3NSwgMTc1LCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAyNzksIDAsIDBdLCBbMCwgMjc5LCAwLCAzNzUsIDAsIDE3NSwgMTc1LCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAyNzksIDAsIDBdLCBbMCwgMCwgMCwgNDQ2LCAzNzAsIDQ0NywgNDQ3LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCAzNzQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDAsIDQ1MCwgODAsIDgwLCAyMiwgMjMsIDAsIDAsIDAsIDAsIDM4MCwgNDUwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDM3NywgMzcwLCAzNzgsIDQ0NywgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMzgwLCAzNzQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDM3NywgMzcwLCA0NDcsIDQ0NywgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMCwgMzc0LCAwLCAwLCAyNywgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAxODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTg0LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDQ1MiwgNDUyLCAyOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgNDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDc2LCAxNzUsIDM4NiwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA0NTQsIDAsIDAsIDAsIDIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQ1NSwgMzg4LCA0NTYsIDQ1NiwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMCwgMzkyLCAwLCAwLCAzNywgMF0sIFswLCA0NTcsIDAsIDAsIDAsIDk3LCA0NTgsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDQ1NywgMCwgMF0sIFswLCAwLCAwLCAwLCA0NTksIDEwMSwgMTAxLCAzMiwgMzMsIDAsIDAsIDAsIDAsIDM5MSwgNDU5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDM4NywgMzg4LCAzODksIDQ1NiwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMzkxLCAzOTIsIDAsIDAsIDM3LCAwXSwgWzAsIDAsIDAsIDM4NywgMzg4LCA0NTYsIDQ1NiwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMCwgMzkyLCAwLCAwLCAzNywgMF0sIFswLCA0NjAsIDExMSwgMCwgMCwgOTcsIDQ1OCwgMCwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgNDYwLCAwLCAwXSwgWzAsIDI5OSwgMCwgMCwgMCwgMjAxLCAyMDEsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDI5OSwgMCwgMF0sIFswLCAyOTksIDAsIDM5MywgMCwgMjAxLCAyMDEsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDI5OSwgMCwgMF0sIFswLCAwLCAwLCA0NTUsIDM4OCwgNDU2LCA0NTYsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDAsIDM5MiwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMCwgNDU5LCAxMDEsIDEwMSwgMzIsIDMzLCAwLCAwLCAwLCAwLCAzOTgsIDQ1OSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAzOTUsIDM4OCwgMzk2LCA0NTYsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDM5OCwgMzkyLCAwLCAwLCAzNywgMF0sIFswLCAwLCAwLCAzOTUsIDM4OCwgNDU2LCA0NTYsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDAsIDM5MiwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA0NjEsIDQ2MSwgMzE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDQ2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA5NywgMjAxLCA0MDQsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNDYzLCAwLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAzMTgsIDQwNiwgNDA2LCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgMzIyLCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCA0MDksIDQ0LCA0NCwgOCwgOSwgMCwgMCwgMCwgMCwgMCwgNDA5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQ2NCwgNDY1LCA0NjYsIDQ2NywgOCwgOSwgMCwgMTAsIDAsIDAsIDQ2OCwgNDY5LCAwLCAwLCAxNiwgMF0sIFswLCA0MDcsIDAsIDQ3MCwgMCwgMTIzLCAxMjMsIDgsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgNDA3LCAwLCAwXSwgWzAsIDQwNywgMCwgMCwgMCwgMTIxLCA0NzEsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgNDA3LCAwLCAwXSwgWzAsIDAsIDAsIDQ3MiwgNDY1LCA0NzMsIDQ3NCwgOCwgOSwgMCwgMTAsIDAsIDAsIDQ3NSwgNDY5LCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM2LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDQ3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0NzcsIDQxNSwgNDc4LCA0NzgsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDQxOSwgMCwgMCwgNjIsIDBdLCBbMCwgNDc5LCAwLCAwLCAwLCAxMzcsIDQ4MCwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDQ3OSwgMCwgMF0sIFswLCAwLCAwLCAwLCA0ODEsIDE0MSwgMTQxLCA1NywgNTgsIDAsIDAsIDAsIDAsIDQxOCwgNDgxLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQxNCwgNDE1LCA0MTYsIDQ3OCwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgNDE4LCA0MTksIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDQxNCwgNDE1LCA0NzgsIDQ3OCwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMCwgNDE5LCAwLCAwLCA2MiwgMF0sIFswLCA0ODIsIDE1MSwgMCwgMCwgMTM3LCA0ODAsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCA0ODIsIDAsIDBdLCBbMCwgMzM3LCAwLCAwLCAwLCAyNDYsIDI0NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDMzNywgMCwgMF0sIFswLCAzMzcsIDAsIDQyMCwgMCwgMjQ2LCAyNDYsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAzMzcsIDAsIDBdLCBbMCwgMCwgMCwgNDc3LCA0MTUsIDQ3OCwgNDc4LCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCA0MTksIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDAsIDQ4MSwgMTQxLCAxNDEsIDU3LCA1OCwgMCwgMCwgMCwgMCwgNDI1LCA0ODEsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNDIyLCA0MTUsIDQyMywgNDc4LCA1NywgNTgsIDAsIDU5LCAwLCAwLCA0MjUsIDQxOSwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgNDIyLCA0MTUsIDQ3OCwgNDc4LCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCA0MTksIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTUsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNDgzLCA0ODMsIDM1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCA0ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMTM3LCAyNDYsIDQzMSwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNDg1LCAwLCAwLCAwLCA1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0NDQsIDExNiwgNDQ1LCA0NDUsIDgsIDE2MSwgMCwgMTYyLCAwLCAwLCAwLCAxMjAsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDAsIDIyNSwgNDQsIDQ0LCA4LCAxNjEsIDAsIDAsIDAsIDAsIDQzNSwgMjI1LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQzMiwgMTE2LCA0MzMsIDQ0NSwgOCwgMTYxLCAwLCAxNjIsIDAsIDAsIDQzNSwgMTIwLCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCA0MzIsIDExNiwgNDQ1LCA0NDUsIDgsIDE2MSwgMCwgMTYyLCAwLCAwLCAwLCAxMjAsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDAsIDAsIDQ4NiwgNDg2LCAzNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgNDg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDQzOSwgNDQwLCA0NDEsIDQ0MiwgMTYxLCAwLCAxNjIsIDAsIDAsIDAsIDM2MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA0NDAsIDQ0MCwgNDQyLCAxNjEsIDAsIDE2MiwgMCwgMCwgMCwgMzYyLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDQ4OCwgNDg4LCA0NDIsIDE2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA0ODksIDQ4OCwgNDg4LCA0NDIsIDE2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0OTAsIDQ5MSwgNDkyLCA0OTMsIDQ5NCwgMTYxLCAwLCAxNjIsIDAsIDAsIDAsIDM2MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0OTUsIDAsIDQ5NiwgNDk3LCAwLCAxNjEsIDAsIDE2MiwgMCwgMCwgNDk4LCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDExNiwgNDQ1LCA0NDUsIDgsIDE2MSwgMCwgMTYyLCAwLCAwLCAwLCAxMjAsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDAsIDIyNSwgNDQsIDQ0LCA4LCAxNjEsIDAsIDAsIDAsIDAsIDAsIDIyNSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAzNzAsIDQ0NywgNDQ3LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCAzNzQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDAsIDQ1MCwgODAsIDgwLCAyMiwgMjMsIDAsIDAsIDAsIDAsIDAsIDQ1MCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0OTksIDUwMCwgNTAxLCA1MDIsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDUwMywgNTA0LCAwLCAwLCAyNywgMF0sIFswLCA0NDgsIDAsIDUwNSwgMCwgMTc3LCAxNzcsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCA0NDgsIDAsIDBdLCBbMCwgNDQ4LCAwLCAwLCAwLCAxNzUsIDUwNiwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgNDQ4LCAwLCAwXSwgWzAsIDAsIDAsIDUwNywgNTAwLCA1MDgsIDUwOSwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgNTEwLCA1MDQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTIsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgNTExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDM4OCwgNDU2LCA0NTYsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDAsIDM5MiwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMCwgNDU5LCAxMDEsIDEwMSwgMzIsIDMzLCAwLCAwLCAwLCAwLCAwLCA0NTksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTEyLCA1MTMsIDUxNCwgNTE1LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCA1MTYsIDUxNywgMCwgMCwgMzcsIDBdLCBbMCwgNDU3LCAwLCA1MTgsIDAsIDIwMywgMjAzLCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgNDU3LCAwLCAwXSwgWzAsIDQ1NywgMCwgMCwgMCwgMjAxLCA1MTksIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDQ1NywgMCwgMF0sIFswLCAwLCAwLCA1MjAsIDUxMywgNTIxLCA1MjIsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDUyMywgNTE3LCAwLCAwLCAzNywgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEyLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDUyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA1MjUsIDQ2NSwgNTI2LCA1MjYsIDgsIDksIDAsIDEwLCAwLCAwLCAwLCA0NjksIDAsIDAsIDE2LCAwXSwgWzAsIDUyNywgMCwgMCwgMCwgNDAsIDUyOCwgMCwgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCA1MjcsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNTI5LCA0NCwgNDQsIDgsIDksIDAsIDAsIDAsIDAsIDQ2OCwgNTI5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQ2NCwgNDY1LCA0NjYsIDUyNiwgOCwgOSwgMCwgMTAsIDAsIDAsIDQ2OCwgNDY5LCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCA0NjQsIDQ2NSwgNTI2LCA1MjYsIDgsIDksIDAsIDEwLCAwLCAwLCAwLCA0NjksIDAsIDAsIDE2LCAwXSwgWzAsIDUzMCwgNjQsIDAsIDAsIDQwLCA1MjgsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgNTMwLCAwLCAwXSwgWzAsIDQwNywgMCwgMCwgMCwgMTIxLCAxMjEsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgNDA3LCAwLCAwXSwgWzAsIDQwNywgMCwgNDcwLCAwLCAxMjEsIDEyMSwgMCwgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCA0MDcsIDAsIDBdLCBbMCwgMCwgMCwgNTI1LCA0NjUsIDUyNiwgNTI2LCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgNDY5LCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCA1MjksIDQ0LCA0NCwgOCwgOSwgMCwgMCwgMCwgMCwgNDc1LCA1MjksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNDcyLCA0NjUsIDQ3MywgNTI2LCA4LCA5LCAwLCAxMCwgMCwgMCwgNDc1LCA0NjksIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDQ3MiwgNDY1LCA1MjYsIDUyNiwgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDQ2OSwgMCwgMCwgMTYsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNDE1LCA0NzgsIDQ3OCwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMCwgNDE5LCAwLCAwLCA2MiwgMF0sIFswLCAwLCAwLCAwLCA0ODEsIDE0MSwgMTQxLCA1NywgNTgsIDAsIDAsIDAsIDAsIDAsIDQ4MSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA1MzEsIDUzMiwgNTMzLCA1MzQsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDUzNSwgNTM2LCAwLCAwLCA2MiwgMF0sIFswLCA0NzksIDAsIDUzNywgMCwgMjQ4LCAyNDgsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDEzOSwgMCwgNDc5LCAwLCAwXSwgWzAsIDQ3OSwgMCwgMCwgMCwgMjQ2LCA1MzgsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCA0NzksIDAsIDBdLCBbMCwgMCwgMCwgNTM5LCA1MzIsIDU0MCwgNTQxLCA1NywgNTgsIDAsIDU5LCAwLCAwLCA1NDIsIDUzNiwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCA1NDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1OCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA1NDQsIDU0NCwgNDQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDU0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA0OTEsIDQ5MiwgNDkzLCA0OTQsIDE2MSwgMCwgMTYyLCAwLCAwLCAwLCAzNjIsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNDkyLCA0OTIsIDQ5NCwgMTYxLCAwLCAxNjIsIDAsIDAsIDAsIDM2MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA1NDYsIDU0NiwgNDk0LCAxNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNTQ3LCA1NDYsIDU0NiwgNDk0LCAxNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTQ4LCA1NDksIDM2OCwgNTUwLCAwLCAxNjEsIDAsIDE2MiwgMCwgMCwgMCwgMzYyLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDI3NCwgMCwgMzY4LCAzNjgsIDAsIDE2MSwgMCwgMTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MSwgMCwgMCwgMCwgMCwgNDk4LCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQ5NSwgMCwgNDk2LCAzNjgsIDAsIDE2MSwgMCwgMTYyLCAwLCAwLCA0OTgsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNDk1LCAwLCAzNjgsIDM2OCwgMCwgMTYxLCAwLCAxNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTUxLCA1MDAsIDU1MiwgNTUyLCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCA1MDQsIDAsIDAsIDI3LCAwXSwgWzAsIDU1MywgMCwgMCwgMCwgNzYsIDU1NCwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgNTUzLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDU1NSwgODAsIDgwLCAyMiwgMjMsIDAsIDAsIDAsIDAsIDUwMywgNTU1LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQ5OSwgNTAwLCA1MDEsIDU1MiwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgNTAzLCA1MDQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDQ5OSwgNTAwLCA1NTIsIDU1MiwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNTA0LCAwLCAwLCAyNywgMF0sIFswLCA1NTYsIDkwLCAwLCAwLCA3NiwgNTU0LCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCA1NTYsIDAsIDBdLCBbMCwgNDQ4LCAwLCAwLCAwLCAxNzUsIDE3NSwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgNDQ4LCAwLCAwXSwgWzAsIDQ0OCwgMCwgNTA1LCAwLCAxNzUsIDE3NSwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgNDQ4LCAwLCAwXSwgWzAsIDAsIDAsIDU1MSwgNTAwLCA1NTIsIDU1MiwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNTA0LCAwLCAwLCAyNywgMF0sIFswLCAwLCAwLCAwLCA1NTUsIDgwLCA4MCwgMjIsIDIzLCAwLCAwLCAwLCAwLCA1MTAsIDU1NSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA1MDcsIDUwMCwgNTA4LCA1NTIsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDUxMCwgNTA0LCAwLCAwLCAyNywgMF0sIFswLCAwLCAwLCA1MDcsIDUwMCwgNTUyLCA1NTIsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDUwNCwgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzYsIDAsIDBdLCBbMCwgMCwgMCwgNTU3LCA1MTMsIDU1OCwgNTU4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCA1MTcsIDAsIDAsIDM3LCAwXSwgWzAsIDU1OSwgMCwgMCwgMCwgOTcsIDU2MCwgMCwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgNTU5LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDU2MSwgMTAxLCAxMDEsIDMyLCAzMywgMCwgMCwgMCwgMCwgNTE2LCA1NjEsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTEyLCA1MTMsIDUxNCwgNTU4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCA1MTYsIDUxNywgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgNTEyLCA1MTMsIDU1OCwgNTU4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCA1MTcsIDAsIDAsIDM3LCAwXSwgWzAsIDU2MiwgMTExLCAwLCAwLCA5NywgNTYwLCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCA1NjIsIDAsIDBdLCBbMCwgNDU3LCAwLCAwLCAwLCAyMDEsIDIwMSwgMCwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgNDU3LCAwLCAwXSwgWzAsIDQ1NywgMCwgNTE4LCAwLCAyMDEsIDIwMSwgMCwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgNDU3LCAwLCAwXSwgWzAsIDAsIDAsIDU1NywgNTEzLCA1NTgsIDU1OCwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMCwgNTE3LCAwLCAwLCAzNywgMF0sIFswLCAwLCAwLCAwLCA1NjEsIDEwMSwgMTAxLCAzMiwgMzMsIDAsIDAsIDAsIDAsIDUyMywgNTYxLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDUyMCwgNTEzLCA1MjEsIDU1OCwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgNTIzLCA1MTcsIDAsIDAsIDM3LCAwXSwgWzAsIDAsIDAsIDUyMCwgNTEzLCA1NTgsIDU1OCwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMCwgNTE3LCAwLCAwLCAzNywgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NywgMCwgMF0sIFswLCAwLCAwLCAwLCA0NjUsIDUyNiwgNTI2LCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgNDY5LCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCA1MjksIDQ0LCA0NCwgOCwgOSwgMCwgMCwgMCwgMCwgMCwgNTI5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDU2MywgNjYsIDU2NCwgNTY1LCA4LCA5LCAwLCAxMCwgMCwgMCwgNTY2LCA2OCwgMCwgMCwgMTYsIDBdLCBbMCwgNTI3LCAwLCA1NjcsIDAsIDEyMywgMTIzLCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDUyNywgMCwgMF0sIFswLCA1MjcsIDAsIDAsIDAsIDEyMSwgNTY4LCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDUyNywgMCwgMF0sIFswLCAwLCAwLCA1NjksIDY2LCA1NzAsIDU3MSwgOCwgOSwgMCwgMTAsIDAsIDAsIDU3MiwgNjgsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDU3MywgNTMyLCA1NzQsIDU3NCwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMCwgNTM2LCAwLCAwLCA2MiwgMF0sIFswLCA1NzUsIDAsIDAsIDAsIDEzNywgNTc2LCAwLCA1OCwgMCwgNTksIDAsIDAsIDAsIDEzOSwgMCwgNTc1LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDU3NywgMTQxLCAxNDEsIDU3LCA1OCwgMCwgMCwgMCwgMCwgNTM1LCA1NzcsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTMxLCA1MzIsIDUzMywgNTc0LCA1NywgNTgsIDAsIDU5LCAwLCAwLCA1MzUsIDUzNiwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgNTMxLCA1MzIsIDU3NCwgNTc0LCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCA1MzYsIDAsIDAsIDYyLCAwXSwgWzAsIDU3OCwgMTUxLCAwLCAwLCAxMzcsIDU3NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDU3OCwgMCwgMF0sIFswLCA0NzksIDAsIDAsIDAsIDI0NiwgMjQ2LCAwLCA1OCwgMCwgNTksIDAsIDAsIDAsIDEzOSwgMCwgNDc5LCAwLCAwXSwgWzAsIDQ3OSwgMCwgNTM3LCAwLCAyNDYsIDI0NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDQ3OSwgMCwgMF0sIFswLCAwLCAwLCA1NzMsIDUzMiwgNTc0LCA1NzQsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDUzNiwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgMCwgNTc3LCAxNDEsIDE0MSwgNTcsIDU4LCAwLCAwLCAwLCAwLCA1NDIsIDU3NywgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA1MzksIDUzMiwgNTQwLCA1NzQsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDU0MiwgNTM2LCAwLCAwLCA2MiwgMF0sIFswLCAwLCAwLCA1MzksIDUzMiwgNTc0LCA1NzQsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDUzNiwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM3LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzksIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNTc5LCA1NzksIDQ5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCA1ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNTQ5LCAzNjgsIDU1MCwgMCwgMTYxLCAwLCAxNjIsIDAsIDAsIDAsIDM2MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAzNjgsIDM2OCwgMCwgMTYxLCAwLCAxNjIsIDAsIDAsIDAsIDM2MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA1ODEsIDAsIDAsIDAsIDE2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA1MDAsIDU1MiwgNTUyLCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCA1MDQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDAsIDU1NSwgODAsIDgwLCAyMiwgMjMsIDAsIDAsIDAsIDAsIDAsIDU1NSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA1ODIsIDkxLCA1ODMsIDU4NCwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgNTg1LCA5MywgMCwgMCwgMjcsIDBdLCBbMCwgNTUzLCAwLCA1ODYsIDAsIDE3NywgMTc3LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgNTUzLCAwLCAwXSwgWzAsIDU1MywgMCwgMCwgMCwgMTc1LCA1ODcsIDAsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDU1MywgMCwgMF0sIFswLCAwLCAwLCA1ODgsIDkxLCA1ODksIDU5MCwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgNTkxLCA5MywgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgMCwgNTEzLCA1NTgsIDU1OCwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMCwgNTE3LCAwLCAwLCAzNywgMF0sIFswLCAwLCAwLCAwLCA1NjEsIDEwMSwgMTAxLCAzMiwgMzMsIDAsIDAsIDAsIDAsIDAsIDU2MSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA1OTIsIDExMiwgNTkzLCA1OTQsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDU5NSwgMTE0LCAwLCAwLCAzNywgMF0sIFswLCA1NTksIDAsIDU5NiwgMCwgMjAzLCAyMDMsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCA1NTksIDAsIDBdLCBbMCwgNTU5LCAwLCAwLCAwLCAyMDEsIDU5NywgMCwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgNTU5LCAwLCAwXSwgWzAsIDAsIDAsIDU5OCwgMTEyLCA1OTksIDYwMCwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgNjAxLCAxMTQsIDAsIDAsIDM3LCAwXSwgWzAsIDAsIDAsIDYwMiwgNjYsIDY3LCA2NywgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDY4LCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCAxNjUsIDQ0LCA0NCwgOCwgOSwgMCwgMCwgMCwgMCwgNTY2LCAxNjUsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTYzLCA2NiwgNTY0LCA2NywgOCwgOSwgMCwgMTAsIDAsIDAsIDU2NiwgNjgsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDU2MywgNjYsIDY3LCA2NywgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDY4LCAwLCAwLCAxNiwgMF0sIFswLCA1MjcsIDAsIDAsIDAsIDEyMSwgMTIxLCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDUyNywgMCwgMF0sIFswLCA1MjcsIDAsIDU2NywgMCwgMTIxLCAxMjEsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgNTI3LCAwLCAwXSwgWzAsIDAsIDAsIDYwMiwgNjYsIDY3LCA2NywgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDY4LCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCAxNjUsIDQ0LCA0NCwgOCwgOSwgMCwgMCwgMCwgMCwgNTcyLCAxNjUsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTY5LCA2NiwgNTcwLCA2NywgOCwgOSwgMCwgMTAsIDAsIDAsIDU3MiwgNjgsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDU2OSwgNjYsIDY3LCA2NywgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDY4LCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCA1MzIsIDU3NCwgNTc0LCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCA1MzYsIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDAsIDU3NywgMTQxLCAxNDEsIDU3LCA1OCwgMCwgMCwgMCwgMCwgMCwgNTc3LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDYwMywgMTUyLCA2MDQsIDYwNSwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgNjA2LCAxNTQsIDAsIDAsIDYyLCAwXSwgWzAsIDU3NSwgMCwgNjA3LCAwLCAyNDgsIDI0OCwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCA1NzUsIDAsIDBdLCBbMCwgNTc1LCAwLCAwLCAwLCAyNDYsIDYwOCwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDU3NSwgMCwgMF0sIFswLCAwLCAwLCA2MDksIDE1MiwgNjEwLCA2MTEsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDYxMiwgMTU0LCAwLCAwLCA2MiwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkxLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDYxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA2MTQsIDkxLCA5MiwgOTIsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDkzLCAwLCAwLCAyNywgMF0sIFswLCAwLCAwLCAwLCAxOTQsIDgwLCA4MCwgMjIsIDIzLCAwLCAwLCAwLCAwLCA1ODUsIDE5NCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA1ODIsIDkxLCA1ODMsIDkyLCAyMiwgMjMsIDAsIDI0LCAwLCAwLCA1ODUsIDkzLCAwLCAwLCAyNywgMF0sIFswLCAwLCAwLCA1ODIsIDkxLCA5MiwgOTIsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDkzLCAwLCAwLCAyNywgMF0sIFswLCA1NTMsIDAsIDAsIDAsIDE3NSwgMTc1LCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCA1NTMsIDAsIDBdLCBbMCwgNTUzLCAwLCA1ODYsIDAsIDE3NSwgMTc1LCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCA1NTMsIDAsIDBdLCBbMCwgMCwgMCwgNjE0LCA5MSwgOTIsIDkyLCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCA5MywgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgMCwgMTk0LCA4MCwgODAsIDIyLCAyMywgMCwgMCwgMCwgMCwgNTkxLCAxOTQsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTg4LCA5MSwgNTg5LCA5MiwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgNTkxLCA5MywgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgNTg4LCA5MSwgOTIsIDkyLCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCA5MywgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgNjE1LCAxMTIsIDExMywgMTEzLCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCAxMTQsIDAsIDAsIDM3LCAwXSwgWzAsIDAsIDAsIDAsIDIyMCwgMTAxLCAxMDEsIDMyLCAzMywgMCwgMCwgMCwgMCwgNTk1LCAyMjAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTkyLCAxMTIsIDU5MywgMTEzLCAzMiwgMzMsIDAsIDM0LCAwLCAwLCA1OTUsIDExNCwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgNTkyLCAxMTIsIDExMywgMTEzLCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCAxMTQsIDAsIDAsIDM3LCAwXSwgWzAsIDU1OSwgMCwgMCwgMCwgMjAxLCAyMDEsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDU1OSwgMCwgMF0sIFswLCA1NTksIDAsIDU5NiwgMCwgMjAxLCAyMDEsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDU1OSwgMCwgMF0sIFswLCAwLCAwLCA2MTUsIDExMiwgMTEzLCAxMTMsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDAsIDExNCwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMCwgMjIwLCAxMDEsIDEwMSwgMzIsIDMzLCAwLCAwLCAwLCAwLCA2MDEsIDIyMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA1OTgsIDExMiwgNTk5LCAxMTMsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDYwMSwgMTE0LCAwLCAwLCAzNywgMF0sIFswLCAwLCAwLCA1OTgsIDExMiwgMTEzLCAxMTMsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDAsIDExNCwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMCwgNjYsIDY3LCA2NywgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDY4LCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCA2MTYsIDE1MiwgMTUzLCAxNTMsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDE1NCwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgMCwgMjY1LCAxNDEsIDE0MSwgNTcsIDU4LCAwLCAwLCAwLCAwLCA2MDYsIDI2NSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA2MDMsIDE1MiwgNjA0LCAxNTMsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDYwNiwgMTU0LCAwLCAwLCA2MiwgMF0sIFswLCAwLCAwLCA2MDMsIDE1MiwgMTUzLCAxNTMsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDE1NCwgMCwgMCwgNjIsIDBdLCBbMCwgNTc1LCAwLCAwLCAwLCAyNDYsIDI0NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDU3NSwgMCwgMF0sIFswLCA1NzUsIDAsIDYwNywgMCwgMjQ2LCAyNDYsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCA1NzUsIDAsIDBdLCBbMCwgMCwgMCwgNjE2LCAxNTIsIDE1MywgMTUzLCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCAxNTQsIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDAsIDI2NSwgMTQxLCAxNDEsIDU3LCA1OCwgMCwgMCwgMCwgMCwgNjEyLCAyNjUsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNjA5LCAxNTIsIDYxMCwgMTUzLCA1NywgNTgsIDAsIDU5LCAwLCAwLCA2MTIsIDE1NCwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgNjA5LCAxNTIsIDE1MywgMTUzLCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCAxNTQsIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0OSwgMCwgMF0sIFswLCAwLCAwLCAwLCA5MSwgOTIsIDkyLCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCA5MywgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgMCwgMTEyLCAxMTMsIDExMywgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMCwgMTE0LCAwLCAwLCAzNywgMF0sIFswLCAwLCAwLCAwLCAxNTIsIDE1MywgMTUzLCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCAxNTQsIDAsIDAsIDYyLCAwXV07CnZhciBhY2NlcHRpbmcgPSBbZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWVdOwp2YXIgdGFncyA9IFtbXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJzeW1ib2xfY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFtdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiLCAiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbInN5bWJvbF9jbHVzdGVyIl0sIFtdLCBbInN5bWJvbF9jbHVzdGVyIl0sIFsic3ltYm9sX2NsdXN0ZXIiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgW10sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFtdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbInN5bWJvbF9jbHVzdGVyIl0sIFsic3ltYm9sX2NsdXN0ZXIiXSwgWyJzeW1ib2xfY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgW10sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFtdLCBbXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFtdLCBbXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFtdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFtdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFtdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJzeW1ib2xfY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFtdLCBbXSwgW10sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbXSwgW10sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbXSwgW10sIFtdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFtdLCBbXSwgW10sIFtdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbXSwgW10sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiLCAiYnJva2VuX2NsdXN0ZXIiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiLCAiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgW10sIFtdLCBbXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFtdLCBbXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFtdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFtdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbXSwgW10sIFtdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiLCAiYnJva2VuX2NsdXN0ZXIiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiLCAiYnJva2VuX2NsdXN0ZXIiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiLCAiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgW10sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFtdLCBbXSwgW10sIFtdLCBbXSwgW10sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFtdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbXSwgW10sIFtdLCBbXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFtdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFtdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXV07CnZhciBpbmRpY01hY2hpbmUgPSB7CglzdGF0ZVRhYmxlOiBzdGF0ZVRhYmxlLAoJYWNjZXB0aW5nOiBhY2NlcHRpbmcsCgl0YWdzOiB0YWdzCn07Cgp2YXIgY2F0ZWdvcmllcyA9IFsiTyIsICJJTkQiLCAiUyIsICJHQiIsICJCIiwgIkZNIiwgIkNHSiIsICJWTUFidiIsICJWTVBzdCIsICJWQWJ2IiwgIlZQc3QiLCAiQ01CbHciLCAiVlByZSIsICJWQmx3IiwgIkgiLCAiVk1CbHciLCAiQ01BYnYiLCAiTUJsdyIsICJDUyIsICJSIiwgIlNVQiIsICJNUHN0IiwgIk1QcmUiLCAiRkFidiIsICJGUHN0IiwgIkZCbHciLCAiU01BYnYiLCAiU01CbHciLCAiVk1QcmUiLCAiWldOSiIsICJaV0oiLCAiV0oiLCAiVlMiLCAiTiIsICJITiIsICJNQWJ2Il07CnZhciBkZWNvbXBvc2l0aW9ucyQxID0geyAiMjUwNyI6IFsyNTAzLCAyNDk0XSwgIjI1MDgiOiBbMjUwMywgMjUxOV0sICIyODg4IjogWzI4ODcsIDI5MDJdLCAiMjg5MSI6IFsyODg3LCAyODc4XSwgIjI4OTIiOiBbMjg4NywgMjkwM10sICIzMDE4IjogWzMwMTQsIDMwMDZdLCAiMzAxOSI6IFszMDE1LCAzMDA2XSwgIjMwMjAiOiBbMzAxNCwgMzAzMV0sICIzMTQ0IjogWzMxNDIsIDMxNThdLCAiMzI2NCI6IFszMjYzLCAzMjg1XSwgIjMyNzEiOiBbMzI3MCwgMzI4NV0sICIzMjcyIjogWzMyNzAsIDMyODZdLCAiMzI3NCI6IFszMjcwLCAzMjY2XSwgIjMyNzUiOiBbMzI3MCwgMzI2NiwgMzI4NV0sICIzNDAyIjogWzMzOTgsIDMzOTBdLCAiMzQwMyI6IFszMzk5LCAzMzkwXSwgIjM0MDQiOiBbMzM5OCwgMzQxNV0sICIzNTQ2IjogWzM1NDUsIDM1MzBdLCAiMzU0OCI6IFszNTQ1LCAzNTM1XSwgIjM1NDkiOiBbMzU0NSwgMzUzNSwgMzUzMF0sICIzNTUwIjogWzM1NDUsIDM1NTFdLCAiMzYzNSI6IFszNjYxLCAzNjM0XSwgIjM3NjMiOiBbMzc4OSwgMzc2Ml0sICIzOTU1IjogWzM5NTMsIDM5NTRdLCAiMzk1NyI6IFszOTUzLCAzOTU2XSwgIjM5NTgiOiBbNDAxOCwgMzk2OF0sICIzOTU5IjogWzQwMTgsIDM5NTMsIDM5NjhdLCAiMzk2MCI6IFs0MDE5LCAzOTY4XSwgIjM5NjEiOiBbNDAxOSwgMzk1MywgMzk2OF0sICIzOTY5IjogWzM5NTMsIDM5NjhdLCAiNjk3MSI6IFs2OTcwLCA2OTY1XSwgIjY5NzMiOiBbNjk3MiwgNjk2NV0sICI2OTc2IjogWzY5NzQsIDY5NjVdLCAiNjk3NyI6IFs2OTc1LCA2OTY1XSwgIjY5NzkiOiBbNjk3OCwgNjk2NV0sICI2OTkzNCI6IFs2OTkzNywgNjk5MjddLCAiNjk5MzUiOiBbNjk5MzgsIDY5OTI3XSwgIjcwNDc1IjogWzcwNDcxLCA3MDQ2Ml0sICI3MDQ3NiI6IFs3MDQ3MSwgNzA0ODddLCAiNzA4NDMiOiBbNzA4NDEsIDcwODQyXSwgIjcwODQ0IjogWzcwODQxLCA3MDgzMl0sICI3MDg0NiI6IFs3MDg0MSwgNzA4NDVdLCAiNzEwOTgiOiBbNzEwOTYsIDcxMDg3XSwgIjcxMDk5IjogWzcxMDk3LCA3MTA4N10gfTsKdmFyIHN0YXRlVGFibGUkMSA9IFtbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFsyLCAyLCAzLCA0LCA0LCA1LCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMTcsIDE4LCAxMSwgMTksIDIwLCAyMSwgMjIsIDAsIDAsIDIzLCAwLCAwLCAyLCAwLCAyNCwgMCwgMjVdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI4LCAwLCAwLCAwLCAwLCAyNywgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAyOSwgMCwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzksIDQwLCAwLCAwLCA0MSwgMzUsIDQyLCA0MywgNDQsIDQ1LCAwLCAwLCA0NiwgMCwgMCwgMCwgMzksIDAsIDAsIDQ3XSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNSwgMCwgNiwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAyMSwgMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDIxLCAyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA1LCAwLCA2LCA3LCA4LCA5LCAwLCAwLCAxMiwgMCwgMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAyMSwgMjIsIDAsIDAsIDIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDUsIDAsIDYsIDcsIDAsIDksIDAsIDAsIDAsIDAsIDE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgMjEsIDIyLCAwLCAwLCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA1LCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDAsIDE2LCAwLCAwLCAxOCwgMTEsIDE5LCAyMCwgMjEsIDIyLCAwLCAwLCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMjVdLCBbMCwgMCwgMCwgMCwgMCwgNSwgMCwgNiwgNywgOCwgOSwgMCwgMTEsIDEyLCAwLCAxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDIxLCAyMiwgMCwgMCwgMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNSwgMCwgNiwgNywgMCwgOSwgMCwgMCwgMTIsIDAsIDE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgMjEsIDIyLCAwLCAwLCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA1LCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDIxLCAyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA1LCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMTgsIDExLCAxOSwgMjAsIDIxLCAyMiwgMCwgMCwgMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDI1XSwgWzAsIDAsIDAsIDAsIDAsIDUsIDAsIDYsIDcsIDgsIDksIDAsIDExLCAxMiwgMCwgMTQsIDAsIDAsIDAsIDAsIDAsIDExLCAwLCAyMCwgMjEsIDIyLCAwLCAwLCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0LCA0LCA1LCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMTgsIDExLCAxOSwgMjAsIDIxLCAyMiwgMCwgMCwgMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDI1XSwgWzAsIDAsIDAsIDAsIDAsIDUsIDAsIDYsIDcsIDgsIDksIDQ4LCAxMSwgMTIsIDEzLCAxNCwgNDgsIDE2LCAwLCAwLCAxOCwgMTEsIDE5LCAyMCwgMjEsIDIyLCAwLCAwLCAyMywgMCwgMCwgMCwgNDksIDAsIDAsIDI1XSwgWzAsIDAsIDAsIDAsIDAsIDUsIDAsIDYsIDcsIDgsIDksIDAsIDExLCAxMiwgMCwgMTQsIDAsIDE2LCAwLCAwLCAwLCAxMSwgMCwgMjAsIDIxLCAyMiwgMCwgMCwgMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDI1XSwgWzAsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAyMSwgMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDUsIDAsIDYsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgMjEsIDIyLCAwLCAwLCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgMCwgNTEsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNSwgMCwgNiwgNywgOCwgOSwgMCwgMTEsIDEyLCAwLCAxNCwgMCwgMTYsIDAsIDAsIDAsIDExLCAwLCAyMCwgMjEsIDIyLCAwLCAwLCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI5LCAwLCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MywgNDQsIDQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI5LCAwLCAwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMsIDQ0LCA0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAyOSwgMCwgMzAsIDMxLCAzMiwgMzMsIDAsIDAsIDM2LCAwLCAzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMsIDQ0LCA0NSwgMCwgMCwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjksIDAsIDMwLCAzMSwgMCwgMzMsIDAsIDAsIDAsIDAsIDM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MywgNDQsIDQ1LCAwLCAwLCA0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAyOSwgMCwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMCwgNDAsIDAsIDAsIDQxLCAzNSwgNDIsIDQzLCA0NCwgNDUsIDAsIDAsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCA0N10sIFswLCAwLCAwLCAwLCAwLCAyOSwgMCwgMzAsIDMxLCAzMiwgMzMsIDAsIDM1LCAzNiwgMCwgMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzLCA0NCwgNDUsIDAsIDAsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI5LCAwLCAzMCwgMzEsIDAsIDMzLCAwLCAwLCAzNiwgMCwgMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzLCA0NCwgNDUsIDAsIDAsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI5LCAwLCAwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzLCA0NCwgNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjksIDAsIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwgMCwgMCwgNDEsIDM1LCA0MiwgNDMsIDQ0LCA0NSwgMCwgMCwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3XSwgWzAsIDAsIDAsIDAsIDAsIDI5LCAwLCAzMCwgMzEsIDMyLCAzMywgMCwgMzUsIDM2LCAwLCAzOCwgMCwgMCwgMCwgMCwgMCwgMzUsIDAsIDQzLCA0NCwgNDUsIDAsIDAsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI5LCAwLCAzMCwgMzEsIDMyLCAzMywgNTIsIDM1LCAzNiwgMzcsIDM4LCA1MiwgNDAsIDAsIDAsIDQxLCAzNSwgNDIsIDQzLCA0NCwgNDUsIDAsIDAsIDQ2LCAwLCAwLCAwLCA1MywgMCwgMCwgNDddLCBbMCwgMCwgMCwgMCwgMCwgMjksIDAsIDMwLCAzMSwgMzIsIDMzLCAwLCAzNSwgMzYsIDAsIDM4LCAwLCA0MCwgMCwgMCwgMCwgMzUsIDAsIDQzLCA0NCwgNDUsIDAsIDAsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCA0N10sIFswLCAwLCAwLCAwLCAwLCAyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMsIDQ0LCA0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAyOSwgMCwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMsIDQ0LCA0NSwgMCwgMCwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjksIDAsIDMwLCAzMSwgMzIsIDMzLCAwLCAzNSwgMzYsIDAsIDM4LCAwLCA0MCwgMCwgMCwgMCwgMzUsIDAsIDQzLCA0NCwgNDUsIDAsIDAsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDUsIDAsIDYsIDcsIDgsIDksIDQ4LCAxMSwgMTIsIDEzLCAxNCwgMCwgMTYsIDAsIDAsIDE4LCAxMSwgMTksIDIwLCAyMSwgMjIsIDAsIDAsIDIzLCAwLCAwLCAwLCAwLCAwLCAwLCAyNV0sIFswLCAwLCAwLCAwLCAwLCA1LCAwLCA2LCA3LCA4LCA5LCA0OCwgMTEsIDEyLCAxMywgMTQsIDQ4LCAxNiwgMCwgMCwgMTgsIDExLCAxOSwgMjAsIDIxLCAyMiwgMCwgMCwgMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDI1XSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI5LCAwLCAzMCwgMzEsIDMyLCAzMywgNTIsIDM1LCAzNiwgMzcsIDM4LCAwLCA0MCwgMCwgMCwgNDEsIDM1LCA0MiwgNDMsIDQ0LCA0NSwgMCwgMCwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3XSwgWzAsIDAsIDAsIDAsIDAsIDI5LCAwLCAzMCwgMzEsIDMyLCAzMywgNTIsIDM1LCAzNiwgMzcsIDM4LCA1MiwgNDAsIDAsIDAsIDQxLCAzNSwgNDIsIDQzLCA0NCwgNDUsIDAsIDAsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCA0N10sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgMCwgNTEsIDBdXTsKdmFyIGFjY2VwdGluZyQxID0gW2ZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZV07CnZhciB0YWdzJDEgPSBbW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJpbmRlcGVuZGVudF9jbHVzdGVyIl0sIFsic3ltYm9sX2NsdXN0ZXIiXSwgWyJzdGFuZGFyZF9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbIm51bWVyYWxfY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiaW5kZXBlbmRlbnRfY2x1c3RlciJdLCBbInN5bWJvbF9jbHVzdGVyIl0sIFsic3ltYm9sX2NsdXN0ZXIiXSwgWyJzdGFuZGFyZF9jbHVzdGVyIl0sIFsic3RhbmRhcmRfY2x1c3RlciJdLCBbInN0YW5kYXJkX2NsdXN0ZXIiXSwgWyJzdGFuZGFyZF9jbHVzdGVyIl0sIFsic3RhbmRhcmRfY2x1c3RlciJdLCBbInN0YW5kYXJkX2NsdXN0ZXIiXSwgWyJzdGFuZGFyZF9jbHVzdGVyIl0sIFsic3RhbmRhcmRfY2x1c3RlciJdLCBbInZpcmFtYV90ZXJtaW5hdGVkX2NsdXN0ZXIiXSwgWyJzdGFuZGFyZF9jbHVzdGVyIl0sIFsic3RhbmRhcmRfY2x1c3RlciJdLCBbInN0YW5kYXJkX2NsdXN0ZXIiXSwgWyJzdGFuZGFyZF9jbHVzdGVyIl0sIFsic3RhbmRhcmRfY2x1c3RlciJdLCBbInN0YW5kYXJkX2NsdXN0ZXIiXSwgWyJzdGFuZGFyZF9jbHVzdGVyIl0sIFsic3RhbmRhcmRfY2x1c3RlciJdLCBbInN0YW5kYXJkX2NsdXN0ZXIiXSwgWyJzdGFuZGFyZF9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbIm51bWVyYWxfY2x1c3RlciJdLCBbIm51bWJlcl9qb2luZXJfdGVybWluYXRlZF9jbHVzdGVyIl0sIFsic3RhbmRhcmRfY2x1c3RlciJdLCBbInN0YW5kYXJkX2NsdXN0ZXIiXSwgWyJudW1lcmFsX2NsdXN0ZXIiXV07CnZhciB1c2VEYXRhID0gewoJY2F0ZWdvcmllczogY2F0ZWdvcmllcywKCWRlY29tcG9zaXRpb25zOiBkZWNvbXBvc2l0aW9ucyQxLAoJc3RhdGVUYWJsZTogc3RhdGVUYWJsZSQxLAoJYWNjZXB0aW5nOiBhY2NlcHRpbmckMSwKCXRhZ3M6IHRhZ3MkMQp9OwoKLy8gQ2F0ZW9yaWVzIHVzZWQgaW4gdGhlIE9wZW5UeXBlIHNwZWM6Ci8vIGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9vdGZudGRldi9kZXZhbm90L3NoYXBpbmcuYXNweAp2YXIgQ0FURUdPUklFUyA9IHsKICBYOiAxIDw8IDAsCiAgQzogMSA8PCAxLAogIFY6IDEgPDwgMiwKICBOOiAxIDw8IDMsCiAgSDogMSA8PCA0LAogIFpXTko6IDEgPDwgNSwKICBaV0o6IDEgPDwgNiwKICBNOiAxIDw8IDcsCiAgU006IDEgPDwgOCwKICBWRDogMSA8PCA5LAogIEE6IDEgPDwgMTAsCiAgUGxhY2Vob2xkZXI6IDEgPDwgMTEsCiAgRG90dGVkX0NpcmNsZTogMSA8PCAxMiwKICBSUzogMSA8PCAxMywgLy8gUmVnaXN0ZXIgU2hpZnRlciwgdXNlZCBpbiBLaG1lciBPVCBzcGVjLgogIENvZW5nOiAxIDw8IDE0LCAvLyBLaG1lci1zdHlsZSBWaXJhbWEuCiAgUmVwaGE6IDEgPDwgMTUsIC8vIEF0b21pY2FsbHktZW5jb2RlZCBsb2dpY2FsIG9yIHZpc3VhbCByZXBoYS4KICBSYTogMSA8PCAxNiwKICBDTTogMSA8PCAxNywgLy8gQ29uc29uYW50LU1lZGlhbC4KICBTeW1ib2w6IDEgPDwgMTggLy8gQXZhZ3JhaGEsIGV0YyB0aGF0IHRha2UgbWFya3MgKFNNLEEsVkQpLgp9OwoKLy8gVmlzdWFsIHBvc2l0aW9ucyBpbiBhIHN5bGxhYmxlIGZyb20gbGVmdCB0byByaWdodC4KdmFyIFBPU0lUSU9OUyA9IHsKICBTdGFydDogMSA8PCAwLAoKICBSYV9Ub19CZWNvbWVfUmVwaDogMSA8PCAxLAogIFByZV9NOiAxIDw8IDIsCiAgUHJlX0M6IDEgPDwgMywKCiAgQmFzZV9DOiAxIDw8IDQsCiAgQWZ0ZXJfTWFpbjogMSA8PCA1LAoKICBBYm92ZV9DOiAxIDw8IDYsCgogIEJlZm9yZV9TdWI6IDEgPDwgNywKICBCZWxvd19DOiAxIDw8IDgsCiAgQWZ0ZXJfU3ViOiAxIDw8IDksCgogIEJlZm9yZV9Qb3N0OiAxIDw8IDEwLAogIFBvc3RfQzogMSA8PCAxMSwKICBBZnRlcl9Qb3N0OiAxIDw8IDEyLAoKICBGaW5hbF9DOiAxIDw8IDEzLAogIFNNVkQ6IDEgPDwgMTQsCgogIEVuZDogMSA8PCAxNQp9OwoKdmFyIENPTlNPTkFOVF9GTEFHUyA9IENBVEVHT1JJRVMuQyB8IENBVEVHT1JJRVMuUmEgfCBDQVRFR09SSUVTLkNNIHwgQ0FURUdPUklFUy5WIHwgQ0FURUdPUklFUy5QbGFjZWhvbGRlciB8IENBVEVHT1JJRVMuRG90dGVkX0NpcmNsZTsKdmFyIEpPSU5FUl9GTEFHUyA9IENBVEVHT1JJRVMuWldKIHwgQ0FURUdPUklFUy5aV05KOwp2YXIgSEFMQU5UX09SX0NPRU5HX0ZMQUdTID0gQ0FURUdPUklFUy5IIHwgQ0FURUdPUklFUy5Db2VuZzsKCnZhciBJTkRJQ19DT05GSUdTID0gewogIERlZmF1bHQ6IHsKICAgIGhhc09sZFNwZWM6IGZhbHNlLAogICAgdmlyYW1hOiAwLAogICAgYmFzZVBvczogJ0xhc3QnLAogICAgcmVwaFBvczogUE9TSVRJT05TLkJlZm9yZV9Qb3N0LAogICAgcmVwaE1vZGU6ICdJbXBsaWNpdCcsCiAgICBibHdmTW9kZTogJ1ByZV9BbmRfUG9zdCcKICB9LAoKICBEZXZhbmFnYXJpOiB7CiAgICBoYXNPbGRTcGVjOiB0cnVlLAogICAgdmlyYW1hOiAweDA5NEQsCiAgICBiYXNlUG9zOiAnTGFzdCcsCiAgICByZXBoUG9zOiBQT1NJVElPTlMuQmVmb3JlX1Bvc3QsCiAgICByZXBoTW9kZTogJ0ltcGxpY2l0JywKICAgIGJsd2ZNb2RlOiAnUHJlX0FuZF9Qb3N0JwogIH0sCgogIEJlbmdhbGk6IHsKICAgIGhhc09sZFNwZWM6IHRydWUsCiAgICB2aXJhbWE6IDB4MDlDRCwKICAgIGJhc2VQb3M6ICdMYXN0JywKICAgIHJlcGhQb3M6IFBPU0lUSU9OUy5BZnRlcl9TdWIsCiAgICByZXBoTW9kZTogJ0ltcGxpY2l0JywKICAgIGJsd2ZNb2RlOiAnUHJlX0FuZF9Qb3N0JwogIH0sCgogIEd1cm11a2hpOiB7CiAgICBoYXNPbGRTcGVjOiB0cnVlLAogICAgdmlyYW1hOiAweDBBNEQsCiAgICBiYXNlUG9zOiAnTGFzdCcsCiAgICByZXBoUG9zOiBQT1NJVElPTlMuQmVmb3JlX1N1YiwKICAgIHJlcGhNb2RlOiAnSW1wbGljaXQnLAogICAgYmx3Zk1vZGU6ICdQcmVfQW5kX1Bvc3QnCiAgfSwKCiAgR3VqYXJhdGk6IHsKICAgIGhhc09sZFNwZWM6IHRydWUsCiAgICB2aXJhbWE6IDB4MEFDRCwKICAgIGJhc2VQb3M6ICdMYXN0JywKICAgIHJlcGhQb3M6IFBPU0lUSU9OUy5CZWZvcmVfUG9zdCwKICAgIHJlcGhNb2RlOiAnSW1wbGljaXQnLAogICAgYmx3Zk1vZGU6ICdQcmVfQW5kX1Bvc3QnCiAgfSwKCiAgT3JpeWE6IHsKICAgIGhhc09sZFNwZWM6IHRydWUsCiAgICB2aXJhbWE6IDB4MEI0RCwKICAgIGJhc2VQb3M6ICdMYXN0JywKICAgIHJlcGhQb3M6IFBPU0lUSU9OUy5BZnRlcl9NYWluLAogICAgcmVwaE1vZGU6ICdJbXBsaWNpdCcsCiAgICBibHdmTW9kZTogJ1ByZV9BbmRfUG9zdCcKICB9LAoKICBUYW1pbDogewogICAgaGFzT2xkU3BlYzogdHJ1ZSwKICAgIHZpcmFtYTogMHgwQkNELAogICAgYmFzZVBvczogJ0xhc3QnLAogICAgcmVwaFBvczogUE9TSVRJT05TLkFmdGVyX1Bvc3QsCiAgICByZXBoTW9kZTogJ0ltcGxpY2l0JywKICAgIGJsd2ZNb2RlOiAnUHJlX0FuZF9Qb3N0JwogIH0sCgogIFRlbHVndTogewogICAgaGFzT2xkU3BlYzogdHJ1ZSwKICAgIHZpcmFtYTogMHgwQzRELAogICAgYmFzZVBvczogJ0xhc3QnLAogICAgcmVwaFBvczogUE9TSVRJT05TLkFmdGVyX1Bvc3QsCiAgICByZXBoTW9kZTogJ0V4cGxpY2l0JywKICAgIGJsd2ZNb2RlOiAnUG9zdF9Pbmx5JwogIH0sCgogIEthbm5hZGE6IHsKICAgIGhhc09sZFNwZWM6IHRydWUsCiAgICB2aXJhbWE6IDB4MENDRCwKICAgIGJhc2VQb3M6ICdMYXN0JywKICAgIHJlcGhQb3M6IFBPU0lUSU9OUy5BZnRlcl9Qb3N0LAogICAgcmVwaE1vZGU6ICdJbXBsaWNpdCcsCiAgICBibHdmTW9kZTogJ1Bvc3RfT25seScKICB9LAoKICBNYWxheWFsYW06IHsKICAgIGhhc09sZFNwZWM6IHRydWUsCiAgICB2aXJhbWE6IDB4MEQ0RCwKICAgIGJhc2VQb3M6ICdMYXN0JywKICAgIHJlcGhQb3M6IFBPU0lUSU9OUy5BZnRlcl9NYWluLAogICAgcmVwaE1vZGU6ICdMb2dfUmVwaGEnLAogICAgYmx3Zk1vZGU6ICdQcmVfQW5kX1Bvc3QnCiAgfSwKCiAgLy8gSGFuZGxlZCBieSBVbml2ZXJzYWxTaGFwZXIKICAvLyBTaW5oYWxhOiB7CiAgLy8gICBoYXNPbGRTcGVjOiBmYWxzZSwKICAvLyAgIHZpcmFtYTogMHgwRENBLAogIC8vICAgYmFzZVBvczogJ0xhc3RfU2luaGFsYScsCiAgLy8gICByZXBoUG9zOiBQT1NJVElPTlMuQWZ0ZXJfTWFpbiwKICAvLyAgIHJlcGhNb2RlOiAnRXhwbGljaXQnLAogIC8vICAgYmx3Zk1vZGU6ICdQcmVfQW5kX1Bvc3QnCiAgLy8gfSwKCiAgS2htZXI6IHsKICAgIGhhc09sZFNwZWM6IGZhbHNlLAogICAgdmlyYW1hOiAweDE3RDIsCiAgICBiYXNlUG9zOiAnRmlyc3QnLAogICAgcmVwaFBvczogUE9TSVRJT05TLlJhX1RvX0JlY29tZV9SZXBoLAogICAgcmVwaE1vZGU6ICdWaXNfUmVwaGEnLAogICAgYmx3Zk1vZGU6ICdQcmVfQW5kX1Bvc3QnCiAgfQp9OwoKLy8gQWRkaXRpb25hbCBkZWNvbXBvc2l0aW9ucyB0aGF0IGFyZW4ndCBpbiBVbmljb2RlCnZhciBJTkRJQ19ERUNPTVBPU0lUSU9OUyA9IHsKICAvLyBLaG1lcgogIDB4MTdCRTogWzB4MTdDMSwgMHgxN0JFXSwKICAweDE3QkY6IFsweDE3QzEsIDB4MTdCRl0sCiAgMHgxN0MwOiBbMHgxN0MxLCAweDE3QzBdLAogIDB4MTdDNDogWzB4MTdDMSwgMHgxN0M0XSwKICAweDE3QzU6IFsweDE3QzEsIDB4MTdDNV0KfTsKCnZhciBfY2xhc3MkNjsKdmFyIF90ZW1wJDI7CnZhciBkZWNvbXBvc2l0aW9ucyA9IHVzZURhdGEuZGVjb21wb3NpdGlvbnM7Cgp2YXIgdHJpZSQxID0gbmV3IFVuaWNvZGVUcmllKEJ1ZmZlcigiQUJFQUFBQUFBQUFBQU1LZ0FiRU5Udkx0blgrc0hVVVZ4L2YxM25kL3ZIZjdibCtGUkdMN1IwT0pNY1dZcGhCcmlta1ZDU0pSMnhpRWFMRUdRN0FrQkdvd2JZUlNnajhLMkIvR2twUllFNndsUVN5SktDYWdyU2xHa21xc3FVWk1ZN1MyQ1drZ3FRVmlRU2t0NEhmdXpyeDc3dHlaMmZtMXUrL1JQY2tudXpzN08zUG1uRE96czdONzN6dGVTNUtYd0t2Z0RUQ25uaVR2QmZQQkplQVZwUDJ2RnI2OUdHVXRBa3ZBTW9keXIwRGVUNEJyd0Nwd1BWZ0RiZ2EzZ2ErRGpZYnlsdUxjQ3ZCTjhGMndHV3dITzhFajREanlQSWJ0ejBEQ2VacHZENENENEUvZ2IrQW9PQUZPZ3RQZ0xLaU5Ka2tiVElLTHdBTHdmdkFoOEdHd0hGd0ZQZzJ1QXplQ204RnQ0RTV3TjdnUFBBaStEMzRBZmdSK0FwN2t4OCtBWjhIdndaL0JFWEFNdkFoZUFhK0JjNk9wenZWR2tuVEFCWTMwZUI2MkM4R2xZREZZQ3BhRHEvbjV6Mko3UFZnRGJnRzNOMUtick9kYld6YnkvTi9HOWk2d2xSOC93TGViVU5jT2xsN3ZYN1BMc1E0YmRwQXk5MkIvTDNnSzdBTy9BMzhFZndYL0FDK0FreVQvbTN4N21xZHRZejdHZnEyWkpPUGdQYzNVWHUvRDl1Sm1tbWNSVDF1QzdUSndaVE9OSnhGTDErSjRKYmdCckFHM2dOdjVOZXY1ZGhPMm0zbDU0cnF0T043Uk5MZDFWOFo1YXVNZkkrOFdidnYxMlA0VXg3OEF2eVpsL0JiN2Z3RDM0SHdIL0VWUi90OHQ2clJscllnRmxIbk1zZHlYSXVwUkZQK0d6djhCYjRDa2xTU2pyVFI5YnoyMXVaeC9Oajh2K3VJRk9KNEhGbkpvM2tXdE5HNldrUFN6QmwxWWJDOGplVmZ4K3ErUjlQZzQ4bHhOOGpGZGhkOCswMUxyTFRDZHE2aW84R05iMWE4cUtpb3FLaW9xS2lvYzJjYlhHY3JXUTJZbmY5YTlybVYvelZ1YTlEYzE2Vi9nejhwZnh2YXI0QTZ3QWR3TDdnZGJ3VVBnaCtCUjhBUjRxcFd1TGUzRDlnQTRDQTZESStBb09BRk90ZEwxbk5leGZZczkzN2Z4REE4dWJLZjF6bXYzZFZpSS9VdmI5bTJzcUtpb3FBaUhyVnRlaHJIM1RLMi8zbDRXWmR1aW9xSWlEcStSZDFKYmVmOWVobkhtU25DdE5OZjduT1BjcjhQSGlsTzhqcmZCRjl2OTk2bGZ3ZjZ0VXBsM3RQdnZkU2pzdmN3R25MdDNHc3cva3prcEs4Q2RZSDgzbXkzSWQwaVQ5MVdrTDV4TWt0WGdJZkQ4NU9ENTR6amZtWXU1T0ZnTjdoMUxrbWRCTWc1ZmdidkFDaHp2NDl1amZFdVozeGxPazdrUmVUYVNmTC9CL2psK2ZNWHNKTGtiN0FjUGo4VGxIQy96c2duWWN5TGQzelNoMXZHQUpyMmlvcUtpSW4vZUtYa01qbjMvY1dGNXQvejZ5MzcrSzV1cndQMllCMzZ2UGZ3OHlyN3plUmpwdThnOGNUZjJIMituODlFdGl2TEU5M2ZzMjdFei9CcjJ2TTIrcVdQbC9aeVg5U3RGZlF4VzV2NzI0UFB4elh6N1hIdTRQcHM1SnZ0bWlxMTNzem16ZlAwaGxIa1lIR24zNThiSGVEMHZZdnN5K0sra3o5dnQvank4Z1Q0MEcxdzRSdWEwUE45OG5uYUdmL2UxRyttWElPMkRZOFA2WHo3V1B6N0t5LzdvbUowUEJmZjQrQjkxZkFxc0FwOEhYd0kzZ1IwNHR4YmJkV0REV0RwUC9nN1l4czZCWFdBUDJBdWVKSG8rTTViT3B3K0N3K0FJT0FwT2dGTVc3WGtkZWM2QWtYSDErUWZneXpiT1RZNzNqeS9DL2dKKy9DQ09QNEQ5eGZ6NEk5aCtURk1XdGY5U1JXelp3cTdmMHlpL0w5dm9XU1JiRGZWL2NseC8zVHVLZmpvVDI2L2lYODEzVVJ4NHRpVkczYXkvc2ZGdUplbmI3SjUwQTRtcjFkaS9DWnpMS1o2eTJyZXVudXA0cXpUK2ZNMHdIcDBQVUQ5K0E3YllOSjVmbjNlTlAvRnQ1YmMwK1M0bjkvbDFHaitLODJ6ZXNkMXdmajNmWjc5aDJZeXlWdkxqN2RqZkNSNHhqSkV5dXkxK1MvRnlEdC9NUHdvZG41aEI4YXhyeHk5blNCdFlqT3lIcnMrQlErQjU4RSt1K3dzV2JXQnRwYi9oWUw4UnVBL3BKOGZUMkdmZlgrd2wrZGFTYTA4ano5bnhORzJrNDk2M1hCRy9aVmhwVVM1NzNtaDNCdFBvN3gvRWI3cEUyeWQ1WHZac3NZL00vUlpMYzlTTGVEc2ZENWdmVGlkaTkvL3B3cnpXdTd0OWxLY043ZHh5bnRoQWg4dmNLclF1MWZySFRHS0JORjY2Mktmb09YVTFGc2FGeGU2eDJrakNsa0JuR3ZYeHdYMGJ5dFo1dW5LK1M5bjJqeGFiVGM1TTBIVWFJeVRyZkZhK0xqbWZsYzlYejdKdE5kUGE0ZUt6NldBUGxiNWw2eGZMQnpvcFd4Y2ZuY3ZTZjdySFJKazJLU04yYktSc3ZjdTJVWm14VkliOXFkNTUxZThyWmNURVJHdVErcXdJakVSa2psMitkak9saFdmcGlibnAvcXhtUDkyRlZyMS9iYzlHWXh4dUk1bzNVemR1a3pZcGorSDZuT3hyYTluSGlha3NqaERkc2FzUGU5Y2EvQ3ZPVTFHVndVVDR0OFA5MjFINFQ4Z3Nua2RJaCtkbi9wWHJVMG1uT1p3MjFDYkp2MVA1TFAwcjRqdGtiTEgxNzFCYkN2YXZuRmZlWjhMOEsyd3YvQ3VRUlU2bi9xV1NOU2JyMm1POHh0Sy9VK01xNlkvMXlReUZKSEh0djhLbjJ1T0MvR3ZiZjJWRVB4SjlTdmhZNWQrUSt5MjFpUnhMcnVPenNZNk1XR3JPa1BIWjFiK2pGdVB6cUVYL1ZjbW9aa3lJUFQ1M2szNi9EWm5yTWQrSy9EYmpzNmt2Nis2VllsOU9VK1dUMDdUcGx2TXZXV2hmVm8zZjR0NDhTK3JiaklabC8xYjVYeWQ1dkpkUWlUeWY3dFVkTWxibjBKOWQvY242YzdNNURPMVRORjArYm1UMFozcWRLYWFvWGVnMUx2N05FaHVmenlULzZ2SUtFZU8xalgvcHNkaTM4YTg4OXFwa1N0Y0kvdTEyVTN6RTFSZSsvWXY2UU53dmRUREpHaTl0MnBzMVh0S1lESjBQbWNaS2NVODEyc1J4dm1zN0o0N21aNWMrU1dKRDVMUFJnNHFxaituV0w4UTVzUlZyR2FyMUVHMHNPSTZuZEgzRFZXTDd3cGV1d2FZNk8xTmgxOU4rT3FzNXVJN0V0bzNhSUN4TnJDbjVyQXVaN0NuMmJkSnRmWlBsTC9rOExkK2tpNnY5RTU2WFBVdlQ1Mm1WL1lWdm1NajJaejhURXVOTVR4Zkh1RmZGVUo2ME9McnoxdXRPRG5GRzQ3ZkxiU2pYeTB4U3k0Z042M0V5d2xoTXhXY05tSzcxc3Zzemk1T0dUdmRKZTNydGQ4aWZCNkkvbUtCcjFhcDd1VS9zcXFUc01iK0g1ZnhCRnl1cSt5cUxuZDdjbWozM1R3eU9WVk93dWozblZYUnRRdFVHV1I5anpJNmtlY1pyS1NLUHVGYWtVMmhabVhYWk1EbHNTMVc5akJhdnY2ZUhwZjNFdGZKN21Ld1lWMGxYMmc5RlZZNU4rVW5nOWFIMTU5MCtuM0tMZ0VyZWRmaWV6NnU5c3Zpc1kvU3VrOUpzbmtsaTFhK0MxbS9UN3J6cWQ1VVk5bWZpWFg5UjkyaWJkWlVJYXdUQzk2YjFHQm42ckRHMUpzUHYvYjM5MlNraVhWVUdteU4wTE81TFlpNDZaZi9BZGMvUU1hQ284VHRHL2JIMVovVHNXMVFmVVBSam0yY1plZTVQUmFUMzNsRWJuaGxNYXg0cWUxby9ZOGEwaWNkYW9Pdjlic2grSGo2am9udWVvR3RIdW1jTWxYOWx4THhYcTcvRDg0ZlN6em5HdDZydFVlclh4WVU0Ny9JY1BlRzN2cUJiSjFTdEVUWnFnOWZTMkFrZC8wT3ZwKy9DeEQzUCsvNmJRd3pKdHN2eWg1dytYamVYSDlLZlhHSDMvVmJTWDR0UzRYb2Z0UFpibnZjeXhYMUc1UXZXMXdiV1RrYnM3YzNtVGNvNk5XT0RiZHhrM1I5bEdaby9hR3hoaWtuVG1FVFhMVnMxYzkwdTkrbUJHQ2Y2aHM2ZnNtVHEyOXN4UHY4ZDgyQ3VoQ3BOakdOamczMWJsR0hyejFpNDFoZDZudVl6YlUzWGhMUXpqN0p0NjdPdHcwdVhVZERvSDhlNEYvam9NZFZ1aTJkTUpjM0UrVGV0dnI2akV0UG5QaEphVnd6OVk3VERWbHgxcW5maXRsRWJ0emxUVkQwcVgvcGNtMWVzeEk2NVBPM21VNGVOcnI1U1pNejQ2RkRFK2FJbGI1dG50YjFvL1dPVUVUc1c4NDdwdk5wYVpIMjI1ZVVwTm5yUzl5RHk5d1R5c3lyOVhWT2U2MytxZDNNNmU0WDZQdGQxRHBjMVNkVjUzWnFGYWcxaHBQK2JFNWY0aXZZNzRCelhpbHpXV1cxK1MwVGpKbmc5MUdkOXdtYk5ncE1WejZXOGQ3R0pad1d0V3A4cCsrYzhmcGpXMFZ6ZmYzZEpmekd1b2Vyc0V0bm1walZMdXBZNDhINm83bjgvQytrdkpuK0xjZDZxM1FIeDN1c3ZaYXgzVzhhcHZQNnJlditVSlNIZmlDWWUvaDJhVHdUYVJpNURPMjhaU2Q5ek5oVGZKOGIyamU3ZHJPbzlIdE5OYlBNVzAzek9wcTJxTnFuS0ZOKzBodWhsTXllMlBlOVRkemZDZWRmeE1sUmZHN3hqbmNhSjdmaVhNWVprM1grWnZ1S2JYQ0doOHk4WEg4VHliYWpQVGZxNHRqRzIvcWIwUkpPM1NCMTliYTJTTXVvTmJXOFIvZzY1M3FhOXNkc1JZc3NzdStaeFBzcyt0bmF5RmQ5NHlqb2ZFaStoWmR2bzczcTlqZDN5aXNVWWJmRXBROVhtTXFVSW0yZkZaaDR4a1plRTFCTkRMNXYrWmNxWGgvOTBiU3dqZmx6OFUwUWNGV0h6UE9weTBhbU0rc3RxZjFhZDdMbHRWUHFXbUczcDMrR2lJdkxKZjhkdVlBM05jQndiV1Jwa0RYbW83UlArejVFNis4WHN3ejUxMmRiclcyYU1OcnBLYUJ0OXk0NVZSMmo5ZWZoQVFML1BGMzhYYWRxOTA3TllDNWRwWkx5M2tNWDZQVUhnZUdHUzNuZm9QbjlyT2JKOXMvNHVNbnRuU3QvSjVUWCsyWlJodEZjQjhaZ1ZteVpiaXQ4R0NkLzcvQzdFT2NZSzdMZHlqTmhJbEw4MW5xTi9YZjltT0h0L2Fub3ZQNFgwdHllbS9PVVpGOVRtc2NZMm56RXVscTk2WmVWd3YyQnh4bndrM3M5bmpUOG0vWVdPS2wxOTlmZTUzdFRYeXU1RExvamZLV1hlajZSM1JBUHREZjFleC9QdnRkSjhRN2FQN0h0NlhwZFhTSmY4L3dNZFF1Uy9qMC9IdEtueTlLYlQrb1QySzJFVHVXN1R0MDlVc3M1bkNkV2hqUHVNVFh6cnp0TzRGSE15K1Y2VEphSDlJNisyQzVIUHE5b2M4eGxLUnZhNXJGOE0vN3RDMjYvNkJzTkZpdlEvL2UxcFZzeVAxOVZyTnJIMUQ1V2k3b1VEZFZwOFE1SFZyMXp0bHpYUHRIMkdjMzArbE1YM2VkSDNlY20zZnAwK1BzL0lQdldINk9waVY3bWVFTWxienlJa3BpMWp0RFUwUG1tNm5NZDBqVThiWEs3TjBqV2tiL2pvSHlOZWJmV2d0ckpwYzBoN1FpUVAyNGFLcWN3WVBuVFJJVW1HNjNmUlE1VlhMc2VrZ3k1TnRWWFZhZExmcGp6VjlTNnhZbnVOcmkxNTlabXNtTENwSjgvNlhTUkdPYUg2NTlIK0dMWXR3aGQ1MXh2cTMxQjlRbTBVYXZNODRxaG9LYU5PbmZ3ZiIsImJhc2U2NCIpKTsKdmFyIHN0YXRlTWFjaGluZSA9IG5ldyBTdGF0ZU1hY2hpbmUoaW5kaWNNYWNoaW5lKTsKCi8qKgogKiBUaGUgSW5kaWNTaGFwZXIgc3VwcG9ydHMgaW5kaWMgc2NyaXB0cyBlLmcuIERldmFuYWdhcmksIEthbm5hZGEsIGV0Yy4KICogQmFzZWQgb24gY29kZSBmcm9tIEhhcmZidXp6OiBodHRwczovL2dpdGh1Yi5jb20vYmVoZGFkL2hhcmZidXp6L2Jsb2IvbWFzdGVyL3NyYy9oYi1vdC1zaGFwZS1jb21wbGV4LWluZGljLmNjCiAqLwp2YXIgSW5kaWNTaGFwZXIgPSAoX3RlbXAkMiA9IF9jbGFzcyQ2ID0gZnVuY3Rpb24gKF9EZWZhdWx0U2hhcGVyKSB7CiAgX2luaGVyaXRzKEluZGljU2hhcGVyLCBfRGVmYXVsdFNoYXBlcik7CgogIGZ1bmN0aW9uIEluZGljU2hhcGVyKCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEluZGljU2hhcGVyKTsKCiAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX0RlZmF1bHRTaGFwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7CiAgfQoKICBJbmRpY1NoYXBlci5wbGFuRmVhdHVyZXMgPSBmdW5jdGlvbiBwbGFuRmVhdHVyZXMocGxhbikgewogICAgcGxhbi5hZGRTdGFnZShzZXR1cFN5bGxhYmxlcyk7CgogICAgcGxhbi5hZGRTdGFnZShbJ2xvY2wnLCAnY2NtcCddKTsKCiAgICBwbGFuLmFkZFN0YWdlKGluaXRpYWxSZW9yZGVyaW5nKTsKCiAgICBwbGFuLmFkZFN0YWdlKCdudWt0Jyk7CiAgICBwbGFuLmFkZFN0YWdlKCdha2huJyk7CiAgICBwbGFuLmFkZFN0YWdlKCdycGhmJywgZmFsc2UpOwogICAgcGxhbi5hZGRTdGFnZSgncmtyZicpOwogICAgcGxhbi5hZGRTdGFnZSgncHJlZicsIGZhbHNlKTsKICAgIHBsYW4uYWRkU3RhZ2UoJ2Jsd2YnLCBmYWxzZSk7CiAgICBwbGFuLmFkZFN0YWdlKCdhYnZmJywgZmFsc2UpOwogICAgcGxhbi5hZGRTdGFnZSgnaGFsZicsIGZhbHNlKTsKICAgIHBsYW4uYWRkU3RhZ2UoJ3BzdGYnLCBmYWxzZSk7CiAgICBwbGFuLmFkZFN0YWdlKCd2YXR1Jyk7CiAgICBwbGFuLmFkZFN0YWdlKCdjamN0Jyk7CiAgICBwbGFuLmFkZFN0YWdlKCdjZmFyJywgZmFsc2UpOwoKICAgIHBsYW4uYWRkU3RhZ2UoZmluYWxSZW9yZGVyaW5nKTsKCiAgICBwbGFuLmFkZFN0YWdlKHsKICAgICAgbG9jYWw6IFsnaW5pdCddLAogICAgICBnbG9iYWw6IFsncHJlcycsICdhYnZzJywgJ2Jsd3MnLCAncHN0cycsICdoYWxuJywgJ2Rpc3QnLCAnYWJ2bScsICdibHdtJywgJ2NhbHQnLCAnY2xpZyddCiAgICB9KTsKCiAgICAvLyBTZXR1cCB0aGUgaW5kaWMgY29uZmlnIGZvciB0aGUgc2VsZWN0ZWQgc2NyaXB0CiAgICBwbGFuLnVuaWNvZGVTY3JpcHQgPSBmcm9tT3BlblR5cGUocGxhbi5zY3JpcHQpOwogICAgcGxhbi5pbmRpY0NvbmZpZyA9IElORElDX0NPTkZJR1NbcGxhbi51bmljb2RlU2NyaXB0XSB8fCBJTkRJQ19DT05GSUdTLkRlZmF1bHQ7CiAgICBwbGFuLmlzT2xkU3BlYyA9IHBsYW4uaW5kaWNDb25maWcuaGFzT2xkU3BlYyAmJiBwbGFuLnNjcmlwdFtwbGFuLnNjcmlwdC5sZW5ndGggLSAxXSAhPT0gJzInOwoKICAgIC8vIFRPRE86IHR1cm4gb2ZmIGtlcm4gKEtobWVyKSBhbmQgbGlnYSBmZWF0dXJlcy4KICB9OwoKICBJbmRpY1NoYXBlci5hc3NpZ25GZWF0dXJlcyA9IGZ1bmN0aW9uIGFzc2lnbkZlYXR1cmVzKHBsYW4sIGdseXBocykgewogICAgdmFyIF9sb29wID0gZnVuY3Rpb24gX2xvb3AoaSkgewogICAgICB2YXIgY29kZXBvaW50ID0gZ2x5cGhzW2ldLmNvZGVQb2ludHNbMF07CiAgICAgIHZhciBkID0gSU5ESUNfREVDT01QT1NJVElPTlNbY29kZXBvaW50XSB8fCBkZWNvbXBvc2l0aW9uc1tjb2RlcG9pbnRdOwogICAgICBpZiAoZCkgewogICAgICAgIHZhciBkZWNvbXBvc2VkID0gZC5tYXAoZnVuY3Rpb24gKGMpIHsKICAgICAgICAgIHZhciBnID0gcGxhbi5mb250LmdseXBoRm9yQ29kZVBvaW50KGMpOwogICAgICAgICAgcmV0dXJuIG5ldyBHbHlwaEluZm8ocGxhbi5mb250LCBnLmlkLCBbY10sIGdseXBoc1tpXS5mZWF0dXJlcyk7CiAgICAgICAgfSk7CgogICAgICAgIGdseXBocy5zcGxpY2UuYXBwbHkoZ2x5cGhzLCBbaSwgMV0uY29uY2F0KGRlY29tcG9zZWQpKTsKICAgICAgfQogICAgfTsKCiAgICAvLyBEZWNvbXBvc2Ugc3BsaXQgbWF0cmFzCiAgICAvLyBUT0RPOiBkbyB0aGlzIGluIGEgbW9yZSBnZW5lcmFsIHVuaWNvZGUgbm9ybWFsaXplcgogICAgZm9yICh2YXIgaSA9IGdseXBocy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgewogICAgICBfbG9vcChpKTsKICAgIH0KICB9OwoKICByZXR1cm4gSW5kaWNTaGFwZXI7Cn0oRGVmYXVsdFNoYXBlciksIF9jbGFzcyQ2Lnplcm9NYXJrV2lkdGhzID0gJ05PTkUnLCBfdGVtcCQyKTsKZnVuY3Rpb24gaW5kaWNDYXRlZ29yeShnbHlwaCkgewogIHJldHVybiB0cmllJDEuZ2V0KGdseXBoLmNvZGVQb2ludHNbMF0pID4+IDg7Cn0KCmZ1bmN0aW9uIGluZGljUG9zaXRpb24oZ2x5cGgpIHsKICByZXR1cm4gMSA8PCAodHJpZSQxLmdldChnbHlwaC5jb2RlUG9pbnRzWzBdKSAmIDB4ZmYpOwp9Cgp2YXIgSW5kaWNJbmZvID0gZnVuY3Rpb24gSW5kaWNJbmZvKGNhdGVnb3J5LCBwb3NpdGlvbiwgc3lsbGFibGVUeXBlLCBzeWxsYWJsZSkgewogIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBJbmRpY0luZm8pOwoKICB0aGlzLmNhdGVnb3J5ID0gY2F0ZWdvcnk7CiAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uOwogIHRoaXMuc3lsbGFibGVUeXBlID0gc3lsbGFibGVUeXBlOwogIHRoaXMuc3lsbGFibGUgPSBzeWxsYWJsZTsKfTsKCmZ1bmN0aW9uIHNldHVwU3lsbGFibGVzKGZvbnQsIGdseXBocykgewogIHZhciBzeWxsYWJsZSA9IDA7CiAgdmFyIGxhc3QgPSAwOwogIGZvciAodmFyIF9pdGVyYXRvciA9IHN0YXRlTWFjaGluZS5tYXRjaChnbHlwaHMubWFwKGluZGljQ2F0ZWdvcnkpKSwgX2lzQXJyYXkgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvciksIF9pID0gMCwgX2l0ZXJhdG9yID0gX2lzQXJyYXkgPyBfaXRlcmF0b3IgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yKTs7KSB7CiAgICB2YXIgX3JlZjsKCiAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgaWYgKF9pID49IF9pdGVyYXRvci5sZW5ndGgpIGJyZWFrOwogICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgfSBlbHNlIHsKICAgICAgX2kgPSBfaXRlcmF0b3IubmV4dCgpOwogICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgIH0KCiAgICB2YXIgX3JlZjIgPSBfcmVmLAogICAgICAgIHN0YXJ0ID0gX3JlZjJbMF0sCiAgICAgICAgZW5kID0gX3JlZjJbMV0sCiAgICAgICAgdGFncyA9IF9yZWYyWzJdOwoKICAgIGlmIChzdGFydCA+IGxhc3QpIHsKICAgICAgKytzeWxsYWJsZTsKICAgICAgZm9yICh2YXIgX2kyID0gbGFzdDsgX2kyIDwgc3RhcnQ7IF9pMisrKSB7CiAgICAgICAgZ2x5cGhzW19pMl0uc2hhcGVySW5mbyA9IG5ldyBJbmRpY0luZm8oQ0FURUdPUklFUy5YLCBQT1NJVElPTlMuRW5kLCAnbm9uX2luZGljX2NsdXN0ZXInLCBzeWxsYWJsZSk7CiAgICAgIH0KICAgIH0KCiAgICArK3N5bGxhYmxlOwoKICAgIC8vIENyZWF0ZSBzaGFwZXIgaW5mbwogICAgZm9yICh2YXIgX2kzID0gc3RhcnQ7IF9pMyA8PSBlbmQ7IF9pMysrKSB7CiAgICAgIGdseXBoc1tfaTNdLnNoYXBlckluZm8gPSBuZXcgSW5kaWNJbmZvKDEgPDwgaW5kaWNDYXRlZ29yeShnbHlwaHNbX2kzXSksIGluZGljUG9zaXRpb24oZ2x5cGhzW19pM10pLCB0YWdzWzBdLCBzeWxsYWJsZSk7CiAgICB9CgogICAgbGFzdCA9IGVuZCArIDE7CiAgfQoKICBpZiAobGFzdCA8IGdseXBocy5sZW5ndGgpIHsKICAgICsrc3lsbGFibGU7CiAgICBmb3IgKHZhciBpID0gbGFzdDsgaSA8IGdseXBocy5sZW5ndGg7IGkrKykgewogICAgICBnbHlwaHNbaV0uc2hhcGVySW5mbyA9IG5ldyBJbmRpY0luZm8oQ0FURUdPUklFUy5YLCBQT1NJVElPTlMuRW5kLCAnbm9uX2luZGljX2NsdXN0ZXInLCBzeWxsYWJsZSk7CiAgICB9CiAgfQp9CgpmdW5jdGlvbiBpc0NvbnNvbmFudChnbHlwaCkgewogIHJldHVybiBnbHlwaC5zaGFwZXJJbmZvLmNhdGVnb3J5ICYgQ09OU09OQU5UX0ZMQUdTOwp9CgpmdW5jdGlvbiBpc0pvaW5lcihnbHlwaCkgewogIHJldHVybiBnbHlwaC5zaGFwZXJJbmZvLmNhdGVnb3J5ICYgSk9JTkVSX0ZMQUdTOwp9CgpmdW5jdGlvbiBpc0hhbGFudE9yQ29lbmcoZ2x5cGgpIHsKICByZXR1cm4gZ2x5cGguc2hhcGVySW5mby5jYXRlZ29yeSAmIEhBTEFOVF9PUl9DT0VOR19GTEFHUzsKfQoKZnVuY3Rpb24gd291bGRTdWJzdGl0dXRlKGdseXBocywgZmVhdHVyZSkgewogIGZvciAodmFyIF9pdGVyYXRvcjIgPSBnbHlwaHMsIF9pc0FycmF5MiA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMiksIF9pNCA9IDAsIF9pdGVyYXRvcjIgPSBfaXNBcnJheTIgPyBfaXRlcmF0b3IyIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjIpOzspIHsKICAgIHZhciBfZ2x5cGgkZmVhdHVyZXM7CgogICAgdmFyIF9yZWYzOwoKICAgIGlmIChfaXNBcnJheTIpIHsKICAgICAgaWYgKF9pNCA+PSBfaXRlcmF0b3IyLmxlbmd0aCkgYnJlYWs7CiAgICAgIF9yZWYzID0gX2l0ZXJhdG9yMltfaTQrK107CiAgICB9IGVsc2UgewogICAgICBfaTQgPSBfaXRlcmF0b3IyLm5leHQoKTsKICAgICAgaWYgKF9pNC5kb25lKSBicmVhazsKICAgICAgX3JlZjMgPSBfaTQudmFsdWU7CiAgICB9CgogICAgdmFyIGdseXBoID0gX3JlZjM7CgogICAgZ2x5cGguZmVhdHVyZXMgPSAoX2dseXBoJGZlYXR1cmVzID0ge30sIF9nbHlwaCRmZWF0dXJlc1tmZWF0dXJlXSA9IHRydWUsIF9nbHlwaCRmZWF0dXJlcyk7CiAgfQoKICB2YXIgR1NVQiA9IGdseXBoc1swXS5fZm9udC5fbGF5b3V0RW5naW5lLmVuZ2luZS5HU1VCUHJvY2Vzc29yOwogIEdTVUIuYXBwbHlGZWF0dXJlcyhbZmVhdHVyZV0sIGdseXBocyk7CgogIHJldHVybiBnbHlwaHMubGVuZ3RoID09PSAxOwp9CgpmdW5jdGlvbiBjb25zb25hbnRQb3NpdGlvbihmb250LCBjb25zb25hbnQsIHZpcmFtYSkgewogIHZhciBnbHlwaHMgPSBbdmlyYW1hLCBjb25zb25hbnQsIHZpcmFtYV07CiAgaWYgKHdvdWxkU3Vic3RpdHV0ZShnbHlwaHMuc2xpY2UoMCwgMiksICdibHdmJykgfHwgd291bGRTdWJzdGl0dXRlKGdseXBocy5zbGljZSgxLCAzKSwgJ2Jsd2YnKSkgewogICAgcmV0dXJuIFBPU0lUSU9OUy5CZWxvd19DOwogIH0gZWxzZSBpZiAod291bGRTdWJzdGl0dXRlKGdseXBocy5zbGljZSgwLCAyKSwgJ3BzdGYnKSB8fCB3b3VsZFN1YnN0aXR1dGUoZ2x5cGhzLnNsaWNlKDEsIDMpLCAncHN0ZicpKSB7CiAgICByZXR1cm4gUE9TSVRJT05TLlBvc3RfQzsKICB9IGVsc2UgaWYgKHdvdWxkU3Vic3RpdHV0ZShnbHlwaHMuc2xpY2UoMCwgMiksICdwcmVmJykgfHwgd291bGRTdWJzdGl0dXRlKGdseXBocy5zbGljZSgxLCAzKSwgJ3ByZWYnKSkgewogICAgcmV0dXJuIFBPU0lUSU9OUy5Qb3N0X0M7CiAgfQoKICByZXR1cm4gUE9TSVRJT05TLkJhc2VfQzsKfQoKZnVuY3Rpb24gaW5pdGlhbFJlb3JkZXJpbmcoZm9udCwgZ2x5cGhzLCBwbGFuKSB7CiAgdmFyIGluZGljQ29uZmlnID0gcGxhbi5pbmRpY0NvbmZpZzsKICB2YXIgZmVhdHVyZXMgPSBmb250Ll9sYXlvdXRFbmdpbmUuZW5naW5lLkdTVUJQcm9jZXNzb3IuZmVhdHVyZXM7CgogIHZhciBkb3R0ZWRDaXJjbGUgPSBmb250LmdseXBoRm9yQ29kZVBvaW50KDB4MjVjYykuaWQ7CiAgdmFyIHZpcmFtYSA9IGZvbnQuZ2x5cGhGb3JDb2RlUG9pbnQoaW5kaWNDb25maWcudmlyYW1hKS5pZDsKICBpZiAodmlyYW1hKSB7CiAgICB2YXIgaW5mbyA9IG5ldyBHbHlwaEluZm8oZm9udCwgdmlyYW1hLCBbaW5kaWNDb25maWcudmlyYW1hXSk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdseXBocy5sZW5ndGg7IGkrKykgewogICAgICBpZiAoZ2x5cGhzW2ldLnNoYXBlckluZm8ucG9zaXRpb24gPT09IFBPU0lUSU9OUy5CYXNlX0MpIHsKICAgICAgICBnbHlwaHNbaV0uc2hhcGVySW5mby5wb3NpdGlvbiA9IGNvbnNvbmFudFBvc2l0aW9uKGZvbnQsIGdseXBoc1tpXS5jb3B5KCksIGluZm8pOwogICAgICB9CiAgICB9CiAgfQoKICBmb3IgKHZhciBzdGFydCA9IDAsIGVuZCA9IG5leHRTeWxsYWJsZShnbHlwaHMsIDApOyBzdGFydCA8IGdseXBocy5sZW5ndGg7IHN0YXJ0ID0gZW5kLCBlbmQgPSBuZXh0U3lsbGFibGUoZ2x5cGhzLCBzdGFydCkpIHsKICAgIHZhciBfZ2x5cGhzJHN0YXJ0JHNoYXBlckkgPSBnbHlwaHNbc3RhcnRdLnNoYXBlckluZm8sCiAgICAgICAgY2F0ZWdvcnkgPSBfZ2x5cGhzJHN0YXJ0JHNoYXBlckkuY2F0ZWdvcnksCiAgICAgICAgc3lsbGFibGVUeXBlID0gX2dseXBocyRzdGFydCRzaGFwZXJJLnN5bGxhYmxlVHlwZTsKCgogICAgaWYgKHN5bGxhYmxlVHlwZSA9PT0gJ3N5bWJvbF9jbHVzdGVyJyB8fCBzeWxsYWJsZVR5cGUgPT09ICdub25faW5kaWNfY2x1c3RlcicpIHsKICAgICAgY29udGludWU7CiAgICB9CgogICAgaWYgKHN5bGxhYmxlVHlwZSA9PT0gJ2Jyb2tlbl9jbHVzdGVyJyAmJiBkb3R0ZWRDaXJjbGUpIHsKICAgICAgdmFyIGcgPSBuZXcgR2x5cGhJbmZvKGZvbnQsIGRvdHRlZENpcmNsZSwgWzB4MjVjY10pOwogICAgICBnLnNoYXBlckluZm8gPSBuZXcgSW5kaWNJbmZvKDEgPDwgaW5kaWNDYXRlZ29yeShnKSwgaW5kaWNQb3NpdGlvbihnKSwgZ2x5cGhzW3N0YXJ0XS5zaGFwZXJJbmZvLnN5bGxhYmxlVHlwZSwgZ2x5cGhzW3N0YXJ0XS5zaGFwZXJJbmZvLnN5bGxhYmxlKTsKCiAgICAgIC8vIEluc2VydCBhZnRlciBwb3NzaWJsZSBSZXBoYS4KICAgICAgdmFyIF9pNSA9IHN0YXJ0OwogICAgICB3aGlsZSAoX2k1IDwgZW5kICYmIGdseXBoc1tfaTVdLnNoYXBlckluZm8uY2F0ZWdvcnkgPT09IENBVEVHT1JJRVMuUmVwaGEpIHsKICAgICAgICBfaTUrKzsKICAgICAgfQoKICAgICAgZ2x5cGhzLnNwbGljZShfaTUrKywgMCwgZyk7CiAgICAgIGVuZCsrOwogICAgfQoKICAgIC8vIDEuIEZpbmQgYmFzZSBjb25zb25hbnQ6CiAgICAvLwogICAgLy8gVGhlIHNoYXBpbmcgZW5naW5lIGZpbmRzIHRoZSBiYXNlIGNvbnNvbmFudCBvZiB0aGUgc3lsbGFibGUsIHVzaW5nIHRoZQogICAgLy8gZm9sbG93aW5nIGFsZ29yaXRobTogc3RhcnRpbmcgZnJvbSB0aGUgZW5kIG9mIHRoZSBzeWxsYWJsZSwgbW92ZSBiYWNrd2FyZHMKICAgIC8vIHVudGlsIGEgY29uc29uYW50IGlzIGZvdW5kIHRoYXQgZG9lcyBub3QgaGF2ZSBhIGJlbG93LWJhc2Ugb3IgcG9zdC1iYXNlCiAgICAvLyBmb3JtIChwb3N0LWJhc2UgZm9ybXMgaGF2ZSB0byBmb2xsb3cgYmVsb3ctYmFzZSBmb3JtcyksIG9yIHRoYXQgaXMgbm90IGEKICAgIC8vIHByZS1iYXNlIHJlb3JkZXJpbmcgUmEsIG9yIGFycml2ZSBhdCB0aGUgZmlyc3QgY29uc29uYW50LiBUaGUgY29uc29uYW50CiAgICAvLyBzdG9wcGVkIGF0IHdpbGwgYmUgdGhlIGJhc2UuCgogICAgdmFyIGJhc2UgPSBlbmQ7CiAgICB2YXIgbGltaXQgPSBzdGFydDsKICAgIHZhciBoYXNSZXBoID0gZmFsc2U7CgogICAgLy8gSWYgdGhlIHN5bGxhYmxlIHN0YXJ0cyB3aXRoIFJhICsgSGFsYW50IChpbiBhIHNjcmlwdCB0aGF0IGhhcyBSZXBoKQogICAgLy8gYW5kIGhhcyBtb3JlIHRoYW4gb25lIGNvbnNvbmFudCwgUmEgaXMgZXhjbHVkZWQgZnJvbSBjYW5kaWRhdGVzIGZvcgogICAgLy8gYmFzZSBjb25zb25hbnRzLgogICAgaWYgKGluZGljQ29uZmlnLnJlcGhQb3MgIT09IFBPU0lUSU9OUy5SYV9Ub19CZWNvbWVfUmVwaCAmJiBmZWF0dXJlcy5ycGhmICYmIHN0YXJ0ICsgMyA8PSBlbmQgJiYgKGluZGljQ29uZmlnLnJlcGhNb2RlID09PSAnSW1wbGljaXQnICYmICFpc0pvaW5lcihnbHlwaHNbc3RhcnQgKyAyXSkgfHwgaW5kaWNDb25maWcucmVwaE1vZGUgPT09ICdFeHBsaWNpdCcgJiYgZ2x5cGhzW3N0YXJ0ICsgMl0uc2hhcGVySW5mby5jYXRlZ29yeSA9PT0gQ0FURUdPUklFUy5aV0opKSB7CiAgICAgIC8vIFNlZSBpZiBpdCBtYXRjaGVzIHRoZSAncnBoZicgZmVhdHVyZS4KICAgICAgdmFyIF9nID0gW2dseXBoc1tzdGFydF0uY29weSgpLCBnbHlwaHNbc3RhcnQgKyAxXS5jb3B5KCksIGdseXBoc1tzdGFydCArIDJdLmNvcHkoKV07CiAgICAgIGlmICh3b3VsZFN1YnN0aXR1dGUoX2cuc2xpY2UoMCwgMiksICdycGhmJykgfHwgaW5kaWNDb25maWcucmVwaE1vZGUgPT09ICdFeHBsaWNpdCcgJiYgd291bGRTdWJzdGl0dXRlKF9nLCAncnBoZicpKSB7CiAgICAgICAgbGltaXQgKz0gMjsKICAgICAgICB3aGlsZSAobGltaXQgPCBlbmQgJiYgaXNKb2luZXIoZ2x5cGhzW2xpbWl0XSkpIHsKICAgICAgICAgIGxpbWl0Kys7CiAgICAgICAgfQogICAgICAgIGJhc2UgPSBzdGFydDsKICAgICAgICBoYXNSZXBoID0gdHJ1ZTsKICAgICAgfQogICAgfSBlbHNlIGlmIChpbmRpY0NvbmZpZy5yZXBoTW9kZSA9PT0gJ0xvZ19SZXBoYScgJiYgZ2x5cGhzW3N0YXJ0XS5zaGFwZXJJbmZvLmNhdGVnb3J5ID09PSBDQVRFR09SSUVTLlJlcGhhKSB7CiAgICAgIGxpbWl0Kys7CiAgICAgIHdoaWxlIChsaW1pdCA8IGVuZCAmJiBpc0pvaW5lcihnbHlwaHNbbGltaXRdKSkgewogICAgICAgIGxpbWl0Kys7CiAgICAgIH0KICAgICAgYmFzZSA9IHN0YXJ0OwogICAgICBoYXNSZXBoID0gdHJ1ZTsKICAgIH0KCiAgICBzd2l0Y2ggKGluZGljQ29uZmlnLmJhc2VQb3MpIHsKICAgICAgY2FzZSAnTGFzdCc6CiAgICAgICAgewogICAgICAgICAgLy8gc3RhcnRpbmcgZnJvbSB0aGUgZW5kIG9mIHRoZSBzeWxsYWJsZSwgbW92ZSBiYWNrd2FyZHMKICAgICAgICAgIHZhciBfaTYgPSBlbmQ7CiAgICAgICAgICB2YXIgc2VlbkJlbG93ID0gZmFsc2U7CgogICAgICAgICAgZG8gewogICAgICAgICAgICB2YXIgX2luZm8gPSBnbHlwaHNbLS1faTZdLnNoYXBlckluZm87CgogICAgICAgICAgICAvLyB1bnRpbCBhIGNvbnNvbmFudCBpcyBmb3VuZAogICAgICAgICAgICBpZiAoaXNDb25zb25hbnQoZ2x5cGhzW19pNl0pKSB7CiAgICAgICAgICAgICAgLy8gdGhhdCBkb2VzIG5vdCBoYXZlIGEgYmVsb3ctYmFzZSBvciBwb3N0LWJhc2UgZm9ybQogICAgICAgICAgICAgIC8vIChwb3N0LWJhc2UgZm9ybXMgaGF2ZSB0byBmb2xsb3cgYmVsb3ctYmFzZSBmb3JtcyksCiAgICAgICAgICAgICAgaWYgKF9pbmZvLnBvc2l0aW9uICE9PSBQT1NJVElPTlMuQmVsb3dfQyAmJiAoX2luZm8ucG9zaXRpb24gIT09IFBPU0lUSU9OUy5Qb3N0X0MgfHwgc2VlbkJlbG93KSkgewogICAgICAgICAgICAgICAgYmFzZSA9IF9pNjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgLy8gb3IgdGhhdCBpcyBub3QgYSBwcmUtYmFzZSByZW9yZGVyaW5nIFJhLAogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgLy8gSU1QTEVNRU5UQVRJT04gTk9URVM6CiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyBPdXIgcHJlLWJhc2UgcmVvcmRlcmluZyBSYSdzIGFyZSBtYXJrZWQgUE9TX1BPU1RfQywgc28gd2lsbCBiZSBza2lwcGVkCiAgICAgICAgICAgICAgLy8gYnkgdGhlIGxvZ2ljIGFib3ZlIGFscmVhZHkuCiAgICAgICAgICAgICAgLy8KCiAgICAgICAgICAgICAgLy8gb3IgYXJyaXZlIGF0IHRoZSBmaXJzdCBjb25zb25hbnQuIFRoZSBjb25zb25hbnQgc3RvcHBlZCBhdCB3aWxsCiAgICAgICAgICAgICAgLy8gYmUgdGhlIGJhc2UuCiAgICAgICAgICAgICAgaWYgKF9pbmZvLnBvc2l0aW9uID09PSBQT1NJVElPTlMuQmVsb3dfQykgewogICAgICAgICAgICAgICAgc2VlbkJlbG93ID0gdHJ1ZTsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIGJhc2UgPSBfaTY7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnQgPCBfaTYgJiYgX2luZm8uY2F0ZWdvcnkgPT09IENBVEVHT1JJRVMuWldKICYmIGdseXBoc1tfaTYgLSAxXS5zaGFwZXJJbmZvLmNhdGVnb3J5ID09PSBDQVRFR09SSUVTLkgpIHsKICAgICAgICAgICAgICAvLyBBIFpXSiBhZnRlciBhIEhhbGFudCBzdG9wcyB0aGUgYmFzZSBzZWFyY2gsIGFuZCByZXF1ZXN0cyBhbiBleHBsaWNpdAogICAgICAgICAgICAgIC8vIGhhbGYgZm9ybS4KICAgICAgICAgICAgICAvLyBBIFpXSiBiZWZvcmUgYSBIYWxhbnQsIHJlcXVlc3RzIGEgc3Viam9pbmVkIGZvcm0gaW5zdGVhZCwgYW5kIGhlbmNlCiAgICAgICAgICAgICAgLy8gc2VhcmNoIGNvbnRpbnVlcy4gIFRoaXMgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudCBmb3IgQmVuZ2FsaQogICAgICAgICAgICAgIC8vIHNlcXVlbmNlIFJhLEgsWWEgdGhhdCBzaG91bGQgZm9ybSBZYS1QaGFsYWEgYnkgc3Viam9pbmluZyBZYS4KICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgfSB3aGlsZSAoX2k2ID4gbGltaXQpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgY2FzZSAnRmlyc3QnOgogICAgICAgIHsKICAgICAgICAgIC8vIFRoZSBmaXJzdCBjb25zb25hbnQgaXMgYWx3YXlzIHRoZSBiYXNlLgogICAgICAgICAgYmFzZSA9IHN0YXJ0OwoKICAgICAgICAgIC8vIE1hcmsgYWxsIHN1YnNlcXVlbnQgY29uc29uYW50cyBhcyBiZWxvdy4KICAgICAgICAgIGZvciAodmFyIF9pNyA9IGJhc2UgKyAxOyBfaTcgPCBlbmQ7IF9pNysrKSB7CiAgICAgICAgICAgIGlmIChpc0NvbnNvbmFudChnbHlwaHNbX2k3XSkpIHsKICAgICAgICAgICAgICBnbHlwaHNbX2k3XS5zaGFwZXJJbmZvLnBvc2l0aW9uID0gUE9TSVRJT05TLkJlbG93X0M7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLy8gSWYgdGhlIHN5bGxhYmxlIHN0YXJ0cyB3aXRoIFJhICsgSGFsYW50IChpbiBhIHNjcmlwdCB0aGF0IGhhcyBSZXBoKQogICAgLy8gYW5kIGhhcyBtb3JlIHRoYW4gb25lIGNvbnNvbmFudCwgUmEgaXMgZXhjbHVkZWQgZnJvbSBjYW5kaWRhdGVzIGZvcgogICAgLy8gYmFzZSBjb25zb25hbnRzLgogICAgLy8KICAgIC8vICBPbmx5IGRvIHRoaXMgZm9yIHVuZm9yY2VkIFJlcGguIChpZS4gbm90IGZvciBSYSxILFpXSikKICAgIGlmIChoYXNSZXBoICYmIGJhc2UgPT09IHN0YXJ0ICYmIGxpbWl0IC0gYmFzZSA8PSAyKSB7CiAgICAgIGhhc1JlcGggPSBmYWxzZTsKICAgIH0KCiAgICAvLyAyLiBEZWNvbXBvc2UgYW5kIHJlb3JkZXIgTWF0cmFzOgogICAgLy8KICAgIC8vIEVhY2ggbWF0cmEgYW5kIGFueSBzeWxsYWJsZSBtb2RpZmllciBzaWduIGluIHRoZSBjbHVzdGVyIGFyZSBtb3ZlZCB0byB0aGUKICAgIC8vIGFwcHJvcHJpYXRlIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBjb25zb25hbnQocykgaW4gdGhlIGNsdXN0ZXIuIFRoZQogICAgLy8gc2hhcGluZyBlbmdpbmUgZGVjb21wb3NlcyB0d28tIG9yIHRocmVlLXBhcnQgbWF0cmFzIGludG8gdGhlaXIgY29uc3RpdHVlbnQKICAgIC8vIHBhcnRzIGJlZm9yZSBhbnkgcmVwb3NpdGlvbmluZy4gTWF0cmEgY2hhcmFjdGVycyBhcmUgY2xhc3NpZmllZCBieSB3aGljaAogICAgLy8gY29uc29uYW50IGluIGEgY29uanVuY3QgdGhleSBoYXZlIGFmZmluaXR5IGZvciBhbmQgYXJlIHJlb3JkZXJlZCB0byB0aGUKICAgIC8vIGZvbGxvd2luZyBwb3NpdGlvbnM6CiAgICAvLwogICAgLy8gICBvIEJlZm9yZSBmaXJzdCBoYWxmIGZvcm0gaW4gdGhlIHN5bGxhYmxlCiAgICAvLyAgIG8gQWZ0ZXIgc3Viam9pbmVkIGNvbnNvbmFudHMKICAgIC8vICAgbyBBZnRlciBwb3N0LWZvcm0gY29uc29uYW50CiAgICAvLyAgIG8gQWZ0ZXIgbWFpbiBjb25zb25hbnQgKGZvciBhYm92ZSBtYXJrcykKICAgIC8vCiAgICAvLyBJTVBMRU1FTlRBVElPTiBOT1RFUzoKICAgIC8vCiAgICAvLyBUaGUgbm9ybWFsaXplKCkgcm91dGluZSBoYXMgYWxyZWFkeSBkZWNvbXBvc2VkIG1hdHJhcyBmb3IgdXMsIHNvIHdlIGRvbid0CiAgICAvLyBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoYXQuCgogICAgLy8gMy4gIFJlb3JkZXIgbWFya3MgdG8gY2Fub25pY2FsIG9yZGVyOgogICAgLy8KICAgIC8vIEFkamFjZW50IG51a3RhIGFuZCBoYWxhbnQgb3IgbnVrdGEgYW5kIHZlZGljIHNpZ24gYXJlIGFsd2F5cyByZXBvc2l0aW9uZWQKICAgIC8vIGlmIG5lY2Vzc2FyeSwgc28gdGhhdCB0aGUgbnVrdGEgaXMgZmlyc3QuCiAgICAvLwogICAgLy8gSU1QTEVNRU5UQVRJT04gTk9URVM6CiAgICAvLwogICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBkbyB0aGlzOiB0aGUgbm9ybWFsaXplKCkgcm91dGluZSBhbHJlYWR5IGRpZCB0aGlzIGZvciB1cy4KCiAgICAvLyBSZW9yZGVyIGNoYXJhY3RlcnMKCiAgICBmb3IgKHZhciBfaTggPSBzdGFydDsgX2k4IDwgYmFzZTsgX2k4KyspIHsKICAgICAgdmFyIF9pbmZvMiA9IGdseXBoc1tfaThdLnNoYXBlckluZm87CiAgICAgIF9pbmZvMi5wb3NpdGlvbiA9IE1hdGgubWluKFBPU0lUSU9OUy5QcmVfQywgX2luZm8yLnBvc2l0aW9uKTsKICAgIH0KCiAgICBpZiAoYmFzZSA8IGVuZCkgewogICAgICBnbHlwaHNbYmFzZV0uc2hhcGVySW5mby5wb3NpdGlvbiA9IFBPU0lUSU9OUy5CYXNlX0M7CiAgICB9CgogICAgLy8gTWFyayBmaW5hbCBjb25zb25hbnRzLiAgQSBmaW5hbCBjb25zb25hbnQgaXMgb25lIGFwcGVhcmluZyBhZnRlciBhIG1hdHJhLAogICAgLy8gbGlrZSBpbiBLaG1lci4KICAgIGZvciAodmFyIF9pOSA9IGJhc2UgKyAxOyBfaTkgPCBlbmQ7IF9pOSsrKSB7CiAgICAgIGlmIChnbHlwaHNbX2k5XS5zaGFwZXJJbmZvLmNhdGVnb3J5ID09PSBDQVRFR09SSUVTLk0pIHsKICAgICAgICBmb3IgKHZhciBqID0gX2k5ICsgMTsgaiA8IGVuZDsgaisrKSB7CiAgICAgICAgICBpZiAoaXNDb25zb25hbnQoZ2x5cGhzW2pdKSkgewogICAgICAgICAgICBnbHlwaHNbal0uc2hhcGVySW5mby5wb3NpdGlvbiA9IFBPU0lUSU9OUy5GaW5hbF9DOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KCiAgICAvLyBIYW5kbGUgYmVnaW5uaW5nIFJhCiAgICBpZiAoaGFzUmVwaCkgewogICAgICBnbHlwaHNbc3RhcnRdLnNoYXBlckluZm8ucG9zaXRpb24gPSBQT1NJVElPTlMuUmFfVG9fQmVjb21lX1JlcGg7CiAgICB9CgogICAgLy8gRm9yIG9sZC1zdHlsZSBJbmRpYyBzY3JpcHQgdGFncywgbW92ZSB0aGUgZmlyc3QgcG9zdC1iYXNlIEhhbGFudCBhZnRlcgogICAgLy8gbGFzdCBjb25zb25hbnQuCiAgICAvLwogICAgLy8gUmVwb3J0cyBzdWdnZXN0IHRoYXQgaW4gc29tZSBzY3JpcHRzIFVuaXNjcmliZSBkb2VzIHRoaXMgb25seSBpZiB0aGVyZQogICAgLy8gaXMgKm5vdCogYSBIYWxhbnQgYWZ0ZXIgbGFzdCBjb25zb25hbnQgYWxyZWFkeSAoZWcuIEthbm5hZGEpLCB3aGlsZSBpdAogICAgLy8gZG9lcyBpdCB1bmNvbmRpdGlvbmFsbHkgaW4gb3RoZXIgc2NyaXB0cyAoZWcuIE1hbGF5YWxhbSkuICBXZSBkb24ndAogICAgLy8gY3VycmVudGx5IGtub3cgYWJvdXQgb3RoZXIgc2NyaXB0cywgc28gd2Ugc2luZ2xlIG91dCBNYWxheWFsYW0gZm9yIG5vdy4KICAgIC8vCiAgICAvLyBLYW5uYWRhIHRlc3QgY2FzZToKICAgIC8vIFUrMEM5QSxVKzBDQ0QsVSswQzlBLFUrMENDRAogICAgLy8gV2l0aCBzb21lIHZlcnNpb25zIG9mIExvaGl0IEthbm5hZGEuCiAgICAvLyBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD01OTExOAogICAgLy8KICAgIC8vIE1hbGF5YWxhbSB0ZXN0IGNhc2U6CiAgICAvLyBVKzBEMzgsVSswRDRELFUrMEQzMSxVKzBENEQsVSswRDMxLFUrMEQ0RAogICAgLy8gV2l0aCBsb2hpdC10dGYtMjAxMjExMjIvTG9oaXQtTWFsYXlhbGFtLnR0ZgogICAgaWYgKHBsYW4uaXNPbGRTcGVjKSB7CiAgICAgIHZhciBkaXNhbGxvd0RvdWJsZUhhbGFudHMgPSBwbGFuLnVuaWNvZGVTY3JpcHQgIT09ICdNYWxheWFsYW0nOwogICAgICBmb3IgKHZhciBfaTEwID0gYmFzZSArIDE7IF9pMTAgPCBlbmQ7IF9pMTArKykgewogICAgICAgIGlmIChnbHlwaHNbX2kxMF0uc2hhcGVySW5mby5jYXRlZ29yeSA9PT0gQ0FURUdPUklFUy5IKSB7CiAgICAgICAgICB2YXIgX2ogPSB2b2lkIDA7CiAgICAgICAgICBmb3IgKF9qID0gZW5kIC0gMTsgX2ogPiBfaTEwOyBfai0tKSB7CiAgICAgICAgICAgIGlmIChpc0NvbnNvbmFudChnbHlwaHNbX2pdKSB8fCBkaXNhbGxvd0RvdWJsZUhhbGFudHMgJiYgZ2x5cGhzW19qXS5zaGFwZXJJbmZvLmNhdGVnb3J5ID09PSBDQVRFR09SSUVTLkgpIHsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIGlmIChnbHlwaHNbX2pdLnNoYXBlckluZm8uY2F0ZWdvcnkgIT09IENBVEVHT1JJRVMuSCAmJiBfaiA+IF9pMTApIHsKICAgICAgICAgICAgLy8gTW92ZSBIYWxhbnQgdG8gYWZ0ZXIgbGFzdCBjb25zb25hbnQuCiAgICAgICAgICAgIHZhciB0ID0gZ2x5cGhzW19pMTBdOwogICAgICAgICAgICBnbHlwaHMuc3BsaWNlLmFwcGx5KGdseXBocywgW19pMTAsIDBdLmNvbmNhdChnbHlwaHMuc3BsaWNlKF9pMTAgKyAxLCBfaiAtIF9pMTApKSk7CiAgICAgICAgICAgIGdseXBoc1tfal0gPSB0OwogICAgICAgICAgfQoKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIEF0dGFjaCBtaXNjIG1hcmtzIHRvIHByZXZpb3VzIGNoYXIgdG8gbW92ZSB3aXRoIHRoZW0uCiAgICB2YXIgbGFzdFBvcyA9IFBPU0lUSU9OUy5TdGFydDsKICAgIGZvciAodmFyIF9pMTEgPSBzdGFydDsgX2kxMSA8IGVuZDsgX2kxMSsrKSB7CiAgICAgIHZhciBfaW5mbzMgPSBnbHlwaHNbX2kxMV0uc2hhcGVySW5mbzsKICAgICAgaWYgKF9pbmZvMy5jYXRlZ29yeSAmIChKT0lORVJfRkxBR1MgfCBDQVRFR09SSUVTLk4gfCBDQVRFR09SSUVTLlJTIHwgQ0FURUdPUklFUy5DTSB8IEhBTEFOVF9PUl9DT0VOR19GTEFHUyAmIF9pbmZvMy5jYXRlZ29yeSkpIHsKICAgICAgICBfaW5mbzMucG9zaXRpb24gPSBsYXN0UG9zOwogICAgICAgIGlmIChfaW5mbzMuY2F0ZWdvcnkgPT09IENBVEVHT1JJRVMuSCAmJiBfaW5mbzMucG9zaXRpb24gPT09IFBPU0lUSU9OUy5QcmVfTSkgewogICAgICAgICAgLy8gVW5pc2NyaWJlIGRvZXNuJ3QgbW92ZSB0aGUgSGFsYW50IHdpdGggTGVmdCBNYXRyYS4KICAgICAgICAgIC8vIFRFU1Q6IFUrMDkyQixVKzA5M0YsVSswOTRERQogICAgICAgICAgLy8gV2UgZm9sbG93LiAgVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHRoZSBTaW5oYWxhCiAgICAgICAgICAvLyBVKzBEREEgc3BsaXQgbWF0cmEgc2luY2UgaXQgZGVjb21wb3NlcyB0byBVKzBERDksVSswRENBCiAgICAgICAgICAvLyB3aGVyZSBVKzBERDkgaXMgYSBsZWZ0IG1hdHJhIGFuZCBVKzBEQ0EgaXMgdGhlIHZpcmFtYS4KICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gbW92ZSB0aGUgdmlyYW1hIHdpdGggdGhlIGxlZnQgbWF0cmEuCiAgICAgICAgICAvLyBURVNUOiBVKzBEOUEsVSswRERBCiAgICAgICAgICBmb3IgKHZhciBfajIgPSBfaTExOyBfajIgPiBzdGFydDsgX2oyLS0pIHsKICAgICAgICAgICAgaWYgKGdseXBoc1tfajIgLSAxXS5zaGFwZXJJbmZvLnBvc2l0aW9uICE9PSBQT1NJVElPTlMuUHJlX00pIHsKICAgICAgICAgICAgICBfaW5mbzMucG9zaXRpb24gPSBnbHlwaHNbX2oyIC0gMV0uc2hhcGVySW5mby5wb3NpdGlvbjsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChfaW5mbzMucG9zaXRpb24gIT09IFBPU0lUSU9OUy5TTVZEKSB7CiAgICAgICAgbGFzdFBvcyA9IF9pbmZvMy5wb3NpdGlvbjsKICAgICAgfQogICAgfQoKICAgIC8vIEZvciBwb3N0LWJhc2UgY29uc29uYW50cyBsZXQgdGhlbSBvd24gYW55dGhpbmcgYmVmb3JlIHRoZW0KICAgIC8vIHNpbmNlIHRoZSBsYXN0IGNvbnNvbmFudCBvciBtYXRyYS4KICAgIHZhciBsYXN0ID0gYmFzZTsKICAgIGZvciAodmFyIF9pMTIgPSBiYXNlICsgMTsgX2kxMiA8IGVuZDsgX2kxMisrKSB7CiAgICAgIGlmIChpc0NvbnNvbmFudChnbHlwaHNbX2kxMl0pKSB7CiAgICAgICAgZm9yICh2YXIgX2ozID0gbGFzdCArIDE7IF9qMyA8IF9pMTI7IF9qMysrKSB7CiAgICAgICAgICBpZiAoZ2x5cGhzW19qM10uc2hhcGVySW5mby5wb3NpdGlvbiA8IFBPU0lUSU9OUy5TTVZEKSB7CiAgICAgICAgICAgIGdseXBoc1tfajNdLnNoYXBlckluZm8ucG9zaXRpb24gPSBnbHlwaHNbX2kxMl0uc2hhcGVySW5mby5wb3NpdGlvbjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgbGFzdCA9IF9pMTI7CiAgICAgIH0gZWxzZSBpZiAoZ2x5cGhzW19pMTJdLnNoYXBlckluZm8uY2F0ZWdvcnkgPT09IENBVEVHT1JJRVMuTSkgewogICAgICAgIGxhc3QgPSBfaTEyOwogICAgICB9CiAgICB9CgogICAgdmFyIGFyciA9IGdseXBocy5zbGljZShzdGFydCwgZW5kKTsKICAgIGFyci5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CiAgICAgIHJldHVybiBhLnNoYXBlckluZm8ucG9zaXRpb24gLSBiLnNoYXBlckluZm8ucG9zaXRpb247CiAgICB9KTsKICAgIGdseXBocy5zcGxpY2UuYXBwbHkoZ2x5cGhzLCBbc3RhcnQsIGFyci5sZW5ndGhdLmNvbmNhdChhcnIpKTsKCiAgICAvLyBGaW5kIGJhc2UgYWdhaW4KICAgIGZvciAodmFyIF9pMTMgPSBzdGFydDsgX2kxMyA8IGVuZDsgX2kxMysrKSB7CiAgICAgIGlmIChnbHlwaHNbX2kxM10uc2hhcGVySW5mby5wb3NpdGlvbiA9PT0gUE9TSVRJT05TLkJhc2VfQykgewogICAgICAgIGJhc2UgPSBfaTEzOwogICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9CgogICAgLy8gU2V0dXAgZmVhdHVyZXMgbm93CgogICAgLy8gUmVwaAogICAgZm9yICh2YXIgX2kxNCA9IHN0YXJ0OyBfaTE0IDwgZW5kICYmIGdseXBoc1tfaTE0XS5zaGFwZXJJbmZvLnBvc2l0aW9uID09PSBQT1NJVElPTlMuUmFfVG9fQmVjb21lX1JlcGg7IF9pMTQrKykgewogICAgICBnbHlwaHNbX2kxNF0uZmVhdHVyZXMucnBoZiA9IHRydWU7CiAgICB9CgogICAgLy8gUHJlLWJhc2UKICAgIHZhciBibHdmID0gIXBsYW4uaXNPbGRTcGVjICYmIGluZGljQ29uZmlnLmJsd2ZNb2RlID09PSAnUHJlX0FuZF9Qb3N0JzsKICAgIGZvciAodmFyIF9pMTUgPSBzdGFydDsgX2kxNSA8IGJhc2U7IF9pMTUrKykgewogICAgICBnbHlwaHNbX2kxNV0uZmVhdHVyZXMuaGFsZiA9IHRydWU7CiAgICAgIGlmIChibHdmKSB7CiAgICAgICAgZ2x5cGhzW19pMTVdLmZlYXR1cmVzLmJsd2YgPSB0cnVlOwogICAgICB9CiAgICB9CgogICAgLy8gUG9zdC1iYXNlCiAgICBmb3IgKHZhciBfaTE2ID0gYmFzZSArIDE7IF9pMTYgPCBlbmQ7IF9pMTYrKykgewogICAgICBnbHlwaHNbX2kxNl0uZmVhdHVyZXMuYWJ2ZiA9IHRydWU7CiAgICAgIGdseXBoc1tfaTE2XS5mZWF0dXJlcy5wc3RmID0gdHJ1ZTsKICAgICAgZ2x5cGhzW19pMTZdLmZlYXR1cmVzLmJsd2YgPSB0cnVlOwogICAgfQoKICAgIGlmIChwbGFuLmlzT2xkU3BlYyAmJiBwbGFuLnVuaWNvZGVTY3JpcHQgPT09ICdEZXZhbmFnYXJpJykgewogICAgICAvLyBPbGQtc3BlYyBleWUtbGFzaCBSYSBuZWVkcyBzcGVjaWFsIGhhbmRsaW5nLiAgRnJvbSB0aGUKICAgICAgLy8gc3BlYzoKICAgICAgLy8KICAgICAgLy8gIlRoZSBmZWF0dXJlICdiZWxvdy1iYXNlIGZvcm0nIGlzIGFwcGxpZWQgdG8gY29uc29uYW50cwogICAgICAvLyBoYXZpbmcgYmVsb3ctYmFzZSBmb3JtcyBhbmQgZm9sbG93aW5nIHRoZSBiYXNlIGNvbnNvbmFudC4KICAgICAgLy8gVGhlIGV4Y2VwdGlvbiBpcyB2YXR0dSwgd2hpY2ggbWF5IGFwcGVhciBiZWxvdyBoYWxmIGZvcm1zCiAgICAgIC8vIGFzIHdlbGwgYXMgYmVsb3cgdGhlIGJhc2UgZ2x5cGguIFRoZSBmZWF0dXJlICdiZWxvdy1iYXNlCiAgICAgIC8vIGZvcm0nIHdpbGwgYmUgYXBwbGllZCB0byBhbGwgc3VjaCBvY2N1cnJlbmNlcyBvZiBSYSBhcyB3ZWxsLiIKICAgICAgLy8KICAgICAgLy8gVGVzdCBjYXNlOiBVKzA5MjQsVSswOTRELFUrMDkzMCxVKzA5NGQsVSswOTE1CiAgICAgIC8vIHdpdGggU2Fuc2tyaXQgMjAwMyBmb250LgogICAgICAvLwogICAgICAvLyBIb3dldmVyLCBub3RlIHRoYXQgUmEsSGFsYW50LFpXSiBpcyB0aGUgY29ycmVjdCB3YXkgdG8KICAgICAgLy8gcmVxdWVzdCBleWVsYXNoIGZvcm0gb2YgUmEsIHNvIHdlIHdvdWxkYm4ndCBpbmhpYml0IGl0CiAgICAgIC8vIGluIHRoYXQgc2VxdWVuY2UuCiAgICAgIC8vCiAgICAgIC8vIFRlc3QgY2FzZTogVSswOTI0LFUrMDk0RCxVKzA5MzAsVSswOTRkLFUrMjAwRCxVKzA5MTUKICAgICAgZm9yICh2YXIgX2kxNyA9IHN0YXJ0OyBfaTE3ICsgMSA8IGJhc2U7IF9pMTcrKykgewogICAgICAgIGlmIChnbHlwaHNbX2kxN10uc2hhcGVySW5mby5jYXRlZ29yeSA9PT0gQ0FURUdPUklFUy5SYSAmJiBnbHlwaHNbX2kxNyArIDFdLnNoYXBlckluZm8uY2F0ZWdvcnkgPT09IENBVEVHT1JJRVMuSCAmJiAoX2kxNyArIDEgPT09IGJhc2UgfHwgZ2x5cGhzW19pMTcgKyAyXS5zaGFwZXJJbmZvLmNhdGVnb3J5ID09PSBDQVRFR09SSUVTLlpXSikpIHsKICAgICAgICAgIGdseXBoc1tfaTE3XS5mZWF0dXJlcy5ibHdmID0gdHJ1ZTsKICAgICAgICAgIGdseXBoc1tfaTE3ICsgMV0uZmVhdHVyZXMuYmx3ZiA9IHRydWU7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgdmFyIHByZWZMZW4gPSAyOwogICAgaWYgKGZlYXR1cmVzLnByZWYgJiYgYmFzZSArIHByZWZMZW4gPCBlbmQpIHsKICAgICAgLy8gRmluZCBhIEhhbGFudCxSYSBzZXF1ZW5jZSBhbmQgbWFyayBpdCBmb3IgcHJlLWJhc2UgcmVvcmRlcmluZyBwcm9jZXNzaW5nLgogICAgICBmb3IgKHZhciBfaTE4ID0gYmFzZSArIDE7IF9pMTggKyBwcmVmTGVuIC0gMSA8IGVuZDsgX2kxOCsrKSB7CiAgICAgICAgdmFyIF9nMiA9IFtnbHlwaHNbX2kxOF0uY29weSgpLCBnbHlwaHNbX2kxOCArIDFdLmNvcHkoKV07CiAgICAgICAgaWYgKHdvdWxkU3Vic3RpdHV0ZShfZzIsICdwcmVmJykpIHsKICAgICAgICAgIGZvciAodmFyIF9qNCA9IDA7IF9qNCA8IHByZWZMZW47IF9qNCsrKSB7CiAgICAgICAgICAgIGdseXBoc1tfaTE4KytdLmZlYXR1cmVzLnByZWYgPSB0cnVlOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIE1hcmsgdGhlIHN1YnNlcXVlbnQgc3R1ZmYgd2l0aCAnY2ZhcicuICBVc2VkIGluIEtobWVyLgogICAgICAgICAgLy8gUmVhZCB0aGUgZmVhdHVyZSBzcGVjLgogICAgICAgICAgLy8gVGhpcyBhbGxvd3MgZGlzdGluZ3Vpc2hpbmcgdGhlIGZvbGxvd2luZyBjYXNlcyB3aXRoIE1TIEtobWVyIGZvbnRzOgogICAgICAgICAgLy8gVSsxNzg0LFUrMTdEMixVKzE3OUEsVSsxN0QyLFUrMTc4MgogICAgICAgICAgLy8gVSsxNzg0LFUrMTdEMixVKzE3ODIsVSsxN0QyLFUrMTc5QQogICAgICAgICAgaWYgKGZlYXR1cmVzLmNmYXIpIHsKICAgICAgICAgICAgZm9yICg7IF9pMTggPCBlbmQ7IF9pMTgrKykgewogICAgICAgICAgICAgIGdseXBoc1tfaTE4XS5mZWF0dXJlcy5jZmFyID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIEFwcGx5IFpXSi9aV05KIGVmZmVjdHMKICAgIGZvciAodmFyIF9pMTkgPSBzdGFydCArIDE7IF9pMTkgPCBlbmQ7IF9pMTkrKykgewogICAgICBpZiAoaXNKb2luZXIoZ2x5cGhzW19pMTldKSkgewogICAgICAgIHZhciBub25Kb2luZXIgPSBnbHlwaHNbX2kxOV0uc2hhcGVySW5mby5jYXRlZ29yeSA9PT0gQ0FURUdPUklFUy5aV05KOwogICAgICAgIHZhciBfajUgPSBfaTE5OwoKICAgICAgICBkbyB7CiAgICAgICAgICBfajUtLTsKCiAgICAgICAgICAvLyBaV0ovWldOSiBzaG91bGQgZGlzYWJsZSBDSkNULiAgVGhleSBkbyB0aGF0IGJ5IHNpbXBseQogICAgICAgICAgLy8gYmVpbmcgdGhlcmUsIHNpbmNlIHdlIGRvbid0IHNraXAgdGhlbSBmb3IgdGhlIENKQ1QKICAgICAgICAgIC8vIGZlYXR1cmUgKGllLiBGX01BTlVBTF9aV0opCgogICAgICAgICAgLy8gQSBaV05KIGRpc2FibGVzIEhBTEYuCiAgICAgICAgICBpZiAobm9uSm9pbmVyKSB7CiAgICAgICAgICAgIGRlbGV0ZSBnbHlwaHNbX2o1XS5mZWF0dXJlcy5oYWxmOwogICAgICAgICAgfQogICAgICAgIH0gd2hpbGUgKF9qNSA+IHN0YXJ0ICYmICFpc0NvbnNvbmFudChnbHlwaHNbX2o1XSkpOwogICAgICB9CiAgICB9CiAgfQp9CgpmdW5jdGlvbiBmaW5hbFJlb3JkZXJpbmcoZm9udCwgZ2x5cGhzLCBwbGFuKSB7CiAgdmFyIGluZGljQ29uZmlnID0gcGxhbi5pbmRpY0NvbmZpZzsKICB2YXIgZmVhdHVyZXMgPSBmb250Ll9sYXlvdXRFbmdpbmUuZW5naW5lLkdTVUJQcm9jZXNzb3IuZmVhdHVyZXM7CgogIGZvciAodmFyIHN0YXJ0ID0gMCwgZW5kID0gbmV4dFN5bGxhYmxlKGdseXBocywgMCk7IHN0YXJ0IDwgZ2x5cGhzLmxlbmd0aDsgc3RhcnQgPSBlbmQsIGVuZCA9IG5leHRTeWxsYWJsZShnbHlwaHMsIHN0YXJ0KSkgewogICAgLy8gNC4gRmluYWwgcmVvcmRlcmluZzoKICAgIC8vCiAgICAvLyBBZnRlciB0aGUgbG9jYWxpemVkIGZvcm1zIGFuZCBiYXNpYyBzaGFwaW5nIGZvcm1zIEdTVUIgZmVhdHVyZXMgaGF2ZSBiZWVuCiAgICAvLyBhcHBsaWVkIChzZWUgYmVsb3cpLCB0aGUgc2hhcGluZyBlbmdpbmUgcGVyZm9ybXMgc29tZSBmaW5hbCBnbHlwaAogICAgLy8gcmVvcmRlcmluZyBiZWZvcmUgYXBwbHlpbmcgYWxsIHRoZSByZW1haW5pbmcgZm9udCBmZWF0dXJlcyB0byB0aGUgZW50aXJlCiAgICAvLyBjbHVzdGVyLgoKICAgIHZhciB0cnlQcmVmID0gISFmZWF0dXJlcy5wcmVmOwoKICAgIC8vIEZpbmQgYmFzZSBhZ2FpbgogICAgdmFyIGJhc2UgPSBzdGFydDsKICAgIGZvciAoOyBiYXNlIDwgZW5kOyBiYXNlKyspIHsKICAgICAgaWYgKGdseXBoc1tiYXNlXS5zaGFwZXJJbmZvLnBvc2l0aW9uID49IFBPU0lUSU9OUy5CYXNlX0MpIHsKICAgICAgICBpZiAodHJ5UHJlZiAmJiBiYXNlICsgMSA8IGVuZCkgewogICAgICAgICAgZm9yICh2YXIgaSA9IGJhc2UgKyAxOyBpIDwgZW5kOyBpKyspIHsKICAgICAgICAgICAgaWYgKGdseXBoc1tpXS5mZWF0dXJlcy5wcmVmKSB7CiAgICAgICAgICAgICAgaWYgKCEoZ2x5cGhzW2ldLnN1YnN0aXR1dGVkICYmIGdseXBoc1tpXS5pc0xpZ2F0ZWQgJiYgIWdseXBoc1tpXS5pc011bHRpcGxpZWQpKSB7CiAgICAgICAgICAgICAgICAvLyBPaywgdGhpcyB3YXMgYSAncHJlZicgY2FuZGlkYXRlIGJ1dCBkaWRuJ3QgZm9ybSBhbnkuCiAgICAgICAgICAgICAgICAvLyBCYXNlIGlzIGFyb3VuZCBoZXJlLi4uCiAgICAgICAgICAgICAgICBiYXNlID0gaTsKICAgICAgICAgICAgICAgIHdoaWxlIChiYXNlIDwgZW5kICYmIGlzSGFsYW50T3JDb2VuZyhnbHlwaHNbYmFzZV0pKSB7CiAgICAgICAgICAgICAgICAgIGJhc2UrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdseXBoc1tiYXNlXS5zaGFwZXJJbmZvLnBvc2l0aW9uID0gUE9TSVRJT05TLkJBU0VfQzsKICAgICAgICAgICAgICAgIHRyeVByZWYgPSBmYWxzZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIEZvciBNYWxheWFsYW0sIHNraXAgb3ZlciB1bmZvcm1lZCBiZWxvdy0gKGJ1dCBOT1QgcG9zdC0pIGZvcm1zLgogICAgICAgIGlmIChwbGFuLnVuaWNvZGVTY3JpcHQgPT09ICdNYWxheWFsYW0nKSB7CiAgICAgICAgICBmb3IgKHZhciBfaTIwID0gYmFzZSArIDE7IF9pMjAgPCBlbmQ7IF9pMjArKykgewogICAgICAgICAgICB3aGlsZSAoX2kyMCA8IGVuZCAmJiBpc0pvaW5lcihnbHlwaHNbX2kyMF0pKSB7CiAgICAgICAgICAgICAgX2kyMCsrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoX2kyMCA9PT0gZW5kIHx8ICFpc0hhbGFudE9yQ29lbmcoZ2x5cGhzW19pMjBdKSkgewogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBfaTIwKys7IC8vIFNraXAgaGFsYW50LgogICAgICAgICAgICB3aGlsZSAoX2kyMCA8IGVuZCAmJiBpc0pvaW5lcihnbHlwaHNbX2kyMF0pKSB7CiAgICAgICAgICAgICAgX2kyMCsrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoX2kyMCA8IGVuZCAmJiBpc0NvbnNvbmFudChnbHlwaHNbX2kyMF0pICYmIGdseXBoc1tfaTIwXS5zaGFwZXJJbmZvLnBvc2l0aW9uID09PSBQT1NJVElPTlMuQmVsb3dfQykgewogICAgICAgICAgICAgIGJhc2UgPSBfaTIwOwogICAgICAgICAgICAgIGdseXBoc1tiYXNlXS5zaGFwZXJJbmZvLnBvc2l0aW9uID0gUE9TSVRJT05TLkJhc2VfQzsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHN0YXJ0IDwgYmFzZSAmJiBnbHlwaHNbYmFzZV0uc2hhcGVySW5mby5wb3NpdGlvbiA+IFBPU0lUSU9OUy5CYXNlX0MpIHsKICAgICAgICAgIGJhc2UtLTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KCiAgICBpZiAoYmFzZSA9PT0gZW5kICYmIHN0YXJ0IDwgYmFzZSAmJiBnbHlwaHNbYmFzZSAtIDFdLnNoYXBlckluZm8uY2F0ZWdvcnkgPT09IENBVEVHT1JJRVMuWldKKSB7CiAgICAgIGJhc2UtLTsKICAgIH0KCiAgICBpZiAoYmFzZSA8IGVuZCkgewogICAgICB3aGlsZSAoc3RhcnQgPCBiYXNlICYmIGdseXBoc1tiYXNlXS5zaGFwZXJJbmZvLmNhdGVnb3J5ICYgKENBVEVHT1JJRVMuTiB8IEhBTEFOVF9PUl9DT0VOR19GTEFHUykpIHsKICAgICAgICBiYXNlLS07CiAgICAgIH0KICAgIH0KCiAgICAvLyBvIFJlb3JkZXIgbWF0cmFzOgogICAgLy8KICAgIC8vIElmIGEgcHJlLWJhc2UgbWF0cmEgY2hhcmFjdGVyIGhhZCBiZWVuIHJlb3JkZXJlZCBiZWZvcmUgYXBwbHlpbmcgYmFzaWMKICAgIC8vIGZlYXR1cmVzLCB0aGUgZ2x5cGggY2FuIGJlIG1vdmVkIGNsb3NlciB0byB0aGUgbWFpbiBjb25zb25hbnQgYmFzZWQgb24KICAgIC8vIHdoZXRoZXIgaGFsZi1mb3JtcyBoYWQgYmVlbiBmb3JtZWQuIEFjdHVhbCBwb3NpdGlvbiBmb3IgdGhlIG1hdHJhIGlzCiAgICAvLyBkZWZpbmVkIGFzIOKAnGFmdGVyIGxhc3Qgc3RhbmRhbG9uZSBoYWxhbnQgZ2x5cGgsIGFmdGVyIGluaXRpYWwgbWF0cmEKICAgIC8vIHBvc2l0aW9uIGFuZCBiZWZvcmUgdGhlIG1haW4gY29uc29uYW504oCdLiBJZiBaV0ogb3IgWldOSiBmb2xsb3cgdGhpcwogICAgLy8gaGFsYW50LCBwb3NpdGlvbiBpcyBtb3ZlZCBhZnRlciBpdC4KICAgIC8vCgogICAgaWYgKHN0YXJ0ICsgMSA8IGVuZCAmJiBzdGFydCA8IGJhc2UpIHsKICAgICAgLy8gT3RoZXJ3aXNlIHRoZXJlIGNhbid0IGJlIGFueSBwcmUtYmFzZSBtYXRyYSBjaGFyYWN0ZXJzLgogICAgICAvLyBJZiB3ZSBsb3N0IHRyYWNrIG9mIGJhc2UsIGFsYXMsIHBvc2l0aW9uIGJlZm9yZSBsYXN0IHRoaW5neS4KICAgICAgdmFyIG5ld1BvcyA9IGJhc2UgPT09IGVuZCA/IGJhc2UgLSAyIDogYmFzZSAtIDE7CgogICAgICAvLyBNYWxheWFsYW0gLyBUYW1pbCBkbyBub3QgaGF2ZSAiaGFsZiIgZm9ybXMgb3IgZXhwbGljaXQgdmlyYW1hIGZvcm1zLgogICAgICAvLyBUaGUgZ2x5cGhzIGZvcm1lZCBieSAnaGFsZicgYXJlIENoaWxsdXMgb3IgbGlnYXRlZCBleHBsaWNpdCB2aXJhbWFzLgogICAgICAvLyBXZSB3YW50IHRvIHBvc2l0aW9uIG1hdHJhIGFmdGVyIHRoZW0uCiAgICAgIGlmIChwbGFuLnVuaWNvZGVTY3JpcHQgIT09ICdNYWxheWFsYW0nICYmIHBsYW4udW5pY29kZVNjcmlwdCAhPT0gJ1RhbWlsJykgewogICAgICAgIHdoaWxlIChuZXdQb3MgPiBzdGFydCAmJiAhKGdseXBoc1tuZXdQb3NdLnNoYXBlckluZm8uY2F0ZWdvcnkgJiAoQ0FURUdPUklFUy5NIHwgSEFMQU5UX09SX0NPRU5HX0ZMQUdTKSkpIHsKICAgICAgICAgIG5ld1Bvcy0tOwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgd2UgZm91bmQgbm8gSGFsYW50IHdlIGFyZSBkb25lLgogICAgICAgIC8vIE90aGVyd2lzZSBvbmx5IHByb2NlZWQgaWYgdGhlIEhhbGFudCBkb2VzCiAgICAgICAgLy8gbm90IGJlbG9uZyB0byB0aGUgTWF0cmEgaXRzZWxmIQogICAgICAgIGlmIChpc0hhbGFudE9yQ29lbmcoZ2x5cGhzW25ld1Bvc10pICYmIGdseXBoc1tuZXdQb3NdLnNoYXBlckluZm8ucG9zaXRpb24gIT09IFBPU0lUSU9OUy5QcmVfTSkgewogICAgICAgICAgLy8gSWYgWldKIG9yIFpXTkogZm9sbG93IHRoaXMgaGFsYW50LCBwb3NpdGlvbiBpcyBtb3ZlZCBhZnRlciBpdC4KICAgICAgICAgIGlmIChuZXdQb3MgKyAxIDwgZW5kICYmIGlzSm9pbmVyKGdseXBoc1tuZXdQb3MgKyAxXSkpIHsKICAgICAgICAgICAgbmV3UG9zKys7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG5ld1BvcyA9IHN0YXJ0OyAvLyBObyBtb3ZlLgogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKHN0YXJ0IDwgbmV3UG9zICYmIGdseXBoc1tuZXdQb3NdLnNoYXBlckluZm8ucG9zaXRpb24gIT09IFBPU0lUSU9OUy5QcmVfTSkgewogICAgICAgIC8vIE5vdyBnbyBzZWUgaWYgdGhlcmUncyBhY3R1YWxseSBhbnkgbWF0cmFzLi4uCiAgICAgICAgZm9yICh2YXIgX2kyMSA9IG5ld1BvczsgX2kyMSA+IHN0YXJ0OyBfaTIxLS0pIHsKICAgICAgICAgIGlmIChnbHlwaHNbX2kyMSAtIDFdLnNoYXBlckluZm8ucG9zaXRpb24gPT09IFBPU0lUSU9OUy5QcmVfTSkgewogICAgICAgICAgICB2YXIgb2xkUG9zID0gX2kyMSAtIDE7CiAgICAgICAgICAgIGlmIChvbGRQb3MgPCBiYXNlICYmIGJhc2UgPD0gbmV3UG9zKSB7CiAgICAgICAgICAgICAgLy8gU2hvdWxkbid0IGFjdHVhbGx5IGhhcHBlbi4KICAgICAgICAgICAgICBiYXNlLS07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciB0bXAgPSBnbHlwaHNbb2xkUG9zXTsKICAgICAgICAgICAgZ2x5cGhzLnNwbGljZS5hcHBseShnbHlwaHMsIFtvbGRQb3MsIDBdLmNvbmNhdChnbHlwaHMuc3BsaWNlKG9sZFBvcyArIDEsIG5ld1BvcyAtIG9sZFBvcykpKTsKICAgICAgICAgICAgZ2x5cGhzW25ld1Bvc10gPSB0bXA7CgogICAgICAgICAgICBuZXdQb3MtLTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICAvLyBvIFJlb3JkZXIgcmVwaDoKICAgIC8vCiAgICAvLyBSZXBo4oCZcyBvcmlnaW5hbCBwb3NpdGlvbiBpcyBhbHdheXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3lsbGFibGUsCiAgICAvLyAoaS5lLiBpdCBpcyBub3QgcmVvcmRlcmVkIGF0IHRoZSBjaGFyYWN0ZXIgcmVvcmRlcmluZyBzdGFnZSkuIEhvd2V2ZXIsCiAgICAvLyBpdCB3aWxsIGJlIHJlb3JkZXJlZCBhY2NvcmRpbmcgdG8gdGhlIGJhc2ljLWZvcm1zIHNoYXBpbmcgcmVzdWx0cy4KICAgIC8vIFBvc3NpYmxlIHBvc2l0aW9ucyBmb3IgcmVwaCwgZGVwZW5kaW5nIG9uIHRoZSBzY3JpcHQsIGFyZTsgYWZ0ZXIgbWFpbiwKICAgIC8vIGJlZm9yZSBwb3N0LWJhc2UgY29uc29uYW50IGZvcm1zLCBhbmQgYWZ0ZXIgcG9zdC1iYXNlIGNvbnNvbmFudCBmb3Jtcy4KCiAgICAvLyBUd28gY2FzZXM6CiAgICAvLwogICAgLy8gLSBJZiByZXBoYSBpcyBlbmNvZGVkIGFzIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyAoUmEsSCBvciBSYSxILFpXSiksIHRoZW4KICAgIC8vICAgd2Ugc2hvdWxkIG9ubHkgbW92ZSBpdCBpZiB0aGUgc2VxdWVuY2UgbGlnYXRlZCB0byB0aGUgcmVwaGEgZm9ybS4KICAgIC8vCiAgICAvLyAtIElmIHJlcGhhIGlzIGVuY29kZWQgc2VwYXJhdGVseSBhbmQgaW4gdGhlIGxvZ2ljYWwgcG9zaXRpb24sIHdlIHNob3VsZCBvbmx5CiAgICAvLyAgIG1vdmUgaXQgaWYgaXQgZGlkIE5PVCBsaWdhdGUuICBJZiBpdCBsaWdhdGVkLCBpdCdzIHByb2JhYmx5IHRoZSBmb250IHRyeWluZwogICAgLy8gICB0byBtYWtlIGl0IHdvcmsgd2l0aG91dCB0aGUgcmVvcmRlcmluZy4KICAgIGlmIChzdGFydCArIDEgPCBlbmQgJiYgZ2x5cGhzW3N0YXJ0XS5zaGFwZXJJbmZvLnBvc2l0aW9uID09PSBQT1NJVElPTlMuUmFfVG9fQmVjb21lX1JlcGggJiYgZ2x5cGhzW3N0YXJ0XS5zaGFwZXJJbmZvLmNhdGVnb3J5ID09PSBDQVRFR09SSUVTLlJlcGhhICE9PSAoZ2x5cGhzW3N0YXJ0XS5pc0xpZ2F0ZWQgJiYgIWdseXBoc1tzdGFydF0uaXNNdWx0aXBsaWVkKSkgewogICAgICB2YXIgbmV3UmVwaFBvcyA9IHZvaWQgMDsKICAgICAgdmFyIHJlcGhQb3MgPSBpbmRpY0NvbmZpZy5yZXBoUG9zOwogICAgICB2YXIgZm91bmQgPSBmYWxzZTsKCiAgICAgIC8vIDEuIElmIHJlcGggc2hvdWxkIGJlIHBvc2l0aW9uZWQgYWZ0ZXIgcG9zdC1iYXNlIGNvbnNvbmFudCBmb3JtcywKICAgICAgLy8gICAgcHJvY2VlZCB0byBzdGVwIDUuCiAgICAgIGlmIChyZXBoUG9zICE9PSBQT1NJVElPTlMuQWZ0ZXJfUG9zdCkgewogICAgICAgIC8vICAyLiBJZiB0aGUgcmVwaCByZXBvc2l0aW9uaW5nIGNsYXNzIGlzIG5vdCBhZnRlciBwb3N0LWJhc2U6IHRhcmdldAogICAgICAgIC8vICAgICBwb3NpdGlvbiBpcyBhZnRlciB0aGUgZmlyc3QgZXhwbGljaXQgaGFsYW50IGdseXBoIGJldHdlZW4gdGhlCiAgICAgICAgLy8gICAgIGZpcnN0IHBvc3QtcmVwaCBjb25zb25hbnQgYW5kIGxhc3QgbWFpbiBjb25zb25hbnQuIElmIFpXSiBvciBaV05KCiAgICAgICAgLy8gICAgIGFyZSBmb2xsb3dpbmcgdGhpcyBoYWxhbnQsIHBvc2l0aW9uIGlzIG1vdmVkIGFmdGVyIGl0LiBJZiBzdWNoCiAgICAgICAgLy8gICAgIHBvc2l0aW9uIGlzIGZvdW5kLCB0aGlzIGlzIHRoZSB0YXJnZXQgcG9zaXRpb24uIE90aGVyd2lzZSwKICAgICAgICAvLyAgICAgcHJvY2VlZCB0byB0aGUgbmV4dCBzdGVwLgogICAgICAgIC8vCiAgICAgICAgLy8gICAgIE5vdGU6IGluIG9sZC1pbXBsZW1lbnRhdGlvbiBmb250cywgd2hlcmUgY2xhc3NpZmljYXRpb25zIHdlcmUKICAgICAgICAvLyAgICAgZml4ZWQgaW4gc2hhcGluZyBlbmdpbmUsIHRoZXJlIHdhcyBubyBjYXNlIHdoZXJlIHJlcGggcG9zaXRpb24KICAgICAgICAvLyAgICAgd2lsbCBiZSBmb3VuZCBvbiB0aGlzIHN0ZXAuCiAgICAgICAgbmV3UmVwaFBvcyA9IHN0YXJ0ICsgMTsKICAgICAgICB3aGlsZSAobmV3UmVwaFBvcyA8IGJhc2UgJiYgIWlzSGFsYW50T3JDb2VuZyhnbHlwaHNbbmV3UmVwaFBvc10pKSB7CiAgICAgICAgICBuZXdSZXBoUG9zKys7CiAgICAgICAgfQoKICAgICAgICBpZiAobmV3UmVwaFBvcyA8IGJhc2UgJiYgaXNIYWxhbnRPckNvZW5nKGdseXBoc1tuZXdSZXBoUG9zXSkpIHsKICAgICAgICAgIC8vIC0+SWYgWldKIG9yIFpXTkogYXJlIGZvbGxvd2luZyB0aGlzIGhhbGFudCwgcG9zaXRpb24gaXMgbW92ZWQgYWZ0ZXIgaXQuCiAgICAgICAgICBpZiAobmV3UmVwaFBvcyArIDEgPCBiYXNlICYmIGlzSm9pbmVyKGdseXBoc1tuZXdSZXBoUG9zICsgMV0pKSB7CiAgICAgICAgICAgIG5ld1JlcGhQb3MrKzsKICAgICAgICAgIH0KCiAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICAvLyAzLiBJZiByZXBoIHNob3VsZCBiZSByZXBvc2l0aW9uZWQgYWZ0ZXIgdGhlIG1haW4gY29uc29uYW50OiBmaW5kIHRoZQogICAgICAgIC8vICAgIGZpcnN0IGNvbnNvbmFudCBub3QgbGlnYXRlZCB3aXRoIG1haW4sIG9yIGZpbmQgdGhlIGZpcnN0CiAgICAgICAgLy8gICAgY29uc29uYW50IHRoYXQgaXMgbm90IGEgcG90ZW50aWFsIHByZS1iYXNlIHJlb3JkZXJpbmcgUmEuCiAgICAgICAgaWYgKCFmb3VuZCAmJiByZXBoUG9zID09PSBQT1NJVElPTlMuQWZ0ZXJfTWFpbikgewogICAgICAgICAgbmV3UmVwaFBvcyA9IGJhc2U7CiAgICAgICAgICB3aGlsZSAobmV3UmVwaFBvcyArIDEgPCBlbmQgJiYgZ2x5cGhzW25ld1JlcGhQb3MgKyAxXS5zaGFwZXJJbmZvLnBvc2l0aW9uIDw9IFBPU0lUSU9OUy5BZnRlcl9NYWluKSB7CiAgICAgICAgICAgIG5ld1JlcGhQb3MrKzsKICAgICAgICAgIH0KCiAgICAgICAgICBmb3VuZCA9IG5ld1JlcGhQb3MgPCBlbmQ7CiAgICAgICAgfQoKICAgICAgICAvLyA0LiBJZiByZXBoIHNob3VsZCBiZSBwb3NpdGlvbmVkIGJlZm9yZSBwb3N0LWJhc2UgY29uc29uYW50LCBmaW5kCiAgICAgICAgLy8gICAgZmlyc3QgcG9zdC1iYXNlIGNsYXNzaWZpZWQgY29uc29uYW50IG5vdCBsaWdhdGVkIHdpdGggbWFpbi4gSWYgbm8KICAgICAgICAvLyAgICBjb25zb25hbnQgaXMgZm91bmQsIHRoZSB0YXJnZXQgcG9zaXRpb24gc2hvdWxkIGJlIGJlZm9yZSB0aGUKICAgICAgICAvLyAgICBmaXJzdCBtYXRyYSwgc3lsbGFibGUgbW9kaWZpZXIgc2lnbiBvciB2ZWRpYyBzaWduLgogICAgICAgIC8vCiAgICAgICAgLy8gVGhpcyBpcyBvdXIgdGFrZSBvbiB3aGF0IHN0ZXAgNCBpcyB0cnlpbmcgdG8gc2F5IChhbmQgZmFpbGluZywgQkFETFkpLgogICAgICAgIGlmICghZm91bmQgJiYgcmVwaFBvcyA9PT0gUE9TSVRJT05TLkFmdGVyX1N1YikgewogICAgICAgICAgbmV3UmVwaFBvcyA9IGJhc2U7CiAgICAgICAgICB3aGlsZSAobmV3UmVwaFBvcyArIDEgPCBlbmQgJiYgIShnbHlwaHNbbmV3UmVwaFBvcyArIDFdLnNoYXBlckluZm8ucG9zaXRpb24gJiAoUE9TSVRJT05TLlBvc3RfQyB8IFBPU0lUSU9OUy5BZnRlcl9Qb3N0IHwgUE9TSVRJT05TLlNNVkQpKSkgewogICAgICAgICAgICBuZXdSZXBoUG9zKys7CiAgICAgICAgICB9CgogICAgICAgICAgZm91bmQgPSBuZXdSZXBoUG9zIDwgZW5kOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gIDUuIElmIG5vIGNvbnNvbmFudCBpcyBmb3VuZCBpbiBzdGVwcyAzIG9yIDQsIG1vdmUgcmVwaCB0byBhIHBvc2l0aW9uCiAgICAgIC8vICAgICBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGZpcnN0IHBvc3QtYmFzZSBtYXRyYSwgc3lsbGFibGUgbW9kaWZpZXIKICAgICAgLy8gICAgIHNpZ24gb3IgdmVkaWMgc2lnbiB0aGF0IGhhcyBhIHJlb3JkZXJpbmcgY2xhc3MgYWZ0ZXIgdGhlIGludGVuZGVkCiAgICAgIC8vICAgICByZXBoIHBvc2l0aW9uLiBGb3IgZXhhbXBsZSwgaWYgdGhlIHJlb3JkZXJpbmcgcG9zaXRpb24gZm9yIHJlcGgKICAgICAgLy8gICAgIGlzIHBvc3QtbWFpbiwgaXQgd2lsbCBza2lwIGFib3ZlLWJhc2UgbWF0cmFzIHRoYXQgYWxzbyBoYXZlIGEKICAgICAgLy8gICAgIHBvc3QtbWFpbiBwb3NpdGlvbi4KICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgIC8vIENvcGllZCBmcm9tIHN0ZXAgMi4KICAgICAgICBuZXdSZXBoUG9zID0gc3RhcnQgKyAxOwogICAgICAgIHdoaWxlIChuZXdSZXBoUG9zIDwgYmFzZSAmJiAhaXNIYWxhbnRPckNvZW5nKGdseXBoc1tuZXdSZXBoUG9zXSkpIHsKICAgICAgICAgIG5ld1JlcGhQb3MrKzsKICAgICAgICB9CgogICAgICAgIGlmIChuZXdSZXBoUG9zIDwgYmFzZSAmJiBpc0hhbGFudE9yQ29lbmcoZ2x5cGhzW25ld1JlcGhQb3NdKSkgewogICAgICAgICAgLy8gLT5JZiBaV0ogb3IgWldOSiBhcmUgZm9sbG93aW5nIHRoaXMgaGFsYW50LCBwb3NpdGlvbiBpcyBtb3ZlZCBhZnRlciBpdC4KICAgICAgICAgIGlmIChuZXdSZXBoUG9zICsgMSA8IGJhc2UgJiYgaXNKb2luZXIoZ2x5cGhzW25ld1JlcGhQb3MgKyAxXSkpIHsKICAgICAgICAgICAgbmV3UmVwaFBvcysrOwogICAgICAgICAgfQoKICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIDYuIE90aGVyd2lzZSwgcmVvcmRlciByZXBoIHRvIHRoZSBlbmQgb2YgdGhlIHN5bGxhYmxlLgogICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgbmV3UmVwaFBvcyA9IGVuZCAtIDE7CiAgICAgICAgd2hpbGUgKG5ld1JlcGhQb3MgPiBzdGFydCAmJiBnbHlwaHNbbmV3UmVwaFBvc10uc2hhcGVySW5mby5wb3NpdGlvbiA9PT0gUE9TSVRJT05TLlNNVkQpIHsKICAgICAgICAgIG5ld1JlcGhQb3MtLTsKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBSZXBoIGlzIHRvIGJlIGVuZGluZyB1cCBhZnRlciBhIE1hdHJhLEhhbGFudCBzZXF1ZW5jZSwKICAgICAgICAvLyBwb3NpdGlvbiBpdCBiZWZvcmUgdGhhdCBIYWxhbnQgc28gaXQgY2FuIGludGVyYWN0IHdpdGggdGhlIE1hdHJhLgogICAgICAgIC8vIEhvd2V2ZXIsIGlmIGl0J3MgYSBwbGFpbiBDb25zb25hbnQsSGFsYW50IHdlIHNob3VsZG4ndCBkbyB0aGF0LgogICAgICAgIC8vIFVuaXNjcmliZSBkb2Vzbid0IGRvIHRoaXMuCiAgICAgICAgLy8gVEVTVDogVSswOTMwLFUrMDk0RCxVKzA5MTUsVSswOTRCLFUrMDk0RAogICAgICAgIGlmIChpc0hhbGFudE9yQ29lbmcoZ2x5cGhzW25ld1JlcGhQb3NdKSkgewogICAgICAgICAgZm9yICh2YXIgX2kyMiA9IGJhc2UgKyAxOyBfaTIyIDwgbmV3UmVwaFBvczsgX2kyMisrKSB7CiAgICAgICAgICAgIGlmIChnbHlwaHNbX2kyMl0uc2hhcGVySW5mby5jYXRlZ29yeSA9PT0gQ0FURUdPUklFUy5NKSB7CiAgICAgICAgICAgICAgbmV3UmVwaFBvcy0tOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICB2YXIgcmVwaCA9IGdseXBoc1tzdGFydF07CiAgICAgIGdseXBocy5zcGxpY2UuYXBwbHkoZ2x5cGhzLCBbc3RhcnQsIDBdLmNvbmNhdChnbHlwaHMuc3BsaWNlKHN0YXJ0ICsgMSwgbmV3UmVwaFBvcyAtIHN0YXJ0KSkpOwogICAgICBnbHlwaHNbbmV3UmVwaFBvc10gPSByZXBoOwoKICAgICAgaWYgKHN0YXJ0IDwgYmFzZSAmJiBiYXNlIDw9IG5ld1JlcGhQb3MpIHsKICAgICAgICBiYXNlLS07CiAgICAgIH0KICAgIH0KCiAgICAvLyBvIFJlb3JkZXIgcHJlLWJhc2UgcmVvcmRlcmluZyBjb25zb25hbnRzOgogICAgLy8KICAgIC8vIElmIGEgcHJlLWJhc2UgcmVvcmRlcmluZyBjb25zb25hbnQgaXMgZm91bmQsIHJlb3JkZXIgaXQgYWNjb3JkaW5nIHRvCiAgICAvLyB0aGUgZm9sbG93aW5nIHJ1bGVzOgogICAgaWYgKHRyeVByZWYgJiYgYmFzZSArIDEgPCBlbmQpIHsKICAgICAgZm9yICh2YXIgX2kyMyA9IGJhc2UgKyAxOyBfaTIzIDwgZW5kOyBfaTIzKyspIHsKICAgICAgICBpZiAoZ2x5cGhzW19pMjNdLmZlYXR1cmVzLnByZWYpIHsKICAgICAgICAgIC8vIDEuIE9ubHkgcmVvcmRlciBhIGdseXBoIHByb2R1Y2VkIGJ5IHN1YnN0aXR1dGlvbiBkdXJpbmcgYXBwbGljYXRpb24KICAgICAgICAgIC8vICAgIG9mIHRoZSA8cHJlZj4gZmVhdHVyZS4gKE5vdGUgdGhhdCBhIGZvbnQgbWF5IHNoYXBlIGEgUmEgY29uc29uYW50IHdpdGgKICAgICAgICAgIC8vICAgIHRoZSBmZWF0dXJlIGdlbmVyYWxseSBidXQgYmxvY2sgaXQgaW4gY2VydGFpbiBjb250ZXh0cy4pCgogICAgICAgICAgLy8gTm90ZTogV2UganVzdCBjaGVjayB0aGF0IHNvbWV0aGluZyBnb3Qgc3Vic3RpdHV0ZWQuICBXZSBkb24ndCBjaGVjayB0aGF0CiAgICAgICAgICAvLyB0aGUgPHByZWY+IGZlYXR1cmUgYWN0dWFsbHkgZGlkIGl0Li4uCiAgICAgICAgICAvLwogICAgICAgICAgLy8gUmVvcmRlciBwcmVmIG9ubHkgaWYgaXQgbGlnYXRlZC4KICAgICAgICAgIGlmIChnbHlwaHNbX2kyM10uaXNMaWdhdGVkICYmICFnbHlwaHNbX2kyM10uaXNNdWx0aXBsaWVkKSB7CiAgICAgICAgICAgIC8vIDIuIFRyeSB0byBmaW5kIGEgdGFyZ2V0IHBvc2l0aW9uIHRoZSBzYW1lIHdheSBhcyBmb3IgcHJlLWJhc2UgbWF0cmEuCiAgICAgICAgICAgIC8vICAgIElmIGl0IGlzIGZvdW5kLCByZW9yZGVyIHByZS1iYXNlIGNvbnNvbmFudCBnbHlwaC4KICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gMy4gSWYgcG9zaXRpb24gaXMgbm90IGZvdW5kLCByZW9yZGVyIGltbWVkaWF0ZWx5IGJlZm9yZSBtYWluCiAgICAgICAgICAgIC8vICAgIGNvbnNvbmFudC4KICAgICAgICAgICAgdmFyIF9uZXdQb3MgPSBiYXNlOwoKICAgICAgICAgICAgLy8gTWFsYXlhbGFtIC8gVGFtaWwgZG8gbm90IGhhdmUgImhhbGYiIGZvcm1zIG9yIGV4cGxpY2l0IHZpcmFtYSBmb3Jtcy4KICAgICAgICAgICAgLy8gVGhlIGdseXBocyBmb3JtZWQgYnkgJ2hhbGYnIGFyZSBDaGlsbHVzIG9yIGxpZ2F0ZWQgZXhwbGljaXQgdmlyYW1hcy4KICAgICAgICAgICAgLy8gV2Ugd2FudCB0byBwb3NpdGlvbiBtYXRyYSBhZnRlciB0aGVtLgogICAgICAgICAgICBpZiAocGxhbi51bmljb2RlU2NyaXB0ICE9PSAnTWFsYXlhbGFtJyAmJiBwbGFuLnVuaWNvZGVTY3JpcHQgIT09ICdUYW1pbCcpIHsKICAgICAgICAgICAgICB3aGlsZSAoX25ld1BvcyA+IHN0YXJ0ICYmICEoZ2x5cGhzW19uZXdQb3MgLSAxXS5zaGFwZXJJbmZvLmNhdGVnb3J5ICYgKENBVEVHT1JJRVMuTSB8IEhBTEFOVF9PUl9DT0VOR19GTEFHUykpKSB7CiAgICAgICAgICAgICAgICBfbmV3UG9zLS07CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAvLyBJbiBLaG1lciBjb2VuZyBtb2RlbCwgYSBILFJhIGNhbiBnbyAqYWZ0ZXIqIG1hdHJhcy4gIElmIGl0IGdvZXMgYWZ0ZXIgYQogICAgICAgICAgICAgIC8vIHNwbGl0IG1hdHJhLCBpdCBzaG91bGQgYmUgcmVvcmRlcmVkIHRvICpiZWZvcmUqIHRoZSBsZWZ0IHBhcnQgb2Ygc3VjaCBtYXRyYS4KICAgICAgICAgICAgICBpZiAoX25ld1BvcyA+IHN0YXJ0ICYmIGdseXBoc1tfbmV3UG9zIC0gMV0uc2hhcGVySW5mby5jYXRlZ29yeSA9PT0gQ0FURUdPUklFUy5NKSB7CiAgICAgICAgICAgICAgICB2YXIgX29sZFBvczIgPSBfaTIzOwogICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IGJhc2UgKyAxOyBqIDwgX29sZFBvczI7IGorKykgewogICAgICAgICAgICAgICAgICBpZiAoZ2x5cGhzW2pdLnNoYXBlckluZm8uY2F0ZWdvcnkgPT09IENBVEVHT1JJRVMuTSkgewogICAgICAgICAgICAgICAgICAgIF9uZXdQb3MtLTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKF9uZXdQb3MgPiBzdGFydCAmJiBpc0hhbGFudE9yQ29lbmcoZ2x5cGhzW19uZXdQb3MgLSAxXSkpIHsKICAgICAgICAgICAgICAvLyAtPiBJZiBaV0ogb3IgWldOSiBmb2xsb3cgdGhpcyBoYWxhbnQsIHBvc2l0aW9uIGlzIG1vdmVkIGFmdGVyIGl0LgogICAgICAgICAgICAgIGlmIChfbmV3UG9zIDwgZW5kICYmIGlzSm9pbmVyKGdseXBoc1tfbmV3UG9zXSkpIHsKICAgICAgICAgICAgICAgIF9uZXdQb3MrKzsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBfb2xkUG9zID0gX2kyMzsKICAgICAgICAgICAgdmFyIF90bXAgPSBnbHlwaHNbX29sZFBvc107CiAgICAgICAgICAgIGdseXBocy5zcGxpY2UuYXBwbHkoZ2x5cGhzLCBbX25ld1BvcyArIDEsIDBdLmNvbmNhdChnbHlwaHMuc3BsaWNlKF9uZXdQb3MsIF9vbGRQb3MgLSBfbmV3UG9zKSkpOwogICAgICAgICAgICBnbHlwaHNbX25ld1Bvc10gPSBfdG1wOwoKICAgICAgICAgICAgaWYgKF9uZXdQb3MgPD0gYmFzZSAmJiBiYXNlIDwgX29sZFBvcykgewogICAgICAgICAgICAgIGJhc2UrKzsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIEFwcGx5ICdpbml0JyB0byB0aGUgTGVmdCBNYXRyYSBpZiBpdCdzIGEgd29yZCBzdGFydC4KICAgIGlmIChnbHlwaHNbc3RhcnRdLnNoYXBlckluZm8ucG9zaXRpb24gPT09IFBPU0lUSU9OUy5QcmVfTSAmJiAoIXN0YXJ0IHx8ICEvQ2Z8TW4vLnRlc3QodW5pY29kZS5nZXRDYXRlZ29yeShnbHlwaHNbc3RhcnQgLSAxXS5jb2RlUG9pbnRzWzBdKSkpKSB7CiAgICAgIGdseXBoc1tzdGFydF0uZmVhdHVyZXMuaW5pdCA9IHRydWU7CiAgICB9CiAgfQp9CgpmdW5jdGlvbiBuZXh0U3lsbGFibGUoZ2x5cGhzLCBzdGFydCkgewogIGlmIChzdGFydCA+PSBnbHlwaHMubGVuZ3RoKSByZXR1cm4gc3RhcnQ7CiAgdmFyIHN5bGxhYmxlID0gZ2x5cGhzW3N0YXJ0XS5zaGFwZXJJbmZvLnN5bGxhYmxlOwogIHdoaWxlICgrK3N0YXJ0IDwgZ2x5cGhzLmxlbmd0aCAmJiBnbHlwaHNbc3RhcnRdLnNoYXBlckluZm8uc3lsbGFibGUgPT09IHN5bGxhYmxlKSB7fQogIHJldHVybiBzdGFydDsKfQoKdmFyIF9jbGFzcyQ3Owp2YXIgX3RlbXAkMzsKdmFyIGNhdGVnb3JpZXMkMSA9IHVzZURhdGEuY2F0ZWdvcmllczsKdmFyIGRlY29tcG9zaXRpb25zJDIgPSB1c2VEYXRhLmRlY29tcG9zaXRpb25zOwp2YXIgdHJpZSQyID0gbmV3IFVuaWNvZGVUcmllKEJ1ZmZlcigiQUFJQUFBQUFBQUFBQUtuUUFWRU1ydlB0bkgrb0hVY1Z4K2ZkOTk3OTlXNWU4bXgrOU5rWW03WVVJMkt0aW1rVkRHM0ZXZ1ZURlkxRnFhMlZKaXJZQjBJYVVGTEJhS0dKVmlYaXI2b3hLQ1NCb2kwVVRLdGcyeUEyNmgrbWlsWU50TUgrMFdLMVZReXZ0QlMvNDg3aG5uY3lNenV6dTdON243a0hQc3p1N096TW1UTnpkbWRtZnp6ZlVtcGlVcWtlbUFNYndTWndLYmpjeE0xWEVMNFZ2QjI4RzN6QWsrNTZjTE1sZmdkWUFEdkJidkJGOEdXd0g5eGwrQ0ZMZndqOEJQd1UvTUtTMzgvQU1mQTg2djlybzl1Y1FjZFIrQ2pDUDRDVDRFbndEUGczZUFGTVRpazFBK2JBUE5nSU5vRkx3R2F3WlNwTGZ6WENyV0FiK0FqWURtNEJPOEZ1c0Fmc0EvdkJYZUFnT0FMdU5mdjNnNGZBY1hBQ1BBYWVBRStCNThCcDhOSlVwbk43V3FsWnNIWTYyOStBOEdMd1d2QUc4Qlp3Slhpbk9mNWVoQjhFTjRBZFlHRTZxN2RtRjl1dWdzOGh2ejBWNThuWksvTCtLdmEvQlg0QURvTjdwclA2SGdVUGdrZkE3M0wwZVF6SG53QlBnWCtZODArREY4RlVXNmxCTzR0YmpYQTl1QWk4cGozc1MyL0U5bWF3QlZ3TnRvSnQ1cHpyVFhnendrK0I3YXdQN3NUKzduWTZXeEZmUUJsZkFsOEgzd1UvQW5lemN1L0Q5cy9CTVJOM0hPRUo4RWR3TWtDL0o1SG1tWFptcTJmQklqZ0VWRWVwYmllTFg0RncwTW5TcnpSeG1yVnNtN01COFJlRFY0dmpyM2VrSnk3clpHVlBNYjE5NlhtNm91Zzgzb1J5dDRDcndEVmdLOWdHUHR6eG4zdVRPRDZZUERQTko1SG0wK0F6bmF6ZmZKN1o0S1NuWG5jZzNWZkFOOEVCaHg0Mi96L1VHZGJyeDUyc3I5eUg4QUZUcnQ1KzJHemZuV1BiS3V3N1pzelp5TmgveG93Wk0yYk1tREZqeHNReVo1bFBOczNoOW5CTllIdUFmcjlpYzlmZmlIbnNKenpuVTkxL2ozUCsyc25XWWY2RzhPL2duK0EwZU1uRXQ3dlFwNXVsWDROd0htd0VtN3JaOFVzUlhnNnVNUHZYSUh3UHVLN3JMbCtudTlGemZNeVlNV1BHcEdWdXNsbWFyditZTVdQU2tOcS9kMkQ4dU5ETm5ndmRpdkEyeTNqeTltNzJiRjl2M3ltT2YyTUV4cDhmRzJUc0FjZkEyd0pZQkpldFdCcTNpKzBmd1BhZndMbXpTbDBMRm1aTlBNTEhaNGZwbnNYMkFkamdjWEIrVDZrUGdlK0FHN0QvdlhZVy90THNjOXI5TStNa1Z5TE5SMW02ZzlnK1pmWXZtTUV4Y0hDbStmdFAwK1Q1eS9lMTdVdy9QWUx3SG5DMG04MFRIK3pHMzAvM21qU0RuUFMyL0I0cFVKNHJYM24rYjVIM285Mmw2VWpmdlo3eS9vSnpUb0dudThPNjZYVFBZZjgvSnI4WFdMNlRQWGY5YlBuSHRtVnMrODlBbnhWZ0RWZ1BMZ0t2QWcrWS9GNkg3YzFnQzdqS0hIOFhlSi94MTV2QWp0NHd2d1ZzN3dLZkJYdkFQdkExOEcxd3NKZXZqMzZmNWdqUzNldElxK2Z0OStQWVE3M2gvbkZzbjJEN2YrNWw3NWJvL1ZQWWZ0cFRibEZiMi9KbzJwZGpmTDB1WE9YL3F4Zm5wOHZaVmsyWHY5aGJtdStMeHZZdDNBLzcvV1pzUG9wdFBrcjliZEN2MXlhK2Q0VHVNTzhUcmU1bjRYa0lMd1NielA0bC9XSGF6WDEvL3IyTy96N2NGSG52U1lXOFIvVm0wMlpYSUh4SHplMVhkZjliYm43cDB6MmtEcm9OcjJYOVdMKzc5MzdzWDlmUCt2OWg5bjZqVHJmSTNqRzlFZnNmTjNHMzVQUi9HNHVSZlkzZU1Ud2RrRmEvQzNocmYya2NmeS94WVRPbXBycmZac0xiRWU3ckRQVy9VOVJydjlrL2FobVRMMGNXV3hQL1l4UmtndEVTK3p3TmhaUHMrRlFnTWovbGlFc3RvMkh4c1pCUVgycFpvTFpxV2M1cmlYRGFRQkxTdDFMM2hjbkUrVmN0N2FZVktDRWhiWGsyK2I3Tlo4NG1tWEF3Q2lMMTROZTg1UzYyTVlQY1hpNVN0TS9ZeGxKRjJsZmFiem5ac0M2L0M4MDd4dlpWK3lGdmU5ZDFLWS8vZDNITk84cEtVWHVURGgwR3BwN0I4NTJxNlFGTWdkV00yZGZiQXhPdUVQUUVmY0VzTzVmcXVKTFpyTWZ5Q3RXUDBoZVpGNm9TZGlIOXU0YVF2SlJJSi9lTDZCQnluSXRMcDVEMkpSa1k1TDV1M3hBZjZsdmlYSFdTWmNmYUtPLys1enZPL2M5WHRxOHVSWFNPYmQrOGJTMHpKclMxcnhUeVg3ay9hMG5yazVEK21IZU9DOTB1cTFRMjE2WDU3bHlrZnFIdDYydVRHSjJyYXQraS9rdHR5cS9SU2kyOVBsY2xaZjJYeHE1NVplU1YzNFQ5NmQ1WDVQcVpKOUkzWlgybG5rWHQzeEwxS3lyYXYvTHV0Ylo2dUd4dVM2c3M2VjNwWE9YWTRrUDdFQmZ5SlQ3KzRUSlFTOXVmNzRmNm4rMys2WklpOWJDdGllYXRGZkN4VU14NEtNWWZ5L3B6ckIzMHZtODhxOVNaMTFLK245ZWVOTjYxMlVGS1dYOHVJOVRtUmNhN1RiV3ZLeTJKdkY2bmFGK2IvMHVSdXBacDM1Y1ppa2hadnluaVkyUi9DYmRCM3ZYeW5JQzZoYlJCSGY0bDF4cHM2dzR4L2xWRXR4UnRHWk11UkE4dU5oL2pmWVY4a2Rwc0JVc3pjT0RyRDdFMkpUMktyQjNWNlhNaGJkTmpjWEl0eHphT0pXa3BmOTc2L0k1Z2xRbjFzYkxQODZVOUZRdno0bDBTMjgvbGNXVUpiYnJFMmwrWi9UbEh2aTQva3ZaWExNeXJteTFQVzd4OGhsNlVGZ3ZsbU5NMUpxM2FKM1NlMHlKY3Bkd1M2bU9wL1pnTFg1TjFyZEZLYUl6SDl6dHF1TWJxcSsvcUNGUmsraFJveVp2clRIdU84Zk5kL2RqbUV6WkozVGRpc04xYk5RTmw3eTk2RFYvM21Wa1R0d2FzVmRrMWFpNnliR2xEZWs4blQxZlhjNE01dFZTUHZocU9zV1FlWFFzOEwxbjNJcmFkVThPeENlVmpLN2RyN0RwbDBjTUhuVXZ0MThUemZWc2ZiL3BaWTU2ZlYyR25WUFZJWWFPaTl4Y1pKOGNtS2N1M3djdVBzVkhWNWNkS0ZmWlhOWmVmcDVzV2Z0K3d6UjFjY3pLQ3hoOTlOUng3Nkh2d09wV052NlladEFhanQ2V1B5UHN3dFZWcy9WT0o3eHBZeDNWUjMxZXI3Z014TnVWOVE0NDNDRGxXNDNLdVlTWGJsc3liZktZdDU4dHJmZXo3QTFYN1RkbStWN1Rjb3VkTCtMcFZHZjJraE42M1U1T3lENUFmME5vVXYwNmw3SmMwUnRlK3NvNHhMOUF5eTNSeitTdWZZNUpmMjY3eGNtN0o0ZGQza3VtSU9ybWs3UGw1NDliVVkxcHVJOTFHZGI4VHB1Kzl0am1oWEZkd3RmVnNUdjVTUXZYS1cwY0s0ZVhnUEJPNmlKMDdOTlZPSEg3L3RGMWp5SmRuV2JyVS9VYXUzVk5JMTU2UVoyWmFaRnU3Nmk2dlFYeTlZSjJIOVFaOTdhRjNwMXhseDF5ZnVZUmNkMEtsN055YVgxOTArcFVPS0kwdHZ1czVqNy9uU1dLTG8zRkVSOFIzTEhFeDhncXdnZTFQT2dpMWwxeWZpclYzekhwSVNIeHMzdkxlRlhPZWxsY0cxREZHYkdQMDBQUGtlS0VPYVhJc3FoemJydU9oOVFrNUwwOG5XMmdySjBhdnN2V29jdjB6UmgvZkdDRzBUVjM1aEI0djByZHM1VmRkam0vc0ZDS3grYVhTdDJ5YWxQWnNvbHhYVzQ2Q0RuWHAwWVEwcmRzbzlPVVlQU1lUNit5enV4eHpsclZmRmZhdlEvTEtxc1ArZGJWekUvMHFSYjhwS2luNlY5VTZGbm4yNHBxSHVmTE1XeTkwblYrMERrWG1jcmIwVXErNnBVNy9xY3MvNjdTSFRlVGFhQms5aXB5WFF2THFXMVU3dVBLcHV4L0VTbFA5dW15ZFI4SDNVanpIb1h4ajAvSjFZcjV1YkhzUHJXT0pxeEsraGs1citFVnRIM3BlMVhXSVhhKzF2UTlZSi9vWnJlMWJHUmVoM3hLV2VYN0J4ZllzdHdoNWVyckdKaTU5YmU4NDgyY1NzZlVQUVQ0WGxjOUsrWE1tYXRjWTBmbzIrU3hZUXMvNFhPOE0wM05nL1R4dWpZSCtGUkVMU2RIKzZtdHZldThpdGIxQ3k3QzlYOEdmc1ZPY2ZOODZSSGc1NndKMG9iNXFPei9FL3JJZHE3WWhGMzQvMGNmb2VXS1ZmdEpqSWJXRGJEZlhlWFIvcHJCT0tXSi8zZGQ0MytzciszMlR2Z0VJRVo2LzdadDUvbDdnaE1tNzd1K2V5NGdjejV4Zmt0QTV2RTlDNXZ5MlkzbHBYZVg0MHRIY0xNWDQycVpIUy9sdFpsdVhpU2xEeGlsbHQzVmRJdnVmYmMwajc1d3k1YVdhT3hXUlVabWZsNW5EU2gzTHpvV2JYSk9nOHV1bUtrbmRwMVBuSDJJUGZlK1UzM3o3dmpXaGRQUXVXTWg0cmFxeFdNaDlYODlSWnRTWjcvSnB5WHMzTldRY0VUTjNDWkhVL2xtVm5zdFpCMStaZk01QS8xVkoyVjl0OHdUWE4xUytmMjdtemF1bGJDeEpIZVB3QzFUei8wSzEvVmRQdnRPc2JhK3ZMN1p4TTEvamFrSi9WOS95ZmR0TngraTdiaFZSUmxsL3JySytzazNxTHQvM1QwYWZIK3R6ejFIRGZ4elovSGxHRGR1SzF5L0dMMjF6dktwdFFHV0ZTcFZsRm0weitaeEQvdmRBdDlFcVE5NzFOa1JIVzdxeXRvZzUzK2NmVmZlRkdMU3RmZGRmWWthNXg2ZGwreWkvLzR6Ni81NTlhVW40LysvazJwdjhCcWZNLzBxVkNudStJZjJPSlBSWlVjeXpKRi81UlFtNXh0TTlsbitMUk4rOFU5K2lNUVMxVmVnOXEyei9UbFYzRXR0My9yTE9JWE9vb2tpZHkvNVgzR1lEK1M4YTF6MmUwdkg2OTVUOXZoRXFkYlkvLzBkVTNqV1oycllxL2N2Q1JUOHIwOC9OTGxUNS96eVNkU3VydjF5YkxpdXA1dEFwNStOTnpmUEo1cjYxd2FyYXBhakl0ZlRRTmVLNjEwL3JXRU1QeWIrdU9vL2llclJOYkdVMDFaK3JxbmVJUFdOc1Q5dDFyRCtPWXI4cm0wZUt2cC9DaDFQNFllcHl5K2hXVkQvZitWV1hYNVgrVFpkZlpaK0tMYjlKK1M4PSIsImJhc2U2NCIpKTsKdmFyIHN0YXRlTWFjaGluZSQxID0gbmV3IFN0YXRlTWFjaGluZSh1c2VEYXRhKTsKCi8qKgogKiBUaGlzIHNoYXBlciBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgVW5pdmVyc2FsIFNoYXBpbmcgRW5naW5lLCB3aGljaAogKiB1c2VzIFVuaWNvZGUgZGF0YSB0byBzaGFwZSBhIG51bWJlciBvZiBzY3JpcHRzIHdpdGhvdXQgYSBkZWRpY2F0ZWQgc2hhcGluZyBlbmdpbmUuCiAqIFNlZSBodHRwczovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvT3BlblR5cGVEZXYvVVNFL2ludHJvLmh0bS4KICovCnZhciBVbml2ZXJzYWxTaGFwZXIgPSAoX3RlbXAkMyA9IF9jbGFzcyQ3ID0gZnVuY3Rpb24gKF9EZWZhdWx0U2hhcGVyKSB7CiAgX2luaGVyaXRzKFVuaXZlcnNhbFNoYXBlciwgX0RlZmF1bHRTaGFwZXIpOwoKICBmdW5jdGlvbiBVbml2ZXJzYWxTaGFwZXIoKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVW5pdmVyc2FsU2hhcGVyKTsKCiAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX0RlZmF1bHRTaGFwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7CiAgfQoKICBVbml2ZXJzYWxTaGFwZXIucGxhbkZlYXR1cmVzID0gZnVuY3Rpb24gcGxhbkZlYXR1cmVzKHBsYW4pIHsKICAgIHBsYW4uYWRkU3RhZ2Uoc2V0dXBTeWxsYWJsZXMkMSk7CgogICAgLy8gRGVmYXVsdCBnbHlwaCBwcmUtcHJvY2Vzc2luZyBncm91cAogICAgcGxhbi5hZGRTdGFnZShbJ2xvY2wnLCAnY2NtcCcsICdudWt0JywgJ2FraG4nXSk7CgogICAgLy8gUmVvcmRlcmluZyBncm91cAogICAgcGxhbi5hZGRTdGFnZShjbGVhclN1YnN0aXR1dGlvbkZsYWdzKTsKICAgIHBsYW4uYWRkU3RhZ2UoWydycGhmJ10sIGZhbHNlKTsKICAgIHBsYW4uYWRkU3RhZ2UocmVjb3JkUnBoZik7CiAgICBwbGFuLmFkZFN0YWdlKGNsZWFyU3Vic3RpdHV0aW9uRmxhZ3MpOwogICAgcGxhbi5hZGRTdGFnZShbJ3ByZWYnXSk7CiAgICBwbGFuLmFkZFN0YWdlKHJlY29yZFByZWYpOwoKICAgIC8vIE9ydGhvZ3JhcGhpYyB1bml0IHNoYXBpbmcgZ3JvdXAKICAgIHBsYW4uYWRkU3RhZ2UoWydya3JmJywgJ2FidmYnLCAnYmx3ZicsICdoYWxmJywgJ3BzdGYnLCAndmF0dScsICdjamN0J10pOwogICAgcGxhbi5hZGRTdGFnZShyZW9yZGVyKTsKCiAgICAvLyBUb3BvZ3JhcGhpY2FsIGZlYXR1cmVzCiAgICAvLyBTY3JpcHRzIHRoYXQgbmVlZCB0aGlzIGFyZSBoYW5kbGVkIGJ5IHRoZSBBcmFiaWMgc2hhcGVyLCBub3QgaW1wbGVtZW50ZWQgaGVyZSBmb3Igbm93LgogICAgLy8gcGxhbi5hZGRTdGFnZShbJ2lzb2wnLCAnaW5pdCcsICdtZWRpJywgJ2ZpbmEnLCAnbWVkMicsICdmaW4yJywgJ2ZpbjMnXSwgZmFsc2UpOwoKICAgIC8vIFN0YW5kYXJkIHRvcG9ncmFwaGljIHByZXNlbnRhdGlvbiBhbmQgcG9zaXRpb25hbCBmZWF0dXJlIGFwcGxpY2F0aW9uCiAgICBwbGFuLmFkZFN0YWdlKFsnYWJ2cycsICdibHdzJywgJ3ByZXMnLCAncHN0cycsICdkaXN0JywgJ2Fidm0nLCAnYmx3bSddKTsKICB9OwoKICBVbml2ZXJzYWxTaGFwZXIuYXNzaWduRmVhdHVyZXMgPSBmdW5jdGlvbiBhc3NpZ25GZWF0dXJlcyhwbGFuLCBnbHlwaHMpIHsKICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKGkpIHsKICAgICAgdmFyIGNvZGVwb2ludCA9IGdseXBoc1tpXS5jb2RlUG9pbnRzWzBdOwogICAgICBpZiAoZGVjb21wb3NpdGlvbnMkMltjb2RlcG9pbnRdKSB7CiAgICAgICAgdmFyIGRlY29tcG9zZWQgPSBkZWNvbXBvc2l0aW9ucyQyW2NvZGVwb2ludF0ubWFwKGZ1bmN0aW9uIChjKSB7CiAgICAgICAgICB2YXIgZyA9IHBsYW4uZm9udC5nbHlwaEZvckNvZGVQb2ludChjKTsKICAgICAgICAgIHJldHVybiBuZXcgR2x5cGhJbmZvKHBsYW4uZm9udCwgZy5pZCwgW2NdLCBnbHlwaHNbaV0uZmVhdHVyZXMpOwogICAgICAgIH0pOwoKICAgICAgICBnbHlwaHMuc3BsaWNlLmFwcGx5KGdseXBocywgW2ksIDFdLmNvbmNhdChkZWNvbXBvc2VkKSk7CiAgICAgIH0KICAgIH07CgogICAgLy8gRGVjb21wb3NlIHNwbGl0IHZvd2VscwogICAgLy8gVE9ETzogZG8gdGhpcyBpbiBhIG1vcmUgZ2VuZXJhbCB1bmljb2RlIG5vcm1hbGl6ZXIKICAgIGZvciAodmFyIGkgPSBnbHlwaHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgX2xvb3AoaSk7CiAgICB9CiAgfTsKCiAgcmV0dXJuIFVuaXZlcnNhbFNoYXBlcjsKfShEZWZhdWx0U2hhcGVyKSwgX2NsYXNzJDcuemVyb01hcmtXaWR0aHMgPSAnQkVGT1JFX0dQT1MnLCBfdGVtcCQzKTsKZnVuY3Rpb24gdXNlQ2F0ZWdvcnkoZ2x5cGgpIHsKICByZXR1cm4gdHJpZSQyLmdldChnbHlwaC5jb2RlUG9pbnRzWzBdKTsKfQoKdmFyIFVTRUluZm8gPSBmdW5jdGlvbiBVU0VJbmZvKGNhdGVnb3J5LCBzeWxsYWJsZVR5cGUsIHN5bGxhYmxlKSB7CiAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFVTRUluZm8pOwoKICB0aGlzLmNhdGVnb3J5ID0gY2F0ZWdvcnk7CiAgdGhpcy5zeWxsYWJsZVR5cGUgPSBzeWxsYWJsZVR5cGU7CiAgdGhpcy5zeWxsYWJsZSA9IHN5bGxhYmxlOwp9OwoKZnVuY3Rpb24gc2V0dXBTeWxsYWJsZXMkMShmb250LCBnbHlwaHMpIHsKICB2YXIgc3lsbGFibGUgPSAwOwogIGZvciAodmFyIF9pdGVyYXRvciA9IHN0YXRlTWFjaGluZSQxLm1hdGNoKGdseXBocy5tYXAodXNlQ2F0ZWdvcnkpKSwgX2lzQXJyYXkgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvciksIF9pID0gMCwgX2l0ZXJhdG9yID0gX2lzQXJyYXkgPyBfaXRlcmF0b3IgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yKTs7KSB7CiAgICB2YXIgX3JlZjsKCiAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgaWYgKF9pID49IF9pdGVyYXRvci5sZW5ndGgpIGJyZWFrOwogICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgfSBlbHNlIHsKICAgICAgX2kgPSBfaXRlcmF0b3IubmV4dCgpOwogICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgIH0KCiAgICB2YXIgX3JlZjIgPSBfcmVmLAogICAgICAgIHN0YXJ0ID0gX3JlZjJbMF0sCiAgICAgICAgZW5kID0gX3JlZjJbMV0sCiAgICAgICAgdGFncyA9IF9yZWYyWzJdOwoKICAgICsrc3lsbGFibGU7CgogICAgLy8gQ3JlYXRlIHNoYXBlciBpbmZvCiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspIHsKICAgICAgZ2x5cGhzW2ldLnNoYXBlckluZm8gPSBuZXcgVVNFSW5mbyhjYXRlZ29yaWVzJDFbdXNlQ2F0ZWdvcnkoZ2x5cGhzW2ldKV0sIHRhZ3NbMF0sIHN5bGxhYmxlKTsKICAgIH0KCiAgICAvLyBBc3NpZ24gcnBoZiBmZWF0dXJlCiAgICB2YXIgbGltaXQgPSBnbHlwaHNbc3RhcnRdLnNoYXBlckluZm8uY2F0ZWdvcnkgPT09ICdSJyA/IDEgOiBNYXRoLm1pbigzLCBlbmQgLSBzdGFydCk7CiAgICBmb3IgKHZhciBfaTIgPSBzdGFydDsgX2kyIDwgc3RhcnQgKyBsaW1pdDsgX2kyKyspIHsKICAgICAgZ2x5cGhzW19pMl0uZmVhdHVyZXMucnBoZiA9IHRydWU7CiAgICB9CiAgfQp9CgpmdW5jdGlvbiBjbGVhclN1YnN0aXR1dGlvbkZsYWdzKGZvbnQsIGdseXBocykgewogIGZvciAodmFyIF9pdGVyYXRvcjIgPSBnbHlwaHMsIF9pc0FycmF5MiA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMiksIF9pMyA9IDAsIF9pdGVyYXRvcjIgPSBfaXNBcnJheTIgPyBfaXRlcmF0b3IyIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjIpOzspIHsKICAgIHZhciBfcmVmMzsKCiAgICBpZiAoX2lzQXJyYXkyKSB7CiAgICAgIGlmIChfaTMgPj0gX2l0ZXJhdG9yMi5sZW5ndGgpIGJyZWFrOwogICAgICBfcmVmMyA9IF9pdGVyYXRvcjJbX2kzKytdOwogICAgfSBlbHNlIHsKICAgICAgX2kzID0gX2l0ZXJhdG9yMi5uZXh0KCk7CiAgICAgIGlmIChfaTMuZG9uZSkgYnJlYWs7CiAgICAgIF9yZWYzID0gX2kzLnZhbHVlOwogICAgfQoKICAgIHZhciBnbHlwaCA9IF9yZWYzOwoKICAgIGdseXBoLnN1YnN0aXR1dGVkID0gZmFsc2U7CiAgfQp9CgpmdW5jdGlvbiByZWNvcmRScGhmKGZvbnQsIGdseXBocykgewogIGZvciAodmFyIF9pdGVyYXRvcjMgPSBnbHlwaHMsIF9pc0FycmF5MyA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMyksIF9pNCA9IDAsIF9pdGVyYXRvcjMgPSBfaXNBcnJheTMgPyBfaXRlcmF0b3IzIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjMpOzspIHsKICAgIHZhciBfcmVmNDsKCiAgICBpZiAoX2lzQXJyYXkzKSB7CiAgICAgIGlmIChfaTQgPj0gX2l0ZXJhdG9yMy5sZW5ndGgpIGJyZWFrOwogICAgICBfcmVmNCA9IF9pdGVyYXRvcjNbX2k0KytdOwogICAgfSBlbHNlIHsKICAgICAgX2k0ID0gX2l0ZXJhdG9yMy5uZXh0KCk7CiAgICAgIGlmIChfaTQuZG9uZSkgYnJlYWs7CiAgICAgIF9yZWY0ID0gX2k0LnZhbHVlOwogICAgfQoKICAgIHZhciBnbHlwaCA9IF9yZWY0OwoKICAgIGlmIChnbHlwaC5zdWJzdGl0dXRlZCAmJiBnbHlwaC5mZWF0dXJlcy5ycGhmKSB7CiAgICAgIC8vIE1hcmsgYSBzdWJzdGl0dXRlZCByZXBoYS4KICAgICAgZ2x5cGguc2hhcGVySW5mby5jYXRlZ29yeSA9ICdSJzsKICAgIH0KICB9Cn0KCmZ1bmN0aW9uIHJlY29yZFByZWYoZm9udCwgZ2x5cGhzKSB7CiAgZm9yICh2YXIgX2l0ZXJhdG9yNCA9IGdseXBocywgX2lzQXJyYXk0ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3I0KSwgX2k1ID0gMCwgX2l0ZXJhdG9yNCA9IF9pc0FycmF5NCA/IF9pdGVyYXRvcjQgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yNCk7OykgewogICAgdmFyIF9yZWY1OwoKICAgIGlmIChfaXNBcnJheTQpIHsKICAgICAgaWYgKF9pNSA+PSBfaXRlcmF0b3I0Lmxlbmd0aCkgYnJlYWs7CiAgICAgIF9yZWY1ID0gX2l0ZXJhdG9yNFtfaTUrK107CiAgICB9IGVsc2UgewogICAgICBfaTUgPSBfaXRlcmF0b3I0Lm5leHQoKTsKICAgICAgaWYgKF9pNS5kb25lKSBicmVhazsKICAgICAgX3JlZjUgPSBfaTUudmFsdWU7CiAgICB9CgogICAgdmFyIGdseXBoID0gX3JlZjU7CgogICAgaWYgKGdseXBoLnN1YnN0aXR1dGVkKSB7CiAgICAgIC8vIE1hcmsgYSBzdWJzdGl0dXRlZCBwcmVmIGFzIFZQcmUsIGFzIHRoZXkgYmVoYXZlIHRoZSBzYW1lIHdheS4KICAgICAgZ2x5cGguc2hhcGVySW5mby5jYXRlZ29yeSA9ICdWUHJlJzsKICAgIH0KICB9Cn0KCmZ1bmN0aW9uIHJlb3JkZXIoZm9udCwgZ2x5cGhzKSB7CiAgdmFyIGRvdHRlZENpcmNsZSA9IGZvbnQuZ2x5cGhGb3JDb2RlUG9pbnQoMHgyNWNjKS5pZDsKCiAgZm9yICh2YXIgc3RhcnQgPSAwLCBlbmQgPSBuZXh0U3lsbGFibGUkMShnbHlwaHMsIDApOyBzdGFydCA8IGdseXBocy5sZW5ndGg7IHN0YXJ0ID0gZW5kLCBlbmQgPSBuZXh0U3lsbGFibGUkMShnbHlwaHMsIHN0YXJ0KSkgewogICAgdmFyIGkgPSB2b2lkIDAsCiAgICAgICAgaiA9IHZvaWQgMDsKICAgIHZhciBpbmZvID0gZ2x5cGhzW3N0YXJ0XS5zaGFwZXJJbmZvOwogICAgdmFyIHR5cGUgPSBpbmZvLnN5bGxhYmxlVHlwZTsKCiAgICAvLyBPbmx5IGEgZmV3IHN5bGxhYmxlIHR5cGVzIG5lZWQgcmVvcmRlcmluZy4KICAgIGlmICh0eXBlICE9PSAndmlyYW1hX3Rlcm1pbmF0ZWRfY2x1c3RlcicgJiYgdHlwZSAhPT0gJ3N0YW5kYXJkX2NsdXN0ZXInICYmIHR5cGUgIT09ICdicm9rZW5fY2x1c3RlcicpIHsKICAgICAgY29udGludWU7CiAgICB9CgogICAgLy8gSW5zZXJ0IGEgZG90dGVkIGNpcmNsZSBnbHlwaCBpbiBicm9rZW4gY2x1c3RlcnMuCiAgICBpZiAodHlwZSA9PT0gJ2Jyb2tlbl9jbHVzdGVyJyAmJiBkb3R0ZWRDaXJjbGUpIHsKICAgICAgdmFyIGcgPSBuZXcgR2x5cGhJbmZvKGZvbnQsIGRvdHRlZENpcmNsZSwgWzB4MjVjY10pOwogICAgICBnLnNoYXBlckluZm8gPSBpbmZvOwoKICAgICAgLy8gSW5zZXJ0IGFmdGVyIHBvc3NpYmxlIFJlcGhhLgogICAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZCAmJiBnbHlwaHNbaV0uc2hhcGVySW5mby5jYXRlZ29yeSA9PT0gJ1InOyBpKyspIHt9CiAgICAgIGdseXBocy5zcGxpY2UoKytpLCAwLCBnKTsKICAgICAgZW5kKys7CiAgICB9CgogICAgLy8gTW92ZSB0aGluZ3MgZm9yd2FyZC4KICAgIGlmIChpbmZvLmNhdGVnb3J5ID09PSAnUicgJiYgZW5kIC0gc3RhcnQgPiAxKSB7CiAgICAgIC8vIEdvdCBhIHJlcGhhLiBSZW9yZGVyIGl0IHRvIGFmdGVyIGZpcnN0IGJhc2UsIGJlZm9yZSBmaXJzdCBoYWxhbnQuCiAgICAgIGZvciAoaSA9IHN0YXJ0ICsgMTsgaSA8IGVuZDsgaSsrKSB7CiAgICAgICAgaW5mbyA9IGdseXBoc1tpXS5zaGFwZXJJbmZvOwogICAgICAgIGlmIChpc0Jhc2UoaW5mbykgfHwgaXNIYWxhbnQoZ2x5cGhzW2ldKSkgewogICAgICAgICAgLy8gSWYgd2UgaGl0IGEgaGFsYW50LCBtb3ZlIGJlZm9yZSBpdDsgb3RoZXJ3aXNlIGl0J3MgYSBiYXNlOiBtb3ZlIHRvIGl0J3MKICAgICAgICAgIC8vIHBsYWNlLCBhbmQgc2hpZnQgdGhpbmdzIGluIGJldHdlZW4gYmFja3dhcmQuCiAgICAgICAgICBpZiAoaXNIYWxhbnQoZ2x5cGhzW2ldKSkgewogICAgICAgICAgICBpLS07CiAgICAgICAgICB9CgogICAgICAgICAgZ2x5cGhzLnNwbGljZS5hcHBseShnbHlwaHMsIFtzdGFydCwgMF0uY29uY2F0KGdseXBocy5zcGxpY2Uoc3RhcnQgKyAxLCBpIC0gc3RhcnQpLCBbZ2x5cGhzW2ldXSkpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgLy8gTW92ZSB0aGluZ3MgYmFjay4KICAgIGZvciAoaSA9IHN0YXJ0LCBqID0gZW5kOyBpIDwgZW5kOyBpKyspIHsKICAgICAgaW5mbyA9IGdseXBoc1tpXS5zaGFwZXJJbmZvOwogICAgICBpZiAoaXNCYXNlKGluZm8pIHx8IGlzSGFsYW50KGdseXBoc1tpXSkpIHsKICAgICAgICAvLyBJZiB3ZSBoaXQgYSBoYWxhbnQsIG1vdmUgYWZ0ZXIgaXQ7IG90aGVyd2lzZSBpdCdzIGEgYmFzZTogbW92ZSB0byBpdCdzCiAgICAgICAgLy8gcGxhY2UsIGFuZCBzaGlmdCB0aGluZ3MgaW4gYmV0d2VlbiBiYWNrd2FyZC4KICAgICAgICBqID0gaXNIYWxhbnQoZ2x5cGhzW2ldKSA/IGkgKyAxIDogaTsKICAgICAgfSBlbHNlIGlmICgoaW5mby5jYXRlZ29yeSA9PT0gJ1ZQcmUnIHx8IGluZm8uY2F0ZWdvcnkgPT09ICdWTVByZScpICYmIGogPCBpKSB7CiAgICAgICAgZ2x5cGhzLnNwbGljZS5hcHBseShnbHlwaHMsIFtqLCAxLCBnbHlwaHNbaV1dLmNvbmNhdChnbHlwaHMuc3BsaWNlKGosIGkgLSBqKSkpOwogICAgICB9CiAgICB9CiAgfQp9CgpmdW5jdGlvbiBuZXh0U3lsbGFibGUkMShnbHlwaHMsIHN0YXJ0KSB7CiAgaWYgKHN0YXJ0ID49IGdseXBocy5sZW5ndGgpIHJldHVybiBzdGFydDsKICB2YXIgc3lsbGFibGUgPSBnbHlwaHNbc3RhcnRdLnNoYXBlckluZm8uc3lsbGFibGU7CiAgd2hpbGUgKCsrc3RhcnQgPCBnbHlwaHMubGVuZ3RoICYmIGdseXBoc1tzdGFydF0uc2hhcGVySW5mby5zeWxsYWJsZSA9PT0gc3lsbGFibGUpIHt9CiAgcmV0dXJuIHN0YXJ0Owp9CgpmdW5jdGlvbiBpc0hhbGFudChnbHlwaCkgewogIHJldHVybiBnbHlwaC5zaGFwZXJJbmZvLmNhdGVnb3J5ID09PSAnSCcgJiYgIWdseXBoLmlzTGlnYXRlZDsKfQoKZnVuY3Rpb24gaXNCYXNlKGluZm8pIHsKICByZXR1cm4gaW5mby5jYXRlZ29yeSA9PT0gJ0InIHx8IGluZm8uY2F0ZWdvcnkgPT09ICdHQic7Cn0KCnZhciBTSEFQRVJTID0gewogIGFyYWI6IEFyYWJpY1NoYXBlciwgLy8gQXJhYmljCiAgbW9uZzogQXJhYmljU2hhcGVyLCAvLyBNb25nb2xpYW4KICBzeXJjOiBBcmFiaWNTaGFwZXIsIC8vIFN5cmlhYwogICdua28gJzogQXJhYmljU2hhcGVyLCAvLyBOJ0tvCiAgcGhhZzogQXJhYmljU2hhcGVyLCAvLyBQaGFncyBQYQogIG1hbmQ6IEFyYWJpY1NoYXBlciwgLy8gTWFuZGFpYwogIG1hbmk6IEFyYWJpY1NoYXBlciwgLy8gTWFuaWNoYWVhbgogIHBobHA6IEFyYWJpY1NoYXBlciwgLy8gUHNhbHRlciBQYWhsYXZpCgogIGhhbmc6IEhhbmd1bFNoYXBlciwgLy8gSGFuZ3VsCgogIGJuZzI6IEluZGljU2hhcGVyLCAvLyBCZW5nYWxpCiAgYmVuZzogSW5kaWNTaGFwZXIsIC8vIEJlbmdhbGkKICBkZXYyOiBJbmRpY1NoYXBlciwgLy8gRGV2YW5hZ2FyaQogIGRldmE6IEluZGljU2hhcGVyLCAvLyBEZXZhbmFnYXJpCiAgZ2pyMjogSW5kaWNTaGFwZXIsIC8vIEd1amFyYXRpCiAgZ3VqcjogSW5kaWNTaGFwZXIsIC8vIEd1amFyYXRpCiAgZ3VydTogSW5kaWNTaGFwZXIsIC8vIEd1cm11a2hpCiAgZ3VyMjogSW5kaWNTaGFwZXIsIC8vIEd1cm11a2hpCiAga25kYTogSW5kaWNTaGFwZXIsIC8vIEthbm5hZGEKICBrbmQyOiBJbmRpY1NoYXBlciwgLy8gS2FubmFkYQogIG1sbTI6IEluZGljU2hhcGVyLCAvLyBNYWxheWFsYW0KICBtbHltOiBJbmRpY1NoYXBlciwgLy8gTWFsYXlhbGFtCiAgb3J5MjogSW5kaWNTaGFwZXIsIC8vIE9yaXlhCiAgb3J5YTogSW5kaWNTaGFwZXIsIC8vIE9yaXlhCiAgdGFtbDogSW5kaWNTaGFwZXIsIC8vIFRhbWlsCiAgdG1sMjogSW5kaWNTaGFwZXIsIC8vIFRhbWlsCiAgdGVsdTogSW5kaWNTaGFwZXIsIC8vIFRlbHVndQogIHRlbDI6IEluZGljU2hhcGVyLCAvLyBUZWx1Z3UKICBraG1yOiBJbmRpY1NoYXBlciwgLy8gS2htZXIKCiAgYmFsaTogVW5pdmVyc2FsU2hhcGVyLCAvLyBCYWxpbmVzZQogIGJhdGs6IFVuaXZlcnNhbFNoYXBlciwgLy8gQmF0YWsKICBicmFoOiBVbml2ZXJzYWxTaGFwZXIsIC8vIEJyYWhtaQogIGJ1Z2k6IFVuaXZlcnNhbFNoYXBlciwgLy8gQnVnaW5lc2UKICBidWhkOiBVbml2ZXJzYWxTaGFwZXIsIC8vIEJ1aGlkCiAgY2FrbTogVW5pdmVyc2FsU2hhcGVyLCAvLyBDaGFrbWEKICBjaGFtOiBVbml2ZXJzYWxTaGFwZXIsIC8vIENoYW0KICBkdXBsOiBVbml2ZXJzYWxTaGFwZXIsIC8vIER1cGxveWFuCiAgZWd5cDogVW5pdmVyc2FsU2hhcGVyLCAvLyBFZ3lwdGlhbiBIaWVyb2dseXBocwogIGdyYW46IFVuaXZlcnNhbFNoYXBlciwgLy8gR3JhbnRoYQogIGhhbm86IFVuaXZlcnNhbFNoYXBlciwgLy8gSGFudW5vbwogIGphdmE6IFVuaXZlcnNhbFNoYXBlciwgLy8gSmF2YW5lc2UKICBrdGhpOiBVbml2ZXJzYWxTaGFwZXIsIC8vIEthaXRoaQogIGthbGk6IFVuaXZlcnNhbFNoYXBlciwgLy8gS2F5YWggTGkKICBraGFyOiBVbml2ZXJzYWxTaGFwZXIsIC8vIEtoYXJvc2h0aGkKICBraG9qOiBVbml2ZXJzYWxTaGFwZXIsIC8vIEtob2praQogIHNpbmQ6IFVuaXZlcnNhbFNoYXBlciwgLy8gS2h1ZGF3YWRpCiAgbGVwYzogVW5pdmVyc2FsU2hhcGVyLCAvLyBMZXBjaGEKICBsaW1iOiBVbml2ZXJzYWxTaGFwZXIsIC8vIExpbWJ1CiAgbWFoajogVW5pdmVyc2FsU2hhcGVyLCAvLyBNYWhhamFuaQogIC8vIG1hbmQ6IFVuaXZlcnNhbFNoYXBlciwgLy8gTWFuZGFpYwogIC8vIG1hbmk6IFVuaXZlcnNhbFNoYXBlciwgLy8gTWFuaWNoYWVhbgogIG10ZWk6IFVuaXZlcnNhbFNoYXBlciwgLy8gTWVpdGVpIE1heWVrCiAgbW9kaTogVW5pdmVyc2FsU2hhcGVyLCAvLyBNb2RpCiAgLy8gbW9uZzogVW5pdmVyc2FsU2hhcGVyLCAvLyBNb25nb2xpYW4KICAvLyAnbmtvICc6IFVuaXZlcnNhbFNoYXBlciwgLy8gTuKAmUtvCiAgaG1uZzogVW5pdmVyc2FsU2hhcGVyLCAvLyBQYWhhd2ggSG1vbmcKICAvLyBwaGFnOiBVbml2ZXJzYWxTaGFwZXIsIC8vIFBoYWdzLXBhCiAgLy8gcGhscDogVW5pdmVyc2FsU2hhcGVyLCAvLyBQc2FsdGVyIFBhaGxhdmkKICByam5nOiBVbml2ZXJzYWxTaGFwZXIsIC8vIFJlamFuZwogIHNhdXI6IFVuaXZlcnNhbFNoYXBlciwgLy8gU2F1cmFzaHRyYQogIHNocmQ6IFVuaXZlcnNhbFNoYXBlciwgLy8gU2hhcmFkYQogIHNpZGQ6IFVuaXZlcnNhbFNoYXBlciwgLy8gU2lkZGhhbQogIHNpbmg6IFVuaXZlcnNhbFNoYXBlciwgLy8gU2luaGFsYQogIHN1bmQ6IFVuaXZlcnNhbFNoYXBlciwgLy8gU3VuZGFuZXNlCiAgc3lsbzogVW5pdmVyc2FsU2hhcGVyLCAvLyBTeWxvdGkgTmFncmkKICB0Z2xnOiBVbml2ZXJzYWxTaGFwZXIsIC8vIFRhZ2Fsb2cKICB0YWdiOiBVbml2ZXJzYWxTaGFwZXIsIC8vIFRhZ2JhbndhCiAgdGFsZTogVW5pdmVyc2FsU2hhcGVyLCAvLyBUYWkgTGUKICBsYW5hOiBVbml2ZXJzYWxTaGFwZXIsIC8vIFRhaSBUaGFtCiAgdGF2dDogVW5pdmVyc2FsU2hhcGVyLCAvLyBUYWkgVmlldAogIHRha3I6IFVuaXZlcnNhbFNoYXBlciwgLy8gVGFrcmkKICB0aWJ0OiBVbml2ZXJzYWxTaGFwZXIsIC8vIFRpYmV0YW4KICB0Zm5nOiBVbml2ZXJzYWxTaGFwZXIsIC8vIFRpZmluYWdoCiAgdGlyaDogVW5pdmVyc2FsU2hhcGVyLCAvLyBUaXJodXRhCgogIGxhdG46IERlZmF1bHRTaGFwZXIsIC8vIExhdGluCiAgREZMVDogRGVmYXVsdFNoYXBlciAvLyBEZWZhdWx0Cn07CgpmdW5jdGlvbiBjaG9vc2Uoc2NyaXB0KSB7CiAgaWYgKCFBcnJheS5pc0FycmF5KHNjcmlwdCkpIHsKICAgIHNjcmlwdCA9IFtzY3JpcHRdOwogIH0KCiAgZm9yICh2YXIgX2l0ZXJhdG9yID0gc2NyaXB0LCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgIHZhciBfcmVmOwoKICAgIGlmIChfaXNBcnJheSkgewogICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgIF9yZWYgPSBfaXRlcmF0b3JbX2krK107CiAgICB9IGVsc2UgewogICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgIGlmIChfaS5kb25lKSBicmVhazsKICAgICAgX3JlZiA9IF9pLnZhbHVlOwogICAgfQoKICAgIHZhciBzID0gX3JlZjsKCiAgICB2YXIgc2hhcGVyID0gU0hBUEVSU1tzXTsKICAgIGlmIChzaGFwZXIpIHsKICAgICAgcmV0dXJuIHNoYXBlcjsKICAgIH0KICB9CgogIHJldHVybiBEZWZhdWx0U2hhcGVyOwp9Cgp2YXIgR1NVQlByb2Nlc3NvciA9IGZ1bmN0aW9uIChfT1RQcm9jZXNzb3IpIHsKICBfaW5oZXJpdHMoR1NVQlByb2Nlc3NvciwgX09UUHJvY2Vzc29yKTsKCiAgZnVuY3Rpb24gR1NVQlByb2Nlc3NvcigpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBHU1VCUHJvY2Vzc29yKTsKCiAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX09UUHJvY2Vzc29yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpOwogIH0KCiAgR1NVQlByb2Nlc3Nvci5wcm90b3R5cGUuYXBwbHlMb29rdXAgPSBmdW5jdGlvbiBhcHBseUxvb2t1cChsb29rdXBUeXBlLCB0YWJsZSkgewogICAgdmFyIF90aGlzMiA9IHRoaXM7CgogICAgc3dpdGNoIChsb29rdXBUeXBlKSB7CiAgICAgIGNhc2UgMToKICAgICAgICB7CiAgICAgICAgICAvLyBTaW5nbGUgU3Vic3RpdHV0aW9uCiAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmNvdmVyYWdlSW5kZXgodGFibGUuY292ZXJhZ2UpOwogICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIGdseXBoID0gdGhpcy5nbHlwaEl0ZXJhdG9yLmN1cjsKICAgICAgICAgIHN3aXRjaCAodGFibGUudmVyc2lvbikgewogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgZ2x5cGguaWQgPSBnbHlwaC5pZCArIHRhYmxlLmRlbHRhR2x5cGhJRCAmIDB4ZmZmZjsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBnbHlwaC5pZCA9IHRhYmxlLnN1YnN0aXR1dGUuZ2V0KGluZGV4KTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICBjYXNlIDI6CiAgICAgICAgewogICAgICAgICAgLy8gTXVsdGlwbGUgU3Vic3RpdHV0aW9uCiAgICAgICAgICB2YXIgX2luZGV4ID0gdGhpcy5jb3ZlcmFnZUluZGV4KHRhYmxlLmNvdmVyYWdlKTsKICAgICAgICAgIGlmIChfaW5kZXggIT09IC0xKSB7CiAgICAgICAgICAgIHZhciBfZ2x5cGhzOwoKICAgICAgICAgICAgdmFyIHNlcXVlbmNlID0gdGFibGUuc2VxdWVuY2VzLmdldChfaW5kZXgpOwogICAgICAgICAgICB0aGlzLmdseXBoSXRlcmF0b3IuY3VyLmlkID0gc2VxdWVuY2VbMF07CiAgICAgICAgICAgIHRoaXMuZ2x5cGhJdGVyYXRvci5jdXIubGlnYXR1cmVDb21wb25lbnQgPSAwOwoKICAgICAgICAgICAgdmFyIGZlYXR1cmVzID0gdGhpcy5nbHlwaEl0ZXJhdG9yLmN1ci5mZWF0dXJlczsKICAgICAgICAgICAgdmFyIGN1ckdseXBoID0gdGhpcy5nbHlwaEl0ZXJhdG9yLmN1cjsKICAgICAgICAgICAgdmFyIHJlcGxhY2VtZW50ID0gc2VxdWVuY2Uuc2xpY2UoMSkubWFwKGZ1bmN0aW9uIChnaWQsIGkpIHsKICAgICAgICAgICAgICB2YXIgZ2x5cGggPSBuZXcgR2x5cGhJbmZvKF90aGlzMi5mb250LCBnaWQsIHVuZGVmaW5lZCwgZmVhdHVyZXMpOwogICAgICAgICAgICAgIGdseXBoLnNoYXBlckluZm8gPSBjdXJHbHlwaC5zaGFwZXJJbmZvOwogICAgICAgICAgICAgIGdseXBoLmlzTGlnYXRlZCA9IGN1ckdseXBoLmlzTGlnYXRlZDsKICAgICAgICAgICAgICBnbHlwaC5saWdhdHVyZUNvbXBvbmVudCA9IGkgKyAxOwogICAgICAgICAgICAgIGdseXBoLnN1YnN0aXR1dGVkID0gdHJ1ZTsKICAgICAgICAgICAgICBnbHlwaC5pc011bHRpcGxpZWQgPSB0cnVlOwogICAgICAgICAgICAgIHJldHVybiBnbHlwaDsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAoX2dseXBocyA9IHRoaXMuZ2x5cGhzKS5zcGxpY2UuYXBwbHkoX2dseXBocywgW3RoaXMuZ2x5cGhJdGVyYXRvci5pbmRleCArIDEsIDBdLmNvbmNhdChyZXBsYWNlbWVudCkpOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgY2FzZSAzOgogICAgICAgIHsKICAgICAgICAgIC8vIEFsdGVybmF0ZSBTdWJzdGl0dXRpb24KICAgICAgICAgIHZhciBfaW5kZXgyID0gdGhpcy5jb3ZlcmFnZUluZGV4KHRhYmxlLmNvdmVyYWdlKTsKICAgICAgICAgIGlmIChfaW5kZXgyICE9PSAtMSkgewogICAgICAgICAgICB2YXIgVVNFUl9JTkRFWCA9IDA7IC8vIFRPRE8KICAgICAgICAgICAgdGhpcy5nbHlwaEl0ZXJhdG9yLmN1ci5pZCA9IHRhYmxlLmFsdGVybmF0ZVNldC5nZXQoX2luZGV4MilbVVNFUl9JTkRFWF07CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICBjYXNlIDQ6CiAgICAgICAgewogICAgICAgICAgLy8gTGlnYXR1cmUgU3Vic3RpdHV0aW9uCiAgICAgICAgICB2YXIgX2luZGV4MyA9IHRoaXMuY292ZXJhZ2VJbmRleCh0YWJsZS5jb3ZlcmFnZSk7CiAgICAgICAgICBpZiAoX2luZGV4MyA9PT0gLTEpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQoKICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvciA9IHRhYmxlLmxpZ2F0dXJlU2V0cy5nZXQoX2luZGV4MyksIF9pc0FycmF5ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IpLCBfaSA9IDAsIF9pdGVyYXRvciA9IF9pc0FycmF5ID8gX2l0ZXJhdG9yIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcik7OykgewogICAgICAgICAgICB2YXIgX3JlZjsKCiAgICAgICAgICAgIGlmIChfaXNBcnJheSkgewogICAgICAgICAgICAgIGlmIChfaSA+PSBfaXRlcmF0b3IubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIF9pID0gX2l0ZXJhdG9yLm5leHQoKTsKICAgICAgICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgICAgICAgX3JlZiA9IF9pLnZhbHVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgbGlnYXR1cmUgPSBfcmVmOwoKICAgICAgICAgICAgdmFyIG1hdGNoZWQgPSB0aGlzLnNlcXVlbmNlTWF0Y2hJbmRpY2VzKDEsIGxpZ2F0dXJlLmNvbXBvbmVudHMpOwogICAgICAgICAgICBpZiAoIW1hdGNoZWQpIHsKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIF9jdXJHbHlwaCA9IHRoaXMuZ2x5cGhJdGVyYXRvci5jdXI7CgogICAgICAgICAgICAvLyBDb25jYXRlbmF0ZSBhbGwgb2YgdGhlIGNoYXJhY3RlcnMgdGhlIG5ldyBsaWdhdHVyZSB3aWxsIHJlcHJlc2VudAogICAgICAgICAgICB2YXIgY2hhcmFjdGVycyA9IF9jdXJHbHlwaC5jb2RlUG9pbnRzLnNsaWNlKCk7CiAgICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSBtYXRjaGVkLCBfaXNBcnJheTIgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjIpLCBfaTIgPSAwLCBfaXRlcmF0b3IyID0gX2lzQXJyYXkyID8gX2l0ZXJhdG9yMiA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IyKTs7KSB7CiAgICAgICAgICAgICAgdmFyIF9yZWYyOwoKICAgICAgICAgICAgICBpZiAoX2lzQXJyYXkyKSB7CiAgICAgICAgICAgICAgICBpZiAoX2kyID49IF9pdGVyYXRvcjIubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgICAgIF9yZWYyID0gX2l0ZXJhdG9yMltfaTIrK107CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF9pMiA9IF9pdGVyYXRvcjIubmV4dCgpOwogICAgICAgICAgICAgICAgaWYgKF9pMi5kb25lKSBicmVhazsKICAgICAgICAgICAgICAgIF9yZWYyID0gX2kyLnZhbHVlOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgdmFyIF9pbmRleDQgPSBfcmVmMjsKCiAgICAgICAgICAgICAgY2hhcmFjdGVycy5wdXNoLmFwcGx5KGNoYXJhY3RlcnMsIHRoaXMuZ2x5cGhzW19pbmRleDRdLmNvZGVQb2ludHMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBDcmVhdGUgdGhlIHJlcGxhY2VtZW50IGxpZ2F0dXJlIGdseXBoCiAgICAgICAgICAgIHZhciBsaWdhdHVyZUdseXBoID0gbmV3IEdseXBoSW5mbyh0aGlzLmZvbnQsIGxpZ2F0dXJlLmdseXBoLCBjaGFyYWN0ZXJzLCBfY3VyR2x5cGguZmVhdHVyZXMpOwogICAgICAgICAgICBsaWdhdHVyZUdseXBoLnNoYXBlckluZm8gPSBfY3VyR2x5cGguc2hhcGVySW5mbzsKICAgICAgICAgICAgbGlnYXR1cmVHbHlwaC5pc0xpZ2F0ZWQgPSB0cnVlOwogICAgICAgICAgICBsaWdhdHVyZUdseXBoLnN1YnN0aXR1dGVkID0gdHJ1ZTsKCiAgICAgICAgICAgIC8vIEZyb20gSGFyZmJ1eno6CiAgICAgICAgICAgIC8vIC0gSWYgaXQgKmlzKiBhIG1hcmsgbGlnYXR1cmUsIHdlIGRvbid0IGFsbG9jYXRlIGEgbmV3IGxpZ2F0dXJlIGlkLCBhbmQgbGVhdmUKICAgICAgICAgICAgLy8gICB0aGUgbGlnYXR1cmUgdG8ga2VlcCBpdHMgb2xkIGxpZ2F0dXJlIGlkLiAgVGhpcyB3aWxsIGFsbG93IGl0IHRvIGF0dGFjaCB0bwogICAgICAgICAgICAvLyAgIGEgYmFzZSBsaWdhdHVyZSBpbiBHUE9TLiAgRWcuIGlmIHRoZSBzZXF1ZW5jZSBpczogTEFNLExBTSxTSEFEREEsRkFUSEEsSEVILAogICAgICAgICAgICAvLyAgIGFuZCBMQU0sTEFNLEhFSCBmb3IgYSBsaWdhdHVyZSwgdGhleSB3aWxsIGxlYXZlIFNIQUREQSBhbmQgRkFUSEEgd2l0aCBhCiAgICAgICAgICAgIC8vICAgbGlnYXR1cmUgaWQgYW5kIGNvbXBvbmVudCB2YWx1ZSBvZiAyLiAgVGhlbiBpZiBTSEFEREEsRkFUSEEgZm9ybSBhIGxpZ2F0dXJlCiAgICAgICAgICAgIC8vICAgbGF0ZXIsIHdlIGRvbid0IHdhbnQgdGhlbSB0byBsb3NlIHRoZWlyIGxpZ2F0dXJlIGlkL2NvbXBvbmVudCwgb3RoZXJ3aXNlCiAgICAgICAgICAgIC8vICAgR1BPUyB3aWxsIGZhaWwgdG8gY29ycmVjdGx5IHBvc2l0aW9uIHRoZSBtYXJrIGxpZ2F0dXJlIG9uIHRvcCBvZiB0aGUKICAgICAgICAgICAgLy8gICBMQU0sTEFNLEhFSCBsaWdhdHVyZS4gU2VlIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02NzYzNDMKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gLSBJZiBhIGxpZ2F0dXJlIGlzIGZvcm1lZCBvZiBjb21wb25lbnRzIHRoYXQgc29tZSBvZiB3aGljaCBhcmUgYWxzbyBsaWdhdHVyZXMKICAgICAgICAgICAgLy8gICB0aGVtc2VsdmVzLCBhbmQgdGhvc2UgbGlnYXR1cmUgY29tcG9uZW50cyBoYWQgbWFya3MgYXR0YWNoZWQgdG8gKnRoZWlyKgogICAgICAgICAgICAvLyAgIGNvbXBvbmVudHMsIHdlIGhhdmUgdG8gYXR0YWNoIHRoZSBtYXJrcyB0byB0aGUgbmV3IGxpZ2F0dXJlIGNvbXBvbmVudAogICAgICAgICAgICAvLyAgIHBvc2l0aW9ucyEgIE5vdyAqdGhhdConcyB0cmlja3khICBBbmQgdGhlc2UgbWFya3MgbWF5IGJlIGZvbGxvd2luZyB0aGUKICAgICAgICAgICAgLy8gICBsYXN0IGNvbXBvbmVudCBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIHNvIHdlIHNob3VsZCBsb29wIGZvcndhcmQgbG9va2luZwogICAgICAgICAgICAvLyAgIGZvciB0aGVtIGFuZCB1cGRhdGUgdGhlbS4KICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gICBFZy4gdGhlIHNlcXVlbmNlIGlzIExBTSxMQU0sU0hBRERBLEZBVEhBLEhFSCwgYW5kIHRoZSBmb250IGZpcnN0IGZvcm1zIGEKICAgICAgICAgICAgLy8gICAnY2FsdCcgbGlnYXR1cmUgb2YgTEFNLEhFSCwgbGVhdmluZyB0aGUgU0hBRERBIGFuZCBGQVRIQSB3aXRoIGEgbGlnYXR1cmUKICAgICAgICAgICAgLy8gICBpZCBhbmQgY29tcG9uZW50ID09IDEuICBOb3csIGR1cmluZyAnbGlnYScsIHRoZSBMQU0gYW5kIHRoZSBMQU0tSEVIIGxpZ2F0dXJlCiAgICAgICAgICAgIC8vICAgZm9ybSBhIExBTS1MQU0tSEVIIGxpZ2F0dXJlLiAgV2UgbmVlZCB0byByZWFzc2lnbiB0aGUgU0hBRERBIGFuZCBGQVRIQSB0bwogICAgICAgICAgICAvLyAgIHRoZSBuZXcgbGlnYXR1cmUgd2l0aCBhIGNvbXBvbmVudCB2YWx1ZSBvZiAyLgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyAgIFRoaXMgaW4gZmFjdCBoYXBwZW5lZCB0byBhIGZvbnQuLi4gIFNlZSBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NjMzCiAgICAgICAgICAgIHZhciBpc01hcmtMaWdhdHVyZSA9IF9jdXJHbHlwaC5pc01hcms7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF0Y2hlZC5sZW5ndGggJiYgaXNNYXJrTGlnYXR1cmU7IGkrKykgewogICAgICAgICAgICAgIGlzTWFya0xpZ2F0dXJlID0gdGhpcy5nbHlwaHNbbWF0Y2hlZFtpXV0uaXNNYXJrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsaWdhdHVyZUdseXBoLmxpZ2F0dXJlSUQgPSBpc01hcmtMaWdhdHVyZSA/IG51bGwgOiB0aGlzLmxpZ2F0dXJlSUQrKzsKCiAgICAgICAgICAgIHZhciBsYXN0TGlnSUQgPSBfY3VyR2x5cGgubGlnYXR1cmVJRDsKICAgICAgICAgICAgdmFyIGxhc3ROdW1Db21wcyA9IF9jdXJHbHlwaC5jb2RlUG9pbnRzLmxlbmd0aDsKICAgICAgICAgICAgdmFyIGN1ckNvbXBzID0gbGFzdE51bUNvbXBzOwogICAgICAgICAgICB2YXIgaWR4ID0gdGhpcy5nbHlwaEl0ZXJhdG9yLmluZGV4ICsgMTsKCiAgICAgICAgICAgIC8vIFNldCBsaWdhdHVyZUlEIGFuZCBsaWdhdHVyZUNvbXBvbmVudCBvbiBnbHlwaHMgdGhhdCB3ZXJlIHNraXBwZWQgaW4gdGhlIG1hdGNoZWQgc2VxdWVuY2UuCiAgICAgICAgICAgIC8vIFRoaXMgYWxsb3dzIEdQT1MgdG8gYXR0YWNoIG1hcmtzIHRvIHRoZSBjb3JyZWN0IGxpZ2F0dXJlIGNvbXBvbmVudHMuCiAgICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSBtYXRjaGVkLCBfaXNBcnJheTMgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjMpLCBfaTMgPSAwLCBfaXRlcmF0b3IzID0gX2lzQXJyYXkzID8gX2l0ZXJhdG9yMyA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IzKTs7KSB7CiAgICAgICAgICAgICAgdmFyIF9yZWYzOwoKICAgICAgICAgICAgICBpZiAoX2lzQXJyYXkzKSB7CiAgICAgICAgICAgICAgICBpZiAoX2kzID49IF9pdGVyYXRvcjMubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgICAgIF9yZWYzID0gX2l0ZXJhdG9yM1tfaTMrK107CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF9pMyA9IF9pdGVyYXRvcjMubmV4dCgpOwogICAgICAgICAgICAgICAgaWYgKF9pMy5kb25lKSBicmVhazsKICAgICAgICAgICAgICAgIF9yZWYzID0gX2kzLnZhbHVlOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgdmFyIG1hdGNoSW5kZXggPSBfcmVmMzsKCiAgICAgICAgICAgICAgLy8gRG9uJ3QgYXNzaWduIG5ldyBsaWdhdHVyZSBjb21wb25lbnRzIGZvciBtYXJrIGxpZ2F0dXJlcyAoc2VlIGFib3ZlKQogICAgICAgICAgICAgIGlmIChpc01hcmtMaWdhdHVyZSkgewogICAgICAgICAgICAgICAgaWR4ID0gbWF0Y2hJbmRleDsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgd2hpbGUgKGlkeCA8IG1hdGNoSW5kZXgpIHsKICAgICAgICAgICAgICAgICAgdmFyIGxpZ2F0dXJlQ29tcG9uZW50ID0gY3VyQ29tcHMgLSBsYXN0TnVtQ29tcHMgKyBNYXRoLm1pbih0aGlzLmdseXBoc1tpZHhdLmxpZ2F0dXJlQ29tcG9uZW50IHx8IDEsIGxhc3ROdW1Db21wcyk7CiAgICAgICAgICAgICAgICAgIHRoaXMuZ2x5cGhzW2lkeF0ubGlnYXR1cmVJRCA9IGxpZ2F0dXJlR2x5cGgubGlnYXR1cmVJRDsKICAgICAgICAgICAgICAgICAgdGhpcy5nbHlwaHNbaWR4XS5saWdhdHVyZUNvbXBvbmVudCA9IGxpZ2F0dXJlQ29tcG9uZW50OwogICAgICAgICAgICAgICAgICBpZHgrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIGxhc3RMaWdJRCA9IHRoaXMuZ2x5cGhzW2lkeF0ubGlnYXR1cmVJRDsKICAgICAgICAgICAgICBsYXN0TnVtQ29tcHMgPSB0aGlzLmdseXBoc1tpZHhdLmNvZGVQb2ludHMubGVuZ3RoOwogICAgICAgICAgICAgIGN1ckNvbXBzICs9IGxhc3ROdW1Db21wczsKICAgICAgICAgICAgICBpZHgrKzsgLy8gc2tpcCBiYXNlIGdseXBoCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIEFkanVzdCBsaWdhdHVyZSBjb21wb25lbnRzIGZvciBhbnkgbWFya3MgZm9sbG93aW5nCiAgICAgICAgICAgIGlmIChsYXN0TGlnSUQgJiYgIWlzTWFya0xpZ2F0dXJlKSB7CiAgICAgICAgICAgICAgZm9yICh2YXIgX2k0ID0gaWR4OyBfaTQgPCB0aGlzLmdseXBocy5sZW5ndGg7IF9pNCsrKSB7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5nbHlwaHNbX2k0XS5saWdhdHVyZUlEID09PSBsYXN0TGlnSUQpIHsKICAgICAgICAgICAgICAgICAgdmFyIGxpZ2F0dXJlQ29tcG9uZW50ID0gY3VyQ29tcHMgLSBsYXN0TnVtQ29tcHMgKyBNYXRoLm1pbih0aGlzLmdseXBoc1tfaTRdLmxpZ2F0dXJlQ29tcG9uZW50IHx8IDEsIGxhc3ROdW1Db21wcyk7CiAgICAgICAgICAgICAgICAgIHRoaXMuZ2x5cGhzW19pNF0ubGlnYXR1cmVDb21wb25lbnQgPSBsaWdhdHVyZUNvbXBvbmVudDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSBtYXRjaGVkIGdseXBocywgYW5kIHJlcGxhY2UgdGhlIGN1cnJlbnQgZ2x5cGggd2l0aCB0aGUgbGlnYXR1cmUgZ2x5cGgKICAgICAgICAgICAgZm9yICh2YXIgX2k1ID0gbWF0Y2hlZC5sZW5ndGggLSAxOyBfaTUgPj0gMDsgX2k1LS0pIHsKICAgICAgICAgICAgICB0aGlzLmdseXBocy5zcGxpY2UobWF0Y2hlZFtfaTVdLCAxKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhpcy5nbHlwaHNbdGhpcy5nbHlwaEl0ZXJhdG9yLmluZGV4XSA9IGxpZ2F0dXJlR2x5cGg7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICBjYXNlIDU6CiAgICAgICAgLy8gQ29udGV4dHVhbCBTdWJzdGl0dXRpb24KICAgICAgICByZXR1cm4gdGhpcy5hcHBseUNvbnRleHQodGFibGUpOwoKICAgICAgY2FzZSA2OgogICAgICAgIC8vIENoYWluaW5nIENvbnRleHR1YWwgU3Vic3RpdHV0aW9uCiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlDaGFpbmluZ0NvbnRleHQodGFibGUpOwoKICAgICAgY2FzZSA3OgogICAgICAgIC8vIEV4dGVuc2lvbiBTdWJzdGl0dXRpb24KICAgICAgICByZXR1cm4gdGhpcy5hcHBseUxvb2t1cCh0YWJsZS5sb29rdXBUeXBlLCB0YWJsZS5leHRlbnNpb24pOwoKICAgICAgZGVmYXVsdDoKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dTVUIgbG9va3VwVHlwZSAnICsgbG9va3VwVHlwZSArICcgaXMgbm90IHN1cHBvcnRlZCcpOwogICAgfQogIH07CgogIHJldHVybiBHU1VCUHJvY2Vzc29yOwp9KE9UUHJvY2Vzc29yKTsKCnZhciBHUE9TUHJvY2Vzc29yID0gZnVuY3Rpb24gKF9PVFByb2Nlc3NvcikgewogIF9pbmhlcml0cyhHUE9TUHJvY2Vzc29yLCBfT1RQcm9jZXNzb3IpOwoKICBmdW5jdGlvbiBHUE9TUHJvY2Vzc29yKCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEdQT1NQcm9jZXNzb3IpOwoKICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfT1RQcm9jZXNzb3IuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7CiAgfQoKICBHUE9TUHJvY2Vzc29yLnByb3RvdHlwZS5hcHBseVBvc2l0aW9uVmFsdWUgPSBmdW5jdGlvbiBhcHBseVBvc2l0aW9uVmFsdWUoc2VxdWVuY2VJbmRleCwgdmFsdWUpIHsKICAgIHZhciBwb3NpdGlvbiA9IHRoaXMucG9zaXRpb25zW3RoaXMuZ2x5cGhJdGVyYXRvci5wZWVrSW5kZXgoc2VxdWVuY2VJbmRleCldOwogICAgaWYgKHZhbHVlLnhBZHZhbmNlICE9IG51bGwpIHsKICAgICAgcG9zaXRpb24ueEFkdmFuY2UgKz0gdmFsdWUueEFkdmFuY2U7CiAgICB9CgogICAgaWYgKHZhbHVlLnlBZHZhbmNlICE9IG51bGwpIHsKICAgICAgcG9zaXRpb24ueUFkdmFuY2UgKz0gdmFsdWUueUFkdmFuY2U7CiAgICB9CgogICAgaWYgKHZhbHVlLnhQbGFjZW1lbnQgIT0gbnVsbCkgewogICAgICBwb3NpdGlvbi54T2Zmc2V0ICs9IHZhbHVlLnhQbGFjZW1lbnQ7CiAgICB9CgogICAgaWYgKHZhbHVlLnlQbGFjZW1lbnQgIT0gbnVsbCkgewogICAgICBwb3NpdGlvbi55T2Zmc2V0ICs9IHZhbHVlLnlQbGFjZW1lbnQ7CiAgICB9CgogICAgLy8gQWRqdXN0bWVudHMgZm9yIGZvbnQgdmFyaWF0aW9ucwogICAgdmFyIHZhcmlhdGlvblByb2Nlc3NvciA9IHRoaXMuZm9udC5fdmFyaWF0aW9uUHJvY2Vzc29yOwogICAgdmFyIHZhcmlhdGlvblN0b3JlID0gdGhpcy5mb250LkdERUYgJiYgdGhpcy5mb250LkdERUYuaXRlbVZhcmlhdGlvblN0b3JlOwogICAgaWYgKHZhcmlhdGlvblByb2Nlc3NvciAmJiB2YXJpYXRpb25TdG9yZSkgewogICAgICBpZiAodmFsdWUueFBsYURldmljZSkgewogICAgICAgIHBvc2l0aW9uLnhPZmZzZXQgKz0gdmFyaWF0aW9uUHJvY2Vzc29yLmdldERlbHRhKHZhcmlhdGlvblN0b3JlLCB2YWx1ZS54UGxhRGV2aWNlLmEsIHZhbHVlLnhQbGFEZXZpY2UuYik7CiAgICAgIH0KCiAgICAgIGlmICh2YWx1ZS55UGxhRGV2aWNlKSB7CiAgICAgICAgcG9zaXRpb24ueU9mZnNldCArPSB2YXJpYXRpb25Qcm9jZXNzb3IuZ2V0RGVsdGEodmFyaWF0aW9uU3RvcmUsIHZhbHVlLnlQbGFEZXZpY2UuYSwgdmFsdWUueVBsYURldmljZS5iKTsKICAgICAgfQoKICAgICAgaWYgKHZhbHVlLnhBZHZEZXZpY2UpIHsKICAgICAgICBwb3NpdGlvbi54QWR2YW5jZSArPSB2YXJpYXRpb25Qcm9jZXNzb3IuZ2V0RGVsdGEodmFyaWF0aW9uU3RvcmUsIHZhbHVlLnhBZHZEZXZpY2UuYSwgdmFsdWUueEFkdkRldmljZS5iKTsKICAgICAgfQoKICAgICAgaWYgKHZhbHVlLnlBZHZEZXZpY2UpIHsKICAgICAgICBwb3NpdGlvbi55QWR2YW5jZSArPSB2YXJpYXRpb25Qcm9jZXNzb3IuZ2V0RGVsdGEodmFyaWF0aW9uU3RvcmUsIHZhbHVlLnlBZHZEZXZpY2UuYSwgdmFsdWUueUFkdkRldmljZS5iKTsKICAgICAgfQogICAgfQoKICAgIC8vIFRPRE86IGRldmljZSB0YWJsZXMKICB9OwoKICBHUE9TUHJvY2Vzc29yLnByb3RvdHlwZS5hcHBseUxvb2t1cCA9IGZ1bmN0aW9uIGFwcGx5TG9va3VwKGxvb2t1cFR5cGUsIHRhYmxlKSB7CiAgICBzd2l0Y2ggKGxvb2t1cFR5cGUpIHsKICAgICAgY2FzZSAxOgogICAgICAgIHsKICAgICAgICAgIC8vIFNpbmdsZSBwb3NpdGlvbmluZyB2YWx1ZQogICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5jb3ZlcmFnZUluZGV4KHRhYmxlLmNvdmVyYWdlKTsKICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQoKICAgICAgICAgIHN3aXRjaCAodGFibGUudmVyc2lvbikgewogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgdGhpcy5hcHBseVBvc2l0aW9uVmFsdWUoMCwgdGFibGUudmFsdWUpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIHRoaXMuYXBwbHlQb3NpdGlvblZhbHVlKDAsIHRhYmxlLnZhbHVlcy5nZXQoaW5kZXgpKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICBjYXNlIDI6CiAgICAgICAgewogICAgICAgICAgLy8gUGFpciBBZGp1c3RtZW50IFBvc2l0aW9uaW5nCiAgICAgICAgICB2YXIgbmV4dEdseXBoID0gdGhpcy5nbHlwaEl0ZXJhdG9yLnBlZWsoKTsKICAgICAgICAgIGlmICghbmV4dEdseXBoKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgX2luZGV4ID0gdGhpcy5jb3ZlcmFnZUluZGV4KHRhYmxlLmNvdmVyYWdlKTsKICAgICAgICAgIGlmIChfaW5kZXggPT09IC0xKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIH0KCiAgICAgICAgICBzd2l0Y2ggKHRhYmxlLnZlcnNpb24pIHsKICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgIC8vIEFkanVzdG1lbnRzIGZvciBnbHlwaCBwYWlycwogICAgICAgICAgICAgIHZhciBzZXQgPSB0YWJsZS5wYWlyU2V0cy5nZXQoX2luZGV4KTsKCiAgICAgICAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gc2V0LCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgICAgICAgICAgIHZhciBfcmVmOwoKICAgICAgICAgICAgICAgIGlmIChfaXNBcnJheSkgewogICAgICAgICAgICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICAgICAgICAgIF9yZWYgPSBfaXRlcmF0b3JbX2krK107CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgIGlmIChfaS5kb25lKSBicmVhazsKICAgICAgICAgICAgICAgICAgX3JlZiA9IF9pLnZhbHVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBfcGFpciA9IF9yZWY7CgogICAgICAgICAgICAgICAgaWYgKF9wYWlyLnNlY29uZEdseXBoID09PSBuZXh0R2x5cGguaWQpIHsKICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseVBvc2l0aW9uVmFsdWUoMCwgX3BhaXIudmFsdWUxKTsKICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseVBvc2l0aW9uVmFsdWUoMSwgX3BhaXIudmFsdWUyKTsKICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgLy8gQ2xhc3MgcGFpciBhZGp1c3RtZW50CiAgICAgICAgICAgICAgdmFyIGNsYXNzMSA9IHRoaXMuZ2V0Q2xhc3NJRCh0aGlzLmdseXBoSXRlcmF0b3IuY3VyLmlkLCB0YWJsZS5jbGFzc0RlZjEpOwogICAgICAgICAgICAgIHZhciBjbGFzczIgPSB0aGlzLmdldENsYXNzSUQobmV4dEdseXBoLmlkLCB0YWJsZS5jbGFzc0RlZjIpOwogICAgICAgICAgICAgIGlmIChjbGFzczEgPT09IC0xIHx8IGNsYXNzMiA9PT0gLTEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIHZhciBwYWlyID0gdGFibGUuY2xhc3NSZWNvcmRzLmdldChjbGFzczEpLmdldChjbGFzczIpOwogICAgICAgICAgICAgIHRoaXMuYXBwbHlQb3NpdGlvblZhbHVlKDAsIHBhaXIudmFsdWUxKTsKICAgICAgICAgICAgICB0aGlzLmFwcGx5UG9zaXRpb25WYWx1ZSgxLCBwYWlyLnZhbHVlMik7CiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgY2FzZSAzOgogICAgICAgIHsKICAgICAgICAgIC8vIEN1cnNpdmUgQXR0YWNobWVudCBQb3NpdGlvbmluZwogICAgICAgICAgdmFyIG5leHRJbmRleCA9IHRoaXMuZ2x5cGhJdGVyYXRvci5wZWVrSW5kZXgoKTsKICAgICAgICAgIHZhciBfbmV4dEdseXBoID0gdGhpcy5nbHlwaHNbbmV4dEluZGV4XTsKICAgICAgICAgIGlmICghX25leHRHbHlwaCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIGN1clJlY29yZCA9IHRhYmxlLmVudHJ5RXhpdFJlY29yZHNbdGhpcy5jb3ZlcmFnZUluZGV4KHRhYmxlLmNvdmVyYWdlKV07CiAgICAgICAgICBpZiAoIWN1clJlY29yZCB8fCAhY3VyUmVjb3JkLmV4aXRBbmNob3IpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBuZXh0UmVjb3JkID0gdGFibGUuZW50cnlFeGl0UmVjb3Jkc1t0aGlzLmNvdmVyYWdlSW5kZXgodGFibGUuY292ZXJhZ2UsIF9uZXh0R2x5cGguaWQpXTsKICAgICAgICAgIGlmICghbmV4dFJlY29yZCB8fCAhbmV4dFJlY29yZC5lbnRyeUFuY2hvcikgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5nZXRBbmNob3IobmV4dFJlY29yZC5lbnRyeUFuY2hvcik7CiAgICAgICAgICB2YXIgZXhpdCA9IHRoaXMuZ2V0QW5jaG9yKGN1clJlY29yZC5leGl0QW5jaG9yKTsKCiAgICAgICAgICB2YXIgY3VyID0gdGhpcy5wb3NpdGlvbnNbdGhpcy5nbHlwaEl0ZXJhdG9yLmluZGV4XTsKICAgICAgICAgIHZhciBuZXh0ID0gdGhpcy5wb3NpdGlvbnNbbmV4dEluZGV4XTsKCiAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGlyZWN0aW9uKSB7CiAgICAgICAgICAgIGNhc2UgJ2x0cic6CiAgICAgICAgICAgICAgY3VyLnhBZHZhbmNlID0gZXhpdC54ICsgY3VyLnhPZmZzZXQ7CgogICAgICAgICAgICAgIHZhciBkID0gZW50cnkueCArIG5leHQueE9mZnNldDsKICAgICAgICAgICAgICBuZXh0LnhBZHZhbmNlIC09IGQ7CiAgICAgICAgICAgICAgbmV4dC54T2Zmc2V0IC09IGQ7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdydGwnOgogICAgICAgICAgICAgIGQgPSBleGl0LnggKyBjdXIueE9mZnNldDsKICAgICAgICAgICAgICBjdXIueEFkdmFuY2UgLT0gZDsKICAgICAgICAgICAgICBjdXIueE9mZnNldCAtPSBkOwogICAgICAgICAgICAgIG5leHQueEFkdmFuY2UgPSBlbnRyeS54ICsgbmV4dC54T2Zmc2V0OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQoKICAgICAgICAgIGlmICh0aGlzLmdseXBoSXRlcmF0b3IuZmxhZ3MucmlnaHRUb0xlZnQpIHsKICAgICAgICAgICAgdGhpcy5nbHlwaEl0ZXJhdG9yLmN1ci5jdXJzaXZlQXR0YWNobWVudCA9IG5leHRJbmRleDsKICAgICAgICAgICAgY3VyLnlPZmZzZXQgPSBlbnRyeS55IC0gZXhpdC55OwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgX25leHRHbHlwaC5jdXJzaXZlQXR0YWNobWVudCA9IHRoaXMuZ2x5cGhJdGVyYXRvci5pbmRleDsKICAgICAgICAgICAgY3VyLnlPZmZzZXQgPSBleGl0LnkgLSBlbnRyeS55OwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgIGNhc2UgNDoKICAgICAgICB7CiAgICAgICAgICAvLyBNYXJrIHRvIGJhc2UgcG9zaXRpb25pbmcKICAgICAgICAgIHZhciBtYXJrSW5kZXggPSB0aGlzLmNvdmVyYWdlSW5kZXgodGFibGUubWFya0NvdmVyYWdlKTsKICAgICAgICAgIGlmIChtYXJrSW5kZXggPT09IC0xKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyBzZWFyY2ggYmFja3dhcmQgZm9yIGEgYmFzZSBnbHlwaAogICAgICAgICAgdmFyIGJhc2VHbHlwaEluZGV4ID0gdGhpcy5nbHlwaEl0ZXJhdG9yLmluZGV4OwogICAgICAgICAgd2hpbGUgKC0tYmFzZUdseXBoSW5kZXggPj0gMCAmJiAodGhpcy5nbHlwaHNbYmFzZUdseXBoSW5kZXhdLmlzTWFyayB8fCB0aGlzLmdseXBoc1tiYXNlR2x5cGhJbmRleF0ubGlnYXR1cmVDb21wb25lbnQgPiAwKSkge30KCiAgICAgICAgICBpZiAoYmFzZUdseXBoSW5kZXggPCAwKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgYmFzZUluZGV4ID0gdGhpcy5jb3ZlcmFnZUluZGV4KHRhYmxlLmJhc2VDb3ZlcmFnZSwgdGhpcy5nbHlwaHNbYmFzZUdseXBoSW5kZXhdLmlkKTsKICAgICAgICAgIGlmIChiYXNlSW5kZXggPT09IC0xKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgbWFya1JlY29yZCA9IHRhYmxlLm1hcmtBcnJheVttYXJrSW5kZXhdOwogICAgICAgICAgdmFyIGJhc2VBbmNob3IgPSB0YWJsZS5iYXNlQXJyYXlbYmFzZUluZGV4XVttYXJrUmVjb3JkLmNsYXNzXTsKICAgICAgICAgIHRoaXMuYXBwbHlBbmNob3IobWFya1JlY29yZCwgYmFzZUFuY2hvciwgYmFzZUdseXBoSW5kZXgpOwogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgY2FzZSA1OgogICAgICAgIHsKICAgICAgICAgIC8vIE1hcmsgdG8gbGlnYXR1cmUgcG9zaXRpb25pbmcKICAgICAgICAgIHZhciBfbWFya0luZGV4ID0gdGhpcy5jb3ZlcmFnZUluZGV4KHRhYmxlLm1hcmtDb3ZlcmFnZSk7CiAgICAgICAgICBpZiAoX21hcmtJbmRleCA9PT0gLTEpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIHNlYXJjaCBiYWNrd2FyZCBmb3IgYSBiYXNlIGdseXBoCiAgICAgICAgICB2YXIgX2Jhc2VHbHlwaEluZGV4ID0gdGhpcy5nbHlwaEl0ZXJhdG9yLmluZGV4OwogICAgICAgICAgd2hpbGUgKC0tX2Jhc2VHbHlwaEluZGV4ID49IDAgJiYgdGhpcy5nbHlwaHNbX2Jhc2VHbHlwaEluZGV4XS5pc01hcmspIHt9CgogICAgICAgICAgaWYgKF9iYXNlR2x5cGhJbmRleCA8IDApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBsaWdJbmRleCA9IHRoaXMuY292ZXJhZ2VJbmRleCh0YWJsZS5saWdhdHVyZUNvdmVyYWdlLCB0aGlzLmdseXBoc1tfYmFzZUdseXBoSW5kZXhdLmlkKTsKICAgICAgICAgIGlmIChsaWdJbmRleCA9PT0gLTEpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBsaWdBdHRhY2ggPSB0YWJsZS5saWdhdHVyZUFycmF5W2xpZ0luZGV4XTsKICAgICAgICAgIHZhciBtYXJrR2x5cGggPSB0aGlzLmdseXBoSXRlcmF0b3IuY3VyOwogICAgICAgICAgdmFyIGxpZ0dseXBoID0gdGhpcy5nbHlwaHNbX2Jhc2VHbHlwaEluZGV4XTsKICAgICAgICAgIHZhciBjb21wSW5kZXggPSBsaWdHbHlwaC5saWdhdHVyZUlEICYmIGxpZ0dseXBoLmxpZ2F0dXJlSUQgPT09IG1hcmtHbHlwaC5saWdhdHVyZUlEICYmIG1hcmtHbHlwaC5saWdhdHVyZUNvbXBvbmVudCA+IDAgPyBNYXRoLm1pbihtYXJrR2x5cGgubGlnYXR1cmVDb21wb25lbnQsIGxpZ0dseXBoLmNvZGVQb2ludHMubGVuZ3RoKSAtIDEgOiBsaWdHbHlwaC5jb2RlUG9pbnRzLmxlbmd0aCAtIDE7CgogICAgICAgICAgdmFyIF9tYXJrUmVjb3JkID0gdGFibGUubWFya0FycmF5W19tYXJrSW5kZXhdOwogICAgICAgICAgdmFyIF9iYXNlQW5jaG9yID0gbGlnQXR0YWNoW2NvbXBJbmRleF1bX21hcmtSZWNvcmQuY2xhc3NdOwogICAgICAgICAgdGhpcy5hcHBseUFuY2hvcihfbWFya1JlY29yZCwgX2Jhc2VBbmNob3IsIF9iYXNlR2x5cGhJbmRleCk7CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICBjYXNlIDY6CiAgICAgICAgewogICAgICAgICAgLy8gTWFyayB0byBtYXJrIHBvc2l0aW9uaW5nCiAgICAgICAgICB2YXIgbWFyazFJbmRleCA9IHRoaXMuY292ZXJhZ2VJbmRleCh0YWJsZS5tYXJrMUNvdmVyYWdlKTsKICAgICAgICAgIGlmIChtYXJrMUluZGV4ID09PSAtMSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gZ2V0IHRoZSBwcmV2aW91cyBtYXJrIHRvIGF0dGFjaCB0bwogICAgICAgICAgdmFyIHByZXZJbmRleCA9IHRoaXMuZ2x5cGhJdGVyYXRvci5wZWVrSW5kZXgoLTEpOwogICAgICAgICAgdmFyIHByZXYgPSB0aGlzLmdseXBoc1twcmV2SW5kZXhdOwogICAgICAgICAgaWYgKCFwcmV2IHx8ICFwcmV2LmlzTWFyaykgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIF9jdXIgPSB0aGlzLmdseXBoSXRlcmF0b3IuY3VyOwoKICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgbG9naWMgd2FzIGJvcnJvd2VkIGZyb20gSGFyZmJ1enoKICAgICAgICAgIHZhciBnb29kID0gZmFsc2U7CiAgICAgICAgICBpZiAoX2N1ci5saWdhdHVyZUlEID09PSBwcmV2LmxpZ2F0dXJlSUQpIHsKICAgICAgICAgICAgaWYgKCFfY3VyLmxpZ2F0dXJlSUQpIHsKICAgICAgICAgICAgICAvLyBNYXJrcyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgYmFzZQogICAgICAgICAgICAgIGdvb2QgPSB0cnVlOwogICAgICAgICAgICB9IGVsc2UgaWYgKF9jdXIubGlnYXR1cmVDb21wb25lbnQgPT09IHByZXYubGlnYXR1cmVDb21wb25lbnQpIHsKICAgICAgICAgICAgICAvLyBNYXJrcyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgbGlnYXR1cmUgY29tcG9uZW50CiAgICAgICAgICAgICAgZ29vZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIElmIGxpZ2F0dXJlIGlkcyBkb24ndCBtYXRjaCwgaXQgbWF5IGJlIHRoZSBjYXNlIHRoYXQgb25lIG9mIHRoZSBtYXJrcwogICAgICAgICAgICAvLyBpdHNlbGYgaXMgYSBsaWdhdHVyZSwgaW4gd2hpY2ggY2FzZSBtYXRjaC4KICAgICAgICAgICAgaWYgKF9jdXIubGlnYXR1cmVJRCAmJiAhX2N1ci5saWdhdHVyZUNvbXBvbmVudCB8fCBwcmV2LmxpZ2F0dXJlSUQgJiYgIXByZXYubGlnYXR1cmVDb21wb25lbnQpIHsKICAgICAgICAgICAgICBnb29kID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIGlmICghZ29vZCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIG1hcmsySW5kZXggPSB0aGlzLmNvdmVyYWdlSW5kZXgodGFibGUubWFyazJDb3ZlcmFnZSwgcHJldi5pZCk7CiAgICAgICAgICBpZiAobWFyazJJbmRleCA9PT0gLTEpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBfbWFya1JlY29yZDIgPSB0YWJsZS5tYXJrMUFycmF5W21hcmsxSW5kZXhdOwogICAgICAgICAgdmFyIF9iYXNlQW5jaG9yMiA9IHRhYmxlLm1hcmsyQXJyYXlbbWFyazJJbmRleF1bX21hcmtSZWNvcmQyLmNsYXNzXTsKICAgICAgICAgIHRoaXMuYXBwbHlBbmNob3IoX21hcmtSZWNvcmQyLCBfYmFzZUFuY2hvcjIsIHByZXZJbmRleCk7CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICBjYXNlIDc6CiAgICAgICAgLy8gQ29udGV4dHVhbCBwb3NpdGlvbmluZwogICAgICAgIHJldHVybiB0aGlzLmFwcGx5Q29udGV4dCh0YWJsZSk7CgogICAgICBjYXNlIDg6CiAgICAgICAgLy8gQ2hhaW5pbmcgY29udGV4dHVhbCBwb3NpdGlvbmluZwogICAgICAgIHJldHVybiB0aGlzLmFwcGx5Q2hhaW5pbmdDb250ZXh0KHRhYmxlKTsKCiAgICAgIGNhc2UgOToKICAgICAgICAvLyBFeHRlbnNpb24gcG9zaXRpb25pbmcKICAgICAgICByZXR1cm4gdGhpcy5hcHBseUxvb2t1cCh0YWJsZS5sb29rdXBUeXBlLCB0YWJsZS5leHRlbnNpb24pOwoKICAgICAgZGVmYXVsdDoKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIEdQT1MgdGFibGU6ICcgKyBsb29rdXBUeXBlKTsKICAgIH0KICB9OwoKICBHUE9TUHJvY2Vzc29yLnByb3RvdHlwZS5hcHBseUFuY2hvciA9IGZ1bmN0aW9uIGFwcGx5QW5jaG9yKG1hcmtSZWNvcmQsIGJhc2VBbmNob3IsIGJhc2VHbHlwaEluZGV4KSB7CiAgICB2YXIgYmFzZUNvb3JkcyA9IHRoaXMuZ2V0QW5jaG9yKGJhc2VBbmNob3IpOwogICAgdmFyIG1hcmtDb29yZHMgPSB0aGlzLmdldEFuY2hvcihtYXJrUmVjb3JkLm1hcmtBbmNob3IpOwoKICAgIHZhciBiYXNlUG9zID0gdGhpcy5wb3NpdGlvbnNbYmFzZUdseXBoSW5kZXhdOwogICAgdmFyIG1hcmtQb3MgPSB0aGlzLnBvc2l0aW9uc1t0aGlzLmdseXBoSXRlcmF0b3IuaW5kZXhdOwoKICAgIG1hcmtQb3MueE9mZnNldCA9IGJhc2VDb29yZHMueCAtIG1hcmtDb29yZHMueDsKICAgIG1hcmtQb3MueU9mZnNldCA9IGJhc2VDb29yZHMueSAtIG1hcmtDb29yZHMueTsKICAgIHRoaXMuZ2x5cGhJdGVyYXRvci5jdXIubWFya0F0dGFjaG1lbnQgPSBiYXNlR2x5cGhJbmRleDsKICB9OwoKICBHUE9TUHJvY2Vzc29yLnByb3RvdHlwZS5nZXRBbmNob3IgPSBmdW5jdGlvbiBnZXRBbmNob3IoYW5jaG9yKSB7CiAgICAvLyBUT0RPOiBjb250b3VyIHBvaW50LCBkZXZpY2UgdGFibGVzCiAgICB2YXIgeCA9IGFuY2hvci54Q29vcmRpbmF0ZTsKICAgIHZhciB5ID0gYW5jaG9yLnlDb29yZGluYXRlOwoKICAgIC8vIEFkanVzdG1lbnRzIGZvciBmb250IHZhcmlhdGlvbnMKICAgIHZhciB2YXJpYXRpb25Qcm9jZXNzb3IgPSB0aGlzLmZvbnQuX3ZhcmlhdGlvblByb2Nlc3NvcjsKICAgIHZhciB2YXJpYXRpb25TdG9yZSA9IHRoaXMuZm9udC5HREVGICYmIHRoaXMuZm9udC5HREVGLml0ZW1WYXJpYXRpb25TdG9yZTsKICAgIGlmICh2YXJpYXRpb25Qcm9jZXNzb3IgJiYgdmFyaWF0aW9uU3RvcmUpIHsKICAgICAgaWYgKGFuY2hvci54RGV2aWNlVGFibGUpIHsKICAgICAgICB4ICs9IHZhcmlhdGlvblByb2Nlc3Nvci5nZXREZWx0YSh2YXJpYXRpb25TdG9yZSwgYW5jaG9yLnhEZXZpY2VUYWJsZS5hLCBhbmNob3IueERldmljZVRhYmxlLmIpOwogICAgICB9CgogICAgICBpZiAoYW5jaG9yLnlEZXZpY2VUYWJsZSkgewogICAgICAgIHkgKz0gdmFyaWF0aW9uUHJvY2Vzc29yLmdldERlbHRhKHZhcmlhdGlvblN0b3JlLCBhbmNob3IueURldmljZVRhYmxlLmEsIGFuY2hvci55RGV2aWNlVGFibGUuYik7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4geyB4OiB4LCB5OiB5IH07CiAgfTsKCiAgR1BPU1Byb2Nlc3Nvci5wcm90b3R5cGUuYXBwbHlGZWF0dXJlcyA9IGZ1bmN0aW9uIGFwcGx5RmVhdHVyZXModXNlckZlYXR1cmVzLCBnbHlwaHMsIGFkdmFuY2VzKSB7CiAgICBfT1RQcm9jZXNzb3IucHJvdG90eXBlLmFwcGx5RmVhdHVyZXMuY2FsbCh0aGlzLCB1c2VyRmVhdHVyZXMsIGdseXBocywgYWR2YW5jZXMpOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5nbHlwaHMubGVuZ3RoOyBpKyspIHsKICAgICAgdGhpcy5maXhDdXJzaXZlQXR0YWNobWVudChpKTsKICAgIH0KCiAgICB0aGlzLmZpeE1hcmtBdHRhY2htZW50KCk7CiAgfTsKCiAgR1BPU1Byb2Nlc3Nvci5wcm90b3R5cGUuZml4Q3Vyc2l2ZUF0dGFjaG1lbnQgPSBmdW5jdGlvbiBmaXhDdXJzaXZlQXR0YWNobWVudChpKSB7CiAgICB2YXIgZ2x5cGggPSB0aGlzLmdseXBoc1tpXTsKICAgIGlmIChnbHlwaC5jdXJzaXZlQXR0YWNobWVudCAhPSBudWxsKSB7CiAgICAgIHZhciBqID0gZ2x5cGguY3Vyc2l2ZUF0dGFjaG1lbnQ7CgogICAgICBnbHlwaC5jdXJzaXZlQXR0YWNobWVudCA9IG51bGw7CiAgICAgIHRoaXMuZml4Q3Vyc2l2ZUF0dGFjaG1lbnQoaik7CgogICAgICB0aGlzLnBvc2l0aW9uc1tpXS55T2Zmc2V0ICs9IHRoaXMucG9zaXRpb25zW2pdLnlPZmZzZXQ7CiAgICB9CiAgfTsKCiAgR1BPU1Byb2Nlc3Nvci5wcm90b3R5cGUuZml4TWFya0F0dGFjaG1lbnQgPSBmdW5jdGlvbiBmaXhNYXJrQXR0YWNobWVudCgpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5nbHlwaHMubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGdseXBoID0gdGhpcy5nbHlwaHNbaV07CiAgICAgIGlmIChnbHlwaC5tYXJrQXR0YWNobWVudCAhPSBudWxsKSB7CiAgICAgICAgdmFyIGogPSBnbHlwaC5tYXJrQXR0YWNobWVudDsKCiAgICAgICAgdGhpcy5wb3NpdGlvbnNbaV0ueE9mZnNldCArPSB0aGlzLnBvc2l0aW9uc1tqXS54T2Zmc2V0OwogICAgICAgIHRoaXMucG9zaXRpb25zW2ldLnlPZmZzZXQgKz0gdGhpcy5wb3NpdGlvbnNbal0ueU9mZnNldDsKCiAgICAgICAgaWYgKHRoaXMuZGlyZWN0aW9uID09PSAnbHRyJykgewogICAgICAgICAgZm9yICh2YXIgayA9IGo7IGsgPCBpOyBrKyspIHsKICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnNbaV0ueE9mZnNldCAtPSB0aGlzLnBvc2l0aW9uc1trXS54QWR2YW5jZTsKICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnNbaV0ueU9mZnNldCAtPSB0aGlzLnBvc2l0aW9uc1trXS55QWR2YW5jZTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgZm9yICh2YXIgX2sgPSBqICsgMTsgX2sgPCBpICsgMTsgX2srKykgewogICAgICAgICAgICB0aGlzLnBvc2l0aW9uc1tpXS54T2Zmc2V0ICs9IHRoaXMucG9zaXRpb25zW19rXS54QWR2YW5jZTsKICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnNbaV0ueU9mZnNldCArPSB0aGlzLnBvc2l0aW9uc1tfa10ueUFkdmFuY2U7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfTsKCiAgcmV0dXJuIEdQT1NQcm9jZXNzb3I7Cn0oT1RQcm9jZXNzb3IpOwoKdmFyIE9UTGF5b3V0RW5naW5lID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIE9UTGF5b3V0RW5naW5lKGZvbnQpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBPVExheW91dEVuZ2luZSk7CgogICAgdGhpcy5mb250ID0gZm9udDsKICAgIHRoaXMuZ2x5cGhJbmZvcyA9IG51bGw7CiAgICB0aGlzLnBsYW4gPSBudWxsOwogICAgdGhpcy5HU1VCUHJvY2Vzc29yID0gbnVsbDsKICAgIHRoaXMuR1BPU1Byb2Nlc3NvciA9IG51bGw7CiAgICB0aGlzLmZhbGxiYWNrUG9zaXRpb24gPSB0cnVlOwoKICAgIGlmIChmb250LkdTVUIpIHsKICAgICAgdGhpcy5HU1VCUHJvY2Vzc29yID0gbmV3IEdTVUJQcm9jZXNzb3IoZm9udCwgZm9udC5HU1VCKTsKICAgIH0KCiAgICBpZiAoZm9udC5HUE9TKSB7CiAgICAgIHRoaXMuR1BPU1Byb2Nlc3NvciA9IG5ldyBHUE9TUHJvY2Vzc29yKGZvbnQsIGZvbnQuR1BPUyk7CiAgICB9CiAgfQoKICBPVExheW91dEVuZ2luZS5wcm90b3R5cGUuc2V0dXAgPSBmdW5jdGlvbiBzZXR1cChnbHlwaFJ1bikgewogICAgdmFyIF90aGlzID0gdGhpczsKCiAgICAvLyBNYXAgZ2x5cGhzIHRvIEdseXBoSW5mbyBvYmplY3RzIHNvIGRhdGEgY2FuIGJlIHBhc3NlZCBiZXR3ZWVuCiAgICAvLyBHU1VCIGFuZCBHUE9TIHdpdGhvdXQgbXV0YXRpbmcgdGhlIHJlYWwgKHNoYXJlZCkgR2x5cGggb2JqZWN0cy4KICAgIHRoaXMuZ2x5cGhJbmZvcyA9IGdseXBoUnVuLmdseXBocy5tYXAoZnVuY3Rpb24gKGdseXBoKSB7CiAgICAgIHJldHVybiBuZXcgR2x5cGhJbmZvKF90aGlzLmZvbnQsIGdseXBoLmlkLCBbXS5jb25jYXQoZ2x5cGguY29kZVBvaW50cykpOwogICAgfSk7CgogICAgLy8gU2VsZWN0IGEgc2NyaXB0IGJhc2VkIG9uIHdoYXQgaXMgYXZhaWxhYmxlIGluIEdTVUIvR1BPUy4KICAgIHZhciBzY3JpcHQgPSBudWxsOwogICAgaWYgKHRoaXMuR1BPU1Byb2Nlc3NvcikgewogICAgICBzY3JpcHQgPSB0aGlzLkdQT1NQcm9jZXNzb3Iuc2VsZWN0U2NyaXB0KGdseXBoUnVuLnNjcmlwdCwgZ2x5cGhSdW4ubGFuZ3VhZ2UsIGdseXBoUnVuLmRpcmVjdGlvbik7CiAgICB9CgogICAgaWYgKHRoaXMuR1NVQlByb2Nlc3NvcikgewogICAgICBzY3JpcHQgPSB0aGlzLkdTVUJQcm9jZXNzb3Iuc2VsZWN0U2NyaXB0KGdseXBoUnVuLnNjcmlwdCwgZ2x5cGhSdW4ubGFuZ3VhZ2UsIGdseXBoUnVuLmRpcmVjdGlvbik7CiAgICB9CgogICAgLy8gQ2hvb3NlIGEgc2hhcGVyIGJhc2VkIG9uIHRoZSBzY3JpcHQsIGFuZCBzZXR1cCBhIHNoYXBpbmcgcGxhbi4KICAgIC8vIFRoaXMgZGV0ZXJtaW5lcyB3aGljaCBmZWF0dXJlcyB0byBhcHBseSB0byB3aGljaCBnbHlwaHMuCiAgICB0aGlzLnNoYXBlciA9IGNob29zZShzY3JpcHQpOwogICAgdGhpcy5wbGFuID0gbmV3IFNoYXBpbmdQbGFuKHRoaXMuZm9udCwgc2NyaXB0LCBnbHlwaFJ1bi5kaXJlY3Rpb24pOwogICAgdGhpcy5zaGFwZXIucGxhbih0aGlzLnBsYW4sIHRoaXMuZ2x5cGhJbmZvcywgZ2x5cGhSdW4uZmVhdHVyZXMpOwoKICAgIC8vIEFzc2lnbiBjaG9zZW4gZmVhdHVyZXMgdG8gb3V0cHV0IGdseXBoIHJ1bgogICAgZm9yICh2YXIga2V5IGluIHRoaXMucGxhbi5hbGxGZWF0dXJlcykgewogICAgICBnbHlwaFJ1bi5mZWF0dXJlc1trZXldID0gdHJ1ZTsKICAgIH0KICB9OwoKICBPVExheW91dEVuZ2luZS5wcm90b3R5cGUuc3Vic3RpdHV0ZSA9IGZ1bmN0aW9uIHN1YnN0aXR1dGUoZ2x5cGhSdW4pIHsKICAgIHZhciBfdGhpczIgPSB0aGlzOwoKICAgIGlmICh0aGlzLkdTVUJQcm9jZXNzb3IpIHsKICAgICAgdGhpcy5wbGFuLnByb2Nlc3ModGhpcy5HU1VCUHJvY2Vzc29yLCB0aGlzLmdseXBoSW5mb3MpOwoKICAgICAgLy8gTWFwIGdseXBoIGluZm9zIGJhY2sgdG8gbm9ybWFsIEdseXBoIG9iamVjdHMKICAgICAgZ2x5cGhSdW4uZ2x5cGhzID0gdGhpcy5nbHlwaEluZm9zLm1hcChmdW5jdGlvbiAoZ2x5cGhJbmZvKSB7CiAgICAgICAgcmV0dXJuIF90aGlzMi5mb250LmdldEdseXBoKGdseXBoSW5mby5pZCwgZ2x5cGhJbmZvLmNvZGVQb2ludHMpOwogICAgICB9KTsKICAgIH0KICB9OwoKICBPVExheW91dEVuZ2luZS5wcm90b3R5cGUucG9zaXRpb24gPSBmdW5jdGlvbiBwb3NpdGlvbihnbHlwaFJ1bikgewogICAgaWYgKHRoaXMuc2hhcGVyLnplcm9NYXJrV2lkdGhzID09PSAnQkVGT1JFX0dQT1MnKSB7CiAgICAgIHRoaXMuemVyb01hcmtBZHZhbmNlcyhnbHlwaFJ1bi5wb3NpdGlvbnMpOwogICAgfQoKICAgIGlmICh0aGlzLkdQT1NQcm9jZXNzb3IpIHsKICAgICAgdGhpcy5wbGFuLnByb2Nlc3ModGhpcy5HUE9TUHJvY2Vzc29yLCB0aGlzLmdseXBoSW5mb3MsIGdseXBoUnVuLnBvc2l0aW9ucyk7CiAgICB9CgogICAgaWYgKHRoaXMuc2hhcGVyLnplcm9NYXJrV2lkdGhzID09PSAnQUZURVJfR1BPUycpIHsKICAgICAgdGhpcy56ZXJvTWFya0FkdmFuY2VzKGdseXBoUnVuLnBvc2l0aW9ucyk7CiAgICB9CgogICAgLy8gUmV2ZXJzZSB0aGUgZ2x5cGhzIGFuZCBwb3NpdGlvbnMgaWYgdGhlIHNjcmlwdCBpcyByaWdodC10by1sZWZ0CiAgICBpZiAoZ2x5cGhSdW4uZGlyZWN0aW9uID09PSAncnRsJykgewogICAgICBnbHlwaFJ1bi5nbHlwaHMucmV2ZXJzZSgpOwogICAgICBnbHlwaFJ1bi5wb3NpdGlvbnMucmV2ZXJzZSgpOwogICAgfQoKICAgIHJldHVybiB0aGlzLkdQT1NQcm9jZXNzb3IgJiYgdGhpcy5HUE9TUHJvY2Vzc29yLmZlYXR1cmVzOwogIH07CgogIE9UTGF5b3V0RW5naW5lLnByb3RvdHlwZS56ZXJvTWFya0FkdmFuY2VzID0gZnVuY3Rpb24gemVyb01hcmtBZHZhbmNlcyhwb3NpdGlvbnMpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5nbHlwaEluZm9zLmxlbmd0aDsgaSsrKSB7CiAgICAgIGlmICh0aGlzLmdseXBoSW5mb3NbaV0uaXNNYXJrKSB7CiAgICAgICAgcG9zaXRpb25zW2ldLnhBZHZhbmNlID0gMDsKICAgICAgICBwb3NpdGlvbnNbaV0ueUFkdmFuY2UgPSAwOwogICAgICB9CiAgICB9CiAgfTsKCiAgT1RMYXlvdXRFbmdpbmUucHJvdG90eXBlLmNsZWFudXAgPSBmdW5jdGlvbiBjbGVhbnVwKCkgewogICAgdGhpcy5nbHlwaEluZm9zID0gbnVsbDsKICAgIHRoaXMucGxhbiA9IG51bGw7CiAgICB0aGlzLnNoYXBlciA9IG51bGw7CiAgfTsKCiAgT1RMYXlvdXRFbmdpbmUucHJvdG90eXBlLmdldEF2YWlsYWJsZUZlYXR1cmVzID0gZnVuY3Rpb24gZ2V0QXZhaWxhYmxlRmVhdHVyZXMoc2NyaXB0LCBsYW5ndWFnZSkgewogICAgdmFyIGZlYXR1cmVzID0gW107CgogICAgaWYgKHRoaXMuR1NVQlByb2Nlc3NvcikgewogICAgICB0aGlzLkdTVUJQcm9jZXNzb3Iuc2VsZWN0U2NyaXB0KHNjcmlwdCwgbGFuZ3VhZ2UpOwogICAgICBmZWF0dXJlcy5wdXNoLmFwcGx5KGZlYXR1cmVzLCBfT2JqZWN0JGtleXModGhpcy5HU1VCUHJvY2Vzc29yLmZlYXR1cmVzKSk7CiAgICB9CgogICAgaWYgKHRoaXMuR1BPU1Byb2Nlc3NvcikgewogICAgICB0aGlzLkdQT1NQcm9jZXNzb3Iuc2VsZWN0U2NyaXB0KHNjcmlwdCwgbGFuZ3VhZ2UpOwogICAgICBmZWF0dXJlcy5wdXNoLmFwcGx5KGZlYXR1cmVzLCBfT2JqZWN0JGtleXModGhpcy5HUE9TUHJvY2Vzc29yLmZlYXR1cmVzKSk7CiAgICB9CgogICAgcmV0dXJuIGZlYXR1cmVzOwogIH07CgogIHJldHVybiBPVExheW91dEVuZ2luZTsKfSgpOwoKdmFyIExheW91dEVuZ2luZSA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBMYXlvdXRFbmdpbmUoZm9udCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExheW91dEVuZ2luZSk7CgogICAgdGhpcy5mb250ID0gZm9udDsKICAgIHRoaXMudW5pY29kZUxheW91dEVuZ2luZSA9IG51bGw7CiAgICB0aGlzLmtlcm5Qcm9jZXNzb3IgPSBudWxsOwoKICAgIC8vIENob29zZSBhbiBhZHZhbmNlZCBsYXlvdXQgZW5naW5lLiBXZSB0cnkgdGhlIEFBVCBtb3J4IHRhYmxlIGZpcnN0IHNpbmNlIG1vcmUKICAgIC8vIHNjcmlwdHMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQgYmVjYXVzZSB0aGUgc2hhcGluZyBsb2dpYyBpcyBidWlsdCBpbnRvIHRoZSBmb250LgogICAgaWYgKHRoaXMuZm9udC5tb3J4KSB7CiAgICAgIHRoaXMuZW5naW5lID0gbmV3IEFBVExheW91dEVuZ2luZSh0aGlzLmZvbnQpOwogICAgfSBlbHNlIGlmICh0aGlzLmZvbnQuR1NVQiB8fCB0aGlzLmZvbnQuR1BPUykgewogICAgICB0aGlzLmVuZ2luZSA9IG5ldyBPVExheW91dEVuZ2luZSh0aGlzLmZvbnQpOwogICAgfQogIH0KCiAgTGF5b3V0RW5naW5lLnByb3RvdHlwZS5sYXlvdXQgPSBmdW5jdGlvbiBsYXlvdXQoc3RyaW5nLCBmZWF0dXJlcywgc2NyaXB0LCBsYW5ndWFnZSwgZGlyZWN0aW9uKSB7CiAgICAvLyBNYWtlIHRoZSBmZWF0dXJlcyBwYXJhbWV0ZXIgb3B0aW9uYWwKICAgIGlmICh0eXBlb2YgZmVhdHVyZXMgPT09ICdzdHJpbmcnKSB7CiAgICAgIGRpcmVjdGlvbiA9IGxhbmd1YWdlOwogICAgICBsYW5ndWFnZSA9IHNjcmlwdDsKICAgICAgc2NyaXB0ID0gZmVhdHVyZXM7CiAgICAgIGZlYXR1cmVzID0gW107CiAgICB9CgogICAgLy8gTWFwIHN0cmluZyB0byBnbHlwaHMgaWYgbmVlZGVkCiAgICBpZiAodHlwZW9mIHN0cmluZyA9PT0gJ3N0cmluZycpIHsKICAgICAgLy8gQXR0ZW1wdCB0byBkZXRlY3QgdGhlIHNjcmlwdCBmcm9tIHRoZSBzdHJpbmcgaWYgbm90IHByb3ZpZGVkLgogICAgICBpZiAoc2NyaXB0ID09IG51bGwpIHsKICAgICAgICBzY3JpcHQgPSBmb3JTdHJpbmcoc3RyaW5nKTsKICAgICAgfQoKICAgICAgdmFyIGdseXBocyA9IHRoaXMuZm9udC5nbHlwaHNGb3JTdHJpbmcoc3RyaW5nKTsKICAgIH0gZWxzZSB7CiAgICAgIC8vIEF0dGVtcHQgdG8gZGV0ZWN0IHRoZSBzY3JpcHQgZnJvbSB0aGUgZ2x5cGggY29kZSBwb2ludHMgaWYgbm90IHByb3ZpZGVkLgogICAgICBpZiAoc2NyaXB0ID09IG51bGwpIHsKICAgICAgICB2YXIgY29kZVBvaW50cyA9IFtdOwogICAgICAgIGZvciAodmFyIF9pdGVyYXRvciA9IHN0cmluZywgX2lzQXJyYXkgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvciksIF9pID0gMCwgX2l0ZXJhdG9yID0gX2lzQXJyYXkgPyBfaXRlcmF0b3IgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yKTs7KSB7CiAgICAgICAgICB2YXIgX3JlZjsKCiAgICAgICAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgICAgICAgaWYgKF9pID49IF9pdGVyYXRvci5sZW5ndGgpIGJyZWFrOwogICAgICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgX2kgPSBfaXRlcmF0b3IubmV4dCgpOwogICAgICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgZ2x5cGggPSBfcmVmOwoKICAgICAgICAgIGNvZGVQb2ludHMucHVzaC5hcHBseShjb2RlUG9pbnRzLCBnbHlwaC5jb2RlUG9pbnRzKTsKICAgICAgICB9CgogICAgICAgIHNjcmlwdCA9IGZvckNvZGVQb2ludHMoY29kZVBvaW50cyk7CiAgICAgIH0KCiAgICAgIHZhciBnbHlwaHMgPSBzdHJpbmc7CiAgICB9CgogICAgdmFyIGdseXBoUnVuID0gbmV3IEdseXBoUnVuKGdseXBocywgZmVhdHVyZXMsIHNjcmlwdCwgbGFuZ3VhZ2UsIGRpcmVjdGlvbik7CgogICAgLy8gUmV0dXJuIGVhcmx5IGlmIHRoZXJlIGFyZSBubyBnbHlwaHMKICAgIGlmIChnbHlwaHMubGVuZ3RoID09PSAwKSB7CiAgICAgIGdseXBoUnVuLnBvc2l0aW9ucyA9IFtdOwogICAgICByZXR1cm4gZ2x5cGhSdW47CiAgICB9CgogICAgLy8gU2V0dXAgdGhlIGFkdmFuY2VkIGxheW91dCBlbmdpbmUKICAgIGlmICh0aGlzLmVuZ2luZSAmJiB0aGlzLmVuZ2luZS5zZXR1cCkgewogICAgICB0aGlzLmVuZ2luZS5zZXR1cChnbHlwaFJ1bik7CiAgICB9CgogICAgLy8gU3Vic3RpdHV0ZSBhbmQgcG9zaXRpb24gdGhlIGdseXBocwogICAgdGhpcy5zdWJzdGl0dXRlKGdseXBoUnVuKTsKICAgIHRoaXMucG9zaXRpb24oZ2x5cGhSdW4pOwoKICAgIHRoaXMuaGlkZURlZmF1bHRJZ25vcmFibGVzKGdseXBoUnVuLmdseXBocywgZ2x5cGhSdW4ucG9zaXRpb25zKTsKCiAgICAvLyBMZXQgdGhlIGxheW91dCBlbmdpbmUgY2xlYW4gdXAgYW55IHN0YXRlIGl0IG1pZ2h0IGhhdmUKICAgIGlmICh0aGlzLmVuZ2luZSAmJiB0aGlzLmVuZ2luZS5jbGVhbnVwKSB7CiAgICAgIHRoaXMuZW5naW5lLmNsZWFudXAoKTsKICAgIH0KCiAgICByZXR1cm4gZ2x5cGhSdW47CiAgfTsKCiAgTGF5b3V0RW5naW5lLnByb3RvdHlwZS5zdWJzdGl0dXRlID0gZnVuY3Rpb24gc3Vic3RpdHV0ZShnbHlwaFJ1bikgewogICAgLy8gQ2FsbCB0aGUgYWR2YW5jZWQgbGF5b3V0IGVuZ2luZSB0byBtYWtlIHN1YnN0aXR1dGlvbnMKICAgIGlmICh0aGlzLmVuZ2luZSAmJiB0aGlzLmVuZ2luZS5zdWJzdGl0dXRlKSB7CiAgICAgIHRoaXMuZW5naW5lLnN1YnN0aXR1dGUoZ2x5cGhSdW4pOwogICAgfQogIH07CgogIExheW91dEVuZ2luZS5wcm90b3R5cGUucG9zaXRpb24gPSBmdW5jdGlvbiBwb3NpdGlvbihnbHlwaFJ1bikgewogICAgLy8gR2V0IGluaXRpYWwgZ2x5cGggcG9zaXRpb25zCiAgICBnbHlwaFJ1bi5wb3NpdGlvbnMgPSBnbHlwaFJ1bi5nbHlwaHMubWFwKGZ1bmN0aW9uIChnbHlwaCkgewogICAgICByZXR1cm4gbmV3IEdseXBoUG9zaXRpb24oZ2x5cGguYWR2YW5jZVdpZHRoKTsKICAgIH0pOwogICAgdmFyIHBvc2l0aW9uZWQgPSBudWxsOwoKICAgIC8vIENhbGwgdGhlIGFkdmFuY2VkIGxheW91dCBlbmdpbmUuIFJldHVybnMgdGhlIGZlYXR1cmVzIGFwcGxpZWQuCiAgICBpZiAodGhpcy5lbmdpbmUgJiYgdGhpcy5lbmdpbmUucG9zaXRpb24pIHsKICAgICAgcG9zaXRpb25lZCA9IHRoaXMuZW5naW5lLnBvc2l0aW9uKGdseXBoUnVuKTsKICAgIH0KCiAgICAvLyBpZiB0aGVyZSBpcyBubyBHUE9TIHRhYmxlLCB1c2UgdW5pY29kZSBwcm9wZXJ0aWVzIHRvIHBvc2l0aW9uIG1hcmtzLgogICAgaWYgKCFwb3NpdGlvbmVkICYmICghdGhpcy5lbmdpbmUgfHwgdGhpcy5lbmdpbmUuZmFsbGJhY2tQb3NpdGlvbikpIHsKICAgICAgaWYgKCF0aGlzLnVuaWNvZGVMYXlvdXRFbmdpbmUpIHsKICAgICAgICB0aGlzLnVuaWNvZGVMYXlvdXRFbmdpbmUgPSBuZXcgVW5pY29kZUxheW91dEVuZ2luZSh0aGlzLmZvbnQpOwogICAgICB9CgogICAgICB0aGlzLnVuaWNvZGVMYXlvdXRFbmdpbmUucG9zaXRpb25HbHlwaHMoZ2x5cGhSdW4uZ2x5cGhzLCBnbHlwaFJ1bi5wb3NpdGlvbnMpOwogICAgfQoKICAgIC8vIGlmIGtlcm5pbmcgaXMgbm90IHN1cHBvcnRlZCBieSBHUE9TLCBkbyBrZXJuaW5nIHdpdGggdGhlIFRydWVUeXBlL0FBVCBrZXJuIHRhYmxlCiAgICBpZiAoKCFwb3NpdGlvbmVkIHx8ICFwb3NpdGlvbmVkLmtlcm4pICYmIGdseXBoUnVuLmZlYXR1cmVzLmtlcm4gIT09IGZhbHNlICYmIHRoaXMuZm9udC5rZXJuKSB7CiAgICAgIGlmICghdGhpcy5rZXJuUHJvY2Vzc29yKSB7CiAgICAgICAgdGhpcy5rZXJuUHJvY2Vzc29yID0gbmV3IEtlcm5Qcm9jZXNzb3IodGhpcy5mb250KTsKICAgICAgfQoKICAgICAgdGhpcy5rZXJuUHJvY2Vzc29yLnByb2Nlc3MoZ2x5cGhSdW4uZ2x5cGhzLCBnbHlwaFJ1bi5wb3NpdGlvbnMpOwogICAgICBnbHlwaFJ1bi5mZWF0dXJlcy5rZXJuID0gdHJ1ZTsKICAgIH0KICB9OwoKICBMYXlvdXRFbmdpbmUucHJvdG90eXBlLmhpZGVEZWZhdWx0SWdub3JhYmxlcyA9IGZ1bmN0aW9uIGhpZGVEZWZhdWx0SWdub3JhYmxlcyhnbHlwaHMsIHBvc2l0aW9ucykgewogICAgdmFyIHNwYWNlID0gdGhpcy5mb250LmdseXBoRm9yQ29kZVBvaW50KDB4MjApOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBnbHlwaHMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKHRoaXMuaXNEZWZhdWx0SWdub3JhYmxlKGdseXBoc1tpXS5jb2RlUG9pbnRzWzBdKSkgewogICAgICAgIGdseXBoc1tpXSA9IHNwYWNlOwogICAgICAgIHBvc2l0aW9uc1tpXS54QWR2YW5jZSA9IDA7CiAgICAgICAgcG9zaXRpb25zW2ldLnlBZHZhbmNlID0gMDsKICAgICAgfQogICAgfQogIH07CgogIExheW91dEVuZ2luZS5wcm90b3R5cGUuaXNEZWZhdWx0SWdub3JhYmxlID0gZnVuY3Rpb24gaXNEZWZhdWx0SWdub3JhYmxlKGNoKSB7CiAgICAvLyBGcm9tIERlcml2ZWRDb3JlUHJvcGVydGllcy50eHQgaW4gdGhlIFVuaWNvZGUgZGF0YWJhc2UsCiAgICAvLyBtaW51cyBVKzExNUYsIFUrMTE2MCwgVSszMTY0IGFuZCBVK0ZGQTAsIHdoaWNoIGlzIHdoYXQKICAgIC8vIEhhcmZidXp6IGFuZCBVbmlzY3JpYmUgZG8uCiAgICB2YXIgcGxhbmUgPSBjaCA+PiAxNjsKICAgIGlmIChwbGFuZSA9PT0gMCkgewogICAgICAvLyBCTVAKICAgICAgc3dpdGNoIChjaCA+PiA4KSB7CiAgICAgICAgY2FzZSAweDAwOgogICAgICAgICAgcmV0dXJuIGNoID09PSAweDAwQUQ7CiAgICAgICAgY2FzZSAweDAzOgogICAgICAgICAgcmV0dXJuIGNoID09PSAweDAzNEY7CiAgICAgICAgY2FzZSAweDA2OgogICAgICAgICAgcmV0dXJuIGNoID09PSAweDA2MUM7CiAgICAgICAgY2FzZSAweDE3OgogICAgICAgICAgcmV0dXJuIDB4MTdCNCA8PSBjaCAmJiBjaCA8PSAweDE3QjU7CiAgICAgICAgY2FzZSAweDE4OgogICAgICAgICAgcmV0dXJuIDB4MTgwQiA8PSBjaCAmJiBjaCA8PSAweDE4MEU7CiAgICAgICAgY2FzZSAweDIwOgogICAgICAgICAgcmV0dXJuIDB4MjAwQiA8PSBjaCAmJiBjaCA8PSAweDIwMEYgfHwgMHgyMDJBIDw9IGNoICYmIGNoIDw9IDB4MjAyRSB8fCAweDIwNjAgPD0gY2ggJiYgY2ggPD0gMHgyMDZGOwogICAgICAgIGNhc2UgMHhGRToKICAgICAgICAgIHJldHVybiAweEZFMDAgPD0gY2ggJiYgY2ggPD0gMHhGRTBGIHx8IGNoID09PSAweEZFRkY7CiAgICAgICAgY2FzZSAweEZGOgogICAgICAgICAgcmV0dXJuIDB4RkZGMCA8PSBjaCAmJiBjaCA8PSAweEZGRjg7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgLy8gT3RoZXIgcGxhbmVzCiAgICAgIHN3aXRjaCAocGxhbmUpIHsKICAgICAgICBjYXNlIDB4MDE6CiAgICAgICAgICByZXR1cm4gMHgxQkNBMCA8PSBjaCAmJiBjaCA8PSAweDFCQ0EzIHx8IDB4MUQxNzMgPD0gY2ggJiYgY2ggPD0gMHgxRDE3QTsKICAgICAgICBjYXNlIDB4MEU6CiAgICAgICAgICByZXR1cm4gMHhFMDAwMCA8PSBjaCAmJiBjaCA8PSAweEUwRkZGOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0KICB9OwoKICBMYXlvdXRFbmdpbmUucHJvdG90eXBlLmdldEF2YWlsYWJsZUZlYXR1cmVzID0gZnVuY3Rpb24gZ2V0QXZhaWxhYmxlRmVhdHVyZXMoc2NyaXB0LCBsYW5ndWFnZSkgewogICAgdmFyIGZlYXR1cmVzID0gW107CgogICAgaWYgKHRoaXMuZW5naW5lKSB7CiAgICAgIGZlYXR1cmVzLnB1c2guYXBwbHkoZmVhdHVyZXMsIHRoaXMuZW5naW5lLmdldEF2YWlsYWJsZUZlYXR1cmVzKHNjcmlwdCwgbGFuZ3VhZ2UpKTsKICAgIH0KCiAgICBpZiAodGhpcy5mb250Lmtlcm4gJiYgZmVhdHVyZXMuaW5kZXhPZigna2VybicpID09PSAtMSkgewogICAgICBmZWF0dXJlcy5wdXNoKCdrZXJuJyk7CiAgICB9CgogICAgcmV0dXJuIGZlYXR1cmVzOwogIH07CgogIExheW91dEVuZ2luZS5wcm90b3R5cGUuc3RyaW5nc0ZvckdseXBoID0gZnVuY3Rpb24gc3RyaW5nc0ZvckdseXBoKGdpZCkgewogICAgdmFyIHJlc3VsdCA9IG5ldyBfU2V0KCk7CgogICAgdmFyIGNvZGVQb2ludHMgPSB0aGlzLmZvbnQuX2NtYXBQcm9jZXNzb3IuY29kZVBvaW50c0ZvckdseXBoKGdpZCk7CiAgICBmb3IgKHZhciBfaXRlcmF0b3IyID0gY29kZVBvaW50cywgX2lzQXJyYXkyID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IyKSwgX2kyID0gMCwgX2l0ZXJhdG9yMiA9IF9pc0FycmF5MiA/IF9pdGVyYXRvcjIgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMik7OykgewogICAgICB2YXIgX3JlZjI7CgogICAgICBpZiAoX2lzQXJyYXkyKSB7CiAgICAgICAgaWYgKF9pMiA+PSBfaXRlcmF0b3IyLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZjIgPSBfaXRlcmF0b3IyW19pMisrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaTIgPSBfaXRlcmF0b3IyLm5leHQoKTsKICAgICAgICBpZiAoX2kyLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYyID0gX2kyLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgY29kZVBvaW50ID0gX3JlZjI7CgogICAgICByZXN1bHQuYWRkKF9TdHJpbmckZnJvbUNvZGVQb2ludChjb2RlUG9pbnQpKTsKICAgIH0KCiAgICBpZiAodGhpcy5lbmdpbmUgJiYgdGhpcy5lbmdpbmUuc3RyaW5nc0ZvckdseXBoKSB7CiAgICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSB0aGlzLmVuZ2luZS5zdHJpbmdzRm9yR2x5cGgoZ2lkKSwgX2lzQXJyYXkzID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IzKSwgX2kzID0gMCwgX2l0ZXJhdG9yMyA9IF9pc0FycmF5MyA/IF9pdGVyYXRvcjMgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMyk7OykgewogICAgICAgIHZhciBfcmVmMzsKCiAgICAgICAgaWYgKF9pc0FycmF5MykgewogICAgICAgICAgaWYgKF9pMyA+PSBfaXRlcmF0b3IzLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmMyA9IF9pdGVyYXRvcjNbX2kzKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaTMgPSBfaXRlcmF0b3IzLm5leHQoKTsKICAgICAgICAgIGlmIChfaTMuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmMyA9IF9pMy52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBzdHJpbmcgPSBfcmVmMzsKCiAgICAgICAgcmVzdWx0LmFkZChzdHJpbmcpOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIF9BcnJheSRmcm9tKHJlc3VsdCk7CiAgfTsKCiAgcmV0dXJuIExheW91dEVuZ2luZTsKfSgpOwoKdmFyIFNWR19DT01NQU5EUyA9IHsKICBtb3ZlVG86ICdNJywKICBsaW5lVG86ICdMJywKICBxdWFkcmF0aWNDdXJ2ZVRvOiAnUScsCiAgYmV6aWVyQ3VydmVUbzogJ0MnLAogIGNsb3NlUGF0aDogJ1onCn07CgovKioKICogUGF0aCBvYmplY3RzIGFyZSByZXR1cm5lZCBieSBnbHlwaHMgYW5kIHJlcHJlc2VudCB0aGUgYWN0dWFsCiAqIHZlY3RvciBvdXRsaW5lcyBmb3IgZWFjaCBnbHlwaCBpbiB0aGUgZm9udC4gUGF0aHMgY2FuIGJlIGNvbnZlcnRlZAogKiB0byBTVkcgcGF0aCBkYXRhIHN0cmluZ3MsIG9yIHRvIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvCiAqIHJlbmRlciB0aGUgcGF0aCB0byBhIGdyYXBoaWNzIGNvbnRleHQuCiAqLwoKdmFyIFBhdGggPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gUGF0aCgpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQYXRoKTsKCiAgICB0aGlzLmNvbW1hbmRzID0gW107CiAgICB0aGlzLl9iYm94ID0gbnVsbDsKICAgIHRoaXMuX2Nib3ggPSBudWxsOwogIH0KCiAgLyoqCiAgICogQ29tcGlsZXMgdGhlIHBhdGggdG8gYSBKYXZhU2NyaXB0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGFwcGxpZWQgd2l0aAogICAqIGEgZ3JhcGhpY3MgY29udGV4dCBpbiBvcmRlciB0byByZW5kZXIgdGhlIHBhdGguCiAgICogQHJldHVybiB7c3RyaW5nfQogICAqLwoKCiAgUGF0aC5wcm90b3R5cGUudG9GdW5jdGlvbiA9IGZ1bmN0aW9uIHRvRnVuY3Rpb24oKSB7CiAgICB2YXIgY21kcyA9IHRoaXMuY29tbWFuZHMubWFwKGZ1bmN0aW9uIChjKSB7CiAgICAgIHJldHVybiAnICBjdHguJyArIGMuY29tbWFuZCArICcoJyArIGMuYXJncy5qb2luKCcsICcpICsgJyk7JzsKICAgIH0pOwogICAgcmV0dXJuIG5ldyBGdW5jdGlvbignY3R4JywgY21kcy5qb2luKCdcbicpKTsKICB9OwoKICAvKioKICAgKiBDb252ZXJ0cyB0aGUgcGF0aCB0byBhbiBTVkcgcGF0aCBkYXRhIHN0cmluZwogICAqIEByZXR1cm4ge3N0cmluZ30KICAgKi8KCgogIFBhdGgucHJvdG90eXBlLnRvU1ZHID0gZnVuY3Rpb24gdG9TVkcoKSB7CiAgICB2YXIgY21kcyA9IHRoaXMuY29tbWFuZHMubWFwKGZ1bmN0aW9uIChjKSB7CiAgICAgIHZhciBhcmdzID0gYy5hcmdzLm1hcChmdW5jdGlvbiAoYXJnKSB7CiAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoYXJnICogMTAwKSAvIDEwMDsKICAgICAgfSk7CiAgICAgIHJldHVybiAnJyArIFNWR19DT01NQU5EU1tjLmNvbW1hbmRdICsgYXJncy5qb2luKCcgJyk7CiAgICB9KTsKCiAgICByZXR1cm4gY21kcy5qb2luKCcnKTsKICB9OwoKICAvKioKICAgKiBHZXRzIHRoZSAiY29udHJvbCBib3giIG9mIGEgcGF0aC4KICAgKiBUaGlzIGlzIGxpa2UgdGhlIGJvdW5kaW5nIGJveCwgYnV0IGl0IGluY2x1ZGVzIGFsbCBwb2ludHMgaW5jbHVkaW5nCiAgICogY29udHJvbCBwb2ludHMgb2YgYmV6aWVyIHNlZ21lbnRzIGFuZCBpcyBtdWNoIGZhc3RlciB0byBjb21wdXRlIHRoYW4KICAgKiB0aGUgcmVhbCBib3VuZGluZyBib3guCiAgICogQHR5cGUge0JCb3h9CiAgICovCgoKICAvKioKICAgKiBBcHBsaWVzIGEgbWFwcGluZyBmdW5jdGlvbiB0byBlYWNoIHBvaW50IGluIHRoZSBwYXRoLgogICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZuCiAgICogQHJldHVybiB7UGF0aH0KICAgKi8KICBQYXRoLnByb3RvdHlwZS5tYXBQb2ludHMgPSBmdW5jdGlvbiBtYXBQb2ludHMoZm4pIHsKICAgIHZhciBwYXRoID0gbmV3IFBhdGgoKTsKCiAgICBmb3IgKHZhciBfaXRlcmF0b3IgPSB0aGlzLmNvbW1hbmRzLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgdmFyIF9yZWY7CgogICAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZiA9IF9pdGVyYXRvcltfaSsrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgaWYgKF9pLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIGMgPSBfcmVmOwoKICAgICAgdmFyIGFyZ3MgPSBbXTsKICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgYy5hcmdzLmxlbmd0aDsgX2kyICs9IDIpIHsKICAgICAgICB2YXIgX2ZuID0gZm4oYy5hcmdzW19pMl0sIGMuYXJnc1tfaTIgKyAxXSksCiAgICAgICAgICAgIHggPSBfZm5bMF0sCiAgICAgICAgICAgIHkgPSBfZm5bMV07CgogICAgICAgIGFyZ3MucHVzaCh4LCB5KTsKICAgICAgfQoKICAgICAgcGF0aFtjLmNvbW1hbmRdLmFwcGx5KHBhdGgsIGFyZ3MpOwogICAgfQoKICAgIHJldHVybiBwYXRoOwogIH07CgogIC8qKgogICAqIFRyYW5zZm9ybXMgdGhlIHBhdGggYnkgdGhlIGdpdmVuIG1hdHJpeC4KICAgKi8KCgogIFBhdGgucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uIHRyYW5zZm9ybShtMCwgbTEsIG0yLCBtMywgbTQsIG01KSB7CiAgICByZXR1cm4gdGhpcy5tYXBQb2ludHMoZnVuY3Rpb24gKHgsIHkpIHsKICAgICAgeCA9IG0wICogeCArIG0yICogeSArIG00OwogICAgICB5ID0gbTEgKiB4ICsgbTMgKiB5ICsgbTU7CiAgICAgIHJldHVybiBbeCwgeV07CiAgICB9KTsKICB9OwoKICAvKioKICAgKiBUcmFuc2xhdGVzIHRoZSBwYXRoIGJ5IHRoZSBnaXZlbiBvZmZzZXQuCiAgICovCgoKICBQYXRoLnByb3RvdHlwZS50cmFuc2xhdGUgPSBmdW5jdGlvbiB0cmFuc2xhdGUoeCwgeSkgewogICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtKDEsIDAsIDAsIDEsIHgsIHkpOwogIH07CgogIC8qKgogICAqIFJvdGF0ZXMgdGhlIHBhdGggYnkgdGhlIGdpdmVuIGFuZ2xlIChpbiByYWRpYW5zKS4KICAgKi8KCgogIFBhdGgucHJvdG90eXBlLnJvdGF0ZSA9IGZ1bmN0aW9uIHJvdGF0ZShhbmdsZSkgewogICAgdmFyIGNvcyA9IE1hdGguY29zKGFuZ2xlKTsKICAgIHZhciBzaW4gPSBNYXRoLnNpbihhbmdsZSk7CiAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm0oY29zLCBzaW4sIC1zaW4sIGNvcywgMCwgMCk7CiAgfTsKCiAgLyoqCiAgICogU2NhbGVzIHRoZSBwYXRoLgogICAqLwoKCiAgUGF0aC5wcm90b3R5cGUuc2NhbGUgPSBmdW5jdGlvbiBzY2FsZShzY2FsZVgpIHsKICAgIHZhciBzY2FsZVkgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHNjYWxlWDsKCiAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm0oc2NhbGVYLCAwLCAwLCBzY2FsZVksIDAsIDApOwogIH07CgogIF9jcmVhdGVDbGFzcyhQYXRoLCBbewogICAga2V5OiAnY2JveCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgaWYgKCF0aGlzLl9jYm94KSB7CiAgICAgICAgdmFyIGNib3ggPSBuZXcgQkJveCgpOwogICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSB0aGlzLmNvbW1hbmRzLCBfaXNBcnJheTIgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjIpLCBfaTMgPSAwLCBfaXRlcmF0b3IyID0gX2lzQXJyYXkyID8gX2l0ZXJhdG9yMiA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IyKTs7KSB7CiAgICAgICAgICB2YXIgX3JlZjI7CgogICAgICAgICAgaWYgKF9pc0FycmF5MikgewogICAgICAgICAgICBpZiAoX2kzID49IF9pdGVyYXRvcjIubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgX3JlZjIgPSBfaXRlcmF0b3IyW19pMysrXTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIF9pMyA9IF9pdGVyYXRvcjIubmV4dCgpOwogICAgICAgICAgICBpZiAoX2kzLmRvbmUpIGJyZWFrOwogICAgICAgICAgICBfcmVmMiA9IF9pMy52YWx1ZTsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgY29tbWFuZCA9IF9yZWYyOwoKICAgICAgICAgIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IGNvbW1hbmQuYXJncy5sZW5ndGg7IF9pNCArPSAyKSB7CiAgICAgICAgICAgIGNib3guYWRkUG9pbnQoY29tbWFuZC5hcmdzW19pNF0sIGNvbW1hbmQuYXJnc1tfaTQgKyAxXSk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0aGlzLl9jYm94ID0gX09iamVjdCRmcmVlemUoY2JveCk7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLl9jYm94OwogICAgfQoKICAgIC8qKgogICAgICogR2V0cyB0aGUgZXhhY3QgYm91bmRpbmcgYm94IG9mIHRoZSBwYXRoIGJ5IGV2YWx1YXRpbmcgY3VydmUgc2VnbWVudHMuCiAgICAgKiBTbG93ZXIgdG8gY29tcHV0ZSB0aGFuIHRoZSBjb250cm9sIGJveCwgYnV0IG1vcmUgYWNjdXJhdGUuCiAgICAgKiBAdHlwZSB7QkJveH0KICAgICAqLwoKICB9LCB7CiAgICBrZXk6ICdiYm94JywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICBpZiAodGhpcy5fYmJveCkgewogICAgICAgIHJldHVybiB0aGlzLl9iYm94OwogICAgICB9CgogICAgICB2YXIgYmJveCA9IG5ldyBCQm94KCk7CiAgICAgIHZhciBjeCA9IDAsCiAgICAgICAgICBjeSA9IDA7CgogICAgICB2YXIgZiA9IGZ1bmN0aW9uIGYodCkgewogICAgICAgIHJldHVybiBNYXRoLnBvdygxIC0gdCwgMykgKiBwMFtpXSArIDMgKiBNYXRoLnBvdygxIC0gdCwgMikgKiB0ICogcDFbaV0gKyAzICogKDEgLSB0KSAqIE1hdGgucG93KHQsIDIpICogcDJbaV0gKyBNYXRoLnBvdyh0LCAzKSAqIHAzW2ldOwogICAgICB9OwoKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMyA9IHRoaXMuY29tbWFuZHMsIF9pc0FycmF5MyA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMyksIF9pNSA9IDAsIF9pdGVyYXRvcjMgPSBfaXNBcnJheTMgPyBfaXRlcmF0b3IzIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjMpOzspIHsKICAgICAgICB2YXIgX3JlZjM7CgogICAgICAgIGlmIChfaXNBcnJheTMpIHsKICAgICAgICAgIGlmIChfaTUgPj0gX2l0ZXJhdG9yMy5sZW5ndGgpIGJyZWFrOwogICAgICAgICAgX3JlZjMgPSBfaXRlcmF0b3IzW19pNSsrXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgX2k1ID0gX2l0ZXJhdG9yMy5uZXh0KCk7CiAgICAgICAgICBpZiAoX2k1LmRvbmUpIGJyZWFrOwogICAgICAgICAgX3JlZjMgPSBfaTUudmFsdWU7CiAgICAgICAgfQoKICAgICAgICB2YXIgYyA9IF9yZWYzOwoKICAgICAgICBzd2l0Y2ggKGMuY29tbWFuZCkgewogICAgICAgICAgY2FzZSAnbW92ZVRvJzoKICAgICAgICAgIGNhc2UgJ2xpbmVUbyc6CiAgICAgICAgICAgIHZhciBfYyRhcmdzID0gYy5hcmdzLAogICAgICAgICAgICAgICAgeCA9IF9jJGFyZ3NbMF0sCiAgICAgICAgICAgICAgICB5ID0gX2MkYXJnc1sxXTsKCiAgICAgICAgICAgIGJib3guYWRkUG9pbnQoeCwgeSk7CiAgICAgICAgICAgIGN4ID0geDsKICAgICAgICAgICAgY3kgPSB5OwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgICBjYXNlICdxdWFkcmF0aWNDdXJ2ZVRvJzoKICAgICAgICAgIGNhc2UgJ2JlemllckN1cnZlVG8nOgogICAgICAgICAgICBpZiAoYy5jb21tYW5kID09PSAncXVhZHJhdGljQ3VydmVUbycpIHsKICAgICAgICAgICAgICAvLyBodHRwOi8vZm9udGZvcmdlLm9yZy9iZXppZXIuaHRtbAogICAgICAgICAgICAgIHZhciBfYyRhcmdzMiA9IGMuYXJncywKICAgICAgICAgICAgICAgICAgcXAxeCA9IF9jJGFyZ3MyWzBdLAogICAgICAgICAgICAgICAgICBxcDF5ID0gX2MkYXJnczJbMV0sCiAgICAgICAgICAgICAgICAgIHAzeCA9IF9jJGFyZ3MyWzJdLAogICAgICAgICAgICAgICAgICBwM3kgPSBfYyRhcmdzMlszXTsKCiAgICAgICAgICAgICAgdmFyIGNwMXggPSBjeCArIDIgLyAzICogKHFwMXggLSBjeCk7IC8vIENQMSA9IFFQMCArIDIvMyAqIChRUDEtUVAwKQogICAgICAgICAgICAgIHZhciBjcDF5ID0gY3kgKyAyIC8gMyAqIChxcDF5IC0gY3kpOwogICAgICAgICAgICAgIHZhciBjcDJ4ID0gcDN4ICsgMiAvIDMgKiAocXAxeCAtIHAzeCk7IC8vIENQMiA9IFFQMiArIDIvMyAqIChRUDEtUVAyKQogICAgICAgICAgICAgIHZhciBjcDJ5ID0gcDN5ICsgMiAvIDMgKiAocXAxeSAtIHAzeSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdmFyIF9jJGFyZ3MzID0gYy5hcmdzLAogICAgICAgICAgICAgICAgICBjcDF4ID0gX2MkYXJnczNbMF0sCiAgICAgICAgICAgICAgICAgIGNwMXkgPSBfYyRhcmdzM1sxXSwKICAgICAgICAgICAgICAgICAgY3AyeCA9IF9jJGFyZ3MzWzJdLAogICAgICAgICAgICAgICAgICBjcDJ5ID0gX2MkYXJnczNbM10sCiAgICAgICAgICAgICAgICAgIHAzeCA9IF9jJGFyZ3MzWzRdLAogICAgICAgICAgICAgICAgICBwM3kgPSBfYyRhcmdzM1s1XTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gaHR0cDovL2Jsb2cuaGFja2Vycy1jYWZlLm5ldC8yMDA5LzA2L2hvdy10by1jYWxjdWxhdGUtYmV6aWVyLWN1cnZlcy1ib3VuZGluZy5odG1sCiAgICAgICAgICAgIGJib3guYWRkUG9pbnQocDN4LCBwM3kpOwoKICAgICAgICAgICAgdmFyIHAwID0gW2N4LCBjeV07CiAgICAgICAgICAgIHZhciBwMSA9IFtjcDF4LCBjcDF5XTsKICAgICAgICAgICAgdmFyIHAyID0gW2NwMngsIGNwMnldOwogICAgICAgICAgICB2YXIgcDMgPSBbcDN4LCBwM3ldOwoKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gMTsgaSsrKSB7CiAgICAgICAgICAgICAgdmFyIGIgPSA2ICogcDBbaV0gLSAxMiAqIHAxW2ldICsgNiAqIHAyW2ldOwogICAgICAgICAgICAgIHZhciBhID0gLTMgKiBwMFtpXSArIDkgKiBwMVtpXSAtIDkgKiBwMltpXSArIDMgKiBwM1tpXTsKICAgICAgICAgICAgICBjID0gMyAqIHAxW2ldIC0gMyAqIHAwW2ldOwoKICAgICAgICAgICAgICBpZiAoYSA9PT0gMCkgewogICAgICAgICAgICAgICAgaWYgKGIgPT09IDApIHsKICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIHQgPSAtYyAvIGI7CiAgICAgICAgICAgICAgICBpZiAoMCA8IHQgJiYgdCA8IDEpIHsKICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICBiYm94LmFkZFBvaW50KGYodCksIGJib3gubWF4WSk7CiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gMSkgewogICAgICAgICAgICAgICAgICAgIGJib3guYWRkUG9pbnQoYmJveC5tYXhYLCBmKHQpKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgdmFyIGIyYWMgPSBNYXRoLnBvdyhiLCAyKSAtIDQgKiBjICogYTsKICAgICAgICAgICAgICBpZiAoYjJhYyA8IDApIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgdmFyIHQxID0gKC1iICsgTWF0aC5zcXJ0KGIyYWMpKSAvICgyICogYSk7CiAgICAgICAgICAgICAgaWYgKDAgPCB0MSAmJiB0MSA8IDEpIHsKICAgICAgICAgICAgICAgIGlmIChpID09PSAwKSB7CiAgICAgICAgICAgICAgICAgIGJib3guYWRkUG9pbnQoZih0MSksIGJib3gubWF4WSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgPT09IDEpIHsKICAgICAgICAgICAgICAgICAgYmJveC5hZGRQb2ludChiYm94Lm1heFgsIGYodDEpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIHZhciB0MiA9ICgtYiAtIE1hdGguc3FydChiMmFjKSkgLyAoMiAqIGEpOwogICAgICAgICAgICAgIGlmICgwIDwgdDIgJiYgdDIgPCAxKSB7CiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkgewogICAgICAgICAgICAgICAgICBiYm94LmFkZFBvaW50KGYodDIpLCBiYm94Lm1heFkpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpID09PSAxKSB7CiAgICAgICAgICAgICAgICAgIGJib3guYWRkUG9pbnQoYmJveC5tYXhYLCBmKHQyKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBjeCA9IHAzeDsKICAgICAgICAgICAgY3kgPSBwM3k7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMuX2Jib3ggPSBfT2JqZWN0JGZyZWV6ZShiYm94KTsKICAgIH0KICB9XSk7CgogIHJldHVybiBQYXRoOwp9KCk7Cgp2YXIgX2FyciA9IFsnbW92ZVRvJywgJ2xpbmVUbycsICdxdWFkcmF0aWNDdXJ2ZVRvJywgJ2JlemllckN1cnZlVG8nLCAnY2xvc2VQYXRoJ107Cgp2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcCgpIHsKICB2YXIgY29tbWFuZCA9IF9hcnJbX2k2XTsKICBQYXRoLnByb3RvdHlwZVtjb21tYW5kXSA9IGZ1bmN0aW9uICgpIHsKICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7CiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07CiAgICB9CgogICAgdGhpcy5fYmJveCA9IHRoaXMuX2Nib3ggPSBudWxsOwogICAgdGhpcy5jb21tYW5kcy5wdXNoKHsKICAgICAgY29tbWFuZDogY29tbWFuZCwKICAgICAgYXJnczogYXJncwogICAgfSk7CgogICAgcmV0dXJuIHRoaXM7CiAgfTsKfTsKCmZvciAodmFyIF9pNiA9IDA7IF9pNiA8IF9hcnIubGVuZ3RoOyBfaTYrKykgewogIF9sb29wKCk7Cn0KCnZhciBTdGFuZGFyZE5hbWVzID0gWycubm90ZGVmJywgJy5udWxsJywgJ25vbm1hcmtpbmdyZXR1cm4nLCAnc3BhY2UnLCAnZXhjbGFtJywgJ3F1b3RlZGJsJywgJ251bWJlcnNpZ24nLCAnZG9sbGFyJywgJ3BlcmNlbnQnLCAnYW1wZXJzYW5kJywgJ3F1b3Rlc2luZ2xlJywgJ3BhcmVubGVmdCcsICdwYXJlbnJpZ2h0JywgJ2FzdGVyaXNrJywgJ3BsdXMnLCAnY29tbWEnLCAnaHlwaGVuJywgJ3BlcmlvZCcsICdzbGFzaCcsICd6ZXJvJywgJ29uZScsICd0d28nLCAndGhyZWUnLCAnZm91cicsICdmaXZlJywgJ3NpeCcsICdzZXZlbicsICdlaWdodCcsICduaW5lJywgJ2NvbG9uJywgJ3NlbWljb2xvbicsICdsZXNzJywgJ2VxdWFsJywgJ2dyZWF0ZXInLCAncXVlc3Rpb24nLCAnYXQnLCAnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnLCAnRycsICdIJywgJ0knLCAnSicsICdLJywgJ0wnLCAnTScsICdOJywgJ08nLCAnUCcsICdRJywgJ1InLCAnUycsICdUJywgJ1UnLCAnVicsICdXJywgJ1gnLCAnWScsICdaJywgJ2JyYWNrZXRsZWZ0JywgJ2JhY2tzbGFzaCcsICdicmFja2V0cmlnaHQnLCAnYXNjaWljaXJjdW0nLCAndW5kZXJzY29yZScsICdncmF2ZScsICdhJywgJ2InLCAnYycsICdkJywgJ2UnLCAnZicsICdnJywgJ2gnLCAnaScsICdqJywgJ2snLCAnbCcsICdtJywgJ24nLCAnbycsICdwJywgJ3EnLCAncicsICdzJywgJ3QnLCAndScsICd2JywgJ3cnLCAneCcsICd5JywgJ3onLCAnYnJhY2VsZWZ0JywgJ2JhcicsICdicmFjZXJpZ2h0JywgJ2FzY2lpdGlsZGUnLCAnQWRpZXJlc2lzJywgJ0FyaW5nJywgJ0NjZWRpbGxhJywgJ0VhY3V0ZScsICdOdGlsZGUnLCAnT2RpZXJlc2lzJywgJ1VkaWVyZXNpcycsICdhYWN1dGUnLCAnYWdyYXZlJywgJ2FjaXJjdW1mbGV4JywgJ2FkaWVyZXNpcycsICdhdGlsZGUnLCAnYXJpbmcnLCAnY2NlZGlsbGEnLCAnZWFjdXRlJywgJ2VncmF2ZScsICdlY2lyY3VtZmxleCcsICdlZGllcmVzaXMnLCAnaWFjdXRlJywgJ2lncmF2ZScsICdpY2lyY3VtZmxleCcsICdpZGllcmVzaXMnLCAnbnRpbGRlJywgJ29hY3V0ZScsICdvZ3JhdmUnLCAnb2NpcmN1bWZsZXgnLCAnb2RpZXJlc2lzJywgJ290aWxkZScsICd1YWN1dGUnLCAndWdyYXZlJywgJ3VjaXJjdW1mbGV4JywgJ3VkaWVyZXNpcycsICdkYWdnZXInLCAnZGVncmVlJywgJ2NlbnQnLCAnc3RlcmxpbmcnLCAnc2VjdGlvbicsICdidWxsZXQnLCAncGFyYWdyYXBoJywgJ2dlcm1hbmRibHMnLCAncmVnaXN0ZXJlZCcsICdjb3B5cmlnaHQnLCAndHJhZGVtYXJrJywgJ2FjdXRlJywgJ2RpZXJlc2lzJywgJ25vdGVxdWFsJywgJ0FFJywgJ09zbGFzaCcsICdpbmZpbml0eScsICdwbHVzbWludXMnLCAnbGVzc2VxdWFsJywgJ2dyZWF0ZXJlcXVhbCcsICd5ZW4nLCAnbXUnLCAncGFydGlhbGRpZmYnLCAnc3VtbWF0aW9uJywgJ3Byb2R1Y3QnLCAncGknLCAnaW50ZWdyYWwnLCAnb3JkZmVtaW5pbmUnLCAnb3JkbWFzY3VsaW5lJywgJ09tZWdhJywgJ2FlJywgJ29zbGFzaCcsICdxdWVzdGlvbmRvd24nLCAnZXhjbGFtZG93bicsICdsb2dpY2Fsbm90JywgJ3JhZGljYWwnLCAnZmxvcmluJywgJ2FwcHJveGVxdWFsJywgJ0RlbHRhJywgJ2d1aWxsZW1vdGxlZnQnLCAnZ3VpbGxlbW90cmlnaHQnLCAnZWxsaXBzaXMnLCAnbm9uYnJlYWtpbmdzcGFjZScsICdBZ3JhdmUnLCAnQXRpbGRlJywgJ090aWxkZScsICdPRScsICdvZScsICdlbmRhc2gnLCAnZW1kYXNoJywgJ3F1b3RlZGJsbGVmdCcsICdxdW90ZWRibHJpZ2h0JywgJ3F1b3RlbGVmdCcsICdxdW90ZXJpZ2h0JywgJ2RpdmlkZScsICdsb3plbmdlJywgJ3lkaWVyZXNpcycsICdZZGllcmVzaXMnLCAnZnJhY3Rpb24nLCAnY3VycmVuY3knLCAnZ3VpbHNpbmdsbGVmdCcsICdndWlsc2luZ2xyaWdodCcsICdmaScsICdmbCcsICdkYWdnZXJkYmwnLCAncGVyaW9kY2VudGVyZWQnLCAncXVvdGVzaW5nbGJhc2UnLCAncXVvdGVkYmxiYXNlJywgJ3BlcnRob3VzYW5kJywgJ0FjaXJjdW1mbGV4JywgJ0VjaXJjdW1mbGV4JywgJ0FhY3V0ZScsICdFZGllcmVzaXMnLCAnRWdyYXZlJywgJ0lhY3V0ZScsICdJY2lyY3VtZmxleCcsICdJZGllcmVzaXMnLCAnSWdyYXZlJywgJ09hY3V0ZScsICdPY2lyY3VtZmxleCcsICdhcHBsZScsICdPZ3JhdmUnLCAnVWFjdXRlJywgJ1VjaXJjdW1mbGV4JywgJ1VncmF2ZScsICdkb3RsZXNzaScsICdjaXJjdW1mbGV4JywgJ3RpbGRlJywgJ21hY3JvbicsICdicmV2ZScsICdkb3RhY2NlbnQnLCAncmluZycsICdjZWRpbGxhJywgJ2h1bmdhcnVtbGF1dCcsICdvZ29uZWsnLCAnY2Fyb24nLCAnTHNsYXNoJywgJ2xzbGFzaCcsICdTY2Fyb24nLCAnc2Nhcm9uJywgJ1pjYXJvbicsICd6Y2Fyb24nLCAnYnJva2VuYmFyJywgJ0V0aCcsICdldGgnLCAnWWFjdXRlJywgJ3lhY3V0ZScsICdUaG9ybicsICd0aG9ybicsICdtaW51cycsICdtdWx0aXBseScsICdvbmVzdXBlcmlvcicsICd0d29zdXBlcmlvcicsICd0aHJlZXN1cGVyaW9yJywgJ29uZWhhbGYnLCAnb25lcXVhcnRlcicsICd0aHJlZXF1YXJ0ZXJzJywgJ2ZyYW5jJywgJ0dicmV2ZScsICdnYnJldmUnLCAnSWRvdGFjY2VudCcsICdTY2VkaWxsYScsICdzY2VkaWxsYScsICdDYWN1dGUnLCAnY2FjdXRlJywgJ0NjYXJvbicsICdjY2Fyb24nLCAnZGNyb2F0J107Cgp2YXIgX2NsYXNzJDg7CmZ1bmN0aW9uIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IkNCh0YXJnZXQsIHByb3BlcnR5LCBkZWNvcmF0b3JzLCBkZXNjcmlwdG9yLCBjb250ZXh0KSB7CiAgdmFyIGRlc2MgPSB7fTsKICBPYmplY3RbJ2tlJyArICd5cyddKGRlc2NyaXB0b3IpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgewogICAgZGVzY1trZXldID0gZGVzY3JpcHRvcltrZXldOwogIH0pOwogIGRlc2MuZW51bWVyYWJsZSA9ICEhZGVzYy5lbnVtZXJhYmxlOwogIGRlc2MuY29uZmlndXJhYmxlID0gISFkZXNjLmNvbmZpZ3VyYWJsZTsKCiAgaWYgKCd2YWx1ZScgaW4gZGVzYyB8fCBkZXNjLmluaXRpYWxpemVyKSB7CiAgICBkZXNjLndyaXRhYmxlID0gdHJ1ZTsKICB9CgogIGRlc2MgPSBkZWNvcmF0b3JzLnNsaWNlKCkucmV2ZXJzZSgpLnJlZHVjZShmdW5jdGlvbiAoZGVzYywgZGVjb3JhdG9yKSB7CiAgICByZXR1cm4gZGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHksIGRlc2MpIHx8IGRlc2M7CiAgfSwgZGVzYyk7CgogIGlmIChjb250ZXh0ICYmIGRlc2MuaW5pdGlhbGl6ZXIgIT09IHZvaWQgMCkgewogICAgZGVzYy52YWx1ZSA9IGRlc2MuaW5pdGlhbGl6ZXIgPyBkZXNjLmluaXRpYWxpemVyLmNhbGwoY29udGV4dCkgOiB2b2lkIDA7CiAgICBkZXNjLmluaXRpYWxpemVyID0gdW5kZWZpbmVkOwogIH0KCiAgaWYgKGRlc2MuaW5pdGlhbGl6ZXIgPT09IHZvaWQgMCkgewogICAgT2JqZWN0WydkZWZpbmUnICsgJ1Byb3BlcnR5J10odGFyZ2V0LCBwcm9wZXJ0eSwgZGVzYyk7CiAgICBkZXNjID0gbnVsbDsKICB9CgogIHJldHVybiBkZXNjOwp9CgovKioKICogR2x5cGggb2JqZWN0cyByZXByZXNlbnQgYSBnbHlwaCBpbiB0aGUgZm9udC4gVGhleSBoYXZlIHZhcmlvdXMgcHJvcGVydGllcyBmb3IgYWNjZXNzaW5nIG1ldHJpY3MgYW5kCiAqIHRoZSBhY3R1YWwgdmVjdG9yIHBhdGggdGhlIGdseXBoIHJlcHJlc2VudHMsIGFuZCBtZXRob2RzIGZvciByZW5kZXJpbmcgdGhlIGdseXBoIHRvIGEgZ3JhcGhpY3MgY29udGV4dC4KICoKICogWW91IGRvIG5vdCBjcmVhdGUgZ2x5cGggb2JqZWN0cyBkaXJlY3RseS4gVGhleSBhcmUgY3JlYXRlZCBieSB2YXJpb3VzIG1ldGhvZHMgb24gdGhlIGZvbnQgb2JqZWN0LgogKiBUaGVyZSBhcmUgc2V2ZXJhbCBzdWJjbGFzc2VzIG9mIHRoZSBiYXNlIEdseXBoIGNsYXNzIGludGVybmFsbHkgdGhhdCBtYXkgYmUgcmV0dXJuZWQgZGVwZW5kaW5nCiAqIG9uIHRoZSBmb250IGZvcm1hdCwgYnV0IHRoZXkgYWxsIGluaGVyaXQgZnJvbSB0aGlzIGNsYXNzLgogKi8KdmFyIEdseXBoID0gKF9jbGFzcyQ4ID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIEdseXBoKGlkLCBjb2RlUG9pbnRzLCBmb250KSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgR2x5cGgpOwoKICAgIC8qKgogICAgICogVGhlIGdseXBoIGlkIGluIHRoZSBmb250CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICB0aGlzLmlkID0gaWQ7CgogICAgLyoqCiAgICAgKiBBbiBhcnJheSBvZiB1bmljb2RlIGNvZGUgcG9pbnRzIHRoYXQgYXJlIHJlcHJlc2VudGVkIGJ5IHRoaXMgZ2x5cGguCiAgICAgKiBUaGVyZSBjYW4gYmUgbXVsdGlwbGUgY29kZSBwb2ludHMgaW4gdGhlIGNhc2Ugb2YgbGlnYXR1cmVzIGFuZCBvdGhlciBnbHlwaHMKICAgICAqIHRoYXQgcmVwcmVzZW50IG11bHRpcGxlIHZpc3VhbCBjaGFyYWN0ZXJzLgogICAgICogQHR5cGUge251bWJlcltdfQogICAgICovCiAgICB0aGlzLmNvZGVQb2ludHMgPSBjb2RlUG9pbnRzOwogICAgdGhpcy5fZm9udCA9IGZvbnQ7CgogICAgLy8gVE9ETzogZ2V0IHRoaXMgaW5mbyBmcm9tIEdERUYgaWYgYXZhaWxhYmxlCiAgICB0aGlzLmlzTWFyayA9IHRoaXMuY29kZVBvaW50cy5ldmVyeSh1bmljb2RlLmlzTWFyayk7CiAgICB0aGlzLmlzTGlnYXR1cmUgPSB0aGlzLmNvZGVQb2ludHMubGVuZ3RoID4gMTsKICB9CgogIEdseXBoLnByb3RvdHlwZS5fZ2V0UGF0aCA9IGZ1bmN0aW9uIF9nZXRQYXRoKCkgewogICAgcmV0dXJuIG5ldyBQYXRoKCk7CiAgfTsKCiAgR2x5cGgucHJvdG90eXBlLl9nZXRDQm94ID0gZnVuY3Rpb24gX2dldENCb3goKSB7CiAgICByZXR1cm4gdGhpcy5wYXRoLmNib3g7CiAgfTsKCiAgR2x5cGgucHJvdG90eXBlLl9nZXRCQm94ID0gZnVuY3Rpb24gX2dldEJCb3goKSB7CiAgICByZXR1cm4gdGhpcy5wYXRoLmJib3g7CiAgfTsKCiAgR2x5cGgucHJvdG90eXBlLl9nZXRUYWJsZU1ldHJpY3MgPSBmdW5jdGlvbiBfZ2V0VGFibGVNZXRyaWNzKHRhYmxlKSB7CiAgICBpZiAodGhpcy5pZCA8IHRhYmxlLm1ldHJpY3MubGVuZ3RoKSB7CiAgICAgIHJldHVybiB0YWJsZS5tZXRyaWNzLmdldCh0aGlzLmlkKTsKICAgIH0KCiAgICB2YXIgbWV0cmljID0gdGFibGUubWV0cmljcy5nZXQodGFibGUubWV0cmljcy5sZW5ndGggLSAxKTsKICAgIHZhciByZXMgPSB7CiAgICAgIGFkdmFuY2U6IG1ldHJpYyA/IG1ldHJpYy5hZHZhbmNlIDogMCwKICAgICAgYmVhcmluZzogdGFibGUuYmVhcmluZ3MuZ2V0KHRoaXMuaWQgLSB0YWJsZS5tZXRyaWNzLmxlbmd0aCkgfHwgMAogICAgfTsKCiAgICByZXR1cm4gcmVzOwogIH07CgogIEdseXBoLnByb3RvdHlwZS5fZ2V0TWV0cmljcyA9IGZ1bmN0aW9uIF9nZXRNZXRyaWNzKGNib3gpIHsKICAgIGlmICh0aGlzLl9tZXRyaWNzKSB7CiAgICAgIHJldHVybiB0aGlzLl9tZXRyaWNzOwogICAgfQoKICAgIHZhciBfZ2V0VGFibGVNZXRyaWNzMiA9IHRoaXMuX2dldFRhYmxlTWV0cmljcyh0aGlzLl9mb250LmhtdHgpLAogICAgICAgIGFkdmFuY2VXaWR0aCA9IF9nZXRUYWJsZU1ldHJpY3MyLmFkdmFuY2UsCiAgICAgICAgbGVmdEJlYXJpbmcgPSBfZ2V0VGFibGVNZXRyaWNzMi5iZWFyaW5nOwoKICAgIC8vIEZvciB2ZXJ0aWNhbCBtZXRyaWNzLCB1c2Ugdm10eCBpZiBhdmFpbGFibGUsIG9yIGZhbGwgYmFjayB0byBnbG9iYWwgZGF0YSBmcm9tIE9TLzIgb3IgaGhlYQoKCiAgICBpZiAodGhpcy5fZm9udC52bXR4KSB7CiAgICAgIHZhciBfZ2V0VGFibGVNZXRyaWNzMyA9IHRoaXMuX2dldFRhYmxlTWV0cmljcyh0aGlzLl9mb250LnZtdHgpLAogICAgICAgICAgYWR2YW5jZUhlaWdodCA9IF9nZXRUYWJsZU1ldHJpY3MzLmFkdmFuY2UsCiAgICAgICAgICB0b3BCZWFyaW5nID0gX2dldFRhYmxlTWV0cmljczMuYmVhcmluZzsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBvczIgPSB2b2lkIDA7CiAgICAgIGlmICh0eXBlb2YgY2JveCA9PT0gJ3VuZGVmaW5lZCcgfHwgY2JveCA9PT0gbnVsbCkgewogICAgICAgIGNib3ggPSB0aGlzLmNib3g7CiAgICAgIH0KCiAgICAgIGlmICgob3MyID0gdGhpcy5fZm9udFsnT1MvMiddKSAmJiBvczIudmVyc2lvbiA+IDApIHsKICAgICAgICB2YXIgYWR2YW5jZUhlaWdodCA9IE1hdGguYWJzKG9zMi50eXBvQXNjZW5kZXIgLSBvczIudHlwb0Rlc2NlbmRlcik7CiAgICAgICAgdmFyIHRvcEJlYXJpbmcgPSBvczIudHlwb0FzY2VuZGVyIC0gY2JveC5tYXhZOwogICAgICB9IGVsc2UgewogICAgICAgIHZhciBoaGVhID0gdGhpcy5fZm9udC5oaGVhOwoKICAgICAgICB2YXIgYWR2YW5jZUhlaWdodCA9IE1hdGguYWJzKGhoZWEuYXNjZW50IC0gaGhlYS5kZXNjZW50KTsKICAgICAgICB2YXIgdG9wQmVhcmluZyA9IGhoZWEuYXNjZW50IC0gY2JveC5tYXhZOwogICAgICB9CiAgICB9CgogICAgaWYgKHRoaXMuX2ZvbnQuX3ZhcmlhdGlvblByb2Nlc3NvciAmJiB0aGlzLl9mb250LkhWQVIpIHsKICAgICAgYWR2YW5jZVdpZHRoICs9IHRoaXMuX2ZvbnQuX3ZhcmlhdGlvblByb2Nlc3Nvci5nZXRBZHZhbmNlQWRqdXN0bWVudCh0aGlzLmlkLCB0aGlzLl9mb250LkhWQVIpOwogICAgfQoKICAgIHJldHVybiB0aGlzLl9tZXRyaWNzID0geyBhZHZhbmNlV2lkdGg6IGFkdmFuY2VXaWR0aCwgYWR2YW5jZUhlaWdodDogYWR2YW5jZUhlaWdodCwgbGVmdEJlYXJpbmc6IGxlZnRCZWFyaW5nLCB0b3BCZWFyaW5nOiB0b3BCZWFyaW5nIH07CiAgfTsKCiAgLyoqCiAgICogVGhlIGdseXBo4oCZcyBjb250cm9sIGJveC4KICAgKiBUaGlzIGlzIG9mdGVuIHRoZSBzYW1lIGFzIHRoZSBib3VuZGluZyBib3gsIGJ1dCBpcyBmYXN0ZXIgdG8gY29tcHV0ZS4KICAgKiBCZWNhdXNlIG9mIHRoZSB3YXkgYmV6aWVyIGN1cnZlcyBhcmUgZGVmaW5lZCwgc29tZSBvZiB0aGUgY29udHJvbCBwb2ludHMKICAgKiBjYW4gYmUgb3V0c2lkZSBvZiB0aGUgYm91bmRpbmcgYm94LiBXaGVyZSBgYmJveGAgdGFrZXMgdGhpcyBpbnRvIGFjY291bnQsCiAgICogYGNib3hgIGRvZXMgbm90LiBUaHVzLCBjYm94IGlzIGxlc3MgYWNjdXJhdGUsIGJ1dCBmYXN0ZXIgdG8gY29tcHV0ZS4KICAgKiBTZWUgW2hlcmVdKGh0dHA6Ly93d3cuZnJlZXR5cGUub3JnL2ZyZWV0eXBlMi9kb2NzL2dseXBocy9nbHlwaHMtNi5odG1sI3NlY3Rpb24tMikKICAgKiBmb3IgYSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uLgogICAqCiAgICogQHR5cGUge0JCb3h9CiAgICovCgoKICAvKioKICAgKiBSZXR1cm5zIGEgcGF0aCBzY2FsZWQgdG8gdGhlIGdpdmVuIGZvbnQgc2l6ZS4KICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQogICAqIEByZXR1cm4ge1BhdGh9CiAgICovCiAgR2x5cGgucHJvdG90eXBlLmdldFNjYWxlZFBhdGggPSBmdW5jdGlvbiBnZXRTY2FsZWRQYXRoKHNpemUpIHsKICAgIHZhciBzY2FsZSA9IDEgLyB0aGlzLl9mb250LnVuaXRzUGVyRW0gKiBzaXplOwogICAgcmV0dXJuIHRoaXMucGF0aC5zY2FsZShzY2FsZSk7CiAgfTsKCiAgLyoqCiAgICogVGhlIGdseXBoJ3MgYWR2YW5jZSB3aWR0aC4KICAgKiBAdHlwZSB7bnVtYmVyfQogICAqLwoKCiAgR2x5cGgucHJvdG90eXBlLl9nZXROYW1lID0gZnVuY3Rpb24gX2dldE5hbWUoKSB7CiAgICB2YXIgcG9zdCA9IHRoaXMuX2ZvbnQucG9zdDsKCiAgICBpZiAoIXBvc3QpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgc3dpdGNoIChwb3N0LnZlcnNpb24pIHsKICAgICAgY2FzZSAxOgogICAgICAgIHJldHVybiBTdGFuZGFyZE5hbWVzW3RoaXMuaWRdOwoKICAgICAgY2FzZSAyOgogICAgICAgIHZhciBpZCA9IHBvc3QuZ2x5cGhOYW1lSW5kZXhbdGhpcy5pZF07CiAgICAgICAgaWYgKGlkIDwgU3RhbmRhcmROYW1lcy5sZW5ndGgpIHsKICAgICAgICAgIHJldHVybiBTdGFuZGFyZE5hbWVzW2lkXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwb3N0Lm5hbWVzW2lkIC0gU3RhbmRhcmROYW1lcy5sZW5ndGhdOwoKICAgICAgY2FzZSAyLjU6CiAgICAgICAgcmV0dXJuIFN0YW5kYXJkTmFtZXNbdGhpcy5pZCArIHBvc3Qub2Zmc2V0c1t0aGlzLmlkXV07CgogICAgICBjYXNlIDQ6CiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocG9zdC5tYXBbdGhpcy5pZF0pOwogICAgfQogIH07CgogIC8qKgogICAqIFRoZSBnbHlwaCdzIG5hbWUKICAgKiBAdHlwZSB7c3RyaW5nfQogICAqLwoKCiAgLyoqCiAgICogUmVuZGVycyB0aGUgZ2x5cGggdG8gdGhlIGdpdmVuIGdyYXBoaWNzIGNvbnRleHQsIGF0IHRoZSBzcGVjaWZpZWQgZm9udCBzaXplLgogICAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJkfSBjdHgKICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQogICAqLwogIEdseXBoLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoY3R4LCBzaXplKSB7CiAgICBjdHguc2F2ZSgpOwoKICAgIHZhciBzY2FsZSA9IDEgLyB0aGlzLl9mb250LmhlYWQudW5pdHNQZXJFbSAqIHNpemU7CiAgICBjdHguc2NhbGUoc2NhbGUsIHNjYWxlKTsKCiAgICB2YXIgZm4gPSB0aGlzLnBhdGgudG9GdW5jdGlvbigpOwogICAgZm4oY3R4KTsKICAgIGN0eC5maWxsKCk7CgogICAgY3R4LnJlc3RvcmUoKTsKICB9OwoKICBfY3JlYXRlQ2xhc3MoR2x5cGgsIFt7CiAgICBrZXk6ICdjYm94JywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICByZXR1cm4gdGhpcy5fZ2V0Q0JveCgpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGdseXBo4oCZcyBib3VuZGluZyBib3gsIGkuZS4gdGhlIHJlY3RhbmdsZSB0aGF0IGVuY2xvc2VzIHRoZQogICAgICogZ2x5cGggb3V0bGluZSBhcyB0aWdodGx5IGFzIHBvc3NpYmxlLgogICAgICogQHR5cGUge0JCb3h9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnYmJveCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuX2dldEJCb3goKTsKICAgIH0KCiAgICAvKioKICAgICAqIEEgdmVjdG9yIFBhdGggb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgZ2x5cGggb3V0bGluZS4KICAgICAqIEB0eXBlIHtQYXRofQogICAgICovCgogIH0sIHsKICAgIGtleTogJ3BhdGgnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIC8vIENhY2hlIHRoZSBwYXRoIHNvIHdlIG9ubHkgZGVjb2RlIGl0IG9uY2UKICAgICAgLy8gRGVjb2RpbmcgaXMgYWN0dWFsbHkgcGVyZm9ybWVkIGJ5IHN1YmNsYXNzZXMKICAgICAgcmV0dXJuIHRoaXMuX2dldFBhdGgoKTsKICAgIH0KICB9LCB7CiAgICBrZXk6ICdhZHZhbmNlV2lkdGgnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLl9nZXRNZXRyaWNzKCkuYWR2YW5jZVdpZHRoOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGdseXBoJ3MgYWR2YW5jZSBoZWlnaHQuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCgogIH0sIHsKICAgIGtleTogJ2FkdmFuY2VIZWlnaHQnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLl9nZXRNZXRyaWNzKCkuYWR2YW5jZUhlaWdodDsKICAgIH0KICB9LCB7CiAgICBrZXk6ICdsaWdhdHVyZUNhcmV0UG9zaXRpb25zJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge30KICB9LCB7CiAgICBrZXk6ICduYW1lJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICByZXR1cm4gdGhpcy5fZ2V0TmFtZSgpOwogICAgfQogIH1dKTsKCiAgcmV0dXJuIEdseXBoOwp9KCksIChfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yJDQoX2NsYXNzJDgucHJvdG90eXBlLCAnY2JveCcsIFtjYWNoZV0sIF9PYmplY3QkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9jbGFzcyQ4LnByb3RvdHlwZSwgJ2Nib3gnKSwgX2NsYXNzJDgucHJvdG90eXBlKSwgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciQ0KF9jbGFzcyQ4LnByb3RvdHlwZSwgJ2Jib3gnLCBbY2FjaGVdLCBfT2JqZWN0JGdldE93blByb3BlcnR5RGVzY3JpcHRvcihfY2xhc3MkOC5wcm90b3R5cGUsICdiYm94JyksIF9jbGFzcyQ4LnByb3RvdHlwZSksIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IkNChfY2xhc3MkOC5wcm90b3R5cGUsICdwYXRoJywgW2NhY2hlXSwgX09iamVjdCRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzJDgucHJvdG90eXBlLCAncGF0aCcpLCBfY2xhc3MkOC5wcm90b3R5cGUpLCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yJDQoX2NsYXNzJDgucHJvdG90eXBlLCAnYWR2YW5jZVdpZHRoJywgW2NhY2hlXSwgX09iamVjdCRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzJDgucHJvdG90eXBlLCAnYWR2YW5jZVdpZHRoJyksIF9jbGFzcyQ4LnByb3RvdHlwZSksIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IkNChfY2xhc3MkOC5wcm90b3R5cGUsICdhZHZhbmNlSGVpZ2h0JywgW2NhY2hlXSwgX09iamVjdCRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzJDgucHJvdG90eXBlLCAnYWR2YW5jZUhlaWdodCcpLCBfY2xhc3MkOC5wcm90b3R5cGUpLCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yJDQoX2NsYXNzJDgucHJvdG90eXBlLCAnbmFtZScsIFtjYWNoZV0sIF9PYmplY3QkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9jbGFzcyQ4LnByb3RvdHlwZSwgJ25hbWUnKSwgX2NsYXNzJDgucHJvdG90eXBlKSksIF9jbGFzcyQ4KTsKCi8vIFRoZSBoZWFkZXIgZm9yIGJvdGggc2ltcGxlIGFuZCBjb21wb3NpdGUgZ2x5cGhzCnZhciBHbHlmSGVhZGVyID0gbmV3IHIuU3RydWN0KHsKICBudW1iZXJPZkNvbnRvdXJzOiByLmludDE2LCAvLyBpZiBuZWdhdGl2ZSwgdGhpcyBpcyBhIGNvbXBvc2l0ZSBnbHlwaAogIHhNaW46IHIuaW50MTYsCiAgeU1pbjogci5pbnQxNiwKICB4TWF4OiByLmludDE2LAogIHlNYXg6IHIuaW50MTYKfSk7CgovLyBGbGFncyBmb3Igc2ltcGxlIGdseXBocwp2YXIgT05fQ1VSVkUgPSAxIDw8IDA7CnZhciBYX1NIT1JUX1ZFQ1RPUiA9IDEgPDwgMTsKdmFyIFlfU0hPUlRfVkVDVE9SID0gMSA8PCAyOwp2YXIgUkVQRUFUID0gMSA8PCAzOwp2YXIgU0FNRV9YID0gMSA8PCA0Owp2YXIgU0FNRV9ZID0gMSA8PCA1OwoKLy8gRmxhZ3MgZm9yIGNvbXBvc2l0ZSBnbHlwaHMKdmFyIEFSR18xX0FORF8yX0FSRV9XT1JEUyA9IDEgPDwgMDsKdmFyIFdFX0hBVkVfQV9TQ0FMRSA9IDEgPDwgMzsKdmFyIE1PUkVfQ09NUE9ORU5UUyA9IDEgPDwgNTsKdmFyIFdFX0hBVkVfQU5fWF9BTkRfWV9TQ0FMRSA9IDEgPDwgNjsKdmFyIFdFX0hBVkVfQV9UV09fQllfVFdPID0gMSA8PCA3Owp2YXIgV0VfSEFWRV9JTlNUUlVDVElPTlMgPSAxIDw8IDg7Ci8vIFJlcHJlc2VudHMgYSBwb2ludCBpbiBhIHNpbXBsZSBnbHlwaAp2YXIgUG9pbnQgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gUG9pbnQob25DdXJ2ZSwgZW5kQ29udG91cikgewogICAgdmFyIHggPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDA7CiAgICB2YXIgeSA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogMDsKCiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUG9pbnQpOwoKICAgIHRoaXMub25DdXJ2ZSA9IG9uQ3VydmU7CiAgICB0aGlzLmVuZENvbnRvdXIgPSBlbmRDb250b3VyOwogICAgdGhpcy54ID0geDsKICAgIHRoaXMueSA9IHk7CiAgfQoKICBQb2ludC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkoKSB7CiAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMub25DdXJ2ZSwgdGhpcy5lbmRDb250b3VyLCB0aGlzLngsIHRoaXMueSk7CiAgfTsKCiAgcmV0dXJuIFBvaW50Owp9KCk7CgovLyBSZXByZXNlbnRzIGEgY29tcG9uZW50IGluIGEgY29tcG9zaXRlIGdseXBoCgp2YXIgQ29tcG9uZW50ID0gZnVuY3Rpb24gQ29tcG9uZW50KGdseXBoSUQsIGR4LCBkeSkgewogIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb21wb25lbnQpOwoKICB0aGlzLmdseXBoSUQgPSBnbHlwaElEOwogIHRoaXMuZHggPSBkeDsKICB0aGlzLmR5ID0gZHk7CiAgdGhpcy5wb3MgPSAwOwogIHRoaXMuc2NhbGVYID0gdGhpcy5zY2FsZVkgPSAxOwogIHRoaXMuc2NhbGUwMSA9IHRoaXMuc2NhbGUxMCA9IDA7Cn07CgovKioKICogUmVwcmVzZW50cyBhIFRydWVUeXBlIGdseXBoLgogKi8KCgp2YXIgVFRGR2x5cGggPSBmdW5jdGlvbiAoX0dseXBoKSB7CiAgX2luaGVyaXRzKFRURkdseXBoLCBfR2x5cGgpOwoKICBmdW5jdGlvbiBUVEZHbHlwaCgpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUVEZHbHlwaCk7CgogICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9HbHlwaC5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTsKICB9CgogIC8vIFBhcnNlcyBqdXN0IHRoZSBnbHlwaCBoZWFkZXIgYW5kIHJldHVybnMgdGhlIGJvdW5kaW5nIGJveAogIFRURkdseXBoLnByb3RvdHlwZS5fZ2V0Q0JveCA9IGZ1bmN0aW9uIF9nZXRDQm94KGludGVybmFsKSB7CiAgICAvLyBXZSBuZWVkIHRvIGRlY29kZSB0aGUgZ2x5cGggaWYgdmFyaWF0aW9uIHByb2Nlc3NpbmcgaXMgcmVxdWVzdGVkLAogICAgLy8gc28gaXQncyBlYXNpZXIganVzdCB0byByZWNvbXB1dGUgdGhlIHBhdGgncyBjYm94IGFmdGVyIGRlY29kaW5nLgogICAgaWYgKHRoaXMuX2ZvbnQuX3ZhcmlhdGlvblByb2Nlc3NvciAmJiAhaW50ZXJuYWwpIHsKICAgICAgcmV0dXJuIHRoaXMucGF0aC5jYm94OwogICAgfQoKICAgIHZhciBzdHJlYW0gPSB0aGlzLl9mb250Ll9nZXRUYWJsZVN0cmVhbSgnZ2x5ZicpOwogICAgc3RyZWFtLnBvcyArPSB0aGlzLl9mb250LmxvY2Eub2Zmc2V0c1t0aGlzLmlkXTsKICAgIHZhciBnbHlwaCA9IEdseWZIZWFkZXIuZGVjb2RlKHN0cmVhbSk7CgogICAgdmFyIGNib3ggPSBuZXcgQkJveChnbHlwaC54TWluLCBnbHlwaC55TWluLCBnbHlwaC54TWF4LCBnbHlwaC55TWF4KTsKICAgIHJldHVybiBfT2JqZWN0JGZyZWV6ZShjYm94KTsKICB9OwoKICAvLyBQYXJzZXMgYSBzaW5nbGUgZ2x5cGggY29vcmRpbmF0ZQoKCiAgVFRGR2x5cGgucHJvdG90eXBlLl9wYXJzZUdseXBoQ29vcmQgPSBmdW5jdGlvbiBfcGFyc2VHbHlwaENvb3JkKHN0cmVhbSwgcHJldiwgc2hvcnQsIHNhbWUpIHsKICAgIGlmIChzaG9ydCkgewogICAgICB2YXIgdmFsID0gc3RyZWFtLnJlYWRVSW50OCgpOwogICAgICBpZiAoIXNhbWUpIHsKICAgICAgICB2YWwgPSAtdmFsOwogICAgICB9CgogICAgICB2YWwgKz0gcHJldjsKICAgIH0gZWxzZSB7CiAgICAgIGlmIChzYW1lKSB7CiAgICAgICAgdmFyIHZhbCA9IHByZXY7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIHZhbCA9IHByZXYgKyBzdHJlYW0ucmVhZEludDE2QkUoKTsKICAgICAgfQogICAgfQoKICAgIHJldHVybiB2YWw7CiAgfTsKCiAgLy8gRGVjb2RlcyB0aGUgZ2x5cGggZGF0YSBpbnRvIHBvaW50cyBmb3Igc2ltcGxlIGdseXBocywKICAvLyBvciBjb21wb25lbnRzIGZvciBjb21wb3NpdGUgZ2x5cGhzCgoKICBUVEZHbHlwaC5wcm90b3R5cGUuX2RlY29kZSA9IGZ1bmN0aW9uIF9kZWNvZGUoKSB7CiAgICB2YXIgZ2x5ZlBvcyA9IHRoaXMuX2ZvbnQubG9jYS5vZmZzZXRzW3RoaXMuaWRdOwogICAgdmFyIG5leHRQb3MgPSB0aGlzLl9mb250LmxvY2Eub2Zmc2V0c1t0aGlzLmlkICsgMV07CgogICAgLy8gTm90aGluZyB0byBkbyBpZiB0aGVyZSBpcyBubyBkYXRhIGZvciB0aGlzIGdseXBoCiAgICBpZiAoZ2x5ZlBvcyA9PT0gbmV4dFBvcykgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICB2YXIgc3RyZWFtID0gdGhpcy5fZm9udC5fZ2V0VGFibGVTdHJlYW0oJ2dseWYnKTsKICAgIHN0cmVhbS5wb3MgKz0gZ2x5ZlBvczsKICAgIHZhciBzdGFydFBvcyA9IHN0cmVhbS5wb3M7CgogICAgdmFyIGdseXBoID0gR2x5ZkhlYWRlci5kZWNvZGUoc3RyZWFtKTsKCiAgICBpZiAoZ2x5cGgubnVtYmVyT2ZDb250b3VycyA+IDApIHsKICAgICAgdGhpcy5fZGVjb2RlU2ltcGxlKGdseXBoLCBzdHJlYW0pOwogICAgfSBlbHNlIGlmIChnbHlwaC5udW1iZXJPZkNvbnRvdXJzIDwgMCkgewogICAgICB0aGlzLl9kZWNvZGVDb21wb3NpdGUoZ2x5cGgsIHN0cmVhbSwgc3RhcnRQb3MpOwogICAgfQoKICAgIHJldHVybiBnbHlwaDsKICB9OwoKICBUVEZHbHlwaC5wcm90b3R5cGUuX2RlY29kZVNpbXBsZSA9IGZ1bmN0aW9uIF9kZWNvZGVTaW1wbGUoZ2x5cGgsIHN0cmVhbSkgewogICAgLy8gdGhpcyBpcyBhIHNpbXBsZSBnbHlwaAogICAgZ2x5cGgucG9pbnRzID0gW107CgogICAgdmFyIGVuZFB0c09mQ29udG91cnMgPSBuZXcgci5BcnJheShyLnVpbnQxNiwgZ2x5cGgubnVtYmVyT2ZDb250b3VycykuZGVjb2RlKHN0cmVhbSk7CiAgICBnbHlwaC5pbnN0cnVjdGlvbnMgPSBuZXcgci5BcnJheShyLnVpbnQ4LCByLnVpbnQxNikuZGVjb2RlKHN0cmVhbSk7CgogICAgdmFyIGZsYWdzID0gW107CiAgICB2YXIgbnVtQ29vcmRzID0gZW5kUHRzT2ZDb250b3Vyc1tlbmRQdHNPZkNvbnRvdXJzLmxlbmd0aCAtIDFdICsgMTsKCiAgICB3aGlsZSAoZmxhZ3MubGVuZ3RoIDwgbnVtQ29vcmRzKSB7CiAgICAgIHZhciBmbGFnID0gc3RyZWFtLnJlYWRVSW50OCgpOwogICAgICBmbGFncy5wdXNoKGZsYWcpOwoKICAgICAgLy8gY2hlY2sgZm9yIHJlcGVhdCBmbGFnCiAgICAgIGlmIChmbGFnICYgUkVQRUFUKSB7CiAgICAgICAgdmFyIGNvdW50ID0gc3RyZWFtLnJlYWRVSW50OCgpOwogICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY291bnQ7IGorKykgewogICAgICAgICAgZmxhZ3MucHVzaChmbGFnKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZsYWdzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBmbGFnID0gZmxhZ3NbaV07CiAgICAgIHZhciBwb2ludCA9IG5ldyBQb2ludCghIShmbGFnICYgT05fQ1VSVkUpLCBlbmRQdHNPZkNvbnRvdXJzLmluZGV4T2YoaSkgPj0gMCwgMCwgMCk7CiAgICAgIGdseXBoLnBvaW50cy5wdXNoKHBvaW50KTsKICAgIH0KCiAgICB2YXIgcHggPSAwOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmbGFncy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgZmxhZyA9IGZsYWdzW2ldOwogICAgICBnbHlwaC5wb2ludHNbaV0ueCA9IHB4ID0gdGhpcy5fcGFyc2VHbHlwaENvb3JkKHN0cmVhbSwgcHgsIGZsYWcgJiBYX1NIT1JUX1ZFQ1RPUiwgZmxhZyAmIFNBTUVfWCk7CiAgICB9CgogICAgdmFyIHB5ID0gMDsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmxhZ3MubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGZsYWcgPSBmbGFnc1tpXTsKICAgICAgZ2x5cGgucG9pbnRzW2ldLnkgPSBweSA9IHRoaXMuX3BhcnNlR2x5cGhDb29yZChzdHJlYW0sIHB5LCBmbGFnICYgWV9TSE9SVF9WRUNUT1IsIGZsYWcgJiBTQU1FX1kpOwogICAgfQoKICAgIGlmICh0aGlzLl9mb250Ll92YXJpYXRpb25Qcm9jZXNzb3IpIHsKICAgICAgdmFyIHBvaW50cyA9IGdseXBoLnBvaW50cy5zbGljZSgpOwogICAgICBwb2ludHMucHVzaC5hcHBseShwb2ludHMsIHRoaXMuX2dldFBoYW50b21Qb2ludHMoZ2x5cGgpKTsKCiAgICAgIHRoaXMuX2ZvbnQuX3ZhcmlhdGlvblByb2Nlc3Nvci50cmFuc2Zvcm1Qb2ludHModGhpcy5pZCwgcG9pbnRzKTsKICAgICAgZ2x5cGgucGhhbnRvbVBvaW50cyA9IHBvaW50cy5zbGljZSgtNCk7CiAgICB9CgogICAgcmV0dXJuOwogIH07CgogIFRURkdseXBoLnByb3RvdHlwZS5fZGVjb2RlQ29tcG9zaXRlID0gZnVuY3Rpb24gX2RlY29kZUNvbXBvc2l0ZShnbHlwaCwgc3RyZWFtKSB7CiAgICB2YXIgb2Zmc2V0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAwOwoKICAgIC8vIHRoaXMgaXMgYSBjb21wb3NpdGUgZ2x5cGgKICAgIGdseXBoLmNvbXBvbmVudHMgPSBbXTsKICAgIHZhciBoYXZlSW5zdHJ1Y3Rpb25zID0gZmFsc2U7CiAgICB2YXIgZmxhZ3MgPSBNT1JFX0NPTVBPTkVOVFM7CgogICAgd2hpbGUgKGZsYWdzICYgTU9SRV9DT01QT05FTlRTKSB7CiAgICAgIGZsYWdzID0gc3RyZWFtLnJlYWRVSW50MTZCRSgpOwogICAgICB2YXIgZ1BvcyA9IHN0cmVhbS5wb3MgLSBvZmZzZXQ7CiAgICAgIHZhciBnbHlwaElEID0gc3RyZWFtLnJlYWRVSW50MTZCRSgpOwogICAgICBpZiAoIWhhdmVJbnN0cnVjdGlvbnMpIHsKICAgICAgICBoYXZlSW5zdHJ1Y3Rpb25zID0gKGZsYWdzICYgV0VfSEFWRV9JTlNUUlVDVElPTlMpICE9PSAwOwogICAgICB9CgogICAgICBpZiAoZmxhZ3MgJiBBUkdfMV9BTkRfMl9BUkVfV09SRFMpIHsKICAgICAgICB2YXIgZHggPSBzdHJlYW0ucmVhZEludDE2QkUoKTsKICAgICAgICB2YXIgZHkgPSBzdHJlYW0ucmVhZEludDE2QkUoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgZHggPSBzdHJlYW0ucmVhZEludDgoKTsKICAgICAgICB2YXIgZHkgPSBzdHJlYW0ucmVhZEludDgoKTsKICAgICAgfQoKICAgICAgdmFyIGNvbXBvbmVudCA9IG5ldyBDb21wb25lbnQoZ2x5cGhJRCwgZHgsIGR5KTsKICAgICAgY29tcG9uZW50LnBvcyA9IGdQb3M7CgogICAgICBpZiAoZmxhZ3MgJiBXRV9IQVZFX0FfU0NBTEUpIHsKICAgICAgICAvLyBmaXhlZCBudW1iZXIgd2l0aCAxNCBiaXRzIG9mIGZyYWN0aW9uCiAgICAgICAgY29tcG9uZW50LnNjYWxlWCA9IGNvbXBvbmVudC5zY2FsZVkgPSAoc3RyZWFtLnJlYWRVSW50OCgpIDw8IDI0IHwgc3RyZWFtLnJlYWRVSW50OCgpIDw8IDE2KSAvIDEwNzM3NDE4MjQ7CiAgICAgIH0gZWxzZSBpZiAoZmxhZ3MgJiBXRV9IQVZFX0FOX1hfQU5EX1lfU0NBTEUpIHsKICAgICAgICBjb21wb25lbnQuc2NhbGVYID0gKHN0cmVhbS5yZWFkVUludDgoKSA8PCAyNCB8IHN0cmVhbS5yZWFkVUludDgoKSA8PCAxNikgLyAxMDczNzQxODI0OwogICAgICAgIGNvbXBvbmVudC5zY2FsZVkgPSAoc3RyZWFtLnJlYWRVSW50OCgpIDw8IDI0IHwgc3RyZWFtLnJlYWRVSW50OCgpIDw8IDE2KSAvIDEwNzM3NDE4MjQ7CiAgICAgIH0gZWxzZSBpZiAoZmxhZ3MgJiBXRV9IQVZFX0FfVFdPX0JZX1RXTykgewogICAgICAgIGNvbXBvbmVudC5zY2FsZVggPSAoc3RyZWFtLnJlYWRVSW50OCgpIDw8IDI0IHwgc3RyZWFtLnJlYWRVSW50OCgpIDw8IDE2KSAvIDEwNzM3NDE4MjQ7CiAgICAgICAgY29tcG9uZW50LnNjYWxlMDEgPSAoc3RyZWFtLnJlYWRVSW50OCgpIDw8IDI0IHwgc3RyZWFtLnJlYWRVSW50OCgpIDw8IDE2KSAvIDEwNzM3NDE4MjQ7CiAgICAgICAgY29tcG9uZW50LnNjYWxlMTAgPSAoc3RyZWFtLnJlYWRVSW50OCgpIDw8IDI0IHwgc3RyZWFtLnJlYWRVSW50OCgpIDw8IDE2KSAvIDEwNzM3NDE4MjQ7CiAgICAgICAgY29tcG9uZW50LnNjYWxlWSA9IChzdHJlYW0ucmVhZFVJbnQ4KCkgPDwgMjQgfCBzdHJlYW0ucmVhZFVJbnQ4KCkgPDwgMTYpIC8gMTA3Mzc0MTgyNDsKICAgICAgfQoKICAgICAgZ2x5cGguY29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7CiAgICB9CgogICAgaWYgKHRoaXMuX2ZvbnQuX3ZhcmlhdGlvblByb2Nlc3NvcikgewogICAgICB2YXIgcG9pbnRzID0gW107CiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZ2x5cGguY29tcG9uZW50cy5sZW5ndGg7IGorKykgewogICAgICAgIHZhciBjb21wb25lbnQgPSBnbHlwaC5jb21wb25lbnRzW2pdOwogICAgICAgIHBvaW50cy5wdXNoKG5ldyBQb2ludCh0cnVlLCB0cnVlLCBjb21wb25lbnQuZHgsIGNvbXBvbmVudC5keSkpOwogICAgICB9CgogICAgICBwb2ludHMucHVzaC5hcHBseShwb2ludHMsIHRoaXMuX2dldFBoYW50b21Qb2ludHMoZ2x5cGgpKTsKCiAgICAgIHRoaXMuX2ZvbnQuX3ZhcmlhdGlvblByb2Nlc3Nvci50cmFuc2Zvcm1Qb2ludHModGhpcy5pZCwgcG9pbnRzKTsKICAgICAgZ2x5cGgucGhhbnRvbVBvaW50cyA9IHBvaW50cy5zcGxpY2UoLTQsIDQpOwoKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgcG9pbnQgPSBwb2ludHNbaV07CiAgICAgICAgZ2x5cGguY29tcG9uZW50c1tpXS5keCA9IHBvaW50Lng7CiAgICAgICAgZ2x5cGguY29tcG9uZW50c1tpXS5keSA9IHBvaW50Lnk7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaGF2ZUluc3RydWN0aW9uczsKICB9OwoKICBUVEZHbHlwaC5wcm90b3R5cGUuX2dldFBoYW50b21Qb2ludHMgPSBmdW5jdGlvbiBfZ2V0UGhhbnRvbVBvaW50cyhnbHlwaCkgewogICAgdmFyIGNib3ggPSB0aGlzLl9nZXRDQm94KHRydWUpOwogICAgaWYgKHRoaXMuX21ldHJpY3MgPT0gbnVsbCkgewogICAgICB0aGlzLl9tZXRyaWNzID0gR2x5cGgucHJvdG90eXBlLl9nZXRNZXRyaWNzLmNhbGwodGhpcywgY2JveCk7CiAgICB9CgogICAgdmFyIF9tZXRyaWNzID0gdGhpcy5fbWV0cmljcywKICAgICAgICBhZHZhbmNlV2lkdGggPSBfbWV0cmljcy5hZHZhbmNlV2lkdGgsCiAgICAgICAgYWR2YW5jZUhlaWdodCA9IF9tZXRyaWNzLmFkdmFuY2VIZWlnaHQsCiAgICAgICAgbGVmdEJlYXJpbmcgPSBfbWV0cmljcy5sZWZ0QmVhcmluZywKICAgICAgICB0b3BCZWFyaW5nID0gX21ldHJpY3MudG9wQmVhcmluZzsKCgogICAgcmV0dXJuIFtuZXcgUG9pbnQoZmFsc2UsIHRydWUsIGdseXBoLnhNaW4gLSBsZWZ0QmVhcmluZywgMCksIG5ldyBQb2ludChmYWxzZSwgdHJ1ZSwgZ2x5cGgueE1pbiAtIGxlZnRCZWFyaW5nICsgYWR2YW5jZVdpZHRoLCAwKSwgbmV3IFBvaW50KGZhbHNlLCB0cnVlLCAwLCBnbHlwaC55TWF4ICsgdG9wQmVhcmluZyksIG5ldyBQb2ludChmYWxzZSwgdHJ1ZSwgMCwgZ2x5cGgueU1heCArIHRvcEJlYXJpbmcgKyBhZHZhbmNlSGVpZ2h0KV07CiAgfTsKCiAgLy8gRGVjb2RlcyBmb250IGRhdGEsIHJlc29sdmVzIGNvbXBvc2l0ZSBnbHlwaHMsIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIGNvbnRvdXJzCgoKICBUVEZHbHlwaC5wcm90b3R5cGUuX2dldENvbnRvdXJzID0gZnVuY3Rpb24gX2dldENvbnRvdXJzKCkgewogICAgdmFyIGdseXBoID0gdGhpcy5fZGVjb2RlKCk7CiAgICBpZiAoIWdseXBoKSB7CiAgICAgIHJldHVybiBbXTsKICAgIH0KCiAgICB2YXIgcG9pbnRzID0gW107CgogICAgaWYgKGdseXBoLm51bWJlck9mQ29udG91cnMgPCAwKSB7CiAgICAgIC8vIHJlc29sdmUgY29tcG9zaXRlIGdseXBocwogICAgICBmb3IgKHZhciBfaXRlcmF0b3IgPSBnbHlwaC5jb21wb25lbnRzLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgICB2YXIgX3JlZjsKCiAgICAgICAgaWYgKF9pc0FycmF5KSB7CiAgICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmID0gX2kudmFsdWU7CiAgICAgICAgfQoKICAgICAgICB2YXIgY29tcG9uZW50ID0gX3JlZjsKCiAgICAgICAgdmFyIF9jb250b3VycyA9IHRoaXMuX2ZvbnQuZ2V0R2x5cGgoY29tcG9uZW50LmdseXBoSUQpLl9nZXRDb250b3VycygpOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX2NvbnRvdXJzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgY29udG91ciA9IF9jb250b3Vyc1tpXTsKICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY29udG91ci5sZW5ndGg7IGorKykgewogICAgICAgICAgICB2YXIgX3BvaW50ID0gY29udG91cltqXTsKICAgICAgICAgICAgdmFyIHggPSBfcG9pbnQueCAqIGNvbXBvbmVudC5zY2FsZVggKyBfcG9pbnQueSAqIGNvbXBvbmVudC5zY2FsZTAxICsgY29tcG9uZW50LmR4OwogICAgICAgICAgICB2YXIgeSA9IF9wb2ludC55ICogY29tcG9uZW50LnNjYWxlWSArIF9wb2ludC54ICogY29tcG9uZW50LnNjYWxlMTAgKyBjb21wb25lbnQuZHk7CiAgICAgICAgICAgIHBvaW50cy5wdXNoKG5ldyBQb2ludChfcG9pbnQub25DdXJ2ZSwgX3BvaW50LmVuZENvbnRvdXIsIHgsIHkpKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIHBvaW50cyA9IGdseXBoLnBvaW50cyB8fCBbXTsKICAgIH0KCiAgICAvLyBSZWNvbXB1dGUgYW5kIGNhY2hlIG1ldHJpY3MgaWYgd2UgcGVyZm9ybWVkIHZhcmlhdGlvbiBwcm9jZXNzaW5nLCBhbmQgZG9uJ3QgaGF2ZSBhbiBIVkFSIHRhYmxlCiAgICBpZiAoZ2x5cGgucGhhbnRvbVBvaW50cyAmJiAhdGhpcy5fZm9udC5kaXJlY3RvcnkudGFibGVzLkhWQVIpIHsKICAgICAgdGhpcy5fbWV0cmljcy5hZHZhbmNlV2lkdGggPSBnbHlwaC5waGFudG9tUG9pbnRzWzFdLnggLSBnbHlwaC5waGFudG9tUG9pbnRzWzBdLng7CiAgICAgIHRoaXMuX21ldHJpY3MuYWR2YW5jZUhlaWdodCA9IGdseXBoLnBoYW50b21Qb2ludHNbM10ueSAtIGdseXBoLnBoYW50b21Qb2ludHNbMl0ueTsKICAgICAgdGhpcy5fbWV0cmljcy5sZWZ0QmVhcmluZyA9IGdseXBoLnhNaW4gLSBnbHlwaC5waGFudG9tUG9pbnRzWzBdLng7CiAgICAgIHRoaXMuX21ldHJpY3MudG9wQmVhcmluZyA9IGdseXBoLnBoYW50b21Qb2ludHNbMl0ueSAtIGdseXBoLnlNYXg7CiAgICB9CgogICAgdmFyIGNvbnRvdXJzID0gW107CiAgICB2YXIgY3VyID0gW107CiAgICBmb3IgKHZhciBrID0gMDsgayA8IHBvaW50cy5sZW5ndGg7IGsrKykgewogICAgICB2YXIgcG9pbnQgPSBwb2ludHNba107CiAgICAgIGN1ci5wdXNoKHBvaW50KTsKICAgICAgaWYgKHBvaW50LmVuZENvbnRvdXIpIHsKICAgICAgICBjb250b3Vycy5wdXNoKGN1cik7CiAgICAgICAgY3VyID0gW107CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gY29udG91cnM7CiAgfTsKCiAgVFRGR2x5cGgucHJvdG90eXBlLl9nZXRNZXRyaWNzID0gZnVuY3Rpb24gX2dldE1ldHJpY3MoKSB7CiAgICBpZiAodGhpcy5fbWV0cmljcykgewogICAgICByZXR1cm4gdGhpcy5fbWV0cmljczsKICAgIH0KCiAgICB2YXIgY2JveCA9IHRoaXMuX2dldENCb3godHJ1ZSk7CiAgICBfR2x5cGgucHJvdG90eXBlLl9nZXRNZXRyaWNzLmNhbGwodGhpcywgY2JveCk7CgogICAgaWYgKHRoaXMuX2ZvbnQuX3ZhcmlhdGlvblByb2Nlc3NvciAmJiAhdGhpcy5fZm9udC5IVkFSKSB7CiAgICAgIC8vIE5vIEhWQVIgdGFibGUsIGRlY29kZSB0aGUgZ2x5cGguIFRoaXMgdHJpZ2dlcnMgcmVjb21wdXRhdGlvbiBvZiBtZXRyaWNzLgogICAgICB0aGlzLnBhdGg7CiAgICB9CgogICAgcmV0dXJuIHRoaXMuX21ldHJpY3M7CiAgfTsKCiAgLy8gQ29udmVydHMgY29udG91cnMgdG8gYSBQYXRoIG9iamVjdCB0aGF0IGNhbiBiZSByZW5kZXJlZAoKCiAgVFRGR2x5cGgucHJvdG90eXBlLl9nZXRQYXRoID0gZnVuY3Rpb24gX2dldFBhdGgoKSB7CiAgICB2YXIgY29udG91cnMgPSB0aGlzLl9nZXRDb250b3VycygpOwogICAgdmFyIHBhdGggPSBuZXcgUGF0aCgpOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29udG91cnMubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGNvbnRvdXIgPSBjb250b3Vyc1tpXTsKICAgICAgdmFyIGZpcnN0UHQgPSBjb250b3VyWzBdOwogICAgICB2YXIgbGFzdFB0ID0gY29udG91cltjb250b3VyLmxlbmd0aCAtIDFdOwogICAgICB2YXIgc3RhcnQgPSAwOwoKICAgICAgaWYgKGZpcnN0UHQub25DdXJ2ZSkgewogICAgICAgIC8vIFRoZSBmaXJzdCBwb2ludCB3aWxsIGJlIGNvbnN1bWVkIGJ5IHRoZSBtb3ZlVG8gY29tbWFuZCwgc28gc2tpcCBpbiB0aGUgbG9vcAogICAgICAgIHZhciBjdXJ2ZVB0ID0gbnVsbDsKICAgICAgICBzdGFydCA9IDE7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGxhc3RQdC5vbkN1cnZlKSB7CiAgICAgICAgICAvLyBTdGFydCBhdCB0aGUgbGFzdCBwb2ludCBpZiB0aGUgZmlyc3QgcG9pbnQgaXMgb2ZmIGN1cnZlIGFuZCB0aGUgbGFzdCBwb2ludCBpcyBvbiBjdXJ2ZQogICAgICAgICAgZmlyc3RQdCA9IGxhc3RQdDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8gU3RhcnQgYXQgdGhlIG1pZGRsZSBpZiBib3RoIHRoZSBmaXJzdCBhbmQgbGFzdCBwb2ludHMgYXJlIG9mZiBjdXJ2ZQogICAgICAgICAgZmlyc3RQdCA9IG5ldyBQb2ludChmYWxzZSwgZmFsc2UsIChmaXJzdFB0LnggKyBsYXN0UHQueCkgLyAyLCAoZmlyc3RQdC55ICsgbGFzdFB0LnkpIC8gMik7CiAgICAgICAgfQoKICAgICAgICB2YXIgY3VydmVQdCA9IGZpcnN0UHQ7CiAgICAgIH0KCiAgICAgIHBhdGgubW92ZVRvKGZpcnN0UHQueCwgZmlyc3RQdC55KTsKCiAgICAgIGZvciAodmFyIGogPSBzdGFydDsgaiA8IGNvbnRvdXIubGVuZ3RoOyBqKyspIHsKICAgICAgICB2YXIgcHQgPSBjb250b3VyW2pdOwogICAgICAgIHZhciBwcmV2UHQgPSBqID09PSAwID8gZmlyc3RQdCA6IGNvbnRvdXJbaiAtIDFdOwoKICAgICAgICBpZiAocHJldlB0Lm9uQ3VydmUgJiYgcHQub25DdXJ2ZSkgewogICAgICAgICAgcGF0aC5saW5lVG8ocHQueCwgcHQueSk7CiAgICAgICAgfSBlbHNlIGlmIChwcmV2UHQub25DdXJ2ZSAmJiAhcHQub25DdXJ2ZSkgewogICAgICAgICAgdmFyIGN1cnZlUHQgPSBwdDsKICAgICAgICB9IGVsc2UgaWYgKCFwcmV2UHQub25DdXJ2ZSAmJiAhcHQub25DdXJ2ZSkgewogICAgICAgICAgdmFyIG1pZFggPSAocHJldlB0LnggKyBwdC54KSAvIDI7CiAgICAgICAgICB2YXIgbWlkWSA9IChwcmV2UHQueSArIHB0LnkpIC8gMjsKICAgICAgICAgIHBhdGgucXVhZHJhdGljQ3VydmVUbyhwcmV2UHQueCwgcHJldlB0LnksIG1pZFgsIG1pZFkpOwogICAgICAgICAgdmFyIGN1cnZlUHQgPSBwdDsKICAgICAgICB9IGVsc2UgaWYgKCFwcmV2UHQub25DdXJ2ZSAmJiBwdC5vbkN1cnZlKSB7CiAgICAgICAgICBwYXRoLnF1YWRyYXRpY0N1cnZlVG8oY3VydmVQdC54LCBjdXJ2ZVB0LnksIHB0LngsIHB0LnkpOwogICAgICAgICAgdmFyIGN1cnZlUHQgPSBudWxsOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gVFRGIHBhdGggc3RhdGUiKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIENvbm5lY3QgdGhlIGZpcnN0IGFuZCBsYXN0IHBvaW50cwogICAgICBpZiAoY3VydmVQdCkgewogICAgICAgIHBhdGgucXVhZHJhdGljQ3VydmVUbyhjdXJ2ZVB0LngsIGN1cnZlUHQueSwgZmlyc3RQdC54LCBmaXJzdFB0LnkpOwogICAgICB9CgogICAgICBwYXRoLmNsb3NlUGF0aCgpOwogICAgfQoKICAgIHJldHVybiBwYXRoOwogIH07CgogIHJldHVybiBUVEZHbHlwaDsKfShHbHlwaCk7CgovKioKICogUmVwcmVzZW50cyBhbiBPcGVuVHlwZSBQb3N0U2NyaXB0IGdseXBoLCBpbiB0aGUgQ29tcGFjdCBGb250IEZvcm1hdC4KICovCgp2YXIgQ0ZGR2x5cGggPSBmdW5jdGlvbiAoX0dseXBoKSB7CiAgX2luaGVyaXRzKENGRkdseXBoLCBfR2x5cGgpOwoKICBmdW5jdGlvbiBDRkZHbHlwaCgpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDRkZHbHlwaCk7CgogICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9HbHlwaC5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTsKICB9CgogIENGRkdseXBoLnByb3RvdHlwZS5fZ2V0TmFtZSA9IGZ1bmN0aW9uIF9nZXROYW1lKCkgewogICAgaWYgKHRoaXMuX2ZvbnQuQ0ZGMikgewogICAgICByZXR1cm4gX0dseXBoLnByb3RvdHlwZS5fZ2V0TmFtZS5jYWxsKHRoaXMpOwogICAgfQoKICAgIHJldHVybiB0aGlzLl9mb250WydDRkYgJ10uZ2V0R2x5cGhOYW1lKHRoaXMuaWQpOwogIH07CgogIENGRkdseXBoLnByb3RvdHlwZS5iaWFzID0gZnVuY3Rpb24gYmlhcyhzKSB7CiAgICBpZiAocy5sZW5ndGggPCAxMjQwKSB7CiAgICAgIHJldHVybiAxMDc7CiAgICB9IGVsc2UgaWYgKHMubGVuZ3RoIDwgMzM5MDApIHsKICAgICAgcmV0dXJuIDExMzE7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gMzI3Njg7CiAgICB9CiAgfTsKCiAgQ0ZGR2x5cGgucHJvdG90eXBlLl9nZXRQYXRoID0gZnVuY3Rpb24gX2dldFBhdGgoKSB7CiAgICB2YXIgc3RyZWFtID0gdGhpcy5fZm9udC5zdHJlYW07CiAgICB2YXIgcG9zID0gc3RyZWFtLnBvczsKCgogICAgdmFyIGNmZiA9IHRoaXMuX2ZvbnQuQ0ZGMiB8fCB0aGlzLl9mb250WydDRkYgJ107CiAgICB2YXIgc3RyID0gY2ZmLnRvcERpY3QuQ2hhclN0cmluZ3NbdGhpcy5pZF07CiAgICB2YXIgZW5kID0gc3RyLm9mZnNldCArIHN0ci5sZW5ndGg7CiAgICBzdHJlYW0ucG9zID0gc3RyLm9mZnNldDsKCiAgICB2YXIgcGF0aCA9IG5ldyBQYXRoKCk7CiAgICB2YXIgc3RhY2sgPSBbXTsKICAgIHZhciB0cmFucyA9IFtdOwoKICAgIHZhciB3aWR0aCA9IG51bGw7CiAgICB2YXIgblN0ZW1zID0gMDsKICAgIHZhciB4ID0gMCwKICAgICAgICB5ID0gMDsKICAgIHZhciB1c2VkR3N1YnJzID0gdm9pZCAwOwogICAgdmFyIHVzZWRTdWJycyA9IHZvaWQgMDsKICAgIHZhciBvcGVuID0gZmFsc2U7CgogICAgdGhpcy5fdXNlZEdzdWJycyA9IHVzZWRHc3VicnMgPSB7fTsKICAgIHRoaXMuX3VzZWRTdWJycyA9IHVzZWRTdWJycyA9IHt9OwoKICAgIHZhciBnc3VicnMgPSBjZmYuZ2xvYmFsU3VickluZGV4IHx8IFtdOwogICAgdmFyIGdzdWJyc0JpYXMgPSB0aGlzLmJpYXMoZ3N1YnJzKTsKCiAgICB2YXIgcHJpdmF0ZURpY3QgPSBjZmYucHJpdmF0ZURpY3RGb3JHbHlwaCh0aGlzLmlkKTsKICAgIHZhciBzdWJycyA9IHByaXZhdGVEaWN0LlN1YnJzIHx8IFtdOwogICAgdmFyIHN1YnJzQmlhcyA9IHRoaXMuYmlhcyhzdWJycyk7CgogICAgdmFyIHZzdG9yZSA9IGNmZi50b3BEaWN0LnZzdG9yZSAmJiBjZmYudG9wRGljdC52c3RvcmUuaXRlbVZhcmlhdGlvblN0b3JlOwogICAgdmFyIHZzaW5kZXggPSBwcml2YXRlRGljdC52c2luZGV4OwogICAgdmFyIHZhcmlhdGlvblByb2Nlc3NvciA9IHRoaXMuX2ZvbnQuX3ZhcmlhdGlvblByb2Nlc3NvcjsKCiAgICBmdW5jdGlvbiBjaGVja1dpZHRoKCkgewogICAgICBpZiAod2lkdGggPT0gbnVsbCkgewogICAgICAgIHdpZHRoID0gc3RhY2suc2hpZnQoKSArIHByaXZhdGVEaWN0Lm5vbWluYWxXaWR0aFg7CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBwYXJzZVN0ZW1zKCkgewogICAgICBpZiAoc3RhY2subGVuZ3RoICUgMiAhPT0gMCkgewogICAgICAgIGNoZWNrV2lkdGgoKTsKICAgICAgfQoKICAgICAgblN0ZW1zICs9IHN0YWNrLmxlbmd0aCA+PiAxOwogICAgICByZXR1cm4gc3RhY2subGVuZ3RoID0gMDsKICAgIH0KCiAgICBmdW5jdGlvbiBtb3ZlVG8oeCwgeSkgewogICAgICBpZiAob3BlbikgewogICAgICAgIHBhdGguY2xvc2VQYXRoKCk7CiAgICAgIH0KCiAgICAgIHBhdGgubW92ZVRvKHgsIHkpOwogICAgICBvcGVuID0gdHJ1ZTsKICAgIH0KCiAgICB2YXIgcGFyc2UgPSBmdW5jdGlvbiBwYXJzZSgpIHsKICAgICAgd2hpbGUgKHN0cmVhbS5wb3MgPCBlbmQpIHsKICAgICAgICB2YXIgb3AgPSBzdHJlYW0ucmVhZFVJbnQ4KCk7CiAgICAgICAgaWYgKG9wIDwgMzIpIHsKICAgICAgICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgICAgY2FzZSAxOiAvLyBoc3RlbQogICAgICAgICAgICBjYXNlIDM6IC8vIHZzdGVtCiAgICAgICAgICAgIGNhc2UgMTg6IC8vIGhzdGVtaG0KICAgICAgICAgICAgY2FzZSAyMzoKICAgICAgICAgICAgICAvLyB2c3RlbWhtCiAgICAgICAgICAgICAgcGFyc2VTdGVtcygpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgIC8vIHZtb3ZldG8KICAgICAgICAgICAgICBpZiAoc3RhY2subGVuZ3RoID4gMSkgewogICAgICAgICAgICAgICAgY2hlY2tXaWR0aCgpOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgeSArPSBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgIG1vdmVUbyh4LCB5KTsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAvLyBybGluZXRvCiAgICAgICAgICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+PSAyKSB7CiAgICAgICAgICAgICAgICB4ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB5ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICBwYXRoLmxpbmVUbyh4LCB5KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDY6IC8vIGhsaW5ldG8KICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgIC8vIHZsaW5ldG8KICAgICAgICAgICAgICB2YXIgcGhhc2UgPSBvcCA9PT0gNjsKICAgICAgICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoID49IDEpIHsKICAgICAgICAgICAgICAgIGlmIChwaGFzZSkgewogICAgICAgICAgICAgICAgICB4ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICB5ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcGF0aC5saW5lVG8oeCwgeSk7CiAgICAgICAgICAgICAgICBwaGFzZSA9ICFwaGFzZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgLy8gcnJjdXJ2ZXRvCiAgICAgICAgICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgIHZhciBjMXggPSB4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIHZhciBjMXkgPSB5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIHZhciBjMnggPSBjMXggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgdmFyIGMyeSA9IGMxeSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB4ID0gYzJ4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIHkgPSBjMnkgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgcGF0aC5iZXppZXJDdXJ2ZVRvKGMxeCwgYzF5LCBjMngsIGMyeSwgeCwgeSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAxMDoKICAgICAgICAgICAgICAvLyBjYWxsc3VicgogICAgICAgICAgICAgIHZhciBpbmRleCA9IHN0YWNrLnBvcCgpICsgc3VicnNCaWFzOwogICAgICAgICAgICAgIHZhciBzdWJyID0gc3VicnNbaW5kZXhdOwogICAgICAgICAgICAgIGlmIChzdWJyKSB7CiAgICAgICAgICAgICAgICB1c2VkU3VicnNbaW5kZXhdID0gdHJ1ZTsKICAgICAgICAgICAgICAgIHZhciBwID0gc3RyZWFtLnBvczsKICAgICAgICAgICAgICAgIHZhciBlID0gZW5kOwogICAgICAgICAgICAgICAgc3RyZWFtLnBvcyA9IHN1YnIub2Zmc2V0OwogICAgICAgICAgICAgICAgZW5kID0gc3Vici5vZmZzZXQgKyBzdWJyLmxlbmd0aDsKICAgICAgICAgICAgICAgIHBhcnNlKCk7CiAgICAgICAgICAgICAgICBzdHJlYW0ucG9zID0gcDsKICAgICAgICAgICAgICAgIGVuZCA9IGU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICAvLyByZXR1cm4KICAgICAgICAgICAgICBpZiAoY2ZmLnZlcnNpb24gPj0gMikgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgICAgLy8gZW5kY2hhcgogICAgICAgICAgICAgIGlmIChjZmYudmVyc2lvbiA+PSAyKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICBjaGVja1dpZHRoKCk7CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICBpZiAob3BlbikgewogICAgICAgICAgICAgICAgcGF0aC5jbG9zZVBhdGgoKTsKICAgICAgICAgICAgICAgIG9wZW4gPSBmYWxzZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vIHZzaW5kZXgKICAgICAgICAgICAgICAgIGlmIChjZmYudmVyc2lvbiA8IDIpIHsKICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd2c2luZGV4IG9wZXJhdG9yIG5vdCBzdXBwb3J0ZWQgaW4gQ0ZGIHYxJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdnNpbmRleCA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgY2FzZSAxNjoKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAvLyBibGVuZAogICAgICAgICAgICAgICAgaWYgKGNmZi52ZXJzaW9uIDwgMikgewogICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JsZW5kIG9wZXJhdG9yIG5vdCBzdXBwb3J0ZWQgaW4gQ0ZGIHYxJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCF2YXJpYXRpb25Qcm9jZXNzb3IpIHsKICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdibGVuZCBvcGVyYXRvciBpbiBub24tdmFyaWF0aW9uIGZvbnQnKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgYmxlbmRWZWN0b3IgPSB2YXJpYXRpb25Qcm9jZXNzb3IuZ2V0QmxlbmRWZWN0b3IodnN0b3JlLCB2c2luZGV4KTsKICAgICAgICAgICAgICAgIHZhciBudW1CbGVuZHMgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgIHZhciBudW1PcGVyYW5kcyA9IG51bUJsZW5kcyAqIGJsZW5kVmVjdG9yLmxlbmd0aDsKICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IHN0YWNrLmxlbmd0aCAtIG51bU9wZXJhbmRzOwogICAgICAgICAgICAgICAgdmFyIGJhc2UgPSBkZWx0YSAtIG51bUJsZW5kczsKCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUJsZW5kczsgaSsrKSB7CiAgICAgICAgICAgICAgICAgIHZhciBzdW0gPSBzdGFja1tiYXNlICsgaV07CiAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYmxlbmRWZWN0b3IubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICBzdW0gKz0gYmxlbmRWZWN0b3Jbal0gKiBzdGFja1tkZWx0YSsrXTsKICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgc3RhY2tbYmFzZSArIGldID0gc3VtOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHdoaWxlIChudW1PcGVyYW5kcy0tKSB7CiAgICAgICAgICAgICAgICAgIHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNhc2UgMTk6IC8vIGhpbnRtYXNrCiAgICAgICAgICAgIGNhc2UgMjA6CiAgICAgICAgICAgICAgLy8gY250cm1hc2sKICAgICAgICAgICAgICBwYXJzZVN0ZW1zKCk7CiAgICAgICAgICAgICAgc3RyZWFtLnBvcyArPSBuU3RlbXMgKyA3ID4+IDM7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDIxOgogICAgICAgICAgICAgIC8vIHJtb3ZldG8KICAgICAgICAgICAgICBpZiAoc3RhY2subGVuZ3RoID4gMikgewogICAgICAgICAgICAgICAgY2hlY2tXaWR0aCgpOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgeCArPSBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgIHkgKz0gc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICBtb3ZlVG8oeCwgeSk7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDIyOgogICAgICAgICAgICAgIC8vIGhtb3ZldG8KICAgICAgICAgICAgICBpZiAoc3RhY2subGVuZ3RoID4gMSkgewogICAgICAgICAgICAgICAgY2hlY2tXaWR0aCgpOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgeCArPSBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgIG1vdmVUbyh4LCB5KTsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgMjQ6CiAgICAgICAgICAgICAgLy8gcmN1cnZlbGluZQogICAgICAgICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGggPj0gOCkgewogICAgICAgICAgICAgICAgdmFyIGMxeCA9IHggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgdmFyIGMxeSA9IHkgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgdmFyIGMyeCA9IGMxeCArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB2YXIgYzJ5ID0gYzF5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIHggPSBjMnggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgeSA9IGMyeSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICBwYXRoLmJlemllckN1cnZlVG8oYzF4LCBjMXksIGMyeCwgYzJ5LCB4LCB5KTsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIHggKz0gc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB5ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgcGF0aC5saW5lVG8oeCwgeSk7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDI1OgogICAgICAgICAgICAgIC8vIHJsaW5lY3VydmUKICAgICAgICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoID49IDgpIHsKICAgICAgICAgICAgICAgIHggKz0gc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIHkgKz0gc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIHBhdGgubGluZVRvKHgsIHkpOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgdmFyIGMxeCA9IHggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgIHZhciBjMXkgPSB5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB2YXIgYzJ4ID0gYzF4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB2YXIgYzJ5ID0gYzF5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB4ID0gYzJ4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB5ID0gYzJ5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICBwYXRoLmJlemllckN1cnZlVG8oYzF4LCBjMXksIGMyeCwgYzJ5LCB4LCB5KTsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgMjY6CiAgICAgICAgICAgICAgLy8gdnZjdXJ2ZXRvCiAgICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCAlIDIpIHsKICAgICAgICAgICAgICAgIHggKz0gc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGggPj0gNCkgewogICAgICAgICAgICAgICAgYzF4ID0geDsKICAgICAgICAgICAgICAgIGMxeSA9IHkgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgYzJ4ID0gYzF4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIGMyeSA9IGMxeSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB4ID0gYzJ4OwogICAgICAgICAgICAgICAgeSA9IGMyeSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICBwYXRoLmJlemllckN1cnZlVG8oYzF4LCBjMXksIGMyeCwgYzJ5LCB4LCB5KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDI3OgogICAgICAgICAgICAgIC8vIGhoY3VydmV0bwogICAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGggJSAyKSB7CiAgICAgICAgICAgICAgICB5ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoID49IDQpIHsKICAgICAgICAgICAgICAgIGMxeCA9IHggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgYzF5ID0geTsKICAgICAgICAgICAgICAgIGMyeCA9IGMxeCArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICBjMnkgPSBjMXkgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgeCA9IGMyeCArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB5ID0gYzJ5OwogICAgICAgICAgICAgICAgcGF0aC5iZXppZXJDdXJ2ZVRvKGMxeCwgYzF5LCBjMngsIGMyeSwgeCwgeSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAyODoKICAgICAgICAgICAgICAvLyBzaG9ydGludAogICAgICAgICAgICAgIHN0YWNrLnB1c2goc3RyZWFtLnJlYWRJbnQxNkJFKCkpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAyOToKICAgICAgICAgICAgICAvLyBjYWxsZ3N1YnIKICAgICAgICAgICAgICBpbmRleCA9IHN0YWNrLnBvcCgpICsgZ3N1YnJzQmlhczsKICAgICAgICAgICAgICBzdWJyID0gZ3N1YnJzW2luZGV4XTsKICAgICAgICAgICAgICBpZiAoc3VicikgewogICAgICAgICAgICAgICAgdXNlZEdzdWJyc1tpbmRleF0gPSB0cnVlOwogICAgICAgICAgICAgICAgdmFyIHAgPSBzdHJlYW0ucG9zOwogICAgICAgICAgICAgICAgdmFyIGUgPSBlbmQ7CiAgICAgICAgICAgICAgICBzdHJlYW0ucG9zID0gc3Vici5vZmZzZXQ7CiAgICAgICAgICAgICAgICBlbmQgPSBzdWJyLm9mZnNldCArIHN1YnIubGVuZ3RoOwogICAgICAgICAgICAgICAgcGFyc2UoKTsKICAgICAgICAgICAgICAgIHN0cmVhbS5wb3MgPSBwOwogICAgICAgICAgICAgICAgZW5kID0gZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDMwOiAvLyB2aGN1cnZldG8KICAgICAgICAgICAgY2FzZSAzMToKICAgICAgICAgICAgICAvLyBodmN1cnZldG8KICAgICAgICAgICAgICBwaGFzZSA9IG9wID09PSAzMTsKICAgICAgICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoID49IDQpIHsKICAgICAgICAgICAgICAgIGlmIChwaGFzZSkgewogICAgICAgICAgICAgICAgICBjMXggPSB4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgYzF5ID0geTsKICAgICAgICAgICAgICAgICAgYzJ4ID0gYzF4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgYzJ5ID0gYzF5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgeSA9IGMyeSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgIHggPSBjMnggKyAoc3RhY2subGVuZ3RoID09PSAxID8gc3RhY2suc2hpZnQoKSA6IDApOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgYzF4ID0geDsKICAgICAgICAgICAgICAgICAgYzF5ID0geSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgIGMyeCA9IGMxeCArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgIGMyeSA9IGMxeSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgIHggPSBjMnggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgICB5ID0gYzJ5ICsgKHN0YWNrLmxlbmd0aCA9PT0gMSA/IHN0YWNrLnNoaWZ0KCkgOiAwKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwYXRoLmJlemllckN1cnZlVG8oYzF4LCBjMXksIGMyeCwgYzJ5LCB4LCB5KTsKICAgICAgICAgICAgICAgIHBoYXNlID0gIXBoYXNlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgb3AgPSBzdHJlYW0ucmVhZFVJbnQ4KCk7CiAgICAgICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAvLyBhbmQKICAgICAgICAgICAgICAgICAgdmFyIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgdmFyIGIgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChhICYmIGIgPyAxIDogMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgLy8gb3IKICAgICAgICAgICAgICAgICAgYSA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICBiID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goYSB8fCBiID8gMSA6IDApOwogICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgIC8vIG5vdAogICAgICAgICAgICAgICAgICBhID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goYSA/IDAgOiAxKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgICAgICAvLyBhYnMKICAgICAgICAgICAgICAgICAgYSA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKE1hdGguYWJzKGEpKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAxMDoKICAgICAgICAgICAgICAgICAgLy8gYWRkCiAgICAgICAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgYiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGEgKyBiKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICAgICAgLy8gc3ViCiAgICAgICAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgYiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGEgLSBiKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgICAgICAgLy8gZGl2CiAgICAgICAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgYiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGEgLyBiKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAxNDoKICAgICAgICAgICAgICAgICAgLy8gbmVnCiAgICAgICAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaCgtYSk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICAgIC8vIGVxCiAgICAgICAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgYiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGEgPT09IGIgPyAxIDogMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMTg6CiAgICAgICAgICAgICAgICAgIC8vIGRyb3AKICAgICAgICAgICAgICAgICAgc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMjA6CiAgICAgICAgICAgICAgICAgIC8vIHB1dAogICAgICAgICAgICAgICAgICB2YXIgdmFsID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICAgIHZhciBpZHggPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgdHJhbnNbaWR4XSA9IHZhbDsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAyMToKICAgICAgICAgICAgICAgICAgLy8gZ2V0CiAgICAgICAgICAgICAgICAgIGlkeCA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKHRyYW5zW2lkeF0gfHwgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMjI6CiAgICAgICAgICAgICAgICAgIC8vIGlmZWxzZQogICAgICAgICAgICAgICAgICB2YXIgczEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgdmFyIHMyID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICAgIHZhciB2MSA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICB2YXIgdjIgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaCh2MSA8PSB2MiA/IHMxIDogczIpOwogICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDIzOgogICAgICAgICAgICAgICAgICAvLyByYW5kb20KICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChNYXRoLnJhbmRvbSgpKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAyNDoKICAgICAgICAgICAgICAgICAgLy8gbXVsCiAgICAgICAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgYiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGEgKiBiKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAyNjoKICAgICAgICAgICAgICAgICAgLy8gc3FydAogICAgICAgICAgICAgICAgICBhID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goTWF0aC5zcXJ0KGEpKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAyNzoKICAgICAgICAgICAgICAgICAgLy8gZHVwCiAgICAgICAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChhLCBhKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAyODoKICAgICAgICAgICAgICAgICAgLy8gZXhjaAogICAgICAgICAgICAgICAgICBhID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICAgIGIgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChiLCBhKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAyOToKICAgICAgICAgICAgICAgICAgLy8gaW5kZXgKICAgICAgICAgICAgICAgICAgaWR4ID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICAgIGlmIChpZHggPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgaWR4ID0gMDsKICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpZHggPiBzdGFjay5sZW5ndGggLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgaWR4ID0gc3RhY2subGVuZ3RoIC0gMTsKICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChzdGFja1tpZHhdKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAzMDoKICAgICAgICAgICAgICAgICAgLy8gcm9sbAogICAgICAgICAgICAgICAgICB2YXIgbiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICB2YXIgX2ogPSBzdGFjay5wb3AoKTsKCiAgICAgICAgICAgICAgICAgIGlmIChfaiA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKF9qID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBzdGFja1tuIC0gMV07CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBfaSA9IG4gLSAyOyBfaSA+PSAwOyBfaS0tKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrW19pICsgMV0gPSBzdGFja1tfaV07CiAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgc3RhY2tbMF0gPSB0OwogICAgICAgICAgICAgICAgICAgICAgX2otLTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKF9qIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBzdGFja1swXTsKICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8PSBuOyBfaTIrKykgewogICAgICAgICAgICAgICAgICAgICAgICBzdGFja1tfaTJdID0gc3RhY2tbX2kyICsgMV07CiAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgc3RhY2tbbiAtIDFdID0gdDsKICAgICAgICAgICAgICAgICAgICAgIF9qKys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMzQ6CiAgICAgICAgICAgICAgICAgIC8vIGhmbGV4CiAgICAgICAgICAgICAgICAgIGMxeCA9IHggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgICBjMXkgPSB5OwogICAgICAgICAgICAgICAgICBjMnggPSBjMXggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgICBjMnkgPSBjMXkgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgICB2YXIgYzN4ID0gYzJ4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgdmFyIGMzeSA9IGMyeTsKICAgICAgICAgICAgICAgICAgdmFyIGM0eCA9IGMzeCArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgIHZhciBjNHkgPSBjM3k7CiAgICAgICAgICAgICAgICAgIHZhciBjNXggPSBjNHggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgICB2YXIgYzV5ID0gYzR5OwogICAgICAgICAgICAgICAgICB2YXIgYzZ4ID0gYzV4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgdmFyIGM2eSA9IGM1eTsKICAgICAgICAgICAgICAgICAgeCA9IGM2eDsKICAgICAgICAgICAgICAgICAgeSA9IGM2eTsKCiAgICAgICAgICAgICAgICAgIHBhdGguYmV6aWVyQ3VydmVUbyhjMXgsIGMxeSwgYzJ4LCBjMnksIGMzeCwgYzN5KTsKICAgICAgICAgICAgICAgICAgcGF0aC5iZXppZXJDdXJ2ZVRvKGM0eCwgYzR5LCBjNXgsIGM1eSwgYzZ4LCBjNnkpOwogICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDM1OgogICAgICAgICAgICAgICAgICAvLyBmbGV4CiAgICAgICAgICAgICAgICAgIHZhciBwdHMgPSBbXTsKCiAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8PSA1OyBfaTMrKykgewogICAgICAgICAgICAgICAgICAgIHggKz0gc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICB5ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgcHRzLnB1c2goeCwgeSk7CiAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgIHBhdGguYmV6aWVyQ3VydmVUby5hcHBseShwYXRoLCBwdHMuc2xpY2UoMCwgNikpOwogICAgICAgICAgICAgICAgICBwYXRoLmJlemllckN1cnZlVG8uYXBwbHkocGF0aCwgcHRzLnNsaWNlKDYpKTsKICAgICAgICAgICAgICAgICAgc3RhY2suc2hpZnQoKTsgLy8gZmQKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAzNjoKICAgICAgICAgICAgICAgICAgLy8gaGZsZXgxCiAgICAgICAgICAgICAgICAgIGMxeCA9IHggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgICBjMXkgPSB5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgYzJ4ID0gYzF4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgYzJ5ID0gYzF5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgYzN4ID0gYzJ4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgYzN5ID0gYzJ5OwogICAgICAgICAgICAgICAgICBjNHggPSBjM3ggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgICBjNHkgPSBjM3k7CiAgICAgICAgICAgICAgICAgIGM1eCA9IGM0eCArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgIGM1eSA9IGM0eSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgIGM2eCA9IGM1eCArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgIGM2eSA9IGM1eTsKICAgICAgICAgICAgICAgICAgeCA9IGM2eDsKICAgICAgICAgICAgICAgICAgeSA9IGM2eTsKCiAgICAgICAgICAgICAgICAgIHBhdGguYmV6aWVyQ3VydmVUbyhjMXgsIGMxeSwgYzJ4LCBjMnksIGMzeCwgYzN5KTsKICAgICAgICAgICAgICAgICAgcGF0aC5iZXppZXJDdXJ2ZVRvKGM0eCwgYzR5LCBjNXgsIGM1eSwgYzZ4LCBjNnkpOwogICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDM3OgogICAgICAgICAgICAgICAgICAvLyBmbGV4MQogICAgICAgICAgICAgICAgICB2YXIgc3RhcnR4ID0geDsKICAgICAgICAgICAgICAgICAgdmFyIHN0YXJ0eSA9IHk7CgogICAgICAgICAgICAgICAgICBwdHMgPSBbXTsKICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2k0ID0gMDsgX2k0IDw9IDQ7IF9pNCsrKSB7CiAgICAgICAgICAgICAgICAgICAgeCArPSBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgICAgIHkgKz0gc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICBwdHMucHVzaCh4LCB5KTsKICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHggLSBzdGFydHgpID4gTWF0aC5hYnMoeSAtIHN0YXJ0eSkpIHsKICAgICAgICAgICAgICAgICAgICAvLyBob3Jpem9udGFsCiAgICAgICAgICAgICAgICAgICAgeCArPSBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgICAgIHkgPSBzdGFydHk7CiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgeCA9IHN0YXJ0eDsKICAgICAgICAgICAgICAgICAgICB5ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgIHB0cy5wdXNoKHgsIHkpOwogICAgICAgICAgICAgICAgICBwYXRoLmJlemllckN1cnZlVG8uYXBwbHkocGF0aCwgcHRzLnNsaWNlKDAsIDYpKTsKICAgICAgICAgICAgICAgICAgcGF0aC5iZXppZXJDdXJ2ZVRvLmFwcGx5KHBhdGgsIHB0cy5zbGljZSg2KSk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBvcDogMTIgJyArIG9wKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBvcDogJyArIG9wKTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKG9wIDwgMjQ3KSB7CiAgICAgICAgICBzdGFjay5wdXNoKG9wIC0gMTM5KTsKICAgICAgICB9IGVsc2UgaWYgKG9wIDwgMjUxKSB7CiAgICAgICAgICB2YXIgYjEgPSBzdHJlYW0ucmVhZFVJbnQ4KCk7CiAgICAgICAgICBzdGFjay5wdXNoKChvcCAtIDI0NykgKiAyNTYgKyBiMSArIDEwOCk7CiAgICAgICAgfSBlbHNlIGlmIChvcCA8IDI1NSkgewogICAgICAgICAgdmFyIGIxID0gc3RyZWFtLnJlYWRVSW50OCgpOwogICAgICAgICAgc3RhY2sucHVzaCgtKG9wIC0gMjUxKSAqIDI1NiAtIGIxIC0gMTA4KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgc3RhY2sucHVzaChzdHJlYW0ucmVhZEludDMyQkUoKSAvIDY1NTM2KTsKICAgICAgICB9CiAgICAgIH0KICAgIH07CgogICAgcGFyc2UoKTsKCiAgICBpZiAob3BlbikgewogICAgICBwYXRoLmNsb3NlUGF0aCgpOwogICAgfQoKICAgIHJldHVybiBwYXRoOwogIH07CgogIHJldHVybiBDRkZHbHlwaDsKfShHbHlwaCk7Cgp2YXIgU0JJWEltYWdlID0gbmV3IHIuU3RydWN0KHsKICBvcmlnaW5YOiByLnVpbnQxNiwKICBvcmlnaW5ZOiByLnVpbnQxNiwKICB0eXBlOiBuZXcgci5TdHJpbmcoNCksCiAgZGF0YTogbmV3IHIuQnVmZmVyKGZ1bmN0aW9uICh0KSB7CiAgICByZXR1cm4gdC5wYXJlbnQuYnVmbGVuIC0gdC5fY3VycmVudE9mZnNldDsKICB9KQp9KTsKCi8qKgogKiBSZXByZXNlbnRzIGEgY29sb3IgKGUuZy4gZW1vamkpIGdseXBoIGluIEFwcGxlJ3MgU0JJWCBmb3JtYXQuCiAqLwoKdmFyIFNCSVhHbHlwaCA9IGZ1bmN0aW9uIChfVFRGR2x5cGgpIHsKICBfaW5oZXJpdHMoU0JJWEdseXBoLCBfVFRGR2x5cGgpOwoKICBmdW5jdGlvbiBTQklYR2x5cGgoKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU0JJWEdseXBoKTsKCiAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX1RURkdseXBoLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpOwogIH0KCiAgLyoqCiAgICogUmV0dXJucyBhbiBvYmplY3QgcmVwcmVzZW50aW5nIGEgZ2x5cGggaW1hZ2UgYXQgdGhlIGdpdmVuIHBvaW50IHNpemUuCiAgICogVGhlIG9iamVjdCBoYXMgYSBkYXRhIHByb3BlcnR5IHdpdGggYSBCdWZmZXIgY29udGFpbmluZyB0aGUgYWN0dWFsIGltYWdlIGRhdGEsCiAgICogYWxvbmcgd2l0aCB0aGUgaW1hZ2UgdHlwZSwgYW5kIG9yaWdpbi4KICAgKgogICAqIEBwYXJhbSB7bnVtYmVyfSBzaXplCiAgICogQHJldHVybiB7b2JqZWN0fQogICAqLwogIFNCSVhHbHlwaC5wcm90b3R5cGUuZ2V0SW1hZ2VGb3JTaXplID0gZnVuY3Rpb24gZ2V0SW1hZ2VGb3JTaXplKHNpemUpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZm9udC5zYml4LmltYWdlVGFibGVzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciB0YWJsZSA9IHRoaXMuX2ZvbnQuc2JpeC5pbWFnZVRhYmxlc1tpXTsKICAgICAgaWYgKHRhYmxlLnBwZW0gPj0gc2l6ZSkgewogICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9CgogICAgdmFyIG9mZnNldHMgPSB0YWJsZS5pbWFnZU9mZnNldHM7CiAgICB2YXIgc3RhcnQgPSBvZmZzZXRzW3RoaXMuaWRdOwogICAgdmFyIGVuZCA9IG9mZnNldHNbdGhpcy5pZCArIDFdOwoKICAgIGlmIChzdGFydCA9PT0gZW5kKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHRoaXMuX2ZvbnQuc3RyZWFtLnBvcyA9IHN0YXJ0OwogICAgcmV0dXJuIFNCSVhJbWFnZS5kZWNvZGUodGhpcy5fZm9udC5zdHJlYW0sIHsgYnVmbGVuOiBlbmQgLSBzdGFydCB9KTsKICB9OwoKICBTQklYR2x5cGgucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcihjdHgsIHNpemUpIHsKICAgIHZhciBpbWcgPSB0aGlzLmdldEltYWdlRm9yU2l6ZShzaXplKTsKICAgIGlmIChpbWcgIT0gbnVsbCkgewogICAgICB2YXIgc2NhbGUgPSBzaXplIC8gdGhpcy5fZm9udC51bml0c1BlckVtOwogICAgICBjdHguaW1hZ2UoaW1nLmRhdGEsIHsgaGVpZ2h0OiBzaXplLCB4OiBpbWcub3JpZ2luWCwgeTogKHRoaXMuYmJveC5taW5ZIC0gaW1nLm9yaWdpblkpICogc2NhbGUgfSk7CiAgICB9CgogICAgaWYgKHRoaXMuX2ZvbnQuc2JpeC5mbGFncy5yZW5kZXJPdXRsaW5lcykgewogICAgICBfVFRGR2x5cGgucHJvdG90eXBlLnJlbmRlci5jYWxsKHRoaXMsIGN0eCwgc2l6ZSk7CiAgICB9CiAgfTsKCiAgcmV0dXJuIFNCSVhHbHlwaDsKfShUVEZHbHlwaCk7Cgp2YXIgQ09MUkxheWVyID0gZnVuY3Rpb24gQ09MUkxheWVyKGdseXBoLCBjb2xvcikgewogIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDT0xSTGF5ZXIpOwoKICB0aGlzLmdseXBoID0gZ2x5cGg7CiAgdGhpcy5jb2xvciA9IGNvbG9yOwp9OwoKLyoqCiAqIFJlcHJlc2VudHMgYSBjb2xvciAoZS5nLiBlbW9qaSkgZ2x5cGggaW4gTWljcm9zb2Z0J3MgQ09MUiBmb3JtYXQuCiAqIEVhY2ggZ2x5cGggaW4gdGhpcyBmb3JtYXQgY29udGFpbiBhIGxpc3Qgb2YgY29sb3JlZCBsYXllcnMsIGVhY2gKICogb2Ygd2hpY2ggIGlzIGFub3RoZXIgdmVjdG9yIGdseXBoLgogKi8KCgp2YXIgQ09MUkdseXBoID0gZnVuY3Rpb24gKF9HbHlwaCkgewogIF9pbmhlcml0cyhDT0xSR2x5cGgsIF9HbHlwaCk7CgogIGZ1bmN0aW9uIENPTFJHbHlwaCgpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDT0xSR2x5cGgpOwoKICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfR2x5cGguYXBwbHkodGhpcywgYXJndW1lbnRzKSk7CiAgfQoKICBDT0xSR2x5cGgucHJvdG90eXBlLl9nZXRCQm94ID0gZnVuY3Rpb24gX2dldEJCb3goKSB7CiAgICB2YXIgYmJveCA9IG5ldyBCQm94KCk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGF5ZXJzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBsYXllciA9IHRoaXMubGF5ZXJzW2ldOwogICAgICB2YXIgYiA9IGxheWVyLmdseXBoLmJib3g7CiAgICAgIGJib3guYWRkUG9pbnQoYi5taW5YLCBiLm1pblkpOwogICAgICBiYm94LmFkZFBvaW50KGIubWF4WCwgYi5tYXhZKTsKICAgIH0KCiAgICByZXR1cm4gYmJveDsKICB9OwoKICAvKioKICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIG9iamVjdHMgY29udGFpbmluZyB0aGUgZ2x5cGggYW5kIGNvbG9yIGZvcgogICAqIGVhY2ggbGF5ZXIgaW4gdGhlIGNvbXBvc2l0ZSBjb2xvciBnbHlwaC4KICAgKiBAdHlwZSB7b2JqZWN0W119CiAgICovCgoKICBDT0xSR2x5cGgucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcihjdHgsIHNpemUpIHsKICAgIGZvciAodmFyIF9pdGVyYXRvciA9IHRoaXMubGF5ZXJzLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgdmFyIF9yZWY7CgogICAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZiA9IF9pdGVyYXRvcltfaSsrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgaWYgKF9pLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIF9yZWYyID0gX3JlZiwKICAgICAgICAgIGdseXBoID0gX3JlZjIuZ2x5cGgsCiAgICAgICAgICBjb2xvciA9IF9yZWYyLmNvbG9yOwoKICAgICAgY3R4LmZpbGxDb2xvcihbY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29sb3IuYmx1ZV0sIGNvbG9yLmFscGhhIC8gMjU1ICogMTAwKTsKICAgICAgZ2x5cGgucmVuZGVyKGN0eCwgc2l6ZSk7CiAgICB9CgogICAgcmV0dXJuOwogIH07CgogIF9jcmVhdGVDbGFzcyhDT0xSR2x5cGgsIFt7CiAgICBrZXk6ICdsYXllcnMnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHZhciBjcGFsID0gdGhpcy5fZm9udC5DUEFMOwogICAgICB2YXIgY29sciA9IHRoaXMuX2ZvbnQuQ09MUjsKICAgICAgdmFyIGxvdyA9IDA7CiAgICAgIHZhciBoaWdoID0gY29sci5iYXNlR2x5cGhSZWNvcmQubGVuZ3RoIC0gMTsKCiAgICAgIHdoaWxlIChsb3cgPD0gaGlnaCkgewogICAgICAgIHZhciBtaWQgPSBsb3cgKyBoaWdoID4+IDE7CiAgICAgICAgdmFyIHJlYyA9IGNvbHIuYmFzZUdseXBoUmVjb3JkW21pZF07CgogICAgICAgIGlmICh0aGlzLmlkIDwgcmVjLmdpZCkgewogICAgICAgICAgaGlnaCA9IG1pZCAtIDE7CiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlkID4gcmVjLmdpZCkgewogICAgICAgICAgbG93ID0gbWlkICsgMTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIGJhc2VMYXllciA9IHJlYzsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gaWYgYmFzZSBnbHlwaCBub3QgZm91bmQgaW4gQ09MUiB0YWJsZSwKICAgICAgLy8gZGVmYXVsdCB0byBub3JtYWwgZ2x5cGggZnJvbSBnbHlmIG9yIENGRgogICAgICBpZiAoYmFzZUxheWVyID09IG51bGwpIHsKICAgICAgICB2YXIgZyA9IHRoaXMuX2ZvbnQuX2dldEJhc2VHbHlwaCh0aGlzLmlkKTsKICAgICAgICB2YXIgY29sb3IgPSB7CiAgICAgICAgICByZWQ6IDAsCiAgICAgICAgICBncmVlbjogMCwKICAgICAgICAgIGJsdWU6IDAsCiAgICAgICAgICBhbHBoYTogMjU1CiAgICAgICAgfTsKCiAgICAgICAgcmV0dXJuIFtuZXcgQ09MUkxheWVyKGcsIGNvbG9yKV07CiAgICAgIH0KCiAgICAgIC8vIG90aGVyd2lzZSwgcmV0dXJuIGFuIGFycmF5IG9mIGFsbCB0aGUgbGF5ZXJzCiAgICAgIHZhciBsYXllcnMgPSBbXTsKICAgICAgZm9yICh2YXIgaSA9IGJhc2VMYXllci5maXJzdExheWVySW5kZXg7IGkgPCBiYXNlTGF5ZXIuZmlyc3RMYXllckluZGV4ICsgYmFzZUxheWVyLm51bUxheWVyczsgaSsrKSB7CiAgICAgICAgdmFyIHJlYyA9IGNvbHIubGF5ZXJSZWNvcmRzW2ldOwogICAgICAgIHZhciBjb2xvciA9IGNwYWwuY29sb3JSZWNvcmRzW3JlYy5wYWxldHRlSW5kZXhdOwogICAgICAgIHZhciBnID0gdGhpcy5fZm9udC5fZ2V0QmFzZUdseXBoKHJlYy5naWQpOwogICAgICAgIGxheWVycy5wdXNoKG5ldyBDT0xSTGF5ZXIoZywgY29sb3IpKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGxheWVyczsKICAgIH0KICB9XSk7CgogIHJldHVybiBDT0xSR2x5cGg7Cn0oR2x5cGgpOwoKdmFyIFRVUExFU19TSEFSRV9QT0lOVF9OVU1CRVJTID0gMHg4MDAwOwp2YXIgVFVQTEVfQ09VTlRfTUFTSyA9IDB4MGZmZjsKdmFyIEVNQkVEREVEX1RVUExFX0NPT1JEID0gMHg4MDAwOwp2YXIgSU5URVJNRURJQVRFX1RVUExFID0gMHg0MDAwOwp2YXIgUFJJVkFURV9QT0lOVF9OVU1CRVJTID0gMHgyMDAwOwp2YXIgVFVQTEVfSU5ERVhfTUFTSyA9IDB4MGZmZjsKdmFyIFBPSU5UU19BUkVfV09SRFMgPSAweDgwOwp2YXIgUE9JTlRfUlVOX0NPVU5UX01BU0sgPSAweDdmOwp2YXIgREVMVEFTX0FSRV9aRVJPID0gMHg4MDsKdmFyIERFTFRBU19BUkVfV09SRFMgPSAweDQwOwp2YXIgREVMVEFfUlVOX0NPVU5UX01BU0sgPSAweDNmOwoKLyoqCiAqIFRoaXMgY2xhc3MgaXMgdHJhbnNmb3JtcyBUcnVlVHlwZSBnbHlwaHMgYWNjb3JkaW5nIHRvIHRoZSBkYXRhIGZyb20KICogdGhlIEFwcGxlIEFkdmFuY2VkIFR5cG9ncmFwaHkgdmFyaWF0aW9uIHRhYmxlcyAoZnZhciwgZ3ZhciwgYW5kIGF2YXIpLgogKiBUaGVzZSB0YWJsZXMgYWxsb3cgaW5maW5pdGUgYWRqdXN0bWVudHMgdG8gZ2x5cGggd2VpZ2h0LCB3aWR0aCwgc2xhbnQsCiAqIGFuZCBvcHRpY2FsIHNpemUgd2l0aG91dCB0aGUgZGVzaWduZXIgbmVlZGluZyB0byBzcGVjaWZ5IGV2ZXJ5IGV4YWN0IHN0eWxlLgogKgogKiBBcHBsZSdzIGRvY3VtZW50YXRpb24gZm9yIHRoZXNlIHRhYmxlcyBpcyBub3QgZ3JlYXQsIHNvIHRoYW5rcyB0byB0aGUKICogRnJlZXR5cGUgcHJvamVjdCBmb3IgZmlndXJpbmcgbXVjaCBvZiB0aGlzIG91dC4KICoKICogQHByaXZhdGUKICovCgp2YXIgR2x5cGhWYXJpYXRpb25Qcm9jZXNzb3IgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gR2x5cGhWYXJpYXRpb25Qcm9jZXNzb3IoZm9udCwgY29vcmRzKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgR2x5cGhWYXJpYXRpb25Qcm9jZXNzb3IpOwoKICAgIHRoaXMuZm9udCA9IGZvbnQ7CiAgICB0aGlzLm5vcm1hbGl6ZWRDb29yZHMgPSB0aGlzLm5vcm1hbGl6ZUNvb3Jkcyhjb29yZHMpOwogICAgdGhpcy5ibGVuZFZlY3RvcnMgPSBuZXcgX01hcCgpOwogIH0KCiAgR2x5cGhWYXJpYXRpb25Qcm9jZXNzb3IucHJvdG90eXBlLm5vcm1hbGl6ZUNvb3JkcyA9IGZ1bmN0aW9uIG5vcm1hbGl6ZUNvb3Jkcyhjb29yZHMpIHsKICAgIC8vIHRoZSBkZWZhdWx0IG1hcHBpbmcgaXMgbGluZWFyIGFsb25nIGVhY2ggYXhpcywgaW4gdHdvIHNlZ21lbnRzOgogICAgLy8gZnJvbSB0aGUgbWluVmFsdWUgdG8gZGVmYXVsdFZhbHVlLCBhbmQgZnJvbSBkZWZhdWx0VmFsdWUgdG8gbWF4VmFsdWUuCiAgICB2YXIgbm9ybWFsaXplZCA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZvbnQuZnZhci5heGlzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBheGlzID0gdGhpcy5mb250LmZ2YXIuYXhpc1tpXTsKICAgICAgaWYgKGNvb3Jkc1tpXSA8IGF4aXMuZGVmYXVsdFZhbHVlKSB7CiAgICAgICAgbm9ybWFsaXplZC5wdXNoKChjb29yZHNbaV0gLSBheGlzLmRlZmF1bHRWYWx1ZSArIF9OdW1iZXIkRVBTSUxPTikgLyAoYXhpcy5kZWZhdWx0VmFsdWUgLSBheGlzLm1pblZhbHVlICsgX051bWJlciRFUFNJTE9OKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbm9ybWFsaXplZC5wdXNoKChjb29yZHNbaV0gLSBheGlzLmRlZmF1bHRWYWx1ZSArIF9OdW1iZXIkRVBTSUxPTikgLyAoYXhpcy5tYXhWYWx1ZSAtIGF4aXMuZGVmYXVsdFZhbHVlICsgX051bWJlciRFUFNJTE9OKSk7CiAgICAgIH0KICAgIH0KCiAgICAvLyBpZiB0aGVyZSBpcyBhbiBhdmFyIHRhYmxlLCB0aGUgbm9ybWFsaXplZCB2YWx1ZSBpcyBjYWxjdWxhdGVkCiAgICAvLyBieSBpbnRlcnBvbGF0aW5nIGJldHdlZW4gdGhlIHR3byBuZWFyZXN0IG1hcHBlZCB2YWx1ZXMuCiAgICBpZiAodGhpcy5mb250LmF2YXIpIHsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZvbnQuYXZhci5zZWdtZW50Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIHNlZ21lbnQgPSB0aGlzLmZvbnQuYXZhci5zZWdtZW50W2ldOwogICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2VnbWVudC5jb3JyZXNwb25kZW5jZS5sZW5ndGg7IGorKykgewogICAgICAgICAgdmFyIHBhaXIgPSBzZWdtZW50LmNvcnJlc3BvbmRlbmNlW2pdOwogICAgICAgICAgaWYgKGogPj0gMSAmJiBub3JtYWxpemVkW2ldIDwgcGFpci5mcm9tQ29vcmQpIHsKICAgICAgICAgICAgdmFyIHByZXYgPSBzZWdtZW50LmNvcnJlc3BvbmRlbmNlW2ogLSAxXTsKICAgICAgICAgICAgbm9ybWFsaXplZFtpXSA9ICgobm9ybWFsaXplZFtpXSAtIHByZXYuZnJvbUNvb3JkKSAqIChwYWlyLnRvQ29vcmQgLSBwcmV2LnRvQ29vcmQpICsgX051bWJlciRFUFNJTE9OKSAvIChwYWlyLmZyb21Db29yZCAtIHByZXYuZnJvbUNvb3JkICsgX051bWJlciRFUFNJTE9OKSArIHByZXYudG9Db29yZDsKCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHJldHVybiBub3JtYWxpemVkOwogIH07CgogIEdseXBoVmFyaWF0aW9uUHJvY2Vzc29yLnByb3RvdHlwZS50cmFuc2Zvcm1Qb2ludHMgPSBmdW5jdGlvbiB0cmFuc2Zvcm1Qb2ludHMoZ2lkLCBnbHlwaFBvaW50cykgewogICAgaWYgKCF0aGlzLmZvbnQuZnZhciB8fCAhdGhpcy5mb250Lmd2YXIpIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBndmFyID0gdGhpcy5mb250Lmd2YXI7CgogICAgaWYgKGdpZCA+PSBndmFyLmdseXBoQ291bnQpIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBvZmZzZXQgPSBndmFyLm9mZnNldHNbZ2lkXTsKICAgIGlmIChvZmZzZXQgPT09IGd2YXIub2Zmc2V0c1tnaWQgKyAxXSkgewogICAgICByZXR1cm47CiAgICB9CgogICAgLy8gUmVhZCB0aGUgZ3ZhciBkYXRhIGZvciB0aGlzIGdseXBoCiAgICB2YXIgc3RyZWFtID0gdGhpcy5mb250LnN0cmVhbTsKCiAgICBzdHJlYW0ucG9zID0gb2Zmc2V0OwogICAgaWYgKHN0cmVhbS5wb3MgPj0gc3RyZWFtLmxlbmd0aCkgewogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIHR1cGxlQ291bnQgPSBzdHJlYW0ucmVhZFVJbnQxNkJFKCk7CiAgICB2YXIgb2Zmc2V0VG9EYXRhID0gb2Zmc2V0ICsgc3RyZWFtLnJlYWRVSW50MTZCRSgpOwoKICAgIGlmICh0dXBsZUNvdW50ICYgVFVQTEVTX1NIQVJFX1BPSU5UX05VTUJFUlMpIHsKICAgICAgdmFyIGhlcmUgPSBzdHJlYW0ucG9zOwogICAgICBzdHJlYW0ucG9zID0gb2Zmc2V0VG9EYXRhOwogICAgICB2YXIgc2hhcmVkUG9pbnRzID0gdGhpcy5kZWNvZGVQb2ludHMoKTsKICAgICAgb2Zmc2V0VG9EYXRhID0gc3RyZWFtLnBvczsKICAgICAgc3RyZWFtLnBvcyA9IGhlcmU7CiAgICB9CgogICAgdmFyIG9yaWdQb2ludHMgPSBnbHlwaFBvaW50cy5tYXAoZnVuY3Rpb24gKHB0KSB7CiAgICAgIHJldHVybiBwdC5jb3B5KCk7CiAgICB9KTsKCiAgICB0dXBsZUNvdW50ICY9IFRVUExFX0NPVU5UX01BU0s7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR1cGxlQ291bnQ7IGkrKykgewogICAgICB2YXIgdHVwbGVEYXRhU2l6ZSA9IHN0cmVhbS5yZWFkVUludDE2QkUoKTsKICAgICAgdmFyIHR1cGxlSW5kZXggPSBzdHJlYW0ucmVhZFVJbnQxNkJFKCk7CgogICAgICBpZiAodHVwbGVJbmRleCAmIEVNQkVEREVEX1RVUExFX0NPT1JEKSB7CiAgICAgICAgdmFyIHR1cGxlQ29vcmRzID0gW107CiAgICAgICAgZm9yICh2YXIgYSA9IDA7IGEgPCBndmFyLmF4aXNDb3VudDsgYSsrKSB7CiAgICAgICAgICB0dXBsZUNvb3Jkcy5wdXNoKHN0cmVhbS5yZWFkSW50MTZCRSgpIC8gMTYzODQpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBpZiAoKHR1cGxlSW5kZXggJiBUVVBMRV9JTkRFWF9NQVNLKSA+PSBndmFyLmdsb2JhbENvb3JkQ291bnQpIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBndmFyIHRhYmxlJyk7CiAgICAgICAgfQoKICAgICAgICB2YXIgdHVwbGVDb29yZHMgPSBndmFyLmdsb2JhbENvb3Jkc1t0dXBsZUluZGV4ICYgVFVQTEVfSU5ERVhfTUFTS107CiAgICAgIH0KCiAgICAgIGlmICh0dXBsZUluZGV4ICYgSU5URVJNRURJQVRFX1RVUExFKSB7CiAgICAgICAgdmFyIHN0YXJ0Q29vcmRzID0gW107CiAgICAgICAgZm9yICh2YXIgX2EgPSAwOyBfYSA8IGd2YXIuYXhpc0NvdW50OyBfYSsrKSB7CiAgICAgICAgICBzdGFydENvb3Jkcy5wdXNoKHN0cmVhbS5yZWFkSW50MTZCRSgpIC8gMTYzODQpOwogICAgICAgIH0KCiAgICAgICAgdmFyIGVuZENvb3JkcyA9IFtdOwogICAgICAgIGZvciAodmFyIF9hMiA9IDA7IF9hMiA8IGd2YXIuYXhpc0NvdW50OyBfYTIrKykgewogICAgICAgICAgZW5kQ29vcmRzLnB1c2goc3RyZWFtLnJlYWRJbnQxNkJFKCkgLyAxNjM4NCk7CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBHZXQgdGhlIGZhY3RvciBhdCB3aGljaCB0byBhcHBseSB0aGlzIHR1cGxlCiAgICAgIHZhciBmYWN0b3IgPSB0aGlzLnR1cGxlRmFjdG9yKHR1cGxlSW5kZXgsIHR1cGxlQ29vcmRzLCBzdGFydENvb3JkcywgZW5kQ29vcmRzKTsKICAgICAgaWYgKGZhY3RvciA9PT0gMCkgewogICAgICAgIG9mZnNldFRvRGF0YSArPSB0dXBsZURhdGFTaXplOwogICAgICAgIGNvbnRpbnVlOwogICAgICB9CgogICAgICB2YXIgaGVyZSA9IHN0cmVhbS5wb3M7CiAgICAgIHN0cmVhbS5wb3MgPSBvZmZzZXRUb0RhdGE7CgogICAgICBpZiAodHVwbGVJbmRleCAmIFBSSVZBVEVfUE9JTlRfTlVNQkVSUykgewogICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmRlY29kZVBvaW50cygpOwogICAgICB9IGVsc2UgewogICAgICAgIHZhciBwb2ludHMgPSBzaGFyZWRQb2ludHM7CiAgICAgIH0KCiAgICAgIC8vIHBvaW50cy5sZW5ndGggPSAwIG1lYW5zIHRoZXJlIGFyZSBkZWx0YXMgZm9yIGFsbCBwb2ludHMKICAgICAgdmFyIG5Qb2ludHMgPSBwb2ludHMubGVuZ3RoID09PSAwID8gZ2x5cGhQb2ludHMubGVuZ3RoIDogcG9pbnRzLmxlbmd0aDsKICAgICAgdmFyIHhEZWx0YXMgPSB0aGlzLmRlY29kZURlbHRhcyhuUG9pbnRzKTsKICAgICAgdmFyIHlEZWx0YXMgPSB0aGlzLmRlY29kZURlbHRhcyhuUG9pbnRzKTsKCiAgICAgIGlmIChwb2ludHMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgLy8gYWxsIHBvaW50cwogICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBnbHlwaFBvaW50cy5sZW5ndGg7IF9pKyspIHsKICAgICAgICAgIHZhciBwb2ludCA9IGdseXBoUG9pbnRzW19pXTsKICAgICAgICAgIHBvaW50LnggKz0gTWF0aC5yb3VuZCh4RGVsdGFzW19pXSAqIGZhY3Rvcik7CiAgICAgICAgICBwb2ludC55ICs9IE1hdGgucm91bmQoeURlbHRhc1tfaV0gKiBmYWN0b3IpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgb3V0UG9pbnRzID0gb3JpZ1BvaW50cy5tYXAoZnVuY3Rpb24gKHB0KSB7CiAgICAgICAgICByZXR1cm4gcHQuY29weSgpOwogICAgICAgIH0pOwogICAgICAgIHZhciBoYXNEZWx0YSA9IGdseXBoUG9pbnRzLm1hcChmdW5jdGlvbiAoKSB7CiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHBvaW50cy5sZW5ndGg7IF9pMisrKSB7CiAgICAgICAgICB2YXIgaWR4ID0gcG9pbnRzW19pMl07CiAgICAgICAgICBpZiAoaWR4IDwgZ2x5cGhQb2ludHMubGVuZ3RoKSB7CiAgICAgICAgICAgIHZhciBfcG9pbnQgPSBvdXRQb2ludHNbaWR4XTsKICAgICAgICAgICAgaGFzRGVsdGFbaWR4XSA9IHRydWU7CgogICAgICAgICAgICBfcG9pbnQueCArPSBNYXRoLnJvdW5kKHhEZWx0YXNbX2kyXSAqIGZhY3Rvcik7CiAgICAgICAgICAgIF9wb2ludC55ICs9IE1hdGgucm91bmQoeURlbHRhc1tfaTJdICogZmFjdG9yKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHRoaXMuaW50ZXJwb2xhdGVNaXNzaW5nRGVsdGFzKG91dFBvaW50cywgb3JpZ1BvaW50cywgaGFzRGVsdGEpOwoKICAgICAgICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBnbHlwaFBvaW50cy5sZW5ndGg7IF9pMysrKSB7CiAgICAgICAgICB2YXIgZGVsdGFYID0gb3V0UG9pbnRzW19pM10ueCAtIG9yaWdQb2ludHNbX2kzXS54OwogICAgICAgICAgdmFyIGRlbHRhWSA9IG91dFBvaW50c1tfaTNdLnkgLSBvcmlnUG9pbnRzW19pM10ueTsKCiAgICAgICAgICBnbHlwaFBvaW50c1tfaTNdLnggKz0gZGVsdGFYOwogICAgICAgICAgZ2x5cGhQb2ludHNbX2kzXS55ICs9IGRlbHRhWTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIG9mZnNldFRvRGF0YSArPSB0dXBsZURhdGFTaXplOwogICAgICBzdHJlYW0ucG9zID0gaGVyZTsKICAgIH0KICB9OwoKICBHbHlwaFZhcmlhdGlvblByb2Nlc3Nvci5wcm90b3R5cGUuZGVjb2RlUG9pbnRzID0gZnVuY3Rpb24gZGVjb2RlUG9pbnRzKCkgewogICAgdmFyIHN0cmVhbSA9IHRoaXMuZm9udC5zdHJlYW07CiAgICB2YXIgY291bnQgPSBzdHJlYW0ucmVhZFVJbnQ4KCk7CgogICAgaWYgKGNvdW50ICYgUE9JTlRTX0FSRV9XT1JEUykgewogICAgICBjb3VudCA9IChjb3VudCAmIFBPSU5UX1JVTl9DT1VOVF9NQVNLKSA8PCA4IHwgc3RyZWFtLnJlYWRVSW50OCgpOwogICAgfQoKICAgIHZhciBwb2ludHMgPSBuZXcgVWludDE2QXJyYXkoY291bnQpOwogICAgdmFyIGkgPSAwOwogICAgdmFyIHBvaW50ID0gMDsKICAgIHdoaWxlIChpIDwgY291bnQpIHsKICAgICAgdmFyIHJ1biA9IHN0cmVhbS5yZWFkVUludDgoKTsKICAgICAgdmFyIHJ1bkNvdW50ID0gKHJ1biAmIFBPSU5UX1JVTl9DT1VOVF9NQVNLKSArIDE7CiAgICAgIHZhciBmbiA9IHJ1biAmIFBPSU5UU19BUkVfV09SRFMgPyBzdHJlYW0ucmVhZFVJbnQxNiA6IHN0cmVhbS5yZWFkVUludDg7CgogICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJ1bkNvdW50ICYmIGkgPCBjb3VudDsgaisrKSB7CiAgICAgICAgcG9pbnQgKz0gZm4uY2FsbChzdHJlYW0pOwogICAgICAgIHBvaW50c1tpKytdID0gcG9pbnQ7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gcG9pbnRzOwogIH07CgogIEdseXBoVmFyaWF0aW9uUHJvY2Vzc29yLnByb3RvdHlwZS5kZWNvZGVEZWx0YXMgPSBmdW5jdGlvbiBkZWNvZGVEZWx0YXMoY291bnQpIHsKICAgIHZhciBzdHJlYW0gPSB0aGlzLmZvbnQuc3RyZWFtOwogICAgdmFyIGkgPSAwOwogICAgdmFyIGRlbHRhcyA9IG5ldyBJbnQxNkFycmF5KGNvdW50KTsKCiAgICB3aGlsZSAoaSA8IGNvdW50KSB7CiAgICAgIHZhciBydW4gPSBzdHJlYW0ucmVhZFVJbnQ4KCk7CiAgICAgIHZhciBydW5Db3VudCA9IChydW4gJiBERUxUQV9SVU5fQ09VTlRfTUFTSykgKyAxOwoKICAgICAgaWYgKHJ1biAmIERFTFRBU19BUkVfWkVSTykgewogICAgICAgIGkgKz0gcnVuQ291bnQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGZuID0gcnVuICYgREVMVEFTX0FSRV9XT1JEUyA/IHN0cmVhbS5yZWFkSW50MTZCRSA6IHN0cmVhbS5yZWFkSW50ODsKICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJ1bkNvdW50ICYmIGkgPCBjb3VudDsgaisrKSB7CiAgICAgICAgICBkZWx0YXNbaSsrXSA9IGZuLmNhbGwoc3RyZWFtKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gZGVsdGFzOwogIH07CgogIEdseXBoVmFyaWF0aW9uUHJvY2Vzc29yLnByb3RvdHlwZS50dXBsZUZhY3RvciA9IGZ1bmN0aW9uIHR1cGxlRmFjdG9yKHR1cGxlSW5kZXgsIHR1cGxlQ29vcmRzLCBzdGFydENvb3JkcywgZW5kQ29vcmRzKSB7CiAgICB2YXIgbm9ybWFsaXplZCA9IHRoaXMubm9ybWFsaXplZENvb3JkczsKICAgIHZhciBndmFyID0gdGhpcy5mb250Lmd2YXI7CgogICAgdmFyIGZhY3RvciA9IDE7CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBndmFyLmF4aXNDb3VudDsgaSsrKSB7CiAgICAgIGlmICh0dXBsZUNvb3Jkc1tpXSA9PT0gMCkgewogICAgICAgIGNvbnRpbnVlOwogICAgICB9CgogICAgICBpZiAobm9ybWFsaXplZFtpXSA9PT0gMCkgewogICAgICAgIHJldHVybiAwOwogICAgICB9CgogICAgICBpZiAoKHR1cGxlSW5kZXggJiBJTlRFUk1FRElBVEVfVFVQTEUpID09PSAwKSB7CiAgICAgICAgaWYgKG5vcm1hbGl6ZWRbaV0gPCBNYXRoLm1pbigwLCB0dXBsZUNvb3Jkc1tpXSkgfHwgbm9ybWFsaXplZFtpXSA+IE1hdGgubWF4KDAsIHR1cGxlQ29vcmRzW2ldKSkgewogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAgICBmYWN0b3IgPSAoZmFjdG9yICogbm9ybWFsaXplZFtpXSArIF9OdW1iZXIkRVBTSUxPTikgLyAodHVwbGVDb29yZHNbaV0gKyBfTnVtYmVyJEVQU0lMT04pOwogICAgICB9IGVsc2UgewogICAgICAgIGlmIChub3JtYWxpemVkW2ldIDwgc3RhcnRDb29yZHNbaV0gfHwgbm9ybWFsaXplZFtpXSA+IGVuZENvb3Jkc1tpXSkgewogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfSBlbHNlIGlmIChub3JtYWxpemVkW2ldIDwgdHVwbGVDb29yZHNbaV0pIHsKICAgICAgICAgIGZhY3RvciA9IGZhY3RvciAqIChub3JtYWxpemVkW2ldIC0gc3RhcnRDb29yZHNbaV0gKyBfTnVtYmVyJEVQU0lMT04pIC8gKHR1cGxlQ29vcmRzW2ldIC0gc3RhcnRDb29yZHNbaV0gKyBfTnVtYmVyJEVQU0lMT04pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBmYWN0b3IgPSBmYWN0b3IgKiAoZW5kQ29vcmRzW2ldIC0gbm9ybWFsaXplZFtpXSArIF9OdW1iZXIkRVBTSUxPTikgLyAoZW5kQ29vcmRzW2ldIC0gdHVwbGVDb29yZHNbaV0gKyBfTnVtYmVyJEVQU0lMT04pOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHJldHVybiBmYWN0b3I7CiAgfTsKCiAgLy8gSW50ZXJwb2xhdGVzIHBvaW50cyB3aXRob3V0IGRlbHRhIHZhbHVlcy4KICAvLyBOZWVkZWQgZm9yIHRoZSDDmCBhbmQgUSBnbHlwaHMgaW4gU2tpYS4KICAvLyBBbGdvcml0aG0gZnJvbSBGcmVldHlwZS4KCgogIEdseXBoVmFyaWF0aW9uUHJvY2Vzc29yLnByb3RvdHlwZS5pbnRlcnBvbGF0ZU1pc3NpbmdEZWx0YXMgPSBmdW5jdGlvbiBpbnRlcnBvbGF0ZU1pc3NpbmdEZWx0YXMocG9pbnRzLCBpblBvaW50cywgaGFzRGVsdGEpIHsKICAgIGlmIChwb2ludHMubGVuZ3RoID09PSAwKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgcG9pbnQgPSAwOwogICAgd2hpbGUgKHBvaW50IDwgcG9pbnRzLmxlbmd0aCkgewogICAgICB2YXIgZmlyc3RQb2ludCA9IHBvaW50OwoKICAgICAgLy8gZmluZCB0aGUgZW5kIHBvaW50IG9mIHRoZSBjb250b3VyCiAgICAgIHZhciBlbmRQb2ludCA9IHBvaW50OwogICAgICB2YXIgcHQgPSBwb2ludHNbZW5kUG9pbnRdOwogICAgICB3aGlsZSAoIXB0LmVuZENvbnRvdXIpIHsKICAgICAgICBwdCA9IHBvaW50c1srK2VuZFBvaW50XTsKICAgICAgfQoKICAgICAgLy8gZmluZCB0aGUgZmlyc3QgcG9pbnQgdGhhdCBoYXMgYSBkZWx0YQogICAgICB3aGlsZSAocG9pbnQgPD0gZW5kUG9pbnQgJiYgIWhhc0RlbHRhW3BvaW50XSkgewogICAgICAgIHBvaW50Kys7CiAgICAgIH0KCiAgICAgIGlmIChwb2ludCA+IGVuZFBvaW50KSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KCiAgICAgIHZhciBmaXJzdERlbHRhID0gcG9pbnQ7CiAgICAgIHZhciBjdXJEZWx0YSA9IHBvaW50OwogICAgICBwb2ludCsrOwoKICAgICAgd2hpbGUgKHBvaW50IDw9IGVuZFBvaW50KSB7CiAgICAgICAgLy8gZmluZCB0aGUgbmV4dCBwb2ludCB3aXRoIGEgZGVsdGEsIGFuZCBpbnRlcnBvbGF0ZSBpbnRlcm1lZGlhdGUgcG9pbnRzCiAgICAgICAgaWYgKGhhc0RlbHRhW3BvaW50XSkgewogICAgICAgICAgdGhpcy5kZWx0YUludGVycG9sYXRlKGN1ckRlbHRhICsgMSwgcG9pbnQgLSAxLCBjdXJEZWx0YSwgcG9pbnQsIGluUG9pbnRzLCBwb2ludHMpOwogICAgICAgICAgY3VyRGVsdGEgPSBwb2ludDsKICAgICAgICB9CgogICAgICAgIHBvaW50Kys7CiAgICAgIH0KCiAgICAgIC8vIHNoaWZ0IGNvbnRvdXIgaWYgd2Ugb25seSBoYXZlIGEgc2luZ2xlIGRlbHRhCiAgICAgIGlmIChjdXJEZWx0YSA9PT0gZmlyc3REZWx0YSkgewogICAgICAgIHRoaXMuZGVsdGFTaGlmdChmaXJzdFBvaW50LCBlbmRQb2ludCwgY3VyRGVsdGEsIGluUG9pbnRzLCBwb2ludHMpOwogICAgICB9IGVsc2UgewogICAgICAgIC8vIG90aGVyd2lzZSwgaGFuZGxlIHRoZSByZW1haW5pbmcgcG9pbnRzIGF0IHRoZSBlbmQgYW5kIGJlZ2lubmluZyBvZiB0aGUgY29udG91cgogICAgICAgIHRoaXMuZGVsdGFJbnRlcnBvbGF0ZShjdXJEZWx0YSArIDEsIGVuZFBvaW50LCBjdXJEZWx0YSwgZmlyc3REZWx0YSwgaW5Qb2ludHMsIHBvaW50cyk7CgogICAgICAgIGlmIChmaXJzdERlbHRhID4gMCkgewogICAgICAgICAgdGhpcy5kZWx0YUludGVycG9sYXRlKGZpcnN0UG9pbnQsIGZpcnN0RGVsdGEgLSAxLCBjdXJEZWx0YSwgZmlyc3REZWx0YSwgaW5Qb2ludHMsIHBvaW50cyk7CiAgICAgICAgfQogICAgICB9CgogICAgICBwb2ludCA9IGVuZFBvaW50ICsgMTsKICAgIH0KICB9OwoKICBHbHlwaFZhcmlhdGlvblByb2Nlc3Nvci5wcm90b3R5cGUuZGVsdGFJbnRlcnBvbGF0ZSA9IGZ1bmN0aW9uIGRlbHRhSW50ZXJwb2xhdGUocDEsIHAyLCByZWYxLCByZWYyLCBpblBvaW50cywgb3V0UG9pbnRzKSB7CiAgICBpZiAocDEgPiBwMikgewogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIGl0ZXJhYmxlID0gWyd4JywgJ3knXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmFibGUubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGsgPSBpdGVyYWJsZVtpXTsKICAgICAgaWYgKGluUG9pbnRzW3JlZjFdW2tdID4gaW5Qb2ludHNbcmVmMl1ba10pIHsKICAgICAgICB2YXIgcCA9IHJlZjE7CiAgICAgICAgcmVmMSA9IHJlZjI7CiAgICAgICAgcmVmMiA9IHA7CiAgICAgIH0KCiAgICAgIHZhciBpbjEgPSBpblBvaW50c1tyZWYxXVtrXTsKICAgICAgdmFyIGluMiA9IGluUG9pbnRzW3JlZjJdW2tdOwogICAgICB2YXIgb3V0MSA9IG91dFBvaW50c1tyZWYxXVtrXTsKICAgICAgdmFyIG91dDIgPSBvdXRQb2ludHNbcmVmMl1ba107CgogICAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIHBvaW50cyBoYXZlIHRoZSBzYW1lIGNvb3JkaW5hdGUgYnV0IGRpZmZlcmVudAogICAgICAvLyBkZWx0YSwgaW5mZXJyZWQgZGVsdGEgaXMgemVyby4gIE90aGVyd2lzZSBpbnRlcnBvbGF0ZS4KICAgICAgaWYgKGluMSAhPT0gaW4yIHx8IG91dDEgPT09IG91dDIpIHsKICAgICAgICB2YXIgc2NhbGUgPSBpbjEgPT09IGluMiA/IDAgOiAob3V0MiAtIG91dDEpIC8gKGluMiAtIGluMSk7CgogICAgICAgIGZvciAodmFyIF9wID0gcDE7IF9wIDw9IHAyOyBfcCsrKSB7CiAgICAgICAgICB2YXIgb3V0ID0gaW5Qb2ludHNbX3BdW2tdOwoKICAgICAgICAgIGlmIChvdXQgPD0gaW4xKSB7CiAgICAgICAgICAgIG91dCArPSBvdXQxIC0gaW4xOwogICAgICAgICAgfSBlbHNlIGlmIChvdXQgPj0gaW4yKSB7CiAgICAgICAgICAgIG91dCArPSBvdXQyIC0gaW4yOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgb3V0ID0gb3V0MSArIChvdXQgLSBpbjEpICogc2NhbGU7CiAgICAgICAgICB9CgogICAgICAgICAgb3V0UG9pbnRzW19wXVtrXSA9IG91dDsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9OwoKICBHbHlwaFZhcmlhdGlvblByb2Nlc3Nvci5wcm90b3R5cGUuZGVsdGFTaGlmdCA9IGZ1bmN0aW9uIGRlbHRhU2hpZnQocDEsIHAyLCByZWYsIGluUG9pbnRzLCBvdXRQb2ludHMpIHsKICAgIHZhciBkZWx0YVggPSBvdXRQb2ludHNbcmVmXS54IC0gaW5Qb2ludHNbcmVmXS54OwogICAgdmFyIGRlbHRhWSA9IG91dFBvaW50c1tyZWZdLnkgLSBpblBvaW50c1tyZWZdLnk7CgogICAgaWYgKGRlbHRhWCA9PT0gMCAmJiBkZWx0YVkgPT09IDApIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIGZvciAodmFyIHAgPSBwMTsgcCA8PSBwMjsgcCsrKSB7CiAgICAgIGlmIChwICE9PSByZWYpIHsKICAgICAgICBvdXRQb2ludHNbcF0ueCArPSBkZWx0YVg7CiAgICAgICAgb3V0UG9pbnRzW3BdLnkgKz0gZGVsdGFZOwogICAgICB9CiAgICB9CiAgfTsKCiAgR2x5cGhWYXJpYXRpb25Qcm9jZXNzb3IucHJvdG90eXBlLmdldEFkdmFuY2VBZGp1c3RtZW50ID0gZnVuY3Rpb24gZ2V0QWR2YW5jZUFkanVzdG1lbnQoZ2lkLCB0YWJsZSkgewogICAgdmFyIG91dGVySW5kZXggPSB2b2lkIDAsCiAgICAgICAgaW5uZXJJbmRleCA9IHZvaWQgMDsKCiAgICBpZiAodGFibGUuYWR2YW5jZVdpZHRoTWFwcGluZykgewogICAgICB2YXIgaWR4ID0gZ2lkOwogICAgICBpZiAoaWR4ID49IHRhYmxlLmFkdmFuY2VXaWR0aE1hcHBpbmcubWFwQ291bnQpIHsKICAgICAgICBpZHggPSB0YWJsZS5hZHZhbmNlV2lkdGhNYXBwaW5nLm1hcENvdW50IC0gMTsKICAgICAgfQoKICAgICAgdmFyIGVudHJ5Rm9ybWF0ID0gdGFibGUuYWR2YW5jZVdpZHRoTWFwcGluZy5lbnRyeUZvcm1hdDsKICAgICAgdmFyIF90YWJsZSRhZHZhbmNlV2lkdGhNYSA9IHRhYmxlLmFkdmFuY2VXaWR0aE1hcHBpbmcubWFwRGF0YVtpZHhdOwogICAgICBvdXRlckluZGV4ID0gX3RhYmxlJGFkdmFuY2VXaWR0aE1hLm91dGVySW5kZXg7CiAgICAgIGlubmVySW5kZXggPSBfdGFibGUkYWR2YW5jZVdpZHRoTWEuaW5uZXJJbmRleDsKICAgIH0gZWxzZSB7CiAgICAgIG91dGVySW5kZXggPSAwOwogICAgICBpbm5lckluZGV4ID0gZ2lkOwogICAgfQoKICAgIHJldHVybiB0aGlzLmdldERlbHRhKHRhYmxlLml0ZW1WYXJpYXRpb25TdG9yZSwgb3V0ZXJJbmRleCwgaW5uZXJJbmRleCk7CiAgfTsKCiAgLy8gU2VlIHBzZXVkbyBjb2RlIGZyb20gYEZvbnQgVmFyaWF0aW9ucyBPdmVydmlldycKICAvLyBpbiB0aGUgT3BlblR5cGUgc3BlY2lmaWNhdGlvbi4KCgogIEdseXBoVmFyaWF0aW9uUHJvY2Vzc29yLnByb3RvdHlwZS5nZXREZWx0YSA9IGZ1bmN0aW9uIGdldERlbHRhKGl0ZW1TdG9yZSwgb3V0ZXJJbmRleCwgaW5uZXJJbmRleCkgewogICAgaWYgKG91dGVySW5kZXggPj0gaXRlbVN0b3JlLml0ZW1WYXJpYXRpb25EYXRhLmxlbmd0aCkgewogICAgICByZXR1cm4gMDsKICAgIH0KCiAgICB2YXIgdmFyRGF0YSA9IGl0ZW1TdG9yZS5pdGVtVmFyaWF0aW9uRGF0YVtvdXRlckluZGV4XTsKICAgIGlmIChpbm5lckluZGV4ID49IHZhckRhdGEuZGVsdGFTZXRzLmxlbmd0aCkgewogICAgICByZXR1cm4gMDsKICAgIH0KCiAgICB2YXIgZGVsdGFTZXQgPSB2YXJEYXRhLmRlbHRhU2V0c1tpbm5lckluZGV4XTsKICAgIHZhciBibGVuZFZlY3RvciA9IHRoaXMuZ2V0QmxlbmRWZWN0b3IoaXRlbVN0b3JlLCBvdXRlckluZGV4KTsKICAgIHZhciBuZXRBZGp1c3RtZW50ID0gMDsKCiAgICBmb3IgKHZhciBtYXN0ZXIgPSAwOyBtYXN0ZXIgPCB2YXJEYXRhLnJlZ2lvbkluZGV4Q291bnQ7IG1hc3RlcisrKSB7CiAgICAgIG5ldEFkanVzdG1lbnQgKz0gZGVsdGFTZXQuZGVsdGFzW21hc3Rlcl0gKiBibGVuZFZlY3RvclttYXN0ZXJdOwogICAgfQoKICAgIHJldHVybiBuZXRBZGp1c3RtZW50OwogIH07CgogIEdseXBoVmFyaWF0aW9uUHJvY2Vzc29yLnByb3RvdHlwZS5nZXRCbGVuZFZlY3RvciA9IGZ1bmN0aW9uIGdldEJsZW5kVmVjdG9yKGl0ZW1TdG9yZSwgb3V0ZXJJbmRleCkgewogICAgdmFyIHZhckRhdGEgPSBpdGVtU3RvcmUuaXRlbVZhcmlhdGlvbkRhdGFbb3V0ZXJJbmRleF07CiAgICBpZiAodGhpcy5ibGVuZFZlY3RvcnMuaGFzKHZhckRhdGEpKSB7CiAgICAgIHJldHVybiB0aGlzLmJsZW5kVmVjdG9ycy5nZXQodmFyRGF0YSk7CiAgICB9CgogICAgdmFyIG5vcm1hbGl6ZWRDb29yZHMgPSB0aGlzLm5vcm1hbGl6ZWRDb29yZHM7CiAgICB2YXIgYmxlbmRWZWN0b3IgPSBbXTsKCiAgICAvLyBvdXRlciBsb29wIHN0ZXBzIHRocm91Z2ggbWFzdGVyIGRlc2lnbnMgdG8gYmUgYmxlbmRlZAogICAgZm9yICh2YXIgbWFzdGVyID0gMDsgbWFzdGVyIDwgdmFyRGF0YS5yZWdpb25JbmRleENvdW50OyBtYXN0ZXIrKykgewogICAgICB2YXIgc2NhbGFyID0gMTsKICAgICAgdmFyIHJlZ2lvbkluZGV4ID0gdmFyRGF0YS5yZWdpb25JbmRleGVzW21hc3Rlcl07CiAgICAgIHZhciBheGVzID0gaXRlbVN0b3JlLnZhcmlhdGlvblJlZ2lvbkxpc3QudmFyaWF0aW9uUmVnaW9uc1tyZWdpb25JbmRleF07CgogICAgICAvLyBpbm5lciBsb29wIHN0ZXBzIHRocm91Z2ggYXhlcyBpbiB0aGlzIHJlZ2lvbgogICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGF4ZXMubGVuZ3RoOyBqKyspIHsKICAgICAgICB2YXIgYXhpcyA9IGF4ZXNbal07CiAgICAgICAgdmFyIGF4aXNTY2FsYXIgPSB2b2lkIDA7CgogICAgICAgIC8vIGNvbXB1dGUgdGhlIHNjYWxhciBjb250cmlidXRpb24gb2YgdGhpcyBheGlzCiAgICAgICAgLy8gaWdub3JlIGludmFsaWQgcmFuZ2VzCiAgICAgICAgaWYgKGF4aXMuc3RhcnRDb29yZCA+IGF4aXMucGVha0Nvb3JkIHx8IGF4aXMucGVha0Nvb3JkID4gYXhpcy5lbmRDb29yZCkgewogICAgICAgICAgYXhpc1NjYWxhciA9IDE7CiAgICAgICAgfSBlbHNlIGlmIChheGlzLnN0YXJ0Q29vcmQgPCAwICYmIGF4aXMuZW5kQ29vcmQgPiAwICYmIGF4aXMucGVha0Nvb3JkICE9PSAwKSB7CiAgICAgICAgICBheGlzU2NhbGFyID0gMTsKCiAgICAgICAgICAvLyBwZWFrIG9mIDAgbWVhbnMgaWdub3JlIHRoaXMgYXhpcwogICAgICAgIH0gZWxzZSBpZiAoYXhpcy5wZWFrQ29vcmQgPT09IDApIHsKICAgICAgICAgIGF4aXNTY2FsYXIgPSAxOwoKICAgICAgICAgIC8vIGlnbm9yZSB0aGlzIHJlZ2lvbiBpZiBjb29yZHMgYXJlIG91dCBvZiByYW5nZQogICAgICAgIH0gZWxzZSBpZiAobm9ybWFsaXplZENvb3Jkc1tqXSA8IGF4aXMuc3RhcnRDb29yZCB8fCBub3JtYWxpemVkQ29vcmRzW2pdID4gYXhpcy5lbmRDb29yZCkgewogICAgICAgICAgYXhpc1NjYWxhciA9IDA7CgogICAgICAgICAgLy8gY2FsY3VsYXRlIGEgcHJvcG9ydGlvbmFsIGZhY3RvcgogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAobm9ybWFsaXplZENvb3Jkc1tqXSA9PT0gYXhpcy5wZWFrQ29vcmQpIHsKICAgICAgICAgICAgYXhpc1NjYWxhciA9IDE7CiAgICAgICAgICB9IGVsc2UgaWYgKG5vcm1hbGl6ZWRDb29yZHNbal0gPCBheGlzLnBlYWtDb29yZCkgewogICAgICAgICAgICBheGlzU2NhbGFyID0gKG5vcm1hbGl6ZWRDb29yZHNbal0gLSBheGlzLnN0YXJ0Q29vcmQgKyBfTnVtYmVyJEVQU0lMT04pIC8gKGF4aXMucGVha0Nvb3JkIC0gYXhpcy5zdGFydENvb3JkICsgX051bWJlciRFUFNJTE9OKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGF4aXNTY2FsYXIgPSAoYXhpcy5lbmRDb29yZCAtIG5vcm1hbGl6ZWRDb29yZHNbal0gKyBfTnVtYmVyJEVQU0lMT04pIC8gKGF4aXMuZW5kQ29vcmQgLSBheGlzLnBlYWtDb29yZCArIF9OdW1iZXIkRVBTSUxPTik7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyB0YWtlIHByb2R1Y3Qgb2YgYWxsIHRoZSBheGlzIHNjYWxhcnMKICAgICAgICBzY2FsYXIgKj0gYXhpc1NjYWxhcjsKICAgICAgfQoKICAgICAgYmxlbmRWZWN0b3JbbWFzdGVyXSA9IHNjYWxhcjsKICAgIH0KCiAgICB0aGlzLmJsZW5kVmVjdG9ycy5zZXQodmFyRGF0YSwgYmxlbmRWZWN0b3IpOwogICAgcmV0dXJuIGJsZW5kVmVjdG9yOwogIH07CgogIHJldHVybiBHbHlwaFZhcmlhdGlvblByb2Nlc3NvcjsKfSgpOwoKdmFyIFN1YnNldCA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBTdWJzZXQoZm9udCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFN1YnNldCk7CgogICAgdGhpcy5mb250ID0gZm9udDsKICAgIHRoaXMuZ2x5cGhzID0gW107CiAgICB0aGlzLm1hcHBpbmcgPSB7fTsKCiAgICAvLyBhbHdheXMgaW5jbHVkZSB0aGUgbWlzc2luZyBnbHlwaAogICAgdGhpcy5pbmNsdWRlR2x5cGgoMCk7CiAgfQoKICBTdWJzZXQucHJvdG90eXBlLmluY2x1ZGVHbHlwaCA9IGZ1bmN0aW9uIGluY2x1ZGVHbHlwaChnbHlwaCkgewogICAgaWYgKCh0eXBlb2YgZ2x5cGggPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKGdseXBoKSkgPT09ICdvYmplY3QnKSB7CiAgICAgIGdseXBoID0gZ2x5cGguaWQ7CiAgICB9CgogICAgaWYgKHRoaXMubWFwcGluZ1tnbHlwaF0gPT0gbnVsbCkgewogICAgICB0aGlzLmdseXBocy5wdXNoKGdseXBoKTsKICAgICAgdGhpcy5tYXBwaW5nW2dseXBoXSA9IHRoaXMuZ2x5cGhzLmxlbmd0aCAtIDE7CiAgICB9CgogICAgcmV0dXJuIHRoaXMubWFwcGluZ1tnbHlwaF07CiAgfTsKCiAgU3Vic2V0LnByb3RvdHlwZS5lbmNvZGVTdHJlYW0gPSBmdW5jdGlvbiBlbmNvZGVTdHJlYW0oKSB7CiAgICB2YXIgX3RoaXMgPSB0aGlzOwoKICAgIHZhciBzID0gbmV3IHIuRW5jb2RlU3RyZWFtKCk7CgogICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgIF90aGlzLmVuY29kZShzKTsKICAgICAgcmV0dXJuIHMuZW5kKCk7CiAgICB9KTsKCiAgICByZXR1cm4gczsKICB9OwoKICByZXR1cm4gU3Vic2V0Owp9KCk7CgovLyBGbGFncyBmb3Igc2ltcGxlIGdseXBocwp2YXIgT05fQ1VSVkUkMSA9IDEgPDwgMDsKdmFyIFhfU0hPUlRfVkVDVE9SJDEgPSAxIDw8IDE7CnZhciBZX1NIT1JUX1ZFQ1RPUiQxID0gMSA8PCAyOwp2YXIgUkVQRUFUJDEgPSAxIDw8IDM7CnZhciBTQU1FX1gkMSA9IDEgPDwgNDsKdmFyIFNBTUVfWSQxID0gMSA8PCA1OwoKdmFyIFBvaW50JDEgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gUG9pbnQoKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUG9pbnQpOwogIH0KCiAgUG9pbnQuc2l6ZSA9IGZ1bmN0aW9uIHNpemUodmFsKSB7CiAgICByZXR1cm4gdmFsID49IDAgJiYgdmFsIDw9IDI1NSA/IDEgOiAyOwogIH07CgogIFBvaW50LmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShzdHJlYW0sIHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSAyNTUpIHsKICAgICAgc3RyZWFtLndyaXRlVUludDgodmFsdWUpOwogICAgfSBlbHNlIHsKICAgICAgc3RyZWFtLndyaXRlSW50MTZCRSh2YWx1ZSk7CiAgICB9CiAgfTsKCiAgcmV0dXJuIFBvaW50Owp9KCk7Cgp2YXIgR2x5ZiA9IG5ldyByLlN0cnVjdCh7CiAgbnVtYmVyT2ZDb250b3Vyczogci5pbnQxNiwgLy8gaWYgbmVnYXRpdmUsIHRoaXMgaXMgYSBjb21wb3NpdGUgZ2x5cGgKICB4TWluOiByLmludDE2LAogIHlNaW46IHIuaW50MTYsCiAgeE1heDogci5pbnQxNiwKICB5TWF4OiByLmludDE2LAogIGVuZFB0c09mQ29udG91cnM6IG5ldyByLkFycmF5KHIudWludDE2LCAnbnVtYmVyT2ZDb250b3VycycpLAogIGluc3RydWN0aW9uczogbmV3IHIuQXJyYXkoci51aW50OCwgci51aW50MTYpLAogIGZsYWdzOiBuZXcgci5BcnJheShyLnVpbnQ4LCAwKSwKICB4UG9pbnRzOiBuZXcgci5BcnJheShQb2ludCQxLCAwKSwKICB5UG9pbnRzOiBuZXcgci5BcnJheShQb2ludCQxLCAwKQp9KTsKCi8qKgogKiBFbmNvZGVzIFRydWVUeXBlIGdseXBoIG91dGxpbmVzCiAqLwoKdmFyIFRURkdseXBoRW5jb2RlciA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBUVEZHbHlwaEVuY29kZXIoKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVFRGR2x5cGhFbmNvZGVyKTsKICB9CgogIFRURkdseXBoRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlU2ltcGxlID0gZnVuY3Rpb24gZW5jb2RlU2ltcGxlKHBhdGgpIHsKICAgIHZhciBpbnN0cnVjdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IFtdOwoKICAgIHZhciBlbmRQdHNPZkNvbnRvdXJzID0gW107CiAgICB2YXIgeFBvaW50cyA9IFtdOwogICAgdmFyIHlQb2ludHMgPSBbXTsKICAgIHZhciBmbGFncyA9IFtdOwogICAgdmFyIHNhbWUgPSAwOwogICAgdmFyIGxhc3RYID0gMCwKICAgICAgICBsYXN0WSA9IDAsCiAgICAgICAgbGFzdEZsYWcgPSAwOwogICAgdmFyIHBvaW50Q291bnQgPSAwOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0aC5jb21tYW5kcy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgYyA9IHBhdGguY29tbWFuZHNbaV07CgogICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGMuYXJncy5sZW5ndGg7IGogKz0gMikgewogICAgICAgIHZhciB4ID0gYy5hcmdzW2pdOwogICAgICAgIHZhciB5ID0gYy5hcmdzW2ogKyAxXTsKICAgICAgICB2YXIgZmxhZyA9IDA7CgogICAgICAgIC8vIElmIHRoZSBlbmRpbmcgcG9pbnQgb2YgYSBxdWFkcmF0aWMgY3VydmUgaXMgdGhlIG1pZHBvaW50CiAgICAgICAgLy8gYmV0d2VlbiB0aGUgY29udHJvbCBwb2ludCBhbmQgdGhlIGNvbnRyb2wgcG9pbnQgb2YgdGhlIG5leHQKICAgICAgICAvLyBxdWFkcmF0aWMgY3VydmUsIHdlIGNhbiBvbWl0IHRoZSBlbmRpbmcgcG9pbnQuCiAgICAgICAgaWYgKGMuY29tbWFuZCA9PT0gJ3F1YWRyYXRpY0N1cnZlVG8nICYmIGogPT09IDIpIHsKICAgICAgICAgIHZhciBuZXh0ID0gcGF0aC5jb21tYW5kc1tpICsgMV07CiAgICAgICAgICBpZiAobmV4dCAmJiBuZXh0LmNvbW1hbmQgPT09ICdxdWFkcmF0aWNDdXJ2ZVRvJykgewogICAgICAgICAgICB2YXIgbWlkWCA9IChsYXN0WCArIG5leHQuYXJnc1swXSkgLyAyOwogICAgICAgICAgICB2YXIgbWlkWSA9IChsYXN0WSArIG5leHQuYXJnc1sxXSkgLyAyOwoKICAgICAgICAgICAgaWYgKHggPT09IG1pZFggJiYgeSA9PT0gbWlkWSkgewogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBBbGwgcG9pbnRzIGV4Y2VwdCBjb250cm9sIHBvaW50cyBhcmUgb24gY3VydmUuCiAgICAgICAgaWYgKCEoYy5jb21tYW5kID09PSAncXVhZHJhdGljQ3VydmVUbycgJiYgaiA9PT0gMCkpIHsKICAgICAgICAgIGZsYWcgfD0gT05fQ1VSVkUkMTsKICAgICAgICB9CgogICAgICAgIGZsYWcgPSB0aGlzLl9lbmNvZGVQb2ludCh4LCBsYXN0WCwgeFBvaW50cywgZmxhZywgWF9TSE9SVF9WRUNUT1IkMSwgU0FNRV9YJDEpOwogICAgICAgIGZsYWcgPSB0aGlzLl9lbmNvZGVQb2ludCh5LCBsYXN0WSwgeVBvaW50cywgZmxhZywgWV9TSE9SVF9WRUNUT1IkMSwgU0FNRV9ZJDEpOwoKICAgICAgICBpZiAoZmxhZyA9PT0gbGFzdEZsYWcgJiYgc2FtZSA8IDI1NSkgewogICAgICAgICAgZmxhZ3NbZmxhZ3MubGVuZ3RoIC0gMV0gfD0gUkVQRUFUJDE7CiAgICAgICAgICBzYW1lKys7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmIChzYW1lID4gMCkgewogICAgICAgICAgICBmbGFncy5wdXNoKHNhbWUpOwogICAgICAgICAgICBzYW1lID0gMDsKICAgICAgICAgIH0KCiAgICAgICAgICBmbGFncy5wdXNoKGZsYWcpOwogICAgICAgICAgbGFzdEZsYWcgPSBmbGFnOwogICAgICAgIH0KCiAgICAgICAgbGFzdFggPSB4OwogICAgICAgIGxhc3RZID0geTsKICAgICAgICBwb2ludENvdW50Kys7CiAgICAgIH0KCiAgICAgIGlmIChjLmNvbW1hbmQgPT09ICdjbG9zZVBhdGgnKSB7CiAgICAgICAgZW5kUHRzT2ZDb250b3Vycy5wdXNoKHBvaW50Q291bnQgLSAxKTsKICAgICAgfQogICAgfQoKICAgIC8vIENsb3NlIHRoZSBwYXRoIGlmIHRoZSBsYXN0IGNvbW1hbmQgZGlkbid0IGFscmVhZHkKICAgIGlmIChwYXRoLmNvbW1hbmRzLmxlbmd0aCA+IDEgJiYgcGF0aC5jb21tYW5kc1twYXRoLmNvbW1hbmRzLmxlbmd0aCAtIDFdLmNvbW1hbmQgIT09ICdjbG9zZVBhdGgnKSB7CiAgICAgIGVuZFB0c09mQ29udG91cnMucHVzaChwb2ludENvdW50IC0gMSk7CiAgICB9CgogICAgdmFyIGJib3ggPSBwYXRoLmJib3g7CiAgICB2YXIgZ2x5ZiA9IHsKICAgICAgbnVtYmVyT2ZDb250b3VyczogZW5kUHRzT2ZDb250b3Vycy5sZW5ndGgsCiAgICAgIHhNaW46IGJib3gubWluWCwKICAgICAgeU1pbjogYmJveC5taW5ZLAogICAgICB4TWF4OiBiYm94Lm1heFgsCiAgICAgIHlNYXg6IGJib3gubWF4WSwKICAgICAgZW5kUHRzT2ZDb250b3VyczogZW5kUHRzT2ZDb250b3VycywKICAgICAgaW5zdHJ1Y3Rpb25zOiBpbnN0cnVjdGlvbnMsCiAgICAgIGZsYWdzOiBmbGFncywKICAgICAgeFBvaW50czogeFBvaW50cywKICAgICAgeVBvaW50czogeVBvaW50cwogICAgfTsKCiAgICB2YXIgc2l6ZSA9IEdseWYuc2l6ZShnbHlmKTsKICAgIHZhciB0YWlsID0gNCAtIHNpemUgJSA0OwoKICAgIHZhciBzdHJlYW0gPSBuZXcgci5FbmNvZGVTdHJlYW0oc2l6ZSArIHRhaWwpOwogICAgR2x5Zi5lbmNvZGUoc3RyZWFtLCBnbHlmKTsKCiAgICAvLyBBbGlnbiB0byA0LWJ5dGUgbGVuZ3RoCiAgICBpZiAodGFpbCAhPT0gMCkgewogICAgICBzdHJlYW0uZmlsbCgwLCB0YWlsKTsKICAgIH0KCiAgICByZXR1cm4gc3RyZWFtLmJ1ZmZlcjsKICB9OwoKICBUVEZHbHlwaEVuY29kZXIucHJvdG90eXBlLl9lbmNvZGVQb2ludCA9IGZ1bmN0aW9uIF9lbmNvZGVQb2ludCh2YWx1ZSwgbGFzdCwgcG9pbnRzLCBmbGFnLCBzaG9ydEZsYWcsIHNhbWVGbGFnKSB7CiAgICB2YXIgZGlmZiA9IHZhbHVlIC0gbGFzdDsKCiAgICBpZiAodmFsdWUgPT09IGxhc3QpIHsKICAgICAgZmxhZyB8PSBzYW1lRmxhZzsKICAgIH0gZWxzZSB7CiAgICAgIGlmICgtMjU1IDw9IGRpZmYgJiYgZGlmZiA8PSAyNTUpIHsKICAgICAgICBmbGFnIHw9IHNob3J0RmxhZzsKICAgICAgICBpZiAoZGlmZiA8IDApIHsKICAgICAgICAgIGRpZmYgPSAtZGlmZjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZmxhZyB8PSBzYW1lRmxhZzsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHBvaW50cy5wdXNoKGRpZmYpOwogICAgfQoKICAgIHJldHVybiBmbGFnOwogIH07CgogIHJldHVybiBUVEZHbHlwaEVuY29kZXI7Cn0oKTsKCnZhciBUVEZTdWJzZXQgPSBmdW5jdGlvbiAoX1N1YnNldCkgewogIF9pbmhlcml0cyhUVEZTdWJzZXQsIF9TdWJzZXQpOwoKICBmdW5jdGlvbiBUVEZTdWJzZXQoZm9udCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRURlN1YnNldCk7CgogICAgdmFyIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX1N1YnNldC5jYWxsKHRoaXMsIGZvbnQpKTsKCiAgICBfdGhpcy5nbHlwaEVuY29kZXIgPSBuZXcgVFRGR2x5cGhFbmNvZGVyKCk7CiAgICByZXR1cm4gX3RoaXM7CiAgfQoKICBUVEZTdWJzZXQucHJvdG90eXBlLl9hZGRHbHlwaCA9IGZ1bmN0aW9uIF9hZGRHbHlwaChnaWQpIHsKICAgIHZhciBnbHlwaCA9IHRoaXMuZm9udC5nZXRHbHlwaChnaWQpOwogICAgdmFyIGdseWYgPSBnbHlwaC5fZGVjb2RlKCk7CgogICAgLy8gZ2V0IHRoZSBvZmZzZXQgdG8gdGhlIGdseXBoIGZyb20gdGhlIGxvY2EgdGFibGUKICAgIHZhciBjdXJPZmZzZXQgPSB0aGlzLmZvbnQubG9jYS5vZmZzZXRzW2dpZF07CiAgICB2YXIgbmV4dE9mZnNldCA9IHRoaXMuZm9udC5sb2NhLm9mZnNldHNbZ2lkICsgMV07CgogICAgdmFyIHN0cmVhbSA9IHRoaXMuZm9udC5fZ2V0VGFibGVTdHJlYW0oJ2dseWYnKTsKICAgIHN0cmVhbS5wb3MgKz0gY3VyT2Zmc2V0OwoKICAgIHZhciBidWZmZXIgPSBzdHJlYW0ucmVhZEJ1ZmZlcihuZXh0T2Zmc2V0IC0gY3VyT2Zmc2V0KTsKCiAgICAvLyBpZiBpdCBpcyBhIGNvbXBvdW5kIGdseXBoLCBpbmNsdWRlIGl0cyBjb21wb25lbnRzCiAgICBpZiAoZ2x5ZiAmJiBnbHlmLm51bWJlck9mQ29udG91cnMgPCAwKSB7CiAgICAgIGJ1ZmZlciA9IG5ldyBCdWZmZXIoYnVmZmVyKTsKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gZ2x5Zi5jb21wb25lbnRzLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgICB2YXIgX3JlZjsKCiAgICAgICAgaWYgKF9pc0FycmF5KSB7CiAgICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmID0gX2kudmFsdWU7CiAgICAgICAgfQoKICAgICAgICB2YXIgY29tcG9uZW50ID0gX3JlZjsKCiAgICAgICAgZ2lkID0gdGhpcy5pbmNsdWRlR2x5cGgoY29tcG9uZW50LmdseXBoSUQpOwogICAgICAgIGJ1ZmZlci53cml0ZVVJbnQxNkJFKGdpZCwgY29tcG9uZW50LnBvcyk7CiAgICAgIH0KICAgIH0gZWxzZSBpZiAoZ2x5ZiAmJiB0aGlzLmZvbnQuX3ZhcmlhdGlvblByb2Nlc3NvcikgewogICAgICAvLyBJZiB0aGlzIGlzIGEgVHJ1ZVR5cGUgdmFyaWF0aW9uIGdseXBoLCByZS1lbmNvZGUgdGhlIHBhdGgKICAgICAgYnVmZmVyID0gdGhpcy5nbHlwaEVuY29kZXIuZW5jb2RlU2ltcGxlKGdseXBoLnBhdGgsIGdseWYuaW5zdHJ1Y3Rpb25zKTsKICAgIH0KCiAgICB0aGlzLmdseWYucHVzaChidWZmZXIpOwogICAgdGhpcy5sb2NhLm9mZnNldHMucHVzaCh0aGlzLm9mZnNldCk7CgogICAgdGhpcy5obXR4Lm1ldHJpY3MucHVzaCh7CiAgICAgIGFkdmFuY2U6IGdseXBoLmFkdmFuY2VXaWR0aCwKICAgICAgYmVhcmluZzogZ2x5cGguX2dldE1ldHJpY3MoKS5sZWZ0QmVhcmluZwogICAgfSk7CgogICAgdGhpcy5vZmZzZXQgKz0gYnVmZmVyLmxlbmd0aDsKICAgIHJldHVybiB0aGlzLmdseWYubGVuZ3RoIC0gMTsKICB9OwoKICBUVEZTdWJzZXQucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShzdHJlYW0pIHsKICAgIC8vIHRhYmxlcyByZXF1aXJlZCBieSBQREYgc3BlYzoKICAgIC8vICAgaGVhZCwgaGhlYSwgbG9jYSwgbWF4cCwgY3Z0ICwgcHJlcCwgZ2x5ZiwgaG10eCwgZnBnbQogICAgLy8KICAgIC8vIGFkZGl0aW9uYWwgdGFibGVzIHJlcXVpcmVkIGZvciBzdGFuZGFsb25lIGZvbnRzOgogICAgLy8gICBuYW1lLCBjbWFwLCBPUy8yLCBwb3N0CgogICAgdGhpcy5nbHlmID0gW107CiAgICB0aGlzLm9mZnNldCA9IDA7CiAgICB0aGlzLmxvY2EgPSB7CiAgICAgIG9mZnNldHM6IFtdCiAgICB9OwoKICAgIHRoaXMuaG10eCA9IHsKICAgICAgbWV0cmljczogW10sCiAgICAgIGJlYXJpbmdzOiBbXQogICAgfTsKCiAgICAvLyBpbmNsdWRlIGFsbCB0aGUgZ2x5cGhzCiAgICAvLyBub3QgdXNpbmcgYSBmb3IgbG9vcCBiZWNhdXNlIHdlIG5lZWQgdG8gc3VwcG9ydCBhZGRpbmcgbW9yZQogICAgLy8gZ2x5cGhzIHRvIHRoZSBhcnJheSBhcyB3ZSBnbywgYW5kIENvZmZlZVNjcmlwdCBjYWNoZXMgdGhlIGxlbmd0aC4KICAgIHZhciBpID0gMDsKICAgIHdoaWxlIChpIDwgdGhpcy5nbHlwaHMubGVuZ3RoKSB7CiAgICAgIHRoaXMuX2FkZEdseXBoKHRoaXMuZ2x5cGhzW2krK10pOwogICAgfQoKICAgIHZhciBtYXhwID0gY2xvbmVEZWVwKHRoaXMuZm9udC5tYXhwKTsKICAgIG1heHAubnVtR2x5cGhzID0gdGhpcy5nbHlmLmxlbmd0aDsKCiAgICB0aGlzLmxvY2Eub2Zmc2V0cy5wdXNoKHRoaXMub2Zmc2V0KTsKICAgIHRhYmxlcy5sb2NhLnByZUVuY29kZS5jYWxsKHRoaXMubG9jYSk7CgogICAgdmFyIGhlYWQgPSBjbG9uZURlZXAodGhpcy5mb250LmhlYWQpOwogICAgaGVhZC5pbmRleFRvTG9jRm9ybWF0ID0gdGhpcy5sb2NhLnZlcnNpb247CgogICAgdmFyIGhoZWEgPSBjbG9uZURlZXAodGhpcy5mb250LmhoZWEpOwogICAgaGhlYS5udW1iZXJPZk1ldHJpY3MgPSB0aGlzLmhtdHgubWV0cmljcy5sZW5ndGg7CgogICAgLy8gbWFwID0gW10KICAgIC8vIGZvciBpbmRleCBpbiBbMC4uLjI1Nl0KICAgIC8vICAgICBpZiBpbmRleCA8IEBudW1HbHlwaHMKICAgIC8vICAgICAgICAgbWFwW2luZGV4XSA9IGluZGV4CiAgICAvLyAgICAgZWxzZQogICAgLy8gICAgICAgICBtYXBbaW5kZXhdID0gMAogICAgLy8KICAgIC8vIGNtYXBUYWJsZSA9CiAgICAvLyAgICAgdmVyc2lvbjogMAogICAgLy8gICAgIGxlbmd0aDogMjYyCiAgICAvLyAgICAgbGFuZ3VhZ2U6IDAKICAgIC8vICAgICBjb2RlTWFwOiBtYXAKICAgIC8vCiAgICAvLyBjbWFwID0KICAgIC8vICAgICB2ZXJzaW9uOiAwCiAgICAvLyAgICAgbnVtU3VidGFibGVzOiAxCiAgICAvLyAgICAgdGFibGVzOiBbCiAgICAvLyAgICAgICAgIHBsYXRmb3JtSUQ6IDEKICAgIC8vICAgICAgICAgZW5jb2RpbmdJRDogMAogICAgLy8gICAgICAgICB0YWJsZTogY21hcFRhYmxlCiAgICAvLyAgICAgXQoKICAgIC8vIFRPRE86IHN1YnNldCBwcmVwLCBjdnQsIGZwZ20/CiAgICBEaXJlY3RvcnkuZW5jb2RlKHN0cmVhbSwgewogICAgICB0YWJsZXM6IHsKICAgICAgICBoZWFkOiBoZWFkLAogICAgICAgIGhoZWE6IGhoZWEsCiAgICAgICAgbG9jYTogdGhpcy5sb2NhLAogICAgICAgIG1heHA6IG1heHAsCiAgICAgICAgJ2N2dCAnOiB0aGlzLmZvbnRbJ2N2dCAnXSwKICAgICAgICBwcmVwOiB0aGlzLmZvbnQucHJlcCwKICAgICAgICBnbHlmOiB0aGlzLmdseWYsCiAgICAgICAgaG10eDogdGhpcy5obXR4LAogICAgICAgIGZwZ206IHRoaXMuZm9udC5mcGdtCgogICAgICAgIC8vIG5hbWU6IGNsb25lIEBmb250Lm5hbWUKICAgICAgICAvLyAnT1MvMic6IGNsb25lIEBmb250WydPUy8yJ10KICAgICAgICAvLyBwb3N0OiBjbG9uZSBAZm9udC5wb3N0CiAgICAgICAgLy8gY21hcDogY21hcAogICAgICB9CiAgICB9KTsKICB9OwoKICByZXR1cm4gVFRGU3Vic2V0Owp9KFN1YnNldCk7Cgp2YXIgQ0ZGU3Vic2V0ID0gZnVuY3Rpb24gKF9TdWJzZXQpIHsKICBfaW5oZXJpdHMoQ0ZGU3Vic2V0LCBfU3Vic2V0KTsKCiAgZnVuY3Rpb24gQ0ZGU3Vic2V0KGZvbnQpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDRkZTdWJzZXQpOwoKICAgIHZhciBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9TdWJzZXQuY2FsbCh0aGlzLCBmb250KSk7CgogICAgX3RoaXMuY2ZmID0gX3RoaXMuZm9udFsnQ0ZGICddOwogICAgaWYgKCFfdGhpcy5jZmYpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgYSBDRkYgRm9udCcpOwogICAgfQogICAgcmV0dXJuIF90aGlzOwogIH0KCiAgQ0ZGU3Vic2V0LnByb3RvdHlwZS5zdWJzZXRDaGFyc3RyaW5ncyA9IGZ1bmN0aW9uIHN1YnNldENoYXJzdHJpbmdzKCkgewogICAgdGhpcy5jaGFyc3RyaW5ncyA9IFtdOwogICAgdmFyIGdzdWJycyA9IHt9OwoKICAgIGZvciAodmFyIF9pdGVyYXRvciA9IHRoaXMuZ2x5cGhzLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgdmFyIF9yZWY7CgogICAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZiA9IF9pdGVyYXRvcltfaSsrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgaWYgKF9pLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIGdpZCA9IF9yZWY7CgogICAgICB0aGlzLmNoYXJzdHJpbmdzLnB1c2godGhpcy5jZmYuZ2V0Q2hhclN0cmluZyhnaWQpKTsKCiAgICAgIHZhciBnbHlwaCA9IHRoaXMuZm9udC5nZXRHbHlwaChnaWQpOwogICAgICB2YXIgcGF0aCA9IGdseXBoLnBhdGg7IC8vIHRoaXMgY2F1c2VzIHRoZSBnbHlwaCB0byBiZSBwYXJzZWQKCiAgICAgIGZvciAodmFyIHN1YnIgaW4gZ2x5cGguX3VzZWRHc3VicnMpIHsKICAgICAgICBnc3VicnNbc3Vicl0gPSB0cnVlOwogICAgICB9CiAgICB9CgogICAgdGhpcy5nc3VicnMgPSB0aGlzLnN1YnNldFN1YnJzKHRoaXMuY2ZmLmdsb2JhbFN1YnJJbmRleCwgZ3N1YnJzKTsKICB9OwoKICBDRkZTdWJzZXQucHJvdG90eXBlLnN1YnNldFN1YnJzID0gZnVuY3Rpb24gc3Vic2V0U3VicnMoc3VicnMsIHVzZWQpIHsKICAgIHZhciByZXMgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3VicnMubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIHN1YnIgPSBzdWJyc1tpXTsKICAgICAgaWYgKHVzZWRbaV0pIHsKICAgICAgICB0aGlzLmNmZi5zdHJlYW0ucG9zID0gc3Vici5vZmZzZXQ7CiAgICAgICAgcmVzLnB1c2godGhpcy5jZmYuc3RyZWFtLnJlYWRCdWZmZXIoc3Vici5sZW5ndGgpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXMucHVzaChuZXcgQnVmZmVyKFsxMV0pKTsgLy8gcmV0dXJuCiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gcmVzOwogIH07CgogIENGRlN1YnNldC5wcm90b3R5cGUuc3Vic2V0Rm9udGRpY3QgPSBmdW5jdGlvbiBzdWJzZXRGb250ZGljdCh0b3BEaWN0KSB7CiAgICB0b3BEaWN0LkZEQXJyYXkgPSBbXTsKICAgIHRvcERpY3QuRkRTZWxlY3QgPSB7CiAgICAgIHZlcnNpb246IDAsCiAgICAgIGZkczogW10KICAgIH07CgogICAgdmFyIHVzZWRfZmRzID0ge307CiAgICB2YXIgdXNlZF9zdWJycyA9IFtdOwogICAgZm9yICh2YXIgX2l0ZXJhdG9yMiA9IHRoaXMuZ2x5cGhzLCBfaXNBcnJheTIgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjIpLCBfaTIgPSAwLCBfaXRlcmF0b3IyID0gX2lzQXJyYXkyID8gX2l0ZXJhdG9yMiA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IyKTs7KSB7CiAgICAgIHZhciBfcmVmMjsKCiAgICAgIGlmIChfaXNBcnJheTIpIHsKICAgICAgICBpZiAoX2kyID49IF9pdGVyYXRvcjIubGVuZ3RoKSBicmVhazsKICAgICAgICBfcmVmMiA9IF9pdGVyYXRvcjJbX2kyKytdOwogICAgICB9IGVsc2UgewogICAgICAgIF9pMiA9IF9pdGVyYXRvcjIubmV4dCgpOwogICAgICAgIGlmIChfaTIuZG9uZSkgYnJlYWs7CiAgICAgICAgX3JlZjIgPSBfaTIudmFsdWU7CiAgICAgIH0KCiAgICAgIHZhciBnaWQgPSBfcmVmMjsKCiAgICAgIHZhciBmZCA9IHRoaXMuY2ZmLmZkRm9yR2x5cGgoZ2lkKTsKICAgICAgaWYgKGZkID09IG51bGwpIHsKICAgICAgICBjb250aW51ZTsKICAgICAgfQoKICAgICAgaWYgKCF1c2VkX2Zkc1tmZF0pIHsKICAgICAgICB0b3BEaWN0LkZEQXJyYXkucHVzaChfT2JqZWN0JGFzc2lnbih7fSwgdGhpcy5jZmYudG9wRGljdC5GREFycmF5W2ZkXSkpOwogICAgICAgIHVzZWRfc3VicnMucHVzaCh7fSk7CiAgICAgIH0KCiAgICAgIHVzZWRfZmRzW2ZkXSA9IHRydWU7CiAgICAgIHRvcERpY3QuRkRTZWxlY3QuZmRzLnB1c2godG9wRGljdC5GREFycmF5Lmxlbmd0aCAtIDEpOwoKICAgICAgdmFyIGdseXBoID0gdGhpcy5mb250LmdldEdseXBoKGdpZCk7CiAgICAgIHZhciBwYXRoID0gZ2x5cGgucGF0aDsgLy8gdGhpcyBjYXVzZXMgdGhlIGdseXBoIHRvIGJlIHBhcnNlZAogICAgICBmb3IgKHZhciBzdWJyIGluIGdseXBoLl91c2VkU3VicnMpIHsKICAgICAgICB1c2VkX3N1YnJzW3VzZWRfc3VicnMubGVuZ3RoIC0gMV1bc3Vicl0gPSB0cnVlOwogICAgICB9CiAgICB9CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b3BEaWN0LkZEQXJyYXkubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGRpY3QgPSB0b3BEaWN0LkZEQXJyYXlbaV07CiAgICAgIGRlbGV0ZSBkaWN0LkZvbnROYW1lOwogICAgICBpZiAoZGljdC5Qcml2YXRlICYmIGRpY3QuUHJpdmF0ZS5TdWJycykgewogICAgICAgIGRpY3QuUHJpdmF0ZSA9IF9PYmplY3QkYXNzaWduKHt9LCBkaWN0LlByaXZhdGUpOwogICAgICAgIGRpY3QuUHJpdmF0ZS5TdWJycyA9IHRoaXMuc3Vic2V0U3VicnMoZGljdC5Qcml2YXRlLlN1YnJzLCB1c2VkX3N1YnJzW2ldKTsKICAgICAgfQogICAgfQoKICAgIHJldHVybjsKICB9OwoKICBDRkZTdWJzZXQucHJvdG90eXBlLmNyZWF0ZUNJREZvbnRkaWN0ID0gZnVuY3Rpb24gY3JlYXRlQ0lERm9udGRpY3QodG9wRGljdCkgewogICAgdmFyIHVzZWRfc3VicnMgPSB7fTsKICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSB0aGlzLmdseXBocywgX2lzQXJyYXkzID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IzKSwgX2kzID0gMCwgX2l0ZXJhdG9yMyA9IF9pc0FycmF5MyA/IF9pdGVyYXRvcjMgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMyk7OykgewogICAgICB2YXIgX3JlZjM7CgogICAgICBpZiAoX2lzQXJyYXkzKSB7CiAgICAgICAgaWYgKF9pMyA+PSBfaXRlcmF0b3IzLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZjMgPSBfaXRlcmF0b3IzW19pMysrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaTMgPSBfaXRlcmF0b3IzLm5leHQoKTsKICAgICAgICBpZiAoX2kzLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYzID0gX2kzLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgZ2lkID0gX3JlZjM7CgogICAgICB2YXIgZ2x5cGggPSB0aGlzLmZvbnQuZ2V0R2x5cGgoZ2lkKTsKICAgICAgdmFyIHBhdGggPSBnbHlwaC5wYXRoOyAvLyB0aGlzIGNhdXNlcyB0aGUgZ2x5cGggdG8gYmUgcGFyc2VkCgogICAgICBmb3IgKHZhciBzdWJyIGluIGdseXBoLl91c2VkU3VicnMpIHsKICAgICAgICB1c2VkX3N1YnJzW3N1YnJdID0gdHJ1ZTsKICAgICAgfQogICAgfQoKICAgIHZhciBwcml2YXRlRGljdCA9IF9PYmplY3QkYXNzaWduKHt9LCB0aGlzLmNmZi50b3BEaWN0LlByaXZhdGUpOwogICAgcHJpdmF0ZURpY3QuU3VicnMgPSB0aGlzLnN1YnNldFN1YnJzKHRoaXMuY2ZmLnRvcERpY3QuUHJpdmF0ZS5TdWJycywgdXNlZF9zdWJycyk7CgogICAgdG9wRGljdC5GREFycmF5ID0gW3sgUHJpdmF0ZTogcHJpdmF0ZURpY3QgfV07CiAgICByZXR1cm4gdG9wRGljdC5GRFNlbGVjdCA9IHsKICAgICAgdmVyc2lvbjogMywKICAgICAgblJhbmdlczogMSwKICAgICAgcmFuZ2VzOiBbeyBmaXJzdDogMCwgZmQ6IDAgfV0sCiAgICAgIHNlbnRpbmVsOiB0aGlzLmNoYXJzdHJpbmdzLmxlbmd0aAogICAgfTsKICB9OwoKICBDRkZTdWJzZXQucHJvdG90eXBlLmFkZFN0cmluZyA9IGZ1bmN0aW9uIGFkZFN0cmluZyhzdHJpbmcpIHsKICAgIGlmICghc3RyaW5nKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIGlmICghdGhpcy5zdHJpbmdzKSB7CiAgICAgIHRoaXMuc3RyaW5ncyA9IFtdOwogICAgfQoKICAgIHRoaXMuc3RyaW5ncy5wdXNoKHN0cmluZyk7CiAgICByZXR1cm4gc3RhbmRhcmRTdHJpbmdzLmxlbmd0aCArIHRoaXMuc3RyaW5ncy5sZW5ndGggLSAxOwogIH07CgogIENGRlN1YnNldC5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKHN0cmVhbSkgewogICAgdGhpcy5zdWJzZXRDaGFyc3RyaW5ncygpOwoKICAgIHZhciBjaGFyc2V0ID0gewogICAgICB2ZXJzaW9uOiB0aGlzLmNoYXJzdHJpbmdzLmxlbmd0aCA+IDI1NSA/IDIgOiAxLAogICAgICByYW5nZXM6IFt7IGZpcnN0OiAxLCBuTGVmdDogdGhpcy5jaGFyc3RyaW5ncy5sZW5ndGggLSAyIH1dCiAgICB9OwoKICAgIHZhciB0b3BEaWN0ID0gX09iamVjdCRhc3NpZ24oe30sIHRoaXMuY2ZmLnRvcERpY3QpOwogICAgdG9wRGljdC5Qcml2YXRlID0gbnVsbDsKICAgIHRvcERpY3QuY2hhcnNldCA9IGNoYXJzZXQ7CiAgICB0b3BEaWN0LkVuY29kaW5nID0gbnVsbDsKICAgIHRvcERpY3QuQ2hhclN0cmluZ3MgPSB0aGlzLmNoYXJzdHJpbmdzOwoKICAgIHZhciBfYXJyID0gWyd2ZXJzaW9uJywgJ05vdGljZScsICdDb3B5cmlnaHQnLCAnRnVsbE5hbWUnLCAnRmFtaWx5TmFtZScsICdXZWlnaHQnLCAnUG9zdFNjcmlwdCcsICdCYXNlRm9udE5hbWUnLCAnRm9udE5hbWUnXTsKICAgIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IF9hcnIubGVuZ3RoOyBfaTQrKykgewogICAgICB2YXIga2V5ID0gX2FycltfaTRdOwogICAgICB0b3BEaWN0W2tleV0gPSB0aGlzLmFkZFN0cmluZyh0aGlzLmNmZi5zdHJpbmcodG9wRGljdFtrZXldKSk7CiAgICB9CgogICAgdG9wRGljdC5ST1MgPSBbdGhpcy5hZGRTdHJpbmcoJ0Fkb2JlJyksIHRoaXMuYWRkU3RyaW5nKCdJZGVudGl0eScpLCAwXTsKICAgIHRvcERpY3QuQ0lEQ291bnQgPSB0aGlzLmNoYXJzdHJpbmdzLmxlbmd0aDsKCiAgICBpZiAodGhpcy5jZmYuaXNDSURGb250KSB7CiAgICAgIHRoaXMuc3Vic2V0Rm9udGRpY3QodG9wRGljdCk7CiAgICB9IGVsc2UgewogICAgICB0aGlzLmNyZWF0ZUNJREZvbnRkaWN0KHRvcERpY3QpOwogICAgfQoKICAgIHZhciB0b3AgPSB7CiAgICAgIHZlcnNpb246IDEsCiAgICAgIGhkclNpemU6IHRoaXMuY2ZmLmhkclNpemUsCiAgICAgIG9mZlNpemU6IHRoaXMuY2ZmLmxlbmd0aCwKICAgICAgaGVhZGVyOiB0aGlzLmNmZi5oZWFkZXIsCiAgICAgIG5hbWVJbmRleDogW3RoaXMuY2ZmLnBvc3RzY3JpcHROYW1lXSwKICAgICAgdG9wRGljdEluZGV4OiBbdG9wRGljdF0sCiAgICAgIHN0cmluZ0luZGV4OiB0aGlzLnN0cmluZ3MsCiAgICAgIGdsb2JhbFN1YnJJbmRleDogdGhpcy5nc3VicnMKICAgIH07CgogICAgQ0ZGVG9wLmVuY29kZShzdHJlYW0sIHRvcCk7CiAgfTsKCiAgcmV0dXJuIENGRlN1YnNldDsKfShTdWJzZXQpOwoKdmFyIF9jbGFzczsKZnVuY3Rpb24gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcih0YXJnZXQsIHByb3BlcnR5LCBkZWNvcmF0b3JzLCBkZXNjcmlwdG9yLCBjb250ZXh0KSB7CiAgdmFyIGRlc2MgPSB7fTsKICBPYmplY3RbJ2tlJyArICd5cyddKGRlc2NyaXB0b3IpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgewogICAgZGVzY1trZXldID0gZGVzY3JpcHRvcltrZXldOwogIH0pOwogIGRlc2MuZW51bWVyYWJsZSA9ICEhZGVzYy5lbnVtZXJhYmxlOwogIGRlc2MuY29uZmlndXJhYmxlID0gISFkZXNjLmNvbmZpZ3VyYWJsZTsKCiAgaWYgKCd2YWx1ZScgaW4gZGVzYyB8fCBkZXNjLmluaXRpYWxpemVyKSB7CiAgICBkZXNjLndyaXRhYmxlID0gdHJ1ZTsKICB9CgogIGRlc2MgPSBkZWNvcmF0b3JzLnNsaWNlKCkucmV2ZXJzZSgpLnJlZHVjZShmdW5jdGlvbiAoZGVzYywgZGVjb3JhdG9yKSB7CiAgICByZXR1cm4gZGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHksIGRlc2MpIHx8IGRlc2M7CiAgfSwgZGVzYyk7CgogIGlmIChjb250ZXh0ICYmIGRlc2MuaW5pdGlhbGl6ZXIgIT09IHZvaWQgMCkgewogICAgZGVzYy52YWx1ZSA9IGRlc2MuaW5pdGlhbGl6ZXIgPyBkZXNjLmluaXRpYWxpemVyLmNhbGwoY29udGV4dCkgOiB2b2lkIDA7CiAgICBkZXNjLmluaXRpYWxpemVyID0gdW5kZWZpbmVkOwogIH0KCiAgaWYgKGRlc2MuaW5pdGlhbGl6ZXIgPT09IHZvaWQgMCkgewogICAgT2JqZWN0WydkZWZpbmUnICsgJ1Byb3BlcnR5J10odGFyZ2V0LCBwcm9wZXJ0eSwgZGVzYyk7CiAgICBkZXNjID0gbnVsbDsKICB9CgogIHJldHVybiBkZXNjOwp9CgovKioKICogVGhpcyBpcyB0aGUgYmFzZSBjbGFzcyBmb3IgYWxsIFNGTlQtYmFzZWQgZm9udCBmb3JtYXRzIGluIGZvbnRraXQuCiAqIEl0IHN1cHBvcnRzIFRydWVUeXBlLCBhbmQgUG9zdFNjcmlwdCBnbHlwaHMsIGFuZCBzZXZlcmFsIGNvbG9yIGdseXBoIGZvcm1hdHMuCiAqLwp2YXIgVFRGRm9udCA9IChfY2xhc3MgPSBmdW5jdGlvbiAoKSB7CiAgVFRGRm9udC5wcm9iZSA9IGZ1bmN0aW9uIHByb2JlKGJ1ZmZlcikgewogICAgdmFyIGZvcm1hdCA9IGJ1ZmZlci50b1N0cmluZygnYXNjaWknLCAwLCA0KTsKICAgIHJldHVybiBmb3JtYXQgPT09ICd0cnVlJyB8fCBmb3JtYXQgPT09ICdPVFRPJyB8fCBmb3JtYXQgPT09IFN0cmluZy5mcm9tQ2hhckNvZGUoMCwgMSwgMCwgMCk7CiAgfTsKCiAgZnVuY3Rpb24gVFRGRm9udChzdHJlYW0pIHsKICAgIHZhciB2YXJpYXRpb25Db29yZHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IG51bGw7CgogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRURkZvbnQpOwoKICAgIHRoaXMuc3RyZWFtID0gc3RyZWFtOwogICAgdGhpcy52YXJpYXRpb25Db29yZHMgPSB2YXJpYXRpb25Db29yZHM7CgogICAgdGhpcy5fZGlyZWN0b3J5UG9zID0gdGhpcy5zdHJlYW0ucG9zOwogICAgdGhpcy5fdGFibGVzID0ge307CiAgICB0aGlzLl9nbHlwaHMgPSB7fTsKICAgIHRoaXMuX2RlY29kZURpcmVjdG9yeSgpOwoKICAgIC8vIGRlZmluZSBwcm9wZXJ0aWVzIGZvciBlYWNoIHRhYmxlIHRvIGxhemlseSBwYXJzZQogICAgZm9yICh2YXIgdGFnIGluIHRoaXMuZGlyZWN0b3J5LnRhYmxlcykgewogICAgICB2YXIgdGFibGUgPSB0aGlzLmRpcmVjdG9yeS50YWJsZXNbdGFnXTsKICAgICAgaWYgKHRhYmxlc1t0YWddICYmIHRhYmxlLmxlbmd0aCA+IDApIHsKICAgICAgICBfT2JqZWN0JGRlZmluZVByb3BlcnR5KHRoaXMsIHRhZywgewogICAgICAgICAgZ2V0OiB0aGlzLl9nZXRUYWJsZS5iaW5kKHRoaXMsIHRhYmxlKQogICAgICAgIH0pOwogICAgICB9CiAgICB9CiAgfQoKICBUVEZGb250LnByb3RvdHlwZS5fZ2V0VGFibGUgPSBmdW5jdGlvbiBfZ2V0VGFibGUodGFibGUpIHsKICAgIGlmICghKHRhYmxlLnRhZyBpbiB0aGlzLl90YWJsZXMpKSB7CiAgICAgIHRyeSB7CiAgICAgICAgdGhpcy5fdGFibGVzW3RhYmxlLnRhZ10gPSB0aGlzLl9kZWNvZGVUYWJsZSh0YWJsZSk7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICBpZiAoZm9udGtpdC5sb2dFcnJvcnMpIHsKICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGRlY29kaW5nIHRhYmxlICcgKyB0YWJsZS50YWcpOwogICAgICAgICAgY29uc29sZS5lcnJvcihlLnN0YWNrKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gdGhpcy5fdGFibGVzW3RhYmxlLnRhZ107CiAgfTsKCiAgVFRGRm9udC5wcm90b3R5cGUuX2dldFRhYmxlU3RyZWFtID0gZnVuY3Rpb24gX2dldFRhYmxlU3RyZWFtKHRhZykgewogICAgdmFyIHRhYmxlID0gdGhpcy5kaXJlY3RvcnkudGFibGVzW3RhZ107CiAgICBpZiAodGFibGUpIHsKICAgICAgdGhpcy5zdHJlYW0ucG9zID0gdGFibGUub2Zmc2V0OwogICAgICByZXR1cm4gdGhpcy5zdHJlYW07CiAgICB9CgogICAgcmV0dXJuIG51bGw7CiAgfTsKCiAgVFRGRm9udC5wcm90b3R5cGUuX2RlY29kZURpcmVjdG9yeSA9IGZ1bmN0aW9uIF9kZWNvZGVEaXJlY3RvcnkoKSB7CiAgICByZXR1cm4gdGhpcy5kaXJlY3RvcnkgPSBEaXJlY3RvcnkuZGVjb2RlKHRoaXMuc3RyZWFtLCB7IF9zdGFydE9mZnNldDogMCB9KTsKICB9OwoKICBUVEZGb250LnByb3RvdHlwZS5fZGVjb2RlVGFibGUgPSBmdW5jdGlvbiBfZGVjb2RlVGFibGUodGFibGUpIHsKICAgIHZhciBwb3MgPSB0aGlzLnN0cmVhbS5wb3M7CgogICAgdmFyIHN0cmVhbSA9IHRoaXMuX2dldFRhYmxlU3RyZWFtKHRhYmxlLnRhZyk7CiAgICB2YXIgcmVzdWx0ID0gdGFibGVzW3RhYmxlLnRhZ10uZGVjb2RlKHN0cmVhbSwgdGhpcywgdGFibGUubGVuZ3RoKTsKCiAgICB0aGlzLnN0cmVhbS5wb3MgPSBwb3M7CiAgICByZXR1cm4gcmVzdWx0OwogIH07CgogIC8qKgogICAqIFRoZSB1bmlxdWUgUG9zdFNjcmlwdCBuYW1lIGZvciB0aGlzIGZvbnQKICAgKiBAdHlwZSB7c3RyaW5nfQogICAqLwoKCiAgLyoqCiAgICogR2V0cyBhIHN0cmluZyBmcm9tIHRoZSBmb250J3MgYG5hbWVgIHRhYmxlCiAgICogYGxhbmdgIGlzIGEgQkNQLTQ3IGxhbmd1YWdlIGNvZGUuCiAgICogQHJldHVybiB7c3RyaW5nfQogICAqLwogIFRURkZvbnQucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlvbiBnZXROYW1lKGtleSkgewogICAgdmFyIGxhbmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICdlbic7CgogICAgdmFyIHJlY29yZCA9IHRoaXMubmFtZS5yZWNvcmRzW2tleV07CiAgICBpZiAocmVjb3JkKSB7CiAgICAgIHJldHVybiByZWNvcmRbbGFuZ107CiAgICB9CgogICAgcmV0dXJuIG51bGw7CiAgfTsKCiAgLyoqCiAgICogVGhlIGZvbnQncyBmdWxsIG5hbWUsIGUuZy4gIkhlbHZldGljYSBCb2xkIgogICAqIEB0eXBlIHtzdHJpbmd9CiAgICovCgoKICAvKioKICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlcmUgaXMgZ2x5cGggaW4gdGhlIGZvbnQgZm9yIHRoZSBnaXZlbiB1bmljb2RlIGNvZGUgcG9pbnQuCiAgICoKICAgKiBAcGFyYW0ge251bWJlcn0gY29kZVBvaW50CiAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgKi8KICBUVEZGb250LnByb3RvdHlwZS5oYXNHbHlwaEZvckNvZGVQb2ludCA9IGZ1bmN0aW9uIGhhc0dseXBoRm9yQ29kZVBvaW50KGNvZGVQb2ludCkgewogICAgcmV0dXJuICEhdGhpcy5fY21hcFByb2Nlc3Nvci5sb29rdXAoY29kZVBvaW50KTsKICB9OwoKICAvKioKICAgKiBNYXBzIGEgc2luZ2xlIHVuaWNvZGUgY29kZSBwb2ludCB0byBhIEdseXBoIG9iamVjdC4KICAgKiBEb2VzIG5vdCBwZXJmb3JtIGFueSBhZHZhbmNlZCBzdWJzdGl0dXRpb25zICh0aGVyZSBpcyBubyBjb250ZXh0IHRvIGRvIHNvKS4KICAgKgogICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlUG9pbnQKICAgKiBAcmV0dXJuIHtHbHlwaH0KICAgKi8KCgogIFRURkZvbnQucHJvdG90eXBlLmdseXBoRm9yQ29kZVBvaW50ID0gZnVuY3Rpb24gZ2x5cGhGb3JDb2RlUG9pbnQoY29kZVBvaW50KSB7CiAgICByZXR1cm4gdGhpcy5nZXRHbHlwaCh0aGlzLl9jbWFwUHJvY2Vzc29yLmxvb2t1cChjb2RlUG9pbnQpLCBbY29kZVBvaW50XSk7CiAgfTsKCiAgLyoqCiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBHbHlwaCBvYmplY3RzIGZvciB0aGUgZ2l2ZW4gc3RyaW5nLgogICAqIFRoaXMgaXMgb25seSBhIG9uZS10by1vbmUgbWFwcGluZyBmcm9tIGNoYXJhY3RlcnMgdG8gZ2x5cGhzLgogICAqIEZvciBtb3N0IHVzZXMsIHlvdSBzaG91bGQgdXNlIGZvbnQubGF5b3V0IChkZXNjcmliZWQgYmVsb3cpLCB3aGljaAogICAqIHByb3ZpZGVzIGEgbXVjaCBtb3JlIGFkdmFuY2VkIG1hcHBpbmcgc3VwcG9ydGluZyBBQVQgYW5kIE9wZW5UeXBlIHNoYXBpbmcuCiAgICoKICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nCiAgICogQHJldHVybiB7R2x5cGhbXX0KICAgKi8KCgogIFRURkZvbnQucHJvdG90eXBlLmdseXBoc0ZvclN0cmluZyA9IGZ1bmN0aW9uIGdseXBoc0ZvclN0cmluZyhzdHJpbmcpIHsKICAgIHZhciBnbHlwaHMgPSBbXTsKICAgIHZhciBsZW4gPSBzdHJpbmcubGVuZ3RoOwogICAgdmFyIGlkeCA9IDA7CiAgICB2YXIgbGFzdCA9IC0xOwogICAgdmFyIHN0YXRlID0gLTE7CgogICAgd2hpbGUgKGlkeCA8PSBsZW4pIHsKICAgICAgdmFyIGNvZGUgPSAwOwogICAgICB2YXIgbmV4dFN0YXRlID0gMDsKCiAgICAgIGlmIChpZHggPCBsZW4pIHsKICAgICAgICAvLyBEZWNvZGUgdGhlIG5leHQgY29kZXBvaW50IGZyb20gVVRGIDE2CiAgICAgICAgY29kZSA9IHN0cmluZy5jaGFyQ29kZUF0KGlkeCsrKTsKICAgICAgICBpZiAoMHhkODAwIDw9IGNvZGUgJiYgY29kZSA8PSAweGRiZmYgJiYgaWR4IDwgbGVuKSB7CiAgICAgICAgICB2YXIgbmV4dCA9IHN0cmluZy5jaGFyQ29kZUF0KGlkeCk7CiAgICAgICAgICBpZiAoMHhkYzAwIDw9IG5leHQgJiYgbmV4dCA8PSAweGRmZmYpIHsKICAgICAgICAgICAgaWR4Kys7CiAgICAgICAgICAgIGNvZGUgPSAoKGNvZGUgJiAweDNmZikgPDwgMTApICsgKG5leHQgJiAweDNmZikgKyAweDEwMDAwOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gQ29tcHV0ZSB0aGUgbmV4dCBzdGF0ZTogMSBpZiB0aGUgbmV4dCBjb2RlcG9pbnQgaXMgYSB2YXJpYXRpb24gc2VsZWN0b3IsIDAgb3RoZXJ3aXNlLgogICAgICAgIG5leHRTdGF0ZSA9IDB4ZmUwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHhmZTBmIHx8IDB4ZTAxMDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4ZTAxZWYgPyAxIDogMDsKICAgICAgfSBlbHNlIHsKICAgICAgICBpZHgrKzsKICAgICAgfQoKICAgICAgaWYgKHN0YXRlID09PSAwICYmIG5leHRTdGF0ZSA9PT0gMSkgewogICAgICAgIC8vIFZhcmlhdGlvbiBzZWxlY3RvciBmb2xsb3dpbmcgbm9ybWFsIGNvZGVwb2ludC4KICAgICAgICBnbHlwaHMucHVzaCh0aGlzLmdldEdseXBoKHRoaXMuX2NtYXBQcm9jZXNzb3IubG9va3VwKGxhc3QsIGNvZGUpLCBbbGFzdCwgY29kZV0pKTsKICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gMCAmJiBuZXh0U3RhdGUgPT09IDApIHsKICAgICAgICAvLyBOb3JtYWwgY29kZXBvaW50IGZvbGxvd2luZyBub3JtYWwgY29kZXBvaW50LgogICAgICAgIGdseXBocy5wdXNoKHRoaXMuZ2x5cGhGb3JDb2RlUG9pbnQobGFzdCkpOwogICAgICB9CgogICAgICBsYXN0ID0gY29kZTsKICAgICAgc3RhdGUgPSBuZXh0U3RhdGU7CiAgICB9CgogICAgcmV0dXJuIGdseXBoczsKICB9OwoKICAvKioKICAgKiBSZXR1cm5zIGEgR2x5cGhSdW4gb2JqZWN0LCB3aGljaCBpbmNsdWRlcyBhbiBhcnJheSBvZiBHbHlwaHMgYW5kIEdseXBoUG9zaXRpb25zIGZvciB0aGUgZ2l2ZW4gc3RyaW5nLgogICAqCiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZwogICAqIEBwYXJhbSB7c3RyaW5nW119IFt1c2VyRmVhdHVyZXNdCiAgICogQHBhcmFtIHtzdHJpbmd9IFtzY3JpcHRdCiAgICogQHBhcmFtIHtzdHJpbmd9IFtsYW5ndWFnZV0KICAgKiBAcGFyYW0ge3N0cmluZ30gW2RpcmVjdGlvbl0KICAgKiBAcmV0dXJuIHtHbHlwaFJ1bn0KICAgKi8KICBUVEZGb250LnByb3RvdHlwZS5sYXlvdXQgPSBmdW5jdGlvbiBsYXlvdXQoc3RyaW5nLCB1c2VyRmVhdHVyZXMsIHNjcmlwdCwgbGFuZ3VhZ2UsIGRpcmVjdGlvbikgewogICAgcmV0dXJuIHRoaXMuX2xheW91dEVuZ2luZS5sYXlvdXQoc3RyaW5nLCB1c2VyRmVhdHVyZXMsIHNjcmlwdCwgbGFuZ3VhZ2UsIGRpcmVjdGlvbik7CiAgfTsKCiAgLyoqCiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBzdHJpbmdzIHRoYXQgbWFwIHRvIHRoZSBnaXZlbiBnbHlwaCBpZC4KICAgKiBAcGFyYW0ge251bWJlcn0gZ2lkIC0gZ2x5cGggaWQKICAgKi8KCgogIFRURkZvbnQucHJvdG90eXBlLnN0cmluZ3NGb3JHbHlwaCA9IGZ1bmN0aW9uIHN0cmluZ3NGb3JHbHlwaChnaWQpIHsKICAgIHJldHVybiB0aGlzLl9sYXlvdXRFbmdpbmUuc3RyaW5nc0ZvckdseXBoKGdpZCk7CiAgfTsKCiAgLyoqCiAgICogQW4gYXJyYXkgb2YgYWxsIFtPcGVuVHlwZSBmZWF0dXJlIHRhZ3NdKGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9vdHNwZWMvZmVhdHVyZXRhZ3MuaHRtKQogICAqIChvciBtYXBwZWQgQUFUIHRhZ3MpIHN1cHBvcnRlZCBieSB0aGUgZm9udC4KICAgKiBUaGUgZmVhdHVyZXMgcGFyYW1ldGVyIGlzIGFuIGFycmF5IG9mIE9wZW5UeXBlIGZlYXR1cmUgdGFncyB0byBiZSBhcHBsaWVkIGluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IHNldC4KICAgKiBJZiB0aGlzIGlzIGFuIEFBVCBmb250LCB0aGUgT3BlblR5cGUgZmVhdHVyZSB0YWdzIGFyZSBtYXBwZWQgdG8gQUFUIGZlYXR1cmVzLgogICAqCiAgICogQHR5cGUge3N0cmluZ1tdfQogICAqLwoKCiAgVFRGRm9udC5wcm90b3R5cGUuZ2V0QXZhaWxhYmxlRmVhdHVyZXMgPSBmdW5jdGlvbiBnZXRBdmFpbGFibGVGZWF0dXJlcyhzY3JpcHQsIGxhbmd1YWdlKSB7CiAgICByZXR1cm4gdGhpcy5fbGF5b3V0RW5naW5lLmdldEF2YWlsYWJsZUZlYXR1cmVzKHNjcmlwdCwgbGFuZ3VhZ2UpOwogIH07CgogIFRURkZvbnQucHJvdG90eXBlLl9nZXRCYXNlR2x5cGggPSBmdW5jdGlvbiBfZ2V0QmFzZUdseXBoKGdseXBoKSB7CiAgICB2YXIgY2hhcmFjdGVycyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogW107CgogICAgaWYgKCF0aGlzLl9nbHlwaHNbZ2x5cGhdKSB7CiAgICAgIGlmICh0aGlzLmRpcmVjdG9yeS50YWJsZXMuZ2x5ZikgewogICAgICAgIHRoaXMuX2dseXBoc1tnbHlwaF0gPSBuZXcgVFRGR2x5cGgoZ2x5cGgsIGNoYXJhY3RlcnMsIHRoaXMpOwogICAgICB9IGVsc2UgaWYgKHRoaXMuZGlyZWN0b3J5LnRhYmxlc1snQ0ZGICddIHx8IHRoaXMuZGlyZWN0b3J5LnRhYmxlcy5DRkYyKSB7CiAgICAgICAgdGhpcy5fZ2x5cGhzW2dseXBoXSA9IG5ldyBDRkZHbHlwaChnbHlwaCwgY2hhcmFjdGVycywgdGhpcyk7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gdGhpcy5fZ2x5cGhzW2dseXBoXSB8fCBudWxsOwogIH07CgogIC8qKgogICAqIFJldHVybnMgYSBnbHlwaCBvYmplY3QgZm9yIHRoZSBnaXZlbiBnbHlwaCBpZC4KICAgKiBZb3UgY2FuIHBhc3MgdGhlIGFycmF5IG9mIGNvZGUgcG9pbnRzIHRoaXMgZ2x5cGggcmVwcmVzZW50cyBmb3IKICAgKiB5b3VyIHVzZSBsYXRlciwgYW5kIGl0IHdpbGwgYmUgc3RvcmVkIGluIHRoZSBnbHlwaCBvYmplY3QuCiAgICoKICAgKiBAcGFyYW0ge251bWJlcn0gZ2x5cGgKICAgKiBAcGFyYW0ge251bWJlcltdfSBjaGFyYWN0ZXJzCiAgICogQHJldHVybiB7R2x5cGh9CiAgICovCgoKICBUVEZGb250LnByb3RvdHlwZS5nZXRHbHlwaCA9IGZ1bmN0aW9uIGdldEdseXBoKGdseXBoKSB7CiAgICB2YXIgY2hhcmFjdGVycyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogW107CgogICAgaWYgKCF0aGlzLl9nbHlwaHNbZ2x5cGhdKSB7CiAgICAgIGlmICh0aGlzLmRpcmVjdG9yeS50YWJsZXMuc2JpeCkgewogICAgICAgIHRoaXMuX2dseXBoc1tnbHlwaF0gPSBuZXcgU0JJWEdseXBoKGdseXBoLCBjaGFyYWN0ZXJzLCB0aGlzKTsKICAgICAgfSBlbHNlIGlmICh0aGlzLmRpcmVjdG9yeS50YWJsZXMuQ09MUiAmJiB0aGlzLmRpcmVjdG9yeS50YWJsZXMuQ1BBTCkgewogICAgICAgIHRoaXMuX2dseXBoc1tnbHlwaF0gPSBuZXcgQ09MUkdseXBoKGdseXBoLCBjaGFyYWN0ZXJzLCB0aGlzKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLl9nZXRCYXNlR2x5cGgoZ2x5cGgsIGNoYXJhY3RlcnMpOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHRoaXMuX2dseXBoc1tnbHlwaF0gfHwgbnVsbDsKICB9OwoKICAvKioKICAgKiBSZXR1cm5zIGEgU3Vic2V0IGZvciB0aGlzIGZvbnQuCiAgICogQHJldHVybiB7U3Vic2V0fQogICAqLwoKCiAgVFRGRm9udC5wcm90b3R5cGUuY3JlYXRlU3Vic2V0ID0gZnVuY3Rpb24gY3JlYXRlU3Vic2V0KCkgewogICAgaWYgKHRoaXMuZGlyZWN0b3J5LnRhYmxlc1snQ0ZGICddKSB7CiAgICAgIHJldHVybiBuZXcgQ0ZGU3Vic2V0KHRoaXMpOwogICAgfQoKICAgIHJldHVybiBuZXcgVFRGU3Vic2V0KHRoaXMpOwogIH07CgogIC8qKgogICAqIFJldHVybnMgYW4gb2JqZWN0IGRlc2NyaWJpbmcgdGhlIGF2YWlsYWJsZSB2YXJpYXRpb24gYXhlcwogICAqIHRoYXQgdGhpcyBmb250IHN1cHBvcnRzLiBLZXlzIGFyZSBzZXR0aW5nIHRhZ3MsIGFuZCB2YWx1ZXMKICAgKiBjb250YWluIHRoZSBheGlzIG5hbWUsIHJhbmdlLCBhbmQgZGVmYXVsdCB2YWx1ZS4KICAgKgogICAqIEB0eXBlIHtvYmplY3R9CiAgICovCgoKICAvKioKICAgKiBSZXR1cm5zIGEgbmV3IGZvbnQgd2l0aCB0aGUgZ2l2ZW4gdmFyaWF0aW9uIHNldHRpbmdzIGFwcGxpZWQuCiAgICogU2V0dGluZ3MgY2FuIGVpdGhlciBiZSBhbiBpbnN0YW5jZSBuYW1lLCBvciBhbiBvYmplY3QgY29udGFpbmluZwogICAqIHZhcmlhdGlvbiB0YWdzIGFzIHNwZWNpZmllZCBieSB0aGUgYHZhcmlhdGlvbkF4ZXNgIHByb3BlcnR5LgogICAqCiAgICogQHBhcmFtIHtvYmplY3R9IHNldHRpbmdzCiAgICogQHJldHVybiB7VFRGRm9udH0KICAgKi8KICBUVEZGb250LnByb3RvdHlwZS5nZXRWYXJpYXRpb24gPSBmdW5jdGlvbiBnZXRWYXJpYXRpb24oc2V0dGluZ3MpIHsKICAgIGlmICghKHRoaXMuZGlyZWN0b3J5LnRhYmxlcy5mdmFyICYmICh0aGlzLmRpcmVjdG9yeS50YWJsZXMuZ3ZhciAmJiB0aGlzLmRpcmVjdG9yeS50YWJsZXMuZ2x5ZiB8fCB0aGlzLmRpcmVjdG9yeS50YWJsZXMuQ0ZGMikpKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignVmFyaWF0aW9ucyByZXF1aXJlIGEgZm9udCB3aXRoIHRoZSBmdmFyLCBndmFyIGFuZCBnbHlmLCBvciBDRkYyIHRhYmxlcy4nKTsKICAgIH0KCiAgICBpZiAodHlwZW9mIHNldHRpbmdzID09PSAnc3RyaW5nJykgewogICAgICBzZXR0aW5ncyA9IHRoaXMubmFtZWRWYXJpYXRpb25zW3NldHRpbmdzXTsKICAgIH0KCiAgICBpZiAoKHR5cGVvZiBzZXR0aW5ncyA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2Yoc2V0dGluZ3MpKSAhPT0gJ29iamVjdCcpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdWYXJpYXRpb24gc2V0dGluZ3MgbXVzdCBiZSBlaXRoZXIgYSB2YXJpYXRpb24gbmFtZSBvciBzZXR0aW5ncyBvYmplY3QuJyk7CiAgICB9CgogICAgLy8gbm9ybWFsaXplIHRoZSBjb29yZGluYXRlcwogICAgdmFyIGNvb3JkcyA9IHRoaXMuZnZhci5heGlzLm1hcChmdW5jdGlvbiAoYXhpcywgaSkgewogICAgICB2YXIgYXhpc1RhZyA9IGF4aXMuYXhpc1RhZy50cmltKCk7CiAgICAgIGlmIChheGlzVGFnIGluIHNldHRpbmdzKSB7CiAgICAgICAgcmV0dXJuIE1hdGgubWF4KGF4aXMubWluVmFsdWUsIE1hdGgubWluKGF4aXMubWF4VmFsdWUsIHNldHRpbmdzW2F4aXNUYWddKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIGF4aXMuZGVmYXVsdFZhbHVlOwogICAgICB9CiAgICB9KTsKCiAgICB2YXIgc3RyZWFtID0gbmV3IHIuRGVjb2RlU3RyZWFtKHRoaXMuc3RyZWFtLmJ1ZmZlcik7CiAgICBzdHJlYW0ucG9zID0gdGhpcy5fZGlyZWN0b3J5UG9zOwoKICAgIHZhciBmb250ID0gbmV3IFRURkZvbnQoc3RyZWFtLCBjb29yZHMpOwogICAgZm9udC5fdGFibGVzID0gdGhpcy5fdGFibGVzOwoKICAgIHJldHVybiBmb250OwogIH07CgogIC8vIFN0YW5kYXJkaXplZCBmb3JtYXQgcGx1Z2luIEFQSQogIFRURkZvbnQucHJvdG90eXBlLmdldEZvbnQgPSBmdW5jdGlvbiBnZXRGb250KG5hbWUpIHsKICAgIHJldHVybiB0aGlzLmdldFZhcmlhdGlvbihuYW1lKTsKICB9OwoKICBfY3JlYXRlQ2xhc3MoVFRGRm9udCwgW3sKICAgIGtleTogJ3Bvc3RzY3JpcHROYW1lJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICB2YXIgbmFtZSA9IHRoaXMubmFtZS5yZWNvcmRzLnBvc3RzY3JpcHROYW1lOwogICAgICBpZiAobmFtZSkgewogICAgICAgIHZhciBsYW5nID0gX09iamVjdCRrZXlzKG5hbWUpWzBdOwogICAgICAgIHJldHVybiBuYW1lW2xhbmddOwogICAgICB9CgogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9LCB7CiAgICBrZXk6ICdmdWxsTmFtZScsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZ2V0TmFtZSgnZnVsbE5hbWUnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBmb250J3MgZmFtaWx5IG5hbWUsIGUuZy4gIkhlbHZldGljYSIKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnZmFtaWx5TmFtZScsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZ2V0TmFtZSgnZm9udEZhbWlseScpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGZvbnQncyBzdWItZmFtaWx5LCBlLmcuICJCb2xkIi4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnc3ViZmFtaWx5TmFtZScsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZ2V0TmFtZSgnZm9udFN1YmZhbWlseScpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGZvbnQncyBjb3B5cmlnaHQgaW5mb3JtYXRpb24KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnY29weXJpZ2h0JywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICByZXR1cm4gdGhpcy5nZXROYW1lKCdjb3B5cmlnaHQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBmb250J3MgdmVyc2lvbiBudW1iZXIKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAndmVyc2lvbicsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZ2V0TmFtZSgndmVyc2lvbicpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGZvbnTigJlzIFthc2NlbmRlcl0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXNjZW5kZXJfKHR5cG9ncmFwaHkpKQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwoKICB9LCB7CiAgICBrZXk6ICdhc2NlbnQnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLmhoZWEuYXNjZW50OwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGZvbnTigJlzIFtkZXNjZW5kZXJdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Rlc2NlbmRlcikKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnZGVzY2VudCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaGhlYS5kZXNjZW50OwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGFtb3VudCBvZiBzcGFjZSB0aGF0IHNob3VsZCBiZSBpbmNsdWRlZCBiZXR3ZWVuIGxpbmVzCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCgogIH0sIHsKICAgIGtleTogJ2xpbmVHYXAnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLmhoZWEubGluZUdhcDsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBvZmZzZXQgZnJvbSB0aGUgbm9ybWFsIHVuZGVybGluZSBwb3NpdGlvbiB0aGF0IHNob3VsZCBiZSB1c2VkCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCgogIH0sIHsKICAgIGtleTogJ3VuZGVybGluZVBvc2l0aW9uJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICByZXR1cm4gdGhpcy5wb3N0LnVuZGVybGluZVBvc2l0aW9uOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIHdlaWdodCBvZiB0aGUgdW5kZXJsaW5lIHRoYXQgc2hvdWxkIGJlIHVzZWQKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAndW5kZXJsaW5lVGhpY2tuZXNzJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICByZXR1cm4gdGhpcy5wb3N0LnVuZGVybGluZVRoaWNrbmVzczsKICAgIH0KCiAgICAvKioKICAgICAqIElmIHRoaXMgaXMgYW4gaXRhbGljIGZvbnQsIHRoZSBhbmdsZSB0aGUgY3Vyc29yIHNob3VsZCBiZSBkcmF3biBhdCB0byBtYXRjaCB0aGUgZm9udCBkZXNpZ24KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnaXRhbGljQW5nbGUnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLnBvc3QuaXRhbGljQW5nbGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgaGVpZ2h0IG9mIGNhcGl0YWwgbGV0dGVycyBhYm92ZSB0aGUgYmFzZWxpbmUuCiAgICAgKiBTZWUgW2hlcmVdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhcF9oZWlnaHQpIGZvciBtb3JlIGRldGFpbHMuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCgogIH0sIHsKICAgIGtleTogJ2NhcEhlaWdodCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgdmFyIG9zMiA9IHRoaXNbJ09TLzInXTsKICAgICAgcmV0dXJuIG9zMiA/IG9zMi5jYXBIZWlnaHQgOiB0aGlzLmFzY2VudDsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBoZWlnaHQgb2YgbG93ZXIgY2FzZSBsZXR0ZXJzIGluIHRoZSBmb250LgogICAgICogU2VlIFtoZXJlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9YLWhlaWdodCkgZm9yIG1vcmUgZGV0YWlscy4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAneEhlaWdodCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgdmFyIG9zMiA9IHRoaXNbJ09TLzInXTsKICAgICAgcmV0dXJuIG9zMiA/IG9zMi54SGVpZ2h0IDogMDsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBudW1iZXIgb2YgZ2x5cGhzIGluIHRoZSBmb250LgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwoKICB9LCB7CiAgICBrZXk6ICdudW1HbHlwaHMnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLm1heHAubnVtR2x5cGhzOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIHNpemUgb2YgdGhlIGZvbnTigJlzIGludGVybmFsIGNvb3JkaW5hdGUgZ3JpZAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwoKICB9LCB7CiAgICBrZXk6ICd1bml0c1BlckVtJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICByZXR1cm4gdGhpcy5oZWFkLnVuaXRzUGVyRW07CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgZm9udOKAmXMgYm91bmRpbmcgYm94LCBpLmUuIHRoZSBib3ggdGhhdCBlbmNsb3NlcyBhbGwgZ2x5cGhzIGluIHRoZSBmb250LgogICAgICogQHR5cGUge0JCb3h9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnYmJveCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIF9PYmplY3QkZnJlZXplKG5ldyBCQm94KHRoaXMuaGVhZC54TWluLCB0aGlzLmhlYWQueU1pbiwgdGhpcy5oZWFkLnhNYXgsIHRoaXMuaGVhZC55TWF4KSk7CiAgICB9CiAgfSwgewogICAga2V5OiAnX2NtYXBQcm9jZXNzb3InLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiBuZXcgQ21hcFByb2Nlc3Nvcih0aGlzLmNtYXApOwogICAgfQoKICAgIC8qKgogICAgICogQW4gYXJyYXkgb2YgYWxsIG9mIHRoZSB1bmljb2RlIGNvZGUgcG9pbnRzIHN1cHBvcnRlZCBieSB0aGUgZm9udC4KICAgICAqIEB0eXBlIHtudW1iZXJbXX0KICAgICAqLwoKICB9LCB7CiAgICBrZXk6ICdjaGFyYWN0ZXJTZXQnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLl9jbWFwUHJvY2Vzc29yLmdldENoYXJhY3RlclNldCgpOwogICAgfQogIH0sIHsKICAgIGtleTogJ19sYXlvdXRFbmdpbmUnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiBuZXcgTGF5b3V0RW5naW5lKHRoaXMpOwogICAgfQogIH0sIHsKICAgIGtleTogJ2F2YWlsYWJsZUZlYXR1cmVzJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICByZXR1cm4gdGhpcy5fbGF5b3V0RW5naW5lLmdldEF2YWlsYWJsZUZlYXR1cmVzKCk7CiAgICB9CiAgfSwgewogICAga2V5OiAndmFyaWF0aW9uQXhlcycsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgdmFyIHJlcyA9IHt9OwogICAgICBpZiAoIXRoaXMuZnZhcikgewogICAgICAgIHJldHVybiByZXM7CiAgICAgIH0KCiAgICAgIGZvciAodmFyIF9pdGVyYXRvciA9IHRoaXMuZnZhci5heGlzLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgICB2YXIgX3JlZjsKCiAgICAgICAgaWYgKF9pc0FycmF5KSB7CiAgICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmID0gX2kudmFsdWU7CiAgICAgICAgfQoKICAgICAgICB2YXIgYXhpcyA9IF9yZWY7CgogICAgICAgIHJlc1theGlzLmF4aXNUYWcudHJpbSgpXSA9IHsKICAgICAgICAgIG5hbWU6IGF4aXMubmFtZS5lbiwKICAgICAgICAgIG1pbjogYXhpcy5taW5WYWx1ZSwKICAgICAgICAgIGRlZmF1bHQ6IGF4aXMuZGVmYXVsdFZhbHVlLAogICAgICAgICAgbWF4OiBheGlzLm1heFZhbHVlCiAgICAgICAgfTsKICAgICAgfQoKICAgICAgcmV0dXJuIHJlczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gb2JqZWN0IGRlc2NyaWJpbmcgdGhlIG5hbWVkIHZhcmlhdGlvbiBpbnN0YW5jZXMKICAgICAqIHRoYXQgdGhlIGZvbnQgZGVzaWduZXIgaGFzIHNwZWNpZmllZC4gS2V5cyBhcmUgdmFyaWF0aW9uIG5hbWVzCiAgICAgKiBhbmQgdmFsdWVzIGFyZSB0aGUgdmFyaWF0aW9uIHNldHRpbmdzIGZvciB0aGlzIGluc3RhbmNlLgogICAgICoKICAgICAqIEB0eXBlIHtvYmplY3R9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnbmFtZWRWYXJpYXRpb25zJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICB2YXIgcmVzID0ge307CiAgICAgIGlmICghdGhpcy5mdmFyKSB7CiAgICAgICAgcmV0dXJuIHJlczsKICAgICAgfQoKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMiA9IHRoaXMuZnZhci5pbnN0YW5jZSwgX2lzQXJyYXkyID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IyKSwgX2kyID0gMCwgX2l0ZXJhdG9yMiA9IF9pc0FycmF5MiA/IF9pdGVyYXRvcjIgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMik7OykgewogICAgICAgIHZhciBfcmVmMjsKCiAgICAgICAgaWYgKF9pc0FycmF5MikgewogICAgICAgICAgaWYgKF9pMiA+PSBfaXRlcmF0b3IyLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmMiA9IF9pdGVyYXRvcjJbX2kyKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaTIgPSBfaXRlcmF0b3IyLm5leHQoKTsKICAgICAgICAgIGlmIChfaTIuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmMiA9IF9pMi52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBpbnN0YW5jZSA9IF9yZWYyOwoKICAgICAgICB2YXIgc2V0dGluZ3MgPSB7fTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZnZhci5heGlzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgYXhpcyA9IHRoaXMuZnZhci5heGlzW2ldOwogICAgICAgICAgc2V0dGluZ3NbYXhpcy5heGlzVGFnLnRyaW0oKV0gPSBpbnN0YW5jZS5jb29yZFtpXTsKICAgICAgICB9CgogICAgICAgIHJlc1tpbnN0YW5jZS5uYW1lLmVuXSA9IHNldHRpbmdzOwogICAgICB9CgogICAgICByZXR1cm4gcmVzOwogICAgfQogIH0sIHsKICAgIGtleTogJ192YXJpYXRpb25Qcm9jZXNzb3InLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIGlmICghdGhpcy5mdmFyKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIHZhciB2YXJpYXRpb25Db29yZHMgPSB0aGlzLnZhcmlhdGlvbkNvb3JkczsKCiAgICAgIC8vIElnbm9yZSBpZiBubyB2YXJpYXRpb24gY29vcmRzIGFuZCBub3QgQ0ZGMgogICAgICBpZiAoIXZhcmlhdGlvbkNvb3JkcyAmJiAhdGhpcy5DRkYyKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIGlmICghdmFyaWF0aW9uQ29vcmRzKSB7CiAgICAgICAgdmFyaWF0aW9uQ29vcmRzID0gdGhpcy5mdmFyLmF4aXMubWFwKGZ1bmN0aW9uIChheGlzKSB7CiAgICAgICAgICByZXR1cm4gYXhpcy5kZWZhdWx0VmFsdWU7CiAgICAgICAgfSk7CiAgICAgIH0KCiAgICAgIHJldHVybiBuZXcgR2x5cGhWYXJpYXRpb25Qcm9jZXNzb3IodGhpcywgdmFyaWF0aW9uQ29vcmRzKTsKICAgIH0KICB9XSk7CgogIHJldHVybiBUVEZGb250Owp9KCksIChfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdiYm94JywgW2NhY2hlXSwgX09iamVjdCRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ2Jib3gnKSwgX2NsYXNzLnByb3RvdHlwZSksIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ19jbWFwUHJvY2Vzc29yJywgW2NhY2hlXSwgX09iamVjdCRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ19jbWFwUHJvY2Vzc29yJyksIF9jbGFzcy5wcm90b3R5cGUpLCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdjaGFyYWN0ZXJTZXQnLCBbY2FjaGVdLCBfT2JqZWN0JGdldE93blByb3BlcnR5RGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnY2hhcmFjdGVyU2V0JyksIF9jbGFzcy5wcm90b3R5cGUpLCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdfbGF5b3V0RW5naW5lJywgW2NhY2hlXSwgX09iamVjdCRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ19sYXlvdXRFbmdpbmUnKSwgX2NsYXNzLnByb3RvdHlwZSksIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ3ZhcmlhdGlvbkF4ZXMnLCBbY2FjaGVdLCBfT2JqZWN0JGdldE93blByb3BlcnR5RGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAndmFyaWF0aW9uQXhlcycpLCBfY2xhc3MucHJvdG90eXBlKSwgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnbmFtZWRWYXJpYXRpb25zJywgW2NhY2hlXSwgX09iamVjdCRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ25hbWVkVmFyaWF0aW9ucycpLCBfY2xhc3MucHJvdG90eXBlKSwgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnX3ZhcmlhdGlvblByb2Nlc3NvcicsIFtjYWNoZV0sIF9PYmplY3QkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdfdmFyaWF0aW9uUHJvY2Vzc29yJyksIF9jbGFzcy5wcm90b3R5cGUpKSwgX2NsYXNzKTsKCnZhciBXT0ZGRGlyZWN0b3J5RW50cnkgPSBuZXcgci5TdHJ1Y3QoewogIHRhZzogbmV3IHIuU3RyaW5nKDQpLAogIG9mZnNldDogbmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgJ3ZvaWQnLCB7IHR5cGU6ICdnbG9iYWwnIH0pLAogIGNvbXBMZW5ndGg6IHIudWludDMyLAogIGxlbmd0aDogci51aW50MzIsCiAgb3JpZ0NoZWNrc3VtOiByLnVpbnQzMgp9KTsKCnZhciBXT0ZGRGlyZWN0b3J5ID0gbmV3IHIuU3RydWN0KHsKICB0YWc6IG5ldyByLlN0cmluZyg0KSwgLy8gc2hvdWxkIGJlICd3T0ZGJwogIGZsYXZvcjogci51aW50MzIsCiAgbGVuZ3RoOiByLnVpbnQzMiwKICBudW1UYWJsZXM6IHIudWludDE2LAogIHJlc2VydmVkOiBuZXcgci5SZXNlcnZlZChyLnVpbnQxNiksCiAgdG90YWxTZm50U2l6ZTogci51aW50MzIsCiAgbWFqb3JWZXJzaW9uOiByLnVpbnQxNiwKICBtaW5vclZlcnNpb246IHIudWludDE2LAogIG1ldGFPZmZzZXQ6IHIudWludDMyLAogIG1ldGFMZW5ndGg6IHIudWludDMyLAogIG1ldGFPcmlnTGVuZ3RoOiByLnVpbnQzMiwKICBwcml2T2Zmc2V0OiByLnVpbnQzMiwKICBwcml2TGVuZ3RoOiByLnVpbnQzMiwKICB0YWJsZXM6IG5ldyByLkFycmF5KFdPRkZEaXJlY3RvcnlFbnRyeSwgJ251bVRhYmxlcycpCn0pOwoKV09GRkRpcmVjdG9yeS5wcm9jZXNzID0gZnVuY3Rpb24gKCkgewogIHZhciB0YWJsZXMgPSB7fTsKICBmb3IgKHZhciBfaXRlcmF0b3IgPSB0aGlzLnRhYmxlcywgX2lzQXJyYXkgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvciksIF9pID0gMCwgX2l0ZXJhdG9yID0gX2lzQXJyYXkgPyBfaXRlcmF0b3IgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yKTs7KSB7CiAgICB2YXIgX3JlZjsKCiAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgaWYgKF9pID49IF9pdGVyYXRvci5sZW5ndGgpIGJyZWFrOwogICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgfSBlbHNlIHsKICAgICAgX2kgPSBfaXRlcmF0b3IubmV4dCgpOwogICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgIH0KCiAgICB2YXIgdGFibGUgPSBfcmVmOwoKICAgIHRhYmxlc1t0YWJsZS50YWddID0gdGFibGU7CiAgfQoKICB0aGlzLnRhYmxlcyA9IHRhYmxlczsKfTsKCnZhciBXT0ZGRm9udCA9IGZ1bmN0aW9uIChfVFRGRm9udCkgewogIF9pbmhlcml0cyhXT0ZGRm9udCwgX1RURkZvbnQpOwoKICBmdW5jdGlvbiBXT0ZGRm9udCgpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXT0ZGRm9udCk7CgogICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9UVEZGb250LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpOwogIH0KCiAgV09GRkZvbnQucHJvYmUgPSBmdW5jdGlvbiBwcm9iZShidWZmZXIpIHsKICAgIHJldHVybiBidWZmZXIudG9TdHJpbmcoJ2FzY2lpJywgMCwgNCkgPT09ICd3T0ZGJzsKICB9OwoKICBXT0ZGRm9udC5wcm90b3R5cGUuX2RlY29kZURpcmVjdG9yeSA9IGZ1bmN0aW9uIF9kZWNvZGVEaXJlY3RvcnkoKSB7CiAgICB0aGlzLmRpcmVjdG9yeSA9IFdPRkZEaXJlY3RvcnkuZGVjb2RlKHRoaXMuc3RyZWFtLCB7IF9zdGFydE9mZnNldDogMCB9KTsKICB9OwoKICBXT0ZGRm9udC5wcm90b3R5cGUuX2dldFRhYmxlU3RyZWFtID0gZnVuY3Rpb24gX2dldFRhYmxlU3RyZWFtKHRhZykgewogICAgdmFyIHRhYmxlID0gdGhpcy5kaXJlY3RvcnkudGFibGVzW3RhZ107CiAgICBpZiAodGFibGUpIHsKICAgICAgdGhpcy5zdHJlYW0ucG9zID0gdGFibGUub2Zmc2V0OwoKICAgICAgaWYgKHRhYmxlLmNvbXBMZW5ndGggPCB0YWJsZS5sZW5ndGgpIHsKICAgICAgICB0aGlzLnN0cmVhbS5wb3MgKz0gMjsgLy8gc2tpcCBkZWZsYXRlIGhlYWRlcgogICAgICAgIHZhciBvdXRCdWZmZXIgPSBuZXcgQnVmZmVyKHRhYmxlLmxlbmd0aCk7CiAgICAgICAgdmFyIGJ1ZiA9IGluZmxhdGUodGhpcy5zdHJlYW0ucmVhZEJ1ZmZlcih0YWJsZS5jb21wTGVuZ3RoIC0gMiksIG91dEJ1ZmZlcik7CiAgICAgICAgcmV0dXJuIG5ldyByLkRlY29kZVN0cmVhbShidWYpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLnN0cmVhbTsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBudWxsOwogIH07CgogIHJldHVybiBXT0ZGRm9udDsKfShUVEZGb250KTsKCi8qKgogKiBSZXByZXNlbnRzIGEgVHJ1ZVR5cGUgZ2x5cGggaW4gdGhlIFdPRkYyIGZvcm1hdCwgd2hpY2ggY29tcHJlc3NlcyBnbHlwaHMgZGlmZmVyZW50bHkuCiAqLwoKdmFyIFdPRkYyR2x5cGggPSBmdW5jdGlvbiAoX1RURkdseXBoKSB7CiAgX2luaGVyaXRzKFdPRkYyR2x5cGgsIF9UVEZHbHlwaCk7CgogIGZ1bmN0aW9uIFdPRkYyR2x5cGgoKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgV09GRjJHbHlwaCk7CgogICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9UVEZHbHlwaC5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTsKICB9CgogIFdPRkYyR2x5cGgucHJvdG90eXBlLl9kZWNvZGUgPSBmdW5jdGlvbiBfZGVjb2RlKCkgewogICAgLy8gV2UgaGF2ZSB0byBkZWNvZGUgaW4gYWR2YW5jZSAoaW4gV09GRjJGb250KSwgc28ganVzdCByZXR1cm4gdGhlIHByZS1kZWNvZGVkIGRhdGEuCiAgICByZXR1cm4gdGhpcy5fZm9udC5fdHJhbnNmb3JtZWRHbHlwaHNbdGhpcy5pZF07CiAgfTsKCiAgV09GRjJHbHlwaC5wcm90b3R5cGUuX2dldENCb3ggPSBmdW5jdGlvbiBfZ2V0Q0JveCgpIHsKICAgIHJldHVybiB0aGlzLnBhdGguYmJveDsKICB9OwoKICByZXR1cm4gV09GRjJHbHlwaDsKfShUVEZHbHlwaCk7Cgp2YXIgQmFzZTEyOCA9IHsKICBkZWNvZGU6IGZ1bmN0aW9uIGRlY29kZShzdHJlYW0pIHsKICAgIHZhciByZXN1bHQgPSAwOwogICAgdmFyIGl0ZXJhYmxlID0gWzAsIDEsIDIsIDMsIDRdOwogICAgZm9yICh2YXIgaiA9IDA7IGogPCBpdGVyYWJsZS5sZW5ndGg7IGorKykgewogICAgICB2YXIgaSA9IGl0ZXJhYmxlW2pdOwogICAgICB2YXIgY29kZSA9IHN0cmVhbS5yZWFkVUludDgoKTsKCiAgICAgIC8vIElmIGFueSBvZiB0aGUgdG9wIHNldmVuIGJpdHMgYXJlIHNldCB0aGVuIHdlJ3JlIGFib3V0IHRvIG92ZXJmbG93LgogICAgICBpZiAocmVzdWx0ICYgMHhlMDAwMDAwMCkgewogICAgICAgIHRocm93IG5ldyBFcnJvcignT3ZlcmZsb3cnKTsKICAgICAgfQoKICAgICAgcmVzdWx0ID0gcmVzdWx0IDw8IDcgfCBjb2RlICYgMHg3ZjsKICAgICAgaWYgKChjb2RlICYgMHg4MCkgPT09IDApIHsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgICB9CgogICAgdGhyb3cgbmV3IEVycm9yKCdCYWQgYmFzZSAxMjggbnVtYmVyJyk7CiAgfQp9OwoKdmFyIGtub3duVGFncyA9IFsnY21hcCcsICdoZWFkJywgJ2hoZWEnLCAnaG10eCcsICdtYXhwJywgJ25hbWUnLCAnT1MvMicsICdwb3N0JywgJ2N2dCAnLCAnZnBnbScsICdnbHlmJywgJ2xvY2EnLCAncHJlcCcsICdDRkYgJywgJ1ZPUkcnLCAnRUJEVCcsICdFQkxDJywgJ2dhc3AnLCAnaGRteCcsICdrZXJuJywgJ0xUU0gnLCAnUENMVCcsICdWRE1YJywgJ3ZoZWEnLCAndm10eCcsICdCQVNFJywgJ0dERUYnLCAnR1BPUycsICdHU1VCJywgJ0VCU0MnLCAnSlNURicsICdNQVRIJywgJ0NCRFQnLCAnQ0JMQycsICdDT0xSJywgJ0NQQUwnLCAnU1ZHICcsICdzYml4JywgJ2FjbnQnLCAnYXZhcicsICdiZGF0JywgJ2Jsb2MnLCAnYnNsbicsICdjdmFyJywgJ2Zkc2MnLCAnZmVhdCcsICdmbXR4JywgJ2Z2YXInLCAnZ3ZhcicsICdoc3R5JywgJ2p1c3QnLCAnbGNhcicsICdtb3J0JywgJ21vcngnLCAnb3BiZCcsICdwcm9wJywgJ3RyYWsnLCAnWmFwZicsICdTaWxmJywgJ0dsYXQnLCAnR2xvYycsICdGZWF0JywgJ1NpbGwnXTsKCnZhciBXT0ZGMkRpcmVjdG9yeUVudHJ5ID0gbmV3IHIuU3RydWN0KHsKICBmbGFnczogci51aW50OCwKICBjdXN0b21UYWc6IG5ldyByLk9wdGlvbmFsKG5ldyByLlN0cmluZyg0KSwgZnVuY3Rpb24gKHQpIHsKICAgIHJldHVybiAodC5mbGFncyAmIDB4M2YpID09PSAweDNmOwogIH0pLAogIHRhZzogZnVuY3Rpb24gdGFnKHQpIHsKICAgIHJldHVybiB0LmN1c3RvbVRhZyB8fCBrbm93blRhZ3NbdC5mbGFncyAmIDB4M2ZdOwogIH0sIC8vIHx8ICgoKSA9PiB7IHRocm93IG5ldyBFcnJvcihgQmFkIHRhZzogJHtmbGFncyAmIDB4M2Z9YCk7IH0pKCk7IH0sCiAgbGVuZ3RoOiBCYXNlMTI4LAogIHRyYW5zZm9ybVZlcnNpb246IGZ1bmN0aW9uIHRyYW5zZm9ybVZlcnNpb24odCkgewogICAgcmV0dXJuIHQuZmxhZ3MgPj4+IDYgJiAweDAzOwogIH0sCiAgdHJhbnNmb3JtZWQ6IGZ1bmN0aW9uIHRyYW5zZm9ybWVkKHQpIHsKICAgIHJldHVybiB0LnRhZyA9PT0gJ2dseWYnIHx8IHQudGFnID09PSAnbG9jYScgPyB0LnRyYW5zZm9ybVZlcnNpb24gPT09IDAgOiB0LnRyYW5zZm9ybVZlcnNpb24gIT09IDA7CiAgfSwKICB0cmFuc2Zvcm1MZW5ndGg6IG5ldyByLk9wdGlvbmFsKEJhc2UxMjgsIGZ1bmN0aW9uICh0KSB7CiAgICByZXR1cm4gdC50cmFuc2Zvcm1lZDsKICB9KQp9KTsKCnZhciBXT0ZGMkRpcmVjdG9yeSA9IG5ldyByLlN0cnVjdCh7CiAgdGFnOiBuZXcgci5TdHJpbmcoNCksIC8vIHNob3VsZCBiZSAnd09GMicKICBmbGF2b3I6IHIudWludDMyLAogIGxlbmd0aDogci51aW50MzIsCiAgbnVtVGFibGVzOiByLnVpbnQxNiwKICByZXNlcnZlZDogbmV3IHIuUmVzZXJ2ZWQoci51aW50MTYpLAogIHRvdGFsU2ZudFNpemU6IHIudWludDMyLAogIHRvdGFsQ29tcHJlc3NlZFNpemU6IHIudWludDMyLAogIG1ham9yVmVyc2lvbjogci51aW50MTYsCiAgbWlub3JWZXJzaW9uOiByLnVpbnQxNiwKICBtZXRhT2Zmc2V0OiByLnVpbnQzMiwKICBtZXRhTGVuZ3RoOiByLnVpbnQzMiwKICBtZXRhT3JpZ0xlbmd0aDogci51aW50MzIsCiAgcHJpdk9mZnNldDogci51aW50MzIsCiAgcHJpdkxlbmd0aDogci51aW50MzIsCiAgdGFibGVzOiBuZXcgci5BcnJheShXT0ZGMkRpcmVjdG9yeUVudHJ5LCAnbnVtVGFibGVzJykKfSk7CgpXT0ZGMkRpcmVjdG9yeS5wcm9jZXNzID0gZnVuY3Rpb24gKCkgewogIHZhciB0YWJsZXMgPSB7fTsKICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMudGFibGVzLmxlbmd0aDsgaSsrKSB7CiAgICB2YXIgdGFibGUgPSB0aGlzLnRhYmxlc1tpXTsKICAgIHRhYmxlc1t0YWJsZS50YWddID0gdGFibGU7CiAgfQoKICByZXR1cm4gdGhpcy50YWJsZXMgPSB0YWJsZXM7Cn07CgovKioKICogU3ViY2xhc3Mgb2YgVFRGRm9udCB0aGF0IHJlcHJlc2VudHMgYSBUVEYvT1RGIGZvbnQgY29tcHJlc3NlZCBieSBXT0ZGMgogKiBTZWUgc3BlYyBoZXJlOiBodHRwOi8vd3d3LnczLm9yZy9UUi9XT0ZGMi8KICovCgp2YXIgV09GRjJGb250ID0gZnVuY3Rpb24gKF9UVEZGb250KSB7CiAgX2luaGVyaXRzKFdPRkYyRm9udCwgX1RURkZvbnQpOwoKICBmdW5jdGlvbiBXT0ZGMkZvbnQoKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgV09GRjJGb250KTsKCiAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX1RURkZvbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7CiAgfQoKICBXT0ZGMkZvbnQucHJvYmUgPSBmdW5jdGlvbiBwcm9iZShidWZmZXIpIHsKICAgIHJldHVybiBidWZmZXIudG9TdHJpbmcoJ2FzY2lpJywgMCwgNCkgPT09ICd3T0YyJzsKICB9OwoKICBXT0ZGMkZvbnQucHJvdG90eXBlLl9kZWNvZGVEaXJlY3RvcnkgPSBmdW5jdGlvbiBfZGVjb2RlRGlyZWN0b3J5KCkgewogICAgdGhpcy5kaXJlY3RvcnkgPSBXT0ZGMkRpcmVjdG9yeS5kZWNvZGUodGhpcy5zdHJlYW0pOwogICAgdGhpcy5fZGF0YVBvcyA9IHRoaXMuc3RyZWFtLnBvczsKICB9OwoKICBXT0ZGMkZvbnQucHJvdG90eXBlLl9kZWNvbXByZXNzID0gZnVuY3Rpb24gX2RlY29tcHJlc3MoKSB7CiAgICAvLyBkZWNvbXByZXNzIGRhdGEgYW5kIHNldHVwIHRhYmxlIG9mZnNldHMgaWYgd2UgaGF2ZW4ndCBhbHJlYWR5CiAgICBpZiAoIXRoaXMuX2RlY29tcHJlc3NlZCkgewogICAgICB0aGlzLnN0cmVhbS5wb3MgPSB0aGlzLl9kYXRhUG9zOwogICAgICB2YXIgYnVmZmVyID0gdGhpcy5zdHJlYW0ucmVhZEJ1ZmZlcih0aGlzLmRpcmVjdG9yeS50b3RhbENvbXByZXNzZWRTaXplKTsKCiAgICAgIHZhciBkZWNvbXByZXNzZWRTaXplID0gMDsKICAgICAgZm9yICh2YXIgdGFnIGluIHRoaXMuZGlyZWN0b3J5LnRhYmxlcykgewogICAgICAgIHZhciBlbnRyeSA9IHRoaXMuZGlyZWN0b3J5LnRhYmxlc1t0YWddOwogICAgICAgIGVudHJ5Lm9mZnNldCA9IGRlY29tcHJlc3NlZFNpemU7CiAgICAgICAgZGVjb21wcmVzc2VkU2l6ZSArPSBlbnRyeS50cmFuc2Zvcm1MZW5ndGggIT0gbnVsbCA/IGVudHJ5LnRyYW5zZm9ybUxlbmd0aCA6IGVudHJ5Lmxlbmd0aDsKICAgICAgfQoKICAgICAgdmFyIGRlY29tcHJlc3NlZCA9IGJyb3RsaShidWZmZXIsIGRlY29tcHJlc3NlZFNpemUpOwogICAgICBpZiAoIWRlY29tcHJlc3NlZCkgewogICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgZGVjb2RpbmcgY29tcHJlc3NlZCBkYXRhIGluIFdPRkYyJyk7CiAgICAgIH0KCiAgICAgIHRoaXMuc3RyZWFtID0gbmV3IHIuRGVjb2RlU3RyZWFtKG5ldyBCdWZmZXIoZGVjb21wcmVzc2VkKSk7CiAgICAgIHRoaXMuX2RlY29tcHJlc3NlZCA9IHRydWU7CiAgICB9CiAgfTsKCiAgV09GRjJGb250LnByb3RvdHlwZS5fZGVjb2RlVGFibGUgPSBmdW5jdGlvbiBfZGVjb2RlVGFibGUodGFibGUpIHsKICAgIHRoaXMuX2RlY29tcHJlc3MoKTsKICAgIHJldHVybiBfVFRGRm9udC5wcm90b3R5cGUuX2RlY29kZVRhYmxlLmNhbGwodGhpcywgdGFibGUpOwogIH07CgogIC8vIE92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIGdldCBhIGdseXBoIGFuZCByZXR1cm4gb3VyCiAgLy8gY3VzdG9tIHN1YmNsYXNzIGlmIHRoZXJlIGlzIGEgZ2x5ZiB0YWJsZS4KCgogIFdPRkYyRm9udC5wcm90b3R5cGUuX2dldEJhc2VHbHlwaCA9IGZ1bmN0aW9uIF9nZXRCYXNlR2x5cGgoZ2x5cGgpIHsKICAgIHZhciBjaGFyYWN0ZXJzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBbXTsKCiAgICBpZiAoIXRoaXMuX2dseXBoc1tnbHlwaF0pIHsKICAgICAgaWYgKHRoaXMuZGlyZWN0b3J5LnRhYmxlcy5nbHlmICYmIHRoaXMuZGlyZWN0b3J5LnRhYmxlcy5nbHlmLnRyYW5zZm9ybWVkKSB7CiAgICAgICAgaWYgKCF0aGlzLl90cmFuc2Zvcm1lZEdseXBocykgewogICAgICAgICAgdGhpcy5fdHJhbnNmb3JtR2x5ZlRhYmxlKCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLl9nbHlwaHNbZ2x5cGhdID0gbmV3IFdPRkYyR2x5cGgoZ2x5cGgsIGNoYXJhY3RlcnMsIHRoaXMpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBfVFRGRm9udC5wcm90b3R5cGUuX2dldEJhc2VHbHlwaC5jYWxsKHRoaXMsIGdseXBoLCBjaGFyYWN0ZXJzKTsKICAgICAgfQogICAgfQogIH07CgogIFdPRkYyRm9udC5wcm90b3R5cGUuX3RyYW5zZm9ybUdseWZUYWJsZSA9IGZ1bmN0aW9uIF90cmFuc2Zvcm1HbHlmVGFibGUoKSB7CiAgICB0aGlzLl9kZWNvbXByZXNzKCk7CiAgICB0aGlzLnN0cmVhbS5wb3MgPSB0aGlzLmRpcmVjdG9yeS50YWJsZXMuZ2x5Zi5vZmZzZXQ7CiAgICB2YXIgdGFibGUgPSBHbHlmVGFibGUuZGVjb2RlKHRoaXMuc3RyZWFtKTsKICAgIHZhciBnbHlwaHMgPSBbXTsKCiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGFibGUubnVtR2x5cGhzOyBpbmRleCsrKSB7CiAgICAgIHZhciBnbHlwaCA9IHt9OwogICAgICB2YXIgbkNvbnRvdXJzID0gdGFibGUubkNvbnRvdXJzLnJlYWRJbnQxNkJFKCk7CiAgICAgIGdseXBoLm51bWJlck9mQ29udG91cnMgPSBuQ29udG91cnM7CgogICAgICBpZiAobkNvbnRvdXJzID4gMCkgewogICAgICAgIC8vIHNpbXBsZSBnbHlwaAogICAgICAgIHZhciBuUG9pbnRzID0gW107CiAgICAgICAgdmFyIHRvdGFsUG9pbnRzID0gMDsKCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuQ29udG91cnM7IGkrKykgewogICAgICAgICAgdmFyIF9yID0gcmVhZDI1NVVJbnQxNih0YWJsZS5uUG9pbnRzKTsKICAgICAgICAgIHRvdGFsUG9pbnRzICs9IF9yOwogICAgICAgICAgblBvaW50cy5wdXNoKHRvdGFsUG9pbnRzKTsKICAgICAgICB9CgogICAgICAgIGdseXBoLnBvaW50cyA9IGRlY29kZVRyaXBsZXQodGFibGUuZmxhZ3MsIHRhYmxlLmdseXBocywgdG90YWxQb2ludHMpOwogICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBuQ29udG91cnM7IF9pKyspIHsKICAgICAgICAgIGdseXBoLnBvaW50c1tuUG9pbnRzW19pXSAtIDFdLmVuZENvbnRvdXIgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIGluc3RydWN0aW9uU2l6ZSA9IHJlYWQyNTVVSW50MTYodGFibGUuZ2x5cGhzKTsKICAgICAgfSBlbHNlIGlmIChuQ29udG91cnMgPCAwKSB7CiAgICAgICAgLy8gY29tcG9zaXRlIGdseXBoCiAgICAgICAgdmFyIGhhdmVJbnN0cnVjdGlvbnMgPSBUVEZHbHlwaC5wcm90b3R5cGUuX2RlY29kZUNvbXBvc2l0ZS5jYWxsKHsgX2ZvbnQ6IHRoaXMgfSwgZ2x5cGgsIHRhYmxlLmNvbXBvc2l0ZXMpOwogICAgICAgIGlmIChoYXZlSW5zdHJ1Y3Rpb25zKSB7CiAgICAgICAgICB2YXIgaW5zdHJ1Y3Rpb25TaXplID0gcmVhZDI1NVVJbnQxNih0YWJsZS5nbHlwaHMpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgZ2x5cGhzLnB1c2goZ2x5cGgpOwogICAgfQoKICAgIHRoaXMuX3RyYW5zZm9ybWVkR2x5cGhzID0gZ2x5cGhzOwogIH07CgogIHJldHVybiBXT0ZGMkZvbnQ7Cn0oVFRGRm9udCk7Cgp2YXIgU3Vic3RyZWFtID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIFN1YnN0cmVhbShsZW5ndGgpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTdWJzdHJlYW0pOwoKICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoOwogICAgdGhpcy5fYnVmID0gbmV3IHIuQnVmZmVyKGxlbmd0aCk7CiAgfQoKICBTdWJzdHJlYW0ucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShzdHJlYW0sIHBhcmVudCkgewogICAgcmV0dXJuIG5ldyByLkRlY29kZVN0cmVhbSh0aGlzLl9idWYuZGVjb2RlKHN0cmVhbSwgcGFyZW50KSk7CiAgfTsKCiAgcmV0dXJuIFN1YnN0cmVhbTsKfSgpOwoKLy8gVGhpcyBzdHJ1Y3QgcmVwcmVzZW50cyB0aGUgZW50aXJlIGdseWYgdGFibGUKCgp2YXIgR2x5ZlRhYmxlID0gbmV3IHIuU3RydWN0KHsKICB2ZXJzaW9uOiByLnVpbnQzMiwKICBudW1HbHlwaHM6IHIudWludDE2LAogIGluZGV4Rm9ybWF0OiByLnVpbnQxNiwKICBuQ29udG91clN0cmVhbVNpemU6IHIudWludDMyLAogIG5Qb2ludHNTdHJlYW1TaXplOiByLnVpbnQzMiwKICBmbGFnU3RyZWFtU2l6ZTogci51aW50MzIsCiAgZ2x5cGhTdHJlYW1TaXplOiByLnVpbnQzMiwKICBjb21wb3NpdGVTdHJlYW1TaXplOiByLnVpbnQzMiwKICBiYm94U3RyZWFtU2l6ZTogci51aW50MzIsCiAgaW5zdHJ1Y3Rpb25TdHJlYW1TaXplOiByLnVpbnQzMiwKICBuQ29udG91cnM6IG5ldyBTdWJzdHJlYW0oJ25Db250b3VyU3RyZWFtU2l6ZScpLAogIG5Qb2ludHM6IG5ldyBTdWJzdHJlYW0oJ25Qb2ludHNTdHJlYW1TaXplJyksCiAgZmxhZ3M6IG5ldyBTdWJzdHJlYW0oJ2ZsYWdTdHJlYW1TaXplJyksCiAgZ2x5cGhzOiBuZXcgU3Vic3RyZWFtKCdnbHlwaFN0cmVhbVNpemUnKSwKICBjb21wb3NpdGVzOiBuZXcgU3Vic3RyZWFtKCdjb21wb3NpdGVTdHJlYW1TaXplJyksCiAgYmJveGVzOiBuZXcgU3Vic3RyZWFtKCdiYm94U3RyZWFtU2l6ZScpLAogIGluc3RydWN0aW9uczogbmV3IFN1YnN0cmVhbSgnaW5zdHJ1Y3Rpb25TdHJlYW1TaXplJykKfSk7Cgp2YXIgV09SRF9DT0RFID0gMjUzOwp2YXIgT05FX01PUkVfQllURV9DT0RFMiA9IDI1NDsKdmFyIE9ORV9NT1JFX0JZVEVfQ09ERTEgPSAyNTU7CnZhciBMT1dFU1RfVV9DT0RFID0gMjUzOwoKZnVuY3Rpb24gcmVhZDI1NVVJbnQxNihzdHJlYW0pIHsKICB2YXIgY29kZSA9IHN0cmVhbS5yZWFkVUludDgoKTsKCiAgaWYgKGNvZGUgPT09IFdPUkRfQ09ERSkgewogICAgcmV0dXJuIHN0cmVhbS5yZWFkVUludDE2QkUoKTsKICB9CgogIGlmIChjb2RlID09PSBPTkVfTU9SRV9CWVRFX0NPREUxKSB7CiAgICByZXR1cm4gc3RyZWFtLnJlYWRVSW50OCgpICsgTE9XRVNUX1VfQ09ERTsKICB9CgogIGlmIChjb2RlID09PSBPTkVfTU9SRV9CWVRFX0NPREUyKSB7CiAgICByZXR1cm4gc3RyZWFtLnJlYWRVSW50OCgpICsgTE9XRVNUX1VfQ09ERSAqIDI7CiAgfQoKICByZXR1cm4gY29kZTsKfQoKZnVuY3Rpb24gd2l0aFNpZ24oZmxhZywgYmFzZXZhbCkgewogIHJldHVybiBmbGFnICYgMSA/IGJhc2V2YWwgOiAtYmFzZXZhbDsKfQoKZnVuY3Rpb24gZGVjb2RlVHJpcGxldChmbGFncywgZ2x5cGhzLCBuUG9pbnRzKSB7CiAgdmFyIHkgPSB2b2lkIDA7CiAgdmFyIHggPSB5ID0gMDsKICB2YXIgcmVzID0gW107CgogIGZvciAodmFyIGkgPSAwOyBpIDwgblBvaW50czsgaSsrKSB7CiAgICB2YXIgZHggPSAwLAogICAgICAgIGR5ID0gMDsKICAgIHZhciBmbGFnID0gZmxhZ3MucmVhZFVJbnQ4KCk7CiAgICB2YXIgb25DdXJ2ZSA9ICEoZmxhZyA+PiA3KTsKICAgIGZsYWcgJj0gMHg3ZjsKCiAgICBpZiAoZmxhZyA8IDEwKSB7CiAgICAgIGR4ID0gMDsKICAgICAgZHkgPSB3aXRoU2lnbihmbGFnLCAoKGZsYWcgJiAxNCkgPDwgNykgKyBnbHlwaHMucmVhZFVJbnQ4KCkpOwogICAgfSBlbHNlIGlmIChmbGFnIDwgMjApIHsKICAgICAgZHggPSB3aXRoU2lnbihmbGFnLCAoKGZsYWcgLSAxMCAmIDE0KSA8PCA3KSArIGdseXBocy5yZWFkVUludDgoKSk7CiAgICAgIGR5ID0gMDsKICAgIH0gZWxzZSBpZiAoZmxhZyA8IDg0KSB7CiAgICAgIHZhciBiMCA9IGZsYWcgLSAyMDsKICAgICAgdmFyIGIxID0gZ2x5cGhzLnJlYWRVSW50OCgpOwogICAgICBkeCA9IHdpdGhTaWduKGZsYWcsIDEgKyAoYjAgJiAweDMwKSArIChiMSA+PiA0KSk7CiAgICAgIGR5ID0gd2l0aFNpZ24oZmxhZyA+PiAxLCAxICsgKChiMCAmIDB4MGMpIDw8IDIpICsgKGIxICYgMHgwZikpOwogICAgfSBlbHNlIGlmIChmbGFnIDwgMTIwKSB7CiAgICAgIHZhciBiMCA9IGZsYWcgLSA4NDsKICAgICAgZHggPSB3aXRoU2lnbihmbGFnLCAxICsgKGIwIC8gMTIgPDwgOCkgKyBnbHlwaHMucmVhZFVJbnQ4KCkpOwogICAgICBkeSA9IHdpdGhTaWduKGZsYWcgPj4gMSwgMSArIChiMCAlIDEyID4+IDIgPDwgOCkgKyBnbHlwaHMucmVhZFVJbnQ4KCkpOwogICAgfSBlbHNlIGlmIChmbGFnIDwgMTI0KSB7CiAgICAgIHZhciBiMSA9IGdseXBocy5yZWFkVUludDgoKTsKICAgICAgdmFyIGIyID0gZ2x5cGhzLnJlYWRVSW50OCgpOwogICAgICBkeCA9IHdpdGhTaWduKGZsYWcsIChiMSA8PCA0KSArIChiMiA+PiA0KSk7CiAgICAgIGR5ID0gd2l0aFNpZ24oZmxhZyA+PiAxLCAoKGIyICYgMHgwZikgPDwgOCkgKyBnbHlwaHMucmVhZFVJbnQ4KCkpOwogICAgfSBlbHNlIHsKICAgICAgZHggPSB3aXRoU2lnbihmbGFnLCBnbHlwaHMucmVhZFVJbnQxNkJFKCkpOwogICAgICBkeSA9IHdpdGhTaWduKGZsYWcgPj4gMSwgZ2x5cGhzLnJlYWRVSW50MTZCRSgpKTsKICAgIH0KCiAgICB4ICs9IGR4OwogICAgeSArPSBkeTsKICAgIHJlcy5wdXNoKG5ldyBQb2ludChvbkN1cnZlLCBmYWxzZSwgeCwgeSkpOwogIH0KCiAgcmV0dXJuIHJlczsKfQoKdmFyIFRUQ0hlYWRlciA9IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQzMiwgewogIDB4MDAwMTAwMDA6IHsKICAgIG51bUZvbnRzOiByLnVpbnQzMiwKICAgIG9mZnNldHM6IG5ldyByLkFycmF5KHIudWludDMyLCAnbnVtRm9udHMnKQogIH0sCiAgMHgwMDAyMDAwMDogewogICAgbnVtRm9udHM6IHIudWludDMyLAogICAgb2Zmc2V0czogbmV3IHIuQXJyYXkoci51aW50MzIsICdudW1Gb250cycpLAogICAgZHNpZ1RhZzogci51aW50MzIsCiAgICBkc2lnTGVuZ3RoOiByLnVpbnQzMiwKICAgIGRzaWdPZmZzZXQ6IHIudWludDMyCiAgfQp9KTsKCnZhciBUcnVlVHlwZUNvbGxlY3Rpb24gPSBmdW5jdGlvbiAoKSB7CiAgVHJ1ZVR5cGVDb2xsZWN0aW9uLnByb2JlID0gZnVuY3Rpb24gcHJvYmUoYnVmZmVyKSB7CiAgICByZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCdhc2NpaScsIDAsIDQpID09PSAndHRjZic7CiAgfTsKCiAgZnVuY3Rpb24gVHJ1ZVR5cGVDb2xsZWN0aW9uKHN0cmVhbSkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRydWVUeXBlQ29sbGVjdGlvbik7CgogICAgdGhpcy5zdHJlYW0gPSBzdHJlYW07CiAgICBpZiAoc3RyZWFtLnJlYWRTdHJpbmcoNCkgIT09ICd0dGNmJykgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBhIFRydWVUeXBlIGNvbGxlY3Rpb24nKTsKICAgIH0KCiAgICB0aGlzLmhlYWRlciA9IFRUQ0hlYWRlci5kZWNvZGUoc3RyZWFtKTsKICB9CgogIFRydWVUeXBlQ29sbGVjdGlvbi5wcm90b3R5cGUuZ2V0Rm9udCA9IGZ1bmN0aW9uIGdldEZvbnQobmFtZSkgewogICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gdGhpcy5oZWFkZXIub2Zmc2V0cywgX2lzQXJyYXkgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvciksIF9pID0gMCwgX2l0ZXJhdG9yID0gX2lzQXJyYXkgPyBfaXRlcmF0b3IgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yKTs7KSB7CiAgICAgIHZhciBfcmVmOwoKICAgICAgaWYgKF9pc0FycmF5KSB7CiAgICAgICAgaWYgKF9pID49IF9pdGVyYXRvci5sZW5ndGgpIGJyZWFrOwogICAgICAgIF9yZWYgPSBfaXRlcmF0b3JbX2krK107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2kgPSBfaXRlcmF0b3IubmV4dCgpOwogICAgICAgIGlmIChfaS5kb25lKSBicmVhazsKICAgICAgICBfcmVmID0gX2kudmFsdWU7CiAgICAgIH0KCiAgICAgIHZhciBvZmZzZXQgPSBfcmVmOwoKICAgICAgdmFyIHN0cmVhbSA9IG5ldyByLkRlY29kZVN0cmVhbSh0aGlzLnN0cmVhbS5idWZmZXIpOwogICAgICBzdHJlYW0ucG9zID0gb2Zmc2V0OwogICAgICB2YXIgZm9udCA9IG5ldyBUVEZGb250KHN0cmVhbSk7CiAgICAgIGlmIChmb250LnBvc3RzY3JpcHROYW1lID09PSBuYW1lKSB7CiAgICAgICAgcmV0dXJuIGZvbnQ7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gbnVsbDsKICB9OwoKICBfY3JlYXRlQ2xhc3MoVHJ1ZVR5cGVDb2xsZWN0aW9uLCBbewogICAga2V5OiAnZm9udHMnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHZhciBmb250cyA9IFtdOwogICAgICBmb3IgKHZhciBfaXRlcmF0b3IyID0gdGhpcy5oZWFkZXIub2Zmc2V0cywgX2lzQXJyYXkyID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IyKSwgX2kyID0gMCwgX2l0ZXJhdG9yMiA9IF9pc0FycmF5MiA/IF9pdGVyYXRvcjIgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMik7OykgewogICAgICAgIHZhciBfcmVmMjsKCiAgICAgICAgaWYgKF9pc0FycmF5MikgewogICAgICAgICAgaWYgKF9pMiA+PSBfaXRlcmF0b3IyLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmMiA9IF9pdGVyYXRvcjJbX2kyKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaTIgPSBfaXRlcmF0b3IyLm5leHQoKTsKICAgICAgICAgIGlmIChfaTIuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmMiA9IF9pMi52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBvZmZzZXQgPSBfcmVmMjsKCiAgICAgICAgdmFyIHN0cmVhbSA9IG5ldyByLkRlY29kZVN0cmVhbSh0aGlzLnN0cmVhbS5idWZmZXIpOwogICAgICAgIHN0cmVhbS5wb3MgPSBvZmZzZXQ7CiAgICAgICAgZm9udHMucHVzaChuZXcgVFRGRm9udChzdHJlYW0pKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGZvbnRzOwogICAgfQogIH1dKTsKCiAgcmV0dXJuIFRydWVUeXBlQ29sbGVjdGlvbjsKfSgpOwoKdmFyIERGb250TmFtZSA9IG5ldyByLlN0cmluZyhyLnVpbnQ4KTsKdmFyIERGb250RGF0YSA9IG5ldyByLlN0cnVjdCh7CiAgbGVuOiByLnVpbnQzMiwKICBidWY6IG5ldyByLkJ1ZmZlcignbGVuJykKfSk7Cgp2YXIgUmVmID0gbmV3IHIuU3RydWN0KHsKICBpZDogci51aW50MTYsCiAgbmFtZU9mZnNldDogci5pbnQxNiwKICBhdHRyOiByLnVpbnQ4LAogIGRhdGFPZmZzZXQ6IHIudWludDI0LAogIGhhbmRsZTogci51aW50MzIKfSk7Cgp2YXIgVHlwZSA9IG5ldyByLlN0cnVjdCh7CiAgbmFtZTogbmV3IHIuU3RyaW5nKDQpLAogIG1heFR5cGVJbmRleDogci51aW50MTYsCiAgcmVmTGlzdDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgbmV3IHIuQXJyYXkoUmVmLCBmdW5jdGlvbiAodCkgewogICAgcmV0dXJuIHQubWF4VHlwZUluZGV4ICsgMTsKICB9KSwgeyB0eXBlOiAncGFyZW50JyB9KQp9KTsKCnZhciBUeXBlTGlzdCA9IG5ldyByLlN0cnVjdCh7CiAgbGVuZ3RoOiByLnVpbnQxNiwKICB0eXBlczogbmV3IHIuQXJyYXkoVHlwZSwgZnVuY3Rpb24gKHQpIHsKICAgIHJldHVybiB0Lmxlbmd0aCArIDE7CiAgfSkKfSk7Cgp2YXIgREZvbnRNYXAgPSBuZXcgci5TdHJ1Y3QoewogIHJlc2VydmVkOiBuZXcgci5SZXNlcnZlZChyLnVpbnQ4LCAyNCksCiAgdHlwZUxpc3Q6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIFR5cGVMaXN0KSwKICBuYW1lTGlzdE9mZnNldDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgJ3ZvaWQnKQp9KTsKCnZhciBERm9udEhlYWRlciA9IG5ldyByLlN0cnVjdCh7CiAgZGF0YU9mZnNldDogci51aW50MzIsCiAgbWFwOiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBERm9udE1hcCksCiAgZGF0YUxlbmd0aDogci51aW50MzIsCiAgbWFwTGVuZ3RoOiByLnVpbnQzMgp9KTsKCnZhciBERm9udCA9IGZ1bmN0aW9uICgpIHsKICBERm9udC5wcm9iZSA9IGZ1bmN0aW9uIHByb2JlKGJ1ZmZlcikgewogICAgdmFyIHN0cmVhbSA9IG5ldyByLkRlY29kZVN0cmVhbShidWZmZXIpOwoKICAgIHRyeSB7CiAgICAgIHZhciBoZWFkZXIgPSBERm9udEhlYWRlci5kZWNvZGUoc3RyZWFtKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGZvciAodmFyIF9pdGVyYXRvciA9IGhlYWRlci5tYXAudHlwZUxpc3QudHlwZXMsIF9pc0FycmF5ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IpLCBfaSA9IDAsIF9pdGVyYXRvciA9IF9pc0FycmF5ID8gX2l0ZXJhdG9yIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcik7OykgewogICAgICB2YXIgX3JlZjsKCiAgICAgIGlmIChfaXNBcnJheSkgewogICAgICAgIGlmIChfaSA+PSBfaXRlcmF0b3IubGVuZ3RoKSBicmVhazsKICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICB9IGVsc2UgewogICAgICAgIF9pID0gX2l0ZXJhdG9yLm5leHQoKTsKICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgX3JlZiA9IF9pLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgdHlwZSA9IF9yZWY7CgogICAgICBpZiAodHlwZS5uYW1lID09PSAnc2ZudCcpIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBmYWxzZTsKICB9OwoKICBmdW5jdGlvbiBERm9udChzdHJlYW0pIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBERm9udCk7CgogICAgdGhpcy5zdHJlYW0gPSBzdHJlYW07CiAgICB0aGlzLmhlYWRlciA9IERGb250SGVhZGVyLmRlY29kZSh0aGlzLnN0cmVhbSk7CgogICAgZm9yICh2YXIgX2l0ZXJhdG9yMiA9IHRoaXMuaGVhZGVyLm1hcC50eXBlTGlzdC50eXBlcywgX2lzQXJyYXkyID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IyKSwgX2kyID0gMCwgX2l0ZXJhdG9yMiA9IF9pc0FycmF5MiA/IF9pdGVyYXRvcjIgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMik7OykgewogICAgICB2YXIgX3JlZjI7CgogICAgICBpZiAoX2lzQXJyYXkyKSB7CiAgICAgICAgaWYgKF9pMiA+PSBfaXRlcmF0b3IyLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZjIgPSBfaXRlcmF0b3IyW19pMisrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaTIgPSBfaXRlcmF0b3IyLm5leHQoKTsKICAgICAgICBpZiAoX2kyLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYyID0gX2kyLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgdHlwZSA9IF9yZWYyOwoKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMyA9IHR5cGUucmVmTGlzdCwgX2lzQXJyYXkzID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IzKSwgX2kzID0gMCwgX2l0ZXJhdG9yMyA9IF9pc0FycmF5MyA/IF9pdGVyYXRvcjMgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMyk7OykgewogICAgICAgIHZhciBfcmVmMzsKCiAgICAgICAgaWYgKF9pc0FycmF5MykgewogICAgICAgICAgaWYgKF9pMyA+PSBfaXRlcmF0b3IzLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmMyA9IF9pdGVyYXRvcjNbX2kzKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaTMgPSBfaXRlcmF0b3IzLm5leHQoKTsKICAgICAgICAgIGlmIChfaTMuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmMyA9IF9pMy52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciByZWYgPSBfcmVmMzsKCiAgICAgICAgaWYgKHJlZi5uYW1lT2Zmc2V0ID49IDApIHsKICAgICAgICAgIHRoaXMuc3RyZWFtLnBvcyA9IHJlZi5uYW1lT2Zmc2V0ICsgdGhpcy5oZWFkZXIubWFwLm5hbWVMaXN0T2Zmc2V0OwogICAgICAgICAgcmVmLm5hbWUgPSBERm9udE5hbWUuZGVjb2RlKHRoaXMuc3RyZWFtKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmVmLm5hbWUgPSBudWxsOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKHR5cGUubmFtZSA9PT0gJ3NmbnQnKSB7CiAgICAgICAgdGhpcy5zZm50ID0gdHlwZTsKICAgICAgfQogICAgfQogIH0KCiAgREZvbnQucHJvdG90eXBlLmdldEZvbnQgPSBmdW5jdGlvbiBnZXRGb250KG5hbWUpIHsKICAgIGlmICghdGhpcy5zZm50KSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIGZvciAodmFyIF9pdGVyYXRvcjQgPSB0aGlzLnNmbnQucmVmTGlzdCwgX2lzQXJyYXk0ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3I0KSwgX2k0ID0gMCwgX2l0ZXJhdG9yNCA9IF9pc0FycmF5NCA/IF9pdGVyYXRvcjQgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yNCk7OykgewogICAgICB2YXIgX3JlZjQ7CgogICAgICBpZiAoX2lzQXJyYXk0KSB7CiAgICAgICAgaWYgKF9pNCA+PSBfaXRlcmF0b3I0Lmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZjQgPSBfaXRlcmF0b3I0W19pNCsrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaTQgPSBfaXRlcmF0b3I0Lm5leHQoKTsKICAgICAgICBpZiAoX2k0LmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWY0ID0gX2k0LnZhbHVlOwogICAgICB9CgogICAgICB2YXIgcmVmID0gX3JlZjQ7CgogICAgICB2YXIgcG9zID0gdGhpcy5oZWFkZXIuZGF0YU9mZnNldCArIHJlZi5kYXRhT2Zmc2V0ICsgNDsKICAgICAgdmFyIHN0cmVhbSA9IG5ldyByLkRlY29kZVN0cmVhbSh0aGlzLnN0cmVhbS5idWZmZXIuc2xpY2UocG9zKSk7CiAgICAgIHZhciBmb250ID0gbmV3IFRURkZvbnQoc3RyZWFtKTsKICAgICAgaWYgKGZvbnQucG9zdHNjcmlwdE5hbWUgPT09IG5hbWUpIHsKICAgICAgICByZXR1cm4gZm9udDsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBudWxsOwogIH07CgogIF9jcmVhdGVDbGFzcyhERm9udCwgW3sKICAgIGtleTogJ2ZvbnRzJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICB2YXIgZm9udHMgPSBbXTsKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yNSA9IHRoaXMuc2ZudC5yZWZMaXN0LCBfaXNBcnJheTUgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjUpLCBfaTUgPSAwLCBfaXRlcmF0b3I1ID0gX2lzQXJyYXk1ID8gX2l0ZXJhdG9yNSA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3I1KTs7KSB7CiAgICAgICAgdmFyIF9yZWY1OwoKICAgICAgICBpZiAoX2lzQXJyYXk1KSB7CiAgICAgICAgICBpZiAoX2k1ID49IF9pdGVyYXRvcjUubGVuZ3RoKSBicmVhazsKICAgICAgICAgIF9yZWY1ID0gX2l0ZXJhdG9yNVtfaTUrK107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF9pNSA9IF9pdGVyYXRvcjUubmV4dCgpOwogICAgICAgICAgaWYgKF9pNS5kb25lKSBicmVhazsKICAgICAgICAgIF9yZWY1ID0gX2k1LnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIHJlZiA9IF9yZWY1OwoKICAgICAgICB2YXIgcG9zID0gdGhpcy5oZWFkZXIuZGF0YU9mZnNldCArIHJlZi5kYXRhT2Zmc2V0ICsgNDsKICAgICAgICB2YXIgc3RyZWFtID0gbmV3IHIuRGVjb2RlU3RyZWFtKHRoaXMuc3RyZWFtLmJ1ZmZlci5zbGljZShwb3MpKTsKICAgICAgICBmb250cy5wdXNoKG5ldyBUVEZGb250KHN0cmVhbSkpOwogICAgICB9CgogICAgICByZXR1cm4gZm9udHM7CiAgICB9CiAgfV0pOwoKICByZXR1cm4gREZvbnQ7Cn0oKTsKCi8vIFJlZ2lzdGVyIGZvbnQgZm9ybWF0cwpmb250a2l0LnJlZ2lzdGVyRm9ybWF0KFRURkZvbnQpOwpmb250a2l0LnJlZ2lzdGVyRm9ybWF0KFdPRkZGb250KTsKZm9udGtpdC5yZWdpc3RlckZvcm1hdChXT0ZGMkZvbnQpOwpmb250a2l0LnJlZ2lzdGVyRm9ybWF0KFRydWVUeXBlQ29sbGVjdGlvbik7CmZvbnRraXQucmVnaXN0ZXJGb3JtYXQoREZvbnQpOwoKbW9kdWxlLmV4cG9ydHMgPSBmb250a2l0OwoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKSkpCgovKioqLyB9KSwKLyogMTY4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS43LjEKKGZ1bmN0aW9uKCkgewogIHZhciBrZXksIHZhbCwgX3JlZiwgX3JlZjE7CgogIGV4cG9ydHMuRW5jb2RlU3RyZWFtID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjkpOwoKICBleHBvcnRzLkRlY29kZVN0cmVhbSA9IF9fd2VicGFja19yZXF1aXJlX18oNTEpOwoKICBleHBvcnRzLkFycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Myk7CgogIGV4cG9ydHMuTGF6eUFycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODcpOwoKICBleHBvcnRzLkJpdGZpZWxkID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODgpOwoKICBleHBvcnRzLkJvb2xlYW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4OSk7CgogIGV4cG9ydHMuQnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTApOwoKICBleHBvcnRzLkVudW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5MSk7CgogIGV4cG9ydHMuT3B0aW9uYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5Mik7CgogIGV4cG9ydHMuUmVzZXJ2ZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5Myk7CgogIGV4cG9ydHMuU3RyaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTQpOwoKICBleHBvcnRzLlN0cnVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oOTQpOwoKICBleHBvcnRzLlZlcnNpb25lZFN0cnVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTk1KTsKCiAgX3JlZiA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpOwogIGZvciAoa2V5IGluIF9yZWYpIHsKICAgIHZhbCA9IF9yZWZba2V5XTsKICAgIGV4cG9ydHNba2V5XSA9IHZhbDsKICB9CgogIF9yZWYxID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTYpOwogIGZvciAoa2V5IGluIF9yZWYxKSB7CiAgICB2YWwgPSBfcmVmMVtrZXldOwogICAgZXhwb3J0c1trZXldID0gdmFsOwogIH0KCn0pLmNhbGwodGhpcyk7CgoKLyoqKi8gfSksCi8qIDE2OSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oQnVmZmVyKSB7Ly8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjcuMQooZnVuY3Rpb24oKSB7CiAgdmFyIERlY29kZVN0cmVhbSwgRW5jb2RlU3RyZWFtLCBpY29udiwgc3RyZWFtLAogICAgX19oYXNQcm9wID0ge30uaGFzT3duUHJvcGVydHksCiAgICBfX2V4dGVuZHMgPSBmdW5jdGlvbihjaGlsZCwgcGFyZW50KSB7IGZvciAodmFyIGtleSBpbiBwYXJlbnQpIHsgaWYgKF9faGFzUHJvcC5jYWxsKHBhcmVudCwga2V5KSkgY2hpbGRba2V5XSA9IHBhcmVudFtrZXldOyB9IGZ1bmN0aW9uIGN0b3IoKSB7IHRoaXMuY29uc3RydWN0b3IgPSBjaGlsZDsgfSBjdG9yLnByb3RvdHlwZSA9IHBhcmVudC5wcm90b3R5cGU7IGNoaWxkLnByb3RvdHlwZSA9IG5ldyBjdG9yKCk7IGNoaWxkLl9fc3VwZXJfXyA9IHBhcmVudC5wcm90b3R5cGU7IHJldHVybiBjaGlsZDsgfTsKCiAgc3RyZWFtID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7CgogIERlY29kZVN0cmVhbSA9IF9fd2VicGFja19yZXF1aXJlX18oNTEpOwoKICB0cnkgewogICAgaWNvbnYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUyKTsKICB9IGNhdGNoIChfZXJyb3IpIHt9CgogIEVuY29kZVN0cmVhbSA9IChmdW5jdGlvbihfc3VwZXIpIHsKICAgIHZhciBrZXk7CgogICAgX19leHRlbmRzKEVuY29kZVN0cmVhbSwgX3N1cGVyKTsKCiAgICBmdW5jdGlvbiBFbmNvZGVTdHJlYW0oYnVmZmVyU2l6ZSkgewogICAgICBpZiAoYnVmZmVyU2l6ZSA9PSBudWxsKSB7CiAgICAgICAgYnVmZmVyU2l6ZSA9IDY1NTM2OwogICAgICB9CiAgICAgIEVuY29kZVN0cmVhbS5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgdGhpcy5idWZmZXIgPSBuZXcgQnVmZmVyKGJ1ZmZlclNpemUpOwogICAgICB0aGlzLmJ1ZmZlck9mZnNldCA9IDA7CiAgICAgIHRoaXMucG9zID0gMDsKICAgIH0KCiAgICBmb3IgKGtleSBpbiBCdWZmZXIucHJvdG90eXBlKSB7CiAgICAgIGlmIChrZXkuc2xpY2UoMCwgNSkgPT09ICd3cml0ZScpIHsKICAgICAgICAoZnVuY3Rpb24oa2V5KSB7CiAgICAgICAgICB2YXIgYnl0ZXM7CiAgICAgICAgICBieXRlcyA9ICtEZWNvZGVTdHJlYW0uVFlQRVNba2V5LnJlcGxhY2UoL3dyaXRlfFtCTF1FL2csICcnKV07CiAgICAgICAgICByZXR1cm4gRW5jb2RlU3RyZWFtLnByb3RvdHlwZVtrZXldID0gZnVuY3Rpb24odmFsdWUpIHsKICAgICAgICAgICAgdGhpcy5lbnN1cmUoYnl0ZXMpOwogICAgICAgICAgICB0aGlzLmJ1ZmZlcltrZXldKHZhbHVlLCB0aGlzLmJ1ZmZlck9mZnNldCk7CiAgICAgICAgICAgIHRoaXMuYnVmZmVyT2Zmc2V0ICs9IGJ5dGVzOwogICAgICAgICAgICByZXR1cm4gdGhpcy5wb3MgKz0gYnl0ZXM7CiAgICAgICAgICB9OwogICAgICAgIH0pKGtleSk7CiAgICAgIH0KICAgIH0KCiAgICBFbmNvZGVTdHJlYW0ucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24oKSB7fTsKCiAgICBFbmNvZGVTdHJlYW0ucHJvdG90eXBlLmVuc3VyZSA9IGZ1bmN0aW9uKGJ5dGVzKSB7CiAgICAgIGlmICh0aGlzLmJ1ZmZlck9mZnNldCArIGJ5dGVzID4gdGhpcy5idWZmZXIubGVuZ3RoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZmx1c2goKTsKICAgICAgfQogICAgfTsKCiAgICBFbmNvZGVTdHJlYW0ucHJvdG90eXBlLmZsdXNoID0gZnVuY3Rpb24oKSB7CiAgICAgIGlmICh0aGlzLmJ1ZmZlck9mZnNldCA+IDApIHsKICAgICAgICB0aGlzLnB1c2gobmV3IEJ1ZmZlcih0aGlzLmJ1ZmZlci5zbGljZSgwLCB0aGlzLmJ1ZmZlck9mZnNldCkpKTsKICAgICAgICByZXR1cm4gdGhpcy5idWZmZXJPZmZzZXQgPSAwOwogICAgICB9CiAgICB9OwoKICAgIEVuY29kZVN0cmVhbS5wcm90b3R5cGUud3JpdGVCdWZmZXIgPSBmdW5jdGlvbihidWZmZXIpIHsKICAgICAgdGhpcy5mbHVzaCgpOwogICAgICB0aGlzLnB1c2goYnVmZmVyKTsKICAgICAgcmV0dXJuIHRoaXMucG9zICs9IGJ1ZmZlci5sZW5ndGg7CiAgICB9OwoKICAgIEVuY29kZVN0cmVhbS5wcm90b3R5cGUud3JpdGVTdHJpbmcgPSBmdW5jdGlvbihzdHJpbmcsIGVuY29kaW5nKSB7CiAgICAgIHZhciBidWYsIGJ5dGUsIGksIF9pLCBfcmVmOwogICAgICBpZiAoZW5jb2RpbmcgPT0gbnVsbCkgewogICAgICAgIGVuY29kaW5nID0gJ2FzY2lpJzsKICAgICAgfQogICAgICBzd2l0Y2ggKGVuY29kaW5nKSB7CiAgICAgICAgY2FzZSAndXRmMTZsZSc6CiAgICAgICAgY2FzZSAndWNzMic6CiAgICAgICAgY2FzZSAndXRmOCc6CiAgICAgICAgY2FzZSAnYXNjaWknOgogICAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVCdWZmZXIobmV3IEJ1ZmZlcihzdHJpbmcsIGVuY29kaW5nKSk7CiAgICAgICAgY2FzZSAndXRmMTZiZSc6CiAgICAgICAgICBidWYgPSBuZXcgQnVmZmVyKHN0cmluZywgJ3V0ZjE2bGUnKTsKICAgICAgICAgIGZvciAoaSA9IF9pID0gMCwgX3JlZiA9IGJ1Zi5sZW5ndGggLSAxOyBfaSA8IF9yZWY7IGkgPSBfaSArPSAyKSB7CiAgICAgICAgICAgIGJ5dGUgPSBidWZbaV07CiAgICAgICAgICAgIGJ1ZltpXSA9IGJ1ZltpICsgMV07CiAgICAgICAgICAgIGJ1ZltpICsgMV0gPSBieXRlOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVCdWZmZXIoYnVmKTsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgaWYgKGljb252KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLndyaXRlQnVmZmVyKGljb252LmVuY29kZShzdHJpbmcsIGVuY29kaW5nKSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0luc3RhbGwgaWNvbnYtbGl0ZSB0byBlbmFibGUgYWRkaXRpb25hbCBzdHJpbmcgZW5jb2RpbmdzLicpOwogICAgICAgICAgfQogICAgICB9CiAgICB9OwoKICAgIEVuY29kZVN0cmVhbS5wcm90b3R5cGUud3JpdGVVSW50MjRCRSA9IGZ1bmN0aW9uKHZhbCkgewogICAgICB0aGlzLmVuc3VyZSgzKTsKICAgICAgdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmZzZXQrK10gPSB2YWwgPj4+IDE2ICYgMHhmZjsKICAgICAgdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmZzZXQrK10gPSB2YWwgPj4+IDggJiAweGZmOwogICAgICB0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZnNldCsrXSA9IHZhbCAmIDB4ZmY7CiAgICAgIHJldHVybiB0aGlzLnBvcyArPSAzOwogICAgfTsKCiAgICBFbmNvZGVTdHJlYW0ucHJvdG90eXBlLndyaXRlVUludDI0TEUgPSBmdW5jdGlvbih2YWwpIHsKICAgICAgdGhpcy5lbnN1cmUoMyk7CiAgICAgIHRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2Zmc2V0KytdID0gdmFsICYgMHhmZjsKICAgICAgdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmZzZXQrK10gPSB2YWwgPj4+IDggJiAweGZmOwogICAgICB0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZnNldCsrXSA9IHZhbCA+Pj4gMTYgJiAweGZmOwogICAgICByZXR1cm4gdGhpcy5wb3MgKz0gMzsKICAgIH07CgogICAgRW5jb2RlU3RyZWFtLnByb3RvdHlwZS53cml0ZUludDI0QkUgPSBmdW5jdGlvbih2YWwpIHsKICAgICAgaWYgKHZhbCA+PSAwKSB7CiAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVVSW50MjRCRSh2YWwpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLndyaXRlVUludDI0QkUodmFsICsgMHhmZmZmZmYgKyAxKTsKICAgICAgfQogICAgfTsKCiAgICBFbmNvZGVTdHJlYW0ucHJvdG90eXBlLndyaXRlSW50MjRMRSA9IGZ1bmN0aW9uKHZhbCkgewogICAgICBpZiAodmFsID49IDApIHsKICAgICAgICByZXR1cm4gdGhpcy53cml0ZVVJbnQyNExFKHZhbCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVVSW50MjRMRSh2YWwgKyAweGZmZmZmZiArIDEpOwogICAgICB9CiAgICB9OwoKICAgIEVuY29kZVN0cmVhbS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uKHZhbCwgbGVuZ3RoKSB7CiAgICAgIHZhciBidWY7CiAgICAgIGlmIChsZW5ndGggPCB0aGlzLmJ1ZmZlci5sZW5ndGgpIHsKICAgICAgICB0aGlzLmVuc3VyZShsZW5ndGgpOwogICAgICAgIHRoaXMuYnVmZmVyLmZpbGwodmFsLCB0aGlzLmJ1ZmZlck9mZnNldCwgdGhpcy5idWZmZXJPZmZzZXQgKyBsZW5ndGgpOwogICAgICAgIHRoaXMuYnVmZmVyT2Zmc2V0ICs9IGxlbmd0aDsKICAgICAgICByZXR1cm4gdGhpcy5wb3MgKz0gbGVuZ3RoOwogICAgICB9IGVsc2UgewogICAgICAgIGJ1ZiA9IG5ldyBCdWZmZXIobGVuZ3RoKTsKICAgICAgICBidWYuZmlsbCh2YWwpOwogICAgICAgIHJldHVybiB0aGlzLndyaXRlQnVmZmVyKGJ1Zik7CiAgICAgIH0KICAgIH07CgogICAgRW5jb2RlU3RyZWFtLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHsKICAgICAgdGhpcy5mbHVzaCgpOwogICAgICByZXR1cm4gdGhpcy5wdXNoKG51bGwpOwogICAgfTsKCiAgICByZXR1cm4gRW5jb2RlU3RyZWFtOwoKICB9KShzdHJlYW0uUmVhZGFibGUpOwoKICBtb2R1bGUuZXhwb3J0cyA9IEVuY29kZVN0cmVhbTsKCn0pLmNhbGwodGhpcyk7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXIpKQoKLyoqKi8gfSksCi8qIDE3MCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKdmFyIEJPTUNoYXIgPSAnXHVGRUZGJzsKCmV4cG9ydHMuUHJlcGVuZEJPTSA9IFByZXBlbmRCT01XcmFwcGVyCmZ1bmN0aW9uIFByZXBlbmRCT01XcmFwcGVyKGVuY29kZXIsIG9wdGlvbnMpIHsKICAgIHRoaXMuZW5jb2RlciA9IGVuY29kZXI7CiAgICB0aGlzLmFkZEJPTSA9IHRydWU7Cn0KClByZXBlbmRCT01XcmFwcGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKHN0cikgewogICAgaWYgKHRoaXMuYWRkQk9NKSB7CiAgICAgICAgc3RyID0gQk9NQ2hhciArIHN0cjsKICAgICAgICB0aGlzLmFkZEJPTSA9IGZhbHNlOwogICAgfQoKICAgIHJldHVybiB0aGlzLmVuY29kZXIud3JpdGUoc3RyKTsKfQoKUHJlcGVuZEJPTVdyYXBwZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuZW5jb2Rlci5lbmQoKTsKfQoKCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpleHBvcnRzLlN0cmlwQk9NID0gU3RyaXBCT01XcmFwcGVyOwpmdW5jdGlvbiBTdHJpcEJPTVdyYXBwZXIoZGVjb2Rlciwgb3B0aW9ucykgewogICAgdGhpcy5kZWNvZGVyID0gZGVjb2RlcjsKICAgIHRoaXMucGFzcyA9IGZhbHNlOwogICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKfQoKU3RyaXBCT01XcmFwcGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1ZikgewogICAgdmFyIHJlcyA9IHRoaXMuZGVjb2Rlci53cml0ZShidWYpOwogICAgaWYgKHRoaXMucGFzcyB8fCAhcmVzKQogICAgICAgIHJldHVybiByZXM7CgogICAgaWYgKHJlc1swXSA9PT0gQk9NQ2hhcikgewogICAgICAgIHJlcyA9IHJlcy5zbGljZSgxKTsKICAgICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5zdHJpcEJPTSA9PT0gJ2Z1bmN0aW9uJykKICAgICAgICAgICAgdGhpcy5vcHRpb25zLnN0cmlwQk9NKCk7CiAgICB9CgogICAgdGhpcy5wYXNzID0gdHJ1ZTsKICAgIHJldHVybiByZXM7Cn0KClN0cmlwQk9NV3JhcHBlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5kZWNvZGVyLmVuZCgpOwp9CgoKCi8qKiovIH0pLAovKiAxNzEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKCi8vIFVwZGF0ZSB0aGlzIGFycmF5IGlmIHlvdSBhZGQvcmVuYW1lL3JlbW92ZSBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeS4KLy8gV2Ugc3VwcG9ydCBCcm93c2VyaWZ5IGJ5IHNraXBwaW5nIGF1dG9tYXRpYyBtb2R1bGUgZGlzY292ZXJ5IGFuZCByZXF1aXJpbmcgbW9kdWxlcyBkaXJlY3RseS4KdmFyIG1vZHVsZXMgPSBbCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3MiksCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3MyksCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3NCksCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3NSksCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3NiksCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3NyksCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3OCksCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3OSksCl07CgovLyBQdXQgYWxsIGVuY29kaW5nL2FsaWFzL2NvZGVjIGRlZmluaXRpb25zIHRvIHNpbmdsZSBvYmplY3QgYW5kIGV4cG9ydCBpdC4gCmZvciAodmFyIGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5ndGg7IGkrKykgewogICAgdmFyIG1vZHVsZSA9IG1vZHVsZXNbaV07CiAgICBmb3IgKHZhciBlbmMgaW4gbW9kdWxlKQogICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kdWxlLCBlbmMpKQogICAgICAgICAgICBleHBvcnRzW2VuY10gPSBtb2R1bGVbZW5jXTsKfQoKCi8qKiovIH0pLAovKiAxNzIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKdmFyIEJ1ZmZlciA9IF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyOwoKLy8gRXhwb3J0IE5vZGUuanMgaW50ZXJuYWwgZW5jb2RpbmdzLgoKbW9kdWxlLmV4cG9ydHMgPSB7CiAgICAvLyBFbmNvZGluZ3MKICAgIHV0Zjg6ICAgeyB0eXBlOiAiX2ludGVybmFsIiwgYm9tQXdhcmU6IHRydWV9LAogICAgY2VzdTg6ICB7IHR5cGU6ICJfaW50ZXJuYWwiLCBib21Bd2FyZTogdHJ1ZX0sCiAgICB1bmljb2RlMTF1dGY4OiAidXRmOCIsCgogICAgdWNzMjogICB7IHR5cGU6ICJfaW50ZXJuYWwiLCBib21Bd2FyZTogdHJ1ZX0sCiAgICB1dGYxNmxlOiAidWNzMiIsCgogICAgYmluYXJ5OiB7IHR5cGU6ICJfaW50ZXJuYWwiIH0sCiAgICBiYXNlNjQ6IHsgdHlwZTogIl9pbnRlcm5hbCIgfSwKICAgIGhleDogICAgeyB0eXBlOiAiX2ludGVybmFsIiB9LAoKICAgIC8vIENvZGVjLgogICAgX2ludGVybmFsOiBJbnRlcm5hbENvZGVjLAp9OwoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmZ1bmN0aW9uIEludGVybmFsQ29kZWMoY29kZWNPcHRpb25zLCBpY29udikgewogICAgdGhpcy5lbmMgPSBjb2RlY09wdGlvbnMuZW5jb2RpbmdOYW1lOwogICAgdGhpcy5ib21Bd2FyZSA9IGNvZGVjT3B0aW9ucy5ib21Bd2FyZTsKCiAgICBpZiAodGhpcy5lbmMgPT09ICJiYXNlNjQiKQogICAgICAgIHRoaXMuZW5jb2RlciA9IEludGVybmFsRW5jb2RlckJhc2U2NDsKICAgIGVsc2UgaWYgKHRoaXMuZW5jID09PSAiY2VzdTgiKSB7CiAgICAgICAgdGhpcy5lbmMgPSAidXRmOCI7IC8vIFVzZSB1dGY4IGZvciBkZWNvZGluZy4KICAgICAgICB0aGlzLmVuY29kZXIgPSBJbnRlcm5hbEVuY29kZXJDZXN1ODsKCiAgICAgICAgLy8gQWRkIGRlY29kZXIgZm9yIHZlcnNpb25zIG9mIE5vZGUgbm90IHN1cHBvcnRpbmcgQ0VTVS04CiAgICAgICAgaWYgKG5ldyBCdWZmZXIoJ2VkYTBiZGVkYjJhOScsICdoZXgnKS50b1N0cmluZygpICE9PSAn8J+SqScpIHsKICAgICAgICAgICAgdGhpcy5kZWNvZGVyID0gSW50ZXJuYWxEZWNvZGVyQ2VzdTg7CiAgICAgICAgICAgIHRoaXMuZGVmYXVsdENoYXJVbmljb2RlID0gaWNvbnYuZGVmYXVsdENoYXJVbmljb2RlOwogICAgICAgIH0KICAgIH0KfQoKSW50ZXJuYWxDb2RlYy5wcm90b3R5cGUuZW5jb2RlciA9IEludGVybmFsRW5jb2RlcjsKSW50ZXJuYWxDb2RlYy5wcm90b3R5cGUuZGVjb2RlciA9IEludGVybmFsRGVjb2RlcjsKCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBXZSB1c2Ugbm9kZS5qcyBpbnRlcm5hbCBkZWNvZGVyLiBJdHMgc2lnbmF0dXJlIGlzIHRoZSBzYW1lIGFzIG91cnMuCnZhciBTdHJpbmdEZWNvZGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NykuU3RyaW5nRGVjb2RlcjsKCmlmICghU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZW5kKSAvLyBOb2RlIHYwLjggZG9lc24ndCBoYXZlIHRoaXMgbWV0aG9kLgogICAgU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7fTsKCgpmdW5jdGlvbiBJbnRlcm5hbERlY29kZXIob3B0aW9ucywgY29kZWMpIHsKICAgIFN0cmluZ0RlY29kZXIuY2FsbCh0aGlzLCBjb2RlYy5lbmMpOwp9CgpJbnRlcm5hbERlY29kZXIucHJvdG90eXBlID0gU3RyaW5nRGVjb2Rlci5wcm90b3R5cGU7CgoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gRW5jb2RlciBpcyBtb3N0bHkgdHJpdmlhbAoKZnVuY3Rpb24gSW50ZXJuYWxFbmNvZGVyKG9wdGlvbnMsIGNvZGVjKSB7CiAgICB0aGlzLmVuYyA9IGNvZGVjLmVuYzsKfQoKSW50ZXJuYWxFbmNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKHN0cikgewogICAgcmV0dXJuIG5ldyBCdWZmZXIoc3RyLCB0aGlzLmVuYyk7Cn0KCkludGVybmFsRW5jb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7Cn0KCgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBFeGNlcHQgYmFzZTY0IGVuY29kZXIsIHdoaWNoIG11c3Qga2VlcCBpdHMgc3RhdGUuCgpmdW5jdGlvbiBJbnRlcm5hbEVuY29kZXJCYXNlNjQob3B0aW9ucywgY29kZWMpIHsKICAgIHRoaXMucHJldlN0ciA9ICcnOwp9CgpJbnRlcm5hbEVuY29kZXJCYXNlNjQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyKSB7CiAgICBzdHIgPSB0aGlzLnByZXZTdHIgKyBzdHI7CiAgICB2YXIgY29tcGxldGVRdWFkcyA9IHN0ci5sZW5ndGggLSAoc3RyLmxlbmd0aCAlIDQpOwogICAgdGhpcy5wcmV2U3RyID0gc3RyLnNsaWNlKGNvbXBsZXRlUXVhZHMpOwogICAgc3RyID0gc3RyLnNsaWNlKDAsIGNvbXBsZXRlUXVhZHMpOwoKICAgIHJldHVybiBuZXcgQnVmZmVyKHN0ciwgImJhc2U2NCIpOwp9CgpJbnRlcm5hbEVuY29kZXJCYXNlNjQucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIG5ldyBCdWZmZXIodGhpcy5wcmV2U3RyLCAiYmFzZTY0Iik7Cn0KCgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBDRVNVLTggZW5jb2RlciBpcyBhbHNvIHNwZWNpYWwuCgpmdW5jdGlvbiBJbnRlcm5hbEVuY29kZXJDZXN1OChvcHRpb25zLCBjb2RlYykgewp9CgpJbnRlcm5hbEVuY29kZXJDZXN1OC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHIpIHsKICAgIHZhciBidWYgPSBuZXcgQnVmZmVyKHN0ci5sZW5ndGggKiAzKSwgYnVmSWR4ID0gMDsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGNoYXJDb2RlID0gc3RyLmNoYXJDb2RlQXQoaSk7CiAgICAgICAgLy8gTmFpdmUgaW1wbGVtZW50YXRpb24sIGJ1dCBpdCB3b3JrcyBiZWNhdXNlIENFU1UtOCBpcyBlc3BlY2lhbGx5IGVhc3kKICAgICAgICAvLyB0byBjb252ZXJ0IGZyb20gVVRGLTE2ICh3aGljaCBhbGwgSlMgc3RyaW5ncyBhcmUgZW5jb2RlZCBpbikuCiAgICAgICAgaWYgKGNoYXJDb2RlIDwgMHg4MCkKICAgICAgICAgICAgYnVmW2J1ZklkeCsrXSA9IGNoYXJDb2RlOwogICAgICAgIGVsc2UgaWYgKGNoYXJDb2RlIDwgMHg4MDApIHsKICAgICAgICAgICAgYnVmW2J1ZklkeCsrXSA9IDB4QzAgKyAoY2hhckNvZGUgPj4+IDYpOwogICAgICAgICAgICBidWZbYnVmSWR4KytdID0gMHg4MCArIChjaGFyQ29kZSAmIDB4M2YpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsgLy8gY2hhckNvZGUgd2lsbCBhbHdheXMgYmUgPCAweDEwMDAwIGluIGphdmFzY3JpcHQuCiAgICAgICAgICAgIGJ1ZltidWZJZHgrK10gPSAweEUwICsgKGNoYXJDb2RlID4+PiAxMik7CiAgICAgICAgICAgIGJ1ZltidWZJZHgrK10gPSAweDgwICsgKChjaGFyQ29kZSA+Pj4gNikgJiAweDNmKTsKICAgICAgICAgICAgYnVmW2J1ZklkeCsrXSA9IDB4ODAgKyAoY2hhckNvZGUgJiAweDNmKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gYnVmLnNsaWNlKDAsIGJ1ZklkeCk7Cn0KCkludGVybmFsRW5jb2RlckNlc3U4LnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHsKfQoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gQ0VTVS04IGRlY29kZXIgaXMgbm90IGltcGxlbWVudGVkIGluIE5vZGUgdjQuMCsKCmZ1bmN0aW9uIEludGVybmFsRGVjb2RlckNlc3U4KG9wdGlvbnMsIGNvZGVjKSB7CiAgICB0aGlzLmFjYyA9IDA7CiAgICB0aGlzLmNvbnRCeXRlcyA9IDA7CiAgICB0aGlzLmFjY0J5dGVzID0gMDsKICAgIHRoaXMuZGVmYXVsdENoYXJVbmljb2RlID0gY29kZWMuZGVmYXVsdENoYXJVbmljb2RlOwp9CgpJbnRlcm5hbERlY29kZXJDZXN1OC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihidWYpIHsKICAgIHZhciBhY2MgPSB0aGlzLmFjYywgY29udEJ5dGVzID0gdGhpcy5jb250Qnl0ZXMsIGFjY0J5dGVzID0gdGhpcy5hY2NCeXRlcywgCiAgICAgICAgcmVzID0gJyc7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1Zi5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBjdXJCeXRlID0gYnVmW2ldOwogICAgICAgIGlmICgoY3VyQnl0ZSAmIDB4QzApICE9PSAweDgwKSB7IC8vIExlYWRpbmcgYnl0ZQogICAgICAgICAgICBpZiAoY29udEJ5dGVzID4gMCkgeyAvLyBQcmV2aW91cyBjb2RlIGlzIGludmFsaWQKICAgICAgICAgICAgICAgIHJlcyArPSB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZTsKICAgICAgICAgICAgICAgIGNvbnRCeXRlcyA9IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChjdXJCeXRlIDwgMHg4MCkgeyAvLyBTaW5nbGUtYnl0ZSBjb2RlCiAgICAgICAgICAgICAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjdXJCeXRlKTsKICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJCeXRlIDwgMHhFMCkgeyAvLyBUd28tYnl0ZSBjb2RlCiAgICAgICAgICAgICAgICBhY2MgPSBjdXJCeXRlICYgMHgxRjsKICAgICAgICAgICAgICAgIGNvbnRCeXRlcyA9IDE7IGFjY0J5dGVzID0gMTsKICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJCeXRlIDwgMHhGMCkgeyAvLyBUaHJlZS1ieXRlIGNvZGUKICAgICAgICAgICAgICAgIGFjYyA9IGN1ckJ5dGUgJiAweDBGOwogICAgICAgICAgICAgICAgY29udEJ5dGVzID0gMjsgYWNjQnl0ZXMgPSAxOwogICAgICAgICAgICB9IGVsc2UgeyAvLyBGb3VyIG9yIG1vcmUgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIENFU1UtOC4KICAgICAgICAgICAgICAgIHJlcyArPSB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7IC8vIENvbnRpbnVhdGlvbiBieXRlCiAgICAgICAgICAgIGlmIChjb250Qnl0ZXMgPiAwKSB7IC8vIFdlJ3JlIHdhaXRpbmcgZm9yIGl0LgogICAgICAgICAgICAgICAgYWNjID0gKGFjYyA8PCA2KSB8IChjdXJCeXRlICYgMHgzZik7CiAgICAgICAgICAgICAgICBjb250Qnl0ZXMtLTsgYWNjQnl0ZXMrKzsKICAgICAgICAgICAgICAgIGlmIChjb250Qnl0ZXMgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3Igb3ZlcmxvbmcgZW5jb2RpbmcsIGJ1dCBzdXBwb3J0IE1vZGlmaWVkIFVURi04IChlbmNvZGluZyBOVUxMIGFzIEMwIDgwKQogICAgICAgICAgICAgICAgICAgIGlmIChhY2NCeXRlcyA9PT0gMiAmJiBhY2MgPCAweDgwICYmIGFjYyA+IDApCiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhY2NCeXRlcyA9PT0gMyAmJiBhY2MgPCAweDgwMCkKICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IHRoaXMuZGVmYXVsdENoYXJVbmljb2RlOwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWN0dWFsbHkgYWRkIGNoYXJhY3Rlci4KICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYWNjKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsgLy8gVW5leHBlY3RlZCBjb250aW51YXRpb24gYnl0ZQogICAgICAgICAgICAgICAgcmVzICs9IHRoaXMuZGVmYXVsdENoYXJVbmljb2RlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgdGhpcy5hY2MgPSBhY2M7IHRoaXMuY29udEJ5dGVzID0gY29udEJ5dGVzOyB0aGlzLmFjY0J5dGVzID0gYWNjQnl0ZXM7CiAgICByZXR1cm4gcmVzOwp9CgpJbnRlcm5hbERlY29kZXJDZXN1OC5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgcmVzID0gMDsKICAgIGlmICh0aGlzLmNvbnRCeXRlcyA+IDApCiAgICAgICAgcmVzICs9IHRoaXMuZGVmYXVsdENoYXJVbmljb2RlOwogICAgcmV0dXJuIHJlczsKfQoKCi8qKiovIH0pLAovKiAxNzMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKdmFyIEJ1ZmZlciA9IF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyOwoKLy8gTm90ZTogVVRGMTYtTEUgKG9yIFVDUzIpIGNvZGVjIGlzIE5vZGUuanMgbmF0aXZlLiBTZWUgZW5jb2RpbmdzL2ludGVybmFsLmpzCgovLyA9PSBVVEYxNi1CRSBjb2RlYy4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKZXhwb3J0cy51dGYxNmJlID0gVXRmMTZCRUNvZGVjOwpmdW5jdGlvbiBVdGYxNkJFQ29kZWMoKSB7Cn0KClV0ZjE2QkVDb2RlYy5wcm90b3R5cGUuZW5jb2RlciA9IFV0ZjE2QkVFbmNvZGVyOwpVdGYxNkJFQ29kZWMucHJvdG90eXBlLmRlY29kZXIgPSBVdGYxNkJFRGVjb2RlcjsKVXRmMTZCRUNvZGVjLnByb3RvdHlwZS5ib21Bd2FyZSA9IHRydWU7CgoKLy8gLS0gRW5jb2RpbmcKCmZ1bmN0aW9uIFV0ZjE2QkVFbmNvZGVyKCkgewp9CgpVdGYxNkJFRW5jb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHIpIHsKICAgIHZhciBidWYgPSBuZXcgQnVmZmVyKHN0ciwgJ3VjczInKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVmLmxlbmd0aDsgaSArPSAyKSB7CiAgICAgICAgdmFyIHRtcCA9IGJ1ZltpXTsgYnVmW2ldID0gYnVmW2krMV07IGJ1ZltpKzFdID0gdG1wOwogICAgfQogICAgcmV0dXJuIGJ1ZjsKfQoKVXRmMTZCRUVuY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkgewp9CgoKLy8gLS0gRGVjb2RpbmcKCmZ1bmN0aW9uIFV0ZjE2QkVEZWNvZGVyKCkgewogICAgdGhpcy5vdmVyZmxvd0J5dGUgPSAtMTsKfQoKVXRmMTZCRURlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oYnVmKSB7CiAgICBpZiAoYnVmLmxlbmd0aCA9PSAwKQogICAgICAgIHJldHVybiAnJzsKCiAgICB2YXIgYnVmMiA9IG5ldyBCdWZmZXIoYnVmLmxlbmd0aCArIDEpLAogICAgICAgIGkgPSAwLCBqID0gMDsKCiAgICBpZiAodGhpcy5vdmVyZmxvd0J5dGUgIT09IC0xKSB7CiAgICAgICAgYnVmMlswXSA9IGJ1ZlswXTsKICAgICAgICBidWYyWzFdID0gdGhpcy5vdmVyZmxvd0J5dGU7CiAgICAgICAgaSA9IDE7IGogPSAyOwogICAgfQoKICAgIGZvciAoOyBpIDwgYnVmLmxlbmd0aC0xOyBpICs9IDIsIGorPSAyKSB7CiAgICAgICAgYnVmMltqXSA9IGJ1ZltpKzFdOwogICAgICAgIGJ1ZjJbaisxXSA9IGJ1ZltpXTsKICAgIH0KCiAgICB0aGlzLm92ZXJmbG93Qnl0ZSA9IChpID09IGJ1Zi5sZW5ndGgtMSkgPyBidWZbYnVmLmxlbmd0aC0xXSA6IC0xOwoKICAgIHJldHVybiBidWYyLnNsaWNlKDAsIGopLnRvU3RyaW5nKCd1Y3MyJyk7Cn0KClV0ZjE2QkVEZWNvZGVyLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHsKfQoKCi8vID09IFVURi0xNiBjb2RlYyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIERlY29kZXIgY2hvb3NlcyBhdXRvbWF0aWNhbGx5IGZyb20gVVRGLTE2TEUgYW5kIFVURi0xNkJFIHVzaW5nIEJPTSBhbmQgc3BhY2UtYmFzZWQgaGV1cmlzdGljLgovLyBEZWZhdWx0cyB0byBVVEYtMTZMRSwgYXMgaXQncyBwcmV2YWxlbnQgYW5kIGRlZmF1bHQgaW4gTm9kZS4KLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VVEYtMTYgYW5kIGh0dHA6Ly9lbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcvI3V0Zi0xNmxlCi8vIERlY29kZXIgZGVmYXVsdCBjYW4gYmUgY2hhbmdlZDogaWNvbnYuZGVjb2RlKGJ1ZiwgJ3V0ZjE2Jywge2RlZmF1bHRFbmNvZGluZzogJ3V0Zi0xNmJlJ30pOwoKLy8gRW5jb2RlciB1c2VzIFVURi0xNkxFIGFuZCBwcmVwZW5kcyBCT00gKHdoaWNoIGNhbiBiZSBvdmVycmlkZGVuIHdpdGggYWRkQk9NOiBmYWxzZSkuCgpleHBvcnRzLnV0ZjE2ID0gVXRmMTZDb2RlYzsKZnVuY3Rpb24gVXRmMTZDb2RlYyhjb2RlY09wdGlvbnMsIGljb252KSB7CiAgICB0aGlzLmljb252ID0gaWNvbnY7Cn0KClV0ZjE2Q29kZWMucHJvdG90eXBlLmVuY29kZXIgPSBVdGYxNkVuY29kZXI7ClV0ZjE2Q29kZWMucHJvdG90eXBlLmRlY29kZXIgPSBVdGYxNkRlY29kZXI7CgoKLy8gLS0gRW5jb2RpbmcgKHBhc3MtdGhyb3VnaCkKCmZ1bmN0aW9uIFV0ZjE2RW5jb2RlcihvcHRpb25zLCBjb2RlYykgewogICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgICBpZiAob3B0aW9ucy5hZGRCT00gPT09IHVuZGVmaW5lZCkKICAgICAgICBvcHRpb25zLmFkZEJPTSA9IHRydWU7CiAgICB0aGlzLmVuY29kZXIgPSBjb2RlYy5pY29udi5nZXRFbmNvZGVyKCd1dGYtMTZsZScsIG9wdGlvbnMpOwp9CgpVdGYxNkVuY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyKSB7CiAgICByZXR1cm4gdGhpcy5lbmNvZGVyLndyaXRlKHN0cik7Cn0KClV0ZjE2RW5jb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5lbmNvZGVyLmVuZCgpOwp9CgoKLy8gLS0gRGVjb2RpbmcKCmZ1bmN0aW9uIFV0ZjE2RGVjb2RlcihvcHRpb25zLCBjb2RlYykgewogICAgdGhpcy5kZWNvZGVyID0gbnVsbDsKICAgIHRoaXMuaW5pdGlhbEJ5dGVzID0gW107CiAgICB0aGlzLmluaXRpYWxCeXRlc0xlbiA9IDA7CgogICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgIHRoaXMuaWNvbnYgPSBjb2RlYy5pY29udjsKfQoKVXRmMTZEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1ZikgewogICAgaWYgKCF0aGlzLmRlY29kZXIpIHsKICAgICAgICAvLyBDb2RlYyBpcyBub3QgY2hvc2VuIHlldC4gQWNjdW11bGF0ZSBpbml0aWFsIGJ5dGVzLgogICAgICAgIHRoaXMuaW5pdGlhbEJ5dGVzLnB1c2goYnVmKTsKICAgICAgICB0aGlzLmluaXRpYWxCeXRlc0xlbiArPSBidWYubGVuZ3RoOwogICAgICAgIAogICAgICAgIGlmICh0aGlzLmluaXRpYWxCeXRlc0xlbiA8IDE2KSAvLyBXZSBuZWVkIG1vcmUgYnl0ZXMgdG8gdXNlIHNwYWNlIGhldXJpc3RpYyAoc2VlIGJlbG93KQogICAgICAgICAgICByZXR1cm4gJyc7CgogICAgICAgIC8vIFdlIGhhdmUgZW5vdWdoIGJ5dGVzIC0+IGRldGVjdCBlbmRpYW5uZXNzLgogICAgICAgIHZhciBidWYgPSBCdWZmZXIuY29uY2F0KHRoaXMuaW5pdGlhbEJ5dGVzKSwKICAgICAgICAgICAgZW5jb2RpbmcgPSBkZXRlY3RFbmNvZGluZyhidWYsIHRoaXMub3B0aW9ucy5kZWZhdWx0RW5jb2RpbmcpOwogICAgICAgIHRoaXMuZGVjb2RlciA9IHRoaXMuaWNvbnYuZ2V0RGVjb2RlcihlbmNvZGluZywgdGhpcy5vcHRpb25zKTsKICAgICAgICB0aGlzLmluaXRpYWxCeXRlcy5sZW5ndGggPSB0aGlzLmluaXRpYWxCeXRlc0xlbiA9IDA7CiAgICB9CgogICAgcmV0dXJuIHRoaXMuZGVjb2Rlci53cml0ZShidWYpOwp9CgpVdGYxNkRlY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkgewogICAgaWYgKCF0aGlzLmRlY29kZXIpIHsKICAgICAgICB2YXIgYnVmID0gQnVmZmVyLmNvbmNhdCh0aGlzLmluaXRpYWxCeXRlcyksCiAgICAgICAgICAgIGVuY29kaW5nID0gZGV0ZWN0RW5jb2RpbmcoYnVmLCB0aGlzLm9wdGlvbnMuZGVmYXVsdEVuY29kaW5nKTsKICAgICAgICB0aGlzLmRlY29kZXIgPSB0aGlzLmljb252LmdldERlY29kZXIoZW5jb2RpbmcsIHRoaXMub3B0aW9ucyk7CgogICAgICAgIHZhciByZXMgPSB0aGlzLmRlY29kZXIud3JpdGUoYnVmKSwKICAgICAgICAgICAgdHJhaWwgPSB0aGlzLmRlY29kZXIuZW5kKCk7CgogICAgICAgIHJldHVybiB0cmFpbCA/IChyZXMgKyB0cmFpbCkgOiByZXM7CiAgICB9CiAgICByZXR1cm4gdGhpcy5kZWNvZGVyLmVuZCgpOwp9CgpmdW5jdGlvbiBkZXRlY3RFbmNvZGluZyhidWYsIGRlZmF1bHRFbmNvZGluZykgewogICAgdmFyIGVuYyA9IGRlZmF1bHRFbmNvZGluZyB8fCAndXRmLTE2bGUnOwoKICAgIGlmIChidWYubGVuZ3RoID49IDIpIHsKICAgICAgICAvLyBDaGVjayBCT00uCiAgICAgICAgaWYgKGJ1ZlswXSA9PSAweEZFICYmIGJ1ZlsxXSA9PSAweEZGKSAvLyBVVEYtMTZCRSBCT00KICAgICAgICAgICAgZW5jID0gJ3V0Zi0xNmJlJzsKICAgICAgICBlbHNlIGlmIChidWZbMF0gPT0gMHhGRiAmJiBidWZbMV0gPT0gMHhGRSkgLy8gVVRGLTE2TEUgQk9NCiAgICAgICAgICAgIGVuYyA9ICd1dGYtMTZsZSc7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIE5vIEJPTSBmb3VuZC4gVHJ5IHRvIGRlZHVjZSBlbmNvZGluZyBmcm9tIGluaXRpYWwgY29udGVudC4KICAgICAgICAgICAgLy8gTW9zdCBvZiB0aGUgdGltZSwgdGhlIGNvbnRlbnQgaGFzIEFTQ0lJIGNoYXJzIChVKzAwKiopLCBidXQgdGhlIG9wcG9zaXRlIChVKyoqMDApIGlzIHVuY29tbW9uLgogICAgICAgICAgICAvLyBTbywgd2UgY291bnQgQVNDSUkgYXMgaWYgaXQgd2FzIExFIG9yIEJFLCBhbmQgZGVjaWRlIGZyb20gdGhhdC4KICAgICAgICAgICAgdmFyIGFzY2lpQ2hhcnNMRSA9IDAsIGFzY2lpQ2hhcnNCRSA9IDAsIC8vIENvdW50cyBvZiBjaGFycyBpbiBib3RoIHBvc2l0aW9ucwogICAgICAgICAgICAgICAgX2xlbiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSAoYnVmLmxlbmd0aCAlIDIpLCA2NCk7IC8vIExlbiBpcyBhbHdheXMgZXZlbi4KCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX2xlbjsgaSArPSAyKSB7CiAgICAgICAgICAgICAgICBpZiAoYnVmW2ldID09PSAwICYmIGJ1ZltpKzFdICE9PSAwKSBhc2NpaUNoYXJzQkUrKzsKICAgICAgICAgICAgICAgIGlmIChidWZbaV0gIT09IDAgJiYgYnVmW2krMV0gPT09IDApIGFzY2lpQ2hhcnNMRSsrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoYXNjaWlDaGFyc0JFID4gYXNjaWlDaGFyc0xFKQogICAgICAgICAgICAgICAgZW5jID0gJ3V0Zi0xNmJlJzsKICAgICAgICAgICAgZWxzZSBpZiAoYXNjaWlDaGFyc0JFIDwgYXNjaWlDaGFyc0xFKQogICAgICAgICAgICAgICAgZW5jID0gJ3V0Zi0xNmxlJzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGVuYzsKfQoKCgoKLyoqKi8gfSksCi8qIDE3NCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Cgp2YXIgQnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXI7CgovLyBVVEYtNyBjb2RlYywgYWNjb3JkaW5nIHRvIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyMTUyCi8vIFNlZSBhbHNvIGJlbG93IGEgVVRGLTctSU1BUCBjb2RlYywgYWNjb3JkaW5nIHRvIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM1MDEjc2VjdGlvbi01LjEuMwoKZXhwb3J0cy51dGY3ID0gVXRmN0NvZGVjOwpleHBvcnRzLnVuaWNvZGUxMXV0ZjcgPSAndXRmNyc7IC8vIEFsaWFzIFVOSUNPREUtMS0xLVVURi03CmZ1bmN0aW9uIFV0ZjdDb2RlYyhjb2RlY09wdGlvbnMsIGljb252KSB7CiAgICB0aGlzLmljb252ID0gaWNvbnY7Cn07CgpVdGY3Q29kZWMucHJvdG90eXBlLmVuY29kZXIgPSBVdGY3RW5jb2RlcjsKVXRmN0NvZGVjLnByb3RvdHlwZS5kZWNvZGVyID0gVXRmN0RlY29kZXI7ClV0ZjdDb2RlYy5wcm90b3R5cGUuYm9tQXdhcmUgPSB0cnVlOwoKCi8vIC0tIEVuY29kaW5nCgp2YXIgbm9uRGlyZWN0Q2hhcnMgPSAvW15BLVphLXowLTknXChcKSwtXC5cLzpcPyBcblxyXHRdKy9nOwoKZnVuY3Rpb24gVXRmN0VuY29kZXIob3B0aW9ucywgY29kZWMpIHsKICAgIHRoaXMuaWNvbnYgPSBjb2RlYy5pY29udjsKfQoKVXRmN0VuY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyKSB7CiAgICAvLyBOYWl2ZSBpbXBsZW1lbnRhdGlvbi4KICAgIC8vIE5vbi1kaXJlY3QgY2hhcnMgYXJlIGVuY29kZWQgYXMgIis8YmFzZTY0Pi0iOyBzaW5nbGUgIisiIGNoYXIgaXMgZW5jb2RlZCBhcyAiKy0iLgogICAgcmV0dXJuIG5ldyBCdWZmZXIoc3RyLnJlcGxhY2Uobm9uRGlyZWN0Q2hhcnMsIGZ1bmN0aW9uKGNodW5rKSB7CiAgICAgICAgcmV0dXJuICIrIiArIChjaHVuayA9PT0gJysnID8gJycgOiAKICAgICAgICAgICAgdGhpcy5pY29udi5lbmNvZGUoY2h1bmssICd1dGYxNi1iZScpLnRvU3RyaW5nKCdiYXNlNjQnKS5yZXBsYWNlKC89KyQvLCAnJykpIAogICAgICAgICAgICArICItIjsKICAgIH0uYmluZCh0aGlzKSkpOwp9CgpVdGY3RW5jb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7Cn0KCgovLyAtLSBEZWNvZGluZwoKZnVuY3Rpb24gVXRmN0RlY29kZXIob3B0aW9ucywgY29kZWMpIHsKICAgIHRoaXMuaWNvbnYgPSBjb2RlYy5pY29udjsKICAgIHRoaXMuaW5CYXNlNjQgPSBmYWxzZTsKICAgIHRoaXMuYmFzZTY0QWNjdW0gPSAnJzsKfQoKdmFyIGJhc2U2NFJlZ2V4ID0gL1tBLVphLXowLTlcLytdLzsKdmFyIGJhc2U2NENoYXJzID0gW107CmZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyBpKyspCiAgICBiYXNlNjRDaGFyc1tpXSA9IGJhc2U2NFJlZ2V4LnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShpKSk7Cgp2YXIgcGx1c0NoYXIgPSAnKycuY2hhckNvZGVBdCgwKSwgCiAgICBtaW51c0NoYXIgPSAnLScuY2hhckNvZGVBdCgwKSwKICAgIGFuZENoYXIgPSAnJicuY2hhckNvZGVBdCgwKTsKClV0ZjdEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1ZikgewogICAgdmFyIHJlcyA9ICIiLCBsYXN0SSA9IDAsCiAgICAgICAgaW5CYXNlNjQgPSB0aGlzLmluQmFzZTY0LAogICAgICAgIGJhc2U2NEFjY3VtID0gdGhpcy5iYXNlNjRBY2N1bTsKCiAgICAvLyBUaGUgZGVjb2RlciBpcyBtb3JlIGludm9sdmVkIGFzIHdlIG11c3QgaGFuZGxlIGNodW5rcyBpbiBzdHJlYW0uCgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWYubGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAoIWluQmFzZTY0KSB7IC8vIFdlJ3JlIGluIGRpcmVjdCBtb2RlLgogICAgICAgICAgICAvLyBXcml0ZSBkaXJlY3QgY2hhcnMgdW50aWwgJysnCiAgICAgICAgICAgIGlmIChidWZbaV0gPT0gcGx1c0NoYXIpIHsKICAgICAgICAgICAgICAgIHJlcyArPSB0aGlzLmljb252LmRlY29kZShidWYuc2xpY2UobGFzdEksIGkpLCAiYXNjaWkiKTsgLy8gV3JpdGUgZGlyZWN0IGNoYXJzLgogICAgICAgICAgICAgICAgbGFzdEkgPSBpKzE7CiAgICAgICAgICAgICAgICBpbkJhc2U2NCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgeyAvLyBXZSBkZWNvZGUgYmFzZTY0LgogICAgICAgICAgICBpZiAoIWJhc2U2NENoYXJzW2J1ZltpXV0pIHsgLy8gQmFzZTY0IGVuZGVkLgogICAgICAgICAgICAgICAgaWYgKGkgPT0gbGFzdEkgJiYgYnVmW2ldID09IG1pbnVzQ2hhcikgey8vICIrLSIgLT4gIisiCiAgICAgICAgICAgICAgICAgICAgcmVzICs9ICIrIjsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGI2NHN0ciA9IGJhc2U2NEFjY3VtICsgYnVmLnNsaWNlKGxhc3RJLCBpKS50b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgIHJlcyArPSB0aGlzLmljb252LmRlY29kZShuZXcgQnVmZmVyKGI2NHN0ciwgJ2Jhc2U2NCcpLCAidXRmMTYtYmUiKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoYnVmW2ldICE9IG1pbnVzQ2hhcikgLy8gTWludXMgaXMgYWJzb3JiZWQgYWZ0ZXIgYmFzZTY0LgogICAgICAgICAgICAgICAgICAgIGktLTsKCiAgICAgICAgICAgICAgICBsYXN0SSA9IGkrMTsKICAgICAgICAgICAgICAgIGluQmFzZTY0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICBiYXNlNjRBY2N1bSA9ICcnOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICghaW5CYXNlNjQpIHsKICAgICAgICByZXMgKz0gdGhpcy5pY29udi5kZWNvZGUoYnVmLnNsaWNlKGxhc3RJKSwgImFzY2lpIik7IC8vIFdyaXRlIGRpcmVjdCBjaGFycy4KICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGI2NHN0ciA9IGJhc2U2NEFjY3VtICsgYnVmLnNsaWNlKGxhc3RJKS50b1N0cmluZygpOwoKICAgICAgICB2YXIgY2FuQmVEZWNvZGVkID0gYjY0c3RyLmxlbmd0aCAtIChiNjRzdHIubGVuZ3RoICUgOCk7IC8vIE1pbmltYWwgY2h1bms6IDIgcXVhZHMgLT4gMngzIGJ5dGVzIC0+IDMgY2hhcnMuCiAgICAgICAgYmFzZTY0QWNjdW0gPSBiNjRzdHIuc2xpY2UoY2FuQmVEZWNvZGVkKTsgLy8gVGhlIHJlc3Qgd2lsbCBiZSBkZWNvZGVkIGluIGZ1dHVyZS4KICAgICAgICBiNjRzdHIgPSBiNjRzdHIuc2xpY2UoMCwgY2FuQmVEZWNvZGVkKTsKCiAgICAgICAgcmVzICs9IHRoaXMuaWNvbnYuZGVjb2RlKG5ldyBCdWZmZXIoYjY0c3RyLCAnYmFzZTY0JyksICJ1dGYxNi1iZSIpOwogICAgfQoKICAgIHRoaXMuaW5CYXNlNjQgPSBpbkJhc2U2NDsKICAgIHRoaXMuYmFzZTY0QWNjdW0gPSBiYXNlNjRBY2N1bTsKCiAgICByZXR1cm4gcmVzOwp9CgpVdGY3RGVjb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgcmVzID0gIiI7CiAgICBpZiAodGhpcy5pbkJhc2U2NCAmJiB0aGlzLmJhc2U2NEFjY3VtLmxlbmd0aCA+IDApCiAgICAgICAgcmVzID0gdGhpcy5pY29udi5kZWNvZGUobmV3IEJ1ZmZlcih0aGlzLmJhc2U2NEFjY3VtLCAnYmFzZTY0JyksICJ1dGYxNi1iZSIpOwoKICAgIHRoaXMuaW5CYXNlNjQgPSBmYWxzZTsKICAgIHRoaXMuYmFzZTY0QWNjdW0gPSAnJzsKICAgIHJldHVybiByZXM7Cn0KCgovLyBVVEYtNy1JTUFQIGNvZGVjLgovLyBSRkMzNTAxIFNlYy4gNS4xLjMgTW9kaWZpZWQgVVRGLTcgKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM1MDEjc2VjdGlvbi01LjEuMykKLy8gRGlmZmVyZW5jZXM6Ci8vICAqIEJhc2U2NCBwYXJ0IGlzIHN0YXJ0ZWQgYnkgIiYiIGluc3RlYWQgb2YgIisiCi8vICAqIERpcmVjdCBjaGFyYWN0ZXJzIGFyZSAweDIwLTB4N0UsIGV4Y2VwdCAiJiIgKDB4MjYpCi8vICAqIEluIEJhc2U2NCwgIiwiIGlzIHVzZWQgaW5zdGVhZCBvZiAiLyIKLy8gICogQmFzZTY0IG11c3Qgbm90IGJlIHVzZWQgdG8gcmVwcmVzZW50IGRpcmVjdCBjaGFyYWN0ZXJzLgovLyAgKiBObyBpbXBsaWNpdCBzaGlmdCBiYWNrIGZyb20gQmFzZTY0IChzaG91bGQgYWx3YXlzIGVuZCB3aXRoICctJykKLy8gICogU3RyaW5nIG11c3QgZW5kIGluIG5vbi1zaGlmdGVkIHBvc2l0aW9uLgovLyAgKiAiLSYiIHdoaWxlIGluIGJhc2U2NCBpcyBub3QgYWxsb3dlZC4KCgpleHBvcnRzLnV0ZjdpbWFwID0gVXRmN0lNQVBDb2RlYzsKZnVuY3Rpb24gVXRmN0lNQVBDb2RlYyhjb2RlY09wdGlvbnMsIGljb252KSB7CiAgICB0aGlzLmljb252ID0gaWNvbnY7Cn07CgpVdGY3SU1BUENvZGVjLnByb3RvdHlwZS5lbmNvZGVyID0gVXRmN0lNQVBFbmNvZGVyOwpVdGY3SU1BUENvZGVjLnByb3RvdHlwZS5kZWNvZGVyID0gVXRmN0lNQVBEZWNvZGVyOwpVdGY3SU1BUENvZGVjLnByb3RvdHlwZS5ib21Bd2FyZSA9IHRydWU7CgoKLy8gLS0gRW5jb2RpbmcKCmZ1bmN0aW9uIFV0ZjdJTUFQRW5jb2RlcihvcHRpb25zLCBjb2RlYykgewogICAgdGhpcy5pY29udiA9IGNvZGVjLmljb252OwogICAgdGhpcy5pbkJhc2U2NCA9IGZhbHNlOwogICAgdGhpcy5iYXNlNjRBY2N1bSA9IG5ldyBCdWZmZXIoNik7CiAgICB0aGlzLmJhc2U2NEFjY3VtSWR4ID0gMDsKfQoKVXRmN0lNQVBFbmNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKHN0cikgewogICAgdmFyIGluQmFzZTY0ID0gdGhpcy5pbkJhc2U2NCwKICAgICAgICBiYXNlNjRBY2N1bSA9IHRoaXMuYmFzZTY0QWNjdW0sCiAgICAgICAgYmFzZTY0QWNjdW1JZHggPSB0aGlzLmJhc2U2NEFjY3VtSWR4LAogICAgICAgIGJ1ZiA9IG5ldyBCdWZmZXIoc3RyLmxlbmd0aCo1ICsgMTApLCBidWZJZHggPSAwOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIHVDaGFyID0gc3RyLmNoYXJDb2RlQXQoaSk7CiAgICAgICAgaWYgKDB4MjAgPD0gdUNoYXIgJiYgdUNoYXIgPD0gMHg3RSkgeyAvLyBEaXJlY3QgY2hhcmFjdGVyIG9yICcmJy4KICAgICAgICAgICAgaWYgKGluQmFzZTY0KSB7CiAgICAgICAgICAgICAgICBpZiAoYmFzZTY0QWNjdW1JZHggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgYnVmSWR4ICs9IGJ1Zi53cml0ZShiYXNlNjRBY2N1bS5zbGljZSgwLCBiYXNlNjRBY2N1bUlkeCkudG9TdHJpbmcoJ2Jhc2U2NCcpLnJlcGxhY2UoL1wvL2csICcsJykucmVwbGFjZSgvPSskLywgJycpLCBidWZJZHgpOwogICAgICAgICAgICAgICAgICAgIGJhc2U2NEFjY3VtSWR4ID0gMDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBidWZbYnVmSWR4KytdID0gbWludXNDaGFyOyAvLyBXcml0ZSAnLScsIHRoZW4gZ28gdG8gZGlyZWN0IG1vZGUuCiAgICAgICAgICAgICAgICBpbkJhc2U2NCA9IGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWluQmFzZTY0KSB7CiAgICAgICAgICAgICAgICBidWZbYnVmSWR4KytdID0gdUNoYXI7IC8vIFdyaXRlIGRpcmVjdCBjaGFyYWN0ZXIKCiAgICAgICAgICAgICAgICBpZiAodUNoYXIgPT09IGFuZENoYXIpICAvLyBBbXBlcnNhbmQgLT4gJyYtJwogICAgICAgICAgICAgICAgICAgIGJ1ZltidWZJZHgrK10gPSBtaW51c0NoYXI7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSBlbHNlIHsgLy8gTm9uLWRpcmVjdCBjaGFyYWN0ZXIKICAgICAgICAgICAgaWYgKCFpbkJhc2U2NCkgewogICAgICAgICAgICAgICAgYnVmW2J1ZklkeCsrXSA9IGFuZENoYXI7IC8vIFdyaXRlICcmJywgdGhlbiBnbyB0byBiYXNlNjQgbW9kZS4KICAgICAgICAgICAgICAgIGluQmFzZTY0ID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaW5CYXNlNjQpIHsKICAgICAgICAgICAgICAgIGJhc2U2NEFjY3VtW2Jhc2U2NEFjY3VtSWR4KytdID0gdUNoYXIgPj4gODsKICAgICAgICAgICAgICAgIGJhc2U2NEFjY3VtW2Jhc2U2NEFjY3VtSWR4KytdID0gdUNoYXIgJiAweEZGOwoKICAgICAgICAgICAgICAgIGlmIChiYXNlNjRBY2N1bUlkeCA9PSBiYXNlNjRBY2N1bS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBidWZJZHggKz0gYnVmLndyaXRlKGJhc2U2NEFjY3VtLnRvU3RyaW5nKCdiYXNlNjQnKS5yZXBsYWNlKC9cLy9nLCAnLCcpLCBidWZJZHgpOwogICAgICAgICAgICAgICAgICAgIGJhc2U2NEFjY3VtSWR4ID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICB0aGlzLmluQmFzZTY0ID0gaW5CYXNlNjQ7CiAgICB0aGlzLmJhc2U2NEFjY3VtSWR4ID0gYmFzZTY0QWNjdW1JZHg7CgogICAgcmV0dXJuIGJ1Zi5zbGljZSgwLCBidWZJZHgpOwp9CgpVdGY3SU1BUEVuY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoMTApLCBidWZJZHggPSAwOwogICAgaWYgKHRoaXMuaW5CYXNlNjQpIHsKICAgICAgICBpZiAodGhpcy5iYXNlNjRBY2N1bUlkeCA+IDApIHsKICAgICAgICAgICAgYnVmSWR4ICs9IGJ1Zi53cml0ZSh0aGlzLmJhc2U2NEFjY3VtLnNsaWNlKDAsIHRoaXMuYmFzZTY0QWNjdW1JZHgpLnRvU3RyaW5nKCdiYXNlNjQnKS5yZXBsYWNlKC9cLy9nLCAnLCcpLnJlcGxhY2UoLz0rJC8sICcnKSwgYnVmSWR4KTsKICAgICAgICAgICAgdGhpcy5iYXNlNjRBY2N1bUlkeCA9IDA7CiAgICAgICAgfQoKICAgICAgICBidWZbYnVmSWR4KytdID0gbWludXNDaGFyOyAvLyBXcml0ZSAnLScsIHRoZW4gZ28gdG8gZGlyZWN0IG1vZGUuCiAgICAgICAgdGhpcy5pbkJhc2U2NCA9IGZhbHNlOwogICAgfQoKICAgIHJldHVybiBidWYuc2xpY2UoMCwgYnVmSWR4KTsKfQoKCi8vIC0tIERlY29kaW5nCgpmdW5jdGlvbiBVdGY3SU1BUERlY29kZXIob3B0aW9ucywgY29kZWMpIHsKICAgIHRoaXMuaWNvbnYgPSBjb2RlYy5pY29udjsKICAgIHRoaXMuaW5CYXNlNjQgPSBmYWxzZTsKICAgIHRoaXMuYmFzZTY0QWNjdW0gPSAnJzsKfQoKdmFyIGJhc2U2NElNQVBDaGFycyA9IGJhc2U2NENoYXJzLnNsaWNlKCk7CmJhc2U2NElNQVBDaGFyc1snLCcuY2hhckNvZGVBdCgwKV0gPSB0cnVlOwoKVXRmN0lNQVBEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1ZikgewogICAgdmFyIHJlcyA9ICIiLCBsYXN0SSA9IDAsCiAgICAgICAgaW5CYXNlNjQgPSB0aGlzLmluQmFzZTY0LAogICAgICAgIGJhc2U2NEFjY3VtID0gdGhpcy5iYXNlNjRBY2N1bTsKCiAgICAvLyBUaGUgZGVjb2RlciBpcyBtb3JlIGludm9sdmVkIGFzIHdlIG11c3QgaGFuZGxlIGNodW5rcyBpbiBzdHJlYW0uCiAgICAvLyBJdCBpcyBmb3JnaXZpbmcsIGNsb3NlciB0byBzdGFuZGFyZCBVVEYtNyAoZm9yIGV4YW1wbGUsICctJyBpcyBvcHRpb25hbCBhdCB0aGUgZW5kKS4KCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1Zi5sZW5ndGg7IGkrKykgewogICAgICAgIGlmICghaW5CYXNlNjQpIHsgLy8gV2UncmUgaW4gZGlyZWN0IG1vZGUuCiAgICAgICAgICAgIC8vIFdyaXRlIGRpcmVjdCBjaGFycyB1bnRpbCAnJicKICAgICAgICAgICAgaWYgKGJ1ZltpXSA9PSBhbmRDaGFyKSB7CiAgICAgICAgICAgICAgICByZXMgKz0gdGhpcy5pY29udi5kZWNvZGUoYnVmLnNsaWNlKGxhc3RJLCBpKSwgImFzY2lpIik7IC8vIFdyaXRlIGRpcmVjdCBjaGFycy4KICAgICAgICAgICAgICAgIGxhc3RJID0gaSsxOwogICAgICAgICAgICAgICAgaW5CYXNlNjQgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsgLy8gV2UgZGVjb2RlIGJhc2U2NC4KICAgICAgICAgICAgaWYgKCFiYXNlNjRJTUFQQ2hhcnNbYnVmW2ldXSkgeyAvLyBCYXNlNjQgZW5kZWQuCiAgICAgICAgICAgICAgICBpZiAoaSA9PSBsYXN0SSAmJiBidWZbaV0gPT0gbWludXNDaGFyKSB7IC8vICImLSIgLT4gIiYiCiAgICAgICAgICAgICAgICAgICAgcmVzICs9ICImIjsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGI2NHN0ciA9IGJhc2U2NEFjY3VtICsgYnVmLnNsaWNlKGxhc3RJLCBpKS50b1N0cmluZygpLnJlcGxhY2UoLywvZywgJy8nKTsKICAgICAgICAgICAgICAgICAgICByZXMgKz0gdGhpcy5pY29udi5kZWNvZGUobmV3IEJ1ZmZlcihiNjRzdHIsICdiYXNlNjQnKSwgInV0ZjE2LWJlIik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGJ1ZltpXSAhPSBtaW51c0NoYXIpIC8vIE1pbnVzIG1heSBiZSBhYnNvcmJlZCBhZnRlciBiYXNlNjQuCiAgICAgICAgICAgICAgICAgICAgaS0tOwoKICAgICAgICAgICAgICAgIGxhc3RJID0gaSsxOwogICAgICAgICAgICAgICAgaW5CYXNlNjQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGJhc2U2NEFjY3VtID0gJyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYgKCFpbkJhc2U2NCkgewogICAgICAgIHJlcyArPSB0aGlzLmljb252LmRlY29kZShidWYuc2xpY2UobGFzdEkpLCAiYXNjaWkiKTsgLy8gV3JpdGUgZGlyZWN0IGNoYXJzLgogICAgfSBlbHNlIHsKICAgICAgICB2YXIgYjY0c3RyID0gYmFzZTY0QWNjdW0gKyBidWYuc2xpY2UobGFzdEkpLnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnLycpOwoKICAgICAgICB2YXIgY2FuQmVEZWNvZGVkID0gYjY0c3RyLmxlbmd0aCAtIChiNjRzdHIubGVuZ3RoICUgOCk7IC8vIE1pbmltYWwgY2h1bms6IDIgcXVhZHMgLT4gMngzIGJ5dGVzIC0+IDMgY2hhcnMuCiAgICAgICAgYmFzZTY0QWNjdW0gPSBiNjRzdHIuc2xpY2UoY2FuQmVEZWNvZGVkKTsgLy8gVGhlIHJlc3Qgd2lsbCBiZSBkZWNvZGVkIGluIGZ1dHVyZS4KICAgICAgICBiNjRzdHIgPSBiNjRzdHIuc2xpY2UoMCwgY2FuQmVEZWNvZGVkKTsKCiAgICAgICAgcmVzICs9IHRoaXMuaWNvbnYuZGVjb2RlKG5ldyBCdWZmZXIoYjY0c3RyLCAnYmFzZTY0JyksICJ1dGYxNi1iZSIpOwogICAgfQoKICAgIHRoaXMuaW5CYXNlNjQgPSBpbkJhc2U2NDsKICAgIHRoaXMuYmFzZTY0QWNjdW0gPSBiYXNlNjRBY2N1bTsKCiAgICByZXR1cm4gcmVzOwp9CgpVdGY3SU1BUERlY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkgewogICAgdmFyIHJlcyA9ICIiOwogICAgaWYgKHRoaXMuaW5CYXNlNjQgJiYgdGhpcy5iYXNlNjRBY2N1bS5sZW5ndGggPiAwKQogICAgICAgIHJlcyA9IHRoaXMuaWNvbnYuZGVjb2RlKG5ldyBCdWZmZXIodGhpcy5iYXNlNjRBY2N1bSwgJ2Jhc2U2NCcpLCAidXRmMTYtYmUiKTsKCiAgICB0aGlzLmluQmFzZTY0ID0gZmFsc2U7CiAgICB0aGlzLmJhc2U2NEFjY3VtID0gJyc7CiAgICByZXR1cm4gcmVzOwp9CgoKCgovKioqLyB9KSwKLyogMTc1ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCnZhciBCdWZmZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpLkJ1ZmZlcjsKCi8vIFNpbmdsZS1ieXRlIGNvZGVjLiBOZWVkcyBhICdjaGFycycgc3RyaW5nIHBhcmFtZXRlciB0aGF0IGNvbnRhaW5zIDI1NiBvciAxMjggY2hhcnMgdGhhdAovLyBjb3JyZXNwb25kIHRvIGVuY29kZWQgYnl0ZXMgKGlmIDEyOCAtIHRoZW4gbG93ZXIgaGFsZiBpcyBBU0NJSSkuIAoKZXhwb3J0cy5fc2JjcyA9IFNCQ1NDb2RlYzsKZnVuY3Rpb24gU0JDU0NvZGVjKGNvZGVjT3B0aW9ucywgaWNvbnYpIHsKICAgIGlmICghY29kZWNPcHRpb25zKQogICAgICAgIHRocm93IG5ldyBFcnJvcigiU0JDUyBjb2RlYyBpcyBjYWxsZWQgd2l0aG91dCB0aGUgZGF0YS4iKQogICAgCiAgICAvLyBQcmVwYXJlIGNoYXIgYnVmZmVyIGZvciBkZWNvZGluZy4KICAgIGlmICghY29kZWNPcHRpb25zLmNoYXJzIHx8IChjb2RlY09wdGlvbnMuY2hhcnMubGVuZ3RoICE9PSAxMjggJiYgY29kZWNPcHRpb25zLmNoYXJzLmxlbmd0aCAhPT0gMjU2KSkKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkVuY29kaW5nICciK2NvZGVjT3B0aW9ucy50eXBlKyInIGhhcyBpbmNvcnJlY3QgJ2NoYXJzJyAobXVzdCBiZSBvZiBsZW4gMTI4IG9yIDI1NikiKTsKICAgIAogICAgaWYgKGNvZGVjT3B0aW9ucy5jaGFycy5sZW5ndGggPT09IDEyOCkgewogICAgICAgIHZhciBhc2NpaVN0cmluZyA9ICIiOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTI4OyBpKyspCiAgICAgICAgICAgIGFzY2lpU3RyaW5nICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoaSk7CiAgICAgICAgY29kZWNPcHRpb25zLmNoYXJzID0gYXNjaWlTdHJpbmcgKyBjb2RlY09wdGlvbnMuY2hhcnM7CiAgICB9CgogICAgdGhpcy5kZWNvZGVCdWYgPSBuZXcgQnVmZmVyKGNvZGVjT3B0aW9ucy5jaGFycywgJ3VjczInKTsKICAgIAogICAgLy8gRW5jb2RpbmcgYnVmZmVyLgogICAgdmFyIGVuY29kZUJ1ZiA9IG5ldyBCdWZmZXIoNjU1MzYpOwogICAgZW5jb2RlQnVmLmZpbGwoaWNvbnYuZGVmYXVsdENoYXJTaW5nbGVCeXRlLmNoYXJDb2RlQXQoMCkpOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29kZWNPcHRpb25zLmNoYXJzLmxlbmd0aDsgaSsrKQogICAgICAgIGVuY29kZUJ1Zltjb2RlY09wdGlvbnMuY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwoKICAgIHRoaXMuZW5jb2RlQnVmID0gZW5jb2RlQnVmOwp9CgpTQkNTQ29kZWMucHJvdG90eXBlLmVuY29kZXIgPSBTQkNTRW5jb2RlcjsKU0JDU0NvZGVjLnByb3RvdHlwZS5kZWNvZGVyID0gU0JDU0RlY29kZXI7CgoKZnVuY3Rpb24gU0JDU0VuY29kZXIob3B0aW9ucywgY29kZWMpIHsKICAgIHRoaXMuZW5jb2RlQnVmID0gY29kZWMuZW5jb2RlQnVmOwp9CgpTQkNTRW5jb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHIpIHsKICAgIHZhciBidWYgPSBuZXcgQnVmZmVyKHN0ci5sZW5ndGgpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspCiAgICAgICAgYnVmW2ldID0gdGhpcy5lbmNvZGVCdWZbc3RyLmNoYXJDb2RlQXQoaSldOwogICAgCiAgICByZXR1cm4gYnVmOwp9CgpTQkNTRW5jb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7Cn0KCgpmdW5jdGlvbiBTQkNTRGVjb2RlcihvcHRpb25zLCBjb2RlYykgewogICAgdGhpcy5kZWNvZGVCdWYgPSBjb2RlYy5kZWNvZGVCdWY7Cn0KClNCQ1NEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1ZikgewogICAgLy8gU3RyaW5ncyBhcmUgaW1tdXRhYmxlIGluIEpTIC0+IHdlIHVzZSB1Y3MyIGJ1ZmZlciB0byBzcGVlZCB1cCBjb21wdXRhdGlvbnMuCiAgICB2YXIgZGVjb2RlQnVmID0gdGhpcy5kZWNvZGVCdWY7CiAgICB2YXIgbmV3QnVmID0gbmV3IEJ1ZmZlcihidWYubGVuZ3RoKjIpOwogICAgdmFyIGlkeDEgPSAwLCBpZHgyID0gMDsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVmLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWR4MSA9IGJ1ZltpXSoyOyBpZHgyID0gaSoyOwogICAgICAgIG5ld0J1ZltpZHgyXSA9IGRlY29kZUJ1ZltpZHgxXTsKICAgICAgICBuZXdCdWZbaWR4MisxXSA9IGRlY29kZUJ1ZltpZHgxKzFdOwogICAgfQogICAgcmV0dXJuIG5ld0J1Zi50b1N0cmluZygndWNzMicpOwp9CgpTQkNTRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7Cn0KCgovKioqLyB9KSwKLyogMTc2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgovLyBNYW51YWxseSBhZGRlZCBkYXRhIHRvIGJlIHVzZWQgYnkgc2JjcyBjb2RlYyBpbiBhZGRpdGlvbiB0byBnZW5lcmF0ZWQgb25lLgoKbW9kdWxlLmV4cG9ydHMgPSB7CiAgICAvLyBOb3Qgc3VwcG9ydGVkIGJ5IGljb252LCBub3Qgc3VyZSB3aHkuCiAgICAiMTAwMjkiOiAibWFjY2VudGV1cm8iLAogICAgIm1hY2NlbnRldXJvIjogewogICAgICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICAgICAiY2hhcnMiOiAiw4TEgMSBw4nEhMOWw5zDocSFxIzDpMSNxIbEh8OpxbnFusSOw63Ej8SSxJPElsOzxJfDtMO2w7XDusSaxJvDvOKAoMKwxJjCo8Kn4oCiwrbDn8KuwqnihKLEmcKo4omgxKPErsSvxKriiaTiiaXEq8S24oiC4oiRxYLEu8S8xL3EvsS5xLrFhcWGxYPCrOKImsWExYfiiIbCq8K74oCmwqDFiMWQw5XFkcWM4oCT4oCU4oCc4oCd4oCY4oCZw7fil4rFjcWUxZXFmOKAueKAusWZxZbFl8Wg4oCa4oCexaHFmsWbw4HFpMWlw43FvcW+xarDk8OUxavFrsOaxa/FsMWxxbLFs8Odw73Et8W7xYHFvMSiy4ciCiAgICB9LAoKICAgICI4MDgiOiAiY3A4MDgiLAogICAgImlibTgwOCI6ICJjcDgwOCIsCiAgICAiY3A4MDgiOiB7CiAgICAgICAgInR5cGUiOiAiX3NiY3MiLAogICAgICAgICJjaGFycyI6ICLQkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv0LDQsdCy0LPQtNC10LbQt9C40LnQutC70LzQvdC+0L/ilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDRgNGB0YLRg9GE0YXRhtGH0YjRidGK0YvRjNGN0Y7Rj9CB0ZHQhNGU0IfRl9CO0Z7CsOKImcK34oia4oSW4oKs4pagwqAiCiAgICB9LAoKICAgIC8vIEFsaWFzZXMgb2YgZ2VuZXJhdGVkIGVuY29kaW5ncy4KICAgICJhc2NpaThiaXQiOiAiYXNjaWkiLAogICAgInVzYXNjaWkiOiAiYXNjaWkiLAogICAgImFuc2l4MzQiOiAiYXNjaWkiLAogICAgImFuc2l4MzQxOTY4IjogImFzY2lpIiwKICAgICJhbnNpeDM0MTk4NiI6ICJhc2NpaSIsCiAgICAiY3Nhc2NpaSI6ICJhc2NpaSIsCiAgICAiY3AzNjciOiAiYXNjaWkiLAogICAgImlibTM2NyI6ICJhc2NpaSIsCiAgICAiaXNvaXI2IjogImFzY2lpIiwKICAgICJpc282NDZ1cyI6ICJhc2NpaSIsCiAgICAiaXNvNjQ2aXJ2IjogImFzY2lpIiwKICAgICJ1cyI6ICJhc2NpaSIsCgogICAgImxhdGluMSI6ICJpc284ODU5MSIsCiAgICAibGF0aW4yIjogImlzbzg4NTkyIiwKICAgICJsYXRpbjMiOiAiaXNvODg1OTMiLAogICAgImxhdGluNCI6ICJpc284ODU5NCIsCiAgICAibGF0aW41IjogImlzbzg4NTk5IiwKICAgICJsYXRpbjYiOiAiaXNvODg1OTEwIiwKICAgICJsYXRpbjciOiAiaXNvODg1OTEzIiwKICAgICJsYXRpbjgiOiAiaXNvODg1OTE0IiwKICAgICJsYXRpbjkiOiAiaXNvODg1OTE1IiwKICAgICJsYXRpbjEwIjogImlzbzg4NTkxNiIsCgogICAgImNzaXNvbGF0aW4xIjogImlzbzg4NTkxIiwKICAgICJjc2lzb2xhdGluMiI6ICJpc284ODU5MiIsCiAgICAiY3Npc29sYXRpbjMiOiAiaXNvODg1OTMiLAogICAgImNzaXNvbGF0aW40IjogImlzbzg4NTk0IiwKICAgICJjc2lzb2xhdGluY3lyaWxsaWMiOiAiaXNvODg1OTUiLAogICAgImNzaXNvbGF0aW5hcmFiaWMiOiAiaXNvODg1OTYiLAogICAgImNzaXNvbGF0aW5ncmVlayIgOiAiaXNvODg1OTciLAogICAgImNzaXNvbGF0aW5oZWJyZXciOiAiaXNvODg1OTgiLAogICAgImNzaXNvbGF0aW41IjogImlzbzg4NTk5IiwKICAgICJjc2lzb2xhdGluNiI6ICJpc284ODU5MTAiLAoKICAgICJsMSI6ICJpc284ODU5MSIsCiAgICAibDIiOiAiaXNvODg1OTIiLAogICAgImwzIjogImlzbzg4NTkzIiwKICAgICJsNCI6ICJpc284ODU5NCIsCiAgICAibDUiOiAiaXNvODg1OTkiLAogICAgImw2IjogImlzbzg4NTkxMCIsCiAgICAibDciOiAiaXNvODg1OTEzIiwKICAgICJsOCI6ICJpc284ODU5MTQiLAogICAgImw5IjogImlzbzg4NTkxNSIsCiAgICAibDEwIjogImlzbzg4NTkxNiIsCgogICAgImlzb2lyMTQiOiAiaXNvNjQ2anAiLAogICAgImlzb2lyNTciOiAiaXNvNjQ2Y24iLAogICAgImlzb2lyMTAwIjogImlzbzg4NTkxIiwKICAgICJpc29pcjEwMSI6ICJpc284ODU5MiIsCiAgICAiaXNvaXIxMDkiOiAiaXNvODg1OTMiLAogICAgImlzb2lyMTEwIjogImlzbzg4NTk0IiwKICAgICJpc29pcjE0NCI6ICJpc284ODU5NSIsCiAgICAiaXNvaXIxMjciOiAiaXNvODg1OTYiLAogICAgImlzb2lyMTI2IjogImlzbzg4NTk3IiwKICAgICJpc29pcjEzOCI6ICJpc284ODU5OCIsCiAgICAiaXNvaXIxNDgiOiAiaXNvODg1OTkiLAogICAgImlzb2lyMTU3IjogImlzbzg4NTkxMCIsCiAgICAiaXNvaXIxNjYiOiAidGlzNjIwIiwKICAgICJpc29pcjE3OSI6ICJpc284ODU5MTMiLAogICAgImlzb2lyMTk5IjogImlzbzg4NTkxNCIsCiAgICAiaXNvaXIyMDMiOiAiaXNvODg1OTE1IiwKICAgICJpc29pcjIyNiI6ICJpc284ODU5MTYiLAoKICAgICJjcDgxOSI6ICJpc284ODU5MSIsCiAgICAiaWJtODE5IjogImlzbzg4NTkxIiwKCiAgICAiY3lyaWxsaWMiOiAiaXNvODg1OTUiLAoKICAgICJhcmFiaWMiOiAiaXNvODg1OTYiLAogICAgImFyYWJpYzgiOiAiaXNvODg1OTYiLAogICAgImVjbWExMTQiOiAiaXNvODg1OTYiLAogICAgImFzbW83MDgiOiAiaXNvODg1OTYiLAoKICAgICJncmVlayIgOiAiaXNvODg1OTciLAogICAgImdyZWVrOCIgOiAiaXNvODg1OTciLAogICAgImVjbWExMTgiIDogImlzbzg4NTk3IiwKICAgICJlbG90OTI4IiA6ICJpc284ODU5NyIsCgogICAgImhlYnJldyI6ICJpc284ODU5OCIsCiAgICAiaGVicmV3OCI6ICJpc284ODU5OCIsCgogICAgInR1cmtpc2giOiAiaXNvODg1OTkiLAogICAgInR1cmtpc2g4IjogImlzbzg4NTk5IiwKCiAgICAidGhhaSI6ICJpc284ODU5MTEiLAogICAgInRoYWk4IjogImlzbzg4NTkxMSIsCgogICAgImNlbHRpYyI6ICJpc284ODU5MTQiLAogICAgImNlbHRpYzgiOiAiaXNvODg1OTE0IiwKICAgICJpc29jZWx0aWMiOiAiaXNvODg1OTE0IiwKCiAgICAidGlzNjIwMCI6ICJ0aXM2MjAiLAogICAgInRpczYyMDI1MjkxIjogInRpczYyMCIsCiAgICAidGlzNjIwMjUzMzAiOiAidGlzNjIwIiwKCiAgICAiMTAwMDAiOiAibWFjcm9tYW4iLAogICAgIjEwMDA2IjogIm1hY2dyZWVrIiwKICAgICIxMDAwNyI6ICJtYWNjeXJpbGxpYyIsCiAgICAiMTAwNzkiOiAibWFjaWNlbGFuZCIsCiAgICAiMTAwODEiOiAibWFjdHVya2lzaCIsCgogICAgImNzcGM4Y29kZXBhZ2U0MzciOiAiY3A0MzciLAogICAgImNzcGM3NzViYWx0aWMiOiAiY3A3NzUiLAogICAgImNzcGM4NTBtdWx0aWxpbmd1YWwiOiAiY3A4NTAiLAogICAgImNzcGNwODUyIjogImNwODUyIiwKICAgICJjc3BjODYybGF0aW5oZWJyZXciOiAiY3A4NjIiLAogICAgImNwZ3IiOiAiY3A4NjkiLAoKICAgICJtc2VlIjogImNwMTI1MCIsCiAgICAibXNjeXJsIjogImNwMTI1MSIsCiAgICAibXNhbnNpIjogImNwMTI1MiIsCiAgICAibXNncmVlayI6ICJjcDEyNTMiLAogICAgIm1zdHVyayI6ICJjcDEyNTQiLAogICAgIm1zaGViciI6ICJjcDEyNTUiLAogICAgIm1zYXJhYiI6ICJjcDEyNTYiLAogICAgIndpbmJhbHRyaW0iOiAiY3AxMjU3IiwKCiAgICAiY3AyMDg2NiI6ICJrb2k4ciIsCiAgICAiMjA4NjYiOiAia29pOHIiLAogICAgImlibTg3OCI6ICJrb2k4ciIsCiAgICAiY3Nrb2k4ciI6ICJrb2k4ciIsCgogICAgImNwMjE4NjYiOiAia29pOHUiLAogICAgIjIxODY2IjogImtvaTh1IiwKICAgICJpYm0xMTY4IjogImtvaTh1IiwKCiAgICAic3RyazEwNDgyMDAyIjogInJrMTA0OCIsCgogICAgInRjdm41NzEyIjogInRjdm4iLAogICAgInRjdm41NzEyMSI6ICJ0Y3ZuIiwKCiAgICAiZ2IxOTg4ODAiOiAiaXNvNjQ2Y24iLAogICAgImNuIjogImlzbzY0NmNuIiwKCiAgICAiY3Npc28xNGppc2M2MjIwcm8iOiAiaXNvNjQ2anAiLAogICAgImppc2M2MjIwMTk2OXJvIjogImlzbzY0NmpwIiwKICAgICJqcCI6ICJpc282NDZqcCIsCgogICAgImNzaHByb21hbjgiOiAiaHByb21hbjgiLAogICAgInI4IjogImhwcm9tYW44IiwKICAgICJyb21hbjgiOiAiaHByb21hbjgiLAogICAgInhyb21hbjgiOiAiaHByb21hbjgiLAogICAgImlibTEwNTEiOiAiaHByb21hbjgiLAoKICAgICJtYWMiOiAibWFjaW50b3NoIiwKICAgICJjc21hY2ludG9zaCI6ICJtYWNpbnRvc2giLAp9OwoKCgovKioqLyB9KSwKLyogMTc3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgovLyBHZW5lcmF0ZWQgZGF0YSBmb3Igc2JjcyBjb2RlYy4gRG9uJ3QgZWRpdCBtYW51YWxseS4gUmVnZW5lcmF0ZSB1c2luZyBnZW5lcmF0aW9uL2dlbi1zYmNzLmpzIHNjcmlwdC4KbW9kdWxlLmV4cG9ydHMgPSB7CiAgIjQzNyI6ICJjcDQzNyIsCiAgIjczNyI6ICJjcDczNyIsCiAgIjc3NSI6ICJjcDc3NSIsCiAgIjg1MCI6ICJjcDg1MCIsCiAgIjg1MiI6ICJjcDg1MiIsCiAgIjg1NSI6ICJjcDg1NSIsCiAgIjg1NiI6ICJjcDg1NiIsCiAgIjg1NyI6ICJjcDg1NyIsCiAgIjg1OCI6ICJjcDg1OCIsCiAgIjg2MCI6ICJjcDg2MCIsCiAgIjg2MSI6ICJjcDg2MSIsCiAgIjg2MiI6ICJjcDg2MiIsCiAgIjg2MyI6ICJjcDg2MyIsCiAgIjg2NCI6ICJjcDg2NCIsCiAgIjg2NSI6ICJjcDg2NSIsCiAgIjg2NiI6ICJjcDg2NiIsCiAgIjg2OSI6ICJjcDg2OSIsCiAgIjg3NCI6ICJ3aW5kb3dzODc0IiwKICAiOTIyIjogImNwOTIyIiwKICAiMTA0NiI6ICJjcDEwNDYiLAogICIxMTI0IjogImNwMTEyNCIsCiAgIjExMjUiOiAiY3AxMTI1IiwKICAiMTEyOSI6ICJjcDExMjkiLAogICIxMTMzIjogImNwMTEzMyIsCiAgIjExNjEiOiAiY3AxMTYxIiwKICAiMTE2MiI6ICJjcDExNjIiLAogICIxMTYzIjogImNwMTE2MyIsCiAgIjEyNTAiOiAid2luZG93czEyNTAiLAogICIxMjUxIjogIndpbmRvd3MxMjUxIiwKICAiMTI1MiI6ICJ3aW5kb3dzMTI1MiIsCiAgIjEyNTMiOiAid2luZG93czEyNTMiLAogICIxMjU0IjogIndpbmRvd3MxMjU0IiwKICAiMTI1NSI6ICJ3aW5kb3dzMTI1NSIsCiAgIjEyNTYiOiAid2luZG93czEyNTYiLAogICIxMjU3IjogIndpbmRvd3MxMjU3IiwKICAiMTI1OCI6ICJ3aW5kb3dzMTI1OCIsCiAgIjI4NTkxIjogImlzbzg4NTkxIiwKICAiMjg1OTIiOiAiaXNvODg1OTIiLAogICIyODU5MyI6ICJpc284ODU5MyIsCiAgIjI4NTk0IjogImlzbzg4NTk0IiwKICAiMjg1OTUiOiAiaXNvODg1OTUiLAogICIyODU5NiI6ICJpc284ODU5NiIsCiAgIjI4NTk3IjogImlzbzg4NTk3IiwKICAiMjg1OTgiOiAiaXNvODg1OTgiLAogICIyODU5OSI6ICJpc284ODU5OSIsCiAgIjI4NjAwIjogImlzbzg4NTkxMCIsCiAgIjI4NjAxIjogImlzbzg4NTkxMSIsCiAgIjI4NjAzIjogImlzbzg4NTkxMyIsCiAgIjI4NjA0IjogImlzbzg4NTkxNCIsCiAgIjI4NjA1IjogImlzbzg4NTkxNSIsCiAgIjI4NjA2IjogImlzbzg4NTkxNiIsCiAgIndpbmRvd3M4NzQiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAi4oKs77+977+977+977+94oCm77+977+977+977+977+977+977+977+977+977+977+94oCY4oCZ4oCc4oCd4oCi4oCT4oCU77+977+977+977+977+977+977+977+9wqDguIHguILguIPguITguIXguIbguIfguIjguInguIrguIvguIzguI3guI7guI/guJDguJHguJLguJPguJTguJXguJbguJfguJjguJnguJrguJvguJzguJ3guJ7guJ/guKDguKHguKLguKPguKTguKXguKbguKfguKjguKnguKrguKvguKzguK3guK7guK/guLDguLHguLLguLPguLTguLXguLbguLfguLjguLnguLrvv73vv73vv73vv73guL/guYDguYHguYLguYPguYTguYXguYbguYfguYjguYnguYrguYvguYzguY3guY7guY/guZDguZHguZLguZPguZTguZXguZbguZfguZjguZnguZrguZvvv73vv73vv73vv70iCiAgfSwKICAid2luODc0IjogIndpbmRvd3M4NzQiLAogICJjcDg3NCI6ICJ3aW5kb3dzODc0IiwKICAid2luZG93czEyNTAiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAi4oKs77+94oCa77+94oCe4oCm4oCg4oCh77+94oCwxaDigLnFmsWkxb3Fue+/veKAmOKAmeKAnOKAneKAouKAk+KAlO+/veKEosWh4oC6xZvFpcW+xbrCoMuHy5jFgcKkxITCpsKnwqjCqcWewqvCrMKtwq7Fu8KwwrHLm8WCwrTCtcK2wrfCuMSFxZ/Cu8S9y53EvsW8xZTDgcOCxILDhMS5xIbDh8SMw4nEmMOLxJrDjcOOxI7EkMWDxYfDk8OUxZDDlsOXxZjFrsOaxbDDnMOdxaLDn8WVw6HDosSDw6TEusSHw6fEjcOpxJnDq8Sbw63DrsSPxJHFhMWIw7PDtMWRw7bDt8WZxa/DusWxw7zDvcWjy5kiCiAgfSwKICAid2luMTI1MCI6ICJ3aW5kb3dzMTI1MCIsCiAgImNwMTI1MCI6ICJ3aW5kb3dzMTI1MCIsCiAgIndpbmRvd3MxMjUxIjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogItCC0IPigJrRk+KAnuKApuKAoOKAoeKCrOKAsNCJ4oC50IrQjNCL0I/RkuKAmOKAmeKAnOKAneKAouKAk+KAlO+/veKEotGZ4oC60ZrRnNGb0Z/CoNCO0Z7QiMKk0pDCpsKn0IHCqdCEwqvCrMKtwq7Qh8KwwrHQhtGW0pHCtcK2wrfRkeKEltGUwrvRmNCF0ZXRl9CQ0JHQktCT0JTQldCW0JfQmNCZ0JrQm9Cc0J3QntCf0KDQodCi0KPQpNCl0KbQp9Co0KnQqtCr0KzQrdCu0K/QsNCx0LLQs9C00LXQttC30LjQudC60LvQvNC90L7Qv9GA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjtGPIgogIH0sCiAgIndpbjEyNTEiOiAid2luZG93czEyNTEiLAogICJjcDEyNTEiOiAid2luZG93czEyNTEiLAogICJ3aW5kb3dzMTI1MiI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLigqzvv73igJrGkuKAnuKApuKAoOKAocuG4oCwxaDigLnFku+/vcW977+977+94oCY4oCZ4oCc4oCd4oCi4oCT4oCUy5zihKLFoeKAusWT77+9xb7FuMKgwqHCosKjwqTCpcKmwqfCqMKpwqrCq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnCusK7wrzCvcK+wr/DgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8OQw5HDksOTw5TDlcOWw5fDmMOZw5rDm8Ocw53DnsOfw6DDocOiw6PDpMOlw6bDp8Oow6nDqsOrw6zDrcOuw6/DsMOxw7LDs8O0w7XDtsO3w7jDucO6w7vDvMO9w77DvyIKICB9LAogICJ3aW4xMjUyIjogIndpbmRvd3MxMjUyIiwKICAiY3AxMjUyIjogIndpbmRvd3MxMjUyIiwKICAid2luZG93czEyNTMiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAi4oKs77+94oCaxpLigJ7igKbigKDigKHvv73igLDvv73igLnvv73vv73vv73vv73vv73igJjigJnigJzigJ3igKLigJPigJTvv73ihKLvv73igLrvv73vv73vv73vv73CoM6FzobCo8KkwqXCpsKnwqjCqe+/vcKrwqzCrcKu4oCVwrDCscKywrPOhMK1wrbCt86IzonOisK7zozCvc6Ozo/OkM6RzpLOk86UzpXOls6XzpjOmc6azpvOnM6dzp7On86gzqHvv73Oo86kzqXOps6nzqjOqc6qzqvOrM6tzq7Or86wzrHOss6zzrTOtc62zrfOuM65zrrOu868zr3Ovs6/z4DPgc+Cz4PPhM+Fz4bPh8+Iz4nPis+Lz4zPjc+O77+9IgogIH0sCiAgIndpbjEyNTMiOiAid2luZG93czEyNTMiLAogICJjcDEyNTMiOiAid2luZG93czEyNTMiLAogICJ3aW5kb3dzMTI1NCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLigqzvv73igJrGkuKAnuKApuKAoOKAocuG4oCwxaDigLnFku+/ve+/ve+/ve+/veKAmOKAmeKAnOKAneKAouKAk+KAlMuc4oSixaHigLrFk++/ve+/vcW4wqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucK6wrvCvMK9wr7Cv8OAw4HDgsODw4TDhcOGw4fDiMOJw4rDi8OMw43DjsOPxJ7DkcOSw5PDlMOVw5bDl8OYw5nDmsObw5zEsMWew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Sfw7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8xLHFn8O/IgogIH0sCiAgIndpbjEyNTQiOiAid2luZG93czEyNTQiLAogICJjcDEyNTQiOiAid2luZG93czEyNTQiLAogICJ3aW5kb3dzMTI1NSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLigqzvv73igJrGkuKAnuKApuKAoOKAocuG4oCw77+94oC577+977+977+977+977+94oCY4oCZ4oCc4oCd4oCi4oCT4oCUy5zihKLvv73igLrvv73vv73vv73vv73CoMKhwqLCo+KCqsKlwqbCp8KowqnDl8KrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucO3wrvCvMK9wr7Cv9aw1rHWstaz1rTWtda21rfWuNa51rrWu9a81r3Wvta/14DXgdeC14PXsNex17LXs9e077+977+977+977+977+977+977+915DXkdeS15PXlNeV15bXl9eY15nXmteb15zXndee15/XoNeh16LXo9ek16XXpten16jXqdeq77+977+94oCO4oCP77+9IgogIH0sCiAgIndpbjEyNTUiOiAid2luZG93czEyNTUiLAogICJjcDEyNTUiOiAid2luZG93czEyNTUiLAogICJ3aW5kb3dzMTI1NiI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLigqzZvuKAmsaS4oCe4oCm4oCg4oChy4bigLDZueKAucWS2obamNqI2q/igJjigJnigJzigJ3igKLigJPigJTaqeKEotqR4oC6xZPigIzigI3ausKg2IzCosKjwqTCpcKmwqfCqMKp2r7Cq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnYm8K7wrzCvcK+2J/bgdih2KLYo9ik2KXYptin2KjYqdiq2KvYrNit2K7Yr9iw2LHYstiz2LTYtdi2w5fYt9i42LnYutmA2YHZgtmDw6DZhMOi2YXZhtmH2YjDp8Oow6nDqsOr2YnZisOuw6/Zi9mM2Y3ZjsO02Y/ZkMO32ZHDudmSw7vDvOKAjuKAj9uSIgogIH0sCiAgIndpbjEyNTYiOiAid2luZG93czEyNTYiLAogICJjcDEyNTYiOiAid2luZG93czEyNTYiLAogICJ3aW5kb3dzMTI1NyI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLigqzvv73igJrvv73igJ7igKbigKDigKHvv73igLDvv73igLnvv73CqMuHwrjvv73igJjigJnigJzigJ3igKLigJPigJTvv73ihKLvv73igLrvv73Cr8ub77+9wqDvv73CosKjwqTvv73CpsKnw5jCqcWWwqvCrMKtwq7DhsKwwrHCssKzwrTCtcK2wrfDuMK5xZfCu8K8wr3CvsOmxITErsSAxIbDhMOFxJjEksSMw4nFucSWxKLEtsSqxLvFoMWDxYXDk8WMw5XDlsOXxbLFgcWaxarDnMW7xb3Dn8SFxK/EgcSHw6TDpcSZxJPEjcOpxbrEl8SjxLfEq8S8xaHFhMWGw7PFjcO1w7bDt8WzxYLFm8Wrw7zFvMW+y5kiCiAgfSwKICAid2luMTI1NyI6ICJ3aW5kb3dzMTI1NyIsCiAgImNwMTI1NyI6ICJ3aW5kb3dzMTI1NyIsCiAgIndpbmRvd3MxMjU4IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIuKCrO+/veKAmsaS4oCe4oCm4oCg4oChy4bigLDvv73igLnFku+/ve+/ve+/ve+/veKAmOKAmeKAnOKAneKAouKAk+KAlMuc4oSi77+94oC6xZPvv73vv73FuMKgwqHCosKjwqTCpcKmwqfCqMKpwqrCq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnCusK7wrzCvcK+wr/DgMOBw4LEgsOEw4XDhsOHw4jDicOKw4vMgMONw47Dj8SQw5HMicOTw5TGoMOWw5fDmMOZw5rDm8Ocxq/Mg8Ofw6DDocOixIPDpMOlw6bDp8Oow6nDqsOrzIHDrcOuw6/EkcOxzKPDs8O0xqHDtsO3w7jDucO6w7vDvMaw4oKrw78iCiAgfSwKICAid2luMTI1OCI6ICJ3aW5kb3dzMTI1OCIsCiAgImNwMTI1OCI6ICJ3aW5kb3dzMTI1OCIsCiAgImlzbzg4NTkxIjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoMKhwqLCo8KkwqXCpsKnwqjCqcKqwqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlsOXw5jDmcOaw5vDnMOdw57Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w78iCiAgfSwKICAiY3AyODU5MSI6ICJpc284ODU5MSIsCiAgImlzbzg4NTkyIjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoMSEy5jFgcKkxL3FmsKnwqjFoMWexaTFucKtxb3Fu8KwxIXLm8WCwrTEvsWby4fCuMWhxZ/FpcW6y53FvsW8xZTDgcOCxILDhMS5xIbDh8SMw4nEmMOLxJrDjcOOxI7EkMWDxYfDk8OUxZDDlsOXxZjFrsOaxbDDnMOdxaLDn8WVw6HDosSDw6TEusSHw6fEjcOpxJnDq8Sbw63DrsSPxJHFhMWIw7PDtMWRw7bDt8WZxa/DusWxw7zDvcWjy5kiCiAgfSwKICAiY3AyODU5MiI6ICJpc284ODU5MiIsCiAgImlzbzg4NTkzIjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoMSmy5jCo8Kk77+9xKTCp8KoxLDFnsSexLTCre+/vcW7wrDEp8KywrPCtMK1xKXCt8K4xLHFn8SfxLXCve+/vcW8w4DDgcOC77+9w4TEisSIw4fDiMOJw4rDi8OMw43DjsOP77+9w5HDksOTw5TEoMOWw5fEnMOZw5rDm8OcxazFnMOfw6DDocOi77+9w6TEi8SJw6fDqMOpw6rDq8Osw63DrsOv77+9w7HDssOzw7TEocO2w7fEncO5w7rDu8O8xa3FncuZIgogIH0sCiAgImNwMjg1OTMiOiAiaXNvODg1OTMiLAogICJpc284ODU5NCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDEhMS4xZbCpMSoxLvCp8KoxaDEksSixabCrcW9wq/CsMSFy5vFl8K0xKnEvMuHwrjFocSTxKPFp8WKxb7Fi8SAw4HDgsODw4TDhcOGxK7EjMOJxJjDi8SWw43DjsSqxJDFhcWMxLbDlMOVw5bDl8OYxbLDmsObw5zFqMWqw5/EgcOhw6LDo8Okw6XDpsSvxI3DqcSZw6vEl8Otw67Eq8SRxYbFjcS3w7TDtcO2w7fDuMWzw7rDu8O8xanFq8uZIgogIH0sCiAgImNwMjg1OTQiOiAiaXNvODg1OTQiLAogICJpc284ODU5NSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDQgdCC0IPQhNCF0IbQh9CI0InQitCL0IzCrdCO0I/QkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv0LDQsdCy0LPQtNC10LbQt9C40LnQutC70LzQvdC+0L/RgNGB0YLRg9GE0YXRhtGH0YjRidGK0YvRjNGN0Y7Rj+KEltGR0ZLRk9GU0ZXRltGX0ZjRmdGa0ZvRnMKn0Z7RnyIKICB9LAogICJjcDI4NTk1IjogImlzbzg4NTk1IiwKICAiaXNvODg1OTYiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8Kg77+977+977+9wqTvv73vv73vv73vv73vv73vv73vv73YjMKt77+977+977+977+977+977+977+977+977+977+977+977+977+92Jvvv73vv73vv73Yn++/vdih2KLYo9ik2KXYptin2KjYqdiq2KvYrNit2K7Yr9iw2LHYstiz2LTYtdi22LfYuNi52Lrvv73vv73vv73vv73vv73ZgNmB2YLZg9mE2YXZhtmH2YjZidmK2YvZjNmN2Y7Zj9mQ2ZHZku+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vSIKICB9LAogICJjcDI4NTk2IjogImlzbzg4NTk2IiwKICAiaXNvODg1OTciOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8Kg4oCY4oCZwqPigqzigq/CpsKnwqjCqc26wqvCrMKt77+94oCVwrDCscKywrPOhM6FzobCt86IzonOisK7zozCvc6Ozo/OkM6RzpLOk86UzpXOls6XzpjOmc6azpvOnM6dzp7On86gzqHvv73Oo86kzqXOps6nzqjOqc6qzqvOrM6tzq7Or86wzrHOss6zzrTOtc62zrfOuM65zrrOu868zr3Ovs6/z4DPgc+Cz4PPhM+Fz4bPh8+Iz4nPis+Lz4zPjc+O77+9IgogIH0sCiAgImNwMjg1OTciOiAiaXNvODg1OTciLAogICJpc284ODU5OCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDvv73CosKjwqTCpcKmwqfCqMKpw5fCq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnDt8K7wrzCvcK+77+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+94oCX15DXkdeS15PXlNeV15bXl9eY15nXmteb15zXndee15/XoNeh16LXo9ek16XXpten16jXqdeq77+977+94oCO4oCP77+9IgogIH0sCiAgImNwMjg1OTgiOiAiaXNvODg1OTgiLAogICJpc284ODU5OSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucK6wrvCvMK9wr7Cv8OAw4HDgsODw4TDhcOGw4fDiMOJw4rDi8OMw43DjsOPxJ7DkcOSw5PDlMOVw5bDl8OYw5nDmsObw5zEsMWew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Sfw7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8xLHFn8O/IgogIH0sCiAgImNwMjg1OTkiOiAiaXNvODg1OTkiLAogICJpc284ODU5MTAiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8KgxITEksSixKrEqMS2wqfEu8SQxaDFpsW9wq3FqsWKwrDEhcSTxKPEq8SpxLfCt8S8xJHFocWnxb7igJXFq8WLxIDDgcOCw4PDhMOFw4bErsSMw4nEmMOLxJbDjcOOw4/DkMWFxYzDk8OUw5XDlsWow5jFssOaw5vDnMOdw57Dn8SBw6HDosOjw6TDpcOmxK/EjcOpxJnDq8SXw63DrsOvw7DFhsWNw7PDtMO1w7bFqcO4xbPDusO7w7zDvcO+xLgiCiAgfSwKICAiY3AyODYwMCI6ICJpc284ODU5MTAiLAogICJpc284ODU5MTEiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8Kg4LiB4LiC4LiD4LiE4LiF4LiG4LiH4LiI4LiJ4LiK4LiL4LiM4LiN4LiO4LiP4LiQ4LiR4LiS4LiT4LiU4LiV4LiW4LiX4LiY4LiZ4Lia4Lib4Lic4Lid4Lie4Lif4Lig4Lih4Lii4Lij4Lik4Lil4Lim4Lin4Lio4Lip4Liq4Lir4Lis4Lit4Liu4Liv4Liw4Lix4Liy4Liz4Li04Li14Li24Li34Li44Li54Li677+977+977+977+94Li/4LmA4LmB4LmC4LmD4LmE4LmF4LmG4LmH4LmI4LmJ4LmK4LmL4LmM4LmN4LmO4LmP4LmQ4LmR4LmS4LmT4LmU4LmV4LmW4LmX4LmY4LmZ4Lma4Lmb77+977+977+977+9IgogIH0sCiAgImNwMjg2MDEiOiAiaXNvODg1OTExIiwKICAiaXNvODg1OTEzIjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoOKAncKiwqPCpOKAnsKmwqfDmMKpxZbCq8Kswq3CrsOGwrDCscKywrPigJzCtcK2wrfDuMK5xZfCu8K8wr3CvsOmxITErsSAxIbDhMOFxJjEksSMw4nFucSWxKLEtsSqxLvFoMWDxYXDk8WMw5XDlsOXxbLFgcWaxarDnMW7xb3Dn8SFxK/EgcSHw6TDpcSZxJPEjcOpxbrEl8SjxLfEq8S8xaHFhMWGw7PFjcO1w7bDt8WzxYLFm8Wrw7zFvMW+4oCZIgogIH0sCiAgImNwMjg2MDMiOiAiaXNvODg1OTEzIiwKICAiaXNvODg1OTE0IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoOG4guG4g8KjxIrEi+G4isKn4bqAwqnhuoLhuIvhu7LCrcKuxbjhuJ7huJ/EoMSh4bmA4bmBwrbhuZbhuoHhuZfhuoPhuaDhu7PhuoThuoXhuaHDgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8W0w5HDksOTw5TDlcOW4bmqw5jDmcOaw5vDnMOdxbbDn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvxbXDscOyw7PDtMO1w7bhuavDuMO5w7rDu8O8w73Ft8O/IgogIH0sCiAgImNwMjg2MDQiOiAiaXNvODg1OTE0IiwKICAiaXNvODg1OTE1IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoMKhwqLCo+KCrMKlxaDCp8WhwqnCqsKrwqzCrcKuwq/CsMKxwrLCs8W9wrXCtsK3xb7CucK6wrvFksWTxbjCv8OAw4HDgsODw4TDhcOGw4fDiMOJw4rDi8OMw43DjsOPw5DDkcOSw5PDlMOVw5bDl8OYw5nDmsObw5zDncOew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Oww7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8w73DvsO/IgogIH0sCiAgImNwMjg2MDUiOiAiaXNvODg1OTE1IiwKICAiaXNvODg1OTE2IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoMSExIXFgeKCrOKAnsWgwqfFocKpyJjCq8W5wq3FusW7wrDCscSMxYLFveKAncK2wrfFvsSNyJnCu8WSxZPFuMW8w4DDgcOCxILDhMSGw4bDh8OIw4nDisOLw4zDjcOOw4/EkMWDw5LDk8OUxZDDlsWaxbDDmcOaw5vDnMSYyJrDn8Ogw6HDosSDw6TEh8Omw6fDqMOpw6rDq8Osw63DrsOvxJHFhMOyw7PDtMWRw7bFm8Wxw7nDusO7w7zEmcibw78iCiAgfSwKICAiY3AyODYwNiI6ICJpc284ODU5MTYiLAogICJjcDQzNyI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLDh8O8w6nDosOkw6DDpcOnw6rDq8Oow6/DrsOsw4TDhcOJw6bDhsO0w7bDssO7w7nDv8OWw5zCosKjwqXigqfGksOhw63Ds8O6w7HDkcKqwrrCv+KMkMKswr3CvMKhwqvCu+KWkeKWkuKWk+KUguKUpOKVoeKVouKVluKVleKVo+KVkeKVl+KVneKVnOKVm+KUkOKUlOKUtOKUrOKUnOKUgOKUvOKVnuKVn+KVmuKVlOKVqeKVpuKVoOKVkOKVrOKVp+KVqOKVpOKVpeKVmeKVmOKVkuKVk+KVq+KVquKUmOKUjOKWiOKWhOKWjOKWkOKWgM6xw5/Ok8+AzqPPg8K1z4TOps6YzqnOtOKIns+GzrXiiKniiaHCseKJpeKJpOKMoOKMocO34omIwrDiiJnCt+KImuKBv8Ky4pagwqAiCiAgfSwKICAiaWJtNDM3IjogImNwNDM3IiwKICAiY3NpYm00MzciOiAiY3A0MzciLAogICJjcDczNyI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLOkc6SzpPOlM6VzpbOl86YzpnOms6bzpzOnc6ezp/OoM6hzqPOpM6lzqbOp86ozqnOsc6yzrPOtM61zrbOt864zrnOus67zrzOvc6+zr/PgM+Bz4PPgs+Ez4XPhs+Hz4jilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDPic6szq3Ors+Kzq/PjM+Nz4vPjs6GzojOic6KzozOjs6PwrHiiaXiiaTOqs6rw7fiiYjCsOKImcK34oia4oG/wrLilqDCoCIKICB9LAogICJpYm03MzciOiAiY3A3MzciLAogICJjc2libTczNyI6ICJjcDczNyIsCiAgImNwNzc1IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsSGw7zDqcSBw6TEo8OlxIfFgsSTxZbFl8SrxbnDhMOFw4nDpsOGxY3DtsSiwqLFmsWbw5bDnMO4wqPDmMOXwqTEgMSqw7PFu8W8xbrigJ3CpsKpwq7CrMK9wrzFgcKrwrvilpHilpLilpPilILilKTEhMSMxJjEluKVo+KVkeKVl+KVncSuxaDilJDilJTilLTilKzilJzilIDilLzFssWq4pWa4pWU4pWp4pWm4pWg4pWQ4pWsxb3EhcSNxJnEl8SvxaHFs8Wrxb7ilJjilIzilojiloTilozilpDiloDDk8OfxYzFg8O1w5XCtcWExLbEt8S7xLzFhsSSxYXigJnCrcKx4oCcwr7CtsKnw7figJ7CsOKImcK3wrnCs8Ky4pagwqAiCiAgfSwKICAiaWJtNzc1IjogImNwNzc1IiwKICAiY3NpYm03NzUiOiAiY3A3NzUiLAogICJjcDg1MCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLDh8O8w6nDosOkw6DDpcOnw6rDq8Oow6/DrsOsw4TDhcOJw6bDhsO0w7bDssO7w7nDv8OWw5zDuMKjw5jDl8aSw6HDrcOzw7rDscORwqrCusK/wq7CrMK9wrzCocKrwrvilpHilpLilpPilILilKTDgcOCw4DCqeKVo+KVkeKVl+KVncKiwqXilJDilJTilLTilKzilJzilIDilLzDo8OD4pWa4pWU4pWp4pWm4pWg4pWQ4pWswqTDsMOQw4rDi8OIxLHDjcOOw4/ilJjilIzilojiloTCpsOM4paAw5PDn8OUw5LDtcOVwrXDvsOew5rDm8OZw73DncKvwrTCrcKx4oCXwr7CtsKnw7fCuMKwwqjCt8K5wrPCsuKWoMKgIgogIH0sCiAgImlibTg1MCI6ICJjcDg1MCIsCiAgImNzaWJtODUwIjogImNwODUwIiwKICAiY3A4NTIiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiw4fDvMOpw6LDpMWvxIfDp8WCw6vFkMWRw67FucOExIbDicS5xLrDtMO2xL3EvsWaxZvDlsOcxaTFpcWBw5fEjcOhw63Ds8O6xITEhcW9xb7EmMSZwqzFusSMxZ/Cq8K74paR4paS4paT4pSC4pSkw4HDgsSaxZ7ilaPilZHilZfilZ3Fu8W84pSQ4pSU4pS04pSs4pSc4pSA4pS8xILEg+KVmuKVlOKVqeKVpuKVoOKVkOKVrMKkxJHEkMSOw4vEj8WHw43DjsSb4pSY4pSM4paI4paExaLFruKWgMOTw5/DlMWDxYTFiMWgxaHFlMOaxZXFsMO9w53Fo8K0wq3Lncuby4fLmMKnw7fCuMKwwqjLmcWxxZjFmeKWoMKgIgogIH0sCiAgImlibTg1MiI6ICJjcDg1MiIsCiAgImNzaWJtODUyIjogImNwODUyIiwKICAiY3A4NTUiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAi0ZLQgtGT0IPRkdCB0ZTQhNGV0IXRltCG0ZfQh9GY0IjRmdCJ0ZrQitGb0IvRnNCM0Z7QjtGf0I/RjtCu0YrQqtCw0JDQsdCR0YbQptC00JTQtdCV0YTQpNCz0JPCq8K74paR4paS4paT4pSC4pSk0YXQpdC40JjilaPilZHilZfilZ3QudCZ4pSQ4pSU4pS04pSs4pSc4pSA4pS80LrQmuKVmuKVlOKVqeKVpuKVoOKVkOKVrMKk0LvQm9C80JzQvdCd0L7QntC/4pSY4pSM4paI4paE0J/Rj+KWgNCv0YDQoNGB0KHRgtCi0YPQo9C20JbQstCS0YzQrOKElsKt0YvQq9C30JfRiNCo0Y3QrdGJ0KnRh9CnwqfilqDCoCIKICB9LAogICJpYm04NTUiOiAiY3A4NTUiLAogICJjc2libTg1NSI6ICJjcDg1NSIsCiAgImNwODU2IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIteQ15HXkteT15TXldeW15fXmNeZ15rXm9ec153Xntef16DXodei16PXpNel16bXp9eo16nXqu+/vcKj77+9w5fvv73vv73vv73vv73vv73vv73vv73vv73vv73vv73CrsKswr3CvO+/vcKrwrvilpHilpLilpPilILilKTvv73vv73vv73CqeKVo+KVkeKVl+KVncKiwqXilJDilJTilLTilKzilJzilIDilLzvv73vv73ilZrilZTilanilabilaDilZDilazCpO+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/veKUmOKUjOKWiOKWhMKm77+94paA77+977+977+977+977+977+9wrXvv73vv73vv73vv73vv73vv73vv73Cr8K0wq3CseKAl8K+wrbCp8O3wrjCsMKowrfCucKzwrLilqDCoCIKICB9LAogICJpYm04NTYiOiAiY3A4NTYiLAogICJjc2libTg1NiI6ICJjcDg1NiIsCiAgImNwODU3IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsOHw7zDqcOiw6TDoMOlw6fDqsOrw6jDr8OuxLHDhMOFw4nDpsOGw7TDtsOyw7vDucSww5bDnMO4wqPDmMWexZ/DocOtw7PDusOxw5HEnsSfwr/CrsKswr3CvMKhwqvCu+KWkeKWkuKWk+KUguKUpMOBw4LDgMKp4pWj4pWR4pWX4pWdwqLCpeKUkOKUlOKUtOKUrOKUnOKUgOKUvMOjw4PilZrilZTilanilabilaDilZDilazCpMK6wqrDisOLw4jvv73DjcOOw4/ilJjilIzilojiloTCpsOM4paAw5PDn8OUw5LDtcOVwrXvv73Dl8Oaw5vDmcOsw7/Cr8K0wq3Cse+/vcK+wrbCp8O3wrjCsMKowrfCucKzwrLilqDCoCIKICB9LAogICJpYm04NTciOiAiY3A4NTciLAogICJjc2libTg1NyI6ICJjcDg1NyIsCiAgImNwODU4IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsOHw7zDqcOiw6TDoMOlw6fDqsOrw6jDr8Ouw6zDhMOFw4nDpsOGw7TDtsOyw7vDucO/w5bDnMO4wqPDmMOXxpLDocOtw7PDusOxw5HCqsK6wr/CrsKswr3CvMKhwqvCu+KWkeKWkuKWk+KUguKUpMOBw4LDgMKp4pWj4pWR4pWX4pWdwqLCpeKUkOKUlOKUtOKUrOKUnOKUgOKUvMOjw4PilZrilZTilanilabilaDilZDilazCpMOww5DDisOLw4jigqzDjcOOw4/ilJjilIzilojiloTCpsOM4paAw5PDn8OUw5LDtcOVwrXDvsOew5rDm8OZw73DncKvwrTCrcKx4oCXwr7CtsKnw7fCuMKwwqjCt8K5wrPCsuKWoMKgIgogIH0sCiAgImlibTg1OCI6ICJjcDg1OCIsCiAgImNzaWJtODU4IjogImNwODU4IiwKICAiY3A4NjAiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiw4fDvMOpw6LDo8Ogw4HDp8Oqw4rDqMONw5TDrMODw4LDicOAw4jDtMO1w7LDmsO5w4zDlcOcwqLCo8OZ4oKnw5PDocOtw7PDusOxw5HCqsK6wr/DksKswr3CvMKhwqvCu+KWkeKWkuKWk+KUguKUpOKVoeKVouKVluKVleKVo+KVkeKVl+KVneKVnOKVm+KUkOKUlOKUtOKUrOKUnOKUgOKUvOKVnuKVn+KVmuKVlOKVqeKVpuKVoOKVkOKVrOKVp+KVqOKVpOKVpeKVmeKVmOKVkuKVk+KVq+KVquKUmOKUjOKWiOKWhOKWjOKWkOKWgM6xw5/Ok8+AzqPPg8K1z4TOps6YzqnOtOKIns+GzrXiiKniiaHCseKJpeKJpOKMoOKMocO34omIwrDiiJnCt+KImuKBv8Ky4pagwqAiCiAgfSwKICAiaWJtODYwIjogImNwODYwIiwKICAiY3NpYm04NjAiOiAiY3A4NjAiLAogICJjcDg2MSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLDh8O8w6nDosOkw6DDpcOnw6rDq8Oow5DDsMOew4TDhcOJw6bDhsO0w7bDvsO7w53DvcOWw5zDuMKjw5jigqfGksOhw63Ds8O6w4HDjcOTw5rCv+KMkMKswr3CvMKhwqvCu+KWkeKWkuKWk+KUguKUpOKVoeKVouKVluKVleKVo+KVkeKVl+KVneKVnOKVm+KUkOKUlOKUtOKUrOKUnOKUgOKUvOKVnuKVn+KVmuKVlOKVqeKVpuKVoOKVkOKVrOKVp+KVqOKVpOKVpeKVmeKVmOKVkuKVk+KVq+KVquKUmOKUjOKWiOKWhOKWjOKWkOKWgM6xw5/Ok8+AzqPPg8K1z4TOps6YzqnOtOKIns+GzrXiiKniiaHCseKJpeKJpOKMoOKMocO34omIwrDiiJnCt+KImuKBv8Ky4pagwqAiCiAgfSwKICAiaWJtODYxIjogImNwODYxIiwKICAiY3NpYm04NjEiOiAiY3A4NjEiLAogICJjcDg2MiI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLXkNeR15LXk9eU15XXlteX15jXmdea15vXnNed157Xn9eg16HXotej16TXpdem16fXqNep16rCosKjwqXigqfGksOhw63Ds8O6w7HDkcKqwrrCv+KMkMKswr3CvMKhwqvCu+KWkeKWkuKWk+KUguKUpOKVoeKVouKVluKVleKVo+KVkeKVl+KVneKVnOKVm+KUkOKUlOKUtOKUrOKUnOKUgOKUvOKVnuKVn+KVmuKVlOKVqeKVpuKVoOKVkOKVrOKVp+KVqOKVpOKVpeKVmeKVmOKVkuKVk+KVq+KVquKUmOKUjOKWiOKWhOKWjOKWkOKWgM6xw5/Ok8+AzqPPg8K1z4TOps6YzqnOtOKIns+GzrXiiKniiaHCseKJpeKJpOKMoOKMocO34omIwrDiiJnCt+KImuKBv8Ky4pagwqAiCiAgfSwKICAiaWJtODYyIjogImNwODYyIiwKICAiY3NpYm04NjIiOiAiY3A4NjIiLAogICJjcDg2MyI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLDh8O8w6nDosOCw6DCtsOnw6rDq8Oow6/DruKAl8OAwqfDicOIw4rDtMOLw4/Du8O5wqTDlMOcwqLCo8OZw5vGksKmwrTDs8O6wqjCuMKzwq/DjuKMkMKswr3CvMK+wqvCu+KWkeKWkuKWk+KUguKUpOKVoeKVouKVluKVleKVo+KVkeKVl+KVneKVnOKVm+KUkOKUlOKUtOKUrOKUnOKUgOKUvOKVnuKVn+KVmuKVlOKVqeKVpuKVoOKVkOKVrOKVp+KVqOKVpOKVpeKVmeKVmOKVkuKVk+KVq+KVquKUmOKUjOKWiOKWhOKWjOKWkOKWgM6xw5/Ok8+AzqPPg8K1z4TOps6YzqnOtOKIns+GzrXiiKniiaHCseKJpeKJpOKMoOKMocO34omIwrDiiJnCt+KImuKBv8Ky4pagwqAiCiAgfSwKICAiaWJtODYzIjogImNwODYzIiwKICAiY3NpYm04NjMiOiAiY3A4NjMiLAogICJjcDg2NCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICJcdTAwMDBcdTAwMDFcdTAwMDJcdTAwMDNcdTAwMDRcdTAwMDVcdTAwMDZcdTAwMDdcYlx0XG5cdTAwMGJcZlxyXHUwMDBlXHUwMDBmXHUwMDEwXHUwMDExXHUwMDEyXHUwMDEzXHUwMDE0XHUwMDE1XHUwMDE2XHUwMDE3XHUwMDE4XHUwMDE5XHUwMDFhXHUwMDFiXHUwMDFjXHUwMDFkXHUwMDFlXHUwMDFmICFcIiMk2aomJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/wrDCt+KImeKImuKWkuKUgOKUguKUvOKUpOKUrOKUnOKUtOKUkOKUjOKUlOKUmM6y4oiez4bCscK9wrziiYjCq8K777u377u477+977+977u777u877+9wqDCre+6gsKjwqTvuoTvv73vv73vuo7vuo/vupXvupnYjO+6ne+6oe+6pdmg2aHZotmj2aTZpdmm2afZqNmp77uR2JvvurHvurXvurnYn8Ki77qA77qB77qD77qF77uK77qL77qN77qR77qT77qX77qb77qf77qj77qn77qp77qr77qt77qv77qz77q377q777q/77uB77uF77uL77uPwqbCrMO3w5fvu4nZgO+7k++7l++7m++7n++7o++7p++7q++7re+7r++7s++6ve+7jO+7ju+7je+7oe+5vdmR77ul77up77us77uw77uy77uQ77uV77u177u277ud77uZ77ux4pag77+9IgogIH0sCiAgImlibTg2NCI6ICJjcDg2NCIsCiAgImNzaWJtODY0IjogImNwODY0IiwKICAiY3A4NjUiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiw4fDvMOpw6LDpMOgw6XDp8Oqw6vDqMOvw67DrMOEw4XDicOmw4bDtMO2w7LDu8O5w7/DlsOcw7jCo8OY4oKnxpLDocOtw7PDusOxw5HCqsK6wr/ijJDCrMK9wrzCocKrwqTilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDOscOfzpPPgM6jz4PCtc+EzqbOmM6pzrTiiJ7Phs614oip4omhwrHiiaXiiaTijKDijKHDt+KJiMKw4oiZwrfiiJrigb/CsuKWoMKgIgogIH0sCiAgImlibTg2NSI6ICJjcDg2NSIsCiAgImNzaWJtODY1IjogImNwODY1IiwKICAiY3A4NjYiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAi0JDQkdCS0JPQlNCV0JbQl9CY0JnQmtCb0JzQndCe0J/QoNCh0KLQo9Ck0KXQptCn0KjQqdCq0KvQrNCt0K7Qr9Cw0LHQstCz0LTQtdC20LfQuNC50LrQu9C80L3QvtC/4paR4paS4paT4pSC4pSk4pWh4pWi4pWW4pWV4pWj4pWR4pWX4pWd4pWc4pWb4pSQ4pSU4pS04pSs4pSc4pSA4pS84pWe4pWf4pWa4pWU4pWp4pWm4pWg4pWQ4pWs4pWn4pWo4pWk4pWl4pWZ4pWY4pWS4pWT4pWr4pWq4pSY4pSM4paI4paE4paM4paQ4paA0YDRgdGC0YPRhNGF0YbRh9GI0YnRitGL0YzRjdGO0Y/QgdGR0ITRlNCH0ZfQjtGewrDiiJnCt+KImuKElsKk4pagwqAiCiAgfSwKICAiaWJtODY2IjogImNwODY2IiwKICAiY3NpYm04NjYiOiAiY3A4NjYiLAogICJjcDg2OSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLvv73vv73vv73vv73vv73vv73Ohu+/vcK3wqzCpuKAmOKAmc6I4oCVzonOis6qzozvv73vv73Ojs6rwqnOj8KywrPOrMKjzq3Ors6vz4rOkM+Mz43Okc6SzpPOlM6VzpbOl8K9zpjOmcKrwrvilpHilpLilpPilILilKTOms6bzpzOneKVo+KVkeKVl+KVnc6ezp/ilJDilJTilLTilKzilJzilIDilLzOoM6h4pWa4pWU4pWp4pWm4pWg4pWQ4pWszqPOpM6lzqbOp86ozqnOsc6yzrPilJjilIzilojiloTOtM614paAzrbOt864zrnOus67zrzOvc6+zr/PgM+Bz4PPgs+EzoTCrcKxz4XPhs+HwqfPiM6FwrDCqM+Jz4vOsM+O4pagwqAiCiAgfSwKICAiaWJtODY5IjogImNwODY5IiwKICAiY3NpYm04NjkiOiAiY3A4NjkiLAogICJjcDkyMiI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqzCrcKu4oC+wrDCscKywrPCtMK1wrbCt8K4wrnCusK7wrzCvcK+wr/DgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8Wgw5HDksOTw5TDlcOWw5fDmMOZw5rDm8Ocw53FvcOfw6DDocOiw6PDpMOlw6bDp8Oow6nDqsOrw6zDrcOuw6/FocOxw7LDs8O0w7XDtsO3w7jDucO6w7vDvMO9xb7DvyIKICB9LAogICJpYm05MjIiOiAiY3A5MjIiLAogICJjc2libTkyMiI6ICJjcDkyMiIsCiAgImNwMTA0NiI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLvuojDl8O376O276O176O076O377mxwojilqDilILilIDilJDilIzilJTilJjvubnvubvvub3vub/vubfvuorvu7Dvu7Pvu7Lvu47vu4/vu5Dvu7bvu7jvu7rvu7zCoO+juu+jue+juMKk76O777qL77qR77qX77qb77qf77qj2IzCre+6p++6s9mg2aHZotmj2aTZpdmm2afZqNmp77q32Jvvurvvur/vu4rYn++7i9ih2KLYo9ik2KXYptin2KjYqdiq2KvYrNit2K7Yr9iw2LHYstiz2LTYtdi22Lfvu4fYudi677uM77qC77qE77qO77uT2YDZgdmC2YPZhNmF2YbZh9mI2YnZitmL2YzZjdmO2Y/ZkNmR2ZLvu5fvu5vvu5/vo7zvu7Xvu7fvu7nvu7vvu6Pvu6fvu6zvu6nvv70iCiAgfSwKICAiaWJtMTA0NiI6ICJjcDEwNDYiLAogICJjc2libTEwNDYiOiAiY3AxMDQ2IiwKICAiY3AxMTI0IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoNCB0ILSkNCE0IXQhtCH0IjQidCK0IvQjMKt0I7Qj9CQ0JHQktCT0JTQldCW0JfQmNCZ0JrQm9Cc0J3QntCf0KDQodCi0KPQpNCl0KbQp9Co0KnQqtCr0KzQrdCu0K/QsNCx0LLQs9C00LXQttC30LjQudC60LvQvNC90L7Qv9GA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjtGP4oSW0ZHRktKR0ZTRldGW0ZfRmNGZ0ZrRm9GcwqfRntGfIgogIH0sCiAgImlibTExMjQiOiAiY3AxMTI0IiwKICAiY3NpYm0xMTI0IjogImNwMTEyNCIsCiAgImNwMTEyNSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLQkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv0LDQsdCy0LPQtNC10LbQt9C40LnQutC70LzQvdC+0L/ilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDRgNGB0YLRg9GE0YXRhtGH0YjRidGK0YvRjNGN0Y7Rj9CB0ZHSkNKR0ITRlNCG0ZbQh9GXwrfiiJrihJbCpOKWoMKgIgogIH0sCiAgImlibTExMjUiOiAiY3AxMTI1IiwKICAiY3NpYm0xMTI1IjogImNwMTEyNSIsCiAgImNwMTEyOSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDCocKiwqPCpMKlwqbCp8WTwqnCqsKrwqzCrcKuwq/CsMKxwrLCs8W4wrXCtsK3xZLCucK6wrvCvMK9wr7Cv8OAw4HDgsSCw4TDhcOGw4fDiMOJw4rDi8yAw43DjsOPxJDDkcyJw5PDlMagw5bDl8OYw5nDmsObw5zGr8yDw5/DoMOhw6LEg8Okw6XDpsOnw6jDqcOqw6vMgcOtw67Dr8SRw7HMo8Ozw7TGocO2w7fDuMO5w7rDu8O8xrDigqvDvyIKICB9LAogICJpYm0xMTI5IjogImNwMTEyOSIsCiAgImNzaWJtMTEyOSI6ICJjcDExMjkiLAogICJjcDExMzMiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8Kg4LqB4LqC4LqE4LqH4LqI4Lqq4LqK4LqN4LqU4LqV4LqW4LqX4LqZ4Lqa4Lqb4Lqc4Lqd4Lqe4Lqf4Lqh4Lqi4Lqj4Lql4Lqn4Lqr4Lqt4Lqu77+977+977+94Lqv4Lqw4Lqy4Lqz4Lq04Lq14Lq24Lq34Lq44Lq54Lq84Lqx4Lq74Lq977+977+977+94LuA4LuB4LuC4LuD4LuE4LuI4LuJ4LuK4LuL4LuM4LuN4LuG77+94Luc4Lud4oKt77+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+94LuQ4LuR4LuS4LuT4LuU4LuV4LuW4LuX4LuY4LuZ77+977+9wqLCrMKm77+9IgogIH0sCiAgImlibTExMzMiOiAiY3AxMTMzIiwKICAiY3NpYm0xMTMzIjogImNwMTEzMyIsCiAgImNwMTE2MSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLvv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73guYjguIHguILguIPguITguIXguIbguIfguIjguInguIrguIvguIzguI3guI7guI/guJDguJHguJLguJPguJTguJXguJbguJfguJjguJnguJrguJvguJzguJ3guJ7guJ/guKDguKHguKLguKPguKTguKXguKbguKfguKjguKnguKrguKvguKzguK3guK7guK/guLDguLHguLLguLPguLTguLXguLbguLfguLjguLnguLrguYnguYrguYvigqzguL/guYDguYHguYLguYPguYTguYXguYbguYfguYjguYnguYrguYvguYzguY3guY7guY/guZDguZHguZLguZPguZTguZXguZbguZfguZjguZnguZrguZvCosKswqbCoCIKICB9LAogICJpYm0xMTYxIjogImNwMTE2MSIsCiAgImNzaWJtMTE2MSI6ICJjcDExNjEiLAogICJjcDExNjIiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAi4oKswoHCgsKDwoTigKbChsKHwojCicKKwovCjMKNwo7Cj8KQ4oCY4oCZ4oCc4oCd4oCi4oCT4oCUwpjCmcKawpvCnMKdwp7Cn8Kg4LiB4LiC4LiD4LiE4LiF4LiG4LiH4LiI4LiJ4LiK4LiL4LiM4LiN4LiO4LiP4LiQ4LiR4LiS4LiT4LiU4LiV4LiW4LiX4LiY4LiZ4Lia4Lib4Lic4Lid4Lie4Lif4Lig4Lih4Lii4Lij4Lik4Lil4Lim4Lin4Lio4Lip4Liq4Lir4Lis4Lit4Liu4Liv4Liw4Lix4Liy4Liz4Li04Li14Li24Li34Li44Li54Li677+977+977+977+94Li/4LmA4LmB4LmC4LmD4LmE4LmF4LmG4LmH4LmI4LmJ4LmK4LmL4LmM4LmN4LmO4LmP4LmQ4LmR4LmS4LmT4LmU4LmV4LmW4LmX4LmY4LmZ4Lma4Lmb77+977+977+977+9IgogIH0sCiAgImlibTExNjIiOiAiY3AxMTYyIiwKICAiY3NpYm0xMTYyIjogImNwMTE2MiIsCiAgImNwMTE2MyI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDCocKiwqPigqzCpcKmwqfFk8KpwqrCq8Kswq3CrsKvwrDCscKywrPFuMK1wrbCt8WSwrnCusK7wrzCvcK+wr/DgMOBw4LEgsOEw4XDhsOHw4jDicOKw4vMgMONw47Dj8SQw5HMicOTw5TGoMOWw5fDmMOZw5rDm8Ocxq/Mg8Ofw6DDocOixIPDpMOlw6bDp8Oow6nDqsOrzIHDrcOuw6/EkcOxzKPDs8O0xqHDtsO3w7jDucO6w7vDvMaw4oKrw78iCiAgfSwKICAiaWJtMTE2MyI6ICJjcDExNjMiLAogICJjc2libTExNjMiOiAiY3AxMTYzIiwKICAibWFjY3JvYXRpYW4iOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiw4TDhcOHw4nDkcOWw5zDocOgw6LDpMOjw6XDp8Opw6jDqsOrw63DrMOuw6/DscOzw7LDtMO2w7XDusO5w7vDvOKAoMKwwqLCo8Kn4oCiwrbDn8KuxaDihKLCtMKo4omgxb3DmOKInsKx4omk4oml4oiGwrXiiILiiJHiiI/FoeKIq8KqwrrihKbFvsO4wr/CocKs4oiaxpLiiYjEhsKrxIzigKbCoMOAw4PDlcWSxZPEkOKAlOKAnOKAneKAmOKAmcO34peK77+9wqnigYTCpOKAueKAusOGwrvigJPCt+KAmuKAnuKAsMOCxIfDgcSNw4jDjcOOw4/DjMOTw5TEkcOSw5rDm8OZxLHLhsucwq/PgMOLy5rCuMOKw6bLhyIKICB9LAogICJtYWNjeXJpbGxpYyI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLQkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv4oCgwrDCosKjwqfigKLCttCGwq7CqeKEotCC0ZLiiaDQg9GT4oiewrHiiaTiiaXRlsK14oiC0IjQhNGU0IfRl9CJ0ZnQitGa0ZjQhcKs4oiaxpLiiYjiiIbCq8K74oCmwqDQi9Gb0IzRnNGV4oCT4oCU4oCc4oCd4oCY4oCZw7figJ7QjtGe0I/Rn+KEltCB0ZHRj9Cw0LHQstCz0LTQtdC20LfQuNC50LrQu9C80L3QvtC/0YDRgdGC0YPRhNGF0YbRh9GI0YnRitGL0YzRjdGOwqQiCiAgfSwKICAibWFjZ3JlZWsiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiw4TCucKyw4nCs8OWw5zOhcOgw6LDpM6EwqjDp8Opw6jDqsOrwqPihKLDrsOv4oCiwr3igLDDtMO2wqbCrcO5w7vDvOKAoM6TzpTOmM6bzp7OoMOfwq7Cqc6jzqrCp+KJoMKwzofOkcKx4omk4omlwqXOks6VzpbOl86ZzprOnM6mzqvOqM6pzqzOncKszp/OoeKJiM6kwqvCu+KApsKgzqXOp86GzojFk+KAk+KAleKAnOKAneKAmOKAmcO3zonOis6Mzo7Orc6uzq/PjM6Pz43Osc6yz4jOtM61z4bOs863zrnOvs66zrvOvM69zr/PgM+Oz4HPg8+EzrjPic+Cz4fPhc62z4rPi86QzrDvv70iCiAgfSwKICAibWFjaWNlbGFuZCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLDhMOFw4fDicORw5bDnMOhw6DDosOkw6PDpcOnw6nDqMOqw6vDrcOsw67Dr8Oxw7PDssO0w7bDtcO6w7nDu8O8w53CsMKiwqPCp+KAosK2w5/CrsKp4oSiwrTCqOKJoMOGw5jiiJ7CseKJpOKJpcKlwrXiiILiiJHiiI/PgOKIq8KqwrrihKbDpsO4wr/CocKs4oiaxpLiiYjiiIbCq8K74oCmwqDDgMODw5XFksWT4oCT4oCU4oCc4oCd4oCY4oCZw7fil4rDv8W44oGEwqTDkMOww57DvsO9wrfigJrigJ7igLDDgsOKw4HDi8OIw43DjsOPw4zDk8OU77+9w5LDmsObw5nEscuGy5zCr8uYy5nLmsK4y53Lm8uHIgogIH0sCiAgIm1hY3JvbWFuIjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsOEw4XDh8OJw5HDlsOcw6HDoMOiw6TDo8Olw6fDqcOow6rDq8Otw6zDrsOvw7HDs8Oyw7TDtsO1w7rDucO7w7zigKDCsMKiwqPCp+KAosK2w5/CrsKp4oSiwrTCqOKJoMOGw5jiiJ7CseKJpOKJpcKlwrXiiILiiJHiiI/PgOKIq8KqwrrihKbDpsO4wr/CocKs4oiaxpLiiYjiiIbCq8K74oCmwqDDgMODw5XFksWT4oCT4oCU4oCc4oCd4oCY4oCZw7fil4rDv8W44oGEwqTigLnigLrvrIHvrILigKHCt+KAmuKAnuKAsMOCw4rDgcOLw4jDjcOOw4/DjMOTw5Tvv73DksOaw5vDmcSxy4bLnMKvy5jLmcuawrjLncuby4ciCiAgfSwKICAibWFjcm9tYW5pYSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLDhMOFw4fDicORw5bDnMOhw6DDosOkw6PDpcOnw6nDqMOqw6vDrcOsw67Dr8Oxw7PDssO0w7bDtcO6w7nDu8O84oCgwrDCosKjwqfigKLCtsOfwq7CqeKEosK0wqjiiaDEgsWe4oiewrHiiaTiiaXCpcK14oiC4oiR4oiPz4DiiKvCqsK64oSmxIPFn8K/wqHCrOKImsaS4omI4oiGwqvCu+KApsKgw4DDg8OVxZLFk+KAk+KAlOKAnOKAneKAmOKAmcO34peKw7/FuOKBhMKk4oC54oC6xaLFo+KAocK34oCa4oCe4oCww4LDisOBw4vDiMONw47Dj8OMw5PDlO+/vcOSw5rDm8OZxLHLhsucwq/LmMuZy5rCuMudy5vLhyIKICB9LAogICJtYWN0aGFpIjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsKrwrvigKbvoozvoo/vopLvopXvopjvoovvoo7vopHvopTvopfigJzigJ3vopnvv73igKLvooTvoonvooXvoobvoofvoojvoorvoo3vopDvopPvopbigJjigJnvv73CoOC4geC4guC4g+C4hOC4heC4huC4h+C4iOC4ieC4iuC4i+C4jOC4jeC4juC4j+C4kOC4keC4kuC4k+C4lOC4leC4luC4l+C4mOC4meC4muC4m+C4nOC4neC4nuC4n+C4oOC4oeC4ouC4o+C4pOC4peC4puC4p+C4qOC4qeC4quC4q+C4rOC4reC4ruC4r+C4sOC4seC4suC4s+C4tOC4teC4tuC4t+C4uOC4ueC4uu+7v+KAi+KAk+KAlOC4v+C5gOC5geC5guC5g+C5hOC5heC5huC5h+C5iOC5ieC5iuC5i+C5jOC5jeKEouC5j+C5kOC5keC5kuC5k+C5lOC5leC5luC5l+C5mOC5mcKuwqnvv73vv73vv73vv70iCiAgfSwKICAibWFjdHVya2lzaCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLDhMOFw4fDicORw5bDnMOhw6DDosOkw6PDpcOnw6nDqMOqw6vDrcOsw67Dr8Oxw7PDssO0w7bDtcO6w7nDu8O84oCgwrDCosKjwqfigKLCtsOfwq7CqeKEosK0wqjiiaDDhsOY4oiewrHiiaTiiaXCpcK14oiC4oiR4oiPz4DiiKvCqsK64oSmw6bDuMK/wqHCrOKImsaS4omI4oiGwqvCu+KApsKgw4DDg8OVxZLFk+KAk+KAlOKAnOKAneKAmOKAmcO34peKw7/FuMSexJ/EsMSxxZ7Fn+KAocK34oCa4oCe4oCww4LDisOBw4vDiMONw47Dj8OMw5PDlO+/vcOSw5rDm8OZ77+9y4bLnMKvy5jLmcuawrjLncuby4ciCiAgfSwKICAibWFjdWtyYWluZSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLQkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv4oCgwrDSkMKjwqfigKLCttCGwq7CqeKEotCC0ZLiiaDQg9GT4oiewrHiiaTiiaXRlsK10pHQiNCE0ZTQh9GX0InRmdCK0ZrRmNCFwqziiJrGkuKJiOKIhsKrwrvigKbCoNCL0ZvQjNGc0ZXigJPigJTigJzigJ3igJjigJnDt+KAntCO0Z7Qj9Gf4oSW0IHRkdGP0LDQsdCy0LPQtNC10LbQt9C40LnQutC70LzQvdC+0L/RgNGB0YLRg9GE0YXRhtGH0YjRidGK0YvRjNGN0Y7CpCIKICB9LAogICJrb2k4ciI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLilIDilILilIzilJDilJTilJjilJzilKTilKzilLTilLziloDiloTilojilozilpDilpHilpLilpPijKDilqDiiJniiJriiYjiiaTiiaXCoOKMocKwwrLCt8O34pWQ4pWR4pWS0ZHilZPilZTilZXilZbilZfilZjilZnilZrilZvilZzilZ3ilZ7ilZ/ilaDilaHQgeKVouKVo+KVpOKVpeKVpuKVp+KVqOKVqeKVquKVq+KVrMKp0Y7QsNCx0YbQtNC10YTQs9GF0LjQudC60LvQvNC90L7Qv9GP0YDRgdGC0YPQttCy0YzRi9C30YjRjdGJ0YfRitCu0JDQkdCm0JTQldCk0JPQpdCY0JnQmtCb0JzQndCe0J/Qr9Cg0KHQotCj0JbQktCs0KvQl9Co0K3QqdCn0KoiCiAgfSwKICAia29pOHUiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAi4pSA4pSC4pSM4pSQ4pSU4pSY4pSc4pSk4pSs4pS04pS84paA4paE4paI4paM4paQ4paR4paS4paT4oyg4pag4oiZ4oia4omI4omk4omlwqDijKHCsMKywrfDt+KVkOKVkeKVktGR0ZTilZTRltGX4pWX4pWY4pWZ4pWa4pWb0pHilZ3ilZ7ilZ/ilaDilaHQgdCE4pWj0IbQh+KVpuKVp+KVqOKVqeKVqtKQ4pWswqnRjtCw0LHRhtC00LXRhNCz0YXQuNC50LrQu9C80L3QvtC/0Y/RgNGB0YLRg9C20LLRjNGL0LfRiNGN0YnRh9GK0K7QkNCR0KbQlNCV0KTQk9Cl0JjQmdCa0JvQnNCd0J7Qn9Cv0KDQodCi0KPQltCS0KzQq9CX0KjQrdCp0KfQqiIKICB9LAogICJrb2k4cnUiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAi4pSA4pSC4pSM4pSQ4pSU4pSY4pSc4pSk4pSs4pS04pS84paA4paE4paI4paM4paQ4paR4paS4paT4oyg4pag4oiZ4oia4omI4omk4omlwqDijKHCsMKywrfDt+KVkOKVkeKVktGR0ZTilZTRltGX4pWX4pWY4pWZ4pWa4pWb0pHRnuKVnuKVn+KVoOKVodCB0ITilaPQhtCH4pWm4pWn4pWo4pWp4pWq0pDQjsKp0Y7QsNCx0YbQtNC10YTQs9GF0LjQudC60LvQvNC90L7Qv9GP0YDRgdGC0YPQttCy0YzRi9C30YjRjdGJ0YfRitCu0JDQkdCm0JTQldCk0JPQpdCY0JnQmtCb0JzQndCe0J/Qr9Cg0KHQotCj0JbQktCs0KvQl9Co0K3QqdCn0KoiCiAgfSwKICAia29pOHQiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAi0pvSk+KAmtKS4oCe4oCm4oCg4oCh77+94oCw0rPigLnSstK30rbvv73SmuKAmOKAmeKAnOKAneKAouKAk+KAlO+/veKEou+/veKAuu+/ve+/ve+/ve+/ve+/vdOv067RkcKk06PCpsKn77+977+977+9wqvCrMKtwq7vv73CsMKxwrLQge+/vdOiwrbCt++/veKElu+/vcK777+977+977+9wqnRjtCw0LHRhtC00LXRhNCz0YXQuNC50LrQu9C80L3QvtC/0Y/RgNGB0YLRg9C20LLRjNGL0LfRiNGN0YnRh9GK0K7QkNCR0KbQlNCV0KTQk9Cl0JjQmdCa0JvQnNCd0J7Qn9Cv0KDQodCi0KPQltCS0KzQq9CX0KjQrdCp0KfQqiIKICB9LAogICJhcm1zY2lpOCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDvv73Wh9aJKSjCu8Kr4oCULtWdLC3WiuKAptWc1ZvVntSx1aHUstWi1LPVo9S01aTUtdWl1LbVptS31afUuNWo1LnVqdS61arUu9Wr1LzVrNS91a3UvtWu1L/Vr9WA1bDVgdWx1YLVstWD1bPVhNW01YXVtdWG1bbVh9W31YjVuNWJ1bnVitW61YvVu9WM1bzVjdW91Y7VvtWP1b/VkNaA1ZHWgdWS1oLVk9aD1ZTWhNWV1oXVltaG1Zrvv70iCiAgfSwKICAicmsxMDQ4IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogItCC0IPigJrRk+KAnuKApuKAoOKAoeKCrOKAsNCJ4oC50IrSmtK60I/RkuKAmOKAmeKAnOKAneKAouKAk+KAlO+/veKEotGZ4oC60ZrSm9K70Z/CoNKw0rHTmMKk06jCpsKn0IHCqdKSwqvCrMKtwq7SrsKwwrHQhtGW06nCtcK2wrfRkeKEltKTwrvTmdKi0qPSr9CQ0JHQktCT0JTQldCW0JfQmNCZ0JrQm9Cc0J3QntCf0KDQodCi0KPQpNCl0KbQp9Co0KnQqtCr0KzQrdCu0K/QsNCx0LLQs9C00LXQttC30LjQudC60LvQvNC90L7Qv9GA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjtGPIgogIH0sCiAgInRjdm4iOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiXHUwMDAww5rhu6RcdTAwMDPhu6rhu6zhu65cdTAwMDdcYlx0XG5cdTAwMGJcZlxyXHUwMDBlXHUwMDBmXHUwMDEw4buo4buw4buy4bu24bu4w53hu7RcdTAwMThcdTAwMTlcdTAwMWFcdTAwMWJcdTAwMWNcdTAwMWRcdTAwMWVcdTAwMWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f8OA4bqiw4PDgeG6oOG6tuG6rMOI4bq64bq8w4nhurjhu4bDjOG7iMSow43hu4rDkuG7jsOVw5Phu4zhu5jhu5zhu57hu6Dhu5rhu6LDmeG7psWowqDEgsOCw4rDlMagxq/EkMSDw6LDqsO0xqHGsMSR4bqwzIDMicyDzIHMo8Og4bqjw6PDoeG6oeG6suG6seG6s+G6teG6r+G6tOG6ruG6puG6qOG6quG6pOG7gOG6t+G6p+G6qeG6q+G6peG6rcOo4buC4bq74bq9w6nhurnhu4Hhu4Phu4Xhur/hu4fDrOG7ieG7hOG6vuG7ksSpw63hu4vDsuG7lOG7j8O1w7Phu43hu5Phu5Xhu5fhu5Hhu5nhu53hu5/hu6Hhu5vhu6PDueG7luG7p8Wpw7rhu6Xhu6vhu63hu6/hu6nhu7Hhu7Phu7fhu7nDveG7teG7kCIKICB9LAogICJnZW9yZ2lhbmFjYWRlbXkiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiwoDCgeKAmsaS4oCe4oCm4oCg4oChy4bigLDFoOKAucWSwo3CjsKPwpDigJjigJnigJzigJ3igKLigJPigJTLnOKEosWh4oC6xZPCncKexbjCoMKhwqLCo8KkwqXCpsKnwqjCqcKqwqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/4YOQ4YOR4YOS4YOT4YOU4YOV4YOW4YOX4YOY4YOZ4YOa4YOb4YOc4YOd4YOe4YOf4YOg4YOh4YOi4YOj4YOk4YOl4YOm4YOn4YOo4YOp4YOq4YOr4YOs4YOt4YOu4YOv4YOw4YOx4YOy4YOz4YO04YO14YO2w6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w78iCiAgfSwKICAiZ2VvcmdpYW5wcyI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKB4oCaxpLigJ7igKbigKDigKHLhuKAsMWg4oC5xZLCjcKOwo/CkOKAmOKAmeKAnOKAneKAouKAk+KAlMuc4oSixaHigLrFk8Kdwp7FuMKgwqHCosKjwqTCpcKmwqfCqMKpwqrCq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnCusK7wrzCvcK+wr/hg5Dhg5Hhg5Lhg5Phg5Thg5Xhg5bhg7Hhg5fhg5jhg5nhg5rhg5vhg5zhg7Lhg53hg57hg5/hg6Dhg6Hhg6Lhg7Phg6Phg6Thg6Xhg6bhg6fhg6jhg6nhg6rhg6vhg6zhg63hg67hg7Thg6/hg7Dhg7XDpsOnw6jDqcOqw6vDrMOtw67Dr8Oww7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8w73DvsO/IgogIH0sCiAgInB0MTU0IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogItKW0pLTrtKT4oCe4oCm0rbSrtKy0q/SoNOi0qLSmtK60rjSl+KAmOKAmeKAnOKAneKAouKAk+KAlNKz0rfSodOj0qPSm9K70rnCoNCO0Z7QiNOo0pjSsMKn0IHCqdOYwqvCrNOvwq7SnMKw0rHQhtGW0pnTqcK2wrfRkeKEltOZwrvRmNKq0qvSndCQ0JHQktCT0JTQldCW0JfQmNCZ0JrQm9Cc0J3QntCf0KDQodCi0KPQpNCl0KbQp9Co0KnQqtCr0KzQrdCu0K/QsNCx0LLQs9C00LXQttC30LjQudC60LvQvNC90L7Qv9GA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjtGPIgogIH0sCiAgInZpc2NpaSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICJcdTAwMDBcdTAwMDHhurJcdTAwMDNcdTAwMDThurThuqpcdTAwMDdcYlx0XG5cdTAwMGJcZlxyXHUwMDBlXHUwMDBmXHUwMDEwXHUwMDExXHUwMDEyXHUwMDEz4bu2XHUwMDE1XHUwMDE2XHUwMDE3XHUwMDE44bu4XHUwMDFhXHUwMDFiXHUwMDFjXHUwMDFk4bu0XHUwMDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn/huqDhuq7hurDhurbhuqThuqbhuqjhuqzhurzhurjhur7hu4Dhu4Lhu4Thu4bhu5Dhu5Lhu5Thu5bhu5jhu6Lhu5rhu5zhu57hu4rhu47hu4zhu4jhu6bFqOG7pOG7ssOV4bqv4bqx4bq34bql4bqn4bqp4bqt4bq94bq54bq/4buB4buD4buF4buH4buR4buT4buV4buX4bugxqDhu5nhu53hu5/hu4vhu7Dhu6jhu6rhu6zGoeG7m8avw4DDgcOCw4PhuqLEguG6s+G6tcOIw4nDiuG6usOMw43EqOG7s8SQ4bupw5LDk8OU4bqh4bu34bur4butw5nDmuG7ueG7tcOd4buhxrDDoMOhw6LDo+G6o8SD4buv4bqrw6jDqcOq4bq7w6zDrcSp4buJxJHhu7HDssOzw7TDteG7j+G7jeG7pcO5w7rFqeG7p8O94buj4buuIgogIH0sCiAgImlzbzY0NmNuIjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIlx1MDAwMFx1MDAwMVx1MDAwMlx1MDAwM1x1MDAwNFx1MDAwNVx1MDAwNlx1MDAwN1xiXHRcblx1MDAwYlxmXHJcdTAwMGVcdTAwMGZcdTAwMTBcdTAwMTFcdTAwMTJcdTAwMTNcdTAwMTRcdTAwMTVcdTAwMTZcdTAwMTdcdTAwMThcdTAwMTlcdTAwMWFcdTAwMWJcdTAwMWNcdTAwMWRcdTAwMWVcdTAwMWYgIVwiI8KlJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x94oC+f++/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vSIKICB9LAogICJpc282NDZqcCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICJcdTAwMDBcdTAwMDFcdTAwMDJcdTAwMDNcdTAwMDRcdTAwMDVcdTAwMDZcdTAwMDdcYlx0XG5cdTAwMGJcZlxyXHUwMDBlXHUwMDBmXHUwMDEwXHUwMDExXHUwMDEyXHUwMDEzXHUwMDE0XHUwMDE1XHUwMDE2XHUwMDE3XHUwMDE4XHUwMDE5XHUwMDFhXHUwMDFiXHUwMDFjXHUwMDFkXHUwMDFlXHUwMDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW8KlXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x94oC+f++/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vSIKICB9LAogICJocHJvbWFuOCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDDgMOCw4jDisOLw47Dj8K0y4vLhsKoy5zDmcOb4oKkwq/DncO9wrDDh8Onw5HDscKhwr/CpMKjwqXCp8aSwqLDosOqw7TDu8Ohw6nDs8O6w6DDqMOyw7nDpMOrw7bDvMOFw67DmMOGw6XDrcO4w6bDhMOsw5bDnMOJw6/Dn8OUw4HDg8Ojw5DDsMONw4zDk8OSw5XDtcWgxaHDmsW4w7/DnsO+wrfCtcK2wr7igJTCvMK9wqrCusKr4pagwrvCse+/vSIKICB9LAogICJtYWNpbnRvc2giOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiw4TDhcOHw4nDkcOWw5zDocOgw6LDpMOjw6XDp8Opw6jDqsOrw63DrMOuw6/DscOzw7LDtMO2w7XDusO5w7vDvOKAoMKwwqLCo8Kn4oCiwrbDn8KuwqnihKLCtMKo4omgw4bDmOKInsKx4omk4omlwqXCteKIguKIkeKIj8+A4oirwqrCuuKEpsOmw7jCv8KhwqziiJrGkuKJiOKIhsKrwrvigKbCoMOAw4PDlcWSxZPigJPigJTigJzigJ3igJjigJnDt+KXisO/xbjigYTCpOKAueKAuu+sge+sguKAocK34oCa4oCe4oCww4LDisOBw4vDiMONw47Dj8OMw5PDlO+/vcOSw5rDm8OZxLHLhsucwq/LmMuZy5rCuMudy5vLhyIKICB9LAogICJhc2NpaSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLvv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv70iCiAgfSwKICAidGlzNjIwIjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIu+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/veC4geC4guC4g+C4hOC4heC4huC4h+C4iOC4ieC4iuC4i+C4jOC4jeC4juC4j+C4kOC4keC4kuC4k+C4lOC4leC4luC4l+C4mOC4meC4muC4m+C4nOC4neC4nuC4n+C4oOC4oeC4ouC4o+C4pOC4peC4puC4p+C4qOC4qeC4quC4q+C4rOC4reC4ruC4r+C4sOC4seC4suC4s+C4tOC4teC4tuC4t+C4uOC4ueC4uu+/ve+/ve+/ve+/veC4v+C5gOC5geC5guC5g+C5hOC5heC5huC5h+C5iOC5ieC5iuC5i+C5jOC5jeC5juC5j+C5kOC5keC5kuC5k+C5lOC5leC5luC5l+C5mOC5meC5muC5m++/ve+/ve+/ve+/vSIKICB9Cn0KCi8qKiovIH0pLAovKiAxNzggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKdmFyIEJ1ZmZlciA9IF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyOwoKLy8gTXVsdGlieXRlIGNvZGVjLiBJbiB0aGlzIHNjaGVtZSwgYSBjaGFyYWN0ZXIgaXMgcmVwcmVzZW50ZWQgYnkgMSBvciBtb3JlIGJ5dGVzLgovLyBPdXIgY29kZWMgc3VwcG9ydHMgVVRGLTE2IHN1cnJvZ2F0ZXMsIGV4dGVuc2lvbnMgZm9yIEdCMTgwMzAgYW5kIHVuaWNvZGUgc2VxdWVuY2VzLgovLyBUbyBzYXZlIG1lbW9yeSBhbmQgbG9hZGluZyB0aW1lLCB3ZSByZWFkIHRhYmxlIGZpbGVzIG9ubHkgd2hlbiByZXF1ZXN0ZWQuCgpleHBvcnRzLl9kYmNzID0gREJDU0NvZGVjOwoKdmFyIFVOQVNTSUdORUQgPSAtMSwKICAgIEdCMTgwMzBfQ09ERSA9IC0yLAogICAgU0VRX1NUQVJUICA9IC0xMCwKICAgIE5PREVfU1RBUlQgPSAtMTAwMCwKICAgIFVOQVNTSUdORURfTk9ERSA9IG5ldyBBcnJheSgweDEwMCksCiAgICBERUZfQ0hBUiA9IC0xOwoKZm9yICh2YXIgaSA9IDA7IGkgPCAweDEwMDsgaSsrKQogICAgVU5BU1NJR05FRF9OT0RFW2ldID0gVU5BU1NJR05FRDsKCgovLyBDbGFzcyBEQkNTQ29kZWMgcmVhZHMgYW5kIGluaXRpYWxpemVzIG1hcHBpbmcgdGFibGVzLgpmdW5jdGlvbiBEQkNTQ29kZWMoY29kZWNPcHRpb25zLCBpY29udikgewogICAgdGhpcy5lbmNvZGluZ05hbWUgPSBjb2RlY09wdGlvbnMuZW5jb2RpbmdOYW1lOwogICAgaWYgKCFjb2RlY09wdGlvbnMpCiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJEQkNTIGNvZGVjIGlzIGNhbGxlZCB3aXRob3V0IHRoZSBkYXRhLiIpCiAgICBpZiAoIWNvZGVjT3B0aW9ucy50YWJsZSkKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkVuY29kaW5nICciICsgdGhpcy5lbmNvZGluZ05hbWUgKyAiJyBoYXMgbm8gZGF0YS4iKTsKCiAgICAvLyBMb2FkIHRhYmxlcy4KICAgIHZhciBtYXBwaW5nVGFibGUgPSBjb2RlY09wdGlvbnMudGFibGUoKTsKCgogICAgLy8gRGVjb2RlIHRhYmxlczogTUJDUyAtPiBVbmljb2RlLgoKICAgIC8vIGRlY29kZVRhYmxlcyBpcyBhIHRyaWUsIGVuY29kZWQgYXMgYW4gYXJyYXkgb2YgYXJyYXlzIG9mIGludGVnZXJzLiBJbnRlcm5hbCBhcnJheXMgYXJlIHRyaWUgbm9kZXMgYW5kIGFsbCBoYXZlIGxlbiA9IDI1Ni4KICAgIC8vIFRyaWUgcm9vdCBpcyBkZWNvZGVUYWJsZXNbMF0uCiAgICAvLyBWYWx1ZXM6ID49ICAwIC0+IHVuaWNvZGUgY2hhcmFjdGVyIGNvZGUuIGNhbiBiZSA+IDB4RkZGRgogICAgLy8gICAgICAgICA9PSBVTkFTU0lHTkVEIC0+IHVua25vd24vdW5hc3NpZ25lZCBzZXF1ZW5jZS4KICAgIC8vICAgICAgICAgPT0gR0IxODAzMF9DT0RFIC0+IHRoaXMgaXMgdGhlIGVuZCBvZiBhIEdCMTgwMzAgNC1ieXRlIHNlcXVlbmNlLgogICAgLy8gICAgICAgICA8PSBOT0RFX1NUQVJUIC0+IGluZGV4IG9mIHRoZSBuZXh0IG5vZGUgaW4gb3VyIHRyaWUgdG8gcHJvY2VzcyBuZXh0IGJ5dGUuCiAgICAvLyAgICAgICAgIDw9IFNFUV9TVEFSVCAgLT4gaW5kZXggb2YgdGhlIHN0YXJ0IG9mIGEgY2hhcmFjdGVyIGNvZGUgc2VxdWVuY2UsIGluIGRlY29kZVRhYmxlU2VxLgogICAgdGhpcy5kZWNvZGVUYWJsZXMgPSBbXTsKICAgIHRoaXMuZGVjb2RlVGFibGVzWzBdID0gVU5BU1NJR05FRF9OT0RFLnNsaWNlKDApOyAvLyBDcmVhdGUgcm9vdCBub2RlLgoKICAgIC8vIFNvbWV0aW1lcyBhIE1CQ1MgY2hhciBjb3JyZXNwb25kcyB0byBhIHNlcXVlbmNlIG9mIHVuaWNvZGUgY2hhcnMuIFdlIHN0b3JlIHRoZW0gYXMgYXJyYXlzIG9mIGludGVnZXJzIGhlcmUuIAogICAgdGhpcy5kZWNvZGVUYWJsZVNlcSA9IFtdOwoKICAgIC8vIEFjdHVhbCBtYXBwaW5nIHRhYmxlcyBjb25zaXN0IG9mIGNodW5rcy4gVXNlIHRoZW0gdG8gZmlsbCB1cCBkZWNvZGUgdGFibGVzLgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXBwaW5nVGFibGUubGVuZ3RoOyBpKyspCiAgICAgICAgdGhpcy5fYWRkRGVjb2RlQ2h1bmsobWFwcGluZ1RhYmxlW2ldKTsKCiAgICB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZSA9IGljb252LmRlZmF1bHRDaGFyVW5pY29kZTsKCiAgICAKICAgIC8vIEVuY29kZSB0YWJsZXM6IFVuaWNvZGUgLT4gREJDUy4KCiAgICAvLyBgZW5jb2RlVGFibGVgIGlzIGFycmF5IG1hcHBpbmcgZnJvbSB1bmljb2RlIGNoYXIgdG8gZW5jb2RlZCBjaGFyLiBBbGwgaXRzIHZhbHVlcyBhcmUgaW50ZWdlcnMgZm9yIHBlcmZvcm1hbmNlLgogICAgLy8gQmVjYXVzZSBpdCBjYW4gYmUgc3BhcnNlLCBpdCBpcyByZXByZXNlbnRlZCBhcyBhcnJheSBvZiBidWNrZXRzIGJ5IDI1NiBjaGFycyBlYWNoLiBCdWNrZXQgY2FuIGJlIG51bGwuCiAgICAvLyBWYWx1ZXM6ID49ICAwIC0+IGl0IGlzIGEgbm9ybWFsIGNoYXIuIFdyaXRlIHRoZSB2YWx1ZSAoaWYgPD0yNTYgdGhlbiAxIGJ5dGUsIGlmIDw9NjU1MzYgdGhlbiAyIGJ5dGVzLCBldGMuKS4KICAgIC8vICAgICAgICAgPT0gVU5BU1NJR05FRCAtPiBubyBjb252ZXJzaW9uIGZvdW5kLiBPdXRwdXQgYSBkZWZhdWx0IGNoYXIuCiAgICAvLyAgICAgICAgIDw9IFNFUV9TVEFSVCAgLT4gaXQncyBhbiBpbmRleCBpbiBlbmNvZGVUYWJsZVNlcSwgc2VlIGJlbG93LiBUaGUgY2hhcmFjdGVyIHN0YXJ0cyBhIHNlcXVlbmNlLgogICAgdGhpcy5lbmNvZGVUYWJsZSA9IFtdOwogICAgCiAgICAvLyBgZW5jb2RlVGFibGVTZXFgIGlzIHVzZWQgd2hlbiBhIHNlcXVlbmNlIG9mIHVuaWNvZGUgY2hhcmFjdGVycyBpcyBlbmNvZGVkIGFzIGEgc2luZ2xlIGNvZGUuIFdlIHVzZSBhIHRyZWUgb2YKICAgIC8vIG9iamVjdHMgd2hlcmUga2V5cyBjb3JyZXNwb25kIHRvIGNoYXJhY3RlcnMgaW4gc2VxdWVuY2UgYW5kIGxlYWZzIGFyZSB0aGUgZW5jb2RlZCBkYmNzIHZhbHVlcy4gQSBzcGVjaWFsIERFRl9DSEFSIGtleQogICAgLy8gbWVhbnMgZW5kIG9mIHNlcXVlbmNlIChuZWVkZWQgd2hlbiBvbmUgc2VxdWVuY2UgaXMgYSBzdHJpY3Qgc3Vic2VxdWVuY2Ugb2YgYW5vdGhlcikuCiAgICAvLyBPYmplY3RzIGFyZSBrZXB0IHNlcGFyYXRlbHkgZnJvbSBlbmNvZGVUYWJsZSB0byBpbmNyZWFzZSBwZXJmb3JtYW5jZS4KICAgIHRoaXMuZW5jb2RlVGFibGVTZXEgPSBbXTsKCiAgICAvLyBTb21lIGNoYXJzIGNhbiBiZSBkZWNvZGVkLCBidXQgbmVlZCBub3QgYmUgZW5jb2RlZC4KICAgIHZhciBza2lwRW5jb2RlQ2hhcnMgPSB7fTsKICAgIGlmIChjb2RlY09wdGlvbnMuZW5jb2RlU2tpcFZhbHMpCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2RlY09wdGlvbnMuZW5jb2RlU2tpcFZhbHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHZhbCA9IGNvZGVjT3B0aW9ucy5lbmNvZGVTa2lwVmFsc1tpXTsKICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKQogICAgICAgICAgICAgICAgc2tpcEVuY29kZUNoYXJzW3ZhbF0gPSB0cnVlOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gdmFsLmZyb207IGogPD0gdmFsLnRvOyBqKyspCiAgICAgICAgICAgICAgICAgICAgc2tpcEVuY29kZUNoYXJzW2pdID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICAvLyBVc2UgZGVjb2RlIHRyaWUgdG8gcmVjdXJzaXZlbHkgZmlsbCBvdXQgZW5jb2RlIHRhYmxlcy4KICAgIHRoaXMuX2ZpbGxFbmNvZGVUYWJsZSgwLCAwLCBza2lwRW5jb2RlQ2hhcnMpOwoKICAgIC8vIEFkZCBtb3JlIGVuY29kaW5nIHBhaXJzIHdoZW4gbmVlZGVkLgogICAgaWYgKGNvZGVjT3B0aW9ucy5lbmNvZGVBZGQpIHsKICAgICAgICBmb3IgKHZhciB1Q2hhciBpbiBjb2RlY09wdGlvbnMuZW5jb2RlQWRkKQogICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNvZGVjT3B0aW9ucy5lbmNvZGVBZGQsIHVDaGFyKSkKICAgICAgICAgICAgICAgIHRoaXMuX3NldEVuY29kZUNoYXIodUNoYXIuY2hhckNvZGVBdCgwKSwgY29kZWNPcHRpb25zLmVuY29kZUFkZFt1Q2hhcl0pOwogICAgfQoKICAgIHRoaXMuZGVmQ2hhclNCICA9IHRoaXMuZW5jb2RlVGFibGVbMF1baWNvbnYuZGVmYXVsdENoYXJTaW5nbGVCeXRlLmNoYXJDb2RlQXQoMCldOwogICAgaWYgKHRoaXMuZGVmQ2hhclNCID09PSBVTkFTU0lHTkVEKSB0aGlzLmRlZkNoYXJTQiA9IHRoaXMuZW5jb2RlVGFibGVbMF1bJz8nXTsKICAgIGlmICh0aGlzLmRlZkNoYXJTQiA9PT0gVU5BU1NJR05FRCkgdGhpcy5kZWZDaGFyU0IgPSAiPyIuY2hhckNvZGVBdCgwKTsKCgogICAgLy8gTG9hZCAmIGNyZWF0ZSBHQjE4MDMwIHRhYmxlcyB3aGVuIG5lZWRlZC4KICAgIGlmICh0eXBlb2YgY29kZWNPcHRpb25zLmdiMTgwMzAgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICB0aGlzLmdiMTgwMzAgPSBjb2RlY09wdGlvbnMuZ2IxODAzMCgpOyAvLyBMb2FkIEdCMTgwMzAgcmFuZ2VzLgoKICAgICAgICAvLyBBZGQgR0IxODAzMCBkZWNvZGUgdGFibGVzLgogICAgICAgIHZhciB0aGlyZEJ5dGVOb2RlSWR4ID0gdGhpcy5kZWNvZGVUYWJsZXMubGVuZ3RoOwogICAgICAgIHZhciB0aGlyZEJ5dGVOb2RlID0gdGhpcy5kZWNvZGVUYWJsZXNbdGhpcmRCeXRlTm9kZUlkeF0gPSBVTkFTU0lHTkVEX05PREUuc2xpY2UoMCk7CgogICAgICAgIHZhciBmb3VydGhCeXRlTm9kZUlkeCA9IHRoaXMuZGVjb2RlVGFibGVzLmxlbmd0aDsKICAgICAgICB2YXIgZm91cnRoQnl0ZU5vZGUgPSB0aGlzLmRlY29kZVRhYmxlc1tmb3VydGhCeXRlTm9kZUlkeF0gPSBVTkFTU0lHTkVEX05PREUuc2xpY2UoMCk7CgogICAgICAgIGZvciAodmFyIGkgPSAweDgxOyBpIDw9IDB4RkU7IGkrKykgewogICAgICAgICAgICB2YXIgc2Vjb25kQnl0ZU5vZGVJZHggPSBOT0RFX1NUQVJUIC0gdGhpcy5kZWNvZGVUYWJsZXNbMF1baV07CiAgICAgICAgICAgIHZhciBzZWNvbmRCeXRlTm9kZSA9IHRoaXMuZGVjb2RlVGFibGVzW3NlY29uZEJ5dGVOb2RlSWR4XTsKICAgICAgICAgICAgZm9yICh2YXIgaiA9IDB4MzA7IGogPD0gMHgzOTsgaisrKQogICAgICAgICAgICAgICAgc2Vjb25kQnl0ZU5vZGVbal0gPSBOT0RFX1NUQVJUIC0gdGhpcmRCeXRlTm9kZUlkeDsKICAgICAgICB9CiAgICAgICAgZm9yICh2YXIgaSA9IDB4ODE7IGkgPD0gMHhGRTsgaSsrKQogICAgICAgICAgICB0aGlyZEJ5dGVOb2RlW2ldID0gTk9ERV9TVEFSVCAtIGZvdXJ0aEJ5dGVOb2RlSWR4OwogICAgICAgIGZvciAodmFyIGkgPSAweDMwOyBpIDw9IDB4Mzk7IGkrKykKICAgICAgICAgICAgZm91cnRoQnl0ZU5vZGVbaV0gPSBHQjE4MDMwX0NPREUKICAgIH0gICAgICAgIAp9CgpEQkNTQ29kZWMucHJvdG90eXBlLmVuY29kZXIgPSBEQkNTRW5jb2RlcjsKREJDU0NvZGVjLnByb3RvdHlwZS5kZWNvZGVyID0gREJDU0RlY29kZXI7CgovLyBEZWNvZGVyIGhlbHBlcnMKREJDU0NvZGVjLnByb3RvdHlwZS5fZ2V0RGVjb2RlVHJpZU5vZGUgPSBmdW5jdGlvbihhZGRyKSB7CiAgICB2YXIgYnl0ZXMgPSBbXTsKICAgIGZvciAoOyBhZGRyID4gMDsgYWRkciA+Pj0gOCkKICAgICAgICBieXRlcy5wdXNoKGFkZHIgJiAweEZGKTsKICAgIGlmIChieXRlcy5sZW5ndGggPT0gMCkKICAgICAgICBieXRlcy5wdXNoKDApOwoKICAgIHZhciBub2RlID0gdGhpcy5kZWNvZGVUYWJsZXNbMF07CiAgICBmb3IgKHZhciBpID0gYnl0ZXMubGVuZ3RoLTE7IGkgPiAwOyBpLS0pIHsgLy8gVHJhdmVyc2Ugbm9kZXMgZGVlcGVyIGludG8gdGhlIHRyaWUuCiAgICAgICAgdmFyIHZhbCA9IG5vZGVbYnl0ZXNbaV1dOwoKICAgICAgICBpZiAodmFsID09IFVOQVNTSUdORUQpIHsgLy8gQ3JlYXRlIG5ldyBub2RlLgogICAgICAgICAgICBub2RlW2J5dGVzW2ldXSA9IE5PREVfU1RBUlQgLSB0aGlzLmRlY29kZVRhYmxlcy5sZW5ndGg7CiAgICAgICAgICAgIHRoaXMuZGVjb2RlVGFibGVzLnB1c2gobm9kZSA9IFVOQVNTSUdORURfTk9ERS5zbGljZSgwKSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHZhbCA8PSBOT0RFX1NUQVJUKSB7IC8vIEV4aXN0aW5nIG5vZGUuCiAgICAgICAgICAgIG5vZGUgPSB0aGlzLmRlY29kZVRhYmxlc1tOT0RFX1NUQVJUIC0gdmFsXTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk92ZXJ3cml0ZSBieXRlIGluICIgKyB0aGlzLmVuY29kaW5nTmFtZSArICIsIGFkZHI6ICIgKyBhZGRyLnRvU3RyaW5nKDE2KSk7CiAgICB9CiAgICByZXR1cm4gbm9kZTsKfQoKCkRCQ1NDb2RlYy5wcm90b3R5cGUuX2FkZERlY29kZUNodW5rID0gZnVuY3Rpb24oY2h1bmspIHsKICAgIC8vIEZpcnN0IGVsZW1lbnQgb2YgY2h1bmsgaXMgdGhlIGhleCBtYmNzIGNvZGUgd2hlcmUgd2Ugc3RhcnQuCiAgICB2YXIgY3VyQWRkciA9IHBhcnNlSW50KGNodW5rWzBdLCAxNik7CgogICAgLy8gQ2hvb3NlIHRoZSBkZWNvZGluZyBub2RlIHdoZXJlIHdlJ2xsIHdyaXRlIG91ciBjaGFycy4KICAgIHZhciB3cml0ZVRhYmxlID0gdGhpcy5fZ2V0RGVjb2RlVHJpZU5vZGUoY3VyQWRkcik7CiAgICBjdXJBZGRyID0gY3VyQWRkciAmIDB4RkY7CgogICAgLy8gV3JpdGUgYWxsIG90aGVyIGVsZW1lbnRzIG9mIHRoZSBjaHVuayB0byB0aGUgdGFibGUuCiAgICBmb3IgKHZhciBrID0gMTsgayA8IGNodW5rLmxlbmd0aDsgaysrKSB7CiAgICAgICAgdmFyIHBhcnQgPSBjaHVua1trXTsKICAgICAgICBpZiAodHlwZW9mIHBhcnQgPT09ICJzdHJpbmciKSB7IC8vIFN0cmluZywgd3JpdGUgYXMtaXMuCiAgICAgICAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgcGFydC5sZW5ndGg7KSB7CiAgICAgICAgICAgICAgICB2YXIgY29kZSA9IHBhcnQuY2hhckNvZGVBdChsKyspOwogICAgICAgICAgICAgICAgaWYgKDB4RDgwMCA8PSBjb2RlICYmIGNvZGUgPCAweERDMDApIHsgLy8gRGVjb2RlIHN1cnJvZ2F0ZQogICAgICAgICAgICAgICAgICAgIHZhciBjb2RlVHJhaWwgPSBwYXJ0LmNoYXJDb2RlQXQobCsrKTsKICAgICAgICAgICAgICAgICAgICBpZiAoMHhEQzAwIDw9IGNvZGVUcmFpbCAmJiBjb2RlVHJhaWwgPCAweEUwMDApCiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlVGFibGVbY3VyQWRkcisrXSA9IDB4MTAwMDAgKyAoY29kZSAtIDB4RDgwMCkgKiAweDQwMCArIChjb2RlVHJhaWwgLSAweERDMDApOwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbmNvcnJlY3Qgc3Vycm9nYXRlIHBhaXIgaW4gIiAgKyB0aGlzLmVuY29kaW5nTmFtZSArICIgYXQgY2h1bmsgIiArIGNodW5rWzBdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKDB4MEZGMCA8IGNvZGUgJiYgY29kZSA8PSAweDBGRkYpIHsgLy8gQ2hhcmFjdGVyIHNlcXVlbmNlIChvdXIgb3duIGVuY29kaW5nIHVzZWQpCiAgICAgICAgICAgICAgICAgICAgdmFyIGxlbiA9IDB4RkZGIC0gY29kZSArIDI7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNlcSA9IFtdOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG0gPSAwOyBtIDwgbGVuOyBtKyspCiAgICAgICAgICAgICAgICAgICAgICAgIHNlcS5wdXNoKHBhcnQuY2hhckNvZGVBdChsKyspKTsgLy8gU2ltcGxlIHZhcmlhdGlvbjogZG9uJ3Qgc3VwcG9ydCBzdXJyb2dhdGVzIG9yIHN1YnNlcXVlbmNlcyBpbiBzZXEuCgogICAgICAgICAgICAgICAgICAgIHdyaXRlVGFibGVbY3VyQWRkcisrXSA9IFNFUV9TVEFSVCAtIHRoaXMuZGVjb2RlVGFibGVTZXEubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZGVjb2RlVGFibGVTZXEucHVzaChzZXEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHdyaXRlVGFibGVbY3VyQWRkcisrXSA9IGNvZGU7IC8vIEJhc2ljIGNoYXIKICAgICAgICAgICAgfQogICAgICAgIH0gCiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHBhcnQgPT09ICJudW1iZXIiKSB7IC8vIEludGVnZXIsIG1lYW5pbmcgaW5jcmVhc2luZyBzZXF1ZW5jZSBzdGFydGluZyB3aXRoIHByZXYgY2hhcmFjdGVyLgogICAgICAgICAgICB2YXIgY2hhckNvZGUgPSB3cml0ZVRhYmxlW2N1ckFkZHIgLSAxXSArIDE7CiAgICAgICAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgcGFydDsgbCsrKQogICAgICAgICAgICAgICAgd3JpdGVUYWJsZVtjdXJBZGRyKytdID0gY2hhckNvZGUrKzsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkluY29ycmVjdCB0eXBlICciICsgdHlwZW9mIHBhcnQgKyAiJyBnaXZlbiBpbiAiICArIHRoaXMuZW5jb2RpbmdOYW1lICsgIiBhdCBjaHVuayAiICsgY2h1bmtbMF0pOwogICAgfQogICAgaWYgKGN1ckFkZHIgPiAweEZGKQogICAgICAgIHRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IGNodW5rIGluICIgICsgdGhpcy5lbmNvZGluZ05hbWUgKyAiIGF0IGFkZHIgIiArIGNodW5rWzBdICsgIjogdG9vIGxvbmciICsgY3VyQWRkcik7Cn0KCi8vIEVuY29kZXIgaGVscGVycwpEQkNTQ29kZWMucHJvdG90eXBlLl9nZXRFbmNvZGVCdWNrZXQgPSBmdW5jdGlvbih1Q29kZSkgewogICAgdmFyIGhpZ2ggPSB1Q29kZSA+PiA4OyAvLyBUaGlzIGNvdWxkIGJlID4gMHhGRiBiZWNhdXNlIG9mIGFzdHJhbCBjaGFyYWN0ZXJzLgogICAgaWYgKHRoaXMuZW5jb2RlVGFibGVbaGlnaF0gPT09IHVuZGVmaW5lZCkKICAgICAgICB0aGlzLmVuY29kZVRhYmxlW2hpZ2hdID0gVU5BU1NJR05FRF9OT0RFLnNsaWNlKDApOyAvLyBDcmVhdGUgYnVja2V0IG9uIGRlbWFuZC4KICAgIHJldHVybiB0aGlzLmVuY29kZVRhYmxlW2hpZ2hdOwp9CgpEQkNTQ29kZWMucHJvdG90eXBlLl9zZXRFbmNvZGVDaGFyID0gZnVuY3Rpb24odUNvZGUsIGRiY3NDb2RlKSB7CiAgICB2YXIgYnVja2V0ID0gdGhpcy5fZ2V0RW5jb2RlQnVja2V0KHVDb2RlKTsKICAgIHZhciBsb3cgPSB1Q29kZSAmIDB4RkY7CiAgICBpZiAoYnVja2V0W2xvd10gPD0gU0VRX1NUQVJUKQogICAgICAgIHRoaXMuZW5jb2RlVGFibGVTZXFbU0VRX1NUQVJULWJ1Y2tldFtsb3ddXVtERUZfQ0hBUl0gPSBkYmNzQ29kZTsgLy8gVGhlcmUncyBhbHJlYWR5IGEgc2VxdWVuY2UsIHNldCBhIHNpbmdsZS1jaGFyIHN1YnNlcXVlbmNlIG9mIGl0LgogICAgZWxzZSBpZiAoYnVja2V0W2xvd10gPT0gVU5BU1NJR05FRCkKICAgICAgICBidWNrZXRbbG93XSA9IGRiY3NDb2RlOwp9CgpEQkNTQ29kZWMucHJvdG90eXBlLl9zZXRFbmNvZGVTZXF1ZW5jZSA9IGZ1bmN0aW9uKHNlcSwgZGJjc0NvZGUpIHsKICAgIAogICAgLy8gR2V0IHRoZSByb290IG9mIGNoYXJhY3RlciB0cmVlIGFjY29yZGluZyB0byBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHNlcXVlbmNlLgogICAgdmFyIHVDb2RlID0gc2VxWzBdOwogICAgdmFyIGJ1Y2tldCA9IHRoaXMuX2dldEVuY29kZUJ1Y2tldCh1Q29kZSk7CiAgICB2YXIgbG93ID0gdUNvZGUgJiAweEZGOwoKICAgIHZhciBub2RlOwogICAgaWYgKGJ1Y2tldFtsb3ddIDw9IFNFUV9TVEFSVCkgewogICAgICAgIC8vIFRoZXJlJ3MgYWxyZWFkeSBhIHNlcXVlbmNlIHdpdGggIC0gdXNlIGl0LgogICAgICAgIG5vZGUgPSB0aGlzLmVuY29kZVRhYmxlU2VxW1NFUV9TVEFSVC1idWNrZXRbbG93XV07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAvLyBUaGVyZSB3YXMgbm8gc2VxdWVuY2Ugb2JqZWN0IC0gYWxsb2NhdGUgYSBuZXcgb25lLgogICAgICAgIG5vZGUgPSB7fTsKICAgICAgICBpZiAoYnVja2V0W2xvd10gIT09IFVOQVNTSUdORUQpIG5vZGVbREVGX0NIQVJdID0gYnVja2V0W2xvd107IC8vIElmIGEgY2hhciB3YXMgc2V0IGJlZm9yZSAtIG1ha2UgaXQgYSBzaW5nbGUtY2hhciBzdWJzZXF1ZW5jZS4KICAgICAgICBidWNrZXRbbG93XSA9IFNFUV9TVEFSVCAtIHRoaXMuZW5jb2RlVGFibGVTZXEubGVuZ3RoOwogICAgICAgIHRoaXMuZW5jb2RlVGFibGVTZXEucHVzaChub2RlKTsKICAgIH0KCiAgICAvLyBUcmF2ZXJzZSB0aGUgY2hhcmFjdGVyIHRyZWUsIGFsbG9jYXRpbmcgbmV3IG5vZGVzIGFzIG5lZWRlZC4KICAgIGZvciAodmFyIGogPSAxOyBqIDwgc2VxLmxlbmd0aC0xOyBqKyspIHsKICAgICAgICB2YXIgb2xkVmFsID0gbm9kZVt1Q29kZV07CiAgICAgICAgaWYgKHR5cGVvZiBvbGRWYWwgPT09ICdvYmplY3QnKQogICAgICAgICAgICBub2RlID0gb2xkVmFsOwogICAgICAgIGVsc2UgewogICAgICAgICAgICBub2RlID0gbm9kZVt1Q29kZV0gPSB7fQogICAgICAgICAgICBpZiAob2xkVmFsICE9PSB1bmRlZmluZWQpCiAgICAgICAgICAgICAgICBub2RlW0RFRl9DSEFSXSA9IG9sZFZhbAogICAgICAgIH0KICAgIH0KCiAgICAvLyBTZXQgdGhlIGxlYWYgdG8gZ2l2ZW4gZGJjc0NvZGUuCiAgICB1Q29kZSA9IHNlcVtzZXEubGVuZ3RoLTFdOwogICAgbm9kZVt1Q29kZV0gPSBkYmNzQ29kZTsKfQoKREJDU0NvZGVjLnByb3RvdHlwZS5fZmlsbEVuY29kZVRhYmxlID0gZnVuY3Rpb24obm9kZUlkeCwgcHJlZml4LCBza2lwRW5jb2RlQ2hhcnMpIHsKICAgIHZhciBub2RlID0gdGhpcy5kZWNvZGVUYWJsZXNbbm9kZUlkeF07CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDB4MTAwOyBpKyspIHsKICAgICAgICB2YXIgdUNvZGUgPSBub2RlW2ldOwogICAgICAgIHZhciBtYkNvZGUgPSBwcmVmaXggKyBpOwogICAgICAgIGlmIChza2lwRW5jb2RlQ2hhcnNbbWJDb2RlXSkKICAgICAgICAgICAgY29udGludWU7CgogICAgICAgIGlmICh1Q29kZSA+PSAwKQogICAgICAgICAgICB0aGlzLl9zZXRFbmNvZGVDaGFyKHVDb2RlLCBtYkNvZGUpOwogICAgICAgIGVsc2UgaWYgKHVDb2RlIDw9IE5PREVfU1RBUlQpCiAgICAgICAgICAgIHRoaXMuX2ZpbGxFbmNvZGVUYWJsZShOT0RFX1NUQVJUIC0gdUNvZGUsIG1iQ29kZSA8PCA4LCBza2lwRW5jb2RlQ2hhcnMpOwogICAgICAgIGVsc2UgaWYgKHVDb2RlIDw9IFNFUV9TVEFSVCkKICAgICAgICAgICAgdGhpcy5fc2V0RW5jb2RlU2VxdWVuY2UodGhpcy5kZWNvZGVUYWJsZVNlcVtTRVFfU1RBUlQgLSB1Q29kZV0sIG1iQ29kZSk7CiAgICB9Cn0KCgoKLy8gPT0gRW5jb2RlciA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCmZ1bmN0aW9uIERCQ1NFbmNvZGVyKG9wdGlvbnMsIGNvZGVjKSB7CiAgICAvLyBFbmNvZGVyIHN0YXRlCiAgICB0aGlzLmxlYWRTdXJyb2dhdGUgPSAtMTsKICAgIHRoaXMuc2VxT2JqID0gdW5kZWZpbmVkOwogICAgCiAgICAvLyBTdGF0aWMgZGF0YQogICAgdGhpcy5lbmNvZGVUYWJsZSA9IGNvZGVjLmVuY29kZVRhYmxlOwogICAgdGhpcy5lbmNvZGVUYWJsZVNlcSA9IGNvZGVjLmVuY29kZVRhYmxlU2VxOwogICAgdGhpcy5kZWZhdWx0Q2hhclNpbmdsZUJ5dGUgPSBjb2RlYy5kZWZDaGFyU0I7CiAgICB0aGlzLmdiMTgwMzAgPSBjb2RlYy5nYjE4MDMwOwp9CgpEQkNTRW5jb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHIpIHsKICAgIHZhciBuZXdCdWYgPSBuZXcgQnVmZmVyKHN0ci5sZW5ndGggKiAodGhpcy5nYjE4MDMwID8gNCA6IDMpKSwgCiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IHRoaXMubGVhZFN1cnJvZ2F0ZSwKICAgICAgICBzZXFPYmogPSB0aGlzLnNlcU9iaiwgbmV4dENoYXIgPSAtMSwKICAgICAgICBpID0gMCwgaiA9IDA7CgogICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAvLyAwLiBHZXQgbmV4dCBjaGFyYWN0ZXIuCiAgICAgICAgaWYgKG5leHRDaGFyID09PSAtMSkgewogICAgICAgICAgICBpZiAoaSA9PSBzdHIubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgdmFyIHVDb2RlID0gc3RyLmNoYXJDb2RlQXQoaSsrKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHZhciB1Q29kZSA9IG5leHRDaGFyOwogICAgICAgICAgICBuZXh0Q2hhciA9IC0xOyAgICAKICAgICAgICB9CgogICAgICAgIC8vIDEuIEhhbmRsZSBzdXJyb2dhdGVzLgogICAgICAgIGlmICgweEQ4MDAgPD0gdUNvZGUgJiYgdUNvZGUgPCAweEUwMDApIHsgLy8gQ2hhciBpcyBvbmUgb2Ygc3Vycm9nYXRlcy4KICAgICAgICAgICAgaWYgKHVDb2RlIDwgMHhEQzAwKSB7IC8vIFdlJ3ZlIGdvdCBsZWFkIHN1cnJvZ2F0ZS4KICAgICAgICAgICAgICAgIGlmIChsZWFkU3Vycm9nYXRlID09PSAtMSkgewogICAgICAgICAgICAgICAgICAgIGxlYWRTdXJyb2dhdGUgPSB1Q29kZTsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IHVDb2RlOwogICAgICAgICAgICAgICAgICAgIC8vIERvdWJsZSBsZWFkIHN1cnJvZ2F0ZSBmb3VuZC4KICAgICAgICAgICAgICAgICAgICB1Q29kZSA9IFVOQVNTSUdORUQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7IC8vIFdlJ3ZlIGdvdCB0cmFpbCBzdXJyb2dhdGUuCiAgICAgICAgICAgICAgICBpZiAobGVhZFN1cnJvZ2F0ZSAhPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICB1Q29kZSA9IDB4MTAwMDAgKyAobGVhZFN1cnJvZ2F0ZSAtIDB4RDgwMCkgKiAweDQwMCArICh1Q29kZSAtIDB4REMwMCk7CiAgICAgICAgICAgICAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IC0xOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBJbmNvbXBsZXRlIHN1cnJvZ2F0ZSBwYWlyIC0gb25seSB0cmFpbCBzdXJyb2dhdGUgZm91bmQuCiAgICAgICAgICAgICAgICAgICAgdUNvZGUgPSBVTkFTU0lHTkVEOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAobGVhZFN1cnJvZ2F0ZSAhPT0gLTEpIHsKICAgICAgICAgICAgLy8gSW5jb21wbGV0ZSBzdXJyb2dhdGUgcGFpciAtIG9ubHkgbGVhZCBzdXJyb2dhdGUgZm91bmQuCiAgICAgICAgICAgIG5leHRDaGFyID0gdUNvZGU7IHVDb2RlID0gVU5BU1NJR05FRDsgLy8gV3JpdGUgYW4gZXJyb3IsIHRoZW4gY3VycmVudCBjaGFyLgogICAgICAgICAgICBsZWFkU3Vycm9nYXRlID0gLTE7CiAgICAgICAgfQoKICAgICAgICAvLyAyLiBDb252ZXJ0IHVDb2RlIGNoYXJhY3Rlci4KICAgICAgICB2YXIgZGJjc0NvZGUgPSBVTkFTU0lHTkVEOwogICAgICAgIGlmIChzZXFPYmogIT09IHVuZGVmaW5lZCAmJiB1Q29kZSAhPSBVTkFTU0lHTkVEKSB7IC8vIFdlIGFyZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzZXF1ZW5jZQogICAgICAgICAgICB2YXIgcmVzQ29kZSA9IHNlcU9ialt1Q29kZV07CiAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzQ29kZSA9PT0gJ29iamVjdCcpIHsgLy8gU2VxdWVuY2UgY29udGludWVzLgogICAgICAgICAgICAgICAgc2VxT2JqID0gcmVzQ29kZTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVzQ29kZSA9PSAnbnVtYmVyJykgeyAvLyBTZXF1ZW5jZSBmaW5pc2hlZC4gV3JpdGUgaXQuCiAgICAgICAgICAgICAgICBkYmNzQ29kZSA9IHJlc0NvZGU7CgogICAgICAgICAgICB9IGVsc2UgaWYgKHJlc0NvZGUgPT0gdW5kZWZpbmVkKSB7IC8vIEN1cnJlbnQgY2hhcmFjdGVyIGlzIG5vdCBwYXJ0IG9mIHRoZSBzZXF1ZW5jZS4KCiAgICAgICAgICAgICAgICAvLyBUcnkgZGVmYXVsdCBjaGFyYWN0ZXIgZm9yIHRoaXMgc2VxdWVuY2UKICAgICAgICAgICAgICAgIHJlc0NvZGUgPSBzZXFPYmpbREVGX0NIQVJdOwogICAgICAgICAgICAgICAgaWYgKHJlc0NvZGUgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgIGRiY3NDb2RlID0gcmVzQ29kZTsgLy8gRm91bmQuIFdyaXRlIGl0LgogICAgICAgICAgICAgICAgICAgIG5leHRDaGFyID0gdUNvZGU7IC8vIEN1cnJlbnQgY2hhcmFjdGVyIHdpbGwgYmUgd3JpdHRlbiB0b28gaW4gdGhlIG5leHQgaXRlcmF0aW9uLgoKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogV2hhdCBpZiB3ZSBoYXZlIG5vIGRlZmF1bHQ/IChyZXNDb2RlID09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICAgICAgICAvLyBUaGVuLCB3ZSBzaG91bGQgd3JpdGUgZmlyc3QgY2hhciBvZiB0aGUgc2VxdWVuY2UgYXMtaXMgYW5kIHRyeSB0aGUgcmVzdCByZWN1cnNpdmVseS4KICAgICAgICAgICAgICAgICAgICAvLyBEaWRuJ3QgZG8gaXQgZm9yIG5vdyBiZWNhdXNlIG5vIGVuY29kaW5nIGhhcyB0aGlzIHNpdHVhdGlvbiB5ZXQuCiAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5LCBqdXN0IHNraXAgdGhlIHNlcXVlbmNlIGFuZCB3cml0ZSBjdXJyZW50IGNoYXIuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VxT2JqID0gdW5kZWZpbmVkOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICh1Q29kZSA+PSAwKSB7ICAvLyBSZWd1bGFyIGNoYXJhY3RlcgogICAgICAgICAgICB2YXIgc3VidGFibGUgPSB0aGlzLmVuY29kZVRhYmxlW3VDb2RlID4+IDhdOwogICAgICAgICAgICBpZiAoc3VidGFibGUgIT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICAgIGRiY3NDb2RlID0gc3VidGFibGVbdUNvZGUgJiAweEZGXTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChkYmNzQ29kZSA8PSBTRVFfU1RBUlQpIHsgLy8gU2VxdWVuY2Ugc3RhcnQKICAgICAgICAgICAgICAgIHNlcU9iaiA9IHRoaXMuZW5jb2RlVGFibGVTZXFbU0VRX1NUQVJULWRiY3NDb2RlXTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoZGJjc0NvZGUgPT0gVU5BU1NJR05FRCAmJiB0aGlzLmdiMTgwMzApIHsKICAgICAgICAgICAgICAgIC8vIFVzZSBHQjE4MDMwIGFsZ29yaXRobSB0byBmaW5kIGNoYXJhY3RlcihzKSB0byB3cml0ZS4KICAgICAgICAgICAgICAgIHZhciBpZHggPSBmaW5kSWR4KHRoaXMuZ2IxODAzMC51Q2hhcnMsIHVDb2RlKTsKICAgICAgICAgICAgICAgIGlmIChpZHggIT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZGJjc0NvZGUgPSB0aGlzLmdiMTgwMzAuZ2JDaGFyc1tpZHhdICsgKHVDb2RlIC0gdGhpcy5nYjE4MDMwLnVDaGFyc1tpZHhdKTsKICAgICAgICAgICAgICAgICAgICBuZXdCdWZbaisrXSA9IDB4ODEgKyBNYXRoLmZsb29yKGRiY3NDb2RlIC8gMTI2MDApOyBkYmNzQ29kZSA9IGRiY3NDb2RlICUgMTI2MDA7CiAgICAgICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSAweDMwICsgTWF0aC5mbG9vcihkYmNzQ29kZSAvIDEyNjApOyBkYmNzQ29kZSA9IGRiY3NDb2RlICUgMTI2MDsKICAgICAgICAgICAgICAgICAgICBuZXdCdWZbaisrXSA9IDB4ODEgKyBNYXRoLmZsb29yKGRiY3NDb2RlIC8gMTApOyBkYmNzQ29kZSA9IGRiY3NDb2RlICUgMTA7CiAgICAgICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSAweDMwICsgZGJjc0NvZGU7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIDMuIFdyaXRlIGRiY3NDb2RlIGNoYXJhY3Rlci4KICAgICAgICBpZiAoZGJjc0NvZGUgPT09IFVOQVNTSUdORUQpCiAgICAgICAgICAgIGRiY3NDb2RlID0gdGhpcy5kZWZhdWx0Q2hhclNpbmdsZUJ5dGU7CiAgICAgICAgCiAgICAgICAgaWYgKGRiY3NDb2RlIDwgMHgxMDApIHsKICAgICAgICAgICAgbmV3QnVmW2orK10gPSBkYmNzQ29kZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoZGJjc0NvZGUgPCAweDEwMDAwKSB7CiAgICAgICAgICAgIG5ld0J1ZltqKytdID0gZGJjc0NvZGUgPj4gODsgICAvLyBoaWdoIGJ5dGUKICAgICAgICAgICAgbmV3QnVmW2orK10gPSBkYmNzQ29kZSAmIDB4RkY7IC8vIGxvdyBieXRlCiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBuZXdCdWZbaisrXSA9IGRiY3NDb2RlID4+IDE2OwogICAgICAgICAgICBuZXdCdWZbaisrXSA9IChkYmNzQ29kZSA+PiA4KSAmIDB4RkY7CiAgICAgICAgICAgIG5ld0J1ZltqKytdID0gZGJjc0NvZGUgJiAweEZGOwogICAgICAgIH0KICAgIH0KCiAgICB0aGlzLnNlcU9iaiA9IHNlcU9iajsKICAgIHRoaXMubGVhZFN1cnJvZ2F0ZSA9IGxlYWRTdXJyb2dhdGU7CiAgICByZXR1cm4gbmV3QnVmLnNsaWNlKDAsIGopOwp9CgpEQkNTRW5jb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7CiAgICBpZiAodGhpcy5sZWFkU3Vycm9nYXRlID09PSAtMSAmJiB0aGlzLnNlcU9iaiA9PT0gdW5kZWZpbmVkKQogICAgICAgIHJldHVybjsgLy8gQWxsIGNsZWFuLiBNb3N0IG9mdGVuIGNhc2UuCgogICAgdmFyIG5ld0J1ZiA9IG5ldyBCdWZmZXIoMTApLCBqID0gMDsKCiAgICBpZiAodGhpcy5zZXFPYmopIHsgLy8gV2UncmUgaW4gdGhlIHNlcXVlbmNlLgogICAgICAgIHZhciBkYmNzQ29kZSA9IHRoaXMuc2VxT2JqW0RFRl9DSEFSXTsKICAgICAgICBpZiAoZGJjc0NvZGUgIT09IHVuZGVmaW5lZCkgeyAvLyBXcml0ZSBiZWdpbm5pbmcgb2YgdGhlIHNlcXVlbmNlLgogICAgICAgICAgICBpZiAoZGJjc0NvZGUgPCAweDEwMCkgewogICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSBkYmNzQ29kZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG5ld0J1ZltqKytdID0gZGJjc0NvZGUgPj4gODsgICAvLyBoaWdoIGJ5dGUKICAgICAgICAgICAgICAgIG5ld0J1ZltqKytdID0gZGJjc0NvZGUgJiAweEZGOyAvLyBsb3cgYnl0ZQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gU2VlIHRvZG8gYWJvdmUuCiAgICAgICAgfQogICAgICAgIHRoaXMuc2VxT2JqID0gdW5kZWZpbmVkOwogICAgfQoKICAgIGlmICh0aGlzLmxlYWRTdXJyb2dhdGUgIT09IC0xKSB7CiAgICAgICAgLy8gSW5jb21wbGV0ZSBzdXJyb2dhdGUgcGFpciAtIG9ubHkgbGVhZCBzdXJyb2dhdGUgZm91bmQuCiAgICAgICAgbmV3QnVmW2orK10gPSB0aGlzLmRlZmF1bHRDaGFyU2luZ2xlQnl0ZTsKICAgICAgICB0aGlzLmxlYWRTdXJyb2dhdGUgPSAtMTsKICAgIH0KICAgIAogICAgcmV0dXJuIG5ld0J1Zi5zbGljZSgwLCBqKTsKfQoKLy8gRXhwb3J0IGZvciB0ZXN0aW5nCkRCQ1NFbmNvZGVyLnByb3RvdHlwZS5maW5kSWR4ID0gZmluZElkeDsKCgovLyA9PSBEZWNvZGVyID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKZnVuY3Rpb24gREJDU0RlY29kZXIob3B0aW9ucywgY29kZWMpIHsKICAgIC8vIERlY29kZXIgc3RhdGUKICAgIHRoaXMubm9kZUlkeCA9IDA7CiAgICB0aGlzLnByZXZCdWYgPSBuZXcgQnVmZmVyKDApOwoKICAgIC8vIFN0YXRpYyBkYXRhCiAgICB0aGlzLmRlY29kZVRhYmxlcyA9IGNvZGVjLmRlY29kZVRhYmxlczsKICAgIHRoaXMuZGVjb2RlVGFibGVTZXEgPSBjb2RlYy5kZWNvZGVUYWJsZVNlcTsKICAgIHRoaXMuZGVmYXVsdENoYXJVbmljb2RlID0gY29kZWMuZGVmYXVsdENoYXJVbmljb2RlOwogICAgdGhpcy5nYjE4MDMwID0gY29kZWMuZ2IxODAzMDsKfQoKREJDU0RlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oYnVmKSB7CiAgICB2YXIgbmV3QnVmID0gbmV3IEJ1ZmZlcihidWYubGVuZ3RoKjIpLAogICAgICAgIG5vZGVJZHggPSB0aGlzLm5vZGVJZHgsIAogICAgICAgIHByZXZCdWYgPSB0aGlzLnByZXZCdWYsIHByZXZCdWZPZmZzZXQgPSB0aGlzLnByZXZCdWYubGVuZ3RoLAogICAgICAgIHNlcVN0YXJ0ID0gLXRoaXMucHJldkJ1Zi5sZW5ndGgsIC8vIGlkeCBvZiB0aGUgc3RhcnQgb2YgY3VycmVudCBwYXJzZWQgc2VxdWVuY2UuCiAgICAgICAgdUNvZGU7CgogICAgaWYgKHByZXZCdWZPZmZzZXQgPiAwKSAvLyBNYWtlIHByZXYgYnVmIG92ZXJsYXAgYSBsaXR0bGUgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc2xpY2UgbGF0ZXIuCiAgICAgICAgcHJldkJ1ZiA9IEJ1ZmZlci5jb25jYXQoW3ByZXZCdWYsIGJ1Zi5zbGljZSgwLCAxMCldKTsKICAgIAogICAgZm9yICh2YXIgaSA9IDAsIGogPSAwOyBpIDwgYnVmLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGN1ckJ5dGUgPSAoaSA+PSAwKSA/IGJ1ZltpXSA6IHByZXZCdWZbaSArIHByZXZCdWZPZmZzZXRdOwoKICAgICAgICAvLyBMb29rdXAgaW4gY3VycmVudCB0cmllIG5vZGUuCiAgICAgICAgdmFyIHVDb2RlID0gdGhpcy5kZWNvZGVUYWJsZXNbbm9kZUlkeF1bY3VyQnl0ZV07CgogICAgICAgIGlmICh1Q29kZSA+PSAwKSB7IAogICAgICAgICAgICAvLyBOb3JtYWwgY2hhcmFjdGVyLCBqdXN0IHVzZSBpdC4KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAodUNvZGUgPT09IFVOQVNTSUdORUQpIHsgLy8gVW5rbm93biBjaGFyLgogICAgICAgICAgICAvLyBUT0RPOiBDYWxsYmFjayB3aXRoIHNlcS4KICAgICAgICAgICAgLy92YXIgY3VyU2VxID0gKHNlcVN0YXJ0ID49IDApID8gYnVmLnNsaWNlKHNlcVN0YXJ0LCBpKzEpIDogcHJldkJ1Zi5zbGljZShzZXFTdGFydCArIHByZXZCdWZPZmZzZXQsIGkrMSArIHByZXZCdWZPZmZzZXQpOwogICAgICAgICAgICBpID0gc2VxU3RhcnQ7IC8vIFRyeSB0byBwYXJzZSBhZ2FpbiwgYWZ0ZXIgc2tpcHBpbmcgZmlyc3QgYnl0ZSBvZiB0aGUgc2VxdWVuY2UgKCdpJyB3aWxsIGJlIGluY3JlbWVudGVkIGJ5ICdmb3InIGN5Y2xlKS4KICAgICAgICAgICAgdUNvZGUgPSB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZS5jaGFyQ29kZUF0KDApOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICh1Q29kZSA9PT0gR0IxODAzMF9DT0RFKSB7CiAgICAgICAgICAgIHZhciBjdXJTZXEgPSAoc2VxU3RhcnQgPj0gMCkgPyBidWYuc2xpY2Uoc2VxU3RhcnQsIGkrMSkgOiBwcmV2QnVmLnNsaWNlKHNlcVN0YXJ0ICsgcHJldkJ1Zk9mZnNldCwgaSsxICsgcHJldkJ1Zk9mZnNldCk7CiAgICAgICAgICAgIHZhciBwdHIgPSAoY3VyU2VxWzBdLTB4ODEpKjEyNjAwICsgKGN1clNlcVsxXS0weDMwKSoxMjYwICsgKGN1clNlcVsyXS0weDgxKSoxMCArIChjdXJTZXFbM10tMHgzMCk7CiAgICAgICAgICAgIHZhciBpZHggPSBmaW5kSWR4KHRoaXMuZ2IxODAzMC5nYkNoYXJzLCBwdHIpOwogICAgICAgICAgICB1Q29kZSA9IHRoaXMuZ2IxODAzMC51Q2hhcnNbaWR4XSArIHB0ciAtIHRoaXMuZ2IxODAzMC5nYkNoYXJzW2lkeF07CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHVDb2RlIDw9IE5PREVfU1RBUlQpIHsgLy8gR28gdG8gbmV4dCB0cmllIG5vZGUuCiAgICAgICAgICAgIG5vZGVJZHggPSBOT0RFX1NUQVJUIC0gdUNvZGU7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICh1Q29kZSA8PSBTRVFfU1RBUlQpIHsgLy8gT3V0cHV0IGEgc2VxdWVuY2Ugb2YgY2hhcnMuCiAgICAgICAgICAgIHZhciBzZXEgPSB0aGlzLmRlY29kZVRhYmxlU2VxW1NFUV9TVEFSVCAtIHVDb2RlXTsKICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBzZXEubGVuZ3RoIC0gMTsgaysrKSB7CiAgICAgICAgICAgICAgICB1Q29kZSA9IHNlcVtrXTsKICAgICAgICAgICAgICAgIG5ld0J1ZltqKytdID0gdUNvZGUgJiAweEZGOwogICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSB1Q29kZSA+PiA4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHVDb2RlID0gc2VxW3NlcS5sZW5ndGgtMV07CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJpY29udi1saXRlIGludGVybmFsIGVycm9yOiBpbnZhbGlkIGRlY29kaW5nIHRhYmxlIHZhbHVlICIgKyB1Q29kZSArICIgYXQgIiArIG5vZGVJZHggKyAiLyIgKyBjdXJCeXRlKTsKCiAgICAgICAgLy8gV3JpdGUgdGhlIGNoYXJhY3RlciB0byBidWZmZXIsIGhhbmRsaW5nIGhpZ2hlciBwbGFuZXMgdXNpbmcgc3Vycm9nYXRlIHBhaXIuCiAgICAgICAgaWYgKHVDb2RlID4gMHhGRkZGKSB7IAogICAgICAgICAgICB1Q29kZSAtPSAweDEwMDAwOwogICAgICAgICAgICB2YXIgdUNvZGVMZWFkID0gMHhEODAwICsgTWF0aC5mbG9vcih1Q29kZSAvIDB4NDAwKTsKICAgICAgICAgICAgbmV3QnVmW2orK10gPSB1Q29kZUxlYWQgJiAweEZGOwogICAgICAgICAgICBuZXdCdWZbaisrXSA9IHVDb2RlTGVhZCA+PiA4OwoKICAgICAgICAgICAgdUNvZGUgPSAweERDMDAgKyB1Q29kZSAlIDB4NDAwOwogICAgICAgIH0KICAgICAgICBuZXdCdWZbaisrXSA9IHVDb2RlICYgMHhGRjsKICAgICAgICBuZXdCdWZbaisrXSA9IHVDb2RlID4+IDg7CgogICAgICAgIC8vIFJlc2V0IHRyaWUgbm9kZS4KICAgICAgICBub2RlSWR4ID0gMDsgc2VxU3RhcnQgPSBpKzE7CiAgICB9CgogICAgdGhpcy5ub2RlSWR4ID0gbm9kZUlkeDsKICAgIHRoaXMucHJldkJ1ZiA9IChzZXFTdGFydCA+PSAwKSA/IGJ1Zi5zbGljZShzZXFTdGFydCkgOiBwcmV2QnVmLnNsaWNlKHNlcVN0YXJ0ICsgcHJldkJ1Zk9mZnNldCk7CiAgICByZXR1cm4gbmV3QnVmLnNsaWNlKDAsIGopLnRvU3RyaW5nKCd1Y3MyJyk7Cn0KCkRCQ1NEZWNvZGVyLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHsKICAgIHZhciByZXQgPSAnJzsKCiAgICAvLyBUcnkgdG8gcGFyc2UgYWxsIHJlbWFpbmluZyBjaGFycy4KICAgIHdoaWxlICh0aGlzLnByZXZCdWYubGVuZ3RoID4gMCkgewogICAgICAgIC8vIFNraXAgMSBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlci4KICAgICAgICByZXQgKz0gdGhpcy5kZWZhdWx0Q2hhclVuaWNvZGU7CiAgICAgICAgdmFyIGJ1ZiA9IHRoaXMucHJldkJ1Zi5zbGljZSgxKTsKCiAgICAgICAgLy8gUGFyc2UgcmVtYWluaW5nIGFzIHVzdWFsLgogICAgICAgIHRoaXMucHJldkJ1ZiA9IG5ldyBCdWZmZXIoMCk7CiAgICAgICAgdGhpcy5ub2RlSWR4ID0gMDsKICAgICAgICBpZiAoYnVmLmxlbmd0aCA+IDApCiAgICAgICAgICAgIHJldCArPSB0aGlzLndyaXRlKGJ1Zik7CiAgICB9CgogICAgdGhpcy5ub2RlSWR4ID0gMDsKICAgIHJldHVybiByZXQ7Cn0KCi8vIEJpbmFyeSBzZWFyY2ggZm9yIEdCMTgwMzAuIFJldHVybnMgbGFyZ2VzdCBpIHN1Y2ggdGhhdCB0YWJsZVtpXSA8PSB2YWwuCmZ1bmN0aW9uIGZpbmRJZHgodGFibGUsIHZhbCkgewogICAgaWYgKHRhYmxlWzBdID4gdmFsKQogICAgICAgIHJldHVybiAtMTsKCiAgICB2YXIgbCA9IDAsIHIgPSB0YWJsZS5sZW5ndGg7CiAgICB3aGlsZSAobCA8IHItMSkgeyAvLyBhbHdheXMgdGFibGVbbF0gPD0gdmFsIDwgdGFibGVbcl0KICAgICAgICB2YXIgbWlkID0gbCArIE1hdGguZmxvb3IoKHItbCsxKS8yKTsKICAgICAgICBpZiAodGFibGVbbWlkXSA8PSB2YWwpCiAgICAgICAgICAgIGwgPSBtaWQ7CiAgICAgICAgZWxzZQogICAgICAgICAgICByID0gbWlkOwogICAgfQogICAgcmV0dXJuIGw7Cn0KCgoKLyoqKi8gfSksCi8qIDE3OSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKLy8gRGVzY3JpcHRpb24gb2Ygc3VwcG9ydGVkIGRvdWJsZSBieXRlIGVuY29kaW5ncyBhbmQgYWxpYXNlcy4KLy8gVGFibGVzIGFyZSBub3QgcmVxdWlyZSgpLWQgdW50aWwgdGhleSBhcmUgbmVlZGVkIHRvIHNwZWVkIHVwIGxpYnJhcnkgbG9hZC4KLy8gcmVxdWlyZSgpLXMgYXJlIGRpcmVjdCB0byBzdXBwb3J0IEJyb3dzZXJpZnkuCgptb2R1bGUuZXhwb3J0cyA9IHsKICAgIAogICAgLy8gPT0gSmFwYW5lc2UvU2hpZnRKSVMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgLy8gQWxsIGphcGFuZXNlIGVuY29kaW5ncyBhcmUgYmFzZWQgb24gSklTIFggc2V0IG9mIHN0YW5kYXJkczoKICAgIC8vIEpJUyBYIDAyMDEgLSBTaW5nbGUtYnl0ZSBlbmNvZGluZyBvZiBBU0NJSSArIMKlICsgS2FuYSBjaGFycyBhdCAweEExLTB4REYuCiAgICAvLyBKSVMgWCAwMjA4IC0gTWFpbiBzZXQgb2YgNjg3OSBjaGFyYWN0ZXJzLCBwbGFjZWQgaW4gOTR4OTQgcGxhbmUsIHRvIGJlIGVuY29kZWQgYnkgMiBieXRlcy4gCiAgICAvLyAgICAgICAgICAgICAgSGFzIHNldmVyYWwgdmFyaWF0aW9ucyBpbiAxOTc4LCAxOTgzLCAxOTkwIGFuZCAxOTk3LgogICAgLy8gSklTIFggMDIxMiAtIFN1cHBsZW1lbnRhcnkgcGxhbmUgb2YgNjA2NyBjaGFycyBpbiA5NHg5NCBwbGFuZS4gMTk5MC4gRWZmZWN0aXZlbHkgZGVhZC4KICAgIC8vIEpJUyBYIDAyMTMgLSBFeHRlbnNpb24gYW5kIG1vZGVybiByZXBsYWNlbWVudCBvZiAwMjA4IGFuZCAwMjEyLiBUb3RhbCBjaGFyczogMTEyMzMuCiAgICAvLyAgICAgICAgICAgICAgMiBwbGFuZXMsIGZpcnN0IGlzIHN1cGVyc2V0IG9mIDAyMDgsIHNlY29uZCAtIHJldmlzZWQgMDIxMi4KICAgIC8vICAgICAgICAgICAgICBJbnRyb2R1Y2VkIGluIDIwMDAsIHJldmlzZWQgMjAwNC4gU29tZSBjaGFyYWN0ZXJzIGFyZSBpbiBVbmljb2RlIFBsYW5lIDIgKDB4Mnh4eHgpCgogICAgLy8gQnl0ZSBlbmNvZGluZ3MgYXJlOgogICAgLy8gICogU2hpZnRfSklTOiBDb21wYXRpYmxlIHdpdGggMDIwMSwgdXNlcyBub3QgZGVmaW5lZCBjaGFycyBpbiB0b3AgaGFsZiBhcyBsZWFkIGJ5dGVzIGZvciBkb3VibGUtYnl0ZQogICAgLy8gICAgICAgICAgICAgICBlbmNvZGluZyBvZiAwMjA4LiBMZWFkIGJ5dGUgcmFuZ2VzOiAweDgxLTB4OUYsIDB4RTAtMHhFRjsgVHJhaWwgYnl0ZSByYW5nZXM6IDB4NDAtMHg3RSwgMHg4MC0weDlFLCAweDlGLTB4RkMuCiAgICAvLyAgICAgICAgICAgICAgIFdpbmRvd3MgQ1A5MzIgaXMgYSBzdXBlcnNldCBvZiBTaGlmdF9KSVMuIFNvbWUgY29tcGFuaWVzIGFkZGVkIG1vcmUgY2hhcnMsIG5vdGFibHkgS0RESS4KICAgIC8vICAqIEVVQy1KUDogICAgVXAgdG8gMyBieXRlcyBwZXIgY2hhcmFjdGVyLiBVc2VkIG1vc3RseSBvbiAqbml4ZXMuCiAgICAvLyAgICAgICAgICAgICAgIDB4MDAtMHg3RiAgICAgICAtIGxvd2VyIHBhcnQgb2YgMDIwMQogICAgLy8gICAgICAgICAgICAgICAweDhFLCAweEExLTB4REYgLSB1cHBlciBwYXJ0IG9mIDAyMDEKICAgIC8vICAgICAgICAgICAgICAgKDB4QTEtMHhGRSl4MiAgIC0gMDIwOCBwbGFuZSAoOTR4OTQpLgogICAgLy8gICAgICAgICAgICAgICAweDhGLCAoMHhBMS0weEZFKXgyIC0gMDIxMiBwbGFuZSAoOTR4OTQpLgogICAgLy8gICogSklTIFggMjA4OiA3LWJpdCwgZGlyZWN0IGVuY29kaW5nIG9mIDAyMDguIEJ5dGUgcmFuZ2VzOiAweDIxLTB4N0UgKDk0IHZhbHVlcykuIFVuY29tbW9uLgogICAgLy8gICAgICAgICAgICAgICBVc2VkIGFzLWlzIGluIElTTzIwMjIgZmFtaWx5LgogICAgLy8gICogSVNPMjAyMi1KUDogU3RhdGVmdWwgZW5jb2RpbmcsIHdpdGggZXNjYXBlIHNlcXVlbmNlcyB0byBzd2l0Y2ggYmV0d2VlbiBBU0NJSSwgCiAgICAvLyAgICAgICAgICAgICAgICAwMjAxLTE5NzYgUm9tYW4sIDAyMDgtMTk3OCwgMDIwOC0xOTgzLgogICAgLy8gICogSVNPMjAyMi1KUC0xOiBBZGRzIGVzYyBzZXEgZm9yIDAyMTItMTk5MC4KICAgIC8vICAqIElTTzIwMjItSlAtMjogQWRkcyBlc2Mgc2VxIGZvciBHQjIzMTMtMTk4MCwgS1NYMTAwMS0xOTkyLCBJU084ODU5LTEsIElTTzg4NTktNy4KICAgIC8vICAqIElTTzIwMjItSlAtMzogQWRkcyBlc2Mgc2VxIGZvciAwMjAxLTE5NzYgS2FuYSBzZXQsIDAyMTMtMjAwMCBQbGFuZXMgMSwgMi4KICAgIC8vICAqIElTTzIwMjItSlAtMjAwNDogQWRkcyAwMjEzLTIwMDQgUGxhbmUgMS4KICAgIC8vCiAgICAvLyBBZnRlciBKSVMgWCAwMjEzIGFwcGVhcmVkLCBTaGlmdF9KSVMtMjAwNCwgRVVDLUpJU1gwMjEzIGFuZCBJU08yMDIyLUpQLTIwMDQgZm9sbG93ZWQsIHdpdGgganVzdCBjaGFuZ2luZyB0aGUgcGxhbmVzLgogICAgLy8KICAgIC8vIE92ZXJhbGwsIGl0IHNlZW1zIHRoYXQgaXQncyBhIG1lc3MgOiggaHR0cDovL3d3dzgucGxhbGEub3IuanAvdGt1Ym90YTEvdW5pY29kZS1zeW1ib2xzLW1hcDIuaHRtbAoKICAgICdzaGlmdGppcyc6IHsKICAgICAgICB0eXBlOiAnX2RiY3MnLAogICAgICAgIHRhYmxlOiBmdW5jdGlvbigpIHsgcmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oMTgwKSB9LAogICAgICAgIGVuY29kZUFkZDogeydcdTAwYTUnOiAweDVDLCAnXHUyMDNFJzogMHg3RX0sCiAgICAgICAgZW5jb2RlU2tpcFZhbHM6IFt7ZnJvbTogMHhFRDQwLCB0bzogMHhGOTQwfV0sCiAgICB9LAogICAgJ2Nzc2hpZnRqaXMnOiAnc2hpZnRqaXMnLAogICAgJ21za2FuamknOiAnc2hpZnRqaXMnLAogICAgJ3NqaXMnOiAnc2hpZnRqaXMnLAogICAgJ3dpbmRvd3MzMWonOiAnc2hpZnRqaXMnLAogICAgJ21zMzFqJzogJ3NoaWZ0amlzJywKICAgICd4c2ppcyc6ICdzaGlmdGppcycsCiAgICAnd2luZG93czkzMic6ICdzaGlmdGppcycsCiAgICAnbXM5MzInOiAnc2hpZnRqaXMnLAogICAgJzkzMic6ICdzaGlmdGppcycsCiAgICAnY3A5MzInOiAnc2hpZnRqaXMnLAoKICAgICdldWNqcCc6IHsKICAgICAgICB0eXBlOiAnX2RiY3MnLAogICAgICAgIHRhYmxlOiBmdW5jdGlvbigpIHsgcmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oMTgxKSB9LAogICAgICAgIGVuY29kZUFkZDogeydcdTAwYTUnOiAweDVDLCAnXHUyMDNFJzogMHg3RX0sCiAgICB9LAoKICAgIC8vIFRPRE86IEtEREkgZXh0ZW5zaW9uIHRvIFNoaWZ0X0pJUwogICAgLy8gVE9ETzogSUJNIENDU0lEIDk0MiA9IENQOTMyLCBidXQgRjAtRjkgY3VzdG9tIGNoYXJzIGFuZCBvdGhlciBjaGFyIGNoYW5nZXMuCiAgICAvLyBUT0RPOiBJQk0gQ0NTSUQgOTQzID0gU2hpZnRfSklTID0gQ1A5MzIgd2l0aCBvcmlnaW5hbCBTaGlmdF9KSVMgbG93ZXIgMTI4IGNoYXJzLgoKCiAgICAvLyA9PSBDaGluZXNlL0dCSyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dCSwogICAgLy8gV2UgbW9zdGx5IGltcGxlbWVudCBXM0MgcmVjb21tZW5kYXRpb246IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9lbmNvZGluZy8jZ2JrLWVuY29kZXIKCiAgICAvLyBPbGRlc3QgR0IyMzEyICgxOTgxLCB+NzYwMCBjaGFycykgaXMgYSBzdWJzZXQgb2YgQ1A5MzYKICAgICdnYjIzMTInOiAnY3A5MzYnLAogICAgJ2diMjMxMjgwJzogJ2NwOTM2JywKICAgICdnYjIzMTIxOTgwJzogJ2NwOTM2JywKICAgICdjc2diMjMxMic6ICdjcDkzNicsCiAgICAnY3Npc281OGdiMjMxMjgwJzogJ2NwOTM2JywKICAgICdldWNjbic6ICdjcDkzNicsCgogICAgLy8gTWljcm9zb2Z0J3MgQ1A5MzYgaXMgYSBzdWJzZXQgYW5kIGFwcHJveGltYXRpb24gb2YgR0JLLgogICAgJ3dpbmRvd3M5MzYnOiAnY3A5MzYnLAogICAgJ21zOTM2JzogJ2NwOTM2JywKICAgICc5MzYnOiAnY3A5MzYnLAogICAgJ2NwOTM2JzogewogICAgICAgIHR5cGU6ICdfZGJjcycsCiAgICAgICAgdGFibGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyg1MykgfSwKICAgIH0sCgogICAgLy8gR0JLICh+MjIwMDAgY2hhcnMpIGlzIGFuIGV4dGVuc2lvbiBvZiBDUDkzNiB0aGF0IGFkZGVkIHVzZXItbWFwcGVkIGNoYXJzIGFuZCBzb21lIG90aGVyLgogICAgJ2diayc6IHsKICAgICAgICB0eXBlOiAnX2RiY3MnLAogICAgICAgIHRhYmxlOiBmdW5jdGlvbigpIHsgcmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oNTMpLmNvbmNhdChfX3dlYnBhY2tfcmVxdWlyZV9fKDkxKSkgfSwKICAgIH0sCiAgICAneGdiayc6ICdnYmsnLAogICAgJ2lzb2lyNTgnOiAnZ2JrJywKCiAgICAvLyBHQjE4MDMwIGlzIGFuIGFsZ29yaXRobWljIGV4dGVuc2lvbiBvZiBHQksuCiAgICAvLyBNYWluIHNvdXJjZTogaHR0cHM6Ly93d3cudzMub3JnL1RSL2VuY29kaW5nLyNnYmstZW5jb2RlcgogICAgLy8gaHR0cDovL2ljdS1wcm9qZWN0Lm9yZy9kb2NzL3BhcGVycy9nYjE4MDMwLmh0bWwKICAgIC8vIGh0dHA6Ly9zb3VyY2UuaWN1LXByb2plY3Qub3JnL3JlcG9zL2ljdS9kYXRhL3RydW5rL2NoYXJzZXQvZGF0YS94bWwvZ2ItMTgwMzAtMjAwMC54bWwKICAgIC8vIGh0dHA6Ly93d3cua2huZ2FpLmNvbS9jaGluZXNlL2NoYXJtYXAvdGJsZ2JrLnBocD9wYWdlPTAKICAgICdnYjE4MDMwJzogewogICAgICAgIHR5cGU6ICdfZGJjcycsCiAgICAgICAgdGFibGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyg1MykuY29uY2F0KF9fd2VicGFja19yZXF1aXJlX18oOTEpKSB9LAogICAgICAgIGdiMTgwMzA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygxODIpIH0sCiAgICAgICAgZW5jb2RlU2tpcFZhbHM6IFsweDgwXSwKICAgICAgICBlbmNvZGVBZGQ6IHsn4oKsJzogMHhBMkUzfSwKICAgIH0sCgogICAgJ2NoaW5lc2UnOiAnZ2IxODAzMCcsCgoKICAgIC8vID09IEtvcmVhbiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIC8vIEVVQy1LUiwgS1NfQ181NjAxIGFuZCBLUyBYIDEwMDEgYXJlIGV4YWN0bHkgdGhlIHNhbWUuCiAgICAnd2luZG93czk0OSc6ICdjcDk0OScsCiAgICAnbXM5NDknOiAnY3A5NDknLAogICAgJzk0OSc6ICdjcDk0OScsCiAgICAnY3A5NDknOiB7CiAgICAgICAgdHlwZTogJ19kYmNzJywKICAgICAgICB0YWJsZTogZnVuY3Rpb24oKSB7IHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4MykgfSwKICAgIH0sCgogICAgJ2NzZXVja3InOiAnY3A5NDknLAogICAgJ2Nza3NjNTYwMTE5ODcnOiAnY3A5NDknLAogICAgJ2V1Y2tyJzogJ2NwOTQ5JywKICAgICdpc29pcjE0OSc6ICdjcDk0OScsCiAgICAna29yZWFuJzogJ2NwOTQ5JywKICAgICdrc2M1NjAxMTk4Nyc6ICdjcDk0OScsCiAgICAna3NjNTYwMTE5ODknOiAnY3A5NDknLAogICAgJ2tzYzU2MDEnOiAnY3A5NDknLAoKCiAgICAvLyA9PSBCaWc1L1RhaXdhbi9Ib25nIEtvbmcgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAvLyBUaGVyZSBhcmUgbG90cyBvZiB0YWJsZXMgZm9yIEJpZzUgYW5kIGNwOTUwLiBQbGVhc2Ugc2VlIHRoZSBmb2xsb3dpbmcgbGlua3MgZm9yIGhpc3Rvcnk6CiAgICAvLyBodHRwOi8vbW96dHcub3JnL2RvY3MvYmlnNS8gIGh0dHA6Ly93d3cuaGFpYmxlLmRlL2JydW5vL2NoYXJzZXRzL2NvbnZlcnNpb24tdGFibGVzL0JpZzUuaHRtbAogICAgLy8gVmFyaWF0aW9ucywgaW4gcm91Z2hseSBudW1iZXIgb2YgZGVmaW5lZCBjaGFyczoKICAgIC8vICAqIFdpbmRvd3MgQ1AgOTUwOiBNaWNyb3NvZnQgdmFyaWFudCBvZiBCaWc1LiBDYW5vbmljYWw6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL1ZFTkRPUlMvTUlDU0ZUL1dJTkRPV1MvQ1A5NTAuVFhUCiAgICAvLyAgKiBXaW5kb3dzIENQIDk1MTogTWljcm9zb2Z0IHZhcmlhbnQgb2YgQmlnNS1IS1NDUy0yMDAxLiBTZWVtcyB0byBiZSBuZXZlciBwdWJsaWMuIGh0dHA6Ly9tZS5hYmVsY2hldW5nLm9yZy9hcnRpY2xlcy9yZXNlYXJjaC93aGF0LWlzLWNwOTUxLwogICAgLy8gICogQmlnNS0yMDAzIChUYWl3YW4gc3RhbmRhcmQpIGFsbW9zdCBzdXBlcnNldCBvZiBjcDk1MC4KICAgIC8vICAqIFVuaWNvZGUtYXQtb24gKFVBTykgLyBNb3ppbGxhIDEuOC4gRmFsbGluZyBvdXQgb2YgdXNlIG9uIHRoZSBXZWIuIE5vdCBzdXBwb3J0ZWQgYnkgb3RoZXIgYnJvd3NlcnMuCiAgICAvLyAgKiBCaWc1LUhLU0NTICgtMjAwMSwgLTIwMDQsIC0yMDA4KS4gSG9uZyBLb25nIHN0YW5kYXJkLiAKICAgIC8vICAgIG1hbnkgdW5pY29kZSBjb2RlIHBvaW50cyBtb3ZlZCBmcm9tIFBVQSB0byBTdXBwbGVtZW50YXJ5IHBsYW5lIChVKzJYWFhYKSBvdmVyIHRoZSB5ZWFycy4KICAgIC8vICAgIFBsdXMsIGl0IGhhcyA0IGNvbWJpbmluZyBzZXF1ZW5jZXMuCiAgICAvLyAgICBTZWVtcyB0aGF0IE1vemlsbGEgcmVmdXNlZCB0byBzdXBwb3J0IGl0IGZvciAxMCB5cnMuIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjQzMSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTAyOTkKICAgIC8vICAgIGJlY2F1c2UgYmlnNS1oa3NjcyBpcyB0aGUgb25seSBlbmNvZGluZyB0byBpbmNsdWRlIGFzdHJhbCBjaGFyYWN0ZXJzIGluIG5vbi1hbGdvcml0aG1pYyB3YXkuCiAgICAvLyAgICBJbXBsZW1lbnRhdGlvbnMgYXJlIG5vdCBjb25zaXN0ZW50IHdpdGhpbiBicm93c2Vyczsgc29tZXRpbWVzIGxhYmVsZWQgYXMganVzdCBiaWc1LgogICAgLy8gICAgTVMgSW50ZXJuZXQgRXhwbG9yZXIgc3dpdGNoZXMgZnJvbSBiaWc1IHRvIGJpZzUtaGtzY3Mgd2hlbiBhIHBhdGNoIGFwcGxpZWQuCiAgICAvLyAgICBHcmVhdCBkaXNjdXNzaW9uICYgcmVjYXAgb2Ygd2hhdCdzIGdvaW5nIG9uIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjQ3MCNjMzEKICAgIC8vICAgIEluIHRoZSBlbmNvZGVyLCBpdCBtaWdodCBtYWtlIHNlbnNlIHRvIHN1cHBvcnQgZW5jb2Rpbmcgb2xkIFBVQSBtYXBwaW5ncyB0byBCaWc1IGJ5dGVzIHNlcS1zLgogICAgLy8gICAgT2ZmaWNpYWwgc3BlYzogaHR0cDovL3d3dy5vZ2Npby5nb3YuaGsvZW4vYnVzaW5lc3MvdGVjaF9wcm9tb3Rpb24vY2NsaS90ZXJtcy9kb2MvMjAwM2NtcF8yMDA4LnR4dAogICAgLy8gICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5vZ2Npby5nb3YuaGsvdGMvYnVzaW5lc3MvdGVjaF9wcm9tb3Rpb24vY2NsaS90ZXJtcy9kb2MvaGtzY3MtMjAwOC1iaWc1LWlzby50eHQKICAgIC8vIAogICAgLy8gQ3VycmVudCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0byBkZWFsIHdpdGggQmlnNSgtSEtTQ1MpIGlzIGluIHRoZSBFbmNvZGluZyBTdGFuZGFyZCwgaHR0cDovL2VuY29kaW5nLnNwZWMud2hhdHdnLm9yZy8jYmlnNS1lbmNvZGVyCiAgICAvLyBVbmljb2RlIG1hcHBpbmcgKGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL09CU09MRVRFL0VBU1RBU0lBL09USEVSL0JJRzUuVFhUKSBpcyBzYWlkIHRvIGJlIHdyb25nLgoKICAgICd3aW5kb3dzOTUwJzogJ2NwOTUwJywKICAgICdtczk1MCc6ICdjcDk1MCcsCiAgICAnOTUwJzogJ2NwOTUwJywKICAgICdjcDk1MCc6IHsKICAgICAgICB0eXBlOiAnX2RiY3MnLAogICAgICAgIHRhYmxlOiBmdW5jdGlvbigpIHsgcmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oOTIpIH0sCiAgICB9LAoKICAgIC8vIEJpZzUgaGFzIG1hbnkgdmFyaWF0aW9ucyBhbmQgaXMgYW4gZXh0ZW5zaW9uIG9mIGNwOTUwLiBXZSB1c2UgRW5jb2RpbmcgU3RhbmRhcmQncyBhcyBhIGNvbnNlbnN1cy4KICAgICdiaWc1JzogJ2JpZzVoa3NjcycsCiAgICAnYmlnNWhrc2NzJzogewogICAgICAgIHR5cGU6ICdfZGJjcycsCiAgICAgICAgdGFibGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyg5MikuY29uY2F0KF9fd2VicGFja19yZXF1aXJlX18oMTg0KSkgfSwKICAgICAgICBlbmNvZGVTa2lwVmFsczogWzB4YTJjY10sCiAgICB9LAoKICAgICdjbmJpZzUnOiAnYmlnNWhrc2NzJywKICAgICdjc2JpZzUnOiAnYmlnNWhrc2NzJywKICAgICd4eGJpZzUnOiAnYmlnNWhrc2NzJywKfTsKCgovKioqLyB9KSwKLyogMTgwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCm1vZHVsZS5leHBvcnRzID0gW1siMCIsIlx1MDAwMCIsMTI4XSxbImExIiwi772hIiw2Ml0sWyI4MTQwIiwi44CA44CB44CC77yM77yO44O777ya77yb77yf77yB44Kb44KcwrTvvYDCqO+8vu+/o++8v+ODveODvuOCneOCnuOAg+S7neOAheOAhuOAh+ODvOKAleKAkO+8j++8vO+9nuKIpe+9nOKApuKApeKAmOKAmeKAnOKAne+8iO+8ieOAlOOAle+8u++8ve+9m++9neOAiCIsOSwi77yL77yNwrHDlyJdLFsiODE4MCIsIsO377yd4omg77yc77ye4omm4omn4oie4oi04pmC4pmAwrDigLLigLPihIPvv6XvvITvv6Dvv6HvvIXvvIPvvIbvvIrvvKDCp+KYhuKYheKXi+KXj+KXjuKXh+KXhuKWoeKWoOKWs+KWsuKWveKWvOKAu+OAkuKGkuKGkOKGkeKGk+OAkyJdLFsiODFiOCIsIuKIiOKIi+KKhuKKh+KKguKKg+KIquKIqSJdLFsiODFjOCIsIuKIp+KIqO+/ouKHkuKHlOKIgOKIgyJdLFsiODFkYSIsIuKIoOKKpeKMkuKIguKIh+KJoeKJkuKJquKJq+KImuKIveKIneKIteKIq+KIrCJdLFsiODFmMCIsIuKEq+KAsOKZr+KZreKZquKAoOKAocK2Il0sWyI4MWZjIiwi4pevIl0sWyI4MjRmIiwi77yQIiw5XSxbIjgyNjAiLCLvvKEiLDI1XSxbIjgyODEiLCLvvYEiLDI1XSxbIjgyOWYiLCLjgYEiLDgyXSxbIjgzNDAiLCLjgqEiLDYyXSxbIjgzODAiLCLjg6AiLDIyXSxbIjgzOWYiLCLOkSIsMTYsIs6jIiw2XSxbIjgzYmYiLCLOsSIsMTYsIs+DIiw2XSxbIjg0NDAiLCLQkCIsNSwi0IHQliIsMjVdLFsiODQ3MCIsItCwIiw1LCLRkdC2Iiw3XSxbIjg0ODAiLCLQviIsMTddLFsiODQ5ZiIsIuKUgOKUguKUjOKUkOKUmOKUlOKUnOKUrOKUpOKUtOKUvOKUgeKUg+KUj+KUk+KUm+KUl+KUo+KUs+KUq+KUu+KVi+KUoOKUr+KUqOKUt+KUv+KUneKUsOKUpeKUuOKVgiJdLFsiODc0MCIsIuKRoCIsMTksIuKFoCIsOV0sWyI4NzVmIiwi442J44yU44yi442N44yY44yn44yD44y2442R442X44yN44ym44yj44yr442K44y7446c446d446e446O446P44+E446hIl0sWyI4NzdlIiwi4427Il0sWyI4NzgwIiwi44Cd44Cf4oSW44+N4oSh44qkIiw0LCLjiLHjiLLjiLnjjb7jjb3jjbziiZLiiaHiiKviiK7iiJHiiJriiqXiiKDiiJ/iir/iiLXiiKniiKoiXSxbIjg4OWYiLCLkupzllJblqIPpmL/lk4DmhJvmjKjlp7bpgKLokbXojJznqZDmgqrmj6HmuKXml63okaboiqbpr7XmopPlnKfmlqHmibHlrpvlp5Dombvpo7TntaLntr7pro7miJbnsp/oorflronlurXmjInmmpfmoYjpl4fpno3mnY/ku6XkvIrkvY3kvp3lgYnlm7LlpLflp5TlqIHlsInmg5/mhI/mhbDmmJPmpIXngrrnlY/nlbDnp7vntq3nt6/og4PokI7ooaPorILpgZXpgbrljLvkupXkuqXln5/ogrLpg4Hno6/kuIDlo7HmuqLpgLjnqLLojKjoiovpsK/lhYHljbDlkr3lk6Hlm6Dlp7vlvJXpo7Lmt6vog6TolK0iXSxbIjg5NDAiLCLpmaLpmbDpmqDpn7vlkIvlj7Plrofng4/nvr3ov4Lpm6jlja/ptZznqrrkuJHnopPoh7zmuKblmJjllITmrJ3olJrpsLvlp6Xljqnmtabnk5zplo/lmYLkupHpgYvpm7LojY/ppIzlj6HllrblrLDlvbHmmKDmm7PmoITmsLjms7PmtKnnkZvnm4jnqY7poLToi7HooZvoqaDpi63mtrLnlqvnm4rpp4XmgqborIHotorplrLmpo7ljq3lhoYiXSxbIjg5ODAiLCLlnJLloLDlpYTlrrTlu7bmgKjmjqnmj7Tmsr/mvJTngo7nhJTnhZnnh5XnjL/nuIHoibboi5HolpfpgaDpiZvptJvloanmlrzmsZrnlKXlh7nlpK7lpaXlvoDlv5zmirzml7rmqKrmrKfmrrTnjovnv4HopZbptKzptI7pu4TlsqHmspbojbvlhITlsYvmhrboh4bmobbniaHkuZnkv7rljbjmganmuKnnqY/pn7PkuIvljJbku67kvZXkvL3kvqHkvbPliqDlj6/lmInlpI/lq4Hlrrblr6Hnp5HmmofmnpzmnrbmrYzmsrPngavnj4Lnpo3npr7nqLznrofoirHoi5vojITojbfoj6/oj5PonaboqrLlmKnosqjov6bpgY7pnJ7omorkv4Tls6jmiJHniZnnlLvoh6Xoir3om77os4Dpm4XppJPpp5Xku4vkvJrop6Plm57loYrlo4rlu7vlv6vmgKrmgpTmgaLmh5DmiJLmi5DmlLkiXSxbIjhhNDAiLCLprYHmmabmorDmtbfngbDnlYznmobntbXoiqXon7nplovpmo7osp3lh7Hlir7lpJblkrPlrrPltJbmhajmpoLmtq/noo3ok4vooZfoqbLpjqfpqrjmtazppqjom5nlnqPmn7/om47piI7lioPlmoflkITlu5Pmi6HmkrnmoLzmoLjmrrvnjbLnorrnqavopprop5LotavovIPpg63plqPpmpTpnanlrablsrPmpb3poY3poY7mjpvnrKDmqKsiXSxbIjhhODAiLCLmqb/morbpsI3mvZ/libLllp3mgbDmi6zmtLvmuIfmu5HokZvopJDovYTkuJTpsLnlj7bmpJvmqLrpnoTmoKrlhZznq4PokrLph5zpjozlmZvptKjmoKLojIXokLHnsqXliIjoi4Xnk6bkub7kvoPlhqDlr5LliIrli5jli6flt7vllprloKrlp6blrozlrpjlr5vlubLlubnmgqPmhJ/mhaPmhr7mj5vmlaLmn5HmoZPmo7rmrL7mrZPmsZfmvKLmvpfmvYXnkrDnlJjnm6PnnIvnq7/nrqHnsKHnt6nnvLbnv7Dogp3oiabojp7oprPoq4zosqvpgoTpkZHplpPplpHplqLpmaXpn5PppKjoiJjkuLjlkKvlsrjlt4znjqnnmYznnLzlsqnnv6votIvpm4HpoJHpoZTpoZjkvIHkvI7ljbHllpzlmajln7rlpYflrInlr4TlspDluIzlub7lv4zmj67mnLrml5fml6LmnJ/mo4vmo4QiXSxbIjhiNDAiLCLmqZ/luLDmr4XmsJfmsb3nlb/npYjlraPnqIDntIDlvr3opo/oqJjosrTotbfou4zovJ3po6LpqI7prLzkuoDlgb3lhIDlppPlrpzmiK/mioDmk6zmrLrniqDnlpHnpYfnvqnon7voqrzorbDmjqzoj4rpnqDlkInlkIPllqvmoZTmqZjoqbDnoKfmnbXpu43ljbTlrqLohJromZDpgIbkuJjkuYXku4fkvJHlj4rlkLjlrq7lvJPmgKXmlZEiXSxbIjhiODAiLCLmnL3msYLmsbLms6PngbjnkIPnqbbnqq7nrIjntJrns77ntabml6fniZvljrvlsYXlt6jmi5Lmi6DmjJnmuKDomZroqLHot53pi7jmvIHnpqbprZrkuqjkuqvkuqzkvpvkvqDlg5HlhYfnq7blhbHlh7bljZTljKHljb/lj6vllqzlooPls6HlvLflvYrmgK/mgZDmga3mjJ/mlZnmqYvms4Hni4Lni63nn6/og7johIXoiIjolY7pg7fpj6Hpn7/ppZfpqZrku7Dlh53lsK3mmoHmpa3lsYDmm7LmpbXnjonmoZDnsoHlg4Xli6TlnYflt77pjKbmlqTmrKPmrL3nkLTnpoHnpr3nrYvnt4roirnoj4zoob/opZ/orLnov5Hph5HlkJ/pioDkuZ3lgLblj6XljLrni5fnjpbnn6noi6bouq/pp4bpp4jpp5LlhbfmhJromZ7llrDnqbrlgbblr5PpgYfpmoXkuLLmq5vph6flsZHlsYgiXSxbIjhjNDAiLCLmjpjnqp/mspPpnbTovaHnqqrnhorpmojnsoLmoJfnubDmoZHpjazli7LlkJvolqvoqJPnvqTou43pg6HljabooojnpYHkv4Llgr7liJHlhYTllZPlnK3nj6rlnovlpZHlvaLlvoTmgbXmhbbmhafmhqnmjrLmkLrmlazmma/moYLmuJPnlabnqL3ns7vntYzntpnnuYvnvavojI7ojYrom43oqIjoqaPorabou73poJrpto/oirjov47pr6giXSxbIjhjODAiLCLliofmiJ/mkoPmv4DpmpnmoYHlgpHmrKDmsbrmvZTnqbTntZDooYDoqKPmnIjku7blgLnlgKblgaXlhbzliLjliaPllqflnI/loIXlq4zlu7rmhrLmh7jmi7PmjbLmpJzmqKnnib3niqznjK7noJTnoa/ntbnnnIzogqnopovorJnos6Lou5LpgaPpjbXpmbrpoZXpqJPpubjlhYPljp/ljrPlubvlvKbmuJvmupDnjoTnj77ntYPoiLfoqIDoq7rpmZDkuY7lgIvlj6Tlkbzlm7rlp5HlraTlt7HluqvlvKfmiLjmlYXmnq/muZbni5Dns4roorTogqHog6Hoj7DomY7oqofot6jpiLfpm4fpoafpvJPkupTkupLkvI3ljYjlkYnlkL7lqK/lvozlvqHmgp/moqfmqo7nkZrnooHoqp7oqqTorbfphpDkuZ7pr4nkuqTkvbzkvq/lgJnlgJblhYnlhazlip/lirnli77ljprlj6PlkJEiXSxbIjhkNDAiLCLlkI7llonlnZHlnqLlpb3lrZTlrZ3lro/lt6Xlt6flt7flubjluoPluprlurflvJjmgZLmhYzmipfmi5jmjqfmlLvmmILmmYPmm7Tmna3moKHmopfmp4vmsZ/mtKrmtanmuK/mup3nlLLnmofnoaznqL/ns6DntIXntJjntZ7ntrHogJXogIPogq/ogrHohZToho/oiKrojZLooYzooaHorJvosqLos7zpg4rphbXpibHnoL/pi7zplqTpmY0iXSxbIjhkODAiLCLpoIXpppnpq5jptLvliZvliqvlj7flkIjlo5Xmi7fmv6DosarovZ/purnlhYvliLvlkYrlm73nqYDphbfptaDpu5LnjYTmvInohbDnlJHlv73mg5rpqqjni5vovrzmraTpoIPku4rlm7DlnaTlor7lqZrmgajmh4fmmI/mmIbmoLnmorHmt7fnl5XntLroia7prYLkupvkvZDlj4nllIblta/lt6blt67mn7vmspnnkbPnoILoqZDpjpboo5/lnZDluqfmjKvlgrXlgqzlho3mnIDlk4nloZ7lprvlrrDlvanmiY3mjqHmoL3mrbPmuIjngb3ph4fnioDnoJXnoKbnpa3mlo7ntLDoj5zoo4HovInpmpvliaTlnKjmnZDnvarosqHlhrTlnYLpmKrloLrmporogrTlkrLltI7ln7znopXpt7rkvZzliYrlkovmkL7mmKjmnJTmn7XnqoTnrZbntKLpjK/moZzprq3nrLnljJnlhorliLciXSxbIjhlNDAiLCLlr5/mi7bmkq7mk6bmnK3mrrrolqnpm5HnmpDpr5bmjYzpjIbprqvnmr/mmZLkuInlgpjlj4LlsbHmg6jmkpLmlaPmoZ/nh6bnj4rnlKPnrpfnuoLompXoroPos5vphbjppJDmlqzmmqvmrovku5Xku5TkvLrkvb/liLrlj7jlj7Lll6Plm5vlo6vlp4vlp4nlp7/lrZDlsY3luILluKvlv5fmgJ3mjIfmlK/lrZzmlq/mlr3ml6jmnp3mraIiXSxbIjhlODAiLCLmrbvmsI/njYXnpYnnp4Hns7jntJnntKvogqLohILoh7PoppboqZ7oqanoqaboqozoq67os4fos5zpm4zpo7zmra/kuovkvLzkvo3lhZDlrZflr7rmhYjmjIHmmYLmrKHmu4vmsrvniL7nkr3nl5Tno4HnpLrogIzogLPoh6rokpTovp7msZDpub/lvI/orZjptKvnq7rou7jlro3pm6vkuIPlj7Hln7flpLHlq4nlrqTmgonmub/mvIbnlr7os6rlrp/olIDnr6DlgbLmn7Toip3lsaHolYrnuJ7oiI7lhpnlsITmjajotabmlpznha7npL7ntJfogIXorJ3ou4rpga7om4fpgqrlgJ/li7rlsLrmnZPngbzniLXphYzph4jpjKvoi6Xlr4LlvLHmg7nkuLvlj5blrojmiYvmnLHmrorni6nnj6DnqK7ohavotqPphZLpppblhJLlj5flkarlr7/mjojmqLnntqzpnIDlm5rlj47lkagiXSxbIjhmNDAiLCLlrpflsLHlt57kv67mhIHmi77mtLLnp4Dnp4vntYLnuY3nv5Loh63oiJ/okpDooYbopbLorpDoubTovK/pgLHphYvphazpm4bphpzku4DkvY/lhYXljYHlvpPmiI7mn5TmsYHmuIvnjaPnuKbph43pioPlj5TlpJnlrr/mt5HnpZ3nuK7nspvlob7nhp/lh7rooZPov7Dkv4rls7vmmKXnnqznq6PoiJzpp7/lh4blvqrml6zmpa/mronmt7MiXSxbIjhmODAiLCLmupbmvaTnm77ntJTlt6HpgbXphofpoIblh6bliJ3miYDmmpHmm5nmuJrlurbnt5LnvbLmm7jolq/ol7foq7jliqnlj5nlpbPluo/lvpDmgZXpi6TpmaTlgrflhJ/li53ljKDljYflj6zlk6jllYbllLHlmJflpajlpr7lqLzlrrXlsIblsI/lsJHlsJrluoTluorlu6DlvbDmib/mioTmi5vmjozmjbfmmIfmmIzmmK3mmbbmnb7moqLmqJ/mqLXmsrzmtojmuInmuZjnhLznhKbnhafnl4fnnIHnoZ3npIHnpaXnp7Dnq6DnrJHnsqfntLnogpboj5bokovolYnooZ3oo7PoqJ/oqLzoqZToqbPosaHos57phqTpiabpjb7pkJjpmpzpnpjkuIrkuIjkuJ7kuZflhpflibDln47loLTlo4zlrKLluLjmg4Xmk77mnaHmnZbmtYTnirbnlbPnqaPokrjorbLphrjpjKDlmLHln7Tpo74iXSxbIjkwNDAiLCLmi63mpI3mrpbnh63nuZTogbfoibLop6bpo5/onZXovrHlsLvkvLjkv6HkvrXllIflqKDlr53lr6nlv4PmhY7mjK/mlrDmmYvmo67mppvmtbjmt7HnlLPnlrnnnJ/npZ7np6bntLPoh6Poiq/olqropqroqLrouqvovpvpgLLph53pnIfkurrku4HliIPlobXlo6zlsIvnlJrlsL3ohY7oqIrov4XpmaPpna3nrKXoq4/poIjphaLlm7PljqgiXSxbIjkwODAiLCLpgJflkLnlnoLluKXmjqjmsLTngornnaHnsovnv6DoobDpgYLphZTpjJDpjJjpmo/nkZ7pq4TltIfltanmlbDmnqLotqjpm5vmja7mnYnmpJnoj4XpoJfpm4Doo77mvoTmkbrlr7jkuJbngKznlZ3mmK/lh4TliLbli6Llp5PlvoHmgKfmiJDmlL/mlbTmmJ/mmbTmo7LmoJbmraPmuIXnibLnlJ/nm5vnsr7ogZblo7Doo73opb/oqqDoqpPoq4vpgJ3phpLpnZLpnZnmlonnqI7ohIbpmrvluK3mg5zmiJrmlqXmmJTmnpDnn7PnqY3nsY3nuL7ohIrosqzotaTot6HouZ/noqnliIfmi5nmjqXmkYLmipjoqK3nqoPnr4Doqqzpm6rntbboiIzonYnku5nlhYjljYPljaDlrqPlsILlsJblt53miKbmiYfmkrDmoJPmoLTms4nmtYXmtJfmn5PmvZznhY7nhb3ml4vnqb/nrq3nt5oiXSxbIjkxNDAiLCLnuYrnvqjohbroiJvoiLnolqboqa7os47ot7Xpgbjpgbfpiq3pipHploPprq7liY3lloTmvLjnhLblhajnpoXnuZXohrPns47lmYzloZHlsqjmjqrmm77mm73mpZrni5nnlo/nlo7npI7npZbnp5/nspfntKDntYTomIfoqLTpmLvpgaHpvKDlg6flibXlj4zlj6LlgInllqrlo67lpY/niL3lrovlsaTljJ3mg6Pmg7PmjZzmjoPmjL/mjrsiXSxbIjkxODAiLCLmk43ml6nmm7nlt6Pmp43mp73mvJXnh6Xkuonnl6nnm7jnqpPns5/nt4/ntpzogaHojYnojZjokazokrzol7voo4XotbDpgIHpga3pjpfpnJzpqJLlg4/lopfmho7oh5PolLXotIjpgKDkv4PlgbTliYfljbPmga/mjYnmnZ/muKzotrPpgJ/kv5flsZ7os4rml4/ntprljZLoopblhbbmj4PlrZjlravlsIrmkI3mnZHpgZzku5blpJrlpKrmsbDoqZHllL7loJXlpqXmg7DmiZPmn4HoiLXmpZXpmYDpp4TpqKjkvZPloIblr77ogJDlsrHluK/lvoXmgKDmhYvmiLTmm7/ms7Dmu57og47ohb/oi5TooovosrjpgIDpgK7pmorpu5vpr5vku6Plj7DlpKfnrKzpho3poYzpt7nmu53ngKfljZPllYTlroXmiZjmip7mi5PmsqLmv6/nkKLoqJfpkLjmv4Hoq77ojLjlh6fom7jlj6oiXSxbIjkyNDAiLCLlj6nkvYbpgZTovrDlparohLHlt73nq6rovr/mo5rosLfni7jpsYjmqL3oqrDkuLnljZjlmIblnabmi4XmjqLml6bmrY7mt6HmuZvngq3nn63nq6/nrqrntrvogL3og4bom4voqpXpjZvlm6Plo4flvL7mlq3mmpbmqoDmrrXnlLfoq4flgKTnn6XlnLDlvJvmgaXmmbrmsaDnl7TnqJrnva7oh7TonJjpgYXpprPnr4nnlZznq7nnrZHok4QiXSxbIjkyODAiLCLpgJDnp6nnqpLojLblq6HnnYDkuK3ku7Llrpnlv6Dmir3mmLzmn7Hms6jomavoobfoqLvphY7pi7Ppp5DmqJfngKbnjKroi6fokZfosq/kuIHlhYblh4vllovlr7XluJbluLPluoHlvJTlvLXlvavlvrTmh7LmjJHmmqLmnJ3mva7niZLnlLrnnLrogbTohLnohbjonbboqr/oq5zotoXot7PpiprplbfpoILps6Xli4XmjZfnm7TmnJXmsojnj43os4Ppjq7pmbPmtKXlopzmpI7mp4zov73pjprnl5vpgJrloZrmoILmjrTmp7vkvYPmvKzmn5jovrvolKbntrTpjZTmpL/mvbDlnarlo7flrKzntKzniKrlkIrph6PptrTkuq3kvY7lgZzlgbXliYPosp7lkYjloKTlrprluJ3lupXluq3lu7flvJ/mgozmirXmjLrmj5Dmoq/msYDnoofnpo7nqIvnt6DoiYfoqILoq6bouYTpgJMiXSxbIjkzNDAiLCLpgrjphK3ph5jpvI7ms6XmkZjmk6LmlbXmu7TnmoTnrJvpganpj5Hmurrlk7LlvrnmkqTovY3ov63piYTlhbjloavlpKnlsZXlupfmt7vnuo/nlJzosrzou6LpoZvngrnkvJ3mrr/mvrHnlLDpm7vlhY7lkJDloLXloZflpqzlsaDlvpLmlpfmnZzmuKHnmbvoj5/os63pgJTpg73pjY3noKXnoLrliqrluqblnJ/lpbTmgJLlgJLlhZrlhqwiXSxbIjkzODAiLCLlh43liIDllJDloZTloZjlpZflrpXls7bltovmgrzmipXmkK3mnbHmoYPmorzmo5/nm5fmt5jmua/mtpvnga/nh4jlvZPnl5jnpbfnrYnnrZTnrZLns5bntbHliLDokaPolanol6ToqI7orITosYbouI/pgIPpgI/pkJnpmbbpoK3pqLDpl5jlg43li5XlkIzloILlsI7mhqfmkp7mtJ7nnrPnq6Xog7TokITpgZPpioXls6DptIfljL/lvpflvrPmtpznibnnnaPnpr/nr6Tmr5Lni6zoqq3moIPmqaHlh7jnqoHmpLTlsYrps7boi6vlr4XphYnngJ7lmbjlsa/mg4fmlabmsozosZrpgYHpoJPlkZHmm4fpiI3lpYjpgqPlhoXkuY3lh6rolpnorI7ngZjmjbrpjYvmpaLpprTnuITnlbfljZfmpaDou5/pm6PmsZ3kuozlsLzlvJDov6nljILos5Hogonombnlu7/ml6XkubPlhaUiXSxbIjk0NDAiLCLlpoLlsL/pn67ku7vlporlv43oqo3mv6HnprDnpaLlr6fokbHnjKvnhrHlubTlv7Xmjbvmkprnh4PnspjkuYPlu7zkuYvln5zlmqLmgqnmv4PntI3og73ohLPohr/ovrLoppfomqTlt7Tmiormkq3opofmnbfms6LmtL7nkLbnoLTlqYbnvbXoiq3ppqzkv7Plu4Pmi53mjpLmlZfmna/nm4PniYzog4zogrrovKnphY3lgI3ln7nlqpLmooUiXSxbIjk0ODAiLCLmpbPnhaTni73osrflo7Los6DpmarpgJnonb/np6Tnn6fokKnkvK/liaXljZrmi43mn4/ms4rnmb3nrpTnspXoiLboloTov6vmm53mvKDniIbnuJvojqvpp4Hpuqblh73nrrHnobLnrrjogofnrYjmq6jluaHogoznlZHnlaDlhavpiaLmuoznmbrphpfpq6rkvJDnvbDmipznrY/plqXps6nlmbrloZnom6TpmrzkvLTliKTljYrlj43lj5vluIbmkKzmlpHmnb/msL7msY7niYjniq/nj63nlZTnuYHoiKzol6nosqnnr4Tph4bnhanpoJLpo6/mjL3mmannlarnm6Tno5DolYPom67ljKrljZHlkKblpoPluoflvbzmgrLmiYnmibnmiqvmlpDmr5Tms4znlrLnmq7nopHnp5jnt4vnvbfogqXooqvoqrnosrvpgb/pnZ7po5vmqIvnsLjlgpnlsL7lvq7mnofmr5jnkLXnnInnvo4iXSxbIjk1NDAiLCLpvLvmn4rnqJfljLnnlovpq63lvabohp3oj7HogpjlvLzlv4XnlaLnrYbpgLzmoaflp6vlqpvntJDnmb7orKzkv7XlvarmqJnmsLfmvILnk6LnpajooajoqZXosbnlu5/mj4/nl4Xnp5Loi5fpjKjpi7Lokpzom63psK3lk4HlvazmlozmtZzngJXosqfos5PpoLvmlY/nk7bkuI3ku5jln6DlpKvlqablr4zlhqjluIPlupzmgJbmibbmlbciXSxbIjk1ODAiLCLmlqfmma7mta7niLbnrKbohZDohproipnorZzosqDos6botbTpmJzpmYTkvq7mkqvmraboiJ7okaHolarpg6jlsIHmpZPpoqjokbrolZfkvI/lia/lvqnluYXmnI3npo/ohbnopIfopobmt7XlvJfmiZXmsrjku4/nianprpLliIblkLvlmbTlorPmhqTmia7nhJrlpa7nsonns57ntJvpm7DmlofogZ7kuJnkvbXlhbXloYDluaPlubPlvIrmn4TkuKbolL3plonpmZvnsbPpoIHlg7vlo4HnmZbnoqfliKXnnqXolJHnroblgY/lpInniYfnr4fnt6jovrrov5TpgY3kvr/li4nlqKnlvIHpnq3kv53oiJfpi6rlnIPmjZXmrannlKvoo5zovJTnqYLli5/lopPmhZXmiIrmmq7mr43nsL/oj6nlgKPkv7jljIXlkYbloLHlpYnlrp3ls7Dls6/ltKnlupbmirHmjafmlL7mlrnmnIsiXSxbIjk2NDAiLCLms5Xms6Hng7nnoLLnuKvog57oirPokIzok6zonILopJLoqKrosYrpgqbpi5Lpo73ps7PptazkuY/kuqHlgo3liZblnYrlpqjluL3lv5jlv5nmiL/mmrTmnJvmn5Dmo5LlhpLntKHogqrohqjorIDosozosr/pib7pmLLlkKDpoKzljJflg5XljZzloqjmkrLmnLTniafnnabnqYbph6bli4PmsqHmrobloIDluYzlpZTmnKznv7vlh6Hnm4YiXSxbIjk2ODAiLCLmkanno6jprZTpurvln4vlprnmmKfmnprmr47lk6nmp5nluZXohpzmnpXprqrmn77psZLmoZ3kuqbkv6Plj4jmirnmnKvmsqvov4Tkvq3nua3pur/kuIfmhaLmuoDmvKvolJPlkbPmnKrprYXlt7PnrpXlsqzlr4bonJzmuYrok5HnqJTohIjlppnnso3msJHnnKDli5nlpKLnhKHniZ/nn5vpnKfptaHmpIvlqb/lqJjlhqXlkI3lkb3mmI7nm5/ov7fpipjps7Tlp6rniZ3mu4XlhY3mo4nntr/nt6zpnaLpurrmkbjmqKHojILlpoTlrZ/mr5vnjJvnm7LntrLogJfokpnlhLLmnKjpu5nnm67mnaLli7/ppIXlsKTmiLvnsb7osrDllY/mgrbntIvploDljIHkuZ/lhrblpJzniLrogLbph47lvKXnn6LljoTlvbnntITolqzoqLPouo3pnZbmn7Polq7pkZPmhInmhIjmsrnnmZIiXSxbIjk3NDAiLCLoq63ovLjllK/kvZHlhKrli4flj4vlrqXlub3mgqDmhoLmj5bmnInmn5rmuafmtoznjLbnjLfnlLHnpZDoo5XoqpjpgYrpgpHpg7Xpm4Tono3lpJXkuojkvZnkuI7oqonovL/poJDlgq3lubzlppblrrnlurjmj5rmj7rmk4Hmm5zmpYrmp5jmtIvmurbnhpTnlKjnqq/nvorogIDokYnok4nopoHorKHouIrpgaXpmb3ppIrmhb7mipHmrLIiXSxbIjk3ODAiLCLmsoPmtbTnv4znv7zmt4DnvoXonrroo7jmnaXojrHpoLzpm7fmtJvntaHokL3pharkubHljbXltZDmrITmv6vol43omK3opqfliKnlkI/lsaXmnY7moqjnkIbnkoPnl6Loo4/oo6Hph4zpm6Lpmbjlvovnjofnq4vokY7mjqDnlaXlionmtYHmupznkInnlZnnoavnspLpmobnq5zpvo3kvrbmha7ml4XomZzkuobkuq7lg5rkuKHlh4zlr67mlpnmooHmtrznjJ/nmYLnnq3nqJzns6foia/oq5Lpgbzph4/pmbXpoJjlipvnt5HlgKvljpjmnpfmt4vnh5DnkLPoh6jovKrpmqPpsZfpup/nkaDloYHmtpnntK/poZ7ku6TkvLbkvovlhrflirHltrrmgJznjrLnpLzoi5PpiLTpmrfpm7bpnIrpupfpvaLmmqbmrbTliJfliqPng4joo4Llu4nmgYvmhpDmvKPnhYnnsL7nt7Toga8iXSxbIjk4NDAiLCLok67pgKPpjKzlkYLpra/mq5Pngonos4Lot6/pnLLlirTlqYHlu4rlvITmnJfmpbzmppTmtarmvI/niaLni7znr63ogIHogb7onYvpg47lha3pupPnpoTogovpjLLoq5blgK3lkozoqbHmraros4TohIfmg5HmnqDpt7LkupnkupjpsJDoqavol4HolajmpIDmub7nopfohZUiXSxbIjk4OWYiLCLlvIzkuJDkuJXkuKrkuLHkuLbkuLzkuL/kuYLkuZbkuZjkuoLkuoXosavkuoroiJLlvI3kuo7kup7kup/kuqDkuqLkurDkurPkurbku47ku43ku4Tku4bku4Lku5fku57ku63ku5/ku7fkvInkvZrkvLDkvZvkvZ3kvZfkvYfkvbbkvojkvo/kvpjkvbvkvankvbDkvpHkva/kvobkvpblhJjkv5Tkv5/kv47kv5jkv5vkv5Hkv5rkv5Dkv6Tkv6XlgJrlgKjlgJTlgKrlgKXlgIXkvJzkv7blgKHlgKnlgKzkv77kv6/lgJHlgIblgYPlgYfmnIPlgZXlgZDlgYjlgZrlgZblgazlgbjlgoDlgprlgoXlgrTlgrIiXSxbIjk5NDAiLCLlg4nlg4rlgrPlg4Llg5blg57lg6Xlg63lg6Plg67lg7nlg7XlhInlhIHlhILlhJblhJXlhJTlhJrlhKHlhLrlhLflhLzlhLvlhL/lhYDlhZLlhYzlhZTlhaLnq7jlhanlharlha7lhoDlhoLlm5jlhozlhonlho/lhpHlhpPlhpXlhpblhqTlhqblhqLlhqnlhqrlhqvlhrPlhrHlhrLlhrDlhrXlhr3lh4Xlh4nlh5vlh6DomZXlh6nlh60iXSxbIjk5ODAiLCLlh7Dlh7Xlh77liITliIvliJTliI7liKfliKrliK7liLPliLnliY/liYTliYvliYzliZ7liZTliarlibTlianlibPlib/lib3lio3lipTlipLlibHliojlipHovqjovqfliqzliq3lirzlirXli4Hli43li5fli57li6Pli6bpo63li6Dli7Pli7Xli7jli7nljIbljIjnlLjljI3ljJDljI/ljJXljJrljKPljK/ljLHljLPljLjljYDljYbljYXkuJfljYnljY3lh5bljZ7ljanlja7lpJjljbvljbfljoLljpbljqDljqbljqXljq7ljrDljrblj4PnsJLpm5nlj5/mm7znh67lj67lj6jlj63lj7rlkIHlkL3lkYDlkKzlkK3lkLzlkK7lkLblkKnlkJ3lkY7lko/lkbXlko7lkZ/lkbHlkbflkbDlkpLlkbvlkoDlkbblkoTlkpDlkoblk4flkqLlkrjlkqXlkqzlk4Tlk4jlkqgiXSxbIjlhNDAiLCLlkqvlk4LlkqTlkr7lkrzlk5jlk6Xlk6bllI/llJTlk73lk67lk63lk7rlk6LllLnllYDllaPllYzllK7llZzllYXllZbllZfllLjllLPllZ3llpnlloDlkq/llorllp/llbvllb7llpjllp7llq7llbzlloPllqnllofllqjll5rll4Xll5/ll4Tll5zll6Tll5TlmJTll7flmJbll77ll73lmJvll7nlmY7lmZDnh5/lmLTlmLblmLLlmLgiXSxbIjlhODAiLCLlmavlmaTlmK/lmazlmarlmoblmoDlmorlmqDlmpTlmo/lmqXlmq7lmrblmrTlm4Llmrzlm4Hlm4Plm4Dlm4jlm47lm5Hlm5Plm5flm67lm7nlnIDlm7/lnITlnInlnIjlnIvlnI3lnJPlnJjlnJbll4flnJzlnKblnLflnLjlnY7lnLvlnYDlnY/lnanln4DlnojlnaHlnb/lnonlnpPlnqDlnrPlnqTlnqrlnrDln4Pln4bln5Tln5Lln5PloIrln5bln6PloIvloJnloJ3lobLloKHloaLloYvlobDmr4DloZLloL3lobnlooXlornlop/loqvlorrlo57lorvlorjloq7lo4Xlo5Plo5Hlo5flo5nlo5jlo6Xlo5zlo6Tlo5/lo6/lo7rlo7nlo7vlo7zlo73lpILlpIrlpJDlpJvmoqblpKXlpKzlpK3lpLLlpLjlpL7nq5LlpZXlpZDlpY7lpZrlpZjlpaLlpaDlpaflpazlpakiXSxbIjliNDAiLCLlpbjlpoHlpp3kvZ7kvqvlpqPlprLlp4blp6jlp5zlpo3lp5nlp5rlqKXlqJ/lqJHlqJzlqInlqJrlqYDlqazlqYnlqLXlqLblqaLlqarlqprlqrzlqr7lq4vlq4Llqr3lq6Plq5flq6blq6nlq5blq7rlq7vlrIzlrIvlrJblrLLlq5DlrKrlrLblrL7lrYPlrYXlrYDlrZHlrZXlrZrlrZvlraXlranlrbDlrbPlrbXlrbjmlojlrbrlroAiXSxbIjliODAiLCLlroPlrqblrrjlr4Plr4flr4nlr5Tlr5Dlr6Tlr6blr6Llr57lr6Xlr6vlr7Dlr7blr7PlsIXlsIflsIjlsI3lsJPlsKDlsKLlsKjlsLjlsLnlsYHlsYblsY7lsZPlsZDlsY/lrbHlsazlsa7kuaLlsbblsbnlsozlspHlspTlppvlsqvlsrvlsrblsrzlsrfls4Xlsr7ls4fls5nls6nls73ls7rls63ltozls6rltIvltJXltJfltZzltJ/ltJvltJHltJTltKLltJrltJnltJjltYzltZLltY7ltYvltazltbPltbbltofltoTltoLltqLltp3ltqzltq7ltr3ltpDltrfltrzlt4nlt43lt5Plt5Llt5blt5vlt6vlt7Llt7XluIvluJrluJnluJHluJvluLbluLfluYTluYPluYDluY7luZfluZTluZ/luaLluaTluYflubXlubblubrpurzlub/luqDlu4Hlu4Llu4jlu5Dlu48iXSxbIjljNDAiLCLlu5blu6Plu53lu5rlu5vlu6Llu6Hlu6jlu6nlu6zlu7Hlu7Plu7Dlu7Tlu7jlu77lvIPlvInlvZ3lvZzlvIvlvJHlvJblvKnlvK3lvLjlvYHlvYjlvYzlvY7lvK/lvZHlvZblvZflvZnlvaHlva3lvbPlvbflvoPlvoLlvb/lvorlvojlvpHlvoflvp7lvpnlvpjlvqDlvqjlvq3lvrzlv5blv7vlv6Tlv7jlv7Hlv53mgrPlv7/mgKHmgaAiXSxbIjljODAiLCLmgJnmgJDmgKnmgI7mgLHmgJvmgJXmgKvmgKbmgI/mgLrmgZrmgYHmgarmgbfmgZ/mgYrmgYbmgY3mgaPmgYPmgaTmgYLmgazmgavmgZnmgoHmgo3mg6fmgoPmgprmgoTmgpvmgpbmgpfmgpLmgqfmgovmg6Hmgrjmg6Dmg5PmgrTlv7Dmgr3mg4bmgrXmg5jmhY3mhJXmhIbmg7bmg7fmhIDmg7Tmg7rmhIPmhKHmg7vmg7HmhI3mhI7mhYfmhL7mhKjmhKfmhYrmhL/mhLzmhKzmhLTmhL3mhYLmhYTmhbPmhbfmhZjmhZnmhZrmhavmhbTmha/mhaXmhbHmhZ/mhZ3mhZPmhbXmhpnmhpbmhofmhqzmhpTmhprmhormhpHmhqvmhq7mh4zmh4rmh4nmh7fmh4jmh4Pmh4bmhrrmh4vnvbnmh43mh6bmh6Pmh7bmh7rmh7Tmh7/mh73mh7zmh77miIDmiIjmiInmiI3miIzmiJTmiJsiXSxbIjlkNDAiLCLmiJ7miKHmiKrmiK7miLDmiLLmiLPmiYHmiY7miZ7miaPmiZvmiaDmiajmibzmioLmionmib7mipLmipPmipbmi5TmioPmipTmi5fmi5Hmirvmi4/mi7/mi4bmk5Tmi4jmi5zmi4zmi4rmi4Lmi4fmipvmi4nmjIzmi67mi7HmjKfmjILmjIjmi6/mi7XmjZDmjL7mjY3mkJzmjY/mjpbmjo7mjoDmjqvmjbbmjqPmjo/mjonmjp/mjrXmjasiXSxbIjlkODAiLCLmjanmjr7mj6nmj4Dmj4bmj6Pmj4nmj5Lmj7bmj4TmkJbmkLTmkIbmkJPmkKbmkLbmlJ3mkJfmkKjmkI/mkafmka/mkbbmkY7mlKrmkpXmkpPmkqXmkqnmkojmkrzmk5rmk5Lmk4Xmk4fmkrvmk5jmk4Lmk7Hmk6foiInmk6Dmk6Hmiqzmk6Pmk6/mlKzmk7bmk7Tmk7Lmk7rmlIDmk73mlJjmlJzmlIXmlKTmlKPmlKvmlLTmlLXmlLfmlLbmlLjnlYvmlYjmlZbmlZXmlY3mlZjmlZ7mlZ3mlbLmlbjmloLmloPorormlpvmlp/mlqvmlrfml4Pml4bml4Hml4Tml4zml5Lml5vml5nml6Dml6Hml7HmnbLmmIrmmIPml7vmnbPmmLXmmLbmmLTmmJzmmY/mmYTmmYnmmYHmmZ7mmZ3mmaTmmafmmajmmZ/mmaLmmbDmmoPmmojmmo7mmonmmoTmmpjmmp3mm4Hmmrnmm4nmmr7mmrwiXSxbIjllNDAiLCLmm4Tmmrjmm5bmm5rmm6DmmL/mm6bmm6nmm7Dmm7Xmm7fmnI/mnJbmnJ7mnKbmnKfpnLjmnK7mnL/mnLbmnYHmnLjmnLfmnYbmnZ7mnaDmnZnmnaPmnaTmnonmnbDmnqnmnbzmnarmnozmnovmnqbmnqHmnoXmnrfmn6/mnrTmn6zmnrPmn6nmnrjmn6Tmn57mn53mn6Lmn67mnrnmn47mn4bmn6fmqpzmoJ7moYbmoKnmoYDmoY3moLLmoY4iXSxbIjllODAiLCLmorPmoKvmoZnmoaPmobfmob/mop/moo/moq3mopTmop3mopvmooPmqq7mornmobTmorXmoqDmorrmpI/moo3mob7mpIHmo4rmpIjmo5jmpKLmpKbmo6HmpIzmo43mo5Tmo6fmo5XmpLbmpJLmpITmo5fmo6PmpKXmo7nmo6Dmo6/mpKjmpKrmpJrmpKPmpKHmo4bmpbnmpbfmpZzmpbjmpavmpZTmpb7mpa7mpLnmpbTmpL3mpZnmpLDmpaHmpZ7mpZ3mpoHmparmprLmpq7mp5Dmpr/mp4Hmp5Pmpr7mp47lr6jmp4rmp53mprvmp4PmpqfmqK7mppHmpqDmppzmppXmprTmp57mp6jmqILmqJvmp7/mrIrmp7nmp7Lmp6fmqIXmprHmqJ7mp63mqJTmp6vmqIrmqJLmq4HmqKPmqJPmqYTmqIzmqbLmqLbmqbjmqYfmqaLmqZnmqabmqYjmqLjmqKLmqpDmqo3mqqDmqoTmqqLmqqMiXSxbIjlmNDAiLCLmqpfomJfmqrvmq4Pmq4LmqrjmqrPmqqzmq57mq5Hmq5/mqqrmq5rmq6rmq7vmrIXomJbmq7rmrJLmrJbprLHmrJ/mrLjmrLfnm5zmrLnpo67mrYfmrYPmrYnmrZDmrZnmrZTmrZvmrZ/mraHmrbjmrbnmrb/mroDmroTmroPmro3mrpjmrpXmrp7mrqTmrqrmrqvmrq/mrrLmrrHmrrPmrrfmrrzmr4bmr4vmr5Pmr5/mr6zmr6vmr7Pmr68iXSxbIjlmODAiLCLpur7msIjmsJPmsJTmsJvmsKTmsKPmsZ7msZXmsaLmsarmsoLmso3msprmsoHmspvmsb7msajmsbPmspLmspDms4Tms7Hms5Pmsr3ms5fms4Xms53msq7msrHmsr7msrrms5vms6/ms5nms6rmtJ/ooY3mtLbmtKvmtL3mtLjmtJnmtLXmtLPmtJLmtIzmtaPmtpPmtaTmtZrmtbnmtZnmto7mtpXmv6TmtoXmt7nmuJXmuIrmtrXmt4fmt6bmtrjmt4bmt6zmt57mt4zmt6jmt5Lmt4Xmt7rmt5nmt6Tmt5Xmt6rmt67muK3mua7muK7muJnmubLmuZ/muL7muKPmuavmuKvmubbmuY3muJ/muYPmuLrmuY7muKTmu7/muJ3muLjmuoLmuqrmupjmu4nmurfmu5Pmur3muq/mu4TmurLmu5Tmu5Xmuo/muqXmu4Lmup/mvYHmvJHngYzmu6zmu7jmu77mvL/mu7LmvLHmu6/mvLLmu4wiXSxbImUwNDAiLCLmvL7mvJPmu7fmvobmvbrmvbjmvoHmvoDmva/mvZvmv7Pmva3mvoLmvbzmvZjmvo7mvpHmv4LmvabmvrPmvqPmvqHmvqTmvrnmv4bmvqrmv5/mv5Xmv6zmv5Tmv5jmv7Hmv67mv5vngInngIvmv7rngJHngIHngI/mv77ngJvngJrmvbTngJ3ngJjngJ/ngLDngL7ngLLngZHngaPngpnngpLngq/ng7HngqzngrjngrPngq7ng5/ng4vng50iXSxbImUwODAiLCLng5nnhInng73nhJznhJnnhaXnhZXnhojnhabnhaLnhYznhZbnhaznho/nh7vnhoTnhpXnhqjnhqznh5fnhrnnhr7nh5Lnh4nnh5Tnh47nh6Dnh6znh6fnh7Xnh7znh7nnh7/niI3niJDniJvniKjniK3niKzniLDniLLniLvniLzniL/niYDniYbniYvniZjnibTnib7nioLnioHniofnipLnipbniqLniqfnirnnirLni4Pni4bni4Tni47ni5Lni6Lni6Dni6Hni7nni7flgI/njJfnjIrnjJznjJbnjJ3njLTnjK/njKnnjKXnjL7njY7njY/pu5jnjZfnjarnjajnjbDnjbjnjbXnjbvnjbrnj4jnjrPnj47njrvnj4Dnj6Xnj67nj57nkqLnkIXnka/nkKXnj7jnkLLnkLrnkZXnkL/nkZ/nkZnnkYHnkZznkannkbDnkaPnkarnkbbnkb7nkovnkp7nkqfnk4rnk4/nk5Tnj7EiXSxbImUxNDAiLCLnk6Dnk6Pnk6fnk6nnk67nk7Lnk7Dnk7Hnk7jnk7fnlITnlIPnlIXnlIznlI7nlI3nlJXnlJPnlJ7nlKbnlKznlLznlYTnlY3nlYrnlYnnlZvnlYbnlZrnlannlaTnlafnlavnla3nlbjnlbbnlobnlofnlbTnlornlonnloLnlpTnlprnlp3nlqXnlqPnl4LnlrPnl4PnlrXnlr3nlrjnlrznlrHnl43nl4rnl5Lnl5nnl6Pnl57nl77nl78iXSxbImUxODAiLCLnl7znmIHnl7Dnl7rnl7Lnl7PnmIvnmI3nmInnmJ/nmKfnmKDnmKHnmKLnmKTnmLTnmLDnmLvnmYfnmYjnmYbnmZznmZjnmaHnmaLnmajnmannmarnmafnmaznmbDnmbLnmbbnmbjnmbznmoDnmoPnmojnmovnmo7nmpbnmpPnmpnnmprnmrDnmrTnmrjnmrnnmrrnm4Lnm43nm5bnm5Lnm57nm6Hnm6Xnm6fnm6romK/nm7vnnIjnnIfnnITnnKnnnKTnnJ7nnKXnnKbnnJvnnLfnnLjnnYfnnZrnnajnnavnnZvnnaXnnb/nnb7nnbnnno7nnovnnpHnnqDnnp7nnrDnnrbnnrnnnr/nnrznnr3nnrvnn4fnn43nn5fnn5rnn5znn6Pnn67nn7znoIznoJLnpKbnoKDnpKrnoYXnoo7nobTnoobnobznoprnooznoqPnorXnoqrnoq/no5Hno4bno4vno5Tnor7norzno4Xno4rno6wiXSxbImUyNDAiLCLno6fno5rno73no7TnpIfnpJLnpJHnpJnnpKznpKvnpYDnpaDnpZfnpZ/npZrnpZXnpZPnpbrnpb/npornpp3npqfpvYvnpqrnpq7nprPnprnnprrnp4nnp5Xnp6fnp6znp6Hnp6PnqIjnqI3nqJjnqJnnqKDnqJ/npoDnqLHnqLvnqL7nqLfnqYPnqZfnqYnnqaHnqaLnqanpvp3nqbDnqbnnqb3nqojnqpfnqpXnqpjnqpbnqqnnq4jnqrAiXSxbImUyODAiLCLnqrbnq4Xnq4Tnqr/pgoPnq4fnq4rnq43nq4/nq5Xnq5Pnq5nnq5rnq53nq6Hnq6Lnq6bnq63nq7DnrILnrI/nrIrnrIbnrLPnrJjnrJnnrJ7nrLXnrKjnrLbnrZDnrbrnrITnrY3nrIvnrYznrYXnrbXnraXnrbTnrafnrbDnrbHnraznra7nrp3nrpjnrp/nro3nrpznrprnrovnrpLnro/nrZ3nrpnnr4vnr4Hnr4znr4/nrrTnr4bnr53nr6nnsJHnsJTnr6bnr6XnsaDnsIDnsIfnsJPnr7Pnr7fnsJfnsI3nr7bnsKPnsKfnsKrnsJ/nsLfnsKvnsL3nsYznsYPnsZTnsY/nsYDnsZDnsZjnsZ/nsaTnsZbnsaXnsaznsbXnsoPnspDnsqTnsq3nsqLnsqvnsqHnsqjnsrPnsrLnsrHnsq7nsrnnsr3ns4Dns4Xns4Lns5jns5Lns5zns6LprLvns6/ns7Lns7Tns7bns7rntIYiXSxbImUzNDAiLCLntILntJzntJXntIrntYXntYvntK7ntLLntL/ntLXntYbntbPntZbntY7ntbLntajnta7ntY/ntaPntpPntonntZvnto/ntb3ntpvntrrntq7ntqPntrXnt4fntr3ntqvnuL3ntqLntq/nt5zntrjntp/ntrDnt5jnt53nt6Tnt57nt7vnt7Lnt6HnuIXnuIrnuKPnuKHnuJLnuLHnuJ/nuInnuIvnuKLnuYbnuabnuLvnuLXnuLnnuYPnuLciXSxbImUzODAiLCLnuLLnuLrnuafnuZ3nuZbnuZ7nuZnnuZrnubnnuarnuannubznubvnuoPnt5Xnub3ovq7nub/nuojnuonnuoznupLnupDnupPnupTnupbnuo7nupvnupznvLjnvLrnvYXnvYznvY3nvY7nvZDnvZHnvZXnvZTnvZjnvZ/nvaDnvajnvannvafnvbjnvoLnvobnvoPnvojnvofnvoznvpTnvp7nvp3nvprnvqPnvq/nvrLnvrnnvq7nvrbnvrjorbHnv4Xnv4bnv4rnv5Xnv5Tnv6Hnv6bnv6nnv7Pnv7npo5zogIbogITogIvogJLogJjogJnogJzogKHogKjogL/ogLvogYrogYbogZLogZjogZrogZ/ogaLogajogbPogbLogbDogbbogbnogb3ogb/ogoTogobogoXogpvogpPogprogq3lhpDogqzog5vog6Xog5nog53og4Tog5rog5bohInog6/og7HohJvohKnohKPohK/ohYsiXSxbImU0NDAiLCLpmovohYbohL7ohZPohZHog7zohbHoha7ohaXohabohbTohoPohojohorohoDohoLohqDohpXohqTohqPohZ/ohpPohqnohrDohrXohr7ohrjohr3oh4Doh4Lohrroh4noh43oh5Hoh5noh5joh4joh5roh5/oh6Doh6foh7roh7voh77oiIHoiILoiIXoiIfoiIroiI3oiJDoiJboiKnoiKvoiLjoiLPoiYDoiZnoiZjoiZ3oiZroiZ/oiaQiXSxbImU0ODAiLCLoiaLoiajoiaroiavoiK7oibHoibfoibjoib7oio3oipLoiqvoip/oirvoiqzoi6Hoi6Poi5/oi5Loi7Toi7Poi7rojpPojIPoi7voi7noi57ojIboi5zojInoi5nojLXojLTojJbojLLojLHojYDojLnojZDojYXojK/ojKvojJfojJjojoXojprojqrojp/ojqLojpbojKPojo7ojofojorojbzojrXojbPojbXojqDojonojqjoj7TokJPoj6voj47oj73okIPoj5jokIvoj4Hoj7fokIfoj6Doj7LokI3okKLokKDojr3okLjolIboj7voka3okKrokLzolZrokoTokbfokavokq3oka7okoLokanokYbokKzoka/okbnokLXok4rokaLokrnokr/okp/ok5nok43okrvok5rok5Dok4Hok4bok5bokqHolKHok7/ok7TolJfolJjolKzolJ/olJXolJTok7zolYDolaPolZjolYgiXSxbImU1NDAiLCLolYHomILolYvolZXoloDolqTolojolpHolorolqjola3olpTolpvol6rolofolpzolbfolb7olpDol4nolrrol4/olrnol5Dol5Xol53ol6Xol5zol7nomIromJPomIvol77ol7romIbomKLomJromLDomL/omY3kuZXomZTomZ/omafombHompPomqPomqnomqromovomozomrbomq/om4Tom4bomrDom4nooKPomqvom5Tom57om6nom6wiXSxbImU1ODAiLCLom5/om5vom6/onJLonIbonIjonIDonIPom7vonJHonInonI3om7nonIronLTonL/onLfonLvonKXonKnonJronaDonZ/onbjonYzonY7onbTonZfonajona7onZnonZPonaPonarooIXonqLonp/onoLonq/on4vonr3on4Don5Dpm5bonqvon4TonrPon4fon4bonrvon6/on7Lon6DooI/ooI3on77on7bon7fooI7on5LooJHooJbooJXooKLooKHooLHooLbooLnooKfooLvooYTooYLooZLooZnooZ7ooaLooavoooHoob7oop7oobXoob3oorXoobLoooLoopfoopLooq7oopnooqLooo3ooqToorDoor/oorHoo4Poo4Too5Too5joo5noo53oo7nopILoo7zoo7Too6joo7LopITopIzopIropJPopYPopJ7opKXopKropKvopYHopYTopLvopLbopLjopYzopJ3opaDopZ4iXSxbImU2NDAiLCLopabopaTopa3oparopa/opbTopbfopb7opoPopojoporoppPoppjopqHopqnopqbopqzopq/oprLoprropr3opr/op4Dop5rop5zop53op6fop7Top7joqIPoqJboqJDoqIzoqJvoqJ3oqKXoqLboqYHoqZvoqZLoqYboqYjoqbzoqa3oqazoqaLoqoXoqoLoqoToqqjoqqHoqpHoqqXoqqboqproqqPoq4Toq43oq4Loq5roq6voq7Poq6ciXSxbImU2ODAiLCLoq6Toq7HorJToq6Doq6Loq7foq57oq5vorIzorIforJroq6HorJborJDorJforKDorLPpnqvorKborKvorL7orKjorYHorYzorY/orY7orYnorZborZvorZroravorZ/orazora/orbTorb3oroDorozoro7orpLorpPorpborpnorprosLrosYHosL/osYjosYzosY7osZDosZXosaLosazosbjosbrosoLosonosoXosoroso3oso7ospTosbzospjmiJ3osq3osqrosr3osrLosrPosq7osrbos4jos4Hos6Tos6Pos5ros73os7ros7votITotIXotIrotIfotI/otI3otJDpvY7otJPos43otJTotJbotafota3otbHotbPotoHotpnot4Lotr7otrrot4/ot5rot5bot4zot5vot4vot6rot6vot5/ot6Pot7zouIjouInot7/ouJ3ouJ7ouJDouJ/ouYLouLXouLDouLTouYoiXSxbImU3NDAiLCLouYfouYnouYzouZDouYjouZnouaTouaDouKrouaPouZXoubboubLoubzouoHouofouoXouoTouovouoroupPoupHoupToupnouqrouqHouqzourDou4bourHour7ou4Xou4jou4vou5vou6Pou7zou7vou6vou77ovIrovIXovJXovJLovJnovJPovJzovJ/ovJvovIzovKbovLPovLvovLnovYXovYLovL7ovYzovYnovYbovY7ovZfovZwiXSxbImU3ODAiLCLovaLovaPovaTovpzovp/ovqPovq3ovq/ovrfov5rov6Xov6Lov6rov6/pgofov7TpgIXov7nov7rpgJHpgJXpgKHpgI3pgJ7pgJbpgIvpgKfpgLbpgLXpgLnov7jpgY/pgZDpgZHpgZLpgI7pgYnpgL7pgZbpgZjpgZ7pgajpga/pgbbpmqjpgbLpgoLpgb3pgoHpgoDpgorpgonpgo/pgqjpgq/pgrHpgrXpg6Lpg6TmiYjpg5vphILphJLphJnphLLphLDphYrphZbphZjphaPphaXphanphbPphbLphovphonphoLphqLphqvphq/phqrphrXphrTphrrph4Dph4Hph4nph4vph5Dph5bph5/ph6Hph5vph7zph7Xph7bpiJ7ph7/piJTpiKzpiJXpiJHpiZ7piZfpiYXpiYnpiaTpiYjpipXpiL/piYvpiZDpipzpipbpipPpipvpiZrpi4/pirnpirfpi6npjI/pi7rpjYTpjK4iXSxbImU4NDAiLCLpjJnpjKLpjJrpjKPpjLrpjLXpjLvpjZzpjaDpjbzpja7pjZbpjrDpjqzpjq3pjpTpjrnpj5bpj5fpj6jpj6Xpj5jpj4Ppj53pj5Dpj4jpj6TpkJrpkJTpkJPpkIPpkIfpkJDpkLbpkKvpkLXpkKHpkLrpkYHpkZLpkYTpkZvpkaDpkaLpkZ7pkarpiKnpkbDpkbXpkbfpkb3pkZrpkbzpkb7pkoHpkb/ploLplofplorplpTplpbplpjplpkiXSxbImU4ODAiLCLplqDplqjplqfplq3plrzplrvplrnplr7pl4rmv7bpl4Ppl43pl4zpl5Xpl5Tpl5bpl5zpl6Hpl6Xpl6LpmKHpmKjpmK7pmK/pmYLpmYzpmY/pmYvpmbfpmZzpmZ7pmZ3pmZ/pmabpmbLpmazpmo3pmpjpmpXpmpfpmqrpmqfpmrHpmrLpmrDpmrTpmrbpmrjpmrnpm47pm4vpm4npm43opY3pm5zpnI3pm5Xpm7npnITpnIbpnIjpnJPpnI7pnJHpnI/pnJbpnJnpnKTpnKrpnLDpnLnpnL3pnL7pnYTpnYbpnYjpnYLpnYnpnZzpnaDpnaTpnabpnajli5LpnavpnbHpnbnpnoXpnbzpnoHpnbrpnobpnovpno/pnpDpnpzpnqjpnqbpnqPpnrPpnrTpn4Ppn4bpn4jpn4vpn5zpn63pvY/pn7Lnq5/pn7bpn7XpoI/poIzpoLjpoKTpoKHpoLfpoL3poYbpoY/poYvpoavpoa/pobAiXSxbImU5NDAiLCLpobHpobTpobPpoqrpoq/porHporbpo4Tpo4Ppo4bpo6npo6vppIPppInppJLppJTppJjppKHppJ3ppJ7ppKTppKDppKzppK7ppL3ppL7ppYLppYnppYXppZDppYvppZHppZLppYzppZXpppfpppjppqXppq3ppq7pprzpp5/pp5vpp53pp5jpp5Hpp63pp67pp7Hpp7Lpp7vpp7jpqIHpqI/pqIXpp6LpqJnpqKvpqLfpqYXpqYLpqYDpqYMiXSxbImU5ODAiLCLpqL7pqZXpqY3pqZvpqZfpqZ/pqaLpqaXpqaTpqanpqavpqarpqq3pqrDpqrzpq4Dpq4/pq5Hpq5Ppq5Tpq57pq5/pq6Lpq6Ppq6bpq6/pq6vpq67pq7Tpq7Hpq7fpq7vprIbprJjprJrprJ/prKLprKPprKXprKfprKjprKnprKrprK7prK/prLLprYTprYPprY/prY3prY7prZHprZjprbTprpPproPprpHprpbprpfprp/prqDprqjprrTpr4Dpr4rprrnpr4bpr4/pr5Hpr5Lpr6Ppr6Lpr6Tpr5Tpr6HpsLrpr7Lpr7Hpr7DpsJXpsJTpsInpsJPpsIzpsIbpsIjpsJLpsIrpsITpsK7psJvpsKXpsKTpsKHpsLDpsYfpsLLpsYbpsL7psZrpsaDpsafpsbbpsbjps6fps6zps7DptInptIjps6vptIPptIbptKrptKbptq/ptKPptJ/ptYTptJXptJLptYHptL/ptL7ptYbptYgiXSxbImVhNDAiLCLptZ3ptZ7ptaTptZHptZDptZnptbLptonptofptqvpta/ptbrptprptqTptqnptrLpt4Tpt4Hptrvptrjptrrpt4bpt4/pt4Lpt5npt5Ppt7jpt6bpt63pt6/pt73puJrpuJvpuJ7pubXpubnpub3puoHpuojpuovpuozpupLpupXpupHpup3puqXpuqnpurjpuqrpuq3pnaHpu4zpu47pu4/pu5Dpu5Tpu5zpu57pu53pu6Dpu6Xpu6jpu68iXSxbImVhODAiLCLpu7Tpu7bpu7fpu7npu7vpu7zpu73pvIfpvIjnmrfpvJXpvKHpvKzpvL7pvYrpvZLpvZTpvaPpvZ/pvaDpvaHpvabpvafpvazpvarpvbfpvbLpvbbpvpXpvpzpvqDloK/mp4fpgZnnkaTlh5znhpkiXSxbImVkNDAiLCLnuoropJzpjYjpiojok5zkv4nngrvmmLHmo4jpi7nmm7vlvYXkuKjku6Hku7zkvIDkvIPkvLnkvZbkvpLkvorkvprkvpTkv43lgYDlgKLkv7/lgJ7lgYblgbDlgYLlgpTlg7Tlg5jlhYrlhaTlhp3lhr7lh6zliJXlipzliqbli4Dli5vljIDljIfljKTljbLljpPljrLlj53vqI7lkpzlkorlkqnlk7/lloblnZnlnaXlnqzln4jln4fvqI8iXSxbImVkODAiLCLvqJDlop7lorLlpIvlpZPlpZvlpZ3lpaPlpqTlprrlrZblr4DnlK/lr5jlr6zlsJ7lsqblsrrls7XltKfltZPvqJHltYLlta3ltrjltrnlt5DlvKHlvLTlvaflvrflv57mgZ3mgoXmgormg57mg5XmhKDmg7LmhJHmhLfmhLDmhpjmiJPmiqbmj7XmkaDmkp3mk47mlY7mmIDmmJXmmLvmmInmmK7mmJ7mmKTmmaXmmZfmmZnvqJLmmbPmmpnmmqDmmrLmmr/mm7rmnI7vpKnmnabmnrvmoZLmn4DmoIHmoYTmo4/vqJPmpajvqJTmppjmp6LmqLDmqavmqYbmqbPmqb7mq6Lmq6Tmr5bmsL/msZzmsobmsa/ms5rmtITmtofmta/mtpbmtqzmt4/mt7jmt7Lmt7zmuLnmuZzmuKfmuLzmur/mvojmvrXmv7XngIXngIfngKjngoXngqvnhI/nhITnhZznhYbnhYfvqJXnh4Hnh77nirEiXSxbImVlNDAiLCLnir7njKTvqJbnjbfnjr3nj4nnj5bnj6Pnj5LnkIfnj7XnkKbnkKrnkKnnkK7nkaLnkonnkp/nlIHnla/nmoLnmpznmp7nmpvnmqbvqJfnnYbliq/noKHnoY7noaTnobrnpLDvqJjvqJnvqJrnppTvqJvnppvnq5Hnq6fvqJznq6vnrp7vqJ3ntYjntZzntrfntqDnt5bnuZLnvYfnvqHvqJ7ojIHojaLojb/oj4foj7bokYjokrTolZPolZkiXSxbImVlODAiLCLolavvqJ/olrDvqKDvqKHooIfoo7XoqJLoqLfoqbnoqqfoqr7oq5/vqKLoq7borZPorb/os7Dos7TotJLotbbvqKPou4/vqKTvqKXpgafpg57vqKbphJXphKfph5rph5fph57ph63ph67ph6Tph6XpiIbpiJDpiIrpiLrpiYDpiLzpiY7piZnpiZHpiLnpiafpiqfpibfpibjpi6fpi5fpi5npi5DvqKfpi5Xpi6Dpi5PpjKXpjKHpi7vvqKjpjJ7pi7/pjJ3pjILpjbDpjZfpjqTpj4bpj57pj7jpkLHpkYXpkYjplpLvp5zvqKnpmp3pmq/pnLPpnLvpnYPpnY3pnY/pnZHpnZXpoZfpoaXvqKrvqKvppKfvqKzppp7pqY7pq5npq5zprbXprbLpro/prrHprrvpsIDptbDptavvqK3puJnpu5EiXSxbImVlZWYiLCLihbAiLDksIu+/ou+/pO+8h++8giJdLFsiZjA0MCIsIu6AgCIsNjJdLFsiZjA4MCIsIu6AvyIsMTI0XSxbImYxNDAiLCLugrwiLDYyXSxbImYxODAiLCLug7siLDEyNF0sWyJmMjQwIiwi7oW4Iiw2Ml0sWyJmMjgwIiwi7oa3IiwxMjRdLFsiZjM0MCIsIu6ItCIsNjJdLFsiZjM4MCIsIu6JsyIsMTI0XSxbImY0NDAiLCLui7AiLDYyXSxbImY0ODAiLCLujK8iLDEyNF0sWyJmNTQwIiwi7o6sIiw2Ml0sWyJmNTgwIiwi7o+rIiwxMjRdLFsiZjY0MCIsIu6RqCIsNjJdLFsiZjY4MCIsIu6SpyIsMTI0XSxbImY3NDAiLCLulKQiLDYyXSxbImY3ODAiLCLulaMiLDEyNF0sWyJmODQwIiwi7pegIiw2Ml0sWyJmODgwIiwi7pifIiwxMjRdLFsiZjk0MCIsIu6anCJdLFsiZmE0MCIsIuKFsCIsOSwi4oWgIiw5LCLvv6Lvv6TvvIfvvILjiLHihJbihKHiiLXnuoropJzpjYjpiojok5zkv4nngrvmmLHmo4jpi7nmm7vlvYXkuKjku6Hku7zkvIDkvIPkvLnkvZbkvpLkvorkvprkvpTkv43lgYDlgKLkv7/lgJ7lgYblgbDlgYLlgpTlg7Tlg5jlhYoiXSxbImZhODAiLCLlhaTlhp3lhr7lh6zliJXlipzliqbli4Dli5vljIDljIfljKTljbLljpPljrLlj53vqI7lkpzlkorlkqnlk7/lloblnZnlnaXlnqzln4jln4fvqI/vqJDlop7lorLlpIvlpZPlpZvlpZ3lpaPlpqTlprrlrZblr4DnlK/lr5jlr6zlsJ7lsqblsrrls7XltKfltZPvqJHltYLlta3ltrjltrnlt5DlvKHlvLTlvaflvrflv57mgZ3mgoXmgormg57mg5XmhKDmg7LmhJHmhLfmhLDmhpjmiJPmiqbmj7XmkaDmkp3mk47mlY7mmIDmmJXmmLvmmInmmK7mmJ7mmKTmmaXmmZfmmZnvqJLmmbPmmpnmmqDmmrLmmr/mm7rmnI7vpKnmnabmnrvmoZLmn4DmoIHmoYTmo4/vqJPmpajvqJTmppjmp6LmqLDmqavmqYbmqbPmqb7mq6Lmq6Tmr5bmsL/msZzmsobmsa/ms5rmtITmtofmta8iXSxbImZiNDAiLCLmtpbmtqzmt4/mt7jmt7Lmt7zmuLnmuZzmuKfmuLzmur/mvojmvrXmv7XngIXngIfngKjngoXngqvnhI/nhITnhZznhYbnhYfvqJXnh4Hnh77nirHnir7njKTvqJbnjbfnjr3nj4nnj5bnj6Pnj5LnkIfnj7XnkKbnkKrnkKnnkK7nkaLnkonnkp/nlIHnla/nmoLnmpznmp7nmpvnmqbvqJfnnYbliq/noKHnoY7noaTnobrnpLDvqJjvqJkiXSxbImZiODAiLCLvqJrnppTvqJvnppvnq5Hnq6fvqJznq6vnrp7vqJ3ntYjntZzntrfntqDnt5bnuZLnvYfnvqHvqJ7ojIHojaLojb/oj4foj7bokYjokrTolZPolZnolavvqJ/olrDvqKDvqKHooIfoo7XoqJLoqLfoqbnoqqfoqr7oq5/vqKLoq7borZPorb/os7Dos7TotJLotbbvqKPou4/vqKTvqKXpgafpg57vqKbphJXphKfph5rph5fph57ph63ph67ph6Tph6XpiIbpiJDpiIrpiLrpiYDpiLzpiY7piZnpiZHpiLnpiafpiqfpibfpibjpi6fpi5fpi5npi5DvqKfpi5Xpi6Dpi5PpjKXpjKHpi7vvqKjpjJ7pi7/pjJ3pjILpjbDpjZfpjqTpj4bpj57pj7jpkLHpkYXpkYjplpLvp5zvqKnpmp3pmq/pnLPpnLvpnYPpnY3pnY/pnZHpnZXpoZfpoaXvqKrvqKvppKfvqKzppp7pqY7pq5kiXSxbImZjNDAiLCLpq5zprbXprbLpro/prrHprrvpsIDptbDptavvqK3puJnpu5EiXV0KCi8qKiovIH0pLAovKiAxODEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKbW9kdWxlLmV4cG9ydHMgPSBbWyIwIiwiXHUwMDAwIiwxMjddLFsiOGVhMSIsIu+9oSIsNjJdLFsiYTFhMSIsIuOAgOOAgeOAgu+8jO+8juODu++8mu+8m++8n++8geOCm+OCnMK0772AwqjvvL7vv6PvvL/jg73jg77jgp3jgp7jgIPku53jgIXjgIbjgIfjg7zigJXigJDvvI/vvLzvvZ7iiKXvvZzigKbigKXigJjigJnigJzigJ3vvIjvvInjgJTjgJXvvLvvvL3vvZvvvZ3jgIgiLDksIu+8i++8jcKxw5fDt++8neKJoO+8nO+8nuKJpuKJp+KInuKItOKZguKZgMKw4oCy4oCz4oSD77+l77yE77+g77+h77yF77yD77yG77yK77ygwqfimIbimIXil4vil4/il47il4ciXSxbImEyYTEiLCLil4bilqHilqDilrPilrLilr3ilrzigLvjgJLihpLihpDihpHihpPjgJMiXSxbImEyYmEiLCLiiIjiiIviiobiiofiioLiioPiiKriiKkiXSxbImEyY2EiLCLiiKfiiKjvv6Lih5Lih5TiiIDiiIMiXSxbImEyZGMiLCLiiKDiiqXijJLiiILiiIfiiaHiiZLiiariiaviiJriiL3iiJ3iiLXiiKviiKwiXSxbImEyZjIiLCLihKvigLDima/ima3imarigKDigKHCtiJdLFsiYTJmZSIsIuKXryJdLFsiYTNiMCIsIu+8kCIsOV0sWyJhM2MxIiwi77yhIiwyNV0sWyJhM2UxIiwi772BIiwyNV0sWyJhNGExIiwi44GBIiw4Ml0sWyJhNWExIiwi44KhIiw4NV0sWyJhNmExIiwizpEiLDE2LCLOoyIsNl0sWyJhNmMxIiwizrEiLDE2LCLPgyIsNl0sWyJhN2ExIiwi0JAiLDUsItCB0JYiLDI1XSxbImE3ZDEiLCLQsCIsNSwi0ZHQtiIsMjVdLFsiYThhMSIsIuKUgOKUguKUjOKUkOKUmOKUlOKUnOKUrOKUpOKUtOKUvOKUgeKUg+KUj+KUk+KUm+KUl+KUo+KUs+KUq+KUu+KVi+KUoOKUr+KUqOKUt+KUv+KUneKUsOKUpeKUuOKVgiJdLFsiYWRhMSIsIuKRoCIsMTksIuKFoCIsOV0sWyJhZGMwIiwi442J44yU44yi442N44yY44yn44yD44y2442R442X44yN44ym44yj44yr442K44y7446c446d446e446O446P44+E446hIl0sWyJhZGRmIiwi442744Cd44Cf4oSW44+N4oSh44qkIiw0LCLjiLHjiLLjiLnjjb7jjb3jjbziiZLiiaHiiKviiK7iiJHiiJriiqXiiKDiiJ/iir/iiLXiiKniiKoiXSxbImIwYTEiLCLkupzllJblqIPpmL/lk4DmhJvmjKjlp7bpgKLokbXojJznqZDmgqrmj6HmuKXml63okaboiqbpr7XmopPlnKfmlqHmibHlrpvlp5Dombvpo7TntaLntr7pro7miJbnsp/oorflronlurXmjInmmpfmoYjpl4fpno3mnY/ku6XkvIrkvY3kvp3lgYnlm7LlpLflp5TlqIHlsInmg5/mhI/mhbDmmJPmpIXngrrnlY/nlbDnp7vntq3nt6/og4PokI7ooaPorILpgZXpgbrljLvkupXkuqXln5/ogrLpg4Hno6/kuIDlo7HmuqLpgLjnqLLojKjoiovpsK/lhYHljbDlkr3lk6Hlm6Dlp7vlvJXpo7Lmt6vog6TolK0iXSxbImIxYTEiLCLpmaLpmbDpmqDpn7vlkIvlj7Plrofng4/nvr3ov4Lpm6jlja/ptZznqrrkuJHnopPoh7zmuKblmJjllITmrJ3olJrpsLvlp6Xljqnmtabnk5zplo/lmYLkupHpgYvpm7LojY/ppIzlj6HllrblrLDlvbHmmKDmm7PmoITmsLjms7PmtKnnkZvnm4jnqY7poLToi7HooZvoqaDpi63mtrLnlqvnm4rpp4XmgqborIHotorplrLmpo7ljq3lhoblnJLloLDlpYTlrrTlu7bmgKjmjqnmj7Tmsr/mvJTngo7nhJTnhZnnh5XnjL/nuIHoibboi5HolpfpgaDpiZvptJvloanmlrzmsZrnlKXlh7nlpK7lpaXlvoDlv5wiXSxbImIyYTEiLCLmirzml7rmqKrmrKfmrrTnjovnv4HopZbptKzptI7pu4TlsqHmspbojbvlhITlsYvmhrboh4bmobbniaHkuZnkv7rljbjmganmuKnnqY/pn7PkuIvljJbku67kvZXkvL3kvqHkvbPliqDlj6/lmInlpI/lq4Hlrrblr6Hnp5HmmofmnpzmnrbmrYzmsrPngavnj4Lnpo3npr7nqLznrofoirHoi5vojITojbfoj6/oj5PonaboqrLlmKnosqjov6bpgY7pnJ7omorkv4Tls6jmiJHniZnnlLvoh6Xoir3om77os4Dpm4XppJPpp5Xku4vkvJrop6Plm57loYrlo4rlu7vlv6vmgKrmgpTmgaLmh5DmiJLmi5DmlLkiXSxbImIzYTEiLCLprYHmmabmorDmtbfngbDnlYznmobntbXoiqXon7nplovpmo7osp3lh7Hlir7lpJblkrPlrrPltJbmhajmpoLmtq/noo3ok4vooZfoqbLpjqfpqrjmtazppqjom5nlnqPmn7/om47piI7lioPlmoflkITlu5Pmi6HmkrnmoLzmoLjmrrvnjbLnorrnqavopprop5LotavovIPpg63plqPpmpTpnanlrablsrPmpb3poY3poY7mjpvnrKDmqKvmqb/morbpsI3mvZ/libLllp3mgbDmi6zmtLvmuIfmu5HokZvopJDovYTkuJTpsLnlj7bmpJvmqLrpnoTmoKrlhZznq4PokrLph5zpjozlmZvptKjmoKLojIXokLEiXSxbImI0YTEiLCLnsqXliIjoi4Xnk6bkub7kvoPlhqDlr5LliIrli5jli6flt7vllprloKrlp6blrozlrpjlr5vlubLlubnmgqPmhJ/mhaPmhr7mj5vmlaLmn5HmoZPmo7rmrL7mrZPmsZfmvKLmvpfmvYXnkrDnlJjnm6PnnIvnq7/nrqHnsKHnt6nnvLbnv7Dogp3oiabojp7oprPoq4zosqvpgoTpkZHplpPplpHplqLpmaXpn5PppKjoiJjkuLjlkKvlsrjlt4znjqnnmYznnLzlsqnnv6votIvpm4HpoJHpoZTpoZjkvIHkvI7ljbHllpzlmajln7rlpYflrInlr4TlspDluIzlub7lv4zmj67mnLrml5fml6LmnJ/mo4vmo4QiXSxbImI1YTEiLCLmqZ/luLDmr4XmsJfmsb3nlb/npYjlraPnqIDntIDlvr3opo/oqJjosrTotbfou4zovJ3po6LpqI7prLzkuoDlgb3lhIDlppPlrpzmiK/mioDmk6zmrLrniqDnlpHnpYfnvqnon7voqrzorbDmjqzoj4rpnqDlkInlkIPllqvmoZTmqZjoqbDnoKfmnbXpu43ljbTlrqLohJromZDpgIbkuJjkuYXku4fkvJHlj4rlkLjlrq7lvJPmgKXmlZHmnL3msYLmsbLms6PngbjnkIPnqbbnqq7nrIjntJrns77ntabml6fniZvljrvlsYXlt6jmi5Lmi6DmjJnmuKDomZroqLHot53pi7jmvIHnpqbprZrkuqjkuqvkuqwiXSxbImI2YTEiLCLkvpvkvqDlg5HlhYfnq7blhbHlh7bljZTljKHljb/lj6vllqzlooPls6HlvLflvYrmgK/mgZDmga3mjJ/mlZnmqYvms4Hni4Lni63nn6/og7johIXoiIjolY7pg7fpj6Hpn7/ppZfpqZrku7Dlh53lsK3mmoHmpa3lsYDmm7LmpbXnjonmoZDnsoHlg4Xli6TlnYflt77pjKbmlqTmrKPmrL3nkLTnpoHnpr3nrYvnt4roirnoj4zoob/opZ/orLnov5Hph5HlkJ/pioDkuZ3lgLblj6XljLrni5fnjpbnn6noi6bouq/pp4bpp4jpp5LlhbfmhJromZ7llrDnqbrlgbblr5PpgYfpmoXkuLLmq5vph6flsZHlsYgiXSxbImI3YTEiLCLmjpjnqp/mspPpnbTovaHnqqrnhorpmojnsoLmoJfnubDmoZHpjazli7LlkJvolqvoqJPnvqTou43pg6HljabooojnpYHkv4Llgr7liJHlhYTllZPlnK3nj6rlnovlpZHlvaLlvoTmgbXmhbbmhafmhqnmjrLmkLrmlazmma/moYLmuJPnlabnqL3ns7vntYzntpnnuYvnvavojI7ojYrom43oqIjoqaPorabou73poJrpto/oirjov47pr6jliofmiJ/mkoPmv4DpmpnmoYHlgpHmrKDmsbrmvZTnqbTntZDooYDoqKPmnIjku7blgLnlgKblgaXlhbzliLjliaPllqflnI/loIXlq4zlu7rmhrLmh7jmi7PmjbIiXSxbImI4YTEiLCLmpJzmqKnnib3niqznjK7noJTnoa/ntbnnnIzogqnopovorJnos6Lou5LpgaPpjbXpmbrpoZXpqJPpubjlhYPljp/ljrPlubvlvKbmuJvmupDnjoTnj77ntYPoiLfoqIDoq7rpmZDkuY7lgIvlj6Tlkbzlm7rlp5HlraTlt7HluqvlvKfmiLjmlYXmnq/muZbni5Dns4roorTogqHog6Hoj7DomY7oqofot6jpiLfpm4fpoafpvJPkupTkupLkvI3ljYjlkYnlkL7lqK/lvozlvqHmgp/moqfmqo7nkZrnooHoqp7oqqTorbfphpDkuZ7pr4nkuqTkvbzkvq/lgJnlgJblhYnlhazlip/lirnli77ljprlj6PlkJEiXSxbImI5YTEiLCLlkI7llonlnZHlnqLlpb3lrZTlrZ3lro/lt6Xlt6flt7flubjluoPluprlurflvJjmgZLmhYzmipfmi5jmjqfmlLvmmILmmYPmm7Tmna3moKHmopfmp4vmsZ/mtKrmtanmuK/mup3nlLLnmofnoaznqL/ns6DntIXntJjntZ7ntrHogJXogIPogq/ogrHohZToho/oiKrojZLooYzooaHorJvosqLos7zpg4rphbXpibHnoL/pi7zplqTpmY3poIXpppnpq5jptLvliZvliqvlj7flkIjlo5Xmi7fmv6DosarovZ/purnlhYvliLvlkYrlm73nqYDphbfptaDpu5LnjYTmvInohbDnlJHlv73mg5rpqqjni5vovrwiXSxbImJhYTEiLCLmraTpoIPku4rlm7DlnaTlor7lqZrmgajmh4fmmI/mmIbmoLnmorHmt7fnl5XntLroia7prYLkupvkvZDlj4nllIblta/lt6blt67mn7vmspnnkbPnoILoqZDpjpboo5/lnZDluqfmjKvlgrXlgqzlho3mnIDlk4nloZ7lprvlrrDlvanmiY3mjqHmoL3mrbPmuIjngb3ph4fnioDnoJXnoKbnpa3mlo7ntLDoj5zoo4HovInpmpvliaTlnKjmnZDnvarosqHlhrTlnYLpmKrloLrmporogrTlkrLltI7ln7znopXpt7rkvZzliYrlkovmkL7mmKjmnJTmn7XnqoTnrZbntKLpjK/moZzprq3nrLnljJnlhorliLciXSxbImJiYTEiLCLlr5/mi7bmkq7mk6bmnK3mrrrolqnpm5HnmpDpr5bmjYzpjIbprqvnmr/mmZLkuInlgpjlj4LlsbHmg6jmkpLmlaPmoZ/nh6bnj4rnlKPnrpfnuoLompXoroPos5vphbjppJDmlqzmmqvmrovku5Xku5TkvLrkvb/liLrlj7jlj7Lll6Plm5vlo6vlp4vlp4nlp7/lrZDlsY3luILluKvlv5fmgJ3mjIfmlK/lrZzmlq/mlr3ml6jmnp3mraLmrbvmsI/njYXnpYnnp4Hns7jntJnntKvogqLohILoh7PoppboqZ7oqanoqaboqozoq67os4fos5zpm4zpo7zmra/kuovkvLzkvo3lhZDlrZflr7rmhYjmjIHmmYIiXSxbImJjYTEiLCLmrKHmu4vmsrvniL7nkr3nl5Tno4HnpLrogIzogLPoh6rokpTovp7msZDpub/lvI/orZjptKvnq7rou7jlro3pm6vkuIPlj7Hln7flpLHlq4nlrqTmgonmub/mvIbnlr7os6rlrp/olIDnr6DlgbLmn7Toip3lsaHolYrnuJ7oiI7lhpnlsITmjajotabmlpznha7npL7ntJfogIXorJ3ou4rpga7om4fpgqrlgJ/li7rlsLrmnZPngbzniLXphYzph4jpjKvoi6Xlr4LlvLHmg7nkuLvlj5blrojmiYvmnLHmrorni6nnj6DnqK7ohavotqPphZLpppblhJLlj5flkarlr7/mjojmqLnntqzpnIDlm5rlj47lkagiXSxbImJkYTEiLCLlrpflsLHlt57kv67mhIHmi77mtLLnp4Dnp4vntYLnuY3nv5Loh63oiJ/okpDooYbopbLorpDoubTovK/pgLHphYvphazpm4bphpzku4DkvY/lhYXljYHlvpPmiI7mn5TmsYHmuIvnjaPnuKbph43pioPlj5TlpJnlrr/mt5HnpZ3nuK7nspvlob7nhp/lh7rooZPov7Dkv4rls7vmmKXnnqznq6PoiJzpp7/lh4blvqrml6zmpa/mronmt7PmupbmvaTnm77ntJTlt6HpgbXphofpoIblh6bliJ3miYDmmpHmm5nmuJrlurbnt5LnvbLmm7jolq/ol7foq7jliqnlj5nlpbPluo/lvpDmgZXpi6TpmaTlgrflhJ8iXSxbImJlYTEiLCLli53ljKDljYflj6zlk6jllYbllLHlmJflpajlpr7lqLzlrrXlsIblsI/lsJHlsJrluoTluorlu6DlvbDmib/mioTmi5vmjozmjbfmmIfmmIzmmK3mmbbmnb7moqLmqJ/mqLXmsrzmtojmuInmuZjnhLznhKbnhafnl4fnnIHnoZ3npIHnpaXnp7Dnq6DnrJHnsqfntLnogpboj5bokovolYnooZ3oo7PoqJ/oqLzoqZToqbPosaHos57phqTpiabpjb7pkJjpmpzpnpjkuIrkuIjkuJ7kuZflhpflibDln47loLTlo4zlrKLluLjmg4Xmk77mnaHmnZbmtYTnirbnlbPnqaPokrjorbLphrjpjKDlmLHln7Tpo74iXSxbImJmYTEiLCLmi63mpI3mrpbnh63nuZTogbfoibLop6bpo5/onZXovrHlsLvkvLjkv6HkvrXllIflqKDlr53lr6nlv4PmhY7mjK/mlrDmmYvmo67mppvmtbjmt7HnlLPnlrnnnJ/npZ7np6bntLPoh6Poiq/olqropqroqLrouqvovpvpgLLph53pnIfkurrku4HliIPlobXlo6zlsIvnlJrlsL3ohY7oqIrov4XpmaPpna3nrKXoq4/poIjphaLlm7PljqjpgJflkLnlnoLluKXmjqjmsLTngornnaHnsovnv6DoobDpgYLphZTpjJDpjJjpmo/nkZ7pq4TltIfltanmlbDmnqLotqjpm5vmja7mnYnmpJnoj4XpoJfpm4Doo74iXSxbImMwYTEiLCLmvoTmkbrlr7jkuJbngKznlZ3mmK/lh4TliLbli6Llp5PlvoHmgKfmiJDmlL/mlbTmmJ/mmbTmo7LmoJbmraPmuIXnibLnlJ/nm5vnsr7ogZblo7Doo73opb/oqqDoqpPoq4vpgJ3phpLpnZLpnZnmlonnqI7ohIbpmrvluK3mg5zmiJrmlqXmmJTmnpDnn7PnqY3nsY3nuL7ohIrosqzotaTot6HouZ/noqnliIfmi5nmjqXmkYLmipjoqK3nqoPnr4Doqqzpm6rntbboiIzonYnku5nlhYjljYPljaDlrqPlsILlsJblt53miKbmiYfmkrDmoJPmoLTms4nmtYXmtJfmn5PmvZznhY7nhb3ml4vnqb/nrq3nt5oiXSxbImMxYTEiLCLnuYrnvqjohbroiJvoiLnolqboqa7os47ot7Xpgbjpgbfpiq3pipHploPprq7liY3lloTmvLjnhLblhajnpoXnuZXohrPns47lmYzloZHlsqjmjqrmm77mm73mpZrni5nnlo/nlo7npI7npZbnp5/nspfntKDntYTomIfoqLTpmLvpgaHpvKDlg6flibXlj4zlj6LlgInllqrlo67lpY/niL3lrovlsaTljJ3mg6Pmg7PmjZzmjoPmjL/mjrvmk43ml6nmm7nlt6Pmp43mp73mvJXnh6Xkuonnl6nnm7jnqpPns5/nt4/ntpzogaHojYnojZjokazokrzol7voo4XotbDpgIHpga3pjpfpnJzpqJLlg4/lopfmho4iXSxbImMyYTEiLCLoh5PolLXotIjpgKDkv4PlgbTliYfljbPmga/mjYnmnZ/muKzotrPpgJ/kv5flsZ7os4rml4/ntprljZLoopblhbbmj4PlrZjlravlsIrmkI3mnZHpgZzku5blpJrlpKrmsbDoqZHllL7loJXlpqXmg7DmiZPmn4HoiLXmpZXpmYDpp4TpqKjkvZPloIblr77ogJDlsrHluK/lvoXmgKDmhYvmiLTmm7/ms7Dmu57og47ohb/oi5TooovosrjpgIDpgK7pmorpu5vpr5vku6Plj7DlpKfnrKzpho3poYzpt7nmu53ngKfljZPllYTlroXmiZjmip7mi5PmsqLmv6/nkKLoqJfpkLjmv4Hoq77ojLjlh6fom7jlj6oiXSxbImMzYTEiLCLlj6nkvYbpgZTovrDlparohLHlt73nq6rovr/mo5rosLfni7jpsYjmqL3oqrDkuLnljZjlmIblnabmi4XmjqLml6bmrY7mt6HmuZvngq3nn63nq6/nrqrntrvogL3og4bom4voqpXpjZvlm6Plo4flvL7mlq3mmpbmqoDmrrXnlLfoq4flgKTnn6XlnLDlvJvmgaXmmbrmsaDnl7TnqJrnva7oh7TonJjpgYXpprPnr4nnlZznq7nnrZHok4TpgJDnp6nnqpLojLblq6HnnYDkuK3ku7Llrpnlv6Dmir3mmLzmn7Hms6jomavoobfoqLvphY7pi7Ppp5DmqJfngKbnjKroi6fokZfosq/kuIHlhYblh4vllovlr7UiXSxbImM0YTEiLCLluJbluLPluoHlvJTlvLXlvavlvrTmh7LmjJHmmqLmnJ3mva7niZLnlLrnnLrogbTohLnohbjonbboqr/oq5zotoXot7PpiprplbfpoILps6Xli4XmjZfnm7TmnJXmsojnj43os4Ppjq7pmbPmtKXlopzmpI7mp4zov73pjprnl5vpgJrloZrmoILmjrTmp7vkvYPmvKzmn5jovrvolKbntrTpjZTmpL/mvbDlnarlo7flrKzntKzniKrlkIrph6PptrTkuq3kvY7lgZzlgbXliYPosp7lkYjloKTlrprluJ3lupXluq3lu7flvJ/mgozmirXmjLrmj5Dmoq/msYDnoofnpo7nqIvnt6DoiYfoqILoq6bouYTpgJMiXSxbImM1YTEiLCLpgrjphK3ph5jpvI7ms6XmkZjmk6LmlbXmu7TnmoTnrJvpganpj5Hmurrlk7LlvrnmkqTovY3ov63piYTlhbjloavlpKnlsZXlupfmt7vnuo/nlJzosrzou6LpoZvngrnkvJ3mrr/mvrHnlLDpm7vlhY7lkJDloLXloZflpqzlsaDlvpLmlpfmnZzmuKHnmbvoj5/os63pgJTpg73pjY3noKXnoLrliqrluqblnJ/lpbTmgJLlgJLlhZrlhqzlh43liIDllJDloZTloZjlpZflrpXls7bltovmgrzmipXmkK3mnbHmoYPmorzmo5/nm5fmt5jmua/mtpvnga/nh4jlvZPnl5jnpbfnrYnnrZTnrZLns5bntbHliLAiXSxbImM2YTEiLCLokaPolanol6ToqI7orITosYbouI/pgIPpgI/pkJnpmbbpoK3pqLDpl5jlg43li5XlkIzloILlsI7mhqfmkp7mtJ7nnrPnq6Xog7TokITpgZPpioXls6DptIfljL/lvpflvrPmtpznibnnnaPnpr/nr6Tmr5Lni6zoqq3moIPmqaHlh7jnqoHmpLTlsYrps7boi6vlr4XphYnngJ7lmbjlsa/mg4fmlabmsozosZrpgYHpoJPlkZHmm4fpiI3lpYjpgqPlhoXkuY3lh6rolpnorI7ngZjmjbrpjYvmpaLpprTnuITnlbfljZfmpaDou5/pm6PmsZ3kuozlsLzlvJDov6nljILos5Hogonombnlu7/ml6XkubPlhaUiXSxbImM3YTEiLCLlpoLlsL/pn67ku7vlporlv43oqo3mv6HnprDnpaLlr6fokbHnjKvnhrHlubTlv7Xmjbvmkprnh4PnspjkuYPlu7zkuYvln5zlmqLmgqnmv4PntI3og73ohLPohr/ovrLoppfomqTlt7Tmiormkq3opofmnbfms6LmtL7nkLbnoLTlqYbnvbXoiq3ppqzkv7Plu4Pmi53mjpLmlZfmna/nm4PniYzog4zogrrovKnphY3lgI3ln7nlqpLmooXmpbPnhaTni73osrflo7Los6DpmarpgJnonb/np6Tnn6fokKnkvK/liaXljZrmi43mn4/ms4rnmb3nrpTnspXoiLboloTov6vmm53mvKDniIbnuJvojqvpp4HpuqYiXSxbImM4YTEiLCLlh73nrrHnobLnrrjogofnrYjmq6jluaHogoznlZHnlaDlhavpiaLmuoznmbrphpfpq6rkvJDnvbDmipznrY/plqXps6nlmbrloZnom6TpmrzkvLTliKTljYrlj43lj5vluIbmkKzmlpHmnb/msL7msY7niYjniq/nj63nlZTnuYHoiKzol6nosqnnr4Tph4bnhanpoJLpo6/mjL3mmannlarnm6Tno5DolYPom67ljKrljZHlkKblpoPluoflvbzmgrLmiYnmibnmiqvmlpDmr5Tms4znlrLnmq7nopHnp5jnt4vnvbfogqXooqvoqrnosrvpgb/pnZ7po5vmqIvnsLjlgpnlsL7lvq7mnofmr5jnkLXnnInnvo4iXSxbImM5YTEiLCLpvLvmn4rnqJfljLnnlovpq63lvabohp3oj7HogpjlvLzlv4XnlaLnrYbpgLzmoaflp6vlqpvntJDnmb7orKzkv7XlvarmqJnmsLfmvILnk6LnpajooajoqZXosbnlu5/mj4/nl4Xnp5Loi5fpjKjpi7Lokpzom63psK3lk4HlvazmlozmtZzngJXosqfos5PpoLvmlY/nk7bkuI3ku5jln6DlpKvlqablr4zlhqjluIPlupzmgJbmibbmlbfmlqfmma7mta7niLbnrKbohZDohproipnorZzosqDos6botbTpmJzpmYTkvq7mkqvmraboiJ7okaHolarpg6jlsIHmpZPpoqjokbrolZfkvI/lia/lvqnluYXmnI0iXSxbImNhYTEiLCLnpo/ohbnopIfopobmt7XlvJfmiZXmsrjku4/nianprpLliIblkLvlmbTlorPmhqTmia7nhJrlpa7nsonns57ntJvpm7DmlofogZ7kuJnkvbXlhbXloYDluaPlubPlvIrmn4TkuKbolL3plonpmZvnsbPpoIHlg7vlo4HnmZbnoqfliKXnnqXolJHnroblgY/lpInniYfnr4fnt6jovrrov5TpgY3kvr/li4nlqKnlvIHpnq3kv53oiJfpi6rlnIPmjZXmrannlKvoo5zovJTnqYLli5/lopPmhZXmiIrmmq7mr43nsL/oj6nlgKPkv7jljIXlkYbloLHlpYnlrp3ls7Dls6/ltKnlupbmirHmjafmlL7mlrnmnIsiXSxbImNiYTEiLCLms5Xms6Hng7nnoLLnuKvog57oirPokIzok6zonILopJLoqKrosYrpgqbpi5Lpo73ps7PptazkuY/kuqHlgo3liZblnYrlpqjluL3lv5jlv5nmiL/mmrTmnJvmn5Dmo5LlhpLntKHogqrohqjorIDosozosr/pib7pmLLlkKDpoKzljJflg5XljZzloqjmkrLmnLTniafnnabnqYbph6bli4PmsqHmrobloIDluYzlpZTmnKznv7vlh6Hnm4bmkanno6jprZTpurvln4vlprnmmKfmnprmr47lk6nmp5nluZXohpzmnpXprqrmn77psZLmoZ3kuqbkv6Plj4jmirnmnKvmsqvov4Tkvq3nua3pur/kuIfmhaLmuoAiXSxbImNjYTEiLCLmvKvolJPlkbPmnKrprYXlt7PnrpXlsqzlr4bonJzmuYrok5HnqJTohIjlppnnso3msJHnnKDli5nlpKLnhKHniZ/nn5vpnKfptaHmpIvlqb/lqJjlhqXlkI3lkb3mmI7nm5/ov7fpipjps7Tlp6rniZ3mu4XlhY3mo4nntr/nt6zpnaLpurrmkbjmqKHojILlpoTlrZ/mr5vnjJvnm7LntrLogJfokpnlhLLmnKjpu5nnm67mnaLli7/ppIXlsKTmiLvnsb7osrDllY/mgrbntIvploDljIHkuZ/lhrblpJzniLrogLbph47lvKXnn6LljoTlvbnntITolqzoqLPouo3pnZbmn7Polq7pkZPmhInmhIjmsrnnmZIiXSxbImNkYTEiLCLoq63ovLjllK/kvZHlhKrli4flj4vlrqXlub3mgqDmhoLmj5bmnInmn5rmuafmtoznjLbnjLfnlLHnpZDoo5XoqpjpgYrpgpHpg7Xpm4Tono3lpJXkuojkvZnkuI7oqonovL/poJDlgq3lubzlppblrrnlurjmj5rmj7rmk4Hmm5zmpYrmp5jmtIvmurbnhpTnlKjnqq/nvorogIDokYnok4nopoHorKHouIrpgaXpmb3ppIrmhb7mipHmrLLmsoPmtbTnv4znv7zmt4DnvoXonrroo7jmnaXojrHpoLzpm7fmtJvntaHokL3pharkubHljbXltZDmrITmv6vol43omK3opqfliKnlkI/lsaXmnY7moqjnkIbnkoMiXSxbImNlYTEiLCLnl6Loo4/oo6Hph4zpm6Lpmbjlvovnjofnq4vokY7mjqDnlaXlionmtYHmupznkInnlZnnoavnspLpmobnq5zpvo3kvrbmha7ml4XomZzkuobkuq7lg5rkuKHlh4zlr67mlpnmooHmtrznjJ/nmYLnnq3nqJzns6foia/oq5Lpgbzph4/pmbXpoJjlipvnt5HlgKvljpjmnpfmt4vnh5DnkLPoh6jovKrpmqPpsZfpup/nkaDloYHmtpnntK/poZ7ku6TkvLbkvovlhrflirHltrrmgJznjrLnpLzoi5PpiLTpmrfpm7bpnIrpupfpvaLmmqbmrbTliJfliqPng4joo4Llu4nmgYvmhpDmvKPnhYnnsL7nt7Toga8iXSxbImNmYTEiLCLok67pgKPpjKzlkYLpra/mq5Pngonos4Lot6/pnLLlirTlqYHlu4rlvITmnJfmpbzmppTmtarmvI/niaLni7znr63ogIHogb7onYvpg47lha3pupPnpoTogovpjLLoq5blgK3lkozoqbHmraros4TohIfmg5HmnqDpt7LkupnkupjpsJDoqavol4HolajmpIDmub7nopfohZUiXSxbImQwYTEiLCLlvIzkuJDkuJXkuKrkuLHkuLbkuLzkuL/kuYLkuZbkuZjkuoLkuoXosavkuoroiJLlvI3kuo7kup7kup/kuqDkuqLkurDkurPkurbku47ku43ku4Tku4bku4Lku5fku57ku63ku5/ku7fkvInkvZrkvLDkvZvkvZ3kvZfkvYfkvbbkvojkvo/kvpjkvbvkvankvbDkvpHkva/kvobkvpblhJjkv5Tkv5/kv47kv5jkv5vkv5Hkv5rkv5Dkv6Tkv6XlgJrlgKjlgJTlgKrlgKXlgIXkvJzkv7blgKHlgKnlgKzkv77kv6/lgJHlgIblgYPlgYfmnIPlgZXlgZDlgYjlgZrlgZblgazlgbjlgoDlgprlgoXlgrTlgrIiXSxbImQxYTEiLCLlg4nlg4rlgrPlg4Llg5blg57lg6Xlg63lg6Plg67lg7nlg7XlhInlhIHlhILlhJblhJXlhJTlhJrlhKHlhLrlhLflhLzlhLvlhL/lhYDlhZLlhYzlhZTlhaLnq7jlhanlharlha7lhoDlhoLlm5jlhozlhonlho/lhpHlhpPlhpXlhpblhqTlhqblhqLlhqnlhqrlhqvlhrPlhrHlhrLlhrDlhrXlhr3lh4Xlh4nlh5vlh6DomZXlh6nlh63lh7Dlh7Xlh77liITliIvliJTliI7liKfliKrliK7liLPliLnliY/liYTliYvliYzliZ7liZTliarlibTlianlibPlib/lib3lio3lipTlipLlibHliojlipHovqgiXSxbImQyYTEiLCLovqfliqzliq3lirzlirXli4Hli43li5fli57li6Pli6bpo63li6Dli7Pli7Xli7jli7nljIbljIjnlLjljI3ljJDljI/ljJXljJrljKPljK/ljLHljLPljLjljYDljYbljYXkuJfljYnljY3lh5bljZ7ljanlja7lpJjljbvljbfljoLljpbljqDljqbljqXljq7ljrDljrblj4PnsJLpm5nlj5/mm7znh67lj67lj6jlj63lj7rlkIHlkL3lkYDlkKzlkK3lkLzlkK7lkLblkKnlkJ3lkY7lko/lkbXlko7lkZ/lkbHlkbflkbDlkpLlkbvlkoDlkbblkoTlkpDlkoblk4flkqLlkrjlkqXlkqzlk4Tlk4jlkqgiXSxbImQzYTEiLCLlkqvlk4LlkqTlkr7lkrzlk5jlk6Xlk6bllI/llJTlk73lk67lk63lk7rlk6LllLnllYDllaPllYzllK7llZzllYXllZbllZfllLjllLPllZ3llpnlloDlkq/llorllp/llbvllb7llpjllp7llq7llbzlloPllqnllofllqjll5rll4Xll5/ll4Tll5zll6Tll5TlmJTll7flmJbll77ll73lmJvll7nlmY7lmZDnh5/lmLTlmLblmLLlmLjlmavlmaTlmK/lmazlmarlmoblmoDlmorlmqDlmpTlmo/lmqXlmq7lmrblmrTlm4Llmrzlm4Hlm4Plm4Dlm4jlm47lm5Hlm5Plm5flm67lm7nlnIDlm7/lnITlnIkiXSxbImQ0YTEiLCLlnIjlnIvlnI3lnJPlnJjlnJbll4flnJzlnKblnLflnLjlnY7lnLvlnYDlnY/lnanln4DlnojlnaHlnb/lnonlnpPlnqDlnrPlnqTlnqrlnrDln4Pln4bln5Tln5Lln5PloIrln5bln6PloIvloJnloJ3lobLloKHloaLloYvlobDmr4DloZLloL3lobnlooXlornlop/loqvlorrlo57lorvlorjloq7lo4Xlo5Plo5Hlo5flo5nlo5jlo6Xlo5zlo6Tlo5/lo6/lo7rlo7nlo7vlo7zlo73lpILlpIrlpJDlpJvmoqblpKXlpKzlpK3lpLLlpLjlpL7nq5LlpZXlpZDlpY7lpZrlpZjlpaLlpaDlpaflpazlpakiXSxbImQ1YTEiLCLlpbjlpoHlpp3kvZ7kvqvlpqPlprLlp4blp6jlp5zlpo3lp5nlp5rlqKXlqJ/lqJHlqJzlqInlqJrlqYDlqazlqYnlqLXlqLblqaLlqarlqprlqrzlqr7lq4vlq4Llqr3lq6Plq5flq6blq6nlq5blq7rlq7vlrIzlrIvlrJblrLLlq5DlrKrlrLblrL7lrYPlrYXlrYDlrZHlrZXlrZrlrZvlraXlranlrbDlrbPlrbXlrbjmlojlrbrlroDlroPlrqblrrjlr4Plr4flr4nlr5Tlr5Dlr6Tlr6blr6Llr57lr6Xlr6vlr7Dlr7blr7PlsIXlsIflsIjlsI3lsJPlsKDlsKLlsKjlsLjlsLnlsYHlsYblsY7lsZMiXSxbImQ2YTEiLCLlsZDlsY/lrbHlsazlsa7kuaLlsbblsbnlsozlspHlspTlppvlsqvlsrvlsrblsrzlsrfls4Xlsr7ls4fls5nls6nls73ls7rls63ltozls6rltIvltJXltJfltZzltJ/ltJvltJHltJTltKLltJrltJnltJjltYzltZLltY7ltYvltazltbPltbbltofltoTltoLltqLltp3ltqzltq7ltr3ltpDltrfltrzlt4nlt43lt5Plt5Llt5blt5vlt6vlt7Llt7XluIvluJrluJnluJHluJvluLbluLfluYTluYPluYDluY7luZfluZTluZ/luaLluaTluYflubXlubblubrpurzlub/luqDlu4Hlu4Llu4jlu5Dlu48iXSxbImQ3YTEiLCLlu5blu6Plu53lu5rlu5vlu6Llu6Hlu6jlu6nlu6zlu7Hlu7Plu7Dlu7Tlu7jlu77lvIPlvInlvZ3lvZzlvIvlvJHlvJblvKnlvK3lvLjlvYHlvYjlvYzlvY7lvK/lvZHlvZblvZflvZnlvaHlva3lvbPlvbflvoPlvoLlvb/lvorlvojlvpHlvoflvp7lvpnlvpjlvqDlvqjlvq3lvrzlv5blv7vlv6Tlv7jlv7Hlv53mgrPlv7/mgKHmgaDmgJnmgJDmgKnmgI7mgLHmgJvmgJXmgKvmgKbmgI/mgLrmgZrmgYHmgarmgbfmgZ/mgYrmgYbmgY3mgaPmgYPmgaTmgYLmgazmgavmgZnmgoHmgo3mg6fmgoPmgpoiXSxbImQ4YTEiLCLmgoTmgpvmgpbmgpfmgpLmgqfmgovmg6Hmgrjmg6Dmg5PmgrTlv7Dmgr3mg4bmgrXmg5jmhY3mhJXmhIbmg7bmg7fmhIDmg7Tmg7rmhIPmhKHmg7vmg7HmhI3mhI7mhYfmhL7mhKjmhKfmhYrmhL/mhLzmhKzmhLTmhL3mhYLmhYTmhbPmhbfmhZjmhZnmhZrmhavmhbTmha/mhaXmhbHmhZ/mhZ3mhZPmhbXmhpnmhpbmhofmhqzmhpTmhprmhormhpHmhqvmhq7mh4zmh4rmh4nmh7fmh4jmh4Pmh4bmhrrmh4vnvbnmh43mh6bmh6Pmh7bmh7rmh7Tmh7/mh73mh7zmh77miIDmiIjmiInmiI3miIzmiJTmiJsiXSxbImQ5YTEiLCLmiJ7miKHmiKrmiK7miLDmiLLmiLPmiYHmiY7miZ7miaPmiZvmiaDmiajmibzmioLmionmib7mipLmipPmipbmi5TmioPmipTmi5fmi5Hmirvmi4/mi7/mi4bmk5Tmi4jmi5zmi4zmi4rmi4Lmi4fmipvmi4nmjIzmi67mi7HmjKfmjILmjIjmi6/mi7XmjZDmjL7mjY3mkJzmjY/mjpbmjo7mjoDmjqvmjbbmjqPmjo/mjonmjp/mjrXmjavmjanmjr7mj6nmj4Dmj4bmj6Pmj4nmj5Lmj7bmj4TmkJbmkLTmkIbmkJPmkKbmkLbmlJ3mkJfmkKjmkI/mkafmka/mkbbmkY7mlKrmkpXmkpPmkqXmkqnmkojmkrwiXSxbImRhYTEiLCLmk5rmk5Lmk4Xmk4fmkrvmk5jmk4Lmk7Hmk6foiInmk6Dmk6Hmiqzmk6Pmk6/mlKzmk7bmk7Tmk7Lmk7rmlIDmk73mlJjmlJzmlIXmlKTmlKPmlKvmlLTmlLXmlLfmlLbmlLjnlYvmlYjmlZbmlZXmlY3mlZjmlZ7mlZ3mlbLmlbjmloLmloPorormlpvmlp/mlqvmlrfml4Pml4bml4Hml4Tml4zml5Lml5vml5nml6Dml6Hml7HmnbLmmIrmmIPml7vmnbPmmLXmmLbmmLTmmJzmmY/mmYTmmYnmmYHmmZ7mmZ3mmaTmmafmmajmmZ/mmaLmmbDmmoPmmojmmo7mmonmmoTmmpjmmp3mm4Hmmrnmm4nmmr7mmrwiXSxbImRiYTEiLCLmm4Tmmrjmm5bmm5rmm6DmmL/mm6bmm6nmm7Dmm7Xmm7fmnI/mnJbmnJ7mnKbmnKfpnLjmnK7mnL/mnLbmnYHmnLjmnLfmnYbmnZ7mnaDmnZnmnaPmnaTmnonmnbDmnqnmnbzmnarmnozmnovmnqbmnqHmnoXmnrfmn6/mnrTmn6zmnrPmn6nmnrjmn6Tmn57mn53mn6Lmn67mnrnmn47mn4bmn6fmqpzmoJ7moYbmoKnmoYDmoY3moLLmoY7morPmoKvmoZnmoaPmobfmob/mop/moo/moq3mopTmop3mopvmooPmqq7mornmobTmorXmoqDmorrmpI/moo3mob7mpIHmo4rmpIjmo5jmpKLmpKbmo6HmpIzmo40iXSxbImRjYTEiLCLmo5Tmo6fmo5XmpLbmpJLmpITmo5fmo6PmpKXmo7nmo6Dmo6/mpKjmpKrmpJrmpKPmpKHmo4bmpbnmpbfmpZzmpbjmpavmpZTmpb7mpa7mpLnmpbTmpL3mpZnmpLDmpaHmpZ7mpZ3mpoHmparmprLmpq7mp5Dmpr/mp4Hmp5Pmpr7mp47lr6jmp4rmp53mprvmp4PmpqfmqK7mppHmpqDmppzmppXmprTmp57mp6jmqILmqJvmp7/mrIrmp7nmp7Lmp6fmqIXmprHmqJ7mp63mqJTmp6vmqIrmqJLmq4HmqKPmqJPmqYTmqIzmqbLmqLbmqbjmqYfmqaLmqZnmqabmqYjmqLjmqKLmqpDmqo3mqqDmqoTmqqLmqqMiXSxbImRkYTEiLCLmqpfomJfmqrvmq4Pmq4LmqrjmqrPmqqzmq57mq5Hmq5/mqqrmq5rmq6rmq7vmrIXomJbmq7rmrJLmrJbprLHmrJ/mrLjmrLfnm5zmrLnpo67mrYfmrYPmrYnmrZDmrZnmrZTmrZvmrZ/mraHmrbjmrbnmrb/mroDmroTmroPmro3mrpjmrpXmrp7mrqTmrqrmrqvmrq/mrrLmrrHmrrPmrrfmrrzmr4bmr4vmr5Pmr5/mr6zmr6vmr7Pmr6/pur7msIjmsJPmsJTmsJvmsKTmsKPmsZ7msZXmsaLmsarmsoLmso3msprmsoHmspvmsb7msajmsbPmspLmspDms4Tms7Hms5Pmsr3ms5fms4Xms53msq7msrHmsr4iXSxbImRlYTEiLCLmsrrms5vms6/ms5nms6rmtJ/ooY3mtLbmtKvmtL3mtLjmtJnmtLXmtLPmtJLmtIzmtaPmtpPmtaTmtZrmtbnmtZnmto7mtpXmv6TmtoXmt7nmuJXmuIrmtrXmt4fmt6bmtrjmt4bmt6zmt57mt4zmt6jmt5Lmt4Xmt7rmt5nmt6Tmt5Xmt6rmt67muK3mua7muK7muJnmubLmuZ/muL7muKPmuavmuKvmubbmuY3muJ/muYPmuLrmuY7muKTmu7/muJ3muLjmuoLmuqrmupjmu4nmurfmu5Pmur3muq/mu4TmurLmu5Tmu5Xmuo/muqXmu4Lmup/mvYHmvJHngYzmu6zmu7jmu77mvL/mu7LmvLHmu6/mvLLmu4wiXSxbImRmYTEiLCLmvL7mvJPmu7fmvobmvbrmvbjmvoHmvoDmva/mvZvmv7Pmva3mvoLmvbzmvZjmvo7mvpHmv4LmvabmvrPmvqPmvqHmvqTmvrnmv4bmvqrmv5/mv5Xmv6zmv5Tmv5jmv7Hmv67mv5vngInngIvmv7rngJHngIHngI/mv77ngJvngJrmvbTngJ3ngJjngJ/ngLDngL7ngLLngZHngaPngpnngpLngq/ng7HngqzngrjngrPngq7ng5/ng4vng53ng5nnhInng73nhJznhJnnhaXnhZXnhojnhabnhaLnhYznhZbnhaznho/nh7vnhoTnhpXnhqjnhqznh5fnhrnnhr7nh5Lnh4nnh5Tnh47nh6Dnh6znh6fnh7Xnh7wiXSxbImUwYTEiLCLnh7nnh7/niI3niJDniJvniKjniK3niKzniLDniLLniLvniLzniL/niYDniYbniYvniZjnibTnib7nioLnioHniofnipLnipbniqLniqfnirnnirLni4Pni4bni4Tni47ni5Lni6Lni6Dni6Hni7nni7flgI/njJfnjIrnjJznjJbnjJ3njLTnjK/njKnnjKXnjL7njY7njY/pu5jnjZfnjarnjajnjbDnjbjnjbXnjbvnjbrnj4jnjrPnj47njrvnj4Dnj6Xnj67nj57nkqLnkIXnka/nkKXnj7jnkLLnkLrnkZXnkL/nkZ/nkZnnkYHnkZznkannkbDnkaPnkarnkbbnkb7nkovnkp7nkqfnk4rnk4/nk5Tnj7EiXSxbImUxYTEiLCLnk6Dnk6Pnk6fnk6nnk67nk7Lnk7Dnk7Hnk7jnk7fnlITnlIPnlIXnlIznlI7nlI3nlJXnlJPnlJ7nlKbnlKznlLznlYTnlY3nlYrnlYnnlZvnlYbnlZrnlannlaTnlafnlavnla3nlbjnlbbnlobnlofnlbTnlornlonnloLnlpTnlprnlp3nlqXnlqPnl4LnlrPnl4PnlrXnlr3nlrjnlrznlrHnl43nl4rnl5Lnl5nnl6Pnl57nl77nl7/nl7znmIHnl7Dnl7rnl7Lnl7PnmIvnmI3nmInnmJ/nmKfnmKDnmKHnmKLnmKTnmLTnmLDnmLvnmYfnmYjnmYbnmZznmZjnmaHnmaLnmajnmannmarnmafnmaznmbAiXSxbImUyYTEiLCLnmbLnmbbnmbjnmbznmoDnmoPnmojnmovnmo7nmpbnmpPnmpnnmprnmrDnmrTnmrjnmrnnmrrnm4Lnm43nm5bnm5Lnm57nm6Hnm6Xnm6fnm6romK/nm7vnnIjnnIfnnITnnKnnnKTnnJ7nnKXnnKbnnJvnnLfnnLjnnYfnnZrnnajnnavnnZvnnaXnnb/nnb7nnbnnno7nnovnnpHnnqDnnp7nnrDnnrbnnrnnnr/nnrznnr3nnrvnn4fnn43nn5fnn5rnn5znn6Pnn67nn7znoIznoJLnpKbnoKDnpKrnoYXnoo7nobTnoobnobznoprnooznoqPnorXnoqrnoq/no5Hno4bno4vno5Tnor7norzno4Xno4rno6wiXSxbImUzYTEiLCLno6fno5rno73no7TnpIfnpJLnpJHnpJnnpKznpKvnpYDnpaDnpZfnpZ/npZrnpZXnpZPnpbrnpb/npornpp3npqfpvYvnpqrnpq7nprPnprnnprrnp4nnp5Xnp6fnp6znp6Hnp6PnqIjnqI3nqJjnqJnnqKDnqJ/npoDnqLHnqLvnqL7nqLfnqYPnqZfnqYnnqaHnqaLnqanpvp3nqbDnqbnnqb3nqojnqpfnqpXnqpjnqpbnqqnnq4jnqrDnqrbnq4Xnq4Tnqr/pgoPnq4fnq4rnq43nq4/nq5Xnq5Pnq5nnq5rnq53nq6Hnq6Lnq6bnq63nq7DnrILnrI/nrIrnrIbnrLPnrJjnrJnnrJ7nrLXnrKjnrLbnrZAiXSxbImU0YTEiLCLnrbrnrITnrY3nrIvnrYznrYXnrbXnraXnrbTnrafnrbDnrbHnraznra7nrp3nrpjnrp/nro3nrpznrprnrovnrpLnro/nrZ3nrpnnr4vnr4Hnr4znr4/nrrTnr4bnr53nr6nnsJHnsJTnr6bnr6XnsaDnsIDnsIfnsJPnr7Pnr7fnsJfnsI3nr7bnsKPnsKfnsKrnsJ/nsLfnsKvnsL3nsYznsYPnsZTnsY/nsYDnsZDnsZjnsZ/nsaTnsZbnsaXnsaznsbXnsoPnspDnsqTnsq3nsqLnsqvnsqHnsqjnsrPnsrLnsrHnsq7nsrnnsr3ns4Dns4Xns4Lns5jns5Lns5zns6LprLvns6/ns7Lns7Tns7bns7rntIYiXSxbImU1YTEiLCLntILntJzntJXntIrntYXntYvntK7ntLLntL/ntLXntYbntbPntZbntY7ntbLntajnta7ntY/ntaPntpPntonntZvnto/ntb3ntpvntrrntq7ntqPntrXnt4fntr3ntqvnuL3ntqLntq/nt5zntrjntp/ntrDnt5jnt53nt6Tnt57nt7vnt7Lnt6HnuIXnuIrnuKPnuKHnuJLnuLHnuJ/nuInnuIvnuKLnuYbnuabnuLvnuLXnuLnnuYPnuLfnuLLnuLrnuafnuZ3nuZbnuZ7nuZnnuZrnubnnuarnuannubznubvnuoPnt5Xnub3ovq7nub/nuojnuonnuoznupLnupDnupPnupTnupbnuo7nupvnupznvLjnvLoiXSxbImU2YTEiLCLnvYXnvYznvY3nvY7nvZDnvZHnvZXnvZTnvZjnvZ/nvaDnvajnvannvafnvbjnvoLnvobnvoPnvojnvofnvoznvpTnvp7nvp3nvprnvqPnvq/nvrLnvrnnvq7nvrbnvrjorbHnv4Xnv4bnv4rnv5Xnv5Tnv6Hnv6bnv6nnv7Pnv7npo5zogIbogITogIvogJLogJjogJnogJzogKHogKjogL/ogLvogYrogYbogZLogZjogZrogZ/ogaLogajogbPogbLogbDogbbogbnogb3ogb/ogoTogobogoXogpvogpPogprogq3lhpDogqzog5vog6Xog5nog53og4Tog5rog5bohInog6/og7HohJvohKnohKPohK/ohYsiXSxbImU3YTEiLCLpmovohYbohL7ohZPohZHog7zohbHoha7ohaXohabohbTohoPohojohorohoDohoLohqDohpXohqTohqPohZ/ohpPohqnohrDohrXohr7ohrjohr3oh4Doh4Lohrroh4noh43oh5Hoh5noh5joh4joh5roh5/oh6Doh6foh7roh7voh77oiIHoiILoiIXoiIfoiIroiI3oiJDoiJboiKnoiKvoiLjoiLPoiYDoiZnoiZjoiZ3oiZroiZ/oiaToiaLoiajoiaroiavoiK7oibHoibfoibjoib7oio3oipLoiqvoip/oirvoiqzoi6Hoi6Poi5/oi5Loi7Toi7Poi7rojpPojIPoi7voi7noi57ojIboi5zojInoi5kiXSxbImU4YTEiLCLojLXojLTojJbojLLojLHojYDojLnojZDojYXojK/ojKvojJfojJjojoXojprojqrojp/ojqLojpbojKPojo7ojofojorojbzojrXojbPojbXojqDojonojqjoj7TokJPoj6voj47oj73okIPoj5jokIvoj4Hoj7fokIfoj6Doj7LokI3okKLokKDojr3okLjolIboj7voka3okKrokLzolZrokoTokbfokavokq3oka7okoLokanokYbokKzoka/okbnokLXok4rokaLokrnokr/okp/ok5nok43okrvok5rok5Dok4Hok4bok5bokqHolKHok7/ok7TolJfolJjolKzolJ/olJXolJTok7zolYDolaPolZjolYgiXSxbImU5YTEiLCLolYHomILolYvolZXoloDolqTolojolpHolorolqjola3olpTolpvol6rolofolpzolbfolb7olpDol4nolrrol4/olrnol5Dol5Xol53ol6Xol5zol7nomIromJPomIvol77ol7romIbomKLomJromLDomL/omY3kuZXomZTomZ/omafombHompPomqPomqnomqromovomozomrbomq/om4Tom4bomrDom4nooKPomqvom5Tom57om6nom6zom5/om5vom6/onJLonIbonIjonIDonIPom7vonJHonInonI3om7nonIronLTonL/onLfonLvonKXonKnonJronaDonZ/onbjonYzonY7onbTonZfonajona7onZkiXSxbImVhYTEiLCLonZPonaPonarooIXonqLonp/onoLonq/on4vonr3on4Don5Dpm5bonqvon4TonrPon4fon4bonrvon6/on7Lon6DooI/ooI3on77on7bon7fooI7on5LooJHooJbooJXooKLooKHooLHooLbooLnooKfooLvooYTooYLooZLooZnooZ7ooaLooavoooHoob7oop7oobXoob3oorXoobLoooLoopfoopLooq7oopnooqLooo3ooqToorDoor/oorHoo4Poo4Too5Too5joo5noo53oo7nopILoo7zoo7Too6joo7LopITopIzopIropJPopYPopJ7opKXopKropKvopYHopYTopLvopLbopLjopYzopJ3opaDopZ4iXSxbImViYTEiLCLopabopaTopa3oparopa/opbTopbfopb7opoPopojoporoppPoppjopqHopqnopqbopqzopq/oprLoprropr3opr/op4Dop5rop5zop53op6fop7Top7joqIPoqJboqJDoqIzoqJvoqJ3oqKXoqLboqYHoqZvoqZLoqYboqYjoqbzoqa3oqazoqaLoqoXoqoLoqoToqqjoqqHoqpHoqqXoqqboqproqqPoq4Toq43oq4Loq5roq6voq7Poq6foq6Toq7HorJToq6Doq6Loq7foq57oq5vorIzorIforJroq6HorJborJDorJforKDorLPpnqvorKborKvorL7orKjorYHorYzorY/orY7orYnorZborZvorZrorasiXSxbImVjYTEiLCLorZ/orazora/orbTorb3oroDorozoro7orpLorpPorpborpnorprosLrosYHosL/osYjosYzosY7osZDosZXosaLosazosbjosbrosoLosonosoXosoroso3oso7ospTosbzospjmiJ3osq3osqrosr3osrLosrPosq7osrbos4jos4Hos6Tos6Pos5ros73os7ros7votITotIXotIrotIfotI/otI3otJDpvY7otJPos43otJTotJbotafota3otbHotbPotoHotpnot4Lotr7otrrot4/ot5rot5bot4zot5vot4vot6rot6vot5/ot6Pot7zouIjouInot7/ouJ3ouJ7ouJDouJ/ouYLouLXouLDouLTouYoiXSxbImVkYTEiLCLouYfouYnouYzouZDouYjouZnouaTouaDouKrouaPouZXoubboubLoubzouoHouofouoXouoTouovouoroupPoupHoupToupnouqrouqHouqzourDou4bourHour7ou4Xou4jou4vou5vou6Pou7zou7vou6vou77ovIrovIXovJXovJLovJnovJPovJzovJ/ovJvovIzovKbovLPovLvovLnovYXovYLovL7ovYzovYnovYbovY7ovZfovZzovaLovaPovaTovpzovp/ovqPovq3ovq/ovrfov5rov6Xov6Lov6rov6/pgofov7TpgIXov7nov7rpgJHpgJXpgKHpgI3pgJ7pgJbpgIvpgKfpgLbpgLXpgLnov7giXSxbImVlYTEiLCLpgY/pgZDpgZHpgZLpgI7pgYnpgL7pgZbpgZjpgZ7pgajpga/pgbbpmqjpgbLpgoLpgb3pgoHpgoDpgorpgonpgo/pgqjpgq/pgrHpgrXpg6Lpg6TmiYjpg5vphILphJLphJnphLLphLDphYrphZbphZjphaPphaXphanphbPphbLphovphonphoLphqLphqvphq/phqrphrXphrTphrrph4Dph4Hph4nph4vph5Dph5bph5/ph6Hph5vph7zph7Xph7bpiJ7ph7/piJTpiKzpiJXpiJHpiZ7piZfpiYXpiYnpiaTpiYjpipXpiL/piYvpiZDpipzpipbpipPpipvpiZrpi4/pirnpirfpi6npjI/pi7rpjYTpjK4iXSxbImVmYTEiLCLpjJnpjKLpjJrpjKPpjLrpjLXpjLvpjZzpjaDpjbzpja7pjZbpjrDpjqzpjq3pjpTpjrnpj5bpj5fpj6jpj6Xpj5jpj4Ppj53pj5Dpj4jpj6TpkJrpkJTpkJPpkIPpkIfpkJDpkLbpkKvpkLXpkKHpkLrpkYHpkZLpkYTpkZvpkaDpkaLpkZ7pkarpiKnpkbDpkbXpkbfpkb3pkZrpkbzpkb7pkoHpkb/ploLplofplorplpTplpbplpjplpnplqDplqjplqfplq3plrzplrvplrnplr7pl4rmv7bpl4Ppl43pl4zpl5Xpl5Tpl5bpl5zpl6Hpl6Xpl6LpmKHpmKjpmK7pmK/pmYLpmYzpmY/pmYvpmbfpmZzpmZ4iXSxbImYwYTEiLCLpmZ3pmZ/pmabpmbLpmazpmo3pmpjpmpXpmpfpmqrpmqfpmrHpmrLpmrDpmrTpmrbpmrjpmrnpm47pm4vpm4npm43opY3pm5zpnI3pm5Xpm7npnITpnIbpnIjpnJPpnI7pnJHpnI/pnJbpnJnpnKTpnKrpnLDpnLnpnL3pnL7pnYTpnYbpnYjpnYLpnYnpnZzpnaDpnaTpnabpnajli5LpnavpnbHpnbnpnoXpnbzpnoHpnbrpnobpnovpno/pnpDpnpzpnqjpnqbpnqPpnrPpnrTpn4Ppn4bpn4jpn4vpn5zpn63pvY/pn7Lnq5/pn7bpn7XpoI/poIzpoLjpoKTpoKHpoLfpoL3poYbpoY/poYvpoavpoa/pobAiXSxbImYxYTEiLCLpobHpobTpobPpoqrpoq/porHporbpo4Tpo4Ppo4bpo6npo6vppIPppInppJLppJTppJjppKHppJ3ppJ7ppKTppKDppKzppK7ppL3ppL7ppYLppYnppYXppZDppYvppZHppZLppYzppZXpppfpppjppqXppq3ppq7pprzpp5/pp5vpp53pp5jpp5Hpp63pp67pp7Hpp7Lpp7vpp7jpqIHpqI/pqIXpp6LpqJnpqKvpqLfpqYXpqYLpqYDpqYPpqL7pqZXpqY3pqZvpqZfpqZ/pqaLpqaXpqaTpqanpqavpqarpqq3pqrDpqrzpq4Dpq4/pq5Hpq5Ppq5Tpq57pq5/pq6Lpq6Ppq6bpq6/pq6vpq67pq7Tpq7Hpq7ciXSxbImYyYTEiLCLpq7vprIbprJjprJrprJ/prKLprKPprKXprKfprKjprKnprKrprK7prK/prLLprYTprYPprY/prY3prY7prZHprZjprbTprpPproPprpHprpbprpfprp/prqDprqjprrTpr4Dpr4rprrnpr4bpr4/pr5Hpr5Lpr6Ppr6Lpr6Tpr5Tpr6HpsLrpr7Lpr7Hpr7DpsJXpsJTpsInpsJPpsIzpsIbpsIjpsJLpsIrpsITpsK7psJvpsKXpsKTpsKHpsLDpsYfpsLLpsYbpsL7psZrpsaDpsafpsbbpsbjps6fps6zps7DptInptIjps6vptIPptIbptKrptKbptq/ptKPptJ/ptYTptJXptJLptYHptL/ptL7ptYbptYgiXSxbImYzYTEiLCLptZ3ptZ7ptaTptZHptZDptZnptbLptonptofptqvpta/ptbrptprptqTptqnptrLpt4Tpt4Hptrvptrjptrrpt4bpt4/pt4Lpt5npt5Ppt7jpt6bpt63pt6/pt73puJrpuJvpuJ7pubXpubnpub3puoHpuojpuovpuozpupLpupXpupHpup3puqXpuqnpurjpuqrpuq3pnaHpu4zpu47pu4/pu5Dpu5Tpu5zpu57pu53pu6Dpu6Xpu6jpu6/pu7Tpu7bpu7fpu7npu7vpu7zpu73pvIfpvIjnmrfpvJXpvKHpvKzpvL7pvYrpvZLpvZTpvaPpvZ/pvaDpvaHpvabpvafpvazpvarpvbfpvbLpvbbpvpXpvpzpvqAiXSxbImY0YTEiLCLloK/mp4fpgZnnkaTlh5znhpkiXSxbImY5YTEiLCLnuoropJzpjYjpiojok5zkv4nngrvmmLHmo4jpi7nmm7vlvYXkuKjku6Hku7zkvIDkvIPkvLnkvZbkvpLkvorkvprkvpTkv43lgYDlgKLkv7/lgJ7lgYblgbDlgYLlgpTlg7Tlg5jlhYrlhaTlhp3lhr7lh6zliJXlipzliqbli4Dli5vljIDljIfljKTljbLljpPljrLlj53vqI7lkpzlkorlkqnlk7/lloblnZnlnaXlnqzln4jln4fvqI/vqJDlop7lorLlpIvlpZPlpZvlpZ3lpaPlpqTlprrlrZblr4DnlK/lr5jlr6zlsJ7lsqblsrrls7XltKfltZPvqJHltYLlta3ltrjltrnlt5DlvKHlvLTlvaflvrciXSxbImZhYTEiLCLlv57mgZ3mgoXmgormg57mg5XmhKDmg7LmhJHmhLfmhLDmhpjmiJPmiqbmj7XmkaDmkp3mk47mlY7mmIDmmJXmmLvmmInmmK7mmJ7mmKTmmaXmmZfmmZnvqJLmmbPmmpnmmqDmmrLmmr/mm7rmnI7vpKnmnabmnrvmoZLmn4DmoIHmoYTmo4/vqJPmpajvqJTmppjmp6LmqLDmqavmqYbmqbPmqb7mq6Lmq6Tmr5bmsL/msZzmsobmsa/ms5rmtITmtofmta/mtpbmtqzmt4/mt7jmt7Lmt7zmuLnmuZzmuKfmuLzmur/mvojmvrXmv7XngIXngIfngKjngoXngqvnhI/nhITnhZznhYbnhYfvqJXnh4Hnh77nirEiXSxbImZiYTEiLCLnir7njKTvqJbnjbfnjr3nj4nnj5bnj6Pnj5LnkIfnj7XnkKbnkKrnkKnnkK7nkaLnkonnkp/nlIHnla/nmoLnmpznmp7nmpvnmqbvqJfnnYbliq/noKHnoY7noaTnobrnpLDvqJjvqJnvqJrnppTvqJvnppvnq5Hnq6fvqJznq6vnrp7vqJ3ntYjntZzntrfntqDnt5bnuZLnvYfnvqHvqJ7ojIHojaLojb/oj4foj7bokYjokrTolZPolZnolavvqJ/olrDvqKDvqKHooIfoo7XoqJLoqLfoqbnoqqfoqr7oq5/vqKLoq7borZPorb/os7Dos7TotJLotbbvqKPou4/vqKTvqKXpgafpg57vqKbphJXphKfph5oiXSxbImZjYTEiLCLph5fph57ph63ph67ph6Tph6XpiIbpiJDpiIrpiLrpiYDpiLzpiY7piZnpiZHpiLnpiafpiqfpibfpibjpi6fpi5fpi5npi5DvqKfpi5Xpi6Dpi5PpjKXpjKHpi7vvqKjpjJ7pi7/pjJ3pjILpjbDpjZfpjqTpj4bpj57pj7jpkLHpkYXpkYjplpLvp5zvqKnpmp3pmq/pnLPpnLvpnYPpnY3pnY/pnZHpnZXpoZfpoaXvqKrvqKvppKfvqKzppp7pqY7pq5npq5zprbXprbLpro/prrHprrvpsIDptbDptavvqK3puJnpu5EiXSxbImZjZjEiLCLihbAiLDksIu+/ou+/pO+8h++8giJdLFsiOGZhMmFmIiwiy5jLh8K4y5nLncKvy5vLmu+9ns6EzoUiXSxbIjhmYTJjMiIsIsKhwqbCvyJdLFsiOGZhMmViIiwiwrrCqsKpwq7ihKLCpOKEliJdLFsiOGZhNmUxIiwizobOiM6JzorOqiJdLFsiOGZhNmU3IiwizowiXSxbIjhmYTZlOSIsIs6OzqsiXSxbIjhmYTZlYyIsIs6PIl0sWyI4ZmE2ZjEiLCLOrM6tzq7Or8+KzpDPjM+Cz43Pi86wz44iXSxbIjhmYTdjMiIsItCCIiwxMCwi0I7QjyJdLFsiOGZhN2YyIiwi0ZIiLDEwLCLRntGfIl0sWyI4ZmE5YTEiLCLDhsSQIl0sWyI4ZmE5YTQiLCLEpiJdLFsiOGZhOWE2IiwixLIiXSxbIjhmYTlhOCIsIsWBxL8iXSxbIjhmYTlhYiIsIsWKw5jFkiJdLFsiOGZhOWFmIiwixabDniJdLFsiOGZhOWMxIiwiw6bEkcOwxKfEscSzxLjFgsWAxYnFi8O4xZPDn8Wnw74iXSxbIjhmYWFhMSIsIsOBw4DDhMOCxILHjcSAxITDhcODxIbEiMSMw4fEisSOw4nDiMOLw4rEmsSWxJLEmCJdLFsiOGZhYWJhIiwixJzEnsSixKDEpMONw4zDj8OOx4/EsMSqxK7EqMS0xLbEucS9xLvFg8WHxYXDkcOTw5LDlsOUx5HFkMWMw5XFlMWYxZbFmsWcxaDFnsWkxaLDmsOZw5zDm8Wsx5PFsMWqxbLFrsWox5fHm8eZx5XFtMOdxbjFtsW5xb3FuyJdLFsiOGZhYmExIiwiw6HDoMOkw6LEg8eOxIHEhcOlw6PEh8SJxI3Dp8SLxI/DqcOow6vDqsSbxJfEk8SZx7XEncSfIl0sWyI4ZmFiYmQiLCLEocSlw63DrMOvw67HkCJdLFsiOGZhYmM1IiwixKvEr8SpxLXEt8S6xL7EvMWExYjFhsOxw7PDssO2w7THksWRxY3DtcWVxZnFl8WbxZ3FocWfxaXFo8O6w7nDvMO7xa3HlMWxxavFs8WvxanHmMecx5rHlsW1w73Dv8W3xbrFvsW8Il0sWyI4ZmIwYTEiLCLkuILkuITkuIXkuIzkuJLkuJ/kuKPkuKTkuKjkuKvkuK7kuK/kuLDkuLXkuYDkuYHkuYTkuYfkuZHkuZrkuZzkuaPkuajkuankubTkubXkubnkub/kuo3kupbkupfkup3kuq/kurnku4Pku5Dku5rku5vku6Dku6Hku6Lku6jku6/ku7Hku7Pku7Xku73ku77ku7/kvIDkvILkvIPkvIjkvIvkvIzkvJLkvJXkvJbkvJfkvJnkvK7kvLHkvaDkvLPkvLXkvLfkvLnkvLvkvL7kvYDkvYLkvYjkvYnkvYvkvYzkvZLkvZTkvZbkvZjkvZ/kvaPkvarkvazkva7kvbHkvbfkvbjkvbnkvbrkvb3kvb7kvoHkvoLkvoQiXSxbIjhmYjFhMSIsIuS+heS+ieS+iuS+jOS+juS+kOS+kuS+k+S+lOS+l+S+meS+muS+nuS+n+S+suS+t+S+ueS+u+S+vOS+veS+vuS/gOS/geS/heS/huS/iOS/ieS/i+S/jOS/jeS/j+S/kuS/nOS/oOS/ouS/sOS/suS/vOS/veS/v+WAgOWAgeWAhOWAh+WAiuWAjOWAjuWAkOWAk+WAl+WAmOWAm+WAnOWAneWAnuWAouWAp+WAruWAsOWAsuWAs+WAteWBgOWBgeWBguWBheWBhuWBiuWBjOWBjuWBkeWBkuWBk+WBl+WBmeWBn+WBoOWBouWBo+WBpuWBp+WBquWBreWBsOWBseWAu+WCgeWCg+WChOWChuWCiuWCjuWCj+WCkCJdLFsiOGZiMmExIiwi5YKS5YKT5YKU5YKW5YKb5YKc5YKeIiw0LCLlgqrlgq/lgrDlgrnlgrrlgr3lg4Dlg4Plg4Tlg4flg4zlg47lg5Dlg5Plg5Tlg5jlg5zlg53lg5/lg6Llg6Tlg6blg6jlg6nlg6/lg7Hlg7blg7rlg77lhIPlhIblhIflhIjlhIvlhIzlhI3lhI7lg7LlhJDlhJflhJnlhJvlhJzlhJ3lhJ7lhKPlhKflhKjlhKzlhK3lhK/lhLHlhLPlhLTlhLXlhLjlhLnlhYLlhYrlhY/lhZPlhZXlhZflhZjlhZ/lhaTlhablhb7lhoPlhoTlhovlho7lhpjlhp3lhqHlhqPlhq3lhrjlhrrlhrzlhr7lhr/lh4IiXSxbIjhmYjNhMSIsIuWHiOWHj+WHkeWHkuWHk+WHleWHmOWHnuWHouWHpeWHruWHsuWHs+WHtOWHt+WIgeWIguWIheWIkuWIk+WIleWIluWImOWIouWIqOWIseWIsuWIteWIvOWJheWJieWJleWJl+WJmOWJmuWJnOWJn+WJoOWJoeWJpuWJruWJt+WJuOWJueWKgOWKguWKheWKiuWKjOWKk+WKleWKluWKl+WKmOWKmuWKnOWKpOWKpeWKpuWKp+WKr+WKsOWKtuWKt+WKuOWKuuWKu+WKveWLgOWLhOWLhuWLiOWLjOWLj+WLkeWLlOWLluWLm+WLnOWLoeWLpeWLqOWLqeWLquWLrOWLsOWLseWLtOWLtuWLt+WMgOWMg+WMiuWMiyJdLFsiOGZiNGExIiwi5YyM5YyR5YyT5YyY5Yyb5Yyc5Yye5Yyf5Yyl5Yyn5Yyo5Yyp5Yyr5Yys5Yyt5Yyw5Yyy5Yy15Yy85Yy95Yy+5Y2C5Y2M5Y2L5Y2Z5Y2b5Y2h5Y2j5Y2l5Y2s5Y2t5Y2y5Y255Y2+5Y6D5Y6H5Y6I5Y6O5Y6T5Y6U5Y6Z5Y6d5Y6h5Y6k5Y6q5Y6r5Y6v5Y6y5Y605Y615Y635Y645Y665Y695Y+A5Y+F5Y+P5Y+S5Y+T5Y+V5Y+a5Y+d5Y+e5Y+g5Y+m5Y+n5Y+15ZCC5ZCT5ZCa5ZCh5ZCn5ZCo5ZCq5ZCv5ZCx5ZC05ZC15ZGD5ZGE5ZGH5ZGN5ZGP5ZGe5ZGi5ZGk5ZGm5ZGn5ZGp5ZGr5ZGt5ZGu5ZG05ZG/Il0sWyI4ZmI1YTEiLCLlkoHlkoPlkoXlkojlkonlko3lkpHlkpXlkpblkpzlkp/lkqHlkqblkqflkqnlkqrlkq3lkq7lkrHlkrflkrnlkrrlkrvlkr/lk4blk4rlk43lk47lk6Dlk6rlk6zlk6/lk7blk7zlk77lk7/llIDllIHllIXllIjllInllIzllI3llI7llJXllKrllKvllLLllLXllLbllLvllLzllL3llYHllYfllYnllYrllY3llZDllZHllZjllZrllZvllZ7llaDllaHllaTllabllb/lloHlloLllobllojllo7llo/llpHllpLllpPllpTllpfllqPllqTllq3llrLllr/ll4Hll4Pll4bll4nll4vll4zll47ll5Hll5IiXSxbIjhmYjZhMSIsIuWXk+WXl+WXmOWXm+WXnuWXouWXqeWXtuWXv+WYheWYiOWYiuWYjSIsNSwi5ZiZ5Zis5Ziw5Ziz5Zi15Zi35Zi55Zi75Zi85Zi95Zi/5ZmA5ZmB5ZmD5ZmE5ZmG5ZmJ5ZmL5ZmN5ZmP5ZmU5Zme5Zmg5Zmh5Zmi5Zmj5Zmm5Zmp5Zmt5Zmv5Zmx5Zmy5Zm15ZqE5ZqF5ZqI5ZqL5ZqM5ZqV5ZqZ5Zqa5Zqd5Zqe5Zqf5Zqm5Zqn5Zqo5Zqp5Zqr5Zqs5Zqt5Zqx5Zqz5Zq35Zq+5ZuF5ZuJ5ZuK5ZuL5ZuP5ZuQ5ZuM5ZuN5ZuZ5Zuc5Zud5Zuf5Zuh5ZukIiw0LCLlm7Hlm6vlm60iXSxbIjhmYjdhMSIsIuWbtuWbt+WcgeWcguWch+WciuWcjOWckeWcleWcmuWcm+WcneWcoOWcouWco+WcpOWcpeWcqeWcquWcrOWcruWcr+Wcs+WctOWcveWcvuWcv+WdheWdhuWdjOWdjeWdkuWdouWdpeWdp+WdqOWdq+WdrSIsNCwi5Z2z5Z205Z215Z235Z255Z265Z275Z285Z2+5Z6B5Z6D5Z6M5Z6U5Z6X5Z6Z5Z6a5Z6c5Z6d5Z6e5Z6f5Z6h5Z6V5Z6n5Z6o5Z6p5Z6s5Z645Z695Z+H5Z+I5Z+M5Z+P5Z+V5Z+d5Z+e5Z+k5Z+m5Z+n5Z+p5Z+t5Z+w5Z+15Z+25Z+45Z+95Z++5Z+/5aCD5aCE5aCI5aCJ5Z+hIl0sWyI4ZmI4YTEiLCLloIzloI3loJvloJ7loJ/loKDloKbloKfloK3loLLloLnloL/loYnloYzloY3loY/loZDloZXloZ/loaHloaTloafloajlobjlobzlob/looDlooHloofloojloonloorloozloo3loo/lopDlopTlopblop3loqDloqHloqLloqbloqnlorHlorLlo4Tlorzlo4Llo4jlo43lo47lo5Dlo5Llo5Tlo5blo5rlo53lo6Hlo6Llo6nlo7PlpIXlpIblpIvlpIzlpJLlpJPlpJTomYHlpJ3lpKHlpKPlpKTlpKjlpK/lpLDlpLPlpLXlpLblpL/lpYPlpYblpZLlpZPlpZnlpZvlpZ3lpZ7lpZ/lpaHlpaPlpavlpa0iXSxbIjhmYjlhMSIsIuWlr+WlsuWlteWltuWlueWlu+WlvOWmi+WmjOWmjuWmkuWmleWml+Wmn+WmpOWmp+WmreWmruWmr+WmsOWms+Wmt+WmuuWmvOWngeWng+WnhOWniOWniuWnjeWnkuWnneWnnuWnn+Wno+WnpOWnp+WnruWnr+WnseWnsuWntOWnt+WogOWohOWojOWojeWojuWokuWok+WonuWoo+WopOWop+WoqOWoquWoreWosOWphOWpheWph+WpiOWpjOWpkOWpleWpnuWpo+WppeWpp+WpreWpt+WpuuWpu+WpvuWqi+WqkOWqk+WqluWqmeWqnOWqnuWqn+WqoOWqouWqp+WqrOWqseWqsuWqs+WqteWquOWquuWqu+WqvyJdLFsiOGZiYWExIiwi5auE5auG5auI5auP5aua5auc5aug5aul5auq5auu5au15au25au95ayA5ayB5ayI5ayX5ay05ayZ5ayb5ayd5ayh5ayl5ayt5ay45a2B5a2L5a2M5a2S5a2W5a2e5a2o5a2u5a2v5a285a295a2+5a2/5a6B5a6E5a6G5a6K5a6O5a6Q5a6R5a6T5a6U5a6W5a6o5a6p5a6s5a6t5a6v5a6x5a6y5a635a665a685a+A5a+B5a+N5a+P5a+WIiw0LCLlr6Dlr6/lr7Hlr7Tlr73lsIzlsJflsJ7lsJ/lsKPlsKblsKnlsKvlsKzlsK7lsLDlsLLlsLXlsLblsZnlsZrlsZzlsaLlsaPlsaflsajlsakiXSxbIjhmYmJhMSIsIuWxreWxsOWxtOWxteWxuuWxu+WxvOWxveWyh+WyiOWyiuWyj+WykuWyneWyn+WyoOWyouWyo+WypuWyquWysuWytOWyteWyuuWzieWzi+WzkuWzneWzl+WzruWzseWzsuWztOW0geW0huW0jeW0kuW0q+W0o+W0pOW0puW0p+W0seW0tOW0ueW0veW0v+W1guW1g+W1huW1iOW1leW1keW1meW1iuW1n+W1oOW1oeW1ouW1pOW1quW1reW1sOW1ueW1uuW1vuW1v+W2geW2g+W2iOW2iuW2kuW2k+W2lOW2leW2meW2m+W2n+W2oOW2p+W2q+W2sOW2tOW2uOW2ueW3g+W3h+W3i+W3kOW3juW3mOW3meW3oOW3pCJdLFsiOGZiY2ExIiwi5bep5be45be55biA5biH5biN5biS5biU5biV5biY5bif5big5biu5bio5biy5bi15bi+5bmL5bmQ5bmJ5bmR5bmW5bmY5bmb5bmc5bme5bmo5bmqIiw0LCLlubDluoDluovluo7luqLluqTluqXluqjluqrluqzlurHlurPlur3lur7lur/lu4blu4zlu4vlu47lu5Hlu5Llu5Tlu5Xlu5zlu57lu6Xlu6vlvILlvIblvIflvIjlvI7lvJnlvJzlvJ3lvKHlvKLlvKPlvKTlvKjlvKvlvKzlvK7lvLDlvLTlvLblvLvlvL3lvL/lvYDlvYTlvYXlvYflvY3lvZDlvZTlvZjlvZvlvaDlvaPlvaTlvaciXSxbIjhmYmRhMSIsIuW9r+W9suW9tOW9teW9uOW9uuW9veW9vuW+ieW+jeW+j+W+luW+nOW+neW+ouW+p+W+q+W+pOW+rOW+r+W+sOW+seW+uOW/hOW/h+W/iOW/ieW/i+W/kCIsNCwi5b+e5b+h5b+i5b+o5b+p5b+q5b+s5b+t5b+u5b+v5b+y5b+z5b+25b+65b+85oCH5oCK5oCN5oCT5oCU5oCX5oCY5oCa5oCf5oCk5oCt5oCz5oC15oGA5oGH5oGI5oGJ5oGM5oGR5oGU5oGW5oGX5oGd5oGh5oGn5oGx5oG+5oG/5oKC5oKG5oKI5oKK5oKO5oKR5oKT5oKV5oKY5oKd5oKe5oKi5oKk5oKl5oKo5oKw5oKx5oK3Il0sWyI4ZmJlYTEiLCLmgrvmgr7mg4Lmg4Tmg4jmg4nmg4rmg4vmg47mg4/mg5Tmg5Xmg5nmg5vmg53mg57mg6Lmg6Xmg7Lmg7Xmg7jmg7zmg73mhILmhIfmhIrmhIzmhJAiLDQsIuaEluaEl+aEmeaEnOaEnuaEouaEquaEq+aEsOaEseaEteaEtuaEt+aEueaFgeaFheaFhuaFieaFnuaFoOaFrOaFsuaFuOaFu+aFvOaFv+aGgOaGgeaGg+aGhOaGi+aGjeaGkuaGk+aGl+aGmOaGnOaGneaGn+aGoOaGpeaGqOaGquaGreaGuOaGueaGvOaHgOaHgeaHguaHjuaHj+aHleaHnOaHneaHnuaHn+aHoeaHouaHp+aHqeaHpSJdLFsiOGZiZmExIiwi5oes5oet5oev5oiB5oiD5oiE5oiH5oiT5oiV5oic5oig5oii5oij5oin5oip5oir5oi55oi95omC5omD5omE5omG5omM5omQ5omR5omS5omU5omW5oma5omc5omk5omt5omv5omz5om65om95oqN5oqO5oqP5oqQ5oqm5oqo5oqz5oq25oq35oq65oq+5oq/5ouE5ouO5ouV5ouW5oua5ouq5ouy5ou05ou85ou95oyD5oyE5oyK5oyL5oyN5oyQ5oyT5oyW5oyY5oyp5oyq5oyt5oy15oy25oy55oy85o2B5o2C5o2D5o2E5o2G5o2K5o2L5o2O5o2S5o2T5o2U5o2Y5o2b5o2l5o2m5o2s5o2t5o2x5o205o21Il0sWyI4ZmMwYTEiLCLmjbjmjbzmjb3mjb/mjoLmjoTmjofmjormjpDmjpTmjpXmjpnmjprmjp7mjqTmjqbmjq3mjq7mjq/mjr3mj4Hmj4Xmj4jmj47mj5Hmj5Pmj5Tmj5Xmj5zmj6Dmj6Xmj6rmj6zmj7Lmj7Pmj7Xmj7jmj7nmkInmkIrmkJDmkJLmkJTmkJjmkJ7mkKDmkKLmkKTmkKXmkKnmkKrmkK/mkLDmkLXmkL3mkL/mkYvmkY/mkZHmkZLmkZPmkZTmkZrmkZvmkZzmkZ3mkZ/mkaDmkaHmkaPmka3mkbPmkbTmkbvmkb3mkoXmkofmko/mkpDmkpHmkpjmkpnmkpvmkp3mkp/mkqHmkqPmkqbmkqjmkqzmkrPmkr3mkr7mkr8iXSxbIjhmYzFhMSIsIuaThOaTieaTiuaTi+aTjOaTjuaTkOaTkeaTleaTl+aTpOaTpeaTqeaTquaTreaTsOaTteaTt+aTu+aTv+aUgeaUhOaUiOaUieaUiuaUj+aUk+aUlOaUluaUmeaUm+aUnuaUn+aUouaUpuaUqeaUruaUseaUuuaUvOaUveaVg+aVh+aVieaVkOaVkuaVlOaVn+aVoOaVp+aVq+aVuuaVveaWgeaWheaWiuaWkuaWleaWmOaWneaWoOaWo+aWpuaWruaWsuaWs+aWtOaWv+aXguaXiOaXieaXjuaXkOaXlOaXluaXmOaXn+aXsOaXsuaXtOaXteaXueaXvuaXv+aYgOaYhOaYiOaYieaYjeaYkeaYkuaYleaYluaYnSJdLFsiOGZjMmExIiwi5pie5pih5pii5pij5pik5pim5pip5piq5pir5pis5piu5piw5pix5piz5pi55pi35pmA5pmF5pmG5pmK5pmM5pmR5pmO5pmX5pmY5pmZ5pmb5pmc5pmg5pmh5pu75pmq5pmr5pms5pm+5pmz5pm15pm/5pm35pm45pm55pm75pqA5pm85pqL5pqM5pqN5pqQ5pqS5pqZ5pqa5pqb5pqc5pqf5pqg5pqk5pqt5pqx5pqy5pq15pq75pq/5puA5puC5puD5puI5puM5puO5puP5puU5pub5puf5puo5pur5pus5puu5pu65pyF5pyH5pyO5pyT5pyZ5pyc5pyg5pyi5pyz5py+5p2F5p2H5p2I5p2M5p2U5p2V5p2dIl0sWyI4ZmMzYTEiLCLmnabmnazmna7mnbTmnbbmnbvmnoHmnoTmno7mno/mnpHmnpPmnpbmnpjmnpnmnpvmnrDmnrHmnrLmnrXmnrvmnrzmnr3mn7nmn4Dmn4Lmn4Pmn4Xmn4jmn4nmn5Lmn5fmn5nmn5zmn6Hmn6bmn7Dmn7Lmn7bmn7fmoZLmoJTmoJnmoJ3moJ/moKjmoKfmoKzmoK3moK/moLDmoLHmoLPmoLvmoL/moYTmoYXmoYrmoYzmoZXmoZfmoZjmoZvmoavmoa4iLDQsIuahteahueahuuahu+ahvOaiguaihOaihuaiiOailuaimOaimuainOaioeaio+aipeaiqeaiquairuaisuaiu+ajheajiOajjOajjyJdLFsiOGZjNGExIiwi5qOQ5qOR5qOT5qOW5qOZ5qOc5qOd5qOl5qOo5qOq5qOr5qOs5qOt5qOw5qOx5qO15qO25qO75qO85qO95qSG5qSJ5qSK5qSQ5qSR5qST5qSW5qSX5qSx5qSz5qS15qS45qS75qWC5qWF5qWJ5qWO5qWX5qWb5qWj5qWk5qWl5qWm5qWo5qWp5qWs5qWw5qWx5qWy5qW65qW75qW/5qaA5qaN5qaS5qaW5qaY5qah5qal5qam5qao5qar5qat5qav5qa35qa45qa65qa85qeF5qeI5qeR5qeW5qeX5qei5qel5qeu5qev5qex5qez5qe15qe+5qiA5qiB5qiD5qiP5qiR5qiV5qia5qid5qig5qik5qio5qiw5qiyIl0sWyI4ZmM1YTEiLCLmqLTmqLfmqLvmqL7mqL/mqYXmqYbmqYnmqYrmqY7mqZDmqZHmqZLmqZXmqZbmqZvmqaTmqafmqarmqbHmqbPmqb7mqoHmqoPmqobmqofmqonmqovmqpHmqpvmqp3mqp7mqp/mqqXmqqvmqq/mqrDmqrHmqrTmqr3mqr7mqr/mq4bmq4nmq4jmq4zmq5Dmq5Tmq5Xmq5bmq5zmq53mq6Tmq6fmq6zmq7Dmq7Hmq7Lmq7zmq73mrILmrIPmrIbmrIfmrInmrI/mrJDmrJHmrJfmrJvmrJ7mrKTmrKjmrKvmrKzmrK/mrLXmrLbmrLvmrL/mrYbmrYrmrY3mrZLmrZbmrZjmrZ3mraDmrafmravmra7mrbDmrbXmrb0iXSxbIjhmYzZhMSIsIuatvuauguauheaul+aum+aun+auoOauouauo+auqOauqeaurOaureauruausOauuOauueauveauvuavg+avhOavieavjOavluavmuavoeavo+avpuavp+avruavseavt+avueavv+awguawhOawheawieawjeawjuawkOawkuawmeawn+awpuawp+awqOawrOawruaws+awteawtuawuuawu+awv+axiuaxi+axjeaxj+axkuaxlOaxmeaxm+axnOaxq+axreaxr+axtOaxtuaxuOaxueaxu+ayheayhuayh+ayieaylOayleayl+aymOaynOayn+aysOaysuaytOazguazhuazjeazj+azkOazkeazkuazlOazliJdLFsiOGZjN2ExIiwi5rOa5rOc5rOg5rOn5rOp5rOr5rOs5rOu5rOy5rO05rSE5rSH5rSK5rSO5rSP5rSR5rST5rSa5rSm5rSn5rSo5rGn5rSu5rSv5rSx5rS55rS85rS/5rWX5rWe5rWf5rWh5rWl5rWn5rWv5rWw5rW85raC5raH5raR5raS5raU5raW5raX5raY5raq5ras5ra05ra35ra55ra95ra/5reE5reI5reK5reO5reP5reW5reb5red5ref5reg5rei5rel5rep5rev5rew5re05re25re85riA5riE5rie5rii5rin5riy5ri25ri55ri75ri85rmE5rmF5rmI5rmJ5rmL5rmP5rmR5rmS5rmT5rmU5rmX5rmc5rmd5rmeIl0sWyI4ZmM4YTEiLCLmuaLmuaPmuajmubPmubvmub3muo3mupPmupnmuqDmuqfmuq3muq7murHmurPmurvmur/mu4Dmu4Hmu4Pmu4fmu4jmu4rmu43mu47mu4/mu6vmu63mu67mu7nmu7vmu73mvITmvIjmvIrmvIzmvI3mvJbmvJjmvJrmvJvmvKbmvKnmvKrmvK/mvLDmvLPmvLbmvLvmvLzmvK3mvY/mvZHmvZLmvZPmvZfmvZnmvZrmvZ3mvZ7mvaHmvaLmvajmvazmvb3mvb7mvoPmvofmvojmvovmvozmvo3mvpDmvpLmvpPmvpTmvpbmvprmvp/mvqDmvqXmvqbmvqfmvqjmvq7mvq/mvrDmvrXmvrbmvrzmv4Xmv4fmv4jmv4oiXSxbIjhmYzlhMSIsIua/mua/nua/qOa/qea/sOa/tea/uea/vOa/veeAgOeAheeAhueAh+eAjeeAl+eAoOeAo+eAr+eAtOeAt+eAueeAvOeBg+eBhOeBiOeBieeBiueBi+eBlOeBleeBneeBnueBjueBpOeBpeeBrOeBrueBteeBtueBvueCgeeCheeChueClCIsNCwi54Kb54Kk54Kr54Kw54Kx54K054K354OK54OR54OT54OU54OV54OW54OY54Oc54Ok54O654SDIiw0LCLnhIvnhIznhI/nhJ7nhKDnhKvnhK3nhK/nhLDnhLHnhLjnhYHnhYXnhYbnhYfnhYrnhYvnhZDnhZLnhZfnhZrnhZznhZ7nhaAiXSxbIjhmY2FhMSIsIueFqOeFueeGgOeGheeGh+eGjOeGkueGmueGm+eGoOeGoueGr+eGsOeGsueGs+eGuueGv+eHgOeHgeeHhOeHi+eHjOeHk+eHlueHmeeHmueHnOeHuOeHvueIgOeIh+eIiOeIieeIk+eIl+eImueIneeIn+eIpOeIq+eIr+eItOeIuOeIueeJgeeJgueJg+eJheeJjueJj+eJkOeJk+eJleeJlueJmueJnOeJnueJoOeJo+eJqOeJq+eJrueJr+eJseeJt+eJuOeJu+eJvOeJv+eKhOeKieeKjeeKjueKk+eKm+eKqOeKreeKrueKseeKtOeKvueLgeeLh+eLieeLjOeLleeLlueLmOeLn+eLpeeLs+eLtOeLuueLuyJdLFsiOGZjYmExIiwi54u+54yC54yE54yF54yH54yL54yN54yS54yT54yY54yZ54ye54yi54yk54yn54yo54ys54yx54yy54y154y654y754y9542D542N542Q542S542W542Y542d542e542f542g542m542n542p542r542s542u542v542x542354255428546A546B546D546F546G546O546Q546T546V546X546Y546c546e546f546g546i546l546m546q546r546t54615463546554685469546/54+F54+G54+J54+L54+M54+P54+S54+T54+W54+Z54+d54+h54+j54+m54+n54+p54+054+154+354+554+654+754+9Il0sWyI4ZmNjYTEiLCLnj7/nkIDnkIHnkITnkIfnkIrnkJHnkJrnkJvnkKTnkKbnkKgiLDksIueQueeRgOeRg+eRhOeRhueRh+eRi+eRjeeRkeeRkueRl+eRneeRoueRpueRp+eRqOeRq+eRreeRrueRseeRsueSgOeSgeeSheeShueSh+eSieeSj+eSkOeSkeeSkueSmOeSmeeSmueSnOeSn+eSoOeSoeeSo+eSpueSqOeSqeeSqueSq+eSrueSr+eSseeSsueSteeSueeSu+eSv+eTiOeTieeTjOeTkOeTk+eTmOeTmueTm+eTnueTn+eTpOeTqOeTqueTq+eTr+eTtOeTuueTu+eTvOeTv+eUhiJdLFsiOGZjZGExIiwi55SS55SW55SX55Sg55Sh55Sk55Sn55Sp55Sq55Sv55S255S555S955S+55S/55WA55WD55WH55WI55WO55WQ55WS55WX55We55Wf55Wh55Wv55Wx55W5Iiw1LCLnloHnloXnlpDnlpLnlpPnlpXnlpnnlpznlqLnlqTnlrTnlrrnlr/nl4Dnl4Hnl4Tnl4bnl4znl47nl4/nl5fnl5znl5/nl6Dnl6Hnl6Tnl6fnl6znl67nl6/nl7Hnl7nnmIDnmILnmIPnmITnmIfnmIjnmIrnmIznmI/nmJLnmJPnmJXnmJbnmJnnmJvnmJznmJ3nmJ7nmKPnmKXnmKbnmKnnmK3nmLLnmLPnmLXnmLjnmLkiXSxbIjhmY2VhMSIsIueYuueYvOeZiueZgOeZgeeZg+eZhOeZheeZieeZi+eZleeZmeeZn+eZpOeZpeeZreeZrueZr+eZseeZtOeageeaheeajOeajeealeeam+eanOeaneean+eaoOeaoiIsNiwi55qq55qt55q955uB55uF55uJ55uL55uM55uO55uU55uZ55ug55um55uo55us55uw55ux55u255u555u855yA55yG55yK55yO55yS55yU55yV55yX55yZ55ya55yc55yi55yo55yt55yu55yv55y055y155y255y555y955y+552C552F552G552K552N552O552P552S552W552X552c552e552f552g552iIl0sWyI4ZmNmYTEiLCLnnaTnnafnnarnnaznnbDnnbLnnbPnnbTnnbrnnb3nnoDnnoTnnoznno3nnpTnnpXnnpbnnprnnp/nnqLnnqfnnqrnnq7nnq/nnrHnnrXnnr7nn4Pnn4nnn5Hnn5Lnn5Xnn5nnn57nn5/nn6Dnn6Tnn6bnn6rnn6znn7Dnn7Hnn7Tnn7jnn7vnoIXnoIbnoInnoI3noI7noJHnoJ3noKHnoKLnoKPnoK3noK7noLDnoLXnoLfnoYPnoYTnoYfnoYjnoYznoY7noZLnoZznoZ7noaDnoaHnoaPnoaTnoajnoarnoa7nobrnob7noornoo/nopTnopjnoqHnop3nop7nop/noqTnoqjnoqznoq3norDnorHnorLnorMiXSxbIjhmZDBhMSIsIueiu+eiveeiv+ejh+ejiOejieejjOejjuejkuejk+ejleejluejpOejm+ejn+ejoOejoeejpuejquejsuejs+ekgOejtuejt+ejuueju+ejv+ekhuekjOekkOekmueknOeknuekn+ekoOekpeekp+ekqeekreekseektOekteeku+ekveekv+elhOelheelhueliueli+elj+elkeellOelmOelm+elnOelp+elqeelq+elsuelueelu+elvOelvuemi+emjOemkeemk+emlOemleemluemmOemm+emnOemoeemqOemqeemq+emr+emseemtOemuOemu+enguenhOenh+eniOeniuenj+enlOenluenmuenneenniJdLFsiOGZkMWExIiwi56eg56ei56el56eq56er56et56ex56e456e856iC56iD56iH56iJ56iK56iM56iR56iV56ib56ie56ih56in56ir56it56iv56iw56i056i156i456i556i656mE56mF56mH56mI56mM56mV56mW56mZ56mc56md56mf56mg56ml56mn56mq56mt56m156m456m+56qA56qC56qF56qG56qK56qL56qQ56qR56qU56qe56qg56qj56qs56qz56q156q556q756q856uG56uJ56uM56uO56uR56ub56uo56up56ur56us56ux56u056u756u956u+56yH56yU56yf56yj56yn56yp56yq56yr56yt56yu56yv56ywIl0sWyI4ZmQyYTEiLCLnrLHnrLTnrL3nrL/nrYDnrYHnrYfnrY7nrZXnraDnraTnrabnrannrarnra3nra/nrbLnrbPnrbfnroTnronnro7nrpDnrpHnrpbnrpvnrp7nrqDnrqXnrqznrq/nrrDnrrLnrrXnrrbnrrrnrrvnrrznrr3nr4Lnr4Xnr4jnr4rnr5Tnr5bnr5fnr5nnr5rnr5vnr6jnr6rnr7Lnr7Tnr7Xnr7jnr7nnr7rnr7znr77nsIHnsILnsIPnsITnsIbnsInnsIvnsIznsI7nsI/nsJnnsJvnsKDnsKXnsKbnsKjnsKznsLHnsLPnsLTnsLbnsLnnsLrnsYbnsYrnsZXnsZHnsZLnsZPnsZkiLDVdLFsiOGZkM2ExIiwi57Gh57Gj57Gn57Gp57Gt57Gu57Gw57Gy57G557G857G957KG57KH57KP57KU57Ke57Kg57Km57Kw57K257K357K657K757K857K/57OE57OH57OI57OJ57ON57OP57OT57OU57OV57OX57OZ57Oa57Od57Om57Op57Or57O157SD57SH57SI57SJ57SP57SR57SS57ST57SW57Sd57Se57Sj57Sm57Sq57St57Sx57S857S957S+57WA57WB57WH57WI57WN57WR57WT57WX57WZ57Wa57Wc57Wd57Wl57Wn57Wq57Ww57W457W657W757W/57aB57aC57aD57aF57aG57aI57aL57aM57aN57aR57aW57aX57adIl0sWyI4ZmQ0YTEiLCLntp7ntqbntqfntqrntrPntrbntrfntrnnt4IiLDQsIue3jOe3jee3jue3l+e3mee4gOe3oue3pee3pue3que3q+e3ree3see3tee3tue3uee3uue4iOe4kOe4kee4lee4l+e4nOe4nee4oOe4p+e4qOe4rOe4ree4r+e4s+e4tue4v+e5hOe5hee5h+e5jue5kOe5kue5mOe5n+e5oee5oue5pee5q+e5rue5r+e5s+e5uOe5vue6gee6hue6h+e6iue6jee6kee6lee6mOe6mue6nee6nue8vOe8u+e8vee8vue8v+e9g+e9hOe9h+e9j+e9kue9k+e9m+e9nOe9nee9oee9o+e9pOe9pee9pue9rSJdLFsiOGZkNWExIiwi572x5729572+572/576A576L576N576P576Q576R576W576X576c576h576i576m576q576t57605768576/57+A57+D57+I57+O57+P57+b57+f57+j57+l57+o57+s57+u57+v57+y57+657+957++57+/6ICH6ICI6ICK6ICN6ICO6ICP6ICR6ICT6ICU6ICW6ICd6ICe6ICf6ICg6ICk6ICm6ICs6ICu6ICw6IC06IC16IC36IC56IC66IC86IC+6IGA6IGE6IGg6IGk6IGm6IGt6IGx6IG16IKB6IKI6IKO6IKc6IKe6IKm6IKn6IKr6IK46IK56IOI6ION6IOP6IOS6IOU6IOV6IOX6IOY6IOg6IOt6IOuIl0sWyI4ZmQ2YTEiLCLog7Dog7Log7Pog7bog7nog7rog77ohIPohIvohJbohJfohJjohJzohJ7ohKDohKTohKfohKzohLDohLXohLrohLzohYXohYfohYrohYzohZLohZfohaDohaHohafohajohanoha3oha/ohbfohoHohpDohoTohoXohobohovoho7ohpbohpjohpvohp7ohqLohq7ohrLohrTohrvoh4voh4Poh4Xoh4roh47oh4/oh5Xoh5foh5voh53oh57oh6Hoh6Toh6voh6zoh7Doh7Hoh7Loh7Xoh7boh7joh7noh73oh7/oiIDoiIPoiI/oiJPoiJToiJnoiJroiJ3oiKHoiKLoiKjoiLLoiLToiLroiYPoiYToiYXoiYYiXSxbIjhmZDdhMSIsIuiJi+iJjuiJj+iJkeiJluiJnOiJoOiJo+iJp+iJreiJtOiJu+iJveiJv+iKgOiKgeiKg+iKhOiKh+iKieiKiuiKjuiKkeiKlOiKluiKmOiKmuiKm+iKoOiKoeiKo+iKpOiKp+iKqOiKqeiKquiKruiKsOiKsuiKtOiKt+iKuuiKvOiKvuiKv+iLhuiLkOiLleiLmuiLoOiLouiLpOiLqOiLquiLreiLr+iLtuiLt+iLveiLvuiMgOiMgeiMh+iMiOiMiuiMi+iNlOiMm+iMneiMnuiMn+iMoeiMouiMrOiMreiMruiMsOiMs+iMt+iMuuiMvOiMveiNguiNg+iNhOiNh+iNjeiNjuiNkeiNleiNluiNl+iNsOiNuCJdLFsiOGZkOGExIiwi6I296I2/6I6A6I6C6I6E6I6G6I6N6I6S6I6U6I6V6I6Y6I6Z6I6b6I6c6I6d6I6m6I6n6I6p6I6s6I6+6I6/6I+A6I+H6I+J6I+P6I+Q6I+R6I+U6I+d6I2T6I+o6I+q6I+26I+46I+56I+86JCB6JCG6JCK6JCP6JCR6JCV6JCZ6I6t6JCv6JC56JGF6JGH6JGI6JGK6JGN6JGP6JGR6JGS6JGW6JGY6JGZ6JGa6JGc6JGg6JGk6JGl6JGn6JGq6JGw6JGz6JG06JG26JG46JG86JG96JKB6JKF6JKS6JKT6JKV6JKe6JKm6JKo6JKp6JKq6JKv6JKx6JK06JK66JK96JK+6JOA6JOC6JOH6JOI6JOM6JOP6JOTIl0sWyI4ZmQ5YTEiLCLok5zok6fok6rok6/ok7Dok7Hok7Lok7folLLok7rok7vok73olILolIPolIfolIzolI7olJDolJzolJ7olKLolKPolKTolKXolKfolKrolKvolK/olLPolLTolLbolL/olYbolY8iLDQsIuiVluiVmeiVnCIsNiwi6JWk6JWr6JWv6JW56JW66JW76JW96JW/6JaB6JaF6JaG6JaJ6JaL6JaM6JaP6JaT6JaY6Jad6Jaf6Jag6Jai6Jal6Jan6Ja06Ja26Ja36Ja46Ja86Ja96Ja+6Ja/6JeC6JeH6JeK6JeL6JeO6Jat6JeY6Jea6Jef6Jeg6Jem6Jeo6Jet6Jez6Je26Je8Il0sWyI4ZmRhYTEiLCLol7/omIDomITomIXomI3omI7omJDomJHomJLomJjomJnomJvomJ7omKHomKfomKnomLbomLjomLromLzomL3omYDomYLomYbomZLomZPomZbomZfomZjomZnomZ3omaAiLDQsIuiZqeiZrOiZr+iZteiZtuiZt+iZuuiajeiakeialuiamOiamuianOiaoeiapuiap+iaqOiareiaseias+iatOiateiat+iauOiaueiav+ibgOibgeibg+ibheibkeibkuibleibl+ibmuibnOiboOibo+ibpeibp+iaiOibuuibvOibveichOicheich+ici+icjuicj+ickOick+iclOicmeicnuicn+icoeicoyJdLFsiOGZkYmExIiwi6Jyo6Jyu6Jyv6Jyx6Jyy6Jy56Jy66Jy86Jy96Jy+6J2A6J2D6J2F6J2N6J2Y6J2d6J2h6J2k6J2l6J2v6J2x6J2y6J276J6DIiw2LCLonovonozonpDonpPonpXonpfonpjonpnonp7onqDonqPonqfonqzonq3onq7onrHonrXonr7onr/on4Hon4jon4non4ron47on5Xon5bon5non5ron5zon5/on6Lon6Pon6Ton6ron6von63on7Hon7Pon7jon7ron7/ooIHooIPooIbooInooIrooIvooJDooJnooJLooJPooJTooJjooJrooJvooJzooJ7ooJ/ooKjooK3ooK7ooLDooLLooLUiXSxbIjhmZGNhMSIsIuiguuigvOihgeihg+ihheihiOihieihiuihi+ihjuihkeihleihluihmOihmuihnOihn+ihoOihpOihqeihseihueihu+iigOiimOiimuiim+iinOiin+iioOiiqOiiquiiuuiiveiivuijgOijiiIsNCwi6KOR6KOS6KOT6KOb6KOe6KOn6KOv6KOw6KOx6KO16KO36KSB6KSG6KSN6KSO6KSP6KSV6KSW6KSY6KSZ6KSa6KSc6KSg6KSm6KSn6KSo6KSw6KSx6KSy6KS16KS56KS66KS+6KWA6KWC6KWF6KWG6KWJ6KWP6KWS6KWX6KWa6KWb6KWc6KWh6KWi6KWj6KWr6KWu6KWw6KWz6KW16KW6Il0sWyI4ZmRkYTEiLCLopbvopbzopb3oponopo3oppDoppToppXoppvoppzopp/opqDopqXoprDoprToprXoprboprfoprzop5QiLDQsIuinpeinqeinq+inreinseins+intuinueinveinv+iohOioheioh+ioj+iokeiokuiolOioleionuiooOioouiopOiopuioq+iorOior+ioteiot+ioveiovuipgOipg+ipheiph+ipieipjeipjuipk+ipluipl+ipmOipnOipneipoeippeipp+ipteiptuipt+ipueipuuipu+ipvuipv+iqgOiqg+iqhuiqi+iqj+iqkOiqkuiqluiql+iqmeiqn+iqp+iqqeiqruiqr+iqsyJdLFsiOGZkZWExIiwi6Kq26Kq36Kq76Kq+6KuD6KuG6KuI6KuJ6KuK6KuR6KuT6KuU6KuV6KuX6Kud6Kuf6Kus6Kuw6Ku06Ku16Ku26Ku86Ku/6KyF6KyG6KyL6KyR6Kyc6Kye6Kyf6KyK6Kyt6Kyw6Ky36Ky86K2CIiw0LCLorYjorZLorZPorZTorZnorY3orZ7oraPora3orbborbjorbnorbzorb7oroHoroToroXorovoro3oro/orpTorpXorpzorp7orp/osLjosLnosL3osL7osYXosYfosYnosYvosY/osZHosZPosZTosZfosZjosZvosZ3osZnosaPosaTosabosajosanosa3osbPosbXosbbosbvosb7osoYiXSxbIjhmZGZhMSIsIuiyh+iyi+iykOiykuiyk+iymeiym+iynOiypOiyueiyuuizheizhuizieizi+izj+izluizleizmeizneizoeizqOizrOizr+izsOizsuizteizt+izuOizvuizv+i0gei0g+i0iei0kui0l+i0m+i1pei1qei1rOi1rui1v+i2gui2hOi2iOi2jei2kOi2kei2lei2nui2n+i2oOi2pui2q+i2rOi2r+i2sui2tei2t+i2uei2u+i3gOi3hei3hui3h+i3iOi3iui3jui3kei3lOi3lei3l+i3mei3pOi3pei3p+i3rOi3sOi2vOi3sei3sui3tOi3vei4gei4hOi4hei4hui4i+i4kei4lOi4lui4oOi4oei4oiJdLFsiOGZlMGExIiwi6Lij6Lim6Lin6Lix6Liz6Li26Li36Li46Li56Li96LmA6LmB6LmL6LmN6LmO6LmP6LmU6Lmb6Lmc6Lmd6Lme6Lmh6Lmi6Lmp6Lms6Lmt6Lmv6Lmw6Lmx6Lm56Lm66Lm76LqC6LqD6LqJ6LqQ6LqS6LqV6Lqa6Lqb6Lqd6Lqe6Lqi6Lqn6Lqp6Lqt6Lqu6Lqz6Lq16Lq66Lq76LuA6LuB6LuD6LuE6LuH6LuP6LuR6LuU6Luc6Luo6Luu6Luw6Lux6Lu36Lu56Lu66Lut6LyA6LyC6LyH6LyI6LyP6LyQ6LyW6LyX6LyY6Lye6Lyg6Lyh6Lyj6Lyl6Lyn6Lyo6Lys6Lyt6Lyu6Ly06Ly16Ly26Ly36Ly66L2A6L2BIl0sWyI4ZmUxYTEiLCLovYPovYfovY/ovZEiLDQsIui9mOi9nei9nui9pei+nei+oOi+oei+pOi+pei+pui+tei+tui+uOi+vui/gOi/gei/hui/iui/i+i/jei/kOi/kui/k+i/lei/oOi/o+i/pOi/qOi/rui/sei/tei/tui/u+i/vumAgumAhOmAiOmAjOmAmOmAm+mAqOmAqemAr+mAqumArOmAremAs+mAtOmAt+mAv+mBg+mBhOmBjOmBm+mBnemBoumBpumBp+mBrOmBsOmBtOmBuemChemCiOmCi+mCjOmCjumCkOmClemCl+mCmOmCmemCm+mCoOmCoemCoumCpemCsOmCsumCs+mCtOmCtumCvemDjOmCvumDgyJdLFsiOGZlMmExIiwi6YOE6YOF6YOH6YOI6YOV6YOX6YOY6YOZ6YOc6YOd6YOf6YOl6YOS6YO26YOr6YOv6YOw6YO06YO+6YO/6YSA6YSE6YSF6YSG6YSI6YSN6YSQ6YSU6YSW6YSX6YSY6YSa6YSc6YSe6YSg6YSl6YSi6YSj6YSn6YSp6YSu6YSv6YSx6YS06YS26YS36YS56YS66YS86YS96YWD6YWH6YWI6YWP6YWT6YWX6YWZ6YWa6YWb6YWh6YWk6YWn6YWt6YW06YW56YW66YW76YaB6YaD6YaF6YaG6YaK6YaO6YaR6YaT6YaU6YaV6YaY6Yae6Yah6Yam6Yao6Yas6Yat6Yau6Yaw6Yax6Yay6Yaz6Ya26Ya76Ya86Ya96Ya/Il0sWyI4ZmUzYTEiLCLph4Lph4Pph4Xph5Pph5Tph5fph5nph5rph57ph6Tph6Xph6nph6rph6wiLDUsIumHt+mHuemHu+mHvemIgOmIgemIhOmIhemIhumIh+mIiemIiumIjOmIkOmIkumIk+mIlumImOmInOmInemIo+mIpOmIpemIpumIqOmIrumIr+mIsOmIs+mItemItumIuOmIuemIuumIvOmIvumJgOmJgumJg+mJhumJh+mJiumJjemJjumJj+mJkemJmOmJmemJnOmJnemJoOmJoemJpemJp+mJqOmJqemJrumJr+mJsOmJtSIsNCwi6Ym76Ym86Ym96Ym/6YqI6YqJ6YqK6YqN6YqO6YqS6YqXIl0sWyI4ZmU0YTEiLCLpipnpip/piqDpiqTpiqXpiqfpiqjpiqvpiq/pirLpirbpirjpirrpirvpirzpir3pir8iLDQsIumLhemLhumLh+mLiOmLi+mLjOmLjemLjumLkOmLk+mLlemLl+mLmOmLmemLnOmLnemLn+mLoOmLoemLo+mLpemLp+mLqOmLrOmLrumLsOmLuemLu+mLv+mMgOmMgumMiOmMjemMkemMlOmMlemMnOmMnemMnumMn+mMoemMpOmMpemMp+mMqemMqumMs+mMtOmMtumMt+mNh+mNiOmNiemNkOmNkemNkumNlemNl+mNmOmNmumNnumNpOmNpemNp+mNqemNqumNremNr+mNsOmNsemNs+mNtOmNtiJdLFsiOGZlNWExIiwi6Y266Y296Y2/6Y6A6Y6B6Y6C6Y6I6Y6K6Y6L6Y6N6Y6P6Y6S6Y6V6Y6Y6Y6b6Y6e6Y6h6Y6j6Y6k6Y6m6Y6o6Y6r6Y606Y616Y626Y666Y6p6Y+B6Y+E6Y+F6Y+G6Y+H6Y+JIiw0LCLpj5Ppj5npj5zpj57pj5/pj6Lpj6bpj6fpj7npj7fpj7jpj7rpj7vpj73pkIHpkILpkITpkIjpkInpkI3pkI7pkI/pkJXpkJbpkJfpkJ/pkK7pkK/pkLHpkLLpkLPpkLTpkLvpkL/pkL3pkYPpkYXpkYjpkYrpkYzpkZXpkZnpkZzpkZ/pkaHpkaPpkajpkavpka3pka7pka/pkbHpkbLpkoTpkoPplbjplbkiXSxbIjhmZTZhMSIsIumVvumWhOmWiOmWjOmWjemWjumWnemWnumWn+mWoemWpumWqemWq+mWrOmWtOmWtumWuumWvemWv+mXhumXiOmXiemXi+mXkOmXkemXkumXk+mXmemXmumXnemXnumXn+mXoOmXpOmXpumYnemYnumYoumYpOmYpemYpumYrOmYsemYs+mYt+mYuOmYuemYuumYvOmYvemZgemZkumZlOmZlumZl+mZmOmZoemZrumZtOmZu+mZvOmZvumZv+magemagumag+mahOmaiemakemalumamumaneman+mapOmapemapumaqemarumar+mas+mauumbiumbkuW2sumbmOmbmumbnembnumbn+mbqembr+mbsembuumcgiJdLFsiOGZlN2ExIiwi6ZyD6ZyF6ZyJ6Zya6Zyb6Zyd6Zyh6Zyi6Zyj6Zyo6Zyx6Zyz6Z2B6Z2D6Z2K6Z2O6Z2P6Z2V6Z2X6Z2Y6Z2a6Z2b6Z2j6Z2n6Z2q6Z2u6Z2z6Z226Z236Z246Z276Z296Z2/6Z6A6Z6J6Z6V6Z6W6Z6X6Z6Z6Z6a6Z6e6Z6f6Z6i6Z6s6Z6u6Z6x6Z6y6Z616Z626Z646Z656Z666Z686Z6+6Z6/6Z+B6Z+E6Z+F6Z+H6Z+J6Z+K6Z+M6Z+N6Z+O6Z+Q6Z+R6Z+U6Z+X6Z+Y6Z+Z6Z+d6Z+e6Z+g6Z+b6Z+h6Z+k6Z+v6Z+x6Z+06Z+36Z+46Z+66aCH6aCK6aCZ6aCN6aCO6aCU6aCW6aCc6aCe6aCg6aCj6aCmIl0sWyI4ZmU4YTEiLCLpoKvpoK7poK/poLDpoLLpoLPpoLXpoKXpoL7poYTpoYfpoYrpoZHpoZLpoZPpoZbpoZfpoZnpoZrpoaLpoaPpoaXpoabpoarpoazpoqvpoq3poq7porDporTporfporjporrporvpor/po4Lpo4Xpo4jpo4zpo6Hpo6Ppo6Xpo6bpo6fpo6rpo7Ppo7bppILppIfppIjppJHppJXppJbppJfppJrppJvppJzppJ/ppKLppKbppKfppKvppLEiLDQsIumkuemkuumku+mkvOmlgOmlgemlhumlh+mliOmljemljumllOmlmOmlmemlm+mlnOmlnumln+mloOmmm+mmnemmn+mmpummsOmmsemmsummtSJdLFsiOGZlOWExIiwi6aa56aa66aa96aa/6aeD6aeJ6aeT6aeU6aeZ6aea6aec6aee6aen6aeq6aer6aes6aew6ae06ae16ae56ae96ae+6aiC6aiD6aiE6aiL6aiM6aiQ6aiR6aiW6aie6aig6aii6aij6aik6ain6ait6aiu6aiz6ai16ai26ai46amH6amB6amE6amK6amL6amM6amO6amR6amU6amW6amd6aqq6aqs6aqu6aqv6aqy6aq06aq16aq26aq56aq76aq+6aq/6auB6auD6auG6auI6auO6auQ6auS6auV6auW6auX6aub6auc6aug6auk6aul6aun6aup6aus6auy6auz6au16au56au66au96au/Iiw0XSxbIjhmZWFhMSIsIumshOmshemsiOmsiemsi+msjOmsjemsjumskOmskumslumsmemsm+msnOmsoOmspumsq+msremss+mstOmstemst+msuemsuumsvemtiOmti+mtjOmtlemtlumtl+mtm+mtnumtoemto+mtpemtpumtqOmtqiIsNCwi6a2z6a216a236a246a256a2/6a6A6a6E6a6F6a6G6a6H6a6J6a6K6a6L6a6N6a6P6a6Q6a6U6a6a6a6d6a6e6a6m6a6n6a6p6a6s6a6w6a6x6a6y6a636a646a676a686a6+6a6/6a+B6a+H6a+I6a+O6a+Q6a+X6a+Y6a+d6a+f6a+l6a+n6a+q6a+r6a+v6a+z6a+36a+4Il0sWyI4ZmViYTEiLCLpr7npr7rpr73pr7/psIDpsILpsIvpsI/psJHpsJbpsJjpsJnpsJrpsJzpsJ7psKLpsKPpsKYiLDQsIumwsemwtemwtumwt+mwvemxgemxg+mxhOmxhemxiemxiumxjumxj+mxkOmxk+mxlOmxlumxmOmxm+mxnemxnumxn+mxo+mxqemxqumxnOmxq+mxqOmxrumxsOmxsumxtemxt+mxu+mzpumzsumzt+mzuem0i+m0gum0kem0l+m0mOm0nOm0nem0num0r+m0sOm0sum0s+m0tOm0uum0vOm1hem0vem1gum1g+m1h+m1ium1k+m1lOm1n+m1o+m1oum1pem1qem1qum1q+m1sOm1tum1t+m1uyJdLFsiOGZlY2ExIiwi6bW86bW+6baD6baE6baG6baK6baN6baO6baS6baT6baV6baW6baX6baY6bah6baq6bas6bau6bax6ba16ba56ba86ba/6beD6beH6beJ6beK6beU6beV6beW6beX6bea6bee6bef6beg6bel6ben6bep6ber6beu6bew6bez6be06be+6biK6biC6biH6biO6biQ6biR6biS6biV6biW6biZ6bic6bid6bm66bm76bm86bqA6bqC6bqD6bqE6bqF6bqH6bqO6bqP6bqW6bqY6bqb6bqe6bqk6bqo6bqs6bqu6bqv6bqw6bqz6bq06bq16buG6buI6buL6buV6buf6buk6bun6bus6but6buu6buw6bux6buy6bu1Il0sWyI4ZmVkYTEiLCLpu7jpu7/pvILpvIPpvInpvI/pvJDpvJHpvJLpvJTpvJbpvJfpvJnpvJrpvJvpvJ/pvKLpvKbpvKrpvKvpvK/pvLHpvLLpvLTpvLfpvLnpvLrpvLzpvL3pvL/pvYHpvYMiLDQsIum9k+m9lem9lum9l+m9mOm9mum9nem9num9qOm9qem9rSIsNCwi6b2z6b216b266b296b6P6b6Q6b6R6b6S6b6U6b6W6b6X6b6e6b6h6b6i6b6j6b6lIl1dCgovKioqLyB9KSwKLyogMTgyICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCm1vZHVsZS5leHBvcnRzID0geyJ1Q2hhcnMiOlsxMjgsMTY1LDE2OSwxNzgsMTg0LDIxNiwyMjYsMjM1LDIzOCwyNDQsMjQ4LDI1MSwyNTMsMjU4LDI3NiwyODQsMzAwLDMyNSwzMjksMzM0LDM2NCw0NjMsNDY1LDQ2Nyw0NjksNDcxLDQ3Myw0NzUsNDc3LDUwNiw1OTQsNjEwLDcxMiw3MTYsNzMwLDkzMCw5MzgsOTYyLDk3MCwxMDI2LDExMDQsMTEwNiw4MjA5LDgyMTUsODIxOCw4MjIyLDgyMzEsODI0MSw4MjQ0LDgyNDYsODI1Miw4MzY1LDg0NTIsODQ1NCw4NDU4LDg0NzEsODQ4Miw4NTU2LDg1NzAsODU5Niw4NjAyLDg3MTMsODcyMCw4NzIyLDg3MjYsODczMSw4NzM3LDg3NDAsODc0Miw4NzQ4LDg3NTEsODc2MCw4NzY2LDg3NzcsODc4MSw4Nzg3LDg4MDIsODgwOCw4ODE2LDg4NTQsODg1OCw4ODcwLDg4OTYsODk3OSw5MzIyLDkzNzIsOTU0OCw5NTg4LDk2MTYsOTYyMiw5NjM0LDk2NTIsOTY2Miw5NjcyLDk2NzYsOTY4MCw5NzAyLDk3MzUsOTczOCw5NzkzLDk3OTUsMTE5MDYsMTE5MDksMTE5MTMsMTE5MTcsMTE5MjgsMTE5NDQsMTE5NDcsMTE5NTEsMTE5NTYsMTE5NjAsMTE5NjQsMTE5NzksMTIyODQsMTIyOTIsMTIzMTIsMTIzMTksMTIzMzAsMTIzNTEsMTI0MzYsMTI0NDcsMTI1MzUsMTI1NDMsMTI1ODYsMTI4NDIsMTI4NTAsMTI5NjQsMTMyMDAsMTMyMTUsMTMyMTgsMTMyNTMsMTMyNjMsMTMyNjcsMTMyNzAsMTMzODQsMTM0MjgsMTM3MjcsMTM4MzksMTM4NTEsMTQ2MTcsMTQ3MDMsMTQ4MDEsMTQ4MTYsMTQ5NjQsMTUxODMsMTU0NzEsMTU1ODUsMTY0NzEsMTY3MzYsMTcyMDgsMTczMjUsMTczMzAsMTczNzQsMTc2MjMsMTc5OTcsMTgwMTgsMTgyMTIsMTgyMTgsMTgzMDEsMTgzMTgsMTg3NjAsMTg4MTEsMTg4MTQsMTg4MjAsMTg4MjMsMTg4NDQsMTg4NDgsMTg4NzIsMTk1NzYsMTk2MjAsMTk3MzgsMTk4ODcsNDA4NzAsNTkyNDQsNTkzMzYsNTkzNjcsNTk0MTMsNTk0MTcsNTk0MjMsNTk0MzEsNTk0MzcsNTk0NDMsNTk0NTIsNTk0NjAsNTk0NzgsNTk0OTMsNjM3ODksNjM4NjYsNjM4OTQsNjM5NzYsNjM5ODYsNjQwMTYsNjQwMTgsNjQwMjEsNjQwMjUsNjQwMzQsNjQwMzcsNjQwNDIsNjUwNzQsNjUwOTMsNjUxMDcsNjUxMTIsNjUxMjcsNjUxMzIsNjUzNzUsNjU1MTAsNjU1MzZdLCJnYkNoYXJzIjpbMCwzNiwzOCw0NSw1MCw4MSw4OSw5NSw5NiwxMDAsMTAzLDEwNCwxMDUsMTA5LDEyNiwxMzMsMTQ4LDE3MiwxNzUsMTc5LDIwOCwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDM0MSw0MjgsNDQzLDU0NCw1NDUsNTU4LDc0MSw3NDIsNzQ5LDc1MCw4MDUsODE5LDgyMCw3OTIyLDc5MjQsNzkyNSw3OTI3LDc5MzQsNzk0Myw3OTQ0LDc5NDUsNzk1MCw4MDYyLDgxNDgsODE0OSw4MTUyLDgxNjQsODE3NCw4MjM2LDgyNDAsODI2Miw4MjY0LDgzNzQsODM4MCw4MzgxLDgzODQsODM4OCw4MzkwLDgzOTIsODM5Myw4Mzk0LDgzOTYsODQwMSw4NDA2LDg0MTYsODQxOSw4NDI0LDg0MzcsODQzOSw4NDQ1LDg0ODIsODQ4NSw4NDk2LDg1MjEsODYwMyw4OTM2LDg5NDYsOTA0Niw5MDUwLDkwNjMsOTA2Niw5MDc2LDkwOTIsOTEwMCw5MTA4LDkxMTEsOTExMyw5MTMxLDkxNjIsOTE2NCw5MjE4LDkyMTksMTEzMjksMTEzMzEsMTEzMzQsMTEzMzYsMTEzNDYsMTEzNjEsMTEzNjMsMTEzNjYsMTEzNzAsMTEzNzIsMTEzNzUsMTEzODksMTE2ODIsMTE2ODYsMTE2ODcsMTE2OTIsMTE2OTQsMTE3MTQsMTE3MTYsMTE3MjMsMTE3MjUsMTE3MzAsMTE3MzYsMTE5ODIsMTE5ODksMTIxMDIsMTIzMzYsMTIzNDgsMTIzNTAsMTIzODQsMTIzOTMsMTIzOTUsMTIzOTcsMTI1MTAsMTI1NTMsMTI4NTEsMTI5NjIsMTI5NzMsMTM3MzgsMTM4MjMsMTM5MTksMTM5MzMsMTQwODAsMTQyOTgsMTQ1ODUsMTQ2OTgsMTU1ODMsMTU4NDcsMTYzMTgsMTY0MzQsMTY0MzgsMTY0ODEsMTY3MjksMTcxMDIsMTcxMjIsMTczMTUsMTczMjAsMTc0MDIsMTc0MTgsMTc4NTksMTc5MDksMTc5MTEsMTc5MTUsMTc5MTYsMTc5MzYsMTc5MzksMTc5NjEsMTg2NjQsMTg3MDMsMTg4MTQsMTg5NjIsMTkwNDMsMzM0NjksMzM0NzAsMzM0NzEsMzM0ODQsMzM0ODUsMzM0OTAsMzM0OTcsMzM1MDEsMzM1MDUsMzM1MTMsMzM1MjAsMzM1MzYsMzM1NTAsMzc4NDUsMzc5MjEsMzc5NDgsMzgwMjksMzgwMzgsMzgwNjQsMzgwNjUsMzgwNjYsMzgwNjksMzgwNzUsMzgwNzYsMzgwNzgsMzkxMDgsMzkxMDksMzkxMTMsMzkxMTQsMzkxMTUsMzkxMTYsMzkyNjUsMzkzOTQsMTg5MDAwXX0KCi8qKiovIH0pLAovKiAxODMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKbW9kdWxlLmV4cG9ydHMgPSBbWyIwIiwiXHUwMDAwIiwxMjddLFsiODE0MSIsIuqwguqwg+qwheqwhuqwiyIsNCwi6rCY6rCe6rCf6rCh6rCi6rCj6rClIiw2LCLqsK7qsLLqsLPqsLQiXSxbIjgxNjEiLCLqsLXqsLbqsLfqsLrqsLvqsL3qsL7qsL/qsYEiLDksIuqxjOqxjiIsNSwi6rGVIl0sWyI4MTgxIiwi6rGW6rGX6rGZ6rGa6rGb6rGdIiwxOCwi6rGy6rGz6rG16rG26rG56rG7Iiw0LCLqsoLqsofqsojqso3qso7qso/qspHqspLqspPqspUiLDYsIuqynuqyoiIsNSwi6rKr6rKt6rKu6rKxIiw2LCLqsrrqsr7qsr/qs4Dqs4Lqs4Pqs4Xqs4bqs4fqs4nqs4rqs4vqs40iLDcsIuqzluqzmCIsNywi6rOi6rOj6rOl6rOm6rOp6rOr6rOt6rOu6rOy6rO06rO3Iiw0LCLqs77qs7/qtIHqtILqtIPqtIXqtIciLDQsIuq0juq0kOq0kuq0kyJdLFsiODI0MSIsIuq0lOq0leq0luq0l+q0meq0muq0m+q0neq0nuq0n+q0oSIsNywi6rSq6rSr6rSuIiw1XSxbIjgyNjEiLCLqtLbqtLfqtLnqtLrqtLvqtL0iLDYsIuq1huq1iOq1iiIsNSwi6rWR6rWS6rWT6rWV6rWW6rWXIl0sWyI4MjgxIiwi6rWZIiw3LCLqtaLqtaQiLDcsIuq1ruq1r+q1seq1suq1t+q1uOq1ueq1uuq1vuq2gOq2gyIsNCwi6raK6raL6raN6raO6raP6raRIiwxMCwi6raeIiw1LCLqtqUiLDE3LCLqtrgiLDcsIuq3guq3g+q3heq3huq3h+q3iSIsNiwi6reS6reUIiw3LCLqt53qt57qt5/qt6Hqt6Lqt6Pqt6UiLDE4XSxbIjgzNDEiLCLqt7rqt7vqt73qt77quIIiLDUsIuq4iuq4jOq4jiIsNSwi6riVIiw3XSxbIjgzNjEiLCLquJ0iLDE4LCLquLLquLPquLXquLbquLnquLvquLwiXSxbIjgzODEiLCLquL3quL7quL/quYLquYTquYfquYjquYnquYvquY/quZHquZLquZPquZXquZciLDQsIuq5nuq5ouq5o+q5pOq5puq5p+q5quq5q+q5req5ruq5r+q5sSIsNiwi6rm66rm+Iiw1LCLquoYiLDUsIuq6jSIsNDYsIuq6v+q7geq7guq7g+q7hSIsNiwi6ruO6ruSIiw1LCLqu5rqu5vqu50iLDhdLFsiODQ0MSIsIuq7puq7p+q7qeq7quq7rOq7riIsNSwi6ru16ru26ru36ru56ru66ru76ru9Iiw4XSxbIjg0NjEiLCLqvIbqvInqvIrqvIvqvIzqvI7qvI/qvJEiLDE4XSxbIjg0ODEiLCLqvKQiLDcsIuq8ruq8r+q8seq8s+q8tSIsNiwi6ry+6r2A6r2E6r2F6r2G6r2H6r2KIiw1LCLqvZEiLDEwLCLqvZ4iLDUsIuq9piIsMTgsIuq9uiIsNSwi6r6B6r6C6r6D6r6F6r6G6r6H6r6JIiw2LCLqvpLqvpPqvpTqvpYiLDUsIuq+nSIsMjYsIuq+uuq+u+q+veq+viJdLFsiODU0MSIsIuq+v+q/gSIsNSwi6r+K6r+M6r+PIiw0LCLqv5UiLDYsIuq/nSIsNF0sWyI4NTYxIiwi6r+iIiw1LCLqv6oiLDUsIuq/suq/s+q/teq/tuq/t+q/uSIsNiwi64CC64CDIl0sWyI4NTgxIiwi64CFIiw2LCLrgI3rgI7rgI/rgJHrgJLrgJPrgJUiLDYsIuuAniIsOSwi64CpIiwyNiwi64GG64GH64GJ64GL64GN64GP64GQ64GR64GS64GW64GY64Ga64Gb64Gc64GeIiwyOSwi64G+64G/64KB64KC64KD64KFIiw2LCLrgo7rgpDrgpIiLDUsIuuCm+uCneuCnuuCo+uCpCJdLFsiODY0MSIsIuuCpeuCpuuCp+uCquuCsOuCsuuCtuuCt+uCueuCuuuCu+uCvSIsNiwi64OG64OKIiw1LCLrg5IiXSxbIjg2NjEiLCLrg5Prg5Xrg5brg5frg5kiLDYsIuuDoeuDouuDo+uDpOuDpiIsMTBdLFsiODY4MSIsIuuDsSIsMjIsIuuEiuuEjeuEjuuEj+uEkeuElOuEleuEluuEl+uEmuuEniIsNCwi64Sm64Sn64Sp64Sq64Sr64StIiw2LCLrhLbrhLoiLDUsIuuFguuFg+uFheuFhuuFh+uFiSIsNiwi64WS64WT64WW64WX64WZ64Wa64Wb64Wd64We64Wf64WhIiwyMiwi64W664W764W964W+64W/64aB64aDIiw0LCLrhorrhozrho7rho/rhpDrhpHrhpXrhpbrhpfrhpnrhprrhpvrhp0iXSxbIjg3NDEiLCLrhp4iLDksIuuGqSIsMTVdLFsiODc2MSIsIuuGuSIsMTgsIuuHjeuHjuuHj+uHkeuHkuuHk+uHlSJdLFsiODc4MSIsIuuHliIsNSwi64ee64egIiw3LCLrh6rrh6vrh63rh67rh6/rh7EiLDcsIuuHuuuHvOuHviIsNSwi64iG64iH64iJ64iK64iNIiw2LCLriJbriJjriJoiLDUsIuuIoSIsMTgsIuuItSIsNiwi64i9IiwyNiwi64mZ64ma64mb64md64me64mf64mhIiw2LCLriaoiLDRdLFsiODg0MSIsIuuJryIsNCwi64m2Iiw1LCLrib0iLDYsIuuKhuuKh+uKiOuKiiIsNF0sWyI4ODYxIiwi64qP64qS64qT64qV64qW64qX64qbIiw0LCLriqLriqTriqfriqjriqnriqvriq3riq7riq/rirHrirLrirPrirXrirbrirciXSxbIjg4ODEiLCLrirgiLDE1LCLri4rri4vri43ri47ri4/ri5Hri5MiLDQsIuuLmuuLnOuLnuuLn+uLoOuLoeuLo+uLp+uLqeuLquuLsOuLseuLsuuLtuuLvOuLveuLvuuMguuMg+uMheuMhuuMh+uMiSIsNiwi64yS64yWIiw1LCLrjJ0iLDU0LCLrjZfrjZnrjZrrjZ3rjaDrjaHrjaLrjaMiXSxbIjg5NDEiLCLrjabrjajrjarrjazrja3rja/rjbLrjbPrjbXrjbbrjbfrjbkiLDYsIuuOguuOhiIsNSwi646NIl0sWyI4OTYxIiwi646O646P646R646S646T646VIiwxMCwi646iIiw1LCLrjqnrjqrrjqvrjq0iXSxbIjg5ODEiLCLrjq4iLDIxLCLrj4brj4frj4nrj4rrj43rj4/rj5Hrj5Lrj5Prj5brj5jrj5rrj5zrj57rj5/rj6Hrj6Lrj6Prj6Xrj6brj6frj6kiLDE4LCLrj70iLDE4LCLrkJEiLDYsIuuQmeuQmuuQm+uQneuQnuuQn+uQoSIsNiwi65Cq65CsIiw3LCLrkLUiLDE1XSxbIjhhNDEiLCLrkYUiLDEwLCLrkZLrkZPrkZXrkZbrkZfrkZkiLDYsIuuRouuRpOuRpiJdLFsiOGE2MSIsIuuRpyIsNCwi65GtIiwxOCwi65KB65KCIl0sWyI4YTgxIiwi65KDIiw0LCLrkokiLDE5LCLrkp4iLDUsIuuSpeuSpuuSp+uSqeuSquuSq+uSrSIsNywi65K265K465K6Iiw1LCLrk4Hrk4Lrk4Prk4Xrk4brk4frk4kiLDYsIuuTkeuTkuuTk+uTlOuTliIsNSwi65Oe65Of65Oh65Oi65Ol65OnIiw0LCLrk67rk7Drk7IiLDUsIuuTuSIsMjYsIuuUluuUl+uUmeuUmuuUnSJdLFsiOGI0MSIsIuuUniIsNSwi65Sm65SrIiw0LCLrlLLrlLPrlLXrlLbrlLfrlLkiLDYsIuuVguuVhiJdLFsiOGI2MSIsIuuVh+uViOuVieuViuuVjuuVj+uVkeuVkuuVk+uVlSIsNiwi65We65WiIiw4XSxbIjhiODEiLCLrlasiLDUyLCLrlqLrlqPrlqXrlqbrlqfrlqnrlqzrlq3rlq7rlq/rlrLrlrYiLDQsIuuWvuuWv+uXgeuXguuXg+uXhSIsNiwi65eO65eSIiw1LCLrl5kiLDE4LCLrl60iLDE4XSxbIjhjNDEiLCLrmIAiLDE1LCLrmJLrmJPrmJXrmJbrmJfrmJkiLDRdLFsiOGM2MSIsIuuYniIsNiwi65imIiw1LCLrmK0iLDYsIuuYtSIsNV0sWyI4YzgxIiwi65i7IiwxMiwi65mJIiwyNiwi65ml65mm65mn65mpIiw1MCwi65qe65qf65qh65qi65qj65qlIiw1LCLrmq3rmq7rmq/rmrDrmrIiLDE2XSxbIjhkNDEiLCLrm4MiLDE2LCLrm5UiLDhdLFsiOGQ2MSIsIuubniIsMTcsIuubseubsuubs+ubteubtuubt+ubueubuiJdLFsiOGQ4MSIsIuubuyIsNCwi65yC65yD65yE65yGIiwzMywi65yq65yr65yt65yu65yxIiw2LCLrnLrrnLwiLDcsIuudheudhuudh+udieudiuudi+udjSIsNiwi652WIiw5LCLrnaHrnaLrnaPrnaXrnabrnafrnakiLDYsIuudsuudtOudtiIsNSwi652+652/656B656C656D656FIiw2LCLrno7rnpPrnpTrnpXrnprrnpvrnp3rnp4iXSxbIjhlNDEiLCLrnp/rnqEiLDYsIuuequueriIsNSwi656265636565Iiw4XSxbIjhlNjEiLCLrn4IiLDQsIuufiOufiiIsMTldLFsiOGU4MSIsIuufniIsMTMsIuufruufr+ufseufsuufs+uftSIsNiwi65++66CCIiw0LCLroIrroIvroI3roI7roI/roJEiLDYsIuugmuugnOugniIsNSwi66Cm66Cn66Cp66Cq66Cr66CtIiw2LCLroLbroLoiLDUsIuuhgeuhguuhg+uhhSIsMTEsIuuhkuuhlCIsNywi66Ge66Gf66Gh66Gi66Gj66GlIiw2LCLroa7robDrobIiLDUsIuuhueuhuuuhu+uhvSIsN10sWyI4ZjQxIiwi66KFIiw3LCLroo4iLDE3XSxbIjhmNjEiLCLroqAiLDcsIuuiqSIsNiwi66Kx66Ky66Kz66K166K266K366K5Iiw0XSxbIjhmODEiLCLror7ror/ro4Lro4Tro4YiLDUsIuujjeujjuujj+ujkeujkuujk+ujlSIsNywi66Oe66Og66OiIiw1LCLro6rro6vro63ro67ro6/ro7EiLDYsIuujuuujvOujviIsNSwi66SFIiwxOCwi66SZIiw2LCLrpKEiLDI2LCLrpL7rpL/rpYHrpYLrpYPrpYUiLDYsIuuljeuljuulkOulkiIsNV0sWyI5MDQxIiwi66Wa66Wb66Wd66We66Wf66WhIiw2LCLrparrpazrpa4iLDUsIuultuult+ulueuluuulu+ulvSJdLFsiOTA2MSIsIuulviIsNSwi66aG66aI66aL66aM66aPIiwxNV0sWyI5MDgxIiwi66afIiwxMiwi66au66av66ax66ay66az66a1Iiw2LCLrpr7rp4Drp4IiLDUsIuuniuuni+unjeunkyIsNCwi66ea66ec66ef66eg66ei66em66en66ep66eq66er66etIiw2LCLrp7brp7siLDQsIuuogiIsNSwi66iJIiwxMSwi66iWIiwzMywi66i666i766i966i+66i/66mB66mD66mE66mF66mGIl0sWyI5MTQxIiwi66mH66mK66mM66mP66mQ66mR66mS66mW66mX66mZ66ma66mb66mdIiw2LCLrqabrqaoiLDVdLFsiOTE2MSIsIuupsuups+upteuptuupt+upuSIsOSwi66qG66qI66qJ66qK66qL66qNIiw1XSxbIjkxODEiLCLrqpMiLDIwLCLrqqrrqq3rqq7rqq/rqrHrqrMiLDQsIuuquuuqvOuqviIsNSwi66uF66uG66uH66uJIiwxNCwi66uaIiwzMywi66u966u+66u/66yB66yC66yD66yFIiw3LCLrrI7rrJDrrJIiLDUsIuusmeusmuusm+usneusnuusn+usoSIsNl0sWyI5MjQxIiwi66yo66yq66ysIiw3LCLrrLfrrLnrrLrrrL8iLDQsIuuthuutiOutiuuti+utjOutjuutkeutkiJdLFsiOTI2MSIsIuutk+utleutluutl+utmSIsNywi662i662kIiw3LCLrra0iLDRdLFsiOTI4MSIsIuutsiIsMjEsIuuuieuuiuuui+uujeuujuuuj+uukSIsMTgsIuuupeuupuuup+uuqeuuquuuq+uurSIsNiwi666166626664Iiw3LCLrr4Hrr4Lrr4Prr4Xrr4brr4frr4kiLDYsIuuvkeuvkuuvlCIsMzUsIuuvuuuvu+uvveuvvuuwgSJdLFsiOTM0MSIsIuuwgyIsNCwi67CK67CO67CQ67CS67CT67CZ67Ca67Cg67Ch67Ci67Cj67Cm67Co67Cq67Cr67Cs67Cu67Cv67Cy67Cz67C1Il0sWyI5MzYxIiwi67C267C367C5Iiw2LCLrsYLrsYbrsYfrsYjrsYrrsYvrsY7rsY/rsZEiLDhdLFsiOTM4MSIsIuuxmuuxm+uxnOuxniIsMzcsIuuyhuuyh+uyieuyiuuyjeuyjyIsNCwi67KW67KY67KbIiw0LCLrsqLrsqPrsqXrsqbrsqkiLDYsIuuysuuytiIsNSwi67K+67K/67OB67OC67OD67OFIiw3LCLrs47rs5Lrs5Prs5Trs5brs5frs5nrs5rrs5vrs50iLDIyLCLrs7frs7nrs7rrs7vrs70iXSxbIjk0NDEiLCLrs74iLDUsIuu0huu0iOu0iiIsNSwi67SR67SS67ST67SVIiw4XSxbIjk0NjEiLCLrtJ4iLDUsIuu0pSIsNiwi67StIiwxMl0sWyI5NDgxIiwi67S6Iiw1LCLrtYEiLDYsIuu1iuu1i+u1jeu1juu1j+u1kSIsNiwi67WaIiw5LCLrtaXrtabrtafrtakiLDIyLCLrtoLrtoPrtoXrtobrtosiLDQsIuu2kuu2lOu2luu2l+u2mOu2m+u2nSIsNiwi67alIiwxMCwi67axIiw2LCLrtrkiLDI0XSxbIjk1NDEiLCLrt5Lrt5Prt5brt5frt5nrt5rrt5vrt50iLDExLCLrt6oiLDUsIuu3sSJdLFsiOTU2MSIsIuu3suu3s+u3teu3tuu3t+u3uSIsNiwi67iB67iC67iE67iGIiw1LCLruI7ruI/ruJHruJLruJMiXSxbIjk1ODEiLCLruJUiLDYsIuu4nuu4oCIsMzUsIuu5huu5h+u5ieu5iuu5i+u5jeu5jyIsNCwi67mW67mY67mc67md67me67mf67mi67mj67ml67mm67mn67mp67mrIiw0LCLrubLrubYiLDQsIuu5vuu5v+u6geu6guu6g+u6hSIsNiwi67qO67qSIiw1LCLrupoiLDEzLCLruqkiLDE0XSxbIjk2NDEiLCLrurgiLDIzLCLru5Lru5MiXSxbIjk2NjEiLCLru5Xru5bru5kiLDYsIuu7oeu7ouu7piIsNSwi67utIiw4XSxbIjk2ODEiLCLru7YiLDEwLCLrvIIiLDUsIuu8iiIsMTMsIuu8muu8niIsMzMsIuu9guu9g+u9heu9huu9h+u9iSIsNiwi672S672T672U672WIiw0NF0sWyI5NzQxIiwi676DIiwxNiwi676VIiw4XSxbIjk3NjEiLCLrvp4iLDE3LCLrvrEiLDddLFsiOTc4MSIsIuu+uSIsMTEsIuu/hiIsNSwi67+O67+P67+R67+S67+T67+VIiw2LCLrv53rv57rv6Drv6IiLDg5LCLsgL3sgL7sgL8iXSxbIjk4NDEiLCLsgYAiLDE2LCLsgZIiLDUsIuyBmeyBmuyBmyJdLFsiOTg2MSIsIuyBneyBnuyBn+yBoSIsNiwi7IGqIiwxNV0sWyI5ODgxIiwi7IG6IiwyMSwi7IKS7IKT7IKV7IKW7IKX7IKZIiw2LCLsgqLsgqTsgqYiLDUsIuyCruyCseyCsuyCtyIsNCwi7IK+7IOC7IOD7IOE7IOG7IOH7IOK7IOL7ION7IOO7IOP7IORIiw2LCLsg5rsg54iLDUsIuyDpuyDp+yDqeyDquyDq+yDrSIsNiwi7IO27IO47IO6Iiw1LCLshIHshILshIPshIXshIbshIfshIkiLDYsIuyEkeyEkuyEk+yElOyEliIsNSwi7ISh7ISi7ISl7ISo7ISp7ISq7ISr7ISuIl0sWyI5OTQxIiwi7ISy7ISz7IS07IS17IS37IS67IS77IS97IS+7IS/7IWBIiw2LCLshYrshY4iLDUsIuyFluyFlyJdLFsiOTk2MSIsIuyFmeyFmuyFm+yFnSIsNiwi7IWm7IWqIiw1LCLshbHshbLshbPshbXshbbshbfshbnshbrshbsiXSxbIjk5ODEiLCLshbwiLDgsIuyGhiIsNSwi7IaP7IaR7IaS7IaT7IaV7IaXIiw0LCLshp7shqDshqLshqPshqTshqbshqfshqrshqvshq3shq7shq/shrEiLDExLCLshr4iLDUsIuyHheyHhuyHh+yHieyHiuyHi+yHjSIsNiwi7IeV7IeW7IeZIiw2LCLsh6Hsh6Lsh6Psh6Xsh6bsh6fsh6kiLDYsIuyHsuyHtCIsNywi7Ie+7Ie/7IiB7IiC7IiD7IiFIiw2LCLsiI7siJDsiJIiLDUsIuyImuyIm+yIneyInuyIoeyIouyIoyJdLFsiOWE0MSIsIuyIpOyIpeyIpuyIp+yIquyIrOyIruyIsOyIs+yItSIsMTZdLFsiOWE2MSIsIuyJhuyJh+yJiSIsNiwi7ImS7ImT7ImV7ImW7ImX7ImZIiw2LCLsiaHsiaLsiaPsiaTsiaYiXSxbIjlhODEiLCLsiaciLDQsIuyJruyJr+yJseyJsuyJs+yJtSIsNiwi7Im+7IqA7IqCIiw1LCLsiooiLDUsIuyKkSIsNiwi7IqZ7Iqa7Iqc7IqeIiw1LCLsiqbsiqfsiqnsiqrsiqvsiq4iLDUsIuyKtuyKuOyKuiIsMzMsIuyLnuyLn+yLoeyLouyLpSIsNSwi7Iuu7Iuw7Iuy7Iuz7Iu07Iu17Iu37Iu67Iu97Iu+7Iu/7IyBIiw2LCLsjIrsjIvsjI7sjI8iXSxbIjliNDEiLCLsjJDsjJHsjJLsjJbsjJfsjJnsjJrsjJvsjJ0iLDYsIuyMpuyMp+yMqiIsOF0sWyI5YjYxIiwi7IyzIiwxNywi7I2GIiw3XSxbIjliODEiLCLsjY4iLDI1LCLsjarsjavsja3sja7sja/sjbHsjbMiLDQsIuyNuuyNu+yNviIsNSwi7I6F7I6G7I6H7I6J7I6K7I6L7I6NIiw1MCwi7I+BIiwyMiwi7I+aIl0sWyI5YzQxIiwi7I+b7I+d7I+e7I+h7I+jIiw0LCLsj6rsj6vsj6zsj64iLDUsIuyPtuyPt+yPuSIsNV0sWyI5YzYxIiwi7I+/Iiw4LCLskIkiLDYsIuyQkSIsOV0sWyI5YzgxIiwi7JCbIiw4LCLskKUiLDYsIuyQreyQruyQr+yQseyQsuyQs+yQtSIsNiwi7JC+Iiw5LCLskYkiLDI2LCLskabskafskanskarskavska0iLDYsIuyRtuyRt+yRuOyRuiIsNSwi7JKBIiwxOCwi7JKVIiw2LCLskp0iLDEyXSxbIjlkNDEiLCLskqoiLDEzLCLskrnskrrskrvskr0iLDhdLFsiOWQ2MSIsIuyThiIsMjVdLFsiOWQ4MSIsIuyToCIsOCwi7JOqIiw1LCLsk7Lsk7Psk7Xsk7bsk7fsk7nsk7vsk7zsk73sk77slIIiLDksIuyUjeyUjuyUj+yUkeyUkuyUk+yUlSIsNiwi7JSdIiwxMCwi7JSq7JSr7JSt7JSu7JSv7JSxIiw2LCLslLrslLzslL4iLDUsIuyVhuyVh+yVi+yVj+yVkOyVkeyVkuyVluyVmuyVm+yVnOyVn+yVouyVo+yVpeyVpuyVp+yVqSIsNiwi7JWy7JW2Iiw1LCLslb7slb/sloHsloLsloPsloXslobslojslonslorslovslo7slpDslpLslpPslpQiXSxbIjllNDEiLCLslpbslpnslprslpvslp3slp7slp/slqEiLDcsIuyWqiIsOSwi7Ja2Il0sWyI5ZTYxIiwi7Ja37Ja67Ja/Iiw0LCLsl4vsl43sl4/sl5Lsl5Psl5Xsl5bsl5fsl5kiLDYsIuyXouyXpOyXpuyXpyJdLFsiOWU4MSIsIuyXqOyXqeyXquyXq+yXr+yXseyXsuyXs+yXteyXuOyXueyXuuyXu+yYguyYg+yYhOyYieyYiuyYi+yYjeyYjuyYj+yYkSIsNiwi7Jia7JidIiw2LCLsmKbsmKfsmKnsmKrsmKvsmK/smLHsmLLsmLbsmLjsmLrsmLzsmL3smL7smL/smYLsmYPsmYXsmYbsmYfsmYkiLDYsIuyZkuyZliIsNSwi7Jme7Jmf7JmhIiwxMCwi7Jmt7Jmu7Jmw7JmyIiw1LCLsmbrsmbvsmb3smb7smb/smoEiLDYsIuyaiuyajOyajiIsNSwi7JqW7JqX7JqZ7Jqa7Jqb7JqdIiw2LCLsmqYiXSxbIjlmNDEiLCLsmqjsmqoiLDUsIuyasuyas+yateyatuyat+yauyIsNCwi7JuC7JuE7JuGIiw1LCLsm44iXSxbIjlmNjEiLCLsm4/sm5Hsm5Lsm5Psm5UiLDYsIuybnuybn+yboiIsNSwi7Juq7Jur7Jut7Juu7Juv7Jux7JuyIl0sWyI5ZjgxIiwi7JuzIiw0LCLsm7rsm7vsm7zsm74iLDUsIuychuych+ycieyciuyci+ycjSIsNiwi7JyW7JyY7JyaIiw1LCLsnKLsnKPsnKXsnKbsnKfsnKkiLDYsIuycsuyctOyctuycuOycueycuuycu+ycvuycv+ydgeydguydg+ydhSIsNCwi7J2L7J2O7J2Q7J2Z7J2a7J2b7J2d7J2e7J2f7J2hIiw2LCLsnansnarsnawiLDcsIuydtuydt+ydueyduuydu+ydv+yegOyegeyeguyehuyei+yejOyejeyej+yekuyek+yeleyemeyemyIsNCwi7J6i7J6nIiw0LCLsnq7snq/snrHsnrLsnrPsnrXsnrbsnrciXSxbImEwNDEiLCLsnrjsnrnsnrrsnrvsnr7sn4IiLDUsIuyfiuyfi+yfjeyfj+yfkSIsNiwi7J+Z7J+a7J+b7J+cIl0sWyJhMDYxIiwi7J+eIiw1LCLsn6Xsn6bsn6fsn6nsn6rsn6vsn60iLDEzXSxbImEwODEiLCLsn7siLDQsIuygguygg+ygheyghuygh+ygieygiyIsNCwi7KCS7KCU7KCXIiw0LCLsoJ7soJ/soKHsoKLsoKPsoKUiLDYsIuygruygsOygsiIsNSwi7KC57KC67KC77KC97KC+7KC/7KGBIiw2LCLsoYrsoYvsoY4iLDUsIuyhlSIsMjYsIuyhsuyhs+yhteyhtuyht+yhueyhuyIsNCwi7KKC7KKE7KKI7KKJ7KKK7KKOIiw1LCLsopUiLDcsIuyinuyioOyiouyio+yipCJdLFsiYTE0MSIsIuyipeyipuyip+yiqSIsMTgsIuyivuyiv+yjgOyjgSJdLFsiYTE2MSIsIuyjguyjg+yjheyjhuyjh+yjieyjiuyji+yjjSIsNiwi7KOW7KOY7KOaIiw1LCLso6Lso6Pso6UiXSxbImExODEiLCLso6YiLDE0LCLso7YiLDUsIuyjvuyjv+ykgeykguykg+ykhyIsNCwi7KSO44CA44CB44CCwrfigKXigKbCqOOAg8Kt4oCV4oil77y84oi84oCY4oCZ4oCc4oCd44CU44CV44CIIiw5LCLCscOXw7fiiaDiiaTiiaXiiJ7iiLTCsOKAsuKAs+KEg+KEq++/oO+/oe+/peKZguKZgOKIoOKKpeKMkuKIguKIh+KJoeKJksKn4oC74piG4piF4peL4peP4peO4peH4peG4pah4pag4paz4pay4pa94pa84oaS4oaQ4oaR4oaT4oaU44CT4omq4omr4oia4oi94oid4oi14oir4ois4oiI4oiL4oqG4oqH4oqC4oqD4oiq4oip4oin4oio77+iIl0sWyJhMjQxIiwi7KSQ7KSSIiw1LCLspJkiLDE4XSxbImEyNjEiLCLspK0iLDYsIuyktSIsMThdLFsiYTI4MSIsIuyliCIsNywi7KWS7KWT7KWV7KWW7KWX7KWZIiw2LCLspaLspaQiLDcsIuylreylruylr+KHkuKHlOKIgOKIg8K0772ey4fLmMudy5rLmcK4y5vCocK/y5DiiK7iiJHiiI/CpOKEieKAsOKXgeKXgOKWt+KWtuKZpOKZoOKZoeKZpeKZp+KZo+KKmeKXiOKWo+KXkOKXkeKWkuKWpOKWpeKWqOKWp+KWpuKWqeKZqOKYj+KYjuKYnOKYnsK24oCg4oCh4oaV4oaX4oaZ4oaW4oaY4pmt4pmp4pmq4pms44m/44ic4oSW44+H4oSi44+C44+Y4oSh4oKswq4iXSxbImEzNDEiLCLspbHspbLspbPspbUiLDYsIuylvSIsMTAsIuymiuymi+ymjeymjuymjyJdLFsiYTM2MSIsIuymkSIsNiwi7Kaa7Kac7KaeIiwxNl0sWyJhMzgxIiwi7KavIiwxNiwi7KeC7KeD7KeF7KeG7KeJ7KeLIiw0LCLsp5Lsp5Tsp5fsp5jsp5vvvIEiLDU4LCLvv6bvvL0iLDMyLCLvv6MiXSxbImE0NDEiLCLsp57sp5/sp6Hsp6Psp6Xsp6bsp6jsp6nsp6rsp6vsp67sp7IiLDUsIuynuuynu+ynveynvuynv+yogeyoguyog+yohCJdLFsiYTQ2MSIsIuyoheyohuyoh+yoiuyojiIsNSwi7KiV7KiW7KiX7KiZIiwxMl0sWyJhNDgxIiwi7Kim7Kin7Kio7KiqIiwyOCwi44SxIiw5M10sWyJhNTQxIiwi7KmHIiw0LCLsqY7sqY/sqZHsqZLsqZPsqZUiLDYsIuypnuypoiIsNSwi7Kmp7KmqIl0sWyJhNTYxIiwi7KmrIiwxNywi7Km+Iiw1LCLsqoXsqoYiXSxbImE1ODEiLCLsqociLDE2LCLsqpkiLDE0LCLihbAiLDldLFsiYTViMCIsIuKFoCIsOV0sWyJhNWMxIiwizpEiLDE2LCLOoyIsNl0sWyJhNWUxIiwizrEiLDE2LCLPgyIsNl0sWyJhNjQxIiwi7KqoIiwxOSwi7Kq+7Kq/7KuB7KuC7KuD7KuFIl0sWyJhNjYxIiwi7KuGIiw1LCLsq47sq5Dsq5Lsq5Tsq5Xsq5bsq5fsq5oiLDUsIuyroSIsNl0sWyJhNjgxIiwi7Kuo7Kup7Kuq7Kur7KutIiw2LCLsq7UiLDE4LCLsrInsrIrilIDilILilIzilJDilJjilJTilJzilKzilKTilLTilLzilIHilIPilI/ilJPilJvilJfilKPilLPilKvilLvilYvilKDilK/ilKjilLfilL/ilJ3ilLDilKXilLjilYLilJLilJHilJrilJnilJbilJXilI7ilI3ilJ7ilJ/ilKHilKLilKbilKfilKnilKrilK3ilK7ilLHilLLilLXilLbilLnilLrilL3ilL7ilYDilYHilYMiLDddLFsiYTc0MSIsIuysiyIsNCwi7KyR7KyS7KyT7KyV7KyW7KyX7KyZIiw2LCLsrKIiLDddLFsiYTc2MSIsIuysqiIsMjIsIuytguytg+ythCJdLFsiYTc4MSIsIuytheythuyth+ytiuyti+ytjeytjuytj+ytkSIsNiwi7K2a7K2b7K2c7K2eIiw1LCLsraUiLDcsIuOOleOOluOOl+KEk+OOmOOPhOOOo+OOpOOOpeOOpuOOmSIsOSwi44+K446N446O446P44+P446I446J44+I446n446o446wIiw5LCLjjoAiLDQsIuOOuiIsNSwi446QIiw0LCLihKbjj4Djj4Hjjorjjovjjozjj5bjj4Xjjq3jjq7jjq/jj5vjjqnjjqrjjqvjjqzjj53jj5Djj5Pjj4Pjj4njj5zjj4YiXSxbImE4NDEiLCLsra0iLDEwLCLsrboiLDE0XSxbImE4NjEiLCLsrokiLDE4LCLsrp0iLDZdLFsiYTg4MSIsIuyupCIsMTksIuyuuSIsMTEsIsOGw5DCqsSmIl0sWyJhOGE2IiwixLIiXSxbImE4YTgiLCLEv8WBw5jFksK6w57FpsWKIl0sWyJhOGIxIiwi44mgIiwyNywi4pOQIiwyNSwi4pGgIiwxNCwiwr3ihZPihZTCvMK+4oWb4oWc4oWd4oWeIl0sWyJhOTQxIiwi7K+FIiwxNCwi7K+VIiwxMF0sWyJhOTYxIiwi7K+g7K+h7K+i7K+j7K+l7K+m7K+o7K+qIiwxOF0sWyJhOTgxIiwi7K+9IiwxNCwi7LCO7LCP7LCR7LCS7LCT7LCVIiw2LCLssJ7ssJ/ssKDssKPssKTDpsSRw7DEp8SxxLPEuMWAxYLDuMWTw5/DvsWnxYvFieOIgCIsMjcsIuKSnCIsMjUsIuKRtCIsMTQsIsK5wrLCs+KBtOKBv+KCgeKCguKCg+KChCJdLFsiYWE0MSIsIuywpeywpuywquywq+ywreywr+ywsSIsNiwi7LC67LC/Iiw0LCLssYbssYfssYnssYrssYvssY3ssY4iXSxbImFhNjEiLCLssY8iLDQsIuyxluyxmiIsNSwi7LGh7LGi7LGj7LGl7LGn7LGpIiw2LCLssbHssbIiXSxbImFhODEiLCLssbPssbTssbYiLDI5LCLjgYEiLDgyXSxbImFiNDEiLCLsspTsspXsspbsspfssprsspvssp3ssp7ssp/ssqEiLDYsIuyyquyyriIsNSwi7LK27LK37LK5Il0sWyJhYjYxIiwi7LK67LK77LK9Iiw2LCLss4bss4jss4oiLDUsIuyzkeyzkuyzk+yzlSIsNV0sWyJhYjgxIiwi7LObIiw4LCLss6UiLDYsIuyzreyzruyzr+yzsSIsMTIsIuOCoSIsODVdLFsiYWM0MSIsIuyzvuyzv+y0gOy0giIsNSwi7LSK7LSL7LSN7LSO7LSP7LSRIiw2LCLstJrstJzstJ7stJ/stKAiXSxbImFjNjEiLCLstKHstKLstKPstKXstKbstKfstKnstKrstKvstK0iLDExLCLstLoiLDRdLFsiYWM4MSIsIuy0vyIsMjgsIuy1ney1nuy1n9CQIiw1LCLQgdCWIiwyNV0sWyJhY2QxIiwi0LAiLDUsItGR0LYiLDI1XSxbImFkNDEiLCLstaHstaLstaPstaUiLDYsIuy1ruy1sOy1siIsNSwi7LW5Iiw3XSxbImFkNjEiLCLstoEiLDYsIuy2iSIsMTAsIuy2luy2l+y2mey2muy2m+y2ney2nuy2nyJdLFsiYWQ4MSIsIuy2oOy2oey2ouy2o+y2puy2qOy2qiIsNSwi7LaxIiwxOCwi7LeFIl0sWyJhZTQxIiwi7LeGIiw1LCLst43st47st4/st5EiLDE2XSxbImFlNjEiLCLst6IiLDUsIuy3qey3quy3q+y3rey3ruy3r+y3sSIsNiwi7Le67Le87Le+Iiw0XSxbImFlODEiLCLsuIPsuIXsuIbsuIfsuInsuIrsuIvsuI0iLDYsIuy4ley4luy4l+y4mOy4miIsNSwi7Lii7Lij7Lil7Lim7Lin7Lip7Liq7LirIl0sWyJhZjQxIiwi7Lis7Lit7Liu7Liv7Liy7Li07Li2IiwxOV0sWyJhZjYxIiwi7LmKIiwxMywi7Lma7Lmb7Lmd7Lme7LmiIiw1LCLsuarsuawiXSxbImFmODEiLCLsua4iLDUsIuy5tuy5t+y5uey5uuy5u+y5vSIsNiwi7LqG7LqI7LqKIiw1LCLsupLsupPsupXsupbsupfsupkiXSxbImIwNDEiLCLsupoiLDUsIuy6ouy6piIsNSwi7LquIiwxMl0sWyJiMDYxIiwi7Lq7Iiw1LCLsu4IiLDE5XSxbImIwODEiLCLsu5YiLDEzLCLsu6bsu6fsu6nsu6rsu60iLDYsIuy7tuy7uiIsNSwi6rCA6rCB6rCE6rCH6rCI6rCJ6rCK6rCQIiw3LCLqsJkiLDQsIuqwoOqwpOqwrOqwreqwr+qwsOqwseqwuOqwueqwvOqxgOqxi+qxjeqxlOqxmOqxnOqxsOqxseqxtOqxt+qxuOqxuuqygOqygeqyg+qyhOqyheqyhuqyieqyiuqyi+qyjOqykOqylOqynOqyneqyn+qyoOqyoeqyqOqyqeqyquqyrOqyr+qysOqyuOqyueqyu+qyvOqyveqzgeqzhOqziOqzjOqzleqzl+qzoOqzoeqzpOqzp+qzqOqzquqzrOqzr+qzsOqzseqzs+qzteqztuqzvOqzveq0gOq0hOq0hiJdLFsiYjE0MSIsIuy8guy8g+y8hey8huy8h+y8iSIsNiwi7LyS7LyU7LyWIiw1LCLsvJ3svJ7svJ/svKHsvKLsvKMiXSxbImIxNjEiLCLsvKUiLDYsIuy8ruy8siIsNSwi7Ly5IiwxMV0sWyJiMTgxIiwi7L2FIiwxNCwi7L2W7L2X7L2Z7L2a7L2b7L2dIiw2LCLsvabsvajsvarsvavsvazqtIzqtI3qtI/qtJHqtJjqtJzqtKDqtKnqtKzqtK3qtLTqtLXqtLjqtLzqtYTqtYXqtYfqtYnqtZDqtZTqtZjqtaHqtaPqtazqta3qtbDqtbPqtbTqtbXqtbbqtbvqtbzqtb3qtb/qtoHqtoLqtojqtonqtozqtpDqtpzqtp3qtqTqtrfqt4Dqt4Hqt4Tqt4jqt5Dqt5Hqt5Pqt5zqt6Dqt6Tqt7jqt7nqt7zqt7/quIDquIHquIjquInquIvquI3quJTquLDquLHquLTquLfquLjquLrquYDquYHquYPquYXquYbquYrquYzquY3quY7quZDquZTquZbquZzquZ3quZ/quaDquaHquaXquajquanquazqubDqubgiXSxbImIyNDEiLCLsva3sva7sva/svbLsvbPsvbXsvbbsvbfsvbkiLDYsIuy+gey+guy+g+y+hOy+hiIsNSwi7L6NIl0sWyJiMjYxIiwi7L6OIiwxOCwi7L6iIiw1LCLsvqkiXSxbImIyODEiLCLsvqoiLDUsIuy+sSIsMTgsIuy/hSIsNiwi6rm56rm76rm86rm96rqE6rqF6rqM6rq86rq96rq+6ruA6ruE6ruM6ruN6ruP6ruQ6ruR6ruY6ruZ6ruc6ruo6rur6rut6ru06ru46ru86ryH6ryI6ryN6ryQ6rys6ryt6ryw6ryy6ry06ry86ry96ry/6r2B6r2C6r2D6r2I6r2J6r2Q6r2c6r2d6r2k6r2l6r256r6A6r6E6r6I6r6Q6r6R6r6V6r6c6r646r656r686r+A6r+H6r+I6r+J6r+L6r+N6r+O6r+U6r+c6r+o6r+p6r+w6r+x6r+06r+464CA64CB64CE64CM64CQ64CU64Cc64Cd64Co64GE64GF64GI64GK64GM64GO64GT64GU64GV64GX64GZIl0sWyJiMzQxIiwi7L+MIiwxOSwi7L+i7L+j7L+l7L+m7L+n7L+pIl0sWyJiMzYxIiwi7L+qIiw1LCLsv7Lsv7Tsv7YiLDUsIuy/vey/vuy/v+2Age2Agu2Ag+2AhSIsNV0sWyJiMzgxIiwi7YCLIiw1LCLtgJIiLDUsIu2AmSIsMTksIuuBneuBvOuBveuCgOuChOuCjOuCjeuCj+uCkeuCmOuCmeuCmuuCnOuCn+uCoOuCoeuCouuCqOuCqeuCqyIsNCwi64Kx64Kz64K064K164K464K864OE64OF64OH64OI64OJ64OQ64OR64OU64OY64Og64Ol64SI64SJ64SL64SM64SQ64SS64ST64SY64SZ64Sb64Sc64Sd64Sj64Sk64Sl64So64Ss64S064S164S364S464S564WA64WB64WE64WI64WQ64WR64WU64WV64WY64Wc64Wg64W464W564W864aA64aC64aI64aJ64aL64aN64aS64aT64aU64aY64ac64ao64eM64eQ64eU64ec64edIl0sWyJiNDQxIiwi7YCuIiw1LCLtgLbtgLftgLntgLrtgLvtgL0iLDYsIu2Bhu2BiO2BiiIsNV0sWyJiNDYxIiwi7YGR7YGS7YGT7YGV7YGW7YGX7YGZIiw2LCLtgaEiLDEwLCLtga7tga8iXSxbImI0ODEiLCLtgbHtgbLtgbPtgbUiLDYsIu2Bvu2Bv+2CgO2CgiIsMTgsIuuHn+uHqOuHqeuHrOuHsOuHueuHu+uHveuIhOuIheuIiOuIi+uIjOuIlOuIleuIl+uImeuIoOuItOuIvOuJmOuJnOuJoOuJqOuJqeuJtOuJteuJvOuKhOuKheuKieuKkOuKkeuKlOuKmOuKmeuKmuuKoOuKoeuKo+uKpeuKpuuKquuKrOuKsOuKtOuLiOuLieuLjOuLkOuLkuuLmOuLmeuLm+uLneuLouuLpOuLpeuLpuuLqOuLqyIsNCwi64uz64u064u164u3Iiw0LCLri7/rjIDrjIHrjITrjIjrjJDrjJHrjJPrjJTrjJXrjJzrjZTrjZXrjZbrjZjrjZvrjZzrjZ7rjZ/rjaTrjaUiXSxbImI1NDEiLCLtgpUiLDE0LCLtgqbtgqftgqntgqrtgqvtgq0iLDVdLFsiYjU2MSIsIu2Cs+2Ctu2CuO2CuiIsNSwi7YOC7YOD7YOF7YOG7YOH7YOKIiw1LCLtg5Ltg5YiLDRdLFsiYjU4MSIsIu2Dm+2Dnu2Dn+2Doe2Dou2Do+2DpSIsNiwi7YOu7YOyIiw1LCLtg7kiLDExLCLrjafrjanrjavrja7rjbDrjbHrjbTrjbjrjoDrjoHrjoPrjoTrjoXrjozrjpDrjpTrjqDrjqHrjqjrjqzrj4Trj4Xrj4jrj4vrj4zrj47rj5Drj5Trj5Xrj5frj5nrj5vrj53rj6Drj6Trj6jrj7zrkJDrkJjrkJzrkKDrkKjrkKnrkKvrkLTrkZDrkZHrkZTrkZjrkaDrkaHrkaPrkaXrkazrkoDrkojrkp3rkqTrkqjrkqzrkrXrkrfrkrnrk4Drk4Trk4jrk5Drk5Xrk5zrk53rk6Drk6Prk6Trk6brk6zrk63rk6/rk7Hrk7jrlJTrlJXrlJjrlJvrlJzrlKTrlKXrlKfrlKjrlKnrlKrrlLDrlLHrlLTrlLgiXSxbImI2NDEiLCLthIUiLDcsIu2EjiIsMTddLFsiYjY2MSIsIu2EoCIsMTUsIu2Esu2Es+2Ete2Etu2Et+2Eue2Eu+2EvO2Eve2EviJdLFsiYjY4MSIsIu2Ev+2Fgu2FhiIsNSwi7YWO7YWP7YWR7YWS7YWT7YWVIiw2LCLthZ7thaDthaIiLDUsIu2Fqe2Fqu2Fq+2FreuVgOuVgeuVg+uVhOuVheuVi+uVjOuVjeuVkOuVlOuVnOuVneuVn+uVoOuVoeuWoOuWoeuWpOuWqOuWquuWq+uWsOuWseuWs+uWtOuWteuWu+uWvOuWveuXgOuXhOuXjOuXjeuXj+uXkOuXkeuXmOuXrOuYkOuYkeuYlOuYmOuYpeuYrOuYtOuZiOuZpOuZqOuanOuaneuaoOuapOuaq+uarOuaseublOubsOubtOubuOucgOucgeucheucqOucqeucrOucr+ucsOucuOucueucu+udhOudiOudjOudlOudleudoOudpOudqOudsOudseuds+udteudvOudveuegOuehOuejOuejeuej+uekOuekeuekuueluuelyJdLFsiYjc0MSIsIu2FriIsMTMsIu2FvSIsNiwi7YaF7YaG7YaH7YaJ7YaKIl0sWyJiNzYxIiwi7YaLIiwyMCwi7Yai7Yaj7Yal7Yam7YanIl0sWyJiNzgxIiwi7YapIiw2LCLthrLthrTthrbthrfthrjthrnthrvthr3thr7thr/th4EiLDE0LCLrnpjrnpnrnpzrnqDrnqjrnqnrnqvrnqzrnq3rnrTrnrXrnrjrn4frn4nrn6zrn63rn7Drn7Trn7zrn73rn7/roIDroIHroIfroIjroInroIzroJDroJjroJnroJvroJ3roKTroKXroKjroKzroLTroLXroLfroLjroLnroYDroYTroZHroZProZzroZ3roaDroaTroazroa3roa/robHrobjrobzroo3roqjrorDrorTrorjro4Dro4Hro4Pro4Xro4zro5Dro5Tro53ro5/ro6Hro6jro6nro6zro7Dro7jro7nro7vro73rpITrpJjrpKDrpLzrpL3rpYDrpYTrpYzrpY/rpZHrpZjrpZnrpZzrpaDrpajrpakiXSxbImI4NDEiLCLth5AiLDcsIu2HmSIsMTddLFsiYjg2MSIsIu2HqyIsOCwi7Ye17Ye27Ye37Ye5IiwxM10sWyJiODgxIiwi7YiI7YiKIiw1LCLtiJEiLDI0LCLrpavrpa3rpbTrpbXrpbjrpbzrpoTrpoXrpofrponrporrpo3rpo7rpqzrpq3rprDrprTrprzrpr3rpr/rp4Hrp4jrp4nrp4zrp44iLDQsIuunmOunmeunm+unneunnuunoeuno+unpOunpeunqOunrOuntOunteunt+unuOunueunuuuogOuogeuoiOuoleuouOuoueuovOupgOupguupiOupieupi+upjeupjuupk+uplOupleupmOupnOuppOuppeupp+upqOupqeupsOupseuptOupuOuqg+uqhOuqheuqh+uqjOuqqOuqqeuqq+uqrOuqsOuqsuuquOuqueuqu+uqveurhOuriOurmOurmeurvCJdLFsiYjk0MSIsIu2Iqu2Iq+2Iru2Ir+2Ise2Isu2Is+2ItSIsNiwi7Yi+7YmA7YmCIiw1LCLtiYntiYrtiYvtiYwiXSxbImI5NjEiLCLtiY0iLDE0LCLtiZ0iLDYsIu2Jpe2Jpu2Jp+2JqCJdLFsiYjk4MSIsIu2JqSIsMjIsIu2Kgu2Kg+2Khe2Khu2Kh+2Kie2Kiu2Ki+2KjOusgOushOusjeusj+uskeusmOusnOusoOusqeusq+ustOusteustuusuOusu+usvOusveusvuuthOutheuth+utieutjeutj+utkOutlOutmOutoeuto+utrOuuiOuujOuukOuupOuuqOuurOuutOuut+uvgOuvhOuviOuvkOuvk+uvuOuvueuvvOuvv+uwgOuwguuwiOuwieuwi+uwjOuwjeuwj+uwkeuwlCIsNCwi67CbIiw0LCLrsKTrsKXrsKfrsKnrsK3rsLDrsLHrsLTrsLjrsYDrsYHrsYPrsYTrsYXrsYnrsYzrsY3rsZDrsZ3rsoTrsoXrsojrsovrsozrso7rspTrspXrspciXSxbImJhNDEiLCLtio3tio7tio/tipLtipPtipTtipYiLDUsIu2Kne2Knu2Kn+2Koe2Kou2Ko+2KpSIsNiwi7YqtIl0sWyJiYTYxIiwi7Yqu7Yqv7Yqw7YqyIiw1LCLtirrtirvtir3tir7ti4Hti4MiLDQsIu2Liu2LjCIsNV0sWyJiYTgxIiwi7YuS7YuT7YuV7YuW7YuX7YuZ7Yua7Yub7YudIiw2LCLti6YiLDksIu2Lsu2Ls+2Lte2Ltu2Lt+2Lue2LuuuymeuymuuyoOuyoeuypOuyp+uyqOuysOuyseuys+uytOuyteuyvOuyveuzgOuzhOuzjeuzj+uzkOuzkeuzleuzmOuznOuztOuzteuztuuzuOuzvOu0hOu0heu0h+u0ieu0kOu0lOu0pOu0rOu1gOu1iOu1ieu1jOu1kOu1mOu1meu1pOu1qOu2gOu2geu2hOu2h+u2iOu2ieu2iuu2kOu2keu2k+u2leu2meu2muu2nOu2pOu2sOu2uOu3lOu3leu3mOu3nOu3qeu3sOu3tOu3uOu4gOu4g+u4heu4jOu4jeu4kOu4lOu4nOu4neu4n+u5hOu5heu5iOu5jOu5juu5lOu5leu5l+u5meu5muu5m+u5oOu5oeu5pCJdLFsiYmI0MSIsIu2LuyIsNCwi7YyC7YyE7YyGIiw1LCLtjI/tjJHtjJLtjJPtjJXtjJciLDQsIu2Mnu2Mou2MoyJdLFsiYmI2MSIsIu2MpO2Mpu2Mp+2Mqu2Mq+2Mre2Mru2Mr+2MsSIsNiwi7Yy67Yy+Iiw1LCLtjYbtjYftjYjtjYkiXSxbImJiODEiLCLtjYoiLDMxLCLruajruarrubDrubHrubPrubTrubXrubvrubzrub3ruoDruoTruozruo3ruo/rupDrupHrupjrupnruqjru5Dru5Hru5Tru5fru5jru6Dru6Pru6Tru6Xru6zrvIHrvIjrvInrvJjrvJnrvJvrvJzrvJ3rvYDrvYHrvYTrvYjrvZDrvZHrvZXrvpTrvrDrv4Xrv4zrv43rv5Drv5Trv5zrv5/rv6HsgLzsgZHsgZjsgZzsgaDsgajsgansgpDsgpHsgpTsgpjsgqDsgqHsgqPsgqXsgqzsgq3sgq/sgrDsgrPsgrTsgrXsgrbsgrzsgr3sgr/sg4Dsg4Hsg4Xsg4jsg4nsg4zsg5Dsg5jsg5nsg5vsg5zsg53sg6QiXSxbImJjNDEiLCLtjaoiLDE3LCLtjb7tjb/tjoHtjoLtjoPtjoXtjobtjociXSxbImJjNjEiLCLtjojtjontjortjovtjo7tjpIiLDUsIu2Omu2Om+2One2Onu2On+2OoSIsNiwi7Y6q7Y6s7Y6uIl0sWyJiYzgxIiwi7Y6vIiw0LCLtjrXtjrbtjrftjrntjrrtjrvtjr0iLDYsIu2Phu2Ph+2PiiIsNSwi7Y+RIiw1LCLsg6Xsg6jsg6zsg7Tsg7Xsg7fsg7nshIDshITshIjshJDshJXshJwiLDQsIuyEo+yEpOyEpuyEp+yErOyEreyEr+yEsOyEseyEtuyEuOyEueyEvOyFgOyFiOyFieyFi+yFjOyFjeyFlOyFleyFmOyFnOyFpOyFpeyFp+yFqOyFqeyFsOyFtOyFuOyGheyGjOyGjeyGjuyGkOyGlOyGluyGnOyGneyGn+yGoeyGpeyGqOyGqeyGrOyGsOyGveyHhOyHiOyHjOyHlOyHl+yHmOyHoOyHpOyHqOyHsOyHseyHs+yHvOyHveyIgOyIhOyIjOyIjeyIj+yIkeyImOyImeyInOyIn+yIoOyIqOyIqeyIq+yIrSJdLFsiYmQ0MSIsIu2Pl+2PmSIsNywi7Y+i7Y+kIiw3LCLtj67tj6/tj7Htj7Ltj7Ptj7Xtj7btj7ciXSxbImJkNjEiLCLtj7jtj7ntj7rtj7vtj77tkIDtkIIiLDUsIu2QiSIsMTNdLFsiYmQ4MSIsIu2QlyIsNSwi7ZCeIiwyNSwi7Iiv7Iix7Iiy7Ii07ImI7ImQ7ImR7ImU7ImY7Img7Iml7Ims7Imt7Imw7Im07Im87Im97Im/7IqB7IqI7IqJ7IqQ7IqY7Iqb7Iqd7Iqk7Iql7Iqo7Iqs7Iqt7Iq07Iq17Iq37Iq57Iuc7Iud7Iug7Iuj7Iuk7Iur7Ius7Iut7Iuv7Iux7Iu27Iu47Iu57Iu77Iu87IyA7IyI7IyJ7IyM7IyN7IyT7IyU7IyV7IyY7Iyc7Iyk7Iyl7Iyo7Iyp7I2F7I2o7I2p7I2s7I2w7I2y7I247I257I287I297I6E7I6I7I6M7I+A7I+Y7I+Z7I+c7I+f7I+g7I+i7I+o7I+p7I+t7I+07I+17I+47JCI7JCQ7JCk7JCs7JCwIl0sWyJiZTQxIiwi7ZC4Iiw3LCLtkYHtkYLtkYPtkYUiLDE0XSxbImJlNjEiLCLtkZQiLDcsIu2Rne2Rnu2Rn+2Roe2Rou2Ro+2RpSIsNywi7ZGu7ZGw7ZGx7ZGyIl0sWyJiZTgxIiwi7ZGzIiw0LCLtkbrtkbvtkb3tkb7tkoHtkoMiLDQsIu2Siu2SjO2SjiIsNSwi7ZKVIiw4LCLskLTskLzskL3skYjskaTskaXskajskazskbTskbXskbnskoDskpTskpzskrjskrzsk6nsk7Dsk7Hsk7Tsk7jsk7rsk7/slIDslIHslIzslJDslJTslJzslKjslKnslKzslLDslLjslLnslLvslL3slYTslYXslYjslYnslYrslYzslY3slY7slZPslZTslZXslZfslZjslZnslZ3slZ7slaDslaHslaTslajslbDslbHslbPslbTslbXslbzslb3sloDsloTslofslozslo3slo/slpHslpXslpfslpjslpzslqDslqnslrTslrXslrjslrnslrvslrzslr3slr7sl4QiLDYsIuyXjOyXjiJdLFsiYmY0MSIsIu2SniIsMTAsIu2SqiIsMTRdLFsiYmY2MSIsIu2SuSIsMTgsIu2Tje2Tju2Tj+2Tke2Tku2Tk+2TlSJdLFsiYmY4MSIsIu2TliIsNSwi7ZOd7ZOe7ZOgIiw3LCLtk6ntk6rtk6vtk63tk67tk6/tk7EiLDYsIu2Tue2Tuu2TvOyXkOyXkeyXlOyXmOyXoOyXoeyXo+yXpeyXrOyXreyXruyXsOyXtOyXtuyXt+yXvCIsNSwi7JiF7JiG7JiH7JiI7JiM7JiQ7JiY7JiZ7Jib7Jic7Jik7Jil7Jio7Jis7Jit7Jiu7Jiw7Jiz7Ji07Ji17Ji37Ji57Ji77JmA7JmB7JmE7JmI7JmQ7JmR7JmT7JmU7JmV7Jmc7Jmd7Jmg7Jms7Jmv7Jmx7Jm47Jm57Jm87JqA7JqI7JqJ7JqL7JqN7JqU7JqV7JqY7Jqc7Jqk7Jql7Jqn7Jqp7Jqw7Jqx7Jq07Jq47Jq57Jq67JuA7JuB7JuD7JuF7JuM7JuN7JuQ7JuU7Juc7Jud7Jug7Juh7JuoIl0sWyJjMDQxIiwi7ZO+Iiw1LCLtlIXtlIbtlIftlIntlIrtlIvtlI0iLDYsIu2Ulu2UmCIsNV0sWyJjMDYxIiwi7ZSeIiwyNV0sWyJjMDgxIiwi7ZS47ZS57ZS67ZS77ZS+7ZS/7ZWB7ZWC7ZWD7ZWFIiw2LCLtlY7tlZDtlZIiLDUsIu2Vmu2Vm+2Vne2Vnu2Vn+2Voe2Vou2Vo+ybqeybrOybsOybuOybueybveychOycheyciOycjOyclOycleycl+ycmeycoOycoeycpOycqOycsOycseycs+ycteyct+ycvOycveydgOydhOydiuydjOydjeydj+ydkSIsNywi7J2c7J2g7J2o7J2r7J207J217J247J287J297J2+7J6D7J6E7J6F7J6H7J6I7J6J7J6K7J6O7J6Q7J6R7J6U7J6W7J6X7J6Y7J6a7J6g7J6h7J6j7J6k7J6l7J6m7J6s7J6t7J6w7J607J687J697J6/7J+A7J+B7J+I7J+J7J+M7J+O7J+Q7J+Y7J+d7J+k7J+o7J+s7KCA7KCB7KCE7KCI7KCKIl0sWyJjMTQxIiwi7ZWk7ZWm7ZWn7ZWq7ZWs7ZWuIiw1LCLtlbbtlbftlbntlbrtlbvtlb0iLDYsIu2Whu2Wiu2WiyJdLFsiYzE2MSIsIu2WjO2Wje2Wju2Wj+2WkSIsMTksIu2Wpu2WpyJdLFsiYzE4MSIsIu2WqCIsMzEsIuygkOygkeygk+ygleygluygnOygneygoOygpOygrOygreygr+ygseyguOygvOyhgOyhiOyhieyhjOyhjeyhlOyhsOyhseyhtOyhuOyhuuyigOyigeyig+yiheyihuyih+yii+yijOyijeyilOyineyin+yioeyiqOyivOyiveyjhOyjiOyjjOyjlOyjleyjl+yjmeyjoOyjoeyjpOyjteyjvOyjveykgOykhOykheykhuykjOykjeykj+ykkeykmOykrOyktOylkOylkeyllOylmOyloOyloeylo+ylrOylsOyltOylvOymiOymieymjOymkOymmOymmeymm+ymneyngOyngeynhOynh+yniOyniuynkOynkeynkyJdLFsiYzI0MSIsIu2Xiu2Xi+2Xje2Xju2Xj+2Xke2XkyIsNCwi7Zea7Zec7ZeeIiw1LCLtl6btl6ftl6ntl6rtl6vtl63tl64iXSxbImMyNjEiLCLtl68iLDQsIu2Xtu2XuO2XuiIsNSwi7ZiC7ZiD7ZiF7ZiG7ZiH7ZiJIiw2LCLtmJIiXSxbImMyODEiLCLtmJYiLDUsIu2Yne2Ynu2Yn+2Yoe2You2Yo+2YpSIsNywi7ZiuIiw5LCLtmLrtmLvsp5Xsp5bsp5nsp5rsp5zsp53sp6Dsp6Lsp6Tsp6fsp6zsp63sp6/sp7Dsp7Hsp7jsp7nsp7zsqIDsqIjsqInsqIvsqIzsqI3sqJTsqJjsqKnsqYzsqY3sqZDsqZTsqZzsqZ3sqZ/sqaDsqaHsqajsqb3sqoTsqpjsqrzsqr3sq4Dsq4Tsq4zsq43sq4/sq5Hsq5Psq5jsq5nsq6Dsq6zsq7TsrIjsrJDsrJTsrJjsrKDsrKHsrYHsrYjsrYnsrYzsrZDsrZjsrZnsrZ3sraTsrbjsrbnsrpzsrrjsr5Tsr6Tsr6fsr6nssIzssI3ssJDssJTssJzssJ3ssKHssKLssKfssKjssKnssKzssK7ssLDssLjssLnssLsiXSxbImMzNDEiLCLtmL3tmL7tmL/tmYHtmYLtmYPtmYTtmYbtmYftmYrtmYztmY7tmY/tmZDtmZLtmZPtmZbtmZftmZntmZrtmZvtmZ0iLDRdLFsiYzM2MSIsIu2ZoiIsNCwi7Zmo7ZmqIiw1LCLtmbLtmbPtmbUiLDExXSxbImMzODEiLCLtmoHtmoLtmoTtmoYiLDUsIu2aju2aj+2ake2aku2ak+2alSIsNywi7Zqe7Zqg7ZqiIiw1LCLtmqntmqrssLzssL3ssL7ssYTssYXssYjssYzssZTssZXssZfssZjssZnssaDssaTssabssajssbDssbXsspjsspnsspzssqDssqjssqnssqvssqzssq3ssrTssrXssrjssrzss4Tss4Xss4fss4nss5Dss5Tss6Tss6zss7DstIHstIjstInstIzstJDstJjstJnstJvstJ3stKTstKjstKzstLnstZzstaDstaTstazsta3sta/stbHstbjstojstpTstpXstpjstpzstqTstqXstqfstqnstrDst4Tst4zst5Dst6jst6zst7Dst7jst7nst7vst73suITsuIjsuIzsuJTsuJnsuKDsuKHsuKTsuKjsuLDsuLHsuLPsuLUiXSxbImM0NDEiLCLtmqvtmq3tmq7tmq/tmrEiLDcsIu2auu2avCIsNywi7ZuG7ZuH7ZuJ7ZuK7ZuLIl0sWyJjNDYxIiwi7ZuN7ZuO7ZuP7ZuQ7ZuS7ZuT7ZuV7ZuW7ZuY7ZuaIiw1LCLtm6Htm6Ltm6Ptm6Xtm6btm6ftm6kiLDRdLFsiYzQ4MSIsIu2bru2br+2bse2bsu2bs+2btO2btiIsNSwi7Zu+7Zu/7ZyB7ZyC7ZyD7ZyFIiwxMSwi7ZyS7ZyT7ZyU7LmY7LmZ7Lmc7Lmf7Lmg7Lmh7Lmo7Lmp7Lmr7Lmt7Lm07Lm17Lm47Lm87LqE7LqF7LqH7LqJ7LqQ7LqR7LqU7LqY7Lqg7Lqh7Lqj7Lqk7Lql7Lqs7Lqt7LuB7Luk7Lul7Luo7Lur7Lus7Lu07Lu17Lu37Lu47Lu57LyA7LyB7LyE7LyI7LyQ7LyR7LyT7LyV7Lyc7Lyg7Lyk7Lys7Lyt7Lyv7Lyw7Lyx7Ly47L2U7L2V7L2Y7L2c7L2k7L2l7L2n7L2p7L2w7L2x7L207L247L6A7L6F7L6M7L6h7L6o7L6w7L+E7L+g7L+h7L+k7L+o7L+w7L+x7L+z7L+17L+87YCA7YCE7YCR7YCY7YCt7YC07YC17YC47YC8Il0sWyJjNTQxIiwi7ZyV7ZyW7ZyX7Zya7Zyb7Zyd7Zye7Zyf7ZyhIiw2LCLtnKrtnKztnK4iLDUsIu2ctu2ct+2cuSJdLFsiYzU2MSIsIu2cuu2cu+2cvSIsNiwi7Z2F7Z2G7Z2I7Z2KIiw1LCLtnZLtnZPtnZXtnZoiLDRdLFsiYzU4MSIsIu2dn+2dou2dpO2dpu2dp+2dqO2dqu2dq+2dre2dru2dr+2dse2dsu2ds+2dtSIsNiwi7Z2+7Z2/7Z6A7Z6CIiw1LCLtnortnovtgYTtgYXtgYftgYntgZDtgZTtgZjtgaDtgaztga3tgbDtgbTtgbztgb3tgoHtgqTtgqXtgqjtgqztgrTtgrXtgrftgrntg4Dtg4Htg4Ttg4jtg4ntg5Dtg5Htg5Ptg5Ttg5Xtg5ztg53tg6Dtg6Ttg6ztg63tg6/tg7Dtg7Htg7jthI3thLDthLHthLTthLjthLrthYDthYHthYPthYTthYXthYzthY3thZDthZTthZzthZ3thZ/thaHthajthazthbzthoTthojthqDthqHthqTthqjthrDthrHthrPthrXthrrthrzth4Dth5jth7Tth7jtiIftiIntiJDtiKztiK3tiLDtiLTtiLztiL3tiL/tiYHtiYjtiZwiXSxbImM2NDEiLCLtno3tno7tno/tnpEiLDYsIu2emu2enO2eniIsNV0sWyJjNmExIiwi7Ymk7YqA7YqB7YqE7YqI7YqQ7YqR7YqV7Yqc7Yqg7Yqk7Yqs7Yqx7Yq47Yq57Yq87Yq/7YuA7YuC7YuI7YuJ7YuL7YuU7YuY7Yuc7Yuk7Yul7Yuw7Yux7Yu07Yu47YyA7YyB7YyD7YyF7YyM7YyN7YyO7YyQ7YyU7YyW7Yyc7Yyd7Yyf7Yyg7Yyh7Yyl7Yyo7Yyp7Yys7Yyw7Yy47Yy57Yy77Yy87Yy97Y2E7Y2F7Y287Y297Y6A7Y6E7Y6M7Y6N7Y6P7Y6Q7Y6R7Y6Y7Y6Z7Y6c7Y6g7Y6o7Y6p7Y6r7Y6t7Y607Y647Y687Y+E7Y+F7Y+I7Y+J7Y+Q7Y+Y7Y+h7Y+j7Y+s7Y+t7Y+w7Y+07Y+87Y+97Y+/7ZCBIl0sWyJjN2ExIiwi7ZCI7ZCd7ZGA7ZGE7ZGc7ZGg7ZGk7ZGt7ZGv7ZG47ZG57ZG87ZG/7ZKA7ZKC7ZKI7ZKJ7ZKL7ZKN7ZKU7ZKp7ZOM7ZOQ7ZOU7ZOc7ZOf7ZOo7ZOs7ZOw7ZO47ZO77ZO97ZSE7ZSI7ZSM7ZSU7ZSV7ZSX7ZS87ZS97ZWA7ZWE7ZWM7ZWN7ZWP7ZWR7ZWY7ZWZ7ZWc7ZWg7ZWl7ZWo7ZWp7ZWr7ZWt7ZW07ZW17ZW47ZW87ZaE7ZaF7ZaH7ZaI7ZaJ7ZaQ7Zal7ZeI7ZeJ7ZeM7ZeQ7ZeS7ZeY7ZeZ7Zeb7Zed7Zek7Zel7Zeo7Zes7Ze07Ze17Ze37Ze57ZiA7ZiB7ZiE7ZiI7ZiQ7ZiR7ZiT7ZiU7ZiV7Zic7ZigIl0sWyJjOGExIiwi7Zik7Zit7Zi47Zi57Zi87ZmA7ZmF7ZmI7ZmJ7ZmL7ZmN7ZmR7ZmU7ZmV7ZmY7Zmc7Zmn7Zmp7Zmw7Zmx7Zm07ZqD7ZqF7ZqM7ZqN7ZqQ7ZqU7Zqd7Zqf7Zqh7Zqo7Zqs7Zqw7Zq57Zq77ZuE7ZuF7ZuI7ZuM7ZuR7ZuU7ZuX7ZuZ7Zug7Zuk7Zuo7Zuw7Zu17Zu87Zu97ZyA7ZyE7ZyR7ZyY7ZyZ7Zyc7Zyg7Zyo7Zyp7Zyr7Zyt7Zy07Zy17Zy47Zy87Z2E7Z2H7Z2J7Z2Q7Z2R7Z2U7Z2W7Z2X7Z2Y7Z2Z7Z2g7Z2h7Z2j7Z2l7Z2p7Z2s7Z2w7Z207Z287Z297Z6B7Z6I7Z6J7Z6M7Z6Q7Z6Y7Z6Z7Z6b7Z6dIl0sWyJjYWExIiwi5Ly95L2z5YGH5YO55Yqg5Y+v5ZG15ZOl5ZiJ5auB5a625pqH5p625p635p+v5q2M54+C55eC56i86Iub6IyE6KGX6KKI6Ki26LOI6LeP6Lu76L+m6aeV5Yi75Y205ZCE5oGq5oWk5q6854+P6ISa6Ka66KeS6Zaj5L6D5YiK5aK+5aW45aem5bmy5bm55oeH5o+A5p2G5p+s5qG/5r6X55mO55yL56O156iI56u/57Ch6IKd6Imu6Imx6Kur6ZaT5Lmr5Zad5pu35ri056Kj56ut6JGb6KSQ6J2O6Z6o5YuY5Z2O5aCq5bWM5oSf5oa+5oih5pWi5p+R5qmE5rib55SY55az55uj556w57S66YKv6ZGR6ZGS6b6VIl0sWyJjYmExIiwi5Yyj5bKs55Sy6IOb6YmA6ZaY5Ymb5aCI5aec5bKh5bSX5bq35by65b2K5oW35rGf55W655aG57Og57Wz57ax576M6IWU6Iih6JaR6KWB6Kyb6Yu86ZmN6bGH5LuL5Lu35YCL5Yex5aGP5oS35oS+5oWo5pS55qeq5ryR55al55qG55uW566H6Iql6JOL76SA6Y6n6ZaL5ZaA5a6i5Z2R76SB57Kz57656Ya15YCo5Y675bGF5beo5ouS5o2u5pOa5pOn5rig54Ks56Wb6Led6Lie76SC6YG96YmF6Yu45Lm+5Lu25YGl5be+5bu65oSG5qWX6IWx6JmU6LmH6Y216air5Lme5YKR5p2w5qGA5YSJ5YqN5YqS5qqiIl0sWyJjY2ExIiwi55686YiQ6buU5Yqr5oCv6L+y5YGI5oap5o+t5pOK5qC85qqE5r+A6IaI6Kah6ZqU5aCF54m954qs55SE57W557mt6IKp6KaL6K206YGj6bWR5oqJ5rG65r2U57WQ57y66Kij5YW85oWK566d6KyZ6YmX6Y6M5Lqs5L+T5YCe5YK+5YSG5YuB5YuN5Y2/5Z2w5aKD5bqa5b6R5oW25oas5pOO5pWs5pmv5pq75pu05qKX5raH54KF54Ox55Kf55Kl55OK55eZ56Gs56Os56uf56u257WF57aT6ICV6IC/6ISb6I6W6K2m6LyV6YCV6Y+h6aCD6aC46ama6a+o5L+C5ZWT5aC65aWR5a2j5bGG5oK45oiS5qGC5qKwIl0sWyJjZGExIiwi5qOo5rqq55WM55m456OO56i957O757mr57m86KiI6Kqh6LC/6ZqO6beE5Y+k5Y+p5ZGK5ZGx5Zu65aeR5a2k5bC75bqr5ou35pS35pWF5pWy5pqg5p6v5qeB5rK955e855qQ552+56i/576U6ICD6IKh6IaP6Ium6Iu96I+w6JeB6KCx6KK06Kql76SD6L6c6Yyu6ZuH6aGn6auY6byT5ZOt5pab5puy5qKP56mA6LC36bWg5Zuw5Z2k5bSR5piG5qKx5qON5ru+55Co6KKe6a+k5rGo76SE6aqo5L6b5YWs5YWx5Yqf5a2U5bel5oGQ5oGt5oux5o6n5pS754+Z56m66Jqj6LKi6Z6P5Liy5a+h5oiI5p6c55OcIl0sWyJjZWExIiwi56eR6I+T6KqH6Kqy6Leo6YGO6Y2L6aGG5buT5qeo6Je/6YOt76SF5Yag5a6Y5a+s5oWj5qO65qy+54GM55Cv55OY566h572Q6I+F6KeA6LKr6Zec6aSo5Yiu5oGd5ous6YCC5L6K5YWJ5Yyh5aOZ5buj5pug5rS454Ka54uC54+W562Q6IOx6ZGb5Y2m5o6b572r5LmW5YKA5aGK5aOe5oCq5oSn5ouQ5qeQ6a2B5a6P57SY6IKx6L2f5Lqk5YOR5ZKs5Zas5ayM5bag5ben5pSq5pWO5qCh5qmL54uh55qO55+v57We57+56Iag6JWO6Juf6LyD6L2O6YOK6aSD6amV6a6r5LiY5LmF5Lmd5LuH5L+x5YW35Yu+Il0sWyJjZmExIiwi5Y2A5Y+j5Y+l5ZKO5ZiU5Z215Z6i5a+H5baH5buQ5oe85ouY5pWR5p645p+p5qeL5q2Q5q+G5q+s5rGC5rqd54G454uX546W55CD556/55+p56m257W/6ICJ6Ie86IiF6IiK6Iuf6KGi6Kyz6LO86LuA6YCR6YKx6Ymk6Yq26aeS6amF6bOp6beX6b6c5ZyL5bGA6I+K6Z6g6Z6r6bq05ZCb56qY576k6KOZ6LuN6YOh5aCA5bGI5o6Y56qf5a6u5byT56m556qu6IqO6Lqs5YCm5Yi45Yu45Y235ZyI5ouz5o2y5qyK5reD55y35Y6l542X6JWo6Lm26ZeV5py65quD5r2w6Kmt6LuM6aWL76SG5pm35q246LK0Il0sWyJkMGExIiwi6ay876SH5Y+r5Zyt5aWO5o+G5qe754+q56GF56q656uF57O+6JG16KaP6LWz6YC16Zao5Yu75Z2H55WH562g6I+M6Yie76SI5qmY5YWL5YmL5YqH5oif5qOY5qW16ZqZ5YOF5Yqk5Yuk5oeD5pak5qC55qe/55G+562L6Iq56I+r6Kay6Ky56L+R6aWJ76SJ5LuK5aaX5pOS5piR5qqO55C056aB56a96Iqp6KG+6KG/6KWf76SK6Yym5LyL5Y+K5oCl5omx5rGy57Sa57Wm5LqY5YWi55+c6IKv5LyB5LyO5YW25YaA5Zec5Zmo5Zy75Z+65Z+85aSU5aWH5aaT5a+E5bKQ5bSO5bex5bm+5b+M5oqA5peX5pejIl0sWyJkMWExIiwi5pye5pyf5p2e5qOL5qOE5qmf5qy65rCj5rG95rKC5reH546Y55Cm55Cq55KC55Kj55W455W/56KB56Ov56WB56WH56WI56W6566V57SA57a6576I6ICG6ICt6IKM6KiY6K2P6LGI6LW36Yyh6Yyk6aOi6aWR6aiO6aiP6aml6bqS57eK5L225ZCJ5ouu5qGU6YeR5Zar5YS676SL76SM5aic5oem76SN5ouP5ou/76SOIiw1LCLpgqPvpJQiLDQsIuirvu+kme+kmu+km++knOaalu+kneeFlu+knu+kn+mbo++koOaNj+aNuuWNl++koeaej+aloOa5s++koueUt++ko++kpO+kpSJdLFsiZDJhMSIsIue0je+kpu+kp+ihsuWbiuWomO+kqCIsNCwi5LmD76St5YWn5aWI5p+w6ICQ76Su5aWz5bm05pKa56eK5b+15oGs5ouI5o275a+n5a+X5Yqq76Sv5aW05byp5oCS76Sw76Sx76Sy55GZ76SzIiw1LCLpp5HvpLkiLDEwLCLmv4PvpYTvpYXohr/ovrLmg7HvpYbvpYfohabvpYjvpYnlsL/vpYoiLDcsIuWrqeiopeadu+e0kO+lkiIsNSwi6IO976WY76WZ5bC85rOl5Yy/5rq65aSa6Iy2Il0sWyJkM2ExIiwi5Li55Lq25L2G5Zau5ZyY5aOH5b2W5pa35pem5qqA5q615rmN55+t56uv57Ce57ee6JuL6KKS6YSy6Y2b5pK75r6+542655a46YGU5ZWW5Z2N5oa65pOU5puH5reh5rmb5r2t5r6555ew6IGD6Ia96JWB6KaD6KuH6K2a6Yyf5rKT55WT562U6LiP6YGd5ZSQ5aCC5aGY5bmi5oiH5pKe5qOg55W257OW6J6z6buo5Luj5Z6I5Z2u5aSn5bCN5bKx5bi25b6F5oi05pOh546z6Ie66KKL6LK46ZqK6bub5a6F5b635oKz5YCS5YiA5Yiw5ZyW5aC15aGX5bCO5bGg5bO25baL5bqm5b6S5oK85oyR5o6J5pCX5qGDIl0sWyJkNGExIiwi5qO55quC5reY5rih5ruU5r+k54e+55uc552556ax56i76JCE6Kap6LOt6Lez6LmI6YCD6YCU6YGT6YO96Y2N6Zm26Z+c5q+S54CG54mY54qi542o552j56a/56+k57qb6K6A5aKp5oOH5pWm5pe95pq+5rKM54Se54eJ6LGa6aCT5Lmt56qB5Lud5Yas5YeN5YuV5ZCM5oan5p2x5qGQ5qOf5rSe5r2855a8556z56ul6IO06JGj6YqF5YWc5paX5p2c5p6T55eY56uH6I2z76Wa6LGG6YCX6aCt5bGv6IeA6Iqa6YGB6YGv6YiN5b6X5bad5qmZ54eI55m7562J6Jek6KyE6YSn6aiw5ZaH5oe276Wb55mp576FIl0sWyJkNWExIiwi6Ji/6J666KO46YKP76Wc5rSb54OZ54+e57Wh6JC976Wd6YWq6aex76We5LqC5Y215qyE5qyS54C+54ib6Jit6bie5YmM6L6j5bWQ5pOl5pSs5qyW5r+r57GD57qc6JeN6KWk6Ka95ouJ6IeY6KCf5buK5pyX5rWq54u855CF55Gv6J6C6YOe5L6G5bSN5b6g6JCK5Ya35o6g55Wl5Lqu5YCG5YWp5YeJ5qKB5qiR57Ku57Kx57On6Imv6KuS6Lyb6YeP5L625YS35Yu15ZGC5bus5oWu5oi+5peF5qua5r++56Sq6Jec6KCj6Zat6ami6amq6bqX6buO5Yqb5puG5q2354Cd56Sr6L2i6Z2C5oaQ5oiA5pSj5ryjIl0sWyJkNmExIiwi54WJ55KJ57e06IGv6JOu6Lym6YCj6Y2K5Ya95YiX5Yqj5rSM54OI6KOC5buJ5paC5q6u5r+C57C+54215Luk5Ly25Zu576Wf5bK65ba65oCc546y56yt576a57+O6IGG6YCe6Yi06Zu26Z2I6aCY6b2h5L6L5r6n56au6Ya06Zq35Yue76Wg5pKI5pOE5quT5r2e54CY54iQ55un6ICB6JiG6Jmc6Lev6LyF6Zyy6a2v6be66bm156KM56W/57ag6I+J6YyE6bm/6bqT6KuW5aOf5byE5pyn54Cn55OP57Gg6IG+5YSh54Co54mi56OK6LOC6LOa6LO06Zu35LqG5YOa5a+u5buW5paZ54eO55mC556t6IGK6JO8Il0sWyJkN2ExIiwi6YG86ayn6b6N5aOY5amB5bGi5qiT5rea5ryP55i757Sv57i36JSe6KS46Y+k6ZmL5YqJ5peS5p+z5qa05rWB5rqc54CP55CJ55Gg55WZ55ik56Gr6Kys6aGe5YWt5oiu6Zm45L6W5YCr5bSZ5req57a46Lyq5b6L5oWE5qCX76Wh6ZqG5YuS6IKL5Yec5YeM5qWe56ic57a+6I+x6Zm15L+a5Yip5Y6Y5ZCP5ZSO5bGl5oKn5p2O5qKo5rWs54qB54u455CG55KD76Wi55ei57Gs572557646I6J6KOP6KOh6YeM6YeQ6Zui6a+J5ZCd5r2+54eQ55KY6Je66Lqq6Zqj6bGX6bqf5p6X5reL55Cz6Ieo6ZyW56CsIl0sWyJkOGExIiwi56uL56yg57KS5pGp55Gq55ey56K856Oo6aas6a2U6bq75a+e5bmV5ryg6Iac6I6r6YKI5LiH5Y2N5aip5beS5b2O5oWi5oy95pmp5pu85ru/5ryr54Gj556e6JCs6JST6KC76LyT6aWF6bC75ZSc5oq55pyr5rKr6IyJ6KWq6Z265Lqh5aaE5b+Y5b+Z5pyb57ay572U6IqS6Iyr6I696Lye6YKZ5Z+L5aa55aqS5a+Q5pin5p6a5qKF5q+P54Wk57216LK36LOj6YKB6a2F6ISI6LKK6ZmM6amA6bql5a2f5rCT54yb55uy55uf6JCM5Yaq6KaT5YWN5YaV5YuJ5qOJ5rKU55yE55yg57a/57es6Z2i6bq15ruFIl0sWyJkOWExIiwi6JSR5Yal5ZCN5ZG95piO5pqd5qSn5rqf55q/556R6IyX6JOC6J6f6YWp6YqY6bO06KKC5L6u5YaS5Yuf5aeG5bi95oWV5pG45pG55pqu5p+Q5qih5q+N5q+b54mf54mh55GB55y455+b6ICX6Iq86IyF6KyA6Kyo6LKM5pyo5rKQ54mn55uu552m56mG6bap5q2/5rKS5aSi5pym6JKZ5Y2v5aKT5aaZ5buf5o+P5pi05p2z5ri654yr56uX6IuX6Yyo5YuZ5ber5oau5oeL5oiK5ouH5pKr5peg5qWZ5q2m5q+L54Sh54+355Wd57mG6Iie6IyC6JWq6Kqj6LK/6Zyn6bWh5aKo6buY5YCR5YiO5ZC75ZWP5paHIl0sWyJkYWExIiwi5rG257SK57SL6IGe6JqK6ZaA6Zuv5Yu/5rKV54mp5ZGz5aqa5bC+5bWL5b2M5b6u5pyq5qK25qWj5ri85rmE55yJ57Gz576O6JaH6KyO6L+36Z2h6bu05bK35oK25oSN5oar5pWP5pe75pe85rCR5rOv546f54+J57eh6ZaU5a+G6Jyc6KyQ5Ymd5Y2a5ouN5pCP5pKy5py05qi45rOK54+A55Ke566U57KV57ib6IaK6Ii26JaE6L+r6Zu56aeB5Ly05Y2K5Y+N5Y+b5ouM5pCs5pSA5paR5qeD5rOu5r2Y54+t55WU55ii55uk55u856OQ56O756Ss57WG6Iis6J+g6L+U6aCS6aOv5YuD5ouU5pKl5rik5r2RIl0sWyJkYmExIiwi55m86LeL6Yax6Ymi6auu6a2D5YCj5YKN5Z2K5aao5bCo5bmH5b235oi/5pS+5pa55peB5piJ5p6L5qac5ruC56OF57Sh6IKq6IaA6Iir6Iqz6JKh6JqM6Kiq6KyX6YKm6Ziy6b6Q5YCN5L+z76Wj5Z+55b6Y5ouc5o6S5p2v5rmD54SZ55uD6IOM6IOa6KO06KO16KSZ6LOg6Lyp6YWN6Zmq5Lyv5L2w5bib5p+P5qCi55m955m+6a2E5bmh5qiK54Wp54eU55Wq76Wk57mB6JWD6Jep6aOc5LyQ562P572w6Zal5Yeh5biG5qK15rC+5rGO5rOb54qv56+E6IyD5rOV55C65YO75YqI5aOB5pOY5qqX55Kn55mWIl0sWyJkY2ExIiwi56Kn6JiX6Zei6Zy576Wl5Y2e5byB6K6K6L6o6L6v6YKK5Yil556l6bGJ6byI5LiZ5YCC5YW15bGb5bm35pie5pi65p+E5qOF54Kz55SB55eF56eJ56ud6Lyn6aSg6aiI5L+d5aCh5aCx5a+25pmu5q2l5rSR5rm65r2954+k55Sr6I+p6KOc6KST6K2c6LyU5LyP5YOV5YyQ5Y2c5a6T5b6p5pyN56aP6IW56Iyv6JSU6KSH6KaG6Ly56Ly76aal6bCS5pys5Lm25L+45aWJ5bCB5bOv5bOw5o2n5qOS54O954ai55Cr57ir6JOs6JyC6YCi6YuS6bOz5LiN5LuY5L+v5YKF5YmW5Ymv5ZCm5ZKQ5Z+g5aSr5ammIl0sWyJkZGExIiwi5a2a5a215a+M5bqc76Wm5om25pW35pan5rWu5rql54i256ym57C/57y26IWQ6IWR6Iaa6ImA6IqZ6I6p6KiD6LKg6LOm6LO76LW06La66YOo6Yec6Zic6ZmE6aeZ6bOn5YyX5YiG5ZCp5Zm05aKz5aWU5aWu5b+/5oak5omu5piQ5rG+54Sa55uG57KJ57Oe57Sb6Iqs6LOB6Zuw76Wn5L2b5byX5b2/5ouC5bSp5pyL5qOa56G857mD6bWs5LiV5YKZ5YyV5Yyq5Y2R5aaD5ami5bqH5oKy5oaK5omJ5om55paQ5p6H5qan5q+U5q+W5q+X5q+Y5rK476Wo55C155e656CS56KR56eV56eY57KD57eL57+h6IKlIl0sWyJkZWExIiwi6IS+6IeC6I+y6Jya6KOo6Kq56K2s6LK76YSZ6Z2e6aOb6by75Zqs5ayq5b2s5paM5qqz5q6v5rWc5r+x54CV54md546t6LKn6LOT6aC75oaR5rC36IGY6aiB5LmN5LqL5Lqb5LuV5Ly65Ly85L2/5L+f5YO/5Y+y5Y+45ZSG5Zej5Zub5aOr5aWi5aiR5a+r5a+65bCE5bez5bir5b6Z5oCd5o2o5pac5pav5p+25p+75qKt5q275rKZ5rOX5rij54CJ542F56CC56S+56WA56Wg56eB56+p57SX57Wy6IKG6IiN6I6O6JOR6JuH6KOf6KmQ6Kme6Kyd6LOc6LWm6L6t6YKq6aO86aef6bqd5YmK76Wp5pyU76WqIl0sWyJkZmExIiwi5YKY5Yiq5bGx5pWj5rGV54+K55Sj55ad566X6JKc6YW46Zyw5Lm35pKS5q6654We6Jap5LiJ76Wr5p2J5qOu5riX6Iqf6JSY6KGr5o+35r6B6YiS6aKv5LiK5YK35YOP5YSf5ZWG5Zaq5ZiX5a2A5bCZ5bOg5bi45bqK5bqg5buC5oOz5qGR5qmh5rmY54i954mA54uA55u456Wl566x57+U6KOz6Ke06Kmz6LGh6LOe6Zyc5aGe55K96LO95ZeH76Ws56mh57Si6Imy54my55Sf55Sl76Wt56yZ5aKF5aO75ba85bqP5bq25b6Q5oGV5oqS5o2/5pWN5pqR5puZ5pu45qCW5qOy54qA55Ge562u57Wu57eW572yIl0sWyJlMGExIiwi6IOl6IiS6Jav6KW/6KqT6YCd6Yuk6buN6byg5aSV5aWt5bit5oOc5piU5pmz5p6Q5rGQ5reF5r2f55+z56Kp6JOG6YeL6Yyr5LuZ5YOK5YWI5ZaE5ayL5a6j5omH5pW+5peL5riy54W955CB55GE55KH55K/55ms56aq57ea57mV576o6IW66Iaz6Ii56Jia6J+s6Km16Lej6YG46YqR6ZCl6aWN6a6u5Y2o5bGR5qWU5rOE5rSp5rir6IiM6Jab6KS76Kit6Kqq6Zuq6b2n5Ymh5pq55q6y57qW6J++6LSN6ZaD6Zmd5pSd5raJ54eu76Wu5Z+O5aeT5a6s5oCn5oO65oiQ5pif5pmf54yp54+555ub55yB562sIl0sWyJlMWExIiwi6IGW6IGy6IWl6Kqg6YaS5LiW5Yui5q2y5rSX56iF56y557Sw76Wv6LKw5Y+s5Ziv5aGR5a615bCP5bCR5bei5omA5o6D5pCU5pit5qKz5rK85raI5rqv54Cf54Kk54eS55Sm55aP55aO55iZ56yR56+g57Cr57Sg57S56JSs6JWt6JiH6Ki06YCN6YGh6YK16Yq36Z+26ai35L+X5bGs5p2f5raR57Kf57qM6KyW6LSW6YCf5a2r5be95pCN6JOA6YGc6aOh546H5a6L5oKa5p2+5ree6Kif6Kqm6YCB6aCM5Yi376Ww54GR56KO6Y6W6KGw6YeX5L+u5Y+X5Ze95Zua5Z6C5aO95auC5a6I5bKr5bOA5bil5oSBIl0sWyJlMmExIiwi5oiN5omL5o6I5pCc5pS25pW45qi55q6K5rC05rSZ5ryx54en54up542455CH55Ky55im552h56eA56mX56uq57K557aP57as57mh576e6ISp6Iyx6JKQ6JOa6Jeq6KKW6Kqw6K6Q6Ly46YGC6YKD6YWs6YqW6Yq56ZqL6Zqn6Zqo6ZuW6ZyA6aCI6aaW6auT6aya5Y+U5aG+5aSZ5a2w5a6/5reR5r2a54af55Ch55K56IKF6I+95beh5b6H5b6q5oGC5pes5qCS5qWv5qmT5q6J5rS15rez54+j55u+556s562N57SU6ISj6Iic6I2A6JO06JWj6Kmi6KuE6YaH6Yye6aCG6aa05oiM6KGT6L+w6Yml5bSH5bSnIl0sWyJlM2ExIiwi5bWp55Gf6Iad6J2o5r+V5ou+57+S6KS26KWy5Lie5LmY5YOn5Yud5Y2H5om/5piH57mp6KCF6Zme5L6N5YyZ5Zi25aeL5aqk5bC45bGO5bGN5biC5byR5oGD5pa95piv5pmC5p6+5p+054yc55+i56S657+F6JKU6JON6KaW6Kmm6Kmp6Kuh6LGV6LG65Z+05a+U5byP5oGv5out5qSN5q6W5rmc54aE56+S6J2V6K2Y6Lu+6aOf6aO+5Ly45L6B5L+h5ZG75aig5a645oS85paw5pmo54e855Sz56We57Sz6IWO6Iej6I6Y6Jaq6JeO6JyD6KiK6Lqr6L6b76Wx6L+F5aSx5a6k5a+m5oKJ5a+p5bCL5b+D5rKBIl0sWyJlNGExIiwi76Wy5rex54CL55Sa6Iqv6Ku25LuA5Y2B76Wz6ZuZ5rCP5Lqe5L+E5YWS5ZWe5ail5bOo5oiR54mZ6Iq96I6q6Ju+6KGZ6Kid6Zi/6ZuF6aST6bSJ6bWd5aCK5bKz5ba95bmE5oOh5oSV5o+h5qiC5ril6YSC6Y2U6aGO6bCQ6b235a6J5bK45oyJ5pmP5qGI55y86ZuB6Z6N6aGU6a6f5pah6KyB6LuL6Za85ZS15bKp5beW5bq15pqX55mM6I+06ZeH5aOT5oq854uO6bSo5Luw5aSu5oCP5pi75q6D56en6bSm5Y6T5ZOA5Z+D5bSW5oSb5puW5rav56KN6Im+6ZqY6Z2E5Y6E5om85o6W5ray57iK6IWL6aGNIl0sWyJlNWExIiwi5qu7572M6bav6bia5Lmf5YC75Ya25aSc5oO55o+25qSw54i66IC276W06YeO5byx76W176W257SE6Iul6JGv6JK76Jel6LqN76W35L2v76W476W55aOk5a2D5oGZ5o+a5pSY5pWt5pqY76W65qWK5qij5rSL54CB54Ws55eS55iN56az56mw76W7576K76W86KWE76W96K6T6YeA6Zm976W+6aSK5ZyE5b6h5pa85ryB55iA56am6Kqe6aat6a2a6b2s5YSE5oa25oqR5qqN6IeG5YGD5aCw5b2m54SJ6KiA6Ku65a286JiW5L+65YS85Zq05aWE5o6p5re55baq5qWt5YaG5LqI5L2Z76W/76aA76aB5aaC76aCIl0sWyJlNmExIiwi76aD5q2f5rGd76aE55K156SW76aF6IiH6ImF6Iy56Ly/6L2d76aG6aSY76aH76aI76aJ5Lqm76aK5Z+f5b255piT76aL76aM55ar57m56K2v76aN6YCG6amb5Zql5aCn5ae45aif5a6076aO5bu276aP76aQ5o2Q5oy776aR5qS95rKH5rK/5raO5raT5re15ryU76aS54Of54S254WZ76aT54eD54eV76aU56GP56Gv76aV562157ej76aW57iv76aX6KGN6Luf76aY76aZ76aa6Ymb76ab6bO276ac76ad76ae5oKF5raF76af54ax76ag76ah6Zax5Y6t76ai76aj76ak5p+T76al54KO54Sw55Cw6Im26IuSIl0sWyJlN2ExIiwi76am6Za76aul6bm95puE76an54eB6JGJ76ao76ap5aGL76aq76ar5ba45b2x76as5pig5pqO5qW55qau5rC45rOz5ri25r2B5r+a54Cb54Cv54WQ54ef542w76at55Gb76au55OU55uI56mO57qT76av76aw6Iux6Kmg6L+O76ax6Y2I76ay6ZyZ76az76a05LmC5YCq76a15YiI5Y+h5puz5rGt5r+K54yK552/56mi6Iqu6Jed6JiC76a26KOU6Kmj6K296LGr76a36Yqz76a46ZyT6aCQ5LqU5LyN5L+J5YKy5Y2I5ZC+5ZCz5Zea5aGi5aK65aWn5aib5a+k5oKf76a55oeK5pWW5pe/5pmk5qKn5rGa5r6zIl0sWyJlOGExIiwi54OP54as542S56296JyI6Kqk6bCy6byH5bGL5rKD542E546J6Yi65rqr55Gl55if56mp57iV6JiK5YWA5aOF5pOB55Ou55SV55mw57+B6YKV6ZuN6aWU5rim55Om56qp56qq6Iel6JuZ6J246Kib5amJ5a6M5a6b5qKh5qSA5rWj546p55CT55Cs56KX57ep57+r6ISY6IWV6I6e6LGM6Ziu6aCR5puw5b6A5pe65p6J5rGq546L5YCt5aiD5q2q55+u5aSW5bWs5beN54yl55WP76a676a75YOl5Ye55aCv5aSt5aaW5aea5a+l76a876a95bai5ouX5pCW5pKT5pO+76a+5puc76a/5qmI76eA54e/55Gk76eBIl0sWyJlOWExIiwi56qI56qv57mH57me6ICA6IWw76eC6J+v6KaB6Kyg6YGZ76eD6YKA6aWS5oW+5qyy5rW057if6KSl6L6x5L+R5YKt5YaX5YuH5Z+H5aKJ5a655bq45oWC5qaV5raM5rmn5rq254aU55Gi55So55Ss6IGz6Iy46JOJ6LiK6Y6U6Y+e76eE5LqO5L2R5YG25YSq5Y+I5Y+L5Y+z5a6H5a+T5bCk5oSa5oaC5pe054mb546X55GA55uC56WQ56aR56a557SG57696IqL6JeV6Jme6L+C6YGH6YO16Yeq6ZqF6Zuo6Zup5YuW5b2n5pet5pix5qCv54Wc56i26YOB6aCK5LqR76eF5qmS5q6e5r6Q54aJ6ICY6Iq46JWTIl0sWyJlYWExIiwi6YGL6ZqV6Zuy6Z+76JSa6ayx5LqQ54aK6ZuE5YWD5Y6f5ZOh5ZyT5ZyS5Z6j5aqb5auE5a+D5oCo5oS/5o+05rKF5rS55rmy5rqQ54iw54y/55GX6IuR6KKB6L2F6YGg76eG6Zmi6aGY6bSb5pyI6LaK6Yme5L2N5YGJ5YOe5Y2x5ZyN5aeU5aiB5bCJ5oWw5pqQ5rit54iy55GL57ev6IOD6JCO6JGm6JS/6J2f6KGb6KSY6KyC6YGV6Z+L6a2P5Lmz5L6R5YSS5YWq76eH5ZSv5Zap5a265a6l5bm85bm95bq+5oKg5oOf5oSI5oSJ5o+E5pS45pyJ76eI5p+U5p+a76eJ5qWh5qWi5rK55rSn76eK5ri476eLIl0sWyJlYmExIiwi5r+h54y254y376eM55Gc55Sx76eN55mS76eO76eP57at6Ie+6JC46KOV6KqY6Kub6Kut6Liw6LmC6YGK6YC+6YG66YWJ6YeJ6Y2u76eQ76eR5aCJ76eS5q+T6IKJ6IKy76eT76eU5YWB5aWr5bC576eV76eW5r2k546n6IOk6LSH76eX6YiX6ZaP76eY76eZ76ea76eb6IG/5oiO54Cc57Wo6J6N76ec5Z6g5oGp5oWH5q636Kq+6YqA6Zqx5LmZ5ZCf5rer6JSt6Zmw6Z+z6aOu5o+W5rOj6YKR5Yed5oeJ6Ia66be55L6d5YCa5YSA5a6c5oSP5oe/5pOs5qSF5q+F55aR55+j576p6Imk6JaP6J+76KGj6Kq8Il0sWyJlY2ExIiwi6K2w6Yar5LqM5Lul5LyK76ed76ee5aS35aeo76ef5bey5byb5b2b5oCh76eg76eh76ei76ej54i+54+l76ek55Ww55eN76el56e776em6ICM6ICz6IKE6Iuh6I2R76en76eo6LK96LKz6YKH76ep76eq6aO06aSM76er76es54C355uK57+K57+M57+86Kya5Lq65LuB5YiD5Y2w76et5ZK95Zug5ae75a+F5byV5b+N5rmu76eu76ev57Wq6Iy176ew6JqT6KqN76ex6Z2t6Z2376ey76ez5LiA5L2a5L2+5aO55pel5rqi6YC46Y6w6aa55Lu75aOs5aaK5aeZ5oGB76e076e156iU76e26I2P6LOD5YWl5Y2EIl0sWyJlZGExIiwi76e376e476e55LuN5Ymp5a2V6Iq/5LuU5Yi65ZKo5aeJ5ae/5a2Q5a2X5a2c5oGj5oWI5ruL54KZ54Wu546G55O355a156OB57Sr6ICF6Ieq6Iyo6JSX6JeJ6Kuu6LOH6ZuM5L2c5Yu65Zq85par5pio54G854K454i157a96IqN6YWM6ZuA6bWy5a2x5qOn5q6Y5r2655ue5bKR5pqr5r2b566057Cq6KC26Zuc5LiI5LuX5Yyg5aC05aK75aOv5aWs5bCH5biz5bqE5by15o6M5pqy5p2W5qif5qqj5qyM5ry/54mG76e6542Q55KL56ug57Kn6IW46Ief6Ien6I6K6JGs6JSj6JaU6JeP6KOd6LST6Yas6ZW3Il0sWyJlZWExIiwi6Zqc5YaN5ZOJ5Zyo5a6w5omN5p2Q5qC95qKT5ri95ruT54G957ih6KOB6LKh6LyJ6b2L6b2O54it566P6KuN6Yya5L2H5L2O5YSy5ZKA5aeQ5bqV5oq15p215qWu5qiX5rKu5ria54uZ54yq55a9566457S16Iun6I+56JGX6Je36Kmb6LKv6LqH6YCZ6YK46ZuO6b2f5Yuj5ZCK5auh5a+C5pGY5pW15ru054uE76e755qE56mN56yb57GN57i+57+f6I276Kyr6LOK6LWk6Leh6Lmf6L+q6L+56YGp6Y+R5L2D5L265YKz5YWo5YW45YmN5Ymq5aGh5aG85aWg5bCI5bGV5bub5oKb5oiw5qCT5q6/5rCI5r6xIl0sWyJlZmExIiwi54WO55Cg55Sw55S455WR55my562M566L566t56+G57qP6Kmu6Ly+6L2J6Yi/6YqT6Yyi6ZCr6Zu76aGa6aGr6aSe5YiH5oiq5oqY5rWZ55mk56uK56+A57W25Y2g5bK+5bqX5ry454K557KY6ZyR6a6O6bue5o6l5pG66J225LiB5LqV5Lqt5YGc5YG15ZGI5aeD5a6a5bmA5bqt5bu35b6B5oOF5oy65pS/5pW05peM5pm25pm45p++5qWo5qqJ5q2j5rGA5reA5reo5rif5rme54Ce54Kh546O54+955S6552b56KH56aO56iL56m957K+57aO6ImH6KiC6Kuq6LKe6YSt6YWK6YeY6Ymm6YuM6Yyg6ZyG6Z2WIl0sWyJmMGExIiwi6Z2c6aCC6byO5Yi25YqR5ZW85aCk5bid5byf5oKM5o+Q5qKv5r+f56Wt56ys6IeN6Ja66KO96Ku46LmE6YaN6Zmk6Zqb6Zy96aGM6b2K5L+O5YWG5YeL5Yqp5Ziy5byU5b2r5o6q5pON5pep5pmB5pu65pu55pyd5qKd5qOX5qe95ryV5r2u54Wn54el54iq55Kq55y656WW56Wa56ef56ig56qV57KX57Of57WE57mw6IKH6Je76Jqk6KmU6Kq/6LaZ6LqB6YCg6YGt6Yej6Zi76ZuV6bOl5peP57CH6Laz6Y+D5a2Y5bCK5Y2S5ouZ54yd5YCn5a6X5b6e5oKw5oWr5qOV5reZ55Cu56iu57WC57ac57ix6IWrIl0sWyJmMWExIiwi6Liq6Li16Y2+6ZCY5L2Q5Z2Q5bem5bqn5oyr572q5Li75L2P5L6P5YGa5aed6IOE5ZGq5ZGo5Ze+5aWP5a6Z5bee5bua5pmd5pyx5p+x5qCq5rOo5rSy5rmK5r6N54K354+g55aH57GM57SC57Ss57ai6Iif6Jub6Ki76KqF6LWw6LqK6Lyz6YCx6YWO6YWS6ZGE6aeQ56u557Kl5L+K5YSB5YeG5Z+I5a+v5bO75pmZ5qi95rWa5rqW5r+s54SM55Wv56uj6KCi6YCh6YG16ZuL6ae/6IyB5Lit5Luy6KGG6YeN5Y295qub5qWr5rGB6JG65aKe5oaO5pu+5ouv54Od55SR55eH57mS6JK46K2J6LSI5LmL5Y+qIl0sWyJmMmExIiwi5ZKr5Zyw5Z2A5b+X5oyB5oyH5pGv5pSv5peo5pm65p6d5p6z5q2i5rGg5rKa5rys55+l56Cl56WJ56WX57SZ6IKi6ISC6Iez6Iqd6Iq36JyY6KqM76e86LSE6La+6YGy55u056iZ56i357mU6IG35ZSH5ZeU5aG15oyv5pCi5pmJ5pmL5qGt5qab5q6E5rSl5rqx54+N55Go55Kh55Wb55a555uh55ye556L56em57iJ57id6Ie76JSv6KKX6Ki66LOR6Lur6L6w6YCy6Y6t6Zmj6Zmz6ZyH5L6E5Y+x5aeq5auJ5biZ5qGO55OG55a+56ep56qS6Iaj6Jut6LOq6LeM6L+t5paf5pyV76e95Z+35r2X57ed6LyvIl0sWyJmM2ExIiwi6Y+26ZuG5b615oey5r6E5LiU5L6Y5YCf5Y+J5Zef5bWv5beu5qyh5q2k56OL566a76e+6LmJ6LuK6YGu5o2J5pC+552A56qE6Yyv6ZG/6b2q5pKw5r6v54em55Ko55Oa56uE57CS57qC57Ky57qY6K6a6LSK6ZG96aSQ6aWM5Yi55a+f5pOm5pyt57Su5YOt5Y+D5aG55oWY5oWZ5oe65pas56uZ6K6S6K6W5YCJ5YCh5Ym15ZSx5ai85bug5b2w5oS05pWe5piM5pi25pqi5qeN5ruE5ryy54yW55ih56qT6IS56ImZ6I+W6JK85YK15Z+w5a+A5a+o5b2p5o6h56Cm57a16I+c6JSh6YeH6Ye15YaK5p+1562WIl0sWyJmNGExIiwi6LKs5YeE5aa75oK96JmV5YCc76e/5YmU5bC65oW95oia5ouT5pOy5pal5ruM55ig6ISK6Lmg6Zmf6Zq75Luf5Y2D5ZaY5aSp5bed5pOF5rOJ5re6546U56m/6Iib6Jam6LOk6LiQ6YG36Yen6Zeh6Zih6Z+G5Ye45ZOy5ZaG5b655pKk5r6I57a06Lyf6L2N6ZC15YOJ5bCW5rK+5re755Sb556757C957Gk6Km56KuC5aCe5aa+5biW5o2354mS55aK552r6Kuc6LK86LyS5buz5pm05re46IG96I+B6KuL6Z2R6a+W76iA5YmD5pu/5raV5ruv57eg6Kum6YCu6YGe6auU5Yid5Ym/5ZOo5oaU5oqE5oub5qKiIl0sWyJmNWExIiwi5qSS5qWa5qi154KS54Sm56Gd56SB56SO56eS56iN6IKW6Im46IuV6I2J6JWJ6LKC6LaF6YWi6YaL6Yau5L+D5ZuR54et55+X6JyA6Ke45a+45b+W5p2R6YKo5Y+i5aGa5a+15oKk5oaB5pGg57i96IGw6JSl6YqD5pKu5YKs5bSU5pyA5aKc5oq95o6o5qSO5qW45qie5rmr55q656eL6Iq76JCp6KuP6Lao6L+96YSS6YWL6Yac6YyQ6YyY6Y6a6Zub6ai26bCN5LiR55Wc56Wd56u6562R56+J57iu6JOE6LmZ6Lm06Lu46YCQ5pil5qS/55GD5Ye65pyu6buc5YWF5b+g5rKW6J+y6KGd6KG35oK06Ia16JCDIl0sWyJmNmExIiwi6LSF5Y+W5ZC55Zi05ai25bCx54KK57+g6IGa6ISG6Iet6Laj6YaJ6amf6bey5YG05LuE5Y6g5oO75ris5bGk5L6I5YCk5Zek5bOZ5bmf5oGl5qKU5rK75reE54a+55eU55e055mh56ia56mJ57eH57e7572u6Ie06Jqp6Lyc6ZuJ6aaz6b2S5YmH5YuF6aOt6Kaq5LiD5p+S5ryG5L615a+i5p6V5rKI5rW455Cb56Cn6Yed6Y286J+E56ek56ix5b+r5LuW5ZKk5ZS+5aKu5aal5oOw5omT5ouW5py25qWV6Ii16ZmA6aax6aed5YCs5Y2T5ZWE5Z2876iB5omY76iC5pOi5pmr5p+d5r+B5r+v55Ci55C46KiXIl0sWyJmN2ExIiwi6ZC45ZGR5ZiG5Z2m5b2I5oaa5q2O54GY54Kt57a76KqV5aWq6ISr5o6i55yI6IC96LKq5aGU5pCt5qa75a6V5biR5rmv76iD6JWp5YWM5Y+w5aSq5oCg5oWL5q6G5rGw5rOw56ye6IOO6IuU6LeG6YKw6aKx76iE5pOH5r6k5pKR5pSE5YWO5ZCQ5Zyf6KiO5oWf5qG276iF55eb562S57Wx6YCa5aCG5qeM6IW/6KSq6YCA6aC55YG45aWX5aas5oqV6YCP6ayq5oWd54m56ZeW5Z2h5amG5be05oqK5pKt5pO65p235rOi5rS+54is55C256C057236Iqt6Leb6aCX5Yik5Z2C5p2/54mI55Oj6LKp6L6m6YiRIl0sWyJmOGExIiwi6Ziq5YWr5Y+t5o2M5L2p5ZSE5oKW5pWX5rKb5rW/54mM54u956iX6KaH6LKd5b2t5r6O54O56Iao5oSO5L6/5YGP5omB54mH56+H57eo57+p6YGN6Z6t6aiZ6LK25Z2q5bmz5p6w6JCN6KmV5ZCg5ayW5bmj5bui5byK5paD6IK66JS96ZaJ6Zmb5L2I5YyF5YyN5YyP5ZKG5ZO65ZyD5biD5oCW5oqb5oqx5o2V76iG5rOh5rWm55ax56Cy6IOe6ISv6Iue6JGh6JKy6KKN6KSS6YCL6Yuq6aO96a6R5bmF5pq05pud54CR54iG76iH5L+15Ym95b2q5oWT5p2T5qiZ5ryC55Oi56Wo6KGo6LG56aOH6aOE6amDIl0sWyJmOWExIiwi5ZOB56if5qWT6Ku36LGK6aKo6aau5b285oqr55ay55qu6KKr6YG/6ZmC5Yy55by85b+F5rOM54+M55Wi55aL562G6Iu+6aad5LmP6YC85LiL5L2V5Y6m5aSP5buI5piw5rKz55GV6I236J2m6LOA6YGQ6Zye6bCV5aOR5a246JmQ6KyU6ba05a+S5oGo5oKN5pex5rGX5ryi5r6j54Ca572V57+w6ZaR6ZaS6ZmQ6Z+T5Ymy6L2E5Ye95ZCr5ZK45ZWj5ZaK5qq75ra157eY6Imm6Yqc6Zm36bm55ZCI5ZOI55uS6Juk6Zak6ZeU6Zmc5Lqi5LyJ5aeu5aum5be35oGS5oqX5p2t5qGB5rKG5riv57y46IKb6IiqIl0sWyJmYWExIiwi76iI76iJ6aCF5Lql5YGV5ZKz5Z6T5aWa5a2p5a6z5oeI5qW35rW354Cj6J+56Kej6Kmy6Kun6YKC6aet6aq45Yq+5qC45YCW5bm45p2P6I2H6KGM5Lqr5ZCR5Zqu54+m6YSV6Z+/6aSJ6aWX6aaZ5ZmT5aKf6Jmb6Kix5oay5qu254276LuS5q2H6Zqq6amX5aWV54iA6LWr6Z2p5L+U5bO05bym5oe45pmb5rOr54Kr546E546554++55yp552N57WD57Wi57ij6Ii36KGS76iK6LOi6YmJ6aGv5a2R56m06KGA6aCB5auM5L+g5Y2U5aS+5bO95oy+5rW554u56ISF6ISH6I6i6YuP6aCw5Lqo5YWE5YiR5Z6LIl0sWyJmYmExIiwi5b2i5rOC5ruO54CF54GQ54Kv54aS54+p55Gp6I2K6J6i6KGh6YCI6YKi6Y6j6aao5YWu5b2X5oOg5oWn5pqz6JWZ6LmK6Yav6Z6L5LmO5LqS5ZG85aOV5aO65aW95bK15byn5oi25omI5piK5pmn5q+r5rWp5reP5rmW5ru45r6U5r+g5r+p54Gd54uQ55Cl55Ga55Og55qT56Wc57OK57ie6IOh6Iqm6JGr6JK/6JmO6Jmf6J206K236LGq6Y6s6aCA6aGl5oOR5oiW6YW35ama5piP5re35ri+55C/6a2C5b+95oOa56yP5ZOE5byY5rGe5rOT5rSq54OY57SF6Jm56KiM6bS75YyW5ZKM5ayF5qi654Gr55W1Il0sWyJmY2ExIiwi56aN56a+6Iqx6I+v6Kmx6K2B6LKo6Z2076iL5pO05pSr56K656K756mr5Li45Zaa5aWQ5a6m5bm75oKj5o+b5q2h5pml5qGT5riZ54Wl55Kw57SI6YKE6amp6bCl5rS75ruR54y+6LGB6ZeK5Yew5bmM5b6o5oGN5oO25oSw5oWM5pmD5pmE5qal5rOB5rmf5ruJ5r2i54WM55Kc55qH56+B57Cn6I2S6J2X6YGR6ZqN6buD5Yyv5Zue5bu75b6K5oGi5oKU5oe35pmm5pyD5qqc5reu5r6u54Gw542q57mq6Ia+6Iy06JuU6Kqo6LOE5YqD542y5a6W5qmr6ZCE5ZOu5ZqG5a2d5pWI5paF5puJ5qKf5raN5reGIl0sWyJmZGExIiwi54i76IK06YW16amN5L6v5YCZ5Y6a5ZCO5ZC85ZaJ5ZeF5bi/5b6M5py954Wm54+d6YCF5Yub5Yuz5aGk5aOO54SE54aP54e76Jaw6KiT5pqI6Jao5Zan5pqE54WK6JCx5Y2J5ZaZ5q+B5b2Z5b695o+u5pqJ54WH6Kux6Lyd6bq+5LyR5pC654OL55Wm6Jmn5oGk6K2O6be45YWH5Ye25YyI5rS26IO46buR5piV5qyj54KY55eV5ZCD5bG557SH6KiW5qyg5qy95q2G5ZC45oGw5rS957+V6IiI5YOW5Yee5Zac5Zmr5ZuN5aes5ayJ5biM5oaZ5oaY5oix5pme5pum54aZ54a554a654qn56an56iA576y6KmwIl1dCgovKioqLyB9KSwKLyogMTg0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCm1vZHVsZS5leHBvcnRzID0gW1siODc0MCIsIuSPsOSwsuSYg+SWpuSVuPCniafktbfklrPwp7Kx5LOi8KezheOuleSctuSdhOSxh+SxgPCkir/wo5iX8KeNkvCmuovwp4OS5LGX8KqNkeSdj+SXmuSyhfCnsazktIfkqqTkmqHwpqyj54il8KWplPChqaPwo7iG8KO9oeaZjeWbuyJdLFsiODc2NyIsIue2leWknfCorrnjt7TpnLTwp6+v5a+b8KG1nuWqpOOYpfCpurDlq5Hlrrfls7zmna7olpPwqaWF55Gh55Kd46G18KG1k/Cjmp7wpoCh47usIl0sWyI4N2ExIiwi8KWjnuOrteervOm+l/CkhaHwqKSN8KOHqvCgqorwo4me5IyK6JKE6b6W6ZCv5KSw6JiT5aKW6Z2K6YiY56eQ56iy5pmg5qip6KKd55GM56+F5p6C56is5YmP6YGG45Om54+E8KW2ueeThum/h+Wes+Skr+WRjOSEsfCjmo7loJjnqbLwp62l6K6P5Jqu8Ka6iOSGgfCltpnnrq7wopK86b+I8KKTgfCik4nwopOM6b+J6JSE8KOWu+SCtOm/iuSTofCqt7/mi4Hnga7pv4siXSxbIjg4NDAiLCLjh4AiLDQsIvCghIzjh4XwoIOR8KCDjeOHhuOHh/Cgg4vwob+o44eI8KCDiuOHieOHiuOHi+OHjPCghI7jh43jh47EgMOBx43DgMSSw4nEmsOIxYzDk8eRw5Lgv7/DisyE4bq+4L+/w4rMjOG7gMOKxIHDoceOw6DJkcSTw6nEm8OoxKvDrceQw6zFjcOzx5LDssWrw7rHlMO5x5bHmMeaIl0sWyI4OGExIiwix5zDvOC/v8OqzIThur/gv7/DqsyM4buBw6rJoeKPmuKPmyJdLFsiODk0MCIsIvCqjqnwoYWFIl0sWyI4OTQzIiwi5pSKIl0sWyI4OTQ2Iiwi5Li95rud6bWO6YefIl0sWyI4OTRjIiwi8KecteaSkeS8muS8qOS+qOWFluWFtOWGnOWHpOWKoeWKqOWMu+WNjuWPkeWPmOWbouWjsOWkhOWkh+WksuWktOWtpuWunuWun+WymuW6huaAu+aWieafvuaghOahpea1jueCvOeUtee6pOe6rOe6uue7h+e7j+e7n+e8hue8t+iJuuiLj+iNr+inhuiuvuivoui9pui9p+i9riJdLFsiODlhMSIsIueQkeezvOe3jealhuerieWIpyJdLFsiODlhYiIsIumGjOeiuOmFnuiCvCJdLFsiODliMCIsIui0i+iDtvCgp6ciXSxbIjg5YjUiLCLogp/pu4fks43pt4npuIzksL7wqbe28KeAjum4ivCqhLPjl4EiXSxbIjg5YzEiLCLmuproiL7nlJkiXSxbIjg5YzUiLCLkpJHpqazpqo/pvpnnpofwqJGs8KG3ivCgl5Dwoqum5Lik5LqB5LqA5LqH5Lq/5Lur5Ly345GM5L6947mI5YCD5YKI45G945KT45Kl5YaG5aSF5Yeb5Ye85YiF5LqJ5Ym55YqQ5Yyn45eH5Y6p45WR5Y6w45WT5Y+C5ZCj45Wt45Wy45qB5ZKT5ZKj5ZK05ZK55ZOQ5ZOv5ZSY5ZSj5ZSo45aY5ZS/45al45a/5ZeX45eFIl0sWyI4YTQwIiwi8Ke2hOWUpSJdLFsiOGE0MyIsIvCgsYLwoLSV8KWEq+WWkPCis4bjp6zwoI2B6LmG8KS2uPCpk6XkgZPwqIK+55268KKwuOOotOSflfCohZ3wpqey8KS3quaTnfCgtbzwoL608KCzlfChg7Tmko3oub7woLqW8KCwi/CgvaTworKp8KiJlvCkk5MiXSxbIjhhNjQiLCLwoLWG8KmpjfCog6nkn7TwpLqn8KKzgumqsuOpp/Cpl7Tjv63jlIbwpYuH8KmflPCno4jworWE6bWu6aCVIl0sWyI4YTc2Iiwi5I+Z8KaCpeaStOWTo/CitYzwoq+K8KGBt+Onu/Chga8iXSxbIjhhYTEiLCLwppua8KaclvCnpqDmk6rwpYGS8KCxg+i5qPCihqHwqK2M8KCcsSJdLFsiOGFhYyIsIuSgi/Cghqnjv7rlobPworaNIl0sWyI4YWIyIiwi8KSXiPCgk7zwpoKX8KC9jPCgtpbllbnkgrvkjroiXSxbIjhhYmIiLCLkqrTwoqmm8KGCneiGqumjtfCgtpzmjbnjp77wop216LeA5Zqh5pG847mDIl0sWyI4YWM5Iiwi8KqYgfCguInwoquP8KKziSJdLFsiOGFjZSIsIvChg4jwo6eC46aS46iG8KiKm+OVuPCluYnwooOH5ZmS8KC8sfCisrLwqZyg45K85rC98KS4uyJdLFsiOGFkZiIsIvCnlbTworqL8KKIiPCqmZvwqLON8KC5uvCgsLTwpqCc576T8KGDj/CioIPwoqS545e78KWHo/CguozwoL6N8KC6quO+k/CgvLDwoLWH8KGFj/CguYwiXSxbIjhhZjYiLCLwoLqr8KCuqfCgtYjwoYOA8KGEveO/ufCimpbmkLLwoL6tIl0sWyI4YjQwIiwi8KOPtPCnmLnwoq+O8KC1vvCgtb/worGR8KKxleOomPCgupjwoYOH8KC8rvCqmLLwpq2Q8KizkvCotpnwqLOK6Zaq5ZOM6IuE5Za5Il0sWyI4YjU1Iiwi8Km7g+mwpumqtvCnnZ7woreu54WA6IWt6IOs5bCc8KaVsuiEtOOel+WNn/Cogr3phrbwoLu68KC4j/CgubfwoLu745ed8KS3q+OYifCgs5blmq/wop618KGDifCguJDwoLm48KGBuPChhYjwqIiH8KGRlfCgubnwpLmQ8KK2pOWplPChgJ3woYCe8KGDtfChg7blnpzwoLiRIl0sWyI4YmExIiwi8KealPCoi43woL618KC5u/Clhb7jnIPwoL628KGGgPCli5jwqoq98KSnmvChoLrwpIW38KiJvOWimeWJqOOYmvClnL3nrrLlrajkoIDkrKzpvKfkp6fpsJ/pro3wpa208KOEveWXu+OXsuWaieS4qOWkgvChr4Hwr6G46Z2R8KCChuS5m+S6u+OUvuWwo+W9keW/hOOjuuaJjOaUteatuuawteawuueBrOeIq+S4rOeKrfCko6nnvZLnpLvns7nnvZPwpomq45OBIl0sWyI4YmRlIiwi8KaNi+iAguiCgPCmmJLwpqWR5Y2d6KGk6KeB8KeisuiuoOi0nemShemVuOmVv+mXqPCouI/pn6bpobXpo47po57ppaPwqaCQ6bG86bif6buE5q2v76SH5Li38KCCh+mYneaIt+mSoiJdLFsiOGM0MCIsIuWAu+a3vvCpsbPpvqbjt4nooo/wpIWO54G35bO15Kyg8KWHjeOVmfCltLDmhKLwqKiy6L6n6Ye254aR5pyZ54668KOKgfCqhIfjsovwoaaA5KyQ56Ok55CC5Yau8Kicj+SAieapo/CqirrkiKPomI/woKmv56iq8Kmlh/Coq6rpnZXngY3ljKTwooG+6Y+055uZ8Kino+m+p+efneS6o+S/sOWCvOS4r+S8l+m+qOWQtOe2i+WikuWjkPChtrblupLlupnlv4LwopyS5paLIl0sWyI4Y2ExIiwi8KOPueakmeapg/CjsaPms78iXSxbIjhjYTciLCLniIDwpJSF546M47ub8KSok+WsleeSueiug/ClsqTwpZqV56qT56+s57OD57ms6Iu46JaX6b6p6KKQ6b6q6Lq56b6r6L+P6JWf6aeg6Yih6b6s8Ki2ufChkL/kgbHkiqLlqJoiXSxbIjhjYzkiLCLpoajmnavkibblnL0iXSxbIjhjY2UiLCLol5bwpKW76Iq/8KeEjeSygfCmtbTltbvwpqyV8Ka+vum+rem+ruWulum+r+abp+e5m+a5l+eniuO2iOSTg/CjiZbwop6W5I6a5JS2Il0sWyI4Y2U2Iiwi5bOV8KOsmuirueWxuOO0kvCjlZHltbjpvrLnhZfklZjwpIOs8KG4o+Sxt+OluOORivCghqTwprGB6KuM5L608KCIueWmv+iFrOmhlvCpo7rlvLsiXSxbIjhkNDAiLCLwoK6fIl0sWyI4ZDQyIiwi8KKHgfCopa3khILkmrvwqYG547yH6b6z8KqGteSDuOOfluSbt/CmsYbkhbzwqJqy8KePv+SVreOjlPClkprklaHklJvktonksbvktbbkl6rjv4jwpKyP45mh5JOe5JK95Iet5bS+5bWI5bWW47e846CP5bak5ba546Cg46C45bmC5bq95byl5b6D46SI46SU46S/46WN5oOX5oS95bOl46aJ5oa35oa55oeP46a45ois5oqQ5oul5oyY46e45ZqxIl0sWyI4ZGExIiwi46iD5o+i5o+75pCH5pGa46mL5pOA5bSV5Zih6b6f46qX5paG46q95pe/5pmT46uy5pqS46yi5pyW462C5p6k5qCA462Y5qGK5qKE462y462x46275qSJ5qWD54mc5qWk5qaf5qaF46685qeW46+d5qml5qm05qmx5qqC46+s5qqZ46+y5qqr5qq15quU5qu25q6B5q+B5q+q5rG15rKq47OL5rSC5rSG5rSm5raB47Ov5rak5rax5riV5riY5rip5rqG8KingOa6u+a7oua7mum9v+a7qOa7qea8pOa8tOO1hvCjvYHmvoHmvr7jtarjtbXnhrflspnjtorngKzjtpHngZDngZTnga/ngb/ngonwoIyl5I+B45ex8KC7mCJdLFsiOGU0MCIsIvCju5flnr7wpruT54S+8KWfoOOZjuamovCor6nlrbTnqYnwpaOh8KmTmeeppeepvfClpqznqrvnqrDnq4Lnq4Pnh5HwppKN5IeK56ua56ud56uq5Iev5ZKy8KWwgeesi+etleesqfCljI7wpbO+566i562v6I6c8KWutPCmsb/nr5DokKHnrpLnrrjwpbSg47at8KWxpeiSkuevuuewhuewtfCls4HnsYTnsoPwpKKC57Km5pm98KSVuOezieezh+ezpuextOezs+ezteezjiJdLFsiOGVhMSIsIue5p+SUnfCmuYTntZ3wpruW55KN57aJ57ar54S157az57eS8KSBl/CmgKnnt6TjtJPnt7XwoZ+557el8KiNree4nfCmhKHwpoWa57mu57qS5Iyr6ZGs57in572A572B572H56S28KaLkOmnoee+l/CmjZHnvqPwoZmh8KCBqOSVnPCjnabklIPwqIy657+68KaSieiAheiAiOiAneiAqOiAr/CqgofwprOD6IC76IC86IGh8KKclOSmifCmmKbwo7ej8KabqOacpeiCp/CoqYjohIfohJrlorDwopu25rG/8KaSmPCkvrjmk6fwoZKK6IiY8KGhnuapk/CkqaXwpKqV5JG66Iip8KCsjfCmqZLwo7W+5L+58KGTveiTouiNovCmrIrwpKan8KOUsPChnbPwo7e46Iqq5qSb8K+mlOSHmyJdLFsiOGY0MCIsIuiVi+iLkOiMmvCguJbwoZ6045uB8KOFvfCjlZroibvoi6LojJjwo7qL8Ka2o/CmrIXwpq6X8KOXjuO2v+iMneWXrOiOheSUi/CmtqXojqzoj4Hoj5Pjkb7wpruU5qmX6JWa45KW8Ka5gvCiu6/okZjwpa+k6JGx47eT5JOk5qqn6JGK8KOyteelmOiSqPCmrpbwprm38Ka5g+iTnuiQj+iOkeSSoOiSk+iTpPClspHkiYDwpbOA5JWD6JS05auy8Ka6meSUp+iVs+SUluaev+iYliJdLFsiOGZhMSIsIvComKXwqJi76JeB8KeCiOiYgvChloLwp4ON8K+msuSVquiYqOOZiPChoqLlj7fwp46a6Jm+6J2x8KqDuOifrvCisKfonrHon5rooI/lmaHomazmoZbkmI/ooYXooYbwp5eg8KO2ufCnl6TooZ7oopzkmZvoorToorXmj4Hoo4Xnnbfwp5yP6KaH6KaK6Kam6Kap6Kan6Ka88Kiopeinp/CnpKTwp6q96Kqc556T6Ye+6KqQ8KepmeerqfCnrLrwo76P5JyT8KesuOeFvOisjOisn/ClkLDwpZWl6Ky/6K2M6K2N6Kqp8KSpuuiukOium+iqr/Chm5/kmJXooY/ospvwp7WU8Ke2j/Cvp5TjnKXwp7WT6LOW8Ke2mPCntr3otJLotIPwoaSQ6LOb54Gc6LSR8KSzieO7kOi1tyJdLFsiOTA0MCIsIui2qfCogILwoYCU8KSmiuOtvPCohrzwp4SM56un6Lqt6Lq26LuD6YuU6LyZ6Lyt8KiNpfCokJLovqXpjIPwqoqf8KCpkOi+s+SkqvCop57wqJS98KO2u+W7uPCjiaLov7nwqoCU8KiavPColIHwooyl46aA8Ka7l+mAt/ColLzwp6q+6YGh8KiVrPComIvpgqjwqJyT6YOE8KibpumCrumDvemFp+OrsOmGqemHhOeyrPCopLPwobqJ6YiO5rKf6YmB6Ymi8KWWuemKufCoq4bwo7Kb8KisjPCll5siXSxbIjkwYTEiLCLwoLSx6Yys6Y2r8KirofCor6vngo/lq4PwqKui8KirpeSlpemJhPCor6zwqLC58Kivv+mNs+mRm+i6vOmWhemWpumQpumWoOa/tuSKufCimbrwqJuY8KGJvPCjuK7kp5/msJzpmbvpmpbkhazpmqPwpruV5oea6Zq256O18KiroOmaveWPjOSmofCmsrjwoIm08KaQkPCpgq/wqYOl8KSrkfChpJXwo4yK6Zyx6JmC6Zy25KiP5JS95JaF8KSrqeeBteWtgemcm+mdnPCph5XpnZflrYrwqYer6Z2f6ZCl5YOQ8KOCt/Cjgrzpnonpnp/pnrHpnr7pn4Dpn5Lpn6DwpZGs6Z+u55Cc8KmQs+mfv+mftfCpkJ3wp6W65KuR6aC06aCz6aGL6aGm46yO8KeFteO1kfCgmLDwpIWcIl0sWyI5MTQwIiwi8KWchumjiumit+mjiOmjh+Srv/CmtKfwoZuT5Zaw6aOh6aOm6aOs6Y246aS58KSoqeStsvCpoZfwqaSF6ae16aiM6ai76aiQ6amY8KWcpeObhPCpgrHwqa+V6aug6aui8KmshemrtOSwjumslOmsrfComIDlgLTprLTwpqao46OD8KOBvemtkOmtgPCptL7lqYXwoaGj6a6O8KSJi+mwgumvv+mwjPCpuajpt5Twqb638KqGkvCqhqvwqoOh8KqEo/Cqh5/ptb7ptoPwqoS06biO5qKIIl0sWyI5MWExIiwi6beE8KKFm/CqhpPwqoig8KGku/CqiLPptLnwqoK58KqKtOm6kOm6lem6num6ouS0tOm6qum6r/CkjaTpu4HjraDjp6XjtJ3kvLLjnr7wqLCr6byC6byI5K6W6ZCk8Ka2oum8l+m8lum8ueWan+Waium9hemmuPCpgovpn7Lokb/pvaLpvannq5zpvo7niJbkrr7wpKW18KSmu+eFt/Ckp7jwpI2I8KSpkeeOnvCor5rwoaO656af8KilvvCouLbpjanpj7PwqKmE6Yus6Y6B6Y+L8KilrPCkkrnniJfju6vnnbLnqYPng5DwpJGz8KSPuOeFvvChn6/ngqPwoaK+8KOWmeO7h/ChooXwpZCv8KGfuOOcovChm7vwoaC545uh8KGdtPCho5Hwpb2L45yj8KGbgOWdm/CkqKXwoY++8KGKqCJdLFsiOTI0MCIsIvChj4bwoZK26JSD8KOapuiUg+iRlfCkppTwp4Wl8KO4sfCllZzwo7u78KeBkuSTtPCjm67wqaad8Ka8puafueOcs+OwleO3p+WhrPChpKLmoJDkgZfwo5y/8KSDofCkgovwpISP8KawoeWTi+WanvCmmrHlmpLwoL+f8KCuqPCguI3pj4bwqKyT6Y6c5Lu45YSr46CZ8KSQtuS6vPCgkaXwoI2/5L2L5L6K8KWZkeWpqPCghqvwoI+L46aZ8KCMivCgkJTjkLXkvKnwoIuA8Ki6s/CgibXoq5rwoIiM5LqYIl0sWyI5MmExIiwi5YON5YSN5L6i5LyD8KSojvCjuorkvYLlgK7lgazlgoHkv4zkv6XlgZjlg7zlhZnlhZvlhZ3lhZ7mubbwo5aV8KO4ufCjur/mtbLwoaKE8KO6ieWGqOWHg/Cgl6Dkk53woJKj8KCSkvCgkpHotbrwqKqc8KCcjuWJmeWKpPCgobPli6Hpja7kmbrnhozwpI6M8KCwoPCkpqzwoYOk5qeR8KC4neeRueO7nueSmeeQlOeRlueOmOSujvCkqrzwpIKN5Y+Q45aE54iP8KSDieWWtPCgjYXlk43woK+G5Zyd6Ymd6Zu06Y2m5Z+d5Z6N5Z2/45i+5aOL5aqZ8KiphvChm7rwoZ2v8KGckOWorOWmuOmKj+WpvuWrj+WokvClpYbwoaez8KGhofCkipXjm7XmtIXnkYPlqKHwpbqDIl0sWyI5MzQwIiwi5aqB8Kivl/CgkJPpj6DnkozwoYyD54SF5KWy6ZCI8Kinu+mOveOeoOWwnuWynuW5nuW5iPChppbwoaW88KOrruW7jeWtj/ChpIPwoaSE45yB8KGioOObnfChm77jm5PohKrwqKmH8KG2uvCjkbLwqKao5byM5byO8KGkp/ChnqvlqavwoZy75a2E6JiU8KeXveihoOaBvvCioaDwopir5b+b47q48KKWr/Cilr7wqYKI8Ka9s+aHgPCggL7woIGG8KKYm+aGmeaGmOaBtfCispvworSH8KSblPCphY0iXSxbIjkzYTEiLCLmkbHwpJml8KKtquOoqfCirKLwo5GQ8KmjqvCiubjmjLfwqpGb5pK25oyx5o+R8KSno/CitafmiqTworKh5pC75pWr5qWy46+08KOCjvCjiq3wpKaJ8KOKq+WUjfCji6DwoaOZ8KmQv+abjvCjionwo4az46ug5IaQ8KWWhPCorKLwpZaP8KGbvPCllZvwpZCl56Ou8KOEg/ChoKrwo4i045Gk8KOIj/CjhoLwpIuJ5pqO8Ka0pOaZq+Suk+aYsPCnobDwober5pmj8KOLkvCji6HmmJ7wpaGy46OR8KOguvCjnrzjrpnwo56i8KOPvueTkOOuluaej/CkmKrmorbmoJ7jr4Tmqr7joaPwo5+V8KSSh+aos+apkuarieashfChpJLmlJHmopjmqYzjr5fmqbrmrZfwo7+A8KOymumOoOmLsvCor6rwqKuLIl0sWyI5NDQwIiwi6YqJ8KiAnvCop5zpkafmtqXmvIvwpKes5rWn8KO9v+O2j+a4hPCkgLzlqL3muIrloYfmtKTnoYLnhLvwpIya8KSJtueDseeJkOeKh+eKlPCkno/wpJyl5YW58KSqpPCgl6vnkbrwo7u48KOZn/CkqYrwpKSX8KW/oeO8huO6sfCkq5/wqLCj8KO8teaCp+O7s+eTjOeQvOmOh+eQt+SSn/Cmt6rklZHnloPjvaPwpLOZ8KS0huO9mOeVleeZs/Cql4bjrJnnkajwqKuM8KSmq/Ckpo7jq7siXSxbIjk0YTEiLCLjt43wpKmO47u/8KSnhfCko7Pph7rlnLLpjYLwqKuj8KGhpOWDn/CliKHwpYen55248KOIsuecjuecj+edu/Ckmpfwo56B46me8KSjsOeQuOeSm+O6v/CkqrrwpKuH5IOI8KSqlvCmhq7pjIfwpZaB56Ce56KN56KI56OS54+Q56WZ8KedgfClm6PkhI7nppvokpbnpqXmqK3wo7u656i656e05IWu8KGbpuSEsumIteensfCgtYzwpKaM8KCKmfCjtrrwoZ2u45aX5ZWr45Ww45qq8KCHlPCgsI3nq6LlqZnwopu18KWqr/ClqpzlqI3woImb56Ow5aiq8KWvhuervuSHueexneexreSIkfClrrPwpbq88KW6puezjfCkp7nwoZ6w57KO57G857Ku5qqy57ec57iH57eT572O8KaJoSJdLFsiOTU0MCIsIvCmhZzwp62I57aX8KW6guSJqvCmrbXwoKSW5p+W8KCBjvCjl4/ln4TwppCS8KaPuPCkpaLnv53nrKfwoKCs8KWrqfCltYPnrIzwpbiO6aem6JmF6amj5qic8KOQv+OnovCkp7fwppat6aif8KaWoOiSgPCnhKfwprOR5JOq6IS35JCC6IOG6ISJ6IWC8KaetOmjg/CmqYLoiaLoiaXwpqmR6JGT8Ka2p+iYkPCniJvlqobkhb/woaGA5ayr8KGioeWrpPCho5jomqDwr6a88KO2j+igrfCnkKLlqIIiXSxbIjk1YTEiLCLooa7kvYXooofoor/oo6bopaXopY3wpZqD6KWU8KeehfCnnoTwqK+18KivmfCorpzwqKe547qt6JKj5Ju15JuP45+y6Ki96Kic8KmRiOW9jemIq/CkioTml5TnhKnng4TwoaGF6bWt6LKf6LOp8Ke3nOWmmuefg+WnsOSNruOblOi4qui6p/CksInovLDovYrki7TmsZjmvrvwooyh5KKb5r255rqL8KGfmumvqeOatfCkpK/pgrvpgpfllbHkpIbphrvpkITwqKmL5IGi8KirvOmQp/CosJ3wqLC76JOl6Kir6ZaZ6Zan6ZaX6ZaW8Ki0tOeRheO7gvCko7/wpKmC8KSPquO7p/CjiKXpmo/wqLun8Ki5pvCouaXju4zwpKet8KSpuPCjv67nkJLnkavju7zpnYHwqYKwIl0sWyI5NjQwIiwi5qGH5Kid8KmCk/Cln5/pnZ3pjajwqKaJ8KiwpvCorK/wpo6+6Yq65ayR6K2p5KS854+58KSIm+mem+mdsemkuPCgvKblt4HwqK+F8KSqsumgn/Cpk5rpi7bwqZeX6Yel5JOA8KitkPCkqafwqK2k6aOc8KipheO8gOmIquSkpeiQlOmku+mljfCnrIbjt73pppvkra/ppqrpqZzwqK2l8KWjiOaqj+mooeWrvumor/Cpo7HkrpDwqaWI6aa85K695K6X6Y295aGy8KGMguWgovCkprgiXSxbIjk2YTEiLCLwoZOo56GE8KKcn/Cjtrjmo4Xjtb3pkZjjpKfmhZDwop6B8KKlq+aEh+mxj+mxk+mxu+mwtemwkOmtv+mvj/CpuK3prp/wqoe18KqDvum0oeSyrvCkhITpuJjksrDptIzwqoa08KqDrfCqg7PwqaSv6bal6JK98Ka4kvCmv5/wpq6C6Je85JSz8Ka2pPCmuoTwprew6JCg6Jeu8Ka4gPCjn5fwpoGk56ei8KOWnPCjmYDkpK3wpKee47Wi6Y+b6Yq+6Y2I8KCKv+eiuemJt+mRjeS/pOORgOmBpPCllZ3noL3noZTnorbnoYvwoZ2X8KOHifCkpYHjmprkvbLmv5rmv5nngJ7ngJ7lkJTwpIa15Z675aOz5Z6K6bSW5Z+X54S045Kv8KSGrOeHq/CmsYDwpL6X5ayo8KGetfCoqYkiXSxbIjk3NDAiLCLmhIzlq47lqIvkirzwpJKI45ys5K278KinvOmOu+mOuPCho5bwoLyd6JGy8KazgPChkJPwpIu68KKwpvCkj4HlppTwo7a38Kadgee2qPCmhZvwpoKk8KSmufCkpovwqKe66Yul54+i47up55K08Kito/Chop/ju6HwpKqz5quY54+z54+747uW8KSovvCkqpTwoZ+Z8KSppvCgjqfwoZCk8KSnpeeRiPCkpJbngqXwpKW26YqE54+m6Y2f8KCTvumMsfCoq47wqKiW6Y6G8Kivp/Cll5XkpLXwqKqC54WrIl0sWyI5N2ExIiwi8KSlg/Cgs7/lmqTwoJia8KCvq/CgsrjllILnp4TwoZ+657e+8KGbgvCkqZDwoaGS5JSu6ZCB45yK8KirgPCkpq3lprDwoaK/8KGig/CnkoTlqqHjm6Lwo7Wb45qw6Ymf5am58KiqgfChoaLpjbTjs43woKq05KqW46aK5YO047Wp47WM8KGOnOeFteSLu/CoiJjmuI/wqYOk5JOr5rWX8Ke5j+eBp+ayr+OzlvCjv63wo7it5riC5ryM47Wv8KCPteeVkeOavOOTiOSagOO7muShseWnhOmJruSkvui9gfCosJzwpq+A5aCS5Z+I45uW8KGRkueDvvCkjaLwpKmx8KK/o/ChirDwoo695qK55qWn8KGOmPCjk6Xwp6+08KObn/CoqoPwo5+W8KOPuvCksp/mqJrwo5qt8Kayt+iQvuSTn+STjiJdLFsiOTg0MCIsIvCmtKbwprWR8KaygvCmv57mvJfwp4SJ6Iy98KGcuuiPrfCmsoDwp4GT8KGfm+WmieWqgvChnrPlqaHlqbHwoaSF8KSHvOOcreWnr/ChnLzjm4fnho7pjpDmmprwpIql5amu5air8KSKk+aoq/Cju7nwp5y28KSRm/Cki4rnhJ3wpImZ8KinoeS+sPCmtKjls4LwpJOO8Ke5jfCkjr3mqIzwpImW8KGMhOeCpueEs/Ckj6njtqXms5/wr6Cl8KSpj+e5peWnq+W0r+O3s+W9nPCkqZ3woZ+f57ak6JCmIl0sWyI5OGExIiwi5ZKF8KOruvCjjIDwoIiU5Z2+8KCjlfCgmJnjv6Xwob6e8KqKtueAg/CphZvltbDnjo/ns5PwqKmZ8KmQoOS/iOe/p+eLjeeMkPCnq7TnjLjnjLnwpZu2542B542I47qp8KesmOmBrOeHtfCko7Lnj6Hoh7bju4rnnIzju5HmsqLlm73nkJnnkJ7nkJ/ju6Lju7Dju7Tju7rnk5PjvI7jvZPnlYLnla3nlbLnlo3jvbznl4jnl5zjv4DnmY3jv5fnmbTjv5znmbrwpL2c54aI5Zij6KaA5aGp5ICd552D5IC55p2h5IGF45eb556Y5IGq5IGv5bGe556+55+L5aOy56CY54K556Cc5IKo56C556GH56GR56Gm6JGI8KWUteeks+agg+eksuSEgyJdLFsiOTk0MCIsIuSEieemkeemmei+u+eohui+vOSFp+eqkeSGsueqvOiJueSHhOerj+erm+SHj+S4oeetouetrOetu+ewkuewm+SJoOSJuuexu+eynOSKjOeyuOSKlOezrei+k+eDgPCgs4/nt4/nt5Tnt5Dnt73nvq7nvrTnip/kjpfogKDogKXnrLnogK7ogLHogZTjt4zlnrTngqDogrfog6nkj63ohIznjKrohI7ohJLnlaDohJTkkIHjrLnohZbohZnohZoiXSxbIjk5YTEiLCLkkJPloLrohbzohoTkkKXohpPkkK3ohqXln6/oh4Hoh6ToiZTkko/oiqboibboi4roi5joi7/kkrDojZfpmanmporokIXng7XokaTmg6PokojklITokr7ok6Hok7jolJDolLjolZLklLvola/olbDol6DklbfombLompLomrLom6/pmYXonovkmIbkmJfooq7oo7/opKTopYfoppHwp6Wn6Kip6Ki46KqU6Kq06LGR6LOU6LOy6LSc5J6Y5aGf6LeD5J+t5Luu6Li65ZeY5Z2U6Lmx5Ze16Lqw5KC36LuO6Lui6Luk6Lut6Luy6L636L+B6L+K6L+M6YCz6aeE5KKt6aOg6YiT5KSe6Yio6YmY6Ymr6Yqx6Yqu6Yq/Il0sWyI5YTQwIiwi6Yuj6Yur6Yuz6Yu06Yu96Y2D6Y6E6Y6t5KWF5KWR6bq/6ZCX5YyB6ZCd6ZCt6ZC+5KWq6ZGU6ZG56ZSt6Zai5Kan6Ze06Ziz5Kel5p6g5Kik6Z2A5Ki16Z6y6Z+C5ZmU5Kuk5oOo6aK55KyZ6aOx5aGE6aSO6aSZ5Ya06aSc6aS36aWC6aWd6aWi5K2w6aeF5K6d6ai86ayP56qD6a2p6a6B6a+d6a+x6a+05LGt6bCg452v8KGvgum1iemwuiJdLFsiOWFhMSIsIum7vuWZkOm2k+m2vem3gOm3vOmTtui+tum5u+m6rOm6sem6vem7humTnOm7oum7sem7uOeriOm9hPCggpTwoIq38KCOoOakmumTg+WmrPCgk5floYDpk4HjnrnwoJeV8KCYlfCgmbbwoZq65Z2X54Wz8KCrgvCgq43woK6/5ZGq8K+gu/Cgr4vlkp7woK+78KCwu/CgsZPwoLGl8KCxvOaDp/Cgso3lmbrwoLK18KCznfCgs63woLWv8KC2svCgt4jmpZXpsK/onqXwoLiE8KC4jvCgu5fwoL6Q8KC8rfCgubPlsKDwoL685biL8KGBnPChgY/woYG25pye8KGBu/ChgojwoYKW45mH8KGCv/Chg5PwoYSv8KGEu+WNpOiSrfChi6PwoY218KGMtuiugfChlbfwoZiZ8KGfg/Chn4fkubjngrvwoaCt8KGlqiJdLFsiOWI0MCIsIvChqK3woamF8KGwqvChsbDwobKs8KG7iOaLg/Chu5XwobyV54aY5qGV8KKBheanqeObiPCiibzwoo+X8KKPuvCinKrwoqGx8KKlj+iLvfCipafwoqaT8KKrleimpfCiq6jovqDwoqyO6Z648KKsv+mhh+mqvfCisYwiXSxbIjliNjIiLCLworKI8KKyt/Clr6jworSI8KK0kvCitrfworaV8KK5gvCivbTwor+M8KOAs/Cjgabwo4yf8KOPnuW+seaZiOaav/Cnqbnwo5Wn8KOXs+eIgfCkprrnn5fwo5ia8KOclue6h/CgjYblorXmnI4iXSxbIjliYTEiLCLmpJjwo6qn8KeZl/Clv6Lwo7iR8KO6ufCnl77wooKa5KOQ5Kq48KSEmfCoqprwpIuu8KSMjfCkgLvwpIy08KSOlvCkqYXwoJeK5YeS8KCYkeWmn/Chuqjjrr7wo7O/8KSQhPCkk5blnojwpJm046ab8KScr/Col6jwqaeJ452i8KKHg+itnvCorY7pp5bwpKCS8KSju/CkqJXniInwpKuA8KCxuOWlpfCkuqXwpL6G8KCduei7mvClgKzlio/lnL/nhbHwpYqZ8KWQmfCjvYrwpKqn5Za88KWRhvClka7wpq2S6YeU45Gz8KWUv/CnmLLwpZWe5JyY8KWVovCllabwpZ+H8KSkv/CloZ3lgabjk7vwo4+M5oOe8KWkg+SdvPCopYjwpaqu8KWuifClsIbwobaQ5Z6h54WR5r628KaEgvCnsJLpgZbwpoay8KS+muitovCmkILwppGKIl0sWyI5YzQwIiwi5bWb8Kavt+i8tvCmkoTwoaSc6Kuq8KSntvCmkojwo7+v8KaUkuSvgPCmlr/wppq18KKcm+mRpfCln6HmhpXlqKfwr6ON5L675Zq58KSUofCmm7zkuarwpKS06ZmW5raP8KayveOYmOilt/CmnpnwpqGu8KaQkfCmoZ7nh5/wpqOH562C8KmDgPCgqJHwpqSm6YSE8Kakueephem3sPCmp7rpqKbwpqit45mf8KaRqfCggKHnpoPwpqi08Katm+W0rPCjlJnoj4/wpq6d5JuQ8KaypOeUu+ihpfCmtq7lorYiXSxbIjljYTEiLCLjnJzwopaN8KeBi/Cnh43jsZTwp4qA8KeKhemKgfCihbrwp4qL6Yyw8KeLpvCkp5DmsLnpkp/wp5GQ8KC7uOigp+ijtfCipKbwqJGz8KGesea6uPCkqKrwoaCg46ak45q55bCQ56ej5JS/5pq28KmyrfCpoqTopYPwp5+M8KehmOWbluSDn/ChmIrjpqHwo5yv8KiDqPChj4Xnhq3ojabwp6ed8KmGqOWpp+Syt/Cngq/wqKar8KenvfCnqIrwp6yL8Ke1pvCkhbrnrYPnpb7wqICJ5r618KqLn+aog/CojJjljqLwpriH6Y6/5qC26Z2d8KiFr/CogKPwpqa18KGPrfCjiK/wqIGI5baF8KiwsPCogoPlnJXpoKPwqKWJ5bar8KSmiOaWvuanleWPkvCkqqXwo76B47CR5py28KiCkPCog7TwqISu8KG+ofCohY8iXSxbIjlkNDAiLCLwqIaJ8KiGr/CoiJrwqIyG8KiMr/Cojorjl4rwqJGo8KiaquSjuuaPpvCopZbnoIjpiZXwqKa45I+y8Kinp+SPn/Cop6jwqK2G8KivlOWnuPCosInovIvwqL+F8KmDrOetkfCphJDwqYS847e38KmFnvCkq4rov5Dnio/lmovwqZOn8KmXqfCplrDwqZa48KmcsvCpo5HwqaWJ8KmlqvCpp4Pwqaio8KmsjvCptZrwqbab57qf8Km7uPCpvKPksqTplYfwqoqT54ai8KqLv+S2kemAkvCql4vktpzwoLKc6L6+5ZeBIl0sWyI5ZGExIiwi6L668KKSsOi+ufCkqpPklInnub/mvZbmqrHku6rjk6TwqKys8KeineOcuui6gPChn7XwqICk8KitrPCorpnwp6i+8Kaar+O3q/CnmZXwo7K38KWYtfClpZbkuprwpbqB8KaJmOWav/Cgua3ouI7lra3wo7qI8KSynuaPnuaLkPChn7bwoaG75pSw5Zit8KWxiuWQmvCljJHjt4bwqbaY5LG95Zii5Zie572J8KW7mOWltfCjtYDonbDkuJzwoL+q8KC1ifCjmrrohJfptZ7otJjnmLvpsYXnmY7nnrnpjYXlkLLohYjoi7flmKXohLLokJjogr3ll6rnpaLlmYPlkJbwoLqd45eO5ZiF5Zex5pux8KiLouOYreeUtOWXsOWWuuWSl+WVsvCgsYHwoLKW5buQ8KWFiPCgubbworGiIl0sWyI5ZTQwIiwi8KC6oum6q+e1muWXnvChgbXmip3pna3lkpTos43nh7bphbbmj7zmjrnmj77llanwoq2D6bGy8KK6s+WGmuOTn/CgtqflhqflkY3llJ7llJPnmabouK3wpqKK55ax6IK26KCE6J6G6KOH6Ia26JCc8KGDgeSTrOeMhPCknIblrpDojIvwpqKT5Zm78KKbtPCntK/wpIaj8Ke1s/Cmu5Dwp4q26YWw8KGHmemIiPCjs7zwqpqp8KC6rPCgu7nniabwobKi5J2O8KS/gvCnv7nwoL+r5IO6Il0sWyI5ZWExIiwi6bGd5pSf8KK2oOSjs/Ckn6DwqbW88KC/rPCguIrmgaLwp5aj8KC/rSJdLFsiOWVhZCIsIvCmgYjwoYaH54aj57qO6bWQ5Lia5LiE45W35ayN5rKy5Y2n45qs46ec5Y2945ql8KSYmOWimvCkra7oiK3lkYvlnqrwpaqV8KCluSJdLFsiOWVjNSIsIuOpkvCikaXnjbTwqbqs5LSJ6a+t8KOzvvCpvLDksZvwpL6p8KmWnvCpv57okZzwo7a28KeKsvCmnrPwo5yg5oyu57Sl8KO7t/CjuKzjqKrpgIjli4zjubTjmbrkl6nwoJKO55mA5auw8KC6tuehuvCnvK7loqfkgr/lmbzprovltbTnmZTwqpC06bqF5LOh55e545+75oSZ8KODmvCkj7IiXSxbIjllZjUiLCLlmZ3woYqp5Z6n8KSlo/CpuIbliLTwp4Ku45at5rGK6bW8Il0sWyI5ZjQwIiwi57GW6ay55Z+e8KGdrOWxk+aTk/Cpk5Dwpoy18KeFpOiarfCgtKjwprSi8KSrovCgtbEiXSxbIjlmNGYiLCLlh77wobyP5baO6ZyD8KG3kem6gemBjOesn+msguWzkeeuo+aJqOaMtemrv+evj+msquexvumsruexgueyhumwleevvOmsiem8l+mwm/CkpL7pvZrllbPlr4Pkv73pupjkv7LliaDjuIbli5HlnaflgZblprfluJLpn4jptqvovZzlkanpnrTppYDpnrrljKzmhLAiXSxbIjlmYTEiLCLmpKzlj5rpsIrptILksLvpmYHmpoDlgqbnlYbwoZ2t6aea5YmzIl0sWyI5ZmFlIiwi6YWZ6ZqB6YWcIl0sWyI5ZmIyIiwi6YWR8Ki6l+aNv/CmtKPmq4rlmJHpho7nlbrmioXwoI+8542P57Gw8KWwofCjs70iXSxbIjlmYzEiLCLwpKSZ55uW6a6d5Liq8KCzlOiOvuihgiJdLFsiOWZjOSIsIuWxiuangOWDreWduuWIn+W3teS7juawsfCgh7LkvLnlkpzlk5rliprotoLjl77lvIzjl7MiXSxbIjlmZGIiLCLmrZLphbzpvqXprpfpoK7porTpqrrpuqjpuoTnhbrnrJQiXSxbIjlmZTciLCLmr7rooJjnvbgiXSxbIjlmZWIiLCLlmKDwqpmK6Lm36b2TIl0sWyI5ZmYwIiwi6LeU6LmP6bic6LiB5oqC8KiNvei4qOi5teerk/CkqbfnqL7no5jms6roqafnmIciXSxbImEwNDAiLCLwqKma6bym5rOO6J+W55eD8KqKsuehk/CvoYDotIzni6LnjbHorK3njILnk7Hos6vwpKq76Jiv5b666KKg5JK3Il0sWyJhMDU1Iiwi8KGgu/CmuIUiXSxbImEwNTgiLCLoqb7wopSbIl0sWyJhMDViIiwi5oO955mn6auX6bWE6Y2u6a6P6J+1Il0sWyJhMDYzIiwi6KCP6LO354ys6Zyh6a6w45eW54qy5LCH57GR6aWK8KaFmeaFmeSwhOm6luaFvSJdLFsiYTA3MyIsIuWdn+aFr+aKpuaIueaLjuOpnOaHouWOqvCjj7XmjaTmoILjl5IiXSxbImEwYTEiLCLltZfwqK+C6L+a8Ki4uSJdLFsiYTBhNiIsIuWDmfChtYbnpIbljLLpmLjwoLy75IGlIl0sWyJhMGFlIiwi55++Il0sWyJhMGIwIiwi57OC8KW8muezmueoreiBpuiBo+e1jeeUheeTsuimlOiImuacjOiBovCnkobogZvnk7DohIPnnKToponwpp+M55WT8Ka7keieqeifjuiHiOiejOipieiyreitg+ecq+eTuOiTmuOYteamsui2piJdLFsiYTBkNCIsIuimqeeRqOa2ueifgfCkgJHnk6fjt5vnhbbmgqTmhpzjs5HnhaLmgbciXSxbImEwZTIiLCLnvbHwqKyt54mQ5oOp5K2+5Yig47CY8KOzh/Clu5fwp5mW8KWUsfChpYTwoYu+8Kmkg/Cmt5zwp4Kt5bOB8KaGrfCoqI/wo5m38KCDrvCmoYbwpLyO5JWi5ayf8KaNjOm9kOm6pvCmiasiXSxbImEzYzAiLCLikIAiLDMxLCLikKEiXSxbImM2YTEiLCLikaAiLDksIuKRtCIsOSwi4oWwIiw5LCLkuLbkuL/kuoXkuqDlhoLlhpblhqvli7nljLjljanljrblpIrlroDlt5vivLPlub/lu7TlvZDlvaHmlLTml6DnlpLnmbbovrXpmrbCqMuG44O944O+44Kd44Ke44CD5Lud44CF44CG44CH44O877y777y94py944GBIiwyM10sWyJjNzQwIiwi44GZIiw1OCwi44Kh44Ki44Kj44KkIl0sWyJjN2ExIiwi44KlIiw4MSwi0JAiLDUsItCB0JYiLDRdLFsiYzg0MCIsItCbIiwyNiwi0ZHQtiIsMjUsIuKHp+KGuOKGueOHj/Cgg4zkuZrwoIKK5YiC5JKRIl0sWyJjOGExIiwi6b6w5YaI6b6x8KeYhyJdLFsiYzhjZCIsIu+/ou+/pO+8h++8guOIseKEluKEoeOCm+OCnOK6gOK6hOK6huK6h+K6iOK6iuK6jOK6jeK6leK6nOK6neK6peK6p+K6quK6rOK6ruK6tuK6vOK6vuK7huK7iuK7jOK7jeK7j+K7luK7l+K7nuK7oyJdLFsiYzhmNSIsIsqDyZDJm8mUybXFk8O4xYvKismqIl0sWyJmOWZlIiwi77+tIl0sWyJmYTQwIiwi8KCVh+mLm/Cgl5/wo7+F6JWM5Iq154+v5Ya145mJ8KSlgvCop6TpjYTwoaeb6Iuu8KOziOegvOadhOaLn/CkpLPwqKaq8KCKoPCmrrPwoYyF5L6r8KKTreWAiPCmtKnwp6qE8KOYgPCkqrHwopST5YCp8KCNvuW+pPCgjoDwoI2H5rub8KCQn+WBveWEgeORuuWEjumhrOOdg+iQlvCkpqTwoJKH5YWg8KOOtOWFqvCgr7/wooO88KCLpfCilLDwoJaO8KOIs/ChpoPlroLonb3woJaz8KOymeWGsuWGuCJdLFsiZmFhMSIsIum0tOWHieWHj+WHkeOznOWHk/CkqqblhrPlh6LljYLlh63oj43mpL7wo5yt5b275YiL5Yim5Yi85Yq15YmX5YqU5Yq55YuF57CV6JWC5Yug6JiN8Kask+WMhfCoq57llYnmu5nwo76A8KCllPCjv6zljLPljYTwoK+i5rOL8KGcpuagm+ePleaBiuO6quOjjPChm6jnh53kkqLlja3ljbTwqJqr5Y2+5Y2/8KGWlvChmJPnn6bljpPwqKqb5Y6g5Y6r5Y6u546n8KWdsuO9meeOnOWPgeWPheaxieS5ieWfvuWPmeOqq/Cgro/lj6Dwo7+r8KK2o+WPtvCgsbflkJPngbnllKvmmZfmtZvlka3wpq2T8KC1tOWVneWSj+WSpOSepvChnI3woLud47a08KC1jSJdLFsiZmI0MCIsIvCoprzwopqY5ZWH5LOt5ZCv55CX5ZaG5Zap5ZiF8KGjl/CkgLrklZLwpJC15pqz8KGCtOWYt+abjfCjiormmqTmmq3lmY3lmY/no7Hlm7Hpnoflj77lnIDlm6/lm63wqK2m45ij8KGJj+WdhvCkhqXmsa7ngovlnYLjmrHwprG+5Z+m8KGQluWgg/ChkZTwpI2j5aCm8KSvteWhnOWiquOVoeWjoOWjnPChiLzlo7vlr7/lnYPwqoWQ8KSJuOmPk+OWoeWkn+aipuObg+a5mSJdLFsiZmJhMSIsIvChmL7lqKTllZPwoZqS6JSF5aeJ8KC1jvCmsoHwprSq8KGfnOWnmfChn7vwoZ6y8Ka2pua1sfChoKjwoZuV5ae58Ka5heWqq+Wpo+ObpvCkpqnlqbfjnIjlqpbnkaXlq5Pwpr6h8KKVlOO2hfChpJHjnLLwoZq45bqD5YuQ5a225paI5a288KeojuSAhOShnfCgiITlr5XmhaDwoai08KWnjPCglqXlr7Plrp3ktJDlsIXwoa2E5bCT54+O5bCU8KGypfCmrKjlsYnko53lsoXls6nls6/ltovwobe58KG4t+W0kOW0mOW1hvChuqTlsrrlt5foi7zjoK3wpKSB8KKBifCihbPoiofjoLbjr4LluK7mqorlubXlubrwpJK88KCzk+WOpuS6t+W7kOWOqPChnbHluInlu7TwqJKCIl0sWyJmYzQwIiwi5bu55bu746Kg5bu85qC+6ZCb5byN8KCHgfCvopTjq57koq7woYy65by68KaiiPCij5DlvZjwopGx5b2j6Z698Ka5ruW9sumNgPCoqLblvqfltrbjtZ/wpYmQ8KG9qvCng7jwopmo6YeW8KCKnvCoqKnmgLHmmoXwoaG346Wj47eH45i55Z6Q8KKetOelseO5gOaCnuaCpOaCs/CkpoLwpKaP8Kepk+eSpOWDoeWqoOaFpOiQpOaFgvCvoqbwpruS5oaB5Ye08KCZluaGh+WuqvCjvrciXSxbImZjYTEiLCLwoqGf5oeT8KiunfCppZ3mh5DjpLLwoqaA8KKjgeaAo+aFnOaUnuaOi/CghJjmi4XwoZ2w5ouV8KK4jeaNrPCkp5/jqJfmkLjmj7jwoY6O8KGfvOaSkOa+ivCiuLbpoJTwpIKM8KWcneaToeaTpemRu+OppuaQuuOpl+aVjea8lvCkqKjwpKij5paF5pWt5pWf8KOBvuaWtfCkpYDkrLfml5Hkg5jwoaCp5peg5pej5b+f8KOQgOaYmPCjh7fwo4e45pmE8KOGpPCjhqXmmYvwoLm15pmn8KWHpuaZs+aZtPChuL3wo4ix8KiXtPCjh4jwpYyT55+F8KKjt+mmpOacgvCkjpzwpKih46yr5qe68KOfguadnuadp+adovCkh43wqYOt5p+X5JOp5qCi5rmQ6Yi85qCB8KOPpvCmtqDmoZ0iXSxbImZkNDAiLCLwo5Gv5qeh5qiL8Kirn+als+ajg/Cjl43mpIHmpIDjtLLjqIHwo5i8466A5p6s5qWh8KipiuSLvOaktuammOOuofCgj4nojaPlgpDmp7nwo5mZ8KKEquaphfCjnIPmqp3jr7PmnrHmq4jwqYac47CN5qyd8KCko+aDnuasteattPCin43murXwo6ub8KCOtfChpZjjnYDlkKHwo62a5q+h8KO7vOavnOawt/CikovwpKOx8KatkeaxmuiIpuaxufCjtrzkk4Xwo7a98KSGpPCkpIzwpKSAIl0sWyJmZGExIiwi8KOzieObpeOzq/CgtLLproPwo4e58KKSkee+j+agt/CmtKXwprah8Ka3q+a2lua1nOa5vOa8hPCkpb/wpIKF8Ka5suiUs/CmvbTlh4fmspzmuJ3okK7wqKyh5riv8KO4r+eRk/CjvoLnp4zmuY/lqpHwo4GL5r+445yN5r6d8KO4sOa7uvChkpfwpIC95JWV6Y+w5r2E5r2c47WO5r208KmFsOO0u+a+n/CkhYTmv5PwpIKR8KSFlfCkgLnwo7+w8KO+tPCkhL/lh5/wpIWW8KSFl/CkhYDwpoed54GL54G+54Kn54KB54OM54OV54OW54Of5ISE47eo54a054aW8KSJt+eEq+eFheWqiOeFiueFruWynPCkjaXnhY/pjaLwpIuB54Ss8KSRmvCkqKfwpKii54a68KivqOeCveeIjiJdLFsiZmU0MCIsIumRgueIleWkkemRg+eIpOmNgfClmIXniK7niYDwpKW05qK954mV54mX47mV8KOBhOagjea8veeKgueMqueMq/CkoKPwqKCr5KOt8KighOeMqOeMruePj+eOqvCgsLrwpqiu54+J55GJ8KSHovChm6fwpKik5pij45uF8KSmt/Ckpo3wpKe754+355CV5qSD8KSopueQufCgl4Pju5fnkZzwoqKt55Gg8Ki6sueRh+ePpOeRtuiOueeRrOOcsOeRtOmPseaorOeSguSlk/CkqowiXSxbImZlYTEiLCLwpIWf8KSpufCoro/lrYbwqLCD8KGinueTiPChpojnlI7nk6nnlJ7wqLuZ8KGpi+Wvl/CouqzpjoXnlY3nlYrnlafnla7wpL6C47yE8KS0k+eWjueRneeWnueWtOeYgueYrOeZkeeZj+eZr+eZtvCmj7XnmpDoh6/jn7jwpqSR8Kakjueaoeeapeeat+ebjPCmvp/okaLwpYKd8KWFvfChuJznnJ7nnKbnnYDmkq/wpYig552Y8KOKrOeer/CopaTwqKWo8KGbgeeftOegifChjbbwpKiS5qOK56Kv56OH56OT6Zql56Su8KWXoOejl+ektOeisfCnmIzovrjoooTwqKyr8KaCg/CimJznpobopIDmpILnpoDwpaGX56ad8KesueekvOemqea4qvCnhKbjuqjnp4bwqYSN56eUIl1dCgovKioqLyB9KSwKLyogMTg1ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgp2YXIgQnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXIsCiAgICBUcmFuc2Zvcm0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KS5UcmFuc2Zvcm07CgoKLy8gPT0gRXhwb3J0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpY29udikgewogICAgCiAgICAvLyBBZGRpdGlvbmFsIFB1YmxpYyBBUEkuCiAgICBpY29udi5lbmNvZGVTdHJlYW0gPSBmdW5jdGlvbiBlbmNvZGVTdHJlYW0oZW5jb2RpbmcsIG9wdGlvbnMpIHsKICAgICAgICByZXR1cm4gbmV3IEljb252TGl0ZUVuY29kZXJTdHJlYW0oaWNvbnYuZ2V0RW5jb2RlcihlbmNvZGluZywgb3B0aW9ucyksIG9wdGlvbnMpOwogICAgfQoKICAgIGljb252LmRlY29kZVN0cmVhbSA9IGZ1bmN0aW9uIGRlY29kZVN0cmVhbShlbmNvZGluZywgb3B0aW9ucykgewogICAgICAgIHJldHVybiBuZXcgSWNvbnZMaXRlRGVjb2RlclN0cmVhbShpY29udi5nZXREZWNvZGVyKGVuY29kaW5nLCBvcHRpb25zKSwgb3B0aW9ucyk7CiAgICB9CgogICAgaWNvbnYuc3VwcG9ydHNTdHJlYW1zID0gdHJ1ZTsKCgogICAgLy8gTm90IHB1Ymxpc2hlZCB5ZXQuCiAgICBpY29udi5JY29udkxpdGVFbmNvZGVyU3RyZWFtID0gSWNvbnZMaXRlRW5jb2RlclN0cmVhbTsKICAgIGljb252Lkljb252TGl0ZURlY29kZXJTdHJlYW0gPSBJY29udkxpdGVEZWNvZGVyU3RyZWFtOwogICAgaWNvbnYuX2NvbGxlY3QgPSBJY29udkxpdGVEZWNvZGVyU3RyZWFtLnByb3RvdHlwZS5jb2xsZWN0Owp9OwoKCi8vID09IEVuY29kZXIgc3RyZWFtID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZnVuY3Rpb24gSWNvbnZMaXRlRW5jb2RlclN0cmVhbShjb252LCBvcHRpb25zKSB7CiAgICB0aGlzLmNvbnYgPSBjb252OwogICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgICBvcHRpb25zLmRlY29kZVN0cmluZ3MgPSBmYWxzZTsgLy8gV2UgYWNjZXB0IG9ubHkgc3RyaW5ncywgc28gd2UgZG9uJ3QgbmVlZCB0byBkZWNvZGUgdGhlbS4KICAgIFRyYW5zZm9ybS5jYWxsKHRoaXMsIG9wdGlvbnMpOwp9CgpJY29udkxpdGVFbmNvZGVyU3RyZWFtLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoVHJhbnNmb3JtLnByb3RvdHlwZSwgewogICAgY29uc3RydWN0b3I6IHsgdmFsdWU6IEljb252TGl0ZUVuY29kZXJTdHJlYW0gfQp9KTsKCkljb252TGl0ZUVuY29kZXJTdHJlYW0ucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbihjaHVuaywgZW5jb2RpbmcsIGRvbmUpIHsKICAgIGlmICh0eXBlb2YgY2h1bmsgIT0gJ3N0cmluZycpCiAgICAgICAgcmV0dXJuIGRvbmUobmV3IEVycm9yKCJJY29udiBlbmNvZGluZyBzdHJlYW0gbmVlZHMgc3RyaW5ncyBhcyBpdHMgaW5wdXQuIikpOwogICAgdHJ5IHsKICAgICAgICB2YXIgcmVzID0gdGhpcy5jb252LndyaXRlKGNodW5rKTsKICAgICAgICBpZiAocmVzICYmIHJlcy5sZW5ndGgpIHRoaXMucHVzaChyZXMpOwogICAgICAgIGRvbmUoKTsKICAgIH0KICAgIGNhdGNoIChlKSB7CiAgICAgICAgZG9uZShlKTsKICAgIH0KfQoKSWNvbnZMaXRlRW5jb2RlclN0cmVhbS5wcm90b3R5cGUuX2ZsdXNoID0gZnVuY3Rpb24oZG9uZSkgewogICAgdHJ5IHsKICAgICAgICB2YXIgcmVzID0gdGhpcy5jb252LmVuZCgpOwogICAgICAgIGlmIChyZXMgJiYgcmVzLmxlbmd0aCkgdGhpcy5wdXNoKHJlcyk7CiAgICAgICAgZG9uZSgpOwogICAgfQogICAgY2F0Y2ggKGUpIHsKICAgICAgICBkb25lKGUpOwogICAgfQp9CgpJY29udkxpdGVFbmNvZGVyU3RyZWFtLnByb3RvdHlwZS5jb2xsZWN0ID0gZnVuY3Rpb24oY2IpIHsKICAgIHZhciBjaHVua3MgPSBbXTsKICAgIHRoaXMub24oJ2Vycm9yJywgY2IpOwogICAgdGhpcy5vbignZGF0YScsIGZ1bmN0aW9uKGNodW5rKSB7IGNodW5rcy5wdXNoKGNodW5rKTsgfSk7CiAgICB0aGlzLm9uKCdlbmQnLCBmdW5jdGlvbigpIHsKICAgICAgICBjYihudWxsLCBCdWZmZXIuY29uY2F0KGNodW5rcykpOwogICAgfSk7CiAgICByZXR1cm4gdGhpczsKfQoKCi8vID09IERlY29kZXIgc3RyZWFtID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZnVuY3Rpb24gSWNvbnZMaXRlRGVjb2RlclN0cmVhbShjb252LCBvcHRpb25zKSB7CiAgICB0aGlzLmNvbnYgPSBjb252OwogICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgICBvcHRpb25zLmVuY29kaW5nID0gdGhpcy5lbmNvZGluZyA9ICd1dGY4JzsgLy8gV2Ugb3V0cHV0IHN0cmluZ3MuCiAgICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKTsKfQoKSWNvbnZMaXRlRGVjb2RlclN0cmVhbS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFRyYW5zZm9ybS5wcm90b3R5cGUsIHsKICAgIGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBJY29udkxpdGVEZWNvZGVyU3RyZWFtIH0KfSk7CgpJY29udkxpdGVEZWNvZGVyU3RyZWFtLnByb3RvdHlwZS5fdHJhbnNmb3JtID0gZnVuY3Rpb24oY2h1bmssIGVuY29kaW5nLCBkb25lKSB7CiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpCiAgICAgICAgcmV0dXJuIGRvbmUobmV3IEVycm9yKCJJY29udiBkZWNvZGluZyBzdHJlYW0gbmVlZHMgYnVmZmVycyBhcyBpdHMgaW5wdXQuIikpOwogICAgdHJ5IHsKICAgICAgICB2YXIgcmVzID0gdGhpcy5jb252LndyaXRlKGNodW5rKTsKICAgICAgICBpZiAocmVzICYmIHJlcy5sZW5ndGgpIHRoaXMucHVzaChyZXMsIHRoaXMuZW5jb2RpbmcpOwogICAgICAgIGRvbmUoKTsKICAgIH0KICAgIGNhdGNoIChlKSB7CiAgICAgICAgZG9uZShlKTsKICAgIH0KfQoKSWNvbnZMaXRlRGVjb2RlclN0cmVhbS5wcm90b3R5cGUuX2ZsdXNoID0gZnVuY3Rpb24oZG9uZSkgewogICAgdHJ5IHsKICAgICAgICB2YXIgcmVzID0gdGhpcy5jb252LmVuZCgpOwogICAgICAgIGlmIChyZXMgJiYgcmVzLmxlbmd0aCkgdGhpcy5wdXNoKHJlcywgdGhpcy5lbmNvZGluZyk7ICAgICAgICAgICAgICAgIAogICAgICAgIGRvbmUoKTsKICAgIH0KICAgIGNhdGNoIChlKSB7CiAgICAgICAgZG9uZShlKTsKICAgIH0KfQoKSWNvbnZMaXRlRGVjb2RlclN0cmVhbS5wcm90b3R5cGUuY29sbGVjdCA9IGZ1bmN0aW9uKGNiKSB7CiAgICB2YXIgcmVzID0gJyc7CiAgICB0aGlzLm9uKCdlcnJvcicsIGNiKTsKICAgIHRoaXMub24oJ2RhdGEnLCBmdW5jdGlvbihjaHVuaykgeyByZXMgKz0gY2h1bms7IH0pOwogICAgdGhpcy5vbignZW5kJywgZnVuY3Rpb24oKSB7CiAgICAgICAgY2IobnVsbCwgcmVzKTsKICAgIH0pOwogICAgcmV0dXJuIHRoaXM7Cn0KCgoKLyoqKi8gfSksCi8qIDE4NiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Cgp2YXIgQnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXI7CgovLyA9PSBFeHRlbmQgTm9kZSBwcmltaXRpdmVzIHRvIHVzZSBpY29udi1saXRlID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaWNvbnYpIHsKICAgIHZhciBvcmlnaW5hbCA9IHVuZGVmaW5lZDsgLy8gUGxhY2UgdG8ga2VlcCBvcmlnaW5hbCBtZXRob2RzLgoKICAgIC8vIE5vZGUgYXV0aG9ycyByZXdyb3RlIEJ1ZmZlciBpbnRlcm5hbHMgdG8gbWFrZSBpdCBjb21wYXRpYmxlIHdpdGgKICAgIC8vIFVpbnQ4QXJyYXkgYW5kIHdlIGNhbm5vdCBwYXRjaCBrZXkgZnVuY3Rpb25zIHNpbmNlIHRoZW4uCiAgICBpY29udi5zdXBwb3J0c05vZGVFbmNvZGluZ3NFeHRlbnNpb24gPSAhKG5ldyBCdWZmZXIoMCkgaW5zdGFuY2VvZiBVaW50OEFycmF5KTsKCiAgICBpY29udi5leHRlbmROb2RlRW5jb2RpbmdzID0gZnVuY3Rpb24gZXh0ZW5kTm9kZUVuY29kaW5ncygpIHsKICAgICAgICBpZiAob3JpZ2luYWwpIHJldHVybjsKICAgICAgICBvcmlnaW5hbCA9IHt9OwoKICAgICAgICBpZiAoIWljb252LnN1cHBvcnRzTm9kZUVuY29kaW5nc0V4dGVuc2lvbikgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKCJBQ1RJT04gTkVFREVEOiByZXF1aXJlKCdpY29udi1saXRlJykuZXh0ZW5kTm9kZUVuY29kaW5ncygpIGlzIG5vdCBzdXBwb3J0ZWQgaW4geW91ciB2ZXJzaW9uIG9mIE5vZGUiKTsKICAgICAgICAgICAgY29uc29sZS5lcnJvcigiU2VlIG1vcmUgaW5mbyBhdCBodHRwczovL2dpdGh1Yi5jb20vYXNodHVjaGtpbi9pY29udi1saXRlL3dpa2kvTm9kZS12NC1jb21wYXRpYmlsaXR5Iik7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHZhciBub2RlTmF0aXZlRW5jb2RpbmdzID0gewogICAgICAgICAgICAnaGV4JzogdHJ1ZSwgJ3V0ZjgnOiB0cnVlLCAndXRmLTgnOiB0cnVlLCAnYXNjaWknOiB0cnVlLCAnYmluYXJ5JzogdHJ1ZSwgCiAgICAgICAgICAgICdiYXNlNjQnOiB0cnVlLCAndWNzMic6IHRydWUsICd1Y3MtMic6IHRydWUsICd1dGYxNmxlJzogdHJ1ZSwgJ3V0Zi0xNmxlJzogdHJ1ZSwKICAgICAgICB9OwoKICAgICAgICBCdWZmZXIuaXNOYXRpdmVFbmNvZGluZyA9IGZ1bmN0aW9uKGVuYykgewogICAgICAgICAgICByZXR1cm4gZW5jICYmIG5vZGVOYXRpdmVFbmNvZGluZ3NbZW5jLnRvTG93ZXJDYXNlKCldOwogICAgICAgIH0KCiAgICAgICAgLy8gLS0gU2xvd0J1ZmZlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIHZhciBTbG93QnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKS5TbG93QnVmZmVyOwoKICAgICAgICBvcmlnaW5hbC5TbG93QnVmZmVyVG9TdHJpbmcgPSBTbG93QnVmZmVyLnByb3RvdHlwZS50b1N0cmluZzsKICAgICAgICBTbG93QnVmZmVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKGVuY29kaW5nLCBzdGFydCwgZW5kKSB7CiAgICAgICAgICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nIHx8ICd1dGY4JykudG9Mb3dlckNhc2UoKTsKCiAgICAgICAgICAgIC8vIFVzZSBuYXRpdmUgY29udmVyc2lvbiB3aGVuIHBvc3NpYmxlCiAgICAgICAgICAgIGlmIChCdWZmZXIuaXNOYXRpdmVFbmNvZGluZyhlbmNvZGluZykpCiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuU2xvd0J1ZmZlclRvU3RyaW5nLmNhbGwodGhpcywgZW5jb2RpbmcsIHN0YXJ0LCBlbmQpOwoKICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB1c2Ugb3VyIGRlY29kaW5nIG1ldGhvZC4KICAgICAgICAgICAgaWYgKHR5cGVvZiBzdGFydCA9PSAndW5kZWZpbmVkJykgc3RhcnQgPSAwOwogICAgICAgICAgICBpZiAodHlwZW9mIGVuZCA9PSAndW5kZWZpbmVkJykgZW5kID0gdGhpcy5sZW5ndGg7CiAgICAgICAgICAgIHJldHVybiBpY29udi5kZWNvZGUodGhpcy5zbGljZShzdGFydCwgZW5kKSwgZW5jb2RpbmcpOwogICAgICAgIH0KCiAgICAgICAgb3JpZ2luYWwuU2xvd0J1ZmZlcldyaXRlID0gU2xvd0J1ZmZlci5wcm90b3R5cGUud3JpdGU7CiAgICAgICAgU2xvd0J1ZmZlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykgewogICAgICAgICAgICAvLyBTdXBwb3J0IGJvdGggKHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKQogICAgICAgICAgICAvLyBhbmQgdGhlIGxlZ2FjeSAoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0LCBsZW5ndGgpCiAgICAgICAgICAgIGlmIChpc0Zpbml0ZShvZmZzZXQpKSB7CiAgICAgICAgICAgICAgICBpZiAoIWlzRmluaXRlKGxlbmd0aCkpIHsKICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyA9IGxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7ICAvLyBsZWdhY3kKICAgICAgICAgICAgICAgIHZhciBzd2FwID0gZW5jb2Rpbmc7CiAgICAgICAgICAgICAgICBlbmNvZGluZyA9IG9mZnNldDsKICAgICAgICAgICAgICAgIG9mZnNldCA9IGxlbmd0aDsKICAgICAgICAgICAgICAgIGxlbmd0aCA9IHN3YXA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG9mZnNldCA9ICtvZmZzZXQgfHwgMDsKICAgICAgICAgICAgdmFyIHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0OwogICAgICAgICAgICBpZiAoIWxlbmd0aCkgewogICAgICAgICAgICAgICAgbGVuZ3RoID0gcmVtYWluaW5nOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbGVuZ3RoID0gK2xlbmd0aDsKICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHsKICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSByZW1haW5pbmc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZW5jb2RpbmcgPSBTdHJpbmcoZW5jb2RpbmcgfHwgJ3V0ZjgnKS50b0xvd2VyQ2FzZSgpOwoKICAgICAgICAgICAgLy8gVXNlIG5hdGl2ZSBjb252ZXJzaW9uIHdoZW4gcG9zc2libGUKICAgICAgICAgICAgaWYgKEJ1ZmZlci5pc05hdGl2ZUVuY29kaW5nKGVuY29kaW5nKSkKICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbC5TbG93QnVmZmVyV3JpdGUuY2FsbCh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZyk7CgogICAgICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYXR0ZW1wdCB0byB3cml0ZSBiZXlvbmQgYnVmZmVyIGJvdW5kcycpOwoKICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB1c2Ugb3VyIGVuY29kaW5nIG1ldGhvZC4KICAgICAgICAgICAgdmFyIGJ1ZiA9IGljb252LmVuY29kZShzdHJpbmcsIGVuY29kaW5nKTsKICAgICAgICAgICAgaWYgKGJ1Zi5sZW5ndGggPCBsZW5ndGgpIGxlbmd0aCA9IGJ1Zi5sZW5ndGg7CiAgICAgICAgICAgIGJ1Zi5jb3B5KHRoaXMsIG9mZnNldCwgMCwgbGVuZ3RoKTsKICAgICAgICAgICAgcmV0dXJuIGxlbmd0aDsKICAgICAgICB9CgogICAgICAgIC8vIC0tIEJ1ZmZlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgb3JpZ2luYWwuQnVmZmVySXNFbmNvZGluZyA9IEJ1ZmZlci5pc0VuY29kaW5nOwogICAgICAgIEJ1ZmZlci5pc0VuY29kaW5nID0gZnVuY3Rpb24oZW5jb2RpbmcpIHsKICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5pc05hdGl2ZUVuY29kaW5nKGVuY29kaW5nKSB8fCBpY29udi5lbmNvZGluZ0V4aXN0cyhlbmNvZGluZyk7CiAgICAgICAgfQoKICAgICAgICBvcmlnaW5hbC5CdWZmZXJCeXRlTGVuZ3RoID0gQnVmZmVyLmJ5dGVMZW5ndGg7CiAgICAgICAgQnVmZmVyLmJ5dGVMZW5ndGggPSBTbG93QnVmZmVyLmJ5dGVMZW5ndGggPSBmdW5jdGlvbihzdHIsIGVuY29kaW5nKSB7CiAgICAgICAgICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nIHx8ICd1dGY4JykudG9Mb3dlckNhc2UoKTsKCiAgICAgICAgICAgIC8vIFVzZSBuYXRpdmUgY29udmVyc2lvbiB3aGVuIHBvc3NpYmxlCiAgICAgICAgICAgIGlmIChCdWZmZXIuaXNOYXRpdmVFbmNvZGluZyhlbmNvZGluZykpCiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuQnVmZmVyQnl0ZUxlbmd0aC5jYWxsKHRoaXMsIHN0ciwgZW5jb2RpbmcpOwoKICAgICAgICAgICAgLy8gU2xvdywgSSBrbm93LCBidXQgd2UgZG9uJ3QgaGF2ZSBhIGJldHRlciB3YXkgeWV0LgogICAgICAgICAgICByZXR1cm4gaWNvbnYuZW5jb2RlKHN0ciwgZW5jb2RpbmcpLmxlbmd0aDsKICAgICAgICB9CgogICAgICAgIG9yaWdpbmFsLkJ1ZmZlclRvU3RyaW5nID0gQnVmZmVyLnByb3RvdHlwZS50b1N0cmluZzsKICAgICAgICBCdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHsKICAgICAgICAgICAgZW5jb2RpbmcgPSBTdHJpbmcoZW5jb2RpbmcgfHwgJ3V0ZjgnKS50b0xvd2VyQ2FzZSgpOwoKICAgICAgICAgICAgLy8gVXNlIG5hdGl2ZSBjb252ZXJzaW9uIHdoZW4gcG9zc2libGUKICAgICAgICAgICAgaWYgKEJ1ZmZlci5pc05hdGl2ZUVuY29kaW5nKGVuY29kaW5nKSkKICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbC5CdWZmZXJUb1N0cmluZy5jYWxsKHRoaXMsIGVuY29kaW5nLCBzdGFydCwgZW5kKTsKCiAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgdXNlIG91ciBkZWNvZGluZyBtZXRob2QuCiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RhcnQgPT0gJ3VuZGVmaW5lZCcpIHN0YXJ0ID0gMDsKICAgICAgICAgICAgaWYgKHR5cGVvZiBlbmQgPT0gJ3VuZGVmaW5lZCcpIGVuZCA9IHRoaXMubGVuZ3RoOwogICAgICAgICAgICByZXR1cm4gaWNvbnYuZGVjb2RlKHRoaXMuc2xpY2Uoc3RhcnQsIGVuZCksIGVuY29kaW5nKTsKICAgICAgICB9CgogICAgICAgIG9yaWdpbmFsLkJ1ZmZlcldyaXRlID0gQnVmZmVyLnByb3RvdHlwZS53cml0ZTsKICAgICAgICBCdWZmZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCwgZW5jb2RpbmcpIHsKICAgICAgICAgICAgdmFyIF9vZmZzZXQgPSBvZmZzZXQsIF9sZW5ndGggPSBsZW5ndGgsIF9lbmNvZGluZyA9IGVuY29kaW5nOwogICAgICAgICAgICAvLyBTdXBwb3J0IGJvdGggKHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKQogICAgICAgICAgICAvLyBhbmQgdGhlIGxlZ2FjeSAoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0LCBsZW5ndGgpCiAgICAgICAgICAgIGlmIChpc0Zpbml0ZShvZmZzZXQpKSB7CiAgICAgICAgICAgICAgICBpZiAoIWlzRmluaXRlKGxlbmd0aCkpIHsKICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyA9IGxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7ICAvLyBsZWdhY3kKICAgICAgICAgICAgICAgIHZhciBzd2FwID0gZW5jb2Rpbmc7CiAgICAgICAgICAgICAgICBlbmNvZGluZyA9IG9mZnNldDsKICAgICAgICAgICAgICAgIG9mZnNldCA9IGxlbmd0aDsKICAgICAgICAgICAgICAgIGxlbmd0aCA9IHN3YXA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nIHx8ICd1dGY4JykudG9Mb3dlckNhc2UoKTsKCiAgICAgICAgICAgIC8vIFVzZSBuYXRpdmUgY29udmVyc2lvbiB3aGVuIHBvc3NpYmxlCiAgICAgICAgICAgIGlmIChCdWZmZXIuaXNOYXRpdmVFbmNvZGluZyhlbmNvZGluZykpCiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuQnVmZmVyV3JpdGUuY2FsbCh0aGlzLCBzdHJpbmcsIF9vZmZzZXQsIF9sZW5ndGgsIF9lbmNvZGluZyk7CgogICAgICAgICAgICBvZmZzZXQgPSArb2Zmc2V0IHx8IDA7CiAgICAgICAgICAgIHZhciByZW1haW5pbmcgPSB0aGlzLmxlbmd0aCAtIG9mZnNldDsKICAgICAgICAgICAgaWYgKCFsZW5ndGgpIHsKICAgICAgICAgICAgICAgIGxlbmd0aCA9IHJlbWFpbmluZzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGxlbmd0aCA9ICtsZW5ndGg7CiAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID4gcmVtYWluaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gcmVtYWluaW5nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYXR0ZW1wdCB0byB3cml0ZSBiZXlvbmQgYnVmZmVyIGJvdW5kcycpOwoKICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB1c2Ugb3VyIGVuY29kaW5nIG1ldGhvZC4KICAgICAgICAgICAgdmFyIGJ1ZiA9IGljb252LmVuY29kZShzdHJpbmcsIGVuY29kaW5nKTsKICAgICAgICAgICAgaWYgKGJ1Zi5sZW5ndGggPCBsZW5ndGgpIGxlbmd0aCA9IGJ1Zi5sZW5ndGg7CiAgICAgICAgICAgIGJ1Zi5jb3B5KHRoaXMsIG9mZnNldCwgMCwgbGVuZ3RoKTsKICAgICAgICAgICAgcmV0dXJuIGxlbmd0aDsKCiAgICAgICAgICAgIC8vIFRPRE86IFNldCBfY2hhcnNXcml0dGVuLgogICAgICAgIH0KCgogICAgICAgIC8vIC0tIFJlYWRhYmxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBpZiAoaWNvbnYuc3VwcG9ydHNTdHJlYW1zKSB7CiAgICAgICAgICAgIHZhciBSZWFkYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpLlJlYWRhYmxlOwoKICAgICAgICAgICAgb3JpZ2luYWwuUmVhZGFibGVTZXRFbmNvZGluZyA9IFJlYWRhYmxlLnByb3RvdHlwZS5zZXRFbmNvZGluZzsKICAgICAgICAgICAgUmVhZGFibGUucHJvdG90eXBlLnNldEVuY29kaW5nID0gZnVuY3Rpb24gc2V0RW5jb2RpbmcoZW5jLCBvcHRpb25zKSB7CiAgICAgICAgICAgICAgICAvLyBVc2Ugb3VyIG93biBkZWNvZGVyLCBpdCBoYXMgdGhlIHNhbWUgaW50ZXJmYWNlLgogICAgICAgICAgICAgICAgLy8gV2UgY2Fubm90IHVzZSBvcmlnaW5hbCBmdW5jdGlvbiBhcyBpdCBkb2Vzbid0IGhhbmRsZSBCT00tcy4KICAgICAgICAgICAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2RlciA9IGljb252LmdldERlY29kZXIoZW5jLCBvcHRpb25zKTsKICAgICAgICAgICAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2RpbmcgPSBlbmM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIFJlYWRhYmxlLnByb3RvdHlwZS5jb2xsZWN0ID0gaWNvbnYuX2NvbGxlY3Q7CiAgICAgICAgfQogICAgfQoKICAgIC8vIFJlbW92ZSBpY29udi1saXRlIE5vZGUgcHJpbWl0aXZlIGV4dGVuc2lvbnMuCiAgICBpY29udi51bmRvRXh0ZW5kTm9kZUVuY29kaW5ncyA9IGZ1bmN0aW9uIHVuZG9FeHRlbmROb2RlRW5jb2RpbmdzKCkgewogICAgICAgIGlmICghaWNvbnYuc3VwcG9ydHNOb2RlRW5jb2RpbmdzRXh0ZW5zaW9uKQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgaWYgKCFvcmlnaW5hbCkKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJyZXF1aXJlKCdpY29udi1saXRlJykudW5kb0V4dGVuZE5vZGVFbmNvZGluZ3MoKTogTm90aGluZyB0byB1bmRvOyBleHRlbmROb2RlRW5jb2RpbmdzKCkgaXMgbm90IGNhbGxlZC4iKQoKICAgICAgICBkZWxldGUgQnVmZmVyLmlzTmF0aXZlRW5jb2Rpbmc7CgogICAgICAgIHZhciBTbG93QnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKS5TbG93QnVmZmVyOwoKICAgICAgICBTbG93QnVmZmVyLnByb3RvdHlwZS50b1N0cmluZyA9IG9yaWdpbmFsLlNsb3dCdWZmZXJUb1N0cmluZzsKICAgICAgICBTbG93QnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IG9yaWdpbmFsLlNsb3dCdWZmZXJXcml0ZTsKCiAgICAgICAgQnVmZmVyLmlzRW5jb2RpbmcgPSBvcmlnaW5hbC5CdWZmZXJJc0VuY29kaW5nOwogICAgICAgIEJ1ZmZlci5ieXRlTGVuZ3RoID0gb3JpZ2luYWwuQnVmZmVyQnl0ZUxlbmd0aDsKICAgICAgICBCdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gb3JpZ2luYWwuQnVmZmVyVG9TdHJpbmc7CiAgICAgICAgQnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IG9yaWdpbmFsLkJ1ZmZlcldyaXRlOwoKICAgICAgICBpZiAoaWNvbnYuc3VwcG9ydHNTdHJlYW1zKSB7CiAgICAgICAgICAgIHZhciBSZWFkYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpLlJlYWRhYmxlOwoKICAgICAgICAgICAgUmVhZGFibGUucHJvdG90eXBlLnNldEVuY29kaW5nID0gb3JpZ2luYWwuUmVhZGFibGVTZXRFbmNvZGluZzsKICAgICAgICAgICAgZGVsZXRlIFJlYWRhYmxlLnByb3RvdHlwZS5jb2xsZWN0OwogICAgICAgIH0KCiAgICAgICAgb3JpZ2luYWwgPSB1bmRlZmluZWQ7CiAgICB9Cn0KCgovKioqLyB9KSwKLyogMTg3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS43LjEKKGZ1bmN0aW9uKCkgewogIHZhciBBcnJheVQsIExhenlBcnJheSwgTGF6eUFycmF5VCwgTnVtYmVyVCwgaW5zcGVjdCwgdXRpbHMsCiAgICBfX2hhc1Byb3AgPSB7fS5oYXNPd25Qcm9wZXJ0eSwKICAgIF9fZXh0ZW5kcyA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsgZm9yICh2YXIga2V5IGluIHBhcmVudCkgeyBpZiAoX19oYXNQcm9wLmNhbGwocGFyZW50LCBrZXkpKSBjaGlsZFtrZXldID0gcGFyZW50W2tleV07IH0gZnVuY3Rpb24gY3RvcigpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGNoaWxkOyB9IGN0b3IucHJvdG90eXBlID0gcGFyZW50LnByb3RvdHlwZTsgY2hpbGQucHJvdG90eXBlID0gbmV3IGN0b3IoKTsgY2hpbGQuX19zdXBlcl9fID0gcGFyZW50LnByb3RvdHlwZTsgcmV0dXJuIGNoaWxkOyB9OwoKICBBcnJheVQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkzKTsKCiAgTnVtYmVyVCA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpLk51bWJlcjsKCiAgdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTsKCiAgaW5zcGVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oNDkpLmluc3BlY3Q7CgogIExhenlBcnJheVQgPSAoZnVuY3Rpb24oX3N1cGVyKSB7CiAgICBfX2V4dGVuZHMoTGF6eUFycmF5VCwgX3N1cGVyKTsKCiAgICBmdW5jdGlvbiBMYXp5QXJyYXlUKCkgewogICAgICByZXR1cm4gTGF6eUFycmF5VC5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgIH0KCiAgICBMYXp5QXJyYXlULnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIHBhcmVudCkgewogICAgICB2YXIgbGVuZ3RoLCBwb3MsIHJlczsKICAgICAgcG9zID0gc3RyZWFtLnBvczsKICAgICAgbGVuZ3RoID0gdXRpbHMucmVzb2x2ZUxlbmd0aCh0aGlzLmxlbmd0aCwgc3RyZWFtLCBwYXJlbnQpOwogICAgICBpZiAodGhpcy5sZW5ndGggaW5zdGFuY2VvZiBOdW1iZXJUKSB7CiAgICAgICAgcGFyZW50ID0gewogICAgICAgICAgcGFyZW50OiBwYXJlbnQsCiAgICAgICAgICBfc3RhcnRPZmZzZXQ6IHBvcywKICAgICAgICAgIF9jdXJyZW50T2Zmc2V0OiAwLAogICAgICAgICAgX2xlbmd0aDogbGVuZ3RoCiAgICAgICAgfTsKICAgICAgfQogICAgICByZXMgPSBuZXcgTGF6eUFycmF5KHRoaXMudHlwZSwgbGVuZ3RoLCBzdHJlYW0sIHBhcmVudCk7CiAgICAgIHN0cmVhbS5wb3MgKz0gbGVuZ3RoICogdGhpcy50eXBlLnNpemUobnVsbCwgcGFyZW50KTsKICAgICAgcmV0dXJuIHJlczsKICAgIH07CgogICAgTGF6eUFycmF5VC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKHZhbCwgY3R4KSB7CiAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBMYXp5QXJyYXkpIHsKICAgICAgICB2YWwgPSB2YWwudG9BcnJheSgpOwogICAgICB9CiAgICAgIHJldHVybiBMYXp5QXJyYXlULl9fc3VwZXJfXy5zaXplLmNhbGwodGhpcywgdmFsLCBjdHgpOwogICAgfTsKCiAgICBMYXp5QXJyYXlULnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIHZhbCwgY3R4KSB7CiAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBMYXp5QXJyYXkpIHsKICAgICAgICB2YWwgPSB2YWwudG9BcnJheSgpOwogICAgICB9CiAgICAgIHJldHVybiBMYXp5QXJyYXlULl9fc3VwZXJfXy5lbmNvZGUuY2FsbCh0aGlzLCBzdHJlYW0sIHZhbCwgY3R4KTsKICAgIH07CgogICAgcmV0dXJuIExhenlBcnJheVQ7CgogIH0pKEFycmF5VCk7CgogIExhenlBcnJheSA9IChmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIExhenlBcnJheSh0eXBlLCBsZW5ndGgsIHN0cmVhbSwgY3R4KSB7CiAgICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoOwogICAgICB0aGlzLnN0cmVhbSA9IHN0cmVhbTsKICAgICAgdGhpcy5jdHggPSBjdHg7CiAgICAgIHRoaXMuYmFzZSA9IHRoaXMuc3RyZWFtLnBvczsKICAgICAgdGhpcy5pdGVtcyA9IFtdOwogICAgfQoKICAgIExhenlBcnJheS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oaW5kZXgpIHsKICAgICAgdmFyIHBvczsKICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLmxlbmd0aCkgewogICAgICAgIHJldHVybiB2b2lkIDA7CiAgICAgIH0KICAgICAgaWYgKHRoaXMuaXRlbXNbaW5kZXhdID09IG51bGwpIHsKICAgICAgICBwb3MgPSB0aGlzLnN0cmVhbS5wb3M7CiAgICAgICAgdGhpcy5zdHJlYW0ucG9zID0gdGhpcy5iYXNlICsgdGhpcy50eXBlLnNpemUobnVsbCwgdGhpcy5jdHgpICogaW5kZXg7CiAgICAgICAgdGhpcy5pdGVtc1tpbmRleF0gPSB0aGlzLnR5cGUuZGVjb2RlKHRoaXMuc3RyZWFtLCB0aGlzLmN0eCk7CiAgICAgICAgdGhpcy5zdHJlYW0ucG9zID0gcG9zOwogICAgICB9CiAgICAgIHJldHVybiB0aGlzLml0ZW1zW2luZGV4XTsKICAgIH07CgogICAgTGF6eUFycmF5LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBpLCBfaSwgX3JlZiwgX3Jlc3VsdHM7CiAgICAgIF9yZXN1bHRzID0gW107CiAgICAgIGZvciAoaSA9IF9pID0gMCwgX3JlZiA9IHRoaXMubGVuZ3RoOyBfaSA8IF9yZWY7IGkgPSBfaSArPSAxKSB7CiAgICAgICAgX3Jlc3VsdHMucHVzaCh0aGlzLmdldChpKSk7CiAgICAgIH0KICAgICAgcmV0dXJuIF9yZXN1bHRzOwogICAgfTsKCiAgICBMYXp5QXJyYXkucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIGluc3BlY3QodGhpcy50b0FycmF5KCkpOwogICAgfTsKCiAgICByZXR1cm4gTGF6eUFycmF5OwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IExhenlBcnJheVQ7Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiAxODggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjcuMQooZnVuY3Rpb24oKSB7CiAgdmFyIEJpdGZpZWxkOwoKICBCaXRmaWVsZCA9IChmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIEJpdGZpZWxkKHR5cGUsIGZsYWdzKSB7CiAgICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgICAgIHRoaXMuZmxhZ3MgPSBmbGFncyAhPSBudWxsID8gZmxhZ3MgOiBbXTsKICAgIH0KCiAgICBCaXRmaWVsZC5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24oc3RyZWFtKSB7CiAgICAgIHZhciBmbGFnLCBpLCByZXMsIHZhbCwgX2ksIF9sZW4sIF9yZWY7CiAgICAgIHZhbCA9IHRoaXMudHlwZS5kZWNvZGUoc3RyZWFtKTsKICAgICAgcmVzID0ge307CiAgICAgIF9yZWYgPSB0aGlzLmZsYWdzOwogICAgICBmb3IgKGkgPSBfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBpID0gKytfaSkgewogICAgICAgIGZsYWcgPSBfcmVmW2ldOwogICAgICAgIGlmIChmbGFnICE9IG51bGwpIHsKICAgICAgICAgIHJlc1tmbGFnXSA9ICEhKHZhbCAmICgxIDw8IGkpKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHJlczsKICAgIH07CgogICAgQml0ZmllbGQucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMudHlwZS5zaXplKCk7CiAgICB9OwoKICAgIEJpdGZpZWxkLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIGtleXMpIHsKICAgICAgdmFyIGZsYWcsIGksIHZhbCwgX2ksIF9sZW4sIF9yZWY7CiAgICAgIHZhbCA9IDA7CiAgICAgIF9yZWYgPSB0aGlzLmZsYWdzOwogICAgICBmb3IgKGkgPSBfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBpID0gKytfaSkgewogICAgICAgIGZsYWcgPSBfcmVmW2ldOwogICAgICAgIGlmIChmbGFnICE9IG51bGwpIHsKICAgICAgICAgIGlmIChrZXlzW2ZsYWddKSB7CiAgICAgICAgICAgIHZhbCB8PSAxIDw8IGk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB0aGlzLnR5cGUuZW5jb2RlKHN0cmVhbSwgdmFsKTsKICAgIH07CgogICAgcmV0dXJuIEJpdGZpZWxkOwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IEJpdGZpZWxkOwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMTg5ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS43LjEKKGZ1bmN0aW9uKCkgewogIHZhciBCb29sZWFuVDsKCiAgQm9vbGVhblQgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBCb29sZWFuVCh0eXBlKSB7CiAgICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgICB9CgogICAgQm9vbGVhblQucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uKHN0cmVhbSwgcGFyZW50KSB7CiAgICAgIHJldHVybiAhIXRoaXMudHlwZS5kZWNvZGUoc3RyZWFtLCBwYXJlbnQpOwogICAgfTsKCiAgICBCb29sZWFuVC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKHZhbCwgcGFyZW50KSB7CiAgICAgIHJldHVybiB0aGlzLnR5cGUuc2l6ZSh2YWwsIHBhcmVudCk7CiAgICB9OwoKICAgIEJvb2xlYW5ULnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIHZhbCwgcGFyZW50KSB7CiAgICAgIHJldHVybiB0aGlzLnR5cGUuZW5jb2RlKHN0cmVhbSwgK3ZhbCwgcGFyZW50KTsKICAgIH07CgogICAgcmV0dXJuIEJvb2xlYW5UOwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IEJvb2xlYW5UOwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMTkwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS43LjEKKGZ1bmN0aW9uKCkgewogIHZhciBCdWZmZXJULCBOdW1iZXJULCB1dGlsczsKCiAgdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTsKCiAgTnVtYmVyVCA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpLk51bWJlcjsKCiAgQnVmZmVyVCA9IChmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIEJ1ZmZlclQobGVuZ3RoKSB7CiAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoOwogICAgfQoKICAgIEJ1ZmZlclQucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uKHN0cmVhbSwgcGFyZW50KSB7CiAgICAgIHZhciBsZW5ndGg7CiAgICAgIGxlbmd0aCA9IHV0aWxzLnJlc29sdmVMZW5ndGgodGhpcy5sZW5ndGgsIHN0cmVhbSwgcGFyZW50KTsKICAgICAgcmV0dXJuIHN0cmVhbS5yZWFkQnVmZmVyKGxlbmd0aCk7CiAgICB9OwoKICAgIEJ1ZmZlclQucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbih2YWwsIHBhcmVudCkgewogICAgICBpZiAoIXZhbCkgewogICAgICAgIHJldHVybiB1dGlscy5yZXNvbHZlTGVuZ3RoKHRoaXMubGVuZ3RoLCBudWxsLCBwYXJlbnQpOwogICAgICB9CiAgICAgIHJldHVybiB2YWwubGVuZ3RoOwogICAgfTsKCiAgICBCdWZmZXJULnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIGJ1ZiwgcGFyZW50KSB7CiAgICAgIGlmICh0aGlzLmxlbmd0aCBpbnN0YW5jZW9mIE51bWJlclQpIHsKICAgICAgICB0aGlzLmxlbmd0aC5lbmNvZGUoc3RyZWFtLCBidWYubGVuZ3RoKTsKICAgICAgfQogICAgICByZXR1cm4gc3RyZWFtLndyaXRlQnVmZmVyKGJ1Zik7CiAgICB9OwoKICAgIHJldHVybiBCdWZmZXJUOwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IEJ1ZmZlclQ7Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiAxOTEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjcuMQooZnVuY3Rpb24oKSB7CiAgdmFyIEVudW07CgogIEVudW0gPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBFbnVtKHR5cGUsIG9wdGlvbnMpIHsKICAgICAgdGhpcy50eXBlID0gdHlwZTsKICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyAhPSBudWxsID8gb3B0aW9ucyA6IFtdOwogICAgfQoKICAgIEVudW0ucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uKHN0cmVhbSkgewogICAgICB2YXIgaW5kZXg7CiAgICAgIGluZGV4ID0gdGhpcy50eXBlLmRlY29kZShzdHJlYW0pOwogICAgICByZXR1cm4gdGhpcy5vcHRpb25zW2luZGV4XSB8fCBpbmRleDsKICAgIH07CgogICAgRW51bS5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy50eXBlLnNpemUoKTsKICAgIH07CgogICAgRW51bS5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24oc3RyZWFtLCB2YWwpIHsKICAgICAgdmFyIGluZGV4OwogICAgICBpbmRleCA9IHRoaXMub3B0aW9ucy5pbmRleE9mKHZhbCk7CiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gb3B0aW9uIGluIGVudW06ICIgKyB2YWwpOwogICAgICB9CiAgICAgIHJldHVybiB0aGlzLnR5cGUuZW5jb2RlKHN0cmVhbSwgaW5kZXgpOwogICAgfTsKCiAgICByZXR1cm4gRW51bTsKCiAgfSkoKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBFbnVtOwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMTkyICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS43LjEKKGZ1bmN0aW9uKCkgewogIHZhciBPcHRpb25hbDsKCiAgT3B0aW9uYWwgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBPcHRpb25hbCh0eXBlLCBjb25kaXRpb24pIHsKICAgICAgdGhpcy50eXBlID0gdHlwZTsKICAgICAgdGhpcy5jb25kaXRpb24gPSBjb25kaXRpb24gIT0gbnVsbCA/IGNvbmRpdGlvbiA6IHRydWU7CiAgICB9CgogICAgT3B0aW9uYWwucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uKHN0cmVhbSwgcGFyZW50KSB7CiAgICAgIHZhciBjb25kaXRpb247CiAgICAgIGNvbmRpdGlvbiA9IHRoaXMuY29uZGl0aW9uOwogICAgICBpZiAodHlwZW9mIGNvbmRpdGlvbiA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIGNvbmRpdGlvbiA9IGNvbmRpdGlvbi5jYWxsKHBhcmVudCwgcGFyZW50KTsKICAgICAgfQogICAgICBpZiAoY29uZGl0aW9uKSB7CiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS5kZWNvZGUoc3RyZWFtLCBwYXJlbnQpOwogICAgICB9CiAgICB9OwoKICAgIE9wdGlvbmFsLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24odmFsLCBwYXJlbnQpIHsKICAgICAgdmFyIGNvbmRpdGlvbjsKICAgICAgY29uZGl0aW9uID0gdGhpcy5jb25kaXRpb247CiAgICAgIGlmICh0eXBlb2YgY29uZGl0aW9uID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgY29uZGl0aW9uID0gY29uZGl0aW9uLmNhbGwocGFyZW50LCBwYXJlbnQpOwogICAgICB9CiAgICAgIGlmIChjb25kaXRpb24pIHsKICAgICAgICByZXR1cm4gdGhpcy50eXBlLnNpemUodmFsLCBwYXJlbnQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAwOwogICAgICB9CiAgICB9OwoKICAgIE9wdGlvbmFsLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIHZhbCwgcGFyZW50KSB7CiAgICAgIHZhciBjb25kaXRpb247CiAgICAgIGNvbmRpdGlvbiA9IHRoaXMuY29uZGl0aW9uOwogICAgICBpZiAodHlwZW9mIGNvbmRpdGlvbiA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIGNvbmRpdGlvbiA9IGNvbmRpdGlvbi5jYWxsKHBhcmVudCwgcGFyZW50KTsKICAgICAgfQogICAgICBpZiAoY29uZGl0aW9uKSB7CiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS5lbmNvZGUoc3RyZWFtLCB2YWwsIHBhcmVudCk7CiAgICAgIH0KICAgIH07CgogICAgcmV0dXJuIE9wdGlvbmFsOwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IE9wdGlvbmFsOwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMTkzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS43LjEKKGZ1bmN0aW9uKCkgewogIHZhciBSZXNlcnZlZCwgdXRpbHM7CgogIHV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7CgogIFJlc2VydmVkID0gKGZ1bmN0aW9uKCkgewogICAgZnVuY3Rpb24gUmVzZXJ2ZWQodHlwZSwgY291bnQpIHsKICAgICAgdGhpcy50eXBlID0gdHlwZTsKICAgICAgdGhpcy5jb3VudCA9IGNvdW50ICE9IG51bGwgPyBjb3VudCA6IDE7CiAgICB9CgogICAgUmVzZXJ2ZWQucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uKHN0cmVhbSwgcGFyZW50KSB7CiAgICAgIHN0cmVhbS5wb3MgKz0gdGhpcy5zaXplKG51bGwsIHBhcmVudCk7CiAgICAgIHJldHVybiB2b2lkIDA7CiAgICB9OwoKICAgIFJlc2VydmVkLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24oZGF0YSwgcGFyZW50KSB7CiAgICAgIHZhciBjb3VudDsKICAgICAgY291bnQgPSB1dGlscy5yZXNvbHZlTGVuZ3RoKHRoaXMuY291bnQsIG51bGwsIHBhcmVudCk7CiAgICAgIHJldHVybiB0aGlzLnR5cGUuc2l6ZSgpICogY291bnQ7CiAgICB9OwoKICAgIFJlc2VydmVkLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIHZhbCwgcGFyZW50KSB7CiAgICAgIHJldHVybiBzdHJlYW0uZmlsbCgwLCB0aGlzLnNpemUodmFsLCBwYXJlbnQpKTsKICAgIH07CgogICAgcmV0dXJuIFJlc2VydmVkOwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IFJlc2VydmVkOwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMTk0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihCdWZmZXIpIHsvLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuNy4xCihmdW5jdGlvbigpIHsKICB2YXIgTnVtYmVyVCwgU3RyaW5nVCwgdXRpbHM7CgogIE51bWJlclQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKS5OdW1iZXI7CgogIHV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7CgogIFN0cmluZ1QgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBTdHJpbmdUKGxlbmd0aCwgZW5jb2RpbmcpIHsKICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7CiAgICAgIHRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZyAhPSBudWxsID8gZW5jb2RpbmcgOiAnYXNjaWknOwogICAgfQoKICAgIFN0cmluZ1QucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uKHN0cmVhbSwgcGFyZW50KSB7CiAgICAgIHZhciBidWZmZXIsIGVuY29kaW5nLCBsZW5ndGgsIHBvcywgc3RyaW5nOwogICAgICBsZW5ndGggPSAoZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKHRoaXMubGVuZ3RoICE9IG51bGwpIHsKICAgICAgICAgIHJldHVybiB1dGlscy5yZXNvbHZlTGVuZ3RoKHRoaXMubGVuZ3RoLCBzdHJlYW0sIHBhcmVudCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGJ1ZmZlciA9IHN0cmVhbS5idWZmZXIsIGxlbmd0aCA9IHN0cmVhbS5sZW5ndGgsIHBvcyA9IHN0cmVhbS5wb3M7CiAgICAgICAgICB3aGlsZSAocG9zIDwgbGVuZ3RoICYmIGJ1ZmZlcltwb3NdICE9PSAweDAwKSB7CiAgICAgICAgICAgICsrcG9zOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHBvcyAtIHN0cmVhbS5wb3M7CiAgICAgICAgfQogICAgICB9KS5jYWxsKHRoaXMpOwogICAgICBlbmNvZGluZyA9IHRoaXMuZW5jb2Rpbmc7CiAgICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICBlbmNvZGluZyA9IGVuY29kaW5nLmNhbGwocGFyZW50LCBwYXJlbnQpIHx8ICdhc2NpaSc7CiAgICAgIH0KICAgICAgc3RyaW5nID0gc3RyZWFtLnJlYWRTdHJpbmcobGVuZ3RoLCBlbmNvZGluZyk7CiAgICAgIGlmICgodGhpcy5sZW5ndGggPT0gbnVsbCkgJiYgc3RyZWFtLnBvcyA8IHN0cmVhbS5sZW5ndGgpIHsKICAgICAgICBzdHJlYW0ucG9zKys7CiAgICAgIH0KICAgICAgcmV0dXJuIHN0cmluZzsKICAgIH07CgogICAgU3RyaW5nVC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKHZhbCwgcGFyZW50KSB7CiAgICAgIHZhciBlbmNvZGluZywgc2l6ZTsKICAgICAgaWYgKCF2YWwpIHsKICAgICAgICByZXR1cm4gdXRpbHMucmVzb2x2ZUxlbmd0aCh0aGlzLmxlbmd0aCwgbnVsbCwgcGFyZW50KTsKICAgICAgfQogICAgICBlbmNvZGluZyA9IHRoaXMuZW5jb2Rpbmc7CiAgICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICBlbmNvZGluZyA9IGVuY29kaW5nLmNhbGwocGFyZW50ICE9IG51bGwgPyBwYXJlbnQudmFsIDogdm9pZCAwLCBwYXJlbnQgIT0gbnVsbCA/IHBhcmVudC52YWwgOiB2b2lkIDApIHx8ICdhc2NpaSc7CiAgICAgIH0KICAgICAgaWYgKGVuY29kaW5nID09PSAndXRmMTZiZScpIHsKICAgICAgICBlbmNvZGluZyA9ICd1dGYxNmxlJzsKICAgICAgfQogICAgICBzaXplID0gQnVmZmVyLmJ5dGVMZW5ndGgodmFsLCBlbmNvZGluZyk7CiAgICAgIGlmICh0aGlzLmxlbmd0aCBpbnN0YW5jZW9mIE51bWJlclQpIHsKICAgICAgICBzaXplICs9IHRoaXMubGVuZ3RoLnNpemUoKTsKICAgICAgfQogICAgICBpZiAodGhpcy5sZW5ndGggPT0gbnVsbCkgewogICAgICAgIHNpemUrKzsKICAgICAgfQogICAgICByZXR1cm4gc2l6ZTsKICAgIH07CgogICAgU3RyaW5nVC5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24oc3RyZWFtLCB2YWwsIHBhcmVudCkgewogICAgICB2YXIgZW5jb2Rpbmc7CiAgICAgIGVuY29kaW5nID0gdGhpcy5lbmNvZGluZzsKICAgICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcuY2FsbChwYXJlbnQgIT0gbnVsbCA/IHBhcmVudC52YWwgOiB2b2lkIDAsIHBhcmVudCAhPSBudWxsID8gcGFyZW50LnZhbCA6IHZvaWQgMCkgfHwgJ2FzY2lpJzsKICAgICAgfQogICAgICBpZiAodGhpcy5sZW5ndGggaW5zdGFuY2VvZiBOdW1iZXJUKSB7CiAgICAgICAgdGhpcy5sZW5ndGguZW5jb2RlKHN0cmVhbSwgQnVmZmVyLmJ5dGVMZW5ndGgodmFsLCBlbmNvZGluZykpOwogICAgICB9CiAgICAgIHN0cmVhbS53cml0ZVN0cmluZyh2YWwsIGVuY29kaW5nKTsKICAgICAgaWYgKHRoaXMubGVuZ3RoID09IG51bGwpIHsKICAgICAgICByZXR1cm4gc3RyZWFtLndyaXRlVUludDgoMHgwMCk7CiAgICAgIH0KICAgIH07CgogICAgcmV0dXJuIFN0cmluZ1Q7CgogIH0pKCk7CgogIG1vZHVsZS5leHBvcnRzID0gU3RyaW5nVDsKCn0pLmNhbGwodGhpcyk7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXIpKQoKLyoqKi8gfSksCi8qIDE5NSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuNy4xCihmdW5jdGlvbigpIHsKICB2YXIgU3RydWN0LCBWZXJzaW9uZWRTdHJ1Y3QsCiAgICBfX2hhc1Byb3AgPSB7fS5oYXNPd25Qcm9wZXJ0eSwKICAgIF9fZXh0ZW5kcyA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsgZm9yICh2YXIga2V5IGluIHBhcmVudCkgeyBpZiAoX19oYXNQcm9wLmNhbGwocGFyZW50LCBrZXkpKSBjaGlsZFtrZXldID0gcGFyZW50W2tleV07IH0gZnVuY3Rpb24gY3RvcigpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGNoaWxkOyB9IGN0b3IucHJvdG90eXBlID0gcGFyZW50LnByb3RvdHlwZTsgY2hpbGQucHJvdG90eXBlID0gbmV3IGN0b3IoKTsgY2hpbGQuX19zdXBlcl9fID0gcGFyZW50LnByb3RvdHlwZTsgcmV0dXJuIGNoaWxkOyB9OwoKICBTdHJ1Y3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk0KTsKCiAgVmVyc2lvbmVkU3RydWN0ID0gKGZ1bmN0aW9uKF9zdXBlcikgewogICAgX19leHRlbmRzKFZlcnNpb25lZFN0cnVjdCwgX3N1cGVyKTsKCiAgICBmdW5jdGlvbiBWZXJzaW9uZWRTdHJ1Y3QodHlwZSwgdmVyc2lvbnMpIHsKICAgICAgdGhpcy50eXBlID0gdHlwZTsKICAgICAgdGhpcy52ZXJzaW9ucyA9IHZlcnNpb25zICE9IG51bGwgPyB2ZXJzaW9ucyA6IHt9OwogICAgICBpZiAodHlwZW9mIHRoaXMudHlwZSA9PT0gJ3N0cmluZycpIHsKICAgICAgICB0aGlzLnZlcnNpb25HZXR0ZXIgPSBuZXcgRnVuY3Rpb24oJ3BhcmVudCcsICJyZXR1cm4gcGFyZW50LiIgKyB0aGlzLnR5cGUpOwogICAgICAgIHRoaXMudmVyc2lvblNldHRlciA9IG5ldyBGdW5jdGlvbigncGFyZW50JywgJ3ZlcnNpb24nLCAicmV0dXJuIHBhcmVudC4iICsgdGhpcy50eXBlICsgIiA9IHZlcnNpb24iKTsKICAgICAgfQogICAgfQoKICAgIFZlcnNpb25lZFN0cnVjdC5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24oc3RyZWFtLCBwYXJlbnQsIGxlbmd0aCkgewogICAgICB2YXIgZmllbGRzLCByZXMsIF9yZWY7CiAgICAgIGlmIChsZW5ndGggPT0gbnVsbCkgewogICAgICAgIGxlbmd0aCA9IDA7CiAgICAgIH0KICAgICAgcmVzID0gdGhpcy5fc2V0dXAoc3RyZWFtLCBwYXJlbnQsIGxlbmd0aCk7CiAgICAgIGlmICh0eXBlb2YgdGhpcy50eXBlID09PSAnc3RyaW5nJykgewogICAgICAgIHJlcy52ZXJzaW9uID0gdGhpcy52ZXJzaW9uR2V0dGVyKHBhcmVudCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmVzLnZlcnNpb24gPSB0aGlzLnR5cGUuZGVjb2RlKHN0cmVhbSk7CiAgICAgIH0KICAgICAgaWYgKHRoaXMudmVyc2lvbnMuaGVhZGVyKSB7CiAgICAgICAgdGhpcy5fcGFyc2VGaWVsZHMoc3RyZWFtLCByZXMsIHRoaXMudmVyc2lvbnMuaGVhZGVyKTsKICAgICAgfQogICAgICBmaWVsZHMgPSB0aGlzLnZlcnNpb25zW3Jlcy52ZXJzaW9uXTsKICAgICAgaWYgKGZpZWxkcyA9PSBudWxsKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHZlcnNpb24gIiArIHJlcy52ZXJzaW9uKTsKICAgICAgfQogICAgICBpZiAoZmllbGRzIGluc3RhbmNlb2YgVmVyc2lvbmVkU3RydWN0KSB7CiAgICAgICAgcmV0dXJuIGZpZWxkcy5kZWNvZGUoc3RyZWFtLCBwYXJlbnQpOwogICAgICB9CiAgICAgIHRoaXMuX3BhcnNlRmllbGRzKHN0cmVhbSwgcmVzLCBmaWVsZHMpOwogICAgICBpZiAoKF9yZWYgPSB0aGlzLnByb2Nlc3MpICE9IG51bGwpIHsKICAgICAgICBfcmVmLmNhbGwocmVzLCBzdHJlYW0pOwogICAgICB9CiAgICAgIHJldHVybiByZXM7CiAgICB9OwoKICAgIFZlcnNpb25lZFN0cnVjdC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKHZhbCwgcGFyZW50LCBpbmNsdWRlUG9pbnRlcnMpIHsKICAgICAgdmFyIGN0eCwgZmllbGRzLCBrZXksIHNpemUsIHR5cGUsIF9yZWY7CiAgICAgIGlmIChpbmNsdWRlUG9pbnRlcnMgPT0gbnVsbCkgewogICAgICAgIGluY2x1ZGVQb2ludGVycyA9IHRydWU7CiAgICAgIH0KICAgICAgaWYgKCF2YWwpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBhIGZpeGVkIHNpemUnKTsKICAgICAgfQogICAgICBjdHggPSB7CiAgICAgICAgcGFyZW50OiBwYXJlbnQsCiAgICAgICAgdmFsOiB2YWwsCiAgICAgICAgcG9pbnRlclNpemU6IDAKICAgICAgfTsKICAgICAgc2l6ZSA9IDA7CiAgICAgIGlmICh0eXBlb2YgdGhpcy50eXBlICE9PSAnc3RyaW5nJykgewogICAgICAgIHNpemUgKz0gdGhpcy50eXBlLnNpemUodmFsLnZlcnNpb24sIGN0eCk7CiAgICAgIH0KICAgICAgaWYgKHRoaXMudmVyc2lvbnMuaGVhZGVyKSB7CiAgICAgICAgX3JlZiA9IHRoaXMudmVyc2lvbnMuaGVhZGVyOwogICAgICAgIGZvciAoa2V5IGluIF9yZWYpIHsKICAgICAgICAgIHR5cGUgPSBfcmVmW2tleV07CiAgICAgICAgICBpZiAodHlwZS5zaXplICE9IG51bGwpIHsKICAgICAgICAgICAgc2l6ZSArPSB0eXBlLnNpemUodmFsW2tleV0sIGN0eCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGZpZWxkcyA9IHRoaXMudmVyc2lvbnNbdmFsLnZlcnNpb25dOwogICAgICBpZiAoZmllbGRzID09IG51bGwpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gdmVyc2lvbiAiICsgdmFsLnZlcnNpb24pOwogICAgICB9CiAgICAgIGZvciAoa2V5IGluIGZpZWxkcykgewogICAgICAgIHR5cGUgPSBmaWVsZHNba2V5XTsKICAgICAgICBpZiAodHlwZS5zaXplICE9IG51bGwpIHsKICAgICAgICAgIHNpemUgKz0gdHlwZS5zaXplKHZhbFtrZXldLCBjdHgpOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoaW5jbHVkZVBvaW50ZXJzKSB7CiAgICAgICAgc2l6ZSArPSBjdHgucG9pbnRlclNpemU7CiAgICAgIH0KICAgICAgcmV0dXJuIHNpemU7CiAgICB9OwoKICAgIFZlcnNpb25lZFN0cnVjdC5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24oc3RyZWFtLCB2YWwsIHBhcmVudCkgewogICAgICB2YXIgY3R4LCBmaWVsZHMsIGksIGtleSwgcHRyLCB0eXBlLCBfcmVmLCBfcmVmMTsKICAgICAgaWYgKChfcmVmID0gdGhpcy5wcmVFbmNvZGUpICE9IG51bGwpIHsKICAgICAgICBfcmVmLmNhbGwodmFsLCBzdHJlYW0pOwogICAgICB9CiAgICAgIGN0eCA9IHsKICAgICAgICBwb2ludGVyczogW10sCiAgICAgICAgc3RhcnRPZmZzZXQ6IHN0cmVhbS5wb3MsCiAgICAgICAgcGFyZW50OiBwYXJlbnQsCiAgICAgICAgdmFsOiB2YWwsCiAgICAgICAgcG9pbnRlclNpemU6IDAKICAgICAgfTsKICAgICAgY3R4LnBvaW50ZXJPZmZzZXQgPSBzdHJlYW0ucG9zICsgdGhpcy5zaXplKHZhbCwgY3R4LCBmYWxzZSk7CiAgICAgIGlmICh0eXBlb2YgdGhpcy50eXBlICE9PSAnc3RyaW5nJykgewogICAgICAgIHRoaXMudHlwZS5lbmNvZGUoc3RyZWFtLCB2YWwudmVyc2lvbik7CiAgICAgIH0KICAgICAgaWYgKHRoaXMudmVyc2lvbnMuaGVhZGVyKSB7CiAgICAgICAgX3JlZjEgPSB0aGlzLnZlcnNpb25zLmhlYWRlcjsKICAgICAgICBmb3IgKGtleSBpbiBfcmVmMSkgewogICAgICAgICAgdHlwZSA9IF9yZWYxW2tleV07CiAgICAgICAgICBpZiAodHlwZS5lbmNvZGUgIT0gbnVsbCkgewogICAgICAgICAgICB0eXBlLmVuY29kZShzdHJlYW0sIHZhbFtrZXldLCBjdHgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICBmaWVsZHMgPSB0aGlzLnZlcnNpb25zW3ZhbC52ZXJzaW9uXTsKICAgICAgZm9yIChrZXkgaW4gZmllbGRzKSB7CiAgICAgICAgdHlwZSA9IGZpZWxkc1trZXldOwogICAgICAgIGlmICh0eXBlLmVuY29kZSAhPSBudWxsKSB7CiAgICAgICAgICB0eXBlLmVuY29kZShzdHJlYW0sIHZhbFtrZXldLCBjdHgpOwogICAgICAgIH0KICAgICAgfQogICAgICBpID0gMDsKICAgICAgd2hpbGUgKGkgPCBjdHgucG9pbnRlcnMubGVuZ3RoKSB7CiAgICAgICAgcHRyID0gY3R4LnBvaW50ZXJzW2krK107CiAgICAgICAgcHRyLnR5cGUuZW5jb2RlKHN0cmVhbSwgcHRyLnZhbCwgcHRyLnBhcmVudCk7CiAgICAgIH0KICAgIH07CgogICAgcmV0dXJuIFZlcnNpb25lZFN0cnVjdDsKCiAgfSkoU3RydWN0KTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBWZXJzaW9uZWRTdHJ1Y3Q7Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiAxOTYgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjcuMQooZnVuY3Rpb24oKSB7CiAgdmFyIFBvaW50ZXIsIFZvaWRQb2ludGVyLCB1dGlsczsKCiAgdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTsKCiAgUG9pbnRlciA9IChmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIFBvaW50ZXIob2Zmc2V0VHlwZSwgdHlwZSwgb3B0aW9ucykgewogICAgICB2YXIgX2Jhc2UsIF9iYXNlMSwgX2Jhc2UyLCBfYmFzZTM7CiAgICAgIHRoaXMub2Zmc2V0VHlwZSA9IG9mZnNldFR5cGU7CiAgICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgIT0gbnVsbCA/IG9wdGlvbnMgOiB7fTsKICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3ZvaWQnKSB7CiAgICAgICAgdGhpcy50eXBlID0gbnVsbDsKICAgICAgfQogICAgICBpZiAoKF9iYXNlID0gdGhpcy5vcHRpb25zKS50eXBlID09IG51bGwpIHsKICAgICAgICBfYmFzZS50eXBlID0gJ2xvY2FsJzsKICAgICAgfQogICAgICBpZiAoKF9iYXNlMSA9IHRoaXMub3B0aW9ucykuYWxsb3dOdWxsID09IG51bGwpIHsKICAgICAgICBfYmFzZTEuYWxsb3dOdWxsID0gdHJ1ZTsKICAgICAgfQogICAgICBpZiAoKF9iYXNlMiA9IHRoaXMub3B0aW9ucykubnVsbFZhbHVlID09IG51bGwpIHsKICAgICAgICBfYmFzZTIubnVsbFZhbHVlID0gMDsKICAgICAgfQogICAgICBpZiAoKF9iYXNlMyA9IHRoaXMub3B0aW9ucykubGF6eSA9PSBudWxsKSB7CiAgICAgICAgX2Jhc2UzLmxhenkgPSBmYWxzZTsKICAgICAgfQogICAgICBpZiAodGhpcy5vcHRpb25zLnJlbGF0aXZlVG8pIHsKICAgICAgICB0aGlzLnJlbGF0aXZlVG9HZXR0ZXIgPSBuZXcgRnVuY3Rpb24oJ2N0eCcsICJyZXR1cm4gY3R4LiIgKyB0aGlzLm9wdGlvbnMucmVsYXRpdmVUbyk7CiAgICAgIH0KICAgIH0KCiAgICBQb2ludGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIGN0eCkgewogICAgICB2YXIgYywgZGVjb2RlVmFsdWUsIG9mZnNldCwgcHRyLCByZWxhdGl2ZSwgdmFsOwogICAgICBvZmZzZXQgPSB0aGlzLm9mZnNldFR5cGUuZGVjb2RlKHN0cmVhbSwgY3R4KTsKICAgICAgaWYgKG9mZnNldCA9PT0gdGhpcy5vcHRpb25zLm51bGxWYWx1ZSAmJiB0aGlzLm9wdGlvbnMuYWxsb3dOdWxsKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgICAgcmVsYXRpdmUgPSAoZnVuY3Rpb24oKSB7CiAgICAgICAgc3dpdGNoICh0aGlzLm9wdGlvbnMudHlwZSkgewogICAgICAgICAgY2FzZSAnbG9jYWwnOgogICAgICAgICAgICByZXR1cm4gY3R4Ll9zdGFydE9mZnNldDsKICAgICAgICAgIGNhc2UgJ2ltbWVkaWF0ZSc6CiAgICAgICAgICAgIHJldHVybiBzdHJlYW0ucG9zIC0gdGhpcy5vZmZzZXRUeXBlLnNpemUoKTsKICAgICAgICAgIGNhc2UgJ3BhcmVudCc6CiAgICAgICAgICAgIHJldHVybiBjdHgucGFyZW50Ll9zdGFydE9mZnNldDsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIGMgPSBjdHg7CiAgICAgICAgICAgIHdoaWxlIChjLnBhcmVudCkgewogICAgICAgICAgICAgIGMgPSBjLnBhcmVudDsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gYy5fc3RhcnRPZmZzZXQgfHwgMDsKICAgICAgICB9CiAgICAgIH0pLmNhbGwodGhpcyk7CiAgICAgIGlmICh0aGlzLm9wdGlvbnMucmVsYXRpdmVUbykgewogICAgICAgIHJlbGF0aXZlICs9IHRoaXMucmVsYXRpdmVUb0dldHRlcihjdHgpOwogICAgICB9CiAgICAgIHB0ciA9IG9mZnNldCArIHJlbGF0aXZlOwogICAgICBpZiAodGhpcy50eXBlICE9IG51bGwpIHsKICAgICAgICB2YWwgPSBudWxsOwogICAgICAgIGRlY29kZVZhbHVlID0gKGZ1bmN0aW9uKF90aGlzKSB7CiAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBwb3M7CiAgICAgICAgICAgIGlmICh2YWwgIT0gbnVsbCkgewogICAgICAgICAgICAgIHJldHVybiB2YWw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcG9zID0gc3RyZWFtLnBvczsKICAgICAgICAgICAgc3RyZWFtLnBvcyA9IHB0cjsKICAgICAgICAgICAgdmFsID0gX3RoaXMudHlwZS5kZWNvZGUoc3RyZWFtLCBjdHgpOwogICAgICAgICAgICBzdHJlYW0ucG9zID0gcG9zOwogICAgICAgICAgICByZXR1cm4gdmFsOwogICAgICAgICAgfTsKICAgICAgICB9KSh0aGlzKTsKICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxhenkpIHsKICAgICAgICAgIHJldHVybiBuZXcgdXRpbHMuUHJvcGVydHlEZXNjcmlwdG9yKHsKICAgICAgICAgICAgZ2V0OiBkZWNvZGVWYWx1ZQogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBkZWNvZGVWYWx1ZSgpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBwdHI7CiAgICAgIH0KICAgIH07CgogICAgUG9pbnRlci5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKHZhbCwgY3R4KSB7CiAgICAgIHZhciBwYXJlbnQsIHR5cGU7CiAgICAgIHBhcmVudCA9IGN0eDsKICAgICAgc3dpdGNoICh0aGlzLm9wdGlvbnMudHlwZSkgewogICAgICAgIGNhc2UgJ2xvY2FsJzoKICAgICAgICBjYXNlICdpbW1lZGlhdGUnOgogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAncGFyZW50JzoKICAgICAgICAgIGN0eCA9IGN0eC5wYXJlbnQ7CiAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgd2hpbGUgKGN0eC5wYXJlbnQpIHsKICAgICAgICAgICAgY3R4ID0gY3R4LnBhcmVudDsKICAgICAgICAgIH0KICAgICAgfQogICAgICB0eXBlID0gdGhpcy50eXBlOwogICAgICBpZiAodHlwZSA9PSBudWxsKSB7CiAgICAgICAgaWYgKCEodmFsIGluc3RhbmNlb2YgVm9pZFBvaW50ZXIpKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk11c3QgYmUgYSBWb2lkUG9pbnRlciIpOwogICAgICAgIH0KICAgICAgICB0eXBlID0gdmFsLnR5cGU7CiAgICAgICAgdmFsID0gdmFsLnZhbHVlOwogICAgICB9CiAgICAgIGlmICh2YWwgJiYgY3R4KSB7CiAgICAgICAgY3R4LnBvaW50ZXJTaXplICs9IHR5cGUuc2l6ZSh2YWwsIHBhcmVudCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMub2Zmc2V0VHlwZS5zaXplKCk7CiAgICB9OwoKICAgIFBvaW50ZXIucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uKHN0cmVhbSwgdmFsLCBjdHgpIHsKICAgICAgdmFyIHBhcmVudCwgcmVsYXRpdmUsIHR5cGU7CiAgICAgIHBhcmVudCA9IGN0eDsKICAgICAgaWYgKHZhbCA9PSBudWxsKSB7CiAgICAgICAgdGhpcy5vZmZzZXRUeXBlLmVuY29kZShzdHJlYW0sIHRoaXMub3B0aW9ucy5udWxsVmFsdWUpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy50eXBlKSB7CiAgICAgICAgY2FzZSAnbG9jYWwnOgogICAgICAgICAgcmVsYXRpdmUgPSBjdHguc3RhcnRPZmZzZXQ7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdpbW1lZGlhdGUnOgogICAgICAgICAgcmVsYXRpdmUgPSBzdHJlYW0ucG9zICsgdGhpcy5vZmZzZXRUeXBlLnNpemUodmFsLCBwYXJlbnQpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAncGFyZW50JzoKICAgICAgICAgIGN0eCA9IGN0eC5wYXJlbnQ7CiAgICAgICAgICByZWxhdGl2ZSA9IGN0eC5zdGFydE9mZnNldDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICByZWxhdGl2ZSA9IDA7CiAgICAgICAgICB3aGlsZSAoY3R4LnBhcmVudCkgewogICAgICAgICAgICBjdHggPSBjdHgucGFyZW50OwogICAgICAgICAgfQogICAgICB9CiAgICAgIGlmICh0aGlzLm9wdGlvbnMucmVsYXRpdmVUbykgewogICAgICAgIHJlbGF0aXZlICs9IHRoaXMucmVsYXRpdmVUb0dldHRlcihwYXJlbnQudmFsKTsKICAgICAgfQogICAgICB0aGlzLm9mZnNldFR5cGUuZW5jb2RlKHN0cmVhbSwgY3R4LnBvaW50ZXJPZmZzZXQgLSByZWxhdGl2ZSk7CiAgICAgIHR5cGUgPSB0aGlzLnR5cGU7CiAgICAgIGlmICh0eXBlID09IG51bGwpIHsKICAgICAgICBpZiAoISh2YWwgaW5zdGFuY2VvZiBWb2lkUG9pbnRlcikpIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTXVzdCBiZSBhIFZvaWRQb2ludGVyIik7CiAgICAgICAgfQogICAgICAgIHR5cGUgPSB2YWwudHlwZTsKICAgICAgICB2YWwgPSB2YWwudmFsdWU7CiAgICAgIH0KICAgICAgY3R4LnBvaW50ZXJzLnB1c2goewogICAgICAgIHR5cGU6IHR5cGUsCiAgICAgICAgdmFsOiB2YWwsCiAgICAgICAgcGFyZW50OiBwYXJlbnQKICAgICAgfSk7CiAgICAgIHJldHVybiBjdHgucG9pbnRlck9mZnNldCArPSB0eXBlLnNpemUodmFsLCBwYXJlbnQpOwogICAgfTsKCiAgICByZXR1cm4gUG9pbnRlcjsKCiAgfSkoKTsKCiAgVm9pZFBvaW50ZXIgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBWb2lkUG9pbnRlcih0eXBlLCB2YWx1ZSkgewogICAgICB0aGlzLnR5cGUgPSB0eXBlOwogICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CiAgICB9CgogICAgcmV0dXJuIFZvaWRQb2ludGVyOwoKICB9KSgpOwoKICBleHBvcnRzLlBvaW50ZXIgPSBQb2ludGVyOwoKICBleHBvcnRzLlZvaWRQb2ludGVyID0gVm9pZFBvaW50ZXI7Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiAxOTcgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKbW9kdWxlLmV4cG9ydHMgPSB7ICJkZWZhdWx0IjogX193ZWJwYWNrX3JlcXVpcmVfXygxOTgpLCBfX2VzTW9kdWxlOiB0cnVlIH07CgovKioqLyB9KSwKLyogMTk4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCl9fd2VicGFja19yZXF1aXJlX18oMTk5KTsKdmFyICRPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpLk9iamVjdDsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkgewogIHJldHVybiAkT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KTsKfTsKCgovKioqLyB9KSwKLyogMTk5ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIDE5LjEuMi42IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkKdmFyIHRvSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpOwp2YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IF9fd2VicGFja19yZXF1aXJlX18oNTcpLmY7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDU5KSgnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywgZnVuY3Rpb24gKCkgewogIHJldHVybiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkgewogICAgcmV0dXJuICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodG9JT2JqZWN0KGl0KSwga2V5KTsKICB9Owp9KTsKCgovKioqLyB9KSwKLyogMjAwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCl9fd2VicGFja19yZXF1aXJlX18oMjgpOwpfX3dlYnBhY2tfcmVxdWlyZV9fKDI0KTsKbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwOCk7CgoKLyoqKi8gfSksCi8qIDIwMSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Cgp2YXIgYWRkVG9VbnNjb3BhYmxlcyA9IF9fd2VicGFja19yZXF1aXJlX18oMjAyKTsKdmFyIHN0ZXAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk4KTsKdmFyIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpOwp2YXIgdG9JT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNyk7CgovLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpCi8vIDIyLjEuMy4xMyBBcnJheS5wcm90b3R5cGUua2V5cygpCi8vIDIyLjEuMy4yOSBBcnJheS5wcm90b3R5cGUudmFsdWVzKCkKLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpCm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2MSkoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkgewogIHRoaXMuX3QgPSB0b0lPYmplY3QoaXRlcmF0ZWQpOyAvLyB0YXJnZXQKICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleAogIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kCi8vIDIyLjEuNS4yLjEgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKQp9LCBmdW5jdGlvbiAoKSB7CiAgdmFyIE8gPSB0aGlzLl90OwogIHZhciBraW5kID0gdGhpcy5fazsKICB2YXIgaW5kZXggPSB0aGlzLl9pKys7CiAgaWYgKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKSB7CiAgICB0aGlzLl90ID0gdW5kZWZpbmVkOwogICAgcmV0dXJuIHN0ZXAoMSk7CiAgfQogIGlmIChraW5kID09ICdrZXlzJykgcmV0dXJuIHN0ZXAoMCwgaW5kZXgpOwogIGlmIChraW5kID09ICd2YWx1ZXMnKSByZXR1cm4gc3RlcCgwLCBPW2luZGV4XSk7CiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pOwp9LCAndmFsdWVzJyk7CgovLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpCkl0ZXJhdG9ycy5Bcmd1bWVudHMgPSBJdGVyYXRvcnMuQXJyYXk7CgphZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7CmFkZFRvVW5zY29wYWJsZXMoJ3ZhbHVlcycpOwphZGRUb1Vuc2NvcGFibGVzKCdlbnRyaWVzJyk7CgoKLyoqKi8gfSksCi8qIDIwMiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Cgptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTsKCgovKioqLyB9KSwKLyogMjAzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCnZhciBjcmVhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KTsKdmFyIGRlc2NyaXB0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTsKdmFyIHNldFRvU3RyaW5nVGFnID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOSk7CnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9OwoKLy8gMjUuMS4yLjEuMSAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKCkKX193ZWJwYWNrX3JlcXVpcmVfXygxMykoSXRlcmF0b3JQcm90b3R5cGUsIF9fd2VicGFja19yZXF1aXJlX18oNCkoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pOwoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpIHsKICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KSB9KTsKICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTsKfTsKCgovKioqLyB9KSwKLyogMjA0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2YKLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXMKdmFyIHRvSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpOwp2YXIgdG9MZW5ndGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KTsKdmFyIHRvQWJzb2x1dGVJbmRleCA9IF9fd2VicGFja19yZXF1aXJlX18oMTAyKTsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHsKICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBlbCwgZnJvbUluZGV4KSB7CiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7CiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpOwogICAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGZyb21JbmRleCwgbGVuZ3RoKTsKICAgIHZhciB2YWx1ZTsKICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG0KICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUKICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7CiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZQogICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlOwogICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdAogICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSBpZiAoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTykgewogICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDsKICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTsKICB9Owp9OwoKCi8qKiovIH0pLAovKiAyMDUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCkuZG9jdW1lbnQ7Cm1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwoKCi8qKiovIH0pLAovKiAyMDYgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gMTkuMS4yLjkgLyAxNS4yLjMuMiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTykKdmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpOwp2YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTsKdmFyIElFX1BST1RPID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2NCkoJ0lFX1BST1RPJyk7CnZhciBPYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7Cgptb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoTykgewogIE8gPSB0b09iamVjdChPKTsKICBpZiAoaGFzKE8sIElFX1BST1RPKSkgcmV0dXJuIE9bSUVfUFJPVE9dOwogIGlmICh0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKSB7CiAgICByZXR1cm4gTy5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7CiAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvIDogbnVsbDsKfTsKCgovKioqLyB9KSwKLyogMjA3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCnZhciB0b0ludGVnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYzKTsKdmFyIGRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU2KTsKLy8gdHJ1ZSAgLT4gU3RyaW5nI2F0Ci8vIGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdAptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUT19TVFJJTkcpIHsKICByZXR1cm4gZnVuY3Rpb24gKHRoYXQsIHBvcykgewogICAgdmFyIHMgPSBTdHJpbmcoZGVmaW5lZCh0aGF0KSk7CiAgICB2YXIgaSA9IHRvSW50ZWdlcihwb3MpOwogICAgdmFyIGwgPSBzLmxlbmd0aDsKICAgIHZhciBhLCBiOwogICAgaWYgKGkgPCAwIHx8IGkgPj0gbCkgcmV0dXJuIFRPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkOwogICAgYSA9IHMuY2hhckNvZGVBdChpKTsKICAgIHJldHVybiBhIDwgMHhkODAwIHx8IGEgPiAweGRiZmYgfHwgaSArIDEgPT09IGwgfHwgKGIgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBiID4gMHhkZmZmCiAgICAgID8gVE9fU1RSSU5HID8gcy5jaGFyQXQoaSkgOiBhCiAgICAgIDogVE9fU1RSSU5HID8gcy5zbGljZShpLCBpICsgMikgOiAoYSAtIDB4ZDgwMCA8PCAxMCkgKyAoYiAtIDB4ZGMwMCkgKyAweDEwMDAwOwogIH07Cn07CgoKLyoqKi8gfSksCi8qIDIwOCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTsKdmFyIGdldCA9IF9fd2VicGFja19yZXF1aXJlX18oNjcpOwptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMikuZ2V0SXRlcmF0b3IgPSBmdW5jdGlvbiAoaXQpIHsKICB2YXIgaXRlckZuID0gZ2V0KGl0KTsKICBpZiAodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTsKICByZXR1cm4gYW5PYmplY3QoaXRlckZuLmNhbGwoaXQpKTsKfTsKCgovKioqLyB9KSwKLyogMjA5ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0geyAiZGVmYXVsdCI6IF9fd2VicGFja19yZXF1aXJlX18oMjEwKSwgX19lc01vZHVsZTogdHJ1ZSB9OwoKLyoqKi8gfSksCi8qIDIxMCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDIxMSk7Cm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKS5PYmplY3QuZnJlZXplOwoKCi8qKiovIH0pLAovKiAyMTEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gMTkuMS4yLjUgT2JqZWN0LmZyZWV6ZShPKQp2YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpOwp2YXIgbWV0YSA9IF9fd2VicGFja19yZXF1aXJlX18oNDApLm9uRnJlZXplOwoKX193ZWJwYWNrX3JlcXVpcmVfXyg1OSkoJ2ZyZWV6ZScsIGZ1bmN0aW9uICgkZnJlZXplKSB7CiAgcmV0dXJuIGZ1bmN0aW9uIGZyZWV6ZShpdCkgewogICAgcmV0dXJuICRmcmVlemUgJiYgaXNPYmplY3QoaXQpID8gJGZyZWV6ZShtZXRhKGl0KSkgOiBpdDsKICB9Owp9KTsKCgovKioqLyB9KSwKLyogMjEyICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0geyAiZGVmYXVsdCI6IF9fd2VicGFja19yZXF1aXJlX18oMjEzKSwgX19lc01vZHVsZTogdHJ1ZSB9OwoKLyoqKi8gfSksCi8qIDIxMyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDIxNCk7Cm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKS5PYmplY3Qua2V5czsKCgovKioqLyB9KSwKLyogMjE0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIDE5LjEuMi4xNCBPYmplY3Qua2V5cyhPKQp2YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTsKdmFyICRrZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOSk7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDU5KSgna2V5cycsIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gZnVuY3Rpb24ga2V5cyhpdCkgewogICAgcmV0dXJuICRrZXlzKHRvT2JqZWN0KGl0KSk7CiAgfTsKfSk7CgoKLyoqKi8gfSksCi8qIDIxNSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDI0KTsKX193ZWJwYWNrX3JlcXVpcmVfXygyOCk7Cm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MCkuZignaXRlcmF0b3InKTsKCgovKioqLyB9KSwKLyogMjE2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0geyAiZGVmYXVsdCI6IF9fd2VicGFja19yZXF1aXJlX18oMjE3KSwgX19lc01vZHVsZTogdHJ1ZSB9OwoKLyoqKi8gfSksCi8qIDIxNyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDIxOCk7Cl9fd2VicGFja19yZXF1aXJlX18oNzMpOwpfX3dlYnBhY2tfcmVxdWlyZV9fKDIyMSk7Cl9fd2VicGFja19yZXF1aXJlX18oMjIyKTsKbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpLlN5bWJvbDsKCgovKioqLyB9KSwKLyogMjE4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCi8vIEVDTUFTY3JpcHQgNiBzeW1ib2xzIHNoaW0KdmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oMTApOwp2YXIgaGFzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOCk7CnZhciBERVNDUklQVE9SUyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7CnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKdmFyIHJlZGVmaW5lID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5OSk7CnZhciBNRVRBID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MCkuS0VZOwp2YXIgJGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSk7CnZhciBzaGFyZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY1KTsKdmFyIHNldFRvU3RyaW5nVGFnID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOSk7CnZhciB1aWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM4KTsKdmFyIHdrcyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7CnZhciB3a3NFeHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcwKTsKdmFyIHdrc0RlZmluZSA9IF9fd2VicGFja19yZXF1aXJlX18oNzEpOwp2YXIgZW51bUtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxOSk7CnZhciBpc0FycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDQpOwp2YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTsKdmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTsKdmFyIHRvSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpOwp2YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU4KTsKdmFyIGNyZWF0ZURlc2MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTsKdmFyIF9jcmVhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KTsKdmFyIGdPUE5FeHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyMCk7CnZhciAkR09QRCA9IF9fd2VicGFja19yZXF1aXJlX18oNTcpOwp2YXIgJERQID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKdmFyICRrZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOSk7CnZhciBnT1BEID0gJEdPUEQuZjsKdmFyIGRQID0gJERQLmY7CnZhciBnT1BOID0gZ09QTkV4dC5mOwp2YXIgJFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7CnZhciAkSlNPTiA9IGdsb2JhbC5KU09OOwp2YXIgX3N0cmluZ2lmeSA9ICRKU09OICYmICRKU09OLnN0cmluZ2lmeTsKdmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnOwp2YXIgSElEREVOID0gd2tzKCdfaGlkZGVuJyk7CnZhciBUT19QUklNSVRJVkUgPSB3a3MoJ3RvUHJpbWl0aXZlJyk7CnZhciBpc0VudW0gPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTsKdmFyIFN5bWJvbFJlZ2lzdHJ5ID0gc2hhcmVkKCdzeW1ib2wtcmVnaXN0cnknKTsKdmFyIEFsbFN5bWJvbHMgPSBzaGFyZWQoJ3N5bWJvbHMnKTsKdmFyIE9QU3ltYm9scyA9IHNoYXJlZCgnb3Atc3ltYm9scycpOwp2YXIgT2JqZWN0UHJvdG8gPSBPYmplY3RbUFJPVE9UWVBFXTsKdmFyIFVTRV9OQVRJVkUgPSB0eXBlb2YgJFN5bWJvbCA9PSAnZnVuY3Rpb24nOwp2YXIgUU9iamVjdCA9IGdsb2JhbC5RT2JqZWN0OwovLyBEb24ndCB1c2Ugc2V0dGVycyBpbiBRdCBTY3JpcHQsIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8xNzMKdmFyIHNldHRlciA9ICFRT2JqZWN0IHx8ICFRT2JqZWN0W1BST1RPVFlQRV0gfHwgIVFPYmplY3RbUFJPVE9UWVBFXS5maW5kQ2hpbGQ7CgovLyBmYWxsYmFjayBmb3Igb2xkIEFuZHJvaWQsIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD02ODcKdmFyIHNldFN5bWJvbERlc2MgPSBERVNDUklQVE9SUyAmJiAkZmFpbHMoZnVuY3Rpb24gKCkgewogIHJldHVybiBfY3JlYXRlKGRQKHt9LCAnYScsIHsKICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZFAodGhpcywgJ2EnLCB7IHZhbHVlOiA3IH0pLmE7IH0KICB9KSkuYSAhPSA3Owp9KSA/IGZ1bmN0aW9uIChpdCwga2V5LCBEKSB7CiAgdmFyIHByb3RvRGVzYyA9IGdPUEQoT2JqZWN0UHJvdG8sIGtleSk7CiAgaWYgKHByb3RvRGVzYykgZGVsZXRlIE9iamVjdFByb3RvW2tleV07CiAgZFAoaXQsIGtleSwgRCk7CiAgaWYgKHByb3RvRGVzYyAmJiBpdCAhPT0gT2JqZWN0UHJvdG8pIGRQKE9iamVjdFByb3RvLCBrZXksIHByb3RvRGVzYyk7Cn0gOiBkUDsKCnZhciB3cmFwID0gZnVuY3Rpb24gKHRhZykgewogIHZhciBzeW0gPSBBbGxTeW1ib2xzW3RhZ10gPSBfY3JlYXRlKCRTeW1ib2xbUFJPVE9UWVBFXSk7CiAgc3ltLl9rID0gdGFnOwogIHJldHVybiBzeW07Cn07Cgp2YXIgaXNTeW1ib2wgPSBVU0VfTkFUSVZFICYmIHR5cGVvZiAkU3ltYm9sLml0ZXJhdG9yID09ICdzeW1ib2wnID8gZnVuY3Rpb24gKGl0KSB7CiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJzsKfSA6IGZ1bmN0aW9uIChpdCkgewogIHJldHVybiBpdCBpbnN0YW5jZW9mICRTeW1ib2w7Cn07Cgp2YXIgJGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgRCkgewogIGlmIChpdCA9PT0gT2JqZWN0UHJvdG8pICRkZWZpbmVQcm9wZXJ0eShPUFN5bWJvbHMsIGtleSwgRCk7CiAgYW5PYmplY3QoaXQpOwogIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSk7CiAgYW5PYmplY3QoRCk7CiAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkpKSB7CiAgICBpZiAoIUQuZW51bWVyYWJsZSkgewogICAgICBpZiAoIWhhcyhpdCwgSElEREVOKSkgZFAoaXQsIEhJRERFTiwgY3JlYXRlRGVzYygxLCB7fSkpOwogICAgICBpdFtISURERU5dW2tleV0gPSB0cnVlOwogICAgfSBlbHNlIHsKICAgICAgaWYgKGhhcyhpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0pIGl0W0hJRERFTl1ba2V5XSA9IGZhbHNlOwogICAgICBEID0gX2NyZWF0ZShELCB7IGVudW1lcmFibGU6IGNyZWF0ZURlc2MoMCwgZmFsc2UpIH0pOwogICAgfSByZXR1cm4gc2V0U3ltYm9sRGVzYyhpdCwga2V5LCBEKTsKICB9IHJldHVybiBkUChpdCwga2V5LCBEKTsKfTsKdmFyICRkZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhpdCwgUCkgewogIGFuT2JqZWN0KGl0KTsKICB2YXIga2V5cyA9IGVudW1LZXlzKFAgPSB0b0lPYmplY3QoUCkpOwogIHZhciBpID0gMDsKICB2YXIgbCA9IGtleXMubGVuZ3RoOwogIHZhciBrZXk7CiAgd2hpbGUgKGwgPiBpKSAkZGVmaW5lUHJvcGVydHkoaXQsIGtleSA9IGtleXNbaSsrXSwgUFtrZXldKTsKICByZXR1cm4gaXQ7Cn07CnZhciAkY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGl0LCBQKSB7CiAgcmV0dXJuIFAgPT09IHVuZGVmaW5lZCA/IF9jcmVhdGUoaXQpIDogJGRlZmluZVByb3BlcnRpZXMoX2NyZWF0ZShpdCksIFApOwp9Owp2YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoa2V5KSB7CiAgdmFyIEUgPSBpc0VudW0uY2FsbCh0aGlzLCBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpKTsKICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpIHJldHVybiBmYWxzZTsKICByZXR1cm4gRSB8fCAhaGFzKHRoaXMsIGtleSkgfHwgIWhhcyhBbGxTeW1ib2xzLCBrZXkpIHx8IGhhcyh0aGlzLCBISURERU4pICYmIHRoaXNbSElEREVOXVtrZXldID8gRSA6IHRydWU7Cn07CnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpIHsKICBpdCA9IHRvSU9iamVjdChpdCk7CiAga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKTsKICBpZiAoaXQgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKSByZXR1cm47CiAgdmFyIEQgPSBnT1BEKGl0LCBrZXkpOwogIGlmIChEICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICEoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkpIEQuZW51bWVyYWJsZSA9IHRydWU7CiAgcmV0dXJuIEQ7Cn07CnZhciAkZ2V0T3duUHJvcGVydHlOYW1lcyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpIHsKICB2YXIgbmFtZXMgPSBnT1BOKHRvSU9iamVjdChpdCkpOwogIHZhciByZXN1bHQgPSBbXTsKICB2YXIgaSA9IDA7CiAgdmFyIGtleTsKICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgewogICAgaWYgKCFoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYga2V5ICE9IEhJRERFTiAmJiBrZXkgIT0gTUVUQSkgcmVzdWx0LnB1c2goa2V5KTsKICB9IHJldHVybiByZXN1bHQ7Cn07CnZhciAkZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSB7CiAgdmFyIElTX09QID0gaXQgPT09IE9iamVjdFByb3RvOwogIHZhciBuYW1lcyA9IGdPUE4oSVNfT1AgPyBPUFN5bWJvbHMgOiB0b0lPYmplY3QoaXQpKTsKICB2YXIgcmVzdWx0ID0gW107CiAgdmFyIGkgPSAwOwogIHZhciBrZXk7CiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIHsKICAgIGlmIChoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYgKElTX09QID8gaGFzKE9iamVjdFByb3RvLCBrZXkpIDogdHJ1ZSkpIHJlc3VsdC5wdXNoKEFsbFN5bWJvbHNba2V5XSk7CiAgfSByZXR1cm4gcmVzdWx0Owp9OwoKLy8gMTkuNC4xLjEgU3ltYm9sKFtkZXNjcmlwdGlvbl0pCmlmICghVVNFX05BVElWRSkgewogICRTeW1ib2wgPSBmdW5jdGlvbiBTeW1ib2woKSB7CiAgICBpZiAodGhpcyBpbnN0YW5jZW9mICRTeW1ib2wpIHRocm93IFR5cGVFcnJvcignU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yIScpOwogICAgdmFyIHRhZyA9IHVpZChhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7CiAgICB2YXIgJHNldCA9IGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8pICRzZXQuY2FsbChPUFN5bWJvbHMsIHZhbHVlKTsKICAgICAgaWYgKGhhcyh0aGlzLCBISURERU4pICYmIGhhcyh0aGlzW0hJRERFTl0sIHRhZykpIHRoaXNbSElEREVOXVt0YWddID0gZmFsc2U7CiAgICAgIHNldFN5bWJvbERlc2ModGhpcywgdGFnLCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7CiAgICB9OwogICAgaWYgKERFU0NSSVBUT1JTICYmIHNldHRlcikgc2V0U3ltYm9sRGVzYyhPYmplY3RQcm90bywgdGFnLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgc2V0OiAkc2V0IH0pOwogICAgcmV0dXJuIHdyYXAodGFnKTsKICB9OwogIHJlZGVmaW5lKCRTeW1ib2xbUFJPVE9UWVBFXSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7CiAgICByZXR1cm4gdGhpcy5fazsKICB9KTsKCiAgJEdPUEQuZiA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7CiAgJERQLmYgPSAkZGVmaW5lUHJvcGVydHk7CiAgX193ZWJwYWNrX3JlcXVpcmVfXygxMDUpLmYgPSBnT1BORXh0LmYgPSAkZ2V0T3duUHJvcGVydHlOYW1lczsKICBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1KS5mID0gJHByb3BlcnR5SXNFbnVtZXJhYmxlOwogIF9fd2VicGFja19yZXF1aXJlX18oNzIpLmYgPSAkZ2V0T3duUHJvcGVydHlTeW1ib2xzOwoKICBpZiAoREVTQ1JJUFRPUlMgJiYgIV9fd2VicGFja19yZXF1aXJlX18oNjIpKSB7CiAgICByZWRlZmluZShPYmplY3RQcm90bywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJHByb3BlcnR5SXNFbnVtZXJhYmxlLCB0cnVlKTsKICB9CgogIHdrc0V4dC5mID0gZnVuY3Rpb24gKG5hbWUpIHsKICAgIHJldHVybiB3cmFwKHdrcyhuYW1lKSk7CiAgfTsKfQoKJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgeyBTeW1ib2w6ICRTeW1ib2wgfSk7Cgpmb3IgKHZhciBlczZTeW1ib2xzID0gKAogIC8vIDE5LjQuMi4yLCAxOS40LjIuMywgMTkuNC4yLjQsIDE5LjQuMi42LCAxOS40LjIuOCwgMTkuNC4yLjksIDE5LjQuMi4xMCwgMTkuNC4yLjExLCAxOS40LjIuMTIsIDE5LjQuMi4xMywgMTkuNC4yLjE0CiAgJ2hhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCxzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzJwopLnNwbGl0KCcsJyksIGogPSAwOyBlczZTeW1ib2xzLmxlbmd0aCA+IGo7KXdrcyhlczZTeW1ib2xzW2orK10pOwoKZm9yICh2YXIgd2VsbEtub3duU3ltYm9scyA9ICRrZXlzKHdrcy5zdG9yZSksIGsgPSAwOyB3ZWxsS25vd25TeW1ib2xzLmxlbmd0aCA+IGs7KSB3a3NEZWZpbmUod2VsbEtub3duU3ltYm9sc1trKytdKTsKCiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsICdTeW1ib2wnLCB7CiAgLy8gMTkuNC4yLjEgU3ltYm9sLmZvcihrZXkpCiAgJ2Zvcic6IGZ1bmN0aW9uIChrZXkpIHsKICAgIHJldHVybiBoYXMoU3ltYm9sUmVnaXN0cnksIGtleSArPSAnJykKICAgICAgPyBTeW1ib2xSZWdpc3RyeVtrZXldCiAgICAgIDogU3ltYm9sUmVnaXN0cnlba2V5XSA9ICRTeW1ib2woa2V5KTsKICB9LAogIC8vIDE5LjQuMi41IFN5bWJvbC5rZXlGb3Ioc3ltKQogIGtleUZvcjogZnVuY3Rpb24ga2V5Rm9yKHN5bSkgewogICAgaWYgKCFpc1N5bWJvbChzeW0pKSB0aHJvdyBUeXBlRXJyb3Ioc3ltICsgJyBpcyBub3QgYSBzeW1ib2whJyk7CiAgICBmb3IgKHZhciBrZXkgaW4gU3ltYm9sUmVnaXN0cnkpIGlmIChTeW1ib2xSZWdpc3RyeVtrZXldID09PSBzeW0pIHJldHVybiBrZXk7CiAgfSwKICB1c2VTZXR0ZXI6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gdHJ1ZTsgfSwKICB1c2VTaW1wbGU6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gZmFsc2U7IH0KfSk7CgokZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnT2JqZWN0JywgewogIC8vIDE5LjEuMi4yIE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSkKICBjcmVhdGU6ICRjcmVhdGUsCiAgLy8gMTkuMS4yLjQgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpCiAgZGVmaW5lUHJvcGVydHk6ICRkZWZpbmVQcm9wZXJ0eSwKICAvLyAxOS4xLjIuMyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKQogIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLAogIC8vIDE5LjEuMi42IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkKICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsCiAgLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTykKICBnZXRPd25Qcm9wZXJ0eU5hbWVzOiAkZ2V0T3duUHJvcGVydHlOYW1lcywKICAvLyAxOS4xLjIuOCBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKE8pCiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzCn0pOwoKLy8gMjQuMy4yIEpTT04uc3RyaW5naWZ5KHZhbHVlIFssIHJlcGxhY2VyIFssIHNwYWNlXV0pCiRKU09OICYmICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKCFVU0VfTkFUSVZFIHx8ICRmYWlscyhmdW5jdGlvbiAoKSB7CiAgdmFyIFMgPSAkU3ltYm9sKCk7CiAgLy8gTVMgRWRnZSBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMge30KICAvLyBXZWJLaXQgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIG51bGwKICAvLyBWOCB0aHJvd3Mgb24gYm94ZWQgc3ltYm9scwogIHJldHVybiBfc3RyaW5naWZ5KFtTXSkgIT0gJ1tudWxsXScgfHwgX3N0cmluZ2lmeSh7IGE6IFMgfSkgIT0gJ3t9JyB8fCBfc3RyaW5naWZ5KE9iamVjdChTKSkgIT0gJ3t9JzsKfSkpLCAnSlNPTicsIHsKICBzdHJpbmdpZnk6IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCkgewogICAgdmFyIGFyZ3MgPSBbaXRdOwogICAgdmFyIGkgPSAxOwogICAgdmFyIHJlcGxhY2VyLCAkcmVwbGFjZXI7CiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7CiAgICAkcmVwbGFjZXIgPSByZXBsYWNlciA9IGFyZ3NbMV07CiAgICBpZiAoIWlzT2JqZWN0KHJlcGxhY2VyKSAmJiBpdCA9PT0gdW5kZWZpbmVkIHx8IGlzU3ltYm9sKGl0KSkgcmV0dXJuOyAvLyBJRTggcmV0dXJucyBzdHJpbmcgb24gdW5kZWZpbmVkCiAgICBpZiAoIWlzQXJyYXkocmVwbGFjZXIpKSByZXBsYWNlciA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7CiAgICAgIGlmICh0eXBlb2YgJHJlcGxhY2VyID09ICdmdW5jdGlvbicpIHZhbHVlID0gJHJlcGxhY2VyLmNhbGwodGhpcywga2V5LCB2YWx1ZSk7CiAgICAgIGlmICghaXNTeW1ib2wodmFsdWUpKSByZXR1cm4gdmFsdWU7CiAgICB9OwogICAgYXJnc1sxXSA9IHJlcGxhY2VyOwogICAgcmV0dXJuIF9zdHJpbmdpZnkuYXBwbHkoJEpTT04sIGFyZ3MpOwogIH0KfSk7CgovLyAxOS40LjMuNCBTeW1ib2wucHJvdG90eXBlW0BAdG9QcmltaXRpdmVdKGhpbnQpCiRTeW1ib2xbUFJPVE9UWVBFXVtUT19QUklNSVRJVkVdIHx8IF9fd2VicGFja19yZXF1aXJlX18oMTMpKCRTeW1ib2xbUFJPVE9UWVBFXSwgVE9fUFJJTUlUSVZFLCAkU3ltYm9sW1BST1RPVFlQRV0udmFsdWVPZik7Ci8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ10Kc2V0VG9TdHJpbmdUYWcoJFN5bWJvbCwgJ1N5bWJvbCcpOwovLyAyMC4yLjEuOSBNYXRoW0BAdG9TdHJpbmdUYWddCnNldFRvU3RyaW5nVGFnKE1hdGgsICdNYXRoJywgdHJ1ZSk7Ci8vIDI0LjMuMyBKU09OW0BAdG9TdHJpbmdUYWddCnNldFRvU3RyaW5nVGFnKGdsb2JhbC5KU09OLCAnSlNPTicsIHRydWUpOwoKCi8qKiovIH0pLAovKiAyMTkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gYWxsIGVudW1lcmFibGUgb2JqZWN0IGtleXMsIGluY2x1ZGVzIHN5bWJvbHMKdmFyIGdldEtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KTsKdmFyIGdPUFMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcyKTsKdmFyIHBJRSA9IF9fd2VicGFja19yZXF1aXJlX18oMzUpOwptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkgewogIHZhciByZXN1bHQgPSBnZXRLZXlzKGl0KTsKICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjsKICBpZiAoZ2V0U3ltYm9scykgewogICAgdmFyIHN5bWJvbHMgPSBnZXRTeW1ib2xzKGl0KTsKICAgIHZhciBpc0VudW0gPSBwSUUuZjsKICAgIHZhciBpID0gMDsKICAgIHZhciBrZXk7CiAgICB3aGlsZSAoc3ltYm9scy5sZW5ndGggPiBpKSBpZiAoaXNFbnVtLmNhbGwoaXQsIGtleSA9IHN5bWJvbHNbaSsrXSkpIHJlc3VsdC5wdXNoKGtleSk7CiAgfSByZXR1cm4gcmVzdWx0Owp9OwoKCi8qKiovIH0pLAovKiAyMjAgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gZmFsbGJhY2sgZm9yIElFMTEgYnVnZ3kgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgd2l0aCBpZnJhbWUgYW5kIHdpbmRvdwp2YXIgdG9JT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNyk7CnZhciBnT1BOID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDUpLmY7CnZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nOwoKdmFyIHdpbmRvd05hbWVzID0gdHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMKICA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdykgOiBbXTsKCnZhciBnZXRXaW5kb3dOYW1lcyA9IGZ1bmN0aW9uIChpdCkgewogIHRyeSB7CiAgICByZXR1cm4gZ09QTihpdCk7CiAgfSBjYXRjaCAoZSkgewogICAgcmV0dXJuIHdpbmRvd05hbWVzLnNsaWNlKCk7CiAgfQp9OwoKbW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpIHsKICByZXR1cm4gd2luZG93TmFtZXMgJiYgdG9TdHJpbmcuY2FsbChpdCkgPT0gJ1tvYmplY3QgV2luZG93XScgPyBnZXRXaW5kb3dOYW1lcyhpdCkgOiBnT1BOKHRvSU9iamVjdChpdCkpOwp9OwoKCi8qKiovIH0pLAovKiAyMjEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKX193ZWJwYWNrX3JlcXVpcmVfXyg3MSkoJ2FzeW5jSXRlcmF0b3InKTsKCgovKioqLyB9KSwKLyogMjIyICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCl9fd2VicGFja19yZXF1aXJlX18oNzEpKCdvYnNlcnZhYmxlJyk7CgoKLyoqKi8gfSksCi8qIDIyMyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDIyNCk7CnZhciAkT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKS5PYmplY3Q7Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYykgewogIHJldHVybiAkT2JqZWN0LmRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpOwp9OwoKCi8qKiovIH0pLAovKiAyMjQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyICRleHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOwovLyAxOS4xLjIuNCAvIDE1LjIuMy42IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKQokZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFfX3dlYnBhY2tfcmVxdWlyZV9fKDUpLCAnT2JqZWN0JywgeyBkZWZpbmVQcm9wZXJ0eTogX193ZWJwYWNrX3JlcXVpcmVfXyg2KS5mIH0pOwoKCi8qKiovIH0pLAovKiAyMjUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKbW9kdWxlLmV4cG9ydHMgPSB7ICJkZWZhdWx0IjogX193ZWJwYWNrX3JlcXVpcmVfXygyMjYpLCBfX2VzTW9kdWxlOiB0cnVlIH07CgovKioqLyB9KSwKLyogMjI2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCl9fd2VicGFja19yZXF1aXJlX18oNzMpOwpfX3dlYnBhY2tfcmVxdWlyZV9fKDI0KTsKX193ZWJwYWNrX3JlcXVpcmVfXygyOCk7Cl9fd2VicGFja19yZXF1aXJlX18oMjI3KTsKX193ZWJwYWNrX3JlcXVpcmVfXygyMzIpOwpfX3dlYnBhY2tfcmVxdWlyZV9fKDIzNCk7Cl9fd2VicGFja19yZXF1aXJlX18oMjM1KTsKbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpLk1hcDsKCgovKioqLyB9KSwKLyogMjI3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCnZhciBzdHJvbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwOCk7CnZhciB2YWxpZGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNzUpOwp2YXIgTUFQID0gJ01hcCc7CgovLyAyMy4xIE1hcCBPYmplY3RzCm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTMpKE1BUCwgZnVuY3Rpb24gKGdldCkgewogIHJldHVybiBmdW5jdGlvbiBNYXAoKSB7IHJldHVybiBnZXQodGhpcywgYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpOyB9Owp9LCB7CiAgLy8gMjMuMS4zLjYgTWFwLnByb3RvdHlwZS5nZXQoa2V5KQogIGdldDogZnVuY3Rpb24gZ2V0KGtleSkgewogICAgdmFyIGVudHJ5ID0gc3Ryb25nLmdldEVudHJ5KHZhbGlkYXRlKHRoaXMsIE1BUCksIGtleSk7CiAgICByZXR1cm4gZW50cnkgJiYgZW50cnkudjsKICB9LAogIC8vIDIzLjEuMy45IE1hcC5wcm90b3R5cGUuc2V0KGtleSwgdmFsdWUpCiAgc2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkgewogICAgcmV0dXJuIHN0cm9uZy5kZWYodmFsaWRhdGUodGhpcywgTUFQKSwga2V5ID09PSAwID8gMCA6IGtleSwgdmFsdWUpOwogIH0KfSwgc3Ryb25nLCB0cnVlKTsKCgovKioqLyB9KSwKLyogMjI4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTsKdmFyIGNvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpOwp2YXIgZFAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOwp2YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOwp2YXIgU1BFQ0lFUyA9IF9fd2VicGFja19yZXF1aXJlX18oNCkoJ3NwZWNpZXMnKTsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSkgewogIHZhciBDID0gdHlwZW9mIGNvcmVbS0VZXSA9PSAnZnVuY3Rpb24nID8gY29yZVtLRVldIDogZ2xvYmFsW0tFWV07CiAgaWYgKERFU0NSSVBUT1JTICYmIEMgJiYgIUNbU1BFQ0lFU10pIGRQLmYoQywgU1BFQ0lFUywgewogICAgY29uZmlndXJhYmxlOiB0cnVlLAogICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9CiAgfSk7Cn07CgoKLyoqKi8gfSksCi8qIDIyOSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyAwIC0+IEFycmF5I2ZvckVhY2gKLy8gMSAtPiBBcnJheSNtYXAKLy8gMiAtPiBBcnJheSNmaWx0ZXIKLy8gMyAtPiBBcnJheSNzb21lCi8vIDQgLT4gQXJyYXkjZXZlcnkKLy8gNSAtPiBBcnJheSNmaW5kCi8vIDYgLT4gQXJyYXkjZmluZEluZGV4CnZhciBjdHggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTsKdmFyIElPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU0KTsKdmFyIHRvT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMCk7CnZhciB0b0xlbmd0aCA9IF9fd2VicGFja19yZXF1aXJlX18oMzcpOwp2YXIgYXNjID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMzApOwptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUWVBFLCAkY3JlYXRlKSB7CiAgdmFyIElTX01BUCA9IFRZUEUgPT0gMTsKICB2YXIgSVNfRklMVEVSID0gVFlQRSA9PSAyOwogIHZhciBJU19TT01FID0gVFlQRSA9PSAzOwogIHZhciBJU19FVkVSWSA9IFRZUEUgPT0gNDsKICB2YXIgSVNfRklORF9JTkRFWCA9IFRZUEUgPT0gNjsKICB2YXIgTk9fSE9MRVMgPSBUWVBFID09IDUgfHwgSVNfRklORF9JTkRFWDsKICB2YXIgY3JlYXRlID0gJGNyZWF0ZSB8fCBhc2M7CiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgY2FsbGJhY2tmbiwgdGhhdCkgewogICAgdmFyIE8gPSB0b09iamVjdCgkdGhpcyk7CiAgICB2YXIgc2VsZiA9IElPYmplY3QoTyk7CiAgICB2YXIgZiA9IGN0eChjYWxsYmFja2ZuLCB0aGF0LCAzKTsKICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChzZWxmLmxlbmd0aCk7CiAgICB2YXIgaW5kZXggPSAwOwogICAgdmFyIHJlc3VsdCA9IElTX01BUCA/IGNyZWF0ZSgkdGhpcywgbGVuZ3RoKSA6IElTX0ZJTFRFUiA/IGNyZWF0ZSgkdGhpcywgMCkgOiB1bmRlZmluZWQ7CiAgICB2YXIgdmFsLCByZXM7CiAgICBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKE5PX0hPTEVTIHx8IGluZGV4IGluIHNlbGYpIHsKICAgICAgdmFsID0gc2VsZltpbmRleF07CiAgICAgIHJlcyA9IGYodmFsLCBpbmRleCwgTyk7CiAgICAgIGlmIChUWVBFKSB7CiAgICAgICAgaWYgKElTX01BUCkgcmVzdWx0W2luZGV4XSA9IHJlczsgICAvLyBtYXAKICAgICAgICBlbHNlIGlmIChyZXMpIHN3aXRjaCAoVFlQRSkgewogICAgICAgICAgY2FzZSAzOiByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgLy8gc29tZQogICAgICAgICAgY2FzZSA1OiByZXR1cm4gdmFsOyAgICAgICAgICAgICAgLy8gZmluZAogICAgICAgICAgY2FzZSA2OiByZXR1cm4gaW5kZXg7ICAgICAgICAgICAgLy8gZmluZEluZGV4CiAgICAgICAgICBjYXNlIDI6IHJlc3VsdC5wdXNoKHZhbCk7ICAgICAgICAvLyBmaWx0ZXIKICAgICAgICB9IGVsc2UgaWYgKElTX0VWRVJZKSByZXR1cm4gZmFsc2U7IC8vIGV2ZXJ5CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBJU19GSU5EX0lOREVYID8gLTEgOiBJU19TT01FIHx8IElTX0VWRVJZID8gSVNfRVZFUlkgOiByZXN1bHQ7CiAgfTsKfTsKCgovKioqLyB9KSwKLyogMjMwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIDkuNC4yLjMgQXJyYXlTcGVjaWVzQ3JlYXRlKG9yaWdpbmFsQXJyYXksIGxlbmd0aCkKdmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IF9fd2VicGFja19yZXF1aXJlX18oMjMxKTsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9yaWdpbmFsLCBsZW5ndGgpIHsKICByZXR1cm4gbmV3IChzcGVjaWVzQ29uc3RydWN0b3Iob3JpZ2luYWwpKShsZW5ndGgpOwp9OwoKCi8qKiovIH0pLAovKiAyMzEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTsKdmFyIGlzQXJyYXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNCk7CnZhciBTUEVDSUVTID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KSgnc3BlY2llcycpOwoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWwpIHsKICB2YXIgQzsKICBpZiAoaXNBcnJheShvcmlnaW5hbCkpIHsKICAgIEMgPSBvcmlnaW5hbC5jb25zdHJ1Y3RvcjsKICAgIC8vIGNyb3NzLXJlYWxtIGZhbGxiYWNrCiAgICBpZiAodHlwZW9mIEMgPT0gJ2Z1bmN0aW9uJyAmJiAoQyA9PT0gQXJyYXkgfHwgaXNBcnJheShDLnByb3RvdHlwZSkpKSBDID0gdW5kZWZpbmVkOwogICAgaWYgKGlzT2JqZWN0KEMpKSB7CiAgICAgIEMgPSBDW1NQRUNJRVNdOwogICAgICBpZiAoQyA9PT0gbnVsbCkgQyA9IHVuZGVmaW5lZDsKICAgIH0KICB9IHJldHVybiBDID09PSB1bmRlZmluZWQgPyBBcnJheSA6IEM7Cn07CgoKLyoqKi8gfSksCi8qIDIzMiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBodHRwczovL2dpdGh1Yi5jb20vRGF2aWRCcnVhbnQvTWFwLVNldC5wcm90b3R5cGUudG9KU09OCnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKCiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5SLCAnTWFwJywgeyB0b0pTT046IF9fd2VicGFja19yZXF1aXJlX18oMTE0KSgnTWFwJykgfSk7CgoKLyoqKi8gfSksCi8qIDIzMyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgZm9yT2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQxKTsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXIsIElURVJBVE9SKSB7CiAgdmFyIHJlc3VsdCA9IFtdOwogIGZvck9mKGl0ZXIsIGZhbHNlLCByZXN1bHQucHVzaCwgcmVzdWx0LCBJVEVSQVRPUik7CiAgcmV0dXJuIHJlc3VsdDsKfTsKCgovKioqLyB9KSwKLyogMjM0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLW1hcC5vZgpfX3dlYnBhY2tfcmVxdWlyZV9fKDExNSkoJ01hcCcpOwoKCi8qKiovIH0pLAovKiAyMzUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtbWFwLmZyb20KX193ZWJwYWNrX3JlcXVpcmVfXygxMTYpKCdNYXAnKTsKCgovKioqLyB9KSwKLyogMjM2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgpleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwoKdmFyIF90eXBlb2YyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2OSk7Cgp2YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTsKCmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9CgpleHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoc2VsZiwgY2FsbCkgewogIGlmICghc2VsZikgewogICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICB9CgogIHJldHVybiBjYWxsICYmICgodHlwZW9mIGNhbGwgPT09ICJ1bmRlZmluZWQiID8gInVuZGVmaW5lZCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoY2FsbCkpID09PSAib2JqZWN0IiB8fCB0eXBlb2YgY2FsbCA9PT0gImZ1bmN0aW9uIikgPyBjYWxsIDogc2VsZjsKfTsKCi8qKiovIH0pLAovKiAyMzcgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKCmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Cgp2YXIgX3NldFByb3RvdHlwZU9mID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMzgpOwoKdmFyIF9zZXRQcm90b3R5cGVPZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZXRQcm90b3R5cGVPZik7Cgp2YXIgX2NyZWF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMjQyKTsKCnZhciBfY3JlYXRlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZSk7Cgp2YXIgX3R5cGVvZjIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY5KTsKCnZhciBfdHlwZW9mMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3R5cGVvZjIpOwoKZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH0KCmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChzdWJDbGFzcywgc3VwZXJDbGFzcykgewogIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gImZ1bmN0aW9uIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7CiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyAodHlwZW9mIHN1cGVyQ2xhc3MgPT09ICJ1bmRlZmluZWQiID8gInVuZGVmaW5lZCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoc3VwZXJDbGFzcykpKTsKICB9CgogIHN1YkNsYXNzLnByb3RvdHlwZSA9ICgwLCBfY3JlYXRlMi5kZWZhdWx0KShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7CiAgICBjb25zdHJ1Y3RvcjogewogICAgICB2YWx1ZTogc3ViQ2xhc3MsCiAgICAgIGVudW1lcmFibGU6IGZhbHNlLAogICAgICB3cml0YWJsZTogdHJ1ZSwKICAgICAgY29uZmlndXJhYmxlOiB0cnVlCiAgICB9CiAgfSk7CiAgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZjIuZGVmYXVsdCA/ICgwLCBfc2V0UHJvdG90eXBlT2YyLmRlZmF1bHQpKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7Cn07CgovKioqLyB9KSwKLyogMjM4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0geyAiZGVmYXVsdCI6IF9fd2VicGFja19yZXF1aXJlX18oMjM5KSwgX19lc01vZHVsZTogdHJ1ZSB9OwoKLyoqKi8gfSksCi8qIDIzOSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDI0MCk7Cm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKS5PYmplY3Quc2V0UHJvdG90eXBlT2Y7CgoKLyoqKi8gfSksCi8qIDI0MCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyAxOS4xLjMuMTkgT2JqZWN0LnNldFByb3RvdHlwZU9mKE8sIHByb3RvKQp2YXIgJGV4cG9ydCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7CiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0JywgeyBzZXRQcm90b3R5cGVPZjogX193ZWJwYWNrX3JlcXVpcmVfXygyNDEpLnNldCB9KTsKCgovKioqLyB9KSwKLyogMjQxICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIFdvcmtzIHdpdGggX19wcm90b19fIG9ubHkuIE9sZCB2OCBjYW4ndCB3b3JrIHdpdGggbnVsbCBwcm90byBvYmplY3RzLgovKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqLwp2YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpOwp2YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTsKdmFyIGNoZWNrID0gZnVuY3Rpb24gKE8sIHByb3RvKSB7CiAgYW5PYmplY3QoTyk7CiAgaWYgKCFpc09iamVjdChwcm90bykgJiYgcHJvdG8gIT09IG51bGwpIHRocm93IFR5cGVFcnJvcihwcm90byArICI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhIik7Cn07Cm1vZHVsZS5leHBvcnRzID0gewogIHNldDogT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8ICgnX19wcm90b19fJyBpbiB7fSA/IC8vIGVzbGludC1kaXNhYmxlLWxpbmUKICAgIGZ1bmN0aW9uICh0ZXN0LCBidWdneSwgc2V0KSB7CiAgICAgIHRyeSB7CiAgICAgICAgc2V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoRnVuY3Rpb24uY2FsbCwgX193ZWJwYWNrX3JlcXVpcmVfXyg1NykuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTsKICAgICAgICBzZXQodGVzdCwgW10pOwogICAgICAgIGJ1Z2d5ID0gISh0ZXN0IGluc3RhbmNlb2YgQXJyYXkpOwogICAgICB9IGNhdGNoIChlKSB7IGJ1Z2d5ID0gdHJ1ZTsgfQogICAgICByZXR1cm4gZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pIHsKICAgICAgICBjaGVjayhPLCBwcm90byk7CiAgICAgICAgaWYgKGJ1Z2d5KSBPLl9fcHJvdG9fXyA9IHByb3RvOwogICAgICAgIGVsc2Ugc2V0KE8sIHByb3RvKTsKICAgICAgICByZXR1cm4gTzsKICAgICAgfTsKICAgIH0oe30sIGZhbHNlKSA6IHVuZGVmaW5lZCksCiAgY2hlY2s6IGNoZWNrCn07CgoKLyoqKi8gfSksCi8qIDI0MiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9IHsgImRlZmF1bHQiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDI0MyksIF9fZXNNb2R1bGU6IHRydWUgfTsKCi8qKiovIH0pLAovKiAyNDMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKX193ZWJwYWNrX3JlcXVpcmVfXygyNDQpOwp2YXIgJE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMikuT2JqZWN0Owptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZShQLCBEKSB7CiAgcmV0dXJuICRPYmplY3QuY3JlYXRlKFAsIEQpOwp9OwoKCi8qKiovIH0pLAovKiAyNDQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyICRleHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOwovLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSkKJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IGNyZWF0ZTogX193ZWJwYWNrX3JlcXVpcmVfXygzNikgfSk7CgoKLyoqKi8gfSksCi8qIDI0NSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9IHsgImRlZmF1bHQiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDI0NiksIF9fZXNNb2R1bGU6IHRydWUgfTsKCi8qKiovIH0pLAovKiAyNDYgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKX193ZWJwYWNrX3JlcXVpcmVfXygyNDcpOwp2YXIgJE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMikuT2JqZWN0Owptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoVCwgRCkgewogIHJldHVybiAkT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVCwgRCk7Cn07CgoKLyoqKi8gfSksCi8qIDI0NyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgJGV4cG9ydCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7Ci8vIDE5LjEuMi4zIC8gMTUuMi4zLjcgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykKJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhX193ZWJwYWNrX3JlcXVpcmVfXyg1KSwgJ09iamVjdCcsIHsgZGVmaW5lUHJvcGVydGllczogX193ZWJwYWNrX3JlcXVpcmVfXygxMDApIH0pOwoKCi8qKiovIH0pLAovKiAyNDggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIHBTbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTsKdmFyIG9iamVjdEtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI0OSk7CnZhciBpc0FyZ3VtZW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oMjUwKTsKCnZhciBkZWVwRXF1YWwgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBvcHRzKSB7CiAgaWYgKCFvcHRzKSBvcHRzID0ge307CiAgLy8gNy4xLiBBbGwgaWRlbnRpY2FsIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgYXMgZGV0ZXJtaW5lZCBieSA9PT0uCiAgaWYgKGFjdHVhbCA9PT0gZXhwZWN0ZWQpIHsKICAgIHJldHVybiB0cnVlOwoKICB9IGVsc2UgaWYgKGFjdHVhbCBpbnN0YW5jZW9mIERhdGUgJiYgZXhwZWN0ZWQgaW5zdGFuY2VvZiBEYXRlKSB7CiAgICByZXR1cm4gYWN0dWFsLmdldFRpbWUoKSA9PT0gZXhwZWN0ZWQuZ2V0VGltZSgpOwoKICAvLyA3LjMuIE90aGVyIHBhaXJzIHRoYXQgZG8gbm90IGJvdGggcGFzcyB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcsCiAgLy8gZXF1aXZhbGVuY2UgaXMgZGV0ZXJtaW5lZCBieSA9PS4KICB9IGVsc2UgaWYgKCFhY3R1YWwgfHwgIWV4cGVjdGVkIHx8IHR5cGVvZiBhY3R1YWwgIT0gJ29iamVjdCcgJiYgdHlwZW9mIGV4cGVjdGVkICE9ICdvYmplY3QnKSB7CiAgICByZXR1cm4gb3B0cy5zdHJpY3QgPyBhY3R1YWwgPT09IGV4cGVjdGVkIDogYWN0dWFsID09IGV4cGVjdGVkOwoKICAvLyA3LjQuIEZvciBhbGwgb3RoZXIgT2JqZWN0IHBhaXJzLCBpbmNsdWRpbmcgQXJyYXkgb2JqZWN0cywgZXF1aXZhbGVuY2UgaXMKICAvLyBkZXRlcm1pbmVkIGJ5IGhhdmluZyB0aGUgc2FtZSBudW1iZXIgb2Ygb3duZWQgcHJvcGVydGllcyAoYXMgdmVyaWZpZWQKICAvLyB3aXRoIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCksIHRoZSBzYW1lIHNldCBvZiBrZXlzCiAgLy8gKGFsdGhvdWdoIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBvcmRlciksIGVxdWl2YWxlbnQgdmFsdWVzIGZvciBldmVyeQogIC8vIGNvcnJlc3BvbmRpbmcga2V5LCBhbmQgYW4gaWRlbnRpY2FsICdwcm90b3R5cGUnIHByb3BlcnR5LiBOb3RlOiB0aGlzCiAgLy8gYWNjb3VudHMgZm9yIGJvdGggbmFtZWQgYW5kIGluZGV4ZWQgcHJvcGVydGllcyBvbiBBcnJheXMuCiAgfSBlbHNlIHsKICAgIHJldHVybiBvYmpFcXVpdihhY3R1YWwsIGV4cGVjdGVkLCBvcHRzKTsKICB9Cn0KCmZ1bmN0aW9uIGlzVW5kZWZpbmVkT3JOdWxsKHZhbHVlKSB7CiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7Cn0KCmZ1bmN0aW9uIGlzQnVmZmVyICh4KSB7CiAgaWYgKCF4IHx8IHR5cGVvZiB4ICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgeC5sZW5ndGggIT09ICdudW1iZXInKSByZXR1cm4gZmFsc2U7CiAgaWYgKHR5cGVvZiB4LmNvcHkgIT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHguc2xpY2UgIT09ICdmdW5jdGlvbicpIHsKICAgIHJldHVybiBmYWxzZTsKICB9CiAgaWYgKHgubGVuZ3RoID4gMCAmJiB0eXBlb2YgeFswXSAhPT0gJ251bWJlcicpIHJldHVybiBmYWxzZTsKICByZXR1cm4gdHJ1ZTsKfQoKZnVuY3Rpb24gb2JqRXF1aXYoYSwgYiwgb3B0cykgewogIHZhciBpLCBrZXk7CiAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGEpIHx8IGlzVW5kZWZpbmVkT3JOdWxsKGIpKQogICAgcmV0dXJuIGZhbHNlOwogIC8vIGFuIGlkZW50aWNhbCAncHJvdG90eXBlJyBwcm9wZXJ0eS4KICBpZiAoYS5wcm90b3R5cGUgIT09IGIucHJvdG90eXBlKSByZXR1cm4gZmFsc2U7CiAgLy9+fn5JJ3ZlIG1hbmFnZWQgdG8gYnJlYWsgT2JqZWN0LmtleXMgdGhyb3VnaCBzY3Jld3kgYXJndW1lbnRzIHBhc3NpbmcuCiAgLy8gICBDb252ZXJ0aW5nIHRvIGFycmF5IHNvbHZlcyB0aGUgcHJvYmxlbS4KICBpZiAoaXNBcmd1bWVudHMoYSkpIHsKICAgIGlmICghaXNBcmd1bWVudHMoYikpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgYSA9IHBTbGljZS5jYWxsKGEpOwogICAgYiA9IHBTbGljZS5jYWxsKGIpOwogICAgcmV0dXJuIGRlZXBFcXVhbChhLCBiLCBvcHRzKTsKICB9CiAgaWYgKGlzQnVmZmVyKGEpKSB7CiAgICBpZiAoIWlzQnVmZmVyKGIpKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTsKICAgIGZvciAoaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7CiAgICAgIGlmIChhW2ldICE9PSBiW2ldKSByZXR1cm4gZmFsc2U7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKICB9CiAgdHJ5IHsKICAgIHZhciBrYSA9IG9iamVjdEtleXMoYSksCiAgICAgICAga2IgPSBvYmplY3RLZXlzKGIpOwogIH0gY2F0Y2ggKGUpIHsvL2hhcHBlbnMgd2hlbiBvbmUgaXMgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgdGhlIG90aGVyIGlzbid0CiAgICByZXR1cm4gZmFsc2U7CiAgfQogIC8vIGhhdmluZyB0aGUgc2FtZSBudW1iZXIgb2Ygb3duZWQgcHJvcGVydGllcyAoa2V5cyBpbmNvcnBvcmF0ZXMKICAvLyBoYXNPd25Qcm9wZXJ0eSkKICBpZiAoa2EubGVuZ3RoICE9IGtiLmxlbmd0aCkKICAgIHJldHVybiBmYWxzZTsKICAvL3RoZSBzYW1lIHNldCBvZiBrZXlzIChhbHRob3VnaCBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgb3JkZXIpLAogIGthLnNvcnQoKTsKICBrYi5zb3J0KCk7CiAgLy9+fn5jaGVhcCBrZXkgdGVzdAogIGZvciAoaSA9IGthLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICBpZiAoa2FbaV0gIT0ga2JbaV0pCiAgICAgIHJldHVybiBmYWxzZTsKICB9CiAgLy9lcXVpdmFsZW50IHZhbHVlcyBmb3IgZXZlcnkgY29ycmVzcG9uZGluZyBrZXksIGFuZAogIC8vfn5+cG9zc2libHkgZXhwZW5zaXZlIGRlZXAgdGVzdAogIGZvciAoaSA9IGthLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICBrZXkgPSBrYVtpXTsKICAgIGlmICghZGVlcEVxdWFsKGFba2V5XSwgYltrZXldLCBvcHRzKSkgcmV0dXJuIGZhbHNlOwogIH0KICByZXR1cm4gdHlwZW9mIGEgPT09IHR5cGVvZiBiOwp9CgoKLyoqKi8gfSksCi8qIDI0OSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgpleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgT2JqZWN0LmtleXMgPT09ICdmdW5jdGlvbicKICA/IE9iamVjdC5rZXlzIDogc2hpbTsKCmV4cG9ydHMuc2hpbSA9IHNoaW07CmZ1bmN0aW9uIHNoaW0gKG9iaikgewogIHZhciBrZXlzID0gW107CiAgZm9yICh2YXIga2V5IGluIG9iaikga2V5cy5wdXNoKGtleSk7CiAgcmV0dXJuIGtleXM7Cn0KCgovKioqLyB9KSwKLyogMjUwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCnZhciBzdXBwb3J0c0FyZ3VtZW50c0NsYXNzID0gKGZ1bmN0aW9uKCl7CiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudHMpCn0pKCkgPT0gJ1tvYmplY3QgQXJndW1lbnRzXSc7CgpleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBzdXBwb3J0c0FyZ3VtZW50c0NsYXNzID8gc3VwcG9ydGVkIDogdW5zdXBwb3J0ZWQ7CgpleHBvcnRzLnN1cHBvcnRlZCA9IHN1cHBvcnRlZDsKZnVuY3Rpb24gc3VwcG9ydGVkKG9iamVjdCkgewogIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSA9PSAnW29iamVjdCBBcmd1bWVudHNdJzsKfTsKCmV4cG9ydHMudW5zdXBwb3J0ZWQgPSB1bnN1cHBvcnRlZDsKZnVuY3Rpb24gdW5zdXBwb3J0ZWQob2JqZWN0KXsKICByZXR1cm4gb2JqZWN0ICYmCiAgICB0eXBlb2Ygb2JqZWN0ID09ICdvYmplY3QnICYmCiAgICB0eXBlb2Ygb2JqZWN0Lmxlbmd0aCA9PSAnbnVtYmVyJyAmJgogICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgJ2NhbGxlZScpICYmCiAgICAhT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iamVjdCwgJ2NhbGxlZScpIHx8CiAgICBmYWxzZTsKfTsKCgovKioqLyB9KSwKLyogMjUxICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0geyAiZGVmYXVsdCI6IF9fd2VicGFja19yZXF1aXJlX18oMjUyKSwgX19lc01vZHVsZTogdHJ1ZSB9OwoKLyoqKi8gfSksCi8qIDI1MiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDI1Myk7Cm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKS5PYmplY3QuYXNzaWduOwoKCi8qKiovIH0pLAovKiAyNTMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gMTkuMS4zLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSkKdmFyICRleHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOwoKJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYsICdPYmplY3QnLCB7IGFzc2lnbjogX193ZWJwYWNrX3JlcXVpcmVfXygyNTQpIH0pOwoKCi8qKiovIH0pLAovKiAyNTQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKLy8gMTkuMS4yLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSwgLi4uKQp2YXIgZ2V0S2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oMjkpOwp2YXIgZ09QUyA9IF9fd2VicGFja19yZXF1aXJlX18oNzIpOwp2YXIgcElFID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNSk7CnZhciB0b09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzApOwp2YXIgSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oNTQpOwp2YXIgJGFzc2lnbiA9IE9iamVjdC5hc3NpZ247CgovLyBzaG91bGQgd29yayB3aXRoIHN5bWJvbHMgYW5kIHNob3VsZCBoYXZlIGRldGVybWluaXN0aWMgcHJvcGVydHkgb3JkZXIgKFY4IGJ1ZykKbW9kdWxlLmV4cG9ydHMgPSAhJGFzc2lnbiB8fCBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KShmdW5jdGlvbiAoKSB7CiAgdmFyIEEgPSB7fTsKICB2YXIgQiA9IHt9OwogIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZgogIHZhciBTID0gU3ltYm9sKCk7CiAgdmFyIEsgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3QnOwogIEFbU10gPSA3OwogIEsuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGspIHsgQltrXSA9IGs7IH0pOwogIHJldHVybiAkYXNzaWduKHt9LCBBKVtTXSAhPSA3IHx8IE9iamVjdC5rZXlzKCRhc3NpZ24oe30sIEIpKS5qb2luKCcnKSAhPSBLOwp9KSA/IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIHNvdXJjZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzCiAgdmFyIFQgPSB0b09iamVjdCh0YXJnZXQpOwogIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDsKICB2YXIgaW5kZXggPSAxOwogIHZhciBnZXRTeW1ib2xzID0gZ09QUy5mOwogIHZhciBpc0VudW0gPSBwSUUuZjsKICB3aGlsZSAoYUxlbiA+IGluZGV4KSB7CiAgICB2YXIgUyA9IElPYmplY3QoYXJndW1lbnRzW2luZGV4KytdKTsKICAgIHZhciBrZXlzID0gZ2V0U3ltYm9scyA/IGdldEtleXMoUykuY29uY2F0KGdldFN5bWJvbHMoUykpIDogZ2V0S2V5cyhTKTsKICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDsKICAgIHZhciBqID0gMDsKICAgIHZhciBrZXk7CiAgICB3aGlsZSAobGVuZ3RoID4gaikgaWYgKGlzRW51bS5jYWxsKFMsIGtleSA9IGtleXNbaisrXSkpIFRba2V5XSA9IFNba2V5XTsKICB9IHJldHVybiBUOwp9IDogJGFzc2lnbjsKCgovKioqLyB9KSwKLyogMjU1ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0geyAiZGVmYXVsdCI6IF9fd2VicGFja19yZXF1aXJlX18oMjU2KSwgX19lc01vZHVsZTogdHJ1ZSB9OwoKLyoqKi8gfSksCi8qIDI1NiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDI1Nyk7Cm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKS5TdHJpbmcuZnJvbUNvZGVQb2ludDsKCgovKioqLyB9KSwKLyogMjU3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKdmFyIHRvQWJzb2x1dGVJbmRleCA9IF9fd2VicGFja19yZXF1aXJlX18oMTAyKTsKdmFyIGZyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7CnZhciAkZnJvbUNvZGVQb2ludCA9IFN0cmluZy5mcm9tQ29kZVBvaW50OwoKLy8gbGVuZ3RoIHNob3VsZCBiZSAxLCBvbGQgRkYgcHJvYmxlbQokZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghISRmcm9tQ29kZVBvaW50ICYmICRmcm9tQ29kZVBvaW50Lmxlbmd0aCAhPSAxKSwgJ1N0cmluZycsIHsKICAvLyAyMS4xLjIuMiBTdHJpbmcuZnJvbUNvZGVQb2ludCguLi5jb2RlUG9pbnRzKQogIGZyb21Db2RlUG9pbnQ6IGZ1bmN0aW9uIGZyb21Db2RlUG9pbnQoeCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzCiAgICB2YXIgcmVzID0gW107CiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7CiAgICB2YXIgaSA9IDA7CiAgICB2YXIgY29kZTsKICAgIHdoaWxlIChhTGVuID4gaSkgewogICAgICBjb2RlID0gK2FyZ3VtZW50c1tpKytdOwogICAgICBpZiAodG9BYnNvbHV0ZUluZGV4KGNvZGUsIDB4MTBmZmZmKSAhPT0gY29kZSkgdGhyb3cgUmFuZ2VFcnJvcihjb2RlICsgJyBpcyBub3QgYSB2YWxpZCBjb2RlIHBvaW50Jyk7CiAgICAgIHJlcy5wdXNoKGNvZGUgPCAweDEwMDAwCiAgICAgICAgPyBmcm9tQ2hhckNvZGUoY29kZSkKICAgICAgICA6IGZyb21DaGFyQ29kZSgoKGNvZGUgLT0gMHgxMDAwMCkgPj4gMTApICsgMHhkODAwLCBjb2RlICUgMHg0MDAgKyAweGRjMDApCiAgICAgICk7CiAgICB9IHJldHVybiByZXMuam9pbignJyk7CiAgfQp9KTsKCgovKioqLyB9KSwKLyogMjU4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0geyAiZGVmYXVsdCI6IF9fd2VicGFja19yZXF1aXJlX18oMjU5KSwgX19lc01vZHVsZTogdHJ1ZSB9OwoKLyoqKi8gfSksCi8qIDI1OSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDI0KTsKX193ZWJwYWNrX3JlcXVpcmVfXygyNjApOwptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMikuQXJyYXkuZnJvbTsKCgovKioqLyB9KSwKLyogMjYwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCnZhciBjdHggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTsKdmFyICRleHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOwp2YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTsKdmFyIGNhbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExMSk7CnZhciBpc0FycmF5SXRlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTEyKTsKdmFyIHRvTGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNyk7CnZhciBjcmVhdGVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oMjYxKTsKdmFyIGdldEl0ZXJGbiA9IF9fd2VicGFja19yZXF1aXJlX18oNjcpOwoKJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhX193ZWJwYWNrX3JlcXVpcmVfXygyNjIpKGZ1bmN0aW9uIChpdGVyKSB7IEFycmF5LmZyb20oaXRlcik7IH0pLCAnQXJyYXknLCB7CiAgLy8gMjIuMS4yLjEgQXJyYXkuZnJvbShhcnJheUxpa2UsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKQogIGZyb206IGZ1bmN0aW9uIGZyb20oYXJyYXlMaWtlIC8qICwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQgKi8pIHsKICAgIHZhciBPID0gdG9PYmplY3QoYXJyYXlMaWtlKTsKICAgIHZhciBDID0gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMgOiBBcnJheTsKICAgIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDsKICAgIHZhciBtYXBmbiA9IGFMZW4gPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkOwogICAgdmFyIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkOwogICAgdmFyIGluZGV4ID0gMDsKICAgIHZhciBpdGVyRm4gPSBnZXRJdGVyRm4oTyk7CiAgICB2YXIgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yOwogICAgaWYgKG1hcHBpbmcpIG1hcGZuID0gY3R4KG1hcGZuLCBhTGVuID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCwgMik7CiAgICAvLyBpZiBvYmplY3QgaXNuJ3QgaXRlcmFibGUgb3IgaXQncyBhcnJheSB3aXRoIGRlZmF1bHQgaXRlcmF0b3IgLSB1c2Ugc2ltcGxlIGNhc2UKICAgIGlmIChpdGVyRm4gIT0gdW5kZWZpbmVkICYmICEoQyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcihpdGVyRm4pKSkgewogICAgICBmb3IgKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoTyksIHJlc3VsdCA9IG5ldyBDKCk7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTsgaW5kZXgrKykgewogICAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmcgPyBjYWxsKGl0ZXJhdG9yLCBtYXBmbiwgW3N0ZXAudmFsdWUsIGluZGV4XSwgdHJ1ZSkgOiBzdGVwLnZhbHVlKTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpOwogICAgICBmb3IgKHJlc3VsdCA9IG5ldyBDKGxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7CiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XSk7CiAgICAgIH0KICAgIH0KICAgIHJlc3VsdC5sZW5ndGggPSBpbmRleDsKICAgIHJldHVybiByZXN1bHQ7CiAgfQp9KTsKCgovKioqLyB9KSwKLyogMjYxICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCnZhciAkZGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOwp2YXIgY3JlYXRlRGVzYyA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpOwoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBpbmRleCwgdmFsdWUpIHsKICBpZiAoaW5kZXggaW4gb2JqZWN0KSAkZGVmaW5lUHJvcGVydHkuZihvYmplY3QsIGluZGV4LCBjcmVhdGVEZXNjKDAsIHZhbHVlKSk7CiAgZWxzZSBvYmplY3RbaW5kZXhdID0gdmFsdWU7Cn07CgoKLyoqKi8gfSksCi8qIDI2MiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgSVRFUkFUT1IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpKCdpdGVyYXRvcicpOwp2YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7Cgp0cnkgewogIHZhciByaXRlciA9IFs3XVtJVEVSQVRPUl0oKTsKICByaXRlclsncmV0dXJuJ10gPSBmdW5jdGlvbiAoKSB7IFNBRkVfQ0xPU0lORyA9IHRydWU7IH07CiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWwKICBBcnJheS5mcm9tKHJpdGVyLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pOwp9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH0KCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIHNraXBDbG9zaW5nKSB7CiAgaWYgKCFza2lwQ2xvc2luZyAmJiAhU0FGRV9DTE9TSU5HKSByZXR1cm4gZmFsc2U7CiAgdmFyIHNhZmUgPSBmYWxzZTsKICB0cnkgewogICAgdmFyIGFyciA9IFs3XTsKICAgIHZhciBpdGVyID0gYXJyW0lURVJBVE9SXSgpOwogICAgaXRlci5uZXh0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4geyBkb25lOiBzYWZlID0gdHJ1ZSB9OyB9OwogICAgYXJyW0lURVJBVE9SXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGl0ZXI7IH07CiAgICBleGVjKGFycik7CiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9CiAgcmV0dXJuIHNhZmU7Cn07CgoKLyoqKi8gfSksCi8qIDI2MyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9IHsgImRlZmF1bHQiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDI2NCksIF9fZXNNb2R1bGU6IHRydWUgfTsKCi8qKiovIH0pLAovKiAyNjQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKX193ZWJwYWNrX3JlcXVpcmVfXyg3Myk7Cl9fd2VicGFja19yZXF1aXJlX18oMjQpOwpfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTsKX193ZWJwYWNrX3JlcXVpcmVfXygyNjUpOwpfX3dlYnBhY2tfcmVxdWlyZV9fKDI2Nik7Cl9fd2VicGFja19yZXF1aXJlX18oMjY3KTsKX193ZWJwYWNrX3JlcXVpcmVfXygyNjgpOwptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMikuU2V0OwoKCi8qKiovIH0pLAovKiAyNjUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKdmFyIHN0cm9uZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTA4KTsKdmFyIHZhbGlkYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3NSk7CnZhciBTRVQgPSAnU2V0JzsKCi8vIDIzLjIgU2V0IE9iamVjdHMKbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExMykoU0VULCBmdW5jdGlvbiAoZ2V0KSB7CiAgcmV0dXJuIGZ1bmN0aW9uIFNldCgpIHsgcmV0dXJuIGdldCh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7IH07Cn0sIHsKICAvLyAyMy4yLjMuMSBTZXQucHJvdG90eXBlLmFkZCh2YWx1ZSkKICBhZGQ6IGZ1bmN0aW9uIGFkZCh2YWx1ZSkgewogICAgcmV0dXJuIHN0cm9uZy5kZWYodmFsaWRhdGUodGhpcywgU0VUKSwgdmFsdWUgPSB2YWx1ZSA9PT0gMCA/IDAgOiB2YWx1ZSwgdmFsdWUpOwogIH0KfSwgc3Ryb25nKTsKCgovKioqLyB9KSwKLyogMjY2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9EYXZpZEJydWFudC9NYXAtU2V0LnByb3RvdHlwZS50b0pTT04KdmFyICRleHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOwoKJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LlIsICdTZXQnLCB7IHRvSlNPTjogX193ZWJwYWNrX3JlcXVpcmVfXygxMTQpKCdTZXQnKSB9KTsKCgovKioqLyB9KSwKLyogMjY3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXNldC5vZgpfX3dlYnBhY2tfcmVxdWlyZV9fKDExNSkoJ1NldCcpOwoKCi8qKiovIH0pLAovKiAyNjggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtc2V0LmZyb20KX193ZWJwYWNrX3JlcXVpcmVfXygxMTYpKCdTZXQnKTsKCgovKioqLyB9KSwKLyogMjY5ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihCdWZmZXIpIHsvLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuOS4xCnZhciBDQVRFR09SWV9CSVRTLCBDQVRFR09SWV9NQVNLLCBDQVRFR09SWV9TSElGVCwgQ09NQklOSU5HX0JJVFMsIENPTUJJTklOR19NQVNLLCBDT01CSU5JTkdfU0hJRlQsIEVBV19CSVRTLCBFQVdfTUFTSywgRUFXX1NISUZULCBOVU1CRVJfQklUUywgTlVNQkVSX01BU0ssIFNDUklQVF9CSVRTLCBTQ1JJUFRfTUFTSywgU0NSSVBUX1NISUZULCBVbmljb2RlVHJpZSwgYml0cywgZGF0YSwgZnMsIGxvZzIsIHRyaWU7CgpVbmljb2RlVHJpZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDMpOwoKZGF0YSA9IF9fd2VicGFja19yZXF1aXJlX18oMjcwKTsKCgoKdHJpZSA9IG5ldyBVbmljb2RlVHJpZShCdWZmZXIoIkFCRUFBQUFBQUFBQUVLaVE1WmxwV0ZQWDJ2ZDczbFByYWZXSWRRQmxpclVxS2dnS0lxT2tXaFZ4Z0dKRlpJeUNpTWdRSVVDQVFOSWpSeEVab3FJaVFvZ2FCZ2NHQVpraEVaRkVRSWlNQVFLSkVDSEdFRUlJbWNpd1gyeDdUckducCt1OW5nL3ZsMmRmWE5sSmR2WmE2Lzd0Ly9yZjkxcE1EcUhmUE5OUUJnTDhzamNjU05SZGJSYzl1V0hYNU1udmJYZllYRFdZLzNDeUlucUZYdlRrUUprL0xmM2o1NDl2cGlRU3RCMTNnMDNXaHJNM0xMSnNjTjdOVTZ4MnNzTmtvOHlDUGxPZzh0M3pnMnZQOXUzbU95cWVscGVoTGtTRWk2ZFh4QXZYeVhQL3VlL2xocnd6NzFiZFBONjc4MWxrL1B1MWE3THVlSndjSExDeHJxMkpqZmtTNjV5d2Q3M2ZpbVBtRVY4ZDJucGUxOVBXZ1MzM1pYZmpSZ3hESERlZDFUNnhLM3FaczJtWW9lOUZvZisyUDJ1S1FxL3VWdzJRUDRjenFxZHdMc3hyVis3ODgrWWtuMXNidXNkcC85SHZEOHM2VVAvUmMxand1ZzNyTjMyejhkdkNlM2tQQ3U3bmM3Nm5QMy8xOHZXTE5tcG5VMnRMUi9QaDZRVEpsOGxYbkE2MnZ0cXkrZEhEb0hNOCtSdUxCUkhpMkVqSVpIY1k1ZlA3VWN0WGZKMXg3Y2IxSC8vSkppTjQwYjkwU09mOXZrTkRQcWhEOFllVnY3YjB3ekhYbmpmZG92dUJwODc0blQwZDRNOTkrMjVzWW5TalhESDdaMFA2Q0IzK2U2Q3pTMU9QdkRaaEM3MkkyWDNSdnpWVS9JK2ZJYVhtWEx4eDllN2wyK2xhdS8vNjdVcUxKY1o2ZG91TmRLeTB6SnJNN3JrYzNIZGs3NkVEenI4d3BDWGwvdU42Y3RhbFcybUV4SXlVN0tUTXR6cTlSbjhlMEhJZUtKNUxvSGhVTCtaQUV2cjZqeU11Q3BuVXovRWV0bS80blBMUTRadXZkM3k1WmEzTm9vMnJMZisrelFBVzk4V0JUOVNGT0VJRTBTZ0IwY2g4QTZMQkI5SFkrS2VDKzBqakdKQkdFSkJHS3BER0NTQ05RaUFOQm9ER3RmY2dHcXVCMnJnS3BMRVJTS01jU0dNL2lFYnBZeEFOOXg0UURlRE0xOHl4SVMrMnp2Zk1oV09aeWs3NEQ1djV5WEw1bnphbC9ndmJWdnJXdmZvTEVKbkxRREkvQXNua2c4Z3cra0ZrZ0I0U0JkUkpIVkFudTRFNklZTm9zTDhEMFVBK0JOR3dtcE9LQld3M2N1Q1VIQkFTRlJqU1NtQklqNEFoQVcwUkNiVEZhcEF0VHYvMXY3aWU1amxTbllDcytyV3JQYWYvL3VjUlU0S1VWdHMvNlVvNXdYYitmVWdxTCs1VjhuVWNnVEZJN3FTL1EzQTlxa3JGR3hXTVdMeUFyOXF2aVRMMFU5b1NyK0VJT2dOa01wdUxZUGRVbHdxWkNvWnNRc0JYSWpXUzNWSnhWT2llNmFpMDUxYU12OFNqaWw5SUs5Vm5ieE54UXVKenRIVEE1YTNZc2hDQ3BuQVdlT2hzdndiU1RBYUhHY1ozVU9BSTFPVGJZRU8xNHE3eFlnUnFsTTd3dHBMZnBXUEpFMFZOaklaWnNhVnNLWGtpazFocWMyYmEwa1YxOXF5Y1VCeXVkTExYakpDWmFHVVlXMUJJUVphMHlFMTltaGtTZlNZamFxMkNJVms5ZjE0eGYxNDJmMTR5ZjE0OGYvNTgvdndaaytFTmgrN1NrUWlVVkJYc1MwN29hQlNYS2lSU3k2Uk95a1RyL0VWcjZLNHdESUVhVWdXejZoSTZqczVmNUVvdGFhOHBFOWZuTCs2QTdtck5YeVRQMzFtZDBERXlVNm9ZbEZvdVZwWm9OREtmYmZJOUdxMkQ4a1J5Rkx3ODdiZUhoWHZqb29vYnNjSjMvVXVmT0FGbUlQZWp2TmlqVVltd2tJUi83b1BMamFaYURBLy85bnpKR1dxNElmL2p3NlBrVmcrVWhMQlBVMFlFdjZvbDZTUmZTOUV2M3Z1cnk0MGx4U3Y1dDhMY2V4RjR5NnB0STFZeTNDdVhPWm1Vd01OdEpVSnBUUTZmaWxFcnFtaSt1MWs3bGNPdzh5L2RZZCs3WUhkWGNuYytneWR6bzluMnpwQkUzQlI5WnE0T3pqUXRRc2lzbU9yQ2Uwb0RnMXhjaFByNGxNeGdSSnFBMVpWQ2E4Y3JxVytURkQ0ci9xdnZxRTdEc1ZBRTlORjhSdnYzZnB3QWM4MjRPWDNjUkJUcWw4bFdoNno3L1d5RHY5ang5UzhOUWxlRWMvUW05SzBYWlprL0M1bmRZTFRneHhDYzNkeU8vU2g0SG5yL0ozUExIWnZFaUs3L2VSUmJjRU9zVXFMbkU5YjhKRktzbkMwbE52RVZZWEF5VXduTlc4TkI0dTRYTUlWRkNTeW9aY0YwWVJlbGZaeWFDcU95aVJhT3NaNFNQWlBUN1AvckpPWTFnaXBUMHU4OEZ0dUxWbk0vRk42cGxQNDhjbmlHZnZONXdzY0h3V0FNQ1lrWC9XUHN1UnZsWFZqMnY2Y3NmSTRwS3g0dW1WZk1MRm96TjYrWW50OFhydG1WWC84QmNFMVZLY1dGK2RGT3hFeHlncHBSclpiVFVMZ1JIRmxnQkxFMHI5OUc2VGNoeDlVYkFjUDNBcFZlRDRFNVpCZlFjTDJBaGtzQUdxNHZ5SENGd0tvY0RhcktwKzFBS2ZVaHNBN3RCTkxRQWRKNEFxUnhGRWdEbUg1a3dQU0RBWlZlNTREYThBWFNRQUpwNElFMDNJRTBnRlc1REZTVlR5OEdsZVhuZ05yNEI0aUdaaDJJQnU0cGlBWjhINGdHREZpVmE0R3E4dWtra0crOEIycmpheUNOZzBBYU40RTBQSUUwU0NBYStENFFEZjgvREJhNlV5cXVyL3F0SjVydTN3Qkl3b0ZJWW9CSUxnS1J1SUtRRVBOQVNGeEFpNVBwUXRCMGVRK2NMaWYvSUZhNHREQmVZeEU3dGJBclRsSEd0U3R5V2dLRC9oVHJ1YUdmZU9NNnpvaDJMS2JvMTFLM0ZwNEJVMXJGMFg2M0NhZDY1TEFFUkhzbmtIWWRrUGIzUU5xUEFMUlBBWjA2RUxnVXJBRFN0Z0Zxenh0SUl4ZElBd0dpZ1FDbDhWUEFMSzREM0RKSUFacFRDNURHQ2lBTjRDcVNBbHhGSWtCcC9GUTNpSVk3Y0R2SkdLZ05OeUNOODBBYWFVQWF3TTAxQkNpTm53TGFFZ080MWFnSDFFWWFrTVltSUkwS0lBM2c1aG9ibE1aUGRZRm9WQU45Z3duVWhnR1F4bi84SitNL2FHUUNhWGdCYVlEUytDbGdGcGNCZlVNSjFJWWFTT012SUJyUVBSQU4zRUVRRFhnUmlBYXd3c01EZmNNUnFBMS9JSTF3SUkxL0Fta2NBOUlBYmJhZUFsYi9Ma0RmQ0FScW93Skl3d1pJb3dGSVl3K0lCZ1c0MlFxc044eUF2cEVKMUlZeGtJWWJrTVpkSUEwZklJMzdJQnJBZWdNSjlJMXFvRGFZUUJvR1FCb2xRQm91UUJxbElCckFlZ01HOUEwdG9EWWNnVFQ4Z1RTU1FUU2c0eUFhdUFJUURXQzlRUVQ2aGhsUUc1bEFHc1pBR3BWQUdnZUFOSjZBYUFEckRUYlFONFJBYldnQmFUZ0NhV1FBYVhpQWFFQVBRRFNBOVFZRjZCdHNvRGFFUUJwYVFCcUZRQnFIZ1RTS0FUVFd5UTJiWkJzQVFIWUR3elVCN2llZUFJVUx6d2FGU3dRbURmckNwTkVCOWJEVUw2M2pXTEYrUmlrbU45ekNuSEo4a0ZVWlI5ZTNXV1FJT21MUW1NUkY2OWN0ZHJYNDI1dnZwUGVHUDMrM3JvMzYyYUpKL2ExV2Y3V3BlVmZiMjFXck9Cc24yeHN3ZEJuMUpMR3N3UDdWaSs4MjZRWGZUR3Q4ZFg5Z1puTGZxN2d2VmxwLzk4V3JQWW9aUk45aGJZOE5mTmdUVHlLQ1ErSW1FR1VLaUd5bUlQZU5mRWkwVGtXK2ROV25WWFBzdXRKOFZkdWRIOERnYWNRV003L2x4QlpFQzhMeFVhNkd0QlpQV3UweUZ0U3dWaENqTFh4WjM1VU11aW1NZk96YnV5SnJUOUdHWEdwMlYzcWd5TGxCajJCOXBWbCtRTDhsUE42T3ZITGtmWXNXWjhPY3FFZnVvVnIvaGNoRDVhYUt1aW50eHUza2hEOGJjN0pQc3lJWjBNY0lNVmEyNGN1VFJHbldWem55NkhpanVxNFVHTlZwbGxNb3FwRHZYenBXSVg4aTUyOFdGRUxucUp4ekxSa3h1c2dEZHJrdGRxS3d5TEYxeXpoNjRhdTg4T2NkWGp4Ui9BMHVpd21qckhiWnhIUXg0bVgzY01iUE8wdzhXTkUza09iWlMvb2FVd2E3Sk0zVlRoVmpqUkVyMGFmdE15Zk9PTXlIU0pxdG51bUwxS0dxNFlSWktKSlo2SHRsMzdlVUFwbWFFd0xQRFlHbHp1ZzE0NjV2WnJwY2hqSTc3YXYrWHNvOFlEaWkyNnJIc2t0enJTMjhkWURjNW4rTWJQSEk3akhGNGpXTUFVbU5CalhXMk4ybXpOY0dvcEQ3Um9kbnJMWmtobS9iclRtVGh5cXc1RHA5azFCK0N1ZFI2NmZIMFpqMUl6dHVKdXdheEVaWFVZTG16blJFNytKeFd5L090SCtBZXh6VHhPZG15a1R2YnRqa2xMTEh4ZDc5a0Z2UDBRbUtyVTkwVWNXRDF5cHB4YUlvN1Z0ZUp3STlzcUpvalZOeTdWdHJiYjIzNXpiYk5IUFlXM29SRGJ0eDIwSnVzNGFqeW1OeW52Uy9DM0RPOUlnZTJlWlZJVkY2elNvYWsvbjlGTVF5WVExbDZsQitaWU5GOTUyODVnYnF1NU9rZTNmZzllck92V2syK2JXUm9oaXpxcDVjYTJGd0xESGIrcHdrek5mT0ZuVTUxbkhKVEZMZFN2NEVvb0R5UEQ3TGpRTTcwaDBRVlJDYnYxSFJZaXVvVlhjbk9SbVpoaURKL1k0S2ZkdTJoTzFIa3hndHJwMThoY1k2L1lDQ1lKRnZyMXpXL3ByVzlhNXVEU3pZZVNnMitrVFZIV2VsdFhPY1QzUE5aRXdaSlpabWRjck5MbVdPWUVBdjMrSGdaU3pZSlBEOXhzZWhvQkNWWUdJWURNZmFPcFdPRlhveEJoOWp2Mm04R3lqYnNIdXpSQnhyM3B1MVJwQ0p0UzRUaUViT3h2WFZNUTJySTlja2hyQWRlOWE4eTRpN0p1emVUNlhaeWZxdEwvc25WR3duSmliVE9La3lUSDYzSG1wQ3pOSmNDSy8xVSt6WHJyUTZ6MjhXU1JjN1VYUmdMU21iSWExV2ZEVkhMVjlIdGhLNU5seVpnZTJmRUZPM2Q5akUyUEdVR1lJZ1JMUGc5SWlicTBPRG5iRVNtUjY2dkhpbWExRnpZZjBKUmRBZTFKam92ZWNhSkN3MW9ORlUwZ1M3NWNsT3dXdk9IVWNQU0d2WUUzbkZ6Y1c2RG1hbFhsVVdjdEx3MTNUeHlCckh3YWtEOEtGQm9UMWN5WnA4NTBHUmFHNUlZbkJuNjRlM1ZxTS8wU3hxdStYYW5pNXhjZWszK3pOUXFOYmRPOGdVN1dHN25tRFNzRUgyaEZZN0dlNGVOc3orZ3VFU25wcUJzV0lLVW1WYkwzZDFCdTdIREZCbHVmaWUwRmR4enlvTVNaRmRVdVdsQm9YQVNydlg2M1o2cDFlUXVWQ3NxY1kxK3Jod1dSOUNUN1dpT1I4Mnc4WTF5WWVPKzF1ZGQ4VWZtR3pCM2t6dnB2V1A2M3AvVUR2ZHBhZVZKWjdUanRReC9jNUt3THFhR25CZ2puS3QrbFY4N1VaSko0M2RVSDU2MXFMZkt4TmxZWm1teVlPaXBycU8rbGlheHROTWhuS25YQnBmVmZqWTBOY2g3U21UTm9FODhadDczcEVya3N3ZXRhb2M0aHdHNFZ2dUlKTDI4NDlOajhXZWhxWW5zMURUMUpkSFJvNVNyUm9jSE9uajQzc2NkRWdMU0R6S1FEY1BrOXg5TXJzN2Y1Z2JzVm1yUiswY0hTOG9DNEVLaXM5ajRocld0Rk5WR2R5TWhveUxyS0tLWFY4Rkh4dUdaaFV0R3UzOVpWTVBMTFBYY282d3g3dWRNVVpiWGROR0h1N2ZyVnVtbzNSOUNNVzhmL1lNcFJMTDdSMlNFVFRrdm5TRDFIYVRLeWZtRE95eUptR21rV1dzRUUxNUhLUHlzVUJSWnNJMEZHalJvYzFRM2lsN0tJQWZjWnJna0lDOVB4eFFGdEtRdWEvMmxoaDI2eUUxclBlQllkcEFpbnB6VHIwZkxCTWY2REMwQlI1dFBnajNEaUlQMTBsSy9OeVlMWnoydHR3T1N5NHVCMzNzVGYwcFVkMlJOcDFPWEpuZ3lVdkZHcnJ5NkxzZTNPeVRUMEtXTlcyVVNlcjhKL1BZemhOOVdhOHJNbVl5YlVxclkzNk9HV3VTbVc3emMxTjMwRWlxSXI2VGtWZkR6cXFIekx4NlVoVHRWSnNlZEcxR3hjSnhIU1FrbmxhNzJOclJZTFJTems2c0lSRjltYWdNcHJyT09keE5EYjVqYXU2RjNZVWpsUGNJRkEzN3gyOUxLamJqREhTNEdQTXVPNlp2dk9yZEM0M3JxTXJzZlAwQWRUVXAvdVluOFZxclQzRmpscHV0Vnh1WWlHSnVtbDRObTJCM1dCZFNZNU15NzVwVk9CUDROY25TUUc2OGRaYXMxNGszcHBzREk3S0ZKVFZRdlIzYkxJb3lvNzdFanl5YkhIMGRVOENsWkgvU2JFMmtQaWM2dmFjemZNaW1wRE8wa0NLeTdIS2hxRi9YdzdNd2NFN3Q2L2lzcUEvZXRFMENNMk83Tkt3RFJJczFzaENiZWpac011SkduY2lCL0JySEF5Wm9RM3BadWRYWVR0enhCN3IxcmlseE8vM01wUDRGYVUrbzY5VEx6RmxOWjE0blBvdktVcGp6ZTJ1MU9ybVltRjNzTWxacWVKYVlJMVltenJlQWFXZElab0pQUmNkekU0emE1cjk0dU04eW1xUXRPZmZTZDVMR1M0blgwRkxrWjY0Ri9pU1huSnJDNEs0cDQvdnUzdHhxNUU4U05HZTdwbWFmRjVlVGQyMnA3cXk1S21wZkpGTkZkaHlJNHg2Z3hTMXBNM2xxM1padnIzRGMrTGhNci9LaDQ3ZFNQN2gyYW41dFVVZCtWNXMzcklvMUhOMGtUTUNGZENtTWQ1UHpPcVpxTkF3S1BMaEFmWFplWTZzV3dGbHoyOEJqbFdDV2tldU43SWwwMDVUZjZjOHFyWCt0RXZrcE05TUNUaURENnQ5cVVlRG1KUXc3NC9xUUJtNUNKSTBIaHpSRlRub1ptL0dzYThZa3hMOUZ4allkTmhJblJCMVk5dFZkeG9VZkRocVJXWHJaUE02UjJnelJ3aUU2VEIxUGg0VHlOSmt4RGRxczRjdVJIQW9lMnVGZ1dHQ0RaUVh1VURlZkhycHFkR24yek5qMHNlYVRiaE1sSFk1Y1BBWHhRV1crdFRsV2MrcEdwMkpjRnBnMjQ5SlpqVU90SjY0a29heEhFTmFYRnduTWR2aFNKTzNzUzZJNzJyNzQvQ3grZEd2WjRKeU9NSEdVcmJQTmxrNVo0K2hCVCtLY2VXQVY2T3FyRW9sRlpkNC9mcXZ6QVhZYkh3RXRITnV4cXRxWGRmNEVPQ3ZiTHZyWWRqWjFmZnVRWnkvRE5pNC94ZCszVzhhZ1V4dWE1Z2l2SzNIYnU0dnQ2ek12N3pqS0pkMWhkOWphcjhvL1poR0UzaVIwR1hqc0VOTDEwNjNMWlp1UnJwb0hjZTdGT01Td1RNUm1pRkdJZmk2NUJOTHBHTHo3cmxGNmhQWE5pWUcxeDlPTmY3T1E4TGtIRWFyWUJrM1F1THc0eG95OGxwMEdvd1V0alZEMTNJbTkzYWhwV05aZnZ2TXh2ZWJ2Z1h5bVI4aUs0Zy9aNFgvNzdIbGpmMDROMWt0dy90dGx3b1BHdWEvdE5lZ2I5TGhEK1JPOTdQZkhsVGdMc241d3I1ZWhvdzM1VVlza3poOVhOVWMvcTBQS3JyTWlXZTM2Z0t0emZrSWlmbnhmSHJUMEdQcEhzWVNxYkx5ZTVpK2IzdGlUYmIwbHhDeWlmQzh5REhNSnA0d3ZIekY1M3ltQUcrSkYxWFJJZFNTb3VuSGxBdldjakpZZWc2d2wrQi8vNENXeno2elN2T1ErYjdmRlNKaUFIQnM5NlYzNjlsd3Z6cGlEWDVBZGdoWHluczdSM2QyTmkvMXJQSjc0TVRsZTdVSmNUYVJwY2J3bXZLdXVxN011ckwwRzhtMXF6VWxSNk5BUUpuWUkzQmhGOWJTM016Qk1LVFBEd3F2UVdoUFM3Ty9IdTloeXBvRTZtWHArS2E3dlYrK01Nc2VIM3FFRzBQcVRTVGR4QjZzc05SdGRIZHFpVml3WWZIaldvUEF0eVJ2OWZmNDIvdG13NmsweWI2dVBmMjhIRkdwR1I4S3VYcGZhVExyVDdGYzh2K2IzM05yd0t0VjQxTm4yam14OVNOQitsQVFwR3lQZ2pMTUwvRUNaYVkvenJjQlNtUTM3MEx5eW9NaXZJRXIvR0lRTHV6OG02dFp5bEN6MktQVXdDcGRmVUx2UWpWQjNpTzZsMTNEbHp6ZEFiTTM3YmltWERxM2p3aGRrbE90MUhZZjFpNHdZVSt1SVJxVElMTXVockdSUDVIcTZkbVh6TnBzdHFTVHIzTDBhSXJRNVZ5Y2QvK0gyNGNvR2VQK001bVM3MGovM2h3ZS8ya28zMlV2V1I0blBuZDBRdDlKb1VXT3QvM1hKV3MvVnhaNm9BM1lKSTJaR3hyTW5OdDlVWmxiQVU0THhFM1lrK3ptS1orOEJYSENoYmR5TDRqUnMzOC9UdWFTU08yU2poNnpObUhOTlBqOTVZTnVIcml1TkEvaGpSdVBWcFBwOXFMeG5iVmMzWTRWTGNXSGR2RkxSaUVVbVlpc2hsYi9OVlZmTjlPRmVsa3lJTDRlbURnV3R4dC82eXQ4ckF2NHVlOXJCMXZNZTNMWS9ZVHBkKzJUcDZ3bitBTVd2a1ZtbXJweGZYbVFwSTdvcTNyM2d3S2hhMU5pUjFaS3FNenl1RzY5WlhMc1VnbmZraDBJWXQrNU1DNThBSmlkaldRL3BWbTd4MHhyV3p0dDlkbkNzblpxZEtYSmhucnpOMHFqY081QnVnOEtpQzlBSGVtY3d0dkZ5RkN0TEgxTjRxbWRPaDcvTmw1SEM2QWlRTU93Z3JrU0hRSXVpd2RPcFgzUjZiVHU2OHdCazJuYlNueXFYWGRmTFI3NnNka1RxNW5kSlZWanhrVWRQRTNKbFBmSkJEMXlGcnM2SFcxL3hhdWN2Qjg3UW1FTG5WZTBPaEZSQnE3ZG02L3pxSUI2VEdXU1M1UjdrcEZrMFBrclJaZWlxdmE2UUJrSnZwZ2UzUG5IVWhiTlMxS2V6UlBJQ3FoaHo3TU15dmpDdmM1YU5aejNFQmozckd4a0lzZmQ5NURFUVZ1U0tUV0RnS3dLbmVNbzVWVVVNcnFtc1d5dXdnN3U2SFQweDVDRVhKL0pmTnIyY1p2TU5rVlpmeFhLVmhGYk5jZTVlWC85bmNHYS9QQzYyNm5sVEZ2V2lBNTdlbHRvekttN0xXQ0toSzVFZHFjR2F3RzhKZTNGaURyYnV1M0FzWWErNk1GRHdqQm9MWWFiU0VDOHB5ZkNPUm5HUUNqbW9xWkRqSG5pYUdrRDhQSnd4ajQ2YWhOSW9qZTYyR3JwL1lJeHc5eGJKSnc0bE82UjJkRUlreThqSFBtaXhOa3ZzbkJBYmZPcXh4aEl2SGI1V0kxSGdrdUZNL0pLZkVZRklRV3lpREs4WmdYb2syV21qbERKc1Y5TWliakJtTzVlbnkwd3BzaVcvSDZwenFoQUhIYW5TQzA0UEhpbERKSGp6ZzFaMVV5LzZweTBLME9uenVVa3hRV3JpUFBwWlk4SEJzYkRNeXNZUVozNEpQUUJWYjRJalNCaysyZTNTVXY0bUpnTGQwVitNODVwNlRGU0c5bkdkbnV6RTltY1hXQ2s4b2dabEwyb2RlY3F1alFrVnZEaGtoVEFVUVdkV2RZU2JYUTB0cFJWd0dua0RIMkpNR3pDT3Y0UjBGMzNwWTBUdW5NcHpWT1JMOWhYS1drUTZYYWJkME02dWtHcVQ5WjUyVDNOM1dpVjBIaEJHeVU2RmFiV3BBbDlVMFNyT3h6OFpQbzV6TjNBc1UwVk5WTWJZNjFEY3JiWlpJYVIxWWgrWmZaRlhZRlJ0QnpIVE5GdFdidjVraHN1c1M3YXMvNUpwU0MvbjR3WXRkOVNybCtlaTNlbEtCd21sbGNzNmlndERCTnFqSlFraTg1b25zZXdqOE9MdVNUcWkveEFqNFF0OWplRytBTGx5VlptWHB3cURLeHlYdEllcWg4UEN1dEJqa2R1cVphamE4OVFmT3RiY3pyZXlwSktHL2pLOXFGTE54cjNWbkx0MWFBbkZ2eVE3RE9QTFJQUW9LN1JsQWZyUHBhRktOWDhYaXgxMi9taEoxVm1tMnFaOVoxV0M3MVM3OVFRTmRXdEg4WS9ja3JHelNrRi83dTZUSEJIYXNPajBhMDFDVWVBbHRSc09IVXhXUFloTE9RTHBhMnJDMEhuZk5scngzalN0UUFWNE5hSXlHaTdKWWg1NXpJWlhSOGFURWJ6aHc2Unc5OXV2QzYreFN3M0l2YVlwMkdLOWpzUHQzcDRRbmNodXBhQlJIa1dQb1hLWWtNc2FLVkJRdmtYbjd0TFJ6MmI3am5jc1lvb2xoY3JpN25INDk1NjlXSFJIK0JFbER1V0VSWFhUUjJpbDV4ZWp4MHlWYyt2clM3a3c4c0dwcllhM2x1MHloeUZNTFcrd1RkYWtVN0pubjZxZWVFS1RRbktSYzJGQzBWYloyZE9ZNDBnajlRSkRUdUxJRTZWYWgzQnZGTnVEekJ4TTFLME1xT1ZWVGVQVS95R0pjalQ3aTZINWRKc1o1RzllV2hIcmpNT0tIbUpmYmJ0RGhlbXJUNzF6NVJISzR0QmpGeUkxNUxzM21WYmtxZnJCWEU5VitxeExCSDRZM1RJZ3Bkelg3SGVUYXdaamo5dVd6SmR5L2dJaEtkVEh3bDJ0YVFqTnBrYkJWMnJ5SXA1YUppdjRCZitxOFl6MXZGMnNRdVNCeDVOd2hUeUp1bHZrSmZLTnR5RHJ3Vmt3UEovZHZnYUt0ay9Id1RXSmNqc1JqSXBiQllVM2FNN3phbTdOcHNrUHFjNnErcWNkQmlmbXpHcVFRdVpjS2FmYWdncHQwSVRaSjFlWDkwTkIzZXprVWlvYmoxc09iYytsd3E5Q0ppeU01SXNKU2Q5Y3M2VkdOYUN4OWowcmU2djVLUi9yWnZmNVovL2wrTW1DVDJ2U0dhcWlyL3h2di9pZkhzK1BlbGxwbk5UVDJwSElSejRmdjVoNk1VbkhML1AxNU84ejRvZFRvakxQcGV2bkwzMGVWOWRsVW5NQ00wNksrMlJWRlg2Q1cwQkN4R2tURnQ4eHZEMVg3TnNOMDk1SmkrV3Z1YjB0cW5yNzFOVEFHZjJSbkI5TkIzajl5b1VySnNkSFNqVEd2MVpIeDhOQU9QeGdTcGNhNEZYcjRGbnJzTXZGenIxSVZwNDNVaHQxOG96cmlHU0lvdEkzWUlrVTFsWnBDbFVLaCsyYnlpajBzblpNMHBubC85ajRJbHBGcEFmS2RHN1ZoaHV0YkV3ZWxUYWwxc3J6anR0cXJMRUdoYUw1VlY3RSsxTmpvZzArK29tenlvaWd6cE5yMHpLU216TmZ0a3JpcGZHTjJVKzY5TGRtNmdvSUM4djhHYjR3amRXeEdXYmFaV0p0ZjlqSU5TeEE5VWxXTlE3R1ZNZnBHT1FZanl2S2JxSGVPQTh5ZTVqUG5SNnBCL0g5OWRHYnVqcmxVRjVFRFBkcVYrc0FuZkJ5dEZuU3c4Mnd5WG5kOGNRcUV4ZGh5aTNLRUQ5OUZCN1pUaGlHTDJoVmFGSURGUXIweCtPOWUxT21idmhidERuZWFxQ2NtTkY0QnJuL3Uvd3lLWUtua29xWWFvYlgyQmsva2NZMnZJd1lSWTJJa0NwaVAxMlprVjRvNExxNTRnZDkzSmhMN1NVWmlSZEhOYTN2aG14dGpIdEM3Uys0eEhGNWIvWWdwUU1ackptNGxycTBiR2l3TXo1SHhrNmJPQWhYOHR2RkYwb29aUm5KRXkrblk5RHJGWHdIMm9ZdmFwZHAxejdpdVBNd25yZytVWjh3VjBhVEcxVFpjZjFxU1VkWmVrOE1TazVYS0lWVlI0VTgxZzNCaEtyUlo0cXJYS2dNOVdFV3ZFcWsrdkwvWFluVDVnTTc1eDZodktiS1Mrdk5ZWWxVczM5cGYvRlVCZlcvM2xYekFORzNMSGJOWStOMG9xYWxwYUZ0OXhxWnoyWmttWERPTzQ2OXJjNDU1bFJCbVNEODZhRGlMdjdFbzRyZWdoMEhDYkZMU0RtaWVPRmlUdVEyRjZ2Tlh0c0Z3UjVZa2J4Y3NOcHplS1hRdS8zb1N5bmpzNS9jRHVVYk5idUVFQlVNWDFvbXhtQUtFK0pRU0F1L2NBSzYxMXQvMnpGL1lxT242TXl6UmhQYllsWUVZWHl1dUN3Y2puUnVzTnNoa0QzbXRZam9jZFZ2N1hGcmROckp0UWZnMzdzWUJSQnpiWkJDMFJIWWswNm9yMlFKZVhNbjU5d3MyNHhiWi91N0xVeXp6Q0c3aFpMYmkzRlpNbDhRMU14T09xZHl1M05lY3dreDZKc2F6akd1YzZvU1o4dURlSU5EdXh3cG5qdEd3bTduOW1zeHVrMmlHS1lZNGxMYTd0bUt0dEgrVmY1dVdkbjJ2cWtpdFRRbVl2ZlMwdGJFaW9iVE95dUlUMDUzTnIyYUN6OSs0WWZ6cS9oVEJtRVRXNk5LUGhRb3QxYWhSNnBLNjdCV2JzU2t3Tk03bDV6MUsvekZPLzgxUDRKcUkrZVhQK1FmYmJIR3JCUWtGYzJoaGVzbTZydjQwNHJQT1JxbFA5QlRqNHBpcnB1UDV5RmZNa1hZK09Yc0ZQeGxHcWZuNXFEVDNDMzVpTnd6M2xqam9Ub1RZejlSY09GcG01Rmp2b1pXdHJJeVJ1aVZqelZpNFVzVGduUFFjMDNXdU9rbStVQ0tGcFdXYWFDY1RRd2ZHUzBqa0ZDM2JIcm14TDVRZjAzSGc5UEs0dGFCaWRVMEM1TnNoYjVXZ2k0bFBmNkRvYmU3alNEZVBEUzQyVExYUWsrSGlUbFh4bE5WSStVYTI3UVREanBUbmp1R0JuSHZTMWJhNktBVk5wZ3lLQldYRW0yTG9WVmFKK0NFOHNaU2dZOCsrN0gxSVR0RzVGeHhvK2F4ZWVMcHJQMWRIU0lNVHlneFBibEtmWFBrY2ppN28zc2RVOVlhWDFUU003eDJVbUljUHVkWENzVXU5VFdwUGFGTjFWUmdTbENsbFZJdDJEUHA3U01QaGxsSTRiN2YxcXZ5WURVL3R2bjlHUlBaNEh3bldabXRtOEtmNFVZSjRaejNCUzQvWlhic2drTmhIOFN5S2hMUlFYdUxJYVZvT01GTlg2eUtUMkVtZXBtbk5tRlJnVTl4M3NubmM4Z0RjSTM5RjZMMURtbkhlSWVUcXQrZk9sYzRtOC81ZVlVVzdxbnBGbkZkeitjUFZ4VmRJWnlnR3ZRTkVCNjI4UFRXWXBhT0RURndkcHlhTFMxUzdZNUNnb2pHWTY3RkxYM1E2elRvOWJUSENTNHNKSzdadDFIWjF6a2NGMFh1TlRISVYvbWNYT1hJbzJUN00zc3BBU2dSTzJHK0M3elNSaXVEWXpmNGlRdyt4QnVXUXU4TzA1QXRHRkdIZk1xbGs4NWRSenM4aU54dlp4dSthdVE5YloxdjNoRWJucDRvdWdFR2V5a2JJNDJLNURzRG9tOWdOMkt0eU5yc3F6aHQrRnBEUEtMZ3lFWWVraXBzWVhDME9FUWFUQXRQZzY2SFEvVnlhT3p3RmdnOWhoNmpYSUcyYXJMbGhjMDd0TXFYSlpwSk9sTTMvVGlRaSs4cXc5bHVnZXdhbmRRb2pubTdETW04SkZwR2s4UHh0UGpSQVFxR2JQSEs4NEJsTkdkMmYyZlUwckdXRkVzSDloZTFTU2RxZHhvYXNDb0ozU1NPTE5vd0lBeC9OLy9Fek5TQU05K1YvTDNodU4wRy8zTkd3b2pGd1RkclR5TUV0NFp3RjBiakJvUGdiVEpIcWlhYWFwaFk3Y2hCbWxZNlIzYXoyODlGcDNma3B4K1Q3anBDSCt3aS9md0VuT0d2YWxQMk5GdzVaaFdBYkxzNHdDdUE1aDA1QjJ1bW51ZXc3eEV4em1xMC9IMGdJV1ZYS2dFN3NieHZJSzBIYjU2MEpuNzIvUndkbDVoS2FCODUzekF6T1I2ZXIwRDdHcmI3Rjg0ZVl0a2hXakZjWThVVWJqem0ydXoreVdkdHNUUmpya0ZwanF3K2dpVnNvLzFhcnVpTng3dG40aEhRSWNVbm14RU5ONSt0RnJ4LzZScEpndHNid2dxTFhjWmNPRDFyL2w0a2FYT2EzY1FiUGZ3UWJZa1QyUWVoSGluRXpMaU5YTkd0SEpwN2hDR3FoUFRMM2w0QzU1Y3ZFSzJ4cjZPV3MxT0ZWRHhuNXhjMm12VnR4ZTVEUVJXRVhjei9lR21rL3IzSy9qSXFKTERFZjM3cC9CbGgxZXpFa1pra3NRcHhHUlhxckwrNmlsYWlTMGdkcmZKWk1lNWNrckVnM2FKTmE1M1ROVmloOTF3ZEltNUpqa2tyUG9kN2Y3Uk9QOEJuNFk3NEkwYk8vRExkb2hQekxTUEdDclhHUzFpYlQ0elNzMHR1WGp5VmQ2LzY4azFsQ216YnVjSlkxMzVwQTJzdzZ0Z1Uxelpsd2NiRnFpRkNLR1ZuL0s2SCt1Ni9sWnljWjk0MkdudGY5aU45eW1waGl4V25Yc1N4VHR1VFRybVNWc0xlUTBXdERDc3ZicCtQNHF1dlltMEtFM05LdzdHbyt4VXhrZ3UxUE5IKzhSTjlQZ0drdVhaNHBxZU41c0s0RGI4djR5TExEOXBLOThNcDRydG0yNHZkeFRtejUzTXpmRHRRM1U5aW5lTXM2VTZsRXphOFBudWp4cnZjdko4dlluaHpsVDJhZ2RaWDFzTHBZOXdvSFNIN21Wc29IVC9ldlNOd0d5MTJ2cEo1SVZYb3BqSTlHdGlhZGxqSDYxakZVSzVKSzJJbnZwYXMyWU44bEZWMVFoK3htakNyZmpvL3d0dldXL0pTMmdMdFpPNUdER3BzZllkcjNmbzJ3akJ1WVhYaEhRRVo1T09UK0huM3JEanhXS1BEYlFGMndkaWJsdkEyVDNhdVlnYzl2VFM3SVVrd0QzSnZtWGQzRVJSVDcvRzBpNjVzRy9HR0ZqYmlHNkdXOWJDYnJ3ZXlpNWl4dGlPKzY5aGZxM0dWMDNhWXMrbzVEOHFDUnlvejg2RHdxZXZFZFVzcUVxUmZPVytLV3pMRG5URjErT3V0eFovOGpNWkxjY2ZEOGM5NlRLdzMzL0xGVkFVUVFyZG0rZ1l2dEUyNGMzdnB1SnBmMllCcnZDMHJaY3hvSko0c2ltKzdraEVjQzhWdEV5SktmVVpsZnI3dEZ0TTZ6d082T3NNLzFnRmJEai9veGhZai9sMkFHS2R2YTJjbnV3bE10MXFNSUtwOXk0WTdoUnZWamVPMEZPWCtIcW5lSld4Qnd1cHRkK2txL1FMYVZWVFdiVVdQZktlbW44bGx3dkV1WXdpWDd2djRKUUhzdVJIR25GQTlOVk41UjZXNkY5dTBxVXpBWHpHVlVaL3VQUGV4VUs4cERWdWYzcjNzczgvODBWK1B6SDN6MmZQRDNHNHUwVDR3OUhDUVhGYUkrRFFlN2RSNm0zTEIrMEJENW9WK0NCcXFQNWNZdFRhdmVMRUFKcjNkYnVzZHViM1FMdEQ3Yk1kbXJRajFnZC91d20wblkxMFFEZEgyVjF3NDlERTZwMEpPOFQyaW1ab09MYUtIRXNYQmp1SnJzWHFsN05ibVNFRndvVlZoZlZucGhGTFVkVlg0aXBsNm9oT20xWHlVUURuS1o3K1VvSHcxNitMeSsra1BiT0tkcmUraUdPR2ZOVVQycDRYaVVRU2JFSXcrZXZMOW1id2VJU0hMaGdYcEJBYWM5WmFiWnZYeFprMHRReWs5SDN4MnVrK1VkT0FEK2R6M3ppTysrdmtKNnhtOVdWNis0c0VCYWFYRTNHdXRYWDUzK0NkUExaOUQ1MGdJdnkyZTBudE9GcFp1RkUybVIwNjlTcmpqd3R1WVRUOGF0OHVER0hoSjBIMVJzRi9ab2pySy9mSHU0VXlQcVBpdWVOOHFjVVZJMnVIRE0xYTc0Zm1ZbmNSMktpSlZ1WXVZS1lpemdJbDN3TVJaZDZrK3J3VThndzVlT2ZaMWozMkhHRXRIM1VsLzRMMjFVanpGS3RuSEdtSEdvcEhja1VZQ1doYjk3Y3dVcTdNZW95Um5HbGRtTC83c3VZNnpjS08wdkRPS2dLcWJVbENLd3NRWCtTOGYxSnEwSXhoUnBCNzd6Ny9hVk5ZVFpMakFKVWk5TnBQYktwMmZ0U1ZaYUkrUEZQamhlZ1JqQTd2VzBnUEVXVWhNbDYxSnU5Zk5NRnROMUpEWGNWd0dxaUtNa08zSmZKSXIzTTl2ZUV4a1RrSzJYVnZoQnJWeCt2YmJ0UkpVWnZWSE9adm02c0wwbUVXVVB2RVBZVGZUazZJWGVCemN4RjAzTytqZWRYTFZhVnRhcUlSQ1VQamFseklOR1dkUkF4dW1KaHhpaitPN0I5ejhQR1hmMUh5UU03S2dQbjhtTWVQNVNFemdQMEx4WC83RWRLdGI3QitUUmYxeWV5U2hKZ3pITUdpdllxUm5Wd2FGWUJyTVNFZkg2a0tSbUJLbWJ6dS9xa0tnR09sVENlTzgwYXNaQnZ3cWJ0VklwY3BOc1B4L3ZuRDgvM2pzS25jT3dhVCs3c3ZuN1VFWkE5S1RveW12MUl2LzhLNEw5VldybWJsV1drT2EzV3YrK3BuV3F4RDlVRTVYNFJzclpzUVBILzZpMVJ2RitaTlZ4ZitLNDlRWlhhYmhIN1A3MzNKY3dKa2tRN0QvQ3c9PSIsImJhc2U2NCIpKTsKCmxvZzIgPSBNYXRoLmxvZzIgfHwgZnVuY3Rpb24obikgewogIHJldHVybiBNYXRoLmxvZyhuKSAvIE1hdGguTE4yOwp9OwoKYml0cyA9IGZ1bmN0aW9uKG4pIHsKICByZXR1cm4gKGxvZzIobikgKyAxKSB8IDA7Cn07CgpDQVRFR09SWV9CSVRTID0gYml0cyhkYXRhLmNhdGVnb3JpZXMubGVuZ3RoIC0gMSk7CgpDT01CSU5JTkdfQklUUyA9IGJpdHMoZGF0YS5jb21iaW5pbmdDbGFzc2VzLmxlbmd0aCAtIDEpOwoKU0NSSVBUX0JJVFMgPSBiaXRzKGRhdGEuc2NyaXB0cy5sZW5ndGggLSAxKTsKCkVBV19CSVRTID0gYml0cyhkYXRhLmVhdy5sZW5ndGggLSAxKTsKCk5VTUJFUl9CSVRTID0gMTA7CgpDQVRFR09SWV9TSElGVCA9IENPTUJJTklOR19CSVRTICsgU0NSSVBUX0JJVFMgKyBFQVdfQklUUyArIE5VTUJFUl9CSVRTOwoKQ09NQklOSU5HX1NISUZUID0gU0NSSVBUX0JJVFMgKyBFQVdfQklUUyArIE5VTUJFUl9CSVRTOwoKU0NSSVBUX1NISUZUID0gRUFXX0JJVFMgKyBOVU1CRVJfQklUUzsKCkVBV19TSElGVCA9IE5VTUJFUl9CSVRTOwoKQ0FURUdPUllfTUFTSyA9ICgxIDw8IENBVEVHT1JZX0JJVFMpIC0gMTsKCkNPTUJJTklOR19NQVNLID0gKDEgPDwgQ09NQklOSU5HX0JJVFMpIC0gMTsKClNDUklQVF9NQVNLID0gKDEgPDwgU0NSSVBUX0JJVFMpIC0gMTsKCkVBV19NQVNLID0gKDEgPDwgRUFXX0JJVFMpIC0gMTsKCk5VTUJFUl9NQVNLID0gKDEgPDwgTlVNQkVSX0JJVFMpIC0gMTsKCmV4cG9ydHMuZ2V0Q2F0ZWdvcnkgPSBmdW5jdGlvbihjb2RlUG9pbnQpIHsKICB2YXIgdmFsOwogIHZhbCA9IHRyaWUuZ2V0KGNvZGVQb2ludCk7CiAgcmV0dXJuIGRhdGEuY2F0ZWdvcmllc1sodmFsID4+IENBVEVHT1JZX1NISUZUKSAmIENBVEVHT1JZX01BU0tdOwp9OwoKZXhwb3J0cy5nZXRDb21iaW5pbmdDbGFzcyA9IGZ1bmN0aW9uKGNvZGVQb2ludCkgewogIHZhciB2YWw7CiAgdmFsID0gdHJpZS5nZXQoY29kZVBvaW50KTsKICByZXR1cm4gZGF0YS5jb21iaW5pbmdDbGFzc2VzWyh2YWwgPj4gQ09NQklOSU5HX1NISUZUKSAmIENPTUJJTklOR19NQVNLXTsKfTsKCmV4cG9ydHMuZ2V0U2NyaXB0ID0gZnVuY3Rpb24oY29kZVBvaW50KSB7CiAgdmFyIHZhbDsKICB2YWwgPSB0cmllLmdldChjb2RlUG9pbnQpOwogIHJldHVybiBkYXRhLnNjcmlwdHNbKHZhbCA+PiBTQ1JJUFRfU0hJRlQpICYgU0NSSVBUX01BU0tdOwp9OwoKZXhwb3J0cy5nZXRFYXN0QXNpYW5XaWR0aCA9IGZ1bmN0aW9uKGNvZGVQb2ludCkgewogIHZhciB2YWw7CiAgdmFsID0gdHJpZS5nZXQoY29kZVBvaW50KTsKICByZXR1cm4gZGF0YS5lYXdbKHZhbCA+PiBFQVdfU0hJRlQpICYgRUFXX01BU0tdOwp9OwoKZXhwb3J0cy5nZXROdW1lcmljVmFsdWUgPSBmdW5jdGlvbihjb2RlUG9pbnQpIHsKICB2YXIgZGVub21pbmF0b3IsIGV4cCwgbnVtLCBudW1lcmF0b3IsIHZhbDsKICB2YWwgPSB0cmllLmdldChjb2RlUG9pbnQpOwogIG51bSA9IHZhbCAmIE5VTUJFUl9NQVNLOwogIGlmIChudW0gPT09IDApIHsKICAgIHJldHVybiBudWxsOwogIH0gZWxzZSBpZiAobnVtIDw9IDUwKSB7CiAgICByZXR1cm4gbnVtIC0gMTsKICB9IGVsc2UgaWYgKG51bSA8IDB4MWUwKSB7CiAgICBudW1lcmF0b3IgPSAobnVtID4+IDQpIC0gMTI7CiAgICBkZW5vbWluYXRvciA9IChudW0gJiAweGYpICsgMTsKICAgIHJldHVybiBudW1lcmF0b3IgLyBkZW5vbWluYXRvcjsKICB9IGVsc2UgaWYgKG51bSA8IDB4MzAwKSB7CiAgICB2YWwgPSAobnVtID4+IDUpIC0gMTQ7CiAgICBleHAgPSAobnVtICYgMHgxZikgKyAyOwogICAgd2hpbGUgKGV4cCA+IDApIHsKICAgICAgdmFsICo9IDEwOwogICAgICBleHAtLTsKICAgIH0KICAgIHJldHVybiB2YWw7CiAgfSBlbHNlIHsKICAgIHZhbCA9IChudW0gPj4gMikgLSAweGJmOwogICAgZXhwID0gKG51bSAmIDMpICsgMTsKICAgIHdoaWxlIChleHAgPiAwKSB7CiAgICAgIHZhbCAqPSA2MDsKICAgICAgZXhwLS07CiAgICB9CiAgICByZXR1cm4gdmFsOwogIH0KfTsKCmV4cG9ydHMuaXNBbHBoYWJldGljID0gZnVuY3Rpb24oY29kZVBvaW50KSB7CiAgdmFyIHJlZjsKICByZXR1cm4gKHJlZiA9IGV4cG9ydHMuZ2V0Q2F0ZWdvcnkoY29kZVBvaW50KSkgPT09ICdMdScgfHwgcmVmID09PSAnTGwnIHx8IHJlZiA9PT0gJ0x0JyB8fCByZWYgPT09ICdMbScgfHwgcmVmID09PSAnTG8nIHx8IHJlZiA9PT0gJ05sJzsKfTsKCmV4cG9ydHMuaXNEaWdpdCA9IGZ1bmN0aW9uKGNvZGVQb2ludCkgewogIHJldHVybiBleHBvcnRzLmdldENhdGVnb3J5KGNvZGVQb2ludCkgPT09ICdOZCc7Cn07CgpleHBvcnRzLmlzUHVuY3R1YXRpb24gPSBmdW5jdGlvbihjb2RlUG9pbnQpIHsKICB2YXIgcmVmOwogIHJldHVybiAocmVmID0gZXhwb3J0cy5nZXRDYXRlZ29yeShjb2RlUG9pbnQpKSA9PT0gJ1BjJyB8fCByZWYgPT09ICdQZCcgfHwgcmVmID09PSAnUGUnIHx8IHJlZiA9PT0gJ1BmJyB8fCByZWYgPT09ICdQaScgfHwgcmVmID09PSAnUG8nIHx8IHJlZiA9PT0gJ1BzJzsKfTsKCmV4cG9ydHMuaXNMb3dlckNhc2UgPSBmdW5jdGlvbihjb2RlUG9pbnQpIHsKICByZXR1cm4gZXhwb3J0cy5nZXRDYXRlZ29yeShjb2RlUG9pbnQpID09PSAnTGwnOwp9OwoKZXhwb3J0cy5pc1VwcGVyQ2FzZSA9IGZ1bmN0aW9uKGNvZGVQb2ludCkgewogIHJldHVybiBleHBvcnRzLmdldENhdGVnb3J5KGNvZGVQb2ludCkgPT09ICdMdSc7Cn07CgpleHBvcnRzLmlzVGl0bGVDYXNlID0gZnVuY3Rpb24oY29kZVBvaW50KSB7CiAgcmV0dXJuIGV4cG9ydHMuZ2V0Q2F0ZWdvcnkoY29kZVBvaW50KSA9PT0gJ0x0JzsKfTsKCmV4cG9ydHMuaXNXaGl0ZVNwYWNlID0gZnVuY3Rpb24oY29kZVBvaW50KSB7CiAgdmFyIHJlZjsKICByZXR1cm4gKHJlZiA9IGV4cG9ydHMuZ2V0Q2F0ZWdvcnkoY29kZVBvaW50KSkgPT09ICdacycgfHwgcmVmID09PSAnWmwnIHx8IHJlZiA9PT0gJ1pwJzsKfTsKCmV4cG9ydHMuaXNCYXNlRm9ybSA9IGZ1bmN0aW9uKGNvZGVQb2ludCkgewogIHZhciByZWY7CiAgcmV0dXJuIChyZWYgPSBleHBvcnRzLmdldENhdGVnb3J5KGNvZGVQb2ludCkpID09PSAnTmQnIHx8IHJlZiA9PT0gJ05vJyB8fCByZWYgPT09ICdObCcgfHwgcmVmID09PSAnTHUnIHx8IHJlZiA9PT0gJ0xsJyB8fCByZWYgPT09ICdMdCcgfHwgcmVmID09PSAnTG0nIHx8IHJlZiA9PT0gJ0xvJyB8fCByZWYgPT09ICdNZScgfHwgcmVmID09PSAnTWMnOwp9OwoKZXhwb3J0cy5pc01hcmsgPSBmdW5jdGlvbihjb2RlUG9pbnQpIHsKICB2YXIgcmVmOwogIHJldHVybiAocmVmID0gZXhwb3J0cy5nZXRDYXRlZ29yeShjb2RlUG9pbnQpKSA9PT0gJ01uJyB8fCByZWYgPT09ICdNZScgfHwgcmVmID09PSAnTWMnOwp9OwoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyKSkKCi8qKiovIH0pLAovKiAyNzAgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKbW9kdWxlLmV4cG9ydHMgPSB7ImNhdGVnb3JpZXMiOlsiQ2MiLCJacyIsIlBvIiwiU2MiLCJQcyIsIlBlIiwiU20iLCJQZCIsIk5kIiwiTHUiLCJTayIsIlBjIiwiTGwiLCJTbyIsIkxvIiwiUGkiLCJDZiIsIk5vIiwiUGYiLCJMdCIsIkxtIiwiTW4iLCJNZSIsIk1jIiwiTmwiLCJabCIsIlpwIiwiQ3MiLCJDbyJdLCJjb21iaW5pbmdDbGFzc2VzIjpbIk5vdF9SZW9yZGVyZWQiLCJBYm92ZSIsIkFib3ZlX1JpZ2h0IiwiQmVsb3ciLCJBdHRhY2hlZF9BYm92ZV9SaWdodCIsIkF0dGFjaGVkX0JlbG93IiwiT3ZlcmxheSIsIklvdGFfU3Vic2NyaXB0IiwiRG91YmxlX0JlbG93IiwiRG91YmxlX0Fib3ZlIiwiQmVsb3dfUmlnaHQiLCJBYm92ZV9MZWZ0IiwiQ0NDMTAiLCJDQ0MxMSIsIkNDQzEyIiwiQ0NDMTMiLCJDQ0MxNCIsIkNDQzE1IiwiQ0NDMTYiLCJDQ0MxNyIsIkNDQzE4IiwiQ0NDMTkiLCJDQ0MyMCIsIkNDQzIxIiwiQ0NDMjIiLCJDQ0MyMyIsIkNDQzI0IiwiQ0NDMjUiLCJDQ0MzMCIsIkNDQzMxIiwiQ0NDMzIiLCJDQ0MyNyIsIkNDQzI4IiwiQ0NDMjkiLCJDQ0MzMyIsIkNDQzM0IiwiQ0NDMzUiLCJDQ0MzNiIsIk51a3RhIiwiVmlyYW1hIiwiQ0NDODQiLCJDQ0M5MSIsIkNDQzEwMyIsIkNDQzEwNyIsIkNDQzExOCIsIkNDQzEyMiIsIkNDQzEyOSIsIkNDQzEzMCIsIkNDQzEzMiIsIkF0dGFjaGVkX0Fib3ZlIiwiQmVsb3dfTGVmdCIsIkxlZnQiLCJLYW5hX1ZvaWNpbmciLCJDQ0MyNiIsIlJpZ2h0Il0sInNjcmlwdHMiOlsiQ29tbW9uIiwiTGF0aW4iLCJCb3BvbW9mbyIsIkluaGVyaXRlZCIsIkdyZWVrIiwiQ29wdGljIiwiQ3lyaWxsaWMiLCJBcm1lbmlhbiIsIkhlYnJldyIsIkFyYWJpYyIsIlN5cmlhYyIsIlRoYWFuYSIsIk5rbyIsIlNhbWFyaXRhbiIsIk1hbmRhaWMiLCJEZXZhbmFnYXJpIiwiQmVuZ2FsaSIsIkd1cm11a2hpIiwiR3VqYXJhdGkiLCJPcml5YSIsIlRhbWlsIiwiVGVsdWd1IiwiS2FubmFkYSIsIk1hbGF5YWxhbSIsIlNpbmhhbGEiLCJUaGFpIiwiTGFvIiwiVGliZXRhbiIsIk15YW5tYXIiLCJHZW9yZ2lhbiIsIkhhbmd1bCIsIkV0aGlvcGljIiwiQ2hlcm9rZWUiLCJDYW5hZGlhbl9BYm9yaWdpbmFsIiwiT2doYW0iLCJSdW5pYyIsIlRhZ2Fsb2ciLCJIYW51bm9vIiwiQnVoaWQiLCJUYWdiYW53YSIsIktobWVyIiwiTW9uZ29saWFuIiwiTGltYnUiLCJUYWlfTGUiLCJOZXdfVGFpX0x1ZSIsIkJ1Z2luZXNlIiwiVGFpX1RoYW0iLCJCYWxpbmVzZSIsIlN1bmRhbmVzZSIsIkJhdGFrIiwiTGVwY2hhIiwiT2xfQ2hpa2kiLCJCcmFpbGxlIiwiR2xhZ29saXRpYyIsIlRpZmluYWdoIiwiSGFuIiwiSGlyYWdhbmEiLCJLYXRha2FuYSIsIllpIiwiTGlzdSIsIlZhaSIsIkJhbXVtIiwiU3lsb3RpX05hZ3JpIiwiUGhhZ3NfUGEiLCJTYXVyYXNodHJhIiwiS2F5YWhfTGkiLCJSZWphbmciLCJKYXZhbmVzZSIsIkNoYW0iLCJUYWlfVmlldCIsIk1lZXRlaV9NYXllayIsIm51bGwiLCJMaW5lYXJfQiIsIkx5Y2lhbiIsIkNhcmlhbiIsIk9sZF9JdGFsaWMiLCJHb3RoaWMiLCJPbGRfUGVybWljIiwiVWdhcml0aWMiLCJPbGRfUGVyc2lhbiIsIkRlc2VyZXQiLCJTaGF2aWFuIiwiT3NtYW55YSIsIkVsYmFzYW4iLCJDYXVjYXNpYW5fQWxiYW5pYW4iLCJMaW5lYXJfQSIsIkN5cHJpb3QiLCJJbXBlcmlhbF9BcmFtYWljIiwiUGFsbXlyZW5lIiwiTmFiYXRhZWFuIiwiSGF0cmFuIiwiUGhvZW5pY2lhbiIsIkx5ZGlhbiIsIk1lcm9pdGljX0hpZXJvZ2x5cGhzIiwiTWVyb2l0aWNfQ3Vyc2l2ZSIsIktoYXJvc2h0aGkiLCJPbGRfU291dGhfQXJhYmlhbiIsIk9sZF9Ob3J0aF9BcmFiaWFuIiwiTWFuaWNoYWVhbiIsIkF2ZXN0YW4iLCJJbnNjcmlwdGlvbmFsX1BhcnRoaWFuIiwiSW5zY3JpcHRpb25hbF9QYWhsYXZpIiwiUHNhbHRlcl9QYWhsYXZpIiwiT2xkX1R1cmtpYyIsIk9sZF9IdW5nYXJpYW4iLCJCcmFobWkiLCJLYWl0aGkiLCJTb3JhX1NvbXBlbmciLCJDaGFrbWEiLCJNYWhhamFuaSIsIlNoYXJhZGEiLCJLaG9qa2kiLCJNdWx0YW5pIiwiS2h1ZGF3YWRpIiwiR3JhbnRoYSIsIlRpcmh1dGEiLCJTaWRkaGFtIiwiTW9kaSIsIlRha3JpIiwiQWhvbSIsIldhcmFuZ19DaXRpIiwiUGF1X0Npbl9IYXUiLCJDdW5laWZvcm0iLCJFZ3lwdGlhbl9IaWVyb2dseXBocyIsIkFuYXRvbGlhbl9IaWVyb2dseXBocyIsIk1ybyIsIkJhc3NhX1ZhaCIsIlBhaGF3aF9IbW9uZyIsIk1pYW8iLCJEdXBsb3lhbiIsIlNpZ25Xcml0aW5nIiwiTWVuZGVfS2lrYWt1aSJdLCJlYXciOlsiTiIsIk5hIiwiQSIsIlciLCJIIiwiRiJdfQoKLyoqKi8gfSksCi8qIDI3MSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKZnVuY3Rpb24gX2ludGVyb3BEZWZhdWx0IChleCkgeyByZXR1cm4gKGV4ICYmICh0eXBlb2YgZXggPT09ICdvYmplY3QnKSAmJiAnZGVmYXVsdCcgaW4gZXgpID8gZXhbJ2RlZmF1bHQnXSA6IGV4OyB9Cgp2YXIgX3NsaWNlZFRvQXJyYXkgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygyNzIpKTsKdmFyIF9nZXRJdGVyYXRvciA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDYwKSk7CnZhciBfZGVmaW5lUHJvcGVydHkgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygyNzYpKTsKdmFyIF9yZWdlbmVyYXRvclJ1bnRpbWUgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygyNzcpKTsKdmFyIF9TeW1ib2wkaXRlcmF0b3IgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygxMDMpKTsKdmFyIF9jbGFzc0NhbGxDaGVjayA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNikpOwp2YXIgX2NyZWF0ZUNsYXNzID0gX2ludGVyb3BEZWZhdWx0KF9fd2VicGFja19yZXF1aXJlX18oMTA3KSk7Cgp2YXIgSU5JVElBTF9TVEFURSA9IDE7CnZhciBGQUlMX1NUQVRFID0gMDsKCi8qKgogKiBBIFN0YXRlTWFjaGluZSByZXByZXNlbnRzIGEgZGV0ZXJtaW5pc3RpYyBmaW5pdGUgYXV0b21hdG9uLgogKiBJdCBjYW4gcGVyZm9ybSBtYXRjaGVzIG92ZXIgYSBzZXF1ZW5jZSBvZiB2YWx1ZXMsIHNpbWlsYXIgdG8gYSByZWd1bGFyIGV4cHJlc3Npb24uCiAqLwoKdmFyIFN0YXRlTWFjaGluZSA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBTdGF0ZU1hY2hpbmUoZGZhKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU3RhdGVNYWNoaW5lKTsKCiAgICB0aGlzLnN0YXRlVGFibGUgPSBkZmEuc3RhdGVUYWJsZTsKICAgIHRoaXMuYWNjZXB0aW5nID0gZGZhLmFjY2VwdGluZzsKICAgIHRoaXMudGFncyA9IGRmYS50YWdzOwogIH0KCiAgLyoqCiAgICogUmV0dXJucyBhbiBpdGVyYWJsZSBvYmplY3QgdGhhdCB5aWVsZHMgcGF0dGVybiBtYXRjaGVzIG92ZXIgdGhlIGlucHV0IHNlcXVlbmNlLgogICAqIE1hdGNoZXMgYXJlIG9mIHRoZSBmb3JtIFtzdGFydEluZGV4LCBlbmRJbmRleCwgdGFnc10uCiAgICovCgoKICBfY3JlYXRlQ2xhc3MoU3RhdGVNYWNoaW5lLCBbewogICAga2V5OiAnbWF0Y2gnLAogICAgdmFsdWU6IGZ1bmN0aW9uIG1hdGNoKHN0cikgewogICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgIHJldHVybiBfZGVmaW5lUHJvcGVydHkoe30sIF9TeW1ib2wkaXRlcmF0b3IsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBzdGF0ZSwgc3RhcnRSdW4sIGxhc3RBY2NlcHRpbmcsIGxhc3RTdGF0ZSwgcCwgYzsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgc3RhdGUgPSBJTklUSUFMX1NUQVRFOwogICAgICAgICAgICAgICAgc3RhcnRSdW4gPSBudWxsOwogICAgICAgICAgICAgICAgbGFzdEFjY2VwdGluZyA9IG51bGw7CiAgICAgICAgICAgICAgICBsYXN0U3RhdGUgPSBudWxsOwogICAgICAgICAgICAgICAgcCA9IDA7CgogICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgIGlmICghKHAgPCBzdHIubGVuZ3RoKSkgewogICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMjE7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGMgPSBzdHJbcF07CgoKICAgICAgICAgICAgICAgIGxhc3RTdGF0ZSA9IHN0YXRlOwogICAgICAgICAgICAgICAgc3RhdGUgPSBzZWxmLnN0YXRlVGFibGVbc3RhdGVdW2NdOwoKICAgICAgICAgICAgICAgIGlmICghKHN0YXRlID09PSBGQUlMX1NUQVRFKSkgewogICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTU7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICghKHN0YXJ0UnVuICE9IG51bGwgJiYgbGFzdEFjY2VwdGluZyAhPSBudWxsICYmIGxhc3RBY2NlcHRpbmcgPj0gc3RhcnRSdW4pKSB7CiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxMzsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDEzOwogICAgICAgICAgICAgICAgcmV0dXJuIFtzdGFydFJ1biwgbGFzdEFjY2VwdGluZywgc2VsZi50YWdzW2xhc3RTdGF0ZV1dOwoKICAgICAgICAgICAgICBjYXNlIDEzOgoKICAgICAgICAgICAgICAgIC8vIHJlc2V0IHRoZSBzdGF0ZSBhcyBpZiB3ZSBzdGFydGVkIG92ZXIgZnJvbSB0aGUgaW5pdGlhbCBzdGF0ZQogICAgICAgICAgICAgICAgc3RhdGUgPSBzZWxmLnN0YXRlVGFibGVbSU5JVElBTF9TVEFURV1bY107CiAgICAgICAgICAgICAgICBzdGFydFJ1biA9IG51bGw7CgogICAgICAgICAgICAgIGNhc2UgMTU6CgogICAgICAgICAgICAgICAgLy8gc3RhcnQgYSBydW4gaWYgbm90IGluIHRoZSBmYWlsdXJlIHN0YXRlCiAgICAgICAgICAgICAgICBpZiAoc3RhdGUgIT09IEZBSUxfU1RBVEUgJiYgc3RhcnRSdW4gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICBzdGFydFJ1biA9IHA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gaWYgYWNjZXB0aW5nLCBtYXJrIHRoZSBwb3RlbnRpYWwgbWF0Y2ggZW5kCiAgICAgICAgICAgICAgICBpZiAoc2VsZi5hY2NlcHRpbmdbc3RhdGVdKSB7CiAgICAgICAgICAgICAgICAgIGxhc3RBY2NlcHRpbmcgPSBwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIHJlc2V0IHRoZSBzdGF0ZSB0byB0aGUgaW5pdGlhbCBzdGF0ZSBpZiB3ZSBnZXQgaW50byB0aGUgZmFpbHVyZSBzdGF0ZQogICAgICAgICAgICAgICAgaWYgKHN0YXRlID09PSBGQUlMX1NUQVRFKSB7CiAgICAgICAgICAgICAgICAgIHN0YXRlID0gSU5JVElBTF9TVEFURTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgY2FzZSAxODoKICAgICAgICAgICAgICAgIHArKzsKICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA1OwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgIGNhc2UgMjE6CiAgICAgICAgICAgICAgICBpZiAoIShzdGFydFJ1biAhPSBudWxsICYmIGxhc3RBY2NlcHRpbmcgIT0gbnVsbCAmJiBsYXN0QWNjZXB0aW5nID49IHN0YXJ0UnVuKSkgewogICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMjQ7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyNDsKICAgICAgICAgICAgICAgIHJldHVybiBbc3RhcnRSdW4sIGxhc3RBY2NlcHRpbmcsIHNlbGYudGFnc1tzdGF0ZV1dOwoKICAgICAgICAgICAgICBjYXNlIDI0OgogICAgICAgICAgICAgIGNhc2UgJ2VuZCc6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7CiAgICAgIH0pKTsKICAgIH0KCiAgICAvKioKICAgICAqIEZvciBlYWNoIG1hdGNoIG92ZXIgdGhlIGlucHV0IHNlcXVlbmNlLCBhY3Rpb24gZnVuY3Rpb25zIG1hdGNoaW5nCiAgICAgKiB0aGUgdGFnIGRlZmluaXRpb25zIGluIHRoZSBpbnB1dCBwYXR0ZXJuIGFyZSBjYWxsZWQgd2l0aCB0aGUgc3RhcnRJbmRleCwKICAgICAqIGVuZEluZGV4LCBhbmQgc3ViLW1hdGNoIHNlcXVlbmNlLgogICAgICovCgogIH0sIHsKICAgIGtleTogJ2FwcGx5JywKICAgIHZhbHVlOiBmdW5jdGlvbiBhcHBseShzdHIsIGFjdGlvbnMpIHsKICAgICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSB0cnVlOwogICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IgPSBmYWxzZTsKICAgICAgdmFyIF9pdGVyYXRvckVycm9yID0gdW5kZWZpbmVkOwoKICAgICAgdHJ5IHsKICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IgPSBfZ2V0SXRlcmF0b3IodGhpcy5tYXRjaChzdHIpKSwgX3N0ZXA7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IChfc3RlcCA9IF9pdGVyYXRvci5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZSkgewogICAgICAgICAgdmFyIF9zdGVwJHZhbHVlID0gX3NsaWNlZFRvQXJyYXkoX3N0ZXAudmFsdWUsIDMpOwoKICAgICAgICAgIHZhciBzdGFydCA9IF9zdGVwJHZhbHVlWzBdOwogICAgICAgICAgdmFyIGVuZCA9IF9zdGVwJHZhbHVlWzFdOwogICAgICAgICAgdmFyIHRhZ3MgPSBfc3RlcCR2YWx1ZVsyXTsKICAgICAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IHRydWU7CiAgICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyID0gZmFsc2U7CiAgICAgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IyID0gdW5kZWZpbmVkOwoKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSBfZ2V0SXRlcmF0b3IodGFncyksIF9zdGVwMjsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IChfc3RlcDIgPSBfaXRlcmF0b3IyLm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gdHJ1ZSkgewogICAgICAgICAgICAgIHZhciB0YWcgPSBfc3RlcDIudmFsdWU7CgogICAgICAgICAgICAgIGlmICh0eXBlb2YgYWN0aW9uc1t0YWddID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICBhY3Rpb25zW3RhZ10oc3RhcnQsIGVuZCwgc3RyLnNsaWNlKHN0YXJ0LCBlbmQgKyAxKSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyID0gdHJ1ZTsKICAgICAgICAgICAgX2l0ZXJhdG9yRXJyb3IyID0gZXJyOwogICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yICYmIF9pdGVyYXRvcjIucmV0dXJuKSB7CiAgICAgICAgICAgICAgICBfaXRlcmF0b3IyLnJldHVybigpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjI7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICBfZGlkSXRlcmF0b3JFcnJvciA9IHRydWU7CiAgICAgICAgX2l0ZXJhdG9yRXJyb3IgPSBlcnI7CiAgICAgIH0gZmluYWxseSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiAmJiBfaXRlcmF0b3IucmV0dXJuKSB7CiAgICAgICAgICAgIF9pdGVyYXRvci5yZXR1cm4oKTsKICAgICAgICAgIH0KICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yKSB7CiAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH1dKTsKCiAgcmV0dXJuIFN0YXRlTWFjaGluZTsKfSgpOwoKbW9kdWxlLmV4cG9ydHMgPSBTdGF0ZU1hY2hpbmU7CgoKLyoqKi8gfSksCi8qIDI3MiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKCnZhciBfaXNJdGVyYWJsZTIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3Myk7Cgp2YXIgX2lzSXRlcmFibGUzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNJdGVyYWJsZTIpOwoKdmFyIF9nZXRJdGVyYXRvcjIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYwKTsKCnZhciBfZ2V0SXRlcmF0b3IzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0SXRlcmF0b3IyKTsKCmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9CgpleHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gc2xpY2VJdGVyYXRvcihhcnIsIGkpIHsKICAgIHZhciBfYXJyID0gW107CiAgICB2YXIgX24gPSB0cnVlOwogICAgdmFyIF9kID0gZmFsc2U7CiAgICB2YXIgX2UgPSB1bmRlZmluZWQ7CgogICAgdHJ5IHsKICAgICAgZm9yICh2YXIgX2kgPSAoMCwgX2dldEl0ZXJhdG9yMy5kZWZhdWx0KShhcnIpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgewogICAgICAgIF9hcnIucHVzaChfcy52YWx1ZSk7CgogICAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhazsKICAgICAgfQogICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgIF9kID0gdHJ1ZTsKICAgICAgX2UgPSBlcnI7CiAgICB9IGZpbmFsbHkgewogICAgICB0cnkgewogICAgICAgIGlmICghX24gJiYgX2lbInJldHVybiJdKSBfaVsicmV0dXJuIl0oKTsKICAgICAgfSBmaW5hbGx5IHsKICAgICAgICBpZiAoX2QpIHRocm93IF9lOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIF9hcnI7CiAgfQoKICByZXR1cm4gZnVuY3Rpb24gKGFyciwgaSkgewogICAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgewogICAgICByZXR1cm4gYXJyOwogICAgfSBlbHNlIGlmICgoMCwgX2lzSXRlcmFibGUzLmRlZmF1bHQpKE9iamVjdChhcnIpKSkgewogICAgICByZXR1cm4gc2xpY2VJdGVyYXRvcihhcnIsIGkpOwogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpOwogICAgfQogIH07Cn0oKTsKCi8qKiovIH0pLAovKiAyNzMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKbW9kdWxlLmV4cG9ydHMgPSB7ICJkZWZhdWx0IjogX193ZWJwYWNrX3JlcXVpcmVfXygyNzQpLCBfX2VzTW9kdWxlOiB0cnVlIH07CgovKioqLyB9KSwKLyogMjc0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCl9fd2VicGFja19yZXF1aXJlX18oMjgpOwpfX3dlYnBhY2tfcmVxdWlyZV9fKDI0KTsKbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3NSk7CgoKLyoqKi8gfSksCi8qIDI3NSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgY2xhc3NvZiA9IF9fd2VicGFja19yZXF1aXJlX18oNjgpOwp2YXIgSVRFUkFUT1IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpKCdpdGVyYXRvcicpOwp2YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMyk7Cm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKS5pc0l0ZXJhYmxlID0gZnVuY3Rpb24gKGl0KSB7CiAgdmFyIE8gPSBPYmplY3QoaXQpOwogIHJldHVybiBPW0lURVJBVE9SXSAhPT0gdW5kZWZpbmVkCiAgICB8fCAnQEBpdGVyYXRvcicgaW4gTwogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGlucwogICAgfHwgSXRlcmF0b3JzLmhhc093blByb3BlcnR5KGNsYXNzb2YoTykpOwp9OwoKCi8qKiovIH0pLAovKiAyNzYgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKCmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Cgp2YXIgX2RlZmluZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3NCk7Cgp2YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlZmluZVByb3BlcnR5KTsKCmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9CgpleHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAob2JqLCBrZXksIHZhbHVlKSB7CiAgaWYgKGtleSBpbiBvYmopIHsKICAgICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKG9iaiwga2V5LCB7CiAgICAgIHZhbHVlOiB2YWx1ZSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZSwKICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAogICAgICB3cml0YWJsZTogdHJ1ZQogICAgfSk7CiAgfSBlbHNlIHsKICAgIG9ialtrZXldID0gdmFsdWU7CiAgfQoKICByZXR1cm4gb2JqOwp9OwoKLyoqKi8gfSksCi8qIDI3NyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMjc4KTsKCgovKioqLyB9KSwKLyogMjc4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlCiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovCgovLyBUaGlzIG1ldGhvZCBvZiBvYnRhaW5pbmcgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QgbmVlZHMgdG8gYmUKLy8ga2VwdCBpZGVudGljYWwgdG8gdGhlIHdheSBpdCBpcyBvYnRhaW5lZCBpbiBydW50aW1lLmpzCnZhciBnID0gKGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcyB9KSgpIHx8IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCk7CgovLyBVc2UgYGdldE93blByb3BlcnR5TmFtZXNgIGJlY2F1c2Ugbm90IGFsbCBicm93c2VycyBzdXBwb3J0IGNhbGxpbmcKLy8gYGhhc093blByb3BlcnR5YCBvbiB0aGUgZ2xvYmFsIGBzZWxmYCBvYmplY3QgaW4gYSB3b3JrZXIuIFNlZSAjMTgzLgp2YXIgaGFkUnVudGltZSA9IGcucmVnZW5lcmF0b3JSdW50aW1lICYmCiAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZykuaW5kZXhPZigicmVnZW5lcmF0b3JSdW50aW1lIikgPj0gMDsKCi8vIFNhdmUgdGhlIG9sZCByZWdlbmVyYXRvclJ1bnRpbWUgaW4gY2FzZSBpdCBuZWVkcyB0byBiZSByZXN0b3JlZCBsYXRlci4KdmFyIG9sZFJ1bnRpbWUgPSBoYWRSdW50aW1lICYmIGcucmVnZW5lcmF0b3JSdW50aW1lOwoKLy8gRm9yY2UgcmVldmFsdXRhdGlvbiBvZiBydW50aW1lLmpzLgpnLnJlZ2VuZXJhdG9yUnVudGltZSA9IHVuZGVmaW5lZDsKCm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNzkpOwoKaWYgKGhhZFJ1bnRpbWUpIHsKICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBydW50aW1lLgogIGcucmVnZW5lcmF0b3JSdW50aW1lID0gb2xkUnVudGltZTsKfSBlbHNlIHsKICAvLyBSZW1vdmUgdGhlIGdsb2JhbCBwcm9wZXJ0eSBhZGRlZCBieSBydW50aW1lLmpzLgogIHRyeSB7CiAgICBkZWxldGUgZy5yZWdlbmVyYXRvclJ1bnRpbWU7CiAgfSBjYXRjaChlKSB7CiAgICBnLnJlZ2VuZXJhdG9yUnVudGltZSA9IHVuZGVmaW5lZDsKICB9Cn0KCgovKioqLyB9KSwKLyogMjc5ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCi8qKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlCiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovCgohKGZ1bmN0aW9uKGdsb2JhbCkgewogICJ1c2Ugc3RyaWN0IjsKCiAgdmFyIE9wID0gT2JqZWN0LnByb3RvdHlwZTsKICB2YXIgaGFzT3duID0gT3AuaGFzT3duUHJvcGVydHk7CiAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuCiAgdmFyICRTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iID8gU3ltYm9sIDoge307CiAgdmFyIGl0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5pdGVyYXRvciB8fCAiQEBpdGVyYXRvciI7CiAgdmFyIGFzeW5jSXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLmFzeW5jSXRlcmF0b3IgfHwgIkBAYXN5bmNJdGVyYXRvciI7CiAgdmFyIHRvU3RyaW5nVGFnU3ltYm9sID0gJFN5bWJvbC50b1N0cmluZ1RhZyB8fCAiQEB0b1N0cmluZ1RhZyI7CgogIHZhciBpbk1vZHVsZSA9IHR5cGVvZiBtb2R1bGUgPT09ICJvYmplY3QiOwogIHZhciBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZTsKICBpZiAocnVudGltZSkgewogICAgaWYgKGluTW9kdWxlKSB7CiAgICAgIC8vIElmIHJlZ2VuZXJhdG9yUnVudGltZSBpcyBkZWZpbmVkIGdsb2JhbGx5IGFuZCB3ZSdyZSBpbiBhIG1vZHVsZSwKICAgICAgLy8gbWFrZSB0aGUgZXhwb3J0cyBvYmplY3QgaWRlbnRpY2FsIHRvIHJlZ2VuZXJhdG9yUnVudGltZS4KICAgICAgbW9kdWxlLmV4cG9ydHMgPSBydW50aW1lOwogICAgfQogICAgLy8gRG9uJ3QgYm90aGVyIGV2YWx1YXRpbmcgdGhlIHJlc3Qgb2YgdGhpcyBmaWxlIGlmIHRoZSBydW50aW1lIHdhcwogICAgLy8gYWxyZWFkeSBkZWZpbmVkIGdsb2JhbGx5LgogICAgcmV0dXJuOwogIH0KCiAgLy8gRGVmaW5lIHRoZSBydW50aW1lIGdsb2JhbGx5IChhcyBleHBlY3RlZCBieSBnZW5lcmF0ZWQgY29kZSkgYXMgZWl0aGVyCiAgLy8gbW9kdWxlLmV4cG9ydHMgKGlmIHdlJ3JlIGluIGEgbW9kdWxlKSBvciBhIG5ldywgZW1wdHkgb2JqZWN0LgogIHJ1bnRpbWUgPSBnbG9iYWwucmVnZW5lcmF0b3JSdW50aW1lID0gaW5Nb2R1bGUgPyBtb2R1bGUuZXhwb3J0cyA6IHt9OwoKICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7CiAgICAvLyBJZiBvdXRlckZuIHByb3ZpZGVkIGFuZCBvdXRlckZuLnByb3RvdHlwZSBpcyBhIEdlbmVyYXRvciwgdGhlbiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvci4KICAgIHZhciBwcm90b0dlbmVyYXRvciA9IG91dGVyRm4gJiYgb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBvdXRlckZuIDogR2VuZXJhdG9yOwogICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKTsKICAgIHZhciBjb250ZXh0ID0gbmV3IENvbnRleHQodHJ5TG9jc0xpc3QgfHwgW10pOwoKICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAubmV4dCwKICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcy4KICAgIGdlbmVyYXRvci5faW52b2tlID0gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTsKCiAgICByZXR1cm4gZ2VuZXJhdG9yOwogIH0KICBydW50aW1lLndyYXAgPSB3cmFwOwoKICAvLyBUcnkvY2F0Y2ggaGVscGVyIHRvIG1pbmltaXplIGRlb3B0aW1pemF0aW9ucy4gUmV0dXJucyBhIGNvbXBsZXRpb24KICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGQKICAvLyBoYXZlIGJlZW4gKGFuZCB3YXMgcHJldmlvdXNseSkgZGVzaWduZWQgdG8gdGFrZSBhIGNsb3N1cmUgdG8gYmUKICAvLyBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzLCBidXQgaW4gYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IHdlCiAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZAogIC8vIHRvIGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBvYmplY3QuIFdlIGNhbiBldmVuIGdldCBhd2F5IHdpdGggYXNzdW1pbmcKICAvLyB0aGUgbWV0aG9kIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50LCBzaW5jZSB0aGF0IGhhcHBlbnMgdG8gYmUgdHJ1ZQogIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZQogIC8vIG9ubHkgYWRkaXRpb25hbCBhbGxvY2F0aW9uIHJlcXVpcmVkIGlzIHRoZSBjb21wbGV0aW9uIHJlY29yZCwgd2hpY2gKICAvLyBoYXMgYSBzdGFibGUgc2hhcGUgYW5kIHNvIGhvcGVmdWxseSBzaG91bGQgYmUgY2hlYXAgdG8gYWxsb2NhdGUuCiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7CiAgICB0cnkgewogICAgICByZXR1cm4geyB0eXBlOiAibm9ybWFsIiwgYXJnOiBmbi5jYWxsKG9iaiwgYXJnKSB9OwogICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgIHJldHVybiB7IHR5cGU6ICJ0aHJvdyIsIGFyZzogZXJyIH07CiAgICB9CiAgfQoKICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9ICJzdXNwZW5kZWRTdGFydCI7CiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSAic3VzcGVuZGVkWWllbGQiOwogIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9ICJleGVjdXRpbmciOwogIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9ICJjb21wbGV0ZWQiOwoKICAvLyBSZXR1cm5pbmcgdGhpcyBvYmplY3QgZnJvbSB0aGUgaW5uZXJGbiBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzCiAgLy8gYnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LgogIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307CgogIC8vIER1bW15IGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyB0aGF0IHdlIHVzZSBhcyB0aGUgLmNvbnN0cnVjdG9yIGFuZAogIC8vIC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgcHJvcGVydGllcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIEdlbmVyYXRvcgogIC8vIG9iamVjdHMuIEZvciBmdWxsIHNwZWMgY29tcGxpYW5jZSwgeW91IG1heSB3aXNoIHRvIGNvbmZpZ3VyZSB5b3VyCiAgLy8gbWluaWZpZXIgbm90IHRvIG1hbmdsZSB0aGUgbmFtZXMgb2YgdGhlc2UgdHdvIGZ1bmN0aW9ucy4KICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fQogIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkge30KICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIHt9CgogIC8vIFRoaXMgaXMgYSBwb2x5ZmlsbCBmb3IgJUl0ZXJhdG9yUHJvdG90eXBlJSBmb3IgZW52aXJvbm1lbnRzIHRoYXQKICAvLyBkb24ndCBuYXRpdmVseSBzdXBwb3J0IGl0LgogIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9OwogIEl0ZXJhdG9yUHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHsKICAgIHJldHVybiB0aGlzOwogIH07CgogIHZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjsKICB2YXIgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90byAmJiBnZXRQcm90byhnZXRQcm90byh2YWx1ZXMoW10pKSk7CiAgaWYgKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICYmCiAgICAgIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPcCAmJgogICAgICBoYXNPd24uY2FsbChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wpKSB7CiAgICAvLyBUaGlzIGVudmlyb25tZW50IGhhcyBhIG5hdGl2ZSAlSXRlcmF0b3JQcm90b3R5cGUlOyB1c2UgaXQgaW5zdGVhZAogICAgLy8gb2YgdGhlIHBvbHlmaWxsLgogICAgSXRlcmF0b3JQcm90b3R5cGUgPSBOYXRpdmVJdGVyYXRvclByb3RvdHlwZTsKICB9CgogIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9CiAgICBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7CiAgR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR3AuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uOwogIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlW3RvU3RyaW5nVGFnU3ltYm9sXSA9CiAgICBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9ICJHZW5lcmF0b3JGdW5jdGlvbiI7CgogIC8vIEhlbHBlciBmb3IgZGVmaW5pbmcgdGhlIC5uZXh0LCAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMgb2YgdGhlCiAgLy8gSXRlcmF0b3IgaW50ZXJmYWNlIGluIHRlcm1zIG9mIGEgc2luZ2xlIC5faW52b2tlIG1ldGhvZC4KICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7CiAgICBbIm5leHQiLCAidGhyb3ciLCAicmV0dXJuIl0uZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHsKICAgICAgcHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbihhcmcpIHsKICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTsKICAgICAgfTsKICAgIH0pOwogIH0KCiAgcnVudGltZS5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24oZ2VuRnVuKSB7CiAgICB2YXIgY3RvciA9IHR5cGVvZiBnZW5GdW4gPT09ICJmdW5jdGlvbiIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yOwogICAgcmV0dXJuIGN0b3IKICAgICAgPyBjdG9yID09PSBHZW5lcmF0b3JGdW5jdGlvbiB8fAogICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW4KICAgICAgICAvLyBkbyBpcyB0byBjaGVjayBpdHMgLm5hbWUgcHJvcGVydHkuCiAgICAgICAgKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSA9PT0gIkdlbmVyYXRvckZ1bmN0aW9uIgogICAgICA6IGZhbHNlOwogIH07CgogIHJ1bnRpbWUubWFyayA9IGZ1bmN0aW9uKGdlbkZ1bikgewogICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikgewogICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZ2VuRnVuLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CiAgICB9IGVsc2UgewogICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgIGlmICghKHRvU3RyaW5nVGFnU3ltYm9sIGluIGdlbkZ1bikpIHsKICAgICAgICBnZW5GdW5bdG9TdHJpbmdUYWdTeW1ib2xdID0gIkdlbmVyYXRvckZ1bmN0aW9uIjsKICAgICAgfQogICAgfQogICAgZ2VuRnVuLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoR3ApOwogICAgcmV0dXJuIGdlbkZ1bjsKICB9OwoKICAvLyBXaXRoaW4gdGhlIGJvZHkgb2YgYW55IGFzeW5jIGZ1bmN0aW9uLCBgYXdhaXQgeGAgaXMgdHJhbnNmb3JtZWQgdG8KICAvLyBgeWllbGQgcmVnZW5lcmF0b3JSdW50aW1lLmF3cmFwKHgpYCwgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gdGVzdAogIC8vIGBoYXNPd24uY2FsbCh2YWx1ZSwgIl9fYXdhaXQiKWAgdG8gZGV0ZXJtaW5lIGlmIHRoZSB5aWVsZGVkIHZhbHVlIGlzCiAgLy8gbWVhbnQgdG8gYmUgYXdhaXRlZC4KICBydW50aW1lLmF3cmFwID0gZnVuY3Rpb24oYXJnKSB7CiAgICByZXR1cm4geyBfX2F3YWl0OiBhcmcgfTsKICB9OwoKICBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKGdlbmVyYXRvcikgewogICAgZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpIHsKICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGdlbmVyYXRvclttZXRob2RdLCBnZW5lcmF0b3IsIGFyZyk7CiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gInRocm93IikgewogICAgICAgIHJlamVjdChyZWNvcmQuYXJnKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgcmVzdWx0ID0gcmVjb3JkLmFyZzsKICAgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7CiAgICAgICAgaWYgKHZhbHVlICYmCiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gIm9iamVjdCIgJiYKICAgICAgICAgICAgaGFzT3duLmNhbGwodmFsdWUsICJfX2F3YWl0IikpIHsKICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbih2YWx1ZSkgewogICAgICAgICAgICBpbnZva2UoIm5leHQiLCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTsKICAgICAgICAgIH0sIGZ1bmN0aW9uKGVycikgewogICAgICAgICAgICBpbnZva2UoInRocm93IiwgZXJyLCByZXNvbHZlLCByZWplY3QpOwogICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uKHVud3JhcHBlZCkgewogICAgICAgICAgLy8gV2hlbiBhIHlpZWxkZWQgUHJvbWlzZSBpcyByZXNvbHZlZCwgaXRzIGZpbmFsIHZhbHVlIGJlY29tZXMKICAgICAgICAgIC8vIHRoZSAudmFsdWUgb2YgdGhlIFByb21pc2U8e3ZhbHVlLGRvbmV9PiByZXN1bHQgZm9yIHRoZQogICAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uIElmIHRoZSBQcm9taXNlIGlzIHJlamVjdGVkLCBob3dldmVyLCB0aGUKICAgICAgICAgIC8vIHJlc3VsdCBmb3IgdGhpcyBpdGVyYXRpb24gd2lsbCBiZSByZWplY3RlZCB3aXRoIHRoZSBzYW1lCiAgICAgICAgICAvLyByZWFzb24uIE5vdGUgdGhhdCByZWplY3Rpb25zIG9mIHlpZWxkZWQgUHJvbWlzZXMgYXJlIG5vdAogICAgICAgICAgLy8gdGhyb3duIGJhY2sgaW50byB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBhcyBpcyB0aGUgY2FzZQogICAgICAgICAgLy8gd2hlbiBhbiBhd2FpdGVkIFByb21pc2UgaXMgcmVqZWN0ZWQuIFRoaXMgZGlmZmVyZW5jZSBpbgogICAgICAgICAgLy8gYmVoYXZpb3IgYmV0d2VlbiB5aWVsZCBhbmQgYXdhaXQgaXMgaW1wb3J0YW50LCBiZWNhdXNlIGl0CiAgICAgICAgICAvLyBhbGxvd3MgdGhlIGNvbnN1bWVyIHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggdGhlIHlpZWxkZWQKICAgICAgICAgIC8vIHJlamVjdGlvbiAoc3dhbGxvdyBpdCBhbmQgY29udGludWUsIG1hbnVhbGx5IC50aHJvdyBpdCBiYWNrCiAgICAgICAgICAvLyBpbnRvIHRoZSBnZW5lcmF0b3IsIGFiYW5kb24gaXRlcmF0aW9uLCB3aGF0ZXZlcikuIFdpdGgKICAgICAgICAgIC8vIGF3YWl0LCBieSBjb250cmFzdCwgdGhlcmUgaXMgbm8gb3Bwb3J0dW5pdHkgdG8gZXhhbWluZSB0aGUKICAgICAgICAgIC8vIHJlamVjdGlvbiByZWFzb24gb3V0c2lkZSB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBzbyB0aGUKICAgICAgICAgIC8vIG9ubHkgb3B0aW9uIGlzIHRvIHRocm93IGl0IGZyb20gdGhlIGF3YWl0IGV4cHJlc3Npb24sIGFuZAogICAgICAgICAgLy8gbGV0IHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24gaGFuZGxlIHRoZSBleGNlcHRpb24uCiAgICAgICAgICByZXN1bHQudmFsdWUgPSB1bndyYXBwZWQ7CiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7CiAgICAgICAgfSwgcmVqZWN0KTsKICAgICAgfQogICAgfQoKICAgIHZhciBwcmV2aW91c1Byb21pc2U7CgogICAgZnVuY3Rpb24gZW5xdWV1ZShtZXRob2QsIGFyZykgewogICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHsKICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCk7CiAgICAgICAgfSk7CiAgICAgIH0KCiAgICAgIHJldHVybiBwcmV2aW91c1Byb21pc2UgPQogICAgICAgIC8vIElmIGVucXVldWUgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiB3ZSB3YW50IHRvIHdhaXQgdW50aWwKICAgICAgICAvLyBhbGwgcHJldmlvdXMgUHJvbWlzZXMgaGF2ZSBiZWVuIHJlc29sdmVkIGJlZm9yZSBjYWxsaW5nIGludm9rZSwKICAgICAgICAvLyBzbyB0aGF0IHJlc3VsdHMgYXJlIGFsd2F5cyBkZWxpdmVyZWQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIElmCiAgICAgICAgLy8gZW5xdWV1ZSBoYXMgbm90IGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiBpdCBpcyBpbXBvcnRhbnQgdG8KICAgICAgICAvLyBjYWxsIGludm9rZSBpbW1lZGlhdGVseSwgd2l0aG91dCB3YWl0aW5nIG9uIGEgY2FsbGJhY2sgdG8gZmlyZSwKICAgICAgICAvLyBzbyB0aGF0IHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gaGFzIHRoZSBvcHBvcnR1bml0eSB0byBkbwogICAgICAgIC8vIGFueSBuZWNlc3Nhcnkgc2V0dXAgaW4gYSBwcmVkaWN0YWJsZSB3YXkuIFRoaXMgcHJlZGljdGFiaWxpdHkKICAgICAgICAvLyBpcyB3aHkgdGhlIFByb21pc2UgY29uc3RydWN0b3Igc3luY2hyb25vdXNseSBpbnZva2VzIGl0cwogICAgICAgIC8vIGV4ZWN1dG9yIGNhbGxiYWNrLCBhbmQgd2h5IGFzeW5jIGZ1bmN0aW9ucyBzeW5jaHJvbm91c2x5CiAgICAgICAgLy8gZXhlY3V0ZSBjb2RlIGJlZm9yZSB0aGUgZmlyc3QgYXdhaXQuIFNpbmNlIHdlIGltcGxlbWVudCBzaW1wbGUKICAgICAgICAvLyBhc3luYyBmdW5jdGlvbnMgaW4gdGVybXMgb2YgYXN5bmMgZ2VuZXJhdG9ycywgaXQgaXMgZXNwZWNpYWxseQogICAgICAgIC8vIGltcG9ydGFudCB0byBnZXQgdGhpcyByaWdodCwgZXZlbiB0aG91Z2ggaXQgcmVxdWlyZXMgY2FyZS4KICAgICAgICBwcmV2aW91c1Byb21pc2UgPyBwcmV2aW91c1Byb21pc2UudGhlbigKICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLAogICAgICAgICAgLy8gQXZvaWQgcHJvcGFnYXRpbmcgZmFpbHVyZXMgdG8gUHJvbWlzZXMgcmV0dXJuZWQgYnkgbGF0ZXIKICAgICAgICAgIC8vIGludm9jYXRpb25zIG9mIHRoZSBpdGVyYXRvci4KICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnCiAgICAgICAgKSA6IGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCk7CiAgICB9CgogICAgLy8gRGVmaW5lIHRoZSB1bmlmaWVkIGhlbHBlciBtZXRob2QgdGhhdCBpcyB1c2VkIHRvIGltcGxlbWVudCAubmV4dCwKICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gKHNlZSBkZWZpbmVJdGVyYXRvck1ldGhvZHMpLgogICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTsKICB9CgogIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7CiAgQXN5bmNJdGVyYXRvci5wcm90b3R5cGVbYXN5bmNJdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7CiAgICByZXR1cm4gdGhpczsKICB9OwogIHJ1bnRpbWUuQXN5bmNJdGVyYXRvciA9IEFzeW5jSXRlcmF0b3I7CgogIC8vIE5vdGUgdGhhdCBzaW1wbGUgYXN5bmMgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2YKICAvLyBBc3luY0l0ZXJhdG9yIG9iamVjdHM7IHRoZXkganVzdCByZXR1cm4gYSBQcm9taXNlIGZvciB0aGUgdmFsdWUgb2YKICAvLyB0aGUgZmluYWwgcmVzdWx0IHByb2R1Y2VkIGJ5IHRoZSBpdGVyYXRvci4KICBydW50aW1lLmFzeW5jID0gZnVuY3Rpb24oaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHsKICAgIHZhciBpdGVyID0gbmV3IEFzeW5jSXRlcmF0b3IoCiAgICAgIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpCiAgICApOwoKICAgIHJldHVybiBydW50aW1lLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbikKICAgICAgPyBpdGVyIC8vIElmIG91dGVyRm4gaXMgYSBnZW5lcmF0b3IsIHJldHVybiB0aGUgZnVsbCBpdGVyYXRvci4KICAgICAgOiBpdGVyLm5leHQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewogICAgICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gcmVzdWx0LnZhbHVlIDogaXRlci5uZXh0KCk7CiAgICAgICAgfSk7CiAgfTsKCiAgZnVuY3Rpb24gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KSB7CiAgICB2YXIgc3RhdGUgPSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0OwoKICAgIHJldHVybiBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcpIHsKICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykgewogICAgICAgIHRocm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpOwogICAgICB9CgogICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7CiAgICAgICAgaWYgKG1ldGhvZCA9PT0gInRocm93IikgewogICAgICAgICAgdGhyb3cgYXJnOwogICAgICAgIH0KCiAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzoKICAgICAgICAvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtZ2VuZXJhdG9ycmVzdW1lCiAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTsKICAgICAgfQoKICAgICAgY29udGV4dC5tZXRob2QgPSBtZXRob2Q7CiAgICAgIGNvbnRleHQuYXJnID0gYXJnOwoKICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlOwogICAgICAgIGlmIChkZWxlZ2F0ZSkgewogICAgICAgICAgdmFyIGRlbGVnYXRlUmVzdWx0ID0gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7CiAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQpIHsKICAgICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0ID09PSBDb250aW51ZVNlbnRpbmVsKSBjb250aW51ZTsKICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlUmVzdWx0OwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSAibmV4dCIpIHsKICAgICAgICAgIC8vIFNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwncwogICAgICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi4KICAgICAgICAgIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQgPSBjb250ZXh0LmFyZzsKCiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gInRocm93IikgewogICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0KSB7CiAgICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7CiAgICAgICAgICAgIHRocm93IGNvbnRleHQuYXJnOwogICAgICAgICAgfQoKICAgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpOwoKICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSAicmV0dXJuIikgewogICAgICAgICAgY29udGV4dC5hYnJ1cHQoInJldHVybiIsIGNvbnRleHQuYXJnKTsKICAgICAgICB9CgogICAgICAgIHN0YXRlID0gR2VuU3RhdGVFeGVjdXRpbmc7CgogICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTsKICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09ICJub3JtYWwiKSB7CiAgICAgICAgICAvLyBJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGZyb20gaW5uZXJGbiwgd2UgbGVhdmUgc3RhdGUgPT09CiAgICAgICAgICAvLyBHZW5TdGF0ZUV4ZWN1dGluZyBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVyIGludm9jYXRpb24uCiAgICAgICAgICBzdGF0ZSA9IGNvbnRleHQuZG9uZQogICAgICAgICAgICA/IEdlblN0YXRlQ29tcGxldGVkCiAgICAgICAgICAgIDogR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDsKCiAgICAgICAgICBpZiAocmVjb3JkLmFyZyA9PT0gQ29udGludWVTZW50aW5lbCkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICB2YWx1ZTogcmVjb3JkLmFyZywKICAgICAgICAgICAgZG9uZTogY29udGV4dC5kb25lCiAgICAgICAgICB9OwoKICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSAidGhyb3ciKSB7CiAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkOwogICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZQogICAgICAgICAgLy8gY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZykgY2FsbCBhYm92ZS4KICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gInRocm93IjsKICAgICAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZzsKICAgICAgICB9CiAgICAgIH0KICAgIH07CiAgfQoKICAvLyBDYWxsIGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXShjb250ZXh0LmFyZykgYW5kIGhhbmRsZSB0aGUKICAvLyByZXN1bHQsIGVpdGhlciBieSByZXR1cm5pbmcgYSB7IHZhbHVlLCBkb25lIH0gcmVzdWx0IGZyb20gdGhlCiAgLy8gZGVsZWdhdGUgaXRlcmF0b3IsIG9yIGJ5IG1vZGlmeWluZyBjb250ZXh0Lm1ldGhvZCBhbmQgY29udGV4dC5hcmcsCiAgLy8gc2V0dGluZyBjb250ZXh0LmRlbGVnYXRlIHRvIG51bGwsIGFuZCByZXR1cm5pbmcgdGhlIENvbnRpbnVlU2VudGluZWwuCiAgZnVuY3Rpb24gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCkgewogICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXTsKICAgIGlmIChtZXRob2QgPT09IHVuZGVmaW5lZCkgewogICAgICAvLyBBIC50aHJvdyBvciAucmV0dXJuIHdoZW4gdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBubyAudGhyb3cKICAgICAgLy8gbWV0aG9kIGFsd2F5cyB0ZXJtaW5hdGVzIHRoZSB5aWVsZCogbG9vcC4KICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7CgogICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09ICJ0aHJvdyIpIHsKICAgICAgICBpZiAoZGVsZWdhdGUuaXRlcmF0b3IucmV0dXJuKSB7CiAgICAgICAgICAvLyBJZiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIGEgcmV0dXJuIG1ldGhvZCwgZ2l2ZSBpdCBhCiAgICAgICAgICAvLyBjaGFuY2UgdG8gY2xlYW4gdXAuCiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9ICJyZXR1cm4iOwogICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7CiAgICAgICAgICBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTsKCiAgICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09ICJ0aHJvdyIpIHsKICAgICAgICAgICAgLy8gSWYgbWF5YmVJbnZva2VEZWxlZ2F0ZShjb250ZXh0KSBjaGFuZ2VkIGNvbnRleHQubWV0aG9kIGZyb20KICAgICAgICAgICAgLy8gInJldHVybiIgdG8gInRocm93IiwgbGV0IHRoYXQgb3ZlcnJpZGUgdGhlIFR5cGVFcnJvciBiZWxvdy4KICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBjb250ZXh0Lm1ldGhvZCA9ICJ0aHJvdyI7CiAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKAogICAgICAgICAgIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2QiKTsKICAgICAgfQoKICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7CiAgICB9CgogICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKG1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGNvbnRleHQuYXJnKTsKCiAgICBpZiAocmVjb3JkLnR5cGUgPT09ICJ0aHJvdyIpIHsKICAgICAgY29udGV4dC5tZXRob2QgPSAidGhyb3ciOwogICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7CiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsOwogICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDsKICAgIH0KCiAgICB2YXIgaW5mbyA9IHJlY29yZC5hcmc7CgogICAgaWYgKCEgaW5mbykgewogICAgICBjb250ZXh0Lm1ldGhvZCA9ICJ0aHJvdyI7CiAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKTsKICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7CiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsOwogICAgfQoKICAgIGlmIChpbmZvLmRvbmUpIHsKICAgICAgLy8gQXNzaWduIHRoZSByZXN1bHQgb2YgdGhlIGZpbmlzaGVkIGRlbGVnYXRlIHRvIHRoZSB0ZW1wb3JhcnkKICAgICAgLy8gdmFyaWFibGUgc3BlY2lmaWVkIGJ5IGRlbGVnYXRlLnJlc3VsdE5hbWUgKHNlZSBkZWxlZ2F0ZVlpZWxkKS4KICAgICAgY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWU7CgogICAgICAvLyBSZXN1bWUgZXhlY3V0aW9uIGF0IHRoZSBkZXNpcmVkIGxvY2F0aW9uIChzZWUgZGVsZWdhdGVZaWVsZCkuCiAgICAgIGNvbnRleHQubmV4dCA9IGRlbGVnYXRlLm5leHRMb2M7CgogICAgICAvLyBJZiBjb250ZXh0Lm1ldGhvZCB3YXMgInRocm93IiBidXQgdGhlIGRlbGVnYXRlIGhhbmRsZWQgdGhlCiAgICAgIC8vIGV4Y2VwdGlvbiwgbGV0IHRoZSBvdXRlciBnZW5lcmF0b3IgcHJvY2VlZCBub3JtYWxseS4gSWYKICAgICAgLy8gY29udGV4dC5tZXRob2Qgd2FzICJuZXh0IiwgZm9yZ2V0IGNvbnRleHQuYXJnIHNpbmNlIGl0IGhhcyBiZWVuCiAgICAgIC8vICJjb25zdW1lZCIgYnkgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yLiBJZiBjb250ZXh0Lm1ldGhvZCB3YXMKICAgICAgLy8gInJldHVybiIsIGFsbG93IHRoZSBvcmlnaW5hbCAucmV0dXJuIGNhbGwgdG8gY29udGludWUgaW4gdGhlCiAgICAgIC8vIG91dGVyIGdlbmVyYXRvci4KICAgICAgaWYgKGNvbnRleHQubWV0aG9kICE9PSAicmV0dXJuIikgewogICAgICAgIGNvbnRleHQubWV0aG9kID0gIm5leHQiOwogICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkOwogICAgICB9CgogICAgfSBlbHNlIHsKICAgICAgLy8gUmUteWllbGQgdGhlIHJlc3VsdCByZXR1cm5lZCBieSB0aGUgZGVsZWdhdGUgbWV0aG9kLgogICAgICByZXR1cm4gaW5mbzsKICAgIH0KCiAgICAvLyBUaGUgZGVsZWdhdGUgaXRlcmF0b3IgaXMgZmluaXNoZWQsIHNvIGZvcmdldCBpdCBhbmQgY29udGludWUgd2l0aAogICAgLy8gdGhlIG91dGVyIGdlbmVyYXRvci4KICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsOwogICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7CiAgfQoKICAvLyBEZWZpbmUgR2VuZXJhdG9yLnByb3RvdHlwZS57bmV4dCx0aHJvdyxyZXR1cm59IGluIHRlcm1zIG9mIHRoZQogIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC4KICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoR3ApOwoKICBHcFt0b1N0cmluZ1RhZ1N5bWJvbF0gPSAiR2VuZXJhdG9yIjsKCiAgLy8gQSBHZW5lcmF0b3Igc2hvdWxkIGFsd2F5cyByZXR1cm4gaXRzZWxmIGFzIHRoZSBpdGVyYXRvciBvYmplY3Qgd2hlbiB0aGUKICAvLyBAQGl0ZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBpdC4gU29tZSBicm93c2VycycgaW1wbGVtZW50YXRpb25zIG9mIHRoZQogIC8vIGl0ZXJhdG9yIHByb3RvdHlwZSBjaGFpbiBpbmNvcnJlY3RseSBpbXBsZW1lbnQgdGhpcywgY2F1c2luZyB0aGUgR2VuZXJhdG9yCiAgLy8gb2JqZWN0IHRvIG5vdCBiZSByZXR1cm5lZCBmcm9tIHRoaXMgY2FsbC4gVGhpcyBlbnN1cmVzIHRoYXQgZG9lc24ndCBoYXBwZW4uCiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9pc3N1ZXMvMjc0IGZvciBtb3JlIGRldGFpbHMuCiAgR3BbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpczsKICB9OwoKICBHcC50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuICJbb2JqZWN0IEdlbmVyYXRvcl0iOwogIH07CgogIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeShsb2NzKSB7CiAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9OwoKICAgIGlmICgxIGluIGxvY3MpIHsKICAgICAgZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdOwogICAgfQoKICAgIGlmICgyIGluIGxvY3MpIHsKICAgICAgZW50cnkuZmluYWxseUxvYyA9IGxvY3NbMl07CiAgICAgIGVudHJ5LmFmdGVyTG9jID0gbG9jc1szXTsKICAgIH0KCiAgICB0aGlzLnRyeUVudHJpZXMucHVzaChlbnRyeSk7CiAgfQoKICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7CiAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTsKICAgIHJlY29yZC50eXBlID0gIm5vcm1hbCI7CiAgICBkZWxldGUgcmVjb3JkLmFyZzsKICAgIGVudHJ5LmNvbXBsZXRpb24gPSByZWNvcmQ7CiAgfQoKICBmdW5jdGlvbiBDb250ZXh0KHRyeUxvY3NMaXN0KSB7CiAgICAvLyBUaGUgcm9vdCBlbnRyeSBvYmplY3QgKGVmZmVjdGl2ZWx5IGEgdHJ5IHN0YXRlbWVudCB3aXRob3V0IGEgY2F0Y2gKICAgIC8vIG9yIGEgZmluYWxseSBibG9jaykgZ2l2ZXMgdXMgYSBwbGFjZSB0byBzdG9yZSB2YWx1ZXMgdGhyb3duIGZyb20KICAgIC8vIGxvY2F0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBlbmNsb3NpbmcgdHJ5IHN0YXRlbWVudC4KICAgIHRoaXMudHJ5RW50cmllcyA9IFt7IHRyeUxvYzogInJvb3QiIH1dOwogICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpOwogICAgdGhpcy5yZXNldCh0cnVlKTsKICB9CgogIHJ1bnRpbWUua2V5cyA9IGZ1bmN0aW9uKG9iamVjdCkgewogICAgdmFyIGtleXMgPSBbXTsKICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHsKICAgICAga2V5cy5wdXNoKGtleSk7CiAgICB9CiAgICBrZXlzLnJldmVyc2UoKTsKCiAgICAvLyBSYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4gb2JqZWN0IHdpdGggYSBuZXh0IG1ldGhvZCwgd2Uga2VlcAogICAgLy8gdGhpbmdzIHNpbXBsZSBhbmQgcmV0dXJuIHRoZSBuZXh0IGZ1bmN0aW9uIGl0c2VsZi4KICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkgewogICAgICB3aGlsZSAoa2V5cy5sZW5ndGgpIHsKICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTsKICAgICAgICBpZiAoa2V5IGluIG9iamVjdCkgewogICAgICAgICAgbmV4dC52YWx1ZSA9IGtleTsKICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlOwogICAgICAgICAgcmV0dXJuIG5leHQ7CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBUbyBhdm9pZCBjcmVhdGluZyBhbiBhZGRpdGlvbmFsIG9iamVjdCwgd2UganVzdCBoYW5nIHRoZSAudmFsdWUKICAgICAgLy8gYW5kIC5kb25lIHByb3BlcnRpZXMgb2ZmIHRoZSBuZXh0IGZ1bmN0aW9uIG9iamVjdCBpdHNlbGYuIFRoaXMKICAgICAgLy8gYWxzbyBlbnN1cmVzIHRoYXQgdGhlIG1pbmlmaWVyIHdpbGwgbm90IGFub255bWl6ZSB0aGUgZnVuY3Rpb24uCiAgICAgIG5leHQuZG9uZSA9IHRydWU7CiAgICAgIHJldHVybiBuZXh0OwogICAgfTsKICB9OwoKICBmdW5jdGlvbiB2YWx1ZXMoaXRlcmFibGUpIHsKICAgIGlmIChpdGVyYWJsZSkgewogICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07CiAgICAgIGlmIChpdGVyYXRvck1ldGhvZCkgewogICAgICAgIHJldHVybiBpdGVyYXRvck1ldGhvZC5jYWxsKGl0ZXJhYmxlKTsKICAgICAgfQoKICAgICAgaWYgKHR5cGVvZiBpdGVyYWJsZS5uZXh0ID09PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgcmV0dXJuIGl0ZXJhYmxlOwogICAgICB9CgogICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHsKICAgICAgICB2YXIgaSA9IC0xLCBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHsKICAgICAgICAgIHdoaWxlICgrK2kgPCBpdGVyYWJsZS5sZW5ndGgpIHsKICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKGl0ZXJhYmxlLCBpKSkgewogICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTsKICAgICAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTsKICAgICAgICAgICAgICByZXR1cm4gbmV4dDsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIG5leHQudmFsdWUgPSB1bmRlZmluZWQ7CiAgICAgICAgICBuZXh0LmRvbmUgPSB0cnVlOwoKICAgICAgICAgIHJldHVybiBuZXh0OwogICAgICAgIH07CgogICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0OwogICAgICB9CiAgICB9CgogICAgLy8gUmV0dXJuIGFuIGl0ZXJhdG9yIHdpdGggbm8gdmFsdWVzLgogICAgcmV0dXJuIHsgbmV4dDogZG9uZVJlc3VsdCB9OwogIH0KICBydW50aW1lLnZhbHVlcyA9IHZhbHVlczsKCiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHsKICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTsKICB9CgogIENvbnRleHQucHJvdG90eXBlID0gewogICAgY29uc3RydWN0b3I6IENvbnRleHQsCgogICAgcmVzZXQ6IGZ1bmN0aW9uKHNraXBUZW1wUmVzZXQpIHsKICAgICAgdGhpcy5wcmV2ID0gMDsKICAgICAgdGhpcy5uZXh0ID0gMDsKICAgICAgLy8gUmVzZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3MKICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi4KICAgICAgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHVuZGVmaW5lZDsKICAgICAgdGhpcy5kb25lID0gZmFsc2U7CiAgICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsOwoKICAgICAgdGhpcy5tZXRob2QgPSAibmV4dCI7CiAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkOwoKICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7CgogICAgICBpZiAoIXNraXBUZW1wUmVzZXQpIHsKICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHsKICAgICAgICAgIC8vIE5vdCBzdXJlIGFib3V0IHRoZSBvcHRpbWFsIG9yZGVyIG9mIHRoZXNlIGNvbmRpdGlvbnM6CiAgICAgICAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09ICJ0IiAmJgogICAgICAgICAgICAgIGhhc093bi5jYWxsKHRoaXMsIG5hbWUpICYmCiAgICAgICAgICAgICAgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSkgewogICAgICAgICAgICB0aGlzW25hbWVdID0gdW5kZWZpbmVkOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICBzdG9wOiBmdW5jdGlvbigpIHsKICAgICAgdGhpcy5kb25lID0gdHJ1ZTsKCiAgICAgIHZhciByb290RW50cnkgPSB0aGlzLnRyeUVudHJpZXNbMF07CiAgICAgIHZhciByb290UmVjb3JkID0gcm9vdEVudHJ5LmNvbXBsZXRpb247CiAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09ICJ0aHJvdyIpIHsKICAgICAgICB0aHJvdyByb290UmVjb3JkLmFyZzsKICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMucnZhbDsKICAgIH0sCgogICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uKGV4Y2VwdGlvbikgewogICAgICBpZiAodGhpcy5kb25lKSB7CiAgICAgICAgdGhyb3cgZXhjZXB0aW9uOwogICAgICB9CgogICAgICB2YXIgY29udGV4dCA9IHRoaXM7CiAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkgewogICAgICAgIHJlY29yZC50eXBlID0gInRocm93IjsKICAgICAgICByZWNvcmQuYXJnID0gZXhjZXB0aW9uOwogICAgICAgIGNvbnRleHQubmV4dCA9IGxvYzsKCiAgICAgICAgaWYgKGNhdWdodCkgewogICAgICAgICAgLy8gSWYgdGhlIGRpc3BhdGNoZWQgZXhjZXB0aW9uIHdhcyBjYXVnaHQgYnkgYSBjYXRjaCBibG9jaywKICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuCiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9ICJuZXh0IjsKICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICEhIGNhdWdodDsKICAgICAgfQoKICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewogICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTsKICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjsKCiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gInJvb3QiKSB7CiAgICAgICAgICAvLyBFeGNlcHRpb24gdGhyb3duIG91dHNpZGUgb2YgYW55IHRyeSBibG9jayB0aGF0IGNvdWxkIGhhbmRsZQogICAgICAgICAgLy8gaXQsIHNvIHNldCB0aGUgY29tcGxldGlvbiB2YWx1ZSBvZiB0aGUgZW50aXJlIGZ1bmN0aW9uIHRvCiAgICAgICAgICAvLyB0aHJvdyB0aGUgZXhjZXB0aW9uLgogICAgICAgICAgcmV0dXJuIGhhbmRsZSgiZW5kIik7CiAgICAgICAgfQoKICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldikgewogICAgICAgICAgdmFyIGhhc0NhdGNoID0gaGFzT3duLmNhbGwoZW50cnksICJjYXRjaExvYyIpOwogICAgICAgICAgdmFyIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgImZpbmFsbHlMb2MiKTsKCiAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkgewogICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHsKICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTsKICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7CiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTsKICAgICAgICAgICAgfQoKICAgICAgICAgIH0gZWxzZSBpZiAoaGFzQ2F0Y2gpIHsKICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7CiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0ZpbmFsbHkpIHsKICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHsKICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpOwogICAgICAgICAgICB9CgogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICBhYnJ1cHQ6IGZ1bmN0aW9uKHR5cGUsIGFyZykgewogICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldOwogICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2ICYmCiAgICAgICAgICAgIGhhc093bi5jYWxsKGVudHJ5LCAiZmluYWxseUxvYyIpICYmCiAgICAgICAgICAgIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHsKICAgICAgICAgIHZhciBmaW5hbGx5RW50cnkgPSBlbnRyeTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGZpbmFsbHlFbnRyeSAmJgogICAgICAgICAgKHR5cGUgPT09ICJicmVhayIgfHwKICAgICAgICAgICB0eXBlID09PSAiY29udGludWUiKSAmJgogICAgICAgICAgZmluYWxseUVudHJ5LnRyeUxvYyA8PSBhcmcgJiYKICAgICAgICAgIGFyZyA8PSBmaW5hbGx5RW50cnkuZmluYWxseUxvYykgewogICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGEKICAgICAgICAvLyBsb2NhdGlvbiBvdXRzaWRlIHRoZSB0cnkvY2F0Y2ggYmxvY2suCiAgICAgICAgZmluYWxseUVudHJ5ID0gbnVsbDsKICAgICAgfQoKICAgICAgdmFyIHJlY29yZCA9IGZpbmFsbHlFbnRyeSA/IGZpbmFsbHlFbnRyeS5jb21wbGV0aW9uIDoge307CiAgICAgIHJlY29yZC50eXBlID0gdHlwZTsKICAgICAgcmVjb3JkLmFyZyA9IGFyZzsKCiAgICAgIGlmIChmaW5hbGx5RW50cnkpIHsKICAgICAgICB0aGlzLm1ldGhvZCA9ICJuZXh0IjsKICAgICAgICB0aGlzLm5leHQgPSBmaW5hbGx5RW50cnkuZmluYWxseUxvYzsKICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDsKICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMuY29tcGxldGUocmVjb3JkKTsKICAgIH0sCgogICAgY29tcGxldGU6IGZ1bmN0aW9uKHJlY29yZCwgYWZ0ZXJMb2MpIHsKICAgICAgaWYgKHJlY29yZC50eXBlID09PSAidGhyb3ciKSB7CiAgICAgICAgdGhyb3cgcmVjb3JkLmFyZzsKICAgICAgfQoKICAgICAgaWYgKHJlY29yZC50eXBlID09PSAiYnJlYWsiIHx8CiAgICAgICAgICByZWNvcmQudHlwZSA9PT0gImNvbnRpbnVlIikgewogICAgICAgIHRoaXMubmV4dCA9IHJlY29yZC5hcmc7CiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09ICJyZXR1cm4iKSB7CiAgICAgICAgdGhpcy5ydmFsID0gdGhpcy5hcmcgPSByZWNvcmQuYXJnOwogICAgICAgIHRoaXMubWV0aG9kID0gInJldHVybiI7CiAgICAgICAgdGhpcy5uZXh0ID0gImVuZCI7CiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09ICJub3JtYWwiICYmIGFmdGVyTG9jKSB7CiAgICAgICAgdGhpcy5uZXh0ID0gYWZ0ZXJMb2M7CiAgICAgIH0KCiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsOwogICAgfSwKCiAgICBmaW5pc2g6IGZ1bmN0aW9uKGZpbmFsbHlMb2MpIHsKICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewogICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTsKICAgICAgICBpZiAoZW50cnkuZmluYWxseUxvYyA9PT0gZmluYWxseUxvYykgewogICAgICAgICAgdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyk7CiAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTsKICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsOwogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICAiY2F0Y2giOiBmdW5jdGlvbih0cnlMb2MpIHsKICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewogICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTsKICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHsKICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uOwogICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSAidGhyb3ciKSB7CiAgICAgICAgICAgIHZhciB0aHJvd24gPSByZWNvcmQuYXJnOwogICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiB0aHJvd247CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBUaGUgY29udGV4dC5jYXRjaCBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgbG9jYXRpb24KICAgICAgLy8gYXJndW1lbnQgdGhhdCBjb3JyZXNwb25kcyB0byBhIGtub3duIGNhdGNoIGJsb2NrLgogICAgICB0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpOwogICAgfSwKCiAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbihpdGVyYWJsZSwgcmVzdWx0TmFtZSwgbmV4dExvYykgewogICAgICB0aGlzLmRlbGVnYXRlID0gewogICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoaXRlcmFibGUpLAogICAgICAgIHJlc3VsdE5hbWU6IHJlc3VsdE5hbWUsCiAgICAgICAgbmV4dExvYzogbmV4dExvYwogICAgICB9OwoKICAgICAgaWYgKHRoaXMubWV0aG9kID09PSAibmV4dCIpIHsKICAgICAgICAvLyBEZWxpYmVyYXRlbHkgZm9yZ2V0IHRoZSBsYXN0IHNlbnQgdmFsdWUgc28gdGhhdCB3ZSBkb24ndAogICAgICAgIC8vIGFjY2lkZW50YWxseSBwYXNzIGl0IG9uIHRvIHRoZSBkZWxlZ2F0ZS4KICAgICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDsKICAgICAgfQoKICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7CiAgICB9CiAgfTsKfSkoCiAgLy8gSW4gc2xvcHB5IG1vZGUsIHVuYm91bmQgYHRoaXNgIHJlZmVycyB0byB0aGUgZ2xvYmFsIG9iamVjdCwgZmFsbGJhY2sgdG8KICAvLyBGdW5jdGlvbiBjb25zdHJ1Y3RvciBpZiB3ZSdyZSBpbiBnbG9iYWwgc3RyaWN0IG1vZGUuIFRoYXQgaXMgc2FkbHkgYSBmb3JtCiAgLy8gb2YgaW5kaXJlY3QgZXZhbCB3aGljaCB2aW9sYXRlcyBDb250ZW50IFNlY3VyaXR5IFBvbGljeS4KICAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzIH0pKCkgfHwgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKQopOwoKCi8qKiovIH0pLAovKiAyODAgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKbW9kdWxlLmV4cG9ydHMgPSB7ICJkZWZhdWx0IjogX193ZWJwYWNrX3JlcXVpcmVfXygyODEpLCBfX2VzTW9kdWxlOiB0cnVlIH07CgovKioqLyB9KSwKLyogMjgxICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCl9fd2VicGFja19yZXF1aXJlX18oMjgyKTsKbW9kdWxlLmV4cG9ydHMgPSBNYXRoLnBvdygyLCAtNTIpOwoKCi8qKiovIH0pLAovKiAyODIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gMjAuMS4yLjEgTnVtYmVyLkVQU0lMT04KdmFyICRleHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOwoKJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7IEVQU0lMT046IE1hdGgucG93KDIsIC01MikgfSk7CgoKLyoqKi8gfSksCi8qIDI4MyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oQnVmZmVyKSB7dmFyIGNsb25lID0gKGZ1bmN0aW9uKCkgewondXNlIHN0cmljdCc7CgovKioKICogQ2xvbmVzIChjb3BpZXMpIGFuIE9iamVjdCB1c2luZyBkZWVwIGNvcHlpbmcuCiAqCiAqIFRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgY2lyY3VsYXIgcmVmZXJlbmNlcyBieSBkZWZhdWx0LCBidXQgaWYgeW91IGFyZSBjZXJ0YWluCiAqIHRoZXJlIGFyZSBubyBjaXJjdWxhciByZWZlcmVuY2VzIGluIHlvdXIgb2JqZWN0LCB5b3UgY2FuIHNhdmUgc29tZSBDUFUgdGltZQogKiBieSBjYWxsaW5nIGNsb25lKG9iaiwgZmFsc2UpLgogKgogKiBDYXV0aW9uOiBpZiBgY2lyY3VsYXJgIGlzIGZhbHNlIGFuZCBgcGFyZW50YCBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2VzLAogKiB5b3VyIHByb2dyYW0gbWF5IGVudGVyIGFuIGluZmluaXRlIGxvb3AgYW5kIGNyYXNoLgogKgogKiBAcGFyYW0gYHBhcmVudGAgLSB0aGUgb2JqZWN0IHRvIGJlIGNsb25lZAogKiBAcGFyYW0gYGNpcmN1bGFyYCAtIHNldCB0byB0cnVlIGlmIHRoZSBvYmplY3QgdG8gYmUgY2xvbmVkIG1heSBjb250YWluCiAqICAgIGNpcmN1bGFyIHJlZmVyZW5jZXMuIChvcHRpb25hbCAtIHRydWUgYnkgZGVmYXVsdCkKICogQHBhcmFtIGBkZXB0aGAgLSBzZXQgdG8gYSBudW1iZXIgaWYgdGhlIG9iamVjdCBpcyBvbmx5IHRvIGJlIGNsb25lZCB0bwogKiAgICBhIHBhcnRpY3VsYXIgZGVwdGguIChvcHRpb25hbCAtIGRlZmF1bHRzIHRvIEluZmluaXR5KQogKiBAcGFyYW0gYHByb3RvdHlwZWAgLSBzZXRzIHRoZSBwcm90b3R5cGUgdG8gYmUgdXNlZCB3aGVuIGNsb25pbmcgYW4gb2JqZWN0LgogKiAgICAob3B0aW9uYWwgLSBkZWZhdWx0cyB0byBwYXJlbnQgcHJvdG90eXBlKS4KKi8KZnVuY3Rpb24gY2xvbmUocGFyZW50LCBjaXJjdWxhciwgZGVwdGgsIHByb3RvdHlwZSkgewogIHZhciBmaWx0ZXI7CiAgaWYgKHR5cGVvZiBjaXJjdWxhciA9PT0gJ29iamVjdCcpIHsKICAgIGRlcHRoID0gY2lyY3VsYXIuZGVwdGg7CiAgICBwcm90b3R5cGUgPSBjaXJjdWxhci5wcm90b3R5cGU7CiAgICBmaWx0ZXIgPSBjaXJjdWxhci5maWx0ZXI7CiAgICBjaXJjdWxhciA9IGNpcmN1bGFyLmNpcmN1bGFyCiAgfQogIC8vIG1haW50YWluIHR3byBhcnJheXMgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMsIHdoZXJlIGNvcnJlc3BvbmRpbmcgcGFyZW50cwogIC8vIGFuZCBjaGlsZHJlbiBoYXZlIHRoZSBzYW1lIGluZGV4CiAgdmFyIGFsbFBhcmVudHMgPSBbXTsKICB2YXIgYWxsQ2hpbGRyZW4gPSBbXTsKCiAgdmFyIHVzZUJ1ZmZlciA9IHR5cGVvZiBCdWZmZXIgIT0gJ3VuZGVmaW5lZCc7CgogIGlmICh0eXBlb2YgY2lyY3VsYXIgPT0gJ3VuZGVmaW5lZCcpCiAgICBjaXJjdWxhciA9IHRydWU7CgogIGlmICh0eXBlb2YgZGVwdGggPT0gJ3VuZGVmaW5lZCcpCiAgICBkZXB0aCA9IEluZmluaXR5OwoKICAvLyByZWN1cnNlIHRoaXMgZnVuY3Rpb24gc28gd2UgZG9uJ3QgcmVzZXQgYWxsUGFyZW50cyBhbmQgYWxsQ2hpbGRyZW4KICBmdW5jdGlvbiBfY2xvbmUocGFyZW50LCBkZXB0aCkgewogICAgLy8gY2xvbmluZyBudWxsIGFsd2F5cyByZXR1cm5zIG51bGwKICAgIGlmIChwYXJlbnQgPT09IG51bGwpCiAgICAgIHJldHVybiBudWxsOwoKICAgIGlmIChkZXB0aCA9PSAwKQogICAgICByZXR1cm4gcGFyZW50OwoKICAgIHZhciBjaGlsZDsKICAgIHZhciBwcm90bzsKICAgIGlmICh0eXBlb2YgcGFyZW50ICE9ICdvYmplY3QnKSB7CiAgICAgIHJldHVybiBwYXJlbnQ7CiAgICB9CgogICAgaWYgKGNsb25lLl9faXNBcnJheShwYXJlbnQpKSB7CiAgICAgIGNoaWxkID0gW107CiAgICB9IGVsc2UgaWYgKGNsb25lLl9faXNSZWdFeHAocGFyZW50KSkgewogICAgICBjaGlsZCA9IG5ldyBSZWdFeHAocGFyZW50LnNvdXJjZSwgX19nZXRSZWdFeHBGbGFncyhwYXJlbnQpKTsKICAgICAgaWYgKHBhcmVudC5sYXN0SW5kZXgpIGNoaWxkLmxhc3RJbmRleCA9IHBhcmVudC5sYXN0SW5kZXg7CiAgICB9IGVsc2UgaWYgKGNsb25lLl9faXNEYXRlKHBhcmVudCkpIHsKICAgICAgY2hpbGQgPSBuZXcgRGF0ZShwYXJlbnQuZ2V0VGltZSgpKTsKICAgIH0gZWxzZSBpZiAodXNlQnVmZmVyICYmIEJ1ZmZlci5pc0J1ZmZlcihwYXJlbnQpKSB7CiAgICAgIGNoaWxkID0gbmV3IEJ1ZmZlcihwYXJlbnQubGVuZ3RoKTsKICAgICAgcGFyZW50LmNvcHkoY2hpbGQpOwogICAgICByZXR1cm4gY2hpbGQ7CiAgICB9IGVsc2UgewogICAgICBpZiAodHlwZW9mIHByb3RvdHlwZSA9PSAndW5kZWZpbmVkJykgewogICAgICAgIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHBhcmVudCk7CiAgICAgICAgY2hpbGQgPSBPYmplY3QuY3JlYXRlKHByb3RvKTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBjaGlsZCA9IE9iamVjdC5jcmVhdGUocHJvdG90eXBlKTsKICAgICAgICBwcm90byA9IHByb3RvdHlwZTsKICAgICAgfQogICAgfQoKICAgIGlmIChjaXJjdWxhcikgewogICAgICB2YXIgaW5kZXggPSBhbGxQYXJlbnRzLmluZGV4T2YocGFyZW50KTsKCiAgICAgIGlmIChpbmRleCAhPSAtMSkgewogICAgICAgIHJldHVybiBhbGxDaGlsZHJlbltpbmRleF07CiAgICAgIH0KICAgICAgYWxsUGFyZW50cy5wdXNoKHBhcmVudCk7CiAgICAgIGFsbENoaWxkcmVuLnB1c2goY2hpbGQpOwogICAgfQoKICAgIGZvciAodmFyIGkgaW4gcGFyZW50KSB7CiAgICAgIHZhciBhdHRyczsKICAgICAgaWYgKHByb3RvKSB7CiAgICAgICAgYXR0cnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBpKTsKICAgICAgfQoKICAgICAgaWYgKGF0dHJzICYmIGF0dHJzLnNldCA9PSBudWxsKSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgY2hpbGRbaV0gPSBfY2xvbmUocGFyZW50W2ldLCBkZXB0aCAtIDEpOwogICAgfQoKICAgIHJldHVybiBjaGlsZDsKICB9CgogIHJldHVybiBfY2xvbmUocGFyZW50LCBkZXB0aCk7Cn0KCi8qKgogKiBTaW1wbGUgZmxhdCBjbG9uZSB1c2luZyBwcm90b3R5cGUsIGFjY2VwdHMgb25seSBvYmplY3RzLCB1c2VmdWxsIGZvciBwcm9wZXJ0eQogKiBvdmVycmlkZSBvbiBGTEFUIGNvbmZpZ3VyYXRpb24gb2JqZWN0IChubyBuZXN0ZWQgcHJvcHMpLgogKgogKiBVU0UgV0lUSCBDQVVUSU9OISBUaGlzIG1heSBub3QgYmVoYXZlIGFzIHlvdSB3aXNoIGlmIHlvdSBkbyBub3Qga25vdyBob3cgdGhpcwogKiB3b3Jrcy4KICovCmNsb25lLmNsb25lUHJvdG90eXBlID0gZnVuY3Rpb24gY2xvbmVQcm90b3R5cGUocGFyZW50KSB7CiAgaWYgKHBhcmVudCA9PT0gbnVsbCkKICAgIHJldHVybiBudWxsOwoKICB2YXIgYyA9IGZ1bmN0aW9uICgpIHt9OwogIGMucHJvdG90eXBlID0gcGFyZW50OwogIHJldHVybiBuZXcgYygpOwp9OwoKLy8gcHJpdmF0ZSB1dGlsaXR5IGZ1bmN0aW9ucwoKZnVuY3Rpb24gX19vYmpUb1N0cihvKSB7CiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKTsKfTsKY2xvbmUuX19vYmpUb1N0ciA9IF9fb2JqVG9TdHI7CgpmdW5jdGlvbiBfX2lzRGF0ZShvKSB7CiAgcmV0dXJuIHR5cGVvZiBvID09PSAnb2JqZWN0JyAmJiBfX29ialRvU3RyKG8pID09PSAnW29iamVjdCBEYXRlXSc7Cn07CmNsb25lLl9faXNEYXRlID0gX19pc0RhdGU7CgpmdW5jdGlvbiBfX2lzQXJyYXkobykgewogIHJldHVybiB0eXBlb2YgbyA9PT0gJ29iamVjdCcgJiYgX19vYmpUb1N0cihvKSA9PT0gJ1tvYmplY3QgQXJyYXldJzsKfTsKY2xvbmUuX19pc0FycmF5ID0gX19pc0FycmF5OwoKZnVuY3Rpb24gX19pc1JlZ0V4cChvKSB7CiAgcmV0dXJuIHR5cGVvZiBvID09PSAnb2JqZWN0JyAmJiBfX29ialRvU3RyKG8pID09PSAnW29iamVjdCBSZWdFeHBdJzsKfTsKY2xvbmUuX19pc1JlZ0V4cCA9IF9faXNSZWdFeHA7CgpmdW5jdGlvbiBfX2dldFJlZ0V4cEZsYWdzKHJlKSB7CiAgdmFyIGZsYWdzID0gJyc7CiAgaWYgKHJlLmdsb2JhbCkgZmxhZ3MgKz0gJ2cnOwogIGlmIChyZS5pZ25vcmVDYXNlKSBmbGFncyArPSAnaSc7CiAgaWYgKHJlLm11bHRpbGluZSkgZmxhZ3MgKz0gJ20nOwogIHJldHVybiBmbGFnczsKfTsKY2xvbmUuX19nZXRSZWdFeHBGbGFncyA9IF9fZ2V0UmVnRXhwRmxhZ3M7CgpyZXR1cm4gY2xvbmU7Cn0pKCk7CgppZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGNsb25lOwp9CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXIpKQoKLyoqKi8gfSksCi8qIDI4NCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTE3KS5Ccm90bGlEZWNvbXByZXNzQnVmZmVyOwoKCi8qKiovIH0pLAovKiAyODUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKLyogQ29weXJpZ2h0IDIwMTMgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KCiAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgQml0IHJlYWRpbmcgaGVscGVycwoqLwoKdmFyIEJST1RMSV9SRUFEX1NJWkUgPSA0MDk2Owp2YXIgQlJPVExJX0lCVUZfU0laRSA9ICAoMiAqIEJST1RMSV9SRUFEX1NJWkUgKyAzMik7CnZhciBCUk9UTElfSUJVRl9NQVNLID0gICgyICogQlJPVExJX1JFQURfU0laRSAtIDEpOwoKdmFyIGtCaXRNYXNrID0gbmV3IFVpbnQzMkFycmF5KFsKICAwLCAxLCAzLCA3LCAxNSwgMzEsIDYzLCAxMjcsIDI1NSwgNTExLCAxMDIzLCAyMDQ3LCA0MDk1LCA4MTkxLCAxNjM4MywgMzI3NjcsCiAgNjU1MzUsIDEzMTA3MSwgMjYyMTQzLCA1MjQyODcsIDEwNDg1NzUsIDIwOTcxNTEsIDQxOTQzMDMsIDgzODg2MDcsIDE2Nzc3MjE1Cl0pOwoKLyogSW5wdXQgYnl0ZSBidWZmZXIsIGNvbnNpc3Qgb2YgYSByaW5nYnVmZmVyIGFuZCBhICJzbGFjayIgcmVnaW9uIHdoZXJlICovCi8qIGJ5dGVzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSByaW5nYnVmZmVyIGFyZSBjb3BpZWQuICovCmZ1bmN0aW9uIEJyb3RsaUJpdFJlYWRlcihpbnB1dCkgewogIHRoaXMuYnVmXyA9IG5ldyBVaW50OEFycmF5KEJST1RMSV9JQlVGX1NJWkUpOwogIHRoaXMuaW5wdXRfID0gaW5wdXQ7ICAgIC8qIGlucHV0IGNhbGxiYWNrICovCiAgCiAgdGhpcy5yZXNldCgpOwp9CgpCcm90bGlCaXRSZWFkZXIuUkVBRF9TSVpFID0gQlJPVExJX1JFQURfU0laRTsKQnJvdGxpQml0UmVhZGVyLklCVUZfTUFTSyA9IEJST1RMSV9JQlVGX01BU0s7CgpCcm90bGlCaXRSZWFkZXIucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24oKSB7CiAgdGhpcy5idWZfcHRyXyA9IDA7ICAgICAgLyogbmV4dCBpbnB1dCB3aWxsIHdyaXRlIGhlcmUgKi8KICB0aGlzLnZhbF8gPSAwOyAgICAgICAgICAvKiBwcmUtZmV0Y2hlZCBiaXRzICovCiAgdGhpcy5wb3NfID0gMDsgICAgICAgICAgLyogYnl0ZSBwb3NpdGlvbiBpbiBzdHJlYW0gKi8KICB0aGlzLmJpdF9wb3NfID0gMDsgICAgICAvKiBjdXJyZW50IGJpdC1yZWFkaW5nIHBvc2l0aW9uIGluIHZhbF8gKi8KICB0aGlzLmJpdF9lbmRfcG9zXyA9IDA7ICAvKiBiaXQtcmVhZGluZyBlbmQgcG9zaXRpb24gZnJvbSBMU0Igb2YgdmFsXyAqLwogIHRoaXMuZW9zXyA9IDA7ICAgICAgICAgIC8qIGlucHV0IHN0cmVhbSBpcyBmaW5pc2hlZCAqLwogIAogIHRoaXMucmVhZE1vcmVJbnB1dCgpOwogIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICB0aGlzLnZhbF8gfD0gdGhpcy5idWZfW3RoaXMucG9zX10gPDwgKDggKiBpKTsKICAgICsrdGhpcy5wb3NfOwogIH0KICAKICByZXR1cm4gdGhpcy5iaXRfZW5kX3Bvc18gPiAwOwp9OwoKLyogRmlsbHMgdXAgdGhlIGlucHV0IHJpbmdidWZmZXIgYnkgY2FsbGluZyB0aGUgaW5wdXQgY2FsbGJhY2suCgogICBEb2VzIG5vdGhpbmcgaWYgdGhlcmUgYXJlIGF0IGxlYXN0IDMyIGJ5dGVzIHByZXNlbnQgYWZ0ZXIgY3VycmVudCBwb3NpdGlvbi4KCiAgIFJldHVybnMgMCBpZiBlaXRoZXI6CiAgICAtIHRoZSBpbnB1dCBjYWxsYmFjayByZXR1cm5lZCBhbiBlcnJvciwgb3IKICAgIC0gdGhlcmUgaXMgbm8gbW9yZSBpbnB1dCBhbmQgdGhlIHBvc2l0aW9uIGlzIHBhc3QgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLgoKICAgQWZ0ZXIgZW5jb3VudGVyaW5nIHRoZSBlbmQgb2YgdGhlIGlucHV0IHN0cmVhbSwgMzIgYWRkaXRpb25hbCB6ZXJvIGJ5dGVzIGFyZQogICBjb3BpZWQgdG8gdGhlIHJpbmdidWZmZXIsIHRoZXJlZm9yZSBpdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBhZnRlcgogICBldmVyeSAzMiBieXRlcyBvZiBpbnB1dCBpcyByZWFkLgoqLwpCcm90bGlCaXRSZWFkZXIucHJvdG90eXBlLnJlYWRNb3JlSW5wdXQgPSBmdW5jdGlvbigpIHsKICBpZiAodGhpcy5iaXRfZW5kX3Bvc18gPiAyNTYpIHsKICAgIHJldHVybjsKICB9IGVsc2UgaWYgKHRoaXMuZW9zXykgewogICAgaWYgKHRoaXMuYml0X3Bvc18gPiB0aGlzLmJpdF9lbmRfcG9zXykKICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCAnICsgdGhpcy5iaXRfcG9zXyArICcgJyArIHRoaXMuYml0X2VuZF9wb3NfKTsKICB9IGVsc2UgewogICAgdmFyIGRzdCA9IHRoaXMuYnVmX3B0cl87CiAgICB2YXIgYnl0ZXNfcmVhZCA9IHRoaXMuaW5wdXRfLnJlYWQodGhpcy5idWZfLCBkc3QsIEJST1RMSV9SRUFEX1NJWkUpOwogICAgaWYgKGJ5dGVzX3JlYWQgPCAwKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQnKTsKICAgIH0KICAgIAogICAgaWYgKGJ5dGVzX3JlYWQgPCBCUk9UTElfUkVBRF9TSVpFKSB7CiAgICAgIHRoaXMuZW9zXyA9IDE7CiAgICAgIC8qIFN0b3JlIDMyIGJ5dGVzIG9mIHplcm8gYWZ0ZXIgdGhlIHN0cmVhbSBlbmQuICovCiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgMzI7IHArKykKICAgICAgICB0aGlzLmJ1Zl9bZHN0ICsgYnl0ZXNfcmVhZCArIHBdID0gMDsKICAgIH0KICAgIAogICAgaWYgKGRzdCA9PT0gMCkgewogICAgICAvKiBDb3B5IHRoZSBoZWFkIG9mIHRoZSByaW5nYnVmZmVyIHRvIHRoZSBzbGFjayByZWdpb24uICovCiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgMzI7IHArKykKICAgICAgICB0aGlzLmJ1Zl9bKEJST1RMSV9SRUFEX1NJWkUgPDwgMSkgKyBwXSA9IHRoaXMuYnVmX1twXTsKCiAgICAgIHRoaXMuYnVmX3B0cl8gPSBCUk9UTElfUkVBRF9TSVpFOwogICAgfSBlbHNlIHsKICAgICAgdGhpcy5idWZfcHRyXyA9IDA7CiAgICB9CiAgICAKICAgIHRoaXMuYml0X2VuZF9wb3NfICs9IGJ5dGVzX3JlYWQgPDwgMzsKICB9Cn07CgovKiBHdWFyYW50ZWVzIHRoYXQgdGhlcmUgYXJlIGF0IGxlYXN0IDI0IGJpdHMgaW4gdGhlIGJ1ZmZlci4gKi8KQnJvdGxpQml0UmVhZGVyLnByb3RvdHlwZS5maWxsQml0V2luZG93ID0gZnVuY3Rpb24oKSB7ICAgIAogIHdoaWxlICh0aGlzLmJpdF9wb3NfID49IDgpIHsKICAgIHRoaXMudmFsXyA+Pj49IDg7CiAgICB0aGlzLnZhbF8gfD0gdGhpcy5idWZfW3RoaXMucG9zXyAmIEJST1RMSV9JQlVGX01BU0tdIDw8IDI0OwogICAgKyt0aGlzLnBvc187CiAgICB0aGlzLmJpdF9wb3NfID0gdGhpcy5iaXRfcG9zXyAtIDggPj4+IDA7CiAgICB0aGlzLmJpdF9lbmRfcG9zXyA9IHRoaXMuYml0X2VuZF9wb3NfIC0gOCA+Pj4gMDsKICB9Cn07CgovKiBSZWFkcyB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzIGZyb20gUmVhZCBCdWZmZXIuICovCkJyb3RsaUJpdFJlYWRlci5wcm90b3R5cGUucmVhZEJpdHMgPSBmdW5jdGlvbihuX2JpdHMpIHsKICBpZiAoMzIgLSB0aGlzLmJpdF9wb3NfIDwgbl9iaXRzKSB7CiAgICB0aGlzLmZpbGxCaXRXaW5kb3coKTsKICB9CiAgCiAgdmFyIHZhbCA9ICgodGhpcy52YWxfID4+PiB0aGlzLmJpdF9wb3NfKSAmIGtCaXRNYXNrW25fYml0c10pOwogIHRoaXMuYml0X3Bvc18gKz0gbl9iaXRzOwogIHJldHVybiB2YWw7Cn07Cgptb2R1bGUuZXhwb3J0cyA9IEJyb3RsaUJpdFJlYWRlcjsKCgovKioqLyB9KSwKLyogMjg2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCnZhciBiYXNlNjQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4Nyk7CnZhciBmcyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7CgovKioKICogVGhlIG5vcm1hbCBkaWN0aW9uYXJ5LWRhdGEuanMgaXMgcXVpdGUgbGFyZ2UsIHdoaWNoIG1ha2VzIGl0IAogKiB1bnN1aXRhYmxlIGZvciBicm93c2VyIHVzYWdlLiBJbiBvcmRlciB0byBtYWtlIGl0IHNtYWxsZXIsIAogKiB3ZSByZWFkIGRpY3Rpb25hcnkuYmluLCB3aGljaCBpcyBhIGNvbXByZXNzZWQgdmVyc2lvbiBvZgogKiB0aGUgZGljdGlvbmFyeSwgYW5kIG9uIGluaXRpYWwgbG9hZCwgQnJvdGxpIGRlY29tcHJlc3NlcyAKICogaXQncyBvd24gZGljdGlvbmFyeS4g8J+YnAogKi8KZXhwb3J0cy5pbml0ID0gZnVuY3Rpb24oKSB7CiAgdmFyIEJyb3RsaURlY29tcHJlc3NCdWZmZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExNykuQnJvdGxpRGVjb21wcmVzc0J1ZmZlcjsKICB2YXIgY29tcHJlc3NlZCA9IGJhc2U2NC50b0J5dGVBcnJheShfX3dlYnBhY2tfcmVxdWlyZV9fKDI4OCkpOwogIHJldHVybiBCcm90bGlEZWNvbXByZXNzQnVmZmVyKGNvbXByZXNzZWQpOwp9OwoKCi8qKiovIH0pLAovKiAyODcgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKCmV4cG9ydHMuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGgKZXhwb3J0cy50b0J5dGVBcnJheSA9IHRvQnl0ZUFycmF5CmV4cG9ydHMuZnJvbUJ5dGVBcnJheSA9IGZyb21CeXRlQXJyYXkKCnZhciBsb29rdXAgPSBbXQp2YXIgcmV2TG9va3VwID0gW10KdmFyIEFyciA9IHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJyA/IFVpbnQ4QXJyYXkgOiBBcnJheQoKdmFyIGNvZGUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycKZm9yICh2YXIgaSA9IDAsIGxlbiA9IGNvZGUubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsKICBsb29rdXBbaV0gPSBjb2RlW2ldCiAgcmV2TG9va3VwW2NvZGUuY2hhckNvZGVBdChpKV0gPSBpCn0KCi8vIFN1cHBvcnQgZGVjb2RpbmcgVVJMLXNhZmUgYmFzZTY0IHN0cmluZ3MsIGFzIE5vZGUuanMgZG9lcy4KLy8gU2VlOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXNlNjQjVVJMX2FwcGxpY2F0aW9ucwpyZXZMb29rdXBbJy0nLmNoYXJDb2RlQXQoMCldID0gNjIKcmV2TG9va3VwWydfJy5jaGFyQ29kZUF0KDApXSA9IDYzCgpmdW5jdGlvbiBwbGFjZUhvbGRlcnNDb3VudCAoYjY0KSB7CiAgdmFyIGxlbiA9IGI2NC5sZW5ndGgKICBpZiAobGVuICUgNCA+IDApIHsKICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCcpCiAgfQoKICAvLyB0aGUgbnVtYmVyIG9mIGVxdWFsIHNpZ25zIChwbGFjZSBob2xkZXJzKQogIC8vIGlmIHRoZXJlIGFyZSB0d28gcGxhY2Vob2xkZXJzLCB0aGFuIHRoZSB0d28gY2hhcmFjdGVycyBiZWZvcmUgaXQKICAvLyByZXByZXNlbnQgb25lIGJ5dGUKICAvLyBpZiB0aGVyZSBpcyBvbmx5IG9uZSwgdGhlbiB0aGUgdGhyZWUgY2hhcmFjdGVycyBiZWZvcmUgaXQgcmVwcmVzZW50IDIgYnl0ZXMKICAvLyB0aGlzIGlzIGp1c3QgYSBjaGVhcCBoYWNrIHRvIG5vdCBkbyBpbmRleE9mIHR3aWNlCiAgcmV0dXJuIGI2NFtsZW4gLSAyXSA9PT0gJz0nID8gMiA6IGI2NFtsZW4gLSAxXSA9PT0gJz0nID8gMSA6IDAKfQoKZnVuY3Rpb24gYnl0ZUxlbmd0aCAoYjY0KSB7CiAgLy8gYmFzZTY0IGlzIDQvMyArIHVwIHRvIHR3byBjaGFyYWN0ZXJzIG9mIHRoZSBvcmlnaW5hbCBkYXRhCiAgcmV0dXJuIChiNjQubGVuZ3RoICogMyAvIDQpIC0gcGxhY2VIb2xkZXJzQ291bnQoYjY0KQp9CgpmdW5jdGlvbiB0b0J5dGVBcnJheSAoYjY0KSB7CiAgdmFyIGksIGwsIHRtcCwgcGxhY2VIb2xkZXJzLCBhcnIKICB2YXIgbGVuID0gYjY0Lmxlbmd0aAogIHBsYWNlSG9sZGVycyA9IHBsYWNlSG9sZGVyc0NvdW50KGI2NCkKCiAgYXJyID0gbmV3IEFycigobGVuICogMyAvIDQpIC0gcGxhY2VIb2xkZXJzKQoKICAvLyBpZiB0aGVyZSBhcmUgcGxhY2Vob2xkZXJzLCBvbmx5IGdldCB1cCB0byB0aGUgbGFzdCBjb21wbGV0ZSA0IGNoYXJzCiAgbCA9IHBsYWNlSG9sZGVycyA+IDAgPyBsZW4gLSA0IDogbGVuCgogIHZhciBMID0gMAoKICBmb3IgKGkgPSAwOyBpIDwgbDsgaSArPSA0KSB7CiAgICB0bXAgPSAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxOCkgfCAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgMTIpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildIDw8IDYpIHwgcmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAzKV0KICAgIGFycltMKytdID0gKHRtcCA+PiAxNikgJiAweEZGCiAgICBhcnJbTCsrXSA9ICh0bXAgPj4gOCkgJiAweEZGCiAgICBhcnJbTCsrXSA9IHRtcCAmIDB4RkYKICB9CgogIGlmIChwbGFjZUhvbGRlcnMgPT09IDIpIHsKICAgIHRtcCA9IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDIpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldID4+IDQpCiAgICBhcnJbTCsrXSA9IHRtcCAmIDB4RkYKICB9IGVsc2UgaWYgKHBsYWNlSG9sZGVycyA9PT0gMSkgewogICAgdG1wID0gKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTApIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDQpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildID4+IDIpCiAgICBhcnJbTCsrXSA9ICh0bXAgPj4gOCkgJiAweEZGCiAgICBhcnJbTCsrXSA9IHRtcCAmIDB4RkYKICB9CgogIHJldHVybiBhcnIKfQoKZnVuY3Rpb24gdHJpcGxldFRvQmFzZTY0IChudW0pIHsKICByZXR1cm4gbG9va3VwW251bSA+PiAxOCAmIDB4M0ZdICsgbG9va3VwW251bSA+PiAxMiAmIDB4M0ZdICsgbG9va3VwW251bSA+PiA2ICYgMHgzRl0gKyBsb29rdXBbbnVtICYgMHgzRl0KfQoKZnVuY3Rpb24gZW5jb2RlQ2h1bmsgKHVpbnQ4LCBzdGFydCwgZW5kKSB7CiAgdmFyIHRtcAogIHZhciBvdXRwdXQgPSBbXQogIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSAzKSB7CiAgICB0bXAgPSAoKHVpbnQ4W2ldIDw8IDE2KSAmIDB4RkYwMDAwKSArICgodWludDhbaSArIDFdIDw8IDgpICYgMHhGRjAwKSArICh1aW50OFtpICsgMl0gJiAweEZGKQogICAgb3V0cHV0LnB1c2godHJpcGxldFRvQmFzZTY0KHRtcCkpCiAgfQogIHJldHVybiBvdXRwdXQuam9pbignJykKfQoKZnVuY3Rpb24gZnJvbUJ5dGVBcnJheSAodWludDgpIHsKICB2YXIgdG1wCiAgdmFyIGxlbiA9IHVpbnQ4Lmxlbmd0aAogIHZhciBleHRyYUJ5dGVzID0gbGVuICUgMyAvLyBpZiB3ZSBoYXZlIDEgYnl0ZSBsZWZ0LCBwYWQgMiBieXRlcwogIHZhciBvdXRwdXQgPSAnJwogIHZhciBwYXJ0cyA9IFtdCiAgdmFyIG1heENodW5rTGVuZ3RoID0gMTYzODMgLy8gbXVzdCBiZSBtdWx0aXBsZSBvZiAzCgogIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXIKICBmb3IgKHZhciBpID0gMCwgbGVuMiA9IGxlbiAtIGV4dHJhQnl0ZXM7IGkgPCBsZW4yOyBpICs9IG1heENodW5rTGVuZ3RoKSB7CiAgICBwYXJ0cy5wdXNoKGVuY29kZUNodW5rKHVpbnQ4LCBpLCAoaSArIG1heENodW5rTGVuZ3RoKSA+IGxlbjIgPyBsZW4yIDogKGkgKyBtYXhDaHVua0xlbmd0aCkpKQogIH0KCiAgLy8gcGFkIHRoZSBlbmQgd2l0aCB6ZXJvcywgYnV0IG1ha2Ugc3VyZSB0byBub3QgZm9yZ2V0IHRoZSBleHRyYSBieXRlcwogIGlmIChleHRyYUJ5dGVzID09PSAxKSB7CiAgICB0bXAgPSB1aW50OFtsZW4gLSAxXQogICAgb3V0cHV0ICs9IGxvb2t1cFt0bXAgPj4gMl0KICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA8PCA0KSAmIDB4M0ZdCiAgICBvdXRwdXQgKz0gJz09JwogIH0gZWxzZSBpZiAoZXh0cmFCeXRlcyA9PT0gMikgewogICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgKHVpbnQ4W2xlbiAtIDFdKQogICAgb3V0cHV0ICs9IGxvb2t1cFt0bXAgPj4gMTBdCiAgICBvdXRwdXQgKz0gbG9va3VwWyh0bXAgPj4gNCkgJiAweDNGXQogICAgb3V0cHV0ICs9IGxvb2t1cFsodG1wIDw8IDIpICYgMHgzRl0KICAgIG91dHB1dCArPSAnPScKICB9CgogIHBhcnRzLnB1c2gob3V0cHV0KQoKICByZXR1cm4gcGFydHMuam9pbignJykKfQoKCi8qKiovIH0pLAovKiAyODggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKbW9kdWxlLmV4cG9ydHM9Ilc1L2ZjUUxuNWdLZjJYVWJBaVExWFVMWCtUWno2QURUb0RzZ3FrNnFWZmVDMGU0bTZPTzJ3Y1ExSjc2WkJWUlYxZlJrRXNkdS8vNjJ6UXNGRVpXU1RDbk1oY3NRS2xTMnFPaHVWWVlNR0NrVjBmWFdFb01GYkVTWHJLRVo5d2RVRXN5dzlnNGJKbEV0MVk2b1ZNeE1SVEVWYkNJd1p6Snpib0s1ajhtNFlIMDJxZ1hZaHYxVitQTTQzNXNMVnh5SEppaGFKUkVFaFpHcUwwM3R4R0ZRTG03NmNhR08vb3Z4S3Z6Q2J5LzN2TVR0WC80NTlmMGlnaTdXdXRuS2lNUTZ3T0RTb1JoLzhMeDFWM1E5OU12S3R3QjZiSGRFUllSWTBoU3RKb01qTmVUc05YN2JuK1k3ZTRFUTNiZjh4QmM3TDBCc3lmRlBLNDNkR1NYcEw2Y2xZQy9JMzI4aDU0L1ZZclE1aTA2NDhGZ2JHdGw4MzdzdkozNUwzTW90LytuUGxOcFdnS3gxZ0dYUVlxWDZuK2JiWjd3dXlDSEtjVW9rMTJYanF1YjdOWFpHenFCeDBTRCt1emlOZjg3dDd2ZTQyanhTS1FvVzNueXhWcldJR2xGU2hoQ0t4anBaWjVNZUduYTArbEJraytrYU44RjlxRkJBRmdFb2d5TUJkY1gvVDFXL1duTU9pLzd5Y1dVUWxvRUJLR2VDNDhNa2l3cUprSk8rMTJlUWlPRkhNbWNrNnEvSWpXVzNSWmxhbnkyM1RCbStjTnIvODQvb2k1R0dtR0JaV3JaNmorenlrVm96ejVmVC9RSC9EYTZXVGJaWVlQeW5WTk83a3h6dU5OMmt4S0tXY2hlNVd2ZWl0UEtBZWNCOFljQUh6Lyt6WExqY0x6a2REU2t0TklEd1pFOUo5WCt0dG80M29KeTY1d0FwTTNtRHpZdEN3WDlsTStONVZSM2tYWW8wWjN0MFR0WGZnQkZnN2dVOG9OMERnbDdmWmxVYmhObGwrMHV1b2hSVktqckVkOGVnclNuZHk1L1RnZDJncWpBNENBVnVDN0VTVW1MM0Rab0duZmhRVjh1d25waThFR3ZBVlZzb3dOUnhQdWRjazcrb3FBVURrd1pvcFdxRm5XMXJpc3MwdDF6NmlDSVNWS3JlWUdOdlFjWHYrMUw5K2piUDhjZC9kUFVpcUJzbzJxKzdaeUZCdkVOQ2trVnI0NGl5UGJ0T29Pb0NlY1dzaXVxTVNNTDVsdit2TjVNelVyK0RuaDczRzdRMVluUllKVllYSFJKYU5BT0J5aWFLNkN1c2dGZEJQRTQwcjBydnFYVjd0a3NLTzJEckhZWEJUdjhQNXlzcXhFeDhWRFhVRERxa1BINk5OT1YvYTJXSDh6bGtYUkVMU2E4UCtoZU55SkJCUDdQZ3NHMUV0V3ROZWY2L2krbGNheXpRd1FDc2R1aWRwYktmaFdVRGdBRW15aEd1L3pWVGFjSTZSUzB6VEFCck9ZdWVlbW5WYTE5dTlmVDIzTi9UYTZSdlRwb2Y1RFd5Z3FyZUNxckRBZ000TElEMSsxVC90YVU2eVRGVkxxWE92Ky9NdVFPRm5hRjh2TE1LRDd0S1dEb0JkQUxneEYzM3pRY2NDY2RIeDhmS0lWZFc2OU83cUh0WHBlR3I5amJicEZBK3FSTVdyNWhwMHM2N0ZQYzdIQWlMVjBnMC9wZVpsVzdoSlBZRWhaeWhwU3dhaG5mOTMvdFpnZnFaV1hGZG1kWEJ6cXhHSExyUUt4b0FZNmZSb0JoZ0NSUG1tR3VlWVo1SmV4VFZES1VJWHprRy9mcXAvMFUzaEFnUWRKOXp1bXV0SzZucVdiYXF2bTFwZ3UwM0lZUitHKzhzMGpEQkJ6OGNBcFpGU0JldVdhc3lxbzJPTURLQVpDb3pTK0dXU3ZML0hzRTlySHhvb2UxN1Uzcy9sVEUrVlpBazRqM2RwNnVJR2FDMEpNaXFSNUNVc2FiUHlNMGRPWURSN0VhN2lwNFVTWmx5YTM4WWZQdHZyWC90QmxoSGlsajU1bloxbmZOMjRBT0FpOUJWdHovTWJuOEFFREpDcUpnc1ZVYTZuUW5TeHYyRnM3bC9ObEN6cGZZRWptUHJOeWliLyt0MGVpMmVFTWp2TmhMa0hDWmxjaTRXaEJlN2VQWlRtellxbFk5KzFweHRTNEdCKzVsTTFCSFQ5dFMyNzBFV1VEWUZxMUkweVkvZk5pQWs0Yms5eUJnbWVmL2YyazZBbFlRWkhzTkZuVzh3QlF4Q2Q2OGlXdjcvMzViWGZ6M0pabWZHbGlnV0FLUmpJczNJcHp4UTI3dkFnbEhTaU96Q1l6SjlMOUExQ2RpeUZ2eVI2NnVjQTRqS2lmdTVlaHdFUjI2eVY3SGpLcW41TWZvem83Q294eHQ4TFdXUFQ0N0JlTXhYOHAwUGpiN2habis2Ync3ejNMdys3NjUzajVzSThDTHU1a1RocE1sajFtNGMyY2gzakdjUDFGc1QxM3Z1SzNxamVjS1RaazJrSGNPWlk0MFVYK3FkYXhzdFpxc3FRcWdYeitRR0Y5OVpKTHFyM1ZZdTRhZWNsMUFiNUdtcVM4ay9HVjViOTV6eFE1ZDRFZlhVSjZrVFMvQ1hGL2FpcUtET1QxVDdKejV6MFB3RFVjd3I5Y2xMTjFPSkdDaUtmcXZhaCtoM1h6ckJPaUxPVzh3dm44Z1c2cUU4dlB4aStFZnYrVUg1NVQ3UFFGVk1oNmNaMXBaUWx6SnBLWjdQN3VXdndQR0o2RFRsUjZ3YnlqM0l2Mkh5ZWZuUm8vZHY3ZE54K3FhYTBOMzhpQnNSKytVaWw3V2Q0YWZ3RE5zcnpEQUs0Zlhad3ZFWS9qZEt1SUtYbGZyUWQyQzM5ZFc3bnRuUmJJcDlPdEd5OXBQQm4vVjJBU29pLzJVSlpmUyt4dUdMSDhibkx1UGx6ZFROUzZ6ZHlrOER0L2g2c2ZPVzVteXhoMWYremYzelozTVgvbU85Y1FQcDVwT3g5NjdaQTYvcHFIdmNsTmZuVUZGK3JxK1ZkN2FsS3I2S1dQY0lEaHBuNnYySzZObFV1NkxyS284Yi9wWXBVL0dhemZ2dHdobjd0RU9VdVhodDVyVUpkU2Y2c0xqWWYwVlRZRGd3SjgxeWFxS1RVWWVqL3RiSGNrU1JiL0haaWN3R0pxaDFtQUhCL0l1TnM5ZGM5eXV2RjNENVhvY20zZWxXRmRxNW9FeTcwZFlGaXQ3OXlhTGlOalBqNVVVY1ZtWlVWaFFFaFc1VjJaNkNtNEhWSC9SOHFsYW1SWXdCaWxldWgwN0NiRWNlM1RYYTJKbVhXQmYrb3p0MzE5cHNib29iZVpoVm53aE1aek9lUUp6aHBURGJQNzFUdjhIdVp4eFVJLyttYTNYVzZERkREczQrcW1wRVJ3SEdCZDJlZHh3VUtsT0RSZFVXWi9nMEdPZXpyYnpPWmF1Rk1haTRRVTZHVkhWNmFQTkJpQm5kSFNzVjRJenB2VWlpWXlnNk95eXJMNERqNXEvTHczTjVrQXdmdEVWbDlyTmQ3Sms1UERpajJoVEg2d0lYbnN5WGtLZVB4Ym1IWWdDOEE2YW41Rm9iL0tINUd0QzBsNGVGc28rVnB4ZWR0SkhkSHBObStCdnk0Qzc5eVZPa3Jac0xyUTNPSENlQjBSYStrQklSbGRVR2xEQ0VtcTJSd1huZnloNkR6K2FsazZlZnRJMm42c2FzdFJyR3did3N6QmVEUlMvRmEvS3dSSmtDelRzTHIvSkNzNWhPUEUvTVBMWWRaMUYxZnY3RCtWbXlzWDZOcE9DOGFVOUY0UXM2SHZEeVV5OVB2RkdES1ovUDUxMDFUWUhGbDhwamo2d20vcXlTNzVldFpoaGZnMFVFTDRPWW1IazZtNmRPMTkyQXpvSXlQU1Y5UWVkREE0TWwyM3JSYnF4TVBNeGY3RkpuRGM1RlRFbFZTL1B5cWdlUHptd1ZaMjZOV2hSRFErb2FUN2x5N2VsbDRzM0R5cFMxczBnK3RPcjdYSHJya1pqOSt4L21KQnR0ckx4OThsRklhUlp6SHo0YUM3cjUyL0pRNFZqSGFoWTIvWVZYWm4vUUMyenRRYi9zWTN1Umx5YzV2UVM4bkxQR1QvbjI3NDk1aThIUEExNTJ6N0ZoNWFGcHluMUdQSktIdVBMOEl3OTREdVczS2prVVJBV1pYbjRFUXk4OXhpS0VITjFtay90a000Z1lEQnh3Tm9ZdlJmRTZMRnFzeFdKdFByREdic25MTWFwM0thM01Vb3l0VzBjdmllb3pPbWRFUm1oY3F6RyszSG1adjJ5WmVpSWVRVEtHZFJUNEhITnhla20xdFkrL24wNnJHbUZsZXFMc2NTRVJ6Y3RUS002RzlQMFBjMVJtVnZyYXNjSXhhTzFDUUNpWVBFMTViRDdjM3hTZVc3Z1h4WWpneGNyVWxjYkl2TzByK1lwbGh4MGtUdDNxYWZET21GeU1qZ0d4WHU3M3JkZE1IcFYxd011YnlBR2NmL3Y1ZExyNVA3MlRhOWxCRitmek1Kck15Y3d2Kzl2blUzQU5JbDFjSDl0Zlc3YWY4dTAvSEcwdlY0N2pORlh6RlR0YWhhMXh2emUvczhLTXRDWXVjWGMxbnpmZC9NUXlkVVhuL2I3MlJCdDV3Ty8zalJjTUg5QmRoQy95Y3RLQkl2ZVJZUHJOcERXcUJzTzhWTW1QK1d2UmFPY0E0elJNUjFQdlNvTzkyclM3cFlFditmWmZFZlRNekVkTSs2WDV0TGx5eEV4aHFMUmttczVFdUxvdkxmeDY2ZGU1ZkwyL3lYMDJINTJGUFZ3YWhyUHFtTi9FMG9WWG5zQ0toYmkveVJ4WDgzblJiVUtXaHpZY2VYT250ZnVYbjUxTnN6SjZNTzczcFFmNVBsNGluM2VjNEpVOGhGN3BwVjM0K21tOXIxTFkwZWUvaTFPMXdwZDgremZMenRFMGNxQnhnZ2lCaTVCdTk1djlsM3I5ci9VNWh3ZUxuK1RiZnhvd3JXRHFkSmF1S2Q4K3EvZEg4c2JQa2M5dHR1eU85NGY3L1hLL25IWDQ2TVBGTEViNXFRbE5QdmhKNTAvNTl0OWZ0M0xYdTd1VmFXYU8yYkRyRENuUlN6WnlXdkZLeE8xK3ZUOE13d3VuUjNiWDBDa2ZQanFiNEs5TzE5dG41WDUwUHZtWXBFd0h0aVc5V3R6dVYvczc2QjF6dkxMTmtWaU5kOHlTeElsLzNvcmZxUDkwVHlUR2FmNy9yeDhqUXplSEpYZG1oL042WUR2YnZtVEJ3Q2R4ZkVRMU5jTDZ3Tk1kU0lYTnE3YjFFVXpSeTEvQXhzeWs1cDIyR01HMWIrR3hGZ2JIRXJaaDkyd3V2Y28wQXVPTFhjdDlodncybncvTHFJY0RSUm1KbW1aemNnVWE3SnBNL1dWL1M5SVVmYkY1NlRMMm9yenF3ZWJkUkQ4bklZTko0MUQvaHozN0ZvMTFwMlkyMXd6UGNuNzEzcVZHaHF0ZXZTdFlmR0g0bjY5T0VKdFB2YmJMWVd2c2NEcWMzSGdudTE2Nit0QXlMbnhyWDBZNXpvWWpWKysxc0k3dDVrTXIwMktULyt1d3RrYytyWkxPZi9xbi9zM25ZQ2YxM0RnOC9zQjJkaUpnakdxalErVExoeGJ6eXVlMk9iN1g2LzlsVXdXN2ErbGJ6bkh6T1l5OExLVzFDL3VSUGJRWTNLVy8wZ085TFh1bkhMdlBMOTdhZmJhOWJGdGM5aG16N0dBdHRqVllsQ3ZRQWlPd0FrL2dDNStoa0xFczZ0cjNBWkt4TEp0T0V3azJkTHhUWVdzSUIvai9Ub1d0SVd6bzkwNkZyU0c4aWFxcXFxcXFpSWlJaUFnek16TXpOeitBeUsrMDEvemk4bjhTK1kxTWpvUmFRODBXVS9HOE1CbE8rNTNWUFhBTnJXbTR3ekdVVlpVampCSlpWZGhwY2ZranNtY1dhTytVRWxkWGkxZSt6cStIT3NDcGtuWXNodWg4cE9MSVNKdW43VE4wRUlHVzJ4VG5sT0ltZWVjbm9HVzRyYXhlMkcxVDNIRXZmWVVZTWhHK2dBRk9Bd2g1bks4bVpod0pNbU43cjIyNFFWc05Gdlo4N1owcWF0dmtua2x5UERLM0h5NDVQZ1ZLWGppNTJXZW40ZDRQbEZWVllHbk5hcCtmU3BGYks5MHJZbmhVYzZuOTFRM0FZOUUwdEpPRnJjZlp0bS80OTFYYmNHL2pzVmlVUFBYNzZxbWV1aXorcVkxSGs3LzFWUE00MDV6V1Z1b2hlTFVpbXBXWWRWekNtVWRLSGViTWR6Z3JZcmI4bUwyZWVMU25SV0hkb25mWmE4UnNPVTlGMzd3KzU5MWw1RkxZSGlPcVdlSHRFL2xXckJIY1JLcDN1aHRyOHlYbThMVS81bXMrTk02WktzcXU5MGNGWjRvNTgrazRyZHJ0Qjk3TkFERmJ3bUVHN2xYcXZpcmhPVE9xVTE0eHVVRjJteUlqVVJjUEhyUE9RNGxtTTNQZU1nN2JVdWswbm5aaTY3YlhzVTZIOGxocUlvOFRhT3JFYWZDTzFBUks5UGpDMFFPb3EyQnhtTWRnWUI5Ry9sSWI5KytmcU5KMnM3QkhHRnlCTm1aQVI4SjNLQ28wMTJpa2FTUDhCQ3JmNlZJMFg1eGRuYmhISU8rQjVyYk95QjU0elhremZPYnlKNGVjd3hmcUJKTUxGYzdtNTlyTmN3N2hvSG5GWjBiMDB6ZWUrZ1RxdmptNjFQYjR4bjBrY0RYNGp2SE0wckJYWnlwRzNEQ0tuRC9XYWEvWnRIbXRGUGdPNWVFVHgrazdSclZnM2FTd20yWW9OWG5DczNYUFFEaE5uK0ZpYTZJbE9PdUlHNlZKSDdUUDZhdmEyNmVoS0hRYTJUNE4wdGNaOWRQQ0dvM1pkbk5sdHNIUWJlWXQ1dlBuSmV6Vi9jQWVOeXBkbWwxdkNISThNODFuU1JQNVFpMittSTh2L3N4aVpydTkxODduUnRwM2YvNDJOZW1jT05hKzRlVkMzUENaemM4OGFaaDg1MUNxU3NzaGU3MHVQeGVOL2RtWXdsd2IzdHJ3TXJOMUdxOGpibkFwY1ZEeC95RFBlWXM1LzdyNjJ0c1E2bExnK0RpRlhURWh6UjlkSHF2MGlUNHRnajgyNVcrSDNYaVJVTlVaVDJrUjlSaTArbHArVU0zaVF0Uzh1T0UyM0x5NEtZdHZxSDEzamdoVW50SlJBZXd1ek5MRFhwOFJ4ZGNhQTNjTVk2VE8ySWVTRlJYZXplV0lqQ3F5aHNVZE1ZdUNnWVRaU0twQnlwZTF6UmZxOEZzaHZmQlBjNkJBUVdsNy9ReElEcDNWR28xSjN2bjQyT0VzM3F6bndzK1lMUlhieW15QjE5YTlYQng2bi9vd2N5eGxFWXlGV0NpK2tHOUYrRXlELzR5bjgwK2FnYVo5UDdheTJEbnk5OWFLMm85MUZrZkVPWThoQnd5Zmk1dXd4Mnk1U2FIbUcrb3EvemwxRlgvOGlyT2Y4WTN2QWNYLzZ1TFA2QTZudk1PMjRlZFNHUGpRYzgyN1J3MmF0WCt6MmJLcTBDbVc5bU90WW5yNS9BZkRhMVpmUGFYbkt0bFdib3J1cDdRWXgrT3IydVdiK04zTi8vMit5RGNYTXFJSmRmNTV4bDcvdnNqNFdvUFBseEx4dFZya0o0dy90VGUzbUxkQVRPT1l3eGNxNTJ3NVd4ejVNYlBkVnM1TzgvbGhmRTdkUGowYklpUFEzUVYwaXFtNG0zWVg4aFJmYzZqUTNmV2VwZXZNcVVESmQ4Nlo0dndNNDBDV0hubitXcGhzR0hmaWVGMDJEM3RtWnZwV0Qra0JwTkNGY0xuWmhjbW1yaHBHenpiZEErc1ExYXIxOE9KRDg3SU9LT0ZvUk56bmFIUE5IVWZVTmh2WTFpVSt1aHZFdnBLSGFVbjNxSzNleFZWeVg0am9pcHAzdW03Rm1ZSldtQStXYklEc2hScGJWUng1L25xc3RDZ3k4N0ZHYmZWQjh5REdDcVMrMnFDc25Sd25TQU42emd6eGZkQjJuQlQvdlo0LzZ1eGI2b0g4YjRWQlJ4aUlCOTN3TGE0N2hHM3cyU0wvMloyN3lPWEpGd1pwU0phQll5dmFqQTd2UlJZTktxbGpYS3B0L0NGRC90U01yMThES0tid0IweGdnQmVQYXRsMW5raTB5dnFXNXpjaGx5Wm1KME9UeEozRCtmc1lKcy9teFlONStMZTVvYWd0Y2wrWXNWdnk4a1NqSTJZR3ZHanZtcGtSUzlXMmR0WHFXblZ1eFVoVVJtMWxLdG91L2hkRXExOVZCcDlPakd2SEVRU21ycHVmMlIyNG1YR2hlaWw4S2VpQU5ZOGZXMVZFUlVmQkltYjY0ajEyY2FCWm1SVmlaSGJlVk1qQ3JQRGc5QTkwSVhydG5zWUN1WnRSUTBQeXJLRGpCTk9zUGZLc2cxcEEwMmdIbFZyME9YaUZodHA2bkpxWFZ6Y2JmTTBLbnpDM2dnT0VOUEU5VkJkbUhLTjZMWWFpamI0d1h4Sm41QTBGU0RGNWoraDFvb1p4ODg1SnQzWkt6TzVuN1o1V2ZORU90eXlQcVFFbm43V0x2NUZpczNQZGdNc2hqRjFGUnlkYk55ZUJieUtJMW9OMVRSVnJWSzdrZ3NiL3pqWDRORFBJUk1jdFZlYXhWQjM4VmgxeDVLYmVKYlUxMzhBTTVLem1adTN1bnkwRXJ5Z3hpSkY3R1ZYVXJQekZ4cmx4MXVGZEFhWkZETjljdkliNzRxRDl0ekJNbzdMN1dJRVlLK3NsYTFEVk1IcEYwRjdiMytZNlMremp2TGVETUNwYXBtSm8xd2VCV3V4S0Yzck9vY2loMWd1bjRCb0poMWtXblYvSm1pcTZ1T2hLM1ZmS3hFSEVrYWZqTGdLM291amFQelk2U1hnOHBoaEw0VE5SMXh2SmQxV2EwYVlGZlBVTUxyTkJEQ2g0QXVHUlRidEtNYzZaMVVkajhldlkvWnBDdU1BVWVmZG82OURaVW5nb3FFMVA5QTNQSmZPZjdXaXhDRWorWTZ0N2ZZZUhiYnhVQW9GVjNNODljQ0tmbWEzZmMxK2pLUmU3TUZXRWJRcUVmeXpPMngvd3JPMlZZSDdpWWRROUJrUHlJOC8za1hCcExhQ3BVN2VDMFl2L2FtL3RFRHU3SFpwcWcwRXZIbzBuZi9SL2dSelVXeTMzL0hYTUpRZXUxR3lsS21Pa1h6bENmR0ZydUFjUFBoYUdxWk90dTE5enNKMVNPMkp6NFp0dGg1Y0JYNm1SUXdXbUR3cnlHOUZVTWxaek5ja01kSytJb01KdjFyT1duQmFtUzJ3MktIaWFQTVBMQzE1aENabTRLVHBvWnlqNEUyVHFDL1A2cjcvRWhuRE1oS2ljWloxWnd4dUM3RFB6REdzNTNxOGdYYUk5a0ZUSysyTFRxN2Jod3NUYnJNVjhSc2Z1YTVsTVMwRndiVGl0VVZuVmExeVRiNUlYNTFtbVluVWNQOXdQcjhKaTF0aVlKZUpWOUdaVHJRaEY3dnZkVTJPVFU0Mm9nSjlGRHdobXljSTJMSWcrKzAzQzZzY1loVXlVdU1WNXRrdzZrR1VvTCttak5DMzgrd01kV05sam42dEdQcFJFUzd2ZXFyU241VFJ1ditkaDZKVkwvaURIVTFkYjRjOVdLMysrT3JIM1BxemlGOTE2VU1VS244RzY3bk42MEdmV2lIclhZaFVHM3lWV215WWFrNTlOSGo4dDFzbUc0VURpV3oyclBITnJLbk40Wm8xTEJicjIvZUY5WVowbjBibHgybkc0WCtFS0Z4dlMzVzI4SkVTRCtGV2s2MVZDRDN6L1VSR0hpSmwrKzdUZEJ3a0NqNnRHT0gzcURiMFFxY09GOUt6cGowSFViL0t5RlczWWhqMlZNS0pxR1psZUZCSDd2cXZmN1dxTEMzWE11SFY4cThhNHNURnV4VXRrRC82SklCdkthVmp2OTZuZGdydUtaMWsvQkh6cWYySzlmTGs3SEdYQU55TERkMXZ4a0svaTA1NXBuemwrenc2ekxud1hsVllWdGZtYWNKZ0VwUlAxaGJHZ3JZUFZONnYybEcraWRRTkdtd2NLWHUvOHhFai9QNnFlL3NCMldtd05wNnBwOGphSVNNa3dkbGVGWFlLNTVOSFdMVFRidXRTVXFqQmZER1dvL1lnOTE4cVErOEJSWlNBSFpiZnVOWnoyTzBzb3YxVWU0Q1dsVmczckZoTTNLbGpqOWtzR2QvTlVoazRuSCthNVVOMisxaTgrTk0zdlJOcDd1UTZzcWV4U0N1a0VWbFZacmlITnFGaTVyTG05VE1XYTRxbTNpZEpxcHBRQUNvbDJsNFZTdXZXTGZ0YTRKY1h5M2JST1BOYlhPZ2RPaEc0N0xDMEN3Vy9kTWxTeDRKZjE3YUVVM3lBMXg5cCtZYzBqdXBYZ2NNdVlOa3U2NGlZT2tHVG9WRHVKdmxiRUtsSnFzbWlIYnZOcklWWkVIK3lGZEY4RGJsZVo2aU5pV3dNcXZ0TXAvbVNwd3g1S3hSclQ5cDNNQVBUSEd0TWJmdmRGaHlqOXZoYUtjbjNBdDhMYzE2QWkrdkJjU3AxenRYaTdyQ0paeC9xbDdUWGNjbHE2UTc2VWVLV0R5OWJvUzBXSElqVXVXaFBHOExCbVc1eTJyaHVUcE01dnNMdCtIT0xoMVlmMERxWGE5dHNmQytrYUt0Mmh0QTBhaS9MMmk3UktvTmpFd3p0a21SVTBHZmdXMVR4VXZQRmhnMFY3RGRmV0prNWdmcmNjcFl2K01BOU0wZGtHVExFQ2VZd1VpeFJ6alJGZG1qRzd6ZFpJbDNYS0I5WWxpTktJMzFsZmE3aTJKRzVDOFNzK3JIZTBEN1o2OTYvVjNERUFPV0huUTl5TmFoTVVsNWtFTldTNnBIS0twMkQxQmFTcnJIZEUxdzJxTnhJenRwWGdVSXJGMGJtMTVZTUw0YjZWMWsrR3BOeXNUYWhLTVZyclM4NWxUVm85T0dKOTZJNDdlQXk1cllXcFJmL21JemVvWVUxREthUUNUVVZ3cmhIZXlOb0RxSGVsK2xMeHI5V0t6aFNZdzd2clI2K1Y1cTBwZmkyazNMMXpxa3ViWTZycmQ5Wkx2U3VXTmYwdXFua1krRnBUdkZ6U1c5RnAwYjlsOEpBN1RIVjllQ2kvUFkvU0NaSVVZeDNCVTJhbGo3Q20zVlY2ZVlwaW9zNGI2V3VOT0pkWVhVSzN6VHFqNUNWRzJGcVlNNFo3Q3VJVTBxTzA1WFIwZDcxRkhNMFloWm1KbVRSZkxsWEV1bU44MkJHdHpkWDBTMTl0MWUrYlVpZUs4elJtcXBhNFFjNVRTamlmbWFRc1kyRVRMamhJMzZnTVIxKzdxcGpkWFhIaWNlVWVrZkJhdWNIU2hBT2lGWG12M3NObUdReVU1aVZnbm9vY3VvblFYRVBURndzbEh0UzhSK0E0N1N0STl3ajBpU3J0Ymk1ck15c2N6RmlJbXNRK2JkRkNsbkZqanBYWHdNeTZPN3Fmak9yOEZiMGE3T0RJdGlzam5uM0VRTzE2K3lwZDFjd3lhQVc1WXp4ejVRa25mTU83NjQzZlhXL0k5eTNVMnhIMjdPYXBxcjU2Wi90RXpnbGo2SWJUNkhFSGpvcGlYcWVSYmU1bVFRdnh0Y2JET1Z2ZXJOMFpnTWR6cVJZUmphWHRNUmQ1NlE0Y1pTbWRQdlpKZFNyaEoxRDl6TlhQcUFFcVBJYXZQZGZ1YnQ1b2tlMmttdjBkenRJc3pTdjJWWXVveWYxVXVvcGJzWWIrdVg5aDZXcHdqcGd0WjZmTk5hd05KNHE4TzNDRm9TYmlvQWFPU1pNeDJHWWFQWUIrckViNnFqUWlOUkZRNzZUdndORlZLRCtCaEg5VmhjS0dzWHptTUk3QnB0VS9DTldvbE03WXpST3ZwRkFudHNpV0pwNmVSMmQzR2FyY1lTaFZZU1VxaG1ZT1dqNUU5Nk5LMld2bVlOVGVZN1pzNFJVRWR2OWg5UVQ0RXNlS3Q2THpMcnFFT3MzaHhBWTFNYU5XcFNhNnpaeDhGM1lPVmVDWU1TODhXK0NZSER1V2U0eW9jNllLK2RqRHVFT3JCUjVsdmgwcitROXVNODhscmp4OXg5QXRncFFWTkU4ciszTzZHdnc1OUQra0JGL1VNWHlobGlZVXRQam12WEdZNkRrM3gra0VPVytHdGRNVkM0RVpUcW9TL2ptUjBQMExTNzVET2MvdzJ2bnJpOTdNNFNkYlo4cWVVN2dnOERWYkVSa1U1Z2VhTVFPM21ZclNZeUFuZ2VVUXFyTjBDMC92c0ZtY2dXTlhOZWlkc1RBajcvNE1uY0pSMGNhYUJVcGJMSzF5QkNCTlJqRXY2S3Z1VlNkcFBuRU1KZHNSUnRxSitVOHROMWdYQTRlUEhjNlpUMGV2aUk3M1VPSkYwZkVaOFlhbmVBUXFRZEdwaE52d000bklxUG5YeFYweEEwZm5DVCtvQWhKdXl3L3E4ak8weThDalN0ZVpFeHdCcElONlN2TnA2QTVHL2FiaTZlZ2VORC8xR1RndWh1TmphVWJiblNiR2Q0TDg5MzdFem0zNEV5aTZuMW1hZU9CeGgzUEkwanpKRGY1bWgvQnNMRDdGMkdPS3ZsQS81Z3R2eEkzL2VWNHNMZktXNVd5K29pbytlcy91NlQ4VVUrbnNvZnk1N0ljYi9KbFpIUEZ0Q2dkL3grYnd0M1pUK3hYVHRUdFRyR0FiNFFlaEM2WDlHKzhZVCtvemNMeERzZENqc3VPcXdQRm5yZExZYUZjOTJVaTBtNGZyMzlsWW1sQ2FxVGl0N0c2Ty8za1dEa2d0WGpOSDRCaUVtLytqZWdRbmloT3RmZmZuMzNXeHNGamhmTWQ0OEhUK2Y2bzZYNjVqN1hSOFdMU0hNRmt4YnZPWXNyUnNGMWJvd0R1U1ExOE1reGs0cXoyem9HUEw1ZnU5aDJIcW10MWFzbDNRM1l1M3N6T2Mrc3BpQ21YNEFFVEJNM3BMb1RZU3Azc1Z4YWh5aEw4ZUM0bVBOOWsyeDNvMHhraWl4SXpNM0NaRnpmNW9SNG1lY1E1K2F4MndDYWgzL2NybW5Ib3FSMCtLTWFPUHhSaWYxb0VGUkZPTy9rVFBQbXR3dytOZk1YeEVLNmduNmlVMzJVNmZGcnVJejhRNFdnbGp0bmFDVlRCZ1d4N2RpVWRzaEM5WkVhNXlLcFJCQmVXMTJyL2lOYy8rRWdOcW1oc3dOQjhTQm9paEhYZURGN3JyV0RMY210M1Y4R1lZTjdwWFJ5NERaamo0REp1VUJMNWlDM0RRQWFvbzR2a2Z0cVZUWVJHTFMzbUhaN2dkbWRUVHFiZ05OL1BUZFRDT1RnWG9sYzg4TWhYQUVVTWRYMGl5MUpNdWs1d0xzZ2V1MFFVWWx6MlM0c2tUV3dKejZwT20vOGlocm1nR2ZGZ3JpK1pXVUsyZ0FQSGdiV2E4amFvY2RTdU00RkpZb0tpY1lYL1pTRU5rZzlRMVp6SmZ3U2NmVm5SMkRlZ09Hd0N2bW9nYVdKQ0xRZXB2OVdObFU2UWdzbU93SUNxdVUyOE1sazNkOVc1RTgxbFUvNUV6MExjWDZsd0tNV0RObHVOS2ZCRFV5L3BoSmdCY01uZmtoOWlSeHJkT3pnczA4SmRQQjg1THdvK0dVU2I0dDNuQyswYnlxTVp0TzJmUUo0VTJ6R0lyNDl0LzI4cW1tR3YyUmFuREQ3YTNGRWNkdHV0a1c4dHd3d2xVU3BiOFFhbG9kZGRiQmZOSEtEUTgyOEJkRTdPQmdGZGlLWW9oTGF3RllxcHliUW94QVRacmhlTGhkSTcrMFpsdTlRMW15UmNkMTVyOVVJbThLMkxHSnhxVGVnbnRxTlZNS25mMWE4elFpeVVSMXJ4b3FqaUZ4ZUh4cUZjWVVUSGZEdTdyaGJXbmc2cU94T3NJKzVBMXA5bVJ5RVBkVmtUbEUyNHZZNTRXN2JXYzZqTWdadk5YZGZDOS85cTc0MDhLRHNiZEw3VXR6N1FGU0RldHoycGljQXJ6cmRwTDhPYUNIQzlWMjZScm9lbXREWjV5Tk0vS0drV015VG1mbkluRXZ3dFNEMjNVY0ZjamhhRTNWS3prb2FFTUtHQmZ0NFhiSU82Zm9yVFkxbG1HUXdWbUtpY0JDaUFyRHpFKzFvSXhFMDhmV2V2aUlPRDVUem5xSCtPb0hhZHZvT1AyMGRyTVBlNUlyZzNYQlF6aVcyWER1SFl6anFRUTR3eVNzc2pYVXM1SCt0M0ZXWU1IcHBVbkJITXgvbllJVDVkN09takRiZ0Q5RjZuYTNtNGw3S2RrZVNPM2tURVBYYWZpV2lub2dhZzdiNTJ0YWlaaEwxVFN2QkZtRVphZkZxMkg4a2hRYVpYdWl0Q2V3VDVGQmdWdFBLMGo0eFVIUGZVejNRMjhlYWMxWjEzOURBUDIzZGdraTk0RUM4dmJEUFRRQzk3SFBQU1dqVU5HNXRXS01zYXhBRU1LQzA2NjVYdm8xTnRkMDd3Q0xOZjhRNTZtckVQVnBDeGxJTVZsUWxXUnhNM29BZnBnSWMrOEtDM3JFWFVvZzVnMDZ2dDd6Z1hZOGdySDdoaHdWU2FldXZDMDZZWVJBd3BieWsvVW56ajloTEVaTnMyb3hQUUI5eWMrR25MNnpUZ3E3ckkrK0tESndYMlNQOFNkNll6VHV3NWxWL2tVNmVReFJEMTJvbWZRQVc2Y2FUUjRMaWtZa0JCMUNNT3J2Z1JyL1ZZNzUrTlNCNDBDbmk2YkFEQXRhSyt2eXhWV3BmOU5lS0p4TjJLWVE4UTJ4UEIzSzFzN2Z1aHZXYnIyWHBnVzA0NFZENkRSczBxWG9xS2YxTkZzYUd2S0pjNDdsZVVWM3BwcFAvNVZUS0ZoYUd1b2w0RXNmamY1enlDeVVIbUh0aENoY1loNGhZTFFGK0FGV3N1cTR0MHdKeVdnZHdRVk9aaVYwZWZSSFBvSzUrRTF2ano5d1RKbVZrSVRDOW9Fc3RBc3laU2dFL2RiaWN3S3I4OVlVeEtaSStvd0QyMDVUbTVsbm5tRFJ1UC9Kbnp4WDNnTXRscmNYMFVlc1pkeHlRcVlRdUVXNFI1MXZtUTV4T1p0ZVVkOFNKcnVNbFRVemh0VncvTnE3ZVVCY3FOMi9IVm90Z2ZuZ2lmNjB5S0V0b1V4M1dZT1psVkp1Sk9oOHU1OWZ6U0RQRll0UWdxRFVBR3lHaFFPQXZLcm9YTWNPWVkwcWpuU3RKUi9HM2FQK0p0MXNMVmxHVjhQT3dyLzZPR3NxZXRueUYzVG1UcVpqRU5mblhoNTFveGU5cVZVdzJNNzhFekFKK0lNOGxaMU1CUFE5WldTVmM0SjNtV1NyTEtyTUhSZUE1cWRHb3owT0RSc2FBK3Z3eFhBMmNBTTRxbGZ6QkpBNjU4MW00aHp4SXRRdzVkeHJyQkwzWTZrQ2JVY0Z4bzFTOGp5VjQ0cS8vKzdBU05OdWRaNnhlYU5PU0lVZmZxTW40QTlsSWpGY3RZbjJncEVQQWIzZjdwM2lJQk44SDE0RlVHUTljdDJoUHNMK2NFc1RnVXJSNDd1SlZONG40d3Qvd2dmd3dIdU9uTGQ0eW9ia29meThKdnhTUVRBN3JNcERJYzYwOFNsWkZKZlpZY21iVDB0QUhwUEU4TXJ0UTQyc2lUVU5XeHF2V1pPbXZ1OWYwSlBvUW1nKzZsN3NaV3d5Zmk2UFhreEpud0JyYVVHME1ZRzR6WUhRejNpZ3kvWHNGa3g1dE5ReHc0M3F2STlkVTNmMERkaE9VbEhLam1pMVZBcjJLaXkwSFp3RDhWZUViaGgwT2lEZE1Zc3BvbFFzWWRTd2pDY2plb3dJWE5aVlVQbUwyd3dJa1lobVhLaEdvemRDSjRsUktic2Y0TkJoL1huUW9TOTJOSkVXT1ZPRnMyWWhOOGM1UVpGZUswcFJkQUc0MGhxdkxibW9TQTh4UW16T09FYzd3TGNtZTlKT3NqUENFZ3BDd1VzOUUyRG9oTUhSaFVleUdJTjZURnZyYm55OG5EdWlsc0RwenJINW1TNzZBUG9JRUptSXRTNjdzUUorbmZ3ZGR6bWpQeGNCRUJCQ3cwa1dEd2QwRVpDa05lT0Q3Tk5RaHRCbTdLSEw5bVJ4ajZVMXlXVTJwdXpsSUR0cFl4ZEg0WlBlWEJKa1RHQUpmVXIvb1RDei9peXBZNnVYYVIyVjFkb1B4SllscncyZ2hIMEQ1Z2JyaEZjSXh6WXdpNGEvNGhxVmRmMkRkeEJwNnZHWURqYXZ4TUFBb3krMSszYWlPNlMzVy9RQUtOVlhhZ0R0dnNOdHg3S3MrSEtnbzZVMjFCK1FTWmdJb2dWNUJ0K0JuWGlzZFZmeTlWeVhWKzJQNWZNdXZkcEFqTTFvL0s5WitYbkU0RU9DcnVlK2tjZFlIcUFRMC9ZL09tTmxRNk9JMzNqSC91RDFSYWxQYUhwSkFtMmF2MC94dHBxZFhWS05EcmM5RjJpem8yM1d1N2ZpcmdiVVJGRE5YOWVHR2VZQmhpeXB5WFpmdDJqM2hUdnpFNlBNV0tzb2QvL3JFSUxEa3pCWGZpN3hoMGVGa2ZiMy8xenpQSy9QSTVOazNGYlp5VGw0bXE1QmZCb1ZvcWlQSE80UTRRS1pBbHJRM01kTmZpM294SWp2c00za0FGdjNmZHVmdXJxWVIzUFN3WC9tcEd5L0dGSS9CMk1OUGlOZE9wcFdWYnMvZ2pGM1lIK1FBOWpNaGxBYmh2YXNBSHN0QjBJSmV3MDlpQWttWEhsMS9URWoranZIT3BPR3JQUlFYYlBBRE0rSWcyL09FY1VjcGdQVEl0TXRXNERkcWdmWVZJLys0aEFGV1lqVUdwT1AvVXdOdUI3K0JiS09jQUxiam9iZGd6ZUJRZmpnTlNwMkdPcHh6R0xqNzBWdnE1Y3cyQW9ZRU53S0xVdEpVWDhzR1JveDRkVmEvVE40eEt3YUtjbDlYYXdRUi91TnVzNzAwSGYxN3B5Tm5lenJVZ2FZOWU0TUFEaEVEQnBzSlQ2eTFnREpzMXE2d2x3R2h1VXpHUjdDOGtncGpQeUhXd3N2cmYzeW4xekpFSVJhNWVTeG9MQVpPQ1I5eGJ1enR4RlJKVzlabU1ZZkNGSjBldm05RjJmVm51amU5MlJjNFBsNkE4Ymx1TjhNWnl5SkdaMCtzTlNiLy9EdkFGeEMyQnFsRXNGd2NjV2VBbDZDeUJjUVYxYng0bVFNQlAxSnhxazFFVUFETkxlaWVTMmRVRmJRL2Mva3Z3SXRiWjd0eDBzdDE2dmlxZDUzV3NSbVBUS3YyQUQ4Q1VuaHRQV2c1YVVlZ05wc1lnYXNhdzIrRVZvb2VOS21yVzNNRnRqNzZiWUhKbTVLOWdwQVhaWHNFNVU4RE04WG1WT1NKMUYxV25MeTZuUXVwK2p4NTJiQWIrckNxNnk5V1hsMkIyb1pEaGZEa1c3SDNvWWZULzR4eDVWbmNCdXhNWFAybE5maFVWUWpTU3pTUmJ1WkZFNHZGYXdsenZlWHhhWUtWczhMcHZBYjhJUllGM1pIaVJubTBBRGVOUFdvY3d4U3pOc2VHN05yU0VWWm9IZEtXcWFHRUJ6MU44UHQ3a0ZicWgzTFltQWJtOWkxSUNoSXBMcE01QVM2bXI2T0FQSE13d3puVnk2MVlwQllYOHhaRE4vYStsdDduK3g1ajRiTk9WdGVaOGxqM2hwQUhTeDFWUjh2WkhlYzRBSE85WEZDZGpaOWVSa1NWNjVsak1tWlZ6YWVqMnFGbi9xdDFsdld6TlpFZkh4SzNxT0pySEw2Y3JyMENSek1veDVmMmU4QUxCQjRVR0ZaS0EzdE42RjZJWGQzMkdUSlhHUTdEVGk5ai9kTmNMRjlqQ2JEY1dHS3hvS1RZYmxJd2JMRFJlTDAwTFJjRFBNY1F1WExNaDVZemd0ZmprRksxRFAxaUR6ellZVlp6NU0va1dZUmxScGlnMWh0VlJqVkNrbm0raDFNNUxpRURYT3lIUkVodnpDR3BGWmpIUzBSc0syN28yYXZnZGlsckprYWxXcVBXM0Q5Z213VjM3SEttZk0zRjhZWmoyYXIrdkhGdmYzQjhDUm9INGtESElLOW1yQWcrb3dpRXdOampkOVYrRnNRS1lSOGN6SnJVa2Y3UW9pMllhVzZFVkRacDV6WWxxaVl0dVhPVEhrNGZBY1o3cUJiZExEaUpxMFdOVjFsMitIbnRrMW1NV3Z4clltYzhrSXg4RzNyVzM2SjZSYTRsTHJUT0NnaU9paG1vdytZbnpVVDE5amJWMkIzUldxU0h5eGtobWdzQnFNWVd2T2NVb20xakRRNDM2K2ZjYnUzeGYyYmJlcVUvY2ErQzRET0tFK2UzcXZtZU1xVzNBeGVqZnpCUkZWY3dWWVBxNEwwQVBTV1dvSnUrNVVZWDRxZzVVNllUaW9xUUdQRzlYcm51Wi9Ca3h1WXBlNkxpODcrMThFc2t5UVcvdUErdWsycnBIcHI2aHV0MlRsVmJLZ1drRnB4K0FaZmZ3ZWl3MitWaXR0a0V5Zi9pZmluUy8wSXRSTDJKcTN0UU9jeFBhV08yeHJHNjhHZEZvVXBaZ0ZYYVAyd1lWdFJjNnhZQ2ZJMUNhQnF5V3BnNGJ4OE9IQlF3c1Y0WFdNaWJaWjBMWWpXRXkySXhRMW1acmYxL1VOYllDSnBsV3Uzblo0V3BvZElHVkEwNWQrUldTUytFVDl0SDNSZkdHbU5JMWNJWTdldlpacTdvK2EwYmpqeWdwbVIzbVZmYWxrVC9TWkdUMjdROFFHYWx3R2xET1M5VkhDeUZBSUwwYTFRN0ppVzNzYXo5Z3FZOGxxS3luRnJQQ3p4a1U0U0lmTGM5VmZDSTVlZGdSaERYczBlZE85OTJuaFRLSHJpUkVQMU5KQzZTUk9NZ1EweE81a05OWk9oTU9JVDk5QVVFbGJ4cWVaRjhBM3hyZkRKc1d0RG5VZW5BSGRZV1N3QWJZakZxUVorRDVnaTNoTks4Q1N4VTlpNmY2Q2xMOUlHbGoxT1BNUUFzcjg0WUc2aWpzSnBDYUdXajc1YzN5T1pLQkI5bU5wUU5QVUtrSzBENndnTEg4TUdveVJ4VFg2WTA1UTRBbllOWE1ad1hNNGVpai85V3BzTS85Q29SbkZRWEdSNk1FYVkrRlh2WEVPM1JPMEphU3RrNk9YdUhWQVRISkUrMVcrVFUzYlNaMmtzTXRxak8wemZTSkNkQnY3eTJkOERNeDZUZlZtZTNxMFpwVEtNTXU0WUwvdDdjaVROdGREa3dQb2doM0Nuang3cWswOFNId2YrZGtzWjdNMnZDT2xmc0YwaFE2SjRlaFBDYUhUTnJNL3pCU09xRDgzZEJFQkNXL0YvTEVtZWgwbk9IZDdvVmwzL1FvLzlHVURra2JqN3l6KzljdnZ1K2REQXR4OE56Q0RUUDRpS2Radms5TVdpaXp2dElMTGVweXNmbFN2VExGQlozN1JMd2lyaXF5UnhZdi96cmdGZC85WFZIaC9PbXpCdkRYNG1pdE1SL2xVYXZzMlZ4NmNSOTRsekFrcGxtM0lSTnk0VEZmdTQ3dHVZczlFUVBJUFZ0YTRQNjR0VitzWjduM3VlZDNjZ0V4MllLK1FMNSt4bXM2b3NrOHFRYlR5dUtWR2RhWDlGUXFrNnFmRG5UNXlreGswVks3S1o2MmI2RE5EVWZRbHFHSHhTTUt2MVAwWE41QnFNZUtHMVA0V3A1UWZaRFVDRWxkcHBvWDBVNnNzMmpJa28yWHBVUktDSWhmYU9xTFBmU2hkdFMzN1pyVCtqRlJTSDJ4WVZWMXJtVC9NQnRSUWh4aU80TVEzaUFHbGFaaSs5UFdCRUlYT1ZudTlqTjFmOTIxbFdMWmt5OWJxYk0zSjJNQUFJOWptdUF4M2d5b0VVYTZQMml2czBFZU52L09SK0FYNnE1U1c2bDVIYW9GdVM2anI2eWc5bGltdStQMEtZS3pmTVhXY1FTZlRYenBPektFS3B3STNZR1hacFNTeTJMVGxNZ2ZtRkEzQ0Y2UjVjOXhXRXRSdUNnMlpQVVEyTmI2ZFJGVE5kNFRmR0hybkVXU0tIUHVSeWlKU0RBWitLWDBWeG1TSGpHUGJRVExWcHFpeGlhMnV5aFEzOTRnQk10N0MzWkFteG4vREpTK2wxZkJzQW8yRWlyL0Mwakc5Y3NkNCsvdHAxMnBQYy9CVkpHYUs5bWZ2cjdNL0NlenRybUNPNXFZMDZFZGk0eEFHdGlFaG5XQWJ6THkyVkV5YXpFMUo1blBtZ1U0UnBXNFNhMFRuT1Q2dzVsZ3QzL3RNcFJPaWdISG1leEJHQU1ZMG1kY0RiRHhXSXo0MU5nZEQ2b3hnSHNKUmdyNVJuVDZ3WkFrVE9jU3RVNE5NT1FOZW1TTzdneEdhaGRFc0MrTlJWR3hNVWhRbW1NMGxsV1JiYm1GR0h6RXFMTTRJdzBINzU3N0t5bytaZisyY1VGSU93OTNnRVkxNzF2UWFNMEhMd3BqcGRSUjZKejdWMGNrRTdYellKMFRtWTl6bkxkemt2YTB2TnJBR0dUNVNVWjV1YUhEa2NHdkkweVNwd2thc0VnWlBNc2VZY3U4NXc4SFBkU05pKzRUNkE4M2lBd0RieGdlRmNCMVpNMmlHWHpGY0VPVWxZVnJFY2thT3lvZGZ2YVlTUTdHdUI0SVNFMG5ZSmMxNVgvMWNpRFRQYlBDZ1lKSzU1VmtFb3I0THZ6TDlTMldEeTR4ais2Rk9xVnlUQUMyWk5vd2hlZWVTSTVoQS8wMmw4VVlrdjRuazlpYVZuK2tDVkVVc3RnazVIeXErZ0ptNlI5dkczcmh1TTkwNGhlL2hGbU5RYVVJQVRCMXkzdncrT214UDRYNVlpNkE1STVqSnVmSENqRjkrQUdOd25FbGxaalVjbzZYaHNPNVQ1K1IzeXh6NXlMVk9uQW4wenVTKzZ6ZGowblRKYkVaQ2JYSmR0cGZZWmZDZUNPcUpIb0UydlBQRlM2ZVJMaklKbEc2OVg5M25mUjBteFNGWHpwMVpjMGx0L1ZhZkRhSW1oVU10Ym5xV1ZiOU00bkdOUUxONjhCSFA3QVI4SWw5ZGtjeHptQnY4UENabHc5Z3VZMGx1cmJCc21OWWx3SlpzQS9CMTUvSGZrYmpid1BkZGFWZWNscy9lbG1ESE5XMnI0Y3JBeDQzZmVOa2ZSd3NhTnEveXlKMGQvcDVoWjZBWmFqejdEQmZVb2swWlU2MmdDeno3eDhlVmZKVEtBOElXbjQ1dklOTFNNMXErSEY5Q1Y5cUYzelA2TWwyMWtQUEwzQ1h6a3VZVWxuU3FUK0lqNHRJL29kNUt3SXMrdERhakRzNjRvd043dE9BZDZldWNHeitLZk8yNmlOY0JGcGJXQTU3MzJiQk5XTzRrSE5wcjlEOTU1TDYxYnZIQ0YvbXdTcno2ZVFhRGpmREVBTnFHTWtGYytOR3hwS1p6Q0Qyc2ovSnJIZCt6bFBROEl6N1ErMkpWSWlWQ3VDS29LL2hsQUVIenZrL1BpcTNtUkwxclQvZkVoOWhvVDVHSm1lWXN3ZzFvdGlLeWRpekovZlMyU2VLSFZ1NlozSkVIamlXOE5hVFFnUDV4ZEJsaThuQzU3WGlOOWhycXVCdTk5aG45enF3bzkyK1BNMkpYdHBlVlpTMFBkcVI1bUR5RHJlTU10RXdzK0Nwd2FSeXl6b1l0ZmN2dDlQSklXMGZKVk5OaS9GRnlSc2VhN3BlTHZKckwrNWI0R09YSjh0QXIrQVRrOWY4S21pSXNSaHFSeTB2Rnp3UlYzWjVkWjNRcUlVOEpRL3VRcGtKYmpNVU1GajJGOXNDRmVhQmpJNCtmTC9vTjMrTFFnakk0enVBZlErM0lQSVBGUUJjY2YwY2xKcHNmcG5CeEQ4NGF0d3R1cGtHcUt2ckg3Y0dObC9RY1djU2k2d2NWRE1MNmxqT2dZYm8rMkJPQVdOTmpsVUJQaXlpdFVBd2JuaEZ2TGJucXc0MmtSM1lwMmt2MmRNZURkY0dPWDVrVDRTNk00NEtIRUIvU3BDZmw3eGdzVXZzK0pOWTlHM08yWC82RkV0OUZ5QW41N2xyYml1K3RsODNzQ3ltU3ZxOWVaYmU5bWNoTDdNVGYvVGE3OGU4MHpTZjBoWVk1ZVVVNytmZjE0anY3WHk4cWp6Znp6enZhSm5ySWR2RmI1QkxXS2NXR3k1L3c3K3ZWMmN2SWZ3SHFkVEIrUnVKSzVvajltYnQwSHk5NEFtak1qandZTlpsTlM2dWl5eE5ud055dDNnZHJlTGI2NHAvMyswOG5Ya2I5MkxUa2tSZ0ZPd2sxb0dFVmxsY09qNWx2MWhmQVp5d0Rvd3MwOTQ0VTh2VUZ3K0EvbnVWcS9VQ3lnc3JtV0lCbkh5VTAxZDBYSlB3cmlFT3Z4L0lTSzZQazR5MncwZ21valpzN2xVOFR0YWtCQWRuZTR2L2FOeG1NcEs0VmNHTXA3c2kweXFzaW9sWFJ1T2kxWjFQN1NxRDNabXAwQ1djeUs0VWJtcDJTWGlYdUk1bkdMQ2llRkhLSE5SSWxjWTNQeXMyZHdNVFlDYXFseVdTSVR3cjJvR1h2eVUzaDFQZjhlUTN3MWJuRDdpbG9jVmpZRGtjWFIzT28xQlhnTUxUVWpOdzJ4TVZ3anRwOTlOaFNWYzVhSVdyRFFUNURIUEt0Q3RoZUJQNHpIY3c0ZHoyZVJkVE1hbWhsSGh0ZmdxSkpISTdOR0RVdzFYTDh2c1NlU0h5S3FEdHFvQW1yUXFzWXd2d2k3SFczb2pXeWhJYTVvejV4SlRhcTE0TkF6RkxqVkxSMTJyUk5VUTZ4b2hEbnJXRmI1Ykc5eWY4YUNEOGQ1cGhvYWNrY05KcCtEdzNEdWUzUk0rNVJpZDdFdUlnc253Z3BYMHJVV2gvbnFQdEJ5TWhNWlo2OU5wZ3ZSVEtaNjJWaVorUTdEcDVyNEswZDdFZkp1aXkwNkt1SVlhdVJoNUVjcmhkdDJRcFRTMWsxQXNjRUh2YXBOYlUzSEwxRjJURnlSMzNXeGI1TXZINWlac3JuM1NEY3N4bG5uc2hPOFBMd21kR04rcGFXblF1T1J0WkdYMzd1aEZUNjRTZXVQc3g4VU9va1k2T044NVdkUTFka2k1ekVyc0pHYXpjQk9kZFdKRUtxTlBpSnBzTUQxR3JWTHJWWStBT2RQV1FuZVR5eVAxaFJYL2xNTTRab2dHR09oWXVBZHI3Ri9ET2lBb2MrK2NuNXZsZjB6a01VSjQwWjFybGd2OUJlbFBxVk9weEtlT3B6S2RGOG1hSysxVnYyM01POWsvOCtxcExveHJJR0gyRURRbG5HbUg4Q0QzMUc4UXFseVFJY3BtUjVid21TVnc5L05zNklIZ3VsQ1JlaHZaLytWck02MEN1L3IzQW9udEZmcmxqZXc3NHNrWWUydXluN0pLUXRGUUJRUko5cnlHaWMvelFPc2JTNHNjVUJjdEE4Y1BUb1EzeDZaQlF1NkRQdTVtMWJuQ3RQOFRsbExZQTBVVFFOVnF6YTVuZmV3M01vcHkxR1BVd0c1anNsME9WWG5pUG1BY21McU81SEc4SHYzblNMZWNFOW9PalBEWGNzVHhvQ0J4WXl6QmRqNHdtbnlFVjRrdkZEdW5pcFM4U1NrdmRhTW5UQk45YnJIVVI4eGRtbUVBcC9QZHFrOXVleHRwMXQrSnJ0WHdwTi9NRzJ3L3FoUk1wU054UTF1aGcva0tPMzBlUS9GeUhVRGtXSFQ4VjZnR1JVNERoRE14WnU3eFhpajlVaTZqbHBXbVFDcUpnM0ZrT1RxM1dLbmVDUllaeEJYTU5BVkxRZ0hYU0NHU3FOZGplYlk5NG95SXBWak1ZZWhBaUZ4L3RxekJYRkhaYUw1UGVlRDc0clc1T3lzRm9VWFk4c2ViVVpsZUZUVWEvK3pCS1ZURkRvcFRSZVhOdVpxNDdRamtXbnhqaXJDb21tTzRML0dyRnRWVjIxRXBNeXc4d3lUaEw1WTU5ZDg4eHRseDFnMXR0U0lDRHdub2Y2bHQvNnpsaVB6Z1ZVTDhqV0JqQzBvMkQ2S2crak51VGhrQWxhREpzcS9BRzJhS0EvL0E3NmF2dzJLTnF0djIyM1ArV3EzU3RSREROS0ZGZ3RzRnVrWXQxR0ZEV29vRlZYaXRhTmhiM1JDeUppNGNNZU5qUk9pUEVEYjRrK0czK2hEOHRzZys1aGhtU2MvOHQySlRTd1lvQ3pBSTc1ZG9xOFFUSGUrRS9UdzBSUVNVRGxVKzZ1QmVOTjNoNmpKR1gvbUg4b2owaTNjYUNOc2p2VG5vaDczQnR5WnBzZmxITHE2QWZ3Sk5DRFg0Uzk4aDQrcENPaEdLRGhWM3J0a0tITWEzRUc0Sjl5OHpGV0k0VXNmTnpDL1JsNW1pZE5uN2d3b045ajIzSEdDUVErT0FacFRUUE1kaVZvdzc0MGdJeXVFdGQwcVZ4TXlOWGhIY251WFJLZHc1d0RVU0wzNThrdGpNWG1Ba3ZJQjczQkxhMXZmRjlCQVVaSW5QWUppd3hxRldRUUJWazdnUUg0b2pmVVEvS0VqbitBL1dSNkVFZTRDdGJwb0xlMW16SGthamdUSW9FMFNMREhWYXVLaHJxMTJ6ckFYQkdiUFBXS0N0NERHZWRxM0p5R1JibVBGVzMyYkU3VDIwKzczQmF0Vi9xUWhoQldmV0JGSGZoWVdYakFMdHMzOEZlbW5vVCs5Ym4xakRCTWNVTW1ZZ1NjMGU3R1FqdjJNVUJ3TFU4aW9uQ3BnVitRcmhnN2lVSWZVWTZKRnhSMFkrWlRDUE0rclZ1cTBHTkx5SlhYNm5yVVR0OEh6RkJSWTFFL0ZJbTJFZVZBOU5jWHJqN1M2WVlJQ2hWUUNXci9tMmZZVWpDNGowWExrelo4R0NTTGZta1czUEIveHErbmxYc0tWQk9qN3ZUdnFLQ09NcTdadHFyM2NRK044Z0JuUGFBcHMrb0d3V09rYnV4blJZai94L1dqaURjbFZyczIyeE1LNHFBckUxWnRrMTQ1NmtpSnJpdzZhYmtOZVJIb2dhUFJCZ2JnRjlaOGkvdGJ6V0VMTjRDdmJxdHJxVjlUdEdTbm1QUzJGOWtxT0lCYWF6SFlhSjliaTNBb0RCdmxaYXNNbHV4dDBCRFhmaHAwMkpuNDExYVZ0NlM0VFVCOFpnRkRrSTZUUDZnd1BZODV3K29VUVNzakllWFZtaW5yd0lkSzJaQWF3YjhTZTZYT0piT2FsaVF4SFNybkFlT05ETHVDbkZlaklicDRZRHRCY1FDd01zWWlSWmZIZWZ1RUpxSmN3S1RUSjhzeDVoakhtSkkxc1BGSE9yNlc5QWhaMk5Bb2QzOG1uTFFrMWdPejJMQ0FvaG9RYmdNYlVLOVJNRUEzTGtpRjdTcjl0TFpwNmxrY2lJR2hFMlY1NDZ3M01hbTUzVnRWa0diQjl3MFlrMlhpUm5DbWJweG1IcjJrNGVTQzBSdU5iak5zVWZESWZjOERadlJ2Z1VEZTFJbEtkWlR6Y1Q0WkdFYjUzZHA4VnRzb1pseVh6TEhPZEFic3AxTFBUVmFIdkxBMEdZREZNYkFXL1dVQmZVQWRId3FMRkFWKzN1SHZZV3JDZmhVT1IyaTg5cXZDQm9PYjQ4dXNBR2RjRjJNNGFLbjc5ay80M1d6QloreFIxTDB1WmZpYTcwWFA5c29RUmVldWhaaVVuWEZERzFUOC9PWE5tc3NUU25ZTysza1ZMQWdlaVk3MTl1RHdMOUZReWNnTFBlc3NOaWhNWmJBS0c3cXdQWnlHMTFHMStaQTNqQVgyeWRkcFlmbWFLQmxtZmNLL1YwbXdJUlVEQzBuSlNPUFVsMktCOGgxM0Y0ZGxWWmlSaGRHWTVmYXJ3TitmOWhFYjFjUmk0MVpjR0RuNlhlOU1NU1RPWTgxVUxKeVhJSFNXRklRSHN0VllMaUpFaVVqa3RsSGlHam50TjUvYnRCOEZ1K3ZwMjh6bDJmWlhOK2RKRHlONkVYaFMrMHl6cXBsL0xTSk5FVVZ4bXU3QnNOZGpBWTBqVnNBaGtOdXVZMEUxRzQ4ZWoyNW1TdCswMHlQYlE0U1JDVmtJd2I2SVN2WXRtSlJQejladDVkazc2YmxmK2xKd0FQSDVLREYrdkhBbUFDTG9DZEcyQWRpaTZkT0huTkpuVG1adG9PR084UTFqeTF2ZU13NmdiTEZUb1FtZkphN25UN0FsODltUmJSa1paUXhKVEtnSzVLYzlJTnptVEpGcDB0cEFQek5teUwvRjA4YlgzbmhDdW1NL2NSLzJSUG45ZW1aM1Zsam9rdHRaRDF6VldYbFVJcUVVN1NMazVJMGxGUlUwQWNFTlhCWWF6TmFWenNWSEEvc0QzbzlobTQyd2JISVJiL0JCUVRLekFpOHMzK2JNdHBPT1pnTGRRekNZUGZYM1VVeEtkMVdZVmtHSDdsaC9SQkJnTVpad1h6VTkrR1l4ZEJxbEdzMExQK0RaNWcyQldOaDZGQWNSOTQ0QitLL0pUV0kzdDlZeVZ5UmhsUDRDQ29Vay9tbUY3K3IycGlsVkJqeFhCSEZhQmZCdHI5aGJWbjJ6RHVJMGtFT0cza0J4OENHZFBPalgxcGgxUE9PWkpVTzFKRUdHMGp6VXkydEs0WDBDZ1ZOWWhta3FxUXlzUk50S3VQZENKcUszV1c1N2thVjE3dlhnaXlQcmw0S0VFV2dpR0YxZXVJNFFrU0ZIRmYwVERyb1FpTE5LSmlMYmRoSDBZQmhyaVJOQ0hQeFNxSm1OTm9rZXRhaW9vaHFNZ2xoNndMdEVHV1NNMUVaYlFnNzJoMFVKQUlQVkZDQUpPVGhwUUdHZEtmRm92Y3dFZWlCdVpITjJPYjR1Vk03K2d3Wkx6MUQ5RTd0YTRSbU1aMjRPQkJBZzdFaDZkTFhHb2ZaNFUyVEZPQ1FNS2p3aFZja2pyeWRSUytZYXFDdzFrWXQ2VWV4dXpiTkVEeVlMVFpuclkxUHpzSFpKVDRVK2F3TzJ4bHFUU1l1Nm4vVTI5TzJ3UFhnR09FS0RNU3ErelRVdHljOCs2aUxwMGl2YXY0Rkt4K3h4Vnk0RnhoSUYvcHVjVkRxcHNWZTJqRk9mZFpoVHpMejJRanR6dnNUQ3ZEUFU3YnpESDJlWFZLVVY5VForcUZ0YVNTeG5ZZ1lkWEt3VnJlSWd2V2hUOWVHREIyT3ZuV3lQTGZJSUlmTm5mSXhVOG5XN01iY0gwNW5obHNZdGFXOUVaUnN4V2NLZEVxSW5xMURpWlBLQ3o3aUdtQVU5L2Njbm5RdWQycE5nSUdGWU9UQVdqaElyZDYzYVBEZ2ZqOC9zZGxENGwrVVRsY3hUSTlqYmFNcXFOMGdReFNIczYwSUFjVzNjSDRwM1YxYVNjaVRLQjI5TDF0ejJlVVFoUmlUZ1R2bXFjK3NHdEJOaDRreTBtUUpHc2R5Y0JSRVArZkFhU3MxRVJFRFZvNWd2Z2k1K2FDTjdORUN3MzBvd2JDYzFtU3BqaWFoeU5Wd0pkMWppR2d6U3dmVHB6ZjJjNVhKdkcvZzFuMGZIODhLSE5uZit1N1ppUk1sWHVlU0lzbG9KQlV0VzllenZzeDlncmZzWC9GTnhuYnhVMUx2ZzBoTHhpeHlwSEtHRkFhUHUweENEOG9EVGVGU3lmUlQ2czgxMDlHTVVaTDhtMnhYcDhYMmRwUENXV2RYODRpZ2E0QnJUbE9mcW94NHNocUVnaC9IdDRxUnN0NTJjQTF4T0lVdU94Z2ZVaXZwNnY1ZjhJVnlhcnlFZHBWazcyRVJBd2RUNGFvWTF1c0JnbVArMG0wNlEyMTZIL251YnROWXhIYU9JWWpjYWNoM0E4RXovemMwS2NTaGhlbDBIQ1lqRnNBMEZqWXF5SjVaVUgxYVp3Myt6V0MwaExwTTZHRGZjQWRuOWZxMm9yUG1aYlc2WFhyZitLcmM5UnR2SUk1amVEM2RGb1QxS3daSnd4ZlVNdmM1S0xmbjhyUk9XMjNKdzg5c0oyYTVkcEIzcVdEVUJXRjJpWDhPQ3VLcHJIb3NKMm1mbEJSK1dxczg2VnZnSS9YTW5zcWI5NytWbEtkUFZ5c2N6UGo4Smh6ZitXQ3ZHQkhpakFxWWxhdmJGNjBzb01XbEhidktUK1NjdmhwcmdlVGxuNTF4WDBzRitFYWRjL2wyczJhNUJna1ZiSFl5ejBFODVwMExzdHFIK2dFR2lSODRuQlJSRkluOGhMU1pyR3dxalozRTI5Y3VHaSs1WjVicDdFTThNV0ZhOXNzUy92eTRWckRmRUNTdjdEU1U4NERhUDBzWEkzQXA0bFd6blE2NW5Rb1RLUldVMzBnZDdObjhab3dVdkdJeDRhcXlYR3dtQS9QQjRxTjhtc0pVT0RlelVIRWwwVlA5dW8rY1o4dlBGb2RTSUI0QzdsUVlqRUZqOHl1NDlDMktJVjNxeE1GWVRldkc4S3FBcjBUUGxrYnpISG5UcERwdnB6emlBaU5GaDh4aVQ3Qy9UaXlIMEVndVV3NHZ4QWdwbkUyN1dJeXBWK3VGTjJ6Vzd4bmlGL243NXRyczlJSjVhbUIxelhYWjFMRmtKNkdiUy9kRm9remw0Y2MybWFtVndoTDRYVTBBdjVnRFdBbCthRVdoQVA3dDJWSXdVK0VwdmZPUERjTEFTWDdIN2xacFhBMlhRZmJTbEQ0cVUxOE5mZk5Qb0FLTU5TY2NCZk85WVZWZ21sVzRSeWRCcWZIQVY3K2hyWjg0V0pHaG82Yk5UMFlNaHh4TGRPeC9kd0dqMG95YWs5YUFrTko4bFJKelV1QThzUitmUHlpeVRnVUhpbzUrUHArWWFLbEhyaFI0MWpZNU5FU1BTM3grelRNZTBTMkhuTE9LQ09RUHBkeEt5dmlCdmRIckNEUnFPK2w5NkhoaE5CTFhXdjR5RU11RVVZbzhrWG5ZSk04b0lnVk00WEoreFhPZXY0WWJXZXFzdmdxMGxtdzQvUGlZcjlzWUx0K1c1RUF1WVNGbkpFYW44Q3dKd2J0QVNCZkxCQnBKWmlSUG9yL2FDSkJac00rTWh2UzdaZXB5SHZVOG01V1NtYVpueHVMdHM4b2psNktrUzhvU0FIa3E1R1dsQ0IvTmdKNVczck8yQ2oxTUs3YWh4c0NyYlRUM2EwVi9RUUgrc0VyeFY0WFVXREh4MGtrRnkyNWJQbUJNQlE2QlUzSG9IaGhZY0pCOUpoUDZOWFVXS3huRTByYVhIQjZVOUtIcFdkUUNRSTcycWV2cDVmTXpjbStBdkM4NXJzeW5WUWhydURBOWZwOUNPZTdONTZjZzFVS0dTYXM4OXZyTitXbEdMWVR3aTVXKzB4WWRLRUd0R0NlTkp3WEtEVTBYcVU1dVFZbldzTXdURU5MR3RiUU12b0dqSUZJRU16Q1JhbDRybkJBZzdEL0NTbjhNc0N2UytGREpKQXpvaWlvSkVoWkpnQXA5bjIrMVl6bnI3SCs2ZVQ0WWtKOU1wajYwSW1jVzRpNGlIRExuOVJ5ZEI4ZHgzUVltM3JzWDZuNFZSclpEc1lLNkRDR3drd2Q1bjMvSU5GRXBrMTZmWXBQNkp0TVFwcUVNemNPZlFHQUhYQlRFR3p1TEowM0dZUUw5Ym1WMi83RXhEbFJmK1V2ZjFzTTJmclJ0Q1dtYWwxMnBNZ3RvbnZTQ3RSNG4xQ0xVWlJkVEhESFAxT3R3cWQrcmNkbGF2bktqVUIvT1lYUUhVSnpwTnlGb0twUUsrMk9nckVLcEd5SWdJQmduMnk5UUhuVEppaFpPcEV2T0tJb0hBTUdBWEhtajIxTHltMzlNYmlvdzRJRis3N3hOdWV3emlOVkJ4cjZLRDVlKzlIelpTQklsVWEvQW1zREZKRlhleXJRYWtSM0Z3b3dUR2NBREpIY0VmaEdrWFlOR1NZbzRkaDRieHdMTSsyOHhqaXFrZG4wLzNSNFVFa3ZjQnJCZm4vU3pCYzFYaEtNMlZQbEpnS1NvcmpEYWM5NlYyVW5RWVhsMS95WlBUNERWZWxnTytzb01qZXhYd1lPNThWTGw1eEluUVVaSThqYzNIMkNQbkNOYjlYMDVuT3hJeTRNbGVjYXNUcUdLNnMyYXo0UmpwRjJjUVAyRzI4Uis3d0RQc1pEWkMva1d0amRvSEM3U3BkUG1xUXJVQWhNd0tWdXhDbVlUaUQ5cS9PN0dIdFp2UFNOMENBVVFOL3J5bVhaTm5pWUxsSkRFNzBic2s2WHhzaDRrRE9keGU3QTJ3bzdQOUY1WXZxcVJESTZicmY3OXlQQ1NwNEkwalZvTzRZbkxZdFg1bnpzcFI1V0I0QUtPWXRSMXVqWGJPUXBQeVlEdmZSRTNGTjV6dzBpN3JlZWhkaTd5VjBZRFJLUmxsR0NHUms1WXorVXYxZllsMlp3cm5Hc3FzamdBVm8weEVVYmE4b2hqYU5NSk53VHdaQS93QkRXRlNDcGcxZVVIOE1ZTDJ6ZGlveFJUcWdHUXJEWnhReU56eUJKUFhaRjArb3hJVEpBYmo3b05DNUp3Z0RNVUphTTVHcWxHQ1djLy9LQ0lySSthY2xFZTRJQTB1enY3Y3VqNkdDZGFKT05waTEzTzU0NHZidElIQkYrQStKZURGVVFOeTYxR2tpM3J0eVE0YVV5d242cnUzMTQvZGtHaVA4SXdqbzBKLzJUeHM0OVprd0VsNG14K2lZVVVPNTVJNnBKelU0UCs3UlJzK0RYWmt5S1VZWnFWV3JQRjRJOTRtNFd4MXRYZUU3NG85R3VYOTc3eXZKL2prZGFrOCtBbW9IVmpJMTVWK1d3QmRBUkZWMklQaXJKZ1ZNZHNnMVBlejJWTkhxYTdFSFdkVGtsM1hUY3lqRzlCaXVlV0Z2UWZYSThhV1NrdXVSbXFpL0hVdXpxeXZMSmZOZnMwdHhNcWxkWVlmbFdCMUJTMzFXa3VQSkdHd1hVQ3BqaVFTa3RrdUJNV3dIalNrUXhlZWhxdzFLZ3owVHJ6bTdRYnRneGlFUERWbVdDTkNBZUNmUk9UcGhkMVpOT2h6THk2WGZKeUc2WGdkNU1DQVp3NHhpZTBTajVBblkxL2FrRGdOUzlZRmwzWTA2dmQ2RkFzZzJnVlFKdHpHN0xWcTFPSDJmcmJYTkhXSC9OWTg5Tk5aNFFVU0pxTDJ5RWNHQURiVDM4WDBiR2R1a3FZbFNvbGlLT2NzU1R1cWhjYWVtVWVZTExvSTgrTVpvcjJSeFhUUlRoRjFMckhmcWYvNUxjTEFqZGw0RUVSZ1V5c1lTMmdlRSt5RmRhc1U5MVVnVURzYzJjU1ExWm9UOSt1TE93ZGdBbWlmd1FxRjAyOElOYzJJUUVEZlRtVXczZVp4dno3VWQxejN4YzFQUWZlQ3ZmS3NCOWpPaFJqN3JGeWI5WGNEV0xjWWowYkJ5b3N5Y2hNZXpNTFZrRmlZY2RCQlF0dkk2SzBLUnVPWlFIMmtCc1lISmFYVGt1cDhGMGVJaE8xL0djSXdXS3ByMm1vdUI3ZzVUVURKTnZPUlhQWGEvbVU4YmgyN1RBWllCZTJzS3g0TlN2NU9qbkhJV0QyUnV5c0N6QmxVZmVOWGhEZDJqeG5Ib1VsaGVKM2pCQXB6VVJ5MGZ3bTJGd3dzU1UwY2FRR2wwS3Y4aG9wUlFFMjExTm52dExSc21DTnJoaHBFRG9OaVpFekQyUWRKV0tiUlJXbmFGZWRYSEFFTFNOMHQwYmZzQ3NNZjBrdGZCb1hCb05BK25aTjkrcFNsbXV6c3BGZXZtc3FxY01sbHp6dmt5WHJ6b0ErUnlvMWVQWHBkR09vSnZoeXJ1K0VCUnNtT3A3TVhaMHZOVU1VcUhMVW9LZ2xnMXA3M3NXZVptUGMrS0F3MHBFMnpJc0ZGRTVINDE5Mkt3RHZEeGR4RVlvREJETlpqYmcyYm1BRFRlVUtLNTdJUEQ0ZlRZRjRjNkVuWHgvdGVZTU9SQkR0SWhQSm5laVpueTdOdi96RytZbWVrSUtDb3hyNmthdUUyYlp0Qkx1ZmV0TkcwQnRCWTdmKy9JbVV5cE1CdmRXdS9RN3ZUTVJ6dzVhUUdaV3VjMVYwSEVzSXRGWU1JQm5vS0daMHhjYXJiYS9UWVpxNTBrQ2FmbEZ5c1lqQTRFREtIcUdkcFlXZEtZbW0rYTdUQURtVzM1eWZuT1lwWllya3BWRXRpcUYwRXVqSTAwYWVwbE5zMmsrcXlGWk5lRTNDRFBMOVA2YjRQUS9rYXRhSGtWcExTRVZHSzdFWDZyQWE3SVZOcnZadEZ2T0E2b2tLdkJnTXRGREFHWk94ODhNZUJjSjhBUjNBZ1VVZUl6bkFONnRqQ1VpcEdEWk9ObTFGaldKcDRBM1FJelNhSU9tWjdEdkYveXNZWWJNL2ZGRE9WMGpudEFqUmRhcHhKeEwwZVRocEVoS09qQ0REcTJrcyszR3J3eHFJRktMZTFXZE96SUk4WElPUEdud3k2TEtYVmZwU0RPVEVmYVJzR3VqaHBTNGhCSXNNT3FIYmwxNlBKeGM0RWthVnU5d3BFWWxGLzg0TlN2NVp1bTRkck1mcDl5WGJ6ekFPSnFxUzRZa0k0Y0JyRnJDN2JNUGlDZmdJM25OWkFxa2szUU9acVIreXlxeCtuRFFLQkJCWjdRS3JmR01DTCtYcHFGYUJKVTB3cGtCZEFoYlI0aEpzbVQ1YXlubHZrb3VveG0vTmpENW9lNkJ6VklPOXVrdE0rLzVkRUM1UDd2WnZhcm11Ty9sS1h6NHNCYWJWUElBVHVLVHJ3YkpQOFhVa2RNNnVFY3RIS1hJQ1VKR2phWklXUmJacDhjenF1UVlmWTZ5bkJVQ2ZJVStnRzZ3cVNJQm1ZSW05cFpwWGRhTDEyMVY3cTBWakRqbVFuWHZNZTd5c29FWm5aTDE1QjBTcHhTMWpqZDgzdU5JT0tad3U1TVB6ZzJOaE94M3hNT1BZd0VuMkNVemJTcndBczVPQXRyejNHQWFVa0pPVTc0WHdqYVlVbUdKZFpCUzFOSlZrR1lyVG9JTkxLRGp4Y3VJbHlmVnNLUVNHL0c0RHlpTzJTbFF2SjBkME90MXVPRzVJRlNBa3ErUFJWTWdWTUR2T0lKTWRxamVDRktVR1JXQlc5d2lnWXZjYlU3Q1FMLzdtZUYyS1pBYVdsKzR5OXVob3dBWDdlbG9nQXZJdEFBeG8yK1NGeEdSc0hHRVc5Qm5obFR1V2lnWXhSY25WVUJSUUhWNDFMVitGcjVDSllWN3NIZmV5d3N3eDRYTXRVeDZFa0JoUitxOEFYWFVBOHVQSjczUGI0OWk5S0c5Zk9sanZYZXlGajlpeGdibzZDY2JBSjdXSFdxS0h5L2grWWpCd3A2VmNON004OUZHelEwNHFiclF0Z3JPRnliZzNnUVJUWUc1eG43M0Fya2ZRV2pDSlJPd3kzSjM4RHgvRDdqT2E2QkJOc2l0RXcxd0dxNzgwRUVpb09lRCtaR3AySjY2QURpVkdNYXlpSFl1Y01rOG5USzJ6elQ5Q25FcmFBazk1a1FqeTRrMEdSRWxMTDVZQUtMUUVySjVycDFlYXk5TzRGYjZ5SkdtOVU0RmFNd1BHeHRLRDZvZElJSEtvV25oS28xVThLSXBGQytNVm41OVpYbWM3WlRCWmZzZzZGUThXMTBZZlRyNHUwbllycEhaYloxalhpTG1vb0YwY09tMCttUG5KQlhRdGVwYzduMEJxT2lwTkNxSTZ5eWxvVGVSU2hOS0gwNEZJbzBnY01rMEgveFRoeU40cFBBV2pERGtFcDNsTk5QUk5WZnBNSTQ0Q1dSbFJnVmlQNjRlSzBKU1JwMFdVdkNXWXVtbFcvYzU4VmN6L3lNd1ZjVzVvWWI5KzI2VEVod3ZieGlOZzQ4aGwxVkkxVVhUVS8vRXRhK0JNS25HVWl2Y3RmTDV3SU5ERDBnaVFMMWlwdDZVN0M5Y2Q0K2xncVkybE1VWjAyVXY2UHJzK1pFWmVyN1pmV0JYVmdobGZPT3JDbHdzb09GS3pXRWZ6NlJadTFlQ3MrSzhmTHZrdHM1K0JYMGd5ckZZdmUwQzNxSHJuNVUvT2g2RC9DaWhtV0lyWTdIVVpSaEpheGRlK3RsZHU2YWRZSitMZVh1cFF3MFhFeEMzNlJFVGRORnhjcTlnbE11NGNOUVNYOWNxUi9HUVlwK0l4VWtJY05HV1ZVN1p0R2E2UDNYQXlvZFJ0MFhlUzNUcDAxQW5DaDBaYlVoNFZyU1plVjlSV2ZTb1d5eG5ZM2h6Y1ozMEcvSW5EcTR3eFJyRWVqcmVCeG5oSVFia3hlbnhrYXhsK2s3ZUxVUWtVUjZ2S0oyaURGTkdYM1dtVkExeWFPSCttdmhCZCtzRTZ2YWNRekZvYndZNUJxRUFGbWVqd1c1bmU3SHRWTm9sT1VnSmM4Q3NVeG1jL0xCaThONW11OVZzSUE1SHlFcm5TNnplQ3o3VkxJOStuL2hiVDZoVG9rTVhUVnlYSlJLU0cyaGQybGFiWFRidG1LNGZOSDNJWkJQcmVTQTRGTWVWb3VWTjN6RzV4OUNpR3BMdy8zcGNlbzRxR3FwK3JWcCt6Kzd5UTk4b0VmK255SDRGMytKOUloZURCYTk0V2k2M3pKYkxCQ0labTdQMGFzSEdwSUp0M1B6RTNtMFM0WUlXeVhCQ1ZYR2lrajhNdWREUEIvNk5tMnY0SXhKNWdVMGlpMGd1eTVTVUhxR1VZelRQMGpJSlU1RTgyUkhVWHRYNGxEZHJpaEJMZFAxWWFHMUFHVUMxMnJRS3VJYUd2Q3BNalpDOWJXU0NZbmpEbHZwV2JrZFhNVE5lQkhMS2l1b296TUdJdmtjem1QMGFSSlNKOFBZbkxDVk5oS0hYQk5ja0g3OWU4WjhLYzJ3VWVqNHNRWm9IOHFEUkdrZzg2bWFXL1pRV0dObkxjWG1xM0ZsWE02c3NSLzNQNkUvYkhNdm02SExydjF5Uml4aXQyNUpzSDMvSU9yMlVWNEJXSmh4WFc1Qko2WGRyMDduOWtGM1pOQWs2L1hwYzVNU0ZtWUoyUjdiZEw4S2s3cTFPVTlFbGcvdEN4SjhnaVQyN3dTVHlTRjBHT3hnNFBiWUpkaS9OeWlhOU5uODlDR0R1bGZKZW1tMWFpRXIvZWxlR1NOKzVNUnJWSjRLNmxneVRUSVczaTljUTBkQWk2Rkh0MFlNYkgzd0RTQXRHTFNBY2Nlenp4SGl0dDFRZGhXMzZDUWdQY0E4dklJQmgzL0pOamYvT2JtYzJ5enBrOGVkU2xTNGxWZHdnVzV2emJZRXlGb0Y0R0NCQmJ5MWtlVk51ZUhBSCtldmkrSDdvT1ZmUzNYdVBRU05UWE9PTkFiekplU2I1c3R3ZFFIbDFaanJHb0U0OUk4K0E5ajN0K2FoaFFqNzRGQ1NXcFpyajd3UlNGSkpubndpMVQ5SEw1cXJDRlcvSlpxNlA2MlhrTVdUYit1NGxHcEtmbW13aUpXeDE3OEdPRzdLYnJaR3F5V3dtdXlLV1BrTnN3a1oxcTh1cHRVbHZpSWkrQVhoMmJPT1RPTHNydE5rZnFiUUplaDI0cmVlYmtJTkxranV0NXI0ZDlHUi9yOENCYTlTVTBVUWhzblpwNWNQK1JxV0NpeFJtN2k0WVJGYnRaNEVBa2h0TmE2akhiNmdQWVF2N01LcWtQTFJtWDNkRnNLOFhzUkxWWjZJRVZyQ2JtTkRjOG81bXFzb2dqQVFmb0M5QmM3UjZnZncwM20rbFFwdjZrVGZoeHNjRElYNnMwdytmQnh0a2hqWEFYcjEwVW91V0N4M0MvcC9GWXdKUlMvQVhSS2tqT2I1Q0xtSzRYUmUwK3hlRER3VmtKUFphdTUyYnpMRURIQ3FWMGY0NHBQZ0tPa1lLZ1RaSjMzZm1rM1R1OFNkeEowMlNITThGZW01U01zV3FSeWkyRjF5bmZSSnN6Y0ZLeWtkV2xOcWdEQS9MOWxLWUJtYzdadS9xOWlpMUZQRjQ3VkprcWhpclVvYjUzem9pSnRWVlJWd01SMzRnVjlpcWNCYUhiUnU5a2t2cWszeU1wZlJGRzQ5cEtLaklpcTdoL1ZwUndQR1RIb1k0Y2cwNVg1MDI4aUhzTHZVVy91eitralB5SUVoaGNLVXdDa0pBd2JSOXBJRUdPbjh6NnN2QU84aTg5c0ozZEw1cURXRlliUytIR1BSTXhZd0pJdEZRTjg2WUVTZUpRaG4ydXJHaUxSZmZRZUxwdERsOGRBZ2IrVHA0N1VRUHhXT3cxN09lQ2hMTjFXbnpsa1BMMVQ1TytPM01lbnBuNEMzSVk1TEVlcEhwblBlWkhidnVXZmVWdFBsa0g0TFpqUGJCcmtKVDNOb1JKekJ0ODZDTzBYcTU5b1ErOGRzbTB5bVJjbVF5bjh3NzFtaG1jdUVJNWJ5dUYrQzg4VlBZbHkyc0V6amx6QVEzdmRuLzErSHpndXc2cUZOTmJxZW5oWkdiZGlHNlJ3WmFURzdqVEEyWDlSZFhqRE45eWoxdVFweU80THg4S1JBY1pjYlpNYWZwNHdQT2Q1TWRYb0ZZNTJWMUE4TTloaTNzc285Myt1cHJFMHFZTk1qa0UyMkN2SzRIdVV4cU43b0l6NXBXdUVUcTFsUUFqcWxTbHFkRDJSbnIvZ2dwL1RWa1FZam45bE1mWWVsazJzSDVIUGRvcFlvN01Id2xWMW9yOUJ4ZitRQ3lMem05MnZ6RzJ3amlJakMvWkhFSnplcm9KbDZiZEZQVHBaaG81TVYyVTg2ZkxRcXhObEdJTXFDR3krOVdZaEo4b2IxcjArV2h4ZGU5TDJQZHlzRVR2OTdPK3hWdytWTk4xVFpTUU41STZsOW01SXA2cExJcUxtNGExQjFmZkg2Z0h5cVQ5cDgyTk9qbnRSV0dJb2ZPM2JKejVHaGt2U1dic1h1ZVRBTWFKRG91OTlrR0xxRGxod0JaTkVRNG1LUHVEdlZ3U0s0V21MbHVIeWhBOTdwWmlWZThnK0p4bW5KRjhJa1YvdENzNEpxL0hnT29BRUdSOXRDRHNEYkRtaTNPdmlVUXBHNUQ4WG1LY1NBVWFGTFJYYjJsbUpUTllkaHRZeWZqQllaUW1ONXFUNUNOdWFEM0JWbmxrQ2s3YnNNVzNBdFhrTk1NVHVXNEhqVUVSU0puVlEwdnNCR2Exd28zUWg3MTE1WEdlVEYzTlR6OHcwNDQwQWdVN2MzYlNYTy9LTUlOYUlXWGQwb0xwb3EvMC9RSnhDUVNKOVhuWXkxVzdUWUxCSnBIc1ZXRDFhaHNBN0ZqTnZSZDZteENpSHNtOGc2WjBwbnpxSXBGMWRIVXRQMklUVTVaMWhaSGJ1K0wzQkVFU3RCYkw5WFl2R2ZFYWt2MWJtZitiT1pHbm9pdUhFZGxCbmFDaHhZS056QjIzYjhzdzhZeVQ3QWp4Zms0OWVKSUF2ZGJWa2RGQ2UySjBnTWVmaFEwYklaeGh4M2Z6TUl5c1FOaU44UGdPVUt4T011cjEwTGR1aWdSRURSTVp5UDRvR1dyUDFHRlk0dDZncm9BU3NaNDIxb3M0OHdBZG5yYm92TmhMdDdTY05VTGt3WjVBSVpKVHJiYUtZVExqQTFvSjNzSXVOL2FZb2NtLzl1b1FIRUlsYWNGMXMvVE0xZkxjUFRMMzhPOWZPc2pNRUl3b1BLZnZ0N29wdUk5RzJIZi9QUjRhQ0xEUTd3Tm1JZEV1WEovUU5MNzJrNXE0TmVqQWxkUGZlM1VWVnF6a3lzOFlaL2pZT0dPcDZjK1l6UkNyQ3VxME0xMXk3VGlONnFrN1lYUk1uL2d1a3hyRWltYk1RanIzandSTTZkS1ZaNFJVZldRcjhub1BYTEpxNnloNVIzRUgxSVZPSEVTc3QvTEl0YkcyRDJ2UnNaUmtBT2J6dlFBQUQzbWIzL0c0TnpvcEkwRkFpSGZicHEwWDcyYWRnNlNSais4T0hNU2h0Rnh4TFpsZi9uTGdSTGJDbHdsNVdtYVlTcyt5RWprcTQ4dFk3WjJiRTBOOTFtSnd0K3VhME5sUkpJRGgwSGlrRjRVdlNWb3JGajJZVnU5WWVTNXRmdmxWalBTb051L1p1NmRFVWZCT1Q1NTVoYWhCZE4zU2E1WHVqMlJ2YXUxbFFOSWFDOTQ0eTBSV2o5VWlORHNrQUsxV29MK0VmWGNDNkliQlhGUnlWZlgvV0tYeFBBd1V5SUFHVzhnZ1owOGhjaWpLVHQxWUtuVU82UVB2Y3JtRFZBYjBGQ0xJWG41aWQ0ZkQvSng0dHcvZ2JYczdXRjliMlJnWHRQaExCRzl2RjVGRWtkSEFLclFIWkFKQy9IV3ZrN252enpEeklYWmxmRlRKb0MzSnBHZ0xQQlk3U1FUakdsVXZHNTc3eU51dFoxaFRmczkvMW5rU1hLOXp6S0xSWjNWT0RlS1VvdkplMFdDcTF6Vk1ZeENKTWVubU56UElVMlM4VEE0RTd3V21iTmt4cTlySTJkZDZ2MFZwY0FQVk14bkRzdldUV0ZheXlxdktaTzdaMDhhNjJpL29IMi9qeGY4cnBtZk82NGluM0ZMaUwxR1g4SUd0VkU5TTIzeUdzSXFKYnhEVHkrTHRhTVdEYVBxa3ltYjVWclFkek92cWxkZVUwU1VpNklpckc4VVozamNwUmJ3SGExQzBEd3c5Ry9TRlgzZ1B2VEpRRStreXorZzFCZU1JTEtLTytvbGNIemN0T1dnenhZSG5PRDdkcENSdHVaRVhBQ2pncWVzWk1hc29QZ251REM0blV2aUFBeERjNXBuZ2pvQUlUSWt2aEt3ZzVkNjA4cGRyWmNBK3FuNVRNVDZVby9RekJhT3hCQ0xUSlgzTWdrODVyTWZzbld4ODZvTHhmN3AyUFg1T05xaWVUYS9xTTN0UHc0Wlh2bEFwODNOU0Q4RjcrWmdjdEsxVHBvWXd0aVUyaDAySENHaW9INXRrVkNxTlZUTUg1cDAwc1J5MkpVMXF5REJQMkNJSS9EZzRXRHNJbCt6Z2VYNzU4OXNyeDZZT1JSUU1CZktib2RiQjc0M1RsNFdMS09FbndXVVZCc205NFNPbENyYWNVNzJNU3lqMDY4d2RwWWp5ejFGd0MyYmpRbnhuQjZNcC9wWit5eVpYdGd1RWFZQitrcWhqUTZVVW13U0Zhek9iK3JoWWpMYW9pTSthTjkvOEtLbjB6YUNURnBOOWVLd1d5Ny91NEVIek80NlRkRlNOak1mbjJpUFNKd0RQQ0ZIYzBJMSt2amRBWnc1WmpxUi91emk5Wm4yMG9BYTVKbkxFay9FQTNWUldFN0ovWHJ1cGZGSlB0Q1V1cUhQcG5sTDdJU0p0UnBTVmNCOHFzWkNtMlFFa1dvUk90Q0tLeFVoM3lFY01iV1lKd2s2RGxFQkcwYlpQNmVnMDZGTDN2NlJQYjdvZEd1d203Rk44Zkc0d29xdEI4ZTdNNWtsUHBvOTdHb09iTnd0K2x1ZFRBbXh5QzVobWNGeCtkSXZFWktJNmlnRktIcUxIMDFpWTFvNzkwM1Z6RzlRR2V0eVZ4NVJObUJZVVUrekl1U3ZhL3lJY0VDVWk0cFJtRTNWa0YyYXZxdWxRRVVZNHlaL3dtTmJvQnpQbUFQZXkzK2RTWXRCWlVqZVdXVDBwUHdDejRWb3p4cDl4ZUNsSVU2MHF2RUZNUUNhUHZQYUE3MFdsT1A5Zi9leTM5bWFjdnBHQ1ZhK3pmYThnTzQ0d2J4cEpVbEM4R04vcFJNVFF0elk4WjgvaGlOclUrWnE2NFpmRkdJa2RqN203YWJjSzFFQnR3czFYNEovaG5xdmFzUHZ2RFNEWVdOK1FjUVZHTXFYYWxrRHRUYWQ1cllZMFRJUjFFcW94M2N6d1BNaktQdkY1c0Z2MTdUaHVqcjFJWjFZdGw0VlgxSjB2alhLbUxZNGxtWGlwUkFybzBxVkdFY1h4RVZNTUVsNTRqUU1kNEo3Umpnb21VMGoxcHRqeXhZK2NMaVN5WFBmaUVjSVMybFdESzNJU0F5NlVaM0hiNXZuUG5jQTk0NDExamN5NzVheTZCNkRTVHpLNlVUQ1pSOXVEQU50UEJydklEZ2pzZmFyTWl3b2F4Mk9sTHhhU29ZbjRpUmdrcEVHcUVrd294NXR5SThhS2tMbGZaMTJsTzExVHhzcVJNWTg5ajVKYU81NVhmUEpQREwxTEdTbkM4OFJlOUFpK051NWJaanR3UnJ2RklUVUZIUFI0Wm14R3NsUU1lY2diWk83bkhrMzJxSHhZa2R2V3B1cDA3b2pjTUNhVnJwRkF5RlpKSmJOdkJwWmZkZjM5SGRvMmtQdFQ3djAvZjhSL0I1Tno0ZjF0OS8zek5NLzduNlNVSGZjV2s1ZGZRRkp2Y0pNZ1BvbEdDcE9GYi9XQzBGR1dVMmFzdVF5VCtybTg4WktaNzhDZWkvQ0FoOTM5Q0gwSllicFpJUHR4YzJ1ZlhxalMzcEhIOWxuV0s0aUo3T2pSL0VFU3BDbzJSM01ZS3lFN3JIZmhUdldobzRjTDFRZE40akZUeVI2c3lNd0ZtMTI0VFZERFJYTU52ZUkxRHAvbnR3ZHo4azhreHc3aUZTeDYrWXg2TysxTHpNVnJOMEJCenppWmk5a25lWlN6Z29sbEJuVndCaDZvU09QSFhyZ2xyT2orUW1SL0FFU3JoRHBLcldUKzgvQWlNRHhTLzV3d1JOdUdRUExsSjlvdm9taEpXbjhzTUxWSXRROE4vN0lYdnREOGtkT29IYXcrdkJTYkZJbVFzdi9PQ0FJdWk5OUUrWVNJT01sTXZCWGtBdCtOQVpLOHdCOUpmOENQdEIrVE9VT1IrejcxZC9BRlhwUEJUNitBNUZManhNakxJRW9KenJRZnF1dnhFSWkrV29VekdSMUl6UUZOdmJZT254YjJQeVEwa0dkeVhLelcyYXhRTDhsTkFYUGs2TkVqcXJSRDFvWnRLTGxGb29mclh3MGRDTldBU0h6eSs3UFN6T1VKM1h0YVBac3hMRGpyK280MWZLdUtXTm1qaVp0ZmtPekl0dmxWMk1ER1NoZUdGMG1hMDRxRTNUVUVmcUpNclhGbTdEcEsrMjdEU3ZDVVZmN3JiTm9salBoaGE1VzdLQnFWcTBTaFVTVGJSbXVxUHRRcmVWV0g0SkVUNXlNaHVxTW9TZDRyL044c0RtZVFpUVF2aTF0Y1p2N01vYzdkVDVYNUF0Q0Q2a05FR1pPelZjTllscFg0QWJUc0xnU1lZbGlpUHlWb25pdVlZeVN4c0J5NWNnYjNwRCtFSzBHcGIwd0pnMDMxZFBnYUw4Slp0NnNJdnpOUEVIZlZQT2pYbWFYajRiZDR2b1h6cFo1R0FwTWhJTGdNYkNFV1oyendnZGVRZ2pOSExiUEl0K0txeFJ3V1BMVE42SHdaME91aWpqNFVGK1NnMEF1OFh1SUtXMFd4bGV4ZHJGckRjWko4U2hhdWF0M1gwWG1IeWdxZ0wxbkF1MmhySkZiNHdaWGtjUytpMzZLTXlVMXlGdll2MjNiUVVKaS8zeVFwcXIvbmFVT29pRVdPeGNreXEvZ3E0M2RGb3UxRFZEYVlNWks5dGhvNytJWFhva0JDczVHUmZPY0JLN2czQStqWFEzOUs0WUE4UEJSVzRtNSt5UjBaQXhXSm5jalJWYklUdklBUEhZUnQxRUozWUxpVWJxSXZvS0h0ekhLdFV5MWRkUlVRMEFVTzQxdm9uWkRVT1crbXJzencrU1cvNlEvSVVnTnBjWEZqa003RjRDU1NRMkV4Wmc4NW90c01zN2txc1FENE94WWVCTkRjU3BpZmpNb0xiN0dFYkdXVHdhc1ZPYm1CL2JmUGNVbHEwd1loWENZRURXUlcwMlRQNWJCcllzS1RHV2puV0RESjFGN3pXYWkwelcvMlhzQ3V2QlFqUEZjVFlhUVgzdFNYUlNtOGhzQW9EZGpBcksvT0ZwNnZjV1lPRTdsaXpQMFljKzhwMTZpNy9OaVhJaWlRVHA3YzdYdXM5MjVWRXRsS0FqVWRGaHlhaUxUN1Z4RGFncHJNRndpeDR3WjA1dTBxajdjRFdGZDBXOU9ZSEl1M0piSktNWFJKMWFZTm92dWdnK1FxUk43Zk5IU2kyNlZTZ0JwbitKZk11UG8zYWVxUFdpay93STVSejNCV2FyUFFYNGk1K2RNMG5wd1ZPc1grS3NPaEM3dkRnK09Kc3o0UTV6bG5JZWZsVVdMNlFZTWJmOVdEZkxtb3NMRjRRZXYzbUppT3VIam9vci9kTWVCcEE5aUtEa01qWUJOYlJvNDE0SEN4anNIckI0RVhOYkh6Tk1ESENMdU5CRzZTZitKNE1aL0VsVnNEU0x4aklpR3NUUGh3OEJQanhiZlF0c2tqK2R5Tk1LT09jVVlJUkJFSXFiYXp6M2xtamxSUWhwbHhxNjczVmtsTU1ZNjU5N3Z1K2Q4OWVjL3pxN01pNGdRdmg4N2VoWWJwT3VaRVhqNWcvUTdTN0JGREFBQjlEekczNVNDODUzeHRXVmNuWlFvSDU0amVPcVlMUjlORHV3eHNWdGhUVjdWOTluL0I3SFNiQXl0YkV5VlR6LzVOaEo4Z0dJakcwRTVqM2dyaVVMVWQ1Umc3dFFSKzkwaEpnTlFLUUgyYnRiU2ZQY2FUT2ZJZXhjMWRiMUJ4VU9oTTF2V0NwTGFZdUtyM0ZkTlR0L1QzUFdDcEVVV0RLRXR6WXJqcHpsTC93cmkzTUlUS3NGdnRGOFFWVi9OaFZvOTdhS0lCZ2RsaU5jMTBkV2RYVkRwVnRzTm4rMlVJb2xyZ3FkV0E0RVk4c28wWXZCNGErYUx6TVhpTUF1T0hRclhZMHRyK0NMMTBKYnZaemdqSkp1QjFjUmtkVDdEVXFUdm5zd1ZVcDVra1VTRlZ0SUlGWUswNSt0UXhUNjk5MkhITldWaFd4VXNEMVBrY2VJcmxYdVVWUm9nd21mZGh5cmY2enphTDgrYzBMN0dYTVpPdGVBaEFWUVZ3ZEpoKzduclg3eDRMYUlJZnoyRjJ2N0RnL3VEZnoyRmErNGdGbTJ6SEFvcjhVcWltSkczVlRKdFpFb0ZYaG5EWVh2eE1KRmM2a3UyYmhiQ3h6aWoyejVVTnVLMGptcDFtbnZrVk5VZlIrU0VtajFMcjk0THltNzVQTzdGczBNSXIzR2RzV1hSWFNmZ0xUVlkwRkxxYmE5N3UxSW44TkFjWTdJQzZUaldMaWd3S0VJbTQzTnhUZGFWVHY5bWNLa3p1ekJrS2Q4eC94dDFwLzlCYlA3V3liNGJwbzFLMWduT3BiTHZLejU4cFdsM0I1NVJKL1o1bVJETFB0TlFnMTRqZE9FczkraC9WNVVWcHdyQUk4a0diWDhLUFZQRElNZklxS0RqSkQ5VXlET1BoalozdkZBeWVjd3lxNGFrVUU5bURPdEpFSzFocER5aTZBZTg3c1dBQ2xYR1Rpd1B3TjdQWFd3anhhUjc5QXJIUklQZVlLVHVuVlcyNHNQci8zSFB6Mkl3SDhvS0g0T2xXRW10NEJMTTZXNWc0a01jWWJMd2oydXNvZEQxMDg4c3RaQTdWT3NVU3BFVmw0dzdOTWIxRVVITVJ4QXhMRjBDSVYrMEwzaVpiK2VrQjF2U0RTRmpBWjNoZkxKZjdnRmFYck9LbittaFIrcld3L2VUWEljQWdsNEh2RnVCZzFMT21PQXdKSDNlb1ZFamp3aGVLQTRpY2JyUUNtdkF0cFEwbVhHMGFnWXA1bWo0UmI2bWRRK1JWNFFCUGJ4TXFoOUM3bzhuUDBXa28yb2NuQ0hlUkdoTjFYVnlUMmI5QUNzTCs2eWxVeSt5QzNRRW5hS1JJSks5MVl0YW9TcmNXWk1Nd3h1TTBFOUo2OForWXlqQTBnOHAxUGZIQUFJUk95NlNhMDRWWE91VDZBMzUxRk9XaEtmVEdzRkozUlRKR1dZUG9MazVGVks0T2FZUjloa0p2ZXp3Rjl2UU4xMTI2cjZpc01HWFdUcUZXKzNITDNJL2p1cmxJZERXSVZ2WVkrczZ5cTdsckZTUEFHUmRuVTdQVndZL1N2V2JaR3BYenkzQlEyTG1BSmxyT05Vc1pzNG9Ha2x5MFYyNjd4YkQ1S01ZOHdvTk5zbVdHMVZWZ0xDcmE4YVFCQmNJNERQMkJsTnd4aGlDdEhsYXo2T1dGb0NXMHZNUjNFcnJHN0p5TWpUU0NudlJjc0VIZ21QbndBNmlOcEoyRHJGYjRnTGxoS0p5WkdhV2tBOTdINkZGZHdFY0xUNkRSUVFMKytmT2tWQzRjWUdXMVRHLzNpSzVkU2hSU3VpQnVsbWlocWdqUjQ1VmkwM28yUmJRYlAzc3h0OTBWeFE2dnpkbEdma1htbUttak9pMDgwSlNIa0xudGp2c0JKbnY3Z0tzY09hVE9rRWFSUXFBbkNBNEhXdEI0WG5NdE9ocFJtSDJGSDh0VFhySWpBR05XRW11ZFFMQ2tjVmxHVFE5NjVLaDBINml4WGJnSW1RUDZiNDJCNDlzTzVDOHBjN2lSbGd5dlNZdmNuSDlGZ1EzYXpMYlFHMmNVVzk2U0RvalRRU3R4a09KeU91REdUSEFubldrejI5YUV3TjlGVDhFSjR5aFhPZytqTFRyQ1BLZUVvSjlhN2xEWE9qRXI4QWdYNEJtbk1RNjY4b1cwellQeVFpVk1QeEtSSHRwZm5FRXlhS2hkek5WVGhseHhEUU5kckhlWmlVRmI2Tm9ZMkt3dlNiN0JuUmNwSnkrL2cvekFZeDNmWVNONVFFYVZEMlkxVnNOV3hCMEJTTzEyTVJzUlk4SkxmQWV6Uk16NWxVUnVMVW5HMVRvS2s2UTMwRnVnaHFXTjZnQk5jRnhQL25ZL2l2K2lhVVFPYSsyTnV5bTQ2d3RJL0R2U2Z6U3AxakVpNFNkWUJFN1loVGlWVjVjWDlnd2JvVkRNVmdacDVZQlFsSE9RdmFETmZjQ29DSnVZaGY1a3o1a3dpSUtQanpncGNSSkhQYk9oSmFqZW9lUkw1M2N1TWFoaFY4WjdJUnI2TTRoVzBKelQ3bXphTVV6UXBtODY2endNN0NzMDdmSllYdVd2akFNa2JlNU82VjRidTcxc09HNkpRNG9MOHpJZVhIaGVGVmF2enhtbEl5QmtnYzlJWmxFRHBsTVByOHhsY3lzczRwVlVkd0sxZTdDSzJrVHNTZHE3ZzVTSFJBbDNwWVVCOUtvNGZzaDRxbGVPeUp2MXozS0ZTVFN2d0VjUk8vRXc4b3pFRFlaU3FwZm9WVzl1aEpmWXJOQVhSMFozVm1lb0FEK3JWV3R3UC8xM3NFLzNJQ1gzSGhERzNDTWM0NzZkRUVDMEszdW1TQUQ0aitaUUxWZEZPc1dMMkMxVEg1KzRLaVNXSCtsTWlibytCNTVoUjNHcTQwRzFuMjVzR2NOMG1FY29VMndOOUZDVnlRTEJoWU91OWFIVkxXakVLeDJKSVVaaTV5U29IVUFJOWI4aEd6YUxNeENaRE1MaHY4TWtjcFRxRXd6OUtGRHBDcHFRaFZtc0dRTjhtMjR3eUI4MkZBS05tamdmS1JzWFJtc1NFU292QXdYakJJb01LU0c1MXA2VW04YjNpN0dJU3M3a2pUcS9QWm9pb0NmSnpmS2RKVE4wUTQ1a1FFUXVoOUg4OE0zeUVzM0RidFJUS0FMcmFNMFlDOGxhaU1pT09lNkFEbVRjQ2lSRWVBV1plbEJhRVhSYVN1ajJseDB4SGFSWXFGNjVPMExvNU9DRlUxOEE4Y01ERTRNTFltOXcyUVNyOU5nUUFJY1J4WnNOcEE3VUpSMGU3MUpMK1ZVK0lTV0ZrNUk5N2xyYTh1R2c3R2xRWWhHZDRHYzZyeHNMRlJpSWVHTzRhYlA0UzRla1ExZmlxREN5ODdHWkhkNTJmbjVhYURHdXZPbUlvZnJ6cFZ3TXZ0YnJlWi84NTVPYVhUUmNOaU5FMHd6R1pTeGJqZzI2djhrbzhMNTM3di9YQ0NXUDJNRmFBckpwdm5rZXAwcEErTzg2TVdqUkFaUFFSZnpuWmlTSWFUcHB5Nm0zcDZIck5Tc1k3ZkR0ejdDbDRWL0RKQWpRRG95aUwydXdmMVVIVmQyQUlyekJVU2xKYVRqNGs2Tkw5N2EvR3FoV0tVOVJVbWpuWUtwbTJyK0pZVWNya0N1Wkt2Y1l2cmc4cERvVUtReXdZOUdEV2cwM0RVRlNpcmxVWEJTNVNXbi9LQW50bmYwSWRIR0wvN213WHFERytMWllqYkVkUW1xVXFxNHk1NFRObVdVUDdJZ2NBdzU4MTZZQnp3aU5JSmlFOU00bFBDemVJL0ZHQmVZeTNwNklBbUg0QWpYWG12UTRJeTBZODJOVG9iY0FnZ1QyQ2RxejZNeDRUZEdvcTlmbjJldHJXS1VORnlhdEFIeWRRVFZVUTJTNU9XVlVsdWdjTnZvVXJsQThjSkp6OU1xT2EvVzNpVm5vNHpESGZFN3pob1k1ZjVsUlRWWkRoclFiUjhMUzRlUkx6OGlQTXlCTDZvNFBpTGxwODlGamRva1FMYVNCbUtIVXdXcDBuYTVmRTN2OXpueTJZY0RYRy9qZkk5c2N0dWxIUmJka0k1YTRHT1BKeDRvQUpRelZaL3lZQWFkbzhLTlpVZEVGczlaUGlCc2F1c290WE1OZWJFZ3IwZHlvcHVxZlNjRkozT0ROUEhnY2xBQ1BkY2N3djBZSkdRZHNOMmxob1Y0SFZHQnhjRVVlVVgvYWxyNG5xcGNjMUNDUjN2UjdnNDB6dGVRZy9KdldtRmxVRTRtQWlUcEhsWUdyQjd3K1UyS2RTd1F6MlFKS0JlLzVlaWl4V2lwbWZQMTVBRldySzhTaDFHQkJZTGd6a2kxd1RNaEdRbWFnWHFKMitGdXFKOGYwWHpYQ1ZKRkhRZE1Bdzh4Y28xMUhoTTM0N2FsckF1K3dtWDNwREZBQk92a0MrV1BYMFVoZzFaNU1WSEtOUk94YVI4NFlWM3MxMlVjTSs3MGNKNDYwU3pFYUtMeWg0NzJ2T01EM1huYUs3enhaY1hsV3FlbkV2Y2ptZ0dOUjJPS2JJMXM4VStpd2lXK0hvdEhhbHAzZTFNR0R5NkJNVkl2YWpuQXprRkhiZVZzZ2ptSlVrclA5T0F3bkVIWVhWQnFZeDNxN0x2WGpvVlIwbVk4aCtaYU9uaDA1M3Bkc0drbWJxaHlyeU4wMWVWSHlTcitDa0RZa1NNZVoxeGpQTlZNK2dWTFRES3UyVkdzTVVKcVdPNFR3UERQMFZPZzIvOElUYkFVYU1HYjRMakw3TCtQaTExbEVWTVhUWUlsQVovUUhtVEVOanl4M2tEa0JkZmN2dlF0NnRLazZqWUZNNEVHNVVYRFRhRjUrMVpqUno2VzdNZEpQQyt3VGtiRFVpbTRwNVFRSDNiOWtHazJCa2lseWV1cjhCYzIwd201dUpTQk85NUdmWURJMUVaaXBvUmFIN3VWdmVuZXF6NDN0bFRaR1JRNGE3Q05tTUhnWHlPUVFPTDZXUWtnTVVUUURUOHZoMjFhU2R6N0VSaVpUMWpLOUYrdjZ3Z0Z2dUVtR25nU3ZJVVIyQ0prYzV0eDFReWdmWm5BcnVPTm9iQjFpZENMQjFGQ2ZPN04xWmRSb2NUOC9XeWUrRW5EaU85cHpxSXBuTERsNGJrYVJLVytla0JWd0huNDZTaHcxWDB0Y2x0LzBST2lqdVVCNGtJSW5yVkpVNGJ1V2Y0WUlUSnRqT0o2aUtkcjF1K2ZsZ1FlRkg3MEd4S2poZGd0L01yd2ZCNEsvc1hjelErOXpZY3JENGRoWTZxWmhaMDEwcnJ4Z2dXQThKYVp5ZzJwWWlqOGllWUVnMWFaSmtaSzlPMVJlN3NCMGlvdWY2MHJLMEdkK0FZbHA3c29xQ0JDREd3ZktlVVFoQ0JuMEUwbzBHUzZQZG1qTGkwVHRDWVplcWF6cXdOK3lOSU5JQThMazNpUERuV1VpSVBMR05jSG1aRHhmZUswaUFkeG0vVDdMbk4rZ2VtUkw2MWhISWMwTkNBWmFpWUpSK09IbkxXU2U4c0xySzkwNUI1ZUVKSE5sV3E0Um1FWElhRlRtbzQ5Zjh3NjErTndmRVV5dUpBd1ZxWkNMRmN5SEJLQWNJVmozc056ZkVPWHpWS0luZHhIdytBUjkzb3doYkN4VVpmNkdzOGN6Ni8xVmRyRkVQcnYzMzArOXM2QnRNVlBKM3psL1VmOXJVaTBaL29wZXhmZEwzeWtGNzZlOTk5R1BmVnY4Zkp2L1kvKy81aEVNb24xdHFORnlWUmV2Vjl5OS91SXZzRzNkYkI4R1JScmdhRVhmaHgrMnhlT0Z0K2NFbjNSWmFuTnhkRWUyK0I2TUhwTmJyUkU1M1BsRGlmUHZGY3A0a083OElMUjBUNHh5Vy9XR1B5QnNxR2RvQTd6SkpDdTFUS2JHZmhucWduUmJ4YkIyQjNVWm9lUTJiejJzVFZuVXdva1RjVFUyMVJ4TjFQWVBTM1NhcjdUMGVSSXN5Q05vd3I5YW13b01VL29kOXMyQVB0aUtOTDZFTk9seUtBRHN0QUVXS0Erc2RLRGhySjZCT2hSSm1aK1FKYkFhWjMvNUZxMC9sdW1DZ0V6R0VidTN5aTBZNEk0RWdWQWpxeGg0SGJ1UW4wR3JSaE9XeUFmc2dsUUpBVkwxeS82eWV6UzJrOFJFMk1zdEpMaDkyTk9CM0dDWWdGWHpuRjRkMjVxaVA0WkN5STRSWUdlc3V0NkZYSzZHd1BwS0s4V0hFa2hZdWkwQXlFbXI1TWwzdUJGdFBGZG5pb0k4UmlDb29hN1oxRzFXdXlJaTNuU05nbHV0Yyt4WThCa2VXM0pKWFBLNmpkMlZJTXBhU3hwVnRGcStSK3lTSzlKNldHNVF2dCtDK1FIMWh5WVVPVks3ODU3bkZteURCWWdaL28rQW5pYnpOVnF5WUNKUXZ5RFhEVEsraVhka0E3MWJZN1RMM2J2dUx4TEJROGtiVHZURVk5YXFrUTMrTWlMV2JFZ2pMek9IK2xYZ2NvMUVSZ3pkODByREN5bWxwYVJRYk9ZbktHL09Eb0ZsNDZselQwY2pNNUZZVnZ2MHFMVWJENWx5SnRNVWFDMXBGbFRrTk9OeDZsbGlhWDlvMGkvMXZ3czViTktuNU91RU5RRUttTGxjUDRvMlptSmpENHp6ZDNGazMydVE0dVJXa1BTVXFiNExCZTNFWEhkT1JOQjJCV3N3czVkYVJuTWZOVlg3aXNQU2IxaE1RZEFKaTEvcW1ETWZSVWxDVTc0cG1uempiWGZMOFBWRzhOc1c2SVFNMk5lMjNpQ1BJcHJ5SmpZYlZubTVoQ3ZLcE1hN0hMVmlOaU5jK3hUZkRJYUttM2pjdFZpRDhBMU05WVBKTmswMDNWVnI0Wm8yTXVHVzh2aWw4U0xhR3BQWHFHN0k0RExkdGw4YTRSYngxTHQ0dzVIdXFhYTFYelpCdGoyMDhFSlZHY21LWUV1YWVOMjd6VDlFRTZhMDlKZXJYZEVicGFOZ05xWUpkaFAxTmRxaVBLc2JEUlVpODZYdnZOQzdyTUU1bXJTUXRyekFaVm5kdFNqQ01xZDhCbWFlR1I0bDRZRlVMR1JCZVhJVjlZNHl4TEZkeW9VTnBpeTJJaGVQU1d6Qm9mWVBQMGVJYTJxNUpQNGo5RzhhdC9BcW9Tc0xBVXVSWHR2Z3NxWC96WXdzRStvZjZvU0RiVU9vNFJNSncrRE9VVEpxK2hucXdLaW05WXkvbmFweVpOVGMyckNxNlY5akh0SmJ4R1BEd2x6V2ovU2szekYvQkhPbFQvZlNqU3E3RnFsUEkxcTZKK3J1OEFrdTAwOFNGSU5YWmZPZm5aTk92R1BNdEVtbjJnTFB0K0g0UUxBKy9TWWU0ajM5OGF1emhLSXAyUG9rM21QQzVxMUlOMUhnUittbkVmYzROZWVIWXdkMi9rcHN6UjNjQm43bmk5TmJJcWh0U1dGVzh4YlVKdVVQVk9lZVh1M2owSUdabUZOaXdhTlo2ckg0L3pRMk9EejZ0RnhSTHNVWVp1MWJmZDF1SXZmUUR0NFlEL2VmS1l2OFZGOGJIR0RnSzIydzJXcXdwaTQzdk5DT1hGSlpDR01xV2lQYkw4bWlsNnRzbU9UWEFXQ3lNQ3c3M2UyckFEWmoySUs2cnFrc00zRVhGMmNiTGI0dmpCMTR3YS95WEs1dndVKzA1TXpFUko1blhzWHNXMjFvN00rZ08wanMyT3lLY2lQNXVGMmlYeWIyRGlwdHdRZUhlcXlna3JOc3FWQ1NsbGR4Qk1wd0hpMXZmYzhSS3BQLzRMM0xtcHE2RFpjdmhERGZ4VENFM3NwbGFjVGNPdFhkSzJnMzAzZElXQlZlMndEL0d2amExY0NsRlE2N2d3MHQxWlV0dHNVZ1ExVmVreThvT3BTNmtzWUVjNGJxc2VDYlp5NzY2U3ZMM0ZvZG1uYWhsV0pSZ1ZDTmpQeGhML2ZrMnd5dmxLaElUSC9WUUNpcE9JMGROY1JhNUIxTTVIbU9CalRMZVpRSnkyMzdlMm1vYndtRHlKTkhlUGhkRG1pa252TEthRGJTaEwrSXMxWFRDSnVMUWQyd21kSkw3K21LdnMyOTR3aFhRRCt2dGQ4OEtLazBEWFA4QjFYdTlKK3hvNjlWT3VGZ2V4Z1RyY3ZJNlN5bHR1TGl4OU9QdUU2L2lSSllvQk1FWHhVNHNoUU1mNEZqcXdmMVB0bkovd1dTWmQyOXJoWmpSbVRHZ2lHVEFVUXFSeituQ2RqZU1mWWhzQkQ1THY2MEtJTFdFdk5FSGZtc0RzMkwwQTI1MjM1MWVVb1l4QXlzVmFDSlZMZEg5UUZXQW1xSkRDT0RVY2RvbzEyK2dkNmJXMmJvWTBwQlZIV0w2TFFESzViWVdoMVY4dkZ2aTBjUnBmd3Y3Y0ppTVgzQVpOSnVUZGRIZWhUSWRVMFlRL3NRMWRMb0YyeFFQY0N1SEtpdUNXT1kzMERIZTFPd2NDbExBaHFBS3lxbG5JYkgvOHU5U2NKcGNTNGtncDZIS0RVZGlPZ1JhUkdTaVVDUkJqekk1Z1Nrc01aS3F5N1NkNTFhZWcwdGdKK3gwVEg5WUgyTWdzYXA5TjdFTlpkRUIwYmV5MkRNVHJCQTFobjU2U0VyTkhmM3RLdHF5TDliNnlYRVA5Ny9yYytqZ0QyTjFMTlVINlJNOUF6UDNrU2lwcjA2UmtLT29sUjdITzc2OGpqV2lIMVg5MmpBN2RrZzdnY05janFzWkNnZnFXdzB0UFhkTGcyMGNGNnZuUXlwZzdnTHRrYXpySEFvZHlZZkVOUFFac2RmbmpNWmlOdTRuSk85N0QxL3NRRSszdk5GenJTRE9LdytrZUxFQ1lmN1JKd1ZIZVAvajc5ODMzb1owZWdvbllCMkZsRkU1cWowMkIvTFZPTUpRbHNCOHVOZzNMZWc0cXRad250c09TTmlkUjBhYmJabUFLNHNDenZ0OFlpdXoyeXJOQ0pvSDVPOFh2WC92TGVSL0JCWVRXajBzT1BZTS9qeXhSZDUrL0p6aUtBQUJhUGN3LzM0VUEzYWovZ0xaeFpnUkNXTjZtNG0zZGVtYW5OZ3N4MFAyMzcvUStFdzVWWW5KUGt5Q1kwY0lWSG9GbjJBeS9lN1U0UDE5QVBiUEZYRUhYOTRONktoRU1QRzdpd0IzK0krTzFqZDVuNlZTZ0hlZ3hnYVNhd082aVFDWUZnRHNQU01zTk9jVWo0cTNzRjZLekdhSC8wdTVQUW9Bai84enE2VWM5TW9OckdxaFllYjJqUW8wV2xHbFhqeHRhblpMUzI0L09JTjVHeC8yZzY4NEJQRFFwd2xxbmtGY3hwbVAvb3NuT1hyRnV1NFBxaWZvdVFIMGVGNXFDa3ZJVFFiSncvWnZ5NW1BSFdDOW9VK2NUaVloSm1TZktzQ3l0MWNHVnhpc0t1K055bUVRSUF5YUNndWQvVjA5cVQzbmsvOXMvU1dzWXRoYTd5TnB6QklNTTQwckNTR2FKOXU2bEVrbDAwdlhCaUV0N3A5UDVJQkNpYXZ5bkVPdjdGZ0xxUGRlcXhSaUN3dUZWTW9sU0lVQmNveWZVQzJlMkZKU0FVZ1lkVkdGZjBiMEtuMkVabEs5N3l5eHJUMk1WZ3Z0UmlrZmRhQVc4UndFRWZOK0I3L2VLOGJCZHA3VVJwYnFuMXhjckM2ZDJVamRzS2J6Q2pCRnFrS2tvWnQ3TXJoZzZZYWdFN3Nwa3FqMGpPcldNK1VHUTBNVWxHMmV2UDF1RTFwMnhTdjRkTUswZG5hNkVOY05VRit4a2FKN0I3NjROZHhMQ3B1dmhibGx0VlJBZjd2SzVxUHR0Si85UllGVVVTR2NMZGlibno2bWY3V2tQTzNNa1VVaFIybUFPdUd2OElXdzVYRzFadm9WTW5qU0FaZTZUN1dZQTk5R0VOeG9Ia01pS3hIbEN1SzVHZDBJTnJJU0ltSFFyUW12NkY0bXFVL1RUUThuSE1EekNSaXZLeVNROGRxa3BRZ25VTW53SWthQXVjNi9GR3ExaHczYjJTYmEzOThCaFV3VVpTQUlPOFhadm51TGRZMm42aE9Yd3MrZ3E5QkhVS2NLRkE2a3o2RkRucHhMUElDYTNxR2huYzk3Ym8xRlQvWEprNDhMcmtISjJDQXRCdjBSdE45N04yMXBsZnBYSHZaOGdNSmI3WmM0Y2ZJNk1iUHdzVzdBaWxDU1hNRklFVUVtaXI4WExFa2xBMHp0WWJHcFRUR3F0dHA1aHBGVFRJcVV5YUFJcXZNVDlBL3grSmk1ZWpBNEJoeGIvY2wxcFVkT0Q2ZXBkM3lpbElkTzZqMjk3eElub2lCUHVFRFcyL1Vmc2xEeWhHa1FzN1d5MjUzYlZubFQrU1dnODl6WUlLLzlLWEZsNWZlK2pvdzJyZDVGWHY4ekRQcm1mTVhpVVB0OVFCTy9pSzRRR2JYNWovN1J4MWMxdnpzWThPTmJQM2xWSWFQcmhMNCsxUXJFQ1ROM255S2F2R0cwZ0JCdEh2VEtoR29CSGdNWEhTdEZvd04rSEtyUHJpWXUrT1owNUZybjhva1FyUGFheG9LUDFVTENTL2NtS0ZOM2djSDdIUWxWanJhQ2VRbXRqZzFwU1F4ZXVxWGlTS2dMcHhjLzFPaVpzVTQrbjRsejRocGFoR3lXQlVSTGk0NjQybjFnbjlxejliSXNhQ2VFUEowdUptZW5NV3AydEptSXdMUTZWU2dEWUVyT2VCQ2ZTajlQNEcvdkk3b0lGK2wvbjVmcDk1NlFneEd2dXI3N3luYXdBdTNHOU1kRmJKYnU0OU5abldubkZjUUhqeFJ1aFVZdmcxVS9lODRONEpUZWNjaURBS2IvS1lJRlh6bG95dUUxZVlYZjU0TW1oalRxN0IveUJUb0R6enB4M3RKQ1RvM0hDbVZQWWZtdEJSZTNtUFlFRS82UmxUSXhiZjRmU09jYUtGR2s0Z2JhVVdlNDRoVms5U1p6aFc4MHlmVzVRV0JIeG10VXp2TWhmVlFsaTRnWlRrdElPWmQ5bWpKNWhzYm16dHRhSFFCMjlBbTNkWmtteDNnL3F2WW9jeWhaMlBYQVdzTlFpSWFmK1E4Vy9NV1BJSzcvVGp2Q3g1cTJYUnA0bFZXeWRNYzJ3SVFraGFkREIweHNudy9rU0V5R2pMS2pJNGNvVkl3dHViVEYzRTdNSjZMUzZVT3NKS2o4MlhWQVZQSkpjZXBmZXdiekU5MWl2WFp2T3ZZZnNtTWV2d3RQcGZNekdtQzdXSmx5VzJqMGpoN0FGMUpMbXdFSlNLWXdJdnU2REhjM1lueUxIOVpkSUJuUStuT1ZEUmlQK1JFcHF2Kyt0eXBZSEl2b0p5SUNHQTQwZDhiUjdIUjJrN2RvNlVRVEhGNG9yaVllSVFieEtlNFRoNisvbDFCalV0UzlocU9SaDNNYmd2WXJTdFhUZlN3YUJPbUFWUVp6cFlOcXNBbVF5alk1Nk1VcXR5M2MveEg2R3VoTnZOYUc5dkdiRzZjUHRCTThVQTNlOHI1MUQwQVI5a296S3VHR1NNZ0x6M25BSHhETm5jN0dUd3BMajcvNkhlV3AxaWtzRGVUandDTHB4ZWp1TXRwTW5HSmdzaWt1MXNPQUN3UTl1a3pFU2lEUk43N1lORVN4UjVMcGhPbGNBU1hBNXVJdHMxTG5CSWNuMUo3QkxXczQ5RE1BTFNudXo5NWdkT3JUWnIwdTFTZVlIaW5uby9wRTU4eFlvWGJWTy9TK0ZFTU1zNXF5V2tNbnA4UTNDbHlUbFpQNTJZOW5xN2I4ZklUUHVWWFVrOW9oRzVFRkh3NGdBRWNqRnhmS2IzeHVBc0VqeDJ6MXd4TmJTWk1jZ1M5R0t5VzNSNkt3Sk9OZ3RBNjRMVHl4V204QnZ1ZHAwTTFGZEpQRUdvcE00RnZnN0cvaHNwdGtoQ2ZIRmVndjRFTnd4UGVYbVloeHdaeTdqcytCZU0yN3Q5T0RCTXluVkNMSjdSV2NCTXRlWkp0dmpPWUhiNWxPbkNMWVdORU1LQzU5QkE3Y292dTFjQU5hMlBYTDA1aUdkdWZPemtnRnFxSEJPcmdRVlVtTEVjK01rejRScThPNldrTnI3YXROa0g0TThkK1NEMXQvdFN6dDNvRnFsK25lVnMrQXdFSTVKYUJKYXhBUnRZMlo0bUtvVXF4ZHM0VXBaMHN2M3pJYk5vbzBKNGZpaGxkUVRYM1hOY3VOY1ptY3JCNUxUV01kemVSdUF0QmszY1pIWVFGNmdUaTNQTnVESjBubVIrNExQTG9IdnhRSXhSZ0o5aU5OWHFmMlNZSmhjdkN0SmlWV284NVRzeUZPdXE3RXlCUEpyQWRoRWdFMGNUcTE2RlFYaFlQSkZxU2ZpVm4wSVFuUE95MExiVTRCZUc5NFFqZFlOQjBDaVEzUWF4UXFEMmViU01pTmphVmF3OFdhTTRaNVduemNWRHNyNGVHd2VTTGEyREUzQldWaWF4aFpGSWNTVGpneE5DQWZlbGcraHpuVk9Zb2U1VnFUWXMxZzdXdGZUbTNlNC9XZHVDNnArcXFBTThINFp5ckpDR3Bld1RoVERQZTZIN0N6WC96UThUbStyNjVIZVpuK01zbXhVY2lFV1BsQVZhSy9WQmFRQldmb0cvYVJML2pTWklRZmVwLzg5R2phc1dtYmFXemVFWjJSMUZPanZ5SlQzN085QjgwNDZTUlNLVkVuWFdsQnFia2I1WENTM3FGZXVFOXhiOStmckVrbnhXQjVoMUQvaHJ1ejJpVkRFQVM3K3FrRXo1T3Q1YWdISmM3V0NkWTk0V3M2MXNVUmNYNW5HOFVFTEdCQUhaM2krM1Z1bEF5VDBuS05OejRLMkxCSEJXSmNUQlgxd3pmKy8vdS9qLzkrLy92ODcrOS9sOUxiaC9ML3V5TllpVHNXVjJMd3NqYUE2TXhUdXpGTXFteFc4SncvK0lwcGRYOHQvQ2xnaTFySTFTTjBVQy9yNnRYLzRsVWMyVlYxT1FSZVNlQ3NqVXBLWmNodzRYVWNqSGZ3NnJ5Q1YzUjhzNlZYbTY3dnA0bitsY1BWOWdKd21iS1FFc21ySmk5YzJ2a3dybThIRmJWWU5UYVJHcThEOTF0OW41K1UrYUQvaE50TjNIakMvbkMvdlVvR0ZTQ2tYUCtObFJjbUxVcUxiaVVCbDRMWWYxVS9DQ3Z3dGQzcnlDSDhnVW1HSVRBeGlIMU81cm5HVHo3eTFMdUZqbW5GR1ExVVd1TTdId2ZYdFdsMmZQRktrbFl3TlVwRjJJTC9UbWFSRVRqUWlNNVNKYWNJKzNHdjVNQlU4bFA1SW82Z1drYXdweXpORVZHcU9keDRZbE8xZEN2amJXRlpXYkNtZWlGS1BTbE1LdEtjTUZMcy9LUXh0Z0FIaTdOWk5DUTMyYkJBVzJtYkhmbFZaOHdYS2kxSktWSGtXMjBibllubDNkS1dKZVdKT2lYM29LUEJENlpiaTBadlNJdVdrdFVIQjhxRFI4RE1NaDFaZmtCTDlGUzl4NXIwaEJHTEo4cFVDSnYzTllIK0FlOHA0MG1aV2Q1bTVmaG9iRmpRZVF2cVRUNFZLV0lZZlJMMHRmYVhLaVZsNzVoSFJldVRKRWNxVmx1ZytlT0lJYzRiZEl5ZHRuMkswaU5aUHNZV1F2UWlvMnFiTzNPcUFsUEhERE9CN0RmakdFZlZGNTFGcXFOYWNkNlFtZ0ZLSnBNZkxwNURIVHY0d1hsT05LVlhGOXpUSnBEVjRtMXNZWnFKUGhvdGNzbGlaTTh5a3NLa0NrenBpWHQrRWNSUXZTUXFtQlM5V2RXa3hNVEpYUFN3OTRqcUkzdmFyQ2pReFRhempsTUg4alRTOGlsYVc4MDE0L3Z3QS9MTmErWWlGb3l5eDNzL0tzd1AzTzhRVzFqdHE0NXlUTS9EWDlhOE00dm9UVmFPMmVidncxRW9vRHcveWc2WTFmYVkrV3dyZFZzNVl0MGhRNUV3UmZZWFNGeHJheTFZdlNNK2tZbWxwTEcyLzltbTFNZm1iS0hYcjQ0SWg4blZLYjFNNTM3WkFOVWtDdGRzUFo4MEpWS1ZLYWJWSENhZGFMWGcrSVY4aTVHU3dwWnRpMGg2ZGlUYUtzOXNkcFVLRXBkN2pEVXBZbUh0aVgzM1NLaU8zdHV5ZGtheEE3cEVjOVhJUUVPZldKbHN6ajVZcEw1YktlUXlUN2FaU0JPYW12U0hsOHhzV3ZnbzI2SVAvYnFrKzBFSlV6K2dra2N2bFVseVBwMmtkS0Z0dDd5NWFDZGtzOVpKSmNGcDVaV2VhV0tndG5YTU4zT1J3R0xCRTBQdGtFSWVrNUZZMmFWc3NVWkh0c1dJdm5sak1WSnR1VklqcFp1cC81VkwxeVBPSFdXSGtPTWM2WXlTV01ja2N6RDVqVWoybWxMVnF1RmFNVThsZUdWYXFlWGlzK2FSUkw4em00V3VCazZjeVdmR014Z3RyOHVzZVFFeDdrL1B2Um9aeWQ5bmRlMUdVQ1Y4NGdNWDhPZ3UvQldlellQU1IyN2xselFuQTk3b28wcFl5eG9iWVVKZnNqK3lzVG05ekorUzRwazBUR285VlRHMEtqcVloVG1BTGZvRFpWS2xhMmI1eWh2MjQxUHhGYUxKczNpMDVLMEFBSWRjR3hDSlptVDNaZFQ3Q2xpUjdxK2t1cjdXZFFqeWdZdE9XUkw5QjhFNHM0TEk4S3BBajdiRTBkZzdETE9hWCtNR2VBaTBoTU1TU1daRXorUnVkWGJaQ3NHWVMwUXFpWGpIOVhRYmQ4c0NCK25JVlRxNy9UL0ZEUyt6V1k5cTdaMmZkcTF0ZExiNnYzaEtLVkRBdzVnamo2bzlyMXdIRlJPZEhjMThNSnA0U0oyVWN2dStpUTlFZ2tla1c4VkNNK3BzTTZ5Ky8yU0J5OHROTjRhM0wxTXpQK09Mc3l2RVNvNWdTN0lRT25JcU1tdmlKQlZjNnpiVkcxbjhlWGlBM2o0NmttdnZ0Smxld3dORHJ4azRTYkpPdFAvVFYvbElWSzl1ZVNoTmJiTUhmd25MVExMaGJadU83OWVjNVh2ZmdSd0xGSyt3MXI1WldXMTVyVkZackUrd0txTlJ2NUtxc0xOZnBHZ25vVVU2WTcxTnhFbU43TXlxd3FBUXFvSVVMT3cvTGJ1VUIyK3VFNzVnSnQra3ExcVk0TG94VitxUi96YWx1cGVhM0Q1K1dNZWFSSW4wc0FJNkREV0RoMTU4ZnFVYjRZaEF4aFJFYlVOMHF5eUpZa0JVNFYyS0FSWERUNjVnVzNnUnNpdjd4U1BZRUtMd3pncmlXY1dnUHIwc2JabnY3bTFYSE5GVzZ4UGRHTlpVZHhGaVVZbG1YTmpEVld1dTdMQ2tYL25Wa3JYYUpoaVlrdEJJU0MyeGdCWFFuTkVQK2NwdFdsMWVHNjJhN0NQWHJucmtUUTVCUUFTYkVxVVpXTURpWlVpc0t5SERlTEZPYUpJTFVvNWY2aUR0NFpPOE1scWFLTHRvMEFtVEhWVmJrR3V5UGExUi95d1pzV1JvUkRvUmROTU1Id1lUc2tsTVZubEFkMlMwMjgyYmdNSThmaUpwRGg2OU9TTDZLM3FibzIwS2ZwTk11cm5ZR1FTci9zdEZxWjdoWXN4S2xMbktBS2hzbUI4QUlwRVE0YmQvTnJUTFRYZWZzRTZDaFJtS1dqWEtWZ3BHb1BzOEdBaWNnS1Z3NEswcWdEZ3kxQTZoRnExV1JhdDNmSEYrRmtVK2I2SDROV3BPVTNLWFR4ckliMnFTSEFiK3FobThoaVNST2kvOW9mYXBqeGh5S3h4bnRQcGdlNktMNVo0K1dCTVlrQWNFNiswSGQzWWgyekJzSzJNVjNpVzBZNmN2T0Nyb1hsUmIyTU1KdGRXeCszZGtGekdoMlBlM0RaOVFwU3FwYVIvckUxSW1PckhxWVl5Y2NwaUxDMjJhbUpJalJXVkFoZXJUZnBRTG1vNi9LMnBuYTg1R3JEdVFQbEgxVHNhcjhpc0FKYlhMYWZTd09vZjRnZzlSa0FHbS9vWXBCUVFpUFVveURrMkJDUTFrK0tJTHE0OEVyRm80V1NSaEhMcS95N21ndzMrTDg1UHBQNnhXcjZjZ3A5c09qWWpLYWdPcnhGMTQ4dWh1YVd0amV0OTUzZmgxSVFpRXpnQytkMklnQkNjVVpxZ1RBSUNtMmJSOG9DakRMQnNtZytUaHloZkQrekJhbHNLQlkxQ2U1NFkvdDljd2ZiTHU5U0Z3RWdwaGZvcE5BM3lOeGd5RGFmVU0zbVlUb3ZaTmdQR2RkNFpGRk9qMXZ0ZkZXM3U3TitpSEVOMUhrZWVzRE1YS1B5b0NEQ0dWTW80R0NDRDZQQmhRM2RSWklIeTBZLzNNYUU1elU5bVRDcnd3blpvanRFK3FOcE1Ta0pTcG1HZTBFekx5RmVsTUpxaGZGUTdhNTB1WHhaOHBDYzJ3eHRBS1dnSG9lYW1SMk83UiticTdJYlBZSXRPMGVzZFJnb1RhWTM4aFpMSjV5MDJvSVZ3b1Bva0dJenhBTUR1YW5RMXZuMldEUTAwUmg2bzVRT2FDUnU5OWZ3RGJRY04wWEF1cWtGcHhUL2NmejNzbEdSVm9rck5VMGlxaU1BSkZFYktTY1pkbVNrVFV6bkMwVStNZndGT0dkTGdzZXdSeVBLd0JaWVNteTZVMzI1aVVoQlFOeGJBQzNGTEtEVjlWU091UXBPT3VrSi9HQW11L3R5RWJYOURnRXA2ZHYxem9VMElxenBHNmdzc1NqSVlSVlBHZ1UxUUFRWVJnSVQ4Z0VWMEVYcjFzcWVoMkk2clhqdG1vQ1l5RURDZS9Qa0ZFaS9RNDhGdVQyOXA1NTdpTitMQ3drNUNLL0NaMldkQWRmUVpoMlo5UUdyelBMU05SajVpZ1VXemw5VmkwckNxSDhHMUtwNFFNTGt1d01DQXlwZHZpRFh5T0lrMEFIVE04SEJZS2gzYjAvRitEeG9OajRaZG9aZkNwUVZkblphcnFvTWFIV25NTE5WY3lldnl0R3NyWFFFb0lidWJxV1lObzdOUkh6ZGMwenZUMjFmV1Zpcmo3ZzM2aXk2cHhvZ2Z2Z0hwMXhIMVR1cmJ6OFF5eUhuWGVCSmljcFlVY3RiekFwd3paMUhUK0ZQRVhNQWdVWmV0Z2VHTXd0NEcrREhpRFQyTHUrUFQyMWZqSkNBZlYxNmEvV3UxUHFPa1VIU1RLWWhXVzZQaGhIVWxOdFd6Rm5BN01iWStyNjR2a3dkcGZOQjJKZldnV1hBdmt6ZDQySzRsTjl4N1dyZzRrSUtnWENiNG1jVzU5NU1DUEovY1RmUEFNUU1GV3ducXdkZTR3OEhaWUpGcFF3Y1NNaGpWejRCOHA2bmNTQ04xWDRrbHhvSUg0Qk4ySjZ0YUJNajZsSGtBT3M4SkpBbVhxNXhzUXRyUElQSUlwL0hHNmkyMXhNR2NGZ3FEWFNSRjB4UWcxNGQydXk2SGdLRTEzTFN2UWU1Mm9TaEY1SngxUjZhdnlMNHRoaFhRWkhmQzk0b1p6dVBVQktGWWYxVnZEYXhJcnRWNmROR1N4N0RPMGkxcDZDekJrdUFtRXF5V2NlUVk3RjkrVTBPYllEem9hMWlLYW8vY09EL3Y2UTlnSHJycjF1Q2VPazhmU1Q5TUcyM1VsMEttTTNyK1duNkhpNldBY0w3Z0VlYXlraWN2Z2p6a2pTd0ZzQVhJUjgxWng0UUo2b29zVnlKa0NjVCs0eEFsZENjaWhxdlRmOTRISFVQWFlwM1JFSWFSNGRocFFGNitGSzFIMGk5aTdQdmg4b3d1M2xPNFBUMWl1cXUrRGtMMkJqOStrZGZHQWcyVFh3MDNpTkh5b2J4b2ZMRTJpYmpzWURQZ2VFUWxSTVI3YWZYYlNHUWNuUGpJMkQrc2R0bXVRNzcxZGJBU1VzRG5kVTd0NThqcnJOR1J6SVN2d2lvQWxIczVGQStjQkU1Q2N6bmtkOE5NVjZCUjZrc25LTFBabk1VYXdSRFUxTVovaWIzeENka1RibEhLdTRibE5peWxINW4yMTN5TTB6dWJFaWUwbzRKaHpjZkF5M0g1cWgybDE3dUxvb0JOTGFPK2d6b25USDJ1RjhQUXU5RXlIK3BqR3NBQ1RNeTRjSHpzUGR5bVVTWFlKT01QM3lUa1hxdk8vbHB2dDBjWDVla0RFdTlQVWZCZVpPRGtGdUFqWENhR2RpNmV3NHF4SjhQbUZmd21QcGtnUWpRbFdxb21GWTZVa2ptY25BdEpHNzVFVlIrTnB6R3BQMUVmNXFVVWJmb3dyQzN6Y1NMWDNCeGdXRWdFeC92OWNQOEg4dTFNdnQ5L3JNRFlmNnNqd1UxeFNPUEJnekZFZUpMTVJWRnRLbzVRSHNVWVQ4WlJMQ2FoMjc1OTlFdXFvQzlQWWpZTzZhb0FNSEI4WDFPSHdFQVlvdUhmSEIzbnliMkIrU25aeE0vdncvYkN0T1JqTE1TeTVhWm9FcHZnZEd2bEpmTlBGVXUvcDdaNFZWSzFoaUkwL1VUdUIzWlBxNG9oRWJtN01udGdjMWV2RXRrbmFvc2daU3duREMyQmRNbWlicGVnNDhYOEl4bCsvOCt4WGRic2hRWFVQUHZ4OGpUM2ZrRUxpdkhTbXFiaGJsZk5GU2hXQXlRbkozV0JVNlNNWVNJcFREbUhqZExWQWRsQURkejlnQ3BsWnc2bVRpSHFEd0lzeGJtOUVyR3VzaVZwZzJ3OFEza2hLVi9SOU9qOFBGZUY0M2htVy9uU2Q5OW5aemh5akNYM1FPWmtrQjZCc0g0SDg2NldHeXY5RTBoVkF6UFlhaDJ0a1JmUVpNbVAycmluZk9lUWFsZ2Uwb3ZoZHVCakpzOWExR0J3UmVlcmNlaWZ5NDljdE9oNS82NUFUWXVNc0FrVmx0bXZUTEJrNG9IcGRsNmkrcDhEb05qNEZiMnZoZEZZZXIySlNFaWxFd1BkNW41ek5vR0JYRWpyZWcvd2gyTkZuTlJhSVVIU09YYTRlSlJ3eWdab1g2dm5XbnFWZENSVDFBUnhlRnJOQkordHNkb29Nd3FuWWhFN3pJeG5EOHBaSCtQME51MXdXeENQVEFEZk5XbXF4NjI2SUJKSnE2TmVhcGNHZU9tYnRYdmwwVGVXRzBZN09HR1Y0K0VIVHROQklUNVdkMEJ1amw3aW5YZ1pnZlhUTTVlZkQzcURUSjU0Tzl2M0Jrdit0ZElSbHExa1hjVkQwQkVNaXJtRnhnbE5QdDVwZWRiMUFueHVDWU1DaFV5a3dzVElXcVQyM1hEcHZUaUtFcnUxY1RjRU1lbmlCK0hRRGVoeFBYTm1rb3RGZHdVUG5pbEIvdTROeDVYYzZsOEo5akgxRWdLWlVVdDh0OGN5b1psZURCRXQ4b2liRG1KUkFvTUtKNU9lOUNTV1M1Wk1FSnZhY3NHVmRYRFdqcC9ZcGU1eDBwOVBYQjJQQXd0MkxSRDNkK2Z0TmdwdXl2eGxQOHBCODRvQjFpNzN2QVZwd3lybVhXNzJoZlc2RHpuOUprajQrKzBWUTRkMEtTeDFBc0RBNE90WFhEbzYzL3crR0QrekM3dzVTSmF4c21ubFlSUTRkZ2RqQTd0VGwyS05MbnBKK212a29EeHR0MWE0b1BhWDNFVnFqOTZvOXNSS0JRcVU3Wk9pdXBlQUl5TE1EK1kzWXdIeDMwWFdIQjVDUWl3N3EzbWoxRURsUDJlQnNaYno3OWF5VU1ieUhRN3M4Z3U0TGdpcDFMaUdKajdOUWo5MDUvK3JnVVlLQUE1cWRybEhLSWtuV21xZnVSK1BCOFJkQmtEZy9OZ25sVDg5RzcyaDJOdnlTbmo3VXlCd0QrbWkvSVdzMXhXYnh1VndVSVZYdW41Y01xQnRGYnJjY0krRElManNWUWc2ZWVxMGl0aVJmZWRuODlDdnlGdHBreGFhdUV2U0FOdVptQjFwOEZHUGJVOTRKOW1lZHdzWjlIa1VZam1JN09INUh1eGVuZExieFRhWXJQdUlmRTJmZlhGS2hvTkJVcDMzSHNGQVhtQ1YvVnhwcTVBWWdGb1JyNUF5OTNaTFJsZ2FJUGpoWmpYWlpDaFQrYUU1aVdBWE1YMG9TRlFFdHdqaXVoUVFJdFRRWDVJWXJLZktCK3F1ZVROcGxSMUhvZmxvNS9JNmFQUG1BQ3dRQ0UyalRPWW81RHoxY3M3U29kMEtURy8za0VER2sza1VhVUNPTjE5eFNKQ2FiM2tOcFdaaFNXa084bCtTcFc3MFduM2cwY2lPSUpPNUpYbWE2ZGJvczZqeWlzdXhYd1VVaGoyKzF1R2hjdnVsaUt0V3dzVVR3NGdpMWMvZGlFRXBaSG9Lb3hUQmVNRG1oUGhLVHg3VFhXUmFrVjhpbUpSMzU1RGNJSGtSOUlSRUh4b2hQNFRieVI1THRGVTI0dW1SUFJtRVlIYnBlMUxnaHl4UHg3WWdVSGpOYmJRRlJRaGg0S2VVMUVhYlh4OEZTM0pBeHAycndSRG9lV2tKZ1dSVVNLdzZnR1A1VTJQdU85VjRadWlLWEdHekZRdVJ1Zit0a1NTc2JCdFJKS2hDaTNFTnVMbFhoUGJqVEtENGRqWFZuZlhGZHM2WmIrMVhpVXJSZnlheUd4SnExK1NZQkVmYktsZ2ppU21rMG9yZ1RxelNTK0RaNXJUcXNKYnR0aU50cCtLTXFHRTJBSEdGdzZqUXFNNXZENnZNcHRtWFY5T0FqcTQ5VWYvTHg5T3BhbStIbjVPOXA4cW9CQkFRaXh6UVo0ZU5Wa085c1B6SkFNeVIxeTQvUkNRUTFzMHBWNUtBVTVzS0x3M3RrY0ZiSS9KcXJqQ3NLNE13K1c4YW9kNGxpb1l1YXdVaUN5VldCRS9xUGFGaTVibmtncGZ1L2FlNDcxNzRySTFmcVFvVGJXMEhyVTZGQWVqcTdCeU0wVjR6a1pUZzAyL1lKSzJON2hVUVJDZVo0QklnU0VxZ0Q4WHNqekc2TElzU2J1SG9JZHovTGhGemJObjFjbGNpMU5IV0owLzYvTzhISk1kSXBFWmJxaTFScnJGZm9vL3JJLzd1Zm0yTVBHNWxVSTBJWUo0TUFpSFJUU09GSjJvVHZlckZIWVhUaGtZRklveUZ4NnJNWUZnYU9LTTR4TldkbE9uSWNLYi9zdXB0cHRnVE9UZFZJZjRZZ2RhQWpKbklBbTRxTk5ITlFxcUF6dmk1M0dreVJDRW9zZVVCckhvaFpzalVia1I4Z2ZLdGMvK09hNzJsd3hKOE1xNkhEZkRBVGJmYkpoemVJdUZRSlNpdzF1WnBySGx6VWY5MFdncUc3NnpPMGVDQjFXZFB2MUlUNnNOeHhoOTFHRUwyWXBnQzk3aWtGSHlvYUg5Mm5kd2R1cVo2SVlqa2cyMERYMzNNV2RvWms3UWtjS1VDZ2lzSVlzbE9hYUx5dklJcVJLV1FqMTZqRTFEbFFXSkphUG9wV1RKalhmaXhFalJKSm84ZzQrK3d1UWpicStXVllqc3FDdU5JUVczWWpueEtlMk01WktFcXErY1g3WlZnbmtic1UzUldJeVhBMXJ4djRrR2Vyc1lKakQvL2F1bGRYR21jRWJjZlRlRjE2WTE3MDhGQjFISWZtV3Y2ZFNGaTZvRDRFK1JJakNzRVora1k3ZEtud1JlSkp3M3hDakt2aTNrR040MnJ2eWhVbEl6MEJwK2ZOU1Y1eHdGaXVCekcyOTZlNXMvb0hvRnRVeVVwbG1QdWxJUGwrZTFDUUlRVnRqbHpMenp6YlYrRC9PVlF0WXpvNWl4dE1pNUJtSHVHNE4vdUtmSms1VUlSRXA3KzEyb1psS3RQQm9tWFN6QVkwS2d0YlB6elpvSFF4dWpuUkVVZ0JVK08vaktLaGd4VmhSUHRicXlIaVVhUndScEh2N3BnUlB5VXJuRTdmWWtWYmxHbWZUWTI4dEZDdmxJTEMwNFR6M2l2a05XVmF6QStPc1lyeHZSTS9oaU5uOEZjNGJRQmVVWkFCR3g1Uy94RmY5TGJibWsyOThYN2lGZzJ5ZWltdnNRcXFKK2hZYnQ2dXErWmY5akMrSmN3aWNjZDYxTktRdEZ2R1dyZ0ppSEI1bHdpNmZSOEt6WVM3RWFFSGYva2E5RUM3SDhEK1dFYTNURUFDSEJrTlNqL2NYeEZlcTRSbGxDK2ZVRm0yeHRzdFlMTDJub3MxRGZ6c0M5dnFERGRSVmNQQTNIbzk1YUVRSHZFeFZUaFhQcXltNjVsbGtLbGZSWGJQVFJpRGVwZHlsSGptVjlZVFdBRWpsRDlEZFFuQ2VtN0FqL21sNThPbjM2NjM5MjIxNEI1enJtUXovOXlTRzJtRnFFd2pxNXNGbDV0WUpQdzVoTno4bHlaUFVUc3I1RTBGMkM5Vk1Qblpja1dQNyttYndwL0JpTjdmNGtmN3Z0R25aRjJKR3ZqSy9zRFgxUnRjRlk1b1BRbkU0bElBWVY0OVUzQzlTUDBMQ1kvOWkvV0lGSzlPUmp6TTlrRy9LR3JBdXdGbWdkRXBkTGFpcVFOcENUR1pWdUFPNjVhZmtZMWgzM2hycXlMalp5OTJKSzMvdHdkajlwYWZGY3dmWE9ObVBRV2xkUGxNZTdqbFAyNEpzMHY5bThiSUo5VGdTMkl1UnZFOVpWUmFDd1NKWU90QWZMNUgvWVM0RmZ6S1dLYmVrK0dGdWxoZXlLdERObEJ0cmRtcitLVStpYkhUZGFsekZVbU1meHczZjM2eCszY1FiSkxJdFNpbFc5Y3V2WkVNakt3OTg3anlrWlJsc0gvVUkrSGxLZm8ydEx3ZW1CRWVCRnRteEYyeG1JdEEvZEFJZlErclhubTg4ZHF2WGErR2FwT1lWdC8yd2FGaW1YRngzVEMyTVVpT2k1L01sKzNyai9ZVTZJaHgyaFhnaURYRnNVZVFrUkFENndGM1NDUGkyZmxrN1h3S0FBNHpib3F5bnVFTEQzMTJFSjg4bG1ERVZPTWExVy9LL2E4dEd5bFpSTXJNb0lMeW9NUXp6YkRKSE5acmhINzdMOXFTQzQySFZtS2laNVMwMDE2VVRwODNnT2hDd3o5WEl0SzlmZ1hmSzNGNWQ3blpDQlVla29MeHJ1dFFhUEhhMTZSanNhMGdUcnp5anFUbm1jSWNyeGc2WDZka0tpdWN1ZGMwREQ1VzRwSlBmMHZ1RFc4cjUvdXcyNFlmTXV4RlJwRDJvdlQybUZYNzl4SDZKZitNVmR2MlRZcVI2Lzk1NVFnVlBlM0pDRC9XakFZY0xBOXRwWGdGaUVqZ2UySjVsamVJL2lVemc5MUtRdUhrSUk0bW1IWnhDM1hRT1JMQUM2Rzd1Rm41TE9tbG5Ya2pGZG9POTc2bW9OVHhFbFM4SGR4V29QQWtqam9jRFIxMzZtMmwrZjV0NnhhYU5nZG9kT3ZUdTByaWV2bmhOQUI3OVdOclZzNkVzUGdrZ2ZhaEY5Z1NGenpBZCtySlNyYXc1TWxsaXQ3dlVQNVl4QTg0M2xVcHU2LzVqQVIwUnZINHJSWGtTZzNuRStPNUdGeWZlK0wwczVyM2swNUZ5Z2hTRm5LbzRUVGdzMDdxajRuVExxT1lqNnFhVzlrbkpURGtGNU9GTVlibUNQKzhIMTZUeTQ4Mk9qdkVSVjZPRnl3MDQzTDl3M2hvSmk0MDhzUitTR28xV3ZpWFV1OGQ3cVMrZWhLanBLd3hlQ3Roc20yTEJGU0ZlZXR4MHg0QWFLUHh0cDNDeGRXcUNzTHJCMXMvajVUQWhjMWpOWnNYV2w2dGpvL1dEb2V3eHpnOFQ4Tm5oWjFuaVV3TC9uaGZ5Z0xhbkNuUndhRkdEeUx3K3NmWmh5WjFVdFlUcDhUWUI2ZEU3UjNWc0tLSDk1Q1V4Sjh1OE4rOXUyLzlIVU5LSFczeDN3NUdRcmZPUGFmazJ3NXFacThNYUhUMGViZVkzd0lzcDNyTjlscnBJc1c5YzF3czNWTlYrSndOejBMbzkrVjd6WnI2R0Q1NldlNmdXVkl2dG1hbTVHUFBrVkFicjc0cjZTd2h1TCtUUlh0Vy8wcGd5WDE2Vk5sNC9FQUQ1MFRuVVB1d3JXNk9jVU8yVmxXWFMwaW5xODcya2s3R1VsVzZvL296RktxK1NpcDZMY1R0U0RmRHJQVGNDSGh4NzVIOEJlUm9uK0tHMndSd3pmRGdXaEFMbWlXT01PNmgzcG0xVUNaRVBFalNjeWs3dGRMeDZXcmRBMk4xUVRQRU52Tm5oQ1FqVzZrbDA1Ny9xdjdJd1JyeUhyWkJDd1ZTYkxMbkZSaUhkVHdrOG1sWWl4RnQxc2xFY1BEN0ZWaHQxM0h5cVZleUQ1NUhPWHJoMkVsQXhKeWluR2VvRnp3S0E5MXpmcmRMdkR4SlNqem1JbWZ2VGlzcmVJMjVFRGNWZkdzbXhMVmJmVThQR2UvN05tV1dLalhjZFRKMTFqQWxWSVkvQnYvbWN4Zy9RMTB2Q0h3S0cxR1cvWGJKcTVueERoeUxxaW9ybjdXZDdWRVZMOFVnVnpwSE1qUStaOERVZ1N1a2lWd1dBS2tlVGxWVmVaN3QxREduQ2dKVklkQlBaQUVLNWY4Q0R5RE5vN3RLNC81REJqZEQ1TVBWODZUYUVoR3NMVkZQUVNJNjhLbEJZeTg0RmlldmRVOWdXaDZYWnJ1Z3Z0Q1ptaTl2ZmQ2ZGI2VjdGbW9FY1JIbkczNlZaSDhONGFaYWxkcTl6WmF3dDF1QkZneFlZeCtHcy9xVzFqd0FOZUZ5K0xDb3lteU02emdHN2o4Ykd6VXlMaHZyYkprVFlBRWRJQ0ViNGtNS3VzS1Q5VjNlSXdNTHNqZFVkZ2lqTWMrN2lLcnIrVHhyVldHMFUrVzk1U0dyeG54R3JFNGVhSkZmZ3ZBalVNNFNBeThVYVJ3RTlqNlpRSDVxWUFXR3RYQnl2RGlMU0RmT0QweUZBM1VDTUtTeVEzMGZ5eTFtSVJnNFpjZ1pITE5IV2wrYzlTZWlqT3ZiT0p4b1F5N2xUTjJyM1k4cDZvdnh2VVk3NGFPWWJ1VmV6cnlxWEE2VStmY3A2d1NWOVg1L09aS1AxOHRCNTZVYTBnTXl4Skk3WHlOVDdJcnFOOEdzQjlyTC9rUDVLTXJqWHhncUtMRGErVjVPQ0g2YTVobU9XZW1NVXNlYTl2UWw5dDVPY2U3NlByVHlUdjUwRXhPcW5nRTNQSFBmU0wvL0FJdFBkQjdrR255VFJoVlVVRk5kSkoyejdSdGt0WndnbVF6aEJHL0c3UXNqWm1KZkNFN2s3NUVtZElLSDd4bG5tRHJOTS9YYlRUNkZ6bGRjSC9yY1JHeGxQcnY0cURTY3FFN0pTbVFBQkpXcVJUL1RVY0pTd29RTSsxanZEaWd2cmpqSDhvZUsyaW4xUysveU8xajh4QXdzL1Q1dTBWbkl2QVBxYUUxYXROdU4wY3VSbGlMY0gyajBuVEw0SnBjUjd3OVF5YTBKb2FIZ3NPaUFMTENDelJrbDFVVUVTeit6ZS9nSVhIR3REd2dZcks2cENGS0oxd2ViU0RvZzR6VGxQa2dYWnF4bFFEaVlNamhEcHdUdEJXMld4dGhXYm92OWR0Mlg5WEZMRm1jRitlRWMxVWFRNzRncVppWnNkajYzcEgxcWN2M1Z5OEpZY2lvZ0lWS3NKOFl5M0o5dy9HaGpXVlNRQW1yUzBCUE9XSytSS1YrMGxXcVhnWU1uSUZ3cGNaVkQ3elBTcDU0N2k5SGxmbEI4Z1ZuU1RHbW1xMUNsTzA4MU9XL1VIMTFwRVFNZmtFZERGempMQzFDZG8vQmRMM3M3Y1hiOEorK0h6ejFyaE9VVlpGSVBlaFJpWjhWWXU2KzdFcjdqNVBTWnU5Zy9HQmRtTnpKbXlDRDl3aXN3ajlCWncrVDNpQnJnODFyZTM2aWhNTGpvVkxvV2MrNjJhMVUvN3FWWDVDcHZUVkY3cm9jU0FLd3Y0Y0JWcVptN2xMRFMvcW9YczRmTXMvVlFpNkJ0VmJOQTN1U3pLcFFmakgxbzN4NExydmtPbjQwemhtNmhqZHVEZ2x6SlV3QTBQT2FiZ2RYSW5kcDlmemhPbzIzUGUrUms5R1NMWDBkNzFQb3FyeThOUURUek5sc2ErSlRORzkrVXJFZituZ3hDakdFc0RDYzBieit1ZFZSeUhRSTFqbUVPM1MrSU9ReWNFcTdYd0I2ejN3Zk1mYTczbThQVlJwK2lPZ3RaZmVTQmwwMXhuMDN2TWFRSmt5ajd2bmhHQ2tsc0NXVlJVbDR5KzVvTlV6UTYzQjJkYmpERjN2aWtkLzNSVU1pZlBZblg1R2xmdWsyRnNWLzdScWpJOXlLVGJFOHdKWSs3NHA3cVhPOCtkSVlnanRMRC9OOFRKdFJoMDROOXRYSkE0SDU5SWtNbUxFbGd2cjBRNU9DZVZmZEF0KzVoa2g0cFFnZlJNSHBMNzRYYXRMUXBQaU95SFJzL09kbUh0QmY4bk9aY3hWS3pkR2NsSU4xNmxFN2tKK3BWTWpzcE9JKzUrVHFMUk82bTBacE5YSm9aUnY5TVBEUmNBZkpVdE5aSHlpZy9zMnd3UmVha0ZnUFBKd0NRbXUxSTMwL3RjQmJqaStOYTUzaTFXMU4rQnFvWTdaeG8rVS9NOVh5SjRPazJTU2tCdG9Pcnd1aEFZM2EwM0V1Nmw4d0ZkSUcxY04rZThob3BUa2lLRjA5M0t1SC9CY0IzOXJNaUdETG42WFZoR0tFYWFUL3ZxYi9sdWZ1QWRwR0V4ZXZGMStKOWl0a0ZoQ2Z5bVdyOXZHYjNCVEs0ajU5OHpSSDcrZStNVTltYXJ1WnFiMHBrR3hSRFJFMUNENFo4TFY0dmhnUGlkazV3MkJxODE2ZzNuSHcxLy9qM0pTdHo3TlI5SElXRUxPOFRNbjNRclAvelpwLy8rRHY5cDQyOS9vZ3YrR0FUUituL1VkRituczl4TmtYWlFKWFk0dDlqTWtKTlVGeWdBdHpuZFh3anNzK3lXSDlIQW5MUVFmaEFza2RaUzJsMDFITFd2N0w3dXM1dVRINDA5cHFpdHZmU09RZy9jK1p0N2s4NzlQM0s5K1dWNjhuNyszY1pmdVJkL2REUFAvMDNybitkKy9uQnZXZmdEbHQ4K0x6anFKL3Z4M0NuTk93aVhoaG83NzhDOTZpRCsxVEJ2UlpZZVArRUg4MUxFMHZWd09Pcm1DTEIzaUt6STF4K3ZKRXNyUEg0dUYwVUI0VEo0WDN1RGZPQ28zUFlwWWUwTUY0Ym91aDBEUS9sNDNmeFVGN1krZHBXdXZUU2ZmQjB5TzJVUVVFVEkvTHdDWkUzQnZuZXZKN2M5elVsWTNINTh4emtlNkRORkRRRzhuMFd0RE40TEFZTjRub2dLYXYxZXpPZksveit0NnRzQ1RwK2RoeDR5bWpXdUNKazFkRVVpZkRQK0h5UzRpUC9WZzlCMmpUbzlMNE5iaUJ1RFM0bnV1SFc2SCtKRFFuMkp0cVJLR2tFUVBFWUU3dXphelhJa2N4SUFxVXExZXNhc1pCRVRsRVpZN3k3Sm8rUm9WL0lzalk5ZUlNa1V2cjQySGMweHF0c2F2WnZoejFPTHdTeE1PVHVxemxoYjBXYmRPd0JIOUVZaXlCamF0ejQwYlV4VEhiaVd4cUowdW1hMTlxaFBydXZjV0psYmlTU0g0OE9MRERwYUhQc3p2eWN0NDFaZlR1MTArdmpveDZrT3FLNnYwSy9nRVBwaEV2TWwvdndTditBNEhobTM2SlNQOUlYVHlDWkRtNGtLc3FENWF5OGIxU2FkL3ZhaXlPNU4vc0RmRVY2WjRxOTVFK3lmanhwcUJvQkVUVzJDN3hsNHBJTzJiRE9EREZ1clVQd0U3RVdDMlVwbHErQUhtQkh2aXIyUFNna1IxMi9SeTY1TzBhWnRRUGVYaTltVGxGL1dqNUdRK3ZGa1l5aFhzTFRqckJTUDlod2s0R1BxRFA1ckJuNS9sOGIwbUxSQXZSU3pYSGMyOTNiczNzOEVzZEUzbTJleHhpZFdWQjRqb0hSK1MrZHo1L1crdjAwSzNUcU4xNENEQnRoOGVXY3NUYml3WFBzeWdIZEdpZDBQRWR5NkhIbTJ2L0lVdVY1UlZhcFltekdzWDkwbXBuSWROR2NPT3E2NERiYzVHVWJZcEQ5TTdTKzZjTFkvL1FtanhGTFA1Y3VURlJtM3ZBNXJrRlpyb0ZuTzNiakhGMzV1VTNzOG12TDdUcDlueVRjNG15bVRKNXNMSXA3dW1TbkdrTzIzZmFlaHR6M21tVFM3ZmJWeDVyUDd4M0hYSWpSTmVxL0EzeENzOUpOQjA4YzlTOUJGMk8zYk91cjBJdHNsRnhYZ1JQZGFhcEJJaTRkUnBLR3hWejdpcjY5dC9iYzlxVHhqdnRPeUdPZmlMR0RoUjRmWXl3SHYxV2RPcGx4SVY4N1RwTEJ5M1djMFFQMFA5czRHN0ZCTk9kSVRTL3RlcDNvM2gxVEVhNVhERGlpN2ZXdHFSelVFUmVQMmZieHo3YkhXV0pkYklPeE9VSlp0SXROWnBURlJmajZ2bTlzWWpSeFFWTytXVGRpT2hkUGVUSis4WWlyUHZvZUw4OGw1aUxZT0hkM2IvSW1rcSsxWk4xRWwzVWlraGZ0dXRlRVl4ZjFXdWpvZjhQcjRJQ1R1NWV6WnlaNHRIUU14bHpVSExZTzJWTU9vTk1HTC8yMFM1aTJvMm9iZmsrOHFxZFI3eHpiUkRiZ1UwbG51SWd6NExlbFE1WFM3eGJMdVNRdE5TOTV2M1pVT2RhVXgvUWQ4cXhDdDZ4ZjJFNjJ5Yi9IdWtMTzZSeW9yVjhLZ1lsNVlOYzc1eStLdmVmcnhZK2xjLzY0eTlrdldQMGEwYkR6L3JvanErUldqTzA2V2VydVdxTkZVN3IzSFBJY0xXUnFsOElDWnN6MkxzL3FPbS9DTG42KytYK1FmN21Hc3BZQ3Jab2QvbHBsNlJ3NHhOL3l1cThncVY0QjZhSGsxaFZFMVNmSUx4V3U1Z3ZYcWJmQVJZUXBzcGN4S3AxRi9jOFhPUHprWnZtb1N3K3ZFcUJMZHJxMWZyM3dBUHY1Tm5NOWk4RitqZEF1eGtQNVo3MWM2dWhLM2VubG5HeW1yN1VzV1pLQzEycWdVaUc4WFhHUTlteG5xejRHU0lseWJGOWVYbWJxajJzSFgrYTFqZjBnUm9PTkhSZFJTcklxMDNUeTg5ZVExR2JWL0JrK2R1NCtWMTV6bHMrdnZFUnZaNEU3WmJueFdUVmpEamI0by9rOGpsdzQ0cFRJclVHeHh1SnZCZU8raGV1aE9qcEZzTzZsVkovYVhuSkRhL2JNMFFsMWNMYlhFL1BidjNFWjN2ajNpVnJCNWlyanVwWlR6bG52Njc3TnJJOVVOWU5xYlBncC9IWlhTK2xKbWs4N3dlYys3WU94VERvMmF3MmwzTmZEcjM0Vk5sdnFXSkJrbnVLN29TbFo2L1QxMHp1T29QWk9lb0lrODFOK3NMODQzV0oyUTRaMGZaM3Njc3FDL0pWMmZ1aFdpMWpHVVJTS1pWNjM3bGY1M1hubngxNi92S0VYWTg5YVZKMGZ2OTFqR2RmRytHNCtzbml3SGVzNGhTK3VkT3I0UmZoRmhHL0Y1Z1VHMzVRYVUrTWN1TG1jbGI1WldtUitzRzVWNm5mK1B4WXpscm5GR3hwWmFLOGVxcVZvME5mbUFXb0dmWERpVC9GblViV3Z6R0RPVHI4YWt0T1pXZzRCWXZ6NVlIMTJaYmZDY0d0TmsrZERBWk5HV3ZIb3YrUElPblk5UHJqZzhoL3dMUnJUNjlzdWFNVlo1Yk51SzAwbFNWcG5xU1gxTk9OLzgxRm9QOTJyWW5kaW9ud2dPaUE4V01mNHZjOGwxNUtxRUVHNHlBbTIrV0FONUJyZnUxc3E5c3VXWXFnb2FqZ09ZdC9KQ2sxZ0M4d1BrSytYS0N0Ulg2VEF0Z3ZybnVCZ05SbW42SThsVkRpcE9WQjlrWDZPeGtwNFpLeWQxTTZHajgvdjJVN2srWVFCTDk1S2I5UFFFTnVjSmIwSmxXM2I1dE9iTjdtL1oxajFldjM4OGQ3bzE1emdYc0k5Q2lrQUdBVmlSNmxrSnY3bmI0QWs0ME0yRzhUSjQ0N2tOK3B2ZkhpT0ZqU1VTUDZQTStRZmJBeXdLSkNCYXhTVnhwaXpIc2VaVXlVQmhxNTl2Rndya3lHb1JpSGJvMGFwd2VFWmVTTHVOaVErSEFla09uYXJGZzAwZFpOWGFQZW9IUFRSUjBGbUV5cVlFeE9WYWFhTzhjMHVGVWg3VTRlL1V4ZEJtdGhsQkRnZzI1N1EzM2oxaEE3SFR4U2VUVFN1Vm5QWmJnVzFub2R3bUcxNmFLQkRLeEVldHY3RDlPak8wSmhyYkpUbm9lK2tjR29ESmF6RlNPOC9mVU45SnkvZzRYSzVQVWt3MmRnUERHcEpxQmZoZTdHQStjanpmRS9FR3NNTStGVjluajlJQWhyU2ZUL0ozUUU1VEVJWXlrNVVqc0k2WlpjQ1ByNkE4RlpVRjRnOW5ucFZtalg5ME1MU1F5c0lQRDBuRnpxd0NjU0ptSWI1bVl2MkNtaytDMU1ERmtaUXlDQnE0Yy9ZYWk5TEo2eFlrR1MveDJzNS9mcklXMnZtRzJXcnYwQVBwQ2RnQ0E5c25GdmZwZTh1YzBPd2RSczRHOTk3M1BHRUJuUUI1cUtyQ1E2bTZYL0g3TkluWjd5LzE2NzQvWlhPVnA3T2V1Q1JrOEpGUzUxNlZIcm5IMUhrSVVJbFRJbGpqSGFRdEV0a0p0b3NZdWw3N2NWd2prM2dXMUFqYWE2eldleUhHTGxwazNWSEUyVkZ6VDJ5SS9FdmxHVVN6Mkg5ellFMXM0bnNLTXRNcU55S050TC81OUNwRkpraTVGb3U2VlhHbTh2V0FURVB3clVWT0x2b0E4akx1d096VkJDZ0hCMkNyNVY2T3dFV3RKRUtva0prZmM4N2grc05IVHZNYjBLVlRwNTI4NFFUUHVwb1d2UVZVd1Vlb2daUjNrQk1FU1lvMG1mdWtld1JWUEtoNStyekxRYjdIS2pGRklnV2hqMXczeU4vcUNOb1BJOFhGaVVnQk5UMWhDSEJzQXo4TDdPeXQ4d1FXVUZqOTJPTm4vQVB5SkZnOGh6dWVxb0pkTmo1N1JPckZiZmZ1Uy9YeHJTWExUUmdqNXV4WmpwZ1FZY2VlTWMyd0pyYWhSZVNLcG0zUWpIZnFFeFRMQUIyaXBWdW1FOHBxY1p2OExZWFFpUEhIc2diNUJNVzh6TTVwdlFpdCttUXg4WEdhVkRjZlZiTHlNVGxZOHhjZm1tL1JTQVQvSDA5VVFvbDVnSXo3ckVTRG1uclE0YlVSSUI0aVJYTURRd3hnZXgxR2d0RHhLcDJIYXlJa1IrRS9hRG1DdHRObTJDNmx5dFdkZk9WekQ2WDJTcERXalFEbE1SdkFwMXN5bVd2NG15MWJQQ0QrRTFFbUduTUdXaE53bXljSm5EVjJXclFOeE80NXVrRWIwOEFBZmZpellLVlVMcDE1STR2Yk5LNUR6V3dDU1VBRGZtS2hmR1NVcWlpMUwyVXNFOHJCN21MdUh1VUpaT3g0K1dpaXpIQkovaHdib2FCemhwTk9WdmdGVGY1Y0pzSGVmN0wxSENJOWRPVVViYitZeFVKV242ZFlPTHorVEhpOTFrelk1ZHRPNWMrZ3JYN3YwakVic3VvT0dub0lyZURJZy9zRk15RytUeUNMSWNBV2QxSVoxVU5GeEU4VWllMTN1Y200MFUyZmN4QzB1M1dMdkxPeHd1K0Y3TVdVc0hzZHRGUVo3VytubGZDQVNpQUt5aDhyblAzRXlEQnl2dEpiNktheDYvSGtMelQ5U3lFeVRNVk0xelB0TTBNSlkxNERtc1doNE1nRDE1RWE5SGQwMEFka1RaMEVpRzVOQUd1SUJ6UUpKMEpSMG5hK09CN2xRQTZVS3hNZmloSVE3R0NDblZ6Njk0UXZ5a1dYVHhwUzJzb0R1K3NtcnUxVWRJeFN2QXN6QkZEMWM4YzZaT29iQThiSmlKSXZ1eWNnSVhCUUlYV3doeVRnWkRReEpUUlhnRXdSTkFhd0dTWE8wYTFES2pkaWhMVk5wL3RhRS94WWhzZ3dlK1ZwS0VFQjRMbHJhUXlFODRnRWloeENuYmZveU91SklFWHkyRklZdytKalJ1c3liS2xVMmcvdmhUU0dUeWR2Q3ZYaFlCZHRBWHRTMnY3TGtIdG1YaC84Zmx5MWRvOEZJL0QwZjhVYnpWYjVoK0tSaE1HU0FtUjJtaGkwWUcvdWo3d2d4Y2Z6Q3JNdmRqaXRVSXBYRFg4YWUySmNGLzM2cVVXSU13TjZKc2phUkdOaitqRXRlR0RjRnlUVWI4WC9OSFN1Y0tNSnA3cGR1eHRENkt1eFZseXh4d2FlaUMxRmJHQkVTTzg0bGJ5ckF1Z1l4ZGwrMk44LzZBZ1dwby9JZW9BT2NzRzM1SUEvYjNBdVN5b2E1NUw3bGxCTGxhV2xFV3Z1Q0ZkOGY4TmZjVFVnekp2NkNiQis2b2hXd29kbGs5bkdXRnBCQU9hejV1RVc1eEJ2bWpuSEZlRHNiMG1Yd2F5ajNtZFlxNWd4eE5mM0gzL3RuQ2dId2pTcnBTZ1Z4TG1pVHR1c3pkUlVGSXNuNkxpTVBqTDgwOHZMMXVRaERiTTdhQTQzbUlTWFJlcWpTc2t5bklSY0hDSjlxZUZvcEpmeDl0cXlVb0diU3dKZXgvMGFERTNwbEJQR3ROQllnV2JkTG9tMytRL2JqZGl6UjIvQVMvYy9kSC9kM0c3cHlsMXFEWGd0T0Z0RXFpZHdMcXhQWXRyTkV2ZWFzV3EzdlBVVXRxVGV1OGdwb3Y0YmRPUVJJMmtuZUZ2Uk5NclNoeVZlRXVwSzFQb0xEUE1TZldNSUpjczI2N21HQjhYOUNlaFFDRjBnSXlocFAxMG1ieU03bHdXMWU2VEd2SEJWMXNnL1V5VGdoSFBHUnFNeWFlYkM2cGJCMVdLTkNRdGxhaTFHR3ZtcTl6VUthVXpMYVhzWEVCWXRIeG1GYkVaMmtKaFIxNjRMaFdXMlRscDFkaHNHRTdaZ0lXUkJPeDNaY3UyRHhnSCtHODNXVFBjZUtHMFRnUUtLaWlOTk9sV2d2cU5FYm5yazZmVkQrQXFSYW0yT2d1WmIwWVdTVFg4OE4raS9FTFN4YmFVVXBQeDR2SlV6WWcvV29uU2VBOHhVSzZ1N0RQSGdwcVdwRWU2RDRjWGc1dUs5RklZVmJhNDdWL25iK3d5T3RrK3pHOFJyUzRFQTBvdXdhMDRpQnlSTFN2b0pBMkZ6YW9iYlp0WG5xOEdkYmZxRXA1STJkcGZwajU5VENWaWY2K0U3NXA2NjVmYWlYOGdTMjEzUnFCeFRacWZIUDQ2bkY2TlNlbk9uZXVUK3ZnYkxVYmRUSDIvdDBSRUZYWkpPRUI2REh2eDZONmc5OTU2Q1lyWS9BWWNtOWdFTEpYWWtyU2krMEYwZ2VLRFpnT0NJWWtMVS8rR09XNWFHajhtdkxGZ3RGSDUrWEM4aHZBRTNDdkhSZmw0b2ZNL1F3azR4MkErUitueWM5Z051LzlUZW03WFc0WFJueVJ5bWY1MnowOWNUT2RyK1BHNitQL1ZiNFFpWGx3YXVjNVdCMXozbytJSmpsYnhJOE15V3RTelQrazRzS1ZiaEYzeGErdkR0czNOeFhhODdpaXUreFJIOWNBcHJuT0wyaDZ2VjU0aVFSWHVPQWoxczhuTEZLOGdaNzBUaElRY1dkRjE5LzJ4YUptVDBlZnJrTkRrV2JwQVFQZG85Mlo4K0huL2FMamJPekI5QUkvazEyZlBzOUhoVU5ESjF1NmF4MlZ4RDNSNlB5d043QnJMSjI2ejZzM1FvTXA3NnF6endldHJEQUJLU0drZlc1UHdTMUd2WU5VYks2dVJxeGZ5VkdOeUZCMEUrT3VnTU04a0t3bUptdXB1UldPOFhrWFhYUUVDeVJWdzlVeUlydEN0Y2M0b05xWHFyN0FVUkJtS242S2h6M2VCTjk2THdJSnJBR1A5bXIvNTl1VE9TeDYzMXN1eVQrUXVqRGQ0YmVVRnBaMGtKRUVuamxQK1gvS3Iya0NLaG5FTlRnNEJzTVRPbU1xbGoyV01GTFJVbFZHMGZ6ZENCZ1V0YTlvZHJKZnBWZEZvbVRpNmFrMHRGalhUY2RxcXZXQkF6alk2aFZySDlzYnQzWjlnbitBVkRwVGNRSW1lZmJCNGVkaXJqenJzTmlldnZlNFpUNEVVWldWM1R4RXNJVys5TVQvUkpvS2ZaWllTUkdmQzFDd1BHLzlyZE1PTThxUi9MVVl2dzVmL2VtVVNvRDdZU0Z1T29xY2hkVWcyVWVQZDFlQ3RGU0tneExTWjc2NG95NGx2UkNJSDZib3dQeFpXd3hORmN0a3NMZWlsNDdwZmV2Y0JpcGtrQkljNG5nWkcra3hHWjcxYTcyS1E3VmFaNk1aT1prUUpaWE02a2IvQWMwL1hrSng4ZHZ5ZkpjV2JJM3pPTkVhRVBJVzhHYmtZanNaY3d5K2VNb0tyWWpEbXZFRWl4SHprQ1NDUlBSemhPZkpadUxkY2J4MTlFTDIzTUE4cm5qVFpaNzg3RkdNbmtxbnB1ekI1LzkwdzFndFVTUmFXY2IwZXRhODE5OFZFZVpNVVNmSWh5dWM0L255d0ZROXVxbjdqZHFYaCs1d3d2K1JLOVhvdU5QYllkb0VlbE5HbzM0S3l5U3dpZ3NyZkNlMHYvUGxXUHZRdlFnOFIwS2dITzE4bVRWVGhoUXJsYkVRMEtwL0p4UGRqSHlSN0UxUVB3L3V0MHIrSERERzdCd1pGbTlJcUVVWlJwdjJXcHpsTWtPZW1lTGNBdDVDc3J6c2tMR2FWT0F4eXlTelpWL0QyRVk3eWROWk1mOGU4VmhIY0tHSEFXTnN6ZjFFT3E4Zk5zdGlqTVk0Slh5QVR3VGRuY0ZGcWNORGZEbyttV0Z2eEpKcGM0c0VadGpYeUJkb0ZjeGJVbW5pQ29LcTVqeWRVSE5qWUp4TXFOMUt6WVY2Mk11Z2NFTFZoUzNCbmQrVExMT2g3ZHdzL3pTWFd6eEViNE5qNGFGdW41eDRrRFdMSzVUVUYveUNYQi9jWll2STlrUGdWc0cyalNodFhreGZnVCt4empKb2ZYcVBFbklYSVExbG5JZG1WekJPTTkwRVh2SlVXNmEwblovN1hqSkdsOFRvTzNIL2ZkeG54bVROS0JaeG5rcFhMVmdMWENaeXdHVDNZeVM3NXcvUEFINUkvak11UnNwZWo4eFpPYlU5a1JFYlJBK2txam1LUkZhS0dXQW1GUXNwQytRTGJLUGYwUmFLM09YdkJTV3FvNDZwNzB3cy9lWnB1NmpDdFpVZ1F5NnI0dEhNUFVkQWdXR0dVWU5idXYvMWE2SytNVkZzZDNUMTgzK1Q4Y2FwU282bTArU2g1N2ZFZUcvOTVkeWtHSkJRTWowOURTVzJiWTBtVW9uRHk5YTh0ckxubkw1QjVMVzNObDhySlpOeXNPOFpiKzgwelh4cVVHRnB1ZDNRendiN2JmKzhtcTZ4MFRBbkpVOXBEUVI5WVFtWmhsbmEyeHV4SnQwYUNPL2YxU1U4Z2JsT3JiSXlNc3hUbFZVVzY5VkpQellVMkhsUlhjcUUybExMeG5PYlp1ejJ0VDlDaXZmVEFVWWZtekpsdC9sT1Bnc1I2Vk42NC94UWQ0SmxrL1JWN1VLVnYyR3gvQVdzbVRBdUNXS2hkd0MrNEhtS0VLWVpoMlhpczRLc1VSMUJlT2JzMWMxM3dxRlJub2NkbXVoZWFUVjMwZ3ZWWFpjb3V6SEtLNXp3ck41MmpYSkV1WDZkR3gzQkNwVi8rKzRmM2h5YVcvY1FKTEZLcWFzanNNdU8zQjNXbE1xMmd5WWZkSzFlN0wycE8vdFJ5ZTJtd3p3WlBmZFVNcmw1d2RMcWRkMkt2L3dWdG5weVdZaGQ0OUw2cnNPVis4SFhQcldIMkt1cDg5bDJ0ejZiZjgwaVlTZCtWNExST1NPSGVhbXZleFI1MjRxNHI0M3JUbXRGelF2QXJwdldmTFlGWnJiRnNwQnNYTlVxcWVuanhOTnNGWGF0WnZsSWhrN3RlVVBmSytZTDMyRjhNY1RuanYwQlpOcHBiK3ZzaG9DcnRMWGpJV3EzRUpYcFZYSWxHNlpOTDBkaDZxRW0yV013RGpEM0xmT2ZrR2gxL2N6WWMvMHFoaUQyb3pObkg0ODgyTVZWdDNKYlZGa2J3b3dOQ08zS0w1SW9ZVzV3bFZlR0NWaU91djFzdlp4N0ZienhLekE0ekdxQmxSUmFSV0NvYlhhVnE0eVlDV2JaZjhlaUp3dDNPWStNRmlTSmVuZ2NGUDJ0MEpNZnpPaUo3Y0VDdnB4N25lZzFSYzV4KzdteVBKT1h0MkZvaFZSeVh0RCsvckRvVE95R1lJbkplbFpNam9sZWNWSFVoVU5xdmRaV2cySjJ0MGpQbWlMRmVSRC84Zk9UNG8rTkdJTGIrVHVmQ285Y2VCQm0zSkxWbitNTzI2NzVuN3FpRVgvNlcrMTg4Y1lnM1puNU5TVGpnT0tmV0ZTQUFOYTZyYUN4U29WVTg1MW9KTFkxMVdJb1lLMGR1MGVjNUU0dENuQVBvS2g3MXJpVHNqVklwM2dLdkJiRVlRaU5Zcm1IMjJvTFFXQTJBZHdNbklENlBYOWI1OGRSMlFLbzRxYWcxRDFaK0wvRndFS1RSN29zT1pQV0VDUEpJSFFxUFVzTTVpL0NINVl1cFZQZkZBNXBIVUJjc2VzaDhlTzVZaHlXbmFWUlBabi9CbWRYVnVtWldQeE1QNWUyOHptMnVxSGdGb1Q5Q3ltSFlOTnJ6cnJqbFhaTTA2SG56RHhZTmxJNWIvUW9zeExtbXJxREZxbW9nUWRxazBXTGtVY2VvQXZReEhna0l5dldVNjlCUEZyMjRWQjYrbHg3NVJuYTZkR3RybU94RG52Qm9qdmkxLzRkSGpWZWc4b3dvZlBlMWNPbnhVMWlvaDAxNnMvVnVkdjltaFY5ZjM1QXQrU2gyOGgxYnBwOHhocjA5K3ZmNDdFbHgzTXM2aHlwNlF2QjN0MHZuTGJPaHdvNjYwY3A3SzB2dmVwYWJLN1lKZnhFV1dmckMyWXpKZllPanlnUHdmd2QvMWFtVHFhMGhaNXVlZWJoV1lWTXViUlR3SWpqKzBPcTBvaFUzemZSZnVMOGd0NTlYc0hkd0t0eFRRUTRZMnF6Nmdpc3hubTJVZGxtcEVrZ09zWno3aUVrNlFPdDhCdVB3citOUjAxTFRxWG1KbzFDNzZvMU4yNzR0d0p2bCtJMDY5VGlMcGVuSy9taVJ4aHlZOGp2WVY2VzFXdVN3aEg5cTdrdXduSk10bTdJV2NxczdIc255SFNxV1hMU3BZdFpHYVIxVjN0MGdhdW5pbkZQWkd0V3NrRjY1cnR0aTQ4VVY5dVY5S004a2ZEWXMwcGdCMDBTK1RselRYVjZQOG14cTE1YjlFbjhzejNqV1NzemNpZlphL051dWZQTm5OVGIwMzFwcHR0MCtzUlNILzdVRzhwemJzZ3R0M09HM3V0N0I5SnpETXQybVRadXlSTklWOEQ1NFR1VHJwTmNIdGdtTWxZSmVpWTlYUzgzTllKaWNqUmp0SlNmOUJaTHNRdjYyOVFkRHNLUWhUSzVDblhocGs3dk1Oa0h6UGhtMEV4Vy9WQ0dBcEhmUHlCYWd0WlFUUW1QSHg3ZzVJWFhzclFEUHpJVmh2MkxCNkloMTM4aVNEd3cxSk5IckR2elV4dnA3M01zUUJWaFc4RWJyUmVhVlVjTEIxUjNQVVh5YVlHNEhwSlVjTFZ4TWdEeGNQa1ZSUXBMN1ZUQUdhYkR6YktjdmcxMnQ1UDhUU0dRa3JqL2dPcnBuYmlESHdsdUE3M3hiWHRzL0w3dTQ2OGNSV1NXUnRnVHdsUW5BNDdFS2cwT2laRGdGeEFLUVFVY3NiR29tSVRnZVhVQUF5S2UwM2VBN01wNGdueUtRbW0wTFhKdEVrNmRka3NNSkN1eERtbUh6bVZoTytYYU4yQTU0TUloM25pdzVDRjdQd2lYRlpybkE4d09kZUhMdnZoZG9xSURHOVBESTdVbldXSHE1MjZUOHk2aXhKUGhrdVZLWm5vVXJ1T3BVZ09PcDNpSUtCamsreWkxdkhvNWNJdEhYYjFQSUt6R2FabFJTMGc1ZDNNVjJwRDhGUWRHWUxaNzNhYWUvZUVJVWVQTWM0TkZ6OHBJVWZMQ3JyRjRqVldINWdRbmVOM1M4dkFOQm1VWHJFY0tHbjZoSVVOOTV5MXZwc3ZMd2JHcHpWOUwwWktUYW42VERYTTA1MjM2dUxKY0lFTUtWQXhLTlQwSzhXbGp1d05ueTNCTlFSZnpvdkE4NWJlSTl6cjFBR05ZbllDVmtSMWFHbmdXVVJVcmdxUitnUnJRaHhXODFsM0NIZXZqdkdFUHpQTVR4ZHNJZkI5ZGZHUmJaVTBjZy8xbWN1YnRFQ1g0dHZhZWRtTkF2VHhDSnRjMlFhb1VhbEdmRU5DR0s3SVMvTzhDUnBkT1ZjYThFV0NSd3Yyc1NXRThDSlBXNVBDdWdqQ1hQZDNoNlU2MGNQRCtiZGh0WFp1WUI2c3Rjb3ZlRTdTbTVNTTJ5dmZVSFhGU1c3S3pMbWk3L0VlRVdMMHdxY09IOU1PU0tqaENISG13K0pHTGNZRS83U0JaUUNSZ2dveDBaWlRBeHJsek5OWFlYTDVmTklqa2RUNFlNcVZVejZwOFlEdDA0OXY0T1hHZGczcVRydExCVVhPWmY3YWhQbFpBWS9PKzdTcDBidkdTSGR5UThCMUxPc3BscU1iOVNlOFZBRTdnSWRTWnZ4YlJTcmZsK0xrNVFhcWk1UUpjZXFqaXRkRXJjSFhnLzNNcnlsalBTSUFNYWFsb0ZtMWNWd0JKOERObWtEcW9HUk9TSEZldHJnalE1Q2FodUtrZEg1cFJQaWdNcmdUdGxGSTh1ZkpQSlNVbEdnVGpiQlN2cFJjMHp5cGlVbjZVNUtacWNSb3lydHpobUo3L2NhZVprbVZSd0pRZUxPRzhMWTZ2UDVDaHBLaGM4SnMwRWwrbjZGWHFieDlJdGR0THRZUDkya0tmYVRMdENpOFN0TFpkRU5KYTlFeDFuT296MWtRN3F4b2laRktSeUxmNE80Q0hSVDBULzBXOUY4ZXBOS1ZvZXl4VVhoeTNzUU1Nc0pqUUpFeU1Pam1PaE1GZ09tbWxzY1Y0ZUZpMUNsZFU5Mnlqd2xlaXJFS1BXM2JQQXVFaFJaVjdKc0tWM0xyNWNFVEFpRnVYNU53NVVsRjdkMkhaOTZCaDBzZ0ZJTDVLR2FLU29WWVZsdmRLcFpKVlA1K05aN3hERWtRaG1EZ3NES2NpYXpKQ1hKNlpOMkIzRlkyZjZWWnlHbC90NGF1bkdJQWsvQkhhUytpK1NwZFJmbkIvT2t0T3Z5amluV05mTTlLc3I2V3d0Q2ExaENtZVJJNmljcEZNNG84cXVDTHNpa1UwdE1vWkkvOUVxWFJNcEtHYVd6b2ZsNG5RdVZRbTE3ZDVmVTVxWENRZUNEcVZhTDlYSjlxSjA4bjNHM0VGWlMyOFNIRWIzY2RSQmR0TzBZY1R6aWwzUWtuTktFZS9zbVExZlRiMFhicHlOQjV4QWV1SWxmKzVLV2xFWTBEcUpic256SmxReEpQT1Z5SGlLTXg1WHU5RmNFdjFGYmc2RmhtNHQrSnl5NUpDMVczWU84ZFlMc08wUFhQYnhvZEJndHRUYkgzcnQ5Q3AxbEpJazJyM08xWnF1OTRlUmJuSXoyZjUwbFdvbFl6dUtzajRQTW9rNGFiSExPOE5BQzg4NGhpWHg1Rnk1cFdLTzBiV0w3dUVHWGFKQ3R6bmhQNjdTbFE0eGpXSWZncTZFcFoyOFFNdHVaSzdKQzBSR2JsOW5BNFh0Rkx1Zy9OTE1vSDFwR3Q5SW9uQUpxY0VETHlINlREUk9jYnNtR1BhR0l4TW80MUlVQW5RVlBNUEdCeXA0bU9taDlaUU1rQkFja3NVSzU1THNaajdFNXo1WHVab3lXQ0t1Nm5IbURxMjJ4SS85WjhZZHhKeTRrV3BEMTZqTFZycHdHTFdmeU9EMFdkK2NCekZCeFZhR3Y3UzVrOXF3aC81dC9MUUVYc1JxSTNROVJtM1FJb2FaVzlHbHNEYUtPVXl5a3lXdWhOT3ByU0VpMHMxRzRyZ29pWDFWNzQzRUVMdGkrcEp1NW9nNlgwZzZvVHluVXFsaEg5azZlenlSaTA1TkdaSHowbnZwM0hPSnI3ZWJyQVVGckRqYmtGQk9iRXZkUVdra1ViTDBwRXZNVTQ2WDU4dkY5ajlGM2o2a3B5ZXROVUJJdHJFdWJXOVp2TVBNNHFOcUxsc1NCSnFPSDNYYk53di9jWERYTnhOOGlGTHpVaHRlaXNZWStSbEhZT3VQMjkvQ2IrTCt4diszNVJ2N3h1ZG5aNm9oSzRjTVBmQ0c4S0k3ZE5tak5rL0g0ZTg0cE94bi9zWkhLOXBzZnZqOG5jQThxSno3Tzh4cWJ4RVNEaXZHSk9aekY3bzVQSkxRN2czNHFBV295dUEreDNidFU5OExUNlp5R3ljZUlYanJxb2IyQ0FWcWw0Vk9UUVBVUVl2SFYvZzR6QXVDWkd2WVFCdGYwd21kNWxpbHJ2dUVuMUJYTG55MDFCNGg0U01EbFlzbk5wbTlkN205aDU3OHVmcGVmOVo0V3BscVdRdnFvNTJmeVVBN0oyNGVaRDVhdjZTeUdJVjlrcG1ITnF5dmRmemNwRU13OTdCdmtuVjJmcStNRkh1bjlCVDNMc2Y4cGJ6dmlzV2lJUXZZa25nKzhWeGsxVitkbGkxdTU2a1k1MExSamFQZG90dlQ1QndxdHd5RitlbW8vejlKM3lWVVZHZktyeFF0Sk1PQVFXb1FpaS80ZHA5d2d5YlNhNW1rdWNtUkx0RVFaL3B6MHRML05WY2dXQWQ5NW5FUTNUZzZ0TmJ1eW4zSWVwejY1TDNodU1VVUJudGxsV3V1NERidE9GU01TYnBJTFY0Znk2d2xNMFNPdmk2Q3BMaDgxYzFMcmVJdktkNjF1RVdCY0R3MWxVQlVXMUkwWittL1BhUmxYK1BRL294ZzBZZTZLVWlJaVRGNEFETms1OVlkcHQ1L3JreG1xOXRWNUtjcC9lUUxVVlZtQnpRTlZ1eXRRQ1A2RXpkMEc4ZUx4V3lIcG1aV0ozYkF6a1dUdGc0bFpsdzQyU1FlekVtaVVQYUpVdVIvcWtsVkEvODdTNEFyRkNwQUxkWTNRUmRVdzNHM1hiV1VwNmFxOXowelVpemNQYTczNTFwOUpYT1p5ZmRaQkZucXQ5MFZ6UW5kWEIvbXdmOExDOVNUajVrZW5WcE51cU9RUVAzbUlSSmo3ZVYyMUZ4RzhWQXhLckVuM2MrWGZtWjgwMEVQYjkvNWxJbGlqc2NVYkI2ZGEwUlFhTW9vazB6dWcxRzB0S2kvSkJDNHJ3Ny9EM200QVJ6QWt6TWNWckRjVDJTeUZ0VWRXQXNGbHNQREZxVjNOK0VqeVhhb0VlUHdyb2FaQ2lMcUV6YjhNVytQTkU5VG1UQzAxRXpXbGk1MVB6WnZVcWtteXVST1UrVjZpaytMZS85cVQ2bnd6VXpmOXRQNjh0WWVpMFlhREd4NmtBZDdqbjFjS3FPQ3VZYmlFTEg5ellxY2M0TW5SSmprZUdpcWFHd0xJbWh5ZUtzK3hLSk1CbE9KMDVvdzlnR0NLWjFWcG5NS29TQ1RiTVMrWCsyM3kwNDJ6T2I1TXRjWS82b0JlQW8xVnk4OU9UeWhwYXZGUDc4alhDY0ZIMHQ3R3gyNGhNRU9tMmdzRWZHYWJWcFFndkZxYlFLTXNrbkZSUm11UEhjWnUwU3UvV01GcGhadkIyci9FR2JHNzJycEdHaG8zaCtNc3owdUd6SjdoTksydXFRaUUxcW1uMHpnYWNLWVlaQkNxc3hWK3NqYnBvVmRTaWxXL2I5NG4yeE5iNjQ4Vm1OSW9penFFV2hCbnNlbitkMGtiQ1BtUkl0ZldxU0JlT2Q5V25lM2M2YmNkNnV2WE9KNldkaVNzdVhxMG5kaHFyUTRRb1dVakNqWXRaMEVBaG5TT1AxbTQ0eGtmME83alhnaHJ6U0pXeFA0YS90NzJqVTI5VnUycnZ1NG43SGZIa2ttUU9NR1NTK05QZUxHTzVJNzNtQzJCNytsTWlCUVFaUk05LzlsaUxJZm93dXBVRkFiUEJiUitseERNNk04UHRnaDFwYUpxNVJ2czd5RXVMUXYvN2Qxb1Uyd29GU2IzRk1QV1FPS011Q3VKN3BERGpwSWNsdXM1VGVFb01CeTJZZFZCNGZ4bWVzYUNlTU5zRWdUSEtTNVdEU0d5TlVPb0VwY0MyT0ZXdElSZjB3MjdjazM0L0RqeFJUVkljYzkra3FaRTZpTVNpVkRzaUtkUC9YejVYZkVobS9zQmhPNTBwMXJ2SkRsa3l5eHVKOVNQZ3M3WWVVSkJqWGRlQWtFK1A5T1FKbTZTWm5uMXN2Y2R1STc4ZFltYmtFMm10emlQcmNqVmlzWEc3OHNwTHZiWmFTRngvUmtzOXpQNExLbjBDZHovM0pzZXRrVDA2QThmL3lDZ01PNk1iMUhtZTBKSjdiMndaejFxbGVxVHVLQkdva2hQVlVaMGRWdSt0blFZTkVZMWZta1pTejYrRUdaNUV6TDc2NTdtcmVaR1IzalVmYUVrNDU4UERuaUJ6c1NtQktoRFJ6ZlhhbWVyeUp2OS9ENW02SElxWjBSK291Q0U1NER6cDRJSnV1RDFlNERjNWkrUHBTT1JKZkcyM3VWZ3FpeEFNRHZjaE1SMG5aZEg1YnJjbFl3Um9KUld2L3JseEdSSTVmZkQ1TlBHbUlEdDd2REUxNDM0cFlkVlpJRmg4OUJzOTRIR0dKYlR3ck44VDZsaDFIWkZUT0I0bFd6V2o2RVZxeFNNdkMwL2xqV0JRM0Yya2MvbU8yYjZ0V29uVDJKRXFFd0Z0czhyejJoK29XTmRzOWNlUjJjYjd6WnZKVERwcEhhRWhLNWF2V3Fzc2VXYTJEdDVCQmhhYmRXU2t0Uzgwb01Rckw0VHZBTTliNUhNbXlEbk8rT2trYk1YZlVKRzdlWHFUSUc2bHFTT0VicVZSK3FZZFA3dVdiNTdXRUpxenloNDExR0FWc0RpblBzN0t2VWVYSXRsY01kT1VXelhCSDZ6c2N5bVYxTExWQ3RjOEllUG9qelhIRjltNWI1ekd3QlJkemN5VUpraXU5MzhBcG1BYXlSZEpyWDFQbVZndVdVdnQyVGhRNjJjekl0VHlXSk1XMkFuL2hkRGZNSzdTaUZRbEdJZEFibHRIejN5Y29oN2o5VjdHeE5XQnBidGNTZHFtNFh4UndUYXdjM2NiWit4ZlN2OXFRZkVrREtmWlR3Q2txV0dJL3VyMjUwSXRYbE1saDZ2VU5XRVlJZzlBM0d6YmdtYnF2VE44anMyWU1vODdDVTV5Nm5aNGRiSkxEUUpqOWZjN3lNN3RaekpEWkZ0cU9jVTgrbVpqWWxxNFZtaWZJMjNpSGIxWm9UOUUra1QyZG9sblAxQWZpT2t0N1BRQ1N5a0JpWHk1bXY2MzdJZWdXU0tqOUlLcllaZjRMdTkrSTd1Yitta1JkbHZZemVoaC9qYUo5bjdIVUg1YjJJYmdlTmRrWTd3eDF5Vnp4UzdwYnZreTYrbm1WVXRSbGxFRmZ3ZVVRMC9uRzAxN1dvVVlTeHMrajJCNEZWL0Y2MkV0SGxNV1pYWXJqR0hwdGhuTmIxeDY2TEtaMFFlOTJJTldIZGZSL3ZxcDAyd01TOHIxRzRkSnFIb2s4S21RNzk0N0cxM2E0WVhic0dnSGNCdlJ1VnUxZUFpNC9BNStaaXhtZFNYTTczTHVwQi9MSDdPOXl4TFRWWEpUeUJiSTFTNDlUSVJPcmZWQ09iL2N6WjlwTTRKc1p4OGtVejhkUUd2N2dVV0t4WHZUSDdRTS8zSjJPdVhYZ2NpVWhxWStjZ3RhT2xpUVFWT1l0aEJMVjN4cEVTWlQzcm1mRVlOWnhtcEJiYjI0Q1Jhbzg2cHJuK2k5VE5PaDhWeFJKR1hKZlhIQVRKSHMxVDV0eGdjL29wWXJZOFhqbEdRUWJSY294SUJjblZzTWptVTF5bW1JVUw0ZHZpSlhuZE1BSjBZZXQrYzdPNTIvcDk4eXRsbUFzR0JhVEFtTWhpbUFudnAxVFdOR005QnB1aXRHait0ODEwQ1UyVWhvcnJqUEtHdFRoVkM4V2FYdzA0V0ZuVDVmVGpxbVB5clEwdE4zQ2tMc2N0VnkyeHIwWldnaVdWWjFPcmxGamp4SllzT2ladjJjQW9PdkUrN3NZMEkvVHdXY1pxTW95SUtOT2Z0d1A3dysrUmZnNjdsamZvdktZYTUwaWYzZnpFLzhhUFlWZXkvTnEzNStuSDJzTFBoL2ZQNVRzeWxTS0dPWjRrNjlkMlBuSDQzK2txKytzUlhIUXFHQXJXZHdoeCtocHdRQzZKZ1QydXhlaFlVNFpidzdvTmI2L0hMaWtQeUpST0dLMm91eXIrdnpzZUVTcDlHNTBUNEF5RnJTcU9RMHJyb0NZUDRzTURGQnJIbjM0MkV5WlRNbFN5azQ3ckhTcTg5WTkvbkkzekc1bFgxNlo1bHhwaGd1TE9jWlVuZEw4d05jcmt5akg4MmpxZzhCbzhPWWt5bnJ4WnZiRm5vNWxVUzNPUHI4S28zbVg5Tm9SUGRZT0tLakQwN2J2Z0ZncFovUkYrWXprV3ZKL0hzL3RVYmZlR3pHV0x4TkFqZkR6SEhNVlNEd0I1U2FiUUxzSVpIaUJwNDNGakdrYWllbllvRGQxOGh1MkJHd09LN1UzbzcwSy9XWS9rdXVLZG1kcnlrSUJVZEcybXZFOTFMMUp0VGJoMjBtT0xiazF2Q0FhbXU3dXRsWGVHVTJvb1Zpa2JVL2FjdGNnbXNDMUZLazJxbWozR1dlSVdiajR0R0l4RTdCTGNCV1V2dmNuZC9sWXhzTVY0RjkxN2ZXZUZCL1hiSU5OM3FHdkl5VHBDYWx6MWxWZXdkSUdxZUFTL2dCOE1pK3NBK0JxRGlYM1ZHRDJlVXVuVFJiU1krQXVEeTRFM1F4M2hBaHduU1hYK0IwenVqM2VRMW1pUzhWdXgyei9sNi9Ca1d0aktHVTcyYUprT0NXaEdjU2YzK2tGa2tCMTV2R09zUXJTZEZyNnFUajBnQllpT2xuQk80MTE3MGdPV0hTVW9CVlJVMkpqd3BwWWRoSUZEZnU3dElSSGNjU05NNUtaT0ZEUHowVEdNQWp6ekVwZUx3VFdwK2tuMjAxa1U2TmpiaU1RSng4MytMWDFlMXRaMTBrdUNoSlovWEJVUTFkd2FCSGpUREpEcU95bXBFazhYMk0zVnRWdzIxSmtzQ2hBOHcxdFRlZk8zUkoxRk1icVowMWJISGt1ZERCL09oTGZlN1A1R09IYUkyOFpYS1RNdXFvMGhMV1E0SGFiQnNHRzdOYlAxUmlYdEVUejA3NGVyNncvT2VySldFcWpta3EyeTUxcTFCVkkrSlV1ZG5WYTNvZ0JwemRoRkU3ZkM3a3lickF0Mlo2UnFEakFUQVVFWWVZSzQ1V011cEJLUVJ0UWxVK3VOc2puemo2Wm1HcmV6QStBU3JXeFE2TE1rSFJYcVh3TnE3ZnR2MjhkVXgvWlNKY2lEWFAyU1dKc1dhTjBGalBYOVlrbzZMb2JaN2FZVy9JZFVrdEk5YXBUTHlIUzhEeVdQeXVvWnl4TjFUSy92dGZ4azNId1doNkpjelpDOEZ0bjBiSUpheTJnK241d2Q3bG05ckVzS08rc3ZxVm1pK2Mxajg4aFNDeGJ6cmc0K0hFUDBOdDEvQjZZVzFYVm0wOVQxQ3BBS2pjOW4xOGhqcXNhRkdkZnl2YTFaRzBYdTNpcDZONkpHcHlUU3FZNWg0Qk9scExQYU9ueXc0NVBkWFROK0R0QUtnN0RMckxGVG5XdXNvU0JIazNzMGQ3WW91SkhxODUvUjA5VGZjMzdFTlhaRjQ4ZUFZTG5xOUdMaW9OY3dEWnJDNkZXNmdvZEI4Sm5xWVVQdm4wcFdMZlF6MGxNMFl5OE15YmduODREczNROWJEUDEwYkx5T1YrcXp4YTRSZDlEaHU3Y2p1OG1NYU9OWEszVXFtQlE5cUlnN2V0SXdFcU0va0VDay9EemphNEJzMXhSK1EvdENiYzhJS3JTR3NUZEpKMHZnZTdJRzIwVzY4N3VWbUs2aWNXUTZjRDNsd0Z6Z05NR3RGdk81cXlKZUtmbEdMQUFjUVpPcmt4Vnd5M2NXdnFsR3B2am1mOVFlNkFwMjBNUGJWOTJEUFYwT2hGTTRrejhZcjBmZkMyekxXU1Exa3FZNlFkUXJ0dFIza2gxWUx0UWQxa0NFdjVoVm9QSVJXbDVFUmNVVHR0QklyV3A2WHM1RWhoNU9VVXdJNWFFQnZ1aURtVW9FTm1uVncxRm9oQ3JiUnAxQTFFK1hTbFdWT1RpN0FEVys1T2hiOXoxdks0cXg1UjVsUGRHQ1BCSlowMG1DK1NzcDhWVWJncEdBdlhXTXVXUVFSYkNxSTZScjJqdHhaeHRmUDdXLzhvbnoreXowR3M3NkxhVDVIWDllY3lpWkNCL1pSL2dGdE14UHNEd29ob2VDUnRpdUx4RTFHTTF2VUVVZ0J2ODYrZWVoTDU4L1A1NlFGR1EvTXFPZS92Qzc2TDYzanptZWF4NGV4ZC9PS1RVdmtYZytmT0pVSHljaDl4dC85Z29KTXJhcFNndlhyajgrOHZrL044MGYyMlNld2o2Y3lHcXQxQjZtenRvZWtsVkhIcmFvdWh2SEphRy9PdUJ6NkRIS01wRm1RVUxVMWJSV2x5WUUwUlBYWVlrVXljSWVtTjdUTHRnTkNKWDZCcWR5eERLa2VnTzduSks1eFE3T1ZZRFpUTWY5YlZIaWR0azZEUVg5RXQrVjlNN2VzZ2JzWUJkRWVVcHNCMFh2dzJrZDkrckk3VittNDd1K08vdHE3bXc3MjYySFUxV2xTOXVGenNWNkp4SUhObVVDeTBRUzllMDc3SkdSRmJHNjV6My9kT0tCL1prK3lEZEtwVW1kWGpuL2FTM041bnY0Zks3Yk1ISG1QbEhkNEUyK2lUYlY1cnB6U2NSbnhrNktBUnVEVEo4UTFMcEsybVA4Z2oxRWJ1SjlSSXlZK0VXSzRoQ2lJREJBUzFUbTJJRVhBRmZnS1BnZEw5TzZtQWEwNndqQ2NVQUw2RXN4UFFXTzlWTmVnQlBtLzBHZ2taYkR4Q3lueHVqWC85MnZtR2NqWlJNQVk0NXB1YWsyc0ZMQ0xTd1hwRXN5eTVmbkYwakdKQmhtK2ZOU0hLS1VVZnkrMjc2QTcvZmVMT0Z4eFV1SFJOSkkyT3Nlbnh5dmY4REFHT2JUNjBwZlRUbGhFZzl1L0tLa2hKcW01VTEvK0JFY1NrcEZEQTVYZUNxeHdYbVBhYzFqY3VaM0pXUStwME5kV3piLzV2MVp2RjhHdE1URkZFZFFqcExPMGJ3UGIwQkhOV25pcDNsaURYSTJmWGYwNWpqdmZKME5wakxDVWdmVGg5Q01GWVZGS0VkNFovT0cvMkMrTjQzNW1uSys5dDFndkNpVmNhYUg3cks0K1BqQ3ZwVk5peit0MlF5cUgxTzh4M0pLWlZsNlErTHAvWEs4d01qVk1zbE9xOUZkU3c1RnRVcy9DcHRYSDlQVyt3YldIZ3JWMTdSNWpUVk90R3RLRnUzbmI4MFQrRTB0djlRa3pXM0oyZGJhdy84ZGRBS1owcHhJYUVxTGpsUHJqaTNWZ0ozR3ZkRnZscUQ4MDc1d294aDRmVnQwSlpFMEtWRnNBdnFoZTBkcU45YjM1anRTcG5ZTVhrVSt2WnErSUFIYWQzSUhjMnMvTFlybkQxYW5mRzQ2SUZpTUlyOW9OYlpEV3Z3dGhxWU5xT2lnYUtkL1hsTFU0WEhmay9QWElqUHNMeS85L2tBdFErL3dLSCtoSS9JUk9XajVGUHZUWkFUOWY3ajRaWFF5RzRNMFR1ak1BRlhZa0t2RUh2MXhoeVNla2dYR0dxTnhXZVdLbGY4ZERBbEx1QjFjYi9xT0Qrcms3Y213dCsxeUtwazljdWRxQmFuVGk2elRiWFJ0VjhxeWxOdGp5T1ZLeTFIVHowR1c5cmp0NnNTakFaY1Q1UitLZHR5WWIwenlxRzlwU0x1Q3c1V0J3QW43ZmpCaktMTG94TFhNSSs1Mkw5Y0x3SVIyQjZPbGxKWkxISjh2RHhtV2R0RitRSm5tdDFyc0hQSVdZMjBsZnRrOGZZZVBrQUlnNkhnbjUzMlFvSXBlZ014aVdnQU9mZTUvVTQ0QVBSOEFjME5lWnJWaDNnRWhzMTJXK3RWU2lXaVVRZWtmL1lCRUNVeTVmZFliQTA4ZGQ3VnpQQVA5YWlWY0lCOWs2dFk3V2RKMXdOVitiSGV5ZE50bUM2RzVJQ3RGQzFad21KVS9qOGhmMEk4VFJWS1NpejVvWUlhOTNFcFVJNzhYOEdZSUFaYWJ4NDcvbjhMREFBSjBuTnRQMXJwUk9wcnFLTUJSZWNTaGNhNnFYdVRTSTNqWkJMT0IzVnAzODFCNXJDR2hqU3ZoL05TVmtZcDJxSWRQL0JnPSI7CgoKLyoqKi8gfSksCi8qIDI4OSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgovKiBDb3B5cmlnaHQgMjAxMyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgoKICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogICBMb29rdXAgdGFibGUgdG8gbWFwIHRoZSBwcmV2aW91cyB0d28gYnl0ZXMgdG8gYSBjb250ZXh0IGlkLgoKICAgVGhlcmUgYXJlIGZvdXIgZGlmZmVyZW50IGNvbnRleHQgbW9kZWxpbmcgbW9kZXMgZGVmaW5lZCBoZXJlOgogICAgIENPTlRFWFRfTFNCNjogY29udGV4dCBpZCBpcyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgNiBiaXRzIG9mIHRoZSBsYXN0IGJ5dGUsCiAgICAgQ09OVEVYVF9NU0I2OiBjb250ZXh0IGlkIGlzIHRoZSBtb3N0IHNpZ25pZmljYW50IDYgYml0cyBvZiB0aGUgbGFzdCBieXRlLAogICAgIENPTlRFWFRfVVRGODogc2Vjb25kLW9yZGVyIGNvbnRleHQgbW9kZWwgdHVuZWQgZm9yIFVURjgtZW5jb2RlZCB0ZXh0LAogICAgIENPTlRFWFRfU0lHTkVEOiBzZWNvbmQtb3JkZXIgY29udGV4dCBtb2RlbCB0dW5lZCBmb3Igc2lnbmVkIGludGVnZXJzLgoKICAgVGhlIGNvbnRleHQgaWQgZm9yIHRoZSBVVEY4IGNvbnRleHQgbW9kZWwgaXMgY2FsY3VsYXRlZCBhcyBmb2xsb3dzLiBJZiBwMQogICBhbmQgcDIgYXJlIHRoZSBwcmV2aW91cyB0d28gYnl0ZXMsIHdlIGNhbGN1YWx0ZSB0aGUgY29udGV4dCBhcwoKICAgICBjb250ZXh0ID0ga0NvbnRleHRMb29rdXBbcDFdIHwga0NvbnRleHRMb29rdXBbcDIgKyAyNTZdLgoKICAgSWYgdGhlIHByZXZpb3VzIHR3byBieXRlcyBhcmUgQVNDSUkgY2hhcmFjdGVycyAoaS5lLiA8IDEyOCksIHRoaXMgd2lsbCBiZQogICBlcXVpdmFsZW50IHRvCgogICAgIGNvbnRleHQgPSA0ICogY29udGV4dDEocDEpICsgY29udGV4dDIocDIpLAoKICAgd2hlcmUgY29udGV4dDEgaXMgYmFzZWQgb24gdGhlIHByZXZpb3VzIGJ5dGUgaW4gdGhlIGZvbGxvd2luZyB3YXk6CgogICAgIDAgIDogbm9uLUFTQ0lJIGNvbnRyb2wKICAgICAxICA6IFx0LCBcbiwgXHIKICAgICAyICA6IHNwYWNlCiAgICAgMyAgOiBvdGhlciBwdW5jdHVhdGlvbgogICAgIDQgIDogIiAnCiAgICAgNSAgOiAlCiAgICAgNiAgOiAoIDwgWyB7CiAgICAgNyAgOiApID4gXSB9CiAgICAgOCAgOiAsIDsgOgogICAgIDkgIDogLgogICAgIDEwIDogPQogICAgIDExIDogbnVtYmVyCiAgICAgMTIgOiB1cHBlci1jYXNlIHZvd2VsCiAgICAgMTMgOiB1cHBlci1jYXNlIGNvbnNvbmFudAogICAgIDE0IDogbG93ZXItY2FzZSB2b3dlbAogICAgIDE1IDogbG93ZXItY2FzZSBjb25zb25hbnQKCiAgIGFuZCBjb250ZXh0MiBpcyBiYXNlZCBvbiB0aGUgc2Vjb25kIGxhc3QgYnl0ZToKCiAgICAgMCA6IGNvbnRyb2wsIHNwYWNlCiAgICAgMSA6IHB1bmN0dWF0aW9uCiAgICAgMiA6IHVwcGVyLWNhc2UgbGV0dGVyLCBudW1iZXIKICAgICAzIDogbG93ZXItY2FzZSBsZXR0ZXIKCiAgIElmIHRoZSBsYXN0IGJ5dGUgaXMgQVNDSUksIGFuZCB0aGUgc2Vjb25kIGxhc3QgYnl0ZSBpcyBub3QgKGluIGEgdmFsaWQgVVRGOAogICBzdHJlYW0gaXQgd2lsbCBiZSBhIGNvbnRpbnVhdGlvbiBieXRlLCB2YWx1ZSBiZXR3ZWVuIDEyOCBhbmQgMTkxKSwgdGhlCiAgIGNvbnRleHQgaXMgdGhlIHNhbWUgYXMgaWYgdGhlIHNlY29uZCBsYXN0IGJ5dGUgd2FzIGFuIEFTQ0lJIGNvbnRyb2wgb3Igc3BhY2UuCgogICBJZiB0aGUgbGFzdCBieXRlIGlzIGEgVVRGOCBsZWFkIGJ5dGUgKHZhbHVlID49IDE5MiksIHRoZW4gdGhlIG5leHQgYnl0ZSB3aWxsCiAgIGJlIGEgY29udGludWF0aW9uIGJ5dGUgYW5kIHRoZSBjb250ZXh0IGlkIGlzIDIgb3IgMyBkZXBlbmRpbmcgb24gdGhlIExTQiBvZgogICB0aGUgbGFzdCBieXRlIGFuZCB0byBhIGxlc3NlciBleHRlbnQgb24gdGhlIHNlY29uZCBsYXN0IGJ5dGUgaWYgaXQgaXMgQVNDSUkuCgogICBJZiB0aGUgbGFzdCBieXRlIGlzIGEgVVRGOCBjb250aW51YXRpb24gYnl0ZSwgdGhlIHNlY29uZCBsYXN0IGJ5dGUgY2FuIGJlOgogICAgIC0gY29udGludWF0aW9uIGJ5dGU6IHRoZSBuZXh0IGJ5dGUgaXMgcHJvYmFibHkgQVNDSUkgb3IgbGVhZCBieXRlIChhc3N1bWluZwogICAgICAgNC1ieXRlIFVURjggY2hhcmFjdGVycyBhcmUgcmFyZSkgYW5kIHRoZSBjb250ZXh0IGlkIGlzIDAgb3IgMS4KICAgICAtIGxlYWQgYnl0ZSAoMTkyIC0gMjA3KTogbmV4dCBieXRlIGlzIEFTQ0lJIG9yIGxlYWQgYnl0ZSwgY29udGV4dCBpcyAwIG9yIDEKICAgICAtIGxlYWQgYnl0ZSAoMjA4IC0gMjU1KTogbmV4dCBieXRlIGlzIGNvbnRpbnVhdGlvbiBieXRlLCBjb250ZXh0IGlzIDIgb3IgMwoKICAgVGhlIHBvc3NpYmxlIHZhbHVlIGNvbWJpbmF0aW9ucyBvZiB0aGUgcHJldmlvdXMgdHdvIGJ5dGVzLCB0aGUgcmFuZ2Ugb2YKICAgY29udGV4dCBpZHMgYW5kIHRoZSB0eXBlIG9mIHRoZSBuZXh0IGJ5dGUgaXMgc3VtbWFyaXplZCBpbiB0aGUgdGFibGUgYmVsb3c6CgogICB8LS0tLS0tLS1cLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CiAgIHwgICAgICAgICBcICAgICAgICAgICAgICAgICAgICAgICAgIExhc3QgYnl0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgfCBTZWNvbmQgICBcLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAogICB8IGxhc3QgYnl0ZSBcICAgIEFTQ0lJICAgICAgICAgICAgfCAgIGNvbnQuIGJ5dGUgICAgICAgIHwgICBsZWFkIGJ5dGUgICAgICB8CiAgIHwgICAgICAgICAgICBcICAgKDAtMTI3KSAgICAgICAgICB8ICAgKDEyOC0xOTEpICAgICAgICAgfCAgICgxOTItKSAgICAgICAgIHwKICAgfD09PT09PT09PT09PT18PT09PT09PT09PT09PT09PT09PXw9PT09PT09PT09PT09PT09PT09PT18PT09PT09PT09PT09PT09PT09fAogICB8ICBBU0NJSSAgICAgIHwgbmV4dDogQVNDSUkvbGVhZCAgfCAgbm90IHZhbGlkICAgICAgICAgIHwgIG5leHQ6IGNvbnQuICAgICB8CiAgIHwgICgwLTEyNykgICAgfCBjb250ZXh0OiA0IC0gNjMgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgY29udGV4dDogMiAtIDMgIHwKICAgfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tfAogICB8ICBjb250LiBieXRlIHwgbmV4dDogQVNDSUkvbGVhZCAgfCAgbmV4dDogQVNDSUkvbGVhZCAgIHwgIG5leHQ6IGNvbnQuICAgICB8CiAgIHwgICgxMjgtMTkxKSAgfCBjb250ZXh0OiA0IC0gNjMgICB8ICBjb250ZXh0OiAwIC0gMSAgICAgfCAgY29udGV4dDogMiAtIDMgIHwKICAgfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tfAogICB8ICBsZWFkIGJ5dGUgIHwgbm90IHZhbGlkICAgICAgICAgfCAgbmV4dDogQVNDSUkvbGVhZCAgIHwgIG5vdCB2YWxpZCAgICAgICB8CiAgIHwgICgxOTItMjA3KSAgfCAgICAgICAgICAgICAgICAgICB8ICBjb250ZXh0OiAwIC0gMSAgICAgfCAgICAgICAgICAgICAgICAgIHwKICAgfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tfAogICB8ICBsZWFkIGJ5dGUgIHwgbm90IHZhbGlkICAgICAgICAgfCAgbmV4dDogY29udC4gICAgICAgIHwgIG5vdCB2YWxpZCAgICAgICB8CiAgIHwgICgyMDgtKSAgICAgfCAgICAgICAgICAgICAgICAgICB8ICBjb250ZXh0OiAyIC0gMyAgICAgfCAgICAgICAgICAgICAgICAgIHwKICAgfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tfAoKICAgVGhlIGNvbnRleHQgaWQgZm9yIHRoZSBzaWduZWQgY29udGV4dCBtb2RlIGlzIGNhbGN1bGF0ZWQgYXM6CgogICAgIGNvbnRleHQgPSAoa0NvbnRleHRMb29rdXBbNTEyICsgcDFdIDw8IDMpIHwga0NvbnRleHRMb29rdXBbNTEyICsgcDJdLgoKICAgRm9yIGFueSBjb250ZXh0IG1vZGVsaW5nIG1vZGVzLCB0aGUgY29udGV4dCBpZHMgY2FuIGJlIGNhbGN1bGF0ZWQgYnkgfC1pbmcKICAgdG9nZXRoZXIgdHdvIGxvb2t1cHMgZnJvbSBvbmUgdGFibGUgdXNpbmcgY29udGV4dCBtb2RlbCBkZXBlbmRlbnQgb2Zmc2V0czoKCiAgICAgY29udGV4dCA9IGtDb250ZXh0TG9va3VwW29mZnNldDEgKyBwMV0gfCBrQ29udGV4dExvb2t1cFtvZmZzZXQyICsgcDJdLgoKICAgd2hlcmUgb2Zmc2V0MSBhbmQgb2Zmc2V0MiBhcmUgZGVwZW5kZW50IG9uIHRoZSBjb250ZXh0IG1vZGUuCiovCgp2YXIgQ09OVEVYVF9MU0I2ICAgICAgICAgPSAwOwp2YXIgQ09OVEVYVF9NU0I2ICAgICAgICAgPSAxOwp2YXIgQ09OVEVYVF9VVEY4ICAgICAgICAgPSAyOwp2YXIgQ09OVEVYVF9TSUdORUQgICAgICAgPSAzOwoKLyogQ29tbW9uIGNvbnRleHQgbG9va3VwIHRhYmxlIGZvciBhbGwgY29udGV4dCBtb2Rlcy4gKi8KZXhwb3J0cy5sb29rdXAgPSBuZXcgVWludDhBcnJheShbCiAgLyogQ09OVEVYVF9VVEY4LCBsYXN0IGJ5dGUuICovCiAgLyogQVNDSUkgcmFuZ2UuICovCiAgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDQsICA0LCAgMCwgIDAsICA0LCAgMCwgIDAsCiAgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsCiAgIDgsIDEyLCAxNiwgMTIsIDEyLCAyMCwgMTIsIDE2LCAyNCwgMjgsIDEyLCAxMiwgMzIsIDEyLCAzNiwgMTIsCiAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDMyLCAzMiwgMjQsIDQwLCAyOCwgMTIsCiAgMTIsIDQ4LCA1MiwgNTIsIDUyLCA0OCwgNTIsIDUyLCA1MiwgNDgsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNDgsCiAgNTIsIDUyLCA1MiwgNTIsIDUyLCA0OCwgNTIsIDUyLCA1MiwgNTIsIDUyLCAyNCwgMTIsIDI4LCAxMiwgMTIsCiAgMTIsIDU2LCA2MCwgNjAsIDYwLCA1NiwgNjAsIDYwLCA2MCwgNTYsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNTYsCiAgNjAsIDYwLCA2MCwgNjAsIDYwLCA1NiwgNjAsIDYwLCA2MCwgNjAsIDYwLCAyNCwgMTIsIDI4LCAxMiwgIDAsCiAgLyogVVRGOCBjb250aW51YXRpb24gYnl0ZSByYW5nZS4gKi8KICAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLAogIDAsIDEsIDAsIDEsIDAsIDEsIDAsIDEsIDAsIDEsIDAsIDEsIDAsIDEsIDAsIDEsCiAgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSwKICAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLAogIC8qIFVURjggbGVhZCBieXRlIHJhbmdlLiAqLwogIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsCiAgMiwgMywgMiwgMywgMiwgMywgMiwgMywgMiwgMywgMiwgMywgMiwgMywgMiwgMywKICAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLAogIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsCiAgLyogQ09OVEVYVF9VVEY4IHNlY29uZCBsYXN0IGJ5dGUuICovCiAgLyogQVNDSUkgcmFuZ2UuICovCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCiAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMSwgMSwgMSwgMSwgMSwgMSwKICAxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLAogIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDEsIDEsIDEsIDEsIDEsCiAgMSwgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywKICAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAxLCAxLCAxLCAxLCAwLAogIC8qIFVURjggY29udGludWF0aW9uIGJ5dGUgcmFuZ2UuICovCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIC8qIFVURjggbGVhZCBieXRlIHJhbmdlLiAqLwogIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwKICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLAogIC8qIENPTlRFWFRfU0lHTkVELCBzZWNvbmQgbGFzdCBieXRlLiAqLwogIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCiAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwKICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLAogIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsCiAgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywKICAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLAogIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsCiAgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywKICA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LAogIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsCiAgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwKICA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LAogIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsCiAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwKICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LAogIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDcsCiAgLyogQ09OVEVYVF9TSUdORUQsIGxhc3QgYnl0ZSwgc2FtZSBhcyB0aGUgYWJvdmUgdmFsdWVzIHNoaWZ0ZWQgYnkgMyBiaXRzLiAqLwogICAwLCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LAogIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LAogIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LAogIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LAogIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LAogIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LAogIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LAogIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LAogIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLAogIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLAogIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLAogIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLAogIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLAogIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLAogIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLAogIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDU2LAogIC8qIENPTlRFWFRfTFNCNiwgbGFzdCBieXRlLiAqLwogICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LAogIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLAogIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LAogIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLAogICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LAogIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLAogIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LAogIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLAogICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LAogIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLAogIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LAogIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLAogICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LAogIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLAogIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LAogIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLAogIC8qIENPTlRFWFRfTVNCNiwgbGFzdCBieXRlLiAqLwogICAwLCAgMCwgIDAsICAwLCAgMSwgIDEsICAxLCAgMSwgIDIsICAyLCAgMiwgIDIsICAzLCAgMywgIDMsICAzLAogICA0LCAgNCwgIDQsICA0LCAgNSwgIDUsICA1LCAgNSwgIDYsICA2LCAgNiwgIDYsICA3LCAgNywgIDcsICA3LAogICA4LCAgOCwgIDgsICA4LCAgOSwgIDksICA5LCAgOSwgMTAsIDEwLCAxMCwgMTAsIDExLCAxMSwgMTEsIDExLAogIDEyLCAxMiwgMTIsIDEyLCAxMywgMTMsIDEzLCAxMywgMTQsIDE0LCAxNCwgMTQsIDE1LCAxNSwgMTUsIDE1LAogIDE2LCAxNiwgMTYsIDE2LCAxNywgMTcsIDE3LCAxNywgMTgsIDE4LCAxOCwgMTgsIDE5LCAxOSwgMTksIDE5LAogIDIwLCAyMCwgMjAsIDIwLCAyMSwgMjEsIDIxLCAyMSwgMjIsIDIyLCAyMiwgMjIsIDIzLCAyMywgMjMsIDIzLAogIDI0LCAyNCwgMjQsIDI0LCAyNSwgMjUsIDI1LCAyNSwgMjYsIDI2LCAyNiwgMjYsIDI3LCAyNywgMjcsIDI3LAogIDI4LCAyOCwgMjgsIDI4LCAyOSwgMjksIDI5LCAyOSwgMzAsIDMwLCAzMCwgMzAsIDMxLCAzMSwgMzEsIDMxLAogIDMyLCAzMiwgMzIsIDMyLCAzMywgMzMsIDMzLCAzMywgMzQsIDM0LCAzNCwgMzQsIDM1LCAzNSwgMzUsIDM1LAogIDM2LCAzNiwgMzYsIDM2LCAzNywgMzcsIDM3LCAzNywgMzgsIDM4LCAzOCwgMzgsIDM5LCAzOSwgMzksIDM5LAogIDQwLCA0MCwgNDAsIDQwLCA0MSwgNDEsIDQxLCA0MSwgNDIsIDQyLCA0MiwgNDIsIDQzLCA0MywgNDMsIDQzLAogIDQ0LCA0NCwgNDQsIDQ0LCA0NSwgNDUsIDQ1LCA0NSwgNDYsIDQ2LCA0NiwgNDYsIDQ3LCA0NywgNDcsIDQ3LAogIDQ4LCA0OCwgNDgsIDQ4LCA0OSwgNDksIDQ5LCA0OSwgNTAsIDUwLCA1MCwgNTAsIDUxLCA1MSwgNTEsIDUxLAogIDUyLCA1MiwgNTIsIDUyLCA1MywgNTMsIDUzLCA1MywgNTQsIDU0LCA1NCwgNTQsIDU1LCA1NSwgNTUsIDU1LAogIDU2LCA1NiwgNTYsIDU2LCA1NywgNTcsIDU3LCA1NywgNTgsIDU4LCA1OCwgNTgsIDU5LCA1OSwgNTksIDU5LAogIDYwLCA2MCwgNjAsIDYwLCA2MSwgNjEsIDYxLCA2MSwgNjIsIDYyLCA2MiwgNjIsIDYzLCA2MywgNjMsIDYzLAogIC8qIENPTlRFWFRfe00sTH1TQjYsIHNlY29uZCBsYXN0IGJ5dGUsICovCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKXSk7CgpleHBvcnRzLmxvb2t1cE9mZnNldHMgPSBuZXcgVWludDE2QXJyYXkoWwogIC8qIENPTlRFWFRfTFNCNiAqLwogIDEwMjQsIDE1MzYsCiAgLyogQ09OVEVYVF9NU0I2ICovCiAgMTI4MCwgMTUzNiwKICAvKiBDT05URVhUX1VURjggKi8KICAwLCAyNTYsCiAgLyogQ09OVEVYVF9TSUdORUQgKi8KICA3NjgsIDUxMiwKXSk7CgoKLyoqKi8gfSksCi8qIDI5MCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgovKiBDb3B5cmlnaHQgMjAxMyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgoKICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogICBMb29rdXAgdGFibGVzIHRvIG1hcCBwcmVmaXggY29kZXMgdG8gdmFsdWUgcmFuZ2VzLiBUaGlzIGlzIHVzZWQgZHVyaW5nCiAgIGRlY29kaW5nIG9mIHRoZSBibG9jayBsZW5ndGhzLCBsaXRlcmFsIGluc2VydGlvbiBsZW5ndGhzIGFuZCBjb3B5IGxlbmd0aHMuCiovCgovKiBSZXByZXNlbnRzIHRoZSByYW5nZSBvZiB2YWx1ZXMgYmVsb25naW5nIHRvIGEgcHJlZml4IGNvZGU6ICovCi8qIFtvZmZzZXQsIG9mZnNldCArIDJebmJpdHMpICovCmZ1bmN0aW9uIFByZWZpeENvZGVSYW5nZShvZmZzZXQsIG5iaXRzKSB7CiAgdGhpcy5vZmZzZXQgPSBvZmZzZXQ7CiAgdGhpcy5uYml0cyA9IG5iaXRzOwp9CgpleHBvcnRzLmtCbG9ja0xlbmd0aFByZWZpeENvZGUgPSBbCiAgbmV3IFByZWZpeENvZGVSYW5nZSgxLCAyKSwgbmV3IFByZWZpeENvZGVSYW5nZSg1LCAyKSwgbmV3IFByZWZpeENvZGVSYW5nZSg5LCAyKSwgbmV3IFByZWZpeENvZGVSYW5nZSgxMywgMiksCiAgbmV3IFByZWZpeENvZGVSYW5nZSgxNywgMyksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMjUsIDMpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDMzLCAzKSwgbmV3IFByZWZpeENvZGVSYW5nZSg0MSwgMyksCiAgbmV3IFByZWZpeENvZGVSYW5nZSg0OSwgNCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoNjUsIDQpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDgxLCA0KSwgbmV3IFByZWZpeENvZGVSYW5nZSg5NywgNCksCiAgbmV3IFByZWZpeENvZGVSYW5nZSgxMTMsIDUpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDE0NSwgNSksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMTc3LCA1KSwgbmV3IFByZWZpeENvZGVSYW5nZSgyMDksIDUpLAogIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMjQxLCA2KSwgbmV3IFByZWZpeENvZGVSYW5nZSgzMDUsIDYpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDM2OSwgNyksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoNDk3LCA4KSwKICBuZXcgUHJlZml4Q29kZVJhbmdlKDc1MywgOSksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMTI2NSwgMTApLCBuZXcgUHJlZml4Q29kZVJhbmdlKDIyODksIDExKSwgbmV3IFByZWZpeENvZGVSYW5nZSg0MzM3LCAxMiksCiAgbmV3IFByZWZpeENvZGVSYW5nZSg4NDMzLCAxMyksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMTY2MjUsIDI0KQpdOwoKZXhwb3J0cy5rSW5zZXJ0TGVuZ3RoUHJlZml4Q29kZSA9IFsKICBuZXcgUHJlZml4Q29kZVJhbmdlKDAsIDApLCBuZXcgUHJlZml4Q29kZVJhbmdlKDEsIDApLCBuZXcgUHJlZml4Q29kZVJhbmdlKDIsIDApLCBuZXcgUHJlZml4Q29kZVJhbmdlKDMsIDApLAogIG5ldyBQcmVmaXhDb2RlUmFuZ2UoNCwgMCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoNSwgMCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoNiwgMSksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoOCwgMSksCiAgbmV3IFByZWZpeENvZGVSYW5nZSgxMCwgMiksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMTQsIDIpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDE4LCAzKSwgbmV3IFByZWZpeENvZGVSYW5nZSgyNiwgMyksCiAgbmV3IFByZWZpeENvZGVSYW5nZSgzNCwgNCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoNTAsIDQpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDY2LCA1KSwgbmV3IFByZWZpeENvZGVSYW5nZSg5OCwgNSksCiAgbmV3IFByZWZpeENvZGVSYW5nZSgxMzAsIDYpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDE5NCwgNyksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMzIyLCA4KSwgbmV3IFByZWZpeENvZGVSYW5nZSg1NzgsIDkpLAogIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMTA5MCwgMTApLCBuZXcgUHJlZml4Q29kZVJhbmdlKDIxMTQsIDEyKSwgbmV3IFByZWZpeENvZGVSYW5nZSg2MjEwLCAxNCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMjI1OTQsIDI0KSwKXTsKCmV4cG9ydHMua0NvcHlMZW5ndGhQcmVmaXhDb2RlID0gWwogIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMiwgMCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMywgMCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoNCwgMCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoNSwgMCksCiAgbmV3IFByZWZpeENvZGVSYW5nZSg2LCAwKSwgbmV3IFByZWZpeENvZGVSYW5nZSg3LCAwKSwgbmV3IFByZWZpeENvZGVSYW5nZSg4LCAwKSwgbmV3IFByZWZpeENvZGVSYW5nZSg5LCAwKSwKICBuZXcgUHJlZml4Q29kZVJhbmdlKDEwLCAxKSwgbmV3IFByZWZpeENvZGVSYW5nZSgxMiwgMSksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMTQsIDIpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDE4LCAyKSwKICBuZXcgUHJlZml4Q29kZVJhbmdlKDIyLCAzKSwgbmV3IFByZWZpeENvZGVSYW5nZSgzMCwgMyksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMzgsIDQpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDU0LCA0KSwKICBuZXcgUHJlZml4Q29kZVJhbmdlKDcwLCA1KSwgbmV3IFByZWZpeENvZGVSYW5nZSgxMDIsIDUpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDEzNCwgNiksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMTk4LCA3KSwKICBuZXcgUHJlZml4Q29kZVJhbmdlKDMyNiwgOCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoNTgyLCA5KSwgbmV3IFByZWZpeENvZGVSYW5nZSgxMDk0LCAxMCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMjExOCwgMjQpLApdOwoKZXhwb3J0cy5rSW5zZXJ0UmFuZ2VMdXQgPSBbCiAgMCwgMCwgOCwgOCwgMCwgMTYsIDgsIDE2LCAxNiwKXTsKCmV4cG9ydHMua0NvcHlSYW5nZUx1dCA9IFsKICAwLCA4LCAwLCA4LCAxNiwgMCwgMTYsIDgsIDE2LApdOwoKCi8qKiovIH0pLAovKiAyOTEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogQ29weXJpZ2h0IDIwMTMgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KCiAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgVHJhbnNmb3JtYXRpb25zIG9uIGRpY3Rpb25hcnkgd29yZHMuCiovCgp2YXIgQnJvdGxpRGljdGlvbmFyeSA9IF9fd2VicGFja19yZXF1aXJlX18oMTE5KTsKCnZhciBrSWRlbnRpdHkgICAgICAgPSAwOwp2YXIga09taXRMYXN0MSAgICAgID0gMTsKdmFyIGtPbWl0TGFzdDIgICAgICA9IDI7CnZhciBrT21pdExhc3QzICAgICAgPSAzOwp2YXIga09taXRMYXN0NCAgICAgID0gNDsKdmFyIGtPbWl0TGFzdDUgICAgICA9IDU7CnZhciBrT21pdExhc3Q2ICAgICAgPSA2Owp2YXIga09taXRMYXN0NyAgICAgID0gNzsKdmFyIGtPbWl0TGFzdDggICAgICA9IDg7CnZhciBrT21pdExhc3Q5ICAgICAgPSA5Owp2YXIga1VwcGVyY2FzZUZpcnN0ID0gMTA7CnZhciBrVXBwZXJjYXNlQWxsICAgPSAxMTsKdmFyIGtPbWl0Rmlyc3QxICAgICA9IDEyOwp2YXIga09taXRGaXJzdDIgICAgID0gMTM7CnZhciBrT21pdEZpcnN0MyAgICAgPSAxNDsKdmFyIGtPbWl0Rmlyc3Q0ICAgICA9IDE1Owp2YXIga09taXRGaXJzdDUgICAgID0gMTY7CnZhciBrT21pdEZpcnN0NiAgICAgPSAxNzsKdmFyIGtPbWl0Rmlyc3Q3ICAgICA9IDE4Owp2YXIga09taXRGaXJzdDggICAgID0gMTk7CnZhciBrT21pdEZpcnN0OSAgICAgPSAyMDsKCmZ1bmN0aW9uIFRyYW5zZm9ybShwcmVmaXgsIHRyYW5zZm9ybSwgc3VmZml4KSB7CiAgdGhpcy5wcmVmaXggPSBuZXcgVWludDhBcnJheShwcmVmaXgubGVuZ3RoKTsKICB0aGlzLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKICB0aGlzLnN1ZmZpeCA9IG5ldyBVaW50OEFycmF5KHN1ZmZpeC5sZW5ndGgpOwogIAogIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlZml4Lmxlbmd0aDsgaSsrKQogICAgdGhpcy5wcmVmaXhbaV0gPSBwcmVmaXguY2hhckNvZGVBdChpKTsKICAKICBmb3IgKHZhciBpID0gMDsgaSA8IHN1ZmZpeC5sZW5ndGg7IGkrKykKICAgIHRoaXMuc3VmZml4W2ldID0gc3VmZml4LmNoYXJDb2RlQXQoaSk7Cn0KCnZhciBrVHJhbnNmb3JtcyA9IFsKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIiAiICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIgIiwga0lkZW50aXR5LCAgICAgICAiICIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrT21pdEZpcnN0MSwgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtVcHBlcmNhc2VGaXJzdCwgIiAiICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiIHRoZSAiICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgIiAiLCBrSWRlbnRpdHksICAgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICJzICIsIGtJZGVudGl0eSwgICAgICAgIiAiICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiIG9mICIgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrVXBwZXJjYXNlRmlyc3QsICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIiBhbmQgIiAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga09taXRGaXJzdDIsICAgICAiIiAgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrT21pdExhc3QxLCAgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICIsICIsIGtJZGVudGl0eSwgICAgICAgIiAiICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiLCAiICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgIiAiLCBrVXBwZXJjYXNlRmlyc3QsICIgIiAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIiBpbiAiICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiIHRvICIgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAiZSAiLCBrSWRlbnRpdHksICAgICAgICIgIiAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIlwiIiAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiLiIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICJcIj4iICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIlxuIiAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga09taXRMYXN0MywgICAgICAiIiAgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICJdIiAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIiBmb3IgIiAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga09taXRGaXJzdDMsICAgICAiIiAgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrT21pdExhc3QyLCAgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIiBhICIgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiIHRoYXQgIiAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgIiAiLCBrVXBwZXJjYXNlRmlyc3QsICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIi4gIiAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIuIiwga0lkZW50aXR5LCAgICAgICAiIiAgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgIiAiLCBrSWRlbnRpdHksICAgICAgICIsICIgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtPbWl0Rmlyc3Q0LCAgICAgIiIgICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiIHdpdGggIiAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICInIiAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIiBmcm9tICIgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiIGJ5ICIgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrT21pdEZpcnN0NSwgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtPbWl0Rmlyc3Q2LCAgICAgIiIgICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgIiB0aGUgIiwga0lkZW50aXR5LCAgICAgICAiIiAgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrT21pdExhc3Q0LCAgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIi4gVGhlICIgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga1VwcGVyY2FzZUFsbCwgICAiIiAgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICIgb24gIiAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIiBhcyAiICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiIGlzICIgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrT21pdExhc3Q3LCAgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtPbWl0TGFzdDEsICAgICAgImluZyAiICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiXG5cdCIgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICI6IiAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAiICIsIGtJZGVudGl0eSwgICAgICAgIi4gIiAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiZWQgIiAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrT21pdEZpcnN0OSwgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtPbWl0Rmlyc3Q3LCAgICAgIiIgICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga09taXRMYXN0NiwgICAgICAiIiAgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICIoIiAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtVcHBlcmNhc2VGaXJzdCwgIiwgIiAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga09taXRMYXN0OCwgICAgICAiIiAgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICIgYXQgIiAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgImx5ICIgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgIiB0aGUgIiwga0lkZW50aXR5LCAgICAgICAiIG9mICIgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrT21pdExhc3Q1LCAgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtPbWl0TGFzdDksICAgICAgIiIgICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIgIiwga1VwcGVyY2FzZUZpcnN0LCAiLCAiICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrVXBwZXJjYXNlRmlyc3QsICJcIiIgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAiLiIsIGtJZGVudGl0eSwgICAgICAgIigiICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga1VwcGVyY2FzZUFsbCwgICAiICIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrVXBwZXJjYXNlRmlyc3QsICJcIj4iICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIj1cIiIgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIgIiwga0lkZW50aXR5LCAgICAgICAiLiIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAiLmNvbS8iLCBrSWRlbnRpdHksICAgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICIgdGhlICIsIGtJZGVudGl0eSwgICAgICAgIiBvZiB0aGUgIiAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga1VwcGVyY2FzZUZpcnN0LCAiJyIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICIuIFRoaXMgIiAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIiwiICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIuIiwga0lkZW50aXR5LCAgICAgICAiICIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrVXBwZXJjYXNlRmlyc3QsICIoIiAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtVcHBlcmNhc2VGaXJzdCwgIi4iICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiIG5vdCAiICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgIiAiLCBrSWRlbnRpdHksICAgICAgICI9XCIiICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgImVyICIgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIgIiwga1VwcGVyY2FzZUFsbCwgICAiICIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICJhbCAiICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAiICIsIGtVcHBlcmNhc2VBbGwsICAgIiIgICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiPSciICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrVXBwZXJjYXNlQWxsLCAgICJcIiIgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtVcHBlcmNhc2VGaXJzdCwgIi4gIiAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIgIiwga0lkZW50aXR5LCAgICAgICAiKCIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICJmdWwgIiAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAiICIsIGtVcHBlcmNhc2VGaXJzdCwgIi4gIiAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiaXZlICIgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICJsZXNzICIgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtVcHBlcmNhc2VBbGwsICAgIiciICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiZXN0ICIgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgIiAiLCBrVXBwZXJjYXNlRmlyc3QsICIuIiAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtVcHBlcmNhc2VBbGwsICAgIlwiPiIgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIgIiwga0lkZW50aXR5LCAgICAgICAiPSciICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrVXBwZXJjYXNlRmlyc3QsICIsIiAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIml6ZSAiICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga1VwcGVyY2FzZUFsbCwgICAiLiIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAiXHhjMlx4YTAiLCBrSWRlbnRpdHksICAgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAiICIsIGtJZGVudGl0eSwgICAgICAgIiwiICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga1VwcGVyY2FzZUZpcnN0LCAiPVwiIiAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrVXBwZXJjYXNlQWxsLCAgICI9XCIiICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIm91cyAiICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga1VwcGVyY2FzZUFsbCwgICAiLCAiICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrVXBwZXJjYXNlRmlyc3QsICI9JyIgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAiICIsIGtVcHBlcmNhc2VGaXJzdCwgIiwiICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIgIiwga1VwcGVyY2FzZUFsbCwgICAiPVwiIiAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgIiAiLCBrVXBwZXJjYXNlQWxsLCAgICIsICIgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtVcHBlcmNhc2VBbGwsICAgIiwiICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga1VwcGVyY2FzZUFsbCwgICAiKCIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrVXBwZXJjYXNlQWxsLCAgICIuICIgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAiICIsIGtVcHBlcmNhc2VBbGwsICAgIi4iICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga1VwcGVyY2FzZUFsbCwgICAiPSciICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgIiAiLCBrVXBwZXJjYXNlQWxsLCAgICIuICIgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAiICIsIGtVcHBlcmNhc2VGaXJzdCwgIj1cIiIgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIgIiwga1VwcGVyY2FzZUFsbCwgICAiPSciICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgIiAiLCBrVXBwZXJjYXNlRmlyc3QsICI9JyIgICAgICAgICApCl07CgpleHBvcnRzLmtUcmFuc2Zvcm1zID0ga1RyYW5zZm9ybXM7CmV4cG9ydHMua051bVRyYW5zZm9ybXMgPSBrVHJhbnNmb3Jtcy5sZW5ndGg7CgpmdW5jdGlvbiBUb1VwcGVyQ2FzZShwLCBpKSB7CiAgaWYgKHBbaV0gPCAweGMwKSB7CiAgICBpZiAocFtpXSA+PSA5NyAmJiBwW2ldIDw9IDEyMikgewogICAgICBwW2ldIF49IDMyOwogICAgfQogICAgcmV0dXJuIDE7CiAgfQogIAogIC8qIEFuIG92ZXJseSBzaW1wbGlmaWVkIHVwcGVyY2FzaW5nIG1vZGVsIGZvciB1dGYtOC4gKi8KICBpZiAocFtpXSA8IDB4ZTApIHsKICAgIHBbaSArIDFdIF49IDMyOwogICAgcmV0dXJuIDI7CiAgfQogIAogIC8qIEFuIGFyYml0cmFyeSB0cmFuc2Zvcm0gZm9yIHRocmVlIGJ5dGUgY2hhcmFjdGVycy4gKi8KICBwW2kgKyAyXSBePSA1OwogIHJldHVybiAzOwp9CgpleHBvcnRzLnRyYW5zZm9ybURpY3Rpb25hcnlXb3JkID0gZnVuY3Rpb24oZHN0LCBpZHgsIHdvcmQsIGxlbiwgdHJhbnNmb3JtKSB7CiAgdmFyIHByZWZpeCA9IGtUcmFuc2Zvcm1zW3RyYW5zZm9ybV0ucHJlZml4OwogIHZhciBzdWZmaXggPSBrVHJhbnNmb3Jtc1t0cmFuc2Zvcm1dLnN1ZmZpeDsKICB2YXIgdCA9IGtUcmFuc2Zvcm1zW3RyYW5zZm9ybV0udHJhbnNmb3JtOwogIHZhciBza2lwID0gdCA8IGtPbWl0Rmlyc3QxID8gMCA6IHQgLSAoa09taXRGaXJzdDEgLSAxKTsKICB2YXIgaSA9IDA7CiAgdmFyIHN0YXJ0X2lkeCA9IGlkeDsKICB2YXIgdXBwZXJjYXNlOwogIAogIGlmIChza2lwID4gbGVuKSB7CiAgICBza2lwID0gbGVuOwogIH0KICAKICB2YXIgcHJlZml4X3BvcyA9IDA7CiAgd2hpbGUgKHByZWZpeF9wb3MgPCBwcmVmaXgubGVuZ3RoKSB7CiAgICBkc3RbaWR4KytdID0gcHJlZml4W3ByZWZpeF9wb3MrK107CiAgfQogIAogIHdvcmQgKz0gc2tpcDsKICBsZW4gLT0gc2tpcDsKICAKICBpZiAodCA8PSBrT21pdExhc3Q5KSB7CiAgICBsZW4gLT0gdDsKICB9CiAgCiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICBkc3RbaWR4KytdID0gQnJvdGxpRGljdGlvbmFyeS5kaWN0aW9uYXJ5W3dvcmQgKyBpXTsKICB9CiAgCiAgdXBwZXJjYXNlID0gaWR4IC0gbGVuOwogIAogIGlmICh0ID09PSBrVXBwZXJjYXNlRmlyc3QpIHsKICAgIFRvVXBwZXJDYXNlKGRzdCwgdXBwZXJjYXNlKTsKICB9IGVsc2UgaWYgKHQgPT09IGtVcHBlcmNhc2VBbGwpIHsKICAgIHdoaWxlIChsZW4gPiAwKSB7CiAgICAgIHZhciBzdGVwID0gVG9VcHBlckNhc2UoZHN0LCB1cHBlcmNhc2UpOwogICAgICB1cHBlcmNhc2UgKz0gc3RlcDsKICAgICAgbGVuIC09IHN0ZXA7CiAgICB9CiAgfQogIAogIHZhciBzdWZmaXhfcG9zID0gMDsKICB3aGlsZSAoc3VmZml4X3BvcyA8IHN1ZmZpeC5sZW5ndGgpIHsKICAgIGRzdFtpZHgrK10gPSBzdWZmaXhbc3VmZml4X3BvcysrXTsKICB9CiAgCiAgcmV0dXJuIGlkeCAtIHN0YXJ0X2lkeDsKfQoKCi8qKiovIH0pLAovKiAyOTIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKF9fZGlybmFtZSkgey8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CihmdW5jdGlvbigpIHsKICB2YXIgQUZNRm9udCwgUERGRm9udCwgU3RhbmRhcmRGb250LCBmcywKICAgIGV4dGVuZCA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsgZm9yICh2YXIga2V5IGluIHBhcmVudCkgeyBpZiAoaGFzUHJvcC5jYWxsKHBhcmVudCwga2V5KSkgY2hpbGRba2V5XSA9IHBhcmVudFtrZXldOyB9IGZ1bmN0aW9uIGN0b3IoKSB7IHRoaXMuY29uc3RydWN0b3IgPSBjaGlsZDsgfSBjdG9yLnByb3RvdHlwZSA9IHBhcmVudC5wcm90b3R5cGU7IGNoaWxkLnByb3RvdHlwZSA9IG5ldyBjdG9yKCk7IGNoaWxkLl9fc3VwZXJfXyA9IHBhcmVudC5wcm90b3R5cGU7IHJldHVybiBjaGlsZDsgfSwKICAgIGhhc1Byb3AgPSB7fS5oYXNPd25Qcm9wZXJ0eTsKCiAgQUZNRm9udCA9IF9fd2VicGFja19yZXF1aXJlX18oMjkzKTsKCiAgUERGRm9udCA9IF9fd2VicGFja19yZXF1aXJlX18oNTApOwoKICBmcyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7CgogIFN0YW5kYXJkRm9udCA9IChmdW5jdGlvbihzdXBlckNsYXNzKSB7CiAgICB2YXIgU1RBTkRBUkRfRk9OVFM7CgogICAgZXh0ZW5kKFN0YW5kYXJkRm9udCwgc3VwZXJDbGFzcyk7CgogICAgZnVuY3Rpb24gU3RhbmRhcmRGb250KGRvY3VtZW50LCBuYW1lMSwgaWQpIHsKICAgICAgdmFyIHJlZjsKICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50OwogICAgICB0aGlzLm5hbWUgPSBuYW1lMTsKICAgICAgdGhpcy5pZCA9IGlkOwogICAgICB0aGlzLmZvbnQgPSBuZXcgQUZNRm9udChTVEFOREFSRF9GT05UU1t0aGlzLm5hbWVdKCkpOwogICAgICByZWYgPSB0aGlzLmZvbnQsIHRoaXMuYXNjZW5kZXIgPSByZWYuYXNjZW5kZXIsIHRoaXMuZGVzY2VuZGVyID0gcmVmLmRlc2NlbmRlciwgdGhpcy5iYm94ID0gcmVmLmJib3gsIHRoaXMubGluZUdhcCA9IHJlZi5saW5lR2FwOwogICAgfQoKICAgIFN0YW5kYXJkRm9udC5wcm90b3R5cGUuZW1iZWQgPSBmdW5jdGlvbigpIHsKICAgICAgdGhpcy5kaWN0aW9uYXJ5LmRhdGEgPSB7CiAgICAgICAgVHlwZTogJ0ZvbnQnLAogICAgICAgIEJhc2VGb250OiB0aGlzLm5hbWUsCiAgICAgICAgU3VidHlwZTogJ1R5cGUxJywKICAgICAgICBFbmNvZGluZzogJ1dpbkFuc2lFbmNvZGluZycKICAgICAgfTsKICAgICAgcmV0dXJuIHRoaXMuZGljdGlvbmFyeS5lbmQoKTsKICAgIH07CgogICAgU3RhbmRhcmRGb250LnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbih0ZXh0KSB7CiAgICAgIHZhciBhZHZhbmNlcywgZW5jb2RlZCwgZ2x5cGgsIGdseXBocywgaSwgaiwgbGVuLCBwb3NpdGlvbnM7CiAgICAgIGVuY29kZWQgPSB0aGlzLmZvbnQuZW5jb2RlVGV4dCh0ZXh0KTsKICAgICAgZ2x5cGhzID0gdGhpcy5mb250LmdseXBoc0ZvclN0cmluZygnJyArIHRleHQpOwogICAgICBhZHZhbmNlcyA9IHRoaXMuZm9udC5hZHZhbmNlc0ZvckdseXBocyhnbHlwaHMpOwogICAgICBwb3NpdGlvbnMgPSBbXTsKICAgICAgZm9yIChpID0gaiA9IDAsIGxlbiA9IGdseXBocy5sZW5ndGg7IGogPCBsZW47IGkgPSArK2opIHsKICAgICAgICBnbHlwaCA9IGdseXBoc1tpXTsKICAgICAgICBwb3NpdGlvbnMucHVzaCh7CiAgICAgICAgICB4QWR2YW5jZTogYWR2YW5jZXNbaV0sCiAgICAgICAgICB5QWR2YW5jZTogMCwKICAgICAgICAgIHhPZmZzZXQ6IDAsCiAgICAgICAgICB5T2Zmc2V0OiAwLAogICAgICAgICAgYWR2YW5jZVdpZHRoOiB0aGlzLmZvbnQud2lkdGhPZkdseXBoKGdseXBoKQogICAgICAgIH0pOwogICAgICB9CiAgICAgIHJldHVybiBbZW5jb2RlZCwgcG9zaXRpb25zXTsKICAgIH07CgogICAgU3RhbmRhcmRGb250LnByb3RvdHlwZS53aWR0aE9mU3RyaW5nID0gZnVuY3Rpb24oc3RyaW5nLCBzaXplKSB7CiAgICAgIHZhciBhZHZhbmNlLCBhZHZhbmNlcywgZ2x5cGhzLCBqLCBsZW4sIHNjYWxlLCB3aWR0aDsKICAgICAgZ2x5cGhzID0gdGhpcy5mb250LmdseXBoc0ZvclN0cmluZygnJyArIHN0cmluZyk7CiAgICAgIGFkdmFuY2VzID0gdGhpcy5mb250LmFkdmFuY2VzRm9yR2x5cGhzKGdseXBocyk7CiAgICAgIHdpZHRoID0gMDsKICAgICAgZm9yIChqID0gMCwgbGVuID0gYWR2YW5jZXMubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHsKICAgICAgICBhZHZhbmNlID0gYWR2YW5jZXNbal07CiAgICAgICAgd2lkdGggKz0gYWR2YW5jZTsKICAgICAgfQogICAgICBzY2FsZSA9IHNpemUgLyAxMDAwOwogICAgICByZXR1cm4gd2lkdGggKiBzY2FsZTsKICAgIH07CgogICAgU3RhbmRhcmRGb250LmlzU3RhbmRhcmRGb250ID0gZnVuY3Rpb24obmFtZSkgewogICAgICByZXR1cm4gbmFtZSBpbiBTVEFOREFSRF9GT05UUzsKICAgIH07CgogICAgU1RBTkRBUkRfRk9OVFMgPSB7CiAgICAgICJDb3VyaWVyIjogZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhfX2Rpcm5hbWUgKyAiLy4uL2ZvbnQvZGF0YS9Db3VyaWVyLmFmbSIsICd1dGY4Jyk7CiAgICAgIH0sCiAgICAgICJDb3VyaWVyLUJvbGQiOiBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKF9fZGlybmFtZSArICIvLi4vZm9udC9kYXRhL0NvdXJpZXItQm9sZC5hZm0iLCAndXRmOCcpOwogICAgICB9LAogICAgICAiQ291cmllci1PYmxpcXVlIjogZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhfX2Rpcm5hbWUgKyAiLy4uL2ZvbnQvZGF0YS9Db3VyaWVyLU9ibGlxdWUuYWZtIiwgJ3V0ZjgnKTsKICAgICAgfSwKICAgICAgIkNvdXJpZXItQm9sZE9ibGlxdWUiOiBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKF9fZGlybmFtZSArICIvLi4vZm9udC9kYXRhL0NvdXJpZXItQm9sZE9ibGlxdWUuYWZtIiwgJ3V0ZjgnKTsKICAgICAgfSwKICAgICAgIkhlbHZldGljYSI6IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMoX19kaXJuYW1lICsgIi8uLi9mb250L2RhdGEvSGVsdmV0aWNhLmFmbSIsICd1dGY4Jyk7CiAgICAgIH0sCiAgICAgICJIZWx2ZXRpY2EtQm9sZCI6IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMoX19kaXJuYW1lICsgIi8uLi9mb250L2RhdGEvSGVsdmV0aWNhLUJvbGQuYWZtIiwgJ3V0ZjgnKTsKICAgICAgfSwKICAgICAgIkhlbHZldGljYS1PYmxpcXVlIjogZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhfX2Rpcm5hbWUgKyAiLy4uL2ZvbnQvZGF0YS9IZWx2ZXRpY2EtT2JsaXF1ZS5hZm0iLCAndXRmOCcpOwogICAgICB9LAogICAgICAiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjogZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhfX2Rpcm5hbWUgKyAiLy4uL2ZvbnQvZGF0YS9IZWx2ZXRpY2EtQm9sZE9ibGlxdWUuYWZtIiwgJ3V0ZjgnKTsKICAgICAgfSwKICAgICAgIlRpbWVzLVJvbWFuIjogZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhfX2Rpcm5hbWUgKyAiLy4uL2ZvbnQvZGF0YS9UaW1lcy1Sb21hbi5hZm0iLCAndXRmOCcpOwogICAgICB9LAogICAgICAiVGltZXMtQm9sZCI6IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMoX19kaXJuYW1lICsgIi8uLi9mb250L2RhdGEvVGltZXMtQm9sZC5hZm0iLCAndXRmOCcpOwogICAgICB9LAogICAgICAiVGltZXMtSXRhbGljIjogZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhfX2Rpcm5hbWUgKyAiLy4uL2ZvbnQvZGF0YS9UaW1lcy1JdGFsaWMuYWZtIiwgJ3V0ZjgnKTsKICAgICAgfSwKICAgICAgIlRpbWVzLUJvbGRJdGFsaWMiOiBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKF9fZGlybmFtZSArICIvLi4vZm9udC9kYXRhL1RpbWVzLUJvbGRJdGFsaWMuYWZtIiwgJ3V0ZjgnKTsKICAgICAgfSwKICAgICAgIlN5bWJvbCI6IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMoX19kaXJuYW1lICsgIi8uLi9mb250L2RhdGEvU3ltYm9sLmFmbSIsICd1dGY4Jyk7CiAgICAgIH0sCiAgICAgICJaYXBmRGluZ2JhdHMiOiBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKF9fZGlybmFtZSArICIvLi4vZm9udC9kYXRhL1phcGZEaW5nYmF0cy5hZm0iLCAndXRmOCcpOwogICAgICB9CiAgICB9OwoKICAgIHJldHVybiBTdGFuZGFyZEZvbnQ7CgogIH0pKFBERkZvbnQpOwoKICBtb2R1bGUuZXhwb3J0cyA9IFN0YW5kYXJkRm9udDsKCn0pLmNhbGwodGhpcyk7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgIi8iKSkKCi8qKiovIH0pLAovKiAyOTMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjEyLjYKKGZ1bmN0aW9uKCkgewogIHZhciBBRk1Gb250LCBmczsKCiAgZnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpOwoKICBBRk1Gb250ID0gKGZ1bmN0aW9uKCkgewogICAgdmFyIFdJTl9BTlNJX01BUCwgY2hhcmFjdGVyczsKCiAgICBBRk1Gb250Lm9wZW4gPSBmdW5jdGlvbihmaWxlbmFtZSkgewogICAgICByZXR1cm4gbmV3IEFGTUZvbnQoZnMucmVhZEZpbGVTeW5jKGZpbGVuYW1lLCAndXRmOCcpKTsKICAgIH07CgogICAgZnVuY3Rpb24gQUZNRm9udChjb250ZW50cykgewogICAgICB2YXIgZSwgaTsKICAgICAgdGhpcy5jb250ZW50cyA9IGNvbnRlbnRzOwogICAgICB0aGlzLmF0dHJpYnV0ZXMgPSB7fTsKICAgICAgdGhpcy5nbHlwaFdpZHRocyA9IHt9OwogICAgICB0aGlzLmJvdW5kaW5nQm94ZXMgPSB7fTsKICAgICAgdGhpcy5rZXJuUGFpcnMgPSB7fTsKICAgICAgdGhpcy5wYXJzZSgpOwogICAgICB0aGlzLmNoYXJXaWR0aHMgPSAoZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGosIHJlc3VsdHM7CiAgICAgICAgcmVzdWx0cyA9IFtdOwogICAgICAgIGZvciAoaSA9IGogPSAwOyBqIDw9IDI1NTsgaSA9ICsraikgewogICAgICAgICAgcmVzdWx0cy5wdXNoKHRoaXMuZ2x5cGhXaWR0aHNbY2hhcmFjdGVyc1tpXV0pOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgfSkuY2FsbCh0aGlzKTsKICAgICAgdGhpcy5iYm94ID0gKGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBqLCBsZW4sIHJlZiwgcmVzdWx0czsKICAgICAgICByZWYgPSB0aGlzLmF0dHJpYnV0ZXNbJ0ZvbnRCQm94J10uc3BsaXQoL1xzKy8pOwogICAgICAgIHJlc3VsdHMgPSBbXTsKICAgICAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHsKICAgICAgICAgIGUgPSByZWZbal07CiAgICAgICAgICByZXN1bHRzLnB1c2goK2UpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgfSkuY2FsbCh0aGlzKTsKICAgICAgdGhpcy5hc2NlbmRlciA9ICsodGhpcy5hdHRyaWJ1dGVzWydBc2NlbmRlciddIHx8IDApOwogICAgICB0aGlzLmRlc2NlbmRlciA9ICsodGhpcy5hdHRyaWJ1dGVzWydEZXNjZW5kZXInXSB8fCAwKTsKICAgICAgdGhpcy5saW5lR2FwID0gKHRoaXMuYmJveFszXSAtIHRoaXMuYmJveFsxXSkgLSAodGhpcy5hc2NlbmRlciAtIHRoaXMuZGVzY2VuZGVyKTsKICAgIH0KCiAgICBBRk1Gb250LnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgYSwgaiwga2V5LCBsZW4sIGxpbmUsIG1hdGNoLCBuYW1lLCByZWYsIHNlY3Rpb24sIHZhbHVlOwogICAgICBzZWN0aW9uID0gJyc7CiAgICAgIHJlZiA9IHRoaXMuY29udGVudHMuc3BsaXQoJ1xuJyk7CiAgICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGogPCBsZW47IGorKykgewogICAgICAgIGxpbmUgPSByZWZbal07CiAgICAgICAgaWYgKG1hdGNoID0gbGluZS5tYXRjaCgvXlN0YXJ0KFx3KykvKSkgewogICAgICAgICAgc2VjdGlvbiA9IG1hdGNoWzFdOwogICAgICAgICAgY29udGludWU7CiAgICAgICAgfSBlbHNlIGlmIChtYXRjaCA9IGxpbmUubWF0Y2goL15FbmQoXHcrKS8pKSB7CiAgICAgICAgICBzZWN0aW9uID0gJyc7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgc3dpdGNoIChzZWN0aW9uKSB7CiAgICAgICAgICBjYXNlICdGb250TWV0cmljcyc6CiAgICAgICAgICAgIG1hdGNoID0gbGluZS5tYXRjaCgvKF5cdyspXHMrKC4qKS8pOwogICAgICAgICAgICBrZXkgPSBtYXRjaFsxXTsKICAgICAgICAgICAgdmFsdWUgPSBtYXRjaFsyXTsKICAgICAgICAgICAgaWYgKGEgPSB0aGlzLmF0dHJpYnV0ZXNba2V5XSkgewogICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShhKSkgewogICAgICAgICAgICAgICAgYSA9IHRoaXMuYXR0cmlidXRlc1trZXldID0gW2FdOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBhLnB1c2godmFsdWUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlc1trZXldID0gdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdDaGFyTWV0cmljcyc6CiAgICAgICAgICAgIGlmICghL15DSD9ccy8udGVzdChsaW5lKSkgewogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG5hbWUgPSBsaW5lLm1hdGNoKC9cYk5ccysoXC4/XHcrKVxzKjsvKVsxXTsKICAgICAgICAgICAgdGhpcy5nbHlwaFdpZHRoc1tuYW1lXSA9ICtsaW5lLm1hdGNoKC9cYldYXHMrKFxkKylccyo7LylbMV07CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnS2VyblBhaXJzJzoKICAgICAgICAgICAgbWF0Y2ggPSBsaW5lLm1hdGNoKC9eS1BYXHMrKFwuP1x3KylccysoXC4/XHcrKVxzKygtP1xkKykvKTsKICAgICAgICAgICAgaWYgKG1hdGNoKSB7CiAgICAgICAgICAgICAgdGhpcy5rZXJuUGFpcnNbbWF0Y2hbMV0gKyAnXDAnICsgbWF0Y2hbMl1dID0gcGFyc2VJbnQobWF0Y2hbM10pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9OwoKICAgIFdJTl9BTlNJX01BUCA9IHsKICAgICAgNDAyOiAxMzEsCiAgICAgIDgyMTE6IDE1MCwKICAgICAgODIxMjogMTUxLAogICAgICA4MjE2OiAxNDUsCiAgICAgIDgyMTc6IDE0NiwKICAgICAgODIxODogMTMwLAogICAgICA4MjIwOiAxNDcsCiAgICAgIDgyMjE6IDE0OCwKICAgICAgODIyMjogMTMyLAogICAgICA4MjI0OiAxMzQsCiAgICAgIDgyMjU6IDEzNSwKICAgICAgODIyNjogMTQ5LAogICAgICA4MjMwOiAxMzMsCiAgICAgIDgzNjQ6IDEyOCwKICAgICAgODI0MDogMTM3LAogICAgICA4MjQ5OiAxMzksCiAgICAgIDgyNTA6IDE1NSwKICAgICAgNzEwOiAxMzYsCiAgICAgIDg0ODI6IDE1MywKICAgICAgMzM4OiAxNDAsCiAgICAgIDMzOTogMTU2LAogICAgICA3MzI6IDE1MiwKICAgICAgMzUyOiAxMzgsCiAgICAgIDM1MzogMTU0LAogICAgICAzNzY6IDE1OSwKICAgICAgMzgxOiAxNDIsCiAgICAgIDM4MjogMTU4CiAgICB9OwoKICAgIEFGTUZvbnQucHJvdG90eXBlLmVuY29kZVRleHQgPSBmdW5jdGlvbih0ZXh0KSB7CiAgICAgIHZhciBjaGFyLCBpLCBqLCByZWYsIHJlczsKICAgICAgcmVzID0gW107CiAgICAgIGZvciAoaSA9IGogPSAwLCByZWYgPSB0ZXh0Lmxlbmd0aDsgMCA8PSByZWYgPyBqIDwgcmVmIDogaiA+IHJlZjsgaSA9IDAgPD0gcmVmID8gKytqIDogLS1qKSB7CiAgICAgICAgY2hhciA9IHRleHQuY2hhckNvZGVBdChpKTsKICAgICAgICBjaGFyID0gV0lOX0FOU0lfTUFQW2NoYXJdIHx8IGNoYXI7CiAgICAgICAgcmVzLnB1c2goY2hhci50b1N0cmluZygxNikpOwogICAgICB9CiAgICAgIHJldHVybiByZXM7CiAgICB9OwoKICAgIEFGTUZvbnQucHJvdG90eXBlLmdseXBoc0ZvclN0cmluZyA9IGZ1bmN0aW9uKHN0cmluZykgewogICAgICB2YXIgY2hhckNvZGUsIGdseXBocywgaSwgaiwgcmVmOwogICAgICBnbHlwaHMgPSBbXTsKICAgICAgZm9yIChpID0gaiA9IDAsIHJlZiA9IHN0cmluZy5sZW5ndGg7IDAgPD0gcmVmID8gaiA8IHJlZiA6IGogPiByZWY7IGkgPSAwIDw9IHJlZiA/ICsraiA6IC0taikgewogICAgICAgIGNoYXJDb2RlID0gc3RyaW5nLmNoYXJDb2RlQXQoaSk7CiAgICAgICAgZ2x5cGhzLnB1c2godGhpcy5jaGFyYWN0ZXJUb0dseXBoKGNoYXJDb2RlKSk7CiAgICAgIH0KICAgICAgcmV0dXJuIGdseXBoczsKICAgIH07CgogICAgQUZNRm9udC5wcm90b3R5cGUuY2hhcmFjdGVyVG9HbHlwaCA9IGZ1bmN0aW9uKGNoYXJhY3RlcikgewogICAgICByZXR1cm4gY2hhcmFjdGVyc1tXSU5fQU5TSV9NQVBbY2hhcmFjdGVyXSB8fCBjaGFyYWN0ZXJdIHx8ICcubm90ZGVmJzsKICAgIH07CgogICAgQUZNRm9udC5wcm90b3R5cGUud2lkdGhPZkdseXBoID0gZnVuY3Rpb24oZ2x5cGgpIHsKICAgICAgcmV0dXJuIHRoaXMuZ2x5cGhXaWR0aHNbZ2x5cGhdIHx8IDA7CiAgICB9OwoKICAgIEFGTUZvbnQucHJvdG90eXBlLmdldEtlcm5QYWlyID0gZnVuY3Rpb24obGVmdCwgcmlnaHQpIHsKICAgICAgcmV0dXJuIHRoaXMua2VyblBhaXJzW2xlZnQgKyAnXDAnICsgcmlnaHRdIHx8IDA7CiAgICB9OwoKICAgIEFGTUZvbnQucHJvdG90eXBlLmFkdmFuY2VzRm9yR2x5cGhzID0gZnVuY3Rpb24oZ2x5cGhzKSB7CiAgICAgIHZhciBhZHZhbmNlcywgaW5kZXgsIGosIGxlZnQsIGxlbiwgcmlnaHQ7CiAgICAgIGFkdmFuY2VzID0gW107CiAgICAgIGZvciAoaW5kZXggPSBqID0gMCwgbGVuID0gZ2x5cGhzLmxlbmd0aDsgaiA8IGxlbjsgaW5kZXggPSArK2opIHsKICAgICAgICBsZWZ0ID0gZ2x5cGhzW2luZGV4XTsKICAgICAgICByaWdodCA9IGdseXBoc1tpbmRleCArIDFdOwogICAgICAgIGFkdmFuY2VzLnB1c2godGhpcy53aWR0aE9mR2x5cGgobGVmdCkgKyB0aGlzLmdldEtlcm5QYWlyKGxlZnQsIHJpZ2h0KSk7CiAgICAgIH0KICAgICAgcmV0dXJuIGFkdmFuY2VzOwogICAgfTsKCiAgICBjaGFyYWN0ZXJzID0gJy5ub3RkZWYgICAgICAgLm5vdGRlZiAgICAgICAgLm5vdGRlZiAgICAgICAgLm5vdGRlZlxuLm5vdGRlZiAgICAgICAubm90ZGVmICAgICAgICAubm90ZGVmICAgICAgICAubm90ZGVmXG4ubm90ZGVmICAgICAgIC5ub3RkZWYgICAgICAgIC5ub3RkZWYgICAgICAgIC5ub3RkZWZcbi5ub3RkZWYgICAgICAgLm5vdGRlZiAgICAgICAgLm5vdGRlZiAgICAgICAgLm5vdGRlZlxuLm5vdGRlZiAgICAgICAubm90ZGVmICAgICAgICAubm90ZGVmICAgICAgICAubm90ZGVmXG4ubm90ZGVmICAgICAgIC5ub3RkZWYgICAgICAgIC5ub3RkZWYgICAgICAgIC5ub3RkZWZcbi5ub3RkZWYgICAgICAgLm5vdGRlZiAgICAgICAgLm5vdGRlZiAgICAgICAgLm5vdGRlZlxuLm5vdGRlZiAgICAgICAubm90ZGVmICAgICAgICAubm90ZGVmICAgICAgICAubm90ZGVmXG5cbnNwYWNlICAgICAgICAgZXhjbGFtICAgICAgICAgcXVvdGVkYmwgICAgICAgbnVtYmVyc2lnblxuZG9sbGFyICAgICAgICBwZXJjZW50ICAgICAgICBhbXBlcnNhbmQgICAgICBxdW90ZXNpbmdsZVxucGFyZW5sZWZ0ICAgICBwYXJlbnJpZ2h0ICAgICBhc3RlcmlzayAgICAgICBwbHVzXG5jb21tYSAgICAgICAgIGh5cGhlbiAgICAgICAgIHBlcmlvZCAgICAgICAgIHNsYXNoXG56ZXJvICAgICAgICAgIG9uZSAgICAgICAgICAgIHR3byAgICAgICAgICAgIHRocmVlXG5mb3VyICAgICAgICAgIGZpdmUgICAgICAgICAgIHNpeCAgICAgICAgICAgIHNldmVuXG5laWdodCAgICAgICAgIG5pbmUgICAgICAgICAgIGNvbG9uICAgICAgICAgIHNlbWljb2xvblxubGVzcyAgICAgICAgICBlcXVhbCAgICAgICAgICBncmVhdGVyICAgICAgICBxdWVzdGlvblxuXG5hdCAgICAgICAgICAgIEEgICAgICAgICAgICAgIEIgICAgICAgICAgICAgIENcbkQgICAgICAgICAgICAgRSAgICAgICAgICAgICAgRiAgICAgICAgICAgICAgR1xuSCAgICAgICAgICAgICBJICAgICAgICAgICAgICBKICAgICAgICAgICAgICBLXG5MICAgICAgICAgICAgIE0gICAgICAgICAgICAgIE4gICAgICAgICAgICAgIE9cblAgICAgICAgICAgICAgUSAgICAgICAgICAgICAgUiAgICAgICAgICAgICAgU1xuVCAgICAgICAgICAgICBVICAgICAgICAgICAgICBWICAgICAgICAgICAgICBXXG5YICAgICAgICAgICAgIFkgICAgICAgICAgICAgIFogICAgICAgICAgICAgIGJyYWNrZXRsZWZ0XG5iYWNrc2xhc2ggICAgIGJyYWNrZXRyaWdodCAgIGFzY2lpY2lyY3VtICAgIHVuZGVyc2NvcmVcblxuZ3JhdmUgICAgICAgICBhICAgICAgICAgICAgICBiICAgICAgICAgICAgICBjXG5kICAgICAgICAgICAgIGUgICAgICAgICAgICAgIGYgICAgICAgICAgICAgIGdcbmggICAgICAgICAgICAgaSAgICAgICAgICAgICAgaiAgICAgICAgICAgICAga1xubCAgICAgICAgICAgICBtICAgICAgICAgICAgICBuICAgICAgICAgICAgICBvXG5wICAgICAgICAgICAgIHEgICAgICAgICAgICAgIHIgICAgICAgICAgICAgIHNcbnQgICAgICAgICAgICAgdSAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgd1xueCAgICAgICAgICAgICB5ICAgICAgICAgICAgICB6ICAgICAgICAgICAgICBicmFjZWxlZnRcbmJhciAgICAgICAgICAgYnJhY2VyaWdodCAgICAgYXNjaWl0aWxkZSAgICAgLm5vdGRlZlxuXG5FdXJvICAgICAgICAgIC5ub3RkZWYgICAgICAgIHF1b3Rlc2luZ2xiYXNlIGZsb3JpblxucXVvdGVkYmxiYXNlICBlbGxpcHNpcyAgICAgICBkYWdnZXIgICAgICAgICBkYWdnZXJkYmxcbmNpcmN1bWZsZXggICAgcGVydGhvdXNhbmQgICAgU2Nhcm9uICAgICAgICAgZ3VpbHNpbmdsbGVmdFxuT0UgICAgICAgICAgICAubm90ZGVmICAgICAgICBaY2Fyb24gICAgICAgICAubm90ZGVmXG4ubm90ZGVmICAgICAgIHF1b3RlbGVmdCAgICAgIHF1b3RlcmlnaHQgICAgIHF1b3RlZGJsbGVmdFxucXVvdGVkYmxyaWdodCBidWxsZXQgICAgICAgICBlbmRhc2ggICAgICAgICBlbWRhc2hcbnRpbGRlICAgICAgICAgdHJhZGVtYXJrICAgICAgc2Nhcm9uICAgICAgICAgZ3VpbHNpbmdscmlnaHRcbm9lICAgICAgICAgICAgLm5vdGRlZiAgICAgICAgemNhcm9uICAgICAgICAgeWRpZXJlc2lzXG5cbnNwYWNlICAgICAgICAgZXhjbGFtZG93biAgICAgY2VudCAgICAgICAgICAgc3RlcmxpbmdcbmN1cnJlbmN5ICAgICAgeWVuICAgICAgICAgICAgYnJva2VuYmFyICAgICAgc2VjdGlvblxuZGllcmVzaXMgICAgICBjb3B5cmlnaHQgICAgICBvcmRmZW1pbmluZSAgICBndWlsbGVtb3RsZWZ0XG5sb2dpY2Fsbm90ICAgIGh5cGhlbiAgICAgICAgIHJlZ2lzdGVyZWQgICAgIG1hY3JvblxuZGVncmVlICAgICAgICBwbHVzbWludXMgICAgICB0d29zdXBlcmlvciAgICB0aHJlZXN1cGVyaW9yXG5hY3V0ZSAgICAgICAgIG11ICAgICAgICAgICAgIHBhcmFncmFwaCAgICAgIHBlcmlvZGNlbnRlcmVkXG5jZWRpbGxhICAgICAgIG9uZXN1cGVyaW9yICAgIG9yZG1hc2N1bGluZSAgIGd1aWxsZW1vdHJpZ2h0XG5vbmVxdWFydGVyICAgIG9uZWhhbGYgICAgICAgIHRocmVlcXVhcnRlcnMgIHF1ZXN0aW9uZG93blxuXG5BZ3JhdmUgICAgICAgIEFhY3V0ZSAgICAgICAgIEFjaXJjdW1mbGV4ICAgIEF0aWxkZVxuQWRpZXJlc2lzICAgICBBcmluZyAgICAgICAgICBBRSAgICAgICAgICAgICBDY2VkaWxsYVxuRWdyYXZlICAgICAgICBFYWN1dGUgICAgICAgICBFY2lyY3VtZmxleCAgICBFZGllcmVzaXNcbklncmF2ZSAgICAgICAgSWFjdXRlICAgICAgICAgSWNpcmN1bWZsZXggICAgSWRpZXJlc2lzXG5FdGggICAgICAgICAgIE50aWxkZSAgICAgICAgIE9ncmF2ZSAgICAgICAgIE9hY3V0ZVxuT2NpcmN1bWZsZXggICBPdGlsZGUgICAgICAgICBPZGllcmVzaXMgICAgICBtdWx0aXBseVxuT3NsYXNoICAgICAgICBVZ3JhdmUgICAgICAgICBVYWN1dGUgICAgICAgICBVY2lyY3VtZmxleFxuVWRpZXJlc2lzICAgICBZYWN1dGUgICAgICAgICBUaG9ybiAgICAgICAgICBnZXJtYW5kYmxzXG5cbmFncmF2ZSAgICAgICAgYWFjdXRlICAgICAgICAgYWNpcmN1bWZsZXggICAgYXRpbGRlXG5hZGllcmVzaXMgICAgIGFyaW5nICAgICAgICAgIGFlICAgICAgICAgICAgIGNjZWRpbGxhXG5lZ3JhdmUgICAgICAgIGVhY3V0ZSAgICAgICAgIGVjaXJjdW1mbGV4ICAgIGVkaWVyZXNpc1xuaWdyYXZlICAgICAgICBpYWN1dGUgICAgICAgICBpY2lyY3VtZmxleCAgICBpZGllcmVzaXNcbmV0aCAgICAgICAgICAgbnRpbGRlICAgICAgICAgb2dyYXZlICAgICAgICAgb2FjdXRlXG5vY2lyY3VtZmxleCAgIG90aWxkZSAgICAgICAgIG9kaWVyZXNpcyAgICAgIGRpdmlkZVxub3NsYXNoICAgICAgICB1Z3JhdmUgICAgICAgICB1YWN1dGUgICAgICAgICB1Y2lyY3VtZmxleFxudWRpZXJlc2lzICAgICB5YWN1dGUgICAgICAgICB0aG9ybiAgICAgICAgICB5ZGllcmVzaXMnLnNwbGl0KC9ccysvKTsKCiAgICByZXR1cm4gQUZNRm9udDsKCiAgfSkoKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBBRk1Gb250OwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMjk0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CihmdW5jdGlvbigpIHsKICB2YXIgRW1iZWRkZWRGb250LCBQREZGb250LCBQREZPYmplY3QsCiAgICBleHRlbmQgPSBmdW5jdGlvbihjaGlsZCwgcGFyZW50KSB7IGZvciAodmFyIGtleSBpbiBwYXJlbnQpIHsgaWYgKGhhc1Byb3AuY2FsbChwYXJlbnQsIGtleSkpIGNoaWxkW2tleV0gPSBwYXJlbnRba2V5XTsgfSBmdW5jdGlvbiBjdG9yKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gY2hpbGQ7IH0gY3Rvci5wcm90b3R5cGUgPSBwYXJlbnQucHJvdG90eXBlOyBjaGlsZC5wcm90b3R5cGUgPSBuZXcgY3RvcigpOyBjaGlsZC5fX3N1cGVyX18gPSBwYXJlbnQucHJvdG90eXBlOyByZXR1cm4gY2hpbGQ7IH0sCiAgICBoYXNQcm9wID0ge30uaGFzT3duUHJvcGVydHksCiAgICBzbGljZSA9IFtdLnNsaWNlOwoKICBQREZGb250ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MCk7CgogIFBERk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjYpOwoKICBFbWJlZGRlZEZvbnQgPSAoZnVuY3Rpb24oc3VwZXJDbGFzcykgewogICAgdmFyIHRvSGV4OwoKICAgIGV4dGVuZChFbWJlZGRlZEZvbnQsIHN1cGVyQ2xhc3MpOwoKICAgIGZ1bmN0aW9uIEVtYmVkZGVkRm9udChkb2N1bWVudCwgZm9udCwgaWQpIHsKICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50OwogICAgICB0aGlzLmZvbnQgPSBmb250OwogICAgICB0aGlzLmlkID0gaWQ7CiAgICAgIHRoaXMuc3Vic2V0ID0gdGhpcy5mb250LmNyZWF0ZVN1YnNldCgpOwogICAgICB0aGlzLnVuaWNvZGUgPSBbWzBdXTsKICAgICAgdGhpcy53aWR0aHMgPSBbdGhpcy5mb250LmdldEdseXBoKDApLmFkdmFuY2VXaWR0aF07CiAgICAgIHRoaXMubmFtZSA9IHRoaXMuZm9udC5wb3N0c2NyaXB0TmFtZTsKICAgICAgdGhpcy5zY2FsZSA9IDEwMDAgLyB0aGlzLmZvbnQudW5pdHNQZXJFbTsKICAgICAgdGhpcy5hc2NlbmRlciA9IHRoaXMuZm9udC5hc2NlbnQgKiB0aGlzLnNjYWxlOwogICAgICB0aGlzLmRlc2NlbmRlciA9IHRoaXMuZm9udC5kZXNjZW50ICogdGhpcy5zY2FsZTsKICAgICAgdGhpcy5saW5lR2FwID0gdGhpcy5mb250LmxpbmVHYXAgKiB0aGlzLnNjYWxlOwogICAgICB0aGlzLmJib3ggPSB0aGlzLmZvbnQuYmJveDsKICAgICAgdGhpcy5sYXlvdXRDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7CiAgICB9CgogICAgRW1iZWRkZWRGb250LnByb3RvdHlwZS5sYXlvdXRSdW4gPSBmdW5jdGlvbih0ZXh0LCBmZWF0dXJlcykgewogICAgICB2YXIgaSwgaiwga2V5LCBsZW4sIHBvc2l0aW9uLCByZWYsIHJ1bjsKICAgICAgcnVuID0gdGhpcy5mb250LmxheW91dCh0ZXh0LCBmZWF0dXJlcyk7CiAgICAgIHJlZiA9IHJ1bi5wb3NpdGlvbnM7CiAgICAgIGZvciAoaSA9IGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBpID0gKytqKSB7CiAgICAgICAgcG9zaXRpb24gPSByZWZbaV07CiAgICAgICAgZm9yIChrZXkgaW4gcG9zaXRpb24pIHsKICAgICAgICAgIHBvc2l0aW9uW2tleV0gKj0gdGhpcy5zY2FsZTsKICAgICAgICB9CiAgICAgICAgcG9zaXRpb24uYWR2YW5jZVdpZHRoID0gcnVuLmdseXBoc1tpXS5hZHZhbmNlV2lkdGggKiB0aGlzLnNjYWxlOwogICAgICB9CiAgICAgIHJldHVybiBydW47CiAgICB9OwoKICAgIEVtYmVkZGVkRm9udC5wcm90b3R5cGUubGF5b3V0Q2FjaGVkID0gZnVuY3Rpb24odGV4dCkgewogICAgICB2YXIgY2FjaGVkLCBydW47CiAgICAgIGlmIChjYWNoZWQgPSB0aGlzLmxheW91dENhY2hlW3RleHRdKSB7CiAgICAgICAgcmV0dXJuIGNhY2hlZDsKICAgICAgfQogICAgICBydW4gPSB0aGlzLmxheW91dFJ1bih0ZXh0KTsKICAgICAgdGhpcy5sYXlvdXRDYWNoZVt0ZXh0XSA9IHJ1bjsKICAgICAgcmV0dXJuIHJ1bjsKICAgIH07CgogICAgRW1iZWRkZWRGb250LnByb3RvdHlwZS5sYXlvdXQgPSBmdW5jdGlvbih0ZXh0LCBmZWF0dXJlcywgb25seVdpZHRoKSB7CiAgICAgIHZhciBhZHZhbmNlV2lkdGgsIGdseXBocywgaW5kZXgsIGxhc3QsIHBvc2l0aW9ucywgcmVmLCBydW47CiAgICAgIGlmIChvbmx5V2lkdGggPT0gbnVsbCkgewogICAgICAgIG9ubHlXaWR0aCA9IGZhbHNlOwogICAgICB9CiAgICAgIGlmIChmZWF0dXJlcykgewogICAgICAgIHJldHVybiB0aGlzLmxheW91dFJ1bih0ZXh0LCBmZWF0dXJlcyk7CiAgICAgIH0KICAgICAgZ2x5cGhzID0gb25seVdpZHRoID8gbnVsbCA6IFtdOwogICAgICBwb3NpdGlvbnMgPSBvbmx5V2lkdGggPyBudWxsIDogW107CiAgICAgIGFkdmFuY2VXaWR0aCA9IDA7CiAgICAgIGxhc3QgPSAwOwogICAgICBpbmRleCA9IDA7CiAgICAgIHdoaWxlIChpbmRleCA8PSB0ZXh0Lmxlbmd0aCkgewogICAgICAgIGlmICgoaW5kZXggPT09IHRleHQubGVuZ3RoICYmIGxhc3QgPCBpbmRleCkgfHwgKChyZWYgPSB0ZXh0LmNoYXJBdChpbmRleCkpID09PSAnICcgfHwgcmVmID09PSAnXHQnKSkgewogICAgICAgICAgcnVuID0gdGhpcy5sYXlvdXRDYWNoZWQodGV4dC5zbGljZShsYXN0LCArK2luZGV4KSk7CiAgICAgICAgICBpZiAoIW9ubHlXaWR0aCkgewogICAgICAgICAgICBnbHlwaHMucHVzaC5hcHBseShnbHlwaHMsIHJ1bi5nbHlwaHMpOwogICAgICAgICAgICBwb3NpdGlvbnMucHVzaC5hcHBseShwb3NpdGlvbnMsIHJ1bi5wb3NpdGlvbnMpOwogICAgICAgICAgfQogICAgICAgICAgYWR2YW5jZVdpZHRoICs9IHJ1bi5hZHZhbmNlV2lkdGg7CiAgICAgICAgICBsYXN0ID0gaW5kZXg7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGluZGV4Kys7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB7CiAgICAgICAgZ2x5cGhzOiBnbHlwaHMsCiAgICAgICAgcG9zaXRpb25zOiBwb3NpdGlvbnMsCiAgICAgICAgYWR2YW5jZVdpZHRoOiBhZHZhbmNlV2lkdGgKICAgICAgfTsKICAgIH07CgogICAgRW1iZWRkZWRGb250LnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbih0ZXh0LCBmZWF0dXJlcykgewogICAgICB2YXIgYmFzZSwgYmFzZTEsIGdpZCwgZ2x5cGgsIGdseXBocywgaSwgaiwgbGVuLCBwb3NpdGlvbnMsIHJlZiwgcmVzOwogICAgICByZWYgPSB0aGlzLmxheW91dCh0ZXh0LCBmZWF0dXJlcyksIGdseXBocyA9IHJlZi5nbHlwaHMsIHBvc2l0aW9ucyA9IHJlZi5wb3NpdGlvbnM7CiAgICAgIHJlcyA9IFtdOwogICAgICBmb3IgKGkgPSBqID0gMCwgbGVuID0gZ2x5cGhzLmxlbmd0aDsgaiA8IGxlbjsgaSA9ICsraikgewogICAgICAgIGdseXBoID0gZ2x5cGhzW2ldOwogICAgICAgIGdpZCA9IHRoaXMuc3Vic2V0LmluY2x1ZGVHbHlwaChnbHlwaC5pZCk7CiAgICAgICAgcmVzLnB1c2goKCcwMDAwJyArIGdpZC50b1N0cmluZygxNikpLnNsaWNlKC00KSk7CiAgICAgICAgaWYgKChiYXNlID0gdGhpcy53aWR0aHMpW2dpZF0gPT0gbnVsbCkgewogICAgICAgICAgYmFzZVtnaWRdID0gZ2x5cGguYWR2YW5jZVdpZHRoICogdGhpcy5zY2FsZTsKICAgICAgICB9CiAgICAgICAgaWYgKChiYXNlMSA9IHRoaXMudW5pY29kZSlbZ2lkXSA9PSBudWxsKSB7CiAgICAgICAgICBiYXNlMVtnaWRdID0gZ2x5cGguY29kZVBvaW50czsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIFtyZXMsIHBvc2l0aW9uc107CiAgICB9OwoKICAgIEVtYmVkZGVkRm9udC5wcm90b3R5cGUud2lkdGhPZlN0cmluZyA9IGZ1bmN0aW9uKHN0cmluZywgc2l6ZSwgZmVhdHVyZXMpIHsKICAgICAgdmFyIHNjYWxlLCB3aWR0aDsKICAgICAgd2lkdGggPSB0aGlzLmxheW91dChzdHJpbmcsIGZlYXR1cmVzLCB0cnVlKS5hZHZhbmNlV2lkdGg7CiAgICAgIHNjYWxlID0gc2l6ZSAvIDEwMDA7CiAgICAgIHJldHVybiB3aWR0aCAqIHNjYWxlOwogICAgfTsKCiAgICBFbWJlZGRlZEZvbnQucHJvdG90eXBlLmVtYmVkID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBiYm94LCBkZXNjZW5kYW50Rm9udCwgZGVzY3JpcHRvciwgZmFtaWx5Q2xhc3MsIGZsYWdzLCBmb250RmlsZSwgaSwgaXNDRkYsIG5hbWUsIHJlZiwgdGFnOwogICAgICBpc0NGRiA9IHRoaXMuc3Vic2V0LmNmZiAhPSBudWxsOwogICAgICBmb250RmlsZSA9IHRoaXMuZG9jdW1lbnQucmVmKCk7CiAgICAgIGlmIChpc0NGRikgewogICAgICAgIGZvbnRGaWxlLmRhdGEuU3VidHlwZSA9ICdDSURGb250VHlwZTBDJzsKICAgICAgfQogICAgICB0aGlzLnN1YnNldC5lbmNvZGVTdHJlYW0oKS5waXBlKGZvbnRGaWxlKTsKICAgICAgZmFtaWx5Q2xhc3MgPSAoKChyZWYgPSB0aGlzLmZvbnRbJ09TLzInXSkgIT0gbnVsbCA/IHJlZi5zRmFtaWx5Q2xhc3MgOiB2b2lkIDApIHx8IDApID4+IDg7CiAgICAgIGZsYWdzID0gMDsKICAgICAgaWYgKHRoaXMuZm9udC5wb3N0LmlzRml4ZWRQaXRjaCkgewogICAgICAgIGZsYWdzIHw9IDEgPDwgMDsKICAgICAgfQogICAgICBpZiAoKDEgPD0gZmFtaWx5Q2xhc3MgJiYgZmFtaWx5Q2xhc3MgPD0gNykpIHsKICAgICAgICBmbGFncyB8PSAxIDw8IDE7CiAgICAgIH0KICAgICAgZmxhZ3MgfD0gMSA8PCAyOwogICAgICBpZiAoZmFtaWx5Q2xhc3MgPT09IDEwKSB7CiAgICAgICAgZmxhZ3MgfD0gMSA8PCAzOwogICAgICB9CiAgICAgIGlmICh0aGlzLmZvbnQuaGVhZC5tYWNTdHlsZS5pdGFsaWMpIHsKICAgICAgICBmbGFncyB8PSAxIDw8IDY7CiAgICAgIH0KICAgICAgdGFnID0gKChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgaiwgcmVzdWx0czsKICAgICAgICByZXN1bHRzID0gW107CiAgICAgICAgZm9yIChpID0gaiA9IDA7IGogPCA2OyBpID0gKytqKSB7CiAgICAgICAgICByZXN1bHRzLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShNYXRoLnJhbmRvbSgpICogMjYgKyA2NSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgfSkoKSkuam9pbignJyk7CiAgICAgIG5hbWUgPSB0YWcgKyAnKycgKyB0aGlzLmZvbnQucG9zdHNjcmlwdE5hbWU7CiAgICAgIGJib3ggPSB0aGlzLmZvbnQuYmJveDsKICAgICAgZGVzY3JpcHRvciA9IHRoaXMuZG9jdW1lbnQucmVmKHsKICAgICAgICBUeXBlOiAnRm9udERlc2NyaXB0b3InLAogICAgICAgIEZvbnROYW1lOiBuYW1lLAogICAgICAgIEZsYWdzOiBmbGFncywKICAgICAgICBGb250QkJveDogW2Jib3gubWluWCAqIHRoaXMuc2NhbGUsIGJib3gubWluWSAqIHRoaXMuc2NhbGUsIGJib3gubWF4WCAqIHRoaXMuc2NhbGUsIGJib3gubWF4WSAqIHRoaXMuc2NhbGVdLAogICAgICAgIEl0YWxpY0FuZ2xlOiB0aGlzLmZvbnQuaXRhbGljQW5nbGUsCiAgICAgICAgQXNjZW50OiB0aGlzLmFzY2VuZGVyLAogICAgICAgIERlc2NlbnQ6IHRoaXMuZGVzY2VuZGVyLAogICAgICAgIENhcEhlaWdodDogKHRoaXMuZm9udC5jYXBIZWlnaHQgfHwgdGhpcy5mb250LmFzY2VudCkgKiB0aGlzLnNjYWxlLAogICAgICAgIFhIZWlnaHQ6ICh0aGlzLmZvbnQueEhlaWdodCB8fCAwKSAqIHRoaXMuc2NhbGUsCiAgICAgICAgU3RlbVY6IDAKICAgICAgfSk7CiAgICAgIGlmIChpc0NGRikgewogICAgICAgIGRlc2NyaXB0b3IuZGF0YS5Gb250RmlsZTMgPSBmb250RmlsZTsKICAgICAgfSBlbHNlIHsKICAgICAgICBkZXNjcmlwdG9yLmRhdGEuRm9udEZpbGUyID0gZm9udEZpbGU7CiAgICAgIH0KICAgICAgZGVzY3JpcHRvci5lbmQoKTsKICAgICAgZGVzY2VuZGFudEZvbnQgPSB0aGlzLmRvY3VtZW50LnJlZih7CiAgICAgICAgVHlwZTogJ0ZvbnQnLAogICAgICAgIFN1YnR5cGU6IGlzQ0ZGID8gJ0NJREZvbnRUeXBlMCcgOiAnQ0lERm9udFR5cGUyJywKICAgICAgICBCYXNlRm9udDogbmFtZSwKICAgICAgICBDSURTeXN0ZW1JbmZvOiB7CiAgICAgICAgICBSZWdpc3RyeTogbmV3IFN0cmluZygnQWRvYmUnKSwKICAgICAgICAgIE9yZGVyaW5nOiBuZXcgU3RyaW5nKCdJZGVudGl0eScpLAogICAgICAgICAgU3VwcGxlbWVudDogMAogICAgICAgIH0sCiAgICAgICAgRm9udERlc2NyaXB0b3I6IGRlc2NyaXB0b3IsCiAgICAgICAgVzogWzAsIHRoaXMud2lkdGhzXQogICAgICB9KTsKICAgICAgZGVzY2VuZGFudEZvbnQuZW5kKCk7CiAgICAgIHRoaXMuZGljdGlvbmFyeS5kYXRhID0gewogICAgICAgIFR5cGU6ICdGb250JywKICAgICAgICBTdWJ0eXBlOiAnVHlwZTAnLAogICAgICAgIEJhc2VGb250OiBuYW1lLAogICAgICAgIEVuY29kaW5nOiAnSWRlbnRpdHktSCcsCiAgICAgICAgRGVzY2VuZGFudEZvbnRzOiBbZGVzY2VuZGFudEZvbnRdLAogICAgICAgIFRvVW5pY29kZTogdGhpcy50b1VuaWNvZGVDbWFwKCkKICAgICAgfTsKICAgICAgcmV0dXJuIHRoaXMuZGljdGlvbmFyeS5lbmQoKTsKICAgIH07CgogICAgdG9IZXggPSBmdW5jdGlvbigpIHsKICAgICAgdmFyIGNvZGUsIGNvZGVQb2ludHMsIGNvZGVzOwogICAgICBjb2RlUG9pbnRzID0gMSA8PSBhcmd1bWVudHMubGVuZ3RoID8gc2xpY2UuY2FsbChhcmd1bWVudHMsIDApIDogW107CiAgICAgIGNvZGVzID0gKGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBqLCBsZW4sIHJlc3VsdHM7CiAgICAgICAgcmVzdWx0cyA9IFtdOwogICAgICAgIGZvciAoaiA9IDAsIGxlbiA9IGNvZGVQb2ludHMubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHsKICAgICAgICAgIGNvZGUgPSBjb2RlUG9pbnRzW2pdOwogICAgICAgICAgcmVzdWx0cy5wdXNoKCgnMDAwMCcgKyBjb2RlLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgIH0pKCk7CiAgICAgIHJldHVybiBjb2Rlcy5qb2luKCcnKTsKICAgIH07CgogICAgRW1iZWRkZWRGb250LnByb3RvdHlwZS50b1VuaWNvZGVDbWFwID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBjbWFwLCBjb2RlUG9pbnRzLCBlbmNvZGVkLCBlbnRyaWVzLCBqLCBrLCBsZW4sIGxlbjEsIHJlZiwgdmFsdWU7CiAgICAgIGNtYXAgPSB0aGlzLmRvY3VtZW50LnJlZigpOwogICAgICBlbnRyaWVzID0gW107CiAgICAgIHJlZiA9IHRoaXMudW5pY29kZTsKICAgICAgZm9yIChqID0gMCwgbGVuID0gcmVmLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7CiAgICAgICAgY29kZVBvaW50cyA9IHJlZltqXTsKICAgICAgICBlbmNvZGVkID0gW107CiAgICAgICAgZm9yIChrID0gMCwgbGVuMSA9IGNvZGVQb2ludHMubGVuZ3RoOyBrIDwgbGVuMTsgaysrKSB7CiAgICAgICAgICB2YWx1ZSA9IGNvZGVQb2ludHNba107CiAgICAgICAgICBpZiAodmFsdWUgPiAweGZmZmYpIHsKICAgICAgICAgICAgdmFsdWUgLT0gMHgxMDAwMDsKICAgICAgICAgICAgZW5jb2RlZC5wdXNoKHRvSGV4KHZhbHVlID4+PiAxMCAmIDB4M2ZmIHwgMHhkODAwKSk7CiAgICAgICAgICAgIHZhbHVlID0gMHhkYzAwIHwgdmFsdWUgJiAweDNmZjsKICAgICAgICAgIH0KICAgICAgICAgIGVuY29kZWQucHVzaCh0b0hleCh2YWx1ZSkpOwogICAgICAgIH0KICAgICAgICBlbnRyaWVzLnB1c2goIjwiICsgKGVuY29kZWQuam9pbignICcpKSArICI+Iik7CiAgICAgIH0KICAgICAgY21hcC5lbmQoIi9DSURJbml0IC9Qcm9jU2V0IGZpbmRyZXNvdXJjZSBiZWdpblxuMTIgZGljdCBiZWdpblxuYmVnaW5jbWFwXG4vQ0lEU3lzdGVtSW5mbyA8PFxuICAvUmVnaXN0cnkgKEFkb2JlKVxuICAvT3JkZXJpbmcgKFVDUylcbiAgL1N1cHBsZW1lbnQgMFxuPj4gZGVmXG4vQ01hcE5hbWUgL0Fkb2JlLUlkZW50aXR5LVVDUyBkZWZcbi9DTWFwVHlwZSAyIGRlZlxuMSBiZWdpbmNvZGVzcGFjZXJhbmdlXG48MDAwMD48ZmZmZj5cbmVuZGNvZGVzcGFjZXJhbmdlXG4xIGJlZ2luYmZyYW5nZVxuPDAwMDA+IDwiICsgKHRvSGV4KGVudHJpZXMubGVuZ3RoIC0gMSkpICsgIj4gWyIgKyAoZW50cmllcy5qb2luKCcgJykpICsgIl1cbmVuZGJmcmFuZ2VcbmVuZGNtYXBcbkNNYXBOYW1lIGN1cnJlbnRkaWN0IC9DTWFwIGRlZmluZXJlc291cmNlIHBvcFxuZW5kXG5lbmQiKTsKICAgICAgcmV0dXJuIGNtYXA7CiAgICB9OwoKICAgIHJldHVybiBFbWJlZGRlZEZvbnQ7CgogIH0pKFBERkZvbnQpOwoKICBtb2R1bGUuZXhwb3J0cyA9IEVtYmVkZGVkRm9udDsKCn0pLmNhbGwodGhpcyk7CgoKLyoqKi8gfSksCi8qIDI5NSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuNgooZnVuY3Rpb24oKSB7CiAgdmFyIExpbmVXcmFwcGVyLCBudW1iZXI7CgogIExpbmVXcmFwcGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOTYpOwoKICBudW1iZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI2KS5udW1iZXI7CgogIG1vZHVsZS5leHBvcnRzID0gewogICAgaW5pdFRleHQ6IGZ1bmN0aW9uKCkgewogICAgICB0aGlzLnggPSAwOwogICAgICB0aGlzLnkgPSAwOwogICAgICByZXR1cm4gdGhpcy5fbGluZUdhcCA9IDA7CiAgICB9LAogICAgbGluZUdhcDogZnVuY3Rpb24oX2xpbmVHYXApIHsKICAgICAgdGhpcy5fbGluZUdhcCA9IF9saW5lR2FwOwogICAgICByZXR1cm4gdGhpczsKICAgIH0sCiAgICBtb3ZlRG93bjogZnVuY3Rpb24obGluZXMpIHsKICAgICAgaWYgKGxpbmVzID09IG51bGwpIHsKICAgICAgICBsaW5lcyA9IDE7CiAgICAgIH0KICAgICAgdGhpcy55ICs9IHRoaXMuY3VycmVudExpbmVIZWlnaHQodHJ1ZSkgKiBsaW5lcyArIHRoaXMuX2xpbmVHYXA7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSwKICAgIG1vdmVVcDogZnVuY3Rpb24obGluZXMpIHsKICAgICAgaWYgKGxpbmVzID09IG51bGwpIHsKICAgICAgICBsaW5lcyA9IDE7CiAgICAgIH0KICAgICAgdGhpcy55IC09IHRoaXMuY3VycmVudExpbmVIZWlnaHQodHJ1ZSkgKiBsaW5lcyArIHRoaXMuX2xpbmVHYXA7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSwKICAgIF90ZXh0OiBmdW5jdGlvbih0ZXh0LCB4LCB5LCBvcHRpb25zLCBsaW5lQ2FsbGJhY2spIHsKICAgICAgdmFyIGosIGxlbiwgbGluZSwgcmVmLCB3cmFwcGVyOwogICAgICBvcHRpb25zID0gdGhpcy5faW5pdE9wdGlvbnMoeCwgeSwgb3B0aW9ucyk7CiAgICAgIHRleHQgPSB0ZXh0ID09IG51bGwgPyAnJyA6ICcnICsgdGV4dDsKICAgICAgaWYgKG9wdGlvbnMud29yZFNwYWNpbmcpIHsKICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cc3syLH0vZywgJyAnKTsKICAgICAgfQogICAgICBpZiAob3B0aW9ucy53aWR0aCkgewogICAgICAgIHdyYXBwZXIgPSB0aGlzLl93cmFwcGVyOwogICAgICAgIGlmICghd3JhcHBlcikgewogICAgICAgICAgd3JhcHBlciA9IG5ldyBMaW5lV3JhcHBlcih0aGlzLCBvcHRpb25zKTsKICAgICAgICAgIHdyYXBwZXIub24oJ2xpbmUnLCBsaW5lQ2FsbGJhY2spOwogICAgICAgIH0KICAgICAgICB0aGlzLl93cmFwcGVyID0gb3B0aW9ucy5jb250aW51ZWQgPyB3cmFwcGVyIDogbnVsbDsKICAgICAgICB0aGlzLl90ZXh0T3B0aW9ucyA9IG9wdGlvbnMuY29udGludWVkID8gb3B0aW9ucyA6IG51bGw7CiAgICAgICAgd3JhcHBlci53cmFwKHRleHQsIG9wdGlvbnMpOwogICAgICB9IGVsc2UgewogICAgICAgIHJlZiA9IHRleHQuc3BsaXQoJ1xuJyk7CiAgICAgICAgZm9yIChqID0gMCwgbGVuID0gcmVmLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7CiAgICAgICAgICBsaW5lID0gcmVmW2pdOwogICAgICAgICAgbGluZUNhbGxiYWNrKGxpbmUsIG9wdGlvbnMpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gdGhpczsKICAgIH0sCiAgICB0ZXh0OiBmdW5jdGlvbih0ZXh0LCB4LCB5LCBvcHRpb25zKSB7CiAgICAgIHJldHVybiB0aGlzLl90ZXh0KHRleHQsIHgsIHksIG9wdGlvbnMsIHRoaXMuX2xpbmUuYmluZCh0aGlzKSk7CiAgICB9LAogICAgd2lkdGhPZlN0cmluZzogZnVuY3Rpb24oc3RyaW5nLCBvcHRpb25zKSB7CiAgICAgIGlmIChvcHRpb25zID09IG51bGwpIHsKICAgICAgICBvcHRpb25zID0ge307CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuX2ZvbnQud2lkdGhPZlN0cmluZyhzdHJpbmcsIHRoaXMuX2ZvbnRTaXplLCBvcHRpb25zLmZlYXR1cmVzKSArIChvcHRpb25zLmNoYXJhY3RlclNwYWNpbmcgfHwgMCkgKiAoc3RyaW5nLmxlbmd0aCAtIDEpOwogICAgfSwKICAgIGhlaWdodE9mU3RyaW5nOiBmdW5jdGlvbih0ZXh0LCBvcHRpb25zKSB7CiAgICAgIHZhciBoZWlnaHQsIGxpbmVHYXAsIHJlZiwgeCwgeTsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICByZWYgPSB0aGlzLCB4ID0gcmVmLngsIHkgPSByZWYueTsKICAgICAgb3B0aW9ucyA9IHRoaXMuX2luaXRPcHRpb25zKG9wdGlvbnMpOwogICAgICBvcHRpb25zLmhlaWdodCA9IDJlMzA4OwogICAgICBsaW5lR2FwID0gb3B0aW9ucy5saW5lR2FwIHx8IHRoaXMuX2xpbmVHYXAgfHwgMDsKICAgICAgdGhpcy5fdGV4dCh0ZXh0LCB0aGlzLngsIHRoaXMueSwgb3B0aW9ucywgKGZ1bmN0aW9uKF90aGlzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGxpbmUsIG9wdGlvbnMpIHsKICAgICAgICAgIHJldHVybiBfdGhpcy55ICs9IF90aGlzLmN1cnJlbnRMaW5lSGVpZ2h0KHRydWUpICsgbGluZUdhcDsKICAgICAgICB9OwogICAgICB9KSh0aGlzKSk7CiAgICAgIGhlaWdodCA9IHRoaXMueSAtIHk7CiAgICAgIHRoaXMueCA9IHg7CiAgICAgIHRoaXMueSA9IHk7CiAgICAgIHJldHVybiBoZWlnaHQ7CiAgICB9LAogICAgbGlzdDogZnVuY3Rpb24obGlzdCwgeCwgeSwgb3B0aW9ucywgd3JhcHBlcikgewogICAgICB2YXIgZmxhdHRlbiwgaSwgaW5kZW50LCBpdGVtSW5kZW50LCBpdGVtcywgbGV2ZWwsIGxldmVscywgbWlkTGluZSwgcjsKICAgICAgb3B0aW9ucyA9IHRoaXMuX2luaXRPcHRpb25zKHgsIHksIG9wdGlvbnMpOwogICAgICBtaWRMaW5lID0gTWF0aC5yb3VuZCgodGhpcy5fZm9udC5hc2NlbmRlciAvIDEwMDAgKiB0aGlzLl9mb250U2l6ZSkgLyAyKTsKICAgICAgciA9IG9wdGlvbnMuYnVsbGV0UmFkaXVzIHx8IE1hdGgucm91bmQoKHRoaXMuX2ZvbnQuYXNjZW5kZXIgLyAxMDAwICogdGhpcy5fZm9udFNpemUpIC8gMyk7CiAgICAgIGluZGVudCA9IG9wdGlvbnMudGV4dEluZGVudCB8fCByICogNTsKICAgICAgaXRlbUluZGVudCA9IG9wdGlvbnMuYnVsbGV0SW5kZW50IHx8IHIgKiA4OwogICAgICBsZXZlbCA9IDE7CiAgICAgIGl0ZW1zID0gW107CiAgICAgIGxldmVscyA9IFtdOwogICAgICBmbGF0dGVuID0gZnVuY3Rpb24obGlzdCkgewogICAgICAgIHZhciBpLCBpdGVtLCBqLCBsZW4sIHJlc3VsdHM7CiAgICAgICAgcmVzdWx0cyA9IFtdOwogICAgICAgIGZvciAoaSA9IGogPSAwLCBsZW4gPSBsaXN0Lmxlbmd0aDsgaiA8IGxlbjsgaSA9ICsraikgewogICAgICAgICAgaXRlbSA9IGxpc3RbaV07CiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkgewogICAgICAgICAgICBsZXZlbCsrOwogICAgICAgICAgICBmbGF0dGVuKGl0ZW0pOwogICAgICAgICAgICByZXN1bHRzLnB1c2gobGV2ZWwtLSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pOwogICAgICAgICAgICByZXN1bHRzLnB1c2gobGV2ZWxzLnB1c2gobGV2ZWwpKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgIH07CiAgICAgIGZsYXR0ZW4obGlzdCk7CiAgICAgIHdyYXBwZXIgPSBuZXcgTGluZVdyYXBwZXIodGhpcywgb3B0aW9ucyk7CiAgICAgIHdyYXBwZXIub24oJ2xpbmUnLCB0aGlzLl9saW5lLmJpbmQodGhpcykpOwogICAgICBsZXZlbCA9IDE7CiAgICAgIGkgPSAwOwogICAgICB3cmFwcGVyLm9uKCdmaXJzdExpbmUnLCAoZnVuY3Rpb24oX3RoaXMpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICB2YXIgZGlmZiwgbDsKICAgICAgICAgIGlmICgobCA9IGxldmVsc1tpKytdKSAhPT0gbGV2ZWwpIHsKICAgICAgICAgICAgZGlmZiA9IGl0ZW1JbmRlbnQgKiAobCAtIGxldmVsKTsKICAgICAgICAgICAgX3RoaXMueCArPSBkaWZmOwogICAgICAgICAgICB3cmFwcGVyLmxpbmVXaWR0aCAtPSBkaWZmOwogICAgICAgICAgICBsZXZlbCA9IGw7CiAgICAgICAgICB9CiAgICAgICAgICBfdGhpcy5jaXJjbGUoX3RoaXMueCAtIGluZGVudCArIHIsIF90aGlzLnkgKyBtaWRMaW5lLCByKTsKICAgICAgICAgIHJldHVybiBfdGhpcy5maWxsKCk7CiAgICAgICAgfTsKICAgICAgfSkodGhpcykpOwogICAgICB3cmFwcGVyLm9uKCdzZWN0aW9uU3RhcnQnLCAoZnVuY3Rpb24oX3RoaXMpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICB2YXIgcG9zOwogICAgICAgICAgcG9zID0gaW5kZW50ICsgaXRlbUluZGVudCAqIChsZXZlbCAtIDEpOwogICAgICAgICAgX3RoaXMueCArPSBwb3M7CiAgICAgICAgICByZXR1cm4gd3JhcHBlci5saW5lV2lkdGggLT0gcG9zOwogICAgICAgIH07CiAgICAgIH0pKHRoaXMpKTsKICAgICAgd3JhcHBlci5vbignc2VjdGlvbkVuZCcsIChmdW5jdGlvbihfdGhpcykgewogICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAgIHZhciBwb3M7CiAgICAgICAgICBwb3MgPSBpbmRlbnQgKyBpdGVtSW5kZW50ICogKGxldmVsIC0gMSk7CiAgICAgICAgICBfdGhpcy54IC09IHBvczsKICAgICAgICAgIHJldHVybiB3cmFwcGVyLmxpbmVXaWR0aCArPSBwb3M7CiAgICAgICAgfTsKICAgICAgfSkodGhpcykpOwogICAgICB3cmFwcGVyLndyYXAoaXRlbXMuam9pbignXG4nKSwgb3B0aW9ucyk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSwKICAgIF9pbml0T3B0aW9uczogZnVuY3Rpb24oeCwgeSwgb3B0aW9ucykgewogICAgICB2YXIga2V5LCByZWYsIHZhbDsKICAgICAgaWYgKHggPT0gbnVsbCkgewogICAgICAgIHggPSB7fTsKICAgICAgfQogICAgICBpZiAob3B0aW9ucyA9PSBudWxsKSB7CiAgICAgICAgb3B0aW9ucyA9IHt9OwogICAgICB9CiAgICAgIGlmICh0eXBlb2YgeCA9PT0gJ29iamVjdCcpIHsKICAgICAgICBvcHRpb25zID0geDsKICAgICAgICB4ID0gbnVsbDsKICAgICAgfQogICAgICBvcHRpb25zID0gKGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBrLCBvcHRzLCB2OwogICAgICAgIG9wdHMgPSB7fTsKICAgICAgICBmb3IgKGsgaW4gb3B0aW9ucykgewogICAgICAgICAgdiA9IG9wdGlvbnNba107CiAgICAgICAgICBvcHRzW2tdID0gdjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG9wdHM7CiAgICAgIH0pKCk7CiAgICAgIGlmICh0aGlzLl90ZXh0T3B0aW9ucykgewogICAgICAgIHJlZiA9IHRoaXMuX3RleHRPcHRpb25zOwogICAgICAgIGZvciAoa2V5IGluIHJlZikgewogICAgICAgICAgdmFsID0gcmVmW2tleV07CiAgICAgICAgICBpZiAoa2V5ICE9PSAnY29udGludWVkJykgewogICAgICAgICAgICBpZiAob3B0aW9uc1trZXldID09IG51bGwpIHsKICAgICAgICAgICAgICBvcHRpb25zW2tleV0gPSB2YWw7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKHggIT0gbnVsbCkgewogICAgICAgIHRoaXMueCA9IHg7CiAgICAgIH0KICAgICAgaWYgKHkgIT0gbnVsbCkgewogICAgICAgIHRoaXMueSA9IHk7CiAgICAgIH0KICAgICAgaWYgKG9wdGlvbnMubGluZUJyZWFrICE9PSBmYWxzZSkgewogICAgICAgIGlmIChvcHRpb25zLndpZHRoID09IG51bGwpIHsKICAgICAgICAgIG9wdGlvbnMud2lkdGggPSB0aGlzLnBhZ2Uud2lkdGggLSB0aGlzLnggLSB0aGlzLnBhZ2UubWFyZ2lucy5yaWdodDsKICAgICAgICB9CiAgICAgIH0KICAgICAgb3B0aW9ucy5jb2x1bW5zIHx8IChvcHRpb25zLmNvbHVtbnMgPSAwKTsKICAgICAgaWYgKG9wdGlvbnMuY29sdW1uR2FwID09IG51bGwpIHsKICAgICAgICBvcHRpb25zLmNvbHVtbkdhcCA9IDE4OwogICAgICB9CiAgICAgIHJldHVybiBvcHRpb25zOwogICAgfSwKICAgIF9saW5lOiBmdW5jdGlvbih0ZXh0LCBvcHRpb25zLCB3cmFwcGVyKSB7CiAgICAgIHZhciBsaW5lR2FwOwogICAgICBpZiAob3B0aW9ucyA9PSBudWxsKSB7CiAgICAgICAgb3B0aW9ucyA9IHt9OwogICAgICB9CiAgICAgIHRoaXMuX2ZyYWdtZW50KHRleHQsIHRoaXMueCwgdGhpcy55LCBvcHRpb25zKTsKICAgICAgbGluZUdhcCA9IG9wdGlvbnMubGluZUdhcCB8fCB0aGlzLl9saW5lR2FwIHx8IDA7CiAgICAgIGlmICghd3JhcHBlcikgewogICAgICAgIHJldHVybiB0aGlzLnggKz0gdGhpcy53aWR0aE9mU3RyaW5nKHRleHQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLnkgKz0gdGhpcy5jdXJyZW50TGluZUhlaWdodCh0cnVlKSArIGxpbmVHYXA7CiAgICAgIH0KICAgIH0sCiAgICBfZnJhZ21lbnQ6IGZ1bmN0aW9uKHRleHQsIHgsIHksIG9wdGlvbnMpIHsKICAgICAgdmFyIGFkZFNlZ21lbnQsIGFsaWduLCBiYXNlLCBjaGFyYWN0ZXJTcGFjaW5nLCBjb21tYW5kcywgZCwgZW5jb2RlZCwgZW5jb2RlZFdvcmQsIGZsdXNoLCBoYWRPZmZzZXQsIGksIGosIGtleSwgbGFzdCwgbGVuLCBsZW4xLCBsaW5lV2lkdGgsIGxpbmVZLCBtLCBtb2RlLCBuYW1lLCBwb3MsIHBvc2l0aW9ucywgcG9zaXRpb25zV29yZCwgcmVmLCByZWYxLCByZWYyLCByZW5kZXJlZFdpZHRoLCBzY2FsZSwgc3BhY2UsIHNwYWNlV2lkdGgsIHRleHRXaWR0aCwgdmFsLCB3b3JkLCB3b3JkU3BhY2luZywgd29yZHM7CiAgICAgIHRleHQgPSAoJycgKyB0ZXh0KS5yZXBsYWNlKC9cbi9nLCAnJyk7CiAgICAgIGlmICh0ZXh0Lmxlbmd0aCA9PT0gMCkgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBhbGlnbiA9IG9wdGlvbnMuYWxpZ24gfHwgJ2xlZnQnOwogICAgICB3b3JkU3BhY2luZyA9IG9wdGlvbnMud29yZFNwYWNpbmcgfHwgMDsKICAgICAgY2hhcmFjdGVyU3BhY2luZyA9IG9wdGlvbnMuY2hhcmFjdGVyU3BhY2luZyB8fCAwOwogICAgICBpZiAob3B0aW9ucy53aWR0aCkgewogICAgICAgIHN3aXRjaCAoYWxpZ24pIHsKICAgICAgICAgIGNhc2UgJ3JpZ2h0JzoKICAgICAgICAgICAgdGV4dFdpZHRoID0gdGhpcy53aWR0aE9mU3RyaW5nKHRleHQucmVwbGFjZSgvXHMrJC8sICcnKSwgb3B0aW9ucyk7CiAgICAgICAgICAgIHggKz0gb3B0aW9ucy5saW5lV2lkdGggLSB0ZXh0V2lkdGg7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnY2VudGVyJzoKICAgICAgICAgICAgeCArPSBvcHRpb25zLmxpbmVXaWR0aCAvIDIgLSBvcHRpb25zLnRleHRXaWR0aCAvIDI7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnanVzdGlmeSc6CiAgICAgICAgICAgIHdvcmRzID0gdGV4dC50cmltKCkuc3BsaXQoL1xzKy8pOwogICAgICAgICAgICB0ZXh0V2lkdGggPSB0aGlzLndpZHRoT2ZTdHJpbmcodGV4dC5yZXBsYWNlKC9ccysvZywgJycpLCBvcHRpb25zKTsKICAgICAgICAgICAgc3BhY2VXaWR0aCA9IHRoaXMud2lkdGhPZlN0cmluZygnICcpICsgY2hhcmFjdGVyU3BhY2luZzsKICAgICAgICAgICAgd29yZFNwYWNpbmcgPSBNYXRoLm1heCgwLCAob3B0aW9ucy5saW5lV2lkdGggLSB0ZXh0V2lkdGgpIC8gTWF0aC5tYXgoMSwgd29yZHMubGVuZ3RoIC0gMSkgLSBzcGFjZVdpZHRoKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmVuZGVyZWRXaWR0aCA9IG9wdGlvbnMudGV4dFdpZHRoICsgKHdvcmRTcGFjaW5nICogKG9wdGlvbnMud29yZENvdW50IC0gMSkpICsgKGNoYXJhY3RlclNwYWNpbmcgKiAodGV4dC5sZW5ndGggLSAxKSk7CiAgICAgIGlmIChvcHRpb25zLmxpbmspIHsKICAgICAgICB0aGlzLmxpbmsoeCwgeSwgcmVuZGVyZWRXaWR0aCwgdGhpcy5jdXJyZW50TGluZUhlaWdodCgpLCBvcHRpb25zLmxpbmspOwogICAgICB9CiAgICAgIGlmIChvcHRpb25zLnVuZGVybGluZSB8fCBvcHRpb25zLnN0cmlrZSkgewogICAgICAgIHRoaXMuc2F2ZSgpOwogICAgICAgIGlmICghb3B0aW9ucy5zdHJva2UpIHsKICAgICAgICAgIHRoaXMuc3Ryb2tlQ29sb3IuYXBwbHkodGhpcywgdGhpcy5fZmlsbENvbG9yKTsKICAgICAgICB9CiAgICAgICAgbGluZVdpZHRoID0gdGhpcy5fZm9udFNpemUgPCAxMCA/IDAuNSA6IE1hdGguZmxvb3IodGhpcy5fZm9udFNpemUgLyAxMCk7CiAgICAgICAgdGhpcy5saW5lV2lkdGgobGluZVdpZHRoKTsKICAgICAgICBkID0gb3B0aW9ucy51bmRlcmxpbmUgPyAxIDogMjsKICAgICAgICBsaW5lWSA9IHkgKyB0aGlzLmN1cnJlbnRMaW5lSGVpZ2h0KCkgLyBkOwogICAgICAgIGlmIChvcHRpb25zLnVuZGVybGluZSkgewogICAgICAgICAgbGluZVkgLT0gbGluZVdpZHRoOwogICAgICAgIH0KICAgICAgICB0aGlzLm1vdmVUbyh4LCBsaW5lWSk7CiAgICAgICAgdGhpcy5saW5lVG8oeCArIHJlbmRlcmVkV2lkdGgsIGxpbmVZKTsKICAgICAgICB0aGlzLnN0cm9rZSgpOwogICAgICAgIHRoaXMucmVzdG9yZSgpOwogICAgICB9CiAgICAgIHRoaXMuc2F2ZSgpOwogICAgICB0aGlzLnRyYW5zZm9ybSgxLCAwLCAwLCAtMSwgMCwgdGhpcy5wYWdlLmhlaWdodCk7CiAgICAgIHkgPSB0aGlzLnBhZ2UuaGVpZ2h0IC0geSAtICh0aGlzLl9mb250LmFzY2VuZGVyIC8gMTAwMCAqIHRoaXMuX2ZvbnRTaXplKTsKICAgICAgaWYgKChiYXNlID0gdGhpcy5wYWdlLmZvbnRzKVtuYW1lID0gdGhpcy5fZm9udC5pZF0gPT0gbnVsbCkgewogICAgICAgIGJhc2VbbmFtZV0gPSB0aGlzLl9mb250LnJlZigpOwogICAgICB9CiAgICAgIHRoaXMuYWRkQ29udGVudCgiQlQiKTsKICAgICAgdGhpcy5hZGRDb250ZW50KCIxIDAgMCAxICIgKyAobnVtYmVyKHgpKSArICIgIiArIChudW1iZXIoeSkpICsgIiBUbSIpOwogICAgICB0aGlzLmFkZENvbnRlbnQoIi8iICsgdGhpcy5fZm9udC5pZCArICIgIiArIChudW1iZXIodGhpcy5fZm9udFNpemUpKSArICIgVGYiKTsKICAgICAgbW9kZSA9IG9wdGlvbnMuZmlsbCAmJiBvcHRpb25zLnN0cm9rZSA/IDIgOiBvcHRpb25zLnN0cm9rZSA/IDEgOiAwOwogICAgICBpZiAobW9kZSkgewogICAgICAgIHRoaXMuYWRkQ29udGVudChtb2RlICsgIiBUciIpOwogICAgICB9CiAgICAgIGlmIChjaGFyYWN0ZXJTcGFjaW5nKSB7CiAgICAgICAgdGhpcy5hZGRDb250ZW50KChudW1iZXIoY2hhcmFjdGVyU3BhY2luZykpICsgIiBUYyIpOwogICAgICB9CiAgICAgIGlmICh3b3JkU3BhY2luZykgewogICAgICAgIHdvcmRzID0gdGV4dC50cmltKCkuc3BsaXQoL1xzKy8pOwogICAgICAgIHdvcmRTcGFjaW5nICs9IHRoaXMud2lkdGhPZlN0cmluZygnICcpICsgY2hhcmFjdGVyU3BhY2luZzsKICAgICAgICB3b3JkU3BhY2luZyAqPSAxMDAwIC8gdGhpcy5fZm9udFNpemU7CiAgICAgICAgZW5jb2RlZCA9IFtdOwogICAgICAgIHBvc2l0aW9ucyA9IFtdOwogICAgICAgIGZvciAoaiA9IDAsIGxlbiA9IHdvcmRzLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7CiAgICAgICAgICB3b3JkID0gd29yZHNbal07CiAgICAgICAgICByZWYgPSB0aGlzLl9mb250LmVuY29kZSh3b3JkLCBvcHRpb25zLmZlYXR1cmVzKSwgZW5jb2RlZFdvcmQgPSByZWZbMF0sIHBvc2l0aW9uc1dvcmQgPSByZWZbMV07CiAgICAgICAgICBlbmNvZGVkLnB1c2guYXBwbHkoZW5jb2RlZCwgZW5jb2RlZFdvcmQpOwogICAgICAgICAgcG9zaXRpb25zLnB1c2guYXBwbHkocG9zaXRpb25zLCBwb3NpdGlvbnNXb3JkKTsKICAgICAgICAgIHNwYWNlID0ge307CiAgICAgICAgICByZWYxID0gcG9zaXRpb25zW3Bvc2l0aW9ucy5sZW5ndGggLSAxXTsKICAgICAgICAgIGZvciAoa2V5IGluIHJlZjEpIHsKICAgICAgICAgICAgdmFsID0gcmVmMVtrZXldOwogICAgICAgICAgICBzcGFjZVtrZXldID0gdmFsOwogICAgICAgICAgfQogICAgICAgICAgc3BhY2UueEFkdmFuY2UgKz0gd29yZFNwYWNpbmc7CiAgICAgICAgICBwb3NpdGlvbnNbcG9zaXRpb25zLmxlbmd0aCAtIDFdID0gc3BhY2U7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIHJlZjIgPSB0aGlzLl9mb250LmVuY29kZSh0ZXh0LCBvcHRpb25zLmZlYXR1cmVzKSwgZW5jb2RlZCA9IHJlZjJbMF0sIHBvc2l0aW9ucyA9IHJlZjJbMV07CiAgICAgIH0KICAgICAgc2NhbGUgPSB0aGlzLl9mb250U2l6ZSAvIDEwMDA7CiAgICAgIGNvbW1hbmRzID0gW107CiAgICAgIGxhc3QgPSAwOwogICAgICBoYWRPZmZzZXQgPSBmYWxzZTsKICAgICAgYWRkU2VnbWVudCA9IChmdW5jdGlvbihfdGhpcykgewogICAgICAgIHJldHVybiBmdW5jdGlvbihjdXIpIHsKICAgICAgICAgIHZhciBhZHZhbmNlLCBoZXg7CiAgICAgICAgICBpZiAobGFzdCA8IGN1cikgewogICAgICAgICAgICBoZXggPSBlbmNvZGVkLnNsaWNlKGxhc3QsIGN1cikuam9pbignJyk7CiAgICAgICAgICAgIGFkdmFuY2UgPSBwb3NpdGlvbnNbY3VyIC0gMV0ueEFkdmFuY2UgLSBwb3NpdGlvbnNbY3VyIC0gMV0uYWR2YW5jZVdpZHRoOwogICAgICAgICAgICBjb21tYW5kcy5wdXNoKCI8IiArIGhleCArICI+ICIgKyAobnVtYmVyKC1hZHZhbmNlKSkpOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGxhc3QgPSBjdXI7CiAgICAgICAgfTsKICAgICAgfSkodGhpcyk7CiAgICAgIGZsdXNoID0gKGZ1bmN0aW9uKF90aGlzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGkpIHsKICAgICAgICAgIGFkZFNlZ21lbnQoaSk7CiAgICAgICAgICBpZiAoY29tbWFuZHMubGVuZ3RoID4gMCkgewogICAgICAgICAgICBfdGhpcy5hZGRDb250ZW50KCJbIiArIChjb21tYW5kcy5qb2luKCcgJykpICsgIl0gVEoiKTsKICAgICAgICAgICAgcmV0dXJuIGNvbW1hbmRzLmxlbmd0aCA9IDA7CiAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgfSkodGhpcyk7CiAgICAgIGZvciAoaSA9IG0gPSAwLCBsZW4xID0gcG9zaXRpb25zLmxlbmd0aDsgbSA8IGxlbjE7IGkgPSArK20pIHsKICAgICAgICBwb3MgPSBwb3NpdGlvbnNbaV07CiAgICAgICAgaWYgKHBvcy54T2Zmc2V0IHx8IHBvcy55T2Zmc2V0KSB7CiAgICAgICAgICBmbHVzaChpKTsKICAgICAgICAgIHRoaXMuYWRkQ29udGVudCgiMSAwIDAgMSAiICsgKG51bWJlcih4ICsgcG9zLnhPZmZzZXQgKiBzY2FsZSkpICsgIiAiICsgKG51bWJlcih5ICsgcG9zLnlPZmZzZXQgKiBzY2FsZSkpICsgIiBUbSIpOwogICAgICAgICAgZmx1c2goaSArIDEpOwogICAgICAgICAgaGFkT2Zmc2V0ID0gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKGhhZE9mZnNldCkgewogICAgICAgICAgICB0aGlzLmFkZENvbnRlbnQoIjEgMCAwIDEgIiArIChudW1iZXIoeCkpICsgIiAiICsgKG51bWJlcih5KSkgKyAiIFRtIik7CiAgICAgICAgICAgIGhhZE9mZnNldCA9IGZhbHNlOwogICAgICAgICAgfQogICAgICAgICAgaWYgKHBvcy54QWR2YW5jZSAtIHBvcy5hZHZhbmNlV2lkdGggIT09IDApIHsKICAgICAgICAgICAgYWRkU2VnbWVudChpICsgMSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHggKz0gcG9zLnhBZHZhbmNlICogc2NhbGU7CiAgICAgIH0KICAgICAgZmx1c2goaSk7CiAgICAgIHRoaXMuYWRkQ29udGVudCgiRVQiKTsKICAgICAgcmV0dXJuIHRoaXMucmVzdG9yZSgpOwogICAgfQogIH07Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiAyOTYgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjEyLjYKKGZ1bmN0aW9uKCkgewogIHZhciBFdmVudEVtaXR0ZXIsIExpbmVCcmVha2VyLCBMaW5lV3JhcHBlciwKICAgIGV4dGVuZCA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsgZm9yICh2YXIga2V5IGluIHBhcmVudCkgeyBpZiAoaGFzUHJvcC5jYWxsKHBhcmVudCwga2V5KSkgY2hpbGRba2V5XSA9IHBhcmVudFtrZXldOyB9IGZ1bmN0aW9uIGN0b3IoKSB7IHRoaXMuY29uc3RydWN0b3IgPSBjaGlsZDsgfSBjdG9yLnByb3RvdHlwZSA9IHBhcmVudC5wcm90b3R5cGU7IGNoaWxkLnByb3RvdHlwZSA9IG5ldyBjdG9yKCk7IGNoaWxkLl9fc3VwZXJfXyA9IHBhcmVudC5wcm90b3R5cGU7IHJldHVybiBjaGlsZDsgfSwKICAgIGhhc1Byb3AgPSB7fS5oYXNPd25Qcm9wZXJ0eTsKCiAgRXZlbnRFbWl0dGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSkuRXZlbnRFbWl0dGVyOwoKICBMaW5lQnJlYWtlciA9IF9fd2VicGFja19yZXF1aXJlX18oNzgpOwoKICBMaW5lV3JhcHBlciA9IChmdW5jdGlvbihzdXBlckNsYXNzKSB7CiAgICBleHRlbmQoTGluZVdyYXBwZXIsIHN1cGVyQ2xhc3MpOwoKICAgIGZ1bmN0aW9uIExpbmVXcmFwcGVyKGRvY3VtZW50LCBvcHRpb25zKSB7CiAgICAgIHZhciByZWY7CiAgICAgIHRoaXMuZG9jdW1lbnQgPSBkb2N1bWVudDsKICAgICAgdGhpcy5pbmRlbnQgPSBvcHRpb25zLmluZGVudCB8fCAwOwogICAgICB0aGlzLmNoYXJhY3RlclNwYWNpbmcgPSBvcHRpb25zLmNoYXJhY3RlclNwYWNpbmcgfHwgMDsKICAgICAgdGhpcy53b3JkU3BhY2luZyA9IG9wdGlvbnMud29yZFNwYWNpbmcgPT09IDA7CiAgICAgIHRoaXMuY29sdW1ucyA9IG9wdGlvbnMuY29sdW1ucyB8fCAxOwogICAgICB0aGlzLmNvbHVtbkdhcCA9IChyZWYgPSBvcHRpb25zLmNvbHVtbkdhcCkgIT0gbnVsbCA/IHJlZiA6IDE4OwogICAgICB0aGlzLmxpbmVXaWR0aCA9IChvcHRpb25zLndpZHRoIC0gKHRoaXMuY29sdW1uR2FwICogKHRoaXMuY29sdW1ucyAtIDEpKSkgLyB0aGlzLmNvbHVtbnM7CiAgICAgIHRoaXMuc3BhY2VMZWZ0ID0gdGhpcy5saW5lV2lkdGg7CiAgICAgIHRoaXMuc3RhcnRYID0gdGhpcy5kb2N1bWVudC54OwogICAgICB0aGlzLnN0YXJ0WSA9IHRoaXMuZG9jdW1lbnQueTsKICAgICAgdGhpcy5jb2x1bW4gPSAxOwogICAgICB0aGlzLmVsbGlwc2lzID0gb3B0aW9ucy5lbGxpcHNpczsKICAgICAgdGhpcy5jb250aW51ZWRYID0gMDsKICAgICAgdGhpcy5mZWF0dXJlcyA9IG9wdGlvbnMuZmVhdHVyZXM7CiAgICAgIGlmIChvcHRpb25zLmhlaWdodCAhPSBudWxsKSB7CiAgICAgICAgdGhpcy5oZWlnaHQgPSBvcHRpb25zLmhlaWdodDsKICAgICAgICB0aGlzLm1heFkgPSB0aGlzLnN0YXJ0WSArIG9wdGlvbnMuaGVpZ2h0OwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMubWF4WSA9IHRoaXMuZG9jdW1lbnQucGFnZS5tYXhZKCk7CiAgICAgIH0KICAgICAgdGhpcy5vbignZmlyc3RMaW5lJywgKGZ1bmN0aW9uKF90aGlzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAgIHZhciBpbmRlbnQ7CiAgICAgICAgICBpbmRlbnQgPSBfdGhpcy5jb250aW51ZWRYIHx8IF90aGlzLmluZGVudDsKICAgICAgICAgIF90aGlzLmRvY3VtZW50LnggKz0gaW5kZW50OwogICAgICAgICAgX3RoaXMubGluZVdpZHRoIC09IGluZGVudDsKICAgICAgICAgIHJldHVybiBfdGhpcy5vbmNlKCdsaW5lJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIF90aGlzLmRvY3VtZW50LnggLT0gaW5kZW50OwogICAgICAgICAgICBfdGhpcy5saW5lV2lkdGggKz0gaW5kZW50OwogICAgICAgICAgICBpZiAob3B0aW9ucy5jb250aW51ZWQgJiYgIV90aGlzLmNvbnRpbnVlZFgpIHsKICAgICAgICAgICAgICBfdGhpcy5jb250aW51ZWRYID0gX3RoaXMuaW5kZW50OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghb3B0aW9ucy5jb250aW51ZWQpIHsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuY29udGludWVkWCA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH07CiAgICAgIH0pKHRoaXMpKTsKICAgICAgdGhpcy5vbignbGFzdExpbmUnLCAoZnVuY3Rpb24oX3RoaXMpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgICAgdmFyIGFsaWduOwogICAgICAgICAgYWxpZ24gPSBvcHRpb25zLmFsaWduOwogICAgICAgICAgaWYgKGFsaWduID09PSAnanVzdGlmeScpIHsKICAgICAgICAgICAgb3B0aW9ucy5hbGlnbiA9ICdsZWZ0JzsKICAgICAgICAgIH0KICAgICAgICAgIF90aGlzLmxhc3RMaW5lID0gdHJ1ZTsKICAgICAgICAgIHJldHVybiBfdGhpcy5vbmNlKCdsaW5lJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIF90aGlzLmRvY3VtZW50LnkgKz0gb3B0aW9ucy5wYXJhZ3JhcGhHYXAgfHwgMDsKICAgICAgICAgICAgb3B0aW9ucy5hbGlnbiA9IGFsaWduOwogICAgICAgICAgICByZXR1cm4gX3RoaXMubGFzdExpbmUgPSBmYWxzZTsKICAgICAgICAgIH0pOwogICAgICAgIH07CiAgICAgIH0pKHRoaXMpKTsKICAgIH0KCiAgICBMaW5lV3JhcHBlci5wcm90b3R5cGUud29yZFdpZHRoID0gZnVuY3Rpb24od29yZCkgewogICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC53aWR0aE9mU3RyaW5nKHdvcmQsIHRoaXMpICsgdGhpcy5jaGFyYWN0ZXJTcGFjaW5nICsgdGhpcy53b3JkU3BhY2luZzsKICAgIH07CgogICAgTGluZVdyYXBwZXIucHJvdG90eXBlLmVhY2hXb3JkID0gZnVuY3Rpb24odGV4dCwgZm4pIHsKICAgICAgdmFyIGJrLCBicmVha2VyLCBmYmssIGwsIGxhc3QsIGxiaywgc2hvdWxkQ29udGludWUsIHcsIHdvcmQsIHdvcmRXaWR0aHM7CiAgICAgIGJyZWFrZXIgPSBuZXcgTGluZUJyZWFrZXIodGV4dCk7CiAgICAgIGxhc3QgPSBudWxsOwogICAgICB3b3JkV2lkdGhzID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKICAgICAgd2hpbGUgKGJrID0gYnJlYWtlci5uZXh0QnJlYWsoKSkgewogICAgICAgIHdvcmQgPSB0ZXh0LnNsaWNlKChsYXN0ICE9IG51bGwgPyBsYXN0LnBvc2l0aW9uIDogdm9pZCAwKSB8fCAwLCBiay5wb3NpdGlvbik7CiAgICAgICAgdyA9IHdvcmRXaWR0aHNbd29yZF0gIT0gbnVsbCA/IHdvcmRXaWR0aHNbd29yZF0gOiB3b3JkV2lkdGhzW3dvcmRdID0gdGhpcy53b3JkV2lkdGgod29yZCk7CiAgICAgICAgaWYgKHcgPiB0aGlzLmxpbmVXaWR0aCArIHRoaXMuY29udGludWVkWCkgewogICAgICAgICAgbGJrID0gbGFzdDsKICAgICAgICAgIGZiayA9IHt9OwogICAgICAgICAgd2hpbGUgKHdvcmQubGVuZ3RoKSB7CiAgICAgICAgICAgIGwgPSB3b3JkLmxlbmd0aDsKICAgICAgICAgICAgd2hpbGUgKHcgPiB0aGlzLnNwYWNlTGVmdCkgewogICAgICAgICAgICAgIHcgPSB0aGlzLndvcmRXaWR0aCh3b3JkLnNsaWNlKDAsIC0tbCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZiay5yZXF1aXJlZCA9IGwgPCB3b3JkLmxlbmd0aDsKICAgICAgICAgICAgc2hvdWxkQ29udGludWUgPSBmbih3b3JkLnNsaWNlKDAsIGwpLCB3LCBmYmssIGxiayk7CiAgICAgICAgICAgIGxiayA9IHsKICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UKICAgICAgICAgICAgfTsKICAgICAgICAgICAgd29yZCA9IHdvcmQuc2xpY2UobCk7CiAgICAgICAgICAgIHcgPSB0aGlzLndvcmRXaWR0aCh3b3JkKTsKICAgICAgICAgICAgaWYgKHNob3VsZENvbnRpbnVlID09PSBmYWxzZSkgewogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gZm4od29yZCwgdywgYmssIGxhc3QpOwogICAgICAgIH0KICAgICAgICBpZiAoc2hvdWxkQ29udGludWUgPT09IGZhbHNlKSB7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgbGFzdCA9IGJrOwogICAgICB9CiAgICB9OwoKICAgIExpbmVXcmFwcGVyLnByb3RvdHlwZS53cmFwID0gZnVuY3Rpb24odGV4dCwgb3B0aW9ucykgewogICAgICB2YXIgYnVmZmVyLCBlbWl0TGluZSwgbGMsIG5leHRZLCB0ZXh0V2lkdGgsIHdjLCB5OwogICAgICBpZiAob3B0aW9ucy5pbmRlbnQgIT0gbnVsbCkgewogICAgICAgIHRoaXMuaW5kZW50ID0gb3B0aW9ucy5pbmRlbnQ7CiAgICAgIH0KICAgICAgaWYgKG9wdGlvbnMuY2hhcmFjdGVyU3BhY2luZyAhPSBudWxsKSB7CiAgICAgICAgdGhpcy5jaGFyYWN0ZXJTcGFjaW5nID0gb3B0aW9ucy5jaGFyYWN0ZXJTcGFjaW5nOwogICAgICB9CiAgICAgIGlmIChvcHRpb25zLndvcmRTcGFjaW5nICE9IG51bGwpIHsKICAgICAgICB0aGlzLndvcmRTcGFjaW5nID0gb3B0aW9ucy53b3JkU3BhY2luZzsKICAgICAgfQogICAgICBpZiAob3B0aW9ucy5lbGxpcHNpcyAhPSBudWxsKSB7CiAgICAgICAgdGhpcy5lbGxpcHNpcyA9IG9wdGlvbnMuZWxsaXBzaXM7CiAgICAgIH0KICAgICAgbmV4dFkgPSB0aGlzLmRvY3VtZW50LnkgKyB0aGlzLmRvY3VtZW50LmN1cnJlbnRMaW5lSGVpZ2h0KHRydWUpOwogICAgICBpZiAodGhpcy5kb2N1bWVudC55ID4gdGhpcy5tYXhZIHx8IG5leHRZID4gdGhpcy5tYXhZKSB7CiAgICAgICAgdGhpcy5uZXh0U2VjdGlvbigpOwogICAgICB9CiAgICAgIGJ1ZmZlciA9ICcnOwogICAgICB0ZXh0V2lkdGggPSAwOwogICAgICB3YyA9IDA7CiAgICAgIGxjID0gMDsKICAgICAgeSA9IHRoaXMuZG9jdW1lbnQueTsKICAgICAgZW1pdExpbmUgPSAoZnVuY3Rpb24oX3RoaXMpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICBvcHRpb25zLnRleHRXaWR0aCA9IHRleHRXaWR0aCArIF90aGlzLndvcmRTcGFjaW5nICogKHdjIC0gMSk7CiAgICAgICAgICBvcHRpb25zLndvcmRDb3VudCA9IHdjOwogICAgICAgICAgb3B0aW9ucy5saW5lV2lkdGggPSBfdGhpcy5saW5lV2lkdGg7CiAgICAgICAgICB5ID0gX3RoaXMuZG9jdW1lbnQueTsKICAgICAgICAgIF90aGlzLmVtaXQoJ2xpbmUnLCBidWZmZXIsIG9wdGlvbnMsIF90aGlzKTsKICAgICAgICAgIHJldHVybiBsYysrOwogICAgICAgIH07CiAgICAgIH0pKHRoaXMpOwogICAgICB0aGlzLmVtaXQoJ3NlY3Rpb25TdGFydCcsIG9wdGlvbnMsIHRoaXMpOwogICAgICB0aGlzLmVhY2hXb3JkKHRleHQsIChmdW5jdGlvbihfdGhpcykgewogICAgICAgIHJldHVybiBmdW5jdGlvbih3b3JkLCB3LCBiaywgbGFzdCkgewogICAgICAgICAgdmFyIGxoLCBzaG91bGRDb250aW51ZTsKICAgICAgICAgIGlmICgobGFzdCA9PSBudWxsKSB8fCBsYXN0LnJlcXVpcmVkKSB7CiAgICAgICAgICAgIF90aGlzLmVtaXQoJ2ZpcnN0TGluZScsIG9wdGlvbnMsIF90aGlzKTsKICAgICAgICAgICAgX3RoaXMuc3BhY2VMZWZ0ID0gX3RoaXMubGluZVdpZHRoOwogICAgICAgICAgfQogICAgICAgICAgaWYgKHcgPD0gX3RoaXMuc3BhY2VMZWZ0KSB7CiAgICAgICAgICAgIGJ1ZmZlciArPSB3b3JkOwogICAgICAgICAgICB0ZXh0V2lkdGggKz0gdzsKICAgICAgICAgICAgd2MrKzsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChiay5yZXF1aXJlZCB8fCB3ID4gX3RoaXMuc3BhY2VMZWZ0KSB7CiAgICAgICAgICAgIGlmIChiay5yZXF1aXJlZCkgewogICAgICAgICAgICAgIF90aGlzLmVtaXQoJ2xhc3RMaW5lJywgb3B0aW9ucywgX3RoaXMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxoID0gX3RoaXMuZG9jdW1lbnQuY3VycmVudExpbmVIZWlnaHQodHJ1ZSk7CiAgICAgICAgICAgIGlmICgoX3RoaXMuaGVpZ2h0ICE9IG51bGwpICYmIF90aGlzLmVsbGlwc2lzICYmIF90aGlzLmRvY3VtZW50LnkgKyBsaCAqIDIgPiBfdGhpcy5tYXhZICYmIF90aGlzLmNvbHVtbiA+PSBfdGhpcy5jb2x1bW5zKSB7CiAgICAgICAgICAgICAgaWYgKF90aGlzLmVsbGlwc2lzID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICBfdGhpcy5lbGxpcHNpcyA9ICfigKYnOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBidWZmZXIgPSBidWZmZXIucmVwbGFjZSgvXHMrJC8sICcnKTsKICAgICAgICAgICAgICB0ZXh0V2lkdGggPSBfdGhpcy53b3JkV2lkdGgoYnVmZmVyICsgX3RoaXMuZWxsaXBzaXMpOwogICAgICAgICAgICAgIHdoaWxlICh0ZXh0V2lkdGggPiBfdGhpcy5saW5lV2lkdGgpIHsKICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGJ1ZmZlci5zbGljZSgwLCAtMSkucmVwbGFjZSgvXHMrJC8sICcnKTsKICAgICAgICAgICAgICAgIHRleHRXaWR0aCA9IF90aGlzLndvcmRXaWR0aChidWZmZXIgKyBfdGhpcy5lbGxpcHNpcyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJ1ZmZlciA9IGJ1ZmZlciArIF90aGlzLmVsbGlwc2lzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChiay5yZXF1aXJlZCAmJiB3ID4gX3RoaXMuc3BhY2VMZWZ0KSB7CiAgICAgICAgICAgICAgYnVmZmVyID0gd29yZDsKICAgICAgICAgICAgICB0ZXh0V2lkdGggPSB3OwogICAgICAgICAgICAgIHdjID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbWl0TGluZSgpOwogICAgICAgICAgICBpZiAoX3RoaXMuZG9jdW1lbnQueSArIGxoID4gX3RoaXMubWF4WSkgewogICAgICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gX3RoaXMubmV4dFNlY3Rpb24oKTsKICAgICAgICAgICAgICBpZiAoIXNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgICAgICAgICB3YyA9IDA7CiAgICAgICAgICAgICAgICBidWZmZXIgPSAnJzsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJrLnJlcXVpcmVkKSB7CiAgICAgICAgICAgICAgX3RoaXMuc3BhY2VMZWZ0ID0gX3RoaXMubGluZVdpZHRoOwogICAgICAgICAgICAgIGJ1ZmZlciA9ICcnOwogICAgICAgICAgICAgIHRleHRXaWR0aCA9IDA7CiAgICAgICAgICAgICAgcmV0dXJuIHdjID0gMDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBfdGhpcy5zcGFjZUxlZnQgPSBfdGhpcy5saW5lV2lkdGggLSB3OwogICAgICAgICAgICAgIGJ1ZmZlciA9IHdvcmQ7CiAgICAgICAgICAgICAgdGV4dFdpZHRoID0gdzsKICAgICAgICAgICAgICByZXR1cm4gd2MgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gX3RoaXMuc3BhY2VMZWZ0IC09IHc7CiAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgfSkodGhpcykpOwogICAgICBpZiAod2MgPiAwKSB7CiAgICAgICAgdGhpcy5lbWl0KCdsYXN0TGluZScsIG9wdGlvbnMsIHRoaXMpOwogICAgICAgIGVtaXRMaW5lKCk7CiAgICAgIH0KICAgICAgdGhpcy5lbWl0KCdzZWN0aW9uRW5kJywgb3B0aW9ucywgdGhpcyk7CiAgICAgIGlmIChvcHRpb25zLmNvbnRpbnVlZCA9PT0gdHJ1ZSkgewogICAgICAgIGlmIChsYyA+IDEpIHsKICAgICAgICAgIHRoaXMuY29udGludWVkWCA9IDA7CiAgICAgICAgfQogICAgICAgIHRoaXMuY29udGludWVkWCArPSBvcHRpb25zLnRleHRXaWR0aDsKICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC55ID0geTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC54ID0gdGhpcy5zdGFydFg7CiAgICAgIH0KICAgIH07CgogICAgTGluZVdyYXBwZXIucHJvdG90eXBlLm5leHRTZWN0aW9uID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICB2YXIgcmVmOwogICAgICB0aGlzLmVtaXQoJ3NlY3Rpb25FbmQnLCBvcHRpb25zLCB0aGlzKTsKICAgICAgaWYgKCsrdGhpcy5jb2x1bW4gPiB0aGlzLmNvbHVtbnMpIHsKICAgICAgICBpZiAodGhpcy5oZWlnaHQgIT0gbnVsbCkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICB0aGlzLmRvY3VtZW50LmFkZFBhZ2UoKTsKICAgICAgICB0aGlzLmNvbHVtbiA9IDE7CiAgICAgICAgdGhpcy5zdGFydFkgPSB0aGlzLmRvY3VtZW50LnBhZ2UubWFyZ2lucy50b3A7CiAgICAgICAgdGhpcy5tYXhZID0gdGhpcy5kb2N1bWVudC5wYWdlLm1heFkoKTsKICAgICAgICB0aGlzLmRvY3VtZW50LnggPSB0aGlzLnN0YXJ0WDsKICAgICAgICBpZiAodGhpcy5kb2N1bWVudC5fZmlsbENvbG9yKSB7CiAgICAgICAgICAocmVmID0gdGhpcy5kb2N1bWVudCkuZmlsbENvbG9yLmFwcGx5KHJlZiwgdGhpcy5kb2N1bWVudC5fZmlsbENvbG9yKTsKICAgICAgICB9CiAgICAgICAgdGhpcy5lbWl0KCdwYWdlQnJlYWsnLCBvcHRpb25zLCB0aGlzKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmRvY3VtZW50LnggKz0gdGhpcy5saW5lV2lkdGggKyB0aGlzLmNvbHVtbkdhcDsKICAgICAgICB0aGlzLmRvY3VtZW50LnkgPSB0aGlzLnN0YXJ0WTsKICAgICAgICB0aGlzLmVtaXQoJ2NvbHVtbkJyZWFrJywgb3B0aW9ucywgdGhpcyk7CiAgICAgIH0KICAgICAgdGhpcy5lbWl0KCdzZWN0aW9uU3RhcnQnLCBvcHRpb25zLCB0aGlzKTsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9OwoKICAgIHJldHVybiBMaW5lV3JhcHBlcjsKCiAgfSkoRXZlbnRFbWl0dGVyKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBMaW5lV3JhcHBlcjsKCn0pLmNhbGwodGhpcyk7CgoKLyoqKi8gfSksCi8qIDI5NyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuNgooZnVuY3Rpb24oKSB7CiAgdmFyIFBERkltYWdlOwoKICBQREZJbWFnZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTIxKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSB7CiAgICBpbml0SW1hZ2VzOiBmdW5jdGlvbigpIHsKICAgICAgdGhpcy5faW1hZ2VSZWdpc3RyeSA9IHt9OwogICAgICByZXR1cm4gdGhpcy5faW1hZ2VDb3VudCA9IDA7CiAgICB9LAogICAgaW1hZ2U6IGZ1bmN0aW9uKHNyYywgeCwgeSwgb3B0aW9ucykgewogICAgICB2YXIgYmFzZSwgYmgsIGJwLCBidywgaCwgaHAsIGltYWdlLCBpcCwgbmFtZSwgcmVmLCByZWYxLCByZWYyLCByZWYzLCB3LCB3cDsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICBpZiAodHlwZW9mIHggPT09ICdvYmplY3QnKSB7CiAgICAgICAgb3B0aW9ucyA9IHg7CiAgICAgICAgeCA9IG51bGw7CiAgICAgIH0KICAgICAgeCA9IChyZWYgPSB4ICE9IG51bGwgPyB4IDogb3B0aW9ucy54KSAhPSBudWxsID8gcmVmIDogdGhpcy54OwogICAgICB5ID0gKHJlZjEgPSB5ICE9IG51bGwgPyB5IDogb3B0aW9ucy55KSAhPSBudWxsID8gcmVmMSA6IHRoaXMueTsKICAgICAgaWYgKHR5cGVvZiBzcmMgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgaW1hZ2UgPSB0aGlzLl9pbWFnZVJlZ2lzdHJ5W3NyY107CiAgICAgIH0KICAgICAgaWYgKCFpbWFnZSkgewogICAgICAgIGlmIChzcmMud2lkdGggJiYgc3JjLmhlaWdodCkgewogICAgICAgICAgaW1hZ2UgPSBzcmM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGltYWdlID0gdGhpcy5vcGVuSW1hZ2Uoc3JjKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKCFpbWFnZS5vYmopIHsKICAgICAgICBpbWFnZS5lbWJlZCh0aGlzKTsKICAgICAgfQogICAgICBpZiAoKGJhc2UgPSB0aGlzLnBhZ2UueG9iamVjdHMpW25hbWUgPSBpbWFnZS5sYWJlbF0gPT0gbnVsbCkgewogICAgICAgIGJhc2VbbmFtZV0gPSBpbWFnZS5vYmo7CiAgICAgIH0KICAgICAgdyA9IG9wdGlvbnMud2lkdGggfHwgaW1hZ2Uud2lkdGg7CiAgICAgIGggPSBvcHRpb25zLmhlaWdodCB8fCBpbWFnZS5oZWlnaHQ7CiAgICAgIGlmIChvcHRpb25zLndpZHRoICYmICFvcHRpb25zLmhlaWdodCkgewogICAgICAgIHdwID0gdyAvIGltYWdlLndpZHRoOwogICAgICAgIHcgPSBpbWFnZS53aWR0aCAqIHdwOwogICAgICAgIGggPSBpbWFnZS5oZWlnaHQgKiB3cDsKICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmhlaWdodCAmJiAhb3B0aW9ucy53aWR0aCkgewogICAgICAgIGhwID0gaCAvIGltYWdlLmhlaWdodDsKICAgICAgICB3ID0gaW1hZ2Uud2lkdGggKiBocDsKICAgICAgICBoID0gaW1hZ2UuaGVpZ2h0ICogaHA7CiAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5zY2FsZSkgewogICAgICAgIHcgPSBpbWFnZS53aWR0aCAqIG9wdGlvbnMuc2NhbGU7CiAgICAgICAgaCA9IGltYWdlLmhlaWdodCAqIG9wdGlvbnMuc2NhbGU7CiAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5maXQpIHsKICAgICAgICByZWYyID0gb3B0aW9ucy5maXQsIGJ3ID0gcmVmMlswXSwgYmggPSByZWYyWzFdOwogICAgICAgIGJwID0gYncgLyBiaDsKICAgICAgICBpcCA9IGltYWdlLndpZHRoIC8gaW1hZ2UuaGVpZ2h0OwogICAgICAgIGlmIChpcCA+IGJwKSB7CiAgICAgICAgICB3ID0gYnc7CiAgICAgICAgICBoID0gYncgLyBpcDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaCA9IGJoOwogICAgICAgICAgdyA9IGJoICogaXA7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuY292ZXIpIHsKICAgICAgICByZWYzID0gb3B0aW9ucy5jb3ZlciwgYncgPSByZWYzWzBdLCBiaCA9IHJlZjNbMV07CiAgICAgICAgYnAgPSBidyAvIGJoOwogICAgICAgIGlwID0gaW1hZ2Uud2lkdGggLyBpbWFnZS5oZWlnaHQ7CiAgICAgICAgaWYgKGlwID4gYnApIHsKICAgICAgICAgIGggPSBiaDsKICAgICAgICAgIHcgPSBiaCAqIGlwOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB3ID0gYnc7CiAgICAgICAgICBoID0gYncgLyBpcDsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKG9wdGlvbnMuZml0IHx8IG9wdGlvbnMuY292ZXIpIHsKICAgICAgICBpZiAob3B0aW9ucy5hbGlnbiA9PT0gJ2NlbnRlcicpIHsKICAgICAgICAgIHggPSB4ICsgYncgLyAyIC0gdyAvIDI7CiAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmFsaWduID09PSAncmlnaHQnKSB7CiAgICAgICAgICB4ID0geCArIGJ3IC0gdzsKICAgICAgICB9CiAgICAgICAgaWYgKG9wdGlvbnMudmFsaWduID09PSAnY2VudGVyJykgewogICAgICAgICAgeSA9IHkgKyBiaCAvIDIgLSBoIC8gMjsKICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMudmFsaWduID09PSAnYm90dG9tJykgewogICAgICAgICAgeSA9IHkgKyBiaCAtIGg7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICh0aGlzLnkgPT09IHkpIHsKICAgICAgICB0aGlzLnkgKz0gaDsKICAgICAgfQogICAgICB0aGlzLnNhdmUoKTsKICAgICAgdGhpcy50cmFuc2Zvcm0odywgMCwgMCwgLWgsIHgsIHkgKyBoKTsKICAgICAgdGhpcy5hZGRDb250ZW50KCIvIiArIGltYWdlLmxhYmVsICsgIiBEbyIpOwogICAgICB0aGlzLnJlc3RvcmUoKTsKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9LAogICAgb3BlbkltYWdlOiBmdW5jdGlvbihzcmMpIHsKICAgICAgdmFyIGltYWdlOwogICAgICBpZiAodHlwZW9mIHNyYyA9PT0gJ3N0cmluZycpIHsKICAgICAgICBpbWFnZSA9IHRoaXMuX2ltYWdlUmVnaXN0cnlbc3JjXTsKICAgICAgfQogICAgICBpZiAoIWltYWdlKSB7CiAgICAgICAgaW1hZ2UgPSBQREZJbWFnZS5vcGVuKHNyYywgJ0knICsgKCsrdGhpcy5faW1hZ2VDb3VudCkpOwogICAgICAgIGlmICh0eXBlb2Ygc3JjID09PSAnc3RyaW5nJykgewogICAgICAgICAgdGhpcy5faW1hZ2VSZWdpc3RyeVtzcmNdID0gaW1hZ2U7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBpbWFnZTsKICAgIH0KICB9OwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMjk4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CihmdW5jdGlvbigpIHsKICB2YXIgRGF0YTsKCiAgRGF0YSA9IChmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIERhdGEoZGF0YSkgewogICAgICB0aGlzLmRhdGEgPSBkYXRhICE9IG51bGwgPyBkYXRhIDogW107CiAgICAgIHRoaXMucG9zID0gMDsKICAgICAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoOwogICAgfQoKICAgIERhdGEucHJvdG90eXBlLnJlYWRCeXRlID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLmRhdGFbdGhpcy5wb3MrK107CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLndyaXRlQnl0ZSA9IGZ1bmN0aW9uKGJ5dGUpIHsKICAgICAgcmV0dXJuIHRoaXMuZGF0YVt0aGlzLnBvcysrXSA9IGJ5dGU7CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLmJ5dGVBdCA9IGZ1bmN0aW9uKGluZGV4KSB7CiAgICAgIHJldHVybiB0aGlzLmRhdGFbaW5kZXhdOwogICAgfTsKCiAgICBEYXRhLnByb3RvdHlwZS5yZWFkQm9vbCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gISF0aGlzLnJlYWRCeXRlKCk7CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLndyaXRlQm9vbCA9IGZ1bmN0aW9uKHZhbCkgewogICAgICByZXR1cm4gdGhpcy53cml0ZUJ5dGUodmFsID8gMSA6IDApOwogICAgfTsKCiAgICBEYXRhLnByb3RvdHlwZS5yZWFkVUludDMyID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBiMSwgYjIsIGIzLCBiNDsKICAgICAgYjEgPSB0aGlzLnJlYWRCeXRlKCkgKiAweDEwMDAwMDA7CiAgICAgIGIyID0gdGhpcy5yZWFkQnl0ZSgpIDw8IDE2OwogICAgICBiMyA9IHRoaXMucmVhZEJ5dGUoKSA8PCA4OwogICAgICBiNCA9IHRoaXMucmVhZEJ5dGUoKTsKICAgICAgcmV0dXJuIGIxICsgYjIgKyBiMyArIGI0OwogICAgfTsKCiAgICBEYXRhLnByb3RvdHlwZS53cml0ZVVJbnQzMiA9IGZ1bmN0aW9uKHZhbCkgewogICAgICB0aGlzLndyaXRlQnl0ZSgodmFsID4+PiAyNCkgJiAweGZmKTsKICAgICAgdGhpcy53cml0ZUJ5dGUoKHZhbCA+PiAxNikgJiAweGZmKTsKICAgICAgdGhpcy53cml0ZUJ5dGUoKHZhbCA+PiA4KSAmIDB4ZmYpOwogICAgICByZXR1cm4gdGhpcy53cml0ZUJ5dGUodmFsICYgMHhmZik7CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLnJlYWRJbnQzMiA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgaW50OwogICAgICBpbnQgPSB0aGlzLnJlYWRVSW50MzIoKTsKICAgICAgaWYgKGludCA+PSAweDgwMDAwMDAwKSB7CiAgICAgICAgcmV0dXJuIGludCAtIDB4MTAwMDAwMDAwOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBpbnQ7CiAgICAgIH0KICAgIH07CgogICAgRGF0YS5wcm90b3R5cGUud3JpdGVJbnQzMiA9IGZ1bmN0aW9uKHZhbCkgewogICAgICBpZiAodmFsIDwgMCkgewogICAgICAgIHZhbCArPSAweDEwMDAwMDAwMDsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy53cml0ZVVJbnQzMih2YWwpOwogICAgfTsKCiAgICBEYXRhLnByb3RvdHlwZS5yZWFkVUludDE2ID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBiMSwgYjI7CiAgICAgIGIxID0gdGhpcy5yZWFkQnl0ZSgpIDw8IDg7CiAgICAgIGIyID0gdGhpcy5yZWFkQnl0ZSgpOwogICAgICByZXR1cm4gYjEgfCBiMjsKICAgIH07CgogICAgRGF0YS5wcm90b3R5cGUud3JpdGVVSW50MTYgPSBmdW5jdGlvbih2YWwpIHsKICAgICAgdGhpcy53cml0ZUJ5dGUoKHZhbCA+PiA4KSAmIDB4ZmYpOwogICAgICByZXR1cm4gdGhpcy53cml0ZUJ5dGUodmFsICYgMHhmZik7CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLnJlYWRJbnQxNiA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgaW50OwogICAgICBpbnQgPSB0aGlzLnJlYWRVSW50MTYoKTsKICAgICAgaWYgKGludCA+PSAweDgwMDApIHsKICAgICAgICByZXR1cm4gaW50IC0gMHgxMDAwMDsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gaW50OwogICAgICB9CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLndyaXRlSW50MTYgPSBmdW5jdGlvbih2YWwpIHsKICAgICAgaWYgKHZhbCA8IDApIHsKICAgICAgICB2YWwgKz0gMHgxMDAwMDsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy53cml0ZVVJbnQxNih2YWwpOwogICAgfTsKCiAgICBEYXRhLnByb3RvdHlwZS5yZWFkU3RyaW5nID0gZnVuY3Rpb24obGVuZ3RoKSB7CiAgICAgIHZhciBpLCBqLCByZWYsIHJldDsKICAgICAgcmV0ID0gW107CiAgICAgIGZvciAoaSA9IGogPSAwLCByZWYgPSBsZW5ndGg7IDAgPD0gcmVmID8gaiA8IHJlZiA6IGogPiByZWY7IGkgPSAwIDw9IHJlZiA/ICsraiA6IC0taikgewogICAgICAgIHJldFtpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5yZWFkQnl0ZSgpKTsKICAgICAgfQogICAgICByZXR1cm4gcmV0LmpvaW4oJycpOwogICAgfTsKCiAgICBEYXRhLnByb3RvdHlwZS53cml0ZVN0cmluZyA9IGZ1bmN0aW9uKHZhbCkgewogICAgICB2YXIgaSwgaiwgcmVmLCByZXN1bHRzOwogICAgICByZXN1bHRzID0gW107CiAgICAgIGZvciAoaSA9IGogPSAwLCByZWYgPSB2YWwubGVuZ3RoOyAwIDw9IHJlZiA/IGogPCByZWYgOiBqID4gcmVmOyBpID0gMCA8PSByZWYgPyArK2ogOiAtLWopIHsKICAgICAgICByZXN1bHRzLnB1c2godGhpcy53cml0ZUJ5dGUodmFsLmNoYXJDb2RlQXQoaSkpKTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH07CgogICAgRGF0YS5wcm90b3R5cGUuc3RyaW5nQXQgPSBmdW5jdGlvbihwb3MsIGxlbmd0aCkgewogICAgICB0aGlzLnBvcyA9IHBvczsKICAgICAgcmV0dXJuIHRoaXMucmVhZFN0cmluZyhsZW5ndGgpOwogICAgfTsKCiAgICBEYXRhLnByb3RvdHlwZS5yZWFkU2hvcnQgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMucmVhZEludDE2KCk7CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLndyaXRlU2hvcnQgPSBmdW5jdGlvbih2YWwpIHsKICAgICAgcmV0dXJuIHRoaXMud3JpdGVJbnQxNih2YWwpOwogICAgfTsKCiAgICBEYXRhLnByb3RvdHlwZS5yZWFkTG9uZ0xvbmcgPSBmdW5jdGlvbigpIHsKICAgICAgdmFyIGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3LCBiODsKICAgICAgYjEgPSB0aGlzLnJlYWRCeXRlKCk7CiAgICAgIGIyID0gdGhpcy5yZWFkQnl0ZSgpOwogICAgICBiMyA9IHRoaXMucmVhZEJ5dGUoKTsKICAgICAgYjQgPSB0aGlzLnJlYWRCeXRlKCk7CiAgICAgIGI1ID0gdGhpcy5yZWFkQnl0ZSgpOwogICAgICBiNiA9IHRoaXMucmVhZEJ5dGUoKTsKICAgICAgYjcgPSB0aGlzLnJlYWRCeXRlKCk7CiAgICAgIGI4ID0gdGhpcy5yZWFkQnl0ZSgpOwogICAgICBpZiAoYjEgJiAweDgwKSB7CiAgICAgICAgcmV0dXJuICgoYjEgXiAweGZmKSAqIDB4MTAwMDAwMDAwMDAwMDAwICsgKGIyIF4gMHhmZikgKiAweDEwMDAwMDAwMDAwMDAgKyAoYjMgXiAweGZmKSAqIDB4MTAwMDAwMDAwMDAgKyAoYjQgXiAweGZmKSAqIDB4MTAwMDAwMDAwICsgKGI1IF4gMHhmZikgKiAweDEwMDAwMDAgKyAoYjYgXiAweGZmKSAqIDB4MTAwMDAgKyAoYjcgXiAweGZmKSAqIDB4MTAwICsgKGI4IF4gMHhmZikgKyAxKSAqIC0xOwogICAgICB9CiAgICAgIHJldHVybiBiMSAqIDB4MTAwMDAwMDAwMDAwMDAwICsgYjIgKiAweDEwMDAwMDAwMDAwMDAgKyBiMyAqIDB4MTAwMDAwMDAwMDAgKyBiNCAqIDB4MTAwMDAwMDAwICsgYjUgKiAweDEwMDAwMDAgKyBiNiAqIDB4MTAwMDAgKyBiNyAqIDB4MTAwICsgYjg7CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLndyaXRlTG9uZ0xvbmcgPSBmdW5jdGlvbih2YWwpIHsKICAgICAgdmFyIGhpZ2gsIGxvdzsKICAgICAgaGlnaCA9IE1hdGguZmxvb3IodmFsIC8gMHgxMDAwMDAwMDApOwogICAgICBsb3cgPSB2YWwgJiAweGZmZmZmZmZmOwogICAgICB0aGlzLndyaXRlQnl0ZSgoaGlnaCA+PiAyNCkgJiAweGZmKTsKICAgICAgdGhpcy53cml0ZUJ5dGUoKGhpZ2ggPj4gMTYpICYgMHhmZik7CiAgICAgIHRoaXMud3JpdGVCeXRlKChoaWdoID4+IDgpICYgMHhmZik7CiAgICAgIHRoaXMud3JpdGVCeXRlKGhpZ2ggJiAweGZmKTsKICAgICAgdGhpcy53cml0ZUJ5dGUoKGxvdyA+PiAyNCkgJiAweGZmKTsKICAgICAgdGhpcy53cml0ZUJ5dGUoKGxvdyA+PiAxNikgJiAweGZmKTsKICAgICAgdGhpcy53cml0ZUJ5dGUoKGxvdyA+PiA4KSAmIDB4ZmYpOwogICAgICByZXR1cm4gdGhpcy53cml0ZUJ5dGUobG93ICYgMHhmZik7CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLnJlYWRJbnQgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMucmVhZEludDMyKCk7CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLndyaXRlSW50ID0gZnVuY3Rpb24odmFsKSB7CiAgICAgIHJldHVybiB0aGlzLndyaXRlSW50MzIodmFsKTsKICAgIH07CgogICAgRGF0YS5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbihzdGFydCwgZW5kKSB7CiAgICAgIHJldHVybiB0aGlzLmRhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihieXRlcykgewogICAgICB2YXIgYnVmLCBpLCBqLCByZWY7CiAgICAgIGJ1ZiA9IFtdOwogICAgICBmb3IgKGkgPSBqID0gMCwgcmVmID0gYnl0ZXM7IDAgPD0gcmVmID8gaiA8IHJlZiA6IGogPiByZWY7IGkgPSAwIDw9IHJlZiA/ICsraiA6IC0taikgewogICAgICAgIGJ1Zi5wdXNoKHRoaXMucmVhZEJ5dGUoKSk7CiAgICAgIH0KICAgICAgcmV0dXJuIGJ1ZjsKICAgIH07CgogICAgRGF0YS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihieXRlcykgewogICAgICB2YXIgYnl0ZSwgaiwgbGVuLCByZXN1bHRzOwogICAgICByZXN1bHRzID0gW107CiAgICAgIGZvciAoaiA9IDAsIGxlbiA9IGJ5dGVzLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7CiAgICAgICAgYnl0ZSA9IGJ5dGVzW2pdOwogICAgICAgIHJlc3VsdHMucHVzaCh0aGlzLndyaXRlQnl0ZShieXRlKSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9OwoKICAgIHJldHVybiBEYXRhOwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IERhdGE7Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiAyOTkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjEyLjYKKGZ1bmN0aW9uKCkgewogIHZhciBKUEVHLCBmcywKICAgIGluZGV4T2YgPSBbXS5pbmRleE9mIHx8IGZ1bmN0aW9uKGl0ZW0pIHsgZm9yICh2YXIgaSA9IDAsIGwgPSB0aGlzLmxlbmd0aDsgaSA8IGw7IGkrKykgeyBpZiAoaSBpbiB0aGlzICYmIHRoaXNbaV0gPT09IGl0ZW0pIHJldHVybiBpOyB9IHJldHVybiAtMTsgfTsKCiAgZnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpOwoKICBKUEVHID0gKGZ1bmN0aW9uKCkgewogICAgdmFyIE1BUktFUlM7CgogICAgTUFSS0VSUyA9IFsweEZGQzAsIDB4RkZDMSwgMHhGRkMyLCAweEZGQzMsIDB4RkZDNSwgMHhGRkM2LCAweEZGQzcsIDB4RkZDOCwgMHhGRkM5LCAweEZGQ0EsIDB4RkZDQiwgMHhGRkNDLCAweEZGQ0QsIDB4RkZDRSwgMHhGRkNGXTsKCiAgICBmdW5jdGlvbiBKUEVHKGRhdGEsIGxhYmVsKSB7CiAgICAgIHZhciBjaGFubmVscywgbWFya2VyLCBwb3M7CiAgICAgIHRoaXMuZGF0YSA9IGRhdGE7CiAgICAgIHRoaXMubGFiZWwgPSBsYWJlbDsKICAgICAgaWYgKHRoaXMuZGF0YS5yZWFkVUludDE2QkUoMCkgIT09IDB4RkZEOCkgewogICAgICAgIHRocm93ICJTT0kgbm90IGZvdW5kIGluIEpQRUciOwogICAgICB9CiAgICAgIHBvcyA9IDI7CiAgICAgIHdoaWxlIChwb3MgPCB0aGlzLmRhdGEubGVuZ3RoKSB7CiAgICAgICAgbWFya2VyID0gdGhpcy5kYXRhLnJlYWRVSW50MTZCRShwb3MpOwogICAgICAgIHBvcyArPSAyOwogICAgICAgIGlmIChpbmRleE9mLmNhbGwoTUFSS0VSUywgbWFya2VyKSA+PSAwKSB7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcG9zICs9IHRoaXMuZGF0YS5yZWFkVUludDE2QkUocG9zKTsKICAgICAgfQogICAgICBpZiAoaW5kZXhPZi5jYWxsKE1BUktFUlMsIG1hcmtlcikgPCAwKSB7CiAgICAgICAgdGhyb3cgIkludmFsaWQgSlBFRy4iOwogICAgICB9CiAgICAgIHBvcyArPSAyOwogICAgICB0aGlzLmJpdHMgPSB0aGlzLmRhdGFbcG9zKytdOwogICAgICB0aGlzLmhlaWdodCA9IHRoaXMuZGF0YS5yZWFkVUludDE2QkUocG9zKTsKICAgICAgcG9zICs9IDI7CiAgICAgIHRoaXMud2lkdGggPSB0aGlzLmRhdGEucmVhZFVJbnQxNkJFKHBvcyk7CiAgICAgIHBvcyArPSAyOwogICAgICBjaGFubmVscyA9IHRoaXMuZGF0YVtwb3MrK107CiAgICAgIHRoaXMuY29sb3JTcGFjZSA9IChmdW5jdGlvbigpIHsKICAgICAgICBzd2l0Y2ggKGNoYW5uZWxzKSB7CiAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIHJldHVybiAnRGV2aWNlR3JheSc7CiAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgIHJldHVybiAnRGV2aWNlUkdCJzsKICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgcmV0dXJuICdEZXZpY2VDTVlLJzsKICAgICAgICB9CiAgICAgIH0pKCk7CiAgICAgIHRoaXMub2JqID0gbnVsbDsKICAgIH0KCiAgICBKUEVHLnByb3RvdHlwZS5lbWJlZCA9IGZ1bmN0aW9uKGRvY3VtZW50KSB7CiAgICAgIGlmICh0aGlzLm9iaikgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLm9iaiA9IGRvY3VtZW50LnJlZih7CiAgICAgICAgVHlwZTogJ1hPYmplY3QnLAogICAgICAgIFN1YnR5cGU6ICdJbWFnZScsCiAgICAgICAgQml0c1BlckNvbXBvbmVudDogdGhpcy5iaXRzLAogICAgICAgIFdpZHRoOiB0aGlzLndpZHRoLAogICAgICAgIEhlaWdodDogdGhpcy5oZWlnaHQsCiAgICAgICAgQ29sb3JTcGFjZTogdGhpcy5jb2xvclNwYWNlLAogICAgICAgIEZpbHRlcjogJ0RDVERlY29kZScKICAgICAgfSk7CiAgICAgIGlmICh0aGlzLmNvbG9yU3BhY2UgPT09ICdEZXZpY2VDTVlLJykgewogICAgICAgIHRoaXMub2JqLmRhdGFbJ0RlY29kZSddID0gWzEuMCwgMC4wLCAxLjAsIDAuMCwgMS4wLCAwLjAsIDEuMCwgMC4wXTsKICAgICAgfQogICAgICB0aGlzLm9iai5lbmQodGhpcy5kYXRhKTsKICAgICAgcmV0dXJuIHRoaXMuZGF0YSA9IG51bGw7CiAgICB9OwoKICAgIHJldHVybiBKUEVHOwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IEpQRUc7Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiAzMDAgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKEJ1ZmZlcikgey8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CihmdW5jdGlvbigpIHsKICB2YXIgUE5HLCBQTkdJbWFnZSwgemxpYjsKCiAgemxpYiA9IF9fd2VicGFja19yZXF1aXJlX18oNDgpOwoKICBQTkcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwMSk7CgogIFBOR0ltYWdlID0gKGZ1bmN0aW9uKCkgewogICAgZnVuY3Rpb24gUE5HSW1hZ2UoZGF0YSwgbGFiZWwpIHsKICAgICAgdGhpcy5sYWJlbCA9IGxhYmVsOwogICAgICB0aGlzLmltYWdlID0gbmV3IFBORyhkYXRhKTsKICAgICAgdGhpcy53aWR0aCA9IHRoaXMuaW1hZ2Uud2lkdGg7CiAgICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5pbWFnZS5oZWlnaHQ7CiAgICAgIHRoaXMuaW1nRGF0YSA9IHRoaXMuaW1hZ2UuaW1nRGF0YTsKICAgICAgdGhpcy5vYmogPSBudWxsOwogICAgfQoKICAgIFBOR0ltYWdlLnByb3RvdHlwZS5lbWJlZCA9IGZ1bmN0aW9uKGRvY3VtZW50KSB7CiAgICAgIHZhciBrLCBsZW4xLCBtYXNrLCBwYWxldHRlLCBwYXJhbXMsIHJnYiwgdmFsLCB4OwogICAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQ7CiAgICAgIGlmICh0aGlzLm9iaikgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLm9iaiA9IHRoaXMuZG9jdW1lbnQucmVmKHsKICAgICAgICBUeXBlOiAnWE9iamVjdCcsCiAgICAgICAgU3VidHlwZTogJ0ltYWdlJywKICAgICAgICBCaXRzUGVyQ29tcG9uZW50OiB0aGlzLmltYWdlLmJpdHMsCiAgICAgICAgV2lkdGg6IHRoaXMud2lkdGgsCiAgICAgICAgSGVpZ2h0OiB0aGlzLmhlaWdodCwKICAgICAgICBGaWx0ZXI6ICdGbGF0ZURlY29kZScKICAgICAgfSk7CiAgICAgIGlmICghdGhpcy5pbWFnZS5oYXNBbHBoYUNoYW5uZWwpIHsKICAgICAgICBwYXJhbXMgPSB0aGlzLmRvY3VtZW50LnJlZih7CiAgICAgICAgICBQcmVkaWN0b3I6IDE1LAogICAgICAgICAgQ29sb3JzOiB0aGlzLmltYWdlLmNvbG9ycywKICAgICAgICAgIEJpdHNQZXJDb21wb25lbnQ6IHRoaXMuaW1hZ2UuYml0cywKICAgICAgICAgIENvbHVtbnM6IHRoaXMud2lkdGgKICAgICAgICB9KTsKICAgICAgICB0aGlzLm9iai5kYXRhWydEZWNvZGVQYXJtcyddID0gcGFyYW1zOwogICAgICAgIHBhcmFtcy5lbmQoKTsKICAgICAgfQogICAgICBpZiAodGhpcy5pbWFnZS5wYWxldHRlLmxlbmd0aCA9PT0gMCkgewogICAgICAgIHRoaXMub2JqLmRhdGFbJ0NvbG9yU3BhY2UnXSA9IHRoaXMuaW1hZ2UuY29sb3JTcGFjZTsKICAgICAgfSBlbHNlIHsKICAgICAgICBwYWxldHRlID0gdGhpcy5kb2N1bWVudC5yZWYoKTsKICAgICAgICBwYWxldHRlLmVuZChuZXcgQnVmZmVyKHRoaXMuaW1hZ2UucGFsZXR0ZSkpOwogICAgICAgIHRoaXMub2JqLmRhdGFbJ0NvbG9yU3BhY2UnXSA9IFsnSW5kZXhlZCcsICdEZXZpY2VSR0InLCAodGhpcy5pbWFnZS5wYWxldHRlLmxlbmd0aCAvIDMpIC0gMSwgcGFsZXR0ZV07CiAgICAgIH0KICAgICAgaWYgKHRoaXMuaW1hZ2UudHJhbnNwYXJlbmN5LmdyYXlzY2FsZSkgewogICAgICAgIHZhbCA9IHRoaXMuaW1hZ2UudHJhbnNwYXJlbmN5LmdyZXlzY2FsZTsKICAgICAgICByZXR1cm4gdGhpcy5vYmouZGF0YVsnTWFzayddID0gW3ZhbCwgdmFsXTsKICAgICAgfSBlbHNlIGlmICh0aGlzLmltYWdlLnRyYW5zcGFyZW5jeS5yZ2IpIHsKICAgICAgICByZ2IgPSB0aGlzLmltYWdlLnRyYW5zcGFyZW5jeS5yZ2I7CiAgICAgICAgbWFzayA9IFtdOwogICAgICAgIGZvciAoayA9IDAsIGxlbjEgPSByZ2IubGVuZ3RoOyBrIDwgbGVuMTsgaysrKSB7CiAgICAgICAgICB4ID0gcmdiW2tdOwogICAgICAgICAgbWFzay5wdXNoKHgsIHgpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy5vYmouZGF0YVsnTWFzayddID0gbWFzazsKICAgICAgfSBlbHNlIGlmICh0aGlzLmltYWdlLnRyYW5zcGFyZW5jeS5pbmRleGVkKSB7CiAgICAgICAgcmV0dXJuIHRoaXMubG9hZEluZGV4ZWRBbHBoYUNoYW5uZWwoKTsKICAgICAgfSBlbHNlIGlmICh0aGlzLmltYWdlLmhhc0FscGhhQ2hhbm5lbCkgewogICAgICAgIHJldHVybiB0aGlzLnNwbGl0QWxwaGFDaGFubmVsKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUoKTsKICAgICAgfQogICAgfTsKCiAgICBQTkdJbWFnZS5wcm90b3R5cGUuZmluYWxpemUgPSBmdW5jdGlvbigpIHsKICAgICAgdmFyIHNNYXNrOwogICAgICBpZiAodGhpcy5hbHBoYUNoYW5uZWwpIHsKICAgICAgICBzTWFzayA9IHRoaXMuZG9jdW1lbnQucmVmKHsKICAgICAgICAgIFR5cGU6ICdYT2JqZWN0JywKICAgICAgICAgIFN1YnR5cGU6ICdJbWFnZScsCiAgICAgICAgICBIZWlnaHQ6IHRoaXMuaGVpZ2h0LAogICAgICAgICAgV2lkdGg6IHRoaXMud2lkdGgsCiAgICAgICAgICBCaXRzUGVyQ29tcG9uZW50OiA4LAogICAgICAgICAgRmlsdGVyOiAnRmxhdGVEZWNvZGUnLAogICAgICAgICAgQ29sb3JTcGFjZTogJ0RldmljZUdyYXknLAogICAgICAgICAgRGVjb2RlOiBbMCwgMV0KICAgICAgICB9KTsKICAgICAgICBzTWFzay5lbmQodGhpcy5hbHBoYUNoYW5uZWwpOwogICAgICAgIHRoaXMub2JqLmRhdGFbJ1NNYXNrJ10gPSBzTWFzazsKICAgICAgfQogICAgICB0aGlzLm9iai5lbmQodGhpcy5pbWdEYXRhKTsKICAgICAgdGhpcy5pbWFnZSA9IG51bGw7CiAgICAgIHJldHVybiB0aGlzLmltZ0RhdGEgPSBudWxsOwogICAgfTsKCiAgICBQTkdJbWFnZS5wcm90b3R5cGUuc3BsaXRBbHBoYUNoYW5uZWwgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW1hZ2UuZGVjb2RlUGl4ZWxzKChmdW5jdGlvbihfdGhpcykgewogICAgICAgIHJldHVybiBmdW5jdGlvbihwaXhlbHMpIHsKICAgICAgICAgIHZhciBhLCBhbHBoYUNoYW5uZWwsIGNvbG9yQnl0ZVNpemUsIGRvbmUsIGksIGltZ0RhdGEsIGxlbiwgcCwgcGl4ZWxDb3VudDsKICAgICAgICAgIGNvbG9yQnl0ZVNpemUgPSBfdGhpcy5pbWFnZS5jb2xvcnMgKiBfdGhpcy5pbWFnZS5iaXRzIC8gODsKICAgICAgICAgIHBpeGVsQ291bnQgPSBfdGhpcy53aWR0aCAqIF90aGlzLmhlaWdodDsKICAgICAgICAgIGltZ0RhdGEgPSBuZXcgQnVmZmVyKHBpeGVsQ291bnQgKiBjb2xvckJ5dGVTaXplKTsKICAgICAgICAgIGFscGhhQ2hhbm5lbCA9IG5ldyBCdWZmZXIocGl4ZWxDb3VudCk7CiAgICAgICAgICBpID0gcCA9IGEgPSAwOwogICAgICAgICAgbGVuID0gcGl4ZWxzLmxlbmd0aDsKICAgICAgICAgIHdoaWxlIChpIDwgbGVuKSB7CiAgICAgICAgICAgIGltZ0RhdGFbcCsrXSA9IHBpeGVsc1tpKytdOwogICAgICAgICAgICBpbWdEYXRhW3ArK10gPSBwaXhlbHNbaSsrXTsKICAgICAgICAgICAgaW1nRGF0YVtwKytdID0gcGl4ZWxzW2krK107CiAgICAgICAgICAgIGFscGhhQ2hhbm5lbFthKytdID0gcGl4ZWxzW2krK107CiAgICAgICAgICB9CiAgICAgICAgICBkb25lID0gMDsKICAgICAgICAgIHpsaWIuZGVmbGF0ZShpbWdEYXRhLCBmdW5jdGlvbihlcnIsIGltZ0RhdGExKSB7CiAgICAgICAgICAgIF90aGlzLmltZ0RhdGEgPSBpbWdEYXRhMTsKICAgICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICAgIHRocm93IGVycjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoKytkb25lID09PSAyKSB7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmZpbmFsaXplKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgICAgcmV0dXJuIHpsaWIuZGVmbGF0ZShhbHBoYUNoYW5uZWwsIGZ1bmN0aW9uKGVyciwgYWxwaGFDaGFubmVsMSkgewogICAgICAgICAgICBfdGhpcy5hbHBoYUNoYW5uZWwgPSBhbHBoYUNoYW5uZWwxOwogICAgICAgICAgICBpZiAoZXJyKSB7CiAgICAgICAgICAgICAgdGhyb3cgZXJyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgrK2RvbmUgPT09IDIpIHsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuZmluYWxpemUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgfTsKICAgICAgfSkodGhpcykpOwogICAgfTsKCiAgICBQTkdJbWFnZS5wcm90b3R5cGUubG9hZEluZGV4ZWRBbHBoYUNoYW5uZWwgPSBmdW5jdGlvbihmbikgewogICAgICB2YXIgdHJhbnNwYXJlbmN5OwogICAgICB0cmFuc3BhcmVuY3kgPSB0aGlzLmltYWdlLnRyYW5zcGFyZW5jeS5pbmRleGVkOwogICAgICByZXR1cm4gdGhpcy5pbWFnZS5kZWNvZGVQaXhlbHMoKGZ1bmN0aW9uKF90aGlzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHBpeGVscykgewogICAgICAgICAgdmFyIGFscGhhQ2hhbm5lbCwgaSwgaiwgaywgcmVmOwogICAgICAgICAgYWxwaGFDaGFubmVsID0gbmV3IEJ1ZmZlcihfdGhpcy53aWR0aCAqIF90aGlzLmhlaWdodCk7CiAgICAgICAgICBpID0gMDsKICAgICAgICAgIGZvciAoaiA9IGsgPSAwLCByZWYgPSBwaXhlbHMubGVuZ3RoOyBrIDwgcmVmOyBqID0gayArPSAxKSB7CiAgICAgICAgICAgIGFscGhhQ2hhbm5lbFtpKytdID0gdHJhbnNwYXJlbmN5W3BpeGVsc1tqXV07CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gemxpYi5kZWZsYXRlKGFscGhhQ2hhbm5lbCwgZnVuY3Rpb24oZXJyLCBhbHBoYUNoYW5uZWwxKSB7CiAgICAgICAgICAgIF90aGlzLmFscGhhQ2hhbm5lbCA9IGFscGhhQ2hhbm5lbDE7CiAgICAgICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgICAgICB0aHJvdyBlcnI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIF90aGlzLmZpbmFsaXplKCk7CiAgICAgICAgICB9KTsKICAgICAgICB9OwogICAgICB9KSh0aGlzKSk7CiAgICB9OwoKICAgIHJldHVybiBQTkdJbWFnZTsKCiAgfSkoKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBQTkdJbWFnZTsKCn0pLmNhbGwodGhpcyk7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXIpKQoKLyoqKi8gfSksCi8qIDMwMSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oQnVmZmVyKSB7Ly8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjQuMAoKLyoKIyBNSVQgTElDRU5TRQojIENvcHlyaWdodCAoYykgMjAxMSBEZXZvbiBHb3ZldHQKIyAKIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgCiMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSAKIyB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCAKIyBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgCiMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKIyAKIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIAojIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KIyAKIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgCiMgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIAojIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIAojIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgCiMgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiovCgoKKGZ1bmN0aW9uKCkgewogIHZhciBQTkcsIGZzLCB6bGliOwoKICBmcyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7CgogIHpsaWIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ4KTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBQTkcgPSAoZnVuY3Rpb24oKSB7CgogICAgUE5HLmRlY29kZSA9IGZ1bmN0aW9uKHBhdGgsIGZuKSB7CiAgICAgIHJldHVybiBmcy5yZWFkRmlsZShwYXRoLCBmdW5jdGlvbihlcnIsIGZpbGUpIHsKICAgICAgICB2YXIgcG5nOwogICAgICAgIHBuZyA9IG5ldyBQTkcoZmlsZSk7CiAgICAgICAgcmV0dXJuIHBuZy5kZWNvZGUoZnVuY3Rpb24ocGl4ZWxzKSB7CiAgICAgICAgICByZXR1cm4gZm4ocGl4ZWxzKTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9OwoKICAgIFBORy5sb2FkID0gZnVuY3Rpb24ocGF0aCkgewogICAgICB2YXIgZmlsZTsKICAgICAgZmlsZSA9IGZzLnJlYWRGaWxlU3luYyhwYXRoKTsKICAgICAgcmV0dXJuIG5ldyBQTkcoZmlsZSk7CiAgICB9OwoKICAgIGZ1bmN0aW9uIFBORyhkYXRhKSB7CiAgICAgIHZhciBjaHVua1NpemUsIGNvbG9ycywgaSwgaW5kZXgsIGtleSwgc2VjdGlvbiwgc2hvcnQsIHRleHQsIF9pLCBfaiwgX3JlZjsKICAgICAgdGhpcy5kYXRhID0gZGF0YTsKICAgICAgdGhpcy5wb3MgPSA4OwogICAgICB0aGlzLnBhbGV0dGUgPSBbXTsKICAgICAgdGhpcy5pbWdEYXRhID0gW107CiAgICAgIHRoaXMudHJhbnNwYXJlbmN5ID0ge307CiAgICAgIHRoaXMudGV4dCA9IHt9OwogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIGNodW5rU2l6ZSA9IHRoaXMucmVhZFVJbnQzMigpOwogICAgICAgIHNlY3Rpb24gPSAoKGZ1bmN0aW9uKCkgewogICAgICAgICAgdmFyIF9pLCBfcmVzdWx0czsKICAgICAgICAgIF9yZXN1bHRzID0gW107CiAgICAgICAgICBmb3IgKGkgPSBfaSA9IDA7IF9pIDwgNDsgaSA9ICsrX2kpIHsKICAgICAgICAgICAgX3Jlc3VsdHMucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHRoaXMuZGF0YVt0aGlzLnBvcysrXSkpOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIF9yZXN1bHRzOwogICAgICAgIH0pLmNhbGwodGhpcykpLmpvaW4oJycpOwogICAgICAgIHN3aXRjaCAoc2VjdGlvbikgewogICAgICAgICAgY2FzZSAnSUhEUic6CiAgICAgICAgICAgIHRoaXMud2lkdGggPSB0aGlzLnJlYWRVSW50MzIoKTsKICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLnJlYWRVSW50MzIoKTsKICAgICAgICAgICAgdGhpcy5iaXRzID0gdGhpcy5kYXRhW3RoaXMucG9zKytdOwogICAgICAgICAgICB0aGlzLmNvbG9yVHlwZSA9IHRoaXMuZGF0YVt0aGlzLnBvcysrXTsKICAgICAgICAgICAgdGhpcy5jb21wcmVzc2lvbk1ldGhvZCA9IHRoaXMuZGF0YVt0aGlzLnBvcysrXTsKICAgICAgICAgICAgdGhpcy5maWx0ZXJNZXRob2QgPSB0aGlzLmRhdGFbdGhpcy5wb3MrK107CiAgICAgICAgICAgIHRoaXMuaW50ZXJsYWNlTWV0aG9kID0gdGhpcy5kYXRhW3RoaXMucG9zKytdOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ1BMVEUnOgogICAgICAgICAgICB0aGlzLnBhbGV0dGUgPSB0aGlzLnJlYWQoY2h1bmtTaXplKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdJREFUJzoKICAgICAgICAgICAgZm9yIChpID0gX2kgPSAwOyBfaSA8IGNodW5rU2l6ZTsgaSA9IF9pICs9IDEpIHsKICAgICAgICAgICAgICB0aGlzLmltZ0RhdGEucHVzaCh0aGlzLmRhdGFbdGhpcy5wb3MrK10pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAndFJOUyc6CiAgICAgICAgICAgIHRoaXMudHJhbnNwYXJlbmN5ID0ge307CiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5jb2xvclR5cGUpIHsKICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zcGFyZW5jeS5pbmRleGVkID0gdGhpcy5yZWFkKGNodW5rU2l6ZSk7CiAgICAgICAgICAgICAgICBzaG9ydCA9IDI1NSAtIHRoaXMudHJhbnNwYXJlbmN5LmluZGV4ZWQubGVuZ3RoOwogICAgICAgICAgICAgICAgaWYgKHNob3J0ID4gMCkgewogICAgICAgICAgICAgICAgICBmb3IgKGkgPSBfaiA9IDA7IDAgPD0gc2hvcnQgPyBfaiA8IHNob3J0IDogX2ogPiBzaG9ydDsgaSA9IDAgPD0gc2hvcnQgPyArK19qIDogLS1faikgewogICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNwYXJlbmN5LmluZGV4ZWQucHVzaCgyNTUpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zcGFyZW5jeS5ncmF5c2NhbGUgPSB0aGlzLnJlYWQoY2h1bmtTaXplKVswXTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIHRoaXMudHJhbnNwYXJlbmN5LnJnYiA9IHRoaXMucmVhZChjaHVua1NpemUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAndEVYdCc6CiAgICAgICAgICAgIHRleHQgPSB0aGlzLnJlYWQoY2h1bmtTaXplKTsKICAgICAgICAgICAgaW5kZXggPSB0ZXh0LmluZGV4T2YoMCk7CiAgICAgICAgICAgIGtleSA9IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCB0ZXh0LnNsaWNlKDAsIGluZGV4KSk7CiAgICAgICAgICAgIHRoaXMudGV4dFtrZXldID0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIHRleHQuc2xpY2UoaW5kZXggKyAxKSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnSUVORCc6CiAgICAgICAgICAgIHRoaXMuY29sb3JzID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5jb2xvclR5cGUpIHsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgICAgIHJldHVybiAzOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkuY2FsbCh0aGlzKTsKICAgICAgICAgICAgdGhpcy5oYXNBbHBoYUNoYW5uZWwgPSAoX3JlZiA9IHRoaXMuY29sb3JUeXBlKSA9PT0gNCB8fCBfcmVmID09PSA2OwogICAgICAgICAgICBjb2xvcnMgPSB0aGlzLmNvbG9ycyArICh0aGlzLmhhc0FscGhhQ2hhbm5lbCA/IDEgOiAwKTsKICAgICAgICAgICAgdGhpcy5waXhlbEJpdGxlbmd0aCA9IHRoaXMuYml0cyAqIGNvbG9yczsKICAgICAgICAgICAgdGhpcy5jb2xvclNwYWNlID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5jb2xvcnMpIHsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgcmV0dXJuICdEZXZpY2VHcmF5JzsKICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgcmV0dXJuICdEZXZpY2VSR0InOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkuY2FsbCh0aGlzKTsKICAgICAgICAgICAgdGhpcy5pbWdEYXRhID0gbmV3IEJ1ZmZlcih0aGlzLmltZ0RhdGEpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICB0aGlzLnBvcyArPSBjaHVua1NpemU7CiAgICAgICAgfQogICAgICAgIHRoaXMucG9zICs9IDQ7CiAgICAgICAgaWYgKHRoaXMucG9zID4gdGhpcy5kYXRhLmxlbmd0aCkgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbmNvbXBsZXRlIG9yIGNvcnJ1cHQgUE5HIGZpbGUiKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuOwogICAgfQoKICAgIFBORy5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKGJ5dGVzKSB7CiAgICAgIHZhciBpLCBfaSwgX3Jlc3VsdHM7CiAgICAgIF9yZXN1bHRzID0gW107CiAgICAgIGZvciAoaSA9IF9pID0gMDsgMCA8PSBieXRlcyA/IF9pIDwgYnl0ZXMgOiBfaSA+IGJ5dGVzOyBpID0gMCA8PSBieXRlcyA/ICsrX2kgOiAtLV9pKSB7CiAgICAgICAgX3Jlc3VsdHMucHVzaCh0aGlzLmRhdGFbdGhpcy5wb3MrK10pOwogICAgICB9CiAgICAgIHJldHVybiBfcmVzdWx0czsKICAgIH07CgogICAgUE5HLnByb3RvdHlwZS5yZWFkVUludDMyID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBiMSwgYjIsIGIzLCBiNDsKICAgICAgYjEgPSB0aGlzLmRhdGFbdGhpcy5wb3MrK10gPDwgMjQ7CiAgICAgIGIyID0gdGhpcy5kYXRhW3RoaXMucG9zKytdIDw8IDE2OwogICAgICBiMyA9IHRoaXMuZGF0YVt0aGlzLnBvcysrXSA8PCA4OwogICAgICBiNCA9IHRoaXMuZGF0YVt0aGlzLnBvcysrXTsKICAgICAgcmV0dXJuIGIxIHwgYjIgfCBiMyB8IGI0OwogICAgfTsKCiAgICBQTkcucHJvdG90eXBlLnJlYWRVSW50MTYgPSBmdW5jdGlvbigpIHsKICAgICAgdmFyIGIxLCBiMjsKICAgICAgYjEgPSB0aGlzLmRhdGFbdGhpcy5wb3MrK10gPDwgODsKICAgICAgYjIgPSB0aGlzLmRhdGFbdGhpcy5wb3MrK107CiAgICAgIHJldHVybiBiMSB8IGIyOwogICAgfTsKCiAgICBQTkcucHJvdG90eXBlLmRlY29kZVBpeGVscyA9IGZ1bmN0aW9uKGZuKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgIHJldHVybiB6bGliLmluZmxhdGUodGhpcy5pbWdEYXRhLCBmdW5jdGlvbihlcnIsIGRhdGEpIHsKICAgICAgICB2YXIgYnl0ZSwgYywgY29sLCBpLCBsZWZ0LCBsZW5ndGgsIHAsIHBhLCBwYWV0aCwgcGIsIHBjLCBwaXhlbEJ5dGVzLCBwaXhlbHMsIHBvcywgcm93LCBzY2FubGluZUxlbmd0aCwgdXBwZXIsIHVwcGVyTGVmdCwgX2ksIF9qLCBfaywgX2wsIF9tOwogICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgIHRocm93IGVycjsKICAgICAgICB9CiAgICAgICAgcGl4ZWxCeXRlcyA9IF90aGlzLnBpeGVsQml0bGVuZ3RoIC8gODsKICAgICAgICBzY2FubGluZUxlbmd0aCA9IHBpeGVsQnl0ZXMgKiBfdGhpcy53aWR0aDsKICAgICAgICBwaXhlbHMgPSBuZXcgQnVmZmVyKHNjYW5saW5lTGVuZ3RoICogX3RoaXMuaGVpZ2h0KTsKICAgICAgICBsZW5ndGggPSBkYXRhLmxlbmd0aDsKICAgICAgICByb3cgPSAwOwogICAgICAgIHBvcyA9IDA7CiAgICAgICAgYyA9IDA7CiAgICAgICAgd2hpbGUgKHBvcyA8IGxlbmd0aCkgewogICAgICAgICAgc3dpdGNoIChkYXRhW3BvcysrXSkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgZm9yIChpID0gX2kgPSAwOyBfaSA8IHNjYW5saW5lTGVuZ3RoOyBpID0gX2kgKz0gMSkgewogICAgICAgICAgICAgICAgcGl4ZWxzW2MrK10gPSBkYXRhW3BvcysrXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICBmb3IgKGkgPSBfaiA9IDA7IF9qIDwgc2NhbmxpbmVMZW5ndGg7IGkgPSBfaiArPSAxKSB7CiAgICAgICAgICAgICAgICBieXRlID0gZGF0YVtwb3MrK107CiAgICAgICAgICAgICAgICBsZWZ0ID0gaSA8IHBpeGVsQnl0ZXMgPyAwIDogcGl4ZWxzW2MgLSBwaXhlbEJ5dGVzXTsKICAgICAgICAgICAgICAgIHBpeGVsc1tjKytdID0gKGJ5dGUgKyBsZWZ0KSAlIDI1NjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBmb3IgKGkgPSBfayA9IDA7IF9rIDwgc2NhbmxpbmVMZW5ndGg7IGkgPSBfayArPSAxKSB7CiAgICAgICAgICAgICAgICBieXRlID0gZGF0YVtwb3MrK107CiAgICAgICAgICAgICAgICBjb2wgPSAoaSAtIChpICUgcGl4ZWxCeXRlcykpIC8gcGl4ZWxCeXRlczsKICAgICAgICAgICAgICAgIHVwcGVyID0gcm93ICYmIHBpeGVsc1socm93IC0gMSkgKiBzY2FubGluZUxlbmd0aCArIGNvbCAqIHBpeGVsQnl0ZXMgKyAoaSAlIHBpeGVsQnl0ZXMpXTsKICAgICAgICAgICAgICAgIHBpeGVsc1tjKytdID0gKHVwcGVyICsgYnl0ZSkgJSAyNTY7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgZm9yIChpID0gX2wgPSAwOyBfbCA8IHNjYW5saW5lTGVuZ3RoOyBpID0gX2wgKz0gMSkgewogICAgICAgICAgICAgICAgYnl0ZSA9IGRhdGFbcG9zKytdOwogICAgICAgICAgICAgICAgY29sID0gKGkgLSAoaSAlIHBpeGVsQnl0ZXMpKSAvIHBpeGVsQnl0ZXM7CiAgICAgICAgICAgICAgICBsZWZ0ID0gaSA8IHBpeGVsQnl0ZXMgPyAwIDogcGl4ZWxzW2MgLSBwaXhlbEJ5dGVzXTsKICAgICAgICAgICAgICAgIHVwcGVyID0gcm93ICYmIHBpeGVsc1socm93IC0gMSkgKiBzY2FubGluZUxlbmd0aCArIGNvbCAqIHBpeGVsQnl0ZXMgKyAoaSAlIHBpeGVsQnl0ZXMpXTsKICAgICAgICAgICAgICAgIHBpeGVsc1tjKytdID0gKGJ5dGUgKyBNYXRoLmZsb29yKChsZWZ0ICsgdXBwZXIpIC8gMikpICUgMjU2OwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgIGZvciAoaSA9IF9tID0gMDsgX20gPCBzY2FubGluZUxlbmd0aDsgaSA9IF9tICs9IDEpIHsKICAgICAgICAgICAgICAgIGJ5dGUgPSBkYXRhW3BvcysrXTsKICAgICAgICAgICAgICAgIGNvbCA9IChpIC0gKGkgJSBwaXhlbEJ5dGVzKSkgLyBwaXhlbEJ5dGVzOwogICAgICAgICAgICAgICAgbGVmdCA9IGkgPCBwaXhlbEJ5dGVzID8gMCA6IHBpeGVsc1tjIC0gcGl4ZWxCeXRlc107CiAgICAgICAgICAgICAgICBpZiAocm93ID09PSAwKSB7CiAgICAgICAgICAgICAgICAgIHVwcGVyID0gdXBwZXJMZWZ0ID0gMDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIHVwcGVyID0gcGl4ZWxzWyhyb3cgLSAxKSAqIHNjYW5saW5lTGVuZ3RoICsgY29sICogcGl4ZWxCeXRlcyArIChpICUgcGl4ZWxCeXRlcyldOwogICAgICAgICAgICAgICAgICB1cHBlckxlZnQgPSBjb2wgJiYgcGl4ZWxzWyhyb3cgLSAxKSAqIHNjYW5saW5lTGVuZ3RoICsgKGNvbCAtIDEpICogcGl4ZWxCeXRlcyArIChpICUgcGl4ZWxCeXRlcyldOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcCA9IGxlZnQgKyB1cHBlciAtIHVwcGVyTGVmdDsKICAgICAgICAgICAgICAgIHBhID0gTWF0aC5hYnMocCAtIGxlZnQpOwogICAgICAgICAgICAgICAgcGIgPSBNYXRoLmFicyhwIC0gdXBwZXIpOwogICAgICAgICAgICAgICAgcGMgPSBNYXRoLmFicyhwIC0gdXBwZXJMZWZ0KTsKICAgICAgICAgICAgICAgIGlmIChwYSA8PSBwYiAmJiBwYSA8PSBwYykgewogICAgICAgICAgICAgICAgICBwYWV0aCA9IGxlZnQ7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBiIDw9IHBjKSB7CiAgICAgICAgICAgICAgICAgIHBhZXRoID0gdXBwZXI7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBwYWV0aCA9IHVwcGVyTGVmdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHBpeGVsc1tjKytdID0gKGJ5dGUgKyBwYWV0aCkgJSAyNTY7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBmaWx0ZXIgYWxnb3JpdGhtOiAiICsgZGF0YVtwb3MgLSAxXSk7CiAgICAgICAgICB9CiAgICAgICAgICByb3crKzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZuKHBpeGVscyk7CiAgICAgIH0pOwogICAgfTsKCiAgICBQTkcucHJvdG90eXBlLmRlY29kZVBhbGV0dGUgPSBmdW5jdGlvbigpIHsKICAgICAgdmFyIGMsIGksIGxlbmd0aCwgcGFsZXR0ZSwgcG9zLCByZXQsIHRyYW5zcGFyZW5jeSwgX2ksIF9yZWYsIF9yZWYxOwogICAgICBwYWxldHRlID0gdGhpcy5wYWxldHRlOwogICAgICB0cmFuc3BhcmVuY3kgPSB0aGlzLnRyYW5zcGFyZW5jeS5pbmRleGVkIHx8IFtdOwogICAgICByZXQgPSBuZXcgQnVmZmVyKHRyYW5zcGFyZW5jeS5sZW5ndGggKyBwYWxldHRlLmxlbmd0aCk7CiAgICAgIHBvcyA9IDA7CiAgICAgIGxlbmd0aCA9IHBhbGV0dGUubGVuZ3RoOwogICAgICBjID0gMDsKICAgICAgZm9yIChpID0gX2kgPSAwLCBfcmVmID0gcGFsZXR0ZS5sZW5ndGg7IF9pIDwgX3JlZjsgaSA9IF9pICs9IDMpIHsKICAgICAgICByZXRbcG9zKytdID0gcGFsZXR0ZVtpXTsKICAgICAgICByZXRbcG9zKytdID0gcGFsZXR0ZVtpICsgMV07CiAgICAgICAgcmV0W3BvcysrXSA9IHBhbGV0dGVbaSArIDJdOwogICAgICAgIHJldFtwb3MrK10gPSAoX3JlZjEgPSB0cmFuc3BhcmVuY3lbYysrXSkgIT0gbnVsbCA/IF9yZWYxIDogMjU1OwogICAgICB9CiAgICAgIHJldHVybiByZXQ7CiAgICB9OwoKICAgIFBORy5wcm90b3R5cGUuY29weVRvSW1hZ2VEYXRhID0gZnVuY3Rpb24oaW1hZ2VEYXRhLCBwaXhlbHMpIHsKICAgICAgdmFyIGFscGhhLCBjb2xvcnMsIGRhdGEsIGksIGlucHV0LCBqLCBrLCBsZW5ndGgsIHBhbGV0dGUsIHYsIF9yZWY7CiAgICAgIGNvbG9ycyA9IHRoaXMuY29sb3JzOwogICAgICBwYWxldHRlID0gbnVsbDsKICAgICAgYWxwaGEgPSB0aGlzLmhhc0FscGhhQ2hhbm5lbDsKICAgICAgaWYgKHRoaXMucGFsZXR0ZS5sZW5ndGgpIHsKICAgICAgICBwYWxldHRlID0gKF9yZWYgPSB0aGlzLl9kZWNvZGVkUGFsZXR0ZSkgIT0gbnVsbCA/IF9yZWYgOiB0aGlzLl9kZWNvZGVkUGFsZXR0ZSA9IHRoaXMuZGVjb2RlUGFsZXR0ZSgpOwogICAgICAgIGNvbG9ycyA9IDQ7CiAgICAgICAgYWxwaGEgPSB0cnVlOwogICAgICB9CiAgICAgIGRhdGEgPSAoaW1hZ2VEYXRhICE9IG51bGwgPyBpbWFnZURhdGEuZGF0YSA6IHZvaWQgMCkgfHwgaW1hZ2VEYXRhOwogICAgICBsZW5ndGggPSBkYXRhLmxlbmd0aDsKICAgICAgaW5wdXQgPSBwYWxldHRlIHx8IHBpeGVsczsKICAgICAgaSA9IGogPSAwOwogICAgICBpZiAoY29sb3JzID09PSAxKSB7CiAgICAgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKICAgICAgICAgIGsgPSBwYWxldHRlID8gcGl4ZWxzW2kgLyA0XSAqIDQgOiBqOwogICAgICAgICAgdiA9IGlucHV0W2srK107CiAgICAgICAgICBkYXRhW2krK10gPSB2OwogICAgICAgICAgZGF0YVtpKytdID0gdjsKICAgICAgICAgIGRhdGFbaSsrXSA9IHY7CiAgICAgICAgICBkYXRhW2krK10gPSBhbHBoYSA/IGlucHV0W2srK10gOiAyNTU7CiAgICAgICAgICBqID0gazsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKICAgICAgICAgIGsgPSBwYWxldHRlID8gcGl4ZWxzW2kgLyA0XSAqIDQgOiBqOwogICAgICAgICAgZGF0YVtpKytdID0gaW5wdXRbaysrXTsKICAgICAgICAgIGRhdGFbaSsrXSA9IGlucHV0W2srK107CiAgICAgICAgICBkYXRhW2krK10gPSBpbnB1dFtrKytdOwogICAgICAgICAgZGF0YVtpKytdID0gYWxwaGEgPyBpbnB1dFtrKytdIDogMjU1OwogICAgICAgICAgaiA9IGs7CiAgICAgICAgfQogICAgICB9CiAgICB9OwoKICAgIFBORy5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24oZm4pIHsKICAgICAgdmFyIHJldCwKICAgICAgICBfdGhpcyA9IHRoaXM7CiAgICAgIHJldCA9IG5ldyBCdWZmZXIodGhpcy53aWR0aCAqIHRoaXMuaGVpZ2h0ICogNCk7CiAgICAgIHJldHVybiB0aGlzLmRlY29kZVBpeGVscyhmdW5jdGlvbihwaXhlbHMpIHsKICAgICAgICBfdGhpcy5jb3B5VG9JbWFnZURhdGEocmV0LCBwaXhlbHMpOwogICAgICAgIHJldHVybiBmbihyZXQpOwogICAgICB9KTsKICAgIH07CgogICAgcmV0dXJuIFBORzsKCiAgfSkoKTsKCn0pLmNhbGwodGhpcyk7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXIpKQoKLyoqKi8gfSksCi8qIDMwMiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgovLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuNgooZnVuY3Rpb24oKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSB7CiAgICBhbm5vdGF0ZTogZnVuY3Rpb24oeCwgeSwgdywgaCwgb3B0aW9ucykgewogICAgICB2YXIga2V5LCByZWYsIHZhbDsKICAgICAgb3B0aW9ucy5UeXBlID0gJ0Fubm90JzsKICAgICAgb3B0aW9ucy5SZWN0ID0gdGhpcy5fY29udmVydFJlY3QoeCwgeSwgdywgaCk7CiAgICAgIG9wdGlvbnMuQm9yZGVyID0gWzAsIDAsIDBdOwogICAgICBpZiAob3B0aW9ucy5TdWJ0eXBlICE9PSAnTGluaycpIHsKICAgICAgICBpZiAob3B0aW9ucy5DID09IG51bGwpIHsKICAgICAgICAgIG9wdGlvbnMuQyA9IHRoaXMuX25vcm1hbGl6ZUNvbG9yKG9wdGlvbnMuY29sb3IgfHwgWzAsIDAsIDBdKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZGVsZXRlIG9wdGlvbnMuY29sb3I7CiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5EZXN0ID09PSAnc3RyaW5nJykgewogICAgICAgIG9wdGlvbnMuRGVzdCA9IG5ldyBTdHJpbmcob3B0aW9ucy5EZXN0KTsKICAgICAgfQogICAgICBmb3IgKGtleSBpbiBvcHRpb25zKSB7CiAgICAgICAgdmFsID0gb3B0aW9uc1trZXldOwogICAgICAgIG9wdGlvbnNba2V5WzBdLnRvVXBwZXJDYXNlKCkgKyBrZXkuc2xpY2UoMSldID0gdmFsOwogICAgICB9CiAgICAgIHJlZiA9IHRoaXMucmVmKG9wdGlvbnMpOwogICAgICB0aGlzLnBhZ2UuYW5ub3RhdGlvbnMucHVzaChyZWYpOwogICAgICByZWYuZW5kKCk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSwKICAgIG5vdGU6IGZ1bmN0aW9uKHgsIHksIHcsIGgsIGNvbnRlbnRzLCBvcHRpb25zKSB7CiAgICAgIGlmIChvcHRpb25zID09IG51bGwpIHsKICAgICAgICBvcHRpb25zID0ge307CiAgICAgIH0KICAgICAgb3B0aW9ucy5TdWJ0eXBlID0gJ1RleHQnOwogICAgICBvcHRpb25zLkNvbnRlbnRzID0gbmV3IFN0cmluZyhjb250ZW50cyk7CiAgICAgIG9wdGlvbnMuTmFtZSA9ICdDb21tZW50JzsKICAgICAgaWYgKG9wdGlvbnMuY29sb3IgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMuY29sb3IgPSBbMjQzLCAyMjMsIDkyXTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy5hbm5vdGF0ZSh4LCB5LCB3LCBoLCBvcHRpb25zKTsKICAgIH0sCiAgICBsaW5rOiBmdW5jdGlvbih4LCB5LCB3LCBoLCB1cmwsIG9wdGlvbnMpIHsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICBvcHRpb25zLlN1YnR5cGUgPSAnTGluayc7CiAgICAgIG9wdGlvbnMuQSA9IHRoaXMucmVmKHsKICAgICAgICBTOiAnVVJJJywKICAgICAgICBVUkk6IG5ldyBTdHJpbmcodXJsKQogICAgICB9KTsKICAgICAgb3B0aW9ucy5BLmVuZCgpOwogICAgICByZXR1cm4gdGhpcy5hbm5vdGF0ZSh4LCB5LCB3LCBoLCBvcHRpb25zKTsKICAgIH0sCiAgICBfbWFya3VwOiBmdW5jdGlvbih4LCB5LCB3LCBoLCBvcHRpb25zKSB7CiAgICAgIHZhciByZWYxLCB4MSwgeDIsIHkxLCB5MjsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICByZWYxID0gdGhpcy5fY29udmVydFJlY3QoeCwgeSwgdywgaCksIHgxID0gcmVmMVswXSwgeTEgPSByZWYxWzFdLCB4MiA9IHJlZjFbMl0sIHkyID0gcmVmMVszXTsKICAgICAgb3B0aW9ucy5RdWFkUG9pbnRzID0gW3gxLCB5MiwgeDIsIHkyLCB4MSwgeTEsIHgyLCB5MV07CiAgICAgIG9wdGlvbnMuQ29udGVudHMgPSBuZXcgU3RyaW5nOwogICAgICByZXR1cm4gdGhpcy5hbm5vdGF0ZSh4LCB5LCB3LCBoLCBvcHRpb25zKTsKICAgIH0sCiAgICBoaWdobGlnaHQ6IGZ1bmN0aW9uKHgsIHksIHcsIGgsIG9wdGlvbnMpIHsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICBvcHRpb25zLlN1YnR5cGUgPSAnSGlnaGxpZ2h0JzsKICAgICAgaWYgKG9wdGlvbnMuY29sb3IgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMuY29sb3IgPSBbMjQxLCAyMzgsIDE0OF07CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuX21hcmt1cCh4LCB5LCB3LCBoLCBvcHRpb25zKTsKICAgIH0sCiAgICB1bmRlcmxpbmU6IGZ1bmN0aW9uKHgsIHksIHcsIGgsIG9wdGlvbnMpIHsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICBvcHRpb25zLlN1YnR5cGUgPSAnVW5kZXJsaW5lJzsKICAgICAgcmV0dXJuIHRoaXMuX21hcmt1cCh4LCB5LCB3LCBoLCBvcHRpb25zKTsKICAgIH0sCiAgICBzdHJpa2U6IGZ1bmN0aW9uKHgsIHksIHcsIGgsIG9wdGlvbnMpIHsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICBvcHRpb25zLlN1YnR5cGUgPSAnU3RyaWtlT3V0JzsKICAgICAgcmV0dXJuIHRoaXMuX21hcmt1cCh4LCB5LCB3LCBoLCBvcHRpb25zKTsKICAgIH0sCiAgICBsaW5lQW5ub3RhdGlvbjogZnVuY3Rpb24oeDEsIHkxLCB4MiwgeTIsIG9wdGlvbnMpIHsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICBvcHRpb25zLlN1YnR5cGUgPSAnTGluZSc7CiAgICAgIG9wdGlvbnMuQ29udGVudHMgPSBuZXcgU3RyaW5nOwogICAgICBvcHRpb25zLkwgPSBbeDEsIHRoaXMucGFnZS5oZWlnaHQgLSB5MSwgeDIsIHRoaXMucGFnZS5oZWlnaHQgLSB5Ml07CiAgICAgIHJldHVybiB0aGlzLmFubm90YXRlKHgxLCB5MSwgeDIsIHkyLCBvcHRpb25zKTsKICAgIH0sCiAgICByZWN0QW5ub3RhdGlvbjogZnVuY3Rpb24oeCwgeSwgdywgaCwgb3B0aW9ucykgewogICAgICBpZiAob3B0aW9ucyA9PSBudWxsKSB7CiAgICAgICAgb3B0aW9ucyA9IHt9OwogICAgICB9CiAgICAgIG9wdGlvbnMuU3VidHlwZSA9ICdTcXVhcmUnOwogICAgICBvcHRpb25zLkNvbnRlbnRzID0gbmV3IFN0cmluZzsKICAgICAgcmV0dXJuIHRoaXMuYW5ub3RhdGUoeCwgeSwgdywgaCwgb3B0aW9ucyk7CiAgICB9LAogICAgZWxsaXBzZUFubm90YXRpb246IGZ1bmN0aW9uKHgsIHksIHcsIGgsIG9wdGlvbnMpIHsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICBvcHRpb25zLlN1YnR5cGUgPSAnQ2lyY2xlJzsKICAgICAgb3B0aW9ucy5Db250ZW50cyA9IG5ldyBTdHJpbmc7CiAgICAgIHJldHVybiB0aGlzLmFubm90YXRlKHgsIHksIHcsIGgsIG9wdGlvbnMpOwogICAgfSwKICAgIHRleHRBbm5vdGF0aW9uOiBmdW5jdGlvbih4LCB5LCB3LCBoLCB0ZXh0LCBvcHRpb25zKSB7CiAgICAgIGlmIChvcHRpb25zID09IG51bGwpIHsKICAgICAgICBvcHRpb25zID0ge307CiAgICAgIH0KICAgICAgb3B0aW9ucy5TdWJ0eXBlID0gJ0ZyZWVUZXh0JzsKICAgICAgb3B0aW9ucy5Db250ZW50cyA9IG5ldyBTdHJpbmcodGV4dCk7CiAgICAgIG9wdGlvbnMuREEgPSBuZXcgU3RyaW5nOwogICAgICByZXR1cm4gdGhpcy5hbm5vdGF0ZSh4LCB5LCB3LCBoLCBvcHRpb25zKTsKICAgIH0sCiAgICBfY29udmVydFJlY3Q6IGZ1bmN0aW9uKHgxLCB5MSwgdywgaCkgewogICAgICB2YXIgbTAsIG0xLCBtMiwgbTMsIG00LCBtNSwgcmVmMSwgeDIsIHkyOwogICAgICB5MiA9IHkxOwogICAgICB5MSArPSBoOwogICAgICB4MiA9IHgxICsgdzsKICAgICAgcmVmMSA9IHRoaXMuX2N0bSwgbTAgPSByZWYxWzBdLCBtMSA9IHJlZjFbMV0sIG0yID0gcmVmMVsyXSwgbTMgPSByZWYxWzNdLCBtNCA9IHJlZjFbNF0sIG01ID0gcmVmMVs1XTsKICAgICAgeDEgPSBtMCAqIHgxICsgbTIgKiB5MSArIG00OwogICAgICB5MSA9IG0xICogeDEgKyBtMyAqIHkxICsgbTU7CiAgICAgIHgyID0gbTAgKiB4MiArIG0yICogeTIgKyBtNDsKICAgICAgeTIgPSBtMSAqIHgyICsgbTMgKiB5MiArIG01OwogICAgICByZXR1cm4gW3gxLCB5MSwgeDIsIHkyXTsKICAgIH0KICB9OwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMzAzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgptb2R1bGUuZXhwb3J0cyA9IHsKCSc0QTAnOiBbNDc2Ny44NywgNjc0MC43OV0sCgknMkEwJzogWzMzNzAuMzksIDQ3NjcuODddLAoJQTA6IFsyMzgzLjk0LCAzMzcwLjM5XSwKCUExOiBbMTY4My43OCwgMjM4My45NF0sCglBMjogWzExOTAuNTUsIDE2ODMuNzhdLAoJQTM6IFs4NDEuODksIDExOTAuNTVdLAoJQTQ6IFs1OTUuMjgsIDg0MS44OV0sCglBNTogWzQxOS41MywgNTk1LjI4XSwKCUE2OiBbMjk3LjY0LCA0MTkuNTNdLAoJQTc6IFsyMDkuNzYsIDI5Ny42NF0sCglBODogWzE0Ny40MCwgMjA5Ljc2XSwKCUE5OiBbMTA0Ljg4LCAxNDcuNDBdLAoJQTEwOiBbNzMuNzAsIDEwNC44OF0sCglCMDogWzI4MzQuNjUsIDQwMDguMTldLAoJQjE6IFsyMDA0LjA5LCAyODM0LjY1XSwKCUIyOiBbMTQxNy4zMiwgMjAwNC4wOV0sCglCMzogWzEwMDAuNjMsIDE0MTcuMzJdLAoJQjQ6IFs3MDguNjYsIDEwMDAuNjNdLAoJQjU6IFs0OTguOTAsIDcwOC42Nl0sCglCNjogWzM1NC4zMywgNDk4LjkwXSwKCUI3OiBbMjQ5LjQ1LCAzNTQuMzNdLAoJQjg6IFsxNzUuNzUsIDI0OS40NV0sCglCOTogWzEyNC43MiwgMTc1Ljc1XSwKCUIxMDogWzg3Ljg3LCAxMjQuNzJdLAoJQzA6IFsyNTk5LjM3LCAzNjc2LjU0XSwKCUMxOiBbMTgzNi44NSwgMjU5OS4zN10sCglDMjogWzEyOTguMjcsIDE4MzYuODVdLAoJQzM6IFs5MTguNDMsIDEyOTguMjddLAoJQzQ6IFs2NDkuMTMsIDkxOC40M10sCglDNTogWzQ1OS4yMSwgNjQ5LjEzXSwKCUM2OiBbMzIzLjE1LCA0NTkuMjFdLAoJQzc6IFsyMjkuNjEsIDMyMy4xNV0sCglDODogWzE2MS41NywgMjI5LjYxXSwKCUM5OiBbMTEzLjM5LCAxNjEuNTddLAoJQzEwOiBbNzkuMzcsIDExMy4zOV0sCglSQTA6IFsyNDM3LjgwLCAzNDU4LjI3XSwKCVJBMTogWzE3MjkuMTMsIDI0MzcuODBdLAoJUkEyOiBbMTIxOC45MCwgMTcyOS4xM10sCglSQTM6IFs4NjQuNTcsIDEyMTguOTBdLAoJUkE0OiBbNjA5LjQ1LCA4NjQuNTddLAoJU1JBMDogWzI1NTEuMTgsIDM2MjguMzVdLAoJU1JBMTogWzE4MTQuMTcsIDI1NTEuMThdLAoJU1JBMjogWzEyNzUuNTksIDE4MTQuMTddLAoJU1JBMzogWzkwNy4wOSwgMTI3NS41OV0sCglTUkE0OiBbNjM3LjgwLCA5MDcuMDldLAoJRVhFQ1VUSVZFOiBbNTIxLjg2LCA3NTYuMDBdLAoJRk9MSU86IFs2MTIuMDAsIDkzNi4wMF0sCglMRUdBTDogWzYxMi4wMCwgMTAwOC4wMF0sCglMRVRURVI6IFs2MTIuMDAsIDc5Mi4wMF0sCglUQUJMT0lEOiBbNzkyLjAwLCAxMjI0LjAwXQp9OwoKCi8qKiovIH0pLAovKiAzMDQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oQnVmZmVyKSB7Cgp2YXIgUERGSW1hZ2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyMSk7CgpmdW5jdGlvbiBJbWFnZU1lYXN1cmUocGRmS2l0RG9jLCBpbWFnZURpY3Rpb25hcnkpIHsKCXRoaXMucGRmS2l0RG9jID0gcGRmS2l0RG9jOwoJdGhpcy5pbWFnZURpY3Rpb25hcnkgPSBpbWFnZURpY3Rpb25hcnkgfHwge307Cn0KCkltYWdlTWVhc3VyZS5wcm90b3R5cGUubWVhc3VyZUltYWdlID0gZnVuY3Rpb24gKHNyYykgewoJdmFyIGltYWdlLCBsYWJlbDsKCXZhciB0aGF0ID0gdGhpczsKCglpZiAoIXRoaXMucGRmS2l0RG9jLl9pbWFnZVJlZ2lzdHJ5W3NyY10pIHsKCQlsYWJlbCA9ICdJJyArICgrK3RoaXMucGRmS2l0RG9jLl9pbWFnZUNvdW50KTsKCQl0cnkgewoJCQlpbWFnZSA9IFBERkltYWdlLm9wZW4ocmVhbEltYWdlU3JjKHNyYyksIGxhYmVsKTsKCQl9IGNhdGNoIChlcnJvcikgewoJCQlpbWFnZSA9IG51bGw7CgkJfQoJCWlmIChpbWFnZSA9PT0gbnVsbCB8fCBpbWFnZSA9PT0gdW5kZWZpbmVkKSB7CgkJCXRocm93ICdpbnZhbGlkIGltYWdlLCBpbWFnZXMgZGljdGlvbmFyeSBzaG91bGQgY29udGFpbiBkYXRhVVJMIGVudHJpZXMgKG9yIGxvY2FsIGZpbGUgcGF0aHMgaW4gbm9kZS5qcyknOwoJCX0KCQlpbWFnZS5lbWJlZCh0aGlzLnBkZktpdERvYyk7CgkJdGhpcy5wZGZLaXREb2MuX2ltYWdlUmVnaXN0cnlbc3JjXSA9IGltYWdlOwoJfSBlbHNlIHsKCQlpbWFnZSA9IHRoaXMucGRmS2l0RG9jLl9pbWFnZVJlZ2lzdHJ5W3NyY107Cgl9CgoJcmV0dXJuIHt3aWR0aDogaW1hZ2Uud2lkdGgsIGhlaWdodDogaW1hZ2UuaGVpZ2h0fTsKCglmdW5jdGlvbiByZWFsSW1hZ2VTcmMoc3JjKSB7CgkJdmFyIGltZyA9IHRoYXQuaW1hZ2VEaWN0aW9uYXJ5W3NyY107CgoJCWlmICghaW1nKSB7CgkJCXJldHVybiBzcmM7CgkJfQoKCQl2YXIgaW5kZXggPSBpbWcuaW5kZXhPZignYmFzZTY0LCcpOwoJCWlmIChpbmRleCA8IDApIHsKCQkJcmV0dXJuIHRoYXQuaW1hZ2VEaWN0aW9uYXJ5W3NyY107CgkJfQoKCQlyZXR1cm4gQnVmZmVyLmZyb20oaW1nLnN1YnN0cmluZyhpbmRleCArIDcpLCAnYmFzZTY0Jyk7Cgl9Cn07Cgptb2R1bGUuZXhwb3J0cyA9IEltYWdlTWVhc3VyZTsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpLkJ1ZmZlcikpCgovKioqLyB9KSwKLyogMzA1ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgp2YXIgaXNBcnJheSA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNBcnJheTsKCmZ1bmN0aW9uIGdyb3VwRGVjb3JhdGlvbnMobGluZSkgewoJdmFyIGdyb3VwcyA9IFtdLCBjdXJyZW50R3JvdXAgPSBudWxsOwoJZm9yICh2YXIgaSA9IDAsIGwgPSBsaW5lLmlubGluZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJdmFyIGlubGluZSA9IGxpbmUuaW5saW5lc1tpXTsKCQl2YXIgZGVjb3JhdGlvbiA9IGlubGluZS5kZWNvcmF0aW9uOwoJCWlmICghZGVjb3JhdGlvbikgewoJCQljdXJyZW50R3JvdXAgPSBudWxsOwoJCQljb250aW51ZTsKCQl9CgkJaWYgKCFpc0FycmF5KGRlY29yYXRpb24pKSB7CgkJCWRlY29yYXRpb24gPSBbZGVjb3JhdGlvbl07CgkJfQoJCXZhciBjb2xvciA9IGlubGluZS5kZWNvcmF0aW9uQ29sb3IgfHwgaW5saW5lLmNvbG9yIHx8ICdibGFjayc7CgkJdmFyIHN0eWxlID0gaW5saW5lLmRlY29yYXRpb25TdHlsZSB8fCAnc29saWQnOwoJCWZvciAodmFyIGlpID0gMCwgbGwgPSBkZWNvcmF0aW9uLmxlbmd0aDsgaWkgPCBsbDsgaWkrKykgewoJCQl2YXIgZGVjb3JhdGlvbkl0ZW0gPSBkZWNvcmF0aW9uW2lpXTsKCQkJaWYgKCFjdXJyZW50R3JvdXAgfHwgZGVjb3JhdGlvbkl0ZW0gIT09IGN1cnJlbnRHcm91cC5kZWNvcmF0aW9uIHx8CgkJCQlzdHlsZSAhPT0gY3VycmVudEdyb3VwLmRlY29yYXRpb25TdHlsZSB8fCBjb2xvciAhPT0gY3VycmVudEdyb3VwLmRlY29yYXRpb25Db2xvciB8fAoJCQkJZGVjb3JhdGlvbkl0ZW0gPT09ICdsaW5lVGhyb3VnaCcpIHsKCgkJCQljdXJyZW50R3JvdXAgPSB7CgkJCQkJbGluZTogbGluZSwKCQkJCQlkZWNvcmF0aW9uOiBkZWNvcmF0aW9uSXRlbSwKCQkJCQlkZWNvcmF0aW9uQ29sb3I6IGNvbG9yLAoJCQkJCWRlY29yYXRpb25TdHlsZTogc3R5bGUsCgkJCQkJaW5saW5lczogW2lubGluZV0KCQkJCX07CgkJCQlncm91cHMucHVzaChjdXJyZW50R3JvdXApOwoJCQl9IGVsc2UgewoJCQkJY3VycmVudEdyb3VwLmlubGluZXMucHVzaChpbmxpbmUpOwoJCQl9CgkJfQoJfQoKCXJldHVybiBncm91cHM7Cn0KCmZ1bmN0aW9uIGRyYXdEZWNvcmF0aW9uKGdyb3VwLCB4LCB5LCBwZGZLaXREb2MpIHsKCWZ1bmN0aW9uIG1heElubGluZSgpIHsKCQl2YXIgbWF4ID0gMDsKCQlmb3IgKHZhciBpID0gMCwgbCA9IGdyb3VwLmlubGluZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJCXZhciBpbmxpbmUgPSBncm91cC5pbmxpbmVzW2ldOwoJCQltYXggPSBpbmxpbmUuZm9udFNpemUgPiBtYXggPyBpIDogbWF4OwoJCX0KCQlyZXR1cm4gZ3JvdXAuaW5saW5lc1ttYXhdOwoJfQoJZnVuY3Rpb24gd2lkdGgoKSB7CgkJdmFyIHN1bSA9IDA7CgkJZm9yICh2YXIgaSA9IDAsIGwgPSBncm91cC5pbmxpbmVzLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCQlzdW0gKz0gZ3JvdXAuaW5saW5lc1tpXS53aWR0aDsKCQl9CgkJcmV0dXJuIHN1bTsKCX0KCXZhciBmaXJzdElubGluZSA9IGdyb3VwLmlubGluZXNbMF0sCgkJYmlnZ2VySW5saW5lID0gbWF4SW5saW5lKCksCgkJdG90YWxXaWR0aCA9IHdpZHRoKCksCgkJbGluZUFzY2VudCA9IGdyb3VwLmxpbmUuZ2V0QXNjZW5kZXJIZWlnaHQoKSwKCQlhc2NlbnQgPSBiaWdnZXJJbmxpbmUuZm9udC5hc2NlbmRlciAvIDEwMDAgKiBiaWdnZXJJbmxpbmUuZm9udFNpemUsCgkJaGVpZ2h0ID0gYmlnZ2VySW5saW5lLmhlaWdodCwKCQlkZXNjZW50ID0gaGVpZ2h0IC0gYXNjZW50OwoKCXZhciBsdyA9IDAuNSArIE1hdGguZmxvb3IoTWF0aC5tYXgoYmlnZ2VySW5saW5lLmZvbnRTaXplIC0gOCwgMCkgLyAyKSAqIDAuMTI7CgoJc3dpdGNoIChncm91cC5kZWNvcmF0aW9uKSB7CgkJY2FzZSAndW5kZXJsaW5lJzoKCQkJeSArPSBsaW5lQXNjZW50ICsgZGVzY2VudCAqIDAuNDU7CgkJCWJyZWFrOwoJCWNhc2UgJ292ZXJsaW5lJzoKCQkJeSArPSBsaW5lQXNjZW50IC0gKGFzY2VudCAqIDAuODUpOwoJCQlicmVhazsKCQljYXNlICdsaW5lVGhyb3VnaCc6CgkJCXkgKz0gbGluZUFzY2VudCAtIChhc2NlbnQgKiAwLjI1KTsKCQkJYnJlYWs7CgkJZGVmYXVsdDoKCQkJdGhyb3cgJ1Vua293biBkZWNvcmF0aW9uIDogJyArIGdyb3VwLmRlY29yYXRpb247Cgl9CglwZGZLaXREb2Muc2F2ZSgpOwoKCWlmIChncm91cC5kZWNvcmF0aW9uU3R5bGUgPT09ICdkb3VibGUnKSB7CgkJdmFyIGdhcCA9IE1hdGgubWF4KDAuNSwgbHcgKiAyKTsKCQlwZGZLaXREb2MuZmlsbENvbG9yKGdyb3VwLmRlY29yYXRpb25Db2xvcikKCQkJLnJlY3QoeCArIGZpcnN0SW5saW5lLngsIHkgLSBsdyAvIDIsIHRvdGFsV2lkdGgsIGx3IC8gMikuZmlsbCgpCgkJCS5yZWN0KHggKyBmaXJzdElubGluZS54LCB5ICsgZ2FwIC0gbHcgLyAyLCB0b3RhbFdpZHRoLCBsdyAvIDIpLmZpbGwoKTsKCX0gZWxzZSBpZiAoZ3JvdXAuZGVjb3JhdGlvblN0eWxlID09PSAnZGFzaGVkJykgewoJCXZhciBuYkRhc2hlcyA9IE1hdGguY2VpbCh0b3RhbFdpZHRoIC8gKDMuOTYgKyAyLjg0KSk7CgkJdmFyIHJkeCA9IHggKyBmaXJzdElubGluZS54OwoJCXBkZktpdERvYy5yZWN0KHJkeCwgeSwgdG90YWxXaWR0aCwgbHcpLmNsaXAoKTsKCQlwZGZLaXREb2MuZmlsbENvbG9yKGdyb3VwLmRlY29yYXRpb25Db2xvcik7CgkJZm9yICh2YXIgaSA9IDA7IGkgPCBuYkRhc2hlczsgaSsrKSB7CgkJCXBkZktpdERvYy5yZWN0KHJkeCwgeSAtIGx3IC8gMiwgMy45NiwgbHcpLmZpbGwoKTsKCQkJcmR4ICs9IDMuOTYgKyAyLjg0OwoJCX0KCX0gZWxzZSBpZiAoZ3JvdXAuZGVjb3JhdGlvblN0eWxlID09PSAnZG90dGVkJykgewoJCXZhciBuYkRvdHMgPSBNYXRoLmNlaWwodG90YWxXaWR0aCAvIChsdyAqIDMpKTsKCQl2YXIgcnggPSB4ICsgZmlyc3RJbmxpbmUueDsKCQlwZGZLaXREb2MucmVjdChyeCwgeSwgdG90YWxXaWR0aCwgbHcpLmNsaXAoKTsKCQlwZGZLaXREb2MuZmlsbENvbG9yKGdyb3VwLmRlY29yYXRpb25Db2xvcik7CgkJZm9yICh2YXIgaWkgPSAwOyBpaSA8IG5iRG90czsgaWkrKykgewoJCQlwZGZLaXREb2MucmVjdChyeCwgeSAtIGx3IC8gMiwgbHcsIGx3KS5maWxsKCk7CgkJCXJ4ICs9IChsdyAqIDMpOwoJCX0KCX0gZWxzZSBpZiAoZ3JvdXAuZGVjb3JhdGlvblN0eWxlID09PSAnd2F2eScpIHsKCQl2YXIgc2ggPSAwLjcsIHN2ID0gMTsKCQl2YXIgbmJXYXZlcyA9IE1hdGguY2VpbCh0b3RhbFdpZHRoIC8gKHNoICogMikpICsgMTsKCQl2YXIgcnd4ID0geCArIGZpcnN0SW5saW5lLnggLSAxOwoJCXBkZktpdERvYy5yZWN0KHggKyBmaXJzdElubGluZS54LCB5IC0gc3YsIHRvdGFsV2lkdGgsIHkgKyBzdikuY2xpcCgpOwoJCXBkZktpdERvYy5saW5lV2lkdGgoMC4yNCk7CgkJcGRmS2l0RG9jLm1vdmVUbyhyd3gsIHkpOwoJCWZvciAodmFyIGlpaSA9IDA7IGlpaSA8IG5iV2F2ZXM7IGlpaSsrKSB7CgkJCXBkZktpdERvYy5iZXppZXJDdXJ2ZVRvKHJ3eCArIHNoLCB5IC0gc3YsIHJ3eCArIHNoICogMiwgeSAtIHN2LCByd3ggKyBzaCAqIDMsIHkpCgkJCQkuYmV6aWVyQ3VydmVUbyhyd3ggKyBzaCAqIDQsIHkgKyBzdiwgcnd4ICsgc2ggKiA1LCB5ICsgc3YsIHJ3eCArIHNoICogNiwgeSk7CgkJCXJ3eCArPSBzaCAqIDY7CgkJfQoJCXBkZktpdERvYy5zdHJva2UoZ3JvdXAuZGVjb3JhdGlvbkNvbG9yKTsKCX0gZWxzZSB7CgkJcGRmS2l0RG9jLmZpbGxDb2xvcihncm91cC5kZWNvcmF0aW9uQ29sb3IpCgkJCS5yZWN0KHggKyBmaXJzdElubGluZS54LCB5IC0gbHcgLyAyLCB0b3RhbFdpZHRoLCBsdykKCQkJLmZpbGwoKTsKCX0KCXBkZktpdERvYy5yZXN0b3JlKCk7Cn0KCmZ1bmN0aW9uIGRyYXdEZWNvcmF0aW9ucyhsaW5lLCB4LCB5LCBwZGZLaXREb2MpIHsKCXZhciBncm91cHMgPSBncm91cERlY29yYXRpb25zKGxpbmUpOwoJZm9yICh2YXIgaSA9IDAsIGwgPSBncm91cHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJZHJhd0RlY29yYXRpb24oZ3JvdXBzW2ldLCB4LCB5LCBwZGZLaXREb2MpOwoJfQp9CgpmdW5jdGlvbiBkcmF3QmFja2dyb3VuZChsaW5lLCB4LCB5LCBwZGZLaXREb2MpIHsKCXZhciBoZWlnaHQgPSBsaW5lLmdldEhlaWdodCgpOwoJZm9yICh2YXIgaSA9IDAsIGwgPSBsaW5lLmlubGluZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJdmFyIGlubGluZSA9IGxpbmUuaW5saW5lc1tpXTsKCQlpZiAoIWlubGluZS5iYWNrZ3JvdW5kKSB7CgkJCWNvbnRpbnVlOwoJCX0KCQl2YXIganVzdGlmeVNoaWZ0ID0gKGlubGluZS5qdXN0aWZ5U2hpZnQgfHwgMCk7CgkJcGRmS2l0RG9jLmZpbGxDb2xvcihpbmxpbmUuYmFja2dyb3VuZCkKCQkJLnJlY3QoeCArIGlubGluZS54IC0ganVzdGlmeVNoaWZ0LCB5LCBpbmxpbmUud2lkdGggKyBqdXN0aWZ5U2hpZnQsIGhlaWdodCkKCQkJLmZpbGwoKTsKCX0KfQoKbW9kdWxlLmV4cG9ydHMgPSB7CglkcmF3QmFja2dyb3VuZDogZHJhd0JhY2tncm91bmQsCglkcmF3RGVjb3JhdGlvbnM6IGRyYXdEZWNvcmF0aW9ucwp9OwoKLyoqKi8gfSksCi8qIDMwNiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgX19XRUJQQUNLX0FNRF9ERUZJTkVfUkVTVUxUX187LyogRmlsZVNhdmVyLmpzCiAqIEEgc2F2ZUFzKCkgRmlsZVNhdmVyIGltcGxlbWVudGF0aW9uLgogKiAxLjMuMgogKiAyMDE2LTA2LTE2IDE4OjI1OjE5CiAqCiAqIEJ5IEVsaSBHcmV5LCBodHRwOi8vZWxpZ3JleS5jb20KICogTGljZW5zZTogTUlUCiAqICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9lbGlncmV5L0ZpbGVTYXZlci5qcy9ibG9iL21hc3Rlci9MSUNFTlNFLm1kCiAqLwoKLypnbG9iYWwgc2VsZiAqLwovKmpzbGludCBiaXR3aXNlOiB0cnVlLCBpbmRlbnQ6IDQsIGxheGJyZWFrOiB0cnVlLCBsYXhjb21tYTogdHJ1ZSwgc21hcnR0YWJzOiB0cnVlLCBwbHVzcGx1czogdHJ1ZSAqLwoKLyohIEBzb3VyY2UgaHR0cDovL3B1cmwuZWxpZ3JleS5jb20vZ2l0aHViL0ZpbGVTYXZlci5qcy9ibG9iL21hc3Rlci9GaWxlU2F2ZXIuanMgKi8KCnZhciBzYXZlQXMgPSBzYXZlQXMgfHwgKGZ1bmN0aW9uKHZpZXcpIHsKCSJ1c2Ugc3RyaWN0IjsKCS8vIElFIDwxMCBpcyBleHBsaWNpdGx5IHVuc3VwcG9ydGVkCglpZiAodHlwZW9mIHZpZXcgPT09ICJ1bmRlZmluZWQiIHx8IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICJ1bmRlZmluZWQiICYmIC9NU0lFIFsxLTldXC4vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpIHsKCQlyZXR1cm47Cgl9Cgl2YXIKCQkgIGRvYyA9IHZpZXcuZG9jdW1lbnQKCQkgIC8vIG9ubHkgZ2V0IFVSTCB3aGVuIG5lY2Vzc2FyeSBpbiBjYXNlIEJsb2IuanMgaGFzbid0IG92ZXJyaWRkZW4gaXQgeWV0CgkJLCBnZXRfVVJMID0gZnVuY3Rpb24oKSB7CgkJCXJldHVybiB2aWV3LlVSTCB8fCB2aWV3LndlYmtpdFVSTCB8fCB2aWV3OwoJCX0KCQksIHNhdmVfbGluayA9IGRvYyA/IGRvYy5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCAiYSIpIDogW10KCQksIGNhbl91c2Vfc2F2ZV9saW5rID0gImRvd25sb2FkIiBpbiBzYXZlX2xpbmsKCQksIGNsaWNrID0gZnVuY3Rpb24obm9kZSkgewoJCQl2YXIgZXZlbnQgPSBuZXcgTW91c2VFdmVudCgiY2xpY2siKTsKCQkJbm9kZS5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKCQl9CgkJLCBpc19zYWZhcmkgPSAvY29uc3RydWN0b3IvaS50ZXN0KHZpZXcuSFRNTEVsZW1lbnQpIHx8IHZpZXcuc2FmYXJpCgkJLCBpc19jaHJvbWVfaW9zID0vQ3JpT1NcL1tcZF0rLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpCgkJLCB0aHJvd19vdXRzaWRlID0gZnVuY3Rpb24oZXgpIHsKCQkJKHZpZXcuc2V0SW1tZWRpYXRlIHx8IHZpZXcuc2V0VGltZW91dCkoZnVuY3Rpb24oKSB7CgkJCQl0aHJvdyBleDsKCQkJfSwgMCk7CgkJfQoJCSwgZm9yY2Vfc2F2ZWFibGVfdHlwZSA9ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iCgkJLy8gdGhlIEJsb2IgQVBJIGlzIGZ1bmRhbWVudGFsbHkgYnJva2VuIGFzIHRoZXJlIGlzIG5vICJkb3dubG9hZGZpbmlzaGVkIiBldmVudCB0byBzdWJzY3JpYmUgdG8KCQksIGFyYml0cmFyeV9yZXZva2VfdGltZW91dCA9IDEwMDAgKiA0MCAvLyBpbiBtcwoJCSwgcmV2b2tlID0gZnVuY3Rpb24oZmlsZSkgewoJCQl2YXIgcmV2b2tlciA9IGZ1bmN0aW9uKCkgewoJCQkJaWYgKHR5cGVvZiBmaWxlID09PSAic3RyaW5nIikgeyAvLyBmaWxlIGlzIGFuIG9iamVjdCBVUkwKCQkJCQlnZXRfVVJMKCkucmV2b2tlT2JqZWN0VVJMKGZpbGUpOwoJCQkJfSBlbHNlIHsgLy8gZmlsZSBpcyBhIEZpbGUKCQkJCQlmaWxlLnJlbW92ZSgpOwoJCQkJfQoJCQl9OwoJCQlzZXRUaW1lb3V0KHJldm9rZXIsIGFyYml0cmFyeV9yZXZva2VfdGltZW91dCk7CgkJfQoJCSwgZGlzcGF0Y2ggPSBmdW5jdGlvbihmaWxlc2F2ZXIsIGV2ZW50X3R5cGVzLCBldmVudCkgewoJCQlldmVudF90eXBlcyA9IFtdLmNvbmNhdChldmVudF90eXBlcyk7CgkJCXZhciBpID0gZXZlbnRfdHlwZXMubGVuZ3RoOwoJCQl3aGlsZSAoaS0tKSB7CgkJCQl2YXIgbGlzdGVuZXIgPSBmaWxlc2F2ZXJbIm9uIiArIGV2ZW50X3R5cGVzW2ldXTsKCQkJCWlmICh0eXBlb2YgbGlzdGVuZXIgPT09ICJmdW5jdGlvbiIpIHsKCQkJCQl0cnkgewoJCQkJCQlsaXN0ZW5lci5jYWxsKGZpbGVzYXZlciwgZXZlbnQgfHwgZmlsZXNhdmVyKTsKCQkJCQl9IGNhdGNoIChleCkgewoJCQkJCQl0aHJvd19vdXRzaWRlKGV4KTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgkJLCBhdXRvX2JvbSA9IGZ1bmN0aW9uKGJsb2IpIHsKCQkJLy8gcHJlcGVuZCBCT00gZm9yIFVURi04IFhNTCBhbmQgdGV4dC8qIHR5cGVzIChpbmNsdWRpbmcgSFRNTCkKCQkJLy8gbm90ZTogeW91ciBicm93c2VyIHdpbGwgYXV0b21hdGljYWxseSBjb252ZXJ0IFVURi0xNiBVK0ZFRkYgdG8gRUYgQkIgQkYKCQkJaWYgKC9eXHMqKD86dGV4dFwvXFMqfGFwcGxpY2F0aW9uXC94bWx8XFMqXC9cUypcK3htbClccyo7LipjaGFyc2V0XHMqPVxzKnV0Zi04L2kudGVzdChibG9iLnR5cGUpKSB7CgkJCQlyZXR1cm4gbmV3IEJsb2IoW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhGRUZGKSwgYmxvYl0sIHt0eXBlOiBibG9iLnR5cGV9KTsKCQkJfQoJCQlyZXR1cm4gYmxvYjsKCQl9CgkJLCBGaWxlU2F2ZXIgPSBmdW5jdGlvbihibG9iLCBuYW1lLCBub19hdXRvX2JvbSkgewoJCQlpZiAoIW5vX2F1dG9fYm9tKSB7CgkJCQlibG9iID0gYXV0b19ib20oYmxvYik7CgkJCX0KCQkJLy8gRmlyc3QgdHJ5IGEuZG93bmxvYWQsIHRoZW4gd2ViIGZpbGVzeXN0ZW0sIHRoZW4gb2JqZWN0IFVSTHMKCQkJdmFyCgkJCQkgIGZpbGVzYXZlciA9IHRoaXMKCQkJCSwgdHlwZSA9IGJsb2IudHlwZQoJCQkJLCBmb3JjZSA9IHR5cGUgPT09IGZvcmNlX3NhdmVhYmxlX3R5cGUKCQkJCSwgb2JqZWN0X3VybAoJCQkJLCBkaXNwYXRjaF9hbGwgPSBmdW5jdGlvbigpIHsKCQkJCQlkaXNwYXRjaChmaWxlc2F2ZXIsICJ3cml0ZXN0YXJ0IHByb2dyZXNzIHdyaXRlIHdyaXRlZW5kIi5zcGxpdCgiICIpKTsKCQkJCX0KCQkJCS8vIG9uIGFueSBmaWxlc3lzIGVycm9ycyByZXZlcnQgdG8gc2F2aW5nIHdpdGggb2JqZWN0IFVSTHMKCQkJCSwgZnNfZXJyb3IgPSBmdW5jdGlvbigpIHsKCQkJCQlpZiAoKGlzX2Nocm9tZV9pb3MgfHwgKGZvcmNlICYmIGlzX3NhZmFyaSkpICYmIHZpZXcuRmlsZVJlYWRlcikgewoJCQkJCQkvLyBTYWZhcmkgZG9lc24ndCBhbGxvdyBkb3dubG9hZGluZyBvZiBibG9iIHVybHMKCQkJCQkJdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CgkJCQkJCXJlYWRlci5vbmxvYWRlbmQgPSBmdW5jdGlvbigpIHsKCQkJCQkJCXZhciB1cmwgPSBpc19jaHJvbWVfaW9zID8gcmVhZGVyLnJlc3VsdCA6IHJlYWRlci5yZXN1bHQucmVwbGFjZSgvXmRhdGE6W147XSo7LywgJ2RhdGE6YXR0YWNobWVudC9maWxlOycpOwoJCQkJCQkJdmFyIHBvcHVwID0gdmlldy5vcGVuKHVybCwgJ19ibGFuaycpOwoJCQkJCQkJaWYoIXBvcHVwKSB2aWV3LmxvY2F0aW9uLmhyZWYgPSB1cmw7CgkJCQkJCQl1cmw9dW5kZWZpbmVkOyAvLyByZWxlYXNlIHJlZmVyZW5jZSBiZWZvcmUgZGlzcGF0Y2hpbmcKCQkJCQkJCWZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLkRPTkU7CgkJCQkJCQlkaXNwYXRjaF9hbGwoKTsKCQkJCQkJfTsKCQkJCQkJcmVhZGVyLnJlYWRBc0RhdGFVUkwoYmxvYik7CgkJCQkJCWZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLklOSVQ7CgkJCQkJCXJldHVybjsKCQkJCQl9CgkJCQkJLy8gZG9uJ3QgY3JlYXRlIG1vcmUgb2JqZWN0IFVSTHMgdGhhbiBuZWVkZWQKCQkJCQlpZiAoIW9iamVjdF91cmwpIHsKCQkJCQkJb2JqZWN0X3VybCA9IGdldF9VUkwoKS5jcmVhdGVPYmplY3RVUkwoYmxvYik7CgkJCQkJfQoJCQkJCWlmIChmb3JjZSkgewoJCQkJCQl2aWV3LmxvY2F0aW9uLmhyZWYgPSBvYmplY3RfdXJsOwoJCQkJCX0gZWxzZSB7CgkJCQkJCXZhciBvcGVuZWQgPSB2aWV3Lm9wZW4ob2JqZWN0X3VybCwgIl9ibGFuayIpOwoJCQkJCQlpZiAoIW9wZW5lZCkgewoJCQkJCQkJLy8gQXBwbGUgZG9lcyBub3QgYWxsb3cgd2luZG93Lm9wZW4sIHNlZSBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9zYWZhcmkvZG9jdW1lbnRhdGlvbi9Ub29scy9Db25jZXB0dWFsL1NhZmFyaUV4dGVuc2lvbkd1aWRlL1dvcmtpbmd3aXRoV2luZG93c2FuZFRhYnMvV29ya2luZ3dpdGhXaW5kb3dzYW5kVGFicy5odG1sCgkJCQkJCQl2aWV3LmxvY2F0aW9uLmhyZWYgPSBvYmplY3RfdXJsOwoJCQkJCQl9CgkJCQkJfQoJCQkJCWZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLkRPTkU7CgkJCQkJZGlzcGF0Y2hfYWxsKCk7CgkJCQkJcmV2b2tlKG9iamVjdF91cmwpOwoJCQkJfQoJCQk7CgkJCWZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLklOSVQ7CgoJCQlpZiAoY2FuX3VzZV9zYXZlX2xpbmspIHsKCQkJCW9iamVjdF91cmwgPSBnZXRfVVJMKCkuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOwoJCQkJc2V0VGltZW91dChmdW5jdGlvbigpIHsKCQkJCQlzYXZlX2xpbmsuaHJlZiA9IG9iamVjdF91cmw7CgkJCQkJc2F2ZV9saW5rLmRvd25sb2FkID0gbmFtZTsKCQkJCQljbGljayhzYXZlX2xpbmspOwoJCQkJCWRpc3BhdGNoX2FsbCgpOwoJCQkJCXJldm9rZShvYmplY3RfdXJsKTsKCQkJCQlmaWxlc2F2ZXIucmVhZHlTdGF0ZSA9IGZpbGVzYXZlci5ET05FOwoJCQkJfSk7CgkJCQlyZXR1cm47CgkJCX0KCgkJCWZzX2Vycm9yKCk7CgkJfQoJCSwgRlNfcHJvdG8gPSBGaWxlU2F2ZXIucHJvdG90eXBlCgkJLCBzYXZlQXMgPSBmdW5jdGlvbihibG9iLCBuYW1lLCBub19hdXRvX2JvbSkgewoJCQlyZXR1cm4gbmV3IEZpbGVTYXZlcihibG9iLCBuYW1lIHx8IGJsb2IubmFtZSB8fCAiZG93bmxvYWQiLCBub19hdXRvX2JvbSk7CgkJfQoJOwoJLy8gSUUgMTArIChuYXRpdmUgc2F2ZUFzKQoJaWYgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICJ1bmRlZmluZWQiICYmIG5hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKSB7CgkJcmV0dXJuIGZ1bmN0aW9uKGJsb2IsIG5hbWUsIG5vX2F1dG9fYm9tKSB7CgkJCW5hbWUgPSBuYW1lIHx8IGJsb2IubmFtZSB8fCAiZG93bmxvYWQiOwoKCQkJaWYgKCFub19hdXRvX2JvbSkgewoJCQkJYmxvYiA9IGF1dG9fYm9tKGJsb2IpOwoJCQl9CgkJCXJldHVybiBuYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYihibG9iLCBuYW1lKTsKCQl9OwoJfQoKCUZTX3Byb3RvLmFib3J0ID0gZnVuY3Rpb24oKXt9OwoJRlNfcHJvdG8ucmVhZHlTdGF0ZSA9IEZTX3Byb3RvLklOSVQgPSAwOwoJRlNfcHJvdG8uV1JJVElORyA9IDE7CglGU19wcm90by5ET05FID0gMjsKCglGU19wcm90by5lcnJvciA9CglGU19wcm90by5vbndyaXRlc3RhcnQgPQoJRlNfcHJvdG8ub25wcm9ncmVzcyA9CglGU19wcm90by5vbndyaXRlID0KCUZTX3Byb3RvLm9uYWJvcnQgPQoJRlNfcHJvdG8ub25lcnJvciA9CglGU19wcm90by5vbndyaXRlZW5kID0KCQludWxsOwoKCXJldHVybiBzYXZlQXM7Cn0oCgkgICB0eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIgJiYgc2VsZgoJfHwgdHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgJiYgd2luZG93Cgl8fCB0aGlzLmNvbnRlbnQKKSk7Ci8vIGBzZWxmYCBpcyB1bmRlZmluZWQgaW4gRmlyZWZveCBmb3IgQW5kcm9pZCBjb250ZW50IHNjcmlwdCBjb250ZXh0Ci8vIHdoaWxlIGB0aGlzYCBpcyBuc0lDb250ZW50RnJhbWVNZXNzYWdlTWFuYWdlcgovLyB3aXRoIGFuIGF0dHJpYnV0ZSBgY29udGVudGAgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgd2luZG93CgppZiAodHlwZW9mIG1vZHVsZSAhPT0gInVuZGVmaW5lZCIgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICBtb2R1bGUuZXhwb3J0cy5zYXZlQXMgPSBzYXZlQXM7Cn0gZWxzZSBpZiAoKCJmdW5jdGlvbiIgIT09ICJ1bmRlZmluZWQiICYmIF9fd2VicGFja19yZXF1aXJlX18oMzA3KSAhPT0gbnVsbCkgJiYgKF9fd2VicGFja19yZXF1aXJlX18oMzA4KSAhPT0gbnVsbCkpIHsKICAhKF9fV0VCUEFDS19BTURfREVGSU5FX1JFU1VMVF9fID0gKGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHNhdmVBczsKICB9KS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18sIGV4cG9ydHMsIG1vZHVsZSksCgkJCQlfX1dFQlBBQ0tfQU1EX0RFRklORV9SRVNVTFRfXyAhPT0gdW5kZWZpbmVkICYmIChtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19BTURfREVGSU5FX1JFU1VMVF9fKSk7Cn0KCgovKioqLyB9KSwKLyogMzA3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7Cgl0aHJvdyBuZXcgRXJyb3IoImRlZmluZSBjYW5ub3QgYmUgdXNlZCBpbmRpcmVjdCIpOwp9OwoKCi8qKiovIH0pLAovKiAzMDggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKF9fd2VicGFja19hbWRfb3B0aW9uc19fKSB7LyogZ2xvYmFscyBfX3dlYnBhY2tfYW1kX29wdGlvbnNfXyAqLwptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19hbWRfb3B0aW9uc19fOwoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIHt9KSkKCi8qKiovIH0pCi8qKioqKiovIF0pOwp9KTs="></script>
<script src="data:application/javascript;base64,dGhpcy5wZGZNYWtlID0gdGhpcy5wZGZNYWtlIHx8IHt9OyB0aGlzLnBkZk1ha2UudmZzID0gewogICJSb2JvdG8tSXRhbGljLnR0ZiI6ICJBQUVBQUFBU0FRQUFCQUFnUjBSRlJ0UlgxRmtBQWdwOEFBQUNSRWRRVDFOS2N1Q3pBQUlNd0FBQVVpUkhVMVZDdzRhWkVRQUNYdVFBQUJmb1QxTXZNcUNuc08wQUFBR29BQUFBWUdOdFlYQkFiYjlEQUFBYWZBQUFCb0JqZG5RZ0pFRUc1UUFBSTVRQUFBQk1abkJuYldmMFhLc0FBQ0Q4QUFBQnZHZGhjM0FBQ0FBVEFBSUtjQUFBQUF4bmJIbG1vTHNrdEFBQUxhZ0FBZG4yYUdSdGVDRWUvQVVBQUJXUUFBQUU3R2hsWVdUNGdhc0FBQUFCTEFBQUFEWm9hR1ZoREtZU2VnQUFBV1FBQUFBa2FHMTBlSEpPMXlnQUFBSUlBQUFUaUd4dlkyRVhNNXpCQUFBajRBQUFDY1p0WVhod0J4SUNXd0FBQVlnQUFBQWdibUZ0WlRsTFpGQUFBZ2VnQUFBQ3JuQnZjM1QvWVFCa0FBSUtVQUFBQUNCd2NtVndkS0NQN0FBQUlyZ0FBQURiQUFFQUFBQUNBQUFjYWRJaVh3ODg5UUFiQ0FBQUFBQUF4UEFSTGdBQUFBRFEyMDZNK2pqOTFRbE1DSE1BQWdBSkFBSUFBQUFBQUFBQUFRQUFCMnorREFBQUNSYjZPUDUyQ1V3SUFBR3pBQUFBQUFBQUFBQUFBQUFBQk9JQUFRQUFCT0lBa0FBV0FGWUFCUUFCQUFBQUFBQU9BQUFDQUFGekFBWUFBUUFEQkFzQmtBQUZBQUFGbWdVekFBQUJId1dhQlRNQUFBUFJBR1lDQUFBQUFnQUFBQUFBQUFBQUFPQUFDdjlRQUNGL0FBQUFJUUFBQUFCSFQwOUhBQUVBQVAvOUJnRCtBQUJtQjVvQ0FDQUFBWjhBQUFBQUJEb0ZzQUFnQUNBQUFnT1dBR1FBQ2dBQUFBb0FBQUgyQUFBQjlnQUFBZ2tBUXdLRkFNZ0UwUUJTQkdZQVNnVzVBTHNFM1FBNkFXUUFxZ0t4QUcwQ3ZmK1BBMklBYXdSd0FFd0JrUCtQQWk0QUdRSVZBRFVEUGYrUEJHWUFhQVJtQVBrRVpnQVhCR1lBTkFSbUFBVUVaZ0J5QkdZQWNBUm1BSjBFWmdCQkJHWUFsQUhyQUNzQnJ2K2JBL3dBUVFSTUFIQUVHQUE2QTdRQXBRY0NBRVFGR3YrdkJOOEFPd1VYQUhRRklRQTdCSE1BT3dSVUFEc0ZVd0I1QlpJQU93SW1BRWtFVWdBS0JPY0FPd1EzQURzRzBBQTdCWklBT3dWZ0FIY0U3d0E3QldBQWJ3VFJBRG9FcFFBbkJLc0FxQVVTQUdjRStnQ2tCdXdBd3dUbi85UUVzd0NvQksvLzZ3SVovLzhET1FDL0Fobi9lZ05JQUU4RGl2K0JBbkFBendSREFETUVaUUFmQkJvQVJnUnFBRXNFSmdCRkFyd0FkQVJsQUFRRVVBQWZBZXdBTHdIay94UUQrUUFnQWV3QUx3YlhBQjRFVWdBZkJIY0FSUVJsLzljRWN3QkpBcW9BSHdRS0FDNENrd0JEQkZFQVd3UE1BRzRGM3dDQUErUC94QU8yLzZVRDQvL3RBcW9BT0FIdUFDRUNxditNQlZFQWFRSHUvL0VFU0FCU0JJei84d1dTQUJJRXZRQlRBZWIvOXdUTS85MERTQURiQmlNQVlnT0NBTU1EcmdCWkJGWUFnUVlrQUdFRG1BRGpBdkFBNkFRdkFDVUM0Z0JjQXVJQWJnSjVBTlVFYi8vbEE5VUFld0lRQUtVQjl2L0lBdUlBM3dPUkFNQURyUUFQQmJrQXVRWVBBTFFHRXdDZUE3Yi8wd2RMLzRRRUxRQW9CV0FBSUFTZ0FEZ0Vwd0FlQnBjQUV3U1dBRndFZUFCRUJHOEFPUVNELytBRmVRQTFBZlVBTGdSYkFDMEVPQUFpQWlJQUl3VnFBRFVFYndBa0IzQUFWQWNXQUVjQjl3QXpCV2NBVVFLdS8wa0ZYZ0JuQkhrQVFnVnZBR2NFMXdCYUFmNy9DUVFoQUQ0RHNRRVhBM3dCSmdPWkFPTURXZ0VIQWV3QkRnS2lBUUVDSS8rdkE3TUEzUUx2QU1JQ1V2L3BBQXI5YWdBSy9lc0FDdjBMQUFyOTlRQUsvTnNCNnZ5N0FnY0JJUVAyQVBNQ0VRQ2xCRnNBUXdXRC83RUZVUUJwQlNEL3hBUjRBQXdGa3dCRUJIai8yZ1daQUZRRmFBQ0dCVE1BQ2dSc0FFZ0VvLy93QSswQWhBUnZBRU1FT1FBcEJBOEFnZ1J2QUNRRWRRQnpBbzBBaFFSVy83Y0QyQUEvQktrQVlBUnYvOXdFTmdCT0JHOEFTZ1FXQUljRVJRQm5CWUlBUVFWNUFFOEdiZ0JtQkljQVVRUXJBR2NHSWdCbUJkc0FvUVZGQUhnSVdmL01DR3dBUXdaYUFMUUZrZ0JDQk80QU5BWGcvNHNIRmYrc0JLVUFKUVdTQUVNRmlQL0tCT29Ba3dZSEFGc0Z0Z0JCQlZvQXpnZFhBRUlIamdCQ0JlMEFpUWJBQUVVRTZBQTJCVVVBZEFiNkFFa0UrLy9vQkZRQVJnUjVBREFEU3dBdEJMbi9qUVg3LzZVRCt3QWhCSVVBTHdRN0FDOEVodi9JQmNzQU1BU0VBQzhFaFFBdkE4UUFZQVdxQUV3RW93QXZCRUlBZXdaUUFDOEdkUUFrQk5zQVZnWVFBREFFUVFBd0JEWUFOQVpmQURBRVRQKy9CRkFBSHdRMkFFNEduLy9EQnJrQUx3UndBQjhFaFFBdkJ0d0Fid1lHQUU4RVB3QXVCdjRBU1FYVUFDd0V0Lys2QkMvL29nYmZBRm9GNXdCT0JxY0FKZ1crQUNrSXlRQklCNThBTGdRTi84NER4Ly9LQlZFQWFRUnlBRUlFN1FDdEErNEFoQVZSQUdvRWJ3QkVCdFVBZEFYL0FGSUczQUJ2QmdZQVR3VVVBR1lFTUFCTkJPRUFRQUFLL09nQUN2MExBQXIrRndBSy9qc0FDdm80QUFyNlR3US9BQzRFL2dBNkJIRC8xd1JMQURVRGZ3QWtCTUFBUXdQd0FDUUU3QUEyQkdZQUxRWmtBTHNGWXdCMEI1MEFPZ1dTQUNRSC9BQkNCc2tBSkFYS0FIRUV1QUJmQnY4QXJBVTlBRmNGVHdERUJGSUFtQVZRQU93R0NnQ0tCS01BQndUc0FEVUVRd0F0QlpBQVF3UnZBQ1FGWndCUkJJNEFQQVNPLy93RW5mLzRBenIvNlFUYUFERUdhd0F5QnJrQVRBWXZBSzBGRFFCb0JESUFyd1B5QUtBSGovL2ZCazMvMmdmSUFEc0dlQUFqQk5vQWFnUUhBRXdGaXdDYUJRTUFmUVZGQUdvREVnRHlBLzhBQUFmMEFBQUQvd0FBQi9RQUFBS3VBQUFDQkFBQUFWd0FBQVJtQUFBQ0tRQUFBWjhBQUFEVkFBQUFDZ0FBQWkwQUdRSXRBQmtGSWdDbkJoa0FtUU9VLzE4Qmx3Q3VBWmNBaVFHVi81Z0Jsd0RVQXNnQXRnTFBBSlVDdHYrVUJGRUFkd1IyLy9ZQ3B3Q2dBN0VBT1FVN0FEa0ErUUFhQjNrQWx3SmVBRjhDWGdBQ0E1SC83d0xpQUdFRFVBQitCSXovOHdZdUFBb0dhQUE1Q0Q4QU9nYzBBQ0lHQmdBZkJHWUFVUVczQUVNRURBQkpCRndBQ2dVcC8vSUZNUC9sQmNRQXpBTzdBRXNJQlFBMUJPVUE2Z1Q2QUlJR0FRQzFCcXdBa2dhbEFJOEdRd0MrQkhZQVRRVnRBQ1FFbGYrc0JIa0Fxd1NxQUVFSUJRQk5BZ2IvR2dScEFERUVUQUJ3QS96LzFBUVpBQmtEOHdCQkFrUUFlQUtGQUhBQi92L2pCTmNBZEFSV0FGZ0VjZ0IwQnFvQWRBYXFBSFFFMGdCMEJuSUFLUUFLQUFBSC92K3JDRFVBWEFRS0FHSUVoUUJCQWZmL0R3R1AvNzBEa2dFVEE0d0JFZ09OQVJFRDRBRE5BL2tBemdQZkFDSUQyd0RTQTVJQkVRSDRBUHdFYlArbEJEa0FIUVJrQUVjRVp3QWRBOUlBSFFPNEFCMEVrZ0JNQk1jQUhRSGpBQ29EdlAvMkJEMEFIUU9pQUIwRjNnQWRCTWNBSFFTaEFFb0VSUUFkQktFQVJRUXpBQjBFQ2dBUkJCQUFiUVJrQUVVRVR3QjZCZkFBbFFROS83WUVGUUIwQkEzLzNBTGlBQjBDNGdCckF1TC82UUxpLy9zQzR2L3dBdUlBRmdMaUFCNEM0Z0F2QXVJQUN3TGlBRFlEaEFDVEFxb0JDd1FrLzVvRXFBQkxCUzBBUXdVSEFFUUQvZ0FsQlI4QVJBUDZBQ1VFQ2dBU0JCMEFCZ1FsQURRRG5RQWRCRS8vc0FTaEFFb0VULyt3QTNqLzB3U3pBQjBEMi8vVkJVZ0FVUVQ2QUg0RTFnQU1CVklBYkFSa0FFY0hFLy9FQnlFQUhRVlVBRzBFc2dBZEJFSUFId1VILzRrRjUvK3ZCQ2dBRVFUUUFCOEVOd0FlQktiL3hBUUpBRmdGQ2dBZEJGSUFXZ1lxQUIwR2d3QWRCUUFBVUFYTkFCOEVOd0FmQkdNQUlBWk9BQjBFYnYvZkEvei8rZ1loLzY4RVlRQWVCT3dBSGdVWkFHa0ZvQUJRQkVjQWRBU08vN1lHT2dCc0JGSUFXZ1JTQUIwRm9RQXZCSzhBUVFRb0FCRUVvUUJLQkIzLy93UFBBQjRIN2dBZEJKSC8zUVJsQUI4RUhBQkRCSG9BUndSekFDUURhQUNwQkhULzF3U0RBRVlFSmdCRkJHVUFOUVZoQUlFRmpBQ0VCWElBUkFXOUFJVUZ3QUNGQThJQXV3UnBBRGtEblFBZEJFSC9nUVMwLzlNQzRnQ1FBdUlBWVFMaUFJa0M0Z0NSQXVJQW9nTGlBSDRDNGdDcEJGUC8xUVFZQUNzR2V3QkpCSjhBUHdUa0FHUUNBUDhKQWYvL0NRSDJBQzRCOXY5NkFmWUFMZ0gyLy9FRU9RQWRBZllBQUFJdUFCa0ZQd0F2QlQ4QUx3UnVBRDBFcXdDb0FwUC85QVVhLzY4Rkd2K3ZCUnIvcndVYS82OEZHdit2QlJyL3J3VWEvNjhGRndCMEJITUFPd1J6QURzRWN3QTdCSE1BT3dJbUFFa0NKZ0JKQWlZQVNRSW1BRWtGa2dBN0JXQUFkd1ZnQUhjRllBQjNCV0FBZHdWZ0FIY0ZFZ0JuQlJJQVp3VVNBR2NGRWdCbkJMTUFxQVJEQURNRVF3QXpCRU1BTXdSREFETUVRd0F6QkVNQU13UkRBRE1FR2dCR0JDWUFSUVFtQUVVRUpnQkZCQ1lBUlFIMUFDNEI5UUF1QWZVQUxnSDFBQzRFVWdBZkJIY0FSUVIzQUVVRWR3QkZCSGNBUlFSM0FFVUVVUUJiQkZFQVd3UlJBRnNFVVFCYkE3Yi9wUU8yLzZVRkd2K3ZCRU1BTXdVYS82OEVRd0F6QlJyL3J3UkRBRE1GRndCMEJCb0FSZ1VYQUhRRUdnQkdCUmNBZEFRYUFFWUZGd0IwQkJvQVJnVWhBRHNGQUFCTEJITUFPd1FtQUVVRWN3QTdCQ1lBUlFSekFEc0VKZ0JGQkhNQU93UW1BRVVFY3dBN0JDWUFSUVZUQUhrRVpRQUVCVk1BZVFSbEFBUUZVd0I1QkdVQUJBVlRBSGtFWlFBRUJaSUFPd1JRQUI4Q0pnQkpBZlVBRVFJbUFFa0I5UUFhQWlZQVNRSDFBQzRDSnYrT0Flei9jQUltQUVrR2VBQkpBOUFBTHdSU0FBb0IvdjhKQk9jQU93UDVBQ0FFTndBN0Fld0FMd1EzQURzQjdQK2pCRGNBT3dLQ0FDOEVOd0E3QXNnQUx3V1NBRHNFVWdBZkJaSUFPd1JTQUI4RmtnQTdCRklBSHdSU0FCOEZZQUIzQkhjQVJRVmdBSGNFZHdCRkJXQUFkd1IzQUVVRTBRQTZBcW9BSHdUUkFEb0NxditmQk5FQU9nS3FBQjhFcFFBbkJBb0FMZ1NsQUNjRUNnQXVCS1VBSndRS0FDNEVwUUFuQkFvQUxnU2xBQ2NFQ2dBdUJLc0FxQUtUQUVNRXF3Q29BcE1BUXdTckFLZ0N1d0JEQlJJQVp3UlJBRnNGRWdCbkJGRUFXd1VTQUdjRVVRQmJCUklBWndSUkFGc0ZFZ0JuQkZFQVd3VVNBR2NFVVFCYkJ1d0F3d1hmQUlBRXN3Q29BN2IvcFFTekFLZ0VyLy9yQStQLzdRU3YvK3NENC8vdEJLLy82d1BqLyswSFMvK0VCcGNBRXdWZ0FDQUVid0E1QkdmL3NBUm4vN0FFRUFCdEJHei9wUVJzLzZVRWJQK2xCR3ovcFFScy82VUViUCtsQkd6L3BRUmtBRWNEMGdBZEE5SUFIUVBTQUIwRDBnQWRBZU1BS2dIakFDb0I0d0FxQWVNQUtnVEhBQjBFb1FCS0JLRUFTZ1NoQUVvRW9RQktCS0VBU2dSa0FFVUVaQUJGQkdRQVJRUmtBRVVFRlFCMEJHei9wUVJzLzZVRWJQK2xCR1FBUndSa0FFY0VaQUJIQkdRQVJ3Um5BQjBEMGdBZEE5SUFIUVBTQUIwRDBnQWRBOUlBSFFTU0FFd0VrZ0JNQkpJQVRBU1NBRXdFeHdBZEFlTUFEd0hqQUJnQjR3QXFBZVAvZWdIakFDb0R2UC8yQkQwQUhRT2lBQjBEb2dBZEE2SUFIUU9pQUIwRXh3QWRCTWNBSFFUSEFCMEVvUUJLQktFQVNnU2hBRW9FTXdBZEJETUFIUVF6QUIwRUNnQVJCQW9BRVFRS0FCRUVDZ0FSQkJBQWJRUVFBRzBFRUFCdEJHUUFSUVJrQUVVRVpBQkZCR1FBUlFSa0FFVUVaQUJGQmZBQWxRUVZBSFFFRlFCMEJBMy8zQVFOLzl3RURmL2NCUnIvcndUWEFHTUY5Z0J4QW9vQWR3VjBBR29GRi8vdUJVY0FIZ0tOQUNBRkd2K3ZCTjhBT3dSekFEc0VyLy9yQlpJQU93SW1BRWtFNXdBN0J0QUFPd1dTQURzRllBQjNCTzhBT3dTckFLZ0Vzd0NvQk9mLzFBSW1BRWtFc3dDb0JHd0FTQVE1QUNrRWJ3QWtBbzBBaFFSRkFHY0VXd0F0QkhjQVJRUnYvK1VEekFCdUErUC94QUtOQUdjRVJRQm5CSGNBUlFSRkFHY0diZ0JtQkhNQU93UmJBRU1FcFFBbkFpWUFTUUltQUVrRVVnQUtCUWNBUkFUbkFEc0U2Z0NUQlJyL3J3VGZBRHNFV3dCREJITUFPd1dTQUVNRzBBQTdCWklBT3dWZ0FIY0Zrd0JFQk84QU93VVhBSFFFcXdDb0JPZi8xQVJEQURNRUpnQkZCSVVBTHdSM0FFVUVaZi9YQkJvQVJnTzIvNlVENC8vRUJDWUFSUU5MQUMwRUNnQXVBZXdBTHdIMUFDNEI1UDhVQkRzQUx3TzIvNlVHN0FEREJkOEFnQWJzQU1NRjN3Q0FCdXdBd3dYZkFJQUVzd0NvQTdiL3BRRmtBS29DaFFESUJCSUFRd0grL3drQmx3Q0pCdEFBT3diWEFCNEZHdit2QkVNQU13UnpBRHNGa2dCREJDWUFSUVNGQUM4RmFBQ0dCWGtBVHdUdEFLMEQ3Z0NFQ0MwQVJRa1dBSGNFcFFBbEEvc0FJUVVYQUhRRUdnQkdCTE1BcUFQdEFJUUNKZ0JKQnhYL3JBWDcvNlVDSmdCSkJSci9yd1JEQURNRkd2K3ZCRU1BTXdkTC80UUdsd0FUQkhNQU93UW1BRVVGWndCUkJDRUFQZ1FoQUQ0SEZmK3NCZnYvcFFTbEFDVUQrd0FoQlpJQVF3U0ZBQzhGa2dCREJJVUFMd1ZnQUhjRWR3QkZCVkVBYVFSeUFFSUZVUUJwQkhJQVFnVkZBSFFFTmdBMEJPb0Frd08yLzZVRTZnQ1RBN2IvcFFUcUFKTUR0ditsQlZvQXpnUkNBSHNHd0FCRkJoQUFNQVRuLzlRRDQvL0VCR29BU3dXSS84b0Vodi9JQlJyL3J3UkRBRE1GR3YrdkJFTUFNd1VhLzY4RVF3QXpCUnIvcndSREFETUZHdit2QkVNQU13VWEvNjhFUXdBekJSci9yd1JEQURNRkd2K3ZCRU1BTXdVYS82OEVRd0F6QlJyL3J3UkRBRE1GR3YrdkJFTUFNd1VhLzY4RVF3QXpCSE1BT3dRbUFFVUVjd0E3QkNZQVJRUnpBRHNFSmdCRkJITUFPd1FtQUVVRWN3QTdCQ1lBUlFSekFEc0VKZ0JGQkhNQU93UW1BRVVFY3dBN0JDWUFSUUltQUVrQjlRQXVBaVlBRGdIcy8vRUZZQUIzQkhjQVJRVmdBSGNFZHdCRkJXQUFkd1IzQUVVRllBQjNCSGNBUlFWZ0FIY0Vkd0JGQldBQWR3UjNBRVVGWUFCM0JIY0FSUVZlQUdjRWVRQkNCVjRBWndSNUFFSUZYZ0JuQkhrQVFnVmVBR2NFZVFCQ0JWNEFad1I1QUVJRkVnQm5CRkVBV3dVU0FHY0VVUUJiQlc4QVp3VFhBRm9GYndCbkJOY0FXZ1Z2QUdjRTF3QmFCVzhBWndUWEFGb0Zid0JuQk5jQVdnU3pBS2dEdHYrbEJMTUFxQU8yLzZVRXN3Q29BN2IvcFFTSUFFc0VpQUFBQlFjQVJBUTdBQzhGa2dBN0JJUUFMd1NyQUtnRHhBQmdCT2YvMUFQai84UUZXZ0RPQkVJQWV3VmFBTTRFUWdCN0JGc0FRd05MQUMwSEZmK3NCZnYvcFFZS0FJb0Vvd0FIQkZBQUh3VG9BQ3NFNkFBckJGc0FFQU5MLytZRkd3QllCQklBT1FXU0FFTUVoUUF2QlpJQU93U0VBQzhHMEFBN0Jjc0FNQVdJLzhvRWh2L0lCTE1BcUFQdEFGMEU1Ly9VQStQL3hBUTVBQ2tFVlAvWEJoa0FtUVJtQUJjRVpnQTBCR1lBQlFSbUFISUVlZ0NVQkk0QWZBVlRBSGtFWlFBRUJaSUFPd1JTQUI4Rkd2K3ZCRU1BTXdSekFEc0VKZ0JGQWliLzN3SDEvNDBGWUFCM0JIY0FSUVRSQURvQ3FnQWZCUklBWndSUkFGc0VqLyt5Qk44QU93UmxBQjhGSVFBN0JHb0FTd1VoQURzRWFnQkxCWklBT3dSUUFCOEU1d0E3QS9rQUlBVG5BRHNEK1FBZ0JEY0FPd0hzLy9JRzBBQTdCdGNBSGdXU0FEc0VVZ0FmQk84QU93UmwvOWNFMFFBNkFxci83Z1NsQUNjRUNnQXVCS3NBcUFLVEFFTUUrZ0NrQTh3QWJnVDZBS1FEekFCdUJ1d0F3d1hmQUlBRXIvL3JBK1AvN1FXbS93d0ViUCtsQkE3LzRRVUQvLzBDSHdBQkJLc0FIUVJSLzVzRTRBQVdCR3ovcFFRNUFCMEQwZ0FkQkEzLzNBVEhBQjBCNHdBcUJEMEFIUVhlQUIwRW9RQktCRVVBSFFRUUFHMEVGUUIwQkQzL3RnSGpBQ29FRlFCMEE5SUFIUU9kQUIwRUNnQVJBZU1BS2dIakFDb0R2UC8yQkQwQUhRUUpBRmdFYlArbEJEa0FIUU9kQUIwRDBnQWRCTkFBSHdYZUFCMEV4d0FkQktFQVNnU3pBQjBFUlFBZEJHUUFSd1FRQUcwRVBmKzJCQ2dBRVFUSEFCMEVaQUJJQkJVQWRBV2hBQzhFMEFBZkJBa0FXQVZJQUZFRkd2K3ZCRU1BTXdSekFEc0VKZ0JGQUFBQUFRQUFCT1FKQ2dRQUFBSUNBZ01GQlFZRkFnTURCQVVDQWdJRUJRVUZCUVVGQlFVRkJRSUNCQVVGQkFnR0JRWUdCUVVHQmdJRkJnVUlCZ1lHQmdVRkJRWUdDQVlGQlFJRUFnUUVBd1VGQlFVRkF3VUZBZ0lFQWdnRkJRVUZBd1VEQlFRSEJBUUVBd0lEQmdJRkJRWUZBZ1VFQndRRUJRY0VBd1VEQXdNRkJBSUNBd1FFQmdjSEJBZ0ZCZ1VGQndVRkJRVUdBZ1VGQWdZRkNBZ0NCZ01HQlFZRkFnVUVCQVFFQWdNQ0JBTURBQUFBQUFBQ0FnUUNCUVlHQmdVR0JRWUdCZ1VGQkFVRkJRVUZBd1VFQlFVRkJRVUZCZ1lIQlFVSEJ3WUpDUWNHQmdjSUJRWUdCZ2NHQmdnSkJ3Z0dCZ2dHQlFVRUJRY0VCUVVGQndVRkJBWUZCUWNIQlFjRkJRY0ZCUVVIQ0FVRkNBY0ZDQWNGQlFnSEJ3WUtDUVVFQmdVR0JBWUZDQWNJQndZRkJRQUFBQUFBQUFVR0JRVUVCUVFHQlFjR0NRWUpDQWNGQ0FZR0JRWUhCUVlGQmdVR0JRVUZCQVVIQ0FjR0JRUUpCd2tIQlFVR0JnWURCUWtGQ1FNQ0FnVUNBZ0VBQWdJR0J3UUNBZ0lDQXdNREJRVURCQVlCQ0FNREJBTUVCUWNIQ1FnSEJRWUZCUVlHQmdRSkJnWUhDQWNIQlFZRkJRVUpBZ1VGQkFVRUF3TUNCUVVGQ0FnRkJ3QUpDUVVGQWdJRUJBUUVCQVFFQkFJRkJRVUZCQVFGQlFJRUJRUUhCUVVGQlFVRkJRVUZCd1VGQlFNREF3TURBd01EQXdNRUF3VUZCZ1lFQmdRRkJRVUVCUVVGQkFVRUJnWUZCZ1VJQ0FZRkJRWUhCUVVGQlFVR0JRY0hCZ2NGQlFjRkJBY0ZCZ1lHQlFVSEJRVUdCUVVGQlFRSkJRVUZCUVVFQlFVRkJRWUdCZ1lHQkFVRUJRVURBd01EQXdNREJRVUhCUVlDQWdJQ0FnSUZBZ0lHQmdVRkF3WUdCZ1lHQmdZR0JRVUZCUUlDQWdJR0JnWUdCZ1lHQmdZR0JRVUZCUVVGQlFVRkJRVUZCUUlDQWdJRkJRVUZCUVVGQlFVRkJBUUdCUVlGQmdVR0JRWUZCZ1VHQlFZR0JRVUZCUVVGQlFVRkJRWUZCZ1VHQlFZRkJnVUNBZ0lDQWdJQ0FnSUhCQVVDQmdRRkFnVUNCUU1GQXdZRkJnVUdCUVVHQlFZRkJnVUZBd1VEQlFNRkJRVUZCUVVGQlFVRkJRTUZBd1VEQmdVR0JRWUZCZ1VHQlFZRkNBY0ZCQVVGQkFVRUJRUUlCd1lGQlFVRkJRVUZCUVVGQlFVRUJBUUVBZ0lDQWdVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRUJBUUVCQVVGQlFVRkFnSUNBZ0lFQlFRRUJBUUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQndVRkJRVUZCZ1VIQXdZR0JnTUdCUVVGQmdJR0NBWUdCZ1VGQmdJRkJRVUZBd1VGQlFVRUJBTUZCUVVIQlFVRkFnSUZCZ1lHQmdVRkJRWUlCZ1lHQmdZRkJnVUZCUVVGQlFRRUJRUUZBZ0lDQlFRSUJ3Z0hDQWNGQkFJREJRSUNDQWdHQlFVR0JRVUdCZ1lFQ1FvRkJBWUZCUVFDQ0FjQ0JnVUdCUWdIQlFVR0JRVUlCd1VFQmdVR0JRWUZCZ1VHQlFZRkJnUUdCQVlFQmdVSUJ3WUVCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnVUdCUVlGQmdVR0JRWUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRSUNBZ0lHQlFZRkJnVUdCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnVUdCUVlGQmdVR0JRWUZCZ1VHQlFVRUJRUUZCQVVGQmdVR0JRVUVCZ1FHQlFZRkJRUUlCd2NGQlFZR0JRUUdCUVlGQmdVSUJ3WUZCUVFHQkFVRkJ3VUZCUVVGQlFZRkJnVUdCUVVGQWdJR0JRVURCZ1VGQlFVR0JRWUZCZ1VHQkFZRUJRSUlDQVlGQmdVRkF3VUZCUU1HQkFZRUNBY0ZCQVlGQlFZQ0JRVUZCUVVFQlFVQ0JRY0ZCUVVGQlFJRkJBUUZBZ0lFQlFVRkJRUUVCUWNGQlFVRkJRVUZCUVVGQlFZRkJRWUdCUVVGQUFBQUFnQUFBQU1BQUFBVUFBTUFBUUFBQUJRQUJBWnNBQUFBNmdDQUFBWUFhZ0FBQUFJQURRQitBS0FBckFDdEFMOEF4Z0RQQU9ZQTd3RCtBUThCRVFFbEFTY0JNQUZUQVY4Qlp3RitBWDhCandHU0FhRUJzQUh3QWY4Q0d3STNBbGtDdkFMSEFza0MzUUx6QXdFREF3TUpBdzhESXdPS0E0d0RrZ09oQTdBRHVRUEpBODREMGdQV0JDVUVMd1JGQkU4RVlnUnZCSGtFaGdUT0JOY0U0UVQxQlFFRkVBVVRIZ0VlUHg2Rkh2RWU4eDc1SDAwZ0N5QVJJQlVnSGlBaUlDY2dNQ0F6SURvZ1BDQkVJSFFnZnlDa0lLb2dyQ0N4SUxvZ3ZTRUZJUk1oRmlFaUlTWWhMaUZlSWdJaUJpSVBJaElpR2lJZUlpc2lTQ0pnSW1VbHl1NEM5c1A3QlA3Ly8vMy8vd0FBQUFBQUFnQU5BQ0FBb0FDaEFLMEFyZ0RBQU1jQTBBRG5BUEFBL3dFUUFSSUJKZ0VvQVRFQlZBRmdBV2dCZndHUEFaSUJvQUd2QWZBQitnSVlBamNDV1FLOEFzWUN5UUxZQXZNREFBTURBd2tERHdNakE0UURqQU9PQTVNRG93T3hBN29EeWdQUkE5WUVBQVFtQkRBRVJnUlFCR01FY0FSNkJJZ0V6d1RZQk9JRTlnVUNCUkVlQUI0K0hvQWVvQjd5SHZRZlRTQUFJQkFnRXlBWElDQWdKU0F3SURJZ09TQThJRVFnZENCL0lLTWdwaUNySUxFZ3VTQzhJUVVoRXlFV0lTSWhKaUV1SVZzaUFpSUdJZzhpRVNJYUloNGlLeUpJSW1BaVpDWEs3Z0gydy9zQi92Ly8vUC8vQUFFQUFQLzIvK1FCcGYvQ0Fabi93UUFBQVl3QUFBR0hBQUFCZ3dBQUFZRUFBQUYvQUFBQmR3QUFBWG4vRmY4Ry93VCs5LzdxQWJzQUFBQUEvbVQrUXdEdy9kZjkxdjNJL2JQOXAvMm0vYUg5blAySkFBRC95Ly9LQUFBQUFQMEpBQUQvcS96OS9Qb0FBUHk1QUFEOHNRQUEvS1lBQVB5Z0FBRCs5UUFBL3ZJQUFQeEpBQURscitWdjVTRGxUK1MwNVUzbFhlRmI0VmNBQU9GVTRWUGhVZUZKNDNiaFFlTnU0VGpoQ2VEL0FBRGcyZ0FBNE5YZ3p1RE40SWJnZWVCMzRHemZrK0JoNERYZmt0NnIzNGJmaGQ5KzMzdmZiOTlUM3p6Zk9kdlZFNThLM3dhakFxc0Jyd0FCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURhQUFBQTVBQUFBUTRBQUFFb0FBQUJLQUFBQVNnQUFBRnFBQUFBQUFBQUFBQUFBQUFBQUFBQmFnRjBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFXSUFBQUFBQVdvQmhnQUFBWjRBQUFBQUFBQUJ0Z0FBQWY0QUFBSW1BQUFDU0FBQUFsZ0FBQUxpQUFBQzhnQUFBd1lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDK0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF1Z0FBQUxvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWt3Q1RRSk9BazhDVUFKUkFJRUNTQUpjQWwwQ1hnSmZBbUFDWVFDQ0FJTUNZZ0pqQW1RQ1pRSm1BSVFBaFFKbkFtZ0NhUUpxQW1zQ2JBQ0dBSWNDZHdKNEFua0NlZ0o3QW53QWlBQ0pBbjBDZmdKL0FvQUNnUUNLQWtjRVJ3Q0xBa2tBakFLd0FyRUNzZ0t6QXJRQ3RRQ05BcllDdHdLNEFya0N1Z0s3QXJ3Q3ZRQ09BSThDdmdLL0FzQUN3UUxDQXNNQ3hBQ1FBSkVDeFFMR0FzY0N5QUxKQXNvQWtnQ1RBdGtDMmdMZEF0NEMzd0xnQWtvQ1N3SlNBbTBDK0FMNUF2b0Mrd0xYQXRnQzJ3TGNBSzBBcmdOVEFLOERWQU5WQTFZQXNBQ3hBMTBEWGdOZkFMSURZQU5oQUxNRFlnTmpBTFFEWkFDMUEyVUF0Z05tQTJjQXR3Tm9BTGdBdVFOcEEyb0Rhd05zQTIwRGJnTnZBM0FBd3dOeUEzTUF4QU54QU1VQXhnREhBTWdBeVFES0FNc0RkQURNQU0wRHNRTjZBTkVEZXdEU0Ezd0RmUU4rQTM4QTB3RFVBTlVEZ1FPeUE0SUExZ09EQU5jRGhBT0ZBTmdEaGdEWkFOb0Eyd09IQTRBQTNBT0lBNGtEaWdPTEE0d0RqUU9PQU4wQTNnT1BBNUFBNlFEcUFPc0E3QU9SQU8wQTdnRHZBNUlBOEFEeEFQSUE4d09UQVBRRGxBT1ZBUFVEbGdEMkE1Y0Rzd09ZQVFFRG1RRUNBNW9EbXdPY0E1MEJBd0VFQVFVRG5nTzBBNThCQmdFSEFRZ0VYUU8xQTdZQkZnRVhBUmdCR1FPM0E3Z0R1Z081QVNjQktBUmlCR01FWEFFcEFTb0JLd0VzQVMwRVhnUmZBUzRCTHdSWEJGZ0R1d084QkVrRVNnRXdBVEVFWUFSaEFUSUJNd1JMQkV3Qk5BRTFBVFlCTndFNEFUa0R2UU8rQkUwRVRnTy9BOEFFYWdSckJFOEVVQUU2QVRzRVVRUlNBVHdCUFFFK0JGc0JQd0ZBQkZrRVdnUEJBOElEd3dGQkFVSUVhQVJwQVVNQlJBUmtCR1VFVXdSVUJHWUVad0ZGQTg0RHpRUFBBOUFEMFFQU0E5TUJSZ0ZIQkZVRVZnUG9BK2tCU0FGSkErb0Q2d1JzQkcwQlNnUHNCRzREN1FQdUFXa0JhZ1J3Qkc4QmZ3UklBWVd3QUN4THNBbFFXTEVCQVk1WnVBSC9oYkNFSGJFSkExOWVMYkFCTENBZ1JXbEVzQUZnTGJBQ0xMQUJLaUV0c0FNc0lFYXdBeVZHVWxnaldTQ0tJSXBKWklvZ1JpQm9ZV1N3QkNWR0lHaGhaRkpZSTJXS1dTOGdzQUJUV0drZ3NBQlVXQ0d3UUZrYmFTQ3dBRlJZSWJCQVpWbFpPaTJ3QkN3Z1JyQUVKVVpTV0NPS1dTQkdJR3BoWkxBRUpVWWdhbUZrVWxnamlsa3YvUzJ3QlN4TElMQURKbEJZVVZpd2dFUWJzRUJFV1JzaElTQkZzTUJRV0xEQVJCc2hXVmt0c0FZc0lDQkZhVVN3QVdBZ0lFVjlhUmhFc0FGZ0xiQUhMTEFHS2kyd0NDeExJTEFESmxOWXNFQWJzQUJaaW9vZ3NBTW1VMWdqSWJDQWlvb2JpaU5aSUxBREpsTllJeUd3d0lxS0c0b2pXU0N3QXlaVFdDTWh1QUVBaW9vYmlpTlpJTEFESmxOWUl5RzRBVUNLaWh1S0kxa2dzQU1tVTFpd0F5VkZ1QUdBVUZnakliZ0JnQ01oRzdBREpVVWpJU01oV1JzaFdVUXRzQWtzUzFOWVJVUWJJU0ZaTGJBS0xMQWtSUzJ3Q3l5d0pVVXRzQXdzc1NjQmlDQ0tVMWk1UUFBRUFHTzRDQUNJVkZpNUFDUUQ2SEJaRzdBalUxaXdJSWk0RUFCVVdMa0FKQVBvY0ZsWldTMndEU3l3UUlpNElBQmFXTEVsQUVRYnVRQWxBK2hFV1Myd0RDdXdBQ3NBc2dFT0Fpc0JzZzhCQWlzQnR3ODZNQ1ViRUFBSUt3QzNBVWc3TGlFVUFBZ3J0d0pZU0Rnb0ZBQUlLN2NEVWtNMEpSWUFDQ3UzQkY1TlBDc1pBQWdydHdVMkxDSVpEd0FJSzdjR2NWMUdNaHNBQ0N1M0I1RjNYRG9qQUFncnR3aCtaMUE1R2dBSUs3Y0pWRVUySmhjQUNDdTNDblpnU3pZZEFBZ3J0d3VEWkU0Nkl3QUlLN2NNMmJLS1l6d0FDQ3UzRFJRUkRRa0dBQWdydHc0OE1pY2NFUUFJS3dDeUVBb0hLN0FBSUVWOWFSaEVzakFTQVhPeXNCUUJjN0pRRkFGMHNvQVVBWFN5Y0JRQmRiSVBIQUZ6c204Y0FYVUFBQ29BblFDQUFJb0FlQURVQUdRQVRnQmFBSWNBWUFCV0FEUUNQQUM4QU1RQUFBQVUvbUFBRkFLYkFDQURJUUFMQkRvQUZBU05BQkFGc0FBVUJoZ0FGUUdtQUJFR3dBQU9BQUFBQUFBQUFHRUFZUUJoQUdFQVlRQ2dBTVlCUlFIRUFuSURFd01yQTFzRGpBTy9BK2NFQmdRZEJFSUVXUVM4Qk9zRlJRWExCaEVHZkFiekJ5QUhyQWdsQ0RvSVR3aHZDSmNJdUFrbkNlTUtJZ3FSQ3ZNTFFndUZDNzBNS0F4c0RJY012ZzBWRFRvTmlnM0lEaTBPZkE3bkQwY1B2QS9vRUMwUVhSQ3hFUVlSTnhGd0VaWVJyUkhVRWZzU0ZoSTFFcnNUSmhPREUrd1VXeFMwRlQ0VmlCVzhGZ2tXWWhaOUZ2UVhReGVpR0E0WWVSaTNHU29aZ3huUEdmNGFUUnFWR3RjYkVCdGRHM1Fidnh3RkhEWWNtaDBJSFhjZDJoMzdIcUFlMngrSEgvc2dCeUFsSU5zZzhpRTBJWGtoelNKQkltRWl0U0xoSXdJak9pTnRJN29qeGlQZ0kvb2tGQ1IzSk53bEdpV2pKZjBtY2lkREo3UW9BaWlIS08wcFVDbHJLYndxQ1NwSktwNHEvU3VKTEVJc2N5emZMVWt0dkM0bUxuc3UxeThITDI4dm5TL0RMOHN2K0RBYU1GVXdpREROTVFBeFF6RmdNWDR4aHpHMk1lY3lDVElsTW5JeWVqS2hNczR6UnpOME03Z3o2RFFtTktNMUF6VjBOZlkyY2phbU55azNxamYrT0UwNHhqajVPVkE1eFRvZU9vQTY0anRITzQ0NzJUeE1QS2c5SUQycVBnRStnejdrUDFzLzAwQktRS05BNGtFOVFaWkNCa0tBUXNkREVVTlNROVZFRFVSWFJKZEU0MFUvUmFaRjlVWmtSdWxIU1VlN1NDQklSMGljU1JCSmlFbkRTaHhLWjBxeFN4QkxRRXR0VEJGTVNVeVJUTkZOR1UxMFRkRk9JRTZQVHhOUGMwL3dVRmxRMVZGSVViVlI5RkpoVXNSVE1sUEJWR0pVcmxUOVZXbFYyVlpWVnIxWFZsZmlXSUJaSkZtZFdmOWFQMXFEV3ZSYllGd3RYTzFkYzEzc1hrSmVrbDdGWHVKZkhWODBYMHRnSW1DV1lRUmhZV0hkWWc1aU9tS1ZZdTVqU0dPdVpBUmtaV1N5WlI1bGdXWGJabjVuRldkb1o2NW9CMmhaYUoxcEhHbVVhZTlxVEdxb2F3OXJnMnZvYkVwc1dXeHRiTDV0S0czRGJrQnVzVzhmYjRodi9YQndjT2h4Wm5IRWNocHlibkxIYzBaemQzTjNjM2R6ZDNOM2MzZHpkM04zYzNkemQzTjNjM2R6ZDNOL2M0ZHprWE9iYzdKejBYUHZkQTUwTG5RNmRFWjBkM1M0ZFIxMVFuVk9kVjUxY25aR2RtSjJmM2FTZHFaMjczZDZlQng0cVhpMWVYaDUwM3BaZXdSN1pudnBmRWQ4dUgxZGZjbCtXMzY4ZnlSL1BuOVlmM0ovakgvL2dDZUFZWUI5Z0xLQk80R0JnZmlDT1lKSGdsV0Nqb0tiZ3NLQzI0TG5nMHFEbzRRM2hNS0ZRNFlYaGhlSGxJZnhpQ0tJZ0lpdmlNV0pLSWw2aWJxS0xJcUZpc1dMQ0l0SWkyS0xxSXdlakhxTXg0MFRqVStOdG80RWppS09XSTZjanNTUEZvOVVqN09RQTVCaGtMV1JJNUZQa1l1UnZwSVNrbGVTaTVMSWt4dVRScE9WbEFhVVNKU29sUWlWTlpXK2xpQ1dONWFCbHo2WHVaZ3RtSHlZd3BrRW1VeVp6Sm80bXErYTJwc1FtNGlidVp3SG5EcWNlcHp1blZDZHU1NGVub3lmQTU5N245S2dEYUJwb01HaE42RzhvZnFpUzZLVW90aWpFNk5ibzV1ajVhUkFwRXlrbmFVUnBaeWwrYVpJcHRDbk02ZVlwL2lvb3FpdXFRR3BUYW1pcWV1cVphclNxemVycTZ4SHJNNnRiNjNpcmsrdXFLOFRyNXl2cExBUXNINnc2YkZ5c2RXeVFMS1NzdlN6V3JPRnM5cTBCTFJkdEtHMHRiVEp0TnUwNzdVQnRSaTFMTFdPdGJhMlJMYTB0dzIzRmJjZHR5VzNNTGM0dDBTM3NMZXd0N2k0S0xpWXVQcTVRTG1vdWIrNTFybnR1Z1M2SExvdnVqdTZSN3BldW5DNmg3cWF1ckc2dzdyYXV1MjdCTHNidXkyN1JMdGJ1MjY3aGJ1WHU2Njd3YnZUdStxNy9Md1N2Q084TnJ4SnZGVzhZYng0dklxOG9MeXp2TW04MnJ6eHZRbTlHcjB4dlVPOVdiMXF2WDI5bEwybXZieTl6NzNodmZPK0NyNGd2amUrU2I2MnYyUy9kcitJdjVxL3E3Kzl2OCsvNGIveXdBVEFFTUFpd0RQQVJjQlh3R25BZThEdndYM0JqOEdnd2JMQnc4SFZ3ZWZCK2NJTHdoZkNLY0k3d2svQ1ljSnp3b1hDbDhLcHdydkN4c0xSd3VQQzc4TDd3dzNESDhNcnd6ZkRTY05idzJmRGM4T0l3NVREb01Pc3c3N0QwTVBjdytqRCtzUUx4QmZFS2NRNnhFekVYc1J4eElURWxzU294TFRFd01UU3hPUEU5Y1VIeFJuRktzVTJ4VUxGVHNWYXhXekZmY1dKeFpYRm9jV3R4Yi9GeThYZHhlN0dBTVlSeGlQR05jWkl4bHZHYnNhQnh1TEhVY2RqeDNYSGg4ZVl4NnZIdmNmUHgrSEg4OGdGeUJiSUxjaEV5RnZJY3NpVnlMakl5TWpmeVBISkI4a1l5U3ZKUHNsS3lWYkpiY2wveVpESm9zbTR5Y25KMjhudXlnREtGOG9weWp2S1RjcGd5bmZLaWNxYXlxM0t2OHJReXVMTFNjdGJ5MnpMZnN1UXk2SExzc3ZEeTlYTVQ4eGd6SEhNZzh5VnpLSE1zOHpGek5mTTZjejB6UVhORjgwanpUVE5RTTFWeldITmM4MS96WkhObzgyMXpjak4yczNtemZmT0NjNGF6aWJPTjg1RHpsVE9ZTTV4em9MT2xNNm56cnJQSmM4M3owalBXczlzejM3UGo4K2F6NmJQc3MrK3o4clAxcy9pei8zUUJkQU4wQlhRSGRBbDBDM1FOZEE5MEVYUVRkQlYwRjNRWmRCdDBJRFFrOUNsMExmUXlkRGEwTy9ROTlELzBRZlJEOUVYMFNuUk85Rk4wVi9SY2RHSjBhRFNGZElkMGpEU09OSkEwbGZTYnRKMjBuN1NodEtPMHFEU3FOS3cwcmpTd05MSTB0RFMyTkxnMHVqUzhOTUMwd3JURXROdjAzZlRmOU9TMDZuVHNkTzUwOHpUMU5QcjFBSFVHTlF2MUViVVhkUjExSTNVcE5TNzFNUFV5OVRYMU83VTl0VU4xU1RWTU5VODFWUFZhdFdCMVpqVm9OV28xY0RWMk5YazFmRFYvTllJMWhUV0lOWW8xakRXT05aUDFtYldidGFGMXB6V3ROYkgxcy9XMTlicDF2dlhEdGNXMXluWFBOZFAxMkxYZE5lRzE1ZlhxdGU5MTlEWDQ5ZnIxL1BZQnRnWjJDellQOWhSMkdMWWRkaUgySi9ZdDlqUDJPSFkvZGtaMlNYWk1kazUyVVhaVWRsZDJXblplOW1OMmFYWnZOblUyZXZhQTlvYTJqTGFTZHBrMm43YWtkcWsycmZheXRyZDJ2RGJBOXNXMnpIYlROdFkyMlRiZHR1STI1cmJxOXZEMjlyYjh0d0ozQ0hjT054UTNHZmNndHljM0s3Y3dOek0zTmpjNU56dzNRTGRGTjBzM1VQZFc5MXkzWXJkb2QyNTNkRGQ2OTRGM2h6ZU05NUszbUhlZU42UDNxYmV2TjdJM3RUZTRON3MzdjdmRU44bjN6N2ZWZDlzMzRQZm10K3gzOGZmMDkvZjMrdmY5K0FKNEJ2Z0xlQSs0TDdnenVEYTRPYmc4dUQrNFFyaEZ1RWk0UzdoT3VGRzRWTGhYdUZxNFhiaGd1R080WnJocHVHdTRoamloT0xLNHhEamIrUEs0K1hrQU9RTTVCamtKT1F3NUR6a1NPU1Q1T1BsTytXVjVaM2xxZVd6NWJ2bHcrWEw1ZFBsMitYajVmcm1FZVlvNWovbVYrWnY1b2ZtbithMzVzL201K2IvNXhmbkwrZEg1MS9uYStkMzU0UG5qK2ViNTZmbnMrZS81OHZuNHVmMDZBRG9ET2dZNkNUb01PZzg2RWpvVk9ocjZJTG9qdWlhNktib3N1aSs2TXJvNGVqMzZRUHBEK2tiNlNmcE0ray82VXZwVitsajZXL3BlK21INlpQcG4rbW42YS9wdCttLzZjZnB6K25YNmQvcDUrbnY2ZmZwLytvSDZoL3FOdXBONm1UcWJPcDA2b3pxbE9xcjZzSHF5ZXJSNnRucTRlcjQ2d0RyQ09zUTZ4anJJT3NvNnpEck9PdkQ3QjNzZ3V5SzdKYnNyZXpEN012czEremo3Ty9zK3dBQUFBVUFaQUFBQXlnRnNBQURBQVlBQ1FBTUFBOEFjYklNRUJFUkVqbXdEQkN3QU5Dd0RCQ3dCdEN3REJDd0NkQ3dEQkN3RGRBQXNBQkZXTEFDTHh1eEFodytXYkFBUlZpd0FDOGJzUUFRUGxteUJBSUFFUkk1c2dVQ0FCRVNPYklIQWdBUkVqbXlDQUlBRVJJNXNRb005TElNQWdBUkVqbXlEUUlBRVJJNXNBSVFzUTRNOURBeElTRVJJUU1SQVFFUkFRTWhBVFVCSVFNby9Ud0N4RGIrN3Y2NkFRemtBZ1ArL2dFQy9mMEZzUHFrQlFmOWZRSjMreEVDZVAxZUFsNklBbDRBQWdCRC8vSUI5QVd3QUFNQURnQS9zZ2tQRUJFU09iQUpFTEFBMEFDd0FFVllzQUl2RzdFQ0hENVpzQUJGV0xBTkx4dXhEUkErV2JJSEJRb3JXQ0hZRy9SWnNnRUhBaEVTT2JBQkx6QXhBU01UTXdFMk5qYzJGaFVVQmdZbUFUR2txYjcrVHdFNk1DNDhQRjQ3QVpzRUZmcXFMejBDQWp3dUx6c0VPZ0FBQWdESUJCRUNwZ1lJQUFRQUNRQVpBTEFETDdJQ0NnTVJFam13QWkrd0I5Q3dBeEN3Q05Bd01RRURCeE1YRndNakV4Y0JpVk51VUlqdlUyNVFpQVZ1L3FRQkFmY0prZjZrQWZZSkFBSUFVZ0FBQlBzRnNBQWJBQjhBandDd0FFVllzQXd2RzdFTUhENVpzQUJGV0xBUUx4dXhFQncrV2JBQVJWaXdBaThic1FJUVBsbXdBRVZZc0Jvdkc3RWFFRDVac2gwTUFoRVNPWHl3SFM4WXNnQURDaXRZSWRnYjlGbXdCTkN3SFJDd0J0Q3dIUkN3QzlDd0N5K3lDQU1LSzFnaDJCdjBXYkFMRUxBTzBMQUxFTEFTMExBSUVMQVUwTEFkRUxBVzBMQUFFTEFZMExBSUVMQWUwREF4QVNNREl4TWpOek1USXpjaEV6TURNeE16QXpNSEl3TXpCeU1ESXdNekV5TUN3L3FXa0pYbUdQK0ErQmdCRXBpUm1mdVlrcG5FR042QTJCanhsWkkwK29INkFacitaZ0dhaVFGaWl3R2cvbUFCb1A1Z2kvNmVpZjVtQWlNQllnQUFBUUJLL3pBRVBBYWNBQ3NBYmJJZkxDMFJFamtBc0FCRldMQUpMeHV4Q1J3K1diQUFSVml3SWk4YnNTSVFQbG15QWlJSkVSSTVzQWtRc0F6UXNBa1FzQkRRc0FrUXNoTUJDaXRZSWRnYjlGbXdBaEN5R1FFS0sxZ2gyQnYwV2JBaUVMQWYwTEFpRUxBbTBMQWlFTElwQVFvcldDSFlHL1JaTURFQk5pWW1KeVkzTmpZM056TUhGaFlISXpZbUp5WUdCd1lXQkJZV0J3WUdCd2NqTnlZbU56TUdGaGNXTmdNaENtcjlTNVFPQzlleEo1SW9sSkVQc3doblpIR1REQWxkQVJLT1FRY041YjBpa1NPa3FBdTFDM1YyZjZzQmZsYUFZVDE1eEtUWEY5dmVIZkhBazUwREFvTnZWbnh0ZDVwanE5SVV2OEVZNnJxRG5BSUNoUUFGQUx2LzVnVTRCY2dBRFFBYkFDa0FOd0E3QUlteUpUdzlFUkk1c0NVUXNBWFFzQ1VRc0JiUXNDVVFzQ3ZRc0NVUXNEalFBTEE0TDdBNkw3QUFSVml3QUM4YnNRQWNQbG13QUVWWXNDTXZHN0VqRUQ1WnNBQVFzQWZRc0FjdnNoRUVDaXRZSWRnYjlGbXdBQkN5R0FRS0sxZ2gyQnYwV2JBakVMQWMwTEFjTDdBakVMSXRCQW9yV0NIWUcvUlpzQndRc2pRRUNpdFlJZGdiOUZrd01RRVdGZ2NIQmdZbkppWTNOelkyQXdZV0Z4WTJOemMySmljbUJnY0JGaFlIQndZR0p5WW1OemMyTmdNR0ZoY1dOamMzTmlZbkpnWUhCU2NCRndJTmVZOElCZysxZlhtU0NBWU50ME1GUlVCRVpRc0pCMEpEUldZTEF0dDhqZ2dHRGJXQWVKTUlCZzJ5UGdWRFFrWmpDd2tIUWtOSFpBdjk4Mk1EY1dNRnhnU3BnVTJHcWdRQ3JINUFrSzMrZ1ZGZkFnSmxVVTVNWmdJQ1psSDkrZ1NyZmtPTnJ3UUNxb0ZFaTY3K2dWQmhBZ0ptVVU5TFpnSUNabEQxU0FSb1J3QURBRHIvNlFTSEJjZ0FIQUFsQURFQW1MSWVNak1SRWptd0hoQ3dEOUN3SGhDd01OQUFzQUJGV0xBSkx4dXhDUncrV2JBQVJWaXdHaThic1JvUVBsbXdBRVZZc0Jjdkc3RVhFRDVac2lBYUNSRVNPYklwQ1JvUkVqbXlBeUFwRVJJNXNnOHBJQkVTT2JJUUdna1JFam15RWhvSkVSSTVzaGdhQ1JFU09iSVZFQmdSRWptd0doQ3lIUUVLSzFnaDJCdjBXYklmSFJBUkVqbXdDUkN5THdFS0sxZ2gyQnYwV1RBeEV6WTNOeWNtTnpZMkZ4WVdCd1lIQnhNMk56TUdCeGNqSndZbkppWUZGamNCQndZSEJoWVRCaGNYTnpZM05pWWpJZ1pIRDg5eUswZ0lETmlraDdBSUNjeVQrVnNYb1J1YW5jcEpydEc5NWdHcGhwYis4U3V6RXc5K2NBZzVHNWxyQ3daU1JGTndBWUM2a2t4TmhIR2x5UVFDcTMrc2oyTCtnNGViLzZ6MWNZZ0VBdUZOQTNRQnFCNThnMnlPQTl4VVpTOW5VR2xBVkhrQUFRQ3FCQ0VCaVFZQUFBUUFFQUN3QXkreUFnVURFUkk1c0FJdk1ERUJBeU1UTXdGMlRJQk5rZ1dLL3BjQjN3QUFBUUJ0L2lvREdBWnNBQklBRUxJQ0V4UVJFamtBc0FRdnNBMHZNREVUTmhJQU54Y0dBZ0lYRkJJWEJ5WUNFelkzaFNHekFRU2dHNTNoZWdKclpTMm5zUWdDREFKTDV3RzJBVFZQZkhYK2gvMzUvTS8reFZ0d2RBSEdBU1ZnVndBQUFmK1AvaWtDT0FackFCSUFFTElIRXhRUkVqa0FzQVF2c0F3dk1ERUJCZ0lBQnljQUV6WW5BaWMzRmhJU0J3WUhBaU1qdVA3L25Cd0JWM011QWdYTEwzQ2JTUVFEREFKSjlQNU4vdFZPY3dFQ0Fqdm0xUUd0dW5CTy92MytxYmhoVmdBQkFHc0NYd09LQmJBQURnQWdBTEFBUlZpd0JDOGJzUVFjUGxtd0FOQVpzQUF2R0xBSjBCbXdDUzhZTURFQkpUY0ZFek1ESlJjRkV3Y0RBeWNCZ1A3clJBRVdNNVpHQVM4VC9zV1RnSVBlY2dQYldwQnhBVnorcUd5ZlcvN3RXQUVpL3VoaUFBQUJBRXdBa2dRMEJMWUFDd0FhQUxBSkw3QUEwTEFKRUxJR0FRb3JXQ0hZRy9SWnNBUFFNREVCSVFjaEF5TVRJVGNoRXpNQ3FnR0tILzUzVUxaUS9uWWZBWWxLdGdNTnIvNDBBY3l2QWFrQUFBSC9qLzdkQU9vQTJ3QUhBQmNBc0FndnNnUUZDaXRZSWRnYjlGbXdBTkN3QUM4d01RTW5OamMzTXdjR0NXaDBIQnF4RlNUKzNVdVBqWmVINUFBQUFRQVpBaDhDRHdLMkFBTUFFUUN3QWkreUFRRUtLMWdoMkJ2MFdUQXhBU0UzSVFIMC9pVWJBZHNDSDVjQUFBRUFOZi95QVJVQTB3QUlBQ0t5QXdrS0VSSTVBTEFBUlZpd0JTOGJzUVVRUGxteUFBVUtLMWdoMkJ2MFdUQXhOellXRGdJbU5EYWtNVUFDUUdBK1B0SUJQbUk5QkR0aVFRQUFBZitQLzRNRGtnV3dBQU1BRXdDd0FDK3dBRVZZc0FJdkc3RUNIRDVaTURFWEl3RXpNNlFEWUtOOUJpMEFBQUlBYVAvbkJDc0Z5UUFSQUNFQVJySVhJaU1SRWptd0Z4Q3dDTkFBc0FCRldMQUpMeHV4Q1J3K1diQUFSVml3QUM4YnNRQVFQbG13Q1JDeUZnRUtLMWdoMkJ2MFdiQUFFTEllQVFvcldDSFlHL1JaTURFRkppWTNOamMzRWdBWEZoWUhCZ2NIQWdBVE5pY21KeVlHQndNR0Z4SVhGalkzQWRpNHVBZ0NDU1F3QVE3ZHVyY0hBd2tqTmY3MHRRNEJCY0NNclNJckRnRUZ2NFd0SlJRRS9lNUtTUE1CTndFeUJRVDM2MHRJNi82My90QURoWGxEL2djRjJlaiszblJKL3ZjSEJ0RGlBQUVBK1FBQUExUUZ0d0FHQURrQXNBQkZXTEFGTHh1eEJSdytXYkFBUlZpd0FDOGJzUUFRUGxteUJBQUZFUkk1c0FRdnNnTUJDaXRZSWRnYjlGbXlBZ01GRVJJNU1ERWhJeE1GTnlVekFseTIxdjU5SHdJY0lBVE1pTEREQUFBQkFCY0FBQVFyQmNjQUdRQlVzZ01hR3hFU09RQ3dBRVZZc0JFdkc3RVJIRDVac0FCRldMQUFMeHV4QUJBK1diSVpBUW9yV0NIWUcvUlpzQUxRc2dNUkdSRVNPYkFSRUxJSkFRb3JXQ0hZRy9SWnNCRVFzQXpRc2hjWkVSRVNPVEF4SVNFM0FUYzJOelltSnlZR0J3YytBaGNXRmdjR0J3Y0JJUU8yL0dFV0FobGlxUklOY0dhRHNCT3pEWXZqaGJYVkR4SE1YUDRzQXIrTkFncGhxWTl1aXdRRW9Zd0Joczl2QXdUVHFNRFVYZjVEQUFBQkFEVC82QVFoQmNjQUtBQi9zZ2dwS2hFU09RQ3dBRVZZc0E0dkc3RU9IRDVac0FCRldMQWFMeHV4R2hBK1diSUFHZzRSRWptd0FDK3l6d0FCWGJLZkFBRnhzaThBQVYyeVh3QUJjckFPRUxJSEFRb3JXQ0hZRy9SWnNBNFFzQXJRc0FBUXNpZ0JDaXRZSWRnYjlGbXlGQ2dBRVJJNXNCb1FzQjNRc0JvUXNpRUJDaXRZSWRnYjlGa3dNUUVYTWpZM05pWW5KZ1lIQnpZa0Z4WVdCd1lHQnhZV0J3WUVKeVltTnhjR0ZoY1dOamMySmljbkFhQjRoTFVORFhCcmNwOFNzeEVCRWIyMzBRNEpqSHhqWWdnUS91Zkp1OTRJdFFaNGNvQ3FEQXVDZ1lzRE1nR0xkM1NGQWdLSmRBRzA0UUlFM2JWbnFqZ29yWFRGOEFRRTRMRUJjSWtFQkpxQmQ0VUVBUUFBQWdBRkFBQUVIUVd3QUFvQURnQkpBTEFBUlZpd0NTOGJzUWtjUGxtd0FFVllzQVF2RzdFRUVENVpzZ0VKQkJFU09iQUJMN0lDQVFvcldDSFlHL1Jac0FiUXNBRVFzQXZRc2dnR0N4RVNPYklOQ1FRUkVqa3dNUUV6QnlNREl4TWhOd0V6QVNFVEJ3Tlp4QnZETzdZNy9Yd1ZBeURHL1BNQnNJSWRBZW1YL3E0QlVuY0Q1L3c1QXN3cUFBQUJBSEwvNXdScUJiQUFIUUJvc2hzZUh4RVNPUUN3QUVWWXNBRXZHN0VCSEQ1WnNBQkZXTEFOTHh1eERSQStXYkFCRUxJREFRb3JXQ0hZRy9SWnNnY0JEUkVTT2JBSEw3SWFBUW9yV0NIWUcvUlpzZ1VIR2hFU09iQU5FTEFSMExBTkVMSVVBUW9yV0NIWUcvUlpzQm9Rc0IzUU1ERVRFeUVISVFNMkZ4WVNCd1lBSnlZbUp6TVdGaGNXTmpjMkppY21CZ2ZidVFMV0cvM0djRzZBdGNJU0UvN28wYTdXQnFrSGVtaUFyeEFPZW5aSmNUZ0MzUUxUcS81eVFRSUMvdlBRNFA3d0JBTGN0M2lFQWdTK21vZXZCQUl3TFFBQUFnQncvK1lEK0FXeUFCWUFKZ0Jpc2hnbktCRVNPYkFZRUxBTzBBQ3dBRVZZc0FBdkc3RUFIRDVac0FCRldMQU9MeHV4RGhBK1diQUFFTElCQVFvcldDSFlHL1Jac2djQURoRVNPYkFITDdJRkJ3NFJFam15RndFS0sxZ2gyQnYwV2JBT0VMSWdBUW9yV0NIWUcvUlpNREVCQnlNR0JBYzJGeDRDQndZQUp5WW1KeVkzRWdBaEFTWUdEd0lVRmhZWEZqWTNOaVltQTdzUUk4ais1RTZJdG5Pa1RRd1UvdXZLb3RBUENDRkZBWmNCT3Y3R1lhb3VCd0l5WWtKNXJSRUtLbUVGc3AwRThPcUlCQUo3MllQZC91RUdCT2JCYWJNQmRRR0svWEFDZEZwRFVWS2FVQUVGdnB0YWxsY0FBQUVBblFBQUJJd0ZzQUFHQURJQXNBQkZXTEFGTHh1eEJSdytXYkFBUlZpd0FTOGJzUUVRUGxtd0JSQ3lBd0VLSzFnaDJCdjBXYklBQXdVUkVqa3dNUUVCSXdFaE55RUVldnpweGdNVC9RZ1lBN3dGUHZyQ0JSaVlBQU1BUWYvb0JEWUZ5QUFYQUNNQUx3QnZzaHN3TVJFU09iQWJFTEFVMExBYkVMQW8wQUN3QUVWWXNCVXZHN0VWSEQ1WnNBQkZXTEFKTHh1eENSQStXYkl0RlFrUkVqbXdMUyt5R3dFS0sxZ2gyQnYwV2JJRExSc1JFam15RHhzdEVSSTVzQWtRc2lFQkNpdFlJZGdiOUZtd0ZSQ3lKd0VLSzFnaDJCdjBXVEF4QVFZR0J4WVdCd1lFSnlZbU56WTJOeVltTnpZa0Z4WVdBVFltSnlZR0J3WVdGeFkyRXpZbUp5WUdCd1lXRnhZMkJDZ0ppWFplV3dnUC91TEt2ZHdQQzVxRlRrc0lEZ0VHdjY3TS91Z01lSEo4c0E0TWVXOStzR0lMYVdGd21nMExhMkZ0bXdROWJhODVOclZyd2VrRUJPS3ZmYnM2TnFSZXVlUUVCTnI4c0hHWEJBS2hmM1NNQWdTYkF5RmxpZ1FDazNSb2hnSUNrUUFDQUpULy9nUVRCY2dBR0FBb0FHV3lFaWtxRVJJNXNCSVFzQm5RQUxBQVJWaXdDeThic1FzY1BsbXdBRVZZc0JNdkc3RVRFRDVac2dNVEN4RVNPYkFETDdJQUF3c1JFam13RXhDeUZRRUtLMWdoMkJ2MFdiQURFTElaQVFvcldDSFlHL1Jac0FzUXNpRUJDaXRZSWRnYjlGa3dNUUVHQmljdUFqYytBaGNXRmhjV0J3SUFCU00zTXpZa0p4WTJQd0ltSmljbUJnY0dGaGNXQXpkS3BsSnpvMHNNRFlqYmhLN0dDQU1jUXY1Ny9zOHRFQ1hYQVJQV1c2ZzJDQU1FYTJSOHJ3NEhFaHMyQW9CT1RRSUNmdHlDa1BDREJBVDB6V3VmL29yK2hRYWNCT241Qkc5ZVNWR2JxQVFGeVpjOWZqQmgvLzhBSy8veUFhUUVSZ0FtQUJMMkFBRUhBQklBandOekFCQUFzQUJGV0xBSkx4dXhDUmcrV1RBeC8vLy9tLzdkQVkwRVJnQW5BQklBZUFOekFRWUFFQXdBQUJBQXNBQkZXTEFBTHh1eEFCZytXVEF4QUFFQVFRRElBN2dFVHdBR0FCWUFzQUJGV0xBRkx4dXhCUmcrV2JBQzBMQUNMekF4QVFVSEFUY0JCd0VIQWpVaC9TWWFBMTBrQW9EOXV3RjdrZ0Y2elFBQ0FIQUJqd1AvQTg4QUF3QUhBQ1VBc0FjdnNBUFFzQU12c2dBQkNpdFlJZGdiOUZtd0J4Q3lCQUVLSzFnaDJCdjBXVEF4QVNFM0lRTWhOeUVENHZ6V0hBTXJaZnpXSEFNckF5NmgvY0NnQUFFQU9nQy9BOVFFUndBR0FCWUFzQUJGV0xBQ0x4dXhBaGcrV2JBRjBMQUZMekF4QVFFM0FRY0JOd01OL2FvaEF2d2EvSUFrQW80QkE3YitoWkgraE1rQUFBSUFwZi95QTc4Rnh3QVlBQ1FBWGJJZUpTWVJFam13SGhDd0N0QUFzQUJGV0xBUUx4dXhFQncrV2JBQVJWaXdJaThic1NJUVBsbXlIQVVLSzFnaDJCdjBXYkFBMExBQUw3SUVFQUFSRWptd0VCQ3lDUUVLSzFnaDJCdjBXYkFRRUxBTTBMSVZBQkFSRWprd01RRTJOamMzTmpjMkppY21CZ2NITmpZWEZoWUhCZ2NIQmdjRE5qWTNOaFlIRkFZSEJpWUJRUTFnYkZGOUVBeFdXMmFERWJRVDliR291UTRSdTNwaUYvZ0JPakF1UFFFOEx5ODdBWmx6c0dCSGIzcGVkZ1FDY1ZrQnBjY0NCTXlsdHFob1daZit3Qzg5QWdFN0x5NDhBUUk2QUFJQVJQNDdCcHNGbWdBM0FFUUFoN0pDUlVZUkVqbXdRaEN3QzlBQXNDY3ZzREF2c0FCRldMQUZMeHV4QlJBK1diQUFSVml3QUM4YnNRQVFQbG15QXpBQUVSSTVzZ3d3QUJFU09iQU1MN0FBRUxJVEFnb3JXQ0hZRy9SWnNEQVFzaG9DQ2l0WUlkZ2I5Rm13SnhDeUlnSUtLMWdoMkJ2MFdiQUZFTEk2QWdvcldDSFlHL1Jac0F3UXNrRUNDaXRZSWRnYjlGa3dNUVVtSmljR0p5WW1OellTTmhjV0Z3TUdGUVlYRmhJVE5nSW1KeVlFQWdNR0VoWVhGamNYQmlNbUpBSTFKaElBSkJjV0JCSVZGQUlHQVFZWEZqOENFeVluSmdJSEJLOVpiUTJJajNSd0RBcVkzSUtMaFlVS0JXR1R0Z3NIYXVlcDNmNkc5UXdJYnVDaXFhb2JpK1cvL3VhYUFwOEJHd0ZweU1JQkY1T0QzZjFPQlhWclhTQUJoVFEzaThFaUZBSlpUYXdEQXJhY29RRlBzUUlEWnYzU1FodUhBd1lCVmdFT3RBRVNqQU1FL3Y0YS91bTEvdVNSQVFSU2RWY0Jwd0ZCMHRrQnd3RlhzUU1EcVA2K3pPSCtvTFVCUHFzREJaVTFDd0g2SEFFRi91anRBQUFDLzY4QUFBU0xCYkFBQndBS0FFWUFzQUJGV0xBRUx4dXhCQncrV2JBQVJWaXdBaThic1FJUVBsbXdBRVZZc0FZdkc3RUdFRDVac2drRUFoRVNPYkFKTDdJQUFRb3JXQ0hZRy9SWnNnb0VBaEVTT1RBeEFTRURJd0V6QVNNQklRTURqZjJ5eDhrREY2VUJJTG45d0FIZmVRRjgvb1FGc1BwUUFob0Nwd0FEQURzQUFBU2dCYkFBRFFBV0FCOEFhTElZSUNFUkVqbXdHQkN3RGRDd0dCQ3dFTkFBc0FCRldMQUNMeHV4QWh3K1diQUFSVml3QUM4YnNRQVFQbG15R0FJQUVSSTVzQmd2c2hZQkNpdFlJZGdiOUZteUJ4WVlFUkk1c0FBUXNoQUJDaXRZSWRnYjlGbXdBaEN5SGdFS0sxZ2gyQnYwV1RBeE14TUZNaFlIQmdjV0ZnY0dCQ01EQXdVeU5qYzJKaWNsQlRJMk56WW1KeVU3L1FHcjM5NE9FdlZpWVFrUC91TGp5RnNCS1lpNER3NXVkdjdVQVE5L3J3OE5iWDcrNGdXd0FjaXowV29tdUcvRjV3S3AvZlFCa254MmhBU2JBWUp5YW13RkFRQUJBSFQvNWdUNUJja0FId0JPc2hVZ0lSRVNPUUN3QUVWWXNBMHZHN0VOSEQ1WnNBQkZXTEFETHh1eEF4QStXYklBRFFNUkVqbXlFQU1ORVJJNXNBMFFzaFFCQ2l0WUlkZ2I5Rm13QXhDeUhBRUtLMWdoMkJ2MFdUQXhBUVlBSnk0Q0p5WTNOeElBQlJZU0Z5TUNKeWNtQWc4Q0JoWVhGalkzQkpFcS9ydmpoOHB3QmdRTEVTOEJid0VIemZBSHV3M2pJYjM5SlJZR0JvK05tTWMwQWREaS92Z0dBMy92a1ZKT2VBRklBWHNGQlA3LzVBRXlHQUlGL3QzOGwxaTQyUVFGbkswQUFnQTdBQUFFMVFXd0FBb0FGUUJEc2c0V0Z4RVNPYkFPRUxBQzBBQ3dBRVZZc0FJdkc3RUNIRDVac0FCRldMQUFMeHV4QUJBK1diSU5BUW9yV0NIWUcvUlpzQUlRc2hVQkNpdFlJZGdiOUZrd01UTVRCVElFRWdjSEFnQWhFd01YTWdBM05pY21KaWM3L1FGNnNnRUJjQmNLTFA1cS9zMFp4cm5VQVNjc0l3c1BzSlFGc0FHeS9zZkNTZjdDL29VRkV2dUxBUUVJNXJpQm02OEVBQUFCQURzQUFBU3hCYkFBQ3dCT0FMQUFSVml3Qmk4YnNRWWNQbG13QUVWWXNBUXZHN0VFRUQ1WnNnc0VCaEVTT2JBTEw3SUFBUW9yV0NIWUcvUlpzQVFRc2dJQkNpdFlJZGdiOUZtd0JoQ3lDQUVLSzFnaDJCdjBXVEF4QVNFRElRY2hFeUVISVFNaEE5RDluRm9DeUJ6OGZmMERlUno5UTFFQ1pBS2gvZnlkQmJDZS9pd0FBQUVBT3dBQUJLUUZzQUFKQUVBQXNBQkZXTEFFTHh1eEJCdytXYkFBUlZpd0FpOGJzUUlRUGxteUNRSUVFUkk1c0FrdnNnQUJDaXRZSWRnYjlGbXdCQkN5QmdFS0sxZ2gyQnYwV1RBeEFTRURJeE1oQnlFRElRTzMvYkJ3dlAwRGJCejlVRllDVVFLRC9YMEZzSjcrRGdBQkFIbi82Z1VHQmNjQUlRQmNzaDhpSXhFU09RQ3dBRVZZc0F3dkc3RU1IRDVac0FCRldMQURMeHV4QXhBK1diSVFEQU1SRWptd0RCQ3lFd0VLSzFnaDJCdjBXYkFERUxJYkFRb3JXQ0hZRy9SWnNpRU1BeEVTT2JBaEw3SWVBUW9yV0NIWUcvUlpNREVsQmdRbkxnSW5KaElTSkJjV0ZoY2pKaVluSmdJREJ3Y1VGaGNXTnhNaE55RUVlMG4rNmJPUDFub0pCMG0yQVJHd3kvRVJ1Z3VRZjd6OUtCTURvcExUZkR6K3VCd0NBTUJuYndJRGdPK1lkd0dXQVNpY0F3VHAwNHFVQkFmKzVQN3ZqRXpGMXdJRmJRRkhuQUFBQVFBN0FBQUZkd1d3QUFzQVZRQ3dBRVZZc0FZdkc3RUdIRDVac0FCRldMQUtMeHV4Q2h3K1diQUFSVml3QUM4YnNRQVFQbG13QUVWWXNBUXZHN0VFRUQ1WnNBQVFzQW5Rc0FrdnNwOEpBWEt5THdrQlhiSUNBUW9yV0NIWUcvUlpNREVoSXhNaEF5TVRNd01oRXpNRWVyeDEvVGwxdlAyOGJRTEdiYjBDb2YxZkJiRDlqZ0p5QUFFQVNRQUFBZ0VGc0FBREFCMEFzQUJGV0xBQ0x4dXhBaHcrV2JBQVJWaXdBQzhic1FBUVBsa3dNU0VqRXpNQkJMdjl1d1d3QUFFQUN2L21CRW9Gc0FBUEFDNEFzQUJGV0xBQUx4dXhBQncrV2JBQVJWaXdCUzhic1FVUVBsbXdDZEN3QlJDeURBRUtLMWdoMkJ2MFdUQXhBVE1EQmdRbkppWTNNd1lXRnhZMk53T092SzhkL3V6T3dOSU11d3R3Y0h1cUV3V3crL25POVFRRTRNUjRqd0lFb29FQUFRQTdBQUFGVUFXd0FBc0FkQUN3QUVWWXNBVXZHN0VGSEQ1WnNBQkZXTEFITHh1eEJ4dytXYkFBUlZpd0FpOGJzUUlRUGxtd0FFVllzQXN2RzdFTEVENVpzZ0FDQlJFU09VQVJTZ0JhQUdvQWVnQ0tBSm9BcWdDNkFBaGRzamtBQVYyeUJnVUNFUkk1UUJNMkJrWUdWZ1ptQm5ZR2hnYVdCcVlHdGdZSlhUQXhBUWNESXhNekF3RXpBUUVqQWlEVlZMejl2SHdDNXZMOVd3SEYwUUtqdi80Y0JiRDlPd0xGL1hUODNBQUFBUUE3QUFBRHNRV3dBQVVBS0FDd0FFVllzQVF2RzdFRUhENVpzQUJGV0xBQ0x4dXhBaEErV2JJQUFRb3JXQ0hZRy9SWk1ERWxJUWNoRXpNQkV3S2VIUHltL2IyZG5RV3dBQUFCQURzQUFBYTNCYkFBRGdCWkFMQUFSVml3QUM4YnNRQWNQbG13QUVWWXNBSXZHN0VDSEQ1WnNBQkZXTEFFTHh1eEJCQStXYkFBUlZpd0NDOGJzUWdRUGxtd0FFVllzQXd2RzdFTUVENVpzZ0VBQkJFU09iSUhBQVFSRWpteUNnQUVFUkk1TURFQkV3RXpBeU1URXdFakFRTURJeE1DSmY4Q25QZjl1MlIzL1d5US92eGFZYno5QmJEN1hnU2krbEFDUUFKSyszWUVvZjJNL2RNRnNBQUFBUUE3QUFBRmR3V3dBQWtBVExJQkNnc1JFamtBc0FCRldMQUZMeHV4QlJ3K1diQUFSVml3Q0M4YnNRZ2NQbG13QUVWWXNBQXZHN0VBRUQ1WnNBQkZXTEFETHh1eEF4QStXYklDQlFBUkVqbXlCd1VBRVJJNU1ERWhJd0VESXhNekFSTXpCSHEyL2ZqRXZmMjJBZ25GdXdScSs1WUZzUHVSQkc4QUFBSUFkLy9uQlEwRnlBQVNBQ0lBUnJJWEl5UVJFam13RnhDd0NkQUFzQUJGV0xBS0x4dXhDaHcrV2JBQVJWaXdBQzhic1FBUVBsbXdDaEN5RmdFS0sxZ2gyQnYwV2JBQUVMSWVBUW9yV0NIWUcvUlpNREVGTGdJbkpoSVNOellYRmhJWEZnSUNCd1lCTmlZbkpnWUNCd2NHRmhjV0VoTTJBbEdMelhZR0JrS2lkSjNKMWZZSkJET0RaYkFCRGdhV2xJYlRoeElEQnBpUnZma3BGQlFEZ1BtYmVRRmtBUjVXZEFRRS91SDFhZjY4L3VwZXBBT1h4ZGtFQkpqKzBlaEJ4TjRFQlFFYkFRQitBQUFDQURzQUFBVHpCYkFBQ2dBVEFFMnlDaFFWRVJJNXNBb1FzQXpRQUxBQVJWaXdBeThic1FNY1BsbXdBRVZZc0FFdkc3RUJFRDVac2dzREFSRVNPYkFMTDdJQUFRb3JXQ0hZRy9SWnNBTVFzaElCQ2l0WUlkZ2I5Rmt3TVFFREl4TUZNaFlIQmdRakpRVXlOamMySmljbEFWcGp2UDBCNXVIMEVSTCsxL1Ard1FGRW1jUVJFSWFBL3FjQ092M0dCYkFCNzhiUjhKNEJtb2w3bVFRQkFBSUFiLzhLQlFRRnlBQVhBQ2dBUnJJY0tTb1JFam13SEJDd0JOQUFzQUJGV0xBUEx4dXhEeHcrV2JBQVJWaXdCUzhic1FVUVBsbXdEeEN5R3dFS0sxZ2gyQnYwV2JBRkVMSWtBUW9yV0NIWUcvUlpNREVsRndjbkJpTXVBaWNtRWhJM05oY2VBaGNXQndjQ0F6WW1KeVlHQWdjSEJoWVdGeFlTTnpZRGk5bUwva3BLaWRCekJnWkJubkNnem8zUWNnWURDZ3crYVFlWWtvYlRoeElEQkQ2SFlyajdLaFZNMFhIekVBR0Q5NXgrQVYwQkdWWjZCQU9DOTV4VVUxWCtVUUo5eU5ZRUJKaiswZWhCYzhob0F3Y0JHUDkvQUFBQ0FEb0FBQVRDQmJBQURnQVhBR0d5QlJnWkVSSTVzQVVRc0JiUUFMQUFSVml3QkM4YnNRUWNQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFOTHh1eERSQStXYklRQkFJUkVqbXdFQyt5QUFFS0sxZ2gyQnYwV2JJTEFBUVJFam13QkJDeUZnRUtLMWdoMkJ2MFdUQXhBU0VESXhNRkZoWUhCZ1lIRXdjakFRVXlOamMySmljbEFxMytzR2E5L1FHMjVmQVRDN0dUNGdISS9mOEJGSkRHRVErQ2hmN2RBazM5c3dXd0FRSG14b25RTmYyWkRRTHFBWm1BZlk0RUFRQUJBQ2YvNlFTakJjY0FLQUJoc2hNcEtoRVNPUUN3QUVWWXNBb3ZHN0VLSEQ1WnNBQkZXTEFmTHh1eEh4QStXYklDSHdvUkVqbXdDaEN3RDlDd0NoQ3lFZ0VLSzFnaDJCdjBXYkFDRUxJWUFRb3JXQ0hZRy9SWnNCOFFzQ1RRc0I4UXNpWUJDaXRZSWRnYjlGa3dNUUUyTHdJa056NENGeDRDQnljMkppY21CZ2NHSHdJRUF3NENKeTRDTnhjR0ZnUTJBMjBXdkswNi90d1RDcEx4aUlUUGJBYTlDb3lDaWJnT0ZNdVZTd0VhRlF1UTk0Nko0M1lIdkFtZkFTSzhBWGVnU2o4WmhmRjV1bVVEQTNESmZnR0drd0lDaEhLVlRUVWdndjhBZTdOaUF3Rnp5SDhCZ3BrRWdnQUJBS2dBQUFVSkJiQUFCd0F1QUxBQVJWaXdCaThic1FZY1BsbXdBRVZZc0FJdkc3RUNFRDVac0FZUXNnQUJDaXRZSWRnYjlGbXdCTkF3TVFFaEF5TVRJVGNoQk8zK08rRzc0ZjQ3SEFSRkJSTDY3Z1VTbmdBQUFRQm4vK2NGSUFXd0FCSUFQTElQRXhRUkVqa0FzQUJGV0xBS0x4dXhDaHcrV2JBQVJWaXdFaThic1JJY1BsbXdBRVZZc0FRdkc3RUVFRDVac2c0QkNpdFlJZGdiOUZrd01RRURCZ0FuTGdJM0V6TURCaFlYRmpZM0V3VWdxQ0wrdk9XUDAyUVJxTG1uRVlxTW1ORWJxQVd3L0Nmai92TUVBM3ZmamdQYS9DV1pyd1FHc2FBRDNBQUFBUUNrQUFBRllRV3dBQVlBT0xJQUJ3Z1JFamtBc0FCRldMQUJMeHV4QVJ3K1diQUFSVml3QlM4YnNRVWNQbG13QUVWWXNBTXZHN0VERUQ1WnNnQUJBeEVTT1RBeEFRRXpBU01CTXdJK0FrL1UvUkNtL3RuRkFRRUVyL3BRQmJBQUFRRERBQUFIUVFXd0FCSUFXUUN3QUVWWXNBTXZHN0VESEQ1WnNBQkZXTEFJTHh1eENCdytXYkFBUlZpd0VTOGJzUkVjUGxtd0FFVllzQW92RzdFS0VENVpzQUJGV0xBUEx4dXhEeEErV2JJQkF3b1JFam15QmdNS0VSSTVzZzBEQ2hFU09UQXhBUWMzQVRNVEZ6Y0JNd0VqQXljSEFTTURNd0crQkVRQnM1OXpDajhCZE1IOXhxdCtCQ3IrTUt0eXR3SEJzS3dEOC93QXBza0QzZnBRQkMxa2RQdmpCYkFBQWYvVUFBQUZLd1d3QUFzQWF3Q3dBRVZZc0FFdkc3RUJIRDVac0FCRldMQUtMeHV4Q2h3K1diQUFSVml3QkM4YnNRUVFQbG13QUVWWXNBY3ZHN0VIRUQ1WnNnQUJCQkVTT1VBSmhnQ1dBS1lBdGdBRVhiSUdBUVFSRWpsQUNZa0dtUWFwQnJrR0JGMnlBd0FHRVJJNXNna0dBQkVTT1RBeEFRRXpBUUVqQVFFakFRRXpBcG9CcWVqOXlRRlQwLzcrL2tyb0FrUCt0dEFEZ3dJdC9TWDlLd0kzL2NrQzV3TEpBQUFCQUtnQUFBVXlCYkFBQ0FBeEFMQUFSVml3QVM4YnNRRWNQbG13QUVWWXNBY3ZHN0VISEQ1WnNBQkZXTEFFTHh1eEJCQStXYklBQVFRUkVqa3dNUUVCTXdFREl4TUJNd0pqQWUvZy9YTmR1MkQrdTh3QzFnTGEvR1g5NndJcUE0WUFBQUgvNndBQUJNNEZzQUFKQUVRQXNBQkZXTEFITHh1eEJ4dytXYkFBUlZpd0FpOGJzUUlRUGxteUFBRUtLMWdoMkJ2MFdiSUVBQUlSRWptd0J4Q3lCUUVLSzFnaDJCdjBXYklKQlFjUkVqa3dNVGNoQnlFM0FTRTNJUWZxQXlJYysvc2JBOGI5REJ3RDJocWRuWm9FZUo2WEFBSC8vLzdJQXFNR2dBQUhBQ0lBc0FRdnNBY3ZzZ0FCQ2l0WUlkZ2I5Rm13QkJDeUF3RUtLMWdoMkJ2MFdUQXhBU01CTXdjaEFTRUNpcm4rKzdvWS9wRUJOQUZ3QmVqNWVKZ0h1QUFCQUwvL2d3S2VCYkFBQXdBVEFMQUNMN0FBUlZpd0FDOGJzUUFjUGxrd01STXpBU08vcEFFN293V3crZE1BQWY5Ni9zZ0NId2FBQUFjQUpRQ3dBaSt3QVMrd0FoQ3lCUUVLSzFnaDJCdjBXYkFCRUxJR0FRb3JXQ0hZRy9SWk1ERVRJUUVoTnpNQkk2OEJjUDdML3BBWXV3RUZ2QWFBK0VpWUJvZ0FBUUJQQXRrRER3V3dBQVlBSjdJQUJ3Z1JFamtBc0FCRldMQURMeHV4QXh3K1diQUEwTElCQndNUkVqbXdBUyt3QmRBd01RRUJJd0V6RXlNQ0RQNzBzUUdoZktPZUJMbitJQUxYL1NrQUFmK0IvMmtERmdBQUFBTUFHd0N3QUVWWXNBTXZHN0VERUQ1WnNnQUJDaXRZSWRnYjlGa3dNUVVoTnlFQysveUdHd042bDVjQUFRRFBCTmdDS3dYK0FBTUFJd0N3QVMreUR3RUJYYkFBMEJtd0FDOFlzQUVRc0FMUXNBSXZ0QThDSHdJQ1hUQXhBU01ETXdJcmo4M05CTmdCSmdBQ0FEUC82QVBQQkZFQUlBQXJBSG15QkN3dEVSSTVzQVFRc0NMUUFMQUFSVml3R0M4YnNSZ1lQbG13QUVWWXNBVXZHN0VGRUQ1WnNBQkZXTEFBTHh1eEFCQStXYklER0FVUkVqbXlDeGdGRVJJNXNBc3ZzQmdRc2hBQkNpdFlJZGdiOUZteUV3c1lFUkk1c0FVUXNpRUJDaXRZSWRnYjlGbXdDeEN5SmdFS0sxZ2gyQnYwV1RBeElTWTFOd1luSmlZM05pUXpGemMySmljbUJnY0hQZ0lYRmhZSEF3Y0dGd2NsRmpZM055Y2lCZ2NHRmdLMUJ3T1ZwNCt6Q0FvQkdlVzlEQXBmWDEyUEVMWUpnc3h0cWJ3UFdBVUNEZ0wrTEZlYk9DZUpxN1lNQ1ZrZEhEbUtCQUt4aGF6QkFWWmhjUUlDWDA0Qlg1TlJBZ1RGby8zb1RUYzJFWXdDVjAzZkFXeGpUR1VBQWdBZi8rZ0QvZ1lBQUJJQUhnQmtzaHdmSUJFU09iQWNFTEFFMEFDd0NTK3dBRVZZc0Ewdkc3RU5HRDVac0FCRldMQUVMeHV4QkJBK1diQUFSVml3Qnk4YnNRY1FQbG15QmcwRUVSSTVzZ3NOQkJFU09iQU5FTElXQVFvcldDSFlHL1Jac0FRUXNoc0JDaXRZSWRnYjlGa3dNUUVHQWdZbkppY0hJd0V6QXpZWEZoWVhGZ2NuTmlZbkpnY0RGaGNXTmpZRDlSU095bnZFWHlXbkFRdTFiWUs2bks0RkFRZXVBMmhycVhWUlBLVnFuMUlDR0tiKzlvQURCSTkrQmdEOXdwQUVCTjdEUUR4VWtwc0VCSzcrS2FVRUJJYnhBQUVBUnYvcEErWUVVZ0FnQUV1eUFDRWlFUkk1QUxBQVJWaXdFUzhic1JFWVBsbXdBRVZZc0Fndkc3RUlFRDVac2dBQkNpdFlJZGdiOUZteUJCRUlFUkk1c2hRUkNCRVNPYkFSRUxJWUFRb3JXQ0hZRy9SWk1ERWxGalkzTnc0Q0p5NENOemMrQWhjV0ZoVW5KaVluSmdZSEJ3WVhGaFlCNkdHY0dLc1BoY3BxaDd0WURnVVRrT2lNcXN5cEFuSmhqYnNYQXdZRUIzYUNBblZmQVdhb1hnTUNpZldaTXB6MmlRUUUzS2tCYW9NRUE5akNHa0JFZFlnQUFBSUFTLy9vQkhVR0FBQVJBQjBBWkxJRUhoOFJFam13QkJDd0d0QUFzQWN2c0FCRldMQUVMeHV4QkJnK1diQUFSVml3RFM4YnNRMFFQbG13QUVWWXNBb3ZHN0VLRUQ1WnNnWUVEUkVTT2JJTEJBMFJFam13RFJDeUZRRUtLMWdoMkJ2MFdiQUVFTElhQVFvcldDSFlHL1JaTURFVE5oSTJGeFlYRXpNQkl6Y0dKeVltSnlZWEJoWVhGamNUSmljbUJnWlRGSTdRZmJWaGFMWCs5cVVUZ0x5V3NnY0R0Z05zYUoxNlZqeWVhNk5WQWgrbEFRcUVBd1NBQWpYNkFIU01CQVRqdnpzV2o1NENCNlVCOUpRRUE0ZnpBQUlBUmYvcUErQUVVUUFYQUI4QWFiSVNJQ0VSRWptd0VoQ3dHZEFBc0FCRldMQUlMeHV4Q0JnK1diQUFSVml3QUM4YnNRQVFQbG15SEFnQUVSSTVzQnd2dEw4Y3p4d0NYYklPQVFvcldDSFlHL1Jac0FBUXNoSUJDaXRZSWRnYjlGbXlGQWdBRVJJNXNBZ1FzaGdCQ2l0WUlkZ2I5Rmt3TVFVbUFqYzNOaEkyRnhZV0Z4WUhCeUVHRmhjV054Y0dCZ01tQmdjRk56WW1BZlBLNUJJRkVaM2lnNmUrQ1FNSEMvMDlFb1dFb0lob1JOY1JjS2N4QWc0RUVIRVVCQUVpNGl1aEFRcUhBd1RXdDBGQlU1UE9CQVNVV0dKdkE4MERucHdCRUg2bkFBRUFkQUFBQTFBR0dRQVdBR095QmhjWUVSSTVBTEFBUlZpd0NTOGJzUWtlUGxtd0FFVllzQU12RzdFREdENVpzQUJGV0xBU0x4dXhFaGcrV2JBQVJWaXdBQzhic1FBUVBsbXdBeEN5QVFFS0sxZ2gyQnYwV2JBSkVMSU9BUW9yV0NIWUcvUlpzQUVRc0JUUXNCWFFNREV6RXlNM016YzJOellYTWhjSEppY2lCZ2NITXdjakEzZWtweG1tRWhwa2FhTXpUaFl3TVY1MURoRGdHZUNqQTZ1UGdLTmNZQUlSbHdvQ2RXRnJqL3hWQUFBQ0FBVCtUd1FvQkZJQUhRQXBBSU95Q3lvckVSSTVzQXNRc0NiUUFMQUFSVml3QkM4YnNRUVlQbG13QUVWWXNBY3ZHN0VIR0Q1WnNBQkZXTEFNTHh1eERCSStXYkFBUlZpd0dDOGJzUmdRUGxteUJnUVlFUkk1c2hBWURCRVNPYkFNRUxJU0FRb3JXQ0hZRy9SWnNoWUVHQkVTT2JBWUVMSWhBUW9yV0NIWUcvUlpzQVFRc2lZQkNpdFlJZGdiOUZrd01STTJFallYRmhjM013TUdCQ2NtSmljM0ZoY1dOamMzQmljdUFpY21Gd1lXRnhZM0V5WW5KZ1lIVkJpUHpYcThZQ1NtdEIzKzZzeHV5VHBuWXFHQnN4MFVoTEZsbFZJRUFyY0RhV3FpZFZVOG5aTzlFUUlmc1FFRmZRTUVpbm43M2MvNUJnSmtWMitSQkFTWWpHQ0VCQU5udzNnN0ZJK2RCQVNqQWZHVUJnVDQwd0FCQUI4QUFBUGpCZ0FBRWdCSnNnRVRGQkVTT1FDd0VpK3dBRVZZc0FJdkc3RUNHRDVac0FCRldMQVBMeHV4RHhBK1diQUFSVml3Qnk4YnNRY1FQbG15QUFJUEVSSTVzQUlRc2d3QkNpdFlJZGdiOUZrd01RRTJGeFlXQndNakV6WW5KaWNtQndNakFUTUJjWTY1bUpNVGRyVjNCZ1VSbEtaNGhyVUJDN1VEdHBzRUFzMjUvVHNDeURFcWpBTUVzdno4QmdBQUFnQXZBQUFCNHdYSEFBTUFEUUF4QUxBQVJWaXdBaThic1FJWVBsbXdBRVZZc0FFdkc3RUJFRDVac0FJUXNBclFzQW92c2dRRkNpdFlJZGdiOUZrd01UTWpFek1ETmhZVkRnSW1OamJqdEx5MEp5NDlBVHRlUEFJNkJEb0Jpd0k3TUM4OEJEcGVQZ0FDL3hUK1JnSFZCY2NBREFBWUFEd0FzQUJGV0xBTUx4dXhEQmcrV2JBQVJWaXdCQzhic1FRU1BsbXlDUUVLSzFnaDJCdjBXYkFNRUxBWDBMQVhMN0lRQlFvcldDSFlHL1JaTURFQkF3WUdKeVluTnhZWE1qY1RFelkyTnpZV0ZRWUdCd1ltQVpiTkZLV0ZOVUlRSlM2QkdzOGZBVGt3TGowQlBDOHRQQVE2KzBXWm9BSUNFcFFKQXBvRXV3RWNMejRDQWowdUx6d0NBandBQVFBZ0FBQUVHZ1lBQUF3QWRRQ3dBRVZZc0FRdkc3RUVIajVac0FCRldMQUlMeHV4Q0JnK1diQUFSVml3QWk4YnNRSVFQbG13QUVWWXNBc3ZHN0VMRUQ1WnNnQUlBaEVTT1VBVk9nQktBRm9BYWdCNkFJb0FtZ0NxQUxvQXlnQUtYYklHQ0FJUkVqbEFGVFlHUmdaV0JtWUdkZ2FHQnBZR3BnYTJCc1lHQ2wwd01RRUhBeU1CTXdNM0FUTUJBU01CbzQ1QXRRRUx0YUJ2QVlEci9nOEJWc1lCODMvK2pBWUEvR3B3QVdEK00vMlRBQUVBTHdBQUFlNEdBQUFEQUIwQXNBQkZXTEFDTHh1eEFoNCtXYkFBUlZpd0FDOGJzUUFRUGxrd01UTWpBVFBqdEFFS3RRWUFBQUVBSGdBQUJtb0VVZ0FnQUhleUZpRWlFUkk1QUxBQVJWaXdBeThic1FNWVBsbXdBRVZZc0Fndkc3RUlHRDVac0FCRldMQUFMeHV4QUJnK1diQUFSVml3Rnk4YnNSY1FQbG13QUVWWXNBMHZHN0VORUQ1WnNBQkZXTEFlTHh1eEhoQStXYklCSGdNUkVqbXlCZ01YRVJJNXNBTVFzaHNCQ2l0WUlkZ2I5Rm13RXRBd01RRUhOaGNXRmhjMkZ4WVdCd01qRXpZbkppY21CZ2NESXhNMkppY21Cd01qRXdHRUY0akJaNDhibU0raW1oUjN0SFlHQmhPZlk2RVhlN1o0RFYxaXFXU0p0YndFTzNtUUJBSmFVcklFQk5LeC9Ua0N5VFFyaUFNQ2YyZjlNUUxJYjNnQ0JKNzg2UVE2QUFBQkFCOEFBQVBqQkZJQUVnQlRzZ0lURkJFU09RQ3dBRVZZc0FNdkc3RURHRDVac0FCRldMQUFMeHV4QUJnK1diQUFSVml3RUM4YnNSQVFQbG13QUVWWXNBZ3ZHN0VJRUQ1WnNnRURFQkVTT2JBREVMSU5BUW9yV0NIWUcvUlpNREVCQnpZWEZoWUhBeU1UTmljbUp5WUhBeU1UQVlZYWtycVpraE4ydFhjR0JSR1VvM3VHdGJ3RU80bWdCQVRNdWYwN0FzZ3hLb3dEQTdIOC9BUTZBQUlBUmYvb0JCOEVVZ0FRQUNJQVE3SVhJeVFSRWptd0Z4Q3dDTkFBc0FCRldMQUFMeHV4QUJnK1diQUFSVml3Q1M4YnNRa1FQbG15RmdFS0sxZ2gyQnYwV2JBQUVMSWZBUW9yV0NIWUcvUlpNREVCSGdJSEJ3NENKeTRDTnpZU05nTUdGeFlXRnhZMk5qYzJKeVltSnlZR0J3SjRpTUpkRHdJVGx1Nk9oOE5hRFErWTcrQUhCd3A1WlZxWWFBOElCUXg2Wll6RUZ3Uk9BcEQ5bGhhZS80NEVBcEQ0bGFnQkRKUDl1RDlFZG93REExL0FkVncvZVl3RUErSzNBQUFDLzlmK1lBUDhCRklBRWdBZUFHZXlCQjhnRVJJNXNBUVFzQjNRQUxBQVJWaXdEUzhic1EwWVBsbXdBRVZZc0Fvdkc3RUtHRDVac0FCRldMQUhMeHV4QnhJK1diQUFSVml3QkM4YnNRUVFQbG15Q3cwSEVSSTVzQTBRc2hjQkNpdFlJZGdiOUZtd0JCQ3lIQUVLSzFnaDJCdjBXVEF4QVFZQ0JpY21Kd01qQVRjSE5oY1dGaGNXQnlNM05DWW5KZ2NERmhjV05nUHpGSXJNZkx4a1liVUJCS1FVaHJ1Y3JnVUJCclVGYjJtZGNsczlub2U5QWhpbC92aURBd1I3L2ZZRjJnRjVrQVFFM3NOQVBGU1Ntd1FFbWYzNWtBUUQyUUFDQUVuK1lBUW9CRklBRUFBY0FHaXlBQjBlRVJJNXNCclFBTEFBUlZpd0FDOGJzUUFZUGxtd0FFVllzQU12RzdFREdENVpzQUJGV0xBRkx4dXhCUkkrV2JBQVJWaXdDUzhic1FrUVBsbXlBZ0FKRVJJNXNnY0FDUkVTT2JJVkFRb3JXQ0hZRy9SWnNBQVFzaG9CQ2l0WUlkZ2I5Rmt3TVFFV0Z6Y3pBU01UQmljbUppY21FalkyQXdjR0ZoY1dOeE1tSnlZR0FrbTNZQ0duL3Z5MFlvS3NtTFlIQmthTHZzOEZBMjlvbVhaZVFwYUp2QVJQQkg5dStpWUNCSHdFQXVMQWZBRVR6V2I5dUZTUm9RSUVsZ0lVaXdRRDJBQUFBUUFmQUFBQzFBUlVBQXdBUnJJRERRNFJFamtBc0FCRldMQUtMeHV4Q2hnK1diQUFSVml3Qnk4YnNRY1lQbG13QUVWWXNBUXZHN0VFRUQ1WnNBb1FzZ0VPQ2l0WUlkZ2I5Rm15Q0FvQkVSSTVNREVCSnlJSEF5TVROd2MyRnpJWEFzQlZybVNGdGJ5dkczT2NJVFVEbFFtZC9QOEVPZ0YrbHdRUEFBRUFMdi9wQTdZRVVBQW1BR095Rmljb0VSSTVBTEFBUlZpd0NDOGJzUWdZUGxtd0FFVllzQjB2RzdFZEVENVpzZ01kQ0JFU09iSUxDQjBSRWptd0NCQ3lEd0VLSzFnaDJCdjBXYkFERUxJVkFRb3JXQ0hZRy9SWnNpQUlIUkVTT2JBZEVMSWtBUW9yV0NIWUcvUlpNREVCTmljbkpqYzJOaGNXRmdjbk5pWW5KZ2NHQndZWEZ4WVdCdzRDSnlZbU54Y1VGak1XTmdLOUQ0cTg3Z2dIOTZla3pRUzBBbXBZWGtRL0NnMkFXN3FjQmdaNHlIR3M0QVMxZEdWamtBRWxjQzQzVXI2UHR3SUN1NVlCVVdZQ0FqQXRTVjRyR1RDYWNtV1dUd01DeFpzQlcyNENWd0FBQVFCRC8rMENsQVZBQUJZQVg3SVdGeGdSRWprQXNBQkZXTEFCTHh1eEFSZytXYkFBUlZpd0ZDOGJzUlFZUGxtd0FFVllzQTR2RzdFT0VENVpzQUVRc0FEUXNBQXZzQUVRc2dNQkNpdFlJZGdiOUZtd0RoQ3lDUUVLSzFnaDJCdjBXYkFERUxBUzBMQVQwREF4QVFNekJ5TURCaGNXTXpJM0J3WWpKaVkzRXlNM014TUIvUzdGR2NSeEF3SUhUaUUzRGtGRGJHd01icjhadnk0RlFQNzZqLzFmR2haT0NwY1NBcHVEQXA2UEFRWUFBQUVBVy8vb0JCNEVPZ0FUQUV5eUFSUVZFUkk1QUxBQVJWaXdCaThic1FZWVBsbXdBRVZZc0JBdkc3RVFHRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3RXk4YnNSTVFQbG13QWhDeURRRUtLMWdoMkJ2MFdUQXhKUVluSmlZM0V6TURCaGNXRmhjV054TXpBeU1Dem4vRW01VVRkTFYxQlFNRlRFVENhb2kxdkt0cmd3UUUxcmtDdS8xQ0xDcElVZ01Hb3dNVSs4WUFBUUJ1QUFBRDdRUTZBQVlBT0xJQUJ3Z1JFamtBc0FCRldMQUJMeHV4QVJnK1diQUFSVml3QlM4YnNRVVlQbG13QUVWWXNBTXZHN0VERUQ1WnNnQUZBeEVTT1RBeEpRRXpBU01ETXdHb0FZYS8vZCtLMUxMOUF6Mzd4Z1E2QUFFQWdBQUFCZjRFT2dBTUFHQ3lCUTBPRVJJNUFMQUFSVml3QVM4YnNRRVlQbG13QUVWWXNBZ3ZHN0VJR0Q1WnNBQkZXTEFMTHh1eEN4ZytXYkFBUlZpd0F5OGJzUU1RUGxtd0FFVllzQVl2RzdFR0VENVpzZ0FMQXhFU09iSUZDd01SRWpteUNnc0RFUkk1TURFQkFUTUJJd01CSXdNekV3RXpBK29CV2J2K0U1TncvbnFUZGExQ0FZQ1NBUUFET3Z2R0F6TDh6Z1E2L05vREpnQUFBZi9FQUFBRDlBUTZBQXNBVXdDd0FFVllzQUV2RzdFQkdENVpzQUJGV0xBS0x4dXhDaGcrV2JBQVJWaXdCQzhic1FRUVBsbXdBRVZZc0Fjdkc3RUhFRDVac2dBS0JCRVNPYklHQ2dRUkVqbXlBd0FHRVJJNXNna0dBQkVTT1RBeEFRRXpBUUVqQXdFakFRRXpBZkFCSnQ3K1RnRUl4YlArejkwQnYvOEF4Z0t3QVlyOTRQM21BWlQrYkFJc0FnNEFBZitsL2tVRDdBUTZBQThBUDdJQUVCRVJFamtBc0FCRldMQVBMeHV4RHhnK1diQUFSVml3QlM4YnNRVVNQbG15QUFVUEVSSTVzQThRc0FIUXNBVVFzZ2tCQ2l0WUlkZ2I5Rmt3TVFFQk13RUNKeVluTnhjV05qYzNBek1Cb3dHQnlQMStodElsU0JBdlZuMHdRYnU5QVJFREtmc1MvdmtEQVJHV0JRUlZYM3dFSXdBQUFmL3RBQUFEemdRNkFBa0FSQUN3QUVWWXNBY3ZHN0VIR0Q1WnNBQkZXTEFDTHh1eEFoQStXYklBQVFvcldDSFlHL1Jac2dRQUFoRVNPYkFIRUxJRkFRb3JXQ0hZRy9SWnNna0ZCeEVTT1RBeE55RUhJVGNCSVRjaEIrb0NZQnY4dmhrQ3hmM0xIQU1jR0plWGtRTVFtWXdBQVFBNC9wTURGUVkvQUIwQUxySU1IaDhSRWprQXNBQXZzQTR2c2drQURoRVNPWHl3Q1M4WXNnZ0RDaXRZSWRnYjlGbXlGQWdKRVJJNU1ERUJKaVkzTnpZbkppYzNOamMzRWlVWEJnTUhCZ2NXRnhZUEFoY1dGd0hlbnBRVEhBWUZFWk1RMlNBZk93RmZHOVF0SWlHeVp3b0RCQjhDQWhHRy9wTTE3NnpQTVNxSUNKRUs2K1FCVTJWMVJ2NzE4TWhlVFk0c0svTkhINTgxQUFFQUlmN3lBY0VGc0FBREFCTUFzQUF2c0FCRldMQUNMeHV4QWh3K1dUQXhFeU1CTTdPU0FRNlMvdklHdmdBQi80eitrQUpxQmpzQUhBQXVzaGtkSGhFU09RQ3dEaSt3SEMreUZod09FUkk1ZkxBV0x4aXlGd01LSzFnaDJCdjBXYklGRnhZUkVqa3dNUWMyRXpjMk55WW5KajhDSmljM0ZoWUhCd1lYRmhjSEJnY0hBZ1YwMlNzZkg4TnhEUVFGSHdJRGxTMmNrQk1iQmdVUWt3L2FJQnd6L3BiN1J3RVI0dEJkUlpNcUxmWkh1RHB4TmUrcjBESXBod2lSQ3U3UC9wNW9BQUFCQUdrQmpnVGRBeWNBRndBNHNoRVlHUkVTT1FDd0R5K3dBTkN3RHhDd0ZOQ3dGQyt5QXdFS0sxZ2gyQnYwV2JBUEVMSUlBUW9yV0NIWUcvUlpzQU1Rc0F6UU1ERUJCZ1luSmljbkppTW1Ed0kyTmhjV0Z4Y1dNekkyTndUZERzT01mbnM4U0VLSUxBaWNFTU9OZDJ4WlJEOUxhUklEQ3FQWkFnTndPa01EcHlVRG90RUVBMTFUUFc1bUFBTC84ZjZZQWFFRVR3QURBQTRBSkFDd0F5K3dBRVZZc0F3dkc3RU1HRDVac2djRkNpdFlJZGdiOUZtd0FkQ3dBUzh3TVJNekF5TUJGQVlHSmpVMk5qYzJGck9scWI0QnJ6cGdPd0U3THk0OUFxejc3QVZQTHo0RVBpMHdPd0lCT2dBQUFRQlMvd3NEOHdVbUFDSUFVcklISXlRUkVqa0FzQUJGV0xBU0x4dXhFaGcrV2JBQVJWaXdCeThic1FjUVBsbXlBQU1LSzFnaDJCdjBXYkFIRUxBRDBMQUhFTEFLMExBU0VMQVYwTEFaMExBVkVMSWNBd29yV0NIWUcvUlpNREVsRmpZM053WUdCd2NqTnlZbUp5WVNOalkzTnpNSEZoWVZJelFtSnlZQ0J3Y0dGZ0hwWVowYnJCWFJvQzYxTDNlUkRnd3NlYnAzTGJVdGc1T3FjR0dZeGc0QkEzU0NBbk5oQVlhOUh1bnNIcnlOYndFTDBvVVY0dUVneTVWcWhBUUcvd0RrS282ZEFBQUIvL01BQUFTSkJjb0FId0Jyc2hFZ0lSRVNPUUN3QUVWWXNCSXZHN0VTSEQ1WnNBQkZXTEFGTHh1eEJSQStXYklkRWdVUkVqbXdIUyt5QUFFS0sxZ2gyQnYwV2JBRkVMSURBUW9yV0NIWUcvUlpzQWpRc0FBUXNBdlFzQjBRc0EzUXNoVVNCUkVTT2JBU0VMSVpBUW9yV0NIWUcvUlpNREVCQndZSEpRY2hOeGMyTnpjak56TTNOaVFYRmhZSEp6WW1KeVlHQndjaEJ3RzRIQlJZQXNzZC9CVWRRM0VkRzZBYm5COFpBUmJBcU1BSXV3ZGlaVzZhRUNBQk5oc0NidFNaWndPZG5BSXAzYzZkL2N6MkJnVFJzUUZxZWdRRXBJSDduUUFBQWdBUy8rVUZqUVR4QUIwQUxRQS9zaXN1THhFU09iQXJFTEFRMEFDd0FFVllzQUl2RzdFQ0VENVpzQkhRc0JFdnNBSVFzaUlCQ2l0WUlkZ2I5Rm13RVJDeUtnRUtLMWdoMkJ2MFdUQXhKUVluSmljSEp6Y21KeVlTTnljM0Z6WVhGaGMzRndjV0Z4WUNCeGNIQVFZV0ZoY1dOalkzTmlZbUp5WUdCZ1BrdTc3SGlKMXRueDRLRTFsb2RZMXlzN2E4aWE5dnJTQU1FbEZqYzQvODRnOUtuMngxMTVFUURrbWViSGJZa0c2R0JBUitpSkNHVlZlV0FTRjFuWCtVZWdRQ2Q1aVNrMWRaa1A3bWVKWi9Bbkp5MEhzRUJIN2VlM1BPZVFRRWZ0d0FBUUJUQUFBRkpBV3dBQllBYXdDd0FFVllzQll2RzdFV0hENVpzQUJGV0xBQkx4dXhBUncrV2JBQVJWaXdEQzhic1F3UVBsbXlEeE1ESzdJQURCWVJFam0wRHhNZkV3SmRzQk1Rc0FQUXNCTVFzaElDQ2l0WUlkZ2I5Rm13QnRDd0R4Q3dCOUN3RHhDeURnSUtLMWdoMkJ2MFdiQUswREF4QVFFekFTRUhJUWNoQnlFREl4TWhOeUUzSVRjaEFUTUNiZ0hWNGYzdUFTa1cvb3dkQVhVVy9vdzV2RGora1JZQmJoMytrUllCTnY3bnl3TVBBcUg5TUgybGZQNitBVUo4cFgwQzBBQUFBdi8zL3ZJQjJRV3dBQU1BQndBWUFMQUFMN0FBUlZpd0JpOGJzUVljUGxteUJRRURLekF4QXhNekF4TWpFek1KaXJhS3FMYUV0djd5QXhmODZRUElBdllBQXYvZC9nNEVvUVhHQURFQVB3QnpBTEFITDdBQVJWaXdJaThic1NJY1BsbXlGUWNpRVJJNXNCVVFzam9CQ2l0WUlkZ2I5Rm15QWhVNkVSSTVzQWNRc0F2UXNBY1FzZzhCQ2l0WUlkZ2I5Rm15TGlJSEVSSTVzQzRRc2pNQkNpdFlJZGdiOUZteUd6TXVFUkk1c0NJUXNDYlFzQ0lRc2lrQkNpdFlJZGdiOUZrd01RRUdCeFlIQmdRbkppWTNOd1lXRmhjV05qWTNOaVlrSnlZM05qY21OelkyTnpZWEZoWUhJelltSnlZR0J3WVdCQmNFSlNjR0J3WVhGZ1FYTmpjMkppY0VQeExUWncwTy91RGUyZklMdFFZL2dsaFRsRndKREd2KzYxRHlGQTdTWXcwSWhuZDdqYy9oRExRSWhIeUh0dzhMWUFFUFJ3RU4vaFNhcHhZT1N6SUJBa0d1Rmd0ZmR3RzN2MkJucWE3TUFnVG14d0ZWZmtVQkFqWmpSVTF2V1NaejdMaG5hcVpzclM4d0FnVGx4bjZXQkFKMWFWRnRWQjkwQnpRdmwyUTlLVkVaTkpOSmNDb0FBZ0RiQk80RFVnWEhBQXNBRndBZEFMQUpMN0lEQlFvcldDSFlHL1Jac0EvUXNBa1FzQlhRc0JVdk1ERVROalkzTmhZSEZBWUhCaVlsTmpZM05oWUhGQVlIQmliYkFUb3ZMejBCUEM4dk93R2hBVG92TUR3QlBDOHVQUVZaTGowQ0FUc3ZMandDQVRvdExqNENBVHN3THpzQ0FUb0FBQU1BWXYvcUJlMEZ5QUFiQUNrQU9nQ0NBTEFBUlZpd0xpOGJzUzRjUGxtd0FFVllzRGN2RzdFM0VENVpzZ00zTGhFU09iQURMN1FQQXg4REFsMnlDaTQzRVJJNXNBb3Z0QUFLRUFvQ1hiSU9DZ01SRWpteUVRSUtLMWdoMkJ2MFdiQURFTElaQWdvcldDSFlHL1Jac2hzRENoRVNPYkEzRUxJZkJBb3JXQ0hZRy9SWnNDNFFzaVlFQ2l0WUlkZ2I5Rmt3TVFFR0JpY21KamMzTmpZWEZoWUhKelltSnlZR0JoY1hGaFlYRmpjRkZnQVhGaVFTSnlZQUp5WUVBZ2MyRWlRWEZnUVNCd1lDQkNjakppUUNCRVVPdXBXUm9BNEtGTStkanBzR2p3WkZXbDkvSFFFQ0IwOUVxaVA5TFJZQkJMNjdBVTIzRkJiL0FNRzkvck8yV3hia0FWN0NzZ0VjamhVWDVQNm92QXEzL3VpT0FsV1hwd1FFMktkaXZkc0NCS09VQVZWaUFnS1IveDRqVFZvREI3OGF6Lzc1QWdUZkFYMit6UUVDQlFUZy9vZ214d0ZreXdRQ3hQNmx4TXYrbnNnQkJNUUJXd0FBQWdEREFyTURUZ1hIQUIwQUp3QmdBTEFBUlZpd0ZpOGJzUlljUGxteUF5Z1dFUkk1c0FNdnNBRFFzQUF2c2drREZoRVNPYkFKTDdBV0VMSVBBd29yV0NIWUcvUlpzaElKRmhFU09YeXdFaThZc0FNUXNoNERDaXRZSWRnYjlGbXdDUkN5SVFRS0sxZ2gyQnYwV1RBeEFTY0dJeUltTnpZMk14YzNOaWNtSnlZR0J5YzJOaGNXRmdjREJ3WVhKVEkzTnlNR0JnY0dGZ0oyQkZ4eWFYZ0VCYnFuYndrREFnZFZPRmNQbkF1d2czdUZDallFQVFqK3UwdGJIRjFZYUFnRk5nSy9TbFo3WVhOOEFUWWJHRThEQVRFNEMyMS9BZ1NWZlA2bE9pMHVla1NQQTBBM0t5NEEvLzhBV1FDWEE0NERzd0FtQVhyNi9nQUhBWG9CT3YvK0FBRUFnUUYzQThVRElBQUZBQm9Bc0FRdnNBSFFzQUV2c0FRUXNnSUJDaXRZSWRnYjlGa3dNUUVqRXlFM0lRTjd0aS85alIwREp3RjNBUWloQUFRQVlmL21CZTBGeUFBUEFCOEFPUUJDQUlRQXNBQkZXTEFFTHh1eEJCdytXYkFBUlZpd0RDOGJzUXdRUGxteUZBUUtLMWdoMkJ2MFdiQUVFTEljQkFvcldDSFlHL1Jac2lFTUJCRVNPYkFoTDdJakJBd1JFam13SXkrMEFDTVFJd0pkc2pvaEl4RVNPYkE2TDdJZ0Fnb3JXQ0hZRy9SWnNpb2dPaEVTT2JBaEVMQXkwTEF5TDdBakVMSkNBZ29yV0NIWUcvUlpNREVUTmhJa0Z4WUVFZ2NHQWdRbkppUUNOeDRDRnhZa0VpY3VBaWNtQkFJRkF5TVRCUllXQndZR0J4WVhCd1lYRndjakpqOENOaVluSnhjMk5qYzJKaWNqZGhia0FWN0Nyd0Via3hZWDV2Nmx3TFArNkpPRURJSE5mcnNCU3JvVERvSExmcm4rdHIwQnZUV0toUUVCaTVVSEEwUlJUUWtCQ3dJREFvb0dBZ2NHQnpCRWxJOUlaUWtLUVZtTUF0TEhBV1RMQkFLLy9xWEp6UDZkeWdRRXZ3RmVMb1BjZGdNRTNBRjh3NFhZZEFNRTF2NkRiLzZ1QTFFQkJZRnlPbUF1TEdFOVZ4OUFFU1VrU0RaQ1JRU0JBUUpGT2o4K0F3QUJBT01GSVFPd0JiQUFBd0FSQUxBQkw3SUNBd29yV0NIWUcvUlpNREVCSVRjaEE1bjlTaGNDdGdVaGp3QUFBZ0RvQTcwQzJBWEhBQXNBRndBdkFMQUFSVml3QXk4YnNRTWNQbG13RDlDd0R5K3lDUUlLSzFnaDJCdjBXYkFERUxJVkFnb3JXQ0hZRy9SWk1ERVROallYRmhZSEJnWW5KaVkzQmhZek1qWTNOaVlqSWdic0JLRm5ZWDhDQko5bVlvTjlCajB4TmxVR0JqZzBObGNFdDIraEFnS1ZaWENjQWdLUlp6RkpVRGd3VDFVQUFnQWxBQUFEL3dUekFBc0FEd0JHQUxBSkw3QUFSVml3RFM4YnNRMFFQbG13Q1JDd0FOQ3dDUkN5QmdFS0sxZ2gyQnYwV2JBRDBMQU5FTElPQVFvcldDSFlHL1Jac2dVT0JoRVNPYlFMQlJzRkFsMHdNUUVoQnlFREl4TWhOeUVUTXhNaE55RUNuZ0ZoR1A2Z1FhUkIvb29aQVhWQm8zSDgxUmdES3dOV2wvNWlBWjZYQVozN0RaZ0FBUUJjQXBzQzVnVy9BQmNBVGdDd0FFVllzQTh2RzdFUEhENVpzQUJGV0xBQUx4dXhBQlErV2JJWEFnb3JXQ0hZRy9SWnNBTFFzZ01YRHhFU09iQVBFTElJQWdvcldDSFlHL1Jac2dzUEFCRVNPYklVRnc4UkVqa3dNUUVoTndFMk56WW1KeVlHQndjMk5oY1dGZ2NHRHdJaEFxTDl1aFFCWTJNTUJ6VXdRbEFPbWd1dWdIaUxCUWlYUU1RQmV3S2JkQUVxVkVvd05nRUJTejRCZFpVQ0FuNW1lMzB6a1FBQUFRQnVBbzBDNndXOEFDUUFjUUN3QUVWWXNBMHZHN0VOSEQ1WnNBQkZXTEFYTHh1eEZ4UStXYklBRncwUkVqbDhzQUF2R0xiUUFPQUE4QUFEWGJBTkVMSUhBZ29yV0NIWUcvUlpzZ2tBRFJFU09iQUFFTElqQkFvcldDSFlHL1Jac2hJakFCRVNPYkliRncwUkVqbXdGeEN5SGdJS0sxZ2gyQnYwV1RBeEFSYzJOamMySmlNaUJ5TTJOak1XRmdjR0J4WUhCZ1luSmlZMU14UVdNekkyTnpZbkp3RlhUa0pkQndZK01uQWRuQXVmZlg2T0JRZVlkZ1FGdFlWM2xaZENPa0JiQncyTlZ3UmxBUUk5TmpFeFhXVjVBM1poZDBJcmdXK0JBZ0o4YkRJM1FEVm1CUUVBQUFFQTFRVFlBcVVGL2dBREFDTUFzQUl2c2c4Q0FWMndBTkN3QUMrMER3QWZBQUpkc0FJUXNBUFFHYkFETHhnd01RRXpBU01CditiK3pwNEYvdjdhQUFBQi8rWCtZQVFsQkRvQUV3QlpzZzBVRlJFU09RQ3dBRVZZc0FBdkc3RUFHRDVac0FCRldMQUlMeHV4Q0JnK1diQUFSVml3RVM4YnNSRVNQbG13QUVWWXNBNHZHN0VPRUQ1WnNBQkZXTEFMTHh1eEN4QStXYkFPRUxJRkFRb3JXQ0hZRy9SWk1ERUJBd1lYRmhjV054TXpBeU0zQmljaUp3TWpBUUdlWndvRENwSzNZWXUydktJVGI2S0hVRm0wQVFRRU92MlFWRHEzQXdhZEF5SDd4bk9LQWt2K0tnWGFBQUFCQUhzQUFBUEdCYkVBQ3dBa3NnQU1EUkVTT1FDd0FFVllzQW92RzdFS0hENVpzQUJGV0xBQUx4dXhBQkErV1RBeElSTW5KaVkzUGdJekJRTUNGRnRBMCtFVURwVHdrQUVWL0FJSUFRUC95WTdhZFFINlVBQUFBUUNsQW1nQmhRTk1BQXNBRHdDd0F5K3hDUW9yV05nYjNGa3dNUk0yTmpjMkZoVUdCZ2NHSnFVQlBUSXdRQUZBTVMxQkF0WXhRUUlDUGpJeFB3SUNPd0FBQWYvSS9rc0JFd0FBQUEwQU9RQ3dBRVZZc0FZdkc3RUdFajVac0FCRldMQU5MeHV4RFJBK1diSUJEUVlSRWptd0JoQ3lCd1lLSzFnaDJCdjBXYklNQmdFUkVqa3dNVE1IRmdjR0JnYzNOamMySnljM3B4V0JCQU91bGdTbUVBeG9MaTQzSFlabWNnTnNCbVZIREFhRkFBRUEzd0tpQW5BRnR3QUdBRUN5QVFjSUVSSTVBTEFBUlZpd0JTOGJzUVVjUGxtd0FFVllzQUF2RzdFQUZENVpzZ1FBQlJFU09iQUVMN0lEQWdvcldDSFlHL1Jac2dJREJSRVNPVEF4QVNNVEJ6Y2xNd0h0bW1qY0dBRmtGUUtpQWxVNGgzRUFBQUlBd0FLdEEzc0Z5UUFOQUJzQU13Q3dBRVZZc0FBdkc3RUFIRDVac2djY0FCRVNPYkFITDdJUkF3b3JXQ0hZRy9SWnNBQVFzaGdEQ2l0WUlkZ2I5Rmt3TVFFV0ZnY0hCZ1luSmlZM056WTJBd1lXRnhZMk56YzJKaWNtQmdjQ1RZMmhEUWNSMFphT29RMEhFZE5MQ2toTlQzQVBDUWhLU0ZKd0RnWEZCTVdaUjZiSkJBVElsa2FveVA1SVlITUNBM0pvVVdadEFnSjBaUC8vQUE4QW1BTldBN1VBSmdGN0RRQUFCd0Y3QVY4QUFQLy9BTGtBQUFVekJhMEFKd0hWQUU0Q21BQW5BWHdCRVFBSUFRY0IyQUxBQUFBQUVBQ3dBRVZZc0FVdkc3RUZIRDVaTURILy93QzBBQUFGZVFXdEFDY0JmQURtQUFnQUp3SFZBRWtDbUFFSEFkWURCZ0FBQUJBQXNBQkZXTEFKTHh1eENSdytXVEF4Ly84QW5nQUFCWXdGdlFBbkFYd0JqQUFJQUNjQjJBTVpBQUFCQndIWEFLTUNtd0FRQUxBQVJWaXdJQzhic1NBY1Bsa3dNUUFDLzlQK2VnTDJCRThBR0FBa0FFWUFzQkF2c0FCRldMQWlMeHV4SWhnK1diSWNCUW9yV0NIWUcvUlpzQURRc0FBdnNnTVFBQkVTT2JBUUVMSUpBUW9yV0NIWUcvUlpzQkFRc0F6UXNoWUFFQkVTT1RBeEFRWUdCd2NHQndZV0Z4WTJOemNHQmljbUpqYzJOemMyTnhNVUJnY0dKalUyTmpjMkZnSklERk5wWVhjTkRWNWRZb1VTdEJQMHNhMitEdysvZEZzWjlqc3ZNRHNCUEM0dVBRS3BiYUZrVzNOelluUUNBbkZlQWFmTEJBVEtwcmV2WmxXVkFVQXZQZ0lDUGkwdk93SUJPUUFDLzRRQUFBZDRCYkFBRHdBU0FIY0FzQUJGV0xBR0x4dXhCaHcrV2JBQVJWaXdBQzhic1FBUVBsbXdBRVZZc0FRdkc3RUVFRDVac2hFR0FCRVNPYkFSTDdJQ0FRb3JXQ0hZRy9SWnNBWVFzZ2dCQ2l0WUlkZ2I5Rm15Q3dBR0VSSTVzQXN2c2d3QkNpdFlJZGdiOUZtd0FCQ3lEZ0VLSzFnaDJCdjBXYklTQmdBUkVqa3dNU0VoRXlFQkl3RWhCeUVESVFjaEF5RUJJUk1HdC95bkwvM2svdnZvQkZJRG9odjlZajhDUGh2OXlVY0NyZnNlQWJSZ0FXSCtud1d3bVA0cGwvM3RBWGdDMGdBQUFRQW9BTTRFQWdSakFBc0FPQUN3QXkreUNRd0RFUkk1c0FrdnNnb0pBeEVTT2JJRUF3a1JFam15QVFvRUVSSTVzQU1Rc0FYUXNnY0VDaEVTT2JBSkVMQUwwREF4RXdFQk53RUJGd0VCQndFQktBRjcvdnVBQVFZQmVXWCtpQUVHZ1A3NS9vVUJVZ0ZQQVZCeS9ySUJUb1Arc1A2d2NnRlEvckFBQUFNQUlQK2tCWndGNndBWkFDTUFMUUJtc2d3dUx4RVNPYkFNRUxBZzBMQU1FTEFwMEFDd0FFVllzQTB2RzdFTkhENVpzQUJGV0xBQUx4dXhBQkErV2JJY0RRQVJFam15SmcwQUVSSTVzQ1lRc0IzUXNBMFFzaDhCQ2l0WUlkZ2I5Rm13SEJDd0o5Q3dBQkN5S1FFS0sxZ2gyQnYwV1RBeEJTWW5CeU0zSmpjMkVoSTJOaGNXRnpjekF4WVhGZ0lDQndZQkZoY0JKaWNtQWdjR0FUWW5BUllYRmhJVE5nSk9wblY4bDcxcUJRRXhkN0xpZjg2Qmc1YlFNUW9PVnVLZmNQNWdBaDhDeGsyY3R2d3NJZ01wQkF2OVRVcHl2LzBvRmhVRVVKdm9xK1poQVN3QkE3bGhBd1I2cGY4QWRIcXAva1Qrd1VJdkFmOXNVd09NYUFVRi91ejB3QUZIVGs3OGlqb0VCUUVtQVE2VEFBQUNBRGdBQUFSaUJiQUFEUUFXQUZxeUVCY1lFUkk1c0JBUXNBblFBTEFBUlZpd0FDOGJzUUFjUGxtd0FFVllzQXN2RzdFTEVENVpzZ0VBQ3hFU09iQUJMN0lLQ3dBUkVqbXdDaSt3QVJDeURnRUtLMWdoMkJ2MFdiQUtFTElQQVFvcldDSFlHL1JaTURFQkF4Y1dGZ2NPQWlNbEF5TVRFd01GTWpZM05pWW5BZXN6N3REc0R3dU43cEgrNlRlMi9XbGZBUUdMd2hFT2dYWUZzUDdiQVFIanZJTEZhd0greHdXdy9rUDkzZ0daZjNpT0JBQUJBQjcvNXdRWkJoVUFMQUJic2lBdExoRVNPUUN3QUVWWXNBWXZHN0VHSGo1WnNBQkZXTEFVTHh1eEZCQStXYkFBUlZpd0FDOGJzUUFRUGxteUN3WVVFUkk1c0JRUXNoa0JDaXRZSWRnYjlGbXlIeFFHRVJJNXNBWVFzaWtCQ2l0WUlkZ2I5Rmt3TVRNakV6NENGeFlXQndZR0J3WWVBZ2NHQmljbUp6Y1dGekkyTnpZdUFqYytBemMySmljbUJnZlR0YjRTZHJwNW42NE5DYUlNQ1RhU09nTUs2SzJ5Y2p0cWNXV0xDd2Mza3owR0JUaEJPUWdLVEZGcGlCVUVWNGJPYWdJRXNwUmY5RXczYkpSeFBLUzdCQUpKbVVzQ1kxWTVhNVozUHp0aFcxODZVbXdFQTVlUkFBQURBQlAvNkFaaEJGSUFMQUEzQUVFQXg3SUNRa01SRWptd0FoQ3dNZEN3QWhDd085QUFzQUJGV0xBY0x4dXhIQmcrV2JBQVJWaXdBQzhic1FBUVBsbXdBRVZZc0FVdkc3RUZFRDVac2dNY0FCRVNPYklMSEFBUkVqbXdDeSswdnd2UEN3SmRzQndRc2pnQkNpdFlJZGdiOUZtd0VOQ3lFd3NjRVJJNXNCd1FzQmZRc2hvY0FCRVNPYkk4SEFBUkVqbXdQQyswdnp6UFBBSmRzaUVCQ2l0WUlkZ2I5Rm13QUJDeUp3RUtLMWdoMkJ2MFdiSXFIQUFSRWptd0JSQ3lMUUVLSzFnaDJCdjBXYkFMRUxJeUFRb3JXQ0hZRy9SWk1ERUZKaVluQmlVbUpqYzJOak1YTnpZbUp5WUdCeWMyTmhjV0ZoYzJGeDRDQndjaEJoY1dGaGNXTmpjWEJpVVdOamMzSnlJR0J3WVdBU1lHQnlFM05pY21KZ1J3ZWJrenFmN3NrcWtLQ3Y3WjRnd01WbHBva0ErekVQeTZiYU1pb3NKL3Jrb1JFdjFDQ1FrTmdXaGFuVW8xaXZ3VlJwOUNLOHQ0cGd3SldnTzdicW8xQWdvR0NRY0xaaFFDWFZXNEJBS3RqYUMwQVZab2VRUUNhMVlUbDdBQ0FsZE5xUVFDZnQyS2RrUkFhMzBCQWp3dmlYaVZBa2s1N2dGeFcwcFhBelVEblo0Z056SlFYQUFBQWdCYy8rZ0VWQVlyQUJ3QUtBQlFzaFlwS2hFU09iQVdFTEFtMEFDd0RpK3dBRVZZc0Jndkc3RVlIajVac0FCRldMQUhMeHV4QnhBK1diSVFEZ2NSRWptd0RoQ3lId0VLSzFnaDJCdjBXYkFIRUxJbEFRb3JXQ0hZRy9SWk1ERUJFZ01IQmdJR0p5WUNOejRDRnhZWEppY0hKemNtSnpjV0Z6Y1hBeVluSmdZSEJoWVhGalkzQTU2eE1nMFluZUdDdk9BVERvcmVoSnB2Qkdydk84OW1za2JjbHRFNjV6aXFrTVFURDRCd2Y3WWZCUlArMmY2Tlc2Zis5b1VEQkFFVHlaRHppQVFFYjdhWmxHeCtWalNkT0lpQ2JmMDNmZ1VFeTZtTHV3TUYyOEFBQUFNQVJBQ3BCQzRFdlFBREFBNEFHUUE3QUxBQ0w3SUJEZ29yV0NIWUcvUlpzQUlRc1EwS0sxallHOXhac1FjS0sxallHOXhac0FFUXNSSUtLMWpZRzl4WnNSZ0tLMWpZRzl4Wk1ERUJJVGNoQVRRMk56WVdGUTRDSmdNMk5qYzJGaFVPQWlZRUR2dzJJUVBKL2VnOU1qQkFBVDlpUG8wQlBUSXdRQUZBWWowQ1dMZ0JOekZCQWdJK01qRStCRHo5QURGQkFnSStNakUrQkQwQUFBTUFPZjk2QkNvRXVBQVpBQ0VBS3dCbXNnd3NMUkVTT2JBTUVMQWYwTEFNRUxBbzBBQ3dBRVZZc0FBdkc3RUFHRDVac0FCRldMQU5MeHV4RFJBK1diSWNBQTBSRWpteUpBQU5FUkk1c0NRUXNCM1FzQUFRc2g4QkNpdFlJZGdiOUZtd0hCQ3dKZEN3RFJDeUp3RUtLMWdoMkJ2MFdUQXhBUllYTnhjSEZoY1dCd1lDQmljbUp3Y25OeVluSmpjM0VnQURCaGNCSmljbUFpVW1Kd0VXRnhZMk56WUNmbWRiWm9TUWJnY0NDQk9mOEk1WlhXYUVqWFlIQWdZQ0pBRTJzQW96QWNzM1FKM1JBbGNESC80NE1qbU15UjhOQkZBQ0s1VUJ6NExHTjFhYy92bUlBZ0lqbFFITmZNMDlQQkFCQndFei9XdUVXd0s2SFFJRS91MFRTa1g5VEJjQ0E5eTdYd0FBQXYvZy9tQUVCQVlBQUJFQUhRQmRzZ1FlSHhFU09iQUVFTEFjMEFDd0NTK3dBRVZZc0Ewdkc3RU5HRDVac0FCRldMQUhMeHV4QnhJK1diQUFSVml3QkM4YnNRUVFQbG15Q3cwSEVSSTVzQTBRc2hZQkNpdFlJZGdiOUZtd0JCQ3lHd0VLSzFnaDJCdjBXVEF4QVFZQ0JpY21Kd01qQVRNRE5oY1dGaGNXQnpjMEppY21Cd01XRnhZMkEvd1VqTXQ4dW1WaHRRRlR0R3FEdFo2dEF3RzZCWEJvb0hCYVBaMkp2UUlZcHY3MmdRTUVmUDMyQjZEOXlZa0VCT1M5UFQ1VWtad0NCSmo5K1k4RkE5c0FBZ0ExQUFBRndRV3dBQk1BRndCckFMQUFSVml3RHk4YnNROGNQbG13QUVWWXNBZ3ZHN0VJRUQ1WnNoUUlEeEVTT2JBVUw3SVFGQThSRWptd0VDK3dBTkN3RUJDeUZ3RUtLMWdoMkJ2MFdiQUQwTEFJRUxBRjBMQVVFTElIQVFvcldDSFlHL1Jac0JjUXNBclFzQkFRc0EzUXNBOFFzQkxRTURFQk13Y2pBeU1USVFNakV5TTNNeE16QXlFVE13RWhOeUVGUG9NWmdySzhkZjA2ZGIyeWdobUNNcjB6QXNZenZQd1JBc1VqL1RvRWpvNzhBQUtoL1Y4RUFJNEJJdjdlQVNMOWpzSUFBUUF1QUFBQm53UTZBQU1BSFFDd0FFVllzQUl2RzdFQ0dENVpzQUJGV0xBQkx4dXhBUkErV1RBeE15TVRNK08xdkxVRU9nQUFBUUF0QUFBRVZ3UTZBQXdBYUFDd0FFVllzQVF2RzdFRUdENVpzQUJGV0xBSUx4dXhDQmcrV2JBQVJWaXdBaThic1FJUVBsbXdBRVZZc0Fzdkc3RUxFRDVac0FJUXNBYlFzQVl2c3A4R0FWMjB2d2JQQmdKZHNpOEdBVjJ5L3dZQlhiSUJBUW9yV0NIWUcvUlpzZ29CQmhFU09UQXhBU01ESXhNekF6TUJNd0VCSXdHaGJsQzJ2TFpSVUFIUjZQM2xBWFRVQWMzK013UTYvallCeXYzcS9kd0FBUUFpQUFBRHNBV3dBQTBBV3dDd0FFVllzQXd2RzdFTUhENVpzQUJGV0xBR0x4dXhCaEErV2JJQkRBWVJFam13QVMrd0FOQ3dBUkN5QWdFS0sxZ2gyQnYwV2JBRDBMQUdFTElFQVFvcldDSFlHL1Jac0FNUXNBalFzQW5Rc0FBUXNBdlFzQXJRTURFQkpRY0ZBeUVISVJNSE56Y1RNd0dLQVE0WS92TmhBcDRjL0taeWloaUpkTDBEVDFPRVUvM1NuUUtOS1lRcEFwOEFBQUVBSXdBQUFqWUdBQUFMQUVvQXNBQkZXTEFLTHh1eENoNCtXYkFBUlZpd0JDOGJzUVFRUGxteUFRUUtFUkk1c0FFdnNBRFFzQUVRc2dJQkNpdFlJZGdiOUZtd0E5Q3dCdEN3QjlDd0FCQ3dDZEN3Q05Bd01RRTNCd2NESXhNSE56Y1RNd0dScFJpamdiWjFsaGVWZ0xVRGFqeURQZjBhQXA0Mmd6Y0MzZ0FBQVFBMS9rVUZZUVd3QUJNQVdySUdGQlVSRWprQXNBQkZXTEFBTHh1eEFCdytXYkFBUlZpd0VDOGJzUkFjUGxtd0FFVllzQVF2RzdFRUVqNVpzQUJGV0xBT0x4dXhEaEErV2JBRUVMSUpBUW9yV0NIWUcvUlpzZzBPRUJFU09iSVNEZ0FSRWprd01RRUJCZ1luSWljM0ZqTXlOemNCQXlNVE13RVRCV0grK1JuQmx6VkRIamdwaENVUi9nekd1L3kxQWZqRkJiRDUvYXk4QkJTWkViMWVCSEw3amdXdys1QUVjQUFCQUNUK1J3UHlCRklBR3dCYUFMQUFSVml3QUM4YnNRQVlQbG13QUVWWXNBTXZHN0VER0Q1WnNBQkZXTEFLTHh1eENoSStXYkFBUlZpd0dTOGJzUmtRUGxteUFSa0RFUkk1c0FvUXNnOEJDaXRZSWRnYjlGbXdBeEN5RmdFS0sxZ2gyQnYwV1RBeEFRYzJGeFlXQndNR0JpY2lKemNXTXpJM0V6WW5KaWNtQndNakV3R0JGb3kvbzVrVmZSYS9salZESHpVdWpDQjhCZ01PcEo5eGpyYThCRHVic2dRRTQ3MzgvYWE2QWhTY0VNVUMrVFl3b0FVRWlmelRCRG9BQWdCVS8rMEhaUVhIQUJZQUpBQ1JzaFVsSmhFU09iQVZFTEFhMEFDd0FFVllzQXN2RzdFTEhENVpzQUJGV0xBTkx4dXhEUncrV2JBQVJWaXdBQzhic1FBUVBsbXdBRVZZc0FNdkc3RURFRDVac0EwUXNnOEJDaXRZSWRnYjlGbXlFZzBBRVJJNXNCSXZzaE1CQ2l0WUlkZ2I5Rm13QUJDeUZRRUtLMWdoMkJ2MFdiQURFTElYQVFvcldDSFlHL1Jac0FzUXNod0JDaXRZSWRnYjlGa3dNU0VoQndjbUpnSTNFeElBSHdJaEJ5RURJUWNoQXlFRkZqY1RKaU1tQmdjREJoY1dGZ1p5L05UWlJaamJZUlV2S3dGWjgwclRBemtjL1VOUkFtUWMvWjFhQXNqN29FeUswV3hmcit3aEx3b0hDbzRTQVFTZUFSS2ZBU3NCRWdGS0FnSVRudjRzbmYzOEdBTU5CSkFSQXZQVS90Uk9Ub09YQUFNQVIvL21CdUlFVXdBaUFETUFQUUNoc2hrK1B4RVNPYkFaRUxBdDBMQVpFTEEzMEFDd0FFVllzQVV2RzdFRkdENVpzQUJGV0xBQUx4dXhBQmcrV2JBQVJWaXdHeThic1JzUVBsbXdBRVZZc0JZdkc3RVdFRDVac2dNRkZoRVNPYkk0QlJZUkVqbXdPQyt5Q2dFS0sxZ2gyQnYwV2JBV0VMSVFBUW9yV0NIWUcvUlpzaElGRmhFU09iSVpCUllSRWptd0d4Q3lLQUVLSzFnaDJCdjBXYkFGRUxJd0FRb3JXQ0hZRy9SWnNEVFFNREVCRmhZWE5oY2VBZ2NISVFZWEZoWVhGamNYQmdZbkppWW5CaWN1QWpjM0VnQURCaGNXRmhjV05qOENOQ1luSmdZSEFTWUdCd1UzTmljbUpnSitlYjRyc3RsOXNFb1JFLzFNQ0FZS2RXQ3NrRDFFeUhOOHZTeXI5SVc4VlJBQ0pBRXRuUWNFQlhObGlNTWFBZ1Z6Yll6QkZ3UlNaYVUzQWY0RkNBY05ad1JPQW5SajNRTUNmdHlJZWoxQWJJRURCbTkvUVVJQ0FuRmYyUVlDanZtVkVBRUZBVFQ5dHo1RWRZOERCZHk3RmxlUHBBUUY1N1VCbHdPYWx3RWNOVEZQV3dBQkFETUFBQU1LQmhvQURRQXJBTEFBUlZpd0JDOGJzUVFlUGxtd0FFVllzQTB2RzdFTkVENVpzQVFRc2drQkNpdFlJZGdiOUZrd01UTVROallYTWhjSEppY2lCZ2NETThzV3hwNHZZeUVzTEZkMUVjMEVxNnZFQWhhUERBSnZadnRVQUFJQVVmL3BCU29GeGdBYUFDUUFVUUN3QUVWWXNCSXZHN0VTSEQ1WnNBQkZXTEFBTHh1eEFCQStXYklGQUJJUkVqbXdCUyt3RWhDeURBRUtLMWdoMkJ2MFdiQUFFTEliQVFvcldDSFlHL1Jac0FVUXNoOEJDaXRZSWRnYjlGa3dNUVVtSmdJM053VTNOaWNtSmljbUJ5YzJOaGNXQkJJSEJ3WUNCQ2NXTmpjRkJ3WVhGaFlDVDY3dFl4b1VBOUFERlFrUHZaaW15aU5FMUlHNEFRRnhHZzRmenY3Zm5hWDdSL3pvQnc4S0VLUVVBcWdCTDc1OEF3eGpZSnk1QXdOV2tTODJBd0t6L3I3R1k4ait1S3FnQmZYeUFTTlpVSUdSQUFIL1NmNUdBeThHR2dBZEFIR3lFaDRmRVJJNUFMQUFSVml3RkM4YnNSUWVQbG13QUVWWXNBOHZHN0VQR0Q1WnNBQkZXTEFjTHh1eEhCZytXYkFBUlZpd0JTOGJzUVVTUGxtd0hCQ3lBQUVLSzFnaDJCdjBXYkFGRUxJS0FRb3JXQ0hZRy9SWnNBQVFzQTNRc0E3UXNCUVFzaGtCQ2l0WUlkZ2I5Rmt3TVFFakF3WUdKeVluTnhZek1qY1RJemN6TnpZMkZ6SVhCeVlqSWdjSE13S0R4SjBVdTVjMVBodzFLb2dnbmFZV3BnNFZ4cGd6WEIwM0tMUWREY1VEcS92OHA3b0NBaE9TRU00RC9vOXhyOEFDRlpVTTNXTUFBZ0JuLytrR0d3WTNBQmdBS0FCT0FMQUFSVml3Q2k4YnNRb2NQbG13QUVWWXNBQXZHN0VBRUQ1WnNnd0FDaEVTT2JBTUw3SVNBZ29yV0NIWUcvUlpzQW9Rc2h3QkNpdFlJZGdiOUZtd0FCQ3lKQUVLSzFnaDJCdjBXVEF4QlM0Q0p5WTNOaElrRnhZWE5qWTNOd0lGRmhjV0FnSUVBVFltSnlZQ0F3WUhCaFlYRmhJM05nSkFpOUJ6QmdVYklzVUJGYWZsaG1SekU2RWovdVFhQlFaTnVmN3dBVlFHbFpXKy9pWVRBUWFXbE1UOEloSVVBNFAxbkcybnp3RkJvQU1FbVFxRmdBSCt0a0pwYVpqK2NmN1hvQU9XeE5nRUJmN1ovdjUvU0wvakJBVUJMLzZEQUFBQ0FFTC81d1QvQkxBQUZnQWxBRTRBc0FCRldMQUFMeHV4QUJnK1diQUFSVml3RHk4YnNROFFQbG15QWc4QUVSSTVzQUl2c2drQ0NpdFlJZGdiOUZtd0R4Q3lHZ0VLSzFnaDJCdjBXYkFBRUxJaUFRb3JXQ0hZRy9SWk1ERUJGaGMyTmpjekJnWUhGaGNXQWdRbkxnSTNOellBQXhRV0Z4WTJOelluSmlZbkpnWUdBb0xFZVV0U0U1QVFlWFlTQkFxTy92U2xpTDlZRUFNaUFUU29lRzZOeVJzSEJBbDJabTZ1V3dSUEJJa09ZMzJVcENCTFM4ZitxYjBFQkk3NGxSWCtBVGI5WUl5aEJBWGp5VDlGZVkwRUJJLzRBQUVBWi8vb0Jwb0dBZ0FhQUVZQXNBQkZXTEFTTHh1eEVodytXYkFBUlZpd0RTOGJzUTBRUGxtd0VoQ3dHdEN5QVEwYUVSSTVzQUV2c2dnQ0NpdFlJZGdiOUZtd0RSQ3lGZ0VLSzFnaDJCdjBXVEF4QVFjMk5qYzNCZ1lIQXc0Q0p5WUNOeE16QXdZV0Z4WTJOeE1GSmg1dmR4T1pGOUxBY0JhZi81amE5QnFvdWFjUmk0eVYwQnlyQmJEWkRveVFBYzdXQy8yRGxPRjVBd1FCRDlnRDJ2d2xtNjRFQktxZEErVUFBUUJhLytnRlRnU1JBQnNBVXdDd0FFVllzQTB2RzdFTkdENVpzQUJGV0xBRkx4dXhCUkErV2JBQVJWaXdDQzhic1FnUVBsbXdEUkN3RnRDeUdCWUlFUkk1c0JndnNnTUNDaXRZSWRnYjlGbXdDQkN5RXdFS0sxZ2gyQnYwV1RBeEFRWUdCd01qTndZbkppWTNFek1EQmhjV0ZoY1dOeE16QnpZMk53Vk9EcUtsbHFzWGZjV2NseFYwdFhVRkF3Vk1STUZyaUxRWVcxY1VCSkdvbmdiOHUydURCQVRZdHdLNy9VSXNLa2hTQXdpbEF4U0dCMVNCQUFIL0NmNUdBYThFT2dBTUFDZ0FzQUJGV0xBTUx4dXhEQmcrV2JBQVJWaXdCQzhic1FRU1BsbXlDUUVLSzFnaDJCdjBXVEF4QVFNR0JpY21KemNXTXpJM0V3R3Z4aGErbURZK0hqVXFpaVRHQkRyN2JxYThBZ0lUa2hEVEJJZ0FBQUlBUHYvcEE5OEVUZ0FZQUNJQVVRQ3dBRVZZc0FBdkc3RUFHRDVac0FCRldMQUpMeHV4Q1JBK1diSU9BQWtSRWptd0RpK3dBQkN5RXdFS0sxZ2gyQnYwV2JBSkVMSVpBUW9yV0NIWUcvUlpzQTRRc2h3QkNpdFlJZGdiOUZrd01RRWVBZ2NIQmdJR0p5WUNOemNoTmljbUppY21CeWMyTndNV05qY2xCd1lYRmhZQ1I0YThWZzhFRVpYbGdzSEFHaElDc3dnR0NuUmdxWk05ZTlOT1pLVTMvZ01HQ0FnTGFRUk9Bb3oybFNTVy92K1JCQVlCQ05SNVBVQnRnUU1HYjM1M0MvdzJBNXFYQVJ3MU1VNWVBQUFCQVJjRTRnTmtCZ0FBQ0FBeEFMQUZMN0FCMExBQkw3RUFDaXRZMkJ2Y1diQUZFTEFIMExBSEw3UVBCeDhIQWwyd0E5Q3dBQkN3QnRDd0JpOHdNUUVWSnljSEJ6VUJNd05razNHd21RRVdhZ1R3RGdLcHFBTVFBUTRBQUFFQkpnVGpBNEFHQVFBSUFDQUFzQVF2c0FMUXNBSXZ0QThDSHdJQ1hiSUFCQUlSRWptd0I5Q3dCeTh3TVFFM054Y0JJd00xRndJdnNaOEIvdUp1enBZRlZxZ0REZjd2QVJBT0F2Ly9BT01GSVFPd0JiQUFCZ0J3QUFBQUFRRUhCTWNEVEFYWUFBd0FJZ0N3QXkreUR3TUJYYklKQkFvcldDSFlHL1Jac0FmUXNBY3ZzQURRc0FBdk1ERUJCZ1luSmlZM0Z3WVhGalkzQTB3TXE0Qjdrd0tUQjRGSFVnd0YxMzJUQkFLU2VRR1NCQUZWUVFBQUFRRU9CT3NCNHdYRkFBc0FFUUN3Q1MreUF3VUtLMWdoMkJ2MFdUQXhBVFEyTnpZV0ZRWUdCd1ltQVE0Nk1DNDlBVHN2TEQ0RlZDOCtBZ0k3TUM4OEFnSTVBQUFDQVFFRXN3S2tCbEVBQ3dBWEFDVUFzQWt2c0JYUXNCVXZzZ01JQ2l0WUlkZ2I5Rm13Q1JDeUR3Z0tLMWdoMkJ2MFdUQXhBVFkyTXpJV0ZRWUdJeUltTndZV016STJOelltSXlJR0FRTUNnVmxTY3dLQldWUnpZZ1EyS3k1UEJnWTRLaTVRQlhoYmZuUlZXWHh5VlM0L1J6SXVRa2tBQWYrdi9rOEJGZ0E1QUE4QUp3Q3dFQyt3QUVWWXNBb3ZHN0VLRWo1WnNnVURDaXRZSWRnYjlGbXdFQkN3RDlDd0R5OHdNUVVIQmdjR0Z4WTNGd1lqSWlZM05pVUJGa0Y2Q1FkQklFTUVSRk5PWHdJREFSWURMMXBaUHdJQkdua3JaVkt4Z2dBQUFRRGRCTm9EcmdYbkFCVUFQZ0N3QXkrd0NOQ3dDQyswRHdnZkNBSmRzQU1Rc0FyUXNBb3ZzQWdRc2c0RENpdFlJZGdiOUZtd0F4Q3lFd01LSzFnaDJCdjBXYkFPRUxBVjBEQXhBUVlHSXlJdUFnY0dCeWMyTmhjeUhnSTNNamNEcmd4NlhTVTlQRDRrVlI5NkRIMWRHeTlxTVJ0V0lBWGRiNFlmSmg0QkEyMEhib3dDRVVFU0FYRUFBZ0RDQk5BRHZnWC9BQU1BQndBN0FMQUNMN0FBMExBQUw3UVBBQjhBQWwyd0FoQ3dBOUFac0FNdkdMQUFFTEFGMExBRkw3QUNFTEFHMExBR0w3QURFTEFIMEJtd0J5OFlNREVCTXdFakF6TUJJd0xtMlA3R3N6VE4vdmVmQmYvKzBRRXYvdEVBQXYvcC9tb0JOZisyQUFzQUZ3QTVBTEFZTDdBRDBMQURMMEFMQUFNUUF5QURNQU5BQXdWZHNBL1FzQTh2c2drSENpdFlJZGdiOUZtd0F4Q3lGUWNLSzFnaDJCdjBXVEF4QnpRMk16SVdGUlFHSXlJbU53WVdNekkyTnpZbUl5SUdGMmhHUkZwalJrVmVWQVFvSUI4N0J3UW1IaVU2K1VsbVgwTkhZMWxHSHk4eEp5RXdPUUFCL1dvRTJQNi9CZjRBQXdBZUFMQUJMN0FBMEJtd0FDOFlzQUVRc0FMUXNBSXZ0QThDSHdJQ1hUQXhBU01ETS82L2pzZk1CTmdCSmdBQUFmM3JCTmovd2dYK0FBTUFIZ0N3QWkrd0FkQ3dBUyswRHdFZkFRSmRzQUlRc0FQUUdiQURMeGd3TVFFWEFTUCsyZW4reUo4Ri9nSCsyd0QvLy8wTEJOci8zQVhuQUFjQXBQd3VBQUFBQWYzMUJOai9OZ1p6QUEwQUpRQ3dEUyt3QjlDd0J5K3lEQTBIRVJJNXNnRUhEQkVTT2JJR0Jnb3JXQ0hZRy9SWk1ERUJOemMyTnpZak54WVdCd1lIQi8zMUZpbHJDZ3ViRDRLTUF3ZWlEQVRabVFRS1FrZHFBMkJSZ2gxSUFBTDgyd1RrLzRZRjdnQURBQWNBTndDd0FTK3dBTkFac0FBdkdMQUJFTEFGMExBRkw3QUcwTEFHTDdZUEJoOEdMd1lEWGJBRDBMQURMN0FBRUxBRTBCbXdCQzhZTURFQkl3TXpBU01ETS82S3RQdnFBY0dmd2RZRTVBRUsvdllCQ2dBQUFmeTcvcC85a1A5NUFBc0FFUUN3QXkreUNRVUtLMWdoMkJ2MFdUQXhCVFkyTnpZV0ZRWUdCd1ltL0xzQk9pOHVQUUU3THl3KytDOCtBZ0k3TUM4OEFnSTVBQUFCQVNFRTdnSkJCajhBQXdBZEFMQUNMN0FBMExBQUw3SVBBQUZkc2dNQ0FCRVNPUm13QXk4WU1ERUJNd01qQVpHd3JIUUdQLzZ2QUFNQTh3VHRBKzRHaUFBREFBNEFHUUE2QUxBTUw3QUMwTEFDTDdBQTBMQUFMN0FDRUxBRDBCbXdBeThZc0F3UXNnWUZDaXRZSWRnYjlGbXdEQkN3RmRDd0ZTK3dCaEN3R2RBd01RRXpBeU1GUGdJV0ZSUUdCd1ltSlRZV0ZRWUdCd1ltTmpZQ2lyNlJpdjdHQVRwZVBEd3ZMRDRDa0N3L0FUd3VMendDT2dhSS92Z29MejBFUEM0dlBBSUNPWjBDUEM4dlBBSUNPbDQrQVAvL0FLVUNhQUdGQTB3QUJnQjRBQUFBQVFCREFBQUVwUVd3QUFVQUt3Q3dBRVZZc0FRdkc3RUVIRDVac0FCRldMQUNMeHV4QWhBK1diQUVFTElBQVFvcldDSFlHL1JaTURFQklRTWpFeUVFaWYxWTRiMzlBMlVGRXZydUJiQUFBdit4QUFBRTNnV3dBQU1BQmdBdkFMQUFSVml3QUM4YnNRQWNQbG13QUVWWXNBSXZHN0VDRUQ1WnNnUUJDaXRZSWRnYjlGbXlCZ0lBRVJJNU1ERUJNd0VoSlNFREF3S25BVFg2MHdFakF6TFVCYkQ2VUowRUpnQUFBd0JwLytrRS9BWElBQU1BRmdBbkFGY0FzQUJGV0xBTkx4dXhEUncrV2JBQVJWaXdCQzhic1FRUVBsbXlBZ1FORVJJNWZMQUNMeGkwWUFKd0FnSmRzZ0VCQ2l0WUlkZ2I5Rm13RFJDeUd3RUtLMWdoMkJ2MFdiQUVFTElqQVFvcldDSFlHL1JaTURFQklUY2hBU1lDSnlZU056WWtGeFlTRnhZSEJ3WUNCQUUySmlZbkpnQURCZ2NHRmhjV0VoTTJBNi8rQ1JzQjkvNTQwL2NLQlRCQ1hRRXd2dFQyQ1FNS0RCL0MvdWNCVkFROGlHUEIvd0FrRUFFR2xwUzYreWtVQXBPWS9NRUVBUi8wWWdGQ2pNVFJCQVQrNC9kVVUxVFovcmFsQTVWN3YyVURCZjdPL3ZoMFE4RGhCQWNCR3dFQmZnQUIvOFFBQUFSeEJiQUFCZ0F4QUxBQVJWaXdBeThic1FNY1BsbXdBRVZZc0FFdkc3RUJFRDVac0FCRldMQUZMeHV4QlJBK1diSUFBd0VSRWprd01RRUJJd0V6QVNNQzdQMnAwUUwvcUFFR3dnU0grM2tGc1BwUUFBQURBQXdBQUFTR0JiQUFBd0FIQUFzQVR3Q3dBRVZZc0Fndkc3RUlIRDVac0FCRldMQUNMeHV4QWhBK1diSUFBUW9yV0NIWUcvUlpzQUlRc0FYUXNBVXZzaThGQVYyeUJnRUtLMWdoMkJ2MFdiQUlFTElLQVFvcldDSFlHL1JaTURFM0lRY2hFeUVISVJNaEJ5RW9BNDRjL0hMbEF0d2IvU000QTNrYy9JYWRuUU0vblFNT25nQUFBUUJFQUFBRmNBV3dBQWNBT0FDd0FFVllzQVl2RzdFR0hENVpzQUJGV0xBQUx4dXhBQkErV2JBQVJWaXdCQzhic1FRUVBsbXdCaEN5QWdFS0sxZ2gyQnYwV1RBeElTTVRJUU1qRXlFRWM3emgvVW5odlAwRUx3VVMrdTRGc0FBQUFmL2FBQUFFaVFXd0FBd0FQQUN3QUVWWXNBZ3ZHN0VJSEQ1WnNBQkZXTEFETHh1eEF4QStXYklCQVFvcldDSFlHL1Jac0FYUXNBZ1FzZ29CQ2l0WUlkZ2I5Rm13QjlBd01RRUJJUWNoTndFQk55RUhJUUVDOHYzMUF2RWMvQjRiQWpqK2toZ0RzaHo5TXdGVUF0RDl6WjJZQWtvQ1I0ZWUvZFlBQUFNQVZBQUFCWEFGc0FBSkFCTUFMQUJaQUxBQVJWaXdIaThic1I0Y1BsbXdBRVZZc0Nzdkc3RXJFRDVac2hRckhoRVNPYkFVTDdJQUFRb3JXQ0hZRy9SWnNoMGVLeEVTT2JBZEw3QWcwTElLQVFvcldDSFlHL1Jac0FIUXNBQVFzQXZRc0JRUXNDblFNREVCRXlNbUJnWUhCaFlYQVFNWEZqWTJOelltSndFR0ppWTNOaElrRnpNM0Z3Y3lGaFlIQmdJRUp5TUhJemNDTzVNQ1pMaUZEaFdRbkFGV2xBTml0NFFSRlpLYS9wcUY0bThQRDZzQkZaNE5KN29waXVKdkR4Q3QvdU9aQmlTK0pBRk9Bd3dSWDg5enBNMExBd3I4OVFFTlc4ZDdxTWtML0ZnQmp2bVVtd0VCa3dLNUFiaU8rWlNjL3Z5VEJxK3dBQUFCQUlZQUFBV2RCYkFBR1FCY3Nnb2FHeEVTT1FDd0FFVllzQVF2RzdFRUhENVpzQUJGV0xBUUx4dXhFQncrV2JBQVJWaXdHQzhic1JnY1BsbXdBRVZZc0Fzdkc3RUxFRDVac2hjRUN4RVNPYkFYTDdBQTBMQVhFTElNQVFvcldDSFlHL1Jac0FuUU1ERUJOalkzRXpNREJnQUhBeU1USmdJM0V6TURCaGNXRmhjVE13TC9uTTBkWEx4ZEsvN0Q3MFM5UmREWEcxaThXUWtIQ25ka3ByMENDQm5Ub3dJWi9kdnIvdUVYL3BZQmJCNEJOdUlDRHYzeFJVRnFqUmdEcEFBQkFBb0FBQVRhQmNjQUpnQlpzZ0FuS0JFU09RQ3dBRVZZc0Jvdkc3RWFIRDVac0FCRldMQVFMeHV4RUJBK1diQUFSVml3SlM4YnNTVVFQbG15SXdFS0sxZ2gyQnYwV2JBQTBMQWFFTElJQVFvcldDSFlHL1Jac0FBUXNBL1FzQ01Rc0JMUU1ERWxOaEkvQWpZbUp5WUdBaGNXRmhjSElUYzNBaE0zTmhJa0Z4NENGeFlDQndZSE53Y2hBbnVZeGlZUkNBT0tpS2ptU1FRRGFWOFovaUljMXFFcEZCNjFBUWllZjhaMENRYzlXVkIzMkJ6K0thRWhBUmozZVd1cXhBUUYrZjVKZnBXdkdLS2RBZ0VEQVRTRXRBRWhtQU1EZHQrTGFQNmNsb2RlQTUwQUFnQkkvK2NFTWdSVUFCZ0FKUUI1c2hVbUp4RVNPYkFWRUxBaTBBQ3dBRVZZc0JVdkc3RVZHRDVac0FCRldMQVlMeHV4R0JnK1diQUFSVml3RGk4YnNRNFFQbG13QUVWWXNBb3ZHN0VLRUQ1WnNnVUJDaXRZSWRnYjlGbXlEQlVLRVJJNXNoY1ZDaEVTT2JBT0VMSWRBUW9yV0NIWUcvUlpzQlVRc2lJQkNpdFlJZGdiOUZrd01RRURCaGNXRnpNM0Z3WW5KaWNHSnlZQ056YzJBQmNXRnpjQkJ3WVdGeFkzRXlZbkpnWUhCREtFQ0FRRktoRVFDalU5akJDS3dLKzFGd3NzQVFHNXdGZ3YvWDRGQTIxbXBIVk1PSnFNdGhvRU92enJPaDA0QWdPTElBRUVuNmtFQXdFYzUwdjVBUjhGQnAyTy9iTlJoSllDQTc0QndiTUhCZTNNQUFBQy8vRCtnQVJNQmNjQUV3QXBBR1d5R3lvckVSSTVzQnNRc0JQUUFMQU9MN0FBUlZpd0FDOGJzUUFjUGxtd0FFVllzQXN2RzdFTEVENVpzaFFBQ3hFU09iQVVMN0luQVFvcldDSFlHL1Jac2dVbkZCRVNPYkFBRUxJYUFRb3JXQ0hZRy9SWnNBc1FzaUVCQ2l0WUlkZ2I5Rmt3TVFFV0ZnY0dCeFlXQndZRUp5WW5BeU1UUGdJVE5qWTNOaVluSmdZSEF4WVdNeFkyTnpZbUp5YzNBdEtzemc0UjFsNWdDUkQrNXN1c2IxYTIrUkdMMkExNm1nc0thV0pzcVJPT0tZaEpnN29RRG1oaGx4c0Z4QVRYcHJ4eUxycDl5LzRFQkYzK05BV3hjcnBxL1pFQ2dXMWhnUVFDajIvOHd6czRBcWVGY1o4RkFaY0FBQUVBaFA1Z0JCb0VPZ0FJQURpeUFBa0tFUkk1QUxBQVJWaXdBUzhic1FFWVBsbXdBRVZZc0Fjdkc3RUhHRDVac0FCRldMQUVMeHV4QkJJK1diSUFCd1FSRWprd01RRUJNd0VESXhNRE13RytBWnpBL2RoUXRWVytzUUVXQXlUNzlQNHlBZXNEN3dBQUFnQkQvK2NFRXdZZ0FDQUFMd0Jpc2dJd01SRVNPYkFDRUxBbzBBQ3dBRVZZc0FNdkc3RURIajVac0FCRldMQVZMeHV4RlJBK1diQURFTElJQVFvcldDSFlHL1Jac2kwVkF4RVNPYkF0TDdJT0FRb3JXQ0hZRy9SWnNoMHREaEVTT2JBVkVMSW5BUW9yV0NIWUcvUlpNREVCTmpZWEZoY0hKZ2NpQmdjR0Z4Y1dFZ2NIQmdBbkxnSTNOelkyTnpjbUpnTUdGeFlYRmhjV05qYzJKaWNtQmdGUEIrS3FlcEFVZ241VmRRb1BqelcxcFJRRElmN1Uwb2U5Vmc0REY5bWpBMHhVUVFjRkMxY3dUWVhBSGc5N2JZZkVCTzJPcFFJQ042RS9BazVBWFVFWVMvN2x3aFgyL3QwRkJJandraGF6L1I4TkpZYjlYejVCakVNbEFnWE95b25pRHhMbkFBRUFLZi9uQStVRVRRQW9BSGl5SmlrcUVSSTVBTEFBUlZpd0dTOGJzUmtZUGxtd0FFVllzQTB2RzdFTkVENVpzaWNaRFJFU09YeXdKeThZc29BbkFWMjBRQ2RRSndKZHNnQUJDaXRZSWRnYjlGbXdEUkN5QmdFS0sxZ2gyQnYwV2JJS0dRMFJFam15RXdBbkVSSTVzaDBaRFJFU09iQVpFTEloQVFvcldDSFlHL1JaTURFQklnWUhCaFlYRmpZM053WUVKeVluSmpjMk55WW1OelkyTnpjV0ZnY25OaVluSWdZSEJoY1hCd0lGZkpVS0NYeHFhNmdSdFJEKzlNU0xhS1FLQ3VkQ1RRUUcycnd0cnRVRHNnSnpZMnlZREJQUTFCc0IzMTVaU2x3REFtdFhBWjY3QlFJMlZxMjRVaUowUTR1dENnRUZzSTBCUzEwRFcxR1NCZ0dVQUFFQWd2NkFCRHdGc0FBY0FEbXlFeDBlRVJJNUFMQU5MN0FVTDdBQVJWaXdBQzhic1FBY1BsbXlHZ0VLSzFnaDJCdjBXYkFCMExBVUVMSUlBUW9yV0NIWUcvUlpNREVCQndFSEJnY0dGaGNYRmdjR0J5YzNOamMySnljbUpqY1NBUUVoTndROEYvNHZLc1laQ2lsS3pZc0tDc1pjSWs0S0NGOXZpbjRRSEFGQ0FWYjluUnNGc0lIK0lDM1gwRXRwRzBVeWhKaVpXU1JVUkRvZ0lTdXJrQUVNQVVvQlRKZ0FBQUVBSlA1aEEvTUVVZ0FTQUZPeUNCTVVFUkk1QUxBQVJWaXdBeThic1FNWVBsbXdBRVZZc0FBdkc3RUFHRDVac0FCRldMQUhMeHV4QnhJK1diQUFSVml3RUM4YnNSQVFQbG15QVFNSEVSSTVzQU1Rc2cwQkNpdFlJZGdiOUZrd01RRUhOaGNXRmdjREl4TTJKeVluSmdjREl4TUJnaFdPdTZhWEZidTF1d1lFRGFXcGJvaTJ2QVE3aWFBRUJOUEIrNnNFVWpZdm5BTUVxZnp1QkRvQUF3QnovK1VFS3dYS0FCRUFHd0FrQUdheUdTVW1FUkk1c0JrUXNBRFFzQmtRc0NMUUFMQUFSVml3Q1M4YnNRa2NQbG13QUVWWXNBQXZHN0VBRUQ1WnNoSUFDUkVTT1h5d0VpOFlzQWtRc2hnQkNpdFlJZGdiOUZtd0VoQ3lIUUVLSzFnaDJCdjBXYkFBRUxJaUFRb3JXQ0hZRy9SWk1ERUZMZ0kzTmhJM05nVVdFZ2NHQndjQ0FBRWhOelluQWljbUJnY0ZJUVlYRmhZWEZoTUIzSG1sU3dRRFRtS1FBUU8ydUFZQ0NSd3ovdW4rbFFJWUNROENDN2lJcnlrQisvM3BGZ01EWkZyMFd4UURmdTJYY3dIZW4ra0dCUDcyN1V0RnQvNjEvcTRET3pseVNnRVJCd1RvOE5DQVpZeVRBd3dCa1FBQkFJWC85QUh1QkRvQURnQW9BTEFBUlZpd0FDOGJzUUFZUGxtd0FFVllzQW92RzdFS0VENVpzZ1VCQ2l0WUlkZ2I5Rmt3TVFFREJoY1dGekkzQndZbkppWTNFd0hNaUFNQ0JrOGlOQXhIUG14c0RJY0VPdnpYR2haS0F3cVlFZ0lDbUlRREpnQUIvN2YvOEFQQUJld0FHUUJOc2c0YUd4RVNPUUN3QUMrd0FFVllzQW92RzdFS0VENVpzQUJGV0xBUEx4dXhEeEErV2JBS0VMSUZBUW9yV0NIWUcvUlpzZzRBQ2hFU09iQUFFTElWQVFvcldDSFlHL1Jac0JmUU1ERUJNaGNURmhjek53Y0dCeUltSndNQkl3RW5KaVluSndjM05nR090aWppRkRrVEVnWWVLRkJpSUgzK1k5RUNOelFSS3lNWUdRd3dCZXl1KzZ0VEF3S2FDUUpXZFFKTy9QY0VFT0E2SndJQkFZNExBQUFCQUQvK2R3UVBCY2dBTGdCU3Noa3ZNQkVTT1FDd0dDK3dIaSt3QUVWWXNDd3ZHN0VzSEQ1WnNnSUJDaXRZSWRnYjlGbXlDU3dZRVJJNXNBa3ZzZ3NCQ2l0WUlkZ2I5Rm13SGhDeUVRRUtLMWdoMkJ2MFdiSWxDd2tSRWprd01RRW1JeUlHQndZV0Z4Y0hKeUlHQndZZUJBY0dCZ2NuTnpZM05pY21KeVlUTmpZM0ppWTNOamMyRnhZWEErVitXWXl6RFErUGxJc2JmOEhvRVF4eDlGay9Jd01GYVdCa096NElDbGluUlBVWERMdXZYV1lGQzZTUHhZTjdCUWdtYVZ0a2J3RUJtQUd2bTJ5Y1F5QXRSVE5JbkVsWFBVUS9PaGd0SVhRQkZvL1BPU3FWVnJWZVVRTUNKd0FCQUdELzlBU2tCRG9BRmdCY3NnMFhHQkVTT1FDd0FFVllzQlV2RzdFVkdENVpzQUJGV0xBTEx4dXhDeEErV2JBQVJWaXdFUzhic1JFUVBsbXdGUkN5QUFFS0sxZ2gyQnYwV2JBTEVMSUdBUW9yV0NIWUcvUlpzQUFRc0EvUXNCRFFzQlBRc0JUUU1ERUJJd01HRnhZekZqY0hCaWNtSmpjVElRTWpFeU0zSVFTSmwyOERBZ2RQSlM4SlFrSnRiUXhzL255aHRhR2tHd1FwQTZIOWNCb1dUQUlNbVJJQkFwaUZBbzM4WHdPaG1RQUFBdi9jL21BRCtRUlRBQk1BSUFCUXNnOGhJaEVTT2JBUEVMQVgwQUN3QUVWWXNBVXZHN0VGR0Q1WnNBQkZXTEFTTHh1eEVoSStXYkFBUlZpd0R5OGJzUThRUGxteUZnRUtLMWdoMkJ2MFdiQUZFTElkQVFvcldDSFlHL1JaTURFVE5qWTNOaGNlQWhjV0J3NENKeVluQXlNQkZoY1dOamMzTmlZbkpnWUhoaEZYUjRyR2M2VllBd0VKRTRISmdieGpZYllCTDBHWmliY1dDUWRrYlhxb0hnSkJjTWxKa0FVRGJNMS9QR0tZODRFQ0JIcjk5d0t6alFRRHphcHJvN0FFQXRTM0FBRUFUdjZKQStzRVV3QWhBRXF5R1NJakVSSTVBTEFUTDdBQVJWaXdBQzhic1FBWVBsbXdBRVZZc0Jrdkc3RVpFRDVac2dNQUV4RVNPYkFBRUxJSEFRb3JXQ0hZRy9SWnNCa1FzZzBCQ2l0WUlkZ2I5Rmt3TVFFV0ZnY25OaVluSmdZSEJ3SUZGeFlIQmdZSEp6YzJOelluSnlZQ056YzJFallDZTZ2RkNxb0hhR1dEdlJzRUhnRTBWcFVLQld0ZFhDbEhDUWRPTHMvSEV3UVJsdWNFVHdUWXJ3RnRnUVFGMjc0ZC92RmpIVGlJUjZCSFdpdExSejBYRERrQkI4VXJsZ0VBalFBQ0FFci81Z1N0QkRzQUVnQWhBRXl5SGlJakVSSTVzQjRRc0JIUUFMQUFSVml3RWk4YnNSSVlQbG13QUVWWXNBY3ZHN0VIRUQ1WnNCSVFzZ0VCQ2l0WUlkZ2I5Rm13QnhDeUZnRUtLMWdoMkJ2MFdiQUJFTEFlMERBeEFRVVdCd2NHQUNjdUFpY21OemMyQURNRkFSUVdGeFkyTnpZbkppWW5KZ1lHQkpMKzdaQVhBUjcrek0xdXJHWUpCUWNDSUFFcTJ3STEvRlZ6Ykl2Qkdna0ZDWFZqYXFaWUE2RURxZkFLN3Y3WkJnRm13SFpDUXhEekFTb0IvWHFQb0FRRjM3bGFQSENGQXdPQzZRQUFBUUNILyt3RUVBUTZBQkVBU2JJREVoTVJFamtBc0FCRldMQVFMeHV4RUJnK1diQUFSVml3Q2k4YnNRb1FQbG13RUJDeUFBRUtLMWdoMkJ2MFdiQUtFTElGQVFvcldDSFlHL1Jac0FBUXNBN1FzQS9RTURFQklRTUhGRE15TnhjR0p5WW1OeE1oTnlFRDl2NlljQUZJSVRzZVQxMXNadzFyL3E4YkEyNERwUDFvTFZRWGhESUJBcGFTQW8yV0FBRUFaLy9sQS9vRVBBQVZBRHl5QmhZWEVSSTVBTEFBUlZpd0FDOGJzUUFZUGxtd0FFVllzQXN2RzdFTEdENVpzQUJGV0xBUkx4dXhFUkErV2JJRkFRb3JXQ0hZRy9SWk1ERUJBd2NVRmhjV0VnTW5KaWNYRmhjU0FDVW1KamNUQWFGdEJVcEhwTnNIQWdvaXRpWUZELzdHL3Y2dnFCZHRCRHI5YlYxZGFnSUdBWFVCRmphRGZRSjlndjU3L2k4R0JQRE5BbzRBQUFJQVFmNGlCVGdFUGdBYUFDTUFYN0lZSkNVUkVqbXdHQkN3RzlBQXNCa3ZzQUJGV0xBUkx4dXhFUmcrV2JBQVJWaXdCaThic1FZWVBsbXdBRVZZc0FBdkc3RUFFRDVac2cwQkNpdFlJZGdiOUZtd0FCQ3dHTkN3RFJDd0c5Q3dFUkN5SVFFS0sxZ2gyQnYwV1RBeEJTWUNOellTTnhjR0FoY1dGaGNUTmpZWEhnSUhCZ0FGQXlNQk5oSW5KaVlIQmdjQ0F1RGhIUlNsamxhQmV4TU9obTE3RFpKdWZzSmREaHYrclA3OFZiVUJJOEh0QmdkNFl6d1NEeDBCT2Vhb0FReGFpR3IrMklSc2tSZ0N6MmVBQWdLVStJZjEvdElWL2pNQ1l4OEJGTDZPcGdnRVFRQUFBUUJQL2lnRlR3UThBQjBBUkxJZEhoOFJFamtBc0E4dnNBQkZXTEFXTHh1eEZoZytXYkFBUlZpd0VTOGJzUkVRUGxteUhBRUtLMWdoMkJ2MFdiQUIwTEFXRUxBZDBMQUgwTEFSRUxBTzBEQXhBUU0yRWdNbkppY1hGaGNTQlFZSEF5TVRKZ0kzRXpNREJoY1dGaGNUQTJ1bDF1OEpBd3dsdFNjSUhmNzRwUEpVdFZYZTBDRlN0VklLQkFWNWNLa0VPdnhMSlFGQ0FSVStnbnNDZTRIK0pkcUhFLzQ1QWNzZkFVYjhBZWIrRjB4SmU1OFpBN0VBQUFFQVp2L2tCZndFUEFBcUFGcXlJU3NzRVJJNUFMQUFSVml3QUM4YnNRQVlQbG13QUVWWXNCZ3ZHN0VZR0Q1WnNBQkZXTEFmTHh1eEh4QStXYkFBUlZpd0pDOGJzU1FRUGxteUNBRUtLMWdoMkJ2MFdiSU1Id0FSRWptd0V0Q3lJZ2dmRVJJNU1ERUJCd1lDQnhVVUZoY1dFeE16QXdZSEJoWVhGaE0ySnlZbkZ4WVhGZ0lHSnlZbUp3WW5MZ0kzRWhNQ0NVaExXd0pQU3RNOE03WXZCZ0VDVWxDMVREUVVEUzIzTHdvUmIrQ2JiSmdVZmQ5bmtFRURCZGNFT1grRC92cWZDbitGQXcwQlR3RS8vdFF2T210L0FnY0JLTXpPZzMwQ2ZJTGEvbDdaQkFLQmJQWUhBM0RTZ0FGZUFTd0FBQUlBVWYvbkJHMEZ5d0FrQUM4QWE3SW1NREVSRWptd0poQ3dGTkFBc0FCRldMQWVMeHV4SGh3K1diQUFSVml3Qnk4YnNRY1FQbG15S0I0SEVSSTVzQ2d2c2hjQkNpdFlJZGdiOUZtd0F0Q3lEUjRIRVJJNXNBY1FzaE1CQ2l0WUlkZ2I5Rm13S0JDd0l0Q3dIaEN5TEFFS0sxZ2gyQnYwV1RBeEFRWUhCd1lIQmljdUFqY1ROd01HRnhZV0Z4WTJOemNtQWpjM05qWVhGaFlIQXpZM0FRWVdGeE0zSmljbUJnY0VaelJnSHllQ2dMaDZ0RlFQTnJZMkJ3Y0xhVlYzbHhZZXdOSU9BZzdNbFpHWEVqdE9OdjNrQ201K093UUViMGhiQ2dKeUVnMjMwbk53QlFOMTBIOEJUZ0wrcnpnMVZtUURBNTJRcVNZQkZNVVFtc2NFQk02ay9wNExEZ0ZRZ0xrbEFWaElqUUlDYVZrQUFBRUFad0FBQk5nRndRQWFBRW15QUJzY0VSSTVBTEFBUlZpd0JDOGJzUVFjUGxtd0FFVllzQmN2RzdFWEhENVpzQUJGV0xBTkx4dXhEUkErV2JJQUJBMFJFam13QkJDeUNRRUtLMWdoMkJ2MFdiQVMwREF4QVFFMk5oY3lGd2NtSXlZSEFRTWpFd01tSnlZSEp6WXpGaFlYQWkwQkxUWjVUMEJBTHgwVlFqYithbUc2WmEwYU93OG1GVFkrUzJRZ0F3Z0IrMlpZQWh5WENRSlQvV3Y5MFFKSUFudEpBd0VJbVJrQ1YyQUFBQUlBWnYva0JrUUVPZ0FXQUN3QWFySUpMUzRSRWptd0NSQ3dKOUFBc0FCRldMQVZMeHV4RlJnK1diQUFSVml3Qnk4YnNRY1FQbG13QUVWWXNBd3ZHN0VNRUQ1WnNCVVFzZ0FCQ2l0WUlkZ2I5Rm15Q2hVSEVSSTVzQlRRc0JuUXNBY1FzaWtCQ2l0WUlkZ2I5Rm13SU5DeUpCa0hFUkk1TURFQkl4WVZGQUlHSnlZbUp3WW5MZ0kzTmpZM0J6Y2hBU1luSlFZR0J3WVdGeFlUTnpNSEJ3WVdGeFlUTmdZbmdBZHl3NFZ2bHhKKzNXR0NPQVlIUkVCMUhBV20vck1EQy96VFVFa0hCVDFDMlRnbXR5Y0dCMUpXcVR3ZEE2RmNXdEQraHJvRUFvTnI5d2NEY3R0OWxlZHZBcG4rc2xwYkFZdnFtbitPQlE0QmFQZjhSWVNMQWdRQlRxRUFBUUNoLy9JRmVnV3dBQmtBWVFDd0FFVllzQmd2RzdFWUhENVpzQUJGV0xBVUx4dXhGQkErV2JBQVJWaXdDaThic1FvUVBsbXdHQkN5RndFS0sxZ2gyQnYwV2JBQjBMSUVGQmdSRWptd0JDK3dDaEN5Q3dFS0sxZ2gyQnYwV2JBRUVMSVJBUW9yV0NIWUcvUlpNREVCSVFNMkZ4WVdCd1lFQnpjMk5qYzJKaWNtQndNakV5RTNJUVRxL2dkV28zYlc4QkVTL3Q3ekM1ZTVEdzZKaFh5bmVyemgvbTBjQkVrRkV2NDRNZ01DOGM3VTdnU1lBcDZQaHBFQ0F5NzlXUVVTbmdBQkFIai81Z1QvQmNjQUpBQnFBTEFBUlZpd0RTOGJzUTBjUGxtd0FFVllzQU12RzdFREVENVpzQTBRc1JFS0sxallHOXhac0EwUXNoUUJDaXRZSWRnYjlGbXdBeEN3R05Dd0dDK3lMeGdCWGJJWkFRb3JXQ0hZRy9SWnNBTVFzaUVCQ2l0WUlkZ2I5Rm13QXhDeEpBb3JXTmdiM0Zrd01RRUdBQ2N1QWljbUVoSTNOaGNXRWhjakppWW5KZ1lESVFjbEJ3WUhCaFlXRnhZMk53U1hLdjY3NDRmSmNRWUdUZWFvYlh2TjhBZTZCNHFCcnZZN0FqQWMvZDBDREFNR1FZSmNtc2N6QWREaS92Z0dBMy91a25BQnVBRkZRU3NEQlA3LzVLaWhBd1g4L3YyZEJRbzBPbTYvWkFNRm5hd0FBdi9NQUFBSDhnV3dBQmdBSVFCdXNob2lJeEVTT2JBYUVMQUswQUN3QUVWWXNBQXZHN0VBSEQ1WnNBQkZXTEFJTHh1eENCQStXYkFBUlZpd0VDOGJzUkFRUGxteUFnQUlFUkk1c0FJdnNBQVFzZ29CQ2l0WUlkZ2I5Rm13RUJDeUVnRUtLMWdoMkJ2MFdiQWIwTEFDRUxJaEFRb3JXQ0hZRy9SWk1ERUJBd1VXRmdjR0JDTWhFeUVEQndJQ0J5TTNOelkyRXpjVEFRTUZNalkzTmlZbkJWNWpBVWpNNHhFVC90YmsvZVhpL2hGNEh6N3d1MHdTSm9Tb0t4V1BBdUZrQVVxTXdoSVBmM2NGc1AzTEFRYnd3TTMzQlJMOTFKbit6djdwQkp3QkJ1Z0JCSGNDcXYwdC9jQUJwWWQ4bEFRQUFnQkRBQUFIL2dXd0FCSUFHd0NDc2dFY0hSRVNPYkFCRUxBVDBBQ3dBRVZZc0JJdkc3RVNIRDVac0FCRldMQUNMeHV4QWh3K1diQUFSVml3RHk4YnNROFFQbG13QUVWWXNBd3ZHN0VNRUQ1WnNnQUNEeEVTT2JBQUw3SUVEQUlSRWptd0JDK3dBQkN5RGdFS0sxZ2gyQnYwV2JBRUVMSVRBUW9yV0NIWUcvUlpzQXdRc2hRQkNpdFlJZGdiOUZrd01RRWhFek1EQlJZV0J3WUVJeUVUSVFNakV6TUJBd1V5TmpjMkppY0Jqd0szYnJ0cUFUZlI4UThSL3Rqbi9laDAvVWwwdmYyOEF1NWJBVW1Md0JFUGZYMERPUUozL1o0QkFkMjd4KzBDblAxa0JiRDlBZjMxQVpOL2JvY0VBQUVBdEFBQUJhSUZzQUFYQUZleUF4Z1pFUkk1QUxBQVJWaXdGaThic1JZY1BsbXdBRVZZc0Fndkc3RUlFRDVac0FCRldMQVNMeHV4RWhBK1diQVdFTElWQVFvcldDSFlHL1Jac0FIUXNnUUlGaEVTT2JBRUw3SVBBUW9yV0NIWUcvUlpNREVCSVFNMkZ4WVdCd01qRXpZbkppWW5KZ2NESXhNaE55RUUvUDRBVVp5cDM5TVhTNzFNQ0FnTWIydU13Mys4NHY1ekhBUklCUkwrVHlrQ0JPdlMvamtCeUVVMlVWTURBeXI5UFFVU25nQUJBRUwrbVFWdUJiQUFDd0JJQUxBSkw3QUFSVml3QUM4YnNRQWNQbG13QUVWWXNBUXZHN0VFSEQ1WnNBQkZXTEFHTHh1eEJoQStXYkFBUlZpd0NpOGJzUW9RUGxteUFnRUtLMWdoMkJ2MFdiQUQwREF4QVRNRElSTXpBeUVESXhNaEFUKzg0UUszNHJ2OS9rNCt2VC8rUHdXdyt1MEZFL3BRL3BrQlp3QUNBRFFBQUFTV0JiQUFEQUFWQUZ1eUR4WVhFUkk1c0E4UXNBUFFBTEFBUlZpd0N5OGJzUXNjUGxtd0FFVllzQWt2RzdFSkVENVpzQXNRc2dBQkNpdFlJZGdiOUZteUFnc0pFUkk1c0FJdnNnMEJDaXRZSWRnYjlGbXdDUkN5RGdFS0sxZ2gyQnYwV1RBeEFTRURCUllXQndZRUl5RVRJUUVEQlRJMk56WW1Kd1I2L1ZoTEFUYlk3QkVRL3RqcC9lWDlBMlg4MW1BQlNvM0FFUTU4ZkFVUy9rd0JBZUsveC9RRnNQMFEvZDBCbm9OMmlBUUFBQUwvaS82YUJYb0ZzQUFPQUJVQVZiSVNGaGNSRWptd0VoQ3dDOUFBc0FRdnNBQkZXTEFMTHh1eEN4dytXYkFBUlZpd0FpOGJzUUlRUGxtd0JCQ3dBZEN3QWhDeUJ3RUtLMWdoMkJ2MFdiQVAwTEFOMExBTEVMSVJBUW9yV0NIWUcvUlpNREVCSXhNaEF5TVRGellUTnhNaEF6TUZKUk1oQXdjQ0JQYTdQdndNUDd0WmE4OWxGSlFEVCtLNSs5Z0NzOGIrSkc0ZFhmNmJBV1grbWdJREFxa0JmazRDb1BydEF3TUVkZjRMY3Y2cEFBQUIvNndBQUFkMUJiQUFGUUNHQUxBQVJWaXdDUzhic1FrY1BsbXdBRVZZc0Ewdkc3RU5IRDVac0FCRldMQVJMeHV4RVJ3K1diQUFSVml3QWk4YnNRSVFQbG13QUVWWXNBWXZHN0VHRUQ1WnNBQkZXTEFVTHh1eEZCQStXYkFDRUxBUTBMQVFMN0l2RUFGZHNzOFFBVjJ5QUFFS0sxZ2gyQnYwV2JBRTBMSUlFQUFSRWptd0VCQ3dDOUN5RXdBUUVSSTVNREVCSXdNakV5TUJJd0VCTXdFekV6TURNd0V6QVFFakJKV2NjN3gwbWYzOTlnSm8vc1hSQVFxbGJydHVrZ0htNmYzSkFWTGNBcGo5YUFLWS9XZ0RDZ0ttL1lnQ2VQMklBbmo5Ui8wSkFBRUFKZi9xQkpnRnh3QXFBR0FBc0FCRldMQU5MeHV4RFJ3K1diQUFSVml3R1M4YnNSa1FQbG13RFJDeUJnRUtLMWdoMkJ2MFdiQU5FTEFLMExBWkVMQXEwTEFxTDdJcEFRb3JXQ0hZRy9SWnNoSXBLaEVTT2JBWkVMQWQwTEFaRUxJZ0FRb3JXQ0hZRy9SWk1ERUJNalkzTmlZbkpnWUhCellrRnhZV0J3WUZGaFlIQmdZRUp5WW1OeGNHRmhjV05qYzJOelltSnljM0FtMlV2UTRObFlCK3V4UzZFZ0VzMHR2d0VCSCs5V2RmQ0F1WC92bVowUE1KdWdpVWZFV0dObTRRRG9LVXJSd0ROSVY0YzRJQ0FvbHZBYmJnQWdYZHRkUjBMYXh2aE1WckFnVG92UUYxa3dRQ0pDVk1mM1dDQlFHZUFBQUJBRU1BQUFWdUJiQUFDUUJkQUxBQVJWaXdBQzhic1FBY1BsbXdBRVZZc0Fjdkc3RUhIRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3QlM4YnNRVVFQbG15QkFBQ0VSSTVRQW1LQkpvRXFnUzZCQVJkc2drQUFoRVNPVUFKaFFtVkNhVUp0UWtFWFRBeEFUTURJeE1CSXhNekF3U3N3djI3d2Z5UHcvMjh3UVd3K2xBRVZ2dXFCYkQ3cWdBQUFmL0tBQUFGWlFXd0FCQUFUYklFRVJJUkVqa0FzQUJGV0xBQUx4dXhBQncrV2JBQVJWaXdBUzhic1FFUVBsbXdBRVZZc0Fndkc3RUlFRDVac0FBUXNnTUJDaXRZSWRnYjlGbXdDQkN5Q2dFS0sxZ2gyQnYwV1RBeEFRTWpFeUVEQWdZSEl6YzNOalkzTnhNRlpmeTg0ZjRJcDBIaXExY1NKSWVtS3hhUEJiRDZVQVVTL1BiKzgvVUduUUVJNVA5OUFxb0FBQUVBay8vbUJVQUZzQUFRQUR5eUF4RVNFUkk1QUxBQVJWaXdBUzhic1FFY1BsbXdBRVZZc0JBdkc3RVFIRDVac0FCRldMQUdMeHV4QmhBK1diSUtBUW9yV0NIWUcvUlpNREVCQVRNQkJnWW5KaWMzRnpJL0FnRXpBb1lCMk9MOVBWRzBland2RmxsalJTUTYvdHZKQW1RRFRQdENrM2tDQWdtWUJtTTRaZ1FxQUFBREFGdi94QVhmQmV3QUdBQWhBQ29BYXJJZUt5d1JFam13SGhDd0M5Q3dIaEN3STlBQXNCY3ZzaFlYS3hFU09iQVdMN0FBMExBQUw3SU5LeGNSRWptd0RTK3dDdEN3Q2krd0RSQ3dETkN3REMrd0RSQ3lIUUVLSzFnaDJCdjBXYkFXRUxJZkFRb3JXQ0hZRy9SWnNCMFFzQ1BRc0I4UXNDclFNREVCRnhZV0VnY0dBZ1FuSXdjak55SW1BamMyRWlRM016Y3pBUVlXRnhjVEl3WUVKUU16TmlRM05pWW5BOWdVbU9weEVCSzYvdHVuSUNlMktLanNjeEFRc3dFY29qWXFzUDBpRjV1aUxwOGV2UDcvQXBLZUhib0JBUmtXcEtjRkhRRURsLzczbktqKzY1a0J4TVdXQVF5Z293RVFuQVRPL04rNDVRd0NBMmtEOXZmOGx3UDB5TC9rQndBQUFRQkIvcUVGYlFXd0FBc0FPd0N3Q1Mrd0FFVllzQUF2RzdFQUhENVpzQUJGV0xBRUx4dXhCQncrV2JBQVJWaXdDaThic1FvUVBsbXlBZ0VLSzFnaDJCdjBXYkFHMERBeEFUTURJUk16QXpNREl4TWhBVDY4NFFLMzRydmhsV3FxUHZ2MkJiRDY3UVVUK3ZIK0FBRmZBQUVBemdBQUJVUUZzQUFTQUVpeUR4TVVFUkk1QUxBQVJWaXdFaThic1JJY1BsbXdBRVZZc0Fvdkc3RUtIRDVac0FCRldMQUJMeHV4QVJBK1diSVBBUW9SRWpsOHNBOHZHTElGQVFvcldDSFlHL1JaTURFQkF5TVRCaWNtSmpjVE13TUdGeFlYRmpjVEJVVDl2Ryt4eWR6V0YweThTd2dJR00raDRIMEZzUHBRQWx3M0FnTHIxUUhIL2poRk5hVURBellDdHdBQkFFSUFBQWM0QmJBQUN3QklBTEFBUlZpd0FDOGJzUUFjUGxtd0FFVllzQU12RzdFREhENVpzQUJGV0xBSEx4dXhCeHcrV2JBQVJWaXdDUzhic1FrUVBsbXlBUUVLSzFnaDJCdjBXYkFGMExBRzBEQXhBUU1oRXpNRElSTXpBeUVUQWZ2aEFlWGh1K0lCNHVHOC9mb0gvUVd3K3UwRkUvcnRCUlA2VUFXd0FBRUFRdjZoQnpnRnNBQVBBRlFBc0FzdnNBQkZXTEFBTHh1eEFCdytXYkFBUlZpd0F5OGJzUU1jUGxtd0FFVllzQWN2RzdFSEhENVpzQUJGV0xBTkx4dXhEUkErV2JJQkFRb3JXQ0hZRy9SWnNBWFFzQWJRc0FuUXNBclFzQUxRTURFQkF5RVRNd01oRXpNRE13TWpFeUVUQWZ2aEFlWGh1K0lCNHVHODRvOXBvajM2Sy8wRnNQcnRCUlA2N1FVVCt1ZitDZ0ZmQmJBQUFnQ0pBQUFGZ0FXd0FBd0FGUUJlc2dFV0Z4RVNPYkFCRUxBTjBBQ3dBRVZZc0FBdkc3RUFIRDVac0FCRldMQUpMeHV4Q1JBK1diSUNBQWtSRWptd0FpK3dBQkN5Q3dFS0sxZ2gyQnYwV2JBQ0VMSU5BUW9yV0NIWUcvUlpzQWtRc2c0QkNpdFlJZGdiOUZrd01STWhBd1VXRmdjR0JDTWhFeUVCQXdVeU5qYzJKaWVrQWtwbkFUYmE2UkVSL3Ruby9lYmkvbklCNDJBQlNvMi9FUTU4ZXdXdy9hNEJBZVc5eWZFRkdQMm8vZDBCbm9OMmlBUUFBQU1BUlFBQUJwWUZzQUFLQUJNQUZ3QnRzaElZR1JFU09iQVNFTEFHMExBU0VMQVYwQUN3QUVWWXNBa3ZHN0VKSEQ1WnNBQkZXTEFXTHh1eEZodytXYkFBUlZpd0J5OGJzUWNRUGxtd0FFVllzQlF2RzdFVUVENVpzZ0FKQnhFU09iQUFMN0lMQVFvcldDSFlHL1Jac0FjUXNnd0JDaXRZSWRnYjlGa3dNUUVGRmhZSEJnUWpJUk16QXdNRk1qWTNOaVluQVNNVE13R1dBVGJZN0JFUS90anAvZWY4dklKZ0FVcU53QkVPZkh3Q3dMdjl1d05lQVFIaXY4ZjBCYkQ5RVAzZEFaNkRkb2dFL1VFRnNBQUFBZ0EyQUFBRWdRV3dBQW9BRXdCTnNnMFVGUkVTT2JBTkVMQUIwQUN3QUVWWXNBa3ZHN0VKSEQ1WnNBQkZXTEFITHh1eEJ4QStXYklBQ1FjUkVqbXdBQyt5Q3dFS0sxZ2gyQnYwV2JBSEVMSU1BUW9yV0NIWUcvUlpNREVCQlJZV0J3WUVJeUVUTXdNREJUSTJOelltSndHSEFUYlk3QkVRL3RqcC9lZjh2SUpnQVVxTndCRU9mSHdEWGdFQjRyL0g5QVd3L1JEOTNRR2VnM2FJQkFBQkFIVC82UVQ4QmNvQUlnQmdBTEFBUlZpd0ZTOGJzUlVjUGxtd0FFVllzQjh2RzdFZkVENVpzQURRc0I4UXNnTUJDaXRZSWRnYjlGbXdIeEN3Q05Dd0NDK3lMd2dCWGJMUENBRmRzZ2NCQ2l0WUlkZ2I5Rm13RlJDeURnRUtLMWdoMkJ2MFdiQVZFTEFSMERBeEFSWVdGeFlTTndVM0lUWTNOaVluSmdZSEJ6WUFGeDRDRnhZQ0FnY0dKeVltSndFd0I0Mk9yT3czL2MwY0Fpa0pBZ09aa1kvRk1ic3VBVDNjak01M0J3WkwyNkJ2ZmRYNUNBSFBwNXdFQlFFSS9RR2VPRHU1MGdRRnBLc0I1Z0VJQmdOOTdKUnkvay8rdkVRd0F3VCs0UUFDQUVuLzV3Yk9CY2NBRndBbkFIZXlBU2dwRVJJNXNBRVFzQ0xRQUxBQVJWaXdEeThic1E4Y1BsbXdBRVZZc0Frdkc3RUpIRDVac0FCRldMQUFMeHV4QUJBK1diQUFSVml3Qmk4YnNRWVFQbG15Q2dZSkVSSTVmTEFLTHhpeUJRRUtLMWdoMkJ2MFdiQVBFTEliQVFvcldDSFlHL1Jac0FBUXNpTUJDaXRZSWRnYjlGa3dNUVVtSmdJM0l3TWpFek1ETXpZU0pCY1dFaGNXQWdJSEJnRTJKaWNtQmdJSEJ3WVdGeFlTRXpZRUVwdmVhUkRPYnJ2OXUzVEhJY0lCR2FiVjlna0VNNE5sc0FFT0JwYVVodE9IRWdNR21KRzkrU2tVRkFPaUFUYTIvWU1Gc1Axa3pnRkNvd01FL3VIMWFmNjgvdXBlcEFPWHhka0VCSmorMGVoQnhONEVCUUViQVFCK0FBTC82QUFBQk5nRnNRQU5BQllBWWJJUkZ4Z1JFam13RVJDd0F0QUFzQUJGV0xBTEx4dXhDeHcrV2JBQVJWaXdBQzhic1FBUVBsbXdBRVZZc0FNdkc3RURFRDVac2hJQUN4RVNPYkFTTDdJQkFRb3JXQ0hZRy9SWnNnVUJDeEVTT2JBTEVMSVVBUW9yV0NIWUcvUlpNREVoRXlFQkl3RW1KamMySkRNRkF3RUdGaGNGRXljaUJnTWVZLzdCL25uVEFieHlhQXNTQVRUc0FkSDkvYllRaFgwQkdXVCttc1lDTi8zSkFuQTZ5SC9ROEFINlVBUHlmSjBFQVFJK0Fab0FBQUlBUnYvbkJGVUdFUUFjQUNzQVRiSVpMQzBSRWptd0dSQ3dIZEFBc0JRdnNBQkZXTEFJTHh1eENCQStXYklBQ0JRUkVqbXdBQyt5R3dBSUVSSTVzQWdRc2lVQkNpdFlJZGdiOUZtd0FCQ3lLd0VLSzFnaDJCdjBXVEF4QVI0Q0J3Y0dBQ2N1QWo4Q0VnQTNOelkzTXc0Q0JBWUhOaGNtQmc4Q0ZoWVhGalkzTmlZbkFvMTZzVllNQXg3KzE5R0d3bGtRQkFVbkFTZnljWmNabFFwTGl2NjYwa0NwbW4rMkd3Y0RBM2xzaWJzYURuNTVBL3dDZnVDSEYvVCszUVVDamZHUEhpMEJUd0dtTVJVaGIyQjNTVUM0cDY2YkE2dVZMMVdFblFJRHpzaVl0UVFBQUFNQU1BQUFCQTBFT2dBTkFCWUFIZ0JYQUxBQVJWaXdBUzhic1FFWVBsbXdBRVZZc0FBdkc3RUFFRDVac2hjQUFSRVNPWHl3Rnk4WXNnNEJDaXRZSWRnYjlGbXlCdzRYRVJJNXNBQVFzZzhCQ2l0WUlkZ2I5Rm13QVJDeUhnRUtLMWdoMkJ2MFdUQXhNeE1GRmhZSEJnY1dGZ2NHQmdjREF3VXlOamMySmljbEZ6STJOelluSnpDOEFYN0syUW9LeWxCYUJBYm13ZkU1QVI1d2l3c0tZV0grNXQ2RGtnc1Y3UEVFT2dFQms0eWJWaGlCVkpLbkFnSGIvcm9CVzFGSVR3T1ZBVkpPamdjQkFBQUJBQzBBQUFPREJEb0FCUUFyQUxBQVJWaXdCQzhic1FRWVBsbXdBRVZZc0FJdkc3RUNFRDVac0FRUXNnQUJDaXRZSWRnYjlGa3dNUUVoQXlNVElRTm4vaDJodHJ3Q21nT2gvRjhFT2dBQy80Myt3Z1ErQkRvQURnQVVBRkt5RWhVV0VSSTVzQklRc0FuUUFMQU1MN0FBUlZpd0JDOGJzUVFZUGxtd0FFVllzQW92RzdFS0VENVpzZ0FCQ2l0WUlkZ2I5Rm13RDlDd0J0Q3dEQkN3Q2RDd0JCQ3lFUUVLSzFnaDJCdjBXVEF4TnpZMk54TWhBek1ESXhNaEF5TVRCU1VUSVFNQ0xXK0lJRlFDcHFLSFVyUTMvU1UzdFZNQkpBSGpoUDYvUkVTVVp2eXVBWmI4WGY0ckFUNyt3Z0hWQXdNQytQNjcvdVVBQUFIL3BRQUFCZzRFT2dBVkFKQUFzQUJGV0xBSkx4dXhDUmcrV2JBQVJWaXdEUzhic1EwWVBsbXdBRVZZc0JFdkc3RVJHRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3Qmk4YnNRWVFQbG13QUVWWXNCUXZHN0VVRUQ1WnNBSVFzQkRRc0JBdnNyOFFBVjJ5L3hBQlhiSXZFQUZkc3M4UUFYR3lBQUVLSzFnaDJCdjBXYkFFMExJSUVBQVJFam13RUJDd0M5Q3lFd0FRRVJJNU1ERUJJd01qRXlNQkl3RURNeE16RXpNRE13RXpBUUVqQTd5RFViVlNkLzZJOFFIaTljN0JnRTYxVDNNQlgrZitTQUVTMXdIVy9pb0IxdjRxQWpvQ0FQNUFBY0QrUUFIQS9ldjkyd0FCQUNILzZnT3FCRkFBSndCcUFMQUFSVml3RFM4YnNRMFlQbG13QUVWWXNCa3ZHN0VaRUQ1WnNBMFFzZ1lCQ2l0WUlkZ2I5Rm13RFJDd0N0Q3dHUkN3SjlDd0p5K3lMeWNCWGJLL0p3RmRzaVlCQ2l0WUlkZ2I5Rm15RWlZbkVSSTVzQmtRc0J6UXNCa1FzaUFCQ2l0WUlkZ2I5Rmt3TVFFeU5qYzJKaU1tQmdjSE5qWVhGaFlIQmdjV0ZnY09BaWNtSmpjWEJoWVhGalkzTmljbk53SUJabnNJQ1dOWVdvNFJ0QkQ1cktuQkNnckNTMFVGQm5mTWQ2blZCckVFZEY5bmt3c1Z6YmtjQW5WV1QwZFlBbUJPQVpXdkFnS2xpNXhaSVgxUmFKWlFBd0s2bUFGU2F3SUNaRlNoQVFHY0FBQUJBQzhBQUFRM0JEb0FDUUJGQUxBQVJWaXdBQzhic1FBWVBsbXdBRVZZc0Fjdkc3RUhHRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3QlM4YnNRVVFQbG15QkFjQ0VSSTVzZ2tIQWhFU09UQXhBVE1ESXhNQkl4TXpBd044dTd5MWlQMmN1N3kwaHdRNis4WURDZnozQkRyODlnQUFBUUF2QUFBRVZ3UTZBQXdBZHdDd0FFVllzQVF2RzdFRUdENVpzQUJGV0xBSUx4dXhDQmcrV2JBQVJWaXdBaThic1FJUVBsbXdBRVZZc0Fzdkc3RUxFRDVac0FJUXNBYlFzQVl2c3A4R0FWMnkvd1lCWGJMUEJnRnhzcDhHQVhHMHZ3YlBCZ0pkc2k4R0FWMnlid1lCY3JJQkFRb3JXQ0hZRy9SWnNnb0JCaEVTT1RBeEFTTURJeE16QXpNQk13RUJJd0craVZHMXZMVlFiZ0d3NmYzK0FWdldBYzMrTXdRNi9qWUJ5djN2L2RjQUFBSC95QUFBQkRrRU9nQVJBRTJ5QkJJVEVSSTVBTEFBUlZpd0FDOGJzUUFZUGxtd0FFVllzQUV2RzdFQkVENVpzQUJGV0xBSkx4dXhDUkErV2JBQUVMSURBUW9yV0NIWUcvUlpzQWtRc2d3QkNpdFlJZGdiOUZrd01RRURJeE1oQXdjR0JnY2pOemMyTmpjM0V3UTV2TGFpL3B4UkZqVytsVTRTSjJGOElCSmlCRHI3eGdPaC9vNXM4czREb2dJR29hNW5BZG9BQUFFQU1BQUFCWDRFT2dBTUFGa0FzQUJGV0xBQkx4dXhBUmcrV2JBQVJWaXdDeThic1FzWVBsbXdBRVZZc0FNdkc3RURFRDVac0FCRldMQUdMeHV4QmhBK1diQUFSVml3Q1M4YnNRa1FQbG15QUFzREVSSTVzZ1VMQXhFU09iSUlDd01SRWprd01TVUJNd01qRXdFakF3TWpFek1Db2dIMjVyeTFoLzRzZnRDT3RMemw5d05EKzhZREJmejdBeXo4MUFRNkFBQUJBQzhBQUFRMkJEb0FDd0NLQUxBQVJWaXdCaThic1FZWVBsbXdBRVZZc0Fvdkc3RUtHRDVac0FCRldMQUFMeHV4QUJBK1diQUFSVml3QkM4YnNRUVFQbG13QUJDd0NkQ3dDUyt5YndrQlhiUy9DYzhKQWwyeVB3a0JjYlRQQ2Q4SkFuR3lEd2tCY3JTZkNhOEpBbkd5L3drQlhiSVBDUUZ4c3A4SkFWMnlMd2tCWGJSdkNYOEpBbkt5QWdFS0sxZ2gyQnYwV1RBeElTTVRJUU1qRXpNRElSTXpBM3ExVWY0ZlViVzh0VkVCNEZLMUFjNytNZ1E2L2lzQjFRQUFBUUF2QUFBRU53UTZBQWNBT0FDd0FFVllzQVl2RzdFR0dENVpzQUJGV0xBQUx4dXhBQkErV2JBQVJWaXdCQzhic1FRUVBsbXdCaEN5QWdFS0sxZ2gyQnYwV1RBeElTTVRJUU1qRXlFRGU3V2kvaDZpdGJ3RFRBT2gvRjhFT2dBQUFRQmdBQUFENkFRNkFBY0FNUUN3QUVWWXNBWXZHN0VHR0Q1WnNBQkZXTEFDTHh1eEFoQStXYkFHRUxJQUFRb3JXQ0hZRy9SWnNBVFFzQVhRTURFQklRTWpFeUUzSVFQTy9xQ2l0S0grcHhvRGJnT2svRndEcEpZQUF3Qk0vbUFGUFFZQUFCOEFMQUE2QUgyeUp6czhFUkk1c0NjUXNCTFFzQ2NRc0RYUUFMQURMN0FBUlZpd0FDOGJzUUFZUGxtd0FFVllzQWN2RzdFSEdENVpzQUJGV0xBVEx4dXhFeEkrV2JBQVJWaXdGeThic1JjUVBsbXdFTkN3QnhDeUpBRUtLMWdoMkJ2MFdiQVhFTEl5QVFvcldDSFlHL1Jac0NuUXNBQVFzamNCQ2l0WUlkZ2I5Rmt3TVFFV0Z4TXpBellYRmhjV0R3SUdBaWNtSndNakV3WW5JaVluSmpjM0VoSUJOaWNtSnlZSEF4WVhGalkzQlFZVkZ4WVhGamNUSmlNbUJnY0NKMUpCVjdWWlRWSFZRUndDQ0FJaThiaFhURkMxVVVsSGtKOERBUVlNTGVzRENBc0RFS1l6UFk0c08zK3BHdnlNQmdJVG5TODZqalFxZmFFZ0JGQUNIZ0hRL2lvakFRUHJaM1I0RVBuKzVBTUNJZjVVQWFrZEFkVzVPemRTQVFBQkUvMjlaRWZ6QndJVS9POFFBZ0xIdGcwMVBqQy9Cd0lTQXhNU0FzM1BBQUVBTC82L0JEY0VPZ0FMQURzQXNBZ3ZzQUJGV0xBQUx4dXhBQmcrV2JBQVJWaXdCQzhic1FRWVBsbXdBRVZZc0Fvdkc3RUtFRDVac2dJQkNpdFlJZGdiOUZtd0J0QXdNUk16QXlFVE13TXpBeU1USWV1MW9RSGhvcldpZm1TaU9QenFCRHI4WFFPai9GMytLQUZCQUFBQkFIc0FBQVFBQkRzQUVnQklzZzRURkJFU09RQ3dBRVZZc0JFdkc3RVJHRDVac0FCRldMQUpMeHV4Q1JnK1diQUFSVml3QVM4YnNRRVFQbG15RGdFSkVSSTVmTEFPTHhpeUJBRUtLMWdoMkJ2MFdUQXhJU01UQmljbUpqY1RNd01HRnhZWEZqY1RNd05FdGt0N2RySzdGVEsxTXdZRkVKNXVpV0syQVlraEFnTGF1UUU4L3NNMExaUUdBeDhDR3dBQkFDOEFBQVlJQkRvQUN3QklBTEFBUlZpd0FDOGJzUUFZUGxtd0FFVllzQU12RzdFREdENVpzQUJGV0xBSEx4dXhCeGcrV2JBQVJWaXdDUzhic1FrUVBsbXlBUUVLSzFnaDJCdjBXYkFGMExBRzBEQXhBUU1oRXpNRElSTXpBeUVUQWFDaEFYK2h0YUlCZnFLMnZQcmp2QVE2L0YwRG8veGRBNlA3eGdRNkFBRUFKUDYvQmYwRU9nQVBBRXNBc0F3dnNBQkZXTEFBTHh1eEFCZytXYkFBUlZpd0F5OGJzUU1ZUGxtd0FFVllzQWN2RzdFSEdENVpzQUJGV0xBTkx4dXhEUkErV2JJQkFRb3JXQ0hZRy9SWnNBWFFzQW5RTURFQkF5RVRNd01oRXpNRE13TWpFeUVUQVphaUFYK2l0S0VCZmFLMm9wUmpvemo3QTd3RU92eGRBNlA4WFFPai9GMytLQUZCQkRvQUFBSUFWZ0FBQkhzRU9nQU1BQlVBWHJJQkZoY1JFam13QVJDd0RkQUFzQUJGV0xBQUx4dXhBQmcrV2JBQVJWaXdDUzhic1FrUVBsbXlBZ0FKRVJJNXNBSXZzQUFRc2dzQkNpdFlJZGdiOUZtd0FoQ3lEUUVLSzFnaDJCdjBXYkFKRUxJT0FRb3JXQ0hZRy9SWk1ERVRJUU1YRmhZSEJnWWpJUk1oQVFNRk5qWTNOaVluY1FIc1FmNmp2Z3NMODd2K05hSCt5UUdzUndFQWE0Y05DMVpZQkRyK2l3RUV1cGlseVFPaS9veithUUVDY1Y1WGF3UUFBd0F3QUFBRnFRUTZBQW9BRXdBWEFGb0FzQUJGV0xBS0x4dXhDaGcrV2JBQVJWaXdGaThic1JZWVBsbXdBRVZZc0Fndkc3RUlFRDVac0FCRldMQVZMeHV4RlJBK1diSUFDQW9SRWptd0FDK3lDd0VLSzFnaDJCdjBXYkFJRUxJTUFRb3JXQ0hZRy9SWk1ERUJGeFlXQndZR0l5RVRNd01EQlRZMk56WW1Kd0VqRXpNQlgrMnh3Z3NMODczK043eTFXMGNCQUd1SERRdFhWd0tTdGJ5MUFzVUNBYnVacGNrRU92MzAvbWtCQW5GZVYyc0UvZE1FT2dBQUFnQXdBQUFEdndRNkFBb0FFd0JOc2djVUZSRVNPYkFIRUxBTjBBQ3dBRVZZc0Frdkc3RUpHRDVac0FCRldMQUhMeHV4QnhBK1diSUFDUWNSRWptd0FDK3lDd0VLSzFnaDJCdjBXYkFIRUxJTUFRb3JXQ0hZRy9SWk1ERUJGeFlXQndZR0l5RVRNd01EQlRZMk56WW1Kd0ZmN2JIQ0N3dnp2ZjQzdkxWYlJ3RUFhNGNOQzFkWEFzVUNBYnVacGNrRU92MzAvbWtCQW5GZVYyc0VBQUFCQURULzV3UEVCRkFBSVFCb0FMQUFSVml3Q0M4YnNRZ1lQbG13QUVWWXNCSXZHN0VTRUQ1WnNBZ1FzZ0FCQ2l0WUlkZ2I5Rm13Q0JDd0JOQ3dFaEN3RmRDd0VoQ3lHUUVLSzFnaDJCdjBXYkFTRUxBZTBMQWVMN0l2SGdGZHNyOGVBVjJ5SUI0QmNiSWRBUW9yV0NIWUcvUlpNREVCSmdZSEJ6NENGeDRDRnhZSEJ3WUFKeVltTnhjR0ZoY1dOamNoTnlFMkpnSTdZNWdVcXdxRHlXeHNwR01KQlFZREhmN1YwS1hLQ0tzR2EyQjBzREgrY0JzQmhBaHpBN2NDZUY0QlpLdGZBUU5qdTNkQlFSbjcvc1lGQk55b0FXV0pCQVd4cnBpUnNBQUNBREQvNXdZSEJGUUFGUUFtQUgwQXNBQkZXTEFWTHh1eEZSZytXYkFBUlZpd0JDOGJzUVFZUGxtd0FFVllzQkl2RzdFU0VENVpzQUJGV0xBTUx4dXhEQkErV2JJQUVoVVJFamw4c0FBdkdMS0FBQUZkdEVBQVVBQUNYYlJRQUdBQUFuR3lFUUVLSzFnaDJCdjBXYkFNRUxJYkFRb3JXQ0hZRy9SWnNBUVFzaU1CQ2l0WUlkZ2I5Rmt3TVFFek5nQVhIZ0lIQndJQUp5NENOd1VESXhNekFRWVhGQllYRmpZM05pY21KaWNtQmdjQlVQUkNBU1BBaUw5WER3RWkvc3pZZnNGZEMvNy9VN1M4dEFGUEJRRjRib3ZMR3djRkNYWm1qTWdhQW0vbEFRQUZCSS82bUFuKy9QN0tCUUtFNElZQi9pa0VPdjNRS2kyTm9RUUY1TWsvUlhpTkJBWGp1QUFDLzc4QUFBUC9CRHNBRFFBV0FHR3lGQmNZRVJJNXNCUVFzQTNRQUxBQVJWaXdBQzhic1FBWVBsbXdBRVZZc0FFdkc3RUJFRDVac0FCRldMQUZMeHV4QlJBK1diSVNBQUVSRWptd0VpK3lBd0VLSzFnaDJCdjBXYklIQXdBUkVqbXdBQkN5RXdFS0sxZ2gyQnYwV1RBeEFRTWpFeUVCSXdFbUpqYzJOak1CQmhZWEJSTW5CZ1lELzd5MlNmNzUvci9QQVY5VlVBWUwrcmorK0FwV1RnRWlQL2RwamdRNis4WUJwZjViQWNVcW5GMmJ1UDZzVFZnRUFRRm5BUUptQUFBQkFCLytSUVBqQmdBQUl3Q0FBTEFoTDdBQVJWaXdCQzhic1FRWVBsbXdBRVZZc0Fzdkc3RUxFajVac0FCRldMQWFMeHV4R2hBK1diSy9JUUZkc2k4aEFWMnlEeUVCWGJJaUdpRVJFam13SWkreUFRRUtLMWdoMkJ2MFdiSUNHZ1FSRWptd0N4Q3lFQUVLSzFnaDJCdjBXYkFFRUxJWEFRb3JXQ0hZRy9SWnNBRVFzQnpRc0NJUXNCL1FNREVCSVFNMkZ4WVdCd01HQmljaUp6Y1dNekkzRXpZbkppY21Cd01qRXlNM016Y3pCeUVDdS83ck5vNjZtcEVUZ1JiQWxTMUxIekV4aXlPQkJnUVJsYVo0aHJYU254cWZIN1VmQVJZRXVmNzltd1FFejdYODRxaTZCQlNTRDlNREZURXFqQU1Fc3Z6OEJMbVlyNjhBQVFCTy8rZ0QvUVJUQUI0QVpRQ3dBRVZZc0E4dkc3RVBHRDVac0FCRldMQUlMeHV4Q0JBK1diSUFBUW9yV0NIWUcvUlpzQWdRc0FUUXNBOFFzQkxRc0E4UXNoWUJDaXRZSWRnYjlGbXdDQkN3R3RDd0dpK3l2eG9CWGJML0dnRmRzaThhQVYyeUd3RUtLMWdoMkJ2MFdUQXhKUlkyTnpjT0FpY21BamMzRWdBWEZoWUhJelFtSnlZR0J5RUhJUVlXQWZGaG5SdXNENFhPYThyUkZ3TWVBUzNYcWNvQ3FuRmZlckl4QVk0Yi9uMFBkb0lDYzJFQlphaGdBd1VCS08wYkFRSUJNUVVFM2Focmd3UUZwNjJZbHJVQUF2L0RBQUFHTHdRNkFCZ0FJUUI1c2dvaUl4RVNPYkFLRUxBYTBBQ3dBRVZZc0FBdkc3RUFHRDVac0FCRldMQUlMeHV4Q0JBK1diQUFSVml3RUM4YnNSQVFQbG15QWdBSUVSSTVzQUl2c0FBUXNnb0JDaXRZSWRnYjlGbXdFQkN5RXdFS0sxZ2gyQnYwV2JBSUVMSWJBUW9yV0NIWUcvUlpzQUlRc2lFQkNpdFlJZGdiOUZrd01RRURGeFlXQndZR0l5RVRJUU1IQmdZSEl6YzNOalkzTnhNQkF3VTJOamMySmljRUZraitwYjRKQ2ZHKy9qYWkvcnRSR0RQQW1rZ1RKbUY4SUJKaUFrZEFBUUJtakFzTFdGc0VPdjVrQVFXdGtadS9BNkgram5ibjBRR2lBZ2Focm1jQjJ2M00vbzhCQW0xWlNsb0ZBQUFDQUM4QUFBWlBCRG9BRWdBYkFIdXlBUndkRVJJNXNBRVFzQlBRQUxBQVJWaXdBaThic1FJWVBsbXdBRVZZc0JFdkc3RVJHRDVac0FCRldMQUxMeHV4Q3hBK1diQUFSVml3RHk4YnNROFFQbG15QVJFTEVSSTVzQUV2c0FUUXNBRVFzZzBCQ2l0WUlkZ2I5Rm13QkJDeUV3RUtLMWdoMkJ2MFdiQUxFTElVQVFvcldDSFlHL1JaTURFQklSTXpBeGNXRmdjR0JpTWhFeUVESXhNekFRTUZOalkzTmlZbkFWa0I0VWUxU1A2andBa0o4YjcrTjF2K0gxdTF2TFVDTkVBQkFHYUtEUXRYWEFLaEFabitZd0VFcnBDYnZ3SUsvZllFT3YzTS9vOEJBbXhhU2xvRkFBRUFId0FBQStNR0FBQWFBSG15QXhzY0VSSTVBTEFYTDdBQVJWaXdCQzhic1FRWVBsbXdBRVZZc0Fndkc3RUlFRDVac0FCRldMQVJMeHV4RVJBK1diSy9Gd0Zkc2k4WEFWMnlEeGNCWGJJYUVSY1JFam13R2kreUFBRUtLMWdoMkJ2MFdiSUNCQkVSRWptd0JCQ3lEZ0VLSzFnaDJCdjBXYkFBRUxBVDBMQWFFTEFWMERBeEFTRUROaGNXRmdjREl4TTJKeVluSmdjREl4TWpOek0zTXdjaEF0SCswVEdPdVppVEUzYTFkd1lGRVpTbWVJYTEwNHNiaWg2MUlBRXRCTDcrK0pzRUFzMjUvVHNDeURFcWpBTUVzdno4Qkw2WHE2c0FBUUF2L3B3RU53UTZBQXNBUlFDd0NDK3dBRVZZc0FBdkc3RUFHRDVac0FCRldMQURMeHV4QXhnK1diQUFSVml3QlM4YnNRVVFQbG13QUVWWXNBa3ZHN0VKRUQ1WnNnRUJDaXRZSWRnYjlGa3dNUUVESVJNekF5RURJeE1oRXdHZ29RSGhvclc4L3JnL3RENytzYndFT3Z4ZEE2UDd4djZjQVdRRU9nQUFBUUJ2LytRRzR3V3dBQ0VBWUxJR0lpTVJFamtBc0FCRldMQUFMeHV4QUJ3K1diQUFSVml3R1M4YnNSa2NQbG13QUVWWXNBNHZHN0VPSEQ1WnNBQkZXTEFFTHh1eEJCQStXYkFBUlZpd0NTOGJzUWtRUGxteUZBRUtLMWdoMkJ2MFdiSUhGQVFSRWptd0hkQXdNUUVEQmdZbkppWW5CaWNtSmpjVE13TUdGeFlXRnhZMk54TXpBd1lXRnhZMk54TUc0N1FiLzdscW5DQ0wzYXUwRTdTOHN3VUVCMUpGYlp3UnRjS3pERjVlWkk0VnRnV3crOTNFNHdRQ1gxQzNCZ2JudGdRais5d3RMVTVhQXdXUWVnUWsrOXg0aWdNRGhuY0VMd0FCQUUvLzVnWGZCRG9BSVFCTEFMQUFSVml3RGk4YnNRNFlQbG13QUVWWXNCZ3ZHN0VZR0Q1WnNBQkZXTEFoTHh1eElSZytXYkFBUlZpd0NTOGJzUWtRUGxtd0JOQ3dDUkN5RkFFS0sxZ2gyQnYwV2JBZDBEQXhBUU1HQmljbUppY0dKeVltTnhNekF3WVhGaFlYRmpZM0V6TURCaFlYRmpZM0V3WGZlaG5kckZxSUgzdSttS0lSZXJSNkJBTURSRHhiZ3hKN3Rub0tUMDlWZUJKNkJEcjlLTERNQkFKTlJaZ0VCTTZsQXRuOUppWW1RRkFEQkhockF0cjlKbVozQWdOMWJRTGFBQUFDQUM3Ly9BUERCaFlBRWdBYkFIR3lGUndkRVJJNXNCVVFzQW5RQUxBQVJWaXdEeThic1E4ZVBsbXdBRVZZc0Frdkc3RUpFRDVac2hJUENSRVNPYkFTTDdJQUFRb3JXQ0hZRy9SWnNnTVBDUkVTT2JBREw3QUFFTEFMMExBU0VMQU4wTEFKRUxJVkFRb3JXQ0hZRy9SWnNBTVFzaHNCQ2l0WUlkZ2I5Rmt3TVFFaEF4Y1dGZ2NHQmljaEV5TTNNeE16QXlFQkF4YzJOamMySmljQzF2N0pPdjJsdkF3Tys3WCtOYnk2RzdnNXRqa0JPUDVhVGY5b2pnd05WMVlFT3Y2d0FRYkVuckRWQkFRNmx3RkYvcnY5Z2Y1RkFnSjdhVnQzQkFBQUFRQkovK2NHc3dYS0FDc0FoN0lZTEMwUkVqa0FzQUJGV0xBckx4dXhLeHcrV2JBQVJWaXdCaThic1FZY1BsbXdBRVZZc0Nndkc3RW9FRDVac0FCRldMQWdMeHV4SUJBK1diSUFLeWdSRWptd0FDK3dCaEN3Q3RDd0JoQ3lEUUVLSzFnaDJCdjBXYkFBRUxBUTBMQUFFTEluQVFvcldDSFlHL1Jac0JMUXNDQVFzaGtCQ2l0WUlkZ2I5Rm13SUJDd0hOQXdNUUV6TmpZM05oY1dFaGNqSmlZbkpnWUhJUWNsQmdjR0ZoWVhGalkzTndZQUp5WUNKeVkzTndjREl4TXpBWmE1SVh4YXNQblA3d2E2QjRxQnEvTTlBaFFiL2ZjT0FnWStnVjJaeURTNkwvNjY0OHIzQndNT0JzWjN2UDI4QTBDUStWZXFCUVQrL2VLb29RTUY5UG1YQVU0OWJzQmtBd1dkckFIai92c0dCQUVZNVZCUUhBSDlWd1d3QUFFQUxQL29CWTBFVXdBa0FNU3lBeVVtRVJJNUFMQUFSVml3QkM4YnNRUVlQbG13QUVWWXNDUXZHN0VrR0Q1WnNBQkZXTEFoTHh1eElSQStXYkFBUlZpd0hDOGJzUndRUGxteUR4d0VFUkk1c0E4dnRMOFB6dzhDWGJRL0QwOFBBbkcwencvZkR3Snh0QThQSHc4Q2NyU2ZENjhQQW5HeS93OEJYYklQRHdGeHRDOFBQdzhDWGJSdkQzOFBBbkt3QU5DeUNBOEVFUkk1c0FRUXNnc0JDaXRZSWRnYjlGbXdEeEN5RUFFS0sxZ2gyQnYwV2JBY0VMSVVBUW9yV0NIWUcvUlpzaGNjQkJFU09iQVFFTEFmMERBeEFUTTJKQmNXRmdjak5DWW5KZ1lISVFjaEJoWVhGalkzTnc0Q0p5WUNOd2NESXhNekFVeXhRUUVadzZmTUFxcHdYMzJ4TUFHdUcvNWREM1oyWnBrYXJBK0h6R3UvMnhQQVVMYTh0Z0puOFB3RkJOMm9hb1FFQTZtcWw1YTFBd0oxWHdGbHFWOERCQUVUendIK01BUTZBQUFDLzdvQUFBUlRCYkFBQ3dBT0FGWUFzQUJGV0xBSUx4dXhDQncrV2JBQVJWaXdBaThic1FJUVBsbXdBRVZZc0FZdkc3RUdFRDVac0FCRldMQUtMeHV4Q2hBK1diSU5DQUlSRWptd0RTK3lBQUVLSzFnaDJCdjBXYkFFMExJT0NBSVJFamt3TVFFakF5TVRJd01qQVRNVEl3RWhBd05WcDB5NFRaYmV5UUw2cC9pNC9ob0JobHNCdHY1S0FiYitTZ1d3K2xBQ1dnSkhBQUwvb2dBQUE1b0VPZ0FMQUJBQVZnQ3dBRVZZc0Fndkc3RUlHRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3Qmk4YnNRWVFQbG13QUVWWXNBb3ZHN0VLRUQ1WnNnMENDQkVTT2JBTkw3SUJBUW9yV0NIWUcvUlpzQVRRc2c4SUFoRVNPVEF4QVNNREl4TWpBeU1CTXhNakFTRURKd2NDcG5RMHRUUnlxTUVDYUp6MHNmNTJBU1ZJQlNnQktmN1hBU24rMXdRNis4WUJ3UUZHVEZzQUFnQmFBQUFHVlFXd0FCTUFGZ0I4QUxBQVJWaXdBaThic1FJY1BsbXdBRVZZc0JJdkc3RVNIRDVac0FCRldMQUVMeHV4QkJBK1diQUFSVml3Q0M4YnNRZ1FQbG13QUVWWXNBd3ZHN0VNRUQ1WnNBQkZXTEFRTHh1eEVCQStXYklWQWdRUkVqbXdGUyt3QU5Dd0ZSQ3lCZ0VLSzFnaDJCdjBXYkFLMExBR0VMQU8wTElXQWdRUkVqa3dNUUVoQVRNVEl3TWpBeU1USXdNakV5RURJeE16QVNFREFYOEJkZ0hCcC9pNVJxZE11RTJWNE1qbi9zSk52ZjI5QWFNQmhWb0NXUU5YK2xBQnR2NUtBYmIrU2dHNC9rZ0ZzUHlxQWtjQUFnQk9BQUFGU3dRNkFCTUFHQUIvQUxBQVJWaXdBaThic1FJWVBsbXdBRVZZc0JJdkc3RVNHRDVac0FCRldMQUVMeHV4QkJBK1diQUFSVml3Q0M4YnNRZ1FQbG13QUVWWXNBd3ZHN0VNRUQ1WnNBQkZXTEFRTHh1eEVCQStXYklBRUJJUkVqbXdBQyt3QWRDeURnRUtLMWdoMkJ2MFdiQUwwTEFIMExBQkVMQVUwTEFWMExJWEVnUVJFamt3TVFFaEFUTVRJd01qQXlNVEl3TWpFeU1ESXhNekFTRURKd2NCVVFFQ0FXbWI5TEJEZFRTMU5YT293YXJHTkxXOHRnRlJBU1ZJQmljQndRSjUrOFlCS2Y3WEFTbisxd0VvL3RnRU92MkhBVVpNV3dBQ0FDWUFBQVl2QmJBQUhnQWlBSGF5RGlNa0VSSTVzQTRRc0IvUUFMQUFSVml3SFM4YnNSMGNQbG13QUVWWXNCWXZHN0VXRUQ1WnNBQkZXTEFHTHh1eEJoQStXYkFBUlZpd0RpOGJzUTRRUGxteUd3NGRFUkk1c0JzdnNBRFFzQnNRc2hJQkNpdFlJZGdiOUZtd0ROQ3dHeEN3SDlDd0hSQ3lJZ0VLSzFnaDJCdjBXVEF4QVRNeUZnY0RJeE0ySnlZbkp3Y0RJeE1uSnlZR0J3TWpFellrTXpNQkJRRXpBUVVFUWczWTFSZzh2VDBJQnhYSmR4NXR2WElHZ0ptb0dEMjhQUjRCRVBnay92d0VodjA4RHdGby9kVURKK2JRL284QmNrTTBvQU1DSmYyWEFuZ1RBd0tJa2Y2SkFYSGIzd0tGQXYxOEFlZ0JBQUlBS1FBQUJRc0VPZ0FjQUNBQVdBQ3dBRVZZc0FVdkc3RUZHRDVac0FCRldMQWNMeHV4SEJBK1diSUVIQVVSRWptd0JDK3dCOUN3SEJDd0ZkQ3dETkN3QkJDeUdBRUtLMWdoMkJ2MFdiQVIwTEFFRUxBZDBMQUZFTElnQVFvcldDSFlHL1JaTURFek56WTJOd01oQVJZV0J3Y2pOelluSmljbkJ3TWpFeWNuSmdZSEJ3RVhFeUVwR2g3dDFyd0RvLzZOcTZjV0diWVpCd0lLdFRVUlQ3VlVBenFEbXhnY0FmVUo2LzZmcXRMWENRSGUvaDRMNU1Xa3BUMHpxQWNDRnY1UUFid0pBUUtDajdjQ1hBRUJSd0FDQUVnQUFBaGFCYkFBSkFBb0FKbXlJQ2txRVJJNXNDQVFzQ2pRQUxBQVJWaXdCeThic1FjY1BsbXdBRVZZc0Fzdkc3RUxIRDVac0FCRldMQUFMeHV4QUJBK1diQUFSVml3QlM4YnNRVVFQbG13QUVWWXNCTXZHN0VURUQ1WnNBQkZXTEFjTHh1eEhCQStXYklKQlFjUkVqbXdDUyt5QkFFS0sxZ2gyQnYwV2JBSkVMQU4wTEFFRUxBWjBMQUVFTEFmMExBSkVMQWwwTEFMRUxJb0FRb3JXQ0hZRy9SWk1ERWhFelkzQlFNakV6TURJUUVoQVRNV0Z4WUhBeU1UTmljbUp5Y0hBeU1USnljbUJnY0RBVE1CQlFKSFF5RmYvbTF6dlAyOGNBTkYvdlFFa1A0S0U5Wm9hQmM4dlQwSUJ4U3drUjl0dkhJSGdKV3FHRDRDaVE4QmFQM1ZBWXlvWXdQOWJBV3cvWHdDaFAxM0FYSnowUDZQQVhKRE5KUU5CQ2Y5bVFKM0ZBSUNnNVgraVFNcUFlZ0JBQUFDQUM0QUFBYnRCRG9BSWdBbUFJd0FzQUJGV0xBTEx4dXhDeGcrV2JBQVJWaXdDQzhic1FnWVBsbXdBRVZZc0FVdkc3RUZFRDVac0FCRldMQUFMeHV4QUJBK1diQUFSVml3R3k4YnNSc1FQbG13QUVWWXNCSXZHN0VTRUQ1WnNna0ZDQkVTT2JBSkw3SUVBUW9yV0NIWUcvUlpzQWtRc0EzUXNBUVFzQmZRc0FRUXNCN1FzQWtRc0NQUXNBc1FzaVlCQ2l0WUlkZ2I5Rmt3TVNFM05qY0ZBeU1UTXdNaEF5RUJGaFlIQnlNM05pY21KeWNIQXlNVEp5Y2lCZ2NIQVJjVElRSUtIQjFmL3BCUHRieTJWQUxCeEFPay9veXVwQlladGhrSEFncTFOUkZQdFZRRFI0R1VGeGtCOVFuci9wK3FzMm9EL2p3RU92NGlBZDcrSFEza3dxU2xQVE9vQndJVy9sQUJ2QWdDaVpta0Fsd0JBVWNBQXYvTy9rZ0VJUWVJQUMwQU5nQ0dBTEF6TDdBQVJWaXdDUzhic1FrY1BsbXdBRVZZc0I0dkc3RWVFajVac0FCRldMQVlMeHV4R0JBK1diQUpFTElJQVFvcldDSFlHL1Jac0JnUXNDM1FzQzB2c2l3QkNpdFlJZGdiOUZteUVDd3RFUkk1c0JnUXNpUUJDaXRZSWRnYjlGbXlEek1CWGJBekVMQTIwTEEyTDdRUE5oODJBbDJ5TGpNMkVSSTVzRERRc0RBdk1ERUJNalkzTmlZbkp5VTNCUjRDQndZRkZoWUhEZ0lqSndZR0J3WVhCeVltTnpZMk16TXlOamMySmljbk53RTNOeGNCSXdNMUZ3R3prNzhRREhCekQvN0xHd0VlZXNOaENCSCs3bXBrQ1FxTDdJMDBVVmtHRUk1UmJXc0RCYjJwSUl6QUR3NkdrWlViQVp1eG9BSCs0bS9ObGdNMmczcGhlUWtCQVpnQkEyT3FjZFZ3TEs1eGdzVnJBUU0vTm05RWVqbWhXMzZKbW4xNWhRVUJtQU9tcUFNTi91OEJFQTRDQUFML3l2NUlBNWdHTWdBb0FERUFud0N3TGkrd0FFVllzQWd2RzdFSUdENVpzQUJGV0xBYkx4dXhHeEkrV2JBQVJWaXdGUzhic1JVUVBsbXdDQkN5QndFS0sxZ2gyQnYwV2JBVkVMQW8wTEFvTDdJdktBRmRzdjhvQVYyeWp5Z0JjYksvS0FGZHNzOG9BWEd5WHlnQmNySW5BUW9yV0NIWUcvUlpzZzhuS0JFU09iQVZFTEloQVFvcldDSFlHL1Jac0M0UXNERFFzREF2dEE4d0h6QUNYYklwTGpBUkVqbXdLOUN3S3k4d01RRXlOamMySmljbE53VVdGZ2NHQmdjV0ZnY0dCQ01qQmdjR0Z3Y21KamMyTmpNeU5qYzJKeWMzQVRjM0Z3RWpBelVYQVlpSG1Rc0paMjMrenh3QkdMVFBDQVZuZGxaVEJBaisrOVFpbnhFUWpsSm5jUVFGdXJpTW1Rc1YrS1FiQVQ2eG53SCs0bS9ObHdKb1ZsTS9UUU1CbVFFRnBJSkpkak1qZGt1WXN3VnphMGw1TnFGZWZZcGZVWllHQVpnREhxZ0REZjd2QVJBT0FnQURBR24vNlFUOEJjZ0FFZ0FiQUNRQVpySUlKU1lSRWptd0NCQ3dGTkN3Q0JDd0hkQUFzQUJGV0xBSkx4dXhDUncrV2JBQVJWaXdBQzhic1FBUVBsbXdDUkN5RXdFS0sxZ2gyQnYwV2JJV0FBa1JFamw4c0JZdkdMQUFFTEljQVFvcldDSFlHL1Jac0JZUXNpQUJDaXRZSWRnYjlGa3dNUVVtQWljbUVqYzJKQmNXRWhjV0J3Y0dBZ1FUSmdJRElUWTNOaVlCRmpZM0lRWVhGQllDUXRQM0NnVTNSMkFCS0xmVTlna0RDZ3dmd3Y3bk1iSDNPd0wrQ0FJRG1QNmVydlU2L1FJSEFaZ1VCQUVmOUc0QlVJcTd3Z1FFL3VQM1ZGTlUyZjYycFFVM0JmNzUvdnc0UEw3USszTUcvUDQyT2JIUUFBTUFRdi9uQkNBRVV3QVJBQmdBSHdCTkFMQUFSVml3QkM4YnNRUVlQbG13QUVWWXNBMHZHN0VORUQ1WnNoSUJDaXRZSWRnYjlGbXlIQTBFRVJJNWZMQWNMeGl5RmdFS0sxZ2gyQnYwV2JBRUVMSVpBUW9yV0NIWUcvUlpNREVUTmhJMkZ4NENCd2NHQWdZbkxnSTNBUlkyTnlFR0ZnRW1CZ2NoTmlaVUZKdnZqNGkvV0JBQ0ZKenZqb2kvV0JBQmwzaTRPUDJ3REh3QkIzbTNOUUpOQjM0Q0lKNEJCbzhFQkkvOGxoZWQvdjZOQkFTTytKWCtlQVdwc0pEQkF6SURxcUtRdGdBQkFLMEFBQVZMQmNZQUR3QS9BTEFBUlZpd0R5OGJzUThjUGxtd0FFVllzQVl2RzdFR0hENVpzQUJGV0xBTkx4dXhEUkErV2JJQkRROFJFam13QmhDeUNBNEtLMWdoMkJ2MFdUQXhBUmMzQVRZMk14Y0hJeVlIQVNNRE13SUpDRHdCZlVtYmFqTVZDbWhGL2NLbjdjUUJibmVHQXlLcWZRS3JBNVQ3ZUFXd0FBRUFoQUFBQkR3RVVBQVFBRWF5QWhFU0VSSTVBTEFBUlZpd0JTOGJzUVVZUGxtd0FFVllzQkF2RzdFUUdENVpzQUJGV0xBTkx4dXhEUkErV2JJQkRSQVJFam13QlJDeUNnRUtLMWdoMkJ2MFdUQXhBUmMzRXpZek1oY0hKaU1pQndFakF6TUJtZ1FzOEdhc1BEUWtGaE5LT3Y1WWliYXhBVEpYYVFJZTdodVNDWEg4eFFRNkFBQUNBR3IvY3dUNkJqVUFGUUFwQUVnQXNBQkZXTEFMTHh1eEN4dytXYkFBUlZpd0F5OGJzUU1RUGxtd0FOQ3dDeEN3RHRDd0N4Q3lHd0VLSzFnaDJCdjBXYkFZMExBQUVMSWxBUW9yV0NIWUcvUlpzQ0xRTURFRkJ5TTNKZ0luSmpjU0FEYzNGd2NXRWhjVUJ3SUFFd0luQnljM0JnSVBBZ0lYTnhjSE5oSTNOZ0taRzdVYnNNWURBUm95QVR2cUdiVWFyN29DSGpUKzBjZ1B0aFMxRnByTUpCRUpGT1lXdFJlWHhDSWZESUdCSUFFZzRXNmFBU0VCWVI5M0FYb24vdURjZXFMKzZ2NnZBNzhCQXoxaUFXWWkvdm5WY21YK20wWm5BV1luQVFmZXlRQUFBZ0JFLzRnRUxRUzJBQk1BSndCTEFMQUFSVml3QUM4YnNRQVlQbG13QUVWWXNBMHZHN0VORUQ1WnNBQVFzQVBRc0EwUXNBclFzaFFCQ2l0WUlkZ2I5Rm13QUJDeUhRRUtLMWdoMkJ2MFdiQWEwTEFVRUxBbDBEQXhBVGNYQnhZU0J3Y0dBZ2NISnpjbUFqYzNOaElUTmhJMU5DWW5CeWMzQmdZSEJ3WVZGQmMzRndJMkY3VVlvYUlXQWh6L3hSZTFGNTZlRlFNZS9NK0pta3BGRmJVV2NZMFhBZ2VLRnJVRVJYRUJjU2IrMnM0WDIvN2NJR3dCYmlZQkk4b1c0d0VoL0drdkFSYkVaSkFlWXdGa0s4cVJGVE01MEVGbkFRQUFBd0IwLytZR21nZFdBREVBUkFCTUFKa0FzQUJGV0xBV0x4dXhGaHcrV2JBQVJWaXdEUzhic1EwUVBsbXdGaEN3QU5Dd0RSQ3dDTkN5Q3cwV0VSSTVzQllRc2hjQkNpdFlJZGdiOUZtd0RSQ3lId0VLSzFnaDJCdjBXYklqRmcwUkVqbXdLTkN3RnhDd01kQ3dGaEN3UE5Dd1BDK3dOTkN3TkMreU1nSUtLMWdoMkJ2MFdiQTBFTEEzMExBM0w3SkFBZ29yV0NIWUcvUlpzRHdRc0VqUXNFZ3ZzRXpRc0V3dk1ERUJGaFlIQXc0Q0p5WW1Kd1luSmlZM054TTJOelkzQndZREF3WVhGaFlYRmpZM0V6TURCaFlYRmpZM0V6WW5KaVluRXdjbkppUWpJZ1lIQnljM05qWVhIZ01CTmpjM0Z3Y0dCd1UvcTdBWFhCTjh3WHBzb3lPSTI2T3hDZ05mSTNsNXZoTGFNVmtGQWdKUVNteVpGVWU4Umc1bVoyR0dHRjBHQVFKTlNhd0tQa2IrOEV3MlJRa0NmUU1KaFcwd1Y3WmIvZ0JNRHhLYUR4T2JCYThKOThYOXhZblNiZ1FDWFU2eEJBWGh1U1lDVk1seGNBU2VCLzdOL2RVdE1sbHJCQVdNZmdHdC9sTjFqUVFEbFpBQ1F5OHlWV2dHQWNXQkFnWjZPelVTQVNSc2NnSUJHRThZL3BKUlFXQUJaVzlaQUFBREFGTC81UVdtQmZZQUt3QS9BRWNBa2dDd0FFVllzQk12RzdFVEdENVpzQUJGV0xBTUx4dXhEQkErV2JBVEVMQUEwTEFNRUxBSDBMQVRFTElVQVFvcldDSFlHL1Jac0F3UXNoc0JDaXRZSWRnYjlGbXlId3dURVJJNXNDVFFzQlFRc0N2UXNCTVFzRGJRc0RZdnNDM1FzQzB2c2l3Q0NpdFlJZGdiOUZtd0xSQ3dNdEN3TWkreU93SUtLMWdoMkJ2MFdiQXRFTEJFMExCRUw3QkgwTEJITHpBeEFSWVdCd01HQmljbUppY0dKeVltTnhNMk5qY0hCZ01EQndZV0Z4WTJOemN6QndZV0Z4WTJOeE0zTkNjVEJ5NERJeVlHQndjbk56WTJGeDREQVRZM054Y0hCZ2NFZEpxWUVpb2IyYVJpamlGOXZKaWVFeXdkMTY0UnVTY3BBd05DUVZ1REVTYTBKQXRaVjFKd0V5MEVmTzBLV0ZLeFdDMDFSZ2tDZlFJTGhXMHZWNzVWL2Z4SkRoV2JEaFNZQkVRSjRiTCszOFRkQkFKUFJKb0dBK08xQVMrL3pnU1lCLzd6L3VRdFkyc0NCWGxyN094a2VnSURpSUFCTTBTaERRSEtnUUlYVFJvQk9qVVNBU1J0Y1FJQkdGSVYvb2hRTlcwQlpYSlhBQUFDQUcvLzRnYmpCd01BSWdBcUFIVUFzQUJGV0xBWkx4dXhHUncrV2JBQVJWaXdEeThic1E4Y1BsbXdBRVZZc0NJdkc3RWlIRDVac0FCRldMQUtMeHV4Q2hBK1diQUUwTElJQ2c4UkVqbXdDaEN5RlFFS0sxZ2gyQnYwV2JBZTBMQVpFTEFwMExBcEw3QXEwTEFxTDdJa0Jnb3JXQ0hZRy9SWnNDb1FzQ2ZRc0Njdk1ERUJBd1lHQnlNbUppY0dKeVltTnhNekF3WVhGaFlYRmpZM0V6TURCaFlYRmpZM0V5VTNJUWNoQnlNM0J1TzBHL2F6RG0yYUlJM2JxN1FUdEx5ekJRUUhVa1ZybWhhMHdyTU1YbDVramhXMi9JY1RBeFVTL3I4V3BCWUZzUHZkd09JQkFtQlB1UWdHNTdZRUkvdmNMUzFPV2dNRmlvQUVKUHZjZUlvREE0WjNCQy9vYTJ0OWZRQUFBZ0JQLytZRjN3V3dBQ0FBS0FCZ0FMQUFSVml3Rnk4YnNSY1lQbG13QUVWWXNBZ3ZHN0VJRUQ1WnNBVFFzQmNRc0EzUXNBZ1FzaE1CQ2l0WUlkZ2I5Rm13SE5Dd0Z4Q3dJTkN3RnhDd0o5Q3dKeSt3S05Dd0tDK3lJZ1lLSzFnaDJCdjBXYkFvRUxBbDBMQWxMekF4QVFNR0JpY21Kd1luSmlZM0V6TURCaGNXRmhjV05qY1RNd01HRmhjV05qY1RBVGNoQnlFSEl6Y0YzM3NYM3F1K1JIdSttNThSZXJSNkJBTURSRHhiZ3hKN3Rub0tUMDlWZUJKNi9Oc1VBeFFRL3I0WHBSY0VPdjBvcjgwRUJZK1lCQVRVbndMWi9TWW1Ka0JRQXdSNGF3TGEvU1ptZHdJRGRXMEMyZ0VMYTJ1QWdBQUJBR2IraEFUeUJjZ0FIQUJDQUxBQkw3QUFSVml3Q3k4YnNRc2NQbG13QUVWWXNBSXZHN0VDRUQ1WnNBc1FzQS9Rc0FzUXNoSUJDaXRZSWRnYjlGbXdBaEN5R3dFS0sxZ2gyQnYwV1RBeEFTTVRKaVlDTnpjMkVpUVhGaElISXpZbUp5WUdCZ2NEQnhRV0Z4Y0NXYnRGZ3JKSkZDWWV2UUVKbXQzM0Ryd0xrSTVvdG9RV0tnU05mSHYraEFGdUdMQUJEWlQwdndFbmt3TUUvdlhabktzRUEyN2lpZjd5VHFYRUJBRUFBUUJOL29JRDVBUlNBQmtBUWdDd0FTK3dBRVZZc0Fzdkc3RUxHRDVac0FCRldMQUNMeHV4QWhBK1diQUxFTEFQMExBTEVMSVNBUW9yV0NIWUcvUlpzQUlRc2hnRENpdFlJZGdiOUZrd01RRWpFeTRDTnpjK0FoY1dGZ2NuTmlZbkpnSUhCaFlYRndIcHRVWnBpam9PQkJPWDVZaWx5UWlxQm10Zm1jc0NBMnBtYnY2Q0FYSVpsT0tDSzVyK2lnUUUzcWdCWllrRUJ2N2I1SWlqQmdFQUFBRUFRQUFBQkxnRlBnQVRBQk1Bc0E0dnNBQkZXTEFFTHh1eEJCQStXVEF4QVJjSEp3TWpBU2MzRndFbk54Y1RNd0VYQnljQ0xQeFMvT3F3QVNYN1V2NEJEZjFVL1BLcy90VC9WZm9CdDZ4eXFmNitBWldyY3FvQmRhdDBxZ0ZNL21HcmNha0FBQUg4NkFTbS85QUYvQUFIQUJFQXNBQXZzZ01HQ2l0WUlkZ2I5Rmt3TVFFSEp6Y2hOeGNIL2FFWG9pb0NDeEtoSmdVamZRSHBiQUhZQUFBQi9Rc0ZGdi9xQmhRQUV3QXJBTEFTTDdBTjBMQU5MN0lGQWdvcldDSFlHL1Jac0JJUXNBclFzQklRc2hNQ0NpdFlJZGdiOUZrd01RRStBeGNXRmdjSEp6YzJKeVlHQmdjSE4vMDhRSGh1ZHoxbGJ3VURlZ0lJWUN4VStrTktEQVdWQVNrdEtBRUJiMlluQVJSa0JBRVNaUVVCZndBQUFmNFhCUlgrNUFaWEFBVUFEQUN3QVMrd0JkQ3dCUzh3TVFFM013Y1hCLzRYRks4YkpVMEY1WEtYY2prQUFBSCtPd1VYLzFFR1Z3QUZBQXdBc0FNdnNBRFFzQUF2TURFQkp6YzNNd2YrZ2tkUUZiRVlCUmRJZVgrRUFBQUkramord2dHVUJiRUFDd0FYQUNNQUx3QTdBRWNBVXdCZkFIb0FzRDh2c0VzdnNGY3ZzRE12c0FCRldMQURMeHV4QXh3K1diSUpDd29yV0NIWUcvUlpzRDhRc0EvUXNEOFFza1VMQ2l0WUlkZ2I5Rm13RmRDd1N4Q3dHOUN3U3hDeVVRc0tLMWdoMkJ2MFdiQWgwTEJYRUxBbjBMQlhFTEpkQ3dvcldDSFlHL1Jac0MzUXNETVFzamtMQ2l0WUlkZ2I5Rmt3TVFFMk5oY1dGaFVuTmlNbUJ3RTJOaGN5RmhVbk5pTW1Cd00yTmpNV0ZoVW5OaU1pQndFMk5oY1dGaFVuTmlNaUJ3RTJOaGNXRmhVbk5pTW1Cd0UyTmhjV0ZoVW5OaU1tQndFMk5oY1dGaFVuTmlNaUJ3TTJOaGNXRmhVbk5pTWlCLzJUQ25GYldHbHNCVkZUSFFHZkNYRmFXR3BzQlZKU0d4RUljVnRZYUdzRlVWTWQvbnNJYzFoWWFHc0ZVVlVhL1RFS2NWdFlhR3NGVVZJZS9rSUtjMXBZYVd3RlVWUWIvcEFKY0Z0WWFHc0ZVbFFiSmdoeldWaHBiQVZTVXhzRTgxbGxBUUZtV0FGbUFtYis2bGhtQVdsV0FXWUNadjRJVldjQlpWZ0JabVQ5K0ZkbkFnRmxXQUZtWlA3aldXVUJBbVZZQVdZQ1pnVVpXV1VCQW1WWUFXWUNadjRJV0dVQkFXVllBV1prL2ZoWFp3SUJaVmdCWm1RQUNQcFAvbU1CVXdYR0FBUUFDUUFPQUJNQUdBQWRBQ0lBSndBNUFMQWhMN0FTTDdBTEw3QWJMN0FtTDdBQVJWaXdCeThic1FjY1BsbXdBRVZZc0JZdkc3RVdHajVac0FCRldMQUNMeHV4QWhJK1dUQXhCUmNESXhNVEp4TXpBd0UzQlFjbEJRY2xOd1VCTnlVWEJRRUhCU2NsRXljRE54TUJGeE1IQS8zRkRheGxmNkVOcTJSK0Fhd0xBVGNSL3NEN2pncit5UkVCUUFQTkF3Rk1QZjdOL0dnRC9yVStBVFJwRVYxRGxBS3pFRjVGa2pvUy9xOEJZQVNpRUFGUi9xSCtFUXAvWEVVOENuOWJSQUd1RVpsTnYveU5FcGxPdndMbEFnRlBQdjdRL09ZQy9ySS9BUzhBQUFJQUx2LzhBOE1HY1FBU0FCc0FkTElRSEIwUkVqbXdFQkN3RmRBQXNBQkZXTEFOTHh1eERSdytXYkFBUlZpd0VTOGJzUkVjUGxtd0FFVllzQWt2RzdFSkVENVpzQkVRc2dBQkNpdFlJZGdiOUZteUFnMEpFUkk1c0FJdnNBQVFzQXZRc0F6UXNBSVFzaE1CQ2l0WUlkZ2I5Rm13Q1JDeUZBRUtLMWdoMkJ2MFdUQXhBU0VERnhZV0J3WUdKeUVUSXpjek56TUhJUUVERnpZMk56WW1Kd0w5L3NsaC9hVzhEQTc3dGY0MTRyb2J1U0sySWdFNC9qTk4vMmlPREExWFZnVVkvZElCQnNTZXNOVUVCUmlZd2NIOG92NUZBZ0o3YVZ0M0JBQUNBRG9BQUFUdUJiQUFEd0FjQUUyeUR4MGVFUkk1c0E4UXNCalFBTEFBUlZpd0JDOGJzUVFjUGxtd0FFVllzQUV2RzdFQkVENVpzaGNFQVJFU09iQVhMN0lBQVFvcldDSFlHL1Jac0FRUXNoVUJDaXRZSWRnYjlGa3dNUUVESXhNRkhnSUhCZ2NYQnljR0l3RTJOelltSnlVRElUSTNKemNCV21POS9RSDlpYzFrRGhLRFluTnFnS2dCT0RVTkVvWisvcWhqQVR4ZVdsVjBBanI5eGdXd0FRUnR4SCs2ZTVCZW1EWUJHMDFYZnBZRUFmM0ZINEJkQUFBQy85ZitZQVA5QkZJQUZRQW1BRzZ5SWljb0VSSTVzQ0lRc0FmUUFMQUFSVml3RUM4YnNSQVlQbG13QUVWWXNBd3ZHN0VNR0Q1WnNBQkZXTEFLTHh1eENoSStXYkFBUlZpd0J5OGJzUWNRUGxteUNSQUhFUkk1c2c0UUJ4RVNPYkFRRUxJYUFRb3JXQ0hZRy9SWnNBY1FzaDhCQ2l0WUlkZ2I5Rmt3TVFFR0J4Y0hKd1luSmljREl3RTNCellYRmhZWEZnY25OelltSnlZSEF4WVhNamNuTnhjMk53UDBJSTFYZEZOcFpiaGtZYlVCQktRVWhydWJzQVVCQjdjR0EyOXJuWEpiTzVwRVZFNTBSVWdYQWhmeG5ZTmVlemdDQW52OTlnWGFBWG1RQkFUZ3drQThBVlNMb2dRRW1mMzVqUVFwZUY1b2I0MEFBQUVBTlFBQUJNMEhBQUFKQURXeUF3b0xFUkk1QUxBSUw3QUFSVml3Qmk4YnNRWWNQbG13QUVWWXNBUXZHN0VFRUQ1WnNBWVFzZ0lCQ2l0WUlkZ2I5Rmt3TVFFakZTRURJeE1oRXpNRWhBUDlVT0c3L0FLeVBLNEZHQWI2N2dXd0FWQUFBUUFrQUFBRHRBVjJBQWNBTGdDd0JpK3dBRVZZc0FRdkc3RUVHRDVac0FCRldMQUNMeHV4QWhBK1diQUVFTElBQVFvcldDSFlHL1JaTURFQklRTWpFeUVUTXdOai9oaWh0cndCNkRpMEE2SDhYd1E2QVR3QUFBRUFRLzdlQktVRnNBQVdBRnV5QXhjWUVSSTVBTEFLTDdBQVJWaXdGUzhic1JVY1BsbXdBRVZZc0JNdkc3RVRFRDVac0JVUXNnQUJDaXRZSWRnYjlGbXlBeFVURVJJNXNBTXZzQW9Rc2dzRENpdFlJZGdiOUZtd0F4Q3lFUUVLSzFnaDJCdjBXVEF4QVNFREZ4WVdFZ2NDQUFjM05qWTNOaVluSndNakV5RUVpZjFZVWFTbTZtb1JIUDdrNnc2VHRSY1dwNit6ZEwzOUEyVUZFdjR2QVFTTy93Q24vdjMrM2dTU0E4N0h3OUlCQWYxaEJiQUFBUUFrL3VFRGVnUTZBQllBVzdJTUZ4Z1JFamtBc0FvdnNBQkZXTEFWTHh1eEZSZytXYkFBUlZpd0V5OGJzUk1RUGxtd0ZSQ3lBQUVLSzFnaDJCdjBXYklDRlJNUkVqbXdBaSt3Q2hDeUN3RUtLMWdoMkJ2MFdiQUNFTElTQVFvcldDSFlHL1JaTURFQklRTVhIZ0lIQmdJSEp6WTJOelltSnljREl4TWhBMS8rSERGamg4MWtEUkgyc2lSNW5oQVBpbjk2VkxhOEFwb0RvZjdrQVFSNDA0U3AvdjhtbGlDZGY0bWlCQUgrSFFRNkFBRUFOZ0FBQlVnRnNBQVVBR0lBc0FCRldMQUFMeHV4QUJ3K1diQUFSVml3REM4YnNRd2NQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFLTHh1eENoQStXYkFQMExBUEw3SXZEd0Zkc3M4UEFWMnlDQUVLSzFnaDJCdjBXYklCQ0E4UkVqbXdCZEN3RHhDd0V0QXdNUWtDSXdNakJ5TTNJd01qRXpNRE14TXpBek1CQlVqOS9BRW80T0pTSzVFc1pISzgvTDF3WkMyUkxrVUJxUVd3L1VUOURBS085UFQ5Y2dXdy9YOEJBUDhBQW9FQUFBRUFMUUFBQkpNRU9nQVVBSHNBc0FCRldMQU5MeHV4RFJnK1diQUFSVml3RkM4YnNSUVlQbG13QUVWWXNBb3ZHN0VLRUQ1WnNBQkZXTEFETHh1eEF4QStXYkFLRUxBTzBMQU9MN0tmRGdGZHN2OE9BVjJ5bnc0QmNiUy9EczhPQWwyeUx3NEJYYkp2RGdGeXNna0JDaXRZSWRnYjlGbXlBUWtPRVJJNXNBWFFzQTRRc0JMUU1ERUpBaU1ESndjak55TURJeE16QXpNM013YzNBUVNUL2xjQkJkbTdNaWVSSTJGUXRyeTJVV0Vta1NzbkFVc0VPdjMwL2RJQnpRSER3djR6QkRyK050WFhBUUhMQUFFQXV3QUFCc3dGc0FBT0FHc0FzQUJGV0xBR0x4dXhCaHcrV2JBQVJWaXdDaThic1FvY1BsbXdBRVZZc0FJdkc3RUNFRDVac0FCRldMQU5MeHV4RFJBK1diSUlCZ0lSRWptd0NDK3lMd2dCWGJMUENBRmRzZ0VCQ2l0WUlkZ2I5Rm13QmhDeUJBRUtLMWdoMkJ2MFdiSU1BUWdSRWprd01RRWpBeU1USVRjaEF6TUJNd0VCSXdPRnNYRzk0djR6R3dLSmI0a0NYUGY5WWdHOTJBS08vWElGR0pqOWZnS0MvVGI5R2dBQkFIUUFBQVdNQkRvQURnQ0FBTEFBUlZpd0JpOGJzUVlZUGxtd0FFVllzQW92RzdFS0dENVpzQUJGV0xBQ0x4dXhBaEErV2JBQVJWaXdEUzhic1EwUVBsbXdBaEN3Q2RDd0NTK3lud2tCWGJML0NRRmRzcDhKQVhHMHZ3blBDUUpkc2k4SkFWMnlid2tCY3JJQUFRb3JXQ0hZRy9SWnNBWVFzZ1FCQ2l0WUlkZ2I5Rm15REFBSkVSSTVNREVCSXdNakV5RTNJUU16QVRNQkFTTUM4b3BRdHFMK2NCd0NSRkJ1QWJEcS9md0JYTllCemY0ekE2R1ovallCeXYzdi9kY0FBQUVBT2dBQUIrQUZzQUFOQUY0QXNBQkZXTEFDTHh1eEFodytXYkFBUlZpd0RDOGJzUXdjUGxtd0FFVllzQVl2RzdFR0VENVpzQUJGV0xBS0x4dXhDaEErV2JBQjBMQUJMN0l2QVFGZHNBSVFzZ1FCQ2l0WUlkZ2I5Rm13QVJDeUNBRUtLMWdoMkJ2MFdUQXhBU0VUSVFjaEF5TVRJUU1qRXpNQmh3TEdiUU1tRy8yVzRydDEvVGwxdmYyOUF6NENjcGo2NkFLaC9WOEZzQUFCQUNRQUFBV1VCRG9BRFFDYkFMQUFSVml3QWk4YnNRSVlQbG13QUVWWXNBd3ZHN0VNR0Q1WnNBQkZXTEFHTHh1eEJoQStXYkFBUlZpd0NpOGJzUW9RUGxtd0JoQ3dBZEN3QVMreWJ3RUJYYlMvQWM4QkFsMnlQd0VCY2JUUEFkOEJBbkd5RHdFQmNyU2ZBYThCQW5HeS93RUJYYklQQVFGeHNwOEJBVjJ5THdFQlhiUnZBWDhCQW5Ld0FoQ3lCQUVLSzFnaDJCdjBXYkFCRUxJSUFRb3JXQ0hZRy9SWk1ERUJJUk1oQnlFREl4TWhBeU1UTXdGRUFlRlJBaDRiL3BpaXRGRCtIMUMydkxZQ1pRSFZtZnhmQWM3K01nUTZBQUFCQUVMKzNnZHZCYkFBRndCb3NoRVlHUkVTT1FDd0J5K3dBRVZZc0JZdkc3RVdIRDVac0FCRldMQVVMeHV4RkJBK1diQUFSVml3RVM4YnNSRVFQbG15QVJZSEVSSTVzQUV2c0FjUXNnZ0JDaXRZSWRnYjlGbXdBUkN5RGdFS0sxZ2gyQnYwV2JBV0VMSVNBUW9yV0NIWUcvUlpNREVCTXhZQUJ3SUFCemMyTmpjMkppY2pBeU1USVFNakV5RUZBV3I5QVFjYUhQN2s2dzZUdFJjV29xMkJkTHpoL1VuaHZQMEVMd05BQnY3TS8vNzkvdDRFa2dQT3g4RFNCUDFpQlJMNjdnV3dBQUFCQUNUKzRRWkJCRG9BR0FCWEFMQUlMN0FBUlZpd0dDOGJzUmdZUGxtd0FFVllzQlV2RzdFVkVENVpzQkxRc2dBU0dCRVNPYkFBTDdBSUVMSUpBUW9yV0NIWUcvUlpzQUFRc2hBQkNpdFlJZGdiOUZtd0dCQ3lFd0VLSzFnaDJCdjBXVEF4QVJjZUFnY0dCZ2NuTmpZM05pWW5Kd01qRXlFREl4TWhBK0NXaTlkcERoSDFzaVNBbGc4UWtZbXVWTFNoL2g2aHRyd0RUQUtGQVFOMzFJU3MveWFXSXFKNGhLY0VBZjRkQTZIOFh3UTZBQUFDQUhILzR3V3BCY2NBS2dBNUFJRUFzQUJGV0xBZkx4dXhIeHcrV2JBQVJWaXdCQzhic1FRUVBsbXdBTkN5QWdRZkVSSTVzQUl2c0I4UXNBN1FzZzhCQ2l0WUlkZ2I5Rm13QkJDeUZ3RUtLMWdoMkJ2MFdiQUNFTEl0RGdvcldDSFlHL1Jac2hrQ0xSRVNPYklvTFFJUkVqbXdBQkN5S2dFS0sxZ2gyQnYwV2JBZkVMSTBBUW9yV0NIWUcvUlpNREVGSmljR0p5NENKeVkzTnhJQU53Y0dCZzhDRkJZWEZqY21FemMyRWhjZUFoY1dCd2NDQnhZWEFSWVhOaE0zTmljbUp5WUdCd2NHQlJYTm81dWZqZG1DQ3djUEdURUJJZFFTaDdJaEhBT29sVHBNdnlraUovNjZaSkpPQWdFSEpEWDRYblQ5OGdxWjJ6RWdEZ1FMajJpUUhpSUtIUVJGUWdJRGd2Q2FYR0NrQVJvQlRRV2xCZnpkd2xhNTRRSUNFT2NCTnQzNkFUVUZBMjNKZHo4NTZQNnV4UlFDQWJIV2Q1b0JQTTVaVU9NSEJNbkIzRUlBQUFJQVgvL3FCRm9FVlFBbkFESUFnUUN3QUVWWXNCNHZHN0VlR0Q1WnNBQkZXTEFFTHh1eEJCQStXYkFBMExJQ0JCNFJFam13QWkrd0hoQ3dEZEN5RGdFS0sxZ2gyQnYwV2JBRUVMSVdBUW9yV0NIWUcvUlpzQUlRc2lvQkNpdFlJZGdiOUZteUdBSXFFUkk1c2lVcUFoRVNPYkFBRUxJbkFRb3JXQ0hZRy9SWnNCNFFzakFCQ2l0WUlkZ2I5Rmt3TVFVbUp3WW5MZ0luSmhJMk5qY0hCZ1lIQndZV0ZoY1dOeVkzTnpZMkZ4WVdGeFlIQmdjV0Z3RUdGelkyTnpVbUp5WURCQnVsZzRTQ2JxNWtCd2N6Y0tkc0VtQjRFQU1DTG1aSkl6Nk9IUXNhd1pGMWhnTUNGaU9jUTJIK2JoYURURW9MQlZlRUlRMEVOVUlDQVhEU2dIUUJCN2hyQTU0RnpzWTRZSjlXQVFFTXR2Qlp6Zk1GQkw2Z1Q0WGJuUThDQWFqU2VFN2h2eW1xQkFUKzdRQUFBUUNzL3FFR1l3V3dBQk1BV3dDd0VTK3dBRVZZc0Fjdkc3RUhIRDVac0FCRldMQU1MeHV4REJ3K1diQUFSVml3RXk4YnNSTVFQbG13QnhDeUNBRUtLMWdoMkJ2MFdiQUEwTEFIRUxBRjBMQUQwTEFDMExBVEVMSUtBUW9yV0NIWUcvUlpzQTdRTURFQklUY2hOVE1WSVFjaEF5RVRNd016QXlNVElRSVkvcFFhQVdTOEFYNGIvb3ZIQXJqaHZlR1VhNmc5Ky9ZRkdKY0JBWmY3aFFVVCt2SCtBQUZmQUFFQVYvNi9CTWdFT2dBUEFFc0FzQTB2c0FCRldMQURMeHV4QXhnK1diQUFSVml3RHk4YnNROFFQbG13QXhDeUJBRUtLMWdoMkJ2MFdiQUEwTEFQRUxJR0FRb3JXQ0hZRy9SWnNBTVFzQWpRc0FZUXNBclFNREVCSVRjaEJ5TURJUk16QXpNREl4TWhBV0grOWhvQ3NSdnhpQUhpb3JhaWZXU2lPUHpxQTZPWGwvejBBNlA4WGY0b0FVRUFBUURFQUFBRk9RV3dBQmtBVWJJSEdoc1JFamtBc0FCRldMQUFMeHV4QUJ3K1diQUFSVml3REM4YnNRd2NQbG13QUVWWXNBOHZHN0VQRUQ1WnNnWUFEeEVTT1h5d0JpOFlzQW5Rc0FZUXNoVUJDaXRZSWRnYjlGbXdFdEF3TVFFREJoY1dGaGNUTXdNMk54TXpBeU1UQmdjSEl6Y21KamNUQWVKTENRZ01ibXM3a2poaWpueTkvYnh1ZFgwdWtpN1UwaGRMQmJEK04wWTFVRklHQVRiKzBRMGhBcmY2VUFKY0l3enY2Z2ZpMkFISEFBRUFtQUFBQkJvRU93QVlBRW9Bc0FCRldMQVhMeHV4RnhnK1diQUFSVml3REM4YnNRd1lQbG13QUVWWXNBRXZHN0VCRUQ1WnNoRUJEQkVTT1h5d0VTOFlzZ2NCQ2l0WUlkZ2I5Rm13Qk5Dd0VSQ3dGTkF3TVNFakV3WUhCeU0zSmlZM0V6TURCaGNXRnhNekF6WTNFek1EWHJaS05HVWNraHlXbVJJeXRUUUZBUU43TnBNMFBWcGh0Z0dKRHcySWh4TFVyUUU4L3NNcktJc2RBUmorNlFnVEFoc0FBUURzQUFBRllnV3dBQklBUHdDd0FFVllzQUl2RzdFQ0hENVpzQUJGV0xBU0x4dXhFaEErV2JBQVJWaXdDaThic1FvUVBsbXlCUklDRVJJNXNBVXZzZzhCQ2l0WUlkZ2I5Rmt3TVRNVE13TTJGeFlXQndNakV6WW5KaWNtQndQcy9ieHZzY25lMUJkTXZFc0lDQmpQb2VCOUJiRDlwRGNDQk9yVS9qa0J5RVUyb1FZRE52MUpBQUlBaXYvckJjVUZ5QUFqQUM0QVZ3Q3dBRVZZc0JFdkc3RVJIRDVac0FCRldMQUFMeHV4QUJBK1diSWxBQkVSRWptd0pTK3lGd0VLSzFnaDJCdjBXYkFGMExBbEVMQU4wTEFBRUxJZUFRb3JXQ0hZRy9SWnNCRVFzaW9CQ2l0WUlkZ2I5Rmt3TVFVbUpnSTNOeVltTnhjR0Z4WVhOeElBRnhZU0Z4WUhCeUVIQmhjV0ZoY1dOamNYQmdFbE5qYzJKaWNtQmdjSEEzT3IrbTBiRTRXQUM1TUVBd3ByRkU0QlBOako1QVVCRFJEOG5nOE1DeENvaTE2cVZTS0EvZUFDcXc0Q0E0cUVqZE04RHhVQnBRRWZxMmNheHBnQ0tDUjJLMHdCQ2dFbkJRVCs5dTFhVW1SZVdsT0dtZ01DTGlXUVlBTlhBazQ4b2JFRUJNclFPZ0FBQWdBSC8rb0VSd1JUQUI4QUtRQmVBTEFBUlZpd0R5OGJzUThZUGxtd0FFVllzQUF2RzdFQUVENVpzaVFBRHhFU09iQWtMN1MvSk04a0FsMnlGUUVLSzFnaDJCdjBXYkFGMExBa0VMQU0wTEFBRUxJWkFRb3JXQ0hZRy9SWnNBOFFzaUFCQ2l0WUlkZ2I5Rmt3TVFVdUFqYzNKaVkzRndjR0Z6WWtGeFlXRnhZSEJ5RUdGaGNXTmpjWEJnWVRKZ1lIQlRjMkp5WW1BbENGeTFjWEJHQmRCNDhFQXo5R0FSaXBwcjBHQWdnTS9UMFRoSDlja1Qxb1NOd0ZiYTAwQWc0RUNBY0xhUlFDa1BDSkV4NnJoZ0UzWGkzUTdRVUUyTFpBUVZPWXlnTUNVVUZZYUdrRHpRV2Rud0lTTlRSVVp3QUFBUUExL3RNRlJBV3dBQllBWGJJVkZ4Z1JFamtBc0E0dnNBQkZXTEFDTHh1eEFodytXYkFBUlZpd0JpOGJzUVljUGxtd0FFVllzQUF2RzdFQUVENVpzZ1FBQWhFU09iQUVMN0FJMExBT0VMSVBBUW9yV0NIWUcvUlpzQVFRc2hZQkNpdFlJZGdiOUZrd01UTWpFek1ETXdFekFSWVNCd0lBQnpjMk5qYzJKaWNsOHIzOXZXMTRBbC9yL1pEVDJCZ2EvdDdxQzVLMUZ4YWpyZjcxQmJEOWp3SngvWVFZL3MvcS92Mysyd2FhQXMzRXdOTUJBUUFCQUMzKytnUldCRG9BRmdCakFMQUdMN0FBUlZpd0VpOGJzUklZUGxtd0FFVllzQlV2RzdFVkdENVpzQUJGV0xBUEx4dXhEeEErV2JBVDBMQVRMN1MvRTg4VEFsMnlMeE1CWGJML0V3RmRzQURRc0FZUXNnY0JDaXRZSWRnYjlGbXdFeEN5RGdFS0sxZ2gyQnYwV1RBeEFSWVdCd1lHQnljMk5qYzJKaWNuQXlNVE13TXpBVE1DYktPcUVCSHpzU1IvbHcwUGpKT3dVTGE4dGxGUUFjN3FBbUFnNktLbDhpV1dINXB2ZjVBRkFmNHpCRHIrTmdIS0FBQUJBRVArUndWdEJiQUFGQUJtQUxBSUw3QUFSVml3QUM4YnNRQWNQbG13QUVWWXNBTXZHN0VESEQ1WnNBQkZXTEFTTHh1eEVoQStXYklCRWdBUkVqbDhzQUV2R0xJZkFRRnh0R0FCY0FFQ1hiS1FBUUZkc0FnUXNnMEJDaXRZSWRnYjlGbXdBUkN5RVFFS0sxZ2gyQnYwV1RBeEFRTWhFek1CQmdZbklpYzNGak15TnhNaEF5TVRBZnh5QXJWenUvNzVHY0tWTGtrZU9DaU1JM2o5UzIrOS9RV3cvVzRDa3ZuOHJiZ0NGSmtSMGdMSy9YOEZzQUFBQVFBay9rY0VLd1E2QUJRQWZnQ3dBRVZZc0FBdkc3RUFHRDVac0FCRldMQURMeHV4QXhnK1diQUFSVml3Q0M4YnNRZ1NQbG13QUVWWXNCSXZHN0VTRUQ1WnNBSFFzQUV2c204QkFWMjB2d0hQQVFKZHN2OEJBVjJ5RHdFQmNiS2ZBUUZkc2k4QkFWMnlQd0VCY2JBSUVMSU5BUW9yV0NIWUcvUlpzQUVRc2hFQkNpdFlJZGdiOUZrd01RRURJUk16QXdZR0p5SW5OeFl6TWpjVElRTWpFd0dXVWdIaFVyVEhGcjZXTEVzZk5TdU1JMXIrSDFDMnZBUTYvaXNCMWZ0dHA3a0NGSklRMHdJYy9qSUVPZ0FDQUZILzZRVXFCY1lBR2dBa0FGNnlHaVVtRVJJNXNCb1FzQnpRQUxBQVJWaXdBQzhic1FBY1BsbXdBRVZZc0Frdkc3RUpFRDVac2c4QUNSRVNPYkFQTDdBQUVMSVZBUW9yV0NIWUcvUlpzQWtRc2hzQkNpdFlJZGdiOUZtd0R4Q3lId01LSzFnaDJCdjBXVEF4QVJZRUVnY0hCZ0lFSnlZbUFqYzNCVGMySnlZbUp5WUhKelkyQXhZMk53VUhCaGNXRmdNQXVBRUJjUm9NSGREKzNhV3Y3R01hRkFQUUF4VUpENzJZcHNvalJOUW9wZnRIL09nSER3b1FwQVhEQXJQK3ZzWlZ6djZ3cWdNRXB3RXR2M3dEREdOZ25Ma0RBMWFSTHpiNnd3WDE4Z0VqV1ZDQmtRQUFBUUE4LytjRWV3V3dBQnNBWmJJWkhCMFJFamtBc0FCRldMQUNMeHV4QWh3K1diQUFSVml3REM4YnNRd1FQbG13QWhDeUFBRUtLMWdoMkJ2MFdiSUVBQUlSRWpteUJRSU1FUkk1c0FVdnNBd1FzQkRRc0F3UXNoTUJDaXRZSWRnYjlGbXdCUkN5R1FNS0sxZ2gyQnYwV1RBeEFTRTNJUWNCRmhZSERnSW5KaVkzTXdZV0Z4WTJOelltSnljM0EzejlrUndEVWhmK0k3VEVEZ3VROG8yKzNReTZDSHR1Zzc4UUVZS0xsQndGRXA2Ry9pUVE1cnFEeUd3REJPeTZkSk1FQkpaL2pKSUVBYUFBQUFILy9QNXhCRFVFT2dBYUFHR3lCUnNjRVJJNUFMQUxMN0FBUlZpd0FpOGJzUUlZUGxteUFBRUtLMWdoMkJ2MFdiSUVBQUlSRWpteUdnc0NFUkk1c0JvdnNBWFFzQXNRc1E4S0sxallHOXhac0FzUXNoSUJDaXRZSWRnYjlGbXdHaEN5R1FFS0sxZ2gyQnYwV1RBeEFTRTNJUWNCRmhZSEJnUW5KaVkzTXdZV0Z4WTJOelltSnljM0F5ejlvaHNEVEJYK0o3Uy9EaEgrMWRxOTNReTBDSHh3aHNNUEVJaUtsQnNEb1psLy9oWVM0clhFOHdRRTdMaHptQVFFbTM2TmtBUUJvUC8vLy9qK1JRVG5CYkFBSmdDd1FnQUFKZ0hldVVBQUJ3R3ZBT2tBQVAvLy8rbitSUVBRQkRvQUpnRHJUUUFBSmdIZW00NEJCd0d2QU5vQUFBQUlBTElBQ1FGZE1ERUFBZ0F4QUFBRTRRV3dBQW9BRXdCUXNnUVVGUkVTT2JBRUVMQU4wQUN3QUVWWXNBRXZHN0VCSEQ1WnNBQkZXTEFETHh1eEF4QStXYklBQVFNUkVqbXdBQyt3QXhDeUN3RUtLMWdoMkJ2MFdiQUFFTElNQVFvcldDSFlHL1JaTURFQkV6TURKU1ltTnpZa014TVRKU0lHQndZV0Z3UEFZNzc5L2Z2SjVSRVJBUzdmNG1QK3RvMi9FUkI2ZXdOekFqMzZVQUVHNjhQTjh2MHBBamdCbW9SM25RWUFBZ0F5Ly80R013V3dBQmNBSUFCYXNoZ2hJaEVTT2JBWUVMQUgwQUN3QUVWWXNBZ3ZHN0VJSEQ1WnNBQkZXTEFYTHh1eEZ4QStXYklHRndnUkVqbXdCaSt3RnhDeUdBRUtLMWdoMkJ2MFdiQUswTElRQmhjUkVqbXdCaEN5R2dFS0sxZ2gyQnYwV1RBeEpTWW1OellrTXdVVE13TVhOalluSmljWEZoY1dBZ1luSlJNbElnWUhCaFlYQWVMTjR4RVRBU3ZpQVdCa3ZlSkxqWjRGQWhPdkR3Z1BjK1dUL3Y1aS9yYU13QkVRZlhnQkNPMi96ZklCQWozNjZ3RUM1OUZTVUFGUlVLdis2NVlDblFJNEFacUVlWjBFQUFBQ0FFei81Z1pCQmhnQUl3QXpBSUN5QmpRMUVSSTVzQVlRc0NUUUFMQUFSVml3Qnk4YnNRY2VQbG13QUVWWXNBUXZHN0VFR0Q1WnNBQkZXTEFlTHh1eEhoQStXYkFBUlZpd0dpOGJzUm9RUGxteUJnUWVFUkk1c2c0QkNpdFlJZGdiOUZteUZBUWVFUkk1c2h3RUhoRVNPYkFFRUxJbUFRb3JXQ0hZRy9SWnNCNFFzaThCQ2l0WUlkZ2I5Rmt3TVJNMkVqWVhGaGNUTXdNR0Z4WVdGeFlTRXpZbk54WVhGZ0lFSnlZbkJpY21KaWNtTndFbUp5WUdCd2NHRnhZV0Z4WTJOemRWRll6TGdLNWRiYlhQQkFRRlFqbWp4Z2dDRUtnTkF3ZUkvdjJtN2kyTHpKZXhCd01HQXVJL2tJaTJIZ01IQXdWcllWZURNd1lDQXJJQkZvY0RCSUFDVHZ0QUpDVS9TZ01KQVVFQkltTmtBV1JqMS82Z3Z3TUZzYnNFQXRTMVBUc0JRb0FFQmQvVEZEdy9iWDhEQTFOQ1B3QUFBUUN0LytnRnFnV3dBQzBBWEFDd0FFVllzQTR2RzdFT0hENVpzQUJGV0xBcUx4dXhLaEErV2JJRkxnNFJFam13QlMreUJBRUtLMWdoMkJ2MFdiQU9FTElOQVFvcldDSFlHL1Jac2hVRUJSRVNPYkFxRUxJZEFRb3JXQ0hZRy9SWnNpTXFEaEVTT1RBeEFUWW1KeWMzRnpJMk56WW1KeVUzQlJZWEZnY0dCUllXRnhZSEJoWVhGallTTnpZbk14WVhGZ0lHSnlZbU53S0JDV05qeVJ5Q29iZ1FEWHVBL3BrY0FUbjdjbDhQRmY3MVJsSUdCQXdIT3o5ZGtGY0dBeEN2REFRR2d2Q2ZqNWNJQVhWMmh3VUNuZ0dGaEhKOEJBR2VBUUYvYXFqbmNCOTZVVFI1UjF3RUJZUUJGOEJqWkdSajF2NmZ2d0lDcUpzQUFBRUFhUC9qQkxnRU9nQW5BRmtBc0FCRldMQWVMeHV4SGhnK1diQUFSVml3RGk4YnNRNFFQbG15QWdFS0sxZ2gyQnYwV2JJSERoNFJFam15RmlnZUVSSTVzQll2c2hVQkNpdFlJZGdiOUZtd0hoQ3lIUUVLSzFnaDJCdjBXYklsRlJZUkVqa3dNU1VHRnhZMk56WW5GeFlYRmdJR0p5WW1OemMySnljM0Z6STJOelluSlRjWEZoWUhCZ2NIRmdjQ2tRaFNhcFlZR2lpcER3a1NjZVdRZlgwR0NBdXgyQm1yZFl3S0ZkVCs5eFQ0dDhjS0NKayttQS9UVXdRRm9wQ2VuUUZPVHB6KzJhRURBbnh5VFl3S0FaWUJXVkdmQ3dHV0FRV2xqb2xQSFRpeUFBQUJBSy8rMWdPVkJhOEFKd0JXQUxBYkw3QUFSVml3Q2k4YnNRb2NQbG13QUVWWXNCNHZHN0VlRUQ1WnNnRW9DaEVTT2JBQkw3SUFBUW9yV0NIWUcvUlpzQW9Rc2drQkNpdFlJZGdiOUZteUVRQUJFUkk1c0I0UXNSY0tLMWpZRzl4Wk1ERVROeGN5TmpjMkppY2xOeGNXRmdjR0JnY1dGeFlQQWpjSEJnY25OamNqSmljbU56YzJKaWV2RzVPbnZBOE5lNEQrNkJ2dTNlVVJDNG1Fa0JBRUJ4Y0dxaGNrdVdoWEwyQWhCUVFJRmcxbmFnSjVsd0dMZ1hpQUJBR1hBUUhZdkhHbk8wQ3JNeldJR0FHTjNaUk1aM2NyUnlVL25IT09CQUFBQVFDZy9zWURkZ1E2QUNNQVZnQ3dHaSt3QUVWWXNBb3ZHN0VLR0Q1WnNBQkZXTEFkTHh1eEhSQStXYklCSkFvUkVqbXdBUyt5QUFFS0sxZ2gyQnYwV2JBS0VMSUpBUW9yV0NIWUcvUlpzaEVBQVJFU09iQWRFTEVXQ2l0WTJCdmNXVEF4RXpjWE1qWTNOaVluSlRjRkZoWUhCZ1lIRmhjV0J3YzNCd1lISnpZM0l5WTNOellub0JuRWRvNExDbUZuL3VBYkFRaTF4d29GYTNKM0VBVUdESnNXSXJ4blhpeGNLUVlSRDdFQnVKY0JXRk5SVmdNQmxnRUZwWTVRZWkwdGZpa29Td0dPMjVWTWMzc3JWSStmQ1FBQUFmL2YvK1VIT3dXd0FDUUFZcklqSlNZUkVqa0FzQUJGV0xBT0x4dXhEaHcrV2JBQVJWaXdJUzhic1NFUVBsbXdBRVZZc0FZdkc3RUdFRDVac0E0UXNnQUJDaXRZSWRnYjlGbXdCaEN5Q0FFS0sxZ2gyQnYwV2JBaEVMSVZBUW9yV0NIWUcvUlpzaHNPQmhFU09UQXhBU0VEQndJQ0J5TTNOelkyTnpjVElRTUdGeFlXRnhZU0V6WW5OeFlYRmdJRUp5WW1Od1NBL2l0M0p6L3R0MHNSTTM2ZEt4bVFBMGU4QkFRRlFUZWZ3d2dDRWE4TkF3ZUovdjJrb0owUkJSTDkzYnorMi83MkJKd0RETjN3amdLcSs2a2pKRDVKQXdrQlBRRWhZMlFCWkdQWi9xREFCQWJDcVFBQUFmL2EvK1VHQlFRNkFDUUFZcklBSlNZUkVqa0FzQUJGV0xBT0x4dXhEaGcrV2JBQVJWaXdJUzhic1NFUVBsbXdBRVZZc0FZdkc3RUdFRDVac0E0UXNnQUJDaXRZSWRnYjlGbXdCaEN5Q1FFS0sxZ2gyQnYwV2JBaEVMSVZBUW9yV0NIWUcvUlpzaG9oRGhFU09UQXhBU0VEQndZR0J5TTNOelkyTnpjVElRTUdGeFlXRnhZU0V6WW5NeFlYRmdJR0p5WW1Od05SL3NkU0ZqVytsVTRUSm1SK0lBMWlBcHg3QXdNRlF6ZUpvUVVCRWFnTkJRaDU1SkNiblJFRG9mNk9iUExPQTZJQ0JxbkRTZ0hhL1I0akpVQk5BUVlCSmdFRVhsNWVYc1QrczdBRUJNQ3NBQUFCQUR2LzVnYzhCYkFBSGdCN0FMQUFSVml3R3k4YnNSc2NQbG13QUVWWXNCNHZHN0VlSEQ1WnNBQkZXTEFZTHh1eEdCQStXYkFBUlZpd0VpOGJzUklRUGxteUJnRUtLMWdoMkJ2MFdiSUxFaDRSRWptd0dCQ3dITkN3SEMreS94d0JYYkpmSEFGZHNzOGNBVjJ5THh3QlhiSWZIQUZ4c2s4Y0FYR3lGd0VLSzFnaDJCdjBXVEF4QVFNR0Z4WVdGeFlTRXpZbk54WVhGZ0lFSnlZbU54TWhBeU1UTXdNaEV3Vll1Z01EQlVJMW44UUdBaEd3RFFRSGlmNytwcHljRFMvOVdHKzkvYjF6QXFoeUJiRDdweU1rUGtrQkNBRS9BUjVqWkFGa1k5ditvOEFEQk1TcEFTZjlmd1d3L1c0Q2tnQUJBQ1AvNXdZWEJEb0FIZ0NMQUxBQVJWaXdCUzhic1FVWVBsbXdBRVZZc0Fndkc3RUlHRDVac0FCRldMQWJMeHV4R3hBK1diQUFSVml3QWk4YnNRSVFQbG13QnRDd0JpK3lid1lCWGJML0JnRmRzZzhHQVhHMG53YXZCZ0p4c2o4R0FYRzB2d2JQQmdKZHNpOEdBVjIwendiZkJnSnhzZ0VCQ2l0WUlkZ2I5Rm13R3hDeUR3RUtLMWdoMkJ2MFdiSVVHd2dSRWprd01RRWhBeU1UTXdNaEV6TURCaGNXRmhjV0VoTTJKek1XRnhZQ0JpY21KamNERXY0V1VMVzh0VklCNlZLMWV3UUVCVUU0aWFRREFSR25EZ1VJZWVLVG1aMFBBYzMrTXdRNi9pb0IxdjBlSXlWQlNnTUdBU2tCQVY1ZVhsM0kvcmV2QWdMR3FBQUJBR3IvNkFTQ0JjZ0FJZ0JBQUxBQVJWaXdDUzhic1FrY1BsbXdBRVZZc0FBdkc3RUFFRDVac0FrUXNnNEJDaXRZSWRnYjlGbXdBQkN5RndFS0sxZ2gyQnYwV2JJZEFBa1JFamt3TVFVbUppY21OemNTQUJjV0Z3Y21KeVlDQndjR0Z4WVdGeFkyTmpjMEp6TVhGZ0lFQWtqRy9oTUhDaWN0QVdyOHlZdEZmcGV3L3lNbkJ3SURub1pvcDFjQkM3TUtCNGIrL2hVRi9NNU1UL2tCSGdGY0FnSldpMFVDQXY3NjNQWTBOcDNFQWdOb3dySmFXYlBWL3ZHVUFBRUFUUC9uQTRvRVVnQWZBRDBBc0FCRldMQVRMeHV4RXhnK1diQUFSVml3Q3k4YnNRc1FQbG15QUFFS0sxZ2gyQnYwV2JJRkN4TVJFam13RXhDeUdBRUtLMWdoMkJ2MFdUQXhKUlkyTmpjbk14Y1dCZ1luTGdJM056WUFGeFlYQnlZakpnWUhCaGNXRmdIMlNtb3VBZ0twQmdObHdubUh2MWdRQXgwQkt0S29hamxoZm9YQUdnd0dDbnVDQWo5eWRIVjBuN3hrQXdTTitKSWErd0U0QWdKRWpqMEMyckZuUm5TTUFBQUJBSnIvNVFVZ0JiQUFHZ0JEQUxBQVJWaXdBeThic1FNY1BsbXdBRVZZc0Jjdkc3RVhFRDVac0FNUXNnUUJDaXRZSWRnYjlGbXdBTkN3RnhDeUNRRUtLMWdoMkJ2MFdiSVBGd01SRWprd01RRWhOeUVISVFNR0ZoY1dOaEkzTmljM0ZoY1dBZ2NHSnlZbU53Sm4vak1jQkY4Yy9pdWhDRU5EYTZOWkF3RVFyZzREQlY5ZWxOMllvQTBGRXA2ZS9FZGliUUlFa0FFWnNHTmtBV1JqdGY3SmFLVUVBc09zQUFBQkFIMy82QVNJQkRvQUdnQk5zZ1ViSEJFU09RQ3dBRVZZc0FJdkc3RUNHRDVac0FCRldMQVhMeHV4RnhBK1diQUNFTElBQVFvcldDSFlHL1Jac0FUUXNBWFFzQmNRc2dzQkNpdFlJZGdiOUZteUVBSVhFUkk1TURFQklUY2hCeUVEQmhjV0ZoY1dFaWNtSnhjV0Z4WUNCaWNtSmpjQjJQNmxHZ054R3Y2Z1lRUUVCVUk1aGFNR0F4S25EZ2tRY2VPVG1wME5BNlNXbHYyMEpDVS9Td01HQVFMVFVVOEJUMCtpL3RpZ0FRTEVxZ0FBQVFCcS8ra0ZJd1hIQUN3QVpySWFMUzRSRWprQXNBQkZXTEFiTHh1eEd4dytXYkFBUlZpd0RpOGJzUTRRUGxteUJnRUtLMWdoMkJ2MFdiSUtHdzRSRWptd0RoQ3dLOUN3S3kreUxBRUtLMWdoMkJ2MFdiSVVMQ3NSRWpteUh4c09FUkk1c0JzUXNpTUJDaXRZSWRnYjlGa3dNUUVpQmdjR0ZoY1dOamMzQmdZRUp5NENOellsSmlZM05qWWtGeDRDQnljMkppY21Cd1lIQmhZWEZ3Y0N6YjNRRGcrd25aWGhGYndPbi83NW01bnhkQW9WQVRKZlpBVUlsQUVQcDRiWWRnVzdCWnlGbkd0M0VBNlptN1FjQXBpUGYzV0xBd0tUZXdHRXdXWURBbXk2ZXY5ak1LQmRnTUZwQWdObHRuY0JiWVFGQWtCSWYzRjZBUUdlQUFBQ0FQSUVjZ05NQmRZQUJRQVFBQnNBc0EwdnNBYlFzQVl2c0FIUXNBRXZzQTBRc0FYUXNBVXZNREVCRXpNSEFRY0RNd2NHRnhZWEJ5WW1Od0hxbzc4Qi92Wlk0cVFOQ2dnSUpraElTQWtFbFFGQkZ2N0ZBZ0ZUVHo0Mk56TTNMb3hXLy84QUdRSWZBZzhDdGdBR0FCRUFBUC8vQUJrQ0h3SVBBcllBQmdBUkFBRC8vd0NuQW9zRWxRTWlBRVlCbDlvQVRNMUFBUC8vQUprQ2l3WFhBeUlBUmdHWGlBQm1aa0FBLy8vL1gvNXNBeDhBQUFBbkFFUC8zdjhEQVFZQVF3a0FBQlFBUUFrQUFoQUNJQUl3QWdSZHNyQUNBVjB3TVFBQkFLNEVNUUlGQmhNQUJ3QVdBTEFBUlZpd0FDOGJzUUFlUGxtd0JkQ3dCUzh3TVFFWEJnY0hJemMyQWFGa2NCc1l0QklrQmhOS2pJYUdjTjRBQUFFQWlRUVdBZUFHQUFBSEFCWUFzQUJGV0xBRUx4dXhCQjQrV2JBQTBMQUFMekF4RXljMk56Y3pCd2J0WkhZWUY3SVRKQVFXU3BPS2czbmhBQUgvbVA3bEFPb0F0UUFIQUJjQXNBZ3ZzZ1FGQ2l0WUlkZ2I5Rm13QU5Dd0FDOHdNUU1uTmpjM013Y0dCV056R0JLMUR5UCs1VXVRaTJwZzNBQUFBUURVQkJjQnVnWUFBQXNBREFDd0N5K3dCdEN3Qmk4d01RRUhCaGNXRndjbUp5WTNOd0doRmdzS0NpWnFaeEFGQmhVR0FJVk5Sa2RGUldxZE1UR0EvLzhBdGdReEF6NEdFd0FtQVd3SUFBQUhBV3dCT1FBQS8vOEFsUVFXQXhVR0FBQW1BVzBNQUFBSEFXMEJOUUFBQUFML2xQN1NBaFVBOWdBSEFBOEFJd0N3RUMreUJBVUtLMWdoMkJ2MFdiQU0wTEFNTDdBSTBMQUlMN0FBMExBQUx6QXhBeWMyTnpjekJ3WVhKelkzTnpNSEJnUm9kQnNldEJrblptZDBHaDYxR1NmKzBrdVhsNnVjOFpkTG1wU3JuUEFBQVFCM0FBQUVVUVd3QUFzQVN3Q3dBRVZZc0Fndkc3RUlIRDVac0FCRldMQUdMeHV4QmhnK1diQUFSVml3Q2k4YnNRb1lQbG13QUVWWXNBSXZHN0VDRUQ1WnNBb1FzZ0FCQ2l0WUlkZ2I5Rm13Qk5Dd0JkQXdNUUVoQXlNVElUY2hFek1ESVFRNC9ubVN0WkgrZkJnQmd6dTJPd0dKQTZIOFh3T2htUUYyL29vQUFBSC85djVnQkdBRnNBQVRBSHdBc0FCRldMQU1MeHV4REJ3K1diQUFSVml3Q2k4YnNRb1lQbG13QUVWWXNBNHZHN0VPR0Q1WnNBQkZXTEFDTHh1eEFoSStXYkFBUlZpd0FDOGJzUUFRUGxtd0FFVllzQVF2RzdFRUVENVpzZ1lCQ2l0WUlkZ2I5Rm13RGhDeUNBRUtLMWdoMkJ2MFdiQUowTEFRMExBUjBMQUdFTEFTMExBVDBEQXhJU0VESXhNaE55RVRJVGNoRXpNRElRY2hBeUVEdC81MlFiWkMvbjRZQVlGNi9uNFlBWUU3dGpzQmloaitkbmtCaXY1Z0FhQ1hBd3FaQVhiK2lwbjg5Z0FCQUtBQ0ZRSXNBOHdBRFFBV3Nnb09EeEVTT1FDd0F5K3hDZ29yV05nYjNGa3dNUk0yTmpNeUZoVUhCZ1lqSWlZMW9RWjFWbEZwQWdaeFdsSm5BdjFlY1cxWUtscHVhbFVBLy84QU9mL3lBc0VBMHdBbUFCSUVBQUFIQUJJQnJBQUEvLzhBT2YveUJGTUEwd0FtQUJJRUFBQW5BQklCckFBQUFBY0FFZ00rQUFBQUFRQWFBaDRBMndLM0FBTUFEd0N3QWkreEFRb3JXTmdiM0Zrd01STWpOek8vcFJ1bUFoNlpBQVlBbC8vbkJ2NEZ4d0FYQUNZQUtnQTRBRVlBVkFDRkFMQXBMN0FuTDdBQVJWaXdHQzhic1JnY1BsbXdBRVZZc0JFdkc3RVJFRDVac0FEUXNBQXZzQVhRc0FVdnNCRVFzQTNRc0EwdnNCZ1FzQi9Rc0I4dnNCRVFzaTRFQ2l0WUlkZ2I5Rm13QUJDeU5RUUtLMWdoMkJ2MFdiQXVFTEE4MExBMUVMQkQwTEFmRUxKS0JBb3JXQ0hZRy9SWnNCZ1FzbEVFQ2l0WUlkZ2I5Rmt3TVFFV0ZoYzJGeFlYRmdjSEJnWW5KaWNHSnlZbU56YzJOZ0VXRmdjSEJnWW5KaVkzTno0Q0F5Y0JGd0VHRmhjV05qYzNOaVluSmdZSEJRWVdGeFkyTnpjMkppY21CZ2NCQmhZWEZqWTNOelltSnlZR0J3UTdRbkFlWm9kNFNFWUlCZzIzZ3BVK1pJVjRrUWdHRGJmK01YeU9DQVlQdG4xNWtnZ0hDRm1OUFdJRGNXTCtyUWRFUWtaakN3a0hRa05HWXd3QnRBZERRa2RqQ3drSFFrTkdZd3o3N0FkRVFrTmxEQWtIUWtOSVl3c0Nrd0k4UEhvQ0FsZFZma09PclFJRmRIc0VBcXQvUW8ydkF6RUVxMzlOaHFvRUFxeCtURldQVFBxcFNBUm9SL3c4VG1RQ0FtZFJUMDVqQWdKalUxQk1aZ0lDYVU5UFMyWUNBbU5UQXVSTlpBSUNZMVJPVEdZQ0FtaFBBQUFCQUY4QW1RSlVBN1VBQmdBUUFMQUZMN0lDQndVUkVqbXdBaTh3TVFFVEl3TTNBVE1CQzdKOTRRSUJXNWdDSFA1OUFZTVVBWVVBQUFFQUFnQ1lBZmNEdFFBR0FCQUFzQUF2c2dNSEFCRVNPYkFETHpBeEFSTUhBU01CQXdFVzRRTCtwWmdCU0xFRHRmNTlGZjU3QVpnQmhRQUIvKzhBY0FQQ0JTQUFBd0FKQUxBQUw3QUNMekF4TnljQkYxRmlBM0ZpY0VnRWFFZ0EvLzhBWVFLUUF1UUZwUU1IQWRnQWNRS1FBQk1Bc0FCRldMQUpMeHV4Q1J3K1diQU4wREF4QUFBQkFINENpd05LQmJvQUVRQk1BTEFBUlZpd0FDOGJzUUFjUGxtd0FFVllzQU12RzdFREhENVpzQUJGV0xBUEx4dXhEeFErV2JBQVJWaXdDQzhic1FnVVBsbXlBUU1QRVJJNXNBTVFzZ3dEQ2l0WUlkZ2I5Rmt3TVFFWE5qTXlGZ2NESXhNM0ppY21Cd01qRXdHRUFWeUdjWElNVTZaTkF3Um1ZME5ncDRzRnJIeUtvcEgrQkFIZFFuNERBbS85elFNZ0FBSC84d0FBQklrRnlnQW5BSThBc0FCRldMQVhMeHV4Rnh3K1diQUFSVml3Qmk4YnNRWVFQbG15SndZWEVSSTVzQ2N2c2dBQ0NpdFlJZGdiOUZtd0JoQ3lCUUVLSzFnaDJCdjBXYkFKMExBQUVMQU4wTEFuRUxBUDBMQW5FTEFqMExBakw3WVBJeDhqTHlNRFhiSWtBZ29yV0NIWUcvUlpzQkhRc0NNUXNCUFFzQmNRc1JzS0sxallHOXhac0JjUXNoNEJDaXRZSWRnYjlGa3dNUUVoQndZSEpRY2hOeGMyTnpjSE56TTNJemN6TnpZa0Z4WVdCeWMySmljbUJnY0hJUWNoQnlFQzUvNitDUmhVQXNzZC9CVWRRMmtsQzZzV29SU2VGcGtWR1FFV3dLakFDTHNIWkdOdm1nOFZBVklXL3JNVUFVb0Ixa1NVWXdLZG5BSW0wRWNCZlloOXI4MzJCZ1RSc1FGcmVRUUVwMzJ2ZllnQUJRQUtBQUFHUWdXd0FCc0FId0FqQUNZQUtRQ3hBTEFBUlZpd0Z5OGJzUmNjUGxtd0FFVllzQm92RzdFYUhENVpzQUJGV0xBTUx4dXhEQkErV2JBQVJWaXdDUzhic1FrUVBsbXlFQXdYRVJJNXNCQXZzQlRRc0JRdnRBOFVIeFFDWGJBazBMQWtMN0FZMExBWUw3QUEwTEFBTDdBVUVMSVRBUW9yV0NIWUcvUlpzQi9Rc0NQUXNBUFFzQkFRc0J6UXNCd3ZzQ0RRc0NBdnNBVFFzQVF2c0JBUXNnOEJDaXRZSWRnYjlGbXdDOUN3S2RDd0I5Q3lKaGNNRVJJNXNpY0pHaEVTT1RBeEFUTUhJd2N6QnlNREl3TWhBeU1USXpjek55TTNNeE16RXlFVE13RWhKeU1GTXpjaEpUTW5BVGNqQldyWUd0Z2EyQnJZVmJmaC9tcFZ2RlhURzlJYTB4dlNXclh0QVloYXUvdnVBVGRFMkFIanl4cisyUDU1ZVZjQ1BCMXFBNnlZbEpqK0dBSG8vaGdCNkppVW1BSUUvZndDQlB6UWxKU1VtTDc4MTZjQUFnQTUvKzBHSlFXd0FDQUFLUUNJQUxBQVJWaXdIQzhic1J3WVBsbXdBRVZZc0JZdkc3RVdIRDVac0FCRldMQVVMeHV4RkJBK1diQUFSVml3Q3k4YnNRc1FQbG13SEJDd0g5Q3lBUUVLSzFnaDJCdjBXYkFMRUxJR0FRb3JXQ0hZRy9SWnNBRVFzQS9Rc2lFV0ZCRVNPYkFoTDdJVEFRb3JXQ0hZRy9SWnNCd1FzQjNRc0IwdnNCWVFzaWtCQ2l0WUlkZ2I5Rmt3TVFFakF3WVhGak15TndjR0p5WW1OeE1qQWlFbkF5TVRCUjRDQnpjVE13TXpBUmMrQWljbUp5Y0dDOE55QXdJSFR5QTFDMEpFYTJ3TWJvRnYvblRGWTdYOUFXSjR0RnNGa0MrMUxzWDdSYkI0bTBNTUU3ekZBNnY5WUJvWFRRcVlFZ0VDbFlnQ252NkpBZjNMQmJBQkExeW5jQUVCQnY3Ni9wSUJBbXJFYTZrSUFRRC8vd0E2LytrSDZnV3dBQ1lBTmdBQUFBY0FWd1EwQUFBQUJ3QWlBQUFIYVFXd0FCOEFJd0FuQUNzQU1BQTFBRG9BdHdDd0FFVllzQjR2RzdFZUhENVpzQUJGV0xBYkx4dXhHeHcrV2JBQVJWaXdBaThic1FJY1BsbXdBRVZZc0Ewdkc3RU5FRDVac0FCRldMQVFMeHV4RUJBK1diSVVFQnNSRWptd0ZDK3dHTkN3R0Mrd0hOQ3dOdEN3QU5Dd0JOQ3dHQkN5RndFS0sxZ2gyQnYwV2JBbjBMQWowTEFyMExBSDBMQVVFTEFrMExBZzBMQW8wTEFJMExBVUVMSVRBUW9yV0NIWUcvUlpzRExRc0EvUXNDM1FzQXZRc2pRUUhoRVNPYkEwRUxBdjBMSTVIaEFSRWprd01RRWhFek1ETXdjakJ6TUhJUU1qQXlFREl3TWhOek1uSXpjekF6TVRJUk16QVNFbkl3VXpOeU1GTXpjakV3Y1hGemNsQnhjSE53RTNKeWNIQktRQlNibkR3bzRic1ZEZ0cvNzl3NnN4L3BIZHF4NysreHZoRExRYmp4MjJHQUZLMTUzK25BRWFGSzMrWHA1WS93TUVuMDMrZkZZREJVUDlCbE1CQ1VVQmxXSUtBaXNEMUFIYy9pU1l3cGorSGdIaS9oNEI0cGpDbUFIYy9pUUIzUHpLd3NMQ3dzTCtxQUlwc3NNYUFSaTZwUUljQWx0aWF3QUFBZ0FmLy93RnlBUTZBQTRBR3dCS0FMQUFSVml3Rmk4YnNSWVlQbG13QUVWWXNBd3ZHN0VNRUQ1WnNBL1FzaElCQ2l0WUlkZ2I5Rm13RmhDd0R0Q3lCUklPRVJJNXNnc0JDaXRZSWRnYjlGbXlFQXNQRVJJNU1ERUJGaFlIQXlNVE5pY21KeVVESXhzQ013TUZNamNUTXdNR0JpY0M2NW1QRXpXMU5nWUNDcEwrd2FHMXZNR0F0V1VCS3VFb2RMVnlHY3VyQkRnRnpjRCt0d0ZNTUN5VkJRTDhYd1E2KzhZQzNmMjdBdlVDci8xWnljNEVBQUFCQUZILzdBU0lCY2NBSlFDS3NoOG1KeEVTT1FDd0FFVllzQmd2RzdFWUhENVpzQUJGV0xBTEx4dXhDeEErV2JJbEdBc1JFam13SlMreUFBSUtLMWdoMkJ2MFdiQUxFTElHQVFvcldDSFlHL1Jac0FBUXNBL1FzQ1VRc0JEUXNDVVFzQlhRc0JVdnRnOFZIeFV2RlFOZHNoSUNDaXRZSWRnYjlGbXdHQkN5SFFFS0sxZ2gyQnYwV2JBVkVMQWcwTEFTRUxBaTBEQXhBU0VHRnhZV0Z4WTNGd1luSmdJM0J6Y3pOeU0zTXhJQUZ6SVhCeVluSmdZSElRY2hCeUVETHY2T0NRY01obkpmZkFWeWQrTHVJTFFXckJtdEZxVStBVHZvV1pRaWFtT2gweTRCZWhiK2pCZ0JkUUlkU2tkNGhnTURJcUVkQWdRQk52WUJmSWw5QVEwQkd3SWVwQ1FDQXNyQ2ZZa0FCQUJEQUFBRit3V3dBQmtBSGdBakFDZ0F3QUN3QUVWWXNBc3ZHN0VMSEQ1WnNBQkZXTEFCTHh1eEFSQStXYkFMRUxJb0FRb3JXQ0hZRy9SWnNDVFFzQ1F2UUFrQUpCQWtJQ1F3SkFSZHNBYlFzQVl2dEE4R0h3WUNYYlFnQmpBR0FsMnlzQVlCWGJBajBMQWpMN1N3SThBakFsMUFDUUFqRUNNZ0l6QWpCRjJ5QUFFS0sxZ2gyQnYwV2JBR0VMSURBUW9yV0NIWUcvUlpzQ1FRc2h3QkNpdFlJZGdiOUZtd0I5Q3dKQkN3Q3RDd0NpK3dKQkN3RDlDd0hCQ3dFdEN3QmhDd0hkQ3dGTkN3QXhDd0l0Q3dGOUF3TVFFREl4TWpOek0zSXpjek53VXlGaGN6QnljSEJ6Y0hCd1loQVRjRkJ3VUZOamNGQnhNbEppY2hBWlJqdTQzQUdzQVJ3UnZBS2dIdHBlSW43aHU0Q2c3Qkc5U1kvcVFCZGduOWZCQUNmZjZjb1hMOXVoQlVBalk0bGY2bkFqcjl4Z013bDE2WDlBRitkWmNCTXk0Q2x3SDJBYmswQVY0QjhBSmFBbGtCNVFKUEJRQUFBUUJKQUFBRWNnV3dBQm9BWHdDd0FFVllzQmt2RzdFWkhENVpzQUJGV0xBTUx4dXhEQkErV2JBWkVMSVlBUW9yV0NIWUcvUlpzQUhRc0JnUXNCUFFzQk12c0FQUXNCTVFzaElCQ2l0WUlkZ2I5Rm13QnRDd0VoQ3dEdEN3RGkreUNRRUtLMWdoMkJ2MFdUQXhBUWNXQnpNSEl3WUVCd0VISXdFM0Z6STNCVGNoSmlZbkpUY2hCQ25tSndUUFNZODAvd0RsQVh3QjJmNWpGT0wxWnYzR1NRSUJCbnhvL3VCSkE0a0ZFZ0ZlWjU2eXJ3Zjl5QTRDY25RQ3l3R2VYV1FFQVo0QUFBRUFDdi9wQkJRRnNBQWVBSTBBc0FCRldMQVJMeHV4RVJ3K1diQUFSVml3QlM4YnNRVVFQbG15RXhFRkVSSTVzQk12c0JmUXNCY3ZzZ0FYQVYyeUdBRUtLMWdoMkJ2MFdiQVowTEFJMExBSjBMQVhFTEFXMExBTDBMQUswTEFURUxJVUFRb3JXQ0hZRy9SWnNCWFFzQXpRc0EzUXNCTVFzQkxRc0EvUXNBN1FzQVVRc2hvQkNpdFlJZGdiOUZteUhnVVJFUkk1c0I0dk1ERUJCd1lDQkNjbUp4TUZQd0lGTnlVVE13Y2xCd1VISlFjRkF6WVNOemNFRkFvYndmN2xya3B5WXY3L0l2OGEvdjhoQVFBN3ZDMEJDQ0grK1JrQkNDSCsrV0cvOHlVT0F3Tk8xZjZ6cWdJQ0V3SlVicnh2am02OGJ3RlUrM0s4Y285eXZIUDk0UVVCRmZCckFBQUIvL0lBQUFTR0JEb0FIQUJWQUxBQVJWaXdIQzhic1J3WVBsbXdBRVZZc0Fndkc3RUlFRDVac0FCRldMQVBMeHV4RHhBK1diQUFSVml3RlM4YnNSVVFQbG15QUE4Y0VSSTVzQUF2c2c0QkNpdFlJZGdiOUZtd0VkQ3dBQkN3R3RBd01RRWVBaFVVQndjak56WW5KaVluQXlNVEJnSUhCeU0zRWdBM056TURGSGFuVlFvZXRSd1VCZ3RwWFlHMWdaZkdKeUsxSHk4Qk51b290UU52RjVQdGkwdEl1cXA4WjR5WUhQMHpBc3dsL3dEWnpya0JLd0ZxSThrQUFBTC81UUFBQlRVRnNBQVdBQjhBYlFDd0FFVllzQXd2RzdFTUhENVpzQUJGV0xBREx4dXhBeEErV2JJR0F3d1JFam13QmkreUJRRUtLMWdoMkJ2MFdiQUIwTEFHRUxBSzBMQUtMN1FQQ2g4S0FsMnlDUUVLSzFnaDJCdjBXYkFVMExBR0VMQVYwTEFLRUxBWDBMQU1FTElmQVFvcldDSFlHL1JaTURFQklRTWpFeU0zTXpjak56TVRCUllXQndZRUl5VUhJUUVGTWpZM05pWW5KUUt0L3J3d3V6REpITWdaeWh6SWZ3SDkwK29SRXY3VjhQNmxHQUZGL3U0QlJabkRFUkNIZnY2bUFSUCs3UUVUbm9tZEF0a0JCK3krMHZNQmlRRW1BWnlMZXBZRUFRQUVBTXovNWdVNUJjZ0FHd0FwQURjQU93QjdBTEE0TDdBNkw3QUFSVml3Q2k4YnNRb2NQbG13QUVWWXNDTXZHN0VqRUQ1WnNBb1FzQVBRc0FNdnNnQURDaEVTT2JJT0NnTVJFam13Q2hDeUVRUUtLMWdoMkJ2MFdiQURFTElZQkFvcldDSFlHL1Jac0NNUXNCelFzQnd2c0NNUXNpMEVDaXRZSWRnYjlGbXdIQkN5TkFRS0sxZ2gyQnYwV1RBeEFRWUdKeVltTnpjMk5oY1dGZ2NuTmlZbklnWUhCd1lXRnpJMk53RVdGZ2NIQmdZbkppWTNOelkyQXdZV0Z4WTJOemMySmljbUJnY0ZKd0VYQXVVTW4zTnppQWtHRGF0OGI0a0Nod00yUUVGY0NnZ0lPRHc4VGcwQjBIdVBDQVlOdFlGNWtRZ0dETFEvQlVOQ1NHRUxDUWREUWtWbUMvM3paQU54WXdRZWM0OEVBcXQrUTR1dkFnS1BjUUU2VFFKb1ZrWktad0pMTy81MEJLbC9RNDJ2QkFLcmdFU0xyZjZDVUdFQ0FtbE9UMHhtQWdKbVVmVklCR2hIQUFBQ0FFdi82d1BEQmhjQUhBQWtBRk1Bc0FrdnNBQkZXTEFQTHh1eER4NCtXYkFBUlZpd0FDOGJzUUFRUGxtd0NSQ3lDQUVLSzFnaDJCdjBXYkFXMExBQUVMSWNBUW9yV0NIWUcvUlpzQWtRc0IzUXNBOFFzaUlCQ2l0WUlkZ2I5Rmt3TVFVbUppY21OemNHQnpjMk54TTJOaGNXRmdjSEJnQUhCd1lWQmhZWEF6WVNOelluSmdjQ1ZZT29GQTBQQkdSdEZHVnNYaGl1aEhGNkNnTVQvd0RIRVFnQ1VsQnRmbzBHQkVOdUdSVUdsSUZQV0JRYkFyQUNJUUlodHNrREJLK0hIOGYralhGak5USlZZZ1VDWDI4QkNxUnRCUWJsQUFBRUFEVUFBQWZ2QmNVQUF3QVJBQ0FBS2dDSUFMQUFSVml3Snk4YnNTY2NQbG13QUVWWXNDa3ZHN0VwSEQ1WnNBQkZXTEFFTHh1eEJCdytXYkFBUlZpd0lTOGJzU0VRUGxtd0FFVllzQ1F2RzdFa0VENVpzQVFRc0F2UXNBc3ZzQUxRc0FJdnNnRURDaXRZSWRnYjlGbXdDeEN5RlFNS0sxZ2gyQnYwV2JBRUVMSWRBd29yV0NIWUcvUlpzaU1wSkJFU09iSW9JU2tSRWprd01RRWhOeUVERmhZSEJ3WUdKeVltTnpjMk5nTUdGaGNXTmo4REppY21CZ2NCSXdFREl4TXpBUk16QjBuOXFob0NWcUtRbmd3SkVkQ1dqNkVNQ0EvVVNnaExTazVyRVFJTEFRYUlVbTBPL2dUQi9vUEh0UHpCQVgvSHN3R2NqZ09YQk1PVFY2WENCQVRDa2xhaXlQNCtZMmNDQTJWZ0RHTXBvQU1DYldMN21RUjIrNG9Gc1B1SEJIa0FBZ0RxQTVZRXJRV3dBQXdBRkFCdEFMQUFSVml3Qmk4YnNRWWNQbG13QUVWWXNBa3ZHN0VKSEQ1WnNBQkZXTEFUTHh1eEV4dytXYklCRlFZUkVqbXdBUyt5QUFrQkVSSTVzZ01CQmhFU09iQUUwTElJQVFrUkVqbXdBUkN3QzlDd0JoQ3hEUW9yV05nYjNGbXdBUkN3RDlDd0RSQ3dFZEN3RXRBd01RRURCd01ESXhNekV4TXpBeU1CSXdNakV5TTNJUVE2d3pSR1IxbGVha1hTY1Y1WS9tcU9VRmxQanc0QmVBVVMvb1lDQVpIK2NBSVovbk1CamYzbkFjaitPQUhJVVFBQ0FJTC82UVI4QkZJQUZRQWNBR0t5QWgwZUVSSTVzQUlRc0JiUUFMQUFSVml3Q2k4YnNRb1lQbG13QUVWWXNBSXZHN0VDRUQ1WnNob0tBaEVTT2JBYUw3SVBDZ29yV0NIWUcvUlpzQUlRc2hNS0NpdFlJZGdiOUZteUZRb0NFUkk1c0FvUXNoWUtDaXRZSWRnYjlGa3dNU1VHSnlZbUFqYzJFaVFYSGdJSEJ5RURGaGNXTndNbUJ3TWhFeVlEc0xpK2hOQmtEZzZ5QVFTS2dMNWdDd1g5RkR0Zmo2cld6b2lhTXdJTE0xMWRkQVFDbWdFQ2laSUJFWnNFQklyN2tqSCt0bWNFQjM4REt3TjgvdW9CSDJ6Ly93QzEvL1FGZEFXYkFDY0IxUUJLQW9ZQUp3RjhBTjhBQUFFSEFkd0MvQUFBQUJBQXNBQkZXTEFGTHh1eEJSdytXVEF4Ly84QWt2LzBCaEFGdGdBbkFkY0Fsd0tVQUNjQmZBR1lBQUFCQndIY0E1Z0FBQUFRQUxBQVJWaXdEUzhic1EwY1Bsa3dNZi8vQUkvLzlBWUdCYVFBSndIWkFIa0Nqd0FuQVh3QmR3QUFBUWNCM0FPT0FBQUFFQUN3QUVWWXNBRXZHN0VCSEQ1Wk1ESC8vd0MrLy9RRnZBV2tBQ2NCMndDUEFvOEFKd0Y4QVJjQUFBRUhBZHdEUkFBQUFCQUFzQUJGV0xBRkx4dXhCUncrV1RBeEFBSUFUZi9uQkRjRjdBQWVBQ3dBUndDd0R5K3dBRVZZc0Jjdkc3RVhFRDVac2dBUEZ4RVNPYkFBTDdBUEVMSUpBUW9yV0NIWUcvUlpzQUFRc2g4QkNpdFlJZGdiOUZtd0Z4Q3lKZ0VLSzFnaDJCdjBXVEF4QVJZV0Z6WW5MZ0luSmdZSEp6WVhGaFlTQndJQ0JDY21BajhDTmdBWEpnWUdGeFlXRnhZMk56YzJKZ0prVnBjMEJBSUVRWGxTUzQ5R0FwT2xrOE5VQ0EyZS92Nmt1OVlHQXdJZEFTTFZiS3hXQ3dseVk0L0NKQW9Ea3dQK0FrdEZMalZsc21BREFpTVltRVFCQTU3KzA4RCsyLzU2eXdRRkFRVFRNUkxsQVJXZEEzM2tqM0tEQkFYejVVRlVlUUFBQVFBay95c0ZSZ1d3QUFjQUp3Q3dCQyt3QUVWWXNBWXZHN0VHSEQ1WnNBUVFzQUhRc0FZUXNnSUJDaXRZSWRnYjlGa3dNUVVqRXlFREl3RWhCRUcxN3YxTTdiVUJCUVFkMVFYdCtoTUdoUUFCLzZ6Kzh3VFNCYkFBREFBMUFMQURMN0FBUlZpd0NDOGJzUWdjUGxtd0F4Q3lBZ0VLSzFnaDJCdjBXYkFGMExBSUVMSUtBUW9yV0NIWUcvUlpzQWZRTURFQkFTRUhJVGNCQVRjaEJ5RUJBMC85V2dOakcvdTdHZ0xNL2kwWUEvc2IvTmtCd1FKQy9VbVltQUxNQXRLSG1QMUVBQUVBcXdLTEEvRURJZ0FEQUJzQXNBQkZXTEFDTHh1eEFoWStXYklCQVFvcldDSFlHL1JaTURFQklUY2hBOWI4MVJzREt3S0xsd0FBQVFCQkFBQUZEZ1d3QUFnQVBMSURDUW9SRWprQXNBY3ZzQUJGV0xBQkx4dXhBUncrV2JBQVJWaXdBeThic1FNUVBsbXlBQUVERVJJNXNBY1FzZ1lCQ2l0WUlkZ2I5Rmt3TVFFQk13RWpBeU0zSVFIbEFtbkEvUGFLZ2JnY0FTNEJIZ1NTK2xBQ2RKb0FBQU1BVGYvbUI2RUVVZ0FaQUNvQU93QkVBTEFBUlZpd0JpOGJzUVlRUGxtd0FOQ3dCaEN3RGRDd0RTK3dFOUN3QmhDeUhRRUtLMWdoMkJ2MFdiQU5FTEluQVFvcldDSFlHL1Jac0MvUXNCMFFzRGpRTURFRkppWW5CZ1luSmlZbkpoSWtGeFlXRnpZMkZ4NENCd0lBQVJRV0Z4WTJOamMzTmlZbkppY21CZ1lGTnlZbUp5WUdCZ2NIQmhZV0Z4WTJOd1ZwanRRb2ZmU0ZvOVFTRTVJQkM1Nk4xU2g2OW9xQnUxa1BIdjdJK3RWM2FsU3JpUndIQlQ4NFRsNXBwV0lGendRRGMybFVxSTRkQndaTmgwK054QmNWQk1lZnlhVURCT1czckFGYXdnUUV4cUhFcXdNRWsvdU4vdjMrdVFITWlhY0NBbTdDWFNwS3FEcFJCQVNEOXc5VGo2RUVBbW5EWUNsUHZYTUVCZWV6QUFBQi94citSUU1IQmhvQUZRQTlzZ0lXRnhFU09RQ3dBRVZZc0E0dkc3RU9IajVac0FCRldMQURMeHV4QXhJK1diSUlBUW9yV0NIWUcvUlpzQTRRc2hNQkNpdFlJZGdiOUZrd01SY0dCaWNtSnpjV0Z4WTNFelkyRnhZWEJ5WWpJZ2Z4RTdtVk5VRWNOQm1jSHNNVHhaMDJYQ0l3S0xjamE2T3RBZ0lVa2c0QkI4a0ZES2pFQWdFVmp3M2xBQUlBTVFFVkJDMEQ4d0FXQUNrQWF3Q3dHUyt3QXRDd0FpK3dDTkN3Q0Mrd0FoQ3dDOUN3Q0JDeURnRUtLMWdoMkJ2MFdiQUNFTElVQVFvcldDSFlHL1Jac0E0UXNCYlFzQmtRc0IzUXNCMHZzQmtRc0IvUXNCMFFzaUlCQ2l0WUlkZ2I5Rm13R1JDeUpnRUtLMWdoMkJ2MFdiQWlFTEFwMERBeEV6WXpNaGNYRmhZek1qWTNCd1luSWlZbkp5WWpJZ2NITmpNMkZoWXpNamNIQmljaUppWWpJZ2NIakcyUVUxQTRNVjQ2UEhkTkZXK0NPMkF4TWxSU2Y0azRibzB5VTlSTmVvUVViNElzU3RsVWJIQXRBNFp0S3g4ZEtUaEh2VzhDS1IwY0wzL21iZ0VhZUgrOGJ3SVdlbGttQUFBQkFIQUFuUVAvQk5NQUV3QTNBTEFUTDdJQUFRb3JXQ0hZRy9SWnNBVFFzQk1Rc0FmUXNCTVFzQS9Rc0E4dnNoQUJDaXRZSWRnYjlGbXdDTkN3RHhDd0M5QXdNUUVoQnljM0l6Y3pOeUUzSVJNWEJ6TUhJUWNoQTVyK0E3TmJoYVFjL2IzK2Nod0I2Y0Zia3JnZC91NjhBYU1Cai9KQnNhRC9vUUVFUWNPaC93RC8vLy9VQUFJRHlRUkNBR1lBSUJGaFFBQTVtZ0FIQVpmL0tmMTMvLzhBR1FBQkErZ0VUUUJtQUNJVWMwQUFPWm9BQndHWC8yNzlkZ0FDQUVFQUFBUFVCYkFBQlFBSkFEaXlDQW9MRVJJNXNBZ1FzQUhRQUxBQVJWaXdBQzhic1FBY1BsbXdBRVZZc0FNdkc3RURFRDVac2dZQUF4RVNPYklJQUFNUkVqa3dNUUV6QVFFakNRSVRBUUk5aVFFTy9nV0svdklDS1A2UHRBRnlCYkQ5SGYwekF1RUNCUDNuL2Y0Q0YvLy9BSGdBcEFId0JQY0FKd0FTQUVNQXNnQUhBQklBMndRa0FBSUFjQUo1QW5jRU9nQURBQWNBSlFDd0FFVllzQU12RzdFREdENVpzQURRc0FBdnNBWFFzQVV2c0FNUXNBYlFzQVl2TURFVEl4TXpFeU1UTS9xS1RvcmdpaytLQW5rQndmNC9BY0VBQUFILzQvOWZBUThBN3dBSEFBd0FzQVF2c0FEUXNBQXZNREVYSnpZM056TUhCa1pqV3hZUHJBa2VvVXA3ZVZJLzB3RC8vd0IwQUFBRmF3WVpBQ1lBU2dBQUFBY0FTZ0liQUFBQUFnQllBQUFFQlFZWkFCWUFHZ0JwQUxBQVJWaXdDUzhic1FrZVBsbXdBRVZZc0JNdkc3RVRHRDVac0FCRldMQVpMeHV4R1JnK1diQUFSVml3Rmk4YnNSWVFQbG13QUVWWXNCZ3ZHN0VZRUQ1WnNCTVFzaFFCQ2l0WUlkZ2I5Rm13QWRDd0V4Q3dCTkN3Q1JDeUR3RUtLMWdoMkJ2MFdUQXhNeE1qUHdJMk56WVhGaFlYQnlZbkpnY0hNd2NqQXlFakV6TmJvNllacGc0YmVIT3ZSNFZHTEhGdjVTSU4xeG5Xb3dJNHRyeTJBNnVQQVdTM1pGOENBaU1ZbmpNQ0JPUlhqL3hWQkRvQUFRQjBBQUFFWWdZYUFCZ0FYQUN3QUVWWXNCTXZHN0VUSGo1WnNBQkZXTEFITHh1eEJ4ZytXYkFBUlZpd0NpOGJzUW9RUGxtd0FFVllzQmd2RzdFWUVENVpzQk1Rc2dJQkNpdFlJZGdiOUZtd0J4Q3lDQUVLSzFnaDJCdjBXYkFNMExBSEVMQVAwREF4QVNZaklnWUhCek1ISXdNakV5TTNNemMyTmhjV0Z4Y0RJd09mZ1R0amVBOFM0Um5nbzdXa3B4bW1FaHJZcG0yNFlQNjFCV1VXYjE5emoveFZBNnVQZjZlNkFnSXFGUG9vQUFJQWRBQUFCbGNHR3dBbkFDc0Fsd0N3QUVWWXNBZ3ZHN0VJSGo1WnNBQkZXTEFXTHh1eEZoNCtXYkFBUlZpd0lDOGJzU0FZUGxtd0FFVllzQ292RzdFcUdENVpzQUJGV0xBbkx4dXhKeEErV2JBQVJWaXdKQzhic1NRUVBsbXdBRVZZc0Nrdkc3RXBFRDVac0NBUXNpRUJDaXRZSWRnYjlGbXdKZEN3QWRDd0lCQ3dFdEN3Qk5Dd0NCQ3lEUUVLSzFnaDJCdjBXYkFXRUxJY0FRb3JXQ0hZRy9SWk1ERXpFeU0zTXpjMk5oY1dGd2NtSnlJR0J3Y2hOelkyRnhZV0Z3Y21KeVlIQnpNSEl3TWpFeUVESVNNVE0zZWtweG1tRVJmVW9EWkxGakF4V1hVUkV3R0REaHJudFVpSlJDOXpiK1FpRGRnWjE2TzFvLzU5b3dSdnRieTFBNnVQZWFqQUFnSVFtQW9DYWw1NVpiSEpBZ0ltR0pzekFnTGlWNC84VlFPci9GVUVPZ0FBQVFCMEFBQUdtUVliQUNvQWlnQ3dBRVZZc0Frdkc3RUpIajVac0FCRldMQVhMeHV4Rng0K1diQUFSVml3SXk4YnNTTVlQbG13QUVWWXNDb3ZHN0VxRUQ1WnNBQkZXTEFuTHh1eEp4QStXYkFBUlZpd0hDOGJzUndRUGxtd0l4Q3lKQUVLSzFnaDJCdjBXYkFvMExBQjBMQWpFTEFUMExBRTBMQUpFTElPQVFvcldDSFlHL1Jac0JjUXNoOEJDaXRZSWRnYjlGa3dNVE1USXpjek56WTNOaGNXRndjbUl5SUdCd2NoTnpZMkZ4WVhGd01qRXlZakpnY0hNd2NqQXlNVElRTjNvNllacGhJZGVtYU9OVXNXT2loYmRSQVJBWVFQR2RhcVZuRy8vclh6Z1R6TklnN2hHdCtqdGFQK2ZhTURxNDkvdGw1T0FnSVFtQXh1WjJ4cnRNRUNBaFlvK2lnRlpCWUM0MStQL0ZVRHEveFZBQUFCQUhULzdRVElCaG9BSmdDQkFMQUFSVml3SWk4YnNTSWVQbG13QUVWWXNCNHZHN0VlR0Q1WnNBQkZXTEFSTHh1eEVSZytXYkFBUlZpd0pTOGJzU1VZUGxtd0FFVllzQXN2RzdFTEVENVpzQUJGV0xBWkx4dXhHUkErV2JBZUVMSWJBUW9yV0NIWUcvUlpzQkRRc0FIUXNBc1FzZ1lCQ2l0WUlkZ2I5Rm13SWhDeUZRRUtLMWdoMkJ2MFdUQXhBU01EQmhjV016STNCd1luSmlZM0V5TTNNeE1tSnlJR0J3TWpFeU0zTXpjMk5oY1dGd016Qks3RGNnTUNCMDhpTWdwQ1FXNXNERzdBR3I4elJXcFZjaExOdGFTbkdhWVJGOFdlck5VOHhRT3IvV0FhRjAwS21CSUJBcHVDQXA2UEFTRWtBbXRwKzFNRHE0OTRwY01DQTJiK2l3QUJBQ24vNlFaMkJoTUFUUUMyQUxBQVJWaXdTQzhic1VnZVBsbXdBRVZZc0VFdkc3RkJHRDVac0FCRldMQVNMeHV4RWhnK1diQUFSVml3TGk4YnNTNFFQbG13QUVWWXNBb3ZHN0VLRUQ1WnNCSVFzRXpRc2dFQkNpdFlJZGdiOUZtd0NoQ3lCUUVLSzFnaDJCdjBXYkFCRUxBUDBMQklFTElYQVFvcldDSFlHL1Jac2g5QkxoRVNPYkJCRUxJaUFRb3JXQ0hZRy9SWnNqb3VRUkVTT2JBNkVMSW5BUW9yV0NIWUcvUlpzakl1UVJFU09iQXVFTEkxQVFvcldDSFlHL1JaTURFQkl3TUhGQmNXTndjR0p5WW1OemNUSXpjek56WW5KaWNtQmg4Q0ZnY2pOaVluSmdZSEJnUVhGZ2NPQWljbUpqY3pGQllYRmpZM05pY25KamMrQWpNV0Z5WTNOallYRmhZSEJ6TUdYY1JzQVZJYk9BeExPbUZxQXdKcXR4bTFEQVVFRG90bGVnd0ZGZ2NHdFFKb1dGMkVEQTRCSnp6S0N3WjV5bktyM1FhMGNXVmtrQXdTa3FEL0N3VjF4VzFiV1JNSEQ5MlVxYkVVRGNRRHEvMTlOR1FEQVF1WUV3SUJrSWNrQW9HUFZpc3FqZ01EaVpJN3EwQThVbVVDQWx0TGFVMGJXYlJrbGxBREFzV2JYV3NDQWxkTmN5MHVWY0JnbEZNQkgzcy9ocU1DQk5LcVZ3QUFGdityL25JSVJnV3VBQTBBSEFBcEFEZ0FQZ0JFQUVvQVVBQlhBRnNBWHdCakFHY0Fhd0J2QUhjQWV3Qi9BSU1BaHdDTEFJOEJEQUN3UGkrd0FFVllzRWN2RzdGSEhENVpzbjlLQXl1eWZIc0RLN0o0Z3dNcnNvQTdBeXV5Q2o1SEVSSTVzQW92c0FQUXNBTXZzQTdRc0E0dnNBb1FzQS9Rc0E4dnNsRU9EeEVTT2JCUkw3SndCd29yV0NIWUcvUlpzaFpSY0JFU09iQUtFTElnQndvcldDSFlHL1Jac0FNUXNpWUhDaXRZSWRnYjlGbXdEeEN3S3RDd0tpK3dEaEN3TDlDd0x5K3lOUWNLSzFnaDJCdjBXYkErRUxJOUNnb3JXQ0hZRy9SWnNENFFzR3pRc0dqUXNHVFFzRC9Rc0QwUXNHM1FzR25Rc0dYUXNFRFFzRWNRc2tnS0NpdFlJZGdiOUZtd1lOQ3dYTkN3V05Dd1M5Q3dSeEN3WWRDd1hkQ3dXZEN3VE5Dd0RoQ3lVZ2NLSzFnaDJCdjBXYkFQRUxKM0J3b3JXQ0hZRy9SWk1ERUJCZ1luSmlZM056WTJGeFlXQnhNVEZ4WVdCd1lHQnhZVkJnY0dCd0UySmljbUJnY0hCaFlXTmpjQk13TUdCaU1pSmljWEJqYzJOamNCRXpNSE13Y2hOek0zTXdNQkV5RUhJd2NsTnlFREl6Y0JCek0yTnpZbkFUY2hCeUUzSVFjaE55RUhFemNoQnlFM0lRY2hOeUVIQVRjMk56WXZBZ0VqTnpNM0l6Y3pBeU0zTXlVak56TTNJemN6QXlNM013TVFDb3RmWG5RRUNRaUxZRjEwQWd0Z3FsNWZBd0kzSjA4QkZqU0YvcmdGT0RvN1Znd05Cemw0VlFzRDBHRTdDbXROVW1ZQldRUllMRGtKK1dNM2J5Uy9GQVQvRk1Ba2JUZjV0VElCTFJTK0hnWGJGQUV1TW0wZSsrZ2ViMjhPRFZJQlNoVUJEeFg5YmhVQkRoWDlieFVCRFJYTkZBRVBGUDF1RkFFT0ZQMXZGQUVORkFGWVYzc05Da1VoWHZ6T2J5MXZGVzhzYjY5dkxXOEhBRzBzYlJWdExXMnZiU3h0QWRSbGVnSUNlbUZ1WlhzQ0FucGcvcmdDSlFFRFNrSXdPUlVkV0RBaFRnUUJTME5PQWdKT1NISS9VZ1JSUlFGUC9vVlBXMUpWQWw4Q0FUZ3AvTW9CTzhweGNjcit4UVlmQVIxMHFhbDAvdU9wL0xhcEJWUklCd05MZEhSMGRIUjArVGh4Y1hGeGNYRUR3Z0VHVVRjSEF3SCswdngrK3Z3VitYNzhmdnI4RmZrQUJRQmMvZFVIMXdoekFBTUFIQUFnQUNRQUtBQTBBTEFsTDdBaEw3SWNIZ01yc0NVUXNBRFFzQUF2c0NFUXNBTFFzQUl2c2cwQUhCRVNPYkFOTDdJZkFoNFJFam13SHk4d01Ra0RCVFEyTnpZMk5UUW1JeUlHQnpNMk5qTXlGaFVVQndZR0ZSY2pGVE1ETXhVakF6TVZJd1FZQTcvOFFmeEVCQThlSkVwY3A1V1FvQUxMQWpvck9UaGRXeS9LeXNwTEJBUUNCQVFHVXZ3eC9ERUR6L0U2T2hnbmgwcUFsNHQvTXpSQU5GODhRVnhNVzZyOVRBUUtuZ1FBQVFCaUFBQUVTZ1d3QUFZQU9iSUJCd2dSRWprQXNBQkZXTEFGTHh1eEJSdytXYkFBUlZpd0FpOGJzUUlRUGxtd0JSQ3lBd0VLSzFnaDJCdjBXYklBQXdVUkVqa3dNUUVCSXdFaE55RUVOdnpydndNUy9UNGJBMzBGUGZyREJSaVlBQUFDQUVILzZBUW9CRklBRWdBaEFFT3lDQ0lqRVJJNXNBZ1FzQmZRQUxBQVJWaXdBQzhic1FBWVBsbXdBRVZZc0Frdkc3RUpFRDVac2hZQkNpdFlJZGdiOUZtd0FCQ3lIZ0VLSzFnaDJCdjBXVEF4QVI0Q0J3Y09BaWNtSmljbU56YzJFallERmhZWEZqWTNOaWNtSmljbUJnWUNnSXJEV3c4REZaMzFqNkxYR2d3SkF4V2c4UGNEZTNDTTBoMEZBUU44Y1cyeVlRUk9CSS82bHhhZy80MEVCTXV1VUZFV293RUZpdjFmaDZRRUJlTEtLeTZJcVFRRWpQc0FBQUgvRC81RkFROEFtQUFNQUNjQXNBMHZzQUJGV0xBRUx4dXhCQkkrV2JJSkFRb3JXQ0hZRy9SWnNBMFFzQXpRc0F3dk1ERWxBd1lHSnlZbk54WVhNamMzQVE4bkc3eVBORDhiTGpHRkpDbVkvdnVncmdJQ0VaOE9BclA4QUFBQi83MyttUURNQUprQUF3QVNBTEFFTDdBQzBMQUNMN0FBMExBQUx6QXhFeU1UTTNPMldiYittUUlBQUFJQkV3VFhBM01HendBTEFCNEFYQUN3QXkreUNRUUtLMWdoMkJ2MFdiQUgwTEFITDdBTDBMQUxMN0FIRUxBUDBMQVBMN0FTMExBU0w3SS9FZ0Zkc0E4UXNCVFFzQlF2c0JJUXNoZ0VDaXRZSWRnYjlGbXdEeEN5SEFRS0sxZ2gyQnYwV2JBWUVMQWUwREF4QVFZR0p5WW1OUmNHRnpJM0V3WUdJeUltQndZSEp6WTJNeklXRmpjMk53Tk1DYVIvZTVLUUJIMkRITGdKWGtZcGdpZEZIbElNWVVNa2VDUVRReUlGcjJaeUFnSjFZQUoxQW5ZQkRWQm5Ud0VEVlJSVFpVWUtBUU5XQUFJQkVnVGVBMFVIQXdBTEFCb0FRd0N3QXkreUNRUUtLMWdoMkJ2MFdiQUwwTEFMTDdBSDBMQUhMN0FMRUxBYTBMQWFMN0FVMExBVUw3SVpHaFFSRWpteURSUVpFUkk1c1JNS0sxallHOXhaTURFQkJnWW5KaVkxRndZWE1qY25OemMyTnpZbUl6Y1hGZ2NHQndjRFJRdWhmSHFSakFhQWhCdS9FaTloQndSQVVnd1g5QVFEbXdvRnNXWnRBZ0p3WUFKeUFuTVNmQU1JTXhvYlV3RU1mV0lZUHdBQUFnRVJCTjhEWEFhS0FBNEFFZ0EzQUxBRUw3SUxCQW9yV0NIWUcvUlpzQTdRc0E0dnNBblFzQWt2c0E0UXNCSFFzQkV2c0EvUXNBOHZzQkVRc0JMUUdiQVNMeGd3TVFFR0JnY2pKaVluTlJjR0Z4WTJOeWNYQndjRFhBcWRmdytCa3dLU0JJTTlXUTQ1b3NKeEJiQmliUUlEYjJBQkFuTUNBVGs4MndIRUFRQUNBTTBFNUFPV0J0TUFCZ0FZQUkwQXNBRXZzQWJRc0FZdlFBa1BCaDhHTHdZL0JnUmRzZ0FCQmhFU09SbXdBQzhZc0FZUXNBTFFzQUVRc0FQUXNBTXZzQUFRc0FUUUdiQUVMeGl3QmhDd0N0Q3dDaTlBQ3g4S0x3by9DazhLWHdvRlhiQU4wTEFOTDdRL0RVOE5BbDJ3Q2hDd0Q5Q3dEeSt3RFJDeUV3WUtLMWdoMkJ2MFdiQUtFTElXQmdvcldDSFlHL1Jac0JNUXNCalFNREVCSXljSEl5VXpOd1lHSXlJbUJ3WUhKelkyTXpJV056WTNBNWFUcGRxM0FVK0E2d3RkUFNseEp6NGlUd3RkUUNaMkprQWlCT1NkbmZUbVJsbEtBUVJHRTBWZFNRRUNSZ0FDQU00RTVBUjVCczhBQmdBVkFGMEFzQUV2c0FEUUdiQUFMeGl3QVJDd0J0Q3dCaSsyRHdZZkJpOEdBMTJ3QXRDd0FSQ3dBOUN3QXkrd0FCQ3dCTkFac0FRdkdMQUJFTEFIMExBSEw3QU8wTEFPTDdJSUJ3NFJFam14RFFvcldOZ2IzRm15RkE0SEVSSTVNREVCSXljSEJ3RXpGemMzTmpZbkp6Y1dGZ2NHQmdjSEE1YVVvTjYyQVRhM3FCTXJWZzVoSHd0M2NnTURSRW9LQk9TNXVBRUJCbnlEQlF0cUJRSmRCMUJETmtVUVBRQUFBZ0FpQk04RGt3YUNBQVlBQ2dCT0FMQUJMN0FBMEJtd0FDOFlzQUVRc0FQUXNBTXZzQVhRc0FVdnRnOEZId1V2QlFOZHNBTFFzQUFRc0FUUUdiQUVMeGl3QVJDd0NOQ3dDQyt3QjlBWnNBY3ZHTEFJRUxBSzBMQUtMekF4QVNNbkJ5TUJNd1VqQXpNRGs2K0t3TkFCUjVUK2ozeVd0Z1RQblowQkJsVUJBZ0FDQU5JRTRRVDdCcFVBQmdBS0FGUUFzQU12c0FIUXNBRXZ0ZzhCSHdFdkFRTmRzQU1Rc0FMUUdiQUNMeGl3QVJDd0JOQ3dBeEN3QmRDd0JTK3dBaEN3QnRBWnNBWXZHTEFERUxBSjBMQUpMN0FIMExBSEw3QUpFTEFLMEJtd0NpOFlNREVCTXhNakp3Y2pBVE1ESXdJYmxldXZpTURTQTFuUThaWUY2UDc1bnA0QnRQNzlBQUlCRVFUZkExd0dpZ0FPQUJJQU53Q3dCQyt5Q3dRS0sxZ2gyQnYwV2JBTzBMQU9MN0FKMExBSkw3QU9FTEFTMExBU0w3QVEwTEFRTDdBU0VMQVIwQm13RVM4WU1ERUJCZ1lISXlZbUp6VVhCaGNXTmpjbE14Y2pBMXdLblg4UGdaTUNrZ1NEUFZrTy91R0pTMVlGc0dKdEFnTnZZQUVDY3dJQk9UemJ4Z0FBQVFEOEJJNENKd1k5QUFjQURBQ3dCUyt3QU5Dd0FDOHdNUUVYQmdjSEl6YzJBY0JuU3hRWXRCRWRCajFYYm1hRWNzRUFBQUwvcFFBQUErTUVqUUFIQUFvQVU3SUVDd3dSRWptd0JCQ3dDdEFBc0FCRldMQUVMeHV4QkJvK1diQUFSVml3QWk4YnNRSVFQbG13QUVWWXNBY3ZHN0VIRUQ1WnNnZ0NCQkVTT2JBSUw3SUFBUW9yV0NIWUcvUlpzZ29DQkJFU09UQXhBU0VESXdFekFTTUJJUU1DK2Y0Sm5NRUNtNklCQWJEK0l3R0VhQUVYL3VrRWpmdHpBYTRCK3dBQUF3QWRBQUFENXdTTkFBMEFGZ0FlQUh1eUdCOGdFUkk1c0JnUXNBM1FzQmdRc0JiUUFMQUFSVml3QVM4YnNRRWFQbG13QUVWWXNBQXZHN0VBRUQ1WnNoY0FBUkVTT2JBWEw3Sy9Gd0ZkdEI4WEx4Y0NYYlRmRis4WEFsMnlEZ0VLSzFnaDJCdjBXYklIRGhjUkVqbXdBQkN5RHdFS0sxZ2gyQnYwV2JBQkVMSWVBUW9yV0NIWUcvUlpNREV6RXdVV0ZnY0dCeFlXQndZR0J3TURGekkyTnpZbUp5Y1hNalkzTmljbkhjc0Jmci9DQ2dyU1QxWUVDTzNBdjBMMGJwVU1DMWRrK2Rsdmpnb1UxK0VFalFFRnBJeXFVeHFPWFoyMUF3SVMvb1VCWmxwVVlnV09BVjFUb0FVQkFBQUJBRWYvN0FRM0JLTUFIQUJPc2hNZEhoRVNPUUN3QUVWWXNBc3ZHN0VMR2o1WnNBQkZXTEFETHh1eEF4QStXYklBQ3dNUkVqbXlEZ01MRVJJNXNBc1FzaElCQ2l0WUlkZ2I5Rm13QXhDeUdnRUtLMWdoMkJ2MFdUQXhBUVlFSnk0Q056Y1NBQmNXRmhjakppWW5KZ1lIQmhjV0ZoY1dOd1BtSS83dHlJckJWaEVNSlFFNTRMalZDTE1GYlhpVHloOGJCZ1YyYlB0TUFYcTcwd1FFalB1WVdBRUlBVEFHQk5XMmNvSUVCY3Eybm1OMWl3UUsvQUFBQWdBZEFBQUVEd1NOQUFvQUZRQkRzaFVXRnhFU09iQVZFTEFDMEFDd0FFVllzQUl2RzdFQ0dqNVpzQUJGV0xBQUx4dXhBQkErV2JJTkFRb3JXQ0hZRy9SWnNBSVFzaFVCQ2l0WUlkZ2I5Rmt3TVRNVEJSNENCd2NDQUNFVEF4Y3lOamMzTmljbUp4M0xBVktXMm1VUUJSeitvdjc2Q0phVXZQTVpCaEk0UmF3RWpRRUVqZmlhTVA3OC9zc0Q5UHlqQWR2SE1hSm1mQVlBQUFFQUhRQUFBKzhFalFBTEFHR3lDUXdORVJJNUFMQUFSVml3Qmk4YnNRWWFQbG13QUVWWXNBUXZHN0VFRUQ1WnNnc0dCQkVTT2JBTEw3UWZDeThMQWwyeXZ3c0JYYklBQVFvcldDSFlHL1Jac0FRUXNnSUJDaXRZSWRnYjlGbXdCaEN5Q0FFS0sxZ2gyQnYwV1RBeEFTRURJUWNoRXlFSElRTWhBekg5L1VJQ1dSdjg4OHNEQnh2OXJqb0NCQUlPL29tWEJJMlovcklBQVFBZEFBQUQ0Z1NOQUFrQVI3SUhDZ3NSRWprQXNBQkZXTEFFTHh1eEJCbytXYkFBUlZpd0FpOGJzUUlRUGxteUNBSUVFUkk1c0FndnNnRUJDaXRZSWRnYjlGbXdCQkN5QndFS0sxZ2gyQnYwV1RBeEFTRURJeE1oQnlFRElRTWgvZ2hYdGNzQytodjl1ejhCK1FIei9nMEVqWm4rbUFBQUFRQk0vKzRFUVFTakFCOEFYTEllSUNFUkVqa0FzQUJGV0xBTEx4dXhDeG8rV2JBQVJWaXdBeThic1FNUVBsbXlEZ3NERVJJNXNBc1FzaEVCQ2l0WUlkZ2I5Rm13QXhDeUdRRUtLMWdoMkJ2MFdiSWZDd01SRWptd0h5K3lIQUVLSzFnaDJCdjBXVEF4SlFZR0p5NENOemNTQUJjV0ZoY25KaWNtQmdjR0Z4WVdGeFkzTnlFM0lRUFdQL0Nla2M5ZEVRY2hBVHZvczlZUXNSVGFsTXdnSEFzTWhXK2xhaTMrN2hvQnc1WlJWd01Da1B5ZE93RVdBVFlHQk1DdkFkTUlCY2k0bjE5NmlBTUZUdTZRQUFBQkFCMEFBQVNhQkkwQUN3Qm9zZ0VNRFJFU09RQ3dBRVZZc0Fvdkc3RUtHajVac0FCRldMQUhMeHV4QnhvK1diQUFSVml3QkM4YnNRUVFQbG13QUVWWXNBRXZHN0VCRUQ1WnNnZ0VCeEVTT1h5d0NDOFl0R0FJY0FnQ2NiS2dDQUZkdEdBSWNBZ0NYYklEQVFvcldDSFlHL1JaTURFaEl4TWhBeU1UTXdNaEV6TUR6N1JXL2JoWHRjdTBXUUpJV3JVQjh2NE9CSTM5L1FJREFBQUJBQ29BQUFHcUJJMEFBd0Frc2dJRUJSRVNPUUN3QUVWWXNBSXZHN0VDR2o1WnNBQkZXTEFBTHh1eEFCQStXVEF4TXlNVE0rQzJ5cllFalFBQi8vYi82d09iQkkwQURnQXZzZ3dQRUJFU09RQ3dBRVZZc0FBdkc3RUFHajVac0FCRldMQUZMeHV4QlJBK1diSUxBUW9yV0NIWUcvUlpNREVCTXdNR0JpY21KamNYQmhjV05qY0M1TGVNRnV5b3JjSUl0UXpJVzM0UkJJMzh4YVBFQkFTNW9BSEJCQUp2WkFBQkFCMEFBQVIvQkkwQURBQk1zZ29ORGhFU09RQ3dBRVZZc0FRdkc3RUVHajVac0FCRldMQUlMeHV4Q0JvK1diQUFSVml3QWk4YnNRSVFQbG13QUVWWXNBc3ZHN0VMRUQ1WnNnQUVBaEVTT2JJR0JBSVJFamt3TVFFSEF5TVRNd00zQVRNQkFTTUJ3ckJBdGN1MFg1SUJ3KzM5ekFGOHpBSUdsZjZQQkkzOTRJa0JsLzN3L1lNQUFRQWRBQUFESXdTTkFBVUFMN0lGQmdjUkVqa0FzQUJGV0xBRUx4dXhCQm8rV2JBQVJWaXdBaThic1FJUVBsbXlBUUVLSzFnaDJCdjBXVEF4TnlFSElSTXo3QUkzRy8wVnk3U1hsd1NOQUFBQkFCMEFBQVd3QkkwQURnQmdzZ2dQRUJFU09RQ3dBRVZZc0FBdkc3RUFHajVac0FCRldMQUNMeHV4QWhvK1diQUFSVml3QkM4YnNRUVFQbG13QUVWWXNBZ3ZHN0VJRUQ1WnNBQkZXTEFNTHh1eERCQStXYklCQUFRUkVqbXlCd0FFRVJJNXNnb0FCQkVTT1RBeEFSTUJNd01qRXhNQkl3c0NJeE1CemQwQ0YrL0t0RWRxL2VXRjRreEV0TXNFamZ4ekE0Mzdjd0diQWZ2OGFnT3MvZHYrZVFTTkFBRUFIUUFBQkpvRWpRQUpBRXl5QVFvTEVSSTVBTEFBUlZpd0JTOGJzUVVhUGxtd0FFVllzQWd2RzdFSUdqNVpzQUJGV0xBQUx4dXhBQkErV2JBQVJWaXdBeThic1FNUVBsbXlBZ1VBRVJJNXNnY0ZBQkVTT1RBeElTTUJBeU1UTXdFVE13UFByZjVLbXJYTHJRRzNtclFEZFB5TUJJMzhpd04xQUFBQ0FFci82Z1JPQktNQUR3QWZBRWF5SENBaEVSSTVzQndRc0FqUUFMQUFSVml3Q0M4YnNRZ2FQbG13QUVWWXNBQXZHN0VBRUQ1WnNBZ1FzaE1CQ2l0WUlkZ2I5Rm13QUJDeUd3RUtLMWdoMkJ2MFdUQXhCU1ltQWpjM0VnQVhIZ0lIQndJQUV5WW1KeVlHQndZWEZoWVhGalkzTmdIMmo4VllFUVVnQVQvbGo4UlhFQVFjL3NLdUNYMXRsZEVkRlFnS2ZteVV6aDhWRUFTUkFRT2NLd0VOQVVjR0JJNytueW4rOFA2MUF4TjRpUVFGMTdhRlgzeU5CQVhSdklNQUFnQWRBQUFFS1FTTkFBb0FFd0JOc2dvVUZSRVNPYkFLRUxBTTBBQ3dBRVZZc0FNdkc3RURHajVac0FCRldMQUJMeHV4QVJBK1diSU1Bd0VSRWptd0RDK3lDZ0VLSzFnaDJCdjBXYkFERUxJVEFRb3JXQ0hZRy9SWk1ERUJBeU1UQlJZV0J3WUVJeVVGTWpZM05pWW5KUUVlVExYTEFibXoxUXNNL3ZyUi92MEJCMzJmRGd0dlovN2tBYmIrU2dTTkFRVENvS3pGbVFGeVpWOXNCQUVBQUFJQVJmODNCRXNFb3dBVEFDTUFPUUN3QUVWWXNBMHZHN0VOR2o1WnNBQkZXTEFGTHh1eEJSQStXYkFORUxJWEFRb3JXQ0hZRy9SWnNBVVFzaDhCQ2l0WUlkZ2I5Rmt3TVNVWEJ5Y0dJeVlDUHdJU0FCY1dGaElIQndJREppWW5KZ1lIQmhjV0ZoY1dOamMyQXd5Mmd0dENOOGZnREFNR0h3RkE1SkRHV0JJR0tvQUpmbTZWengwVkNBbDhiWlhPSHhaQnBHYkZDd01CSGVnbk5RRUlBVVlHQkpIKy9aNHkvcWNDSFhxTEJBWFl0b1JmZW84RUJkQzloUUFBQWdBZEFBQUVBUVNOQUEwQUZnQk5BTEFBUlZpd0JDOGJzUVFhUGxtd0FFVllzQUl2RzdFQ0VENVpzZzRDQkJFU09iQU9MN0lCQVFvcldDSFlHL1Jac2dvQkJCRVNPYkFDRUxBTjBMQUVFTElXQVFvcldDSFlHL1JaTURFQklRTWpFd1VXRmdjR0JSTVZJd0VYTWpZM05pWW5Kd0l6L3UxT3Rjc0JrYjNMREJMKytjYkEvbGprZDZBTUMyaHU5QUhCL2o4RWpRRUZ1SjNvWWY0akRBSllBWFJnVzJnRkFRQUFBUUFSLytzRDdRU2RBQ2NBVkFDd0FFVllzQW92RzdFS0dqNVpzQUJGV0xBZUx4dXhIaEErV2JJREhnb1JFam13Q2hDeUVnRUtLMWdoMkJ2MFdiQU8wTEFERUxJWEFRb3JXQ0hZRy9SWnNCNFFzaVVCQ2l0WUlkZ2I5Rm13SXRBd01RRTJMd0lrTnpZMk56Y1dGZ2NuTmljbUp5SUdCd1lYRnhZV0J3WUVKeVltTnhjR0ZoY3lOZ0xaRXFSOVB2Ny9EUWpuc3ltejF3VzBCU2szZjNHU0RCRzZRcnVsQ0FyKzk4RzY3d1cxQjRCOGVKWUJNWHMySnhkbXpveXlDZ0VFeEowQlVUUkZBMTVTY1RrVU43SjdtTEVGQXNlbEFXVnhBbHdBQUFFQWJRQUFCRUlFalFBSEFDNEFzQUJGV0xBR0x4dXhCaG8rV2JBQVJWaXdBeThic1FNUVBsbXdCaEN5QlFFS0sxZ2gyQnYwV2JBQjBEQXhBU0VESXhNaE55RUVKdjUrc0xXdy9uNGNBN2tEOVB3TUEvU1pBQUFCQUVYLzZnUlhCSTBBRVFBdUFMQUFSVml3Q1M4YnNRa2FQbG13QUVWWXNBUXZHN0VFRUQ1WnNnMEJDaXRZSWRnYjlGbXdDUkN3RWRBd01RRURCZ1FuSmlZM0V6TURCaFlYRmpZM0V3UlhneG4rNnNpLzJST0RzNFFOZFhSNnFSV0VCSTM4OWJyZUJBVGNzd01NL1BOMWdRTUVnbnNERFFBQkFIb0FBQVNaQkk0QUNBQTRzZ1VKQ2hFU09RQ3dBRVZZc0Fndkc3RUlHajVac0FCRldMQURMeHV4QXhvK1diQUFSVml3QlM4YnNRVVFQbG15QVFnRkVSSTVNREVCRnpjQk13RWpBemNCMGdjc0FjdkovWHFwOExVQkpGdGhBMlA3Y3dTTkFRQUJBSlVBQUFZcEJJNEFFZ0JaQUxBQVJWaXdBeThic1FNYVBsbXdBRVZZc0JJdkc3RVNHajVac0FCRldMQUlMeHV4Q0JvK1diQUFSVml3RHk4YnNROFFQbG13QUVWWXNBc3ZHN0VMRUQ1WnNnRVBFaEVTT2JJR0N3Z1JFam15RFJJTEVSSTVNREVCQnpjQk14TVhOd0V6QVNNRE5RY0JJd00zQVdzR0d3R0xvVkVCSHdGVHVmNFZxbG9FL2w2cVZhY0JKbEpDQTNmOGhqMWNBMXY3Y3dPVkNndjhiQVNOQVFBQi83WUFBQVJ0QkkwQUN3Qk1zZ0FNRFJFU09RQ3dBRVZZc0FFdkc3RUJHajVac0FCRldMQUtMeHV4Q2hvK1diQUFSVml3QkM4YnNRUVFQbG13QUVWWXNBY3ZHN0VIRUQ1WnNnQUJCQkVTT2JJR0FRUVJFamt3TVFFQk13RUJJd01CSXdFQk13SW9BV0hrL2hRQklzblYvcFRqQWZqKzZNZ0Myd0d5L2JUOXZ3RzYva1lDVlFJNEFBQUJBSFFBQUFSbEJJMEFDQUE0c2dBSkNoRVNPUUN3QUVWWXNBRXZHN0VCR2o1WnNBQkZXTEFITHh1eEJ4bytXYkFBUlZpd0JDOGJzUVFRUGxteUFBRUVFUkk1TURFQkFUTUJBeU1UQVRNQi9BR1QxdjNVUmJWTC91ckFBa3NDUXYwQS9uTUJyUUxnQUFILzNBQUFCQTRFalFBSkFFdXlCUW9MRVJJNUFMQUFSVml3Qnk4YnNRY2FQbG13QUVWWXNBSXZHN0VDRUQ1WnNnRUJDaXRZSWRnYjlGbXlCQUlCRVJJNXNBY1FzZ1lCQ2l0WUlkZ2I5Rm15Q1FZSEVSSTVNREUzSVFjaE53RWhOeUVINEFLV0cveUJHQU1WL1lzYkExOFhsNWVGQTIrWmdnQUFBZ0FkLy9BQ2dRTWxBQTBBR1FCR3NoQWFHeEVTT2JBUUVMQUgwQUN3QUVWWXNBY3ZHN0VIRmo1WnNBQkZXTEFBTHh1eEFCQStXYkFIRUxJUUFnb3JXQ0hZRy9SWnNBQVFzaFlDQ2l0WUlkZ2I5Rmt3TVFVbUpqYzNOallYRmhZSEJ3WUdFeVluSmc4Q0ZoY1dOemNCSUlLQkRBMFRyWW1CZ1F3T0U2czBCR09GSFJRQkJHV0VIUk1NQkxTWmVxNjRCQVMxbVlHcXRBSXhmQU1EeExNM2Z3TUd5YllBQUFFQWF3QUFBZndERlFBR0FESUFzQUJGV0xBRkx4dXhCUlkrV2JBQVJWaXdBUzhic1FFUVBsbXlCQUVGRVJJNXNBUXZzZ01DQ2l0WUlkZ2I5Rmt3TVNFakV3YzNKVE1CZVpwbzNCZ0JaQlVDVlRpSGNRQUFBZi9wQUFBQ2N3TWtBQmNBUndDd0FFVllzQTh2RzdFUEZqNVpzQUJGV0xBQkx4dXhBUkErV2JJV0Fnb3JXQ0hZRy9SWnNBTFFzZ01QRmhFU09iQVBFTElJQWdvcldDSFlHL1Jac2hVV0R4RVNPVEF4SVNFM0FUWTNOaVluSmdZSEJ6WTJGeFlXQndZUEFpRUNMLzI2RkFGall3d0hOVEJDVUE2YUM2NkFlSXNGQ0pkQXhBRjdkQUVxVkVvd05nRUJTejRCZFpVQ0FuNW1lMzB6a1FBQi8vdi84d0o0QXlJQUpBQnNBTEFBUlZpd0RTOGJzUTBXUGxtd0FFVllzQmN2RzdFWEVENVpzZ0FYRFJFU09YeXdBQzhZdG9BQWtBQ2dBQU5kdHFBQXNBREFBQU54c0EwUXNnY0NDaXRZSWRnYjlGbXdBQkN5SkFJS0sxZ2gyQnYwV2JJU0pBQVJFam13RnhDeUhnSUtLMWdoMkJ2MFdUQXhFeGMyTmpjMkppTWlCeU0yTmpNV0ZnY0dCeFlIQmdZbkppWTFNeFFXTXpJMk56WW5KK1JPUWwwSEJqNHljQjJjQzU5OWZvNEZCNWgyQkFXMWhYZVZsMEk2UUZzSERZMVhBY3NCQWowMk1URmRaWGtEZG1GM1FpdUJiNEVDQW54c01qZEFOV1lGQVFBQUF2L3dBQUFDY3dNVkFBb0FEZ0JGQUxBQVJWaXdDUzhic1FrV1BsbXdBRVZZc0FVdkc3RUZFRDVac2d3RkNSRVNPYkFNTDdBQTBMSURBZ29yV0NIWUcvUlpzQWJRc0F3UXNBalFzZzBKQlJFU09UQXhBVE1ISXdjak55RTNBVE1CTXhNSEFndG9GMmNlbWg3K2xRMEJ2NlQrUWRBNkZnRXJncW1wY0FIOC9oWUJJeDRBQVFBVy8vTUNqd01WQUJzQVlBQ3dBRVZZc0FFdkc3RUJGajVac0FCRldMQU5MeHV4RFJBK1diQUJFTElFQWdvcldDSFlHL1Jac2djTkFSRVNPYkFITDdBRjBMQU5FTEFSMExBTkVMSVRBZ29yV0NIWUcvUlpzQWNRc2hrQ0NpdFlJZGdiOUZtd0J4Q3dHOUF3TVJNVElRY2hCell6TWhZSEJnWW5KaVluRnhZM01qWTNOaVluSWdkR2RnSFRHUDZ3TzBCQ2JZRUVCcTZEZFpFRmxBbHZRVllJQmtFOFF6OEJoZ0dQaEtzY2hYTjhtd0lDZ0dNQlpRSlNSRHhHQVNvQUFnQWUvL0lDYUFNZ0FCSUFIUUJWQUxBQVJWaXdBQzhic1FBV1BsbXdBRVZZc0F3dkc3RU1FRDVac0FBUXNnRUNDaXRZSWRnYjlGbXlCZ3dBRVJJNXNBWXZzZ1FHREJFU09iSVRBZ29yV0NIWUcvUlpzQXdRc2hnQ0NpdFlJZGdiOUZrd01RRUhJeVlITmhjeUZnY0dCaVltTnpjMkpETURKZ2NIQmhZeU5qYzJKZ0k4RFF2K1ZsSm1hbllHQnJEOGtnc0ZGZ0VKMU1kZFBRUUhPbjVYQmdjOEF4K0RBK0ZPQXBOc2VwOEVySXc0ek83K2JnSlJJa2RnVnowNVNnQUFBUUF2QUFBQ3N3TVZBQVlBTWdDd0FFVllzQVV2RzdFRkZqNVpzQUJGV0xBQ0x4dXhBaEErV2JBRkVMSUVBZ29yV0NIWUcvUlpzZ0FFQlJFU09UQXhBUUVqQVNFM0lRS2gvanV0QWNYK1RoY0NXZ0t4L1U4Q2s0SUFBd0FMLy9RQ2VBTWpBQlFBSUFBc0FINEFzQUJGV0xBU0x4dXhFaFkrV2JBQVJWaXdDQzhic1FnUVBsbXlLZ2dTRVJJNWZMQXFMeGkwVUNwZ0tnSnh0cUFxc0NyQUtnTnh0b0Fxa0NxZ0tnTmR0Q0FxTUNvQ2NySVlBZ29yV0NIWUcvUlpzZ0lxR0JFU09iSU5HQ29SRWptd0NCQ3lIZ0lLSzFnaDJCdjBXYkFTRUxJa0Fnb3JXQ0hZRy9SWk1ERUJCZ2NXQndZR0J5TW1KamMyTnlZM05qWVhGaFlETmlZaklnWUhCaFl6TWpZVE5pWWpJZ1lIQmhZek1qWUNjd2VJYkFRRG8zMFFmcEFGQjV4YkJBU2plSFNKeEFWQ05qNVZCd1pDTmo1V0x3VTJNRFpKQmdZNExqSk9Ba3R4U1R0MmFZQURBM2RpZ2trM2FXdDlBZ0ozL2tJeE4wQTBNamRCQVlvcU5Ud3ZLelU5QUFJQU52LzNBbmNESWdBVEFDRUFVUUN3QUVWWXNBZ3ZHN0VJRmo1WnNBQkZXTEFQTHh1eER4QStXYklDRHdnUkVqbXdBaSt3RHhDeUVRSUtLMWdoMkJ2MFdiQUNFTElVQWdvcldDSFlHL1Jac0FnUXNod0NDaXRZSWRnYjlGa3dNUUVHSXlJbU56WTJGeFlXQndjR0JDTW5OekkySnhZM056WW5KaVlqSWdZSEJoWUJ3azFhYTNvR0JxK0NmNFVMQkJiKy85UVVEWWViV0ZFOUNBTURCVGN0UFZVSEJqc0JRRUNPY1h1b0FnS3hrRFBTNFFGL1hxSUVTejRkSFM4NFhFSThUQUFCQUpNQ2l3TVlBeUlBQXdBUkFMQUNMN0lCQVFvcldDSFlHL1JaTURFQklUY2hBdjM5bGhzQ2FnS0xsd0FBQXdFTEJEOERHd1p4QUFNQUR3QVpBRDRBc0FCRldMQU5MeHV4RFJnK1diQUgwTEFITDdBQzBMQUNMN0FBMExBQUw3QU5FTElTQndvcldDSFlHL1Jac0FjUXNoZ0hDaXRZSWRnYjlGa3dNUUV6QnlNSE5EWXpNaFlWRkFZaklpWTNGak15TmpjMkppTWlBbFBJOW4rYlpVZERXV0ZHUlZ4U0JUNGhPZ2NFSWlKRUJuRzIza1pvWFVSRlpsdEVVRE1uSHpRQUFBUC9tdjVIQkVrRVVnQXFBRGdBUmdDUEFMQUFSVml3Snk4YnNTY1lQbG13QUVWWXNCWXZHN0VXRWo1WnNDY1FzQ3JRc0NvdnNnQURDaXRZSWRnYjlGbXlDQlluRVJJNXNBZ3ZzZzhJRmhFU09iQVBMN1NRRDZBUEFsMnlPQUVLSzFnaDJCdjBXYkljT0E4UkVqbXlJQWduRVJJNXNCWVFzakVCQ2l0WUlkZ2I5Rm13Q0JDeVBBRUtLMWdoMkJ2MFdiQW5FTEpEQVFvcldDSFlHL1JaTURFQkJ4WUhCd1lIQmljaUp3WUhCaGNYRmhZSEJnWUVKeVltTnpZMk55WTNOamNtTnpjMk56WWZBZ1VCSndZSEJoWXpNalkyTnpZbUp3TUdGaGNXTmpjM05pWW5KZ1lIQkMrUUlRa0ZISjU4bDBsTlFnZ0pZTEM2dFFnR2svN3Foc0xpQndWeFh5WUdDb3VDQ3dFUm5vQ2pKbXNCY2Z6MVQ0SVJDWUZ5WEs5bENRcFRidDhHZFZsam5BOENCM0JkWXB3UUE2Y0JYR0Vrcm1OTkFoYzRPVVlFQWdhVWcyT2NZQU1Gam5sWml6QXZQM3hlYkxBTXZtZFRBZ0lUQWZ2eUJ6OTVTVkl6V2prL1JBTUNuVlp2QWdKNFd4WldkUUlDZFY0QUFBSUFTLy9rQkljRVVnQVRBQ1VBYnJJaUppY1JFam13SWhDd0M5QUFzQUJGV0xBTEx4dXhDeGcrV2JBQVJWaXdEeThic1E4WVBsbXdBRVZZc0FJdkc3RUNFRDVac0FCRldMQVRMeHV4RXhBK1diSUFBZ3NSRWpteURnc0NFUkk1c0FJUXNoa0JDaXRZSWRnYjlGbXdDeEN5SWdFS0sxZ2gyQnYwV1RBeEpRSW5KaVluSmpjMkVqWVhGaFlYTnpNREV5TUJCaGNXRmhjV056WTNOelluSmljbUJnY0RNcGY4bWJFSEF3Z1VqYzkrZktvZ1VMREtFS2o5NGdjREJXeGdvRzh4RndVR0hUT0RqTFFhOHY3eUJ3VFV0VGxXcHdFYmlRTUVpblh1L2RiOThBSHRQRDl2Z0FNRDBGMWlJMjVrcndZRjdjd0FBQUlBUXdBQUJPVUZyd0FjQUNVQVliSWVKaWNSRWptd0hoQ3dITkFBc0FCRldMQURMeHV4QXh3K1diQUFSVml3QVM4YnNRRVFQbG13QUVWWXNCTXZHN0VURUQ1WnNoMEJBeEVTT2JBZEw3SUFBUW9yV0NIWUcvUlpzZ2tBSFJFU09iQURFTElsQVFvcldDSFlHL1JaTURFQkF5TVRCVElXQndZRkZoY1dCd2NHRnhZWEJ5TW1KeVkzTnpZbUp5VUZNalkzTmlZbkpRRnRiYjM5QWQzZTZoRVYvdldRRUFRR0ZnY0RCQ0VEdVNBRkF3a1VEV2xvL3JZQkphSzVFQTE2Zi82MUFuVDlqQVd2QWRlLzVIQkFxek0xbFRjb09pb1pMVVl1UllwMGlRYWVBWWlDZEg0RUFRQUJBRVFBQUFWcUJiQUFEQUJrc2dvTkRoRVNPUUN3QUVWWXNBUXZHN0VFSEQ1WnNBQkZXTEFJTHh1eENCdytXYkFBUlZpd0FpOGJzUUlRUGxtd0FFVllzQXN2RzdFTEVENVpzZ1lDQkJFU09iQUdMN0xQQmdGZHNpOEdBVjJ5QVFFS0sxZ2gyQnYwV2JJS0FRWVJFamt3TVFFakF5TVRNd016QVRNQkFTTUNJN0p4dlAyN2I0a0NYZmY5WVFHODFnS08vWElGc1AxK0FvTDlOZjBiQUFFQUpRQUFCQjRHQUFBTUFGQ3lCUTBPRVJJNUFMQUVMN0FBUlZpd0NDOGJzUWdZUGxtd0FFVllzQUl2RzdFQ0VENVpzQUJGV0xBTEx4dXhDeEErV2JJR0FnZ1JFam13QmkreUFRRUtLMWdoMkJ2MFdiSUtBUVlSRWprd01RRWpBeU1CTXdNekFUTUJBU01CdElKWHRnRUx0Wmx5QVh6ay9qSUJOOGdCOWY0TEJnRDhqZ0dzL2dyOXZBQUFBUUJFQUFBRlNnV3dBQXNBVExJSkRBMFJFamtBc0FCRldMQURMeHV4QXh3K1diQUFSVml3Qnk4YnNRY2NQbG13QUVWWXNBRXZHN0VCRUQ1WnNBQkZXTEFLTHh1eENoQStXYklBQXdFUkVqbXlCUU1CRVJJNU1ERUJBeU1UTXdNekFUTUJBU01CZVhtOC9idDJDUUxCK3Z6NkFpSFhBcno5UkFXdy9YZ0NpUDB5L1I0QUFRQWxBQUFFQmdZWUFBd0FVN0lGRFE0UkVqa0FzQUJGV0xBRUx4dXhCQjQrV2JBQVJWaXdDQzhic1FnWVBsbXdBRVZZc0FJdkc3RUNFRDVac0FCRldMQUxMeHV4Q3hBK1diSUFCQUlSRWpteUJnUUNFUkk1c2dvSEFCRVNPVEF4QVNNREl3RXpBeGNCTXdFQkl3RThCbHUyQVErMnB3SUJ5UG45MlFHRnpBSHovZzBHR1B4ekFRR3cvZ1Q5d2dBQUFRQVMveE1EN3dWekFDd0FiYklnTFM0UkVqa0FzQUJGV0xBSkx4dXhDUm8rV2JBQVJWaXdJeThic1NNUVBsbXlCQ01KRVJJNXNBa1FzQXpRc0FrUXNCRFFzQXdRc2hRQkNpdFlJZGdiOUZtd0JCQ3lHUUVLSzFnaDJCdjBXYkFqRUxBZzBMQWpFTEFuMExBZ0VMSXFBUW9yV0NIWUcvUlpNREVCTmk4Q0pEYzJOamMzTXdjV0ZnY25OaWNtSnlJR0J3WVdGaGNXQndZR0J3Y2pOeVltTnhjR0ZoY3lOZ0xhRXFSOVB2Ny9EUW5lcnl5Uks1R2RCclFGS1RkL2NaSU1CMXJ2U01VTUNOTzNMSkl0b3JnR3RBVitmSGlXQVRGN05pY1haczZKckJIWjNSeS9nd0ZSTkVVRFhsSThWVVltYUwyRXFoTGg0eGpCandGbWNBSmNBQUVBQmdBQUE5Z0VvZ0FlQUdxeUdoOGdFUkk1QUxBQVJWaXdFeThic1JNYVBsbXdBRVZZc0FZdkc3RUdFRDVac2g0R0V4RVNPYkFlTDdJQUJBb3JXQ0hZRy9SWnNBWVFzZ1VCQ2l0WUlkZ2I5Rm13Q05Dd0FCQ3dETkN3SGhDd0Q5Q3dFeEN3RjlDd0V4Q3lHUUVLSzFnaDJCdjBXVEF4QVNVR0J3Y2xCeUUzRnpZM053YzNNemMyTmhjV0ZnY25OaWNtQmdjSElRTDAvb0lqTWlFQ2hCdjhuUllKWmlNVXBoYWNDeGZxcmFlcUNyWVFyV0I5RUEwQmlRSDBBYzVjTlFLWWxnRXB4WElCZVdyYjhBVUUwcTRCNGdjRG1ZNXlBQUVBTkFBQUJHNEVqUUFYQUpTeUFCZ1pFUkk1QUxBQVJWaXdBUzhic1FFYVBsbXdBRVZZc0Jjdkc3RVhHajVac0FCRldMQU5MeHV4RFJBK1diSUFEUmNSRWpteUVCY05FUkk1c0JBdnNnOFFBVjJ3Rk5Dd0ZDKzBEeFFmRkFKeFFBOFBGQjhVTHhRL0ZFOFVYeFJ2RkFkZHNBVFFzQVF2c0JRUXNoTUVDaXRZSWRnYjlGbXdCZEN3RUJDd0NkQ3dFQkN5RHdRS0sxZ2gyQnYwV2JBSzBEQXhBUUV6QVRNSEpRY0hKUWNoQnlNM0lUY2hOeUUzTXdNekFnVUJrOWIrT084Vy90RUxFUUUvRnY3SEo3VW4vc1VWQVRvTy9zVVYvdXkvQWt3Q1FmMk1lUUlNUXdKNDNkMTRTM2tDZEFBQkFCMEFBQVBOQkkwQUJRQXlzZ0VHQnhFU09RQ3dBRVZZc0FRdkc3RUVHajVac0FCRldMQUNMeHV4QWhBK1diQUVFTElCQVFvcldDSFlHL1JaTURFQklRTWpFeUVEc3YzUXNMWExBdVVEOVB3TUJJMEFBQUwvc0FBQUE4NEVqUUFEQUFnQVBMSUNDUW9SRWptd0FoQ3dCdEFBc0FCRldMQUNMeHV4QWhvK1diQUFSVml3QUM4YnNRQVFQbG15QlFJQUVSSTVzZ2dCQ2l0WUlkZ2I5Rmt3TVNFaEFUTURKd2NCSVFQTysrSUNocVp5Q2liK2ZRSTBCSTMrejJ4WC9TY0FBQU1BU3YvcUJGZ0VwQUFEQUJJQUlnQm5zaGNqSkJFU09iQVhFTEFDMExBWEVMQUUwQUN3QUVWWXNBc3ZHN0VMR2o1WnNBQkZXTEFFTHh1eEJCQStXYkFDMExBQ0w3TGZBZ0Zkc2g4Q0FWMnlBUUVLSzFnaDJCdjBXYkFMRUxJV0FRb3JXQ0hZRy9SWnNBUVFzaDRCQ2l0WUlkZ2I5Rmt3TVFFaE55RUJKZ0kzTnhJQUZ4WVdFZ2NIQWdBVEppWW5KZ1lIQmhjV0ZoY1dOamMyQXp2K0xCc0IxUDZxMXVBYkJTQUJRT1NQeEZjUUJpSCt4TE1KZkc2VzBCMFZDQWgvYlpUT0h4VUIrWm45WGdVQk8vUXNBUXdCU0FZRWp2OEFuelQrNy83Q0F4UjRpQVFGMmJTRVlIbVFCQVhSdklRQUFBSC9zQUFBQTg0RWpRQUlBRGl5QWdrS0VSSTVBTEFBUlZpd0FpOGJzUUlhUGxtd0FFVllzQUF2RzdFQUVENVpzQUJGV0xBRUx4dXhCQkErV2JJSEFnQVJFamt3TVRNakFUTVRJd01uQjJTMEFvYW04c2VkQ2lvRWpmdHpBMXhzWUFBQUEvL1RBQUFEbFFTTkFBTUFCd0FMQUdTeUFBd05FUkk1c0FUUXNBQVFzQXJRQUxBQVJWaXdDaThic1FvYVBsbXdBRVZZc0FBdkc3RUFFRDVac2dNQkNpdFlJZGdiOUZtd0FCQ3dCOUN3QnkreUh3Y0JYYkxmQndGZHNnUUJDaXRZSWRnYjlGbXdDaEN5Q1FFS0sxZ2gyQnYwV1RBeElTRTNJUkVoTnlFVElUY2hBc3I5Q1JzQzkvMktHd0oyZXYwSkd3TDNtQUY3bUFGSm1RQUFBUUFkQUFBRWhnU05BQWNBUDdJQkNBa1JFamtBc0FCRldMQUdMeHV4QmhvK1diQUFSVml3QUM4YnNRQVFQbG13QUVWWXNBUXZHN0VFRUQ1WnNBWVFzZ01CQ2l0WUlkZ2I5Rmt3TVNFakV5RURJeE1oQTd5MnNQM01zTFhMQTU0RDlQd01CSTBBQWYvVkFBQUQzZ1NOQUF3QVE3SUdEUTRSRWprQXNBQkZXTEFJTHh1eENCbytXYkFBUlZpd0F5OGJzUU1RUGxteUFnRUtLMWdoMkJ2MFdiQUYwTEFJRUxJTEFRb3JXQ0hZRy9SWnNBZlFNREVCQVNFSElUY0JBemNoQnlFVEFsbitmZ0tJRy95UkdnR1UvQmdEUHh6OW0vNENPdjVmbVprQnVBRzFoNW4rWUFBREFGRUFBQVR6QkkwQUVnQVlBQjRBYjdJSEh5QVJFam13QnhDd0Z0Q3dCeEN3SE5BQXNBQkZXTEFSTHh1eEVSbytXYkFBUlZpd0NDOGJzUWdRUGxteUVCRUlFUkk1c0JBdnNBRFFzZ2tJRVJFU09iQUpMN0FHMExBSkVMSVZBUW9yV0NIWUcvUlpzQUFRc2hzQkNpdFlJZGdiOUZtd0Z0Q3dGUkN3SE5Bd01RRVdGZ2NHQUFjSEl6Y21KamMrQWpjM013RUNCUk1HQmdVU0pRTTJOZ05KeWVFUEV2N0w2eGkxR012aEVReVQrSndadGYyeUh3RVlkS0s2QXdvZi91cDFvTHNFRkJQMXdORCsvdzF1Y0JIOXZJclJlUWwyL2EzKzdoOENkUTJuZlFFUEgvMk1EYWdBQVFCK0FBQUU5UVNOQUJvQVhMSVpHeHdSRWprQXNBQkZXTEFETHh1eEF4bytXYkFBUlZpd0VTOGJzUkVhUGxtd0FFVllzQmt2RzdFWkdqNVpzQUJGV0xBSkx4dXhDUkErV2JJWUF3a1JFam13R0Mrd0FOQ3dHQkN5Q3dFS0sxZ2gyQnYwV2JBSTBEQXhBU1FURXpNREJnQUhBeU1USmlZbkpqY1RNd01HRnhZV0Z4TXpBcklCSHpzMHRUVWsvdWJnT0xZNGw3WVVEUTAwdGpRSkFnSmtYWUsyQWJrNkFXSUJPUDdJOS83YkdQN2ZBU0VXd0pwZlpRRTQvc2RBUVhLUkZ3TFVBQUVBREFBQUJHb0VvUUFpQUZteUFDTWtFUkk1QUxBQVJWaXdHQzhic1JnYVBsbXdBRVZZc0E4dkc3RVBFRDVac0FCRldMQWhMeHV4SVJBK1diSWdBUW9yV0NIWUcvUlpzQURRc0JnUXNnWUJDaXRZSWRnYjlGbXdBQkN3RHRDd0lCQ3dFZEF3TVNVa0V6YzJKaWNtQmdjR0J4Y1dGd2NoTnpjbUp5WVNKQmNXRWc4Q0FnYzNCeUVDVlFFZk5BVVRoSXlaMHhZTUFRRU9xaGorU2h5cFlBRUVsQUVTcDhqcEJ3TUdLZFN5Ry81Sm5FTUJqU1NweGdNRXphMTBPU25pTjUyWEFvN0YxQUUycXdRRS92alRMeXorenAwRGx3QUJBR3ovNndUb0JJMEFHQUJvc2djWkdoRVNPUUN3QUVWWXNBSXZHN0VDR2o1WnNBQkZXTEFPTHh1eERoQStXYkFBUlZpd0Z5OGJzUmNRUGxtd0FoQ3lBUUVLSzFnaDJCdjBXYkFGMExJSUFoY1JFam13Q0Mrd0RoQ3lEd0VLSzFnaDJCdjBXYkFJRUxJVUFRb3JXQ0hZRy9SWk1ERUJJVGNoQnlFRE5oY1dGZ2NHQmdjM0pEYzJKaWNtQndNakFjWCtweHNEYnh2K256cVZsYm5GREE3LzZBOEJGeGtOWFhKK3RtYTBBL1NabWY3V05BUUV6cmk4eHdLWEJlbHVnZ0lETXYzTkFBQUJBRWYvN0FRM0JLTUFId0Jxc2hNZ0lSRVNPUUN3QUVWWXNBc3ZHN0VMR2o1WnNBQkZXTEFETHh1eEF4QStXYkFMRUxBUDBMQUxFTElTQVFvcldDSFlHL1Jac0FNUXNCYlFzQll2c3Q4V0FWMnlIeFlCWGJJWEFRb3JXQ0hZRy9SWnNBTVFzaDBCQ2l0WUlkZ2I5Rm13QXhDd0g5QXdNUUVHQkNjdUFqYzNFZ0FYRmhZWEl5WW1KeVlHQnlFSElRWVhGaFlYRmpjRDVpUCs3Y2lLd1ZZUkRDVUJPZUM0MVFpekJXMTRrTUl1QWJrYi9sSUlCZ2g1Wi90TUFYcTcwd1FFalB1WVdBRUlBVEFHQk5XMmNvSUVBN205bUVKQmJvQUVDUG9BQXYvRUFBQUdxQVNOQUJjQUlBQjJzZ2doSWhFU09iQUlFTEFaMEFDd0FFVllzQlV2RzdFVkdqNVpzQUJGV0xBR0x4dXhCaEErV2JBQVJWaXdEUzhic1EwUVBsbXdGUkN5Q1FFS0sxZ2gyQnYwV2JBTkVMSVFBUW9yV0NIWUcvUlpzaGNHRlJFU09iQVhMN0lZQVFvcldDSFlHL1Jac0FZUXNob0JDaXRZSWRnYjlGa3dNUUVXRmdjR0JDTWhFeUVEQmdZSEl6Y3pNalkzTnhNaEF3Y0RCVEkyTnpZbUp3VXRyczBMRGY3K3l2NDJyLzV0Y3piS25FTVdJbU9CSVJKdEF2bE5Ha2tCQW5LZURRdGtaZ0xXQkwrZHFzd0Q5UDNLNmRRQnBLUythd0ljL2txWS9sa0JmR1pYYVFVQUFBSUFIUUFBQnJVRWpRQVNBQnNBaExJQkhCMFJFam13QVJDd0ZOQUFzQUJGV0xBQ0x4dXhBaG8rV2JBQVJWaXdFUzhic1JFYVBsbXdBRVZZc0Fzdkc3RUxFRDVac0FCRldMQVBMeHV4RHhBK1diSUFEeEVSRWpsOHNBQXZHTElFQ3dJUkVqbXdCQyt3QUJDeURnRUtLMWdoMkJ2MFdiQUVFTElUQVFvcldDSFlHL1Jac0FzUXNoVUJDaXRZSWRnYjlGa3dNUUVoRXpNREJSWVdCd1lFSXlFVElRTWpFek1CQXdVeU5qYzJKaWNCUXdJMVdyUk1BUUN1elFzTC92N0wvalZYL2N0WHRjdTBBb1JLQVFKeW53MExZbWdDaWdJRC9rb0JCTCtkcU00Qjh2NE9CSTM5c3Y1WkFYcG9WbW9GQUFFQWJRQUFCTzBFalFBV0FGZXlCeGNZRVJJNUFMQUFSVml3QWk4YnNRSWFQbG13QUVWWXNBd3ZHN0VNRUQ1WnNBQkZXTEFWTHh1eEZSQStXYkFDRUxJQkFRb3JXQ0hZRy9SWnNBWFFzZ2dNQWhFU09iQUlMN0lTQVFvcldDSFlHL1JaTURFQklUY2hCeUVETmhjV0ZnY0RJeE0ySnlZbkpnY0RJd0hHL3FjY0EyOGIvcDg2a1pxOHhCUTZ0VGtIQmhhb2diTm10UVAwbVpuKzFqSURBdGk3L3B3QlpUZ3VrUVlETXYzTkFBRUFIZjZiQklVRWpRQUxBRUt5QVF3TkVSSTVBTEFDTDdBQVJWaXdCaThic1FZYVBsbXdBRVZZc0Fvdkc3RUtHajVac0FCRldMQUFMeHV4QUJBK1diQUUwTElJQVFvcldDSFlHL1JaTURFaElRTWpFeUVUTXdNaEV6TUR1LzZOUHJVKy9vckx0TEFDTmJDMC9wc0JaUVNOL0FzRDlRQUNBQi8vK3dQYkJJMEFEQUFWQUZ1eUV4WVhFUkk1c0JNUXNBUFFBTEFBUlZpd0N5OGJzUXNhUGxtd0FFVllzQW92RzdFS0VENVpzQXNRc2dFQkNpdFlJZGdiOUZteUFnb0xFUkk1c0FJdnNoUUJDaXRZSWRnYjlGbXdDaEN5RlFFS0sxZ2gyQnYwV1RBeEFTRURCUllXQndZRUp5VVRJUUUyTmpjMkppY2xBd1BCL2NBeUFSbXR2aFFXL3V2Qi9rektBdkwrS1hHVUJBSnlaLzcvU2dQMy91QUJCTDZlcmM0RUFRU04vQW9DZUdkYlpnVUIvbGtBQXYrSi9xd0VtZ1NOQUE0QUZRQlZzaElXRnhFU09iQVNFTEFFMEFDd0RDK3dBRVZZc0FRdkc3RUVHajVac0FCRldMQUtMeHV4Q2hBK1diSUdBUW9yV0NIWUcvUlpzQXdRc0FuUXNBWVFzQTdRc0JEUXNBUVFzaEVCQ2l0WUlkZ2I5Rmt3TVRjMk5qY1RJUU16QXlNVElRTWpFd1VsRXlFREJ3SXRiSVluWWdMeXNJdFd0VHo4MUR1MlZ3RWpBaktWL25OTUVFV1dZdmkzQWViOEMvNFVBVlQrclFIckF3TURYUDZRUS83dEFBQUIvNjhBQUFZRUJJMEFGUUNTc2cwV0Z4RVNPUUN3QUVWWXNBa3ZHN0VKR2o1WnNBQkZXTEFOTHh1eERSbytXYkFBUlZpd0VTOGJzUkVhUGxtd0FFVllzQUl2RzdFQ0VENVpzQUJGV0xBR0x4dXhCaEErV2JBQVJWaXdGQzhic1JRUVBsbXlEQUlORVJJNWZMQU1MeGl5b0F3QlhiUmdESEFNQWwyeUJBRUtLMWdoMkJ2MFdiQUIwTElJQkF3UkVqbXdEQkN3RDlDeUV3d0VFUkk1TURFQkp3TWpFeU1CSXdFRE14TXpFek1ETXdFekFRRWpBNkJvVjdaWVd2NTM4UUhxOE03TFcxaTJXVThCZk9mK1BBRVExQUgxQWY0S0FmYitDZ0piQWpMK0F3SDkvZ01CL2YzRC9iQUFBQUVBRWYvdUE5NEVvQUFvQUlLeUdpa3FFUkk1QUxBQVJWaXdEeThic1E4YVBsbXdBRVZZc0Jzdkc3RWJFRDVac0E4UXNnY0JDaXRZSWRnYjlGbXlEQThiRVJJNXNpZ1BHeEVTT2JBb0w3Sy9LQUZkc2k4b0FWMjAzeWp2S0FKZHRLOG92eWdDY2JJbkFRb3JXQ0hZRy9SWnNoUW5LQkVTT2JJZkd3OFJFam13R3hDeUlRRUtLMWdoMkJ2MFdUQXhBVEkyTnpZbkppY21Cd1lIQnpZMkZ4WVdCd1lIRmhZSERnSW5KaVkzTXhRWEZqWTNOaVVuTndJQmY1SUtCeGt6bG10RlF4RzJFUHUzdnRjS0N2SlZZQVVIZmVLSnRkTUZzdG1CcVFzWS92dUVHd0tmWVZjMkpVMEVBaTBzVVFHV3NBSURwbzI0WWlHR1hXdWRWQUlDdFpxeEJRTm1XN3dDQVpnQUFRQWZBQUFFb1FTTkFBa0FUTElEQ2dzUkVqa0FzQUJGV0xBQUx4dXhBQm8rV2JBQVJWaXdCeThic1FjYVBsbXdBRVZZc0FJdkc3RUNFRDVac0FCRldMQUZMeHV4QlJBK1diSUVBQUlSRWpteUNRQUNFUkk1TURFQk13TWpFd0VqRXpNREEvV3N5cktjL1FtcnlyS2NCSTM3Y3dOLy9JRUVqZnlCQUFFQUhnQUFCRmNFalFBTUFHaXlDZzBPRVJJNUFMQUFSVml3QkM4YnNRUWFQbG13QUVWWXNBZ3ZHN0VJR2o1WnNBQkZXTEFDTHh1eEFoQStXYkFBUlZpd0N5OGJzUXNRUGxteUJnUUNFUkk1ZkxBR0x4aXlvQVlCWGJSZ0JuQUdBbDJ5QVFFS0sxZ2gyQnYwV2JJS0FRWVJFamt3TVFFakF5TVRNd016QVRNQkFTTUJsMjFYdGN1MFdGZ0IwdWo5MXdGdzJnSDIvZ29FamY0REFmMzl2UDIzQUFIL3hBQUFCSGtFalFBUUFFMnlCQkVTRVJJNUFMQUFSVml3QUM4YnNRQWFQbG13QUVWWXNBRXZHN0VCRUQ1WnNBQkZXTEFJTHh1eENCQStXYkFBRUxJREFRb3JXQ0hZRy9SWnNBZ1FzZ29CQ2l0WUlkZ2I5Rmt3TVFFREl4TWhBd1lHQnlNM056WTJOemNUQkhuTHRLLytiWFUyeDVWTEZpbGdmQ0FTYndTTiszTUQ5UDNQNk5jRXBBSUhucmh1QWh3QUFRQlkvK2dFVkFTTkFCRUFRN0lCRWhNUkVqa0FzQUJGV0xBQ0x4dXhBaG8rV2JBQVJWaXdFQzhic1JBYVBsbXdBRVZZc0Fndkc3RUlFRDVac2dFQ0NCRVNPYklOQVFvcldDSFlHL1JaTURFQkZ3RXpBUTRDSXlJbk54WTNNamNETXdIZUZBR0oyZjNhUG1OOFVEVTBFem9kWGxMcnlBSW5iUUxUL0dSd1pUUUpsUWdCYndPZkFBRUFIZjZzQklZRWpRQUxBRUt5Q1F3TkVSSTVBTEFDTDdBQVJWaXdCaThic1FZYVBsbXdBRVZZc0Fvdkc3RUtHajVac0FCRldMQUVMeHV4QkJBK1diSUFBUW9yV0NIWUcvUlpzQW5RTURFbE13TWpFeUVUTXdNaEV6TUQxNmhub2p2OGJNdTBzQUkxc0xXWS9oUUJWQVNOL0FzRDlRQUJBRm9BQUFRdUJJMEFFZ0JJc2c4VEZCRVNPUUN3QUVWWXNBZ3ZHN0VJR2o1WnNBQkZXTEFSTHh1eEVSbytXYkFBUlZpd0FDOGJzUUFRUGxteURnQUlFUkk1ZkxBT0x4aXlCQUVLSzFnaDJCdjBXVEF4SVNNVEJpY21KamNUTXdNR0Z4WVhGamNUTXdOa3RWV1BuYnJFRkRtMU9nY0hGcXFDc0dhMEFjTXhBZ0xXdmdGai9wdzRMcE1EQXpFQ01nQUJBQjBBQUFYOUJJMEFDd0JNc2dZTURSRVNPUUN3QUVWWXNBSXZHN0VDR2o1WnNBQkZXTEFHTHh1eEJobytXYkFBUlZpd0NpOGJzUW9hUGxtd0FFVllzQUF2RzdFQUVENVpzZ2tCQ2l0WUlkZ2I5Rm13QmRBd01TRWhFek1ESVJNekF5RVRNd1V5K3V2THRMQUJlN0Myc0FGN3NMVUVqZndMQS9YOEN3UDFBQUVBSGY2c0JmNEVqUUFQQUZLeURCQVJFUkk1QUxBQ0w3QUFSVml3Qmk4YnNRWWFQbG13QUVWWXNBb3ZHN0VLR2o1WnNBQkZXTEFPTHh1eERobytXYkFBUlZpd0JDOGJzUVFRUGxteUFBRUtLMWdoMkJ2MFdiQU4wTEFKMERBeEpUTURJeE1oRXpNRElSTXpBeUVUTXdWT3FXZWpQUHIweTdTd0FYdXd0ckFCZTdDMm1QNFVBVlFFamZ3TEEvWDhDd1AxQUFBQ0FGRC8rd1NiQkkwQURBQVZBRnV5QmhZWEVSSTVzQVlRc0EzUUFMQUFSVml3Q2k4YnNRb2FQbG13QUVWWXNBY3ZHN0VIRUQ1WnNBb1FzZ2tCQ2l0WUlkZ2I5Rm15REFjS0VSSTVzQXd2c2hRQkNpdFlJZGdiOUZtd0J4Q3lGUUVLSzFnaDJCdjBXVEF4QVJZV0J3WUVKeVVUSVRjaEF4TTJOamMySmljbEF3TXdyYjRVRnY3c3dmNUtzUDY2R3dINVRMVnprUVFDY1dqL0FFb0MxZ1MrbnF2UUJBRUQ5Sm4rU3YzQUFubG1XbWNGQWY1Wi8vOEFILy83QmFFRWpRQW1BZ2dBQUFBSEFjSUQ5d0FBQUFJQUgvLzdBOU1FalFBS0FCTUFUYklMRkJVUkVqbXdDeEN3QnRBQXNBQkZXTEFJTHh1eENCbytXYkFBUlZpd0J5OGJzUWNRUGxteUNnY0lFUkk1c0FvdnNoSUJDaXRZSWRnYjlGbXdCeEN5RXdFS0sxZ2gyQnYwV1RBeEFSWVdCd1lFSnlVVE13TVROalkzTmlZbkpRTUNhSzIrRkJiKzdNTCtUTXF5VExWeGxBUUVjbW4rLzBvQzFnUytucXZRQkFFRWpmNUsvY0FDZUdkV2F3VUIvbGtBQUFFQUlQL3FCQm9Fb1FBZkFIT3lCQ0FoRVJJNUFMQUFSVml3RlM4YnNSVWFQbG13QUVWWXNCd3ZHN0VjRUQ1WnNBRFFzQndRc2dNQkNpdFlJZGdiOUZteUNCd1ZFUkk1ZkxBSUx4aTBZQWh3Q0FKZHNxQUlBVjIwWUFod0NBSnhzZ2NCQ2l0WUlkZ2I5Rm13RlJDeURnRUtLMWdoMkJ2MFdiQVZFTEFTMERBeEV4WVdGeFkyTnlFM0lUWW5KaVluSmdZSEJ6WWtGeFlTQndjQ0FDY21KaWZUQjNSN2pMd3Qva2diQWF3SUJneDhhWUNiSXJVbUFRL0YwK0ViQ2lMK3pONjkzQWdCZW5kNkF3TzZ2cGhEUW14K0JBU0VkZ0c4MWdRRS9zN3ZULzc0L3NrR0JOT3pBQUFDQUIzLzZnWDNCS0lBRlFBbUFJcXlBU2NvRVJJNXNBRVFzQ0xRQUxBQVJWaXdDUzhic1FrYVBsbXdBRVZZc0E0dkc3RU9HajVac0FCRldMQUdMeHV4QmhBK1diQUFSVml3QUM4YnNRQVFQbG15Q2dZSkVSSTVmTEFLTHhpMFlBcHdDZ0p4c3FBS0FWMjBZQXB3Q2dKZHNnVUJDaXRZSWRnYjlGbXdEaEN5R3dFS0sxZ2gyQnYwV2JBQUVMSWpBUW9yV0NIWUcvUlpNREVGTGdJM0J3TWpFek1ETXpZQUZ4WVdFZ2NIQWdBVE5pY21KaWNtQmdjR0Z4WVdGeFkyTndPZmhzaGdFZGRadGN1MFY4bEFBU3pUajhSWEVBWWgvc1d3QndRSmZtNlMwQjhXQ0FsK2JaYk9IaEFDaWZXUEFmNENCSTMrQ2ZrQkV3UUVqdjhBbnpQKzcvN0JBb0ZHUjNxTUJBWFJ0WVJuZW84RUJkVEFBQUwvM3dBQUJFQUVqZ0FOQUJVQVliSVFGaGNSRWptd0VCQ3dCOUFBc0FCRldMQUhMeHV4QnhvK1diQUFSVml3QUM4YnNRQVFQbG13QUVWWXNBa3ZHN0VKRUQ1WnNoRUhBQkVTT2JBUkw3SUxBUW9yV0NIWUcvUlpzZ0VMRVJFU09iQUhFTElTQVFvcldDSFlHL1JaTURFakFTWW1OelkyTXdVREl4TWhBUk1HRndVVEp5SUdJUUY5WEZzR0MvbkpBY2pLdFZUKzRQNjF0aGJqQVFKQy9uYVJBaEVtbFdTbXVBSDdjd0hmL2lFREthOEJBUUY4QVdzQUFBSC8rZ0FBQkN3RWpRQU5BR1d5Q3c0UEVSSTVBTEFBUlZpd0NDOGJzUWdhUGxtd0FFVllzQUl2RzdFQ0VENVpzZ2NDQ0JFU09YeXdCeThZc3FBSEFWMjBZQWR3QndKZHRHQUhjQWNDY2JJRUFRb3JXQ0hZRy9SWnNBSFFzQWdRc2dzQkNpdFlJZGdiOUZtd0J4Q3dETkF3TVFFakF5TVRJemN6RXlFSElRTXpBbVhiV2JWWjJ4dmFXQUxsRy8zUVBkc0IvZjREQWYyWEFmbVovcUFBQWYrdi9xd0dCQVNOQUJrQXJiSVVHaHNSRWprQXNBTXZzQUJGV0xBUUx4dXhFQm8rV2JBQVJWaXdGQzhic1JRYVBsbXdBRVZZc0Jndkc3RVlHajVac0FCRldMQUZMeHV4QlJBK1diQUFSVml3Q1M4YnNRa1FQbG13QUVWWXNBMHZHN0VORUQ1WnNoWVFCUkVTT1h5d0ZpOFlzcUFXQVYyMFlCWndGZ0pkdEdBV2NCWUNjYklJQVFvcldDSFlHL1Jac2dBSUZoRVNPYkFGRUxJQkFRb3JXQ0hZRy9SWnNBZ1FzQXZRc2c4V0NCRVNPYkFXRUxBUzBEQXhBUk16QXlNVEl3TWpBeU1USXdFakFRTXpFek1UTXdNekFUTUVRTXViVmFROGNOeGxWN1pZV3Y1MzhRSHE4TTdMVzFpMldVOEJmT2NDVVA1Ry9oWUJWQUgyL2dvQjl2NEtBbHNDTXY0REFmMytBd0g5QUFBQkFCNytyQVJYQkkwQUVBQ0FzZ0FSRWhFU09RQ3dBeSt3QUVWWXNBc3ZHN0VMR2o1WnNBQkZXTEFQTHh1eER4bytXYkFBUlZpd0JpOGJzUVlRUGxtd0FFVllzQWt2RzdFSkVENVpzZzBKQ3hFU09YeXdEUzhZdEdBTmNBMENjYktnRFFGZHRHQU5jQTBDWGJJSUFRb3JXQ0hZRy9SWnNnQUlEUkVTT2JBR0VMSUJBUW9yV0NIWUcvUlpNREVCQVRNREl4TWpBU01ESXhNekF6TUJNd0l1QVJHaFZhVThYdjdUYlZlMXk3UllXQUhTNkFKSi9rMytGZ0ZVQWZiK0NnU04vZ01CL1FBQkFCNEFBQVVOQkkwQUZBQjRzZ1VWRmhFU09RQ3dBRVZZc0FZdkc3RUdHajVac0FCRldMQVRMeHV4RXhvK1diQUFSVml3Q1M4YnNRa1FQbG13QUVWWXNCRXZHN0VSRUQ1WnNnQUdDUkVTT1h5d0FDOFlzcUFBQVYyMFlBQndBQUpkdEdBQWNBQUNjYkFFMExBQUVMSVFBUW9yV0NIWUcvUlpzZ2dRQUJFU09iQU0wREF4QVRjM013Y3pBVE1CQVNNQkp3Y2pOeU1ESXhNekFUOVRKNUV0TmdIUzZQM1dBWERhL3RSQktaRWxURmkxeTY4Q2p3SGs1UUgrL2J6OXR3SDJBYy9PL2dvRWpRQUFBUUJwQUFBRk9nU05BQTRBZmJJSER4QVJFamtBc0FCRldMQUdMeHV4QmhvK1diQUFSVml3Q2k4YnNRb2FQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFOTHh1eERSQStXYklJQmdJUkVqbDhzQWd2R0xLZ0NBRmR0R0FJY0FnQ1hiUmdDSEFJQW5HeUFRRUtLMWdoMkJ2MFdiQUdFTElGQVFvcldDSFlHL1Jac2d3QkNCRVNPVEF4QVNNREl4TWhOeUVETndFekFRRWpBbmxzVjdhdy9ya2JBZnhaV1FIUjZmM1dBWERhQWZiK0NnUDFtUDREQVFIOC9iejl0d0FBQWdCUS8rb0ZPQVNpQUNRQU1RQ2lzaFl5TXhFU09iQVdFTEFsMEFDd0FFVllzQXN2RzdFTEdqNVpzQUJGV0xBYkx4dXhHeG8rV2JBQVJWaXdCQzhic1FRUVBsbXdBRVZZc0FBdkc3RUFFRDVac2dJRUd4RVNPYkFDTDdBTEVMSU1BUW9yV0NIWUcvUlpzQVFRc2hRQkNpdFlJZGdiOUZtd0FoQ3lKd0VLSzFnaDJCdjBXYklXRkNjUkVqbXdBQkN5SkFFS0sxZ2gyQnYwV2JJaUpDY1JFam13R3hDeUxnRUtLMWdoMkJ2MFdUQXhCU1luQmljbUFoTTNFZ0EzQndZR0FoY1dGeFlYTWpjbUV4SVNGeFlXRnhZSEFnY1dGd0VXRnpZVE5qYzFKaWNtQmdjRTRNeWJsWmYvL2g0RElBRWEyeEYxbzBzT0VYZENhVEEvcEI4YTc3aVdvQU1CRFNuYlNILzkvUWVXeHlZTUF3cUtlNFFHRlFRM1BBSUVBVkFCRWlBQkF3RW5CSjRCbWY3UmtLdEtLUUVKeEFFdUFRSUJHd1VFekt0QmJ2N2F0Z3dDQVlEUFk0Y0JGV2s4THJVR0JmTFIvLzhBZEFBQUJHVUVqUUFtQWRJQUFBQUhBZDRBRVA3ZUFBSC90djZzQkcwRWpRQVFBRnF5QUJFU0VSSTVBTEFITDdBQVJWaXdBUzhic1FFYVBsbXdBRVZZc0E4dkc3RVBHajVac0FCRldMQU1MeHV4REJBK1diQUFSVml3Q2k4YnNRb1FQbG15QUFFSEVSSTVzZ1FCQ2l0WUlkZ2I5Rm15Q3dFSEVSSTVNREVCQVRNQkV6VVhBeU1USXdNQkl3RUJNd0lvQVdIay9oVFZxMVNsUEdyVi9wVGpBZmorNk1nQzJ3R3kvYlQrVlFNRS9oY0JWQUc2L2tZQ1ZRSTRBQUFCQUd6K3JBVi9CSTBBRHdCV3Nnc1FFUkVTT1FDd0FpK3dBRVZZc0Fndkc3RUlHajVac0FCRldMQU9MeHV4RGhvK1diQUFSVml3QkM4YnNRUVFQbG15QUFFS0sxZ2gyQnYwV2JBSUVMSUhBUW9yV0NIWUcvUlpzQXZRc0FBUXNBM1FNREVsTXdNakV5RVRJVGNoQnlFRElSTXpCTStwWjZJOC9HeXYvcVliQTI4Yi9xQ1ZBak93dHBqK0ZBRlVBL1NabWZ5a0EvVUFBQUVBV2dBQUJDMEVqUUFZQUZHeUJCa2FFUkk1QUxBQVJWaXdDeThic1FzYVBsbXdBRVZZc0Jjdkc3RVhHajVac0FCRldMQUFMeHV4QUJBK1diSVJDd0FSRWpsOHNCRXZHTElIQVFvcldDSFlHL1Jac0FUUXNCRVFzQlRRTURFaEl4TUdCd2NqTnlZbU54TXpBd1lYRmhjM013YzJOeE16QTJPMVZXZG5KNUlucUtFU09yVTdCZ01LalMrUkxWbHpaclFCd3lJS3g4VVMxYTRCWS82Y01DcUhIUER1RFNBQ01nQUFBUUFkQUFBRDdBU05BQk1BUnJJUUZCVVJFamtBc0FCRldMQUFMeHV4QUJvK1diQUFSVml3Q1M4YnNRa1FQbG13QUVWWXNCSXZHN0VTRUQ1WnNnUVNBQkVTT2JBRUw3SVBBUW9yV0NIWUcvUlpNREVUTXdNMkZ4NENCd01qRXpZbkppY21Cd01qNkxWVmxwUjlyVkFOT3JVNkJ3WVdxbnkzWnJVRWpmNDlNZ0lEWUxwNS9wd0JaVGd1a1FZRE0vM09BQUFDQUMvLzhRVmhCS0VBSGdBbkFHbXlEaWdwRVJJNXNBNFFzQ0RRQUxBQVJWaXdEeThic1E4YVBsbXdBRVZZc0FBdkc3RUFFRDVac2lNQUR4RVNPYkFqTDdLL0l3RmRzaFFCQ2l0WUlkZ2I5Rm13QmRDd0l4Q3dETkN3QUJDeUdnRUtLMWdoMkJ2MFdiQVBFTElmQVFvcldDSFlHL1JaTURFRkxnSTNOeVltTnhjR0ZoYzJBQmNlQWdjSElRWVhGaFlYRmpjWEJnTW1CZ2NGTmljbUpnTWZrK3BxSEFHUWxndVZDVWhTT0FFMzFaUFJXUk1VL01zTkRCT1hkNGlkTFg1ZGpzOHFBb1VSQ3hPR0R3R005WThJQzhtaEFXTnRFTzBCRmdRQ2lQQ2FobEJDYVhRQkFraVRWUVFSQThHcEFXTTlYbWNBQWdCQi8rd0VaQVNjQUJjQUlRQmVzaE1pSXhFU09iQVRFTEFZMEFDd0FFVllzQUF2RzdFQUdqNVpzQUJGV0xBSUx4dXhDQkErV2JJTkNBQVJFam13RFMrd0FCQ3lFd0VLSzFnaDJCdjBXYkFJRUxJWUFRb3JXQ0hZRy9SWnNBMFFzaDBCQ2l0WUlkZ2I5Rmt3TVFFZUFnY0hCZ0FuTGdJM053VTJKeVltSnlZSEp6WVRGamMyTnlVR0Z4WVdBcEtVMm1RUkVDTCt1OTZWejFrVEZBTXlGQXdVbkhXRW95cUtVTEp6UWlEOWV4RU1FWWdFbkFPSjg1UjE5LzdQQkFPRjhKcUdCVmxDWm5VQkFrbVVWZnZ0QkpkWWZRRmhQMTFwQUFBQkFCSC82QVB3QkkwQUd3Qm1zZ3NjSFJFU09RQ3dBRVZZc0FJdkc3RUNHajVac0FCRldMQU1MeHV4REJBK1diQUNFTElCQVFvcldDSFlHL1Jac0FUUXNoc01BaEVTT2JBYkw3SVpBUW9yV0NIWUcvUlpzZ1ViR1JFU09iSVFEQUlSRWptd0RCQ3lFd0VLSzFnaDJCdjBXVEF4QVNFM0lRY0JGaFlIRGdJbkppWTNNeFFXRnhZMk56WW1KeWMzQXVEOTFCd0RJQlQrZEpPd0NBZUc0SWExMGdXeWNtYUdwZ3dLY0hPSUhnUDBtWDcrbnhTNWgzT25XQU1GdFp4WVl3SUNkR2RZWXdVQnJnQUFBd0JLLytvRVdBU2tBQTRBRlFBY0FIT3lGeDBlRVJJNXNCY1FzQURRc0JjUXNCRFFBTEFBUlZpd0J5OGJzUWNhUGxtd0FFVllzQUF2RzdFQUVENVpzZzhCQ2l0WUlkZ2I5Rm15R1FBSEVSSTVmTEFaTHhpeW9Ca0JYYlJnR1hBWkFsMjBZQmx3R1FKeHNoTUJDaXRZSWRnYjlGbXdCeEN5RmdFS0sxZ2gyQnYwV1RBeEJTWUNOemNTQUJjV0ZoSUhCd0lBSnhZMk55RUdGZ0VtQmdjaE5pWUNBTmJnR3dVZ0FVRGtqOFJYRUFVYy9zTGdqTWd1L1lnUGd3RWVpc291QW5jUmdCQUZBVHYwTEFFTUFVZ0dCSTcvQUo0di92UCt1SjhGdmJtbHh3TjBCYjYzcE1jQUFBSC8vd0FBQTlnRW9nQW5BSyt5SlNncEVSSTVBTEFBUlZpd0hpOGJzUjRhUGxtd0FFVllzQXd2RzdFTUVENVpzZ1lNSGhFU09iQUdMN0lQQmdGZHNBSFFzQUV2UUFrZkFTOEJQd0ZQQVFSZHNnQUJBVjJ5QWdRS0sxZ2gyQnYwV2JBR0VMSUhCQW9yV0NIWUcvUlpzQXdRc2dzQkNpdFlJZGdiOUZtd0R0Q3dCeEN3RTlDd0JoQ3dGTkN3QWhDd0dOQ3dBUkN3R2RDd0hoQ3dJdEN5RHlJQlhiSTlJZ0Zkc2t3aUFWMndIaEN5SkFFS0sxZ2gyQnYwV1RBeEFTRUhJUWNISlFjbEJnY2xCeUUzRnpZM053YzNGemMzSXpjek56WTJGeFlXQnljMkp5WUdCd0dEQVpFVi9ua1FCUUdKRmY1L0p5OENoQnY4blJZSlJDWVJvUmFiQkJDZEZwTUlIK2FxcDZvS3RoQ3RXWG9ZQXFoNVhCSUJlUUZ2UlFLWWxnRWRaekVCZVFFU1hIazYydVlGQk5LdUFlSUhBNFdFQUFFQUh2L3dBOThFb1FBaUFKV3lBeU1rRVJJNUFMQUFSVml3Rmk4YnNSWWFQbG13QUVWWXNBa3ZHN0VKRUQ1WnNpSUpGaEVTT2JBaUw3SU1JZ0ZkdEJBaUlDSUNYYkFPMExJTkJBb3JXQ0hZRy9SWnNBSFFzQWtRc2dRQkNpdFlJZGdiOUZtd0loQ3dIdEN3SGk5QUNSOGVMeDQvSGs4ZUJGMnlBQjRCWGJBVDBMSVFCQW9yV0NIWUcvUlpzQllRc2hzQkNpdFlJZGdiOUZtd0VCQ3dJTkF3TVFFRkJoWVhGamNYQmljbUpqY0hOek0zSXpjek5pUVhGaGNISmlNbUF5RUhJUWNoQXZiK2RBUjJjVkI1RFhCc3V0c0tuaFdTRkpNVmpqMEJEOFJjaWlSWmIvbGFBWk1XL25FVEFaQUJsZ0YraXdJREhaY2RBZ0xpd1FGNWJYblQyUUlDSDVVZkJQN3BlVzBBQUFRQUhRQUFCNllFb2dBREFCRUFId0FwQUtpeUtDb3JFUkk1c0NnUXNBSFFzQ2dRc0EzUXNDZ1FzQlBRQUxBQVJWaXdKaThic1NZYVBsbXdBRVZZc0Nndkc3RW9HajVac0FCRldMQUVMeHV4QkJvK1diQUFSVml3SUM4YnNTQVFQbG13QUVWWXNDTXZHN0VqRUQ1WnNBUVFzQXZRc0FzdnNBTFFzQUl2dEFBQ0VBSUNYYklCQXdvcldDSFlHL1Jac0FzUXNoVURDaXRZSWRnYjlGbXdCQkN5SEFNS0sxZ2gyQnYwV2JJaUppQVJFam15SnlBbUVSSTVNREVsSVRjaEF4WVdCd2NHQmljbUpqYzNOallEQmhZWEZqWTNOelltSnlZR0J3RWpBUU1qRXpNQkV6TUc3djNqR1FJZWtwQ2dEQWNQMEplT29Rb0hEOU5KQjB0TFVXd09DUWRNU1ZGd0MvNHVyZjVLbXJYTHJRRzNtclM5amdOVEJMNk9TWjdBQkFTN2tFbWZ3UDVXV21ZQ0FtbGRWVnhrQWdKdFgveTVBM1Q4akFTTi9Jc0RkUUFDLzkwQUFBUndCSTBBRmdBZkFIWUFzQUJGV0xBTUx4dXhEQm8rV2JBQVJWaXdBeThic1FNUVBsbXlCZ01NRVJJNXNBWXZzQlhRc2dFQkNpdFlJZGdiOUZtd0JOQ3dCaEN3Q3RDd0NpKzB2Z3JPQ2dKZFFBa09DaDRLTGdvK0NnUmRzZ2dCQ2l0WUlkZ2I5Rm13Rk5Dd0NoQ3dGOUN3REJDeUh3RUtLMWdoMkJ2MFdUQXhKU01ISXpjak56TTNJemN6RXdVV0ZnY0dCQ01sQnpNbkJUWTJOelltSnlVQ1NQb2d0aUM3RzdvUXV4dTZad0cxcnNvTEMvNzd4djdwRVB2UkFRSnpuQTBNYUYvKzZiUzB0SmhabUFKUUFRVEluNnJUQVZueEFnSjlaV0Z3QkFFQUFBSUFILy9tQkJFR0FBQVRBQ0FBWkxJRklTSVJFam13QlJDd0hkQUFzQW92c0FCRldMQU9MeHV4RGhnK1diQUFSVml3Q0M4YnNRZ1FQbG13QUVWWXNBVXZHN0VGRUQ1WnNnY09DQkVTT2JJTURnZ1JFam13RGhDeUZ3RUtLMWdoMkJ2MFdiQUZFTEljQVFvcldDSFlHL1JaTURFQkJnWUhCaWNtSndjakFUTUROaGNlQWhjV0p5WW1KeVlIQXhZWEZqWTNOZ1FKRUZsRGk4WEhYaXVlQVF1MWJZSzZaNTVYQlFLNENYTmtxWFZST3FhS3hob0pBaGg1MGt5YkJRU1RnZ1lBL2NLUUJBRm94SFU5UW5XSkF3U3UvaW1tQkFYZXVsb0FBUUJELytnRDlnUlVBQndBUzdJQUhSNFJFamtBc0FCRldMQVBMeHV4RHhnK1diQUFSVml3Q0M4YnNRZ1FQbG15QUFFS0sxZ2gyQnYwV2JJRUR3Z1JFam15RWdnUEVSSTVzQThRc2hZQkNpdFlJZGdiOUZrd01TVVdOamMzRGdJbkpnSTNOeElBRnhZV0J5TTBKaWNtQWdjSEZCWUI2bUdkRzZ3UWhzeHJ5dFVaQXg0Qkx0aW16UUtxY1YrYnlRc0Jkb0lDY21JQlphbGZBd1FCTE9vYkFRQUJOQVlFMmF4cmd3UUcvdmppSkpTWEFBSUFSLy9uQklVR0FBQVNBQ0FBWWJJRUlTSVJFam13QkJDd0hkQUFzQWN2c0FCRldMQUVMeHV4QkJnK1diQUFSVml3Q2k4YnNRb1FQbG13QUVWWXNBMHZHN0VORUQ1WnNnWUVDaEVTT2JJTEJBb1JFam15R0FFS0sxZ2gyQnYwV2JBRUVMSWRBUW9yV0NIWUcvUlpNREVUTmhJMkZ4WVhFek1CSXpjR0p5WW1KeVkzTXdZWEZCWVhGamNUSmljbUJnZFFFNWJaZ0xSaGFiWCs5WnNPaEx5YnV3d0VCclVGQVhocm9uVldQSjJPeGhzQ0g2QUJEWVlEQklBQ05mb0FlSkVFQk9XN1B6d3BMSW1qQWdTakFmU1RCQVhjdGdBQ0FDVCtVQVEyQkZRQUd3QXFBSHl5Q3lzc0VSSTVzQXNRc0NiUUFMQUFSVml3QkM4YnNRUVlQbG13QUVWWXNBY3ZHN0VIR0Q1WnNBQkZXTEFNTHh1eERCSStXYkFBUlZpd0ZpOGJzUllRUGxteUJnUVdFUkk1c0F3UXNoRUJDaXRZSWRnYjlGbXlGQVFXRVJJNXNCWVFzaUVCQ2l0WUlkZ2I5Rm13QkJDeUpnRUtLMWdoMkJ2MFdUQXhFelkzTmhjV0Z6Y3pBd1lBSnlZbk54WVhCQk0zQmljbUppY21Oek1HRnhZV0Z4WTNFeVluSmdjR0IxQVhZcFh5d1Y4cm02d2ovdWZXdUp4QmVKNEJCRkVUaUxDYnV3b0VCclVIQlFsMFk2SjNWVHFndm1vNER3SWZ3WlRnQmdTUmdmd1U4UDd5QkFSbWkxb0VCZ0V5VllRRUJPVzZQencrUTNXSkJBU2xBZTZXQmdPN1pIZi8vd0NwQUFBREJBVzNBQVlBRmJBQUFBTC8xLzVnQkJBRVVnQVJBQjRBWkxJQUh5QVJFam13RzlBQXNBQkZXTEFKTHh1eENSZytXYkFBUlZpd0JpOGJzUVlZUGxtd0FFVllzQU12RzdFREVqNVpzQUJGV0xBQUx4dXhBQkErV2JJSENRTVJFam13Q1JDeUZRRUtLMWdoMkJ2MFdiQUFFTElhQVFvcldDSFlHL1JaTURFRkppY0RJd0UzQnpZWEZoWVhGZ2NIQmdBVEppWW5KZ2NERmhjV05qYzJBZ3k3WkdHMUFRU2FENGkrb0xnSkF3Y0pLdjd6alF0NFpKNXlXejJkanMwWkNCVUVlLzMyQmRvQmZwVUVCTjdCUUQ0NzdmN2hBc3QyaUFNRW1mMzVqd1VENUxWY0FBSUFSdjVnQkRVRVZBQVJBQjRBYTdJREh5QVJFam13QXhDd0hOQUFzQUJGV0xBR0x4dXhCaGcrV2JBQVJWaXdBeThic1FNWVBsbXdBRVZZc0Fndkc3RUlFajVac0FCRldMQU1MeHV4REJBK1diSUZCZ3dSRWpteUNnWU1FUkk1c2hjQkNpdFlJZGdiOUZtd0F4Q3lIQUVLSzFnaDJCdjBXVEF4RXpZQUZ4WVhOek1CSXhNR0p5NENKeVkzQmhjV0ZoY1dOeE1tSnlZR1R5QUJHYzY1WVNlZS92eTFZb0tzWnA1YkJ3UzhCd1lKZDJPWmQxMUJsWkRNQWg3NUFUMEZCSVJ6K2lZQ0JId0VBV2ZDZHpoRVBrUjNpd01FbHdJVGlRWUY1UUFDQUVYLzZ3UDdCRk1BRlFBZkFGK3lBQ0FoRVJJNXNCZlFBTEFBUlZpd0NDOGJzUWdZUGxtd0FFVllzQUF2RzdFQUVENVpzaG9JQUJFU09iQWFMN1MvR3M4YUFsMnlEQUVLSzFnaDJCdjBXYkFBRUxJUUFRb3JXQ0hZRy9SWnNBZ1FzaFlCQ2l0WUlkZ2I5Rmt3TVFVbUFqYzNFamMyRnhZU0J3Y2hCaFlYRmpjWEJnWURKZ1lIQlRjMkp5WW1BZ3pZN3hVREhhQ1d4c1BDR3hQOVBnK1RpNDJTTEVDMkFtNnVOQUlSQlFrSERXZ1RBZ0V2NXh3QkFaNlRCUWIrOHRoNmw4a0VCRjJCT1RnRHpBV2JvUUViTnpOVFhRQUFBZ0ExL2xBRUtBUlNBQndBS2dCOHNnc3JMQkVTT2JBTEVMQW4wQUN3QUVWWXNBY3ZHN0VIR0Q1WnNBQkZXTEFFTHh1eEJCZytXYkFBUlZpd0RDOGJzUXdTUGxtd0FFVllzQll2RzdFV0VENVpzZ1lIRmhFU09iQU1FTElSQVFvcldDSFlHL1Jac2hRSEZoRVNPYkFXRUxJaUFRb3JXQ0hZRy9SWnNBUVFzaWNCQ2l0WUlkZ2I5Rmt3TVJNMkVqWVhGaGMzTXdNR0FDY21KemNXRnhZVE53WW5KaVluSnlZM013WVhGaFlYRmpjVEppY21CZ2RWRkl2UGY4RmZLNXV1SS83cDFxaU5RVytJL1U4YWhMR01yQlFFQWdhMkJ3TUVhV0tlZVZVOG5ZcTNHd0llcEFFTGhRTUVrWUQ4QXVuKy9RUUVVNHRKQWdZQkZYS0VCQVRCcVRZK096dERkNGtFQjZjQjhaUUdBOWJCQUFFQWdmL25CVUVGeUFBZkFFNnlDeUFoRVJJNUFMQUFSVml3REM4YnNRd2NQbG13QUVWWXNBTXZHN0VERUQ1WnNnQU1BeEVTT2JJUUF3d1JFam13REJDeUZBRUtLMWdoMkJ2MFdiQURFTElkQVFvcldDSFlHL1JaTURFQkJnQW5MZ0luSmhJU0pCY1dBQmNqSmljbUp5WUdBZ2NIRkJZV0Z3UVRCTndzL3Jiamo5dURDZ3RkMEFFVW50VUJCQWk3QmoxUG00ZmZseE1EVFpKbEFUSm5BYy9nL3ZnRUE0VCtuYUlCYlFFZWpnTUUvdm5maWxOckJBU1kvdFRVVkh6TmJBTUxBVkVBQUFFQWhQL29CVU1GeHdBaEFGeXlGQ0lqRVJJNUFMQUFSVml3RFM4YnNRMGNQbG13QUVWWXNBTXZHN0VERUQ1WnNoRUREUkVTT2JBTkVMSVRBUW9yV0NIWUcvUlpzQU1Rc2hzQkNpdFlJZGdiOUZteUlBMERFUkk1c0NBdnNoOEJDaXRZSWRnYjlGa3dNU1VHQkNjdUFpY21OellTSkJjV0ZoY2pBaVVtQmdJWEZCWVdGeFkzRXlFM0lRUzJTZjdlczVqa2lBc0ZEUjdQQVMyeDEvNFN1UnorNTVic2tnSlJuV3plZ0R6K3VSd0NBTDVsY1FNRGgvK2dVWDdZQVZ5d0F3VHAwd0VhQ0FTNi9xREllOU53QVFWdUFVYWJBQUFDQUVRQUFBVVdCYkFBREFBWEFFYXlDeGdaRVJJNXNBc1FzQmZRQUxBQVJWaXdBUzhic1FFY1BsbXdBRVZZc0FBdkc3RUFFRDVac0FFUXNnMEJDaXRZSWRnYjlGbXdBQkN5RGdFS0sxZ2gyQnYwV1RBeE14TUZNZ1FYRmdjSEJnSUVCd01ERnpJMk5oSW5KaVluUlAwQmo3MEJFejA1RkFNWTJmNm96QW5HelpUNHFEc1FGc0NkQmJBQnZhYWV2eHZTL3JlNEFRVVMrNHNCZit3Qk1YK2h0UVFBQUFJQWhmL29CVjRGeUFBVEFDQUFScklJSVNJUkVqbXdDQkN3R05BQXNBQkZXTEFKTHh1eENSdytXYkFBUlZpd0FDOGJzUUFRUGxtd0NSQ3lGd0VLSzFnaDJCdjBXYkFBRUxJZEFRb3JXQ0hZRy9SWk1ERUZKaVlDSnlZU0VpUVhIZ0lYRmdjSEJnSUVBVFFtSnlZR0FoSVdGeFkyRWdLQ2pkbUFDd3hqMVFFUm1ZelpnZ3NGQ1FZZDBmN1JBVytwbVpQemxRYXJscEh6a2hVRGlRRUJucTBCWHdFWWpnTURoLytlVmxRcjAvNm90Z09Id080RUJMeitwLzV3N2dRR3VBRmRBQUFDQUlYL0JBVmtCY2dBRlFBakFFYXlBeVFsRVJJNXNBTVFzQnJRQUxBQVJWaXdEaThic1E0Y1BsbXdBRVZZc0FVdkc3RUZFRDVac0E0UXNoa0JDaXRZSWRnYjlGbXdCUkN5SUFFS0sxZ2gyQnYwV1RBeEpSY0hKd1lqSmlZQ0p5WVNFaVFYRmhZU0Z4WUNBaE1tSmljbUJnSVhGaFlYRmpZU0E2elFpLzg0T29yV2hBc01aZE1CRUpxTjNIOExDbUhKWndPcGxwTDFsQU1EcTVhUzlaQTl5SEh5Q2dHR0FRT2hyUUZoQVJXT0F3T0ovd0NlcmY2aC92d0M0c3prQkFTKy9xYkZ5TzRFQnJzQllRQUJBTHNBQUFNUkJJMEFCZ0F5QUxBQVJWaXdCUzhic1FVYVBsbXdBRVZZc0FFdkc3RUJFRDVac2dRRkFSRVNPYkFFTDdJREFRb3JXQ0hZRy9SWk1ERWhJeE1GTnlVekFreTBvZjZDSUFJVUlnT2hpckRHQUFFQU9RQUFBL2tFb3dBWUFFMEFzQUJGV0xBUUx4dXhFQm8rV2JBQVJWaXdBQzhic1FBUVBsbXlHQUVLSzFnaDJCdjBXYkFDMExJRUVCZ1JFam13RUJDeUNRRUtLMWdoMkJ2MFdiQVFFTEFNMExJV0dCQVJFamt3TVNFaE53RTNOamMySmljbUJnY0hOaVFYSGdJSEJnY0JJUU9aL0tBWkFqSXBnQXdMWlZ0MXBoV3lFUUVjdjJ1cVZnZ1E2UDVlQWwyTEFjRWpiM05SWmdJRWtIZ0JzK3NDQTFPVFlMdTUvck1BQVFBZEFBQUVBd1hFQUFjQUt3Q3dBRVZZc0FZdkc3RUdHajVac0FCRldMQUVMeHV4QkJBK1diQUdFTElEQVFvcldDSFlHL1JaTURFQk13TWhBeU1USVFOT3RWSDkwTEMxeXdJd0JjVCtNUHdNQkkwQUFmK0IvcUVFRUFTTkFCb0FUZ0N3RFMrd0FFVllzQUl2RzdFQ0dqNVpzZ0VCQ2l0WUlkZ2I5Rm13Qk5DeUJRMENFUkk1c0FVdnNBMFFzaElCQ2l0WUlkZ2I5Rm13QlJDeUdRRUtLMWdoMkJ2MFdiSWFCUmtSRWprd01RRWhOeUVIQVI0Q0J3WUdCQ2NtSnpjV0Z4WWtOelltSnljM0F3MzlqeHNEV1JiK1JHZVZSd2tQcGY3cnFMWFJQcEtycmdFQUZoT1ZwRUVQQS9TWmZ2NXdFM3U3YTZEOWpRSUNaSXhYQkFUU3JKdW5CUUZ2QUFMLzAvNjJCREFFalFBS0FBNEFSZ0N3QUVWWXNBa3ZHN0VKR2o1WnNBQkZXTEFHTHh1eEJoQStXYklNQVFvcldDSFlHL1Jac0FEUXNBWVFzQVBRc0FZUXNBWFFzQVV2c0F3UXNBalFzQWtRc0EzUU1ERWxNd2NqQXlNVElUY0JNd0VoRXdjRGNNQWJ2em0yT3YweUZRTnd5ZnluQWZLTUpaYVgvcmNCU1hjRUYvd0pBdjQzQVAvL0FKQUNpQUwwQmIwREJ3SFVBSE1DbUFBVEFMQUFSVml3Qnk4YnNRY2NQbG13RU5Bd01RRC8vd0JoQXBnQzVBV3RBd2NCMkFCeEFwZ0FFd0N3QUVWWXNBa3ZHN0VKSEQ1WnNBM1FNREVBLy84QWlRS0xBd0lGclFNSEFka0Fjd0tZQUJBQXNBQkZXTEFCTHh1eEFSdytXVEF4Ly84QWtRS0tBdHNGdUFNSEFkb0Fjd0tZQUJNQXNBQkZXTEFTTHh1eEVodytXYkFUMERBeEFQLy9BS0lDbUFNbUJhMERCd0hiQUhNQ21BQVFBTEFBUlZpd0JTOGJzUVVjUGxrd01mLy9BSDRDakFMckJic0RCd0hjQUhNQ21BQVpBTEFBUlZpd0VpOGJzUkljUGxtd0dOQ3dFaEN3Sk5Bd01RRC8vd0NwQW84QzZnVzZBd2NCM1FCekFwZ0FFd0N3QUVWWXNBZ3ZHN0VJSEQ1WnNCelFNREVBQUFILzFmNmFCRVFFakFBY0FGdXlCeDBlRVJJNUFMQU9MN0FBUlZpd0FTOGJzUUVhUGxteUF3RUtLMWdoMkJ2MFdiSUhBUTRSRWptd0J5K3dCZEN5RVFFT0VSSTVzQTRRc2hNQkNpdFlJZGdiOUZtd0J4Q3lHUUVLSzFnaDJCdjBXYkFIRUxBYzBEQXhFeE1oQnlFRE5oY2VBZ2NHQUNjbUp6Y1dGeFkyTnpZbUp5WUdCMWp0QXY4ZS9aU0NiNUI2ckUwTkdQNno2Y2V6UkhQSW51SVREM3Q2VzRZcUFYWURGcXYrYzBNQ0FYN2NodTcrMUFRRWI0eGpCUUxkcElXekJBTStVUUFCQUN2K3RnUTNCSTBBQmdBb3NnRUhDQkVTT1FDd0FTK3dBRVZZc0FVdkc3RUZHajVac2dNQkNpdFlJZGdiOUZtd0FOQXdNUUVCSXdFaE55RUVJL3pIdndNdS9UWWJBNDBFR2ZxZEJUK1lBQUlBU2YveUJxY0VvQUFXQUNJQW5iSUxJeVFSRWptd0N4Q3dHZEFBc0FCRldMQU5MeHV4RFJvK1diQUFSVml3Q2k4YnNRb2FQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFBTHh1eEFCQStXYkFORUxJUEFRb3JXQ0hZRy9SWnNoSU5BQkVTT2JBU0w3UWZFaThTQWwyeXZ4SUJYYklUQVFvcldDSFlHL1Jac0FBUXNoWUJDaXRZSWRnYjlGbXdBaEN5RndFS0sxZ2gyQnYwV2JBS0VMSWFBUW9yV0NIWUcvUlpNREVoSVFVakpnSTNOeElBRnpJV015RUhJUU1oQnlFRElRVTNFeWNtQmdjR0Z4UVdGd1hqL1pYKzJWWFUzeHNHSUFFLzVseklZQUowRy8ydU93SUZHLzM5UWdKYS9IbHpvZUthMUJzTkFYeDBEZ1VCT3ZNeUFRb0JRQUlSbWY2eW1QNkpDZ01EYVF3QzNzSndNWkNsQkFBQUFnQS8vcVVFUGdTbUFCa0FKd0JSc2hzb0tSRVNPYkFiRUxBTjBBQ3dGUyt3QUVWWXNBMHZHN0VOR2o1WnNCVVFzZ0FCQ2l0WUlkZ2I5Rm15QkJVTkVSSTVzQVF2c2hvQkNpdFlJZGdiOUZtd0RSQ3lJZ0VLSzFnaDJCdjBXVEF4QlFRVEJpY3VBamMyTmpjMkZ4WVNCd2NHQWdRbkppYzNGZ0VXTmo4Q05pWW5KZ1lIQmhZQlFBRllub2lwZnJWVURRcFdSby9SMk5VZUp5UEQvdU9wa253emJRRTNaYWMxRndZRGRuU0d0UkVQYzhFSEFkWnNCQUdCNEl0c3gwbVhCQVgrelAzNTJ2Nnpwd01DUFl3eUFmd0VYRldXV295Z0JBUFdwWS9EQUFBQ0FHVC81d1I0QktZQUVRQWdBRGtBc0FCRldMQUtMeHV4Q2hvK1diQUFSVml3QUM4YnNRQVFQbG13Q2hDeUZRRUtLMWdoMkJ2MFdiQUFFTEljQVFvcldDSFlHL1JaTURFRkppWUNOemMyTmpjMkZ4WVNCd2NHQWdZQkp5WW5KZ0lIRlJRV0Z4WTJOellDR1pYSVdCSUNFR05Sb3V2UDRBb0VFNkQrQVFJRUg5ZXg1QWVEZVozWEhBb1ZCSllCREtnVWZ1UlNwUVVGL3VMeE43Yis0SmtDM2ovK0NBYisyUGtobTY0RUJlelBYQUQvLy84Si9rWUJyd1E2QUFZQW13QUEvLy8vQ2Y1R0FhOEVPZ0FHQUpzQUFQLy9BQzRBQUFHZkJEb0FCZ0NNQUFELy8vOTYvbGtCbndRNkFDWUFqQUFBQUFZQW84c0svLzhBTGdBQUFaOEVPZ0FHQUl3QUFQLy8vL0grcVFHZkJEb0FKZ0NNQUFBQUJ3Q3NBellBQ2dBQkFCMy81d1BVQktJQUlRQmZBTEFBUlZpd0ZTOGJzUlVhUGxtd0FFVllzQkF2RzdFUUVENVpzQUJGV0xBZkx4dXhIeEErV2JJQ0FRb3JXQ0hZRy9SWnNna2ZGUkVTT2JBSkw3SUlBd29yV0NIWUcvUlpzQlVRc2d3QkNpdFlJZGdiOUZteUdRa0lFUkk1TURFbEZoY3lOamMySnljM0FTWW5KZ1lIQXlNVE5qWVhGaFlYQVJZV0J3WUdKeVluQVdWS1ZXR0pEQlB0WFJrQkdEeGphb1lVZ0xTQUhlaThaN05jL3J5T2x3Y004TEpyY2JVekFvTmxxd01Ca2dFaFBBSUNrNGI5RHdMeDFkd0VCRmhjL3JJU25YeXYxd0lDTWYvL0FCa0NId0lQQXJZQ0JnQVJBQUFBQWdBdkFBQUU4d1d3QUE0QUhRQnRBTEFBUlZpd0JTOGJzUVVjUGxtd0FFVllzQUF2RzdFQUVENVpzZ01BQlJFU09iQURMN0xQQXdGZHNwOERBWEd5THdNQlhiUnZBMzhEQW5LeUFnRUtLMWdoMkJ2MFdiQVEwTEFBRUxJUkFRb3JXQ0hZRy9SWnNBVVFzaHNCQ2l0WUlkZ2I5Rm13QXhDd0hkQXdNVE1USXpjekV3VXlCQklIQndJQUlSTWhBeGN5QURjMkp5WW1KeWNESVZsem5SdWRid0Y2c2dFQmNCY0tMUDVxL3MyOC91OVl1ZFFCSnl3akN3K3dsTjlVQVJJQ21wY0Nmd0d5L3NmQ1NmN0Mvb1VDbXY0REFRRUk1cmlCbTY4RUFmNGZBQUFDQUM4QUFBVHpCYkFBRGdBZEFHMnlEeDRmRVJJNXNBOFFzQWJRQUxBQVJWaXdCaThic1FZY1BsbXdBRVZZc0FBdkc3RUFFRDVac0FQUXNBTXZzaThEQVYyeXp3TUJYYklDQVFvcldDSFlHL1Jac0JEUXNBQVFzaElCQ2l0WUlkZ2I5Rm13QmhDeUdnRUtLMWdoMkJ2MFdiQURFTEFjMExBZDBEQXhNeE1qTnpNVEJUSUVFZ2NIQWdBaEV5RURGeklBTnpZbkppWW5Kd01oV1hPZEc1MXZBWHF5QVFGd0Z3b3MvbXIremJ6KzcxaTUxQUVuTENNTEQ3Q1UzMVFCRWdLYWx3Si9BYkwreDhKSi9zTCtoUUthL2dNQkFRam11SUdicndRQi9oOEFBQUVBUFFBQUJBRUdBQUFhQUdNQXNCZ3ZzQUJGV0xBRUx4dXhCQmcrV2JBQVJWaXdFUzhic1JFUVBsbXdBRVZZc0Frdkc3RUpFRDVac2k4WUFWMnlEeGdCWGJJV0VSZ1JFam13RmkreUV3RUtLMWdoMkJ2MFdiQUIwTEFFRUxJT0FRb3JXQ0hZRy9SWnNCWVFzQm5RTURFQklRTTJGeFlXQndNakV6WW5KaWNtQndNakV5TTNNemN6QnlFQzEvN3ROWTY1bUpNVGRyVjNCZ1VSbEtaNGhyWFdwaHVsRzdVZEFSSUUwdjdrbXdRQ3pibjlPd0xJTVNxTUF3U3kvUHdFMHBlWGx3QUJBS2dBQUFVSkJiQUFEd0JNQUxBQVJWaXdDaThic1FvY1BsbXdBRVZZc0FJdkc3RUNFRDVac2dZQ0NoRVNPYkFHTDdJRkFRb3JXQ0hZRy9SWnNBSFFzQW9Rc2drQkNpdFlJZGdiOUZtd0RkQ3dCaEN3RHRBd01RRWpBeU1USXpjekV5RTNJUWNoQXpNRHROK091NDdRRzg4NS9qc2NCRVVjL2pzNTRBTTMvTWtETjVjQlJKNmUvcndBQUFILzlQL3RBcFFGUUFBZUFHb0FzQUJGV0xBWkx4dXhHUmcrV2JBQVJWaXdDeThic1FzUVBsbXdHUkN3SGRDd0hTK3lBQjBCWGJBUzBMSVBBUW9yV0NIWUcvUlpzQUhRc0FzUXNnWUJDaXRZSWRnYjlGbXdHUkN5SEFFS0sxZ2gyQnYwV2JBVDBMQVpFTEFXMExBWkVMQVkwTEFZTHpBeEFTTURCaGNXTXpJM0J3WWpKaVkzRXlNM016Y2pOek1UTXdNekJ5TUhNd0plNERnREFnZE9JVGNPUVVOc2JBdzIxaHZVSDc4WnZ5NjBMc1VaeEIvaEFscitzQm9XVGdxWEVnS2Jnd0ZObDdxUEFRYisrbys2QVAvLy82OEFBQVNMQnpRQ0pnQWxBQUFCQndCRUFXa0JOZ0FUQUxBQVJWaXdCQzhic1FRY1BsbXdETnd3TVFELy8vK3ZBQUFFbUFjMEFpWUFKUUFBQVFjQWRRSHpBVFlBRXdDd0FFVllzQVV2RzdFRkhENVpzQTNjTURFQS8vLy9yd0FBQklzSE5nSW1BQ1VBQUFFSEFKMEErUUUyQUJNQXNBQkZXTEFFTHh1eEJCdytXYkFRM0RBeEFQLy8vNjhBQUFTdkJ5RUNKZ0FsQUFBQkJ3Q2tBUUVCT2dBVEFMQUFSVml3QlM4YnNRVWNQbG13RHR3d01RRC8vLyt2QUFBRWl3YjlBaVlBSlFBQUFRY0FhZ0V6QVRZQUZnQ3dBRVZZc0FRdkc3RUVIRDVac0JUY3NDRFFNREgvLy8rdkFBQUVpd2VTQWlZQUpRQUFBUWNBb2dGK0FVRUFEQUN3QkMrd0ZOeXdGOUF3TWYvLy82OEFBQVNkQjVNQ0pnQWxBQUFBQndIZkFZSUJJdi8vQUhUK1FnVDVCY2tDSmdBbkFBQUFCd0I1QWNMLzkvLy9BRHNBQUFTeEIwQUNKZ0FwQUFBQkJ3QkVBVGNCUWdBVEFMQUFSVml3Qmk4YnNRWWNQbG13RGR3d01RRC8vd0E3QUFBRXNRZEFBaVlBS1FBQUFRY0FkUUhCQVVJQUNRQ3dCaSt3RHR3d01RRC8vd0E3QUFBRXNRZENBaVlBS1FBQUFRY0FuUURIQVVJQUV3Q3dBRVZZc0FZdkc3RUdIRDVac0JIY01ERUEvLzhBT3dBQUJMRUhDUUltQUNrQUFBRUhBR29CQVFGQ0FBd0FzQVl2c0NIY3NBelFNREgvL3dCSkFBQUNHUWRBQWlZQUxRQUFBUWNBUlAvdUFVSUFFd0N3QUVWWXNBSXZHN0VDSEQ1WnNBWGNNREVBLy84QVNRQUFBeHdIUUFJbUFDMEFBQUVIQUhVQWR3RkNBQWtBc0FJdnNBYmNNREVBLy84QVNRQUFBdUlIUWdJbUFDMEFBQUVIQUozL2ZnRkNBQk1Bc0FCRldMQUNMeHV4QWh3K1diQUozREF4QVAvL0FFa0FBQU1LQndrQ0pnQXRBQUFCQndCcS83Z0JRZ0FNQUxBQ0w3QVozTEFFMERBeC8vOEFPd0FBQlhjSElRSW1BRElBQUFFSEFLUUJOUUU2QUJNQXNBQkZXTEFJTHh1eENCdytXYkFOM0RBeEFQLy9BSGYvNXdVTkJ6WUNKZ0F6QUFBQkJ3QkVBWW9CT0FBVEFMQUFSVml3Q2k4YnNRb2NQbG13Sk53d01RRC8vd0IzLytjRkRRYzJBaVlBTXdBQUFRY0FkUUlVQVRnQUNRQ3dDaSt3SmR3d01RRC8vd0IzLytjRkRRYzRBaVlBTXdBQUFRY0FuUUVhQVRnQUV3Q3dBRVZZc0Fvdkc3RUtIRDVac0NqY01ERUEvLzhBZC8vbkJRMEhJd0ltQURNQUFBRUhBS1FCSWdFOEFCTUFzQUJGV0xBS0x4dXhDaHcrV2JBbTNEQXhBUC8vQUhmLzV3VU5CdjhDSmdBekFBQUJCd0JxQVZRQk9BQU1BTEFLTDdBNDNMQWowREF4Ly84QVovL25CU0FITkFJbUFEa0FBQUVIQUVRQlpBRTJBQk1Bc0FCRldMQUtMeHV4Q2h3K1diQVUzREF4QVAvL0FHZi81d1VnQnpRQ0pnQTVBQUFCQndCMUFlNEJOZ0FKQUxBQUw3QVYzREF4QVAvL0FHZi81d1VnQnpZQ0pnQTVBQUFCQndDZEFQUUJOZ0FUQUxBQVJWaXdDaThic1FvY1BsbXdHTnd3TVFELy93Qm4vK2NGSUFiOUFpWUFPUUFBQVFjQWFnRXVBVFlBREFDd0FDK3dLTnl3RTlBd01mLy9BS2dBQUFVeUJ6UUNKZ0E5QUFBQkJ3QjFBYjBCTmdBSkFMQUJMN0FMM0RBeEFQLy9BRFAvNkFQUEJmNENKZ0JGQUFBQkJ3QkVBTnNBQUFBVEFMQUFSVml3R0M4YnNSZ1lQbG13TGR3d01RRC8vd0F6LytnRUNnWCtBaVlBUlFBQUFRY0FkUUZsQUFBQUNRQ3dHQyt3THR3d01RRC8vd0F6LytnRHp3WUFBaVlBUlFBQUFRWUFuV3NBQUJNQXNBQkZXTEFZTHh1eEdCZytXYkF4M0RBeEFQLy9BRFAvNkFRaEJlc0NKZ0JGQUFBQkJnQ2tjd1FBQ1FDd0dDK3dOdHd3TVFELy93QXovK2dEOXdYSEFpWUFSUUFBQVFjQWFnQ2xBQUFBREFDd0dDK3dRZHl3TE5Bd01mLy9BRFAvNkFQUEJsd0NKZ0JGQUFBQkJ3Q2lBUEFBQ3dBTUFMQVlMN0ExM0xBNDBEQXgvLzhBTS8vb0JBOEdYZ0ltQUVVQUFBQUhBZDhBOVAvdC8vOEFSdjVDQStZRVVnSW1BRWNBQUFBSEFIa0JQdi8zLy84QVJmL3FBK0FGL2dJbUFFa0FBQUVIQUVRQXdBQUFBQk1Bc0FCRldMQUlMeHV4Q0JnK1diQWgzREF4QVAvL0FFWC82Z1B2QmY0Q0pnQkpBQUFCQndCMUFVb0FBQUFKQUxBSUw3QWkzREF4QVAvL0FFWC82Z1BnQmdBQ0pnQkpBQUFCQmdDZFVBQUFFd0N3QUVWWXNBZ3ZHN0VJR0Q1WnNDWGNNREVBLy84QVJmL3FBK0FGeHdJbUFFa0FBQUVIQUdvQWlnQUFBQXdBc0FndnNEWGNzQ0RRTURILy93QXVBQUFCeHdYOUFpWUFqQUFBQVFZQVJKei9BQk1Bc0FCRldMQUNMeHV4QWhnK1diQUYzREF4QVAvL0FDNEFBQUxLQmYwQ0pnQ01BQUFCQmdCMUpmOEFDUUN3QWkrd0J0d3dNUUQvL3dBdUFBQUNrQVgvQWlZQWpBQUFBUWNBbmY4cy8vOEFFd0N3QUVWWXNBSXZHN0VDR0Q1WnNBbmNNREVBLy84QUxnQUFBcmdGeGdJbUFJd0FBQUVIQUdyL1p2Ly9BQllBc0FCRldMQUNMeHV4QWhnK1diQU4zTEFaMERBeC8vOEFId0FBQkJnRjZ3SW1BRklBQUFFR0FLUnFCQUFKQUxBREw3QWQzREF4QVAvL0FFWC82QVFmQmY0Q0pnQlRBQUFCQndCRUFNa0FBQUFUQUxBQVJWaXdBQzhic1FBWVBsbXdKTnd3TVFELy93QkYvK2dFSHdYK0FpWUFVd0FBQVFjQWRRRlRBQUFBQ1FDd0FDK3dKZHd3TVFELy93QkYvK2dFSHdZQUFpWUFVd0FBQVFZQW5Wa0FBQk1Bc0FCRldMQUFMeHV4QUJnK1diQW8zREF4QVAvL0FFWC82QVFmQmVzQ0pnQlRBQUFCQmdDa1lRUUFDUUN3QUMrd0xkd3dNUUQvL3dCRi8rZ0VId1hIQWlZQVV3QUFBUWNBYWdDVEFBQUFEQUN3QUMrd09OeXdJOUF3TWYvL0FGdi82QVFlQmY0Q0pnQlpBQUFCQndCRUFNMEFBQUFUQUxBQVJWaXdCeThic1FjWVBsbXdGZHd3TVFELy93QmIvK2dFSGdYK0FpWUFXUUFBQVFjQWRRRlhBQUFBQ1FDd0JpK3dGdHd3TVFELy93QmIvK2dFSGdZQUFpWUFXUUFBQVFZQW5WMEFBQk1Bc0FCRldMQUdMeHV4QmhnK1diQVozREF4QVAvL0FGdi82QVFlQmNjQ0pnQlpBQUFCQndCcUFKY0FBQUFNQUxBR0w3QXAzTEFVMERBeC8vLy9wZjVGQSt3Ri9nSW1BRjBBQUFFSEFIVUJIZ0FBQUFrQXNBRXZzQkxjTURFQS8vLy9wZjVGQSt3Rnh3SW1BRjBBQUFFR0FHcGVBQUFNQUxBQkw3QWwzTEFRMERBeC8vLy9yd0FBQkxRRzdnSW1BQ1VBQUFFSEFIQUJCQUUrQUJNQXNBQkZXTEFFTHh1eEJCdytXYkFNM0RBeEFQLy9BRFAvNkFRbUJiZ0NKZ0JGQUFBQkJnQndkZ2dBRXdDd0FFVllzQmd2RzdFWUdENVpzQzNjTURFQS8vLy9yd0FBQklzSER3SW1BQ1VBQUFFSEFLQUJMZ0UzQUJNQXNBQkZXTEFFTHh1eEJCdytXYkFPM0RBeEFQLy9BRFAvNkFQc0Jka0NKZ0JGQUFBQkJ3Q2dBS0FBQVFBSkFMQVlMN0F2M0RBeEFBQUMvNi8rVHdTTEJiQUFGd0FhQUhTeUZSc2NFUkk1c0JVUXNCclFBTEFBUlZpd0ZTOGJzUlVjUGxtd0FFVllzQk12RzdFVEVENVpzQUJGV0xBWEx4dXhGeEErV2JBQVJWaXdDeThic1FzU1BsbXlCZ01LSzFnaDJCdjBXYkFYRUxBUTBMQVFMN0lZRXhVUkVqbXdHQyt5RWdFS0sxZ2gyQnYwV2JJYUZSTVJFamt3TVNFWEJ3WUhCaGNXTnhjR0l5SW1OelkzQXlFREl3RXpBUUVoQXdSbEJFRjZDUWRCSUVNRVJGTk9Yd0lEeUVMOXNzZkpBeGVsQVNEOUJ3SGZlUU12V2xrL0FnRWFlU3RsVXBweEFXditoQVd3K2xBQ0dnS25BQUlBTS81UEE4OEVVUUF2QURvQW5iSVRPendSRWptd0V4Q3dNZEFBc0FCRldMQW5MeHV4SnhnK1diQUFSVml3Q3k4YnNRc1NQbG13QUVWWXNCUXZHN0VVRUQ1WnNBQkZXTEF2THh1eEx4QStXYkFMRUxJR0F3b3JXQ0hZRy9SWnNDOFFzQkRRc0JBdnNoSW5GQkVTT2JJYUp4UVJFam13R2krd0p4Q3lId0VLSzFnaDJCdjBXYklpR2ljUkVqbXdGQkN5TUFFS0sxZ2gyQnYwV2JBYUVMSTFBUW9yV0NIWUcvUlpNREVoRndjR0J3WVhGamNYQmlNaUpqYzJOeWMzQmljbUpqYzJKRE1YTnpZbUp5WUdCd2MrQWhjV0ZnY0RCd1lYQnlVV05qYzNKeUlHQndZV0EwUUVRWG9KQjBFZ1F3UkVVMDVmQWdQTEF3T1ZwNCt6Q0FvQkdlVzlEQXBmWDEyUEVMWUpnc3h0cWJ3UFdBVUNEZ0wrTEZlYk9DZUpxN1lNQ1ZrREwxcFpQd0lCR25rclpWS2FjakF3aWdRQ3NZV3N3UUZXWVhFQ0FsOU9BVitUVVFJRXhhUDk2RTAzTmhHTUFsZE4zd0ZzWTB4bC8vOEFkUC9tQlBrSFZRSW1BQ2NBQUFFSEFIVUIvd0ZYQUFrQXNBMHZzQ0xjTURFQS8vOEFSdi9wQStZRi9nSW1BRWNBQUFFSEFIVUJLZ0FBQUFrQXNCRXZzQ1BjTURFQS8vOEFkUC9tQlBrSFZ3SW1BQ2NBQUFFSEFKMEJCUUZYQUFrQXNBMHZzQ0hjTURFQS8vOEFSdi9wQStZR0FBSW1BRWNBQUFFR0FKMHdBQUFKQUxBUkw3QWkzREF4QVAvL0FIVC81Z1Q1Qnh3Q0pnQW5BQUFCQndDaEFkd0JWd0FKQUxBTkw3QXAzREF4QVAvL0FFYi82UVBtQmNVQ0pnQkhBQUFCQndDaEFRY0FBQUFKQUxBUkw3QXEzREF4QVAvL0FIVC81Z1Q1QjFrQ0pnQW5BQUFCQndDZUFSb0JXQUFKQUxBTkw3QWszREF4QVAvL0FFYi82UVBtQmdJQ0pnQkhBQUFCQmdDZVJRRUFDUUN3RVMrd0pkd3dNUUQvL3dBN0FBQUUxUWRFQWlZQUtBQUFBUWNBbmdEU0FVTUFDUUN3QVMrd0d0d3dNUUQvL3dCTC8rZ0ZwZ1lDQUNZQVNBQUFBQWNCb2dTWEJSUC8vd0E3QUFBRXNRYjZBaVlBS1FBQUFRY0FjQURTQVVvQUNRQ3dCaSt3RE53d01RRC8vd0JGLytvRUN3VzRBaVlBU1FBQUFRWUFjRnNJQUFrQXNBZ3ZzQ0RjTURFQS8vOEFPd0FBQkxFSEd3SW1BQ2tBQUFFSEFLQUEvQUZEQUFrQXNBWXZzQS9jTURFQS8vOEFSZi9xQStBRjJRSW1BRWtBQUFFSEFLQUFoUUFCQUFrQXNBZ3ZzQ1BjTURFQS8vOEFPd0FBQkxFSEJ3SW1BQ2tBQUFFSEFLRUJuZ0ZDQUFrQXNBWXZzQlhjTURFQS8vOEFSZi9xQStBRnhRSW1BRWtBQUFFSEFLRUJKd0FBQUFrQXNBZ3ZzQ25jTURFQUFBRUFPLzVQQkxFRnNBQWNBSUN5RkIwZUVSSTVBTEFBUlZpd0Z5OGJzUmNjUGxtd0FFVllzQkF2RzdFUUVqNVpzQUJGV0xBRUx4dXhCQkErV2JBQVJWaXdGUzhic1JVUVBsbXlIQmNFRVJJNXNCd3ZzZ0FCQ2l0WUlkZ2I5Rm13RlJDeUFnRUtLMWdoMkJ2MFdiQUQwTEFRRUxJTEF3b3JXQ0hZRy9SWnNCY1FzaGtCQ2l0WUlkZ2I5Rmt3TVFFaEF5RUhJeGNIQmdjR0Z4WTNGd1lqSWlZM05qY2hFeUVISVFNaEE5RDluRm9DeUJ4TEJFRjZDUWRCSUVNRVJGTk9Yd0lEcS8xNy9RTjVIUDFEVVFKa0FxSDkvSjBETDFwWlB3SUJHbmtyWlZLUmFRV3dudjRzQUFBQ0FFWCthQVBaQkZFQUpnQXVBSDZ5QkM4d0VSSTVzQVFRc0NqUUFMQU1MN0FBUlZpd0dpOGJzUm9ZUGxtd0FFVllzQkV2RzdFUkVENVpzaVFCQ2l0WUlkZ2I5Rm15QWhFa0VSSTVzQXdRc2djRENpdFlJZGdiOUZteUt4b1JFUkk1c0NzdnRMOHJ6eXNDWGJJZ0FRb3JXQ0hZRy9SWnNpWWFFUkVTT2JBYUVMSW5BUW9yV0NIWUcvUlpNREVsQmdjSEJnY0dGeFkzRndZaklpWTNOamN1QWpjM05oSTJGeFlXRnhZSEJ5RUdGaGNXTndNbUJnY0ZOelltQTR0VGhUdDFDZ2RCSUVNRVJGTk9Yd0lEY0h5MFZnc0ZFWjNpZzZlK0NRTUhDLzA5RW9XRW9JakVjS2N4QWc0RUVIRzdkelVyVjFrL0FnRWFlU3RsVW5KZENvbm9peXVoQVFxSEF3VFd0MEZCVTVQT0JBU1VBcVFEbnB3QkVINm4vLzhBT3dBQUJMRUhSQUltQUNrQUFBRUhBSjRBM0FGREFBa0FzQVl2c0JEY01ERUEvLzhBUmYvcUErVUdBZ0ltQUVrQUFBRUdBSjVsQVFBSkFMQUlMN0FrM0RBeEFQLy9BSG4vNmdVR0IxY0NKZ0FyQUFBQkJ3Q2RBUDBCVndBSkFMQU1MN0FqM0RBeEFQLy9BQVQrVHdRb0JnQUNKZ0JMQUFBQkJnQ2RVd0FBQ1FDd0JDK3dLOXd3TVFELy93QjUvK29GQmdjd0FpWUFLd0FBQVFjQW9BRXlBVmdBQ1FDd0RDK3dKZHd3TVFELy93QUUvazhFS0FYWkFpWUFTd0FBQVFjQW9BQ0lBQUVBQ1FDd0JDK3dMZHd3TVFELy93QjUvK29GQmdjY0FpWUFLd0FBQVFjQW9RSFVBVmNBQ1FDd0RDK3dLOXd3TVFELy93QUUvazhFS0FYRkFpWUFTd0FBQVFjQW9RRXFBQUFBQ1FDd0JDK3dNOXd3TVFELy93QjUvZllGQmdYSEFpWUFLd0FBQUFjQm9nRlkvcGYvL3dBRS9rOEVLQWFWQWlZQVN3QUFBUWNCdVFFeUFGZ0FDUUN3QkMrd0x0d3dNUUQvL3dBN0FBQUZkd2RDQWlZQUxBQUFBUWNBblFFaEFVSUFDUUN3Qmkrd0Rkd3dNUUQvL3dBZkFBQUQ0d2RCQWlZQVRBQUFBUWNBblFCVUFVRUFEZ0N3RVMrd0ZOeXkzeFFCWFRBeC8vOEFTUUFBQXpRSExRSW1BQzBBQUFFSEFLVC9oZ0ZHQUFrQXNBSXZzQTdjTURFQS8vOEFFUUFBQXVJRjZRSW1BSXdBQUFFSEFLVC9OQUFDQUFrQXNBSXZzQTdjTURFQS8vOEFTUUFBQXprRytnSW1BQzBBQUFFSEFIRC9pUUZLQUFrQXNBSXZzQVRjTURFQS8vOEFHZ0FBQXVjRnRnSW1BSXdBQUFFSEFIRC9Od0FHQUFrQXNBSXZzQVRjTURFQS8vOEFTUUFBQXY4SEd3SW1BQzBBQUFFSEFLRC9zd0ZEQUFrQXNBSXZzQWZjTURFQS8vOEFMZ0FBQXEwRjJBSW1BSXdBQUFFSEFLRC9ZUUFBQUFrQXNBSXZzQWZjTURFQS8vLy9qdjVZQWdFRnNBSW1BQzBBQUFBR0FLUGZDZi8vLzNEK1R3SGpCY2NDSmdCTkFBQUFCZ0Nqd1FELy93QkpBQUFDTndjSEFpWUFMUUFBQVFjQW9RQlVBVUlBQ1FDd0FpK3dEZHd3TVFELy93QkovK1lHY0FXd0FDWUFMUUFBQUFjQUxnSW1BQUQvL3dBdi9rWUR3UVhIQUNZQVRRQUFBQWNBVGdIc0FBRC8vd0FLLytZRkNnYzFBaVlBTGdBQUFRY0FuUUdtQVRVQUNRQ3dBQyt3RWR3d01RRC8vLzhKL2tZQ2xnWFlBaVlBbXdBQUFRY0FuZjh5LzlnQUNRQ3dBQyt3RHR3d01RRC8vd0E3L2xnRlVBV3dBaVlBTHdBQUFBY0JvZ0ZhL3ZuLy93QWcva1VFR2dZQUFpWUFUd0FBQUFjQm9nRFkvdWIvL3dBN0FBQURzUWN2QWlZQU1BQUFBUWNBZFFCbEFURUFDUUN3QkMrd0NOd3dNUUQvL3dBdkFBQUREZ2VVQWlZQVVBQUFBUWNBZFFCcEFaWUFDUUN3QWkrd0J0d3dNUUQvL3dBNy9na0RzUVd3QWlZQU1BQUFBQWNCb2dFbC9xci8vLytqL2drQjdnWUFBaVlBVUFBQUFBY0Jvdi9BL3FyLy93QTdBQUFEc1FXeEFpWUFNQUFBQVFjQm9nS2FCTUlBRUFDd0FFVllzQW92RzdFS0hENVpNREgvL3dBdkFBQURPd1lDQUNZQVVBQUFBQWNCb2dJc0JSUC8vd0E3QUFBRHNRV3dBaVlBTUFBQUFBY0FvUUZNL2NYLy93QXZBQUFDckFZQUFDWUFVQUFBQUFjQW9RREovYmIvL3dBN0FBQUZkd2MwQWlZQU1nQUFBUWNBZFFJbkFUWUFDUUN3QlMrd0ROd3dNUUQvL3dBZkFBQUVBUVgrQWlZQVVnQUFBUWNBZFFGY0FBQUFDUUN3QXkrd0Zkd3dNUUQvL3dBNy9na0Zkd1d3QWlZQU1nQUFBQWNCb2dHRy9xci8vd0FmL2drRDR3UlNBaVlBVWdBQUFBY0JvZ0R1L3FyLy93QTdBQUFGZHdjNEFpWUFNZ0FBQVFjQW5nRkNBVGNBQ1FDd0JTK3dEdHd3TVFELy93QWZBQUFEOXdZQ0FpWUFVZ0FBQVFZQW5uY0JBQWtBc0FNdnNCZmNNREVBLy84QUh3QUFBK01HQkFJbUFGSUFBQUFIQWFJQVJRVVYvLzhBZC8vbkJRMEc4QUltQURNQUFBRUhBSEFCSlFGQUFBa0FzQW92c0NQY01ERUEvLzhBUmYvb0JCOEZ1QUltQUZNQUFBRUdBSEJrQ0FBSkFMQUFMN0FqM0RBeEFQLy9BSGYvNXdVTkJ4RUNKZ0F6QUFBQkJ3Q2dBVThCT1FBSkFMQUtMN0FtM0RBeEFQLy9BRVgvNkFRZkJka0NKZ0JUQUFBQkJ3Q2dBSTRBQVFBSkFMQUFMN0FtM0RBeEFQLy9BSGYvNXdWVUJ6Y0NKZ0F6QUFBQkJ3Q2xBWllCT0FBTUFMQUtMN0FsM0xBbjBEQXgvLzhBUmYvb0JKTUYvd0ltQUZNQUFBRUhBS1VBMVFBQUFBd0FzQUF2c0NYY3NDZlFNREgvL3dBNkFBQUV3Z2MwQWlZQU5nQUFBUWNBZFFHMkFUWUFDUUN3QkMrd0d0d3dNUUQvL3dBZkFBQURZUVgrQWlZQVZnQUFBUWNBZFFDOEFBQUFDUUN3Q2krd0Q5d3dNUUQvL3dBNi9na0V3Z1d3QWlZQU5nQUFBQWNCb2dFZC9xci8vLytmL2drQzFBUlVBaVlBVmdBQUFBY0Jvdis4L3FyLy93QTZBQUFFd2djNEFpWUFOZ0FBQVFjQW5nRFJBVGNBQ1FDd0JDK3dITnd3TVFELy93QWZBQUFEV0FZQ0FpWUFWZ0FBQVFZQW50Z0JBQWtBc0FvdnNCSGNNREVBLy84QUovL3BCS01ITmdJbUFEY0FBQUVIQUhVQndnRTRBQWtBc0FvdnNDdmNNREVBLy84QUx2L3BBK3dGL2dJbUFGY0FBQUVIQUhVQlJ3QUFBQWtBc0FndnNDbmNNREVBLy84QUovL3BCS01IT0FJbUFEY0FBQUVIQUowQXlBRTRBQWtBc0FvdnNDcmNNREVBLy84QUx2L3BBN1lHQUFJbUFGY0FBQUVHQUoxTkFBQUpBTEFJTDdBbzNEQXhBUC8vQUNmK1N3U2pCY2NDSmdBM0FBQUFCd0I1QVpJQUFQLy9BQzcrUXdPMkJGQUNKZ0JYQUFBQUJ3QjVBVnYvK1AvL0FDZjkvd1NqQmNjQ0pnQTNBQUFBQndHaUFTeitvUC8vQUM3OTlnTzJCRkFDSmdCWEFBQUFCd0dpQVBYK2wvLy9BQ2YvNlFTakJ6b0NKZ0EzQUFBQkJ3Q2VBTjBCT1FBSkFMQUtMN0F0M0RBeEFQLy9BQzcvNlFQaUJnSUNKZ0JYQUFBQkJnQ2VZZ0VBQ1FDd0NDK3dLOXd3TVFELy93Q28vZjhGQ1FXd0FpWUFPQUFBQUFjQm9nRWUvcUQvL3dCRC9mOENsQVZBQWlZQVdBQUFBQWNCb2dDQy9xRC8vd0NvL2tzRkNRV3dBaVlBT0FBQUFBY0FlUUdFQUFELy93QkQva3NDbEFWQUFpWUFXQUFBQUFjQWVRRG9BQUQvL3dDb0FBQUZDUWM0QWlZQU9BQUFBUWNBbmdEU0FUY0FDUUN3Qmkrd0ROd3dNUUQvL3dCRC8rMERqUVo1QUNZQVdBQUFBQWNCb2dKK0JZci8vd0JuLytjRklBY2hBaVlBT1FBQUFRY0FwQUQ4QVRvQUNRQ3dBQyt3SGR3d01RRC8vd0JiLytnRUhnWHJBaVlBV1FBQUFRWUFwR1VFQUFrQXNBWXZzQjdjTURFQS8vOEFaLy9uQlNBRzdnSW1BRGtBQUFFSEFIQUEvd0UrQUFrQXNBQXZzQlBjTURFQS8vOEFXLy9vQkI0RnVBSW1BRmtBQUFFR0FIQm9DQUFKQUxBR0w3QVUzREF4QVAvL0FHZi81d1VnQnc4Q0pnQTVBQUFCQndDZ0FTa0JOd0FKQUxBQUw3QVczREF4QVAvL0FGdi82QVFlQmRrQ0pnQlpBQUFCQndDZ0FKSUFBUUFKQUxBR0w3QVgzREF4QVAvL0FHZi81d1VnQjVJQ0pnQTVBQUFCQndDaUFYa0JRUUFNQUxBQUw3QWMzTEFmMERBeC8vOEFXLy9vQkI0R1hBSW1BRmtBQUFFSEFLSUE0Z0FMQUF3QXNBWXZzQjNjc0NEUU1ESC8vd0JuLytjRkxnYzFBaVlBT1FBQUFRY0FwUUZ3QVRZQURBQ3dBQyt3RmR5d0Y5QXdNZi8vQUZ2LzZBU1hCZjhDSmdCWkFBQUJCd0NsQU5rQUFBQU1BTEFHTDdBVzNMQVkwREF4QUFFQVovNTdCU2dGc0FBZkFGQUFzQUJGV0xBWEx4dXhGeHcrV2JBQVJWaXdEUzhic1EwU1BsbXdBRVZZc0JJdkc3RVNFRDVac2hzQkNpdFlJZGdiOUZteUJCSWJFUkk1c0EwUXNnZ0RDaXRZSWRnYjlGbXdGeEN3SDlBd01RRURCZ1lIQmdjR0Z4WTNGd1lqSWlZM05qY21BamNUTXdNR0ZoY1dOamNUQlNpb0Y3MldsUWtIUVNCREJFUlRUbDhDQkZiWjhSbW91YWNSaW95WTBSdW9CYkQ4SjUvME5tZGdQd0lCR25rclpWSm5VZ1lCRDlZRDJ2d2xtYThFQnJHZ0E5d0FBUUJiL2s4RUhnUTZBQ01BWXdDd0FFVllzQmd2RzdFWUdENVpzQUJGV0xBVEx4dXhFeEErV2JBQVJWaXdJeThic1NNUVBsbXdBRVZZc0Fzdkc3RUxFajVac2dZRENpdFlJZGdiOUZtd0l4Q3dFTkN5RVJNWUVSSTVzQk1Rc2g0QkNpdFlJZGdiOUZtd0dCQ3dJZEF3TVNFWEJ3WUhCaGNXTnhjR0l5SW1OelkzTndZbkppWTNFek1EQmhjV0ZoY1dOeE16QXdOVUJFRjZDUWRCSUVNRVJGTk9Yd0lEeEJSL3hKdVZFM1MxZFFVREJVeEV3bXFJdGJ3REwxcFpQd0lCR25rclpWS1hjVjJEQkFUV3VRSzcvVUlzS2toU0F3YWpBeFQ3eGdELy93RERBQUFIUVFjMkFpWUFPd0FBQVFjQW5RSGNBVFlBQ1FDd0F5K3dGTnd3TVFELy93Q0FBQUFGL2dZQUFpWUFXd0FBQVFjQW5RRWJBQUFBQ1FDd0FTK3dEdHd3TVFELy93Q29BQUFGTWdjMkFpWUFQUUFBQVFjQW5RRERBVFlBQ1FDd0FTK3dDdHd3TVFELy8vK2wva1VEN0FZQUFpWUFYUUFBQVFZQW5TUUFBQWtBc0FFdnNCSGNNREVBLy84QXFBQUFCVElHL1FJbUFEMEFBQUVIQUdvQS9RRTJBQXdBc0FFdnNCN2NzQW5RTURILy8vL3JBQUFFemdjMEFpWUFQZ0FBQVFjQWRRRzhBVFlBQ1FDd0J5K3dETnd3TVFELy8vL3RBQUFEemdYK0FpWUFYZ0FBQVFjQWRRRWtBQUFBQ1FDd0J5K3dETnd3TVFELy8vL3JBQUFFemdiN0FpWUFQZ0FBQVFjQW9RR1pBVFlBQ1FDd0J5K3dFOXd3TVFELy8vL3RBQUFEemdYRkFpWUFYZ0FBQVFjQW9RRUJBQUFBQ1FDd0J5K3dFOXd3TVFELy8vL3JBQUFFemdjNEFpWUFQZ0FBQVFjQW5nRFhBVGNBQ1FDd0J5K3dEdHd3TVFELy8vL3RBQUFEemdZQ0FpWUFYZ0FBQVFZQW5qOEJBQWtBc0FjdnNBN2NNREVBLy8vL2hBQUFCM2dIUUFJbUFJRUFBQUVIQUhVQzl3RkNBQk1Bc0FCRldMQUdMeHV4Qmh3K1diQVYzREF4QVAvL0FCUC82QVpoQmY4Q0pnQ0dBQUFCQndCMUFuTUFBUUFUQUxBQVJWaXdGeThic1JjWVBsbXdSTnd3TVFELy93QWcvNlFGbkFkK0FpWUFnd0FBQVFjQWRRSW9BWUFBRXdDd0FFVllzQTB2RzdFTkhENVpzRERjTURFQS8vOEFPZjk2QkNvRi9nSW1BSWtBQUFFSEFIVUJPUUFBQUJNQXNBQkZXTEFBTHh1eEFCZytXYkF1M0RBeEFQLy8vN0FBQUFRUEJJMENKZ0c5QUFBQkJ3SGUveDMvZUFBc0FMSWZHUUZ4dE44Wjd4a0NjYlFmR1M4WkFsMnlieGtCY3JKUEdRRnh0TzhaL3hrQ1hiSmZHUUZkTURILy8vK3dBQUFFRHdTTkFpWUJ2UUFBQVFjQjN2OGQvM2dBTEFDeUh4a0JjYlRmR2U4WkFuRzBIeGt2R1FKZHNtOFpBWEt5VHhrQmNiVHZHZjhaQWwyeVh4a0JYVEF4Ly84QWJRQUFCRUlFalFJbUFjMEFBQUVHQWQ0OTRBQUlBTElBQ3dGZE1ESC8vLytsQUFBRDR3WWNBaVlCdWdBQUFRY0FSQURnQUI0QUV3Q3dBRVZZc0FRdkc3RUVHajVac0F6Y01ERUEvLy8vcFFBQUJBOEdIQUltQWJvQUFBRUhBSFVCYWdBZUFBa0FzQVF2c0EzY01ERUEvLy8vcFFBQUErTUdIZ0ltQWJvQUFBRUdBSjF3SGdBVEFMQUFSVml3QkM4YnNRUWFQbG13RU53d01RRC8vLytsQUFBRUpnWUpBaVlCdWdBQUFRWUFwSGdpQUFrQXNBUXZzQlhjTURFQS8vLy9wUUFBQS93RjVRSW1BYm9BQUFFSEFHb0FxZ0FlQUF3QXNBUXZzQ0Rjc0F2UU1ESC8vLytsQUFBRDR3WjZBaVlCdWdBQUFRY0FvZ0QxQUNrQURBQ3dCQyt3Rk55d0Y5QXdNZi8vLzZVQUFBUVVCbnNDSmdHNkFBQUFCd0hmQVBrQUN2Ly9BRWYrU0FRM0JLTUNKZ0c4QUFBQUJ3QjVBV2ovL2YvL0FCMEFBQVB2Qmh3Q0pnRytBQUFCQndCRUFMUUFIZ0FUQUxBQVJWaXdCaThic1FZYVBsbXdEZHd3TVFELy93QWRBQUFEN3dZY0FpWUJ2Z0FBQVFjQWRRRStBQjRBQ1FDd0JpK3dEdHd3TVFELy93QWRBQUFEN3dZZUFpWUJ2Z0FBQVFZQW5VUWVBQWtBc0FZdnNBM2NNREVBLy84QUhRQUFBKzhGNVFJbUFiNEFBQUVHQUdwK0hnQU1BTEFHTDdBaDNMQU0wREF4Ly84QUtnQUFBY1VHSEFJbUFjSUFBQUVHQUVTYUhnQVRBTEFBUlZpd0FpOGJzUUlhUGxtd0Jkd3dNUUQvL3dBcUFBQUN5QVljQWlZQndnQUFBUVlBZFNNZUFBa0FzQUl2c0FiY01ERUEvLzhBS2dBQUFvNEdIZ0ltQWNJQUFBRUhBSjMvS2dBZUFBa0FzQUl2c0FYY01ERUEvLzhBS2dBQUFyWUY1UUltQWNJQUFBRUhBR3IvWkFBZUFBd0FzQUl2c0JuY3NBVFFNREgvL3dBZEFBQUVtZ1lKQWlZQnh3QUFBUWNBcEFDaUFDSUFDUUN3QlMrd0ZOd3dNUUQvL3dCSy8rb0VUZ1ljQWlZQnlBQUFBUWNBUkFENEFCNEFFd0N3QUVWWXNBZ3ZHN0VJR2o1WnNDSGNNREVBLy84QVN2L3FCRTRHSEFJbUFjZ0FBQUVIQUhVQmdnQWVBQWtBc0FndnNDTGNNREVBLy84QVN2L3FCRTRHSGdJbUFjZ0FBQUVIQUowQWlBQWVBQWtBc0FndnNDSGNNREVBLy84QVN2L3FCRTRHQ1FJbUFjZ0FBQUVIQUtRQWtBQWlBQWtBc0FndnNDcmNNREVBLy84QVN2L3FCRTRGNVFJbUFjZ0FBQUVIQUdvQXdnQWVBQXdBc0FndnNEWGNzQ0RRTURILy93QkYvK29FVndZY0FpWUJ6Z0FBQVFjQVJBRGFBQjRBRXdDd0FFVllzQWt2RzdFSkdqNVpzQlBjTURFQS8vOEFSZi9xQkZjR0hBSW1BYzRBQUFFSEFIVUJaQUFlQUFrQXNBQXZzQlRjTURFQS8vOEFSZi9xQkZjR0hnSW1BYzRBQUFFR0FKMXFIZ0FKQUxBQUw3QVQzREF4QVAvL0FFWC82Z1JYQmVVQ0pnSE9BQUFCQndCcUFLUUFIZ0FNQUxBQUw3QW4zTEFTMERBeC8vOEFkQUFBQkdVR0hBSW1BZElBQUFFSEFIVUJPZ0FlQUFrQXNBRXZzQXZjTURFQS8vLy9wUUFBQkNzRjFnSW1BYm9BQUFFR0FIQjdKZ0FKQUxBRUw3QUwzREF4QVAvLy82VUFBQVB4QmZjQ0pnRzZBQUFCQndDZ0FLVUFId0FKQUxBRUw3QU8zREF4QUFBQy82WCtUd1BqQkkwQUZnQVpBR3V5RkJvYkVSSTVzQlFRc0JuUUFMQUFSVml3RkM4YnNSUWFQbG13QUVWWXNCSXZHN0VTRUQ1WnNBQkZXTEFXTHh1eEZoQStXYkFBUlZpd0NpOGJzUW9TUGxteUJRTUtLMWdoMkJ2MFdiSVhFaFFSRWptd0Z5K3lFUUVLSzFnaDJCdjBXYklaRkJJUkVqa3dNU0VIQmdjR0Z4WTNGd1lqSWlZM05qY0RJUU1qQVRNQkFTRURBOEZCZWdrSFFTQkRCRVJUVGw4Q0E4ODEvZ21jd1FLYm9nRUIvWE1CaEdneVdsay9BZ0VhZVN0bFVwcDFBUUwrNlFTTiszTUJyZ0g3Ly84QVIvL3NCRGNHSEFJbUFid0FBQUVIQUhVQmJ3QWVBQWtBc0FzdnNCL2NNREVBLy84QVIvL3NCRGNHSGdJbUFid0FBQUVHQUoxMUhnQUpBTEFMTDdBZTNEQXhBUC8vQUVmLzdBUTNCZU1DSmdHOEFBQUJCd0NoQVV3QUhnQUpBTEFMTDdBbTNEQXhBUC8vQUVmLzdBUTNCaUFDSmdHOEFBQUJCd0NlQUlvQUh3QUpBTEFMTDdBaDNEQXhBUC8vQUIwQUFBUVBCaUFDSmdHOUFBQUJCZ0NlTlI4QUNRQ3dBUyt3R3R3d01RRC8vd0FkQUFBRC93WFdBaVlCdmdBQUFRWUFjRThtQUFrQXNBWXZzQXpjTURFQS8vOEFIUUFBQSs4Rjl3SW1BYjRBQUFFR0FLQjVId0FKQUxBR0w3QVAzREF4QVAvL0FCMEFBQVB2QmVNQ0pnRytBQUFCQndDaEFSc0FIZ0FKQUxBR0w3QVYzREF4QUFBQkFCMytUd1B2QkkwQUhBQ01zaEVkSGhFU09RQ3dBRVZZc0Jjdkc3RVhHajVac0FCRldMQVFMeHV4RUJJK1diQUFSVml3QkM4YnNRUVFQbG13QUVWWXNCVXZHN0VWRUQ1WnNod1hCQkVTT2JBY0w3UWZIQzhjQWwyeXZ4d0JYYklBQVFvcldDSFlHL1Jac0JVUXNnSUJDaXRZSWRnYjlGbXdBOUN3RUJDeUN3TUtLMWdoMkJ2MFdiQVhFTElaQVFvcldDSFlHL1JaTURFQklRTWhCeU1YQndZSEJoY1dOeGNHSXlJbU56WTNJUk1oQnlFRElRTXgvZjFDQWxrYlB3UkJlZ2tIUVNCREJFUlRUbDhDQTZ2OTVjc0RCeHY5cmpvQ0JBSU8vb21YQXk5YVdUOENBUnA1SzJWU2tXa0VqWm4rc2dELy93QWRBQUFEN3dZZ0FpWUJ2Z0FBQVFZQW5sa2ZBQWtBc0FZdnNCRGNNREVBLy84QVRQL3VCRUVHSGdJbUFjQUFBQUVHQUoxekhnQUpBTEFMTDdBaDNEQXhBUC8vQUV6LzdnUkJCZmNDSmdIQUFBQUJCd0NnQUtnQUh3QUpBTEFMTDdBajNEQXhBUC8vQUV6LzdnUkJCZU1DSmdIQUFBQUJCd0NoQVVvQUhnQUpBTEFMTDdBcDNEQXhBUC8vQUV6OS9BUkJCS01DSmdIQUFBQUFCd0dpQVFmK25mLy9BQjBBQUFTYUJoNENKZ0hCQUFBQkJ3Q2RBSkVBSGdBSkFMQUdMN0FOM0RBeEFQLy9BQThBQUFMZ0Jna0NKZ0hDQUFBQkJ3Q2sveklBSWdBSkFMQUNMN0FPM0RBeEFQLy9BQmdBQUFMbEJkWUNKZ0hDQUFBQkJ3QncvelVBSmdBSkFMQUNMN0FFM0RBeEFQLy9BQ29BQUFLckJmY0NKZ0hDQUFBQkJ3Q2cvMThBSHdBSkFMQUNMN0FIM0RBeEFQLy8vM3IrVHdHcUJJMENKZ0hDQUFBQUJnQ2p5d0QvL3dBcUFBQUI0d1hqQWlZQndnQUFBUVlBb1FBZUFBa0FzQUl2c0EzY01ERUEvLy8vOXYvckJHZ0dIZ0ltQWNNQUFBRUhBSjBCQkFBZUFBa0FzQUF2c0JEY01ERUEvLzhBSGY0RkJIOEVqUUltQWNRQUFBQUhBYUlBei82bS8vOEFIUUFBQXlNR0hBSW1BY1VBQUFFR0FIVVhIZ0FKQUxBRUw3QUkzREF4QVAvL0FCMytCd01qQkkwQ0pnSEZBQUFBQndHaUFNeitxUC8vQUIwQUFBTWpCSTRDSmdIRkFBQUJCd0dpQWhNRG53QVFBTEFBUlZpd0NpOGJzUW9hUGxrd01mLy9BQjBBQUFNakJJMENKZ0hGQUFBQUJ3Q2hBT0Q5Ti8vL0FCMEFBQVNhQmh3Q0pnSEhBQUFCQndCMUFaUUFIZ0FKQUxBRkw3QU0zREF4QVAvL0FCMytBd1NhQkkwQ0pnSEhBQUFBQndHaUFTVCtwUC8vQUIwQUFBU2FCaUFDSmdISEFBQUJCd0NlQUs4QUh3QUpBTEFGTDdBTzNEQXhBUC8vQUVyLzZnUk9CZFlDSmdISUFBQUJCd0J3QUpNQUpnQUpBTEFJTDdBZzNEQXhBUC8vQUVyLzZnUk9CZmNDSmdISUFBQUJCd0NnQUwwQUh3QUpBTEFJTDdBajNEQXhBUC8vQUVyLzZnVENCaDBDSmdISUFBQUJCd0NsQVFRQUhnQU1BTEFJTDdBaTNMQWswREF4Ly84QUhRQUFCQUVHSEFJbUFjc0FBQUVIQUhVQkx3QWVBQWtBc0FRdnNCbmNNREVBLy84QUhmNEhCQUVFalFJbUFjc0FBQUFIQWFJQXlmNm8vLzhBSFFBQUJBRUdJQUltQWNzQUFBRUdBSjVLSHdBSkFMQUVMN0FiM0RBeEFQLy9BQkgvNndQdEJod0NKZ0hNQUFBQkJ3QjFBVVVBSGdBSkFMQUtMN0FxM0RBeEFQLy9BQkgvNndQdEJoNENKZ0hNQUFBQkJnQ2RTeDRBQ1FDd0NpK3dLZHd3TVFELy93QVIva3NEN1FTZEFpWUJ6QUFBQUFjQWVRRkpBQUQvL3dBUi8rc0Q3UVlnQWlZQnpBQUFBUVlBbm1BZkFBa0FzQW92c0N6Y01ERUEvLzhBYmY0QkJFSUVqUUltQWMwQUFBQUhBYUlBei82aS8vOEFiUUFBQkVJR0lBSW1BYzBBQUFFR0FKNVVId0FKQUxBR0w3QU0zREF4QVAvL0FHMytUUVJDQkkwQ0pnSE5BQUFBQndCNUFUVUFBdi8vQUVYLzZnUlhCZ2tDSmdIT0FBQUJCZ0NrY2lJQUNRQ3dBQyt3SE53d01RRC8vd0JGLytvRVZ3WFdBaVlCemdBQUFRWUFjSFVtQUFrQXNBQXZzQkxjTURFQS8vOEFSZi9xQkZjRjl3SW1BYzRBQUFFSEFLQUFud0FmQUFrQXNBQXZzQlhjTURFQS8vOEFSZi9xQkZjR2VnSW1BYzRBQUFFSEFLSUE3d0FwQUF3QXNBQXZzQnZjc0I3UU1ESC8vd0JGLytvRXBBWWRBaVlCemdBQUFRY0FwUURtQUI0QURBQ3dBQyt3Rk55d0Z0QXdNUUFCQUVYK2RBUlhCSTBBSUFCaHNna2hJaEVTT1FDd0FFVllzQ0F2RzdFZ0dqNVpzQUJGV0xBWUx4dXhHQm8rV2JBQVJWaXdEaThic1E0U1BsbXdBRVZZc0JNdkc3RVRFRDVac2dRVElCRVNPYkFPRUxJSkF3b3JXQ0hZRy9SWnNCTVFzaHdCQ2l0WUlkZ2I5Rmt3TVFFREJnWUhCZ1lIQmhjV054Y0dJeUltTnpZM0ppWTNFek1EQmhZWEZqWTNFd1JYZ3hPa2dGUktCQWRCSUVNRVJGTk9Yd0lFWXJUSEU0T3poQTExZEhxcEZZUUVqZnoxaDhjcU8yQXZQd0lCR25rclpWSndWUTNhcWdNTS9QTjFnUU1FZ25zRERRRC8vd0NWQUFBR0tRWWVBaVlCMEFBQUFRY0FuUUUzQUI0QUNRQ3dFaSt3Rk53d01RRC8vd0IwQUFBRVpRWWVBaVlCMGdBQUFRWUFuVUFlQUFrQXNBRXZzQXJjTURFQS8vOEFkQUFBQkdVRjVRSW1BZElBQUFFR0FHcDZIZ0FNQUxBQkw3QWUzTEFKMERBeC8vLy8zQUFBQkE0R0hBSW1BZE1BQUFFSEFIVUJPZ0FlQUFrQXNBY3ZzQXpjTURFQS8vLy8zQUFBQkE0RjR3SW1BZE1BQUFFSEFLRUJGd0FlQUFrQXNBY3ZzQlBjTURFQS8vLy8zQUFBQkE0R0lBSW1BZE1BQUFFR0FKNVZId0FKQUxBSEw3QU8zREF4QVAvLy82OEFBQVNMQmo4Q0pnQWxBQUFBQmdDdEJBRC8vd0JqQUFBRkZRWS9BQ1lBS1dRQUFBY0FyZjlDQUFELy93QnhBQUFGMndaQkFDWUFMR1FBQUFjQXJmOVFBQUwvL3dCM0FBQUNaUVpBQUNZQUxXUUFBQWNBcmY5V0FBSC8vd0JxLytjRklRWS9BQ1lBTXhRQUFBY0FyZjlKQUFELy8vL3VBQUFGbGdZL0FDWUFQV1FBQUFjQXJmN05BQUQvL3dBZUFBQUU3Z1kvQUNZQXVSUUFBQWNBcmY5TUFBRC8vd0FnLy9RREd3WjBBaVlBd2dBQUFRY0Fydjh0Lyt3QUhBQ3dBRVZZc0E0dkc3RU9HRDVac0J2Y3NCSFFzQnNRc0NUUU1ESC8vLyt2QUFBRWl3V3dBZ1lBSlFBQS8vOEFPd0FBQktBRnNBSUdBQ1lBQVAvL0FEc0FBQVN4QmJBQ0JnQXBBQUQvLy8vckFBQUV6Z1d3QWdZQVBnQUEvLzhBT3dBQUJYY0ZzQUlHQUN3QUFQLy9BRWtBQUFJQkJiQUNCZ0F0QUFELy93QTdBQUFGVUFXd0FnWUFMd0FBLy84QU93QUFCcmNGc0FJR0FERUFBUC8vQURzQUFBVjNCYkFDQmdBeUFBRC8vd0IzLytjRkRRWElBZ1lBTXdBQS8vOEFPd0FBQlBNRnNBSUdBRFFBQVAvL0FLZ0FBQVVKQmJBQ0JnQTRBQUQvL3dDb0FBQUZNZ1d3QWdZQVBRQUEvLy8vMUFBQUJTc0ZzQUlHQUR3QUFQLy9BRWtBQUFNS0J3a0NKZ0F0QUFBQkJ3QnEvN2dCUWdBTUFMQUNMN0FaM0xBRTBEQXgvLzhBcUFBQUJUSUcvUUltQUQwQUFBRUhBR29BL1FFMkFBd0FzQUV2c0I3Y3NBblFNREgvL3dCSS8rY0VNZ1k2QWlZQXVnQUFBUWNBclFGby8vc0FDUUN3RlMrd0tOd3dNUUQvL3dBcC8rY0Q1UVk1QWlZQXZnQUFBUWNBclFFaC8vb0FDUUN3R2krd0s5d3dNUUQvL3dBay9tRUQ4d1k2QWlZQXdBQUFBUWNBclFFNy8vc0FDUUN3QXkrd0Zkd3dNUUQvL3dDRi8vUUNaUVlsQWlZQXdnQUFBUVlBclNUbUFBa0FzQUF2c0JIY01ERUEvLzhBWi8vbEJBb0dkQUltQU1vQUFBRUdBSzRjN0FBU0FMQUxMN0FyM0xBVzBMQXJFTEFhMERBeC8vOEFMUUFBQkZjRU9nSUdBSTBBQVAvL0FFWC82QVFmQkZJQ0JnQlRBQUQvLy8vbC9tQUVKUVE2QWdZQWRnQUEvLzhBYmdBQUErMEVPZ0lHQUZvQUFQLy8vOFFBQUFQMEJEb0NCZ0JjQUFELy93Qm4vL1FDM2dXekFpWUF3Z0FBQVFZQWFvenNBQXdBc0FBdnNDVGNzQS9RTURILy93Qm4vK1VEK2dXekFpWUF5Z0FBQVFZQWFudnNBQXdBc0FzdnNDdmNzQmJRTURILy93QkYvK2dFSHdZNkFpWUFVd0FBQVFjQXJRRXMvL3NBQ1FDd0FDK3dKZHd3TVFELy93Qm4vK1VEK2dZbEFpWUF5Z0FBQVFjQXJRRVUvK1lBQ1FDd0N5K3dHTnd3TVFELy93Qm0vK1FGL0FZaUFpWUF6UUFBQVFjQXJRSTgvK01BQ1FDd0dDK3dMZHd3TVFELy93QTdBQUFFc1FjSkFpWUFLUUFBQVFjQWFnRUJBVUlBRmdDd0FFVllzQVl2RzdFR0hENVpzQlhjc0NIUU1ESC8vd0JEQUFBRXBRZEFBaVlBc0FBQUFRY0FkUUhIQVVJQUV3Q3dBRVZZc0FRdkc3RUVIRDVac0FqY01ERUFBQUVBSi8vcEJLTUZ4d0FvQUdHeUV5a3FFUkk1QUxBQVJWaXdDaThic1FvY1BsbXdBRVZZc0I4dkc3RWZFRDVac2dJZkNoRVNPYkFLRUxBUDBMQUtFTElTQVFvcldDSFlHL1Jac0FJUXNoZ0JDaXRZSWRnYjlGbXdIeEN3Sk5Dd0h4Q3lKd0VLSzFnaDJCdjBXVEF4QVRZdkFpUTNQZ0lYSGdJSEp6WW1KeVlHQndZZkFnUUREZ0luTGdJM0Z3WVdCRFlEYlJhOHJUciszQk1La3ZHSWhNOXNCcjBLaklLSnVBNFV5NVZMQVJvVkM1RDNqb25qZGdlOENaOEJJcndCZDZCS1B4bUY4WG02WlFNRGNNbCtBWWFUQWdLRWNwVk5OU0NDL3dCN3MySURBWFBJZndHQ21RU0MvLzhBU1FBQUFnRUZzQUlHQUMwQUFQLy9BRWtBQUFNS0J3a0NKZ0F0QUFBQkJ3QnEvN2dCUWdBTUFMQUNMN0FaM0xBRTBEQXgvLzhBQ3YvbUJFb0ZzQUlHQUM0QUFQLy9BRVFBQUFWcUJiQUNCZ0hqQUFELy93QTdBQUFGVUFjdUFpWUFMd0FBQVFjQWRRR3dBVEFBRXdDd0FFVllzQVV2RzdFRkhENVpzQTdjTURFQS8vOEFrLy9tQlVBSEd3SW1BTjBBQUFFSEFLQUJGZ0ZEQUJNQXNBQkZXTEFRTHh1eEVCdytXYkFVM0RBeEFQLy8vNjhBQUFTTEJiQUNCZ0FsQUFELy93QTdBQUFFb0FXd0FnWUFKZ0FBLy84QVF3QUFCS1VGc0FJR0FMQUFBUC8vQURzQUFBU3hCYkFDQmdBcEFBRC8vd0JEQUFBRmJnY2JBaVlBMndBQUFRY0FvQUZyQVVNQUNRQ3dBQyt3RGR3d01RRC8vd0E3QUFBR3R3V3dBZ1lBTVFBQS8vOEFPd0FBQlhjRnNBSUdBQ3dBQVAvL0FIZi81d1VOQmNnQ0JnQXpBQUQvL3dCRUFBQUZjQVd3QWdZQXRRQUEvLzhBT3dBQUJQTUZzQUlHQURRQUFQLy9BSFQvNWdUNUJja0NCZ0FuQUFELy93Q29BQUFGQ1FXd0FnWUFPQUFBLy8vLzFBQUFCU3NGc0FJR0FEd0FBUC8vQURQLzZBUFBCRkVDQmdCRkFBRC8vd0JGLytvRDRBUlJBZ1lBU1FBQS8vOEFMd0FBQkRjRnhRSW1BTzhBQUFFSEFLQUFwZi90QUFrQXNBQXZzQTNjTURFQS8vOEFSZi9vQkI4RVVnSUdBRk1BQVAvLy85ZitZQVA4QkZJQ0JnQlVBQUFBQVFCRy8ra0Q1Z1JTQUNBQVM3SUFJU0lSRWprQXNBQkZXTEFSTHh1eEVSZytXYkFBUlZpd0NDOGJzUWdRUGxteUFBRUtLMWdoMkJ2MFdiSUVFUWdSRWpteUZCRUlFUkk1c0JFUXNoZ0JDaXRZSWRnYjlGa3dNU1VXTmpjM0RnSW5MZ0kzTno0Q0Z4WVdGU2NtSmljbUJnY0hCaGNXRmdIb1lad1lxdytGeW1xSHUxZ09CUk9RNkl5cXpLa0NjbUdOdXhjREJnUUhkb0lDZFY4QlpxaGVBd0tKOVpreW5QYUpCQVRjcVFGcWd3UUQyTUlhUUVSMWlBRC8vLytsL2tVRDdBUTZBZ1lBWFFBQS8vLy94QUFBQS9RRU9nSUdBRndBQVAvL0FFWC82Z1BnQmNjQ0pnQkpBQUFCQndCcUFJb0FBQUFNQUxBSUw3QTEzTEFnMERBeC8vOEFMUUFBQTRNRjZnSW1BT3NBQUFFSEFIVUF6Ly9zQUJNQXNBQkZXTEFGTHh1eEJSZytXYkFJM0RBeEFQLy9BQzcvNlFPMkJGQUNCZ0JYQUFELy93QXZBQUFCNHdYSEFnWUFUUUFBLy84QUxnQUFBcmdGeGdJbUFJd0FBQUVIQUdyL1p2Ly9BQXdBc0FJdnNCbmNzQVRRTURILy8vOFUva1lCMVFYSEFnWUFUZ0FBLy84QUx3QUFCRmNGNlFJbUFQQUFBQUVIQUhVQk9mL3JBQk1Bc0FCRldMQUlMeHV4Q0JnK1diQVAzREF4QVAvLy82WCtSUVBzQmRrQ0pnQmRBQUFCQmdDZ1dRRUFFd0N3QUVWWXNBOHZHN0VQR0Q1WnNCUGNNREVBLy84QXd3QUFCMEVITkFJbUFEc0FBQUVIQUVRQ1RBRTJBQk1Bc0FCRldMQUVMeHV4QkJ3K1diQVUzREF4QVAvL0FJQUFBQVgrQmY0Q0pnQmJBQUFCQndCRUFZc0FBQUFUQUxBQVJWaXdDeThic1FzWVBsbXdEdHd3TVFELy93RERBQUFIUVFjMEFpWUFPd0FBQVFjQWRRTFdBVFlBRXdDd0FFVllzQVF2RzdFRUhENVpzQlhjTURFQS8vOEFnQUFBQmY0Ri9nSW1BRnNBQUFFSEFIVUNGUUFBQUJNQXNBQkZXTEFNTHh1eERCZytXYkFQM0RBeEFQLy9BTU1BQUFkQkJ2MENKZ0E3QUFBQkJ3QnFBaFlCTmdBV0FMQUFSVml3QXk4YnNRTWNQbG13SE55d0tOQXdNZi8vQUlBQUFBWCtCY2NDSmdCYkFBQUJCd0JxQVZVQUFBQVdBTEFBUlZpd0N5OGJzUXNZUGxtd0Z0eXdJdEF3TWYvL0FLZ0FBQVV5QnpRQ0pnQTlBQUFCQndCRUFUTUJOZ0FUQUxBQVJWaXdDQzhic1FnY1BsbXdDdHd3TVFELy8vK2wva1VEN0FYK0FpWUFYUUFBQVFjQVJBQ1VBQUFBRXdDd0FFVllzQTh2RzdFUEdENVpzQkhjTURFQS8vOEFxZ1FoQVlrR0FBSUdBQXNBQVAvL0FNZ0VFUUttQmdnQ0JnQUdBQUQvL3dCRC8vSUQvUVd3QUNZQUJRQUFBQWNBQlFJSkFBRC8vLzhKL2tZQ3h3WGFBaVlBbXdBQUFRY0FudjlILzlrQUV3Q3dBRVZZc0F3dkc3RU1HRDVac0JMY01ERUEvLzhBaVFRV0FlQUdBQUlHQVcwQUFQLy9BRHNBQUFhM0J6UUNKZ0F4QUFBQkJ3QjFBc1lCTmdBVEFMQUFSVml3QWk4YnNRSWNQbG13RWR3d01RRC8vd0FlQUFBR2FnWCtBaVlBVVFBQUFRY0FkUUtrQUFBQUV3Q3dBRVZZc0FNdkc3RURHRDVac0NQY01ERUEvLy8vci81cUJJc0ZzQUltQUNVQUFBQUhBS1lCZEFBQS8vOEFNLzVxQTg4RVVRSW1BRVVBQUFBSEFLWUF3UUFBLy84QU93QUFCTEVIUUFJbUFDa0FBQUVIQUVRQk53RkNBQk1Bc0FCRldMQUdMeHV4Qmh3K1diQU4zREF4QVAvL0FFTUFBQVZ1QjBBQ0pnRGJBQUFCQndCRUFhWUJRZ0FUQUxBQVJWaXdDQzhic1FnY1BsbXdDOXd3TVFELy93QkYvK29ENEFYK0FpWUFTUUFBQVFjQVJBREFBQUFBRXdDd0FFVllzQWd2RzdFSUdENVpzQ0hjTURFQS8vOEFMd0FBQkRjRjZnSW1BTzhBQUFFSEFFUUE0UC9zQUJNQXNBQkZXTEFJTHh1eENCZytXYkFMM0RBeEFQLy9BSVlBQUFXZEJiQUNCZ0M0QUFELy93QlAvaWdGVHdROEFnWUF6QUFBLy84QXJRQUFCVXNHNkFJbUFSZ0FBQUVIQUtzRVJBRDZBQllBc0FCRldMQVBMeHV4RHh3K1diQVIzTEFWMERBeC8vOEFoQUFBQkR3RndRSW1BUmtBQUFFSEFLc0Rydi9UQUJZQXNBQkZXTEFRTHh1eEVCZytXYkFTM0xBVzBEQXgvLzhBUmY1RkNHTUVVZ0FtQUZNQUFBQUhBRjBFZHdBQS8vOEFkLzVGQ1V3RnlBQW1BRE1BQUFBSEFGMEZZQUFBLy84QUpmNVJCSmdGeHdJbUFOb0FBQUFIQWJBQmcvKzQvLzhBSWY1U0E2b0VVQUltQU80QUFBQUhBYkFCTGYrNS8vOEFkUDVSQlBrRnlRSW1BQ2NBQUFBSEFiQUJ5dis0Ly84QVJ2NVJBK1lFVWdJbUFFY0FBQUFIQWJBQlJ2KzQvLzhBcUFBQUJUSUZzQUlHQUQwQUFQLy9BSVQrWUFRYUJEb0NCZ0M4QUFELy93QkpBQUFDQVFXd0FnWUFMUUFBLy8vL3JBQUFCM1VIR3dJbUFOa0FBQUVIQUtBQ0xBRkRBQk1Bc0FCRldMQU5MeHV4RFJ3K1diQVozREF4QVAvLy82VUFBQVlPQmNVQ0pnRHRBQUFCQndDZ0FWei83UUFUQUxBQVJWaXdEUzhic1EwWVBsbXdHZHd3TVFELy93QkpBQUFDQVFXd0FnWUFMUUFBLy8vL3J3QUFCSXNIRHdJbUFDVUFBQUVIQUtBQkxnRTNBQk1Bc0FCRldMQUVMeHV4QkJ3K1diQU8zREF4QVAvL0FEUC82QVBzQmRrQ0pnQkZBQUFCQndDZ0FLQUFBUUFUQUxBQVJWaXdHQzhic1JnWVBsbXdMOXd3TVFELy8vK3ZBQUFFaXdiOUFpWUFKUUFBQVFjQWFnRXpBVFlBRmdDd0FFVllzQVF2RzdFRUhENVpzQlRjc0NEUU1ESC8vd0F6LytnRDl3WEhBaVlBUlFBQUFRY0FhZ0NsQUFBQURBQ3dHQyt3UWR5d0xOQXdNZi8vLzRRQUFBZDRCYkFDQmdDQkFBRC8vd0FULytnR1lRUlNBZ1lBaGdBQS8vOEFPd0FBQkxFSEd3SW1BQ2tBQUFFSEFLQUEvQUZEQUFrQXNBWXZzQS9jTURFQS8vOEFSZi9xQStBRjJRSW1BRWtBQUFFSEFLQUFoUUFCQUFrQXNBZ3ZzQ1BjTURFQS8vOEFVZi9wQlNvRzJ3SW1BVVVBQUFFSEFHb0JDQUVVQUF3QXNBQXZzRHJjc0NYUU1ESC8vd0ErLytrRDN3Uk9BZ1lBbkFBQS8vOEFQdi9wQStFRnlBSW1BSndBQUFFSEFHb0Fqd0FCQUF3QXNBQXZzRGpjc0NQUU1ESC8vLytzQUFBSGRRY0pBaVlBMlFBQUFRY0FhZ0l4QVVJQURBQ3dDUyt3Szl5d0Z0QXdNZi8vLzZVQUFBWU9CYk1DSmdEdEFBQUJCd0JxQVdILzdBQU1BTEFKTDdBcjNMQVcwREF4Ly84QUpmL3FCSmdISGdJbUFOb0FBQUVIQUdvQStBRlhBQXdBc0EwdnNFRGNzQ3ZRTURILy93QWgvK29EdVFYSEFpWUE3Z0FBQVFZQWFtY0FBQXdBc0EwdnNEM2NzQ2pRTURILy93QkRBQUFGYmdiNkFpWUEyd0FBQVFjQWNBRkJBVW9BQ1FDd0FDK3dDdHd3TVFELy93QXZBQUFFTndXa0FpWUE3d0FBQVFZQWNIdjBBQWtBc0FBdnNBcmNNREVBLy84QVF3QUFCVzRIQ1FJbUFOc0FBQUVIQUdvQmNBRkNBQXdBc0FBdnNCL2NzQXJRTURILy93QXZBQUFFTndXekFpWUE3d0FBQVFjQWFnQ3EvK3dBREFDd0FDK3dIOXl3Q3RBd01mLy9BSGYvNXdVTkJ2OENKZ0F6QUFBQkJ3QnFBVlFCT0FBTUFMQUtMN0E0M0xBajBEQXgvLzhBUmYvb0JCOEZ4d0ltQUZNQUFBRUhBR29Ba3dBQUFBd0FzQUF2c0RqY3NDUFFNREgvL3dCcC8ra0UvQVhJQWdZQkZnQUEvLzhBUXYvbkJDQUVVd0lHQVJjQUFQLy9BR24vNlFUOEJ3UUNKZ0VXQUFBQkJ3QnFBV0FCUFFBTUFMQUpMN0E2M0xBbDBEQXgvLzhBUXYvbkJDQUZ5UUltQVJjQUFBRUhBR29Ba0FBQ0FBd0FzQVF2c0RYY3NDRFFNREgvL3dCMC8ra0UvQWNmQWlZQTVnQUFBUWNBYWdGTUFWZ0FEQUN3RlMrd09OeXdJOUF3TWYvL0FEVC81d1BXQmNjQ0pnRCtBQUFCQndCcUFJUUFBQUFNQUxBSUw3QTMzTEFpMERBeC8vOEFrLy9tQlVBRytnSW1BTjBBQUFFSEFIQUE3QUZLQUFrQXNBRXZzQkhjTURFQS8vLy9wZjVGQSt3RnVBSW1BRjBBQUFFR0FIQXZDQUFKQUxBQkw3QVEzREF4QVAvL0FKUC81Z1ZBQndrQ0pnRGRBQUFCQndCcUFSc0JRZ0FNQUxBQkw3QW0zTEFSMERBeC8vLy9wZjVGQSt3Rnh3SW1BRjBBQUFFR0FHcGVBQUFNQUxBQkw3QWwzTEFRMERBeC8vOEFrLy9tQlVBSFFRSW1BTjBBQUFFSEFLVUJYUUZDQUJZQXNBQkZXTEFCTHh1eEFSdytXYkFUM0xBWDBEQXgvLy8vcGY1RkJGNEYvd0ltQUYwQUFBRUhBS1VBb0FBQUFCWUFzQUJGV0xBQkx4dXhBUmcrV2JBUzNMQVcwREF4Ly84QXpnQUFCVVFIQ1FJbUFPQUFBQUVIQUdvQlJBRkNBQllBc0FCRldMQVNMeHV4RWh3K1diQW8zTEFjMERBeC8vOEFld0FBQkFBRnN3SW1BUGdBQUFFR0FHcHA3QUFNQUxBSUw3QW8zTEFUMERBeC8vOEFSUUFBQnBZSENRQW1BT1VQQUFBbkFDMEVsUUFBQVFjQWFnSUlBVUlBRmdDd0FFVllzQW92RzdFS0hENVpzQ0hjc0MzUU1ESC8vd0F3QUFBRnFRV3pBQ1lBL1FBQUFDY0FqQVFLQUFBQkJ3QnFBV3IvN0FBV0FMQUFSVml3Q2k4YnNRb1lQbG13SWR5d0xkQXdNZi8vLzlUK1JRVXJCYkFDSmdBOEFBQUFCd0d2QTVVQUFQLy8vOFQrUlFQMEJEb0NKZ0JjQUFBQUJ3R3ZBcW9BQVAvL0FFdi82QVIxQmdBQ0JnQklBQUQvLy8vSy9rVUZaUVd3QWlZQTNBQUFBQWNCcndRa0FBRC8vLy9JL2tVRVNnUTZBaVlBOFFBQUFBY0Jyd003QUFELy8vK3YvcDhFaXdXd0FpWUFKUUFBQUFjQXJBVGNBQUQvL3dBei9wOER6d1JSQWlZQVJRQUFBQWNBckFRcEFBRC8vLyt2QUFBRWl3ZTVBaVlBSlFBQUFRY0FxZ1VCQVVZQUNRQ3dCQyt3R053d01RRC8vd0F6LytnRHp3YURBaVlBUlFBQUFRY0FxZ1J6QUJBQUNRQ3dHQyt3T2R3d01RRC8vLyt2QUFBRjdRZkRBaVlBSlFBQUFRY0J0d0R5QVM0QUZnQ3dBRVZZc0FVdkc3RUZIRDVac0E3Y3NCVFFNREgvL3dBei8rZ0ZYd2FPQWlZQVJRQUFBUVlCdDJUNUFCWUFzQUJGV0xBWUx4dXhHQmcrV2JBdjNMQTEwREF4Ly8vL3J3QUFCSXNIdndJbUFDVUFBQUVIQWJZQStBRTlBQllBc0FCRldMQUZMeHV4QlJ3K1diQU0zTEFUMERBeC8vOEFNLy9vQS8wR2lRSW1BRVVBQUFFR0FiWnFCd0FXQUxBQVJWaXdHQzhic1JnWVBsbXdMOXl3Tk5Bd01mLy8vNjhBQUFWc0Irb0NKZ0FsQUFBQkJ3RzFBUE1CR3dBV0FMQUFSVml3QlM4YnNRVWNQbG13RE55d0lOQXdNZi8vQURQLzZBVGVCclVDSmdCRkFBQUJCZ0cxWmVZQUZnQ3dBRVZZc0Jndkc3RVlHRDVac0MvY3NEUFFNREgvLy8rdkFBQUVpd2ZaQWlZQUpRQUFBUWNCdEFEdkFRWUFGZ0N3QUVWWXNBUXZHN0VFSEQ1WnNBN2NzQlhRTURILy93QXovK2dEOXdha0FpWUFSUUFBQVFZQnRHSFJBQllBc0FCRldMQVlMeHV4R0JnK1diQXQzTEEyMERBeC8vLy9yLzZmQklzSE5nSW1BQ1VBQUFBbkFKMEErUUUyQVFjQXJBVGNBQUFBRXdDd0FFVllzQVF2RzdFRUhENVpzQkRjTURFQS8vOEFNLzZmQTg4R0FBSW1BRVVBQUFBbUFKMXJBQUVIQUt3RUtRQUFBQk1Bc0FCRldMQVlMeHV4R0JnK1diQXgzREF4QVAvLy82OEFBQVNMQjdjQ0pnQWxBQUFCQndHekFSY0JMUUFNQUxBRUw3QU8zTEFhMERBeC8vOEFNLy9vQStVR2dnSW1BRVVBQUFFSEFiTUFpZi80QUF3QXNCZ3ZzQy9jc0R2UU1ESC8vLyt2QUFBRWl3ZTNBaVlBSlFBQUFRY0J1QUVYQVMwQURBQ3dCQyt3RHR5d0d0QXdNZi8vQURQLzZBUGxCb0lDSmdCRkFBQUJCd0c0QUluLytBQU1BTEFZTDdBdjNMQTcwREF4Ly8vL3J3QUFCSXNJUUFJbUFDVUFBQUVIQWJJQkhnRTlBQXdBc0FRdnNBN2NzQmZRTURILy93QXovK2dEMVFjS0FpWUFSUUFBQVFjQnNnQ1FBQWNBREFDd0dDK3dMOXl3T05Bd01mLy8vNjhBQUFTU0NCUUNKZ0FsQUFBQkJ3R3hBUjhCUlFBTUFMQUVMN0FPM0xBWDBEQXgvLzhBTS8vb0JBUUczZ0ltQUVVQUFBRUhBYkVBa1FBUEFBd0FzQmd2c0MvY3NEalFNREgvLy8rdi9wOEVpd2NQQWlZQUpRQUFBQ2NBb0FFdUFUY0JCd0NzQk53QUFBQVRBTEFBUlZpd0JDOGJzUVFjUGxtd0R0d3dNUUQvL3dBei9wOEQ3QVhaQWlZQVJRQUFBQ2NBb0FDZ0FBRUJCd0NzQkNrQUFBQVRBTEFBUlZpd0dDOGJzUmdZUGxtd0w5d3dNUUQvL3dBNy9xa0VzUVd3QWlZQUtRQUFBQWNBckFTZEFBci8vd0JGL3A4RDRBUlJBaVlBU1FBQUFBY0FyQVIwQUFELy93QTdBQUFFc1FmRkFpWUFLUUFBQVFjQXFnVFBBVklBQ1FDd0JpK3dHZHd3TVFELy93QkYvK29ENEFhREFpWUFTUUFBQVFjQXFnUllBQkFBQ1FDd0NDK3dMZHd3TVFELy93QTdBQUFFc1FjdEFpWUFLUUFBQVFjQXBBRFBBVVlBQ1FDd0JpK3dGdHd3TVFELy93QkYvK29FQmdYckFpWUFTUUFBQVFZQXBGZ0VBQWtBc0FndnNDcmNNREVBLy84QU93QUFCYnNIendJbUFDa0FBQUVIQWJjQXdBRTZBQllBc0FCRldMQUdMeHV4Qmh3K1diQVIzTEFWMERBeC8vOEFSZi9xQlVRR2pnSW1BRWtBQUFFR0FiZEorUUFXQUxBQVJWaXdDQzhic1FnWVBsbXdJOXl3S2RBd01mLy9BRHNBQUFTeEI4c0NKZ0FwQUFBQkJ3RzJBTVlCU1FBV0FMQUFSVml3Qmk4YnNRWWNQbG13RDl5d0ZOQXdNZi8vQUVYLzZnUGlCb2tDSmdCSkFBQUJCZ0cyVHdjQUZnQ3dBRVZZc0Fndkc3RUlHRDVac0NQY3NDalFNREgvL3dBN0FBQUZPZ2YyQWlZQUtRQUFBUWNCdFFEQkFTY0FGZ0N3QUVWWXNBWXZHN0VHSEQ1WnNBL2NzQ0hRTURILy93QkYvK29Fd3dhMUFpWUFTUUFBQVFZQnRVcm1BQllBc0FCRldMQUlMeHV4Q0JnK1diQWgzTEExMERBeC8vOEFPd0FBQkxFSDVRSW1BQ2tBQUFFSEFiUUF2UUVTQUJZQXNBQkZXTEFHTHh1eEJodytXYkFQM0xBVzBEQXgvLzhBUmYvcUErQUdwQUltQUVrQUFBRUdBYlJHMFFBV0FMQUFSVml3Q0M4YnNRZ1lQbG13STl5d0t0QXdNZi8vQUR2K3FRU3hCMElDSmdBcEFBQUFKd0NkQU1jQlFnRUhBS3dFblFBS0FCTUFzQUJGV0xBR0x4dXhCaHcrV2JBUjNEQXhBUC8vQUVYK253UGdCZ0FDSmdCSkFBQUFKZ0NkVUFBQkJ3Q3NCSFFBQUFBVEFMQUFSVml3Q0M4YnNRZ1lQbG13SmR3d01RRC8vd0JKQUFBQ3V3ZkZBaVlBTFFBQUFRY0FxZ09GQVZJQUNRQ3dBaSt3RWR3d01RRC8vd0F1QUFBQ2FRYUJBaVlBakFBQUFRY0FxZ016QUE0QUNRQ3dBaSt3RWR3d01RRC8vd0FPL3FnQ0FRV3dBaVlBTFFBQUFBY0FyQU5UQUFuLy8vL3gvcWtCNHdYSEFpWUFUUUFBQUFjQXJBTTJBQXIvL3dCMy9wOEZEUVhJQWlZQU13QUFBQWNBckFUeEFBRC8vd0JGL3A4RUh3UlNBaVlBVXdBQUFBY0FyQVNFQUFELy93QjMvK2NGRFFlN0FpWUFNd0FBQVFjQXFnVWlBVWdBQ1FDd0NpK3dNTnd3TVFELy93QkYvK2dFSHdhREFpWUFVd0FBQVFjQXFnUmhBQkFBQ1FDd0FDK3dNTnd3TVFELy93QjMvK2NHRGdmRkFpWUFNd0FBQVFjQnR3RVRBVEFBRmdDd0FFVllzQW92RzdFS0hENVpzQ2Jjc0N6UU1ESC8vd0JGLytnRlRRYU9BaVlBVXdBQUFRWUJ0MUw1QUJZQXNBQkZXTEFBTHh1eEFCZytXYkFtM0xBczBEQXgvLzhBZC8vbkJRMEh3UUltQURNQUFBRUhBYllCR1FFL0FCWUFzQUJGV0xBS0x4dXhDaHcrV2JBbTNMQXIwREF4Ly84QVJmL29CQjhHaVFJbUFGTUFBQUVHQWJaWUJ3QVdBTEFBUlZpd0FDOGJzUUFZUGxtd0p0eXdLOUF3TWYvL0FIZi81d1dOQit3Q0pnQXpBQUFCQndHMUFSUUJIUUFXQUxBQVJWaXdDaThic1FvY1BsbXdKdHl3S3RBd01mLy9BRVgvNkFUTUJyVUNKZ0JUQUFBQkJnRzFVK1lBRmdDd0FFVllzQUF2RzdFQUdENVpzQ1Rjc0RqUU1ESC8vd0IzLytjRkRRZmJBaVlBTXdBQUFRY0J0QUVRQVFnQUZnQ3dBRVZZc0Fvdkc3RUtIRDVac0NUY3NDM1FNREgvL3dCRi8rZ0VId2FrQWlZQVV3QUFBUVlCdEUvUkFCWUFzQUJGV0xBQUx4dXhBQmcrV2JBazNMQXQwREF4Ly84QWQvNmZCUTBIT0FJbUFETUFBQUFuQUowQkdnRTRBUWNBckFUeEFBQUFFd0N3QUVWWXNBb3ZHN0VLSEQ1WnNDamNNREVBLy84QVJmNmZCQjhHQUFJbUFGTUFBQUFtQUoxWkFBRUhBS3dFaEFBQUFCTUFzQUJGV0xBQUx4dXhBQmcrV2JBbzNEQXhBUC8vQUdmLzZRWWJCeThDSmdDWEFBQUJCd0IxQWc4Qk1RQVRBTEFBUlZpd0NpOGJzUW9jUGxtd0s5d3dNUUQvL3dCQy8rY0Uvd1grQWlZQW1BQUFBUWNBZFFGbUFBQUFFd0N3QUVWWXNBQXZHN0VBR0Q1WnNDamNNREVBLy84QVovL3BCaHNITHdJbUFKY0FBQUVIQUVRQmhRRXhBQk1Bc0FCRldMQUtMeHV4Q2h3K1diQXEzREF4QVAvL0FFTC81d1QvQmY0Q0pnQ1lBQUFCQndCRUFOd0FBQUFUQUxBQVJWaXdBQzhic1FBWVBsbXdKOXd3TVFELy93Qm4vK2tHR3dlMEFpWUFsd0FBQVFjQXFnVWRBVUVBRXdDd0FFVllzQW92RzdFS0hENVpzQ25jTURFQS8vOEFRdi9uQlA4R2d3SW1BSmdBQUFFSEFLb0VkQUFRQUJNQXNBQkZXTEFBTHh1eEFCZytXYkFtM0RBeEFQLy9BR2YvNlFZYkJ4d0NKZ0NYQUFBQkJ3Q2tBUjBCTlFBVEFMQUFSVml3Q2k4YnNRb2NQbG13TE53d01RRC8vd0JDLytjRS93WHJBaVlBbUFBQUFRWUFwSFFFQUJNQXNBQkZXTEFBTHh1eEFCZytXYkFwM0RBeEFQLy9BR2YrbndZYkJqY0NKZ0NYQUFBQUJ3Q3NCT01BQVAvL0FFTCtsZ1QvQkxBQ0pnQ1lBQUFBQndDc0JIYi85Ly8vQUdmK253VWdCYkFDSmdBNUFBQUFCd0NzQk1nQUFQLy9BRnYrbndRZUJEb0NKZ0JaQUFBQUJ3Q3NCREFBQVAvL0FHZi81d1VnQjdrQ0pnQTVBQUFCQndDcUJQd0JSZ0FKQUxBQUw3QWczREF4QVAvL0FGdi82QVFlQm9NQ0pnQlpBQUFCQndDcUJHVUFFQUFKQUxBR0w3QWgzREF4QVAvL0FHZi82QWFhQjBBQ0pnQ1pBQUFCQndCMUFna0JRZ0FUQUxBQVJWaXdHaThic1JvY1BsbXdIZHd3TVFELy93QmEvK2dGVGdYcUFpWUFtZ0FBQVFjQWRRRmcvK3dBRXdDd0FFVllzQll2RzdFV0dENVpzQjdjTURFQS8vOEFaLy9vQnBvSFFBSW1BSmtBQUFFSEFFUUJmd0ZDQUJNQXNBQkZXTEFTTHh1eEVodytXYkFjM0RBeEFQLy9BRnIvNkFWT0Jlb0NKZ0NhQUFBQkJ3QkVBTmIvN0FBVEFMQUFSVml3RFM4YnNRMFlQbG13SGR3d01RRC8vd0JuLytnR21nZkZBaVlBbVFBQUFRY0FxZ1VYQVZJQUV3Q3dBRVZZc0Jvdkc3RWFIRDVac0NqY01ERUEvLzhBV3Yvb0JVNEdid0ltQUpvQUFBRUhBS29FYnYvOEFCTUFzQUJGV0xBTkx4dXhEUmcrV2JBYzNEQXhBUC8vQUdmLzZBYWFCeTBDSmdDWkFBQUJCd0NrQVJjQlJnQVRBTEFBUlZpd0dpOGJzUm9jUGxtd0h0d3dNUUQvL3dCYS8rZ0ZUZ1hYQWlZQW1nQUFBUVlBcEc3d0FCTUFzQUJGV0xBV0x4dXhGaGcrV2JBZjNEQXhBUC8vQUdmK2x3YWFCZ0lDSmdDWkFBQUFCd0NzQk9ILytQLy9BRnIrbndWT0JKRUNKZ0NhQUFBQUJ3Q3NCRFlBQVAvL0FLaitud1V5QmJBQ0pnQTlBQUFBQndDc0JKY0FBUC8vLzZYK0FnUHNCRG9DSmdCZEFBQUFCd0NzQk5yL1kvLy9BS2dBQUFVeUI3a0NKZ0E5QUFBQkJ3Q3FCTXNCUmdBSkFMQUJMN0FXM0RBeEFQLy8vNlgrUlFQc0JvTUNKZ0JkQUFBQkJ3Q3FCQ3dBRUFBSkFMQUJMN0FkM0RBeEFQLy9BS2dBQUFVeUJ5RUNKZ0E5QUFBQkJ3Q2tBTXNCT2dBSkFMQUJMN0FUM0RBeEFQLy8vNlgrUlFQc0Jlc0NKZ0JkQUFBQkJnQ2tMQVFBQ1FDd0FTK3dHdHd3TVFBQUFnQkwvK2dGRVFZQUFCa0FKUUI4QUxBV0w3QUFSVml3RHk4YnNROFlQbG13QUVWWXNBTXZHN0VERUQ1WnNBQkZXTEFHTHh1eEJoQStXYklQRmdGZHNpOFdBVjJ5RkFNV0VSSTVzQlF2c0JqUXNnRUJDaXRZSWRnYjlGbXlCQVlQRVJJNXNoRVBCaEVTT2JBUzBMQUdFTElkQVFvcldDSFlHL1Jac0E4UXNpSUJDaXRZSWRnYjlGa3dNUUVqQXlNM0JpY21KaWNtTnpZU05oY1dGeE1qTnpNM013Y3pBUVlXRnhZM0V5WW5KZ1lHQlBhMTFxVVRnTHlXc2djRENCU08wSDIxWVREOEcvMGN0UnEyKy9BRGJHaWRlbFk4bm11alZRVFMreTUwakFRRTQ3ODdVcVVCQ29RREJJQUJCNWVYbC94T2o1NENCNlVCOUpRRUE0ZnovLzhBQVA3TkJSRUdBQUFtQUVnQUFBQW5BZDRCK1FKSEFBY0FRd0IvLzJULy93QkUvcGdGYWdXd0FpWUI0d0FBQUFjQnNBUUMvLy8vL3dBdi9wa0VWd1E2QWlZQThBQUFBQWNCc0FOR0FBRC8vd0E3L3BrRmR3V3dBaVlBTEFBQUFBY0JzQVJsQUFELy93QXYvcGtFTmdRNkFpWUE4d0FBQUFjQnNBTm1BQUQvL3dDby9wa0ZDUVd3QWlZQU9BQUFBQWNCc0FJdEFBRC8vd0JnL3BrRDZBUTZBaVlBOVFBQUFBY0JzQUc0QUFELy8vL1UvcGtGS3dXd0FpWUFQQUFBQUFjQnNBUERBQUQvLy8vRS9wa0Q5QVE2QWlZQVhBQUFBQWNCc0FMWUFBRC8vd0RPL3BrRlJBV3dBaVlBNEFBQUFBY0JzQVFrQUFELy93QjcvcGtFQUFRN0FpWUErQUFBQUFjQnNBTWtBQUQvL3dETy9wa0ZSQVd3QWlZQTRBQUFBQWNCc0FMbkFBRC8vd0I3L3BrRUFBUTdBaVlBK0FBQUFBY0JzQUhtQUFELy93QkQvcGtFcFFXd0FpWUFzQUFBQUFjQnNBRG5BQUQvL3dBdC9wa0Rnd1E2QWlZQTZ3QUFBQWNCc0FET0FBRC8vLytzL3BrSGRRV3dBaVlBMlFBQUFBY0JzQVl3QUFELy8vK2wvcGtHRGdRNkFpWUE3UUFBQUFjQnNBVDBBQUQvL3dDSy9sVUZ4UVhJQWlZQlB3QUFBQWNCc0FMai83ei8vd0FIL2xrRVJ3UlRBaVlCUUFBQUFBY0JzQUhuLzhELy93QWZBQUFENHdZQUFnWUFUQUFBQUFJQUt3QUFCSUVGc0FBU0FCc0FicklWSEIwUkVqbXdGUkN3QU5BQXNBQkZXTEFQTHh1eER4dytXYkFBUlZpd0NTOGJzUWtRUGxteURnOEpFUkk1c0E0dnNnc0JDaXRZSWRnYjlGbXdBTkN5QWc4SkVSSTVzQUl2c0E0UXNCSFFzQUlRc2hNQkNpdFlJZGdiOUZtd0NSQ3lGQUVLSzFnaDJCdjBXVEF4QVNNSEJSWVdCd1lFSXlFVEl6Y3pOek1ITXdFREJUSTJOelltSndLVjVDb0JOdGpzRVJEKzJPbjk1Ny9LRzhranZDUGwvcnhnQVVxTndCRU9mSHdFVVBJQkFlSy94L1FFVUpmSnlmM1ovZDBCbm9OMmlBUUFBZ0FyQUFBRWdRV3dBQklBR3dCeHNoVWNIUkVTT2JBVkVMQUEwQUN3QUVWWXNCQXZHN0VRSEQ1WnNBQkZXTEFKTHh1eENSQStXYklTRUFrUkVqbXdFaSt5QUFFS0sxZ2gyQnYwV2JJREVBa1JFam13QXkrd0FCQ3dDOUN3RWhDd0RkQ3dDUkN5RlFFS0sxZ2gyQnYwV2JBREVMSWJBUW9yV0NIWUcvUlpNREVCSXdjRkZoWUhCZ1FqSVJNak56TTNNd2N6QVFNRk1qWTNOaVluQXBYa0tnRTIyT3dSRVA3WTZmM252OG9ieVNPOEkrWCt2R0FCU28zQUVRNThmQVJROGdFQjRyL0g5QVJRbDhuSi9kbjkzUUdlZzNhSUJBQUFBUUFRQUFBRXBRV3dBQTBBVUxJTERnOFJFamtBc0FCRldMQUlMeHV4Q0J3K1diQUFSVml3QWk4YnNRSVFQbG15RFFnQ0VSSTVzQTB2c2dBQkNpdFlJZGdiOUZtd0JOQ3dEUkN3QnRDd0NCQ3lDZ0VLSzFnaDJCdjBXVEF4QVNFREl4TWpOek1USVFjaEF5RUNldjc4ZHIxM3FodXBiQU5sSFAxWVVRRUZBcXo5VkFLc2x3SnRudjR4QUFBQi8rWUFBQU9EQkRvQURRQlFzZ3NPRHhFU09RQ3dBRVZZc0Fndkc3RUlHRDVac0FCRldMQUNMeHV4QWhBK1diSU5DQUlSRWptd0RTK3lBQUVLSzFnaDJCdjBXYkFFMExBTkVMQUcwTEFJRUxJS0FRb3JXQ0hZRy9SWk1ERUJJUU1qRXlNM014TWhCeUVESVFKUS91WlR0bE9hRzVsUEFwb2MvaDAwQVJzQjMvNGhBZCtYQWNTWi90VUFBQUVBV0FBQUJYNEZzQUFVQUcwQXNBQkZXTEFTTHh1eEVodytXYkFBUlZpd0JDOGJzUVFjUGxtd0FFVllzQXN2RzdFTEVENVpzQUJGV0xBSUx4dXhDQkErV2JJVEVnc1JFam13RXkrd0VOQ3lEUUVLSzFnaDJCdjBXYkFCMExBTEVMQUMwTEFDTDdJS0FRb3JXQ0hZRy9SWnNnWUtBaEVTT1RBeEFTTURNd0V6QVFFakFTTURJeE1qTnpNM013Y3pBc2Y0TG9rQ1hmZjlZUUc4MXY1eXNuRzh1N1lidFNpN0ova0VOLzczQW9MOU5mMGJBbzc5Y2dRM2wrTGlBQUFCQURrQUFBUXlCZ0FBRkFCbUFMQVJMN0FBUlZpd0JDOGJzUVFZUGxtd0FFVllzQXN2RzdFTEVENVpzQUJGV0xBSUx4dXhDQkErV2JJUUVRc1JFam13RUMrd0U5Q3lBUUVLSzFnaDJCdjBXYkFMRUxBQzBMQUNMN0lLQVFvcldDSFlHL1Jac2dZS0FoRVNPYkFCRUxBTjBEQXhBU01ETXdFekFRRWpBU01ESXhNak56TTNNd2N6QXFub1lYSUJmT1QrTWdFM3lQNzFnbGUyMDgwYnpSMjFIZWdFd2YzTkFheitDdjI4QWZYK0N3VEJsNmlvLy84QVEvNmFCVzRIR3dJbUFOc0FBQUFuQUtBQmF3RkRBUWNBRUFSUS83MEFFd0N3QUVWWXNBZ3ZHN0VJSEQ1WnNBM2NNREVBLy84QUwvNmFCRVVGeFFJbUFPOEFBQUFuQUtBQXBmL3RBUWNBRUFOYi83MEFFd0N3QUVWWXNBZ3ZHN0VJR0Q1WnNBM2NNREVBLy84QU8vNmFCWGNGc0FJbUFDd0FBQUFIQUJBRVdmKzkvLzhBTC82YUJFUUVPZ0ltQVBNQUFBQUhBQkFEV3YrOS8vOEFPLzZhQnJjRnNBSW1BREVBQUFBSEFCQUZqUCs5Ly84QU1QNmFCWXNFT2dJbUFQSUFBQUFIQUJBRW9mKzkvLy8veXY2YUJXVUZzQUltQU53QUFBQUhBQkFFUnYrOS8vLy95UDZhQkVjRU9nSW1BUEVBQUFBSEFCQURYZis5QUFFQXFBQUFCVElGc0FBT0FGYXlDZzhRRVJJNUFMQUFSVml3Q0M4YnNRZ2NQbG13QUVWWXNBc3ZHN0VMSEQ1WnNBQkZXTEFDTHh1eEFoQStXYklHQWdnUkVqbXdCaSt5QlFFS0sxZ2gyQnYwV2JBQTBMSUtDQUlSRWptd0JoQ3dEdEF3TVFFakF5TVRJemN6QVRNVEFUTUJNd044MlZ1N1d0VWJsZjdtek84QjcrRDkxWkFDQ2YzM0FnbVhBeEQ5SmdMYS9QQUFBQUVBWGY1Z0JCb0VPZ0FPQUdPeUFROFFFUkk1QUxBQVJWaXdDUzhic1FrWVBsbXdBRVZZc0Fzdkc3RUxHRDVac0FCRldMQURMeHV4QXhJK1diQUFSVml3QUM4YnNRQVFQbG13QUVWWXNBUXZHN0VFRUQ1WnNnWUJDaXRZSWRnYjlGbXlDZ3NBRVJJNXNBM1FzQTdRTURFRkl3TWpFeU0zTXdNekV3RXpBVE1DeDk5R3RVYldHNzJ4c1lrQm5NRCtDcjRML21zQmxaY0RydnpjQXlUOFVnQUIvOVFBQUFVckJiQUFFUUJpQUxBQVJWaXdEQzhic1F3Y1BsbXdBRVZZc0E0dkc3RU9IRDVac0FCRldMQUZMeHV4QlJBK1diQUFSVml3QXk4YnNRTVFQbG15Q1F3RkVSSTVmTEFKTHhpd0VOQ3lBQUVLSzFnaDJCdjBXYklFQlF3UkVqbXdDTkN5RFF3RkVSSTVNREVCSXdFakFRRWpBU00zTXdFekV3RXpBVE1Ec2FRQk90UCsvdjVLNkFJS2x4dVIvdHJRL1FHcDZQNFRqZ0tlL1dJQ04vM0pBcDZYQW52OTB3SXQvWVVBQUFIL3hBQUFBL1FFT2dBUkFHb0FzQUJGV0xBTUx4dXhEQmcrV2JBQVJWaXdEaThic1E0WVBsbXdBRVZZc0FVdkc3RUZFRDVac0FCRldMQURMeHV4QXhBK1diSUpCUXdSRWpsOHNBa3ZHTElJQVFvcldDSFlHL1Jac0FIUXNnUUZEQkVTT2JJTkRBVVJFam13Q1JDd0VkQjhzQkV2R0RBeEFTTVRJd01CSXdFak56TURNeE1CTXdFekF3K3g3TVd6L3MvZEFZS2hHNTdieHFjQkp0NyttWjBCNGY0ZkFaVCtiQUhobHdIQy9uWUJpdjQrLy84QUtmL25BK1VFVFFJR0FMNEFBUC8vLzljQUFBU2tCYkFDSmdBcUFBQUFCd0hlLzBUK2YvLy9BSmtDaXdYWEF5SUFSZ0dYaUFCbVprQUEvLzhBRndBQUJDc0Z4d0lHQUJZQUFQLy9BRFQvNkFRaEJjY0NCZ0FYQUFELy93QUZBQUFFSFFXd0FnWUFHQUFBLy84QWN2L25CR29Gc0FJR0FCa0FBUC8vQUpULy9nUVRCY2dBQmdBZEFBRC8vd0I4LytjRVB3WEpBQVlBRkJRQS8vOEFlZi9xQlFZSFZRSW1BQ3NBQUFFSEFIVUI5d0ZYQUJNQXNBQkZXTEFNTHh1eERCdytXYkFrM0RBeEFQLy9BQVQrVHdRb0JmNENKZ0JMQUFBQkJ3QjFBVTBBQUFBVEFMQUFSVml3QkM4YnNRUVlQbG13TE53d01RRC8vd0E3QUFBRmR3YzBBaVlBTWdBQUFRY0FSQUdkQVRZQUV3Q3dBRVZZc0FZdkc3RUdIRDVac0F2Y01ERUEvLzhBSHdBQUErTUYvZ0ltQUZJQUFBRUhBRVFBMGdBQUFCTUFzQUJGV0xBREx4dXhBeGcrV2JBVTNEQXhBUC8vLzY4QUFBU0xCeUFDSmdBbEFBQUJCd0NyQklBQk1nQVdBTEFBUlZpd0JDOGJzUVFjUGxtd0ROeXdFTkF3TWYvL0FEUC82QVBQQmVzQ0pnQkZBQUFCQndDckEvTC8vUUFXQUxBQVJWaXdHQzhic1JnWVBsbXdMZHl3TWRBd01mLy9BRHNBQUFTeEJ5d0NKZ0FwQUFBQkJ3Q3JCRTRCUGdBV0FMQUFSVml3Qmk4YnNRWWNQbG13RGR5d0VkQXdNZi8vQUVYLzZnUGdCZXNDSmdCSkFBQUJCd0NyQTlmLy9RQVdBTEFBUlZpd0NDOGJzUWdZUGxtd0lkeXdKZEF3TWYvLy85OEFBQUtLQnl3Q0pnQXRBQUFCQndDckF3UUJQZ0FXQUxBQVJWaXdBaThic1FJY1BsbXdCZHl3Q2RBd01mLy8vNDBBQUFJNEJla0NKZ0NNQUFBQkJ3Q3JBckwvK3dBV0FMQUFSVml3QWk4YnNRSVlQbG13QmR5d0NkQXdNZi8vQUhmLzV3VU5CeUlDSmdBekFBQUJCd0NyQktFQk5BQVdBTEFBUlZpd0NpOGJzUW9jUGxtd0pOeXdLTkF3TWYvL0FFWC82QVFmQmVzQ0pnQlRBQUFCQndDckErRC8vUUFXQUxBQVJWaXdBQzhic1FBWVBsbXdKTnl3S05Bd01mLy9BRG9BQUFUQ0J5QUNKZ0EyQUFBQkJ3Q3JCRU1CTWdBV0FMQUFSVml3QkM4YnNRUWNQbG13R2R5d0hkQXdNZi8vQUI4QUFBTFVCZXNDSmdCV0FBQUJCd0NyQTBuLy9RQVdBTEFBUlZpd0NpOGJzUW9ZUGxtd0V0eXdEZEF3TWYvL0FHZi81d1VnQnlBQ0pnQTVBQUFCQndDckJIc0JNZ0FXQUxBQVJWaXdDaThic1FvY1BsbXdGTnl3R05Bd01mLy9BRnYvNkFRZUJlc0NKZ0JaQUFBQkJ3Q3JBK1QvL1FBV0FMQUFSVml3Qnk4YnNRY1lQbG13RmR5d0dkQXdNZi8vLzdJQUFBVThCajhBSmdEUFpBQUFCd0N0L3BFQUFQLy9BRHYrcVFTZ0JiQUNKZ0FtQUFBQUJ3Q3NCSmdBQ3YvL0FCLytsZ1ArQmdBQ0pnQkdBQUFBQndDc0JJYi85Ly8vQUR2K3FRVFZCYkFDSmdBb0FBQUFCd0NzQkpjQUN2Ly9BRXYrbndSMUJnQUNKZ0JJQUFBQUJ3Q3NCSmtBQVAvL0FEditDUVRWQmJBQ0pnQW9BQUFBQndHaUFSLytxdi8vQUV2OS93UjFCZ0FDSmdCSUFBQUFCd0dpQVNIK29QLy9BRHYrcVFWM0JiQUNKZ0FzQUFBQUJ3Q3NCUG9BQ3YvL0FCLytxUVBqQmdBQ0pnQk1BQUFBQndDc0JIOEFDdi8vQURzQUFBVlFCeTRDSmdBdkFBQUJCd0IxQWJBQk1BQVRBTEFBUlZpd0JTOGJzUVVjUGxtd0R0d3dNUUQvL3dBZ0FBQUVJZ2MvQWlZQVR3QUFBUWNBZFFGOUFVRUFDUUN3QlMrd0Q5d3dNUUQvL3dBNy92Z0ZVQVd3QWlZQUx3QUFBQWNBckFUU0FGbi8vd0FnL3VVRUdnWUFBaVlBVHdBQUFBY0FyQVJRQUViLy93QTcvcWtEc1FXd0FpWUFNQUFBQUFjQXJBU2RBQXIvLy8veS9xa0I3Z1lBQWlZQVVBQUFBQWNBckFNM0FBci8vd0E3L3FrR3R3V3dBaVlBTVFBQUFBY0FyQVduQUFyLy93QWUvcWtHYWdSU0FpWUFVUUFBQUFjQXJBV3JBQXIvL3dBNy9xa0Zkd1d3QWlZQU1nQUFBQWNBckFUK0FBci8vd0FmL3FrRDR3UlNBaVlBVWdBQUFBY0FyQVJtQUFyLy93QTdBQUFFOHdkQUFpWUFOQUFBQVFjQWRRRzBBVUlBRXdDd0FFVllzQU12RzdFREhENVpzQmJjTURFQS8vLy8xLzVnQkRZRjlRSW1BRlFBQUFFSEFIVUJrZi8zQUJNQXNBQkZXTEFOTHh1eERSZytXYkFoM0RBeEFQLy9BRHIrcVFUQ0JiQUNKZ0EyQUFBQUJ3Q3NCSlVBQ3YvLy8rNytxUUxVQkZRQ0pnQldBQUFBQndDc0F6TUFDdi8vQUNmK253U2pCY2NDSmdBM0FBQUFCd0NzQktRQUFQLy9BQzcrbHdPMkJGQUNKZ0JYQUFBQUJ3Q3NCRzMvK1AvL0FLaitud1VKQmJBQ0pnQTRBQUFBQndDc0JKWUFBUC8vQUVQK253S1VCVUFDSmdCWUFBQUFCd0NzQS9vQUFQLy9BS1FBQUFWaEJ5MENKZ0E2QUFBQkJ3Q2tBT0VCUmdBVEFMQUFSVml3QVM4YnNRRWNQbG13Q3R3d01RRC8vd0J1QUFBRDdRWGlBaVlBV2dBQUFRWUFwQnY3QUJNQXNBQkZXTEFCTHh1eEFSZytXYkFLM0RBeEFQLy9BS1QrcVFWaEJiQUNKZ0E2QUFBQUJ3Q3NCTW9BQ3YvL0FHNytxUVB0QkRvQ0pnQmFBQUFBQndDc0JEZ0FDdi8vQU1QK3FRZEJCYkFDSmdBN0FBQUFCd0NzQmMwQUN2Ly9BSUQrcVFYK0JEb0NKZ0JiQUFBQUJ3Q3NCU3dBQ3YvLy8rditxUVRPQmJBQ0pnQStBQUFBQndDc0JKZ0FDdi8vLyszK3FRUE9CRG9DSmdCZUFBQUFCd0NzQkVJQUN2Ly8vd3ovNXdWVEJkWUFKZ0F6UmdBQUJ3RmEvaG9BQVAvLy82VUFBQVBqQlJ3Q0pnRzZBQUFBQndDdC82diszZi8vLytFQUFBUXJCUjhBSmdHK1BBQUFCd0N0L3NEKzRQLy8vLzBBQUFUV0JSd0FKZ0hCUEFBQUJ3Q3QvdHorM2YvL0FBRUFBQUhtQlI0QUpnSENQQUFBQndDdC91RCszLy8vQUIzLzZnUllCUndBSmdISUNnQUFCd0N0L3Z6KzNmLy8vNXNBQUFTaEJSd0FKZ0hTUEFBQUJ3Q3QvbnIrM2YvL0FCWUFBQVIwQlJzQUpnSHpDZ0FBQndDdC94VCszUC8vLzZVQUFBUGpCSTBDQmdHNkFBRC8vd0FkQUFBRDV3U05BZ1lCdXdBQS8vOEFIUUFBQSs4RWpRSUdBYjRBQVAvLy85d0FBQVFPQkkwQ0JnSFRBQUQvL3dBZEFBQUVtZ1NOQWdZQndRQUEvLzhBS2dBQUFhb0VqUUlHQWNJQUFQLy9BQjBBQUFSL0JJMENCZ0hFQUFELy93QWRBQUFGc0FTTkFnWUJ4Z0FBLy84QVN2L3FCRTRFb3dJR0FjZ0FBUC8vQUIwQUFBUXBCSTBDQmdISkFBRC8vd0J0QUFBRVFnU05BZ1lCelFBQS8vOEFkQUFBQkdVRWpRSUdBZElBQVAvLy83WUFBQVJ0QkkwQ0JnSFJBQUQvL3dBcUFBQUN0Z1hsQWlZQndnQUFBUWNBYXY5a0FCNEFGZ0N3QUVWWXNBSXZHN0VDR2o1WnNBM2NzQm5RTURILy93QjBBQUFFWlFYbEFpWUIwZ0FBQVFZQWFub2VBQllBc0FCRldMQUlMeHV4Q0JvK1diQVMzTEFlMERBeC8vOEFIUUFBQSs4RjVRSW1BYjRBQUFFR0FHcCtIZ0FXQUxBQVJWaXdCaThic1FZYVBsbXdGZHl3SWRBd01mLy9BQjBBQUFQZ0Jod0NKZ0hxQUFBQkJ3QjFBVHNBSGdBVEFMQUFSVml3QlM4YnNRVWFQbG13Q053d01RRC8vd0FSLytzRDdRU2RBZ1lCekFBQS8vOEFLZ0FBQWFvRWpRSUdBY0lBQVAvL0FDb0FBQUsyQmVVQ0pnSENBQUFCQndCcS8yUUFIZ0FXQUxBQVJWaXdBaThic1FJYVBsbXdEZHl3R2RBd01mLy8vL2IvNndPYkJJMENCZ0hEQUFELy93QWRBQUFFZndZY0FpWUJ4QUFBQVFjQWRRRXRBQjRBRXdDd0FFVllzQWd2RzdFSUdqNVpzQS9jTURFQS8vOEFXUC9vQkZRRjl3SW1BZ0VBQUFFR0FLQjBId0FUQUxBQVJWaXdBaThic1FJYVBsbXdGZHd3TVFELy8vK2xBQUFENHdTTkFnWUJ1Z0FBLy84QUhRQUFBK2NFalFJR0Fic0FBUC8vQUIwQUFBUE5CSTBDQmdIcUFBRC8vd0FkQUFBRDd3U05BZ1lCdmdBQS8vOEFId0FBQktFRjl3SW1BZjRBQUFFSEFLQUExQUFmQUJNQXNBQkZXTEFJTHh1eENCbytXYkFOM0RBeEFQLy9BQjBBQUFXd0JJMENCZ0hHQUFELy93QWRBQUFFbWdTTkFnWUJ3UUFBLy84QVN2L3FCRTRFb3dJR0FjZ0FBUC8vQUIwQUFBU0dCSTBDQmdIdkFBRC8vd0FkQUFBRUtRU05BZ1lCeVFBQS8vOEFSLy9zQkRjRW93SUdBYndBQVAvL0FHMEFBQVJDQkkwQ0JnSE5BQUQvLy8rMkFBQUViUVNOQWdZQjBRQUFBQUVBRWY1UUE5NEVvQUFxQUlZQXNBQkZXTEFQTHh1eER4bytXYkFBUlZpd0hTOGJzUjBRUGxtd0FFVllzQnN2RzdFYkVqNVpzQThRc2djQkNpdFlJZGdiOUZtd0R4Q3dETkN5S2gwUEVSSTVmTEFxTHhpMFlDcHdLZ0pkc3FBcUFWMjBZQ3B3S2dKeHNpa0JDaXRZSWRnYjlGbXlGQ2txRVJJNXNCMFFzQnJRc0NIUXNCb1FzaU1CQ2l0WUlkZ2I5Rmt3TVFFeU5qYzJKeVluSmdjR0J3YzJOaGNXRmdjR0J4WVdCd1lHQndNakV5WW1Oek1VRnhZMk56WWxKemNDQVgrU0NnY1pNNVpyUlVNUnRoRDd0NzdYQ2dyeVZXQUZDT1M4U0xaS2k1QUZzdG1CcVFzWS92dUVHd0tmWVZjMkpVMEVBaTBzVVFHV3NBSURwbzI0WWlHR1haRzRELzVlQWF3Y3FuK3hCUU5tVzd3Q0FaZ0FBUUFkL3BrRW1nU05BQThBY2dDd0FTK3dBRVZZc0Frdkc3RUpHajVac0FCRldMQU1MeHV4REJvK1diQUFSVml3Qmk4YnNRWVFQbG13QUVWWXNBSXZHN0VDRUQ1WnNnb0dDUkVTT1h5d0NpOFl0R0FLY0FvQ2NiS2dDZ0ZkdEdBS2NBb0NYYklGQVFvcldDSFlHL1Jac0FJUXNnNEJDaXRZSWRnYjlGa3dNUUVqRXlNVElRTWpFek1ESVJNekF6TUVMclkrbTFiOXVGZTF5N1JaQWtoYXRiR2UvcGtCWndIeS9nNEVqZjM5QWdQOERBQUFBUUJJL2xZRVB3U2pBQjRBV0FDd0FFVllzQTB2RzdFTkdqNVpzQUJGV0xBREx4dXhBeEErV2JBQVJWaXdCQzhic1FRU1BsbXdBeEN3QnRDd0RSQ3dFZEN3RFJDeUZBRUtLMWdoMkJ2MFdiQURFTEljQVFvcldDSFlHL1Jac0FNUXNCN1FNREVCQmdZSEF5TVRKZ0kzTnhJQUZ4WVdGeU1tSmljbUJnY0dGeFlXRnhZM0ErNGY3S3hIdGtxZG54Z01KUUU1NExqVkNMTUZiWGlUeWg4YkJnVjJiUHRNQVhxcDBRNytaQUdwS0FFbXhsZ0JDQUV3QmdUVnRuS0NCQVhLdHA1amRZc0VDdndBLy84QWRBQUFCR1VFalFJR0FkSUFBUC8vQUMvK1VRVmhCS0VDSmdJWEFBQUFCd0d3QXB2L3VQLy9BQjhBQUFTaEJkWUNKZ0grQUFBQkJ3QndBS29BSmdBVEFMQUFSVml3Q0M4YnNRZ2FQbG13Qzl3d01RRC8vd0JZLytnRVZBWFdBaVlDQVFBQUFRWUFjRW9tQUJNQXNBQkZXTEFSTHh1eEVSbytXYkFUM0RBeEFQLy9BRkVBQUFUekJJMENCZ0h4QUFELy8vK3YvazhFaXdXd0FpWUFKUUFBQUFjQW93Rm5BQUQvL3dBei9rOER6d1JSQWlZQVJRQUFBQWNBb3dDMEFBRC8vd0E3L2xrRXNRV3dBaVlBS1FBQUFBY0Fvd0VvQUFyLy93QkYvazhENEFSUkFpWUFTUUFBQUFjQW93RC9BQUFBQUFBQUFBMEFvZ0FEQUFFRUNRQUFBRjRBQUFBREFBRUVDUUFCQUF3QVhnQURBQUVFQ1FBQ0FBd0FhZ0FEQUFFRUNRQURBQm9BZGdBREFBRUVDUUFFQUJvQWRnQURBQUVFQ1FBRkFDd0FrQUFEQUFFRUNRQUdBQm9BdkFBREFBRUVDUUFIQUVBQTFnQURBQUVFQ1FBSkFBd0JGZ0FEQUFFRUNRQUxBQlFCSWdBREFBRUVDUUFNQUNZQk5nQURBQUVFQ1FBTkFGd0JYQUFEQUFFRUNRQU9BRlFCdUFCREFHOEFjQUI1QUhJQWFRQm5BR2dBZEFBZ0FESUFNQUF4QURFQUlBQkhBRzhBYndCbkFHd0FaUUFnQUVrQWJnQmpBQzRBSUFCQkFHd0FiQUFnQUZJQWFRQm5BR2dBZEFCekFDQUFVZ0JsQUhNQVpRQnlBSFlBWlFCa0FDNEFVZ0J2QUdJQWJ3QjBBRzhBU1FCMEFHRUFiQUJwQUdNQVVnQnZBR0lBYndCMEFHOEFJQUJKQUhRQVlRQnNBR2tBWXdCV0FHVUFjZ0J6QUdrQWJ3QnVBQ0FBTWdBdUFEQUFNQUF4QURFQU1BQXhBRHNBSUFBeUFEQUFNUUEwQUZJQWJ3QmlBRzhBZEFCdkFDMEFTUUIwQUdFQWJBQnBBR01BVWdCdkFHSUFid0IwQUc4QUlBQnBBSE1BSUFCaEFDQUFkQUJ5QUdFQVpBQmxBRzBBWVFCeUFHc0FJQUJ2QUdZQUlBQkhBRzhBYndCbkFHd0FaUUF1QUVjQWJ3QnZBR2NBYkFCbEFFY0Fid0J2QUdjQWJBQmxBQzRBWXdCdkFHMEFRd0JvQUhJQWFRQnpBSFFBYVFCaEFHNEFJQUJTQUc4QVlnQmxBSElBZEFCekFHOEFiZ0JNQUdrQVl3QmxBRzRBY3dCbEFHUUFJQUIxQUc0QVpBQmxBSElBSUFCMEFHZ0FaUUFnQUVFQWNBQmhBR01BYUFCbEFDQUFUQUJwQUdNQVpRQnVBSE1BWlFBc0FDQUFWZ0JsQUhJQWN3QnBBRzhBYmdBZ0FESUFMZ0F3QUdnQWRBQjBBSEFBT2dBdkFDOEFkd0IzQUhjQUxnQmhBSEFBWVFCakFHZ0FaUUF1QUc4QWNnQm5BQzhBYkFCcEFHTUFaUUJ1QUhNQVpRQnpBQzhBVEFCSkFFTUFSUUJPQUZNQVJRQXRBRElBTGdBd0FBQUFBd0FBLy9RQUFQOXFBR1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBSUFDQUFDLy84QUR3QUJBQUFBREFBQUFBQUFBQUFDQUY0QUpRQStBQUVBUlFCZUFBRUFlUUI1QUFNQWdRQ0JBQUVBZ3dDREFBRUFoZ0NHQUFFQWlRQ0pBQUVBaXdDVkFBRUFsd0NjQUFFQW93Q2pBQU1BcHdDc0FBTUFzQUN3QUFFQXVRQzZBQUVBdmdDK0FBRUF3QURBQUFFQXdnRENBQUVBeGdER0FBRUF5Z0RLQUFFQXpBRE5BQUVBendEUUFBRUEwZ0RTQUFFQTJRRGRBQUVBNEFEZ0FBRUE1QURrQUFFQTVnRG9BQUVBNmdENkFBRUEvQUQ4QUFFQS9nRUFBQUVCQWdFQ0FBRUJCd0VJQUFFQkZRRVpBQUVCR3dFYkFBRUJId0VoQUFFQkl3RWtBQU1CT0FFNUFBRUJQZ0ZBQUFFQlJRRkZBQUVCVFFGTkFBRUJUd0ZQQUFFQlV3RlRBQUVCVlFGWEFBRUJXUUZaQUFFQm9nR2lBQU1Cb3dHcEFBSUJ1Z0hUQUFFQjRnSGlBQUVCNUFIa0FBRUI2Z0hxQUFFQjh3SHpBQUVCOVFIMUFBRUIvQUgrQUFFQ0FBSUJBQUVDQXdJREFBRUNCd0lIQUFFQ0NRSUxBQUVDRVFJUkFBRUNGZ0lZQUFFQ0dnSWFBQUVDUGdKREFBRUNSd0t2QUFFQ3NnTllBQUVEV3dOcUFBRURjUU54QUFFRGN3TjNBQUVEZWdOL0FBRURnUU9FQUFFRGhnT0tBQUVEakFPbkFBRURxd09yQUFFRHJRTzBBQUVEdGdPNEFBRUR2UU8vQUFFRHdRUE5BQUVEendQWkFBRUQzQVBzQUFFRDd3UklBQUVFU3dSTEFBRUVUUVJOQUFFRVR3UlFBQUVFV3dSYkFBRUVZZ1JrQUFFRVpnUm1BQUVFYWdScUFBRUViQVJ0QUFFRWJ3UnZBQUVFZHdTR0FBRUVod1NIQUFJRWlBU3dBQUVFc2dUS0FBRUV6QVRRQUFFRTBnVFZBQUVFMXdUWkFBRUUyd1RjQUFFRTNnVGhBQUVBQVFBQUFBb0FYQUNhQUFSRVJreFVBQnBqZVhKc0FDaG5jbVZyQURac1lYUnVBRVFBQkFBQUFBRC8vd0FDQUFBQUJBQUVBQUFBQVAvL0FBSUFBUUFGQUFRQUFBQUEvLzhBQWdBQ0FBWUFCQUFBQUFELy93QUNBQU1BQndBSVkzQnpjQUF5WTNCemNBQXlZM0J6Y0FBeVkzQnpjQUF5YTJWeWJnQTRhMlZ5YmdBNGEyVnliZ0E0YTJWeWJnQTRBQUFBQVFBQUFBQUFBUUFCQUFJQUJnSFlBQUVBQUFBQkFBZ0FBUUFLQUFVQUpBQklBQUVBM2dBSUFDVUFKZ0FuQUNnQUtRQXFBQ3NBTEFBdEFDNEFMd0F3QURFQU1nQXpBRFFBTlFBMkFEY0FPQUE1QURvQU93QThBRDBBUGdCbEFHY0FrZ0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QU5FQTBnRFRBTlFBMVFEV0FOY0EyQURaQU5vQTJ3RGNBTjBBM2dEZkFPQUE0UURpQU9NQTVBRGxBT1lBNXdEb0FTd0JNQUV5QVRnQk9nRThBVDRCUHdGRkFVWUJmd0dGQVlvQmpRSkhBa2dDU2dKTUFrMENUZ0pQQWxBQ1VRSlNBbE1DVkFKVkFsWUNWd0pZQWxrQ1dnSmJBbHdDWFFKZUFsOENZQUpoQW1JQ1l3SmtBbVVDWmdLREFvVUNod0tKQW9zQ2pRS1BBcEVDa3dLVkFwY0NtUUtiQXAwQ253S2hBcU1DcFFLbkFxa0Nxd0t0QXE4Q3NnSzBBcllDdUFLNkFyd0N2Z0xBQXNJQ3hRTEhBc2tDeXdMTkFzOEMwUUxUQXRVQzJRTGJBdDBDM3dMaEF1TUM1UUxuQXVrQzZ3THRBdThDOFFMeUF2UUM5Z05UQTFRRFZRTldBMWNEV0FOWkExc0RYQU5kQTE0RFh3TmdBMkVEWWdOa0EyVURaZ05uQTJnRGFRTnFBM29EZXdOOEEzMERmZ04vQTRBRGdRT0NBNE1EaEFPRkE0WURod09JQTRrRGlnT0xBNHdEalFPT0E0OER1d085QTc4RDFBUGFBK0FFU1FSTEJFOEVWd1JaQkY0RWFnQUNBQUFBQkFBT0Q4NFY4alZpQUFFRFZBQUVBQUFCcFFyU0N0SUdnZ3R3Q29BSy9nK2FEQUFHaUE3dUR1NE1SZzZnQ2lJTzdnN3VENW9LaWdhU0RHWU1SZ3JZQ3F3TlVnOFFDbDRMNGdzUURCWUdtQTIyRGJZTnRnd2dDeEFLVUF4TURiQU1UQXNRQnFZTjVndHdENW9MY0Fhc0JySUd2QWJDQnNnTVRBYk9CdGdOdGdiK0J4UUhLZ2N3QjBZSFRBZFNCNFFIaWdlUURjQU53QWUrRHU0SDRBZ0NEVklJTUE3dUR1NExKZzd1RHU0SVJnM0FEY0FJZUFpQ0NJd0lwZzFJQ0xnTnNBalNDT2dMRUFreUNVd0phQWxvQ3hBSllnbG9DV2dKYUF0d0RDQUsyQXhNQ3hBTjVnMUlEcUFPb0ExSUN0SUswZ3JTQ3RJSzBnbUtDYkFKdWduRUNlSUo5QW9HQ2hnSy9nK2FENW9QbWcrYURHWUxjQXR3QzNBTGNBdHdDM0FMY0FyK0RBQU1BQXdBREFBTzdnN3VEdTRPN2c3dUQ1b1BtZythRDVvUG1neEdERVlNUmd4R0R4QUw0Z3ZpQytJTDRndmlDK0lMNGd3V0RCWU1GZ3dXRGJZTUlBd2dEQ0FNSUF3Z0RFd01UQXR3QytJTGNBdmlDM0FMNGdyK0N2NEsvZ3IrRDVvTUFBd1dEQUFNRmd3QURCWU1BQXdXREFBTUZnN3VEYllPN2c3dUR1NE83Zzd1REVZT29Bb2lDaUlLSWdvaUR1NE50Zzd1RGJZTzdnMjJEYllQbWd3Z0Q1b01JQSthRENBS1VBcFFDbEFNWmd4bURHWU1SZ3hHREVZTVJneEdERVlLckE4UURFd1BFQXBlQ2w0S1hndHdEQUFPN2c3dUQ1b1BFQXR3Q29BTUFBcGVEdTRPN2c2Z0R1NE83ZythQ29vTVpnOFFEVklPN2c4UURiWU1JQXhNRENBTUFBM21EdTRPN2d4R0RxQU9vQXNtQzNBS2dBM21EQUFPN2c3dUQ1b0tpZ3IrREdZTlVndmlEQllNSUFzUURFd05zQXdXRFVnTVRBcXNDcXdLckE4UURFd0swZ3JTQ3RJTzdnMjJDM0FMNGd3QURCWUsyQXhNQ3Y0UEVBeE1EdTROVWcyd0R1NExjQXZpQzNBTDRnd0FEQllNRmd3V0RWSU5zQSthRENBTUlBc1FDeVlNVEFzbURFd0xKZ3hNRFZJTnNBdHdDK0lMY0F2aUMzQUw0Z3R3QytJTGNBdmlDM0FMNGd0d0MrSUxjQXZpQzNBTDRndHdDK0lMY0F2aUMzQUw0Z3dBREJZTUFBd1dEQUFNRmd3QURCWU1BQXdXREFBTUZnd0FEQllNQUF3V0R1NE83ZythRENBUG1nd2dENW9NSUErYURDQVBtZ3dnRDVvTUlBK2FEQ0FNSUF4R0RFWVBFQXhNRHhBTVRBOFFERXdPb0E3dURHWU5VZzJ3RGVZTlNBMVNEYkFOdGczQURlWU9vQTd1RHU0UEVBK2FBQUlBaHdBR0FBWUFBQUFMQUFzQUFRQVRBQk1BQWdBbEFDb0FBd0FzQURVQUNRQTRBRDRBRXdCRkFFWUFHZ0JKQUVvQUhBQk1BRXdBSGdCUkFGUUFId0JXQUZZQUl3QmFBRm9BSkFCY0FGMEFKUUNLQUlvQUp3Q2NBSndBS0FDd0FMUUFLUUMyQUxnQUxnQzZBTG9BTVFDOEFMMEFNZ0MvQU1BQU5BRENBTVFBTmdER0FNc0FPUURSQU5FQVB3RFRBTjBBUUFEZkFOOEFTd0RoQU9NQVRBRGxBT2NBVHdEcEFPMEFVZ0R3QVBBQVZ3RDFBUGNBV0FENkFQc0FXd0Q5QVA4QVhRRURBUVFBWUFFSkFRa0FZZ0VNQVF3QVl3RVhBUmtBWkFFckFTMEFad0V3QVRBQWFnRXlBVElBYXdGSkFVa0FiQUZzQVcwQWJRRnZBWEVBYndHNkFib0FjZ0c5QWIwQWN3SEVBY1VBZEFISUFjZ0FkZ0hLQWNzQWR3SE5BYzBBZVFJb0FpZ0FlZ0lxQWlzQWV3SkhBa2dBZlFKS0Frb0Fmd0pNQW0wQWdBSnZBbklBb2dKM0Fud0FwZ0tCQW9rQXJBS0xBb3NBdFFLTkFvMEF0Z0tQQW84QXR3S1JBcEVBdUFLVEFwd0F1UUtsQXFjQXd3S3BBcWtBeGdLckFxc0F4d0t0QXEwQXlBS3ZBcThBeVFLeUFySUF5Z0swQXJRQXl3SzJBcllBekFLNEFyZ0F6UUs2QXJvQXpnSzhBcndBendLK0Fzb0EwQUxNQXN3QTNRTE9BczRBM2dMUUF0QUEzd0xiQXRzQTRBTGRBdDBBNFFMZkF0OEE0Z0xoQXVFQTR3TGpBdU1BNUFMbEF1VUE1UUxuQXVjQTVnTHBBdWtBNXdMckF1c0E2QUx0QXUwQTZRTHZBdklBNmdMMEF2UUE3Z0wyQXZZQTd3TlRBMWdBOEFOYkEyb0E5Z050QTIwQkJnTnhBM0VCQndOekEzTUJDQU4zQTNjQkNRTjZBM3NCQ2dOOUE0WUJEQU9JQTRvQkZnT01BNUVCR1FPVEE1UUJId09XQTVrQklRT2ZBNkFCSlFPaUE2SUJKd09rQTZRQktBT21BNmtCS1FPc0E3RUJMUU96QTdNQk13TzNBN2dCTkFPOUE3MEJOZ08vQThnQk53UExBOHdCUVFQT0E5RUJRd1BZQTlrQlJ3UGRBOTBCU1FQZkErVUJTZ1BxQStzQlVRUHZCQmNCVXdRWkJCa0JmQVFiQkNnQmZRUXdCREFCaXdRekJETUJqQVExQkRVQmpRUkJCRVlCamdSSkJFa0JsQVJMQkVzQmxRUk5CRTBCbGdSUEJGQUJsd1JWQkZnQm1RUmJCRnNCblFSZEJGNEJuZ1JnQkdBQm9BUmtCR1FCb1FSbUJHWUJvZ1JxQkdvQm93U3FCS29CcEFBQkFCUC9JQUFDQUZiLzVnRzYvOEFBQVFHNkFBNEFBd0FOQUJRQVFRQVNBR0VBRXdBQkFQWC85UUFCQU1NQURRQUNBTGYvd2dEREFCQUFBUURELytJQUFRREcvL0lBQVFEREFBNEFBZ0RKLyswQTlmL0FBQWtBdnYvbUFNSC82d0RDLytrQXhQL3dBTVgvNXdESi8rTUF5Ly9PQU16LzFBRE4vOXNBQlFEQi8rd0F3d0FQQU1YLzZnREovOFFBeS8vbkFBVUFTdi9wQU1ILzdnRERBQkFBeGYvc0FNbi9JQUFCQU1NQUR3QUZBTW4vNmdEcy8rNEE5ZityQVRQLzdBRlkvK3dBQVFEMS85VUFBUURKQUFzQURBQktBQXdBeFFBTEFNa0FEQUc2Lzc4QnZQL3VBY0QvN0FISS8rMEJ5di9zQWN6LzlRSE5BQTRCendBTkFkSUFEUUFCQVBYLzJBQUJBUFgvcWdBTEFPWC8xQUQxLzhrQkNQL2xBUi8vNHdFei84UUJQUC9oQVUzLzFBRk8vL1VCVC8vbkFWZi8wZ0ZZLzhrQUNBRGwvOGtBOWYvZkFRai83UUVmLytzQk0vL2ZBVC8vNlFGTy8vVUJXUC9nQUFnQTVmL21BUFgvMEFFei84NEJQUC9vQVUzLzV3RlAvKzBCVi8vbUFWai8wQUFMQU5nQUZBRGwvK0FBN0FBVEFUei80UUU5LytBQlFQL2hBVVgvNlFGTi85OEJULy9lQVZmLzN3RlovL0lBQlFBYi8vSUE1Zi94QVUzLzhnRlAvL0lCVi8veUFBd0EyQUFUQU9YLzVnRG0vL1FBN0FBU0FQWC81d0V6LytjQlBQL2xBVDMvNkFGTi8rWUJULy9tQVZmLzVnRlkvK2NBQWdEWS8rSUJWLy9rQUFJQTJQL2hBT3ovNUFBR0FPei83Z0QxLys0QkNQLzBBUi8vOFFFei8rOEJXUC92QUFRQTlmLzBBUWovOVFFei8vVUJXUC8xQUFZQTdBQVVBUFgvN1FENy8rSUJNLy90QVQzLzdRRlkvKzBBQlFFYi8rc0J2UC9yQWNELzZRSEkvK3NCeXYvckFCSUFTZ0FOQU1iL3F3REgvOEFBeS8vVkFPei9xZ0ViLytJQkh3QU1BVTRBQ3dGUUFBc0J1disvQWJ6LzdnSEEvK3dCeVAvdEFjci83QUhNLy9VQnpRQU9BYzhBRFFIU0FBMEFCZ0RzQUJRQTlmL3dBUUFBREFFei8vQUJQZi9tQVZqLzhBQUZBT3dBT2dEMS8rTUJNLy9pQVQzLzR3RlkvK01BQVFEcy8rOEFDQUQxLzdvQkNQL1BBUi8vMndFei8xQUJQZitkQVU3LzhBRlEvL0lCV1A5TUFBa0J2UC95QWNELzhnSEkvL0lCeXYveUFjMy93QUhPLyt3QnovL0hBZEQvMkFIUy83OEFBZ0hQLys0QjBQLzFBQUlCeVAvckFjci82d0FIQWNqLzd3SEsvL0FCemYrN0FjNy83QUhQLzdjQjBQL1ZBZEwvdEFBRUFjMy83Z0hQLy9FQjBmL3NBZEwvNmdBRUFjMy82UUhQLytzQjBQL3hBZEwvNVFBRUFjMy84Z0hQLy9FQjBQLzFBZEwvN2dBQ0FjOEFEUUhTQUEwQUN3QmIvNlFCdWdBVEFiei84d0hBLy9FQnlQL3lBY3IvOFFITi96c0J6di9hQWMvL1ZBSFEvNUVCMHY4L0FBTUFTZ0FQQUZnQU1nQmJBQkVBQ0FCYi8rVUF0Ly9MQU16LzVBRzZBQTBCdlAvdEFjRC82d0hJLyt3Qnl2L3NBQUlCRUFBTEFWZi81Z0FJQUZnQURnQ0IvNThBdy8vZUFNYi81UURZLzZnQTdQL0tBVXIvNHdHNi84WUFDUUFOQUE4QVFRQU1BRmIvNndCaEFBNEJ1di9MQWJ6LzZRSEEvK2NCeVAvbkFjci81d0FCQUZzQUN3QUpBQTBBRkFCQkFCRUFWdi9pQUdFQUV3RzYvN1FCdlAvWkFjRC8yUUhJLzlrQnl2L1pBQVFBRGYvbUFFSC85QUJoLys4QlFQL3RBQVVBeWYvcUFPei83Z0QxLzdBQk0vL3NBVmovN0FBU0FOai9yZ0RsQUJJQTZ2L2dBT3ovclFEdS85WUEvUC9mQVFELzBnRUcvK0FCRy8vT0FTdi8zUUV0LytJQk1mL2dBVGYvNEFFOS8ra0JRUC9hQVVyL3ZRRlUvOThCVndBUkFCd0FJLy9EQUZqLzd3QmIvOThBbWYvdUFMZi81UUM0LzlFQXd3QVJBTW4veUFEWUFCTUE1Zi9GQVBYL3lnRXovNThCUFA5UkFUMy9ld0UvLzhvQlFQL2RBVVgvOGdGTi8zVUJULy9LQVZmL1R3RlkvNHdCd1AvMUFjai85UUhOLzhjQnp2L3hBYy8velFIUS85MEIwdi9FQUFjQTlmL3dBUWovOFFFZi8vTUJNLy94QVU3Lzh3RlEvK2tCV1AvVEFBVUFTdi91QUZ2LzZnSFAvL0FCMFAvdEFkTC84QUFDQVBYLzlRRnQvN0FBQ1FESi8rb0E3UCs0QVBYLzZnRUkvL0FCSC8veEFUUC82d0ZPLy9VQldQL3NBVzMvc0FBQkFici82d0FHQUVvQURRREZBQXNBeHYvcUFNa0FEQURzLzhnQkcvL3hBRGdBQlAvWUFGYi90UUJiLzhjQWJmNjRBSHovS0FDQi8wMEFoditPQUluL29RQzMvNjRBdnY5K0FNTC9ad0RGLzRjQXh2OWxBTW4vbmdETC8yb0F6UDl6QU0zL1hnRFkvNlVBNVFBUEFPbi81QURxLzZBQTdQOTBBTzcvZ0FEMS83SUEvUDk5QVA3L2dBRUEvM2tCQnY5OUFRai9md0ViLzVnQkgvL2FBU3YvZ1FFdC81Z0JNZjk5QVRQL3N3RTMvNkFCUGY5OEFULy9tZ0ZBLzJ3QlJmL21BVXIvYXdGTy81SUJVUCt0QVZUL2V3RlhBQThCV1ArUkFWbi84Z0c2LzY4QnZQKzVBY0QvdVFISS83a0J5dis1QWN6L3ZBSE4vL0VCMFAveEFkSC83UUFDQU96L3lRRWIvKzRBRndDMy85UUF3Zi90QU1NQUVRREovK0FBeS8vbkFNei81UUROLys0QTJBQVNBT24vNlFEMS85Y0JNLy9YQVQzLzB3RS8vOVlCUVAvRkFVWC81d0ZOQUEwQlR3QU1BVmovMWdGWi8vSUJ2UC9wQWNELzV3SEkvK2NCeXYvcEFBRUJHLy94QUFJQTlmL0FBVzMvc0FBSkFPWC93d0QxLzg4Qk0vL09BVHovNXdFLy85OEJUZi9SQVUvLzdBRlgvNkFCV1AvUkFDNEFWdjl0QUZ2L2pBQnQvYjhBZlA1OUFJSCt2QUNHL3lzQWlmOUxBTGYvWVFDKy93OEF3djdvQU1YL0h3REcvdVVBeWY5R0FNdis3UURNL3YwQXpmN1pBTmovVWdEbEFBVUE2Zis5QU9yL1NRRHMvdjRBN3Y4VEFQWC9hQUQ4L3c0QS92OFRBUUQvQndFRy93NEJDUDhSQVJ2L1BBRWYvNndCSy84VkFTMy9QQUV4L3c0Qk0vOXFBVGYvU1FFOS93d0JQLzgvQVVEKzhRRkYvOEFCU3Y3dkFVNy9NUUZRLzE4QlZQOEtBVmNBQlFGWS96QUJXZi9WQUJNQVcvL0JBTGYveFFESi83UUE2Zi9YQVBYL3VRRUkvN0lCRy8vU0FSLy95QUV6LzZBQlBmL0ZBVVgvNUFGTy84d0JVUC9NQVZqL3l3RlovKzhCdlAvb0FjRC81Z0hJLytjQnl2L25BQWdBMkFBVkFPd0FGUUU4LytRQlBmL2xBVC8vNUFGTi8rTUJULy9pQVZmLzVBQWlBQXIvNGdBTkFCUUFEdi9QQUVFQUVnQksvK29BVnYvWUFGai82Z0JoQUJNQWJmK3VBSHovelFDQi82QUFodi9CQUluL3dBQzMvOUFBdS8vcUFMNy94Z0MvQUEwQXdmL3BBTUwvMWdERi8rZ0F4dis2QU1uLzZRREwvOHNBelAvYUFNMy94d0YxLzlNQnV2K3JBYnovelFIQS84c0J5UC9MQWNyL3l3SE4vL01CMFAvekFkSC83d0FKQUlILzN3QzAvL01BdHYvd0FNUC82Z0RZLzk4QTVmL2dBVmYvNEFHNi8rMEIwZi8xQUFFQUdBQUVBQUFBQndBcUFGUUFxZ1BjQkZvRXhBVUdBQUVBQndBRUFBd0FLZ0ExQURZQVB3QktBQW9BT1AvWUFOSC8yQURWLzlnQk12L1lBVHIvMkFMYi85Z0MzZi9ZQXQvLzJBT08vOWdFVGYvWUFCVUFPZ0FVQURzQUVnQTlBQllCR0FBVUFtWUFGZ0x0QUJJQzd3QVdBdkVBRmdOWUFCWURad0FXQTJvQUZnT2dBQklEb2dBU0E2UUFFZ09tQUJZRHR3QVVBNzhBRmdSQkFCWUVRd0FXQkVVQUZnUnFBQllBekFBUS94WUFFdjhXQUNYL1ZnQXUvdmdBT0FBVUFFWC8zZ0JILytzQVNQL3JBRW4vNndCTC8rc0FVLy9yQUZYLzZ3QlovK29BV3Yvb0FGMy82QUNULytzQW1QL3JBSnIvNmdDeC8xWUFzLzlXQUxyLzZ3QzgvK2dBeC8vckFNai82d0RLLytvQTBRQVVBTlVBRkFEMi8rc0JBdi9yQVF6L1ZnRVgvK3NCR2Yvb0FSMy82d0VoLytzQk1nQVVBVG4vNndFNkFCUUJTLy9yQVV6LzZ3RlcvK3NCYnY4V0FYTC9GZ0YyL3hZQmQvOFdBa3ovVmdKTi8xWUNUdjlXQWsvL1ZnSlEvMVlDVWY5V0FsTC9WZ0puLzk0Q2FQL2VBbW4vM2dKcS85NENhLy9lQW16LzNnSnQvOTRDYnYvckFtLy82d0p3LytzQ2NmL3JBbkwvNndKNC8rc0NlZi9yQW5yLzZ3SjcvK3NDZlAvckFuMy82Z0orLytvQ2YvL3FBb0QvNmdLQi8rZ0Nndi9vQW9QL1ZnS0UvOTRDaGY5V0FvYi8zZ0tILzFZQ2lQL2VBb3IvNndLTS8rc0Nqdi9yQXBELzZ3S1MvK3NDbFAvckFwYi82d0tZLytzQ212L3JBcHovNndLZS8rc0NvUC9yQXFMLzZ3S2svK3NDc3Y3NEFzYi82d0xJLytzQ3l2L3JBdHNBRkFMZEFCUUMzd0FVQXVMLzZnTGsvK29DNXYvcUF1ai82Z0xxLytvQzdQL3FBdkQvNkFOVC8xWURXLzlXQTJ2LzZ3TnYvK29EY2YvckEzUC82QU4yLytvRGQvL3JBM2ovNmdOLy92Z0RnLzlXQTQ0QUZBT1EvOTREa2YvckE1UC82d09WLytzRGx2L29BNWovNndPZi8rZ0RwLy9vQTYvL1ZnT3cvOTREcy8vckE3ai82QU81LytzRHZ2L3JBOEQvNkFQRi8xWUR4di9lQThmL1ZnUEkvOTREelAvckE4Ny82d1BQLytzRDJmL3JBOXYvNndQZC8rc0Q0Zi9vQStQLzZBUGwvK2dEN1AvckErLy9WZ1B3Lzk0RDhmOVdBL0wvM2dQei8xWUQ5UC9lQS9YL1ZnUDIvOTREOS85V0Evai8zZ1A1LzFZRCt2L2VBL3YvVmdQOC85NEQvZjlXQS83LzNnUC8vMVlFQVAvZUJBSC9WZ1FDLzk0RUEvOVdCQVQvM2dRRi8xWUVCdi9lQkFqLzZ3UUsvK3NFRFAvckJBNy82d1FRLytzRUV2L3JCQlQvNndRVy8rc0VIUC9yQkI3LzZ3UWcvK3NFSXYvckJDVC82d1FtLytzRUtQL3JCQ3IvNndRcy8rc0VMdi9yQkRELzZ3UXkvK3NFTlAvcUJEYi82Z1E0LytvRU92L3FCRHovNmdRKy8rb0VRUC9xQkVMLzZBUkUvK2dFUnYvb0JFMEFGQUFmQURqLzFRQTYvK1FBTy8vc0FEMy8zUURSLzlVQTFmL1ZBUmovNUFFeS85VUJPdi9WQW1iLzNRTGIvOVVDM2YvVkF0Ly8xUUx0Lyt3QzcvL2RBdkgvM1FOWS85MERaLy9kQTJyLzNRT08vOVVEb1Avc0E2TC83QU9rLyt3RHB2L2RBN2YvNUFPLy85MEVRZi9kQkVQLzNRUkYvOTBFVGYvVkJHci8zUUFhQURqL3NBQTYvKzBBUGYvUUFOSC9zQURWLzdBQkdQL3RBVEwvc0FFNi83QUNadi9RQXR2L3NBTGQvN0FDMy8rd0F1Ly8wQUx4LzlBRFdQL1FBMmYvMEFOcS85QURqdit3QTZiLzBBTzMvKzBEdi8vUUJFSC8wQVJELzlBRVJmL1FCRTMvc0FScS85QUFFQUF1Lys0QU9mL3VBbUwvN2dKai8rNENaUC91QW1YLzdnS3kvKzRDNGYvdUF1UC83Z0xsLys0QzUvL3VBdW4vN2dMci8rNERmLy91QkRQLzdnUTEvKzRBUndBR0FCQUFDd0FRQUVmLzZBQkkvK2dBU2Yvb0FFdi82QUJWLytnQWsvL29BSmovNkFDNi8rZ0F4Ly9vQU1qLzZBRDIvK2dCQXYvb0FSMy82QUVoLytnQk9mL29BVXYvNkFGTS8rZ0JWdi9vQVd3QUVBRnRBQkFCYndBUUFYQUFFQUZ4QUJBQ2J2L29BbS8vNkFKdy8rZ0NjZi9vQW5MLzZBS0svK2dDalAvb0FvNy82QUtRLytnQ2t2L29BcFQvNkFLVy8rZ0NtUC9vQXByLzZBS2MvK2dDbnYvb0FxRC82QUtpLytnQ3BQL29BMnYvNkFPUi8rZ0RsZi9vQTVqLzZBT29BQkFEcVFBUUE2d0FFQU96LytnRHVmL29BNzcvNkFQTS8rZ0R6di9vQTgvLzZBUGIvK2dEN1Avb0JBai82QVFLLytnRURQL29CQTcvNkFRUS8rZ0VFdi9vQkJULzZBUVcvK2dFS3Yvb0JDei82QVF1LytnRU12L29BQUVBVmdBRUFBQUFKZ0NtQVp3QitnSVVBbFlDekFQQ0JMZ0ZrZ1lzQ01ZS2pBdGVERlFPR2c1TURuNE8vQkRpRVZnU0toUk1GUUlXYUJjaUY2Z1lCaGpJR1Q0ZXdCbFFHcUljNEIwQ0hoZ2VsaDdBSHVvQUFRQW1BRThBV0FCYkFGOEFuQUMwQUxZQXR3QzRBTDhBd2dEREFNUUF5UURMQU13QXpRRFJBTlVBMXdEWUFOb0E0Z0RtQU9jQTZBRHBBT29BN0FEdUFQQUE5UUQzQVBvQS93RUNBU0VCYlFBOUFFZi83QUJJLyt3QVNmL3NBRXYvN0FCVi8rd0FrLy9zQUpqLzdBQzYvK3dBeC8vc0FNai83QUQyLyt3QkF2L3NBUjMvN0FFaC8rd0JPZi9zQVV2LzdBRk0vK3dCVnYvc0FtNy83QUp2Lyt3Q2NQL3NBbkgvN0FKeS8rd0Npdi9zQW96LzdBS08vK3dDa1Avc0FwTC83QUtVLyt3Q2x2L3NBcGovN0FLYS8rd0NuUC9zQXA3LzdBS2cvK3dDb3Yvc0FxVC83QU5yLyt3RGtmL3NBNVgvN0FPWS8rd0RzLy9zQTduLzdBTysvK3dEelAvc0E4Ny83QVBQLyt3RDIvL3NBK3ovN0FRSS8rd0VDdi9zQkF6LzdBUU8vK3dFRVAvc0JCTC83QVFVLyt3RUZ2L3NCQ3IvN0FRcy8rd0VMdi9zQkRMLzdBQVhBRlAvN0FFWC8rd0NlUC9zQW5uLzdBSjYvK3dDZS8vc0Fuei83QUxHLyt3Q3lQL3NBc3IvN0FOeC8rd0RkLy9zQTVQLzdBUFovK3dEM2Yvc0JCei83QVFlLyt3RUlQL3NCQ0wvN0FRay8rd0VKdi9zQkNqLzdBUXcvK3dBQmdBUS80UUFFditFQVc3L2hBRnkvNFFCZHYrRUFYZi9oQUFRQUM3LzdBQTUvK3dDWXYvc0FtUC83QUprLyt3Q1pmL3NBckwvN0FMaC8rd0M0Ly9zQXVYLzdBTG4vK3dDNmYvc0F1di83QU4vLyt3RU0vL3NCRFgvN0FBZEFBYi84Z0FMLy9JQVd2L3pBRjMvOHdDOC8vTUJHZi96QVd6LzhnRnQvL0lCYi8veUFYRC84Z0Z4Ly9JQ2dmL3pBb0wvOHdMdy8vTURjLy96QTViLzh3T2YvL01EcC8vekE2ai84Z09wLy9JRHJQL3lBN2ovOHdQQS8vTUQ0Zi96QStQLzh3UGwvL01FUXYvekJFVC84d1JHLy9NQVBRQW4vL01BSy8vekFEUC84d0ExLy9NQWcvL3pBSkwvOHdDWC8vTUFzdi96QU5MLzh3RUgvL01CRnYvekFSci84d0VjLy9NQkh2L3pBU0QvOHdFNC8vTUJWZi96QWlqLzh3SXAvL01DSy8vekFpei84d0pULy9NQ1hmL3pBbDcvOHdKZi8vTUNZUC96QW1ILzh3S0ovL01DaS8vekFvMy84d0tQLy9NQ25mL3pBcC8vOHdLaC8vTUNvLy96QXNYLzh3TEgvL01DeWYvekF2ci84d05YLy9NRFpQL3pBNHIvOHdPTi8vTUR1di96QTczLzh3UFkvL01EMnYvekE5ei84d1FiLy9NRUhmL3pCQi8vOHdRaC8vTUVJLy96QkNYLzh3UW4vL01FS2YvekJDdi84d1F0Ly9NRUwvL3pCREgvOHdTcS8vTUFQUUFuLytZQUsvL21BRFAvNWdBMS8rWUFnLy9tQUpMLzVnQ1gvK1lBc3YvbUFOTC81Z0VILytZQkZ2L21BUnIvNWdFYy8rWUJIdi9tQVNELzVnRTQvK1lCVmYvbUFpai81Z0lwLytZQ0svL21BaXovNWdKVC8rWUNYZi9tQWw3LzVnSmYvK1lDWVAvbUFtSC81Z0tKLytZQ2kvL21BbzMvNWdLUC8rWUNuZi9tQXAvLzVnS2gvK1lDby8vbUFzWC81Z0xILytZQ3lmL21BdnIvNWdOWC8rWURaUC9tQTRyLzVnT04vK1lEdXYvbUE3My81Z1BZLytZRDJ2L21BOXovNWdRYi8rWUVIZi9tQkIvLzVnUWgvK1lFSS8vbUJDWC81Z1FuLytZRUtmL21CQ3YvNWdRdC8rWUVMLy9tQkRILzVnU3EvK1lBTmdBbC8rUUFQUC9TQUQzLzB3Q3gvK1FBcy8va0FObi8wZ0VNLytRQ1RQL2tBazMvNUFKTy8rUUNULy9rQWxELzVBSlIvK1FDVXYva0FtYi8wd0tELytRQ2hmL2tBb2YvNUFMdi85TUM4Zi9UQTFQLzVBTlkvOU1EVy8va0EyZi8wd05vLzlJRGF2L1RBNFAvNUFPUC85SURwdi9UQTYvLzVBTy8vOU1Ed3YvU0E4WC81QVBILytRRDBQL1NBK3IvMGdQdi8rUUQ4Zi9rQS9QLzVBUDEvK1FEOS8va0Evbi81QVA3LytRRC9mL2tBLy8vNUFRQi8rUUVBLy9rQkFYLzVBUkIvOU1FUS8vVEJFWC8wd1JQLzlJRVYvL1NCR3IvMHdBbUFCRC9IZ0FTL3g0QUpmL05BTEgvelFDei84MEJEUC9OQVc3L0hnRnkveDRCZHY4ZUFYZi9IZ0pNLzgwQ1RmL05BazcvelFKUC84MENVUC9OQWxIL3pRSlMvODBDZy8vTkFvWC96UUtILzgwRFUvL05BMXYvelFPRC84MERyLy9OQThYL3pRUEgvODBENy8vTkEvSC96UVB6LzgwRDlmL05BL2YvelFQNS84MEQrLy9OQS8zL3pRUC8vODBFQWYvTkJBUC96UVFGLzgwQXBnQkgvOXdBU1AvY0FFbi8zQUJMLzl3QVVmL3pBRkwvOHdCVC85WUFWUC96QUZYLzNBQlovOTBBV3YvaEFGMy80UUNULzl3QW1QL2NBSnIvM1FDNi85d0F2UC9oQU1ELzh3REgvOXdBeVAvY0FNci8zUURyLy9NQTcvL3pBUEQvOHdEeS8vTUE4Ly96QVBULzh3RDIvOXdBOS8vekFQbi84d0Q2Ly9NQS9mL3pBUC8vOHdFQy85d0JCUC96QVJmLzFnRVovK0VCSGYvY0FTSC8zQUUxLy9NQk9mL2NBVVQvOHdGSi8vTUJTLy9jQVV6LzNBRlcvOXdDYnYvY0FtLy8zQUp3Lzl3Q2NmL2NBbkwvM0FKMy8vTUNlUC9XQW5uLzFnSjYvOVlDZS8vV0Fuei8xZ0o5LzkwQ2Z2L2RBbi8vM1FLQS85MENnZi9oQW9MLzRRS0svOXdDalAvY0FvNy8zQUtRLzl3Q2t2L2NBcFQvM0FLVy85d0NtUC9jQXByLzNBS2MvOXdDbnYvY0FxRC8zQUtpLzl3Q3BQL2NBci8vOHdMQi8vTUN3Ly96QXNULzh3TEcvOVlDeVAvV0Fzci8xZ0xpLzkwQzVQL2RBdWIvM1FMby85MEM2di9kQXV6LzNRTHcvK0VEYS8vY0EyMy84d052LzkwRGNmL1dBM1AvNFFOMi85MERkLy9XQTNqLzNRT1IvOXdEa3YvekE1UC8xZ09VLy9NRGxmL2NBNWIvNFFPWS85d0RtZi96QTU3Lzh3T2YvK0VEcC8vaEE2Ny84d096Lzl3RHRQL3pBN2ovNFFPNS85d0R2di9jQThELzRRUE0vOXdEenYvY0E4Ly8zQVBWLy9NRDEvL3pBOW4vMWdQYi85d0QzZi9XQStILzRRUGovK0VENWYvaEErbi84d1BzLzl3RUNQL2NCQXIvM0FRTS85d0VEdi9jQkJELzNBUVMvOXdFRlAvY0JCYi8zQVFjLzlZRUh2L1dCQ0QvMWdRaS85WUVKUC9XQkNiLzFnUW8vOVlFS3YvY0JDei8zQVF1Lzl3RU1QL1dCREwvM0FRMC85MEVOdi9kQkRqLzNRUTYvOTBFUFAvZEJENy8zUVJBLzkwRVF2L2hCRVQvNFFSRy8rRUVTdi96QkV6Lzh3UlcvL01FWS8vekJHWC84d1JuLy9NQWNRQUcvOW9BQy8vYUFFZi84QUJJLy9BQVNmL3dBRXYvOEFCVi8vQUFXZi92QUZyLzNBQmQvOXdBay8vd0FKai84QUNhLys4QXV2L3dBTHovM0FESC8vQUF5UC93QU1yLzd3RDIvL0FCQXYvd0FSbi8zQUVkLy9BQklmL3dBVG4vOEFGTC8vQUJUUC93QVZiLzhBRnMvOW9CYmYvYUFXLy8yZ0Z3LzlvQmNmL2FBbTcvOEFKdi8vQUNjUC93QW5ILzhBSnkvL0FDZmYvdkFuNy83d0ovLys4Q2dQL3ZBb0gvM0FLQy85d0Npdi93QW96LzhBS08vL0FDa1Avd0FwTC84QUtVLy9BQ2x2L3dBcGovOEFLYS8vQUNuUC93QXA3LzhBS2cvL0FDb3Yvd0FxVC84QUxpLys4QzVQL3ZBdWIvN3dMby8rOEM2di92QXV6Lzd3THcvOXdEYS8vd0EyLy83d056Lzl3RGR2L3ZBM2ovN3dPUi8vQURsZi93QTViLzNBT1kvL0FEbi8vY0E2Zi8zQU9vLzlvRHFmL2FBNnovMmdPei8vQUR1UC9jQTduLzhBTysvL0FEd1AvY0E4ei84QVBPLy9BRHovL3dBOXYvOEFQaC85d0Q0Ly9jQStYLzNBUHMvL0FFQ1Avd0JBci84QVFNLy9BRUR2L3dCQkQvOEFRUy8vQUVGUC93QkJiLzhBUXEvL0FFTFAvd0JDNy84QVF5Ly9BRU5QL3ZCRGIvN3dRNC8rOEVPdi92QkR6Lzd3USsvKzhFUVAvdkJFTC8zQVJFLzl3RVJ2L2NBRFFBQnYrZ0FBdi9vQUJaLy9FQVd2L0ZBRjMveFFDYS8vRUF2UC9GQU1yLzhRRVovOFVCYlArZ0FXMy9vQUZ2LzZBQmNQK2dBWEgvb0FKOS8vRUNmdi94QW4vLzhRS0EvL0VDZ2YvRkFvTC94UUxpLy9FQzVQL3hBdWIvOFFMby8vRUM2di94QXV6LzhRTHcvOFVEYi8veEEzUC94UU4yLy9FRGVQL3hBNWIveFFPZi84VURwLy9GQTZqL29BT3AvNkFEclArZ0E3ai94UVBBLzhVRDRmL0ZBK1AveFFQbC84VUVOUC94QkRiLzhRUTQvL0VFT3YveEJEei84UVErLy9FRVFQL3hCRUwveFFSRS84VUVSdi9GQUQwQVIvL25BRWovNXdCSi8rY0FTLy9uQUZYLzV3Q1QvK2NBbVAvbkFMci81d0RILytjQXlQL25BUGIvNXdFQy8rY0JIZi9uQVNILzV3RTUvK2NCUy8vbkFVei81d0ZXLytjQ2J2L25BbS8vNXdKdy8rY0NjZi9uQW5MLzV3S0svK2NDalAvbkFvNy81d0tRLytjQ2t2L25BcFQvNXdLVy8rY0NtUC9uQXByLzV3S2MvK2NDbnYvbkFxRC81d0tpLytjQ3BQL25BMnYvNXdPUi8rY0RsZi9uQTVqLzV3T3ovK2NEdWYvbkE3Ny81d1BNLytjRHp2L25BOC8vNXdQYi8rY0Q3UC9uQkFqLzV3UUsvK2NFRFAvbkJBNy81d1FRLytjRUV2L25CQlQvNXdRVy8rY0VLdi9uQkN6LzV3UXUvK2NFTXYvbkFIRUFCZ0FNQUFzQURBQkgvK2dBU1Avb0FFbi82QUJMLytnQVUvL3FBRlgvNkFCYUFBc0FYUUFMQUpQLzZBQ1kvK2dBdXYvb0FMd0FDd0RILytnQXlQL29BUGIvNkFFQy8rZ0JGLy9xQVJrQUN3RWQvK2dCSWYvb0FUbi82QUZMLytnQlRQL29BVmIvNkFGc0FBd0JiUUFNQVc4QURBRndBQXdCY1FBTUFtNy82QUp2LytnQ2NQL29BbkgvNkFKeS8rZ0NlUC9xQW5uLzZnSjYvK29DZS8vcUFuei82Z0tCQUFzQ2dnQUxBb3IvNkFLTS8rZ0Nqdi9vQXBELzZBS1MvK2dDbFAvb0FwYi82QUtZLytnQ212L29BcHovNkFLZS8rZ0NvUC9vQXFMLzZBS2svK2dDeHYvcUFzai82Z0xLLytvQzhBQUxBMnYvNkFOeC8rb0Rjd0FMQTNmLzZnT1IvK2dEay8vcUE1WC82QU9XQUFzRG1QL29BNThBQ3dPbkFBc0RxQUFNQTZrQURBT3NBQXdEcy8vb0E3Z0FDd081LytnRHZ2L29BOEFBQ3dQTS8rZ0R6di9vQTgvLzZBUFovK29EMi8vb0E5My82Z1BoQUFzRDR3QUxBK1VBQ3dQcy8rZ0VDUC9vQkFyLzZBUU0vK2dFRHYvb0JCRC82QVFTLytnRUZQL29CQmIvNkFRYy8rb0VIdi9xQkNELzZnUWkvK29FSlAvcUJDYi82Z1FvLytvRUt2L29CQ3ovNkFRdS8rZ0VNUC9xQkRMLzZBUkNBQXNFUkFBTEJFWUFDd0FNQUZ6LzdRQmUvKzBBN2YvdEF2UC83UUwxLyswQzkvL3RBNWYvN1FQRC8rMEQwZi90QSt2LzdRUlEvKzBFV1AvdEFBd0FYUC95QUY3LzhnRHQvL0lDOC8veUF2WC84Z0wzLy9JRGwvL3lBOFAvOGdQUi8vSUQ2Ly95QkZELzhnUlkvL0lBSHdCYS8vUUFYUC95QUYzLzlBQmUvL01BdlAvMEFPMy84Z0VaLy9RQ2dmLzBBb0wvOUFMdy8vUUM4Ly96QXZYLzh3TDMvL01EYy8vMEE1Yi85QU9YLy9JRG4vLzBBNmYvOUFPNC8vUUR3UC8wQThQLzhnUFIvL0lENGYvMEErUC85QVBsLy9RRDYvL3lCRUwvOUFSRS8vUUVSdi8wQkZELzhnUlkvL0lBZVFBRy84b0FDLy9LQURqLzBnQTYvOVFBUFAvMEFEMy8wd0JSLzlFQVV2L1JBRlQvMFFCYS8rWUFYUC92QUYzLzVnQzgvK1lBd1AvUkFOSC8wZ0RWLzlJQTJmLzBBTjMvN1FEZy8rRUE2Ly9SQU8zLzd3RHYvOUVBOFAvUkFQTC8wUUR6LzlFQTlQL1JBUGYvMFFENS85RUErdi9SQVAzLzBRRC8vOUVCQlAvUkFSai8xQUVaLytZQk12L1NBVFgvMFFFNi85SUJSUC9SQVVuLzBRRnMvOG9CYmYvS0FXLy95Z0Z3LzhvQmNmL0tBbWIvMHdKMy85RUNnZi9tQW9MLzVnSy8vOUVDd2YvUkFzUC8wUUxFLzlFQzIvL1NBdDMvMGdMZi85SUM3Ly9UQXZELzVnTHgvOU1EV1AvVEEyZi8wd05vLy9RRGF2L1RBMjMvMFFOei8rWURndi90QTQ3LzBnT1AvL1FEa3YvUkE1VC8wUU9XLytZRGwvL3ZBNW4vMFFPZS85RURuLy9tQTZiLzB3T24vK1lEcVAvS0E2bi95Z09zLzhvRHJ2L1JBN1QvMFFPMy85UUR1UC9tQTcvLzB3UEEvK1lEd3YvMEE4UC83d1BRLy9RRDBmL3ZBOVgvMFFQWC85RUQ0UC90QStILzVnUGkvKzBENC8vbUErVC83UVBsLytZRDV2L2hBK24vMFFQcS8vUUQ2Ly92QkVILzB3UkMvK1lFUS8vVEJFVC81Z1JGLzlNRVJ2L21CRXIvMFFSTS85RUVUZi9TQkUvLzlBUlEvKzhFVWYvaEJGUC80UVJXLzlFRVYvLzBCRmovN3dSai85RUVaZi9SQkdmLzBRUnEvOU1BSFFBNC83NEFXdi92QUYzLzd3QzgvKzhBMGYrK0FOWC92Z0VaLys4Qk12KytBVHIvdmdLQi8rOENndi92QXR2L3ZnTGQvNzRDMy8rK0F2RC83d056Lys4RGp2KytBNWIvN3dPZi8rOERwLy92QTdqLzd3UEEvKzhENGYvdkErUC83d1BsLys4RVF2L3ZCRVQvN3dSRy8rOEVUZisrQURRQU9QL21BRHIvNXdBOC8vSUFQZi9uQUZ6LzhRRFIvK1lBMWYvbUFObi84Z0RkLys0QTRQL29BTzMvOFFFWS8rY0JNdi9tQVRyLzVnSm0vK2NDMi8vbUF0My81Z0xmLytZQzcvL25BdkgvNXdOWS8rY0RaLy9uQTJqLzhnTnEvK2NEZ3YvdUE0Ny81Z09QLy9JRGwvL3hBNmIvNXdPMy8rY0R2Ly9uQThMLzhnUEQvL0VEMFAveUE5SC84UVBnLys0RDR2L3VBK1QvN2dQbS8rZ0Q2di95QSt2LzhRUkIvK2NFUS8vbkJFWC81d1JOLytZRVQvL3lCRkQvOFFSUi8rZ0VVLy9vQkZmLzhnUlkvL0VFYXYvbkFJZ0FKUUFRQUNmLzZBQXIvK2dBTS8vb0FEWC82QUE0LytBQU92L2dBRDMvM3dDRC8rZ0Frdi9vQUpmLzZBQ3hBQkFBc3Yvb0FMTUFFQURSLytBQTB2L29BTk1BRUFEVi8rQUEzQUFRQU9ELzRRRHhBQkFBK1AvZ0FRTUFFQUVILytnQkRBQVFBUmIvNkFFWS8rQUJHdi9vQVJ6LzZBRWUvK2dCSVAvb0FUTC80QUU0LytnQk92L2dBVkVBRUFGVi8rZ0NLUC9vQWluLzZBSXIvK2dDTFAvb0Frd0FFQUpOQUJBQ1RnQVFBazhBRUFKUUFCQUNVUUFRQWxJQUVBSlQvK2dDWGYvb0FsNy82QUpmLytnQ1lQL29BbUgvNkFKbS85OENnd0FRQW9VQUVBS0hBQkFDaWYvb0Fvdi82QUtOLytnQ2ovL29BcDMvNkFLZi8rZ0NvZi9vQXFQLzZBTEYvK2dDeC8vb0Fzbi82QUxiLytBQzNmL2dBdC8vNEFMdi85OEM4Zi9mQXZyLzZBTlRBQkFEVi8vb0Exai8zd05iQUJBRFpQL29BMmYvM3dOcS85OERnd0FRQTRyLzZBT04vK2dEanYvZ0E2Yi8zd092QUJBRHQvL2dBN3IvNkFPOS8rZ0R2Ly9mQThVQUVBUEhBQkFEMlAvb0E5ci82QVBjLytnRDV2L2hBK2YvNEFQdEFCQUQ3Z0FRQSs4QUVBUHhBQkFEOHdBUUEvVUFFQVAzQUJBRCtRQVFBL3NBRUFQOUFCQUQvd0FRQkFFQUVBUURBQkFFQlFBUUJCdi82QVFkLytnRUgvL29CQ0gvNkFRai8rZ0VKZi9vQkNmLzZBUXAvK2dFSy8vb0JDMy82QVF2LytnRU1mL29CRUgvM3dSRC85OEVSZi9mQkUzLzRBUlIvK0VFVXYvZ0JGUC80UVJVLytBRWFBQVFCR2tBRUFScS85OEVxdi9vQUMwQU9QL3hBRHIvOUFBOC8vUUFQZi93QU5ILzhRRFQvL1VBMWYveEFObi85QURjLy9VQTNmL3pBUmovOUFFeS8vRUJPdi94QVZILzlRSm0vL0FDMi8veEF0My84UUxmLy9FQzcvL3dBdkgvOEFOWS8vQURaLy93QTJqLzlBTnEvL0FEZ3YvekE0Ny84UU9QLy9RRHB2L3dBN2YvOUFPLy8vQUR3di8wQTlELzlBUGcvL01ENHYvekErVC84d1BxLy9RRDdmLzFCRUgvOEFSRC8vQUVSZi93QkUzLzhRUlAvL1FFVi8vMEJHai85UVJxLy9BQVdRQWxBQThBT1AvbUFEci81Z0E4QUE0QVBmL21BTEVBRHdDekFBOEEwZi9tQU5NQURnRFYvK1lBMlFBT0FOd0FEZ0RkQUFzQTRQL2xBUEVBRHdENC8rZ0JBd0FQQVF3QUR3RVkvK1lCTXYvbUFUci81Z0ZSQUE0Q1RBQVBBazBBRHdKT0FBOENUd0FQQWxBQUR3SlJBQThDVWdBUEFtYi81Z0tEQUE4Q2hRQVBBb2NBRHdMYi8rWUMzZi9tQXQvLzVnTHYvK1lDOGYvbUExTUFEd05ZLytZRFd3QVBBMmYvNWdOb0FBNERhdi9tQTRJQUN3T0RBQThEanYvbUE0OEFEZ09tLytZRHJ3QVBBN2YvNWdPLy8rWUR3Z0FPQThVQUR3UEhBQThEMEFBT0ErQUFDd1BpQUFzRDVBQUxBK2IvNVFQbi8rZ0Q2Z0FPQSswQURnUHVBQThEN3dBUEEvRUFEd1B6QUE4RDlRQVBBL2NBRHdQNUFBOEQrd0FQQS8wQUR3UC9BQThFQVFBUEJBTUFEd1FGQUE4RVFmL21CRVAvNWdSRi8rWUVUZi9tQkU4QURnUlIvK1VFVXYvb0JGUC81UVJVLytnRVZ3QU9CR2dBRGdScEFBOEVhdi9tQUM0QU9QL2pBRHovNVFBOS8rUUEwZi9qQU5QLzVRRFYvK01BMmYvbEFOei81UURkLytrQThmL3FBUVAvNmdFeS8rTUJPdi9qQVZILzVRSm0vK1FDMi8vakF0My80d0xmLytNQzcvL2tBdkgvNUFOWS8rUURaLy9rQTJqLzVRTnEvK1FEZ3YvcEE0Ny80d09QLytVRHB2L2tBNy8vNUFQQy8rVUQwUC9sQStELzZRUGkvK2tENVAvcEErci81UVB0LytVRDd2L3FCRUgvNUFSRC8rUUVSZi9rQkUzLzR3UlAvK1VFVi8vbEJHai81UVJwLytvRWF2L2tBQ0VBT1AvaUFEei81QURSLytJQTAvL2tBTlgvNGdEWi8rUUEzUC9rQU4zLzZRRHgvK3NCQS8vckFUTC80Z0U2LytJQlVmL2tBdHYvNGdMZC8rSUMzLy9pQTJqLzVBT0MvK2tEanYvaUE0Ly81QVBDLytRRDBQL2tBK0QvNlFQaS8ra0Q1UC9wQStyLzVBUHQvK1FEN3YvckJFMy80Z1JQLytRRVYvL2tCR2ovNUFScC8rc0FGd0E0LytzQVBmL3pBTkgvNndEVi8rc0JNdi9yQVRyLzZ3Sm0vL01DMi8vckF0My82d0xmLytzQzcvL3pBdkgvOHdOWS8vTURaLy96QTJyLzh3T08vK3NEcHYvekE3Ly84d1JCLy9NRVEvL3pCRVgvOHdSTi8rc0Vhdi96QURBQVVmL3ZBRkwvN3dCVS8rOEFYUC93QU1ELzd3RHIvKzhBN2Yvd0FPLy83d0R3Lys4QTh2L3ZBUFAvN3dEMC8rOEE5Ly92QVBuLzd3RDYvKzhBL2YvdkFQLy83d0VFLys4Qk5mL3ZBVVQvN3dGSi8rOENkLy92QXIvLzd3TEIvKzhDdy8vdkFzVC83d050Lys4RGt2L3ZBNVQvN3dPWC8vQURtZi92QTU3Lzd3T3UvKzhEdFAvdkE4UC84QVBSLy9BRDFmL3ZBOWYvN3dQcC8rOEQ2Ly93QkVyLzd3Uk0vKzhFVVAvd0JGYi83d1JZLy9BRVkvL3ZCR1gvN3dSbi8rOEFIUUFHLy9JQUMvL3lBRnIvOVFCZC8vVUF2UC8xQVJuLzlRRnMvL0lCYmYveUFXLy84Z0Z3Ly9JQmNmL3lBb0gvOVFLQy8vVUM4UC8xQTNQLzlRT1cvL1VEbi8vMUE2Zi85UU9vLy9JRHFmL3lBNnovOGdPNC8vVUR3UC8xQStILzlRUGovL1VENWYvMUJFTC85UVJFLy9VRVJ2LzFBQVFBK1AvdEErZi83UVJTLyswRVZQL3RBRlFBUi8vd0FFai84QUJKLy9BQVMvL3dBRlAvNndCVi8vQUFrLy93QUpqLzhBQzYvL0FBeC8vd0FNai84QUQyLy9BQkF2L3dBUmYvNndFZC8vQUJJZi93QVRuLzhBRkwvL0FCVFAvd0FWYi84QUp1Ly9BQ2IvL3dBbkQvOEFKeC8vQUNjdi93QW5qLzZ3SjUvK3NDZXYvckFudi82d0o4LytzQ2l2L3dBb3ovOEFLTy8vQUNrUC93QXBMLzhBS1UvL0FDbHYvd0Fwai84QUthLy9BQ25QL3dBcDcvOEFLZy8vQUNvdi93QXFULzhBTEcvK3NDeVAvckFzci82d05yLy9BRGNmL3JBM2YvNndPUi8vQURrLy9yQTVYLzhBT1kvL0FEcy8vd0E3bi84QU8rLy9BRHpQL3dBODcvOEFQUC8vQUQyZi9yQTl2LzhBUGQvK3NEN1Avd0JBai84QVFLLy9BRURQL3dCQTcvOEFRUS8vQUVFdi93QkJULzhBUVcvL0FFSFAvckJCNy82d1FnLytzRUl2L3JCQ1QvNndRbS8rc0VLUC9yQkNyLzhBUXMvL0FFTHYvd0JERC82d1F5Ly9BQWp3QUdBQTBBQ3dBTkFFWC84QUJILzdBQVNQK3dBRW4vc0FCTC83QUFVLy9XQUZYL3NBQmFBQXNBWFFBTEFKUC9zQUNZLzdBQXV2K3dBTHdBQ3dESS83QUE4Zit2QVBiL3NBRUMvN0FCQS8rdkFSZi8xZ0VaQUFzQkhmK3dBU0gvc0FFNS83QUJTLyt3QVV6L3NBRlcvN0FCYkFBTkFXMEFEUUZ2QUEwQmNBQU5BWEVBRFFKbi8vQUNhUC93QW1uLzhBSnEvL0FDYS8vd0Ftei84QUp0Ly9BQ2J2K3dBbS8vc0FKdy83QUNjZit3QW5ML3NBSjQvOVlDZWYvV0Fuci8xZ0o3LzlZQ2ZQL1dBb0VBQ3dLQ0FBc0NoUC93QW9iLzhBS0kvL0FDaXYrd0Fvei9zQUtPLzdBQ2tQK3dBcEwvc0FLVS83QUNsdit3QXBqL3NBS2EvN0FDblArd0FwNy9zQUtnLzdBQ292K3dBcVQvc0FMRy85WUN5UC9XQXNyLzFnTHdBQXNEYS8rd0EzSC8xZ056QUFzRGQvL1dBNUQvOEFPUi83QURrLy9XQTVYL3NBT1dBQXNEbVArd0E1OEFDd09uQUFzRHFBQU5BNmtBRFFPc0FBMERzUC93QTdQL3NBTzRBQXNEdWYrd0E3Ny9zQVBBQUFzRHh2L3dBOGovOEFQTS83QUR6dit3QTgvL3NBUFovOVlEMi8rd0E5My8xZ1BoQUFzRDR3QUxBK1VBQ3dQcy83QUQ3dit2QS9ELzhBUHkvL0FEOVAvd0EvYi84QVA0Ly9BRCt2L3dBL3ovOEFQKy8vQUVBUC93QkFMLzhBUUUvL0FFQnYvd0JBai9zQVFLLzdBRURQK3dCQTcvc0FRUS83QUVFdit3QkJUL3NBUVcvN0FFSFAvV0JCNy8xZ1FnLzlZRUl2L1dCQ1QvMWdRbS85WUVLUC9XQkNyL3NBUXMvN0FFTHYrd0JERC8xZ1F5LzdBRVFnQUxCRVFBQ3dSR0FBc0VhZit2QUFnQThRQVFBUGovOEFFREFCQUQ1Ly93QSs0QUVBUlMvL0FFVlAvd0JHa0FFQUJGQUVjQURBQklBQXdBU1FBTUFFc0FEQUJWQUF3QWt3QU1BSmdBREFDNkFBd0F4d0FNQU1nQURBRHhBQmdBOWdBTUFQai85d0VDQUF3QkF3QVlBUjBBREFFaEFBd0JPUUFNQVVzQURBRk1BQXdCVmdBTUFtNEFEQUp2QUF3Q2NBQU1BbkVBREFKeUFBd0NpZ0FNQW93QURBS09BQXdDa0FBTUFwSUFEQUtVQUF3Q2xnQU1BcGdBREFLYUFBd0NuQUFNQXA0QURBS2dBQXdDb2dBTUFxUUFEQU5yQUF3RGtRQU1BNVVBREFPWUFBd0Rzd0FNQTdrQURBTytBQXdEekFBTUE4NEFEQVBQQUF3RDJ3QU1BK2YvOXdQc0FBd0Q3Z0FZQkFnQURBUUtBQXdFREFBTUJBNEFEQVFRQUF3RUVnQU1CQlFBREFRV0FBd0VLZ0FNQkN3QURBUXVBQXdFTWdBTUJGTC85d1JVLy9jRWFRQVlBQjhBV3YvMEFGei84QUJkLy9RQXZQLzBBTzMvOEFEeC8vTUJBLy96QVJuLzlBS0IvL1FDZ3YvMEF2RC85QU56Ly9RRGx2LzBBNWYvOEFPZi8vUURwLy8wQTdqLzlBUEEvL1FEdy8vd0E5SC84QVBoLy9RRDQvLzBBK1gvOUFQci8vQUQ3di96QkVMLzlBUkUvL1FFUnYvMEJGRC84QVJZLy9BRWFmL3pBQW9BQnYvV0FBdi8xZ0ZzLzlZQmJmL1dBVy8vMWdGdy85WUJjZi9XQTZqLzFnT3AvOVlEclAvV0FBb0FCdi8xQUF2LzlRRnMvL1VCYmYvMUFXLy85UUZ3Ly9VQmNmLzFBNmovOVFPcC8vVURyUC8xQUNFQVRBQWdBRThBSUFCUUFDQUFVLytBQUZmL2tBRVgvNEFDZVArQUFubi9nQUo2LzRBQ2UvK0FBbnovZ0FMRy80QUN5UCtBQXNyL2dBTFMvNUFDMVArUUF0Yi9rQUxZLzVBQzJ2K1FBM0gvZ0FOMy80QURrLytBQTVyL2tBUFovNEFEM2YrQUJCei9nQVFlLzRBRUlQK0FCQ0wvZ0FRay80QUVKditBQkNqL2dBUXcvNEFBQWdlS0FBUUFBQXBlRWI0QUlRQWRBQUFBRWYvTy80OEFFdi8xLysvL2lQLzAvN3YvZi8vMUFBei9xZitpLzhrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rVUFBQUFBLytqL3lRQUEvL01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSQUFELzVRQVJBQUFBQUFBQUFBQUFBUC9qQUFBQUFBQUEvK1QvNUFBQUFCSUFFUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELzRRQUFBQUFBQUFBQUFBQUFBQUFBQUFELzVRQUFBQUQvNnYvVkFBQUFBUC9yLytyL212L3BBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvK01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rWUFBQUFBQUFBQUFBQUEvKzBBQUFBVS8rOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC83UUFBQUFBQUFBQUFBQUFBQUFBQUFBRC95Lys0LzN6L2Z2L2tBQUFBQVArZEFBOEFFUCtoLzhRQUVBQVFBQUFBQVAreEFBRC9KZ0FBLzUzL3MvOFkvNVAvOFArUC80ei9FQUFBLzVML2N2OE0vdy8vdlFBQUFBRC9SQUFGQUFmL1MvK0dBQWNBQndBQUFBRC9QZ0FBL25vQUFQOUUvMnIrWXY4ei85SC9MUDhuQUFBQUFBQUFBQUFBQVAvWUFBQUFBQUFBLyt3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvN0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvWS82TUFBUC9oQUFBQUFQL2xBQUFBQVAvcEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rWUFBUC9BLytrQUFBQUFBQUFBQUFBQUFBRC9ld0FBQUFEL3YvL0svckFBQVA5eC91My8xQUFBLzFIL0VRQUFBQUFBRXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC9KQUE4QUFQL1pBQUFBQUFBQS8vTUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8zYi80ZjY4LytiLzh3QUFBQUFBQUFBQS8vVUFBUDg0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC9xQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvOVFBQUFBRC84d0FBQUFELzBnQUFBQUQvNUFBQUFBQUFBQUFBQUFEL3RRQUEveDhBQVAvVUFBRC8yd0FBQUFELzBnQUFBQUFBQUFBUi8rSC8wUUFSLytjQUFBQUEvK3NBQUFBQS8rc0FBQUFPQUFBQUFBQUFBQUFBQUFBQUFBRC81Z0FBLzlJQUFBQUFBQUFBQUFBQUFBQUFBUC9zQUFBQUFQL2ovNkFBQVArL0FCRUFFZi9aLytJQUVnQVNBQUFBQVAraUFBMy9MUUFBLzcvLzZmL00vOWovOFArMy84Yi9vQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC80UUFBQUE3LzdRQUFBQUFBQUFBQUFBRC8xUUFBLzRVQUFQL2hBQUQveEFBQUFBRC8zd0FBQUFBQUFBQUEvK1VBQUFBQS8rWUFBQUFBLytzQUFBQUEvKzBBQUFBQUFBQUFBQUFBQUEwQUFBQUFBQUQvNndBQUFBQUFBQUFBQUFBQUFBQUFBQUQveWdBQS8rbi91Ly9wQUFBQUFQKzlBQUFBRWdBQUFBQUFBQUFTQUFBQUFQK2xBQUQrYlFBQS83MEFBUCtKLzVvQUFQK1IvOUlBQUFBQUFBRC84UUFBQUFBQUFBQUEvNzBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvMUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzFBQUQvOGdBQUFBRC80d0FBQUFBQUFBQUEvL0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvOFFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvOHdBQUFBQUFBQUFBLy9JQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQK1lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC94QUFELzhBQUFBQUQvZUFBQUFBQUFBQUFBLy9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELzZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvOWNBQUFBQUFBLy84UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLzVVQUFQL3pBQUFBQUFBQUFBRC84UUFBQUFBQUFBQUFBQklBQUFBQUFBQUFBQUFRLyt3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQK0ZBQUQvN1FBQUFBQUFBQUFBLzlnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQL3NBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVArVi84TUFBQUFBQUFBQUFBQUFBQUFBQUFBQS80Z0FBQUFBQUFEL3hRQUFBQUQvN0FBQS84Ny9zQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC9WZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvL1VBQUFBQUFBQUFBQUFBLzhBQUFBQUEvdlVBQUFBQS84ai9yZi9uLytzQUFQL3dBQUFBQUFBQS84a0FBQUFBQUFBQUFBQUFBQUFBQUFBQS85My8yUUFBQUFBQUFQOTVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC8xQUFBQUFBQUFBQUFBQUFBQUFBSUFlQUFHQUFZQUFBQUxBQXNBQVFBUUFCQUFBZ0FTQUJJQUF3QWxBQ2tBQkFBc0FEUUFDUUE0QUQ0QUVnQkZBRWNBR1FCSkFFa0FIQUJNQUV3QUhRQlJBRlFBSGdCV0FGWUFJZ0JhQUZvQUl3QmNBRjRBSkFDS0FJb0FKd0N3QUxNQUtBQzhBTHdBTEFEQUFNQUFMUURHQU1ZQUxnRFRBTlFBTHdEV0FOWUFNUURaQU5rQU1nRGJBTjBBTXdEZkFOOEFOZ0RoQU9FQU53RGpBT01BT0FEbEFPVUFPUURyQU9zQU9nRHRBTzBBT3dEMkFQWUFQQUQ3QVBzQVBRRDlBUDRBUGdFREFRUUFRQUVKQVFrQVFnRU1BUXdBUXdFWEFSa0FSQUVyQVMwQVJ3RXdBVEFBU2dFeUFUSUFTd0ZKQVVrQVRBRnNBWElBVFFGMkFYY0FWQUlvQWlnQVZnSXFBaXNBVndKSEFrZ0FXUUpLQWtvQVd3Sk1BbklBWEFKM0Fud0Fnd0tCQXBFQWlRS1RBcHdBbWdLbEFxY0FwQUtwQXFrQXB3S3JBcXNBcUFLdEFxMEFxUUt2QXE4QXFnS3lBcklBcXdLMEFyUUFyQUsyQXJZQXJRSzRBcmdBcmdLNkFyb0Fyd0s4QXJ3QXNBSytBc29Bc1FMTUFzd0F2Z0xPQXM0QXZ3TFFBdEFBd0FMYkF0c0F3UUxkQXQwQXdnTGZBdDhBd3dMaEF1RUF4QUxqQXVNQXhRTGxBdVVBeGdMbkF1Y0F4d0xwQXVrQXlBTHJBdXNBeVFMdEF1MEF5Z0x2QXZjQXl3TlRBMWdBMUFOYkEyb0EyZ050QTIwQTZnTnhBM0VBNndOekEzTUE3QU4zQTNjQTdRTjZBM3NBN2dOOUE0WUE4QU9JQTRvQStnT01BNUVBL1FPVEE1a0JBd09mQTZBQkNnT2lBNklCREFPa0E2UUJEUU9tQTZrQkRnT3NBN0VCRWdPekE3TUJHQU8zQTdnQkdRTzlBOGdCR3dQTEE4d0JKd1BPQTlFQktRUFlBOWtCTFFQZEE5MEJMd1BmQStVQk1BUHFBK3NCTndQdkJCY0JPUVFaQkJrQllnUWJCQ2dCWXdRd0JEQUJjUVF6QkRNQmNnUTFCRFVCY3dSQkJFWUJkQVJKQkVrQmVnUkxCRXNCZXdSTkJFMEJmQVJQQkZBQmZRUlZCRmdCZndSYkJGc0Jnd1JkQkY0QmhBUmdCR0FCaGdSa0JHUUJod1JtQkdZQmlBUnFCR29CaVFTcUJLb0JpZ0FDQVRvQUJnQUdBQjBBQ3dBTEFCMEFFQUFRQUI0QUVnQVNBQjRBSmdBbUFBRUFKd0FuQUFRQUtBQW9BQU1BS1FBcEFBVUFMQUF0QUFJQUxnQXVBQXdBTHdBdkFBa0FNQUF3QUFvQU1RQXlBQUlBTXdBekFBTUFOQUEwQUFzQU9BQTRBQVlBT1FBNUFBd0FPZ0E2QUEwQU93QTdBQkFBUEFBOEFBNEFQUUE5QUE4QVBnQStBQkVBUlFCRkFCTUFSZ0JHQUJVQVJ3QkhBQlFBU1FCSkFCWUFUQUJNQUJjQVVRQlNBQmNBVXdCVEFCZ0FWQUJVQUJVQVZnQldBQm9BV2dCYUFCa0FYQUJjQUJzQVhRQmRBQmtBWGdCZUFCd0FpZ0NLQUJVQXNBQ3dBQWNBc2dDeUFBTUF2QUM4QUJrQXdBREFBQmNBeGdER0FCVUEwd0RVQUI4QTFnRFdBQUlBMlFEWkFBNEEyd0RjQUFJQTNRRGRBQklBM3dEZkFBSUE0UURoQUFJQTR3RGpBQjhBNVFEbEFCOEE2d0RyQUFnQTdRRHRBQnNBOWdEMkFCVUErd0Q3QUNBQS9RRDlBQ0FBL2dEK0FCVUJBd0VFQUNBQkNRRUpBQ0FCRndFWEFCZ0JHQUVZQUEwQkdRRVpBQmtCS3dFckFCVUJMQUVzQUFjQkxRRXRBQWdCTUFFd0FBa0JNZ0V5QUFrQlNRRkpBQWdCYkFGdEFCMEJiZ0Z1QUI0QmJ3RnhBQjBCY2dGeUFCNEJkZ0YzQUI0Q0tBSW9BQVFDS2dJckFBTUNSd0pJQUFNQ1NnSktBQVlDVXdKVEFBUUNWQUpYQUFVQ1dBSmNBQUlDWFFKaEFBTUNZZ0psQUF3Q1pnSm1BQThDWndKdEFCTUNiZ0p1QUJRQ2J3SnlBQllDZHdKM0FCY0NlQUo4QUJnQ2dRS0NBQmtDaEFLRUFCTUNoZ0tHQUJNQ2lBS0lBQk1DaVFLSkFBUUNpZ0tLQUJRQ2l3S0xBQVFDakFLTUFCUUNqUUtOQUFRQ2pnS09BQlFDandLUEFBUUNrQUtRQUJRQ2tRS1JBQU1Da3dLVEFBVUNsQUtVQUJZQ2xRS1ZBQVVDbGdLV0FCWUNsd0tYQUFVQ21BS1lBQllDbVFLWkFBVUNtZ0thQUJZQ213S2JBQVVDbkFLY0FCWUNwUUtsQUFJQ3BnS21BQmNDcHdLbkFBSUNxUUtwQUFJQ3F3S3JBQUlDclFLdEFBSUNyd0t2QUFJQ3NnS3lBQXdDdEFLMEFBa0N0Z0syQUFvQ3VBSzRBQW9DdWdLNkFBb0N2QUs4QUFvQ3ZnSytBQUlDdndLL0FCY0N3QUxBQUFJQ3dRTEJBQmNDd2dMQ0FBSUN3d0xFQUJjQ3hRTEZBQU1DeGdMR0FCZ0N4d0xIQUFNQ3lBTElBQmdDeVFMSkFBTUN5Z0xLQUJnQ3pBTE1BQm9DemdMT0FCb0MwQUxRQUJvQzJ3TGJBQVlDM1FMZEFBWUMzd0xmQUFZQzRRTGhBQXdDNHdMakFBd0M1UUxsQUF3QzV3TG5BQXdDNlFMcEFBd0M2d0xyQUF3QzdRTHRBQkFDN3dMdkFBOEM4QUx3QUJrQzhRTHhBQThDOGdMeUFCRUM4d0x6QUJ3QzlBTDBBQkVDOVFMMUFCd0M5Z0wyQUJFQzl3TDNBQndEVkFOVUFBVURWUU5XQUFJRFZ3TlhBQU1EV0FOWUFBOERYQU5jQUFFRFhRTmRBQVVEWGdOZUFCRURYd05nQUFJRFlRTmhBQWtEWWdOakFBSURaQU5rQUFNRFpRTmxBQXNEWmdObUFBWURad05uQUE4RGFBTm9BQTREYVFOcEFBSURhZ05xQUE4RGJRTnRBQmNEY1FOeEFCZ0Rjd056QUJrRGR3TjNBQmdEZWdONkFBVURld043QUFjRGZRTitBQUlEZndOL0FBd0RnQU9CQUFrRGdnT0NBQklEaEFPRUFBRURoUU9GQUFjRGhnT0dBQVVEaUFPSkFBSURpZ09LQUFNRGpBT01BQXNEalFPTkFBUURqZ09PQUFZRGp3T1BBQTREa0FPUUFCTURrUU9SQUJZRGt3T1RBQmdEbEFPVUFCVURsUU9WQUJRRGxnT1dBQmtEbHdPWEFCc0RtQU9ZQUJZRG1RT1pBQWdEbndPZkFCa0RvQU9nQUJBRG9nT2lBQkFEcEFPa0FCQURwZ09tQUE4RHB3T25BQmtEcUFPcEFCMERyQU9zQUIwRHJRT3RBQUlEcmdPdUFCY0RzQU93QUJNRHNRT3hBQVVEc3dPekFCWUR0d08zQUEwRHVBTzRBQmtEdlFPOUFBUUR2Z08rQUJRRHZ3Ty9BQThEd0FQQUFCa0R3UVBCQUFJRHdnUENBQTREd3dQREFCc0R4QVBFQUFJRHhnUEdBQk1EeUFQSUFCTUR5d1BMQUFVRHpBUE1BQllEemdQUEFCWUQwQVBRQUE0RDBRUFJBQnNEMkFQWUFBTUQyUVBaQUJnRDNRUGRBQmdEM3dQZkFCVUQ0QVBnQUJJRDRRUGhBQmtENGdQaUFCSUQ0d1BqQUJrRDVBUGtBQklENVFQbEFCa0Q2Z1BxQUE0RDZ3UHJBQnNEOEFQd0FCTUQ4Z1B5QUJNRDlBUDBBQk1EOWdQMkFCTUQrQVA0QUJNRCtnUDZBQk1EL0FQOEFCTUQvZ1ArQUJNRUFBUUFBQk1FQWdRQ0FCTUVCQVFFQUJNRUJnUUdBQk1FQndRSEFBVUVDQVFJQUJZRUNRUUpBQVVFQ2dRS0FCWUVDd1FMQUFVRURBUU1BQllFRFFRTkFBVUVEZ1FPQUJZRUR3UVBBQVVFRUFRUUFCWUVFUVFSQUFVRUVnUVNBQllFRXdRVEFBVUVGQVFVQUJZRUZRUVZBQVVFRmdRV0FCWUVGd1FYQUFJRUdRUVpBQUlFR3dRYkFBTUVIQVFjQUJnRUhRUWRBQU1FSGdRZUFCZ0VId1FmQUFNRUlBUWdBQmdFSVFRaEFBTUVJZ1FpQUJnRUl3UWpBQU1FSkFRa0FCZ0VKUVFsQUFNRUpnUW1BQmdFSndRbkFBTUVLQVFvQUJnRU1BUXdBQmdFTXdRekFBd0VOUVExQUF3RVFRUkJBQThFUWdSQ0FCa0VRd1JEQUE4RVJBUkVBQmtFUlFSRkFBOEVSZ1JHQUJrRVNRUkpBQWtFU3dSTEFBSUVUUVJOQUFZRVR3UlBBQTRFVUFSUUFCc0VWUVJWQUFjRVZnUldBQWdFVndSWEFBNEVXQVJZQUJzRVd3UmJBQmNFWFFSZEFCOEVYZ1JlQUFjRVlBUmdBQWtFWkFSa0FBSUVaZ1JtQUFJRWFnUnFBQThFcWdTcUFBTUFBZ0Z0QUFZQUJnQUhBQXNBQ3dBSEFCQUFFQUFUQUJFQUVRQVhBQklBRWdBVEFDVUFKUUFSQUNjQUp3QUZBQ3NBS3dBRkFDNEFMZ0FjQURNQU13QUZBRFVBTlFBRkFEY0FOd0FaQURnQU9BQUtBRGtBT1FBR0FEb0FPZ0FOQURzQU93QUpBRHdBUEFBU0FEMEFQUUFPQUQ0QVBnQVVBRVVBUlFBYUFFY0FTUUFWQUVzQVN3QVZBRkVBVWdBWUFGTUFVd0FJQUZRQVZBQVlBRlVBVlFBVkFGY0FWd0FiQUZrQVdRQUxBRm9BV2dBQ0FGd0FYQUFXQUYwQVhRQUNBRjRBWGdBTUFJTUFnd0FGQUpJQWtnQUZBSk1Ba3dBVkFKY0Fsd0FGQUpnQW1BQVZBSm9BbWdBTEFMRUFzUUFSQUxJQXNnQUZBTE1Bc3dBUkFMb0F1Z0FWQUx3QXZBQUNBTUFBd0FBWUFNY0F5QUFWQU1vQXlnQUxBTkVBMFFBS0FOSUEwZ0FGQU5NQTB3QUJBTlVBMVFBS0FOa0EyUUFTQU53QTNBQUJBTjBBM1FBUUFPQUE0QUFQQU9zQTZ3QVlBTzBBN1FBV0FPOEE4QUFZQVBFQThRQUVBUElBOUFBWUFQWUE5Z0FWQVBjQTl3QVlBUGdBK0FBREFQa0ErZ0FZQVAwQS9RQVlBUDhBL3dBWUFRSUJBZ0FWQVFNQkF3QUVBUVFCQkFBWUFRY0JCd0FGQVF3QkRBQVJBUllCRmdBRkFSY0JGd0FJQVJnQkdBQU5BUmtCR1FBQ0FSb0JHZ0FGQVJ3QkhBQUZBUjBCSFFBVkFSNEJIZ0FGQVNBQklBQUZBU0VCSVFBVkFUSUJNZ0FLQVRVQk5RQVlBVGdCT0FBRkFUa0JPUUFWQVRvQk9nQUtBVVFCUkFBWUFVa0JTUUFZQVVzQlRBQVZBVkVCVVFBQkFWVUJWUUFGQVZZQlZnQVZBV2tCYWdBWEFXd0JiUUFIQVc0QmJnQVRBVzhCY1FBSEFYSUJjZ0FUQVhZQmR3QVRBaWdDS1FBRkFpc0NMQUFGQWtZQ1JnQVhBa3dDVWdBUkFsTUNVd0FGQWwwQ1lRQUZBbUlDWlFBR0FtWUNaZ0FPQW1jQ2JRQWFBbTRDY2dBVkFuY0Nkd0FZQW5nQ2ZBQUlBbjBDZ0FBTEFvRUNnZ0FDQW9NQ2d3QVJBb1FDaEFBYUFvVUNoUUFSQW9ZQ2hnQWFBb2NDaHdBUkFvZ0NpQUFhQW9rQ2lRQUZBb29DaWdBVkFvc0Npd0FGQW93Q2pBQVZBbzBDalFBRkFvNENqZ0FWQW84Q2p3QUZBcEFDa0FBVkFwSUNrZ0FWQXBRQ2xBQVZBcFlDbGdBVkFwZ0NtQUFWQXBvQ21nQVZBcHdDbkFBVkFwMENuUUFGQXA0Q25nQVZBcDhDbndBRkFxQUNvQUFWQXFFQ29RQUZBcUlDb2dBVkFxTUNvd0FGQXFRQ3BBQVZBcklDc2dBY0FyOEN2d0FZQXNFQ3dRQVlBc01DeEFBWUFzVUN4UUFGQXNZQ3hnQUlBc2NDeHdBRkFzZ0N5QUFJQXNrQ3lRQUZBc29DeWdBSUF0RUMwUUFaQXRJQzBnQWJBdE1DMHdBWkF0UUMxQUFiQXRVQzFRQVpBdFlDMWdBYkF0Y0Mxd0FaQXRnQzJBQWJBdGtDMlFBWkF0b0MyZ0FiQXRzQzJ3QUtBdDBDM1FBS0F0OEMzd0FLQXVFQzRRQUdBdUlDNGdBTEF1TUM0d0FHQXVRQzVBQUxBdVVDNVFBR0F1WUM1Z0FMQXVjQzV3QUdBdWdDNkFBTEF1a0M2UUFHQXVvQzZnQUxBdXNDNndBR0F1d0M3QUFMQXUwQzdRQUpBdThDN3dBT0F2QUM4QUFDQXZFQzhRQU9BdklDOGdBVUF2TUM4d0FNQXZRQzlBQVVBdlVDOVFBTUF2WUM5Z0FVQXZjQzl3QU1Bdm9DK2dBRkExTURVd0FSQTFjRFZ3QUZBMWdEV0FBT0Exc0RXd0FSQTE0RFhnQVVBMlFEWkFBRkEyY0Rad0FPQTJnRGFBQVNBMm9EYWdBT0Eyc0Rhd0FWQTIwRGJRQVlBMjhEYndBTEEzRURjUUFJQTNNRGN3QUNBM1lEZGdBTEEzY0Rkd0FJQTNnRGVBQUxBMzhEZndBY0E0SURnZ0FRQTRNRGd3QVJBNG9EaWdBRkE0MERqUUFGQTQ0RGpnQUtBNDhEandBU0E1QURrQUFhQTVFRGtRQVZBNUlEa2dBWUE1TURrd0FJQTVRRGxBQVlBNVVEbFFBVkE1WURsZ0FDQTVjRGx3QVdBNWdEbUFBVkE1a0RtUUFZQTVvRG1nQWJBNTREbmdBWUE1OERud0FDQTZBRG9BQUpBNklEb2dBSkE2UURwQUFKQTZZRHBnQU9BNmNEcHdBQ0E2Z0RxUUFIQTZ3RHJBQUhBNjREcmdBWUE2OERyd0FSQTdBRHNBQWFBN01Ec3dBVkE3UUR0QUFZQTdjRHR3QU5BN2dEdUFBQ0E3a0R1UUFWQTdvRHVnQUZBNzBEdlFBRkE3NER2Z0FWQTc4RHZ3QU9BOEFEd0FBQ0E4SUR3Z0FTQThNRHd3QVdBOFVEeFFBUkE4WUR4Z0FhQThjRHh3QVJBOGdEeUFBYUE4d0R6QUFWQTg0RHp3QVZBOUFEMEFBU0E5RUQwUUFXQTlVRDFRQVlBOWNEMXdBWUE5Z0QyQUFGQTlrRDJRQUlBOW9EMmdBRkE5c0Qyd0FWQTl3RDNBQUZBOTBEM1FBSUErQUQ0QUFRQStFRDRRQUNBK0lENGdBUUErTUQ0d0FDQStRRDVBQVFBK1VENVFBQ0ErWUQ1Z0FQQStjRDV3QURBK2tENlFBWUErb0Q2Z0FTQStzRDZ3QVdBK3dEN0FBVkErMEQ3UUFCQSs0RDdnQUVBKzhEN3dBUkEvQUQ4QUFhQS9FRDhRQVJBL0lEOGdBYUEvTUQ4d0FSQS9RRDlBQWFBL1VEOVFBUkEvWUQ5Z0FhQS9jRDl3QVJBL2dEK0FBYUEva0QrUUFSQS9vRCtnQWFBL3NEK3dBUkEvd0QvQUFhQS8wRC9RQVJBLzREL2dBYUEvOEQvd0FSQkFBRUFBQWFCQUVFQVFBUkJBSUVBZ0FhQkFNRUF3QVJCQVFFQkFBYUJBVUVCUUFSQkFZRUJnQWFCQWdFQ0FBVkJBb0VDZ0FWQkF3RURBQVZCQTRFRGdBVkJCQUVFQUFWQkJJRUVnQVZCQlFFRkFBVkJCWUVGZ0FWQkJzRUd3QUZCQndFSEFBSUJCMEVIUUFGQkI0RUhnQUlCQjhFSHdBRkJDQUVJQUFJQkNFRUlRQUZCQ0lFSWdBSUJDTUVJd0FGQkNRRUpBQUlCQ1VFSlFBRkJDWUVKZ0FJQkNjRUp3QUZCQ2dFS0FBSUJDa0VLUUFGQkNvRUtnQVZCQ3NFS3dBRkJDd0VMQUFWQkMwRUxRQUZCQzRFTGdBVkJDOEVMd0FGQkRBRU1BQUlCREVFTVFBRkJESUVNZ0FWQkRNRU13QUdCRFFFTkFBTEJEVUVOUUFHQkRZRU5nQUxCRGdFT0FBTEJEb0VPZ0FMQkR3RVBBQUxCRDRFUGdBTEJFQUVRQUFMQkVFRVFRQU9CRUlFUWdBQ0JFTUVRd0FPQkVRRVJBQUNCRVVFUlFBT0JFWUVSZ0FDQkVvRVNnQVlCRXdFVEFBWUJFMEVUUUFLQkU4RVR3QVNCRkFFVUFBV0JGRUVVUUFQQkZJRVVnQURCRk1FVXdBUEJGUUVWQUFEQkZZRVZnQVlCRmNFVndBU0JGZ0VXQUFXQkdNRVl3QVlCR1VFWlFBWUJHY0Vad0FZQkdnRWFBQUJCR2tFYVFBRUJHb0VhZ0FPQkhBRWNBQVhCS29FcWdBRkFBRUFBQUFLQWdZRzhBQUVSRVpNVkFBYVkzbHliQUJJWjNKbGF3QjJiR0YwYmdDa0FBUUFBQUFBLy84QUVnQUFBQW9BRkFBZUFDZ0FOQUJCQUVzQVZRQmZBR2tBY3dCOUFJY0FrUUNiQUtVQXJ3QUVBQUFBQVAvL0FCSUFBUUFMQUJVQUh3QXBBRFVBUWdCTUFGWUFZQUJxQUhRQWZnQ0lBSklBbkFDbUFMQUFCQUFBQUFELy93QVNBQUlBREFBV0FDQUFLZ0EyQUVNQVRRQlhBR0VBYXdCMUFIOEFpUUNUQUowQXB3Q3hBQ2dBQmtGYVJTQUFWRU5TVkNBQWZrMVBUQ0FBcUU1QlZpQUExRkpQVFNBQkFGUlZVaUFCTEFBQS8vOEFFd0FEQUEwQUZ3QWhBQ3NBTWdBM0FFUUFUZ0JZQUdJQWJBQjJBSUFBaWdDVUFKNEFxQUN5QUFELy93QVNBQVFBRGdBWUFDSUFMQUE0QUVVQVR3QlpBR01BYlFCM0FJRUFpd0NWQUo4QXFRQ3pBQUQvL3dBU0FBVUFEd0FaQUNNQUxRQTVBRVlBVUFCYUFHUUFiZ0I0QUlJQWpBQ1dBS0FBcWdDMEFBRC8vd0FUQUFZQUVBQWFBQ1FBTGdBNkFENEFSd0JSQUZzQVpRQnZBSGtBZ3dDTkFKY0FvUUNyQUxVQUFQLy9BQk1BQndBUkFCc0FKUUF2QURzQVB3QklBRklBWEFCbUFIQUFlZ0NFQUk0QW1BQ2lBS3dBdGdBQS8vOEFFd0FJQUJJQUhBQW1BREFBUEFCQUFFa0FVd0JkQUdjQWNRQjdBSVVBandDWkFLTUFyUUMzQUFELy93QVRBQWtBRXdBZEFDY0FNUUF6QUQwQVNnQlVBRjRBYUFCeUFId0FoZ0NRQUpvQXBBQ3VBTGdBdVdNeWMyTUVXR015YzJNRVdHTXljMk1FV0dNeWMyTUVXR015YzJNRVdHTXljMk1FV0dNeWMyTUVXR015YzJNRVdHTXljMk1FV0dNeWMyTUVXR05qYlhBRVhtTmpiWEFFWG1OamJYQUVYbU5qYlhBRVhtTmpiWEFFWG1OamJYQUVYbU5qYlhBRVhtTmpiWEFFWG1OamJYQUVYbU5qYlhBRVhtUnNhV2NFWm1Sc2FXY0VabVJzYVdjRVptUnNhV2NFWm1Sc2FXY0VabVJzYVdjRVptUnNhV2NFWm1Sc2FXY0VabVJzYVdjRVptUnNhV2NFWm1SdWIyMEViR1J1YjIwRWJHUnViMjBFYkdSdWIyMEViR1J1YjIwRWJHUnViMjBFYkdSdWIyMEViR1J1YjIwRWJHUnViMjBFYkdSdWIyMEViR1p5WVdNRWNtWnlZV01FY21aeVlXTUVjbVp5WVdNRWNtWnlZV01FY21aeVlXTUVjbVp5WVdNRWNtWnlZV01FY21aeVlXTUVjbVp5WVdNRWNteHBaMkVFZkd4cFoyRUVoR3h1ZFcwRWlteHVkVzBFaW14dWRXMEVpbXh1ZFcwRWlteHVkVzBFaW14dWRXMEVpbXh1ZFcwRWlteHVkVzBFaW14dWRXMEVpbXh1ZFcwRWlteHZZMndFa0d4dlkyd0VsbXh2WTJ3RW5HNTFiWElFb201MWJYSUVvbTUxYlhJRW9tNTFiWElFb201MWJYSUVvbTUxYlhJRW9tNTFiWElFb201MWJYSUVvbTUxYlhJRW9tNTFiWElFb205dWRXMEVxRzl1ZFcwRXFHOXVkVzBFcUc5dWRXMEVxRzl1ZFcwRXFHOXVkVzBFcUc5dWRXMEVxRzl1ZFcwRXFHOXVkVzBFcUc5dWRXMEVxSEJ1ZFcwRXJuQnVkVzBFcm5CdWRXMEVybkJ1ZFcwRXJuQnVkVzBFcm5CdWRXMEVybkJ1ZFcwRXJuQnVkVzBFcm5CdWRXMEVybkJ1ZFcwRXJuTnRZM0FFdEhOdFkzQUV0SE50WTNBRXRITnRZM0FFdEhOdFkzQUV0SE50WTNBRXRITnRZM0FFdEhOdFkzQUV0SE50WTNBRXRITnRZM0FFdEhOek1ERUV1bk56TURFRXVuTnpNREVFdW5Oek1ERUV1bk56TURFRXVuTnpNREVFdW5Oek1ERUV1bk56TURFRXVuTnpNREVFdW5Oek1ERUV1bk56TURJRXdITnpNRElFd0hOek1ESUV3SE56TURJRXdITnpNRElFd0hOek1ESUV3SE56TURJRXdITnpNRElFd0hOek1ESUV3SE56TURJRXdITnpNRE1FeG5Oek1ETUV4bk56TURNRXhuTnpNRE1FeG5Oek1ETUV4bk56TURNRXhuTnpNRE1FeG5Oek1ETUV4bk56TURNRXhuTnpNRE1FeG5Oek1EUUV6SE56TURRRXpITnpNRFFFekhOek1EUUV6SE56TURRRXpITnpNRFFFekhOek1EUUV6SE56TURRRXpITnpNRFFFekhOek1EUUV6SE56TURVRTBuTnpNRFVFMG5Oek1EVUUwbk56TURVRTBuTnpNRFVFMG5Oek1EVUUwbk56TURVRTBuTnpNRFVFMG5Oek1EVUUwbk56TURVRTBuTnpNRFlFMkhOek1EWUUySE56TURZRTJITnpNRFlFMkhOek1EWUUySE56TURZRTJITnpNRFlFMkhOek1EWUUySE56TURZRTJITnpNRFlFMkhOek1EY0Uzbk56TURjRTNuTnpNRGNFM25Oek1EY0Uzbk56TURjRTNuTnpNRGNFM25Oek1EY0Uzbk56TURjRTNuTnpNRGNFM25Oek1EY0UzblJ1ZFcwRTVIUnVkVzBFNUhSdWRXMEU1SFJ1ZFcwRTVIUnVkVzBFNUhSdWRXMEU1SFJ1ZFcwRTVIUnVkVzBFNUhSdWRXMEU1SFJ1ZFcwRTVBQUFBQUVBQUFBQUFBSUFBZ0FEQUFBQUFRQUhBQUFBQVFBWUFBQUFBd0FWQUJZQUZ3QUFBQUlBQ0FBSkFBQUFBUUFKQUFBQUFRQVVBQUFBQVFBRUFBQUFBUUFHQUFBQUFRQUZBQUFBQVFBWkFBQUFBUUFSQUFBQUFRQVRBQUFBQVFBQkFBQUFBUUFLQUFBQUFRQUxBQUFBQVFBTUFBQUFBUUFOQUFBQUFRQU9BQUFBQVFBUEFBQUFBUUFRQUFBQUFRQVNBQnNBT0FQR0JyUUhZQTN3RGZBT0JnNG9EbDRPaEE2eURzWU8yZzd1RHdBUEdnOWNEM29QbUEvS0Qvd1FMaEJDRUhvUWJCQjZFS1lBQVFBQUFBRUFDQUFDQWNRQTN3SG5BYm9CdXdHOEFiMEJ2Z0cvQWNBQndRSENBY01CeEFIRkFjWUJ4d0hJQWNrQnlnSExBY3dCelFIT0FjOEIwQUhSQWRJQjB3SG9BZWtDUkFJN0Flb0I2d0hzQWUwQjdnSHZBZkFCOFFIeUFmTUI5QUgxQWZZQjl3SDRBZmtCK2dIN0Fmd0IvUUgrQWdBQ0FRVGRBZ0lDQXdJRUFnVUNCZ0lIQWdnQ0NRSUtBZ3NDTHdJUEFoQUNFUUlVQWhVQ0ZnSVhBaGdDR1FJYkFod0NIZ0lkQXZ3Qy9RTCtBdjhEQUFNQkF3SURBd01FQXdVREJnTUhBd2dEQ1FNS0F3c0REQU1OQXc0RER3TVFBeEVERWdNVEF4UURGUU1XQXhjREdBTVpBeG9ER3dNY0F4MERIZ01mQXlBRElRTWlBeU1ESkFNbEF5WURKd01vQXlrREtnTXJBeXdETFFNdUF5OERNQU14QXpJRE13TTBBelVETmdNM0F6Z0RPUU02QXpzRFBBTTlBejREUHdOQUEwRURRZ05EQTBRRFJnTkZBMGNEU0FOSkEwb0RTd05NQTAwRFRnTlBBMUFEVVFOU0JLc0VyQVN0Qks0RXJ3U3dCTEVFc2dTekJMUUV0UVMyQkxjRXVBUzVCTG9FdXdTOEJMMEV2Z1MvQk1BRXdRVENCTU1FeEFURkJNWUIvd1RIQk1nRXlRVEtCTXNFekFUTkJNNEV6d1RRQk5FRTBnVFRCTlFFMVFUV0JOZ0UyUVRiQWhvRTNBSU9CTmNDRXdJTkJOb0NEQUlTQUFFQTN3QUlBQ1VBSmdBbkFDZ0FLUUFxQUNzQUxBQXRBQzRBTHdBd0FERUFNZ0F6QURRQU5RQTJBRGNBT0FBNUFEb0FPd0E4QUQwQVBnQmxBR2NBaFFDU0FMQUFzUUN5QUxNQXRBQzFBTFlBdHdDNEFMa0EwUURTQU5NQTFBRFZBTllBMXdEWUFOa0EyZ0RiQU53QTNRRGVBTjhBNEFEaEFPSUE0d0RrQU9VQTVnRG5BT2dCTEFFd0FUSUJPQUU2QVR3QlBnRS9BVVVCUmdGL0FZVUJpZ0dOQWtjQ1NBSktBa3dDVFFKT0FrOENVQUpSQWxJQ1V3SlVBbFVDVmdKWEFsZ0NXUUphQWxzQ1hBSmRBbDRDWHdKZ0FtRUNZZ0pqQW1RQ1pRSm1Bb01DaFFLSEFva0Npd0tOQW84Q2tRS1RBcFVDbHdLWkFwc0NuUUtmQXFFQ293S2xBcWNDcVFLckFxMENyd0t5QXJRQ3RnSzRBcm9DdkFLK0FzQUN3Z0xGQXNjQ3lRTExBczBDendMUkF0TUMxUUxaQXRzQzNRTGZBdUVDNHdMbEF1Y0M2UUxyQXUwQzd3THhBdklDOUFMMkExTURWQU5WQTFZRFZ3TllBMWtEV3dOY0ExMERYZ05mQTJBRFlRTmlBMlFEWlFObUEyY0RhQU5wQTJvRGVnTjdBM3dEZlFOK0EzOERnQU9CQTRJRGd3T0VBNFVEaGdPSEE0Z0RpUU9LQTRzRGpBT05BNDREandPN0E3MER2d1BVQTlvRDRBUkpCRXNFVHdSWEJGa0VYZ1JxQUFFQUFBQUJBQWdBQWdGMEFMY0J1Z0c3QWJ3QnZRRytBYjhCd0FIQkFjSUJ3d0hFQWNVQnhnSEhBY2dCeVFIS0Fjc0J6QUhOQWM0Qnp3SFFBZEVCMGdIVEF2MERNQUk3QWZvRXlnVExBZnNCL0FIOUFmNEIvd0lBQk00RXp3VFJCTlFFM1FJQ0FnTUNCQUlGQWdZQ0J3SUlBZ2tDQ2dJTEFmUUI5UUgyQWZjQitBSDVBaThDRHdJUUFoRUNGQUlWQWhjQ0dRTCtBdjhEQUFNQkF3SURBd01FQXdVREJnTUhBd2dEQ1FNS0F3c0REQU1OQXc0RER3TVFBeEVERWdNVEF4UURGUU1XQXhjREdBTVpBMDhER2dNYkF4d0RIUU1lQXg4RElBTWhBeUlESXdNa0F5VURKZ01uQXlnREtRTXFBeXNETEFNdEF5NERMd014QXpJRE13TTBBelVETmdNM0F6Z0RPUU02QXpzRFBBTTlBejREUHdOQUEwRURRZ05EQTBRRFJnTkZBMGNEU0FOSkEwb0RTd05NQTAwRFRnTlFBMUVEVWdUSkJNd0V6UVRRQk5JRTB3SUJCTlVFd1FUQ0JNTUV4QVRGQk1ZRXh3VElCTllFMkFUWkFoZ0Uyd0lhQk53Qy9BSU9CTmNDRXdJTkJOb0NGZ0lNQWhJQUFRQzNBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQ0hBSXdBa3dEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QkFBRUJBUUlCQXdFRUFRVUJCZ0V0QVRFQk13RTVBVHNCUFFGQUFVY0NTd0puQW1nQ2FRSnFBbXNDYkFKdEFtNENid0p3QW5FQ2NnSnpBblFDZFFKMkFuY0NlQUo1QW5vQ2V3SjhBbjBDZmdKL0FvQUNnUUtDQW9RQ2hnS0lBb29DakFLT0FwQUNrZ0tVQXBZQ21BS2FBcHdDbmdLZ0FxSUNwQUttQXFnQ3FnS3NBcTRDc3dLMUFyY0N1UUs3QXIwQ3Z3TEJBc01DeGdMSUFzb0N6QUxPQXRBQzBnTFVBdFlDMmdMY0F0NEM0QUxpQXVRQzVnTG9BdW9DN0FMdUF2QUM4d0wxQXZjRGtBT1JBNUlEa3dPVUE1VURsZ09YQTVnRG1RT2FBNXNEbkFPZEE1NERud084QTc0RHdBUE9BOVVEMndQaEJFY0VTZ1JNQkZBRVdBUmFCRnNFWHdSckFBWUFBQUFHQUJJQUtnQkNBRm9BY2dDS0FBTUFBQUFCQUJJQUFRQ1FBQUVBQUFBYUFBRUFBUUJOQUFNQUFBQUJBQklBQVFCNEFBRUFBQUFhQUFFQUFRQk9BQU1BQUFBQkFCSUFBUUJnQUFFQUFBQWFBQUVBQVFLdUFBTUFBQUFCQUJJQUFRQklBQUVBQUFBYUFBRUFBUU9iQUFNQUFBQUJBQklBQVFBd0FBRUFBQUFhQUFFQUFRT2RBQU1BQUFBQkFCSUFBUUFZQUFFQUFBQWFBQUVBQVFRYUFBSUFBUUNuQUtzQUFBQUVBQUFBQVFBSUFBRUdIZ0EyQUhJQXBBQ3VBTGdBeWdEOEFRNEJHQUZLQVdRQmZnR1FBYm9CN0FIMkFoZ0NNZ0pFQW5ZQ2lBS2lBc3dDM2dNUUF4b0RKQU0yQTJnRGNnTjhBNFlEb0FPNkE4d0Q5Z1FvQkRJRVZBUnVCSUFFc2dURUJONEZDQVVhQlNRRkxnVTRCVUlGYkFXV0JjQUY2Z1lVQUFZQURnQVVBQm9BSUFBbUFDd0NUQUFDQUtjQ1RRQUNBS2dDVHdBQ0FLa0Q4UUFDQUtvRWV3QUNBS3NEN3dBQ0FLd0FBUUFFQklnQUFnQ3NBQUVBQkFLSkFBSUFxQUFDQUFZQURBU0tBQUlBckFTTUFBSUJvZ0FHQUE0QUZBQWFBQ0FBSmdBc0FsUUFBZ0NuQWxVQUFnQ29CQXNBQWdDcEJBa0FBZ0NxQkgwQUFnQ3JCQWNBQWdDc0FBSUFCZ0FNQkhjQUFnQ29BcU1BQWdHaUFBRUFCQVNPQUFJQXJBQUdBQTRBRkFBYUFDQUFKZ0FzQWxnQUFnQ25BbGtBQWdDb0FxY0FBZ0NwQkJjQUFnQ3FCSDhBQWdDckJCa0FBZ0NzQUFNQUNBQU9BQlFFa0FBQ0FLZ0VrZ0FDQUt3Q3RBQUNBYUlBQXdBSUFBNEFGQUsyQUFJQXFBU1VBQUlBckFLNEFBSUJvZ0FDQUFZQURBT3RBQUlBcUFTV0FBSUFyQUFGQUF3QUVnQVlBQjRBSkFSNUFBSUFwd0srQUFJQXFBSmNBQUlBcVFTWUFBSUFyQUxBQUFJQm9nQUdBQTRBRkFBYUFDQUFKZ0FzQWwwQUFnQ25BbDRBQWdDb0FtQUFBZ0NwQkIwQUFnQ3FCSUVBQWdDckJCc0FBZ0NzQUFFQUJBU2FBQUlBcUFBRUFBb0FFQUFXQUJ3Q3l3QUNBS2dFZ3dBQ0FLc0VuQUFDQUt3Q3pRQUNBYUlBQXdBSUFBNEFGQUxSQUFJQXFBU2VBQUlBckFMWEFBSUJvZ0FDQUFZQURBU2dBQUlBckFMYkFBSUJvZ0FHQUE0QUZBQWFBQ0FBSmdBc0FtSUFBZ0NuQW1NQUFnQ29BdUVBQWdDcEJEVUFBZ0NxQklVQUFnQ3JCRE1BQWdDc0FBSUFCZ0FNQktJQUFnQ3BCS1FBQWdDc0FBTUFDQUFPQUJRRG9BQUNBS2NEb2dBQ0FLZ0VwZ0FDQUt3QUJRQU1BQklBR0FBZUFDUURwZ0FDQUtjQ1pnQUNBS2dFUlFBQ0FLa0VRd0FDQUtvRVFRQUNBS3dBQWdBR0FBd0M4Z0FDQUtnRXFBQUNBS3dBQmdBT0FCUUFHZ0FnQUNZQUxBSm5BQUlBcHdKb0FBSUFxQUpxQUFJQXFRUHlBQUlBcWdSOEFBSUFxd1B3QUFJQXJBQUJBQVFFaVFBQ0FLd0FBUUFFQW9vQUFnQ29BQUlBQmdBTUJJc0FBZ0NzQkkwQUFnR2lBQVlBRGdBVUFCb0FJQUFtQUN3Q2J3QUNBS2NDY0FBQ0FLZ0VEQUFDQUtrRUNnQUNBS29FZmdBQ0FLc0VDQUFDQUt3QUFRQUVCSGdBQWdDb0FBRUFCQVNQQUFJQXJBQUJBQVFFR2dBQ0FLd0FBd0FJQUE0QUZBU1JBQUlBcUFTVEFBSUFyQUsxQUFJQm9nQURBQWdBRGdBVUFyY0FBZ0NvQkpVQUFnQ3NBcmtBQWdHaUFBSUFCZ0FNQTY0QUFnQ29CSmNBQWdDc0FBVUFEQUFTQUJnQUhnQWtCSG9BQWdDbkFyOEFBZ0NvQW5jQUFnQ3BCSmtBQWdDc0FzRUFBZ0dpQUFZQURnQVVBQm9BSUFBbUFDd0NlQUFDQUtjQ2VRQUNBS2dDZXdBQ0FLa0VIZ0FDQUtvRWdnQUNBS3NFSEFBQ0FLd0FBUUFFQkpzQUFnQ29BQVFBQ2dBUUFCWUFIQUxNQUFJQXFBU0VBQUlBcXdTZEFBSUFyQUxPQUFJQm9nQURBQWdBRGdBVUF0SUFBZ0NvQko4QUFnQ3NBdGdBQWdHaUFBSUFCZ0FNQktFQUFnQ3NBdHdBQWdHaUFBWUFEZ0FVQUJvQUlBQW1BQ3dDZlFBQ0FLY0NmZ0FDQUtnQzRnQUNBS2tFTmdBQ0FLb0VoZ0FDQUtzRU5BQUNBS3dBQWdBR0FBd0Vvd0FDQUtrRXBRQUNBS3dBQXdBSUFBNEFGQU9oQUFJQXB3T2pBQUlBcUFTbkFBSUFyQUFGQUF3QUVnQVlBQjRBSkFPbkFBSUFwd0tCQUFJQXFBUkdBQUlBcVFSRUFBSUFxZ1JDQUFJQXJBQUNBQVlBREFMekFBSUFxQVNwQUFJQXJBQUJBQVFDK0FBQ0FLZ0FBUUFFQXZvQUFnQ29BQUVBQkFMNUFBSUFxQUFCQUFRQyt3QUNBS2dBQlFBTUFCSUFHQUFlQUNRQ2N3QUNBS2NDZEFBQ0FLZ0NxQUFDQUtrRUdBQUNBS29FZ0FBQ0FLc0FCUUFNQUJJQUdBQWVBQ1FFS3dBQ0FLY0VLUUFDQUtnRUx3QUNBS2tFTFFBQ0FLb0VNUUFDQUt3QUJRQU1BQklBR0FBZUFDUUVMQUFDQUtjRUtnQUNBS2dFTUFBQ0FLa0VMZ0FDQUtvRU1nQUNBS3dBQlFBTUFCSUFHQUFlQUNRRU9RQUNBS2NFTndBQ0FLZ0VQUUFDQUtrRU93QUNBS29FUHdBQ0FLd0FCUUFNQUJJQUdBQWVBQ1FFT2dBQ0FLY0VPQUFDQUtnRVBnQUNBS2tFUEFBQ0FLb0VRQUFDQUt3QUFRQUVCSWNBQWdDb0FBSUFFUUFsQUNrQUFBQXJBQzBBQlFBdkFEUUFDQUEyQURzQURnQTlBRDRBRkFCRkFFa0FGZ0JMQUUwQUd3QlBBRlFBSGdCV0FGc0FKQUJkQUY0QUtnQ0JBSUVBTEFDREFJTUFMUUNHQUlZQUxnQ0pBSWtBTHdDTUFJd0FNQUNYQUpvQU1RRFBBTThBTlFBQkFBQUFBUUFJQUFFQUJnQUNBQUVBQWdMVkF0WUFBUUFBQUFFQUNBQUNBQTRBQkFUZUJOOEU0QVRoQUFFQUJBS0hBb2dDbVFLYUFBUUFBQUFCQUFnQUFRQW1BQUlBQ2dBY0FBSUFCZ0FNQWFNQUFnQktBYWdBQWdCWUFBRUFCQUdwQUFJQVdBQUJBQUlBU2dCWEFBUUFBQUFCQUFnQUFRQkVBQUlBQ2dBVUFBRUFCQUdrQUFJQVRRQUJBQVFCcGdBQ0FFMEFCQUFBQUFFQUNBQUJBQjRBQWdBS0FCUUFBUUFFQWFVQUFnQlFBQUVBQkFHbkFBSUFVQUFCQUFJQVNnR2pBQUVBQUFBQkFBZ0FBUUFHQVpVQUFRQUJBRXNBQVFBQUFBRUFDQUFCQUFZQkp3QUJBQUVBdWdBQkFBQUFBUUFJQUFFQUJnR3NBQUVBQVFBMkFBRUFBQUFCQUFnQUFnQWNBQUlCNHdIa0FBRUFBQUFCQUFnQUFnQUtBQUlCNVFIbUFBRUFBZ0F2QUU4QUFRQUFBQUVBQ0FBQ0FCNEFEQUlvQWlvQ0tRSXJBaXdDSHdJZ0FpRUNJZ0d1QWlRQ0pRQUJBQXdBSndBb0FDc0FNd0ExQUVZQVJ3QklBRXNBVXdCVUFGVUFBUUFBQUFFQUNBQUNBQXdBQXdJbUFpY0NKd0FCQUFNQVNRQkxBaUlBQVFBQUFBRUFDQUFDQUdZQUNBSTlBaTBDTGdJd0FqRUNPUUk2QWp3QUFRQUFBQUVBQ0FBQ0FCWUFDQUFiQUJVQUZnQVhBQmdBR1FBZEFCUUFBUUFJQWEwQ0l3UnhCSElFY3dSMEJIVUVkZ0FCQUFBQUFRQUlBQUlBRmdBSUJIWUNJd1J4QkhJRWN3UjBBYTBFZFFBQkFBZ0FGQUFWQUJZQUZ3QVlBQmtBR3dBZEFBRUFBQUFCQUFnQUFnQVdBQWdBRlFBV0FCY0FHQUFaQUJzQUhRQVVBQUVBQ0FJdEFpNENNQUl4QWprQ09nSThBajBBQVFBQUFBRUFDQUFCQUFZQmFRQUJBQUVBRXdBR0FBQUFBUUFJQUFNQUFRQVNBQUVBVWdBQUFBRUFBQUFhQUFJQUFnRjhBWHdBQUFIVUFkMEFBUUFCQUFBQUFRQUlBQUVBS0FIQUFBRUFBQUFCQUFnQUFnQWFBQW9DTWdCNkFITUFkQUl6QWpRQ05RSTJBamNDT0FBQ0FBRUFGQUFkQUFBQUFRQUFBQUVBQ0FBQ0FDWUFFQUhVQWRVQjFnSFhBZGdCMlFIYUFkc0IzQUhkQWtBQ1BnSkJBa0lDUHdKREFBRUFFQUFVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUUwQVRnS3VBNXNEblFRYSIsCiAgIlJvYm90by1NZWRpdW0udHRmIjogIkFBRUFBQUFSQVFBQUJBQVFSMUJQVTMycWNZd0FBZ2lvQUFCWkRFZFRWVUpNbkNqZ0FBSmh0QUFBR1doUFV5OHlvUXV4dGdBQUFaZ0FBQUJnWTIxaGNFQW1TSElBQUJwc0FBQVN5R04yZENBRWx5dEtBQUF2dkFBQUFGWm1jR2R0ZS9saHF3QUFMVFFBQUFHOFoyRnpjQUFJQUJNQUFnaWNBQUFBREdkc2VXYXVubUxwQUFBNTNBQUJ5OHhvWkcxNFBUODhJQUFBRllBQUFBVHNhR1ZoWlBoN3F3Z0FBQUVjQUFBQU5taG9aV0VLN3dxYkFBQUJWQUFBQUNSb2JYUjRKUE5FOVFBQUFmZ0FBQk9JYkc5allkM2VacTBBQURBVUFBQUp4bTFoZUhBSEVnTDFBQUFCZUFBQUFDQnVZVzFsUFdOdlRBQUNCYWdBQUFMVWNHOXpkUDl0QUdRQUFnaDhBQUFBSUhCeVpYQWJzZmcyQUFBdThBQUFBTXdBQVFBQUFBSUFBQkZBcEcxZkR6ejFBQnNJQUFBQUFBREU4QkV1QUFBQUFORGJUcFQ2SlAzVkNWd0ljd0FBQUFrQUFnQUFBQUFBQUFBQkFBQUhiUDRNQUFBSmEvb2sva0VKWEFBQkFBQUFBQUFBQUFBQUFBQUFBQUFFNGdBQkFBQUU0Z0NQQUJZQVRnQUZBQUVBQUFBQUFBNEFBQUlBQWhZQUJnQUJBQU1FbFFIMEFBVUFBQVdhQlRNQUFBRWZCWm9GTXdBQUE5RUFaZ0lBQUFBQ0FBQUFBQUFBQUFBQTRBQUsvMUFBSVg4QUFBQWhBQUFBQUVkUFQwY0FRQUFBLy8wR0FQNEFBR1lIbWdJQUlBQUJud0FBQUFBRU9nV3dBQ0FBSUFBQ0E0d0FaQUFBQUFBQUFBQUFBZjRBQUFIK0FBQUNKUUNQQXBnQVpRVGlBR0FFakFCa0JlQUFZd1VkQUZZQldnQlNBc29BZ0FMU0FDZ0RpUUFiQkhVQVJBSENBQndDb0FCSEFqd0Fod01xQUFJRWpBQnBCSXdBcUFTTUFGRUVqQUJQQkl3QU5BU01BSUVFakFCMUJJd0FSUVNNQUdnRWpBQmRBaDhBZ2dIbkFDNEVFUUEvQkhvQWtRUXFBSUFENUFBOEJ5Z0FXd1ZUQUJJRkRBQ1VCVGtBWmdVNkFKUUVoZ0NVQkdVQWxBVnlBR29GcndDVUFrSUFvd1J4QUMwRkN3Q1VCRlFBbEFjQkFKUUZyZ0NVQllZQVpnVWRBSlFGaGdCZ0JQNEFsQVRVQUVvRTJ3QXRCVGNBZlFVdEFCSUhDZ0F3QlJBQUtRVGdBQWNFMFFCUUFqRUFoQU5ZQUJRQ01RQU1BMnNBTlFPY0FBTUNsQUF4QkZRQVdnU0JBSHdFTUFCUEJJUUFUd1JMQUZNQzFnQXRCSWtBVWdSeEFIa0NDd0I5QWdIL3RRUXRBSDBDQ3dDTUJ2WUFmQVJ6QUhrRWpnQlBCSUVBZkFTTEFFOEMwQUI4QkNFQVN3S3BBQWdFY2dCM0EvVUFGZ1h5QUNFRUJnQWZBK1VBREFRR0FGSUNyd0E0QWdJQXJnS3ZBQnNGVVFCMUFoNEFoZ1I5QUdRRXRRQmVCWjBBWFFUZ0FCa0IvQUNJQlBnQVdnT0ZBRjBHUkFCWEE1RUFqUVBpQUZjRWJRQi9Ca1FBVndQYkFJY0RDZ0IvQkVvQVh3TDJBRHdDOWdBM0Fwc0FjQVM3QUpJRDdRQkZBa0lBamdJUUFHMEM5Z0NBQTZjQWR3UGlBRjBGMEFCWkJpc0FVQVpYQUdjRDVBQkNCNFgvOWdSRUFFMEZoQUJwQk1vQWxBVG5BSWdHd1FCSUJLY0Fad1NSQUVNRWlBQlBCSmNBZ2dXd0FCOENHZ0NQQkpnQWpnUmtBQ0lDVHdBaEJaTUFrQVNJQUg0SHRBQmtCem9BV3dJTUFJc0ZpQUJSQXRELzVBV0tBRmdFbmdCUEJhUUFmUVR5QUhjQ0p2KzFCRHdBV1FQbUFKUURzQUJ5QTl3QWh3TjhBSFVDQ3dDQkFySUFlQUpOQUNrRDJBQjZBeDhBU1FKc0FJSUFBUHlPQUFEOVhnQUEvSE1BQVAwK0FBRDhEQUFBL1J3Q1hRREdCRHdBWndKQ0FJNEVkUUNiQmI4QUdRVjZBRnNGT0FBZ0JKQUFiQVd4QUpzRWtBQkhCZThBU2dXcUFFUUZXd0JyQklRQVZnVEdBSllFRGdBZ0JJZ0FWQVJnQUdBRUdnQmhCSWdBZmdTaEFITUNxZ0NwQkdvQUZnUVRBR1FFOHdBdEJJZ0FnQVEzQUZJRWtBQlNCQzBBUHdSZ0FJQUYwQUJFQmNrQVR3YVVBR1lFc3dCMkJIdi80UVp4QURNRi9nQWlCVmtBYUFpSUFDMElqd0NiQmxzQU1RV3FBSklGQ0FDUUJnWUFKQWVpQUJZRTFnQkpCYWdBbEFXcEFDMEZDZ0E1Qmw4QVR3WDVBSklGaVFDT0I1c0FtQWY1QUpnR0dnQVlCdmtBbXdVSEFKQUZVQUJyQjFRQW9BVDNBQ0FFZlFCYkJJOEFqd05hQUlVRTlnQW5CbllBSGdRV0FFMEVtQUNHQkc0QWp3U2FBQ0VHQXdDUEJKY0FoZ1NZQUlZRDlRQWpCZE1BVkFUVEFJWUVaZ0JmQm80QWhnYnNBSDRGRndBZkJtOEFqd1JvQUk4RVBBQlJCb1FBa1FSd0FDY0VjZi9iQkR3QVZBYlJBQjRHNUFDR0JJbi83Z1NZQUlZSFNRQ0lCazhBY0FSbi8rQUhLQUNZQmdFQWhnVU1BQndFWUFBS0IwSUFyQVkyQUowRzdRQ0FCZVlBZ2dreUFLTUgrUUNQQkNBQUtBUHdBRE1GZWdCZkJJZ0FUd1VhQUJBRURnQWdCWG9BWHdTSUFFOEhSUUNJQmtRQWRBZEpBSWdHVHdCd0JSb0FaZ1JLQUZ3RS93QnRBQUQ4WmdBQS9ITUFBUDE3QUFEOXBRQUEraVFBQVBwTkJHZi80QVVUQUpRRWhnQjhCR29BandPaEFINEV0d0NiQkNBQWZnVXNBSkFFcXdDT0JwVUFOQVdrQUQwSDBBQ1VCYW9BZmdoSEFKc0c5UUIrQmlvQVp3VC9BR0VITVFBdEJYQUFKZ1YwQUlBRWN3QjBCWWNBaFFZa0FCWUV3Ly9MQlNFQWtBUjRBSTRGcndDYkJJZ0FmZ1dJQUZFRXBnQmJCS1lBWFFUSEFEUURVd0F0QlFjQVVnYnhBR2dHM1FCZUJsTUFQQVVvQUM4RWV3QklCRDRBZEFlK0FFSUduUUJBQi8wQWxBYWVBSGNGQkFCZEJDd0FWUVdxQUNFRkhRQkVCVlVBZ1FNc0FHY0VGQUFBQ0NrQUFBUVVBQUFJS1FBQUFya0FBQUlLQUFBQlhBQUFCSDhBQUFJd0FBQUJvZ0FBQU5FQUFBQUFBQUFDb1FCSEFxRUFSd1VwQUowR01BQ0JBNTBBQkFIQUFHTUJ2QUF6QWM0QU1nR29BRW9ERkFCc0F4c0FRQU1JQURJRVhRQkFCSmtBWEFMTEFJZ0QrZ0NLQmFZQWlnRnNBRWNIcHdCS0FuSUFiQUpwQUZRRG5BQXRBdllBTlFOY0FHa0V0UUJmQm5BQUlRYTRBSmdJa3dDVUI0Z0FOUWFNQUh3RWpBQmVCZlVBSVFRMEFDZ0VvZ0FoQlY0QVR3VjlBQ2dGNUFCd0ErSUFUQWd1QUpBRkNRQnRCUlFBbGdZMUFGa0czUUJVQnRFQVd3YWlBRmdFa1FCaUJaWUFwZ1RaQUVBRWd3Q2VCTElBT3doRkFGNENMZit2Qkk0QVpRUjZBSkVFRVFBOEJDb0FnQVFNQUNRQ1d3Q2hBcGdBWXdIeEFFVUZHd0F0QktnQUdBUzhBQzBISXdBdEJ5TUFMUVVSQUMwR3R3QkxBQUFBQUFnd0FGa0lOUUJjQkRNQU9nU1RBRThDRVArd0FiTUFYQU9oQUhVRG9RQjFBNkVBZFFRTEFIVUVDd0IxQkF2L1RBUUxBSG9Eb1FCMUFnVUFsQVNlQUFrRVlBQjJCSUFBVHdSNkFIWUQ0QUIyQThVQWRnU21BRlFFM2dCMkFmd0FoUVBWQUNRRVd3QjJBN2tBZGdZR0FIWUUzUUIyQk1BQVR3UnRBSFlFd0FCTUJGd0FkZ1EwQUQ0RU93QWtCSVFBWndSN0FBa0dCd0FvQkY0QUZRUThBQVVFS2dCQkF2WUFTd0wyQUlBQzlnQThBdllBTndMMkFEVUM5Z0JQQXZZQVRRTDJBRFlDOWdCTEF2WUFSZ081QUpBQ3NnQ1dCRHNBQ2dTN0FGWUZSQUNiQlNnQW13UXdBSUVGT1FDYkJDMEFnUVEwQUQ0RVpnQTRCRTBBRGdPNUFIWUVld0FKQk1BQVR3UjdBQWtEbUFCQ0JOZ0FkZ1FaQUVRRm5RQlFCVlFBVUFUa0FGOEZrUUFrQklBQVR3ZFVBQ1FIVndCMkJaY0FKQVRYQUhZRWNRQjJCVmtBSndZNkFCb0VSZ0JDQk9RQWRnUmNBSFlFeXdBa0JFWUFId1ZkQUhZRWpBQkJCb1FBZGdjS0FIWUZXZ0FLQmlBQWRnUm5BSFlFZ0FBOEJwSUFkZ1NJQUVNRUlnQUtCcElBR2dTZEFIWUZHZ0IyQlc0QUpBWHdBRThFV2dBRkJNUUFGUWFWQUNRRWpBQkJCSXdBZGdYK0FBb0UwZ0JQQkVZQVFnVEFBRThFWmdBNEEvY0FSZ2cyQUhZRTZ3QW9CSWdBZkFROUFGQUVtQUJQQTZRQVd3U2hBRXdFbEFCOEJKOEFUd1JMQUZNRWlRQlJCWG9BYXdXaUFHc0ZoZ0NiQmVBQWF3WGlBR3NFR3dDWEJJSUFiZ081QUhZRVZ3QVBCTDRBTlFMMkFFc0M5Z0ExQXZZQVR3TDJBRTBDOWdBMkF2WUFTd0wyQUVZRWF3Qm1CQzRBUXdhWUFFOEV0QUJ6Qk9zQVlnSW0vN1VDSnYrMUFoc0Fqd0liLy9zQ0d3Q1BCR0FBZGdIK0FBQUNvQUJIQlZqLzl3VlkvL2NFai8vVUJOc0FMUUtwLytnRlV3QVNCVk1BRWdWVEFCSUZVd0FTQlZNQUVnVlRBQklGVXdBU0JUa0FaZ1NHQUpRRWhnQ1VCSVlBbEFTR0FKUUNRdi9JQWtJQW93SkMvOHNDUXYrL0JhNEFsQVdHQUdZRmhnQm1CWVlBWmdXR0FHWUZoZ0JtQlRjQWZRVTNBSDBGTndCOUJUY0FmUVRnQUFjRVZBQmFCRlFBV2dSVUFGb0VWQUJhQkZRQVdnUlVBRm9FVkFCYUJEQUFUd1JMQUZNRVN3QlRCRXNBVXdSTEFGTUNHdiswQWhvQWp3SWEvN2NDR3YrckJITUFlUVNPQUU4RWpnQlBCSTRBVHdTT0FFOEVqZ0JQQkhJQWR3UnlBSGNFY2dCM0JISUFkd1BsQUF3RDVRQU1CVk1BRWdSVUFGb0ZVd0FTQkZRQVdnVlRBQklFVkFCYUJUa0FaZ1F3QUU4Rk9RQm1CREFBVHdVNUFHWUVNQUJQQlRrQVpnUXdBRThGT2dDVUJSb0FUd1NHQUpRRVN3QlRCSVlBbEFSTEFGTUVoZ0NVQkVzQVV3U0dBSlFFU3dCVEJJWUFsQVJMQUZNRmNnQnFCSWtBVWdWeUFHb0VpUUJTQlhJQWFnU0pBRklGY2dCcUJJa0FVZ1d2QUpRRWNRQjVBa0wvc3dJYS81OENRdis1QWhyL3BRSkMvOThDR3YvTEFrSUFGd0lMQUFBQ1FnQ2RCck1Bb3dRTUFIMEVjUUF0QWliL3RRVUxBSlFFTFFCOUJGUUFsQUlMQUlvRVZBQ1VBZ3NBVlFSVUFKUUNvUUNNQkZRQWxBTG5BSXdGcmdDVUJITUFlUVd1QUpRRWN3QjVCYTRBbEFSekFIa0VjLytsQllZQVpnU09BRThGaGdCbUJJNEFUd1dHQUdZRWpnQlBCUDRBbEFMUUFId0UvZ0NVQXRBQVR3VCtBSlFDMEFBNEJOUUFTZ1FoQUVzRTFBQktCQ0VBU3dUVUFFb0VJUUJMQk5RQVNnUWhBRXNFMUFCS0JDRUFTd1RiQUMwQ3FRQUlCTnNBTFFLcEFBZ0Uyd0F0QXRFQUNBVTNBSDBFY2dCM0JUY0FmUVJ5QUhjRk53QjlCSElBZHdVM0FIMEVjZ0IzQlRjQWZRUnlBSGNGTndCOUJISUFkd2NLQURBRjhnQWhCT0FBQndQbEFBd0U0QUFIQk5FQVVBUUdBRklFMFFCUUJBWUFVZ1RSQUZBRUJnQlNCNFgvOWdiQkFFZ0ZoQUJwQklnQVR3UjYvNllFZXYrbUJEc0FKQVNlQUFrRW5nQUpCSjRBQ1FTZUFBa0VuZ0FKQko0QUNRU2VBQWtFZ0FCUEErQUFkZ1BnQUhZRDRBQjJBK0FBZGdIOC82WUIvQUNEQWZ6L3FRSDgvNTBFM1FCMkJNQUFUd1RBQUU4RXdBQlBCTUFBVHdUQUFFOEVoQUJuQklRQVp3U0VBR2NFaEFCbkJEd0FCUVNlQUFrRW5nQUpCSjRBQ1FTQUFFOEVnQUJQQklBQVR3U0FBRThFZWdCcUErQUFkZ1BnQUhZRDRBQjJBK0FBZGdQZ0FIWUVwZ0JVQktZQVZBU21BRlFFcGdCVUJONEFkZ0g4LzVFQi9QK1hBZnovdlFIOEFCVUIvQUI4QTlVQUpBUmJBSFlEdVFCMkE3a0FkZ081QUhZRHVRQjJCTjBBZGdUZEFIWUUzUUIyQk1BQVR3VEFBRThFd0FCUEJGd0FkZ1JjQUhZRVhBQjJCRFFBUGdRMEFENEVOQUErQkRRQVBnUTdBQ1FFT3dBa0JEc0FKQVNFQUdjRWhBQm5CSVFBWndTRUFHY0VoQUJuQklRQVp3WUhBQ2dFUEFBRkJEd0FCUVFxQUVFRUtnQkJCQ29BUVFWVEFCSUU2djlLQmhQL1V3S20vMVlGbXYrbkJVVCs0UVZ2LzdJQ3F2K0hCVk1BRWdVTUFKUUVoZ0NVQk5FQVVBV3ZBSlFDUWdDakJRc0FsQWNCQUpRRnJnQ1VCWVlBWmdVZEFKUUUyd0F0Qk9BQUJ3VVFBQ2tDUXYrL0JPQUFCd1NFQUZZRVlBQmdCSWdBZmdLcUFLa0VZQUNBQkpnQWpnU09BRThFdXdDU0EvVUFGZ1FHQUI4Q3F2L01CR0FBZ0FTT0FFOEVZQUNBQnBRQVpnU0dBSlFFZFFDYkJOUUFTZ0pDQUtNQ1F2Ky9CSEVBTFFVb0FKc0ZDd0NVQlFvQU9RVlRBQklGREFDVUJIVUFtd1NHQUpRRnFBQ1VCd0VBbEFXdkFKUUZoZ0JtQmJFQW13VWRBSlFGT1FCbUJOc0FMUVVRQUNrRVZBQmFCRXNBVXdTWUFJWUVqZ0JQQklFQWZBUXdBRThENVFBTUJBWUFId1JMQUZNRFdnQ0ZCQ0VBU3dJTEFIMENHdityQWdIL3RRUnVBSThENVFBTUJ3b0FNQVh5QUNFSENnQXdCZklBSVFjS0FEQUY4Z0FoQk9BQUJ3UGxBQXdCV2dCU0FwZ0FaUVJLQUk4Q0p2K3hBYndBTXdjQkFKUUc5Z0I4QlZNQUVnUlVBRm9FaGdDVUJhZ0FsQVJMQUZNRW1BQ0dCYW9BUkFYSkFFOEZHZ0FRQkE3LzhRaHpBRThKYXdCbUJOWUFTUVFXQUUwRk9RQm1CREFBVHdUZ0FBY0VEZ0FnQWtJQW93ZWlBQllHZGdBZUFrSUFvd1ZUQUJJRVZBQmFCVk1BRWdSVUFGb0hoZi8yQnNFQVNBU0dBSlFFU3dCVEJZZ0FVUVE4QUZrRVBBQlpCNklBRmdaMkFCNEUxZ0JKQkJZQVRRV29BSlFFbUFDR0JhZ0FsQVNZQUlZRmhnQm1CSTRBVHdWNkFGOEVpQUJQQlhvQVh3U0lBRThGVUFCckJEd0FVUVVLQURrRDVRQU1CUW9BT1FQbEFBd0ZDZ0E1QStVQURBV0pBSTRFWmdCZkJ2a0Ftd1p2QUk4RkVBQXBCQVlBSHdTRUFFOEZxUUF0QkpvQUlRVlRBQklFVkFCYUJWTUFFZ1JVQUZvRlV3QVNCRlFBV2dWVEFCQUVWUCthQlZNQUVnUlVBRm9GVXdBU0JGUUFXZ1ZUQUJJRVZBQmFCVk1BRWdSVUFGb0ZVd0FTQkZRQVdnVlRBQklFVkFCYUJWTUFFZ1JVQUZvRlV3QVNCRlFBV2dTR0FKUUVTd0JUQklZQWxBUkxBRk1FaGdDVUJFc0FVd1NHQUpRRVN3QlRCSWIvMVFSTC80NEVoZ0NVQkVzQVV3U0dBSlFFU3dCVEJJWUFsQVJMQUZNQ1FnQ2pBaG9BandKQ0FKUUNDd0I0QllZQVpnU09BRThGaGdCbUJJNEFUd1dHQUdZRWpnQlBCWVlBSndTTy82TUZoZ0JtQkk0QVR3V0dBR1lFamdCUEJZWUFaZ1NPQUU4RmlnQllCSjRBVHdXS0FGZ0VuZ0JQQllvQVdBU2VBRThGaWdCWUJKNEFUd1dLQUZnRW5nQlBCVGNBZlFSeUFIY0ZOd0I5QkhJQWR3V2tBSDBFOGdCM0JhUUFmUVR5QUhjRnBBQjlCUElBZHdXa0FIMEU4Z0IzQmFRQWZRVHlBSGNFNEFBSEErVUFEQVRnQUFjRDVRQU1CT0FBQndQbEFBd0VvZ0JQQktJQVR3VW9BSnNFYmdDUEJhOEFsQVNYQUlZRTJ3QXRBL1VBSXdVUUFDa0VCZ0FmQllrQWpnUm1BRjhGaVFDT0JHWUFYd1IxQUpzRFdnQ0ZCNklBRmdaMkFCNEdKQUFXQk1QL3l3UnhBSGtGQi8vUUJRZi8wQVIxLy9BRFd2L2lCVHovNHdSRS82NEZxQUNVQkpnQWhnV3ZBSlFFbHdDR0J3RUFsQVlEQUk4RnFRQXRCSm9BSVFUZ0FBY0VEZ0FnQlJBQUtRUUdBQjhFWUFCZ0JHVUFBZ1l3QUlFRWpBQlJCSXdBVHdTTUFEUUVqQUNCQktBQVhRUzBBSDBGY2dCcUJJa0FVZ1d1QUpRRWN3QjVCVk1BRWdSVUFBMEVoZ0JJQkVzQUFRSkMvdllDR3Y3aUJZWUFaZ1NPQUJZRS9nQXlBdEQvYmdVM0FIRUVjZ0FQQk4vK3JBVU1BSlFFZ1FCOEJUb0FsQVNFQUU4Rk9nQ1VCSVFBVHdXdkFKUUVjUUI1QlFzQWxBUXRBSDBGQ3dDVUJDMEFmUVJVQUpRQ0N3QjRCd0VBbEFiMkFId0ZyZ0NVQkhNQWVRVWRBSlFFZ1FCOEJQNEFsQUxRQUhJRTFBQktCQ0VBU3dUYkFDMENxUUFJQlMwQUVnUDFBQllGTFFBU0EvVUFGZ2NLQURBRjhnQWhCTkVBVUFRR0FGSUZ6UDRjQko0QUNRUWMveW9GR3Y4M0Fqai9PUVRLLzVNRWVQN29CTzcvcEFTZUFBa0VZQUIyQStBQWRnUXFBRUVFM2dCMkFmd0FoUVJiQUhZR0JnQjJCTUFBVHdSdEFIWUVPd0FrQkR3QUJRUmVBQlVCL1ArZEJEd0FCUVBnQUhZRHVRQjJCRFFBUGdIOEFJVUIvUCtkQTlVQUpBUmJBSFlFUmdBZkJKNEFDUVJnQUhZRHVRQjJBK0FBZGdUa0FIWUdCZ0IyQk40QWRnVEFBRThFMkFCMkJHMEFkZ1NBQUU4RU93QWtCRjRBRlFSR0FFSUUzZ0IyQklBQVR3UThBQVVGL2dBS0JPUUFkZ1JHQUI4Rm5RQlFCVk1BRWdSVUFGb0VoZ0NVQkVzQVV3SWFBSGdBQUFBQkFBQUU1QWtMQkFBQUFnSUNBd1lGQndZQ0F3TUVCUUlEQXdRRkJRVUZCUVVGQlFVRkFnSUZCUVVFQ0FZR0JnWUZCUVlHQXdVR0JRZ0dCZ1lHQmdVRkJnWUlCZ1VGQWdRQ0JBUURCUVVGQlFVREJRVUNBZ1VDQ0FVRkJRVURCUU1GQkFjRkJBVURBZ01HQWdVRkJnVUNCZ1FIQkFRRkJ3UURCUU1EQXdVRUF3SURCQVFIQndjRUNBVUdCUVlJQlFVRkJRWUNCUVVEQmdVSkNBSUdBd1lGQmdZQ0JRUUVCQVFDQXdNRUJBTUFBQUFBQUFBREJRTUZCZ1lHQlFZRkJ3WUdCUVVGQlFVRkJRVURCUVVHQlFVRkJRVUhCd2NGQlFjSEJnb0tCd1lHQndrRkJnWUdCd2NHQ1FrSENBWUdDQVlGQlFRR0J3VUZCUVVIQlFVRUJ3VUZCd2dHQndVRkJ3VUZCUWdJQlFVSUJ3VUlCd1lGQ0FjSUJ3b0pCUVFHQlFZRkJnVUlCd2dIQmdVR0FBQUFBQUFBQlFZRkJRUUZCUVlGQndZSkJna0lCd1lJQmdZRkJnY0ZCZ1VHQlFZRkJRVUVCZ2dJQndZRkJRa0hDUWNHQlFZR0JnUUZDUVVKQXdJQ0JRSUNBUUFEQXdZSEJBSUNBZ0lEQkFNRkJRTUVCZ0lKQXdNRUF3UUZCd2dLQ0FjRkJ3VUZCZ1lIQkFrR0JnY0lDQWNGQmdVRkJRa0NCUVVGQlFVREF3SUdCUVVJQ0FZSUFBa0pCUVVDQWdRRUJBVUZCUVVFQWdVRkJRVUVCQVVGQWdRRkJBY0ZCUVVGQlFVRkJRVUhCUVVGQXdNREF3TURBd01EQXdRREJRVUdCZ1VHQlFVRkJRUUZCUVVFQlFVR0JnWUdCUWdJQmdVRkJnY0ZCZ1VGQlFZRkJ3Z0dCd1VGQndVRkJ3VUdCZ2NGQlFjRkJRY0ZCUVVGQkFrR0JRVUZCQVVGQlFVRkJnWUdCd2NGQlFRRkJRTURBd01EQXdNRkJRY0ZCZ0lDQWdJQ0JRSURCZ1lGQlFNR0JnWUdCZ1lHQmdVRkJRVURBd01EQmdZR0JnWUdCZ1lHQmdVRkJRVUZCUVVGQlFVRkJRVUNBZ0lDQlFVRkJRVUZCUVVGQlFRRUJnVUdCUVlGQmdVR0JRWUZCZ1VHQmdVRkJRVUZCUVVGQlFVR0JRWUZCZ1VHQlFZRkF3SURBZ01DQXdJRENBVUZBZ1lGQlFJRkFnVURCUU1HQlFZRkJnVUZCZ1VHQlFZRkJnTUdBd1lEQlFVRkJRVUZCUVVGQlFVREJRTUZBd1lGQmdVR0JRWUZCZ1VHQlFnSEJRUUZCUVVGQlFVRkNBZ0dCUVVGQlFVRkJRVUZCUVVGQkFRRUJBSUNBZ0lGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQkFRRUJBUUZCUVVGQlFJQ0FnSUNCQVVFQkFRRUJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUWNGQlFVRkJRWUdCd01HQmdZREJnWUZCUVlEQmdnR0JnWUZCUVlEQlFVRkJRTUZCUVVGQkFVREJRVUZCd1VGQlFNREJRWUdCZ1lHQlFVR0NBWUdCZ1lHQlFZRkJRVUZCUVVFQlFVRUJRSUNBZ1VFQ0FjSUJ3Z0hCUVFDQXdVQ0FnZ0lCZ1VGQmdVRkJnY0dCUW9MQlFVR0JRVUZBd2tIQXdZRkJnVUlDQVVGQmdVRkNRY0ZCUVlGQmdVR0JRWUZCZ1VHQlFZRUJnUUdCQVlGQ0FjR0JRVUdCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnVUdCUVlGQmdVR0JRVUZCUVVGQlFVRkJRVUZCUVVGQlFVREFnTUNCZ1VHQlFZRkJnVUdCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnVUdCUVlHQmdZR0JnWUdCZ1lGQkFVRUJRUUZCUVlGQmdVRkJBWUZCZ1VHQlFVRUNRY0hCUVVHQmdVRUJnVUdCUVlGQ0FjR0JRVUZCZ1VGQlFjRkJRVUZCUVVHQlFZRkJnVUZCUU1DQmdVR0F3WUZCUVlGQmdVR0JRWUZCZ1VHQlFVQ0NBZ0dCUVlGQmdNRkJRVURCZ1FHQkFnSEJRVUhCUVVHQXdVRkJnVUZCQVVGQWdVSEJRVUZCUVVDQlFRRUJRSUNCQVVGQlFVRUJBWUhCUVVGQlFVRkJRVUZCUVVIQmdVR0JnVUZCUUlBQUFBREFBQUFBd0FBQUJ3QUF3QUJBQUFBSEFBREFBb0FBQWFJQUFRR2JBQUFBT29BZ0FBR0FHb0FBQUFDQUEwQWZnQ2dBS3dBclFDL0FNWUF6d0RtQU84QS9nRVBBUkVCSlFFbkFUQUJVd0ZmQVdjQmZnRi9BWThCa2dHaEFiQUI4QUgvQWhzQ053SlpBcndDeHdMSkF0MEM4d01CQXdNRENRTVBBeU1EaWdPTUE1SURvUU93QTdrRHlRUE9BOUlEMWdRbEJDOEVSUVJQQkdJRWJ3UjVCSVlFemdUWEJPRUU5UVVCQlJBRkV4NEJIajhlaFI3eEh2TWUrUjlOSUFzZ0VTQVZJQjRnSWlBbklEQWdNeUE2SUR3Z1JDQjBJSDhncENDcUlLd2dzU0M2SUwwaEJTRVRJUlloSWlFbUlTNGhYaUlDSWdZaUR5SVNJaG9pSGlJcklrZ2lZQ0psSmNydUF2YkQrd1QrLy8vOS8vOEFBQUFBQUFJQURRQWdBS0FBb1FDdEFLNEF3QURIQU5BQTV3RHdBUDhCRUFFU0FTWUJLQUV4QVZRQllBRm9BWDhCandHU0FhQUJyd0h3QWZvQ0dBSTNBbGtDdkFMR0Fza0MyQUx6QXdBREF3TUpBdzhESXdPRUE0d0RqZ09UQTZNRHNRTzZBOG9EMFFQV0JBQUVKZ1F3QkVZRVVBUmpCSEFFZWdTSUJNOEUyQVRpQlBZRkFnVVJIZ0FlUGg2QUhxQWU4aDcwSDAwZ0FDQVFJQk1nRnlBZ0lDVWdNQ0F5SURrZ1BDQkVJSFFnZnlDaklLWWdxeUN4SUxrZ3ZDRUZJUk1oRmlFaUlTWWhMaUZiSWdJaUJpSVBJaEVpR2lJZUlpc2lTQ0pnSW1RbHl1NEI5c1A3QWY3Ly8vei8vd0FCQUFELzl2L2tBYVQvd2dHWS84RUFBQUdMQUFBQmhnQUFBWUlBQUFHQUFBQUJmZ0FBQVhZQUFBRjQveFgvQnY4RS92Zis2Z0c2QUFBQUFQNWsva01BNy8zWC9kYjl5UDJ6L2FmOXB2MmgvWno5aVFBQS84ci95UUFBQUFEOUNRQUEvNnI4L2Z6NkFBRDh1UUFBL0xFQUFQeW1BQUQ4b0FBQS92UUFBUDd4QUFEOFNRQUE1YTdsYnVVZjVVN2tzK1ZNNVZ6aFcrRlhBQURoVk9GVDRWSGhTZU4xNFVIamJlRTQ0UW5nL3dBQTROb0FBT0RWNE03Z3plQ0c0SG5nZCtCczM1UGdZZUExMzVMZXE5K0czNFhmZnQ5NzMyL2ZVOTg4M3puYjFST2ZDdDhHb3dLckFhOEFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEyZ0FBQU9RQUFBRU9BQUFCS0FBQUFTZ0FBQUVvQUFBQmFnQUFBQUFBQUFBQUFBQUFBQUFBQVdvQmRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGaUFBQUFBQUZxQVlZQUFBR2VBQUFBQUFBQUFiWUFBQUgrQUFBQ0pnQUFBa2dBQUFKWUFBQUM0Z0FBQXZJQUFBTUdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBdmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMb0FBQUM2QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpMQWt3Q1RRSk9BazhDVUFDQkFrY0NXd0pjQWwwQ1hnSmZBbUFBZ2dDREFtRUNZZ0pqQW1RQ1pRQ0VBSVVDWmdKbkFtZ0NhUUpxQW1zQWhnQ0hBbllDZHdKNEFua0NlZ0o3QUlnQWlRSjhBbjBDZmdKL0FvQUFpZ0pHQkVZQWl3SklBSXdDcndLd0FyRUNzZ0t6QXJRQWpRSzFBcllDdHdLNEFya0N1Z0s3QXJ3QWpnQ1BBcjBDdmdLL0FzQUN3UUxDQXNNQWtBQ1JBc1FDeFFMR0FzY0N5QUxKQUpJQWt3TFlBdGtDM0FMZEF0NEMzd0pKQWtvQ1VRSnNBdmNDK0FMNUF2b0MxZ0xYQXRvQzJ3Q3RBSzREVWdDdkExTURWQU5WQUxBQXNRTmNBMTBEWGdDeUExOERZQUN6QTJFRFlnQzBBMk1BdFFOa0FMWURaUU5tQUxjRFp3QzRBTGtEYUFOcEEyb0Rhd05zQTIwRGJnTnZBTU1EY1FOeUFNUURjQURGQU1ZQXh3RElBTWtBeWdETEEzTUF6QUROQTdBRGVRRFJBM29BMGdON0Ezd0RmUU4rQU5NQTFBRFZBNEFEc1FPQkFOWURnZ0RYQTRNRGhBRFlBNFVBMlFEYUFOc0RoZ04vQU53RGh3T0lBNGtEaWdPTEE0d0RqUURkQU40RGpnT1BBT2tBNmdEckFPd0RrQUR0QU80QTd3T1JBUEFBOFFEeUFQTURrZ0QwQTVNRGxBRDFBNVVBOWdPV0E3SURsd0VCQTVnQkFnT1pBNW9EbXdPY0FRTUJCQUVGQTUwRHN3T2VBUVlCQndFSUJGd0R0QU8xQVJZQkZ3RVlBUmtEdGdPM0E3a0R1QUVuQVNnRVlRUmlCRnNCS1FFcUFTc0JMQUV0QkYwRVhnRXVBUzhFVmdSWEE3b0R1d1JJQkVrQk1BRXhCRjhFWUFFeUFUTUVTZ1JMQVRRQk5RRTJBVGNCT0FFNUE3d0R2UVJNQkUwRHZnTy9CR2tFYWdST0JFOEJPZ0U3QkZBRVVRRThBVDBCUGdSYUFUOEJRQVJZQkZrRHdBUEJBOElCUVFGQ0JHY0VhQUZEQVVRRVl3UmtCRklFVXdSbEJHWUJSUVBOQTh3RHpnUFBBOUFEMFFQU0FVWUJSd1JVQkZVRDV3UG9BVWdCU1FQcEErb0Vhd1JzQVVvRDZ3UnRBK3dEN1FGcEFXb0Vid1J1QVg4RVJ3R0ZBQXdBQUFBQURFQUFBQUFBQUFBQkJBQUFBQUFBQUFBQUFBQUFBUUFBQUFJQUFBQUNBQUFBQWdBQUFBMEFBQUFOQUFBQUF3QUFBQ0FBQUFCK0FBQUFCQUFBQUtBQUFBQ2dBQUFDUkFBQUFLRUFBQUNzQUFBQVl3QUFBSzBBQUFDdEFBQUNSUUFBQUs0QUFBQy9BQUFBYndBQUFNQUFBQURGQUFBQ1N3QUFBTVlBQUFER0FBQUFnUUFBQU1jQUFBRFBBQUFDVWdBQUFOQUFBQURRQUFBQ1J3QUFBTkVBQUFEV0FBQUNXd0FBQU5jQUFBRFlBQUFBZ2dBQUFOa0FBQURkQUFBQ1lRQUFBTjRBQUFEZkFBQUFoQUFBQU9BQUFBRGxBQUFDWmdBQUFPWUFBQURtQUFBQWhnQUFBT2NBQUFEdkFBQUNiUUFBQVBBQUFBRHdBQUFBaHdBQUFQRUFBQUQyQUFBQ2RnQUFBUGNBQUFENEFBQUFpQUFBQVBrQUFBRDlBQUFDZkFBQUFQNEFBQUQrQUFBQWlnQUFBUDhBQUFFUEFBQUNnUUFBQVJBQUFBRVFBQUFDUmdBQUFSRUFBQUVSQUFBRVJnQUFBUklBQUFFbEFBQUNrZ0FBQVNZQUFBRW1BQUFBaXdBQUFTY0FBQUVuQUFBQ1NBQUFBU2dBQUFFd0FBQUNwZ0FBQVRFQUFBRXhBQUFBakFBQUFUSUFBQUUzQUFBQ3J3QUFBVGdBQUFFNEFBQUFqUUFBQVRrQUFBRkFBQUFDdFFBQUFVRUFBQUZDQUFBQWpnQUFBVU1BQUFGSkFBQUN2UUFBQVVvQUFBRkxBQUFBa0FBQUFVd0FBQUZSQUFBQ3hBQUFBVklBQUFGVEFBQUFrZ0FBQVZRQUFBRmZBQUFDeWdBQUFXQUFBQUZoQUFBQzJBQUFBV0lBQUFGbEFBQUMzQUFBQVdZQUFBRm5BQUFDU1FBQUFXZ0FBQUYrQUFBQzRBQUFBWDhBQUFGL0FBQUFsQUFBQVk4QUFBR1BBQUFBbFFBQUFaSUFBQUdTQUFBQWxnQUFBYUFBQUFHaEFBQUFsd0FBQWE4QUFBR3dBQUFBbVFBQUFmQUFBQUh3QUFBRHFnQUFBZm9BQUFINkFBQUNVUUFBQWZzQUFBSDdBQUFDYkFBQUFmd0FBQUgvQUFBQzl3QUFBaGdBQUFJWkFBQUMxZ0FBQWhvQUFBSWJBQUFDMmdBQUFqY0FBQUkzQUFBQW13QUFBbGtBQUFKWkFBQUFuQUFBQXJ3QUFBSzhBQUFEcXdBQUFzWUFBQUxIQUFBQW5RQUFBc2tBQUFMSkFBQUFud0FBQXRnQUFBTGRBQUFBb0FBQUF2TUFBQUx6QUFBQXBnQUFBd0FBQUFNQkFBQUFwd0FBQXdNQUFBTURBQUFBcVFBQUF3a0FBQU1KQUFBQXFnQUFBdzhBQUFNUEFBQUFxd0FBQXlNQUFBTWpBQUFBckFBQUE0UUFBQU9GQUFBQXJRQUFBNFlBQUFPR0FBQURVZ0FBQTRjQUFBT0hBQUFBcndBQUE0Z0FBQU9LQUFBRFV3QUFBNHdBQUFPTUFBQURWZ0FBQTQ0QUFBT1NBQUFEVndBQUE1TUFBQU9VQUFBQXNBQUFBNVVBQUFPWEFBQURYQUFBQTVnQUFBT1lBQUFBc2dBQUE1a0FBQU9hQUFBRFh3QUFBNXNBQUFPYkFBQUFzd0FBQTV3QUFBT2RBQUFEWVFBQUE1NEFBQU9lQUFBQXRBQUFBNThBQUFPZkFBQURZd0FBQTZBQUFBT2dBQUFBdFFBQUE2RUFBQU9oQUFBRFpBQUFBNk1BQUFPakFBQUF0Z0FBQTZRQUFBT2xBQUFEWlFBQUE2WUFBQU9tQUFBQXR3QUFBNmNBQUFPbkFBQURad0FBQTZnQUFBT3BBQUFBdUFBQUE2b0FBQU93QUFBRGFBQUFBN0VBQUFPNUFBQUF1Z0FBQTdvQUFBTzZBQUFEYndBQUE3c0FBQU83QUFBQXd3QUFBN3dBQUFPOUFBQURjUUFBQTc0QUFBTytBQUFBeEFBQUE3OEFBQU8vQUFBRGNBQUFBOEFBQUFQR0FBQUF4UUFBQThjQUFBUEhBQUFEY3dBQUE4Z0FBQVBKQUFBQXpBQUFBOG9BQUFQT0FBQURkQUFBQTlFQUFBUFNBQUFBemdBQUE5WUFBQVBXQUFBQTBBQUFCQUFBQUFRQUFBQURzQUFBQkFFQUFBUUJBQUFEZVFBQUJBSUFBQVFDQUFBQTBRQUFCQU1BQUFRREFBQURlZ0FBQkFRQUFBUUVBQUFBMGdBQUJBVUFBQVFJQUFBRGV3QUFCQWtBQUFRTEFBQUEwd0FBQkF3QUFBUU1BQUFEZ0FBQUJBMEFBQVFOQUFBRHNRQUFCQTRBQUFRT0FBQURnUUFBQkE4QUFBUVBBQUFBMWdBQUJCQUFBQVFRQUFBRGdnQUFCQkVBQUFRUkFBQUExd0FBQkJJQUFBUVRBQUFEZ3dBQUJCUUFBQVFVQUFBQTJBQUFCQlVBQUFRVkFBQURoUUFBQkJZQUFBUVlBQUFBMlFBQUJCa0FBQVFaQUFBRGhnQUFCQm9BQUFRYUFBQURmd0FBQkJzQUFBUWJBQUFBM0FBQUJCd0FBQVFpQUFBRGh3QUFCQ01BQUFRa0FBQUEzUUFBQkNVQUFBUWxBQUFEamdBQUJDWUFBQVF2QUFBQTN3QUFCREFBQUFRd0FBQURqd0FBQkRFQUFBUTBBQUFBNlFBQUJEVUFBQVExQUFBRGtBQUFCRFlBQUFRNEFBQUE3UUFBQkRrQUFBUTVBQUFEa1FBQUJEb0FBQVE5QUFBQThBQUFCRDRBQUFRK0FBQURrZ0FBQkQ4QUFBUS9BQUFBOUFBQUJFQUFBQVJCQUFBRGt3QUFCRUlBQUFSQ0FBQUE5UUFBQkVNQUFBUkRBQUFEbFFBQUJFUUFBQVJFQUFBQTlnQUFCRVVBQUFSRkFBQURsZ0FBQkVZQUFBUlBBQUFBOXdBQUJGQUFBQVJRQUFBRHNnQUFCRkVBQUFSUkFBQURsd0FBQkZJQUFBUlNBQUFCQVFBQUJGTUFBQVJUQUFBRG1BQUFCRlFBQUFSVUFBQUJBZ0FBQkZVQUFBUllBQUFEbVFBQUJGa0FBQVJiQUFBQkF3QUFCRndBQUFSY0FBQURuUUFBQkYwQUFBUmRBQUFEc3dBQUJGNEFBQVJlQUFBRG5nQUFCRjhBQUFSaEFBQUJCZ0FBQkdJQUFBUmlBQUFFWEFBQUJHTUFBQVJ2QUFBQkNRQUFCSEFBQUFSeEFBQUR0QUFBQkhJQUFBUjFBQUFCRmdBQUJIWUFBQVIzQUFBRHRnQUFCSGdBQUFSNEFBQUR1UUFBQkhrQUFBUjVBQUFEdUFBQUJIb0FBQVNHQUFBQkdnQUFCSWdBQUFTSkFBQUJKd0FBQklvQUFBU0xBQUFFWVFBQUJJd0FBQVNNQUFBRVd3QUFCSTBBQUFTUkFBQUJLUUFBQkpJQUFBU1RBQUFFWFFBQUJKUUFBQVNWQUFBQkxnQUFCSllBQUFTWEFBQUVWZ0FBQkpnQUFBU1pBQUFEdWdBQUJKb0FBQVNiQUFBRVNBQUFCSndBQUFTZEFBQUJNQUFBQko0QUFBU2ZBQUFFWHdBQUJLQUFBQVNoQUFBQk1nQUFCS0lBQUFTakFBQUVTZ0FBQktRQUFBU3BBQUFCTkFBQUJLb0FBQVNyQUFBRHZBQUFCS3dBQUFTdEFBQUVUQUFBQks0QUFBU3ZBQUFEdmdBQUJMQUFBQVN4QUFBRWFRQUFCTElBQUFTekFBQUVUZ0FBQkxRQUFBUzFBQUFCT2dBQUJMWUFBQVMzQUFBRVVBQUFCTGdBQUFTNkFBQUJQQUFBQkxzQUFBUzdBQUFFV2dBQUJMd0FBQVM5QUFBQlB3QUFCTDRBQUFTL0FBQUVXQUFBQk1BQUFBVENBQUFEd0FBQUJNTUFBQVRFQUFBQlFRQUFCTVVBQUFUR0FBQUVad0FBQk1jQUFBVElBQUFCUXdBQUJNa0FBQVRLQUFBRVl3QUFCTXNBQUFUTUFBQUVVZ0FBQk0wQUFBVE9BQUFFWlFBQUJNOEFBQVRYQUFBRHd3QUFCTmdBQUFUWUFBQUJSUUFBQk5rQUFBVFpBQUFEelFBQUJOb0FBQVRhQUFBRHpBQUFCTnNBQUFUZkFBQUR6Z0FBQk9BQUFBVGhBQUFCUmdBQUJPSUFBQVQxQUFBRDB3QUFCUFlBQUFUM0FBQUVWQUFBQlBnQUFBVDVBQUFENXdBQUJQb0FBQVQ3QUFBQlNBQUFCUHdBQUFUOUFBQUQ2UUFBQlA0QUFBVC9BQUFFYXdBQUJRQUFBQVVBQUFBQlNnQUFCUUVBQUFVQkFBQUQ2d0FBQlFJQUFBVVFBQUFCU3dBQUJSRUFBQVVSQUFBRWJRQUFCUklBQUFVVEFBQUQ3QUFBSGdBQUFCNEJBQUFEcmdBQUhqNEFBQjQvQUFBRHJBQUFIb0FBQUI2RkFBQURud0FBSHFBQUFCN3hBQUFEN2dBQUh2SUFBQjd6QUFBRHBRQUFIdlFBQUI3NUFBQUVRQUFBSDAwQUFCOU5BQUFFcVFBQUlBQUFBQ0FMQUFBQld3QUFJQkFBQUNBUkFBQUJad0FBSUJNQUFDQVVBQUFCYVFBQUlCVUFBQ0FWQUFBRWJ3QUFJQmNBQUNBZUFBQUJhd0FBSUNBQUFDQWlBQUFCY3dBQUlDVUFBQ0FuQUFBQmRnQUFJREFBQUNBd0FBQUJlUUFBSURJQUFDQXpBQUFEcHdBQUlEa0FBQ0E2QUFBQmVnQUFJRHdBQUNBOEFBQURxUUFBSUVRQUFDQkVBQUFCZkFBQUlIUUFBQ0IwQUFBQmZRQUFJSDhBQUNCL0FBQUJmZ0FBSUtNQUFDQ2pBQUFFYmdBQUlLUUFBQ0NrQUFBQmZ3QUFJS1lBQUNDcUFBQUJnQUFBSUtzQUFDQ3JBQUFFUndBQUlLd0FBQ0NzQUFBQmhRQUFJTEVBQUNDeEFBQUJoZ0FBSUxrQUFDQzZBQUFCaHdBQUlMd0FBQ0M5QUFBQmlRQUFJUVVBQUNFRkFBQUJpd0FBSVJNQUFDRVRBQUFCakFBQUlSWUFBQ0VXQUFBQmpRQUFJU0lBQUNFaUFBQUJqZ0FBSVNZQUFDRW1BQUFBdVFBQUlTNEFBQ0V1QUFBQmp3QUFJVnNBQUNGZUFBQUJrQUFBSWdJQUFDSUNBQUFCbEFBQUlnWUFBQ0lHQUFBQXNRQUFJZzhBQUNJUEFBQUJsUUFBSWhFQUFDSVNBQUFCbGdBQUlob0FBQ0lhQUFBQm1BQUFJaDRBQUNJZUFBQUJtUUFBSWlzQUFDSXJBQUFCbWdBQUlrZ0FBQ0pJQUFBQm13QUFJbUFBQUNKZ0FBQUJuQUFBSW1RQUFDSmxBQUFCblFBQUpjb0FBQ1hLQUFBQm53QUE3Z0VBQU80Q0FBQUJvQUFBOXNNQUFQYkRBQUFCb2dBQSt3RUFBUHNFQUFBQnBBQUEvdjhBQVA3L0FBQUJxZ0FBLy93QUFQLzlBQUFCcTdBQUxFdXdDVkJZc1FFQmpsbTRBZitGc0lRZHNRa0RYMTR0c0FFc0lDQkZhVVN3QVdBdHNBSXNzQUVxSVMyd0F5d2dSckFESlVaU1dDTlpJSW9naWtsa2lpQkdJR2hoWkxBRUpVWWdhR0ZrVWxnalpZcFpMeUN3QUZOWWFTQ3dBRlJZSWJCQVdSdHBJTEFBVkZnaHNFQmxXVms2TGJBRUxDQkdzQVFsUmxKWUk0cFpJRVlnYW1Ga3NBUWxSaUJxWVdSU1dDT0tXUy85TGJBRkxFc2dzQU1tVUZoUldMQ0FSQnV3UUVSWkd5RWhJRVd3d0ZCWXNNQkVHeUZaV1Myd0Jpd2dJRVZwUkxBQllDQWdSWDFwR0VTd0FXQXRzQWNzc0FZcUxiQUlMRXNnc0FNbVUxaXdRQnV3QUZtS2lpQ3dBeVpUV0NNaHNJQ0tpaHVLSTFrZ3NBTW1VMWdqSWJEQWlvb2JpaU5aSUxBREpsTllJeUc0QVFDS2lodUtJMWtnc0FNbVUxZ2pJYmdCUUlxS0c0b2pXU0N3QXlaVFdMQURKVVc0QVlCUVdDTWh1QUdBSXlFYnNBTWxSU01oSXlGWkd5RlpSQzJ3Q1N4TFUxaEZSQnNoSVZrdHNBb3NzQ2xGTGJBTExMQXFSUzJ3REN5eEp3R0lJSXBUV0xsQUFBUUFZN2dJQUloVVdMa0FLUVBvY0ZrYnNDTlRXTEFnaUxnUUFGUll1UUFwQStod1dWbFpMYkFOTExCQWlMZ2dBRnBZc1NvQVJCdTVBQ29ENkVSWkxiQU1LN0FBS3dDeUFRMENLd0d5RGdFQ0t3RzNEam93SlJzUUFBZ3JBTGNCT0M0a0doRUFDQ3UzQWs1QU1pTVZBQWdydHdOSU95NGhGQUFJSzdjRVRrQXlJeFVBQ0N1M0JUQW9IeFlPQUFncnR3WmpVVDh0R3dBSUs3Y0hRRFFrR2hFQUNDdTNDRnRLT2lrWkFBZ3J0d21EWkU0Nkl3QUlLN2NLZDJKTU5pRUFDQ3UzQzVGM1hEb2pBQWdydHd4MllFczJIUUFJSzdjTkxDUWNGQXdBQ0NzQXNnOE5CeXV3QUNCRmZXa1lSTEt3RXdGenNsQVRBWFN5Z0JNQmRMSndFd0Yxc2c4ZkFYT3lieDhCZFFBcUFNd0FrUUNlQUpFQTdBQnlBTElBZlFCV0FGOEFUZ0JnQVFRQXhBQUFBQlQrWUFBVUFwc0FFUDg1QUEzK2x3QVNBeUVBQ3dRNkFCUUVqUUFRQmJBQUZBWVlBQlVHd0FBUUFsc0FFZ2NFQUFVQUFBQUFBQUFBQUFCZ0FHQUFZQUJnQUdBQW1nREVBVUFCdndKWUF2UUREZ002QTJrRG5BUEJBK01EK1FRZ0JEY0Vpd1M1QlFvRmZRWEJCaWNHandhOEJ6b0hwQWV3Qjd3SDJ3Z0NDQ0VJaHdrekNYTUozUW93Q25rS3VRcnZDMDRMaXd1bUM5a01JQXhFREowTTJRMHpEWDROM2c0M0RxVU96dzhORHo0UGpRL1lFQWtRUVJCbEVId1FvUkRJRU9NUkJCR0RFZU1TTnhLVUV3Z1RVUlBMRkFzVVJSU1FGTmNVOGhWZEZhWVY5QlpZRnJnVzlSZGpGNjRYOUJna0dISVl1eGo4R1RRWmR4bU9HYzhhRXhwUUdySWJGUnQyRzlrYitCeVRITVFkWlIzakhlOGVEQjY4SHRJZkVSOVVINmNnR1NBNUlJb2d0aURXSVFzaE9TR0RJWThocVNIRElkMGlSaUtxSXVnall5TzBKQ0FrM2lWV0phc21IU1o4SnRvbTlTZEJKNG9ueHlnZUtIa28vU21aS2NrcUxDcVNLdjhyWXl1M0xCRXNRaXlsTE53dEJDME1MVHN0WGkyV0xjSXVCUzQ2TG40dW5pNitMc2N1OVM4bkwwTXZYQytoTDZrdnp5LzhNSFV3b3pEak1SRXhUVEhDTWh3eWhUTDRNMmd6bXpRUE5JMDA1elV3TmFNMTBEWW9OcGcyNlRkQ041ODM5VGc1T0hnNDVEazJPWlk2RGpwZU90TTdORHVqUEJnOGpEemRQUms5Y1QzTlBqayt1RDd4UHpvL2dEL3NRQ0pBWTBDZ1FPbEJRa0dtUWZKQ2FFTG5RMEZEcVVRVFJEbEVqa1Q3UlhsRnNrWURSa3BHbEVicVJ4aEhSRWZPU0FSSVJraURTTWRKRzBsOVNjZEtPRXF3U3dsTGdVdnZUR05NMDAwM1RYTk4wazR4VHBoUEhVK2VUK3RRT1ZDbFVSSlJoRkgxVW41VEJsT2tWRGRVcFZVUFZWTlZtVllFVm10WEsxZmpXRnhZMjFrd1dZTlp1Rm5VV2dkYUhWb3pXd1JiY2x2YVhERmNvRnpNWFBWZFNsMlZYZXRlUFY2Tlh1SmZRVitQWCsxZ1EyRFNZVnhob21IbFlqZGlobUxKWXpoanQyUVhaR3hreW1VbFpZeGw3bVpJWmxkbVoyYTJaeDVucFdnWGFJQm81bWxLYWJWcUgycURhdkJyUzJ1ZGErOXNRR3kyYk9GczRXemhiT0ZzNFd6aGJPRnM0V3poYk9GczRXemhiT0ZzNld6eGJQdHRCVzBnYlVOdFpXMkZiYVJ0c0cyOGJlNXVMRzZOYnJGdXZXN05idVp2dEcvUWIreHYvM0FUY0ZwdzNIRitjZ3B5Rm5MbWMwdHp5WFIrZE9SMVhuVzJkaVIyd1hjaWQ3aDRGbmg0ZUpKNHJIakdlT0I1UzNseGVhbDV2M256ZW9WNngzdEdlNFY3bEh1amU5eDc3M3dZZkRGOFBYeWdmUFY5am40WWZvOS9TSDlJZ1BpQllZR09nZ3VDUElKU2dzR0RHNE5vZzltRUw0UjFoTHlGQ29VdGhXdUY3NFpFaG95R3pJY0NoMkNIdW9mVmlBQ0lRNGhuaUxtSThvbEdpWStKNm9wQ2lxdUsxWXNPaXorTGlZdlNqQU9NTzR5RGpLeU0vbzF4amJPT0VvNXVqcHVQSDQ5L2o1V1A2SkNXa1ArUllwR3JrZkdTTTVKMGt1cVRVNVBKay9PVUtKU2JsTTZWR0pWS2xZMlYrNVpNbHErWERKZUZsL2lZaUpqWW1SZVpiSm5DbWoyYXU1cjNtMCtibUp2Ym5CU2NWWnlObk11ZElaMHRuWG1kNzU1K250R2ZFNStVbi9tZ1g2REJvVkNoWEtHdG9mbWlSNktJb3ZlalhLTzZwRENrd3FWSHBkNm1VNmF5cHdXblphZHRwN21vSHFpQnFQS3BiYW5BcWlLcWJhckpxeXFyVkt1cnE5ZXNMcXgycklxc25xeXdyTVNzMXF6dHJRR3RYNjJGcmdLdVpxNjRyc0N1eUs3UXJ0dXU0NjlKcjBtdlVhL0JzREd3a3JEVXNUZXhUckZsc1h5eGpyR21zYm14eGJIUnNlaXgvN0lXc2k2eVJiSmNzbk95aTdLZHNyU3l5N0xpc3ZtekViTW9zenF6VWJOcHM0Q3psN09wczcrejFiUHN0QVMwRUxRY3RETzBSYlJidEhLMGlMU2V0TFcwemJUZXRQVzFCN1VkdFM2MVJyVmR0VysxaGJXY3RhNjF4YlhjdGUyMkJMWWJ0b1czSjdjNXQwdTNZcmQ0dDQrM3ByZTR0OG0zMjdmcnVBSzRFN2dxdUVDNFY3aHV1TnU1Y3JtSnVacTVzYm5IdWQ2NTlMb0x1aUs2THJwQXVsZTZhYnFBdXBLNnFickF1dGU2N3JyNXV3UzdHN3NudXpPN1NydGh1MjI3ZWJ1UXU2ZTdzN3UvdTlTNzZidjF2QUc4R0x3cXZEYThRcnhadkdxOGY3eVd2S2U4dnJ6VnZPMjlCYjBYdlNtOU5iMUJ2Vk85WkwxMnZZaTluNzIxdmNHOXpiM1p2ZVc5OTc0SXZoUytJTDRzdmppK1Q3NWJ2bksraUw2YXZyQyt4NzdldnZHL0JMOGN2eSsvamIvdndBYkFIY0Ewd0VyQVlzQjV3SkRBcDhDK3dOREE0Y0Q0d1FyQkljRTR3V2pCbU1Hb3diL0Ixc0hzd2YzQ0ZjSXR3am5DUmNKY3duUENpY0tnd3JmQ3pjTGt3dnpERHNNbHd6ZkRUY05ldzNiRGpjT2t3N3JEMHNQcHcvL0VGc1I5eEkvRXBjUzh4TTNFM3NUMHhRckZJY1dPeGFURnVzWFJ4ZWpGOU1ZS3hoekdNOFpLeGxYR2E4YUN4bzdHcE1hd3hzWEcwY2JveHZUSEM4Y2N4elBIUnNkWXgyVEhkY2VIeDUzSHFjZTZ4OGJIM01mb3gvN0lEOGdteURuSVRNaXR5TVRJMnNqeHlRakpIOGsxeVVESlRNbFl5V1RKY01sOHlZakpvOG1yeWJQSnU4bkR5Y3ZKMDhuYnllUEo2OG56eWZ2S0E4b0x5aFBLSzhwRHlsWEtaOHA1eW9yS3BNcXN5clRLdk1yRXlzeks1TXI3eXczTEg4c3h5MG5MWU12T3k5Ykw3c3YyeS83TUZjd3N6RFRNUE14RXpFek1ZOHhyekhQTWU4eUR6SXZNazh5YnpLUE1xOHl6ek1yTTBzemF6UzdOTnMwK3pWWE5iTTEwelh6TmxNMmN6YlBOeWMzZ3pmZk9EczRsempqT1M4NWl6blBPaDg2bXpyTE94TTdNenVQTzljOEJ6dzNQSk04N3oxTFBhYzl4ejNuUGtjK3B6N1hQd2MvTno5blA1Yy94ei9uUUFkQUowQ0RRTjlBLzBGYlFiZENGMEp6UXBOQ3MwTVBRMmREeDBQblJFTkVvMFVEUldORnYwWWJSbk5HMDBjelI1Tkg4MGdUU0ROSWswanZTVTlKcTBuelNqZEtsMHJ6UzFOTHMwd1RURzlNMzAxUFRYOU5yMDNQVGY5T0wwNWZUbzlPMTA4ZlQ0TlB5MUF2VUhkUXcxRUxVVmRSbjFIZlVodFNaMUt2VXZ0VFExT1BVOWRVSTFSclZLdFU2MVViVlV0VmsxWGJWaU5XWjFiTFZ4TlhkMWUvV0F0WVUxaWZXT2RaSjFsaldhdFo4MW9qV2xOYWcxcXpXdnRiUTF1UFc5ZGNJMXhyWExkYy8xMUxYWk5kMDE0UFhqOWVoMTYzWHY5ZkwxOTNYNmRmNjJBYllFdGdlMkNyWVBOaE8yR0RZY3RpRTJKYllxTmk2Mk16WTNkanAyUFhaQWRrTjJSL1pNZGxEMlZUWnp0bm8yZlRhQU5vTTJoamFKTm93Mmp6YVNOcFUybURhYk5wNDJvVGFrTnFjMnFqYXROckEyc2piTGR1UzI5RGNEOXh0M016YzU5MEMzUTdkR3QwbTNUTGRQdDFLM1pYZDVONCszcGJlbnQ2cTNyVGV2TjdFM3N6ZTFON2MzdVRlOXQ4STN4L2ZOdDlPMzJiZmZ0K1czNjdmeHQvZTMvYmdEdUFtNEQ3Z1Z1Qmk0RzdnZXVDRzRKTGdudUNxNExiZ3d1RFU0T2JnOHVEKzRRcmhGdUVpNFM3aE91Rkc0VmpoYXVGMjRZTGhqdUdhNGFiaHN1SEU0ZFhoNGVIdDRmbmlCZUlSNGgzaUtlSTE0a0hpVGVKWjRtWGljZUo5NG9YaWplS1Y0cDNpcGVLdDRyWGl2ZUxGNHMzaTFlTGQ0dVhpL2VNVTR5dmpQZU5GNDAzalplTnQ0My9qbGVPZDQ2WGpyZU8xNDh6ajFPUGM0K1RqN09QMDQvemtCT1FNNUpubEN1VnI1WFBsZitXUjVhTGxxdVcyNWNMbHp1WGE1ZVlBQUFBRkFHUUFBQU1vQmJBQUF3QUdBQWtBREFBUEFHK3lEQkFSRVJJNXNBd1FzQURRc0F3UXNBYlFzQXdRc0FuUXNBd1FzQTNRQUxBQVJWaXdBaThic1FJZlBsbXdBRVZZc0FBdkc3RUFEejVac2dRQ0FCRVNPYklGQWdBUkVqbXlCd0lBRVJJNXNnZ0NBQkVTT2JBSzNMSU1BZ0FSRWpteURRSUFFUkk1c0FJUXNBN2NNREVoSVJFaEF4RUJBUkVCQXlFQk5RRWhBeWo5UEFMRU52N3Uvcm9CRE9RQ0EvNytBUUw5L1FXdytxUUZCLzE5QW5mN0VRSjQvVjRDWG9nQ1hnQUNBSS8vOGdHakJiQUFBd0FOQUR1eUJnNFBFUkk1c0FZUXNBSFFBTEFBUlZpd0FpOGJzUUlmUGxtd0FFVllzQXd2RzdFTUR6NVpzZ1lOQ2l0WUlkZ2I5Rm13QWRDd0FTOHdNUUVqQXlFQk5EWXlGaFVVQmlJbUFYN1JGd0VBL3ZsS2dFcEloRWdCclFRRCtzTTVTMHM1TjBwS0FBSUFaUVAwQWtBR0FBQUVBQWtBSlFDd0FFVllzQU12RzdFRElUNVpzQUxRc0FJdnNBZlFzQWN2c0FNUXNBalFzQWd2TURFQkF5TVJNd1VESXhFekFSTWppNjRCTFNPTHJnVjMvbjBDREluK2ZRSU1BQUlBWUFBQUJMd0ZzQUFiQUI4QWpRQ3dBRVZZc0F3dkc3RU1IejVac0FCRldMQVFMeHV4RUI4K1diQUFSVml3QWk4YnNRSVBQbG13QUVWWXNCb3ZHN0VhRHo1WnNoME1BaEVTT2JBZEw3SUFBd29yV0NIWUcvUlpzQVRRc0IwUXNBYlFzQjBRc0F2UXNBc3ZzZ2dEQ2l0WUlkZ2I5Rm13Q3hDd0R0Q3dDeEN3RXRDd0NCQ3dGTkN3SFJDd0Z0Q3dBQkN3R05Dd0NCQ3dIdEF3TVFFakF5TVRJelVoRXlNMUlSTXpBek1UTXdNekZTTURNeFVqQXlNRE14TWpBcy9nVEtoTTV3RUZPdk1CRVU2blR1Rk9wMDdRN2pyZCsweW5kdUE2NEFHYS9tWUJtcDRCT1o4Qm9QNWdBYUQrWUovK3g1NytaZ0k0QVRrQUFRQmsveTBFSmdhYkFDd0FmYklxTFM0UkVqa0FzQUJGV0xBTUx4dXhEQjgrV2JBQVJWaXdDUzhic1FrZlBsbXdBRVZZc0NNdkc3RWpEejVac0FCRldMQWdMeHV4SUE4K1diSVpEQ0FSRWptd0dSQ3lBZ0VLSzFnaDJCdjBXYklQQ1NNUkVqbXdEQkN5RXdFS0sxZ2gyQnYwV2JJbkl3a1JFam13SXhDeUtnRUtLMWdoMkJ2MFdUQXhBVFFtSmljbU5UUTJOelV6RlJZV0ZTTTBKaU1pQmhVVUZnUWVBaFVVQmdjVkl6VW1KalV6RkJZek1qWURNMno4UnVuS3JhQ3V2dkp4WVdCc2F3RUFrbVEyejdtZnh0WHpmM1J5ZHdGOFZXOVpKbjMxcHRZVTJ0d1o5Y1Ira1doaFYybGVVR2VHV3FuU0U4UENGdkRHZm9wdUFBQUZBR1AvN0FXSkJjVUFEUUFhQUNjQU5RQTVBSW15QlRvN0VSSTVzQVVRc0JQUXNBVVFzQnZRc0FVUXNDalFzQVVRc0RiUUFMQTJMN0E0TDdBQVJWaXdBeThic1FNZlBsbXdBRVZZc0NVdkc3RWxEejVac0FNUXNBclFzQW92c2hFQ0NpdFlJZGdiOUZtd0F4Q3lHQUlLSzFnaDJCdjBXYkFsRUxBZTBMQWVMN0FsRUxJckFnb3JXQ0hZRy9SWnNCNFFzaklDQ2l0WUlkZ2I5Rmt3TVJNME5qTXlGaFVWRkFZaklpWTFGeFFXTXpJMk5UVTBKaUlHRlFFME5qTXlGaFVWRkFZZ0pqVVhGQll6TWpZMU5UUW1JeUlHRlFVbkFSZGpxb3FNcWFtS2g2K3FUVDgrVEUxK1N3SVNyb2VJcmFmKzZLdXFUejVBU1U0OVBrMytBbjBDeDMwRW1JU3BxWWxJZzZpbGpBWkZWVlZKU1VWV1YwZjgwSWFtcG8xSGdxbW5pUVZFVjFOTFMwWlVWRXIwU0FSeVNBQURBRmIvN0FVUkJjUUFIQUFsQURFQW1MSXVNak1SRWptd0xoQ3dFTkN3TGhDd0h0QUFzQUJGV0xBSkx4dXhDUjgrV2JBQVJWaXdHeThic1JzUFBsbXdBRVZZc0Jndkc3RVlEejVac2lBYkNSRVNPYklvQ1JzUkVqbXlBeUFvRVJJNXNoQW9JQkVTT2JJVEd3a1JFam15RVJNWUVSSTVzaGtZRXhFU09iSVdFUmtSRWptd0d4Q3lIUUVLSzFnaDJCdjBXYklmSFJFUkVqbXdDUkN5THdFS0sxZ2gyQnYwV1RBeEV6UTJOeVltTlRRMk16SVdGUlFHQndjQk5qVXpFQWNYSVNjR0lDUUZNamNCQndZVkZCWURGQmMzTnpZMU5DWWpJZ1pXYnFKVlE5Q3duOHRjYVdNQkdUM1RmdGIrNWxLYy9sRCsvUUhpZTJ2K3doOTRnaGxuYng4K1ZrSkhWQUdKWmFsMGE1WkdxOGU3aWx1WlRFait0SGlUL3ZPcy9XRjE1U05TQVhjV1czVmxmZ09xVkg5TUdUZFdPVkZnQUFBQkFGSUQvQUVMQmdBQUJBQVdBTEFBUlZpd0F5OGJzUU1oUGxtd0F0Q3dBaTh3TVFFREl4RXpBUXNhbjdrRmcvNTVBZ1FBQVFDQS9qRUNvZ1pmQUJBQUVMSUhFUklSRWprQXNBUXZzQTB2TURFVE5CSVNOeGNHQWdNSEVCSVhCeVlDQW9CODhJWXdqYThJQWF1YU1JYnhld0pRNXdHZkFVZENqbXYrU2Y3bFZ2N1IvaVY4aDBJQlNRR2RBQUVBS1A0eEFsRUdYd0FTQUJDeUJ4TVVFUkk1QUxBRUw3QU9MekF4QVJRQ0FnY25OaElSTlJBQ0p5YzNGaElTRndKUmV2aUhNSmF2bUk0Zk1JRHdnQWdDUU43K1kvNnRRWWQwQWQwQk1oY0JGZ0hKaWh5SVB2N0Uvbm5RQUFBQkFCc0NUUU4wQmJBQURnQWdBTEFBUlZpd0JDOGJzUVFmUGxtd0FOQVpzQUF2R0xBSjBCbXdDUzhZTURFQkpUY0ZBek1ESlJjRkV3Y0RBeWNCVFA3UE53RXVEN01QQVNrMi9zcklrYlN5a2dQTVdLbDFBVmorb25Pc1dQNzJhZ0VnL3VsbUFBQUJBRVFBa2dRcUJMWUFDd0FhQUxBSkw3QUEwTEFKRUxJR0FRb3JXQ0hZRy9SWnNBUFFNREVCSVJVaEVTTVJJVFVoRVRNQ3JnRjgvb1RzL29JQmZ1d0RJZDcrVHdHeDNnR1ZBQUVBSFA2NEFWMEE2d0FKQUJpeUNRb0xFUkk1QUxBS0w3SUZEUW9yV0NIWUcvUlpNREVUSnpZMk56VXpCd1lHbjRNNkt3SGJBUUZwL3JoT1c0ZEd2YTlxMVFBQUFRQkhBZ2tDVkFMTkFBTUFFUUN3QWkreUFRRUtLMWdoMkJ2MFdUQXhBU0UxSVFKVS9mTUNEUUlKeEFBQkFJZi85UUdpQVFBQUNnQWlzZ0FMREJFU09RQ3dBRVZZc0FZdkc3RUdEejVac2dBTkNpdFlJZGdiOUZrd01RRXlGaFVVQmlNaUpqUTJBUlJFU2twRVFVeEtBUUJOT2psTFNuUk5BQUFCQUFML2d3TCtCYkFBQXdBVEFMQUFMN0FBUlZpd0FpOGJzUUlmUGxrd01SY2pBVFBCdndJOXYzMEdMUUFBQWdCcC8rd0VJZ1hFQUEwQUd3QkdzZ01jSFJFU09iQURFTEFSMEFDd0FFVllzQW92RzdFS0h6NVpzQUJGV0xBREx4dXhBdzgrV2JBS0VMSVJBUW9yV0NIWUcvUlpzQU1Rc2hnQkNpdFlJZGdiOUZrd01RRVFBaU1pQWdNMUVCSXpNaElUSnpRbUl5SUdCeEVVRmpNeU5qY0VJdXZ3N084RDYvSHY2d1B6Y0hwM2NBTnllblZ3QXdKbC9zYit3UUUzQVRIOEFUb0JPdjdPL3M4VXpiKzF3UDYyek1pNXhRQUFBUUNvQUFBQy93VzFBQVlBT1FDd0FFVllzQVV2RzdFRkh6NVpzQUJGV0xBQUx4dXhBQTgrV2JJRUFBVVJFam13QkMreUF3RUtLMWdoMkJ2MFdiSUNBd1VSRWprd01TRWpFUVUxSlRNQy8vTCttd0k0SHdTUmVzM1JBQUFCQUZFQUFBUkFCY1FBR1FCT3NoRWFHeEVTT1FDd0FFVllzQkV2RzdFUkh6NVpzQUJGV0xBQUx4dXhBQTgrV2JJREVRQVJFam13RVJDeUNRRUtLMWdoMkJ2MFdiSVdFUUFSRWptd0FCQ3lHQUVLSzFnaDJCdjBXVEF4SVNFMUFUWTJOVFFtSXlJR0ZTTTBOall6TWhZVkZBWUhBU0VFUVB3dEFlVnBXWFZqZG9MemVlR1QxUFY3alA2Y0FxU25BaEYxblU5b2dKQjloZFYyMWJ4dDc1aitnd0FCQUUvLzdBUVZCY1FBS1FCdXNnY3FLeEVTT1FDd0FFVllzQTh2RzdFUEh6NVpzQUJGV0xBYkx4dXhHdzgrV2JJQkR4c1JFam13QVMreUh3RUJjYktmQVFGZHNqOEJBWEd3RHhDeUJ3RUtLMWdoMkJ2MFdiQUJFTElvQVFvcldDSFlHL1Jac2hVb0FSRVNPYkFiRUxJaUFRb3JXQ0hZRy9SWk1ERUJNelkyTlRRbUl5SUdGU00wTmpZek1oWVZGQVlIRmhZVkZBUWpJaVExTXhRV016STJOVFFtSXlNQmhwUndnMjF3WW43emQ5V0Uydmw5WTNoOS92UGIwdjcwODRGdGNZS0lobzhEUndGeWJHaHpjVnR3dUdmYncyS3RMQ213ZXNUbzRMcGdlSGh5YzN3QUFBSUFOQUFBQkZnRnNBQUtBQTRBU1FDd0FFVllzQWt2RzdFSkh6NVpzQUJGV0xBRUx4dXhCQTgrV2JJQkNRUVJFam13QVMreUFnRUtLMWdoMkJ2MFdiQUcwTEFCRUxBTDBMSUlCZ3NSRWpteURRa0VFUkk1TURFQk14VWpFU01SSVNjQk13RWhFUWNEbzdXMTgvMkxCd0owKy8yUUFYMFNBZ2ZEL3J3QlJKUUQyUHhYQW1BZ0FBQUJBSUgvN0FRNkJiQUFIUUJxc2hvZUh4RVNPUUN3QUVWWXNBRXZHN0VCSHo1WnNBQkZXTEFOTHh1eERROCtXYkFCRUxJREFRb3JXQ0hZRy9SWnNnY0JEUkVTT2JBSEw3SWFBUW9yV0NIWUcvUlpzZ1VIR2hFU09iQU5FTElVQVFvcldDSFlHL1Jac2hFVUdoRVNPYklkR2hRUkVqa3dNUk1USVJVaEF6WXpNaElWRkFBaklpUW5NeFlXTXpJMk5UUW1JeUlHQjY1UEF3Nzl2Q2hsZjlEbi93RGZ5UDc1QytzT2ZHUndmWXA1UWx3MkF0SUMzdEwrcERyKzl1SGUvdm5qdW1weG9JcUZteU16QUFBQ0FIWC83QVEzQmJjQUZBQWZBR0t5RlNBaEVSSTVzQlVRc0EzUUFMQUFSVml3QUM4YnNRQWZQbG13QUVWWXNBMHZHN0VORHo1WnNBQVFzZ0VCQ2l0WUlkZ2I5Rm15QndBTkVSSTVzQWN2c2dVSERSRVNPYklWQVFvcldDSFlHL1Jac0EwUXNoc0JDaXRZSWRnYjlGa3dNUUVWSXdZR0J6WXpNaElWRkFBaklnQVJOUkFBSVFNaUJnY1ZGQll5TmhBbUEyRWV6UFFYZGJiQjMvNzcxTnIrOFFGMUFWN3NVSVVmaU5oK2dBVzN5UVBheUh2KzhOZmUvdTBCUWdFRlV3Ri9BYkw5U1ZwTFNxSy9vZ0VJcGdBQUFRQkZBQUFFTmdXd0FBWUFNZ0N3QUVWWXNBVXZHN0VGSHo1WnNBQkZXTEFCTHh1eEFROCtXYkFGRUxJREFRb3JXQ0hZRy9SWnNnQURCUkVTT1RBeEFRRWpBU0UxSVFRMi9ici9Ba1g5RHdQeEJTbjYxd1R0d3dBQUF3Qm8vK3dFSWdYRUFCY0FJUUFyQUhTeUNTd3RFUkk1c0FrUXNCclFzQWtRc0NUUUFMQUFSVml3RlM4YnNSVWZQbG13QUVWWXNBa3ZHN0VKRHo1WnNpa0pGUkVTT2JBcEw3SWZLUUZ4c2hvQkNpdFlJZGdiOUZteUF4b3BFUkk1c2c4cEdoRVNPYkFKRUxJZkFRb3JXQ0hZRy9SWnNCVVFzaVVCQ2l0WUlkZ2I5Rmt3TVFFVUJnY1dGaFVVQkNNaUpEVTBOamNtSmpVME5qTXlGZ00wSmlJR0ZSUVdNallETkNZaUJoVVVGakkyQkFKdVgzSjcvdnpZMmY3N2ZIQmViZkRNemZEVGdkUi9mZHg3SDI2NmJHMjZiUVF3YTZjd05iaDB3T0hpdjNXNk1qQ25hN3JhMnZ5dmJJV0ViV3VBZkFMOVgzdDFaV1IyZGdBQUFnQmQvL29FRWdYRUFCVUFJUUJrc2draUl4RVNPYkFKRUxBVzBBQ3dBRVZZc0Frdkc3RUpIejVac0FCRldMQVJMeHV4RVE4K1diSVdFUWtSRWpsOHNCWXZHTElDQVFvcldDSFlHL1Jac2dBQ0NSRVNPYkFSRUxJU0FRb3JXQ0hZRy9SWnNBa1FzaDBCQ2l0WUlkZ2I5Rmt3TVFFR0l5SUNOVFEyTmpNeUFCRVZFQUFGSXpVek5qWURNalkzTlRRbUlnWVZGQllESG5xandPUjAxbzNjQVFMK25QNmZIU1BYNXR4SmdDT0UwbjErQW1HQkFRM2JrT3FDL3JqKzdVVCtkdjVpQThrRHlRRVBWRXBmb2NTdGhJbW9BUC8vQUlMLzlRR2RCRkVBSmdBUyt3QUFCd0FTLy9zRFVmLy9BQzcrdUFHSUJGRUFKd0FTLytZRFVRQUdBQkFTQUFBQkFEOEFwQU9FQkU0QUJnQVhzZ0FIQ0JFU09RQ3dBRVZZc0FVdkc3RUZHejVaTURFQkJSVUJOUUVWQVRZQ1R2eTdBMFVDZCtEekFYWEJBWFR6QUFJQWtRRmtBKzhEMWdBREFBY0FKUUN3Qnkrd0E5Q3dBeSt5QUFFS0sxZ2gyQnYwV2JBSEVMSUVBUW9yV0NIWUcvUlpNREVCSVRVaEVTRTFJUVB2L0tJRFh2eWlBMTRERE1yOWpza0FBQUVBZ0FDbEErQUVUZ0FHQUJleUFBY0lFUkk1QUxBQVJWaXdBaThic1FJYlBsa3dNUUVsTlFFVkFUVUM2djJXQTJEOG9BSjg0Ky8rak1IK2pPOEFBZ0E4Ly9RRG1BWEVBQmdBSXdCZXNna2tKUkVTT2JBSkVMQWMwQUN3QUVWWXNCQXZHN0VRSHo1WnNBQkZXTEFpTHh1eElnOCtXYkljRFFvcldDSFlHL1Jac0FEUXNBQXZzZ1FBRUJFU09iQVFFTElKQVFvcldDSFlHL1Jac2d3UUFCRVNPYklWQUJBUkVqa3dNUUUwTmpZM05qVTBKaU1pQmhVak5qWXpNaFlWRkFjSEJnY0RORFl6TWhZVkZBWWlKZ0ZlUXNNYUtGMWFWbW56QXUzRHllR1llMElDOUVvL1FFcEloRWNCcklXZXZTZzlSMTVqWVZPeHpzeTNvNTU1UzVEK3lUdEpTemszU2tvQUFnQmIvanNHMlFXUUFEWUFRZ0I4c2p0RFJCRVNPYkE3RUxBajBBQ3dLaSt3TXkrd0FFVllzQU12RzdFRER6NVpzQUJGV0xBSUx4dXhDQTgrV2JJRk13Z1JFam15RHpNSUVSSTVzQTh2c0FnUXNqb0NDaXRZSWRnYjlGbXdGZEN3TXhDeUd3SUtLMWdoMkJ2MFdiQXFFTElqQWdvcldDSFlHL1Jac0E4UXNrQUNDaXRZSWRnYjlGa3dNUUVHQWlNaUp3WUdJeUltTnpZU05qTXlGaGNEQmpNeU5qY1NBQ0VpQkFJSEJoSUVNekkyTnhjR0JpTWlKQ2NtRXhJU0pETXlCQklCQmhZek1qWTNFeVlqSWdZR3pRemV2clU5TTRkS2twY1NFSC9EYmxTQlZ6UVRoV2FEQmhIK3dmN0F4UDdSc2drTWl3RWZ6MVMzUUNZOXoybisvcFJiWGdzTTNnR0I5dmtCWjdMOEF3MUtVVFpnSGkweUwyK01BZ2I2L3QrYVRFend5YU1CQm84cVF2M054dHV1QVhFQmlNVCtqZTN4L3FPMktDS0pLREhYek5NQkpnRVNBYlh5Mi81bC9veUlqVjlUQWUwVDBRQUNBQklBQUFWQ0JiQUFCd0FLQUVZQXNBQkZXTEFFTHh1eEJCOCtXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQVl2RzdFR0R6NVpzZ2tFQWhFU09iQUpMN0lBQVFvcldDSFlHL1Jac2dvRUFoRVNPVEF4QVNFRElRRXpBU0VCSVFNRHcvM01kdjc1QWliakFpZisrUDJjQWFiVEFWUCtyUVd3K2xBQ0h3SmNBQU1BbEFBQUJLTUZzQUFPQUJZQUh3QnRzZ0lnSVJFU09iQUNFTEFSMExBQ0VMQWUwQUN3QUVWWXNBRXZHN0VCSHo1WnNBQkZXTEFBTHh1eEFBOCtXYklYQUFFUkVqbXdGeSt5SHhjQmNiSVBBUW9yV0NIWUcvUlpzZ2dQRnhFU09iQUFFTElRQVFvcldDSFlHL1Jac0FFUXNoNEJDaXRZSWRnYjlGa3dNVE1SSVRJRUZSUUdCeFlXRlJRRUl3RVJJVEkyTlRRbkpUTXlOalUwSmlNamxBSHo5d0VDYkdoMmdmNzU5ZjdxQVJsM2h1aiswdmgyaFh1QzlnV3d4c1Jrb0N3Z3NYek4zQUtSL2psMmFlTUZ1bXRpYkdBQUFRQm0vK3dFNndYRUFCMEFRTElESGg4UkVqa0FzQUJGV0xBTUx4dXhEQjgrV2JBQVJWaXdBeThic1FNUFBsbXdEQkN5RXdFS0sxZ2gyQnYwV2JBREVMSWFBUW9yV0NIWUcvUlpNREVCQmdBaklpUUNKelUwRWlRek1nQVhJeVltSXlJR0J4VVVGak15TmpjRTZ4YisxUG11L3ZlUUE1SUJFYlB4QVNZWS9CS1RqcVd4QXFtamxaWVVBZHJwL3Z1bEFUREppTTRCT3FyKyt1K2RpL0hwZ2V6NGhwd0FBQUlBbEFBQUJOSUZzQUFMQUJVQVJySUNGaGNSRWptd0FoQ3dGZEFBc0FCRldMQUJMeHV4QVI4K1diQUFSVml3QUM4YnNRQVBQbG13QVJDeURBRUtLMWdoMkJ2MFdiQUFFTElOQVFvcldDSFlHL1JaTURFekVTRXlCQklWRlJRQ0JDTURFVE15TmpjMU5DWWpsQUd1d1FFcnBLWCt6OFdtcGNmVkFzN0VCYkNzL3NUTVNjLyt4cW9FNVB2bStlbFI3Zm9BQVFDVUFBQUVUQVd3QUFzQVRnQ3dBRVZZc0FZdkc3RUdIejVac0FCRldMQUVMeHV4QkE4K1diSUxCZ1FSRWptd0N5K3lBQUVLSzFnaDJCdjBXYkFFRUxJQ0FRb3JXQ0hZRy9SWnNBWVFzZ2dCQ2l0WUlkZ2I5Rmt3TVFFaEVTRVZJUkVoRlNFUklRUG4vYW9DdS94SUE3SDlUQUpXQW9yK1FNb0ZzTXorYmdBQkFKUUFBQVF4QmJBQUNRQkFBTEFBUlZpd0JDOGJzUVFmUGxtd0FFVllzQUl2RzdFQ0R6NVpzZ2tFQWhFU09iQUpMN0lBQVFvcldDSFlHL1Jac0FRUXNnWUJDaXRZSWRnYjlGa3dNUUVoRVNNUklSVWhFU0VEMi8yMi9RT2QvV0FDU2dKcC9aY0ZzTXorVHdBQkFHci83QVR3QmNRQUhnQlZzZ3NmSUJFU09RQ3dBRVZZc0Fzdkc3RUxIejVac0FCRldMQURMeHV4QXc4K1diQUxFTElSQVFvcldDSFlHL1Jac0FNUXNoZ0JDaXRZSWRnYjlGbXlIZ3NERVJJNXNCNHZzaHNCQ2l0WUlkZ2I5Rmt3TVNVR0JDTWlKQUluTlJBQUlUSUVGeU1DSVNJR0J4VVVFak15TnhFaE5TRUU4RS8rNkxLMy91YVpBd0U4QVJ2ekFSNGQrQ3IrK2FxeEE4ZXh3bEwrMUFJb3ZXZHFwZ0Uxem5JQlNnRno4T0lCQi9YdGNPeisrMWdCSGNBQUFRQ1VBQUFGR0FXd0FBc0FUQUN3QUVWWXNBWXZHN0VHSHo1WnNBQkZXTEFLTHh1eENoOCtXYkFBUlZpd0FDOGJzUUFQUGxtd0FFVllzQVF2RzdFRUR6NVpzZ2tHQUJFU09iQUpMN0lDQVFvcldDSFlHL1JaTURFaEl4RWhFU01STXhFaEVUTUZHUHo5ZGYzOUFvdjhBb2Y5ZVFXdy9hSUNYZ0FCQUtNQUFBR2ZCYkFBQXdBZEFMQUFSVml3QWk4YnNRSWZQbG13QUVWWXNBQXZHN0VBRHo1Wk1ERWhJeEV6QVovOC9BV3dBQUFCQUMzLzdBUGtCYkFBRHdBdnNnVVFFUkVTT1FDd0FFVllzQUF2RzdFQUh6NVpzQUJGV0xBRkx4dXhCUTgrV2JJTUFRb3JXQ0hZRy9SWk1ERUJNeEVVQkNNaUpqVXpGQll6TWpZMUF1ajgvdnZXNVBqOGMyMW1lUVd3L0FQUjl1Yk5kSFdIZHdBQkFKUUFBQVVZQmJBQURBQlRBTEFBUlZpd0JDOGJzUVFmUGxtd0FFVllzQWd2RzdFSUh6NVpzQUJGV0xBQ0x4dXhBZzgrV2JBQVJWaXdDeThic1FzUFBsbXlBQVFDRVJJNXRHb0FlZ0FDWGJJR0JBSVJFam0wWlFaMUJnSmRNREVCQnhFakVUTVJOd0VoQVFFaEFqYWwvZjJNQWFvQk12M2pBanorMUFKMXIvNDZCYkQ5VmEwQi92MTcvTlVBQVFDVUFBQUVKZ1d3QUFVQUtBQ3dBRVZZc0FRdkc3RUVIejVac0FCRldMQUNMeHV4QWc4K1diSUFBUW9yV0NIWUcvUlpNREVsSVJVaEVUTUJrUUtWL0c3OXlzb0ZzQUFBQVFDVUFBQUdhZ1d3QUE0QWJnQ3dBRVZZc0FBdkc3RUFIejVac0FCRldMQUNMeHV4QWg4K1diQUFSVml3QkM4YnNRUVBQbG13QUVWWXNBZ3ZHN0VJRHo1WnNBQkZXTEFNTHh1eERBOCtXYklCQUFRUkVqbTBaUUYxQVFKZHNnY0FCQkVTT2JScUIzb0hBbDJ5Q2dBRUVSSTV0R29LZWdvQ1hUQXhDUUloRVNNUkV3RWpBUk1SSXhFQjNBR2tBYU1CUi93Wi9sSzEvbE1aL0FXdys2UUVYUHBRQWVBQ2d2dWVCR0g5Zi80Z0JiQUFBQUVBbEFBQUJSY0ZzQUFKQUV5eUFRb0xFUkk1QUxBQVJWaXdCUzhic1FVZlBsbXdBRVZZc0Fndkc3RUlIejVac0FCRldMQUFMeHV4QUE4K1diQUFSVml3QXk4YnNRTVBQbG15QWdVQUVSSTVzZ2NGQUJFU09UQXhJU01CRVNNUk13RVJNd1VYL2YxMy9mMENpL3NFQ2Z2M0JiRDc4d1FOQUFJQVp2L3NCUjRGeEFBUUFCNEFScklFSHlBUkVqbXdCQkN3Rk5BQXNBQkZXTEFNTHh1eERCOCtXYkFBUlZpd0JDOGJzUVFQUGxtd0RCQ3lGQUVLSzFnaDJCdjBXYkFFRUxJYkFRb3JXQ0hZRy9SWk1ERUJGQUlFSXlJa0FpYzFOQklrSUFRU0Z3YzBBaU1pQWdjVkZCSXpNaEkxQlI2VS91MnpzZjdybHdHWEFSTUJaQUVUbGdIOXQ2aWt1UUs3cHFpMUFyTFcvcjJ0clFGQTBWTFZBVWF0cS82LzFRWHlBUUwrLyt0VThQNzZBUUQyQUFJQWxBQUFCTlFGc0FBS0FCTUFUYklLRkJVUkVqbXdDaEN3RE5BQXNBQkZXTEFETHh1eEF4OCtXYkFBUlZpd0FTOGJzUUVQUGxteUN3RURFUkk1c0FzdnNnQUJDaXRZSWRnYjlGbXdBeEN5RXdFS0sxZ2gyQnYwV1RBeEFSRWpFU0V5QkJVVUJDTWxJVEkyTlRRbUp5RUJrZjBDTGZRQkgvN24vZjdUQVRDSGpwQisvc2tDSGYzakJiRCswZGJ1eTM5NGRvMENBQUlBWVA4RUJSb0Z4QUFWQUNNQVJySUlKQ1VSRWptd0NCQ3dJTkFBc0FCRldMQVJMeHV4RVI4K1diQUFSVml3Q0M4YnNRZ1BQbG13RVJDeUdRRUtLMWdoMkJ2MFdiQUlFTElnQVFvcldDSFlHL1JaTURFQkZBSUhGd2NsQmlNaUpBSW5OVFFTSkRNeUJCSVhCelFtSXlJQ0J4VVVFak15RWpVRkdZTjIrcVQreWoxR3NQN3Jsd0dYQVJPeHRBRVRsZ0grdUtpanVRSzVwNm0xQXJMUC90Rlp3NVQxRGEwQlFORlMxUUZHcmF2K3Y5VUY5djcrLytwVjdQNzJBUUQyQUFJQWxBQUFCTjRGc0FBT0FCY0FXcklGR0JrUkVqbXdCUkN3RU5BQXNBQkZXTEFFTHh1eEJCOCtXYkFBUlZpd0FpOGJzUUlQUGxteUR3SUVFUkk1c0E4dnNnRUJDaXRZSWRnYjlGbXlDd0VQRVJJNXNBSVFzQTdRc0FRUXNoY0JDaXRZSWRnYjlGa3dNUUVoRVNNUklUSUVGUlFHQndFVklRRWhNalkxTkNZbklRS3IvdWI5QWdEOEFSS05mZ0ZIL3ZIOXdnRUVnSkNGaFA3MUFqSDl6d1d3NHRhU3hUWDlvUTBDL0lGd2RZQUNBQUFCQUVyLzdBU0tCY1FBSndCanNoRW9LUkVTT1FDd0FFVllzQWt2RzdFSkh6NVpzQUJGV0xBZEx4dXhIUTgrV2JJQ0hRa1JFam15RGdrZEVSSTVzQWtRc2hFQkNpdFlJZGdiOUZtd0FoQ3lGd0VLSzFnaDJCdjBXYklpSFFrUkVqbXdIUkN5SlFFS0sxZ2gyQnYwV1RBeEFUUW1KQ2NtTlRRa016SVdGaFVqTkNZaklnWVZGQllFRmhZVkZBUWpJaVFtTlRNVUZqTXlOZ09OaC82Z2FNY0JIK1dZN29qOGo0VjhpWlFCVk01Zy91bnZudjczay8ya21ZU0ZBWGRnYUdwQmZjbXc1SERQZm5LQmFsOVFhMldCcDNDMjEzWE9pWHlJYXdBQUFRQXRBQUFFc0FXd0FBY0FMZ0N3QUVWWXNBWXZHN0VHSHo1WnNBQkZXTEFDTHh1eEFnOCtXYkFHRUxJQUFRb3JXQ0hZRy9SWnNBVFFNREVCSVJFakVTRTFJUVN3L2pyNy9qNEVnd1RrK3h3RTVNd0FBUUI5Lyt3RXZRV3dBQkFBUExJRUVSSVJFamtBc0FCRldMQUpMeHV4Q1I4K1diQUFSVml3RUM4YnNSQWZQbG13QUVWWXNBUXZHN0VFRHo1WnNnMEJDaXRZSWRnYjlGa3dNUUVSRkFBaklnQTFFVE1SRkJZeklCRVJCTDMrMS9mNi90cjhsSkFCSkFXdy9EUG8vdkVCQyswRHpQd3lrcG9CTkFQR0FBRUFFZ0FBQlIwRnNBQUdBRGl5QUFjSUVSSTVBTEFBUlZpd0FTOGJzUUVmUGxtd0FFVllzQVV2RzdFRkh6NVpzQUJGV0xBREx4dXhBdzgrV2JJQUFRTVJFamt3TVFFQklRRWpBU0VDbFFGeUFSYjk5UFg5OWdFVkFUMEVjL3BRQmJBQUFRQXdBQUFHNVFXd0FBd0FZTElGRFE0UkVqa0FzQUJGV0xBQkx4dXhBUjgrV2JBQVJWaXdDQzhic1FnZlBsbXdBRVZZc0Fzdkc3RUxIejVac0FCRldMQURMeHV4QXc4K1diQUFSVml3Qmk4YnNRWVBQbG15QUFFREVSSTVzZ1VCQXhFU09iSUtBUU1SRWprd01RRVRNd0VqQVFFakFUTVRBVE1GQ3VENy9yRHkvdXYrNWZQK3NQdmlBUmJVQVdnRVNQcFFCQ2Y3MlFXdys3b0VSZ0FCQUNrQUFBVHBCYkFBQ3dCVEFMQUFSVml3QVM4YnNRRWZQbG13QUVWWXNBb3ZHN0VLSHo1WnNBQkZXTEFFTHh1eEJBOCtXYkFBUlZpd0J5OGJzUWNQUGxteUFBRUVFUkk1c2dZQkJCRVNPYklEQUFZUkVqbXlDUVlBRVJJNU1ERUJBU0VCQVNFQkFTRUJBU0VDaVFFeUFTVCtTQUhDL3RuK3gvN0cvdG9Cdy81SEFTUURvZ0lPL1M3OUlnSVcvZW9DM2dMU0FBQUJBQWNBQUFUV0JiQUFDQUF4QUxBQVJWaXdBUzhic1FFZlBsbXdBRVZZc0Fjdkc3RUhIejVac0FCRldMQUVMeHV4QkE4K1diSUFBUVFSRWprd01RRUJJUUVSSXhFQklRSnZBVThCR1A0WS92NFhBUmtDL2dLeS9Hajk2QUlZQTVnQUFBRUFVQUFBQkl3RnNBQUpBRVFBc0FCRldMQUhMeHV4Qng4K1diQUFSVml3QWk4YnNRSVBQbG15QUFFS0sxZ2gyQnYwV2JJRUFBSVJFam13QnhDeUJRRUtLMWdoMkJ2MFdiSUpCUWNSRWprd01TVWhGU0UxQVNFMUlSVUJnZ01LKzhRQzhmMFVCQi9LeXFRRVFNeWdBQUFCQUlUK3ZBSWNCbzRBQndBaUFMQUVMN0FITDdJQUFRb3JXQ0hZRy9SWnNBUVFzZ01CQ2l0WUlkZ2I5Rmt3TVFFakVUTVZJUkVoQWh5bHBmNW9BWmdGMFBtcHZRZlNBQUFCQUJUL2d3TmtCYkFBQXdBVEFMQUNMN0FBUlZpd0FDOGJzUUFmUGxrd01STXpBU01VOEFKZzhBV3crZE1BQVFBTS9yd0JwZ2FPQUFjQUpRQ3dBaSt3QVMrd0FoQ3lCUUVLSzFnaDJCdjBXYkFCRUxJR0FRb3JXQ0hZRy9SWk1ERVRJUkVoTlRNUkl3d0JtdjVtcDZjR2p2Z3V2UVpYQUFBQkFEVUMyUU0xQmJBQUJnQW5zZ0FIQ0JFU09RQ3dBRVZZc0FNdkc3RURIejVac0FEUXNnRUhBeEVTT2JBQkw3QUYwREF4QVFNakFUTUJJd0cxc3M0Qks2c0JLczBFcHY0ekF0ZjlLUUFCQUFQL1FRT1lBQUFBQXdBYkFMQUFSVml3QXk4YnNRTVBQbG15QUFFS0sxZ2gyQnYwV1RBeEJTRTFJUU9ZL0dzRGxiKy9BQUFCQURFRTBRSUpCZ0FBQXdBa0FMQUJMN0lQQVFGZHNBUFFzQU12dEE4REh3TUNYYklBQVFNUkVqa1pzQUF2R0RBeEFTTUJJUUlKeXY3eUFSVUUwUUV2QUFBQ0FGci83QVA3QkU0QUhnQXBBSVd5RnlvckVSSTVzQmNRc0NEUUFMQUFSVml3Rnk4YnNSY2JQbG13QUVWWXNBUXZHN0VFRHo1WnNBQkZXTEFBTHh1eEFBOCtXYklDRndRUkVqbXlDeGNFRVJJNXNBc3ZzQmNRc2c4QkNpdFlJZGdiOUZteUVnc1BFUkk1UUFrTUVod1NMQkk4RWdSZHNBUVFzaDhCQ2l0WUlkZ2I5Rm13Q3hDeUl3Y0tLMWdoMkJ2MFdUQXhJU1luQmlNaUpqVTBKRE16TlRRbUl5SUdGU00wTmpZek1oWVhFUlFYRlNVeU5qYzFJeUlHRlJRV0F3TVFESFNvbzg0QkFlK1ZYbUJUYXZOMnkzMis0Z01wL2YxSWZ5Q0RoNGhkSDBaNXVvbXR1VWRVWlZOQVdadFl2NjMrR0pKWEVhOUdPOHhlVmtaVEFBSUFmUC9zQkRJR0FBQVBBQnNBWkxJVEhCMFJFam13RXhDd0ROQUFzQWt2c0FCRldMQU1MeHV4REJzK1diQUFSVml3QXk4YnNRTVBQbG13QUVWWXNBWXZHN0VHRHo1WnNnVU1BeEVTT2JJS0RBTVJFam13REJDeUV3RUtLMWdoMkJ2MFdiQURFTElZQVFvcldDSFlHL1JaTURFQkZBSWpJaWNISXhFekVUWXpNaElSSnpRbUl5SUhFUll6TWpZM0JETGh4YjVxRE56emFiTEc0dk44ZHA1QVFaOXlmQUlDRXZ6KzFvbDFCZ0Q5MG56KzJ2NzRCN0N3aXY1Q2phcXNBQUVBVC8vc0EvVUVUZ0FjQUV1eUFCMGVFUkk1QUxBQVJWaXdEeThic1E4YlBsbXdBRVZZc0Fndkc3RUlEejVac2dBQkNpdFlJZGdiOUZteUF3Z1BFUkk1c2hNUENCRVNPYkFQRUxJV0FRb3JXQ0hZRy9SWk1ERWxNalkzTXc0Q0l5SUFFVFUwQURNeUZoY2pKaVlqSWdZSEZSUVdBamxiZUFUbEJIYktkZVArOWdFSTVNSHpCdVVFZDF4MmdBRi9ybXBPWmE5bUFTWUJBeG4zQVNuaHQxMTRxNjRuc0swQUFBSUFULy9zQkFNR0FBQU9BQmtBWkxJWEdoc1JFam13RnhDd0E5QUFzQVl2c0FCRldMQURMeHV4QXhzK1diQUFSVml3REM4YnNRd1BQbG13QUVWWXNBZ3ZHN0VJRHo1WnNnVUREQkVTT2JJS0F3d1JFam13REJDeUVnRUtLMWdoMkJ2MFdiQURFTElYQVFvcldDSFlHL1JaTURFVE5CSXpNaGNSTXhFakp3WWpJZ0kzRkJZek1qY1JKaU1pQmsvb3c2eHE4OXdNYmJhKzYvTi9kWlZGUTVWMmdBSWwrZ0V2ZUFJcStnQndoQUV5OHFXNWhRSE9ncnNBQUFJQVUvL3NCQXNFVGdBVkFCMEFnN0lXSGg4UkVqbXdGaEN3Q05BQXNBQkZXTEFJTHh1eENCcytXYkFBUlZpd0FDOGJzUUFQUGxteUdnQUlFUkk1c0JvdnRMOGF6eG9DWGJSZkdtOGFBbkcwSHhvdkdnSnh0TzhhL3hvQ2NiS01HZ0Zkc2d3SENpdFlJZGdiOUZtd0FCQ3lFQUVLSzFnaDJCdjBXYklTQ0FBUkVqbXdDQkN5RmdFS0sxZ2gyQnYwV1RBeEJTSUFOVFUwTmpZek1oSVJGU0VXRmpNeU54Y0dCZ01pQmdjaE5TWW1BbG5uL3VGOTRvdmQ4ZjA5QzUxM3AybURRZG1rWkhzUkFjOEljaFFCSS9JZW92K08vdWIrL21LR25JZDlZV3NEbjR4OUVucDlBQUFCQUMwQUFBTFdCaFVBRkFCVHNnY1ZGaEVTT1FDd0FFVllzQWd2RzdFSUlUNVpzQUJGV0xBRUx4dXhCQnMrV2JBQVJWaXdBQzhic1FBUFBsbXdCQkN3RU5DeUV3RUtLMWdoMkJ2MFdiQUIwTEFJRUxJTkFRb3JXQ0hZRy9SWk1ERXpFU00xTXpVME5qTXlGd2NtSXlJVkZUTVZJeEhTcGFYSXRFQklCaWcxcnR6Y0E0YTBZN1RFRXI0SXMyQzAvSG9BQUFJQVV2NVdCQXdFVGdBWkFDUUFnN0lpSlNZUkVqbXdJaEN3QzlBQXNBQkZXTEFETHh1eEF4cytXYkFBUlZpd0JpOGJzUVliUGxtd0FFVllzQXN2RzdFTEVUNVpzQUJGV0xBWEx4dXhGdzgrV2JJRkF4Y1JFam13Q3hDeUVRRUtLMWdoMkJ2MFdiSVBFUmNSRWpteUZRTVhFUkk1c0JjUXNoMEJDaXRZSWRnYjlGbXdBeEN5SWdFS0sxZ2gyQnYwV1RBeEV6UVNNeklYTnpNUkZBUWpJaVluTnhZek1qWTFOUVlqSWdJM0ZCWXpNamNSSmlNaUJsTHR4TGxxQzl2KzkrRjM0enR6Y0tSNWpHbXZ2dkh5aFhhVFIwV1RlSVVDSmZ3QkxZRnQrK2ZWOW1OUWtvV0RmMGwxQVM3Mm83dCtBZHg3dmdBQkFIa0FBQVA0QmdBQUVBQkNzZ29SRWhFU09RQ3dFQyt3QUVWWXNBSXZHN0VDR3o1WnNBQkZXTEFOTHh1eERROCtXYkFBUlZpd0JpOGJzUVlQUGxtd0FoQ3lDZ0VLSzFnaDJCdjBXVEF4QVRZeklCTVJJeEUwSmlNaUJ4RWpFVE1CYkhlMkFWb0Y4MkZla2tqejh3UEVpdjUxL1QwQ3VuQmRndno3QmdBQUFBSUFmUUFBQVpBRjFRQURBQTBBUHJJR0RnOFJFam13QmhDd0FkQUFzQUJGV0xBQ0x4dXhBaHMrV2JBQVJWaXdBUzhic1FFUFBsbXdBaEN3RE5Dd0RDK3lCZzBLSzFnaDJCdjBXVEF4SVNNUk13RTBOaklXRlJRR0lpWUJmL1B6L3Y1SGhFaEloRWNFT2dFWk9FcEtPRGRKU1FBQUF2KzEva3NCaFFYVkFBd0FGZ0JKc2dNWEdCRVNPYkFERUxBUTBBQ3dBRVZZc0F3dkc3RU1HejVac0FCRldMQUVMeHV4QkJFK1diSUpBUW9yV0NIWUcvUlpzQXdRc0JYUXNCVXZzZzhOQ2l0WUlkZ2I5Rmt3TVFFUkZBWWpJaWMxRmpNeU54RURORFl5RmhVVUJpSW1BWHFsbjBNK0pqQjVBeFZIaEVoSWhFY0VPdnRtcHE4UndBbUVCS01CR1RoS1NqZzNTVWtBQVFCOUFBQUVOZ1lBQUF3QVV3Q3dBRVZZc0FRdkc3RUVJVDVac0FCRldMQUlMeHV4Q0JzK1diQUFSVml3QWk4YnNRSVBQbG13QUVWWXNBc3ZHN0VMRHo1WnNnQUlBaEVTT2JScUFIb0FBbDJ5QmdnQ0VSSTV0R1VHZFFZQ1hUQXhBUWNSSXhFekVUY0JJUUVCSVFIY2JQUHpUQUVyQVNUK2JnRzkvdWNCMEcvK253WUEvSXBmQVZIK1BmMkpBQUVBakFBQUFYOEdBQUFEQUIwQXNBQkZXTEFDTHh1eEFpRStXYkFBUlZpd0FDOGJzUUFQUGxrd01TRWpFVE1CZi9QekJnQUFBQUVBZkFBQUJua0VUZ0FkQUhleUJCNGZFUkk1QUxBQVJWaXdBeThic1FNYlBsbXdBRVZZc0Fjdkc3RUhHejVac0FCRldMQUFMeHV4QUJzK1diQUFSVml3R3k4YnNSc1BQbG13QUVWWXNCVXZHN0VWRHo1WnNBQkZXTEFNTHh1eERBOCtXYklCQXhzUkVqbXlCUWNWRVJJNXNBY1FzaEFCQ2l0WUlkZ2I5Rm13R05Bd01RRVhOak15RnpZek1oWVhFU01STkNZaklnWUhFeU1SSmlNaUJ4RWpFUUZoQjNMRzJWQjIxck92QXZOYWFGTnBGUUh6QmI2U1BmTUVPbkdGcHFiR3dmMDVBc0JuWUZsSS9Sb0N5TDkzL1BBRU9nQUJBSGtBQUFQNEJFNEFFQUJUc2dzUkVoRVNPUUN3QUVWWXNBTXZHN0VER3o1WnNBQkZXTEFBTHh1eEFCcytXYkFBUlZpd0RpOGJzUTRQUGxtd0FFVllzQWN2RzdFSER6NVpzZ0VPQXhFU09iQURFTElMQVFvcldDSFlHL1JaTURFQkZ6WXpJQk1SSXhFMEppTWlCeEVqRVFGZUIzakRBVklHODFsbGswanpCRHA5a2Y1OS9UVUN2V2RqaGZ6K0JEb0FBQUlBVC8vc0JEMEVUZ0FQQUJvQVE3SU1HeHdSRWptd0RCQ3dHTkFBc0FCRldMQUVMeHV4QkJzK1diQUFSVml3REM4YnNRd1BQbG15RWdFS0sxZ2gyQnYwV2JBRUVMSVlBUW9yV0NIWUcvUlpNREVUTkRZMk16SUFGeGNVQmdZaklnQTFGeFFXTWpZMU5DWWpJZ1pQZnVTVTJ3RVJDd0Y3NVpibC91M3ppdmFKalhsM2pBSW5uLytKL3VicE9hRDhpZ0V4L2dtbnZjQzVwTUM5QUFJQWZQNWdCREFFVGdBUEFCb0FicklUR3h3UkVqbXdFeEN3RE5BQXNBQkZXTEFNTHh1eERCcytXYkFBUlZpd0NTOGJzUWtiUGxtd0FFVllzQVl2RzdFR0VUNVpzQUJGV0xBREx4dXhBdzgrV2JJRkRBTVJFam15Q2d3REVSSTVzQXdRc2hNQkNpdFlJZGdiOUZtd0F4Q3lHQUVLSzFnaDJCdjBXVEF4QVJRQ0l5SW5FU01STXhjMk16SVNFU2MwSmlNaUJ4RVdNekkyQkREa3dMSnI4K0FLYTdqRzRmS0JlSlZCUXBaMGd3SVMrLzdWZGYzL0JkcHVndjdaL3ZvR29yNTcvaUIrdXdBQUFnQlAvbUFFQWdST0FBNEFHUUJyc2hjYUd4RVNPYkFYRUxBRDBBQ3dBRVZZc0FNdkc3RURHejVac0FCRldMQUdMeHV4QmhzK1diQUFSVml3Q0M4YnNRZ1JQbG13QUVWWXNBd3ZHN0VNRHo1WnNnVUREQkVTT2JJS0F3d1JFam15RWdFS0sxZ2gyQnYwV2JBREVMSVhBUW9yV0NIWUcvUlpNREVUTkJJek1oYzNNeEVqRVFZaklnSTNGQll6TWpjUkppTWlCay9veHJWcUR0anphcXJDNnZPRGRKQkdSbzUwaFFJbS9nRXFmMnY2SmdIOGNBRXY5cWE5ZXdIc2Ryb0FBUUI4QUFBQ3RBUk9BQTBBUnJJSkRnOFJFamtBc0FCRldMQUlMeHV4Q0JzK1diQUFSVml3Q3k4YnNRc2JQbG13QUVWWXNBVXZHN0VGRHo1WnNBc1FzZ0lCQ2l0WUlkZ2I5Rm15Q1FzRkVSSTVNREVCSmlNaUJ4RWpFVE1YTmpNeUZ3S3pNRE9uT3ZQb0JsaWNOQ0lEWEFpQS9Sd0VPbm1ORGdBQkFFdi83QVBLQkU0QUpnQnBzZ2tuS0JFU09RQ3dBRVZZc0Frdkc3RUpHejVac0FCRldMQWNMeHV4SEE4K1diSUNIQWtSRWptd0FoQ3dGdEN3Q1JDeUVBRUtLMWdoMkJ2MFdiSU5GaEFSRWptMERBMGNEUUpkc0J3UXNpUUJDaXRZSWRnYjlGbXlJU1FDRVJJNXRBTWhFeUVDWFRBeEFUUW1KaWNtTlRRMk16SVdGU00wSmlNaUJoVVVGZ1FXRmhVVUJpTWlKaVkxTXhZV016STJBdHRyK0ZPMjdMYkM3L05vVmxCbFhnRWVvMC95eElYUWRPd0ZlR05nWkFFbVFVUTBLRmluakx6QW1VWmRTajQ0UGo5WGVsZVN0V0NvWVZaZFNRQUFBUUFJLyt3Q2NnVkJBQlFBVXJJQUZSWVJFamtBc0FCRldMQVRMeHV4RXhzK1diQUFSVml3RFM4YnNRMFBQbG13RXhDd0FkQ3dBTkN3QUMrd0FSQ3lCQUVLSzFnaDJCdjBXYkFORUxJSUFRb3JXQ0hZRy9SWnNBUVFzQkRRTURFQkVUTVZJeEVVRmpNeU54VUdJeUFSRVNNMU14RUJyYisvTVQ4cUsxTk4vdWl5c2dWQi92bTAvYVErTndxOEZ3RTFBbVcwQVFjQUFRQjMvK3dEOXdRNkFCQUFVN0lLRVJJUkVqa0FzQUJGV0xBSEx4dXhCeHMrV2JBQVJWaXdEUzhic1EwYlBsbXdBRVZZc0FJdkc3RUNEejVac0FCRldMQVBMeHV4RHc4K1diSUFBZzBSRWptd0FoQ3lDZ0VLSzFnaDJCdjBXVEF4SlFZaklpWTFFVE1SRkRNeU54RXpFU01EREd2RnNMWHpxN0UrOCtWcWZzN0RBcjM5UnM1L0F3bjd4Z0FCQUJZQUFBUGFCRG9BQmdBNHNnQUhDQkVTT1FDd0FFVllzQUV2RzdFQkd6NVpzQUJGV0xBRkx4dXhCUnMrV2JBQVJWaXdBeThic1FNUFBsbXlBQVVERVJJNU1ERUJFek1CSXdFekFmcmwrLzZKMC82Ry9BRTBBd2I3eGdRNkFBQUJBQ0VBQUFYTUJEb0FEQUJnc2dVTkRoRVNPUUN3QUVWWXNBRXZHN0VCR3o1WnNBQkZXTEFJTHh1eENCcytXYkFBUlZpd0N5OGJzUXNiUGxtd0FFVllzQU12RzdFRER6NVpzQUJGV0xBR0x4dXhCZzgrV2JJQUN3TVJFam15QlFzREVSSTVzZ29MQXhFU09UQXhBUk16QVNNREF5TUJNeE1UTXdRenJPMysyY2pvNU1qKzJPMnYzcmNCVHdMcis4WUM1LzBaQkRyOUhRTGpBQUFCQUI4QUFBUG9CRG9BQ3dCVEFMQUFSVml3QVM4YnNRRWJQbG13QUVWWXNBb3ZHN0VLR3o1WnNBQkZXTEFFTHh1eEJBOCtXYkFBUlZpd0J5OGJzUWNQUGxteUFBb0VFUkk1c2dZS0JCRVNPYklEQUFZUkVqbXlDUVlBRVJJNU1ERUJFeUVCQVNFREF5RUJBU0VDQWM0QkR2NjFBVmIrOU5qWC92SUJWdjYyQVF3QzFnRmsvZXY5MndGeS9vNENKUUlWQUFFQURQNUxBOVlFT2dBUEFEK3lBQkFSRVJJNUFMQUFSVml3RHk4YnNROGJQbG13QUVWWXNBVXZHN0VGRVQ1WnNnQUZEeEVTT2JBUEVMQUIwTEFGRUxJSkFRb3JXQ0hZRy9SWk1ERUJFeUVCQWlNaUp6VVhNalkzTndFaEFmZmNBUVArVW1QdE5VQXVYRjBiSS82RUFRWUJYQUxlK3lMKzd4SzhBME5QWFFRMUFBQUJBRklBQUFQQUJEb0FDUUJFQUxBQVJWaXdCeThic1FjYlBsbXdBRVZZc0FJdkc3RUNEejVac2dBQkNpdFlJZGdiOUZteUJBQUNFUkk1c0FjUXNnVUJDaXRZSWRnYjlGbXlDUVVIRVJJNU1ERWxJUlVoTlFFaE5TRVZBWUFDUVB5U0FpWDk1UU5Qd3NLZkF0ZkVtZ0FBQVFBNC9wZ0NrUVk5QUJjQU5ySVNHQmtSRWprQXNBd3ZzQUJGV0xBQUx4dXhBQmMrV2JJR0FBd1JFam13QmkreUJRY0tLMWdoMkJ2MFdiSVNCUVlSRWprd01RRWtBelUwSXpVeU5UVTJOamNYQmdjVkZBY1dGUlVXRndKaC9wOEh3Y0VEdGJBd3JRYXRyUWF0L3BoakFXRFY0YkxpMUxUZU1vdzQrdGpoVzF6ajFmbzRBQUFCQUs3KzhnRlZCYkFBQXdBVEFMQUFMN0FBUlZpd0FpOGJzUUlmUGxrd01RRWpFVE1CVmFlbi92SUd2Z0FBQVFBYi9wZ0NkUVk5QUJnQU5ySUZHUm9SRWprQXNBc3ZzQUJGV0xBWUx4dXhHQmMrV2JJUkdBc1JFam13RVMreUVnY0tLMWdoMkJ2MFdiSUZFaEVSRWprd01SYzJOelUwTnlZMU5TWW5OeFlXRlJVVU14VWlGUlVVQmdjYnNBUzJ0Z1N3TUxheXdzS3p0ZHM1LzlEblZsYnF6Lzg1akRQbHVjamhzdUhGdStVekFBRUFkUUdEQk53REx3QVhBRCt5RVJnWkVSSTVBTEFQTDdJREdBOFJFam13QXkrd0R4Q3lDQUVLSzFnaDJCdjBXYkFERUxBTDBMQURFTElVQVFvcldDSFlHL1Jac0E4UXNCZlFNREVCRkFZaklpNENJeUlHRlNNME5qTXlIZ0l6TWpZMUJOeStqa3A5bWtNbVEwM0J0cFJLaFpGREowTlVBeEt3M3ppSklXaFVxOXM3aENKd1ZBQUNBSWIrbEFHWkJFMEFBd0FQQUQ2eUJ4QVJFUkk1c0FjUXNBRFFBTEFBUlZpd0RTOGJzUTBiUGxtd0FFVllzQU12RzdFREZ6NVpzQTBRc2djTkNpdFlJZGdiOUZtd0FOQ3dBQzh3TVJNekV5RUJGQVlqSWlZMU5EWXpNaGFxMFJqKy93RUhTRUZDU0VoQ1FVZ0NsdnYrQlRjNFMwczROMHRMQUFFQVpQOExCQW9GSmdBZ0FGMnlHeUVpRVJJNUFMQUFSVml3RVM4YnNSRWJQbG13QUVWWXNBb3ZHN0VLRHo1WnNnQUJDaXRZSWRnYjlGbXlBd29SRVJJNXNBb1FzQWZRc0FjdnNCRVFzQlRRc0JRdnNoZ1JDaEVTT2JBUkVMSWJBUW9yV0NIWUcvUlpNREVsTWpZM013WUdCeFVqTlNZQ05UVTBFamMxTXhVV0ZoY2pKaVlqSWdNSEZCWUNUMWw0QnVRRXhaTEl0OHpNdDhpZXVRVGtCM1piNWhBQmY2NW9VSWpOSE9ycUlnRWYzQnpWQVNBaTRlQWMySnhnZGY3SVNMQ3RBQUFCQUY0QUFBUjhCY01BSHdCbHNob2dJUkVTT1FDd0FFVllzQkl2RzdFU0h6NVpzQUJGV0xBRkx4dXhCUTgrV2JJRUFRb3JXQ0hZRy9SWnNBalFzaDRGRWhFU09iQWVMN0lmQVFvcldDSFlHL1Jac0F6UXNCNFFzQS9Rc2hZRkVoRVNPYkFTRUxJWkFRb3JXQ0hZRy9SWk1ERUJGeFFISVFjaE5UTTJOalVuSXpVekp6UTJJQllWSXpRbUl5SUdGUmNoRlFIOUIwQUN1QUg3NTFJbkt3ZWhtd2o2QVpibzlXbGVXV2NKQVRjQ1ZyQ0hWY3JLQ1c5YnVjZnl5dXJhdUY5cGdtanl4d0FDQUYzLzVRVlBCUEVBR3dBb0FEK3lBaWtxRVJJNXNBSVFzQi9RQUxBQVJWaXdBaThic1FJUFBsbXdFTkN3RUMrd0FoQ3lJQWNLSzFnaDJCdjBXYkFRRUxJbUJ3b3JXQ0hZRy9SWk1ERWxCaU1pSndjbk55WTFORGNuTnhjMk16SVhOeGNIRmhVVUJ4Y0hBUlFXRmpJMk5qUW1KaUlHQmdROW44dktub0dOaDJSdGtJMk9tOERDbTVHT2xHdGlpNDc4ZUc2KzNMNXRiYjNldm0xcmYzNkVrSW1jeGNpbGs1Q1JjM1dVa1plZnlzR2NqWkVDZTNqT2RYYk83c3gxZGN3QUFBRUFHUUFBQk1BRnNBQVdBSElBc0FCRldMQVdMeHV4Rmg4K1diQUFSVml3REM4YnNRd1BQbG15QUF3V0VSSTVzQllRc0FIUXNnOE1GaEVTT2JBUEw3QVQwTEFUTDdRUEV4OFRBbDJ3Qk5Dd0JDK3dFeEN5RWdRS0sxZ2gyQnYwV2JBRzBMQVBFTEFIMExBSEw3QVBFTElPQkFvcldDSFlHL1Jac0FyUU1ERUJBU0VCSVJVaEZTRVZJUkVqRVNFMUlUVWhOU0VCSVFKdEFUc0JHUDUzQVEzK293RmQvcVA4L3A0Qll2NmVBUm4rZHdFWkF6UUNmUDAybUlxWC90TUJMWmVLbUFMS0FBSUFpUDd5QVcwRnNBQURBQWNBR0FDd0FDK3dBRVZZc0FZdkc3RUdIejVac2dVQkF5c3dNUk1STXhFUkl4RXppT1hsNWY3eUF4djg1UVBJQXZZQUFnQmEvaVlFakFYRUFDOEFQUUNDc2lBK1B4RVNPYkFnRUxBdzBBQ3dCeSt3QUVWWXNDQXZHN0VnSHo1WnNqa2dCeEVTT2JBNUVMSVRBUW9yV0NIWUcvUlpzZ0k1RXhFU09iQUhFTElPQVFvcldDSFlHL1Jac2dzT0V4RVNPYkl5SUFjUkVqbXdNaEN5TEFFS0sxZ2gyQnYwV2JJYU1pd1JFam13SUJDeUp3RUtLMWdoMkJ2MFdiSWtMQ2NSRWprd01RRVVCeFlWRkFRaklpUTFOeFFXTXpJMk5UUW1KeTRDTlRRM0ppWTFOQ1F6TWdRVkl6UW1JeUlHRlJRV0JCWVdKU1luQmhVVUZoOENOalUwSmdTTXE0Zis4dXIyL3VEeW5JaDVqWWE3dkw1ZHFVRkVBUlBtOEFFTTg1RjRlNHQ0QVlQQ1d2M05VVXhzWTVXekxuT0lBY2U0V1dTNXJjYlp6d0Z1ZUY5UFRWczNNMjZhYmJoYU1vaGtxc3poekdxQVgxSlVWMmh4bVc0VkhDaDhVVll2TlJBdmRWRmhBQUlBWFFUZkF5TUZ6QUFJQUJFQUlnQ3dCeSt5RHdjQlhiSUNCUW9yV0NIWUcvUlpzQXZRc0FjUXNCRFFzQkF2TURFVE5EWXlGaFFHSWlZbE5EWXlGaFFHSWlaZFEzWkVSSFpEQWNoRWRrUkVka1FGVmpKRVJHUkVSREV5UkVSa1JFUUFBd0JYLyt3RjRnWEVBQm9BS0FBMkFJNnlIemM0RVJJNXNCOFFzQW5Rc0I4UXNEUFFBTEFBUlZpd015OGJzVE1QUGxtd0xkQ3dMUyt5QWpNdEVSSTVzQUl2dEE4Q0h3SUNYYklKTFRNUkVqbXdDUyswQUFrUUNRSmRzZzBKQWhFU09iSVFBZ29yV0NIWUcvUlpzQUlRc2hjQ0NpdFlJZGdiOUZteUdnSUpFUkk1c0MwUXNoOElDaXRZSWRnYjlGbXdNeEN5SlFnS0sxZ2gyQnYwV1RBeEFSUUdJQ1kxTlRRMk16SVdGU00wSmlNaUJoVVZGQll6TWpZMUpUUUNKQ01pQkFJUUVnUWdKQklsTkJJa0lBUVNFQUlFSXlJa0FnUmVyLzdBdmIrZW82MmNYRmhjWjJoYldWb0JwcGIrN3FPZi91K2Ntd0VSQVVBQkU1ajY3N3NCU3dHQUFVcTd1LzY0d3NIK3Q3d0NWSmlpMWJSeHJ0V2xsV0JUaUhaMWRvWlJZb1dtQVIycnBQN2cvcXorNEtlcUFTQ255Z0ZheDhmK3B2NXMvcWJKeUFGYUFBSUFqUUt6QXhFRnhBQWFBQ1FBajdJTkpTWVJFam13RFJDd0hOQUFzQUJGV0xBVUx4dXhGQjgrV2JJREpSUVJFam13QXkrd0FOQ3dBQyt5QVFNVUVSSTVzZ29ERkJFU09iQUtMN0FVRUxJTkFnb3JXQ0hZRy9SWnNoQUtEUkVTT2JMTUVBRmRRQk1NRUJ3UUxCQThFRXdRWEJCc0VId1FqQkFKWGJLNkVBRnhzQU1Rc2hzQ0NpdFlJZGdiOUZtd0NoQ3lId0lLSzFnaDJCdjBXVEF4QVNjR0l5SW1OVFEyTXpNMU5DTWlCaFVuTkRZek1oWVZFUlFYSlRJMk56VWpCZ1lWRkFKZ0VVMThkb09vcldaMFFVbXRyNGlKbWhyK29DaFVHMnBNVmdMQlJGSjdhVzU1TTM4ek1BNW9nWkdFL3NSaFVZSWtHWWtCUERGWS8vOEFWd0NLQTRVRHFRQW1BWHJyQUFBSEFYb0JVZ0FBQUFFQWZ3RjJBOElESlFBRkFCb0FzQVF2c0FIUXNBRXZzQVFRc2dJQkNpdFlJZGdiOUZrd01RRWpFU0UxSVFQQ3lQMkZBME1CZGdFRXF3QUVBRmYvN0FYaUJjUUFEUUFiQURFQU9nQ2RzZ283UEJFU09iQUtFTEFTMExBS0VMQXgwTEFLRUxBejBBQ3dBRVZZc0FNdkc3RURIejVac0FCRldMQUtMeHV4Q2c4K1diQURFTElTQ0FvcldDSFlHL1Jac0FvUXNoZ0lDaXRZSWRnYjlGbXlIUW9ERVJJNXNCMHZzaDhEQ2hFU09iQWZMN1FBSHhBZkFsMnlNaDBmRVJJNXNESXZzaHdJQ2l0WUlkZ2I5Rm15SlJ3eUVSSTVzQjBRc0N6UXNCOFFzam9JQ2l0WUlkZ2I5Rmt3TVJNMEVpUWdCQklRQWdRaklpUUNKVFFDSkNNaUJBSVFFZ1FnSkJJbEVTTVJJVElXRlJRSEZoWVVGaGNWSXlZMU5DWWpKek15TmpVMEppY2pWN3NCU3dHQUFVcTd1LzY0d3NIK3Q3d0ZFWmIrN3FPZi91K2Ntd0VSQVVBQkU1ajlKWmNCR1ptc2VFRTBCd3FiRFVKTm5vOUZYVWRkalFMWnlnRmF4OGYrcHY1cy9xYkp5QUZheTZZQkhhdWsvdUQrclA3Z3A2b0JJRnYrcndOU2gzMTFQeDF2bzBRWEVDS2dURU9HUGpaR093RUFBUUNIQlJJRFhnV3dBQU1BRVFDd0FTK3lBZ01LSzFnaDJCdjBXVEF4QVNFMUlRTmUvU2tDMXdVU25nQUNBSDhEcndLTEJjUUFDUUFUQURteUFCUVZFUkk1c0FyUUFMQUFSVml3QUM4YnNRQWZQbG13Q3RDd0NpK3lCUUlLSzFnaDJCdjBXYkFBRUxJUUFnb3JXQ0hZRy9SWk1ERUJNaFlVQmlNaUpqUTJFekkyTlRRbUlnWVVGZ0dIYXBxWWJHMmJuV3MxUlVWcVNFa0Z4SjdjbTV2Y252NTRSelUwVEV4b1NBQUNBRjhBQVFQekJQd0FDd0FQQUVZQXNBa3ZzQUJGV0xBTkx4dXhEUTgrV2JBSkVMQUEwTEFKRUxJR0FRb3JXQ0hZRy9SWnNBUFFzQTBRc2c0QkNpdFlJZGdiOUZteUJRNEdFUkk1dEFzRkd3VUNYVEF4QVNFVklSRWpFU0UxSVJFekFTRTFJUUtjQVZmK3Fkaittd0ZsMkFFeS9LOERVUU9EeC81OEFZVEhBWG43QmNRQUFBRUFQQUtiQXJJRnV3QVhBRm15Q0JnWkVSSTVBTEFBUlZpd0R5OGJzUThmUGxtd0FFVllzQUF2RzdFQUV6NVpzaFlDQ2l0WUlkZ2I5Rm15QWdBV0VSSTVzZ01QQUJFU09iQVBFTElJQWdvcldDSFlHL1Jac2d3UEFCRVNPYklURHdBUkVqa3dNUUVoTlFFMk5UUW1JeUlHRlNNME5qTXlGaFVVRHdJaEFyTDluQUVkY1RZME9rSzZxWWVQbkdwaWpBRnpBcHQ5QVFWblF5bzFRalowbVlCemEyWlhjUUFCQURjQ2p3S3BCYm9BSkFCOXNoNGxKaEVTT1FDd0FFVllzQTB2RzdFTkh6NVpzQUJGV0xBWEx4dXhGeE0rV2JJQkZ3MFJFamw4c0FFdkdMWkFBVkFCWUFFRGNiS1FBUUZkc0EwUXNnWUNDaXRZSWRnYjlGbXlDUUVORVJJNXNBRVFzaU1DQ2l0WUlkZ2I5Rm15RWlNQkVSSTVzaHNYRFJFU09iQVhFTEllQWdvcldDSFlHL1JaTURFQk16STFOQ1lqSWdZVkl6UTJNeklXRlJRSEZoVVVCaU1pSmpVekZCWXpNalkxTkNjakFReFJoRFkrTUVHNnBZS1BvNGVWc1krSHE3cEZQRDg5aGx3RWJHRWpOU2NqWTN4NWFYY3pLWTVxZm45eEpqVTNLbVVCQUFBQkFIQUUwUUpJQmdBQUF3QWpBTEFDTDdJUEFnRmRzQURRc0FBdnRBOEFId0FDWGJBQ0VMQUQwQm13QXk4WU1ERUJJUUVqQVRNQkZmN3J3d1lBL3RFQUFRQ1MvbUFFSHdRNkFCSUFZTElORXhRUkVqa0FzQUJGV0xBQUx4dXhBQnMrV2JBQVJWaXdCeThic1FjYlBsbXdBRVZZc0JBdkc3RVFFVDVac0FCRldMQU5MeHV4RFE4K1diQUFSVml3Q2k4YnNRb1BQbG13RFJDeUJBRUtLMWdoMkJ2MFdiSUxEUWNSRWprd01RRVJGaFl6TWpjUk14RWpKd1lqSWljUkl4RUJoQUpaYXFnNzg5OEhYSk41VGZJRU92MkVqWUo1QXhMN3hsWnJOLzQrQmRvQUFRQkZBQUFEVmdXd0FBb0FLN0lDQ3d3UkVqa0FzQUJGV0xBSUx4dXhDQjgrV2JBQVJWaXdBQzhic1FBUFBsbXlBUUFJRVJJNU1ERWhFU01pSkRVMEpETWhFUUtFVU9iKzl3RUs1Z0VoQWdqKzF0WC8rbEFBQUFFQWpnSkZBYWtEVWdBS0FCYXlDQXNNRVJJNUFMQUNMN0VJQ2l0WTJCdmNXVEF4RXpRMk1oWVZGQVlqSWlhT1NvWkxUa0JCVEFMS09rNU9PanRLU2dBQkFHMytRUUhKQUFNQURnQTBzZ2tQRUJFU09RQ3dCaSt3QUVWWXNBNHZHN0VPRHo1WnNBWVFzUWNLSzFqWUc5eFpzZzBIRGhFU09iSUJEUTRSRWprd01TVUhGaFVVQmlNbk1qWTFOQ1luTndFK0M1YXNtd2RDUjBkUUlBTTJHNUpwZG9rdktpMGpCWXNBQVFDQUFxQUNBZ1d6QUFZQU9iSUJCd2dSRWprQXNBQkZXTEFGTHh1eEJSOCtXYkFBUlZpd0FDOGJzUUFUUGxteUJBVUFFUkk1c0FRUXNnTUNDaXRZSWRnYjlGa3dNUUVqRVFjMUpUTUNBcm5KQVc4VEFxQUNPakNTZHdBQ0FIY0NzZ01zQmNRQURBQWFBRUN5Q1JzY0VSSTVzQWtRc0JEUUFMQUFSVml3QWk4YnNRSWZQbG15Q1JzQ0VSSTVzQWt2c2hBQ0NpdFlJZGdiOUZtd0FoQ3lGd0lLSzFnaDJCdjBXVEF4RXpRMklCWVZGUlFHSXlJbU5SY1VGak15TmpjMU5DWWpJZ1lWZDc4Qk5zQzhuWjYrcjExUVRsc0JYVTlPWFFSaG9NUENwa2lmdzhTakJXSnViR0ZRWVc1dFpnRC8vd0JkQUlvRG1RT3BBQ1lCZXdrQUFBY0Jld0YrQUFELy93QlpBQUFGZ3dXckFDY0IxZi9aQXBnQUp3RjhBUnNBQ0FFSEFkZ0N4UUFBQUJBQXNBQkZXTEFGTHh1eEJSOCtXVEF4Ly84QVVBQUFCY3dGcmdBbkFYd0E4QUFJQUNjQjFmL1FBcHNCQndIV0F4b0FBQUFRQUxBQVJWaXdDUzhic1FrZlBsa3dNZi8vQUdjQUFBWDhCYnNBSndGOEFhZ0FDQUFuQWRnRFBnQUFBUWNCMXdBd0Fwc0FFQUN3QUVWWXNDQXZHN0VnSHo1Wk1ERUFBZ0JDL244RHBRUk9BQmtBSXdCaHNoQWtKUkVTT2JBUUVMQWQwQUN3QUVWWXNDRXZHN0VoR3o1WnNBQkZXTEFRTHh1eEVCYytXYkFoRUxJZERRb3JXQ0hZRy9SWnNBRFFzQUF2c2dNQUVCRVNPYkFRRUxJSkFRb3JXQ0hZRy9SWnNnd1FBQkVTT2JJV0VBQVJFamt3TVFFR0JnY0hCaFVVRmpNeU5qVXpCZ1lqSWlZMU5EYzNOamMzRXhRR0lpWTFORFl5RmdKMkFqVkpaMXBpV1ZocTh3THZ3czdpbTF4T0NnTDNSNFJJU0lSSEFwVjhrVTlxWVdwZVhXUlRzZERKdUtXalhVaHpOUUUzT0V0TE9EZExTd0FBQXYvMkFBQUhWd1d3QUE4QUVnQjNBTEFBUlZpd0JpOGJzUVlmUGxtd0FFVllzQUF2RzdFQUR6NVpzQUJGV0xBRUx4dXhCQTgrV2JJUkJnQVJFam13RVMreUFnRUtLMWdoMkJ2MFdiQUdFTElJQVFvcldDSFlHL1Jac2dzR0FCRVNPYkFMTDdJTUFRb3JXQ0hZRy9SWnNBQVFzZzRCQ2l0WUlkZ2I5Rm15RWdZQUVSSTVNREVoSVFNaEF5RUJJUlVoRXlFVklSTWhBU0VEQjFmOGZnLytDcmorM2dOREErRDllaEVDSlAza0ZBS1grdTBCZVJzQlZQNnNCYkRGL21qRi9qWUJad0tJQUFBQkFFMEExZ1BzQklZQUN3QTRBTEFETDdJSkRBTVJFam13Q1MreUNna0RFUkk1c2dRRENSRVNPYklCQ2dRUkVqbXdBeEN3QmRDeUJ3UUtFUkk1c0FrUXNBdlFNREVUQVFFM0FRRVhBUUVIQVFGTkFUeit4SlFCT3dFOGxQN0VBVHlVL3NUK3hRRnNBVUlCUXBiK3ZnRkNsdjYrL3I2V0FVSCt2d0FBQXdCcC82RUZJZ1h1QUJjQUlBQXBBR2F5RUNvckVSSTVzQkFRc0IzUXNCQVFzQ2JRQUxBQVJWaXdFQzhic1JBZlBsbXdBRVZZc0FRdkc3RUVEejVac2hvUUJCRVNPYklqRUFRUkVqbXdJeEN3RzlDd0VCQ3lIUUVLSzFnaDJCdjBXYkFhRUxBazBMQUVFTEltQVFvcldDSFlHL1JaTURFQkZBSUVJeUluQnlNM0poRTFOQklrTXpJWE56TUhGaE1GRkJjQkppTWlBZ2NGTkNjQkZqTXlFalVGSXBUKzdiU2toRnVwa2NPV0FSU3l4WTlYcDVPZEFmeEVSd0gyVjRla3VRSUN2eXorRjA1cHFiVUNzdGIrdmExTGx1N0RBV2REMVFGRXIyV1A4OEgrdzB2UGdBTTZWZjcvNndpbWN2emNOZ0VBOWdBQUFnQ1VBQUFFZmdXd0FBd0FGQUJYc2dJVkZoRVNPYkFDRUxBUDBBQ3dBRVZZc0FBdkc3RUFIejVac0FCRldMQUtMeHV4Q2c4K1diSUJDZ0FSRWptd0FTK3lEZ29BRVJJNXNBNHZzZ2tCQ2l0WUlkZ2I5Rm13QVJDeURRRUtLMWdoMkJ2MFdUQXhBUkV6TWdRVkZBUWpJeEVqRVJNUk16STJOQ1luQVlmeDlBRVMvdTd6OHZQejluMlJqSG9Gc1A3bzdzakg3LzdVQmJEK0pmNGFndDZFQWdBQUFRQ0kvK3dFbXdZVkFDd0FXN0lqTFM0UkVqa0FzQUJGV0xBRkx4dXhCU0UrV2JBQVJWaXdGUzhic1JVUFBsbXdBRVZZc0FBdkc3RUFEejVac2c0RkZSRVNPYkFWRUxJY0FRb3JXQ0hZRy9SWnNpSVZCUkVTT2JBRkVMSXFBUW9yV0NIWUcvUlpNREVoSXhFME5qTXlGaFVVRGdJVkZCNENGUlFHSXlJbUp6Y1dGak15TmpVMExnSTFORFkxTkNZaklnY0JldkxsenJ2WEcwVVdRYkpSMmNaUXF5WXhMWDgyWVZwR3JsRitYRkM0QkFSUjF1NjdxVDVpY1VFbkxGU1VpVXVydVNjWnd4d2xWa014VzRpSVVGakpUVkZoOXdBQUF3QkkvK3dHaEFSUUFDa0FOQUE4QU1xeUFqMCtFUkk1c0FJUXNDM1FzQUlRc0RqUUFMQUFSVml3Rnk4YnNSY2JQbG13QUVWWXNBVXZHN0VGRHo1WnNBRFFzQUF2c2d3RkZ4RVNPYkFNTDdLUERBRmRzQmNRc2hBQkNpdFlJZGdiOUZtd0Z4Q3dHOUN3R3kreU9BQWJFUkk1c0RndnRCODRMemdDY2JUdk9QODRBbkcwWHpodk9BSnh0TDg0enpnQ1hiS01PQUZkc2lBSENpdFlJZGdiOUZtd0FCQ3lJd0VLSzFnaDJCdjBXYkFGRUxJcUFRb3JXQ0hZRy9SWnNBd1FzaThIQ2l0WUlkZ2I5Rm13R3hDeU5RRUtLMWdoMkJ2MFdUQXhCU0luQmdZaklpWTFORFl6TXpVMEppTWlCaFVuTkRZek1oYzJGeklTRlJVaEZoWXpNamMzRndZR0pUSTJOelVqQmdZVkZCWUJJZ1lISVRVMEpnVG0vWXhCMW9hd3lPN3B2MTlZVzNQeS9jWGZiNFBJMU83OVNRbVlob2xyUFVsRzBmeVlPb2d0eEdoNFhRTXJZMzhRQWNSdEZLRk5WTENjbnF4SFcyZFpRaE9TdVlXSEF2Nzk2NG1MbmpvaXBqaEF1RHNyMFFKZlJrRlBBdWVLZng1eGVnQUNBR2YvN0FSQUJpd0FIUUFyQUdXeUJ5d3RFUkk1c0FjUXNDalFBTEFBUlZpd0dTOGJzUmtoUGxtd0FFVllzQWN2RzdFSER6NVpzZzhIR1JFU09iQVBMN0lSRHdjUkVqbXdHUkN5R0FFS0sxZ2gyQnYwV2JBUEVMSWlBUW9yV0NIWUcvUlpzQWNRc2lnQkNpdFlJZGdiOUZrd01RRVNFUlVVQWdZaklpWW1OVFEyTmpNeUZ5WW5CeWMzSmljM0ZoYzNGd01uSmlZaklnWVZGQll6TWpZMUEwTCtmdVdNaXVKK2NjNkVrbkV4ZnN4T3JINmlTKzZ4dEU2UEFTQjdUbjZMalc1dmlRVVgvdmYrYjFLbS92bVNmdUtJbGVkOVc2bDZoMjF5VWlyRE1vZDRiZjBaRWpBNHFKVitxTWl0QUFBREFFTUFrd1EzQk13QUF3QU5BQmtBVXJJRUdoc1JFam13QkJDd0FOQ3dCQkN3RWRBQXNBTXZzZ0FCQ2l0WUlkZ2I5Rm13QXhDeENRb3JXTmdiM0ZteUJBMEtLMWdoMkJ2MFdiQUFFTEVSQ2l0WTJCdmNXYklYRFFvcldDSFlHL1JaTURFQklUVWhBVElXRkFZaklpWTBOZ00wTmpNeUZoVVVCaU1pSmdRMy9Bd0Q5UDRKUkVwS1JFTktTa3BLUTBSS1NrUkRTZ0pHMUFHeVRISkxTM0pNL0VvNlRFdzZPVXBLQUFNQVQvOTNCRDBFdXdBVkFCMEFKUUJtc2dRbUp4RVNPYkFFRUxBYjBMQUVFTEFqMEFDd0FFVllzQVF2RzdFRUd6NVpzQUJGV0xBUEx4dXhEdzgrV2JJWUJBOFJFam15SUFRUEVSSTVzQ0FRc0JuUXNBUVFzaHNCQ2l0WUlkZ2I5Rm13R0JDd0lkQ3dEeEN5SXdFS0sxZ2gyQnYwV1RBeEV6UTJOak15RnpjekJ4WVJGQVlHSXlJbkJ5TTNKaE1VRndFbUl5SUdCVFFuQVJZek1qWlBmdVNVYWxoSGtXYkVlK1dXWFZwSWtXYk84MEFCS3k4NWQ0d0NDVHIrMkNzemU0a0NKNS8vaVNLUDBKbit3S0Q4aWg2VHo1WUJOcHhpQW1FV3ZhZVVYZjJuRWNBQUFBSUFndjVnQkRjR0FBQVBBQm9BWkxJVEd4d1JFam13RXhDd0ROQUFzQWt2c0FCRldMQU1MeHV4REJzK1diQUFSVml3Qmk4YnNRWVJQbG13QUVWWXNBTXZHN0VERHo1WnNnVU1BeEVTT2JJS0RBTVJFam13REJDeUV3RUtLMWdoMkJ2MFdiQURFTElZQVFvcldDSFlHL1JaTURFQkZBSWpJaWNSSXhFekVUWXpNaElSSnpRbUl5SUhFUll6TWpZRU4rUENzbXZ6ODJxd3hlUHpnM2FWUVVLV2RJTUNFdmYrMFhYOS93ZWcvZGQzL3RyKytnV211bnYrSUg2N0FBQUNBQjhBQUFXZEJiQUFFd0FYQUdzQXNBQkZXTEFQTHh1eER4OCtXYkFBUlZpd0NDOGJzUWdQUGxteUZBZ1BFUkk1c0JRdnNoQVVEeEVTT2JBUUw3QUEwTEFRRUxJWEJ3b3JXQ0hZRy9SWnNBUFFzQWdRc0FYUXNCUVFzZ2NCQ2l0WUlkZ2I5Rm13RnhDd0N0Q3dFQkN3RGRDd0R4Q3dFdEF3TVFFekZTTVJJeEVoRVNNUkl6VXpFVE1SSVJFekFTRTFJUVVlZjMvOC9YWDhmSHo4QW92OC9Ia0NpLzExQks2aSsvUUNoLzE1QkF5aUFRTCsvZ0VDL2FLNkFBRUFqd0FBQVlJRU9nQURBQjBBc0FCRldMQUNMeHV4QWhzK1diQUFSVml3QUM4YnNRQVBQbGt3TVNFakVUTUJndlB6QkRvQUFBRUFqZ0FBQkdzRU9nQU1BRjhBc0FCRldMQUVMeHV4QkJzK1diQUFSVml3Q0M4YnNRZ2JQbG13QUVWWXNBSXZHN0VDRHo1WnNBQkZXTEFMTHh1eEN3OCtXYklHQWdRUkVqbXdCaSswSHdZdkJnSnhzbzhHQVYyeUFRRUtLMWdoMkJ2MFdiSUtBUVlSRWprd01RRWpFU01STXhFekFTRUJBU0VCNzIveThsVUJVQUVzL21FQnVmN0xBYXorVkFRNi9sQUJzUDN6L2RNQUFRQWlBQUFFTmdXd0FBMEFXd0N3QUVWWXNBd3ZHN0VNSHo1WnNBQkZXTEFHTHh1eEJnOCtXYklCREFZUkVqbXdBUyt3QU5Dd0FSQ3lBZ2NLSzFnaDJCdjBXYkFEMExBR0VMSUVBUW9yV0NIWUcvUlpzQU1Rc0FqUXNBblFzQUFRc0F2UXNBclFNREVCTnhVSEVTRVZJUkVITlRjUk13R2g2dW9DbGZ4dWdvTDlBMmRIazBmOTlzb0NoeWVUSndLV0FBQUJBQ0VBQUFJdUJnQUFDd0JLQUxBQVJWaXdDaThic1FvaFBsbXdBRVZZc0FRdkc3RUVEejVac2dFRUNoRVNPYkFCTDdBQTBMQUJFTElDQndvcldDSFlHL1Jac0FQUXNBYlFzQWZRc0FBUXNBblFzQWpRTURFQk54VUhFU01SQnpVM0VUTUJtcFNVODRhRzh3TjVOWkkxL1JrQ2tDK1NMd0xlQUFFQWtQNUxCUWtGc0FBVEFHZXlCaFFWRVJJNUFMQUFSVml3QUM4YnNRQWZQbG13QUVWWXNCQXZHN0VRSHo1WnNBQkZXTEFFTHh1eEJCRStXYkFBUlZpd0RDOGJzUXdQUGxtd0FFVllzQTR2RzdFT0R6NVpzQVFRc2drQkNpdFlJZGdiOUZteURRQU1FUkk1c2hJT0FCRVNPVEF4QVJFVUJpTWlKemNXTXpJMU5RRVJJeEV6QVJFRkNiNnBSandPS0RwNy9ZSDgvQUovQmJENkdMZkdFY2NNdURFRUZmdnJCYkQ3N0FRVUFBRUFmdjVMQkFZRVRnQWFBR0d5RlJzY0VSSTVBTEFBUlZpd0F5OGJzUU1iUGxtd0FFVllzQUF2RzdFQUd6NVpzQUJGV0xBS0x4dXhDaEUrV2JBQVJWaXdHQzhic1JnUFBsbXlBUmdERVJJNXNBb1FzZzhCQ2l0WUlkZ2I5Rm13QXhDeUZRRUtLMWdoMkJ2MFdUQXhBUmMyTXpJV0Z4RVVCaU1pSnpjV016STFFVFFtSXlJSEVTTVJBVndOYzhTd3RRRzdwa1U2RGlnN2ZGMXBrVXZ6QkRxV3F0YlMvUnUwd2hIR0RMQUMyWGh3Wi96Z0JEb0FBZ0JrLyt3SExRWEVBQmNBSXdDUnNnRWtKUkVTT2JBQkVMQWEwQUN3QUVWWXNBd3ZHN0VNSHo1WnNBQkZXTEFPTHh1eERoOCtXYkFBUlZpd0F5OGJzUU1QUGxtd0FFVllzQUF2RzdFQUR6NVpzQTRRc2hBQkNpdFlJZGdiOUZteUVnQU9FUkk1c0JJdnNoVUJDaXRZSWRnYjlGbXdBQkN5RndFS0sxZ2gyQnYwV2JBREVMSVlBUW9yV0NIWUcvUlpzQXdRc2gwQkNpdFlJZGdiOUZrd01TRWhCaU1pSkFJbkVUUVNKRE15RnlFVklSRWhGU0VSSVFVeU54RW1JeUlHQnhFVUZnY3QvSjJuZWFmKzk1UUNrUUVMcUh1bkExejlUQUpXL2FvQ3UvdDlZMmh5VzZHdkFiSVVrd0VOcWdFNnJBRVNsaFRNL203SS9rQWNEUVE0RHMrOC9zckIwUUFBQXdCYi8rd0c4Z1JQQUI0QUtnQXlBSnV5R1RNMEVSSTVzQmtRc0NUUXNCa1FzQzdRQUxBQVJWaXdBeThic1FNYlBsbXdBRVZZc0Fndkc3RUlHejVac0FCRldMQVhMeHV4Rnc4K1diQUFSVml3R3k4YnNSc1BQbG15QlFnWEVSSTVzaThYQ0JFU09iQXZMN1FmTHk4dkFuR3lqQzhCWGJJTUJ3b3JXQ0hZRy9SWnNCY1FzaEFCQ2l0WUlkZ2I5Rm15R1FnWEVSSTVzQ0xRc0FNUXNpZ0JDaXRZSWRnYjlGbXdLOUF3TVJNMEFETXlGelkyRnpJU0ZSVWhGaFl6TWpZM0Z3WUdJeUluQmlNaUFCRVhGQll6TWpZMU5DWWpJZ1lsSWdZSElUVTBKbHNCRCtENWhrRzNiZGJ1L1ZZTGtYVlpqMGRQUjgxNDk0eUc5dVArOHZLR2VYZUdoM2gxaUFQaFZYZ1VBYlZ4QWlmNEFTK3hWRjRCL3Yzc2lJdWVLaktlUDBHdXJnRXRBUUlKcXJxNXdLYSt1cnFKZVJsdmVnQUFBUUNMQUFBQ2xRWVZBQXdBTXJJRERRNFJFamtBc0FCRldMQUVMeHV4QkNFK1diQUFSVml3QUM4YnNRQVBQbG13QkJDeUNRRUtLMWdoMkJ2MFdUQXhNeEUwTmpNeUZ3Y21JeUlWRVl2Q3NEOVpHU295b3dTY3RzTVZ1UXU2KzJnQUFnQlIvK3dGSGdYRUFCWUFIZ0Jic2dBZklCRVNPYkFYMEFDd0FFVllzQTh2RzdFUEh6NVpzQUJGV0xBQUx4dXhBQTgrV2JJRkR3QVJFam13QlMrd0R4Q3lDQUVLSzFnaDJCdjBXYkFBRUxJWEFRb3JXQ0hZRy9SWnNBVVFzaG9CQ2l0WUlkZ2I5Rmt3TVFVZ0FCRTFJU1ltSXlJSEJ5YzNOak1nQUJFVkZBSUVKekkyTnlFVkZCWUN1UDdjL3IwRDBBWGZ6S2VYTkRFaHNOb0JPZ0Zyb3Y3bHFaYStFdjB2dWhRQllBRkppZUR3TkJQR0QwaitpLzYzYThQK3c2L1UycjBmdWI4QUFmL2sva3NDMHdZVkFCNEFjYklVSHlBUkVqa0FzQUJGV0xBVkx4dXhGU0UrV2JBQVJWaXdFQzhic1JBYlBsbXdBRVZZc0Iwdkc3RWRHejVac0FCRldMQUZMeHV4QlJFK1diQWRFTElBQVFvcldDSFlHL1Jac0FVUXNnc0JDaXRZSWRnYjlGbXdBQkN3RHRDd0Q5Q3dGUkN5R2dFS0sxZ2gyQnYwV1RBeEFTTVJGQVlqSWljM0ZoWXpNalVSSXpVek5UUTJNeklYQnlZaklnY1ZNd0tFeWJXa1NEWVBCMFFTZUtXbHdyRTlXeGttTzUwQnlRT0cvRFd3d0JHL0F3cXVBOHEwWXJiREZid0tyV2NBQWdCWS8rd0ZxZ1l1QUJnQUpnQmJzZ1FuS0JFU09iQUVFTEFqMEFDd0FFVllzQTB2RzdFTkh6NVpzQUJGV0xBRUx4dXhCQTgrV2JJUERRUVJFam13RHkreUZnZ0tLMWdoMkJ2MFdiQU5FTEljQVFvcldDSFlHL1Jac0FRUXNpTUJDaXRZSWRnYjlGa3dNUUVVQWdRaklpUUNKelUwRWlRek1oYzJOalV6RkFZSEZoY0hOQ1lqSWdJSEZSUVNNeklTTlFVUWxQN3R0TEQrNjVjQmx3RVRzZitpVDB5N2VYeFhCUDI0cUtTNUFybW9xYlVDc3RiK3ZhMnRBVURSVXRVQlJxMm9EWU9DcE5FanA5OFM5djcrLyt0VTdQNzJBUUQyQUFBQ0FFLy83QVM3QktnQUZ3QWlBRnV5RkNNa0VSSTVzQlFRc0NEUUFMQUFSVml3QkM4YnNRUWJQbG13QUVWWXNCUXZHN0VVRHo1WnNnWUVGQkVTT2JBR0w3SU5DQW9yV0NIWUcvUlpzQlFRc2hvQkNpdFlJZGdiOUZtd0JCQ3lJQUVLSzFnaDJCdjBXVEF4RXpRMk5qTXlGelkyTlRNVUJnY1dGeFVVQmdZaklnQVJGeFFXTWpZMU5DWWpJZ1pQZmVTVTRZbzFNS2RZWno4Q2UrZVY0LzdzOG9yMmlZMTVkNHdDSjZIOWlaVVRhbktHc3lWOW5oMmcvSW9CTGdFQkNhZTl3TG1udmIwQUFBRUFmZi9zQmowR0FRQVlBRlN5REJrYUVSSTVBTEFBUlZpd0dDOGJzUmdmUGxtd0FFVllzQkV2RzdFUkh6NVpzQUJGV0xBTUx4dXhEQTgrV2JJQkRCZ1JFam13QVMreUNBZ0tLMWdoMkJ2MFdiQU1FTElWQVFvcldDSFlHL1JaTURFQkZUWTJOVE1VQmdjUkZBQWpJZ0ExRVRNUkZCWXpJQkVSQkwxdFhyVzd4ZjdYOS9yKzJ2eVVrQUVrQmJEY0NvS2g1TllKL2FYby92RUJDKzBEelB3eWtwb0JOQVBHQUFFQWQvL3NCU2dFa3dBWkFHR3lCeG9iRVJJNUFMQUFSVml3RFM4YnNRMGJQbG13QUVWWXNBZ3ZHN0VJRHo1WnNBQkZXTEFFTHh1eEJBOCtXYkFORUxBVDBMSVZFd2dSRWptd0ZTK3lBd2dLSzFnaDJCdjBXYklHRlFnUkVqbXdDQkN5RUFFS0sxZ2gyQnYwV1RBeEFSUUdCeEVqSndZaklpWTFFVE1SRkRNeU54RXpGVFkyTnpjRktJK2k1UVpyeGJDMTg2dXhQdk5JUVFVQ0JKT3lwUXY4ejJwK3pzTUN2ZjFHem44RENZZ0hRa3hNQUFIL3RmNUxBWk1FT2dBTUFDK3lBdzBPRVJJNUFMQUFSVml3REM4YnNRd2JQbG13QUVWWXNBUXZHN0VFRVQ1WnNna0JDaXRZSWRnYjlGa3dNUUVSQmdZaklpYzNGak15TlJFQmt3RzRwMFk0RHljNmZBUTYrNFd5d2hHL0RjQUViQUFBQWdCWi8rd0QrQVJQQUJZQUhnQmVzZ2dmSUJFU09iQUlFTEFYMEFDd0FFVllzQUF2RzdFQUd6NVpzQUJGV0xBSUx4dXhDQTgrV2JJTUFBZ1JFam13REMrd0FCQ3lFQUVLSzFnaDJCdjBXYkFJRUxJWEFRb3JXQ0hZRy9SWnNBd1FzaG9IQ2l0WUlkZ2I5Rmt3TVFFeUFCVVZGQVlHSnlJQ05UVWhKaVlqSWdZSEp6WTJFekkyTnlFVkZCWUNBT1FCRkh2YWh0WHZBcW9MajNkV2kwNVBSdEtSVm5nVC9rdHhCRS8rMVBZZm12dU5BUUVCN1lpSW9TYzFuajVEL0dDT2RCbHZlZ0FBQVFDVUJPQURRd1lCQUFnQVJRQ3dCQyt5RHdRQlhiSlFCQUZkc25BRUFWMndBdEN3QWkrd0FkQVpzQUV2R0xBRUVMQUgwTEFITDdRUEJ4OEhBbDJ5QXdjRUVSSTVzQUVRc0FYUUdiQUZMeGd3TVFFVkl5Y0hJelVCTXdORHc1YVZ3UUVQandUckM1eWNEUUVVQUFBQkFISUU0QU0wQmdFQUNBQWxBTEFFTDdJUEJBRmRzQUhRc0FFdnRBOEJId0VDWGJJQUJBRVJFam13Q05Dd0NDOHdNUUUzTXhVQkl3RTFNd0hTa3REKzZaYis2ODRGWnBzSy91a0JHQWtBLy84QWh3VVNBMTRGc0FBR0FIQUFBQUFCQUhVRXpBTDdCZVlBQ3dBdkFMQURMN0lQQXdGZHNBYlFzQVl2dEE4R0h3WUNYYkFERUxJSUFnb3JXQ0hZRy9SWnNBWVFzQXZRc0Fzdk1ERUJGQVlnSmpVekZCWXlOalVDKzdEKzJyQzJTNFJLQmVaK25KeCtRa2xKUWdBQUFRQ0JCTjhCaHdYVkFBa0FIYklEQ2dzUkVqa0FzQWd2c2c4SUFWMnlBZ1VLSzFnaDJCdjBXVEF4RXpRMk1oWVZGQVlpSm9GRWZrUkVma1FGV1RWSFJ6VTBSa1lBQUFJQWVBU05Bak1HS2dBSkFCUUFLZ0N3QlMreUR3VUJYYkFUMExBVEw3SUFDZ29yV0NIWUcvUlpzQVVRc2cwS0NpdFlJZGdiOUZrd01RRXlGaFFHSXlJbU5EWUhGQll6TWpZMU5DWWlCZ0ZXWFlCOVlHRjlmeEZDTGk5QlAySS9CaXA3cW5oNHFudlFMMEZBTUM1RFF3QUJBQ24rVWdHaEFEd0FEd0Fpc2c4UUVSRVNPUUN3QUVWWXNBb3ZHN0VLRVQ1WnNnVURDaXRZSWRnYjlGa3dNU0VHQmhVVU16STNGd1lqSWlZMU5EY0JqRmRLUnl3dUZVbGNYM1QwT0Y0eFJCZU9MRzVidFd3QUFRQjZCTnNEVndYMUFCVUFRQUN3QXkrd0NOQ3dDQysyRHdnZkNDOElBMTJ3QXhDd0M5Q3dDeSt3Q0JDeUR3TUtLMWdoMkJ2MFdiQURFTElTQXdvcldDSFlHL1Jac0E4UXNCWFFNREVCRkFZaklpNENJeUlHRlNjME5qTXlGak15TmpVRFYzOWdKemxwS3hvbU5aVi9Yem1oTkNZMkJlbHVraEU4RERrdUNHNldXamt2QUFBQ0FFa0UwUU5XQmY4QUF3QUhBRUFBc0FJdnNnOENBVjJ3QU5Dd0FDKzBEd0FmQUFKZHNBSVFzQVBRR2JBREx4aXdBQkN3QmRDd0JTK3dBaEN3QnRDd0JpK3dBeEN3QjlBWnNBY3ZHREF4QVRNQkl3TXpBeU1DYU83KzlzV1E2ZDY1QmYvKzBnRXUvdElBQWdDQy9tb0I3UCsrQUFzQUZ3QTlBTEFZTDdBRDBMQURMMEFQQUFNUUF5QURNQU5BQTFBRFlBTUhYYkFQMExBUEw3SUpDUW9yV0NIWUcvUlpzQU1Rc2hVSkNpdFlJZGdiOUZrd01SYzBOak15RmhVVUJpTWlKamNVRmpNeU5qVTBKaU1pQm9KcFRrbHFha2xPYVdVd0lpRXRMU0VpTU81SlkyRkxTbDVnU0NFdUxTSWtNREFBQUFIOGpnVFIvbVlHQUFBREFDTUFzQUV2c2c4QkFWMndBTkFac0FBdkdMQUJFTEFDMExBQ0w3UVBBaDhDQWwwd01RRWpBU0grWnNyKzhnRVZCTkVCTHdBQi9WNEUwZjgyQmdBQUF3QWpBTEFDTDdJUEFnRmRzQUhRc0FFdnRBOEJId0VDWGJBQ0VMQUQwQm13QXk4WU1ERUJJUUVqL2lFQkZmN3J3d1lBL3RILy8veHpCTnYvVUFYMUFBY0FwUHY1QUFBQUFmMCtCT2IrbVFaL0FBNEFKUUN3QUMrd0J0Q3dCaSt5QVFBR0VSSTVzZ2NJQ2l0WUlkZ2I5Rm15RFFFQUVSSTVNREVCSnpZMk5UUWpOeklXRlJRR0J4WDlVUWRKUVpZSHFhdE9TQVRta2dVY0kwaDdhRmc4VGdwRkFBQUMvQXdFNVA4MEJlNEFBd0FIQURjQXNBRXZzQURRR2JBQUx4aXdBUkN3QmRDd0JTK3dCdEN3QmkrMkR3WWZCaThHQTEyd0E5Q3dBeSt3QUJDd0JOQVpzQVF2R0RBeEFTTUJJUUVqQXpQK0I5RCsxUUVHQWlMRDlmb0U1QUVLL3ZZQkNnQUFBZjBjL3BUK0wvK0xBQWdBRVFDd0FpK3lCZ1VLSzFnaDJCdjBXVEF4QlRRMk1oWVVCaUltL1J4SGhFaEloRWZ4TlVkSGFrWkdBQUFCQU1ZRTZRSGlCa0VBQXdBWEFMQUNMN0FBMExBQUw3QUNFTEFEMEJtd0F5OFlNREVCTXdNakFRUGZqSkFHUWY2b0FBTUFad1RmQTdvR3J3QURBQXdBRlFBN0FMQVVMN0FDMExBQ0w3QUIwTEFCTDdRUEFSOEJBbDJ3QWhDd0E5QVpzQU12R0xBVUVMQUwwTEFMTDdJR0JRb3JXQ0hZRy9SWnNBL1FNREVCTXdNakJUUTJNaFlVQmlJbUpUUTJNaFlVQmlJbUFlN2xncEwrcUVSMlEwTjJSQUpXUTNaRVJIWkRCcS8rMWk4eVJFUmtSRVF4TWtSRVpFUkUvLzhBamdKRkFha0RVZ0lHQUhnQUFBQUJBSnNBQUFRM0JiQUFCUUFyQUxBQVJWaXdCQzhic1FRZlBsbXdBRVZZc0FJdkc3RUNEejVac0FRUXNnQUJDaXRZSWRnYjlGa3dNUUVoRVNNUklRUTMvV0Q4QTV3RTVQc2NCYkFBQWdBWkFBQUZvQVd3QUFNQUJnQXZBTEFBUlZpd0FDOGJzUUFmUGxtd0FFVllzQUl2RzdFQ0R6NVpzZ1FCQ2l0WUlkZ2I5Rm15QmdJQUVSSTVNREVCTXdFaEpTRUJBbS96QWo3NmVRRlZBdUQrbUFXdytsREtBN3NBQXdCYi8rd0ZFd1hFQUFNQUZBQWlBSGF5Q0NNa0VSSTVzQWdRc0FIUXNBZ1FzQi9RQUxBQVJWaXdFQzhic1JBZlBsbXdBRVZZc0Fndkc3RUlEejVac2dJSUVCRVNPWHl3QWk4WXRHQUNjQUlDWGJRd0FrQUNBbDJ5QUFJQmNiSUJBUW9yV0NIWUcvUlpzQkFRc2hnQkNpdFlJZGdiOUZtd0NCQ3lId0VLSzFnaDJCdjBXVEF4QVNFMUlRVVVBZ1FqSWlRQ0p6VTBFaVFnQkJJWEJ6UUNJeUlDQnhVVUVqTXlFalVEby81QUFjQUJjSlQrN2JPdy91NlpBNVlCRkFGa0FST1dBZnkzcWFTNUFydW1xYlVDZWNLSjF2NjlyYW9CUE0xZDFRRkVyNnYrdjlVRjd3RUYvdi9yVlBEKytnRUE5Z0FCQUNBQUFBVVNCYkFBQmdBeEFMQUFSVml3QXk4YnNRTWZQbG13QUVWWXNBRXZHN0VCRHo1WnNBQkZXTEFGTHh1eEJROCtXYklBQXdFUkVqa3dNUUVCSVFFekFTRUNtUDZYL3ZFQi92VUIvLzd3QkVUN3ZBV3crbEFBQUFNQWJBQUFCQzRGc0FBREFBY0FDd0JMQUxBQVJWaXdDQzhic1FnZlBsbXdBRVZZc0FJdkc3RUNEejVac2dBQkNpdFlJZGdiOUZteUJRZ0NFUkk1c0FVdnNnWUJDaXRZSWRnYjlGbXdDQkN5Q2dFS0sxZ2gyQnYwV1RBeE55RVZJUk1oRlNFRElSVWhiQVBDL0Q1a0F2YjlDbGNEbWZ4bnlzb0RUY1lES2N3QUFRQ2JBQUFGRkFXd0FBY0FPQUN3QUVWWXNBWXZHN0VHSHo1WnNBQkZXTEFBTHh1eEFBOCtXYkFBUlZpd0JDOGJzUVFQUGxtd0JoQ3lBZ0VLSzFnaDJCdjBXVEF4SVNNUklSRWpFU0VGRlB6OWYvd0VlUVRrK3h3RnNBQUJBRWNBQUFSTkJiQUFEQUE4QUxBQVJWaXdDQzhic1FnZlBsbXdBRVZZc0FNdkc3RUREejVac2dFQkNpdFlJZGdiOUZtd0JkQ3dDQkN5Q2dFS0sxZ2gyQnYwV2JBSDBEQXhBUUVoRlNFMUFRRTFJUlVoQVFNYy9uVUN2UHY2QWNuK053UGkvV3NCaUFMUS9mcktsd0pDQWorWXpQMy9BQUFEQUVvQUFBV3VCYkFBRlFBY0FDTUFiTElMSkNVUkVqbXdDeEN3R2RDd0N4Q3dJTkFBc0FCRldMQVVMeHV4RkI4K1diQUFSVml3Q2k4YnNRb1BQbG15RXhRS0VSSTVzQk12c0FEUXNna0tGQkVTT2JBSkw3QU0wTEFKRUxJaEFRb3JXQ0hZRy9SWnNCblFzQk1Rc2hvQkNpdFlJZGdiOUZtd0lOQXdNUUVXQkJZVkZBWUhCZ2NWSXpVbUpDWVFOaVEzTlRNQkZCWVhFUVlHQlRRbUp4RTJOZ044b1FFRGpvaDhoYW45b3Y3OGo0NEJBNlQ5L2NhcWs1YW5BM1NtbEpHcEJQOERqLzZlbXZaSVRRT3BxUUdNK2dFKy80OERzZjBmb0xBQ0FxNEV0NStndGdUOVVnS3pBQUFCQUVRQUFBVmNCYkFBRndCY3NnQVlHUkVTT1FDd0FFVllzQkV2RzdFUkh6NVpzQUJGV0xBV0x4dXhGaDgrV2JBQVJWaXdCQzhic1FRZlBsbXdBRVZZc0Fzdkc3RUxEejVac2hVTEZoRVNPYkFWTDdBQTBMQVZFTElNQVFvcldDSFlHL1Jac0FuUU1ERUJOalkxRVRNUkJnQUhFU01SSmdBbkVUTVJGaFlYRVRNRFRJT1EvUVArNmZiODhQN29CUHdCajREOEFrTVh2cWNCOGY0Rzl2N1BHZjZLQVhVWEFURDFBZi8rQzUzQ0dBTnNBQUFCQUdzQUFBVGRCY01BSlFCY3NnY21KeEVTT1FDd0FFVllzQm92RzdFYUh6NVpzQUJGV0xBUEx4dXhEdzgrV2JBQVJWaXdKQzhic1NRUFBsbXdEeEN5RVFFS0sxZ2gyQnYwV2JBTzBMQUEwTEFhRUxJSEFRb3JXQ0hZRy9SWnNCRVFzQ0xRc0NQUU1ERWxOaEkzTlRRbUl5SUdGUlVVRWhjVklUVXpKZ0kxTlRRU0pETXlCQklWRlJRQ0J6TVZJUUxmZEhzQm5aQ09tMzkzL2dmWWEzaU9BUVdrcFFFR2tIZHIxUDRRenlBQkVPZHR5dHJaeldUci91c2V6OHRuQVIrZVlyWUJIWitlL3VLMVpaZiszR2ZMQUFBQ0FGYi82d1I1QkU0QUZnQWhBSG15SHlJakVSSTVzQjhRc0JQUUFMQUFSVml3RXk4YnNSTWJQbG13QUVWWXNBQXZHN0VBR3o1WnNBQkZXTEFNTHh1eERBOCtXYkFBUlZpd0NDOGJzUWdQUGxteUF3RUtLMWdoMkJ2MFdiSUtFd3dSRWpteUZSTU1FUkk1c0F3UXNob0JDaXRZSWRnYjlGbXdFeEN5SHdFS0sxZ2gyQnYwV1RBeEFSRVdNekkzRndZaklpY0dJeUlDTlRVUUVqTXlGemNCRkJZek1qY1JKaU1pQmdQOUEwWVJDaGd6VEtJMVpzSEQ0K1RFdFdjVC9oeDZkb3hHUm9wemZ3UTYvUHA3QkxRZW82SUJIZmdOQVFvQk5wZUQvYitlcllnQng0N0ZBQUlBbHY1M0JHb0Z4QUFVQUNnQVpiSW5LU29SRWptd0p4Q3dBTkFBc0E4dnNBQkZXTEFBTHh1eEFCOCtXYkFBUlZpd0RDOGJzUXdQUGxteUp3QU1FUkk1c0NjdnNpUUJDaXRZSWRnYjlGbXlCaVFuRVJJNXNBQVFzaGdCQ2l0WUlkZ2I5Rm13REJDeUhnRUtLMWdoMkJ2MFdUQXhBVElXRlJRR0J4WVdGUlFHSXlJbkVTTVJORFkyQVRRbUl5SUdGUkVXTXpJMk5UUW1KeU0xTXpJQ2FjL3lZMWg1Z3ZMUnBYcnlmTmtCVEhGZFlJRlluWEdKZW1kN1NOUUZ4Tml5WDVzd0xMMkN6ZXhUL2pnRnFYUEJjUDV0V25aK2FQemxVb2x1YlpFQnVRQUFBUUFnL2w4RDlRUTZBQWdBT0xJQUNRb1JFamtBc0FCRldMQUJMeHV4QVJzK1diQUFSVml3Qnk4YnNRY2JQbG13QUVWWXNBUXZHN0VFRVQ1WnNnQUhCQkVTT1RBeEFSTXpBUkVqRVFFekFnN3MrLzZQOC82UCt3RTdBdi83OFA0MUFkQUVDd0FBQWdCVS8rd0VPQVlnQUI4QUt3QmlzaFlzTFJFU09iQVdFTEFqMEFDd0FFVllzQU12RzdFRElUNVpzQUJGV0xBV0x4dXhGZzgrV2JBREVMSUpBUW9yV0NIWUcvUlpzZzRXQXhFU09iQU9MN0lwQVFvcldDSFlHL1Jac2gwcERoRVNPYkFXRUxJakFRb3JXQ0hZRy9SWk1ERVRORFl6TWhZWEZTWWpJZ1lWRkJjV0VoY1ZGQVlHSXlJQUVUUTJOeWNtSmhNVUZqTXlOalUwSmljaUJ0RFV0MGx4VDVkcFRscTg0TjRDZXVHVjR2N3V1SWtDVzJoMmlYbDNoNUZ0ZVlrRTZwR2xGaHZETlQwMFhVSlAvdXJNSEp2Mmh3RWpBUU9sL3lJRktJbjlmYUs4dkxaNHl4ZStBQUVBWVAvc0JBd0VUUUFuQUl1eUZpZ3BFUkk1QUxBQVJWaXdDUzhic1FrYlBsbXdBRVZZc0NVdkc3RWxEejVac2hjSkpSRVNPWHl3Rnk4WXRFQVhVQmNDWGJUUUYrQVhBbDJ5R0FjS0sxZ2gyQnYwV2JJREdCY1JFam13Q1JDeUVBRUtLMWdoMkJ2MFdiSU5GeEFSRWpteUhBMEJYYklMRFFGZHNDVVFzaDRCQ2l0WUlkZ2I5Rm15SVI0WUVSSTV0QVFoRkNFQ1hUQXhFelEyTnlZbU5UUTJNeklXRlNNMEppTWlCaFVVRmpNekZTTUdGUlFXTXpJMk5UTVVCQ01pSkdCcFlsZGgrTksvLy9KNldWNXlZR25IMGRKOVptS0M4djc4eTlYKytBRXlYSDhnSkhsSWxxVzFrVHhQVFQ4OFM2MERrejlYV1VLYnVySUFBQUVBWWY1K0E4b0ZzQUFlQUVxeUNCOGdFUkk1QUxBUEw3QUFSVml3QUM4YnNRQWZQbG13QUVWWXNCVXZHN0VWRHo1WnNBQVFzaHdCQ2l0WUlkZ2I5Rm15QVJ3QUVSSTVzQlVRc2dnQkNpdFlJZGdiOUZrd01RRVZBUVlHRlJRV0Z4Y1dGaFVVQmdjbk5qVTJKeWNtSnlZMUVBRTNJVFVEeXY1Z1ZrWTlTOTFoVDNwU2ZWMENibWpFU2prQkpkejl4QVd3a2Y0S2JicHJWRm9ZUWg5aVVVZTZQbVZuUmowaEd6SnBVSXNCSUFGUi9jTUFBQUVBZnY1aEJBWUVUZ0FSQUZPeURCSVRFUkk1QUxBQVJWaXdBeThic1FNYlBsbXdBRVZZc0FBdkc3RUFHejVac0FCRldMQUhMeHV4QnhFK1diQUFSVml3RHk4YnNROFBQbG15QVFNUEVSSTVzQU1Rc2d3QkNpdFlJZGdiOUZrd01RRVhOak15RmhjUkl4RTBKaU1pQnhFakVRRmNESGZCdHEwRDgxNW9sa2J6QkRxRGw4VEYrNXdFVTI1cGV2enZCRG9BQXdCei8rd0VMQVhFQUEwQUZnQWVBSG15QXg4Z0VSSTVzQU1Rc0JQUXNBTVFzQnZRQUxBQVJWaXdDaThic1FvZlBsbXdBRVZZc0FNdkc3RUREejVac2c0RENoRVNPWHl3RGk4WXRHQU9jQTRDWGJRd0RrQU9BbDJ5QUE0QmNiQUtFTElUQVFvcldDSFlHL1Jac0E0UXNoZ0JDaXRZSWRnYjlGbXdBeEN5R3dFS0sxZ2gyQnYwV1RBeEFSQUNJeUlDQXpVUUVqTXlFaE1GSVRVMEppTWlCaFVGSVJVVUZqSTJOd1FzK09QZitnWDI1dUwyQmYwNkFkUjZjVzk2QWRUK0xIdmdkd0lDY3Y3RS9yWUJRUUV0NlFFMUFVeit4UDdUSXpET3k4dk83eXJRMGNyS0FBQUJBS24vOUFKaEJEb0FEQUFvQUxBQVJWaXdBQzhic1FBYlBsbXdBRVZZc0Frdkc3RUpEejVac2dRQkNpdFlJZGdiOUZrd01RRVJGQll6TWpjVkJpTWdFUkVCbkRJK0tpdEtWdjdvQkRyODlqMDJDcndYQVRVREVRQUJBQmIvN2dSS0Jmc0FHUUJRc2dNYUd4RVNPUUN3QUMrd0FFVllzQXN2RzdFTER6NVpzQUJGV0xBUUx4dXhFQTgrV2JBTEVMSUhBUW9yV0NIWUcvUlpzZzhBQ3hFU09iQVBFTEFTMExBQUVMSVZBUW9yV0NIWUcvUlpNREVCTWhZWEFSWVhGemNYQmlNaUppY0RBeUVCSnlZbkl3Y25OZ0VTYkhnZkFhc2tNU0FSQkNvMGJYVXJ5dmIrOXdHQld5SkpJaHNET3dYN1ZWRDd2MVlIQVFIQUNsaHZBaFQ5TndRUDJrc0RBcllRQUFFQVpQNTJBOVFGeEFBc0FGYXlBeTB1RVJJNUFMQVdMN0FBUlZpd0tpOGJzU29mUGxteUFnRUtLMWdoMkJ2MFdiSUlMU29SRWptd0NDK3lDUUVLSzFnaDJCdjBXYklkTFNvUkVqbXdIUkN5RGdFS0sxZ2gyQnYwV2JJa0NRZ1JFamt3TVFFbUl5SUdGUlFoTXhVaklCRVVGZ1FXRnhZVkJnWUhKelkyTlRRbUpDY21KalUwTmpjbUpqVTBKRE15RndPRGlsZDZpQUVjaVl6K25vRUJHVzhqVVFKN1VJTTFMai8rL1V4L2RxT1FibndCQXVPWmZRVGFKRlpMdU1iKzQyS0lRaVVZT0cxSXV6dGtPVkFwSXkxRUlEVzNsSkhFTFNpT1lhYkZMQUFBQVFBdC8vUUV6d1E2QUJRQVhMSUxGUllSRWprQXNBQkZXTEFUTHh1eEV4cytXYkFBUlZpd0NpOGJzUW9QUGxtd0FFVllzQTh2RzdFUER6NVpzQk1Rc2dBSENpdFlJZGdiOUZtd0NoQ3lCUUVLSzFnaDJCdjBXYkFBRUxBTjBMQU8wTEFSMExBUzBEQXhBU01SRkJZek1qY1ZCaU1nRVJFaEVTTVJJelVoQkttZk1UOG1MMHBXL3VqK3RQT3JCSHdEZlAyMlBqY0t2QmNCTlFKVC9JUURmTDRBQWdDQS9tQUVNUVJPQUE0QUdnQlhzaEViSEJFU09iQVJFTEFBMEFDd0FFVllzQUF2RzdFQUd6NVpzQUJGV0xBS0x4dXhDaEUrV2JBQVJWaXdCeThic1FjUFBsbXlDUUFIRVJJNXNoRUJDaXRZSWRnYjlGbXdBQkN5RndFS0sxZ2gyQnYwV1RBeEFUSVNFUlVVQWlNaUp4RWpFVFFBQXhZek1qWTFOQ1lqSWdZVkFsYmcrK0RCczJyekFRTVFRNVYyZlh4eVpuY0VUdjdML3U4UDh2N2xkLzM5QTl2eUFTSDgxWFd0czdqRndhQUFBQUVBVXY2S0Era0VUZ0FpQUUyeUd5TWtFUkk1QUxBQVJWaXdBQzhic1FBYlBsbXdBRVZZc0JRdkc3RVVGejVac0FBUXNBVFFzQUFRc2djQkNpdFlJZGdiOUZteUhDTUFFUkk1c0J3UXNnMEJDaXRZSWRnYjlGa3dNUUV5RmhVak5DWWpJZ1lWRlJRV0JCWVdGeFFHQnljMk5qVTBKaWNtSmljMU5EWTJBampFN2VSdFlIR0RsQUV1WURFQmYweC9NeW84UWU3dEFYamNCRTdkdTJGMHZLb2FnNXRXT1ZOQ1NMODRaVGRPTENncUR6ZiswU2VkK29rQUFBSUFVdi9zQkg0RU9nQVBBQnNBVExJSEhCMFJFam13QnhDd0U5QUFzQUJGV0xBT0x4dXhEaHMrV2JBQVJWaXdCeThic1FjUFBsbXdEaEN5QUFFS0sxZ2gyQnYwV2JBSEVMSVRBUW9yV0NIWUcvUlpzQUFRc0JuUU1ERUJJUllWRkFZR0l5SUFFVFUwQURjaEFSUVdNekkyTlRRbUl5SUdCSDcrOWJwNjNwSGkvdkFCRE44Q1FmekhoWHAxZ1lOMWRvY0RkcEw3anV5REFTd0JBd3p1QVNNQy9kaXB1N3k5bkxPd0FBQUJBRC8vN0FQc0JEb0FFQUJKc2dFUkVoRVNPUUN3QUVWWXNBOHZHN0VQR3o1WnNBQkZXTEFLTHh1eENnOCtXYkFQRUxJQUFRb3JXQ0hZRy9SWnNBb1FzZ1VCQ2l0WUlkZ2I5Rm13QUJDd0RkQ3dEdEF3TVFFaEVSUVdNekkzRndZaklBTVJJVFVoQSt6K21Dc3pKemNtVUd6KzdBWCtyZ090QTNuOXNEczdGckVzQVRrQ1ZNRUFBUUNBLytzRUNBUTZBQklBT0xJT0V4UVJFamtBc0FCRldMQUFMeHV4QUJzK1diQUFSVml3RGk4YnNRNFBQbG15QXdFS0sxZ2gyQnYwV2JBQUVMQUkwTEFJTHpBeEFSRVFNekkyTlNZRE14WVJFQUFqSWlZbkVRRnlvWEdSQTI3eGMvNzg1OHZSQVFRNi9YYisvZW1nNXdFZDV2N2kvdlQrd2VMWUFwVUFBZ0JFL2lJRmhRUkJBQm9BSXdCZnNoQWtKUkVTT2JBUUVMQWIwQUN3R1Mrd0FFVllzQkV2RzdFUkd6NVpzQUJGV0xBR0x4dXhCaHMrV2JBQVJWaXdBQzhic1FBUFBsbXlEUUVLSzFnaDJCdjBXYkFBRUxBWTBMQU5FTEFiMExBUkVMSWhBUW9yV0NIWUcvUlpNREVGSkFBMU5CSTNGd1lHQnhRV0Z4RTBOak15RmhZVkZBQUZFU01UTmpZMUppWWpJaFVDWmY3OC91TitjNWhJVEFLYWxKNThrK3lIL3Q3KzlmUHpsYVVDalhRM0Rod0JOLytrQVFWVGtrYThhS0hOSGdLQWQ1S04rNUx6L3RjYS9qRUNsQm5CbDVlL1BnQUFBUUJQL2lJRmZnUTZBQmdBUkxJQUdSb1JFamtBc0EwdnNBQkZXTEFVTHh1eEZCcytXYkFBUlZpd0R5OGJzUThQUGxteUZ3RUtLMWdoMkJ2MFdiQUIwTEFVRUxBWTBMQUcwTEFQRUxBTTBEQXhBUkUyTmpVbUF6TVdFUkFBQlJFakVTUUFBeEV6RVJBRkVRTlNrNmNGY081NS91SCs4L1ArL1A3MUFmTUJIUVE2L0gwYnpxVGlBUlRqL3UzKy9QN0tHdjR5QWRBZUFUTUJDZ0h0L2hqK29qd0RnZ0FCQUdiLzdBWXRCRG9BSUFCV3Nob2hJaEVTT1FDd0FFVllzQUF2RzdFQUd6NVpzQUJGV0xBWUx4dXhHQTgrV2JBQVJWaXdIQzhic1J3UFBsbXlCUUVLSzFnaDJCdjBXYklKQUJ3UkVqbXdEdEN3QUJDd0U5Q3dFeSt5R2dVWUVSSTVNREVCQWdjVUZqTXlOalVSTXhFV0ZqTXlOalVtQXpNV0VBSWpJaWNHSXlJQ0VEY0I1WVlIWVZoYllQc0NYMXBZWVFlRjhZM1Z5K2hjWE9iTDFvMEVPdjdwN2IzTG5aUUJSdjZ2anBqTHZlOEJGZWo5eVA3UzN0NEJMZ0k0NkFBQ0FIYi83QVNZQmNRQUlBQXBBR3V5RHlvckVSSTVzQThRc0NIUUFMQUFSVml3R2k4YnNSb2ZQbG13QUVWWXNBWXZHN0VHRHo1WnNpUWFCaEVTT2JBa0w3SVRBUW9yV0NIWUcvUlpzQUxRc2dzYUJoRVNPYkFHRUxJUEFRb3JXQ0hZRy9SWnNDUVFzQjdRc0JvUXNpY0JDaXRZSWRnYjlGa3dNUUVHQnhVVUJpTWlBRFVSTnhFVUZqTXlOalUxSmdBbk5UUTJNeklXRlJFMk53RVVGaGNSSmlNaUJnU1lPa1Q2MWRQKy91eUNibUp0MGY4QUE4V2xwN3hMS3YycWZXc0ViVFJEQWxjVUMzWGEvUUVGMUFFZEF2N2VmWStHZzN3bUFSUEFHNm5NMEx2K3pnd0xBU05zb2lBQlJacEpBQUFCLytFQUFBU2VCY01BR2dCQ3NnQWJIQkVTT1FDd0FFVllzQVF2RzdFRUh6NVpzQUJGV0xBTkx4dXhEUTgrV2JJQUJBMFJFam13QkJDeUNRRUtLMWdoMkJ2MFdiQVMwTEFFRUxBWDBEQXhBUk0yTmpNeUZ3Y21JeUlIQVJFakVRRW1JeUlISnpZek1oWVhBai9TSzNwZ1JrSW1EU2hCSC83Wi9QN2JJVUFyQ2lROFNtZDlMQU1IQWZoa1lCckNCVVg5YS8zdUFoQUNsMFVGd1J0a2JBQUFBZ0F6Lyt3R1ZBUTZBQklBSmdCd3NnZ25LQkVTT2JBSUVMQWUwQUN3QUVWWXNCRXZHN0VSR3o1WnNBQkZXTEFHTHh1eEJnOCtXYkFBUlZpd0NpOGJzUW9QUGxtd0VSQ3lBQUVLSzFnaDJCdjBXYklJRVFZUkVqbXdEOUN3RU5Dd0ZkQ3dGdEN3Q2hDeUd3RUtLMWdoMkJ2MFdiSWZFQW9SRWptd0pOQXdNUUVqRmhVUUFpTWlKd1lqSWdJUk5EY2pOU0VCSmljaEJnY1VGak15TmpjMU14VVdGak15TmdaVWdEZkt2TzVjWE82OXlEWnZCaUgreFFROS9NWThCRk5MWEdZQitnSmpYVXRUQTRPZXIvN2kvdFRpNGdFdUFSeXhuTGY5L0tDdHNaeSt5cGVWNk82UGw4b0FBUUFpLy9JRnZBV3dBQmdBYnJJUkdSb1JFamtBc0FCRldMQVhMeHV4Rng4K1diQUFSVml3Q1M4YnNRa1BQbG13QUVWWXNCTXZHN0VURHo1WnNCY1FzZ0FCQ2l0WUlkZ2I5Rm15QkJjSkVSSTVzQVF2c0FrUXNnb0JDaXRZSWRnYjlGbXdCQkN5RUFFS0sxZ2gyQnYwV2JBQUVMQVYwTEFXMERBeEFTRVJOak15QkJBRUl5Y3lOalVtSmlNaUJ4RWpFU0UxSVFTUS9oT1VjdnNCR1A3dS9nR0pqQUdQajRaNC9mNThCRzRFNVA1MEp2RCtVT3kvZVlSM2h5RDlkQVRrekFBQkFHai83QVR2QmNRQUh3QnhzZ01nSVJFU09RQ3dBRVZZc0F3dkc3RU1IejVac0FCRldMQURMeHV4QXc4K1diQU1FTElUQVFvcldDSFlHL1Jac2hjTUF4RVNPWHl3Rnk4WXREQVhRQmNDWGJSZ0YzQVhBbDIwMEJmZ0Z3SmRzZ0FYQVhHeUdBRUtLMWdoMkJ2MFdiQURFTEljQVFvcldDSFlHL1JaTURFQkJnQWpJaVFDSnpVMEVpUXpNZ0FYSXlZbUl5SUdCeUVWSVJZV016STJOd1R1RnY3VStLLys5WkVCa2dFUnRQTUJKUmo4RXBTT29iQUlBZnYrQkFlcm5aT1dGQUhaNlA3N3BRRTJ6M3ZQQVRxcS92YnNuSTdsMHNyZDVZZWRBQUFDQUMwQUFBaEJCYkFBR1FBaUFIU3lDU01rRVJJNXNBa1FzQnJRQUxBQVJWaXdHQzhic1JnZlBsbXdBRVZZc0Fndkc3RUlEejVac0FCRldMQVFMeHV4RUE4K1diSUFHQWdSRWptd0FDK3dHQkN5Q2dFS0sxZ2gyQnYwV2JBUUVMSVNBUW9yV0NIWUcvUlpzQUFRc2hvQkNpdFlJZGdiOUZtd0VoQ3dHOUN3SE5Bd01RRWhIZ0lWRkFRSElSRWhBd0lDQmlNak5UYytBamNUSVJFUklUSTJOVFFtSndVTkFUR1o2My8rNitYOXl2NUNHZzlqdko1QUtGZGZNUW9jQTZzQktYNlJqM29Eb1FGMTFJZk8vUVVFNVAzTi92aiszWWJLQXdocTE5RUN5ZjBtL2ZTVGRYT1BBZ0FDQUpzQUFBaEhCYkFBRXdBY0FJZXlBUjBlRVJJNXNBRVFzQlRRQUxBQVJWaXdBaThic1FJZlBsbXdBRVZZc0JNdkc3RVRIejVac0FCRldMQVFMeHV4RUE4K1diQUFSVml3RFM4YnNRMFBQbG15QUJBVEVSSTVzQUF2c3A4QUFWMnlCQTBDRVJJNXNBUXZzQUFRc2c4QkNpdFlJZGdiOUZtd0JCQ3lGQUVLSzFnaDJCdjBXYkFORUxJVkFRb3JXQ0hZRy9SWk1ERUJJUkV6RVNFeUZoWVZGQVFqSVJFaEVTTVJNd0VSSVRJMk5UUW1Jd0dYQW9EOEFTdWM3bi8rNC9QOTRQMkEvUHdEZkFFcGZwS1VmQU5GQW12OTBtN0xoYzMzQW5yOWhnV3cvUWorR0lad2I0TUFBUUF4QUFBRnlBV3dBQlVBVmdDd0FFVllzQlF2RzdFVUh6NVpzQUJGV0xBSUx4dXhDQTgrV2JBQVJWaXdFQzhic1JBUFBsbXdGQkN5QUFFS0sxZ2gyQnYwV2JJRUVCUVJFam13QkMreURRRUtLMWdoMkJ2MFdiQUFFTEFTMExBVDBEQXhBU0VSTmpNZ0JCVVJJeEUwSmlNaUJ4RWpFU0UxSVFTUy9oR0Rqd0VNQVFmOGZacU1odnoraWdSaEJPVCtteHZzNWY0M0FjcUxlaHo5VFFUa3pBQUFBUUNTL3BnRkRRV3dBQXNBU0FDd0NTK3dBRVZZc0FBdkc3RUFIejVac0FCRldMQUVMeHV4QkI4K1diQUFSVml3Qmk4YnNRWVBQbG13QUVWWXNBb3ZHN0VLRHo1WnNnSUJDaXRZSWRnYjlGbXdBOUF3TVJNekVTRVJNeEVoRVNNUklaTDlBb0g5L2t2OS9qY0ZzUHNhQk9iNlVQNllBV2dBQWdDUUFBQUV3UVd3QUEwQUZnQmJzaEFYR0JFU09iQVFFTEFEMEFDd0FFVllzQXd2RzdFTUh6NVpzQUJGV0xBS0x4dXhDZzgrV2JBTUVMSUFBUW9yV0NIWUcvUlpzZ0lNQ2hFU09iQUNMN0lPQVFvcldDSFlHL1Jac0FvUXNnOEJDaXRZSWRnYjlGa3dNUUVoRVNFeUZoWVZGQVFISVJFaEFSRWhNalkxTkNZbkJDejlZUUVxb081OC91dnYvZE1EblAxaEFTbUFqNHg4Qk9UK24yN0toY3o0QWdXdy9RaitFb3R6Ym9BQ0FBQUNBQ1QrbWdYY0JiQUFEZ0FVQUdXeUVoVVdFUkk1c0JJUXNBdlFBTEFBUlZpd0N5OGJzUXNmUGxtd0FFVllzQVF2RzdFRUZ6NVpzQUJGV0xBQ0x4dXhBZzgrV2JBRUVMQUIwTEFDRUxJR0FRb3JXQ0hZRy9SWnNBM1FzQTdRc0EvUXNCRFFzQXNRc2hFQkNpdFlJZGdiOUZrd01RRWpFU0VSSXdNek5oSTNFeUVSTXlFaEVTRURBZ1hQOFB4QjlBaDFWMmdQSmdPV3VmdmJBbkQrVnhnYi9wb0JadjZhQWpCVUFVSExBb2I3R2dRYS9tYitaUUFBQVFBV0FBQUhtd1d3QUJVQWZRQ3dBRVZZc0Frdkc3RUpIejVac0FCRldMQU5MeHV4RFI4K1diQUFSVml3RVM4YnNSRWZQbG13QUVWWXNBSXZHN0VDRHo1WnNBQkZXTEFHTHh1eEJnOCtXYkFBUlZpd0ZDOGJzUlFQUGxteUVBa0NFUkk1c0JBdnNnQUJDaXRZSWRnYjlGbXdCTkN5Q0JBQUVSSTVzQkFRc0F2UXNoTUFFQkVTT1RBeEFTTVJJeEVqQVNFQkFTRUJNeEV6RVRNQklRRUJJUVQvby95cS9wdit4UUhWL2tvQk1nRmNuZnlXQVZrQk1mNU9BZEgreGdKMC9Zd0NkUDJNQXdjQ3FmMmdBbUQ5b0FKZy9Wbjg5d0FBQVFCSi8rMEVmd1hEQUNrQWhySWxLaXNSRWprQXNBQkZXTEFMTHh1eEN4OCtXYkFBUlZpd0Z5OGJzUmNQUGxtd0N4Q3lBd0VLSzFnaDJCdjBXYklvQ3hjUkVqbDhzQ2d2R0xJUUtBRmR0REFvUUNnQ1hiUmdLSEFvQWwyMG9DaXdLQUpkc2dZb0F4RVNPYklsQVFvcldDSFlHL1Jac2hFbEtCRVNPYkFYRUxJZkFRb3JXQ0hZRy9SWnNod2xIeEVTT1RBeEFUUW1JeUlHRlNNME5qWXpNZ1FWRkFZSEZoWVZGQVFqSWlZbU5UTVVGak15TmpVMEppTWpOVE1nQTJ5VWYyMlMvSVRxamZvQkZYaHNlb0grMVBxYStYMzhuSGlHbzQrS3E2SUJEQVFqWW5SelczZTZaOXJFWTZZd0txdC94T2R1dm50ZWdYNWxlMi9JQUFBQkFKUUFBQVVOQmJBQUNRQkZBTEFBUlZpd0FDOGJzUUFmUGxtd0FFVllzQWN2RzdFSEh6NVpzQUJGV0xBQ0x4dXhBZzgrV2JBQVJWaXdCUzhic1FVUFBsbXlCQUFDRVJJNXNna0FBaEVTT1RBeEFUTVJJeEVCSXhFekVRUVEvZjM5Z2YzOUJiRDZVQVFOKy9NRnNQdnlBQUFCQUMwQUFBVU5CYkFBRVFCTnNnUVNFeEVTT1FDd0FFVllzQUF2RzdFQUh6NVpzQUJGV0xBQkx4dXhBUTgrV2JBQVJWaXdDUzhic1FrUFBsbXdBQkN5QXdFS0sxZ2gyQnYwV2JBSkVMSUxBUW9yV0NIWUcvUlpNREVCRVNNUklRTUNBZ1lqSXpVM1BnSTNFd1VOL1A1Q0dnOWp2SjVBS0ZkZk1Rb2NCYkQ2VUFUay9jMysrUDdkaHNvRENHclgwUUxKQUFFQU9mL3JCTjBGc0FBUEFFbXlBQkFSRVJJNUFMQUFSVml3RHk4YnNROGZQbG13QUVWWXNBWXZHN0VHRHo1WnNnQVBCaEVTT2JBUEVMQUIwTEFCTDdBR0VMSUtBUW9yV0NIWUcvUlpzZzBHRHhFU09UQXhBUUVoQVFjR0l5YzNGak15TnpjQklRS2dBU1FCR2Y0RkxtVGdhQUlZUFd3c05QNE9BUlFDdHdMNSswaGJzZ2JJQkZ4N0JDUUFBd0JQLzhRR0dBWHNBQllBSHdBb0FGV3lDaWtxRVJJNXNBb1FzQjdRc0FvUXNDRFFBTEFLTDdBVkw3SVVGUW9SRWptd0ZDK3dBTkN5Q3dvVkVSSTVzQXN2c0FqUXNpRUJDaXRZSWRnYjlGbXdIdEN3RkJDeUh3RUtLMWdoMkJ2MFdiQWcwREF4QVRJRUVoVVVBZ1FqRlNNMUl5WWtBalUwRWlRek5UTUJJZ1lWRkJZWE14RXpFVE15TmpVMEppTURycnNCRnBtWi91dTg4eGVwL3V5WW1nRVV2dlArKzZyQnU2c1g4eEdydjcrdEJTYVkvdkNzcXY3eGw3NitBWllCRGFxdEFSS1h4djV2ejd5MHpRSUREdnp5ejdhNTBBQUFBUUNTL3FFRnZRV3dBQXNBT3dDd0NTK3dBRVZZc0FBdkc3RUFIejVac0FCRldMQUVMeHV4QkI4K1diQUFSVml3Q2k4YnNRb1BQbG15QWdFS0sxZ2gyQnYwV2JBRzBEQXhFek1SSVJFekVUTURJeEVoa3YwQ2dmMndGT2o3MFFXdyt4b0U1dnNjL2RVQlh3QUFBUUNPQUFBRTdnV3dBQkVBUHdDd0FFVllzQUF2RzdFQUh6NVpzQUJGV0xBSkx4dXhDUjgrV2JBQVJWaXdBUzhic1FFUFBsbXlEZ0VKRVJJNXNBNHZzZ1VCQ2l0WUlkZ2I5Rmt3TVFFUkl4RUdJeUFrSnhFekVSWVdNekkzRVFUdS9LS3cvdnYrOUFIOEFYNlhycVFGc1BwUUFqMHA1dWdCenY0d2kzWXFBcWNBQUFFQW1BQUFCd01Gc0FBTEFFZ0FzQUJGV0xBQUx4dXhBQjgrV2JBQVJWaXdBeThic1FNZlBsbXdBRVZZc0Fjdkc3RUhIejVac0FCRldMQUpMeHV4Q1E4K1diSUJBUW9yV0NIWUcvUlpzQVhRc0FiUU1ERUJFU0VSTXhFaEVUTVJJUkVCbGdHOC9BRzUvUG1WQmJEN0dnVG0reG9FNXZwUUJiQUFBUUNZL3FJSHJRV3dBQThBVkFDd0N5K3dBRVZZc0FBdkc3RUFIejVac0FCRldMQURMeHV4QXg4K1diQUFSVml3Qnk4YnNRY2ZQbG13QUVWWXNBMHZHN0VORHo1WnNnRUJDaXRZSWRnYjlGbXdCZEN3QnRDd0NkQ3dDdEN3QXRBd01RRVJJUkV6RVNFUk14RXpBeU1SSVJFQmxnRzgvQUc1L0tvVTN2bmRCYkQ3R2dUbSt4b0U1dnNTL2VBQlhnV3dBQUFDQUJnQUFBWFVCYkFBRFFBV0FGNnlBUmNZRVJJNXNBRVFzQTdRQUxBQVJWaXdBQzhic1FBZlBsbXdBRVZZc0Fvdkc3RUtEejVac2dJQUNoRVNPYkFDTDdBQUVMSU1BUW9yV0NIWUcvUlpzQUlRc2c0QkNpdFlJZGdiOUZtd0NoQ3lEd0VLSzFnaDJCdjBXVEF4RXlFUklUSVdGaFVVQkFjaEVTRUJFU0V5TmpVMEppY1lBb2NCS3FEdWZmN3A3djNVL25VQ2h3RXBnSStNZkFXdy9kTnV5WWJOOXdJRTdmM0wvaEtMYzI2QUFnQUFBd0NiQUFBR1dBV3dBQXNBRHdBWUFHMnlBaGthRVJJNXNBSVFzQTNRc0FJUXNCZlFBTEFBUlZpd0N5OGJzUXNmUGxtd0FFVllzQTR2RzdFT0h6NVpzQUJGV0xBSUx4dXhDQTgrV2JBQVJWaXdEQzhic1F3UFBsbXlBQWdMRVJJNXNBQXZzaEFCQ2l0WUlkZ2I5Rm13Q0JDeUVRRUtLMWdoMkJ2MFdUQXhBU0V5RmhZVkZBUUhJUkV6QVNNUk13RVJJVEkyTlRRbUp3R1lBU3FnN256KzYrLzkwLzBFd1B6OCswQUJLWUNQakh3RGcyN0toY3o0QWdXdytsQUZzUDBJL2hLTGMyNkFBZ0FDQUpBQUFBVEJCYkFBQ3dBVUFFMnlEaFVXRVJJNXNBNFFzQUhRQUxBQVJWaXdDeThic1FzZlBsbXdBRVZZc0Frdkc3RUpEejVac2dBSkN4RVNPYkFBTDdJTUFRb3JXQ0hZRy9SWnNBa1FzZzBCQ2l0WUlkZ2I5Rmt3TVFFaE1oWVdGUlFFQnlFUk14RVJJVEkyTlRRbUp3R05BU3FnN256KzYrLzkwLzBCS1lDUGpId0RnMjdLaGN6NEFnV3cvUWorRW90emJvQUNBQUVBYS8vc0JQRUZ4QUFmQUgreUF5QWhFUkk1QUxBQVJWaXdFeThic1JNZlBsbXdBRVZZc0J3dkc3RWNEejVac2drVEhCRVNPWHl3Q1M4WXRHQUpjQWtDWGJUUUNlQUpBbDIwTUFsQUNRSmRzZ0FKQVhHeUJnRUtLMWdoMkJ2MFdiQWNFTElEQVFvcldDSFlHL1Jac2dBR0F4RVNPYkFURUxJTUFRb3JXQ0hZRy9SWnNnOEpEQkVTT1RBeEFSWVdNekkyTnlFMUlTWW1JeUlHQnlNMkFETXlCQklYRlJRQ0JDTWlBQ2NCYUJTWGs1eXJCdjMrQWdJSXNhQ01sUkw4R0FFbDhyTUJFSk1Cai83MHNQaisxQllCMlo2RzVOZk0yT1NNbnU0QkNLait5TTE3ei83SHFBRUY2QUFBQWdDZy8rd0hCd1hFQUJjQUpRQitzaEltSnhFU09iQVNFTEFkMEFDd0FFVllzQk12RzdFVEh6NVpzQUJGV0xBTkx4dXhEUjgrV2JBQVJWaXdCQzhic1FRUFBsbXdBRVZZc0Fvdkc3RUtEejVac2c0S0RSRVNPWHl3RGk4WXRHQU9jQTRDWGJJSUFRb3JXQ0hZRy9SWnNCTVFzaHNCQ2l0WUlkZ2I5Rm13QkJDeUlnRUtLMWdoMkJ2MFdUQXhBUlFDQkNNaUpBSW5JeEVqRVRNUk16WVNKRE15QkJJWEJ6UUNJeUlDQnhVVUVqTXlFalVIQjVUKzdiT24vdmllRHJiOC9MTUdtZ0VQcmJJQkU1WUIvYmVvcExrQ3U2YW90UUt5MXY2OXJaZ0JITDM5b3dXdy9YSEpBVFdscS82LzFRWHlBUUwrLyt0VThQNzZBUUQyQUFBQ0FDQUFBQVJmQmJBQURBQVZBR0d5RUJZWEVSSTVzQkFRc0FyUUFMQUFSVml3Q2k4YnNRb2ZQbG13QUVWWXNBQXZHN0VBRHo1WnNBQkZXTEFETHh1eEF3OCtXYklSQ2dBUkVqbXdFUyt5QVFFS0sxZ2gyQnYwV2JJRkFSRVJFam13Q2hDeUVnRUtLMWdoMkJ2MFdUQXhJUkVoQVNFQkpoRTBKRGNoRVFFVUZqTXpFU01pQmdOaS91Yis1Lzd4QVVYK0FSUDJBZS85QklxSzYrdU1pQUlnL2VBQ2EzZ0JFZEhwQXZwUUErbDdpZ0lBaGdBQ0FGdi82d1E4QmhNQUdnQW1BRlN5RGljb0VSSTVzQTRRc0J2UUFMQUFSVml3RVM4YnNSRWhQbG13QUVWWXNBY3ZHN0VIRHo1WnNnQVJCeEVTT2JBQUw3SVpBQWNSRWpteUd3RUtLMWdoMkJ2MFdiQUhFTEloQVFvcldDSFlHL1JaTURFQk1oSVZGUlFBSXlJQUVUVVFFamMyTmpVekZBWUdCd1lHQnpZWElnWVZGQll6TWpZMU5DWUNlc3oyL3ZYbDMvN3UrUGFLVWNSQ2lLYVlueHVSazNhR2hIcDVoWVVEL3Y3djZnenEvdDRCS0FFQVJnRmVBWmd6SEQ4MlpYNVBJeUNra1pYRG42V2NycSt3aktNQUF3Q1BBQUFFT2dRNkFBNEFGUUFjQUhpeUFoMGVFUkk1c0FJUXNCWFFzQUlRc0JmUUFMQUFSVml3QVM4YnNRRWJQbG13QUVWWXNBQXZHN0VBRHo1WnNoWUJBQkVTT1h5d0ZpOFl0RUFXVUJZQ1hiVFFGdUFXQWwyeUR3Y0tLMWdoMkJ2MFdiSUlEeFlSRWptd0FCQ3lFQUVLSzFnaDJCdjBXYkFCRUxJYkFRb3JXQ0hZRy9SWk1ERXpFU0V5RmhVVUJnY1dGaFVVQmlNQkVTRXlOVFFqSlRNeU5UUW5JNDhCdDk3b1hWdHFmTi9SL3ZnQkNydSsvdm5JejhUVEJEcWJrVXQzSUJhR1c1ZWVBYzMrODRhSHJucUFCQUFCQUlVQUFBTk5CRG9BQlFBckFMQUFSVml3QkM4YnNRUWJQbG13QUVWWXNBSXZHN0VDRHo1WnNBUVFzZ0FCQ2l0WUlkZ2I5Rmt3TVFFaEVTTVJJUU5OL2lyeUFzZ0RkdnlLQkRvQUFnQW4vcjRFeFFRNkFBNEFGQUJic2hJVkZoRVNPYkFTRUxBRTBBQ3dEQyt3QUVWWXNBUXZHN0VFR3o1WnNBQkZXTEFLTHh1eENnOCtXYklBQVFvcldDSFlHL1Jac0FiUXNBZlFzQXdRc0FuUXNBY1FzQS9Rc0JEUXNBUVFzaEVCQ2l0WUlkZ2I5Rmt3TVRjMk5qY1RJUkV6RVNNUklSRWpFeUVoRVNFSEFvRmxSUWNPQXUrVzh2MUs5Z0VCZGdHZi91OEhEc0p4eTU0Qm52eUkvZndCUXY2K0FnUUNwOC8rMWdBQkFCNEFBQVpjQkRvQUZRQ0NBTEFBUlZpd0NTOGJzUWtiUGxtd0FFVllzQTB2RzdFTkd6NVpzQUJGV0xBUkx4dXhFUnMrV2JBQVJWaXdBaThic1FJUFBsbXdBRVZZc0FZdkc3RUdEejVac0FCRldMQVVMeHV4RkE4K1diSVFFUUlSRWptd0VDK3lqeEFCWGJJQUFRb3JXQ0hZRy9SWnNBVFFzZ2dRQUJFU09iQVFFTEFMMExJVEFCQVJFamt3TVFFakVTTVJJd01oQVFFaEV6TVJNeEV6RXlFQkFTRUVOWUh6Z1BuKzFnRm4vcXdCS2ZWeTgzUDJBU24rclFGcC90SUJzLzVOQWJQK1RRSXpBZ2YrVndHcC9sY0JxZjM4L2NvQUFBRUFUZi9zQThRRVRRQW5BSTJ5SGlncEVSSTVBTEFBUlZpd0pTOGJzU1ViUGxtd0FFVllzQWd2RzdFSUR6NVpzaGtsQ0JFU09YeXdHUzhZdEVBWlVCa0NYYlRRR2VBWkFsMnlGZ2NLSzFnaDJCdjBXYklERmhrUkVqbXdDQkN5RUFjS0sxZ2gyQnYwV2JJTkZoQVJFam0wQXcwVERRSmRzQ1VRc2g0SENpdFlJZGdiOUZteUlSa2VFUkk1UUFrTElSc2hLeUU3SVFSZE1ERUJGQVlIRmhVVUJpTWlKaVkxTXhRV016STJOVFFtSXlNMU16WTFOQ1lqSWdZVkl6UTJNeklXQTdCWFQ3cnl5M3pNY3ZKMldsbHBYR0N1dEtOZVVsQnU4dkM1eWVBREVraDVKRUc2bGJGVG1XbENXVk5EVDBhdkFvUkNTazg4ajdla0FBRUFoZ0FBQkJJRU9nQUpBRVVBc0FCRldMQUFMeHV4QUJzK1diQUFSVml3Qnk4YnNRY2JQbG13QUVWWXNBSXZHN0VDRHo1WnNBQkZXTEFGTHh1eEJROCtXYklFQndJUkVqbXlDUWNDRVJJNU1ERUJNeEVqRVFFakVUTVJBeUR5OHY1WTh2SUVPdnZHQXRMOUxnUTYvUzRBQUFFQWp3QUFCR1VFT2dBTUFHZ0FzQUJGV0xBRUx4dXhCQnMrV2JBQVJWaXdDQzhic1FnYlBsbXdBRVZZc0FJdkc3RUNEejVac0FCRldMQUxMeHV4Q3c4K1diSUdBZ1FSRWpsOHNBWXZHTFRUQnVNR0FsMjBRd1pUQmdKZHNoTUdBWEd5QVFFS0sxZ2gyQnYwV2JJS0FRWVJFamt3TVFFakVTTVJNeEV6QVNFQkFTRUIvWHZ6ODJzQkt3RXMvbmtCcVA3RUFheitWQVE2L2xBQnNQMzYvY3dBQUFFQUlRQUFCQlFFT2dBUEFFMnlCQkFSRVJJNUFMQUFSVml3QUM4YnNRQWJQbG13QUVWWXNBRXZHN0VCRHo1WnNBQkZXTEFJTHh1eENBOCtXYkFBRUxJREFRb3JXQ0hZRy9SWnNBZ1FzZ29CQ2l0WUlkZ2I5Rmt3TVFFUkl4RWhBd0lHSXlNbk56WTJOeE1FRlBQK3poUVRxN0JMQVRKUVNRb1VCRHI3eGdOMi9vZis4TzNLQlF1dDVRSE9BQUFCQUk4QUFBVnZCRG9BREFCWkFMQUFSVml3QVM4YnNRRWJQbG13QUVWWXNBc3ZHN0VMR3o1WnNBQkZXTEFETHh1eEF3OCtXYkFBUlZpd0JpOGJzUVlQUGxtd0FFVllzQWt2RzdFSkR6NVpzZ0FMQXhFU09iSUZDd01SRWpteUNBc0RFUkk1TURFQkFTRVJJeEVCSXdFUkl4RWhBdjhCUUFFdzgvN1dwZjdWOHdFeUFTc0REL3ZHQXN6OU5BTFEvVEFFT2dBQUFRQ0dBQUFFRVFRNkFBc0FmZ0N3QUVWWXNBWXZHN0VHR3o1WnNBQkZXTEFLTHh1eENocytXYkFBUlZpd0FDOGJzUUFQUGxtd0FFVllzQVF2RzdFRUR6NVpzZ2tLQUJFU09iQUpMN1MvQ2M4SkFsMnl2d2tCY2JRdkNUOEpBbkt5WHdrQmNyVHZDZjhKQW5HMEh3a3ZDUUp4c284SkFWMjBqd21mQ1FKeXNnSUJDaXRZSWRnYjlGa3dNU0VqRVNFUkl4RXpFU0VSTXdRUjgvNWI4L01CcGZNQnRmNUxCRHIrUFFIREFBRUFoZ0FBQkJJRU9nQUhBRGdBc0FCRldMQUdMeHV4QmhzK1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNBUXZHN0VFRHo1WnNBWVFzZ0lCQ2l0WUlkZ2I5Rmt3TVNFakVTRVJJeEVoQkJMei9scnpBNHdEZHZ5S0JEb0FBUUFqQUFBRDBBUTZBQWNBTVFDd0FFVllzQVl2RzdFR0d6NVpzQUJGV0xBQ0x4dXhBZzgrV2JBR0VMSUFBUW9yV0NIWUcvUlpzQVRRc0FYUU1ERUJJUkVqRVNFMUlRUFEvcUh6L3FVRHJRTjUvSWNEZWNFQUFBTUFWUDVnQlg4R0FBQWFBQ1FBTHdCL3NnY3dNUkVTT2JBSEVMQWcwTEFIRUxBcTBBQ3dCaSt3QUVWWXNBTXZHN0VER3o1WnNBQkZXTEFLTHh1eENocytXYkFBUlZpd0V5OGJzUk1SUGxtd0FFVllzQkF2RzdFUUR6NVpzQUJGV0xBWEx4dXhGdzgrV2JBS0VMSWVBUW9yV0NIWUcvUlpzQkFRc2lNQkNpdFlJZGdiOUZtd0tOQ3dIaEN3TGRBd01STVFFak15RnhFekVUWXpNaElSRkFJaklpY1JJeEVHSXlJQ0p5VTBKaU1pQnhFV016SUJGQll6TWpjUkppTWlCbFRSdTB3KzhrQld1dFBVdDFORjhqMVByOUVKQkRkMGFpMGxJVFBjL0xwc2FpMGhJaXBvY0FJT0FRa0JOeHdCenY0dUlQN0wvdUR6L3VZZS9sWUJwaG9CQStNOHRzY04vVG9LQVV1aXFRb0N5UXJCQUFFQWh2Ni9CS1VFT2dBTEFEc0FzQWd2c0FCRldMQUFMeHV4QUJzK1diQUFSVml3QkM4YnNRUWJQbG13QUVWWXNBb3ZHN0VLRHo1WnNnSUJDaXRZSWRnYjlGbXdCdEF3TVJNekVTRVJNeEV6QXlNUklZYnpBYWJ6a3hUZC9OSUVPdnlJQTNqOGlQMzlBVUVBQUFFQVh3QUFBK0FFT3dBUkFFaXlCQklURVJJNUFMQUFSVml3Q1M4YnNRa2JQbG13QUVWWXNCQXZHN0VRR3o1WnNBQkZXTEFCTHh1eEFROCtXYklOQVFrUkVqbDhzQTB2R0xJRUFRb3JXQ0hZRy9SWk1ERWhJeEVHSXlJbU5SRXpFUlFXTXpJM0VUTUQ0UE5lYU43cTgybHNZbVR6QVdrVzFjY0JUUDYwZG1JWEFnd0FBQUVBaGdBQUJnTUVPZ0FMQUVnQXNBQkZXTEFBTHh1eEFCcytXYkFBUlZpd0F5OGJzUU1iUGxtd0FFVllzQWN2RzdFSEd6NVpzQUJGV0xBSkx4dXhDUTgrV2JJQkFRb3JXQ0hZRy9SWnNBWFFzQWJRTURFQkVTRVJNeEVoRVRNUklSRUJlUUZTOHdGVDh2cURCRHI4aUFONC9JZ0RlUHZHQkRvQUFRQisvcjhHdEFRNkFBOEFTd0N3REMrd0FFVllzQUF2RzdFQUd6NVpzQUJGV0xBREx4dXhBeHMrV2JBQVJWaXdCeThic1FjYlBsbXdBRVZZc0Ewdkc3RU5EejVac2dFQkNpdFlJZGdiOUZtd0JkQ3dDZEF3TVFFUklSRXpFU0VSTXhFekF5TVJJUkVCY1FGUzh3RlQ4cmtVM2ZxN0JEcjhpQU40L0lnRGVQeUkvZjBCUVFRNkFBSUFId0FBQk9vRU9nQU5BQlVBVzdJQUZoY1JFam13RHRBQXNBQkZXTEFNTHh1eERCcytXYkFBUlZpd0NDOGJzUWdQUGxteUFBd0lFUkk1c0FBdnNBd1FzZ29CQ2l0WUlkZ2I5Rm13QUJDeURnRUtLMWdoMkJ2MFdiQUlFTElQQVFvcldDSFlHL1JaTURFQk16SVdGaFVVQmdjaEVTRTFJUkVSTXpJMk5DWW5Ba3J1aGNabjdNVCtIZjdJQWl2dFdXZGxWZ0xpWEtadXA4b0JBM2JFL2VYK28xbWtYd0VBQUFNQWp3QUFCY2tFT2dBTEFBOEFGd0J0c2djWUdSRVNPYkFIRUxBTjBMQUhFTEFVMEFDd0FFVllzQW92RzdFS0d6NVpzQUJGV0xBT0x4dXhEaHMrV2JBQVJWaXdDQzhic1FnUFBsbXdBRVZZc0F3dkc3RU1EejVac2dBT0NCRVNPYkFBTDdJUUFRb3JXQ0hZRy9SWnNBZ1FzaEVCQ2l0WUlkZ2I5Rmt3TVFFek1oWVdGUlFHQnlFUk13RWpFVE1CRVRNeU5qUW1Kd0dDN29YR1orekUvaDN6QkVmejgvdTU3VmxuWlZZQzRseW1icWZLQVFRNis4WUVPdjNsL3FOWnBGOEJBQUFDQUk4QUFBUWlCRG9BQ3dBVEFFMnlEaFFWRVJJNXNBNFFzQUhRQUxBQVJWaXdDaThic1FvYlBsbXdBRVZZc0Fndkc3RUlEejVac2dBS0NCRVNPYkFBTDdJTUFRb3JXQ0hZRy9SWnNBZ1FzZzBCQ2l0WUlkZ2I5Rmt3TVFFek1oWVdGUlFHQnlFUk14RVJNekkyTkNZbkFZTHVoY1puN01UK0hmUHRXV2RsVmdMaVhLWnVwOG9CQkRyOTVmNmpXYVJmQVFBQUFRQlIvK3dENkFST0FDQUFmYklRSVNJUkVqa0FzQUJGV0xBSUx4dXhDQnMrV2JBQVJWaXdFQzhic1JBUFBsbXdDQkN5QUFFS0sxZ2gyQnYwV2JJZUNCQVJFamw4c0I0dkdMUkFIbEFlQWwyeUF4NEFFUkk1c2h3REFWMnlDd01CWGJJYkJ3b3JXQ0hZRy9SWnNCQVFzaGdCQ2l0WUlkZ2I5Rm15RlJzWUVSSTV0QVFWRkJVQ1hUQXhBU0lHRlNNME5qWXpNZ0FWRlJRR0JpTWlKaVkxTXhRV016STJOeUUxSVNZbUFnRlZkdVYweW5MY0FRdDUzSkY3eUc3bGRsWm1mZ3orckFGVERuNERpMmxQWks5by90TDhHWnY4aUdlNmRWMTNtWW1vaEk4QUFBSUFrZi9zQmpnRVRnQVVBQjhBaGJJVklDRVJFam13RlJDd0RkQUFzQUJGV0xBRUx4dXhCQnMrV2JBQVJWaXdFeThic1JNYlBsbXdBRVZZc0JFdkc3RVJEejVac0FCRldMQU1MeHV4REE4K1diSUJFUk1SRWpsOHNBRXZHTFRRQWVBQkFsMjBRQUZRQVFKZHNnOEJDaXRZSWRnYjlGbXdEQkN5RndFS0sxZ2gyQnYwV2JBRUVMSWRBUW9yV0NIWUcvUlpNREVCTXpZa016SUFGeGNVQmdZaklnQW5JeEVqRVRNQkZCWXlOalUwSmlNaUJnR0V6QnNCQ3N2YkFSRUxBWHZsbHRMKzh4WEs4L01CdVlyMmlJMTRkNHdDaDgvNC91YnBPYUQ4aWdFRTFQNDhCRHI5MktlOXdMbW52YjBBQUFJQUp3QUFBOThFT2dBTkFCWUFZYklVRnhnUkVqbXdGQkN3Qk5BQXNBQkZXTEFBTHh1eEFCcytXYkFBUlZpd0FTOGJzUUVQUGxtd0FFVllzQVV2RzdFRkR6NVpzaElBQVJFU09iQVNMN0lEQVFvcldDSFlHL1Jac2djREVoRVNPYkFBRUxJVEFRb3JXQ0hZRy9SWk1ERUJFU01SSXdNakV5WW1OVFEyTndNVUZqTXpFU01pQmdQZjh1UG4vUDlrYStuR3ZHVlA3K0JaYWdRNis4WUJqZjV6QWJVcW5HV1h3UUwrb0VSVkFUaGFBQUFCLzl2K1N3UDRCZ0FBSVFDTHNoVWlJeEVTT1FDd0hpK3dBRVZZc0FRdkc3RUVHejVac0FCRldMQUtMeHV4Q2hFK1diQUFSVml3R0M4YnNSZ1BQbG0ybng2dkhyOGVBMTJ5THg0QlhiSVBIZ0Zkc2lFWUhoRVNPYkFoTDdJQUJ3b3JXQ0hZRy9SWnNnSVlCQkVTT2JBS0VMSVBBUW9yV0NIWUcvUlpzQVFRc2hVQkNpdFlJZGdiOUZtd0FCQ3dHdEN3SVJDd0hOQXdNUUVoRlRZeklCTVJGQVlqSWljM0ZqTXlOUkUwSmlNaUJ4RWpFU00xTXpVekZTRUNkLzcxZDdZQldnVzVwa1k2RHljN2UyRmVra2p6bnA3ekFRc0VyZW1LL25YOC9yTEVFYjhOdndMdGNGMkMvUHNFcmF1b3FBQUJBRlQvN0FQNUJFNEFIUUI2c2hZZUh4RVNPUUN3QUVWWXNBOHZHN0VQR3o1WnNBQkZXTEFJTHh1eENBOCtXYklBQVFvcldDSFlHL1Jac2hrUENCRVNPWHl3R1M4WXRCOFpMeGtDY2JJYkJ3b3JXQ0hZRy9SWnNnTUFHeEVTT2JRRUF4UURBbDJ3RHhDeUZnRUtLMWdoMkJ2MFdiSVRHUllSRWpteUhCTUJYYklMRXdGZE1ERWxNalkzTXc0Q0l5SUFFVFUwQURNeUZoY2pKaVlqSWdZSElSVWhFZ0krV1hnRzVBTjR5blRrL3ZnQkNPVEE5UVRrQjNaYmJuMEtBVnYrcGhtdWFGQm1zR1FCSndFQ0dmY0JLZUsyWUhXVWphais3QUFBQWdBZUFBQUdtZ1E2QUJZQUh3QjVzZ2tnSVJFU09iQUpFTEFYMEFDd0FFVllzQUF2RzdFQUd6NVpzQUJGV0xBSUx4dXhDQTgrV2JBQVJWaXdEeThic1E4UFBsbXlBUUFJRVJJNXNBRXZzQUFRc2dvQkNpdFlJZGdiOUZtd0R4Q3lFUUVLSzFnaDJCdjBXYkFCRUxJWEFRb3JXQ0hZRy9SWnNBZ1FzaGdCQ2l0WUlkZ2I5Rmt3TVFFUk14WVdGUlFHQnlFUklRTUNCZ2NqSnpjMk5qY1RBUkV6TWpZMU5DWW5BL3I0dytYcHcvNFovdVlWRTZpdlRnSXlVa2NLRkFMejdWaG9aRllFT3Y2SEE3eWZvTUVDQTNiK2gvN3k3Z0hLQlF1djR3SE8vY1grd1ZoTlNGRUJBQUlBaGdBQUJyRUVPZ0FTQUJzQWdySUJIQjBSRWptd0FSQ3dFOUFBc0FCRldMQUNMeHV4QWhzK1diQUFSVml3RVM4YnNSRWJQbG13QUVWWXNBc3ZHN0VMRHo1WnNBQkZXTEFQTHh1eER3OCtXYklCRVFzUkVqbXdBUyt5QkJFTEVSSTVzQVF2c0FFUXNnMEJDaXRZSWRnYjlGbXdCQkN5RXdFS0sxZ2gyQnYwV2JBTEVMSVVBUW9yV0NIWUcvUlpNREVCSVJFekVUTVdGaFVVQmdjaEVTRVJJeEV6QVJFek1qWTFOQ1lqQVhrQnBmUDR3K1hwdy80Wi9sdno4d0tZN1ZwbVpGc0Nud0diL29jRHZKK2d3UUlCM2Y0akJEcjl4ZjdCV2t0R1ZBQUFBZi91QUFBRCtBWUFBQmdBZWJJTUdSb1JFamtBc0JVdnNBQkZXTEFFTHh1eEJCcytXYkFBUlZpd0J5OGJzUWNQUGxtd0FFVllzQTh2RzdFUER6NVpzcjhWQVYyeUx4VUJYYklQRlFGZHNoZ1BGUkVTT2JBWUw3SUFCd29yV0NIWUcvUlpzZ0lFQnhFU09iQUVFTElNQVFvcldDSFlHL1Jac0FBUXNCSFFzQmdRc0JQUU1ERUJJUlUyTXlBVEVTTVJOQ1lqSWdjUkl4RWpOVE0xTXhVaEFvdis0WGUyQVZvRjgyRmVra2p6aTR2ekFSOEV0ZkdLL25YOVBRSzZjRjJDL1BzRXRhcWhvUUFCQUliK21nUVNCRG9BQ3dCRkFMQUlMN0FBUlZpd0FDOGJzUUFiUGxtd0FFVllzQU12RzdFREd6NVpzQUJGV0xBRkx4dXhCUTgrV2JBQVJWaXdDUzhic1FrUFBsbXlBUUVLSzFnaDJCdjBXVEF4QVJFaEVUTVJJUkVqRVNFUkFYa0JwdlArdGZQK3NnUTYvSWdEZVB2Ry9wb0JaZ1E2QUFBQkFJai82d2JCQmJBQUhnQmdzZ1lmSUJFU09RQ3dBRVZZc0FBdkc3RUFIejVac0FCRldMQU1MeHV4REI4K1diQUFSVml3RlM4YnNSVWZQbG13QUVWWXNBUXZHN0VFRHo1WnNBQkZXTEFJTHh1eENBOCtXYklHQUFRUkVqbXlFUUVLSzFnaDJCdjBXYkFhMERBeEFSRVVCaU1pSndZaklpWTFFVE1SRkJZek1qWTFFU0VSRkJZek1qWTFFUWJCK2RMbGJYSHB6L1A5WjE1cGNnRUJiV05oYmdXdysvL1c3cVdsNzlVRUFmdjhkWUtCZHdRRCsveDBnMzk1QkFNQUFRQncvK3NGN1FRNkFCNEFZTElHSHlBUkVqa0FzQUJGV0xBQUx4dXhBQnMrV2JBQVJWaXdEQzhic1F3YlBsbXdBRVZZc0JVdkc3RVZHejVac0FCRldMQUVMeHV4QkE4K1diQUFSVml3Q0M4YnNRZ1BQbG15QmhVRUVSSTVzaEVCQ2l0WUlkZ2I5Rm13R3RBd01RRVJCZ1lqSWljR0l5SW1OUkV6RVJRV016STJOUkV6RVJRV016STJOUkVGN1FIYXZjZGdac3U0MWZOVVJsTm05RnhQU2xzRU92MU93ZHlPanQzREFxLzlVWEpzYkhJQ3IvMVJjbXhzY2dLdkFBTC80QUFBQkNFR0dBQVNBQnNBY2JJVkhCMFJFam13RlJDd0E5QUFzQUJGV0xBUEx4dXhEeUUrV2JBQVJWaXdDUzhic1FrUFBsbXlFZzhKRVJJNXNCSXZzZ0FIQ2l0WUlkZ2I5Rm15QWc4SkVSSTVzQUl2c0FBUXNBdlFzQklRc0EzUXNBSVFzaE1CQ2l0WUlkZ2I5Rm13Q1JDeUZBRUtLMWdoMkJ2MFdUQXhBU0VSTXhZV0ZSUUdCeUVSSXpVekVUTVJJUUVSTXpJMk5UUW1Kd0tqL3Q3M3hPWGx3UDRTcnE3ekFTTCszdTFiWldOWEJEcit5UVBPcnEzVEJBUTZxd0V6L3MzOVcvNkNaVmxWYVFJQUFRQ1kvKzBHelFYRkFDVUFqcklPSmljUkVqa0FzQUJGV0xBa0x4dXhKQjgrV2JBQVJWaXdCUzhic1FVZlBsbXdBRVZZc0J3dkc3RWNEejVac0FCRldMQWlMeHV4SWc4K1diSUFJaVFSRWptd0FDK3lId0FCY2JJSUpCd1JFam13QlJDeURBRUtLMWdoMkJ2MFdiQUFFTEFQMExBQUVMSWhBUW9yV0NIWUcvUlpzQkxRc0J3UXNoVUJDaXRZSWRnYjlGbXlHQ1FjRVJJNU1ERUJNellTSkRNeUFCY2pKaVlqSWdZSElSVWhGaFl6TWpZM013WUFJeUlrQWljakVTTVJNd0dVdFF1V0FRbXI4UUVtR1B3U2s0Nmhxd3NCNmY0V0FxaWlsWllVL0JiKzAvaXMvdmlUQTdUOC9BTlB2Z0VkbS83Njc1MkwzY3pENGZLR25PbisrNkVCTk1yOWRBV3dBQUFCQUliLzdBVzZCRTRBSXdDU3NnMGtKUkVTT1FDd0FFVllzQVF2RzdFRUd6NVpzQUJGV0xBakx4dXhJeHMrV2JBQVJWaXdHeThic1JzUFBsbXdBRVZZc0NBdkc3RWdEejVac2c0RUd4RVNPWHl3RGk4WXRFQU9VQTRDWGJBQTBMQUVFTElMQVFvcldDSFlHL1Jac2dnT0N4RVNPYkFPRUxJUEJ3b3JXQ0hZRy9SWnNCc1FzaE1CQ2l0WUlkZ2I5Rm15RmhNUEVSSTVzQThRc0I3UU1ERUJNellrTXpJV0Z5TW1KaU1pQXlFVklSWVdNekkyTnpNT0FpTWlKQ2NqRVNNUk13RjVuUlFCQk5MQjlRVGtCM1piMnhvQmZQNkZDbjF1V1hnRzVBTjR5blRUL3YwVW52UHpBbkhlLytLMllIWCs1cXVLam1oUVpyQmsvdHorT2dRNkFBQUNBQndBQUFVWEJiQUFDd0FPQUZZQXNBQkZXTEFJTHh1eENCOCtXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQVl2RzdFR0R6NVpzQUJGV0xBS0x4dXhDZzgrV2JJTkNBSVJFam13RFMreUFBRUtLMWdoMkJ2MFdiQUUwTElPQ0FJUkVqa3dNUUVqRVNNUkl3TWhBVE1CSVFFaEF3T0RmdUZ6ai83NkFnYjFBZ0QrK3YzZ0FWT29BYXIrVmdHcS9sWUZzUHBRQW1nQitBQUFBZ0FLQUFBRVJRUTZBQXNBRUFCV0FMQUFSVml3Q0M4YnNRZ2JQbG13QUVWWXNBSXZHN0VDRHo1WnNBQkZXTEFHTHh1eEJnOCtXYkFBUlZpd0NpOGJzUW9QUGxteURRSUlFUkk1c0EwdnNnRUJDaXRZSWRnYjlGbXdCTkN5RHdnQ0VSSTVNREVCSXhFakVTTURJd0V6QVNNQk13TW5Cd0xrWGNOYmFQY0JxZWNCcS9mK1hQaGtHUmtCRi83cEFSZis2UVE2KzhZQnhBRUdaR1FBQWdDc0FBQUhNQVd3QUJNQUZnQjhBTEFBUlZpd0FpOGJzUUlmUGxtd0FFVllzQkl2RzdFU0h6NVpzQUJGV0xBRUx4dXhCQTgrV2JBQVJWaXdDQzhic1FnUFBsbXdBRVZZc0F3dkc3RU1EejVac0FCRldMQVFMeHV4RUE4K1diSVZBZ1FSRWptd0ZTK3dBTkN3RlJDeUJnRUtLMWdoMkJ2MFdiQUswTEFHRUxBTzBMSVdBZ1FSRWprd01RRWhBVE1CSVFNakVTTVJJd01oRXlFUkl4RXpBU0VEQWFnQmFBRXI5UUlBL3ZxT2Z1SnlqLzc2bVA3Yi9Qd0NZZ0ZUcVFKbkEwbjZVQUdxL2xZQnF2NVdBYXYrVlFXdy9MZ0IrUUFBQWdDZEFBQUdHQVE2QUJNQUdBQi9BTEFBUlZpd0FpOGJzUUliUGxtd0FFVllzQkl2RzdFU0d6NVpzQUJGV0xBRUx4dXhCQTgrV2JBQVJWaXdDQzhic1FnUFBsbXdBRVZZc0F3dkc3RU1EejVac0FCRldMQVFMeHV4RUE4K1diSUFFQklSRWptd0FDK3dBZEN5RGdFS0sxZ2gyQnYwV2JBTDBMQUgwTEFCRUxBVTBMQVYwTElYRWdRUkVqa3dNUUV6RXpNQkl3TWpFU01SSXdNakV5TVJJeEV6QVRNREp3Y0JrUDc0NXdHcjkycGR3MXRvOTIyNjgvTUI3ZmhrR1JrQnhBSjIrOFlCRi83cEFSZis2UUVYL3VrRU92MktBUVprWkFBQ0FJQUFBQVp1QmJBQUdnQWRBSHF5R3g0ZkVSSTVzQnNRc0EzUUFMQUFSVml3R1M4YnNSa2ZQbG13QUVWWXNBUXZHN0VFRHo1WnNBQkZXTEFNTHh1eERBOCtXYkFBUlZpd0V5OGJzUk1QUGxteUFCa0VFUkk1c0FBdnNna0JDaXRZSWRnYjlGbXdEdEN3RDlDd0FCQ3dHTkN5R3hrRUVSSTVzQmtRc2h3QkNpdFlJZGdiOUZrd01RRVdGaGNSSXhFbUppTWpCeEVqRVNNaUJnY1JJeEUyTmlFQklRRVRJUVI2L3ZFRi9BSjJqMmdHL0g2UGRRUDhBL29CRC82RkJPVDlqdW4rTHdNb0JOblkvbzBCYklGdkMvMnZBbHh1ZnY2UUFXemgyd0tJL1lvQnFRQUNBSUlBQUFWa0JEb0FHZ0FkQUhxeUd4NGZFUkk1c0JzUXNCVFFBTEFBUlZpd0JTOGJzUVViUGxtd0FFVllzQUF2RzdFQUR6NVpzQUJGV0xBTEx4dXhDdzgrV2JBQVJWaXdFeThic1JNUFBsbXlCQVVBRVJJNXNBUXZzQWZRc0FRUXNoQUhDaXRZSWRnYjlGbXdGZEN3RnRDeUd3VUFFUkk1c0FVUXNod0JDaXRZSWRnYjlGa3dNVE0xTmpZM0FTRUJGaFlYRlNNMUppWW5Jd2NSSXhFaklnWUhGUUVUSVlJQ3hjeis2d1AwL3VyR3ZnTHpBVjV5THdIeUxYbGdBd0dGbGY3V3NzN1NEUUhiL2lRUjA4ZXpzWDl5QWdQK1h3R2tibnk2QW1rQklnQUFBZ0NqQUFBSXN3V3dBQ0FBSXdDWHNod2tKUkVTT2JBY0VMQWowQUN3QUVWWXNBY3ZHN0VISHo1WnNBQkZXTEFMTHh1eEN4OCtXYkFBUlZpd0FDOGJzUUFQUGxtd0FFVllzQVV2RzdFRkR6NVpzQUJGV0xBUkx4dXhFUTgrV2JBQVJWaXdHUzhic1JrUFBsbXlDUWNBRVJJNXNBa3ZzZ01CQ2l0WUlkZ2I5Rm13Q1JDd0RkQ3dBeEN3SE5Dd0Y5Q3lJUWNBRVJJNXNBc1FzaUlCQ2l0WUlkZ2I5Rmt3TVNFUk5EY2hFU01STXhFaEFTRUJGaFlYRVNNUkppWWpJd2NSSXhFaklnWUhFUUVUSVFMRk8vNmYvUHdETVA2SEJPWCtoUDd4QmZ3Q2RvOW9CZngva1hNREFnanAvaTRCWUtGbC9ab0ZzUDE3QW9YOWVBVFoyUDZOQVd5QmJ3bjlyUUpjY1h6K2tRTTVBYW9BQUFJQWp3QUFCM1lFT2dBZ0FDTUFsN0lkSkNVUkVqbXdIUkN3STlBQXNBQkZXTEFITHh1eEJ4cytXYkFBUlZpd0N5OGJzUXNiUGxtd0FFVllzQUF2RzdFQUR6NVpzQUJGV0xBRkx4dXhCUTgrV2JBQVJWaXdFUzhic1JFUFBsbXdBRVZZc0Jrdkc3RVpEejVac2drTEFCRVNPYkFKTDdJREJ3b3JXQ0hZRy9SWnNBa1FzQTNRc0FNUXNCelFzQmZRc2lFTEFCRVNPYkFMRUxJaUFRb3JXQ0hZRy9SWk1ERWhOVFkzSVJFakVUTVJJUUVoQVJZV0Z4VWpOU1ltSnlNSEVTTVJJeUlHQnhVQkV5RUNsUUUxL3Jmejh3S2wvdXdEOVA3cXhiNEM4Z0ZlY3k0QjhpMTVZQU1CaFpYKzFyQ1VaUDVZQkRyK0p3SFovaVFSMU1henNYOXlBZ1ArWHdHa2JueTZBbWtCSWdBQUFnQW8va0FEcWdlSUFDY0FNQUNuc2dJeE1oRVNPYkFDRUxBbzBBQ3dMQyt3QUVWWXNBVXZHN0VGSHo1WnNBQkZXTEFYTHh1eEZ4RStXYkFBUlZpd0VTOGJzUkVQUGxtd0JSQ3lBd0VLSzFnaDJCdjBXYkltQlJFUkVqbDhzQ1l2R0xJUUpnRmRza0FtQVYyMFlDWndKZ0pkc2lNQkNpdFlJZGdiOUZteURDTW1FUkk1c0JFUXNoMEJDaXRZSWRnYjlGbXlEeXdCWGJBc0VMQXAwTEFwTDdRUEtSOHBBbDJ5S0N3cEVSSTVzRERRc0RBdk1ERUJOQ1lqSVRVaE1nUVZGQVlIQkJVVUJDTWpCaFVVRndjbUppYzBOamN6TmpZMU5DRWpOVE1nQXpjekZRRWpBVFV6QXBhRmV2N2xBUlh0QVF0OWJnRU0vdmZvTlhxWVVvU2lBckdrUDNLSi9zK0ppUUVRbEpQUC91cVgvdXZPQkNGZWFzZlB0WENqTEZmK3hlZ0RZMnRCbVNpM2Y0YUxBZ0Y5WmZQSEE1K2JDdjdwQVJnSkFBSUFNLzVJQTRnR0hBQW5BREFBbGJJQ01USVJFam13QWhDd0tOQUFzQ3d2c0FCRldMQUZMeHV4QlJzK1diQUFSVml3Rnk4YnNSY1JQbG13QUVWWXNCSXZHN0VTRHo1WnNBVVFzZ1FCQ2l0WUlkZ2I5Rm15SlJJRkVSSTVmTEFsTHhpMFFDVlFKUUpkc2lRSENpdFlJZGdiOUZteURDUWxFUkk1c0JJUXNoMEJDaXRZSWRnYjlGbXdMQkN3S2RDd0tTKzBEeWtmS1FKZHNpZ3BMQkVTT2JBdzBEQXhBVFFtSXlFMUlUSVdGUlFHQnhZVkZBWWpJd1lWRkJjSEppWW5ORFkzTXpJMk5UUWhJelV6TWdNM014VUJJd0UxTXdKMGMybis1QUVYM1BoaFY5bjIwRFora0ZHQ2xnS3BvVFZzZC83NWtaWGlvSkxRL3VtVy91dk5BdjQ4UjdtbGpVOTNKRUtzbHE4RVltdEJrVEMyY0gySEFWQS9sS2tERXBzTC91b0JGd29BQUFNQVgvL3NCUmNGeEFBUUFCY0FIZ0Jtc2dRZklCRVNPYkFFRUxBUjBMQUVFTEFZMEFDd0FFVllzQXd2RzdFTUh6NVpzQUJGV0xBRUx4dXhCQTgrV2JBTUVMSVJBUW9yV0NIWUcvUlpzaFFFREJFU09YeXdGQzhZc0FRUXNoZ0JDaXRZSWRnYjlGbXdGQkN5SEFjS0sxZ2gyQnYwV1RBeEFSUUNCQ01pSkFJbk5UUVNKQ0FFRWhjQklnWUhJU1ltQXpJMk55RVdGZ1VYbFA3dHM3RCs3cGtEbGdFVUFXUUJFNVlCL2FTZ3RnZ0N2QWkwb0orekN2MUVDcmdDc3RiK3ZhMnFBVHpOWGRVQlJLK3Ivci9WQWUvdzJkdnUrOHJsM3RucUFBQURBRS8vN0FROUJFNEFEd0FXQUIwQVo3SUVIaDhSRWptd0JCQ3dFTkN3QkJDd0Y5QUFzQUJGV0xBRUx4dXhCQnMrV2JBQVJWaXdEQzhic1F3UFBsbXlFQUVLSzFnaDJCdjBXYkliQkF3UkVqbDhzQnN2R0xSQUcxQWJBbDJ5RXdjS0sxZ2gyQnYwV2JBRUVMSVhBUW9yV0NIWUcvUlpNREVUTkRZMk16SUFGeGNVQmdZaklnQVJBVEkyTnlFV0ZoTWlCZ2NoSmlaUGZlU1UyZ0VUQ3dGNzU1WGovdXdCOTJ1RkVQMy9FSVJyYW9VUUFnQVFoUUlub2YySi91ZnFPYUQ4aWdFdUFRSCtrNUtKaUpNQzNaV0NncFVBQUFFQUVBQUFCUE1Gd2dBUEFFYXlBaEFSRVJJNUFMQUFSVml3Qmk4YnNRWWZQbG13QUVWWXNBOHZHN0VQSHo1WnNBQkZXTEFNTHh1eERBOCtXYklCREE4UkVqbXdCaEN5Q0FFS0sxZ2gyQnYwV1RBeEFSYzNFelkyTXhjSEl3WUhBU01CSVFKaEd4dmtOWng2TFFJWVZDZittUFQrRGdFTkFZdHlid0wzckpjQjF3SjgrNVFGc0FBQkFDQUFBQVFZQkU0QUVRQkdzZ0lTRXhFU09RQ3dBRVZZc0FVdkc3RUZHejVac0FCRldMQVJMeHV4RVJzK1diQUFSVml3RGk4YnNRNFBQbG15QVFVT0VSSTVzQVVRc2dvQkNpdFlJZGdiOUZrd01RRVhOeE1TTXpJWEJ5WWpJZ1lIQVNNQk13SGpGQlI2V3M5REp4Y01JQ0k3RGY3MjAvNlMrd0Z1WVdFQnZnRWlGc0FHTmlyODRnUTZBQUlBWC85MkJSY0dMZ0FUQUNjQVZiSUZLQ2tSRWptd0JSQ3dJZEFBc0FCRldMQU5MeHV4RFI4K1diQUFSVml3QXk4YnNRTVBQbG13QnRDd0RSQ3dFTkN3RFJDeUdnRUtLMWdoMkJ2MFdiQVgwTEFERUxJa0FRb3JXQ0hZRy9SWnNDSFFNREVCRUFBSEZTTTFKZ0FETlJBQU56VXpGUllBRVNjMEppY1ZJelVHQmhVVkZCWVhOVE1WTmpZMUJSZis4K25HNlA3dkF3RVM2Y2JxQVEzOWduakdlWVdFZThaNWdBS3kvdHIraXlOK2ZpTUJjd0VkVlFFa0FYb2pjWElqL29iKzJRYk85U05nWVNQMXowekgvU1ZnWHlQMnp3QUNBRS8vaUFROUJMUUFFd0FsQUZpeUF5WW5FUkk1c0FNUXNCVFFBTEFBUlZpd0F5OGJzUU1iUGxtd0FFVllzQkF2RzdFUUR6NVpzQU1Rc0FiUXNCQVFzQTNRc0JBUXNpTUJDaXRZSWRnYjlGbXdGTkN3QXhDeUhRRUtLMWdoMkJ2MFdiQWEwREF4RXpRU056VXpGUllTRlJVVUFnY1ZJelVtQWpVQk5qWTFOQ1luRlNNMUJnWVZGQllYTlROUDNiMjR2OTNmdjdpNzNRSlFVbHBhVUxoUFdGWlB1QUluMmdFbUgyNXRILzdZM1JIYi90a2RhMndmQVNiZC9xY2V0WmVDc2g5Z1lDR3lsWU91SVdnQUFBTUFpUC9yQnJVSFB3QXFBRDBBUmdDNnNqQkhTQkVTT2JBd0VMQUowTEF3RUxCRjBBQ3dBRVZZc0FBdkc3RUFIejVac0FCRldMQVNMeHV4RWg4K1diQUFSVml3Qnk4YnNRY1BQbG13QUVWWXNBc3ZHN0VMRHo1WnNna0FCeEVTT2JBU0VMSVRBUW9yV0NIWUcvUlpzQXNRc2hvQkNpdFlJZGdiOUZteUhnc1NFUkk1c0NQUXNCTVFzQ3JRc0JJUXNEYlFzRFl2c0N6UXNDd3ZzaXNJQ2l0WUlkZ2I5Rm13TEJDd010Q3dNaSt5T1FnS0sxZ2gyQnYwV2JBc0VMQkMwTEJDTDdCRzBMQkdMekF4QVRJV0Z4RVVCaU1pSndZaklpWW5FVFEyTXhVaUJoVVJGQll6TWpZMUVUTVJGaFl6TWpZMUVUUW1JeE1WSXlJdUFpTWlGUlVqTlRRek1oNENBVFkzTlRNVkZBWUhCUFRPOGdIeDBPTnljdVBPOEFUenoxOW1abDlwY3ZVQmNXaGZabVpmYWlGVGlyOHdGR2lHNnlWR3lXLytLVUVEcVdBN0JiRDYzZjNxM2Z1ZW52YlZBaURkL2N5T2dQM3RnSTZCZHdHQy9ubHpnSTZBQWhPQWpnSGpoaU5MQ21nUUl0d1BUeHIraDFJOGFHY3hlQjhBQUFNQWRQL3JCZEVGNHdBcUFEMEFSZ0N2c2dsSFNCRVNPYkFKRUxBNjBMQUpFTEJHMEFDd0FFVllzQkl2RzdFU0d6NVpzQUJGV0xBTEx4dXhDdzgrV2JBU0VMQUEwTEFBTDdBTEVMQUgwTElKRWdzUkVqbXdFaEN5RXdFS0sxZ2gyQnYwV2JBTEVMSWFBUW9yV0NIWUcvUlpzaDRMRWhFU09iQWowTEFURUxBcTBMQVNFTEEyMExBMkw3QXQwTEF0TDdJckNBb3JXQ0hZRy9SWnNDMFFzRExRc0RJdnNqa0lDaXRZSWRnYjlGbXdOaEN3UWRDd1FTK3dSdEN3Umk4d01RRXlGaGNWRkFZaklpY0dJeUltSnhFME5qTVZJZ1lWRlJRV016STJOelV6RlJZV016STJOVFUwSmlNVEZTTWlMZ0lqSWhVVkl6VTBNekllQWdFMk56VXpGUlFHQndRNnV0d0IxTFhGWVdQQ3N0TUUzTHRKVzFORFVGNEI3QUZlVVVKVVcwbTlKRk9Ld1N3VmFJZnJKVWJGY1A0d1FRT3BZRHNFUitYTStNem5rWkhneFFFRHplZkRkWHoxZkhWd2FzckthbkIxZlBWOGRRSG5oaU5NQ1dnUUl0d1BUaHYraFZJOGFHY3hlQjhBQWdDSS8rc0d3UWNSQUI0QUpnQjlzZ1luS0JFU09iQUdFTEFqMEFDd0FFVllzQTB2RzdFTkh6NVpzQUJGV0xBSUx4dXhDQTgrV2JBRTBMSUdDQTBSRWptd0NCQ3lFUUVLSzFnaDJCdjBXYkFORUxBVjBMQVZMN0FSRUxBYTBMQVZFTEFlMExBZUw3QU5FTEFsMExBbEw3QW0wTEFtTDdJZ0NBb3JXQ0hZRy9SWnNDWVFzQ1BRc0NNdk1ERUJFUlFHSXlJbkJpTWlKalVSTXhFVUZqTXlOalVSSVJFVUZqTXlOalVSSlRVaEZ5RVZJelVHd2ZuUzVXMXg2Yy96L1dkZWFYSUJBVzFqWVc3OE9RTlZBZjZtdFFXdysvL1c3cVdsNzlVRUFmdjhkWUtCZHdRRCsveDBnMzk1QkFQbmVucC9md0FDQUhELzZ3WHRCYkVBSGdBbUFJbXlCaWNvRVJJNXNBWVFzQ1hRQUxBQVJWaXdEUzhic1EwYlBsbXdBRVZZc0JVdkc3RVZHejVac0FCRldMQWVMeHV4SGhzK1diQUFSVml3QkM4YnNRUVBQbG13QUVWWXNBZ3ZHN0VJRHo1WnNnWUlGUkVTT2JJUkFRb3JXQ0hZRy9SWnNCclFzQTBRc0NYUXNDVXZzQi9Rc0I4dnNpQUlDaXRZSWRnYjlGbXdIeEN3SXRDd0k5QXdNUUVSQmdZaklpY0dJeUltTlJFekVSUVdNekkyTlJFekVSUVdNekkyTlJFbE5TRVhJUlVqTlFYdEFkcTl4MkJteTdqVjgxUkdVMmIwWEU5S1cveWRBemdFL3JLMUJEcjlUc0hjam83ZHd3S3YvVkZ5Ykd4eUFxLzlVWEpzYkhJQ3IveDdlMzkvQUFFQVp2Nk1CTFlGeFFBWUFGT3lGeGthRVJJNUFMQUFSVml3Q2k4YnNRb2ZQbG13QUVWWXNBQXZHN0VBRno1WnNBQkZXTEFDTHh1eEFnOCtXYkFLRUxBTzBMQUtFTElRQVFvcldDSFlHL1Jac0FJUXNoY0JDaXRZSWRnYjlGa3dNUUVqRVNZQU5SRTBFaVF6SUFBVkl4QWhJZ1lWRVJRV0Z6TUROUHZUL3dDTkFRR2pBUUFCSC96KzNZeXBxWXFmL293QlppQUJSL2tCRWE4QkdKdis5K2tCSnQrOC91MjIzd0VBQVFCYy9va0Q4d1JPQUJvQVU3SVpHeHdSRWprQXNBQkZXTEFLTHh1eENocytXYkFBUlZpd0FDOGJzUUFYUGxtd0FFVllzQUl2RzdFQ0R6NVpzQW9Rc0EvUXNBb1FzaElCQ2l0WUlkZ2I5Rm13QWhDeUdRRUtLMWdoMkJ2MFdUQXhBU01SSmdJMU5UUTJOak15RmhZVkl6UW1JeUlHRlJVVUZoY3pBdFh6czlONTI1Sjh4bS9sZEZoeGduNXdtUDZKQVdvZ0FTUGNISnY4aVdlN2RsdDZ2YWdib2JzQ0FBRUFiUUFBQkpNRlBnQVRBQk1Bc0E0dnNBQkZXTEFFTHh1eEJBOCtXVEF4QVFVSEpRTWpFeVUzQlJNbE53VVRNd01GQnlVQ1d3RWhTUDdkdGEvaC90OUhBU1hLL3Q1SkFTTzVyT1FCSlV6KzRBSEJySUNxL3NFQmpxdUFxd0ZvcTRLckFVYithNnQvcWdBQi9HWUVvdjg1QmYwQUJ3QVJBTEFBTDdJREJnb3JXQ0hZRy9SWk1ERUJGU2MzSVNjWEZmMFhzUUVDSWdHeEJTQitBZTVzQWR3QUFBSDhjd1VYLzIwR0ZRQVBBQzRBc0FzdnNBZlFzQWN2c2dBSUNpdFlJZGdiOUZtd0N4Q3dCTkN3QkMrd0N4Q3lEQWdLSzFnaDJCdjBXVEF4QVRJVkZTTTFOQ01pQkFjak5UTTJKUDUvN29ocU52N2lpeWtuZVFFWUJoWGNJaEJvZHdHR0FYY0FBQUg5ZXdVVy9uSUdZQUFGQUF3QXNBRXZzQVhRc0FVdk1ERUJOVE1IRndmOWU3MEJPMUlGM0lTV2NFUUFBZjJsQlJiK25BWmdBQVVBREFDd0F5K3dBTkN3QUM4d01RRW5OeWN6RmYzM1Vqc0J2UVVXUkhDV2hBQUkraVQreEFHL0JhOEFEQUFhQUNjQU5RQkNBRThBWEFCcUFIb0FzRVV2c0ZNdnNHQXZzRGd2c0FCRldMQUNMeHV4QWg4K1diSUpDUW9yV0NIWUcvUlpzRVVRc0JEUXNFVVFza3dKQ2l0WUlkZ2I5Rm13RjlDd1V4Q3dIdEN3VXhDeVdna0tLMWdoMkJ2MFdiQWwwTEJnRUxBcjBMQmdFTEpuQ1FvcldDSFlHL1Jac0RMUXNEZ1FzajhKQ2l0WUlkZ2I5Rmt3TVFFME5qSVdGU00wSmlNaUJoVUJORFl6TWhZVkl6UW1JeUlHRlJNME5qTXlGaFVqTkNZaUJoVUJORFl6TWhZVkl6UW1JeUlHRlFFME5qSVdGU00wSmlNaUJoVUJORFl5RmhVak5DWWpJZ1lWQVRRMk16SVdGU00wSmlJR0ZSTTBOak15RmhVak5DWWpJZ1lWL1JGenZuUndNekF1TXdIZWRGMWZkWEUxTGl3elNIVmRYM1J3TlZ3ei9zdDBYVjkwY0RVdUxUUDlUM08rZEhBek1DNHovVTEwdm5Sd016QXVNLzdlZFYxZmRIQTFYRE0xZFYxZmRYRTFMaTB6QlBOVWFHaFVMamMxTVA3clZHaG5WVEUwTlREK0NWVm5hRlF4TkRjdS9mbFVhR2hVTVRRM0x2N2tWR2hvVkM0M055NEZHbFJvYUZRdU56VXcvZ2xWWjJoVU1UUTNMdjM1VldkblZURTBOVEFBQ1BwTi9tTUJqQVhHQUFRQUNRQU9BQk1BR0FBZEFDSUFKd0F2QUxBaEw3QVdMN0FTTDdBTEw3QWJMN0FtTDdBQVJWaXdCeThic1FjZlBsbXdBRVZZc0FJdkc3RUNFVDVaTURFRkZ3TWpFd01uRXpNREFUY0ZGU1VGQnlVMUJRRTNKUmNGQVFjRkp5VURKd00zRXdFWEV3Y0QvbEFMZW1CR09neDZZRVlDSFEwQlRmNm0rM1VOL3JNQldnT2NBZ0ZBUlA3Yi9QTUMvc0JGQVNZckVaUkJ4Z05nRVpSQ3hEd08vcTBCWVFTaURnRlMvcUQrRVF4OFlrYzdESHhpUndHdUVKbEV5UHlPRVpsRnlBTGtBZ0ZHUmY3Vi9PTUMvcnRIQVNzQUFBTC80QUFBQkNFR1lnQVNBQnNBZExJVkhCMFJFam13RlJDd0E5QUFzQUJGV0xBTkx4dXhEUjgrV2JBQVJWaXdFUzhic1JFZlBsbXdBRVZZc0Frdkc3RUpEejVac0JFUXNnQUhDaXRZSWRnYjlGbXlBZzBKRVJJNXNBSXZzQUFRc0F2UXNBelFzQUlRc2hNQkNpdFlJZGdiOUZtd0NSQ3lGQUVLSzFnaDJCdjBXVEF4QVNFUk14WVdGUlFHQnlFUkl6VXpOVE1WSVFFUk16STJOVFFtSndLai90NzN4T1hsd1A0U3JxN3pBU0wrM3UxYlpXTlhCUVg5L2dQT3JxM1RCQVVGcTdLeS9KRCtnbVZaVldrQ0FBQUNBSlFBQUFUWkJiQUFEZ0FiQUUyeUJCd2RFUkk1c0FRUXNCZlFBTEFBUlZpd0F5OGJzUU1mUGxtd0FFVllzQUV2RzdFQkR6NVpzaFlEQVJFU09iQVdMN0lBQVFvcldDSFlHL1Jac0FNUXNoUUJDaXRZSWRnYjlGa3dNUUVSSXhFaE1nUVZGQWNYQnljR0l4TTJOVFFtSnlFUklUSTNKemNCa2YwQ0xmUUJIM1Y2YlloNXF2a2NrSDcreVFFd1R6cHpiZ0lkL2VNRnNQN1J3WGVIWkpZM0FVTTFTbmFOQXY0RUZvQmtBQUFDQUh6K1lBUXdCRTRBRXdBaUFHNnlGeU1rRVJJNXNCY1FzQkRRQUxBQVJWaXdFQzhic1JBYlBsbXdBRVZZc0Ewdkc3RU5HejVac0FCRldMQUtMeHV4Q2hFK1diQUFSVml3Qnk4YnNRY1BQbG15Q1JBSEVSSTVzZzRRQnhFU09iQVFFTElYQVFvcldDSFlHL1Jac0FjUXNod0JDaXRZSWRnYjlGa3dNUUVVQnhjSEp3WWpJaWNSSXhFekZ6WXpNaElSSnpRbUl5SUhFUll6TWpjbk54YzJCREJ1YW05b1dYQ3lhL1BnQ211NHh1SHlnWGlWUVVLV1JqSnFibGtpQWhMMGwzcGplRFoxL2Y4RjJtNkMvdG4rK2dhaXZuditJSDRoZTJSbldBQUJBSThBQUFRMEJ4QUFCd0F5c2dFSUNSRVNPUUN3QUVWWXNBUXZHN0VFSHo1WnNBQkZXTEFDTHh1eEFnOCtXYkFFRUxJQUFRb3JXQ0hZRy9SWk1ERUJJUkVqRVNFUk13UTAvVmo5QXJMekJPVDdIQVd3QVdBQUFRQitBQUFEV3dWekFBY0FLd0N3QUVWWXNBUXZHN0VFR3o1WnNBQkZXTEFDTHh1eEFnOCtXYkFFRUxJQUFRb3JXQ0hZRy9SWk1ERUJJUkVqRVNFUk13TmIvaGJ6QWV2eUEzYjhpZ1E2QVRrQUFBRUFtLzdHQkowRnNBQVVBRnV5RHhVV0VSSTVBTEFKTDdBQVJWaXdFeThic1JNZlBsbXdBRVZZc0JFdkc3RVJEejVac0JNUXNnQUJDaXRZSWRnYjlGbXlBeE1KRVJJNXNBTXZzQWtRc2dvSENpdFlJZGdiOUZtd0F4Q3lEd0VLSzFnaDJCdjBXVEF4QVNFUk15QUFFUkFBSXljeU5qVUNKU01SSXhFaEJEZjlZS2dCSWdFOC92YnpBWU9JQXY2cnZQd0RuQVRrL2wvK3pmN3MvdlQrMXJxendnRjdDZjJIQmJBQUFRQisvdUlEMndRNkFCVUFTcklMRmhjUkVqa0FzQW92c0FCRldMQVVMeHV4RkJzK1diQUFSVml3RWk4YnNSSVBQbG13RkJDeUFBRUtLMWdoMkJ2MFdiSURGQW9SRWptd0F5K3lFQUVLSzFnaDJCdjBXVEF4QVNFVk15QUFGUlFHQmdjbk5qVTBKaU1qRVNNUklRTkcvaXRKQVFFQklGNnJjMVhlbTQ1Tzh3TElBM2JsL3ZyZFlNS05IYTVLMUlHWC9qb0VPZ0FBQVFDUUFBQUZOZ1d3QUJRQVlRQ3dBRVZZc0FBdkc3RUFIejVac0FCRldMQU1MeHV4REI4K1diQUFSVml3QWk4YnNRSVBQbG13QUVWWXNBb3ZHN0VLRHo1WnNnOEtEQkVTT2JBUEw3S2ZEd0Zkc2dnQkNpdFlJZGdiOUZteUFRZ1BFUkk1c0FYUXNBOFFzQkxRTURFSkFpRUJJeFVqTlNNUkl4RXpFVE0xTXhVekFRVU4vbndCcmY3Qi90TkJvMW45L1Ztak53RWJCYkQ5Vy96MUFtM3A2ZjJUQmJEOW12NytBbVlBQUFFQWpnQUFCSzRFT2dBVUFGd0FzQUJGV0xBTkx4dXhEUnMrV2JBQVJWaXdGQzhic1JRYlBsbXdBRVZZc0Fvdkc3RUtEejVac0FCRldMQURMeHV4QXc4K1diSU9DZzBSRWptd0RpK3lDUUVLSzFnaDJCdjBXYklCQ1E0UkVqbXdCZEN3RGhDd0V0QXdNUWtDSVFNakZTTTFJeEVqRVRNUk16VXpGVE1UQkpUK3hBRlcvc3ZZTDV0WDh2SlhteWZQQkRyOS92M0lBYXl5c3Y1VUJEcitVTWZIQWJBQUFRQTBBQUFHb2dXd0FBNEFZUUN3QUVWWXNBWXZHN0VHSHo1WnNBQkZXTEFLTHh1eENoOCtXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQTB2RzdFTkR6NVpzZ2dHQWhFU09iQUlMN0lCQVFvcldDSFlHL1Jac0FZUXNnUUJDaXRZSWRnYjlGbXlEQUVJRVJJNU1ERUJJeEVqRVNFMUlSRXpBU0VCQVNFRHRxMzgvaWNDMVlzQnJRRTIvZ3dDSC83UUFuRDlrQVRzeFAyY0FtVDlSLzBKQUFFQVBRQUFCYWdFT2dBT0FHc0FzQUJGV0xBR0x4dXhCaHMrV2JBQVJWaXdDaThic1FvYlBsbXdBRVZZc0FJdkc3RUNEejVac0FCRldMQU5MeHV4RFE4K1diSUpDZ0lSRWptd0NTK3lMd2tCY2JLTUNRRmRzZ0FCQ2l0WUlkZ2I5Rm13QmhDeUJBRUtLMWdoMkJ2MFdiSU1BQWtSRWprd01RRWpFU01SSVRVaEVUTUJJUUVCSVFOQWUvTCthZ0tJYkFFcUFTMytlQUdvL3NVQnJQNVVBM2JFL2xBQnNQMzUvYzBBQVFDVUFBQUhnd1d3QUEwQWh3Q3dBRVZZc0FJdkc3RUNIejVac0FCRldMQU1MeHV4REI4K1diQUFSVml3Qmk4YnNRWVBQbG13QUVWWXNBb3ZHN0VLRHo1WnNnRUNCaEVTT2JBQkw3S2ZBUUZkc204QkFYR3kzd0VCY2JJUEFRRnlzcDhCQVhHeVB3RUJjYlF2QVQ4QkFuS3lmQUVCWGJBQ0VMSUVBUW9yV0NIWUcvUlpzQUVRc2dnQkNpdFlJZGdiOUZrd01RRWhFU0VWSVJFakVTRVJJeEV6QVpFQ2l3Tm4vWlg4L1hYOS9RTlNBbDdEK3hNQ2gvMTVCYkFBQUFFQWZnQUFCV1lFT2dBTkFHWUFzQUJGV0xBQ0x4dXhBaHMrV2JBQVJWaXdEQzhic1F3YlBsbXdBRVZZc0FZdkc3RUdEejVac0FCRldMQUtMeHV4Q2c4K1diSUJEQVlSRWpsOHNBRXZHTFJBQVZBQkFsMndBaEN5QkFFS0sxZ2gyQnYwV2JBQkVMSUlBUW9yV0NIWUcvUlpNREVCSVJFaEZTRVJJeEVoRVNNUk13RnhBYVVDVVA2ajgvNWI4L01DZHdIRHhQeUtBYlgrU3dRNkFBRUFtLzdFQis4RnNBQVdBR2l5RUJjWUVSSTVBTEFITDdBQVJWaXdGUzhic1JVZlBsbXdBRVZZc0JNdkc3RVREejVac0FCRldMQVFMeHV4RUE4K1diSUJGUWNSRWptd0FTK3dCeEN5Q0FjS0sxZ2gyQnYwV2JBQkVMSU5BUW9yV0NIWUcvUlpzQlVRc2hFQkNpdFlJZGdiOUZrd01RRXpJQUFSRUFBakp6STJOUUlsSXhFakVTRVJJeEVoQlJSOUFTSUJQUDcyOHdHRGlBTCtxNUg4L1gvOEJIa0RRZjdOL3V6KzlQN1d1clBDQVhzSi9Za0U1UHNjQmJBQUFRQisvdVlHdWdRNkFCZ0FWN0lTR1JvUkVqa0FzQWd2c0FCRldMQVhMeHV4RnhzK1diQUFSVml3RlM4YnNSVVBQbG13QUVWWXNCSXZHN0VTRHo1WnNnRVhDQkVTT2JBQkw3SVBBUW9yV0NIWUcvUlpzQmNRc2hNQkNpdFlJZGdiOUZrd01RRXpJQUFWRkFZR0J5YzJOalUwSmlNakVTTVJJUkVqRVNFRUNuMEJCd0VzWGF0elZYVnBwWnAvOC81YTh3T01BcFQrKzk1aHY0NGRyU2lQWjRLWC9qWURkdnlLQkRvQUFBSUFaLy9yQmRjRnhRQWxBRElBaGJJV016UVJFam13RmhDd0p0QUFzQUJGV0xBTkx4dXhEUjgrV2JBQVJWaXdIUzhic1IwZlBsbXdBRVZZc0FRdkc3RUVEejVac0FEUXNBQXZzZ0lFSFJFU09iQUNMN0FORUxJT0FRb3JXQ0hZRy9SWnNBUVFzaFVCQ2l0WUlkZ2I5Rm13QUJDeUpRRUtLMWdoMkJ2MFdiQUNFTEFwMExBZEVMSXZBUW9yV0NIWUcvUlpNREVGSWljR0l5SWtBaWMxTkJJMk14VWlCaFVWRkJJek1qY21FVFUwRWpNeUVoRVZFQWNXTXdFVUZoYzJFVFUwSmlNaUJoVUYxOSt6bExlNy90U3BBMzNoakdaKzI3SXhLZUx0dU1MenUxeHEvWTVsWTZKZ1dGUmVGVWRIcmdFMnY4bXZBUjZoMU9HOXVOZisrUWZMQVVUTDhBRTEvci8rK3NiKzJzb1VBaG1FMVVpUEFRblZycXV2b1FBQ0FHSC82d1RKQkU0QUlnQXVBSXl5QkM4d0VSSTVzQVFRc0NQUUFMQUFSVml3Q3k4YnNRc2JQbG13QUVWWXNCb3ZHN0VhR3o1WnNBQkZXTEFFTHh1eEJBOCtXYkFBUlZpd0FDOGJzUUFQUGxteUFnUWFFUkk1c0FJdnNBc1FzZ3dCQ2l0WUlkZ2I5Rm13QkJDeUV3RUtLMWdoMkJ2MFdiQUFFTElpQXdvcldDSFlHL1Jac0FJUXNDWFFzQm9Rc2lzQkNpdFlJZGdiOUZrd01RVWlKd1lqSWdBUk5UUVNNeFVHQmhVVkZCWXpOeVkxTlRRMk16SVdGUlVVQnhZekFSUVhOalUxTkNZaklnWVZCTW02azNxUTVmN1UyNnBBUzVwOUpZKzJsSmE5Z1UxWS9nNTRZejB4TWpzU05qa0JRZ0VFUXM4QkRNb0VsSHRKcHN3Q2xlSjZ1K3IvelhmVGxCRUJqNnBzWTZsN2E0ZDRhZ0FCQUMzK29RYTNCYkFBRHdCUEFMQU5MN0FBUlZpd0NDOGJzUWdmUGxtd0FFVllzQUl2RzdFQ0h6NVpzQUJGV0xBT0x4dXhEZzgrV2JBQ0VMSUFBUW9yV0NIWUcvUlpzQVhRc0E0UXNnWUJDaXRZSWRnYjlGbXdDdEF3TVFFaE5TRVZJUkVoRVRNUk13TWpFU0VCamY2Z0E3Nytud0tCL0xBVTUvdlJCT3pFeFB2ZUJPYjdIUDNWQVY4QUFBRUFKdjYvQlRvRU9nQVBBRXNBc0EwdnNBQkZXTEFETHh1eEF4cytXYkFBUlZpd0R5OGJzUThQUGxtd0F4Q3lCQUVLSzFnaDJCdjBXYkFBMExBUEVMSUdBUW9yV0NIWUcvUlpzQU1Rc0FqUXNBWVFzQXJRTURFQkl6VWhGU01SSVJFekVUTURJeEVoQVJ2MUFzUGJBYWJ6a3hUZC9OSURkOFBEL1VzRGVQeUkvZjBCUVFBQUFRQ0FBQUFFNFFXd0FCZ0FUN0lGR1JvUkVqa0FzQUJGV0xBQUx4dXhBQjgrV2JBQVJWaXdDeThic1FzZlBsbXdBRVZZc0E0dkc3RU9EejVac2dVT0FCRVNPYkFGTDdBSTBMQUZFTElVQVFvcldDSFlHL1Jac0JIUU1ERUJFUllYRmhjUk14RTJOeEV6RVNNUkJnY1ZJelVtSmljUkFYMENUelZ1bzJ4ay9mMWdjS1AyK2dFRnNQNHNtRGtuQlFFci90d0tHUUtuK2xBQ1BCZ0s2K1VHNnQ4QnpRQUJBSFFBQUFQMUJEc0FGZ0JSc2dZWEdCRVNPUUN3QUVWWXNCVXZHN0VWR3o1WnNBQkZXTEFNTHh1eERCcytXYkFBUlZpd0FTOGJzUUVQUGxteUR3RU1FUkk1ZkxBUEx4aXlCd0VLSzFnaDJCdjBXYkFFMExBUEVMQVMwREF4SVNNUkJnY1ZJelVtSmljUk14RVdGeEV6RVRZM0VUTUQ5Zk5GTWFPMnZnSHlBWUtqT3p2ekFXa09CWXFMRTlDeEFWRCtzS3dmQVF2Kzd3WU9BZ3dBQUFFQWhRQUFCT1VGc0FBUkFFYXlCUklURVJJNUFMQUFSVml3QVM4YnNRRWZQbG13QUVWWXNBQXZHN0VBRHo1WnNBQkZXTEFKTHh1eENROCtXYklGQVFBUkVqbXdCUyt5RGdFS0sxZ2gyQnYwV1RBeE14RXpFVFl6SUFRWEVTTVJKaVlqSWdjUmhmeWdzZ0VGQVF3Qi9BRitsNjZrQmJEOXd5bm02ZjR6QWRDTGRpcjlXUUFBQWdBVy8ra0Z2QVhFQUJ3QUpBQmtzaFlsSmhFU09iQVdFTEFqMEFDd0FFVllzQTR2RzdFT0h6NVpzQUJGV0xBQUx4dXhBQTgrV2JJZUFBNFJFam13SGkreUVnRUtLMWdoMkJ2MFdiQUUwTEFlRUxBSzBMQUFFTElYQVFvcldDSFlHL1Jac0E0UXNpSUJDaXRZSWRnYjlGa3dNUVVnQUJFMUppWTFNeFFYTkJJa0Z5QUFFUlVoRlJRV016STNGd1lHQVNFMU5DWWpJZ1lEM1A3Uy9xcWJwN1dObEFFSW5nRUlBU0w4bU11OXNhd3hROWorQlFKc21wU09zQmNCVkFFclBCalVxcllxcmdFY29BSCtuUDY1aERYSzEwYkZLQzREYkIrNHdOMEFBdi9MLyt3RWl3Uk9BQm9BSVFDTXNpQWlJeEVTT2JBZ0VMQVUwQUN3QUVWWXNBMHZHN0VOR3o1WnNBQkZXTEFBTHh1eEFBOCtXYkljQUEwUkVqbXdIQyswdnh6UEhBSmR0RjhjYnh3Q2NiUWZIQzhjQW5HeWp4d0JYYlR2SFA4Y0FuR3lFUWNLSzFnaDJCdjBXYkFFMExBY0VMQUswTEFBRUxJVkFRb3JXQ0hZRy9SWnNoY0FEUkVTT2JBTkVMSWdBUW9yV0NIWUcvUlpNREVGSWlRbkp5WW1OVE1VRnpZa016SVNFUlVoRmhZek1qY1hCZ1lCSVRVbUppSUdBdGpVL3VZVUE0S0dxV2dmQVFlNzNmSDlQUXVkZDZobmhFSGEvbTBCendoeXlub1UrOUV5SGNHVGxUREY4LzdtL3Y1aWhweUhmV0ZyQXBZU2VuMk1BQUFCQUpEK3Z3VHRCYkFBRmdCbXNoVVhHQkVTT1FDd0VDK3dBRVZZc0FRdkc3RUVIejVac0FCRldMQUlMeHV4Q0I4K1diQUFSVml3QWk4YnNRSVBQbG15QndRQ0VSSTVmTEFITHhpMEFBY1FCd0pkc0FyUXNCQVFzaEVCQ2l0WUlkZ2I5Rm13QnhDeUZnRUtLMWdoMkJ2MFdUQXhBU01SSXhFekVUTUJJUUVXQUJVUUFDTW5JQkVDSlNFQmxRajkvWEVCc2dFeS9pTHBBUUQrOFBRQkFRa0MvcTcrK0FKeC9ZOEZzUDJrQWx6OWloLysxL24rOC83VHdnRnZBWG9HQUFBQkFJNys2Z1JEQkRvQUZnQlpzZzBYR0JFU09RQ3dCeSt3QUVWWXNCRXZHN0VSR3o1WnNBQkZXTEFWTHh1eEZScytXYkFBUlZpd0R5OGJzUThQUGxteUZCVVBFUkk1ZkxBVUx4aTBRQlJRRkFKZHNnNEJDaXRZSWRnYjlGbXlBQlFPRVJJNU1ERUJGaFlWRkFZR0J5YzJKelFtSnlNUkl4RXpFVE1CSVFMTnI3eGVxbk5WNEFLTmk2N3k4bFVCUVFFdEFtRXA0NjFndW9nY3JVZktkb1VKL2xRRU92NVFBYkFBQUFFQW0vNUxCUk1Gc0FBVUFIU3lDaFVXRVJJNUFMQUFSVml3QUM4YnNRQWZQbG13QUVWWXNBTXZHN0VESHo1WnNBQkZXTEFTTHh1eEVnOCtXYkFBUlZpd0NDOGJzUWdSUGxteUFnQVNFUkk1ZkxBQ0x4aTBZQUp3QWdKZHREQUNRQUlDWGJBSUVMSU5BUW9yV0NIWUcvUlpzQUlRc2hBQkNpdFlJZGdiOUZrd01RRVJJUkV6RVJRR0l5SW5OeFl6TWpVUklSRWpFUUdYQW4vOXZxbEZQQTRrUG52OWdmd0ZzUDJEQW4zNkdMZkdFY2NNdWdLWS9aY0ZzQUFBQVFCKy9rc0VDUVE2QUJRQWJiSUxGUllSRWprQXNBQkZXTEFBTHh1eEFCcytXYkFBUlZpd0F5OGJzUU1iUGxtd0FFVllzQkl2RzdFU0R6NVpzQUJGV0xBSUx4dXhDQkUrV2JJQ0F4SVJFamw4c0FJdkdMUkFBbEFDQWwyd0NCQ3lEUUVLSzFnaDJCdjBXYkFDRUxJUUFRb3JXQ0hZRy9SWk1ERUJFU0VSTXhFR0JpTWlKemNXTXpJMUVTRVJJeEVCY1FHbDh3RzZwa1U2RHljN2ZQNWI4d1E2L2owQncvdUZzOEVSdnczQUFlZitTd1E2QUFBQ0FGSC82d1VlQmNRQUZnQWVBRjZ5Q0I4Z0VSSTVzQWdRc0JmUUFMQUFSVml3QUM4YnNRQWZQbG13QUVWWXNBZ3ZHN0VJRHo1WnNnMEFDQkVTT2JBTkw3QUFFTElRQVFvcldDSFlHL1Jac0FnUXNoY0JDaXRZSWRnYjlGbXdEUkN5R2dFS0sxZ2gyQnYwV1RBeEFTQUFFUlVVQWdRbklBQVJOU0VtSmlNaUJ3Y25OellCTWpZM0lSVVVGZ0p4QVVBQmJhRCs0Nm4rM1A2OUE5QUYzOHlubHpReEc2WUJLWmErRXYwdnVnWEUvb3ordG12Qi9zS3hBUUZnQVVtSjRQQTBFOFlOU3ZyODJyMGZ1YjhBQUFFQVcvL3JCRXNGc0FBYkFHdXlDeHdkRVJJNUFMQUFSVml3QWk4YnNRSWZQbG13QUVWWXNBc3ZHN0VMRHo1WnNBSVFzZ0FCQ2l0WUlkZ2I5Rm15QkFJQUVSSTVzaHNMQWhFU09YeXdHeThZc0FYUXNoQUxBaEVTT2JBTEVMSVRBUW9yV0NIWUcvUlpzQnNRc2hrSENpdFlJZGdiOUZrd01RRWhOU0VYQVJZV0ZSUUVJeUltSmpVekZCWXpNalkxTkNZakl6VUMvLzJTQTVFQi9vYkkydjdsNm92aWZ2eUhhSG1RbVpHTUJPVE1vLzVQR09yQ3hlaG52NE5mZ0g5a2xJV3NBQUFCQUYzK2RRUkdCRG9BR3dCY3Nnc2NIUkVTT1FDd0N5K3dBRVZZc0FJdkc3RUNHejVac2dBQkNpdFlJZGdiOUZteUJBQUNFUkk1c2hzTEFoRVNPYkFiTDdBRjBMSVFDd0lSRWptd0N4Q3lFd0VLSzFnaDJCdjBXYkFiRUxJWkJ3b3JXQ0hZRy9SWk1ERUJJVFVoRndFV0ZoVVVCQ01pSmlZMU14UVdNekkyTlRRbUl5TTFBdlQ5bXdPTUFmNkl5OWYrNnV1SjVIdnppV3g2bEpxVGp3TjJ4SnYrUXhucHY4THFhTCtCWUlXQWFaYURxLy8vQURUK1N3U0pCYkFBSmdDd1VnQUFKZ0hlcENrQUJ3R3ZBVFVBQVAvL0FDMytTUU9pQkRvQUpnRHJWUUFBSndIZS81My9lZ0FIQWE4QkMvLytBQUlBVWdBQUJJTUZzQUFMQUJRQVVMSUVGUllSRWptd0JCQ3dEdEFBc0FCRldMQUJMeHV4QVI4K1diQUFSVml3QXk4YnNRTVBQbG15QUFFREVSSTVzQUF2c0FNUXNnd0JDaXRZSWRnYjlGbXdBQkN5RFFFS0sxZ2gyQnYwV1RBeEFSRXpFU0VpSmlZMU5DUTNBUkVoSWdZVkZCWVhBNGI5L2RxZDdvQUJGZXNCTlA3WGZKS0xlUU9iQWhYNlVIVFVpTXo4QS8wdkFnYUpkWFNSQXdBQUFnQm9BQUFHc0FXd0FCZ0FJUUJnc2djaUl4RVNPYkFIRUxBWjBBQ3dBRVZZc0Fndkc3RUlIejVac0FCRldMQUFMeHV4QUE4K1diSUhDQUFSRWptd0J5K3dBQkN5Q2dFS0sxZ2gyQnYwV2JJUkNBQVJFam13R2RDd0J4Q3lHZ0VLSzFnaDJCdjBXYkFaRUxBaDBEQXhJU0lrTlRRa055RVJNeEV6TmpZM05pWW5NeFlXQndZR0J5VVJJU0lHRlJRV0Z3Snk3UDdpQVJYckFUVDhTMTVzQlFJaEhmVWZKZ0lFODh6K3NmN1dmWkNPZXYzVHp2b0RBaFg3R2dLS2ZVclpURjdNUmRUOEE4b0NCb3AwZFpJQkFBSUFYdi9uQm44R0dBQWZBQ3NBZzdJWkxDMFJFam13R1JDd0t0QUFzQUJGV0xBR0x4dXhCaUUrV2JBQVJWaXdBeThic1FNYlBsbXdBRVZZc0Jndkc3RVlEejVac0FCRldMQWNMeHV4SEE4K1diSUZBeGdSRWptd0dCQ3lDd0VLSzFnaDJCdjBXYklRQXhnUkVqbXlHZ01ZRVJJNXNBTVFzaUlCQ2l0WUlkZ2I5Rm13SEJDeUtBRUtLMWdoMkJ2MFdUQXhFeEFTTXpJWEVUTVJCaFl6TmpZM05pY3pGeFlIRGdJakJDY0dJeUlDSndFbUl5SUdGUlFXTXpJM0oxN2t3Nk5sOHdKT1EzU0NCQVJBN0JjdkF3Sjk0b3orLzFWcnk3bmdDd0t1UjROemYzcDJqVVVHQWc0QkNnRTJlQUpDKzA5UGFRSzNxYjdWV2JlRHFQbUZCTGV6QVFYZUFWRm93YzJlcW5KRUFBRUFQUC9uQmVNRnNBQXBBR095SXlvckVSSTVBTEFBUlZpd0NTOGJzUWtmUGxtd0FFVllzQ0l2RzdFaUR6NVpzZ0VxQ1JFU09iQUJMN0lBQVFvcldDSFlHL1Jac0FrUXNnY0JDaXRZSWRnYjlGbXlEd0FCRVJJNXNDSVFzaFVCQ2l0WUlkZ2I5Rm15R2lJSkVSSTVNREVUTlRNMk5qVTBJU0UxSVJZRUZSUUhGaE1WQmhZek5qWTNOaWN6RmhZSERnSWpCaVluTlRRbUkrYW5rNFQrOC82bEFXVDZBUWIvOWdVQlBETmxjZ1FFUVBVYUt3SUNldHFLcDdJSWZHY0NZczBCYlhYUnpRSFR6T1prUC83K1RUbEpBcmFqdnRWaXltZXArSVVFcDZvK2JuNEFBQUVBTC8vaUJQNEVPZ0FrQUdDeUR5VW1FUkk1QUxBQVJWaXdIUzhic1IwYlBsbXdBRVZZc0E0dkc3RU9EejVac2dJQkNpdFlJZGdiOUZteUJ3NGRFUkk1c2hZbEhSRVNPYkFXTDdJVUJ3b3JXQ0hZRy9SWnNCMFFzaHNCQ2l0WUlkZ2I5Rm15SWhRV0VSSTVNREVsQmpNMk5qYzJKek1XRmdjR0JpTUdKaWMxTkNNakp6TTJOVFFqSXljaEZoWVFCeFlYQXdFQ1RscGdBd1JCN0MwWUFRVHB2SjZnQ0tMbUFzSzV5LzhHQVJUTDVMQzVCdXRZQW85L2xxbUdnRG5NOGdOeGcwaC92UVNEbHNNQ3B2N0tTakNzQUFFQVNQNjZCRGNGc0FBaUFGK3lDeU1rRVJJNUFMQVhMN0FBUlZpd0NTOGJzUWtmUGxtd0FFVllzQnN2RzdFYkR6NVpzZ0VKR3hFU09iQUJMN0lBQVFvcldDSFlHL1Jac0FrUXNnY0JDaXRZSWRnYjlGbXlEd0FCRVJJNXNCc1FzaElCQ2l0WUlkZ2I5Rmt3TVJNbk16WTJOVFFoSVNjaEZnUVZGQWNXRXhVekZSUUdCeWMyTmpjakppYzFOQ1lqbHdIT2tZSCs2LzdxQXdFdTd3RUQ1T01EeldSYWd5UTRDS004QTM1MEFsekRBWE52NjhNRDNNbmZaa2YrOW9hc1k5aExUVGwzU1RHeGhIR0ZBQUVBZFA2cEJCb0VPZ0FpQUYreUJpTWtFUkk1QUxBWUw3QUFSVml3Q1M4YnNRa2JQbG13QUVWWXNCd3ZHN0VjRHo1WnNnRUpIQkVTT2JBQkw3SUFCd29yV0NIWUcvUlpzQWtRc2djQkNpdFlJZGdiOUZteUVBQUJFUkk1c0J3UXNoTUJDaXRZSWRnYjlGa3dNUk1uTXpJMU5DWWpJU2NoTWhjV0ZSUUhGaGNWTXhVVUJnY25OalkzSXlZbk5UUWpzd0hoMG10ai91RUVBU0RqZUdxdHNRSzdhRldESmpnR3Bpc0J3d0diczQ1S1U4RmtXWktlVHp6REpLeGwya2ROUFg1UEhvTlVwZ0FBQVFCQy8rc0hmd1d3QUNJQVlySUFJeVFSRWprQXNBQkZXTEFOTHh1eERSOCtXYkFBUlZpd0h5OGJzUjhQUGxtd0FFVllzQVl2RzdFR0R6NVpzQTBRc2dBQkNpdFlJZGdiOUZtd0JoQ3lDQUVLSzFnaDJCdjBXYkFmRUxJU0FRb3JXQ0hZRy9SWnNoY2ZEUkVTT1RBeEFTRURBZ0lHQnlNMU56WTJFeE1oRVJRV016STJOelluTXhZV0J3NENJeUltTlFRSC9tRVlEbUc1bkVvb2VtZ1BIQU9PVEQ5dWZ3UUVRZlljS1FJQ2YrQ013OFlFNC8zZy92YiswNG9DeWdNSjN3RWNBdC83dkZKa3RLZTcyR2JIWnFmN2hNRzlBQUVBUVAvckJsb0VPZ0FoQUdLeUlDSWpFUkk1QUxBQVJWaXdEQzhic1F3YlBsbXdBRVZZc0I0dkc3RWVEejVac0FCRldMQUZMeHV4QlE4K1diQU1FTElBQVFvcldDSFlHL1Jac0FVUXNnY0JDaXRZSWRnYjlGbXdIaEN5RVFFS0sxZ2gyQnYwV2JJV0hnd1JFamt3TVFFaEF3SUdCeU1uTnpZMk54TWhFUllXTXpJMk56WW5NeGNXQnc0Q0l5SW1Kd01YL3ZjVEVhaXRVd0l5VUVrS0ZBTGhBVkZGV0djRUJFRHNGakFEQW5ESGZjTEhBUU4wL3ByKzZmUUR5Z1VMcmVVQnp2MHJVbVNnbWJYSVVMRjhtK1o4dnJrQUFRQ1UvK2NIaGdXd0FCMEFaYklVSGg4UkVqa0FzQUJGV0xBQUx4dXhBQjgrV2JBQVJWaXdHUzhic1JrZlBsbXdBRVZZc0Jjdkc3RVhEejVac0FCRldMQVJMeHV4RVE4K1diSUVBUW9yV0NIWUcvUlpzZ2tBRnhFU09iSWNBQmNSRWptd0hDK3lGUUVLSzFnaDJCdjBXVEF4QVJFVUZqTTJOamMySnpNWEZnY09BaU1HSmljMUlSRWpFVE1SSVJFRkNrMCtjSDRFQkVIMkZ5OERBbnppanJ2RENmMkMvUHdDZmdXdys3eFdZQUt6cHJ2WVdiZURxUGVIQk1ERC8vMlhCYkQ5Z3dKOUFBQUJBSGYvNHdaY0JEb0FIQUI0c2hzZEhoRVNPUUN3QUVWWXNBUXZHN0VFR3o1WnNBQkZXTEFJTHh1eENCcytXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQm92RzdFYUR6NVpzZ2NJQWhFU09YeXdCeThZdE5BSDRBY0NYYlJBQjFBSEFsMnlBQUVLSzFnaDJCdjBXYkFhRUxJTkFRb3JXQ0hZRy9SWnNoSUlBaEVTT1RBeEFTRVJJeEV6RVNFUk14RUdGak0yTmpjMkp6TVdGZ2NPQWlNRUF3TWEvbER6OHdHdzh3SlNSbDVrQXdSQTZ4b3JBZ0p3eDM3K2loTUJ1djVHQkRyK1F3RzkvUzFTWmdLbWthL09YYjlobStaOENBR0VBQUVBWGYvckJMc0Z4UUFoQUVleUFDSWpFUkk1QUxBQVJWaXdDUzhic1FrZlBsbXdBRVZZc0FBdkc3RUFEejVac0FrUXNnNEJDaXRZSWRnYjlGbXdBQkN5RlFFS0sxZ2gyQnYwV2JJYUFBa1JFamt3TVFVaUpBSW5FVFFTSkRNeUZ3Y21JeUlHRlJFVUZqTTJOamMySnpNWEZnY09BZ0s3clA3cm13S2FBUmV0MzRnL2hxS2R4Y1NlZllNREF6WDFKeE1CQW9IcUZad0JHSzBCRDY4QkhaNVp1RVRudlA4QXR1a0NoWFNWekxGWVdJdk5iZ0FBQVFCVi8rc0Q1d1JPQUI0QVJMSVRIeUFSRWprQXNBQkZXTEFUTHh1eEV4cytXYkFBUlZpd0N5OGJzUXNQUGxteUFBRUtLMWdoMkJ2MFdiSUZDeE1SRWptd0V4Q3lHQUVLSzFnaDJCdjBXVEF4SlRZMk56UW5NeFlIQmdZaklnQTFOVFEyTmpNeUZ3Y21JeUlHRlJVVUZnSmFVVVVDRStzZEFnVFN0ZWYrNG56aWtydGdMbU9LY291VXJ3SkRSM2RuakZLZ3NBRXgrQjZYK290Q3ZUcTlwQ0NhdndBQkFDSC81d1ZhQmJBQUdRQk5zZ1VhR3hFU09RQ3dBRVZZc0FJdkc3RUNIejVac0FCRldMQVdMeHV4Rmc4K1diQUNFTElBQVFvcldDSFlHL1Jac0FUUXNBWFFzQllRc2drQkNpdFlJZGdiOUZteURoWUNFUkk1TURFQklUVWhGU0VSRkJZek5qWTNOaWN6RmhZSERnSWpCaVluQWVQK1BnU0EvajVOUG5CK0JBUkI5UnNyQXdKOTRveTd3d2tFNDgzTi9JZFVZQUsybzd2WVlzcG5xUG1GQk1EREFBRUFSUC9qQk1zRU9nQVhBRTJ5QlJnWkVSSTVBTEFBUlZpd0FpOGJzUUliUGxtd0FFVllzQlV2RzdFVkR6NVpzQUlRc2dBQkNpdFlJZGdiOUZtd0JOQ3dCZEN3RlJDeUNRRUtLMWdoMkJ2MFdiSU9GUUlSRWprd01RRWhOU0VWSVJFVUZqTTJOamMySnpNV0ZnY0dCaU1FQXdHSi9yc0RpLzZ0VWtWZVl3TUVRT3NzR1FFRThjTCtpUk1EZDhQRC9mQlVaQUtFZEpPZWZINDN6UElJQVlRQUFBRUFnZi9yQlA4RnhRQW9BSE95SmlrcUVSSTVBTEFBUlZpd0ZpOGJzUllmUGxtd0FFVllzQXN2RzdFTER6NVpzZ01CQ2l0WUlkZ2I5Rm15SkJZTEVSSTVmTEFrTHhpeWN5UUJYYkpnSkFGZHNpVUJDaXRZSWRnYjlGbXlCZ01sRVJJNXNoQWxKQkVTT2JBV0VMSWVBUW9yV0NIWUcvUlpzaHNrSGhFU09UQXhBUlFXTXpJMk5UTVVCZ1FqSUNRMU5DVW1KalUwSkNFeUZoWVZJelFtSXlJR0ZSUWhNeFVqSWdZQmY3ZVpocTc4amY3OW9QN3ovcjhCRG5hQ0FTOEJDWmY2aS8yamZKQ3FBVE8ydjUyakFaaGxmb0ZlZ3I1cDZjVDlWekdtWXNYYmFicDNXWFZ6WTluSWNBQUFBZ0JuQkc4QzFnWFhBQVVBRFFBYkFMQUxMN0FIMExBSEw3QUIwTEFCTDdBTEVMQUUwTEFFTHpBeEFSTXpGUU1qQVRNVkZoY0hKalVCazNEVDVsMysxTEVEVEZDd0JKZ0JQeFgrd1FGVVgzdEdTRnErQVAvL0FFY0NDUUpVQXMwQUJnQVJBQUQvL3dCSEFna0NWQUxOQUFZQUVRQUEvLzhBblFKdEJKa0RNUUJHQVpmZ0FFek5RQUQvL3dDQkFtMEYwUU14QUVZQmw0VUFabVpBQVAvL0FBVCtQd09aQUFBQUp3QkRBQUgrL2dFR0FFTUJBQUFjQUxZQUFoQUNJQUlEWGJRUUFpQUNBbkcyZ0FLUUFxQUNBMTB3TVFBQkFHTUVJQUdXQmhvQUNBQWRzZ2dKQ2hFU09RQ3dBRVZZc0FBdkc3RUFJVDVac0FUUXNBUXZNREVCRndZSEZTTTFOallCR254YkE5VUJad1lhVFlXUW1JcGcwUUFBQVFBekJBQUJaUVlBQUFnQUhiSUlDUW9SRWprQXNBQkZXTEFFTHh1eEJDRStXYkFBMExBQUx6QXhFeWMyTnpVekZSUUdyM3hhQTlWcEJBQk5nNUtlaW1mUkFBQUJBREwrMWdGa0FNb0FDQUFZc2dnSkNoRVNPUUN3Q1MreUJBMEtLMWdoMkJ2MFdUQXhFeWMyTnpVekZRWUdyWHRWQTlvQlp2N1dUbitVazRWZDBBQUFBUUJLQkFBQmZBWUFBQWdBRmdDd0FFVllzQWd2RzdFSUlUNVpzQVRRc0FRdk1ERUJGUllYQnlZbU5UVUJId05hZkUxcEJnQ2VqNFpOUHRGbml2Ly9BR3dFSUFMdkJob0FKZ0ZzQ1FBQUJ3RnNBVmtBQVAvL0FFQUVBQUxBQmdBQUpnRnREUUFBQndGdEFWc0FBQUFDQURMK3dnS3FBUDhBQ1FBU0FDR3lDeE1VRVJJNXNBc1FzQVhRQUxBVEw3SUVEUW9yV0NIWUcvUlpzQTdRTURFVEp6WTNOVE1WQmdjR0Z5YzJOelV6RlJRR3NYOVZBOW9CTnpINGYxZ0UybWIrd2s2Sm5jbTZiSEprUVU2T2xzdTJZOTBBQVFCQUFBQUVIZ1d3QUFzQVN3Q3dBRVZZc0Fndkc3RUlIejVac0FCRldMQUdMeHV4QmhzK1diQUFSVml3Q2k4YnNRb2JQbG13QUVWWXNBSXZHN0VDRHo1WnNBb1FzZ0FCQ2l0WUlkZ2I5Rm13Qk5Dd0JkQXdNUUVoRVNNUklUVWhFVE1SSVFRZS9vanovbzBCYy9NQmVBTnkvSTREY3NnQmR2NktBQUVBWFA1Z0JEa0ZzQUFUQUh3QXNBQkZXTEFNTHh1eERCOCtXYkFBUlZpd0NpOGJzUW9iUGxtd0FFVllzQTR2RzdFT0d6NVpzQUJGV0xBQ0x4dXhBaEUrV2JBQVJWaXdBQzhic1FBUFBsbXdBRVZZc0FRdkc3RUVEejVac2dZQkNpdFlJZGdiOUZtd0RoQ3lDQUVLSzFnaDJCdjBXYkFKMExBUTBMQVIwTEFHRUxBUzBMQVQwREF4SVNFUkl4RWhOU0VSSVRVaEVUTVJJUlVoRVNFRU9mNkk4LzZPQVhMK2pnRnk4d0Y0L29nQmVQNWdBYURDQXJURUFYYitpc1Q5VEFBQUFRQ0lBZ1lDUkFQYkFBMEFGcklERGc4UkVqa0FzQU12c1FvS0sxallHOXhaTURFVE5EWXpNaFlWRlJRR0l5SW1KNGg1WkdkNGQyZGplUUlEQTE5NWVXSWxYbmR6WFFELy93Q0svL1VEYndFQUFDWUFFZ01BQUFjQUVnSE5BQUQvL3dDSy8vVUZLQUVBQUNZQUVnTUFBQ2NBRWdITkFBQUFCd0FTQTRZQUFBQUJBRWNDQ1FFaEFzMEFBd0FZc2dBRUJSRVNPUUN3QXkreUFBRUtLMWdoMkJ2MFdUQXhBU00xTXdFaDJ0b0NDY1FBQUFZQVN2L3NCMThGeEFBVkFDTUFKd0EwQUVFQVRnQzRzaWhQVUJFU09iQW9FTEFDMExBb0VMQWIwTEFvRUxBbTBMQW9FTEExMExBb0VMQkgwQUN3SkMrd0ppK3dBRVZZc0Jrdkc3RVpIejVac0FCRldMQVNMeHV4RWc4K1diQUQwTEFETDdJRkF4SVJFam13QjlDd0J5K3dFaEN3RHRDd0RpK3lFQklERVJJNXNCa1FzQ0RRc0NBdnNCSVFzaXNDQ2l0WUlkZ2I5Rm13QXhDeU1nSUtLMWdoMkJ2MFdiQXJFTEE0MExBeUVMQS8wTEFnRUxKRkFnb3JXQ0hZRy9SWnNCa1Fza3dDQ2l0WUlkZ2I5Rmt3TVFFME5qTXlGell6TWhZVkZSUUdJeUluQmlNaUpqVUJORFl6TWhZVkZSUUdJeUltTlFFbkFSY0RGQll6TWpZMU5UUW1JZ1lWQlJRV016STJOVFUwSmlJR0ZRRVVGak15TmpVMU5DWWlCaFVETDZ5SWxrNU9sWWF2cVlxWFRrNlVpcXo5RzZpRmlxdXJpSVdxQVhkOUFzZDlzRTgrUUVwT2ZFMEJ4MDgrUUVwT2ZFMzdUazAvUGt4TmZrc0JaWUtxYjIrbmpFZUJxbTV1cW9ZRGU0T3Fxb2xHZ3FtcGlmd2JTQVJ5U1B3NFJGZFNURXRHVkZSS1NrUlhVa3hMUmxSVVNnTHFSVlZWU1VoR1ZsZEpBQUFCQUd3QWlnSXpBNmtBQmdBUUFMQUZMN0lDQndVUkVqbXdBaTh3TVFFVEl3RTFBVE1CUFBlbi91QUJJS2NDR2Y1eEFZWVRBWVlBQUFFQVZBQ0tBaHNEcVFBR0FCQUFzQUF2c2dNSEFCRVNPYkFETHpBeEV3RVZBU01UQS9zQklQN2dwL2YzQTZuK2VoUCtlZ0dQQVpBQUFRQXRBRzBEY1FVbkFBTUFDUUN3QUMrd0FpOHdNVGNuQVJlcWZRTEhmVzFJQkhKSUFQLy9BRFVDa3dLK0JhZ0RCd0hZQUFBQ2t3QVRBTEFBUlZpd0NTOGJzUWtmUGxtd0RkQXdNUUFBQVFCcEFvd0Mvd1c2QUE4QVU3SUtFQkVSRWprQXNBQkZXTEFBTHh1eEFCOCtXYkFBUlZpd0F5OGJzUU1mUGxtd0FFVllzQTB2RzdFTkV6NVpzQUJGV0xBSEx4dXhCeE0rV2JJQkF3MFJFam13QXhDeUNnTUtLMWdoMkJ2MFdUQXhBUmMyTXlBUkVTTVJKaU1pQnhFakVRRUJJRXVRQVFQRkJYMWpKOFVGckhtSC9zbitDUUhhclZuOTBnTWdBQUVBWHdBQUJId0Z3d0FuQUk2eUh5Z3BFUkk1QUxBQVJWaXdGeThic1JjZlBsbXdBRVZZc0FZdkc3RUdEejVac2ljR0Z4RVNPYkFuTDdJTkFnb3JXQ0hZRy9SWnNBSFFzQVlRc2dVQkNpdFlJZGdiOUZtd0NkQ3dKeEN3RU5Dd0p4Q3dJOUN3SXkrMkR5TWZJeThqQTEyeUpRSUtLMWdoMkJ2MFdiQVIwTEFqRUxBVTBMQVhFTEllQVFvcldDSFlHL1Jac2hzakhoRVNPVEF4QVNFWEZBY2hCeUUxTXpZMk5TY2pOVE1uSXpVekp6UTJJQllWSXpRbUl5SUdGUmNoRlNFWElRTXkvdEFDUUFLNEFmdm5VaWNyQXFXZ0JKeVhCZm9CbHVqMWFWOVlad1lCUC83R0JRRTFBZFF1aDFYS3lnbHZXemVSZVpDaHl1cmF1RjlwZ21paGtIa0FCUUFoQUFBR1R3V3dBQnNBSHdBakFDWUFLUUM5c2dvcUt4RVNPYkFLRUxBZjBMQUtFTEFoMExBS0VMQW0wTEFLRUxBbzBBQ3dBRVZZc0Jvdkc3RWFIejVac0FCRldMQVhMeHV4Rng4K1diQUFSVml3REM4YnNRd1BQbG13QUVWWXNBa3ZHN0VKRHo1WnNnVUpHaEVTT2JBRkw3QUIwTEFCTDdJUEFRRmRzZ01EQ2l0WUlkZ2I5Rm13QlJDeUJ3TUtLMWdoMkJ2MFdiQWwwTEFLMExBTzBMQUZFTEFkMExBaDBMQVIwTEFERUxBZTBMQWkwTEFTMExBQkVMQVowTEFuMExBVjBMQUpFTEFrMExBWEVMQXAwREF4QVRNVkl4VXpGU01SSXdFaEVTTVJJelV6TlNNMU14RXpBU0VSTXdFek5TTUZNeWNqQVRVakFUTW5CWGZZMk5qWS9mN0ovcTM4MDlQVDAvd0JOUUZYKy81eGxQUCtaKzVmandLTUwvMmpLeXNEeGFDWG9QNFNBZTcrRWdIdW9KZWdBZXYrRlFIci9ONlhsNWYrZmtzQjEwUUFBZ0NZLyt3R09nV3dBQjRBSlFDaXNpRW1KeEVTT2JBaEVMQVEwQUN3QUVWWXNCVXZHN0VWSHo1WnNBQkZXTEFaTHh1eEdScytXYkFBUlZpd0hTOGJzUjBiUGxtd0FFVllzQW92RzdFS0R6NVpzQUJGV0xBVEx4dXhFdzgrV2JBZEVMSUFBUW9yV0NIWUcvUlpzQW9Rc2dVQkNpdFlJZGdiOUZtd0FCQ3dEZEN3RHRDeUlCTVZFUkk1c0NBdnNoRUJDaXRZSWRnYjlGbXdIUkN3SE5Dd0hDK3dGUkN5SkFFS0sxZ2gyQnYwV1RBeEFTTVJGQll6TWpjVkJpTWdFUkVqQmdZSEl4RWpFU0V5RmhjekVUTVJNd0V6TWhFMEp5TUdNNzh5UHlZdlUwMys2SGdjOU1xZStnR00xUDBZZGZLLysxK1M5T2FnQTRiOXBEMDRDcndYQVRVQ1phMjdBLzNsQmJERHN3RUgvdm4rclFFQTl3WUEvLzhBbFAvc0NEd0ZzQUFtQURZQUFBQUhBRmNFY2dBQUFBY0FOUUFBQjFNRnNBQWZBQ01BSndBckFDNEFNUUEwQU91eU1qVTJFUkk1c0RJUXNCN1FzRElRc0NMUXNESVFzQ2ZRc0RJUXNDclFzRElRc0M3UXNESVFzRERRQUxBQVJWaXdBaThic1FJZlBsbXdBRVZZc0I4dkc3RWZIejVac0FCRldMQWJMeHV4R3g4K1diQUFSVml3RUM4YnNSQVBQbG13QUVWWXNBMHZHN0VORHo1WnNna1FBaEVTT2JBSkw3QUYwTEFGTDdJUEJRRmRzQUhRc0FVUXNnY0RDaXRZSWRnYjlGbXdDUkN5Q2dNS0sxZ2gyQnYwV2JBdDBMQU8wTEF3MExBUzBMQUpFTEFsMExBcDBMQWgwTEFWMExBSEVMQW0wTEFxMExBaTBMQVcwTEFCRUxBZDBMQVowTEFRRUxBdjBMQXMwTEFmRUxBeTBMQUJFTEEwMERBeEFTRVRNd016RlNNSE14VWhBeU1ESVFNakF5RTFNeWNqTlRNRE14TWhFek1CTXpjakJUTTNJd1V6SnlNQk55TUZOeU1CQnpNRW1BRXhWL3RpbXI4bDVQNzNmdk9RL3ZLUzhuLysvZDRsdVpSaSsxZ0JOR3pVL2M2Zkt1b0REcDhoNmY2bXVpcGxBYkFtVnYweUwxVUJwd2dRQkFjQnFmNVhvS0tnL2RzQ0pmM2JBaVdnb3FBQnFmNVhBYW45RmFLaW9xS2kvZ0MrdWJrQ0FSOEFBZ0I4QUFBR0VBUTZBQTBBR3dCcnNnZ2NIUkVTT2JBSUVMQVEwQUN3QUVWWXNBQXZHN0VBR3o1WnNBQkZXTEFXTHh1eEZocytXYkFBUlZpd0N5OGJzUXNQUGxtd0FFVllzQTR2RzdFT0R6NVpzaEVCQ2l0WUlkZ2I5Rm13QUJDeUNRRUtLMWdoMkJ2MFdiSUZFUWtSRWpteUVBa1JFUkk1TURFQk1oWVhFU01STkNZaklSRWpFUUVSTXhFaE1qWTNFVE1SQmdZakF3eTdyZ0x6V21uK3J2TUJtZk1CVUdwWkFmUUI3OXdFT3NETC9yVUJRbTFqL0lvRU92dkdBdGI5N1dGb0FxNzlWN3pWQUFFQVh2L3RCREFGd3dBakFJcXlGU1FsRVJJNUFMQUFSVml3Rmk4YnNSWWZQbG13QUVWWXNBa3ZHN0VKRHo1WnNpTVdDUkVTT2JBakw3SUFBZ29yV0NIWUcvUlpzQWtRc2dRQkNpdFlJZGdiOUZtd0FCQ3dETkN3SXhDd0R0Q3dJeEN3RTlDd0V5KzJEeE1mRXk4VEExMnlFQUlLSzFnaDJCdjBXYkFXRUxJYkFRb3JXQ0hZRy9SWnNCTVFzQjdRc0JBUXNDRFFNREVCSVJZV016STNGd1lqSUFBREl6VXpOU00xTXpZQU16SVhCeVlqSWdZSElSVWhGU0VEYXY2Y0JxT1libDhjZUlEL0FQN2FDS3lzckswTkFTejlhb1VjWm1XWG9na0JZLzZjQVdRQ0Q2NnNJY3dkQVNBQkFvMkFqZjhCR3gvTklxeWtqWUFBQUFRQUlRQUFCZFFGc0FBYUFCOEFKQUFwQU9PeURDb3JFUkk1c0F3UXNCelFzQXdRc0NQUXNBd1FzQ2pRQUxBQVJWaXdDeThic1FzZlBsbXdBRVZZc0FFdkc3RUJEejVac0FzUXNpUUJDaXRZSWRnYjlGbXdJTkN3SUM5QUV3QWdFQ0FnSURBZ1FDQlFJR0FnY0NDQUlBbGRzQjdRc0I0dnRyQWV3QjdRSGdOZFFBc0FIaEFlSUI0d0hrQWVCVjJ5SmdNS0sxZ2gyQnYwV2JBbjBMQW5MMEFQTUNkQUoxQW5ZQ2R3SjRBbmtDY0hYYklBQVFvcldDSFlHL1Jac0NZUXNBUFFzQjRRc0FiUXNDQVFzQS9Rc2hJRENpdFlJZGdiOUZtd0hOQ3dIZEN3QjlDd0lCQ3dDdEN3SGhDd0ZOQ3dKaEN3RjlBd01RRVJJeEVqTlRNMUl6VXpFU0V5QkJjekZTTVhCek1WSXdZR0l3RW5JUlVoSlNFbUp5RUJJUlVoTWdIVy9iaTR1TGdDTGEwQkFUemt2UUlCdk9FMityMEJGUVA5dmdKRC9iMEI4RVp5L3NnQjlQNE1BVEY3QWgzOTR3TWZvRWlnQVFtSWdhQW1JcUI5aFFIQ0tFam9Pd0wrT3pjQUFRQW9BQUFFREFXd0FCb0FiYklXR3h3UkVqa0FzQUJGV0xBWkx4dXhHUjgrV2JBQVJWaXdEQzhic1F3UFBsbXdHUkN5R0FFS0sxZ2gyQnYwV2JBQjBMQVpFTEFVMExBVUw3QUQwTEFVRUxJVEJ3b3JXQ0hZRy9SWnNBYlFzQlFRc0E3UXNBNHZzZ2tIQ2l0WUlkZ2I5Rm15RFFrT0VSSTVNREVCSXhZWE13Y2pCZ1lIQVJVaEFTY3pNalkzSVRjaEppTWhOeUVEMmRvekQ4b3lseGJjeVFIUy91SCtBd0g5Y0lNVy9lWXpBZU14MlA3ek5nT3VCUGxMWmJhbHJ4SDkzdzBDVVpsZFRMYWJ6QUFBQVFBaC8rd0VVUVd3QUI0QWtiSWJIeUFSRWprQXNBQkZXTEFSTHh1eEVSOCtXYkFBUlZpd0JTOGJzUVVQUGxteUV4RUZFUkk1c0JNdnNCZlFzQmN2c2dBWEFWMnlHQUVLSzFnaDJCdjBXYkFaMExBSTBMQUowTEFYRUxBVzBMQUwwTEFLMExBVEVMSVVBUW9yV0NIWUcvUlpzQlhRc0F6UXNBM1FzQk1Rc0JMUXNBL1FzQTdRc0FVUXNob0JDaXRZSWRnYjlGbXlIZ1VSRVJJNU1ERUJGUVlDQkNNaUp4RUhOVGMxQnpVM0VUTVZOeFVIRlRjVkJ4RTJOalUxQkZFQ2x2N3RzbXVNM056YzNQemg0ZUhocXJJQy8xblMvc09yRkFKZFY4ZFhpVmZJVndFNzExcklXb2xheUZuOSt3TDgrRTBBQUFFQVR3QUFCUThFT2dBWEFGeXlBQmdaRVJJNUFMQUFSVml3Rnk4YnNSY2JQbG13QUVWWXNCQXZHN0VRRHo1WnNBQkZXTEFMTHh1eEN3OCtXYkFBUlZpd0JTOGJzUVVQUGxteUZRc1hFUkk1c0JVdnNBRFFzQlVRc2d3QkNpdFlJZGdiOUZtd0NkQXdNUUVXQUJNVkl6VW1KaWNSSXhFR0JoVVZJelVTQURjMU13TW80QUVEQlBNQmdYTHpjWUx6QXdFRTMvTURhaW4ra3Y3c3Y3akY3eXI5YWdLVkt2UEhzYm9CRkFGd0s5RUFBZ0FvQUFBRk13V3dBQllBSHdCNHNoZ2dJUkVTT2JBWUVMQU4wQUN3QUVWWXNBd3ZHN0VNSHo1WnNBQkZXTEFDTHh1eEFnOCtXYklHQWd3UkVqbXdCaSt5QlFFS0sxZ2gyQnYwV2JBQjBMQUdFTEFLMExBS0w3SVBDZ0Zkc2drQkNpdFlJZGdiOUZtd0ZOQ3dCaEN3RmRDd0NoQ3dGOUN3REJDeUh3RUtLMWdoMkJ2MFdUQXhKU0VWSXpVak5UTTFJelV6RVNFeUJCVVVCQWNoRlNFQklUSTJOVFFtSnlFRE0vNisvTTNOemMwQ0xmRUJJUDd1OVA3RUFVTCt2Z0V0aUpDTmZQN0U1K2ZueTJ2TEFzajcwTlR4QTJzQk5uNTljSTREQUFRQWNQL3NCWWtGeFFBWkFDWUFOQUE0QUpTeUdqazZFUkk1c0JvUXNBRFFzQm9Rc0NmUXNCb1FzRGZRQUxBMUw3QTNMN0FBUlZpd0NTOGJzUWtmUGxtd0FFVllzQ1F2RzdFa0R6NVpzQWtRc0FQUXNBTXZzZzBKQXhFU09iQUpFTElRQWdvcldDSFlHL1Jac0FNUXNoWUNDaXRZSWRnYjlGbXlHUU1KRVJJNXNDUVFzQjNRc0IwdnNDUVFzaW9DQ2l0WUlkZ2I5Rm13SFJDeU1RSUtLMWdoMkJ2MFdUQXhBUlFHSUNZMU5UUTJNeklXRlNNMEppTWlCaFVWRkJZeU5qVUJORFl6TWhZVkZSUUdJQ1kxRnhRV016STJOVFUwSmlNaUJoVUZKd0VYQXJHZi93Q2lub0tBb2FwQk5qUkNRMnBBQVJpdWg0aXRwLzdvcTZwUFBrQkpUajArVGYzN2ZnTEhmZ1FsYzVLbmlrZUNxNVJ6TlVCVVNrcEZWVU14L1VDR3BxYU5SNEtwcDRrRlJGZFRTMHRHVkZSSzlFZ0Vja2dBQWdCTS8rc0RrQVg1QUJjQUlRQmFzZ0VpSXhFU09iQUJFTEFZMEFDd0RDK3dBRVZZc0FBdkc3RUFEejVac2dZTUFCRVNPYkFHTDdJRkJ3b3JXQ0hZRy9SWnNCUFFzQUFRc2hjQkNpdFlJZGdiOUZtd0JoQ3dHTkN3REJDeUh3RUtLMWdoMkJ2MFdUQXhCU0ltTlFZak5USTNFVFkyTXpJV0ZSVVVBZ2NWRkJZekF6WTJOVFUwSmlNaUJ3TGI0ZTFoWUdGZ0E3S2FpS3pYc21oczFFMVhLeUJXQXhYcjVSTzdHQUhwdjlhMG15YXQvcWxuVFk1NkFrUkx6R1lwUDBDeUFBQUVBSkFBQUFmQ0JjQUFBd0FQQUIwQUp3Q21zaDRvS1JFU09iQWVFTEFCMExBZUVMQUUwTEFlRUxBUTBBQ3dBRVZZc0NZdkc3RW1IejVac0FCRldMQWtMeHV4SkI4K1diQUFSVml3Qmk4YnNRWWZQbG13QUVWWXNDRXZHN0VoRHo1WnNBQkZXTEFmTHh1eEh3OCtXYkFHRUxBTjBMQU5MN0FDMExBQ0w3SUFBZ0Zkc2dFQ0NpdFlJZGdiOUZtd0RSQ3lFd0lLSzFnaDJCdjBXYkFHRUxJYUFnb3JXQ0hZRy9SWnNpQWtJUkVTT2JJbEh5WVJFamt3TVFFaE5TRUJORFlnRmhVVkZBWWdKalVYRkJZek1qWTFOVFFtSXlJR0ZRRWhBUkVqRVNFQkVUTUhsLzJmQW1IOWRyNEJPTCs2L3NLOXIxeFJUMXRjVUU5Yy9zZis5UDROOUFFTEFmYnlBWnlWQWkrZndjQ21UcHpDd3FJR1lHeHNZMUZmYlcxaSs2TUVDdnYyQmJENzh3UU5BQUFDQUcwRGxBUlhCYkFBREFBVUFHMEFzQUJGV0xBR0x4dXhCaDgrV2JBQVJWaXdDUzhic1FrZlBsbXdBRVZZc0JNdkc3RVRIejVac2dFVkJoRVNPYkFCTDdJQUNRRVJFam15QXdFR0VSSTVzQVRRc2dnQkNSRVNPYkFCRUxBTDBMQUdFTEVOQ2l0WTJCdmNXYkFCRUxBUDBMQU5FTEFSMExBUzBEQXhBUU1qQXhFakVUTVRFek1SSXdFakVTTVJJelVoQStoOFBueHZpWUdGaFcvK0VZcDFqUUdNQlFuK2l3RjAvb3dDSFA2REFYMzk1QUc5L2tVQnUxOEFBQUlBbHYvc0JKRUVUZ0FWQUJ3QVlySUNIUjRSRWptd0FoQ3dGdEFBc0FCRldMQUtMeHV4Q2hzK1diQUFSVml3QWk4YnNRSVBQbG15R1FvQ0VSSTVzQmt2c2c4S0NpdFlJZGdiOUZtd0FoQ3lFd3dLSzFnaDJCdjBXYklWQ2dJUkVqbXdDaEN5RmdvS0sxZ2gyQnYwV1RBeEpRWWpJaVlDTlRRU05qTXlGaFlYRlNFUkZqTXlOd0VpQnhFaEVTWUVGTGU3a2ZTSGtQaUVoZU9FQS8wQWQ1ckVyUDZRbDNvQ0hITmVjcDBCQVpPUEFRT2ZpL09RUHY2NGJub0RLbnIrNndFZWNmLy9BRm4vOVFYTEJaa0FKd0hWLzlrQ2hnQW5BWHdBK3dBQUFRY0IzQU1oQUFBQUVBQ3dBRVZZc0FZdkc3RUdIejVaTURILy93QlUvL1VHYUFXMEFDY0Ixd0FkQXBRQUp3RjhBYWdBQUFFSEFkd0R2Z0FBQUJBQXNBQkZXTEFOTHh1eERSOCtXVEF4Ly84QVcvLzFCbHdGcUFBbkFka0FEQUtUQUNjQmZBR01BQUFCQndIY0E3SUFBQUFRQUxBQVJWaXdBUzhic1FFZlBsa3dNZi8vQUZqLzlRWWFCYU1BSndIYkFDSUNqZ0FuQVh3Qk13QUFBUWNCM0FOd0FBQUFFQUN3QUVWWXNBVXZHN0VGSHo1Wk1ERUFBZ0JpLytzRVF3WDFBQmtBSmdCYnNoTW5LQkVTT2JBVEVMQWcwQUN3Q3krd0FFVllzQk12RzdFVER6NVpzZ0FMRXhFU09iQUFMN0lDQ3hNUkVqbXdDeEN5QlFFS0sxZ2gyQnYwV2JBQUVMSWFBUW9yV0NIWUcvUlpzQk1Rc2lBQkNpdFlJZGdiOUZrd01RRXlGeVltSXlJSEp6YzJNeUFBRVJVVUFnWWpJZ0ExTlRRU0Z5SUdGUlFXTXpJMk5UVW1KZ0k0cm5jYXhZUjhpeDA4Ym84QkRRRW5ldU9VNC83ei92UjdoWVI2ZVlVV2l3UUVmY0xsTmJjWkxQNU8vbkkxd2Y3VHB3RWs5dzNmQVJMQ3A2U2FzTkRGVlV4ZkFBRUFwdjhiQlBRRnNBQUhBQ2NBc0FRdnNBQkZXTEFHTHh1eEJoOCtXYkFFRUxBQjBMQUdFTElDQVFvcldDSFlHL1JaTURFRkl4RWhFU01SSVFUMDlQMlo4d1JPNVFYVStpd0dsUUFCQUVEKzh3VEJCYkFBREFBMUFMQURMN0FBUlZpd0NDOGJzUWdmUGxtd0F4Q3lBZ0VLSzFnaDJCdjBXYkFGMExBSUVMSUtBUW9yV0NIWUcvUlpzQWZRTURFQkFTRVZJVFVCQVRVaEZTRUJBNC85N2dORSszOENULzJ4QkVmODlnSVNBa1A5YzhPWEFzZ0N4cGpEL1hNQUFRQ2VBbTBEN3dNeEFBTUFFUUN3QWkreUFRRUtLMWdoMkJ2MFdUQXhBU0UxSVFQdi9LOERVUUp0eEFBQkFEc0FBQVNTQmJBQUNBQThzZ0FKQ2hFU09RQ3dCeSt3QUVWWXNBRXZHN0VCSHo1WnNBQkZXTEFETHh1eEF3OCtXYklBQVFNUkVqbXdCeEN5QmdFS0sxZ2gyQnYwV1RBeEFRRXpBU01ESXpVaEFrRUJlTm4rRjhYWTBRRm5BU3NFaGZwUUFrSEZBQU1BWHYvc0I5OEVUZ0FhQUNvQU9RQnlzZ2M2T3hFU09iQUhFTEFpMExBSEVMQXkwQUN3QUVWWXNBUXZHN0VFRHo1WnNBQkZXTEFKTHh1eENROCtXYkFFRUxBVzBMQVdMN0lIRmdRUkVqbXdFdEN3RWkreUZCWUVFUkk1c0JZUXNoNEJDaXRZSWRnYjlGbXdCQkN5SndFS0sxZ2gyQnYwV2JBdTBMQWVFTEEzMERBeEFSUUdCaU1pSmljQ0lTSW1KalUxTkJJMk15QVRFaUV5RmhZWEJ6UW1JeUlIQmdjVkZoY1dNekkyTlFVVUZqTXlOamMzTlNZbkppTWlCZ2ZmZ09hUWplbFZxdjdmaitXQmdlU09BU1NwcVFFa2p1U0JBZStTZXFSdUtBOFBMbXVmZVpYNlhaSjdhYXdyQnc4b2JxUjVrZ0lSbVAyUW82Zit0bzcvbVJXWUFRQ1AvcmtCUjQvOWx3U2F4c2xLUWlSRlZjUERvZ1dkdzdPUUdpUkNTc25EQUFBQi82LytTd0tvQmhVQUZRQTlzZ0lXRnhFU09RQ3dBRVZZc0E0dkc3RU9JVDVac0FCRldMQURMeHV4QXhFK1diSUlBUW9yV0NIWUcvUlpzQTRRc2hNQkNpdFlJZGdiOUZrd01RVVVCaU1pSnpjV016STNFVFEyTXpJWEJ5WWpJaFVCa0xhcVFqOFNMQ1dLQXNDeVAxa1pLaktqVDdDMkU3ME5uUVQwczhNVnVRdTRBQUFDQUdVQkFRUVZBL29BRlFBckFIaXlFQ3d0RVJJNXNCQVFzQnpRQUxBWkw3QUQwTEFETDdBSTBMQUlMN0FERUxBSzBMQUlFTElOQVFvcldDSFlHL1Jac0FNUXNoSUJDaXRZSWRnYjlGbXdEUkN3RmRDd0dSQ3dIdEN3SGkrd0dSQ3dJTkN3SGhDeUl3RUtLMWdoMkJ2MFdiQVpFTElvQVFvcldDSFlHL1Jac0NNUXNDdlFNREVUTmpZek5oY1hGak15TnhVR0l5SW5KeVlISWdZSEZUWTJNellYRnhZek1qY1ZCaU1pSnljbUJ5SUdCMlV3aEVKU1RKeEdVWVJsWm45UlJwaFBWRUtITURDQVFsUlBtRVpSaDJWbWcxRkduRXhTUW9Rd0E0NHlPQUlpVGlCKzJXb2dUQ1FDUWp6TE1qZ0NKRXdnZnRscUlFNGlBa0k4QUFFQWtRQ0FBKzhFd3dBVEFEY0FzQk12c2dBQkNpdFlJZGdiOUZtd0JOQ3dFeEN3QjlDd0V4Q3dEOUN3RHkreUVBRUtLMWdoMkJ2MFdiQUkwTEFQRUxBTDBEQXhBU0VISnpjak5TRTNJVFVoTnhjSE14VWhCeUVENy8zaWdHMWRzQUVoZnY1aEFoQ0dibU85L3RGOUFhd0JaT1ErcHNuZnl1MCtyOHJmLy84QVBBQVRBNDBFYXdCbkFDQUFBQUNMUUFBNW1nQUhBWmYvbnYybS8vOEFnQUFUQStBRWF3Qm5BQ0lBQUFDTFFBQTVtZ0FIQVpmLzR2Mm1BQUlBSkFBQUErc0ZzQUFGQUFrQU9MSUdDZ3NSRWptd0JoQ3dCTkFBc0FCRldMQUFMeHV4QUI4K1diQUFSVml3QXk4YnNRTVBQbG15QmdBREVSSTVzZ2dBQXhFU09UQXhBVE1CQVNNQkFRTVRFd0dreEFHRC9vREYvbjRCNGUzeTdBV3cvU2Y5S1FMWEFkYitLdjRwQWRjQS8vOEFvUUNyQWJ3RkJ3QW5BQklBR2dDMkFRY0FFZ0FhQkFjQUNRQ3dBQyt3RWR3d01RQUFBZ0JqQW44Q1BnUTVBQU1BQndBcXNnQUlDUkVTT2JBRjBBQ3dBaSt3QUVWWXNBWXZHN0VHR3o1WnNnQUlBaEVTT2JBQUw3QUUwREF4QVNNUk13RWpFVE1CQUoyZEFUNmRuUUovQWJyK1JnRzZBQUVBUmY5bkFWb0JCZ0FJQUF3QXNBUXZzQURRc0FBdk1ERVhKelkzTlRNVkJnYkZnRWtEeVFGVG1VMXplMlJQWGJyLy93QXRBQUFGR2dZVkFDWUFTZ0FBQUFjQVNnSkVBQUFBQWdBWUFBQUVGd1lWQUJjQUd3QnpzZ2tjSFJFU09iQUpFTEFaMEFDd0FFVllzQWt2RzdFSklUNVpzQUJGV0xBRUx4dXhCQnMrV2JBQVJWaXdHaThic1JvYlBsbXdBRVZZc0Jjdkc3RVhEejVac0FCRldMQVpMeHV4R1E4K1diQUVFTEFUMExJV0FRb3JXQ0hZRy9SWnNBSFFzQWtRc2c4QkNpdFlJZGdiOUZrd01UTVJJelV6TlQ0Q016SVdGd2NtSXlJR0ZSVXpGU01SSVNNUk03MmxwUUZxd29oUWswOGxpbkp2Wk5YVkFtZno4d09HdEVwL3Rsd2lHc2t3WVdGRXRQeDZCRG9BQVFBdEFBQUVMQVlWQUJZQVk3SVNGeGdSRWprQXNBQkZXTEFTTHh1eEVpRStXYkFBUlZpd0RpOGJzUTRiUGxtd0FFVllzQWt2RzdFSkR6NVpzQUJGV0xBV0x4dXhGZzgrV2JBU0VMSUNBUW9yV0NIWUcvUlpzQTRRc0FYUXNBNFFzZ3NCQ2l0WUlkZ2I5Rm13Q05Bd01RRW1JeUlWRlRNVkl4RWpFU00xTXpVMk5qTXlCUkVqQXpsbVNzVGMzUE9scFFIWHhIb0JSUE1GUHc2NFc3VDhlZ09HdEdHM3d6RDZHd0FDQUMwQUFBYVRCaFVBS0FBc0FMV3lGQzB1RVJJNXNCUVFzQ3JRQUxBQVJWaXdDQzhic1FnaFBsbXdBRVZZc0JZdkc3RVdJVDVac0FCRldMQXJMeHV4S3hzK1diQUFSVml3SVM4YnNTRWJQbG13QUVWWXNCRXZHN0VSR3o1WnNBQkZXTEFFTHh1eEJCcytXYkFBUlZpd0tDOGJzU2dQUGxtd0FFVllzQ1V2RzdFbER6NVpzQUJGV0xBcUx4dXhLZzgrV2JBaEVMSWlBUW9yV0NIWUcvUlpzQ2JRc0FIUXNBZ1FzZzBCQ2l0WUlkZ2I5Rm13RmhDeUhBRUtLMWdoMkJ2MFdUQXhNeEVqTlRNMU5EWXpNaGNISmlNaUZSVWhOVDRDTXpJV0Z3Y21JeUlHRlJVekZTTVJJeEVoRVNFakVUUFNwYVhJdEVCSUJpZzFyZ0YwQVdyQ2lGQ1RUeWFJYzI5azFkWHovb3dFenZQekE0YTBZN1RFRXI0SXMyQktmN1pjSWhySk1HRmhSTFQ4ZWdPRy9Ib0VPZ0FCQUMwQUFBYVRCaFVBSndDbHNoTW9LUkVTT1FDd0FFVllzQlV2RzdFVklUNVpzQUJGV0xBSUx4dXhDQ0UrV2JBQVJWaXdCQzhic1FRYlBsbXdBRVZZc0JBdkc3RVFHejVac0FCRldMQWZMeHV4SHhzK1diQUFSVml3Snk4YnNTY1BQbG13QUVWWXNDUXZHN0VrRHo1WnNBQkZXTEFaTHh1eEdROCtXYkFFRUxJQkFRb3JXQ0hZRy9SWnNBZ1FzZzBCQ2l0WUlkZ2I5Rm13RlJDeUhBRUtLMWdoMkJ2MFdiQUJFTEFtMExBaTBEQXhNeEVqTlRNMU5EWXpNaGNISmlNaUZSVWhOVFkyTXpJRkVTTVJKaU1pRlJVekZTTVJJeEVoRWRLbHBjaTBRRWdHS0RXdUFYUUIxOFI2QVVUelprckUzTnp6L293RGhyUmp0TVFTdmdpellHRzN3ekQ2R3dVL0RyaGJ0UHg2QTRiOGVnQUJBQzMvN0FUUkJoVUFKQUNGc2hNbEpoRVNPUUN3QUVWWXNBOHZHN0VQR3o1WnNBQkZXTEFhTHh1eEdocytXYkFBUlZpd0l5OGJzU01iUGxtd0FFVllzQW92RzdFS0R6NVpzQ01Rc2dBSENpdFlJZGdiOUZtd0NoQ3lCUUVLSzFnaDJCdjBXYkFBRUxBTjBMQU8wTEFqRUxJZkFRb3JXQ0hZRy9SWnNoTUJDaXRZSWRnYjlGbXdEaEN3R05Dd0dkQXdNUUVqRVJRV016STNGUVlqSUJFUkl6VXpOU1lqSWhVUkl4RWpOVE0xTkRZek1oWVhFVE1FeTc4eFB5WXZVMDMrNkxLeVJXeWo4Nldsd3JCbDhYSy9BNGI5cEQ0M0Nyd1hBVFVDWmJUNElMbjdad09HdEdLMnd6Z3gvbzRBQVFCTC8rd0dnQVlZQUV3QXA3SkdUVTRSRWprQXNBQkZXTEJITHh1eFJ5RStXYkFBUlZpd1FDOGJzVUFiUGxtd0FFVllzQTh2RzdFUEd6NVpzQUJGV0xCTEx4dXhTeHMrV2JBQVJWaXdDUzhic1FrUFBsbXdBRVZZc0N3dkc3RXNEejVac0VzUXNnQUhDaXRZSWRnYjlGbXdDUkN5QkFFS0sxZ2gyQnYwV2JBQUVMQU4wTEFPMExCSEVMSVVCd29yV0NIWUcvUlpzRUFRc2lBSENpdFlJZGdiOUZtd0xCQ3lOQWNLSzFnaDJCdjBXVEF4QVNNUkZETXlOeFVHSXlJbUp4RWpOVE0xTkNZaklnWVZGQjRDRlNNMEppTWlCaFVVRmdRV0ZoVVVCaU1pSmlZMU14WVdNekkyTlRRbUppY21OVFEyTXpJWEpqVTBOak15RmhVVk13WjV2M0VtTDFOTmg1QUJyS3hnV0U5WUhTRWM5R2hXVUdWZUFSNmpUL0xFaGRCMDdBVjRZMkJrYS9oVHR1eTJXMDB0MmE3SjNyOERodjIzaUFxOEY2cWlBazYwV0dKcFZFVTZhV1o1VFVaZFNqNDRQajlYZWxlU3RXQ29ZVlpkU1R0QlJEUW9XS2VNdkJkc1Q0R2x5c1ZQQUJZQVdmNXlCK3dGcmdBTkFCb0FLQUEzQUQwQVF3QkpBRThBVmdCYUFGNEFZZ0JtQUdvQWJnQjJBSG9BZmdDQ0FJWUFpZ0NPQWNDeUVJK1FFUkk1c0JBUXNBRFFzQkFRc0J2UXNCQVFzRERRc0JBUXNEelFzQkFRc0Q3UXNCQVFzRWJRc0JBUXNFclFzQkFRc0ZEUXNCQVFzRmZRc0JBUXNGdlFzQkFRc0dIUXNCQVFzR1BRc0JBUXNHZlFzQkFRc0czUXNCQVFzSERRc0JBUXNIZlFzQkFRc0h2UXNCQVFzSC9Rc0JBUXNJVFFzQkFRc0lqUXNCQVFzSXpRQUxBOUw3QUFSVml3Umk4YnNVWWZQbG15ZlVRREs3SjhlUU1yc25pQkF5dXlnRGtESzdJS1JqMFJFam13Q2krd0E5Q3dBeSt3RHRDd0RpK3dDaEN3RDlDd0R5K3lidzRQRVJJNWZMQnZMeGl5VUFzS0sxZ2gyQnYwV2JJVlVHOFJFam13Q2hDeUhnc0tLMWdoMkJ2MFdiQURFTElsQ3dvcldDSFlHL1Jac0E4UXNDblFzQ2t2c0E0UXNDN1FzQzR2c2pRTENpdFlJZGdiOUZtd1BSQ3dhOUN3WjlDd1k5Q3dQdEN5UHd3S0sxZ2gyQnYwV2JCbDBMQnAwTEJ0MExBODBMQTVFTEJCMExCR0VMSkhEQW9yV0NIWUcvUlpzRnZRc0ZmUXNFclFzRVlRc0dEUXNGelFzRmpRc0V2UXNFUVFzRTdRc0E0UXNsRUxDaXRZSWRnYjlGbXdSeEN3WDlDd0R4Q3lkZ3NLSzFnaDJCdjBXYkI0RUxDRTBMQjVFTENGMExCOEVMQ0kwTEI5RUxDSjBMQ0FFTENNMExDQkVMQ04wREF4QVJRR0l5SW1KelUwTmpNeUZoY1RFVE15RmhVVUJ4WVdGUlFqQVRRbUl5SUdGUlVVRmpNeU5qVUJNeEVVQmlNaUpqVXpGRE15TmpVQkVUTVZNeFVoTlRNMU14RUJFU0VWSXhVbE5TRVJJelVCRlRNeU5UUW5FelVoRlNFMUlSVWhOU0VWQVRVaEZTRTFJUlVoTlNFVkV6TXlOVFFtSXlNQkl6VXpOU00xTXhFak5UTWxJelV6TlNNMU14RWpOVE1ETjRGa1pvQUNmbWhsZ0FKRHZHSnlWREkwMFA2UFNrRkFTa3BDUUVrRHVseHBVbGh0WFdncE52bkVjY1FGS01kditHMEJOY1FGN0FFMmIveGNmbWRpeXdFVy9Wc0JGZjFjQVJRQ0NnRVcvVnNCRmYxY0FSUzhYWFk2UEYzODhYRnhjWEZ4Y1FjaWIyOXZiMjl2QWRSaWVYaGVkVjk4ZUY3K3N3SWxTVTFVSUExR0xac0JTRVZPVGtWd1JVNU9SUUZQL29aT1hWRlRXellzL01rQk84cHhjY3IreFFZZkFSMTBxYWwwL3VPcC9MYXBVMUlFQTBwMGRIUjBkSFQ1T0hGeGNYRnhjUVBFVUNrZS90UDhmdnI4RmZsKy9INzYvQlg1QUFVQVhQM1ZCOWNJY3dBREFCd0FJQUFrQUNnQVRBQ3dJUyt3SlMrd0FOQ3dBQyt3SVJDd0F0Q3dBaSt5SUFJQUVSSTVzQ0F2c0IzUXNCMHZzQVRRc0FRdnNnMEFBaEVTT2JBTkw3QVUwTEFVTDdJSEJCUVJFam15R1JRRUVSSTVNREVKQXdVME5qYzJOalUwSmlNaUJnY3pOall6TWhZVkZBY0dCaFVYSXhVekF6TVZJd016RlNNRUdBTy8vRUg4UkFRUEhpUktYS2VWa0tBQ3l3STZLems0WFZzdnlzcktTd1FFQWdRRUJsTDhNZnd4QTgveE9qb1lKNGRLZ0plTGZ6TTBRRFJmUEVGY1RGdXEvVXdFQ3A0RUFBRUFPZ0FBQStvRnNBQUdBRElBc0FCRldMQUZMeHV4QlI4K1diQUFSVml3QVM4YnNRRVBQbG13QlJDeUF3RUtLMWdoMkJ2MFdiSUFBd1VSRWprd01RRUJJd0VoTlNFRDZ2M1U5QUlzL1VRRHNBVXArdGNFN2NNQUFBSUFULzVXQkJjRVRnQWJBQ1lBZzdJZkp5Z1JFam13SHhDd0ROQUFzQUJGV0xBRUx4dXhCQnMrV2JBQVJWaXdCeThic1FjYlBsbXdBRVZZc0F3dkc3RU1FVDVac0FCRldMQVlMeHV4R0E4K1diSUdCQmdSRWptd0RCQ3lFZ0VLSzFnaDJCdjBXYklRRWhnUkVqbXlGZ1FZRVJJNXNCZ1FzaDhCQ2l0WUlkZ2I5Rm13QkJDeUpBRUtLMWdoMkJ2MFdUQXhFelEyTmpNeUZ6Y3pFUlFBSXlJbUp6Y1dNekkyTlRVR0l5SW1KamNVRmpNeU54RW1JeUlHVDIzTmhiOXBFTkgrKys5VnVVazFncENPZzJxdWY4eHk4NDk0bFVaRmxIeU5BaWFnKzQyR2N2d2M5djcyTHkyd1RKeWJGbmVNL0oyZndJRUIyWHZCQUFBQi83RCtTd0dPQU0wQURRQXVzZ01PRHhFU09RQ3dEaSt3QUVWWXNBVXZHN0VGRVQ1WnNnb0JDaXRZSWRnYjlGbXdEaEN3RGRDd0RTOHdNU1VSRkFjR0l5SW5OeFl6TWpVUkFZNXdXNVZHT0E0a1BYek4vdmZJWWs4UnhneXlBUVVBQUFFQVhQNmFBVThBdFFBREFCSUFzQVF2c0FMUXNBSXZzQUhRc0FFdk1ERUJJeEV6QVUvejgvNmFBaHNBQWdCMUJOQUM5d2JjQUF3QUlBQjdBTEFETDdBRzBMQUdMMEFMRHdZZkJpOEdQd1pQQmdWZHNBTVFzZ2tHQ2l0WUlkZ2I5Rm13QmhDd0ROQ3dEQyt3QmhDd0VOQ3dFQyt3RTlDd0V5OUFEUThUSHhNdkV6OFRUeE5mRXdaZHNCQVFzQmJRc0JZdnNCTVFzaG9JQ2l0WUlkZ2I5Rm13RUJDeUhRZ0tLMWdoMkJ2MFdiQWFFTEFnMERBeEFSUUdJQ1kxTXhRV016STJOUk1VQmlNaUppTWlCaFVuTkRZek1oWXpNalkxQXZldy90NndyMHhHU0VxUVgwYzRnU29mS21oaFJTK0lMQjRzQmJCbGUzdGxOVG84TXdFUFMydEhNaVViVFd4SE1pUUFBZ0IxQk5VQzlnY0lBQTBBSEFCWkFMQURMN0FIMExBSEwwQUxEd2NmQnk4SFB3ZFBCd1Zkc0FNUXNnb0dDaXRZSWRnYjlGbXdCeEN3RGRDd0RTK3dCeEN3RHRDd0RpK3dGTkN3RkMreUR3NFVFUkk1c2hVTUNpdFlJZGdiOUZteUd3NFBFUkk1TURFQkZBWWpJaVkxTXhRV016STJOU2NuTmpZMU5DTTNNaFlWRkFZSEJ3TDJyNUdTcjYxUVJFVk4zd2hJUDVJSG5wOU9SQUVGc0dKNWVXSTBPVG96R1hZQ0Z4bzJZRkJFTHpvSU9nQUFBZ0IxQk5NREFBWitBQTBBRVFCZEFMQURMN0FHMExBR0wwQUxEd1lmQmk4R1B3WlBCZ1Zkc0FNUXNnb0dDaXRZSWRnYjlGbXdCaEN3RGRDd0RTK3dCaEN3RU5Dd0VDK3dEdEN3RGk5QUR3OE9IdzR2RGo4T1R3NWZEbThPQjEyd0VCQ3dFZEFac0JFdkdEQXhBUlFHSXlJbU5UTVVGak15TmpVbk13Y2pBd0N2bHBXeHNVeEpSMHhsdHFtQUJiQmhmSHBqTkR3OE5NN0FBQUlBZFFUbkExd0cwUUFHQUJvQWpRQ3dBUyt3QTlDd0F5K3dCTkFac0FRdkdMQUEwQm13QUM4WXNBTVFzQVhRc0FVdlFBa1BCUjhGTHdVL0JRUmRzZ0lGQXhFU09iQUswTEFLTDBBSlB3cFBDbDhLYndvRVhiQU4wTEFOTDBBUER3MGZEUzhOUHcxUERWOE5idzBIWGJBS0VMQVEwTEFRTDdBTkVMSVVCZ29yV0NIWUcvUlpzQW9Rc2hjR0NpdFlJZGdiOUZtd0ZCQ3dHdEF3TVFFakp3Y2pKVE0zRkFZaklpWWpJZ1lWSnpRMk16SVdNekkyTlFOY3diT3l3UUVxazdwWlBURjdKQnNwV2xrOEtuOG1HaXdFNTQ2TzdkOCtYMElzR3hoQVlFRXRIQUFDQUhVRTV3UUtCc3NBQmdBVkFHQUFzQUV2c0FQUXNBTXZzQVRRR2JBRUx4aXdBTkFac0FBdkdMQURFTEFGMExBRkwwQUpEd1VmQlM4RlB3VUVYYklDQXdVUkVqbXdBUkN3QjlDd0J5K3dEZEN3RFMreUNBY05FUkk1c2c0R0NpdFlJZGdiOUZteUZBZ0hFUkk1TURFQkl5Y0hJeVV6RnljMk5qVTBJemN5RmhVVUJnY0hBMXpCczdMQkFSYTd1UWMvT0lFSGlZeEpPQUVFNTZLaStuUjlCUmdkUG1sWlN6ZEJCenNBQXY5TUJOb0RYQWFEQUFZQUNnQmJBTEFETDdBRTBCbXdCQzhZc0FEUUdiQUFMeGl3QXhDd0FkQ3dBUyt3QnRDd0JpOUFDUThHSHdZdkJqOEdCRjJ5QWdNR0VSSTVzQU1Rc0FqUXNBZ3ZzQWZRR2JBSEx4aXdDQkN3Q3RDd0NpKzJEd29mQ2k4S0ExMHdNUUVqSndjakpUTUZJd016QTF6Vm41L1VBU09oL29lZDE5MEUybzZPK2x3QkN3QUNBSG9FNXdTTEJwQUFCZ0FLQUZzQXNBTXZzQVhRc0FVdnNBRFFzQUF2UUFrUEFCOEFMd0EvQUFSZHNBTVFzQUxRR2JBQ0x4aXlCQU1BRVJJNXNBYlFHYkFHTHhpd0F4Q3dDZEN3Q1Mrd0I5Q3dCeSsyRHdjZkJ5OEhBMTJ3Q1JDd0N0QVpzQW92R0RBeEFUTUZJeWNISXdFekF5TUJuYUVCSTlTZm45VURNOTdZblFYaCtvNk9BYW4rOVFBQUFnQjFCTlFEQUFaK0FBMEFFUUJkQUxBREw3QUcwTEFHTDBBTER3WWZCaThHUHdaUEJnVmRzQU1Rc2dvR0NpdFlJZGdiOUZtd0JoQ3dEZEN3RFMrd0JoQ3dFZEN3RVMrd0R0Q3dEaTlBRHc4T0h3NHZEajhPVHc1ZkRtOE9CMTJ3RVJDd0VOQVpzQkF2R0RBeEFSUUdJeUltTlRNVUZqTXlOalVsTXhjakF3Q3ZscFd4c1V4SlIweitsTGR5Z0FXeFlYeDZZelE4UERUTndBQUFBUUNVQkdrQnFRWXJBQWdBSGJJSUNRb1JFamtBc0FCRldMQUFMeHV4QUNFK1diQUUwTEFFTHpBeEFSY0dCd2NqTlRRMkFTYURQd0lCMDFVR0sxTnRmSWFGV2JZQUFBSUFDUUFBQkpRRWpRQUhBQW9BUmdDd0FFVllzQVF2RzdFRUhUNVpzQUJGV0xBQ0x4dXhBZzgrV2JBQVJWaXdCaThic1FZUFBsbXlDUVFDRVJJNXNBa3ZzZ0FCQ2l0WUlkZ2I5Rm15Q2dRQ0VSSTVNREVsSVFjakFUTUJJd0VoQXdNLy9oNWY5UUhYM3dIVjl2NEdBVlNxK2ZrRWpmdHpBYklCdWdBREFIWUFBQVFLQkkwQURnQVdBQjhBcExJZUlDRVJFam13SGhDd0F0Q3dIaEN3RWRBQXNBQkZXTEFCTHh1eEFSMCtXYkFBUlZpd0FDOGJzUUFQUGxteUZ3RUFFUkk1c0JjdnRLOFh2eGNDWGJSdkYzOFhBbkd5L3hjQmNiSVBGd0Z5dEk4WG54Y0NjckpmRndGeXNzOFhBWEd5UHhjQmNiUWZGeThYQWwyMHZ4ZlBGd0p5c2c4QkNpdFlJZGdiOUZteUNBOFhFUkk1c0FBUXNoQUJDaXRZSWRnYjlGbXdBUkN5SGdFS0sxZ2gyQnYwV1RBeE14RWhNaFlWRkFZSEZoWVZGQVlqQXhFek1qWTFOQ2NuTXpZMk5UUW1JeU4yQWEvZTYxbGJZSERpM2VMa1ptUzArdFJiWTJkbHhnU05wWnhQZ3lNWGoyT2pxd0g3L3NkVlFaNEZxZ0pJUlU5R0FBQUJBRS8vOEFSREJKMEFHd0JPc2dNY0hSRVNPUUN3QUVWWXNBc3ZHN0VMSFQ1WnNBQkZXTEFETHh1eEF3OCtXYklQQ3dNUkVqbXdDeEN5RWdFS0sxZ2gyQnYwV2JBREVMSVlBUW9yV0NIWUcvUlpzaHNEQ3hFU09UQXhBUVlFSXlJQUVUVTBOall6TWdRWEl5WW1JeUFSRlJRV016STJOd1JDRWY3MzJleis3SDdzbk5ZQkJCVHpESDF5L3UyR2gzaDhEUUdFdjlVQkxBRUxSS24vaXRyQ2NHbitqa2k1dFdKd0FBSUFkZ0FBQkNvRWpRQUxBQk1BUnJJVEZCVVJFam13RXhDd0F0QUFzQUJGV0xBQkx4dXhBUjArV2JBQVJWaXdBQzhic1FBUFBsbXdBUkN5REFFS0sxZ2gyQnYwV2JBQUVMSU5BUW9yV0NIWUcvUlpNREV6RVNFeUJCWVhGUlFHQkNNREVUTWdFelVRSlhZQmU2UUJBNUFDai83NXFJT0NBVWNHL3NrRWpZcjduejJqL29zRHlmejVBVnhEQVdBSUFBRUFkZ0FBQTdVRWpRQUxBRTRBc0FCRldMQUdMeHV4QmgwK1diQUFSVml3QkM4YnNRUVBQbG15Q3dZRUVSSTVzQXN2c2dBQkNpdFlJZGdiOUZtd0JCQ3lBZ0VLSzFnaDJCdjBXYkFHRUxJSUFRb3JXQ0hZRy9SWk1ERUJJUkVoRlNFUklSVWhFU0VEWC80S0Frejh3UU04L2JjQjlnSDQvc3JDQkkzRS92SUFBUUIyQUFBRG5nU05BQWtBUUFDd0FFVllzQVF2RzdFRUhUNVpzQUJGV0xBQ0x4dXhBZzgrV2JJSkJBSVJFam13Q1MreUFBRUtLMWdoMkJ2MFdiQUVFTElHQVFvcldDSFlHL1JaTURFQklSRWpFU0VWSVJFaEExditEdk1ES1AzTEFmSUIyLzRsQkkzRS90VUFBUUJVLy9BRVNBU2RBQndBWExJYUhSNFJFamtBc0FCRldMQUtMeHV4Q2gwK1diQUFSVml3QXk4YnNRTVBQbG15RGdNS0VSSTVzQW9Rc2hFQkNpdFlJZGdiOUZtd0F4Q3lGd0VLSzFnaDJCdjBXYkliQXdvUkVqbXdHeSt5R1FjS0sxZ2gyQnYwV1RBeEpRY0dJU0lBRVRVUUFETXlGaGNqSmlZaklCRVZGQllnTnpVak5TRUVTQmVXL3RYNC90d0JGdlRYK2hudEVubHMvdVNnQVNoRytRSHJreGlMQVM0QkNVRUJDUUVzdzhCa1hQNkpRTGU2T2NpeEFBQUJBSFlBQUFSb0JJMEFDd0NHQUxBQVJWaXdCaThic1FZZFBsbXdBRVZZc0Fvdkc3RUtIVDVac0FCRldMQUFMeHV4QUE4K1diQUFSVml3QkM4YnNRUVBQbG15Q1FZQUVSSTVzQWt2dEs4SnZ3a0NYYkkvQ1FGeHNzOEpBWEd5UHdrQmNyTC9DUUZ4c2c4SkFYSzBid2wvQ1FKeHROOEo3d2tDWGJKZkNRRnl0QndKTEFrQ1hiSUNBUW9yV0NIWUcvUlpNREVoSXhFaEVTTVJNeEVoRVRNRWFQUDk5UFB6QWd6ekFkditKUVNOL2hFQjd3QUJBSVVBQUFGM0JJMEFBd0FkQUxBQVJWaXdBaThic1FJZFBsbXdBRVZZc0FBdkc3RUFEejVaTURFaEl4RXpBWGZ5OGdTTkFBQUJBQ1QvOEFOa0JJMEFEZ0Fpc2dVUEVCRVNPUUN3QUVWWXNBVXZHN0VGRHo1WnNnc0JDaXRZSWRnYjlGa3dNUUV6RVJRR0l5SW1OVE1VTXpJMk5RSng4K095eXVIMHQwdFhCSTM4NEs3UHdLK3RYbDBBQUFFQWRnQUFCR2dFalFBTUFFc0FzQUJGV0xBRUx4dXhCQjArV2JBQVJWaXdDQzhic1FnZFBsbXdBRVZZc0FJdkc3RUNEejVac0FCRldMQUxMeHV4Q3c4K1diSUdBZ1FSRWptd0JoQ3dBZEN5Q2dFR0VSSTVNREVCQnhFakVUTVJOd0VoQVFFaEFmQ0g4L051QVU4QkxQNURBZFArM2dIYmcvNm9CSTM5L1lZQmZmMzMvWHdBQVFCMkFBQURsQVNOQUFVQUtBQ3dBRVZZc0FRdkc3RUVIVDVac0FCRldMQUNMeHV4QWc4K1diSUFBUW9yV0NIWUcvUlpNREVsSVJVaEVUTUJhUUlyL09MendzSUVqUUFBQVFCMkFBQUZqd1NOQUE0QVlMSUJEeEFSRWprQXNBQkZXTEFBTHh1eEFCMCtXYkFBUlZpd0FpOGJzUUlkUGxtd0FFVllzQVF2RzdFRUR6NVpzQUJGV0xBSUx4dXhDQTgrV2JBQVJWaXdEQzhic1F3UFBsbXlBUUFFRVJJNXNnY0FCQkVTT2JJS0FBUVJFamt3TVFrQ0lSRWpFUk1CSXdFVEVTTVJBYklCVVFGT0FUN3lHZjZncVA2aEdmSUVqZnkxQTB2N2N3RTdBanI4aXdOdy9jdit4UVNOQUFBQkFIWUFBQVJuQkkwQUNRQkZBTEFBUlZpd0JTOGJzUVVkUGxtd0FFVllzQWd2RzdFSUhUNVpzQUJGV0xBQUx4dXhBQTgrV2JBQVJWaXdBeThic1FNUFBsbXlBZ1VBRVJJNXNnY0ZBQkVTT1RBeElTTUJFU01STXdFUk13Um44djMwOC9NQ0RQSURHL3psQkkzODVBTWNBQUFDQUUvLzhBUnZCSjBBRGdBY0FFYXlBeDBlRVJJNXNBTVFzQkxRQUxBQVJWaXdDeThic1FzZFBsbXdBRVZZc0FNdkc3RUREejVac0FzUXNoSUJDaXRZSWRnYjlGbXdBeEN5R1FFS0sxZ2gyQnYwV1RBeEFSQUFJeUlBRVRVMEVqWXpNZ0FSSnpRbUl5SUdGUlVVRmpNeU5qVUViLzdmN2V6KzJvWHdtL0FCSVBLV2lJYVltWWVJbEFJcy92ait6QUUxQVF3dXJBRUhpLzdIL3ZVSXQ4REF0eld5eDhPMkFBQUNBSFlBQUFRc0JJMEFDZ0FUQUUyeUJCUVZFUkk1c0FRUXNBelFBTEFBUlZpd0F5OGJzUU1kUGxtd0FFVllzQUV2RzdFQkR6NVpzZ3NCQXhFU09iQUxMN0lBQVFvcldDSFlHL1Jac0FNUXNoSUJDaXRZSWRnYjlGa3dNUUVSSXhFaE1oWVZGQVlISnpNeU5qVTBKaU1qQVduekFlWFUvZkhVL3ZKb2QzbGw4d0daL21jRWpkV3RxY1lEeEZoVVYya0FBQUlBVFA4d0JHd0VuUUFVQUNJQVJySUlJeVFSRWptd0NCQ3dIOUFBc0FCRldMQVJMeHV4RVIwK1diQUFSVml3Q0M4YnNRZ1BQbG13RVJDeUdBRUtLMWdoMkJ2MFdiQUlFTElmQVFvcldDSFlHL1JaTURFQkZBWUhGd2NsQmlNaUpnSW5OVFFTTmpNeUFCRW5OQ1lqSWdZVkZSUVdNekkyTlFSc2JtUFBuZjcyTWpTYThvUUJndkdjN3dFaThaZUpocGVYaUltVkFpeWo4VWlZaU1rSml3RUJxam1yQVFXTy9zais5QWkzd01PMk03REp3N1lBQWdCMkFBQUVPUVNOQUEwQUZnQmhzZ1VYR0JFU09iQUZFTEFQMEFDd0FFVllzQVF2RzdFRUhUNVpzQUJGV0xBQ0x4dXhBZzgrV2JBQVJWaXdEUzhic1EwUFBsbXlEZ0lFRVJJNXNBNHZzZ0FCQ2l0WUlkZ2I5Rm15Q2dBT0VSSTVzQVFRc2hVQkNpdFlJZGdiOUZrd01RRWpFU01SSVRJV0ZSUUhBUlVoQVRNeU5qVTBKaU1qQWtqZjh3SEkydkRoQVJMKy9QNDAxV3hzYVcvVkFhbitWd1NOdDZyclcvNGxDd0pyWDA1UllBQUJBRDcvOEFQdkJKMEFKUUJqc2drbUp4RVNPUUN3QUVWWXNBa3ZHN0VKSFQ1WnNBQkZXTEFjTHh1eEhBOCtXYklESEFrUkVqbXlEUWtjRVJJNXNBa1FzaEFCQ2l0WUlkZ2I5Rm13QXhDeUZRRUtLMWdoMkJ2MFdiSWhIQWtSRWptd0hCQ3lJd0VLSzFnaDJCdjBXVEF4QVRRbUpDWW1OVFEyTXpJV0ZTTTBKaU1pQmhVVUZoY1dGaFVVQmlNaUppWTFNeFFoTWpZREFtait6N0JUOXNQUy92TjRaVjl1Y1kvZHdQak1pdVYrOUFFQVlXOEJNa0pQVEdLRFhKSzd5S0JSWFUxQU9rd2pOcktPbWE1ZHFuSEFTZ0FCQUNRQUFBUVdCSTBBQndBdUFMQUFSVml3Qmk4YnNRWWRQbG13QUVWWXNBSXZHN0VDRHo1WnNBWVFzZ0FCQ2l0WUlkZ2I5Rm13Qk5Bd01RRWhFU01SSVRVaEJCYitmdlArZ3dQeUE4bjhOd1BKeEFBQkFHZi84QVFlQkkwQUR3QTFzZ3dRRVJFU09RQ3dBRVZZc0Fndkc3RUlIVDVac0FCRldMQUVMeHV4QkE4K1diSU1BUW9yV0NIWUcvUlpzQWdRc0EvUU1ERUJFUlFFSUNRMUVUTVJGQll6TWpjUkJCNysvLzVLL3dEeGZtemxCQVNOL1FHKzROM0JBdi85QUhObzFBTUhBQUFCQUFrQUFBUnlCSTBBQ0FBeEFMQUFSVml3QXk4YnNRTWRQbG13QUVWWXNBY3ZHN0VISFQ1WnNBQkZXTEFGTHh1eEJROCtXYklCQXdVUkVqa3dNUUVYTndFaEFTTUJJUUlxRXhJQklnRUIva2IyL2tjQkFRRTRUVXNEVi90ekJJMEFBQUVBS0FBQUJlVUVqUUFNQUZrQXNBQkZXTEFCTHh1eEFSMCtXYkFBUlZpd0NDOGJzUWdkUGxtd0FFVllzQXN2RzdFTEhUNVpzQUJGV0xBREx4dXhBdzgrV2JBQVJWaXdCaThic1FZUFBsbXlBQUVERVJJNXNnVUJBeEVTT2JJS0FRTVJFamt3TVFFVE13RWpBd01qQVRNVEV6TUVTcS9zL3VicjJOdnIvdWJzc2RqV0FTc0RZdnR6QTBIOHZ3U04vSndEWkFBQkFCVUFBQVJLQkkwQUN3QlRBTEFBUlZpd0FTOGJzUUVkUGxtd0FFVllzQW92RzdFS0hUNVpzQUJGV0xBRUx4dXhCQTgrV2JBQVJWaXdCeThic1FjUFBsbXlBQUVFRVJJNXNnWUJCQkVTT2JJREFBWVJFam15Q1FZQUVSSTVNREVCRXlFQkFTRURBeUVCQVNFQ0ovSUJIUDZKQVl6KzRQLzYvdVFCZ2Y2SUFSb0MrZ0dUL2I3OXRRR1ovbWNDU3dKQ0FBRUFCUUFBQkRZRWpRQUlBREVBc0FCRldMQUJMeHV4QVIwK1diQUFSVml3Qnk4YnNRY2RQbG13QUVWWXNBUXZHN0VFRHo1WnNnQUJCQkVTT1RBeEFRRWhBUkVqRVFFaEFoMEJEZ0VML2wzeS9tUUJDd0o2QWhQOUIvNXNBYUVDN0FBQUFRQkJBQUFEOHdTTkFBa0FSQUN3QUVWWXNBY3ZHN0VISFQ1WnNBQkZXTEFDTHh1eEFnOCtXYklBQVFvcldDSFlHL1Jac2dRQUFoRVNPYkFIRUxJRkFRb3JXQ0hZRy9SWnNna0ZCeEVTT1RBeEpTRVZJVFVCSVRVaEZRRjRBbnY4VGdKcy9aVURvTUxDalFNOHhJb0FBQUlBUy8vMUFxb0RJQUFOQUJjQVJySURHQmtSRWptd0F4Q3dFTkFBc0FCRldMQUtMeHV4Q2hrK1diQUFSVml3QXk4YnNRTVBQbG13Q2hDeUVBSUtLMWdoMkJ2MFdiQURFTElWQWdvcldDSFlHL1JaTURFQkZBWWpJaVkxTlRRMk16SVdGU2MwSXlJSEZSUXpNamNDcXA2UWtwK2VrWkNndTNWeUEzZHZCQUUrbjZxcW5waWRycTJlREttZnVLbWFBQUVBZ0FBQUFnSURFd0FHQURFQXNBQkZXTEFGTHh1eEJSaytXYkFBUlZpd0FTOGJzUUVQUGxtd0JSQ3dCTkN3QkMreUF3SUtLMWdoMkJ2MFdUQXhJU01SQnpVbE13SUN1Y2tCYnhNQ09qQ1Nkd0FCQUR3QUFBS3lBeUFBRndCWnNnZ1lHUkVTT1FDd0FFVllzQTh2RzdFUEdUNVpzQUJGV0xBQUx4dXhBQTgrV2JJV0Fnb3JXQ0hZRy9SWnNnSVdBQkVTT2JJRER3QVJFam13RHhDeUNBSUtLMWdoMkJ2MFdiSU1BQThSRWpteUZRQVBFUkk1TURFaElUVUJOalUwSmlNaUJoVWpORFl6TWhZVkZBOENJUUt5L1p3QkhYRTJORHBDdXFtSGo1eHFZb3dCYzMwQkJXZERLalZDTm5TWmdITnJabGR4QUFFQU4vLzFBcWtESUFBa0FIK3lIaVVtRVJJNUFMQUFSVml3RFM4YnNRMFpQbG13QUVWWXNCY3ZHN0VYRHo1WnNnQVhEUkVTT1h5d0FDOFl0RkFBWUFBQ2NiYUFBSkFBb0FBRFhiQU5FTElHQWdvcldDSFlHL1Jac2dvQUJoRVNPYkFBRUxJa0Fnb3JXQ0hZRy9SWnNoSWtBQkVTT2JBWEVMSWVBZ29yV0NIWUcvUlpzaHNrSGhFU09UQXhBVE15TlRRbUl5SUdGU00wTmpNeUZoVVVCeFlWRkFZaklpWTFNeFFXTXpJMk5UUW5Jd0VNVVlRMlBqQkJ1cVdDajZPSGxiR1BoNnU2UlR3L1BZWmNBZEpoSXpVbkkyTjhlV2wzTXltT2FuNS9jU1kxTnlwbEFRQUFBZ0ExQUFBQ3ZnTVZBQW9BRGdCSkFMQUFSVml3Q1M4YnNRa1pQbG13QUVWWXNBUXZHN0VFRHo1WnNnRUpCQkVTT2JBQkw3SUNBZ29yV0NIWUcvUlpzQWJRc0FFUXNBdlFzZ2dMQmhFU09iSU5DUVFSRWprd01RRXpGU01WSXpVaEp3RXpBVE0xQndKZlgxKzcvcG9KQVcyOS9vdTZEZ0U2bDZPamVRSDUvaVh5RmdBQUFRQlAvL1VDcmdNVkFCb0FhcklOR3h3UkVqa0FzQUJGV0xBQ0x4dXhBaGsrV2JBQVJWaXdEUzhic1EwUFBsbXdBaEN5QXdJS0sxZ2gyQnYwV2JJSEFnMFJFam13QnkreUdBSUtLMWdoMkJ2MFdiSUZHQWNSRWptd0RSQ3lFd0lLSzFnaDJCdjBXYklSRXhnUkVqbXlHaGdURVJJNU1ERVRFeUVWSVFjMk16SVdGUlFHSXlJbUp6TVdNekkxTkNZaklnZGlOQUhzL3F3VVBrZURqS09NZ2EwQ3VRVnlkVU5DUXpVQmZ3R1dscFFiaG5wNG1ZUmpVbjA0UkNnQUFBSUFUZi8xQXJrRElnQVRBQjRBVzdJVUh5QVJFam13RkJDd0ROQUFzQUJGV0xBQUx4dXhBQmsrV2JBQVJWaXdEQzhic1F3UFBsbXdBQkN5QVFJS0sxZ2gyQnYwV2JJR0RBQVJFam13QmkreUZBSUtLMWdoMkJ2MFdiQU1FTElhQWdvcldDSFlHL1JaTURFQkZTSUdCell6TWhZVkZBWWpJaVkxTlRRMk13TWlCZ2NWRkRNeU5qVTBBaktSaVExSGEzV0hxSWFUcS9EZWxpMUNEMzgxUkFNaW1WOWlSWTU2ZDVtbm16SFM2UDVYSkJja2tVWTJkQUFCQURZQUFBS3VBeFVBQmdBeUFMQUFSVml3QlM4YnNRVVpQbG13QUVWWXNBSXZHN0VDRHo1WnNBVVFzZ1FDQ2l0WUlkZ2I5Rm15QUFRRkVSSTVNREVCQVNNQklUVWhBcTcrcmNRQlUvNU1BbmdDclAxVUFuK1dBQUFEQUV2LzlRS3FBeUFBRXdBY0FDUUFscklISlNZUkVqbXdCeEN3Rk5Dd0J4Q3dJdEFBc0FCRldMQVJMeHV4RVJrK1diQUFSVml3Qnk4YnNRY1BQbG15SWdjUkVSSTVmTEFpTHhpMmdDS1FJcUFpQTEyMFVDSmdJZ0p4dEFBaUVDSUNjYlJBSWxBaUFsMjAwQ0xnSWdKeHNoa0NDaXRZSWRnYjlGbXlBaUlaRVJJNXNnd1pJaEVTT2JBSEVMSVVBZ29yV0NIWUcvUlpzQkVRc2g4Q0NpdFlJZGdiOUZrd01RRVVCeFlWRkFZaklpWTFORGNtTlRRMk16SVdBVEkyTkNZaUJoUVdFelFpRlJRV01qWUNsM0dFb1k2TXBJUnhtNEdDbS83a05VQkJha0JBbDhRellERUNRWFEzUFlCcWVubHJnRDAzZEdsMmR2M2dNMW93TUZvekFhdFdWaWN3TUFBQ0FFYi85d0tqQXlBQUV3QWZBR0N5RkNBaEVSSTVzQlFRc0FqUUFMQUFSVml3Q0M4YnNRZ1pQbG13QUVWWXNCQXZHN0VRRHo1WnNnSVFDQkVTT1h5d0FpOFlzQkFRc2hFQ0NpdFlJZGdiOUZtd0FoQ3lGQUlLSzFnaDJCdjBXYkFJRUxJYUFnb3JXQ0hZRy9SWk1ERUJCaU1pSmpVME5qTXlGaGNWRkFZSEl6VXlOaWN5TnpVMEppTWlCaFVVRmdIblFscCtoNnFFaTZJQzNPQVRqM2xqVGlOQ05ETkJQQUUyT1lwOWVLU21senZYMlFHVFVxdzBSVWhCVGprM1JBQUJBSkFDaHdNdEF6RUFBd0FSQUxBQ0w3SUJBUW9yV0NIWUcvUlpNREVCSVRVaEF5MzlZd0tkQW9lcUFBTUFsZ1JJQXFJR2xRQURBQThBR3dCT0FMQU5MN0FaMExBWkw3SUhDUW9yV0NIWUcvUlpzQUxRc0FJdnNBRFFzQUF2UUE4UEFCOEFMd0EvQUU4QVh3QnZBQWRkc0FJUXNBUFFHYkFETHhpd0RSQ3lFd2tLSzFnaDJCdjBXVEF4QVRNSEl3YzBOak15RmhVVUJpTWlKamNVRmpNeU5qVTBKaU1pQmdHODV2V1ZnbTVPVEd4cFQxRnJZelFsSkRBd0pDVTBCcFhDM2s1a1pVMUtZMkpMSlRFeEpTY3pNd0FEQUFyK1NnUWJCRTRBS1FBMkFFTUFtN0lJUkVVUkVqbXdDQkN3TU5Dd0NCQ3dPdEFBc0FCRldMQW1MeHV4SmhzK1diQUFSVml3Rmk4YnNSWVJQbG13SmhDd0tOQ3dLQyt5QUFNS0sxZ2gyQnYwV2JJSUZpWVJFam13Q0MreUR4WUlFUkk1c0E4dnNqVUJDaXRZSWRnYjlGbXlHelVQRVJJNXNoOElKaEVTT2JBV0VMSXdBUW9yV0NIWUcvUlpzQWdRc2pvQkNpdFlJZGdiOUZtd0poQ3lRUUVLSzFnaDJCdjBXVEF4QVNNV0ZSVVVCZ1lqSWljR0ZSUVhNeFlXRlJRR0JpTWlKRFUwTnlZMU5EY21KalUxTkRZek1oY2hBUVlHRlJRV016STJOVFFuSlFNVUZqTXlOalUxTkNZaUJoVUVHNG82Yzg2QVVVVWxjOExEeW8vNm10bis5Yll5ZFZway9NZFZTd0Z4L1RBa01ZaHlocXlUL3VwQWVsbFlkM1c0ZFFPZ1ZXa1daS2xmRWlNdlNnTUJtbzVZcG1LYmVhVlpNa2gzVVRHZVh4YWl5aFQ3NVJOSU1FSk5Ya0JyQ1FJQ3MwdG1aMDRTU21abVRRQUNBRmIvNndSZkJFNEFFQUFkQUc2eUd4NGZFUkk1c0JzUXNBblFBTEFBUlZpd0NTOGJzUWtiUGxtd0FFVllzQXd2RzdFTUd6NVpzQUJGV0xBQ0x4dXhBZzgrV2JBQVJWaXdFQzhic1JBUFBsbXlBQWtDRVJJNXNnc0pBaEVTT2JBQ0VMSVVBUW9yV0NIWUcvUlpzQWtRc2hzQkNpdFlJZGdiOUZrd01TVUdJeUlDTlRVUUVqTXlGemN6QXhNakFSUVdNekkyTnpVbUppTWlCZ05qYnZMSDV1akg2WEVjM1d4ejNmM0hmSFJnZkJjUmZXTnpmOFRaQVNEMER3RUtBVGJYdy8zaS9lUUIrYUNzcTZZdnBibkZBQUFDQUpzQUFBVHlCYkFBRmdBZUFHR3lHQjhnRVJJNXNCZ1FzQVRRQUxBQVJWaXdBeThic1FNZlBsbXdBRVZZc0FFdkc3RUJEejVac0FCRldMQVBMeHV4RHc4K1diSVhBd0VSRWptd0Z5K3lBQUVLSzFnaDJCdjBXYklKQUJjUkVqbXdBeEN5SFFFS0sxZ2gyQnYwV1RBeEFSRWpFU0V5RmhVVUJ4WVRGUlFYRlNFbUp6VTBKaU1sSVRJMk5UUWhJUUdYL0FJcDlmLzM1UVZIL3Z3N0JIdHcvdE1CRkpDQi92ais0d0pXL2FvRnNObk40MlZGL3ZaenFUMGFNYmg1ZElES2NXM21BQUFCQUpzQUFBVXdCYkFBREFCWUFMQUFSVml3QkM4YnNRUWZQbG13QUVWWXNBZ3ZHN0VJSHo1WnNBQkZXTEFDTHh1eEFnOCtXYkFBUlZpd0N5OGJzUXNQUGxteUJnSUVFUkk1c0FZdnNoOEdBWEd5QVFFS0sxZ2gyQnYwV2JJS0FRWVJFamt3TVFFakVTTVJNeEV6QVNFQkFTRUNRNno4L0lzQnJBRTIvZ3dDSVA3UUFuRDlrQVd3L1p3Q1pQMUgvUWtBQUFFQWdRQUFCRFVHQUFBTUFGTUFzQUJGV0xBRUx4dXhCQ0UrV2JBQVJWaXdDQzhic1FnYlBsbXdBRVZZc0FJdkc3RUNEejVac0FCRldMQUxMeHV4Q3c4K1diSUhDQUlSRWptd0J5K3lBQUVLSzFnaDJCdjBXYklLQUFjUkVqa3dNUUVqRVNNUk14RXpBU0VCQVNFQjRtL3k4bWtCRHdFYy9wOEJqLzdtQWRuK0p3WUEvSndCbnY0Ui9iVUFBUUNiQUFBRkVnV3dBQXNBVEFDd0FFVllzQU12RzdFREh6NVpzQUJGV0xBSEx4dXhCeDgrV2JBQVJWaXdBUzhic1FFUFBsbXdBRVZZc0Fvdkc3RUtEejVac2dBREFSRVNPYklGQXdFUkVqbXlDUUFGRVJJNU1ERUJFU01STXhFekFTRUJBU0VCbC96OEJnSVpBVGo5cFFKLy9zZ0NtdjFtQmJEOWZ3S0IvVFg5R3dBQUFRQ0JBQUFFSWdZWUFBb0FUQUN3QUVWWXNBTXZHN0VESVQ1WnNBQkZXTEFHTHh1eEJocytXYkFBUlZpd0FTOGJzUUVQUGxtd0FFVllzQWt2RzdFSkR6NVpzZ0FHQVJFU09iSUZCZ0VSRWpteUNBQUZFUkk1TURFQkVTTVJNeEVCSVFFQklRRno4dklCV1FFcS9sQUIzUDdiQWV2K0ZRWVkvSVFCbnY0TS9ib0FBQUVBUHY4VEErOEZjd0FxQUcreUV5c3NFUkk1QUxBQVJWaXdDUzhic1FrZFBsbXdBRVZZc0NJdkc3RWlEejVac2dNaUNSRVNPYkFKRUxBTTBMQURFTElZQVFvcldDSFlHL1Jac0FrUXNoTUJDaXRZSWRnYjlGbXlFQmdURVJJNXNDSVFzQi9Rc0NJUXNpZ0JDaXRZSWRnYjlGbXlKZ01vRVJJNU1ERUJOQ1lrSmlZMU5EWTNOVE1WRmhZVkl6UW1JeUlHRlJRV0Z4WVdGUlFHQnhVak5TWW1OVE1VSVRJMkF3Sm8vcyt3VTgrcG9LYkw4M2hsWDI1eGo5M0F3NjZndmVQMEFRQmhid0V5UWs5TVlvTmNoclFRMmR3VndJMVJYVTFBT2t3ak5yS09ocXdSNGVFVHg1ckFTZ0FBQVFBNEFBQUVHZ1NkQUI4QWJySWJJQ0VSRWprQXNBQkZXTEFUTHh1eEV4MCtXYkFBUlZpd0JTOGJzUVVQUGxteUh4TUZFUkk1c0I4dnNnQUNDaXRZSWRnYjlGbXdCUkN5QXdFS0sxZ2gyQnYwV2JBSDBMQUkwTEFBRUxBTTBMQWZFTEFPMExBVEVMSWFBUW9yV0NIWUcvUlpzaGNmR2hFU09UQXhBU0VXQnlFSElUVXpOalluSnlNMU15Y21Oak15RmhVak5DWWpJZ1lYRnlFRFIvNkZCbEFDbUFIOFpRb3BLd01Cb0pzREJ0aS93dG56VjFCTlZ3VUVBWUFCNWJKd3c4TUxrMzBIazJuTzd0UzhZV3ArZVdrQUFRQU9BQUFFUHdTTkFCZ0FsYklBR1JvUkVqa0FzQUJGV0xBQkx4dXhBUjArV2JBQVJWaXdHQzhic1JnZFBsbXdBRVZZc0F3dkc3RU1EejVac2dBTUdCRVNPYklKREFFUkVqbXdDUyt3Qk5Dd0JDOUFEUThFSHdRdkJEOEVUd1JmQkFaZHRzOEUzd1R2QkFOZHNnWUNDaXRZSWRnYjlGbXdDUkN5Q2dJS0sxZ2gyQnYwV2JBTzBMQUpFTEFRMExBUUw3QUdFTEFUMExBRUVMQVcwTEFXTHpBeEFRRWhBVE1WSVFjVklSVWhGU00xSVRVaE5TY2hOVE1CSVFJbEFROEJDLzYrMWY3YUVBRTIvc3J5L3NvQk5nbiswOXordmdFTEFub0NFLzIza3gwcWtkblprVFlSa3dKSkFBQUJBSFlBQUFPWEJJMEFCUUF5c2dFR0J4RVNPUUN3QUVWWXNBUXZHN0VFSFQ1WnNBQkZXTEFETHh1eEF3OCtXYkFFRUxJQUFRb3JXQ0hZRy9SWk1ERUJJUkVqRVNFRGwvM1M4d01oQThuOE53U05BQUFDQUFrQUFBUnlCSTBBQXdBSUFEeXlCUWtLRVJJNXNBVVFzQUxRQUxBQVJWaXdBaThic1FJZFBsbXdBRVZZc0FBdkc3RUFEejVac2dVQUFoRVNPYklIQVFvcldDSFlHL1JaTURFaElRRXpBeWNIQXlFRWN2dVhBYm4yYVJJVDNnSGpCSTMreVV0Ti9XOEFBd0JQLy9BRWJ3U2RBQU1BRWdBZ0FIYXlCeUVpRVJJNXNBY1FzQUhRc0FjUXNCYlFBTEFBUlZpd0R5OGJzUThkUGxtd0FFVllzQWN2RzdFSER6NVpzZ01QQnhFU09YeXdBeThZdEdBRGNBTUNYYlF3QTBBREFsMnlBQU1CY2JJQUFRb3JXQ0hZRy9SWnNBOFFzaFlCQ2l0WUlkZ2I5Rm13QnhDeUhRRUtLMWdoMkJ2MFdUQXhBU0UxSVFVUUFDTWlBQkUxTkJJMk16SUFFU2MwSmlNaUJoVVZGQll6TWpZMUF6aitXZ0dtQVRmKzMrM3MvdHFGOEp2d0FTRHlsb2lHbUptSGlKUUIzOE4yL3ZqK3pBRTFBUXd1ckFFSGkvN0gvdlVJdDhEQXR6V3l4OE8yQUFBQkFBa0FBQVJ5QkkwQUNBQTRzZ2NKQ2hFU09RQ3dBRVZZc0FJdkc3RUNIVDVac0FCRldMQUFMeHV4QUE4K1diQUFSVml3QkM4YnNRUVBQbG15QndJQUVSSTVNREVoSVFFekFTRUJKd2NCQ3Y3L0FibjJBYnIrLy83ZUVoTUVqZnR6QTFaTFRRQURBRUlBQUFOVkJJMEFBd0FIQUFzQVhySUVEQTBSRWptd0JCQ3dBTkN3QkJDd0NOQUFzQUJGV0xBS0x4dXhDaDArV2JBQVJWaXdBQzhic1FBUFBsbXlBZ0VLSzFnaDJCdjBXYklIQ2dBUkVqbXdCeSt5QkFFS0sxZ2gyQnYwV2JBS0VMSUlBUW9yV0NIWUcvUlpNREVoSVRVaEF5RTFJUk1oTlNFRFZmenRBeE5KL1g0Q2drbjg3UU1Ud3dFNHhBRUt4QUFBQVFCMkFBQUVZZ1NOQUFjQVA3SUJDQWtSRWprQXNBQkZXTEFHTHh1eEJoMCtXYkFBUlZpd0JDOGJzUVFQUGxtd0FFVllzQUV2RzdFQkR6NVpzQVlRc2dJQkNpdFlJZGdiOUZrd01TRWpFU0VSSXhFaEJHTDAvZnZ6QSt3RHlmdzNCSTBBQUFFQVJBQUFBK1lFalFBTUFFdXlBQTBPRVJJNUFMQUFSVml3Q0M4YnNRZ2RQbG13QUVWWXNBTXZHN0VERHo1WnNnRUJDaXRZSWRnYjlGbXlCUUVERVJJNXNBZ1FzZ29CQ2l0WUlkZ2I5Rm15QndvSUVSSTVNREVCQVNFVklUVUJBVFVoRlNFQkFwRCs1Z0p3L0Y0QlAvN0JBM3o5dWdFV0FrWCtmOFNZQWJjQnBwakUvbzhBQXdCUUFBQUZUUVNOQUJFQUZnQWNBRyt5Q0IwZUVSSTVzQWdRc0JUUXNBZ1FzQnJRQUxBQVJWaXdFQzhic1JBZFBsbXdBRVZZc0Fndkc3RUlEejVac2c4UUNCRVNPYkFQTDdBQTBMSUpDQkFSRWptd0NTK3dCdEN3Q1JDeUZBRUtLMWdoMkJ2MFdiQVBFTElWQVFvcldDSFlHL1Jac0JyUXNCUVFzQnZRTURFQkZnUVZGQVFIRlNNMUppUTFOQ1EzTlRNQkFnVVJCQVUwSmljUkpBTko4QUVVL3VudDgvRCs2Z0VYNy9QOStRUUJHUDdzQXhtUWdnRVNCQlVQOXNyUStnOXRiQS81ME0zM0RYajl0Lzc5RlFJcUZmdUZnUXI5MWhVQUFBRUFVQUFBQlFNRWpRQVlBRXV5QUJrYUVSSTVBTEFBUlZpd0VpOGJzUklkUGxtd0FFVllzQXd2RzdFTUR6NVpzaFlNRWhFU09iQVdMN0FBMExBU0VMQVgwTEFFMExBV0VMSU5BUW9yV0NIWUcvUlpzQXJRTURFQk5qWTFFVE1SQmdjR0J4RWpFU1lDQXhFekVSUVdGeEV6QXlOL2J2TUJhSDM2OCtQN0F2TndmZk1CM1JqQ3B3RXYvczNqazY4ZC91Z0JGeFlCS2dFQUFUYiswYWpBR0FLdkFBRUFYd0FBQklRRW5RQWpBRnl5QnlRbEVSSTVBTEFBUlZpd0dTOGJzUmtkUGxtd0FFVllzQTh2RzdFUER6NVpzQUJGV0xBaUx4dXhJZzgrV2JBUEVMSVJBUW9yV0NIWUcvUlpzQTdRc0FEUXNCa1FzZ2NCQ2l0WUlkZ2I5Rm13RVJDd0lOQ3dJZEF3TVNVMk5qVTFOQ1lqSWdZVkZSUVdGeFVoTlRNbUVUVTBOall6TWdBVkZSUUdCek1WSVFLdGVHeVVqWXFVZG5UK01MQzlnL0tjNmdFcVkxbTIvaS9JSXNtd0s1NnNxYVFvc2NjanlNU2JBU2NXa2V5RS91UHRHWTNmU3NRQUFBRUFKUC9zQlZJRWpRQVpBR3V5RmhvYkVSSTVBTEFBUlZpd0FpOGJzUUlkUGxtd0FFVllzQTR2RzdFT0R6NVpzQUJGV0xBWUx4dXhHQTgrV2JBQ0VMSUFBUW9yV0NIWUcvUlpzQVRRc0FYUXNnZ0NEaEVTT2JBSUw3QU9FTElQQndvcldDSFlHL1Jac0FnUXNoVUJDaXRZSWRnYjlGa3dNUUVoTlNFVklSVTJNeklXRlJRR0l6VXlOalUwSmlNaUJ4RWpBWDcrcGdPdC9xQ0tqZHJ3OE90emRuUjFnWVh6QThuRXhPNG4xTWE4d0wxVWFYSm5KdjNuQUFFQVQvL3dCRU1FblFBZEFJK3lBeDRmRVJJNUFMQUFSVml3Q3k4YnNRc2RQbG13QUVWWXNBTXZHN0VERHo1WnNnOExBeEVTT2JBTEVMSVNBUW9yV0NIWUcvUlpzaFVMQXhFU09iQVZMN0wvRlFGeHNnOFZBWEt5UHhVQmNiTFBGUUZ4dEc4VmZ4VUNjYlN2RmI4VkFsMnlYeFVCY3JLUEZRRnlzaFlCQ2l0WUlkZ2I5Rm13QXhDeUdnRUtLMWdoMkJ2MFdiSWRBd3NSRWprd01RRUdCQ01pQUJFMU5EWTJNeklFRnlNbUppTWlBeUVWSVJZV016STJOd1JDRWY3MzJleis3SDdzbk5ZQkJCVHpESDF5K3hZQmdQNkFDbjZEZUh3TkFZUy8xUUVzQVF0RXFmK0syc0p3YWY3UHhKU2ZZbkFBQWdBa0FBQUhGUVNOQUJjQUlBQjJzZ1FoSWhFU09iQUVFTEFZMEFDd0FFVllzQkl2RzdFU0hUNVpzQUJGV0xBREx4dXhBdzgrV2JBQVJWaXdDeThic1FzUFBsbXdFaEN5QlFFS0sxZ2gyQnYwV2JBTEVMSU9BUW9yV0NIWUcvUlpzaFFTQXhFU09iQVVMN0lZQVFvcldDSFlHL1Jac0FNUXNoa0JDaXRZSWRnYjlGa3dNUUVVQmdjaEVTRURCZ0lHSXlNM056WTJOeE1oRVRNeUZpVVJNekkyTlRRbUl3Y1YrYy8rRmY2a0RndFlySkUwQVNaZ1Rnd1ZBenZzMnZyOVFQRm5kWFptQVgrcjBnSUR5ZjZjNy83L2RjMENCNS90QWl2K2JOQU0vbzVyVTFGakFBQUNBSFlBQUFjWUJJMEFFd0FjQU1HeUFSMGVFUkk1c0FFUXNCVFFBTEFBUlZpd0V5OGJzUk1kUGxtd0FFVllzQUl2RzdFQ0hUNVpzQUJGV0xBUUx4dXhFQTgrV2JBQVJWaXdEUzhic1EwUFBsbXlBQkFURVJJNXNBQXZ0SzhBdndBQ1hiSS9BQUZ4c3M4QUFYR3lQd0FCY3JKZkFBRnlzdjhBQVhHeUR3QUJjclJ2QUg4QUFuRzAzd0R2QUFKZHRCOEFMd0FDWGJLZkFBRnlzZ1FOQWhFU09iQUVMN0FBRUxJUEFRb3JXQ0hZRy9SWnNBUVFzaFFCQ2l0WUlkZ2I5Rm13RFJDeUZRRUtLMWdoMkJ2MFdUQXhBU0VSTXhFek1oWVdGUlFHSXlFUklSRWpFVE1CRVRNeU5qVTBKaU1CYVFIOTgvS00wbS8vMHY0Zi9nUHo4d0x3OFdkMWRtWUNuZ0h2L214ZnEzQ3YwQUhiL2lVRWpmMm8vbzVyVTFGakFBQUJBQ1FBQUFWU0JJMEFGUUJYc2hJV0Z4RVNPUUN3QUVWWXNBTXZHN0VESFQ1WnNBQkZXTEFVTHh1eEZBOCtXYkFBUlZpd0RTOGJzUTBQUGxtd0F4Q3lCQUVLSzFnaDJCdjBXYkFBMExJSUZBTVJFam13Q0MreUVRRUtLMWdoMkJ2MFdUQXhBU0UxSVJVaEZUWXpNaFlYRVNNUk5DWWpJZ2NSSXdGKy9xWURyZjZnaG83ZTZ3VHpkSFNCaGZNRHljVEU3U2JQeS82WUFWcDhhU2I5NXdBQUFRQjIvcDhFWVFTTkFBc0FUN0lEREEwUkVqa0FzQUl2c0FCRldMQUdMeHV4QmgwK1diQUFSVml3Q2k4YnNRb2RQbG13QUVWWXNBQXZHN0VBRHo1WnNBQkZXTEFFTHh1eEJBOCtXYklJQVFvcldDSFlHL1Jac0FuUU1ERWhJUkVqRVNFUk14RWhFVE1FWWY2SzgvNSs4d0lGOC82ZkFXRUVqZncyQThvQUFnQjJBQUFFS0FTTkFBc0FGQUJlc2dnVkZoRVNPYkFJRUxBTTBBQ3dBRVZZc0Fvdkc3RUtIVDVac0FCRldMQUlMeHV4Q0E4K1diQUtFTElBQVFvcldDSFlHL1Jac2dNS0NCRVNPYkFETDdBSUVMSU1BUW9yV0NIWUcvUlpzQU1Rc2hJQkNpdFlJZGdiOUZrd01RRWhGVE1XRmhBR0l5RVJJUUV5TmpVMEppY2pFUU95L2JmOHovVDQyZjRmQXp6K3FHaHpjR2IyQTh2Z0E4VCtxTXdFamZ3MlkxUlBYUUgrbkFBQ0FDZityd1VWQkkwQUR3QVZBRnV5RXhZWEVSSTVzQk1Rc0FYUUFMQU5MN0FBUlZpd0JTOGJzUVVkUGxtd0FFVllzQXN2RzdFTER6NVpzZ0FCQ2l0WUlkZ2I5Rm13QjlDd0NOQ3dEUkN3Q3RDd0NCQ3dFTkN3RWRDd0JSQ3lFZ0VLSzFnaDJCdjBXVEF4Tno0Q054TWhFVE1SSXhFaEVTTVRJU0VSSVFjQ2drcENJd1VNQXoyVzh2ejM4d0VCZEFIdy9xRUhEY05SaHJSK0FjSDhOdjNzQVZIK3J3SVVBd2I4L3E0QUFRQWFBQUFHSHdTTkFCVUFucklCRmhjUkVqa0FzQUJGV0xBUkx4dXhFUjArV2JBQVJWaXdEaThic1E0ZFBsbXdBRVZZc0Fvdkc3RUtIVDVac0FCRldMQUdMeHV4Qmc4K1diQUFSVml3QXk4YnNRTVBQbG13QUVWWXNCVXZHN0VWRHo1WnNnd0REaEVTT2JBTUw3SS9EQUZ4c2w4TUFYS3l6d3dCY2JTdkRMOE1BbDIwand5ZkRBSnlzQS9Rc2dFQkNpdFlJZGdiOUZtd0JOQ3lDQThFRVJJNXNoTUJEeEVTT1RBeEFTTVJJeEVqQXlFQkFTRVRNeEV6RVRNVElRRUJJUVAxWC9OZy9QN1RBVnoreEFFZTkxVHpWUGNCSHY3Q0FWNyswd0hWL2lzQjFmNHJBbFFDT2Y0Z0FlRCtJQUhnL2REOW93QUFBUUJDLy9BRDV3U2RBQ2NBaXJJbUtDa1JFamtBc0FCRldMQUtMeHV4Q2gwK1diQUFSVml3Rmk4YnNSWVBQbG13Q2hDeUF3RUtLMWdoMkJ2MFdiSUdDaFlSRWpteUpnb1dFUkk1c0NZdnNzOG1BWEd5UHlZQmNiU3ZKcjhtQWwyeS95WUJjYklQSmdGeXNsOG1BWEt5SXdFS0sxZ2gyQnYwV2JJUUl5WVJFam15SEJZS0VSSTVzQllRc2g0QkNpdFlJZGdiOUZrd01RRTBKaU1pQmhVak5EWXpNaFlWRkFZSEZoWVZGQVFqSWlZbkpqVXpGak15TmpVMEp5TTFNellDNG5CclcyYno4OFBZOUc1ZGIyNysvdHhkcno5ODh3dktkM1RnbEpySEEwTkdUMFk4bExPbmxsdUtKeVNSVzUrMUxTOWJuNU5YU0tZRHNBUUFBUUIyQUFBRWJnU05BQWtBVExJQUNnc1JFamtBc0FCRldMQUFMeHV4QUIwK1diQUFSVml3Q0M4YnNRZ2RQbG13QUVWWXNBVXZHN0VGRHo1WnNBQkZXTEFETHh1eEF3OCtXYklFQXdBUkVqbXlDUVVJRVJJNU1ERUJNeEVqRVFFakVUTVJBM3Z6OC8zdTgvTUVqZnR6QXlQODNRU04vT0FBQVFCMkFBQUVRQVNOQUF3QWQ3SUFEUTRSRWprQXNBQkZXTEFJTHh1eENCMCtXYkFBUlZpd0JTOGJzUVVkUGxtd0FFVllzQUl2RzdFQ0R6NVpzQUJGV0xBTUx4dXhEQTgrV2JJR0FnVVJFam13QmkreVB3WUJjYkpmQmdGeXNzOEdBWEcwcndhL0JnSmR0SThHbndZQ2NySUJBUW9yV0NIWUcvUlpzZ29CQmhFU09UQXhBU01SSXhFekVUTUJJUUVCSVFIVGF2UHpZd0U0QVIzK2NnR3QvdEVCMWY0ckJJMytJQUhnL2NYOXJnQUJBQ1FBQUFSVkJJMEFFQUJOc2dRUkVoRVNPUUN3QUVWWXNBQXZHN0VBSFQ1WnNBQkZXTEFCTHh1eEFROCtXYkFBUlZpd0NTOGJzUWtQUGxtd0FCQ3lBd0VLSzFnaDJCdjBXYkFKRUxJTUFRb3JXQ0hZRy9SWk1ERUJFU01SSVFNR0FnWUhJemMzTmpZM0V3UlY4LzZrRHd4WHFvdzZBU2RpU2d3V0JJMzdjd1BKL3AvdC92NTRBYzBFQzZEbUFpc0FBQUVBSC8vc0JEa0VqUUFQQUVPeUFCQVJFUkk1QUxBQVJWaXdEeThic1E4ZFBsbXdBRVZZc0FJdkc3RUNIVDVac0FCRldMQUlMeHV4Q0E4K1diSUJDQThSRWpteUN3RUtLMWdoMkJ2MFdUQXhBUmNUSVFFT0FpTW5OeGN5TndFaEFpa1Q4d0VLL25BNFduNWFaZ0ZYWURQK1d3RU9Ba3MzQW5uOGZuNXBPQVhBQkdFRGZ3QUFBUUIyL3E4RkpBU05BQXNBUXJJSkRBMFJFamtBc0FNdnNBQkZXTEFITHh1eEJ4MCtXYkFBUlZpd0NpOGJzUW9kUGxtd0FFVllzQVV2RzdFRkR6NVpzZ2dCQ2l0WUlkZ2I5Rm13QU5Bd01TVXpBeU1SSVJFekVTRVJNd1Jpd2hUZC9FUHpBZ1gwdy8zc0FWRUVqZncyQThvQUFRQkJBQUFFRmdTTkFCRUFScklFRWhNUkVqa0FzQUJGV0xBSkx4dXhDUjArV2JBQVJWaXdFQzhic1JBZFBsbXdBRVZZc0FFdkc3RUJEejVac2cwQkNSRVNPYkFOTDdJRUFRb3JXQ0hZRy9SWk1ERWhJeEVHSXlJbUp4RXpFUlFXTXpJM0VUTUVGdk9HZ2Vyd0FmTnZlWUtGOHdHcUp0TFJBV2Irbm5kc0pnSWZBQUVBZGdBQUJnNEVqUUFMQUVHeUJ3d05FUkk1QUxBQVJWaXdBeThic1FNZFBsbXdBRVZZc0FFdkc3RUJEejVac2dRQkNpdFlJZGdiOUZtd0F4Q3dCdEN3QkJDd0NOQ3dCaEN3Q3RBd01TRWhFVE1SSVJFekVTRVJNd1lPK21qekFWL3pBV0R6QkkzOE5nUEsvRFlEeWdBQkFIYityd2JSQkkwQUR3QkJzZ3NRRVJFU09RQ3dBeSt3QUVWWXNBY3ZHN0VISFQ1WnNBQkZXTEFFTHh1eEJBOCtXYklBQVFvcldDSFlHL1Jac0EzUXNBblFzQWNRc0FyUXNBN1FNREVsTXdNakVTRVJNeEVoRVRNUklSRXpCZy9DRk4zNmx2TUJYL01CWVBURC9ld0JVUVNOL0RZRHl2dzJBOG9BQWdBS0FBQUZHd1NOQUF3QUZRQmVzZ2dXRnhFU09iQUlFTEFVMEFDd0FFVllzQWN2RzdFSEhUNVpzQUJGV0xBREx4dXhBdzgrV2JBSEVMSUZBUW9yV0NIWUcvUlpzZ29IQXhFU09iQUtMN0FERUxJTkFRb3JXQ0hZRy9SWnNBb1FzaE1CQ2l0WUlkZ2I5Rmt3TVFFVUJnY2hFU0UxSVJFek1oWUJNalkxTkNZbkl4RUZHL25QL2hYK29nSlM2OXY1L2pKbWRYRmkrUUYvcTlJQ0E4bkUvbXpRL3BwclUwOWpBdjZPLy84QWRnQUFCYWtFalFBbUFnZ0FBQUFIQWNJRU1nQUFBQUlBZGdBQUJDZ0VqUUFMQUJRQVRiSURGUllSRWptd0F4Q3dETkFBc0FCRldMQUdMeHV4QmgwK1diQUFSVml3QkM4YnNRUVBQbG15QndRR0VSSTVzQWN2c2hNQkNpdFlJZGdiOUZtd0JCQ3lGQUVLSzFnaDJCdjBXVEF4QVJRR0l5RVJNeEV6TWhZV0FUSTJOVFFtSnlNUkJDai8wdjRmOC9LTTBtLytNbVoxY1dMNUFYK3YwQVNOL214ZnEvN1VhMU5QWXdMK2pnQUFBUUE4Ly9BRU1BU2RBQjBBaDdJREhoOFJFamtBc0FCRldMQVNMeHV4RWgwK1diQUFSVml3R2k4YnNSb1BQbG15QUJvU0VSSTVzZ01CQ2l0WUlkZ2I5Rm15Q1JJYUVSSTVzQWt2c3M4SkFYR3lQd2tCY2JSdkNYOEpBbkcwcndtL0NRSmRzdjhKQVhHeUR3a0JjckpmQ1FGeXNnWUJDaXRZSWRnYjlGbXdFaEN5Q3dFS0sxZ2gyQnYwV2JJT0Vob1JFamt3TVFFV0ZqTXlOamNoTlNFQ0l5SUdCeU0ySkRNeUFCY1hGQVlHSXlJa0p3RXZEWHg0Z29BSy9uOEJnQmI3Y24wTTh4UUJCTmJpQVJjTUFYdnFtOXorK0E4QmhIQmluNVRFQVRGcGNNTGEvdWp3ZGFuL2lOcTZBQUFDQUhiLzhBWkJCSjBBRXdBaEFLK3lCQ0lqRVJJNXNBUVFzQm5RQUxBQVJWaXdFQzhic1JBZFBsbXdBRVZZc0Fzdkc3RUxIVDVac0FCRldMQURMeHV4QXc4K1diQUFSVml3Q0M4YnNRZ1BQbG15RFFnTEVSSTVzQTB2dEs4TnZ3MENYYlJ2RFg4TkFuR3kvdzBCY2JJUERRRnl0SThObncwQ2NySmZEUUZ5c3M4TkFYR3lQdzBCY2JRZkRTOE5BbDJ5encwQmNySUdBUW9yV0NIWUcvUlpzQkFRc2hjQkNpdFlJZGdiOUZtd0F4Q3lIZ0VLSzFnaDJCdjBXVEF4QVJBQUl5SUFKeU1SSXhFekVUTTJBRE15QUJFbk5DWWpJZ1lWRlJRV016STJOUVpCL3QvdDN2N2lFN3p5OHJ3VUFSM2M4QUVnOHBhSWhwaVpoNGlVQWl6KytQN01BUkRpL2g0RWpmNFk2UUVQL3NmKzlRaTN3TUMzTmJMSHc3WUFBZ0JEQUFBRUVnU05BQXdBRlFCYXNnWVdGeEVTT2JBR0VMQVEwQUN3QUVWWXNBY3ZHN0VISFQ1WnNBQkZXTEFKTHh1eENROCtXYklSQ1FjUkVqbXdFUyt5Q2dFS0sxZ2gyQnYwV2JJQkNoRVJFam13Q1JDd0ROQ3dCeEN5RWdFS0sxZ2gyQnYwV1RBeE13RW1OVFEyTXlFUkl4RWpBeE1VRmpNekVTTWlCa01CRnRidzB3SE04L0htTG1GcjNkMWhhd0lLVnRHanVmdHpBYnorUkFNaVNsa0JTbGNBQUFFQUNnQUFBLzhFalFBTkFGQ3lBUTRQRVJJNUFMQUFSVml3Q0M4YnNRZ2RQbG13QUVWWXNBSXZHN0VDRHo1WnNnY0NDQkVTT2JBSEw3SUVCd29yV0NIWUcvUlpzQUhRc0FnUXNnc0JDaXRZSWRnYjlGbXdCeEN3RE5Bd01RRWpFU01SSXpVekVTRVZJUkV6QXFmVzg5VFVBeUg5MHRZQjV2NGFBZWFxQWYzRS9zY0FBQUVBR3Y2dkJtMEVqUUFaQUtTeUNCb2JFUkk1QUxBREw3QUFSVml3RVM4YnNSRWRQbG13QUVWWXNBVXZHN0VGRHo1WnNBQkZXTEFKTHh1eENROCtXYkFBUlZpd0RTOGJzUTBQUGxteUZ3a1JFUkk1c0JjdnNqOFhBWEd5WHhjQmNyTFBGd0Z4dEs4WHZ4Y0NYYlNQRjU4WEFuS3lCd0VLSzFnaDJCdjBXYklBQnhjUkVqbXdCUkN5QVFFS0sxZ2gyQnYwV2JBSEVMQUwwTElQRndjUkVqbXdGeEN3RXRDd0VSQ3dGTkN3R05Bd01RRVRNeEVqRVNNREl4RWpFU01ESVFFQklSTXpFVE1STXhNaEJNSHV2dENyL1YvellQeiswd0ZjL3NRQkh2ZFU4MVQzQVI0Q1hmNWwvZTBCVVFIVi9pc0IxZjRyQWxRQ09mNGdBZUQrSUFIZ0FBRUFkdjZ2Qkh3RWpRQVFBSWl5QUJFU0VSSTVBTEFFTDdBQVJWaXdEQzhic1F3ZFBsbXdBRVZZc0E4dkc3RVBIVDVac0FCRldMQUpMeHV4Q1E4K1diQUFSVml3Qmk4YnNRWVBQbG15RFFrTUVSSTVzQTB2c2o4TkFYR3lYdzBCY3JMUERRRnh0SzhOdncwQ1hiU1BEWjhOQW5LeUNBRUtLMWdoMkJ2MFdiSUFDQTBSRWptd0JoQ3lBUUVLSzFnaDJCdjBXVEF4QVFFekVTTVJJd0VqRVNNUk14RXpBU0VDa3dFaHlOQ2Ivc0pxOC9OakFUZ0JIUUpTL25EOTdRRlJBZFgrS3dTTi9pQUI0QUFCQUhZQUFBVCtCSTBBRkFDQXNnVVZGaEVTT1FDd0FFVllzQlF2RzdFVUhUNVpzQUJGV0xBR0x4dXhCaDArV2JBQVJWaXdFUzhic1JFUFBsbXdBRVZZc0Fvdkc3RUtEejVac2dBUkZCRVNPYkFBTDdJL0FBRnhzbDhBQVhLeXp3QUJjYlN2QUw4QUFsMjBqd0NmQUFKeXNBVFFzQUFRc2hBQkNpdFlJZGdiOUZtd0ROQ3lDQXdBRVJJNU1ERUJNelV6RlRNQklRRUJJUUVqRlNNMUl4RWpFVE1CYVVlak53RTRBUnorY2dHdS90SCt3ajZqUi9QekFxM2UzZ0hnL2NUOXJ3SFZ5OHYrS3dTTkFBQUJBQ1FBQUFWT0JJMEFEZ0NGc2drUEVCRVNPUUN3QUVWWXNBY3ZHN0VISFQ1WnNBQkZXTEFLTHh1eENoMCtXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQTR2RzdFT0R6NVpzZ2dDQnhFU09iQUlMN0kvQ0FGeHNsOElBWEt5endnQmNiU3ZDTDhJQWwyMGp3aWZDQUp5c2dFQkNpdFlJZGdiOUZtd0J4Q3lCQUVLSzFnaDJCdjBXYklNQVFnUkVqa3dNUUVqRVNNUklUVWhFVE1CSVFFQklRTGhhdlArb0FKVFl3RTRBUjMrY2dHdC90RUIxZjRyQThyRC9pQUI0UDNFL2E4QUFnQlAvK3NGbUFTbEFDTUFMZ0NNc2hVdk1CRVNPYkFWRUxBazBBQ3dBRVZZc0Jzdkc3RWJIVDVac0FCRldMQUxMeHV4Q3gwK1diQUFSVml3QkM4YnNRUVBQbG13QUVWWXNBQXZHN0VBRHo1WnNnSUVHeEVTT2JBQ0w3QUxFTElNQVFvcldDSFlHL1Jac0FRUXNoTUJDaXRZSWRnYjlGbXdBQkN5SXdFS0sxZ2gyQnYwV2JBQ0VMQW0wTEFiRUxJc0FRb3JXQ0hZRy9SWk1ERUZJaWNHSXlBQUF6VTBBRE1WSWdZVkZSUVdNek0zSmdNMU5CSXpNaElYRlJBSEZqTUJFQmMyTnpVMEppTWlFUVdZNDY2UnFmN2EvcXdFQVFqYmNYL0x3QnNid0FMY3Y4YmRBYU5mWFAyVXZxSUJVMXV6RURrK0FUd0JHRHIrQVM3TXRMRW15ODBDcWdFZUxPb0JEZjc4N0VqKy82MExBZEwrOUc5NDh6V2drUDdTLy84QUJRQUFCRFlFalFBbUFkSUFBQUFIQWQ0QU8vN1ZBQUVBRmY2dkJJc0VqUUFQQUZxeUNoQVJFUkk1QUxBSEw3QUFSVml3QVM4YnNRRWRQbG13QUVWWXNBOHZHN0VQSFQ1WnNBQkZXTEFMTHh1eEN3OCtXYkFBUlZpd0NTOGJzUWtQUGxteUFBOExFUkk1c2dRQkNpdFlJZGdiOUZteUNnc1BFUkk1TURFQkV5RUJBVE1SSXhFakF3TWhBUUVoQWlmeUFSeitpUUVKeE0rUy8vcis1QUdCL29nQkdnTDZBWlA5dnY1My9lMEJVUUdaL21jQ1N3SkNBQUVBSlA2dkJpNEVqUUFQQUZ5eUNSQVJFUkk1QUxBQ0w3QUFSVml3Q0M4YnNRZ2RQbG13QUVWWXNBNHZHN0VPSFQ1WnNBQkZXTEFFTHh1eEJBOCtXYklBQVFvcldDSFlHL1Jac0FnUXNnWUJDaXRZSWRnYjlGbXdDdEN3QzlDd0FCQ3dETkN3RGRBd01TVXpBeU1SSVJFaE5TRVZJUkVoRVRNRmFzUVUzdnhFL3FRRG92NnNBZ2J5dy8zc0FWRUR5Y1RFL1BvRHlnQUFBUUJCQUFBRUZnU05BQmNBVDdJRUdCa1JFamtBc0FCRldMQU1MeHV4REIwK1diQUFSVml3Rmk4YnNSWWRQbG13QUVWWXNBRXZHN0VCRHo1WnNoQUJEQkVTT2JBUUw3SUhBUW9yV0NIWUcvUlpzQVRRc0JBUXNCUFFNREVoSXhFR0J4VWpOU1ltSnhFekVSUVdGelV6RlRZM0VUTUVGdk5NVnFQTXp3THpWRmFqU2xqekFhb1dDc3pJRGRHL0FXcituMnRwRFBQeUNSZ0NId0FBQVFCMkFBQUVTd1NOQUJFQVJySUVFaE1SRWprQXNBQkZXTEFCTHh1eEFSMCtXYkFBUlZpd0VDOGJzUkFQUGxtd0FFVllzQWt2RzdFSkR6NVpzZ1FRQVJFU09iQUVMN0lOQVFvcldDSFlHL1JaTURFVE14RTJNeklXRlJFakVUUW1JeUlIRVNOMjg0YUE3ZS96ZFhTQmhmTUVqZjVXSnRiUi9wNEJZWHhwSnYzZ0FBSUFDdi93QmFnRW93QWJBQ01BWkxJTkpDVVJFam13RFJDd0hkQUFzQUJGV0xBT0x4dXhEaDArV2JBQVJWaXdBQzhic1FBUFBsbXlJQTRBRVJJNXNDQXZzaElCQ2l0WUlkZ2I5Rm13QTlDd0lCQ3dDdEN3QUJDeUZRRUtLMWdoMkJ2MFdiQU9FTEljQVFvcldDSFlHL1JaTURFRklBQW5KaVkxTXhRV0Z6NENNeUFBRVJVaEVpRXlOemNYQmdZRElnWUhJVFUwSmdQSi92cit3QXl1djhGVVdBbVA4WkVCQUFFWC9NQVNBVStHY3k5Qk84V2hnS0FJQWt5VkVBRVI2Z3ZkdTExMkRKTGtmdjdsL3ZlVi90QXJFcm9oTEFQdXBZd1docFVBQUFJQVQvL3dCSUVFb3dBV0FCNEFYcklJSHlBUkVqbXdDQkN3RjlBQXNBQkZXTEFBTHh1eEFCMCtXYkFBUlZpd0NDOGJzUWdQUGxteURRQUlFUkk1c0EwdnNBQVFzaEFCQ2l0WUlkZ2I5Rm13Q0JDeUZ3RUtLMWdoMkJ2MFdiQU5FTElhQVFvcldDSFlHL1JaTURFQklBQVhGUlFHQmlNZ0FCRTFJU1ltSXlJSEJ5YzJOaE15TmpjaEZSUVdBamtCQ3dFN0FvejVsdjcrL3VzRFB3ZXpwb1oyTFVGQXlaaUJuZ3I5dEpRRW8vN2MrWHFiK1lnQkhBRUlsWmFhTEJHNklpdjhFcU9PRm9hVkFBQUJBRUwvN0FQb0JJMEFHUUJwc2hJYUd4RVNPUUN3QUVWWXNBSXZHN0VDSFQ1WnNBQkZXTEFMTHh1eEN3OCtXYkFDRUxJQUFRb3JXQ0hZRy9SWnNnUUNBQkVTT2JJWkN3SVJFam13R1Mrd0JkQ3lEd3NDRVJJNXNBc1FzaElCQ2l0WUlkZ2I5Rm13R1JDeUdBY0tLMWdoMkJ2MFdUQXhBU0UxSVJjQkZoWVZGQVFqSWlZMU14WVdNekkyTlRRakl6VUNqZjNlQTFJQi9zYWl3djhBMzlEMzh3UnhaWE56OFgwRHljU2Ivc0FVdjR1b3dMbWhTVkJhVTdDN0FBTUFULy93Qkc4RW5RQU9BQlVBSEFCK3NnTWRIaEVTT2JBREVMQVAwTEFERUxBVzBBQ3dBRVZZc0Fzdkc3RUxIVDVac0FCRldMQURMeHV4QXc4K1diQUxFTElQQVFvcldDSFlHL1Jac2hNTEF4RVNPWHl3RXk4WXRHQVRjQk1DWGJRd0UwQVRBbDJ5OEJNQlhiSUFFd0Z4c0FNUXNoWUJDaXRZSWRnYjlGbXdFeEN5R1FFS0sxZ2gyQnYwV1RBeEFSQUFJeUlBRVRVMEVqWXpNZ0FSQVNJR0J5RW1KZ015TmpjaEZoWUViLzdmN2V6KzJvWHdtL0FCSVAzd2VaUU9BallPazNoNWtRNzl6QStWQWl6KytQN01BVFVCREM2c0FRZUwvc2YrOVFGL25aV1ZuZnpiblpPVG5RQUFBUUE0QUFBRUdnU2RBQ2NBcnJJbEtDa1JFamtBc0FCRldMQWRMeHV4SFIwK1diQUFSVml3REM4YnNRd1BQbG15QmgwTUVSSTVzQVl2c2c4R0FWMndBZEN3QVMreXp3RUJYVUFKSHdFdkFUOEJUd0VFWGJJQUFRRmRzZ0lDQ2l0WUlkZ2I5Rm13QmhDeUJ3SUtLMWdoMkJ2MFdiQU1FTElLQVFvcldDSFlHL1Jac0E3UXNBL1FzQWNRc0JIUXNBWVFzQlBRc0FJUXNCYlFzQUVRc0JqUXNCMFFzaVFCQ2l0WUlkZ2I5Rm15SVNRQkVSSTVzZ3doQVYwd01RRWhGU0VYRlNFVklRWUhJUWNoTlRNMk55TTFNelVuSXpVekp5WTJNeklXRlNNMEppTWlCaGNCeEFHRC9vSURBWHYrY3hJbUFwZ0IvR1VLTkJLV29RT2VtUUVHMkwvRTEvTlVVMDFYQlFLNmtrSVdrMFUxdzhNT2JKTU9TcEluenU3UXRscG5mbmtBQUFFQVJ2L3dBN0FFbmdBaUFLQ3lDaU1rRVJJNUFMQUFSVml3Rmk4YnNSWWRQbG13QUVWWXNBa3ZHN0VKRHo1WnNpSVdDUkVTT2JBaUw3SVBJZ0ZkdEJBaUlDSUNYYklBQWdvcldDSFlHL1Jac0FrUXNnUUJDaXRZSWRnYjlGbXdBQkN3RE5Dd0loQ3dEdEN3SWhDd0U5Q3dFeSt5enhNQlhiWWZFeThUUHhNRFhiSUFFd0Zkc2hBQ0NpdFlJZGdiOUZtd0ZoQ3lHd0VLSzFnaDJCdjBXYkFURUxBZDBMQVFFTEFmMERBeEFTRVdGak15TnhjR0l5SWtKeU0xTXpVak5UTTJOak15RndjbUl5SUhJUlVoRlNFRFR2NkRFWHR2VUhrYmRtN1UvdjhhbDVLU21Cci8wMng2Rmx0MTFpSUJmUDU5QVlNQmhHcG9ITDhmME1TU1hKUEQxaUMvSE5hVFhBQUFCQUIyQUFBSHh3U2VBQU1BRHdBZEFDY0FxckllS0NrUkVqbXdIaEN3QWRDd0hoQ3dCTkN3SGhDd0VOQUFzQUJGV0xBbUx4dXhKaDArV2JBQVJWaXdKQzhic1NRZFBsbXdBRVZZc0FZdkc3RUdIVDVac0FCRldMQWhMeHV4SVE4K1diQUFSVml3SHk4YnNSOFBQbG13QmhDd0RkQ3dEUyt3QXRDd0FpKzJBQUlRQWlBQ0ExMnlBUUlLSzFnaDJCdjBXYkFORUxJVEFnb3JXQ0hZRy9SWnNBWVFzaG9DQ2l0WUlkZ2I5Rm15SUNRaEVSSTVzaVVmSmhFU09UQXhKU0UxSVFFME5pQVdGUlVVQmlBbU5SY1VGak15TmpjMU5DWWpJZ1lWQVNNQkVTTVJNd0VSTXdlSS9jVUNPLzJLdndFMndMNyt5c0d2V2xOUVdBSmRUMDVkL3FieS9mVHo4d0lNOHNpVkFmS1d1YmljU0phNHVKc0ZWMlZpVkZOWFpHTmIvTFFERy96bEJJMzg1QU1jQUFBQ0FDZ0FBQVNxQkkwQUZRQWVBSXl5RFI4Z0VSSTVzQTBRc0JmUUFMQUFSVml3REM4YnNRd2RQbG13QUVWWXNBTXZHN0VERHo1WnNnWUREQkVTT2JBR0w3SUZBUW9yV0NIWUcvUlpzQUhRc0FZUXNBclFzQW92dGc4S0h3b3ZDZ05kdG84S253cXZDZ05kdEI4S0x3b0NjYklKQVFvcldDSFlHL1Jac0JQUXNBWVFzQlRRc0FvUXNCYlFzQXdRc2g0QkNpdFlJZGdiOUZrd01TVWhGU00xSXpVek5TTTFNeEVoTWhZUUJnY2hGU0VCTXpJMk5UUW1JeU1DOXY3MTg5RFEwTkFCNjlIMjdjais5Z0VML3ZYNFlYTjFYdm1abVptMlRiY0NPdFArdE0wRlRRRUVaMVZXWlFBQ0FIei83QVJHQmdBQUR3QWFBR1N5RXhzY0VSSTVzQk1Rc0F6UUFMQUpMN0FBUlZpd0RDOGJzUXdiUGxtd0FFVllzQU12RzdFRER6NVpzQUJGV0xBR0x4dXhCZzgrV2JJRkRBTVJFam15Q2d3REVSSTVzQXdRc2hNQkNpdFlJZGdiOUZtd0F4Q3lHQUVLSzFnaDJCdjBXVEF4QVJRQ0l5SW5CeU1STXhFMk16SVNFU2MwSmlNaUJ4RVdNekkyQkVieng4QnRFZEx6YWJMTThQT0xlNXBFUjVsNmlnSVI5UDdQam5vR0FQM1NmUDdXL3ZvSXBydUYvamVIdkFBQUFRQlEvK3dFQUFST0FCMEFTN0lYSGg4UkVqa0FzQUJGV0xBUUx4dXhFQnMrV2JBQVJWaXdDQzhic1FnUFBsbXlBQUVLSzFnaDJCdjBXYklEQ0JBUkVqbXlGQkFJRVJJNXNCQVFzaGNCQ2l0WUlkZ2I5Rmt3TVNVeU5qY3pEZ0lqSWdBMU5UUTJOak15RmhjakppWWpJZ1lWRlJRV0FrSmFlZ2JrQkhyS2RPYis4bnJobU1QMEJ1UUhlRng1aFlXdWFVOW1zR1FCSy80Wm52dUg1TFJmZHJPeUc2MndBQUlBVC8vc0JCY0dBQUFSQUJ3QVpMSWFIUjRSRWptd0doQ3dCTkFBc0FjdnNBQkZXTEFFTHh1eEJCcytXYkFBUlZpd0RTOGJzUTBQUGxtd0FFVllzQWt2RzdFSkR6NVpzZ1lFRFJFU09iSUxCQTBSRWptd0RSQ3lGUUVLSzFnaDJCdjBXYkFFRUxJYUFRb3JXQ0hZRy9SWk1ERVRORFkyTXpJWEVUTVJJeWNHSXlJbUpqVTNGQll6TWpjUkppTWlCazl3ellLc2F2UFRFV3k3ZnN0MDg0MTdsRVpHa24yTkFpYWYvWXgzQWluNkFIV0pqUDJiQVozQ2dRSFhmY0VBLy84QVd3QUFBcklGdFFBR0FCV3pBQUFDQUV6LzdBUlZCRTRBRHdBWkFFT3lCQm9iRVJJNXNBUVFzQmZRQUxBQVJWaXdCQzhic1FRYlBsbXdBRVZZc0F3dkc3RU1EejVac2hJQkNpdFlJZGdiOUZtd0JCQ3lGd0VLSzFnaDJCdjBXVEF4RXpRMk5qTXlBQlVWRkFZR0l5SUFOUmNVRmpJMk5UUW1JZ1pNZ3V1VzVnRWdmKzJZNXY3aDhwWDhrNWY0bFFJbm4vMkwvczM4RFozOGpRRXgvZ21neE1TMW44WEdBQUlBZlA1Z0JFUUVUZ0FRQUJzQWJySVpIQjBSRWptd0dSQ3dEZEFBc0FCRldMQU5MeHV4RFJzK1diQUFSVml3Q2k4YnNRb2JQbG13QUVWWXNBY3ZHN0VIRVQ1WnNBQkZXTEFFTHh1eEJBOCtXYklHRFFRUkVqbXlDdzBFRVJJNXNBMFFzaFFCQ2l0WUlkZ2I5Rm13QkJDeUdRRUtLMWdoMkJ2MFdUQXhBUlFHQmlNaUp4RWpFVE1YTmpNeUVoY0hOQ1lqSWdjUkZqTXlOZ1JFYjhpQnNXenoyUTVzdXNIdkN2R1JmSkpFUlpONGt3SVJudjJLZFA0QUJkcHhoZjdyN0NlZnduaitGM2pEQUFBQ0FFLytZQVFXQkU0QUVBQWJBR3V5R1J3ZEVSSTVzQmtRc0FUUUFMQUFSVml3QkM4YnNRUWJQbG13QUVWWXNBY3ZHN0VIR3o1WnNBQkZXTEFKTHh1eENSRStXYkFBUlZpd0RTOGJzUTBQUGxteUJnUU5FUkk1c2dzRURSRVNPYklVQVFvcldDSFlHL1Jac0FRUXNoa0JDaXRZSWRnYjlGa3dNUk0wTmpZek1oYzNNeEVqRVFZaklnSW5OeFFXTXpJM0VTWWpJZ1pQYjgyR3Qyc1Iwdk5xcXI3MkMvS1RlSkJHU0l4K2p3SW1vdnlLZ203NkpnSDhjQUVjNGllZXhYWUI5SFBHQUFBQ0FGUC83QVFMQkU0QUZnQWVBSHl5Q0I4Z0VSSTVzQWdRc0JmUUFMQUFSVml3Q0M4YnNRZ2JQbG13QUVWWXNBQXZHN0VBRHo1WnNoc0lBQkVTT2JBYkw3Uy9HODhiQWwyMFh4dHZHd0p4dEI4Ykx4c0NjYktQR3dGZHRPOGIveHNDY2JJTUJ3b3JXQ0hZRy9SWnNBQVFzaEFCQ2l0WUlkZ2I5Rm13Q0JDeUZ3RUtLMWdoMkJ2MFdUQXhCU0lBTlRVME5qWXpNaElWRlNFV0ZqTXlOamNYQmdZRElnWUhJVFUwSmdKMjh2N1BmZUtMM2ZIOVBnK3BqVldTTVRvL3ZhZG1mQkFCMEhNVUFTajNJWjc1aS83MDkzdUZuUzhncGpJNUE1K05mQnB3ZndBQUFnQlIvbFlFQkFST0FCa0FKQUNEc2lJbEpoRVNPYkFpRUxBTDBBQ3dBRVZZc0FNdkc3RURHejVac0FCRldMQUdMeHV4QmhzK1diQUFSVml3Q3k4YnNRc1JQbG13QUVWWXNCY3ZHN0VYRHo1WnNnVURGeEVTT2JBTEVMSVJBUW9yV0NIWUcvUlpzZzhSRnhFU09iSVZBeGNSRWptd0Z4Q3lIUUVLSzFnaDJCdjBXYkFERUxJaUFRb3JXQ0hZRy9SWk1ERVROQkl6TWhjM014RVVBQ01pSmljM0ZqTXlOalUxQmlNaUFqY1VGak15TnhFbUl5SUdVZWZEdldzUjBQNzY3VmV2TnpWMWc0NkNhcTYrNnZLQmM1ZERSSlIyZ0FJbS9RRXJobkw4RVBMKy9pNGhzRCtXbENKMkFTLzJxTGVGQWRGL3RRQUFBUUJyLytzRkpnWEZBQjBBUUxJTUhoOFJFamtBc0FCRldMQU1MeHV4REI4K1diQUFSVml3QXk4YnNRTVBQbG13REJDeUV3RUtLMWdoMkJ2MFdiQURFTElhQVFvcldDSFlHL1JaTURFQkJnQWpJaVFDSnpVMEVpUXpNZ0FYSXlZbUl5SUNGUlVVRWpNeU5qY0ZKQmYrMHZtMi90eWdBWjRCSUxmN0FUUVgvUmFqa0t6TTBxeVJteFlCMnVuKytyUUJSZEk4MVFGS3RQN3o2WmlTL3Vidk5Pdis1SStXQUFFQWEvL3JCU1lGeFFBZ0FGV3lEQ0VpRVJJNUFMQUFSVml3REM4YnNRd2ZQbG13QUVWWXNBTXZHN0VERHo1WnNBd1FzaElCQ2l0WUlkZ2I5Rm13QXhDeUdRRUtLMWdoMkJ2MFdiSWdEQU1SRWptd0lDK3lIUUVLSzFnaDJCdjBXVEF4SlFZRUl5SWtBaWMxTkJJa016SUVGeU1DSVNJQ0J4VVVFak15TmpjUklUVWhCU1pHL3R5d3dQN09yUUtmQVNPMytBRXJIL2t1L3VtcTB3UG92R1NiSC83ZEFoKzhYM0t5QVVqUk1ka0JUN2J3NHdFSC91WHBNK3orM3pBa0FSdkFBQUFDQUpzQUFBVVhCYkFBQ3dBVkFFYXlBeFlYRVJJNXNBTVFzQS9RQUxBQVJWaXdBUzhic1FFZlBsbXdBRVZZc0FBdkc3RUFEejVac0FFUXNnd0JDaXRZSWRnYjlGbXdBQkN5RFFFS0sxZ2gyQnYwV1RBeE14RWhNZ1FTRnhVVUFnUUhBeEV6TWhJMU5UUUNJNXNCdnNnQlFiSURzUDdBek1TdTNQangyZ1d3c2Y3RHlEak0vcit5QXdUaysrWUJEdkFtNmdFTUFBQUNBR3YvNndWeUJjVUFFUUFnQUVheUJDRWlFUkk1c0FRUXNCM1FBTEFBUlZpd0RTOGJzUTBmUGxtd0FFVllzQVF2RzdFRUR6NVpzQTBRc2hVQkNpdFlJZGdiOUZtd0JCQ3lIUUVLSzFnaDJCdjBXVEF4QVJRQ0JDTWlKQUluTlRRU0pETXlCQklYQnpRQ0l5SUNGUlVVRmhZek1oSTNCWEttL3RpMHN2N1lxZ0dsQVNxMHNnRW1xQVQ3M0sycDMyYTJicVRZQ2dMRHp2Nnd1cm9CVHNreHl3Rk53TGYrdWNZUzVBRWkvdHZvSlpQeGhnRUoyZ0FBQWdCci93TUZjZ1hGQUJRQUl3QkdzZ2drSlJFU09iQUlFTEFnMEFDd0FFVllzQkF2RzdFUUh6NVpzQUJGV0xBSUx4dXhDQTgrV2JBUUVMSVlBUW9yV0NIWUcvUlpzQWdRc2lBQkNpdFlJZGdiOUZrd01RRVVBZ2NYQnlVR0l5SWtBaWMxTkJJa0lBUVNGd2MwQWlNaUFoVVZGQllXTXpJU05RVnlsNG52cGY3VlF6NnovdHFxQXFjQktBRm9BU2VvQWZ2Y3JhcmVaclZ2cnRrQ3hzcit2V0xBbFBVTnR3Rk55eTdRQVZLN3QvNnZ6Z1hzQVIvKzNlOGRsL0tFQVNEMUFBQUJBSmNBQUFMdkJJd0FCZ0F5QUxBQVJWaXdCUzhic1FVZFBsbXdBRVZZc0FBdkc3RUFEejVac2dRQUJSRVNPYkFFTDdJREFRb3JXQ0hZRy9SWk1ERWhJeEVGTlNVekF1L3ovcHNDT1I4RGFYck4wQUFCQUc0QUFBUXNCSjRBR1FCWnNna2FHeEVTT1FDd0FFVllzQkV2RzdFUkhUNVpzQUJGV0xBQUx4dXhBQTgrV2JJWUFRb3JXQ0hZRy9SWnNnSVlBQkVTT2JJREFCRVJFam13RVJDeUNRRUtLMWdoMkJ2MFdiSU1BQkVSRWpteUZ4RUFFUkk1TURFaElUVUJOalkxTkNZaklnWVZJelEyTmpNeUZoVVVCZ2NCSVFRcy9HQUIrMFk1YVZwbmUvTjUxNFhLNmxkdS9yRUNTWjhCdWo5alFFaGFlR0J6dkdxM25GcWZadjdXQUFBQkFIWUFBQU9YQmNRQUJ3QXlzZ01JQ1JFU09RQ3dBRVZZc0FZdkc3RUdIVDVac0FCRldMQUZMeHV4QlE4K1diQUdFTElDQVFvcldDSFlHL1JaTURFQk14RWhFU01SSVFLazgvM1M4d0l1QmNUK0JmdzNCSTBBQVFBUC9xTUQ4Z1NOQUJrQVdiSVNHaHNSRWprQXNBd3ZzQUJGV0xBQ0x4dXhBaDArV2JJQUFRb3JXQ0hZRy9SWnNnUUFBaEVTT2JJRkRBSVJFam13QlMrd0RCQ3lFUUVLSzFnaDJCdjBXYkFGRUxJWEF3b3JXQ0hZRy9SWnNoa1hCUkVTT1RBeEFTRTFJUlVCRmhZVkZBWUVJeUluTnhZek1qWTFOQ1lqSXpVQ252MjZBM2YrbmF2YmtQN3lzTWZPT1oydHBNU3F0MGdEeWNTUC9vQWE5N0NqODRSbnRsaTRrcGFTZXdBQUFnQTEvc1FFaXdTTUFBb0FEZ0JTQUxBQVJWaXdDUzhic1FrZFBsbXdBRVZZc0FJdkc3RUNEejVac0FCRldMQUdMeHV4Qmc4K1diSUFBUW9yV0NIWUcvUlpzQVlRc0FYUXNBVXZzZ2dHQUJFU09iQUFFTEFNMExJTkNRSVJFamt3TVNVekZTTVJJeEVoSndFekFTRVJCd1BWdHJieS9WZ0dBcWI2L1dRQnFoZkN3LzdGQVR1VUEvbjhOZ0tBS2dELy93QkxBbzBDcWdXNEF3Y0IxQUFBQXBnQUV3Q3dBRVZZc0Fvdkc3RUtIejVac0JEUU1ERUEvLzhBTlFLWUFyNEZyUU1IQWRnQUFBS1lBQk1Bc0FCRldMQUpMeHV4Q1I4K1diQU4wREF4QVAvL0FFOENqUUt1QmEwREJ3SFpBQUFDbUFBUUFMQUFSVml3QVM4YnNRRWZQbGt3TWYvL0FFMENqUUs1QmJvREJ3SGFBQUFDbUFBVEFMQUFSVml3QUM4YnNRQWZQbG13Rk5Bd01RRC8vd0EyQXBnQ3JnV3RBd2NCMndBQUFwZ0FFQUN3QUVWWXNBVXZHN0VGSHo1Wk1ESC8vd0JMQW8wQ3FnVzRBd2NCM0FBQUFwZ0FHUUN3QUVWWXNCRXZHN0VSSHo1WnNCblFzQkVRc0IvUU1ERUEvLzhBUmdLUEFxTUZ1QU1IQWQwQUFBS1lBQk1Bc0FCRldMQUlMeHV4Q0I4K1diQWEwREF4QUFBQkFHYitvQVFlQkl3QUhBQmRzaGtkSGhFU09RQ3dEaSt3QUVWWXNBRXZHN0VCSFQ1WnNnTUJDaXRZSWRnYjlGbXlCd0VPRVJJNXNBY3ZzaGtCQ2l0WUlkZ2I5Rm15QlFjWkVSSTVzQTRRc2hNQkNpdFlJZGdiOUZteUVSTVpFUkk1c2h3WkV4RVNPVEF4RXhNaEZTRUROamMyRWhVVUJnWWpJaWMzRmpNeU5qVTBKaU1pQmdlSFdnTXAvWm90WlliUDdZWDFwZVMxU29TOWo2dU9lRk5tR3dGMUF4ZlMvcW95QWdMKzkrU1k4NEoxc21PemxJZWlOVHNBQUFFQVEvN0VCQkFFakFBR0FDVUFzQUV2c0FCRldMQUZMeHV4QlIwK1diSURBUW9yV0NIWUcvUlpzZ0FEQlJFU09UQXhBUUVqQVNFMUlRUVEvYmJ6QWo3OU1nUE5CQWI2dmdVRnd3QUNBRS8vOEFadEJKMEFGQUFlQUpHeUZoOGdFUkk1c0JZUXNBdlFBTEFBUlZpd0NpOGJzUW9kUGxtd0FFVllzQXN2RzdFTEhUNVpzQUJGV0xBQUx4dXhBQTgrV2JBQVJWaXdBaThic1FJUFBsbXdDeEN5RFFFS0sxZ2gyQnYwV2JJUUFBc1JFam13RUMreUVRRUtLMWdoMkJ2MFdiQUFFTElUQVFvcldDSFlHL1Jac0FJUXNoVUJDaXRZSWRnYjlGbXdDaEN5R0FFS0sxZ2gyQnYwV1RBeElTRUZJZ0FSTlRRU05qTUZJUlVoRVNFVklSRWhCVGNSSnlJR0ZSVVVGZ1p0L1VmK3Jleisyb1h3bXdGVEFyajl0d0gyL2dvQ1RQdjB6YytHbUprUUFUVUJEQzZzQVFlTEVNVCs4c1AreWc4SUF4UUp3TGMxc3NjQUFnQnovclFFVkFTZ0FCZ0FKQUJUc2g4bEpoRVNPYkFmRUxBTTBBQ3dGQyt3QUVWWXNBd3ZHN0VNSFQ1WnNCUVFzZ0FCQ2l0WUlkZ2I5Rm15R1JRTUVSSTVmTEFaTHhpeUJRRUtLMWdoMkJ2MFdiQU1FTElmQVFvcldDSFlHL1JaTURFRk1qWTNCaU1pQWpVME5qWXpNZ0FSRlJRQ0JDTWlKemNXRXpJM05UUW1JeUlHRlJRV0FlbVl2Umx5cXRIM2U5cUg4UUVVa2Y3enNwNkVMMzNSc0ZLSWYyMkhpb25JdmxvQkV1V1o3WUQrMGY3Mnp1WCtzckk4dGk4QjZYaXNwYlN4a29xd0FBQUNBR0wvNndTRkJLQUFEUUFhQUVheUF4c2NFUkk1c0FNUXNCZlFBTEFBUlZpd0NpOGJzUW9kUGxtd0FFVllzQU12RzdFRER6NVpzQW9Rc2hFQkNpdFlJZGdiOUZtd0F4Q3lGZ0VLSzFnaDJCdjBXVEF4QVJBQUl5SW1BalVRQURNeUZoSUhOQ1lnQmhVVkZCWXpNalkzQklYKzQvT2U4NElCSC9LZjhvSHltLzcybVpxR2haY0NBajcrNmY3RWpnRU14d0VXQVQ2Ty92T251TWZJdWl5MXpjVzAvLy8vdGY1TEFaTUVPZ0lHQUpzQUFQLy8vN1grU3dHVEJEb0NCZ0NiQUFELy93Q1BBQUFCZ2dRNkFBWUFqQUFBLy8vLysvNWNBWUlFT2dBbUFJd0FBQUFHQUtQU0N2Ly9BSThBQUFHQ0JEb0FCZ0NNQUFBQUFRQjIvK3NFRmdTY0FDRUFaYklCSWlNUkVqa0FzQUJGV0xBVkx4dXhGUjArV2JBQVJWaXdIeThic1I4UFBsbXdBRVZZc0JBdkc3RVFEejVac0I4UXNnSUJDaXRZSWRnYjlGbXlDaDhWRVJJNXNBb3ZzQm5Rc2dnRENpdFlJZGdiOUZtd0ZSQ3lEUUVLSzFnaDJCdjBXVEF4SlJZek1qWTFOQ1lqSXpVVEppTWlGUkVqRVRZMk16SVdGd01XRmhVVUJpTWlKd0hyUzBoTlhIeDBWTXBHVWJIdkFkSFBlTTFvK2FHcTJhOThiTnN4WlZKWVI2TUJBVG41L1J3QzhOZlZZVy8rMUJla2dhL0tOZ0QvL3dCSEFna0NWQUxOQWdZQUVRQUFBQUwvOXdBQUJQQUZzQUFQQUIwQWdySVFIaDhSRWptd0VCQ3dCdEFBc0FCRldMQUZMeHV4QlI4K1diQUFSVml3QUM4YnNRQVBQbG15QXdBRkVSSTVzQU12c3M4REFWMnlQd01CY2JKdkF3RnhzaDhEQVhHeW53TUJYYklQQXdGeXNnSUhDaXRZSWRnYjlGbXdFZEN3QUJDeUVnRUtLMWdoMkJ2MFdiQUZFTEliQVFvcldDSFlHL1Jac0FNUXNCM1FNREV6RVNNMU14RWhNZ1FTRlJVVUFnUWpFeU1STXpJMk5UVTBKaU1qRVRPeXU3c0Jyc0VCSzZTbC9zL0ZQK1dqeTlYT3hMSGxBb3lxQW5xcy9zVE1TYy8reHFvQ2pQNCsvZkJHN2ZyK1VnQUFBdi8zQUFBRThBV3dBQThBSFFDQ3NoQWVIeEVTT2JBUUVMQUcwQUN3QUVWWXNBVXZHN0VGSHo1WnNBQkZXTEFBTHh1eEFBOCtXYklEQUFVUkVqbXdBeSt5endNQlhiSS9Bd0Z4c204REFYR3lId01CY2JLZkF3RmRzZzhEQVhLeUFnY0tLMWdoMkJ2MFdiQVIwTEFBRUxJU0FRb3JXQ0hZRy9SWnNBVVFzaHNCQ2l0WUlkZ2I5Rm13QXhDd0hkQXdNVE1SSXpVekVTRXlCQklWRlJRQ0JDTVRJeEV6TWpZMU5UUW1JeU1STTdLN3V3R3V3UUVycEtYK3o4VS81YVBMMWM3RXNlVUNqS29DZXF6K3hNeEp6LzdHcWdLTS9qNzk4RWJ0K3Y1U0FBQUIvOVFBQUFRV0JnQUFHQUIwc2d3WkdoRVNPUUN3RlMrd0FFVllzQVF2RzdFRUd6NVpzQUJGV0xBSEx4dXhCdzgrV2JBQVJWaXdEeThic1E4UFBsbXlMeFVCWGJJUEZRRmRzaGdQRlJFU09iQVlMN0lBQndvcldDSFlHL1Jac2dJRUR4RVNPYkFFRUxJTUFRb3JXQ0hZRy9SWnNBQVFzQkhRc0JnUXNCUFFNREVCSXhFMk15QVRFU01STkNZaklnY1JJeEVqTlRNMU14VXpBbkhuZDdZQldnWHpZVjZTU1BQRHcvUG5CTWYrL1lyK2RmMDlBcnB3WFlMOCt3VEhxbytQQUFFQUxRQUFCTEFGc0FBUEFFd0FzQUJGV0xBS0x4dXhDaDgrV2JBQVJWaXdBaThic1FJUFBsbXlEd29DRVJJNXNBOHZzZ0FIQ2l0WUlkZ2I5Rm13Qk5Dd0R4Q3dCdEN3Q2hDeUNBRUtLMWdoMkJ2MFdiQU0wREF4QVNNUkl4RWpOVE1SSVRVaEZTRVJNd081ei92VDAvNCtCSVArT3M4REV2enVBeEtxQVNqTXpQN1lBQUgvNlAvc0FvVUZRUUFjQUhLeUFCMGVFUkk1QUxBQVJWaXdHeThic1JzYlBsbXdBRVZZc0JFdkc3RVJEejVac0JzUXNBSFFzQnNRc2hnQkNpdFlJZGdiOUZtd0JOQ3dHeEN3RjlDd0Z5K3dCZEN3QlMrd0Z4Q3lGQWNLSzFnaDJCdjBXYkFJMExBUkVMSU1BUW9yV0NIWUcvUlpzQnNRc0J6UXNCd3ZNREVCRVRNVkl4VXpGU01SRkJZek1qY1ZCaU1nRVJFak5UTTFJelV6RVFHdHY3L1kyREUvS2l0VFRmN28wdEt5c2dWQi92bTBwYXIrOHo0M0Nyd1hBVFVCRnFxbHRBRUgvLzhBRWdBQUJVSUhOZ0ltQUNVQUFBRUhBRVFCSXdFMkFCTUFzQUJGV0xBRUx4dXhCQjgrV2JBTTNEQXhBUC8vQUJJQUFBVkNCellDSmdBbEFBQUJCd0IxQWNJQk5nQVRBTEFBUlZpd0JTOGJzUVVmUGxtd0Rkd3dNUUQvL3dBU0FBQUZRZ2MzQWlZQUpRQUFBUWNBblFEREFUWUFFd0N3QUVWWXNBUXZHN0VFSHo1WnNBL2NNREVBLy84QUVnQUFCVUlITEFJbUFDVUFBQUVIQUtRQXhRRTNBQWtBc0FRdnNCYmNNREVBLy84QUVnQUFCVUlIQWdJbUFDVUFBQUVIQUdvQTdnRTJBQllBc0FCRldMQUVMeHV4QkI4K1diQVMzTEFiMERBeC8vOEFFZ0FBQlVJSGxBSW1BQ1VBQUFFSEFLSUJXQUZxQUF3QXNBUXZzQkRjc0JYUU1ESC8vd0FTQUFBRlFnZXhBaVlBSlFBQUFBY0Izd0ZlQVJ6Ly93Qm0vandFNndYRUFpWUFKd0FBQUFjQWVRSEovL3YvL3dDVUFBQUVUQWM5QWlZQUtRQUFBUWNBUkFEb0FUMEFFd0N3QUVWWXNBWXZHN0VHSHo1WnNBM2NNREVBLy84QWxBQUFCRXdIUFFJbUFDa0FBQUVIQUhVQmh3RTlBQk1Bc0FCRldMQUdMeHV4Qmg4K1diQU8zREF4QVAvL0FKUUFBQVJNQno0Q0pnQXBBQUFCQndDZEFJZ0JQUUFUQUxBQVJWaXdCaThic1FZZlBsbXdFTnd3TVFELy93Q1VBQUFFVEFjSkFpWUFLUUFBQVFjQWFnQ3pBVDBBRmdDd0FFVllzQVl2RzdFR0h6NVpzQlBjc0J6UU1ESC8vLy9JQUFBQm9BYzlBaVlBTFFBQUFRY0FSUCtYQVQwQUV3Q3dBRVZZc0FJdkc3RUNIejVac0FYY01ERUEvLzhBb3dBQUFuMEhQUUltQUMwQUFBRUhBSFVBTlFFOUFCTUFzQUJGV0xBREx4dXhBeDgrV2JBRzNEQXhBUC8vLzhzQUFBSjZCejRDSmdBdEFBQUJCd0NkL3pjQlBRQVRBTEFBUlZpd0FpOGJzUUlmUGxtd0NOd3dNUUQvLy8rL0FBQUNoUWNKQWlZQUxRQUFBUWNBYXY5aUFUMEFGZ0N3QUVWWXNBSXZHN0VDSHo1WnNBdmNzQlRRTURILy93Q1VBQUFGRndjc0FpWUFNZ0FBQVFjQXBBRHVBVGNBQ1FDd0JTK3dGZHd3TVFELy93Qm0vK3dGSGdjMkFpWUFNd0FBQVFjQVJBRTZBVFlBRXdDd0FFVllzQXd2RzdFTUh6NVpzQ0RjTURFQS8vOEFadi9zQlI0SE5nSW1BRE1BQUFFSEFIVUIyUUUyQUJNQXNBQkZXTEFOTHh1eERSOCtXYkFoM0RBeEFQLy9BR2IvN0FVZUJ6Y0NKZ0F6QUFBQkJ3Q2RBTm9CTmdBVEFMQUFSVml3REM4YnNRd2ZQbG13STl3d01RRC8vd0JtLyt3RkhnY3NBaVlBTXdBQUFRY0FwQURjQVRjQUV3Q3dBRVZZc0Ewdkc3RU5IejVac0NMY01ERUEvLzhBWnYvc0JSNEhBZ0ltQURNQUFBRUhBR29CQlFFMkFCWUFzQUJGV0xBTUx4dXhEQjgrV2JBbTNMQXYwREF4Ly84QWZmL3NCTDBITmdJbUFEa0FBQUVIQUVRQkVRRTJBQk1Bc0FCRldMQUpMeHV4Q1I4K1diQVMzREF4QVAvL0FIMy83QVM5QnpZQ0pnQTVBQUFCQndCMUFiQUJOZ0FKQUxBQUw3QVQzREF4QVAvL0FIMy83QVM5QnpjQ0pnQTVBQUFCQndDZEFMRUJOZ0FUQUxBQVJWaXdDUzhic1FrZlBsbXdGZHd3TVFELy93QjkvK3dFdlFjQ0FpWUFPUUFBQVFjQWFnRGNBVFlBRmdDd0FFVllzQWt2RzdFSkh6NVpzQmpjc0NIUU1ESC8vd0FIQUFBRTFnYzJBaVlBUFFBQUFRY0FkUUdIQVRZQUV3Q3dBRVZZc0FFdkc3RUJIejVac0F2Y01ERUEvLzhBV3Yvc0Evc0dBQUltQUVVQUFBRUhBRVFBclFBQUFCTUFzQUJGV0xBWEx4dXhGeHMrV2JBcjNEQXhBUC8vQUZyLzdBUDdCZ0FDSmdCRkFBQUJCd0IxQVV3QUFBQUpBTEFYTDdBczNEQXhBUC8vQUZyLzdBUDdCZ0VDSmdCRkFBQUJCZ0NkVFFBQUV3Q3dBRVZZc0Jjdkc3RVhHejVac0M3Y01ERUEvLzhBV3Yvc0Evc0Y5Z0ltQUVVQUFBRUdBS1JQQVFBVEFMQUFSVml3Rnk4YnNSY2JQbG13TGR3d01RRC8vd0JhLyt3RCt3WE1BaVlBUlFBQUFRWUFhbmdBQUJZQXNBQkZXTEFYTHh1eEZ4cytXYkF4M0xBNjBEQXgvLzhBV3Yvc0Evc0dYZ0ltQUVVQUFBRUhBS0lBNGdBMEFCWUFzQUJGV0xBWEx4dXhGeHMrV2JBdjNMQTMwREF4Ly84QVd2L3NBL3NHZkFJbUFFVUFBQUFIQWQ4QTZQL24vLzhBVC80OEEvVUVUZ0ltQUVjQUFBQUhBSGtCUGYvNy8vOEFVLy9zQkFzR0FBSW1BRWtBQUFFSEFFUUFvUUFBQUJNQXNBQkZXTEFJTHh1eENCcytXYkFmM0RBeEFQLy9BRlAvN0FRTEJnQUNKZ0JKQUFBQkJ3QjFBVUFBQUFBSkFMQUlMN0FnM0RBeEFQLy9BRlAvN0FRTEJnRUNKZ0JKQUFBQkJnQ2RRUUFBRXdDd0FFVllzQWd2RzdFSUd6NVpzQ0xjTURFQS8vOEFVLy9zQkFzRnpBSW1BRWtBQUFFR0FHcHNBQUFXQUxBQVJWaXdDQzhic1FnYlBsbXdKZHl3THRBd01mLy8vN1FBQUFHTUJma0NKZ0NNQUFBQkJnQkVnL2tBRXdDd0FFVllzQUl2RzdFQ0d6NVpzQVhjTURFQS8vOEFqd0FBQW1rRitRSW1BSXdBQUFFR0FIVWgrUUFUQUxBQVJWaXdBeThic1FNYlBsbXdCdHd3TVFELy8vKzNBQUFDWmdYNkFpWUFqQUFBQVFjQW5mOGovL2tBRXdDd0FFVllzQUl2RzdFQ0d6NVpzQWpjTURFQS8vLy9xd0FBQW5FRnhRSW1BSXdBQUFFSEFHci9Udi81QUJZQXNBQkZXTEFDTHh1eEFocytXYkFMM0xBVTBEQXgvLzhBZVFBQUEvZ0Y5Z0ltQUZJQUFBRUdBS1JWQVFBSkFMQURMN0FjM0RBeEFQLy9BRS8vN0FROUJnQUNKZ0JUQUFBQkJ3QkVBTFlBQUFBVEFMQUFSVml3QkM4YnNRUWJQbG13SE53d01RRC8vd0JQLyt3RVBRWUFBaVlBVXdBQUFRY0FkUUZWQUFBQUNRQ3dCQyt3SGR3d01RRC8vd0JQLyt3RVBRWUJBaVlBVXdBQUFRWUFuVllBQUJNQXNBQkZXTEFFTHh1eEJCcytXYkFmM0RBeEFQLy9BRS8vN0FROUJmWUNKZ0JUQUFBQkJnQ2tXQUVBQ1FDd0JDK3dKdHd3TVFELy93QlAvK3dFUFFYTUFpWUFVd0FBQVFjQWFnQ0JBQUFBRmdDd0FFVllzQVF2RzdFRUd6NVpzQ0xjc0N2UU1ESC8vd0IzLyt3RDl3WUFBaVlBV1FBQUFRY0FSQUN2QUFBQUV3Q3dBRVZZc0Fjdkc3RUhHejVac0JMY01ERUEvLzhBZC8vc0EvY0dBQUltQUZrQUFBRUhBSFVCVGdBQUFBa0FzQVl2c0JQY01ERUEvLzhBZC8vc0EvY0dBUUltQUZrQUFBRUdBSjFQQUFBVEFMQUFSVml3Qnk4YnNRY2JQbG13RmR3d01RRC8vd0IzLyt3RDl3WE1BaVlBV1FBQUFRWUFhbm9BQUJZQXNBQkZXTEFITHh1eEJ4cytXYkFZM0xBaDBEQXgvLzhBRFA1TEE5WUdBQUltQUYwQUFBRUhBSFVCRmdBQUFBa0FzQUV2c0JMY01ERUEvLzhBRFA1TEE5WUZ6QUltQUYwQUFBRUdBR3BDQUFBV0FMQUFSVml3RHk4YnNROGJQbG13Rjl5d0lOQXdNZi8vQUJJQUFBVkNCdW9DSmdBbEFBQUJCd0J3QUw0Qk9nQVRBTEFBUlZpd0JDOGJzUVFmUGxtd0ROd3dNUUQvL3dCYS8rd0Qrd1cwQWlZQVJRQUFBUVlBY0VnRUFBa0FzQmN2c0NyY01ERUEvLzhBRWdBQUJVSUhIQUltQUNVQUFBRUhBS0FBOWdFMkFCTUFzQUJGV0xBRUx4dXhCQjgrV2JBTzNEQXhBUC8vQUZyLzdBUDdCZVlDSmdCRkFBQUJCd0NnQUlBQUFBQVRBTEFBUlZpd0Z5OGJzUmNiUGxtd0xkd3dNUUFBQWdBUy9sSUZRZ1d3QUJZQUdRQjBzaGthR3hFU09iQVpFTEFXMEFDd0FFVllzQll2RzdFV0h6NVpzQUJGV0xBVUx4dXhGQTgrV2JBQVJWaXdBUzhic1FFUFBsbXdBRVZZc0F3dkc3RU1FVDVac2djRENpdFlJZGdiOUZtd0FSQ3dFZEN3RVMreUZ4UVdFUkk1c0JjdnNoTUJDaXRZSWRnYjlGbXlHUllVRVJJNU1ERUJBU01HQmhVVU16STNGd1lqSWlZMU5EY0RJUU1oQVFNaEF3TWJBaWMrVjBwSExDNFZTVnhmZEpWei9jeDIvdmtDSm1JQnB0TUZzUHBRT0Y0eFJCZU9MRzVialdJQlNmNnRCYkQ4YndKY0FBQUNBRnIrVWdQN0JFNEFMUUE0QUtheUZ6azZFUkk1c0JjUXNDL1FBTEFBUlZpd0Z5OGJzUmNiUGxtd0FFVllzQ2t2RzdFcEVUNVpzQUJGV0xBRUx4dXhCQTgrV2JBQVJWaXdIaThic1I0UFBsbXdBTkN3QUMreUFoY0VFUkk1c2dzWEJCRVNPYkFMTDdBWEVMSVBBUW9yV0NIWUcvUlpzaElMRHhFU09VQUpEQkljRWl3U1BCSUVYYkFwRUxJa0F3b3JXQ0hZRy9SWnNBUVFzaTRCQ2l0WUlkZ2I5Rm13Q3hDeU1nRUtLMWdoMkJ2MFdUQXhKU1luQmlNaUpqVTBKRE16TlRRbUl5SUdGU00wTmpZek1oWVhFUlFYRlNNR0JoVVVNekkzRndZaklpWTFOQU15TmpjMUl5SUdGUlFXQXY4TERYU29vODRCQWUrVlhtQlRhdk4yeTMyKzRnTXBLbGRLUnl3dUZVbGNYM1IyU0g4Z2c0ZUlYUWNaUlhtNmlhMjVSMVJsVTBCWm0xaS9yZjRZa2xjUk9GNHhSQmVPTEc1YmpBRUlSanZNWGxaR1UvLy9BR2IvN0FUckIwc0NKZ0FuQUFBQkJ3QjFBY0FCU3dBSkFMQU1MN0FnM0RBeEFQLy9BRS8vN0FQMUJnQUNKZ0JIQUFBQkJ3QjFBU2tBQUFBSkFMQVBMN0FmM0RBeEFQLy9BR2IvN0FUckIwd0NKZ0FuQUFBQkJ3Q2RBTUVCU3dBVEFMQUFSVml3REM4YnNRd2ZQbG13SU53d01RRC8vd0JQLyt3RDlRWUJBaVlBUndBQUFRWUFuU29BQUJNQXNBQkZXTEFQTHh1eER4cytXYkFmM0RBeEFQLy9BR2IvN0FUckJ5a0NKZ0FuQUFBQkJ3Q2hBYWNCVkFBVEFMQUFSVml3REM4YnNRd2ZQbG13SnR3d01RRC8vd0JQLyt3RDlRWGVBaVlBUndBQUFRY0FvUUVRQUFrQUV3Q3dBRVZZc0E4dkc3RVBHejVac0NYY01ERUEvLzhBWnYvc0JPc0hUQUltQUNjQUFBRUhBSjRBMkFGTEFBa0FzQXd2c0NMY01ERUEvLzhBVC8vc0EvVUdBUUltQUVjQUFBRUdBSjVCQUFBSkFMQVBMN0FoM0RBeEFQLy9BSlFBQUFUU0J6NENKZ0FvQUFBQkJ3Q2VBR2NCUFFBSkFMQUJMN0FhM0RBeEFQLy9BRS8vN0FWYkJnSUFKZ0JJQUFBQkJ3R2lCQUVFL0FBR0FMQWVMekF4Ly84QWxBQUFCRXdHOFFJbUFDa0FBQUVIQUhBQWd3RkJBQk1Bc0FCRldMQUdMeHV4Qmg4K1diQU4zREF4QVAvL0FGUC83QVFMQmJRQ0pnQkpBQUFCQmdCd1BBUUFDUUN3Q0Mrd0h0d3dNUUQvL3dDVUFBQUVUQWNqQWlZQUtRQUFBUWNBb0FDN0FUMEFFd0N3QUVWWXNBWXZHN0VHSHo1WnNBL2NNREVBLy84QVUvL3NCQXNGNWdJbUFFa0FBQUVHQUtCMEFBQVRBTEFBUlZpd0NDOGJzUWdiUGxtd0lkd3dNUUQvL3dDVUFBQUVUQWNiQWlZQUtRQUFBUWNBb1FGdUFVWUFFd0N3QUVWWXNBWXZHN0VHSHo1WnNCVGNNREVBLy84QVUvL3NCQXNGM2dJbUFFa0FBQUVIQUtFQkp3QUpBQk1Bc0FCRldMQUlMeHV4Q0JzK1diQW0zREF4QUFBQkFKVCtVZ1JNQmJBQUd3Q0FzaEVjSFJFU09RQ3dBRVZZc0JZdkc3RVdIejVac0FCRldMQVBMeHV4RHhFK1diQUFSVml3QkM4YnNRUVBQbG13QUVWWXNCUXZHN0VVRHo1WnNob1VGaEVTT2JBYUw3SUJBUW9yV0NIWUcvUlpzQlFRc2dJQkNpdFlJZGdiOUZtd0E5Q3dEeEN5Q2dNS0sxZ2gyQnYwV2JBV0VMSVlBUW9yV0NIWUcvUlpNREVCSVJFaEZTTUdCaFVVTXpJM0Z3WWpJaVkxTkRjaEVTRVZJUkVoQStmOXFnSzdiMWRLUnl3dUZVbGNYM1NIL1pNRHNmMU1BbFlDaXY1QXlqaGVNVVFYaml4dVc0WmZCYkRNL200QUFBSUFVLzV0QkFzRVRnQWpBQ3NBcGJJUkxDMFJFam13RVJDd0pOQUFzQUJGV0xBWkx4dXhHUnMrV2JBQVJWaXdEQzhic1F3UlBsbXdBRVZZc0JFdkc3RVJEejVac2dJUkdSRVNPYkFNRUxJSEF3b3JXQ0hZRy9SWnNpZ1pFUkVTT2JBb0w3UWZLQzhvQW5HMHZ5alBLQUpkc284b0FWMjBYeWh2S0FKeHRPOG8veWdDY2JJZEJ3b3JXQ0hZRy9SWnNCRVFzaUVCQ2l0WUlkZ2I5Rm15SXhrUkVSSTVzQmtRc2lRQkNpdFlJZGdiOUZrd01TVUdCd1lHRlJRek1qY1hCaU1pSmpVME55WUFKelUwTmpZek1oSVJGU0VXRmpNeU53RWlCZ2NoTlNZbUEvcEpjVmRLUnl3dUZVbGNYM1JRei83N0JuM2lpOTN4L1QwTG5YZW5hZjdGWkhzUkFjOEljcmhxTXpoZU1VUVhqaXh1VzJaU0RRRVQxenFpLzQ3KzV2NytZb2FjaHdKV2pIMFNlbjMvL3dDVUFBQUVUQWMrQWlZQUtRQUFBUWNBbmdDZkFUMEFFd0N3QUVWWXNBWXZHN0VHSHo1WnNCSGNNREVBLy84QVUvL3NCQXNHQVFJbUFFa0FBQUVHQUo1WUFBQUpBTEFJTDdBaTNEQXhBUC8vQUdyLzdBVHdCMHdDSmdBckFBQUJCd0NkQUw0QlN3QVRBTEFBUlZpd0N5OGJzUXNmUGxtd0lkd3dNUUQvL3dCUy9sWUVEQVlCQWlZQVN3QUFBUVlBblVBQUFCTUFzQUJGV0xBREx4dXhBeHMrV2JBbjNEQXhBUC8vQUdyLzdBVHdCekVDSmdBckFBQUJCd0NnQVBFQlN3QVRBTEFBUlZpd0N5OGJzUXNmUGxtd0l0d3dNUUQvL3dCUy9sWUVEQVhtQWlZQVN3QUFBUVlBb0hNQUFCTUFzQUJGV0xBREx4dXhBeHMrV2JBbzNEQXhBUC8vQUdyLzdBVHdCeWtDSmdBckFBQUJCd0NoQWFRQlZBQVRBTEFBUlZpd0N5OGJzUXNmUGxtd0o5d3dNUUQvL3dCUy9sWUVEQVhlQWlZQVN3QUFBUWNBb1FFbUFBa0FFd0N3QUVWWXNBTXZHN0VER3o1WnNDM2NNREVBLy84QWF2MzVCUEFGeEFJbUFDc0FBQUFIQWFJQnUvNlMvLzhBVXY1V0JBd0dxUUltQUVzQUFBRUhBYmtCSndCK0FBa0FzQU12c0NuY01ERUEvLzhBbEFBQUJSZ0hQZ0ltQUN3QUFBRUhBSjBBNGdFOUFCTUFzQUJGV0xBSEx4dXhCeDgrV2JBUTNEQXhBUC8vQUhrQUFBUDRCMTRDSmdCTUFBQUJCd0NkQUJjQlhRQUpBTEFRTDdBVDNEQXhBUC8vLzdNQUFBS1FCek1DSmdBdEFBQUJCd0NrL3prQlBnQVRBTEFBUlZpd0F5OGJzUU1mUGxtd0I5d3dNUUQvLy8rZkFBQUNmQVh2QWlZQWpBQUFBUWNBcFA4bC8vb0FDUUN3QWkrd0Q5d3dNUUQvLy8rNUFBQUNrQWJ4QWlZQUxRQUFBUWNBY1A4eUFVRUFFd0N3QUVWWXNBSXZHN0VDSHo1WnNBWGNNREVBLy8vL3BRQUFBbndGclFJbUFJd0FBQUVIQUhEL0h2LzlBQk1Bc0FCRldMQUNMeHV4QWhzK1diQUYzREF4QVAvLy85OEFBQUpsQnlNQ0pnQXRBQUFCQndDZy8yb0JQUUFUQUxBQVJWaXdBaThic1FJZlBsbXdCOXd3TVFELy8vL0xBQUFDVVFYZkFpWUFqQUFBQVFjQW9QOVcvL2tBRXdDd0FFVllzQUl2RzdFQ0d6NVpzQWZjTURFQS8vOEFGLzVZQVo4RnNBSW1BQzBBQUFBR0FLUHVCdi8vQUFEK1VnR1FCZFVDSmdCTkFBQUFCZ0NqMXdELy93Q2RBQUFCb3djYkFpWUFMUUFBQVFjQW9RQWNBVVlBRXdDd0FFVllzQUl2RzdFQ0h6NVpzQXpjTURFQS8vOEFvLy9zQmlZRnNBQW1BQzBBQUFBSEFDNENRZ0FBLy84QWZmNUxBNUFGMVFBbUFFMEFBQUFIQUU0Q0N3QUEvLzhBTGYvc0JLc0hOd0ltQUM0QUFBRUhBSjBCYUFFMkFCTUFzQUJGV0xBQUx4dXhBQjgrV2JBVTNEQXhBUC8vLzdYK1N3SnJCZDhDSmdDYkFBQUJCd0NkL3lqLzNnQVRBTEFBUlZpd0RDOGJzUXdiUGxtd0Vkd3dNUUQvL3dDVS9ma0ZHQVd3QWlZQUx3QUFBQWNCb2dHZC9wTC8vd0I5L2ZrRU5nWUFBaVlBVHdBQUFBY0JvZ0V0L3BMLy93Q1VBQUFFSmdjMkFpWUFNQUFBQVFjQWRRQXBBVFlBRXdDd0FFVllzQVV2RzdFRkh6NVpzQWpjTURFQS8vOEFpZ0FBQW1JSGtRSW1BRkFBQUFFSEFIVUFHZ0dSQUJNQXNBQkZXTEFETHh1eEF5RStXYkFHM0RBeEFQLy9BSlQ5K1FRbUJiQUNKZ0F3QUFBQUJ3R2lBVzMra3YvL0FGWDkrUUYvQmdBQ0pnQlFBQUFBQndHaUFCRCtrdi8vQUpRQUFBUW1CYkVDSmdBd0FBQUJCd0dpQWdvRXF3QVFBTEFBUlZpd0NpOGJzUW9mUGxrd01mLy9BSXdBQUFMbkJnSUFKZ0JRQUFBQkJ3R2lBWTBFL0FBUUFMQUFSVml3Q0M4YnNRZ2hQbGt3TWYvL0FKUUFBQVFtQmJBQ0pnQXdBQUFBQndDaEFjcjkxUC8vQUl3QUFBTHJCZ0FBSmdCUUFBQUFCd0NoQVdUOXIvLy9BSlFBQUFVWEJ6WUNKZ0F5QUFBQkJ3QjFBZXNCTmdBVEFMQUFSVml3Q0M4YnNRZ2ZQbG13RE53d01RRC8vd0I1QUFBRCtBWUFBaVlBVWdBQUFRY0FkUUZTQUFBQUNRQ3dBeSt3RTl3d01RRC8vd0NVL2ZrRkZ3V3dBaVlBTWdBQUFBY0JvZ0hjL3BMLy93QjUvZmtEK0FST0FpWUFVZ0FBQUFjQm9nRkIvcEwvL3dDVUFBQUZGd2MzQWlZQU1nQUFBUWNBbmdFREFUWUFFd0N3QUVWWXNBWXZHN0VHSHo1WnNBL2NNREVBLy84QWVRQUFBL2dHQVFJbUFGSUFBQUVHQUo1cUFBQUpBTEFETDdBVjNEQXhBUC8vLzZVQUFBUDRCZ01DSmdCU0FBQUJCd0dpLzJBRS9RQVFBTEFBUlZpd0ZTOGJzUlVoUGxrd01mLy9BR2IvN0FVZUJ1b0NKZ0F6QUFBQkJ3QndBTlVCT2dBVEFMQUFSVml3REM4YnNRd2ZQbG13SU53d01RRC8vd0JQLyt3RVBRVzBBaVlBVXdBQUFRWUFjRkVFQUFrQXNBUXZzQnZjTURFQS8vOEFadi9zQlI0SEhBSW1BRE1BQUFFSEFLQUJEUUUyQUJNQXNBQkZXTEFNTHh1eERCOCtXYkFpM0RBeEFQLy9BRS8vN0FROUJlWUNKZ0JUQUFBQkJ3Q2dBSWtBQUFBVEFMQUFSVml3QkM4YnNRUWJQbG13SHR3d01RRC8vd0JtLyt3RkhnYzFBaVlBTXdBQUFRY0FwUUZqQVRZQUZnQ3dBRVZZc0Ewdkc3RU5IejVac0NIY3NDWFFNREgvL3dCUC8rd0VQUVgvQWlZQVV3QUFBUWNBcFFEZkFBQUFGZ0N3QUVWWXNBUXZHN0VFR3o1WnNCM2NzQ0hRTURILy93Q1VBQUFFM2djMkFpWUFOZ0FBQVFjQWRRRnhBVFlBQ1FDd0JDK3dHdHd3TVFELy93QjhBQUFDOVFZQUFpWUFWZ0FBQVFjQWRRQ3RBQUFBQ1FDd0N5K3dFTnd3TVFELy93Q1UvZmtFM2dXd0FpWUFOZ0FBQUFjQm9nRnUvcEwvL3dCUC9ma0N0QVJPQWlZQVZnQUFBQWNCb2dBSy9wTC8vd0NVQUFBRTNnYzNBaVlBTmdBQUFRY0FuZ0NKQVRZQUNRQ3dCQyt3SE53d01RRC8vd0E0QUFBQytnWUJBaVlBVmdBQUFRWUFuc1lBQUFrQXNBc3ZzQkxjTURFQS8vOEFTdi9zQklvSE5nSW1BRGNBQUFFSEFIVUJqZ0UyQUFrQXNBa3ZzQ3JjTURFQS8vOEFTLy9zQThvR0FBSW1BRmNBQUFFSEFIVUJPZ0FBQUFrQXNBa3ZzQ25jTURFQS8vOEFTdi9zQklvSE53SW1BRGNBQUFFSEFKMEFqd0UyQUJNQXNBQkZXTEFKTHh1eENSOCtXYkFxM0RBeEFQLy9BRXYvN0FQS0JnRUNKZ0JYQUFBQkJnQ2RPd0FBRXdDd0FFVllzQWt2RzdFSkd6NVpzQ25jTURFQS8vOEFTdjVCQklvRnhBSW1BRGNBQUFBSEFIa0JuUUFBLy84QVMvNDRBOG9FVGdJbUFGY0FBQUFIQUhrQlJQLzMvLzhBU3YzNUJJb0Z4QUltQURjQUFBQUhBYUlCaWY2Uy8vOEFTLzM1QThvRVRnSW1BRmNBQUFBSEFhSUJNUDZTLy84QVN2L3NCSW9ITndJbUFEY0FBQUVIQUo0QXBnRTJBQWtBc0FrdnNDemNNREVBLy84QVMvL3NBOG9HQVFJbUFGY0FBQUVHQUo1U0FBQUpBTEFKTDdBcjNEQXhBUC8vQUMzOStRU3dCYkFDSmdBNEFBQUFCd0dpQVhmK2t2Ly9BQWo5K1FKeUJVRUNKZ0JZQUFBQUJ3R2lBTWora3YvL0FDMytSQVN3QmJBQ0pnQTRBQUFBQndCNUFZc0FBLy8vQUFqK1FRS2xCVUVDSmdCWUFBQUFCd0I1QU53QUFQLy9BQzBBQUFTd0J6Y0NKZ0E0QUFBQkJ3Q2VBSmdCTmdBVEFMQUFSVml3Qmk4YnNRWWZQbG13RGR3d01RRC8vd0FJLyt3REp3YURBQ1lBV0FBQUFBY0JvZ0hOQlgzLy93QjkvK3dFdlFjc0FpWUFPUUFBQVFjQXBBQ3pBVGNBRXdDd0FFVllzQkF2RzdFUUh6NVpzQlRjTURFQS8vOEFkLy9zQS9jRjlnSW1BRmtBQUFFR0FLUlJBUUFUQUxBQVJWaXdEUzhic1EwYlBsbXdGTnd3TVFELy93QjkvK3dFdlFicUFpWUFPUUFBQVFjQWNBQ3NBVG9BQ1FDd0FDK3dFZHd3TVFELy93QjMvK3dEOXdXMEFpWUFXUUFBQVFZQWNFb0VBQk1Bc0FCRldMQUdMeHV4QmhzK1diQVMzREF4QVAvL0FIMy83QVM5Qnh3Q0pnQTVBQUFCQndDZ0FPUUJOZ0FUQUxBQVJWaXdDUzhic1FrZlBsbXdGTnd3TVFELy93QjMvK3dEOXdYbUFpWUFXUUFBQVFjQW9BQ0NBQUFBRXdDd0FFVllzQWN2RzdFSEd6NVpzQlRjTURFQS8vOEFmZi9zQkwwSGxBSW1BRGtBQUFFSEFLSUJSZ0ZxQUF3QXNBQXZzQmJjc0J2UU1ESC8vd0IzLyt3RDl3WmVBaVlBV1FBQUFRY0FvZ0RrQURRQURBQ3dCaSt3RnR5d0c5QXdNZi8vQUgzLzdBUzlCelVDSmdBNUFBQUJCd0NsQVRvQk5nQVdBTEFBUlZpd0VDOGJzUkFmUGxtd0U5eXdGOUF3TWYvL0FIZi83QVF1QmY4Q0pnQlpBQUFCQndDbEFOZ0FBQUFNQUxBR0w3QVQzTEFWMERBeEFBRUFmZjZKQkwwRnNBQWZBRmV5SENBaEVSSTVBTEFBUlZpd0dDOGJzUmdmUGxtd0FFVllzQk12RzdFVER6NVpzQUJGV0xBT0x4dXhEaGMrV2JJRUV4Z1JFam15Q1FNS0sxZ2gyQnYwV2JBVEVMSWNBUW9yV0NIWUcvUlpzQmdRc0IvUU1ERUJFUlFHQndZR0ZSUXpNamNYQmlNaUpqVTBOeUFBTlJFekVSUVdNeUFSRVFTOWhYNDlUMGNzTGhWSlhGOTBOdjhBL3R2OGxKQUJKQVd3L0RLWTVEMHBXVGRFRjQ0c2JsdFZSUUVNNndQTi9ES1NtZ0UwQThZQUFRQjMvbElEOXdRNkFCOEFacklhSUNFUkVqa0FzQUJGV0xBWEx4dXhGeHMrV2JBQVJWaXdFaThic1JJUFBsbXdBRVZZc0I4dkc3RWZEejVac0FCRldMQUtMeHV4Q2hFK1diSUZBd29yV0NIWUcvUlpzQjhRc0EvUXNBOHZzQklRc2hvQkNpdFlJZGdiOUZtd0Z4Q3dIZEF3TVNFR0JoVVVNekkzRndZaklpWTFORGNuQmlNaUpqVVJNeEVVTXpJM0VUTVJBK0pYU2tjc0xoVkpYRjkwa2dWcnhiQzE4NnV4UHZNNFhqRkVGNDRzYmx1TVlXSit6c01DdmYxR3puOERDZnZHLy84QU1BQUFCdVVITndJbUFEc0FBQUVIQUowQnFBRTJBQk1Bc0FCRldMQU1MeHV4REI4K1diQVAzREF4QVAvL0FDRUFBQVhNQmdFQ0pnQmJBQUFCQndDZEFRb0FBQUFUQUxBQVJWaXdDeThic1FzYlBsbXdFZHd3TVFELy93QUhBQUFFMWdjM0FpWUFQUUFBQVFjQW5RQ0lBVFlBRXdDd0FFVllzQUV2RzdFQkh6NVpzQXZjTURFQS8vOEFEUDVMQTlZR0FRSW1BRjBBQUFFR0FKMFhBQUFUQUxBQVJWaXdEeThic1E4YlBsbXdGTnd3TVFELy93QUhBQUFFMWdjQ0FpWUFQUUFBQVFjQWFnQ3pBVFlBRmdDd0FFVllzQWd2RzdFSUh6NVpzQkRjc0JuUU1ESC8vd0JRQUFBRWpBYzJBaVlBUGdBQUFRY0FkUUdEQVRZQUV3Q3dBRVZZc0Fjdkc3RUhIejVac0F6Y01ERUEvLzhBVWdBQUE4QUdBQUltQUY0QUFBRUhBSFVCR3dBQUFCTUFzQUJGV0xBSEx4dXhCeHMrV2JBTTNEQXhBUC8vQUZBQUFBU01CeFFDSmdBK0FBQUJCd0NoQVdvQlB3QVRBTEFBUlZpd0J5OGJzUWNmUGxtd0V0d3dNUUQvL3dCU0FBQUR3QVhlQWlZQVhnQUFBUWNBb1FFQ0FBa0FFd0N3QUVWWXNBY3ZHN0VIR3o1WnNCTGNNREVBLy84QVVBQUFCSXdITndJbUFENEFBQUVIQUo0QW13RTJBQWtBc0FjdnNBN2NNREVBLy84QVVnQUFBOEFHQVFJbUFGNEFBQUVHQUo0ekFBQUpBTEFITDdBTzNEQXhBUC8vLy9ZQUFBZFhCMElDSmdDQkFBQUJCd0IxQXJzQlFnQVRBTEFBUlZpd0JpOGJzUVlmUGxtd0Zkd3dNUUQvL3dCSS8rd0doQVlCQWlZQWhnQUFBUWNBZFFKeEFBRUFDUUN3Rnkrd1A5d3dNUUQvL3dCcC82RUZJZ2VBQWlZQWd3QUFBUWNBZFFIZ0FZQUFFd0N3QUVWWXNCQXZHN0VRSHo1WnNDemNNREVBLy84QVQvOTNCRDBGL2dJbUFJa0FBQUVIQUhVQk1QLytBQk1Bc0FCRldMQUVMeHV4QkJzK1diQW8zREF4QVAvLy82WUFBQVFxQkkwQ0pnRzlBQUFCQndIZS94Yi9iZ0JHQUxJZkZ3RnhzbThYQVhHeS94Y0JjYklQRndGeXRxOFh2eGZQRndOeXN2OFhBWEt5WHhjQmNyYS9GODhYM3hjRGNiSS9Gd0Z4dE44WDd4Y0NYYlFmRnk4WEFsMHdNZi8vLzZZQUFBUXFCSTBDSmdHOUFBQUJCd0hlL3hiL2JnQkdBTElmRndGeHNtOFhBWEd5L3hjQmNiSVBGd0Z5dHE4WHZ4ZlBGd055c3Y4WEFYS3lYeGNCY3JhL0Y4OFgzeGNEY2JJL0Z3Rnh0TjhYN3hjQ1hiUWZGeThYQWwwd01mLy9BQ1FBQUFRV0JJMENKZ0hOQUFBQkJnSGVNcjRBQ0FDeUFBc0JYVEF4Ly84QUNRQUFCSlFHSGdJbUFib0FBQUVIQUVRQXh3QWVBQk1Bc0FCRldMQUVMeHV4QkIwK1diQU0zREF4QVAvL0FBa0FBQVNVQmg0Q0pnRzZBQUFCQndCMUFXWUFIZ0FUQUxBQVJWaXdCUzhic1FVZFBsbXdEZHd3TVFELy93QUpBQUFFbEFZZkFpWUJ1Z0FBQVFZQW5XY2VBQk1Bc0FCRldMQUVMeHV4QkIwK1diQVAzREF4QVAvL0FBa0FBQVNVQmhRQ0pnRzZBQUFCQmdDa2FSOEFDUUN3QkMrd0Z0d3dNUUQvL3dBSkFBQUVsQVhxQWlZQnVnQUFBUWNBYWdDU0FCNEFGZ0N3QUVWWXNBUXZHN0VFSFQ1WnNCTGNzQnZRTURILy93QUpBQUFFbEFaOEFpWUJ1Z0FBQVFjQW9nRDhBRklBRmdDd0FFVllzQVF2RzdFRUhUNVpzQkRjc0JqUU1ESC8vd0FKQUFBRWxBYVpBaVlCdWdBQUFBY0Izd0VDQUFULy93QlAva0VFUXdTZEFpWUJ2QUFBQUFjQWVRRnJBQUQvL3dCMkFBQUR0UVllQWlZQnZnQUFBUWNBUkFDV0FCNEFFd0N3QUVWWXNBWXZHN0VHSFQ1WnNBM2NNREVBLy84QWRnQUFBN1VHSGdJbUFiNEFBQUVIQUhVQk5RQWVBQk1Bc0FCRldMQUhMeHV4QngwK1diQU8zREF4QVAvL0FIWUFBQU8xQmg4Q0pnRytBQUFCQmdDZE5oNEFFd0N3QUVWWXNBWXZHN0VHSFQ1WnNCRGNNREVBLy84QWRnQUFBN1VGNmdJbUFiNEFBQUVHQUdwaEhnQVdBTEFBUlZpd0JpOGJzUVlkUGxtd0U5eXdITkF3TWYvLy82WUFBQUYrQmg0Q0pnSENBQUFCQndCRS8zVUFIZ0FUQUxBQVJWaXdBaThic1FJZFBsbXdCZHd3TVFELy93Q0RBQUFDV3dZZUFpWUJ3Z0FBQVFZQWRSTWVBQk1Bc0FCRldMQURMeHV4QXgwK1diQUczREF4QVAvLy82a0FBQUpZQmg4Q0pnSENBQUFCQndDZC94VUFIZ0FUQUxBQVJWaXdBaThic1FJZFBsbXdDTnd3TVFELy8vK2RBQUFDWXdYcUFpWUJ3Z0FBQVFjQWF2OUFBQjRBRmdDd0FFVllzQUl2RzdFQ0hUNVpzQXZjc0JUUU1ESC8vd0IyQUFBRVp3WVVBaVlCeHdBQUFRY0FwQUNJQUI4QUNRQ3dCUyt3RmR3d01RRC8vd0JQLy9BRWJ3WWVBaVlCeUFBQUFRY0FSQURWQUI0QUV3Q3dBRVZZc0Fzdkc3RUxIVDVac0I3Y01ERUEvLzhBVC8vd0JHOEdIZ0ltQWNnQUFBRUhBSFVCZEFBZUFBa0FzQXN2c0IvY01ERUEvLzhBVC8vd0JHOEdId0ltQWNnQUFBRUdBSjExSGdBVEFMQUFSVml3Q3k4YnNRc2RQbG13SWR3d01RRC8vd0JQLy9BRWJ3WVVBaVlCeUFBQUFRWUFwSGNmQUFrQXNBc3ZzQ2pjTURFQS8vOEFULy93Qkc4RjZnSW1BY2dBQUFFSEFHb0FvQUFlQUJZQXNBQkZXTEFMTHh1eEN4MCtXYkFrM0xBdDBEQXgvLzhBWi8vd0JCNEdIZ0ltQWM0QUFBRUhBRVFBdFFBZUFCTUFzQUJGV0xBSUx4dXhDQjArV2JBUjNEQXhBUC8vQUdmLzhBUWVCaDRDSmdIT0FBQUJCd0IxQVZRQUhnQVRBTEFBUlZpd0R5OGJzUThkUGxtd0V0d3dNUUQvL3dCbi8vQUVIZ1lmQWlZQnpnQUFBUVlBblZVZUFCTUFzQUJGV0xBSUx4dXhDQjArV2JBVTNEQXhBUC8vQUdmLzhBUWVCZW9DSmdIT0FBQUJCd0JxQUlBQUhnQVdBTEFBUlZpd0NDOGJzUWdkUGxtd0Y5eXdJTkF3TWYvL0FBVUFBQVEyQmg0Q0pnSFNBQUFCQndCMUFTMEFIZ0FUQUxBQVJWaXdBUzhic1FFZFBsbXdDOXd3TVFELy93QUpBQUFFbEFYU0FpWUJ1Z0FBQVFZQWNHSWlBQk1Bc0FCRldMQUVMeHV4QkIwK1diQU0zREF4QVAvL0FBa0FBQVNVQmdRQ0pnRzZBQUFCQndDZ0FKb0FIZ0FUQUxBQVJWaXdCQzhic1FRZFBsbXdEdHd3TVFBQUFnQUovbElFbEFTTkFCWUFHUUJ4c2hrYUd4RVNPYkFaRUxBVzBBQ3dBRVZZc0FBdkc3RUFIVDVac0FCRldMQVVMeHV4RkE4K1diQUFSVml3QVM4YnNRRVBQbG13QUVWWXNBd3ZHN0VNRVQ1WnNnY0RDaXRZSWRnYjlGbXdBUkN3RWRDeUZ4UUFFUkk1c0JjdnNoTUJDaXRZSWRnYjlGbXlHUUFVRVJJNU1ERUJBU01HQmhVVU16STNGd1lqSWlZMU5EY25JUWNqQVFNaEF3Sy9BZFUyVjBwSExDNFZTVnhmZEoxWi9oNWY5UUhYUEFGVXFnU04rM000WGpGRUY0NHNibHVTWWV2NUJJMzlKUUc2QVAvL0FFLy84QVJEQmg0Q0pnRzhBQUFCQndCMUFXTUFIZ0FKQUxBTEw3QWUzREF4QVAvL0FFLy84QVJEQmg4Q0pnRzhBQUFCQmdDZFpCNEFFd0N3QUVWWXNBc3ZHN0VMSFQ1WnNDRGNNREVBLy84QVQvL3dCRU1GL0FJbUFid0FBQUVIQUtFQlNnQW5BQk1Bc0FCRldMQUxMeHV4Q3gwK1diQWszREF4QVAvL0FFLy84QVJEQmg4Q0pnRzhBQUFCQmdDZWV4NEFDUUN3Q3krd0lOd3dNUUQvL3dCcUFBQUVLZ1lmQWlZQnZRQUFBUVlBbnZnZUFBa0FzQUV2c0JqY01ERUEvLzhBZGdBQUE3VUYwZ0ltQWI0QUFBRUdBSEF4SWdBVEFMQUFSVml3Qmk4YnNRWWRQbG13RGR3d01RRC8vd0IyQUFBRHRRWUVBaVlCdmdBQUFRWUFvR2tlQUJNQXNBQkZXTEFHTHh1eEJoMCtXYkFQM0RBeEFQLy9BSFlBQUFPMUJmd0NKZ0crQUFBQkJ3Q2hBUndBSndBVEFMQUFSVml3Qmk4YnNRWWRQbG13Rk53d01RQUFBUUIyL2xJRHRRU05BQnNBZ0xJUkhCMFJFamtBc0FCRldMQVdMeHV4RmgwK1diQUFSVml3RHk4YnNROFJQbG13QUVWWXNBUXZHN0VFRHo1WnNBQkZXTEFVTHh1eEZBOCtXYkliRmdRUkVqbXdHeSt5QUFFS0sxZ2gyQnYwV2JBVUVMSUNBUW9yV0NIWUcvUlpzQVBRc0E4UXNnb0RDaXRZSWRnYjlGbXdGaEN5R0FFS0sxZ2gyQnYwV1RBeEFTRVJJUlVqQmdZVkZETXlOeGNHSXlJbU5UUTNJUkVoRlNFUklRTmYvZ29DVEY1WFNrY3NMaFZKWEY5MGgvMzdBeno5dHdIMkFmait5c0k0WGpGRUY0NHNibHVHWHdTTnhQN3lBUC8vQUhZQUFBTzFCaDhDSmdHK0FBQUJCZ0NlVFI0QUV3Q3dBRVZZc0FZdkc3RUdIVDVac0JIY01ERUEvLzhBVlAvd0JFZ0dId0ltQWNBQUFBRUdBSjFvSGdBVEFMQUFSVml3Q2k4YnNRb2RQbG13SWR3d01RRC8vd0JVLy9BRVNBWUVBaVlCd0FBQUFRY0FvQUNiQUI0QUV3Q3dBRVZZc0Fvdkc3RUtIVDVac0NEY01ERUEvLzhBVlAvd0JFZ0YvQUltQWNBQUFBRUhBS0VCVGdBbkFCTUFzQUJGV0xBS0x4dXhDaDArV2JBbDNEQXhBUC8vQUZUOStRUklCSjBDSmdIQUFBQUFCd0dpQVdyK2t2Ly9BSFlBQUFSb0JoOENKZ0hCQUFBQkJnQ2RleDRBRXdDd0FFVllzQWN2RzdFSEhUNVpzQkRjTURFQS8vLy9rUUFBQW00R0ZBSW1BY0lBQUFFSEFLVC9Gd0FmQUFrQXNBSXZzQS9jTURFQS8vLy9sd0FBQW00RjBnSW1BY0lBQUFFSEFIRC9FQUFpQUJNQXNBQkZXTEFDTHh1eEFoMCtXYkFGM0RBeEFQLy8vNzBBQUFKREJnUUNKZ0hDQUFBQkJ3Q2cvMGdBSGdBVEFMQUFSVml3QWk4YnNRSWRQbG13Qjl3d01RRC8vd0FWL2xJQmpRU05BaVlCd2dBQUFBWUFvK3dBLy84QWZBQUFBWUlGL0FJbUFjSUFBQUVHQUtIN0p3QVRBTEFBUlZpd0FpOGJzUUlkUGxtd0ROd3dNUUQvL3dBay8vQUVOd1lmQWlZQnd3QUFBUWNBblFEMEFCNEFFd0N3QUVWWXNBQXZHN0VBSFQ1WnNCUGNNREVBLy84QWR2MzVCR2dFalFJbUFjUUFBQUFIQWFJQkV2NlMvLzhBZGdBQUE1UUdIZ0ltQWNVQUFBRUdBSFVLSGdBVEFMQUFSVml3QlM4YnNRVWRQbG13Q053d01RRC8vd0IyL2ZrRGxBU05BaVlCeFFBQUFBY0JvZ0VRL3BMLy93QjJBQUFEbEFTUUFpWUJ4UUFBQVFjQm9nR1ZBNG9BRUFDd0FFVllzQW92RzdFS0hUNVpNREgvL3dCMkFBQURsQVNOQWlZQnhRQUFBQWNBb1FGeS9VYi8vd0IyQUFBRVp3WWVBaVlCeHdBQUFRY0FkUUdGQUI0QUV3Q3dBRVZZc0Fndkc3RUlIVDVac0F6Y01ERUEvLzhBZHYzNUJHY0VqUUltQWNjQUFBQUhBYUlCZVA2Uy8vOEFkZ0FBQkdjR0h3SW1BY2NBQUFFSEFKNEFuUUFlQUJNQXNBQkZXTEFHTHh1eEJoMCtXYkFQM0RBeEFQLy9BRS8vOEFSdkJkSUNKZ0hJQUFBQkJnQndjQ0lBQ1FDd0N5K3dIZHd3TVFELy93QlAvL0FFYndZRUFpWUJ5QUFBQVFjQW9BQ29BQjRBRXdDd0FFVllzQXN2RzdFTEhUNVpzQ0RjTURFQS8vOEFULy93Qkc4R0hRSW1BY2dBQUFFSEFLVUEvZ0FlQUF3QXNBc3ZzQi9jc0NIUU1ESC8vd0IyQUFBRU9RWWVBaVlCeXdBQUFRY0FkUUVYQUI0QUNRQ3dCQyt3R2R3d01RRC8vd0IyL2ZrRU9RU05BaVlCeXdBQUFBY0JvZ0VZL3BMLy93QjJBQUFFT1FZZkFpWUJ5d0FBQVFZQW5pOGVBQWtBc0FRdnNCdmNNREVBLy84QVB2L3dBKzhHSGdJbUFjd0FBQUVIQUhVQlFRQWVBQWtBc0FrdnNDamNNREVBLy84QVB2L3dBKzhHSHdJbUFjd0FBQUVHQUoxQ0hnQVRBTEFBUlZpd0NTOGJzUWtkUGxtd0t0d3dNUUQvL3dBKy9rRUQ3d1NkQWlZQnpBQUFBQWNBZVFGUEFBRC8vd0ErLy9BRDd3WWZBaVlCekFBQUFRWUFubGtlQUFrQXNBa3ZzQ3JjTURFQS8vOEFKUDM1QkJZRWpRSW1BYzBBQUFBSEFhSUJKZjZTLy84QUpBQUFCQllHSHdJbUFjMEFBQUVHQUo1SEhnQVRBTEFBUlZpd0JpOGJzUVlkUGxtd0Rkd3dNUUQvL3dBay9rY0VGZ1NOQWlZQnpRQUFBQWNBZVFFNUFBYi8vd0JuLy9BRUhnWVVBaVlCemdBQUFRWUFwRmNmQUJNQXNBQkZXTEFQTHh1eER4MCtXYkFUM0RBeEFQLy9BR2YvOEFRZUJkSUNKZ0hPQUFBQkJnQndVQ0lBQ1FDd0FDK3dFTnd3TVFELy93Qm4vL0FFSGdZRUFpWUJ6Z0FBQVFjQW9BQ0lBQjRBRXdDd0FFVllzQWd2RzdFSUhUNVpzQlBjTURFQS8vOEFaLy93QkI0R2ZBSW1BYzRBQUFFSEFLSUE2Z0JTQUF3QXNBQXZzQlhjc0JyUU1ESC8vd0JuLy9BRU5BWWRBaVlCemdBQUFRY0FwUURlQUI0QURBQ3dBQyt3RXR5d0ZOQXdNUUFCQUdmK2dnUWVCSTBBSGdCaHNoc2ZJQkVTT1FDd0FFVllzQmN2RzdFWEhUNVpzQUJGV0xBQUx4dXhBQjArV2JBQVJWaXdEUzhic1EwWFBsbXdBRVZZc0JJdkc3RVNEejVac2dRU0FCRVNPYkFORUxJSUF3b3JXQ0hZRy9SWnNCSVFzaHNCQ2l0WUlkZ2I5Rmt3TVFFUkJnWUhCaFVVTXpJM0Z3WWpJaVkxTkRjbUppY1JNeEVVRmpNeU54RUVIZ0Y5ZDM5SExDNFZTVnhmZEVETjhnTHhmbXpsQkFTTi9QeUJ2VEpXV2tRWGppeHVXMTFKQnRhN0F3WDlBSE5vMUFNSC8vOEFLQUFBQmVVR0h3SW1BZEFBQUFFSEFKMEJHUUFlQUJNQXNBQkZXTEFCTHh1eEFSMCtXYkFQM0RBeEFQLy9BQVVBQUFRMkJoOENKZ0hTQUFBQkJnQ2RMaDRBRXdDd0FFVllzQWd2RzdFSUhUNVpzQTNjTURFQS8vOEFCUUFBQkRZRjZnSW1BZElBQUFFR0FHcFpIZ0FXQUxBQVJWaXdDQzhic1FnZFBsbXdFTnl3R2RBd01mLy9BRUVBQUFQekJoNENKZ0hUQUFBQkJ3QjFBVEFBSGdBVEFMQUFSVml3Q0M4YnNRZ2RQbG13RE53d01RRC8vd0JCQUFBRDh3WDhBaVlCMHdBQUFRY0FvUUVYQUNjQUV3Q3dBRVZZc0Fjdkc3RUhIVDVac0JMY01ERUEvLzhBUVFBQUEvTUdId0ltQWRNQUFBRUdBSjVJSGdBVEFMQUFSVml3Qnk4YnNRY2RQbG13RDl3d01RRC8vd0FTQUFBRlFnWkJBaVlBSlFBQUFBWUFyYjhBLy8vL1NnQUFCTEFHUVFBbUFDbGtBQUFIQUszK2hBQUEvLy8vVXdBQUJYd0dRUUFtQUN4a0FBQUhBSzMralFBQS8vLy9WZ0FBQWdNR1F3QW1BQzFrQUFBSEFLMytrQUFDLy8vL3AvL3NCVElHUVFBbUFETVVBQUFIQUszKzRRQUEvLy8rNFFBQUJUb0dRUUFtQUQxa0FBQUhBSzMrR3dBQS8vLy9zZ0FBQlBFR1FRQW1BTGtVQUFBSEFLMys3QUFBLy8vL2gvLzBBdG9HbWdJbUFNSUFBQUVIQUs3L0lQL3JBQndBc0FCRldMQU1MeHV4REJzK1diQVkzTEFRMExBWUVMQWgwREF4Ly84QUVnQUFCVUlGc0FJR0FDVUFBUC8vQUpRQUFBU2pCYkFDQmdBbUFBRC8vd0NVQUFBRVRBV3dBZ1lBS1FBQS8vOEFVQUFBQkl3RnNBSUdBRDRBQVAvL0FKUUFBQVVZQmJBQ0JnQXNBQUQvL3dDakFBQUJud1d3QWdZQUxRQUEvLzhBbEFBQUJSZ0ZzQUlHQUM4QUFQLy9BSlFBQUFacUJiQUNCZ0F4QUFELy93Q1VBQUFGRndXd0FnWUFNZ0FBLy84QVp2L3NCUjRGeEFJR0FETUFBUC8vQUpRQUFBVFVCYkFDQmdBMEFBRC8vd0F0QUFBRXNBV3dBZ1lBT0FBQS8vOEFCd0FBQk5ZRnNBSUdBRDBBQVAvL0FDa0FBQVRwQmJBQ0JnQThBQUQvLy8rL0FBQUNoUWNKQWlZQUxRQUFBUWNBYXY5aUFUMEFGZ0N3QUVWWXNBSXZHN0VDSHo1WnNBdmNzQlRRTURILy93QUhBQUFFMWdjQ0FpWUFQUUFBQVFjQWFnQ3pBVFlBRmdDd0FFVllzQWd2RzdFSUh6NVpzQkRjc0JuUU1ESC8vd0JXLytzRWVRWkJBaVlBdWdBQUFRY0FyUUZRQUFBQUNRQ3dFeSt3Sk53d01RRC8vd0JnLyt3RURBWkJBaVlBdmdBQUFRY0FyUUVaQUFBQUNRQ3dDUyt3S3R3d01RRC8vd0IrL21FRUJnWkJBaVlBd0FBQUFRY0FyUUVqQUFBQUNRQ3dBeSt3Rk53d01RRC8vd0NwLy9RQ1lRWXNBaVlBd2dBQUFRWUFyUS9yQUFrQXNBQXZzQS9jTURFQS8vOEFnUC9yQkFnR29nSW1BTW9BQUFFR0FLNGQ4d0FjQUxBQVJWaXdBQzhic1FBYlBsbXdIdHl3RmRDd0hoQ3dKOUF3TWYvL0FJNEFBQVJyQkRvQ0JnQ05BQUQvL3dCUC8rd0VQUVJPQWdZQVV3QUEvLzhBa3Y1Z0JCOEVPZ0lHQUhZQUFQLy9BQllBQUFQYUJEb0NCZ0JhQUFELy93QWZBQUFENkFRNkFnWUFYQUFBLy8vL3pQLzBBcElGdHdJbUFNSUFBQUVIQUdyL2IvL3JBQllBc0FCRldMQU1MeHV4REJzK1diQVUzTEFkMERBeC8vOEFnUC9yQkFnRnZ3SW1BTW9BQUFFR0FHcHM4d0FXQUxBQVJWaXdBQzhic1FBYlBsbXdHdHl3STlBd01mLy9BRS8vN0FROUJrRUNKZ0JUQUFBQkJ3Q3RBU0lBQUFBSkFMQUVMN0FkM0RBeEFQLy9BSUQvNndRSUJqUUNKZ0RLQUFBQkJ3Q3RBUTMvOHdBSkFMQUFMN0FWM0RBeEFQLy9BR2IvN0FZdEJqSUNKZ0ROQUFBQkJ3Q3RBaXovOFFBSkFMQUFMN0FqM0RBeEFQLy9BSlFBQUFSTUJ3a0NKZ0FwQUFBQkJ3QnFBTE1CUFFBV0FMQUFSVml3Qmk4YnNRWWZQbG13RTl5d0hOQXdNZi8vQUpzQUFBUTNCejBDSmdDd0FBQUJCd0IxQVlJQlBRQVRBTEFBUlZpd0JDOGJzUVFmUGxtd0NOd3dNUUFBQVFCSy8rd0VpZ1hFQUNjQVk3SVJLQ2tSRWprQXNBQkZXTEFKTHh1eENSOCtXYkFBUlZpd0hTOGJzUjBQUGxteUFoMEpFUkk1c2c0SkhSRVNPYkFKRUxJUkFRb3JXQ0hZRy9SWnNBSVFzaGNCQ2l0WUlkZ2I5Rm15SWgwSkVSSTVzQjBRc2lVQkNpdFlJZGdiOUZrd01RRTBKaVFuSmpVMEpETXlGaFlWSXpRbUl5SUdGUlFXQkJZV0ZSUUVJeUlrSmpVekZCWXpNallEallmK29HakhBUi9sbU82SS9JK0ZmSW1VQVZUT1lQN3A3NTcrOTVQOXBKbUVoUUYzWUdocVFYM0pzT1J3ejM1eWdXcGZVR3RsZ2Fkd3R0ZDF6b2w4aUdzQS8vOEFvd0FBQVo4RnNBSUdBQzBBQVAvLy83OEFBQUtGQndrQ0pnQXRBQUFCQndCcS8ySUJQUUFXQUxBQVJWaXdBaThic1FJZlBsbXdDOXl3Rk5Bd01mLy9BQzMvN0FQa0JiQUNCZ0F1QUFELy93Q2JBQUFGTUFXd0FnWUI0d0FBLy84QWxBQUFCUmdITmdJbUFDOEFBQUVIQUhVQmJnRTJBQk1Bc0FCRldMQUZMeHV4QlI4K1diQVAzREF4QVAvL0FEbi82d1RkQnlNQ0pnRGRBQUFCQndDZ0FOa0JQUUFUQUxBQVJWaXdEeThic1E4ZlBsbXdFOXd3TVFELy93QVNBQUFGUWdXd0FnWUFKUUFBLy84QWxBQUFCS01Gc0FJR0FDWUFBUC8vQUpzQUFBUTNCYkFDQmdDd0FBRC8vd0NVQUFBRVRBV3dBZ1lBS1FBQS8vOEFsQUFBQlEwSEl3SW1BTnNBQUFFSEFLQUJIUUU5QUJNQXNBQkZXTEFJTHh1eENCOCtXYkFOM0RBeEFQLy9BSlFBQUFacUJiQUNCZ0F4QUFELy93Q1VBQUFGR0FXd0FnWUFMQUFBLy84QVp2L3NCUjRGeEFJR0FETUFBUC8vQUpzQUFBVVVCYkFDQmdDMUFBRC8vd0NVQUFBRTFBV3dBZ1lBTkFBQS8vOEFadi9zQk9zRnhBSUdBQ2NBQVAvL0FDMEFBQVN3QmJBQ0JnQTRBQUQvL3dBcEFBQUU2UVd3QWdZQVBBQUEvLzhBV3Yvc0Evc0VUZ0lHQUVVQUFQLy9BRlAvN0FRTEJFNENCZ0JKQUFELy93Q0dBQUFFRWdYWkFpWUE3d0FBQVFjQW9BQ1gvL01BRXdDd0FFVllzQWd2RzdFSUd6NVpzQTNjTURFQS8vOEFULy9zQkQwRVRnSUdBRk1BQVAvL0FIeitZQVF3QkU0Q0JnQlVBQUFBQVFCUC8rd0Q5UVJPQUJ3QVM3SUFIUjRSRWprQXNBQkZXTEFQTHh1eER4cytXYkFBUlZpd0NDOGJzUWdQUGxteUFBRUtLMWdoMkJ2MFdiSURDQThSRWpteUV3OElFUkk1c0E4UXNoWUJDaXRZSWRnYjlGa3dNU1V5TmpjekRnSWpJZ0FSTlRRQU16SVdGeU1tSmlNaUJnY1ZGQllDT1Z0NEJPVUVkc3AxNC83MkFRamt3Zk1HNVFSM1hIYUFBWCt1YWs1bHIyWUJKZ0VER2ZjQktlRzNYWGlycmlld3JRRC8vd0FNL2tzRDFnUTZBZ1lBWFFBQS8vOEFId0FBQStnRU9nSUdBRndBQVAvL0FGUC83QVFMQmN3Q0pnQkpBQUFCQmdCcWJBQUFGZ0N3QUVWWXNBZ3ZHN0VJR3o1WnNDWGNzQzdRTURILy93Q0ZBQUFEVFFYekFpWUE2d0FBQVFjQWRRREMvL01BRXdDd0FFVllzQVF2RzdFRUd6NVpzQWpjTURFQS8vOEFTLy9zQThvRVRnSUdBRmNBQVAvL0FIMEFBQUdRQmRVQ0JnQk5BQUQvLy8rckFBQUNjUVhGQWlZQWpBQUFBUWNBYXY5Ty8va0FGZ0N3QUVWWXNBSXZHN0VDR3o1WnNBdmNzQlRRTURILy8vKzEva3NCaFFYVkFnWUFUZ0FBLy84QWp3QUFCR1VGOGdJbUFQQUFBQUVIQUhVQlJQL3lBQk1Bc0FCRldMQUVMeHV4QkJzK1diQVAzREF4QVAvL0FBeitTd1BXQmVZQ0pnQmRBQUFCQmdDZ1NnQUFFd0N3QUVWWXNBOHZHN0VQR3o1WnNCUGNNREVBLy84QU1BQUFCdVVITmdJbUFEc0FBQUVIQUVRQ0NBRTJBQk1Bc0FCRldMQUxMeHV4Q3g4K1diQU8zREF4QVAvL0FDRUFBQVhNQmdBQ0pnQmJBQUFCQndCRUFXb0FBQUFUQUxBQVJWaXdDeThic1FzYlBsbXdEdHd3TVFELy93QXdBQUFHNVFjMkFpWUFPd0FBQVFjQWRRS25BVFlBRXdDd0FFVllzQXd2RzdFTUh6NVpzQS9jTURFQS8vOEFJUUFBQmN3R0FBSW1BRnNBQUFFSEFIVUNDUUFBQUJNQXNBQkZXTEFNTHh1eERCcytXYkFQM0RBeEFQLy9BREFBQUFibEJ3SUNKZ0E3QUFBQkJ3QnFBZE1CTmdBTUFMQUJMN0FXM0xBTjBEQXgvLzhBSVFBQUJjd0Z6QUltQUZzQUFBRUhBR29CTlFBQUFBd0FzQUV2c0JiY3NBM1FNREgvL3dBSEFBQUUxZ2MyQWlZQVBRQUFBUWNBUkFEb0FUWUFFd0N3QUVWWXNBZ3ZHN0VJSHo1WnNBcmNNREVBLy84QURQNUxBOVlHQUFJbUFGMEFBQUVHQUVSM0FBQUpBTEFCTDdBUTNEQXhBUC8vQUZJRC9BRUxCZ0FEQmdBTEFBQUFGZ0N3QUVWWXNBUXZHN0VFSVQ1WnNBSFFzQUV2TURILy93QmxBL1FDUUFZQUF3WUFCZ0FBQUN3QXNBQkZXTEFKTHh1eENTRStXYkFBUlZpd0JDOGJzUVFoUGxtd0NSQ3dCdEN3Qmkrd0FkQ3dBUzh3TWYvL0FJLy84Z1BJQmJBQUpnQUZBQUFBQndBRkFpVUFBUC8vLzdIK1N3SnpCZDhDSmdDYkFBQUJCd0NlL3ovLzNnQUpBTEFBTDdBUjNEQXhBUC8vQURNRUFBRmxCZ0FDQmdGdEFBRC8vd0NVQUFBR2FnYzJBaVlBTVFBQUFRY0FkUUtRQVRZQUV3Q3dBRVZZc0FJdkc3RUNIejVac0JIY01ERUEvLzhBZkFBQUJua0dBQUltQUZFQUFBRUhBSFVDb0FBQUFBa0FzQU12c0NEY01ERUEvLzhBRXY1dEJVSUZzQUltQUNVQUFBQUhBS1lCZWdBRC8vOEFXdjV4QS9zRVRnSW1BRVVBQUFBSEFLWUFyUUFILy84QWxBQUFCRXdIUFFJbUFDa0FBQUVIQUVRQTZBRTlBQk1Bc0FCRldMQUdMeHV4Qmg4K1diQU4zREF4QVAvL0FKUUFBQVVOQnowQ0pnRGJBQUFCQndCRUFVb0JQUUFUQUxBQVJWaXdDQzhic1FnZlBsbXdDOXd3TVFELy93QlQvK3dFQ3dZQUFpWUFTUUFBQVFjQVJBQ2hBQUFBRXdDd0FFVllzQWd2RzdFSUd6NVpzQi9jTURFQS8vOEFoZ0FBQkJJRjh3SW1BTzhBQUFFSEFFUUF4UC96QUJNQXNBQkZXTEFJTHh1eENCcytXYkFMM0RBeEFQLy9BRVFBQUFWY0JiQUNCZ0M0QUFELy93QlAvaUlGZmdRNkFnWUF6QUFBLy84QUVBQUFCUE1HL0FJbUFSZ0FBQUVIQUtzRVNRRU9BQllBc0FCRldMQVBMeHV4RHg4K1diQVIzTEFWMERBeC8vLy84UUFBQkJnRjBBSW1BUmtBQUFFSEFLc0Q1Zi9pQUJZQXNBQkZXTEFSTHh1eEVScytXYkFUM0xBWDBEQXgvLzhBVC81TENHUUVUZ0FtQUZNQUFBQUhBRjBFamdBQS8vOEFadjVMQ1Z3RnhBQW1BRE1BQUFBSEFGMEZoZ0FBLy84QVNmNDZCSDhGd3dJbUFOb0FBQUFIQWJBQmt2K2cvLzhBVGY0N0E4UUVUUUltQU80QUFBQUhBYkFCT2YraC8vOEFadjQrQk9zRnhBSW1BQ2NBQUFBSEFiQUIxditrLy84QVQvNCtBL1VFVGdJbUFFY0FBQUFIQWJBQlN2K2svLzhBQndBQUJOWUZzQUlHQUQwQUFQLy9BQ0QrWHdQMUJEb0NCZ0M4QUFELy93Q2pBQUFCbndXd0FnWUFMUUFBLy84QUZnQUFCNXNISXdJbUFOa0FBQUVIQUtBQ0hRRTlBQk1Bc0FCRldMQU5MeHV4RFI4K1diQVozREF4QVAvL0FCNEFBQVpjQmRrQ0pnRHRBQUFCQndDZ0FZZi84d0FUQUxBQVJWaXdEUzhic1EwYlBsbXdHZHd3TVFELy93Q2pBQUFCbndXd0FnWUFMUUFBLy84QUVnQUFCVUlISEFJbUFDVUFBQUVIQUtBQTlnRTJBQk1Bc0FCRldMQUVMeHV4QkI4K1diQU8zREF4QVAvL0FGci83QVA3QmVZQ0pnQkZBQUFCQndDZ0FJQUFBQUFUQUxBQVJWaXdGeThic1JjYlBsbXdMZHd3TVFELy93QVNBQUFGUWdjQ0FpWUFKUUFBQVFjQWFnRHVBVFlBRmdDd0FFVllzQVF2RzdFRUh6NVpzQkxjc0J2UU1ESC8vd0JhLyt3RCt3WE1BaVlBUlFBQUFRWUFhbmdBQUJZQXNBQkZXTEFYTHh1eEZ4cytXYkF4M0xBNjBEQXgvLy8vOWdBQUIxY0ZzQUlHQUlFQUFQLy9BRWovN0FhRUJGQUNCZ0NHQUFELy93Q1VBQUFFVEFjakFpWUFLUUFBQVFjQW9BQzdBVDBBRXdDd0FFVllzQVl2RzdFR0h6NVpzQS9jTURFQS8vOEFVLy9zQkFzRjVnSW1BRWtBQUFFR0FLQjBBQUFUQUxBQVJWaXdDQzhic1FnYlBsbXdJZHd3TVFELy93QlIvK3NGSGdiYkFpWUJSUUFBQVFjQWFnRENBUThBRmdDd0FFVllzQUF2RzdFQUh6NVpzQ2Jjc0MvUU1ESC8vd0JaLyt3RCtBUlBBZ1lBbkFBQS8vOEFXZi9zQS9nRnpRSW1BSndBQUFFR0FHcHBBUUFXQUxBQVJWaXdBQzhic1FBYlBsbXdKdHl3TDlBd01mLy9BQllBQUFlYkJ3a0NKZ0RaQUFBQkJ3QnFBaFVCUFFBV0FMQUFSVml3RFM4YnNRMGZQbG13SGR5d0p0QXdNZi8vQUI0QUFBWmNCYjhDSmdEdEFBQUJCd0JxQVgvLzh3QVdBTEFBUlZpd0RTOGJzUTBiUGxtd0hkeXdKdEF3TWYvL0FFbi83UVIvQnhjQ0pnRGFBQUFCQndCcUFLTUJTd0FXQUxBQVJWaXdDeThic1FzZlBsbXdNZHl3T3RBd01mLy9BRTMvN0FQRUJjd0NKZ0R1QUFBQkJnQnFUZ0FBRmdDd0FFVllzQ1V2RzdFbEd6NVpzQy9jc0RqUU1ESC8vd0NVQUFBRkRRYnhBaVlBMndBQUFRY0FjQURsQVVFQUV3Q3dBRVZZc0Fndkc3RUlIejVac0F2Y01ERUEvLzhBaGdBQUJCSUZwd0ltQU84QUFBRUdBSEJmOXdBVEFMQUFSVml3Qnk4YnNRY2JQbG13Qzl3d01RRC8vd0NVQUFBRkRRY0pBaVlBMndBQUFRY0FhZ0VWQVQwQUZnQ3dBRVZZc0Fndkc3RUlIejVac0JIY3NCclFNREgvL3dDR0FBQUVFZ1cvQWlZQTd3QUFBUWNBYWdDUC8vTUFGZ0N3QUVWWXNBZ3ZHN0VJR3o1WnNCSGNzQnJRTURILy93Qm0vK3dGSGdjQ0FpWUFNd0FBQVFjQWFnRUZBVFlBRmdDd0FFVllzQXd2RzdFTUh6NVpzQ2Jjc0MvUU1ESC8vd0JQLyt3RVBRWE1BaVlBVXdBQUFRY0FhZ0NCQUFBQUZnQ3dBRVZZc0FRdkc3RUVHejVac0NMY3NDdlFNREgvL3dCZi8rd0ZGd1hFQWdZQkZnQUEvLzhBVC8vc0JEMEVUZ0lHQVJjQUFQLy9BRi8vN0FVWEJ3WUNKZ0VXQUFBQkJ3QnFBUk1CT2dBV0FMQUFSVml3REM4YnNRd2ZQbG13SnR5d0w5QXdNZi8vQUUvLzdBUTlCY3dDSmdFWEFBQUJCZ0JxY3dBQUZnQ3dBRVZZc0FRdkc3RUVHejVac0NYY3NDN1FNREgvL3dCci8rd0U4UWNZQWlZQTVnQUFBUWNBYWdEakFVd0FGZ0N3QUVWWXNCTXZHN0VUSHo1WnNDZmNzRERRTURILy93QlIvK3dENkFYTUFpWUEvZ0FBQVFZQWFsa0FBQllBc0FCRldMQUlMeHV4Q0JzK1diQW8zTEF4MERBeC8vOEFPZi9yQk4wRzhRSW1BTjBBQUFFSEFIQUFvUUZCQUFrQXNBRXZzQkRjTURFQS8vOEFEUDVMQTlZRnRBSW1BRjBBQUFFR0FIQVNCQUFKQUxBQkw3QVEzREF4QVAvL0FEbi82d1RkQndrQ0pnRGRBQUFCQndCcUFORUJQUUFXQUxBQVJWaXdEeThic1E4ZlBsbXdGOXl3SU5Bd01mLy9BQXorU3dQV0Jjd0NKZ0JkQUFBQkJnQnFRZ0FBRmdDd0FFVllzQTh2RzdFUEd6NVpzQmZjc0NEUU1ESC8vd0E1LytzRTNRYzhBaVlBM1FBQUFRY0FwUUV2QVQwQUZnQ3dBRVZZc0E4dkc3RVBIejVac0JiY3NCTFFNREgvL3dBTS9rc0Q5Z1gvQWlZQVhRQUFBUWNBcFFDZ0FBQUFGZ0N3QUVWWXNBOHZHN0VQR3o1WnNCYmNzQkxRTURILy93Q09BQUFFN2djSkFpWUE0QUFBQVFjQWFnRVBBVDBBRmdDd0FFVllzQW92RzdFS0h6NVpzQm5jc0NMUU1ESC8vd0JmQUFBRDRBVy9BaVlBK0FBQUFRWUFhbWZ6QUJZQXNBQkZXTEFKTHh1eENScytXYkFaM0xBaTBEQXgvLzhBbXdBQUJsZ0hDZ0FtQU9VTEFBQW5BQzBFdVFBQUFRY0FhZ0hDQVQ0QUZnQ3dBRVZZc0Fzdkc3RUxIejVac0NEY3NDblFNREgvL3dDUEFBQUZ5UVcvQUNZQS9RQUFBQ2NBakFSSEFBQUJCd0JxQVhULzh3QVdBTEFBUlZpd0N5OGJzUXNiUGxtd0g5eXdLTkF3TWYvL0FDbitTd1ZSQmJBQ0pnQThBQUFBQndHdkE4TUFBUC8vQUIvK1N3UldCRG9DSmdCY0FBQUFCd0d2QXNnQUFQLy9BRS8vN0FRREJnQUNCZ0JJQUFELy93QXQva3NGL1FXd0FpWUEzQUFBQUFjQnJ3UnZBQUQvL3dBaC9rc0ZCd1E2QWlZQThRQUFBQWNCcndONUFBRC8vd0FTL3BjRlFnV3dBaVlBSlFBQUFBY0FyQVVOQUFQLy93QmEvcHNEK3dST0FpWUFSUUFBQUFjQXJBUkFBQWYvL3dBU0FBQUZRZ2U3QWlZQUpRQUFBUWNBcWdVRkFUd0FDUUN3QkMrd0M5d3dNUUQvL3dCYS8rd0Qrd2FGQWlZQVJRQUFBUWNBcWdTUEFBWUFDUUN3Rnkrd0t0d3dNUUQvL3dBU0FBQUZTZ2V4QWlZQUpRQUFBUWNCdHdDL0FTRUFGd0N3QUVWWXNBVXZHN0VGSHo1WnNRNEo5TEFVMERBeEFQLy9BRnIvN0FUVUJud0NKZ0JGQUFBQkJnRzNTZXdBREFDd0Z5K3dMTnl3TWRBd01mLy9BQkFBQUFWQ0I2NENKZ0FsQUFBQkJ3RzJBTVFCS3dBWEFMQUFSVml3QkM4YnNRUWZQbG14RGduMHNCUFFNREVBLy8vL212L3NBL3NHZVFJbUFFVUFBQUVHQWJaTzlnQU1BTEFYTDdBcTNMQXgwREF4Ly84QUVnQUFCVUlIM2dJbUFDVUFBQUVIQWJVQXd3RVRBQXdBc0FRdnNBdmNzQkxRTURILy93QmEvK3dFVndhcEFpWUFSUUFBQVFZQnRVM2VBQXdBc0JjdnNDcmNzREhRTURILy93QVNBQUFGUWdmV0FpWUFKUUFBQVFjQnRBREVBUVVBREFDd0JDK3dDOXl3RXRBd01mLy9BRnIvN0FQN0JxRUNKZ0JGQUFBQkJnRzBUdEFBREFDd0Z5K3dLdHl3TWRBd01mLy9BQkwrbHdWQ0J6Y0NKZ0FsQUFBQUp3Q2RBTU1CTmdBSEFLd0ZEUUFELy84QVd2NmJBL3NHQVFJbUFFVUFBQUFtQUoxTkFBQUhBS3dFUUFBSC8vOEFFZ0FBQlVJSHJnSW1BQ1VBQUFFSEFiTUE3d0V3QUF3QXNBUXZzQTdjc0JuUU1ESC8vd0JhLyt3RCt3WjVBaVlBUlFBQUFRWUJzM243QUF3QXNCY3ZzQzNjc0RqUU1ESC8vd0FTQUFBRlFnZXVBaVlBSlFBQUFRY0J1QUR2QVRBQURBQ3dCQyt3RHR5d0dkQXdNZi8vQUZyLzdBUDdCbmtDSmdCRkFBQUJCZ0c0ZWZzQURBQ3dGeSt3TGR5d09OQXdNZi8vQUJJQUFBVkNDRDRDSmdBbEFBQUJCd0d5QU80Qk5nQU1BTEFFTDdBTzNMQVowREF4Ly84QVd2L3NBL3NIQ0FJbUFFVUFBQUVHQWJKNEFBQU1BTEFYTDdBdDNMQTQwREF4Ly84QUVnQUFCVUlJR0FJbUFDVUFBQUVIQWJFQThRRThBQXdBc0FRdnNCVGNzQmpRTURILy93QmEvK3dEK3diaUFpWUFSUUFBQVFZQnNYc0dBQXdBc0JjdnNEUGNzRGZRTURILy93QVMvcGNGUWdjY0FpWUFKUUFBQUNjQW9BRDJBVFlBQndDc0JRMEFBLy8vQUZyK213UDdCZVlDSmdCRkFBQUFKd0NnQUlBQUFBQUhBS3dFUUFBSC8vOEFsUDZlQkV3RnNBSW1BQ2tBQUFBSEFLd0V5d0FLLy84QVUvNlVCQXNFVGdJbUFFa0FBQUFIQUt3RWp3QUEvLzhBbEFBQUJFd0h3Z0ltQUNrQUFBRUhBS29FeWdGREFBa0FzQVl2c0F6Y01ERUEvLzhBVS8vc0JBc0doUUltQUVrQUFBRUhBS29FZ3dBR0FBa0FzQWd2c0I3Y01ERUEvLzhBbEFBQUJFd0hNd0ltQUNrQUFBRUhBS1FBaWdFK0FBa0FzQVl2c0JmY01ERUEvLzhBVS8vc0JBc0Y5Z0ltQUVrQUFBRUdBS1JEQVFBSkFMQUlMN0FwM0RBeEFQLy9BSlFBQUFVUEI3Z0NKZ0FwQUFBQkJ3RzNBSVFCS0FBWEFMQUFSVml3Qnk4YnNRY2ZQbG14RHduMHNCWFFNREVBLy84QVUvL3NCTWdHZkFJbUFFa0FBQUVHQWJjOTdBQU1BTEFJTDdBZzNMQWwwREF4Ly8vLzFRQUFCRXdIdFFJbUFDa0FBQUVIQWJZQWlRRXlBQmNBc0FCRldMQUdMeHV4Qmg4K1diRVBDZlN3Rk5Bd01RRC8vLytPLyt3RUN3WjVBaVlBU1FBQUFRWUJ0a0wyQUF3QXNBZ3ZzQjdjc0NYUU1ESC8vd0NVQUFBRWtnZmxBaVlBS1FBQUFRY0J0UUNJQVJvQURBQ3dCaSt3RE55d0U5QXdNZi8vQUZQLzdBUkxCcWtDSmdCSkFBQUJCZ0cxUWQ0QURBQ3dDQyt3SHR5d0pkQXdNZi8vQUpRQUFBUk1COTBDSmdBcEFBQUJCd0cwQUlrQkRBQU1BTEFHTDdBTTNMQVQwREF4Ly84QVUvL3NCQXNHb1FJbUFFa0FBQUVHQWJSQzBBQU1BTEFJTDdBZTNMQWwwREF4Ly84QWxQNmVCRXdIUGdJbUFDa0FBQUFuQUowQWlBRTlBQWNBckFUTEFBci8vd0JUL3BRRUN3WUJBaVlBU1FBQUFDWUFuVUVBQUFjQXJBU1BBQUQvL3dDakFBQUNFUWZDQWlZQUxRQUFBUWNBcWdONEFVTUFDUUN3QWkrd0JOd3dNUUQvL3dDUEFBQUIvUVorQWlZQWpBQUFBUWNBcWdOay8vOEFDUUN3QWkrd0JOd3dNUUQvL3dDVS9wb0Jwd1d3QWlZQUxRQUFBQWNBckFONEFBYi8vd0I0L3A0QmtBWFZBaVlBVFFBQUFBY0FyQU5jQUFyLy93Qm0vcFFGSGdYRUFpWUFNd0FBQUFjQXJBVWRBQUQvL3dCUC9wSUVQUVJPQWlZQVV3QUFBQWNBckFTZC8vNy8vd0JtLyt3RkhnZTdBaVlBTXdBQUFRY0FxZ1VjQVR3QUNRQ3dGQyt3SDl3d01RRC8vd0JQLyt3RVBRYUZBaVlBVXdBQUFRY0FxZ1NZQUFZQUNRQ3dCQyt3Rzl3d01RRC8vd0JtLyt3RllRZXhBaVlBTXdBQUFRY0J0d0RXQVNFQURBQ3dGQyt3SWR5d0p0QXdNZi8vQUUvLzdBVGRCbndDSmdCVEFBQUJCZ0czVXV3QURBQ3dCQyt3SGR5d0l0QXdNZi8vQUNmLzdBVWVCNjRDSmdBekFBQUJCd0cyQU5zQkt3QU1BTEFVTDdBZjNMQW0wREF4Ly8vL28vL3NCRDBHZVFJbUFGTUFBQUVHQWJaWDlnQU1BTEFFTDdBYjNMQWkwREF4Ly84QVp2L3NCUjRIM2dJbUFETUFBQUVIQWJVQTJnRVRBQXdBc0JRdnNCL2NzQ2JRTURILy93QlAvK3dFWUFhcEFpWUFVd0FBQVFZQnRWYmVBQXdBc0FRdnNCdmNzQ0xRTURILy93Qm0vK3dGSGdmV0FpWUFNd0FBQVFjQnRBRGJBUVVBREFDd0ZDK3dIOXl3SnRBd01mLy9BRS8vN0FROUJxRUNKZ0JUQUFBQkJnRzBWOUFBREFDd0JDK3dHOXl3SXRBd01mLy9BR2IrbEFVZUJ6Y0NKZ0F6QUFBQUp3Q2RBTm9CTmdBSEFLd0ZIUUFBLy84QVQvNlNCRDBHQVFJbUFGTUFBQUFtQUoxV0FBQUhBS3dFbmYvKy8vOEFXUC9zQmFvSE13SW1BSmNBQUFBSEFIVUIwd0V6Ly84QVQvL3NCTHNHQUFJbUFKZ0FBQUVIQUhVQldBQUFBQWtBc0FrdnNDWGNNREVBLy84QVdQL3NCYW9ITXdJbUFKY0FBQUFIQUVRQk5BRXovLzhBVC8vc0JMc0dBQUltQUpnQUFBRUhBRVFBdVFBQUFBa0FzQWt2c0NQY01ERUEvLzhBV1Avc0Jhb0h1QUltQUpjQUFBQUhBS29GRmdFNS8vOEFULy9zQkxzR2hRSW1BSmdBQUFFSEFLb0Vtd0FHQUFrQXNBa3ZzQ1BjTURFQS8vOEFXUC9zQmFvSEtRSW1BSmNBQUFBSEFLUUExZ0UwLy84QVQvL3NCTHNGOWdJbUFKZ0FBQUVHQUtSYkFRQUpBTEFKTDdBdTNEQXhBUC8vQUZqK2xBV3FCaTRDSmdDWEFBQUFCd0NzQlFZQUFQLy9BRS8raXdTN0JLZ0NKZ0NZQUFBQUJ3Q3NCSnIvOS8vL0FIMytsQVM5QmJBQ0pnQTVBQUFBQndDc0JQSUFBUC8vQUhmK2xBUDNCRG9DSmdCWkFBQUFCd0NzQkVFQUFQLy9BSDMvN0FTOUI3c0NKZ0E1QUFBQkJ3Q3FCUE1CUEFBSkFMQUFMN0FSM0RBeEFQLy9BSGYvN0FQM0JvVUNKZ0JaQUFBQkJ3Q3FCSkVBQmdBSkFMQUdMN0FSM0RBeEFQLy9BSDMvN0FZOUIwSUNKZ0NaQUFBQkJ3QjFBZGNCUWdBSkFMQUVMN0FiM0RBeEFQLy9BSGYvN0FVb0Jld0NKZ0NhQUFBQkJ3QjFBVmYvN0FBSkFMQUFMN0FjM0RBeEFQLy9BSDMvN0FZOUIwSUNKZ0NaQUFBQkJ3QkVBVGdCUWdBSkFMQUVMN0FaM0RBeEFQLy9BSGYvN0FVb0Jld0NKZ0NhQUFBQkJ3QkVBTGovN0FBSkFMQUFMN0FhM0RBeEFQLy9BSDMvN0FZOUI4Y0NKZ0NaQUFBQkJ3Q3FCUm9CU0FBSkFMQUVMN0FaM0RBeEFQLy9BSGYvN0FVb0JuRUNKZ0NhQUFBQkJ3Q3FCSnIvOGdBSkFMQUFMN0FhM0RBeEFQLy9BSDMvN0FZOUJ6Z0NKZ0NaQUFBQkJ3Q2tBTm9CUXdBSkFMQUVMN0FrM0RBeEFQLy9BSGYvN0FVb0JlSUNKZ0NhQUFBQkJnQ2tXdTBBQ1FDd0FDK3dKZHd3TVFELy93Qjkvb3NHUFFZQkFpWUFtUUFBQUFjQXJBVVovL2YvL3dCMy9wUUZLQVNUQWlZQW1nQUFBQWNBckFSRkFBRC8vd0FIL3FRRTFnV3dBaVlBUFFBQUFBY0FyQVRHQUJELy93QU0vZzhEMWdRNkFpWUFYUUFBQUFjQXJBVkcvM3YvL3dBSEFBQUUxZ2U3QWlZQVBRQUFBUWNBcWdUS0FUd0FDUUN3QVMrd0Nkd3dNUUQvL3dBTS9rc0QxZ2FGQWlZQVhRQUFBUWNBcWdSWkFBWUFDUUN3QVMrd0VOd3dNUUQvL3dBSEFBQUUxZ2NzQWlZQVBRQUFBUWNBcEFDS0FUY0FDUUN3QVMrd0ZOd3dNUUQvL3dBTS9rc0QxZ1gyQWlZQVhRQUFBUVlBcEJrQkFBa0FzQUV2c0J2Y01ERUFBQUlBVC8vc0JMSUdBQUFXQUNFQWpMSWZJaU1SRWptd0h4Q3dFTkFBc0JNdnNBQkZXTEFNTHh1eERCcytXYkFBUlZpd0JpOGJzUVlQUGxtd0FFVllzQUl2RzdFQ0R6NVpzaThUQVYyeUR4TUJYYklXQWhNUkVqbXdGaSt5QUFjS0sxZ2gyQnYwV2JJRURBWVJFam15RGd3R0VSSTVzQS9Rc0JZUXNCSFFzQVlRc2hvQkNpdFlJZGdiOUZtd0RCQ3lId0VLSzFnaDJCdjBXVEF4QVNNUkl5Y0dJeUlDRVRRU016SVhOU00xTXpVekZUTUJGQll6TWpjUkppTWlCZ1N5cjl3TWJiYSs2K2pEckdyNysvT3YvSkIvZFpWRlE1VjJnQVRKK3pkd2hBRXlBUWY2QVM5NDg2cU5qZnlkcGJtRkFjNkN1Ly8vQUUvK3JnU3lCZ0FBSmdCSUFBQUFKd0hlQVlVQ1FnRUhBRU1BbWY5dEFCSUFzaThjQVYyeUh4d0JjYktmSEFGZE1ESC8vd0NiL3BvRmZnV3dBaVlCNHdBQUFBY0JzQVF2QUFELy93Q1AvcG9Fd2dRNkFpWUE4QUFBQUFjQnNBTnpBQUQvL3dDVS9wb0Yyd1d3QWlZQUxBQUFBQWNCc0FTTUFBRC8vd0NHL3BvRTFRUTZBaVlBOHdBQUFBY0JzQU9HQUFELy93QXQvcG9Fc0FXd0FpWUFPQUFBQUFjQnNBSk5BQUQvL3dBai9wb0QwQVE2QWlZQTlRQUFBQWNCc0FIbUFBRC8vd0FwL3BvRklnV3dBaVlBUEFBQUFBY0JzQVBUQUFELy93QWYvcG9FSndRNkFpWUFYQUFBQUFjQnNBTFlBQUQvL3dDTy9wb0ZyUVd3QWlZQTRBQUFBQWNCc0FSZUFBRC8vd0JmL3BvRXBBUTdBaVlBK0FBQUFBY0JzQU5WQUFELy93Q08vcG9FN2dXd0FpWUE0QUFBQUFjQnNBTFBBQUQvL3dCZi9wb0Q0QVE3QWlZQStBQUFBQWNCc0FIR0FBRC8vd0NiL3BvRU53V3dBaVlBc0FBQUFBY0JzQUVIQUFELy93Q0YvcG9EVFFRNkFpWUE2d0FBQUFjQnNBRHNBQUQvL3dBVy9wb0lCUVd3QWlZQTJRQUFBQWNCc0FhMkFBRC8vd0FlL3BvR3RBUTZBaVlBN1FBQUFBY0JzQVZsQUFELy93QVcva01GdkFYRUFpWUJQd0FBQUFjQnNBTHQvNm4vLy8vTC9rWUVpd1JPQWlZQlFBQUFBQWNCc0FIMS82ei8vd0I1QUFBRCtBWUFBZ1lBVEFBQUFBTC8wQUFBQk1FRnNBQVRBQndBYnJJQUhSNFJFam13RnRBQXNBQkZXTEFRTHh1eEVCOCtXYkFBUlZpd0NpOGJzUW9QUGxteUV4QUtFUkk1c0JNdnNnQUhDaXRZSWRnYjlGbXlBaEFLRVJJNXNBSXZzQUFRc0F6UXNCTVFzQTdRc0FJUXNoUUJDaXRZSWRnYjlGbXdDaEN5RlFFS0sxZ2gyQnYwV1RBeEFTTVZJVElXRmhVVUJBY2hFU00xTXpVekZUTURFU0V5TmpVMEppY0NiZUFCS3FEdWZQN3I3LzNUd01EOTRPQUJLWUNQakh3RVI4UnV5b1hNK0FJRVI2cS92LzNIL2hLTGMyNkFBZ0FDLzlBQUFBVEJCYkFBRXdBY0FHNnlBQjBlRVJJNXNCYlFBTEFBUlZpd0VDOGJzUkFmUGxtd0FFVllzQW92RzdFS0R6NVpzaE1RQ2hFU09iQVRMN0lBQndvcldDSFlHL1Jac2dJUUNoRVNPYkFDTDdBQUVMQU0wTEFURUxBTzBMQUNFTElVQVFvcldDSFlHL1Jac0FvUXNoVUJDaXRZSWRnYjlGa3dNUUVqRlNFeUZoWVZGQVFISVJFak5UTTFNeFV6QXhFaE1qWTFOQ1luQW0zZ0FTcWc3bnorNisvOTA4REEvZURnQVNtQWo0eDhCRWZFYnNxRnpQZ0NCRWVxdjcvOXgvNFNpM051Z0FJQUFmL3dBQUFFTndXd0FBMEFTUUN3QUVWWXNBZ3ZHN0VJSHo1WnNBQkZXTEFDTHh1eEFnOCtXYklOQ0FJUkVqbXdEUyt5QUFjS0sxZ2gyQnYwV2JBRTBMQU5FTEFHMExBSUVMSUtBUW9yV0NIWUcvUlpNREVCSXhFakVTTTFNeEVoRlNFUk13S045dnlycXdPYy9XRDJBcC85WVFLZnFnSm56UDVsQUFILzRnQUFBMDBFT2dBTkFFa0FzQUJGV0xBSUx4dXhDQnMrV2JBQVJWaXdBaThic1FJUFBsbXlEUWdDRVJJNXNBMHZzZ0FIQ2l0WUlkZ2I5Rm13Qk5Dd0RSQ3dCdEN3Q0JDeUNnRUtLMWdoMkJ2MFdUQXhBU0VSSXhFak5UTVJJUlVoRlNFQ2YvNzQ4cU9qQXNqK0tnRUlBZEgrTHdIUnFnRy94UHNBQUFILzR3QUFCVVFGc0FBVUFIUUFzQUJGV0xBSUx4dXhDQjgrV2JBQVJWaXdFQzhic1JBZlBsbXdBRVZZc0FJdkc3RUNEejVac0FCRldMQVRMeHV4RXc4K1diSU9DQUlSRWptd0RpK3lBUUVLSzFnaDJCdjBXYklIQ0FJUkVqbXdCeSt5QkFFS0sxZ2gyQnYwV2JBSEVMQUswTEFFRUxBTTBMSVNBUTRSRWprd01RRWpFU01SSXpVek5UTVZNeFVqRlRNQklRRUJJUUpYclB6TXpQelYxWXNCckFFMi9nd0NJUDdRQW5EOWtBUS9xc2ZIcXZNQ1pQMUgvUWtBQWYrdUFBQUVTUVlBQUJRQWRBQ3dBRVZZc0Fndkc3RUlJVDVac0FCRldMQVFMeHV4RUJzK1diQUFSVml3QWk4YnNRSVBQbG13QUVWWXNCTXZHN0VURHo1WnNnNFFBaEVTT2JBT0w3SUJBUW9yV0NIWUcvUlpzZ2NJRUJFU09iQUhMN0lFQndvcldDSFlHL1Jac0FjUXNBclFzQVFRc0F6UXNoSUJEaEVTT1RBeEFTTVJJeEVqTlRNMU14VXpGU01STXdFaEFRRWhBZlp2OHVmbjhzVEVhUUVQQVJ6K253R1AvdVlCMmY0bkJMdXFtNXVxL2VFQm52NFIvYlVBLy84QWxQNStCZDBISXdJbUFOc0FBQUFuQUtBQkhRRTlBUWNBRUFTQS84WUFFd0N3QUVWWXNBZ3ZHN0VJSHo1WnNBM2NNREVBLy84QWh2NStCT1FGMlFJbUFPOEFBQUFuQUtBQWwvL3pBUWNBRUFPSC84WUFFd0N3QUVWWXNBZ3ZHN0VJR3o1WnNBM2NNREVBLy84QWxQNStCZWtGc0FJbUFDd0FBQUFIQUJBRWpQL0cvLzhBaHY1K0JPTUVPZ0ltQVBNQUFBQUhBQkFEaHYvRy8vOEFsUDUrQnpJRnNBSW1BREVBQUFBSEFCQUYxZi9HLy84QWovNStCa0VFT2dJbUFQSUFBQUFIQUJBRTVQL0cvLzhBTGY1K0Jkd0ZzQUltQU53QUFBQUhBQkFFZi8vRy8vOEFJZjUrQk9ZRU9nSW1BUEVBQUFBSEFCQURpZi9HQUFFQUJ3QUFCTllGc0FBT0FGYXlDZzhRRVJJNUFMQUFSVml3Q0M4YnNRZ2ZQbG13QUVWWXNBc3ZHN0VMSHo1WnNBQkZXTEFDTHh1eEFnOCtXYklHQWdnUkVqbXdCaSt5QlFjS0sxZ2gyQnYwV2JBQjBMSUtDQUlSRWptd0JoQ3dEdEF3TVFFakVTTVJJelV6QVNFQkFTRUJNd1BEMWY3S2V2NW5BUmtCVHdGUEFSaitaNFlDQlAzOEFnU3FBd0w5VGdLeS9QNEFBQUVBSVA1ZkEvVUVPZ0FPQUdPeUNnOFFFUkk1QUxBQVJWaXdDQzhic1FnYlBsbXdBRVZZc0Fzdkc3RUxHejVac0FCRldMQUNMeHV4QWhFK1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNBUXZHN0VFRHo1WnNnWUhDaXRZSWRnYjlGbXlDZ3NBRVJJNXNBM1FzQTdRTURFRkl4RWpFU00xTXdFekV4TXpBVE1EWU56enpxTCt1L3Z6N1B2K3ZLOEIvbUFCb0tvRGtmMEJBdi84YndBQUFRQXBBQUFFNlFXd0FCRUFZd0N3QUVWWXNBc3ZHN0VMSHo1WnNBQkZXTEFPTHh1eERoOCtXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQVV2RzdFRkR6NVpzaEVMQWhFU09iQVJMN0lBQndvcldDSFlHL1Jac2dRTEFoRVNPYkFIMExBUkVMQUowTElOQ3dJUkVqa3dNUUVqQVNFQkFTRUJJelV6QVNFQkFTRUJNd1BiaHdHVi90bit4LzdHL3RvQmxvRnovb0lCSkFFeUFUSUJKUDZEZVFLVi9Xc0NGdjNxQXBXcUFuSDk4Z0lPL1k4QUFRQWZBQUFENkFRNkFCRUFZd0N3QUVWWXNBc3ZHN0VMR3o1WnNBQkZXTEFPTHh1eERocytXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQVV2RzdFRkR6NVpzaEVPQWhFU09iQVJMN0lBQndvcldDSFlHL1Jac2dRT0FoRVNPYkFIMExBUkVMQUowTElORGdJUkVqa3dNUUVqQVNFREF5RUJJelV6QVNFVEV5RUJNd05YbFFFbS92VFkxLzd5QVNXS2d2N3ZBUXpLemdFTy91Nk1BZGYrS1FGeS9vNEIxNm9CdWY2Y0FXVCtSLy8vQUdELzdBUU1CRTBDQmdDK0FBRC8vd0FDQUFBRU1RV3dBaVlBS2dBQUFBY0Izdjl5L21uLy93Q0JBbTBGMFFNeEFFWUJsNFVBWm1aQUFQLy9BRkVBQUFSQUJjUUNCZ0FXQUFELy93QlAvK3dFRlFYRUFnWUFGd0FBLy84QU5BQUFCRmdGc0FJR0FCZ0FBUC8vQUlILzdBUTZCYkFDQmdBWkFBRC8vd0JkLy9vRUVnWEVBQVlBSFFBQS8vOEFmZi9zQkRZRnhBQUdBQlFVQVAvL0FHci83QVR3QjBzQ0pnQXJBQUFCQndCMUFiMEJTd0FKQUxBTEw3QWgzREF4QVAvL0FGTCtWZ1FNQmdBQ0pnQkxBQUFCQndCMUFUOEFBQUFKQUxBREw3QW4zREF4QVAvL0FKUUFBQVVYQnpZQ0pnQXlBQUFCQndCRUFVd0JOZ0FUQUxBQVJWaXdCaThic1FZZlBsbXdDOXd3TVFELy93QjVBQUFEK0FZQUFpWUFVZ0FBQVFjQVJBQ3pBQUFBRXdDd0FFVllzQUF2RzdFQUd6NVpzQkxjTURFQS8vOEFFZ0FBQlVJSElRSW1BQ1VBQUFFSEFLc0Vkd0V6QUJZQXNBQkZXTEFFTHh1eEJCOCtXYkFNM0xBUTBEQXgvLzhBRGYvc0Evc0Y3QUltQUVVQUFBRUhBS3NFQWYvK0FCWUFzQUJGV0xBWEx4dXhGeHMrV2JBcjNMQXYwREF4Ly84QVNBQUFCRXdIS0FJbUFDa0FBQUVIQUtzRVBBRTZBQllBc0FCRldMQUdMeHV4Qmg4K1diQU4zTEFSMERBeC8vOEFBZi9zQkFzRjdBSW1BRWtBQUFFSEFLc0Q5Zi8rQUJZQXNBQkZXTEFJTHh1eENCcytXYkFmM0xBajBEQXgvLy8rOWdBQUFoNEhLQUltQUMwQUFBRUhBS3NDNmdFNkFCWUFzQUJGV0xBQ0x4dXhBaDgrV2JBRjNMQUowREF4Ly8vKzRnQUFBZ29GNUFJbUFJd0FBQUVIQUtzQzF2LzJBQllBc0FCRldMQUNMeHV4QWhzK1diQUYzTEFKMERBeC8vOEFadi9zQlI0SElRSW1BRE1BQUFFSEFLc0VqZ0V6QUJZQXNBQkZXTEFNTHh1eERCOCtXYkFnM0xBazBEQXgvLzhBRnYvc0JEMEY3QUltQUZNQUFBRUhBS3NFQ3YvK0FCWUFzQUJGV0xBRUx4dXhCQnMrV2JBYzNMQWcwREF4Ly84QU1nQUFCTjRISVFJbUFEWUFBQUVIQUtzRUpnRXpBQllBc0FCRldMQUVMeHV4QkI4K1diQVozTEFkMERBeC8vLy9iZ0FBQXJRRjdBSW1BRllBQUFFSEFLc0RZdi8rQUJZQXNBQkZXTEFITHh1eEJ4cytXYkFQM0xBVDBEQXgvLzhBY2Yvc0JMMEhJUUltQURrQUFBRUhBS3NFWlFFekFCWUFzQUJGV0xBSkx4dXhDUjgrV2JBUzNMQVcwREF4Ly84QUQvL3NBL2NGN0FJbUFGa0FBQUVIQUtzRUEvLytBQllBc0FCRldMQUhMeHV4QnhzK1diQVMzTEFXMERBeC8vLytyQUFBQlFJR1FRQW1BTTlrQUFBSEFLMzk1Z0FBLy84QWxQNmVCS01Gc0FJbUFDWUFBQUFIQUt3RXVRQUsvLzhBZlA2TEJESUdBQUltQUVZQUFBQUhBS3dFeS8vMy8vOEFsUDZlQk5JRnNBSW1BQ2dBQUFBSEFLd0VsQUFLLy84QVQvNlVCQU1HQUFJbUFFZ0FBQUFIQUt3RXRBQUEvLzhBbFAzNUJOSUZzQUltQUNnQUFBQUhBYUlCU1A2Uy8vOEFULzM1QkFNR0FBSW1BRWdBQUFBSEFhSUJhUDZTLy84QWxQNmVCUmdGc0FJbUFDd0FBQUFIQUt3RkpnQUsvLzhBZWY2ZUEvZ0dBQUltQUV3QUFBQUhBS3dFb1FBSy8vOEFsQUFBQlJnSE5nSW1BQzhBQUFFSEFIVUJiZ0UyQUFrQXNBUXZzQS9jTURFQS8vOEFmUUFBQkRZSFBRSW1BRThBQUFFSEFIVUJhd0U5QUFrQXNBUXZzQS9jTURFQS8vOEFsUDdmQlJnRnNBSW1BQzhBQUFBSEFLd0U2UUJMLy84QWZmN0tCRFlHQUFJbUFFOEFBQUFIQUt3RWVRQTIvLzhBbFA2ZUJDWUZzQUltQURBQUFBQUhBS3dFdVFBSy8vOEFlUDZlQVlzR0FBSW1BRkFBQUFBSEFLd0RYQUFLLy84QWxQNmVCbW9Gc0FJbUFERUFBQUFIQUt3RjFnQUsvLzhBZlA2ZUJua0VUZ0ltQUZFQUFBQUhBS3dGMlFBSy8vOEFsUDZhQlJjRnNBSW1BRElBQUFBSEFLd0ZLQUFHLy84QWVmNmVBL2dFVGdJbUFGSUFBQUFIQUt3RWpRQUsvLzhBbEFBQUJOUUhRZ0ltQURRQUFBRUhBSFVCY2dGQ0FBa0FzQU12c0JiY01ERUEvLzhBZlA1Z0JEQUY5d0ltQUZRQUFBRUhBSFVCbmYvM0FBa0FzQXd2c0IzY01ERUEvLzhBbFA2ZUJONEZzQUltQURZQUFBQUhBS3dFdWdBSy8vOEFjdjZlQXJRRVRnSW1BRllBQUFBSEFLd0RWZ0FLLy84QVN2NlVCSW9GeEFJbUFEY0FBQUFIQUt3RTFRQUEvLzhBUy82TEE4b0VUZ0ltQUZjQUFBQUhBS3dFZlAvMy8vOEFMZjZYQkxBRnNBSW1BRGdBQUFBSEFLd0V3d0FELy84QUNQNlVBbklGUVFJbUFGZ0FBQUFIQUt3RUZBQUEvLzhBRWdBQUJSMEhPQUltQURvQUFBRUhBS1FBc0FGREFBa0FzQUV2c0JMY01ERUEvLzhBRmdBQUE5b0Y3UUltQUZvQUFBRUdBS1FZK0FBSkFMQUJMN0FTM0RBeEFQLy9BQkwrbmdVZEJiQUNKZ0E2QUFBQUJ3Q3NCTzhBQ3YvL0FCYituZ1BhQkRvQ0pnQmFBQUFBQndDc0JGY0FDdi8vQUREK25nYmxCYkFDSmdBN0FBQUFCd0NzQmVZQUN2Ly9BQ0grbmdYTUJEb0NKZ0JiQUFBQUJ3Q3NCVTRBQ3YvL0FGRCtuZ1NNQmJBQ0pnQStBQUFBQndDc0JNRUFDdi8vQUZMK25nUEFCRG9DSmdCZUFBQUFCd0NzQkdNQUN2Ly8vaHovN0FWa0JkY0FKZ0F6UmdBQUJ3RmEvYlVBQVAvL0FBa0FBQVNVQlI0Q0pnRzZBQUFBQndDdC8zYiszZi8vL3lvQUFBUHhCU0VBSmdHK1BBQUFCd0N0L21UKzRQLy8vemNBQUFTa0JSd0FKZ0hCUEFBQUJ3Q3QvbkgrMi8vLy96a0FBQUd6QlNFQUpnSENQQUFBQndDdC9uUCs0UC8vLzVQLzhBUjVCUjRBSmdISUNnQUFCd0N0L3MzKzNmLy8vdWdBQUFSeUJSNEFKZ0hTUEFBQUJ3Q3QvaUwrM2YvLy82UUFBQVNPQlI0QUpnSHpDZ0FBQndDdC90NyszZi8vQUFrQUFBU1VCSTBDQmdHNkFBRC8vd0IyQUFBRUNnU05BZ1lCdXdBQS8vOEFkZ0FBQTdVRWpRSUdBYjRBQVAvL0FFRUFBQVB6QkkwQ0JnSFRBQUQvL3dCMkFBQUVhQVNOQWdZQndRQUEvLzhBaFFBQUFYY0VqUUlHQWNJQUFQLy9BSFlBQUFSb0JJMENCZ0hFQUFELy93QjJBQUFGandTTkFnWUJ4Z0FBLy84QVQvL3dCRzhFblFJR0FjZ0FBUC8vQUhZQUFBUXNCSTBDQmdISkFBRC8vd0FrQUFBRUZnU05BZ1lCelFBQS8vOEFCUUFBQkRZRWpRSUdBZElBQVAvL0FCVUFBQVJLQkkwQ0JnSFJBQUQvLy8rZEFBQUNZd1hxQWlZQndnQUFBUWNBYXY5QUFCNEFGZ0N3QUVWWXNBSXZHN0VDSFQ1WnNBdmNzQlRRTURILy93QUZBQUFFTmdYcUFpWUIwZ0FBQVFZQWFsa2VBQllBc0FCRldMQUlMeHV4Q0IwK1diQVEzTEFaMERBeC8vOEFkZ0FBQTdVRjZnSW1BYjRBQUFFR0FHcGhIZ0FXQUxBQVJWaXdCaThic1FZZFBsbXdFOXl3SE5Bd01mLy9BSFlBQUFPWEJoNENKZ0hxQUFBQkJ3QjFBU01BSGdBSkFMQUVMN0FJM0RBeEFQLy9BRDcvOEFQdkJKMENCZ0hNQUFELy93Q0ZBQUFCZHdTTkFnWUJ3Z0FBLy8vL25RQUFBbU1GNmdJbUFjSUFBQUVIQUdyL1FBQWVBQllBc0FCRldMQUNMeHV4QWgwK1diQUwzTEFVMERBeC8vOEFKUC93QTJRRWpRSUdBY01BQVAvL0FIWUFBQVJvQmg0Q0pnSEVBQUFCQndCMUFSY0FIZ0FKQUxBRUw3QVAzREF4QVAvL0FCLy83QVE1QmdRQ0pnSUJBQUFCQmdDZ2VoNEFFd0N3QUVWWXNBOHZHN0VQSFQ1WnNCUGNNREVBLy84QUNRQUFCSlFFalFJR0Fib0FBUC8vQUhZQUFBUUtCSTBDQmdHN0FBRC8vd0IyQUFBRGx3U05BZ1lCNmdBQS8vOEFkZ0FBQTdVRWpRSUdBYjRBQVAvL0FIWUFBQVJ1QmdRQ0pnSCtBQUFCQndDZ0FMb0FIZ0FUQUxBQVJWaXdDQzhic1FnZFBsbXdEZHd3TVFELy93QjJBQUFGandTTkFnWUJ4Z0FBLy84QWRnQUFCR2dFalFJR0FjRUFBUC8vQUUvLzhBUnZCSjBDQmdISUFBRC8vd0IyQUFBRVlnU05BZ1lCN3dBQS8vOEFkZ0FBQkN3RWpRSUdBY2tBQVAvL0FFLy84QVJEQkowQ0JnRzhBQUQvL3dBa0FBQUVGZ1NOQWdZQnpRQUEvLzhBRlFBQUJFb0VqUUlHQWRFQUFBQUJBRUwrT1FQbkJKMEFLQUNrc2ljcEtoRVNPUUN3Rnkrd0FFVllzQW92RzdFS0hUNVpzQUJGV0xBWkx4dXhHUTgrV2JBS0VMSURBUW9yV0NIWUcvUlpzZ1lLR1JFU09iSW5HUW9SRWptd0p5K3lYeWNCY3JJL0p3RnhzczhuQVhHeS95Y0JjYklQSndGeXRHOG5meWNDY2JTdko3OG5BbDJ5anljQmNySy9Kd0Z5c2lRQkNpdFlJZGdiOUZteUVDUW5FUkk1c0JrUXNCYlFzaDBaQ2hFU09iQVpFTElmQVFvcldDSFlHL1JaTURFQk5DWWpJZ1lWSXpRMk16SVdGUlFHQnhZV0ZSUUdCeEVqRVNZbU5UTVdNekkyTlRRbkl6VXpOZ0xpY0d0Ylp2UHp3OWowYmwxdmJydXM4NXV3OHd2S2QzVGdsSnJIQTBOR1QwWThsTE9ubGx1S0p5U1JXNGF1R1A1QkFjSVlySWVUVjBpbUE3QUVBQUFCQUhiK21nVXNCSTBBRHdDb3NnTVFFUkVTT1FDd0FFVllzQXd2RzdFTUhUNVpzQUJGV0xBSkx4dXhDUjArV2JBQVJWaXdBUzhic1FFWFBsbXdBRVZZc0FZdkc3RUdEejVac0FCRldMQURMeHV4QXc4K1diSUtCZ2tSRWptd0NpKzByd3EvQ2dKZHNqOEtBWEd5endvQmNiSS9DZ0Z5c3Y4S0FYR3lEd29CY3JSdkNuOEtBbkcwM3dydkNnSmR0QjhLTHdvQ1hiSmZDZ0Z5c2dVQkNpdFlJZGdiOUZtd0F4Q3lEZ2NLSzFnaDJCdjBXVEF4QVNNUkl4RWhFU01STXhFaEVUTVJNd1VzODhUOTlQUHpBZ3p6eFA2YUFXWUIyLzRsQkkzK0VRSHYvQ2dBQVFCUC9rTUVRd1NkQUI0QVhySWJIeUFSRWprQXNBQkZXTEFPTHh1eERoMCtXYkFBUlZpd0JDOGJzUVFSUGxtd0FFVllzQU12RzdFRER6NVpzQWJRc2hJT0F4RVNPYkFPRUxJVkFRb3JXQ0hZRy9SWnNBTVFzaHNCQ2l0WUlkZ2I5Rm15SGdNT0VSSTVNREVCQmdZSEVTTVJKZ0luTlRRMk5qTXlCQmNqSmlZaklCRVZGQll6TWpZM0JFSU14cW56dGM4QmZ1eWMxZ0VFRlBNTWZYTCs3WWFIZUh3TkFZU2YwQnYrU1FHNUpBRWYzVStwLzRyYXduQnAvbzVJdWJWaWNQLy9BQVVBQUFRMkJJMENCZ0hTQUFELy93QUsvam9GcUFTakFpWUNGd0FBQUFjQnNBTG0vNkQvL3dCMkFBQUViZ1hTQWlZQi9nQUFBUWNBY0FDQ0FDSUFDUUN3QUMrd0N0d3dNUUQvL3dBZi8rd0VPUVhTQWlZQ0FRQUFBUVlBY0VJaUFBa0FzQUl2c0JEY01ERUEvLzhBVUFBQUJVMEVqUUlHQWZFQUFQLy9BQkwrVlFWQ0JiQUNKZ0FsQUFBQUJ3Q2pBWUlBQS8vL0FGcitXUVA3QkU0Q0pnQkZBQUFBQndDakFMVUFCLy8vQUpUK1hBUk1CYkFDSmdBcEFBQUFCd0NqQVVBQUN2Ly9BRlArVWdRTEJFNENKZ0JKQUFBQUJ3Q2pBUVFBQVAvL0FIaituZ0dMQkRvQ0pnQ01BQUFBQndDc0Exd0FDZ0FBQUE4QXVnQURBQUVFQ1FBQUFGNEFBQUFEQUFFRUNRQUJBQm9BWGdBREFBRUVDUUFDQUE0QWVBQURBQUVFQ1FBREFCb0FYZ0FEQUFFRUNRQUVBQm9BWGdBREFBRUVDUUFGQUN3QWhnQURBQUVFQ1FBR0FCb0FzZ0FEQUFFRUNRQUhBRUFBekFBREFBRUVDUUFKQUF3QkRBQURBQUVFQ1FBTEFCUUJHQUFEQUFFRUNRQU1BQ1lCTEFBREFBRUVDUUFOQUZ3QlVnQURBQUVFQ1FBT0FGUUJyZ0FEQUFFRUNRQVFBQXdDQWdBREFBRUVDUUFSQUF3Q0RnQkRBRzhBY0FCNUFISUFhUUJuQUdnQWRBQWdBRElBTUFBeEFERUFJQUJIQUc4QWJ3Qm5BR3dBWlFBZ0FFa0FiZ0JqQUM0QUlBQkJBR3dBYkFBZ0FGSUFhUUJuQUdnQWRBQnpBQ0FBVWdCbEFITUFaUUJ5QUhZQVpRQmtBQzRBVWdCdkFHSUFid0IwQUc4QUlBQk5BR1VBWkFCcEFIVUFiUUJTQUdVQVp3QjFBR3dBWVFCeUFGWUFaUUJ5QUhNQWFRQnZBRzRBSUFBeUFDNEFNQUF3QURFQU1RQTFBRElBT3dBZ0FESUFNQUF4QURRQVVnQnZBR0lBYndCMEFHOEFMUUJOQUdVQVpBQnBBSFVBYlFCU0FHOEFZZ0J2QUhRQWJ3QWdBR2tBY3dBZ0FHRUFJQUIwQUhJQVlRQmtBR1VBYlFCaEFISUFhd0FnQUc4QVpnQWdBRWNBYndCdkFHY0FiQUJsQUM0QVJ3QnZBRzhBWndCc0FHVUFSd0J2QUc4QVp3QnNBR1VBTGdCakFHOEFiUUJEQUdnQWNnQnBBSE1BZEFCcEFHRUFiZ0FnQUZJQWJ3QmlBR1VBY2dCMEFITUFid0J1QUV3QWFRQmpBR1VBYmdCekFHVUFaQUFnQUhVQWJnQmtBR1VBY2dBZ0FIUUFhQUJsQUNBQVFRQndBR0VBWXdCb0FHVUFJQUJNQUdrQVl3QmxBRzRBY3dCbEFDd0FJQUJXQUdVQWNnQnpBR2tBYndCdUFDQUFNZ0F1QURBQWFBQjBBSFFBY0FBNkFDOEFMd0IzQUhjQWR3QXVBR0VBY0FCaEFHTUFhQUJsQUM0QWJ3QnlBR2NBTHdCc0FHa0FZd0JsQUc0QWN3QmxBSE1BTHdCTUFFa0FRd0JGQUU0QVV3QkZBQzBBTWdBdUFEQUFVZ0J2QUdJQWJ3QjBBRzhBVFFCbEFHUUFhUUIxQUcwQUF3QUFBQUFBQVA5cUFHUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFJQUNBQUMvLzhBRHdBQkFBQUFDZ0JjQUt3QUJFUkdURlFBR21ONWNtd0FLR2R5WldzQU5teGhkRzRBUkFBRUFBQUFBUC8vQUFJQUFBQUVBQVFBQUFBQS8vOEFBZ0FCQUFVQUJBQUFBQUQvL3dBQ0FBSUFCZ0FFQUFBQUFQLy9BQUlBQXdBSEFBaGpjSE53QURKamNITndBRGhqY0hOd0FENWpjSE53QUVSclpYSnVBRXByWlhKdUFFcHJaWEp1QUVwclpYSnVBRW9BQUFBQkFBRUFBQUFCQUFNQUFBQUJBQUlBQUFBQkFBQUFBQUFCQUFRQUJRQU1BQXdBREFBTUFkNEFBUUFBQUFFQUNBQUJBQW9BQlFBa0FFZ0FBUURlQUFnQUpRQW1BQ2NBS0FBcEFDb0FLd0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU53QTRBRGtBT2dBN0FEd0FQUUErQUdVQVp3Q1NBTEFBc1FDeUFMTUF0QUMxQUxZQXR3QzRBTGtBMFFEU0FOTUExQURWQU5ZQTF3RFlBTmtBMmdEYkFOd0EzUURlQU44QTRBRGhBT0lBNHdEa0FPVUE1Z0RuQU9nQkxBRXdBVElCT0FFNkFUd0JQZ0UvQVVVQlJnRi9BWVVCaWdHTkFrWUNSd0pKQWtzQ1RBSk5BazRDVHdKUUFsRUNVZ0pUQWxRQ1ZRSldBbGNDV0FKWkFsb0NXd0pjQWwwQ1hnSmZBbUFDWVFKaUFtTUNaQUpsQW9JQ2hBS0dBb2dDaWdLTUFvNENrQUtTQXBRQ2xnS1lBcG9DbkFLZUFxQUNvZ0trQXFZQ3FBS3FBcXdDcmdLeEFyTUN0UUszQXJrQ3V3SzlBcjhDd1FMRUFzWUN5QUxLQXN3Q3pnTFFBdElDMUFMWUF0b0MzQUxlQXVBQzRnTGtBdVlDNkFMcUF1d0M3Z0x3QXZFQzh3TDFBMUlEVXdOVUExVURWZ05YQTFnRFdnTmJBMXdEWFFOZUExOERZQU5oQTJNRFpBTmxBMllEWndOb0Eya0RlUU42QTNzRGZBTjlBMzREZndPQUE0RURnZ09EQTRRRGhRT0dBNGNEaUFPSkE0b0Rpd09NQTQwRGpnTzZBN3dEdmdQVEE5a0Qzd1JJQkVvRVRnUldCRmdFWFFScEFBSUFBQUFDQUFvN3VnQUJBMndBQkFBQUFiRUdzamFlTnA0RzNBY3lOMEEyVERiS080bzMyQWM0T3Q0NjNqZ2VPb3cxNmpyZU90NDdpalpXQ25JSzlEZytPQjQycERaNE9USTdBRFlxQzE0M3RqYmNOKzRMb0F6S0ROUTVsam1XTi9nMjNEWVlEY280SkE0c09aQTRKQTVHTnR3T2lEbktOMEE3aWpkQUR3SVAvQkQ2RWRnU2RqZ2tFbnc1bGhVNkZ4UVlKaGhBR0VZWVRCcEdHa3dhZ2hxMEd6SWNxQjVhSUJnNjNpRk9JdUE1TWlVdU90NDYzamIyT3Q0NjNpWDRKNUk1b0Nod0tUSXB3Q29lS3ZnNUtDdUNPWkFzVEN4MkxkdzIzREJpTUtBeDBqT1FOdHd5VkRMYU13UXpXak9RTjBBMytEYWtPQ1F6dGpiY09jbzVLRHFNT293NUtEYWVNK0EybmphZU5wNDFValY0TllJMWpEV3FOYncxempYZ05zbzdpanVLTzRvN2lqZytOMEEzUURkQU4wQTNRRGRBTjBBMnlqZllOOWczMkRmWU90NDYzanJlT3Q0NjNqdUtPNG83aWp1S080bzRIamdlT0I0NEhqc0FON1kzdGplMk43WTN0amUyTjdZMzdqZnVOKzQzN2ptV04vZzMrRGY0Ti9nMytEZ2tPQ1EzUURlMk4wQTN0amRBTjdZMnlqYktOc28yeWp1S045ZzM3amZZTis0MzJEZnVOOWczN2pmWU4rNDYzam1XT3Q0NjNqcmVPdDQ2M2pnZU9vdzE2alhxTmVvMTZqcmVPWlk2M2ptV090NDVsam1XTzRvMytEdUtOL2c3aWpmNE5oZzJHRFlZT0Q0NFBqZytPQjQ0SGpnZU9CNDRIamdlTm5nN0FEZ2tPd0EyS2pZcU5pbzNRRGZZT3Q0NjNqdUtPd0EzUURaTU45ZzJLanJlT3Q0NmpEcmVPdDQ3aWpaV09ENDdBRGt5T3Q0N0FEbVdOL2c0SkRmNE45ZzV5anJlT3Q0NEhqcU1Pb3cyOWpkQU5rdzV5amZZT3Q0NjNqdUtObFkyeWpnK09USTN0amZ1Ti9nMjNEZ2tPWkEzN2prb09DUTJlRFo0Tm5nN0FEZ2tOcDQybmphZU90NDVsamRBTjdZMzJEZnVOcVE0SkRiS093QTRKRHJlT1RJNWtEcmVOMEEzdGpkQU43WTMyRGZ1Tis0Mzdqa3lPWkE3aWpmNE4vZzIzRGIyT0NRMjlqZ2tOdlk0SkRreU9aQTNRRGUyTjBBM3RqZEFON1kzUURlMk4wQTN0amRBTjdZM1FEZTJOMEEzdGpkQU43WTNRRGUyTjBBM3RqZEFON1kzMkRmdU45ZzM3amZZTis0MzJEZnVOOWczN2pmWU4rNDMyRGZ1TjlnMzdqcmVPdDQ3aWpmNE80bzMrRHVLTi9nN2lqZjRPNG8zK0R1S04vZzdpamY0Ti9nNEhqZ2VPd0E0SkRzQU9DUTdBRGdrT293NjNqZytPVEk1a0RuS09TZzVNam1RT1pZNW9EbktPb3c2M2pyZU93QTdpZ0FDQUlzQUJBQUVBQUFBQmdBR0FBRUFDd0FNQUFJQUV3QVRBQVFBSlFBcUFBVUFMQUEyQUFzQU9BQS9BQllBUlFCR0FCNEFTUUJLQUNBQVRBQk1BQ0lBVHdCUEFDTUFVUUJVQUNRQVZnQldBQ2dBV0FCWUFDa0FXZ0JkQUNvQVh3QmZBQzRBaWdDS0FDOEFuQUNjQURBQXNBQzBBREVBdGdDNEFEWUF1Z0M2QURrQXZBQzhBRG9BdndEQUFEc0F3Z0RDQUQwQXhBREVBRDRBeGdETkFEOEEwUURSQUVjQTB3RGRBRWdBM3dEZkFGTUE0UURqQUZRQTVRRHVBRmNBOEFEd0FHRUE5UUQzQUdJQStnRDdBR1VBL1FEL0FHY0JBZ0VFQUdvQkNRRUpBRzBCREFFTUFHNEJGd0VaQUc4QklRRWhBSElCS3dFdEFITUJNQUV3QUhZQk1nRXlBSGNCU1FGSkFIZ0JiQUZ0QUhrQmJ3RnhBSHNCdWdHNkFINEJ2UUc5QUg4QnhBSEZBSUFCeUFISUFJSUJ5Z0hMQUlNQnpRSE5BSVVDS0FJb0FJWUNLZ0lyQUljQ1JnSkhBSWtDU1FKSkFJc0NTd0pzQUl3Q2JnSnhBSzRDZGdKN0FMSUNnQUtJQUxnQ2lnS0tBTUVDakFLTUFNSUNqZ0tPQU1NQ2tBS1FBTVFDa2dLYkFNVUNwQUttQU04Q3FBS29BTklDcWdLcUFOTUNyQUtzQU5RQ3JnS3VBTlVDc1FLeEFOWUNzd0t6QU5jQ3RRSzFBTmdDdHdLM0FOa0N1UUs1QU5vQ3V3SzdBTnNDdlFMSkFOd0N5d0xMQU9rQ3pRTE5BT29DendMUEFPc0MyZ0xhQU93QzNBTGNBTzBDM2dMZUFPNEM0QUxnQU84QzRnTGlBUEFDNUFMa0FQRUM1Z0xtQVBJQzZBTG9BUE1DNmdMcUFQUUM3QUxzQVBVQzdnTHhBUFlDOHdMekFQb0M5UUwxQVBzRFVnTlhBUHdEV2dOcEFRSURiQU5zQVJJRGNBTndBUk1EY2dOeUFSUURkZ04yQVJVRGVRTjZBUllEZkFPRkFSZ0Rod09KQVNJRGl3T1FBU1VEa2dPVEFTc0RsUU9ZQVMwRG5nT2ZBVEVEb1FPaEFUTURvd09qQVRRRHBRT29BVFVEcXdPd0FUa0RzZ095QVQ4RHRnTzNBVUFEdkFPOEFVSUR2Z1BIQVVNRHlnUExBVTBEelFQUUFVOEQxd1BZQVZNRDNBUGNBVlVEM2dQa0FWWUQ2UVBxQVYwRDdnUVdBVjhFR0FRWUFZZ0VHZ1FuQVlrRUx3UXZBWmNFTWdReUFaZ0VOQVEwQVprRVFBUkZBWm9FU0FSSUFhQUVTZ1JLQWFFRVRBUk1BYUlFVGdSUEFhTUVWQVJYQWFVRVdnUmFBYWtFWEFSZEFhb0VYd1JmQWF3RVl3UmpBYTBFWlFSbEFhNEVhUVJwQWE4RXFRU3BBYkFBQ2dBNC84UUEwZi9FQU5YL3hBRXkvOFFCT3YvRUF0ci94QUxjLzhRQzN2L0VBNDMveEFSTS84UUFGUUE2QUJRQU93QW1BRDBBRmdFWUFCUUNaUUFXQXV3QUpnTHVBQllDOEFBV0ExY0FGZ05tQUJZRGFRQVdBNThBSmdPaEFDWURvd0FtQTZVQUZnTzJBQlFEdmdBV0JFQUFGZ1JDQUJZRVJBQVdCR2tBRmdBQkFCUC9DQURPQUJEKzdnQVMvdTRBSmY5QUFDNy9NQUE0QUJRQVJmL2VBRWYvNndCSS8rc0FTZi9yQUV2LzZ3QlQvK3NBVmYvckFGYi81Z0JaLytvQVd2L29BRjMvNkFDVC8rc0FtUC9yQUpyLzZnQ3gvMEFBcy85QUFMci82d0M4LytnQXgvL3JBTWovNndESy8rb0EwUUFVQU5VQUZBRDIvK3NCQXYvckFRei9RQUVYLytzQkdmL29BUjMvNndFaC8rc0JNZ0FVQVRuLzZ3RTZBQlFCUy8vckFVei82d0ZXLytzQmJ2N3VBWEwrN2dGMi91NEJkLzd1QWJyL3dBSkwvMEFDVFA5QUFrMy9RQUpPLzBBQ1QvOUFBbEQvUUFKUi8wQUNadi9lQW1mLzNnSm8vOTRDYWYvZUFtci8zZ0pyLzk0Q2JQL2VBbTMvNndKdS8rc0NiLy9yQW5ELzZ3SngvK3NDZC8vckFuai82d0o1LytzQ2V2L3JBbnYvNndKOC8rb0NmZi9xQW43LzZnSi8vK29DZ1Avb0FvSC82QUtDLzBBQ2cvL2VBb1QvUUFLRi85NENodjlBQW9mLzNnS0ovK3NDaS8vckFvMy82d0tQLytzQ2tmL3JBcFAvNndLVi8rc0NsLy9yQXBuLzZ3S2IvK3NDbmYvckFwLy82d0toLytzQ28vL3JBckgvTUFMRi8rc0N4Ly9yQXNuLzZ3TGFBQlFDM0FBVUF0NEFGQUxoLytvQzQvL3FBdVgvNmdMbi8rb0M2Zi9xQXV2LzZnTHYvK2dEVXY5QUExci9RQU5xLytzRGJ2L3FBM0QvNndOeS8rZ0RkZi9xQTNiLzZ3TjMvK29EZnY4d0E0TC9RQU9OQUJRRGovL2VBNUQvNndPUy8rc0RsUC9yQTVYLzZBT1gvK3NEbnYvb0E2Yi82QU91LzBBRHIvL2VBN0wvNndPMy8rZ0R1UC9yQTczLzZ3Ty8vK2dEeFA5QUE4WC8zZ1BHLzBBRHgvL2VBOHYvNndQTi8rc0R6di9yQTlqLzZ3UGEvK3NEM1AvckErRC82QVBpLytnRDVQL29BK3YvNndQdS8wQUQ3Ly9lQS9EL1FBUHgvOTREOHY5QUEvUC8zZ1AwLzBBRDlmL2VBL2IvUUFQMy85NEQrUDlBQS9uLzNnUDYvMEFEKy8vZUEvei9RQVA5Lzk0RC92OUFBLy8vM2dRQS8wQUVBZi9lQkFML1FBUUQvOTRFQlA5QUJBWC8zZ1FILytzRUNmL3JCQXYvNndRTi8rc0VELy9yQkJILzZ3UVQvK3NFRmYvckJCdi82d1FkLytzRUgvL3JCQ0gvNndRai8rc0VKZi9yQkNmLzZ3UXAvK3NFSy8vckJDMy82d1F2LytzRU1mL3JCRFAvNmdRMS8rb0VOLy9xQkRuLzZnUTcvK29FUGYvcUJELy82Z1JCLytnRVEvL29CRVgvNkFSTUFCUUFJQUE0Lzk4QU92L2tBRHYvN0FBOS85MEEwZi9mQU5YLzN3RVkvK1FCTXYvZkFUci8zd0c2QUE0Q1pmL2RBdHIvM3dMYy85OEMzdi9mQXV6LzdBTHUvOTBDOFAvZEExZi8zUU5tLzkwRGFmL2RBNDMvM3dPZi8rd0RvZi9zQTZQLzdBT2wvOTBEdHYva0E3Ny8zUVJBLzkwRVF2L2RCRVQvM1FSTS85OEVhZi9kQUJvQU9QL09BRHIvN1FBOS85QUEwZi9PQU5YL3pnRVkvKzBCTXYvT0FUci96Z0psLzlBQzJ2L09BdHovemdMZS84NEM3di9RQXZELzBBTlgvOUFEWnYvUUEybi8wQU9OLzg0RHBmL1FBN2IvN1FPKy85QUVRUC9RQkVMLzBBUkUvOUFFVFAvT0JHbi8wQUFRQUM3LzdnQTUvKzRDWWYvdUFtTC83Z0pqLys0Q1pQL3VBckgvN2dMZy8rNEM0di91QXVULzdnTG0vKzRDNlAvdUF1ci83Z04rLys0RU12L3VCRFQvN2dCS0FBWUFFQUFMQUJBQURRQVVBRUVBRWdCSC8rZ0FTUC9vQUVuLzZBQkwvK2dBVmYvb0FHRUFFd0NULytnQW1QL29BTHIvNkFESC8rZ0F5UC9vQVBiLzZBRUMvK2dCSGYvb0FTSC82QUU1LytnQlMvL29BVXovNkFGVy8rZ0JiQUFRQVcwQUVBRnZBQkFCY0FBUUFYRUFFQUp0LytnQ2J2L29BbS8vNkFKdy8rZ0NjZi9vQW9uLzZBS0wvK2dDamYvb0FvLy82QUtSLytnQ2svL29BcFgvNkFLWC8rZ0NtZi9vQXB2LzZBS2QvK2dDbi8vb0FxSC82QUtqLytnRGF2L29BNUQvNkFPVS8rZ0RsLy9vQTZjQUVBT29BQkFEcXdBUUE3TC82QU80LytnRHZmL29BOHYvNkFQTi8rZ0R6di9vQTlyLzZBUHIvK2dFQi8vb0JBbi82QVFMLytnRURmL29CQS8vNkFRUi8rZ0VFLy9vQkJYLzZBUXAvK2dFSy8vb0JDMy82QVF4LytnQUFnRDEvOVlCYmYrWUFEMEFSLy9zQUVqLzdBQkovK3dBUy8vc0FGWC83QUNULyt3QW1QL3NBTHIvN0FESC8rd0F5UC9zQVBiLzdBRUMvK3dCSGYvc0FTSC83QUU1Lyt3QlMvL3NBVXovN0FGVy8rd0NiZi9zQW03LzdBSnYvK3dDY1Avc0FuSC83QUtKLyt3Q2kvL3NBbzMvN0FLUC8rd0NrZi9zQXBQLzdBS1YvK3dDbC8vc0Fwbi83QUtiLyt3Q25mL3NBcC8vN0FLaC8rd0NvLy9zQTJyLzdBT1EvK3dEbFAvc0E1Zi83QU95Lyt3RHVQL3NBNzMvN0FQTC8rd0R6Zi9zQTg3LzdBUGEvK3dENi8vc0JBZi83QVFKLyt3RUMvL3NCQTMvN0FRUC8rd0VFZi9zQkJQLzdBUVYvK3dFS2Yvc0JDdi83QVF0Lyt3RU1mL3NBQmdBVS8vaUFSZi80Z0Z0QUJnQ2QvL2lBbmovNGdKNS8rSUNldi9pQW52LzRnTEYvK0lDeC8vaUFzbi80Z053LytJRGR2L2lBNUwvNGdQWS8rSUQzUC9pQkJ2LzRnUWQvK0lFSC8vaUJDSC80Z1FqLytJRUpmL2lCQ2YvNGdRdi8rSUFCZ0FRLzRRQUV2K0VBVzcvaEFGeS80UUJkditFQVhmL2hBQVFBQzcvN0FBNS8rd0NZZi9zQW1MLzdBSmovK3dDWlAvc0FySC83QUxnLyt3QzR2L3NBdVQvN0FMbS8rd0M2UC9zQXVyLzdBTisvK3dFTXYvc0JEVC83QUFlQUFiLzhnQUwvL0lBV3YvekFGMy84d0M4Ly9NQTlmLzFBUm4vOHdGcy8vSUJiZi95QVcvLzhnRncvL0lCY2YveUFvRC84d0tCLy9NQzcvL3pBM0wvOHdPVi8vTURudi96QTZiLzh3T24vL0lEcVAveUE2di84Z08zLy9NRHYvL3pBK0QvOHdQaS8vTUQ1UC96QkVILzh3UkQvL01FUmYvekFENEFKLy96QUN2Lzh3QXovL01BTmYvekFJUC84d0NTLy9NQWwvL3pBTEwvOHdEREFBMEEwdi96QVFmLzh3RVcvL01CR3YvekFSei84d0VlLy9NQklQL3pBVGovOHdGVi8vTUNLUC96QWluLzh3SXIvL01DTFAvekFsTC84d0pjLy9NQ1hmL3pBbDcvOHdKZi8vTUNZUC96QW9qLzh3S0svL01DalAvekFvNy84d0tjLy9NQ252L3pBcUQvOHdLaS8vTUN4UC96QXNiLzh3TEkvL01DK2YvekExYi84d05qLy9NRGlmL3pBNHovOHdPNS8vTUR2UC96QTlmLzh3UFovL01EMi8vekJCci84d1FjLy9NRUh2L3pCQ0QvOHdRaS8vTUVKUC96QkNiLzh3UW8vL01FS3YvekJDei84d1F1Ly9NRU1QL3pCS24vOHdBL0FDZi81Z0FyLytZQU0vL21BRFgvNWdDRC8rWUFrdi9tQUpmLzVnQ3kvK1lBdC8vQ0FNTUFFQURTLytZQkIvL21BUmIvNWdFYS8rWUJIUC9tQVI3LzVnRWcvK1lCT1AvbUFWWC81Z0lvLytZQ0tmL21BaXYvNWdJcy8rWUNVdi9tQWx6LzVnSmQvK1lDWHYvbUFsLy81Z0pnLytZQ2lQL21Bb3IvNWdLTS8rWUNqdi9tQXB6LzVnS2UvK1lDb1AvbUFxTC81Z0xFLytZQ3h2L21Bc2ovNWdMNS8rWURWdi9tQTJQLzVnT0ovK1lEalAvbUE3bi81Z084LytZRDEvL21BOW4vNWdQYi8rWUVHdi9tQkJ6LzVnUWUvK1lFSVAvbUJDTC81Z1FrLytZRUp2L21CQ2ovNWdRcS8rWUVMUC9tQkM3LzVnUXcvK1lFcWYvbUFEY0FKZi9rQUR6LzBnQTkvOU1Bc2Yva0FMUC81QURELytJQTJmL1NBUXovNUFKTC8rUUNUUC9rQWszLzVBSk8vK1FDVC8va0FsRC81QUpSLytRQ1pmL1RBb0wvNUFLRS8rUUNodi9rQXU3LzB3THcvOU1EVXYva0ExZi8wd05hLytRRFp2L1RBMmYvMGdOcC85TURndi9rQTQ3LzBnT2wvOU1EcnYva0E3Ny8wd1BCLzlJRHhQL2tBOGIvNUFQUC85SUQ2Zi9TQSs3LzVBUHcvK1FEOHYva0EvVC81QVAyLytRRCtQL2tBL3IvNUFQOC8rUUQvdi9rQkFELzVBUUMvK1FFQlAva0JFRC8wd1JDLzlNRVJQL1RCRTcvMGdSVy85SUVhZi9UQUNjQUVQOUdBQkwvUmdBbC84MEFzZi9OQUxQL3pRREcvL0lCRFAvTkFXNy9SZ0Z5LzBZQmR2OUdBWGYvUmdKTC84MENUUC9OQWszL3pRSk8vODBDVC8vTkFsRC96UUpSLzgwQ2d2L05Bb1QvelFLRy84MERVdi9OQTFyL3pRT0MvODBEcnYvTkE4VC96UVBHLzgwRDd2L05BL0QvelFQeS84MEQ5UC9OQS9iL3pRUDQvODBEK3YvTkEvei96UVArLzgwRUFQL05CQUwvelFRRS84MEFBUUREQUE0QXJ3QkgvOXdBU1AvY0FFbi8zQUJMLzl3QVVmL0JBRkwvd1FCVC85WUFWUC9CQUZYLzNBQlovOTBBV3YvaEFGMy80UUNULzl3QW1QL2NBSnIvM1FDNi85d0F2UC9oQUw3LzVnREEvOEVBd2YvckFNTC82UURFLy9BQXhmL25BTWYvM0FESS85d0F5Zi9qQU1yLzNRREwvODRBelAvVUFNMy8yd0RyLzhFQTcvL0JBUEQvd1FEeS84RUE4Ly9CQVBUL3dRRDIvOXdBOS8vQkFQbi93UUQ2LzhFQS9mL0JBUC8vd1FFQy85d0JCUC9CQVJmLzFnRVovK0VCSGYvY0FTSC8zQUUxLzhFQk9mL2NBVVQvd1FGSi84RUJTLy9jQVV6LzNBRlcvOXdDYmYvY0FtNy8zQUp2Lzl3Q2NQL2NBbkgvM0FKMi84RUNkLy9XQW5qLzFnSjUvOVlDZXYvV0Fudi8xZ0o4LzkwQ2ZmL2RBbjcvM1FKLy85MENnUC9oQW9ILzRRS0ovOXdDaS8vY0FvMy8zQUtQLzl3Q2tmL2NBcFAvM0FLVi85d0NsLy9jQXBuLzNBS2IvOXdDbmYvY0FwLy8zQUtoLzl3Q28vL2NBcjcvd1FMQS84RUN3di9CQXNQL3dRTEYvOVlDeC8vV0Fzbi8xZ0xoLzkwQzQvL2RBdVgvM1FMbi85MEM2Zi9kQXV2LzNRTHYvK0VEYXYvY0Eyei93UU51LzkwRGNQL1dBM0wvNFFOMS85MERkdi9XQTNmLzNRT1EvOXdEa2YvQkE1TC8xZ09ULzhFRGxQL2NBNVgvNFFPWC85d0RtUC9CQTUzL3dRT2UvK0VEcHYvaEE2My93UU95Lzl3RHMvL0JBN2YvNFFPNC85d0R2Zi9jQTcvLzRRUEwvOXdEemYvY0E4Ny8zQVBVLzhFRDF2L0JBOWovMWdQYS85d0QzUC9XQStELzRRUGkvK0VENVAvaEErai93UVByLzl3RUIvL2NCQW4vM0FRTC85d0VEZi9jQkEvLzNBUVIvOXdFRS8vY0JCWC8zQVFiLzlZRUhmL1dCQi8vMWdRaC85WUVJLy9XQkNYLzFnUW4vOVlFS2YvY0JDdi8zQVF0Lzl3RUwvL1dCREgvM0FRei85MEVOZi9kQkRmLzNRUTUvOTBFTy8vZEJEMy8zUVEvLzkwRVFmL2hCRVAvNFFSRi8rRUVTZi9CQkV2L3dRUlYvOEVFWXYvQkJHVC93UVJtLzhFQWRnQUcvOW9BQy8vYUFFZi84QUJJLy9BQVNmL3dBRXYvOEFCVi8vQUFXZi92QUZyLzNBQmQvOXdBay8vd0FKai84QUNhLys4QXV2L3dBTHovM0FEQi8rd0F3d0FQQU1YLzZnREgvL0FBeVAvd0FNbi96Z0RLLys4QXkvL25BUGIvOEFFQy8vQUJHZi9jQVIzLzhBRWgvL0FCT2Yvd0FVdi84QUZNLy9BQlZ2L3dBV3ovMmdGdC85b0JiLy9hQVhELzJnRngvOW9DYmYvd0FtNy84QUp2Ly9BQ2NQL3dBbkgvOEFKOC8rOENmZi92QW43Lzd3Si8vKzhDZ1AvY0FvSC8zQUtKLy9BQ2kvL3dBbzMvOEFLUC8vQUNrZi93QXBQLzhBS1YvL0FDbC8vd0Fwbi84QUtiLy9BQ25mL3dBcC8vOEFLaC8vQUNvLy93QXVILzd3TGovKzhDNWYvdkF1Zi83d0xwLys4QzYvL3ZBdS8vM0FOcS8vQURidi92QTNMLzNBTjEvKzhEZC8vdkE1RC84QU9VLy9BRGxmL2NBNWYvOEFPZS85d0Rwdi9jQTZmLzJnT28vOW9EcS8vYUE3TC84QU8zLzl3RHVQL3dBNzMvOEFPLy85d0R5Ly93QTgzLzhBUE8vL0FEMnYvd0ErRC8zQVBpLzl3RDVQL2NBK3YvOEFRSC8vQUVDZi93QkF2LzhBUU4vL0FFRC8vd0JCSC84QVFULy9BRUZmL3dCQ24vOEFRci8vQUVMZi93QkRILzhBUXovKzhFTmYvdkJEZi83d1E1Lys4RU8vL3ZCRDMvN3dRLy8rOEVRZi9jQkVQLzNBUkYvOXdBUkFBUUFBd0FFZ0FNQUVmLzV3QkkvK2NBU2YvbkFFdi81d0JWLytjQWsvL25BSmovNXdDNi8rY0F3d0FQQU1mLzV3REkvK2NBOXYvbkFRTC81d0VkLytjQklmL25BVG4vNXdGTC8rY0JUUC9uQVZiLzV3RnVBQXdCY2dBTUFYWUFEQUYzQUF3Q2JmL25BbTcvNXdKdi8rY0NjUC9uQW5ILzV3S0ovK2NDaS8vbkFvMy81d0tQLytjQ2tmL25BcFAvNXdLVi8rY0NsLy9uQXBuLzV3S2IvK2NDbmYvbkFwLy81d0toLytjQ28vL25BMnIvNXdPUS8rY0RsUC9uQTVmLzV3T3kvK2NEdVAvbkE3My81d1BMLytjRHpmL25BODcvNXdQYS8rY0Q2Ly9uQkFmLzV3UUovK2NFQy8vbkJBMy81d1FQLytjRUVmL25CQlAvNXdRVi8rY0VLZi9uQkN2LzV3UXQvK2NFTWYvbkFBWUF5Zi9xQU96LzdnRDEvOVVBL2YvdEFUUC83QUZZLyt3QUFRRDEvOEFBQVFESkFDQUFmZ0FHQUF3QUN3QU1BRWYvNkFCSS8rZ0FTZi9vQUVvQURBQkwvK2dBVS8vcUFGWC82QUJhQUFzQVhRQUxBSlAvNkFDWS8rZ0F1di9vQUx3QUN3REQvNUFBeFFBTEFNZi82QURJLytnQXlRQU1BUGIvNkFFQy8rZ0JGLy9xQVJrQUN3RWQvK2dCSWYvb0FUbi82QUZMLytnQlRQL29BVmIvNkFGc0FBd0JiUUFNQVc4QURBRndBQXdCY1FBTUFici92d0c4Lys0QndQL3NBY2ovN1FISy8rd0J6UC8xQWMwQURnSFBBQTBCMGdBTkFtMy82QUp1LytnQ2IvL29BbkQvNkFKeC8rZ0NkLy9xQW5qLzZnSjUvK29DZXYvcUFudi82Z0tBQUFzQ2dRQUxBb24vNkFLTC8rZ0NqZi9vQW8vLzZBS1IvK2dDay8vb0FwWC82QUtYLytnQ21mL29BcHYvNkFLZC8rZ0NuLy9vQXFILzZBS2ovK2dDeGYvcUFzZi82Z0xKLytvQzd3QUxBMnIvNkFOdy8rb0RjZ0FMQTNiLzZnT1EvK2dEa3YvcUE1VC82QU9WQUFzRGwvL29BNTRBQ3dPbUFBc0Rwd0FNQTZnQURBT3JBQXdEc3Yvb0E3Y0FDd080LytnRHZmL29BNzhBQ3dQTC8rZ0R6Zi9vQTg3LzZBUFkvK29EMnYvb0E5ei82Z1BnQUFzRDRnQUxBK1FBQ3dQci8rZ0VCLy9vQkFuLzZBUUwvK2dFRGYvb0JBLy82QVFSLytnRUUvL29CQlgvNkFRYi8rb0VIZi9xQkIvLzZnUWgvK29FSS8vcUJDWC82Z1FuLytvRUtmL29CQ3YvNkFRdC8rZ0VMLy9xQkRILzZBUkJBQXNFUXdBTEJFVUFDd0FCQVBYLzRnQU5BRnovN1FCZS8rMEE3Zi90QVBYL3dBTHkvKzBDOVAvdEF2Yi83UU9XLyswRHd2L3RBOUQvN1FQcS8rMEVULy90QkZmLzdRQU1BRnovOGdCZS8vSUE3Zi95QXZMLzhnTDAvL0lDOXYveUE1Yi84Z1BDLy9JRDBQL3lBK3IvOGdSUC8vSUVWLy95QUI4QVd2LzBBRnovOGdCZC8vUUFYdi96QUx6LzlBRHQvL0lCR2YvMEFvRC85QUtCLy9RQzcvLzBBdkwvOHdMMC8vTUM5di96QTNMLzlBT1YvL1FEbHYveUE1Ny85QU9tLy9RRHQvLzBBNy8vOUFQQy8vSUQwUC95QStELzlBUGkvL1FENVAvMEErci84Z1JCLy9RRVEvLzBCRVgvOUFSUC8vSUVWLy95QUYwQUJ2L0tBQXYveWdBNC85SUFPdi9VQUR6LzlBQTkvOU1BV3YvbUFGei83d0JkLytZQXZQL21BTkgvMGdEVi85SUEyZi8wQU4zLzdRRGcvK0VBNWYvVUFPMy83d0QxLzhrQS9mL1JBUWovNVFFWS85UUJHZi9tQVIvLzR3RXkvOUlCTS8vRUFUci8wZ0U4LytFQlRmL1VBVTcvOVFGUC8rY0JWLzlrQVZqL3lRRnMvOG9CYmYvS0FXLy95Z0Z3LzhvQmNmL0tBbVgvMHdLQS8rWUNnZi9tQXRyLzBnTGMvOUlDM3YvU0F1Ny8wd0x2LytZQzhQL1RBMWYvMHdObS85TURaLy8wQTJuLzB3TnkvK1lEZ2YvdEE0My8wZ09PLy9RRGxmL21BNWIvN3dPZS8rWURwZi9UQTZiLzVnT24vOG9EcVAvS0E2di95Z08yLzlRRHQvL21BNzcvMHdPLy8rWUR3Zi8wQThMLzd3UFAvL1FEMFAvdkE5Ly83UVBnLytZRDRmL3RBK0wvNWdQai8rMEQ1UC9tQStYLzRRUHAvL1FENnYvdkJFRC8wd1JCLytZRVF2L1RCRVAvNWdSRS85TUVSZi9tQkV6LzBnUk8vL1FFVC8vdkJGRC80UVJTLytFRVZ2LzBCRmYvN3dScC85TUFiQUFHLzhBQUMvL0FBRGovblFBNi84Y0FQUC93QUQzL3F3QlIvOUlBVXYvU0FGVC8wZ0RBLzlJQTBmK2RBTlAvOVFEVi81MEEyZi93QU56LzlRRGQvK29BNFAvbEFPWC93UURyLzlJQTcvL1NBUEQvMGdEeS85SUE4Ly9TQVBULzBnRDEvODBBOS8vU0FQbi8wZ0Q2LzlJQS9mL1NBUC8vMGdFRS85SUJHUC9IQVRML25RRXovOHdCTmYvU0FUci9uUUU4LytVQlAvL2ZBVVQvMGdGSi85SUJUZi9PQVUvLzZnRlIvL1VCVi8rZUFWai96Z0ZzLzhBQmJmL0FBVy8vd0FGdy84QUJjZi9BQW1YL3F3SjIvOUlDdnYvU0FzRC8wZ0xDLzlJQ3cvL1NBdHIvblFMYy81MEMzditkQXU3L3F3THcvNnNEVi8rckEyYi9xd05uLy9BRGFmK3JBMnovMGdPQi8rb0RqZitkQTQ3LzhBT1IvOUlEay8vU0E1ai8wZ09kLzlJRHBmK3JBNmYvd0FPby84QURxLy9BQTYzLzBnT3ovOUlEdHYvSEE3Ny9xd1BCLy9BRHovL3dBOVQvMGdQVy85SUQzLy9xQStILzZnUGovK29ENWYvbEErai8wZ1BwLy9BRDdQLzFCRUQvcXdSQy82c0VSUCtyQkVuLzBnUkwvOUlFVFArZEJFNy84QVJRLytVRVV2L2xCRlgvMGdSVy8vQUVZdi9TQkdULzBnUm0vOUlFWi8vMUJHbi9xd0J2QUFiL3NRQUwvN0VBT1ArZUFEci94UUE4Ly9JQVBmK29BRkgvendCUy84OEFWUC9QQUZ6Lzd3REEvODhBMGYrZUFOWC9uZ0RaLy9JQTNmL3NBT0QvNFFEbC84SUE2Ly9QQU8zLzd3RHYvODhBOFAvUEFQTC96d0R6Lzg4QTlQL1BBUFgveGdEMy84OEErZi9QQVByL3p3RDkvODhBLy8vUEFRVC96d0VZLzhVQk12K2VBVFAvd0FFMS84OEJPditlQVR6LzRRRS8vOThCUlAvUEFVbi96d0ZOLzgwQlQvL29BVmYvbndGWS84WUJiUCt4QVczL3NRRnYvN0VCY1AreEFYSC9zUUpsLzZnQ2R2L1BBcjcvendMQS84OEN3di9QQXNQL3p3TGEvNTRDM1ArZUF0Ny9uZ0x1LzZnQzhQK29BMWYvcUFObS82Z0RaLy95QTJuL3FBTnMvODhEZ2Yvc0E0My9uZ09PLy9JRGtmL1BBNVAvendPVy8rOERtUC9QQTUzL3p3T2wvNmdEcC8reEE2ai9zUU9yLzdFRHJmL1BBN1AvendPMi84VUR2ditvQThILzhnUEMvKzhEei8veUE5RC83d1BVLzg4RDF2L1BBOS8vN0FQaC8rd0Q0Ly9zQStYLzRRUG8vODhENmYveUErci83d1JBLzZnRVF2K29CRVQvcUFSSi84OEVTLy9QQkV6L25nUk8vL0lFVC8vdkJGRC80UVJTLytFRVZmL1BCRmIvOGdSWC8rOEVZdi9QQkdUL3p3Um0vODhFYWYrb0FFMEFPUCsrQUZILzRRQlMvK0VBVlAvaEFGci83d0JkLys4QXZQL3ZBTUQvNFFEUi83NEExZisrQU9YL3lRRHIvK0VBNy8vaEFQRC80UUR5LytFQTgvL2hBUFQvNFFEMS85OEE5Ly9oQVBuLzRRRDYvK0VBL2YvaEFQLy80UUVFLytFQkNQL3RBUm4vN3dFZi8rc0JNdisrQVRQLzN3RTEvK0VCT3YrK0FULy82UUZFLytFQlNmL2hBVTcvOVFGWS8rQUNkdi9oQW9ELzd3S0IvKzhDdnYvaEFzRC80UUxDLytFQ3cvL2hBdHIvdmdMYy83NEMzdisrQXUvLzd3TnMvK0VEY3YvdkE0My92Z09SLytFRGsvL2hBNVgvN3dPWS8rRURuZi9oQTU3Lzd3T20vKzhEcmYvaEE3UC80UU8zLys4RHYvL3ZBOVQvNFFQVy8rRUQ0UC92QStMLzd3UGsvKzhENlAvaEJFSC83d1JELys4RVJmL3ZCRW4vNFFSTC8rRUVUUCsrQkZYLzRRUmkvK0VFWlAvaEJHYi80UUJrQURqLzVnQTYvK2NBUFAveUFEMy81d0JSLzlZQVV2L1dBRlQvMWdCYy8vRUF3UC9XQU5ILzVnRFYvK1lBMmYveUFOMy83Z0RnLytnQTVmL21BT3YvMWdEdC8vRUE3Ly9XQVBELzFnRHkvOVlBOC8vV0FQVC8xZ0QxLzlBQTkvL1dBUG4vMWdENi85WUEvZi9XQVAvLzFnRUUvOVlCR1AvbkFUTC81Z0V6Lzg0Qk5mL1dBVHIvNWdFOC8rZ0JSUC9XQVVuLzFnRk4vK2NCVC8vdEFWZi81Z0ZZLzlBQ1pmL25BbmIvMWdLKy85WUN3UC9XQXNMLzFnTEQvOVlDMnYvbUF0ei81Z0xlLytZQzd2L25BdkQvNXdOWC8rY0Radi9uQTJmLzhnTnAvK2NEYlAvV0E0SC83Z09OLytZRGp2L3lBNUgvMWdPVC85WURsdi94QTVqLzFnT2QvOVlEcGYvbkE2My8xZ096LzlZRHR2L25BNzcvNXdQQi8vSUR3di94QTgvLzhnUFEvL0VEMVAvV0E5Yi8xZ1BmLys0RDRmL3VBK1AvN2dQbC8rZ0Q2UC9XQStuLzhnUHEvL0VFUVAvbkJFTC81d1JFLytjRVNmL1dCRXYvMWdSTS8rWUVUdi95QkUvLzhRUlEvK2dFVXYvb0JGWC8xZ1JXLy9JRVYvL3hCR0wvMWdSay85WUVadi9XQkduLzV3Q1RBQ1VBRUFBbi8rZ0FLLy9vQURQLzZBQTEvK2dBT1AvZ0FEci80QUE5Lzk4QWcvL29BSkwvNkFDWC8rZ0FzUUFRQUxMLzZBQ3pBQkFBMGYvZ0FOTC82QURUQUJBQTFmL2dBTmdBRkFEY0FCQUE0UC9oQU9YLzRBRHNBQk1BOFFBUUFQai80QUVEQUJBQkIvL29BUXdBRUFFVy8rZ0JHUC9nQVJyLzZBRWMvK2dCSHYvb0FTRC82QUV5LytBQk9QL29BVHIvNEFFOC8rRUJQZi9nQVVELzRRRkYvK2tCVGYvZkFVLy8zZ0ZSQUJBQlZmL29BVmYvM3dGWi8vSUNLUC9vQWluLzZBSXIvK2dDTFAvb0Frc0FFQUpNQUJBQ1RRQVFBazRBRUFKUEFCQUNVQUFRQWxFQUVBSlMvK2dDWFAvb0FsMy82QUplLytnQ1gvL29BbUQvNkFKbC85OENnZ0FRQW9RQUVBS0dBQkFDaVAvb0Fvci82QUtNLytnQ2p2L29BcHovNkFLZS8rZ0NvUC9vQXFMLzZBTEUvK2dDeHYvb0Fzai82QUxhLytBQzNQL2dBdDcvNEFMdS85OEM4UC9mQXZuLzZBTlNBQkFEVnYvb0ExZi8zd05hQUJBRFkvL29BMmIvM3dOcC85OERnZ0FRQTRuLzZBT00vK2dEamYvZ0E2WC8zd091QUJBRHR2L2dBN24vNkFPOC8rZ0R2di9mQThRQUVBUEdBQkFEMS8vb0E5bi82QVBiLytnRDVmL2hBK2IvNEFQc0FCQUQ3UUFRQSs0QUVBUHdBQkFEOGdBUUEvUUFFQVAyQUJBRCtBQVFBL29BRUFQOEFCQUQvZ0FRQkFBQUVBUUNBQkFFQkFBUUJCci82QVFjLytnRUh2L29CQ0QvNkFRaS8rZ0VKUC9vQkNiLzZBUW8vK2dFS3Yvb0JDei82QVF1LytnRU1QL29CRUQvM3dSQy85OEVSUC9mQkV6LzRBUlEvK0VFVWYvZ0JGTC80UVJULytBRVp3QVFCR2dBRUFScC85OEVxZi9vQURJQUcvL3lBRGovOFFBNi8vUUFQUC8wQUQzLzhBRFIvL0VBMC8vMUFOWC84UURaLy9RQTNQLzFBTjMvOHdEbC8vRUJHUC8wQVRMLzhRRTYvL0VCVGYveUFVLy84Z0ZSLy9VQlYvL3lBbVgvOEFMYS8vRUMzUC94QXQ3LzhRTHUvL0FDOFAvd0ExZi84QU5tLy9BRFovLzBBMm4vOEFPQi8vTURqZi94QTQ3LzlBT2wvL0FEdHYvMEE3Ny84QVBCLy9RRHovLzBBOS8vOHdQaC8vTUQ0Ly96QStuLzlBUHMvL1VFUVAvd0JFTC84QVJFLy9BRVRQL3hCRTcvOUFSVy8vUUVaLy8xQkduLzhBQm1BQ1VBRHdBNC8rWUFPdi9tQUR3QURnQTkvK1lBc1FBUEFMTUFEd0RSLytZQTB3QU9BTlgvNWdEWUFCTUEyUUFPQU53QURnRGRBQXNBNFAvbEFPWC81Z0RtLy9RQTdBQVNBUEVBRHdEMS8rY0ErUC9vQVAzLzV3RURBQThCREFBUEFSai81Z0V5LytZQk0vL25BVHIvNWdFOC8rVUJQZi9vQVUzLzVnRlAvK1lCVVFBT0FWZi81Z0ZZLytjQ1N3QVBBa3dBRHdKTkFBOENUZ0FQQWs4QUR3SlFBQThDVVFBUEFtWC81Z0tDQUE4Q2hBQVBBb1lBRHdMYS8rWUMzUC9tQXQ3LzVnTHUvK1lDOFAvbUExSUFEd05YLytZRFdnQVBBMmIvNWdObkFBNERhZi9tQTRFQUN3T0NBQThEamYvbUE0NEFEZ09sLytZRHJnQVBBN2IvNWdPKy8rWUR3UUFPQThRQUR3UEdBQThEendBT0E5OEFDd1BoQUFzRDR3QUxBK1gvNVFQbS8rZ0Q2UUFPQSt3QURnUHRBQThEN2dBUEEvQUFEd1B5QUE4RDlBQVBBL1lBRHdQNEFBOEQrZ0FQQS93QUR3UCtBQThFQUFBUEJBSUFEd1FFQUE4RVFQL21CRUwvNWdSRS8rWUVUUC9tQkU0QURnUlEvK1VFVWYvb0JGTC81UVJULytnRVZnQU9CR2NBRGdSb0FBOEVhZi9tQURjQUJ2Ky9BQXYvdndBNC81OEFPdi9KQUQzL3JRRFIvNThBMWYrZkFOMy83QURnLytZQTVmL0VBUFgvelFEOS85VUJHUC9KQVRML253RXovOHdCT3YrZkFUei81Z0UvLzk4QlRmL1JBVS8vN0FGWC82RUJXUC9QQVd6L3Z3RnQvNzhCYi8rL0FYRC92d0Z4Lzc4Q1pmK3RBdHIvbndMYy81OEMzditmQXU3L3JRTHcvNjBEVi8rdEEyYi9yUU5wLzYwRGdmL3NBNDMvbndPbC82MERwLysvQTZqL3Z3T3IvNzhEdHYvSkE3Ny9yUVBmLyt3RDRmL3NBK1AvN0FQbC8rWUVRUCt0QkVML3JRUkUvNjBFVFArZkJGRC81Z1JTLytZRWFmK3RBREFBT1AvakFEei81UUE5LytRQTBmL2pBTlAvNVFEVi8rTUEyUC9pQU5uLzVRRGMvK1VBM2YvcEFQSC82Z0VELytvQk12L2pBVHIvNHdGUi8rVUJWLy9rQW1YLzVBTGEvK01DM1AvakF0Ny80d0x1LytRQzhQL2tBMWYvNUFObS8rUURaLy9sQTJuLzVBT0IvK2tEamYvakE0Ny81UU9sLytRRHZ2L2tBOEgvNVFQUC8rVUQzLy9wQStILzZRUGovK2tENmYvbEErei81UVB0LytvRVFQL2tCRUwvNUFSRS8rUUVUUC9qQkU3LzVRUlcvK1VFWi8vbEJHai82Z1JwLytRQUl3QTQvK0lBUFAva0FOSC80Z0RULytRQTFmL2lBTmovNFFEWi8rUUEzUC9rQU4zLzZRRHMvK1FBOGYvckFRUC82d0V5LytJQk92L2lBVkgvNUFMYS8rSUMzUC9pQXQ3LzRnTm4vK1FEZ2YvcEE0My80Z09PLytRRHdmL2tBOC8vNUFQZi8ra0Q0Zi9wQStQLzZRUHAvK1FEN1Ava0ErMy82d1JNLytJRVR2L2tCRmIvNUFSbi8rUUVhUC9yQUJjQU9QL3JBRDMvOHdEUi8rc0ExZi9yQVRMLzZ3RTYvK3NDWmYvekF0ci82d0xjLytzQzN2L3JBdTcvOHdMdy8vTURWLy96QTJiLzh3TnAvL01EamYvckE2WC84d08rLy9NRVFQL3pCRUwvOHdSRS8vTUVUUC9yQkduLzh3QTJBRkgvN3dCUy8rOEFWUC92QUZ6LzhBREEvKzhBNi8vdkFPei83Z0R0Ly9BQTcvL3ZBUEQvN3dEeS8rOEE4Ly92QVBULzd3RDEvKzRBOS8vdkFQbi83d0Q2Lys4QS9mL3ZBUC8vN3dFRS8rOEJDUC8wQVIvLzhRRXovKzhCTmYvdkFVVC83d0ZKLys4QldQL3ZBbmIvN3dLKy8rOEN3UC92QXNMLzd3TEQvKzhEYlAvdkE1SC83d09ULys4RGx2L3dBNWovN3dPZC8rOERyZi92QTdQLzd3UEMvL0FEMFAvd0E5VC83d1BXLys4RDZQL3ZBK3IvOEFSSi8rOEVTLy92QkUvLzhBUlYvKzhFVi8vd0JHTC83d1JrLys4RVp2L3ZBQ0lBQnYveUFBdi84Z0JhLy9VQVhmLzFBTHovOVFEMS8vUUEvZi8wQVFqLzlRRVovL1VCTS8vMUFWai85UUZzLy9JQmJmL3lBVy8vOGdGdy8vSUJjZi95QW9ELzlRS0IvL1VDNy8vMUEzTC85UU9WLy9VRG52LzFBNmIvOVFPbi8vSURxUC95QTZ2LzhnTzMvL1VEdi8vMUErRC85UVBpLy9VRDVQLzFCRUgvOVFSRC8vVUVSZi8xQURJQVVmL3VBRkwvN2dCVS8rNEF3UC91QU92LzdnRHNBQlFBNy8vdUFQRC83Z0R5Lys0QTgvL3VBUFQvN2dEMS8rMEE5Ly91QVBqLzdRRDUvKzRBK3YvdUFQdi8wQUQ5Lys0QS8vL3VBUVQvN2dFei8rMEJOZi91QVQzLzdRRkUvKzRCU2YvdUFWai83UUoyLys0Q3Z2L3VBc0QvN2dMQy8rNEN3Ly91QTJ6LzdnT1IvKzREay8vdUE1ai83Z09kLys0RHJmL3VBN1AvN2dQVS8rNEQxdi91QStiLzdRUG8vKzRFU2YvdUJFdi83Z1JSLyswRVUvL3RCRlgvN2dSaS8rNEVaUC91QkdiLzdnQUtBQWIvOVFBTC8vVUJiUC8xQVczLzlRRnYvL1VCY1AvMUFYSC85UU9uLy9VRHFQLzFBNnYvOVFCWkFFZi84QUJJLy9BQVNmL3dBRXYvOEFCVC84Y0FWZi93QUpQLzhBQ1kvL0FBdXYvd0FNZi84QURJLy9BQTl2L3dBUUwvOEFFWC84Y0JHLy9yQVIzLzhBRWgvL0FCT2Yvd0FVdi84QUZNLy9BQlZ2L3dBYnovNndIQS8ra0J5UC9yQWNyLzZ3SnQvL0FDYnYvd0FtLy84QUp3Ly9BQ2NmL3dBbmYveHdKNC84Y0NlZi9IQW5yL3h3SjcvOGNDaWYvd0Fvdi84QUtOLy9BQ2ovL3dBcEgvOEFLVC8vQUNsZi93QXBmLzhBS1ovL0FDbS8vd0FwMy84QUtmLy9BQ29mL3dBcVAvOEFMRi84Y0N4Ly9IQXNuL3h3TnEvL0FEY1AvSEEzYi94d09RLy9BRGt2L0hBNVQvOEFPWC8vQURzdi93QTdqLzhBTzkvL0FEeS8vd0E4My84QVBPLy9BRDJQL0hBOXIvOEFQYy84Y0Q2Ly93QkFmLzhBUUovL0FFQy8vd0JBMy84QVFQLy9BRUVmL3dCQlAvOEFRVi8vQUVHLy9IQkIzL3h3UWYvOGNFSWYvSEJDUC94d1FsLzhjRUovL0hCQ24vOEFRci8vQUVMZi93QkMvL3h3UXgvL0FBb1FBR0FBMEFDd0FOQUVYLzhBQkgvOEFBU1AvQUFFbi93QUJLQUEwQVMvL0FBRlAvNGdCVi84QUFXZ0FMQUYwQUN3Q1QvOEFBbVAvQUFMci93QUM4QUFzQXh2L1dBTWYvd0FESS84QUF5Ly9WQU96L3lBRHgvOWNBOXYvQUFRTC93QUVELzljQkYvL2lBUmtBQ3dFYi8rd0JIZi9BQVI4QURBRWgvOEFCT2YvQUFVdi93QUZNLzhBQlRnQUxBVkFBQ3dGVy84QUJiQUFOQVcwQURRRnZBQTBCY0FBTkFYRUFEUUc2Lzc4QnZQL3VBY0QvN0FISS8rMEJ5di9zQWN6LzlRSE5BQTRCendBTkFkSUFEUUptLy9BQ1ovL3dBbWovOEFKcC8vQUNhdi93QW12LzhBSnMvL0FDYmYvQUFtNy93QUp2LzhBQ2NQL0FBbkgvd0FKMy8rSUNlUC9pQW5uLzRnSjYvK0lDZS8vaUFvQUFDd0tCQUFzQ2cvL3dBb1gvOEFLSC8vQUNpZi9BQW92L3dBS04vOEFDai8vQUFwSC93QUtULzhBQ2xmL0FBcGYvd0FLWi84QUNtLy9BQXAzL3dBS2YvOEFDb2YvQUFxUC93QUxGLytJQ3gvL2lBc24vNGdMdkFBc0Rhdi9BQTNELzRnTnlBQXNEZHYvaUE0Ly84QU9RLzhBRGt2L2lBNVQvd0FPVkFBc0RsLy9BQTU0QUN3T21BQXNEcHdBTkE2Z0FEUU9yQUEwRHIvL3dBN0wvd0FPM0FBc0R1UC9BQTczL3dBTy9BQXNEeGYvd0E4Zi84QVBMLzhBRHpmL0FBODcvd0FQWS8rSUQydi9BQTl6LzRnUGdBQXNENGdBTEErUUFDd1ByLzhBRDdmL1hBKy8vOEFQeC8vQUQ4Ly93QS9YLzhBUDMvL0FEK2Yvd0Evdi84QVA5Ly9BRC8vL3dCQUgvOEFRRC8vQUVCZi93QkFmL3dBUUovOEFFQy8vQUJBMy93QVFQLzhBRUVmL0FCQlAvd0FRVi84QUVHLy9pQkIzLzRnUWYvK0lFSWYvaUJDUC80Z1FsLytJRUovL2lCQ24vd0FRci84QUVMZi9BQkMvLzRnUXgvOEFFUVFBTEJFTUFDd1JGQUFzRWFQL1hBQThBN0FBVUFQRUFFQUQxLy9BQStQL3dBUDMvOEFFQUFCWUJBd0FRQVRQLzVnRTkvOXdCV1Avd0ErYi84QVB0QUJBRVVmL3dCRlAvOEFSb0FCQUFUQUJILys0QVNQL3VBRW4vN2dCTC8rNEFWZi91QUpQLzdnQ1kvKzRBdXYvdUFNZi83Z0RJLys0QTdBQVNBUEVBRGdEMS8rTUE5di91QVBqLzR3RDcvN2dBL2YvakFRTC83Z0VEQUE0QkhmL3VBU0gvN2dFei83b0JPZi91QVQzLzJRRkwvKzRCVFAvdUFWYi83Z0ZZLytNQ2JmL3VBbTcvN2dKdi8rNENjUC91QW5ILzdnS0ovKzRDaS8vdUFvMy83Z0tQLys0Q2tmL3VBcFAvN2dLVi8rNENsLy91QXBuLzdnS2IvKzRDbmYvdUFwLy83Z0toLys0Q28vL3VBMnIvN2dPUS8rNERsUC91QTVmLzdnT3kvKzREdVAvdUE3My83Z1BMLys0RHpmL3VBODcvN2dQYS8rNEQ1di9qQSt2LzdnUHRBQTRFQi8vdUJBbi83Z1FMLys0RURmL3VCQS8vN2dRUi8rNEVFLy91QkJYLzdnUXAvKzRFSy8vdUJDMy83Z1F4Lys0RVVmL2pCRlAvNHdSb0FBNEFJQUJhLzhBQVhmL0FBTHovd0FEMS80QUErUC91QVAzLzhBRUkvOXNCR2YvQUFSLy8zQUV6LzBjQlBmL3VBVTRBQndGUS8vUUJXUDkvQW9EL3dBS0IvOEFDNy8vQUEzTC93QU9WLzhBRG52L0FBNmIvd0FPMy84QUR2Ly9BQStEL3dBUGkvOEFENVAvQUErYi83Z1JCLzhBRVEvL0FCRVgvd0FSUi8rNEVVLy91QUNFQVd2LzBBRnovOEFCZC8vUUF2UC8wQU96Lzd3RHQvL0FBOGYvekFQMy83Z0VELy9NQkdmLzBBb0QvOUFLQi8vUUM3Ly8wQTNMLzlBT1YvL1FEbHYvd0E1Ny85QU9tLy9RRHQvLzBBNy8vOUFQQy8vQUQwUC93QStELzlBUGkvL1FENVAvMEErci84QVB0Ly9NRVFmLzBCRVAvOUFSRi8vUUVULy93QkZmLzhBUm8vL01BQ2dBRy85WUFDLy9XQVd6LzFnRnQvOVlCYi8vV0FYRC8xZ0Z4LzlZRHAvL1dBNmovMWdPci85WUFGUUJjLytBQTdmL2dBUFgvZGdENC84SUEvZi9UQVFqLzJRRWYvOXNCTS84ZUFUMy83UUZPLy9BQlVQL3lBVmovVmdPVy8rQUR3di9nQTlELzRBUG0vOElENnYvZ0JFLy80QVJSLzhJRVUvL0NCRmYvNEFBTkFQWC9aQUQ0LzlJQS9mL1pBUWovMlFFZi85c0JNLzhlQVQzLzdRRk8vL0FCVVAveUFWai9WZ1BtLzlJRVVmL1NCRlAvMGdBSkFQWC9hZ0Q5LzhZQkNQL1pBUi8vMndFei94NEJQZi90QVU3LzhBRlEvL0lCV1A5V0FBb0FCdi9YQUF2LzF3RnMvOWNCYmYvWEFXLy8xd0Z3LzljQmNmL1hBNmYvMXdPby85Y0RxLy9YQUZ3QVIvK1lBRWovbUFCSi81Z0FTLytZQUZQL2NBQlYvNWdBVi84WUFGc0FDd0NULzVnQW1QK1lBTHIvbUFESC81Z0F5UCtZQVBiL21BRUMvNWdCRi85d0FSMy9tQUVoLzVnQk9mK1lBVXYvbUFGTS81Z0JWditZQW0zL21BSnUvNWdDYi8rWUFuRC9tQUp4LzVnQ2QvOXdBbmovY0FKNS8zQUNldjl3QW52L2NBS0ovNWdDaS8rWUFvMy9tQUtQLzVnQ2tmK1lBcFAvbUFLVi81Z0NsLytZQXBuL21BS2IvNWdDbmYrWUFwLy9tQUtoLzVnQ28vK1lBc1gvY0FMSC8zQUN5Zjl3QXRIL0dBTFQveGdDMWY4WUF0Zi9HQUxaL3hnRGF2K1lBM0QvY0FOMi8zQURrUCtZQTVML2NBT1UvNWdEbC8rWUE1bi9HQU95LzVnRHVQK1lBNzMvbUFQTC81Z0R6ZitZQTg3L21BUFkvM0FEMnYrWUE5ei9jQVByLzVnRUIvK1lCQW4vbUFRTC81Z0VEZitZQkEvL21BUVIvNWdFRS8rWUJCWC9tQVFiLzNBRUhmOXdCQi8vY0FRaC8zQUVJLzl3QkNYL2NBUW4vM0FFS2YrWUJDdi9tQVF0LzVnRUwvOXdCREgvbUFBSkFiei84Z0hBLy9JQnlQL3lBY3IvOGdITi84QUJ6di9zQWMvL3h3SFEvOWdCMHYrL0FBSUJ6Ly91QWRELzlRQUNBY2ovNndISy8rc0FCd0hJLys4Qnl2L3dBYzMvdXdITy8rd0J6LyszQWRELzFRSFMvN1FBQkFITi8rNEJ6Ly94QWRILzdBSFMvK29BQkFITi8ra0J6Ly9yQWRELzhRSFMvK1VBQkFITi8vSUJ6Ly94QWRELzlRSFMvKzRBQWdIUEFBMEIwZ0FOQUFzQVcvL01BYm9BRXdHOC8vTUJ3UC94QWNqLzhnSEsvL0lCemYrOUFjNy83Z0hQLzdnQjBQL1hBZEwvdHdBRUFFb0FGQUJZQURJQVd3QVJBVzBBRUFBSUFGdi81UUMzLzhzQXpQL2tBYm9BRFFHOC8rMEJ3UC9yQWNqLzdBSEsvK3dBQWdFUUFBc0JWLy9tQUFnQVdBQU9BSUgrMXdERC81Z0F4di9IQU5qL0VnRHMvMUlCU3YvUEFici9nQUFKQUEwQUR3QkJBQXdBVnYvckFHRUFEZ0c2LzhzQnZQL3BBY0QvNXdISS8rY0J5di9uQUFFQVd3QUxBQWtBRFFBVUFFRUFFUUJXLytJQVlRQVRBYnIvdEFHOC85a0J3UC9aQWNqLzJRSEsvOWtBQkFBTi8rWUFRZi8wQUdILzd3RkEvKzBBQmdESi8rb0E3UC91QVBYLzFnRDkvKzBCTS8vc0FWai83QUFTQU5qL3JnRGxBQklBNnYvZ0FPei9yUUR1LzlZQS9QL2ZBUUQvMGdFRy8rQUJHLy9PQVN2LzNRRXQvK0lCTWYvZ0FUZi80QUU5LytrQlFQL2FBVXIvdlFGVS85OEJWd0FSQUIwQUkvK3ZBRmovN3dCYi85OEFtZi91QUxmLzVRQzQvOUVBd3dBUkFNbi95QURZQUJNQTVmL0ZBUFgveWdEOS85QUJNLytCQVR6L1pRRTkvNFVCUC85bUFVRC8zUUZGLy9JQlRmK3hBVS8veWdGWC82a0JXUC9JQWNELzlRSEkvL1VCemYvSEFjNy84UUhQLzgwQjBQL2RBZEwveEFBSUFQWC84QUQ5Ly9BQkNQL3hBUi8vOHdFei8vRUJUdi96QVZELzh3RlkvL0VBQlFCSy8rNEFXLy9xQWMvLzhBSFEvKzBCMHYvd0FBSUE5Zi8xQVczL3dBQUpBTW4vNmdEcy83Z0E5Zi9pQVFqLzhBRWYvL0VCTS8vckFVNy85UUZZLyt3QmJmK1FBQUVCdXYvckFBWUFTZ0FOQU1VQUN3REcvK29BeVFBTUFPei95QUViLy9FQU9nQUUvOFFBVnYrL0FGdi8wUUJ0LzJ3QWZQOXVBSUgvUXdDRy82d0FpZitoQUxmL3VBQysvMzRBd3Y5N0FNWC9td0RHLzNrQXlmK3lBTXYvZmdETS8zMEF6Zjk4QU5qL3J3RGxBQThBNmYva0FPci9vQURzLzNRQTd2K0FBUFgvc2dEOC8zMEEvZit5QVA3L2dBRUEvM2tCQVFBb0FRYi9mUUVJLzM4QkcvOW1BUi8vMmdFci80RUJMZitZQVRIL2ZRRXovN01CTi8rZ0FUMy9mQUUvLzVvQlFQOXNBVVgvNWdGSy8yc0JUditTQVZEL3JRRlUvM3NCVndBUEFWai9rUUZaLy9JQnV2K3ZBYnovdVFIQS83a0J5UCs1QWNyL3VRSE0vN3dCemYveEFkRC84UUhSLyswQUFnRHMvMmdCRy8vdUFCY0F0Ly9VQU1ILzdRRERBQkVBeWYvZ0FNdi81d0RNLytVQXpmL3VBTmdBRWdEcC8ra0E5Zi9YQVRQLzF3RTkvOU1CUC8vV0FVRC94UUZGLytjQlRRQU5BVThBREFGWS85WUJXZi95QWJ6LzZRSEEvK2NCeVAvbkFjci82UUFCQVJ2LzhRQUNBUFgvMWdGdC80Z0FDZ0RsLzhNQTlmL1BBUDMvMUFFei84NEJQUC9uQVQvLzN3Rk4vOUVCVC8vc0FWZi9vQUZZLzlFQU1BQlcvMzRBVy8rZEFHMys4UUI4L3ZRQWdmNnJBSWIvWGdDSi8wc0F0Lzl5QUw3L0R3REMvd29BeGY5QkFNYi9Cd0RKLzJnQXkvOFBBTXovRGdETi93d0EyUDlqQU9VQUJRRHAvNzBBNnY5SkFPeisvZ0R1L3hNQTlmOW9BUHovRGdEOS8yZ0EvdjhUQVFEL0J3RUJBREFCQnY4T0FRai9FUUViL3VjQkgvK3NBU3YvRlFFdC96d0JNZjhPQVRQL2FnRTMvMGtCUGY4TUFULy9Qd0ZBL3ZFQlJmL0FBVXIrN3dGTy96RUJVUDlmQVZUL0NnRlhBQVVCV1A4d0FWbi8xUUFVQUZ2L3dRQzMvOFVBeWYrMEFPbi8xd0QxLzdrQS9mL3BBUWovc2dFYi85SUJILy9JQVRQL29BRTkvOFVCUmYva0FVNy96QUZRLzh3QldQL0xBVm4vN3dHOC8rZ0J3UC9tQWNqLzV3SEsvK2NBQ0FEWUFCVUE3QUFWQVR6LzVBRTkvK1VCUC8va0FVMy80d0ZQLytJQlYvL2tBQ0lBQ3YvaUFBMEFGQUFPLzg4QVFRQVNBRXIvNmdCVy85Z0FXUC9xQUdFQUV3QnQvNjRBZlAvTkFJSC9vQUNHLzhFQWlmL0FBTGYvMEFDNy8rb0F2di9HQUw4QURRREIvK2tBd3YvV0FNWC82QURHLzdvQXlmL3BBTXYveXdETS85b0F6Zi9IQVhYLzB3RzYvNnNCdlAvTkFjRC95d0hJLzhzQnl2L0xBYzMvOHdIUS8vTUIwZi92QUFrQWdmL2ZBTFQvOHdDMi8vQUF3Ly9xQU5qLzN3RGwvK0FCVi8vZ0Fici83UUhSLy9VQUFnZUtBQVFBQUFwZUVqWUFJUUFkQUFELzIvK0kvODcveGYvcy82WC9wQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvdU1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVArSUFBQUFBQUFBLzlELzlBQUEvK3YvaVAvdi83UC8yZjlxLy9YL3pnQU1BQkgveVFBUy85OEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rVUFBUC9vQUFEL3lRQUFBQUFBQUFBQUFBQUFBQUFBLy9NQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC9qQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvK3NBQUFBQUFBQUFBQUFBQUFEL3F3QUEvK29BQVAvVkFBQUFBQUFBLytFQUFBQUFBQUFBQVArRy8rci82UUFBQUFBQUFBQUFBQUFBQUFBQUFBRC83UUFBLyswQUFBQUFBQlFBQUFBQUFBQUFBUC92LytZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ0FBQUFBQUFBQUFBQUFBQVAvakFBQUFBQUFBLytRQUFBQUFBQUFBRWYva0FCSC81UUFBQUFBQUVRQUFBQUFBQUFBQUFBQUFBQUFBLytvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvNWdBQS8rVUFBUC9oQUFBQUFBQUFBQUFBQVAvcC85Z0FBQUFBQUFBQUFQK2pBQUFBQUFBQUFBRC9YQUFBQUFBQUFBQUEvdUFBRXdBQUFBQUFBQUFBQUFEL3dQOHovK2ovTXYrai91bi84ditGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8wNy85Zi96QUFELzh3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUR3QUEvMjhBQVArbkFBQUFBUDVzLzgzLzNBQUEvMGdBQUFBQUFBQUFBUCtJLzFqL3AvK24vekQvdFAva0FCQUFBQUFRQUE4QUVQKy8vNjcveFAvTEFBRC9mdjk4QUFEKy9nQUFBQUQrOFA4by8vRC9zd0FBQUFEL3RmL1MvOVFBQVAvU0FBRC84d0FBQUFBQUFBQUFBQUQvNVAvMUFBQUFBQUFBQUFBQUFBQUEveWtBQUFBQS8yTUFBQUFBQUFBQUFBQUEvOVgvMy8vaEFBRC80UUFBQUFBQURnQUFBQUFBQUFBQS8rMEFBQUFBQUFBQUFBQUFBQUFBQVA5eEFBQUFBUC9FQUFBQUFBQUFBQUFBQUFBQUFBRC81Z0FBLytzQUFQL25BQUFBQUFBT0FBQUFBUC9yLytFQUFBQVJBQUFBRWYvUkFBQUFBQUFBQUFEL1pBQUFBQUFBQUFBQUFBRC9hdi9CLzcvLzJQKy8vOGIvNHdBUi82QUFFZ0FSQUJMLzJmL3MvK0lBQUFBQUFBQUFBQUFBL3hrQURRQUEvMmovb1Avdy8ra0FBQUFBQUEwQUFQL3JBQUQvNndBQS8rWUFBQUFBQUFBQUFBQUEvKzMvNVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELzd3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8vRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvK01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC8xLy9FQUFBQUEvL0lBQUFBQUFBQUFBQUFBQUFBQUFBQUEvL0VBQVAvMUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC84Z0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvL01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLzdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQK29BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC84Zi93QUFBQUFQL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFQL3JBQUFBRUFBQS8rTC83UUFBLzl3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJQUFBQUFBQUFBQUFBQUFBRC9Vd0FBQUFBQUFBQUFBQUFBQUFBQUFBOEFBUC94Ly9NQUFQL3hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS85Y0FBQUFBLzFrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQL3NBQUQvMkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvOEFBQS8vQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvTS85Zi8xWC9WZjltLzJ2L3ZRQUhBQUFBQndBRkFBZi9mdjloLzRiL2tnQUEvdy8vREFBQS9qWUFBQUFBL2g0QUFQL1IvMm9BQVAvQUFBQUFBQUFBQUFBQUFBQUFBQUQvbndBQS84Z0FBUCt0QUFBQUFBQUFBQUQvNXdBQUFBRC82d0FBQUFBQUFBQUFBQUFBQVAvSkFBQUFBUCtsLzYvL3ZmK3UvNzMvMHYvcEFCSUFBQUFBQUFBQUVnQUFBQUFBQVAvS0FBRC91Ly9wQUFEK2R3QUFBQUQvT1FBQUFBQUFBQUFBQUFBQUFBQUEvK3dBQVAvc0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLzlnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQOTVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC90UUFBQUFBQUFBQUEvK01BQUFBQUFBQUFBQUFBQUFBQUFQL3JBQUlBZUFBR0FBWUFBQUFMQUFzQUFRQVFBQkFBQWdBU0FCSUFBd0FsQUNrQUJBQXNBRFFBQ1FBNEFENEFFZ0JGQUVjQUdRQkpBRWtBSEFCTUFFd0FIUUJSQUZRQUhnQldBRllBSWdCYUFGb0FJd0JjQUY0QUpBQ0tBSW9BSndDd0FMTUFLQUM4QUx3QUxBREFBTUFBTFFER0FNWUFMZ0RUQU5RQUx3RFdBTllBTVFEWkFOa0FNZ0RiQU4wQU13RGZBTjhBTmdEaEFPRUFOd0RqQU9NQU9BRGxBT1VBT1FEckFPc0FPZ0R0QU8wQU93RDJBUFlBUEFEN0FQc0FQUUQ5QVA0QVBnRURBUVFBUUFFSkFRa0FRZ0VNQVF3QVF3RVhBUmtBUkFFckFTMEFSd0V3QVRBQVNnRXlBVElBU3dGSkFVa0FUQUZzQVhJQVRRRjJBWGNBVkFJb0FpZ0FWZ0lxQWlzQVZ3SkdBa2NBV1FKSkFra0FXd0pMQW5FQVhBSjJBbnNBZ3dLQUFwQUFpUUtTQXBzQW1nS2tBcVlBcEFLb0FxZ0Fwd0txQXFvQXFBS3NBcXdBcVFLdUFxNEFxZ0t4QXJFQXF3S3pBck1BckFLMUFyVUFyUUszQXJjQXJnSzVBcmtBcndLN0Fyc0FzQUs5QXNrQXNRTExBc3NBdmdMTkFzMEF2d0xQQXM4QXdBTGFBdG9Bd1FMY0F0d0F3Z0xlQXQ0QXd3TGdBdUFBeEFMaUF1SUF4UUxrQXVRQXhnTG1BdVlBeHdMb0F1Z0F5QUxxQXVvQXlRTHNBdXdBeWdMdUF2WUF5d05TQTFjQTFBTmFBMmtBMmdOc0Eyd0E2Z053QTNBQTZ3TnlBM0lBN0FOMkEzWUE3UU41QTNvQTdnTjhBNFVBOEFPSEE0a0ErZ09MQTVBQS9RT1NBNWdCQXdPZUE1OEJDZ09oQTZFQkRBT2pBNk1CRFFPbEE2Z0JEZ09yQTdBQkVnT3lBN0lCR0FPMkE3Y0JHUU84QThjQkd3UEtBOHNCSndQTkE5QUJLUVBYQTlnQkxRUGNBOXdCTHdQZUErUUJNQVBwQStvQk53UHVCQllCT1FRWUJCZ0JZZ1FhQkNjQll3UXZCQzhCY1FReUJESUJjZ1EwQkRRQmN3UkFCRVVCZEFSSUJFZ0JlZ1JLQkVvQmV3Uk1CRXdCZkFST0JFOEJmUVJVQkZjQmZ3UmFCRm9CZ3dSY0JGMEJoQVJmQkY4QmhnUmpCR01CaHdSbEJHVUJpQVJwQkdrQmlRU3BCS2tCaWdBQ0FVNEFFQUFRQUFFQUVnQVNBQUVBSlFBbEFBSUFKZ0FtQUFNQUp3QW5BQVFBS0FBb0FBVUFLUUFwQUFZQUxBQXRBQWNBTGdBdUFBZ0FMd0F2QUFrQU1BQXdBQW9BTVFBeUFBY0FNd0F6QUFVQU5BQTBBQXNBT0FBNEFBd0FPUUE1QUFnQU9nQTZBQTBBT3dBN0FBNEFQQUE4QUE4QVBRQTlBQkFBUGdBK0FCRUFSUUJGQUJJQVJnQkdBQk1BUndCSEFCUUFTUUJKQUJVQVRBQk1BQllBVVFCU0FCWUFVd0JUQUJjQVZBQlVBQk1BVmdCV0FCZ0FXZ0JhQUJrQVhBQmNBQm9BWFFCZEFCa0FYZ0JlQUJzQWlnQ0tBQk1Bc0FDd0FCd0FzUUN4QUFJQXNnQ3lBQVVBc3dDekFBSUF2QUM4QUJrQXdBREFBQllBeGdER0FCTUEwd0RVQUIwQTFnRFdBQWNBMlFEWkFBOEEyd0RjQUFjQTNRRGRBQjRBM3dEZkFBY0E0UURoQUFjQTR3RGpBQjBBNVFEbEFCMEE2d0RyQUI4QTdRRHRBQm9BOWdEMkFCTUErd0Q3QUNBQS9RRDlBQ0FBL2dEK0FCTUJBd0VFQUNBQkNRRUpBQ0FCREFFTUFBSUJGd0VYQUJjQkdBRVlBQTBCR1FFWkFCa0JLd0VyQUJNQkxBRXNBQndCTFFFdEFCOEJNQUV3QUFrQk1nRXlBQWtCU1FGSkFCOEJiZ0Z1QUFFQmNnRnlBQUVCZGdGM0FBRUNLQUlvQUFRQ0tnSXJBQVVDUmdKSEFBVUNTUUpKQUF3Q1N3SlJBQUlDVWdKU0FBUUNVd0pXQUFZQ1Z3SmJBQWNDWEFKZ0FBVUNZUUprQUFnQ1pRSmxBQkFDWmdKc0FCSUNiUUp0QUJRQ2JnSnhBQlVDZGdKMkFCWUNkd0o3QUJjQ2dBS0JBQmtDZ2dLQ0FBSUNnd0tEQUJJQ2hBS0VBQUlDaFFLRkFCSUNoZ0tHQUFJQ2h3S0hBQklDaUFLSUFBUUNpUUtKQUJRQ2lnS0tBQVFDaXdLTEFCUUNqQUtNQUFRQ2pRS05BQlFDamdLT0FBUUNqd0tQQUJRQ2tBS1FBQVVDa2dLU0FBWUNrd0tUQUJVQ2xBS1VBQVlDbFFLVkFCVUNsZ0tXQUFZQ2x3S1hBQlVDbUFLWUFBWUNtUUtaQUJVQ21nS2FBQVlDbXdLYkFCVUNwQUtrQUFjQ3BRS2xBQllDcGdLbUFBY0NxQUtvQUFjQ3FnS3FBQWNDckFLc0FBY0NyZ0t1QUFjQ3NRS3hBQWdDc3dLekFBa0N0UUsxQUFvQ3R3SzNBQW9DdVFLNUFBb0N1d0s3QUFvQ3ZRSzlBQWNDdmdLK0FCWUN2d0svQUFjQ3dBTEFBQllDd1FMQkFBY0N3Z0xEQUJZQ3hBTEVBQVVDeFFMRkFCY0N4Z0xHQUFVQ3h3TEhBQmNDeUFMSUFBVUN5UUxKQUJjQ3l3TExBQmdDelFMTkFCZ0N6d0xQQUJnQzJnTGFBQXdDM0FMY0FBd0MzZ0xlQUF3QzRBTGdBQWdDNGdMaUFBZ0M1QUxrQUFnQzVnTG1BQWdDNkFMb0FBZ0M2Z0xxQUFnQzdBTHNBQTRDN2dMdUFCQUM3d0x2QUJrQzhBTHdBQkFDOFFMeEFCRUM4Z0x5QUJzQzh3THpBQkVDOUFMMEFCc0M5UUwxQUJFQzlnTDJBQnNEVWdOU0FBSURVd05UQUFZRFZBTlZBQWNEVmdOV0FBVURWd05YQUJBRFdnTmFBQUlEV3dOYkFBTURYQU5jQUFZRFhRTmRBQkVEWGdOZkFBY0RZQU5nQUFrRFlRTmlBQWNEWXdOakFBVURaQU5rQUFzRFpRTmxBQXdEWmdObUFCQURad05uQUE4RGFBTm9BQWNEYVFOcEFCQURiQU5zQUJZRGNBTndBQmNEY2dOeUFCa0RkZ04yQUJjRGVRTjVBQVlEZWdONkFCd0RmQU45QUFjRGZnTitBQWdEZndPQUFBa0RnUU9CQUI0RGdnT0NBQUlEZ3dPREFBTURoQU9FQUJ3RGhRT0ZBQVlEaHdPSUFBY0RpUU9KQUFVRGl3T0xBQXNEakFPTUFBUURqUU9OQUF3RGpnT09BQThEandPUEFCSURrQU9RQUJVRGtnT1NBQmNEa3dPVEFCTURsQU9VQUJRRGxRT1ZBQmtEbGdPV0FCb0Rsd09YQUJVRG1BT1lBQjhEbmdPZUFCa0Rud09mQUE0RG9RT2hBQTREb3dPakFBNERwUU9sQUJBRHBnT21BQmtEckFPc0FBY0RyUU90QUJZRHJnT3VBQUlEcndPdkFCSURzQU93QUFZRHNnT3lBQlVEdGdPMkFBMER0d08zQUJrRHZBTzhBQVFEdlFPOUFCUUR2Z08rQUJBRHZ3Ty9BQmtEd0FQQUFBY0R3UVBCQUE4RHdnUENBQm9Ed3dQREFBY0R4QVBFQUFJRHhRUEZBQklEeGdQR0FBSUR4d1BIQUJJRHlnUEtBQVlEeXdQTEFCVUR6UVBPQUJVRHp3UFBBQThEMEFQUUFCb0Qxd1BYQUFVRDJBUFlBQmNEM0FQY0FCY0QzZ1BlQUJNRDN3UGZBQjRENEFQZ0FCa0Q0UVBoQUI0RDRnUGlBQmtENHdQakFCNEQ1QVBrQUJrRDZRUHBBQThENmdQcUFCb0Q3Z1B1QUFJRDd3UHZBQklEOEFQd0FBSUQ4UVB4QUJJRDhnUHlBQUlEOHdQekFCSUQ5QVAwQUFJRDlRUDFBQklEOWdQMkFBSUQ5d1AzQUJJRCtBUDRBQUlEK1FQNUFCSUQrZ1A2QUFJRCt3UDdBQklEL0FQOEFBSUQvUVA5QUJJRC9nUCtBQUlEL3dQL0FCSUVBQVFBQUFJRUFRUUJBQklFQWdRQ0FBSUVBd1FEQUJJRUJBUUVBQUlFQlFRRkFCSUVCZ1FHQUFZRUJ3UUhBQlVFQ0FRSUFBWUVDUVFKQUJVRUNnUUtBQVlFQ3dRTEFCVUVEQVFNQUFZRURRUU5BQlVFRGdRT0FBWUVEd1FQQUJVRUVBUVFBQVlFRVFRUkFCVUVFZ1FTQUFZRUV3UVRBQlVFRkFRVUFBWUVGUVFWQUJVRUZnUVdBQWNFR0FRWUFBY0VHZ1FhQUFVRUd3UWJBQmNFSEFRY0FBVUVIUVFkQUJjRUhnUWVBQVVFSHdRZkFCY0VJQVFnQUFVRUlRUWhBQmNFSWdRaUFBVUVJd1FqQUJjRUpBUWtBQVVFSlFRbEFCY0VKZ1FtQUFVRUp3UW5BQmNFTHdRdkFCY0VNZ1F5QUFnRU5BUTBBQWdFUUFSQUFCQUVRUVJCQUJrRVFnUkNBQkFFUXdSREFCa0VSQVJFQUJBRVJRUkZBQmtFU0FSSUFBa0VTZ1JLQUFjRVRBUk1BQXdFVGdST0FBOEVUd1JQQUJvRVZBUlVBQndFVlFSVkFCOEVWZ1JXQUE4RVZ3UlhBQm9FV2dSYUFCWUVYQVJjQUIwRVhRUmRBQndFWHdSZkFBa0VZd1JqQUFjRVpRUmxBQWNFYVFScEFCQUVxUVNwQUFVQUFnRnRBQVlBQmdBQkFBc0FDd0FCQUJBQUVBQVdBQkVBRVFBWkFCSUFFZ0FXQUNVQUpRQUNBQ2NBSndBSUFDc0FLd0FJQUM0QUxnQWFBRE1BTXdBSUFEVUFOUUFJQURjQU53QWJBRGdBT0FBSkFEa0FPUUFLQURvQU9nQUxBRHNBT3dBTUFEd0FQQUFYQUQwQVBRQU5BRDRBUGdBWUFFVUFSUUFEQUVjQVNRQUVBRXNBU3dBRUFGRUFVZ0FGQUZNQVV3QUdBRlFBVkFBRkFGVUFWUUFFQUZjQVZ3QUhBRmtBV1FBT0FGb0FXZ0FQQUZ3QVhBQWNBRjBBWFFBUEFGNEFYZ0FRQUlNQWd3QUlBSklBa2dBSUFKTUFrd0FFQUpjQWx3QUlBSmdBbUFBRUFKb0FtZ0FPQUxFQXNRQUNBTElBc2dBSUFMTUFzd0FDQUxvQXVnQUVBTHdBdkFBUEFNQUF3QUFGQU1jQXlBQUVBTW9BeWdBT0FORUEwUUFKQU5JQTBnQUlBTk1BMHdBUkFOVUExUUFKQU5rQTJRQVhBTndBM0FBUkFOMEEzUUFWQU9BQTRBQVNBT3NBNndBRkFPMEE3UUFjQU84QThBQUZBUEVBOFFBVEFQSUE5QUFGQVBZQTlnQUVBUGNBOXdBRkFQZ0ErQUFVQVBrQStnQUZBUDBBL1FBRkFQOEEvd0FGQVFJQkFnQUVBUU1CQXdBVEFRUUJCQUFGQVFjQkJ3QUlBUXdCREFBQ0FSWUJGZ0FJQVJjQkZ3QUdBUmdCR0FBTEFSa0JHUUFQQVJvQkdnQUlBUndCSEFBSUFSMEJIUUFFQVI0QkhnQUlBU0FCSUFBSUFTRUJJUUFFQVRJQk1nQUpBVFVCTlFBRkFUZ0JPQUFJQVRrQk9RQUVBVG9CT2dBSkFVUUJSQUFGQVVrQlNRQUZBVXNCVEFBRUFWRUJVUUFSQVZVQlZRQUlBVllCVmdBRUFXa0JhZ0FaQVd3QmJRQUJBVzRCYmdBV0FXOEJjUUFCQVhJQmNnQVdBWFlCZHdBV0FpZ0NLUUFJQWlzQ0xBQUlBa1VDUlFBWkFrc0NVUUFDQWxJQ1VnQUlBbHdDWUFBSUFtRUNaQUFLQW1VQ1pRQU5BbVlDYkFBREFtMENjUUFFQW5ZQ2RnQUZBbmNDZXdBR0Fud0Nmd0FPQW9BQ2dRQVBBb0lDZ2dBQ0FvTUNnd0FEQW9RQ2hBQUNBb1VDaFFBREFvWUNoZ0FDQW9jQ2h3QURBb2dDaUFBSUFva0NpUUFFQW9vQ2lnQUlBb3NDaXdBRUFvd0NqQUFJQW8wQ2pRQUVBbzRDamdBSUFvOENqd0FFQXBFQ2tRQUVBcE1Da3dBRUFwVUNsUUFFQXBjQ2x3QUVBcGtDbVFBRUFwc0Ntd0FFQXB3Q25BQUlBcDBDblFBRUFwNENuZ0FJQXA4Q253QUVBcUFDb0FBSUFxRUNvUUFFQXFJQ29nQUlBcU1Db3dBRUFyRUNzUUFhQXI0Q3ZnQUZBc0FDd0FBRkFzSUN3d0FGQXNRQ3hBQUlBc1VDeFFBR0FzWUN4Z0FJQXNjQ3h3QUdBc2dDeUFBSUFza0N5UUFHQXRBQzBBQWJBdEVDMFFBSEF0SUMwZ0FiQXRNQzB3QUhBdFFDMUFBYkF0VUMxUUFIQXRZQzFnQWJBdGNDMXdBSEF0Z0MyQUFiQXRrQzJRQUhBdG9DMmdBSkF0d0MzQUFKQXQ0QzNnQUpBdUFDNEFBS0F1RUM0UUFPQXVJQzRnQUtBdU1DNHdBT0F1UUM1QUFLQXVVQzVRQU9BdVlDNWdBS0F1Y0M1d0FPQXVnQzZBQUtBdWtDNlFBT0F1b0M2Z0FLQXVzQzZ3QU9BdXdDN0FBTUF1NEM3Z0FOQXU4Qzd3QVBBdkFDOEFBTkF2RUM4UUFZQXZJQzhnQVFBdk1DOHdBWUF2UUM5QUFRQXZVQzlRQVlBdllDOWdBUUF2a0MrUUFJQTFJRFVnQUNBMVlEVmdBSUExY0RWd0FOQTFvRFdnQUNBMTBEWFFBWUEyTURZd0FJQTJZRFpnQU5BMmNEWndBWEEya0RhUUFOQTJvRGFnQUVBMndEYkFBRkEyNERiZ0FPQTNBRGNBQUdBM0lEY2dBUEEzVURkUUFPQTNZRGRnQUdBM2NEZHdBT0EzNERmZ0FhQTRFRGdRQVZBNElEZ2dBQ0E0a0RpUUFJQTR3RGpBQUlBNDBEalFBSkE0NERqZ0FYQTQ4RGp3QURBNUFEa0FBRUE1RURrUUFGQTVJRGtnQUdBNU1Ea3dBRkE1UURsQUFFQTVVRGxRQVBBNVlEbGdBY0E1Y0Rsd0FFQTVnRG1BQUZBNWtEbVFBSEE1MERuUUFGQTU0RG5nQVBBNThEbndBTUE2RURvUUFNQTZNRG93QU1BNlVEcFFBTkE2WURwZ0FQQTZjRHFBQUJBNnNEcXdBQkE2MERyUUFGQTY0RHJnQUNBNjhEcndBREE3SURzZ0FFQTdNRHN3QUZBN1lEdGdBTEE3Y0R0d0FQQTdnRHVBQUVBN2tEdVFBSUE3d0R2QUFJQTcwRHZRQUVBNzREdmdBTkE3OER2d0FQQThFRHdRQVhBOElEd2dBY0E4UUR4QUFDQThVRHhRQURBOFlEeGdBQ0E4Y0R4d0FEQThzRHl3QUVBODBEemdBRUE4OER6d0FYQTlBRDBBQWNBOVFEMUFBRkE5WUQxZ0FGQTljRDF3QUlBOWdEMkFBR0E5a0QyUUFJQTlvRDJnQUVBOXNEMndBSUE5d0QzQUFHQTk4RDN3QVZBK0FENEFBUEErRUQ0UUFWQStJRDRnQVBBK01ENHdBVkErUUQ1QUFQQStVRDVRQVNBK1lENWdBVUErZ0Q2QUFGQStrRDZRQVhBK29ENmdBY0Erc0Q2d0FFQSt3RDdBQVJBKzBEN1FBVEErNEQ3Z0FDQSs4RDd3QURBL0FEOEFBQ0EvRUQ4UUFEQS9JRDhnQUNBL01EOHdBREEvUUQ5QUFDQS9VRDlRQURBL1lEOWdBQ0EvY0Q5d0FEQS9nRCtBQUNBL2tEK1FBREEvb0QrZ0FDQS9zRCt3QURBL3dEL0FBQ0EvMEQvUUFEQS80RC9nQUNBLzhEL3dBREJBQUVBQUFDQkFFRUFRQURCQUlFQWdBQ0JBTUVBd0FEQkFRRUJBQUNCQVVFQlFBREJBY0VCd0FFQkFrRUNRQUVCQXNFQ3dBRUJBMEVEUUFFQkE4RUR3QUVCQkVFRVFBRUJCTUVFd0FFQkJVRUZRQUVCQm9FR2dBSUJCc0VHd0FHQkJ3RUhBQUlCQjBFSFFBR0JCNEVIZ0FJQkI4RUh3QUdCQ0FFSUFBSUJDRUVJUUFHQkNJRUlnQUlCQ01FSXdBR0JDUUVKQUFJQkNVRUpRQUdCQ1lFSmdBSUJDY0VKd0FHQkNnRUtBQUlCQ2tFS1FBRUJDb0VLZ0FJQkNzRUt3QUVCQ3dFTEFBSUJDMEVMUUFFQkM0RUxnQUlCQzhFTHdBR0JEQUVNQUFJQkRFRU1RQUVCRElFTWdBS0JETUVNd0FPQkRRRU5BQUtCRFVFTlFBT0JEY0VOd0FPQkRrRU9RQU9CRHNFT3dBT0JEMEVQUUFPQkQ4RVB3QU9CRUFFUUFBTkJFRUVRUUFQQkVJRVFnQU5CRU1FUXdBUEJFUUVSQUFOQkVVRVJRQVBCRWtFU1FBRkJFc0VTd0FGQkV3RVRBQUpCRTRFVGdBWEJFOEVUd0FjQkZBRVVBQVNCRkVFVVFBVUJGSUVVZ0FTQkZNRVV3QVVCRlVFVlFBRkJGWUVWZ0FYQkZjRVZ3QWNCR0lFWWdBRkJHUUVaQUFGQkdZRVpnQUZCR2NFWndBUkJHZ0VhQUFUQkdrRWFRQU5CRzhFYndBWkJLa0VxUUFJQUFFQUFBQUtBZ1lJRUFBRVJFWk1WQUFhWTNseWJBQklaM0psYXdCMmJHRjBiZ0NrQUFRQUFBQUEvLzhBRWdBQUFBb0FGQUFlQUNnQU5BQkJBRXNBVlFCZkFHa0Fjd0I5QUljQWtRQ2JBS1VBcndBRUFBQUFBUC8vQUJJQUFRQUxBQlVBSHdBcEFEVUFRZ0JNQUZZQVlBQnFBSFFBZmdDSUFKSUFuQUNtQUxBQUJBQUFBQUQvL3dBU0FBSUFEQUFXQUNBQUtnQTJBRU1BVFFCWEFHRUFhd0IxQUg4QWlRQ1RBSjBBcHdDeEFDZ0FCa0ZhUlNBQVZFTlNWQ0FBZmsxUFRDQUFxRTVCVmlBQTFGSlBUU0FCQUZSVlVpQUJMQUFBLy84QUV3QURBQTBBRndBaEFDc0FNZ0EzQUVRQVRnQllBR0lBYkFCMkFJQUFpZ0NVQUo0QXFBQ3lBQUQvL3dBU0FBUUFEZ0FZQUNJQUxBQTRBRVVBVHdCWkFHTUFiUUIzQUlFQWl3Q1ZBSjhBcVFDekFBRC8vd0FTQUFVQUR3QVpBQ01BTFFBNUFFWUFVQUJhQUdRQWJnQjRBSUlBakFDV0FLQUFxZ0MwQUFELy93QVRBQVlBRUFBYUFDUUFMZ0E2QUQ0QVJ3QlJBRnNBWlFCdkFIa0Fnd0NOQUpjQW9RQ3JBTFVBQVAvL0FCTUFCd0FSQUJzQUpRQXZBRHNBUHdCSUFGSUFYQUJtQUhBQWVnQ0VBSTRBbUFDaUFLd0F0Z0FBLy84QUV3QUlBQklBSEFBbUFEQUFQQUJBQUVrQVV3QmRBR2NBY1FCN0FJVUFqd0NaQUtNQXJRQzNBQUQvL3dBVEFBa0FFd0FkQUNjQU1RQXpBRDBBU2dCVUFGNEFhQUJ5QUh3QWhnQ1FBSm9BcEFDdUFMZ0F1V015YzJNRVdHTXljMk1FWG1NeWMyTUVaR015YzJNRWFtTXljMk1FYW1NeWMyTUVhbU15YzJNRWFtTXljMk1FYW1NeWMyTUVhbU15YzJNRWFtTmpiWEFFY0dOamJYQUVjR05qYlhBRWNHTmpiWEFFY0dOamJYQUVjR05qYlhBRWNHTmpiWEFFY0dOamJYQUVjR05qYlhBRWNHTmpiWEFFY0dSc2FXY0VlR1JzYVdjRWZtUnNhV2NFaEdSc2FXY0VpbVJzYVdjRWltUnNhV2NFaW1Sc2FXY0VpbVJzYVdjRWltUnNhV2NFaW1Sc2FXY0VpbVJ1YjIwRWtHUnViMjBFbG1SdWIyMEVuR1J1YjIwRW9tUnViMjBFb21SdWIyMEVvbVJ1YjIwRW9tUnViMjBFb21SdWIyMEVvbVJ1YjIwRW9tWnlZV01FcUdaeVlXTUVxR1p5WVdNRXFHWnlZV01FcUdaeVlXTUVxR1p5WVdNRXFHWnlZV01FcUdaeVlXTUVxR1p5WVdNRXFHWnlZV01FcUd4cFoyRUVzbXhwWjJFRXVteHVkVzBFd0d4dWRXMEV4bXh1ZFcwRXpHeHVkVzBFMG14dWRXMEUwbXh1ZFcwRTBteHVkVzBFMG14dWRXMEUwbXh1ZFcwRTBteHVkVzBFMG14dlkyd0UyR3h2WTJ3RTNteHZZMndFNUc1MWJYSUU2bTUxYlhJRThHNTFiWElFOW01MWJYSUUvRzUxYlhJRS9HNTFiWElFL0c1MWJYSUUvRzUxYlhJRS9HNTFiWElFL0c1MWJYSUUvRzl1ZFcwRkFtOXVkVzBGQ0c5dWRXMEZEbTl1ZFcwRkZHOXVkVzBGRkc5dWRXMEZGRzl1ZFcwRkZHOXVkVzBGRkc5dWRXMEZGRzl1ZFcwRkZIQnVkVzBGR25CdWRXMEZJSEJ1ZFcwRkpuQnVkVzBGTEhCdWRXMEZMSEJ1ZFcwRkxIQnVkVzBGTEhCdWRXMEZMSEJ1ZFcwRkxIQnVkVzBGTEhOdFkzQUZNbk50WTNBRk9ITnRZM0FGUG5OdFkzQUZSSE50WTNBRlJITnRZM0FGUkhOdFkzQUZSSE50WTNBRlJITnRZM0FGUkhOdFkzQUZSSE56TURFRlNuTnpNREVGVUhOek1ERUZWbk56TURFRlhITnpNREVGWEhOek1ERUZYSE56TURFRlhITnpNREVGWEhOek1ERUZYSE56TURFRlhITnpNRElGWW5Oek1ESUZhSE56TURJRmJuTnpNRElGZEhOek1ESUZkSE56TURJRmRITnpNRElGZEhOek1ESUZkSE56TURJRmRITnpNRElGZEhOek1ETUZlbk56TURNRmdITnpNRE1GaG5Oek1ETUZqSE56TURNRmpITnpNRE1GakhOek1ETUZqSE56TURNRmpITnpNRE1GakhOek1ETUZqSE56TURRRmtuTnpNRFFGbUhOek1EUUZubk56TURRRnBITnpNRFFGcEhOek1EUUZwSE56TURRRnBITnpNRFFGcEhOek1EUUZwSE56TURRRnBITnpNRFVGcW5Oek1EVUZzSE56TURVRnRuTnpNRFVGdkhOek1EVUZ2SE56TURVRnZITnpNRFVGdkhOek1EVUZ2SE56TURVRnZITnpNRFVGdkhOek1EWUZ3bk56TURZRnlITnpNRFlGem5Oek1EWUYxSE56TURZRjFITnpNRFlGMUhOek1EWUYxSE56TURZRjFITnpNRFlGMUhOek1EWUYxSE56TURjRjJuTnpNRGNGNEhOek1EY0Y1bk56TURjRjdITnpNRGNGN0hOek1EY0Y3SE56TURjRjdITnpNRGNGN0hOek1EY0Y3SE56TURjRjdIUnVkVzBGOG5SdWRXMEYrSFJ1ZFcwRi9uUnVkVzBHQkhSdWRXMEdCSFJ1ZFcwR0JIUnVkVzBHQkhSdWRXMEdCSFJ1ZFcwR0JIUnVkVzBHQkFBQUFBRUFBUUFBQUFFQUF3QUFBQUVBQWdBQUFBRUFBQUFBQUFJQUNBQUpBQUFBQVFBT0FBQUFBUUFRQUFBQUFRQVBBQUFBQVFBTkFBQUFBUUJEQUFBQUFRQkZBQUFBQVFCRUFBQUFBUUJDQUFBQUF3QS9BRUFBUVFBQUFBSUFFUUFTQUFBQUFRQVNBQUFBQVFBOEFBQUFBUUErQUFBQUFRQTlBQUFBQVFBN0FBQUFBUUFLQUFBQUFRQU1BQUFBQVFBTEFBQUFBUUJIQUFBQUFRQkpBQUFBQVFCSUFBQUFBUUJHQUFBQUFRQXdBQUFBQVFBeUFBQUFBUUF4QUFBQUFRQXZBQUFBQVFBNEFBQUFBUUE2QUFBQUFRQTVBQUFBQVFBM0FBQUFBUUFGQUFBQUFRQUhBQUFBQVFBR0FBQUFBUUFFQUFBQUFRQVVBQUFBQVFBV0FBQUFBUUFWQUFBQUFRQVRBQUFBQVFBWUFBQUFBUUFhQUFBQUFRQVpBQUFBQVFBWEFBQUFBUUFjQUFBQUFRQWVBQUFBQVFBZEFBQUFBUUFiQUFBQUFRQWdBQUFBQVFBaUFBQUFBUUFoQUFBQUFRQWZBQUFBQVFBa0FBQUFBUUFtQUFBQUFRQWxBQUFBQVFBakFBQUFBUUFvQUFBQUFRQXFBQUFBQVFBcEFBQUFBUUFuQUFBQUFRQXNBQUFBQVFBdUFBQUFBUUF0QUFBQUFRQXJBQUFBQVFBMEFBQUFBUUEyQUFBQUFRQTFBQUFBQVFBekFFc0FtQUNZQUpnQW1BUW1CQ1lFSmdRbUJ4UUh3QTVRRGxBT1pnNklEb2dPaUE2SURyNE81QThTRHhJUEVnOFNEeVlQSmc4bUR5WVBPZzg2RHpvUE9nOU9EMDRQVGc5T0QyQVBZQTlnRDJBUGVnOTZEM29QZWcrOEQ3d1B2QSs4RDlvUDJnL2FEOW9QK0EvNEQvZ1ArQkFxRUNvUUtoQXFFRndRWEJCY0VGd1FqaENpRU5vUXpCRE1FTXdRekJEYUVOb1EyaERhRVFZQUFRQUFBQUVBQ0FBQ0FjUUEzd0huQWJvQnV3RzhBYjBCdmdHL0FjQUJ3UUhDQWNNQnhBSEZBY1lCeHdISUFja0J5Z0hMQWN3QnpRSE9BYzhCMEFIUkFkSUIwd0hvQWVrQ1F3STdBZW9CNndIc0FlMEI3Z0h2QWZBQjhRSHlBZk1COUFIMUFmWUI5d0g0QWZrQitnSDdBZndCL1FIK0FnQUNBUVRjQWdJQ0F3SUVBZ1VDQmdJSEFnZ0NDUUlLQWdzQ0x3SVBBaEFDRVFJVUFoVUNGZ0lYQWhnQ0dRSWJBaHdDSGdJZEF2c0MvQUw5QXY0Qy93TUFBd0VEQWdNREF3UURCUU1HQXdjRENBTUpBd29EQ3dNTUF3MEREZ01QQXhBREVRTVNBeE1ERkFNVkF4WURGd01ZQXhrREdnTWJBeHdESFFNZUF4OERJQU1oQXlJREl3TWtBeVVESmdNbkF5Z0RLUU1xQXlzRExBTXRBeTRETHdNd0F6RURNZ016QXpRRE5RTTJBemNET0FNNUF6b0RPd004QXowRFBnTS9BMEFEUVFOQ0EwTURSUU5FQTBZRFJ3TklBMGtEU2dOTEEwd0RUUU5PQTA4RFVBTlJCS29FcXdTc0JLMEVyZ1N2QkxBRXNRU3lCTE1FdEFTMUJMWUV0d1M0QkxrRXVnUzdCTHdFdlFTK0JMOEV3QVRCQk1JRXd3VEVCTVVCL3dUR0JNY0V5QVRKQk1vRXl3VE1CTTBFemdUUEJOQUUwUVRTQk5NRTFBVFZCTmNFMkFUYUFob0Uyd0lPQk5ZQ0V3SU5CTmtDREFJU0FBRUEzd0FJQUNVQUpnQW5BQ2dBS1FBcUFDc0FMQUF0QUM0QUx3QXdBREVBTWdBekFEUUFOUUEyQURjQU9BQTVBRG9BT3dBOEFEMEFQZ0JsQUdjQWhRQ1NBTEFBc1FDeUFMTUF0QUMxQUxZQXR3QzRBTGtBMFFEU0FOTUExQURWQU5ZQTF3RFlBTmtBMmdEYkFOd0EzUURlQU44QTRBRGhBT0lBNHdEa0FPVUE1Z0RuQU9nQkxBRXdBVElCT0FFNkFUd0JQZ0UvQVVVQlJnRi9BWVVCaWdHTkFrWUNSd0pKQWtzQ1RBSk5BazRDVHdKUUFsRUNVZ0pUQWxRQ1ZRSldBbGNDV0FKWkFsb0NXd0pjQWwwQ1hnSmZBbUFDWVFKaUFtTUNaQUpsQW9JQ2hBS0dBb2dDaWdLTUFvNENrQUtTQXBRQ2xnS1lBcG9DbkFLZUFxQUNvZ0trQXFZQ3FBS3FBcXdDcmdLeEFyTUN0UUszQXJrQ3V3SzlBcjhDd1FMRUFzWUN5QUxLQXN3Q3pnTFFBdElDMUFMWUF0b0MzQUxlQXVBQzRnTGtBdVlDNkFMcUF1d0M3Z0x3QXZFQzh3TDFBMUlEVXdOVUExVURWZ05YQTFnRFdnTmJBMXdEWFFOZUExOERZQU5oQTJNRFpBTmxBMllEWndOb0Eya0RlUU42QTNzRGZBTjlBMzREZndPQUE0RURnZ09EQTRRRGhRT0dBNGNEaUFPSkE0b0Rpd09NQTQwRGpnTzZBN3dEdmdQVEE5a0Qzd1JJQkVvRVRnUldCRmdFWFFScEFBRUFBQUFCQUFnQUFnRjBBTGNCdWdHN0Fid0J2UUcrQWI4QndBSEJBY0lCd3dIRUFjVUJ4Z0hIQWNnQnlRSEtBY3NCekFITkFjNEJ6d0hRQWRFQjBnSFRBdndETHdJN0Fmb0V5UVRLQWZzQi9BSDlBZjRCL3dJQUJNMEV6Z1RRQk5NRTNBSUNBZ01DQkFJRkFnWUNCd0lJQWdrQ0NnSUxBZlFCOVFIMkFmY0IrQUg1QWk4Q0R3SVFBaEVDRkFJVkFoY0NHUUw5QXY0Qy93TUFBd0VEQWdNREF3UURCUU1HQXdjRENBTUpBd29EQ3dNTUF3MEREZ01QQXhBREVRTVNBeE1ERkFNVkF4WURGd01ZQTA0REdRTWFBeHNESEFNZEF4NERId01nQXlFRElnTWpBeVFESlFNbUF5Y0RLQU1wQXlvREt3TXNBeTBETGdNd0F6RURNZ016QXpRRE5RTTJBemNET0FNNUF6b0RPd004QXowRFBnTS9BMEFEUVFOQ0EwTURSUU5FQTBZRFJ3TklBMGtEU2dOTEEwd0RUUU5QQTFBRFVRVElCTXNFekFUUEJORUUwZ0lCQk5RRXdBVEJCTUlFd3dURUJNVUV4Z1RIQk5VRTF3VFlBaGdFMmdJYUJOc0Mrd0lPQk5ZQ0V3SU5CTmtDRmdJTUFoSUFBUUMzQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0NIQUl3QWt3RHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEJBQUVCQVFJQkF3RUVBUVVCQmdFdEFURUJNd0U1QVRzQlBRRkFBVWNDU2dKbUFtY0NhQUpwQW1vQ2F3SnNBbTBDYmdKdkFuQUNjUUp5QW5NQ2RBSjFBbllDZHdKNEFua0NlZ0o3QW53Q2ZRSitBbjhDZ0FLQkFvTUNoUUtIQW9rQ2l3S05BbzhDa1FLVEFwVUNsd0taQXBzQ25RS2ZBcUVDb3dLbEFxY0NxUUtyQXEwQ3NnSzBBcllDdUFLNkFyd0N2Z0xBQXNJQ3hRTEhBc2tDeXdMTkFzOEMwUUxUQXRVQzJRTGJBdDBDM3dMaEF1TUM1UUxuQXVrQzZ3THRBdThDOGdMMEF2WURqd09RQTVFRGtnT1RBNVFEbFFPV0E1Y0RtQU9aQTVvRG13T2NBNTBEbmdPN0E3MER2d1BOQTlRRDJnUGdCRVlFU1FSTEJFOEVWd1JaQkZvRVhnUnFBQVlBQUFBR0FCSUFLZ0JDQUZvQWNnQ0tBQU1BQUFBQkFCSUFBUUNRQUFFQUFBQktBQUVBQVFCTkFBTUFBQUFCQUJJQUFRQjRBQUVBQUFCS0FBRUFBUUJPQUFNQUFBQUJBQklBQVFCZ0FBRUFBQUJLQUFFQUFRS3RBQU1BQUFBQkFCSUFBUUJJQUFFQUFBQktBQUVBQVFPYUFBTUFBQUFCQUJJQUFRQXdBQUVBQUFCS0FBRUFBUU9jQUFNQUFBQUJBQklBQVFBWUFBRUFBQUJLQUFFQUFRUVpBQUlBQVFDbkFLc0FBQUFFQUFBQUFRQUlBQUVHSGdBMkFISUFwQUN1QUxnQXlnRDhBUTRCR0FGS0FXUUJmZ0dRQWJvQjdBSDJBaGdDTWdKRUFuWUNpQUtpQXN3QzNnTVFBeG9ESkFNMkEyZ0RjZ044QTRZRG9BTzZBOHdEOWdRb0JESUVWQVJ1QklBRXNnVEVCTjRGQ0FVYUJTUUZMZ1U0QlVJRmJBV1dCY0FGNmdZVUFBWUFEZ0FVQUJvQUlBQW1BQ3dDU3dBQ0FLY0NUQUFDQUtnQ1RnQUNBS2tEOEFBQ0FLb0VlZ0FDQUtzRDdnQUNBS3dBQVFBRUJJY0FBZ0NzQUFFQUJBS0lBQUlBcUFBQ0FBWUFEQVNKQUFJQXJBU0xBQUlCb2dBR0FBNEFGQUFhQUNBQUpnQXNBbE1BQWdDbkFsUUFBZ0NvQkFvQUFnQ3BCQWdBQWdDcUJId0FBZ0NyQkFZQUFnQ3NBQUlBQmdBTUJIWUFBZ0NvQXFJQUFnR2lBQUVBQkFTTkFBSUFyQUFHQUE0QUZBQWFBQ0FBSmdBc0FsY0FBZ0NuQWxnQUFnQ29BcVlBQWdDcEJCWUFBZ0NxQkg0QUFnQ3JCQmdBQWdDc0FBTUFDQUFPQUJRRWp3QUNBS2dFa1FBQ0FLd0Nzd0FDQWFJQUF3QUlBQTRBRkFLMUFBSUFxQVNUQUFJQXJBSzNBQUlCb2dBQ0FBWUFEQU9zQUFJQXFBU1ZBQUlBckFBRkFBd0FFZ0FZQUI0QUpBUjRBQUlBcHdLOUFBSUFxQUpiQUFJQXFRU1hBQUlBckFLL0FBSUJvZ0FHQUE0QUZBQWFBQ0FBSmdBc0Fsd0FBZ0NuQWwwQUFnQ29BbDhBQWdDcEJCd0FBZ0NxQklBQUFnQ3JCQm9BQWdDc0FBRUFCQVNaQUFJQXFBQUVBQW9BRUFBV0FCd0N5Z0FDQUtnRWdnQUNBS3NFbXdBQ0FLd0N6QUFDQWFJQUF3QUlBQTRBRkFMUUFBSUFxQVNkQUFJQXJBTFdBQUlCb2dBQ0FBWUFEQVNmQUFJQXJBTGFBQUlCb2dBR0FBNEFGQUFhQUNBQUpnQXNBbUVBQWdDbkFtSUFBZ0NvQXVBQUFnQ3BCRFFBQWdDcUJJUUFBZ0NyQkRJQUFnQ3NBQUlBQmdBTUJLRUFBZ0NwQktNQUFnQ3NBQU1BQ0FBT0FCUURud0FDQUtjRG9RQUNBS2dFcFFBQ0FLd0FCUUFNQUJJQUdBQWVBQ1FEcFFBQ0FLY0NaUUFDQUtnRVJBQUNBS2tFUWdBQ0FLb0VRQUFDQUt3QUFnQUdBQXdDOFFBQ0FLZ0Vwd0FDQUt3QUJnQU9BQlFBR2dBZ0FDWUFMQUptQUFJQXB3Sm5BQUlBcUFKcEFBSUFxUVB4QUFJQXFnUjdBQUlBcXdQdkFBSUFyQUFCQUFRRWlBQUNBS3dBQVFBRUFva0FBZ0NvQUFJQUJnQU1CSW9BQWdDc0JJd0FBZ0dpQUFZQURnQVVBQm9BSUFBbUFDd0NiZ0FDQUtjQ2J3QUNBS2dFQ3dBQ0FLa0VDUUFDQUtvRWZRQUNBS3NFQndBQ0FLd0FBUUFFQkhjQUFnQ29BQUVBQkFTT0FBSUFyQUFCQUFRRUdRQUNBS3dBQXdBSUFBNEFGQVNRQUFJQXFBU1NBQUlBckFLMEFBSUJvZ0FEQUFnQURnQVVBcllBQWdDb0JKUUFBZ0NzQXJnQUFnR2lBQUlBQmdBTUE2MEFBZ0NvQkpZQUFnQ3NBQVVBREFBU0FCZ0FIZ0FrQkhrQUFnQ25BcjRBQWdDb0FuWUFBZ0NwQkpnQUFnQ3NBc0FBQWdHaUFBWUFEZ0FVQUJvQUlBQW1BQ3dDZHdBQ0FLY0NlQUFDQUtnQ2VnQUNBS2tFSFFBQ0FLb0VnUUFDQUtzRUd3QUNBS3dBQVFBRUJKb0FBZ0NvQUFRQUNnQVFBQllBSEFMTEFBSUFxQVNEQUFJQXF3U2NBQUlBckFMTkFBSUJvZ0FEQUFnQURnQVVBdEVBQWdDb0JKNEFBZ0NzQXRjQUFnR2lBQUlBQmdBTUJLQUFBZ0NzQXRzQUFnR2lBQVlBRGdBVUFCb0FJQUFtQUN3Q2ZBQUNBS2NDZlFBQ0FLZ0M0UUFDQUtrRU5RQUNBS29FaFFBQ0FLc0VNd0FDQUt3QUFnQUdBQXdFb2dBQ0FLa0VwQUFDQUt3QUF3QUlBQTRBRkFPZ0FBSUFwd09pQUFJQXFBU21BQUlBckFBRkFBd0FFZ0FZQUI0QUpBT21BQUlBcHdLQUFBSUFxQVJGQUFJQXFRUkRBQUlBcWdSQkFBSUFyQUFDQUFZQURBTHlBQUlBcUFTb0FBSUFyQUFCQUFRQzl3QUNBS2dBQVFBRUF2a0FBZ0NvQUFFQUJBTDRBQUlBcUFBQkFBUUMrZ0FDQUtnQUJRQU1BQklBR0FBZUFDUUNjZ0FDQUtjQ2N3QUNBS2dDcHdBQ0FLa0VGd0FDQUtvRWZ3QUNBS3NBQlFBTUFCSUFHQUFlQUNRRUtnQUNBS2NFS0FBQ0FLZ0VMZ0FDQUtrRUxBQUNBS29FTUFBQ0FLd0FCUUFNQUJJQUdBQWVBQ1FFS3dBQ0FLY0VLUUFDQUtnRUx3QUNBS2tFTFFBQ0FLb0VNUUFDQUt3QUJRQU1BQklBR0FBZUFDUUVPQUFDQUtjRU5nQUNBS2dFUEFBQ0FLa0VPZ0FDQUtvRVBnQUNBS3dBQlFBTUFCSUFHQUFlQUNRRU9RQUNBS2NFTndBQ0FLZ0VQUUFDQUtrRU93QUNBS29FUHdBQ0FLd0FBUUFFQklZQUFnQ29BQUlBRVFBbEFDa0FBQUFyQUMwQUJRQXZBRFFBQ0FBMkFEc0FEZ0E5QUQ0QUZBQkZBRWtBRmdCTEFFMEFHd0JQQUZRQUhnQldBRnNBSkFCZEFGNEFLZ0NCQUlFQUxBQ0RBSU1BTFFDR0FJWUFMZ0NKQUlrQUx3Q01BSXdBTUFDWEFKb0FNUURQQU04QU5RQUJBQUFBQVFBSUFBRUFCZ0FDQUFFQUFnTFVBdFVBQVFBQUFBRUFDQUFDQUE0QUJBVGRCTjRFM3dUZ0FBRUFCQUtHQW9jQ21BS1pBQVFBQUFBQkFBZ0FBUUFtQUFJQUNnQWNBQUlBQmdBTUFhTUFBZ0JLQWFnQUFnQllBQUVBQkFHcEFBSUFXQUFCQUFJQVNnQlhBQVFBQUFBQkFBZ0FBUUJFQUFJQUNnQVVBQUVBQkFHa0FBSUFUUUFCQUFRQnBnQUNBRTBBQkFBQUFBRUFDQUFCQUI0QUFnQUtBQlFBQVFBRUFhVUFBZ0JRQUFFQUJBR25BQUlBVUFBQkFBSUFTZ0dqQUFFQUFBQUJBQWdBQVFBR0FaVUFBUUFCQUVzQUFRQUFBQUVBQ0FBQkFBWUJKd0FCQUFFQXVnQUJBQUFBQVFBSUFBRUFCZ0dzQUFFQUFRQTJBQUVBQUFBQkFBZ0FBZ0FjQUFJQjR3SGtBQUVBQUFBQkFBZ0FBZ0FLQUFJQjVRSG1BQUVBQWdBdkFFOEFBUUFBQUFFQUNBQUNBQjRBREFJb0Fpb0NLUUlyQWl3Q0h3SWdBaUVCcmdJakFpUUNKUUFCQUF3QUp3QW9BQ3NBTXdBMUFFWUFSd0JJQUVzQVV3QlVBRlVBQVFBQUFBRUFDQUFDQUF3QUF3SW1BaWNDSndBQkFBTUFTUUJMQWE0QUFRQUFBQUVBQ0FBQ0FHWUFDQUk5QWkwQ0xnSXdBakVDT1FJNkFqd0FBUUFBQUFFQUNBQUNBQllBQ0FBYkFCVUFGZ0FYQUJnQUdRQWRBQlFBQVFBSUFhMENJZ1J3QkhFRWNnUnpCSFFFZFFBQkFBQUFBUUFJQUFJQUZnQUlCSFVDSWdSd0JIRUVjZ1J6QWEwRWRBQUJBQWdBRkFBVkFCWUFGd0FZQUJrQUd3QWRBQUVBQUFBQkFBZ0FBZ0FXQUFnQUZRQVdBQmNBR0FBWkFCc0FIUUFVQUFFQUNBSXRBaTRDTUFJeEFqa0NPZ0k4QWowQUFRQUFBQUVBQ0FBQkFBWUJhUUFCQUFFQUV3QUdBQUFBQVFBSUFBTUFBUUFTQUFFQVVnQUFBQUVBQUFCS0FBSUFBZ0Y4QVh3QUFBSFVBZDBBQVFBQkFBQUFBUUFJQUFFQUtBSEFBQUVBQUFBQkFBZ0FBZ0FhQUFvQ01nQjZBSE1BZEFJekFqUUNOUUkyQWpjQ09BQUNBQUVBRkFBZEFBQUFBUUFBQUFFQUNBQUNBQ1lBRUFIVUFkVUIxZ0hYQWRnQjJRSGFBZHNCM0FIZEFrQUNQZ0pCQWtJQ1B3VGhBQUVBRUFBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFFMEFUZ0t0QTVvRG5BUVoiLAogICJSb2JvdG8tTWVkaXVtSXRhbGljLnR0ZiI6ICJBQUVBQUFBUkFRQUFCQUFRUjFCUFV5RWNiWThBQWhRY0FBQlpha2RUVlVMRW5MZGNBQUp0aUFBQUdYeFBVeTh5b1F1dyt3QUFBWmdBQUFCZ1kyMWhjTmh1RHhJQUFCcHNBQUFHWEdOMmRDQUVseXRLQUFBalVBQUFBRlptY0dkdGUvbGhxd0FBSU1nQUFBRzhaMkZ6Y0FBSUFCTUFBaFFRQUFBQURHZHNlV1pndWJVR0FBQXRjQUFCNDJwb1pHMTRMeHBQN3dBQUZZQUFBQVRzYUdWaFpQaTJxd3NBQUFFY0FBQUFObWhvWldFTTJ4S1JBQUFCVkFBQUFDUm9iWFI0clJxWU5BQUFBZmdBQUJPSWJHOWpZU0tacWN3QUFDT29BQUFKeG0xaGVIQUhFZ0xaQUFBQmVBQUFBQ0J1WVcxbFJ1Uno0d0FDRU53QUFBTVVjRzl6ZFA5aEFHUUFBaFB3QUFBQUlIQnlaWEFic2ZnMkFBQWloQUFBQU13QUFRQUFBQUlBQUxEaDZ2MWZEenoxQUJzSUFBQUFBQURFOEJFdUFBQUFBTkRiVHBmNlFmM1ZDWGdJY3dBQ0FBa0FBZ0FBQUFBQUFBQUJBQUFIYlA0TUFBQUpOL3BCL213SmVBZ0FBYk1BQUFBQUFBQUFBQUFBQUFBRTRnQUJBQUFFNGdDUEFCWUFWZ0FGQUFFQUFBQUFBQTRBQUFJQUFmSUFCZ0FCQUFNRUdRSDBBQVVBQUFXYUJUTUFBQUVmQlpvRk13QUFBOUVBWmdJQUFBQUNBQUFBQUFBQUFBQUE0QUFLLzFBQUlYOEFBQUFoQUFBQUFFZFBUMGNBQVFBQS8vMEdBUDRBQUdZSG1nSUFJQUFCbndBQUFBQUVPZ1d3QUNBQUlBQUNBNVlBWkFBS0FBQUFDZ0FBQWZrQUFBSDVBQUFDSHdBM0FvNEFvUVRIQURzRWN3QkNCYjBBdFFVQUFDMEJXZ0NRQXI4QWFBTEcvNVFEZUFCbkJGMEFQUUcvLzRrQ2xnQTJBalVBTUFNYy8zOEVjd0JnQkhNQTd3UnpBQXNFY3dBbUJITUFDUVJ6QUZvRWN3QmpCSE1BaGdSekFEc0Vjd0NPQWhrQUt3SGkvNW9EL0FBeUJHSUFZZ1FVQUM4RDBBQ1ZCdnNBTWdVMC82UUU3d0FuQlJzQVpRVWNBQ2NFYlFBbkJFMEFKd1ZTQUdzRmpRQW5BanNBTlFSWkFBTUU3Z0FuQkQwQUp3YlZBQ2NGakFBbkJXWUFhd1VBQUNjRlpnQmtCT0lBSndTNUFDUUV3QUNjQlJrQVd3VVBBSnNHM2dDM0JQUC93d1RGQUtFRXR2L2xBaXIvN3dOSUFLd0NLdjk2QTFzQVJBT0svM2tDaWdES0JEMEFJZ1JvQUJBRUdnQTRCR3NBT3dRMEFEc0N5Z0JmQkhELzl3UlpBQTBDQlFBZkFmei9EQVFYQUJFQ0JRQWZCc3NBRUFSYkFBMEVkUUE1QkdqL3h3UnlBRHNDeEFBUUJBc0FIQUtmQURzRVdnQktBK0VBWkFYT0FIY0Q4Zis1QTlIL3RRUHgvK2NDcEFBd0FmMEFJQUtrLzVrRk1nQmJBZmtBQUFJWS8rWUVaUUJNQkp2LzlnVjhBQWdFeFFCUUFmZi83QVRjLzl3RGRBRFJCaDRBWGdPQUFMNER6Z0JKQkZVQWdBS1dBRFlHSGdCZUE4Y0E3d0w5QU9RRU13QWJBdWtBVmdMcEFHY0NrUURJQktILzNRUFpBSDBDT3dDZUFnci8wd0xwQU9FRGxRQytBODRBQWdXdEFMa0dCZ0N4QmpBQWxnUFEvOUlGTlAra0JUVC9wQVUwLzZRRk5QK2tCVFQvcEFVMC82UUhWZitIQlJzQVpRUnRBQ2NFYlFBbkJHMEFKd1J0QUNjQ093QTFBanNBTlFJN0FEVUNPd0ExQlRyLy93V01BQ2NGWmdCckJXWUFhd1ZtQUdzRlpnQnJCV1lBYXdRdEFDTUZaQUFWQlJrQVd3VVpBRnNGR1FCYkJSa0FXd1RGQUtFRXJ3QW5CTXNBR3dROUFDSUVQUUFpQkQwQUlnUTlBQ0lFUFFBaUJEMEFJZ2FYQUE4RUdnQTRCRFFBT3dRMEFEc0VOQUE3QkRRQU93SVVBQ0lDRkFBaUFoUUFJZ0lVQUNJRWpRQkdCRnNBRFFSMUFEa0VkUUE1QkhVQU9RUjFBRGtFZFFBNUJIZ0FQUVJ2QUNvRVdnQktCRm9BU2dSYUFFb0VXZ0JLQTlIL3RRUisvODBEMGYrMUJUVC9wQVE5QUNJRk5QK2tCRDBBSWdVMC82UUVQUUFpQlJzQVpRUWFBRGdGR3dCbEJCb0FPQVViQUdVRUdnQTRCUnNBWlFRYUFEZ0ZIQUFuQlFFQU93VTYvLzhFaVFBN0JHMEFKd1EwQURzRWJRQW5CRFFBT3dSdEFDY0VOQUE3QkcwQUp3UTBBRHdFYlFBbkJEUUFPd1ZTQUdzRWNQLzNCVklBYXdSdy8vY0ZVZ0JyQkhELzl3VlNBR3NFY1AvM0JZMEFKd1JaQUEwRmpnQXVCSGNBS3dJN0FEVUNGQUFVQWpzQU5RSVVBQjhDT3dBMUFoUUFJZ0k3LzQ0Q0JmOTJBanNBTlFJVUFDSUdsQUExQkFFQUh3UlpBQU1DSVA4UEJPNEFKd1FYQUJFRWZ3QWhCRDBBSndJRkFCOEVQUUFuQWdYL29nUTlBQ2NDbXdBZkJEMEFKd0xoQUI4RVRBQWhBa2NBSHdXTUFDY0VXd0FOQll3QUp3UmJBQTBGakFBbkJGc0FEUVJiQUEwRmNnQWpCRzhBRVFWbUFHc0VkUUE1QldZQWF3UjFBRGtGWmdCckJIVUFPUWVEQUZBSERRQkNCT0lBSndMRUFCQUU0Z0FuQXNUL25BVGlBQ2NDeEFBUUJMa0FKQVFMQUJ3RXVRQWtCQXNBSEFTNUFDUUVDd0FjQkxrQUpBUUxBQndFd0FDY0FwOEFPd1RBQUp3Q3h3QTdCTUFBbkFLZi8rSUZHUUJiQkZvQVNnVVpBRnNFV2dCS0JSa0FXd1JhQUVvRkdRQmJCRm9BU2dVWkFGc0VXZ0JLQlJrQVd3UmFBRW9HM2dDM0JjNEFkd1RGQUtFRDBmKzFCTVVBb1FTMi8rVUQ4Zi9uQkxiLzVRUHgvK2NFdHYvbEEvSC81d0lHQUI0RmFBQk9Bc1QvU2dWcEFGc0VoUUEyQllNQVd3VFdBRW9DSVA4UEJWSUFhd1J3Ly9jRmpBQW5CRnNBRFFVMC82UUVQUUFpQjFYL2h3YVhBQThGWkFBVkJHOEFLZ1UwLzZRRVBRQWlCRzBBSndRMEFEc0NPLy9KQWhUL2ZnVm1BR3NFZFFBNUJPSUFKd0xFQUFjRkdRQmJCRm9BU2dTNUFDUUVDd0FjQk1BQW5BS2ZBRHNDSVA4UEJDVUFOZ0c1QUlvRDBnRUNBNTRCRFFQSUFPOERhd0QrQWdVQkFnS25BUG9DUmYrb0E4UUEzZ01SQUt3Q1kvL3VBQXI5VkFBSy9kY0FDdnoyQUFyOTFnQUsvTDhBQ3Z5Z0FsVUJMZ1FsQU9nRk5QK2tBanNBbmdUUi83NEY4Zi9HQXAvL3lnVjZBQmdGS2Y5WUJWQUFIUUtnQUFzRk5QK2tCTzhBSndSZEFDNEZuZitxQkcwQUp3UzIvK1VGalFBbkJWb0FYZ0k3QURVRTdnQW5CUnIvc2diVkFDY0ZqQUFuQkhjQUFBVm1BR3NGandBdUJRQUFKd1IzLzl3RXdBQ2NCTVVBb1FYTEFGSUU4Ly9EQllrQWRRVThBQWtDT3dBMUJNVUFvUVJyQUQ0RVNBQW9CRzhBRVFLZ0FHNEVTQUJYQkdzQVBnU3IvK1VEK1FCM0JHOEFPQVJJQUNnRUJRQm1CRzhBRVFTSEFHd0NvQUJ1Qkg4QUlRUlMvNmdFb2YvZEErRUFaQVArQUQ0RWRRQTVCTmNBWFFSdi84c0VJUUE3QkhjQU9BUVhBRzRFU0FCWEJhMEFNZ1B4LzdrRnB3QS9CbXNBVkFLZ0FFd0VTQUJYQkhVQU9RUklBRmNHYXdCVUJKa0FVQVJqQUcwRXgvOGtCa29BVndSdEFDY0ViUUFuQmRvQWtRUmRBQzRGT2dCbkJMa0FKQUk3QURVQ093QTFCRmtBQXdoUS84b0lWd0F1QmpRQW9BVHVBQ2NGaHdBbkJPMEFtd1dKQUNVRk5QK2tCT3NBSXdUdkFDY0VYUUF1QmVML2hBUnRBQ2NIY2YrbEJMc0FIZ1dIQUNjRmh3QW5CUW9BTGdXSS84b0cxUUFuQlkwQUp3Vm1BR3NGandBdUJRQUFKd1ViQUdVRXdBQ2NCTzBBbXdZNEFGWUU4Ly9EQmRVQUpRVm9BTVVIYXdBckI4WUFLd1gxQUlrR3pRQXVCT29BSXdVeEFFOEhKZ0F5Qk52L3NBUTlBQ0lFWlFCREJIWUFJZ05LQUJnRTJ2K0ZCRFFBT3daTy82MEVBUUFXQkg4QUdRUi9BQmtFVmdBaUJJSC92d1hmQUNJRWZnQVpCSFVBT1FSL0FCa0VhUC9IQkJvQU9BUGhBRk1EMGYrMUJiQUFQUVB4LzdrRXVBQVpCRTRBY0FabUFCa0d3UUFTQlBvQVR3WklBQ0lFVUFBaUJDVUFJd1pjQUNRRVdQKzJCRFFBT3dRMEFEc0VXUUFOQTBvQUdBUWxBRHNFQ3dBY0FnVUFId0lVQUNJQi9QOE1CcWYvdlFhNUFCa0VjQUFOQkZZQUlnUi9BQmtEMGYrMUJIOEFHUWNiQUdBR0tRQkVCT29BSXdSUEFDRUcrd0FyQmQwQUdRVHYvNjRFU1ArY0J4UUFQZ1lRQURBR3dnQVVCY01BRmdqMUFEVUh4Z0FpQkFyL3FnUGMvN1VGaVFCMUJhY0FQd1ZhQUdJRWJ3QTJCUDBBcUFQNUFIY0UvUUNvQS9rQWR3azNBR3NJUmdBNUJWb0FaZ1J2QURnSEZ3QmlCaDRBU3djYkFHQUdLUUJFQlAwQVZnUXpBRVVFNHdBNEFBcjg1Z0FLL1E0QUN2NHJBQXIrUEFBSytrRUFDdnB2QlljQUp3Ui9BQmtFNmdBakJFOEFJUVQyQUNjRWJmL0hCRklBSWdPUEFCRUVYZi84QTByL3l3U2RBQzRFQ2dBUkIzSC9wUVpPLzYwRXV3QWVCQUVBRmdVS0FDNEVWZ0FpQlE0QUl3U1JBQ0VGSGdBM0JDNEFHUVpzQUtRRmd3QnNCWTBBSndSK0FCa0huZ0FuQllrQUVRZ1JBQzRHeWdBUkJnVUFaUVRqQUVzRkd3QmxCQm9BT0FUQUFKd0Q0UUJUQk1VQW9RUDVBSGNFeFFDaEEva0FWQVR6LzhNRDhmKzVCd1FBblFWUUFGWUZhQURGQkU0QWNBVlVBTGtFV3dDRkJXY0E1d1JaQUEwRi93QmlCS2ovOUFYL0FHSUVxUC8wQWpzQU5RZHgvNlVHVHYrdEJRUUFJd1JnQUNFRmlQL0tCSUgvdndXTkFDNEVid0FSQlkwQUp3UitBQmtGYUFERkJFNEFjQWJWQUNjRjN3QWlBanNBTlFVMC82UUVQUUFpQlRUL3BBUTlBQ0lIVmYrSEJwY0FEd1J0QUNjRU5BQTdCV2dBU0FRbEFEWUZhQUJJQkNVQU5nZHgvNlVHVHYrdEJMc0FIZ1FCQUJZRWpBQXZCSXovOEFXSEFDY0Vmd0FaQlljQUp3Ui9BQmtGWmdCckJIVUFPUVZhQUdJRWJ3QTJCVm9BWWdSdkFEWUZNUUJQQkNVQUl3VHRBSnNEMGYrMUJPMEFtd1BSLzdVRTdRQ2JBOUgvdFFWb0FNVUVUZ0J3QkYwQUxnTktBQmdHelFBdUJrZ0FJZ1NzQURNRFF3QUpCUFAvd3dQeC83a0U4Ly9EQS9IL3VRVHFBREFFYXdBN0JzWUFSUWF5QUVjR0xBQ3FCUW9BWVFSakFKSUVKd0NNQjQzLzNnWjAvOTRIeWdBbkJuVUFDd1RuQUV3RUZnQTlCWWtBa0FVQUFITUZOZ0JXQkVnQUtBV0kvOG9FZ2YrL0JUVC9wQVE5QUNJRTd3QW5CR2dBRUFVY0FDY0Vhd0E3QlJ3QUp3UnJBRHNGalFBbkJGa0FEUVR1QUNjRUZ3QVJCTzRBSndRWEFCRUVQUUFuQWdYLzVBYlZBQ2NHeXdBUUJ0VUFKd2JMQUJBRmpBQW5CRnNBRFFVQUFDY0VhUC9IQk9JQUp3TEUvOTRFdVFBa0JBc0FIQVRBQUp3Q253QTdCUThBbXdQaEFHUUZEd0NiQStFQVpBYmVBTGNGemdCM0J0NEF0d1hPQUhjRzNnQzNCYzRBZHdiZUFMY0Z6Z0IzQkxiLzVRUHgvK2NGTlAra0JEMEFJZ1UwLzZRRVBRQWlCVFQvcEFROUFDSUZOUCtrQkQwQUlnVTAvNlFFUFFBaUJUVC9wQVE5QUNJRk5QK2tCRDBBSWdVMC82UUVQUUFpQlRUL3BBUTlBQ0lGTlAra0JEMEFJZ1UwLzZRRVBRQWlCVFQvcEFROUFDSUViUUFuQkRRQU93UnRBQ2NFTkFBN0JHMEFKd1EwQURzRWJRQW5CRFFBT3dSdEFDY0VOQUE3QkcwQUp3UTBBRHNFYlFBbkJEUUFPd1J0QUNjRU5BQTdBanNBTlFJVUFDSUNPLy8vQWdYLzVBVm1BR3NFZFFBNUJXWUFhd1IxQURrRlpnQnJCSFVBT1FWbUFHc0VkUUE1QldZQWF3UjFBRGtGWmdCckJIVUFPUVZtQUdzRWRRQTVCV2tBV3dTRkFEWUZhUUJiQklVQU5nVnBBRnNFaFFBMkJXa0FXd1NGQURZRmFRQmJCSVVBTmdVWkFGc0VXZ0JLQlJrQVd3UmFBRW9GZ3dCYkJOWUFTZ1dEQUZzRTFnQktCWU1BV3dUV0FFb0Znd0JiQk5ZQVNnV0RBRnNFMWdCS0JNVUFvUVBSLzdVRXhRQ2hBOUgvdFFURkFLRUQwZisxQk1VQW9RUFIvN1VGclA2ekF4NEE3QVAvQUFBSDlBQUFBLzhBQUFmMEFBQUNyZ0FBQWdRQUFBRmNBQUFFWmdBQUFpa0FBQUdmQUFBQTFRQUFBQW9BQUFLWEFEWUNsd0EyQlFzQW5BWUtBSUlHQ2dDQ0E0di9UZ0c5QUs0QnVRQ0tBY3IvcEFHbEFNMERCZ0MzQXcwQWx3TDcvNkVFUlFCcEJJRC8rd0xBQUo0RDVRQXpCWVVBTXdGckFEWUhkZ0NkQVZvQWtBS09BS0VDYVFCZEFtRC8rUVErQURjRGl2L2hBdWtBWXdOTUFHNEVUZi9EQkp2LzlnWkpBQTBHamdBckNGc0FKd2RZQUNvR1pBQVFCSW4vOUFSekFFNEYwUUJDQkI0QU93U0lBQkFGUC8va0JWMy81Z1hCQU1JRHpnQXhCL2tBSXdUc0FPMEU5d0I5Qmc4QXRnYXlBSUlHcHdDSUJua0F0UVI0QUVVRmRRQWZCTDcvcHdScUFKd0VtQUEwQ0E4QVNRSW0veGNFZFFBd0JHSUFZZ1A4LzlVRUZBQVhBL2NBT2dKVEFHa0NqZ0JtQWV6L3p3VCtBRjhFamdCTEJLSUFYd2IyQUY4RzlnQmZCUFFBWHdhTkFCY0FDZ0FBQi92L3FRZzFBRndEaHYvWEJHUC9wd1NtQURvRVkvK25BNllBQ2dRMkFDMEVUZ0FSQkI0QURnUVhBQlFGR3dBdUJCb0FGQVVLQUM0RkpnQXVCS0VBT3dRbC80Y0Nwd0VHQkwwQUNnTHBBRE1DNlFBSUF1a0FJd0xwQUJZQzZRQUtBdW4vOFFMcC8vUUM2Zi9qQXVrQWJRTHBBQmNFQlAvWkJYd0FRd1UxQUhBRXlBQUFBNllBa3dYakFJd0VZd0J3QkdzQU9RUWxBR0lFSGdBT0JFVUFDZ1NtQURjRVZRQUtCS1lBT2dUQ0FBb0Y0Z0FLQTZZQUNnUkVBQW9Ed3YveUFmY0FHQVREQUFvRWpBQS9BN0lBQ2dQTUFBb0VZZ0FLQkdjQU9RUklBQW9FaGYrYkFmOEE2d09QQVFRRDlnRGNBL1lBRXdQMkFOZ0Q5Z0RYQTQ4QkJBT1BBUVVEandFRUJFYi9wQVFsQUcwRVp3QTVCWEFBWWdRZEFGVUVlZ0FxQWdyL0J3R3cvN0lFRlAvV0J5Yi93UWNwQUFvRmRnQmlCTHdBQ2dSWkFBc0ZPditEQmhUL3FRUXZBQXdFeUFBTEJFVUFDZ1N3LzhFRUx3QnlCVDRBQ2dSekFGMEdYQUFLQnQ0QUNnVTdBRW9GK3dBTEJFOEFDd1JuQUJNR2FnQUtCRy8vMGdRTS8vVUdhditwQklRQUNnVDlBQW9GVGdCaUJjd0FRQVJEQUcwRXFmK2tCbXdBWWdSekFGMEVjd0FLQmRvQU53UzNBRFFFTHdBTUJLWUFPZ1JPQUFRRDR3QWVDQUVBQ2dUUC85a0Vid0FRQkNZQU53Ui9BRHNEa2dDa0JJY0FOQVI3LzhjRWhnQTdCRFFBT3dSd0FEQUZXZ0J2QllFQWNRVm1BQzRGdlFCeUJiOEFjZ1FGQUtzRWFRQWZBNllBQ2dSQS8zOEVwUC9SQXVrQWlnTHBBR1FDNlFCOUF1a0FpUUxwQUpZQzZRQjdBdWtBcGdSVC85UUVHQUFuQm04QU9nU2FBRWNFendCT0FpRC9Ed0lnL3c4Q0ZRQWlBaFgvZlFJVkFDSUVTQUFLQkdML2x3UmkvNWNFSlFCaUJJWC9td1NGLzVzRWhmK2JCSVgvbXdTRi81c0VoZitiQklYL213Um5BRGtEekFBS0E4d0FDZ1BNQUFvRHpBQUtBZmNBR0FIM0FCZ0I5d0FZQWZjQUdBVENBQW9FcGdBNkJLWUFPZ1NtQURvRXBnQTZCS1lBT2dSckFEa0Vtd0IwQkljQWpnUnpBRm9FY3dBSkJITUFKZ1J6QUFzRWF3QTVCR3NBT1FSckFEa0VKUUJ0QklYL213U0YvNXNFaGYrYkJHY0FPUVJuQURrRVp3QTVCR2NBT1FSaUFBb0R6QUFLQTh3QUNnUE1BQW9EekFBS0E4d0FDZ1NNQUQ4RWpBQS9CSXdBUHdTTUFEOEV3d0FLQWZjQURRSDNBQmdCOXdBWUFmZi9pZ0gzQUJnRHd2L3lCRVFBQ2dPbUFBb0RwZ0FLQTZZQUNnT21BQW9Fd2dBS0JNSUFDZ1RDQUFvRXBnQTZCS1lBT2dTbUFEb0VSUUFLQkVVQUNnUkZBQW9FSGdBT0JCNEFEZ1FlQUE0RUhnQU9CQ1VBWWdRbEFHSUVKUUJpQkdzQU9RUnJBRGtFYXdBNUJHc0FPUVJyQURrRWF3QTZCZU1BakFRbEFHMEVKUUJ0QkJULzFnUVUvOVlFRlAvV0JJWC9td1FJLzIwRS8vOTRBalAvZXdTdy85SUVZZjhzQk5MLzRnU0YvNXNFU0FBS0E4d0FDZ1FVLzlZRXd3QUtBZmNBR0FSRUFBb0Y0Z0FLQktZQU9nUlZBQW9FSlFCaUJDVUFiUVJHLzZRQjl3QVlCQ1VBYlFQTUFBb0RwZ0FLQkI0QURnSDNBQmdCOXdBWUE4TC84Z1JFQUFvRUx3QnlCSVgvbXdSSUFBb0RwZ0FLQTh3QUNnVElBQXNGNGdBS0JNTUFDZ1NtQURvRXZRQUtCRlVBQ2dSbkFEa0VKUUJpQkViL3BBUXZBQTBFd3dBS0JHY0FPZ1FsQUcwRjJnQTNCTWdBQ3dRdkFISUZmQUJEQlRUL3BBUTlBQ0lFYlFBbkJEUUFPd0lVLytRQUFBQUJBQUFFNUFrS0JBQUFBZ0lDQXdVRkJnWUNBd01FQlFJREFnUUZCUVVGQlFVRkJRVUZBZ0lFQlFVRUNBWUdCZ1lGQlFZR0F3VUdCUWdHQmdZR0JnVUZCZ1lJQmdVRkFnUUNCQVFEQlFVRkJRVURCUVVDQWdVQ0NBVUZCUVVEQlFNRkJBY0VCQVFEQWdNR0FnSUZCUVlGQWdVRUJ3UUVCUU1IQkFNRkF3TURCUVFEQWdNRUJBWUhCd1FHQmdZR0JnWUlCZ1VGQlFVREF3TURCZ1lHQmdZR0JnVUdCZ1lHQmdVRkJRVUZCUVVGQlFjRkJRVUZCUUlDQWdJRkJRVUZCUVVGQlFVRkJRVUZCQVVFQmdVR0JRWUZCZ1VHQlFZRkJnVUdCZ1lGQlFVRkJRVUZCUVVGQlFZRkJnVUdCUVlGQmdVR0JRTUNBd0lEQWdNQ0F3SUhCUVVDQmdVRkJRSUZBZ1VEQlFNRkF3WUZCZ1VHQlFVR0JRWUZCZ1VHQlFnSUJnTUdBd1lEQlFVRkJRVUZCUVVGQXdVREJRTUdCUVlGQmdVR0JRWUZCZ1VJQndVRUJRVUVCUVFGQkFJR0F3WUZCZ1VDQmdVR0JRWUZDQWNHQlFZRkJRVURBZ1lGQmdNR0JRVUZCUU1DQlFJRUJBUUVBZ01EQkFNREFBQUFBQUFBQXdVR0F3VUhBd1lHQmdNR0JnVUdCUVVHQmdNR0JnZ0dCUVlHQmdVRkJRY0dCZ1lEQlFVRkJRTUZCUVVFQlFVRkJRVURCUVVGQkFRRkJRVUZCUVVGQmdRR0J3TUZCUVVIQlFVRkJ3VUZCd1VHQlFNREJRa0pCd1lHQmdZR0JnWUZCd1VJQlFZR0JnWUlCZ1lHQmdZRkJnY0dCd1lJQ1FjSUJnWUlCUVVGQlFRRkJRY0ZCUVVGQlFjRkJRVUZCUVFFQmdRRkJRY0lCZ2NGQlFjRkJRVUZCQVVGQWdJQ0J3Z0ZCUVVFQlFnSEJnVUlCd1lGQ0FjSUJnb0pCUVFHQmdZRkJnUUdCQW9KQmdVSUJ3Z0hCZ1VHQUFBQUFBQUFCZ1VHQlFZRkJRUUZCQVVGQ0FjRkJRWUZCZ1VHQlFjR0JnVUpCZ2tJQndZR0JRVUVCUVFGQkFZRUNBWUdCUVlGQmdVSEJRY0ZBd2dIQmdVR0JRWUZCZ1VHQlFnSEF3WUZCZ1VJQndVRkJnVUdCUWdIQlFVRkJRWUZCZ1VHQlFZRkJnVUdCUVlFQmdRR0JBWUZCUVFJQndVRUJnUUdCQVlGQ0FnSEJnVUZDUWNKQndZRkJnWUdCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnVUZBZ2dJQ0FnR0JRWUZCZ01GQlFVREJnUUdCQWdIQ0FjSUJ3Z0hCUVFHQlFZRkJnVUdCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkF3SURBZ1lGQmdVR0JRWUZCZ1VHQlFZRkJnVUdCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnVUdCUVlGQlFRRkJBVUVCUVFHQkFVSkJRa0RBZ0lGQWdJQkFBTURCZ2NIQkFJQ0FnSURBd01GQlFNRUJnSUlBZ01EQXdVRUF3UUZCUWNIQ1FnSEJRVUhCUVVHQmdZRUNRWUdCd2dIQndVR0JRVUZDUUlGQlFRRkJBTURBZ1lGQlFnSUJnY0FDUWtFQlFVRkJBVUZCUVVHQlFZR0JRVURCUU1EQXdNREF3TURBd01GQmdZRkJBY0ZCUVVGQlFVRkJRVUhCQVVFQWdVRkJBUUZCUVVGQWdRRUJBUUVCQVFFQlFVRkJnVUZBZ0lGQ0FnR0JRVUdCd1VGQlFVRkJnVUhDQVlIQlFVSEJRVUhCUVlHQndVRkJ3VUZCd1VGQlFVRUNRVUZCUVVFQlFVRkJRVUdCZ1lHQmdVRkJBVUZBd01EQXdNREF3VUZCd1VGQWdJQ0FnSUZCUVVGQlFVRkJRVUZCUVVFQkFRRUFnSUNBZ1VGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUVCQVFFQkFVRkJRVUZBZ0lDQWdJRUJRUUVCQVFGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJ3VUZCUVVGQlFVR0FnVUZCUVVGQkFVRkFnVUhCUVVGQlFVQ0JRUUVCUUlDQkFVRkJRVUVCQVVIQlFVRkJRVUZCUVVGQlFVSEJRVUdCZ1VGQlFJQUFBQURBQUFBQXdBQUFCd0FBd0FCQUFBQUhBQURBQW9BQUFLa0FBUUNpQUFBQUo0QWdBQUdBQjRBQUFBQ0FBMEFmZ0YvQVk4QmtnR2hBYkFCOEFIL0Foc0NOd0paQXJ3Q3h3TEpBdDBDOHdNQkF3TURDUU1QQXlNRGlnT01BNkVEemdQU0E5WUVoZ1VUSGdFZVB4NkZIdmtmVFNBTElCRWdGU0FlSUNJZ0p5QXdJRE1nT2lBOElFUWdkQ0IvSUtRZ3JDQ3hJTG9ndlNFRklSTWhGaUVpSVNZaExpRmVJZ0lpQmlJUEloSWlHaUllSWlzaVNDSmdJbVVseXU0QzlzUDdCUDcvLy8zLy93QUFBQUFBQWdBTkFDQUFvQUdQQVpJQm9BR3ZBZkFCK2dJWUFqY0NXUUs4QXNZQ3lRTFlBdk1EQUFNREF3a0REd01qQTRRRGpBT09BNk1EMFFQV0JBQUVpQjRBSGo0ZWdCNmdIMDBnQUNBUUlCTWdGeUFnSUNVZ01DQXlJRGtnUENCRUlIUWdmeUNqSUtZZ3NTQzVJTHdoQlNFVElSWWhJaUVtSVM0aFd5SUNJZ1lpRHlJUklob2lIaUlySWtnaVlDSmtKY3J1QWZiRCt3SCsvLy84Ly84QUFRQUEvL2IvNVAvRC83VC9zditsLzVqL1dmOVUvMGovTGY4TS9xcitvZjZnL3BMK2ZmNXgvbkQrYS81bS9sUDk4LzN5L2ZIOThQM3UvZXo5dy8zQzVOYmtxT1I0NUdMa0QrTmU0MXJqV2VOWTQxZmpWZU5ONDB6alIrTkc0ei9qRU9NRzR1UGk0dUxlNHRmaTF1S1A0b0xpZ09KMTRIUGlhdUkrNFp2ZmYrR1A0WTdoaCtHRTRYamhYT0ZGNFVMZDNoV29ET2dJckFTMEE3Z0FBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0FBQUFBQTdnQUFBQUFBQUFBVGdBQUFBQUFBQUFBQUFBQUFRQUFBQUlBQUFBQ0FBQUFBZ0FBQUEwQUFBQU5BQUFBQXdBQUFDQUFBQUIrQUFBQUJBQUFBS0FBQUFGL0FBQUFZd0FBQVk4QUFBR1BBQUFCUXdBQUFaSUFBQUdTQUFBQlJBQUFBYUFBQUFHaEFBQUJSUUFBQWE4QUFBR3dBQUFCUndBQUFmQUFBQUh3QUFBQlNRQUFBZm9BQUFIL0FBQUJUZ0FBQWhnQUFBSWJBQUFCWUFBQUFqY0FBQUkzQUFBQlpBQUFBbGtBQUFKWkFBQUJaUUFBQXJ3QUFBSzhBQUFCWmdBQUFzWUFBQUxIQUFBQlp3QUFBc2tBQUFMSkFBQUJhUUFBQXRnQUFBTGRBQUFCYWdBQUF2TUFBQUx6QUFBQmNBQUFBd0FBQUFNQkFBQUJjUUFBQXdNQUFBTURBQUFCY3dBQUF3a0FBQU1KQUFBQmRBQUFBdzhBQUFNUEFBQUJkUUFBQXlNQUFBTWpBQUFCZGdBQUE0UUFBQU9LQUFBQmR3QUFBNHdBQUFPTUFBQUJmZ0FBQTQ0QUFBT2hBQUFCZndBQUE2TUFBQVBPQUFBQmt3QUFBOUVBQUFQU0FBQUJ2d0FBQTlZQUFBUFdBQUFCd2dBQUJBQUFBQVNHQUFBQnd3QUFCSWdBQUFVVEFBQUNTZ0FBSGdBQUFCNEJBQUFDMWdBQUhqNEFBQjQvQUFBQzVnQUFIb0FBQUI2RkFBQUMrQUFBSHFBQUFCNzVBQUFEQWdBQUgwMEFBQjlOQUFBRFhBQUFJQUFBQUNBTEFBQURYZ0FBSUJBQUFDQVJBQUFEYWdBQUlCTUFBQ0FWQUFBRGJBQUFJQmNBQUNBZUFBQURid0FBSUNBQUFDQWlBQUFEZHdBQUlDVUFBQ0FuQUFBRGVnQUFJREFBQUNBd0FBQURmUUFBSURJQUFDQXpBQUFEZmdBQUlEa0FBQ0E2QUFBRGdBQUFJRHdBQUNBOEFBQURnZ0FBSUVRQUFDQkVBQUFEZ3dBQUlIUUFBQ0IwQUFBRGhBQUFJSDhBQUNCL0FBQURoUUFBSUtNQUFDQ2tBQUFEaGdBQUlLWUFBQ0NzQUFBRGlBQUFJTEVBQUNDeEFBQURqd0FBSUxrQUFDQzZBQUFEa0FBQUlMd0FBQ0M5QUFBRGtnQUFJUVVBQUNFRkFBQURsQUFBSVJNQUFDRVRBQUFEbFFBQUlSWUFBQ0VXQUFBRGxnQUFJU0lBQUNFaUFBQURsd0FBSVNZQUFDRW1BQUFCbVFBQUlTNEFBQ0V1QUFBRG1BQUFJVnNBQUNGZUFBQURtUUFBSWdJQUFDSUNBQUFEblFBQUlnWUFBQ0lHQUFBQmhRQUFJZzhBQUNJUEFBQURuZ0FBSWhFQUFDSVNBQUFEbndBQUlob0FBQ0lhQUFBRG9RQUFJaDRBQUNJZUFBQURvZ0FBSWlzQUFDSXJBQUFEb3dBQUlrZ0FBQ0pJQUFBRHBBQUFJbUFBQUNKZ0FBQURwUUFBSW1RQUFDSmxBQUFEcGdBQUpjb0FBQ1hLQUFBRHFBQUE3Z0VBQU80Q0FBQURxUUFBOXNNQUFQYkRBQUFEcXdBQSt3RUFBUHNFQUFBRHJRQUEvdjhBQVA3L0FBQURzd0FBLy93QUFQLzlBQUFEdExBQUxFdXdDVkJZc1FFQmpsbTRBZitGc0lRZHNRa0RYMTR0c0FFc0lDQkZhVVN3QVdBdHNBSXNzQUVxSVMyd0F5d2dSckFESlVaU1dDTlpJSW9naWtsa2lpQkdJR2hoWkxBRUpVWWdhR0ZrVWxnalpZcFpMeUN3QUZOWWFTQ3dBRlJZSWJCQVdSdHBJTEFBVkZnaHNFQmxXVms2TGJBRUxDQkdzQVFsUmxKWUk0cFpJRVlnYW1Ga3NBUWxSaUJxWVdSU1dDT0tXUy85TGJBRkxFc2dzQU1tVUZoUldMQ0FSQnV3UUVSWkd5RWhJRVd3d0ZCWXNNQkVHeUZaV1Myd0Jpd2dJRVZwUkxBQllDQWdSWDFwR0VTd0FXQXRzQWNzc0FZcUxiQUlMRXNnc0FNbVUxaXdRQnV3QUZtS2lpQ3dBeVpUV0NNaHNJQ0tpaHVLSTFrZ3NBTW1VMWdqSWJEQWlvb2JpaU5aSUxBREpsTllJeUc0QVFDS2lodUtJMWtnc0FNbVUxZ2pJYmdCUUlxS0c0b2pXU0N3QXlaVFdMQURKVVc0QVlCUVdDTWh1QUdBSXlFYnNBTWxSU01oSXlGWkd5RlpSQzJ3Q1N4TFUxaEZSQnNoSVZrdHNBb3NzQ2xGTGJBTExMQXFSUzJ3REN5eEp3R0lJSXBUV0xsQUFBUUFZN2dJQUloVVdMa0FLUVBvY0ZrYnNDTlRXTEFnaUxnUUFGUll1UUFwQStod1dWbFpMYkFOTExCQWlMZ2dBRnBZc1NvQVJCdTVBQ29ENkVSWkxiQU1LN0FBS3dDeUFRMENLd0d5RGdFQ0t3RzNEam93SlJzUUFBZ3JBTGNCT0M0a0doRUFDQ3UzQWs1QU1pTVZBQWdydHdOSU95NGhGQUFJSzdjRVRrQXlJeFVBQ0N1M0JUQW9IeFlPQUFncnR3WmpVVDh0R3dBSUs3Y0hRRFFrR2hFQUNDdTNDRnRLT2lrWkFBZ3J0d21EWkU0Nkl3QUlLN2NLZDJKTU5pRUFDQ3UzQzVGM1hEb2pBQWdydHd4MllFczJIUUFJSzdjTkxDUWNGQXdBQ0NzQXNnOE5CeXV3QUNCRmZXa1lSTEt3RXdGenNsQVRBWFN5Z0JNQmRMSndFd0Yxc2c4ZkFYT3lieDhCZFFBcUFNd0FrUUNlQUpFQTdBQnlBTElBZlFCV0FGOEFUZ0JnQVFRQXhBQUFBQlQrWUFBVUFwc0FFUDg1QUEzK2x3QVNBeUVBQ3dRNkFCUUVqUUFRQmJBQUZBWVlBQlVHd0FBUUFsc0FFZ2NFQUFVQUFBQUFBQUFBQUFCZ0FHQUFZQUJnQUdBQW5RRElBVVlCMVFLREF4WURNUU5nQTRzRHZnUG1CQVVFSEFSRkJGd0V2UVRzQlVVRndBWUdCbkVHNGdjUUI1a0lDQWdVQ0NBSVFRaHBDSW9JK1FtMUNmVUtZd3JEQ3hNTFZndU9DL2dNT3d4V0RKQU0yUXorRFZnTmxnMzZEa29PdFE4UkQ0Y1Bzdy81RUNvUWVSRERFUFVSTHhGVkVXd1JreEc2RWRVUjlSS0NFdTBUUXhPckZDY1VmeFVNRlZZVmxCWG1GaThXU3hiREZ4SVhiUmZhR0VzWWl4a0VHVndacWhuYUdpa2FjUnExR3U4YlBSdFVHNkliNXh2bkhDUWNpQnoySFdNZHloM3JIb3Nld2g5M0gvQWYvQ0FhSUNJZzVpRDlJVDhoaENIZElsSWljaUxFSXZNakZ5TkpJM2dqelNQWkkvTWtEU1FuSkpna3J5VEdKTjBrN3lVQ0pSVWxlaVdHSlowbHRDWExKZDRsOVNZTUppTW1OaWFqSnJVbXpDYmVKdkFuQWljVkoxRW56eWZtSi8wb0ZDZ3NLRU1vbXlrUUtTY3BQaWxVS1dvcGdpbWFLbjhxaXlxaUtya3F6eXJtS3Z3ckVpc3BLMEVydXl2UksrZ3IveXdWTENzc1BTeVpMUmN0TGkxQUxWRXRaQzEyTGRrdDZ5NENMaE11SlM0M0xxY3ZWaTlvTDNvdmpDK2RMNjh2d1MvVEwrUXYrekFITUhRdy9ERVRNU1F4TmpGSE1Wa3hhekhmTW40eWxUS21Ncmd5eVRMYk11d3kvak1RTXh3ekxqTkZNMWN6dWpRa05EWTBTRFJmTkhZMGlEU2FOS1Uwc0RUQ05OMDA2VFQxTlFjMUhqVXFOVFkxaERXYk5iSTF2alhLTmQ4MTd6WDdOZ2MyVXphVE5xbzJ2RGJJTnRRMjZ6YjhOd3czYURmTE45MDM3amdBT0JJNEpUZzRPTVk1Z3ptVk9hYzVzem0vT2RFNTRqbjBPZ1k2R0RvcE9qVTZRVHBUT21RNmNEcDhPcE02bnpybE8xZzdhanQ3TzQwN25qdXdPOEk3MVR2b08vczhEang1UFBJOUNUMGdQVGM5VFQxZ1BYYzlqajJnUGJJOXhEM1ZQZ28rZkQ3blAySS8xa0F6UUpsQXEwQzlRTTlBNWtEOVFRbEJGVUVzUVQ1QlZVRnNRWVJCbkVHMFFjeEI1RUg4UWhSQ0xFSkVRbHhDZEVLTVFwaENwRUt3UXJ4QzYwTlZRMkZEbkVQRVE4eEQvRVFpUkdGRWprVFZSUXRGVVVWd1JaQkZtVVhMUmYxR0hrWTNSb2xHbEVhY1JxaEd0RWJBUnN4RzJFYmtSdnBIQWtjS1J6RkhYa2RtUjI1SGRrZ0FTQWhJRUVnOVNFVklUVWlQU0pkSXgwalBTUTFKRlVrZFNadEpvMG9EU25KS2hVcVlTcXBLdkVyT1N0OUs5RXQrUy9sTUxVeXRUVDVObTAzcVRuRk9vazZxVHdWUERVOFZUNHhQbEUvc1VFOVF0MUVuVVc5UnVsSXFVakpTbEZNUFV5SlRORk5HVTFoVGFsUHFWRVJVVUZUUFZPWlUrVlZoVlhoVjkxWnRWblZXaUZhUVZ3NVhoVmZnVi9kWURsZ2dXRjlZWjFqRFdNdFkwMWtzV1RSWm9Wb3BXbVJhZGxwK1dzcGEwbHJhV3VKYTZscnlXdnBiQWx0SFc4SmJ5bHdDWEVsY2lWelZYVEJkbUYzcFhtbGU5VjlWWDExZjIyQmNZSU5nM0dEa1lWTmg2V0lrWWpaaWlHTFJZeHhqZFdOOVk2MWp0V1FMWkRoa1FHVGdaT2hsSUdWb1phaGw4R1pMWnJGbkFHZHpaLzVvWFdoMGFJWnBCV2tjYVlWcGpXbVZhYWhwc0dvcGFxQnJDbXNoYXpoclNXdUlhL2xzWld6U2JVQnR5MjVZYnFWdTlHOWhiOUJ3U0hDNmNVeHgzSEo1Y3loek1ITTRjN1YwSlhScGRLNTB4blRlZE9wMDluVnFkZGgyczNlSWVCaDRxSGtGZVY5NWszbXdlZWw2QUhvWGV2SjdZWHQ4ZTVkOEJIeHpmTTk5UzMxN2ZhVjk1bjRvZm9SKzAzN2ZmdXQrOTM4RGZ3OS9HMzkxZjh5QUxJQ0tnTnlCTTRFL2dVdUJtSUhwZ2srQ3FZTlVnKytEKzRRSGhCT0VINFFuaEMrRWU0VExoTmVFNDRVc2hYS0Zmb1dLaGVHR01ZWjJobjZIQUllTmg1bUhwWWV0aDcrSDBZZ3ppSTZJbW9pbWlRbUpaNGx6aVgrSmk0bVhpYU9KcjRtM2ljbUoyNG51aWdHS0NZb1JpaU9LTklxbmlxK0t3b3JVaXVlSytvc05peCtMaG92bmkvNk1GSXduakRxTVRZeGZqR2VNYjR5Q2pKU01wNHk1ak11TTNJenZqUUdORkkwc2pUK05VWTFkaldtTmhZMmhqYkNOd0kzTWpkaU9NbzZKanR5TzVJOU9qK2VRWTVEYWtVMlJ1NUl1a3AyVEVKT0NrK09VT3BTVGxPcVZiNVYzbFlPVmo1V2JsYWVWczVXL2xjdVYxNVhqbGUrVis1WUhsaG1XSzVZM2xrT1dUNVpibG5LV2hKYVFscHlXcUphMGxzYVcySmJrbHZDVy9KY0lseFNYSUpjeWwwT1hUNWRibDNLWGlaZWdsN2VYeXBmZGwrbVg5WmdCbUEyWUdaZ2xtRGVZU1poaG1IaVlrSmlubUwrWTFwanVtUVdaSUprNm1WS1phWmw4bVk2Wm9abXptY2FaMkpuem1nNmFHcG9tbWppYVNwcGNtbTJhaFpxY21yU2F5NXJqbXZxYkVwc3BtMFNiWHB0d200S2JqcHVhbTZhYnNwdkVtOWFiN3B3Rm5CMmNOSnhNbkdPY2U1eVNuSzJjeDV6ZW5QV2RESjBqblRxZFVaMW9uWDZkaXAyV25hS2RycDNGbmR5ZDg1NEtuaUdlT0o1UG5tYWVmWjZUbnArZXE1N0NudGllNUo3d253S2ZGSjhtbnplZlE1OXZuMitmYjU5dm4yK2ZiNTl2bjIrZmI1OXZuMitmYjU5dm4zZWZmNStKbjVPZm5aKzRuOXFmL0tBYm9EMmdTYUJWb0lpZ3lhRXVvVk9oWDZGdm9ZaWljcUtCb3BpaXRLTFJvdDJpOEtNRW8wK2pXNlBxcEpPbExxVTZwZ3ltZDZhUnB4aW4xS2czcUxpcEY2bU1xajJxcXF0SXE2bXNFNnd0ckVlc1lheDdyUFN0SEsxV3JXMnRvcTVCcm9pdS82OUFyMCt2WHErWHI2cXYxSy90ci9td2FMREtzWEt5RHJLYXMzQ3pjTFUydForMTZyWWJ0cGkyenJiNXQzTzMzcmhkdUtDNDVMa3N1WGE1N2Jwa3V5aTdmTHV2dkJ5OHJMelp2VUc5cXIzdnZtUyt2TDdtdnppL2ZML3R3RTNBdU1EUHdSckJTc0dOd2JuQ01jS013dS9EUGNPZXc5akVLOFJReEpYRXk4VG14VVBGcjhYcXhpL0dmY2JaeDJqSHBzZkZ5QlBJV3NpZ3lQN0pkTW5EeWlUS21jcmp5eFRMajh2eHpCN01xTXpaek8vTkJjMTZ6ZkRPU002S3p1YlBQYys2MEJ2UVdkQ3owUGZSUU5GNzBjTFIvZEkrMHByU3B0TDMwMi9UL05SYTFKL1ZKOVdPMWZmV1hOYnoxdi9YVXRlaDEvWFlQZGl4MlJyWmdOb0EycGpiSWR2RDNFVGNzZDBKM1hQZGU5M2Mza1hlczk4dDM3VGdGT0NENE5QaFB1R3Q0ZGppTStKaDRyN2pDT01jNHpEalF1Tlc0MmpqZitPVDQvYmtIZVNuNVJqbGR1Vis1WWJsanVXWjVhSG1EK1k2NW1YbWRlYU01cVBtdWViSzV0M204T2I4NXdqbkgrYzI1MHpuWHVkMDU0cm5vZWUwNThibjNlZnY2QURvRXVnbDZEem9ST2hNNkZUb1hPaGs2R3pvZnVpUDZLTG91ZWpQNk9IcFZlbG42WGpwaXVtYjZiSHB4K25ZNmVycVh1cDA2b1hxbCtxcDZyWHF5K3JkNnZUckJ1c1I2eUxyT2V0RjYxdnJaK3Q4NjRqcm4rdXI2OExyMCt2bDYvanNDdXdXN0Nmc09leEs3RmJzWit4ejdJbnNsZXltN0xmc3llemM3Ty90V2UxdzdZYnRtTzJ2N2NIdCsrNEg3aFB1SCs0cjdqZnVRKzVQN2xmdVgrNW43bS91ZCs1LzdvZnVqKzZYN3AvdXArNnY3cmZ1eXU3Yzd1N3ZBTzhJN3hEdkkrOHI3ejN2VCs5WDcxL3ZaKzl2NzRIdmllK1I3NW52b2UrcDc3SHZ1ZS9COEYzdzB2RTY4VUx4VHZGZzhYSHhlZkdGOFpIeG5mR3A4YlVBQUFBRkFHUUFBQU1vQmJBQUF3QUdBQWtBREFBUEFHK3lEQkFSRVJJNXNBd1FzQURRc0F3UXNBYlFzQXdRc0FuUXNBd1FzQTNRQUxBQVJWaXdBaThic1FJZlBsbXdBRVZZc0FBdkc3RUFEejVac2dRQ0FCRVNPYklGQWdBUkVqbXlCd0lBRVJJNXNnZ0NBQkVTT2JBSzNMSU1BZ0FSRWpteURRSUFFUkk1c0FJUXNBN2NNREVoSVJFaEF4RUJBUkVCQXlFQk5RRWhBeWo5UEFMRU52N3Uvcm9CRE9RQ0EvNytBUUw5L1FXdytxUUZCLzE5QW5mN0VRSjQvVjRDWG9nQ1hnQUNBRGYvN3dJZ0JiQUFBd0FPQUR1eUFnOFFFUkk1c0FJUXNBdlFBTEFBUlZpd0FpOGJzUUlmUGxtd0FFVllzQXd2RzdFTUR6NVpzZ2NOQ2l0WUlkZ2I5Rm13QWRDd0FTOHdNUUVqRXpNQk5EWTNOaFlVQmdjR0pnRld6Sno2L2hkTE9qbE9Tem8zVUFHdEJBUDZ2enRNQWdKS2Nrc0NBa2NBQUFJQW9RUDBBc0lHQUFBRUFBa0FKUUN3QUVWWXNBTXZHN0VESVQ1WnNBTFFzQUl2c0FmUXNBY3ZzQU1Rc0FqUXNBZ3ZNREVCQXlNVE13VURJeE16QVlkY2lsT3FBUTFjaWxPcUJXeitpQUlNbFA2SUFnd0FBZ0E3QUFBRTVRV3dBQnNBSHdDTkFMQUFSVml3REM4YnNRd2ZQbG13QUVWWXNCQXZHN0VRSHo1WnNBQkZXTEFDTHh1eEFnOCtXYkFBUlZpd0dpOGJzUm9QUGxteUhRd0NFUkk1c0IwdnNnQURDaXRZSWRnYjlGbXdCTkN3SFJDd0J0Q3dIUkN3QzlDd0N5K3lDQU1LSzFnaDJCdjBXYkFMRUxBTzBMQUxFTEFTMExBSUVMQVUwTEFkRUxBVzBMQUFFTEFZMExBSUVMQWUwREF4QVNNREl4TWpOek1USXpjaEV6TURNeE16QXpNSEl3TXpCeU1ESXdNekV5TUNsdE9ScXBIZUhQcHY2UndCQlpXcGxkU1VxWlRISE9SdTFCenhrYWtKMDIvVEFacitaZ0dhbmdFNW53R2cvbUFCb1A1Z24vN0hudjVtQWpnQk9RQUFBUUJDL3kwRVVRYWJBRFVBYjdJbk5qY1JFamtBc0FCRldMQVFMeHV4RUI4K1diQUFSVml3Snk4YnNTY1BQbG15QkNjUUVSSTVzQkFRc0EzUXNoVW5FQkVTT2JBUUVMSVlBUW9yV0NIWUcvUlpzQVFRc2g4QkNpdFlJZGdiOUZtd0p4Q3dLdEN5TGhBbkVSSTVzQ2NRc2pJQkNpdFlJZGdiOUZrd01RRTJKeVluSmlZbkpqYzJOelkzTnpNSEZoY1dCeU0ySmljbUJnY0dGeFlYRmhjV0J3WUhCZ2NISXpjbUp5WTNGd1lXRnhZM05nTCtDU2tvZGp0ZUpLb09DM0p4dFNpZEtaVktUQXJzQ1ZSWVhYd05DU2dvZEhVK3VBOExkM1c5Skp3bHAxbFlDZTBIWldOcVIwa0JnMHc0T1RFWk14eUJ6NnBzYlJYYTNpQjRlcjZBakFNQ2IyTk5OVFl6TkN5QzJxMXJhUlREeEJsNmViOEJnSVlDQWprNkFBVUF0Zi9uQlQ0RnlBQU5BQnNBS1FBM0FEc0FpYkluUEQwUkVqbXdKeEN3QmRDd0p4Q3dGdEN3SnhDd0s5Q3dKeEN3T05BQXNEZ3ZzRG92c0FCRldMQUFMeHV4QUI4K1diQUFSVml3SXk4YnNTTVBQbG13QUJDd0I5Q3dCeSt5RVFJS0sxZ2gyQnYwV2JBQUVMSVlBZ29yV0NIWUcvUlpzQ01Rc0J6UXNCd3ZzQ01Rc2kwQ0NpdFlJZGdiOUZtd0hCQ3lOQUlLSzFnaDJCdjBXVEF4QVJZV0J3Y0dCaWNtSmpjM05qWURCaFlYRmpZM056WW1KeVlHQndFV0ZnY0hCZ1luSmlZM056WTJBd1lXRnhZMk56YzJKaWNtQmdjRkp3RVhBZytEa2dnR0Q3bUNmcGtJQncyM0pBYzRPanhZQ3drSE9EczlXZ2dDdllLVENBWU91b0o4bWdZRkM3a2lCVG8zUFZVTUNnVTZOMEJZQ1AzeGVBTnZlQVhHQktxQVRZbW1CQUtxZjBxSnF2NkJRRmNDQWxkR1RrRllBZ0pkU3Y0Q0JLcCtUb2VwQkFLbWhFR09yZjZDUlZNQ0FsTkxUMGhRQWdKZFNPNVBCR2RQQUFNQUxmL3BCS0VGeUFBZUFDZ0FOQUJ5c2kwMU5oRVNPYkF0RUxBUjBMQXRFTEFoMEFDd0FFVllzQWt2RzdFSkh6NVpzQUJGV0xBWUx4dXhHQTgrV2JBQVJWaXdIQzhic1J3UFBsbXlFZ2tZRVJJNXNoVUpHQkVTT2JJZkFRb3JXQ0hZRy9SWnNpTUpHQkVTT2JJc0NSZ1JFam13Q1JDeU1nRUtLMWdoMkJ2MFdUQXhFelkzTnlZbU56WTJGeDRDQndZR0J3Y1ROamMzQWdjWElTY0dKeVltQlJZMk53TUhCZ2NHRmhNR0Z4YzNOamMySmlNaUJqZ014bkk5S0FRTTVLeGRsbEFGQldsMmVkWlRGY3NZb0tIKy9qMnd4N3ZzQWJkRWVEanpJb2tSREdod0NqQVhZNEVNQmtnM1NHUUJnYmFNUzNDTlA2clVCQU5Ta1ZkYW5WSlEvcng4a0FIKzhLMzZYM1lFQXQ0ZUFUUWpBWEVXWUhkZ2VBT2dSVndxUGxKcU9VbHBBQUVBa0FQOEFaWUdBQUFFQUJZQXNBQkZXTEFETHh1eEF5RStXYkFDMExBQ0x6QXhBUU1qRXpNQmdWU2RVYlVGZC82RkFnUUFBQUVBYVA0eEF5QUdZQUFSQUJDeUJoSVRFUkk1QUxBREw3QU1MekF4RXhJQU54Y0FBd1lIQmhJWEJ5WUNFelkzZ0RVQlQvZ2svcXBtSlFFQ1pHSTRxN2NJQWd3Q1RBRnRBamx1a1A3NC9jek92OHYrMFZlRmFnSEFBU3BnVmdBQi81VCtMd0pRQmw4QUR3QVFzZ2tRRVJFU09RQ3dDQyt3QUM4d01RTW5OaElUTnhBbk54WVdFZ2NDQWdCSEpkVHdHZ1RFT1hPalR3UUpzLzdlL2krS3BRSXZBWDk4QWFXc2hrYjkvcVMxL3VuOTlmNlhBQUVBWndKTEE2VUZzQUFPQUNBQXNBQkZXTEFFTHh1eEJCOCtXYkFBMEJtd0FDOFlzQW5RR2JBSkx4Z3dNUUVsTndVVE13TWxGd1VUQndNREp3Ri8vdWhQQVJjdHNFc0JMaGord1plVmZOeUdBOUZZb1hjQlhmNm9jTFJZL3ZGaUFTSCs3RzRBQUFFQVBRQ1NCQzRFdGdBTEFCb0FzQWt2c0FEUXNBa1FzZ1lCQ2l0WUlkZ2I5Rm13QTlBd01RRWhCeUVESXhNaE55RVRNd0s5QVhFbi9wQkw1MHorakNnQmNrYm5BeUhlL2s4QnNkNEJsUUFBQWYrSi9yZ0JGQURyQUFjQUdMSUhDQWtSRWprQXNBZ3ZzZ1FOQ2l0WUlkZ2I5Rmt3TVJNbk5qYzNNd2NHQ0g5Mkd5WFZHaWordUZDZWQ4Nmg5d0FCQURZQ0NRSllBczBBQXdBUkFMQUNMN0lCQVFvcldDSFlHL1JaTURFQklUY2hBalgrQVNNQi93SUp4QUFBQVFBdy8vSUJRd0VEQUFzQUlySUlEQTBSRWprQXNBQkZXTEFKTHh1eENROCtXYklERFFvcldDSFlHL1JaTURFM05EWTNOaFlWRkFZSEJpWXdUVHc3VDB3OU8wOTFQVTBDQWtzN09rMENBa29BQUFIL2YvK0RBNElGc0FBREFCTUFzQUF2c0FCRldMQUNMeHV4QWg4K1dUQXhGeU1CTTBQRUF6N0ZmUVl0QUFBQ0FHRC81d1E2QmNrQUVRQWdBRWF5RnlFaUVSSTVzQmNRc0FEUUFMQUFSVml3Q1M4YnNRa2ZQbG13QUVWWXNBQXZHN0VBRHo1WnNBa1FzaFlCQ2l0WUlkZ2I5Rm13QUJDeUhnRUtLMWdoMkJ2MFdUQXhCU1ltTnpZM0V4SUFGeFlXQndZSEJ3SUFFelkxSmljbUJnY0RCaGNVRnhZVEFkKzl3Z01CQ1NjeEFSamV2TU1EQVFrbk0vN3JpQTBGb0hxVUhpNE1BYVRpUVJRRS9lUktTZ0VFQVRJQkxnVUUrT1JMU2YzK3gvN05BNUJ5TU9JSEJiek4vc05uUE9vSERRRnVBQUVBN3dBQUEzZ0Z0UUFHQURrQXNBQkZXTEFGTHh1eEJSOCtXYkFBUlZpd0FDOGJzUUFQUGxteUJBQUZFUkk1c0FRdnNnTUJDaXRZSWRnYjlGbXlBZ01GRVJJNU1ERWhJeE1GTnlVekFvSHN5djZRSlFKQUpBU01ldGZNQUFBQkFBc0FBQVEvQmNjQUdBQlZzZ2taR2hFU09RQ3dBRVZZc0JBdkc3RVFIejVac0FCRldMQUFMeHV4QUE4K1diSURFQUFSRWptd0VCQ3lDQUVLSzFnaDJCdjBXYklNRUFBUkVqbXlGUkFBRVJJNXNBQVFzaGNCQ2l0WUlkZ2I5Rmt3TVNFaE53RTJOelltSnlZR0J3YytBaGNXRmdjR0J3Y0JJUVBDL0VrY0FsMnBFUTFhV20rWUVPd0tqKzJLdnQwTkVlUSsvbHNDaDdFQ1JhV0dYMzhFQkpOL0FZYldkd01FMUxMTTR6MytkQUFBQVFBbS8rZ0VPUVhGQUNvQVo3SUlLeXdSRWprQXNBQkZXTEFQTHh1eER4OCtXYkFBUlZpd0d5OGJzUnNQUGxtd0FkQ3dBUyt3RHhDeUJ3RUtLMWdoMkJ2MFdiQVBFTEFMMExBQkVMSXBBUW9yV0NIWUcvUlpzaFVwQVJFU09iQWJFTEFnMExBYkVMSWpBUW9yV0NIWUcvUlpNREVCRnpJMk56WW1KeVlHQndjK0FoY1dGZ2NHQmdjV0Z4VUdCQ2N1QWpjWEJoWVhGalkzTmlZbkp3R2dnWFdjQ3d0ZVhWNktEdTBKaU50L3crRU5CNFovclFzTi90bldlOFJwQk93RVoyTnRtUXdNYzJ5WkEwY0JmbWxqY1FJQ2NsMEJkYmhqQVFUYnVHU25QRkRHTU1UMEJBRm51M2dCWUhVREJJaHViM1FEQVFBQUFnQUpBQUFFS2dXd0FBb0FEZ0JKQUxBQVJWaXdDUzhic1FrZlBsbXdBRVZZc0FRdkc3RUVEejVac2dFSkJCRVNPYkFCTDdJQ0FRb3JXQ0hZRy9SWnNBYlFzQUVRc0F2UXNnZ0dDeEVTT2JJTkNRUVJFamt3TVFFekJ5TURJeE1oTndFekFTRVRCd042c0NLdk9lMDQvWjRWQXdMOS9RY0JhWEVZQWdmRC9yd0JSS0FEelB4WEFtTWlBQUFCQUZyLzV3UnpCYkFBSFFCcXNob2VIeEVTT1FDd0FFVllzQUV2RzdFQkh6NVpzQUJGV0xBTkx4dXhEUTgrV2JBQkVMSURBUW9yV0NIWUcvUlpzZ2NCRFJFU09iQUhMN0lhQVFvcldDSFlHL1Jac2dVSEdoRVNPYkFORUxJVUFRb3JXQ0hZRy9SWnNoRVVHaEVTT2JJZEdoUVJFamt3TVJNVElRY2hBell6RmhJSEJnQW5KaVluTXhZV0Z4WTJOelltSnlZR0I3cS9Bdm9oL2M5blpuaTV4eElTL3R6WHR1TUc0d2RsVzIrWER3eHFhVUJsTUFMVkF0dlMvcU02QXY3MDFkdis2Z1FFNHJsbWN3SURxSXg4bVFJQ0xTZ0FBZ0JqLytnRUV3VzRBQmNBSlFCYnNoa21KeEVTT2JBWkVMQUcwQUN3QUVWWXNBQXZHN0VBSHo1WnNBQkZXTEFQTHh1eER3OCtXYkFBRUxJQ0FRb3JXQ0hZRy9SWnNnY0FEeEVTT2JBSEw3SVlBUW9yV0NIWUcvUlpzQThRc2lBQkNpdFlJZGdiOUZrd01RRUhKeVlFQnpZWEhnSUhEZ0luSmlZbkpqY1NBQ0VCSmdZSEJoY1VGaGNXTmpjMkpnUE1GQTNBL3VaUWhLbDFwRXdNREk3bGlLM1lEd2tnUVFHcEFVait0RkNNTUFzQlhsaHNsdzhOWUFXNHlnRUMwOWFBQkFKLzNZS083WUVEQk83Q2E3TUJaUUdXL1VrQ1dWSmxLNENXQWdPb2lIK2lBQUVBaGdBQUJKd0ZzQUFHQURJQXNBQkZXTEFGTHh1eEJSOCtXYkFBUlZpd0FTOGJzUUVQUGxtd0JSQ3lBd0VLSzFnaDJCdjBXYklBQXdVUkVqa3dNUUVCSVFFaE55RUVoZjBFL3YwQytmMHFId1BVQlIzNjR3VHR3d0FBQXdBNy8rZ0VSUVhJQUJZQUlnQXVBR3V5R2k4d0VSSTVzQm9Rc0JMUXNCb1FzQ2ZRQUxBQVJWaXdFeThic1JNZlBsbXdBRVZZc0Fndkc3RUlEejVac0N6UXNDd3ZzaG9CQ2l0WUlkZ2I5Rm15QWl3YUVSSTVzZzBhTEJFU09iQUlFTElnQVFvcldDSFlHL1Jac0JNUXNpWUJDaXRZSWRnYjlGa3dNUUVHQnhZV0J3WUVKeVltTnpZbEppWTNOaVFYSGdJQk5pWW5KZ1lIQmhZWEZqWVROaVluSmdZSEJoWVhGallFUEJMdVdWY0lEZjdnMWNMbERSSUJFVXRJQmc0QkRNZDN0VnIrdFF0a1htcVdEQXRtWFd5VFlBbFZVMXVCQ3dsV1VWeUJCRGpaZHptd2FzRHRCQVRmdGZOOU5xRmN2T1VFQTJTMC9QaGxnd0lDajIxbmV3SUNpZ0w3V25ZQ0FvQm1YbklDQW9JQUFBSUFqdi81QkM4RnlBQVlBQ1lBV0xJWkp5Z1JFam13R1JDd0ZkQUFzQUJGV0xBTkx4dXhEUjgrV2JBQVJWaXdGaThic1JZUFBsbXlBQUVLSzFnaDJCdjBXYklGRmcwUkVqbXdCUyt5R1FFS0sxZ2gyQnYwV2JBTkVMSWhBUW9yV0NIWUcvUlpNREUzRmlRM0JpY3VBamMrQWhjZUFoY1dCd0lBSVNNM0FSWTJQd0kySmljbUJoY1dGdmZVQVFwQ2lKaHhwbElNRFkva2gzV3RZQWNGSEVEK1hQNjhGaE1CU2txRU1BMEVBMWhZZmFBUEIxckNBdEhSaEFJQ2QrQ0lrZktFQkFOeDBZRnJvUDZPL25qS0Fkb0NWVXRoUm9LWkJBVDRxRmxzLy84QUsvL3lBZEFFVkFBbUFCTDdBQUFIQUJJQWpRTlIvLy8vbXY2NEFid0VWQUFuQUJJQWVRTlJBQVlBRUJFQUFBRUFNZ0NxQThNRVZBQUdBQmV5QUFjSUVSSTVBTEFBUlZpd0JTOGJzUVViUGxrd01RRUZCd0UzQVFjQk1nSVdLZjBUSWdOdkxRSnk0T2dCZGNFQmRQNEFBQUlBWWdGa0JCUUQxZ0FEQUFjQUpRQ3dCeSt3QTlDd0F5K3lBQUVLSzFnaDJCdjBXYkFIRUxJRUFRb3JXQ0hZRy9SWk1ERUJJVGNoQXlFM0lRUHgvTG9rQTBWdC9Mc2pBMFlERE1yOWpza0FBUUF2QUo4RDJRUkpBQVlBRjdJQUJ3Z1JFamtBc0FCRldMQUNMeHV4QWhzK1dUQXhBU1UzQVFjQk53TGIvYzhvQXdjaS9IZ3NBb0hqNWY2THdmNk0rZ0FBQWdDVi8vRUQzd1hKQUJnQUpBQmVzaDRsSmhFU09iQWVFTEFLMEFDd0FFVllzQkF2RzdFUUh6NVpzQUJGV0xBaUx4dXhJZzgrV2JJY0RRb3JXQ0hZRy9SWnNBRFFzQUF2c2dRUUFCRVNPYkFRRUxJSkFRb3JXQ0hZRy9SWnNnMFFJaEVTT2JJVkFCQVJFamt3TVFFK0FqYzJKeVltSnlZR0J3YzJKQmNXRmdjR0J3Y0dCd0UwTmpjMkZoVVVCaU1HSmdFL0RGM0xIMTRTQ0VnNVVuRVI3QkVCQUw2eHlnNFB2WHBlRlA3V1N6bzRUazgyT0U0QnEzMndyQ1JzZGpROUFRSmpWUUd5MGdRRXpxcXhvMlpXamY3Rk8wd0NBa281UFVrQ1J3QUFBZ0F5L2pzR3BBV1RBRHNBUndCOHNoNUlTUkVTT2JBZUVMQkYwQUN3S3krd05DK3dBRVZZc0FBdkc3RUFEejVac0FCRldMQUZMeHV4QlE4K1diSUROQUFSRWpteUREUUFFUkk1c0F3dnNBQVFzajRFQ2l0WUlkZ2I5Rm13Rk5Dd05CQ3lIUUlLSzFnaDJCdjBXYkFyRUxJbUJBb3JXQ0hZRy9SWnNBd1Fza1FFQ2l0WUlkZ2I5Rmt3TVFVbUppY0dKeVltTnpZU05oY1dGaGNEQndZV0Z4WTJFamMySmljbUp5WUVBZ0lIQmhJV0Z4WTNGd1lqSmlRQ0p5WVNBQ1FYRmdRU0Z4WUNCZ0VHRnhZMk54TW1KeVlHQndTbVRYWVVnNHR5ZWdrSG4rS0VWWVZEaGdnSEtDOVppVllIQkRzOGZmS24vdHJyaFFjSWFkdWZwcTBiaXVYRC90MmNCQVNlQVNBQmI4bkFBUnFhQkFTQjUvMWpCV280ZHgyQkxTbUNzU1FWQWtwT25BTUN0YUNoQVUrdUFnSTVNUDNKUEQ5SkFnU1FBUk9zaHRaSGtnUURrZjdmL291K3JmNzBpd0VDUzR4V0FhUUJPTlBkQWNBQldyRURBNkwreWNqVC9wTEVBVXlpQXdOclRBSHhFUUlGKytVQUFBTC9wQUFBQks0RnNBQUhBQW9BUmdDd0FFVllzQVF2RzdFRUh6NVpzQUJGV0xBQ0x4dXhBZzgrV2JBQVJWaXdCaThic1FZUFBsbXlDUVFDRVJJNXNBa3ZzZ0FCQ2l0WUlkZ2I5Rm15Q2dRQ0VSSTVNREVCSVFNaEFUTUJJd0VoQXdOOS9kK3UvdllERXQ0Qkd2aitEZ0dZWXdGVC9xMEZzUHBRQWg4Q1dnQUFBd0FuQUFBRXZBV3dBQTBBRmdBZUFHbXlHQjhnRVJJNXNCZ1FzQTNRc0JnUXNCRFFBTEFBUlZpd0FpOGJzUUlmUGxtd0FFVllzQUF2RzdFQUR6NVpzQmZRc0JjdnNwOFhBVjJ5RGdFS0sxZ2gyQnYwV2JJSERoY1JFam13QUJDeUVBRUtLMWdoMkJ2MFdiQUNFTElkQVFvcldDSFlHL1JaTURFekV3VVdGZ2NHQnhZV0J3WUVJd01EQlRJMk56WW1KeVVYTWpZM05pY2xKLzBCdit6dERoTHhXbUlIRHY3YjhLMVBBUU4xcEE4T1dtaisrT042bWc0WjF2Ny9CYkFCQWN1MDFHc2dxbmJJNkFLUi9qa0JmR3huZEFTN0FYUmp1d2NCQUFFQVpmL29CUTBGeHdBZUFFNnlDeDhnRVJJNUFMQUFSVml3REM4YnNRd2ZQbG13QUVWWXNBTXZHN0VERHo1WnNnQU1BeEVTT2JJUURBTVJFam13REJDeUV3RUtLMWdoMkJ2MFdiQURFTEljQVFvcldDSFlHL1JaTURFQkJnQW5MZ0luSmhJU0pCY1dFaGNqSmlZbkpnWVBBZ1lXRmhjRUV3U3FKZjZ3OFl2UmRnY0dSTUVCR2F6Wi9RajFCWGwzbzl3bUZBa0lMWEpZQVJkUEFkdmsvdkVFQTM3eG1ISUJpUUU0bmdNRS92ZnBuSXNEQmZUcGhXWm50VjhEQ3dFdEFBSUFKd0FBQk9BRnNBQUxBQllBUnJJS0Z4Z1JFam13Q2hDd0Q5QUFzQUJGV0xBQkx4dXhBUjgrV2JBQVJWaXdBQzhic1FBUFBsbXdBUkN5REFFS0sxZ2gyQnYwV2JBQUVMSU9BUW9yV0NIWUcvUlpNREV6RXdVeUJCSUhCd1lDQkNNVEF4Y3lKRGMySnlZbUp5ZjhBWXEyQVFkMkZ3c2V6ZjY4d2lxMmtzWUJCU1VhQndtWGhnV3dBYlgrd2NCUHlmN0pyQVRrKytZQis5MlljWkdrQkFBQkFDY0FBQVM2QmJBQUN3Qk9BTEFBUlZpd0JpOGJzUVlmUGxtd0FFVllzQVF2RzdFRUR6NVpzZ3NHQkJFU09iQUxMN0lBQVFvcldDSFlHL1Jac0FRUXNnSUJDaXRZSWRnYjlGbXdCaEN5Q0FFS0sxZ2gyQnYwV1RBeEFTRURJUWNoRXlFSElRTWhBOVA5dkU0Q3BpUDhZL3dEbHlUOVlVWUNSUUtLL2tES0JiRE0vbTRBQUFFQUp3QUFCS2NGc0FBSkFFQUFzQUJGV0xBRUx4dXhCQjgrV2JBQVJWaXdBaThic1FJUFBsbXlDUVFDRVJJNXNBa3ZzZ0FCQ2l0WUlkZ2I5Rm13QkJDeUJnRUtLMWdoMkJ2MFdUQXhBU0VESXhNaEJ5RURJUVBCL2Nocjkvd0RoQ1Q5ZEVzQ09RSnAvWmNGc016K1R3QUJBR3YvNmdVV0JjZ0FJUUJic2g4aUl4RVNPUUN3QUVWWXNBMHZHN0VOSHo1WnNBQkZXTEFETHh1eEF3OCtXYkFORUxBUTBMQU5FTElUQVFvcldDSFlHL1Jac0FNUXNoc0JDaXRZSWRnYjlGbXlJQTBERVJJNXNDQXZzaDhCQ2l0WUlkZ2I5Rmt3TVNVR0JDY3VBaWNtRWhJM05oY1dGaGNuQWljbUJnY0dCd1lXRnhZM0V5RTNJUVNRVVA3Y3RKRGNnUWtIUUtWMm9NN2I5eER2RnVPcTJ5Z1hBZ2FQaWE5eE52N2NJZ0lYdldockFnRi84NXQ0QVhRQklWSnZCQVQwM0FFQkFRY0YrZXVKVjdQT0FnUmJBUjNBQUFFQUp3QUFCWWNGc0FBTEFGT3lCd3dORVJJNUFMQUFSVml3Qmk4YnNRWWZQbG13QUVWWXNBb3ZHN0VLSHo1WnNBQkZXTEFBTHh1eEFBOCtXYkFBUlZpd0JDOGJzUVFQUGxteUNRWUFFUkk1c0FrdnNnSUJDaXRZSWRnYjlGa3dNU0VqRXlFREl4TXpBeUVUTXdTSzluRDlpbkQzL2ZkcUFuWnA5d0tIL1hrRnNQMmlBbDRBQVFBMUFBQUNLQVd3QUFNQUhRQ3dBRVZZc0FJdkc3RUNIejVac0FCRldMQUFMeHV4QUE4K1dUQXhJU01UTXdFcjl2MzJCYkFBQVFBRC8rY0VZUVd3QUE0QU5ySU1EeEFSRWprQXNBQkZXTEFBTHh1eEFCOCtXYkFBUlZpd0JTOGJzUVVQUGxteUNBQUZFUkk1c2dzQkNpdFlJZGdiOUZrd01RRXpBd1lFSnlZbU54Y0dGeFkyTndOcjlxNGYvdVBSek5jSzlnN0FaSThWQmJEOEE5VDRCQVRxeHdIbEJBU0dlZ0FCQUNjQUFBVnhCYkFBREFCVEFMQUFSVml3QkM4YnNRUWZQbG13QUVWWXNBZ3ZHN0VJSHo1WnNBQkZXTEFDTHh1eEFnOCtXYkFBUlZpd0N5OGJzUXNQUGxteUFBUUNFUkk1dEdvQWVnQUNYYklHQkFJUkVqbTBaUVoxQmdKZE1ERUJCd01qRXpNRE53RWhBUUVoQWpQSVRmZjk5M1daQWZZQlBQMTRBWm4rN0FKenQvNUVCYkQ5WTU4Qi92MXYvT0VBQUFFQUp3QUFBOE1Gc0FBRkFDZ0FzQUJGV0xBRUx4dXhCQjgrV2JBQVJWaXdBaThic1FJUFBsbXlBQUVLSzFnaDJCdjBXVEF4SlNFSElSTXpBVUVDZ2lUOGlQMzN5c29Gc0FBQUFRQW5BQUFHemdXd0FBNEFiZ0N3QUVWWXNBQXZHN0VBSHo1WnNBQkZXTEFDTHh1eEFoOCtXYkFBUlZpd0JDOGJzUVFQUGxtd0FFVllzQWd2RzdFSUR6NVpzQUJGV0xBTUx4dXhEQTgrV2JJQkFBUVJFam0wWlFGMUFRSmRzZ2NBQkJFU09iUnFCM29IQWwyeUNnQUVFUkk1dEdvS2Vnb0NYVEF4QVJNQklRTWpFeE1CSXdzQ0l4TUNYdFVDVndGRS9QWlZnZjJvc3Q5YlVmYjlCYkQ3cGdSYStsQUI3UUpmKzdRRWJmMW0vaTBGc0FBQUFRQW5BQUFGaGdXd0FBa0FUTElCQ2dzUkVqa0FzQUJGV0xBRkx4dXhCUjgrV2JBQVJWaXdDQzhic1FnZlBsbXdBRVZZc0FBdkc3RUFEejVac0FCRldMQURMeHV4QXc4K1diSUNCUUFSRWpteUJ3VUFFUkk1TURFaEl3RURJeE16QVJNekJJbnYvam0xOS8zdkFjZTI5Z1FUKyswRnNQdnBCQmNBQUFJQWEvL25CU0VGeUFBU0FDSUFScklaSXlRUkVqbXdHUkN3QU5BQXNBQkZXTEFLTHh1eENoOCtXYkFBUlZpd0FDOGJzUUFQUGxtd0NoQ3lHQUVLSzFnaDJCdjBXYkFBRUxJZkFRb3JXQ0hZRy9SWk1ERUZMZ0luSmhJU056WVhGZ0FYRmdJQ0J3WVROelltSmljbUJnSUhCaFlYRmhJM0FsZU8xM2dJQnp1WGFhM2oyQUVCREFZNWkyZXkyZ2tHTW5kYmZzTjVDZ3FFaEszaEl4UURndmVkZlFGT0FSTlhqZ1FFL3Q3M2ZQNi8vdk5hbkFNWWFtMjVZUU1FbHY3TzU3ZlNCQVVCRHZVQUFnQW5BQUFGQkFXd0FBb0FFd0JOc2dvVUZSRVNPYkFLRUxBTTBBQ3dBRVZZc0FNdkc3RURIejVac0FCRldMQUJMeHV4QVE4K1diSUxBUU1SRWptd0N5K3lBQUVLSzFnaDJCdjBXYkFERUxJVEFRb3JXQ0hZRy9SWk1ERUJBeU1UQlRJRUJ3WUVJeVVGTWpZM05pWW5KUUY4WHZmOUFmamtBUVFSRXY3SysvN3ZBUnVHcXhFT2IzRCt6QUlkL2VNRnNBSDV6ZFQ1ekFLSWVtK0hCUUVBQUFJQVpQOEVCUm9GeUFBV0FDWUFScklESnlnUkVqbXdBeEN3Sk5BQXNBQkZXTEFPTHh1eERoOCtXYkFBUlZpd0JTOGJzUVVQUGxtd0RoQ3lIQUVLSzFnaDJCdjBXYkFGRUxJakFRb3JXQ0hZRy9SWk1ERWxGd2NsQmljbUFDY21FaEkzTmhjZUFoY1dCd2NDQXpjMkppWW5KZ0lEQmhZV0Z4WVNOd09yMEs3L0FGQXYxZjc5REFZN25YT28ySkRXZWdjRUNndytyUWtHTTNoYnhQRU9CalIzV2FYaUtGYklpdlFNQVFJQkpQWjlBVWtCSGxtQ0JBT0MrNXhXVmxmK2JnSHRhbTY0WUFNRy9wZit1Rys2WVFNSEFRRHpBQUFDQUNjQUFBVFlCYkFBRGdBWEFGcXlCUmdaRVJJNXNBVVFzQkRRQUxBQVJWaXdCQzhic1FRZlBsbXdBRVZZc0FJdkc3RUNEejVac2c4Q0JCRVNPYkFQTDdJQkFRb3JXQ0hZRy9SWnNnc0JEeEVTT2JBQ0VMQU8wTEFFRUxJWEFRb3JXQ0hZRy9SWk1ERUJJUU1qRXdVeUZnY0dCZ2NUQnlFQkZ6STJOelltSnlVQ2x2N3FZdmY5QWN2dC9CRUxwcGJYQWY3Ni9sTHZnYTBQRDI1dy92Z0NNZjNQQmJBQjVNdU56enY5cGc4Qy9BS0hkSEY1QkFFQUFRQWsvK29FdXdYSEFDa0FZYklES2lzUkVqa0FzQUJGV0xBS0x4dXhDaDgrV2JBQVJWaXdIeThic1I4UFBsbXlBeDhLRVJJNXNBb1FzQTdRc0FvUXNoSUJDaXRZSWRnYjlGbXdBeEN5R0FFS0sxZ2gyQnYwV2JBZkVMQWswTEFmRUxJbkFRb3JXQ0hZRy9SWk1ERUJOaWNuSmlZM1BnSVhIZ0lISnpZbUp5WUdCd1lYRnhZV0J3NENKeTRDTnhjR0ZoY1dOZ05NRnJOUjRyNEpDSm42allqVWNBVDJCM04wZGFFT0ZMNUw1YllMQ283N2w0L3BmQVgzQ0lxQmVLRUJmcEJHSGsvWWozeTlaZ01EY2NtQkFYSitBd0p5WVg5SkcxTGRsM3UzWkFJQmR0R0ZBWHlHQWdKcUFBQUJBSndBQUFVaUJiQUFCd0F1QUxBQVJWaXdCaThic1FZZlBsbXdBRVZZc0FJdkc3RUNEejVac0FZUXNnQUJDaXRZSWRnYjlGbXdCTkF3TVFFaEF5TVRJVGNoQlA3K1NObjIydjVMSkFSaUJPVDdIQVRrekFBQUFRQmIvK1lGTHdXd0FCSUFQTElQRXhRUkVqa0FzQUJGV0xBQUx4dXhBQjgrV2JBQVJWaXdDUzhic1FrZlBsbXdBRVZZc0FRdkc3RUVEejVac2c0QkNpdFlJZGdiOUZrd01RRURCZ0FuSmdJM054TXpBd1lXRnhZMk54TUZMNlVpL3JYcjJ2MExBNlgycFJKMmU0ZTBHYWNGc1B3ejZmN3NCQVFCQU00bUE4NzhNWXVjQkFTYWtBUFVBQUFCQUpzQUFBV0JCYkFBQmdBNHNnQUhDQkVTT1FDd0FFVllzQUV2RzdFQkh6NVpzQUJGV0xBRkx4dXhCUjgrV2JBQVJWaXdBeThic1FNUFBsbXlBQUVERVJJNU1ERUJBU0VCSXdFaEFsRUNHQUVZL1NEdi91a0JCZ0UvQkhINlVBV3dBQUVBdHdBQUJ6b0ZzQUFNQUdDeUJRME9FUkk1QUxBQVJWaXdBUzhic1FFZlBsbXdBRVZZc0Fndkc3RUlIejVac0FCRldMQUxMeHV4Q3g4K1diQUFSVml3QXk4YnNRTVBQbG13QUVWWXNBWXZHN0VHRHo1WnNnQUJBeEVTT2JJRkFRTVJFam15Q2dFREVSSTVNREVCQVRNQkl3TUJJd016RXdFekJMc0JoUHY5MXV4bC9ranVZdTh3QWJmUEFXb0VSdnBRQkNUNzNBV3crNzhFUVFBQUFmL0RBQUFGUndXd0FBc0FVd0N3QUVWWXNBRXZHN0VCSHo1WnNBQkZXTEFLTHh1eENoOCtXYkFBUlZpd0JDOGJzUVFQUGxtd0FFVllzQWN2RzdFSER6NVpzZ0FCQkJFU09iSUdBUVFSRWpteUF3QUdFUkk1c2drR0FCRVNPVEF4QVFFaEFRRWhBd0VoQVFFaEFxTUJlZ0VxL2RzQlB2N3UzUDU4L3RVQ01mN0pBUkFEb3dJTi9TUDlMUUlWL2VzQzZRTEhBQUVBb1FBQUJVMEZzQUFJQURFQXNBQkZXTEFCTHh1eEFSOCtXYkFBUlZpd0J5OGJzUWNmUGxtd0FFVllzQVF2RzdFRUR6NVpzZ0FCQkJFU09UQXhBUUVoQVFNakV3RWhBbk1CdkFFZS9YNWIrR0QreVFFRkF3QUNzUHhiL2ZVQ0pRT0xBQUFCLytVQUFBVG5CYkFBQ1FCRUFMQUFSVml3Qnk4YnNRY2ZQbG13QUVWWXNBSXZHN0VDRHo1WnNnQUJDaXRZSWRnYjlGbXlCQUFDRVJJNXNBY1FzZ1VCQ2l0WUlkZ2I5Rm15Q1FVSEVSSTVNREVsSVFjaE53RWhOeUVIQVRvQzdDVDc0eDhEamYweUpBUUFIc3JLc0FRMHpLd0FBQUgvNy82OEFyVUdqZ0FIQUNJQXNBUXZzQWN2c2dBQkNpdFlJZGdiOUZtd0JCQ3lBd0VLSzFnaDJCdjBXVEF4QVNNRE13Y2hBU0VDbDUvK29CNytjd0U1QVkwRjBQbXB2UWZTQUFBQkFLei9nd0xJQmJBQUF3QVRBTEFDTDdBQVJWaXdBQzhic1FBZlBsa3dNUk16QVNPczRBRTg0QVd3K2RNQUFmOTYvcndDUXdhT0FBY0FKUUN3QWkrd0FTK3dBaEN5QlFFS0sxZ2gyQnYwV2JBQkVMSUdBUW9yV0NIWUcvUlpNREVUSVFFaE56TVRJN1FCai83SC9uQWVvdjZqQm83NExyMEdWd0FBQVFCRUF0a0RMZ1d3QUFZQUo3SUFCd2dSRWprQXNBQkZXTEFETHh1eEF4OCtXYkFBMExJQkJ3TVJFam13QVMrd0JkQXdNUUVESXdFekV5TUNGUDNUQWFDbm83MEVwUDQxQXRmOUtRQUFBZjk1LzBFREZnQUFBQU1BR3dDd0FFVllzQU12RzdFRER6NVpzZ0FCQ2l0WUlkZ2I5Rmt3TVFVaE55RUM5UHlGSWdON3Y3OEFBUURLQk5FQ1ZnWUFBQU1BSkFDd0FTK3lEd0VCWGJBRDBMQURMN1FQQXg4REFsMnlBQUVERVJJNUdiQUFMeGd3TVFFakF6TUNWclhYL2dUUkFTOEFBQUlBSXYvb0E5d0VVQUFnQUNzQWhiSUtMQzBSRWptd0NoQ3dKdEFBc0FCRldMQVlMeHV4R0JzK1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNBUXZHN0VFRHo1WnNnSUVHQkVTT2JJS0dBQVJFam13Q2krd0dCQ3lFQWNLSzFnaDJCdjBXYklUQ2hBUkVqbEFDUXdUSEJNc0V6d1RCRjJ3QkJDeUlRRUtLMWdoMkJ2MFdiQUtFTEltQndvcldDSFlHL1JaTURFaEpqY0dKeVltTnpZa014YzNOaWNtSnlZR0J3YytBaGNXRmdjREJ3WVhCeVVXTmpjM0p5SUdCd1lXQXBNTUFvYWJqYmtHQ0FFWTdKb09CZ1lVZTB4ekRlMEhnTlIyc2NZUlV3Z0RFZ0grSVV1QUxTVnhocUFMQ0Vzb1BYMEVBckdJcThRQ1NpY2liQU1DVVVRQ1pKZFVBZ1ROby80RldqczRFcTRDU1RyTkFXVllRMDBBQUFJQUVQL29CQThHQUFBUkFCNEFaTElFSHlBUkVqbXdCQkN3RzlBQXNBa3ZzQUJGV0xBTkx4dXhEUnMrV2JBQVJWaXdCeThic1FjUFBsbXdBRVZZc0FRdkc3RUVEejVac2dZTkJ4RVNPYklMRFFjUkVqbXdEUkN5RlFFS0sxZ2gyQnYwV2JBRUVMSWFBUW9yV0NIWUcvUlpNREVCQmdJR0p5WW5CeU1CTXdNMkZ4WVdGeFluTkNZbkpnY0RGaGNXTmpjMkJBY1VpY3QvdFZ3bTJRRUs3bXg1cHAyeEJRSHNXbFdQWTA0c2tYaWJGZ2dDR0tYKzlZQURCSWQyQmdEOTBZRUVCTjdCUEM5dGV3SUVqdjVBaUFVRHZxMVZBQUFCQURqLzZRUHVCRklBSEFCTHNnQWRIaEVTT1FDd0FFVllzQkV2RzdFUkd6NVpzQUJGV0xBSUx4dXhDQTgrV2JJQUFRb3JXQ0hZRy9SWnNnUVJDQkVTT2JJVkNCRVJFam13RVJDeUdBRUtLMWdoMkJ2MFdUQXhKUlkyTnpjT0FpY3VBamMzUGdJWEZoWVZJelFtSnlZR0J3SUI2RldERXVBTGhkQnhpOFJhRHdNUmxleVFzTkxlVzFhTG9BWUhyUUpuVXdGcnNHSURBb3ozbUNPZC80b0VCT0cwWFhZRUJQVGUvdk1BQWdBNy8rY0VpQVlBQUJJQUhRQmhzZ1FlSHhFU09iQUVFTEFiMEFDd0J5K3dBRVZZc0FRdkc3RUVHejVac0FCRldMQUpMeHV4Q1E4K1diQUFSVml3RFM4YnNRMFBQbG15QmdRSkVSSTVzZ3NFQ1JFU09iSVdBUW9yV0NIWUcvUlpzQVFRc2hzQkNpdFlJZGdiOUZrd01STTJFallYRmhjVE13RWpOd1luSmlZbkpqY1hCaFlYRmpjVEppY21Ca1FVak01K3BWMW83djcxMUJCK3FwZTFCd01HNlFkYldvbGtVUytIaUtZQ0hxY0JDb01EQkhjQ0xQb0FjSWtFQXVXK1BqdElmSklDQklrQjBYMEVCUGdBQUFJQU8vL3FCQUlFVVFBV0FCOEFnN0lSSUNFUkVqbXdFUkN3RjlBQXNBQkZXTEFKTHh1eENScytXYkFBUlZpd0FDOGJzUUFQUGxteUdnQUpFUkk1c0JvdnRMOGF6eG9DWGJSZkdtOGFBbkcwSHhvdkdnSnhzbzhhQVYyMDd4ci9HZ0p4c2cwSENpdFlJZGdiOUZtd0FCQ3lFUUVLSzFnaDJCdjBXYklUQ1FBUkVqbXdDUkN5RndFS0sxZ2gyQnYwV1RBeEJTNENOemMyRWpZWEZoSUhCeUVHRmhjV054Y0dCZ01tQXdVM05pY21KZ0g2amM5akRBTVNuZXFKeThzWkR2MVhDWHBybVlGNFJONGZ2RjRCd1FRSEJndGFGQU9JN0pFcHBRRUhpQU1FL3Ryc2FJR2VBZ1dLZm1GckE2SUcvdkFCRlM0c1IxSUFBUUJmQUFBRFhnWWFBQlVBWTdJVkZoY1JFamtBc0FCRldMQUlMeHV4Q0NFK1diQUFSVml3QXk4YnNRTWJQbG13QUVWWXNCRXZHN0VSR3o1WnNBQkZXTEFBTHh1eEFBOCtXYkFERUxJQkFRb3JXQ0hZRy9SWnNBZ1FzZzBCQ2l0WUlkZ2I5Rm13QVJDd0U5Q3dGTkF3TVRNVEl6Y3pOelkyRnhZWEJ5WWpKZ1lIQnpNSEl3TmpuYUVnb0JBYTI2MDlVQm9zTFZWc0R3L1dJTldkQTRhMGRLakVBZ0lTdmdvQlhsTm10UHg2QUFBQy8vZitUd1JDQkZFQUhBQXFBSU95QkNzc0VSSTVzQVFRc0NQUUFMQUFSVml3Q0M4YnNRZ2JQbG13QUVWWXNBUXZHN0VFR3o1WnNBQkZXTEFNTHh1eERCRStXYkFBUlZpd0dDOGJzUmdQUGxteUJnZ1lFUkk1c0F3UXNoSUJDaXRZSWRnYjlGbXlFQklZRVJJNXNoWUlHQkVTT2JBWUVMSWlBUW9yV0NIWUcvUlpzQVFRc2ljQkNpdFlJZGdiOUZrd01STTJFallYRmhjM0Z3TUdCQ2NtSmljM0ZoY1dOamMzQmljbUppY21Od1lYRmhZWEZqY1RKaWNtQmdkR0U0blFockpiSmRpekh2N1gxWExNUG41Zm1YU25IQkY5bjVpM0NRUHpCZ0lDWEZXSFpWVTBoWGlrR1FJZW9nRUdpd0lFZjI4QisrVFUrd1lDWkZLUGd3UUVoMzFNZVFRQzRyODhQak03YW53REJZSUIzbmNFQThDdEFBQUJBQTBBQUFQNUJnQUFFZ0JKc2dFVEZCRVNPUUN3RVMrd0FFVllzQUl2RzdFQ0d6NVpzQUJGV0xBR0x4dXhCZzgrV2JBQVJWaXdEeThic1E4UFBsbXlBQUlHRVJJNXNBSVFzZ3dCQ2l0WUlkZ2I5Rmt3TVFFMkZ4WVdCd01qRXpZbkppY21Cd01qQVRNQmw0ZXNtcFVUZE8xMkJRTU5nNFJvaCswQkN1NER3NDRFQXRhOS9VZ0N1eXNsZWdNQ2hQejZCZ0FBQWdBZkFBQUNDUVhZQUFNQUR3QStzZ1FRRVJFU09iQUVFTEFBMEFDd0FFVllzQUl2RzdFQ0d6NVpzQUJGV0xBQUx4dXhBQTgrV2JBQ0VMQU4wTEFOTDdJSERRb3JXQ0hZRy9SWk1ERWhJeE16QXpRMk56WVdGUlFHQndZbUFRenR2TzNMU0QwNlRVczZPVTRFT2dFVk4wNENBa3MyT1VvQ0Fra0FBQUwvRFA1R0FmNEYyQUFNQUJnQVNiSUJHUm9SRWptd0FSQ3dEZEFBc0FCRldMQUFMeHV4QUJzK1diQUFSVml3QkM4YnNRUVJQbG15Q1FFS0sxZ2gyQnYwV2JBQUVMQVcwTEFXTDdJUURRb3JXQ0hZRy9SWk1ERUJBd1lHSnlZbk54WXpNamNURXpRMk56WVdGUlFHQnlJbUFjUEhGcnlYUUVjVUxpWi9Hc2tkU0R3NlRVczZQRW9FT3Z0bnFMTUNBaEhBQzVVRWxRRVZPa3NDQWtrNE9Vb0NSd0FBQVFBUkFBQUVTZ1lBQUF3QVV3Q3dBRVZZc0FRdkc3RUVJVDVac0FCRldMQUlMeHV4Q0JzK1diQUFSVml3QWk4YnNRSVBQbG13QUVWWXNBc3ZHN0VMRHo1WnNnQUlBaEVTT2JScUFIb0FBbDJ5QmdnQ0VSSTV0R1VHZFFZQ1hUQXhBUWNESXdFekF6Y0JJUUVCSVFHL2hqdnRBUXJ0bUZNQldBRXYvaUFCUFA3L0FjNTMvcWtHQVB5WVZnRk0vakw5bEFBQkFCOEFBQUlYQmdBQUF3QWRBTEFBUlZpd0FpOGJzUUloUGxtd0FFVllzQUF2RzdFQUR6NVpNREVoSXdFekFRenRBUXZ0QmdBQUFBRUFFQUFBQm1nRVVnQWhBSGV5RmlJakVSSTVBTEFBUlZpd0F5OGJzUU1iUGxtd0FFVllzQWd2RzdFSUd6NVpzQUJGV0xBQUx4dXhBQnMrV2JBQVJWaXdEQzhic1F3UFBsbXdBRVZZc0JZdkc3RVdEejVac0FCRldMQWZMeHV4SHc4K1diSUJDQXdSRWpteUJnZ01FUkk1c0FnUXNoSUJDaXRZSWRnYjlGbXdITkF3TVFFSE5oY1dGaGMyRnhZV0J3TWpFelluSmljbUJ3Y0RJeE0ySnlZbkpnY0RJeE1CcVJXR3VtYUhHSmJDbnBrVGRlMTJCUVFRaEpOVkEzenVkZ1VFRUlTRldZbnR1d1E3YzRvRUFscEtxZ1FFMGJ6OVF3Sy9MQ1YxQXdTbEZ2MHZBcndySlhrREFubjg3d1E2QUFFQURRQUFBL29FVWdBU0FGT3lBaE1VRVJJNUFMQUFSVml3QXk4YnNRTWJQbG13QUVWWXNBQXZHN0VBR3o1WnNBQkZXTEFITHh1eEJ3OCtXYkFBUlZpd0VDOGJzUkFQUGxteUFRTUhFUkk1c0FNUXNnMEJDaXRZSWRnYjlGa3dNUUVITmhjV0ZnY0RJeE0ySnlZbkpnY0RJeE1CcHhpTHRwaVNFM1h0ZGdVRURZR0hab2Z0dXdRN2Y1WUVBOU85L1VVQ3Zpc2xkd01DaC96OUJEb0FBZ0E1LytnRUp3UlNBQkFBSUFCRHNoc2hJaEVTT2JBYkVMQUUwQUN3QUVWWXNBUXZHN0VFR3o1WnNBQkZXTEFNTHh1eERBOCtXYklVQVFvcldDSFlHL1Jac0FRUXNoc0JDaXRZSWRnYjlGa3dNUk0yRWpZWEhnSUhCZ0lHSnk0Q054Y1dGaGNXTmpjM05DWW5KZ2NHQndaSkVabndrb3ZLWFE0UW0vR1Rpc2xlRGV3RlpWcDZwUlVHWm1HWVdEVU9DQUlobndFRWpnUUNrUHFaclA3NGpRUUNqL21XZEdsL0F3UENxR0tBa2dRRW1WMTVWQUFDLzhmK1lBUU5CRklBRWdBZUFHZXlCQjhnRVJJNXNBUVFzQjNRQUxBQVJWaXdEUzhic1EwYlBsbXdBRVZZc0Fvdkc3RUtHejVac0FCRldMQUhMeHV4QnhFK1diQUFSVml3QkM4YnNRUVBQbG15Q3cwSEVSSTVzQTBRc2hjQkNpdFlJZGdiOUZtd0JCQ3lIQUVLSzFnaDJCdjBXVEF4QVFZQ0JpY21Kd01qQVRjSE5oY2VBaGNXQnpjMkppY21Cd01XRnhZMkJBVVVoYzEvcVdGaDdnRUUyUko4cTJlWVVRTUI4Z1VEVzF1R1lsUXRpbmFoQWhtaS92aUhBd1IwL2YwRjJnRndod1FCWjhSNFBUOUpnWTRDQkgvK0hYa0VBNzRBQUFJQU8vNWdCRGdFVWdBU0FDQUFhN0lFSVNJUkVqbXdCQkN3R05BQXNBQkZXTEFJTHh1eENCcytXYkFBUlZpd0JDOGJzUVFiUGxtd0FFVllzQWt2RzdFSkVUNVpzQUJGV0xBTkx4dXhEUTgrV2JJR0NBMFJFam15Q3dnTkVSSTVzaGNCQ2l0WUlkZ2I5Rm13QkJDeUhRRUtLMWdoMkJ2MFdUQXhFellTTmhjV0Z6Y1hBU01UQmljbUppY21Oek1IQmhZWEZqWTNFeVluSmdZSFJCU096bitzWENmVy92enRZbm1jbTdRSEF3YnVCUU5iV0V0dkxWZzBnbktmSEFJZnF3RUpmd01FZlcwQitpWUIvWFVFQXVPK1B6eEloNHNDQTBVNEFlNXlCQU95cEFBQkFCQUFBQUx2QkZNQURRQkdzZ2tPRHhFU09RQ3dBRVZZc0Fndkc3RUlHejVac0FCRldMQUxMeHV4Q3hzK1diQUFSVml3QlM4YnNRVVBQbG13Q3hDeUFnRUtLMWdoMkJ2MFdiSUpDd1VSRWprd01RRW1JeVlIQXlNVE53YzJGeklYQXRRdUw1eGNndTI3NFJodmtTRTZBMXdLQklYOUd3UTZBWHVUQXc4QUFBRUFIUC9wQThRRVVBQWtBSFN5SXlVbUVSSTVBTEFBUlZpd0NDOGJzUWdiUGxtd0FFVllzQnN2RzdFYkR6NVpzZ01iQ0JFU09iSUxDQnNSRWpteUhBc0JYYklMQ3dGZHNBZ1FzZzhCQ2l0WUlkZ2I5Rm13QXhDeUV3RUtLMWdoMkJ2MFdiSWVDQnNSRWptMEJCNFVIZ0pkc0JzUXNpSUJDaXRZSWRnYjlGa3dNUUUySkNjbU56WTJGeFlXQnljMkppY2lCZ2NHQkJjV0J3NENKeVltTnhjV0ZoY3lOZ0tYRWY3ZE5jNEhCZit5ck5rQzZ3SldTMDl4Q1E0QkhFVEdCd1Y5MG5heDZRTGxBbVJYV0hVQkxHTk5GMWkwa3I4Q0FyNmFBVXRWQWs0L1cwY2VWN2xubVZFREFzcWVBVmRhQVVrQUFRQTcvKzBDcmdWQkFCWUFYTElXRnhnUkVqa0FzQUJGV0xBQkx4dXhBUnMrV2JBQVJWaXdGQzhic1JRYlBsbXdBRVZZc0E0dkc3RU9EejVac0FFUXNBRFFzQUF2c0FFUXNnTUJDaXRZSWRnYjlGbXdEaEN5Q1FFS0sxZ2gyQnYwV2JBREVMQVMwREF4QVFNekJ5TURCaGNXRnpJM0J3WWpKaVkzRXlNM014TUNJeTY1SDdwbUF3SUdTaVV2RUVwTGZIc05aYTBnckM0RlFmNzV0UDJpR1JSQkF3bStGUUtsaUFKcXRBRUhBQUFCQUVyLzZBUXhCRG9BRXdCUXNnRVVGUkVTT1FDd0FFVllzQWN2RzdFSEd6NVpzQUJGV0xBUUx4dXhFQnMrV2JBQVJWaXdFaThic1JJUFBsbXdBRVZZc0FJdkc3RUNEejVac2dBUUVoRVNPYklOQVFvcldDSFlHL1JaTURFbEJpY3VBamNUTXdNR0Z4WVhGamNUTXdNakFxMTd1V21MT3d4MTdYWUVBd3B6bldHSTdidmVhNE1FQW1TemVRSzgvVUVsSTN3RkJvUURDdnZHQUFBQkFHUUFBQVFOQkRvQUJnQTRzZ0FIQ0JFU09RQ3dBRVZZc0FFdkc3RUJHejVac0FCRldMQUZMeHV4QlJzK1diQUFSVml3QXk4YnNRTVBQbG15QUFVREVSSTVNREVCQVRNQkl3TXpBYm9CVnYzOTY4N0c3Z0UzQXdQN3hnUTZBQUFCQUhjQUFBWDRCRG9BREFCZ3NnVU5EaEVTT1FDd0FFVllzQUV2RzdFQkd6NVpzQUJGV0xBSUx4dXhDQnMrV2JBQVJWaXdDeThic1FzYlBsbXdBRVZZc0FNdkc3RUREejVac0FCRldMQUdMeHV4Qmc4K1diSUFDd01SRWpteUJRc0RFUkk1c2dvTEF4RVNPVEF4QVFFekFTTURBU01ETXhNQk13UGhBU251L2liRFgvNml4R1BnS1FGV3N3RlJBdW43eGdMay9Sd0VPdjBpQXQ0QUFBSC91UUFBQkJNRU9nQUxBRk1Bc0FCRldMQUJMeHV4QVJzK1diQUFSVml3Q2k4YnNRb2JQbG13QUVWWXNBUXZHN0VFRHo1WnNBQkZXTEFITHh1eEJ3OCtXYklBQ2dRUkVqbXlCZ29FRVJJNXNnTUFCaEVTT2JJSkJnQVJFamt3TVFFVElRRVRJd01CSVFFRE13SC8vd0VWL21MeCtKZis5djdzQWF2cCtBTFlBV0w5NFAzbUFYSCtqd0l3QWdvQUFBSC90ZjVGQkJJRU9nQVBBRU95QUJBUkVSSTVBTEFBUlZpd0R5OGJzUThiUGxtd0FFVllzQUV2RzdFQkd6NVpzQUJGV0xBRkx4dXhCUkUrV2JJQUJROFJFam15Q1FFS0sxZ2gyQnYwV1RBeEFRRWhBUUluSmljM0Z4WTJOemNETXdHNEFWUUJCdjEvaHRzMlJSUXJWbkFtT2JYMkFWNEMzUHNML3dBREFoSzhCQU5IUzNBRUp3QUIvK2NBQUFQa0JEb0FDUUJFQUxBQVJWaXdCeThic1FjYlBsbXdBRVZZc0FJdkc3RUNEejVac2dBQkNpdFlJZGdiOUZteUJBQUNFUkk1c0FjUXNnVUJDaXRZSWRnYjlGbXlDUVVIRVJJNU1ERWxJUWNoTndFaE55RUhBVGdDSmlMOHF4NENpUDM5SXdNM0hjTENxd0xMeEtVQUFBRUFNUDZaQXdVR1FBQWJBRGF5REJ3ZEVSSTVBTEFPTDdBQVJWaXdBQzhic1FBWFBsbXlDUTRBRVJJNXNBa3ZzZ2dIQ2l0WUlkZ2I5Rm15RkFnSkVSSTVNREVCSmlZM056WW5KaWMzTmpjM0VpVVhCZ01IQmdjV0ZnOENCaGNCelo2Y0V4d0ZCQTJHRWNjZkh6a0JZeVBCSXgwaHVVazJDUjREQTRQK21UUHdyc3d0SjNvTHNncmQ0QUZRYUk5Ry92cmF4V0Ezb2xqbVI2bzZBQUVBSVA3eUFkSUZzQUFEQUJNQXNBQXZzQUJGV0xBQ0x4dXhBaDgrV1RBeEV5TUJNOFNrQVE2ay92SUd2Z0FCLzVuK2xRSnZCanNBSEFBMnNob2RIaEVTT1FDd0RpK3dBRVZZc0J3dkc3RWNGejVac2hZT0hCRVNPYkFXTDdJWEJ3b3JXQ0hZRy9SWnNnVVhGaEVTT1RBeEJ6WTNOelkzSmljbVB3STBKemNXRmdjSEJoY1dGd2NHQndjQ0JXZTRLU0lqdm5BT0JRVWVCSUUzbzVBU0hBVUVEWWNTeUI0Zk9mNmQyMEQ0OU1OYlNwQXJMZVpJcWptSk52R296QzRtZkF1eUN0dmYvcXhtQUFBQkFGc0JmZ1RLQXpRQUZnQThzZ1VYR0JFU09RQ3dEaSt3QU5DeUF4Y09FUkk1c0FNdnNBNFFzZ2dCQ2l0WUlkZ2I5Rm13QXhDd0N0Q3dBeEN5RXdFS0sxZ2gyQnYwV1RBeEFRWUdKeTRESXlZSEl6WTJGeDRETXpJMk53VEtETVNVVVg1MFF5R0hJcnNPeDVGU2duQkVIMFJkRUFNVXJ1Z0VBa3AwSkFQQXI5d0VBa3h5SkdsY0FBQUMvK2IrbEFIT0JGQUFBd0FPQUQ2eUN3OFFFUkk1c0FzUXNBTFFBTEFBUlZpd0RDOGJzUXdiUGxtd0FFVllzQUl2RzdFQ0Z6NVpzQXdRc2djTkNpdFlJZGdiOUZtd0FkQ3dBUzh3TVJNekF5TUJGQVlHSmpVME5qYzJGcS9NbXZzQjZFcDJURW83T2swQ2x2ditCVHM1VFFSS09EbE1BZ0pMQUFFQVRQOExCQVlGSmdBaEFGZXlFaUlqRVJJNUFMQUFSVml3RlM4YnNSVWJQbG13QUVWWXNBY3ZHN0VIRHo1WnNnQUJDaXRZSWRnYjlGbXlCQWNWRVJJNXNBY1FzQXJRc0JVUXNCTFFzaGtWQnhFU09iQVZFTEljQVFvcldDSFlHL1JaTURFbEZqWTNOd1lHQndjak55NENOemMyRWpjM013Y1dGZ2NqTkNZbkpnSVZGQllCOWxpQUZOOE8xcUF2eERCcmlUb09BaG4yd1M3RExvU1RBdDFjVTQrcFhLMENhRklCamNjZDZ1d2JrOStFRk9VQklpTGg0eUhTbTJGeEJBYis5dkJxZlFBQUFmLzJBQUFFcFFYSEFDQUFhckljSVNJUkVqa0FzQUJGV0xBVEx4dXhFeDgrV2JBQVJWaXdCUzhic1FVUFBsbXlIaE1GRVJJNXNCNHZzZ0FCQ2l0WUlkZ2I5Rm13QlJDeUF3RUtLMWdoMkJ2MFdiQUkwTEFBRUxBTDBMQWVFTEFOMExBVEVMQVcwTEFURUxJYUFRb3JXQ0hZRy9SWk1ERUJCd1lISlFjaE54YzJOemNqTnpNM1BnSVhGaFlISnpZbUp5WUdCd2NoQndIdUZoRlpBcWdrL0FRa1JXUWNHSjBqbHg4UWk5bC90TXNJN3dWU1UxcC9EaDBCTGlNQ1ZxNkNYd1BLeVFJa3NybkgrMy9IYVFRRTJiWUJYMmNFQW9adzZzY0FBQUlBQ1AvbEJYOEU4UUFjQUN3QVA3SWlMUzRSRWptd0loQ3dFTkFBc0FCRldMQUNMeHV4QWc4K1diQVIwTEFSTDdBQ0VMSWhCd29yV0NIWUcvUlpzQkVRc2lrSENpdFlJZGdiOUZrd01TVUdKeVluQnljM0ppY21FamNuTnhjMkZ4WVhOeGNIRmdjR0J4Y0hBUVlXRmhjV05qWTNOaVltSnlZR0JnUFV0cnpEaDVoNG1oc0tFMWhtYzVkdXI3SzVpS3A1cVQ0VUdvTnZtUHo0RDBTYWFYSFJqeEFQUkpwcGN0T01hWUVFQkhxRW00QlZWcE1CSEhXYmhZOTBCQUp5bEp5T3VhZkpucFdHQW5KdXlYa0VCSG5aZDI3SGVBUUVldFFBQVFCUUFBQUZPQVd3QUJZQWNnQ3dBRVZZc0JZdkc3RVdIejVac0FCRldMQU1MeHV4REE4K1diSUFEQllSRWptd0ZoQ3dBZEN5RHd3V0VSSTVzQTh2c0JQUXNCTXZ0QThUSHhNQ1hiQUUwTEFFTDdBVEVMSVNCQW9yV0NIWUcvUlpzQWJRc0E4UXNBZlFzQWN2c0E4UXNnNEVDaXRZSWRnYjlGbXdDdEF3TVFFQklRRXpCeUVISVFjaEF5TVRJVGNoTnlFM0lRRWhBbm9Cb0FFZS9nZitHLzZ1R0FGVEcvNnVOUGMxL3FnYkFWY1kvcWdiQVJqKy9nRUZBellDZXYwMm1JcVgvdE1CTFplS21BTEtBQUFDLyt6KzhnSDRCYkFBQXdBSEFCZ0FzQUF2c0FCRldMQUdMeHV4Qmg4K1diSUZBUU1yTURFREV6TURFeU1UTXhTTDM0cW80SVRnL3ZJREcvemxBOGdDOWdBQy85eitJd1N4QmNZQUxnQTVBSUN5SnpvN0VSSTVzQ2NRc0RUUUFMQUlMN0FBUlZpd0h5OGJzUjhmUGxteUFnZ2ZFUkk1c0FnUXNBelFzQWdRc2c4QkNpdFlJZGdiOUZteUZRZ2ZFUkk1c2hvZkNCRVNPYkFmRUxBajBMQWZFTEltQVFvcldDSFlHL1Jac2l3SUh4RVNPYkFWRUxJekFRb3JXQ0hZRy9SWnNDd1FzamtCQ2l0WUlkZ2I5Rmt3TVFFR0J4WUhEZ0luSmlZM013WVdGekkyTnpZdkFpUTNOamNtTnpZa0Z4WVdCeWMySmljbUJ3WUhCZ1FYRmlVR0J3WWZBalkzTmljRVVnN0lZUTBKai9DUjRQc0Y4QVorZUhpZERSVzVrbG4rNnhVT3htQU5EZ0VxNDlickNld0dkR2x5VGxNT0ZnRjhWT1g5Ym5rVUZyYkRLSUVVRnNJQno3VnBhS2g1ckZrREF1TEZhM2tDWWxONFFUQWpkL1c0WjIya3NOQUNCT1RHQVd4N0FnSXVNVnFHY1N0MElEZDJpRDFBRHp0eWdVUUFBQUlBMFFUZUE0TUZ6UUFLQUJVQUlnQ3dFUyt5RHhFQlhiSUxCUW9yV0NIWUcvUlpzQURRc0JFUXNBYlFzQVl2TURFQk1oWVZGQVlISWlZME5pVXlGaFVVQmdjaUpqUTJBVXcyUmtZMU9FUkVBZkk0UkVZMU4wVkZCYzFETVRORkFrUmdTQUZFTURORkFrSmtSZ0FBQXdCZS8rZ0Y2UVhIQUJzQUtRQTZBSld5TGpzOEVSSTVzQzRRc0JMUXNDNFFzQ2ZRQUxBQVJWaXdMeThic1M4ZlBsbXdBRVZZc0Rjdkc3RTNEejVac2dNM0x4RVNPYkFETDdRUEF4OERBbDJ5Q2k4M0VSSTVzQW92dEFBS0VBb0NYYklBQXdvUkVqbXlEZ29ERVJJNXNoRUNDaXRZSWRnYjlGbXdBeEN5R1FJS0sxZ2gyQnYwV2JBM0VMSWZDQW9yV0NIWUcvUlpzQzhRc2lZSUNpdFlJZGdiOUZrd01RRUdCaWNtSmpjM05qWVhGaFlISnpZbUp5WUdCaFVYRmhZWEZqY0ZGZ0FYRmlRU0p5WUNKeVlFQWdjMkVqWWtGeFlFRWdjR0FnUW5KaVFDQkVNTXVabVNwQTRLRTlDZWxab0VtQVZJVVYxN0hRSUZTMEtuSC8wOUV3RUJ2TGdCU2JjU0UvekF1ZjYzdVdJUmllQUJEWkN5QVI2UEZSYm0vcVcvdHY3bWtBSlVscWdFQk5pblpiemNBZ1NwandGYVdRSUNqdmdiTEV0WUF3ZTVHTXorK3dJRTJ3RjN3Y29CQVFVRTJ2NkpLSllCRjlsdkF3TEYvcWJFeWY2YXlBUUV4QUZjQUFBQ0FMNENzd05RQmNjQUhRQW5BR3V5RWlncEVSSTVzQklRc0I3UUFMQUFSVml3Rmk4YnNSWWZQbG15QkNnV0VSSTVzQVF2c0FEUXNBQXZzZ29FRmhFU09iQUtMN0FXRUxJUUFnb3JXQ0hZRy9SWnNBb1FzUklLSzFqWUc5eFpzQVFRc2g0Q0NpdFlJZGdiOUZtd0NoQ3hJZ29yV05nYjNGa3dNUUVtTndZaklpWTNOall6RnpjMkp5WW5KZ2NuTmpZWEZoWUhBd2NHRnlVeU56Y2pCZ1lIQmhZQ2JnVUNYVzFxZVFRQ3U2aG9Dd1FCQjB4M0c2d0xzWUo2akFvMkJBRUovclZGV2h0VFVtWUlCekVDdnlnZVVudGhjMzBCTlJrV1N3TUVadzV2ZlFJQ2xuMytwVG90TDRJK2lnTStOU1lzLy84QVNRQ0tBNjBEcVFBbUE0RHNBQUFIQTRBQlNBQUFBQUVBZ0FGMkE4b0RKUUFGQUJvQXNBUXZzQUhRc0FFdnNBUVFzZ0lCQ2l0WUlkZ2I5Rmt3TVFFakV5RTNJUU4veEM3OWx4OERLd0YyQVFTci8vOEFOZ0lKQWxnQ3pRSUdBQkVBQUFBRUFGNy82QVhwQmNnQUR3QWZBRGdBUVFDZnNqcENReEVTT2JBNkVMQUQwTEE2RUxBZDBMQTZFTEE0MEFDd0FFVllzQVF2RzdFRUh6NVpzQUJGV0xBTUx4dXhEQTgrV2JJVUNBb3JXQ0hZRy9SWnNBUVFzaHdJQ2l0WUlkZ2I5Rm15SVF3RUVSSTVzQ0V2c2lRRURCRVNPYkFrTDdRQUpCQWtBbDJ5SUNFa0VSSTVzQ0F2c2lBZ0FWMnlPUWdLSzFnaDJCdjBXYklwSURrUkVqbXdJUkN3TWRDd0pCQ3lRQWdLSzFnaDJCdjBXVEF4RXpZU0pCY1dCQklIQmdJRUp5WWtBamNlQWhjV0pCSTNOZ0ltSnlZRUFnVURJeE1GRmhZSEJnY1dGeFlHRnhjSEl5WTNOamMySmljbkZ6WTJOelltSnlkekZ0NEJYc1d5QVI2UEZSYm0vcVcvdHY3bWtJb01mc2wrbkFFbnlSY1ZhZUNZdWY2M3VBRzROWlNGQVFTUGxBVUhpVWtIQWcwQkJBR1ZCUUlCREFZc1FwQ0JTbVVLQ3p0WmlnTFN4Z0ZoendRQ3hmNm14TW4rbXNnRUJNUUJYQ3VEMTNZREJLUUJMYXVmQVI2bUJBVGEvb3h3L3E4RFVnRUZobkYwVEM1a0gza2NQaElsSkNGZlAwUUVpQUVDUXpZN1BRTUJBQUVBN3dVU0E4c0ZzQUFEQUJFQXNBRXZzZ0lEQ2l0WUlkZ2I5Rmt3TVFFaE55RURzdjA5R1FMREJSS2VBQUFDQU9RRHJBTGtCY2NBQ3dBWEFDOEFzQUJGV0xBREx4dXhBeDgrV2JBUDBMQVBMN0lKQWdvcldDSFlHL1Jac0FNUXNoVUNDaXRZSWRnYjlGa3dNUk0yTmhjV0ZnY0dCaWNtSmpjR0ZqTXlOamMySmlNaUJ1WUNwRzlqaGdJRW9HeG1pSW9HTmpFM1VBWUdOUzgyVkFTdmI2a0NBcGxwY3FNQ0FwWnJMRWxQTkRGSlZBQUNBQnNBQVFRRkJQd0FDd0FQQUVZQXNBa3ZzQUJGV0xBTkx4dXhEUTgrV2JBSkVMQUEwTEFKRUxJR0FRb3JXQ0hZRy9SWnNBUFFzQTBRc2c0QkNpdFlJZGdiOUZteUJRNEdFUkk1dEFzRkd3VUNYVEF4QVNFSElRTWpFeUUzSVJNekV5RTNJUUs0QVUwZy9yUTkwejMrcFNBQldUelRZZnpISHdNNUE0UEgvbndCaE1jQmVmc0Z4QUFCQUZZQ213THhCYjhBRndCWnNnZ1lHUkVTT1FDd0FFVllzQTh2RzdFUEh6NVpzQUJGV0xBQUx4dXhBQk0rV2JJV0Fnb3JXQ0hZRy9SWnNnSUFGaEVTT2JJRER3QVJFam13RHhDeUNBSUtLMWdoMkJ2MFdiSU1Ed0FSRWpteUV3OEFFUkk1TURFQklUY0JOamMySmljaUJnY0hOallYRmhZSEJnOENCUUtwL2EwWUFWWmhEQWNyS1RwRERMWUtyNEova2dVRmxrK2RBVjhDbTRjQkdWTkRLUzhCUnpRQmVaZ0NBb05vZm5jOGJnSUFBUUJuQW8wQytBVytBQ1FBYjdJSkpTWVJFamtBc0FCRldMQU5MeHV4RFI4K1diQUFSVml3R0M4YnNSZ1RQbG15QVJnTkVSSTVmTEFCTHhpd0RSQ3lCd0lLSzFnaDJCdjBXYklLQVFjUkVqbXdBUkN5SXdJS0sxZ2gyQnYwV2JJVEl3RVJFam13R0JDeUhnSUtLMWdoMkJ2MFdiSWNJeDRSRWprd01RRXpOalkzTmljbkpnY0hOallYRmhZSEJnWUhGZ2NHQmljbUpqVVhGaGN5TmpjMkp5TUJXVk05VFFjSlNoZGRITG9KcG4yQm1RVURTVkoyQkFPOGkzMlpzUVJxTmxNSERYaGNCR3dDT0M1RERRSUNUQUZwZWdJRGQySTdWeVlwZ1crQ0FnS0RiUUZaQWpndldRVUFBUURJQk5FQzBnWUFBQU1BSXdDd0FpK3lEd0lCWGJBQTBMQUFMN1FQQUI4QUFsMndBaEN3QTlBWnNBTXZHREF4QVNFQkl3RzFBUjMreE00R0FQN1JBQUgvM2Y1Z0JGUUVPZ0FUQUZheURSUVZFUkk1QUxBQVJWaXdBQzhic1FBYlBsbXdBRVZZc0Fndkc3RUlHejVac0FCRldMQVJMeHV4RVJFK1diQUFSVml3Q2k4YnNRb1BQbG13QUVWWXNBNHZHN0VPRHo1WnNnVUJDaXRZSWRnYjlGa3dNUUVEQmhjV0Z4WTNFek1ESXpjR0p5SW5BeU1CQWMxbUNBSUZoWmhhaXUyNzF3OW9qR3hTVnV3QkJBUTYvWkpWS0owREJId0RFL3ZHVm00Q09mNDlCZG9BQVFCOUFBQUQzQVd4QUFvQUs3SUNDd3dSRWprQXNBQkZXTEFJTHh1eENCOCtXYkFBUlZpd0FDOGJzUUFQUGxteUFRQUlFUkk1TURFaEV5Y21KamMyQURNRkF3SVNXampUNUJRVEFTdmhBU3o5QWdnQkEvL0owd0VLQWZwUUFBRUFuZ0pDQWJFRFZRQUxBQml5QXd3TkVSSTVBTEFETDdJSkRRb3JXQ0hZRy9SWk1ERVRORFkzTmhZVkZBWUhCaWFlVFRzOVRrNDhPMDRDeGoxT0FnSlBPRHROQWdKS0FBSC8wLzQ5QVM4QUJBQU9BQ215QWc4UUVSSTVBTEFBTDdBSEw3SUlBZ29yV0NIWUcvUlpzZzBJQUJFU09iSUJBQTBSRWprd01UY0hGaFlIQmdZSE56WTNOaWNuTjhVVFBqOEJBcktuQW9rUUNWSTRMUVE3RGxVL2JYY0dqUVphUEEwR2lRQUJBT0VDb0FLQkJiTUFCZ0E1c2dFSENCRVNPUUN3QUVWWXNBVXZHN0VGSHo1WnNBQkZXTEFBTHh1eEFCTStXYklFQlFBUkVqbXdCQkN5QXdJS0sxZ2gyQnYwV1RBeEFTTVRCemNsTXdIL3RXUE1Hd0Z1RndLZ0FqWXZtWE1BQWdDK0FxMERmUVhJQUE0QUhBQkFzaEVkSGhFU09iQVJFTEFPMEFDd0FFVllzQUF2RzdFQUh6NVpzZ2NkQUJFU09iQUhMN0lTQWdvcldDSFlHL1Jac0FBUXNoa0NDaXRZSWRnYjlGa3dNUUVXRmdjSEJnWW5KaVkzTno0Q0F3WVdGeFkyTnpjMkppY21CZ2NDU3BDakN3WVAwcG1OcHdzR0NtZW1jUWhGUms5c0RBZ0lSVVpRYkFzRnhRVEhtVUtremdRRXhKdENicWxiL2tsaGJBSUNkV2RHWkdrQ0FuWmtBUC8vQUFJQWlnTjFBNmtBSmdPQkNRQUFCd09CQVhNQUFQLy9BTGtBQUFVcUJhc0FKd1BQQUV3Q21BQW5BNE1CRkFBSUFRY0R6QUt3QUFBQUVBQ3dBRVZZc0FVdkc3RUZIejVaTURILy93Q3hBQUFGZ0FXdUFDY0Rnd0RxQUFnQUp3UFBBRVFDbXdFSEE4NERBZ0FBQUJBQXNBQkZXTEFKTHh1eENSOCtXVEF4Ly84QWxnQUFCWjhGdndBbkE0TUJuUUFJQUNjRHpBTWxBQUFCQndQTkFLSUNtd0FRQUxBQVJWaXdJQzhic1NBZlBsa3dNUUFDLzlMK2VnTWpCRkVBR0FBa0FHR3lJU1VtRVJJNXNDRVFzQUxRQUxBQVJWaXdJaThic1NJYlBsbXdBRVZZc0JBdkc3RVFGejVac0NJUXNod05DaXRZSWRnYjlGbXdBTkN3QUMreUJCQUFFUkk1c0JBUXNna0JDaXRZSWRnYjlGbXlEQkFBRVJJNXNoVUFFQkVTT1RBeEFRWUdCd2NHQndZV0Z4WTJOek1HQkNjbUpqYzJOemMyTndFVUJnY0dKalUwTmpjMkZnSnJDMWRmVW5nT0MwcE9VM01SN1JIKy9MeTN5UTBQdzIxZkZBRXNTam83VEVvN09rd0NsblNyVjBwdGIxSmdBZ0psVjdQVEJBVE1xYk9yWGxhTUFUczdTd0lDU2pnNVRBSUNTZ0QvLy8ra0FBQUVyZ2MyQWlZQUpRQUFBUWNBUkFGYkFUWUFFd0N3QUVWWXNBUXZHN0VFSHo1WnNBemNNREVBLy8vL3BBQUFCTWdITmdJbUFDVUFBQUVIQUhjQjlnRTJBQk1Bc0FCRldMQUZMeHV4QlI4K1diQU4zREF4QVAvLy82UUFBQVN1QnpjQ0pnQWxBQUFCQndGbkFQSUJOZ0FUQUxBQVJWaXdCQzhic1FRZlBsbXdEOXd3TVFELy8vK2tBQUFFeVFjckFpWUFKUUFBQVFjQmJnRUFBVGNBQ1FDd0JDK3dGZHd3TVFELy8vK2tBQUFFcmdjREFpWUFKUUFBQVFjQWF3RW9BVFlBREFDd0JDK3dITnl3QzlBd01mLy8vNlFBQUFTdUI1VUNKZ0FsQUFBQkJ3RnNBWXdCYWdBTUFMQUVMN0FVM0xBWDBEQXhBQUwvaHdBQUIzZ0ZzQUFQQUJJQWR3Q3dBRVZZc0FZdkc3RUdIejVac0FCRldMQUFMeHV4QUE4K1diQUFSVml3QkM4YnNRUVBQbG15RVFZQUVSSTVzQkV2c2dJQkNpdFlJZGdiOUZtd0JoQ3lDQUVLSzFnaDJCdjBXYklMQmdBUkVqbXdDeSt5REFFS0sxZ2gyQnYwV2JBQUVMSU9BUW9yV0NIWUcvUlpzaElHQUJFU09UQXhJU0VUSVFNaEFTRUhJUU1oQnlFRElRRWhFd2EzL0prcy9pSHUvdGdFSmdQTEkvMk9Od0lWSS8zMFBBS0UrMWdCWmxVQlZQNnNCYkRGL21qRi9qWUJad0o2QVAvL0FHWCtPQVVOQmNjQ0pnQW5BQUFBQndCN0Fici8rLy8vQUNjQUFBUzZCejBDSmdBcEFBQUJCd0JFQVNNQlBRQVRBTEFBUlZpd0JpOGJzUVlmUGxtd0Rkd3dNUUQvL3dBbkFBQUV1Z2M5QWlZQUtRQUFBUWNBZHdHK0FUMEFFd0N3QUVWWXNBWXZHN0VHSHo1WnNBN2NNREVBLy84QUp3QUFCTG9IUGdJbUFDa0FBQUVIQVdjQXVnRTlBQk1Bc0FCRldMQUdMeHV4Qmg4K1diQVIzREF4QVAvL0FDY0FBQVM2QndvQ0pnQXBBQUFCQndCckFQQUJQUUFNQUxBR0w3QWQzTEFNMERBeC8vOEFOUUFBQWpJSFBRSW1BQzBBQUFFSEFFVC8zQUU5QUJNQXNBQkZXTEFDTHh1eEFoOCtXYkFGM0RBeEFQLy9BRFVBQUFOSUJ6MENKZ0F0QUFBQkJ3QjNBSFlCUFFBVEFMQUFSVml3QXk4YnNRTWZQbG13QnR3d01RRC8vd0ExQUFBREVnYytBaVlBTFFBQUFRY0JaLzl6QVQwQUV3Q3dBRVZZc0FJdkc3RUNIejVac0FqY01ERUEvLzhBTlFBQUF5d0hDZ0ltQUMwQUFBRUhBR3YvcVFFOUFBd0FzQUl2c0JYY3NBVFFNREVBQXYvL0FBQUUvZ1d3QUE4QUhnQnBzaDRmSUJFU09iQWVFTEFPMEFDd0FFVllzQVV2RzdFRkh6NVpzQUJGV0xBQUx4dXhBQTgrV2JJREFBVVJFamw4c0FNdkdMSUNCd29yV0NIWUcvUlpzQkhRc0FBUXNoTUJDaXRZSWRnYjlGbXdCUkN5SEFFS0sxZ2gyQnYwV2JBREVMQWQwTEFlMERBeE14TWpOek1UQlRJRUVnY0hCZ0lFSXhNakF4Y3lKRGMySnlZbUp5Y0RNMFZ4dHg2MmJnR0t0Z0VIZGhjTEhzMyt2TUtmM1U2U3hnRUZKUm9IQ1plR3VVdmVBb3lxQW5vQnRmN0J3RS9KL3Ntc0FveitQZ0g3M1poeGthUUVBZjVTQVAvL0FDY0FBQVdHQnlzQ0pnQXlBQUFCQndGdUFTZ0JOd0FKQUxBRkw3QVUzREF4QVAvL0FHdi81d1VoQnpZQ0pnQXpBQUFCQndCRUFYSUJOZ0FUQUxBQVJWaXdDaThic1FvZlBsbXdKTnd3TVFELy93QnIvK2NGSVFjMkFpWUFNd0FBQVFjQWR3SU5BVFlBQ1FDd0NpK3dKZHd3TVFELy93QnIvK2NGSVFjM0FpWUFNd0FBQVFjQlp3RUpBVFlBQ1FDd0NpK3dKTnd3TVFELy93QnIvK2NGSVFjckFpWUFNd0FBQVFjQmJnRVhBVGNBQ1FDd0NpK3dMZHd3TVFELy93QnIvK2NGSVFjREFpWUFNd0FBQVFjQWF3RS9BVFlBREFDd0NpK3dOTnl3STlBd01RQUJBQ01BMWdRVUJJWUFDd0E0QUxBREw3SUpEQU1SRWptd0NTK3lDZ2tERVJJNXNnUURDUkVTT2JJQkNnUVJFam13QXhDd0JkQ3lCd1FLRVJJNXNBa1FzQXZRTURFVEFRTTNFd0VYQVJNSEF3RWpBV3Y3bnZvQmFuLytsZnVlKy82WEFYY0JRUUZEaS82L0FVR2gvci8rdllzQlFQN0FBQUFEQUJYL29RV1lCZTBBRndBaEFDc0FWYkllTEMwUkVqbXdIaEN3QzlDd0hoQ3dKOUFBc0FCRldMQU1MeHV4REI4K1diQUFSVml3QUM4YnNRQVBQbG15SndFS0sxZ2gyQnYwV2JBbDBMQWEwTEFNRUxJZEFRb3JXQ0hZRy9SWnNCdlFzQ1RRTURFRkppY0hKemNtTnpjU0VpUVhGaGMzTXdjV0Z4WUNBZ1FCQmhjQkppY21BZ2NHQVRZbkFSWVhGaEkzTndKWG5IdDJ0Y0pzQWdNVHdRRTF2cjZBY0xQRU9BNFJTc24rNVA1aEF4UUNmVDZCcHVJcEdnTFFCUWI5a3o5Z3NPTWtFUlVFU1pjQjhMRGlUd0VNQVg3S0FnUmpqL1I1Z0tyK1pmN0ltd0lpVlZNRFAwNEZCZjhBNlpVQkVFWkgvTll5QWdVQkYvcDVBUC8vQUZ2LzVnVXZCellDSmdBNUFBQUJCd0JFQVVvQk5nQVRBTEFBUlZpd0NpOGJzUW9mUGxtd0ZOd3dNUUQvL3dCYi8rWUZMd2MyQWlZQU9RQUFBUWNBZHdIbEFUWUFFd0N3QUVWWXNCSXZHN0VTSHo1WnNCWGNNREVBLy84QVcvL21CUzhITndJbUFEa0FBQUVIQVdjQTRRRTJBQk1Bc0FCRldMQUtMeHV4Q2g4K1diQVgzREF4QVAvL0FGdi81Z1V2QndNQ0pnQTVBQUFCQndCckFSY0JOZ0FXQUxBQVJWaXdDaThic1FvZlBsbXdKTnl3R2RBd01mLy9BS0VBQUFWTkJ6WUNKZ0E5QUFBQkJ3QjNBYjBCTmdBVEFMQUFSVml3QVM4YnNRRWZQbG13Qzl3d01RQUFBZ0FuQUFBRWdnV3dBQXdBRlFCWHNnOFdGeEVTT2JBUEVMQUkwQUN3QUVWWXNBQXZHN0VBSHo1WnNBQkZXTEFLTHh1eENnOCtXYklDQUFvUkVqbXdBaSt5RHdBS0VSSTVzQTh2c2dnQkNpdFlJZGdiOUZtd0FoQ3lGUUVLSzFnaDJCdjBXVEF4QVFNWEZoWUhCZ1FqSndNakV4TURGelkyTnpZbUp3SVJNY3ZlK1E4US9zM3IvRFh0L1p0VjRZQ3NEdzV3YWdXdy91Z0JBZXJDeS9RQi90UUZzUDRsL2hvQ0FvbHhhM3dFQUFBQkFCdi81d1JNQmhvQUxRQllzaUV1THhFU09RQ3dBRVZZc0FVdkc3RUZJVDVac0FCRldMQUFMeHV4QUE4K1diQUFSVml3RlM4YnNSVVBQbG15RGdVVkVSSTVzaG9CQ2l0WUlkZ2I5Rm15SUJVRkVSSTVzQVVRc2lvQkNpdFlJZGdiOUZrd01TRWpFellrRnhZV0J3NERCd1llQWdjR0JpY21KemNXTXpJMk56WW1KeVkzUGdNM05pWW5KZ1lIQVFqdHZSd0JBTWludmcwRUpHQWNCd2d1aURVQ0NmaTlxM0ZFWjJ4WWRnc0lNa1orQ1FReVBEUUhDVVZHV25VVUJGSFM5d1FFdlp3eFY1cENKakZtbVc0NHJjVUVBa0hCUWxsSk5HWkxobTg1WFZsY04weGNCQU9EaC8vL0FDTC82QVBjQmdBQ0pnQkZBQUFCQndCRUFMTUFBQUFUQUxBQVJWaXdHQzhic1JnYlBsbXdMZHd3TVFELy93QWkvK2dFSUFZQUFpWUFSUUFBQVFjQWR3Rk9BQUFBRXdDd0FFVllzQmd2RzdFWUd6NVpzQzdjTURFQS8vOEFJdi9vQStrR0FRSW1BRVVBQUFFR0FXZEtBQUFUQUxBQVJWaXdHQzhic1JnYlBsbXdNTnd3TVFELy93QWkvK2dFSVFYMUFpWUFSUUFBQVFZQmJsZ0JBQk1Bc0FCRldMQVlMeHV4R0JzK1diQXYzREF4QVAvL0FDTC82QVFEQmMwQ0pnQkZBQUFCQndCckFJQUFBQUFXQUxBQVJWaXdHQzhic1JnYlBsbXdNdHl3UGRBd01mLy9BQ0wvNkFQY0JsOENKZ0JGQUFBQkJ3RnNBT1FBTkFBV0FMQUFSVml3R0M4YnNSZ2JQbG13TmR5d085QXdNUUFEQUEvLzZBWndCRklBS3dBMUFENEErTElDUDBBUkVqbXdBaEN3TDlDd0FoQ3dPZEFBc0FCRldMQWRMeHV4SFJzK1diQUFSVml3R1M4YnNSa2JQbG13QUVWWXNBQXZHN0VBRHo1WnNBQkZXTEFGTHh1eEJROCtXYklESFFBUkVqbXlDd1VaRVJJNXNBc3ZzQmtRc2hFQkNpdFlJZGdiOUZteUZBc1JFUkk1UUFrTUZCd1VMQlE4RkFSZHNoc2RBQkVTT2JJNkhRQVJFam13T2krMEh6b3ZPZ0p4c284NkFWMjBYenB2T2dKeHRMODZ6em9DWGJUdk92ODZBbkd5SVFjS0sxZ2gyQnYwV2JBQUVMSWxBUW9yV0NIWUcvUlpzaWdkQUJFU09iQUZFTElzQndvcldDSFlHL1Jac0FzUXNqQUhDaXRZSWRnYjlGbXdIUkN5TmdFS0sxZ2gyQnYwV1RBeEJTSW1Kd1luSmlZM05pUXpGemMySnlZbkpnWUhKejRDRnhZWE5oY1dFZ2NISVFZV0Z4WTJOeGNHQmlVeU56Y25CZ1lIQmhZQkpnWUhJVGMySnlZRWFuTzhOYXo5bXJRSUNnRUY1cjhOQmdRUmQxZDNEZTBIZTl0NzExcWJ1Y0xIR2hYOVl3NTNjMVdYU2pwQjAveTJjb29vcVd1UkRBbE9BNDFna2k0QnRnWUhCQTRUVTB5a0JBS3ZrNkd5QWtvbUluVURBbFJKRTJLWlV3SUZnSWdFQnY3eTFvMkluUUlDTlNlb09UNjRadElCQTE1UFAwZ0M1d09IaHlFdEtvMEEvLzhBT1A0NEErNEVVZ0ltQUVjQUFBQUhBSHNCUFAvNy8vOEFPLy9xQkFJR0FBSW1BRWtBQUFFSEFFUUFuQUFBQUJNQXNBQkZXTEFKTHh1eENScytXYkFoM0RBeEFQLy9BRHYvNmdRSkJnQUNKZ0JKQUFBQkJ3QjNBVGNBQUFBVEFMQUFSVml3Q1M4YnNRa2JQbG13SXR3d01RRC8vd0E3LytvRUFnWUJBaVlBU1FBQUFRWUJaek1BQUJNQXNBQkZXTEFKTHh1eENScytXYkFrM0RBeEFQLy9BRHYvNmdRQ0JjMENKZ0JKQUFBQkJnQnJhUUFBRmdDd0FFVllzQWt2RzdFSkd6NVpzQ2Jjc0RIUU1ESC8vd0FpQUFBQjV3WDVBaVlBOUFBQUFRWUFSSkg1QUJNQXNBQkZXTEFDTHh1eEFocytXYkFGM0RBeEFQLy9BQ0lBQUFMOUJma0NKZ0QwQUFBQkJnQjNLL2tBRXdDd0FFVllzQU12RzdFREd6NVpzQWJjTURFQS8vOEFJZ0FBQXNjRitnSW1BUFFBQUFFSEFXZi9LUC81QUJNQXNBQkZXTEFDTHh1eEFocytXYkFJM0RBeEFQLy9BQ0lBQUFMaEJjWUNKZ0QwQUFBQkJ3QnIvMTcvK1FBV0FMQUFSVml3QWk4YnNRSWJQbG13Q3R5d0ZkQXdNUUFDQUViLzZBUktCaXdBSGdBcUFGNnlFQ3NzRVJJNXNCQVFzQ2pRQUxBQVJWaXdHaThic1JvaFBsbXdBRVZZc0Fndkc3RUlEejVac2hBYUNCRVNPYkFRTDdBYUVMSVpBUW9yV0NIWUcvUlpzQkFRc2lFSENpdFlJZGdiOUZtd0NCQ3lKd0VLSzFnaDJCdjBXVEF4QVJZU0J3Y0dBZ1luTGdJM1BnSVhGaGNtSndjbk55WW5OeFlYTnhjQkppY21CZ2NHRmhjV05qY0RwVnRCRnd3WHFPeUpmOFZnREEySTRJV0thd1JnNEQrNFc2VmIzcFRKUHY3NE5wTi9xeEFPYVdKMm94a0ZGSnYrdkxOV3AvN3NpUU1FZ055QmtQQ0dCQVJabVlxSWVXeEpNTUkyZzNwNS9UbGhCUUsyazNpbEF3WFFyUUQvL3dBTkFBQUVKd1gxQWlZQVVnQUFBUVlCYmw0QkFCTUFzQUJGV0xBREx4dXhBeHMrV2JBVzNEQXhBUC8vQURuLzZBUW5CZ0FDSmdCVEFBQUJCd0JFQUxBQUFBQVRBTEFBUlZpd0JDOGJzUVFiUGxtd0l0d3dNUUQvL3dBNS8rZ0VKd1lBQWlZQVV3QUFBUWNBZHdGTEFBQUFFd0N3QUVWWXNBUXZHN0VFR3o1WnNDUGNNREVBLy84QU9mL29CQ2NHQVFJbUFGTUFBQUVHQVdkSEFBQVRBTEFBUlZpd0JDOGJzUVFiUGxtd0pkd3dNUUQvL3dBNS8rZ0VKd1gxQWlZQVV3QUFBUVlCYmxVQkFCTUFzQUJGV0xBRUx4dXhCQnMrV2JBazNEQXhBUC8vQURuLzZBUW5CYzBDSmdCVEFBQUJCZ0JyZlFBQURBQ3dCQyt3TXR5d0lkQXdNUUFEQUQwQWtBUTZCTThBQXdBUEFCc0FVcklZSEIwUkVqbXdHQkN3QU5Dd0dCQ3dCdEFBc0FNdnNnQUJDaXRZSWRnYjlGbXdBeEN4RFFvcldOZ2IzRm15QncwS0sxZ2gyQnYwV2JBQUVMRVRDaXRZMkJ2Y1diSVpEUW9yV0NIWUcvUlpNREVCSVRjaEFUUTJOellXRlJRR0J3WW1BelEyTnpZV0ZSUUdCd1ltQkJUOEtTVUQyUDNDVGpvOVRrcytPMCtPVEQwNVVVdzlPVkVDUnRRQktUMUxBZ0pNT0RsT0FnSkkvUW81VUFJQ1NUdzdTd0lDU0FBQUF3QXEvM2NFTXdTN0FCc0FKQUF1QUZXeUt5OHdFUkk1c0NzUXNCSFFzQ3NRc0NMUUFMQUFSVml3QlM4YnNRVWJQbG13QUVWWXNCSXZHN0VTRHo1WnNpb0JDaXRZSWRnYjlGbXdLTkN3SHRDd0JSQ3lJUUVLSzFnaDJCdjBXYkFmMExBbjBEQXhFelkyTnpZWEZoYzNGd2NXRnhZSEJnSUdKeVluQnljM0ppY21OeGNHRndFbUp5WUdCaVUySndFV0Z4WTJOelpFRDE1T25OOWVYMkdia25BSEFnZ1VtL1NVVmx0bG01SjJDQU1INFFFVUFaUW1OV1NYVUFJUUFSTCtjQ2dxZWFzZURBSWdkdE5PblFRQ0k1QUIwb1RET2xPZi92NkxBZ0lmbEFIUmdzYzlQSHcvUFFKbkV3SUJnZkdEUER6OW9RNENBNzZ2VkFELy93QksvK2dFTVFZQUFpWUFXUUFBQVFjQVJBQzFBQUFBRXdDd0FFVllzQWd2RzdFSUd6NVpzQlhjTURFQS8vOEFTdi9vQkRFR0FBSW1BRmtBQUFFSEFIY0JVQUFBQUFrQXNBY3ZzQmJjTURFQS8vOEFTdi9vQkRFR0FRSW1BRmtBQUFFR0FXZE1BQUFKQUxBSEw3QVYzREF4QVAvL0FFci82QVF4QmMwQ0pnQlpBQUFCQndCckFJSUFBQUFNQUxBSEw3QWwzTEFVMERBeC8vLy90ZjVGQkJJR0FBSW1BRjBBQUFFSEFIY0JHZ0FBQUFrQXNBRXZzQkxjTURFQUFBTC96ZjVnQkJRR0FBQVJBQjBBVnJJRUhoOFJFam13QkJDd0hOQUFzQWt2c0FCRldMQU5MeHV4RFJzK1diQUFSVml3Qnk4YnNRY1JQbG13QUVWWXNBUXZHN0VFRHo1WnNBMFFzaFlCQ2l0WUlkZ2I5Rm13QkJDeUd3RUtLMWdoMkJ2MFdUQXhBUVlDQmljbUp3TWpBVE1ETmhjV0ZoY1dCemMySmljbUJ3TVdGeFkyQkF3VWlNMTlxR0poN2dGVDdXcDZvNTJ4QlFIekJRTmFYWVZpVlMrSmRxRUNHS1QrOTRRREJIWDkvUWVnL2RaOEJBVGV3VHhCU24rTkJBUi8vaDE1QkFPKy8vLy90ZjVGQkJJRnpRSW1BRjBBQUFFR0FHdE1BQUFNQUxBQkw3QWgzTEFRMERBeC8vLy9wQUFBQk1VRzZnSW1BQ1VBQUFFSEFISUErZ0U2QUJNQXNBQkZXTEFFTHh1eEJCOCtXYkFNM0RBeEFQLy9BQ0wvNkFRZEJiUUNKZ0JGQUFBQkJnQnlVZ1FBQ1FDd0dDK3dMTnd3TVFELy8vK2tBQUFFcmdjZEFpWUFKUUFBQVFjQmFnRXdBVFlBQ1FDd0JDK3dEdHd3TVFELy93QWkvK2dEOUFYbkFpWUFSUUFBQVFjQmFnQ0lBQUFBQ1FDd0dDK3dMOXd3TVFBQUF2K2svbEVFcmdXd0FCY0FHZ0Izc2hVYkhCRVNPYkFWRUxBYTBBQ3dBRVZZc0JVdkc3RVZIejVac0FCRldMQUxMeHV4Q3hFK1diQUFSVml3RXk4YnNSTVBQbG13QUVWWXNCY3ZHN0VYRHo1WnNBc1FzZ1lEQ2l0WUlkZ2I5Rm13RnhDd0VOQ3dFQyt5R1JNVkVSSTVzQmt2c2hFQkNpdFlJZGdiOUZteUdoVVRFUkk1TURFaEZ3Y0dCd1lYRmpjWEJpY2lKamMyTndNaEF5RUJNd0VCSVFNRWNRVXZnd2NGT0JzOURFVlZWMmtDQTdRMi9kK3UvdllERXQ0Qkd2MFdBWmhqQXg5V1Zqa0RBUmVRS3dKdFZKVnBBVUgrclFXdytsQUNId0phQUFBQ0FDTCtVUVBjQkZBQU1BQTdBSnV5R2p3OUVSSTVzQm9Rc0RiUUFMQUFSVml3S0M4YnNTZ2JQbG13QUVWWXNBc3ZHN0VMRVQ1WnNBQkZXTEFBTHh1eEFBOCtXYkFBUlZpd0ZDOGJzUlFQUGxtd0FCQ3dFTkN3RUMreUVpZ0FFUkk1c2hvVUtCRVNPYkFhTDdBb0VMSWdCd29yV0NIWUcvUlpzaVFhSUJFU09VQUpEQ1FjSkN3a1BDUUVYYkFVRUxJeEFRb3JXQ0hZRy9SWnNCb1FzallIQ2l0WUlkZ2I5Rmt3TVNFWEJ3WUhCaGNXTnhjR0p5SW1OelkzSnpVR0p5WW1OellrTXhjM05pY21KeVlHQndjK0FoY1dGZ2NEQndZWEJ5VVdOamMzSnlJR0J3WVdBMG9GTDRNSEJUZ2JQUXhGVlZkcEFnTzFCSWFiamJrR0NBRVk3Sm9PQmdZVWUweHpEZTBIZ05SMnNjWVJVd2dERWdIK0lVdUFMU1Z4aHFBTENFc0RIMVpXT1FNQkY1QXJBbTFVbG1rcEtYMEVBckdJcThRQ1NpY2liQU1DVVVRQ1pKZFVBZ1ROby80RldqczRFcTRDU1RyTkFXVllRMDBBLy84QVpmL29CUTBIU3dJbUFDY0FBQUVIQUhjQitBRkxBQWtBc0F3dnNDSGNNREVBLy84QU9QL3BBL01HQUFJbUFFY0FBQUVIQUhjQklRQUFBQWtBc0JFdnNCL2NNREVBLy84QVpmL29CUTBIVEFJbUFDY0FBQUVIQVdjQTlBRkxBQWtBc0F3dnNDRGNNREVBLy84QU9QL3BBKzRHQVFJbUFFY0FBQUVHQVdjZEFBQUpBTEFSTDdBZTNEQXhBUC8vQUdYLzZBVU5CeXdDSmdBbkFBQUJCd0ZyQWRVQlZBQUpBTEFNTDdBbjNEQXhBUC8vQURqLzZRUHVCZUVDSmdCSEFBQUJCd0ZyQVA0QUNRQUpBTEFSTDdBbDNEQXhBUC8vQUdYLzZBVU5CMUFDSmdBbkFBQUJCd0ZvQVFzQlN3QUpBTEFNTDdBajNEQXhBUC8vQURqLzZRUHdCZ1VDSmdCSEFBQUJCZ0ZvTkFBQUNRQ3dFUyt3SWR3d01RRC8vd0FuQUFBRTRBZENBaVlBS0FBQUFRY0JhQUNiQVQwQUV3Q3dBRVZZc0FFdkc3RUJIejVac0J6Y01ERUEvLzhBTy8vbkJkVUdBZ0FtQUVnQUFBQUhBNnNFdndUOEFBTC8vd0FBQlA0RnNBQVBBQjRBYWJJZUh5QVJFam13SGhDd0R0QUFzQUJGV0xBRkx4dXhCUjgrV2JBQVJWaXdBQzhic1FBUFBsbXlBd0FGRVJJNWZMQURMeGl5QWdjS0sxZ2gyQnYwV2JBUjBMQUFFTElUQVFvcldDSFlHL1Jac0FVUXNod0JDaXRZSWRnYjlGbXdBeEN3SGRDd0h0QXdNVE1USXpjekV3VXlCQklIQndZQ0JDTVRJd01YTWlRM05pY21KaWNuQXpORmNiY2V0bTRCaXJZQkIzWVhDeDdOL3J6Q245MU9rc1lCQlNVYUJ3bVhocmxMM2dLTXFnSjZBYlgrd2NCUHlmN0pyQUtNL2o0Qis5MlljWkdrQkFIK1VnQUFBZ0E3LytjRkdRWUFBQm9BSlFDTXNnVW1KeEVTT2JBRkVMQWowQUN3Rnkrd0FFVllzQkF2RzdFUUd6NVpzQUJGV0xBREx4dXhBdzgrV2JBQVJWaXdCaThic1FZUFBsbXlMeGNCWGJJUEZ3RmRzaFlYQXhFU09iQVdMN0lUQndvcldDSFlHL1Jac0FIUXNnUUdFQkVTT2JJU0VBWVJFam13RmhDd0dkQ3dCaEN5SGdFS0sxZ2gyQnYwV2JBUUVMSWpBUW9yV0NIWUcvUlpNREVCSXdNak53WW5KaVluSmpjM05oSTJGeFlYTnlNM016Y3pCek1CQmhZWEZqY1RKaWNtQmdUN3FkWFVFSDZxbDdVSEF3WURGSXpPZnFWZEx2QWU4UnZ1R2FyOEVRZGJXb2xrVVMrSGlLWUV5ZnMzY0lrRUF1VytQanNWcHdFS2d3TUVkL1dxalkzOFRueVNBZ1NKQWRGOUJBVDRBUC8vQUNjQUFBUzZCdkVDSmdBcEFBQUJCd0J5QU1JQlFRQVRBTEFBUlZpd0JpOGJzUVlmUGxtd0Rkd3dNUUQvL3dBNy8rb0VCZ1cwQWlZQVNRQUFBUVlBY2pzRUFBa0FzQWt2c0NEY01ERUEvLzhBSndBQUJMb0hKQUltQUNrQUFBRUhBV29BK0FFOUFBa0FzQVl2c0EvY01ERUEvLzhBTy8vcUJBSUY1d0ltQUVrQUFBRUdBV3B4QUFBSkFMQUpMN0FqM0RBeEFQLy9BQ2NBQUFTNkJ4NENKZ0FwQUFBQkJ3RnJBWnNCUmdBSkFMQUdMN0FVM0RBeEFQLy9BRHYvNmdRQ0JlRUNKZ0JKQUFBQkJ3RnJBUlFBQ1FBSkFMQUpMN0FvM0RBeEFBQUJBQ2YrVVFTNkJiQUFIQUNBc2hFZEhoRVNPUUN3QUVWWXNCY3ZHN0VYSHo1WnNBQkZXTEFRTHh1eEVCRStXYkFBUlZpd0JDOGJzUVFQUGxtd0FFVllzQlV2RzdFVkR6NVpzaHNWRnhFU09iQWJMN0lCQVFvcldDSFlHL1Jac0JVUXNnSUJDaXRZSWRnYjlGbXdBOUN3RUJDeUN3TUtLMWdoMkJ2MFdiQVhFTElaQVFvcldDSFlHL1JaTURFQklRTWhCeU1YQndZSEJoY1dOeGNHSnlJbU56WTNJUk1oQnlFRElRUFQvYnhPQXFZamNRVXZnd2NGT0JzOURFVlZWMmtDQTViOXNQd0RseVQ5WVVZQ1JRS0sva0RLQXg5V1Zqa0RBUmVRS3dKdFZJeGdCYkRNL200QUFnQTgvbXdFQ0FSUkFDTUFMQUNoc2dZdExoRVNPYkFHRUxBazBBQ3dBRVZZc0Jrdkc3RVpHejVac0FCRldMQU1MeHV4REJFK1diQUFSVml3RVM4YnNSRVBQbG13QTlDeUppMFpFUkk1c0NZdnNvOG1BVjIwSHlZdkpnSnh0SjhtcnlZQ2NiUmZKbThtQW5HMHZ5YlBKZ0pkdE84bS95WUNjYlF2Smo4bUFuS3lIUWNLSzFnaDJCdjBXYkFSRUxJaEFRb3JXQ0hZRy9SWnNpTVJHUkVTT2JBWkVMSWtBUW9yV0NIWUcvUlpNREVsQmdjSEJnY0dGeFkzRndZbklpWTNOamNtQWpjM05oSTJGeFlTQndjaEJoWVhGamNESmdNRk56WW5KaVlEcGxXTk1XMElCVGdiUFF4RlZWZHBBZ0pndDh3UkF4S2Q2b25MeXhrTy9WY0plbXVaZ2NtOFhnSEJCQWNHQzFxMmVESWhURkk1QXdFWGtDc0NiVlJ0VlJrQkhNNHBwUUVIaUFNRS90cnNhSUdlQWdXS0FsZ0cvdkFCRlM0c1IxTC8vd0FuQUFBRXVnZENBaVlBS1FBQUFRY0JhQURSQVQwQUV3Q3dBRVZZc0FZdkc3RUdIejVac0JIY01ERUEvLzhBTy8vcUJBWUdCUUltQUVrQUFBRUdBV2hLQUFBSkFMQUpMN0FrM0RBeEFQLy9BR3YvNmdVV0Iwd0NKZ0FyQUFBQkJ3Rm5BUEVCU3dBSkFMQU5MN0FqM0RBeEFQLy8vL2YrVHdSQ0JnRUNKZ0JMQUFBQkJnRm5QZ0FBQ1FDd0JDK3dMTnd3TVFELy93QnIvK29GRmdjeUFpWUFLd0FBQVFjQmFnRXZBVXNBQ1FDd0RTK3dKZHd3TVFELy8vLzMvazhFUWdYbkFpWUFTd0FBQVFZQmFud0FBQWtBc0FRdnNDN2NNREVBLy84QWEvL3FCUllITEFJbUFDc0FBQUVIQVdzQjBnRlVBQWtBc0EwdnNDcmNNREVBLy8vLzkvNVBCRUlGNFFJbUFFc0FBQUVIQVdzQkh3QUpBQWtBc0FRdnNEUGNNREVBLy84QWEvMzVCUllGeUFJbUFDc0FBQUFIQTZzQmJ2NlMvLy8vOS81UEJFSUdxd0ltQUVzQUFBRUhBKzBCTkFCK0FBa0FzQVF2c0MvY01ERUEvLzhBSndBQUJZY0hQZ0ltQUN3QUFBRUhBV2NCRWdFOUFCTUFzQUJGV0xBSEx4dXhCeDgrV2JBUTNEQXhBUC8vQUEwQUFBUDVCMTRDSmdCTUFBQUJCd0ZuQUZJQlhRQUpBTEFSTDdBVTNEQXhBQUFDQUM0QUFBWGJCYkFBRXdBWEFHc0FzQUJGV0xBUEx4dXhEeDgrV2JBQVJWaXdDQzhic1FnUFBsbXlGQWdQRVJJNXNCUXZzaEFVRHhFU09iQVFMN0FBMExBUUVMSVhCd29yV0NIWUcvUlpzQVBRc0FnUXNBWFFzQlFRc2djQkNpdFlJZGdiOUZtd0Z4Q3dDdEN3RUJDd0RkQ3dEeEN3RXRBd01RRXpCeU1ESXhNaEF5TVRJemN6RXpNRElSTXpBU0UzSVFWZmZCMTdzL1p3L1lwdzlyTjRISGd0OXk0Q2RpMzIvQ3NDZGlIOWlnU3VvdnYwQW9mOWVRUU1vZ0VDL3Y0QkF2Mml1Z0FCQUNzQUFBUVhCZ0FBR2dCMHNnTWJIQkVTT1FDd0dDK3dBRVZZc0FRdkc3RUVHejVac0FCRldMQVJMeHV4RVE4K1diQUFSVml3Q1M4YnNRa1BQbG15THhnQlhiSVBHQUZkc2hvUkdCRVNPYkFhTDdJQkJ3b3JXQ0hZRy9SWnNnSVJCQkVTT2JBRUVMSU9BUW9yV0NIWUcvUlpzQUVRc0JQUXNCb1FzQmJRTURFQkl3TTJGeFlXQndNakV6WW5KaWNtQndNakV5TTNNemN6QnpNQ3krUXloNnlhbFJOMDdYWUZBdzJEaEdpSDdkUy9IcjRaN2h6aUJNZisvSTRFQXRhOS9VZ0N1eXNsZWdNQ2hQejZCTWVxajQ4QS8vOEFOUUFBQTBvSE1nSW1BQzBBQUFFSEFXNy9nUUUrQUFrQXNBSXZzQTdjTURFQS8vOEFGQUFBQXY4RjdnSW1BUFFBQUFFSEFXNy9Odi82QUFrQXNBSXZzQTdjTURFQS8vOEFOUUFBQTBZRzhRSW1BQzBBQUFFSEFITC9ld0ZCQUJNQXNBQkZXTEFDTHh1eEFoOCtXYkFGM0RBeEFQLy9BQjhBQUFMN0JhMENKZ0QwQUFBQkJ3QnkvekQvL1FBVEFMQUFSVml3QWk4YnNRSWJQbG13QmR3d01RRC8vd0ExQUFBREhRY2tBaVlBTFFBQUFRY0Jhdit4QVQwQUNRQ3dBaSt3Qjl3d01RRC8vd0FpQUFBQzBnWGdBaVlBOUFBQUFRY0JhdjltLy9rQUNRQ3dBaSt3Qjl3d01RRC8vLytPL2xjQ0tBV3dBaVlBTFFBQUFBWUJiZVlHLy8vL2R2NVJBZ2tGMkFJbUFFMEFBQUFHQVczT0FQLy9BRFVBQUFKVUJ4NENKZ0F0QUFBQkJ3RnJBRk1CUmdBSkFMQUNMN0FNM0RBeEFBQUJBQ0lBQUFITEJEb0FBd0FkQUxBQVJWaXdBaThic1FJYlBsbXdBRVZZc0FBdkc3RUFEejVaTURFaEl4TXpBUS90dk8wRU92Ly9BRFgvNXdhY0JiQUFKZ0F0QUFBQUJ3QXVBanNBQVAvL0FCLytSZ1FEQmRnQUpnQk5BQUFBQndCT0FnVUFBUC8vQUFQLzV3VXhCemNDSmdBdUFBQUJCd0ZuQVpJQk5nQUpBTEFBTDdBUTNEQXhBUC8vL3cvK1NBTEhCZDhDSmdGa0FBQUJCd0ZuL3lqLzNnQVRBTEFBUlZpd0RDOGJzUXdiUGxtd0Vkd3dNUUQvL3dBbi9ma0ZjUVd3QWlZQUx3QUFBQWNEcXdGZi9wTC8vd0FSL2ZrRVNnWUFBaVlBVHdBQUFBY0Rxd0R1L3BJQUFRQWhBQUFFalFRNkFBd0FYd0N3QUVWWXNBUXZHN0VFR3o1WnNBQkZXTEFJTHh1eENCcytXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQXN2RzdFTER6NVpzZ1lDQkJFU09iQUdMN1FmQmk4R0FuR3lqd1lCWGJJQkFRb3JXQ0hZRy9SWnNnb0JCaEVTT1RBeEFTTURJeE16QXpNQklRRUJJUUhMYzB2c3ZPeExTQUdSQVRiK0J3RkYvdVVCclA1VUJEcitVQUd3L2VmOTN3RC8vd0FuQUFBRHd3YzJBaVlBTUFBQUFRY0Fkd0JxQVRZQUV3Q3dBRVZZc0FVdkc3RUZIejVac0FqY01ERUEvLzhBSHdBQUF6MEhrUUltQUZBQUFBRUhBSGNBYXdHUkFCTUFzQUJGV0xBREx4dXhBeUUrV2JBRzNEQXhBUC8vQUNmOStRUERCYkFDSmdBd0FBQUFCd09yQVNYK2t2Ly8vNkw5K1FJWEJnQUNKZ0JRQUFBQUJ3T3IvOVAra3YvL0FDY0FBQVBmQmJFQ0pnQXdBQUFCQndPckFza0Vxd0FRQUxBQVJWaXdDaThic1FvZlBsa3dNZi8vQUI4QUFBTjBCZ0lBSmdCUUFBQUJCd09yQWw0RS9BQUdBTEFJTHpBeC8vOEFKd0FBQThNRnNBSW1BREFBQUFBSEFXc0JYUDNVLy84QUh3QUFBdk1HQUFBbUFGQUFBQUFIQVdzQTh2MnZBQUVBSVFBQUE5SUZzQUFOQUZzQXNBQkZXTEFNTHh1eERCOCtXYkFBUlZpd0JpOGJzUVlQUGxteUFRd0dFUkk1c0FFdnNBRFFzQUVRc2dJSENpdFlJZGdiOUZtd0E5Q3dCaEN5QkFFS0sxZ2gyQnYwV2JBREVMQUkwTEFKMExBQUVMQUwwTEFLMERBeEFUY0hCd01oQnlFVEJ6YzNFek1CeGZBYzcxb0NnaVA4aDNDRkc0Vnk5d05zUnB0SC9mcktBb0ltbXljQ2tnQUFBUUFmQUFBQ1d3WUFBQXNBU2dDd0FFVllzQW92RzdFS0lUNVpzQUJGV0xBRUx4dXhCQTgrV2JJQkJBb1JFam13QVMrd0FOQ3dBUkN5QWdjS0sxZ2gyQnYwV2JBRDBMQUcwTEFIMExBQUVMQUowTEFJMERBeEFUY0hCd01qRXdjM054TXpBY0taSEppQTduS01ISXAvN1FOL05KdzEvUjRDaXkrY0x3TFpBUC8vQUNjQUFBV0dCellDSmdBeUFBQUJCd0IzQWg0Qk5nQVRBTEFBUlZpd0NDOGJzUWdmUGxtd0ROd3dNUUQvL3dBTkFBQUVKZ1lBQWlZQVVnQUFBUWNBZHdGVUFBQUFDUUN3QXkrd0Zkd3dNUUQvL3dBbi9ma0ZoZ1d3QWlZQU1nQUFBQWNEcXdHUS9wTC8vd0FOL2ZrRCtnUlNBaVlBVWdBQUFBY0Rxd0Q2L3BMLy93QW5BQUFGaGdjN0FpWUFNZ0FBQVFjQmFBRXhBVFlBRXdDd0FFVllzQVl2RzdFR0h6NVpzQS9jTURFQS8vOEFEUUFBQkNNR0JRSW1BRklBQUFFR0FXaG5BQUFKQUxBREw3QVgzREF4QVAvL0FBMEFBQVA2QmdNQ0pnQlNBQUFCQndPckFFQUUvUUFHQUxBWEx6QXhBQUVBSS81R0JYZ0ZzQUFUQUdleUJoUVZFUkk1QUxBQVJWaXdBQzhic1FBZlBsbXdBRVZZc0JBdkc3RVFIejVac0FCRldMQUVMeHV4QkJFK1diQUFSVml3REM4YnNRd1BQbG13QUVWWXNBNHZHN0VPRHo1WnNBUVFzZ2tCQ2l0WUlkZ2I5Rm15RFFBTUVSSTVzaElPQUJFU09UQXhBUUVHQmljaUp6Y1dNekkzTndFREl4TXpBUk1GZVA3L0dOZWxPMHdqTmltQklnZitTTGYyL2U0QnU3Y0ZzUG9ZdHN3Q0ZNWU94Q2dFSC92aEJiRDc0Z1FlQUFBQkFCSCtSZ1FHQkZJQUd3QmhzZ0ljSFJFU09RQ3dBRVZZc0FNdkc3RURHejVac0FCRldMQUFMeHV4QUJzK1diQUFSVml3Q2k4YnNRb1JQbG13QUVWWXNCa3ZHN0VaRHo1WnNnRURHUkVTT2JBS0VMSVBBUW9yV0NIWUcvUlpzQU1Rc2hZQkNpdFlJZGdiOUZrd01RRUhOaGNXRmdjREJnWW5KaWMzRmpNeU54TTJKeVluSmdjREl4TUJwUmVHdTZHV0ZuWVkwS05CUkNNNUo0RWZkZ1VDQjR1RFpZM3V2QVE3bUs4RUErYkUvU0MxeGdJQkU4VVB1d0xUTFNtTUJRUnEvTjhFT3YvL0FHdi81d1VoQnVvQ0pnQXpBQUFCQndCeUFSRUJPZ0FKQUxBS0w3QWozREF4QVAvL0FEbi82QVFuQmJRQ0pnQlRBQUFCQmdCeVR3UUFDUUN3QkMrd0lkd3dNUUQvL3dCci8rY0ZJUWNkQWlZQU13QUFBUWNCYWdGSEFUWUFDUUN3Q2krd0p0d3dNUUQvL3dBNS8rZ0VKd1huQWlZQVV3QUFBUWNCYWdDRkFBQUFDUUN3QkMrd0pOd3dNUUQvL3dCci8rY0Zkd2MxQWlZQU13QUFBUWNCYndHT0FUWUFEQUN3Q2krd0pkeXdKOUF3TWYvL0FEbi82QVMxQmY4Q0pnQlRBQUFCQndGdkFNd0FBQUFNQUxBRUw3QWozTEFsMERBeEFBSUFVUC91QjRvRnhRQVhBQ1VBa2JJYkppY1JFam13R3hDd0Z0QUFzQUJGV0xBTUx4dXhEQjgrV2JBQVJWaXdEaThic1E0ZlBsbXdBRVZZc0FNdkc3RUREejVac0FCRldMQUFMeHV4QUE4K1diQU9FTElRQVFvcldDSFlHL1Jac2hNQURoRVNPYkFUTDdJVUFRb3JXQ0hZRy9SWnNBQVFzaGNCQ2l0WUlkZ2I5Rm13QXhDeUdBRUtLMWdoMkJ2MFdiQU1FTElkQVFvcldDSFlHL1JaTURFaElRY0hKaVlDTnhNMkVpUXpGeGNoQnlFRElRY2hBeUVGRmpjVEppY21CZ2NEQmhjV0ZnYVUvTVhFVjU3bmFSUXlITFVCRTZWS3p3TlNKUDFoUmdKRkpQMjlUZ0ttKzVCUGU4WnpUS0RhSGk4SkJnaUJFUUVFblFFUW9RRTlxUUVOa2dJVHpQNXV5UDVBR1FNTUJEc09BZ0xad3Y3VFNFWjBpQUFBQXdCQy8rZ0czQVJTQUNBQUx3QTVBTGl5R2pvN0VSSTVzQm9Rc0NuUXNCb1FzRFBRQUxBQVJWaXdDUzhic1FrYlBsbXdBRVZZc0FRdkc3RUVHejVac0FCRldMQWNMeHV4SEE4K1diQUFSVml3Rnk4YnNSY1BQbG15QndrY0VSSTVzalFKSEJFU09iQTBMN0tQTkFGZHRCODBMelFDY2JJTkJ3b3JXQ0hZRy9SWnNCY1FzaEVCQ2l0WUlkZ2I5Rm15RXhjSkVSSTVzaG9KSEJFU09iQWNFTElsQVFvcldDSFlHL1Jac0FRUXNpd0JDaXRZSWRnYjlGbXdDUkN5TUFFS0sxZ2gyQnYwV1RBeEV6WVNOaGNXRmhjMkZ4WVNCd2NoQmhZWEZqY1hCZ1luSmlZbkJpY3VBamN6QnhjV0Z4WTJOemMxSmljbUJnY0JKZ1lISVRjMkp5WW1WQlNZN3BSeXR6R216c1BKR2hiOWNBMXJhSnFhUVVQTWUzYTFNYWJsaXNKWUVPd0ZBUTZzZTZRVkJ3aTBjcUFjQS90U2hUWUJwd1VIQlFoVEFpQ2hBUVNNQWdKZVViUUVCUDd6MTQrRm53TUZYNkErUVFJQ1hFNnhCQUtPK1paTEx0OEhBOGFsWVIzeUNBT3hwQUZUQVhxTUhDMHBRMDMvL3dBbkFBQUUyQWMyQWlZQU5nQUFBUWNBZHdHb0FUWUFDUUN3QkMrd0d0d3dNUUQvL3dBUUFBQURoZ1lBQWlZQVZnQUFBUWNBZHdDMEFBQUFDUUN3Q3krd0VOd3dNUUQvL3dBbi9ma0UyQVd3QWlZQU5nQUFBQWNEcXdFbS9wTC8vLytjL2ZrQzd3UlRBaVlBVmdBQUFBY0RxLy9OL3BMLy93QW5BQUFFMkFjN0FpWUFOZ0FBQVFjQmFBQzdBVFlBQ1FDd0JDK3dITnd3TVFELy93QVFBQUFEaEFZRkFpWUFWZ0FBQVFZQmFNZ0FBQWtBc0FzdnNCTGNNREVBLy84QUpQL3FCTHNITmdJbUFEY0FBQUVIQUhjQnhBRTJBQWtBc0FvdnNDemNNREVBLy84QUhQL3BCQU1HQUFJbUFGY0FBQUVIQUhjQk1RQUFBQWtBc0FndnNDZmNNREVBLy84QUpQL3FCTHNITndJbUFEY0FBQUVIQVdjQXdBRTJBQWtBc0FvdnNDdmNNREVBLy84QUhQL3BBOHdHQVFJbUFGY0FBQUVHQVdjdEFBQUpBTEFJTDdBbTNEQXhBUC8vQUNUK1BRUzdCY2NDSmdBM0FBQUFCd0I3QVpBQUFQLy9BQnorTkFQRUJGQUNKZ0JYQUFBQUJ3QjdBVUwvOS8vL0FDVC82Z1M3QnpzQ0pnQTNBQUFCQndGb0FOY0JOZ0FKQUxBS0w3QXUzREF4QVAvL0FCei82UVFBQmdVQ0pnQlhBQUFCQmdGb1JBQUFDUUN3Q0Mrd0tkd3dNUUQvL3dDYy9rQUZJZ1d3QWlZQU9BQUFBQWNBZXdGL0FBUC8vd0E3L2owQ3JnVkJBaVlBV0FBQUFBY0Fld0RWQUFELy93Q2NBQUFGSWdjN0FpWUFPQUFBQVFjQmFBREpBVFlBRXdDd0FFVllzQVl2RzdFR0h6NVpzQTNjTURFQS8vOEFPLy90QThnR2d3QW1BRmdBQUFBSEE2c0NzZ1Y5QUFFQW5BQUFCU0lGc0FBUEFFd0FzQUJGV0xBS0x4dXhDaDgrV2JBQVJWaXdBaThic1FJUFBsbXlEd29DRVJJNXNBOHZzZ0FIQ2l0WUlkZ2I5Rm13Qk5Dd0R4Q3dCdEN3Q2hDeUNBRUtLMWdoMkJ2MFdiQU0wREF4QVNNREl4TWpOek1USVRjaEJ5RURNd08reVlqMmljMGV6RFQrU3lRRVlpVCtTRFRLQXhMODdnTVNxZ0Vvek16KzJBQUFBZi9pLyswQ3JnVkJBQjRBZ0xJWEh5QVJFamtBc0FCRldMQVZMeHV4RlJzK1diQUFSVml3R1M4YnNSa2JQbG13QUVWWXNBc3ZHN0VMRHo1WnNoNFpDeEVTT2JBZUw3SUFCd29yV0NIWUcvUlpzQXNRc2dZQkNpdFlJZGdiOUZtd0FCQ3dEOUN3SGhDd0VkQ3dGUkN5RXdFS0sxZ2gyQnYwV2JBVkVMQVgwTEFYTDdBVEVMQWIwTEFjMERBeEFTTURCaGNXRnpJM0J3WWpKaVkzRXlNM016Y2pOek1UTXdNekJ5TUhNd0p0MFMwREFnWktKUzhRU2t0OGV3MHV6eDdORzYwZ3JDN3VMcmtmdWh6U0FqZis4UmtVUVFNSnZoVUNwWWdCRzZxbHRBRUgvdm0wcGYvL0FGdi81Z1V2QnlzQ0pnQTVBQUFCQndGdUFPOEJOd0FKQUxBQUw3QWQzREF4QVAvL0FFci82QVF4QmZVQ0pnQlpBQUFCQmdGdVdnRUFDUUN3Qnkrd0h0d3dNUUQvL3dCYi8rWUZMd2JxQWlZQU9RQUFBUWNBY2dEcEFUb0FDUUN3QUMrd0U5d3dNUUQvL3dCSy8rZ0VNUVcwQWlZQVdRQUFBUVlBY2xRRUFBa0FzQWN2c0JUY01ERUEvLzhBVy8vbUJTOEhIUUltQURrQUFBRUhBV29CSHdFMkFBa0FzQUF2c0JiY01ERUEvLzhBU3Yvb0JERUY1d0ltQUZrQUFBRUhBV29BaWdBQUFBa0FzQWN2c0JmY01ERUEvLzhBVy8vbUJTOEhsUUltQURrQUFBRUhBV3dCZXdGcUFBd0FzQUF2c0J6Y3NCL1FNREgvL3dCSy8rZ0VNUVpmQWlZQVdRQUFBUWNCYkFEbUFEUUFEQUN3Qnkrd0hkeXdJTkF3TWYvL0FGdi81Z1ZQQnpVQ0pnQTVBQUFCQndGdkFXWUJOZ0FNQUxBQUw3QVYzTEFYMERBeC8vOEFTdi9vQkxvRi93SW1BRmtBQUFFSEFXOEEwUUFBQUF3QXNBY3ZzQmJjc0JqUU1ERUFBUUJiL29nRk1nV3dBQ0FBWWJJSElTSVJFamtBc0FCRldMQUFMeHV4QUI4K1diQUFSVml3Rnk4YnNSY2ZQbG13QUVWWXNBMHZHN0VORno1WnNBQkZXTEFTTHh1eEVnOCtXYklFRWdBUkVqbXdEUkN5Q0FNS0sxZ2gyQnYwV2JBU0VMSWNBUW9yV0NIWUcvUlpNREVCQXdZR0J3WUhCaGNXTnhjR0p5SW1OelkzTGdJM0V6TURCaFlYRmpZM0V3VXlwUmUrbFhvS0JUZ2JQUXhGVlZkcEFnSTlrTkpnRWFYMnBSSjJlNGUwR2FjRnNQd3pwUFk0VUZnNUF3RVhrQ3NDYlZSWVNBaUUzNHdEenZ3eGk1d0VCSnFRQTlRQUFBRUFTdjVSQkRFRU9nQWpBSGV5RWlRbEVSSTVBTEFBUlZpd0dDOGJzUmdiUGxtd0FFVllzQ0V2RzdFaEd6NVpzQUJGV0xBTEx4dXhDeEUrV2JBQVJWaXdBQzhic1FBUFBsbXdBRVZZc0JNdkc3RVREejVac0FzUXNnWURDaXRZSWRnYjlGbXdBQkN3RU5Dd0VDK3lFU0VBRVJJNXNCTVFzaDRCQ2l0WUlkZ2I5Rmt3TVNFWEJ3WUhCaGNXTnhjR0p5SW1OelkzTndZbkxnSTNFek1EQmhjV0Z4WTNFek1EQTF3Rkw0TUhCVGdiUFF4RlZWZHBBZ094RW51NWFZczdESFh0ZGdRRENuT2RZWWp0dXdNZlZsWTVBd0VYa0NzQ2JWU1daMXFEQkFKa3Mza0N2UDFCSlNOOEJRYUVBd3I3eGdELy93QzNBQUFIT2djM0FpWUFPd0FBQVFjQlp3Ry9BVFlBRXdDd0FFVllzQXd2RzdFTUh6NVpzQS9jTURFQS8vOEFkd0FBQmZnR0FRSW1BRnNBQUFFSEFXY0JBZ0FBQUJNQXNBQkZXTEFMTHh1eEN4cytXYkFSM0RBeEFQLy9BS0VBQUFWTkJ6Y0NKZ0E5QUFBQkJ3Rm5BTGtCTmdBVEFMQUFSVml3QVM4YnNRRWZQbG13Qzl3d01RRC8vLysxL2tVRUVnWUJBaVlBWFFBQUFRWUJaeFlBQUJNQXNBQkZXTEFQTHh1eER4cytXYkFVM0RBeEFQLy9BS0VBQUFWTkJ3TUNKZ0E5QUFBQkJ3QnJBTzhCTmdBTUFMQUJMN0FhM0xBSjBEQXgvLy8vNVFBQUJPY0hOZ0ltQUQ0QUFBRUhBSGNCdVFFMkFCTUFzQUJGV0xBSEx4dXhCeDgrV2JBTTNEQXhBUC8vLytjQUFBUHhCZ0FDSmdCZUFBQUJCd0IzQVI4QUFBQVRBTEFBUlZpd0J5OGJzUWNiUGxtd0ROd3dNUUQvLy8vbEFBQUU1d2NYQWlZQVBnQUFBUWNCYXdHV0FUOEFDUUN3Qnkrd0V0d3dNUUQvLy8vbkFBQUQ1QVhoQWlZQVhnQUFBUWNCYXdEOEFBa0FDUUN3Qnkrd0V0d3dNUUQvLy8vbEFBQUU1d2M3QWlZQVBnQUFBUWNCYUFETUFUWUFDUUN3Qnkrd0R0d3dNUUQvLy8vbkFBQUQ3Z1lGQWlZQVhnQUFBUVlCYURJQUFBa0FzQWN2c0E3Y01ERUFBQUVBSGdBQUF5QUdHZ0FOQURLeUFnNFBFUkk1QUxBQVJWaXdCQzhic1FRaFBsbXdBRVZZc0FBdkc3RUFEejVac0FRUXNna0JDaXRZSWRnYjlGa3dNVE1UTmpZWEZoY0hKaWNpQmdjREhza1gycW84WWl3c0xWQm9EOG9FbjdIS0FnRVh1QXdDWTFuN1pnQUNBRTcvNkFVdkJjTUFHZ0FrQUY2eURTVW1FUkk1c0EwUXNCelFBTEFBUlZpd0VpOGJzUklmUGxtd0FFVllzQUF2RzdFQUR6NVpzZ2dTQUJFU09iQUlMN0FTRUxJTkFRb3JXQ0hZRy9SWnNBQVFzaHNCQ2l0WUlkZ2I5Rm13Q0JDeUhnRUtLMWdoMkJ2MFdUQXhCU1lrSnljbU56Y0ZOaWNtSmljbUJ5YzJJUllFRWdjSEJnSUVKeFkyTnlFSEJoY1dGZ0pKMC83N0dnUUZEQllEcnc4S0VxcUxwTkVlaGdFZnZnRUxkeGtQSHN2KzFwMlIya1A5UlFjT0NoQ1JGQVRyMURKVVdvOEJXMU9IbHdNRFNjbFVBN0QrdzhSb3pmNjhydGNEeTlFaVRrTnNkd0FCLzByK1JnTk1CaGtBSFFCeHNnSWVIeEVTT1FDd0FFVllzQlF2RzdFVUlUNVpzQUJGV0xBUEx4dXhEeHMrV2JBQVJWaXdIQzhic1J3YlBsbXdBRVZZc0FVdkc3RUZFVDVac0J3UXNnQUJDaXRZSWRnYjlGbXdCUkN5Q2dFS0sxZ2gyQnYwV2JBQUVMQU4wTEFPMExBVUVMSVpBUW9yV0NIWUcvUlpNREVCSXdNR0JpY21KemNXRnpJM0V5TTNNemMyTmhjV0Z3Y21JeUlIQnpNQ29jT1VFOGlpUTBBZ055UjRIWmVoSGFBTUZkaXFOV2NxTnlla0d3dkRBNGI4Tks3R0FnSVN2ZzRDcVFQVHRHV3l5QUlCRnJzTXhWSUFBZ0JiLytnR0pnWXVBQm9BS3dCYnNpQXNMUkVTT2JBZ0VMQWEwQUN3QUVWWXNBb3ZHN0VLSHo1WnNBQkZXTEFBTHh1eEFBOCtXYklOQ2dBUkVqbXdEUyt5RXdnS0sxZ2gyQnYwV2JBS0VMSWZBUW9yV0NIWUcvUlpzQUFRc2lnQkNpdFlJZGdiOUZrd01RVXVBaWNtRWhJM05oY1dGaGMyTmpjekFnVVdGeFlDQWdjR0V6YzJKaWNtQWc4Q0JoWVdGeFlTTndKSWo5UjdDQWMvbVd5cjNuZkZRMUpsRTdVZy92SVZCUVU5bzNXbDlBa0tnNGFzNVNNSkNBWTFkMW1sNGlnVUE0SDNvWDRCVUFFU1Y0a0VBbGhRRDRDRi9xNUhaMldHL3AzKzIxaDdBeGhxdGRBRUJmN3U5VUJwYmJ4aEF3Y0JBUE1BQWdBMi8rWUZCUVNvQUJnQUp3QmJzaDBvS1JFU09iQWRFTEFFMEFDd0FFVllzQVF2RzdFRUd6NVpzQUJGV0xBVkx4dXhGUTgrV2JJSEJCVVJFam13QnkreURnZ0tLMWdoMkJ2MFdiQVZFTEljQVFvcldDSFlHL1Jac0FRUXNpTUJDaXRZSWRnYjlGa3dNUk0yRWpZWEZoWVhOamMzTXdZR0J4WVhGZ2NDQUNjbUFqY1hGaFlYRmpZM056WW1KeVlHQndaUkVwM3hsR0t2UG1jYkRxRU9jMjRQQXdJSUpmN0szZFRnR09vRFkxbDZxQmdIQTJOaWVxWVpDQUlnb0FFR2l3SUNTVTBwZkV5UXFTZElSMGRKL3ZIK3pBVUdBVFhsYzJsL0JBUENxV0o5bFFRRHc2eFJBQUVBVy8vb0JxMEdBZ0FhQUZTeUZ4c2NFUkk1QUxBQVJWaXdBQzhic1FBZlBsbXdBRVZZc0JFdkc3RVJIejVac0FCRldMQU1MeHV4REE4K1diSUJBQXdSRWptd0FTK3lDQWdLSzFnaDJCdjBXYkFNRUxJV0FRb3JXQ0hZRy9SWk1ERUJCelkyTnpjR0JnY0RCZ0FuTGdJM0V6TURCaFlYRmpZM0V3VXlLR3AzRmEwVDFjMXNJdjY1OEpYY1p4R2w5cVVTZFgySHN4bW5CYkRmQzRtY0FkYmlEUDJrNlA3dUJBTis1SkVEenZ3eGlwNEVCSnFSQTlRQUFBRUFTdi9vQldFRWxBQWJBR2l5RkJ3ZEVSSTVBTEFBUlZpd0RTOGJzUTBiUGxtd0FFVllzQll2RzdFV0d6NVpzQUJGV0xBRUx4dXhCQTgrV2JBQVJWaXdDQzhic1FnUFBsbXlHQllFRVJJNXNCZ3ZzZ01JQ2l0WUlkZ2I5Rm15QmhZRUVSSTVzQWdRc2hNQkNpdFlJZGdiOUZrd01RRUdCZ2NESXpjR0p5NENOeE16QXdZWEZoY1dOeE16QnpZMk53VmhENlNsazk0VmU3bHBpenNNZGUxMUJBTUhkcDVmaU8wZlVsSVNCSlN1cVF6OHoydURCQUprczNrQ3ZQMUJKU044QlFhRUF3cUxEVng3Ly8vL0QvNUlBdnNGNHdJbUFXUUFBQUVIQVdqL1AvL2VBQWtBc0FBdnNCSGNNREVBLy84QWEvL3FCUllIU3dJbUFDc0FBQUVIQUhjQjlRRkxBQWtBc0EwdnNDVGNNREVBLy8vLzkvNVBCRUlHQUFJbUFFc0FBQUVIQUhjQlFnQUFBQWtBc0FRdnNDM2NNREVBLy84QUp3QUFCWVlITmdJbUFESUFBQUVIQUVRQmd3RTJBQk1Bc0FCRldMQUdMeHV4Qmg4K1diQUwzREF4QVAvL0FBMEFBQVA2QmdBQ0pnQlNBQUFCQndCRUFMa0FBQUFUQUxBQVJWaXdBeThic1FNYlBsbXdGTnd3TVFELy8vK2tBQUFFMmdleEFpWUFKUUFBQUFjRHhRR0VBUnovL3dBaS8rZ0VNZ1o4QWlZQVJRQUFBQWNEeFFEYy8rZi8vLytIQUFBSGVBZENBaVlBaVFBQUFRY0Fkd0xxQVVJQUV3Q3dBRVZZc0FZdkc3RUdIejVac0JYY01ERUEvLzhBRC8vb0JuQUdBUUltQUtrQUFBRUhBSGNDYXdBQkFBa0FzQmt2c0VIY01ERUEvLzhBRmYraEJaZ0hnQUltQUpzQUFBRUhBSGNDSUFHQUFCTUFzQUJGV0xBTUx4dXhEQjgrV2JBdTNEQXhBUC8vQUNyL2R3UXpCZjRDSmdDN0FBQUJCd0IzQVRQLy9nQVRBTEFBUlZpd0JTOGJzUVViUGxtd01kd3dNUUQvLy8ra0FBQUVyZ2NoQWlZQUpRQUFBUWNCZFFTS0FUTUFGZ0N3QUVWWXNBUXZHN0VFSHo1WnNBemNzQkRRTURILy93QWkvK2dEM0FYc0FpWUFSUUFBQVFjQmRRUGkvLzRBRmdDd0FFVllzQmd2RzdFWUd6NVpzQzNjc0RIUU1ESC8vd0FuQUFBRXVnY29BaVlBS1FBQUFRY0JkUVJTQVRvQUZnQ3dBRVZZc0FZdkc3RUdIejVac0EzY3NCSFFNREgvL3dBNy8rb0VBZ1hzQWlZQVNRQUFBUWNCZFFQTC8vNEFGZ0N3QUVWWXNBa3ZHN0VKR3o1WnNDSGNzQ1hRTURILy8vL0pBQUFDdlFjb0FpWUFMUUFBQVFjQmRRTUtBVG9BRmdDd0FFVllzQUl2RzdFQ0h6NVpzQVhjc0FuUU1ESC8vLzkrQUFBQ2NnWGtBaVlBOUFBQUFRY0JkUUsvLy9ZQUZnQ3dBRVZZc0FJdkc3RUNHejVac0FYY3NBblFNREgvL3dCci8rY0ZJUWNoQWlZQU13QUFBUWNCZFFTaEFUTUFGZ0N3QUVWWXNBb3ZHN0VLSHo1WnNDVGNzQ2pRTURILy93QTUvK2dFSndYc0FpWUFVd0FBQVFjQmRRUGYvLzRBRmdDd0FFVllzQVF2RzdFRUd6NVpzQ0xjc0NiUU1ESC8vd0FuQUFBRTJBY2hBaVlBTmdBQUFRY0JkUVE4QVRNQUZnQ3dBRVZZc0FRdkc3RUVIejVac0JuY3NCM1FNREgvL3dBSEFBQUMrd1hzQWlZQVZnQUFBUWNCZFFOSS8vNEFGZ0N3QUVWWXNBY3ZHN0VIR3o1WnNBL2NzQlBRTURILy93QmIvK1lGTHdjaEFpWUFPUUFBQVFjQmRRUjVBVE1BRmdDd0FFVllzQW92RzdFS0h6NVpzQlRjc0JqUU1ESC8vd0JLLytnRU1RWHNBaVlBV1FBQUFRY0JkUVBrLy80QUZnQ3dBRVZZc0Fndkc3RUlHejVac0JYY3NCblFNREgvL3dBay9ma0V1d1hIQWlZQU53QUFBQWNEcXdFKy9wTC8vd0FjL2ZrRHhBUlFBaVlBVndBQUFBY0Rxd0R3L3BMLy93Q2MvZmtGSWdXd0FpWUFPQUFBQUFjRHF3RXQvcEwvL3dBNy9ma0NyZ1ZCQWlZQVdBQUFBQWNEcXdDRC9wSUFBZjhQL2tnQjNBUTZBQXdBS0FDd0FFVllzQXd2RzdFTUd6NVpzQUJGV0xBRUx4dXhCQkUrV2JJSkFRb3JXQ0hZRy9SWk1ERUJBd1lHSXlJbk54WXpNamNUQWR6REdNeWpQVVlmTlNwL0ljSUVPdnVJdGNVUndSRENCRzRBQUFJQU52L3FBL1lFVUFBVkFCMEFaYklRSGg4UkVqbXdFQkN3RnRBQXNBQkZXTEFBTHh1eEFCcytXYkFBUlZpd0NDOGJzUWdQUGxteURBQUlFUkk1c0F3dnNBQVFzaEFCQ2l0WUlkZ2I5Rm15RWd3UUVSSTVzQWdRc2hZQkNpdFlJZGdiOUZtd0RCQ3lHQWNLSzFnaDJCdjBXVEF4QVJZU0J3Y09BaWNtQWpjM0lUWW1KeVlISnpZMkV4WVRJUVlYRmhZQ1JjN2pGZ2NWbXVTRHhjZ2FGZ0tRREdwcGw1eEJROHdIcUdmK1dBMEdDRlVFVGdUKzFlWTVsL3lEQXdZQkROV1BnNkVEQlYrZ1BrTDhYUVlCQzBrcFEwLy8vd0NLQkFBQi9nWUFBd1lEY1FBQUFBWUFzQVF2TURFQUFRRUNCTjBEbndZQkFBZ0FTZ0N3QlMreUR3VUJYYkFHMEJtd0JpOFlzQURRR2JBQUx4aXdCUkN3QWRDd0FTK3dCUkN3Qk5Dd0JDK3dBdEN3QWkrd0JSQ3dCOUN3QnkrMER3Y2ZCd0pkc2dNRkJ4RVNPVEF4QVJVbkp3Y0hKd0V6QTUrNWRhM0JBUUV0aUFUdUVRT2JtZ1FTQVJJQUFBRUJEUVRnQTd3R0JRQUlBQ1VBc0FRdnNnOEVBVjJ3QXRDd0FpKzBEd0lmQWdKZHNnQUVBaEVTT2JBSDBMQUhMekF4QVRjM0ZRRWpBelVYQWtLcDBmN01rdW5FQldlWkJCRCs3QUVWRUFULy93RHZCUklEeXdXd0FBWUFjZ0FBQUFFQS9nVElBMndGNXdBTUFDd0FzQU12c2c4REFWMndBTkN3QUMrMER3QWZBQUpkc0FiUXNBWXZzQU1Rc2drQ0NpdFlJZGdiOUZrd01RRUdCaWNtSmpVWEJqTXlOamNEYkFxNmg0U2ZzQVY0UTB3TUJlZUZtZ1FDbVlBQmpFNDlBQUVCQWdUY0FnRUYyQUFLQUIyeUFBc01FUkk1QUxBSUw3SVBDQUZkc2dJRkNpdFlJZGdiOUZrd01RRTBOallXRlJRR0J3WW1BUUpIYmtwSE56WkxCVlU0UndSRk5qbEVBZ0pGQUFBQ0FQb0VqQUtvQmlzQUN3QVhBQzhBc0FrdnNnOEpBVjJ3RmRDd0ZTK3lEeFVCWGJJRERBb3JXQ0hZRy9SWnNBa1FzZzhLQ2l0WUlkZ2I5Rmt3TVJNME5qTXlGaFVVQmlNaUpqY0dGak15TmpjMkppTWlCdnFGWFZKNmhGMVhkbXNHTWlzeVNRWUdNU3N5U2dWU1duOTFWRmw5ZEZRb1FrZ3VLMEJKQUFBQi82aitVUUVrQUQwQUR3QWJBTEFBUlZpd0NpOGJzUW9SUGxteUJRTUtLMWdoMkJ2MFdUQXhCUWNHQndZWEZqY1hCaWNpSmpjMkpRRWtMNE1IQlRnYlBReEZWVmRwQWdNQkNBTWZWbFk1QXdFWGtDc0NiVlN6ZGdBQkFONEUyd1BKQmZRQUZBQkJBTEFETDdBSTBMQUlMN1FQQ0I4SUFsMnlEZ01LSzFnaDJCdjBXYkFVMExBQTBMQURFTEFLMExBS0w3QUwwTEFMTDdBREVMSVNBd29yV0NIWUcvUlpNREVCQmdZaklpNENCd1lISnpZMkZ4WVdGeGMyTndQSkRJRmVHQzFyTkIxUEc1VUtnbUF3bGlJWlVSd0Y2WGVNRGowVEFRTmxDSEtYQWdGWkJBRURaZ0FBQWdDc0JORUQ2UVgvQUFNQUJ3QkFBTEFDTDdJUEFnRmRzQURRc0FBdnRBOEFId0FDWGJBQ0VMQUQwQm13QXk4WXNBQVFzQVhRc0FVdnNBSVFzQWJRc0FZdnNBTVFzQWZRR2JBSEx4Z3dNUUV6QVNNRE13RWpBdS82L3NuU1Z2UCs5TVVGLy83U0FTNyswZ0FBQXYvdS9ta0JUZisvQUFzQUZ3QTlBTEFZTDdBRDBMQURMMEFQQUFNUUF5QURNQU5BQTFBRFlBTUhYYkFQMExBUEw3SUpDUW9yV0NIWUcvUlpzQU1Rc2hVSkNpdFlJZGdiOUZrd01RYzBOak15RmhVVUJpTWlKamNHRmpNeU5qYzJKaWNpQmhKcVMwbGhhVWhLWkdFRUpSMGhOZ1lGSGlBak9mVk5aMkpFU21aZVJoOHJNeUVkTVFFMkFBQUIvVlFFMGY3WkJnQUFBd0FqQUxBQkw3SVBBUUZkc0FEUUdiQUFMeGl3QVJDd0F0Q3dBaSswRHdJZkFnSmRNREVCSXdNei90bTAwZndFMFFFdkFBSDkxd1RSLytrR0FBQURBQ01Bc0FJdnNnOENBVjJ3QWRDd0FTKzBEd0VmQVFKZHNBSVFzQVBRR2JBREx4Z3dNUUVoQVNQK3lRRWcvcjdRQmdEKzBmLy8vUFlFMi8vaEJmUUFCd0Z1L0JnQUFBQUIvZFlFNWY4OUJuOEFEZ0FsQUxBT0w3QUgwTEFITDdJQkRnY1JFam15Q0FnS0sxZ2gyQnYwV2JJTkFRNFJFamt3TVFFM056WTNOaWNuTnhjRUJ3WUhCLzNXRGk5ZkNRcHJJaEVvQVF3REE2QUtCT2FTQlFzNlBBUUJmQUlXb1gwZVJnQUFBdnkvQk9UL3N3WHVBQU1BQndBM0FMQUJMN0FBMEJtd0FDOFlzQUVRc0FYUXNBVXZzQWJRc0FZdnRnOEdId1l2QmdOZHNBUFFzQU12c0FBUXNBVFFHYkFFTHhnd01RRWpBeUVCSXdNaC9wSGQ5UUVTQWVMT3dBRUVCT1FCQ3Y3MkFRb0FBQUg4b1A2Ui9hei9qZ0FMQUJFQXNBTXZzZ2tOQ2l0WUlkZ2I5Rmt3TVFVME5qYzJGaFVVQmdjR0p2eWdTem8zVUVvN09rMzFOa2tDQWtRM09VVUNBa1lBQUFFQkxnVHBBb2dHUVFBREFCY0FzQUl2c0FEUXNBQXZzQUlRc0FQUUdiQURMeGd3TVFFekF5TUJwdUxFbGdaQi9xZ0FBd0RvQk53RUl3YXZBQU1BRHdBYkFENEFzQTB2c0FMUXNBSXZzQURRc0FBdnRBOEFId0FDWGJBQ0VMQUQwQm13QXk4WXNBMFFzZ2NGQ2l0WUlkZ2I5Rm13RTlDd0RSQ3dHZEN3R1M4d01RRXpBeU1GTkRZM05oWVZCZ1lIQmlZbE5qWTNOaFlWRkFZSEJpWUNuZWl6bC82dFJEY3lTZ0ZHTXpKTEFrUUJSak15UzBVMk5FZ0dyLzdXTWpCSUFnSkNORFJFQWdKQ016UkVBZ0pDTkRCSUFnSkVBUC8vLzZRQUFBU3VCa0VDSmdBbEFBQUFCZ0Yzd1FELy93Q2VBa0lCc1FOVkFnWUFlZ0FBLy8vL3ZnQUFCUjRHUVFBbUFDbGtBQUFIQVhmK2tBQUEvLy8veGdBQUJlc0dRUUFtQUN4a0FBQUhBWGYrbUFBQS8vLy95Z0FBQW93R1F3QW1BQzFrQUFBSEFYZituQUFDLy84QUdQL25CVFVHUVFBbUFETVVBQUFIQVhmKzZnQUEvLy8vV0FBQUJiRUdRUUFtQUQxa0FBQUhBWGYrS2dBQS8vOEFIUUFBQlFzR1FRQW1BWmtVQUFBSEFYZis5QUFBLy84QUMvLzBBMFlHbWdJbUFha0FBQUVIQVhqL0kvL3JBQklBc0FBdnNDZmNzQTdRc0NjUXNCTFFNREgvLy8ra0FBQUVyZ1d3QWdZQUpRQUEvLzhBSndBQUJMd0ZzQUlHQUNZQUFBQUJBQzRBQUFTc0JiQUFCUUFyQUxBQVJWaXdCQzhic1FRZlBsbXdBRVZZc0FJdkc3RUNEejVac0FRUXNnQUJDaXRZSWRnYjlGa3dNUUVoQXlNVElRU0kvWFhaOXZ3RGdnVGsreHdGc0FBQy82b0FBQVVKQmJBQUF3QUdBQzhBc0FCRldMQUFMeHV4QUI4K1diQUFSVml3QWk4YnNRSVBQbG15QkFFS0sxZ2gyQnYwV2JJR0FnQVJFamt3TVFFekFTRWxJUU1DNiswQk1mcWhBWG9DeWJjRnNQcFF5Z081QVAvL0FDY0FBQVM2QmJBQ0JnQXBBQUQvLy8vbEFBQUU1d1d3QWdZQVBnQUEvLzhBSndBQUJZY0ZzQUlHQUN3QUFBQURBRjcvNXdVV0JjZ0FBd0FWQUNVQWc3SWJKaWNSRWptd0d4Q3dBdEN3R3hDd0RkQUFzQUJGV0xBTkx4dXhEUjgrV2JBQVJWaXdCQzhic1FRUFBsbXlBZ1FORVJJNWZMQUNMeGl5WUFJQlhiSkNBZ0Zkc25JQ0FWMjAwQUxnQWdKZHNqQUNBVjJ5QUFJQmNiSUJBUW9yV0NIWUcvUlpzQTBRc2hvQkNpdFlJZGdiOUZtd0JCQ3lJZ0VLSzFnaDJCdjBXVEF4QVNFM0lRRXVBaWNtRWhJM05nUUFGeFlDQWdjR0V6YzJKaWNtQWc4Q0JoWVhGaEkzQTVEK1N5TUJ0UDZhajlaNkNBYzZuM1NvQWJBQkFRd0dPWXRuc3R3SkI0T0RyK0lpQ2dnS2hJV2w0aWdDZWNMOHNRT0QrSjF6QVZFQklWcUNDUDdlOTN6K3YvN3pXcHdER1dxOHlRUUYvdTN0UjJtMzBnUUhBUUR6QVAvL0FEVUFBQUlvQmJBQ0JnQXRBQUQvL3dBbkFBQUZjUVd3QWdZQUx3QUFBQUgvc2dBQUJIOEZzQUFHQURFQXNBQkZXTEFETHh1eEF4OCtXYkFBUlZpd0FTOGJzUUVQUGxtd0FFVllzQVV2RzdFRkR6NVpzZ0FEQVJFU09UQXhBUUVoQVRNVElRTGUvZVgrN3dMcjcvUC9BQVJCKzc4RnNQcFEvLzhBSndBQUJzNEZzQUlHQURFQUFQLy9BQ2NBQUFXR0JiQUNCZ0F5QUFBQUF3QUFBQUFFaUFXd0FBTUFCd0FMQUVzQXNBQkZXTEFJTHh1eENCOCtXYkFBUlZpd0FpOGJzUUlQUGxteUFBRUtLMWdoMkJ2MFdiSUZDQUlSRWptd0JTK3lCZ0VLSzFnaDJCdjBXYkFJRUxJS0FRb3JXQ0hZRy9SWk1ERTNJUWNoRXlFSElSTWhCeUVrQTZZai9GbjBBdUVqL1I4NEEzOGovSURLeWdOTnhnTXB6QUQvL3dCci8rY0ZJUVhJQWdZQU13QUFBQUVBTGdBQUJZTUZzQUFIQURnQXNBQkZXTEFHTHh1eEJoOCtXYkFBUlZpd0FDOGJzUUFQUGxtd0FFVllzQVF2RzdFRUR6NVpzQVlRc2dJQkNpdFlJZGdiOUZrd01TRWpFeUVESXhNaEJJYjIyZjJVMmZiOEJGa0U1UHNjQmJBQS8vOEFKd0FBQlFRRnNBSUdBRFFBQUFBQi85d0FBQVNmQmJBQURBQThBTEFBUlZpd0NDOGJzUWdmUGxtd0FFVllzQU12RzdFRER6NVpzZ0VCQ2l0WUlkZ2I5Rm13QmRDd0NCQ3lDZ0VLSzFnaDJCdjBXYkFIMERBeEFRRWhCeUUzQVFFM0lRY2hBUU1iL2k4Q25pUDhGeHdDSVA2b0dRUEdKUDEyQVNzQzBmMzV5cUlDUXdJK2pjeitBUUQvL3dDY0FBQUZJZ1d3QWdZQU9BQUEvLzhBb1FBQUJVMEZzQUlHQUQwQUFBQURBRklBQUFXeEJiQUFGUUFjQUNNQWRiSVRKQ1VSRWptd0V4Q3dHdEN3RXhDd0lkQUFzQUJGV0xBVkx4dXhGUjgrV2JBQVJWaXdDQzhic1FnUFBsbXlFeFVJRVJJNXNCTXZzQURRc0FBdnNnb0lGUkVTT2JBS0w3QUgwTEFITDdBS0VMSVpBUW9yV0NIWUcvUlpzQk1Rc2hvQkNpdFlJZGdiOUZtd0lOQ3dHUkN3SWRBd01RRVdBQWNHQWdRSEJ5TTNMZ0kzTmhJM05qYzNNd0VHRmhjVEJnWUZOaVluQXpZMkE5WGJBUUVWRDYzKzZhY2s5eVNSM0d3UEQ2cUtqNnNtOS8xWUVYeUZncGpIQTBRU2VvV0JsY2NFL1FyK3pPYWYvd0NOQTZxckJZNzJrNkFCQUVsTEE3TDlGNUt1Q3dLeUNNQ01sYkFOL1U0SXZmLy8vOE1BQUFWSEJiQUNCZ0E4QUFBQUFRQjFBQUFGMXdXd0FCa0FYTElLR2hzUkVqa0FzQUJGV0xBRUx4dXhCQjgrV2JBQVJWaXdFQzhic1JBZlBsbXdBRVZZc0Jndkc3RVlIejVac0FCRldMQUtMeHV4Q2c4K1diSVhCQW9SRWptd0Z5K3dBTkN3RnhDeURBRUtLMWdoMkJ2MFdiQUowREF4QVRZMk54TXpBd1lBQndNakV5WUNOeE16QXdZWEZoWVhFek1EUVlhckdWWDNWaXIrd2ZaSTlramMyeDFUOWxRSUF3VmpXWjcwQWo4Ynhab0I5LzRDK2Y3VkYvNkpBWGNmQVVIb0FmSCtEajQ4WW9jWUEyMEFBUUFKQUFBRTl3WEhBQ01BV2JJQUpDVVJFamtBc0FCRldMQVpMeHV4R1I4K1diQUFSVml3RHk4YnNROFBQbG13QUVWWXNDSXZHN0VpRHo1WnNpRUJDaXRZSWRnYjlGbXdBTkN3R1JDeUJ3RUtLMWdoMkJ2MFdiQUFFTEFPMExBaEVMQVIwREF4SlRZU0V6YzFBaWNtQmdJSEJoWVhCeUUzTndJVE56WVNKQmNXRmhJSEJ3SUZOd2NoQW9DUHF5RUdDOCtRdmo0REJWRlJJUDRVSmRHaEpRMGF0QUVTcEozZ1poVU5OZjcyMFNUK0hjNG5BVE1CTjA4ekFROElCZHYrZkhhUXJ4blF5d0lCRGdFU1hiZ0JKcDhFQktUKzNxaFgvcDdSQk12Ly93QTFBQUFETEFjS0FpWUFMUUFBQVFjQWEvK3BBVDBBREFDd0FpK3dGZHl3Qk5Bd01mLy9BS0VBQUFWTkJ3TUNKZ0E5QUFBQkJ3QnJBTzhCTmdBTUFMQUJMN0FhM0xBSjBEQXgvLzhBUHYvcUJETUdRUUltQWFFQUFBRUhBWGNCUmdBQUFBa0FzQm92c0M3Y01ERUEvLzhBS1AvcUJBSUdRUUltQWFVQUFBRUhBWGNCRUFBQUFBa0FzQWd2c0NyY01ERUEvLzhBRWY1aEJBWUdRUUltQWFjQUFBRUhBWGNCR2dBQUFBa0FzQU12c0JYY01ERUEvLzhBYnYvMEFwSUdMQUltQWFrQUFBRUdBWGNLNndBSkFMQUFMN0FRM0RBeEFQLy9BRmYvNVFROUJxSUNKZ0cxQUFBQkJnRjRHdk1BRWdDd0NpK3dNTnl3RjlDd01CQ3dHOUF3TVFBQ0FENy82Z1F6QkZFQUhRQXJBSG15R2l3dEVSSTVzQm9Rc0NUUUFMQUFSVml3R2k4YnNSb2JQbG13QUVWWXNBQXZHN0VBR3o1WnNBQkZXTEFRTHh1eEVBOCtXYkFBUlZpd0NpOGJzUW9QUGxteUJRRUtLMWdoMkJ2MFdiSU5HaEFSRWpteUhCb1FFUkk1c0JBUXNpTUJDaXRZSWRnYjlGbXdHaEN5S0FFS0sxZ2gyQnYwV1RBeEFRTUdGeFlYTXpjWEJpY21KaWNHQmljbUppY21OemMyRWpZWEZoYzNBUVlYRmhZWEZqY1RKaWNtQmdjRU00QUhBZ0luRGcwR05VQk9YZzA4bEdTYXRBY0RCZ01WaTh5QXJWVXgvY3dHQVFKWlVvUmlVQzkvZVo0V0JEcjlCalFhTkFJRHR4MENBbFJMUzFrQ0F0dTFQVHdWckFFVGhnTUVsWVg5dURNNFpIUUNBNHNCeVlrRUJkTzJBQUFDLytYK2R3UnJCY2NBRkFBcEFHV3lGQ29yRVJJNXNCUVFzQnpRQUxBUEw3QUFSVml3QUM4YnNRQWZQbG13QUVWWXNBd3ZHN0VNRHo1WnNoVUFEQkVTT2JBVkw3SW5BUW9yV0NIWUcvUlpzZ1VuRlJFU09iQUFFTEliQVFvcldDSFlHL1Jac0F3UXNpRUJDaXRZSWRnYjlGa3dNUUVXRmdjR0J4WVdCdzRDSnlZbkF5TVRQZ0lUTmpZM05pWW5KZ1lIQXhZWE1qWTNOaVluSnpjQzI3allEUTdjWGw0SUNvYmJoSjEwVit6M0VKTGlGMm1DQ3dsWVVXQ1JFb3RLa1hHakVBNVpXSVFhQmNRRTFhbkRkUzY2ZFlYUmJ3TUVVdjQyQmFoM3hHMzlsQUowYVZodUJBS0FadnplVUFLUGNtV01CUUc0QUFBQkFIZitYd1F3QkRvQUNBQTRzZ0FKQ2hFU09RQ3dBRVZZc0FFdkc3RUJHejVac0FCRldMQUhMeHV4QnhzK1diQUFSVml3QkM4YnNRUVJQbG15QUFjRUVSSTVNREVCQVRNQkF5TVRBek1CeVFGcC92M2ZUdTFUc093QlBnTDgrK0wrUXdIZUEvMEFBQUlBT1AvbkJEZ0dKQUFmQUM0QVlySUNMekFSRWptd0FoQ3dKdEFBc0FCRldMQURMeHV4QXlFK1diQUFSVml3RlM4YnNSVVBQbG13QXhDeUNBRUtLMWdoMkJ2MFdiSU9GUU1SRWptd0RpK3lLd0VLSzFnaDJCdjBXYkljS3c0UkVqbXdGUkN5SlFFS0sxZ2gyQnYwV1RBeEFUWTJGeFlYQnlZSElnWUhCaGNYQkFNSERnSW5MZ0kzTmpZM05TWW1Bd1lYRmhZWEZqWTNOaVluQmdZSEFVRUg2N0ZzbVJXRWFreHJDZzl3TEFHR0p3TVVtZStRaXNSY0RoTGJua2hOQndZREEyTlhkNlFjRG1aZ2VxVVlCT0tWclFJQ01jUTRBa0UzVFRjVXJQNTFGSjM2aUFRRWgvR1V2djhjRHllRy9YTTFPMmg5QXdPOXZIKzdIZ082cWdBQkFDai82Z1FDQkZFQUp3Q2dzaFFvS1JFU09RQ3dBRVZZc0Fndkc3RUlHejVac0FCRldMQWxMeHV4SlE4K1diSVZDQ1VSRWptd0ZTK3lqeFVCWGJRZkZTOFZBbkcwWHhWdkZRSnh0TDhWenhVQ1hiVHZGZjhWQW5HeVdoVUJYYklYQndvcldDSFlHL1Jac2dJWEZSRVNPYkFJRUxJUEFRb3JXQ0hZRy9SWnNnd1ZEeEVTT2JZTURCd01MQXdEWGJBbEVMSWRBUW9yV0NIWUcvUlpzaUFYSFJFU09iUURJQk1nQWwwd01STTJOeVltTnpZa0Z4WVdGU2MwSmlNbUJnY0dGeGNISnlJR0J3WVdGeFkyTnpNT0FpY21KaThLNWoxUEFnVUJEYzZ5MitsbFRsbUdDaE94MFIrMGJvUUpDR2RjV280TzdnbUMzWDdEN0FFcHQxTWhiVWlhcmdRRnNwQUJRa2dDVUVSNUJnR3RBVlZLUDA0REFsVkthNXhRQWdTcUFBRUFadjU5QkZBRnNBQWJBRSt5RWh3ZEVSSTVBTEFNTDdBQVJWaXdBQzhic1FBZlBsbXlHUUVLSzFnaDJCdjBXYklCR1FBUkVqbXlBZ3dBRVJJNXNoTU1BQkVTT2JBVEVMSUdBUW9yV0NIWUcvUlpzaGdBREJFU09UQXhBUWNCQmhjV0Z4Y1dGZ2NHQnljM05qYzJKeWNrRXpZU053RWhOd1JRSFA0VzRnY0RYYkJaU1FRSzNub3JQd3NLVG5YKzd4d09xckVCRlAzZUlnV3duUDRKOU5sZUpEMGhZVW1scEdzdlNEbzNIQ1JiQVEyS0FTcXlBUS9EQUFFQUVmNWhCQVlFVWdBU0FGT3lDQk1VRVJJNUFMQUFSVml3QXk4YnNRTWJQbG13QUVWWXNBQXZHN0VBR3o1WnNBQkZXTEFITHh1eEJ4RStXYkFBUlZpd0VDOGJzUkFQUGxteUFRTVFFUkk1c0FNUXNnMEJDaXRZSWRnYjlGa3dNUUVITmhjV0ZnY0RJeE0ySnlZbkpnY0RJeE1CcFJTS3RhR1ZFN3Z0dkFVRERvYUlaWW51dkFRN2had0VCTlRBKzZzRVZDd25nQU1FZmZ6dUJEb0FBd0JzLytjRVB3WEpBQkVBR1FBaUFJYXlJQ01rRVJJNXNDQVFzQURRc0NBUXNCalFBTEFBUlZpd0NTOGJzUWtmUGxtd0FFVllzQUF2RzdFQUR6NVpzaE1KQUJFU09YeXdFeThZc21BVEFWMnlRaE1CWGJKeUV3RmR0TkFUNEJNQ1hiSXdFd0Zkc2dBVEFYR3dDUkN5RndFS0sxZ2gyQnYwV2JBVEVMSWFBUW9yV0NIWUcvUlpzQUFRc2lBQkNpdFlJZGdiOUZrd01RVW1BamMwTnpjU0FCY1dFZ2NHQndjQ0FBRWhOalVtSnlZREFTRUdGeFFXRnhZVEFlaTR4QUlKSHpFQkh0KzV3Z0VCQ1NJMC91Zit0Z0hKRlFXZjJVc0JuLzQzRlFGVVR0Wk9GQVFCQmV0TFI4d0JRZ0ZKQlFUKy9PZExSOTMreGY2OEExR0RVZThIQ1A2aS9zMkRTM21DQXd3QlpBQUFBUUJ1Ly9RQ0NnUTZBQTBBS0FDd0FFVllzQUF2RzdFQUd6NVpzQUJGV0xBSkx4dXhDUTgrV2JJRUFRb3JXQ0hZRy9SWk1ERUJBeFVXRnpJM0J3WW5KaVkzRXdIcmd3TkxKeTBRU2t0OGV3MkRCRHI4OVMxQUF3bStGZ0lDbzRrREZ2Ly9BQ0VBQUFTTkJEb0NCZ0Q3QUFBQUFmK28vL0FEMWdYN0FCb0FVYklQR3h3UkVqa0FzQUF2c0FCRldMQUxMeHV4Q3c4K1diQUFSVml3RUM4YnNSQVBQbG13Q3hDeUJnRUtLMWdoMkJ2MFdiSVBBQkFSRWpteUVoQUFFUkk1c0FBUXNoWUJDaXRZSWRnYjlGa3dNUUVXRnhNV0ZoY3pOd2NHSXlZbUp3TUJJUUVuSmlZbkp3YzNOZ0dadUREb0NCNGtFaEVOS2lwZmNoMXAvcGIrOUFJeExnc3FLeHNiRGo0RitRU2wrOFFmTmdVQnd3Z0NabXNDQlAwNUJCM0FLQzBDQVFHNEQvLy8vOTMrWUFSVUJEb0NCZ0I0QUFELy93QmtBQUFFRFFRNkFnWUFXZ0FBQUFFQVB2NTFCQ1lGeFFBdEFGYXlCUzR2RVJJNUFMQVhMN0FBUlZpd0t5OGJzU3NmUGxteUFnRUtLMWdoMkJ2MFdiSUhMaXNSRWptd0J5K3lDZ0VLSzFnaDJCdjBXYkllRnlzUkVqbXdIaEN5RUFFS0sxZ2gyQnYwV2JJbENnY1JFamt3TVFFbUl5SUdCd1lGRndjbklnWUhCaFlmQWhZSEJnWUhKemMyTnpZbkp5WW5KaE0yTmpjbUpqYzJKRE15RndQdWUxaDhtQXdiQVErRkkzNnMweElMWVdDRUxxa0lCWGhzZ0M5Q0NRYy9LcUJDMmhVS3VLdFVZQVFJQVIvYmpJZ0UyaVpiVHE4Q0FjWUJtWTVkZ3h3bER6eVFVcWxOYWpGSVBUSVpEek1qY2dFQmpjczRLSWxZcnNZdUFQLy9BRG4vNkFRbkJGSUNCZ0JUQUFBQUFRQmQvL1VFMmdRNkFCWUFYTElORnhnUkVqa0FzQUJGV0xBVkx4dXhGUnMrV2JBQVJWaXdDeThic1FzUFBsbXdBRVZZc0JFdkc3RVJEejVac0JVUXNnQUJDaXRZSWRnYjlGbXdDeEN5QmdFS0sxZ2gyQnYwV2JBQUVMQVAwTEFRMExBVDBMQVUwREF4QVNNREJoY1dGekkzQndZakppWTNFeUVESXhNak55RUV1WnRqQXdJR1NpWXZFVVZRZkhzTll2N0FtKzJicHlJRVd3TjgvYlFaRkVFRENiNFZBcU9LQWxqOGhBTjh2Z0FDLzh2K1lBUU1CRk1BRWdBZ0FGQ3lEaUVpRVJJNXNBNFFzQmJRQUxBQVJWaXdCUzhic1FVYlBsbXdBRVZZc0JFdkc3RVJFVDVac0FCRldMQU9MeHV4RGc4K1diSVZBUW9yV0NIWUcvUlpzQVVRc2gwQkNpdFlJZGdiOUZrd01STTJOamMyRnhZV0Z4WUhCd1lHSnlZbkF5TUJGaGNXTmpjMkp5WW1KeVlHQjNVUVcwaVEwTERJQ1FNSERTejNzYWxoWWU0QmF6U0RkWjRWQ3dNSVZVNXJqaGtDUG0vSlNaUUZCT25IUlVWVDMvZ0ZCSGI5K3dLL2J3UURzNTkxUFhGc0F3Sy9vZ0FCQUR2K2lRUHdCRk1BSUFCWnNnMGhJaEVTT1FDd0FFVllzQUF2RzdFQUd6NVpzQUJGV0xBYUx4dXhHZzgrV2JBQVJWaXdFeThic1JNWFBsbXdBQkN4QXdvcldOZ2IzRm13QUJDeUJ3RUtLMWdoMkJ2MFdiQWFFTElOQVFvcldDSFlHL1JaTURFQkZoWUhKelltSnlZR0J3Y0dGeGNXQndZR0J5YzNOamMySmljbUFqYzNFZ0FDYzdUSkNONEZWVlJ6b1JZRUhPNXRvQWNEZTJ4NUtVTUpCQ1U2emI4VEFoMEJNUVJPQk9HMEFXUnVCQVBBb3lQdFZ5YzlqMUdyVFdzc1NqOGhLQkErQVFURUZBRUNBVFVBQWdBNC8rZ0V0Z1E3QUJFQUlnQmhzaGdqSkJFU09iQVlFTEFIMEFDd0FFVllzQkF2RzdFUUd6NVpzQUJGV0xBUkx4dXhFUnMrV2JBQVJWaXdDQzhic1FnUFBsbXdFUkN5QUFFS0sxZ2gyQnYwV2JBSUVMSVhBUW9yV0NIWUcvUlpzQkFRc2lBQkNpdFlJZGdiOUZrd01RRUZGZ2NIRGdJbkxnSTNOellBTXdVQkJoY1dGaGNXTmpjM05pY21KaWNtQmdTUy92NkRFUU1RbHUrS2k4UlpFQUlpQVRIZUFqdjhnQVlDQkdCWGI1MGNCd1lDQlY1VmVLQURkZ09yeHhhUjdZVUVBcEQ4bFJEN0FTRUIvZEUyUFc1OEFnT3NwUzgwT21aM0F3TzJBQUFCQUc3LzZ3UWpCRG9BRVFCSnNnTVNFeEVTT1FDd0FFVllzQkF2RzdFUUd6NVpzQUJGV0xBS0x4dXhDZzgrV2JBUUVMSUFBUW9yV0NIWUcvUlpzQW9Rc2dVQkNpdFlJZGdiOUZtd0FCQ3dEdEN3RDlBd01RRWhBd2NVTXhZM0Z3WW5KaVkzRXlFM0lRUUIvcU5sQWo4aFBSVlNYM3g2RG1IK3R5SURrd041L2E4b1NnRVZ0Q3NDQXF1V0FrbkJBQUFCQUZmLzVRUCtCRHdBRmdBOHNoQVhHQkVTT1FDd0FFVllzQW92RzdFS0d6NVpzQUJGV0xBQUx4dXhBQnMrV2JBQVJWaXdFUzhic1JFUFBsbXlCUUVLSzFnaDJCdjBXVEF4QVFNSEJoWVhGaElESmljWEZnY0dBZ1luSmlZM054TUJ2MjBGQWpzNWxjTU9CaUhpT2dzUG0vaVpxYmdLQTI0RU92MXJURXhmQWdZQmRBRWtnWDBCcWRmNy9zYWhCQVBYd0NZQ2tRQUNBREwrSWdWdEJFUUFHd0FrQUZteUdTVW1FUkk1c0JrUXNCelFBTEFhTDdBQVJWaXdFaThic1JJYlBsbXdBRVZZc0Fjdkc3RUhHejVac0FCRldMQUFMeHV4QUE4K1diQVowTEljQVFvcldDSFlHL1Jac0E3UXNCSVFzaUlCQ2l0WUlkZ2I5Rmt3TVFVbUp5WTNOaEkzRndZQ0Z4WVdGeE0yTmhjZUFnY0dBQVVESXdFMk5pY21KZ2NHQndINjduSm9HUk9iaG9oeGJnd0tjV0J4RHFaN2g5Rm1EaHIrci83elYrMEJYcTNLQWdOblZqWU1EQ09xbk9DZ0FRbGJsbWorOUgxamhob0NoWFdUQWdLUTlZMzAvdEVhL2pFQ2tTVHhxNEdRQmdRMi8vLy91UUFBQkJNRU9nSUdBRndBQUFBQkFELytJZ1dLQkR3QUhRQlNzZzRlSHhFU09RQ3dEeSt3QUVWWXNBQXZHN0VBR3o1WnNBQkZXTEFJTHh1eENCcytXYkFBUlZpd0ZTOGJzUlViUGxtd0FFVllzQkV2RzdFUkR6NVpzQTdRc2dFQkNpdFlJZGdiOUZtd0hOQXdNUUVETmpZU0p5WW5GeFlYRWdjR0JRTWpFeVlDTnhNekF3WVhGaFlYRXdPZW81Sy9SQXdKSTk0ckNoL3ZxZjcwVisxWDRka2dVdTFTQ1FNRFoxK2lCRHI4ZWlLM0FRNnJmbmdDZG4vK1JPR2ZHZjR5QWRJaUFVVDNBZW4rRkVKQWE0NGNBNE1BQVFCVS8rUUdFQVE5QUNzQVhySWpMQzBSRWprQXNBQkZXTEFBTHh1eEFCcytXYkFBUlZpd0d5OGJzUnNiUGxtd0FFVllzQ0V2RzdFaER6NVpzQUJGV0xBbUx4dXhKZzgrV2JJSEFRb3JXQ0hZRy9SWnNnd2hBQkVTT2JBaEVMSVNBUW9yV0NIWUcvUlpNREVCQndZR0J3WVdGeFkyTnhNekF3WVhGeFlYRmpZM056WW5KaWNYRmhjV0FnWW5KaVluQmljbUpqY1FFd0lvVWs5R0F3TkRQVnQ5RXpYMU5Ba0RBaEJ5Vm5rY0NoRU1EQzNpTkF3VGN1YWthcGdZaGRPaXJBTGVCRG1ZbGVpRGQzc0RCcUNaQVViK3Vrc3hHNWdEQkttcVFJS0NnWHdEZUlMZC9sblZCQUo0WmVZSEJPblhBVjhCS3dELy93Qk0vL1FDL2dXNEFpWUJxUUFBQVFjQWEvOTcvK3NBREFDd0FDK3dIOXl3RHRBd01mLy9BRmYvNVFQK0JjQUNKZ0cxQUFBQkJnQnJjdk1BREFDd0NpK3dLTnl3RjlBd01mLy9BRG4vNkFRbkJrRUNKZ0JUQUFBQkJ3RjNBUTBBQUFBSkFMQUVMN0FqM0RBeEFQLy9BRmYvNVFQK0JqUUNKZ0cxQUFBQkJ3RjNBUUwvOHdBSkFMQUtMN0FaM0RBeEFQLy9BRlQvNUFZUUJqSUNKZ0c1QUFBQkJ3RjNBaGovOFFBSkFMQWFMN0F1M0RBeEFBQUNBRkQvNWdTTkJja0FIZ0FvQUd1eUZDa3FFUkk1c0JRUXNDRFFBTEFBUlZpd0dTOGJzUmtmUGxtd0FFVllzQVl2RzdFR0R6NVpzaUVaQmhFU09iQWhMN0lUQVFvcldDSFlHL1Jac0FMUXNnd1pCaEVTT2JBR0VMSVFBUW9yV0NIWUcvUlpzQ0VRc0IzUXNCa1FzaVVCQ2l0WUlkZ2I5Rmt3TVFFR0J3Y0dCQ2N1QWpjVE53TUdGaGNXRXpjbUFqYzJOaGNXRmdjRE53RUdGeE0zTkNjbUJnY0VnamxMRXlYKzU4aCt2RnNQTCtjd0RtUmh5alFVdDhzT0U5eWZtS0VTTkhMOThSSzZPQVJVT1VvTEFsWVRDM1hoL0FZRGVkZUFBU01DL3RwNGpnTUhBU0J2TEFFVnU3L1JCQVRacmY3TEdBRWg0VXdCT0Rkd0FnSlVUUUFBQVFCdEFBQUZCZ1hKQUJnQVZMSU1HUm9SRWprQXNBQkZXTEFFTHh1eEJCOCtXYkFBUlZpd0ZpOGJzUllmUGxtd0FFVllzQXd2RzdFTUR6NVpzZ0FXREJFU09iQUVFTElJQVFvcldDSFlHL1Jac0JZUXNoRUJDaXRZSWRnYjlGa3dNUUVCTmpZWEZoY0hKd1lIQVFNakV3TW1KeVlISnpZekZoY0NSd0VUUDRwWE8xRTFNMEVzL21oWjlsNm5GVGdSSlJFOFFLOC9Bd2tCNTNsZ0FnSVp3d1lEUmYxZC9md0NId0tKUGdNQkJjUVlCTXYvLy84a0FBQUZhZ1pCQUNZQndHUUFBQWNCZC8zMkFBQUFBZ0JYLytNR2ZRUTZBQlFBS2dCbXNna3JMQkVTT2JBSkVMQWgwQUN3QUVWWXNCTXZHN0VUR3o1WnNBQkZXTEFNTHh1eERBOCtXYkFURUxJQkFRb3JXQ0hZRy9SWnNBd1FzQWZRc2dvVERCRVNPYkFCRUxBWDBMQVMwTEFNRUxJZEFRb3JXQ0hZRy9SWnNpRU1FaEVTT2JBbjBEQXhBU2NYQmdJR0JpY21KaWNHSnlZbU54STNCemNoQVNZbkpRWUdCd1lYRmpZM056TUhCaGNXRnhZVE5nWmFlQU1DUEhpeGIydWNHSWJhbUtFR0JIaHlJZ1gwL240QkIvemRTRHdHQzNCYmZoZ2s5Q0lJQXdxQmt6WWJBNE1CcElyKzI5eHRBd0o0YWVzSEJPdmRBUURRQXJiK3BsRlNBb25YZlBZR0I1YWQ2ZU5KTmJJREJBRXBsLy8vQUNjQUFBUzZCejBDSmdBcEFBQUJCd0JFQVNNQlBRQVRBTEFBUlZpd0JpOGJzUVlmUGxtd0Rkd3dNUUQvL3dBbkFBQUV1Z2NLQWlZQUtRQUFBUWNBYXdEd0FUMEFEQUN3Qmkrd0hkeXdETkF3TVFBQkFKSC84UVdGQmJBQUdRQnVzZ0VhR3hFU09RQ3dBRVZZc0Jndkc3RVlIejVac0FCRldMQUtMeHV4Q2c4K1diQUFSVml3RkM4YnNSUVBQbG13R0JDeUFBRUtLMWdoMkJ2MFdiSUVHQlFSRWptd0JDK3dDaEN5Q3dFS0sxZ2gyQnYwV2JBRUVMSVJBUW9yV0NIWUcvUlpzQUFRc0JiUXNCZlFNREVCSVFNMkZ4WVdCd1lFQnpjMk5qYzJKaWNtQndNakV5RTNJUVRmL2lKTmpXL2Y5aEVTL3NqK0U0dWpEdzF5ZVc2U2R2Zlovb2NrQkU0RTVQNXpKd0lDODhyWjhRSy9CSWw2Ym9FRUF5RDljd1RrekFELy93QXVBQUFFckFjOUFpWUJoQUFBQVFjQWR3RzVBVDBBRXdDd0FFVllzQVF2RzdFRUh6NVpzQWpjTURFQUFBRUFaLy9vQlJFRnh3QWdBSVd5RkNFaUVSSTVBTEFBUlZpd0RDOGJzUXdmUGxtd0FFVllzQU12RzdFRER6NVpzZ0FNQXhFU09iSVFBd3dSRWptd0RCQ3lFd0VLSzFnaDJCdjBXYklXREFNUkVqbDhzQll2R0xKZ0ZnRmRzbklXQVYyeVFoWUJYYkl3RmdGZHROQVc0QllDWGJJQUZnRnhzaGtCQ2l0WUlkZ2I5Rm13QXhDeUhRRUtLMWdoMkJ2MFdUQXhBUVlBSnk0Q0p5WVNFaVFYRmhJWEl5WW1KeVlHQnlVSElRY0dGaGNXTmpjRXFTSCtyL0NMMFhjSEJrVENBUnlwMlB3TDlRVjdkcGJVUFFIMEpQNFpDUVorZkl1MkpBSGI0Lzd3QkFOKzc1cHhBWWtCT1o0REJQNzQ2NTZMQXdYVDZ3SEtZcVM1QkFhWGt3QUFBUUFrLytvRXV3WEhBQ2tBWWJJREtpc1JFamtBc0FCRldMQUtMeHV4Q2g4K1diQUFSVml3SHk4YnNSOFBQbG15QXg4S0VSSTVzQW9Rc0E3UXNBb1FzaElCQ2l0WUlkZ2I5Rm13QXhDeUdBRUtLMWdoMkJ2MFdiQWZFTEFrMExBZkVMSW5BUW9yV0NIWUcvUlpNREVCTmljbkppWTNQZ0lYSGdJSEp6WW1KeVlHQndZWEZ4WVdCdzRDSnk0Q054Y0dGaGNXTmdOTUZyTlI0cjRKQ0puNmpZalVjQVQyQjNOMGRhRU9GTDVMNWJZTENvNzdsNC9wZkFYM0NJcUJlS0VCZnBCR0hrL1lqM3k5WmdNRGNjbUJBWEorQXdKeVlYOUpHMUxkbDN1M1pBSUJkdEdGQVh5R0FnSnFBUC8vQURVQUFBSW9CYkFDQmdBdEFBRC8vd0ExQUFBRExBY0tBaVlBTFFBQUFRY0FhLytwQVQwQURBQ3dBaSt3RmR5d0JOQXdNZi8vQUFQLzV3UmhCYkFDQmdBdUFBQUFBdi9LQUFBSDlRV3dBQmtBSWdCNXNnb2pKQkVTT2JBS0VMQWIwQUN3QUVWWXNCZ3ZHN0VZSHo1WnNBQkZXTEFJTHh1eENBOCtXYkFBUlZpd0VDOGJzUkFQUGxteUFSZ0lFUkk1c0FFdnNCZ1FzZ29CQ2l0WUlkZ2I5Rm13RUJDeUVnRUtLMWdoMkJ2MFdiQUlFTEljQVFvcldDSFlHL1Jac0FFUXNpSUJDaXRZSWRnYjlGa3dNUUVGSGdJSEJnQWpJUk1oQXdjQ0FnY2pOemMyTmpjM0V5RURBd1UyTmpjMkppY0ZJQUVSaXRSbUN4SCt4ZlQ5MzluK1VuRWVRL3ZDV3hZa2Y2SXBFNG9Ea1g5YkFSSi9zQklQY1drRG9RRUVkc3lDMC83N0JPVDk5Wkwrei83dkJjb0JDZC8zYndLWC9TYjk5QUlDbEgxdWlBUUFBZ0F1QUFBSC9RV3dBQklBR3dDQ3NnRWNIUkVTT2JBQkVMQVUwQUN3QUVWWXNBSXZHN0VDSHo1WnNBQkZXTEFSTHh1eEVSOCtXYkFBUlZpd0N5OGJzUXNQUGxtd0FFVllzQTh2RzdFUER6NVpzZ0VDQ3hFU09iQUJMN0lGQWdzUkVqbXdCUyt3QVJDeURRRUtLMWdoMkJ2MFdiQUxFTElWQVFvcldDSFlHL1Jac0FVUXNoc0JDaXRZSWRnYjlGa3dNUUVoRXpNREZ4WVdCd1lFSXlFVElRTWpFek1CQXdVMk5qYzJKaWNCdFFKcmJQWmgvT0wrRHhEK3h2VDkzMjc5bFc3Mi9QWUMzbFVCRW9HdUR3NXhhd05GQW12OTBnRUI4Y1BPL2dKNi9ZWUZzUDBJL2hnQ0FveHphSHdFQUFFQW9BQUFCWmdGc0FBV0FGMnlBUmNZRVJJNUFMQUFSVml3RlM4YnNSVWZQbG13QUVWWXNBZ3ZHN0VJRHo1WnNBQkZXTEFSTHh1eEVROCtXYkFWRUxJQUFRb3JXQ0hZRy9SWnNnUVZDQkVTT2JBRUw3SU9BUW9yV0NIWUcvUlpzQUFRc0JQUXNCVFFNREVCSVFNMkZ4WVdCd01qRXpZbkppY21Cd01qRXlFM0lRVGgvaUJHZ29icTZ4aEw5MHdJQnhXK1pLOTk5dG4rbFNRRVFRVGsvcG9jQWdUMTEvNDRBY2xBTUk0R0F4ejlUQVRrekFELy93QW5BQUFGY1FjMkFpWUFMd0FBQVFjQWR3R2xBVFlBRXdDd0FFVllzQVV2RzdFRkh6NVpzQS9jTURFQS8vOEFKd0FBQlh3SFBRSW1BZHNBQUFFSEFFUUJnZ0U5QUJNQXNBQkZXTEFJTHh1eENCOCtXYkFMM0RBeEFQLy9BSnYvNXdWVEJ5UUNKZ0htQUFBQkJ3RnFBUlVCUFFBSkFMQUJMN0FVM0RBeEFBQUJBQ1grbUFWOEJiQUFDd0JJQUxBSkw3QUFSVml3QUM4YnNRQWZQbG13QUVWWXNBUXZHN0VFSHo1WnNBQkZXTEFHTHh1eEJnOCtXYkFBUlZpd0NpOGJzUW9QUGxteUFnRUtLMWdoMkJ2MFdiQUQwREF4QVRNRElSTXpBeUVESXhNaEFTTDMyZ0pzMnZmOS9say85ei8rUkFXdyt4b0U1dnBRL3BnQmFQLy8vNlFBQUFTdUJiQUNCZ0FsQUFBQUFnQWpBQUFFb1FXd0FBd0FGUUJlc2c4V0Z4RVNPYkFQRUxBSjBBQ3dBRVZZc0Fzdkc3RUxIejVac0FCRldMQUpMeHV4Q1E4K1diQUxFTElBQVFvcldDSFlHL1Jac2dNTENSRVNPYkFETDdBSkVMSVBBUW9yV0NIWUcvUlpzQU1Rc2hVQkNpdFlJZGdiOUZrd01RRWhBeGNXRmdjR0JDTWhFeUVCQXdVMk5qYzJKaWNFZmYxMlBmN2ovUkVRL3NmMC9kMzhBNEw4OGxZQkVvR3VEdzV3YXdUay9wOEJBZS9FMFA0RnNQMEkvaElDQXBCM2FYa0UvLzhBSndBQUJMd0ZzQUlHQUNZQUFQLy9BQzRBQUFTc0JiQUNCZ0dFQUFBQUF2K0UvcG9Ga1FXd0FBNEFGUUJWc2hJV0Z4RVNPYkFTRUxBTDBBQ3dBUyt3QUVWWXNBc3ZHN0VMSHo1WnNBQkZXTEFDTHh1eEFnOCtXYkFCRUxBRTBMQUNFTElOQVFvcldDSFlHL1Jac0JEUXNBYlFzQXNRc2hFQkNpdFlJZGdiOUZrd01RRWpFeUVESXhNWE5oSVRFeUVETXdVbEV5RURCd0lFL3VzKy9HQS83bHRsYzU0M2lBTjkyYlQ3OWdKZnQvNW1iaEZWL3BvQlp2NmFBakFEVXdFekFRNENWZnNhQkFRRUd2NGFRdjY4Ly84QUp3QUFCTG9Gc0FJR0FDa0FBQUFCLzZVQUFBZmdCYkFBRlFCOUFMQUFSVml3Q1M4YnNRa2ZQbG13QUVWWXNBMHZHN0VOSHo1WnNBQkZXTEFSTHh1eEVSOCtXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQVl2RzdFR0R6NVpzQUJGV0xBVUx4dXhGQTgrV2JJUUNRSVJFam13RUMreUFBRUtLMWdoMkJ2MFdiQUUwTElJRUFBUkVqbXdFQkN3QzlDeUV3QVFFUkk1TURFQkl3TWpFeU1CSVFFQklSTXpFek1ETXdFaEFRRWhCT1NqYnZadW5mNDUvcjRDV1A3U0FSdnBuV3IyYW9vQnR3RTUvZHNCTi83ZEFuVDlqQUowL1l3REV3S2QvYUFDWVAyZ0FtRDlUZjBEQUFFQUh2L3RCS2dGeFFBcEFJR3lCeW9yRVJJNUFMQUFSVml3RGk4YnNRNGZQbG13QUVWWXNCb3ZHN0VhRHo1WnNnQU9HaEVTT2JBQUw3SWZBQUZ4c3A4QUFWMnllZ0FCWGJKS0FBRmRzQTRRc2dZQkNpdFlJZGdiOUZteUNnNGFFUkk1c0FBUXNpY0JDaXRZSWRnYjlGbXlFeWNBRVJJNXNoME9HaEVTT2JBYUVMSWhBUW9yV0NIWUcvUlpNREVCTWpZM05pWW5KZ1lIQno0Q0Z4WVdCd1lGRmhZSEJnUUhCeVlrTnhjR0ZoY1dOamMyTHdJM0FuZCtvUXdNZlcxbm9oSDFDWTc0ak9ENERoSCsvV05jQnd6KzJlVTEwdjcvQi9NRWdtWit3UTRiMFNTMUl3TkplR3BlY0FJQ2NHRUJkN3BwQWdYWXVjOTRMcXhzdStzTUFRTG52d0ZrZVFJRWdXN0ZHUU1CeUFBQUFRQW5BQUFGZkFXd0FBa0FSUUN3QUVWWXNBQXZHN0VBSHo1WnNBQkZXTEFITHh1eEJ4OCtXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQVV2RzdFRkR6NVpzZ1FBQWhFU09iSUpBQUlSRWprd01RRXpBeU1UQVNNVE13TUVmZi85OTdMODYvNzk5N0lGc1BwUUEvNzhBZ1d3L0FFQS8vOEFKd0FBQlh3SEpBSW1BZHNBQUFFSEFXb0JWd0U5QUFrQXNBQXZzQTNjTURFQS8vOEFMZ0FBQlhzRnNBSUdBOEVBQUFBQi84b0FBQVY4QmJBQUVRQk5zZ1FTRXhFU09RQ3dBRVZZc0FBdkc3RUFIejVac0FCRldMQUJMeHV4QVE4K1diQUFSVml3Q1M4YnNRa1BQbG13QUJDeUF3RUtLMWdoMkJ2MFdiQUpFTElNQVFvcldDSFlHL1JaTURFQkF5TVRJUU1IQWdJSEl6YzNOalkzTnhNRmZQMzIyZjVTY1I1RS9NTllGaUorb1NvV2lnV3crbEFFNVAzMWt2N0wvdkFDeWdJSDFQQ0NBcGNBLy84QUp3QUFCczRGc0FJR0FERUFBUC8vQUNjQUFBV0hCYkFDQmdBc0FBRC8vd0JyLytjRklRWElBZ1lBTXdBQS8vOEFMZ0FBQllNRnNBSUdBWkVBQVAvL0FDY0FBQVVFQmJBQ0JnQTBBQUQvL3dCbC8rZ0ZEUVhIQWdZQUp3QUEvLzhBbkFBQUJTSUZzQUlHQURnQUFBQUJBSnYvNXdWVEJiQUFFQUJEc2dBUkVoRVNPUUN3QUVWWXNBRXZHN0VCSHo1WnNBQkZXTEFQTHh1eER4OCtXYkFBUlZpd0JpOGJzUVlQUGxteUFBRUdFUkk1c2dzQkNpdFlJZGdiOUZrd01RRUJJUUVHQmljaUp6Y1dOekkzTndFaEFwY0Jud0VkL1UxVXduOHZRUmMwSDI1RFJQN1hBUUlDdUFMNCsxV2Jnd0lIeUFjQmJId0VGZ0FEQUZiL3hBWVNCZXdBRndBZkFDa0FYcklWS2lzUkVqbXdGUkN3SGRDd0ZSQ3dJZEFBc0FvdnNCY3ZzZ0FYQ2hFU09iQUFMN0lNQ2hjUkVqbXdEQyt3Q2RDd0FCQ3dGTkN3REJDeUd3RUtLMWdoMkJ2MFdiQVVFTElkQVFvcldDSFlHL1Jac0NEUXNCc1FzQ0hRTURFQk1oWVNCd1lDQkNjbkJ5TTNJaVlDTnpZU0pCY1hOek1CQmhZWEZ4TWlCaVVETWpZM05pY21KaWNFREtMd2RCQVJ2ZjdYcXhRbzdTaWs3M1lRRXJzQktxd1dLdWI5SUJTUWxSV1R1dWdDa0pHMDZCZ0tDaENGYXdVa212N3hvYXorNlpnREFiL0FsZ0VOb2EwQkdKc0NBY2Y4M0t6SUJ3RURFZDdkL08vWnRreEZhbjBJQVAvLy84TUFBQVZIQmJBQ0JnQThBQUFBQVFBbC9xRUZmQVd3QUFzQU93Q3dDUyt3QUVWWXNBQXZHN0VBSHo1WnNBQkZXTEFFTHh1eEJCOCtXYkFBUlZpd0NpOGJzUW9QUGxteUFnRUtLMWdoMkJ2MFdiQUcwREF4QVRNRElSTXpBek1ESXhNaEFTTDMyZ0pzMnZmWnEzVGpQZnZ4QmJEN0dnVG0reHo5MVFGZkFBRUF4UUFBQldvRnNBQVFBRWF5QlJFU0VSSTVBTEFBUlZpd0FDOGJzUUFmUGxtd0FFVllzQWt2RzdFSkh6NVpzQUJGV0xBQkx4dXhBUTgrV2JJTkFRa1JFam13RFMreUJRRUtLMWdoMkJ2MFdUQXhBUU1qRXdZbkppWTNFek1EQmhZRU54TUZhdjMyYTVxdDV2QVpUUFpNRUdBQkJzNThCYkQ2VUFJK0xBUUM4OXdCeWY0MmdJSUdLZ0tvQUFBQkFDc0FBQWRqQmJBQUN3QklBTEFBUlZpd0FDOGJzUUFmUGxtd0FFVllzQU12RzdFREh6NVpzQUJGV0xBSEx4dXhCeDgrV2JBQVJWaXdDUzhic1FrUFBsbXlBUUVLSzFnaDJCdjBXYkFGMExBRzBEQXhBUU1oRXpNRElSTXpBeUVUQWgvWkFhM1o5OW9CcXRyMi9mbkYvQVd3K3hvRTV2c2FCT2I2VUFXd0FBRUFLLzZpQjJNRnNBQVBBRlFBc0FzdnNBQkZXTEFBTHh1eEFCOCtXYkFBUlZpd0F5OGJzUU1mUGxtd0FFVllzQWN2RzdFSEh6NVpzQUJGV0xBTkx4dXhEUTgrV2JJQkFRb3JXQ0hZRy9SWnNBWFFzQWJRc0FuUXNBclFzQUxRTURFQkF5RVRNd01oRXpNRE13TWpFeUVUQWgvWkFhM1o5OW9CcXRyMjI2VnkyVDM2RFB3RnNQc2FCT2I3R2dUbSt4TDk0QUZlQmJBQUFnQ0pBQUFGblFXd0FBd0FGUUJlc2dFV0Z4RVNPYkFCRUxBTjBBQ3dBRVZZc0FBdkc3RUFIejVac0FCRldMQUpMeHV4Q1E4K1diSURBQWtSRWptd0F5K3dBQkN5Q3dFS0sxZ2gyQnYwV2JBSkVMSVBBUW9yV0NIWUcvUlpzQU1Rc2hVQkNpdFlJZGdiOUZrd01STWhBeGNXRmdjR0JDTWhFeUVCQXdVeU5qYzJKaWVyQW5WZy9lSC9EeEQreC9iOTM5ditnQUlVVmdFU2dLOFBEVzF0QmJEOTB3RUI3TWJSL2dUdC9jditFZ0dSZDJkN0JBQURBQzRBQUFhOUJiQUFDZ0FUQUJjQWNMSUdHQmtSRWptd0JoQ3dEOUN3QmhDd0ZkQUFzQUJGV0xBSkx4dXhDUjgrV2JBQVJWaXdGaThic1JZZlBsbXdBRVZZc0Fjdkc3RUhEejVac0FCRldMQVVMeHV4RkE4K1diSUJDUWNSRWptd0FTK3dCeEN5RFFFS0sxZ2gyQnYwV2JBQkVMSVRBUW9yV0NIWUcvUlpNREVCRnhZV0J3WUVJeUVUTXdNREJUWTJOelltSndFakV6TUJ3ZjdqL1JFUS9zZjAvZDM5OTRSV0FSS0JyZzhPY0dzQzlmYjk5Z09EQVFIdnhORCtCYkQ5Q1A0U0FnS1FkMmw1QlAxSkJiQUFBZ0FqQUFBRWxBV3dBQW9BRXdCUXNnMFVGUkVTT2JBTkVMQUgwQUN3QUVWWXNBa3ZHN0VKSHo1WnNBQkZXTEFITHh1eEJ3OCtXYklCQ1FjUkVqbXdBUyt3QnhDeURRRUtLMWdoMkJ2MFdiQUJFTElUQVFvcldDSFlHL1JaTURFQkZ4WVdCd1lFSXlFVE13TURCVFkyTnpZbUp3RzIvdVA5RVJEK3gvVDkzZjMzaEZZQkVvR3VEdzV3YXdPREFRSHZ4TkQrQmJEOUNQNFNBZ0tRZDJsNUJBQUFBUUJQLytrRTl3WElBQ0FBaGJJT0lTSVJFamtBc0FCRldMQVVMeHV4RkI4K1diQUFSVml3SFM4YnNSMFBQbG15QXdFS0sxZ2gyQnYwV2JJSUZCMFJFamw4c0FndkdMSXdDQUZkc25JSUFWMnk0Z2dCWGJKQ0NBRmRzbUFJQVYyeTBBZ0JYYklBQ0FGeHNnY0JDaXRZSWRnYjlGbXdGQkN5RFFFS0sxZ2gyQnYwV2JJUkZCMFJFam15SUIwVUVSSTVNREVCRmhZWEZqWTNCVGNoTnpZbUp5WUdCd2MyQUJjZUFoY1dBZ0lFSnlZQUp3RkRCMzU4bE00Ni9nVWtBZTRJQTROK2lyQWo5U2dCUyt1TzFIa0pCa2U5L3V5bjN2NzlDQUhhbTRnREJkYnNBY3hrbjdZRUJKcVVBZVlCRkFRRGZ2R1llUDV6L3RHZEF3UUJCZVVBQUFJQU12L25CdmtGeHdBWUFDZ0FnN0lOS1NvUkVqbXdEUkN3Sk5BQXNBQkZXTEFJTHh1eENCOCtXYkFBUlZpd0VDOGJzUkFmUGxtd0FFVllzQVl2RzdFR0R6NVpzQUJGV0xBQUx4dXhBQTgrV2JJS0NBWVJFamw4c0FvdkdMSWZDZ0Z4dEdBS2NBb0NYYklFQVFvcldDSFlHL1Jac0JBUXNoNEJDaXRZSWRnYjlGbXdBQkN5SlFFS0sxZ2gyQnYwV1RBeEJTWUFFVGNqQXlNVE13TXpOaEkzTmhjV0FCY1dBZ0lIQmhNM05pWW1KeVlHQWdjR0ZoY1dFamNFTCtQKy9BRzRhZmI5OW5Lc0orK3ViM3pZQVFFTUJqbUxaN0xhQ1FZeWQxdCt3M2tLQ29TRXJlRWpGQVVCUEFFSkovMmpCYkQ5Y2VJQlZFUXNBd1QrM3ZkOC9yLys4MXFjQXhocWJibGhBd1NXL3M3bnQ5SUVCUUVPOVFBQy83QUFBQVRUQmJFQURnQVhBR0d5RWhnWkVSSTVzQklRc0F2UUFMQUFSVml3RFM4YnNRMGZQbG13QUVWWXNBQXZHN0VBRHo1WnNBQkZXTEFETHh1eEF3OCtXYklURFFBUkVqbXdFeSt5QVFFS0sxZ2gyQnYwV2JJRkV3RVJFam13RFJDeUZBRUtLMWdoMkJ2MFdUQXhJUk1oQVNFQkppWTNQZ0l6QlFNQkJoWVhGeE1uSWdZQzMxLys5LzZRL3VzQnNXZFlDZ3VYL3A0QjZmMzl5ZzlyYy9GWjE0YXRBaUQ5NEFKdlFjVjNqYzFyQWZwUUErRnhod1FCQWdBQ2kvLy9BQ0wvNkFQY0JGQUNCZ0JGQUFBQUFnQkQvK1lFWVFZVEFCc0FLd0Jpc2hnc0xSRVNPYkFZRUxBZDBBQ3dBRVZZc0JNdkc3RVRJVDVac0FCRldMQUdMeHV4Qmc4K1diSUFFd1lSRWptd0FDK3lGd0FURVJJNXNoRVRGeEVTT2JJYUFBWVJFam15SEFFS0sxZ2gyQnYwV2JBR0VMSWxBUW9yV0NIWUcvUlpNREVCRmhJSEJnQW5MZ0kzTnpVM0VnQTNOelkzTXc0Q0JBWUhOaGNtQmdZSEJoY1dGaGNXTmpjM05pWUNucnJQRWhiKzBlQ0x4MXNRQWdveEFTUG5YcE1Wd1FoU212N1h2MEdlZ0U5OVRRc0hCQWRpV0hXZ0ZRSU5ad1ArQlA3czEvZit6Z1FFanZtV0ZRTkxBVkFCampJU0hXWmtnRk01cEplWXhBSk5qRnRLT21SekF3T3dvQldMb0FBQUF3QWlBQUFFRmdRNkFBNEFGd0FmQUk2eUdTQWhFUkk1c0JrUXNBN1FzQmtRc0JIUUFMQUFSVml3QVM4YnNRRWJQbG13QUVWWXNBQXZHN0VBRHo1WnNoZ0FBUkVTT2JBWUw3S01HQUZkdEY4WWJ4Z0NjYlR2R1A4WUFuRzB2eGpQR0FKZHRCd1lMQmdDY2JKYUdBRmRzZzhIQ2l0WUlkZ2I5Rm15Q0E4WUVSSTVzQUFRc2hBQkNpdFlJZGdiOUZtd0FSQ3lId0VLSzFnaDJCdjBXVEF4TXhNRkZoY1dCd1lIRmhZSEJnWUhBd01YTmpZM05pWW5KeGN5TnpZbUp5Y2l2QUdlbEdLa0NRclFWR0VDQmVuTXpDLzBZVzhKQ2tkUzhyYlVGZ2xOWk1zRU9nRUVLMG1xb0ZFWmVsYVVwZ01CemY3ekFRTktRVGxEQTY4Qmdqby9Bd0VBQVFBWUFBQURpUVE2QUFVQUt3Q3dBRVZZc0FRdkc3RUVHejVac0FCRldMQUNMeHV4QWc4K1diQUVFTElBQVFvcldDSFlHL1JaTURFQklRTWpFeUVEWnY0NW11MjhBclVEZHZ5S0JEb0FBditGL3I0RVpBUTZBQTRBRkFCYnNoSVZGaEVTT2JBU0VMQUUwQUN3REMrd0FFVllzQVF2RzdFRUd6NVpzQUJGV0xBS0x4dXhDZzgrV2JJQUFRb3JXQ0hZRy9SWnNBYlFzQWZRc0F3UXNBblFzQWNRc0EvUXNCRFFzQVFRc2hFQkNpdFlJZGdiOUZrd01UYzJOamNUSVFNekF5TVRJUU1qRXdVbEV5RURBakZxZ1I5T0F0dWFrVnJzT1AxaE9QRmJBV2dCbFhiKytUWS92Mkh2cWdHQi9JajkvQUZDL3I0Q0F3TUVBcWYrOWY3MC8vOEFPLy9xQkFJRVVRSUdBRWtBQUFBQi82MEFBQVp5QkRvQUZRQ0NBTEFBUlZpd0NTOGJzUWtiUGxtd0FFVllzQTB2RzdFTkd6NVpzQUJGV0xBUkx4dXhFUnMrV2JBQVJWaXdBaThic1FJUFBsbXdBRVZZc0FZdkc3RUdEejVac0FCRldMQVVMeHV4RkE4K1diSVFFUUlSRWptd0VDK3lqeEFCWGJJQUFRb3JXQ0hZRy9SWnNBVFFzZ2dRQUJFU09iQVFFTEFMMExJVEFCQVJFamt3TVFFakF5TVRJd0VoQVFNaEV6TVRNd016QVNFQkV5RUQvNE5NN1V4ei9zTCt6d0hJNndFVHBIUks3VXBuQVRrQk1QNVQrUDdvQWJQK1RRR3ovazBDUHdINy9sY0JxZjVYQWFuOThQM1dBQUFCQUJiLzZRTzhCRkFBS1FDanNoa3FLeEVTT1FDd0FFVllzQ1l2RzdFbUd6NVpzQUJGV0xBS0x4dXhDZzgrV2JJWkpnb1JFam13R1MrMDd4bi9HUUp4dEI4Wkx4a0NjYksvR1FGeHRGOFpieGtDY2JTL0djOFpBbDJ5akJrQlhiSmFHUUZkc2hZSENpdFlJZGdiOUZteUF4WVpFUkk1c0FvUXNoRUJDaXRZSWRnYjlGbXlEaFlSRVJJNXRBTU9FdzRDWGJBbUVMSWZBUW9yV0NIWUcvUlpzaUlaSHhFU09iUU1JaHdpQWwwd01RRUdCZ2NXRmdjT0FpY21KamN6QmhZek1qWTNOaWNuTnhjMk5qYzJKaU1tQmdjSE5qWVhIZ0lEdGdWZVpraEZCQVY4MTMydzJ3VHBBbUpRVjNrTEZhVzRINXhWWndrSFQwUkxjdy90RFBtNGM3QmNBeHBLZGpNaGZVOXBsMUVEQXIyWFJWWlZTSWNGQWE4QkFrbEVQMGNDVFVFQmxMVUNBa3FKQUFBQkFCa0FBQVJJQkRvQUNRQkZBTEFBUlZpd0FDOGJzUUFiUGxtd0FFVllzQWN2RzdFSEd6NVpzQUJGV0xBQ0x4dXhBZzgrV2JBQVJWaXdCUzhic1FVUFBsbXlCQWNDRVJJNXNna0hBaEVTT1RBeEFUTURJeE1CSXhNekF3TlU5THp0ZlAzeTlMenRmQVE2KzhZQ3d2MCtCRHI5UGdELy93QVpBQUFFU0FYYUFpWUIrd0FBQVFjQmFnQ2MvL01BQ1FDd0FDK3dEZHd3TVFBQUFRQWlBQUFFZ1FRNkFBd0FhQUN3QUVWWXNBUXZHN0VFR3o1WnNBQkZXTEFJTHh1eENCcytXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQXN2RzdFTER6NVpzZ1lDQkJFU09YeXdCaThZdE5NRzR3WUNYYlJEQmxNR0FsMnlFd1lCY2JJQkFRb3JXQ0hZRy9SWnNnb0JCaEVTT1RBeEFTTURJeE16QXpNQklRRUJJUUhZZmt2dHZPMUxYZ0Z0QVRiK0h3RTAvdDBCclA1VUJEcitVQUd3L2U3OTJBQUIvNy8vL3dSSkJEb0FFQUJOc2dRUkVoRVNPUUN3QUVWWXNBQXZHN0VBR3o1WnNBQkZXTEFCTHh1eEFROCtXYkFBUlZpd0NDOGJzUWdQUGxtd0FCQ3lBd0VLSzFnaDJCdjBXYkFJRUxJS0FRb3JXQ0hZRy9SWk1ERUJBeU1USVFNR0JpY2pOemMyTmpjM0V3Ukp1KzZhL3Rwak5jeWZVaFlrVzNNZkQyQUVPdnZHQTNiK1BPYk5BY2tEQ0pldlVnSE9BQUVBSWdBQUJab0VPZ0FNQUZrQXNBQkZXTEFCTHh1eEFScytXYkFBUlZpd0N5OGJzUXNiUGxtd0FFVllzQU12RzdFRER6NVpzQUJGV0xBR0x4dXhCZzgrV2JBQVJWaXdDUzhic1FrUFBsbXlBQXNERVJJNXNnVUxBeEVTT2JJSUN3TVJFamt3TVFFQklRTWpFd0VqQXdNakV5RUNyd0c5QVM2ODdYcitiS0ttZ08yOEFTVUJMUU1OKzhZQ3V2MUdBdHI5SmdRNkFBRUFHUUFBQkVjRU9nQUxBSDRBc0FCRldMQUdMeHV4QmhzK1diQUFSVml3Q2k4YnNRb2JQbG13QUVWWXNBQXZHN0VBRHo1WnNBQkZXTEFFTHh1eEJBOCtXYklKQ2dBUkVqbXdDUyswdnduUENRSmRzcjhKQVhHMEx3ay9DUUp5c2w4SkFYSzA3d24vQ1FKeHRCOEpMd2tDY2JLUENRRmR0SThKbndrQ2NySUNBUW9yV0NIWUcvUlpNREVoSXhNaEF5TVRNd01oRXpNRGkrNU0vbXBNN3J6dVR3R1hUdTRCdGY1TEJEcitQUUhEQVAvL0FEbi82QVFuQkZJQ0JnQlRBQUFBQVFBWkFBQUVTQVE2QUFjQU9BQ3dBRVZZc0FZdkc3RUdHejVac0FCRldMQUFMeHV4QUE4K1diQUFSVml3QkM4YnNRUVBQbG13QmhDeUFnRUtLMWdoMkJ2MFdUQXhJU01USVFNakV5RURqTzZhL21tYTdyd0Rjd04yL0lvRU9nRC8vLy9IL21BRURRUlNBZ1lBVkFBQUFBRUFPUC9wQSs0RVVnQWNBRXV5QUIwZUVSSTVBTEFBUlZpd0VTOGJzUkViUGxtd0FFVllzQWd2RzdFSUR6NVpzZ0FCQ2l0WUlkZ2I5Rm15QkJFSUVSSTVzaFVJRVJFU09iQVJFTElZQVFvcldDSFlHL1JaTURFbEZqWTNOdzRDSnk0Q056YytBaGNXRmhVak5DWW5KZ1lIQWdIb1ZZTVM0QXVGMEhHTHhGb1BBeEdWN0pDdzB0NWJWb3VnQmdldEFtZFRBV3V3WWdNQ2pQZVlJNTMvaWdRRTRiUmRkZ1FFOU43Kzh3QUJBRk1BQUFRSUJEb0FCd0F4QUxBQVJWaXdCaThic1FZYlBsbXdBRVZZc0FJdkc3RUNEejVac0FZUXNnQUJDaXRZSWRnYjlGbXdCTkN3QmRBd01RRWhBeU1USVRjaEErYitySnZ0bXY2dklnT1RBM244aHdONXdmLy8vN1grUlFRU0JEb0NCZ0JkQUFBQUF3QTkvbUFGVVFZQUFDRUFMQUE0QUh5eUV6azZFUkk1c0JNUXNDblFzQk1Rc0RUUUFMQURMN0FBUlZpd0FDOGJzUUFiUGxtd0FFVllzQWN2RzdFSEd6NVpzQUJGV0xBVUx4dXhGQkUrV2JBQVJWaXdHQzhic1JnUFBsbXdBRVZZc0JFdkc3RVJEejVac0FBUXNqWUJDaXRZSWRnYjlGbXdKdEN3R0JDeU1RRUtLMWdoMkJ2MFdiQXIwREF4QVJZWEV6TUROaGNXRmdjR0J3Y09BaWNtSndNakV3WWpJaVluSmpjM05oSTJBVFluSmljbUJ3TVdNeklCQmhjV0Z4WTNFeVlqSmdNQ0dFUkZXTzFhUmtpWW53RUJCZ1VYaEx4eFQwaFM3VkkrUnBLaEF3RUdCaHFCdndLNUNRRUZrQ014Z3ljbTV2MEVDUU1LaUJnM2hDUWgxenNFVUFJZEFjLytMU0VDQXZIUlFEZ2tvL0J5QXdFZy9sVUJweG5adUR3M0s3UUJCSDc5d2xzNTJRY0NEUDAzQ3dGSFZ6QzBCd0VJQXN3TEJQNlpBUC8vLzdrQUFBUVRCRG9DQmdCY0FBQUFBUUFaL3I4RVNBUTZBQXNBT3dDd0NDK3dBRVZZc0FBdkc3RUFHejVac0FCRldMQUVMeHV4QkJzK1diQUFSVml3Q2k4YnNRb1BQbG15QWdFS0sxZ2gyQnYwV2JBRzBEQXhFek1ESVJNekF6TURJeE1oMWU2YkFaaWE3cHVRYmRrNC9Pb0VPdnlJQTNqOGlQMzlBVUVBQUFFQWNBQUFCQ0FFT3dBU0FFaXlEaE1VRVJJNUFMQUFSVml3Q0M4YnNRZ2JQbG13QUVWWXNCRXZHN0VSR3o1WnNBQkZXTEFBTHh1eEFBOCtXYklPRVFBUkVqbDhzQTR2R0xJRUFRb3JXQ0hZRy9SWk1ERWhJeE1HSXlZbU54TXpBd1lYRmhjV054TXpBMlR0Umx0aHdzOFROZTQyQmdVTWtsTnlZZTBCYXhZQzNMd0JUUDZ6TUNaNUJnTVhBZzBBQUFFQUdRQUFCaW9FT2dBTEFFZ0FzQUJGV0xBQUx4dXhBQnMrV2JBQVJWaXdBeThic1FNYlBsbXdBRVZZc0Fjdkc3RUhHejVac0FCRldMQUpMeHV4Q1E4K1diSUJBUW9yV0NIWUcvUlpzQVhRc0FiUU1ERUJBeUVUTXdNaEV6TURJUk1CdzVzQlJwdnRtZ0ZIbXUyOCtxdThCRHI4aUFONC9JZ0RlUHZHQkRvQUFRQVMvcjhHUEFRNkFBOEFTd0N3REMrd0FFVllzQUF2RzdFQUd6NVpzQUJGV0xBREx4dXhBeHMrV2JBQVJWaXdCeThic1FjYlBsbXdBRVZZc0Ewdkc3RU5EejVac2dFQkNpdFlJZGdiOUZtd0JkQ3dDZEF3TVFFRElSTXpBeUVUTXdNekF5TVRJUk1CdTVzQlI1cnRtZ0ZIbSt5YXRHM1pPZnJqdXdRNi9JZ0RlUHlJQTNqOGlQMzlBVUVFT2dBQUFnQlBBQUFFcGdRNkFBd0FGUUJlc2d3V0Z4RVNPYkFNRUxBTjBBQ3dBRVZZc0Fzdkc3RUxHejVac0FCRldMQUhMeHV4Qnc4K1diSUJDd2NSRWptd0FTK3dDeEN5Q1FFS0sxZ2gyQnYwV2JBSEVMSVBBUW9yV0NIWUcvUlpzQUVRc2hVQkNpdFlJZGdiOUZrd01RRVhGaFlIQmdRaklSTWhOeUVEQXhjMk5qYzJKaWNDVWRhd3p3a0wvdnpML2lHYS90RWlBaHhkUGRoY2ZBMExURXdDNGdFRXdxR3AwUU4yeFAzbC9xTUJBbDVUVFZrRUFBQURBQ0lBQUFYeEJEb0FDZ0FUQUJjQWJiSUNHQmtSRWptd0FoQ3dFZEN3QWhDd0ZkQUFzQUJGV0xBSkx4dXhDUnMrV2JBQVJWaXdGaThic1JZYlBsbXdBRVZZc0Fjdkc3RUhEejVac0FCRldMQVVMeHV4RkE4K1diSUJCd2tSRWptd0FTK3lDd0VLSzFnaDJCdjBXYkFIRUxJTkFRb3JXQ0hZRy9SWk1ERUJGeFlXQndZRUl5RVRNd01ERnpZMk56WW1Kd0VqRXpNQmo5YXd6d2tML3Z6TC9pRzg3VjA5MkZ4OERRdE5Td0xVN2J6dEF1SUJCTUtocWRFRU92M2wvcU1CQWw1VFRWa0UvZUlFT2dBQ0FDSUFBQVBrQkRvQUNnQVRBRTJ5RFJRVkVSSTVzQTBRc0FmUUFMQUFSVml3Q1M4YnNRa2JQbG13QUVWWXNBY3ZHN0VIRHo1WnNnRUhDUkVTT2JBQkw3SUxBUW9yV0NIWUcvUlpzQWNRc2cwQkNpdFlJZGdiOUZrd01RRVhGaFlIQmdRaklSTXpBd01YTmpZM05pWW5BWS9Xc004SkMvNzh5LzRodk8xZFBkaGNmQTBMVFVzQzRnRUV3cUdwMFFRNi9lWCtvd0VDWGxOTldRUUFBQUVBSS8vb0E5UUVVQUFmQUhTeUFDQWhFUkk1QUxBQVJWaXdDQzhic1FnYlBsbXdBRVZZc0JFdkc3RVJEejVac0FnUXNnQUJDaXRZSWRnYjlGbXlIQWdSRVJJNWZMQWNMeGl5VXh3QlhiSkFIQUZkc2dNY0FCRVNPYkliQndvcldDSFlHL1Jac0JFUXNoZ0JDaXRZSWRnYjlGbXlGUnNZRVJJNXNsTVZBVjB3TVFFbUJnY0hQZ0lYSGdJSEJ3WUNCaWNtSmpjWEJoWVhGaE1GTnlFMkpnSXNWSDBRM3dtRHpuS0l2VmNQQXhLVzdvNnIwQWJmQlZkUngxeityaDRCUXdoZEE0d0NhVkVCYkxCaEFRU00rSllibi83K2pRUUU0TE1CVzNZRUJnRXFBYWgra3dBQUFnQWsvK2tHRUFSVEFCY0FKd0NMc2lZb0tSRVNPYkFtRUxBUDBBQ3dBRVZZc0JZdkc3RVdHejVac0FCRldMQUVMeHV4QkJzK1diQUFSVml3RkM4YnNSUVBQbG13QUVWWXNBNHZHN0VPRHo1WnNnQVdGQkVTT2JBQUw3UWZBQzhBQW5HeXZ3QUJjYktQQUFGZHNsOEFBWEt5RXdFS0sxZ2gyQnYwV2JBT0VMSWRBUW9yV0NIWUcvUlpzQVFRc2lRQkNpdFlJZGdiOUZrd01RRXpOaVFYSGdJSEJ3WUNCd1luTGdJM0J3TWpFek1CQmhjV0ZoY1dOamMzTkNZbkpnWUhBWUc3UndFaHdJdkVYUkFDRnJTTlpIcCt4V01JeTAvdHZPMEJUUVlEQTJKYWQ2b1pCMkZnZWFjWkFvZmI4UVFFalAyWUZxNys3ejh0QXdOOTE0SUIvandFT3YzUk56eHBnQU1Gd2F4aGhJOEVBOEd2QUFBQy83WUFBQVFXQkRzQURRQVdBR0d5RkJjWUVSSTVzQlFRc0FUUUFMQUFSVml3QUM4YnNRQWJQbG13QUVWWXNBRXZHN0VCRHo1WnNBQkZXTEFGTHh1eEJROCtXYklTQUFFUkVqbXdFaSt5QXdFS0sxZ2gyQnYwV2JJSEF4SVJFam13QUJDeUV3RUtLMWdoMkJ2MFdUQXhBUU1qRXlNQklRRW1KamMySkRNREJoWVhGeE1uQmdZRUZyenNSZFArMnY3OEFVNVFUUVVLQVFqRjZ3dE9SUE0yeTF4L0JEcjd4Z0dOL25NQnVpMldXNkhDL3BkQVRnSUJBVGdCQWwvLy93QTcvK29FQWdZQUFpWUFTUUFBQVFjQVJBQ2NBQUFBRXdDd0FFVllzQWt2RzdFSkd6NVpzQ0hjTURFQS8vOEFPLy9xQkFJRnpRSW1BRWtBQUFFR0FHdHBBQUFNQUxBSkw3QXgzTEFnMERBeEFBRUFEZjVIQS9rR0FBQWpBSVd5QXlRbEVSSTVBTEFoTDdBQVJWaXdCQzhic1FRYlBsbXdBRVZZc0Fzdkc3RUxFVDVac0FCRldMQWFMeHV4R2c4K1diYWZJYThodnlFRFhiSXZJUUZkc2c4aEFWMnlJeG9oRVJJNXNDTXZzQi9Rc2h3SENpdFlJZGdiOUZtd0FkQ3lBaG9FRVJJNXNBc1FzaEFCQ2l0WUlkZ2I5Rm13QkJDeUZ3RUtLMWdoMkJ2MFdUQXhBU0VITmhjV0ZnY0RCZ1lqSmljM0ZqTXlOeE0ySnlZbkpnY0RJeE1qTnpNM013Y2hBc3orL2pPSHE1bVhFM29ZeWFWRFFoODFLMzhnZkFVRURZT0Zab2Z0ejVrZW1SM3VIZ0VFQkszcWpnUUMwOEQ5Q2JYRkFoREJFTUlDN3lzbGVnTUNoUHo2QksycnFLai8vd0FZQUFBRG1BWHpBaVlCOWdBQUFRY0Fkd0RHLy9NQUV3Q3dBRVZZc0FRdkc3RUVHejVac0FqY01ERUFBQUVBTy8vb0EvWUVWQUFmQUdLeUdDQWhFUkk1QUxBQVJWaXdFQzhic1JBYlBsbXdBRVZZc0Fndkc3RUlEejVac2dBQkNpdFlJZGdiOUZteUdoQUlFUkk1ZkxBYUx4aXlIQWNLSzFnaDJCdjBXYklEQUJ3UkVqbXdFQkN5RndFS0sxZ2gyQnYwV2JJVUdoY1JFamt3TVNVV05qYzNEZ0luTGdJM054SUFGeFlXQnlNMEppY21CZ2NsQnlFR0ZnSGxWb01VM3d1RTFYR012MVlRQWgwQk1ONnd6Z0xkWEZOb2t5MEJXQjcrdHcxZnJRSm5Vd0ZycjJRREJJcjNtQlFCQWdFMkJnVGh0R0Z5QkFPTW1nR29nSk1BLy84QUhQL3BBOFFFVUFJR0FGY0FBUC8vQUI4QUFBSUpCZGdDQmdCTkFBRC8vd0FpQUFBQzRRWEdBaVlBOUFBQUFRY0FhLzllLy9rQURBQ3dBaSt3RmR5d0JOQXdNZi8vL3d6K1JnSCtCZGdDQmdCT0FBQUFBdis5QUFBR1JnUTZBQmNBSHdCNXNnb2dJUkVTT2JBS0VMQVowQUN3QUVWWXNBQXZHN0VBR3o1WnNBQkZXTEFJTHh1eENBOCtXYkFBUlZpd0R5OGJzUThQUGxteUFnQUlFUkk1c0FJdnNBQVFzZ29CQ2l0WUlkZ2I5Rm13RHhDeUVRRUtLMWdoMkJ2MFdiQUlFTElhQVFvcldDSFlHL1Jac0FJUXNoOEJDaXRZSWRnYjlGa3dNUUVERnhZV0J3WUVJeUVUSVFNQ0JnY2pOemMyTmpjM0V3RURGelkyTnpZbkJEQkIxckxQQ1F2L0FNeitJWnIrOFVzM3lhWmtGU1ZjYng0U1lBSjdOOWhaZlEwU293UTYvb2NCQmJlWnBjWURkdjZyL3RYeEJja0RDSmFkWlFITy9jWCt3UUVDWEUrSUNnQUNBQmtBQUFaY0JEb0FFZ0FiQUlLeUFSd2RFUkk1c0FFUXNCUFFBTEFBUlZpd0FpOGJzUUliUGxtd0FFVllzQkV2RzdFUkd6NVpzQUJGV0xBTEx4dXhDdzgrV2JBQVJWaXdEeThic1E4UFBsbXlBUkVMRVJJNXNBRXZzZ1FSQ3hFU09iQUVMN0FCRUxJTkFRb3JXQ0hZRy9SWnNBUVFzaE1CQ2l0WUlkZ2I5Rm13Q3hDeUZBRUtLMWdoMkJ2MFdUQXhBU0VUTXdNWEZoWUhCZ1FqSVJNaEF5TVRNd0VERnpZMk56WW1Kd0Y3QVpkSDdrTFdzczhKQ2Y3L3pmNGhVLzVxVSs2ODdnSWhPTmhkZXdzS1NsRUNud0diL29jQkJiZVpwTWNCM2Y0akJEcjl4ZjdCQVFKZlRFQk5CUUFBQVFBTkFBQUQrUVlBQUJvQWM3SURHeHdSRWprQXNCZ3ZzQUJGV0xBRUx4dXhCQnMrV2JBQVJWaXdFUzhic1JFUFBsbXdBRVZZc0Frdkc3RUpEejVac3I4WUFWMnlMeGdCWGJJUEdBRmRzaG9SR0JFU09iQWFMN0FXMExJVEJ3b3JXQ0hZRy9SWnNBSFFzZ0lFRVJFU09iQUVFTElPQVFvcldDSFlHL1JaTURFQklRYzJGeFlXQndNakV6WW5KaWNtQndNakV5TTNNemN6QnlFQzRmN2tMb2VzbXBVVGRPMTJCUU1OZzRSb2grM1FoeDZISE80ZkFSa0V0ZktPQkFMV3ZmMUlBcnNySlhvREFvVDgrZ1MxcXFHaEFQLy9BQ0lBQUFTQkJmSUNKZ0g5QUFBQkJ3QjNBVVQvOGdBVEFMQUFSVml3QkM4YnNRUWJQbG13RDl3d01RRC8vd0FaQUFBRVNBWHpBaVlCK3dBQUFRY0FSQURILy9NQUV3Q3dBRVZZc0Fndkc3RUlHejVac0F2Y01ERUEvLy8vdGY1RkJCSUY1d0ltQUYwQUFBRUdBV3BVQUFBSkFMQUJMN0FUM0RBeEFBQUJBQm4rbWdSSUJEb0FDd0JGQUxBSUw3QUFSVml3QUM4YnNRQWJQbG13QUVWWXNBTXZHN0VER3o1WnNBQkZXTEFGTHh1eEJROCtXYkFBUlZpd0NTOGJzUWtQUGxteUFRRUtLMWdoMkJ2MFdUQXhBUU1oRXpNRElRTWpFeUVUQWNPYkFaaWE3cnordno3dVAvNjd2QVE2L0lnRGVQdkcvcG9CWmdRNkFBQUJBR0QvNWdjdUJiQUFJd0Jnc2dZa0pSRVNPUUN3QUVWWXNBQXZHN0VBSHo1WnNBQkZXTEFOTHh1eERSOCtXYkFBUlZpd0dDOGJzUmdmUGxtd0FFVllzQVF2RzdFRUR6NVpzQUJGV0xBSkx4dXhDUTgrV2JJSEFBUVJFam15RkFFS0sxZ2gyQnYwV2JBZjBEQXhBUU1HQkNjbUppY0dKeVltTnhNekF3WVhGaFlYRmpZM0V6TURCaGNXRmhjV05qY1RCeTZ2SGY3dnpteWdKWTdhdTg4VnJ2ZXZCUU1GUzBOa2lSU3YrNjhGQlFkUVJWK0JGYThGc1B2OTBQY0VBbGRNcVFRRStzUUVCUHY3S2l0SVZ3TUVnM2dFQmZ2N0xTdExVUU1EZjNzRUJRQUFBUUJFLytZR0hnUTZBQ0lBWExJWEl5UVJFamtBc0FCRldMQUFMeHV4QUJzK1diQUFSVml3RFM4YnNRMGJQbG13QUVWWXNCY3ZHN0VYR3o1WnNBQkZXTEFKTHh1eENROCtXYkFFMExBRUw3SUhGd2tSRWptd0NSQ3lFd0VLSzFnaDJCdjBXYkFlMERBeEFRTUdCaWNtSmljR0p5WW1OeE16QXdjVUZoY1dOamNUTXdNR0Z4WVdGeFkyTnhNR0huTWM4cmRiamlLQ3VxbXlFM1B0Y2dRNE9GTjBFM1B1Y2dRQ0FrSTdUMmdRY3dRNi9WTEU0Z1FDU2tLUkJBVG10Z0t2L1ZCSFExRURCWE53QXJEOVVDWW1RMDRCQTNackFyQUFBZ0FqQUFBRWxBV3dBQklBR3dCMHNoVWNIUkVTT2JBVkVMQUowQUN3QUVWWXNBOHZHN0VQSHo1WnNBQkZXTEFKTHh1eENROCtXYklTQ1E4UkVqbXdFaSt5QUFjS0sxZ2gyQnYwV2JJRER3a1JFam13QXkrd0FCQ3dDOUN3RE5Dd0VoQ3dEZEN3Q1JDeUZRRUtLMWdoMkJ2MFdiQURFTEliQVFvcldDSFlHL1JaTURFQkl3Y1hGaFlIQmdRaklSTWpOek0zTXdjekFRTUZOalkzTmlZbkFySFpJdjdqL1JFUS9zZjAvZDIrdXg2N0lmY2kydjdFVmdFU2dhNFBEbkJyQkVmRUFRSHZ4TkQrQkVlcXY3Lzl4LzRTQWdLUWQybDVCQUFDQUNILy9BUHBCaGdBRWdBYkFIR3lGUndkRVJJNXNCVVFzQVBRQUxBQVJWaXdEeThic1E4aFBsbXdBRVZZc0Frdkc3RUpEejVac2hJUENSRVNPYkFTTDdJQUJ3b3JXQ0hZRy9SWnNnSVBDUkVTT2JBQ0w3QUFFTEFMMExBU0VMQU4wTEFDRUxJVEFRb3JXQ0hZRy9SWnNBa1FzaFFCQ2l0WUlkZ2I5Rmt3TVFFaEF4Y1dGZ2NHQkNjaEV5TTNNeE16QXlFQkF4YzJOamMySmljQzQvN25Oc2U1MVF3Ti92VEMvaCs4cVI2b051MDJBUnIrY2tQWllId0xDa1pQQkRyK3lRRUJ6S20yMmdRRU9xc0JNLzdOL1Z2K2dnSUNjRlpNWmdVQUFRQXIvK2tHM3dYS0FDWUFpYkljSnlnUkVqa0FzQUJGV0xBbEx4dXhKUjgrV2JBQVJWaXdCQzhic1FRZlBsbXdBRVZZc0NNdkc3RWpEejVac0FCRldMQWJMeHV4R3c4K1diSUFKU01SRWptd0FDK3lCd1FiRVJJNXNBUVFzZ3NCQ2l0WUlkZ2I5Rm13QUJDd0R0Q3dBQkN5SWdFS0sxZ2gyQnYwV2JBUjBMQWJFTElWQVFvcldDSFlHL1Jac2hnYkJCRVNPVEF4QVJjU0FCY1dFaGNqSmlZbkpnWUhKUWNoQndZV0Z3UVROd1lBSnk0Q0p5WTNCd01qRXpNQnRLWlFBVjM2MlBzTDlRVjVkNVhTUEFIaUl2NHJDZzE5ZndFWFQvWW4vcTd3aWRGNEJnUU90WEgyL1BjRFR3RUJNZ0ZLQlFUKyt1eWNpd01GeitFQncyU3F3Z1FMQVMwQjVQN3lCQU4rNnBKUlVnSDlkQVd3QUFBQkFCbi82QVdrQkZNQUpnQ1ZzZzBuS0JFU09RQ3dBRVZZc0NZdkc3RW1HejVac0FCRldMQUVMeHV4QkJzK1diQUFSVml3SXk4YnNTTVBQbG13QUVWWXNCNHZHN0VlRHo1WnNnNGVCQkVTT1h5d0RpOFlzbElPQVYyeVFBNEJYYkFCMExBRUVMSUxBUW9yV0NIWUcvUlpzZ2dPQ3hFU09iQU9FTElQQndvcldDSFlHL1Jac0I0UXNoWUJDaXRZSWRnYjlGbXlHUllQRVJJNXNBOFFzQ0hRTURFQk16WWtGeFlXQnlNMEppY21BeVVISVFZWEZoY1dGeFkyTnpjT0FpY21BamNIQXlNVE13Rnpqa1VCSE1PdjBBTGRXVmJSVmdGNUh2NldCUVVMU2lVNldJRVQ0QXVJMDNERjRSS2hUdTY4N2dKeDdmVUZCT0MxWDNRRUJ2N2VBYXN5TW13d0dBRUNhVkVCYkxCaUF3UUJFY2NCL2pvRU9nQUMvNjRBQUFTRUJiQUFDd0FPQUZZQXNBQkZXTEFJTHh1eENCOCtXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQVl2RzdFR0R6NVpzQUJGV0xBS0x4dXhDZzgrV2JJTkNBSVJFam13RFMreUFBRUtLMWdoMkJ2MFdiQUUwTElPQ0FJUkVqa3dNUUVqQXlNVEl3TWhBVE1USXdFaEF3Tk9mVXJjU21uVi92Y0M4Ky8wOXY1Y0FVaExBYXIrVmdHcS9sWUZzUHBRQW1nQjlRQUFBditjQUFBRHVBUTZBQXNBRUFCV0FMQUFSVml3Q0M4YnNRZ2JQbG13QUVWWXNBSXZHN0VDRHo1WnNBQkZXTEFHTHh1eEJnOCtXYkFBUlZpd0NpOGJzUW9QUGxteURRSUlFUkk1c0EwdnNnRUJDaXRZSWRnYjlGbXdCTkN5RHdnQ0VSSTVNREVCSXdNakV5TURJd0V6RXlNQk13TW5Cd0tmWXpDK01WS1crd0pZNGVQaS9yUHdOZ1V1QVJmKzZRRVgvdWtFT3Z2R0FjUUJFMVJ0QUFBQ0FENEFBQWFOQmJBQUV3QVdBSHdBc0FCRldMQUNMeHV4QWg4K1diQUFSVml3RWk4YnNSSWZQbG13QUVWWXNBUXZHN0VFRHo1WnNBQkZXTEFJTHh1eENBOCtXYkFBUlZpd0RDOGJzUXdQUGxtd0FFVllzQkF2RzdFUUR6NVpzaFVDQkJFU09iQVZMN0FBMExBVkVMSUdBUW9yV0NIWUcvUlpzQXJRc0FZUXNBN1FzaFlDQkJFU09UQXhBU0VCTXhNakF5TURJeE1qQXlFVElRTWpFek1CSVFNQm53RllBYkx3OVBaQWZVcmRTbWpWL3ZiZS91dEw5djMyQWNJQlNFd0Nad05KK2xBQnF2NVdBYXIrVmdHci9sVUZzUHk0QWZZQUFBSUFNQUFBQlgwRU9nQVRBQmdBZndDd0FFVllzQUl2RzdFQ0d6NVpzQUJGV0xBU0x4dXhFaHMrV2JBQVJWaXdCQzhic1FRUFBsbXdBRVZZc0Fndkc3RUlEejVac0FCRldMQU1MeHV4REE4K1diQUFSVml3RUM4YnNSQVBQbG15QUJBU0VSSTVzQUF2c0FIUXNnNEJDaXRZSWRnYjlGbXdDOUN3QjlDd0FSQ3dGTkN3RmRDeUZ4SUVFUkk1TURFQk13RXpFeU1ESXdNakV5TURJeE1qQXlNVE13RXpBeWNIQVd2d0FWN2g0K2MyWFRLK01WS1crNXV1TWUyNzdnRjE4RFlGTGdIRUFuYjd4Z0VYL3VrQkYvN3BBUmYrNlFRNi9Zb0JFMVJ0QUFJQUZBQUFCbVFGc0FBYkFCNEFkN0lNSHlBUkVqbXdEQkN3SE5BQXNBQkZXTEFhTHh1eEdoOCtXYkFBUlZpd0JDOGJzUVFQUGxtd0FFVllzQXd2RzdFTUR6NVpzQUJGV0xBVEx4dXhFdzgrV2JJWUdnUVJFam13R0Mrd0FOQ3dHQkN5RHdFS0sxZ2gyQnYwV2JBSjBMSWNHZ1FSRWptd0doQ3lIUUVLSzFnaDJCdjBXVEF4QVJZV0J3TWpFelltSnljSEF5TVRKeVlHQndNakV6WWtKUmNESVFFQklRUjUyZFFYT2ZZNUVGWjhhQXhzOW1sc2haOFdPdlk1SUFFYkFRRVI5Z1RBL1NRQkxQNCtBeVFFNzlIK29BRmhlWDBGQXcvOXNBSmNBZ0Z6aHY2YUFXRGs0d0lCQW9qOWpBR25BQUlBRmdBQUJTb0VPZ0FiQUI0QWM3SWNIeUFSRWptd0hCQ3dGTkFBc0FCRldMQUZMeHV4QlJzK1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNBc3ZHN0VMRHo1WnNBQkZXTEFVTHh1eEZBOCtXYkFFMExBRUw3QUgwTEFFRUxJU0FRb3JXQ0hZRy9SWnNCZlFzaHdGQUJFU09iQUZFTElkQVFvcldDSFlHL1JaTURFek56WTJOd01oQVJZV0J3Y2pOelluSmljbkJ3TWpFeWNpQmdjSEFSTWhGaG9kNTlDeEE5ZitsS1NmRkJudUdnWUJCcG9rQmszc1RpWnloQlVjQWQzQy91Q3Z6TmNPQWRyK0lCRGp2cW1xTkMyTkRRSUkvbUVCcGdGemZyWUNhd0VnQUFJQU5RQUFDSmtGc0FBaEFDUUFsN0lkSlNZUkVqbXdIUkN3Sk5BQXNBQkZXTEFITHh1eEJ4OCtXYkFBUlZpd0N5OGJzUXNmUGxtd0FFVllzQUF2RzdFQUR6NVpzQUJGV0xBRkx4dXhCUTgrV2JBQVJWaXdFUzhic1JFUFBsbXdBRVZZc0Jvdkc3RWFEejVac2drSEFCRVNPYkFKTDdJZEFRb3JXQ0hZRy9SWnNBUFFzQWtRc0EzUXNCMFFzQmZRc2lJSEFCRVNPYkFMRUxJakFRb3JXQ0hZRy9SWk1ERWhFelkzQlFNakV6TURJUU1oQVJZV0J3TWpFelluSmljbkJ3TWpFeWNtQmdjREFRRWhBa2M3RjFiK3AydjIvZlp3QXgzK0JNTCtFOW5VRnpuMk9nY0dFckpuQzJ6MmFXNkVueFk3QW9BQksvNDlBVitmYXdQOW1nV3cvWHNDaGYxMEJPL1IvcUFCWVQwdWlnWUREZjJ1QWx3Q0FYT0cvcG9ET2dHcEFBQUNBQ0lBQUFjdEJEb0FJUUFrQUpteUd5VW1FUkk1c0JzUXNDVFFBTEFBUlZpd0J5OGJzUWNiUGxtd0FFVllzQXN2RzdFTEd6NVpzQUJGV0xBQUx4dXhBQTgrV2JBQVJWaXdCUzhic1FVUFBsbXdBRVZZc0JFdkc3RVJEejVac0FCRldMQWFMeHV4R2c4K1diQUZFTEFKMExBSkw3QUswTEljQVFvcldDSFlHL1Jac0FUUXNBb1FzQTNRc0J3UXNCZlFzaUlMQUJFU09iQUxFTElqQVFvcldDSFlHL1JaTURFaE56WTNCUU1qRXpNRElRTWhBUllXQndjak56WW5KaWNuQndNakV5TUdCZ2NIQVJNaEFoZ2NHazMrdmtydHZPMVNBcGE1QTlmK2xhR2dGQm50R2djQ0I1b2pCazNzVGl0emdSUWFBZDNDL3VDcG5tUUQvbGdFT3Y0bkFkbitJQkRpdjZtcU5TeVJDUUlJL21FQnBnRjJoYW9DYXdFZ0FBQUMvNnIrUWdReEI0d0FLZ0F6QUl1eUNUUTFFUkk1c0FrUXNEUFFBTEFiTDdBd0w3QUFSVml3Q1M4YnNRa2ZQbG13QUVWWXNCVXZHN0VWRHo1WnNnQUpGUkVTT2JBQUw3QUpFTElHQVFvcldDSFlHL1Jac0FBUXNpZ0JDaXRZSWRnYjlGbXlEeWdBRVJJNXNCVVFzaUlCQ2l0WUlkZ2I5Rm15RHpBQlhiQXdFTEF5MExBeUw3SVBNZ0Zkc2lzd01oRVNPYkF0MExBdEx6QXhBVEkyTnpZbUp5VTNGeDRDQndZRkZoWUhCZ1FuSndZSEJoY0hKaVkzTmpZekZ6STJOelltSnljM0FUYzNGUUVqQXpVWEFhUjlwQTRMWld2KzNpUDRoOUpxQ0JIKzltWm9Cdy8rMWRzMWpCRVFoMXQwaFFZRnhxbzBjcWtQRG5pQW1TTUJsS3JRL3MyVDZjUURUWE5xVm1NRkFjY0JBVnlwZE9GdExLdHd5ZThDQVFWcGFENlZLcmx4aEpjQmdXeHJlUVVCeHdPZ21RUVEvdXdCRlJBRUFBTC90ZjVLQThVR0lBQWxBQzRBdjdJckx6QVJFam13S3hDd0JOQUFzQ3N2c0FCRldMQUhMeHV4QnhzK1diQUFSVml3Rnk4YnNSY1JQbG13QUVWWXNCRXZHN0VSRHo1WnNnQVJCeEVTT2JBQUw3Uy9BTThBQWwyMFh3QnZBQUp4dEM4QVB3QUNjclR2QVA4QUFuRzBId0F2QUFKeHNvOEFBVjJ5dndBQmNyQUhFTElFQVFvcldDSFlHL1Jac0FBUXNpTUhDaXRZSWRnYjlGbXlEQ01BRVJJNXNCRVFzaDBCQ2l0WUlkZ2I5Rm13S3hDd0xkQ3dMUyswRHkwZkxRSmRzaVlyTFJFU09iQW8wTEFvTHpBeEFUWTNOaWNoTnhjV0ZnY0dCeFlIQmdRakl3WUhCaGNISmlZM05qWXpGekkyTnpZbkl6Y0JOemNYQVNNRE5SY0JoT1FYRXNMKzNpSHZ6dWtIQ3RHc0JBWCs4OVlsa3hFUWYxbG9nZ1FGdjZFd2FJME5GT2FoSGdGUHF0QUIvc3lUNmNNQ2JnYVJkUWU1QVFHYWpaMWNScHFlcndWcVlVS1BMckZ0ZjQ4QlVFYUdCNmtERTVrRUVmN3RBUlFSQkFELy93QjFBQUFGMXdXd0FnWUJtQUFBLy84QVAvNGlCWW9FUEFJR0FiZ0FBQUFEQUdMLzV3VWFCY2dBRWdBYkFDUUFjTElVSlNZUkVqbXdGQkN3Q2RDd0ZCQ3dIZEFBc0FCRldMQUtMeHV4Q2g4K1diQUFSVml3QUM4YnNRQVBQbG13Q2hDeUV3RUtLMWdoMkJ2MFdiSVdDZ0FSRWpsOHNCWXZHTEp6RmdGZHNtQVdBVjJ3QUJDeUhBRUtLMWdoMkJ2MFdiQVdFTElnQndvcldDSFlHL1JaTURFRkxnSW5KaEkzTmlRWEZnQVhGZ0lDQndZREpnWUhKVFkzTmlZQkZqWTNCUVlWRkJZQ1VJL1dlZ2dIT0VWZ0FUTzkyQUVCREFZNWkyZXlHcG5hUGdLb0J3RURoUDY4bXRVKy9WZ0doaFFEZy9pZGN3RkRoN3ZKQkFUKzN2ZDgvci8rODFxY0JRd0YzdklCTURXbnV2dk1CZHZ2QVRBenA3WUFBd0EyLytjRUpnUlNBQkVBRndBZEFHcXlHQjRmRVJJNXNCZ1FzQXpRc0JnUXNCTFFBTEFBUlZpd0JDOGJzUVFiUGxtd0FFVllzQTB2RzdFTkR6NVpzaElCQ2l0WUlkZ2I5Rm15R2dRTkVSSTVmTEFhTHhpeVVob0JYYkpBR2dGZHNoVUhDaXRZSWRnYjlGbXdCQkN5R0FFS0sxZ2gyQnYwV1RBeEV6WVNOaGNlQWdjSEJnSUdKeVlDTnpjQkZoTUZCaFlUSmdNbE5pWkdFcHZ6azR2SFd4QUNGSnp6a3NqaENnTUJwOUpoL2c0SVplWE5aQUh4Q0dnQ0lKNEJCWThFQkk3OGxoYWYvdjZNQkFVQkdkb28vcUlIQVNRQmc1WUMzQWYrNEFGOW1BQUJBS2dBQUFWZUJjWUFEd0JHc2dJUUVSRVNPUUN3QUVWWXNBWXZHN0VHSHo1WnNBQkZXTEFQTHh1eER4OCtXYkFBUlZpd0RDOGJzUXdQUGxteUFRd1BFUkk1c0FZUXNnZ0JDaXRZSWRnYjlGa3dNUUVYTndFMk5oY1hCeWNpQndFakF6TUNLZ1F5QVZkTHRIWXlHUkZiUHYzaTd1ZitBWUJqZGdMdHNwUUNBZGNCZ2Z1VUJiQUFBUUIzQUFBRVJBUlNBQkFBUnJJTkVSSVJFamtBc0FCRldMQUZMeHV4QlJzK1diQUFSVml3RUM4YnNSQWJQbG13QUVWWXNBMHZHN0VORHo1WnNnRU5FQkVTT2JBRkVMSUtBUW9yV0NIWUcvUlpNREVCRnpjVEVqTXlGd2NtQnlJSEFTTURNd0dwQWlTL2Q4ODRPQ2NZRWtzMy9udk9wK2NCYm1CZ0FjSUJJaGpCQ2dKdi9PNEVPd0QvL3dDb0FBQUZYZ2I4QWlZQ053QUFBUWNCZFFSWEFRNEFGZ0N3QUVWWXNBOHZHN0VQSHo1WnNCSGNzQlhRTURILy93QjNBQUFFUkFYUUFpWUNPQUFBQVFjQmRRUEMvK0lBRmdDd0FFVllzQTh2RzdFUEd6NVpzQkxjc0JiUU1ESC8vd0JyL2tVSmVBWElBQ1lBTXdBQUFBY0FYUVZtQUFELy93QTUva1VJaHdSU0FDWUFVd0FBQUFjQVhRUjFBQUFBQWdCbS8zVUZGQVl2QUJRQUpnQlZzaGtuS0JFU09iQVpFTEFBMEFDd0FFVllzQTB2RzdFTkh6NVpzQUJGV0xBREx4dXhBdzgrV2JBQTBMQU5FTEFLMExBTkVMSVhBUW9yV0NIWUcvUlpzQnJRc0FNUXNpQUJDaXRZSWRnYjlGbXdJOUF3TVFVSEp6Y21BaWMzRWdBbE54Y0hGaElYRmdjQ0FCTW1Kd2NuTndZQ0F4VVdGemNYQnlRVE5nS2tITUVjc2NnRUFSSUJUUUVRR2NFWnI4Y0ZBaHcwL3NhVkJad1Z3aGFsc2c4TW1CWENGZ0VQUGhnTWZ3R0FKQUVlNGt3QmJnSERKbklCZENUKzRlWjRsdjduL3FvRG9mQkFZZ0ZrTmY2eS9zVkM0ejFpQVdKWEFaUzJBQUlBT1ArSEJEVUV0UUFUQUNNQVdMSUFKQ1VSRWptd0ZOQUFzQUJGV0xBQUx4dXhBQnMrV2JBQVJWaXdDaThic1FvUFBsbXdBQkN3QTlDd0NoQ3dEZEN3Q2hDeUZBRUtLMWdoMkJ2MFdiQUFFTEljQVFvcldDSFlHL1Jac0JuUXNCUVFzQ0hRTURFQk54Y0hGaElIQndZQUJ3Y25OeVlDTnpjMkVoTTJOamMySndjbk53WUdCd1lYTnhjQ05SbTBHYWFtRlFJYy92cklHTFFZcGFNVkJ5UC8xRzk5QmdSdUZiUVdiWGtIQjJ3WHRBUkdid0Z2Si83Ynp4YmcvdHNjYkFGdUp3RWp5ekhhQVJMOGtpM3NzN2c4WVFGak1PZXh0ajlwQVFBREFHTC81UWJjQjBRQU1RQkdBRThBcjdJOVVGRVJFam13UFJDd0NkQ3dQUkN3UjlBQXNBQkZXTEFVTHh1eEZCOCtXYkFBUlZpd0J5OGJzUWNQUGxtd0ZCQ3dBTkN3QUMreUNnY1VFUkk1c0FjUXNBelFzQlFRc2hVQkNpdFlJZGdiOUZtd0J4Q3lLUUVLSzFnaDJCdjBXYkFlMExJaUZBY1JFam13RlJDd01kQ3dGQkN3UHRDd1BpK3dNOUN3TXkreU1nZ0tLMWdoMkJ2MFdiQXpFTEE1MExBNUw3SkNDQW9yV0NIWUcvUlpzRDRRc0V2UXNFc3ZzRS9Rc0U4dk1ERUJGaElIQXdZQUp5WW1Kd1luTGdJM0V6WWtOd2NHQmdjREJoY1dGaGNXTmpjVE13TUdGeFlXRnhZMk54TTJOU1luRXdjakxnTWpJZ1lIQnljM05qWVhIZ01CTmpZM054Y0hCZ2NGV0wzSEYxVWUvdS9KWjZNcGt0QjhzMUlQVlI4QkVkVVhZWUFWVlFVQkFrbEVab2tVUCs4L0JRVUlWVWRlZkJaV0JnU0tzUWtlTzNGeGJUY3pRQWtDZ3dJSWdtd3dXclZpL2Uwckp3Z1NwUTBSbmdXeENmNzd6ZjN0M1A3L0JBSlRTYU1HQW5uYWd3SVQzdm9FekFLTWd2M3NLaTVUWHdRRmhuc0JmLzU4THl4SlVRTURpb2dDRlMwdXBnb0I1b2dDSnk4a09ERVRBU1pzY1FJQkYwa1ovb294UGlWZUFXWnZXd0FEQUV2LzVRWERCZWdBTUFCRkFFMEFyN0k2VGs4UkVqbXdPaEN3Q3RDd09oQ3dSdEFBc0FCRldMQVZMeHV4RlJzK1diQUFSVml3RFM4YnNRMFBQbG13RlJDd0FOQ3dBQyt3RFJDd0NOQ3lDdzBWRVJJNXNCVVFzaFlCQ2l0WUlkZ2I5Rm13RFJDeUhRRUtLMWdoMkJ2MFdiSWhGUTBSRWptd0tOQ3dGaEN3TU5Dd0ZSQ3dQZEN3UFMrd010Q3dNaSt5TVFnS0sxZ2gyQnYwV2JBeUVMQTQwTEE0TDdKQkNBb3JXQ0hZRy9SWnNEMFFzRW5Rc0VrdnNFM1FzRTB2TURFQkhnSUhCd1lHSnlZbUp3WW5KaVkzRXpZM05qY0hCZzhDQmhZWEZqWTNOek1IQmhjV0ZoY1dOamNUTnpZbUp3RUhJeTRESXlJR0J3Y25OelkyRng0REFUWTNOeGNIQmdjRWEzR2VTUTBoSGV5eVdZMGpnTENvcmhRa0lZeDNyeFdwSnlRRUJEYzJVRzhSSCtZZEJBTURSVHRIWWhFbUJBSTdPZ0VEQ1NFNmJYaHJOekpBQ1FLRUFnaUNiREJhdjFuOThFc1BFYVlORUtBRVNBWnZ4SHp1MCswRkFrdEVsQVFFOGI0QkE5aHZYZ1BEQitYOVNFaGZBZ1YzYk1mSEppWkNVQUVEZW5VQkREOUZWUVlCNm9nQ0pUSWpPREVUQVNac2NRSUJGMDBWL29oVlAxNEJaVzljQUFBQ0FHRC81QWN0QnhFQUl3QXJBSVd5Qml3dEVSSTVzQVlRc0NyUUFMQUFSVml3QUM4YnNRQWZQbG13QUVWWXNBMHZHN0VOSHo1WnNBQkZXTEFZTHh1eEdCOCtXYkFBUlZpd0NTOGJzUWtQUGxtd0JOQ3dCQyt5QndBSkVSSTVzQWtRc2hRQkNpdFlJZGdiOUZtd0g5Q3dBQkN3S3RDd0tpK3dLTkN3S0MreUpnZ0tLMWdoMkJ2MFdiQW9FTEFyMExBckx6QXhBUU1HQkNjbUppY0dKeVltTnhNekF3WVhGaFlYRmpZM0V6TURCaGNXRmhjV05qY1RKVGNoQnlFSEl6Y0hMYThkL3U3TmFhSW1qOW0veWhTdTk2OEZBd1ZMUTJTSkZLLzdyd1VGQjFCRlhZTVZyL3g5RmdNOUZmNnhGN0VYQmJENy9kRDVCQUpYVHFvRUJ2dkNCQVQ3K3lvclNsVURCSU40QkFYNyt5MHJTMUVEQTM1OEJBWG5lbnAvZndBQ0FFVC81Z1llQmJFQUlnQXFBSW15Rnlzc0VSSTVzQmNRc0NuUUFMQUFSVml3QUM4YnNRQWJQbG13QUVWWXNBMHZHN0VOR3o1WnNBQkZXTEFYTHh1eEZ4cytXYkFBUlZpd0JDOGJzUVFQUGxtd0FFVllzQWt2RzdFSkR6NVpzZ2NYQkJFU09iSVRBUW9yV0NIWUcvUlpzQjdRc0JjUXNDblFzQ2t2c0NyUXNDb3ZzaVFJQ2l0WUlkZ2I5Rm13S2hDd0o5Q3dKeTh3TVFFREJnWW5KaVluQmljbUpqY1RNd01IRkJZWEZqWTNFek1EQmhjV0ZoY1dOamNUSlRjaEJ5RUhJemNHSG5NYzg3WmJqaUtEdWFteUUzUHRjZ1E0T0ZOekUzVHVjZ1FDQWtJN1QyZ1FjL3ppRmdNaEUvNitGN0VXQkRyOVVzYmdCQUpLUXBJRUJPbTBBcS85VUVkRFVRTURjR3NDdHYxUUppWkRUZ0VEZG1zQ3NQeDdlMzkvQUFBQkFGYitqQVRxQmNvQUdRQlRzZ0FhR3hFU09RQ3dBRVZZc0Fvdkc3RUtIejVac0FCRldMQUFMeHV4QUJjK1diQUFSVml3QWk4YnNRSVBQbG13Q2hDd0R0Q3dDaEN5RUFFS0sxZ2gyQnYwV2JBQ0VMSVlBUW9yV0NIWUcvUlpNREVCSXhNbUpnSTNFeElBRnhZU0J5Y1NKeVlHQndNSEJoWVhGd0o2OVVWOXJVb1RLaTBCWGZMazl3ejJFdmlQeXlBdEF3TjBhcWYrakFGb0dxa0JBcElCREFFZkFWUUZCUDczNWdFQklBY0Q0c2orNFVDUnFRUUJBQUFCQUVYK2lRUDhCRk1BR1FCVHNnQWFHeEVTT1FDd0FFVllzQW92RzdFS0d6NVpzQUJGV0xBQUx4dXhBQmMrV2JBQVJWaXdBaThic1FJUFBsbXdDaEN3RHRDd0NoQ3lFUUVLSzFnaDJCdjBXYkFDRUxJWUFRb3JXQ0hZRy9SWk1ERUJJeE1tQWpjM0VqYzJGeFlXQnljMkppY21CZ2NIQmhZWEZ3SWs3VVdibkJZQkhabVoxcXpQQnQ4RlZsSnhveFlLQjFaWW5mNkpBV3duQVNETUN3RUducHdGQk9PeUFWdDNCQVhDbzJwOGt3UUNBQUFCQURnQUFBUzZCVDRBRXdBVEFMQU9MN0FBUlZpd0JDOGJzUVFQUGxrd01RRVhCeWNESXdFbk54Y0JKemNYRXpjQkJRY25BakQ3VlAzcHVRRW0rMVQrQVF2OVZ2M3R0LzdWQVFCWitRRzRySFdxL3I4Qmw2dDFxd0Z6cTNlckFVY0IvbUtyZEtrQUFBSDg1Z1NpLytJRi9RQUhBQkVBc0FBdnNnTUdDaXRZSWRnYjlGa3dNUUVISnpjaE54Y0gvYW9XcmlzQ0VST3RKd1VnZmdIdWJBSGNBQUFCL1E0RkZ2L3pCaFFBRWdBckFMQUVMN0FJMExBSUw3SUFBZ29yV0NIWUcvUlpzQVFRc0EzUXNBMHZzZzRDQ2l0WUlkZ2I5Rmt3TVFNV0ZnY0hKemMySnlZR0JBY0hOekkrQXVSa2N3UURnZ0lHVmlwVC92TkJRd3RLVjlGaEJoTUNiR2NvQVJSZEJBSVFZZ1VCaHhOTkZ3QUIvaXNGRmY4Q0JtQUFCUUFNQUxBQkw3QUYwTEFGTHpBeEFUY3pCeGNIL2lzV3VSNG1VQVhuZWFSc093QUFBZjQ4QlJmL1d3WmdBQVVBREFDd0F5K3dBTkN3QUM4d01RRW5OemN6Qi82S1RrOFh1UmtGRjA1eWlZOEFBQWo2UWY3Q0FaNEZzUUFMQUJjQUl3QXZBRHNBUndCVEFGOEFlZ0N3UHkrd1N5K3dWeSt3TXkrd0FFVllzQU12RzdFREh6NVpzZ2tKQ2l0WUlkZ2I5Rm13UHhDd0Q5Q3dQeEN5UlFrS0sxZ2gyQnYwV2JBVjBMQkxFTEFiMExCTEVMSlJDUW9yV0NIWUcvUlpzQ0hRc0ZjUXNDZlFzRmNRc2wwSkNpdFlJZGdiOUZtd0xkQ3dNeEN5T1FrS0sxZ2gyQnYwV1RBeEFUWTJGeklXRlNjMkl5WUhBVFkyTXhZV0Z5YzJJeUlIQXpZMkZ4WVdGeWMySXlZSEFUWTJGeFlXRnljMkl5WUhBVFkyRnhZV0Z5YzJJeVlIQVRZMkZ6SVdGU2MySXlJSEFUWTJGeFlXRnljMkl5WUhBelkyRnhZV0Z5YzJJeVlIL1owSWIxdFhiV3NGVUZVYkFaMEliMXBaYXdKc0JWQlNIUklJYmx0WWFnSnJCVkJUSHY1NkNIRlhXR29DYXdWUVVoNzlNQWh3VzFocUFtc0ZVRk1lL2tJSWNGdFhiV3NGVDFRZC9vOElibHRZYWdKckJWQlRIaWNJYjFwWWF3SnNCVkJTSGdUeldHWUJhVllCWmdKbS91cFhaZ0ZtV0FGbVpQNEhXR1lCQVdaWEFXWUNadjMzV1dZQ0FXWlhBV1lDWnY3aldXVUJBV2RYQVdZQ1pnVVpXV1VCYVZZQlptVCtCMWhtQVFGbVZ3Rm1BbWI5OTFobUFRRm1Wd0ZtQW1ZQUFBajZiLzVqQVhNRnhnQUVBQWtBRGdBVEFCZ0FIUUFpQUNjQUx3Q3dJUyt3Rmkrd0VpK3dDeSt3R3krd0ppK3dBRVZZc0Fjdkc3RUhIejVac0FCRldMQUNMeHV4QWhFK1dUQXhCUmNESXhNVEp4TXpBd0UzQlFjbEJRY2xOd1VCTnlVWEJRRUhCU2NsRXljRE54TUJGeE1IQS8za0RxdG1mYVFPcW1aOUFha0tBVGtRL3NEN2p3cit4eEVCUHdQT0F3RktQLzdRL0dZRC9yWkFBVEp0RVY5QmxnS3hFVjlEbERvVC9yQUJZQVNoRVFGUi9xSCtFUXFBV2tROENvQmFSQUd1RXBoT3Z2eU5FNWhQdndMa0FRRlRPLzdRL09ZQi9xNDlBVEFBLy84QUovNStCWHdISkFJbUFkc0FBQUFuQVdvQlZ3RTlBUWNBRUFSVS84WUFFd0N3QUVWWXNBZ3ZHN0VJSHo1WnNBM2NNREVBLy84QUdmNStCSFlGMmdJbUFmc0FBQUFuQVdvQW5QL3pBUWNBRUFOaS84WUFFd0N3QUVWWXNBZ3ZHN0VJR3o1WnNBM2NNREVBQUFJQUl3QUFCSlFGc0FBU0FCc0FkTElWSEIwUkVqbXdGUkN3Q2RBQXNBQkZXTEFQTHh1eER4OCtXYkFBUlZpd0NTOGJzUWtQUGxteUVna1BFUkk1c0JJdnNnQUhDaXRZSWRnYjlGbXlBdzhKRVJJNXNBTXZzQUFRc0F2UXNBelFzQklRc0EzUXNBa1FzaFVCQ2l0WUlkZ2I5Rm13QXhDeUd3RUtLMWdoMkJ2MFdUQXhBU01IRnhZV0J3WUVJeUVUSXpjek56TUhNd0VEQlRZMk56WW1Kd0t4MlNMKzQvMFJFUDdIOVAzZHZyc2V1eUgzSXRyK3hGWUJFb0d1RHc1d2F3Ukh4QUVCNzhUUS9nUkhxcisvL2NmK0VnSUNrSGRwZVFRQUFnQWgvL3dENlFaaUFCSUFHd0Iwc2hVY0hSRVNPYkFWRUxBRDBBQ3dBRVZZc0Ewdkc3RU5IejVac0FCRldMQVJMeHV4RVI4K1diQUFSVml3Q1M4YnNRa1BQbG13RVJDeUFBY0tLMWdoMkJ2MFdiSUNEUWtSRWptd0FpK3dBQkN3QzlDd0ROQ3dBaEN5RXdFS0sxZ2gyQnYwV2JBSkVMSVVBUW9yV0NIWUcvUlpNREVCSVFNWEZoWUhCZ1FuSVJNak56TTNNd2NoQVFNWE5qWTNOaVluQXdiKzUxbkh1ZFVNRGY3MHd2NGYzNmtlcUNEdEh3RVovazlEMldCOEN3cEdUd1VGL2Y0QkFjeXB0dG9FQlFXcnNyTDhrUDZDQWdKd1ZreG1CUUFBQWdBbkFBQUZCUVd3QUE0QUd3Qk5zZ1FjSFJFU09iQUVFTEFYMEFDd0FFVllzQU12RzdFREh6NVpzQUJGV0xBQkx4dXhBUTgrV2JJV0F3RVJFam13RmkreUFBRUtLMWdoMkJ2MFdiQURFTElVQVFvcldDSFlHL1JaTURFQkF5TVRCVElFQndZSEZ3Y25CaU1CTmpjMkppY2xBeUUyTnljM0FYeGU5LzBCOStZQkJCTVRsRjl4WjRLckFSc3NDeEp4YmY3TVdBRVpSMDVZY2dJZC9lTUZzQUg3ek1PQmpWcVdOZ0ZEUkVOdWlnUUIvZ1FDRjRoWkFBTC94LzVnQkE4RVVnQVZBQ1lBYnJJRkp5Z1JFam13QlJDd0g5QUFzQUJGV0xBT0x4dXhEaHMrV2JBQVJWaXdDeThic1FzYlBsbXdBRVZZc0Fndkc3RUlFVDVac0FCRldMQUZMeHV4QlE4K1diSUhEZ1VSRWpteURBNEZFUkk1c0E0UXNoa0JDaXRZSWRnYjlGbXdCUkN5SGdFS0sxZ2gyQnYwV1RBeEpSY0hKd1luSmljREl3RTNCellYRmhZWEZnY0hCZ01tSmljbUJ3TVdGekkzSnpjWE5qYzJBMVJSY1U1alpxVmlZZTRCQk5rU2ZLeWNzUVlDQndVandRSmNWWVZpVlM2RU8wbFJjMFE0RWdxQ2dGbDROZ0lDYy8zK0Jkb0JjSWNFQk56RVFEMGs3d0dEYTM0Q0JILytIWGdDSW9OWmFHRnhTUUFBQVFBaUFBQUUzd2NRQUFrQU1ySURDZ3NSRWprQXNBQkZXTEFHTHh1eEJoOCtXYkFBUlZpd0JDOGJzUVFQUGxtd0JoQ3lBZ0VLSzFnaDJCdjBXVEF4QVNNSElRTWpFeUVUTXdTT0J3SDliTm4zL1FLZFBlWUU3UW43SEFXd0FXQUFBUUFSQUFBRHpBVnpBQWNBS3dDd0FFVllzQVF2RzdFRUd6NVpzQUJGV0xBQ0x4dXhBZzgrV2JBRUVMSUFBUW9yV0NIWUcvUlpNREVCSVFNakV5RVRNd04wL2lXYTdyd0IzRGZzQTNiOGlnUTZBVGtBQWYvOEFBQUVyQVd3QUEwQVNRQ3dBRVZZc0Fndkc3RUlIejVac0FCRldMQUNMeHV4QWc4K1diSU5DQUlSRWptd0RTK3lBQWNLSzFnaDJCdjBXYkFFMExBTkVMQUcwTEFJRUxJS0FRb3JXQ0hZRy9SWk1ERUJJd01qRXlNM014TWhCeUVETXdLSDczVDJkS1llcFdzRGdpVDlkVWZ2QXAvOVlRS2ZxZ0puelA1bEFBSC95d0FBQTRrRU9nQU5BRWtBc0FCRldMQUlMeHV4Q0JzK1diQUFSVml3QWk4YnNRSVBQbG15RFFnQ0VSSTVzQTB2c2dBSENpdFlJZGdiOUZtd0JOQ3dEUkN3QnRDd0NCQ3lDZ0VLSzFnaDJCdjBXVEF4QVNFREl4TWpOek1USVFjaEJ5RUNWdjhBVWUxUm5oNmRUZ0sxSS80NUxBRUJBZEgrTHdIUnFnRy94UHNBQUFFQUx2N0VCS3dGc0FBWEFGdXlBeGdaRVJJNUFMQUtMN0FBUlZpd0ZpOGJzUllmUGxtd0FFVllzQlF2RzdFVUR6NVpzQllRc2dBQkNpdFlJZGdiOUZteUF4WVVFUkk1c0FNdnNBb1FzZ3NIQ2l0WUlkZ2I5Rm13QXhDeUVnRUtLMWdoMkJ2MFdUQXhBU0VETXhZV0VnY0NBQWMzTmhNMkp5WW1KeU1ESXhNaEJJajlkVW1ZcWU1ckVSdit6dndTNzBjZ0RRMkdkN1J0OXZ3RGdnVGsvbDRFai83OXFmNzcvc3dHdXdZQkY0QnhibmtFL1lnRnNBQUJBQkgrM3dPQ0JEb0FGUUJLc2c4V0Z4RVNPUUN3Q2krd0FFVllzQlF2RzdFVUd6NVpzQUJGV0xBU0x4dXhFZzgrV2JBVUVMSUFBUW9yV0NIWUcvUlpzZ01VRWhFU09iQURMN0lRQVFvcldDSFlHL1JaTURFQklRY1hIZ0lIQmdJSEp6WTNOaVluSndNakV5RURYLzQ2S0VDUDJXa05EL08wUXVzZURuVjFYRS91dkFLMUEzYmxBUU41MW9pai92d3dzMUhVZVpFRUFmNDZCRG9BLy8vL3BmNmFCK0FGc0FJbUFka0FBQUFIQS8wR2d3QUEvLy8vcmY2YUJuSUVPZ0ltQWZrQUFBQUhBLzBGUEFBQS8vOEFIdjQ2QktnRnhRSW1BZG9BQUFBSEEvMEJkZitnLy84QUZ2NDdBN3dFVUFJbUFmb0FBQUFIQS8wQkgvK2gvLzhBTHY2YUJYc0ZzQUltQThFQUFBQUhBLzBFRHdBQS8vOEFJdjZhQklFRU9nSW1BZjBBQUFBSEEvMERXUUFBQUFFQUl3QUFCWU1Gc0FBVUFHRUFzQUJGV0xBQUx4dXhBQjgrV2JBQVJWaXdEQzhic1F3ZlBsbXdBRVZZc0FJdkc3RUNEejVac0FCRldMQUtMeHV4Q2c4K1diSVBDZ3dSRWptd0R5K3ludzhCWGJJSUFRb3JXQ0hZRy9SWnNnRUlEeEVTT2JBRjBMQVBFTEFTMERBeENRSWhBeWNISXpjakF5TVRNd016TnpNRE13RUZnLzRJQVJYKzFyWkJMcDhwVld6My9mZHJWQzJnTXpJQmZ3V3cvVTc5QWdKdEFlcnAvWk1Gc1AyYS92OEFBbWdBQUFFQUlRQUFCTTBFT2dBVUFGd0FzQUJGV0xBTkx4dXhEUnMrV2JBQVJWaXdGQzhic1JRYlBsbXdBRVZZc0Fvdkc3RUtEejVac0FCRldMQURMeHV4QXc4K1diSU9DZzBSRWptd0RpK3lDUUVLSzFnaDJCdjBXYklCQ1E0UkVqbXdCZEN3RGhDd0V0QXdNUUVCRXlFREp3Y2pOeU1ESXhNekF6TTNNd2N6QVFUTi9tcmwvdUNHTHlTWUlGTkw3THpzUzFJa21Da2lBUllFT3YzeC9kVUJyQUd6c3Y1VUJEcitVTWZKQWJJQUFBRUFOd0FBQlk4RnNBQVVBRzRBc0FCRldMQUVMeHV4QkI4K1diQUFSVml3RWk4YnNSSWZQbG13QUVWWXNBc3ZHN0VMRHo1WnNBQkZXTEFJTHh1eENBOCtXYklURWdzUkVqbXdFeSt3RU5DeURRY0tLMWdoMkJ2MFdiQUIwTElDQ3hJUkVqbXdBaSt5Q2dFS0sxZ2gyQnYwV2JJR0NnSVJFamt3TVFFakJ6TUJJUUVCSVFFakF5TVRJemN6TnpNSE13TEN6aXA5QWdvQlB2MllBWWIrNlA2OXJtejJ2TWNleGlQMkk4OEVQL01DWlAwNy9SVUNjUDJRQkQrcXg4Y0FBQUVBR1FBQUJGa0dBQUFVQUdvQXNCSXZzQUJGV0xBRUx4dXhCQnMrV2JBQVJWaXdDeThic1FzUFBsbXdBRVZZc0Fndkc3RUlEejVac2hNU0N4RVNPYkFUTDdJQkJ3b3JXQ0hZRy9SWnNnSUxCQkVTT2JBQ0w3SUtBUW9yV0NIWUcvUlpzZ1lLQWhFU09iQUJFTEFOMExBVEVMQVEwREF4QVNNRE13RWhBUUVoQXlNREl4TWpOek0zTXdjekFxUytYbDBCVHdFbC9ra0JHUDc5M25KUzdkTGhIdUViN0J1K0JMdjk0UUdlL2dYOXdRSFovaWNFdTZxYm13QUFBUUNrQUFBRzR3V3dBQTRBWVFDd0FFVllzQVl2RzdFR0h6NVpzQUJGV0xBS0x4dXhDaDgrV2JBQVJWaXdBaThic1FJUFBsbXdBRVZZc0Ewdkc3RU5EejVac2dnR0FoRVNPYkFJTDdJQkFRb3JXQ0hZRy9SWnNBWVFzZ1FCQ2l0WUlkZ2I5Rm15REFFSUVSSTVNREVCSXdNakV5RTNJUU16QVNFQkFTRURwcTlzOXRyK05TTUN3R3A5QWdzQlB2MlhBWWIrNkFKdy9aQUU3TVQ5bkFKay9UdjlGUUFCQUd3QUFBVzdCRG9BRGdCckFMQUFSVml3Qmk4YnNRWWJQbG13QUVWWXNBb3ZHN0VLR3o1WnNBQkZXTEFDTHh1eEFnOCtXYkFBUlZpd0RTOGJzUTBQUGxteUNRb0NFUkk1c0FrdnNpOEpBWEd5akFrQlhiSUFBUW9yV0NIWUcvUlpzQVlRc2dRQkNpdFlJZGdiOUZteURBQUpFUkk1TURFQkl3TWpFeUUzSVFNekFTRUJBU0VERVg1SzdacitkaUlDZDB4ZkFXMEJOdjRlQVRUKzNnR3MvbFFEZHNUK1VBR3cvZTM5MmYvL0FDZittZ1dIQmJBQ0pnQXNBQUFBQndQOUJHa0FBUC8vQUJuK21nUnBCRG9DSmdJQUFBQUFCd1A5QTJzQUFBQUJBQ2NBQUFmZkJiQUFEUUJkQUxBQVJWaXdBaThic1FJZlBsbXdBRVZZc0F3dkc3RU1IejVac0FCRldMQUdMeHV4Qmc4K1diQUFSVml3Q2k4YnNRb1BQbG15QVFJR0VSSTVzQUV2c0FJUXNnUUJDaXRZSWRnYjlGbXdBUkN5Q0FFS0sxZ2gyQnYwV1RBeEFTRVRJUWNoQXlNVElRTWpFek1Cc1FKMmFRTlBJdjJvMi9ady9ZcHc5LzMzQTFJQ1hzUDdFd0tIL1hrRnNBQUFBUUFSQUFBRmtnUTZBQTBBWmdDd0FFVllzQUl2RzdFQ0d6NVpzQUJGV0xBTUx4dXhEQnMrV2JBQVJWaXdCaThic1FZUFBsbXdBRVZZc0Fvdkc3RUtEejVac2dFTUJoRVNPWHl3QVM4WXRFQUJVQUVDWGJBQ0VMSUVBUW9yV0NIWUcvUlpzQUVRc2dnQkNpdFlJZGdiOUZrd01RRWhFeUVISVFNakV5RURJeE16QVd3QmwwNENRU1ArcnBydFRQNXBUTzY4N2dKM0FjUEUvSW9CdGY1TEJEb0FBUUF1L3NJSGhnV3dBQmtBYUxJVUdoc1JFamtBc0FndnNBQkZXTEFZTHh1eEdCOCtXYkFBUlZpd0VpOGJzUklQUGxtd0FFVllzQll2RzdFV0R6NVpzZ0VZRWhFU09iQUJMN0FJRUxJSkJ3b3JXQ0hZRy9SWnNBRVFzaEFCQ2l0WUlkZ2I5Rm13R0JDeUZBRUtLMWdoMkJ2MFdUQXhBVE1XRmhJSEFnQUhOellUTmljbUppY2pBeU1USVFNakV5RUZGbTZwN21zUkcvN08vQkx2UnlBTkRZWjNpbTMyMmYyVTJmYjhCRmtEUUFTUC92MnAvdnYrekFhN0JnRVhnSEZ1ZVFUOWlnVGsreHdGc0FBQUFRQVIvdU1HVWdRNkFCY0FWN0lRR0JrUkVqa0FzQWN2c0FCRldMQVdMeHV4RmhzK1diQUFSVml3RUM4YnNSQVBQbG13QUVWWXNCUXZHN0VVRHo1WnNnRVdFQkVTT2JBQkw3SU9BUW9yV0NIWUcvUlpzQllRc2hJQkNpdFlJZGdiOUZrd01RRVhGZ0FIQmdJSEp6WTJOelltSnljREl4TWhBeU1USVFQMlllNEJEUk1QOUxOQ2VZUU1EMzkvalZEdG1mNXBtdTY4QTNNQ2xBRUMvdnpVcHY4QU1MSXFtR040a3dRQi9qWURkdnlLQkRvQUFnQmwvK2dGMlFYSEFDc0FPZ0NNc2hrN1BCRVNPYkFaRUxBNjBBQ3dBRVZZc0NBdkc3RWdIejVac0FCRldMQU9MeHV4RGg4K1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNBUXZHN0VFRHo1WnNnSUVJQkVTT2JBQ0w3QU9FTElQQVFvcldDSFlHL1Jac0FRUXNoY0JDaXRZSWRnYjlGbXdBQkN5S3dFS0sxZ2gyQnYwV2JBQ0VMQXYwTEFnRUxJMkFRb3JXQ0hZRy9SWk1ERUZKaWNHSnk0Q0p5WTNOeElBTndjR0JnSUdGeFlXRnpJM0poTTNOaEkyRnhZV0Z4Y1dCd2NDQnhZWEFSWVdGellUTnpZMU5DY21Bd2NHQlVyU3BLdWlrT21RRUFrTUdpNEJPT0FZYjVvL0NRWU1tWDh4TXFVbElCaVN4bmFSdFJNRUFRY2lNZHRQYWY0QUEwVStyU3dpQ24rck5pUUpGd2RCU1FRQ2YrcVdWMWFyQVNzQlVnWFVBczcraUhnOGpxY0RDUEFCRnRHa0FRaDlBd1RSdFRkQ1Bkcisyc0lPQWdHa1dwbzVqUUVBNGxNeXpnY0kvc2J2UFFBQUFnQkwvK29Fa2dSU0FDY0FNZ0NNc2hzek5CRVNPYkFiRUxBcDBBQ3dBRVZZc0Iwdkc3RWRHejVac0FCRldMQU1MeHV4REJzK1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNBUXZHN0VFRHo1WnNnSUVIUkVTT2JBQ0w3QU1FTElOQVFvcldDSFlHL1Jac0FRUXNoUUJDaXRZSWRnYjlGbXdBQkN5SndNS0sxZ2gyQnYwV2JBQ0VMQXEwTEFkRUxJd0FRb3JXQ0hZRy9SWk1ERUZKaWNHSnlZbUFqYzNOaEkzQndZSEJ4VVdGaGN6TnlZM056NENGeFlXRnhZSEJ3WUhGaGNCQmhjMlB3STBKeVlIQkUyemg0bUJqdEJnRVFjYTg3MFdseVlPQldkYkZ4WmZGaE1TYlpwYWU1SUdBZ1VSSVo0NVlmNXBFVjlyRnc4R1MyOGRGQVEwT2dJQ21nRUltRHZjQVFzR3loUCtlRTF2aFFNQ3FjYU9lc1JjQXdUQm5qUXZmdFdXQ3dJQmpxZHdaYVNCVjVrREJ2WUEvLzhBWmY0K0JRMEZ4d0ltQUNjQUFBQUhBLzBCdVAray8vOEFPUDQrQSs0RVVnSW1BRWNBQUFBSEEvMEJPditrLy84QW5QNmFCU0lGc0FJbUFEZ0FBQUFIQS8wQ093QUEvLzhBVS82YUJBZ0VPZ0ltQWdVQUFBQUhBLzBCMkFBQS8vOEFvUUFBQlUwRnNBSUdBRDBBQVAvL0FIZitYd1F3QkRvQ0JnR2pBQUFBQVFDaEFBQUZUUVd3QUE0QVZySUtEeEFSRWprQXNBQkZXTEFJTHh1eENCOCtXYkFBUlZpd0N5OGJzUXNmUGxtd0FFVllzQUl2RzdFQ0R6NVpzZ1lDQ0JFU09iQUdMN0lGQndvcldDSFlHL1Jac0FIUXNnb0lBaEVTT2JBR0VMQU8wREF4QVNNREl4TWpOek1CSVJNQklRRXpBNW5QV3ZoYXhCNTkvdmdCQmMwQnZBRWUvZTU4QWdUOS9BSUVxZ01DL1ZBQ3NQeitBQUFCQUZUK1h3UXdCRG9BRGdCanNnb1BFQkVTT1FDd0FFVllzQWd2RzdFSUd6NVpzQUJGV0xBTEx4dXhDeHMrV2JBQVJWaXdBaThic1FJUlBsbXdBRVZZc0FBdkc3RUFEejVac0FCRldMQUVMeHV4QkE4K1diSUdCd29yV0NIWUcvUlpzZ29MQUJFU09iQU4wTEFPMERBeEJTTURJeE1qTnpNRE14TUJNd0V6QXQvVlNlMUl5QjZpbmV4bUFXbisvaWlsQWY1Z0FhQ3FBNUg5QkFMOC9HLy8vLy9EL3BvRlJ3V3dBaVlBUEFBQUFBY0QvUVBBQUFELy8vKzUvcG9FRXdRNkFpWUFYQUFBQUFjRC9RTE5BQUFBQVFDZC9xRUdiZ1d3QUE4QVR3Q3dEUyt3QUVWWXNBZ3ZHN0VJSHo1WnNBQkZXTEFDTHh1eEFoOCtXYkFBUlZpd0RpOGJzUTRQUGxtd0FoQ3lBQUVLSzFnaDJCdjBXYkFGMExBT0VMSUdBUW9yV0NIWUcvUlpzQXJRTURFQklUY2hCeUVESVJNekF6TURJeE1oQWZQK3FpTURveVArcXJnQ2JkbjIyYXR6NHo3NzhBVHN4TVQ3M2dUbSt4ejkxUUZmQUFBQkFGYit2d1RZQkRvQUR3QkxBTEFOTDdBQVJWaXdBeThic1FNYlBsbXdBRVZZc0E4dkc3RVBEejVac0FNUXNnUUJDaXRZSWRnYjlGbXdBTkN3RHhDeUJnRUtLMWdoMkJ2MFdiQURFTEFJMExBR0VMQUswREF4QVNNM0lRY2pBeUVUTXdNekF5TVRJUUZFN2lJQ3NDUFVlQUdYbSsyYWoyM1lPUHpxQTNmRHcvMUxBM2o4aVAzOUFVRUEvLzhBeGY2YUJXb0ZzQUltQWVvQUFBQUhBLzBFUFFBQS8vOEFjUDZhQkRvRU93SW1BZ29BQUFBSEEvMERQQUFBQUFFQXVRQUFCVndGc0FBWUFFK3lCUmthRVJJNUFMQUFSVml3QUM4YnNRQWZQbG13QUVWWXNBc3ZHN0VMSHo1WnNBQkZXTEFPTHh1eERnOCtXYklGRGdBUkVqbXdCUyt3Q05Dd0JSQ3lGQUVLSzFnaDJCdjBXYkFSMERBeEFRTUdGeFlYRXpNRE5qY1RNd01qRXdZSEJ5TTNKaVkzRXdJU1N3Y0ZES2s3bnpoZWNIdjMvZmRyVVg4dW9DL1kweGRMQmJEK05Ub3VqUkVCSy83YkN4Z0NxUHBRQWowV0RPem5EUGJQQWNrQUFBRUFoUUFBQkRRRU93QVZBRSt5QkJZWEVSSTVBTEFBUlZpd0NpOGJzUW9iUGxtd0FFVllzQlF2RzdFVUd6NVpzQUJGV0xBQUx4dXhBQTgrV2JJUEZBQVJFam13RHkreUJnRUtLMWdoMkJ2MFdiQUQwTEFQRUxBUzBEQXhJU01UQndjak55WW1OeE16QXdjR0Z4TXpBemNUTXdONTdrVjFIYUFmblpzU051dzRCQU5aTmFBMWRHRHRBV29UaTQwWDI2UUJUUDZ5UUdzaUFRdis3aFFDRFFBQkFPY0FBQVdNQmJBQUVBQkdzZ0lSRWhFU09RQ3dBRVZZc0FFdkc3RUJIejVac0FCRldMQUFMeHV4QUE4K1diQUFSVml3Q1M4YnNRa1BQbG15QlFrQkVSSTVzQVV2c2c0QkNpdFlJZGdiOUZrd01UTVRNd00yRnhZV0J3TWpFelltSkFjRDUvMzJhNXF0NXZBWlRQWk1FR0QrK3M1OEJiRDl3aXdFQXZQYy9qY0J5bitEQmlyOVdQLy9BQTBBQUFQNUJnQUNCZ0JNQUFBQUFnQmkvK29Gd1FYSUFDRUFMQUJrc2h3dExoRVNPYkFjRUxBcjBBQ3dBRVZZc0JBdkc3RVFIejVac0FCRldMQUFMeHV4QUE4K1diSWpBQkFSRWptd0l5K3lGZ0VLSzFnaDJCdjBXYkFGMExBakVMQU0wTEFBRUxJZEFRb3JXQ0hZRy9SWnNCQVFzaWtCQ2l0WUlkZ2I5Rmt3TVFVbUpBSTNOeVltTnhjSEZCYzJFaVFYRmhJWEZnY0hKUWNHRnhZV0Z4WTNGd1lCSlRjMkp5WW1KeVlHQndOb3NQNzNkQjROZzRFSnNBSmVKYndCQzUvUTZRVUJDeGI4dWd3UENnNmJnSjNESFhUOThRSmJCd3NEQlhab2g4UTNGZ0drQVNHdlNCelRwUUZFZENpMEFTR1pCQVQrNnVwU1VZa0JPRk5LZFlnREEwaklVd05sQlNGQ1FuQ0JBd1hHendBQy8vVC82Z1NEQkZNQUhBQW1BSkd5RFNjb0VSSTVzQTBRc0I3UUFMQUFSVml3RGk4YnNRNGJQbG13QUVWWXNBQXZHN0VBRHo1WnNpRU9BQkVTT2JBaEw3Uy9JYzhoQWwyMFh5RnZJUUp4c3I4aEFYRzBIeUV2SVFKeHNvOGhBVjIwN3lIL0lRSnhzaElIQ2l0WUlkZ2I5Rm13Qk5Dd0lSQ3dDOUN3QUJDeUZ3RUtLMWdoMkJ2MFdiSVpEZ0FSRWptd0RoQ3lIUUVLSzFnaDJCdjBXVEF4QlM0Q055WW1OeGNIQmhjMkpCY1dFZ2NISVFZV0ZoY1dOeGNHQmdNbUJnY0ZOelluSmlZQ2JZdlFZUlJwYUFla0JBTkNTUUVhczhySkhnLzlWd2N0YUVtYWdIaEQ0ZzllalRVQndRVUhCUXBZRkFPSTdZa2d1NVFCT0Y4dDAra0ZCZjdaNm1oUmdVMENCWWw5WVdzRG9nTjlrQUlXTGl4SFV2Ly9BR0wrUXdYQkJjZ0NKZ0orQUFBQUJ3UDlBc2YvcWYvLy8vVCtSZ1NEQkZNQ0pnSi9BQUFBQndQOUFkZi9yUC8vQURVQUFBSW9CYkFDQmdBdEFBRC8vLytsQUFBSDRBY2tBaVlCMlFBQUFRY0JhZ0pRQVQwQUNRQ3dDUyt3R2R3d01RRC8vLyt0QUFBR2NnWGFBaVlCK1FBQUFRY0JhZ0dGLy9NQUNRQ3dDUyt3R2R3d01RQUFBUUFqL3IwRld3V3dBQmtBWHJJWUdoc1JFamtBc0JBdnNBQkZXTEFFTHh1eEJCOCtXYkFBUlZpd0NDOGJzUWdmUGxtd0FFVllzQUl2RzdFQ0R6NVpzZ2NFQWhFU09iQUhMN0lZQVFvcldDSFlHL1Jac2dvSEdCRVNPYkFRRUxJUkFRb3JXQ0hZRy9SWk1ERUJJd01qRXpNRE13RWhBUllTQndJQUJ6YzJOaEluSmlZbkp3R1ZDSFAzL2ZkcVpBSU9BVHo5dDhqSUdCdit4L3dUY1p4SURRMkVjdjBDY3YyT0JiRDlwQUpjL1lZZi9zemovdmYreWdUREJJa0JBWGR0ZVFRQ0FBRUFJZjduQklBRU9nQVdBRjZ5QmhjWUVSSTVBTEFHTDdBQVJWaXdFUzhic1JFYlBsbXdBRVZZc0JVdkc3RVZHejVac0FCRldMQVBMeHV4RHc4K1diSVREeEVSRWptd0V5K3lEZ0VLSzFnaDJCdjBXYklBRGhNUkVqbXdCaEN5QndjS0sxZ2gyQnYwV1RBeEFSWVdCd1lHQnljMk5qYzJKaWNuQXlNVE13TXpBU0VDdDQrV0RnL3lza0oxaGd3T2NtNjJTK3k4N0V0SUFZTUJOd0pjS3VhZG8vY3VzaVdSWW0ySEJnSCtWQVE2L2xBQnNBRC8vLy9LL240RmZBV3dBaVlCM2dBQUFBY0FFQVJULzhiLy8vKy8vbjRFZUFRNkFpWUIvZ0FBQUFjQUVBTmsvOFlBQVFBdS9rWUZnZ1d3QUJRQWRMSUtGUllSRWprQXNBQkZXTEFBTHh1eEFCOCtXYkFBUlZpd0F5OGJzUU1mUGxtd0FFVllzQkl2RzdFU0R6NVpzQUJGV0xBSUx4dXhDQkUrV2JJQ0FCSVJFamw4c0FJdkdMUmdBbkFDQWwyME1BSkFBZ0pkc0FnUXNnMEJDaXRZSWRnYjlGbXdBaEN5RUFFS0sxZ2gyQnYwV1RBeEFRTWhFek1CQmdZbklpYzNGak15TnhNaEF5TVRBaUJ1QW1wdjkvNytHTmFtTjA0ak5pbUFJVy85bG12Mi9BV3cvWU1DZmZvWHVNa0NFOGNPeEFLUi9aY0ZzQUFBQVFBUi9rY0VQd1E2QUJRQWJiSUxGUllSRWprQXNBQkZXTEFBTHh1eEFCcytXYkFBUlZpd0F5OGJzUU1iUGxtd0FFVllzQkl2RzdFU0R6NVpzQUJGV0xBSUx4dXhDQkUrV2JJQ0F4SVJFamw4c0FJdkdMUkFBbEFDQWwyd0NCQ3lEUUVLSzFnaDJCdjBXYkFDRUxJUUFRb3JXQ0hZRy9SWk1ERUJBeUVUTXdNR0JpTWlKemNXTXpJM0V5RURJeE1CdTA4QmwwL3R3eGpOb3p0SUhqMGpnQ0ZTL21sTTdyd0VPdjQ5QWNQN2g3VEdFc0VRd2dIcC9rc0VPdi8vQUNmK2ZnV0hCYkFDSmdBc0FBQUFCd0FRQkYvL3h2Ly9BQm4rZmdSMUJEb0NKZ0lBQUFBQUJ3QVFBMkgveHYvL0FNWCttZ1ZxQmJBQ0pnSHFBQUFBQndQOUFyb0FBUC8vQUhEK21nUWdCRHNDSmdJS0FBQUFCd1A5QWJrQUFQLy9BQ2YrZmdiT0JiQUNKZ0F4QUFBQUJ3QVFCWjcveHYvL0FDTCtmZ1hKQkRvQ0pnSC9BQUFBQndBUUJMWC94di8vQURVQUFBSW9CYkFDQmdBdEFBRC8vLytrQUFBRXJnY2RBaVlBSlFBQUFRY0JhZ0V3QVRZQUNRQ3dCQyt3RHR3d01RRC8vd0FpLytnRDlBWG5BaVlBUlFBQUFRY0JhZ0NJQUFBQUNRQ3dHQyt3TDl3d01RRC8vLytrQUFBRXJnY0RBaVlBSlFBQUFRY0Fhd0VvQVRZQURBQ3dCQyt3SE55d0M5QXdNZi8vQUNMLzZBUURCYzBDSmdCRkFBQUJCd0JyQUlBQUFBQU1BTEFZTDdBOTNMQXMwREF4Ly8vL2h3QUFCM2dGc0FJR0FJa0FBUC8vQUEvLzZBWndCRklDQmdDcEFBRC8vd0FuQUFBRXVnY2tBaVlBS1FBQUFRY0JhZ0Q0QVQwQUNRQ3dCaSt3RDl3d01RRC8vd0E3LytvRUFnWG5BaVlBU1FBQUFRWUJhbkVBQUFrQXNBa3ZzQ1BjTURFQUFBSUFTUC9vQlRjRnd3QWFBQ1FBWHJJVkpTWVJFam13RlJDd0hOQUFzQUJGV0xBQUx4dXhBQjgrV2JBQVJWaXdDaThic1FvUFBsbXlFQUFLRVJJNXNCQXZzQUFRc2hVQkNpdFlJZGdiOUZtd0NoQ3lHd0VLSzFnaDJCdjBXYkFRRUxJZUFRb3JXQ0hZRy9SWk1ERUJGZ1FYRmdjSEJnSUVKeVltQWpjM0JUWW5KaVluSmdjbk5qWVRGalkzSVFjR0Z4WVdBdSs5QVE4OVB4a1FIY3IrMXF5ejhtUWFGZ092RHdvU3FvdWswUjVBd1F5UjJrUDlSUWNPQ2hDUkJjTUNycHFneW03Ry9yeXZCQVNxQVRERmp3RmJVNGVYQXdOSnlTa3IrdndEeTlFaVRrTnNkd0QvL3dBMi8rb0Q5Z1JRQWdZQlpRQUEvLzhBU1Avb0JUY0czQUltQXBvQUFBRUhBR3NBOXdFUEFBd0FzQUF2c0RiY3NDWFFNREgvL3dBMi8rb0Q5Z1hPQWlZQlpRQUFBUVlBYTNJQkFBd0FzQUF2c0MvY3NCN1FNREgvLy8rbEFBQUg0QWNLQWlZQjJRQUFBUWNBYXdKSUFUMEFEQUN3Q1Mrd0o5eXdGdEF3TWYvLy82MEFBQVp5QmNBQ0pnSDVBQUFCQndCckFYMy84d0FNQUxBSkw3QW4zTEFXMERBeC8vOEFIdi90QktnSEdBSW1BZG9BQUFFSEFHc0E0d0ZMQUF3QXNBNHZzRHZjc0NyUU1ESC8vd0FXLytrRDJnWE5BaVlCK2dBQUFRWUFhMWNBQUF3QXNDWXZzRHZjc0NyUU1ERUFBUUF2LytZRW5BV3dBQnNBYXJJWkhCMFJFamtBc0FCRldMQUNMeHV4QWg4K1diQUFSVml3REM4YnNRd1BQbG13QWhDeUFBRUtLMWdoMkJ2MFdiSUVBQUlSRWpteUd3d0NFUkk1c0JzdnNoa0hDaXRZSWRnYjlGbXlCUnNaRVJJNXNoQU1HUkVTT2JBTUVMSVRBUW9yV0NIWUcvUlpNREVCSVRjaEJ3RVdGZ2NPQWljbUpqY3pCaFlYRmpZM05pWW5KemNEVS8ydUpBTjNIZjVGcUxBT0M1YjdrOGpvQ1BRRWJWcHZyUkFSZElHWElBVGt6SzcrVlJudnI0Ykphd1FFN0x0a2VRSUVmMitCaXdRQnR3QUIvL0QrY2dSVUJEb0FHd0Jkc2dzY0hSRVNPUUN3REMrd0FFVllzQUl2RzdFQ0d6NVpzZ0FCQ2l0WUlkZ2I5Rm15QkFBQ0VSSTVzaHNNQWhFU09iQWJMN0laQndvcldDSFlHL1Jac2dVWkd4RVNPYklQQWd3UkVqbXdEQkN5RXdFS0sxZ2gyQnYwV1RBeEFTRTNJUWNCRmhZSERnSW5KaVkzRndZV0Z4WTJOelltSnljM0F3bjl0aU1EY2h6K1JhVzFEd3VXK0pMRzV3anNCR3RmY3JFUUVYYUNtaUFEZHNTbS9rb1o2N0NGeUdzREJPdTZBV1IrQWdTRGNJT0tCQUcyLy84QUp3QUFCWHdHOFFJbUFkc0FBQUVIQUhJQklRRkJBQk1Bc0FCRldMQUlMeHV4Q0I4K1diQUwzREF4QVAvL0FCa0FBQVJJQmFjQ0pnSDdBQUFCQmdCeVp2Y0FFd0N3QUVWWXNBY3ZHN0VIR3o1WnNBdmNNREVBLy84QUp3QUFCWHdIQ2dJbUFkc0FBQUVIQUdzQlR3RTlBQXdBc0FBdnNCdmNzQXJRTURILy93QVpBQUFFU0FYQUFpWUIrd0FBQVFjQWF3Q1UvL01BREFDd0FDK3dHOXl3Q3RBd01mLy9BR3YvNXdVaEJ3TUNKZ0F6QUFBQkJ3QnJBVDhCTmdBTUFMQUtMN0EwM0xBajBEQXgvLzhBT2Yvb0JDY0Z6UUltQUZNQUFBRUdBR3Q5QUFBTUFMQUVMN0F5M0xBaDBEQXgvLzhBWXYvbkJSb0Z5QUlHQWpVQUFQLy9BRGIvNXdRbUJGSUNCZ0kyQUFELy93QmkvK2NGR2djSEFpWUNOUUFBQVFjQWF3Rk5BVG9BREFDd0NpK3dOdHl3SmRBd01mLy9BRGIvNXdRbUJjMENKZ0kyQUFBQkJnQnJld0FBREFDd0JDK3dMOXl3SHRBd01mLy9BRS8vNlFUM0J4a0NKZ0h3QUFBQkJ3QnJBU0VCVEFBTUFMQVVMN0F5M0xBaDBEQXgvLzhBSS8vb0ErVUZ6UUltQWhBQUFBRUdBR3RpQUFBTUFMQUlMN0F4M0xBZzBEQXgvLzhBbS8vbkJWTUc4UUltQWVZQUFBRUhBSElBM3dGQkFBa0FzQUV2c0JIY01ERUEvLy8vdGY1RkJCSUZ0QUltQUYwQUFBRUdBSEllQkFBSkFMQUJMN0FRM0RBeEFQLy9BSnYvNXdWVEJ3b0NKZ0htQUFBQkJ3QnJBUTBCUFFBTUFMQUJMN0FpM0xBUjBEQXgvLy8vdGY1RkJCSUZ6UUltQUYwQUFBRUdBR3RNQUFBTUFMQUJMN0FoM0xBUTBEQXgvLzhBbS8vbkJWTUhQQUltQWVZQUFBRUhBVzhCWEFFOUFBd0FzQUV2c0JQY3NCWFFNREgvLy8rMS9rVUVoQVgvQWlZQVhRQUFBUWNCYndDYkFBQUFGZ0N3QUVWWXNBOHZHN0VQR3o1WnNCYmNzQkxRTURILy93REZBQUFGYWdjS0FpWUI2Z0FBQVFjQWF3RkpBVDBBREFDd0FDK3dJdHl3RWRBd01mLy9BSEFBQUFRZ0JjQUNKZ0lLQUFBQkJnQnJiZk1BREFDd0NDK3dKTnl3RTlBd01mLy9BQzcrbWdTc0JiQUNKZ0dFQUFBQUJ3UDlBUDhBQVAvL0FCaittZ09KQkRvQ0pnSDJBQUFBQndQOUFPVUFBUC8vQUM0QUFBYTlCd3NBSmdIdkN3QUFKd0F0QkpVQUFBRUhBR3NCOXdFK0FCWUFzQUJGV0xBS0x4dXhDaDgrV2JBZTNMQXAwREF4Ly84QUlnQUFCZkVGd0FBbUFnOEFBQUFuQVBRRUpnQUFBUWNBYXdGeS8vTUFGZ0N3QUVWWXNBb3ZHN0VLR3o1WnNCN2NzQ25RTURILy93QXova1lFL0FXd0FDWUJoRkFBQUNZRDFhNHBBQWNEL0FFc0FBRC8vd0FKL2tRRDJ3UTZBQ1lCOWxJQUFDY0QxZitKLzNvQUJ3UDhBUUwvL3YvLy84UCtSZ1ZIQmJBQ0pnQThBQUFBQndQOEE3QUFBUC8vLzduK1JnUVRCRG9DSmdCY0FBQUFCd1A4QXIwQUFBQUIvOE1BQUFWSEJiQUFFUUJqQUxBQVJWaXdDeThic1FzZlBsbXdBRVZZc0E0dkc3RU9IejVac0FCRldMQUNMeHV4QWc4K1diQUFSVml3QlM4YnNRVVBQbG15RVFzQ0VSSTVzQkV2c2dBSENpdFlJZGdiOUZteUJBc0NFUkk1c0FmUXNCRVFzQW5Rc2cwTEFoRVNPVEF4QVNNQklRTUJJUUVqTnpNQklSTUJJUUV6QThlS0FTUCs3dHorZlA3VkFmRjRIblQrN3dFUTFnRjZBU3IrTEhJQ2xmMXJBaFg5NndLVnFnSngvZk1DRGYyUEFBQUIvN2tBQUFRVEJEb0FFUUJqQUxBQVJWaXdDeThic1FzYlBsbXdBRVZZc0E0dkc3RU9HejVac0FCRldMQUNMeHV4QWc4K1diQUFSVml3QlM4YnNRVVBQbG15RVE0Q0VSSTVzQkV2c2dBSENpdFlJZGdiOUZteUJBNENFUkk1c0FmUXNCRVFzQW5Rc2cwT0FoRVNPVEF4QVNNVEl3TUJJUUVqTnpNRE14TVRJUUV6QXltVzAvaVgvdmIrN0FGbmdoNkV4ZmlNL3dFVi9yQ0VBZGYrS1FGeC9vOEIxNm9CdWY2ZUFXTCtSd0FDQURBQUFBVDRCYkFBREFBVkFGQ3lEQllYRVJJNXNBd1FzQS9RQUxBQVJWaXdBUzhic1FFZlBsbXdBRVZZc0FNdkc3RUREejVac2dBQkF4RVNPYkFBTDdBREVMSU5BUW9yV0NIWUcvUlpzQUFRc2c0QkNpdFlJZGdiOUZrd01RRVRNd01sTGdJM1BnSXpFeE1sQmdZSEJoWVhBNlJkOS8zOStZdlNad3NMbWYrWnNGcis3b0N0RHhGdmFRT2JBaFg2VUFFRWM4eUVqTlZ6L1M0Q0JnSUNqM2R2akFULy93QTcvK2NFaUFZQUFnWUFTQUFBQUFJQVJRQUFCb0FGc0FBWUFDRUFXcklaSWlNUkVqbXdHUkN3Q2RBQXNBQkZXTEFLTHh1eENoOCtXYkFBUlZpd0dDOGJzUmdQUGxteUNBb1lFUkk1c0FndnNCZ1FzZ3dCQ2l0WUlkZ2I5Rm15RWdvWUVSSTVzQm5Rc0FnUXNob0JDaXRZSWRnYjlGa3dNU1V1QWpjK0FqTUZFek1ERnpZMk5UUW5GeFlYRWdBakpSTWxCZ1lIQmhZWEFnaUwwbVlMQzVyOW1RRXVYZmJaTzMrYUZlWVNCaEQrMy9uKzExcis3SDJ1RVE5dWFRRUVkTXVFak5aeUFRSVYreG9DQXViZlhWZ0JXVnYrMXY2YnlnSUdBZ0tOZUhDTUJBQUFBZ0JILytZR1VRWVlBQ01BTWdDQXNnWXpOQkVTT2JBR0VMQWswQUN3QUVWWXNBY3ZHN0VISVQ1WnNBQkZXTEFhTHh1eEdnOCtXYkFBUlZpd0h5OGJzUjhQUGxteUJBY2ZFUkk1c0FRdnNnWUhIeEVTT2JBYUVMSU9BUW9yV0NIWUcvUlpzaE1ISHhFU09iSWRCeDhSRWptd0JCQ3lKZ0VLSzFnaDJCdjBXYkFmRUxJdkFRb3JXQ0hZRy9SWk1ERVROaEkyRnhZWEV6TURCaGNXRmhjV0VoTTJKeGNXRnhZQ0JDY2lKaWNHSnlZbUp5WUJKaWNtQmdjSEJoY1dGaGNXTnpkUEZZckxnWnhaYmUzTkF3TUROeStPcndjQ0V0OE9CQWVML3ZXcGRwOGNocitac2djREF0RTNkM3lkRlFNR0FRSmFVbjVsQmdJSHNBRVZoZ01FZHdKRSswNGVIemRBQXdrQkt3RU5aR1FCWkdQYi9xSzlBMXBadUFRRTA3ZzdBVzVqQkFMUHNSUXpPR1p6QWdSMVJRQUFBUUNxLytnRnVnV3dBQ29BWTdJVkt5d1JFamtBc0FCRldMQU5MeHV4RFI4K1diQUFSVml3Snk4YnNTY1BQbG15QmlzTkVSSTVzQVl2c2dNQkNpdFlJZGdiOUZtd0RSQ3lEQUVLSzFnaDJCdjBXYklVQXdZUkVqbXdKeEN5R3dFS0sxZ2gyQnYwV2JJZ0RTY1JFamt3TVFFMkppY25OeGN5TmpjMkp5VTNCUllXQndZR0J4WVdCd2NHRmhjV0VoTTJKeGNXRnhZQ0JpY21KamNDWkFsVlYrRWtqNVdrRGhubS9wMGtBUy92OVE4SWtabGlYd2tIQlMwdGdwb0hBaEhvRFFRSGlmK25sNTRJQVh0bGV3VUN6UUY0ZEw4SkFjMEJBZGJBYjZzK0lxUitSalpJQWdrQk1BRUJaR1FCWkdQZC9xUzlBZ0t3bXdBQkFHSC80d1ROQkRvQUtRQmdzaVVxS3hFU09RQ3dBRVZZc0I4dkc3RWZHejVac0FCRldMQVFMeHV4RUE4K1diSURBUW9yV0NIWUcvUlpzZ2tRSHhFU09iSVlLaDhSRWptd0dDK3lGd0VLSzFnaDJCdjBXYkFmRUxJZUFRb3JXQ0hZRy9SWnNpWVhHQkVTT1RBeEpSVVdGeFkyTmljbUp4Y1dGeFlDQmljbUpqYzNOaWNuTnhjMk56WW5KVGNYRmhZSEJnWUhGaFlIQXE0RE4wbHlQUVVFRk40UkNSSnc1WldYa1FVSkM0UHdINlhPRkJXci92UWM5cjNNQ0FWamEwOUdCdWtoTXdNRmJOVjVUMDRCVGs2YS90YWdBUU44ZEV4eEJ3SzlBUWFKaEFvQnd3RUZwbzlQZFM4YWVGSUFBUUNTL3JrRDJRV3dBQ2NBWDdJa0tDa1JFamtBc0JzdnNBQkZXTEFLTHh1eENoOCtXYkFBUlZpd0h5OGJzUjhQUGxteUFTZ0tFUkk1c0FFdnNnQUJDaXRZSWRnYjlGbXdDaEN5Q1FFS0sxZ2gyQnYwV2JJUUFBRVJFam13SHhDeUdBVUtLMWdoMkJ2MFdUQXhFemNYTWpZM05pWW5KVGNYRmhZSEJnVVdGaGNXRHdJM0J3WUhKelkzQnlZbkpqYzNOaVlua2lLMWpxY09EbTVyL3RvZitPWHlEeEgrK2tkVUNBUUhGZ1BQR2lqSGcyUXNsU1VFQXdvU0RsMWVBbHpEQVhsemJYRUVBY01CQWQ3QTNuVWVlRlF6TlhjTUJLRDNuRkdIYndFdVJ5eE1mVzJBQkFBQkFJeitxQU81QkRvQUl3QmZzaDhrSlJFU09RQ3dHUyt3QUVWWXNBa3ZHN0VKR3o1WnNBQkZXTEFkTHh1eEhROCtXYklCSkFrUkVqbXdBUyt5QUFFS0sxZ2gyQnYwV2JBSkVMSUlBUW9yV0NIWUcvUlpzaEFBQVJFU09iQWRFTElWQVFvcldDSFlHL1JaTURFVE54YzJOelltSnlVM0JSWVdCd1lHQnhZWEZnY0hOd2NHQnljMk53Y21OemMySmllTUg5TFdGd3BVVlA3YUhnRU52ZFVLQldWbmJnMEVCZ2ErR1NiSWcyc29tU01HRHdsTlRBR2Jzd0VHa0VOUUFnSEJBUVd3a0ZCN01UUjdKaWdoQWFIeG9WR1djUUV0VG9CT1RnTUFBZi9lLytVSFNnV3dBQ01BWXJJakpDVVJFamtBc0FCRldMQU5MeHV4RFI4K1diQUFSVml3SUM4YnNTQVBQbG13QUVWWXNBVXZHN0VGRHo1WnNBMFFzZ0FCQ2l0WUlkZ2I5Rm13QlJDeUNBRUtLMWdoMkJ2MFdiQWdFTElVQVFvcldDSFlHL1Jac2hrTkJSRVNPVEF4QVNFREFnSUhJemMzTmpZM054TWhBd1lYRmhZWEZoSVROaWNYRmhjV0FnUW5KaVkzQkZuK2I1QkQrY0JlRnpOMG15a1Vpd04xdWdNREF6VXVpYW9GQWhMcERnUUhqdjc0cDYydkVnVGovVnYrMVA3ekJjb0RETmJwY2dLbSs3a2RIelJBQXdrQkpRRU1aR1FCWkdQZi9xTzlCQVRQcmdBQi85Ny81d1ltQkRvQUlnQmlzZ0FqSkJFU09RQ3dBRVZZc0Ewdkc3RU5HejVac0FCRldMQUZMeHV4QlE4K1diQUFSVml3SHk4YnNSOFBQbG13RFJDeUFBRUtLMWdoMkJ2MFdiQUZFTElIQVFvcldDSFlHL1Jac0I4UXNoSUJDaXRZSWRnYjlGbXlHQTBGRVJJNU1ERUJJd01HQmljak56YzJOamMzRXlFREJoWVhGalkzTnpZbkZ4WVhGZ0lHSnlZbU53TXcvbUkzenFCTkZTVmJjeDhPWUFMTWVRZzhQbTZHRFFJQkV0OE9CUXA1N1ptc3N4SURkUDQvNnMwRXlRTUltckJPQWM3OUxGRmxBZ1RwM0R4ZVhnRmVYc1ArdHJZREFzeXZBQUFCQUNmLzVnZFFCYkFBSGdCeHNoWWZJQkVTT1FDd0FFVllzQUF2RzdFQUh6NVpzQUJGV0xBYUx4dXhHaDgrV2JBQVJWaXdFaThic1JJUFBsbXdBRVZZc0Jndkc3RVlEejVac0JJUXNnWUJDaXRZSWRnYjlGbXlDd0FZRVJJNXNoMEFHQkVTT1h5d0hTOFl0REFkUUIwQ1hiSVdBUW9yV0NIWUcvUlpNREVCQXdZWEZoWVhGaElUTmljWEZoY1dBZ1FuSmlZM055RURJeE16QXlFVEJYaTNBd01FTXkySnF3VUNFdWtPQkFlTy92bXBwNjhPSi8yWGEvYjk5bThDYVc4RnNQdTNIUjQyUHdFSUFTSUJEbVJrQVdSajRQNmp1d01DenJILy9aY0ZzUDJEQW4wQUFBRUFDLy9tQmlrRU9nQWVBSFN5Q0I4Z0VSSTVBTEFBUlZpd0JDOGJzUVFiUGxtd0FFVllzQWd2RzdFSUd6NVpzQUJGV0xBYkx4dXhHdzgrV2JBQVJWaXdBaThic1FJUFBsbXlCd2dDRVJJNWZMQUhMeGl5VXdjQlhiSkFCd0Zkc2dBQkNpdFlJZGdiOUZtd0d4Q3lEd0VLSzFnaDJCdjBXYklVQ0FJUkVqa3dNUUVoQXlNVE13TWhFek1EQmhjV0ZoY1dFamMwSnhjV0Z4WUNCaWNtSmpjQzUvNWVUZTI4N1U0Qm9rM3RlUU1EQlRzd2Q0MENFZDRPQlFwNDdwbXBzUXdCdXY1R0JEcitRd0c5L1N3ZklEWkJBUVlCRSs5ZVhnRmVYcjcrc3JnREFzcXlBQUVBVFAvb0JKUUZ4d0FoQUVleUZ5SWpFUkk1QUxBQVJWaXdDUzhic1FrZlBsbXdBRVZZc0FBdkc3RUFEejVac0FrUXNnNEJDaXRZSWRnYjlGbXdBQkN5RndFS0sxZ2gyQnYwV2JJY0NRQVJFamt3TVFVbUpnSTNFellTSkJjV0Z3Y21KeVlHQndjR0Z4WVdGeFkySnlZbkZ4Y1dBZ1FDVXFQeWNSWXBITDhCSXF6TWoxQjZtNkxxSGlnS0NRMk5iNU91QVFFTjZ3MEtpLzd5RlFTa0FSeW1BUWF6QVI2YkFRUll0a1VDQXU2Ky9VWktlWk1EQXREaVdGY0JydGIrNzVZQUFRQTkvK2NEcWdSUkFCOEFRN0lBSUNFUkVqa0FzQUJGV0xBVEx4dXhFeHMrV2JBQVJWaXdDaThic1FvUFBsbXlBQUVLSzFnaDJCdjBXYkFLRUxBRTBMQVRFTElZQVFvcldDSFlHL1JaTURFbEZqWTNKek1YRmdZR0p5NENOemMrQWhjV0Z3Y21JeUlHQndZWEZoWUNCVmxpQWdYZkNBWnN6SDZOeTE4T0JSS1o4cEdvYlVGZGdYaXFGd3NHQ1d5dkFtbVdibTJldzJVREJJNzFsQ3FaL1l3QkFrUzdQYitkWHo5b2VnQUFBUUNRLytZRk5BV3dBQm9BVGJJSkd4d1JFamtBc0FCRldMQUNMeHV4QWg4K1diQUFSVml3Rnk4YnNSY1BQbG13QWhDeUFBRUtLMWdoMkJ2MFdiQUUwTEFGMExBWEVMSUtBUW9yV0NIWUcvUlpzaEFDRnhFU09UQXhBU0UzSVFjaEF3Y1dGaGNXRWpjM05pY1hGaGNXQWdRbkppWTNBa1grU3lRRVh5VCtUSllCQXpVdWg2Y0xBUUlTNkE0REI0bisrS3Vvcnc0RTQ4M04vSVU3TkVBREJnRVIveDVrWkFGa1k5bitvY0FEQXM2eEFBRUFjLy9vQkpjRU9nQVpBRTJ5Q2hvYkVSSTVBTEFBUlZpd0FpOGJzUUliUGxtd0FFVllzQll2RzdFV0R6NVpzQUlRc2dBQkNpdFlJZGdiOUZtd0JOQ3dCZEN3RmhDeUN3RUtLMWdoMkJ2MFdiSVFBaFlSRWprd01RRWhOeUVISVFNR0Z4WVdGeFkySnlZbkZ4WUhCZ1FuSmlZM0FhLyt4Q0lEY2lQK3VGZ0RBd1U3TVhlSUNnVVUzU2tPR2Y3M3dxbXlEZ04zdzhQOTd4OGdOMEFCQk95d1Mwb0J0SGZOK3dJQ3pLOEFBQUVBVnYvb0JTSUZ5QUFyQUhTeUd5d3RFUkk1QUxBQVJWaXdIQzhic1J3ZlBsbXdBRVZZc0E0dkc3RU9EejVac2lrY0RoRVNPYkFwTDdJZktRRnhza29wQVYyeUFBRUtLMWdoMkJ2MFdiQU9FTElHQVFvcldDSFlHL1Jac2dvY0RoRVNPYklVQUNrUkVqbXlIeHdPRVJJNXNCd1FzaU1CQ2l0WUlkZ2I5Rmt3TVFFaUJnY0dGaGNXTmpjM0JnWUVKeTRDTnpZbEppY21OelkySkJjV0JBY25OaVluSmdZSEJoWVhGd2NDdzZDN0R3MmJoNEsvRWZVTG9mNzFtNXo2ZHdvUkFUQlFNVDRHQ0o4QkVLYlZBUWdFOUFTR2JvM0JEdzZEaEwwa0FvTjhkMk4zQXdKK1pRR0Z3bVlEQW02N2V2dG5MRU5WWm9qQVpBTUY0YlVCWFc4Q0EzbG5aV3NCQWNqLy93QW8vK29FQWdSUkFnWUJwUUFBLy8vL3l2NUdCWXdGc0FJbUFkNEFBQUFIQS93RVRRQUEvLy8vdi81R0JKMEVPZ0ltQWY0QUFBQUhBL3dEWGdBQS8vLy9wUDVzQks0RnNBSW1BQ1VBQUFBSEFYQUJid0FELy84QUl2NXdBOXdFVUFJbUFFVUFBQUFIQVhBQXFRQUgvLzhBSi82YkJMd0ZzQUltQUNZQUFBQUhBWFlFbHdBSy8vOEFFUDZJQkE4R0FBSW1BRVlBQUFBSEFYWUVwZi8zLy84QUovNmJCT0FGc0FJbUFDZ0FBQUFIQVhZRWN3QUsvLzhBTy82UkJJZ0dBQUltQUVnQUFBQUhBWFlFa0FBQS8vOEFKLzM1Qk9BRnNBSW1BQ2dBQUFBSEE2c0JBZjZTLy84QU8vMzVCSWdHQUFJbUFFZ0FBQUFIQTZzQkh2NlMvLzhBSi82YkJZY0ZzQUltQUN3QUFBQUhBWFlGQUFBSy8vOEFEZjZiQS9rR0FBSW1BRXdBQUFBSEFYWUVmd0FLLy84QUp3QUFCWEVITmdJbUFDOEFBQUVIQUhjQnBRRTJBQWtBc0FRdnNBL2NNREVBLy84QUVRQUFCSFVIUFFJbUFFOEFBQUVIQUhjQm93RTlBQWtBc0FRdnNBL2NNREVBLy84QUovN2NCWEVGc0FJbUFDOEFBQUFIQVhZRTBRQkwvLzhBRWY3SEJFb0dBQUltQUU4QUFBQUhBWFlFWUFBMi8vOEFKLzZiQThNRnNBSW1BREFBQUFBSEFYWUVsd0FLLy8vLzVQNmJBaGNHQUFJbUFGQUFBQUFIQVhZRFJBQUsvLzhBSndBQUJzNEhOZ0ltQURFQUFBRUhBSGNDdmdFMkFCTUFzQUJGV0xBQ0x4dXhBaDgrV2JBUjNEQXhBUC8vQUJBQUFBWm9CZ0FDSmdCUkFBQUJCd0IzQXBnQUFBQUpBTEFETDdBazNEQXhBUC8vQUNmK213Yk9CYkFDSmdBeEFBQUFCd0YyQmFzQUN2Ly9BQkQrbXdab0JGSUNKZ0JSQUFBQUJ3RjJCYTRBQ3YvL0FDZitsd1dHQmJBQ0pnQXlBQUFBQndGMkJRSUFCdi8vQUEzK213UDZCRklDSmdCU0FBQUFCd0YyQkd3QUN2Ly9BQ2NBQUFVRUIwSUNKZ0EwQUFBQkJ3QjNBYXNCUWdBSkFMQURMN0FXM0RBeEFQLy8vOGYrWUFSdEJmY0NKZ0JVQUFBQkJ3QjNBWnYvOXdBSkFMQU5MN0FoM0RBeEFQLy9BQ2YrbXdUWUJiQUNKZ0EyQUFBQUJ3RjJCSmdBQ3YvLy85Nyttd0x2QkZNQ0pnQldBQUFBQndGMkF6NEFDdi8vQUNUK2tRUzdCY2NDSmdBM0FBQUFCd0YyQkxBQUFQLy9BQnoraUFQRUJGQUNKZ0JYQUFBQUJ3RjJCR0wvOS8vL0FKeitsQVVpQmJBQ0pnQTRBQUFBQndGMkJKOEFBLy8vQUR2K2tRS3VCVUVDSmdCWUFBQUFCd0YyQS9VQUFQLy9BSnNBQUFXQkJ6Y0NKZ0E2QUFBQkJ3RnVBTjBCUXdBSkFMQUJMN0FSM0RBeEFQLy9BR1FBQUFRTkJld0NKZ0JhQUFBQkJnRnVGdmdBQ1FDd0FTK3dFZHd3TVFELy93Q2IvcHNGZ1FXd0FpWUFPZ0FBQUFjQmRnVFZBQXIvL3dCay9wc0VEUVE2QWlZQVdnQUFBQWNCZGdSQ0FBci8vd0MzQUFBSE9nYzJBaVlBT3dBQUFRY0FSQUlvQVRZQUV3Q3dBRVZZc0Fzdkc3RUxIejVac0E3Y01ERUEvLzhBZHdBQUJmZ0dBQUltQUZzQUFBRUhBRVFCYXdBQUFCTUFzQUJGV0xBTEx4dXhDeHMrV2JBTzNEQXhBUC8vQUxjQUFBYzZCellDSmdBN0FBQUJCd0IzQXNNQk5nQVRBTEFBUlZpd0RDOGJzUXdmUGxtd0Q5d3dNUUQvL3dCM0FBQUYrQVlBQWlZQVd3QUFBUWNBZHdJR0FBQUFFd0N3QUVWWXNBd3ZHN0VNR3o1WnNBL2NNREVBLy84QXR3QUFCem9IQXdJbUFEc0FBQUVIQUdzQjlRRTJBQXdBc0FFdnNCN2NzQTNRTURILy93QjNBQUFGK0FYTkFpWUFXd0FBQVFjQWF3RTRBQUFBREFDd0FTK3dIdHl3RGRBd01mLy9BTGYrbXdjNkJiQUNKZ0E3QUFBQUJ3RjJCY1VBQ3YvL0FIZittd1g0QkRvQ0pnQmJBQUFBQndGMkJTY0FDdi8vLytYK213VG5CYkFDSmdBK0FBQUFCd0YyQko4QUN2Ly8vK2YrbXdQa0JEb0NKZ0JlQUFBQUJ3RjJCRU1BQ3YvLy82VCtsQVN1QmJBQ0pnQWxBQUFBQndGMkJPY0FBLy8vQUNMK21BUGNCRkFDSmdCRkFBQUFCd0YyQkNFQUIvLy8vNlFBQUFTdUI3c0NKZ0FsQUFBQkJ3RjBCUlVCUEFBSkFMQUVMN0FaM0RBeEFQLy9BQ0wvNkFQY0JvVUNKZ0JGQUFBQkJ3RjBCRzBBQmdBSkFMQVlMN0E2M0RBeEFQLy8vNlFBQUFZWUI3RUNKZ0FsQUFBQkJ3UHZBT3NCSVFBV0FMQUFSVml3QlM4YnNRVWZQbG13RHR5d0ZOQXdNZi8vQUNMLzZBVndCbndDSmdCRkFBQUJCZ1B2USt3QUZnQ3dBRVZZc0Jndkc3RVlHejVac0MvY3NEWFFNREgvLy8ra0FBQUVyZ2V1QWlZQUpRQUFBUWNEOEFEeUFTc0FGZ0N3QUVWWXNBUXZHN0VFSHo1WnNBN2NzQlBRTURILy93QWkvK2dEOGdaNUFpWUFSUUFBQVFZRDhFcjJBQllBc0FCRldMQVlMeHV4R0JzK1diQXQzTEEwMERBeC8vLy9wQUFBQllBSDNnSW1BQ1VBQUFFSEEvRUE3QUVUQUJZQXNBQkZXTEFGTHh1eEJSOCtXYkFNM0xBUzBEQXgvLzhBSXYvb0JOZ0dxUUltQUVVQUFBRUdBL0ZFM2dBV0FMQUFSVml3R0M4YnNSZ2JQbG13TGR5d005QXdNZi8vLzZRQUFBU3VCOVVDSmdBbEFBQUJCd1B5QU9zQkJRQVdBTEFBUlZpd0JDOGJzUVFmUGxtd0R0eXdGZEF3TWYvL0FDTC82QVBzQnFBQ0pnQkZBQUFCQmdQeVE5QUFGZ0N3QUVWWXNCZ3ZHN0VZR3o1WnNDM2NzRGJRTURILy8vK2svcFFFcmdjM0FpWUFKUUFBQUNjQlp3RHlBVFlCQndGMkJPY0FBd0FUQUxBQVJWaXdCQzhic1FRZlBsbXdEOXd3TVFELy93QWkvcGdENlFZQkFpWUFSUUFBQUNZQlowb0FBUWNCZGdRaEFBY0FFd0N3QUVWWXNCZ3ZHN0VZR3o1WnNERGNNREVBLy8vL3BBQUFCSzRIcmdJbUFDVUFBQUVIQS9NQkhBRXdBQllBc0FCRldMQUVMeHV4QkI4K1diQU8zTEFhMERBeC8vOEFJdi9vQSs0R2VRSW1BRVVBQUFFR0EvTjArd0FXQUxBQVJWaXdHQzhic1JnYlBsbXdMOXl3TzlBd01mLy8vNlFBQUFTdUI2NENKZ0FsQUFBQkJ3UHVBUndCTUFBTUFMQUVMN0FPM0xBYTBEQXgvLzhBSXYvb0ErNEdlUUltQUVVQUFBRUdBKzUwK3dBTUFMQVlMN0F2M0xBNDBEQXgvLy8vcEFBQUJLNElQZ0ltQUNVQUFBRUhBL1FCSEFFMkFBd0FzQVF2c0E3Y3NCalFNREgvL3dBaS8rZ0Q0Z2NJQWlZQVJRQUFBUVlEOUhRQUFBd0FzQmd2c0MvY3NEblFNREgvLy8ra0FBQUVyZ2dYQWlZQUpRQUFBUWNEOVFFZ0FUd0FEQUN3QkMrd0R0eXdGOUF3TWYvL0FDTC82QVA2QnVFQ0pnQkZBQUFCQmdQMWVBWUFEQUN3R0Mrd0w5eXdPTkF3TWYvLy82VCtsQVN1QngwQ0pnQWxBQUFBSndGcUFUQUJOZ0VIQVhZRTV3QURBQk1Bc0FCRldMQUVMeHV4QkI4K1diQU8zREF4QVAvL0FDTCttQVAwQmVjQ0pnQkZBQUFBSndGcUFJZ0FBQUVIQVhZRUlRQUhBQk1Bc0FCRldMQVlMeHV4R0JzK1diQXYzREF4QVAvL0FDZittd1M2QmJBQ0pnQXBBQUFBQndGMkJLZ0FDdi8vQUR2K2tRUUNCRkVDSmdCSkFBQUFCd0YyQkhZQUFQLy9BQ2NBQUFTNkI4SUNKZ0FwQUFBQkJ3RjBCTjBCUXdBSkFMQUdMN0FhM0RBeEFQLy9BRHYvNmdRQ0JvVUNKZ0JKQUFBQkJ3RjBCRllBQmdBSkFMQUpMN0F1M0RBeEFQLy9BQ2NBQUFTNkJ6SUNKZ0FwQUFBQkJ3RnVBTWdCUGdBSkFMQUdMN0FXM0RBeEFQLy9BRHYvNmdRS0JmVUNKZ0JKQUFBQkJnRnVRUUVBQ1FDd0NTK3dLdHd3TVFELy93QW5BQUFGNEFlNEFpWUFLUUFBQVFjRDd3Q3pBU2dBRmdDd0FFVllzQWN2RzdFSEh6NVpzQS9jc0JYUU1ESC8vd0E3LytvRldRWjhBaVlBU1FBQUFRWUQ3eXpzQUJZQXNBQkZXTEFKTHh1eENScytXYkFqM0xBcDBEQXgvLzhBSndBQUJMb0h0UUltQUNrQUFBRUhBL0FBdWdFeUFCWUFzQUJGV0xBR0x4dXhCaDgrV2JBUDNMQVUwREF4Ly84QU8vL3FCQUlHZVFJbUFFa0FBQUVHQS9BejlnQVdBTEFBUlZpd0NTOGJzUWtiUGxtd0k5eXdLTkF3TWYvL0FDY0FBQVZJQitVQ0pnQXBBQUFCQndQeEFMUUJHZ0FXQUxBQVJWaXdCaThic1FZZlBsbXdEOXl3RTlBd01mLy9BRHYvNmdUQkJxa0NKZ0JKQUFBQkJnUHhMZDRBRmdDd0FFVllzQWt2RzdFSkd6NVpzQ0hjc0NmUU1ESC8vd0FuQUFBRXVnZmNBaVlBS1FBQUFRY0Q4Z0N6QVF3QUZnQ3dBRVZZc0FZdkc3RUdIejVac0EvY3NCYlFNREgvL3dBNy8rb0VBZ2FnQWlZQVNRQUFBUVlEOGl6UUFCWUFzQUJGV0xBSkx4dXhDUnMrV2JBaDNMQXEwREF4Ly84QUovNmJCTG9IUGdJbUFDa0FBQUFuQVdjQXVnRTlBUWNCZGdTb0FBb0FFd0N3QUVWWXNBWXZHN0VHSHo1WnNCRGNNREVBLy84QU8vNlJCQUlHQVFJbUFFa0FBQUFtQVdjekFBRUhBWFlFZGdBQUFCTUFzQUJGV0xBSkx4dXhDUnMrV2JBazNEQXhBUC8vQURVQUFBTFNCOElDSmdBdEFBQUJCd0YwQTVVQlF3QUpBTEFDTDdBUzNEQXhBUC8vQUNJQUFBS0hCbjRDSmdEMEFBQUJCd0YwQTByLy93QUpBTEFDTDdBUzNEQXhBUC8vLy8vK2x3SW9CYkFDSmdBdEFBQUFCd0YyQTE4QUJ2Ly8vK1QrbXdJSkJkZ0NKZ0JOQUFBQUJ3RjJBMFFBQ3YvL0FHditrUVVoQmNnQ0pnQXpBQUFBQndGMkJQWUFBUC8vQURuK2p3UW5CRklDSmdCVEFBQUFCd0YyQklULy92Ly9BR3YvNXdVaEI3c0NKZ0F6QUFBQkJ3RjBCU3dCUEFBSkFMQUtMN0F4M0RBeEFQLy9BRG4vNkFRbkJvVUNKZ0JUQUFBQkJ3RjBCR29BQmdBSkFMQUVMN0F2M0RBeEFQLy9BR3YvNXdZdkI3RUNKZ0F6QUFBQkJ3UHZBUUlCSVFBV0FMQUFSVml3Q2k4YnNRb2ZQbG13SnR5d0xOQXdNZi8vQURuLzZBVnRCbndDSmdCVEFBQUJCZ1B2UU93QUZnQ3dBRVZZc0FRdkc3RUVHejVac0NUY3NDclFNREgvL3dCci8rY0ZJUWV1QWlZQU13QUFBUWNEOEFFSkFTc0FGZ0N3QUVWWXNBb3ZHN0VLSHo1WnNDVGNzQ3ZRTURILy93QTUvK2dFSndaNUFpWUFVd0FBQVFZRDhFZjJBQllBc0FCRldMQUVMeHV4QkJzK1diQWszTEFwMERBeC8vOEFhLy9uQlpjSDNnSW1BRE1BQUFFSEEvRUJBd0VUQUJZQXNBQkZXTEFLTHh1eENoOCtXYkFrM0xBcTBEQXgvLzhBT2Yvb0JOVUdxUUltQUZNQUFBRUdBL0ZCM2dBV0FMQUFSVml3QkM4YnNRUWJQbG13SXR5d0tOQXdNZi8vQUd2LzV3VWhCOVVDSmdBekFBQUJCd1B5QVFJQkJRQVdBTEFBUlZpd0NpOGJzUW9mUGxtd0pOeXdMZEF3TWYvL0FEbi82QVFuQnFBQ0pnQlRBQUFCQmdQeVFOQUFGZ0N3QUVWWXNBUXZHN0VFR3o1WnNDTGNzQ3ZRTURILy93QnIvcEVGSVFjM0FpWUFNd0FBQUNjQlp3RUpBVFlCQndGMkJQWUFBQUFUQUxBQVJWaXdDaThic1FvZlBsbXdKZHd3TVFELy93QTUvbzhFSndZQkFpWUFVd0FBQUNZQlowY0FBUWNCZGdTRS8vNEFFd0N3QUVWWXNBUXZHN0VFR3o1WnNDUGNNREVBLy84QVcvL29CaVlITXdJbUFVVUFBQUVIQUhjQ0JnRXpBQk1Bc0FCRldMQUtMeHV4Q2g4K1diQXUzREF4QVAvL0FEYi81Z1VGQmdBQ0pnRkdBQUFCQndCM0FWb0FBQUFUQUxBQVJWaXdCQzhic1FRYlBsbXdLdHd3TVFELy93QmIvK2dHSmdjekFpWUJSUUFBQVFjQVJBRnJBVE1BRXdDd0FFVllzQW92RzdFS0h6NVpzQzNjTURFQS8vOEFOdi9tQlFVR0FBSW1BVVlBQUFFSEFFUUF2d0FBQUJNQXNBQkZXTEFFTHh1eEJCcytXYkFwM0RBeEFQLy9BRnYvNkFZbUI3Z0NKZ0ZGQUFBQkJ3RjBCU1VCT1FBVEFMQUFSVml3Q2k4YnNRb2ZQbG13T3R3d01RRC8vd0EyLytZRkJRYUZBaVlCUmdBQUFRY0JkQVI1QUFZQUV3Q3dBRVZZc0FRdkc3RUVHejVac0NqY01ERUEvLzhBVy8vb0JpWUhLQUltQVVVQUFBRUhBVzRCRUFFMEFCTUFzQUJGV0xBS0x4dXhDaDgrV2JBdjNEQXhBUC8vQURiLzVnVUZCZlVDSmdGR0FBQUJCZ0Z1WkFFQUV3Q3dBRVZZc0FRdkc3RUVHejVac0N2Y01ERUEvLzhBVy82UkJpWUdMZ0ltQVVVQUFBQUhBWFlFNEFBQS8vOEFOdjZJQlFVRXFBSW1BVVlBQUFBSEFYWUVkZi8zLy84QVcvNlJCUzhGc0FJbUFEa0FBQUFIQVhZRXpBQUEvLzhBU3Y2UkJERUVPZ0ltQUZrQUFBQUhBWFlFSVFBQS8vOEFXLy9tQlM4SHV3SW1BRGtBQUFFSEFYUUZCQUU4QUJNQXNBQkZXTEFLTHh1eENoOCtXYkFUM0RBeEFQLy9BRXIvNkFReEJvVUNKZ0JaQUFBQkJ3RjBCRzhBQmdBVEFMQUFSVml3Q0M4YnNRZ2JQbG13Rk53d01RRC8vd0JiLytnR3JRZENBaVlCUndBQUFRY0Fkd0lOQVVJQUV3Q3dBRVZZc0Jvdkc3RWFIejVac0IzY01ERUEvLzhBU3Yvb0JXRUY3QUltQVVnQUFBRUhBSGNCVmYvc0FCTUFzQUJGV0xBV0x4dXhGaHMrV2JBZTNEQXhBUC8vQUZ2LzZBYXRCMElDSmdGSEFBQUJCd0JFQVhJQlFnQVRBTEFBUlZpd0VpOGJzUklmUGxtd0hOd3dNUUQvL3dCSy8rZ0ZZUVhzQWlZQlNBQUFBUWNBUkFDNi8rd0FFd0N3QUVWWXNBNHZHN0VPR3o1WnNCM2NNREVBLy84QVcvL29CcTBIeHdJbUFVY0FBQUVIQVhRRkxBRklBQk1Bc0FCRldMQVNMeHV4RWg4K1diQWIzREF4QVAvL0FFci82QVZoQm5FQ0pnRklBQUFCQndGMEJIVC84Z0FUQUxBQVJWaXdEaThic1E0YlBsbXdITnd3TVFELy93QmIvK2dHclFjM0FpWUJSd0FBQVFjQmJnRVhBVU1BRXdDd0FFVllzQm92RzdFYUh6NVpzQjdjTURFQS8vOEFTdi9vQldFRjRRSW1BVWdBQUFFR0FXNWY3UUFUQUxBQVJWaXdGaThic1JZYlBsbXdIOXd3TVFELy93QmIvb2dHclFZQ0FpWUJSd0FBQUFjQmRnVHcvL2YvL3dCSy9wRUZZUVNVQWlZQlNBQUFBQWNCZGdRbEFBRC8vd0NoQUFBRlRRYzJBaVlBUFFBQUFRY0FSQUVpQVRZQUV3Q3dBRVZZc0Fndkc3RUlIejVac0FyY01ERUEvLy8vdGY1RkJCSUdBQUltQUYwQUFBRUdBRVIvQUFBVEFMQUFSVml3RHk4YnNROGJQbG13RWR3d01RRC8vd0NoL3FFRlRRV3dBaVlBUFFBQUFBY0JkZ1NrQUJELy8vKzEvZ3dFRWdRNkFpWUFYUUFBQUFjQmRnVUgvM3YvL3dDaEFBQUZUUWU3QWlZQVBRQUFBUWNCZEFUY0FUd0FDUUN3QVMrd0Y5d3dNUUQvLy8rMS9rVUVFZ2FGQWlZQVhRQUFBUWNCZEFRNUFBWUFDUUN3QVMrd0h0d3dNUUQvL3dDaEFBQUZUUWNyQWlZQVBRQUFBUWNCYmdESEFUY0FDUUN3QVMrd0U5d3dNUUQvLy8rMS9rVUVFZ1gxQWlZQVhRQUFBUVlCYmlRQkFBa0FzQUV2c0JyY01ERUEvLy8rcy8vbkJXY0YyQUFtQUROR0FBQUhBMTM5eHdBQUFBSUE3QVJ4QTJBRjJBQUZBQTRBRlFDd0RDK3dCOUN3QWRDd0RCQ3dCTkN3QmRBd01RRVROd2NCQndNekJ3WVdGd2NtTndIMW5jNEIvdkZkNjYwUENRNG1UWmdRQkprQlBnRVkvc01CQVZWVFBHUXdRMTJ4QVAvL0FEWUNDUUpZQXMwQUJnQVJBQUQvL3dBMkFna0NXQUxOQUFZQUVRQUEvLzhBbkFKdEJLVURNUUJHQTZEaEFFek5RQUQvL3dDQ0FtMEY0d014QUVZRG9Ja0FabVpBQVAvL0FJSUNiUVhqQXpFQVJnT2dpUUJtWmtBQS8vLy9UdjQvQXhjQUFBQW5BRVAvMWY3K0FRWUFRd0VBQUJ3QXRnQUNFQUlnQWdOZHRCQUNJQUlDY2JhQUFwQUNvQUlEWFRBeEFBRUFyZ1FnQWlJR0dnQUhBQjJ5QndnSkVSSTVBTEFBUlZpd0FDOGJzUUFoUGxtd0JOQ3dCQzh3TVFFWEJnY0hJemMyQWF0M2F4d2QwQlFtQmhwUGpYK2ZmT2NBQVFDS0JBQUIvZ1lBQUFjQUhiSUNDQWtSRWprQXNBQkZXTEFFTHh1eEJDRStXYkFBMExBQUx6QXhBU2MyTnpjekJ3WUJBWGRxSEI3UUZpVUVBRStMZ2FXSTRnQUIvNlQrMWdFVkFNb0FCd0FZc2djSUNSRVNPUUN3Q0MreUJBMEtLMWdoMkJ2MFdUQXhFeWMyTnpjekJ3WWFkbVliSE5RVEkvN1dVSW1CbW52Z0FBRUF6UVFCQWRJR0FBQUtBQk95Q0FzTUVSSTVBTEFBTDdBRzBMQUdMekF4QVFjR0Z4WVhCeVltTnpjQndCa01DZ2trZTBWRkRCWUdBSkZPU0VsR1NVZklZbzcvL3dDM0JDQURjUVlhQUNZRGNBa0FBQWNEY0FGUEFBRC8vd0NYQkFBRFR3WUFBQ1lEY1EwQUFBY0RjUUZSQUFBQUF2K2gvc0lDV3dEL0FBZ0FFUUFoc2cwU0V4RVNPYkFORUxBRjBBQ3dFaSt5QkEwS0sxZ2gyQnYwV2JBTjBEQXhFeWMyTnpjekJ3WUdGeWMyTnpjekJ3WUdHM3B2R2lEVUhSSjczM3AwR1NEVkhoSisvc0pRb0pTNXRuSFBSMUNqa2JtM2RNa0FBUUJwQUFBRVN3V3dBQXNBU3dDd0FFVllzQWd2RzdFSUh6NVpzQUJGV0xBR0x4dXhCaHMrV2JBQVJWaXdDaThic1FvYlBsbXdBRVZZc0FJdkc3RUNEejVac0FvUXNnQUJDaXRZSWRnYjlGbXdCTkN3QmRBd01RRWhBeU1USVRjaEV6TURJUVFyL3BTSzdvditseUFCWnp2dU93RnRBM0w4amdOeXlBRjIvb29BQUFILysvNWdCR1VGc0FBVEFId0FzQUJGV0xBTUx4dXhEQjgrV2JBQVJWaXdDaThic1FvYlBsbXdBRVZZc0E0dkc3RU9HejVac0FCRldMQUNMeHV4QWhFK1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNBUXZHN0VFRHo1WnNnWUJDaXRZSWRnYjlGbXdEaEN5Q0FFS0sxZ2gyQnYwV2JBSjBMQVEwTEFSMExBR0VMQVMwTEFUMERBeElTRURJeE1oTnlFVElUY2hFek1ESVFjaEF5RUR2UDZUUWUxQi9wa2ZBV1pzL3BrZkFXYzY3anNCYlIvK2xHMEJidjVnQWFEQ0FyVEVBWGIraXNUOVRBQUJBSjRDQkFKTkE5d0FEUUFXc2dNT0R4RVNPUUN3QXkreENnb3JXTmdiM0Zrd01STTJOak1XRmhVSEJnWWpJaVkxbndaOVlGdHdBZ2Q5WDFwd0F2eGtmQUoyWGl0a2MzUmIvLzhBTS8veUF3SUJBd0FtQUJJREFBQUhBQklCdndBQS8vOEFNLy95Qks0QkF3QW1BQklEQUFBbkFCSUJ2d0FBQUFjQUVnTnJBQUFBQVFBMkFna0JMZ0xOQUFNQUdMSUFCQVVSRWprQXNBTXZzZ0FCQ2l0WUlkZ2I5Rmt3TVFFak56TUJDOVVqMVFJSnhBQUdBSjMvNkFjR0JjY0FGZ0FrQUNnQU5nQkVBRklBdUxJQ1UxUVJFam13QWhDd0dkQ3dBaEN3SjlDd0FoQ3dLOUN3QWhDd09OQ3dBaEN3VGRBQXNDVXZzQ2N2c0FCRldMQVhMeHV4Rng4K1diQUFSVml3RXk4YnNSTVBQbG13QTlDd0F5K3lCUU1URVJJNXNBZlFzQWN2c0JNUXNBN1FzQTR2c2hFVEF4RVNPYkFYRUxBZTBMQWVMN0FURUxJc0Fnb3JXQ0hZRy9SWnNBTVFzak1DQ2l0WUlkZ2I5Rm13TEJDd090Q3dNeEN3UWRDd0hoQ3lTQUlLSzFnaDJCdjBXYkFYRUxKUEFnb3JXQ0hZRy9SWk1ERUJOallYRmhjMkZ4WVdCd2NHQmljbUppY0dKeVltTndNV0ZnY0hCZ1luSmlZM056WTJFeWNCRndFR0ZoY1dOamMzTmlZbkpnWUhCUVlXRnhZMk56YzJKaWNtQmdjQkJoWVhGalkzTnpZbUp5WUdCd0xyRHI2RWxEeG5nbjJWQ0FZTnVvZEFjU0JtZ24yVkJ2YUFsZ2dIRGJ5QmVwVUlCUXUxQW5nRGIzbityd1U2TjBGVUN3a0hPamsrVndzQnNBVTZPRDlWQ3dvSE9qaytXZ243OXdVNk56MVdEQW9GT0RvOVZnd0JaSWFyQWdWcmNBSUNxb0JFakswQ0FUWTRid0lDcW44RXJnU3FnRXFJcWdRQ3EzOUFqTEQ2cUU4RVowLzhQMFZUQWdKWVJrOUNWZ0lDV0VWUVJWTUNBbGRIVDBKV0FnSmFTZ0xyU0ZBQ0FsWklUVVZWQWdKV1NmLy9BSkFEL0FHV0JnQURCZ0FMQUFBQURBQ3dCQyt3QWRDd0FTOHdNZi8vQUtFRDlBTENCZ0FEQmdBR0FBQUFHd0N3Q1Mrd0J0Q3dCaSt3QWRDd0FTK3dDUkN3Qk5Dd0JDOHdNUUFBQVFCZEFJb0NaUU9wQUFZQUVBQ3dCUyt5QWdjRkVSSTVzQUl2TURFQkV5TUROd0V6QVNhbWxOc0JBVlN6QWd6K2ZnR0ZGQUdHQUFBQi8va0FpZ0lDQTZrQUJnQVFBTEFBTDdJREJ3QVJFam13QXk4d01RRVRCd0VqQVFNQkp0d0MvcTIwQVQrbEE2bitmQlgrZWdHYkFZVC8vd0EzLys4RVB3V3dBQ1lBQlFBQUFBY0FCUUlmQUFBQUFmL2hBRzhEeVFVbEFBTUFDUUN3QUMrd0FpOHdNVGNuQVJkYWVRTndlRzlQQkdkUEFQLy9BR01Da3dMc0Jha0RCd1BNQUhJQ2t3QVRBTEFBUlZpd0NTOGJzUWtmUGxtd0RkQXdNUUFBQVFCdUFvd0RVd1c2QUJJQVRMSVBFeFFSRWprQXNBQkZXTEFFTHh1eEJCOCtXYkFBUlZpd0FDOGJzUUFmUGxtd0FFVllzQkF2RzdFUUV6NVpzQUJGV0xBSUx4dXhDQk0rV2JBRUVMSU5Bd29yV0NIWUcvUlpNREVCRnpZMk16SVdCd01qRXpjMkp5WUhBeU1UQVlvQ05HeEJjblFQVXNGTEJBUmZWajlod1lzRnJYcElQNmVNL2dVQnlqMS9BZ0piL2RFRElBRC8vLy9EQUFBRXB3V3dBaVlBS2dBQUFBY0QxZjh3L21rQUFmLzJBQUFFcFFYSkFDWUFtcklXSnlnUkVqa0FzQUJGV0xBWEx4dXhGeDgrV2JBQVJWaXdCaThic1FZUFBsbXlKUmNHRVJJNXNDVXZzZ0FDQ2l0WUlkZ2I5Rm13QmhDeUNRRUtLMWdoMkJ2MFdiQUUwTEFFTDdBQUVMQU4wTEFsRUxBUDBMQVBMN0FsRUxBVDBMQVRMN1lQRXg4VEx4TURYYklRQWdvcldDSFlHL1Jac0JjUXNoMEJDaXRZSWRnYjlGbXlHeE1kRVJJNXNCTVFzQ0hRc0JBUXNDUFFNREVCSVFjR0J5VUhJVGNYTmpjM0J6Y3pOeU0zTXpjMkpCY1dGZ2NuTmljbUJnY0hJUWNoQnlFREEvN2hCeFJiQXFnay9BUWtSV1FmQ3FnYW14S1lHWk1UR0FFVng3VExDTzhKcWxwK0RoSUJOaHIrMEJFQkxRSFVMWUZmQThySkFTU3hPQUdSZVpDZ3h2VUdCTm0yQWNVRUFvVnBvSkI1QUFVQURRQUFCbDhGc0FBYkFCOEFJd0FtQUNrQXZiSUtLaXNSRWptd0NoQ3dIOUN3Q2hDd0lkQ3dDaEN3SnRDd0NoQ3dLTkFBc0FCRldMQWFMeHV4R2g4K1diQUFSVml3Rnk4YnNSY2ZQbG13QUVWWXNBd3ZHN0VNRHo1WnNBQkZXTEFKTHh1eENROCtXYklGQ1JvUkVqbXdCUyt3QWRDd0FTK3lEd0VCWGJJREF3b3JXQ0hZRy9SWnNBVVFzZ2NEQ2l0WUlkZ2I5Rm13SmRDd0N0Q3dEdEN3QlJDd0hkQ3dJZEN3RWRDd0F4Q3dIdEN3SXRDd0V0Q3dBUkN3R2RDd0o5Q3dGZEN3Q1JDd0pOQ3dGeEN3S2RBd01RRXpCeU1ITXdjakF5TURJUU1qRXlNM016Y2pOek1UTXhNaEV6TUJNemNqQlRNbkl3RTNCd0UzSndXTjBoelJHOUljMFZidjJQNnhWdlpXelJ6TUc4MGN6RmJ1MWdGVFZ2WDk2cFViOHY1ZzdrS1JBakFUTC80SEtoc0R4YUNYb1A0U0FlNytFZ0h1b0plZ0FlditGUUhyL042WGw1ZitmVTREQWRVRFJnQUFBZ0FyLyswR1dBV3dBQ0FBS1FDaXNpWXFLeEVTT2JBbUVMQVkwQUN3QUVWWXNCY3ZHN0VYSHo1WnNBQkZXTEFjTHh1eEhCcytXYkFBUlZpd0h5OGJzUjhiUGxtd0FFVllzQlF2RzdFVUR6NVpzQUJGV0xBTEx4dXhDdzgrV2JBZkVMSUFBUW9yV0NIWUcvUlpzQXNRc2dZQkNpdFlJZGdiOUZtd0FCQ3dEOUN3RU5DeUloUVhFUkk1c0NJdnNoSUJDaXRZSWRnYjlGbXdIeEN3SHRDd0hpK3dGeEN5S0FFS0sxZ2gyQnYwV1RBeEFTTURCaGNXRnpJM0J3WW5KaVkzRXlNQ0lTY0RJeE1GSGdJSE54TXpBek1CRnpZM05pY21KeWNHT2JsbkF3SUdTaVl2RVV0S2Uzc05aV21DL25DYlh2VDhBWE44djJnRWVTN3RMcm43U0lMS1FpTUxFNkNiQTRiOW9oa1VRUU1KdmhVQkFxT0pBbXIrbEFIOTVRV3dBUU5jcUc4QkFRZisrZjZ0QWdPc1hGMk9DQUVBLy84QUovL3BDQlFGc0FBbUFEWUFBQUFIQUZjRVVBQUFBQWNBS2dBQUIzMEZzQUFmQUNNQUp3QXJBQzRBTVFBMEFPdXlNalUyRVJJNXNESVFzQjdRc0RJUXNDTFFzRElRc0NmUXNESVFzQ3JRc0RJUXNDN1FzRElRc0REUUFMQUFSVml3QWk4YnNRSWZQbG13QUVWWXNCOHZHN0VmSHo1WnNBQkZXTEFiTHh1eEd4OCtXYkFBUlZpd0VDOGJzUkFQUGxtd0FFVllzQTB2RzdFTkR6NVpzZ2tRQWhFU09iQUpMN0FGMExBRkw3SVBCUUZkc0FIUXNBVVFzZ2NEQ2l0WUlkZ2I5Rm13Q1JDeUNnTUtLMWdoMkJ2MFdiQXQwTEFPMExBdzBMQVMwTEFKRUxBbDBMQXAwTEFoMExBVjBMQUhFTEFtMExBcTBMQWkwTEFXMExBQkVMQWQwTEFaMExBUUVMQXYwTEFzMExBZkVMQXkwTEFCRUxBMDBEQXhBU0VUTXdNekJ5TUhNd2NqQXlNRElRTWpBeU0zTXljak56TURNeE1oRXpNQk16Y2pCVE0zSXdVekp5TUJOeU1GTnlNQkJ6Y0V2UUVubnZ1cGt4eTJRZHNjL3RudExmNzg3ZTBiL3h6YUI3Y2NraFh2Q3dFcHM4LzlYWmhHNFFMWm1UN2kvcHV6REdBQlFVZFQvU2ROVUFIMkVBNEVCd0dwL2xlZ29xRDkyd0lsL2RzQ0phQ2lvQUdwL2xjQnFmMFZvcUtpb3FMK0FyeTB0QUlIS1FJQUFBSUFFUC84QmpZRU9nQU9BQnNBYUxJQUhCMFJFam13RWRBQXNBQkZXTEFPTHh1eERocytXYkFBUlZpd0ZpOGJzUlliUGxtd0FFVllzQXd2RzdFTUR6NVpzQUJGV0xBUEx4dXhEdzgrV2JJU0FRb3JXQ0hZRy9SWnNBNFFzZ3NCQ2l0WUlkZ2I5Rm15QlJJTEVSSTVzaEFMRWhFU09UQXhBUllXQndNakV6WW5KaWNsQXlNYkFqTURCUlkzRXpNREJnUW5Bem1rbHhVejdqVUZBZ3FEL3E2YTdidlJmKzFkQVRuSUozWHVjUnYrOWM0RU9RWE14UDdBQVVJc0pYZ0ZBdnlLQkRyN3hnTFcvZTBDQXNRQ3QvMWJ4TlVFQVAvLy8vVCtyZ1VaQmdBQUpnQklBQUFBSndQVkFkMENRZ0VIQUVNQWUvOXRBQklBc2k4aEFWMnlIeUVCY2JLZklRRmRNREVBQVFCTy8rMEVuZ1hHQUNZQWlySU1KeWdSRWprQXNBQkZXTEFaTHh1eEdSOCtXYkFBUlZpd0N5OGJzUXNQUGxteUpoa0xFUkk1c0NZdnNnQUNDaXRZSWRnYjlGbXdDeEN5QmdFS0sxZ2gyQnYwV2JBQUVMQVEwTEFtRUxBUjBMQW1FTEFXMExBV0w3WVBGaDhXTHhZRFhiSVRBZ29yV0NIWUcvUlpzQmtRc2g0QkNpdFlJZGdiOUZtd0ZoQ3dJZEN3RXhDd0k5QXdNUUVoQmhjV0ZoY1dOeGNHSnk0Q053YzNNemNqTnpNU0FCY1dGd2NtSnlZR0J5RUhJUWNoQTBUK3F3a0lDM3BwVzNNSGVuT1ozV1VVcnhtbUY2Z1pvRUlCU1BCampERmZYNVRDTGdGaEdmNm5Gd0ZhQWc5RVBXTnhBd0lpenhzQ0E0cjVtd0dOZ0kwQkJ3RVdBZ0llelNNQ0FxNm5qWUFBQkFCQ0FBQUdEd1d3QUJvQUh3QWtBQ2tBMjdJYUtpc1JFam13R2hDd0hkQ3dHaEN3STlDd0doQ3dLTkFBc0FCRldMQUxMeHV4Q3g4K1diQUFSVml3QVM4YnNRRVBQbG13Q3hDeUpBRUtLMWdoMkJ2MFdiQUswTEFLTDBBUkFBb1FDaUFLTUFwQUNsQUtZQXB3Q2doZHNnY0RDaXRZSWRnYjlGbXdCdEN3Qmk5QUN3QUdFQVlnQmpBR1FBWUZYYklEQXdvcldDSFlHL1Jac0NmUXNDY3ZRQTh3SjBBblVDZGdKM0FuZ0NlUUp3ZGRzZ0FCQ2l0WUlkZ2I5Rm13Q2hDd0lOQ3dJQyt3RDlDd0R5K3dCeEN3SGRDd0V0Q3dCaEN3SHRDd0hpK3dGTkN3RkMrd0F4Q3dKdEN3RjlBd01RRURJeE1qTnhjM0J6Y3pFd1V5RmhjekJ5Y0dCemNIQndZRUl3RTNJUWNoSlNVbUp5VUJCUWNsTmdHL1h2ZUxzeDJ0RmJnZHNpOEIvTFRxSmVrZHNRZ1B2aDdPVWY3K3RnRk5DZjNPRkFJdy9mZ0I0eTkyL3RVQmxQNGRFUUViZHdJZC9lTURINkFDVEFLZ0FRa0JqSHlnQWlra0E2QUJnMzhCeENsTTZBUTVBUVArUEFFN0FnRUFBQUVBT3dBQUJJY0ZzQUFaQUdheUVCb2JFUkk1QUxBQVJWaXdHQzhic1JnZlBsbXdBRVZZc0F3dkc3RU1EejVac0JnUXNoY0JDaXRZSWRnYjlGbXdBTkN3RnhDd0U5Q3dFeSt3QTlDd0V4Q3lFZ2NLSzFnaDJCdjBXYkFHMExBU0VMQU8wTEFPTDdJSkJ3b3JXQ0hZRy9SWk1ERUJJeFlITndjakJnWUhBUlVoQVRjWE1qY0ZOeUVtSnlVM0lRUTAxUnNFMFZDTk4rM1FBV2IrN3Y1eEdPbkxaZjN0VVFIVURzTCs1VmtEbXdUNVZsc0J0cWlyRlAzakR3SmNqZ0t0QXJhVkJRSE1BQUVBRVAvbkJFY0ZzQUFlQUpHeUd4OGdFUkk1QUxBQVJWaXdFUzhic1JFZlBsbXdBRVZZc0FVdkc3RUZEejVac2hNUkJSRVNPYkFUTDdBWDBMQVhMN0lBRndGZHNoZ0JDaXRZSWRnYjlGbXdHZEN3Q05Dd0NkQ3dGeEN3RnRDd0M5Q3dDdEN3RXhDeUZBRUtLMWdoMkJ2MFdiQVYwTEFNMExBTjBMQVRFTEFTMExBUDBMQU8wTEFGRUxJYUFRb3JXQ0hZRy9SWnNoNEZFUkVTT1RBeEFRY0dBZ1FuSmljVEJ6OENCemMzRXpNSE53OENOd2NIQXpZU056Y0VSd2dieGY3YnNIU0RZdVVsNUJibEplUTI5eVhxSmVrWDZ5WHFYYTdlSHdnQy8welQvcld1QWdJVkFsZFcwVmQrVnRKWEFUYlJXZEphZmxuU1dmMytCUUVIN0UwQUFBSC81QUFBQkt3RU9nQWFBRnl5RFJzY0VSSTVBTEFBUlZpd0dTOGJzUmtiUGxtd0FFVllzQVl2RzdFR0R6NVpzQUJGV0xBTkx4dXhEUTgrV2JBQVJWaXdFaThic1JJUFBsbXlBQTBaRVJJNXNBQXZzZ3dCQ2l0WUlkZ2I5Rm13RDlDd0FCQ3dHTkF3TVFFV0ZoY1dCd2NqTnpjMkppY0RJeE1HQXdjak54SUFQd0l6QXpxZHV4RUpEaDN0SVFnRlRWTjU3bnI0UmlidEl6UUJMTm9NSyswRGFDajZ2Rzlzcjg1cGdiY28vV2tDbUdIK3B0M0xBUmtCV2lrQzBRQUMvK1lBQUFWZ0JiQUFGZ0FmQUhpeUdDQWhFUkk1c0JnUXNBM1FBTEFBUlZpd0RDOGJzUXdmUGxtd0FFVllzQUl2RzdFQ0R6NVpzZ1lDREJFU09iQUdMN0lGQVFvcldDSFlHL1Jac0FIUXNBWVFzQXJRc0FvdnNnOEtBVjJ5Q1FFS0sxZ2gyQnYwV2JBVTBMQUdFTEFWMExBS0VMQVgwTEFNRUxJZkFRb3JXQ0hZRy9SWk1ERWxJUWNqTnlNM016Y2pOek1UQlRJRUJ3WUVJeVVISVFFRk1qWTNOaVluSlFMYi9za3A5aWpISk1ZVHh5UEhmQUgzNWdFQkVSTCt4dlgreXhNQk9mNzlBUmVGc0JFT2Mydit5K2ZuNTh0cnl3TElBZmpLMmZnQmF3RTJBb2QvYm9VRUFRQUVBTUwvNXdVK0Jja0FIQUFxQURnQVBBQ1VzZ0U5UGhFU09iQUJFTEFvMExBQkVMQXMwTEFCRUxBNTBBQ3dPUyt3T3krd0FFVllzQW92RzdFS0h6NVpzQUJGV0xBa0x4dXhKQTgrV2JBS0VMQUQwTEFETDdJT0F3b1JFam13Q2hDeUVRSUtLMWdoMkJ2MFdiQURFTElaQWdvcldDSFlHL1Jac2h3RENoRVNPYkFrRUxBZDBMQWRMN0FrRUxJdUFnb3JXQ0hZRy9SWnNCMFFzalVDQ2l0WUlkZ2I5Rmt3TVFFR0JpY21KamMzTmpZWEZoWVZKelltSXlJR0J3Y1ZGaFlYTWpZM0FSWVdCd2NHQmljbUpqYzNOallEQmhZWEZqWTNOelltSnlZR0J3VW5BUmNDN0FxaGUzZU5DQVlOckg5NWpLVUNNakkzVEFvSkFpMG5NRU1PQWVKK2x3Z0dEYmVIZnBrSUJRdTZKQVU4Tmo1VURBb0ZPamMvV0FuOTZua0RiM29FSlhpUUFnS3JmMFNOclFJRWxITUJPRUJZUlU0eUxqZ0JQRGYrYkFLb2dVU01yZ1FDcW9CQ2pheitnMGRTQWdKVlNrOUlVQUlDVzBudlR3Um5UZ0FDQURILzZnUGlCZjhBR2dBa0FGcXlGaVVtRVJJNXNCWVFzQnZRQUxBT0w3QUFSVml3QUM4YnNRQVBQbG15Q0FBT0VSSTVzQWd2c2djSENpdFlJZGdiOUZtd0ZkQ3dBQkN5R2dFS0sxZ2gyQnYwV2JBSUVMQWIwTEFPRUxJaEFRb3JXQ0hZRy9SWk1ERUZMZ0kzTndZSE56WTNFelkyRnhZV0J3Y0dBQWNIQmhVVUZ3TTJQd0kwSnlZSEJ3Sm1nN3RRRmdSTGRoUmJabFFheTVXQWpnc0VGUDc2eFE4SW5XdkhIUVVDTmxNYUJ4WUhjOHAvRUJFRnZBSVZBZC9JM2dVRXVZd3N0LzZ3Wms0ekxwZ0xBaiswMHlVbFZRVUZtU3dBQUFRQUl3QUFCK2tGeFFBREFCRUFId0FwQUtHeUlDb3JFUkk1c0NBUXNBSFFzQ0FRc0JEUXNDQVFzQlBRQUxBQVJWaXdKUzhic1NVZlBsbXdBRVZZc0Nndkc3RW9IejVac0FCRldMQUhMeHV4Qng4K1diQUFSVml3SUM4YnNTQVBQbG13QUVWWXNDTXZHN0VqRHo1WnNBY1FzQTdRc0E0dnNBUFFzQU12c2dBQ0NpdFlJZGdiOUZtd0RoQ3lGUUlLSzFnaDJCdjBXYkFIRUxJY0Fnb3JXQ0hZRy9SWnNpSWxJQkVTT2JJbkpTQVJFamt3TVFFaE55RUJOallYRmhZSEJ3WUdKeVltTnhjR0ZoY1dOamMzTmlZbkpnWUhBU01CQXlNVE13RVRNd2M5L2E4YkFsRDk1QkhUbDQ2bEN3Y1ExSldRcEFxc0NFVkhUV29QQ2doRVNGQnBEdjRRLy83TnR1NzkvZ0UxdCt3Qm5KVUNMcC9IQkFURG1rcW94UVFFeEpjQ1lHa0NBMjFqVlY5ckFnSnhYdnVnQkJUNzdBV3crK2tFRndBQ0FPMERrd1RMQmJBQURBQVVBRzBBc0FCRldMQUdMeHV4Qmg4K1diQUFSVml3Q1M4YnNRa2ZQbG13QUVWWXNCTXZHN0VUSHo1WnNnRVZCaEVTT2JBQkw3SUFDUUVSRWpteUF3RUdFUkk1c0FUUXNnZ0JDUkVTT2JBQkVMQUwwTEFHRUxFTkNpdFkyQnZjV2JBQkVMQVAwTEFORUxBUjBMQVMwREF4QVFNSEF3TWpFek1URXpNREl3RWpBeU1USXpjaEJENnVQRHhEYmwrQ09jT0hYbTMrYjRaTmMwMkpFUUdDQlBiK253SUJmdjZEQWh6K2hnRjYvZVFCdmY1RkFidGZBQUlBZmYvcEJIY0VVZ0FXQUIwQVlySVVIaDhSRWptd0ZCQ3dHTkFBc0FCRldMQUtMeHV4Q2hzK1diQUFSVml3QWk4YnNRSVBQbG15R2dvQ0VSSTVzQm92c2c4TUNpdFlJZGdiOUZtd0FoQ3lFd3dLSzFnaDJCdjBXYklXQ2dJUkVqbXdDaEN5Rnd3S0sxZ2gyQnYwV1RBeEpRWW5KaVlDTnpZU0pCY2VBZ2NISVFNV0Z4WTJOd01tQndNaEV5WURyTExDaE05b0RnNnhBUU9KZ3NCZkNnWDlFenhkajFPNmRjcUttalFDQ2pWY1hITUVBcGNCQW95UkFSU1pCQVNPK0pFeC9yWm5CQU0zUkFNckEzeis2Z0VnYXdELy93QzIvL0lGaVFXWkFDY0R6d0JKQW9ZQUp3T0RBUE1BQUFFSEE4Z0RDUUFBQUJBQXNBQkZXTEFGTHh1eEJSOCtXVEF4Ly84QWd2L3lCaUVGdUFBbkE4MEFqZ0tVQUNjRGd3R2JBQUFCQndQSUE2RUFBQUFRQUxBQVJWaXdEUzhic1EwZlBsa3dNZi8vQUlqLzhnWVdCYWdBSndQTEFINENrd0FuQTRNQmdBQUFBUWNEeUFPV0FBQUFFQUN3QUVWWXNBRXZHN0VCSHo1Wk1ESC8vd0MxLy9JRjFnV2pBQ2NEeVFDU0FvNEFKd09EQVNvQUFBRUhBOGdEVmdBQUFCQUFzQUJGV0xBRkx4dXhCUjgrV1RBeEFBSUFSZi9uQkVnRjlRQWRBQzBBVkxJSUxpOFJFam13Q0JDd0h0QUFzQTB2c0FCRldMQVZMeHV4RlE4K1diSUFEUlVSRWptd0FDK3dEUkN5QndFS0sxZ2gyQnYwV2JBQUVMSWVBUW9yV0NIWUcvUlpzQlVRc2ljQkNpdFlJZGdiOUZrd01RRVdGelluSmlZbkpnWUhKellYRmhJVEZRSUNCQ2N1QWpjM1BnSVhKZ1lIQndZWEZoWVhGalkzTnlZbUFtU2thd01DQ29SdVJZTkNESkdpME4wR0RaNysrYW1LdzFzUUFoR1I0cGwycGhVREJnUUZZVmQ2cFNBTkRuUUVCUVI3S2pDVnNnUURJQlc1UXdFRS90Zis2a2IrMS81MzBnUUNpdkdURnBIcWZjWURxSlFWTmpsa2N3TUZ6czVWVGxzQUFRQWYveHNGVlFXd0FBY0FKd0N3QkMrd0FFVllzQVl2RzdFR0h6NVpzQVFRc0FIUXNBWVFzZ0lCQ2l0WUlkZ2I5Rmt3TVFVakV5RURJd0VoQkUzdTZmMnQ2ZTBCQndRdjVRWFUraXdHbFFBQi82Zis4d1Q2QmJBQURBQTFBTEFETDdBQVJWaXdDQzhic1FnZlBsbXdBeEN5QWdFS0sxZ2gyQnYwV2JBRjBMQUlFTElLQVFvcldDSFlHL1Jac0FmUU1ERUJBU0VISVRjQkFUY2hCeUVCQTNQOWxBTWlJdnVnSEFLNS9qMFpCQ2dpL1FRQm1RSkYvWEhEb2dMSUFzYU53LzExQUFFQW5BSnRBL2dETVFBREFCRUFzQUl2c2dFQkNpdFlJZGdiOUZrd01RRWhOeUVEMWZ6SEl3TTVBbTNFQUFBQkFEUUFBQVVKQmJBQUNBQThzZ0FKQ2hFU09RQ3dCeSt3QUVWWXNBRXZHN0VCSHo1WnNBQkZXTEFETHh1eEF3OCtXYklBQVFNUkVqbXdCeEN5QmdFS0sxZ2gyQnYwV1RBeEFRRXpBU01ESXpjaEFmY0NOZDM5S2NCdTBDTUJXUUV0QklQNlVBSkJ4UUFBQXdCSi8rZ0hyZ1JTQUI0QUx3QkJBR0t5QmtKREVSSTVzQVlRc0NuUXNBWVFzRHZRQUxBQVJWaXdDaThic1FvUFBsbXdCTkN3Q2hDd0U5Q3dFeSt3R2RDeUJ4a0tFUkk1c2hZWkNoRVNPYkFURUxJL0FRb3JXQ0hZRy9SWnNDVFFzQW9Rc2pVQkNpdFlJZGdiOUZtd0xOQXdNUUVHQWdZbkppWW5CZ1luTGdJM056WVNOaGNXRmhjMk5oY1dGaGNXQnljMkp5Y21KeVlHQndjR0ZoWVhGalkzQlFZWEZoWVhGalkyTnpjMkppY21KeVlHQjU4U24vU1BpTlV1ZXZDRmhNUmdEd0lTbi9PT2k5WXRlUEdIaWNrc0pnM3BCZ1FGSXA1MTNTb0hCa1o2Ulh5eUYvcUxCZ1VIWmxoTGwzOGJCZ1FtSlZGcWU3QUNHSnYrL0pFRUJMS1Z0SnNEQkk3OWxCZVhBUVdSQkFTeWtyS1pBd0tlaUhhQ0FUVTlKYjRGQXRhR0pFdWxhQUlGeXFNUU5qeHBmQU1DWHE1WUpEZDRNMndFQmNzQUFmOFgva1VESWdZWkFCWUFQYklCRnhnUkVqa0FzQUJGV0xBT0x4dXhEaUUrV2JBQVJWaXdBeThic1FNUlBsbXlDQUVLSzFnaDJCdjBXYkFPRUxJVEFRb3JXQ0hZRy9SWk1ERUZCZ1luSWljM0ZqTVdOeE0yTmhjV0Z3Y21JeUlHQndFZkZjcWpPVTBqT1JXUEc3NFYxNm8xWnlrd0tWQmxEVSt2dlFRVnZBOEVzQVRyc2NZQ0FSYTREV0JUQUFJQU1BRCtCRFVEK1FBU0FDVUFlTElPSmljUkVqbXdEaEN3SU5BQXNBSXZzQWJRc0FZdnNBSVFzQWpRc0FZUXNnc0JDaXRZSWRnYjlGbXdBaEN5RUFFS0sxZ2gyQnYwV2JBTEVMQVMwTEFDRUxBVjBMQVZMN0FaMExBWkw3QVZFTEFiMExBWkVMSWVBUW9yV0NIWUcvUlpzQlVRc2lNQkNpdFlJZGdiOUZtd0hoQ3dKZEF3TVJNMk16SVdGak15TndjR0p5SXVBaU1HQndjMk16SVdGak15TndjR0p5SXVBaU1HQjQ1dGpWM1pUUzE3Z2hadGZEeGthMlkvaG9nemJZbGQyMHd0ZW9jWWE0QXhWcVpWTG9lREE1QnBlUmQ5MldzQ0tUMHFBbnpLYVhrWGZkbHJBaHhjR0FKOEFBQUJBR0lBZ2dRVUJNRUFFd0EzQUxBVEw3SUFBUW9yV0NIWUcvUlpzQVRRc0JNUXNBZlFzQk1Rc0EvUXNBOHZzaEFCQ2l0WUlkZ2I5Rm13Q05Dd0R4Q3dDOUF3TVFFaEJ5YzNJemNoTnlFM0lUY1hCek1ISVFjaEE2ZjkrcU5xY3FRakFSR2gvblFrQWZpcmFubXhJLzdob0FHWkFXVGlSWjNKMzhyclJhYkszd0QvLy8vVkFCTUQyd1J4QUdjQUlBQVlBSXRBQURtYUFBY0RvUDg1L2FiLy93QVhBQk1EOHdSbkFHY0FJZ0FhQUl0QUFEbWFBQWNEb1A5Ny9hWUFBZ0E2QUFBRDRnV3dBQVVBQ1FBNHNnWUtDeEVTT2JBR0VMQUUwQUN3QUVWWXNBQXZHN0VBSHo1WnNBQkZXTEFETHh1eEF3OCtXYklHQUFNUkVqbXlDQUFERVJJNU1ERUJNeE1CSXdNQkFSTUJBaVcvL3Y0V3dQNENLdjdBbEFFL0JiRDlHdjAyQXVRQngvNGYvamNCNHdELy93QnBBS2dDRGdVS0FDY0FFZ0E1QUxZQkJ3QVNBTXNFQndBSkFMQURMN0FWM0RBeEFBQUNBR1lDZndLQ0JEa0FBd0FIQUNxeUFBZ0pFUkk1c0FYUUFMQUNMN0FBUlZpd0JpOGJzUVliUGxteUFBZ0NFUkk1c0FBdnNBVFFNREVCSXhNekV5TVRNd0VBbWsyYTU1cE9tZ0ovQWJyK1JnRzZBQUFCLzgvL1p3RVdBUVlBQndBTUFMQUVMN0FBMExBQUx6QXhGeWMyTnpjekJ3WktlMThWRDhRTkpKbFBoWGhUVnNVQS8vOEFYd0FBQlpFR0dnQW1BRW9BQUFBSEFFb0NNd0FBQUFJQVN3QUFCRXdHR2dBVkFCa0FnN0lIR2hzUkVqbXdCeEN3RjlBQXNBQkZXTEFJTHh1eENDRStXYkFBUlZpd0F5OGJzUU1iUGxtd0FFVllzQkl2RzdFU0d6NVpzQUJGV0xBWUx4dXhHQnMrV2JBQVJWaXdBQzhic1FBUFBsbXdBRVZZc0JZdkc3RVdEejVac0FNUXNnRUJDaXRZSWRnYjlGbXdDQkN5RGdFS0sxZ2gyQnYwV2JBQkVMQVQwTEFVMERBeE14TWpOeGMzTmpZWEZoWVhCeVlqSmdjSE53Y2pBeUVqRXpOUG5LQWdtQTRqL01OT2xVbzVmbkRVS0EzWElNNmRBbFh1dk8wRGhyUUJVYjdTQkFFbUY4Z3pBc3BDQWJUOGVnUTZBQUVBWHdBQUJLUUdHUUFZQUcyeUVoa2FFUkk1QUxBQVJWaXdFeThic1JNaFBsbXdBRVZZc0FZdkc3RUdHejVac0FCRldMQU9MeHV4RGhzK1diQUFSVml3Q2k4YnNRb1BQbG13QUVWWXNCY3ZHN0VYRHo1WnNCTVFzZ0lCQ2l0WUlkZ2I5Rm13QmhDeUNBRUtLMWdoMkJ2MFdiQU0wTEFOMERBeEFTWUhJZ1lIQnpNSEl3TWpFeU0vQWpZMkZ4WVhGd01qQTU5dE5WMTREdzdYSU5XZDdaMmhJSjhPR3UrN2JXM2EvK3dGUWhBQlgxNWF0UHg2QTRhMEFXVzJ3d0lDRUNENkd3QUNBRjhBQUFhMUJob0FKd0FyQUw2eUV5d3RFUkk1c0JNUXNDblFBTEFBUlZpd0ZpOGJzUlloUGxtd0FFVllzQU12RzdFREd6NVpzQUJGV0xBUkx4dXhFUnMrV2JBQVJWaXdJQzhic1NBYlBsbXdBRVZZc0Nvdkc3RXFHejVac0FCRldMQUlMeHV4Q0NFK1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNDTXZHN0VqRHo1WnNBQkZXTEFvTHh1eEtBOCtXYkFERUxJQkFRb3JXQ0hZRy9SWnNBZ1FzZzBCQ2l0WUlkZ2I5Rm13RmhDeUhBRUtLMWdoMkJ2MFdiQUJFTEFoMExBaTBMQWwwTEFtMERBeE14TWpOek0zTmpZWEZoY0hKaU1tQmdjSEJUYzJOaGNXRmhjSEppY21Cd2MzQnlNREl4TWhBeUVqRXpOam5hRWdvQTBaMzY0OFVCb3NMVlZzRHc4QllCRW0rTUJPbGtvNmVuVFRLQTNYSU02ZDdaeittWjBFcWUyODdRT0d0R0MzeVFJQ0VyNEtBVjVUWmdGaHRza0NBaVlYeURFQ0FzcENBYlQ4ZWdPRy9Ib0VPZ0FCQUY4QUFBYjVCaHNBS2dDcnNoTXJMQkVTT1FDd0FFVllzQWd2RzdFSUlUNVpzQUJGV0xBV0x4dXhGaUUrV2JBQVJWaXdBeThic1FNYlBsbXdBRVZZc0JFdkc3RVJHejVac0FCRldMQWlMeHV4SWhzK1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNCb3ZHN0VhRHo1WnNBQkZXTEFtTHh1eEpnOCtXYkFERUxJQkFRb3JXQ0hZRy9SWnNBZ1FzZzBCQ2l0WUlkZ2I5Rm13RmhDeUhnRUtLMWdoMkJ2MFdiQUJFTEFrMExBbDBMQW8wTEFwMERBeE14TWpOek0zTmpZWEZoY0hKaU1tQmdjSEpUYzJOaGNXRnhjQkl4TW1JeUlHQndjekJ5TURJeE1oQTJPZG9TQ2dEUm5pclRKWUdqY2hWV3dQRUFGbkRScnZ1MlprNi84QTdlMkdJVnQ1RUE3V0g5V2Q3WnorbVowRGhyUmZ1TW9FQVJLK0NnRmZVbVlCWmJiREFnRU9JL29iQlVFUVhGdGd0UHg2QTRiOGVnQUJBRi8vN1FUN0Joa0FKd0NVc2hBb0tSRVNPUUN3QUVWWXNDSXZHN0VpSVQ1WnNBQkZXTEFSTHh1eEVScytXYkFBUlZpd0hTOGJzUjBiUGxtd0FFVllzQ1l2RzdFbUd6NVpzQUJGV0xBWkx4dXhHUTgrV2JBQVJWaXdDeThic1FzUFBsbXdKaEN5QUFFS0sxZ2gyQnYwV2JBTEVMSUdBUW9yV0NIWUcvUlpzQUFRc0EvUXNCRFFzQ0lRc2hVQkNpdFlJZGdiOUZtd0VCQ3dHOUN3SE5Bd01RRWpBd1lYRmhjV053Y0dKeVltTnhNak56TTNKaU1pQmdjREl4TWpOek0zTmpZWEZoWVhBek1FMjdsbUF3SUdTU015RVVwS2Uzd05aYTBnckM5Q1kwMW5EOHZ0bmFFZ29BMFoxNnB5MjJrNnVRT0cvYUlaRkVBREFncStGUUVDbzRrQ2FyVDZJbDFZKzE4RGhyUmZ1TWdDQVQ4ci9vNEFBUUFYLytrR25RWWFBRW9Bd0xJcFMwd1JFamtBc0FCRldMQStMeHV4UGhzK1diQUFSVml3UlM4YnNVVWhQbG13QUVWWXNCQXZHN0VRR3o1WnNBQkZXTEJKTHh1eFNScytXYkFBUlZpd0xDOGJzU3dQUGxtd0FFVllzQW92RzdFS0R6NVpzRWtRc2dFQkNpdFlJZGdiOUZtd0NoQ3lCUUVLSzFnaDJCdjBXYkFCRUxBTzBMQkZFTElWQndvcldDSFlHL1Jac2gxSkxCRVNPYkErRUxJZ0FRb3JXQ0hZRy9SWnNqY3NQaEVTT2JBM0VMSW1BUW9yV0NIWUcvUlpzQ3dRc2pNQkNpdFlJZGdiOUZrd01RRWpBd2NXRnhZM0J3WW5KaVkzRXlNM016YzJKaWNtQmg4Q0ZnY0hOaVluSWdZSEJnUVhGZ2NPQWljbUpqY3pGQllYTWpZM05pUW5KamMySkJjeUZ5WTNOallYRmhZSEJ6TUdmcmxrQWdOTEl6SVJTMHA3ZUE5Z3B4K21EUXBLVFYxekNRUVRCZ1R1QWxKTVRuTUxEd0VRUk0wS0JYN1ZkckhrQXVaalZscDFEQkgrN2hiNENBY0JCYkZMWHhNR0R1dW91Y1VWRExrRGh2MjJMMUlEQWdxK0ZRRUN0SmtDU2JSWlgya0NBNFdOUEtvNk9RRkxWZ0pOUVZwRkhWZTdhSmxSQXdMSm4xaFpBa2xCWUU0SVdNT1d2Z0laZkRtSnBRSUUxcXhZQUFBVy82bitjZ2hGQmE0QURRQWFBQ2dBTndBOUFFTUFTUUJQQUZZQVdnQmVBR0lBWmdCcUFHNEFkZ0I2QUg0QWdnQ0dBSW9BamdHaHNsdVBrQkVTT2JCYkVMQU0wTEJiRUxBYTBMQmJFTEFjMExCYkVMQXgwTEJiRUxBODBMQmJFTEErMExCYkVMQkcwTEJiRUxCSzBMQmJFTEJTMExCYkVMQlgwTEJiRUxCaDBMQmJFTEJqMExCYkVMQnAwTEJiRUxCdDBMQmJFTEJ3MExCYkVMQjYwTEJiRUxCKzBMQmJFTENDMExCYkVMQ0UwTEJiRUxDSTBMQmJFTENNMEFDd1BTK3dBRVZZc0VZdkc3RkdIejVac244NkF5dXlkNElESzdKN2VnTXJza2wrQXl1eWlVNERLN0tGaUFNcnNvMkVBeXV5UVl3REs3SUtQVVlSRWptd0NpK3dBOUN3QXkrd0R0Q3dEaSt3Q2hDd0Q5Q3dEeSt5Ync0UEVSSTVmTEJ2THhpeVVBc0tLMWdoMkJ2MFdiSVZVRzhSRWptd0NoQ3lIZ3NLSzFnaDJCdjBXYkFERUxJbEN3b3JXQ0hZRy9SWnNBOFFzQ25Rc0NrdnNBNFFzQzdRc0M0dnNqUUxDaXRZSWRnYjlGbXdQUkN3YTlDd1o5Q3dZOUN3UHRDeVB3d0tLMWdoMkJ2MFdiQmwwTEJwMExCdDBMQTgwTEJHRUxKSERBb3JXQ0hZRy9SWnNGL1FzRnZRc0ZmUXNFclFzRVlRc0dEUXNGelFzRmpRc0V2UXNBNFFzbEVMQ2l0WUlkZ2I5Rm13RHhDeWRnc0tLMWdoMkJ2MFdUQXhBUVlHSnlZbU56YzJOaGNXRmdjVEV4Y1dCd1lHQnhZVkZBWUhBVFltSnlZR0J3Y0dGaGNXTmpjQk13TUdCaU1HSmljWEJqY3lOamNCRXpNSE13Y2hOek0zTXdNQkV5RUhJd2NsTnlFREl6Y0JCek0yTnpZbkFUY2hCeUUzSVFjaE55RUhFemNoQnlFM0lRY2hOeUVIQVRjMk56WXZBZ0VqTnpNM0l6Y3pBeU0zTXlVak56TTNJemN6QXlNM013TVBDb2hnWVhRRUNBaUZaVjExQWd4Z3FMOERBaVk0VDIxZy9yVUhOem8vVlFzUEJ6ZzdQMVFMQTlCak93aHBUMU5uQWxnRVZpMDZDZmxrTjI4a3Z4UUUveFRBSkcwMytiVXlBUzBVdmg0RjJ4UUJMek50SHZ2b0htMXVFZzFSQVVnVkFSQVYvVzBWQVE4Vi9XNFZBUTRWekJRQkR4VDliaFFCRGhUOWJ4UUJEUlFCVjFaNkVBcEFJMkQ4em5BdGJ4VnZMSEN2Y0MxdkJ3QnRMRzRVYlN4dXIyNHRiUUhVWm5rQ0FuMWVjR0IrQWdKNFl2NjRBaVVCQm9rbk9DQWRXRWxXQXdGTVFGQUNBbFJEY1VCUkFnSlJSUUZQL29WTlhRRlRWUUpmQWprcS9Na0JPOHB4Y2NyK3hRWWZBUjEwcWFsMC91T3AvTGFwQlZWSEJ3TkxkSFIwZEhSMCtUaHhjWEZ4Y1hFRHdnRUdVVFlJQXdMKzBmeCsrdndWK1g3OGZ2cjhGZmtBQUFVQVhQM1ZCOWNJY3dBREFCd0FJQUFrQUNnQVRBQ3dJUyt3SlMrd0FOQ3dBQyt3SVJDd0F0Q3dBaSt5SUFJQUVSSTVzQ0F2c0IzUXNCMHZzQVRRc0FRdnNnMEFBaEVTT2JBTkw3QVUwTEFVTDdJSEJCUVJFam15R1JRRUVSSTVNREVKQXdVME5qYzJOalUwSmlNaUJnY3pOall6TWhZVkZBY0dCaFVYSXhVekF6TVZJd016RlNNRUdBTy8vRUg4UkFRUEhpUktYS2VWa0tBQ3l3STZLems0WFZzdnlzcktTd1FFQWdRRUJsTDhNZnd4QTgveE9qb1lKNGRLZ0plTGZ6TTBRRFJmUEVGY1RGdXEvVXdFQ3A0RUFBUC8xd0FBQTU4RWpRQURBQWNBQ3dCZXNnUU1EUkVTT2JBRUVMQUEwTEFFRUxBSTBBQ3dBRVZZc0Fvdkc3RUtIVDVac0FCRldMQUFMeHV4QUE4K1diSUNBUW9yV0NIWUcvUlpzZ2NLQUJFU09iQUhMN0lFQVFvcldDSFlHL1Jac0FvUXNnZ0JDaXRZSWRnYjlGa3dNU0VoTnlFRElUY2hFeUUzSVFMVS9RTWpBdjBTL1pBakFuQjAvUU1qQXYzREFUakVBUXJFQUFIL3B3QUFBK3dFalFBSUFEaXlCd2tLRVJJNUFMQUFSVml3QWk4YnNRSWRQbG13QUVWWXNBQXZHN0VBRHo1WnNBQkZXTEFFTHh1eEJBOCtXYklIQWdBUkVqa3dNVE1qQVRNVElRTW5CNUhxQW5idDR2Ny9nd1VpQkkzN2N3TkhYbEVBQXdBNi8rb0VZd1NpQUFNQUZBQWlBSEd5R0NNa0VSSTVzQmdRc0FMUXNCZ1FzQTNRQUxBQVJWaXdEUzhic1EwZFBsbXdBRVZZc0FRdkc3RUVEejVac2dNTkJCRVNPWHl3QXk4WXRHQURjQU1DWGJRd0EwQURBbDJ5QUFFS0sxZ2gyQnYwV2JBTkVMSVlBUW9yV0NIWUcvUlpzQVFRc2g4QkNpdFlJZGdiOUZrd01RRWhOeUVCSmlZQ056Y1NOellYRmhZU0J3Y0NBQk1tSmljbUFnY1hGaFlYRmhJM0F4RCtaU01CbS83Sms5RmVFUU1oc2FIa2s4NWRFUVFnL3JtREJXeGltc0FKQVFWc1lwZkFDd0hmdy8xT0FwVUJCSjRjQVIyb21BVUVrdjc4bmlIKzdmNjVBdnR0Z3dRRy92em9SM0dGQkFZQkFQQUFBQUwvcHdBQUErd0VqUUFEQUFnQVBMSUZDUW9SRWptd0JSQ3dBdEFBc0FCRldMQUNMeHV4QWgwK1diQUFSVml3QUM4YnNRQVBQbG15QlFBQ0VSSTVzZ2NCQ2l0WUlkZ2I5Rmt3TVNFaEFUTURKd2NCSVFQcys3c0NkdTJpQlJ6K3J3SFhCSTMrdWw1RS9XSUFBQUVBQ2dBQUE5OEVqUUFGQURLeUFRWUhFUkk1QUxBQVJWaXdCQzhic1FRZFBsbXdBRVZZc0FJdkc3RUNEejVac0FRUXNnQUJDaXRZSWRnYjlGa3dNUUVoQXlNVElRTzgvZU9vN2NvREN3UEovRGNFalFBQUFRQXRBQUFFaUFTTkFCZ0FsYklBR1JvUkVqa0FzQUJGV0xBQkx4dXhBUjArV2JBQVJWaXdHQzhic1JnZFBsbXdBRVZZc0F3dkc3RU1EejVac2dBTUdCRVNPYklKREFFUkVqbXdDUyt3Qk5Dd0JDOUFEUThFSHdRdkJEOEVUd1JmQkFaZHRzOEUzd1R2QkFOZHNnWUNDaXRZSWRnYjlGbXdDUkN5Q2dJS0sxZ2gyQnYwV2JBTzBMQUpFTEFRMExBUUw3QUdFTEFUMExBRUVMQVcwTEFXTHpBeEFRRWhBVE1ISlFjSEpRY2hCeU0zSVRjRk55Y2hOek1ETXdJVUFXTUJFZjVpeVJ2KzZSb01BVElhL3RRbTdTZiswaG9CS0JJRC90UWIzTlAyQW53Q0VmMjNrd01nTEFLUjJkbVJBVGtQa3dKSkFBRUFFUUFBQkFrRW9nQWZBR1d5R3lBaEVSSTVBTEFBUlZpd0ZDOGJzUlFkUGxtd0FFVllzQVl2RzdFR0R6NVpzaDhHRkJFU09iQWZMN0FQMExJT0Fnb3JXQ0hZRy9SWnNBRFFzQVlRc2dVQkNpdFlJZGdiOUZtd0NOQ3dGQkN5R2dFS0sxZ2gyQnYwV2JJWEh4b1JFamt3TVFFbEJnWUhKUWNoTnhjMlB3SUhOek0zTmpZWEZoWUhKelluSmdZSEJ5RURHLzZZRVRzNkFva2svSDhkQ0YwaURRT2xISllNR1BHNHJiMEk3Z3VQVW1jTkNnRjJBZVVCVkpKQUE4UENBU1d2Unc0RmsyalQ3d1FFMXJnQnhnY0NoSDVpQUFBQkFBNy9Fd1AvQlhNQUt3QnZzaDhzTFJFU09RQ3dBRVZZc0Frdkc3RUpIVDVac0FCRldMQWlMeHV4SWc4K1diSURJZ2tSRWptd0NSQ3dETkN3QXhDeUdRRUtLMWdoMkJ2MFdiQUpFTElUQVFvcldDSFlHL1Jac2hBWkV4RVNPYkFpRUxBZjBMQWlFTElwQVFvcldDSFlHL1Jac2lVREtSRVNPVEF4QVRZbkp5WW1OelkyTnpjekJ4WVdCeWMySmljaUJnY0dGeGNXRmdjR0JnY0hJemNtSmpjWEJoWXpNallDdXhHUFBNeXNCd25qc3l5ZExaR2pBdXNEWmxWZGV3d1JuVDdJb1FnSjJyUXVuQzZrdkFUc0JXNXVZSHNCT1dvdkVqaXRmbzYwRWRuZkc3dUtBVlpYQVZCRFlEQVNQYk9BanFzUjRlTVl4NVFCWFdKTkFBRUFGQUFBQkRVR0dBQUtBRXdBc0FCRldMQURMeHV4QXlFK1diQUFSVml3Qmk4YnNRWWJQbG13QUVWWXNBRXZHN0VCRHo1WnNBQkZXTEFKTHh1eENROCtXYklBQmdFUkVqbXlCUVlCRVJJNXNnZ0FCUkVTT1RBeEFRTWpBVE1EQVNFQkFTRUJXRmZ0QVEvdG1nR0tBVFg5K3dGaS92VUI5ZjRMQmhqOGtRR1IvZ0g5eFFBQUFRQXVBQUFGWndXd0FBc0FUQUN3QUVWWXNBTXZHN0VESHo1WnNBQkZXTEFITHh1eEJ4OCtXYkFBUlZpd0FTOGJzUUVQUGxtd0FFVllzQW92RzdFS0R6NVpzZ0FEQVJFU09iSUZBd0VSRWpteUNRQUZFUkk1TURFQkF5TVRNd00zQVNFQkFTRUJtWFgyL1BaMkFnSjRBVVA5THdIbC91TUNvLzFkQmJEOWZRRUNndjBxL1NZQUFBRUFGQUFBQkVVR0FBQU1BRk1Bc0FCRldMQUVMeHV4QkNFK1diQUFSVml3Q0M4YnNRZ2JQbG13QUVWWXNBSXZHN0VDRHo1WnNBQkZXTEFMTHh1eEN3OCtXYklIQ0FJUkVqbXdCeSt5QUFFS0sxZ2gyQnYwV2JJS0FBY1JFamt3TVFFakF5TUJNd016QVNFQkFTRUJ4WEpTN1FFTDdKZGRBVThCSmY1SkFSaisvUUhaL2ljR0FQeWNBWjcrQmYzQkFBRUFMZ0FBQlhzRnNBQU1BRmdBc0FCRldMQUVMeHV4QkI4K1diQUFSVml3Q0M4YnNRZ2ZQbG13QUVWWXNBSXZHN0VDRHo1WnNBQkZXTEFMTHh1eEN3OCtXYklHQWdRUkVqbXdCaSt5SHdZQmNiSUJBUW9yV0NIWUcvUlpzZ29CQmhFU09UQXhBU01ESXhNekF6TUJJUUVCSVFJK3JtejIvUFpxZlFJS0FUNzltQUdHL3VnQ2NQMlFCYkQ5bkFKay9UdjlGUUFDQUM3Ly93VHdCYkFBSGdBbkFHR3lJQ2dwRVJJNXNDQVFzQjdRQUxBQVJWaXdBeThic1FNZlBsbXdBRVZZc0JVdkc3RVZEejVac0FCRldMQUJMeHV4QVE4K1diSWdBd0VSRWptd0lDK3lIZ0VLSzFnaDJCdjBXYklLSGlBUkVqbXdBeEN5SndFS0sxZ2gyQnYwV1RBeEFRTWpFd1V5RmdjR0JnY1dGeFlIQndZWEZoY0hCeVluSmpjM05pY21KeVVYTWpZM05pWW5KUUdNYVBiOEFmYmg3dzhJajVPVUVRVUdGQWNFQkNRQzlTTUZBd29TQmdZVWxQN3cvNHVpRGcxcGFQN1pBbGI5cWdXd0FkdkNjS2s5UUtzME5vczNKRDBwR3dFc1NpeE1lVEFxakFuTEFYZHdhbThFQVFBQUFnQTcvK01Fa1FSVUFCSUFJd0J1c2hra0pSRVNPYkFaRUxBSzBBQ3dBRVZZc0Fvdkc3RUtHejVac0FCRldMQU9MeHV4RGhzK1diQUFSVml3QWk4YnNRSVBQbG13QUVWWXNCSXZHN0VTRHo1WnNnQUNDaEVTT2JJTkNnSVJFam13QWhDeUdBRUtLMWdoMkJ2MFdiQUtFTElnQVFvcldDSFlHL1JaTURFbEJpY21KajhDTmdBWEZoWVhOek1ERXlNQkJoY1dGaGNXTmo4Q0p5WW5KZ1lIQXhDTzQ2dTVDUU1JSndFR3dXMmdKMFRjekJIVC9qSUdBZ0pjVW1haUlBWUJCQnVQZFpvYnhlSUhCZi9jTFRuNkFTb0ZBM0ZteGYzVC9mTUI4ak01WlhVQ0E3NmNMa1ExM0FjRng4SUFBQVAvaC81SEJGQUVVQUFyQURrQVJ3Q2JzaWRJU1JFU09iQW5FTEE1MExBbkVMQkUwQUN3QUVWWXNDZ3ZHN0VvR3o1WnNBQkZXTEFXTHh1eEZoRStXYkFvRUxBcjBMQXJMN0lBQXdvcldDSFlHL1Jac2djV0tCRVNPYkFITDdJT0ZnY1JFam13RGkreUxBRUtLMWdoMkJ2MFdiSWJMQTRSRWpteUlBY29FUkk1c0JZUXNqTUJDaXRZSWRnYjlGbXdCeEN5UFFFS0sxZ2gyQnYwV2JBb0VMSkVBUW9yV0NIWUcvUlpNREVCQnhZSEJ3WUVKeUluQmdjR0ZoY1hGaFlIQmdZRUp5WW1OelkzSmpjMk5qY21KamMzTmpZM054Y1hJUUVtSndZSEJoWXpNalkzTmlZbkF3WVdGekkyTnpjMkppY21CZ2NFTm9NZ0NRUVgvdTI2UTFJeUJ3WXBPcTJ6dEFjRmwvN2toOC9wQkFmUUlRWUhWanRIUXdVREVQVzNLQ3B3QVhYODhEZ2VZdzRKY1dlRnVBMEpQMWUvQm1CUVdJVU5Bd1pnVUZTSURnT2dBVnhlSDZQSEFoUXlKeUFpQXdJR21JTm1vbUlEQlk1NHBXWXlQVWxsSmphWVdDR1d4UW9CQXhQNzNnTUZPMWsvU1Z0S016Z0RBcTFKWUFKb1RoVk5Yd0lDWmxRQUF3RUdCRWNEVmdhVkFBTUFEZ0FaQUU0QXNBMHZzQmZRc0JjdnNnY0pDaXRZSWRnYjlGbXdBdEN3QWkrd0FOQ3dBQzlBRHc4QUh3QXZBRDhBVHdCZkFHOEFCMTJ3QWhDd0E5QVpzQU12R0xBTkVMSVJDUW9yV0NIWUcvUlpNREVCRndVbkJ6UTJNeklXRlJRR0lpWTNGak15TmpjMkppTWlCZ0poOWY3d3BwcHVUVXhpYkpobFlRTkFKRG9HQkNRZUpqY0dsUUhCQWVaUGEyaEVUV2hpUjFFM0pDUXhOQUFBQVFBS0FBQUVwQVNOQUFjQVA3SUJDQWtSRWprQXNBQkZXTEFHTHh1eEJoMCtXYkFBUlZpd0JDOGJzUVFQUGxtd0FFVllzQUV2RzdFQkR6NVpzQVlRc2dJQkNpdFlJZGdiOUZrd01TRWpFeUVESXhNaEE5bnVxUDRNcU8zS0E5QUR5ZnczQkkwQUFnQXovL1VDZ2dNakFCUUFJUUJuc2dnaUl4RVNPYkFJRUxBYzBBQ3dBRVZZc0Fndkc3RUlHVDVac0FCRldMQVBMeHV4RHc4K1diSUNEd2dSRWptd0FpKzJEd0lmQWk4Q0ExMndEeEN5RWdJS0sxZ2gyQnYwV2JBQ0VMSVZBZ29yV0NIWUcvUlpzQWdRc2h3Q0NpdFlJZGdiOUZrd01RRUdJeUltTnpZMkZ4WVdCd2NHQkNNbk56TVdOaWNXTnpjMkp5WWpJZ1lIQmhZQnNrdE1iWHNFQnJtQWdZc0pCUmIrL05rVkRReDNqa1E5T2d3REFndE5ORXdIQml3Qk56bUxjNEdtQWdTd2tUVFYzZ0dUQWxTc0FqWkhHQmxXVkRveFF3QURBQWovOGdLQUF5TUFGQUFnQUN3QWlySVhMUzRSRWptd0Z4Q3dFdEN3RnhDd0pOQUFzQUJGV0xBU0x4dXhFaGsrV2JBQVJWaXdDQzhic1FnUFBsbXlLZ2dTRVJJNXNDb3Z0dDhxN3lyL0tnTmR0ZzhxSHlvdktnTmR0cThxdnlyUEtnTnhzaGdDQ2l0WUlkZ2I5Rm15QXhncUVSSTVzZzBxR0JFU09iQUlFTEllQWdvcldDSFlHL1Jac0JJUXNpUUNDaXRZSWRnYjlGa3dNUUVHQmdjV0J3WUdKeVltTnpZM0pqYzJOaGNXRmdNMkppTWlCZ2NHRmpNeU5oTTJKaU1pQmdjR0ZqTXlOZ0o5QTBCR1pnUUVyNFovbGdNRG1sWUVCS2Q2ZG8vZUJUTXdNa3dIQnpZdUwwOHZCU3NtS2tFSEJpMG1La0FDU1RsWUtENXhjSDhDQW5ka2ZFODZaR3QrQWdKMC9rVW9MemdyS0RJMEFYd25LakVxSnlzeUFBQUJBQ01BQUFLN0F4VUFCZ0F5QUxBQVJWaXdCUzhic1FVWlBsbXdBRVZZc0FJdkc3RUNEejVac0FVUXNnUUNDaXRZSWRnYjlGbXlBQVFGRVJJNU1ERUJBU01CSVRjaEFxZitTYzBCdVA1Zkd3Sm1BcC85WVFKL2xnQUNBQmIvOGdKekF5UUFGQUFoQUZ1eUhTSWpFUkk1c0IwUXNBZlFBTEFBUlZpd0FDOGJzUUFaUGxtd0FFVllzQTB2RzdFTkR6NVpzQUFRc2dJQ0NpdFlJZGdiOUZteUJ3MEFFUkk1c0FjdnNoVUNDaXRZSWRnYjlGbXdEUkN5SEFJS0sxZ2gyQnYwV1RBeEFRY25KZ1lITmpNeUZnY0dCaWNtSmpjM05qWTNBeUlIQndZWEZqTXlOamMySmdKRURnZDBwVEJRWFdaNkJBUzJnNGlVQ2djWi9zbXNUVG9GQXdNS1ZqTlNCZ2N6QXlTYkFRTmJhMFdNYzN1Z0FnS3hqVVhCNEFuK1dENGtHeHBhVGpVeU93QUFBUUFLLy9JQ2tRTVZBQndBYXJJSEhSNFJFamtBc0FCRldMQUNMeHV4QWhrK1diQUFSVml3RFM4YnNRMFBQbG13QWhDeUF3SUtLMWdoMkJ2MFdiSUhBZzBSRWptd0J5K3lHZ2dLSzFnaDJCdjBXYklGQnhvUkVqbXdEUkN5RkFJS0sxZ2gyQnYwV2JJUkZCb1JFam15SEJvVUVSSTVNREVURXlFSEpRYzJOellXQndZR0p5WW1KeGNXRmpjMk5qYzJKaWNpQnpoNEFlRWIvcmszT0VOdGd3UUV1SUo0bXdTd0JETXZQRWdJQnpZMVFUVUJnd0dTbGdHWEdRSUNoSFIrbmdJQ2dtWUJMeVFCQVVrNU5UOEJKd0FBQXYveEFBQUNlZ01XQUFvQURnQkpBTEFBUlZpd0NTOGJzUWtaUGxtd0FFVllzQVF2RzdFRUR6NVpzZ0VKQkJFU09iQUJMN0lDQWdvcldDSFlHL1Jac0FiUXNBRVFzQXZRc2dnTEJoRVNPYklOQ1FRUkVqa3dNUUUzQnlNSEl6Y2hOd0UzQVRNM0J3SVdaQnhjSExnZS9xVU5BYkM2L2xPcU14SUJPUUdYbzZPRkFld0MvaVQxR0FBQUFmLzAvL01DaFFNa0FDUUFiN0lDSlNZUkVqa0FzQUJGV0xBTkx4dXhEUmsrV2JBQVJWaXdHQzhic1JnUFBsbXlBUmdORVJJNWZMQUJMeGl3RFJDeUJ3SUtLMWdoMkJ2MFdiSUpBUWNSRWptd0FSQ3lJd0lLSzFnaDJCdjBXYklUSXdFUkVqbXdHQkN5SGdJS0sxZ2gyQnYwV2JJYkhpTVJFamt3TVJNek5qWTNOaWNuSmdjSE5qWVhGaFlIQmdZSEZnY0dCaWNtSmpVWEZoY3lOamMySnlQbVV6MU5Cd2xLRjEwY3VnbW1mWUdaQlFOSlVuWUVBN3lMZlpteEJHbzJVd2NOZUZ3QjBnSTRMa01OQWdKTUFXbDZBZ04zWWp0WEppbUJiNElDQW9OdEFWa0NPQzlaQlFBQUFmL2pBQUFDZmdNa0FCY0FXYklJR0JrUkVqa0FzQUJGV0xBUEx4dXhEeGsrV2JBQVJWaXdBQzhic1FBUFBsbXlGZ0lLSzFnaDJCdjBXYklDRmdBUkVqbXlBdzhBRVJJNXNBOFFzZ2dDQ2l0WUlkZ2I5Rm15REFBUEVSSTVzaFVBRHhFU09UQXhJU0UzQVRZM05pWW5JZ1lIQnpZMkZ4WVdCd1lQQWdVQ052MnRHQUZXWVF3SEt5azZRd3kyQ3ErQ2Y1SUZCWlpQblFGZmh3RVpVME1wTHdGSE5BRjVtQUlDZzJoK2R6eHVBZ0FCQUcwQUFBSU5BeE1BQmdBeEFMQUFSVml3QlM4YnNRVVpQbG13QUVWWXNBRXZHN0VCRHo1WnNBVVFzQVRRc0FRdnNnTUNDaXRZSWRnYjlGa3dNU0VqRXdjM0pUTUJpN1ZqekJzQmJoY0NOaStaY3dBQ0FCZi84QUtNQXlVQURRQVpBRWF5RVJvYkVSSTVzQkVRc0FmUUFMQUFSVml3Qnk4YnNRY1pQbG13QUVWWXNBQXZHN0VBRHo1WnNBY1FzaEVDQ2l0WUlkZ2I5Rm13QUJDeUZ3SUtLMWdoMkJ2MFdUQXhCU1ltTnpjMk5oY1dGZ2NIQmdZVE56UW5KZzhDRkJjV053RWxoSW9MRUJPeWlJU0pDdzhTc1IwQ1ZuWVhGZ0paZGhjTUJMQ1dqNml3QkFTeWxvK21zQUh6TjI4REE3V3dNRzhEQjhNQUFBSC8yUUFBQkFjRWpRQU1BRXV5QUEwT0VSSTVBTEFBUlZpd0NDOGJzUWdkUGxtd0FFVllzQU12RzdFRER6NVpzZ0VCQ2l0WUlkZ2I5Rm15QlFFREVSSTVzQWdRc2dvQkNpdFlJZGdiOUZteUJ3b0lFUkk1TURFQkFTRUhJVGNCQXpjaEJ5RVRBbnYrc3dKV0kveDRIUUdDN1JrRFl5UDl3OVVDUlA2QXhLUUJ0d0dtak1UK2tBQURBRU1BQUFVM0JJNEFFUUFYQUIwQWJMSVFIaDhSRWptd0VCQ3dGZEN3RUJDd0c5QUFzQUJGV0xBUUx4dXhFQjArV2JBQVJWaXdCeThic1FjUFBsbXlEeEFIRVJJNXNBOHZzQURRc2dZSEVCRVNPYkFHTDdBSjBMSVVBUW9yV0NIWUcvUlpzQThRc2hVQkNpdFlJZGdiOUZtd0d0Q3dGQkN3RzlBd01RRVdGZ2NHQUFjSEl6Y21KamMySkRjM0Z3RUdGeE1HQmdVMkp3TTJOZ04rME9rUEVQN0srUmp1R2RIb0R4QUJPUGNiN2Yya0gvSnFqNTRDN3h2dGE0dWpCQk1VOWJ6Ui93QVFiVzRUK3NIUC9BNTVBZjJ2N3lJQ0xoQ1RaK2NoL2RJUGx3QUFBUUJ3QUFBRlVRU05BQmtBWExJWUdoc1JFamtBc0FCRldMQUVMeHV4QkIwK1diQUFSVml3RUM4YnNSQWRQbG13QUVWWXNCZ3ZHN0VZSFQ1WnNBQkZXTEFLTHh1eENnOCtXYklYQkFvUkVqbXdGeSt3QU5Dd0Z4Q3lEQUVLSzFnaDJCdjBXYkFKMERBeEFUWTJOeE16QXdZQUJ3TWpFeVlDTnhNekF3WUhCaFlYRXpNREFYcVpIRFB1TlNuKzNlUTM3ampMeEI0eTdUSUlBUU5SVkg3dEFkb2F1YW9CTnY3Ri9QN2JHUDduQVJrZEFUbnZBUy8rMERrOGFZb1lBckFBQVFBQUFBQUVlQVNoQUNRQVdiSUFKU1lSRWprQXNBQkZXTEFhTHh1eEdoMCtXYkFBUlZpd0VDOGJzUkFQUGxtd0FFVllzQ012RzdFakR6NVpzaUVCQ2l0WUlkZ2I5Rm13QU5Dd0doQ3lDQUVLSzFnaDJCdjBXYkFBRUxBUDBMQWhFTEFTMERBeEpUWTJOelluSmlZbkpnWUdCeGNXRndjaE56Y21OemMrQWhjZUFnY0hBZ2MzQnlFQ1RueVZHUXdHREc5Z2FhQlVBd0VNa2g3K1BDU3BnUmNGRXFYK2s0M1VadzBGSStDMEkvNDh4eVhJc1dnOFltc0RBMjNRdHlURE9NbkVBcmY2SzVMdWZ3UURnK2lQSy83bm5BVEVBQUVBa3dLSEF6d0RNUUFEQUJFQXNBSXZzZ0VCQ2l0WUlkZ2I5Rmt3TVFFaE55RURIdjExSGdLTEFvZXFBQUFCQUl3QUFBWWVCSTBBREFCWkFMQUFSVml3QVM4YnNRRWRQbG13QUVWWXNBZ3ZHN0VJSFQ1WnNBQkZXTEFMTHh1eEN4MCtXYkFBUlZpd0F5OGJzUU1QUGxtd0FFVllzQVl2RzdFR0R6NVpzZ0FCQXhFU09iSUZBUU1SRWpteUNnRURFUkk1TURFQkFUTUJJd01CSXdNekV3RXpBL0lCUU96K0pPVkEvcHptUitBVUFXZlJBUzREWC90ekF6Nzh3Z1NOL0tFRFh3QUJBSEFBQUFTNEJJNEFDQUF4QUxBQVJWaXdBeThic1FNZFBsbXdBRVZZc0Fjdkc3RUhIVDVac0FCRldMQUZMeHV4QlE4K1diSUJBd1VSRWprd01RRVhOd0VoQVNNRE53SGtCU01CcUFFRS9Zbnc0ZW9CT0VwVEEwejdjd1NOQVFBQkFEbi82d1JxQkkwQUVRQThzZzRTRXhFU09RQ3dBRVZZc0FBdkc3RUFIVDVac0FCRldMQUlMeHV4Q0IwK1diQUFSVml3QkM4YnNRUVBQbG15RFFFS0sxZ2gyQnYwV1RBeEFRTUdCQ2NtSmpjVE13TUdGaGNXTmpjVEJHcUFHLzdsMHNuZ0ZJSHNnZ3RiWjJ1T0VvTUVqZjBCd3VFRUJPVzFBd0Q4LzJWeUF3UnZhUU1IQUFFQVlnQUFCRm9FalFBSEFDNEFzQUJGV0xBR0x4dXhCaDArV2JBQVJWaXdBaThic1FJUFBsbXdCaEN5QUFFS0sxZ2gyQnYwV2JBRTBEQXhBU0VESXhNaE55RUVOLzZLcU8yby9vNGpBOVVEeWZ3M0E4bkVBQUFCQUE3LzdRUC9CSjhBSmdCdHNoRW5LQkVTT1FDd0FFVllzQWt2RzdFSkhUNVpzQUJGV0xBY0x4dXhIQTgrV2JJQ0hBa1JFam15REFrY0VSSTVzZ3dNQVYyd0NSQ3lFQUVLSzFnaDJCdjBXYkFDRUxJVkFRb3JXQ0hZRy9SWnNpQUpIQkVTT2JJRElBRmRzQndRc2lRQkNpdFlJZGdiOUZrd01RRTJMd0ltTnpZa0Z4WVdCeWMySmljaUJnY0dCQmNXQnc0Q0p5WW5KamNYQmhZek1qWUN1eEdQZGtmOURRa0JDNys4NEFMckEyZFVYWHNNRVFFOVJzUUtCMy9ZZ0o1eXBnVHNCVzF1WVhzQk9Xb3ZKQnBrMUp1OEFnWENvZ0ZXVmdGUVEyRmRKV2ZHYkpkUEF3SkhhTWdCWFdKTkFBQUNBQW9BQUFRV0JJMEFEUUFWQUY2eUFCWVhFUkk1c0EvUUFMQUFSVml3QkM4YnNRUWRQbG13QUVWWXNBSXZHN0VDRHo1WnNBQkZXTEFNTHh1eERBOCtXYklQQkFJUkVqbXdEeSt5QUFFS0sxZ2gyQnYwV2JJS0FBOFJFam13QkJDeUZRRUtLMWdoMkJ2MFdUQXhBU01ESXhNRkZoWUhCZ1VURlNNQkZ6WTJOelluSndJZjNrcnR5Z0dzeGRFS0QvOEF1ZnorcU1Ob2hnd1d1dHdCcWY1WEJJMEJCYmViOEdIK0tRMENhd0lDWUZXZkNRRUFBQUlBTi84d0JHQUVvd0FUQUNJQVJySURJeVFSRWptd0F4Q3dIOUFBc0FCRldMQU5MeHV4RFIwK1diQUFSVml3QlM4YnNRVVBQbG13RFJDeUZ3RUtLMWdoMkJ2MFdiQUZFTEllQVFvcldDSFlHL1JaTURFbEZ3Y25CaU1tSmdJM054SUFGeFlXRWdjSEFnTW1KaWNtQWdjVkZoWVhGalkzTmdNcXI2WGRPaWlSejE0UkF5QUJTZTJUejEwUkJ5NnlCMnhpbWI4S0JXeGlnTFFmRmt5ZWZzZ0hBcFVCQnA0YkFSRUJTd1lFa3Y3NW9Ucit2d0lDYjRBRUJ2Nzg1a2h4aGdRRnQ2cDNBQUlBQ2dBQUJEWUVqUUFLQUJNQVRiSUVGQlVSRWptd0JCQ3dETkFBc0FCRldMQURMeHV4QXgwK1diQUFSVml3QVM4YnNRRVBQbG15Q3dFREVSSTVzQXN2c2dBQkNpdFlJZGdiOUZtd0F4Q3lFZ0VLSzFnaDJCdjBXVEF4QVFNakV3VVdGZ2NHQkNNbkZ6STJOelltSnljQlBrZnR5Z0hJdk40TEN2N3QxOWZkYTR3TUMxeFkrQUdaL21jRWpRRUUwS1d2ek1VQllGVlNZUVFCQUFJQU92L3FCR01Fb1FBUUFDQUFSckllSVNJUkVqbXdIaEN3Q05BQXNBQkZXTEFKTHh1eENSMCtXYkFBUlZpd0FDOGJzUUFQUGxtd0NSQ3lGZ0VLSzFnaDJCdjBXYkFBRUxJZEFRb3JXQ0hZRy9SWk1ERUZKaVlDTnpjMkVqWVhGaFlTQndjQ0FCTTJKeVltSnlZQ0J4Y1dGaGNXTmpjQis1UFJYUkVKR0tYOG1KUE9YUkVESVA2NWZnWURCV3RpbXNBSkFRVnRZWWU0R1JBRWxRRURuVU9sQVFXTEJBU1MvdnVjSFA3cC9yY0NmajFBYm9JRUJ2NzY1VWh4aFFRRnpyOEFBUUFLQUFBRXFBU05BQWtBUlFDd0FFVllzQVV2RzdFRkhUNVpzQUJGV0xBSUx4dXhDQjArV2JBQVJWaXdBQzhic1FBUFBsbXdBRVZZc0FNdkc3RUREejVac2dJRkFCRVNPYklIQlFBUkVqa3dNU0VqQVFNakV6TUJFek1EM3VUK2lZenR5dVVCZDR6c0F5WDgyd1NOL05vREpnQUJBQW9BQUFYSUJJMEFEZ0Jnc2dFUEVCRVNPUUN3QUVWWXNBQXZHN0VBSFQ1WnNBQkZXTEFDTHh1eEFoMCtXYkFBUlZpd0JDOGJzUVFQUGxtd0FFVllzQWd2RzdFSUR6NVpzQUJGV0xBTUx4dXhEQTgrV2JJQkFBUVJFam15QndBRUVSSTVzZ29BQkJFU09UQXhBUk1CSVFNakV4TUJJd3NDSXhNQ0E3UUIxUUU4eSt3NWRQNGRwYjVOTmV6S0JJMzh0d05KKzNNQlNBSVgvS0VEZlAyeS90SUVqUUFBQVFBS0FBQUROQVNOQUFVQUtBQ3dBRVZZc0FRdkc3RUVIVDVac0FCRldMQUNMeHV4QWc4K1diSUFBUW9yV0NIWUcvUlpNREVsSVFjaEV6TUJHUUliSS96NXl1M0N3Z1NOQUFBQkFBb0FBQVNkQkkwQURBQkxBTEFBUlZpd0JDOGJzUVFkUGxtd0FFVllzQWd2RzdFSUhUNVpzQUJGV0xBQ0x4dXhBZzgrV2JBQVJWaXdDeThic1FzUFBsbXlCZ0lFRVJJNXNBWVFzQUhRc2dvQkJoRVNPVEF4QVFjREl4TXpBemNCSVFFQklRSFZwRHJ0eXUxWGZBR0FBVGY5NmdGUS92WUIyWXYrc2dTTi9ndCtBWGY5N1AySEFBQUIvL0wvNndPd0JJMEFEZ0F2c2dVUEVCRVNPUUN3QUVWWXNBQXZHN0VBSFQ1WnNBQkZXTEFGTHh1eEJROCtXYklMQVFvcldDSFlHL1JaTURFQk13TUdCaWNtSmpjWEJoY1dOamNDdysyR0dmZXR0Y1lHN1FtZlNtZ1BCSTM4NExQUEJBVERxZ0dyQkFKald3QUJBQmdBQUFIUEJJMEFBd0FkQUxBQVJWaXdBaThic1FJZFBsbXdBRVZZc0FBdkc3RUFEejVaTURFaEl4TXpBUVh0eSt3RWpRQUJBQW9BQUFTcEJJMEFDd0NHQUxBQVJWaXdCaThic1FZZFBsbXdBRVZZc0Fvdkc3RUtIVDVac0FCRldMQUFMeHV4QUE4K1diQUFSVml3QkM4YnNRUVBQbG15Q1FZQUVSSTVzQWt2dEs4SnZ3a0NYYkkvQ1FGeHNzOEpBWEd5UHdrQmNyTC9DUUZ4c2c4SkFYSzBid2wvQ1FKeHROOEo3d2tDWGJKZkNRRnl0QndKTEFrQ1hiSUNBUW9yV0NIWUcvUlpNREVoSXhNaEF5TVRNd01oRXpNRDMrMVMvZ1pUN2NydFZnSDdWdTBCMi80bEJJMytFUUh2QUFBQkFELy84QVJSQktNQUlBQmtzZ0loSWhFU09RQ3dBRVZZc0Fzdkc3RUxIVDVac0FCRldMQURMeHV4QXc4K1diSWZDd01SRWptd0h5K3dDeEN5RVFFS0sxZ2gyQnYwV2JJUEh4RVJFam15REE4QlhiQURFTElhQVFvcldDSFlHL1Jac0I4UXNoMEJDaXRZSWRnYjlGa3dNU1VHQlFjdUFqYzNFZ0FYRmhZWEp5WW5KZ1lIQndZWEZoWVhGamMzSXpjaEErZC8vdG82bGRSZ0VRWWZBVUh0d2QwUTVCSzloclViREFjRkNIUm1oMW9vOHlBQjNaS1VEUUVDa1ArZU53RVJBVHdHQk1tNEFid0dCYnVxV2tGQmJuc0RBanJJc1FBQkFBb0FBQVBtQkkwQUNRQkZBTEFBUlZpd0JDOGJzUVFkUGxtd0FFVllzQUl2RzdFQ0R6NVpzZ2tFQWhFU09iQUpMN0pLQ1FGZHNnQUJDaXRZSWRnYjlGbXdCQkN5QmdFS0sxZ2gyQnYwV1RBeEFTRURJeE1oQnlFRElRTXMvaDVUN2NvREVpUDkzRFFCNUFIYi9pVUVqY1QrMVFBQUFRQUtBQUFEK1FTTkFBc0FVd0N3QUVWWXNBWXZHN0VHSFQ1WnNBQkZXTEFFTHh1eEJBOCtXYklMQmdRUkVqbXdDeSt5U1FzQlhiSUFBUW9yV0NIWUcvUlpzQVFRc2dJQkNpdFlJZGdiOUZtd0JoQ3lDQUVLSzFnaDJCdjBXVEF4QVNFRElRY2hFeUVISVFNaEF6WCtHallDT3lQODJjb0RKU1A5eVM4QjZBSDQvc3JDQkkzRS92SUFBZ0FLQUFBRUdnU05BQW9BRmdCRHNnNFhHQkVTT2JBT0VMQUMwQUN3QUVWWXNBSXZHN0VDSFQ1WnNBQkZXTEFBTHh1eEFBOCtXYklOQVFvcldDSFlHL1Jac0FJUXNoWUJDaXRZSWRnYjlGa3dNVE1UQlI0Q0J3Y0dBQ0VUQXhjeU5qYzNOaWNtSmljS3lnRmlsK0ZzRUFVZC9xSCs5eCtHY0tuUEdBWUlCZ3A1YmdTTkFRU1AvWmtzL2Y3R0E4bjgrUUhCdFN4SFFHaHlCQUFBQVFBNS8rd0VTUVNqQUJ3QVRySVRIUjRSRWprQXNBQkZXTEFMTHh1eEN4MCtXYkFBUlZpd0F5OGJzUU1QUGxteUFBc0RFUkk1c2c0TEF4RVNPYkFMRUxJU0FRb3JXQ0hZRy9SWnNBTVFzaG9CQ2l0WUlkZ2I5Rmt3TVFFR0JDY3VBamMzRWdBWEZoWVhKeVltSnlZR0J3WVhGQllYRmpjRC9CeiszOVNReVZrU0JpQUJRZW5DNGdyckEyQnJoYkFhRUFGa1llTTRBWVc5M0FRQ2tQK2ZOQUVPQVVFR0JOMjlBV2R3QkFYQXRJay9jSDhFQ05vQUFBTUFDZ0FBQkFBRWpRQU9BQllBSGdDc3NoZ2ZJQkVTT2JBWUVMQUMwTEFZRUxBVzBBQ3dBRVZZc0FFdkc3RUJIVDVac0FCRldMQUFMeHV4QUE4K1diSVlBQUVSRWptd0dDK3l2eGdCY3JTdkdMOFlBbDIwYnhoL0dBSnhzdjhZQVhHeUR4Z0JjclNQR0o4WUFuS3lYeGdCY3JMUEdBRnhzajhZQVhHMEh4Z3ZHQUpkc25rWUFWMnlTUmdCWGJJV0FRb3JXQ0hZRy9SWnNnZ1dHQkVTT2JBQUVMSVJBUW9yV0NIWUcvUlpzQUVRc2g0QkNpdFlJZGdiOUZrd01UTVRCUVFYRmdjR0J4WVdCd1lHSXdNREZ6WTJOelluSnhjMk5qYzJKeWNLeWdHVUFTWlVIZ1lLejB0VUJBajMzcEEyejJWNkRCYW0xOEZmY2d3VXNzMEVqUUVJcERsVHJGY2FpRm1rc2dINy9zY0JBMUpKa2dtckFRTlBSWWdGQVFBQy81c0FBQVFGQkkwQUJ3QUtBRVlBc0FCRldMQUVMeHV4QkIwK1diQUFSVml3QWk4YnNRSVBQbG13QUVWWXNBWXZHN0VHRHo1WnNna0VBaEVTT2JBSkw3SUFBUW9yV0NIWUcvUlpzZ29FQWhFU09UQXhKU0VISXdFekV5TUJJUU1DN3Y0dWlQa0NrOXI5NXY1aUFVaFgrZmtFamZ0ekFiSUJ1QUFBQVFEckJHa0NOZ1l0QUFjQUZnQ3dBRVZZc0FBdkc3RUFJVDVac0FUUXNBUXZNREVCRndZSEJ5TTNOZ0cxZ1ZFV0ZzNFJId1l0VjMxMmVuZlhBQUFDQVFRRTBRTjZCbjRBQ3dBUEFGb0FzQU12c0FiUXNBWXZRQXNQQmg4R0x3WS9CazhHQlYyd0FOQ3dBQyt3QXhDeUNRWUtLMWdoMkJ2MFdiQUdFTEFQMExBUEw3QU0wTEFNTDBBUER3d2ZEQzhNUHd4UERGOE1id3dIWGJBUEVMQU8wQm13RGk4WU1ERUJCZ1luSmlZbkZ3WVhGamNsTXhjakEzb0l0WXlMb0FLcUJJQ0dHLzdSb2s1dEJiRm9lQU1EZUdRQ2J3SUNjODNBQUFBQ0FOd0U1d1V0QnBBQUJnQUtBRnNBc0FNdnNBWFFzQVV2c0FEUXNBQXZRQWtQQUI4QUx3QS9BQVJkc0FNUXNBTFFHYkFDTHhpeUJBTUFFUkk1c0FiUUdiQUdMeGl3QXhDd0NkQ3dDUyt3QjlDd0J5KzJEd2NmQnk4SEExMndDUkN3Q3RBWnNBb3ZHREF4QVRNWEl5Y0hJd0VYQVNNQ0lwM3d1WUt5NWdOcDZQOEFxZ1hoK28yTkFha0IvdllBQWdBVEJOb0RxQWFEQUFZQUNnQmJBTEFETDdBRTBCbXdCQzhZc0FEUUdiQUFMeGl3QXhDd0FkQ3dBUyt3QnRDd0JpOUFDUThHSHdZdkJqOEdCRjJ5QWdNR0VSSTVzQU1Rc0FqUXNBZ3ZzQWZRR2JBSEx4aXdDQkN3Q3RDd0NpKzJEd29mQ2k4S0ExMHdNUUVqSndjakpUTUZJd016QTZpN2diTGxBVWFkL29lS29zY0UybzJOK2x3QkN3QUNBTmdFNXdTVUJzc0FCZ0FWQUdnQXNBTXZzQVRRR2JBRUx4aXdBTkFac0FBdkdMQURFTEFCMExBQkw3QURFTEFGMExBRkwwQUpEd1VmQlM4RlB3VUVYYklDQXdVUkVqbXdBeEN3QjlDd0J5K3dEdEN3RGkreVB3NEJYYklJQnc0UkVqbXlEd1lLSzFnaDJCdjBXYklVQ0FjUkVqa3dNUUVqSndjbkpUTVhOemMyTnpZbkp6Y1dGZ2NHQndjRHFxZVJ5ZEVCT2Jhb0N5SmFCd2ROS2c5M2dRRURpQWtFNTZHaEFmbDBmUU1LTXk4R0Ftb0RVMGhyR1QwQUFBSUExd1RuQTZrRzBBQUdBQm9BamdDd0F5K3dCTkFac0FRdkdMQUEwQm13QUM4WXNBTVFzQUhRc0FFdnNBTVFzQVhRc0FVdlFBa1BCUjhGTHdVL0JRUmRzZ0lEQlJFU09iQUswTEFLTDBBSlB3cFBDbDhLYndvRVhiQU8wTEFPTDBBTkR3NGZEaThPUHc1UERsOE9CbDJ3Q2hDd0VOQ3dFQyt3RGhDeUZBWUtLMWdoMkJ2MFdiQUtFTElZQmdvcldDSFlHL1Jac0JRUXNCclFNREVCSXljSEl5VXpOd1lHSXlJbUpnY0dCeWMyTmpNeUZoWTNOamNEcWFXVnhkTUJTNC9tQ1ZVN0kyNGtFak1nV2dwVFBDRnpJUkk1SEFUbmpZM3QzMFJiUFFrQ0EwTVlTRm8rQ0FFRVJRQUFBZ0VFQk5BRGVnWitBQXdBRUFCYUFMQURMN0FHMExBR0wwQUxEd1lmQmk4R1B3WlBCZ1Zkc0FEUXNBQXZzQU1Rc2drR0NpdFlJZGdiOUZtd0JoQ3dEOUN3RHkrd0RkQ3dEUzlBRHc4Tkh3MHZEVDhOVHcxZkRXOE5CMTJ3RHhDd0VOQVpzQkF2R0RBeEFRWUdKeVltSnhjR0Z4WTJOeWNYQnlNRGVnaTFqSXVnQXFvRWdEcFpEa0REeG84RnNHaDRBd040WkFKdkFnRTNPODRCdmdBQ0FRVUUwZ051QndnQURBQWJBRjBBc0FNdnNBYlFzQVl2UUFzUEJoOEdMd1kvQms4R0JWMndBTkN3QUMrd0F4Q3lDUVlLSzFnaDJCdjBXYkFHRUxBYjBMQWJMN0FVMExBVUw3US9GRThVQWwyeURoc1VFUkk1c2hVTUNpdFlJZGdiOUZteUdnNGJFUkk1TURFQkJnWW5KaVluRndZWEZqWTNKemMzTmpjMkp5YzNGeFlWQmdjSEEyNEpzWWlEb2dLbUJINDZXQTdRQ2pCWENRbGZLZzFJMkFPWENRV3hhM1FDQW5abUFtd0NBVFU2R1hZQ0JqQXJCQUZoQkJONFhSZzhBQUlCQkFUTkE0SUcyd0FMQUNBQWRnQ3dBeSt3QnRDd0JpOUFDdzhHSHdZdkJqOEdUd1lGWGJBQTBMQUFMN0FERUxJSkJnb3JXQ0hZRy9SWnNBQVFzQkRRc0JBdnNCUFFzQk12UUFzUEV4OFRMeE0vRTA4VEJWMndFQkN3RmRDd0ZTK3dFeEN5R1FnS0sxZ2gyQnYwV2JBUUVMSWVDQW9yV0NIWUcvUlpzQmtRc0NEUU1ERUJCZ1luSmlZbkZ3WVhGamNUQmdjR0J5SW1Cd1lISnpZMk16SVdGeFkzTmpjRGNRaXlpNFdoQXFnRWZZVWJ2UW9zTGtZb2lTZzdIMllKWGtZV0p5OUdLRHdmQmJCcmVBSUNlMllDYmdJQ2NnRVJWREl6QWs0REExUWJVR3NOR2ljREExTUFBQUgvcEFBQUJJQUVqUUFMQUZNQXNBQkZXTEFCTHh1eEFSMCtXYkFBUlZpd0NpOGJzUW9kUGxtd0FFVllzQVF2RzdFRUR6NVpzQUJGV0xBSEx4dXhCdzgrV2JJQUFRUVJFam15QmdFRUVSSTVzZ01BQmhFU09iSUpCZ0FSRWprd01RRUJJUUVCSVFNQklRRUJJUUlyQVRFQkpQNGxBUlgrOTdEK3gvN2NBZWIrL0FFRUF2c0JrdjJ5L2NFQm1QNW9BbGNDTmdBQkFHMEFBQVNBQkkwQUNBQXhBTEFBUlZpd0FTOGJzUUVkUGxtd0FFVllzQWN2RzdFSEhUNVpzQUJGV0xBRUx4dXhCQTgrV2JJQUFRUVJFamt3TVFFQklRRURJeE1CTXdJTUFXSUJFdjNjUk94TC92YjNBbndDRWZ6Ni9ua0JyZ0xmQUFFQU9mL3NCRWtFb3dBZUFJU3lIQjhnRVJJNUFMQUFSVml3Q3k4YnNRc2RQbG13QUVWWXNBTXZHN0VERHo1WnNnQUxBeEVTT2JJT0N3TVJFam13Q3hDeUVnRUtLMWdoMkJ2MFdiSVZDd01SRWpsOHNCVXZHTEx3RlFGZHNnQVZBWEcwTUJWQUZRSmR0SUFWa0JVQ2NiUmdGWEFWQWwyeUZnRUtLMWdoMkJ2MFdiQURFTEljQVFvcldDSFlHL1JaTURFQkJnUW5MZ0kzTnhJQUZ4WVdGeWNtSmljbUF5RUhJUVlYRmhZWEZqY0QvQnorMzlTUXlWa1NCaUFCUWVyQjRncnJBMkJyN1Z3QmZTTCtrZ1lGQjJWWDR6a0JoYjNjQkFLUS81ODBBUTRCUVFZRTNiMEJaM0FFQi83SHhEZzJXMmdEQ05vQUFBRUFZdi9yQlEwRWpRQVhBR3V5QlJnWkVSSTVBTEFBUlZpd0FpOGJzUUlkUGxtd0FFVllzQll2RzdFV0R6NVpzQUJGV0xBT0x4dXhEZzgrV2JBQ0VMSUFBUW9yV0NIWUcvUlpzQVRRc0FYUXNnZ0NGaEVTT2JBSUw3QU9FTElQQndvcldDSFlHL1Jac0FnUXNoTUJDaXRZSWRnYjlGa3dNUUVoTnlFSElRYzJGeFlXQndZRUJ6YzJOelluSmdjREl3R3kvckFqQTVJai9xd3loSWpBMHd3Ty92YnlGUEFaR3M1bm4yUHRBOG5FeE84cEF3TFZ1YnpIQXIwRndjb0dBeWY5NWdBQkFGVUFBQVJpQmJBQUJnQXlBTEFBUlZpd0JTOGJzUVVmUGxtd0FFVllzQUV2RzdFQkR6NVpzQVVRc2dNQkNpdFlJZGdiOUZteUFBTUZFUkk1TURFQkFTTUJJVGNoQkVqOUIvb0M5LzFlSWdPV0JSejY1QVR0d3dBQ0FDcitVQVJNQkZFQUhBQXFBSHl5QkNzc0VSSTVzQVFRc0NmUUFMQUFSVml3Qnk4YnNRY2JQbG13QUVWWXNBUXZHN0VFR3o1WnNBQkZXTEFNTHh1eERCRStXYkFBUlZpd0ZpOGJzUllQUGxteUJnY1dFUkk1c0F3UXNoRUJDaXRZSWRnYjlGbXlGQWNXRVJJNXNCWVFzaUlCQ2l0WUlkZ2I5Rm13QkJDeUp3RUtLMWdoMkJ2MFdUQXhFellTTmhjV0Z6Y3pBd1lBSnlZbk54WVhCQk0zQmljdUFpY21OeGNHRnhZV0Z4WTNFeVluSmdZSFJCT1UxNEcyV2lyUHFpTCsxK1N1bTBKempBRUZTZ2Qrb0dXZFhBWUVCdTRHQkFWaVZZcGtWVFNHZnF3WEFoK2pBUXlEQXdTRGMvd1o4Zjd1QkFSWnNrMENCd0U4RzN3RUFXakRkajg5QVRVN1ozMERCWVVCMjNjRUE4YW1BQUFCL3dmK1JnRS9BTTBBREFBc0FMQU5MN0FBUlZpd0JDOGJzUVFSUGxteUNRRUtLMWdoMkJ2MFdiQU5FTElNQlFvcldDSFlHL1JaTURFbEF3WUdKeVluTnhZek1qY1RBVDhxR05DaVJFQWlPU1orSUN2Ti92UzB4d0lDRXNVUHJ3RU1BQUgvc3Y2YUFQNEF0UUFEQUJJQXNBUXZzQUxRc0FJdnNBSFFzQUV2TURFVEl4TXpvTzVlN3Y2YUFodi8vLy9XQUFBRUp3WWpBaVlFcVFBQUFRWUJhRXNlQUJNQXNBQkZXTEFITHh1eEJ4MCtXYkFQM0RBeEFBQUMvOEgvL3diRUJJMEFHQUFoQUd1eUJTSWpFUkk1c0FVUXNCclFBTEFBUlZpd0V5OGJzUk1kUGxtd0FFVllzQU12RzdFRER6NVpzQUJGV0xBTEx4dXhDdzgrV2JBVEVMSUZBUW9yV0NIWUcvUlpzaFlUQXhFU09iQVdMN0FERUxJYkFRb3JXQ0hZRy9SWnNCWVFzaUVCQ2l0WUlkZ2I5Rmt3TVFFR0JDTWhFeUVEQndJR0p5TTNOelkyTnpjVElRTVhGaFlsQXhjMk5qYzJKaWNHdVF2KzdkcitIcW4rc0VRWk8rZTZQaGdpWm53ZkQyZ0RKRWJIeHViOWEwSGNabzhOQzFoWkFZZXYyQVBKL3JaLy91enRBY3dCQnFUQVhBSDYvbXdCQWNvSS9vNEJBbXRhVEZvRkFBQUNBQW9BQUFiSEJJMEFFZ0FiQUlHeUFod2RFUkk1c0FJUXNCVFFBTEFBUlZpd0FpOGJzUUlkUGxtd0FFVllzQkV2RzdFUkhUNVpzQUJGV0xBTEx4dXhDdzgrV2JBQVJWaXdEeThic1E4UFBsbXlBUUlMRVJJNXNBRXZzQUlRc1JzS0sxallHOXhac2dVQkNpdFlJZGdiOUZtd0FSQ3lEUUVLSzFnaDJCdjBXYkFMRUxJVkFRb3JXQ0hZRy9SWk1ERUJJUk16QXhjV0ZnY0dCQ01oRXlFREl4TXpBUU1YTmpZM05pWW5BV3NCN0ZidVI4bkY1UXNML3UzWS9oMVQvaFJUN2NydEFuSkIzR2lORFF0WVdRS2VBZS8rYkFFQnlxYXYyQUhiL2lVRWpmMm8vbzRCQW10YVRGb0ZBQUVBWWdBQUJRNEVqUUFXQUZxeUJSY1lFUkk1QUxBQVJWaXdBaThic1FJZFBsbXdBRVZZc0F3dkc3RU1EejVac0FCRldMQVZMeHV4RlE4K1diQUNFTElBQVFvcldDSFlHL1Jac0FUUXNBWFFzZ2dDREJFU09iQUlMN0lTQVFvcldDSFlHL1JaTURFQklUY2hCeUVITmhjV0ZnY0RJeE0ySnlZbkpnY0RJd0d5L3JBakE1SWovcXd5Z1lySnpCUTQ3VGtHQlJPYmJKdGo3UVBKeE1UdUp3SUU0TUwrcGdGYk5DbC9CZ01tL2VZQUFRQUsvcDhFb3dTTkFBc0FUN0lEREEwUkVqa0FzQUl2c0FCRldMQUdMeHV4QmgwK1diQUFSVml3Q2k4YnNRb2RQbG13QUVWWXNBQXZHN0VBRHo1WnNBQkZXTEFFTHh1eEJBOCtXYklJQVFvcldDSFlHL1Jac0FuUU1ERWhJUU1qRXlFVE13TWhFek1EMlA2V1B1MCsvb25LN2FnQjlLanUvcDhCWVFTTi9EWUR5Z0FBQWdBTC8vd0Q5d1NOQUEwQUZnQmVzaFFYR0JFU09iQVVFTEFKMEFDd0FFVllzQXd2RzdFTUhUNVpzQUJGV0xBTEx4dXhDdzgrV2JBTUVMSUFBUW9yV0NIWUcvUlpzZ01NQ3hFU09iQURMN0FMRUxJT0FRb3JXQ0hZRy9SWnNBTVFzaFFCQ2l0WUlkZ2I5Rmt3TVFFaEJ4Y1dGZ2NPQWljbEV5RUJOalkzTkNZbkp3TUQxZjNKSi9uQXhSVVFrdWVGL2puTEF5SCtHV2g4QW1sYzNENER5K0FCQmNPaWQ3RmNBd0VFamZ3MUFtWlhURmNDQWY2Y0FBTC9nLzZ2Qk1BRWpRQU9BQlFBVnJJU0ZSWVJFam13RWhDd0NkQUFzQUJGV0xBRUx4dXhCQjArV2JBQVJWaXdDaThic1FvUFBsbXlBQUVLSzFnaDJCdjBXYkVNQ2l0WTJCdmNXYkFJMExJUEJBb1JFam13QkJDeUVRRUtLMWdoMkJ2MFdUQXhOelkyTnhNaEF6TURJeE1oQXlNVEJTVVRJUU1DTVcrREpGSURKNm1TWE8wNy9SQTc3VjBCWndIamh2NnVRRUhBWmYzRkFhYjhOdjNzQVZIK3J3SVRBd1FEQnY2NC90d0FBQUgvcVFBQUJqc0VqUUFWQUo2eUFSWVhFUkk1QUxBQVJWaXdFUzhic1JFZFBsbXdBRVZZc0E0dkc3RU9IVDVac0FCRldMQUtMeHV4Q2gwK1diQUFSVml3Qmk4YnNRWVBQbG13QUVWWXNBTXZHN0VERHo1WnNBQkZXTEFWTHh1eEZROCtXYklNQXc0UkVqbXdEQyt5UHd3QmNiSmZEQUZ5c3M4TUFYRzByd3kvREFKZHRJOE1ud3dDY3JBUDBMSUJBUW9yV0NIWUcvUlpzQVRRc2dnUEJCRVNPYklUQVE4UkVqa3dNUUVqQXlNVEl3RWhBUU1oRXpNVE13TXpBU0VCRXlFRHltWlI3VkpWL3JyK3pBSER5d0VKbkZkVDdsUkpBVVFCSlA1aDV2N3VBZFgrS3dIVi9pc0NZUUlzL2lBQjRQNGdBZUQ5dy8yd0FBQUJBQXovN2dQdkJLQUFKZ0JCc2lBbktCRVNPUUN3QUMrd0FFVllzQmd2RzdFWUR6NVpzZ2tBR0JFU09iSU1BQmdSRWpteUh3RUtLMWdoMkJ2MFdiQUFFTElrQndvcldDSFlHL1JaTURFQk1qWTNOaVlpQmdjSE5qWVhGaFlIQmdjV0ZnY09BaWNtSmpjekZoWXpGalkzTmljbk53SUZab0FLQ21Xd2FnL3VEUDNDdzk0SUN1bFJXZ1FGZk95THVkNEU2Z0pjVm1xUURCWGNoeUFDcWxOTlJFeEZQZ0dZc2dJRHBvMjFaU09HV1dxZFZ3SUN1WnhIVEFOWlQ2QUJBYkFBQUFFQUN3QUFCSzRFalFBSkFFeXlBQW9MRVJJNUFMQUFSVml3QUM4YnNRQWRQbG13QUVWWXNBZ3ZHN0VJSFQ1WnNBQkZXTEFGTHh1eEJROCtXYkFBUlZpd0F5OGJzUU1QUGxteUJBTUFFUkk1c2drRkNCRVNPVEF4QVRNREl4TUJJeE16QXdQTDQ4dnFqLzFtNDh2cWp3U04rM01ETWZ6UEJJMzgwZ0FCQUFvQUFBUnRCSTBBREFCM3NnQU5EaEVTT1FDd0FFVllzQWd2RzdFSUhUNVpzQUJGV0xBRkx4dXhCUjArV2JBQVJWaXdBaThic1FJUFBsbXdBRVZZc0F3dkc3RU1EejVac2dZQ0JSRVNPYkFHTDdJL0JnRnhzbDhHQVhLeXp3WUJjYlN2QnI4R0FsMjBqd2FmQmdKeXNnRUJDaXRZSWRnYjlGbXlDZ0VHRVJJNU1ERUJJd01qRXpNRE13RWhBUUVoQWJadFV1M0s3VlJYQVlNQkp2NFFBVFArNlFIVi9pc0VqZjRnQWVEOXVmMjZBQUFCLzhFQUFBU1hCSTBBRVFBL3NnUVNFeEVTT1FDd0FFVllzQUF2RzdFQUhUNVpzQUJGV0xBQkx4dXhBUTgrV2JBQVJWaXdDUzhic1FrUFBsbXdBQkN5QXdFS0sxZ2gyQnYwV1RBeEFRTWpFeUVEQndJR0J5TTNOelkyTnpjVEJKZks3cW4rc1VZWlBPSzBSeGdrWjNzY0Qya0VqZnR6QThuK3RuMys3ZTBDekFNS3FiaFpBZm9BQVFCeS8rZ0VnZ1NPQUE4QVRySUJFQkVSRWprQXNBY3ZzQUJGV0xBUEx4dXhEeDArV2JBQVJWaXdDQzhic1FnUFBsbXlBUThJRVJJNXNnSVBDQkVTT2JBQ0w3QUlFTEVLQ2l0WTJCdmNXYklPRHdnUkVqbXdEaTh3TVFFWEFTRUJCZ1lqSnpjWE5qWTNBemNDRUFjQlhBRVAvZDFjc25SckVWSTZUaVA2OVFKS09BSjcvSFNqZGdYRUJnRTZLd044QVFBQkFBcityd1M0QkkwQUN3QkNzZ2tNRFJFU09RQ3dBeSt3QUVWWXNBY3ZHN0VISFQ1WnNBQkZXTEFLTHh1eENoMCtXYkFBUlZpd0JTOGJzUVVQUGxteUNBRUtLMWdoMkJ2MFdiQUEwREF4SlRNREl4TWhFek1ESVJNekEvdTljTmc3L0YvSzdhZ0I5S2p2dy8zc0FWRUVqZncyQThvQUFRQmRBQUFFWkFTTkFCSUFScklPRXhRUkVqa0FzQUJGV0xBSUx4dXhDQjArV2JBQVJWaXdFUzhic1JFZFBsbXdBRVZZc0FBdkc3RUFEejVac2c0SUFCRVNPYkFPTDdJRUFRb3JXQ0hZRy9SWk1ERWhJeE1HSnlZbU54TXpBd1lYRmhjV054TXpBNXJ1VW45LzBOTVZPTzQ2QmdZVG0yK1laTzBCcXljQ0F1REVBV0grbmpRcGdBTURKUUlnQUFFQUNnQUFCa01FalFBTEFFR3lCd3dORVJJNUFMQUFSVml3QXk4YnNRTWRQbG13QUVWWXNBRXZHN0VCRHo1WnNnUUJDaXRZSWRnYjlGbXdBeEN3QnRDd0JCQ3dDTkN3QmhDd0N0QXdNU0VoRXpNRElSTXpBeUVUTXdWNCtwTEs3YWdCVTZqdXFRRlVxTzRFamZ3MkE4cjhOZ1BLQUFBQkFBcityd1pZQkkwQUR3QkJzZ3NRRVJFU09RQ3dBeSt3QUVWWXNBY3ZHN0VISFQ1WnNBQkZXTEFFTHh1eEJBOCtXYklBQVFvcldDSFlHL1Jac0EzUXNBblFzQWNRc0FyUXNBN1FNREVsTXdNakV5RVRNd01oRXpNRElSTXpCWnU5Y05nNytyL0s3YWdCVTZqdXFRRlVxTy9EL2V3QlVRU04vRFlEeXZ3MkE4b0FBZ0JLLy9zRTR3U05BQXdBRlFCZXNnc1dGeEVTT2JBTEVMQVUwQUN3QUVWWXNBb3ZHN0VLSFQ1WnNBQkZXTEFITHh1eEJ3OCtXYklBQ2djUkVqbXdBQyt3Q2hDeUNBRUtLMWdoMkJ2MFdiQUhFTElOQVFvcldDSFlHL1Jac0FBUXNoTUJDaXRZSWRnYjlGa3dNUUVXRmdjR0JDY2xFeUUzSVFNVE5qWTNOaVluSndNRFhydktGaGorMWN6K09LaityQ01DUGthWFpYOENBbTFZMjBFQytBWEtvclBaQkFFRHljVCtiUDNKQW10WlRsd0NBZjZPLy84QUMvLzdCZUVFalFBbUJCRUFBQUFIQStRRUVnQUFBQUlBQy8vN0EvY0VqUUFLQUJNQVQ3SVJGQlVSRWptd0VSQ3dBTkFBc0FCRldMQUlMeHV4Q0IwK1diQUFSVml3Qnk4YnNRY1BQbG13Q0JDeEVRb3JXTmdiM0ZteUFBRUtLMWdoMkJ2MFdiQUhFTElMQVFvcldDSFlHL1JaTURFQkZoWUhCZ1FuSlJNekF4TTJOamMySmljbkF3Snl1OG9XR1A3VnkvNDR5K3BIbDJPQ0FnSnNXdHRCQXZnRnlhT3oyUVFCQkkzK2JQM0pBbXRaVFYwQ0FmNk9BQUVBRS8vcUJCNEVvUUFkQUlHeUN4NGZFUkk1QUxBQVJWaXdFaThic1JJZFBsbXdBRVZZc0Jvdkc3RWFEejVac2dBYUVoRVNPYklEQVFvcldDSFlHL1Jac2dnU0doRVNPWHl3Q0M4WXRHQUljQWdDWGJRd0NFQUlBbDJ5OEFnQlhiSUFDQUZ4dElBSWtBZ0NjYklGQVFvcldDSFlHL1Jac0JJUXNnc0JDaXRZSWRnYjlGbXlEeElhRVJJNU1ERVRGaFlYRmhNaE55RTJKaWNtQmdjSE5pUVhGaElQQWdJQUp5WW1KLzBGWld6dVZ2NkNJd0Z1RFdsdGNZd2E3aUFCSU5ESzZBZ0VCaUgrdytmRDZRZ0JoV3BuQXdjQk84U1BvQU1FYzJvQnZ1SUVBLzdyNHpjei92RCt3Z1lFMkxrQUFBSUFDdi9yQmlJRW9nQVdBQ01BbHJJQkpDVVJFam13QVJDd0g5QUFzQUJGV0xBT0x4dXhEaDArV2JBQVJWaXdDUzhic1FrZFBsbXdBRVZZc0FZdkc3RUdEejVac0FCRldMQUFMeHV4QUE4K1diSUtCZ2tSRWpsOHNBb3ZHTFJnQ25BS0FsMnk4QW9CWGJJQUNnRnh0REFLUUFvQ1hiU0FDcEFLQW5HeUJRRUtLMWdoMkJ2MFdiQU9FTElhQVFvcldDSFlHL1Jac0FBUXNpQUJDaXRZSWRnYjlGa3dNUVV1QWpjSEF5TVRNd016TmdBWEZoWVNCd2NHQWdRVE5DWW5KZ0lIQmhZWEZoSTNBN3FIejJjTHZsVHN5dXhWckVVQk5kS1V6bDBSQkJXZy92L1RhMm1keEFJRGEyeWJ2d2dSQklQa2lRSCtIZ1NOL2hqMEFRa0ZCSlArL1o0a3N2N3dsQUxTaUpBRUJ2N3Y5NGFiQkFZQkRPNEFBQUwvMGdBQUJGWUVqZ0FOQUJZQVliSVJGeGdSRWptd0VSQ3dETkFBc0FCRldMQUhMeHV4QngwK1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNBa3ZHN0VKRHo1WnNoSUhBQkVTT2JBU0w3SUxBUW9yV0NIWUcvUlpzZ0VMRWhFU09iQUhFTElUQVFvcldDSFlHL1JaTURFakFTWW1OellrTXdVREl4TWpBUk1HRmhjWEV5Y2lCaTRCY2xKU0Jna0JCODhCMGNydVR1TCsxTEVMVlZIak9zbGZnd0lQSzVGZXA3NEIrM01CdlA1RUF4dEtUd0lCQVVvQld3QUFBZi8xQUFBRVJBU05BQTBBVUxJQkRnOFJFamtBc0FCRldMQUlMeHV4Q0IwK1diQUFSVml3QWk4YnNRSVBQbG15QndJSUVSSTVzQWN2c2dRSENpdFlJZGdiOUZtd0FkQ3dDQkN5Q3dFS0sxZ2gyQnYwV2JBSEVMQU0wREF4QVNNREl4TWpOek1USVFjaEF6TUNnTTlWN1ZUT0hzMVpBd3NqL2VNMjBBSG0vaG9CNXFvQi9jVCt4d0FBQWYrcC9xOEdPd1NOQUJrQXFySUlHaHNSRWprQXNBTXZzQUJGV0xBUkx4dXhFUjArV2JBQVJWaXdCUzhic1FVUFBsbXdBRVZZc0Frdkc3RUpEejVac0FCRldMQU5MeHV4RFE4K1diSVhDUkVSRWptd0Z5K3lQeGNCY2JKZkZ3RnlzczhYQVhHMHJ4ZS9Gd0pkdEk4WG54Y0NjcklIQVFvcldDSFlHL1Jac2dBSEZ4RVNPYkFGRUxJQkFRb3JXQ0hZRy9SWnNBY1FzQXZRc2c4WEJ4RVNPYkFYRUxBUzBMQVJFTEFVMExBVUw3QVkwTEFZTHpBeEFSTXpBeU1USXdNakF5TVRJd0VoQVFNaEV6TVRNd016QVNFRW5KdkFYY3M3bjZWaFV1MVNWZjY2L3N3Qnc4c0JDWnhYVSs1VVNRRkVBU1FDVVA1eS9lMEJVUUhWL2lzQjFmNHJBbUVDTFA0Z0FlRCtJQUhnQUFBQkFBcityd1J0QkkwQUVBQ0lzZ0FSRWhFU09RQ3dCQyt3QUVWWXNBd3ZHN0VNSFQ1WnNBQkZXTEFQTHh1eER4MCtXYkFBUlZpd0NTOGJzUWtQUGxtd0FFVllzQVl2RzdFR0R6NVpzZzBKREJFU09iQU5MN0kvRFFGeHNsOE5BWEt5encwQmNiU3ZEYjhOQWwyMGp3MmZEUUp5c2dnQkNpdFlJZGdiOUZteUFBZ05FUkk1c0FZUXNnRUJDaXRZSWRnYjlGa3dNUUVUTXdNakV5TURJd01qRXpNRE13RWhBbjNOeTEzTE80L2piVkx0eXUxVVZ3R0RBU1lDUnY1OC9lMEJVUUhWL2lzRWpmNGdBZUFBQUFFQUNnQUFCU1FFalFBVUFJQ3lCUlVXRVJJNUFMQUFSVml3RkM4YnNSUWRQbG13QUVWWXNBWXZHN0VHSFQ1WnNBQkZXTEFSTHh1eEVROCtXYkFBUlZpd0NpOGJzUW9QUGxteUFCRVVFUkk1c0FBdnNqOEFBWEd5WHdBQmNyTFBBQUZ4dEs4QXZ3QUNYYlNQQUo4QUFuS3dCTkN3QUJDeUVBRUtLMWdoMkJ2MFdiQU0wTElJREFBUkVqa3dNUUV6TnpNSE53RWhBUUVoQXljSEl6Y2pBeU1UTXdGcFJDdWdMaklCZ3dFbC9oQUJOUDdxNGo4cG9DbEVWdTNLNWdLcjRPQUJBZUg5dVAyN0FkVUJ6TTMrS1FTTkFBRUFZZ0FBQlhJRWpRQU9BSVd5Q1E4UUVSSTVBTEFBUlZpd0J5OGJzUWNkUGxtd0FFVllzQW92RzdFS0hUNVpzQUJGV0xBQ0x4dXhBZzgrV2JBQVJWaXdEaThic1E0UFBsbXlDQUlIRVJJNXNBZ3ZzajhJQVhHeVh3Z0JjckxQQ0FGeHRLOEl2d2dDWGJTUENKOElBbkt5QVFFS0sxZ2gyQnYwV2JBSEVMSUVBUW9yV0NIWUcvUlpzZ3dCQ0JFU09UQXhBU01ESXhNaE55RURNd0VGQVFFaEFyeHRVdTJvL3FvakFrSlVWd0dDQVNiK0VRRXovdWtCMWY0ckE4ckQvaUFCNEFIOXVmMjdBQUFDQUVELzZnVjVCS2tBSkFBdkFJS3lBekF4RVJJNXNBTVFzQy9RQUxBQVJWaXdDeThic1FzZFBsbXdBRVZZc0Jzdkc3RWJIVDVac0FCRldMQUVMeHV4QkE4K1diQUEwTElDQkJzUkVqbXdBaSt3Q3hDeURBRUtLMWdoMkJ2MFdiQUVFTElUQVFvcldDSFlHL1Jac0FBUXNpUUJDaXRZSWRnYjlGbXdBaEN3SjlDd0d4Q3lMQUVLSzFnaDJCdjBXVEF4QlNZbkJpY2tBQk0zRWdBM0J3WUdCd2NHRmhjM0ppWTNOellTRnhZV0Z4WUhCZ2NXTXdFV0Z6WTNOelluSmdNR0JSemJuYUtZL3ZYKzRSc0RIQUV1NXhaNG14b0dGWjZrUDBndkRBVWUrN21kc1FrRUVTUEhaMGo5K2dOL3RDQU5ESWU2SndrU0J6TStBZ0lCUndFVEhnRUlBVFVFelFLenJpdkMwQUlEYWVGK0p2RUJEd1VFeWExUGVQbXhCd0ZsczF4KzhvN1FCUWIrekdFQS8vOEFiUUFBQklBRWpRQW1BL2NBQUFBSEE5VUFCZjdWQUFIL3BQNnZCSUFFalFBUEFGcXlDaEFSRVJJNUFMQUhMN0FBUlZpd0FTOGJzUUVkUGxtd0FFVllzQTh2RzdFUEhUNVpzQUJGV0xBTEx4dXhDdzgrV2JBQVJWaXdDUzhic1FrUFBsbXlBQThMRVJJNXNnUUJDaXRZSWRnYjlGbXlDZ3NQRVJJNU1ERUJBU0VCRXpNREl4TWpBd0VoQVFFaEFpc0JNUUVrL2lXNHhsekxPNGF3L3NmKzNBSG0vdndCQkFMN0FaTDlzdjZEL2UwQlVRR1kvbWdDVndJMkFBQUJBR0wrcndXNkJJMEFEd0Jjc2drUUVSRVNPUUN3QWkrd0FFVllzQWd2RzdFSUhUNVpzQUJGV0xBT0x4dXhEaDArV2JBQVJWaXdCQzhic1FRUFBsbXlBQUVLSzFnaDJCdjBXYkFJRUxJR0FRb3JXQ0hZRy9SWnNBclFzQXZRc0FBUXNBelFzQTNRTURFbE13TWpFeUVUSVRjaEJ5RURJUk16QlB1L2NOazcvR0NvL3E0akE0Y2kvcmFHQWZXbzdjUDk3QUZSQThuRXhQejZBOG9BQUFFQVhRQUFCR1FFalFBWUFFK3lCUmthRVJJNUFMQUFSVml3Q3k4YnNRc2RQbG13QUVWWXNCY3ZHN0VYSFQ1WnNBQkZXTEFBTHh1eEFBOCtXYklSQ3dBUkVqbXdFUyt5QndFS0sxZ2gyQnYwV2JBRTBMQVJFTEFVMERBeElTTVRCZ2NISXpjbUpqY1RNd01HRnhZWE56TUhOamNUTXdPYTdsRkdYQ3FmS3Erd0ZEbnVPZ2NDQTNVeG55OUVYV1R0QWFzVkM4M0tFdHkyQVdIK3BDc29lQnYwOHdvWEFpQUFBQUVBQ2dBQUJCRUVqUUFTQUVheURoTVVFUkk1QUxBQVJWaXdBQzhic1FBZFBsbXdBRVZZc0Fndkc3RUlEejVac0FCRldMQVJMeHV4RVE4K1diSUVBQWdSRWptd0JDK3lEZ0VLSzFnaDJCdjBXVEF4RXpNRE5oY1dGZ2NESXhNMkp5WW5KZ2NESTlUdFVZUjQwTlVWT2UwNkJnWVRtMnliWk8wRWpmNVZKd0lDNGNQK253RmlOQ2wvQmdNbS9kOEFBQUlBTi8veEJhVUVwd0FiQUNRQVpMSU9KU1lSRWptd0RoQ3dIZEFBc0FCRldMQVBMeHV4RHgwK1diQUFSVml3QUM4YnNRQVBQbG15SUE4QUVSSTVzQ0F2c2hNQkNpdFlJZGdiOUZtd0JOQ3dJQkN3RE5Dd0FCQ3lGd0VLSzFnaDJCdjBXYkFQRUxJY0FRb3JXQ0hZRy9SWk1ERUZMZ0kzSmlZM0Z3WVhGaGMyQUJjV0VnY0hJUVlXRnhZM0Z3WURKZ1lISVRZbkppWURXSnJ5ZFJDWG1RdThBd01IY3owQlF0bm03eDBYL040U2twR0JxUzkzZlgyM0xRSTZFUXNQZEE4QmcrZVJFdHUxQVNja2VCdm9BUThFQlA3WTlKbU9uZ0lEUDcxS0ErNERuNWRUTjA1WUFBQUNBRFQvN0FSNkJLSUFGUUFmQUY2eUVTQWhFUkk1c0JFUXNCZlFBTEFBUlZpd0FDOGJzUUFkUGxtd0FFVllzQWd2RzdFSUR6NVpzZzRBQ0JFU09iQU9MN0FBRUxJUkFRb3JXQ0hZRy9SWnNBZ1FzaFlCQ2l0WUlkZ2I5Rm13RGhDeUdRRUtLMWdoMkJ2MFdUQXhBUjRDQndjR0FDY3VBamMzSVRZbUp5WUhKellURmpZM0lRY0dGeFlXQW9PZjYyMFJEU0QrcStlWjExd1RHQU1nRXBLUGdLc3dlbng4dHkzOXh3WUxDaEIxQktJRGl2aWNaZnYreXdRRGlmV2ZtWkdiQWdNL3ZFdjhFZ09mbHhrOU0xQlhBQUFCQUF6LzV3UUZCSTBBR2dCcXNoTWJIQkVTT1FDd0FFVllzQUl2RzdFQ0hUNVpzQUJGV0xBTUx4dXhEQTgrV2JBQ0VMSUFBUW9yV0NIWUcvUlpzZ1FBQWhFU09iSWFEQUlSRWptd0dpK3lHQUVLSzFnaDJCdjBXYklGR0JvUkVqbXdEQkN5RWdFS0sxZ2gyQnYwV2JJUUVoZ1JFamt3TVFFaE55RUhBUllXQnc0Q0p5WW1Oek1XRnhZMk56WW1KeWMzQXJIOStDSURPaHYrbG9tZUNBZUc2SWk4MmdUcUJMVnNqQW9LWDJDUklnUEp4S1greFJlNWdYV25XUU1Gdkp5VUJRSmlWRTFYQXdIRkFBQURBRHIvN0FSakJLTUFFQUFYQUI0QWlMSVpIeUFSRWptd0dSQ3dFTkN3R1JDd0V0QUFzQUJGV0xBSUx4dXhDQjArV2JBQVJWaXdBQzhic1FBUFBsbXdDQkN5RVFFS0sxZ2gyQnYwV2JJVkNBQVJFamw4c0JVdkdMSXdGUUZkc2tNVkFWMjBZQlZ3RlFKZHN2QVZBVjJ5QUJVQmNiU0FGWkFWQW5Hd0FCQ3lHQUVLSzFnaDJCdjBXYkFWRUxJYkFRb3JXQ0hZRy9SWk1ERUZKaVlDTnpjU0FCY1dGaElIQndZQ0JCRW1CZ2NoTmlZREZqWTNJUVlXQWZ1UzBWNFJBeDhCU2UrUnoxNFJCQldnL3Y5eXJUTUNKUXB2LzNPck12M2NDbkFRQXBVQkJKNGNBUkVCVFFZQ2t2NzZuaVN5L3ZHVUErMEZtS0NNb3Z6ZUJabWRocVlBQVFBRUFBQUVDZ1NpQUNZQXBySWxKeWdSRWprQXNBQkZXTEFlTHh1eEhoMCtXYkFBUlZpd0RDOGJzUXdQUGxteUJoNE1FUkk1c0FZdnNnOEdBVjJ3QWRDd0FTK3l6d0VCWFVBSkh3RXZBVDhCVHdFRVhiSUFBUUZkc2dJQ0NpdFlJZGdiOUZtd0JoQ3lCd0lLSzFnaDJCdjBXYkFNRUxJUEFRb3JXQ0hZRy9SWnNBclFzQWNRc0JQUXNBWVFzQlRRc0FJUXNCalFzQUVRc0JuUXNCNFFzaVFCQ2l0WUlkZ2I5Rm15SVFFa0VSSTVNREVCSVFjbEJ3Y2xCeVVHQnlVSElUY1hOamMzQnpjWE56Y0hOek0zTmpZWEZoWUhKelluSmdNQnZnR0NHdjZURHdnQmRoditpU00yQW9ray9IOGRDRFFmRTVnY2xnWVFvQnVOQXh2d3ZhNjlDTzBLa0tRb0FycVNBa01aQXBNQlJEb0R3OElCRmtBcEE1TUNFVXNDa2hqWCtRUUUwYk1Cd0FNRC92OEFBQUVBSHYvd0Erc0VvZ0FpQUp1eUhTTWtFUkk1QUxBVkw3QUFSVml3Q0M4YnNRZ1BQbG15SWhVSUVSSTVzQ0l2c2c4aUFWMnl6eUlCWGJRUUlpQWlBbDJ5QUFJS0sxZ2gyQnYwV2JBSUVMSURBUW9yV0NIWUcvUlpzQUFRc0F6UXNDSVFzQTNRc0NJUXNCM1FzQjB2c3M4ZEFWMjJIeDB2SFQ4ZEExMnlBQjBCWGJJZ0Fnb3JXQ0hZRy9SWnNBL1FzQjBRc0JMUXNCSXZzQlVRc2hvQkNpdFlJZGdiOUZrd01RRWhCaGNXTnhjR0p5WW1Od2MzTXpjak56TTJKQmNXRndjbUp5SUdCeVVISVFjaEF4SCtsUVRDUllNTWMyaSs2UVNjR28wUmpocUpRUUVWeDE2RkpWcHJaNDh3QVhrYS9va1FBWGdCaE1zRUF4M0JIZ0lDM0xVQmtseVR5ZFFDQWg3QkhnSm9jd0dUWEFBRUFBb0FBQWUrQktNQUF3QVJBQjhBS1FDcXNpQXFLeEVTT2JBZ0VMQUIwTEFnRUxBTjBMQWdFTEFUMEFDd0FFVllzQ1V2RzdFbEhUNVpzQUJGV0xBb0x4dXhLQjArV2JBQVJWaXdCQzhic1FRZFBsbXdBRVZZc0NBdkc3RWdEejVac0FCRldMQWpMeHV4SXc4K1diQUVFTEFMMExBTEw3QUQwTEFETDdZQUF4QURJQU1EWGJJQUFnb3JXQ0hZRy9SWnNBc1FzaFVDQ2l0WUlkZ2I5Rm13QkJDeUhBSUtLMWdoMkJ2MFdiSWlKU0FSRWpteUp5VWdFUkk1TURFbElUY2hBeFlXQndjR0JpY21KamMzTmpZREJoWVhGalkzTnpZbUp5WUdCd0VqQVFNakV6TUJFek1IQ3YzVUd3SXJtNCttQ2dZTzBKbVFwZ29GRE5VN0IwWkhTMnNPQ2dkR1JreHNEdjRmNVA2SmpPM0s1UUYzak96SWxRTkNCTHVSUXB6Q0JBUytqVUNkeFA1ZFdXQUNCR2haVGxsZ0FnSmtXdnl4QXlYODJ3U04vTm9ESmdBQy85a0FBQVN5QkkwQUZnQWZBSk95QUNBaEVSSTVzQi9RQUxBQVJWaXdEQzhic1F3ZFBsbXdBRVZZc0FJdkc3RUNEejVac2dZQ0RCRVNPYkFHTDdRZkJpOEdBbkd5QlFjS0sxZ2gyQnYwV2JBQjBMQUdFTEFLMExBS0w3UWZDaThLQW5HMkR3b2ZDaThLQTEyMmp3cWZDcThLQTEyeUNRY0tLMWdoMkJ2MFdiQVUwTEFHRUxBVjBMQUtFTEFYMExBWEw3QU1FTElmQVFvcldDSFlHL1JaTURFbElRY2pOeU0zTXpjak56TVRCUllXQndZRUl5Y0hJUU1YTmpZM05pWW5Kd0tUL3YwYjdSdktJTWtPeXlISll3SE91ZGtMQ3Y3dzB2NE9BUVRYNUdLTERReFhWUDJabVptMlRiY0NPZ0VGekorcjFnRk5BUVFCQW1wWlQxOEVBUUFDQUJELzZBUWpCZ0FBRWdBZkFHU3lCQ0FoRVJJNXNBUVFzQnpRQUxBSkw3QUFSVml3RFM4YnNRMGJQbG13QUVWWXNBY3ZHN0VIRHo1WnNBQkZXTEFFTHh1eEJBOCtXYklHRFFjUkVqbXlDdzBIRVJJNXNBMFFzaFlCQ2l0WUlkZ2I5Rm13QkJDeUd3RUtLMWdoMkJ2MFdUQXhBUVlDQmljbUp3Y2pBVE1ETmhjV0ZoY1dCeWNuSmljbUJ3TVdGeFkyTnpZRUdoT1MxbiszWFMzUEFRcnViSG1tb2JzSkF3YnFCQnllaldWUk00dDhxUmdJQWhpZy92T0RBd1NNZXdZQS9kR0JCQVRmdjBFK2N5ZThCUVNKL2pXREJBUENxRlFBQUFFQU4vL29CQU1FVkFBYkFFdXlBQndkRVJJNUFMQUFSVml3RHk4YnNROGJQbG13QUVWWXNBZ3ZHN0VJRHo1WnNnQUJDaXRZSWRnYjlGbXlCQThJRVJJNXNoTUlEeEVTT2JBUEVMSVdBUW9yV0NIWUcvUlpNREVsRmpZM053NENKeVlDTnpjU0FCY1dGaFVqSmlZbkpnWUhCaFlCOFZlREZ0OE9odFJ3MDk0WUFoMEJOdCt3ME4wQ1hsS0tyQWdHWXEwQ1oxTUJiSzlqQXdVQk1PZ1VBUUVCTndZRTRyTmljUVFHOHVLQ2pRQUFBZ0E3LytjRW13WUFBQklBSHdCaHNnUWdJUkVTT2JBRUVMQVowQUN3Qnkrd0FFVllzQVF2RzdFRUd6NVpzQUJGV0xBSkx4dXhDUTgrV2JBQVJWaXdEUzhic1EwUFBsbXlCZ1FKRVJJNXNnc0VDUkVTT2JJWUFRb3JXQ0hZRy9SWnNBUVFzaDBCQ2l0WUlkZ2I5Rmt3TVJNMkVqWVhGaGNUTXdFak53WW5KaVluSmpjekJoY1dGaGNXTnhNbUp5WUdSQk9XMW9HalgyanQvdmJNREgrdW03NE1CQWJ1QmdRRllsZUZaMVExZzMyc0FoK2pBUXlFQXdSMkFpdjZBSFdPQkFUbHV6ODhOVHRuZmdRRWhRSGFlQVFEd3YvL0FLUUFBQU10QmJVQUJnQVZ0UUFBQWdBMC8rZ0VQd1JSQUJNQUl3QkRzaGdrSlJFU09iQVlFTEFFMEFDd0FFVllzQVV2RzdFRkd6NVpzQUJGV0xBT0x4dXhEZzgrV2JJWEFRb3JXQ0hZRy9SWnNBVVFzaDhCQ2l0WUlkZ2I5Rmt3TVJNMkVqYzJGeDRDQndjR0FnWW5KaVluSmpjWEZoWVhGalkzTmljbUppY21CZ2NHUlJhN2ttVjVqTXhoRUFJVW9QdVRqYzR2TFEvckIybGFlN01jQmdRSmFsbCtzaGNJQWlDd0FSTkJMUU1Da1B5V0ZwNysvNDBFQXBKL2U1RjJhWHdEQmNTOU9ENXJmd01EeTZWUkFBQUMvOGYrWUFRaEJGSUFFZ0FlQUdDeUJCOGdFUkk1c0FRUXNCM1FBTEFBUlZpd0RTOGJzUTBiUGxtd0FFVllzQW92RzdFS0d6NVpzQUJGV0xBSEx4dXhCeEUrV2JBQVJWaXdCQzhic1FRUFBsbXdEUkN5RndFS0sxZ2gyQnYwV2JBRUVMSWNBUW9yV0NIWUcvUlpNREVCQmdJR0p5WW5BeU1CTndjMkZ4WVdGeFlISnpjMEppY21Cd01XRnhZMkJCZ1RrZFovcUdGaDdnRUUwZzU4cjU2OUNRTUc3UVJtWDRSalZ6S0hlckVDR0o3Kzg0VURCSFA5L2dYYUFYS0pCQUxrdlVBK0FVdCtqUVFFZlA0VmRBUUR4Z0FDQUR2K1lBUkxCRkVBRWdBZUFHdXlEQjhnRVJJNXNBd1FzQmpRQUxBQVJWaXdCeThic1FjYlBsbXdBRVZZc0FRdkc3RUVHejVac0FCRldMQUpMeHV4Q1JFK1diQUFSVml3RFM4YnNRMFBQbG15QmdjTkVSSTVzZ3NIRFJFU09iSVhBUW9yV0NIWUcvUlpzQVFRc2h3QkNpdFlJZGdiOUZrd01STTJFallYRmhjM013RWpFd1luSmlZbkpqY1hCeFFXRnhZM0V5WW5KZ1pFRXBMWmhhOWNLdEQrL08xamVaMmN3QXdFQnU0RVpGNkRaRmszZjMyeEFoK2VBUTZHQXdSL2Ivb21BZjExQkFMaHZ6ODlBVXA3bEFJRWVRSDNid01EeHdBQUFnQTcvK3NFQ0FSVUFCVUFIZ0NBc2dBZklCRVNPYkFXMEFDd0FFVllzQWd2RzdFSUd6NVpzQUJGV0xBQUx4dXhBQTgrV2JJWkNBQVJFam13R1MrMHZ4blBHUUpkdEY4WmJ4a0NjYlFmR1M4WkFuR3lqeGtCWGJUdkdmOFpBbkd5REFjS0sxZ2gyQnYwV2JBQUVMSVFBUW9yV0NIWUcvUlpzaElBQ0JFU09iQUlFTElXQVFvcldDSFlHL1JaTURFRkxnSTNOellBRnhZU0J3Y2hCaFlYRmpjWEJnWURKZ01GTnpZbkppWUNEWkRZYWc0Q0dRRTUxOGZOR3hQOVdBcUdmWW1TTFQ2OUVjQmlBY0lHQ0FVSVdCTUJpUFNYRlA0QlFRWUUvdXJpZ24rZkFnUlJxRE0zQTZFRy92QUJIUzhyUWs4QUFBSUFNUDVRQkRvRVVRQWJBQ2tBZkxJRUtpc1JFam13QkJDd0p0QUFzQUJGV0xBSEx4dXhCeHMrV2JBQVJWaXdCQzhic1FRYlBsbXdBRVZZc0F3dkc3RU1FVDVac0FCRldMQVdMeHV4Rmc4K1diSUdCeFlSRWptd0RCQ3lFUUVLSzFnaDJCdjBXYklVQnhZUkVqbXdGaEN5SVFFS0sxZ2gyQnYwV2JBRUVMSW1BUW9yV0NIWUcvUlpNREVUTmhJMkZ4WVhOek1EQmdBbkppYzNGaGNXRXpjR0p5WW1KeVkzTXdZWEZCWVhGamNUSmljbUJnZEdGSWJPZ3JWY0s4NnRJdjdZNGFDU1FteDcrRXdSZnArYXNBY0RCdTBHQVZoV2kySlNNSWg1bnhZQ0g2VUJCb2NDQklSei9BenQvdmNFQkV5eFB3SUhBUkJGZWdRRTRNRStPek03YUg4RUJJa0IxSG9FQThHckFBRUFiLy9uQlVZRnlBQWRBRTZ5REI0ZkVSSTVBTEFBUlZpd0RTOGJzUTBmUGxtd0FFVllzQU12RzdFRER6NVpzZ0FOQXhFU09iSVJBdzBSRWptd0RSQ3lFd0VLSzFnaDJCdjBXYkFERUxJYUFRb3JXQ0hZRy9SWk1ERUJCZ0FuTGdJbkpqYzJFaVFYRmdBWEl3SW5KZ0FEQndZV0Z4WTJOd1RlSS82eDlaTGVoUXNJR1NQVEFTaXQzd0VLQ3ZVTi9jai9BQklDQTVPSWk3a21BZHpqL3U0RUE0VDdubk9TelFGSHBBTUUvdlRuQVNRSEJ2NlgvdVl2dmRnRUJweVBBQUVBY2Yvb0JVb0Z5QUFrQUZ5eUZTVW1FUkk1QUxBQVJWaXdEaThic1E0ZlBsbXdBRVZZc0FNdkc3RUREejVac2hFT0F4RVNPYkFPRUxJVUFRb3JXQ0hZRy9SWnNBTVFzaDRCQ2l0WUlkZ2I5Rm15SXc0REVSSTVzQ012c2lJQkNpdFlJZGdiOUZrd01TVUdCQ2N1QWljbU56YzJFaVFYRmdRWEp3SW5KZ1lHQndZWEZCWVdGeFkzRXlFM0lRVEFTLzdhdHBqc2pnNElDd1FiendFMXR0NEJCUkx3Ri9WMHc0a1hEQUZJam1DNmNEWCs1U0lDRUx4amNRTURoUHFlVmw0bjB3RmJ0UU1FOU4wQkFRQUlBMy83bTE0OWRidGxBUVZZQVJ2QUFBSUFMZ0FBQlIwRnNBQUxBQllBUTdJUEZ4Z1JFam13RHhDd0N0QUFzQUJGV0xBQ0x4dXhBaDgrV2JBQVJWaXdBQzhic1FBUFBsbXlEZ0VLSzFnaDJCdjBXYkFDRUxJV0FRb3JXQ0hZRy9SWk1ERXpFd1V5QkJJSEJ3WUNCQWNUQXhjeUFEYzJKeVltSnk3OEFaaTlBUnVERlFVWjEvNm14Z3EybXRNQktTb2NEeFN4a1FXd0FiZit2Y1lzeHY2OXVBSUU1UHZtQVFFQjJKQjNrNk1FQUFBQ0FITC82QVZ5QmNnQUV3QW5BRWF5Q2lncEVSSTVzQW9Rc0J2UUFMQUFSVml3Q3k4YnNRc2ZQbG13QUVWWXNBQXZHN0VBRHo1WnNBc1FzaG9CQ2l0WUlkZ2I5Rm13QUJDeUpBRUtLMWdoMkJ2MFdUQXhCUzRDSnlZM056WVNKQmNlQWhjV0FnSUVBVFkzTkNZbUp5WUFCd2NHRlJRV0ZoY1dBRGNDZjQvaGlBMElDZ3dpMVFFenJaRGdpQTBPWk5iKzVnRk9CZ0ZCZzF5MS92VWlBZ1pDZzF5d0FRSW5GUU9IL3FCV1YxTENBVWV0QXdPRy9KNnUvcG4rNm84RERqUTZicjFrQXdYK3kvWVBORHB3d0djREJ3RWg1UUFBQWdCeS93TUZiQVhJQUJrQUt3QkdzaUVzTFJFU09iQWhFTEFEMEFDd0FFVllzQkF2RzdFUUh6NVpzQUJGV0xBRkx4dXhCUTgrV2JBUUVMSWdBUW9yV0NIWUcvUlpzQVVRc2ljQkNpdFlJZGdiOUZrd01TVVhCeWNHSXk0Q0p5WTNOellTSkJjV0ZoSVhGZ2NIQmdJRE5qYzBKaVluSmdZQ0ZSUVdGeFkyRWpjRDJNYXU5VVk0a3QySURRY0tDU0RWQVRTeGsrR0hEQVlLQ0IvSUNBY0JQNE5laWR1R2w0cHp4bzRXVThhSzlBc0RoditoVjFjK3hnRlFzUU1EaVA4QW5WaFhOOHIreFFJL05UcHl2R1VEQks3K3dyaTgzUVFGZlFFQ21nQUFBUUNyQUFBRE5RU01BQVlBTWdDd0FFVllzQVV2RzdFRkhUNVpzQUJGV0xBQUx4dXhBQTgrV2JJRUFBVVJFam13QkMreUF3RUtLMWdoMkJ2MFdUQXhJU01UQlRjbE13Sng3WmYra0NZQ1FDUURaSHJYeXdBQkFCOEFBQVFLQktBQUdRQlZzZ29hR3hFU09RQ3dBRVZZc0JFdkc3RVJIVDVac0FCRldMQUFMeHV4QUE4K1diSURFUUFSRWptd0VSQ3lDUUVLSzFnaDJCdjBXYklORVFBUkVqbXlGd0FSRVJJNXNBQVFzaGtCQ2l0WUlkZ2I5Rmt3TVNFaE53RTNOamMySmljbUJnY0hQZ0lYRmhZSEJnY0hBUVVEcGZ4NkhnSWJQVzBPQ1ZOT1pJb1E2d21JNG9LMjBBb010MDMrcHdJd3FRR2tNMTlsUmxRQ0FucGlBbmU5YUFFRnNwV25uVUQrOVFJQUFBRUFDZ0FBQkJVRnhBQUhBREt5QXdnSkVSSTVBTEFBUlZpd0JpOGJzUVlkUGxtd0FFVllzQVV2RzdFRkR6NVpzQVlRc2dJQkNpdFlJZGdiOUZrd01RRXpBeUVESXhNaEF5ZnVXZjNqcU8zS0FoMEZ4UDRGL0RjRWpRQUFBZjkvL3FBRUZRU05BQmdBV2JJRkdSb1JFamtBc0F3dnNBQkZXTEFDTHh1eEFoMCtXYklBQVFvcldDSFlHL1Jac2dRQUFoRVNPYklGREFJUkVqbXdCUyt3REJDeUVRRUtLMWdoMkJ2MFdiQUZFTElXQXdvcldDSFlHL1Jac2hnV0JSRVNPVEF4QVNFM0lRY0JGaFlIQmdZRUp5WW5OeFlYRmpZM0VpVW5Od0xBL2RRakExNGIvbVNUcHcwT3JQN2NxckxTU28ram9la1RJLzdoWlJJRHljU2Evb1llOUtHaStZc0RBMmEwV1FJQ3dKY0JDaFFDaGdBQUF2L1Ivc1FFSXdTTUFBb0FEZ0JTQUxBQVJWaXdDUzhic1FrZFBsbXdBRVZZc0FJdkc3RUNEejVac0FCRldMQUdMeHV4Qmc4K1diSUFBUW9yV0NIWUcvUlpzQVlRc0FYUXNBVXZzZ2dHQUJFU09iQUFFTEFNMExJTkNRSVJFamt3TVNVekJ5TURJeE1oTndFekFTRVRCd055c1NLd04rMDMvVzBWQXpuOC9OY0JsSGNld3NQK3hRRTdvQVB0L0RZQ2d5d0EvLzhBaWdLSUF2OEZ2UU1IQTlBQWN3S1lBQk1Bc0FCRldMQUhMeHV4Qng4K1diQVIwREF4QVAvL0FHUUNtQUx0QmE0REJ3UE1BSE1DbUFBVEFMQUFSVml3Q1M4YnNRa2ZQbG13RGRBd01RRC8vd0I5QW9vREJBV3RBd2NEeXdCekFwZ0FFQUN3QUVWWXNBRXZHN0VCSHo1Wk1ESC8vd0NKQW9vQzVnVzhBd2NEeWdCekFwZ0FFd0N3QUVWWXNCUXZHN0VVSHo1WnNCWFFNREVBLy84QWxnS1lBeTRGclFNSEE4a0Fjd0tZQUJBQXNBQkZXTEFGTHh1eEJSOCtXVEF4Ly84QWV3S0tBdk1GdXdNSEE4Z0Fjd0tZQUJrQXNBQkZXTEFTTHh1eEVoOCtXYkFZMExBU0VMQWswREF4QVAvL0FLWUNqUUwxQmJzREJ3UEhBSE1DbUFBVEFMQUFSVml3Q0M4YnNRZ2ZQbG13SE5Bd01RQUFBZi9VL3AwRVRnU01BQndBWGJJSEhSNFJFamtBc0E4dnNBQkZXTEFCTHh1eEFSMCtXYklEQVFvcldDSFlHL1Jac2djQkR4RVNPYkFITDdJYUFRb3JXQ0hZRy9SWnNnVWFCeEVTT2JBUEVMSVVBUW9yV0NIWUcvUlpzaElVR2hFU09iSWNHaFFSRWprd01STVRJUWNoQXpZWE1oWVdCd1lHQkNjbUp6Y1dGeFkyTnpZbUp5WUhXZUVERkNYOXIzRmpnSHF2VUEwUG52NzNwTSs1V25leWtjd1REbWhwbEVnQmRnTVcwdjZvTmdKNjM0bVg4NDBDQkhXdlpBSUN2cFovbndNRWNnQUFBUUFuL3NRRVZBU01BQVlBSlFDd0FTK3dBRVZZc0FVdkc3RUZIVDVac2dNQkNpdFlJZGdiOUZteUFBTUZFUkk1TURFQkFTTUJJVGNoQkRyODV2a0REUDFOSXdPeEEvbjZ5d1VGd3dBQUFnQTYvL0lHb1FTZkFCZ0FKQUNSc2dFbEpoRVNPYkFCRUxBYjBBQ3dBRVZZc0F3dkc3RU1IVDVac0FCRldMQVBMeHV4RHgwK1diQUFSVml3QWk4YnNRSVBQbG13QUVWWXNBQXZHN0VBRHo1WnNBOFFzaEVCQ2l0WUlkZ2I5Rm15RkFBUEVSSTVzQlF2c2hVQkNpdFlJZGdiOUZtd0FCQ3lHQUVLSzFnaDJCdjBXYkFDRUxJWkFRb3JXQ0hZRy9SWnNBd1FzaHdCQ2l0WUlkZ2I5Rmt3TVNFaEJTTW1KZ0kzTnpZU05oY3lGak1oQnlFRElRY2hBeUVGTnhNbkpnWUhCaGNXRmhjRjJmMTcvdkpPa2RCZEVRWVhvditkV2NSZEFvRWovY293QWVnai9obzJBanY4YTJXV3hJSzJJUllGQldwZERnS1VBUU9kTnFrQkNKQUJFY1QrOHNQK3lnd0VBeFlNQXJTcGNHTndoQVFBQWdCSC9yQUVSZ1NqQUJrQUtBQlJzaU1wS2hFU09iQWpFTEFFMEFDd0ZTK3dBRVZZc0F3dkc3RU1IVDVac0JVUXNnQUJDaXRZSWRnYjlGbXlCUlVNRVJJNXNBVXZzaG9CQ2l0WUlkZ2I5Rm13REJDeUlnRUtLMWdoMkJ2MFdUQXhCUlkyTndZbkpnSTNQZ0lYRmhZU0J3Y0dBZ1FuSmljM0ZnRVdOemMySnlZbUp5WUdCaGNXRmdGUWtkcFFncG04elJRT2xPaUxrOHRZRXgwa3hmN2tyWXlSUVhJQklxRnhIQWNDQTJSYVc0NUhDZ2xlaXdPNTBsMEVBZ0VWMTVQNGhnSUVrZjcrb3NMeC9xYXJBd0k5dEM4QjZRUjdyamc4YUhvREEzaldaMXh0QUFJQVR2L21CSW9FcFFBTUFCMEFScklTSGg4UkVqbXdFaEN3QU5BQXNBQkZXTEFHTHh1eEJoMCtXYkFBUlZpd0FDOGJzUUFQUGxtd0JoQ3lFUUVLSzFnaDJCdjBXYkFBRUxJYUFRb3JXQ0hZRy9SWk1ERUZKZ0lURWdBWEZoSURCd0lBRXpjMEppY21CZ2NIQmhjV0ZoY1dOamNDR09Mb0d5UUJSKy9nNXhzTE1QN0VqUVZyYUlxOEdRUUdBd1ZzWVlxN0dSVUZBVW9CQVFFaEFVa0ZCZjY2L3Y1SC92NyszQUtBVTR5VkJBWFV3aUE4UW5TTEJBWFd4d0QvLy84UC9rZ0IzQVE2QWdZQlpBQUEvLy8vRC81SUFkd0VPZ0lHQVdRQUFQLy9BQ0lBQUFITEJEb0FCZ0QwQUFELy8vOTkvbHNCeXdRNkFDWUE5QUFBQUFZQmJkVUsvLzhBSWdBQUFjc0VPZ0FHQVBRQUFBQUJBQXIvNWdQb0JLRUFJQUJwc2djaEloRVNPUUN3QUVWWXNCUXZHN0VVSFQ1WnNBQkZXTEFlTHh1eEhnOCtXYkFBUlZpd0R5OGJzUThQUGxtd0hoQ3lBZ0VLSzFnaDJCdjBXYklKSGhRUkVqbXdDUyt5QndjS0sxZ2gyQnYwV2JBVUVMSU1Cd29yV0NIWUcvUlpzaGdKQnhFU09UQXhKUll6TWpZM05pY25OemNtSnlZSEF5TVROallYRmhZWEFSWVdCd1lHSnlZbkFaQkZSVTl2Q3hQU1lCL3VOVSt4S24vcGZoN3l3WEsvWHY3WWdvNEdDdkN1Ym5mYk0yNVRsQUlCcnZvMkFnUDMvUlFDN05iZkJBUm5hdjdURnFGM3I5Z0NBamIvLy8rWEFBQUVHZ1NOQWlZRDZRQUFBUWNEMWY4RS8yNEFPd0N5SHhvQmNiSnZHZ0Z4c3Y4YUFYR3lEeG9CY3JLZkdnRnlzbDhhQVhLMnZ4clBHdDhhQTNHeVB4b0JjYkxmR2dGZHRCOGFMeG9DWFRBeEFQLy8vNWNBQUFRYUJJMENKZ1BwQUFBQkJ3UFYvd1QvYmdBN0FMSWZHZ0Z4c204YUFYR3kveG9CY2JJUEdnRnlzcDhhQVhLeVh4b0JjcmEvR3M4YTN4b0RjYkkvR2dGeHN0OGFBVjIwSHhvdkdnSmRNREVBLy84QVlnQUFCRm9FalFJbUE5a0FBQUVHQTlVbHZnQUlBTElBQ3dGZE1ESC8vLytiQUFBRUJRWWVBaVlEN0FBQUFRY0FSQURTQUI0QUV3Q3dBRVZZc0FRdkc3RUVIVDVac0F6Y01ERUEvLy8vbXdBQUJEOEdIZ0ltQSt3QUFBRUhBSGNCYlFBZUFCTUFzQUJGV0xBRkx4dXhCUjArV2JBTjNEQXhBUC8vLzVzQUFBUUlCaDhDSmdQc0FBQUJCZ0ZuYVI0QUV3Q3dBRVZZc0FRdkc3RUVIVDVac0EvY01ERUEvLy8vbXdBQUJFQUdFd0ltQSt3QUFBRUdBVzUzSHdBSkFMQUVMN0FWM0RBeEFQLy8vNXNBQUFRaUJlc0NKZ1BzQUFBQkJ3QnJBSjhBSGdBTUFMQUVMN0FjM0xBTDBEQXgvLy8vbXdBQUJBVUdmUUltQSt3QUFBRUhBV3dCQXdCU0FBd0FzQVF2c0JUY3NCZlFNREgvLy8rYkFBQUVVUWFaQWlZRDdBQUFBQWNEeFFEN0FBVC8vd0E1L2owRVNRU2pBaVlENmdBQUFBY0Fld0ZnQUFELy93QUtBQUFEK1FZZUFpWUQ2QUFBQVFjQVJBQ2lBQjRBRXdDd0FFVllzQVl2RzdFR0hUNVpzQTNjTURFQS8vOEFDZ0FBQkE4R0hnSW1BK2dBQUFFSEFIY0JQUUFlQUJNQXNBQkZXTEFITHh1eEJ4MCtXYkFPM0RBeEFQLy9BQW9BQUFQNUJoOENKZ1BvQUFBQkJnRm5PUjRBRXdDd0FFVllzQVl2RzdFR0hUNVpzQkRjTURFQS8vOEFDZ0FBQS9rRjZ3SW1BK2dBQUFFR0FHdHZIZ0FNQUxBR0w3QWQzTEFNMERBeC8vOEFHQUFBQWVBR0hnSW1BK1FBQUFFR0FFU0tIZ0FUQUxBQVJWaXdBaThic1FJZFBsbXdCZHd3TVFELy93QVlBQUFDOWdZZUFpWUQ1QUFBQVFZQWR5UWVBQk1Bc0FCRldMQURMeHV4QXgwK1diQUczREF4QVAvL0FCZ0FBQUxBQmg4Q0pnUGtBQUFCQndGbi95RUFIZ0FUQUxBQVJWaXdBaThic1FJZFBsbXdDTnd3TVFELy93QVlBQUFDMmdYckFpWUQ1QUFBQVFjQWEvOVhBQjRBREFDd0FpK3dGZHl3Qk5Bd01mLy9BQW9BQUFTb0JoTUNKZ1BmQUFBQkJ3RnVBSlVBSHdBSkFMQUZMN0FVM0RBeEFQLy9BRHIvNmdSakJoNENKZ1BlQUFBQkJ3QkVBTjhBSGdBVEFMQUFSVml3Q1M4YnNRa2RQbG13SXR3d01RRC8vd0E2LytvRVl3WWVBaVlEM2dBQUFRY0Fkd0Y2QUI0QUNRQ3dDUyt3STl3d01RRC8vd0E2LytvRVl3WWZBaVlEM2dBQUFRWUJaM1llQUFrQXNBa3ZzQ0xjTURFQS8vOEFPdi9xQkdNR0V3SW1BOTRBQUFFSEFXNEFoQUFmQUFrQXNBa3ZzQ3ZjTURFQS8vOEFPdi9xQkdNRjZ3SW1BOTRBQUFFSEFHc0FyQUFlQUF3QXNBa3ZzRExjc0NIUU1ESC8vd0E1LytzRWFnWWVBaVlEMkFBQUFRY0FSQURBQUI0QUV3Q3dBRVZZc0Frdkc3RUpIVDVac0JQY01ERUEvLzhBZFAvbkJFNEZ5UUFHQUJRVUFQLy9BSTcvK1FRdkJjZ0FCZ0FkQUFELy93QmEvK2NFY3dXd0FnWUFHUUFBLy84QUNRQUFCQ29Gc0FJR0FCZ0FBUC8vQUNiLzZBUTVCY1VDQmdBWEFBRC8vd0FMQUFBRVB3WEhBZ1lBRmdBQS8vOEFPZi9yQkdvR0hnSW1BOWdBQUFFSEFIY0JXd0FlQUFrQXNBQXZzQlRjTURFQS8vOEFPZi9yQkdvR0h3SW1BOWdBQUFFR0FXZFhIZ0FKQUxBQUw3QVQzREF4QVAvL0FEbi82d1JxQmVzQ0pnUFlBQUFCQndCckFJMEFIZ0FNQUxBQUw3QWozTEFTMERBeC8vOEFiUUFBQklBR0hnSW1BL2NBQUFFSEFIY0JOUUFlQUJNQXNBQkZXTEFCTHh1eEFSMCtXYkFMM0RBeEFQLy8vNXNBQUFROEJkSUNKZ1BzQUFBQkJnQnljU0lBRXdDd0FFVllzQVF2RzdFRUhUNVpzQXpjTURFQS8vLy9td0FBQkJNR0JRSW1BK3dBQUFFSEFXb0Fwd0FlQUFrQXNBUXZzQTdjTURFQUFBTC9tLzVSQkFVRWpRQVhBQm9BaExJVkd4d1JFam13RlJDd0d0QUFzQUJGV0xBVkx4dXhGUjArV2JBQVJWaXdDeThic1FzUlBsbXdBRVZZc0FBdkc3RUFEejVac0FCRldMQVRMeHV4RXc4K1diQUFSVml3QVM4YnNRRVBQbG13Q3hDeUJnTUtLMWdoMkJ2MFdiQUJFTEFRMExBUUw3SVpGUUFSRWptd0dTK3lFUWNLSzFnaDJCdjBXYklhRlFBUkVqa3dNU0VYQndZSEJoY1dOeGNHSnlJbU56WTNKeUVISXdFekV3RWhBd1BRQlMrREJ3VTRHejBNUlZWWGFRSUR2Q3orTG9qNUFwUGEvZjE4QVVoWEF4OVdWamtEQVJlUUt3SnRWSmhyNHZrRWpmdHpBYklCdVAvL0FEbi83QVJKQmg0Q0pnUHFBQUFCQndCM0FXb0FIZ0FKQUxBTEw3QWYzREF4QVAvL0FEbi83QVJKQmg4Q0pnUHFBQUFCQmdGblpoNEFDUUN3Q3krd0h0d3dNUUQvL3dBNS8rd0VTUVgvQWlZRDZnQUFBUWNCYXdGSEFDY0FDUUN3Q3krd0pkd3dNUUQvL3dBNS8rd0VTUVlqQWlZRDZnQUFBUVlCYUgwZUFBa0FzQXN2c0NIY01ERUEvLzhBQ2dBQUJCb0dJd0ltQStrQUFBRUdBV2orSGdBVEFMQUFSVml3QWk4YnNRSWRQbG13Rzl3d01RRC8vd0FLQUFBRURBWFNBaVlENkFBQUFRWUFja0VpQUJNQXNBQkZXTEFHTHh1eEJoMCtXYkFOM0RBeEFQLy9BQW9BQUFQNUJnVUNKZ1BvQUFBQkJnRnFkeDRBQ1FDd0JpK3dEOXd3TVFELy93QUtBQUFEK1FYL0FpWUQ2QUFBQVFjQmF3RWFBQ2NBQ1FDd0JpK3dGTnd3TVFBQUFRQUsvbEVEK1FTTkFCd0FnTElWSFI0UkVqa0FzQUJGV0xBWEx4dXhGeDArV2JBQVJWaXdFQzhic1JBUlBsbXdBRVZZc0FRdkc3RUVEejVac0FCRldMQVZMeHV4RlE4K1diSWNGd1FSRWptd0hDK3lBQUVLSzFnaDJCdjBXYkFWRUxJQ0FRb3JXQ0hZRy9SWnNBUFFzQkFRc2dzRENpdFlJZGdiOUZtd0Z4Q3lHUUVLSzFnaDJCdjBXVEF4QVNFRElRY2pGd2NHQndZWEZqY1hCaWNpSmpjMk55RVRJUWNoQXlFRE5mNGFOZ0k3STJBRkw0TUhCVGdiUFF4RlZWZHBBZ09XL2hYS0F5VWovY2t2QWVnQitQN0t3Z01mVmxZNUF3RVhrQ3NDYlZTTVlBU054UDd5Ly84QUNnQUFCQXdHSXdJbUErZ0FBQUVHQVdoUUhnQVRBTEFBUlZpd0JpOGJzUVlkUGxtd0Vkd3dNUUQvL3dBLy8vQUVVUVlmQWlZRDVnQUFBUVlCWjJvZUFBa0FzQXN2c0NMY01ERUEvLzhBUC8vd0JGRUdCUUltQStZQUFBRUhBV29BcUFBZUFBa0FzQXN2c0NUY01ERUEvLzhBUC8vd0JGRUYvd0ltQStZQUFBRUhBV3NCU3dBbkFBa0FzQXN2c0NuY01ERUEvLzhBUC8zNUJGRUVvd0ltQStZQUFBQUhBNnNCSVA2Uy8vOEFDZ0FBQktrR0h3SW1BK1VBQUFFR0FXZDhIZ0FUQUxBQVJWaXdCeThic1FjZFBsbXdFTnd3TVFELy93QU5BQUFDK0FZVEFpWUQ1QUFBQVFjQmJ2OHZBQjhBQ1FDd0FpK3dEdHd3TVFELy93QVlBQUFDOUFYU0FpWUQ1QUFBQVFjQWN2OHBBQ0lBRXdDd0FFVllzQUl2RzdFQ0hUNVpzQVhjTURFQS8vOEFHQUFBQXNzR0JRSW1BK1FBQUFFSEFXci9Yd0FlQUFrQXNBSXZzQWZjTURFQS8vLy9pdjVSQWM4RWpRSW1BK1FBQUFBR0FXM2lBUC8vQUJnQUFBSUNCZjhDSmdQa0FBQUJCZ0ZyQVNjQUNRQ3dBaSt3RE53d01RRC8vLy95LytzRWtBWWZBaVlENHdBQUFRY0Jad0R4QUI0QUV3Q3dBRVZZc0FBdkc3RUFIVDVac0JQY01ERUEvLzhBQ3YzNUJKMEVqUUltQStJQUFBQUhBNnNBelA2Uy8vOEFDZ0FBQXpRR0hnSW1BK0VBQUFFR0FIY2JIZ0FUQUxBQVJWaXdCUzhic1FVZFBsbXdDTnd3TVFELy93QUsvZmtETkFTTkFpWUQ0UUFBQUFjRHF3REsvcEwvL3dBS0FBQURPd1NRQWlZRDRRQUFBUWNEcXdJbEE0b0FFQUN3QUVWWXNBb3ZHN0VLSFQ1Wk1ESC8vd0FLQUFBRE5BU05BaVlENFFBQUFBY0Jhd0R1L1ViLy93QUtBQUFFcUFZZUFpWUQzd0FBQVFjQWR3R0xBQjRBRXdDd0FFVllzQWd2RzdFSUhUNVpzQXpjTURFQS8vOEFDdjM1QktnRWpRSW1BOThBQUFBSEE2c0JMdjZTLy84QUNnQUFCS2dHSXdJbUE5OEFBQUVIQVdnQW5nQWVBQk1Bc0FCRldMQUdMeHV4QmgwK1diQVAzREF4QVAvL0FEci82Z1JqQmRJQ0pnUGVBQUFCQmdCeWZpSUFDUUN3Q1Mrd0lkd3dNUUQvL3dBNi8rb0VZd1lGQWlZRDNnQUFBUWNCYWdDMEFCNEFDUUN3Q1Mrd0pOd3dNUUQvL3dBNi8rb0U1QVlkQWlZRDNnQUFBUWNCYndEN0FCNEFEQUN3Q1Mrd0k5eXdKZEF3TWYvL0FBb0FBQVFXQmg0Q0pnUGJBQUFCQndCM0FTQUFIZ0FKQUxBRUw3QVkzREF4QVAvL0FBcjkrUVFXQkkwQ0pnUGJBQUFBQndPckFOTCtrdi8vQUFvQUFBUVdCaU1DSmdQYkFBQUJCZ0ZvTXg0QUNRQ3dCQyt3R3R3d01RRC8vd0FPLyswRUd3WWVBaVlEMmdBQUFRY0Fkd0ZKQUI0QUNRQ3dDUyt3S2R3d01RRC8vd0FPLyswRC93WWZBaVlEMmdBQUFRWUJaMFVlQUFrQXNBa3ZzQ2pjTURFQS8vOEFEdjQ5QS84RW53SW1BOW9BQUFBSEFIc0JSUUFBLy84QUR2L3RCQmdHSXdJbUE5b0FBQUVHQVdoY0hnQUpBTEFKTDdBcjNEQXhBUC8vQUdMOStRUmFCSTBDSmdQWkFBQUFCd09yQU43K2t2Ly9BR0lBQUFSYUJpTUNKZ1BaQUFBQkJnRm9TaDRBRXdDd0FFVllzQVl2RzdFR0hUNVpzQTNjTURFQS8vOEFZdjVEQkZvRWpRSW1BOWtBQUFBSEFIc0JNQUFHLy84QU9mL3JCR29HRXdJbUE5Z0FBQUVHQVc1bEh3QUpBTEFBTDdBYzNEQXhBUC8vQURuLzZ3UnFCZElDSmdQWUFBQUJCZ0J5WHlJQUNRQ3dBQyt3RXR3d01RRC8vd0E1LytzRWFnWUZBaVlEMkFBQUFRY0JhZ0NWQUI0QUNRQ3dBQyt3RmR3d01RRC8vd0E1LytzRWFnWjlBaVlEMkFBQUFRY0JiQUR4QUZJQURBQ3dBQyt3Rzl5d0h0QXdNZi8vQURuLzZ3VEZCaDBDSmdQWUFBQUJCd0Z2QU53QUhnQU1BTEFBTDdBVTNMQVcwREF4QUFFQU92NkJCR29FalFBZkFHR3lCU0FoRVJJNUFMQUFSVml3QUM4YnNRQWRQbG13QUVWWXNCWXZHN0VXSFQ1WnNBQkZXTEFOTHh1eERSYytXYkFBUlZpd0VpOGJzUklQUGxteUJCSUFFUkk1c0EwUXNnZ0RDaXRZSWRnYjlGbXdFaEN5R3dFS0sxZ2gyQnYwV1RBeEFRTUdCZ2NHQndZWEZqY1hCaWNpSmpjMk55WW1OeE16QXdZV0Z4WTJOeE1FYW9JWXA0UjVDZ1U0R3owTVJWVlhhUUlDUzdMQ0U0SHNnZ3RiWjJ1T0VvTUVqZnoxamNNcFQxZzVBd0VYa0NzQ2JWUmlUUlBkcWdNQS9QOWxjZ01FYjJrREJ3RC8vd0NNQUFBR0hnWWZBaVlEMWdBQUFRY0Jad0VWQUI0QUV3Q3dBRVZZc0FFdkc3RUJIVDVac0EvY01ERUEvLzhBYlFBQUJJQUdId0ltQS9jQUFBRUdBV2N4SGdBVEFMQUFSVml3Q0M4YnNRZ2RQbG13RGR3d01RRC8vd0J0QUFBRWdBWHJBaVlEOXdBQUFRWUFhMmNlQUF3QXNBRXZzQnJjc0FuUU1ESC8vLy9XQUFBRUp3WWVBaVlFcVFBQUFRY0Fkd0U0QUI0QUV3Q3dBRVZZc0Fndkc3RUlIVDVac0F6Y01ERUEvLy8vMWdBQUJDY0Yvd0ltQktrQUFBRUhBV3NCRlFBbkFBa0FzQWN2c0JMY01ERUFBQUgvMWdBQUJDY0VqUUFKQUVRQXNBQkZXTEFITHh1eEJ4MCtXYkFBUlZpd0FpOGJzUUlQUGxteUFBRUtLMWdoMkJ2MFdiSUVBQUlSRWptd0J4Q3lCUUVLSzFnaDJCdjBXYklKQlFjUkVqa3dNU1VoQnlFM0FTRTNJUWNCTUFKZ0kveHBHd0xmL2E4akE0VWF3c0tZQXpIRWxnRC8vLytiQUFBRUJRVWVBaVlEN0FBQUFBY0JkLzlJL3QzLy8vOXRBQUFFTlFVaEFDWUQ2RHdBQUFjQmQvNC8vdUQvLy85NEFBQUU1UVVjQUNZRDVUd0FBQWNCZC81Sy90di8vLzk3QUFBQ0N3VWhBQ1lENUR3QUFBY0JkLzVOL3VELy8vL1MvK29FYlFVZUFDWUQzZ29BQUFjQmQvNmsvdDMvLy84c0FBQUV2QVVlQUNZRDl6d0FBQWNCZC8zKy90My8vLy9pQUFBRWdnVWVBQ1lEMUFvQUFBY0JkLzYwL3QzLy8vK2JBQUFFQlFTTkFnWUQ3QUFBLy84QUNnQUFCQUFFalFJR0Erc0FBUC8vQUFvQUFBUDVCSTBDQmdQb0FBRC8vLy9XQUFBRUp3U05BZ1lFcVFBQS8vOEFDZ0FBQktrRWpRSUdBK1VBQVAvL0FCZ0FBQUhQQkkwQ0JnUGtBQUQvL3dBS0FBQUVuUVNOQWdZRDRnQUEvLzhBQ2dBQUJjZ0VqUUlHQStBQUFQLy9BRHIvNmdSakJLRUNCZ1BlQUFELy93QUtBQUFFTmdTTkFnWUQzUUFBLy84QVlnQUFCRm9FalFJR0E5a0FBUC8vQUcwQUFBU0FCSTBDQmdQM0FBRC8vLytrQUFBRWdBU05BZ1lEOWdBQS8vOEFHQUFBQXRvRjZ3SW1BK1FBQUFFSEFHdi9Wd0FlQUF3QXNBSXZzQlhjc0FUUU1ESC8vd0J0QUFBRWdBWHJBaVlEOXdBQUFRWUFhMmNlQUF3QXNBRXZzQnJjc0FuUU1ESC8vd0FLQUFBRCtRWHJBaVlENkFBQUFRWUFhMjhlQUF3QXNBWXZzQjNjc0F6UU1ESC8vd0FLQUFBRC9nWWVBaVlEdWdBQUFRY0Fkd0VzQUI0QUNRQ3dCQyt3Q053d01RRC8vd0FPLyswRC93U2ZBZ1lEMmdBQS8vOEFHQUFBQWM4RWpRSUdBK1FBQVAvL0FCZ0FBQUxhQmVzQ0pnUGtBQUFCQndCci8xY0FIZ0FNQUxBQ0w3QVYzTEFFMERBeC8vLy84di9yQTdBRWpRSUdBK01BQVAvL0FBb0FBQVNkQmg0Q0pnUGlBQUFCQndCM0FTQUFIZ0FKQUxBRUw3QVAzREF4QVAvL0FITC82QVNDQmdVQ0pnUUtBQUFCQndGcUFJZ0FIZ0FKQUxBUEw3QVQzREF4QVAvLy81c0FBQVFGQkkwQ0JnUHNBQUQvL3dBS0FBQUVBQVNOQWdZRDZ3QUEvLzhBQ2dBQUE5OEVqUUlHQTdvQUFQLy9BQW9BQUFQNUJJMENCZ1BvQUFELy93QUxBQUFFcmdZRkFpWUVCd0FBQVFjQmFnREdBQjRBQ1FDd0FDK3dEZHd3TVFELy93QUtBQUFGeUFTTkFnWUQ0QUFBLy84QUNnQUFCS2tFalFJR0ErVUFBUC8vQURyLzZnUmpCS0VDQmdQZUFBRC8vd0FLQUFBRXBBU05BZ1lEeGdBQS8vOEFDZ0FBQkRZRWpRSUdBOTBBQVAvL0FEbi83QVJKQktNQ0JnUHFBQUQvL3dCaUFBQUVXZ1NOQWdZRDJRQUEvLy8vcEFBQUJJQUVqUUlHQS9ZQUFBQUJBQTMrT1FQdUJLQUFLQUN3c2lJcEtoRVNPUUN3R0Mrd0FFVllzQXd2RzdFTUhUNVpzQUJGV0xBWEx4dXhGdzgrV2JBTUVMSUdBUW9yV0NIWUcvUlpzaWdYREJFU09iQW9MN0svS0FGeXRLOG92eWdDWGJSdktIOG9Bbkd5L3lnQmNiSVBLQUZ5c2w4b0FYS3l6eWdCY2JJL0tBRnh0QjhvTHlnQ1hiS1BLQUZ5c2tvb0FWMnlDU2dHRVJJNXNpWUJDaXRZSWRnYjlGbXlFU1lvRVJJNXNCY1FzQnJRc0JjUXNpRUJDaXRZSWRnYjlGbXlIaVloRVJJNU1ERUJNalkzTmlZaUJnY0hOallYRmhZSEJnY1dGZ2NHQmdjREl4TW1KamN6RmhZekZqWTNOaWNuTndJRVpvQUtDbVd3YWcvdURQM0N3OTRJQ3VsUldnUUgyTFpON2srR2hnTHFBbHhXYXBBTUZkeUhJQUtxVTAxRVRFVStBWml5QWdPbWpiVmxJNFpaanJVVS9rUUJ5Q09xZVVkTUExbFBvQUVCc0FBQkFBcittZ1M5QkkwQUR3Q29zZ01RRVJFU09RQ3dBRVZZc0F3dkc3RU1IVDVac0FCRldMQUpMeHV4Q1IwK1diQUFSVml3QVM4YnNRRVhQbG13QUVWWXNBWXZHN0VHRHo1WnNBQkZXTEFETHh1eEF3OCtXYklLQmdrUkVqbXdDaSswcndxL0NnSmRzajhLQVhHeXp3b0JjYkkvQ2dGeXN2OEtBWEd5RHdvQmNyUnZDbjhLQW5HMDN3cnZDZ0pkdEI4S0x3b0NYYkpmQ2dGeXNnVUJDaXRZSWRnYjlGbXdBeEN5RGdjS0sxZ2gyQnYwV1RBeEFTTVRJeE1oQXlNVE13TWhFek1ETXdSZjdqNjlVdjRHVSszSzdWWUIrMWJ0cTcvK21nRm1BZHYrSlFTTi9oRUI3L3dvQUFBQkFEcitRd1JQQktNQUhnQmVzZ01mSUJFU09RQ3dBRVZZc0Ewdkc3RU5IVDVac0FCRldMQUVMeHV4QkJFK1diQUFSVml3QXk4YnNRTVBQbG15QUFNTkVSSTVzQWJRc2hFTkF4RVNPYkFORUxJVUFRb3JXQ0hZRy9SWnNBTVFzaHdCQ2l0WUlkZ2I5Rmt3TVFFR0JnY0RJeE1tQWpjM0VnQVhGaFlYSnlZbUp5WUdCd1lYRkJZWEZqY0VBaG5vckV2dVRwdVZGd1lnQVVIcHd1SUs2d05nYTRXd0doQUJaR0hqT0FHRnA5UVYvazRCd1M4QktNVTBBUTRCUVFZRTNiMEJaM0FFQmNDMGlUOXdmd1FJMmdELy93QnRBQUFFZ0FTTkFnWUQ5d0FBLy84QU4vNDZCYVVFcHdJbUJDQUFBQUFIQS8wQ3YvK2cvLzhBQ3dBQUJLNEYwZ0ltQkFjQUFBRUhBSElBa0FBaUFBa0FzQUF2c0FyY01ERUEvLzhBY3Yvb0JJSUYwZ0ltQkFvQUFBRUdBSEpTSWdBSkFMQVBMN0FRM0RBeEFQLy9BRU1BQUFVM0JJNENCZ1BTQUFELy8vK2svbFFFcmdXd0FpWUFKUUFBQUFjQmJRRnRBQVAvL3dBaS9sZ0QzQVJRQWlZQVJRQUFBQWNCYlFDbkFBZi8vd0FuL2xzRXVnV3dBaVlBS1FBQUFBY0JiUUV1QUFyLy93QTcvbEVFQWdSUkFpWUFTUUFBQUFjQmJRRDhBQUQvLy8vay9wc0J5d1E2QWlZQTlBQUFBQWNCZGdORUFBb0FBQUFBQUE4QXVnQURBQUVFQ1FBQUFGNEFBQUFEQUFFRUNRQUJBQm9BWGdBREFBRUVDUUFDQUF3QWVBQURBQUVFQ1FBREFDZ0FoQUFEQUFFRUNRQUVBQ2dBaEFBREFBRUVDUUFGQUN3QXJBQURBQUVFQ1FBR0FDWUEyQUFEQUFFRUNRQUhBRUFBL2dBREFBRUVDUUFKQUF3QlBnQURBQUVFQ1FBTEFCUUJTZ0FEQUFFRUNRQU1BQ1lCWGdBREFBRUVDUUFOQUZ3QmhBQURBQUVFQ1FBT0FGUUI0QUFEQUFFRUNRQVFBQXdDTkFBREFBRUVDUUFSQUJvQ1FBQkRBRzhBY0FCNUFISUFhUUJuQUdnQWRBQWdBRElBTUFBeEFERUFJQUJIQUc4QWJ3Qm5BR3dBWlFBZ0FFa0FiZ0JqQUM0QUlBQkJBR3dBYkFBZ0FGSUFhUUJuQUdnQWRBQnpBQ0FBVWdCbEFITUFaUUJ5QUhZQVpRQmtBQzRBVWdCdkFHSUFid0IwQUc4QUlBQk5BR1VBWkFCcEFIVUFiUUJKQUhRQVlRQnNBR2tBWXdCU0FHOEFZZ0J2QUhRQWJ3QWdBRTBBWlFCa0FHa0FkUUJ0QUNBQVNRQjBBR0VBYkFCcEFHTUFWZ0JsQUhJQWN3QnBBRzhBYmdBZ0FESUFMZ0F3QURBQU1RQXhBRFVBTWdBN0FDQUFNZ0F3QURFQU5BQlNBRzhBWWdCdkFIUUFid0F0QUUwQVpRQmtBR2tBZFFCdEFFa0FkQUJoQUd3QWFRQmpBRklBYndCaUFHOEFkQUJ2QUNBQWFRQnpBQ0FBWVFBZ0FIUUFjZ0JoQUdRQVpRQnRBR0VBY2dCckFDQUFid0JtQUNBQVJ3QnZBRzhBWndCc0FHVUFMZ0JIQUc4QWJ3Qm5BR3dBWlFCSEFHOEFid0JuQUd3QVpRQXVBR01BYndCdEFFTUFhQUJ5QUdrQWN3QjBBR2tBWVFCdUFDQUFVZ0J2QUdJQVpRQnlBSFFBY3dCdkFHNEFUQUJwQUdNQVpRQnVBSE1BWlFCa0FDQUFkUUJ1QUdRQVpRQnlBQ0FBZEFCb0FHVUFJQUJCQUhBQVlRQmpBR2dBWlFBZ0FFd0FhUUJqQUdVQWJnQnpBR1VBTEFBZ0FGWUFaUUJ5QUhNQWFRQnZBRzRBSUFBeUFDNEFNQUJvQUhRQWRBQndBRG9BTHdBdkFIY0Fkd0IzQUM0QVlRQndBR0VBWXdCb0FHVUFMZ0J2QUhJQVp3QXZBR3dBYVFCakFHVUFiZ0J6QUdVQWN3QXZBRXdBU1FCREFFVUFUZ0JUQUVVQUxRQXlBQzRBTUFCU0FHOEFZZ0J2QUhRQWJ3Qk5BR1VBWkFCcEFIVUFiUUFnQUVrQWRBQmhBR3dBYVFCakFBTUFBUC8wQUFEL2FnQmtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQ0FBZ0FBdi8vQUE4QUFRQUFBQW9BWEFDc0FBUkVSa3hVQUJwamVYSnNBQ2huY21WckFEWnNZWFJ1QUVRQUJBQUFBQUQvL3dBQ0FBQUFCQUFFQUFBQUFQLy9BQUlBQVFBRkFBUUFBQUFBLy84QUFnQUNBQVlBQkFBQUFBRC8vd0FDQUFNQUJ3QUlZM0J6Y0FBeVkzQnpjQUE0WTNCemNBQStZM0J6Y0FCRWEyVnliZ0JLYTJWeWJnQkthMlZ5YmdCS2EyVnliZ0JLQUFBQUFRQUJBQUFBQVFBREFBQUFBUUFDQUFBQUFRQUFBQUFBQVFBRUFBVUFEQUFNQUF3QURBSGVBQUVBQUFBQkFBZ0FBUUFLQUFVQUpBQklBQUVBM2dBSUFDVUFKZ0FuQUNnQUtRQXFBQ3NBTEFBdEFDNEFMd0F3QURFQU1nQXpBRFFBTlFBMkFEY0FPQUE1QURvQU93QThBRDBBUGdCbUFHZ0Fnd0NFQUlVQWhnQ0hBSWdBaWdDTEFJd0FqUUNPQUk4QWtBQ1JBSklBa3dDVUFKVUFsZ0NYQUpnQW1RQ2NBSjBBbmdDZkFLQUF3d0RGQU1jQXlRRExBTTBBendEUkFOTUExUURYQU5rQTJ3RGRBTjhBNFFEakFPVUE1d0RyQU8wQTd3RHhBUE1BOXdENUFQd0EvZ0VBQVFJQkJnRUlBUW9CRHdFUkFSTUJGUUVYQVJrQkd3RWRBUjhCSVFFakFTVUJKd0VwQVNzQkxRRXZBVEVCTXdFMUFUY0JPUUU3QVR3QlBnRkFBVTRCWWdGNUFYc0JmQUY5QVg0QmZ3R0FBWUlCZ3dHRUFZVUJoZ0dIQVlnQmlRR0tBWXNCakFHTkFZOEJrQUdSQVpJQmt3R1VBWlVCbGdHWEFaZ0JtUUdhQVpzQnhBSEZBY1lCeHdISUFja0J5Z0hMQWN3QnpRSE9BYzhCMFFIU0FkTUIxQUhWQWRZQjF3SFlBZGtCMmdIYkFkd0IzUUhlQWQ4QjRBSGhBZUlCNHdIa0FlVUI1Z0huQWVnQjZRSHFBZXNCN0FIdEFlNEI3d0h3QWZFQjhnSlNBbFFDV0FKYUFsd0NYZ0ppQW1RQ2FnSnNBbkFDY2dKMEFuWUNlZ0o4QW40Q2dBS2FBcUlDcEFLcUFyQURod09PQTVNRGxnQUNBQUFBQWdBS085b0FBUU5zQUFRQUFBR3hCdEk2K2pyNkJ2d0hVamZlSTJJN21EdXFPSFlIV0RpV09KWTQzalRlRHFnNGxqaVdPNm9taEFxU0N4UTFNRGplTkk0M3VEZEtPT1FQWWd0K09GUTJHamlNQzhBTTZnejBONjQzcmppNE5ob08xZzNxT1c0T1REZW9PVzRPWmpmZU45NDMzamZlTjk0MzNqdVlPSFk0ZGpoMk9IWTRsamlXT0pZNGxqdXFPSlk3cWp1cU82bzdxanVxT040NDNqamVPTjQ0NURoVU9GUTRWRGhVT0ZRNFZEaU1PSXc0akRpTU42NDR1RGk0T0xnNHVEaTRPVzQyR2psdU45NDRWRGZlT0ZRMzNqaFVPNWc3bUR1WU81ZzdxanVxT0hZNGpEaDJPSXc0ZGppTU9IWTRqRGgyT0l3NGxqZXVPSlk0bGppV09KWTRsamplTk40T3FBNm9EcWdPcURpV042NDRsamV1T0pZM3JqZXVPNm80dUR1cU9MZzdxamk0RHRZTzFnN1dOVEExTURVd09ONDQzamplT040NDNqamVON2c0NURsdU9PUVBZZzlpRDJJMzNqaFVOVEFPNkRyNk45NDRkamlXT0pZN3FqamtOOTRqWWpaK045NDRkZzlpT0pZN3FqaVdOTjQzM2ppV09KWVBoRHVxSm9RUWZqVXdPT1FSZkRkS0VsbzRsamprTjY0UytEbHVFdjQzcmhXOE9XNFhsamk0R0tnWXdoaklHTTRheUJyT0d3UWJOamk0T0hZNGRodTBObjQ0bGppV09ONGRLaDdjSUpvMDNqWTBPSlkzM2lIUUkySTJmaU5zT0hZM1NpVzZPSlkwM2ppV09KWTRsanVxSm9RN21EVXdOalEzU2ppV09KWW1waWhBTkQ0cEhpbmdLbTQ0VkNyTUs2WTNRQ3d3T0l3M3FDejZMU1E0dURZYUxvbzViallhTjZneEVERk9Nb0EwYURZYU13STRqRGlNTjBBemlET3lOQWc1YmpRK05HZzMzamk0Tkk0NWJqU09PVzQwdERZYU5uNDNRRForTjBvM3FEVGVOTjQwM2pUZU9KWTdtRFV3T09RNWJqamtOMG8zcURldU9KWTNTamVvT0pZNGxqaVdOOTQ0VkRmZU9GUTRkamlNT0l3NGpEZEtONmc3cWppNE9MZzJHalkwT1c0Mk5EbHVOalE1YmpaK04wQTNRRGRLTjZnMzNqaFVPSlkzcmplNE43ZzN1RGZlT0ZRMzNqaFVOOTQ0VkRmZU9GUTMzamhVTjk0NFZEZmVPRlEzM2poVU45NDRWRGZlT0ZRMzNqaFVOOTQ0VkRoMk9JdzRkamlNT0hZNGpEaDJPSXc0ZGppTU9IWTRqRGgyT0l3NGRqaU1PSlk0bGp1cU9MZzdxamk0TzZvNHVEdXFPTGc3cWppNE82bzR1RHVxT0xnNHVEamVPTjQ0NURsdU9PUTViamprT1c0NDVEbHVPNm82K2ptSU92bzYranI2T3ZvNitqc0FPd283SERzdU8wQTdYanRvTzNJN21EdXFPNm9BQVFHeEFBUUFCZ0FMQUF3QUV3QWxBQ1lBSndBb0FDa0FLZ0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU9BQTVBRG9BT3dBOEFEMEFQZ0EvQUVVQVJnQkpBRW9BVEFCUEFGRUFVZ0JUQUZRQVZnQllBRm9BV3dCY0FGMEFYd0NEQUlRQWhRQ0dBSWNBaUFDS0FJc0FqQUNOQUk0QWp3Q1FBSkVBa2dDVEFKUUFsUUNXQUpjQW1BQ1pBSndBblFDZUFKOEFvQUNqQUtRQXBRQ21BS2NBcUFDckFLd0FyUUN1QUxRQXRRQzJBTGNBdUFDNUFNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5d0ROQU04QTBRRFRBTlVBMWdEWEFOZ0EyUURhQU5zQTNBRGRBTjRBNXdEb0FPc0E3UUR2QVBFQTh3RDNBUGtBL0FEK0FRQUJBZ0VHQVFjQkNBRUpBUW9CQ3dFTUFROEJFQUVSQVJJQkV3RVVBUmdCR2dFY0FTVUJKd0VwQVNzQkxRRXZBVEVCTXdFMUFUY0JPUUU2QVRzQlBBRStBVUFCVGdGUEFXSUJaUUZtQVhrQmV3RjhBWDBCZmdGL0FZSUJnd0dFQVlVQmhnR0hBWWdCaVFHS0FZc0JqQUdOQVk0Qmp3R1FBWklCa3dHVUFaVUJsZ0dYQVpnQm1nR2JBWjRCb1FHakFhWUJwd0dwQWEwQnJnR3ZBYkVCc2dHekFiUUJ0UUcyQWJnQnVRRzhBY01CeEFIRkFjWUJ5UUhLQWNzQnpBSE5BYzRCendIUkFkSUIwd0hVQWRVQjFnSFhBZGdCMlFIYUFkc0IzUUhlQWQ4QjRBSGhBZU1CNUFIbEFlWUI2QUhwQWVzQjdBSHRBZThCOEFIeEFmSUI4d0gwQWZVQjlnSDNBZmdCK1FINkFmMENBUUlEQWdVQ0JnSUhBZ2dDQ1FJTUFnMENEd0lRQWhFQ0V3SVVBaFlDRndJY0FoMENJUUlsQWlZQ0tRSTJBamNDT0FJNUFqb0NSQUpSQWxJQ1V3SlVBbGdDV1FKY0FsNENZQUppQW1RQ2JBSnVBbkFDY1FKeUFuUUNkUUo5QW9JQ2d3S0VBb3NDandLUkFwSUNrd0tVQXBVQ21BS1pBcHNDblFLZUFwOENxQUtwQXEwQ3J3S3dBckVDc2dLekFyUUN0UUs0QXJrQ3ZRSytBcjhDMWdMWEF1WUM1d0w0QXZvQy9BTUNBd01EQkFNRkF3WURCd01JQXdrRENnTUxBd3dERFFNT0F3OERFQU1SQXhJREV3TVVBeFVERmdNWEF4Z0RHUU1hQXhzREhBTWRBeDRESHdNZ0F5RURJZ01qQXlRREpRTW1BeWNES0FNcEF5b0RMQU11QXk4RE1BTXhBeklETXdNMEF6VUROZ00zQXpnRE9RTTZBenNEUXdOR0EwZ0RWQU5WQTFZRFZ3TllBMWtEV2dOYkExd0RjQU54QTNNRGRBTjFBMzREZndQWkE5c0QzQVBlQStFRDRnUHBBK3dFTVFRekJEUUFDZ0E0LzhRQkpmL0VBU2YveEFGaS84UUJ4Zi9FQWM3L3hBSGwvOFFDWXYvRUFtNy94QUoyLzhRQUZRQTZBQlFBT3dBbUFEMEFGZ0NnQUJZQk53QW1BVGtBRmdFN0FCWUJmd0FXQVpVQUZnR2JBQllDTndBVUFqa0FGQUp3QUJZQ2NnQVdBdmdBSmdMNkFDWUMvQUFtQTFRQUZnTldBQllEV0FBV0Exb0FGZ0FCQUJQL0NBRE9BQkQrN2dBUy91NEFKZjlBQUM3L01BQTRBQlFBUmYvZUFFZi82d0JJLytzQVNmL3JBRXYvNndCVC8rc0FWZi9yQUZiLzVnQlovK29BV3Yvb0FGMy82QUNELzBBQWhQOUFBSVgvUUFDRy8wQUFoLzlBQUlqL1FBQ2ovOTRBcFAvZUFLWC8zZ0NtLzk0QXAvL2VBS2ovM2dDcS8rc0FxLy9yQUt6LzZ3Q3QvK3NBcnYvckFMWC82d0MyLytzQXQvL3JBTGovNndDNS8rc0F2UC9xQUwzLzZnQysvK29Bdi8vcUFNRC82QURDLytnQXcvOUFBTVQvM2dERi8wQUF4di9lQU1mL1FBREkvOTRBeXYvckFNei82d0RPLytzQTBQL3JBTkwvNndEVy8rc0EyUC9yQU5yLzZ3RGMvK3NBM3YvckFPRC82d0RpLytzQTVQL3JBT2IvNndEMy96QUJFUC9yQVJMLzZ3RVUvK3NCRnYvckFTVUFGQUVuQUJRQkxQL3FBUzcvNmdFdy8rb0JNdi9xQVRULzZnRTIvK29CT3Yvb0FVYi82d0ZJLytvQlR2OUFBVS8vM2dGaUFCUUJlZjlBQVlML1FBR0YvMEFCalA5QUFaei82d0dnLytvQm9mL3JBYVAvNkFHdC8rZ0JyLy9yQWJMLzZ3R3ovK3NCdGYvcUFidi82Z0c4LytzQnZmL3FBY1VBRkFITC96QUJ6Z0FVQWRQL1FBSGxBQlFCOC8vZUFmai82d0lCLytzQ0JQL3JBZ2IvNkFJSC8rc0NFLy9yQWhULzZ3SVgvK3NDSWYvb0Fpbi9RQUkyLytzQ09QL29BanIvNkFJOC8rc0NRUC9yQWtULzZ3SmlBQlFDYS8vckFtMy82d0p1QUJRQ2NmL29BbllBRkFLUy8wQUNrLy9lQXBUL1FBS1YvOTRDbWYvckFwdi82d0tkLytzQ3FmL3JBcXYvNndLdC8rc0NzZi9vQXJQLzZBSzEvK2dDdy8vckFzVC82d0xGLytzQ3ovL3JBdGIvUUFMWC85NERBdjlBQXdQLzNnTUUvMEFEQmYvZUF3Yi9RQU1ILzk0RENQOUFBd24vM2dNSy8wQURDLy9lQXd6L1FBTU4vOTRERHY5QUF3Ly8zZ01RLzBBREVmL2VBeEwvUUFNVC85NERGUDlBQXhYLzNnTVcvMEFERi8vZUF4ai9RQU1aLzk0REcvL3JBeDMvNndNZi8rc0RJZi9yQXlQLzZ3TWwvK3NESi8vckF5bi82d012LytzRE1mL3JBelAvNndNMS8rc0ROLy9yQXpuLzZ3TTcvK3NEUGYvckF6Ly82d05CLytzRFEvL3JBMFgvNndOSC8rb0RTZi9xQTB2LzZnTk4vK29EVC8vcUExSC82Z05ULytvRFZmL29BMWYvNkFOWi8rZ0RXLy9vQTNMKzdnTjIvdTREZXY3dUEzdis3Z1BzLzhBQUlBQTQvOThBT3Yva0FEdi83QUE5LzkwQW9QL2RBU1gvM3dFbi85OEJOLy9zQVRuLzNRRTcvOTBCWXYvZkFYLy8zUUdWLzkwQm0vL2RBY1gvM3dITy85OEI1Zi9mQWpmLzVBSTUvK1FDWXYvZkFtNy8zd0p3LzkwQ2N2L2RBbmIvM3dMNC8rd0Mrdi9zQXZ6LzdBTlUvOTBEVnYvZEExai8zUU5hLzkwRDdBQU9BQm9BT1AvT0FEci83UUE5LzlBQW9QL1FBU1gvemdFbi84NEJPZi9RQVR2LzBBRmkvODRCZi8vUUFaWC8wQUdiLzlBQnhmL09BYzcvemdIbC84NENOLy90QWpuLzdRSmkvODRDYnYvT0FuRC8wQUp5LzlBQ2R2L09BMVQvMEFOVy85QURXUC9RQTFyLzBBQVFBQzcvN2dBNS8rNEFuUC91QUozLzdnQ2UvKzRBbi8vdUFQZi83Z0VyLys0QkxmL3VBUy8vN2dFeC8rNEJNLy91QVRYLzdnSEwvKzREUnYvdUEwai83Z0JLQUFZQUVBQUxBQkFBRFFBVUFFRUFFZ0JILytnQVNQL29BRW4vNkFCTC8rZ0FWZi9vQUdFQUV3Q3EvK2dBcS8vb0FLei82QUN0LytnQXJ2L29BTXIvNkFETS8rZ0F6di9vQU5ELzZBRFMvK2dBMXYvb0FOai82QURhLytnQTNQL29BTjcvNkFEZy8rZ0E0di9vQU9ULzZBRG0vK2dCRnYvb0FVYi82QUZtQUJBQm5QL29BYUgvNkFHeS8rZ0JzLy9vQWZqLzZBSUUvK2dDQi8vb0FoUC82QUlVLytnQ0YvL29BanovNkFKQS8rZ0NSUC9vQW12LzZBSnQvK2dDbWYvb0Fwdi82QUtkLytnQ3EvL29Bc1AvNkFMRS8rZ0N4Zi9vQXMvLzZBTWIvK2dESGYvb0F4Ly82QU1oLytnREkvL29BeVgvNkFNbi8rZ0RLZi9vQXozLzZBTS8vK2dEUWYvb0EwWC82QU53QUJBRGNRQVFBM01BRUFOMEFCQURkUUFRQTM0QUVBTi9BQkFBQWdJRi85WURjZitZQUQwQVIvL3NBRWovN0FCSi8rd0FTLy9zQUZYLzdBQ3EvK3dBcS8vc0FLei83QUN0Lyt3QXJ2L3NBTXIvN0FETS8rd0F6di9zQU5ELzdBRFMvK3dBMXYvc0FOai83QURhLyt3QTNQL3NBTjcvN0FEZy8rd0E0di9zQU9ULzdBRG0vK3dCRnYvc0FVYi83QUdjLyt3Qm9mL3NBYkwvN0FHei8rd0IrUC9zQWdULzdBSUgvK3dDRS8vc0FoVC83QUlYLyt3Q1BQL3NBa0QvN0FKRS8rd0NhLy9zQW0zLzdBS1ovK3dDbS8vc0FwMy83QUtyLyt3Q3cvL3NBc1QvN0FMRi8rd0N6Ly9zQXh2LzdBTWQvK3dESC8vc0F5SC83QU1qLyt3REpmL3NBeWYvN0FNcC8rd0RQZi9zQXovLzdBTkIvK3dEUmYvc0FCZ0FVLy9pQUxYLzRnQzIvK0lBdC8vaUFMai80Z0M1LytJQkVQL2lBUkwvNGdFVS8rSUJyLy9pQWJ6LzRnSUIvK0lDTnYvaUFxbi80Z0t0LytJREwvL2lBekgvNGdNei8rSUROZi9pQXpmLzRnTTUvK0lETy8vaUEwUC80Z054QUJnQUJnQVEvNFFBRXYrRUEzTC9oQU4yLzRRRGV2K0VBM3YvaEFBUUFDNy83QUE1Lyt3QW5QL3NBSjMvN0FDZS8rd0FuLy9zQVBmLzdBRXIvK3dCTGYvc0FTLy83QUV4Lyt3Qk0vL3NBVFgvN0FITC8rd0RSdi9zQTBqLzdBQUxBRnYvekFQVy85Y0QxLys0QTlqLzdnUFovNzBEM1AveUE5Ny84Z1BtLy9FRDZ2L3pBK3dBRXdQMy83Y0FCQUJLQUJRQVdBQXlBRnNBRVFOeEFCQUFIZ0FHLy9JQUMvL3lBRnIvOHdCZC8vTUF3UC96QU1MLzh3RTYvL01CWnYveUFhUC84d0d0Ly9NQ0JmLzFBZ2IvOHdJaC8vTUNPUC96QWpyLzh3SngvL01Dc2YvekFyUC84d0sxLy9NRFZmL3pBMWYvOHdOWi8vTURXLy96QTNELzhnTngvL0lEYy8veUEzVC84Z04xLy9JRGZ2L3lBMy8vOGdBSUFGdi81UUdXLzhzQnVQL2tBOXovN0FQZS8rd0Q1di9yQStyLzdRUHNBQTBBUGdBbi8vTUFLLy96QURQLzh3QTEvL01BaXYvekFKWC84d0NXLy9NQWwvL3pBSmovOHdDWi8vTUFtLy96QU1uLzh3REwvL01BemYvekFNLy84d0RmLy9NQTRmL3pBT1AvOHdEbC8vTUJELy96QVJILzh3RVQvL01CRmYvekFVWC84d0ZTLy9NQmZ2L3pBWW4vOHdHUS8vTUJxd0FOQWNmLzh3SGgvL01CNVAvekFpUC84d0kxLy9NQ08vL3pBajMvOHdJLy8vTUNRZi96QWtQLzh3SnEvL01DYlAvekFxai84d0txLy9NQ3JQL3pBczcvOHdNdS8vTURNUC96QXpMLzh3TTAvL01ETnYvekF6ai84d002Ly9NRFBQL3pBejcvOHdOQS8vTURRdi96QTBULzh3TmMvL01FTWYvekJETC84d1EwLy9NRU5mL3pBRDhBSi8vbUFDdi81Z0F6LytZQU5mL21BSXIvNWdDVi8rWUFsdi9tQUpmLzVnQ1kvK1lBbWYvbUFKdi81Z0RKLytZQXkvL21BTTMvNWdEUC8rWUEzLy9tQU9ILzVnRGovK1lBNWYvbUFRLy81Z0VSLytZQkUvL21BUlgvNWdGRi8rWUJVdi9tQVg3LzVnR0ovK1lCa1AvbUFaYi93Z0dyQUJBQngvL21BZUgvNWdIay8rWUNJLy9tQWpYLzVnSTcvK1lDUGYvbUFqLy81Z0pCLytZQ1EvL21BbXIvNWdKcy8rWUNxUC9tQXFyLzVnS3MvK1lDenYvbUF5Ny81Z013LytZRE12L21BelQvNWdNMi8rWURPUC9tQXpyLzVnTTgvK1lEUHYvbUEwRC81Z05DLytZRFJQL21BMXovNWdReC8rWUVNdi9tQkRULzVnUTEvK1lBTndBbC8rUUFQUC9TQUQzLzB3Q0QvK1FBaFAva0FJWC81QUNHLytRQWgvL2tBSWovNUFDZy85TUF3Ly9rQU1YLzVBREgvK1FCT2YvVEFUdi8wd0ZPLytRQmVmL2tBWC8vMHdHQy8rUUJoZi9rQVl6LzVBR1YvOU1CbC8vU0Fadi8wd0dyLytJQjAvL2tBZG4vMGdIby85SUNLZi9rQWxqLzBnSncvOU1DY3YvVEFuVC8wZ0tELzlJQ2t2L2tBcFQvNUFLZS85SUN2di9TQXRiLzVBTUMvK1FEQlAva0F3Yi81QU1JLytRREN2L2tBd3ovNUFNTy8rUURFUC9rQXhMLzVBTVUvK1FERnYva0F4ai81QU5VLzlNRFZ2L1RBMWovMHdOYS85TUFKd0FRLzBZQUV2OUdBQ1gvelFDRC84MEFoUC9OQUlYL3pRQ0cvODBBaC8vTkFJai96UURELzgwQXhmL05BTWYvelFGTy84MEJlZi9OQVlML3pRR0YvODBCalAvTkFiSC84Z0hULzgwQ0tmL05BcEwvelFLVS84MEMxdi9OQXdML3pRTUUvODBEQnYvTkF3ai96UU1LLzgwRERQL05BdzcvelFNUS84MERFdi9OQXhUL3pRTVcvODBER1AvTkEzTC9SZ04yLzBZRGV2OUdBM3YvUmdBQkFhc0FEZ0N2QUVmLzNBQkkvOXdBU2YvY0FFdi8zQUJSLzhFQVV2L0JBRlAvMWdCVS84RUFWZi9jQUZuLzNRQmEvK0VBWGYvaEFLci8zQUNyLzl3QXJQL2NBSzMvM0FDdS85d0F0UC9CQUxYLzFnQzIvOVlBdC8vV0FMai8xZ0M1LzlZQXZQL2RBTDMvM1FDKy85MEF2Ly9kQU1ELzRRREMvK0VBeXYvY0FNei8zQURPLzl3QTBQL2NBTkwvM0FEVy85d0EyUC9jQU5yLzNBRGMvOXdBM3YvY0FPRC8zQURpLzl3QTVQL2NBT2IvM0FFSC84RUJDZi9CQVF2L3dRRU0vOEVCRVAvV0FSTC8xZ0VVLzlZQkZ2L2NBU3ovM1FFdS85MEJNUC9kQVRMLzNRRTAvOTBCTnYvZEFUci80UUZHLzl3QlNQL2RBWnovM0FHZS84RUJvUC9kQWFILzNBR2ovK0VCcGYvbUFhZi93UUdvLytzQnFmL3BBYTMvNFFHdS8vQUJyLy9XQWJELzV3R3kvOXdCcy8vY0FiVC80d0cxLzkwQnR2L09BYmovMUFHNS85c0J1Ly9kQWJ6LzFnRzkvOTBCOXYvQkFmai8zQUg3LzhFQi9QL0JBZjMvd1FILy84RUNBUC9CQWdILzFnSUMvOEVDQS8vQkFnVC8zQUlHLytFQ0IvL2NBZ24vd1FJTC84RUNEUC9CQWcvL3dRSVIvOEVDRS8vY0FoVC8zQUlXLzhFQ0YvL2NBaDMvd1FJZi84RUNJUC9CQWlILzRRSTIvOVlDT1AvaEFqci80UUk4Lzl3Q1FQL2NBa1QvM0FKTi84RUNYZi9CQW1YL3dRSm4vOEVDYS8vY0FtMy8zQUp4LytFQ2l2L0JBb3ovd1FLUS84RUNtZi9jQXB2LzNBS2QvOXdDcGYvQkFxZi93UUtwLzlZQ3EvL2NBcTMvMWdLeC8rRUNzLy9oQXJYLzRRSzUvOEVDdS8vQkFyMy93UUxELzl3Q3hQL2NBc1gvM0FMUC85d0M1Ly9CQXh2LzNBTWQvOXdESC8vY0F5SC8zQU1qLzl3REpmL2NBeWYvM0FNcC85d0RMLy9XQXpILzFnTXovOVlETmYvV0F6Zi8xZ001LzlZRE8vL1dBejMvM0FNLy85d0RRZi9jQTBQLzFnTkYvOXdEUi8vZEEwbi8zUU5MLzkwRFRmL2RBMC8vM1FOUi85MERVLy9kQTFYLzRRTlgvK0VEV2YvaEExdi80UUIyQUFiLzJnQUwvOW9BUi8vd0FFai84QUJKLy9BQVMvL3dBRlgvOEFCWi8rOEFXdi9jQUYzLzNBQ3EvL0FBcS8vd0FLei84QUN0Ly9BQXJ2L3dBTHovN3dDOS8rOEF2di92QUwvLzd3REEvOXdBd3YvY0FNci84QURNLy9BQXp2L3dBTkQvOEFEUy8vQUExdi93QU5qLzhBRGEvL0FBM1Avd0FONy84QURnLy9BQTR2L3dBT1QvOEFEbS8vQUJGdi93QVN6Lzd3RXUvKzhCTVAvdkFUTC83d0UwLys4Qk52L3ZBVHIvM0FGRy8vQUJTUC92QVdiLzJnR2MvL0FCb1AvdkFhSC84QUdqLzl3QnFQL3NBYXNBRHdHdC85d0JzUC9xQWJMLzhBR3ovL0FCdFAvT0FiWC83d0cyLytjQnUvL3ZBYjMvN3dINC8vQUNCUC93QWdiLzNBSUgvL0FDRS8vd0FoVC84QUlYLy9BQ0lmL2NBamovM0FJNi85d0NQUC93QWtELzhBSkUvL0FDYS8vd0FtMy84QUp4Lzl3Q21mL3dBcHYvOEFLZC8vQUNxLy93QXJILzNBS3ovOXdDdGYvY0FzUC84QUxFLy9BQ3hmL3dBcy8vOEFNYi8vQURIZi93QXgvLzhBTWgvL0FESS8vd0F5WC84QU1uLy9BREtmL3dBejMvOEFNLy8vQURRZi93QTBYLzhBTkgvKzhEU2YvdkEwdi83d05OLys4RFQvL3ZBMUgvN3dOVC8rOERWZi9jQTFmLzNBTlovOXdEVy8vY0EzRC8yZ054LzlvRGMvL2FBM1QvMmdOMS85b0Rmdi9hQTMvLzJnQkVBQkFBREFBU0FBd0FSLy9uQUVqLzV3QkovK2NBUy8vbkFGWC81d0NxLytjQXEvL25BS3ovNXdDdC8rY0Fydi9uQU1yLzV3RE0vK2NBenYvbkFORC81d0RTLytjQTF2L25BTmovNXdEYS8rY0EzUC9uQU43LzV3RGcvK2NBNHYvbkFPVC81d0RtLytjQkZ2L25BVWIvNXdHYy8rY0JvZi9uQWFzQUR3R3kvK2NCcy8vbkFmai81d0lFLytjQ0IvL25BaFAvNXdJVS8rY0NGLy9uQWp6LzV3SkEvK2NDUlAvbkFtdi81d0p0LytjQ21mL25BcHYvNXdLZC8rY0NxLy9uQXNQLzV3TEUvK2NDeGYvbkFzLy81d01iLytjREhmL25BeC8vNXdNaC8rY0RJLy9uQXlYLzV3TW4vK2NES2YvbkF6My81d00vLytjRFFmL25BMFgvNXdOeUFBd0RkZ0FNQTNvQURBTjdBQXdBQmdHMC8rb0I5Ly91QWdYLzFRSVAvKzBDWS8vc0F0SC83QUFCQWdYL3dBQUJBYlFBSUFCK0FBWUFEQUFMQUF3QVIvL29BRWovNkFCSi8rZ0FTZ0FNQUV2LzZBQlQvK29BVmYvb0FGb0FDd0JkQUFzQXF2L29BS3YvNkFDcy8rZ0FyZi9vQUs3LzZBQzEvK29BdHYvcUFMZi82Z0M0LytvQXVmL3FBTUFBQ3dEQ0FBc0F5di9vQU16LzZBRE8vK2dBMFAvb0FOTC82QURXLytnQTJQL29BTnIvNkFEYy8rZ0Ezdi9vQU9ELzZBRGkvK2dBNVAvb0FPYi82QUVRLytvQkV2L3FBUlQvNmdFVy8rZ0JPZ0FMQVViLzZBRm1BQXdCblAvb0FhSC82QUdqQUFzQnEvK1FBYTBBQ3dHdi8rb0JzQUFMQWJMLzZBR3ovK2dCdEFBTUFiei82Z0g0LytnQ0FmL3FBZ1QvNkFJR0FBc0NCLy9vQWhQLzZBSVUvK2dDRi8vb0FpRUFDd0kyLytvQ09BQUxBam9BQ3dJOC8rZ0NRUC9vQWtULzZBSnIvK2dDYmYvb0FuRUFDd0taLytnQ20vL29BcDMvNkFLcC8rb0NxLy9vQXEzLzZnS3hBQXNDc3dBTEFyVUFDd0xELytnQ3hQL29Bc1gvNkFMUC8rZ0RHLy9vQXgzLzZBTWYvK2dESWYvb0F5UC82QU1sLytnREovL29BeW4vNkFNdi8rb0RNZi9xQXpQLzZnTTEvK29ETi8vcUF6bi82Z003LytvRFBmL29Bei8vNkFOQi8rZ0RRLy9xQTBYLzZBTlZBQXNEVndBTEExa0FDd05iQUFzRGNBQU1BM0VBREFOekFBd0RkQUFNQTNVQURBTitBQXdEZndBTUE5Y0FEUVBaQUE0RDJ2LzFBOXovN0FQZS8rMEQ1di9zQStyLzdnUHMvNzhEOXdBTkFBRUNCZi9pQUEwQVhQL3RBRjcvN1FFOS8rMEJQLy90QVVILzdRSDUvKzBDQmYvQUFnai83UUpaLyswQ2RmL3RBb1QvN1FLZi8rMEN2Ly90QUF3QVhQL3lBRjcvOGdFOS8vSUJQLy95QVVILzhnSDUvL0lDQ1AveUFsbi84Z0oxLy9JQ2hQL3lBcC8vOGdLLy8vSUFId0JhLy9RQVhQL3lBRjMvOUFCZS8vTUF3UC8wQU1MLzlBRTYvL1FCUGYvekFULy84d0ZCLy9NQm8vLzBBYTMvOUFINS8vSUNCdi8wQWdqLzhnSWgvL1FDT1AvMEFqci85QUpaLy9JQ2NmLzBBblgvOGdLRS8vSUNuLy95QXJILzlBS3ovL1FDdGYvMEFyLy84Z05WLy9RRFYvLzBBMW4vOUFOYi8vUUFYUUFHLzhvQUMvL0tBRGovMGdBNi85UUFQUC8wQUQzLzB3QmEvK1lBWFAvdkFGMy81Z0NnLzlNQXdQL21BTUwvNWdFbC85SUJKLy9TQVRuLzB3RTYvK1lCTy8vVEFXTC8wZ0ZtLzhvQmYvL1RBWlgvMHdHWC8vUUJtLy9UQWFQLzVnR3QvK1lCeGYvU0FjNy8wZ0hSLyswQjJmLzBBZVgvMGdIbS8rMEI2UC8wQWVyLzRRSHYvOVFCK2YvdkFnWC95UUlHLytZQ0NQL3ZBZy8vMFFJaC8rWUNKUC9sQWpmLzFBSTQvK1lDT2YvVUFqci81Z0pDLytNQ1dQLzBBbG4vN3dKaS85SUNZLy9FQW03LzBnSncvOU1DY2YvbUFuTC8wd0owLy9RQ2RmL3ZBbmIvMGdKNC8rRUNldi9oQW9QLzlBS0UvKzhDamYvaEFwNy85QUtmLys4Q3NQL3RBckgvNWdLeS8rMENzLy9tQXJULzdRSzEvK1lDdHYvaEFyNy85QUsvLys4Q3h2L1VBc2YvOVFMSS8rY0MwUDlrQXRIL3lRTlUvOU1EVmYvbUExYi8wd05YLytZRFdQL1RBMW4vNWdOYS85TURXLy9tQTNEL3lnTngvOG9EYy8vS0EzVC95Z04xLzhvRGZ2L0tBMy8veWdCc0FBYi93QUFMLzhBQU9QK2RBRHIveHdBOC8vQUFQZityQUZILzBnQlMvOUlBVlAvU0FLRC9xd0MwLzlJQkIvL1NBUW4vMGdFTC85SUJEUC9TQVNYL25RRW4vNTBCT2YrckFUdi9xd0ZpLzUwQlp2L0FBWC8vcXdHVi82c0JsLy93QVp2L3F3R2UvOUlCcC8vU0FjWC9uUUhNLy9VQnp2K2RBZEgvNmdIWi8vQUIzdi8xQWVYL25RSG0vK29CNlAvd0Flci81UUh2LzhFQjl2L1NBZnYvMGdIOC85SUIvZi9TQWYvLzBnSUEvOUlDQXYvU0FnUC8wZ0lGLzgwQ0NmL1NBZ3YvMGdJTS85SUNELy9TQWhILzBnSVcvOUlDSGYvU0FoLy8wZ0lnLzlJQ04vL0hBam4veHdKTi85SUNXUC93QWwzLzBnSmkvNTBDWS8vTUFtWC8wZ0puLzlJQ2J2K2RBbkQvcXdKeS82c0NkUC93QW5iL25RSjQvK1VDZXYvbEFuNy8zd0tELy9BQ2gvLzFBb3IvMGdLTS85SUNqZi9sQXBELzBnS2UvL0FDcGYvU0FxZi8wZ0t3LytvQ3N2L3FBclQvNmdLMi8rVUN1Zi9TQXJ2LzBnSzkvOUlDdnYvd0FzYi96Z0xJLytvQ3l2LzFBdEQvbmdMUi84NEMxUC8xQXVmLzBnTlUvNnNEVnYrckExai9xd05hLzZzRGNQL0FBM0gvd0FOei84QURkUC9BQTNYL3dBTisvOEFEZi8vQUFHOEFCdit4QUF2L3NRQTQvNTRBT3YvRkFEei84Z0E5LzZnQVVmL1BBRkwvendCVS84OEFYUC92QUtEL3FBQzAvODhCQi8vUEFRbi96d0VMLzg4QkRQL1BBU1gvbmdFbi81NEJPZitvQVR2L3FBRmkvNTRCWnYreEFYLy9xQUdWLzZnQmwvL3lBWnYvcUFHZS84OEJwLy9QQWNYL25nSE8vNTRCMGYvc0Fkbi84Z0hsLzU0QjV2L3NBZWovOGdIcS8rRUI3Ly9DQWZiL3p3SDUvKzhCKy8vUEFmei96d0g5Lzg4Qi8vL1BBZ0QvendJQy84OENBLy9QQWdYL3hnSUkvKzhDQ2YvUEFndi96d0lNLzg4Q0QvL1BBaEgvendJVy84OENIZi9QQWgvL3p3SWcvODhDTi8vRkFqbi94UUpOLzg4Q1dQL3lBbG4vN3dKZC84OENZditlQW1QL3dBSmwvODhDWi8vUEFtNy9uZ0p3LzZnQ2N2K29BblQvOGdKMS8rOENkditlQW5qLzRRSjYvK0VDZnYvZkFvUC84Z0tFLys4Q2l2L1BBb3ovendLTi8rRUNrUC9QQXA3LzhnS2YvKzhDcGYvUEFxZi96d0t3Lyt3Q3N2L3NBclQvN0FLMi8rRUN1Zi9QQXJ2L3p3SzkvODhDdnYveUFyLy83d0xHLzgwQ3lQL29BdEQvbndMUi84WUM1Ly9QQTFUL3FBTlcvNmdEV1Arb0Exci9xQU53LzdFRGNmK3hBM1Avc1FOMC83RURkZit4QTM3L3NRTi8vN0VBVFFBNC83NEFVZi9oQUZMLzRRQlUvK0VBV3YvdkFGMy83d0MwLytFQXdQL3ZBTUwvN3dFSC8rRUJDZi9oQVF2LzRRRU0vK0VCSmYrK0FTZi92Z0U2Lys4Qll2KytBWjcvNFFHai8rOEJwLy9oQWEzLzd3SEYvNzRCenYrK0FlWC92Z0h2LzhrQjl2L2hBZnYvNFFIOC8rRUIvZi9oQWYvLzRRSUEvK0VDQXYvaEFnUC80UUlGLzk4Q0J2L3ZBZ24vNFFJTC8rRUNEUC9oQWcvLzRRSVIvK0VDRnYvaEFoMy80UUlmLytFQ0lQL2hBaUgvN3dJay8rMENPUC92QWpyLzd3SkMvK3NDVGYvaEFsMy80UUppLzc0Q1kvL2ZBbVgvNFFKbi8rRUNidisrQW5ILzd3SjIvNzRDZnYvcEFvci80UUtNLytFQ2tQL2hBcVgvNFFLbi8rRUNzZi92QXJQLzd3SzEvKzhDdWYvaEFydi80UUs5LytFQ3gvLzFBdEgvNEFMbi8rRURWZi92QTFmLzd3TlovKzhEVy8vdkFHUUFPUC9tQURyLzV3QTgvL0lBUGYvbkFGSC8xZ0JTLzlZQVZQL1dBRnovOFFDZy8rY0F0UC9XQVFmLzFnRUovOVlCQy8vV0FRei8xZ0VsLytZQkovL21BVG4vNXdFNy8rY0JZdi9tQVgvLzV3R1YvK2NCbC8veUFadi81d0dlLzlZQnAvL1dBY1gvNWdITy8rWUIwZi91QWRuLzhnSGwvK1lCNXYvdUFlai84Z0hxLytnQjcvL21BZmIvMWdINS8vRUIrLy9XQWZ6LzFnSDkvOVlCLy8vV0FnRC8xZ0lDLzlZQ0EvL1dBZ1gvMEFJSS8vRUNDZi9XQWd2LzFnSU0vOVlDRC8vV0FoSC8xZ0lXLzlZQ0hmL1dBaC8vMWdJZy85WUNOLy9uQWpuLzV3Sk4vOVlDV1AveUFsbi84UUpkLzlZQ1l2L21BbVAvemdKbC85WUNaLy9XQW03LzVnSncvK2NDY3YvbkFuVC84Z0oxLy9FQ2R2L21BbmovNkFKNi8rZ0NnLy95QW9ULzhRS0svOVlDalAvV0FvMy82QUtRLzlZQ252L3lBcC8vOFFLbC85WUNwLy9XQXJELzdnS3kvKzRDdFAvdUFyYi82QUs1LzlZQ3UvL1dBcjMvMWdLKy8vSUN2Ly94QXNiLzV3TEkvKzBDMFAvbUF0SC8wQUxuLzlZRFZQL25BMWIvNXdOWS8rY0RXdi9uQUFJQ0xRQUxBdEQvNWdDVEFDVUFFQUFuLytnQUsvL29BRFAvNkFBMS8rZ0FPUC9nQURyLzRBQTkvOThBZ3dBUUFJUUFFQUNGQUJBQWhnQVFBSWNBRUFDSUFCQUFpdi9vQUpYLzZBQ1cvK2dBbC8vb0FKai82QUNaLytnQW0vL29BS0QvM3dEREFCQUF4UUFRQU1jQUVBREovK2dBeS8vb0FNMy82QURQLytnQTMvL29BT0gvNkFEai8rZ0E1Zi9vQVEvLzZBRVIvK2dCRS8vb0FSWC82QUVsLytBQkovL2dBVG4vM3dFNy85OEJSZi9vQVU0QUVBRlMvK2dCWXYvZ0FYa0FFQUYrLytnQmYvL2ZBWUlBRUFHRkFCQUJpZi9vQVl3QUVBR1EvK2dCbGYvZkFadi8zd0hGLytBQngvL29BY3dBRUFITy8rQUIwd0FRQWRjQUZBSGVBQkFCNGYvb0FlVC82QUhsLytBQjZ2L2hBZS8vNEFIM0FCTUIvZ0FRQWdyLzRBSWNBQkFDSS8vb0Fpa0FFQUkxLytnQ04vL2dBam4vNEFJNy8rZ0NQZi9vQWovLzZBSkIvK2dDUS8vb0FtTC80QUpxLytnQ2JQL29BbTcvNEFKdy85OENjdi9mQW5iLzRBSjQvK0VDZWYvZ0Fuci80UUo3LytBQ2YvL2hBb2NBRUFLSUFCQUNqZi9oQW83LzRBS1NBQkFDbEFBUUFwci82UUtvLytnQ3F2L29BcXovNkFLMi8rRUN0Ly9nQXNiLzN3TEkvOTRDeWdBUUFzNy82QUxRLzk4QzB2L3lBdFFBRUFMVkFCQUMxZ0FRQXdJQUVBTUVBQkFEQmdBUUF3Z0FFQU1LQUJBRERBQVFBdzRBRUFNUUFCQURFZ0FRQXhRQUVBTVdBQkFER0FBUUF5Ny82QU13LytnRE12L29BelQvNkFNMi8rZ0RPUC9vQXpyLzZBTTgvK2dEUHYvb0EwRC82QU5DLytnRFJQL29BMVQvM3dOVy85OERXUC9mQTFyLzN3TmMvK2dFTWYvb0JETC82QVEwLytnRU5mL29BRElBRy8veUFEai84UUE2Ly9RQVBQLzBBRDMvOEFDZy8vQUJKZi94QVNmLzhRRTUvL0FCTy8vd0FXTC84UUYvLy9BQmxmL3dBWmYvOUFHYi8vQUJ4Zi94QWN6LzlRSE8vL0VCMGYvekFkbi85QUhlLy9VQjVmL3hBZWIvOHdIby8vUUI3Ly94QWpmLzlBSTUvL1FDV1AvMEFtTC84UUp1Ly9FQ2NQL3dBbkwvOEFKMC8vUUNkdi94QW9QLzlBS0gvL1VDbnYvMEFyRC84d0t5Ly9NQ3RQL3pBcjcvOUFMRy8vSUN5UC95QXNyLzlRTFEvL0lDMVAvMUExVC84QU5XLy9BRFdQL3dBMXIvOEFBSUFGZ0FEZ0NKL3RjQnEvK1lBYkgveHdIWC94SUI5LzlTQXNML3p3UHMvNEFBWmdBbEFBOEFPUC9tQURyLzVnQThBQTRBUGYvbUFJTUFEd0NFQUE4QWhRQVBBSVlBRHdDSEFBOEFpQUFQQUtELzVnRERBQThBeFFBUEFNY0FEd0VsLytZQkovL21BVG4vNWdFNy8rWUJUZ0FQQVdMLzVnRjVBQThCZi8vbUFZSUFEd0dGQUE4QmpBQVBBWlgvNWdHWEFBNEJtLy9tQWNYLzVnSE1BQTRCenYvbUFkRUFDd0hUQUE4QjF3QVRBZGtBRGdIZUFBNEI1Zi9tQWVZQUN3SG9BQTRCNnYvbEFlLy81Z0h3Ly9RQjl3QVNBZjRBRHdJRi8rY0NDdi9vQWcvLzV3SWNBQThDS1FBUEFqZi81Z0k1LytZQ1dBQU9BbUwvNWdKai8rY0Nidi9tQW5ELzVnSnkvK1lDZEFBT0FuYi81Z0o0LytVQ2VmL29BbnIvNVFKNy8rZ0Nnd0FPQW9jQURnS0lBQThDamYvbEFvNy82QUtTQUE4Q2xBQVBBcDRBRGdLd0FBc0NzZ0FMQXJRQUN3SzIvK1VDdC8vb0FyNEFEZ0xHLytZQ3lQL21Bc29BRGdMUS8rWUMwZi9uQXRRQURnTFZBQThDMWdBUEF3SUFEd01FQUE4REJnQVBBd2dBRHdNS0FBOEREQUFQQXc0QUR3TVFBQThERWdBUEF4UUFEd01XQUE4REdBQVBBMVQvNWdOVy8rWURXUC9tQTFyLzVnQTNBQWIvdndBTC83OEFPUCtmQURyL3lRQTkvNjBBb1ArdEFTWC9ud0VuLzU4Qk9mK3RBVHYvclFGaS81OEJadisvQVgvL3JRR1YvNjBCbS8rdEFjWC9ud0hPLzU4QjBmL3NBZVgvbndIbS8rd0I2di9tQWUvL3hBSUYvODBDRC8vVkFqZi95UUk1LzhrQ1l2K2ZBbVAvekFKdS81OENjUCt0QW5ML3JRSjIvNThDZVAvbUFuci81Z0orLzk4Q2pmL21BckQvN0FLeS8rd0N0UC9zQXJiLzVnTEcvOUVDeVAvc0F0RC9vUUxSLzg4RFZQK3RBMWIvclFOWS82MERXdit0QTNEL3Z3TngvNzhEYy8rL0EzVC92d04xLzc4RGZ2Ky9BMy8vdndBd0FEai80d0E4LytVQVBmL2tBS0QvNUFFbC8rTUJKLy9qQVRuLzVBRTcvK1FCWXYvakFYLy81QUdWLytRQmwvL2xBWnYvNUFIRi8rTUJ6UC9sQWM3LzR3SFIvK2tCMS8vaUFkbi81UUhlLytVQjVmL2pBZWIvNlFIby8rVUIvdi9xQWh6LzZnSlkvK1VDWXYvakFtNy80d0p3LytRQ2N2L2tBblQvNVFKMi8rTUNnLy9sQW9mLzVRS0kvK29DbnYvbEFyRC82UUt5LytrQ3RQL3BBcjcvNVFMSy8rVUMwUC9rQXRULzVRTFYvK29EVlAva0ExYi81QU5ZLytRRFd2L2tBQ01BT1AvaUFEei81QUVsLytJQkovL2lBV0wvNGdHWC8rUUJ4Zi9pQWN6LzVBSE8vK0lCMGYvcEFkZi80UUhaLytRQjN2L2tBZVgvNGdIbS8ra0I2UC9rQWZmLzVBSCsvK3NDSFAvckFsai81QUppLytJQ2J2L2lBblQvNUFKMi8rSUNnLy9rQW9mLzVBS0kvK3NDbnYva0FyRC82UUt5LytrQ3RQL3BBcjcvNUFMSy8rUUMxUC9rQXRYLzZ3QVhBRGovNndBOS8vTUFvUC96QVNYLzZ3RW4vK3NCT2YvekFUdi84d0ZpLytzQmYvL3pBWlgvOHdHYi8vTUJ4Zi9yQWM3LzZ3SGwvK3NDWXYvckFtNy82d0p3Ly9NQ2N2L3pBbmIvNndOVS8vTURWdi96QTFqLzh3TmEvL01BTmdCUi8rOEFVdi92QUZULzd3QmMvL0FBdFAvdkFRZi83d0VKLys4QkMvL3ZBUXovN3dHZS8rOEJwLy92QWZiLzd3SDMvKzRCK2Yvd0Fmdi83d0g4Lys4Qi9mL3ZBZi8vN3dJQS8rOENBdi92QWdQLzd3SUYvKzRDQ1Avd0Fnbi83d0lMLys4Q0RQL3ZBZy8vN3dJUi8rOENGdi92QWgzLzd3SWYvKzhDSVAvdkFpVC85QUpDLy9FQ1RmL3ZBbG4vOEFKZC8rOENZLy92QW1YLzd3Sm4vKzhDZGYvd0FvVC84QUtLLys4Q2pQL3ZBcEQvN3dLZi8vQUNwZi92QXFmLzd3SzUvKzhDdS8vdkFyMy83d0svLy9BQzBmL3ZBdWYvN3dBaUFBYi84Z0FMLy9JQVd2LzFBRjMvOVFEQS8vVUF3di8xQVRyLzlRRm0vL0lCby8vMUFhMy85UUlGLy9RQ0J2LzFBZy8vOUFJaC8vVUNKUC8xQWpqLzlRSTYvL1VDWS8vMUFuSC85UUt4Ly9VQ3MvLzFBclgvOVFMUi8vVURWZi8xQTFmLzlRTlovL1VEVy8vMUEzRC84Z054Ly9JRGMvL3lBM1QvOGdOMS8vSURmdi95QTMvLzhnQXlBRkgvN2dCUy8rNEFWUC91QUxULzdnRUgvKzRCQ2YvdUFRdi83Z0VNLys0Qm52L3VBYWYvN2dIMi8rNEI5d0FVQWZ2LzdnSDgvKzRCL2YvdUFmLy83Z0lBLys0Q0F2L3VBZ1AvN2dJRi8rMENDZi91QWdyLzdRSUwvKzRDRFAvdUFnMy8wQUlQLys0Q0VmL3VBaGIvN2dJZC8rNENILy91QWlELzdnSk4vKzRDWGYvdUFtUC83UUpsLys0Q1ovL3VBbm4vN1FKNy8rMENpdi91QW96LzdnS08vKzBDa1AvdUFxWC83Z0tuLys0Q3QvL3RBcm4vN2dLNy8rNEN2Zi91QXRILzdRTG4vKzRBQ2dBRy8vVUFDLy8xQVdiLzlRTncvL1VEY2YvMUEzUC85UU4wLy9VRGRmLzFBMzcvOVFOLy8vVUFXUUJILy9BQVNQL3dBRW4vOEFCTC8vQUFVLy9IQUZYLzhBQ3EvL0FBcS8vd0FLei84QUN0Ly9BQXJ2L3dBTFgveHdDMi84Y0F0Ly9IQUxqL3h3QzUvOGNBeXYvd0FNei84QURPLy9BQTBQL3dBTkwvOEFEVy8vQUEyUC93QU5yLzhBRGMvL0FBM3Yvd0FPRC84QURpLy9BQTVQL3dBT2IvOEFFUS84Y0JFdi9IQVJUL3h3RVcvL0FCUnYvd0Faei84QUdoLy9BQnIvL0hBYkwvOEFHei8vQUJ2UC9IQWZqLzhBSUIvOGNDQlAvd0FnZi84QUlULy9BQ0ZQL3dBaGYvOEFJMi84Y0NQUC93QWo3LzZ3SkEvL0FDUlAvd0Ftdi84QUp0Ly9BQ21mL3dBcHYvOEFLZC8vQUNxZi9IQXF2LzhBS3QvOGNDdy8vd0FzVC84QUxGLy9BQ3ovL3dBeHYvOEFNZC8vQURILy93QXlILzhBTWovL0FESmYvd0F5Zi84QU1wLy9BREwvL0hBekgveHdNei84Y0ROZi9IQXpmL3h3TTUvOGNETy8vSEF6My84QU0vLy9BRFFmL3dBMFAveHdORi8vQUQzUC9yQTk3LzZ3UG0vK2tENnYvckFLRUFCZ0FOQUFzQURRQkYvL0FBUi8vQUFFai93QUJKLzhBQVNnQU5BRXYvd0FCVC8rSUFWZi9BQUZvQUN3QmRBQXNBby8vd0FLVC84QUNsLy9BQXB2L3dBS2YvOEFDby8vQUFxdi9BQUt2L3dBQ3MvOEFBcmYvQUFLNy93QUMxLytJQXR2L2lBTGYvNGdDNC8rSUF1Zi9pQU1BQUN3RENBQXNBeFAvd0FNYi84QURJLy9BQXl2L0FBTXovd0FETy84QUEwUC9BQU5ML3dBRFcvOEFBMlAvQUFOci93QURjLzhBQTN2L0FBT0Qvd0FEaS84QUE1UC9BQU9iL3dBRVEvK0lCRXYvaUFSVC80Z0VXLzhBQk9nQUxBVWIvd0FGUC8vQUJaZ0FOQVp6L3dBR2gvOEFCb3dBTEFhMEFDd0d2LytJQnNmL1dBYkwvd0FHei84QUJ0di9WQWJ6LzRnSHovL0FCOS8vSUFmai93QUgrLzljQ0FmL2lBZ1Qvd0FJR0FBc0NCLy9BQWhQL3dBSVUvOEFDRi8vQUFoei8xd0loQUFzQ052L2lBamdBQ3dJNkFBc0NQUC9BQWo3LzdBSkEvOEFDUWdBTUFrVC93QUpyLzhBQ2JmL0FBbkVBQ3dLSS85Y0NrLy93QXBYLzhBS1ovOEFDbS8vQUFwMy93QUtwLytJQ3EvL0FBcTMvNGdLeEFBc0Nzd0FMQXJVQUN3TEQvOEFDeFAvQUFzWC93QUxIQUFzQ3lRQUxBcy8vd0FMVi85Y0MxLy93QXdQLzhBTUYvL0FEQi8vd0F3bi84QU1MLy9BRERmL3dBdy8vOEFNUi8vQURFLy93QXhYLzhBTVgvL0FER2Yvd0F4di93QU1kLzhBREgvL0FBeUgvd0FNai84QURKZi9BQXlmL3dBTXAvOEFETC8vaUF6SC80Z016LytJRE5mL2lBemYvNGdNNS8rSURPLy9pQXozL3dBTS8vOEFEUWYvQUEwUC80Z05GLzhBRFZRQUxBMWNBQ3dOWkFBc0RXd0FMQTNBQURRTnhBQTBEY3dBTkEzUUFEUU4xQUEwRGZnQU5BMzhBRFFQWEFBMEQyUUFPQTlyLzlRUGMvK3dEM3YvdEErYi83QVBxLys0RDdQKy9BL2NBRFFBUEFmY0FGQUgrQUJBQ0JmL3dBZ3IvOEFJUC8vQUNFZ0FXQWh3QUVBSmovK1lDZWYvd0Fudi8zQUtJQUJBQ2p2L3dBcmYvOEFMUi8vQUMxUUFRQUV3QVIvL3VBRWovN2dCSi8rNEFTLy91QUZYLzdnQ3EvKzRBcS8vdUFLei83Z0N0Lys0QXJ2L3VBTXIvN2dETS8rNEF6di91QU5ELzdnRFMvKzRBMXYvdUFOai83Z0RhLys0QTNQL3VBTjcvN2dEZy8rNEE0di91QU9ULzdnRG0vKzRCRnYvdUFVYi83Z0djLys0Qm9mL3VBYkwvN2dHei8rNEI5d0FTQWZqLzdnSCtBQTRDQlAvdUFnWC80d0lILys0Q0N2L2pBZzMvdUFJUC8rTUNFLy91QWhULzdnSVgvKzRDSEFBT0Fqei83Z0pBLys0Q1JQL3VBbVAvdWdKci8rNENiZi91QW5uLzR3SjcvOWtDaUFBT0FvNy80d0taLys0Q20vL3VBcDMvN2dLci8rNEN0Ly9qQXNQLzdnTEUvKzRDeGYvdUFzLy83Z0xSLytNQzFRQU9BeHYvN2dNZC8rNERILy91QXlILzdnTWovKzRESmYvdUF5Zi83Z01wLys0RFBmL3VBei8vN2dOQi8rNERSZi91QUNBQVd2L0FBRjMvd0FEQS84QUF3di9BQVRyL3dBR2ovOEFCcmYvQUFnWC9nQUlHLzhBQ0N2L3VBZy8vOEFJaC84QUNKUC9iQWpqL3dBSTYvOEFDUXYvY0FtUC9Sd0p4LzhBQ2VmL3VBbnYvN2dLTy8rNENzZi9BQXJQL3dBSzEvOEFDdC8vdUFzY0FCd0xKLy9RQzBmOS9BMVgvd0FOWC84QURXZi9BQTF2L3dBQWhBRnIvOUFCYy8vQUFYZi8wQU1ELzlBREMvL1FCT3YvMEFhUC85QUd0Ly9RQjkvL3ZBZm4vOEFIKy8vTUNCdi8wQWdqLzhBSVAvKzRDSFAvekFpSC85QUk0Ly9RQ092LzBBbG4vOEFKeC8vUUNkZi93QW9ULzhBS0kvL01Dbi8vd0FySC85QUt6Ly9RQ3RmLzBBci8vOEFMVi8vTURWZi8wQTFmLzlBTlovL1FEVy8vMEFBb0FCdi9XQUF2LzFnRm0vOVlEY1AvV0EzSC8xZ056LzlZRGRQL1dBM1gvMWdOKy85WURmLy9XQUJVQVhQL2dBZm4vNEFJRi8zWUNDUC9nQWdyL3dnSVAvOU1DSlAvWkFrTC8yd0paLytBQ1kvOGVBblgvNEFKNS84SUNlLy90QW9ULzRBS08vOElDbi8vZ0FyZi93Z0svLytBQ3gvL3dBc24vOGdMUi8xWUFEUUlGLzJRQ0N2L1NBZy8vMlFJay85a0NRdi9iQW1QL0hnSjUvOUlDZS8vdEFvNy8wZ0szLzlJQ3gvL3dBc24vOGdMUi8xWUFDZ0h2LzhNQ0JmL1BBZy8vMUFKai84NENldi9uQW43LzN3TEcvOUVDeVAvc0F0RC9vQUxSLzlFQUNRSUYvMm9DRC8vR0FpVC8yUUpDLzlzQ1kvOGVBbnYvN1FMSC8vQUN5Zi95QXRIL1ZnQUpBQTBBRkFCQkFCRUFWdi9pQUdFQUV3UGMvOWtEM3YvWkErYi8yUVBxLzlrRDdQKzBBQW9BQnYvWEFBdi8xd0ZtLzljRGNQL1hBM0gvMXdOei85Y0RkUC9YQTNYLzF3TisvOWNEZi8vWEFCUUFXLy9CQVpiL3hRRzAvN1FCOVAvWEFnWC91UUlQLytrQ0pQK3lBajcvMGdKQy84Z0NZLytnQW52L3hRS2EvK1FDeC8vTUFzbi96QUxSLzhzQzB2L3ZBOXovNXdQZS8rY0Q1di9tQStyLzZBQTZBQVQveEFCVy83OEFXLy9SQUc3L2JBQisvMjRBaWY5REFLbi9yQUM3LzZFQmx2KzRBYVgvZmdHcC8zc0JzUCtiQWJIL2VRRzAvN0lCdHY5K0Fiai9mUUc1LzN3QjEvK3ZBZThBRHdIMC8rUUI5ZitnQWZmL2RBSDYvNEFDQmYreUFnNy9mUUlQLzdJQ0VQK0FBaEwvZVFJVkFDZ0NJdjk5QWlUL2Z3SSsvMllDUXYvYUFsSC9nUUpULzVnQ1gvOTlBbVAvc3dKcC82QUNlLzk4QW43L21nSi8vMndDbXYvbUFzTC9hd0xILzVJQ3lmK3RBczMvZXdMUUFBOEMwZitSQXRMLzhnUFcvL0VEMmYveEE5ci92QVBjLzdrRDN2KzVBK2IvdVFQcS83a0Q3UCt2QS9iLzdRQUdBYlQvNmdIMy8rNENCZi9XQWcvLzdRSmovK3dDMGYvc0FCSUIxLyt1QWU4QUVnSDEvK0FCOS8rdEFmci8xZ0lPLzk4Q0V2L1NBaUwvNEFJKy84NENVZi9kQWxQLzRnSmYvK0FDYWYvZ0Fudi82UUovLzlvQ3d2KzlBczMvM3dMUUFCRUFNQUJXLzM0QVcvK2RBRzcrOFFCKy92UUFpZjZyQUtuL1hnQzcvMHNCbHY5eUFhWC9Ed0dwL3dvQnNQOUJBYkgvQndHMC8yZ0J0djhQQWJqL0RnRzUvd3dCMS85akFlOEFCUUgwLzcwQjlmOUpBZmYrL2dINi94TUNCZjlvQWc3L0RnSVAvMmdDRVA4VEFoTC9Cd0lWQURBQ0l2OE9BaVQvRVFJKy91Y0NRditzQWxIL0ZRSlQvendDWC84T0FtUC9hZ0pwLzBrQ2UvOE1BbjcvUHdKLy92RUNtdi9BQXNMKzd3TEgvekVDeWY5ZkFzMy9DZ0xRQUFVQzBmOHdBdEwvMVFBQ0FmZi9hQUkrLys0QUZ3R1cvOVFCcVAvdEFhc0FFUUcwLytBQnR2L25BYmovNVFHNS8rNEIxd0FTQWZULzZRSUYvOWNDWS8vWEFudi8wd0orLzlZQ2YvL0ZBcHIvNXdMR0FBMEN5QUFNQXRILzFnTFMvL0lEM1AvcEE5Ny81d1BtLytjRDZ2L3BBQUVDUHYveEFBSUNCZi9XQTNIL2lBQUpBQTBBRHdCQkFBd0FWdi9yQUdFQURnUGMvK2NEM3YvbkErYi81d1BxLytrRDdQL0xBQjBBSS8rdkFGai83d0JiLzk4QlIvL3VBWmIvNVFHWS85RUJxd0FSQWJUL3lBSFhBQk1CNy8vRkFnWC95Z0lQLzlBQ1kvK0JBbnIvWlFKNy80VUNmdjltQW4vLzNRS2EvL0lDeHYreEFzai95Z0xRLzZrQzBmL0lBOWIvM1FQWC84MEQyUC94QTluL3h3UGUvL1VENXYvMUEvZi94QUFJQWdYLzhBSVAvL0FDSlAveEFrTC84d0pqLy9FQ3gvL3pBc24vOHdMUi8vRUFCUUJLLys0QVcvL3FBOWIvN1FQWC8vQUQ5Ly93QUFJQ0JmLzFBM0gvd0FBSUFkY0FGUUgzQUJVQ2V2L2tBbnYvNVFKKy8rUUN4di9qQXNqLzRnTFEvK1FBQ1FHMC8rb0I5Lys0QWdYLzRnSWsvL0FDUXYveEFtUC82d0xILy9VQzBmL3NBM0gva0FBQkErei82d0FpQUFyLzRnQU5BQlFBRHYvUEFFRUFFZ0JLLytvQVZ2L1lBRmovNmdCaEFCTUFidit1QUg3L3pRQ0ovNkFBcWYvQkFMdi93QUdXLzlBQm92L3FBYVgveGdHbUFBMEJxUC9wQWFuLzFnR3cvK2dCc2YrNkFiVC82UUcyLzhzQnVQL2FBYm4veHdONS85TUQxdi96QTluLzh3UGMvOHNEM3YvTEErYi95d1BxLzgwRDdQK3JBL2IvN3dBR0FFb0FEUUd3QUFzQnNmL3FBYlFBREFIMy84Z0NQdi94QUZ3QVIvK1lBRWovbUFCSi81Z0FTLytZQUZQL2NBQlYvNWdBVi84WUFGc0FDd0NxLzVnQXEvK1lBS3ovbUFDdC81Z0FyditZQUxYL2NBQzIvM0FBdC85d0FMai9jQUM1LzNBQXl2K1lBTXovbUFETy81Z0EwUCtZQU5ML21BRFcvNWdBMlArWUFOci9tQURjLzVnQTN2K1lBT0QvbUFEaS81Z0E1UCtZQU9iL21BRVEvM0FCRXY5d0FSVC9jQUVXLzVnQkh2OFlBU0QvR0FFaS94Z0JKUDhZQVViL21BRmgveGdCblArWUFhSC9tQUd2LzNBQnN2K1lBYlAvbUFHOC8zQUIrUCtZQWdIL2NBSUUvNWdDQi8rWUFoUC9tQUlVLzVnQ0YvK1lBaGovR0FJMi8zQUNQUCtZQWtEL21BSkUvNWdDYS8rWUFtMy9tQUtaLzVnQ20vK1lBcDMvbUFLcC8zQUNxLytZQXEzL2NBTEQvNWdDeFArWUFzWC9tQUxQLzVnREcvK1lBeDMvbUFNZi81Z0RJZitZQXlQL21BTWwvNWdESi8rWUF5bi9tQU12LzNBRE1mOXdBelAvY0FNMS8zQUROLzl3QXpuL2NBTTcvM0FEUGYrWUF6Ly9tQU5CLzVnRFEvOXdBMFgvbUFBQkFGc0FDd0FDQTljQURRUDNBQTBBQkFQVy8vVUQxLy94QTluLzhnUDMvKzRBQkFQVy8vRUQxLy9yQTluLzZRUDMvK1VBQkFQWC8vRUQyZi91QS9iLzdBUDMvK29BQndQVy85VUQxLyszQTlqLzdBUFovN3NEM1Avd0E5Ny83d1AzLzdRQUFnUGMvK3NEM3YvckFBSUQxdi8xQTlmLzdnQUpBOWIvMkFQWC84Y0QyUC9zQTluL3dBUGMvL0lEM3YveUErYi84Z1BxLy9JRDkvKy9BQVFBRGYvbUFFSC85QUJoLys4Q2YvL3RBQWtBaWYvZkFZLy84d0dULy9BQnEvL3FBZGYvM3dIdi8rQUMwUC9nQSt6LzdRUDIvL1VBQWdlS0FBUUFBQXFrRXFBQUlRQWRBQUQvMi8rSS84Ny94Zi9zLzZYL3BBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS91TUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUCtJQUFBQUFBQUEvOUQvOUFBQS8rdi9pUC92LzdQLzJmOXEvL1gvemdBTUFCSC95UUFTLzk4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLytVQUFQL29BQUQveVFBQUFBQUFBQUFBQUFBQUFBQUEvL01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQL2pBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rc0FBQUFBQUFBQUFBQUFBQUQvcXdBQS8rb0FBUC9WQUFBQUFBQUEvK0VBQUFBQUFBQUFBUCtHLytyLzZRQUFBQUFBQUFBQUFBQUFBQUFBQUFELzdRQUEvKzBBQUFBQUFCUUFBQUFBQUFBQUFQL3YvK1lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnQUFBQUFBQUFBQUFBQUFBUC9qQUFBQUFBQUEvK1FBQUFBQUFBQUFFZi9rQUJILzVRQUFBQUFBRVFBQUFBQUFBQUFBQUFBQUFBQUEvK29BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC81Z0FBLytVQUFQL2hBQUFBQUFBQUFBQUFBUC9wLzlnQUFBQUFBQUFBQVArakFBQUFBQUFBQUFEL1hBQUFBQUFBQUFBQS91QUFFd0FBQUFBQUFBQUFBQUQvd1A4ei8rai9NditqL3VuLzh2K0ZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLzA3LzlmL3pBQUQvOHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHdBQS8yOEFBUCtuQUFBQUFQNXMvODMvM0FBQS8wZ0FBQUFBQUFBQUFQK0kvMWovcC8rbi96RC90UC9rQUJBQUFBQVFBQThBRVArLy82Ny94UC9MQUFEL2Z2OThBQUQrL2dBQUFBRCs4UDhvLy9EL3N3QUFBQUQvdGYvUy85UUFBUC9TQUFELzh3QUFBQUFBQUFBQUFBRC81UC8xQUFBQUFBQUFBQUFBQUFBQS95a0FBQUFBLzJNQUFBQUFBQUFBQUFBQS85WC8zLy9oQUFELzRRQUFBQUFBRGdBQUFBQUFBQUFBLyswQUFBQUFBQUFBQUFBQUFBQUFBUDl4QUFBQUFQL0VBQUFBQUFBQUFBQUFBQUFBQUFELzVnQUEvK3NBQVAvbkFBQUFBQUFPQUFBQUFQL3IvK0VBQUFBUkFBQUFFZi9SQUFBQUFBQUFBQUQvWkFBQUFBQUFBQUFBQUFEL2F2L0IvNy8vMlArLy84Yi80d0FSLzZBQUVnQVJBQkwvMmYvcy8rSUFBQUFBQUFBQUFBQUEveGtBRFFBQS8yai9vUC93LytrQUFBQUFBQTBBQVAvckFBRC82d0FBLytZQUFBQUFBQUFBQUFBQS8rMy81UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvN3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLy9FQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzEvL0VBQUFBQS8vSUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8vRUFBUC8xQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELzhnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8vTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvN0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVArb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELzhmL3dBQUFBQVAvd0FBQUFBQUFBQUFBQUFBQUFBQUFBQVAvckFBQUFFQUFBLytMLzdRQUEvOXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQklBQUFBQUFBQUFBQUFBQUFEL1V3QUFBQUFBQUFBQUFBQUFBQUFBQUE4QUFQL3gvL01BQVAveEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLzljQUFBQUEvMWtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvc0FBRC8yQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC84QUFBLy9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC9NLzlmLzFYL1ZmOW0vMnYvdlFBSEFBQUFCd0FGQUFmL2Z2OWgvNGIva2dBQS93Ly9EQUFBL2pZQUFBQUEvaDRBQVAvUi8yb0FBUC9BQUFBQUFBQUFBQUFBQUFBQUFBRC9ud0FBLzhnQUFQK3RBQUFBQUFBQUFBRC81d0FBQUFELzZ3QUFBQUFBQUFBQUFBQUFBUC9KQUFBQUFQK2wvNi8vdmYrdS83My8wdi9wQUJJQUFBQUFBQUFBRWdBQUFBQUFBUC9LQUFEL3UvL3BBQUQrZHdBQUFBRC9PUUFBQUFBQUFBQUFBQUFBQUFBQS8rd0FBUC9zQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvOWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVA5NUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEL3RRQUFBQUFBQUFBQS8rTUFBQUFBQUFBQUFBQUFBQUFBQVAvckFBRUJpd0FHQUFzQUVBQVNBQ1VBSmdBbkFDZ0FLUUFzQUMwQUxnQXZBREFBTVFBeUFETUFOQUE0QURrQU9nQTdBRHdBUFFBK0FFVUFSZ0JIQUVrQVRBQlJBRklBVXdCVUFGWUFXZ0JjQUYwQVhnQ0RBSVFBaFFDR0FJY0FpQUNLQUlzQWpBQ05BSTRBandDUUFKRUFrZ0NUQUpRQWxRQ1dBSmNBbUFDWkFKd0FuUUNlQUo4QW9BQ2pBS1FBcFFDbUFLY0FxQUNxQUtzQXJBQ3RBSzRBdEFDMUFMWUF0d0M0QUxrQXdBREJBTUlBd3dERUFNVUF4Z0RIQU1nQXlRREtBTXNBekFETkFNNEF6d0RRQU5FQTB3RFZBTllBMXdEWUFOa0EyZ0RiQU53QTNRRGVBT2NBNkFEckFPMEE3d0R4QVBNQTl3RDVBUHdBL2dFQUFRSUJCZ0VIQVFnQkNRRUtBUXNCREFFUEFSQUJFUUVTQVJNQkZBRVlBUm9CSEFFbEFTY0JLUUVyQVMwQkx3RXhBVE1CTlFFM0FUa0JPZ0U3QVR3QlBRRStBVDhCUUFGQkFVNEJUd0ZpQVdZQmVRRjdBWHdCZlFGK0FYOEJnZ0dEQVlRQmhRR0dBWWNCaUFHSkFZb0Jpd0dNQVkwQmpnR1FBWklCbEFHVkFaY0JtZ0diQVo0Qm93R25BYTBCcndHeEFid0J3d0hFQWNZQnlRSEtBY3NCekFITkFjOEIwUUhTQWRNQjFRSFdBZGdCMlFIYkFkMEIzZ0hmQWVBQjRRSGpBZVFCNVFIbUFlZ0I2UUhyQWUwQjd3SHpBZllCK0FINUFnRUNBd0lFQWdZQ0J3SUlBZzBDRHdJUUFoTUNGQUlXQWh3Q0hRSWhBaVVDSmdJcEFqWUNOd0k0QWprQ09nSlJBbElDVXdKVUFsZ0NXUUpjQWw0Q1lBSmlBbVFDYkFKdEFtNENjQUp4QW5JQ2RBSjFBbjBDZ2dLREFvUUNpd0tQQXBFQ2tnS1RBcFFDbFFLWUFwa0Ntd0tkQXA0Q253S29BcWtDclFLdkFyQUNzUUt5QXJNQ3RBSzFBcmdDdVFLOUFyNEN2d0xXQXRjQzVnTG5BdmdDK2dMOEF3SURBd01FQXdVREJnTUhBd2dEQ1FNS0F3c0REQU1OQXc0RER3TVFBeEVERWdNVEF4UURGUU1XQXhjREdBTVpBeG9ER3dNY0F4MERIZ01mQXlBRElRTWlBeU1ESkFNbEF5WURKd01vQXlrREtnTXNBeTRETHdNd0F6RURNZ016QXpRRE5RTTJBemNET0FNNUF6b0RPd05EQTBZRFNBTlVBMVVEVmdOWEExZ0RXUU5hQTFzRFhBTndBM0VEY2dOekEzUURkUU4yQTNvRGV3TitBMzhFTVFRekJEUUFBZ0ZVQUJBQUVBQUJBQklBRWdBQkFDVUFKUUFDQUNZQUpnQURBQ2NBSndBRUFDZ0FLQUFGQUNrQUtRQUdBQ3dBTFFBSEFDNEFMZ0FJQUM4QUx3QUpBREFBTUFBS0FERUFNZ0FIQURNQU13QUZBRFFBTkFBTEFEZ0FPQUFNQURrQU9RQUlBRG9BT2dBTkFEc0FPd0FPQUR3QVBBQVBBRDBBUFFBUUFENEFQZ0FSQUVVQVJRQVNBRVlBUmdBVEFFY0FSd0FVQUVrQVNRQVZBRXdBVEFBV0FGRUFVZ0FXQUZNQVV3QVhBRlFBVkFBVEFGWUFWZ0FZQUZvQVdnQVpBRndBWEFBYUFGMEFYUUFaQUY0QVhnQWJBSU1BaUFBQ0FJb0FpZ0FFQUlzQWpnQUdBSThBa2dBSEFKTUFrd0FGQUpRQWxBQUhBSlVBbVFBRkFKd0Fud0FJQUtBQW9BQVFBS01BcUFBU0FLb0FxZ0FVQUtzQXJnQVZBTFFBdEFBV0FMVUF1UUFYQU1BQXdBQVpBTUVBd1FBVEFNSUF3Z0FaQU1NQXd3QUNBTVFBeEFBU0FNVUF4UUFDQU1ZQXhnQVNBTWNBeHdBQ0FNZ0F5QUFTQU1rQXlRQUVBTW9BeWdBVUFNc0F5d0FFQU13QXpBQVVBTTBBelFBRUFNNEF6Z0FVQU04QXp3QUVBTkFBMEFBVUFORUEwUUFGQU5NQTB3QUZBTlVBMVFBR0FOWUExZ0FWQU5jQTF3QUdBTmdBMkFBVkFOa0EyUUFHQU5vQTJnQVZBTnNBMndBR0FOd0EzQUFWQU4wQTNRQUdBTjRBM2dBVkFPY0E1d0FIQU9nQTZBQVdBT3NBNndBSEFPMEE3UUFIQU84QTd3QUhBUEVBOFFBSEFQTUE4d0FIQVBjQTl3QUlBUGtBK1FBSkFQd0EvQUFLQVA0QS9nQUtBUUFCQUFBS0FRSUJBZ0FLQVFZQkJnQUhBUWNCQndBV0FRZ0JDQUFIQVFrQkNRQVdBUW9CQ2dBSEFRc0JEQUFXQVE4QkR3QUZBUkFCRUFBWEFSRUJFUUFGQVJJQkVnQVhBUk1CRXdBRkFSUUJGQUFYQVJnQkdBQVlBUm9CR2dBWUFSd0JIQUFZQVNVQkpRQU1BU2NCSndBTUFTa0JLUUFNQVNzQkt3QUlBUzBCTFFBSUFTOEJMd0FJQVRFQk1RQUlBVE1CTXdBSUFUVUJOUUFJQVRjQk53QU9BVGtCT1FBUUFUb0JPZ0FaQVRzQk93QVFBVHdCUEFBUkFUMEJQUUFiQVQ0QlBnQVJBVDhCUHdBYkFVQUJRQUFSQVVFQlFRQWJBVTRCVGdBQ0FVOEJUd0FTQVdJQllnQU1BWGtCZVFBQ0FYc0Jld0FHQVh3QmZRQUhBWDRCZmdBRkFYOEJmd0FRQVlJQmdnQUNBWU1CZ3dBREFZUUJoQUFjQVlVQmhRQUNBWVlCaGdBR0FZY0Jod0FSQVlnQmlBQUhBWWtCaVFBRkFZb0JpZ0FIQVlzQml3QUpBWXdCakFBQ0FZMEJqZ0FIQVpBQmtBQUZBWklCa2dBTEFaUUJsQUFNQVpVQmxRQVFBWmNCbHdBUEFab0JtZ0FIQVpzQm13QVFBWjRCbmdBV0FhTUJvd0FaQWFjQnB3QVdBYTBCclFBWkFhOEJyd0FYQWJFQnNRQVRBYndCdkFBWEFjTUJ4QUFHQWNZQnhnQWNBY2tCeWdBSEFjc0J5d0FJQWN3QnpRQWRBYzhCendBSkFkRUIwUUFlQWRJQjBnQUhBZE1CMHdBQ0FkVUIxUUFEQWRZQjFnQWNBZGdCMkFBR0Fka0IyUUFQQWRzQjJ3QUhBZDBCM1FBSkFkNEI0QUFIQWVFQjRRQUZBZU1CNHdBTEFlUUI1QUFFQWVVQjVRQU1BZVlCNWdBZUFlZ0I2QUFQQWVrQjZRQUhBZXNCNndBSEFlMEI3UUFkQWU4Qjd3QWRBZk1COHdBU0FmWUI5Z0FmQWZnQitBQVZBZmtCK1FBYUFnRUNBUUFYQWdNQ0F3QVRBZ1FDQkFBVUFnWUNCZ0FaQWdjQ0J3QVRBZ2dDQ0FBYUFnMENEUUFnQWc4Q0R3QWdBaEFDRUFBVEFoTUNGQUFWQWhZQ0ZnQWZBaHdDSFFBZ0FpRUNJUUFaQWlVQ0pRQWRBaVlDSmdBZ0Fpa0NLUUFDQWpZQ05nQVhBamNDTndBTkFqZ0NPQUFaQWprQ09RQU5Bam9DT2dBWkFsRUNVUUFUQWxJQ1VnQWNBbE1DVXdBZkFsUUNWQUFjQWxnQ1dBQVBBbGtDV1FBYUFsd0NYQUFKQWw0Q1hnQUpBbUFDWUFBSkFtSUNZZ0FKQW1RQ1pBQUhBbXdDYkFBRUFtMENiUUFVQW00Q2JnQU1BbkFDY0FBUUFuRUNjUUFaQW5JQ2NnQVFBblFDZEFBUEFuVUNkUUFhQW4wQ2ZRQVdBb0lDZ2dBSEFvTUNnd0FQQW9RQ2hBQWFBb3NDaXdBSEFvOENqd0FIQXBFQ2tRQUhBcElDa2dBQ0FwTUNrd0FTQXBRQ2xBQUNBcFVDbFFBU0FwZ0NtQUFHQXBrQ21RQVZBcHNDbXdBVkFwMENuUUFWQXA0Q25nQVBBcDhDbndBYUFxZ0NxQUFGQXFrQ3FRQVhBcTBDclFBWEFxOENyd0FUQXJBQ3NBQWVBckVDc1FBWkFySUNzZ0FlQXJNQ3N3QVpBclFDdEFBZUFyVUN0UUFaQXJnQ3VBQWNBcmtDdVFBZkFyMEN2UUFmQXI0Q3ZnQVBBcjhDdndBYUF0WUMxZ0FDQXRjQzF3QVNBdVlDNWdBSEF1Y0M1d0FXQXZnQytBQU9Bdm9DK2dBT0F2d0MvQUFPQXdJREFnQUNBd01EQXdBU0F3UURCQUFDQXdVREJRQVNBd1lEQmdBQ0F3Y0RCd0FTQXdnRENBQUNBd2tEQ1FBU0F3b0RDZ0FDQXdzREN3QVNBd3dEREFBQ0F3MEREUUFTQXc0RERnQUNBdzhERHdBU0F4QURFQUFDQXhFREVRQVNBeElERWdBQ0F4TURFd0FTQXhRREZBQUNBeFVERlFBU0F4WURGZ0FDQXhjREZ3QVNBeGdER0FBQ0F4a0RHUUFTQXhvREdnQUdBeHNER3dBVkF4d0RIQUFHQXgwREhRQVZBeDRESGdBR0F4OERId0FWQXlBRElBQUdBeUVESVFBVkF5SURJZ0FHQXlNREl3QVZBeVFESkFBR0F5VURKUUFWQXlZREpnQUdBeWNESndBVkF5Z0RLQUFHQXlrREtRQVZBeW9ES2dBSEF5d0RMQUFIQXk0RExnQUZBeThETHdBWEF6QURNQUFGQXpFRE1RQVhBeklETWdBRkF6TURNd0FYQXpRRE5BQUZBelVETlFBWEF6WUROZ0FGQXpjRE53QVhBemdET0FBRkF6a0RPUUFYQXpvRE9nQUZBenNET3dBWEEwTURRd0FYQTBZRFJnQUlBMGdEU0FBSUExUURWQUFRQTFVRFZRQVpBMVlEVmdBUUExY0RWd0FaQTFnRFdBQVFBMWtEV1FBWkExb0RXZ0FRQTFzRFd3QVpBMXdEWEFBRkEzSURjZ0FCQTNZRGRnQUJBM29EZXdBQkJERUVNUUFFQkRNRU5BQUZBQUVBQmdRd0FBRUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFGZ0FaQUJZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQWdBQUFBQUFBQUFDQUFBQUFBQUdnQUFBQUFBQUFBQUFBZ0FBQUFJQUFBQUd3QUpBQW9BQ3dBTUFCY0FEUUFZQUFBQUFBQUFBQUFBQUFBQUFBTUFBQUFFQUFRQUJBQUFBQVFBQUFBQUFBQUFBQUFBQUFVQUJRQUdBQVVBQkFBQUFBY0FBQUFPQUE4QUFBQWNBQThBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBSUFBZ0FDQUFJQUFnQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBZ0FDQUFJQUFnQUFBQUlBQW9BQ2dBS0FBb0FEUUFBQUFBQUF3QURBQU1BQXdBREFBTUFBQUFFQUFRQUJBQUVBQVFBQUFBQUFBQUFBQUFBQUFVQUJnQUdBQVlBQmdBR0FBQUFBQUFPQUE0QURnQU9BQThBQUFBUEFBSUFBd0FDQUFNQUFnQURBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUFBQVFBQUFBQUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQUFBQlFBQUFBVUFCUUFBQUFBQUNBQUdBQWdBQmdBSUFBWUFDQUFFQUFBQUFBQUFBQUFBQUFBQUFCc0FCd0FiQUFjQUd3QUhBQnNBQndBSkFBQUFDUUFBQUFBQUFBQUtBQTRBQ2dBT0FBb0FEZ0FLQUE0QUNnQU9BQW9BRGdBTUFBQUFEUUFQQUEwQUdBQVFBQmdBRUFBWUFCQUFBQUFBQUFBQUNBQUVBQUFBRGdBQUFBQUFBQUFBQUFBQUFnQURBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUd3QUhBQWtBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQ0FBTkFBQUFBQUFDQUFBQUFBQUNBQUFBR0FBQUFBZ0FBQUFBQUFJQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUEwQUFBQVhBQUFBQUFBQUFBMEFCQUFBQUFVQUFBQU9BQVFBQUFBUEFBQUFBQUFBQUFVQUFBQUFBQUFBQUFBQUFBOEFBQUFHQUFBQUFBQUVBQVFBQUFBT0FBQUFBQUFBQUFBQUFBQU9BQVlBRGdBQUFBQUFBQUFBQUFBQUFBQUFBQWtBQUFBSUFBQUFBQUFBQUJvQUVRQUFBQWtBQUFBQUFCVUFBQUFDQUFBQUFBQUFBQUFBQUFBWEFBQUFBQUFBQUFBQUVRQUFBQUFBQ0FBQUFBQUFDQUFKQUJVQUFBQVhBQUFBRWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdBQUFBQUFCUUFBQUFRQUhBQUFBQVVBQlFBRkFCTUFCUUFGQUFZQUJRQUZBQVFBQUFBUEFBUUFIQUFGQUJRQUJRQUZBQUFBQUFBRkFBQUFCUUFBQUFRQUJBQUFBQVVBQkFBSEFBQUFBQUFBQUJNQUJRQUFBQVVBQlFBUEFBQUFDQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFHQUFzQUR3QUxBQThBQ0FBRUFBZ0FBQUFJQUFRQUNBQUFBQWdBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCY0FIQUFBQUFBQUFBQUZBQUFBQUFBQUFBQUFDUUFBQUFBQUJRQUFBQVVBQUFBQUFBZ0FCQUFJQUFRQUNRQUFBQTBBRHdBTkFBQUFGd0FjQUFrQUFBQVNBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRndBY0FBQUFBQUFSQUJNQUFBQUZBQUFBQlFBU0FCUUFBQUFGQUFBQUFnQURBQUlBQXdBQUFBQUFBQUFFQUFBQUJBQUFBQVFBRndBY0FBQUFBQUFBQUFBQUFBQUZBQUFBQlFBSUFBWUFDQUFFQUFnQUJnQUFBQUFBRlFBUEFCVUFEd0FWQUE4QUVnQVVBQUFBQlFBQUFBVUFBQUFGQUJjQUhBQUFBQUFBQUFBRUFBUUFCQUFBQUFBQUFBQUFBQkVBQUFBQUFBQUFDQUFFQUFBQUFBQUFBQUFBRVFBVEFBSUFBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREFBQUFBd0FBQUFNQUFBQUFBQUFBQUFBQUFBQ0FBTUFBZ0FEQUFJQUF3QUNBQU1BQWdBREFBSUFBd0FDQUFNQUFnQURBQUlBQXdBQ0FBTUFBZ0FEQUFJQUF3QUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUFBQUFBQUFBQ0FBR0FBZ0FCZ0FJQUFZQUNBQUdBQWdBQmdBSUFBWUFDQUFHQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCZ0FJQUFRQUNnQU9BQW9BRGdBQUFBNEFBQUFPQUFBQURnQUFBQTRBQUFBT0FBMEFEd0FOQUE4QURRQVBBQTBBRHdBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmtBR1FBWkFBQUFBUUFCQUJZQUFRQUJBQUVBRmdBQUFBQUFBQUFXQUJZQUFBQUFBQUVBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQWdBQUFBSUFBZ0FBQUFCQUFBQUNnSUdDQkFBQkVSR1RGUUFHbU41Y213QVNHZHlaV3NBZG14aGRHNEFwQUFFQUFBQUFQLy9BQklBQUFBS0FCUUFIZ0FvQURRQVFRQkxBRlVBWHdCcEFITUFmUUNIQUpFQW13Q2xBSzhBQkFBQUFBRC8vd0FTQUFFQUN3QVZBQjhBS1FBMUFFSUFUQUJXQUdBQWFnQjBBSDRBaUFDU0FKd0FwZ0N3QUFRQUFBQUEvLzhBRWdBQ0FBd0FGZ0FnQUNvQU5nQkRBRTBBVndCaEFHc0FkUUIvQUlrQWt3Q2RBS2NBc1FBb0FBWkJXa1VnQUZSRFVsUWdBSDVOVDB3Z0FLaE9RVllnQU5SU1QwMGdBUUJVVlZJZ0FTd0FBUC8vQUJNQUF3QU5BQmNBSVFBckFESUFOd0JFQUU0QVdBQmlBR3dBZGdDQUFJb0FsQUNlQUtnQXNnQUEvLzhBRWdBRUFBNEFHQUFpQUN3QU9BQkZBRThBV1FCakFHMEFkd0NCQUlzQWxRQ2ZBS2tBc3dBQS8vOEFFZ0FGQUE4QUdRQWpBQzBBT1FCR0FGQUFXZ0JrQUc0QWVBQ0NBSXdBbGdDZ0FLb0F0QUFBLy84QUV3QUdBQkFBR2dBa0FDNEFPZ0ErQUVjQVVRQmJBR1VBYndCNUFJTUFqUUNYQUtFQXF3QzFBQUQvL3dBVEFBY0FFUUFiQUNVQUx3QTdBRDhBU0FCU0FGd0FaZ0J3QUhvQWhBQ09BSmdBb2dDc0FMWUFBUC8vQUJNQUNBQVNBQndBSmdBd0FEd0FRQUJKQUZNQVhRQm5BSEVBZXdDRkFJOEFtUUNqQUswQXR3QUEvLzhBRXdBSkFCTUFIUUFuQURFQU13QTlBRW9BVkFCZUFHZ0FjZ0I4QUlZQWtBQ2FBS1FBcmdDNEFMbGpNbk5qQkZoak1uTmpCRjVqTW5OakJHUmpNbk5qQkdwak1uTmpCR3BqTW5OakJHcGpNbk5qQkdwak1uTmpCR3BqTW5OakJHcGpNbk5qQkdwalkyMXdCSEJqWTIxd0JIQmpZMjF3QkhCalkyMXdCSEJqWTIxd0JIQmpZMjF3QkhCalkyMXdCSEJqWTIxd0JIQmpZMjF3QkhCalkyMXdCSEJrYkdsbkJIaGtiR2xuQkg1a2JHbG5CSVJrYkdsbkJJcGtiR2xuQklwa2JHbG5CSXBrYkdsbkJJcGtiR2xuQklwa2JHbG5CSXBrYkdsbkJJcGtibTl0QkpCa2JtOXRCSlprYm05dEJKeGtibTl0QktKa2JtOXRCS0prYm05dEJLSmtibTl0QktKa2JtOXRCS0prYm05dEJLSmtibTl0QktKbWNtRmpCS2htY21GakJLaG1jbUZqQktobWNtRmpCS2htY21GakJLaG1jbUZqQktobWNtRmpCS2htY21GakJLaG1jbUZqQktobWNtRmpCS2hzYVdkaEJMSnNhV2RoQkxwc2JuVnRCTUJzYm5WdEJNWnNiblZ0Qk14c2JuVnRCTkpzYm5WdEJOSnNiblZ0Qk5Kc2JuVnRCTkpzYm5WdEJOSnNiblZ0Qk5Kc2JuVnRCTkpzYjJOc0JOaHNiMk5zQk41c2IyTnNCT1J1ZFcxeUJPcHVkVzF5QlBCdWRXMXlCUFp1ZFcxeUJQeHVkVzF5QlB4dWRXMXlCUHh1ZFcxeUJQeHVkVzF5QlB4dWRXMXlCUHh1ZFcxeUJQeHZiblZ0QlFKdmJuVnRCUWh2Ym5WdEJRNXZiblZ0QlJSdmJuVnRCUlJ2Ym5WdEJSUnZiblZ0QlJSdmJuVnRCUlJ2Ym5WdEJSUnZiblZ0QlJSd2JuVnRCUnB3Ym5WdEJTQndiblZ0QlNad2JuVnRCU3h3Ym5WdEJTeHdiblZ0QlN4d2JuVnRCU3h3Ym5WdEJTeHdiblZ0QlN4d2JuVnRCU3h6YldOd0JUSnpiV053QlRoemJXTndCVDV6YldOd0JVUnpiV053QlVSemJXTndCVVJ6YldOd0JVUnpiV053QlVSemJXTndCVVJ6YldOd0JVUnpjekF4QlVwemN6QXhCVkJ6Y3pBeEJWWnpjekF4QlZ4emN6QXhCVnh6Y3pBeEJWeHpjekF4QlZ4emN6QXhCVnh6Y3pBeEJWeHpjekF4QlZ4emN6QXlCV0p6Y3pBeUJXaHpjekF5Qlc1emN6QXlCWFJ6Y3pBeUJYUnpjekF5QlhSemN6QXlCWFJ6Y3pBeUJYUnpjekF5QlhSemN6QXlCWFJ6Y3pBekJYcHpjekF6QllCemN6QXpCWVp6Y3pBekJZeHpjekF6Qll4emN6QXpCWXh6Y3pBekJZeHpjekF6Qll4emN6QXpCWXh6Y3pBekJZeHpjekEwQlpKemN6QTBCWmh6Y3pBMEJaNXpjekEwQmFSemN6QTBCYVJ6Y3pBMEJhUnpjekEwQmFSemN6QTBCYVJ6Y3pBMEJhUnpjekEwQmFSemN6QTFCYXB6Y3pBMUJiQnpjekExQmJaemN6QTFCYnh6Y3pBMUJieHpjekExQmJ4emN6QTFCYnh6Y3pBMUJieHpjekExQmJ4emN6QTFCYnh6Y3pBMkJjSnpjekEyQmNoemN6QTJCYzV6Y3pBMkJkUnpjekEyQmRSemN6QTJCZFJ6Y3pBMkJkUnpjekEyQmRSemN6QTJCZFJ6Y3pBMkJkUnpjekEzQmRwemN6QTNCZUJ6Y3pBM0JlWnpjekEzQmV4emN6QTNCZXh6Y3pBM0JleHpjekEzQmV4emN6QTNCZXh6Y3pBM0JleHpjekEzQmV4MGJuVnRCZkowYm5WdEJmaDBiblZ0QmY1MGJuVnRCZ1IwYm5WdEJnUjBiblZ0QmdSMGJuVnRCZ1IwYm5WdEJnUjBiblZ0QmdSMGJuVnRCZ1FBQUFBQkFBRUFBQUFCQUFNQUFBQUJBQUlBQUFBQkFBQUFBQUFDQUFnQUNRQUFBQUVBRGdBQUFBRUFFQUFBQUFFQUR3QUFBQUVBRFFBQUFBRUFRd0FBQUFFQVJRQUFBQUVBUkFBQUFBRUFRZ0FBQUFNQVB3QkFBRUVBQUFBQ0FCRUFFZ0FBQUFFQUVnQUFBQUVBUEFBQUFBRUFQZ0FBQUFFQVBRQUFBQUVBT3dBQUFBRUFDZ0FBQUFFQURBQUFBQUVBQ3dBQUFBRUFSd0FBQUFFQVNRQUFBQUVBU0FBQUFBRUFSZ0FBQUFFQU1BQUFBQUVBTWdBQUFBRUFNUUFBQUFFQUx3QUFBQUVBT0FBQUFBRUFPZ0FBQUFFQU9RQUFBQUVBTndBQUFBRUFCUUFBQUFFQUJ3QUFBQUVBQmdBQUFBRUFCQUFBQUFFQUZBQUFBQUVBRmdBQUFBRUFGUUFBQUFFQUV3QUFBQUVBR0FBQUFBRUFHZ0FBQUFFQUdRQUFBQUVBRndBQUFBRUFIQUFBQUFFQUhnQUFBQUVBSFFBQUFBRUFHd0FBQUFFQUlBQUFBQUVBSWdBQUFBRUFJUUFBQUFFQUh3QUFBQUVBSkFBQUFBRUFKZ0FBQUFFQUpRQUFBQUVBSXdBQUFBRUFLQUFBQUFFQUtnQUFBQUVBS1FBQUFBRUFKd0FBQUFFQUxBQUFBQUVBTGdBQUFBRUFMUUFBQUFFQUt3QUFBQUVBTkFBQUFBRUFOZ0FBQUFFQU5RQUFBQUVBTXdCTEFKZ0FtQUNZQUpnRUpnUW1CQ1lFSmdjVUI4QU9VQTVRRG1ZT2lBNklEb2dPaUE2K0R1UVBFZzhTRHhJUEVnOG1EeVlQSmc4bUR6b1BPZzg2RHpvUFRnOU9EMDRQVGc5Z0QyQVBZQTlnRDNvUGVnOTZEM29QdkErOEQ3d1B2QS9hRDlvUDJnL2FEL2dQK0EvNEQvZ1FLaEFxRUNvUUtoQmNFRndRWEJCY0VJNFFvaER1RU13UXpCRE1FTXdRN2hEdUVPNFE3aEVhQUFFQUFBQUJBQWdBQWdIRUFOOER2UVBzQStzRDZnUHBBK2dENXdQbUErVUQ1QVBqQStJRDRRUGdBOThEM2dQZEE5d0Qyd1BhQTlrRDJBUFhBOVlEOWdQM0JLa0R2QU83QkZBRVVRUlNCRk1FVkFSVkJGY0VXQVJaQkZvRVd3UmNCRjBFWGdSZkJFNEVZQVJoQkdJRVl3UmtCR1VFWmdSdEJHNEVid1J3QkV3RWNRUnlCSE1FZEFSMUJIWUVkd1I0QkUwRWVRUjZCSHNFZkFSOUJINEVmd1NBQklFRWdnU0RCSVFFaFFTR0JJY0VpQVNKQklvRWl3U01CSTBFamdTUEJKQUVrUVNTQkpNRVJBU1VCSlVFbGdTWEJKZ0VtUVNhQkowRW5BUlBCSjRFbndTZ0JLRUVvZ1NqQktRRXBRU21CS2NFcUFQK0JGWUVtd1NxQktzRXJBU3RCSzRFcndTd0JMRUVzZ082QTdrRXN3UzBCTFVEdUFTMkJMY0R0d1M0QTdZRXVRUEdCTG9EMFFTN0JMd0QwZ1M5QTlNRDFBUytCTDhFd0FQNUJNRUQrQVRDQk1NRXhBVEZBLzhFQUFRQkJNWUV4d1FDQk1nRUF3VEpCTW9FQkFUTEJBVUVCZ1FIQk13RUNBUUpCTTBFemdUUEJOQUUwUVRTQk5NRUNnVGNCTlFFQ3dRTUJBMEVEZ1FQQkJBRUVRUVNCQk1FRkFRNEJCVUVGZ1RWQkJjRUdBUVpCTllFR2dUWEJOZ0VHd1FjQkIwRUhnUWZCQ0FFMlFRaEJDSUUyZ1FqQk5zRUpBUWxCQ2NFSmdBQkFOOEFDQUFsQUNZQUp3QW9BQ2tBS2dBckFDd0FMUUF1QUM4QU1BQXhBRElBTXdBMEFEVUFOZ0EzQURnQU9RQTZBRHNBUEFBOUFENEFaZ0JvQUlNQWhBQ0ZBSVlBaHdDSUFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbkFDZEFKNEFud0NnQUtJQXd3REZBTWNBeVFETEFNMEF6d0RSQU5NQTFRRFhBTmtBMndEZEFOOEE0UURqQU9VQTV3RHJBTzBBN3dEeEFQTUE5d0Q1QVB3QS9nRUFBUUlCQmdFSUFRb0JEd0VSQVJNQkZRRVhBUmtCR3dFZEFSOEJJUUVqQVNVQkp3RXBBU3NCTFFFdkFURUJNd0UxQVRjQk9RRTdBVHdCUGdGQUFVNEJZZ0Y1QVhzQmZBRjlBWDRCZndHQUFZSUJnd0dFQVlVQmhnR0hBWWdCaVFHS0FZc0JqQUdOQVk4QmtBR1JBWklCa3dHVUFaVUJsZ0dYQVpnQm1RR2FBWnNCeEFIRkFjWUJ4d0hJQWNrQnlnSExBY3dCelFIT0FjOEIwUUhTQWRNQjFBSFZBZFlCMXdIWUFka0IyZ0hiQWR3QjNRSGVBZDhCNEFIaEFlSUI0d0hrQWVVQjVnSG5BZWdCNlFIcUFlc0I3QUh0QWU0Qjd3SHdBZkVCOGdKU0FsUUNXQUphQWx3Q1hnSmlBbVFDYWdKc0FuQUNjZ0owQW5ZQ2VnSjhBbjRDZ0FLYUFxSUNwQUtxQXJBRGh3T09BNU1EbGdBQkFBQUFBUUFJQUFJQmRBQzNBK3dENndQcUEra0Q2QVBuQStZRDVRUGtBK01ENGdQaEErQUQzd1BlQTkwRDNBUGJBOW9EMlFQWUE5Y0QxZ1AyQS9jRXFRUlFCRkVFVWdSVEJGUUVWUVJYQkZnRVdRUmFCRnNFWEFSZEJGNEVYd1JPQkdBRVlRUmlCR01FWkFSbEJHWUViUVJ1Qkc4RWNBU21CSEVFY2dSekJIUUVkUVIyQkhjRWVBUk5CSGtFZWdSN0JId0VmUVIrQkg4RWdBU0JCSUlFZ3dTRUJJVUVoZ1NIQklnRWlRU0tCSXNFakFTTkJJNEVqd1NRQkpFRWtnU1RCRVFFbEFTVkJKWUVsd1NZQkprRW1nU2RCSndFVHdTZUJKOEVvQVNoQktJRW93U2tCS1VFcHdTb0EvNEVWZ1NiQk1nRUF3VEpCTW9FQkFUTEJBVUVCZ1FIQk13RUNBUUpCTTBFemdUUEJOQUUwUVRTQk5NRUNnVGNCTlFFQ3dRTUJBMEVEZ1FQQkJBRUVRUVNCQk1FRkFUQUEva0V3UVA0Qk1JRXd3VEVCTVVEL3dRQUJBRUV4Z1RIQkFJRU9BUVZCQllFMVFRWEJCZ0VHUVRXQkJvRTF3VFlCQnNFSEFRZEJCNEVId1FnQk5rRUlRUWlCTm9FSXdUYkFBRUF0d0JGQUVZQVJ3QklBRWtBU2dCTEFFd0FUUUJPQUU4QVVBQlJBRklBVXdCVUFGVUFWZ0JYQUZnQVdRQmFBRnNBWEFCZEFGNEFvd0NrQUtVQXBnQ25BS2dBcWdDckFLd0FyUUN1QUs4QXNBQ3hBTElBc3dDMEFMVUF0Z0MzQUxnQXVRQzhBTDBBdmdDL0FNQUF3Z0RFQU1ZQXlBREtBTXdBemdEUUFOSUExQURXQU5nQTJnRGNBTjRBNEFEaUFPUUE1Z0RvQU93QTdnRHdBUElBOUFENEFQb0EvUUQvQVFFQkF3RUhBUWtCQ3dFUUFSSUJGQUVXQVJnQkdnRWNBUjRCSUFFaUFTUUJKZ0VvQVNvQkxBRXVBVEFCTWdFMEFUWUJPQUU2QVQwQlB3RkJBVThCWXdIekFmUUI5UUgyQWZjQitBSDVBZm9CK3dIOEFmMEIvZ0gvQWdBQ0FRSUNBZ01DQkFJRkFnWUNCd0lJQWdrQ0NnSUxBZ3dDRFFJT0FnOENFQUlSQWhJQ0ZBSVZBaFlDRndJWUFoa0NHZ0liQWh3Q0hRSWVBaDhDSVFJaUFsTUNWUUpaQWxzQ1hRSmZBbU1DWlFKckFtMENjUUp6QW5VQ2R3SjdBbjBDZndLQkFwc0Nvd0tsQXFzQ3NRQUdBQUFBQmdBU0FDb0FRZ0JhQUhJQWlnQURBQUFBQVFBU0FBRUFrQUFCQUFBQVNnQUJBQUVBVFFBREFBQUFBUUFTQUFFQWVBQUJBQUFBU2dBQkFBRUFUZ0FEQUFBQUFRQVNBQUVBWUFBQkFBQUFTZ0FCQUFFQThnQURBQUFBQVFBU0FBRUFTQUFCQUFBQVNnQUJBQUVDR1FBREFBQUFBUUFTQUFFQU1BQUJBQUFBU2dBQkFBRUNHd0FEQUFBQUFRQVNBQUVBR0FBQkFBQUFTZ0FCQUFFRExRQUNBQUVCY1FGMUFBQUFCQUFBQUFFQUNBQUJCaDRBTmdCeUFLUUFyZ0M0QU1vQS9BRU9BUmdCU2dGa0FYNEJrQUc2QWV3QjlnSVlBaklDUkFKMkFvZ0NvZ0xNQXQ0REVBTWFBeVFETmdOb0EzSURmQU9HQTZBRHVnUE1BL1lFS0FReUJGUUViZ1NBQkxJRXhBVGVCUWdGR2dVa0JTNEZPQVZDQld3RmxnWEFCZW9HRkFBR0FBNEFGQUFhQUNBQUpnQXNBSU1BQWdGeEFJUUFBZ0Z5QUlZQUFnRnpBd1FBQWdGMEFWUUFBZ0YxQXdJQUFnRjJBQUVBQkFMWUFBSUJkZ0FCQUFRQXlRQUNBWElBQWdBR0FBd0MyZ0FDQVhZQzNBQUNBNnNBQmdBT0FCUUFHZ0FnQUNZQUxBQ0xBQUlCY1FDTUFBSUJjZ01lQUFJQmN3TWNBQUlCZEFGV0FBSUJkUU1hQUFJQmRnQUNBQVlBREFGS0FBSUJjZ0RsQUFJRHF3QUJBQVFDM2dBQ0FYWUFCZ0FPQUJRQUdnQWdBQ1lBTEFDUEFBSUJjUUNRQUFJQmNnRHJBQUlCY3dNcUFBSUJkQUZZQUFJQmRRTXNBQUlCZGdBREFBZ0FEZ0FVQXVBQUFnRnlBdUlBQWdGMkFQa0FBZ09yQUFNQUNBQU9BQlFBL0FBQ0FYSUM1QUFDQVhZQS9nQUNBNnNBQWdBR0FBd0M1Z0FDQVhJQzZBQUNBWFlBQlFBTUFCSUFHQUFlQUNRQlRBQUNBWEVCQmdBQ0FYSUFsQUFDQVhNQzZnQUNBWFlCQ0FBQ0E2c0FCZ0FPQUJRQUdnQWdBQ1lBTEFDVkFBSUJjUUNXQUFJQmNnQ1lBQUlCY3dNd0FBSUJkQUZhQUFJQmRRTXVBQUlCZGdBQkFBUUM3QUFDQVhJQUJBQUtBQkFBRmdBY0FSY0FBZ0Z5QVZ3QUFnRjFBdTRBQWdGMkFSa0FBZ09yQUFNQUNBQU9BQlFCSFFBQ0FYSUM4QUFDQVhZQllBQUNBNnNBQWdBR0FBd0M4Z0FDQVhZQllnQUNBNnNBQmdBT0FCUUFHZ0FnQUNZQUxBQ2NBQUlCY1FDZEFBSUJjZ0VyQUFJQmN3TklBQUlCZEFGZUFBSUJkUU5HQUFJQmRnQUNBQVlBREFMMEFBSUJjd0wyQUFJQmRnQURBQWdBRGdBVUF2Z0FBZ0Z4QXZvQUFnRnlBdjRBQWdGMkFBVUFEQUFTQUJnQUhnQWtBMVFBQWdGeEFLQUFBZ0Z5QTFvQUFnRnpBMWdBQWdGMEExWUFBZ0YyQUFJQUJnQU1BVHdBQWdGeUF3QUFBZ0YyQUFZQURnQVVBQm9BSUFBbUFDd0Fvd0FDQVhFQXBBQUNBWElBcGdBQ0FYTURCUUFDQVhRQlZRQUNBWFVEQXdBQ0FYWUFBUUFFQXRrQUFnRjJBQUVBQkFES0FBSUJjZ0FDQUFZQURBTGJBQUlCZGdMZEFBSURxd0FHQUE0QUZBQWFBQ0FBSmdBc0FLc0FBZ0Z4QUt3QUFnRnlBeDhBQWdGekF4MEFBZ0YwQVZjQUFnRjFBeHNBQWdGMkFBRUFCQUZMQUFJQmNnQUJBQVFDM3dBQ0FYWUFBUUFFQXkwQUFnRjJBQU1BQ0FBT0FCUUM0UUFDQVhJQzR3QUNBWFlBK2dBQ0E2c0FBd0FJQUE0QUZBRDlBQUlCY2dMbEFBSUJkZ0QvQUFJRHF3QUNBQVlBREFMbkFBSUJjZ0xwQUFJQmRnQUZBQXdBRWdBWUFCNEFKQUZOQUFJQmNRRUhBQUlCY2dDMEFBSUJjd0xyQUFJQmRnRUpBQUlEcXdBR0FBNEFGQUFhQUNBQUpnQXNBTFVBQWdGeEFMWUFBZ0Z5QUxnQUFnRnpBekVBQWdGMEFWc0FBZ0YxQXk4QUFnRjJBQUVBQkFMdEFBSUJjZ0FFQUFvQUVBQVdBQndCR0FBQ0FYSUJYUUFDQVhVQzd3QUNBWFlCR2dBQ0E2c0FBd0FJQUE0QUZBRWVBQUlCY2dMeEFBSUJkZ0ZoQUFJRHF3QUNBQVlBREFMekFBSUJkZ0ZqQUFJRHF3QUdBQTRBRkFBYUFDQUFKZ0FzQUx3QUFnRnhBTDBBQWdGeUFTd0FBZ0Z6QTBrQUFnRjBBVjhBQWdGMUEwY0FBZ0YyQUFJQUJnQU1BdlVBQWdGekF2Y0FBZ0YyQUFNQUNBQU9BQlFDK1FBQ0FYRUMrd0FDQVhJQy93QUNBWFlBQlFBTUFCSUFHQUFlQUNRRFZRQUNBWEVBd0FBQ0FYSURXd0FDQVhNRFdRQUNBWFFEVndBQ0FYWUFBZ0FHQUF3QlBRQUNBWElEQVFBQ0FYWUFBUUFFQVZBQUFnRnlBQUVBQkFGU0FBSUJjZ0FCQUFRQlVRQUNBWElBQVFBRUFWTUFBZ0Z5QUFVQURBQVNBQmdBSGdBa0FLOEFBZ0Z4QUxBQUFnRnlBT3dBQWdGekF5c0FBZ0YwQVZrQUFnRjFBQVVBREFBU0FCZ0FIZ0FrQXo0QUFnRnhBendBQWdGeUEwSUFBZ0Z6QTBBQUFnRjBBMFFBQWdGMkFBVUFEQUFTQUJnQUhnQWtBejhBQWdGeEF6MEFBZ0Z5QTBNQUFnRnpBMEVBQWdGMEEwVUFBZ0YyQUFVQURBQVNBQmdBSGdBa0Ewd0FBZ0Z4QTBvQUFnRnlBMUFBQWdGekEwNEFBZ0YwQTFJQUFnRjJBQVVBREFBU0FCZ0FIZ0FrQTAwQUFnRnhBMHNBQWdGeUExRUFBZ0Z6QTA4QUFnRjBBMU1BQWdGMkFBRUFCQUhCQUFJQmNnQUNBQkVBSlFBcEFBQUFLd0F0QUFVQUx3QTBBQWdBTmdBN0FBNEFQUUErQUJRQVJRQkpBQllBU3dCTkFCc0FUd0JVQUI0QVZnQmJBQ1FBWFFCZUFDb0FpUUNKQUN3QW13Q2JBQzBBcVFDcEFDNEF1d0M3QUM4QTlBRDBBREFCUlFGSUFERUJ3QUhBQURVQUFRQUFBQUVBQ0FBQkFBWUFQd0FCQUFJQklRRWlBQUVBQUFBQkFBZ0FBZ0FPQUFRRTNRVGVCTjhFNEFBQkFBUUF4d0RJQU5zQTNBQUVBQUFBQVFBSUFBRUFKZ0FDQUFvQUhBQUNBQVlBREFPc0FBSUFTZ094QUFJQVdBQUJBQVFEc2dBQ0FGZ0FBUUFDQUVvQVZ3QUVBQUFBQVFBSUFBRUFSQUFDQUFvQUZBQUJBQVFEclFBQ0FFMEFBUUFFQTY4QUFnQk5BQVFBQUFBQkFBZ0FBUUFlQUFJQUNnQVVBQUVBQkFPdUFBSUFVQUFCQUFRRHNBQUNBRkFBQVFBQ0FFb0RyQUFCQUFBQUFRQUlBQUVBQmdONUFBRUFBUUJMQUFFQUFBQUJBQWdBQVFBR0FpSUFBUUFCQWFFQUFRQUFBQUVBQ0FBQkFBWURqQUFCQUFFQU5nQUJBQUFBQVFBSUFBSUFIQUFDQThFRHdBQUJBQUFBQVFBSUFBSUFDZ0FDQTc4RHZnQUJBQUlBTHdCUEFBRUFBQUFCQUFnQUFnQWVBQXdFTVFRekJESUVOQVExQkNnRUtRUXFBL3NFTEFRdEJDNEFBUUFNQUNjQUtBQXJBRE1BTlFCR0FFY0FTQUJMQUZNQVZBQlZBQUVBQUFBQkFBZ0FBZ0FNQUFNRUx3UXdCREFBQVFBREFFa0FTd1A3QUFFQUFBQUJBQWdBQWdCbUFBZ0VSZ1EyQkRjRU9RUTZCRUlFUXdSRkFBRUFBQUFCQUFnQUFnQVdBQWdBR3dBVkFCUUFIUUFaQUJnQUZ3QVdBQUVBQ0FQNkJDc0Vad1JvQkdrRWFnUnJCR3dBQVFBQUFBRUFDQUFDQUJZQUNBUm5CQ3NFYkFSckJHb0VhUVA2QkdnQUFRQUlBQlFBRlFBV0FCY0FHQUFaQUJzQUhRQUJBQUFBQVFBSUFBSUFGZ0FJQUJVQUZnQVhBQmdBR1FBYkFCMEFGQUFCQUFnRU5nUTNCRGtFT2dSQ0JFTUVSUVJHQUFFQUFBQUJBQWdBQVFBR0EzQUFBUUFCQUJNQUJnQUFBQUVBQ0FBREFBRUFFZ0FCQUdZQUFBQUJBQUFBU2dBQ0FBSURnd09EQUFBRHh3UFFBQUVBQVFBQUFBRUFDQUFDQUR3QUNnUFFBODhEemdQTkE4d0R5d1BLQThrRHlBUEhBQUVBQUFBQkFBZ0FBZ0FhQUFvRU93QjhBSFVBZGdROEJEMEVQZ1EvQkVBRVFRQUNBQUVBRkFBZEFBQUFBUUFBQUFFQUNBQUNBQ1lBRUFQUUE4OER6Z1BOQTh3RHl3UEtBOGtEeUFQSEJFa0VSd1JLQkVzRVNBVGhBQUVBRUFBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFFMEFUZ0R5QWhrQ0d3TXQiLAogICJSb2JvdG8tUmVndWxhci50dGYiOiAiQUFFQUFBQVNBUUFBQkFBZ1IwUkZSdFJYMUZrQUFnL3NBQUFDUkVkUVQxTktjdUN6QUFJU01BQUFVaVJIVTFWQ3c0YVpFUUFDWkZRQUFCZm9UMU12TXFDbnNhWUFBQUdvQUFBQVlHTnRZWEJBbWtsMkFBQWFmQUFBRXNoamRuUWdKRUVHNVFBQUw5d0FBQUJNWm5CbmJXZjBYS3NBQUMxRUFBQUJ2R2RoYzNBQUNBQVRBQUlQNEFBQUFBeG5iSGxtSE4yYkJRQUFPZkFBQWRNMmFHUnRlRGM0RVJjQUFCV1FBQUFFN0dobFlXVDRScXNPQUFBQkxBQUFBRFpvYUdWaENyb0tnZ0FBQVdRQUFBQWthRzEwZU9pRWlJZ0FBQUlJQUFBVGlHeHZZMkhneUdlcEFBQXdLQUFBQ2NadFlYaHdCeElDK1FBQUFZZ0FBQUFnYm1GdFpUVlRZMWtBQWcwb0FBQUNtSEJ2YzNUL2JRQmtBQUlQd0FBQUFDQndjbVZ3ZEtDUDdBQUFMd0FBQUFEYkFBRUFBQUFDQUFDRUtsbm9Ydzg4OVFBYkNBQUFBQUFBeFBBUkxnQUFBQURRMjA2YStodjkxUWt3Q0hNQUFBQUpBQUlBQUFBQUFBQUFBUUFBQjJ6K0RBQUFDVW42Ry81S0NUQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUJPSUFBUUFBQk9JQWp3QVdBRlFBQlFBQkFBQUFBQUFPQUFBQ0FBSVVBQVlBQVFBREJJVUJrQUFGQUFBRm1nVXpBQUFCSHdXYUJUTUFBQVBSQUdZQ0FBQUFBZ0FBQUFBQUFBQUFBT0FBQ3Y5UUFDRi9BQUFBSVFBQUFBQkhUMDlIQUVBQUFQLzlCZ0QrQUFCbUI1b0NBQ0FBQVo4QUFBQUFCRG9Gc0FBZ0FDQUFBZ09NQUdRQUFBQUFBQUFBQUFIN0FBQUIrd0FBQWc4QW9BS1BBSWdFN1FCM0JINEFiZ1hjQUdrRStRQmxBV1VBWndLOEFJVUN5QUFtQTNJQUhBU0pBRTRCa2dBZEFqVUFKUUliQUpBRFRBQVNCSDRBY3dSK0FLb0VmZ0JkQkg0QVhnUitBRFVFZmdDYUJINEFoQVIrQUUwRWZnQndCSDRBWkFId0FJWUJzUUFwQkJFQVNBUmtBSmdFTGdDR0E4Y0FTd2N2QUdvRk9BQWNCUHNBcVFVMUFIY0ZQd0NwQkl3QXFRUnNBS2tGY3dCNkJiUUFxUUl0QUxjRWFnQTFCUVFBcVFST0FLa0cvQUNwQmJRQXFRV0FBSFlGREFDcEJZQUFiUVR0QUtnRXZ3QlFCTVlBTVFVd0FJd0ZGd0FjQnhrQVBRVUVBRGtFemdBUEJNb0FWZ0lmQUpJRFNBQW9BaDhBQ1FOWUFFQURuQUFFQW5rQU9RUmFBRzBFZlFDTUJEQUFYQVNEQUY4RVBRQmRBc2NBUEFSOUFHQUVhQUNNQWZFQWpRSHAvNzhFRGdDTkFmRUFuQWNEQUlzRWFnQ01CSkFBV3dSOUFJd0VqQUJmQXJVQWpBUWdBRjhDblFBSkJHa0FpQVBnQUNFR0F3QXJBL2NBS1FQSkFCWUQ5d0JZQXJVQVFBSHpBSzhDdFFBVEJYRUFnd0h6QUlzRVlBQnBCS1lBV3dXMEFHa0UyQUFmQWVzQWt3VG9BRm9EV0FCbUJra0FXd09UQUpNRHdRQm1CRzRBZndaS0FGb0RxZ0I0QXYwQWdnUkdBR0VDN3dCQ0F1OEFQZ0tDQUhzRWlBQ2FBK2tBUXdJV0FKTUIrd0IwQXU4QWVnT2pBSG9Ed0FCbUJkd0FWUVkxQUZBR09RQnZBOGtBUkFkNi8vSUVSQUJaQllBQWRnUzZBS1lFd2dDTEJzRUFUZ1N3QUg0RWtRQkhCSWdBV3dTY0FKVUZtZ0FkQWZvQW13UnpBSm9FVHdBaUFpa0FJZ1dMQUtJRWlBQ1JCNkVBYUFkRUFHRUIvQUNnQlljQVhRSzUvK1FGZmdCbEJKSUFXd1dRQUl3RTh3Q0lBZ1AvdEFRM0FHSUR4QUNwQTQwQWpBT3JBSGdEYWdDQkFmRUFqUUt0QUhrQ0tnQXlBOFlBZXdMOEFGNENXZ0IrQUFEOHB3QUEvVzhBQVB5TEFBRDlYZ0FBL0NjQjcvMDRBZzBBdHdRTEFIRUNGd0NUQkhNQXNRV2tBQjhGY1FCbkJUNEFNZ1NSQUhnRnRRQ3lCSkVBUlFXN0FFMEZpUUJhQlZJQWNRU0ZBR1FFdlFDZ0JBSUFMZ1NJQUdBRVVBQmpCQ1VBYlFTSUFKRUVqZ0I2QXBjQXd3UnVBQ1VEN0FCbEJNUUFLUVNJQUpFRVRRQmxCSWdBWUFRc0FGRUVYUUNQQmFNQVZ3V2FBRjhHbHdCNkJLRUFlUVJDLzlvR1NBQktCZjhBS2dWa0FIc0lrUUF4Q0tRQXNRYUNBRDRGdEFDd0JRc0FvZ1lFQURJSFF3QWJCTDhBVUFXMEFMRUZxUUF2QlFjQVRRWXNBRk1GMlFDdkJYb0FsZ2VIQUxBSHdBQ3dCaElBRUFickFMSUZCUUNqQldRQWt3Y25BTGNGR0FCWkJHd0FZUVNTQUowRFd3Q2FCTlFBTGdZZ0FCVUVFQUJZQko0QW5BUlNBSndFb0FBc0JlOEFuUVNkQUp3RW5nQ2NBOWdBS0FYTkFHUUV2UUNjQkZrQVp3WjRBSndHbmdDUkJQY0FIZ1kyQUowRVdBQ2RCRTBBWkFhSEFKMEVaQUF2QkdqLzZBUk5BR2NHeVFBbkJ1UUFuQVNKLy8wRW5nQ2NCd2dBbkFZckFJRUVWdi9jQnlzQXR3WDRBSmtFMGdBb0JFWUFEd2NMQU1rR0N3QzhCdEVBa3dYaEFKWUpCQUMyQjlFQW13UWpBRkFEMndCTUJYRUFad1NMQUZzRkNnQVdCQU1BTGdWeEFHY0VpQUJiQndFQW5BWWtBSDRIQ0FDY0Jpc0FnUVV5QUhVRVJ3QmtCUDBBZEFBQS9HY0FBUHh4QUFEOVpnQUEvYVFBQVBvYkFBRDZMQVJXLzl3Rkd3Q29CSWtBakFSakFLSURrQUNSQk5zQXNRUUZBSkVGQ1FDakJINEFtZ2FNQUVRRmd3QStCODhBcUFXMEFKRUlNUUN3QnZRQWtRWHVBSEVFMHdCdEJ5d0FOQVZjQUI4RmJ3Q1dCR29BZ3dWd0FJb0dMd0EvQkwzLzNnVUpBS01FV2dDYUJiSUFzUVNJQUpFRmh3QmRCS2dBYUFTb0FHa0V0d0E2QTBrQU93VDJBRmNHbEFCWkJ1UUFaQVpXQURZRkt3QXhCRWtBVWdRSEFIa0h3UUJFQm5VQVB3ZjdBS2tHb1FDUUJQWUFkZ1FkQUdVRnJRQWpCU0FBUmdWa0FKWURJQUJ2QkJRQUFBZ3BBQUFFRkFBQUNDa0FBQUs1QUFBQ0NnQUFBVndBQUFSL0FBQUNNQUFBQWFJQUFBRFJBQUFBQUFBQUFqUUFKUUkwQUNVRlFBQ2lCajhBa0FPbUFBMEJtUUJnQVprQU1BR1hBQ1FCbVFCUEF0UUFhQUxiQUR3Q3dRQWtCR2tBUmdTUEFGY0NzZ0NLQThRQWxBVmFBSlFBOWdBbUI2b0FSQUptQUd3Q1pnQlpBNk1BT3dMdkFEWURZQUI2QktZQVd3WlZBQjhHa0FDbkNIWUFxQWRqQURrR0t3Q01CSDRBWHdYYUFCOEVJZ0FxQkhRQUlBVklBRjBGVHdBZkJlY0FlZ1BPQUdnSU9nQ2lCUUVBWndVWEFKZ0dKZ0JVQnRjQVpBYlBBR01HYWdCWkJJOEFhZ1dPQUtrRXJ3QkZCSklBcUFURkFEOElPZ0JpQWd6L3NBU0NBR1VFWkFDWUJCRUFQZ1F2QUlVRUNBQXJBa3dBdFFLUEFHNENBd0JjQlBNQVBBUnVBQjhFaXdBOEJ0UUFQQWJVQUR3RTdnQThCcHNBWHdBQUFBQUlNd0JiQ0RVQVhBUWdBRHNFbmdCYUFmei90Z0dSQUdjRHBBQ0RBNTRBZ1FPZkFJRUQ5QUJwQkE0QWFRUHovMTREN3dCdUE2UUFnUUg5QUo4RWhRQVRCRkFBaWdSOEFHQUVnQUNLQStZQWlnUExBSW9FckFCakJPTUFpZ0hvQUpjRHp3QXJCRlFBaWdPMEFJb0dBZ0NLQk9NQWlnUzdBR0FFWEFDS0JMc0FXUVJLQUlvRUlBQkRCQ1lBS0FSOEFIUUVad0FVQmhVQU1RUlVBQ1lFS3dBTkJDTUFSd0x2QUZBQzd3QjZBdThBUWdMdkFENEM3d0EyQXU4QVd3THZBRllDN3dBNkF1OEFUd0x2QUVrRGxnQ1BBclVBbmdRNkFCNEV3d0JrQlV3QXNRVWtBTElFRXdDU0JUMEFzZ1FQQUpJRUlBQkRCRE1BTUFROEFCWURyd0NLQkdjQUZBUzdBR0FFWndBVUE0a0FQZ1RPQUlvRDd3QS9CV2NBWUFVWEFHQUU4Z0IxQlhJQUpnUjhBR0FIUVFBbkIwOEFpZ1YwQUNnRXpRQ0tCRmtBaWdVa0FDNEdDd0FmQkQ4QVJ3VHNBSW9FVGdDTEJNRUFKd1FmQUNJRktBQ0tCR29BUFFaUkFJb0dyQUNLQlIwQUNBWHhBSW9FVGdDS0JIc0FTd1oyQUlvRWh3QlFCQkVBQ3daSEFCOEVlUUNMQlFrQWl3VTNBQ01Gd2dCZ0JGOEFEUVNvQUNZR1lRQW1CR29BUFFScUFJb0Z3d0FDQk1vQVhnUS9BRWNFdXdCZ0JETUFNQVBqQUVJSUlnQ0tCS3NBS0FSOUFJd0VNZ0JjQkpNQVd3U01BRnNEZVFCWEJJMEFqQVNjQUZzRVBRQmRCSDBBWUFXQkFINEZyZ0IrQlpNQXNnWGdBSDRGNHdCK0E5VUFvQVNDQUlNRHJ3Q0tCRmdBRHdUUEFENEM3d0JRQXU4QU5nTHZBRnNDN3dCV0F1OEFPZ0x2QUU4Qzd3QkpCR3NBWlFRdUFFb0dwQUJnQkxrQWdnVUFBSGdDQnYrMEFnVC90QUg3QUpzQisvLzZBZnNBbXdIN0FJWUVVQUNLQWZzQUFBSTFBQ1VGWFFBbEJWMEFKUVNHQUFBRXhnQXhBcDMvOUFVNEFCd0ZPQUFjQlRnQUhBVTRBQndGT0FBY0JUZ0FIQVU0QUJ3Rk5RQjNCSXdBcVFTTUFLa0VqQUNwQkl3QXFRSXQvK0FDTFFDd0FpMy82UUl0LzlZRnRBQ3BCWUFBZGdXQUFIWUZnQUIyQllBQWRnV0FBSFlGTUFDTUJUQUFqQVV3QUl3Rk1BQ01CTTRBRHdSYUFHMEVXZ0J0QkZvQWJRUmFBRzBFV2dCdEJGb0FiUVJhQUcwRU1BQmNCRDBBWFFROUFGMEVQUUJkQkQwQVhRSDYvOFlCK2dDV0Fmci96d0g2Lzd3RWFnQ01CSkFBV3dTUUFGc0VrQUJiQkpBQVd3U1FBRnNFYVFDSUJHa0FpQVJwQUlnRWFRQ0lBOGtBRmdQSkFCWUZPQUFjQkZvQWJRVTRBQndFV2dCdEJUZ0FIQVJhQUcwRk5RQjNCREFBWEFVMUFIY0VNQUJjQlRVQWR3UXdBRndGTlFCM0JEQUFYQVUvQUtrRkdRQmZCSXdBcVFROUFGMEVqQUNwQkQwQVhRU01BS2tFUFFCZEJJd0FxUVE5QUYwRWpBQ3BCRDBBWFFWekFIb0VmUUJnQlhNQWVnUjlBR0FGY3dCNkJIMEFZQVZ6QUhvRWZRQmdCYlFBcVFSb0FJd0NMZiszQWZyL25RSXQvN1lCK3YrY0FpMy83QUg2LzlJQ0xRQVlBZkgvK3dJdEFLb0dsd0MzQTlvQWpRUnFBRFVDQS8rMEJRUUFxUVFPQUkwRVRnQ2hBZkVBa3dST0FLa0I4UUJYQkU0QXFRS0hBSndFVGdDcEFzMEFuQVcwQUtrRWFnQ01CYlFBcVFScUFJd0Z0QUNwQkdvQWpBUnEvN3dGZ0FCMkJKQUFXd1dBQUhZRWtBQmJCWUFBZGdTUUFGc0U3UUNvQXJVQWpBVHRBS2dDdFFCVEJPMEFxQUsxQUdNRXZ3QlFCQ0FBWHdTL0FGQUVJQUJmQkw4QVVBUWdBRjhFdndCUUJDQUFYd1MvQUZBRUlBQmZCTVlBTVFLZEFBa0V4Z0F4QXAwQUNRVEdBREVDeFFBSkJUQUFqQVJwQUlnRk1BQ01CR2tBaUFVd0FJd0VhUUNJQlRBQWpBUnBBSWdGTUFDTUJHa0FpQVV3QUl3RWFRQ0lCeGtBUFFZREFDc0V6Z0FQQThrQUZnVE9BQThFeWdCV0EvY0FXQVRLQUZZRDl3QllCTW9BVmdQM0FGZ0hldi95QnNFQVRnV0FBSFlFaUFCYkJJRC92Z1NBLzc0RUpnQW9CSVVBRXdTRkFCTUVoUUFUQklVQUV3U0ZBQk1FaFFBVEJJVUFFd1I4QUdBRDVnQ0tBK1lBaWdQbUFJb0Q1Z0NLQWVqL3ZnSG9BSTRCNlAvSEFlai90QVRqQUlvRXV3QmdCTHNBWUFTN0FHQUV1d0JnQkxzQVlBUjhBSFFFZkFCMEJId0FkQVI4QUhRRUt3QU5CSVVBRXdTRkFCTUVoUUFUQkh3QVlBUjhBR0FFZkFCZ0JId0FZQVNBQUlvRDVnQ0tBK1lBaWdQbUFJb0Q1Z0NLQStZQWlnU3NBR01FckFCakJLd0FZd1NzQUdNRTR3Q0tBZWovbFFIby81UUI2UC9LQWVnQUJnSG9BSWtEendBckJGUUFpZ08wQUlJRHRBQ0tBN1FBaWdPMEFJb0U0d0NLQk9NQWlnVGpBSW9FdXdCZ0JMc0FZQVM3QUdBRVNnQ0tCRW9BaWdSS0FJb0VJQUJEQkNBQVF3UWdBRU1FSUFCREJDWUFLQVFtQUNnRUpnQW9CSHdBZEFSOEFIUUVmQUIwQkh3QWRBUjhBSFFFZkFCMEJoVUFNUVFyQUEwRUt3QU5CQ01BUndRakFFY0VJd0JIQlRnQUhBVHcvL0FHR1AvK0FwRUFCQVdVLy9vRk12OTRCV2IvL1FLWC81c0ZPQUFjQlBzQXFRU01BS2tFeWdCV0JiUUFxUUl0QUxjRkJBQ3BCdndBcVFXMEFLa0ZnQUIyQlF3QXFRVEdBREVFemdBUEJRUUFPUUl0LzlZRXpnQVBCSVVBWkFSUUFHTUVpQUNSQXBjQXd3UmRBSThFY3dDYUJKQUFXd1NJQUpvRDRBQWhBL2NBS1FLWC8rWUVYUUNQQkpBQVd3UmRBSThHbHdCNkJJd0FxUVJ6QUxFRXZ3QlFBaTBBdHdJdC85WUVhZ0ExQlNRQXNnVUVBS2tGQndCTkJUZ0FIQVQ3QUtrRWN3Q3hCSXdBcVFXMEFMRUcvQUNwQmJRQXFRV0FBSFlGdFFDeUJRd0FxUVUxQUhjRXhnQXhCUVFBT1FSYUFHMEVQUUJkQko0QW5BU1FBRnNFZlFDTUJEQUFYQVBKQUJZRDl3QXBCRDBBWFFOYkFKb0VJQUJmQWZFQWpRSDYvN3dCNmYrL0JGSUFuQVBKQUJZSEdRQTlCZ01BS3djWkFEMEdBd0FyQnhrQVBRWURBQ3NFemdBUEE4a0FGZ0ZsQUdjQ2p3Q0lCQjRBb0FJRC83UUJtUUF3QnZ3QXFRY0RBSXNGT0FBY0JGb0FiUVNNQUtrRnRBQ3hCRDBBWFFTZUFKd0ZpUUJhQlpvQVh3VUtBQllFQS8vN0NGa0FXd2xKQUhZRXZ3QlFCQkFBV0FVMUFIY0VNQUJjQk00QUR3UUNBQzRDTFFDM0IwTUFHd1lnQUJVQ0xRQzNCVGdBSEFSYUFHMEZPQUFjQkZvQWJRZDYvL0lHd1FCT0JJd0FxUVE5QUYwRmh3QmRCRGNBWWdRM0FHSUhRd0FiQmlBQUZRUy9BRkFFRUFCWUJiUUFzUVNlQUp3RnRBQ3hCSjRBbkFXQUFIWUVrQUJiQlhFQVp3U0xBRnNGY1FCbkJJc0FXd1ZrQUpNRVRRQmtCUWNBVFFQSkFCWUZCd0JOQThrQUZnVUhBRTBEeVFBV0JYb0FsZ1JaQUdjRzZ3Q3lCallBblFVRUFEa0Q5d0FwQklNQVh3V3BBQzhFb0FBc0JUZ0FIQVJhQUcwRk9BQWNCRm9BYlFVNEFCd0VXZ0J0QlRnQUhBUmEvOG9GT0FBY0JGb0FiUVU0QUJ3RVdnQnRCVGdBSEFSYUFHMEZPQUFjQkZvQWJRVTRBQndFV2dCdEJUZ0FIQVJhQUcwRk9BQWNCRm9BYlFVNEFCd0VXZ0J0Qkl3QXFRUTlBRjBFakFDcEJEMEFYUVNNQUtrRVBRQmRCSXdBcVFROUFGMEVqUC93QkQzL3VnU01BS2tFUFFCZEJJd0FxUVE5QUYwRWpBQ3BCRDBBWFFJdEFMY0IrZ0NiQWkwQW93SHhBSVVGZ0FCMkJKQUFXd1dBQUhZRWtBQmJCWUFBZGdTUUFGc0ZnQUJIQkpEL3hBV0FBSFlFa0FCYkJZQUFkZ1NRQUZzRmdBQjJCSkFBV3dWK0FHVUVrZ0JiQlg0QVpRU1NBRnNGZmdCbEJKSUFXd1YrQUdVRWtnQmJCWDRBWlFTU0FGc0ZNQUNNQkdrQWlBVXdBSXdFYVFDSUJaQUFqQVR6QUlnRmtBQ01CUE1BaUFXUUFJd0U4d0NJQlpBQWpBVHpBSWdGa0FDTUJQTUFpQVRPQUE4RHlRQVdCTTRBRHdQSkFCWUV6Z0FQQThrQUZnU2hBRjhFb1FCZkJTUUFzZ1JTQUp3RnRBQ3BCSjBBbkFUR0FERUQyQUFvQlFRQU9RUDNBQ2tGZWdDV0JGa0Fad1Y2QUpZRVdRQm5CSE1Bc1FOYkFKb0hRd0FiQmlBQUZRWXZBRDhFdmYvZUJHZ0FqQVVGLzlRRkJmL1VCSE1BQXdOYi8vd0ZPQUFMQkNmLzB3VzBBTEVFbmdDY0JiUUFxUVNkQUp3Ry9BQ3BCZThBblFXcEFDOEVvQUFzQk00QUR3UUNBQzRGQkFBNUEvY0FLUVJRQUdNRWJBQVNCajhBa0FSK0FGMEVmZ0JlQkg0QU5RUitBSm9Fa2dCa0JLWUFod1Z6QUhvRWZRQmdCYlFBcVFScUFJd0ZPQUFjQkZvQU9RU01BRjhFUFFBcEFpMy9DZ0g2L3ZBRmdBQjJCSkFBTXdUdEFGVUN0ZitMQlRBQWpBUnBBQ3NFcHY4NkJQc0FxUVI5QUl3RlB3Q3BCSU1BWHdVL0FLa0Vnd0JmQmJRQXFRUm9BSXdGQkFDcEJBNEFqUVVFQUtrRURnQ05CRTRBcVFIeEFJWUcvQUNwQndNQWl3VzBBS2tFYWdDTUJRd0FxUVI5QUl3RTdRQ29BclVBZ2dTL0FGQUVJQUJmQk1ZQU1RS2RBQWtGRndBY0ErQUFJUVVYQUJ3RDRBQWhCeGtBUFFZREFDc0V5Z0JXQS9jQVdBWEcvbmdFaFFBVEJDTC9ud1VmLzd3Q0pQL0FCTVgvM3dSbi8xY0UvUC80QklVQUV3UlFBSW9ENWdDS0JDTUFSd1RqQUlvQjZBQ1hCRlFBaWdZQ0FJb0V1d0JnQkZ3QWlnUW1BQ2dFS3dBTkJGUUFKZ0hvLzdRRUt3QU5BK1lBaWdPdkFJb0VJQUJEQWVnQWx3SG8vN1FEendBckJGUUFpZ1FmQUNJRWhRQVRCRkFBaWdPdkFJb0Q1Z0NLQk93QWlnWUNBSW9FNHdDS0JMc0FZQVRPQUlvRVhBQ0tCSHdBWUFRbUFDZ0VWQUFtQkQ4QVJ3VGpBSW9FZkFCZ0JDc0FEUVhEQUFJRTdBQ0tCQjhBSWdWbkFHQUZPQUFjQkZvQWJRU01BS2tFUFFCZEFBQUFBUUFBQk9RSkNnUUFBQUlDQWdNR0JRY0dBZ01EQkFVQ0FnSUVCUVVGQlFVRkJRVUZCUUlDQlFVRkJBZ0dCZ1lHQlFVR0JnSUZCZ1VJQmdZR0JnWUZCUVlHQ0FZRkJRSUVBZ1FFQXdVRkJRVUZBd1VGQWdJRkFnZ0ZCUVVGQXdVREJRUUhCQVFFQXdJREJnSUZCUVlGQWdZRUJ3UUVCUWNFQXdVREF3TUZCQUlDQXdRRUJ3Y0hCQWdGQmdVRkNBVUZCUVVHQWdVRkFnWUZDUWdDQmdNR0JRWUdBZ1VFQkFRRUFnTUNCQU1EQUFBQUFBQUNBZ1VDQlFZR0JnVUdCUVlHQmdVRkJRVUZCUVVGQXdVRUJRVUZCUVVGQmdZSEJRVUhCd1lLQ2djR0JnY0lCUVlHQmdjSEJnZ0pCd2dHQmdnR0JRVUVCUWNGQlFVRkJ3VUZCQWNGQlFjSEJnY0ZCUWNGQlFVSUNBVUZDQWNGQ0FjRkJRZ0hDQWNLQ1FVRUJnVUdCUVlGQ0FjSUJ3WUZCZ0FBQUFBQUFBVUdCUVVFQlFVR0JRY0dDUVlKQ0FjRkNBWUdCUVlIQlFZRkJnVUdCUVVGQkFZSENBY0dCUVVKQndrSEJnVUdCZ1lFQlFrRkNRTUNBZ1VDQWdFQUFnSUdCd1FDQWdJQ0F3TURCUVVEQkFZQkNRTURCQU1FQlFjSENnZ0hCUWNGQlFZR0J3UUpCZ1lIQ0FnSEJRWUZCUVVKQWdVRkJRVUZBd01DQmdVRkNBZ0dCd0FKQ1FVRkFnSUVCQVFFQlFRRUJBSUZCUVVGQkFRRkJnSUVCUVFIQmdVRkJRVUZCUVVGQndVRkJRTURBd01EQXdNREF3TUVBd1VGQmdZRkJnVUZCUVVFQlFVRkJBVUVCZ1lHQmdVSUNBWUZCUVlIQlFZRkJRVUdCUWNJQmdjRkJRY0ZCUWNGQmdZR0JRVUhCUVVHQlFVRkJRUUpCUVVGQlFVRUJRVUZCUVlHQmdjSEJBVUVCUVVEQXdNREF3TURCUVVIQlFZQ0FnSUNBZ0lGQWdJR0JnVUZBd1lHQmdZR0JnWUdCUVVGQlFJQ0FnSUdCZ1lHQmdZR0JnWUdCUVVGQlFVRkJRVUZCUVVGQlFJQ0FnSUZCUVVGQlFVRkJRVUZCQVFHQlFZRkJnVUdCUVlGQmdVR0JRWUdCUVVGQlFVRkJRVUZCUVlGQmdVR0JRWUZCZ1VDQWdJQ0FnSUNBZ0lIQkFVQ0JnVUZBZ1VDQlFNRkF3WUZCZ1VHQlFVR0JRWUZCZ1VHQXdZREJnTUZCUVVGQlFVRkJRVUZCUU1GQXdVREJnVUdCUVlGQmdVR0JRWUZDQWNGQkFVRkJBVUVCUVFJQ0FZRkJRVUZCUVVGQlFVRkJRVUVCQVFFQWdJQ0FnWUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUVCQVFFQkFVRkJRVUdBZ0lDQWdJRUJRUUVCQVFHQmdZRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJ3VUZCUVVGQmdZSEF3WUdCZ01HQmdVRkJnSUdDQVlHQmdVRkJnSUZCUVVGQXdVRkJRVUVCQU1GQlFVSEJRVUZBZ0lGQmdZR0JnWUZCUVlJQmdZR0JnWUZCZ1VGQlFVRkJRUUVCUVFGQWdJQ0JRUUlCd2dIQ0FjRkJBSURCUUlDQ0FnR0JRVUdCUVVHQmdZRkNRb0ZCUVlGQlFVQ0NBY0NCZ1VHQlFnSUJRVUdCUVVJQndVRkJnVUdCUVlGQmdVR0JRWUZCZ1FHQkFZRUJnVUlCd1lFQlFZRkJnVUdCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnVUdCUVlGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUUlDQWdJR0JRWUZCZ1VHQlFZRkJnVUdCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnWUdCZ1lHQmdZR0JnVUVCUVFGQkFVRkJnVUdCUVVFQmdRR0JRWUZCUVFJQndjRkJRWUdCUVFHQlFZRkJnVUlCd1lGQlFVR0JBVUZCd1VGQlFVRkJRWUZCZ1VHQlFVRkFnSUdCUVlEQmdVRkJnVUdCUVlGQmdVR0JRWUZCUUlJQ0FZRkJnVUdBd1VGQlFNR0JBWUVDQWNGQkFjRkJRWUNCUVVHQlFVRUJRWUNCUWNGQlFVRkJRSUZCQVFGQWdJRUJRVUZCUVFFQmdjR0JRVUZCUVVGQlFZRkJRWUdCUVlHQlFVRkFBQUFBd0FBQUFNQUFBQWNBQU1BQVFBQUFCd0FBd0FLQUFBR2lBQUVCbXdBQUFEcUFJQUFCZ0JxQUFBQUFnQU5BSDRBb0FDc0FLMEF2d0RHQU04QTVnRHZBUDRCRHdFUkFTVUJKd0V3QVZNQlh3Rm5BWDRCZndHUEFaSUJvUUd3QWZBQi93SWJBamNDV1FLOEFzY0N5UUxkQXZNREFRTURBd2tERHdNakE0b0RqQU9TQTZFRHNBTzVBOGtEemdQU0E5WUVKUVF2QkVVRVR3UmlCRzhFZVFTR0JNNEUxd1RoQlBVRkFRVVFCUk1lQVI0L0hvVWU4Ujd6SHZrZlRTQUxJQkVnRlNBZUlDSWdKeUF3SURNZ09pQThJRVFnZENCL0lLUWdxaUNzSUxFZ3VpQzlJUVVoRXlFV0lTSWhKaUV1SVY0aUFpSUdJZzhpRWlJYUloNGlLeUpJSW1BaVpTWEs3Z0wydy9zRS92Ly8vZi8vQUFBQUFBQUNBQTBBSUFDZ0FLRUFyUUN1QU1BQXh3RFFBT2NBOEFEL0FSQUJFZ0VtQVNnQk1RRlVBV0FCYUFGL0FZOEJrZ0dnQWE4QjhBSDZBaGdDTndKWkFyd0N4Z0xKQXRnQzh3TUFBd01EQ1FNUEF5TURoQU9NQTQ0RGt3T2pBN0VEdWdQS0E5RUQxZ1FBQkNZRU1BUkdCRkFFWXdSd0JIb0VpQVRQQk5nRTRnVDJCUUlGRVI0QUhqNGVnQjZnSHZJZTlCOU5JQUFnRUNBVElCY2dJQ0FsSURBZ01pQTVJRHdnUkNCMElIOGdveUNtSUtzZ3NTQzVJTHdoQlNFVElSWWhJaUVtSVM0aFd5SUNJZ1lpRHlJUklob2lIaUlySWtnaVlDSmtKY3J1QWZiRCt3SCsvLy84Ly84QUFRQUEvL2IvNUFHbC84SUJtZi9CQUFBQmpBQUFBWWNBQUFHREFBQUJnUUFBQVg4QUFBRjNBQUFCZWY4Vi93Yi9CUDczL3VvQnV3QUFBQUQrWlA1REFQRDkxLzNXL2NqOXMvMm4vYWI5b2YyYy9Za0FBUC9MLzhvQUFBQUEvUWtBQVArci9QMzgrZ0FBL0xrQUFQeXhBQUQ4cGdBQS9LQUFBUDcxQUFEKzhnQUEvRWtBQU9XdjVXL2xJT1ZQNUxUbFRlVmQ0VnZoVndBQTRWVGhVK0ZSNFVuamR1RkI0MjdoT09FSjRQOEFBT0RhQUFEZzFlRE80TTNnaHVCNTRIZmdiTitUNEdIZ05kK1MzcXZmaHQrRjMzN2ZlOTl2MzFQZlBOODUyOVVUbndyZkJxTUNxd0d2QUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU5vQUFBRGtBQUFCRGdBQUFTZ0FBQUVvQUFBQktBQUFBV29BQUFBQUFBQUFBQUFBQUFBQUFBRnFBWFFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJZZ0FBQUFBQmFnR0dBQUFCbmdBQUFBQUFBQUcyQUFBQi9nQUFBaVlBQUFKSUFBQUNXQUFBQXVJQUFBTHlBQUFEQmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUM2QUFBQXVnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1RBSk5BazRDVHdKUUFsRUFnUUpJQWx3Q1hRSmVBbDhDWUFKaEFJSUFnd0ppQW1NQ1pBSmxBbVlBaEFDRkFtY0NhQUpwQW1vQ2F3SnNBSVlBaHdKM0FuZ0NlUUo2QW5zQ2ZBQ0lBSWtDZlFKK0FuOENnQUtCQUlvQ1J3UkhBSXNDU1FDTUFyQUNzUUt5QXJNQ3RBSzFBSTBDdGdLM0FyZ0N1UUs2QXJzQ3ZBSzlBSTRBandLK0FyOEN3QUxCQXNJQ3d3TEVBSkFBa1FMRkFzWUN4d0xJQXNrQ3lnQ1NBSk1DMlFMYUF0MEMzZ0xmQXVBQ1NnSkxBbElDYlFMNEF2a0MrZ0w3QXRjQzJBTGJBdHdBclFDdUExTUFyd05VQTFVRFZnQ3dBTEVEWFFOZUExOEFzZ05nQTJFQXN3TmlBMk1BdEFOa0FMVURaUUMyQTJZRFp3QzNBMmdBdUFDNUEya0RhZ05yQTJ3RGJRTnVBMjhEY0FEREEzSURjd0RFQTNFQXhRREdBTWNBeUFESkFNb0F5d04wQU13QXpRT3hBM29BMFFON0FOSURmQU45QTM0RGZ3RFRBTlFBMVFPQkE3SURnZ0RXQTRNQTF3T0VBNFVBMkFPR0FOa0EyZ0RiQTRjRGdBRGNBNGdEaVFPS0E0c0RqQU9OQTQ0QTNRRGVBNDhEa0FEcEFPb0E2d0RzQTVFQTdRRHVBTzhEa2dEd0FQRUE4Z0R6QTVNQTlBT1VBNVVBOVFPV0FQWURsd096QTVnQkFRT1pBUUlEbWdPYkE1d0RuUUVEQVFRQkJRT2VBN1FEbndFR0FRY0JDQVJkQTdVRHRnRVdBUmNCR0FFWkE3Y0R1QU82QTdrQkp3RW9CR0lFWXdSY0FTa0JLZ0VyQVN3QkxRUmVCRjhCTGdFdkJGY0VXQU83QTd3RVNRUktBVEFCTVFSZ0JHRUJNZ0V6QkVzRVRBRTBBVFVCTmdFM0FUZ0JPUU85QTc0RVRRUk9BNzhEd0FScUJHc0VUd1JRQVRvQk93UlJCRklCUEFFOUFUNEVXd0UvQVVBRVdRUmFBOEVEd2dQREFVRUJRZ1JvQkdrQlF3RkVCR1FFWlFSVEJGUUVaZ1JuQVVVRHpnUE5BODhEMEFQUkE5SUQwd0ZHQVVjRVZRUldBK2dENlFGSUFVa0Q2Z1ByQkd3RWJRRktBK3dFYmdQdEErNEJhUUZxQkhBRWJ3Ri9CRWdCaFFBTUFBQUFBQXhBQUFBQUFBQUFBUVFBQUFBQUFBQUFBQUFBQUFFQUFBQUNBQUFBQWdBQUFBSUFBQUFOQUFBQURRQUFBQU1BQUFBZ0FBQUFmZ0FBQUFRQUFBQ2dBQUFBb0FBQUFrVUFBQUNoQUFBQXJBQUFBR01BQUFDdEFBQUFyUUFBQWtZQUFBQ3VBQUFBdndBQUFHOEFBQURBQUFBQXhRQUFBa3dBQUFER0FBQUF4Z0FBQUlFQUFBREhBQUFBendBQUFsTUFBQURRQUFBQTBBQUFBa2dBQUFEUkFBQUExZ0FBQWx3QUFBRFhBQUFBMkFBQUFJSUFBQURaQUFBQTNRQUFBbUlBQUFEZUFBQUEzd0FBQUlRQUFBRGdBQUFBNVFBQUFtY0FBQURtQUFBQTVnQUFBSVlBQUFEbkFBQUE3d0FBQW00QUFBRHdBQUFBOEFBQUFJY0FBQUR4QUFBQTlnQUFBbmNBQUFEM0FBQUErQUFBQUlnQUFBRDVBQUFBL1FBQUFuMEFBQUQrQUFBQS9nQUFBSW9BQUFEL0FBQUJEd0FBQW9JQUFBRVFBQUFCRUFBQUFrY0FBQUVSQUFBQkVRQUFCRWNBQUFFU0FBQUJKUUFBQXBNQUFBRW1BQUFCSmdBQUFJc0FBQUVuQUFBQkp3QUFBa2tBQUFFb0FBQUJNQUFBQXFjQUFBRXhBQUFCTVFBQUFJd0FBQUV5QUFBQk53QUFBckFBQUFFNEFBQUJPQUFBQUkwQUFBRTVBQUFCUUFBQUFyWUFBQUZCQUFBQlFnQUFBSTRBQUFGREFBQUJTUUFBQXI0QUFBRktBQUFCU3dBQUFKQUFBQUZNQUFBQlVRQUFBc1VBQUFGU0FBQUJVd0FBQUpJQUFBRlVBQUFCWHdBQUFzc0FBQUZnQUFBQllRQUFBdGtBQUFGaUFBQUJaUUFBQXQwQUFBRm1BQUFCWndBQUFrb0FBQUZvQUFBQmZnQUFBdUVBQUFGL0FBQUJmd0FBQUpRQUFBR1BBQUFCandBQUFKVUFBQUdTQUFBQmtnQUFBSllBQUFHZ0FBQUJvUUFBQUpjQUFBR3ZBQUFCc0FBQUFKa0FBQUh3QUFBQjhBQUFBNnNBQUFINkFBQUIrZ0FBQWxJQUFBSDdBQUFCK3dBQUFtMEFBQUg4QUFBQi93QUFBdmdBQUFJWUFBQUNHUUFBQXRjQUFBSWFBQUFDR3dBQUF0c0FBQUkzQUFBQ053QUFBSnNBQUFKWkFBQUNXUUFBQUp3QUFBSzhBQUFDdkFBQUE2d0FBQUxHQUFBQ3h3QUFBSjBBQUFMSkFBQUN5UUFBQUo4QUFBTFlBQUFDM1FBQUFLQUFBQUx6QUFBQzh3QUFBS1lBQUFNQUFBQURBUUFBQUtjQUFBTURBQUFEQXdBQUFLa0FBQU1KQUFBRENRQUFBS29BQUFNUEFBQUREd0FBQUtzQUFBTWpBQUFESXdBQUFLd0FBQU9FQUFBRGhRQUFBSzBBQUFPR0FBQURoZ0FBQTFNQUFBT0hBQUFEaHdBQUFLOEFBQU9JQUFBRGlnQUFBMVFBQUFPTUFBQURqQUFBQTFjQUFBT09BQUFEa2dBQUExZ0FBQU9UQUFBRGxBQUFBTEFBQUFPVkFBQURsd0FBQTEwQUFBT1lBQUFEbUFBQUFMSUFBQU9aQUFBRG1nQUFBMkFBQUFPYkFBQURtd0FBQUxNQUFBT2NBQUFEblFBQUEySUFBQU9lQUFBRG5nQUFBTFFBQUFPZkFBQURud0FBQTJRQUFBT2dBQUFEb0FBQUFMVUFBQU9oQUFBRG9RQUFBMlVBQUFPakFBQURvd0FBQUxZQUFBT2tBQUFEcFFBQUEyWUFBQU9tQUFBRHBnQUFBTGNBQUFPbkFBQURwd0FBQTJnQUFBT29BQUFEcVFBQUFMZ0FBQU9xQUFBRHNBQUFBMmtBQUFPeEFBQUR1UUFBQUxvQUFBTzZBQUFEdWdBQUEzQUFBQU83QUFBRHV3QUFBTU1BQUFPOEFBQUR2UUFBQTNJQUFBTytBQUFEdmdBQUFNUUFBQU8vQUFBRHZ3QUFBM0VBQUFQQUFBQUR4Z0FBQU1VQUFBUEhBQUFEeHdBQUEzUUFBQVBJQUFBRHlRQUFBTXdBQUFQS0FBQUR6Z0FBQTNVQUFBUFJBQUFEMGdBQUFNNEFBQVBXQUFBRDFnQUFBTkFBQUFRQUFBQUVBQUFBQTdFQUFBUUJBQUFFQVFBQUEzb0FBQVFDQUFBRUFnQUFBTkVBQUFRREFBQUVBd0FBQTNzQUFBUUVBQUFFQkFBQUFOSUFBQVFGQUFBRUNBQUFBM3dBQUFRSkFBQUVDd0FBQU5NQUFBUU1BQUFFREFBQUE0RUFBQVFOQUFBRURRQUFBN0lBQUFRT0FBQUVEZ0FBQTRJQUFBUVBBQUFFRHdBQUFOWUFBQVFRQUFBRUVBQUFBNE1BQUFRUkFBQUVFUUFBQU5jQUFBUVNBQUFFRXdBQUE0UUFBQVFVQUFBRUZBQUFBTmdBQUFRVkFBQUVGUUFBQTRZQUFBUVdBQUFFR0FBQUFOa0FBQVFaQUFBRUdRQUFBNGNBQUFRYUFBQUVHZ0FBQTRBQUFBUWJBQUFFR3dBQUFOd0FBQVFjQUFBRUlnQUFBNGdBQUFRakFBQUVKQUFBQU4wQUFBUWxBQUFFSlFBQUE0OEFBQVFtQUFBRUx3QUFBTjhBQUFRd0FBQUVNQUFBQTVBQUFBUXhBQUFFTkFBQUFPa0FBQVExQUFBRU5RQUFBNUVBQUFRMkFBQUVPQUFBQU8wQUFBUTVBQUFFT1FBQUE1SUFBQVE2QUFBRVBRQUFBUEFBQUFRK0FBQUVQZ0FBQTVNQUFBUS9BQUFFUHdBQUFQUUFBQVJBQUFBRVFRQUFBNVFBQUFSQ0FBQUVRZ0FBQVBVQUFBUkRBQUFFUXdBQUE1WUFBQVJFQUFBRVJBQUFBUFlBQUFSRkFBQUVSUUFBQTVjQUFBUkdBQUFFVHdBQUFQY0FBQVJRQUFBRVVBQUFBN01BQUFSUkFBQUVVUUFBQTVnQUFBUlNBQUFFVWdBQUFRRUFBQVJUQUFBRVV3QUFBNWtBQUFSVUFBQUVWQUFBQVFJQUFBUlZBQUFFV0FBQUE1b0FBQVJaQUFBRVd3QUFBUU1BQUFSY0FBQUVYQUFBQTU0QUFBUmRBQUFFWFFBQUE3UUFBQVJlQUFBRVhnQUFBNThBQUFSZkFBQUVZUUFBQVFZQUFBUmlBQUFFWWdBQUJGMEFBQVJqQUFBRWJ3QUFBUWtBQUFSd0FBQUVjUUFBQTdVQUFBUnlBQUFFZFFBQUFSWUFBQVIyQUFBRWR3QUFBN2NBQUFSNEFBQUVlQUFBQTdvQUFBUjVBQUFFZVFBQUE3a0FBQVI2QUFBRWhnQUFBUm9BQUFTSUFBQUVpUUFBQVNjQUFBU0tBQUFFaXdBQUJHSUFBQVNNQUFBRWpBQUFCRndBQUFTTkFBQUVrUUFBQVNrQUFBU1NBQUFFa3dBQUJGNEFBQVNVQUFBRWxRQUFBUzRBQUFTV0FBQUVsd0FBQkZjQUFBU1lBQUFFbVFBQUE3c0FBQVNhQUFBRW13QUFCRWtBQUFTY0FBQUVuUUFBQVRBQUFBU2VBQUFFbndBQUJHQUFBQVNnQUFBRW9RQUFBVElBQUFTaUFBQUVvd0FBQkVzQUFBU2tBQUFFcVFBQUFUUUFBQVNxQUFBRXF3QUFBNzBBQUFTc0FBQUVyUUFBQkUwQUFBU3VBQUFFcndBQUE3OEFBQVN3QUFBRXNRQUFCR29BQUFTeUFBQUVzd0FBQkU4QUFBUzBBQUFFdFFBQUFUb0FBQVMyQUFBRXR3QUFCRkVBQUFTNEFBQUV1Z0FBQVR3QUFBUzdBQUFFdXdBQUJGc0FBQVM4QUFBRXZRQUFBVDhBQUFTK0FBQUV2d0FBQkZrQUFBVEFBQUFFd2dBQUE4RUFBQVREQUFBRXhBQUFBVUVBQUFURkFBQUV4Z0FBQkdnQUFBVEhBQUFFeUFBQUFVTUFBQVRKQUFBRXlnQUFCR1FBQUFUTEFBQUV6QUFBQkZNQUFBVE5BQUFFemdBQUJHWUFBQVRQQUFBRTF3QUFBOFFBQUFUWUFBQUUyQUFBQVVVQUFBVFpBQUFFMlFBQUE4NEFBQVRhQUFBRTJnQUFBODBBQUFUYkFBQUUzd0FBQTg4QUFBVGdBQUFFNFFBQUFVWUFBQVRpQUFBRTlRQUFBOVFBQUFUMkFBQUU5d0FBQkZVQUFBVDRBQUFFK1FBQUErZ0FBQVQ2QUFBRSt3QUFBVWdBQUFUOEFBQUUvUUFBQStvQUFBVCtBQUFFL3dBQUJHd0FBQVVBQUFBRkFBQUFBVW9BQUFVQkFBQUZBUUFBQSt3QUFBVUNBQUFGRUFBQUFVc0FBQVVSQUFBRkVRQUFCRzRBQUFVU0FBQUZFd0FBQSswQUFCNEFBQUFlQVFBQUE2OEFBQjQrQUFBZVB3QUFBNjBBQUI2QUFBQWVoUUFBQTZBQUFCNmdBQUFlOFFBQUErOEFBQjd5QUFBZTh3QUFBNllBQUI3MEFBQWUrUUFBQkVFQUFCOU5BQUFmVFFBQUJLb0FBQ0FBQUFBZ0N3QUFBVnNBQUNBUUFBQWdFUUFBQVdjQUFDQVRBQUFnRkFBQUFXa0FBQ0FWQUFBZ0ZRQUFCSEFBQUNBWEFBQWdIZ0FBQVdzQUFDQWdBQUFnSWdBQUFYTUFBQ0FsQUFBZ0p3QUFBWFlBQUNBd0FBQWdNQUFBQVhrQUFDQXlBQUFnTXdBQUE2Z0FBQ0E1QUFBZ09nQUFBWG9BQUNBOEFBQWdQQUFBQTZvQUFDQkVBQUFnUkFBQUFYd0FBQ0IwQUFBZ2RBQUFBWDBBQUNCL0FBQWdmd0FBQVg0QUFDQ2pBQUFnb3dBQUJHOEFBQ0NrQUFBZ3BBQUFBWDhBQUNDbUFBQWdxZ0FBQVlBQUFDQ3JBQUFncXdBQUJFZ0FBQ0NzQUFBZ3JBQUFBWVVBQUNDeEFBQWdzUUFBQVlZQUFDQzVBQUFndWdBQUFZY0FBQ0M4QUFBZ3ZRQUFBWWtBQUNFRkFBQWhCUUFBQVlzQUFDRVRBQUFoRXdBQUFZd0FBQ0VXQUFBaEZnQUFBWTBBQUNFaUFBQWhJZ0FBQVk0QUFDRW1BQUFoSmdBQUFMa0FBQ0V1QUFBaExnQUFBWThBQUNGYkFBQWhYZ0FBQVpBQUFDSUNBQUFpQWdBQUFaUUFBQ0lHQUFBaUJnQUFBTEVBQUNJUEFBQWlEd0FBQVpVQUFDSVJBQUFpRWdBQUFaWUFBQ0lhQUFBaUdnQUFBWmdBQUNJZUFBQWlIZ0FBQVprQUFDSXJBQUFpS3dBQUFab0FBQ0pJQUFBaVNBQUFBWnNBQUNKZ0FBQWlZQUFBQVp3QUFDSmtBQUFpWlFBQUFaMEFBQ1hLQUFBbHlnQUFBWjhBQU80QkFBRHVBZ0FBQWFBQUFQYkRBQUQyd3dBQUFhSUFBUHNCQUFEN0JBQUFBYVFBQVA3L0FBRCsvd0FBQWFvQUFQLzhBQUQvL1FBQUFhdXdBQ3hMc0FsUVdMRUJBWTVadUFIL2hiQ0VIYkVKQTE5ZUxiQUJMQ0FnUldsRXNBRmdMYkFDTExBQktpRXRzQU1zSUVhd0F5VkdVbGdqV1NDS0lJcEpaSW9nUmlCb1lXU3dCQ1ZHSUdoaFpGSllJMldLV1M4Z3NBQlRXR2tnc0FCVVdDR3dRRmtiYVNDd0FGUllJYkJBWlZsWk9pMndCQ3dnUnJBRUpVWlNXQ09LV1NCR0lHcGhaTEFFSlVZZ2FtRmtVbGdqaWxrdi9TMndCU3hMSUxBREpsQllVVml3Z0VRYnNFQkVXUnNoSVNCRnNNQlFXTERBUkJzaFdWa3RzQVlzSUNCRmFVU3dBV0FnSUVWOWFSaEVzQUZnTGJBSExMQUdLaTJ3Q0N4TElMQURKbE5Zc0VBYnNBQlppb29nc0FNbVUxZ2pJYkNBaW9vYmlpTlpJTEFESmxOWUl5R3d3SXFLRzRvaldTQ3dBeVpUV0NNaHVBRUFpb29iaWlOWklMQURKbE5ZSXlHNEFVQ0tpaHVLSTFrZ3NBTW1VMWl3QXlWRnVBR0FVRmdqSWJnQmdDTWhHN0FESlVVaklTTWhXUnNoV1VRdHNBa3NTMU5ZUlVRYklTRlpMYkFLTExBa1JTMndDeXl3SlVVdHNBd3NzU2NCaUNDS1UxaTVRQUFFQUdPNENBQ0lWRmk1QUNRRDZIQlpHN0FqVTFpd0lJaTRFQUJVV0xrQUpBUG9jRmxaV1Myd0RTeXdRSWk0SUFCYVdMRWxBRVFidVFBbEEraEVXUzJ3REN1d0FDc0FzZ0VPQWlzQnNnOEJBaXNCdHc4Nk1DVWJFQUFJS3dDM0FVZzdMaUVVQUFncnR3SllTRGdvRkFBSUs3Y0RVa00wSlJZQUNDdTNCRjVOUENzWkFBZ3J0d1UyTENJWkR3QUlLN2NHY1YxR01oc0FDQ3UzQjVGM1hEb2pBQWdydHdoK1oxQTVHZ0FJSzdjSlZFVTJKaGNBQ0N1M0NuWmdTellkQUFncnR3dURaRTQ2SXdBSUs3Y00yYktLWXp3QUNDdTNEUlFSRFFrR0FBZ3J0dzQ4TWljY0VRQUlLd0N5RUFvSEs3QUFJRVY5YVJoRXNqQVNBWE95c0JRQmM3SlFGQUYwc29BVUFYU3ljQlFCZGJJUEhBRnpzbThjQVhVQUFDb0FuUUNBQUlvQWVBRFVBR1FBVGdCYUFJY0FZQUJXQURRQ1BBQzhBTVFBQUFBVS9tQUFGQUtiQUNBRElRQUxCRG9BRkFTTkFCQUZzQUFVQmhnQUZRR21BQkVHd0FBT0FBQUFBQUFBQUdFQVlRQmhBR0VBWVFDVEFMZ0JPQUdxQWpvQ3pRTGtBdzRET0FOckE1QURyd1BGQStZRC9RUktCSGdFeHdVOEJYOEYzd1krQm1zRzN3ZEdCMXNIY0FlUEI3WUgxUWd6Q05ZSkZRbDBDY2dLRFFwTkNvTUs2d3N0QzBnTGV3dlFDL1FNUWd4K0ROTU5IZzJERGQ4T1NnNTBEcllPNWc4N0Q1QVB3QS80RUJ3UU14QllFSDhRbWhDNkVUSVJrQkhqRWtFU3FCTDZFM1FUdVJQeEZEMFVsQlN2RlJvVlpSV3pGaGNXZUJhMUZ4OFhjUmU0RitnWU5oaDlHTUlZK2hrN0dWSVpraG5aR2d3YWFCcmFHejBibkJ1N0hHQWNqeDAxSGFNZHJ4M01Ib1FlbWg3V0h4a2ZhUi9rSUFRZ1RTQjVJSmdnMHlFRklVOGhXeUYxSVk4aHFTSUtJbTBpcXlNbUkzb2o2aVNvSlJjbGFDWFpKamdtbGlheEp3RW5TeWVJSjlrb05DaTNLVkVwZ2lubktrNHF1Q3NZSzJzcnhDdnlMRlVzZ3l5bkxMVXM0Q3ovTFRndGJDMndMZU11SVM0K0xsc3VaQzZYTHNndTVDOEFMME12VHk5MUw2SXdIVEJLTUl3d3VqRDJNV2N4d1RJcE1wNHpFek5HTTdjMEl6Ui9OTW8xU2pWM05kQTJQamFQTnVrM1JEZWJOOTQ0SHppSU9PUTVTem5DT2hVNml6cm1PMTg3MVR4SFBKczgxejB1UFlZOTlENXBQcTQrK0Q5QVA3RS81MEFzUUdsQXNrRUtRVzFCdVVJMlFzZERJa09TUkFsRUwwU0ZSUGhGY1VXcVJnRkdTRWFRUnV4SEdrZEdSOUZJQjBoSFNJUkl5RWtmU1lGSnkwbzlTc05MSGt1VlRCVk1pa3ozVFY1Tm1rMzhUbHhPeEU5R1QrRlFMVkI4VU9kUlZsSExVanBTeFZOUFU5OVVlbFQ4VlhSVnVGWCtWbXBXMFZlS1dFUll3MWxDV1pOWjRGb1ZXakZhYUZwK1dwUmJaVnZZWEVCY20xME9YVDVkYUYyOVhoSmVhVjdMWHg5ZmZsL0lZREZnajJEdFlZeGlJMkp6WXJaakJtTlVZNVprQm1SM1pNOWxNMldzWmlObWkyYnJaMFJuVTJkblo3Um9GMmllYVE1cGUybmVhajVxckdzVmE1NXNJR3g4Yk01dElHMXhiZVp1Rlc0VmJoVnVGVzRWYmhWdUZXNFZiaFZ1Rlc0VmJoVnVGVzRkYmlWdUwyNDVibEJ1ZEc2WWJycHUxVzdoYnUxdkpXOWpiOFJ2NTIvemNBTndGM0RvY1FSeElYRTBjVWh4ajNJWGNyUnpRM05QZEE5MGNuVHVkWXQxN1habWRyOTNLWGZaZUQ5NDAza3hlWk41cEhtMWVjWjUxM3BJZW01NnBuckJldlY3aDN2SWZGTjhrM3l4Zk05OUNIMFZmVDk5WW4xdWZkWitLSDYwZnlKL2xJQlhnRmVDQm9KeWdwK0M2SU1UZ3ltRG1ZUDVoRWVFdElVTGhWT0ZtNFhxaGdTR1E0YXBodjJIUkllSGg3NklIWWhlaUhtSXI0anlpUmFKWjRtZ2lmT0tQWXFiaXZPTFdJdUNpNytMNzR4SGpKQ013SXo0alVHTmJJMjdqaXFPYkk3SWp5R1BUby9La0NlUVBaQ2lrVXVScnBJUmttR1NwcExua3ltVG5KUUFsRzZVbUpUT2xUU1ZacFd5bGVTV0k1YUpsdUNYUVplZm1BK1lnNWo0bVVxWmlabmdtamVhcTVza20yQ2JzSnY0bkQ2Y2VaeTZuUG1kUTUyYm5hZWQ5SjVqbnVDZk41OTVuLzZnWDZEQW9SMmhzS0hCb2h5aWFLSzJvdmlqYUtQTHBDK2tuNlV4cGJXbVM2YTlweDJuYjZmUHFFbW9VYWkycVJlcGVhbndxa3VxdTZzSHEyYXJ6cXY0ckV1c2Q2ekhyUXV0SDYwenJVV3RXYTFycllLdGxxM3NyaEt1azY3MXIwT3ZTNjlUcjF1dlpxOXVyM3F2M2EvZHIrV3dTN0N4c1JDeFVyRzJzYzJ4NUxIN3NoS3lLN0pFc2xDeVhMSnpzb3F5b2JLNnN0R3k2TEwvc3hpekw3TkdzMTJ6ZExPTHM2U3p1N1BTcyttMEFyUVp0REMwUjdSZHRITzBqTFNsdExHMHZiVFV0T3UxQWJVYXRUQzFSclZkdFhhMWpMV2p0YnExMExYbXRmKzJGcll0dGtPMlhMWnp0b3Uyb3JhNHRzKzI1cmRKdDkrMzlyZ051Q1M0T3JoUnVHaTRmN2lWdUt5NDNiajB1UXE1SWJrNHVVKzVacm5PdWxLNmFicC91cGE2ckxyRHV0cTY4YnNJdXhTN0s3dEN1MVM3YTd1Q3U1bTdzTHZIdTk2NzZidjB2QXU4Rjd3anZEcThVYnhkdkdtOGdMeVh2S084cjd6RXZQbTlCYjBSdlNpOVA3MUx2VmU5YnIyRXZaUzlxNzNCdmRpOTc3NEl2aUcrT0w1UHZsdStaNzUrdnBTK3E3N0N2dG0rNzc3N3Z3ZS9FNzhmdnphL1RMOVl2MlMvY0w5OHY1Ty9uNysydjh5LzQ3LzV3QkRBSjhCQXdGbkFjc0NMd09qQlRzRmx3WHpCazhHcHdjTEIyY0h3d2dmQ0hzSTF3a3ZDWXNKNXdwRENwOExLd3ZMREJjTWN3elBEU2NOZnczakRrY09kdzZuRHdNUFh3KzNFQmNRYnhESEVTTVJoeEhqRWo4U214TDNFMU1UdHhRVEZHOFV4eFVyRlljVjN4WTdGOGNZSXhoN0dOY1pNeG1MR2VNYU94cVhIRHNja3h6ckhVY2RveDNUSGk4ZWl4N25IME1mYngvSElDTWdVeUNySU5zaEx5RmZJYnNoNnlKSElxTWkveU5qSTc4ajd5UkhKS01rK3lVckpZTWxzeVlMSmpzbWt5YnJKMGNucXlnUEtYOHAyeW96S3BNcTd5dExLNk1yenl2L0xDOHNYeXlQTEw4czd5MWZMWDh0bnkyL0xkOHQveTRmTGo4dVh5NS9McDh1dnk3Zkx2OHZIeStETCtjd1F6Q2ZNUHN4VXpHL01kOHgveklmTWo4eVh6Sy9NeDh6ZXpQWE5ETTBselR6TnA4MnZ6Y2pOME0zWXplL09CczRPemhiT0hzNG16ajNPUmM1TnpsWE9YYzVsem0zT2RjNTl6b1hPamM2a3pxek90TThIencvUEY4OHd6MGZQVDg5WHozRFBlTStQejZYUHZNL1R6K3JRQWRBYTBEUFFTdEJoMEduUWNkQjkwSlRRbk5DejBNclExdERpMFBuUkVORW4wVDdSUnRGTzBXZlJnTkdNMFpqUnBOR3cwYnpSeU5IUTBkalI0TkgzMGc3U0Z0SXQwa1RTVzlKMDBuelNoTktiMHJMU3k5TFQwdXpUQmRNZTB6ZlRUOU5tMDN6VGxkT3UwOGZUNE5QbzAvRFVDZFFpMUR2VVU5UnExSURVbWRTeDFNclU0OVQ4MVJUVk1kVk8xVnJWWnRWdTFYclZodFdTMVo3VnRkWE0xZVhWL2RZVzFpN1dSOVpmMW5qV2tOYXIxc1hXM3RiMzF4RFhLZGRDMTF2WGROZU4xNmpYdzlmUDE5dlg4dGdKMkNEWU50aFAyR2ZZZ05pWTJMSFl5ZGppMlByWkZka3YyVWJaWGRscDJYWFpnZG1OMmFUWnU5blUyZXphQmRvZDJqYmFUdHBuMm4vYW10cTAyc3ZhNHRyNTJ4RGJKOXMrMjFYYmE5dDMyNFBiajl1YjI3TGJ5ZHZnMi9mY0R0d2wzRHpjVTl4cTNJRGNqTnlZM0tUY3NOekgzTjdjOWQwTDNZSGRsdDJpM2E3ZHV0M0czZExkM3QzcTNmYmVBdDRPM2hyZUp0NHkzajdlU3Q1VzNtTGVidDUyM3RUZk10OTAzN1BnRitCMTRKRGdxK0MzNE1QZ3orRGI0T2ZnOCtFOTRZM2g1ZUk3NGtQaVQrSlo0bUhpYWVKeDRubmlnZUtKNHFEaXQrTE80dVhpL3VNWDR6RGpTZU5pNDN2amxPT3Q0OGJqMytQNDVCSGtIZVFwNURYa1FlUk41Rm5rWmVSeDVIM2tsT1NtNUxMa3Z1VEs1TmJrNHVUdTVQcmxCdVVkNVRUbFFPVk01VmpsWk9WdzVYemxrK1dwNWJYbHdlWE41ZG5sNWVYeDVmM21DZVlWNWlIbUxlWTU1a1htVWVaWjVtSG1hZVp4NW5ubWdlYUo1cEhtbWVhaDVxbm1zZWE1NXRMbTZ1Y0M1eG5uSWVjcDUwTG5TdWRoNTNmbmYrZUg1NC9ubCtldTU3Ym52dWZHNTg3bjF1ZmU1K2JuN3VoNDZNVHBJdWtxNlRicFRlbGo2V3ZwZCttRDZZL3Btd0FBQUFVQVpBQUFBeWdGc0FBREFBWUFDUUFNQUE4QWNiSU1FQkVSRWptd0RCQ3dBTkN3REJDd0J0Q3dEQkN3Q2RDd0RCQ3dEZEFBc0FCRldMQUNMeHV4QWh3K1diQUFSVml3QUM4YnNRQVFQbG15QkFJQUVSSTVzZ1VDQUJFU09iSUhBZ0FSRWpteUNBSUFFUkk1c1FvTTlMSU1BZ0FSRWpteURRSUFFUkk1c0FJUXNRNE05REF4SVNFUklRTVJBUUVSQVFNaEFUVUJJUU1vL1R3Q3hEYis3djY2QVF6a0FnUCsvZ0VDL2YwRnNQcWtCUWY5ZlFKMyt4RUNlUDFlQWw2SUFsNEFBZ0NnLy9VQmV3V3dBQU1BREFBdkFMQUFSVml3QWk4YnNRSWNQbG13QUVWWXNBc3ZHN0VMRUQ1WnNnWUZDaXRZSWRnYjlGbXlBUVlDRVJJNU1ERUJJd016QXpRMk1oWVVCaUltQVZ1bkRjTEpOMnc0T0d3M0Fac0VGZnF0TFQwOVdqczdBQUlBaUFRU0FpTUdBQUFFQUFrQUdRQ3dBeSt5QWdvREVSSTVzQUl2c0FmUXNBTVFzQWpRTURFQkF5TVRNd1VESXhNekFSVWVid0dNQVE0ZWJ3R01CWGorbWdIdWlQNmFBZTRBQWdCM0FBQUUwd1d3QUJzQUh3Q1BBTEFBUlZpd0RDOGJzUXdjUGxtd0FFVllzQkF2RzdFUUhENVpzQUJGV0xBQ0x4dXhBaEErV2JBQVJWaXdHaThic1JvUVBsbXlIUXdDRVJJNWZMQWRMeGl5QUFNS0sxZ2gyQnYwV2JBRTBMQWRFTEFHMExBZEVMQUwwTEFMTDdJSUF3b3JXQ0hZRy9SWnNBc1FzQTdRc0FzUXNCTFFzQWdRc0JUUXNCMFFzQmJRc0FBUXNCalFzQWdRc0I3UU1ERUJJUU1qRXlNMUlSTWhOU0VUTXdNaEV6TURNeFVqQXpNVkl3TWpBeUVUSVFMOS92aFFqMUR2QVFsRi92NEJIVktQVWdFSVVwQlN6T2RGNGZ0UWtKNEJDRVgrK0FHYS9tWUJtb2tCWW9zQm9QNWdBYUQrWUl2K25vbitaZ0lqQVdJQUFBRUFidjh3QkJFR25BQXJBR1lBc0FCRldMQUpMeHV4Q1J3K1diQUFSVml3SWk4YnNTSVFQbG15QWlJSkVSSTVzQWtRc0F6UXNBa1FzQkRRc0FrUXNoTUJDaXRZSWRnYjlGbXdBaEN5R1FFS0sxZ2gyQnYwV2JBaUVMQWYwTEFpRUxBbTBMQWlFTElwQVFvcldDSFlHL1JaTURFQk5DWW5KaVkxTkRZM05UTVZGaFlWSXpRbUl5SUdGUlFXQkJZV0ZSUUdCeFVqTlNZbU5UTVVGak15TmdOWWdablZ3NytubGFpN3VJWnlkMzZGQVRHclVjdTNsTHJUdVpLR2c1WUJkMXgrTTBIUm9hVFNGTnZjRit6TmphWjdibVo1WTNlZWFxbk9FNysvRWVmR2k1WitBQVVBYWYvckJZTUZ4UUFOQUJvQUpnQTBBRGdBZUFDd0FFVllzQU12RzdFREhENVpzQUJGV0xBakx4dXhJeEErV2JBREVMQUswTEFLTDdJUkJBb3JXQ0hZRy9SWnNBTVFzaGdFQ2l0WUlkZ2I5Rm13SXhDd0hkQ3dIUyt3SXhDeUtnUUtLMWdoMkJ2MFdiQWRFTEl4QkFvcldDSFlHL1Jac2pVakF4RVNPYkExTDdJM0F5TVJFam13Tnk4d01STTBOak15RmhVVkZBWWpJaVkxRnhRV016STJOVFUwSmlJR0ZRRTBOaUFXRlJVVUJpQW1OUmNVRmpNeU5qVTFOQ1lqSWdZVkJTY0JGMm1uZzRXbHA0R0Nxb3BZU2tkWFZwUldBanVuQVFhb3AvNzhxb3BZU2toV1YwbEhXZjRIYVFMSGFRU1lnNnFyaUVlRXA2ZUxCMDVsWWxWSlRtWm1VdnpSZzZtb2kwZURxYWVMQms5bFkxVktUMlJqVlBOQ0JISkNBQU1BWmYvc0JQTUZ4QUFlQUNjQU13Q0ZBTEFBUlZpd0NTOGJzUWtjUGxtd0FFVllzQnd2RzdFY0VENVpzQUJGV0xBWUx4dXhHQkErV2JJaUhBa1JFam15S2drY0VSSTVzZ01pS2hFU09iSVFLaUlSRWpteUVRa2NFUkk1c2hNY0NSRVNPYklaSEFrUkVqbXlGaEVaRVJJNXNCd1FzaDhCQ2l0WUlkZ2I5Rm15SVI4UkVSSTVzQWtRc2pFQkNpdFlJZGdiOUZrd01STTBOamNtSmpVME5qTXlGaFVVQmdjSEFUWTFNeFFIRnlNbkJnWWpJaVFGTWpjQkJ3WVZGQllERkJjM05qWTFOQ1lqSWdabGRhVmhRc1NvbHNSWmIyc0JSRVNuZTlEZVlVckhaOVgrL2dIWGszcituU0dubVNKMmRrUXlaRXhTWUFHSGFiQjFkcEJIcHJ5dmhWaVZVay8rZllLZi82ajVjMEpGNGt0d0Fha1llNEoyamdQbFlKQlRNRmMrUTFsdkFBRUFad1FoQVAwR0FBQUVBQkFBc0FNdnNnSUZBeEVTT2JBQ0x6QXhFd01qRXpQOUZZRUJsUVdSL3BBQjN3QUJBSVgrS2dLVkJtc0FFUUFKQUxBT0w3QUVMekF4RXpRU0VqY1hCZ0lEQnhBVEZoY0hKaWNDaFhud2dTYVN1d2tCalZWMUpvVjU3QUpQNGdHZ0FWUkdlbkQrTlA3alZmNSsvdVNxWUhGS3JnRlVBQUFCQUNiK0tnSTNCbXNBRVFBSkFMQU9MN0FFTHpBeEFSUUNBZ2NuTmhJVE5UUUNBaWMzRmhJU0FqZDE4WVFubXJzQ1dKMWlKNFR2ZHdKRjMvNW4vcVpKY1hZQjhRRXZJTklCYVFFZVVIRkovcXIrWkFBQkFCd0NZUU5WQmJBQURnQWdBTEFBUlZpd0JDOGJzUVFjUGxtd0FOQVpzQUF2R0xBSjBCbXdDUzhZTURFQkpUY0ZBek1ESlJjRkV3Y0RBeWNCU3Y3U0xnRXVDWmtLQVNrdS9zM0dmTHEwZlFQWFdwZHdBVmorbzI2WVcvN3hYZ0VnL3VkYkFBQUJBRTRBa2dRMEJMWUFDd0FhQUxBSkw3QUEwTEFKRUxJR0FRb3JXQ0hZRy9SWnNBUFFNREVCSVJVaEVTTVJJVFVoRVRNQ25nR1cvbXE2L21vQmxyb0REYS8rTkFITXJ3R3BBQUVBSGY3ZUFUUUEyd0FJQUJjQXNBa3ZzZ1FGQ2l0WUlkZ2I5Rm13QU5Dd0FDOHdNUk1uTmpjMU14VVVCb1pwWGdTMVkvN2VTSU9McDVGbHlnQUFBUUFsQWg4Q0RRSzJBQU1BRVFDd0FpK3lBUUVLSzFnaDJCdjBXVEF4QVNFMUlRSU4vaGdCNkFJZmx3QUJBSkQvOVFGMkFORUFDUUFiQUxBQVJWaXdCeThic1FjUVBsbXlBZ1VLSzFnaDJCdjBXVEF4TnpRMk1oWVZGQVlpSnBBNWNqczdjamxoTUVCQU1DNCtQZ0FCQUJML2d3TVFCYkFBQXdBVEFMQUFMN0FBUlZpd0FpOGJzUUljUGxrd01SY2pBVE94bndKZ25uMEdMUUFBQWdCei8rd0VDZ1hFQUEwQUd3QTVBTEFBUlZpd0NpOGJzUW9jUGxtd0FFVllzQU12RzdFREVENVpzQW9Rc2hFQkNpdFlJZGdiOUZtd0F4Q3lHQUVLSzFnaDJCdjBXVEF4QVJBQ0l5SUNBelVRRWpNeUVoTW5OQ1lqSWdZSEVSUVdNekkyTndRSzN1enA0QVRlN2V2ZUE3bUVqNDZDQW9tTGlZVURBbTMrdS83RUFUVUJNL2NCUVFFNC90UCt4ZzNyMTliZS90anM0ZFRrQUFFQXFnQUFBdGtGdHdBR0FEa0FzQUJGV0xBRkx4dXhCUncrV2JBQVJWaXdBQzhic1FBUVBsbXlCQUFGRVJJNXNBUXZzZ01CQ2l0WUlkZ2I5Rm15QWdNRkVSSTVNREVoSXhFRk5TVXpBdG02L29zQ0VoMEUwWW1veHdBQUFRQmRBQUFFTXdYRUFCY0FUUUN3QUVWWXNCQXZHN0VRSEQ1WnNBQkZXTEFBTHh1eEFCQStXYklYQVFvcldDSFlHL1Jac0FMUXNnTVFGeEVTT2JBUUVMSUpBUW9yV0NIWUcvUlpzQkFRc0F6UXNoVVhFQkVTT1RBeElTRTFBVFkyTlRRbUl5SUdGU00wSkRNeUZoVVVBUUVoQkRQOFJnSDRjRldLYzRxWnVRRUQyY3ZzL3U3K2VnTGJoUUl3ZjU5VmNwS2RqTW40MWJIWC90ZitXUUFCQUY3LzdBUDVCY1FBSmdCNEFMQUFSVml3RFM4YnNRMGNQbG13QUVWWXNCa3ZHN0VaRUQ1WnNnQU5HUkVTT2JBQUw3TFBBQUZkc3A4QUFYR3lMd0FCWGJKZkFBRnlzQTBRc2dZQkNpdFlJZGdiOUZtd0RSQ3dDZEN3QUJDeUpnRUtLMWdoMkJ2MFdiSVRKZ0FSRWptd0dSQ3dITkN3R1JDeUh3RUtLMWdoMkJ2MFdUQXhBVE0yTmpVUUl5SUdGU00wTmpNeUZoVVVCZ2NXRmhVVUJDQWtOVE1VRmpNeU5qVTBKaWNqQVlhTGc1Yi9lSSs1L2NQTzZudHFlSVAvQVA1bS92KzZsbjZHanB5VGl3TXlBb1p5QVFDSmNhM2wyc0pmc2l3bXNIL0U1dDYyYzRxTWczK0lBZ0FDQURVQUFBUlFCYkFBQ2dBT0FFa0FzQUJGV0xBSkx4dXhDUncrV2JBQVJWaXdCQzhic1FRUVBsbXlBUWtFRVJJNXNBRXZzZ0lCQ2l0WUlkZ2I5Rm13QnRDd0FSQ3dDOUN5Q0FZTEVSSTVzZzBKQkJFU09UQXhBVE1WSXhFakVTRTFBVE1CSVJFSEE0Ykt5cnI5YVFLTXhmMkJBY1VXQWVtWC9xNEJVbTBEOGZ3NUFzb29BQUVBbXYvc0JDMEZzQUFkQUdFQXNBQkZXTEFCTHh1eEFSdytXYkFBUlZpd0RTOGJzUTBRUGxtd0FSQ3lCQUVLSzFnaDJCdjBXYklIRFFFUkVqbXdCeSt5R2dFS0sxZ2gyQnYwV2JJRkJ4b1JFam13RFJDd0VkQ3dEUkN5RkFFS0sxZ2gyQnYwV2JBSEVMQWQwREF4RXhNaEZTRUROak15RWhVVUFpTWlKaWN6RmhZek1qWTFOQ1lqSWdjSHprb0M2djJ6TEd1SXgrcnoyc0gwRWE4UmtIYUJrNStFZVVVeEF0b0MxcXYrY3ovKytlRGgvdjNXdlgxL3NKdVNzVFVvQUFJQWhQL3NCQndGc1FBVUFDRUFUZ0N3QUVWWXNBQXZHN0VBSEQ1WnNBQkZXTEFOTHh1eERSQStXYkFBRUxJQkFRb3JXQ0hZRy9SWnNnY05BQkVTT2JBSEw3SVZBUW9yV0NIWUcvUlpzQTBRc2h3QkNpdFlJZGdiOUZrd01RRVZJd1lFQnpZek1oSVZGQUlqSWdBMU5SQUFKUU1pQmdjVkZCWXpNalkxTkNZRFR5TFkvd0FVYzhlKzQvWE8wZjc4QVZjQlU5SmZvQitpZVgyUGtRV3huUVQ0NFlUKzlOVGgvdklCUWYxSEFaSUJxUVg5Y0hKV1JMVGN1SldXdVFBQkFFMEFBQVFsQmJBQUJnQXlBTEFBUlZpd0JTOGJzUVVjUGxtd0FFVllzQUV2RzdFQkVENVpzQVVRc2dNQkNpdFlJZGdiOUZteUFBTUZFUkk1TURFQkFTTUJJVFVoQkNYOXBjSUNXZnpzQTlnRlNQcTRCUmlZQUFBREFIRC83QVFPQmNRQUZ3QWhBQ3NBWVFDd0FFVllzQlV2RzdFVkhENVpzQUJGV0xBSkx4dXhDUkErV2JJbkNSVVJFam13SnkreXp5Y0JYYklhQVFvcldDSFlHL1Jac2dNYUp4RVNPYklQSnhvUkVqbXdDUkN5SHdFS0sxZ2gyQnYwV2JBVkVMSWlBUW9yV0NIWUcvUlpNREVCRkFZSEZoWVZGQVlqSWlZMU5EWTNKaVkxTkRZek1oWUROQ1lpQmhRV016STJBU0lHRlJRV01qWTBKZ1BzYzJKeWhmL1EwdjJCY21GdzdNSEE3WmViK3BlVGc0S1UvdXB0aDRYZWhZb0VORzJxTURHOGQ3M2c0YngydmpFd3FteTQyTmo4b1hxYW1QaU9qd1FhaDNSdmlZbmVqQUFBQWdCay8vOEQrQVhFQUJjQUpBQllBTEFBUlZpd0N5OGJzUXNjUGxtd0FFVllzQk12RzdFVEVENVpzZ01UQ3hFU09iQURMN0lBQXdzUkVqbXdFeEN5RkFFS0sxZ2gyQnYwV2JBREVMSVlBUW9yV0NIWUcvUlpzQXNRc2g4QkNpdFlJZGdiOUZrd01RRUdCaU1pSmlZMU5EWTJNeklTRVJVUUFBVWpOVE0yTmlVeU5qYzFOQ1lqSWdZVkZCWURQanFoWUg2N1ptL01pTmo1L3JEK3JTUW41ZmIrN2wyZEpKNTVlcFNQQW9CRlZIemhpSkxxZlA2OS91azIvbGYrZVFXY0JPZjZjbFJLdHVTN21aWEJBUC8vQUliLzlRRnRCRVFBSmdBUzlnQUJCd0FTLy9jRGN3QVFBTEFBUlZpd0RTOGJzUTBZUGxrd01mLy9BQ24rM2dGVkJFUUFKd0FTLzk4RGN3RUdBQkFNQUFBUUFMQUFSVml3QXk4YnNRTVlQbGt3TVFBQkFFZ0F3d042QkVvQUJnQVdBTEFBUlZpd0JTOGJzUVVZUGxtd0F0Q3dBaTh3TVFFRkZRRTFBUlVCQ0FKeS9NNERNZ0tFL2NRQmU1SUJlc1FBQUFJQW1BR1BBOW9EendBREFBY0FKUUN3Qnkrd0E5Q3dBeSt5QUFFS0sxZ2gyQnYwV2JBSEVMSUVBUW9yV0NIWUcvUlpNREVCSVRVaEVTRTFJUVBhL0w0RFF2eStBMElETHFIOXdLQUFBQUVBaGdERUE5d0VTd0FHQUJZQXNBQkZXTEFDTHh1eEFoZytXYkFGMExBRkx6QXhBUUUxQVJVQk5RTWIvV3NEVnZ5cUFvb0JBNzcraHBMK2hjQUFBZ0JMLy9VRGRnWEVBQmdBSVFCUkFMQUFSVml3RUM4YnNSQWNQbG13QUVWWXNDQXZHN0VnRUQ1WnNoc0ZDaXRZSWRnYjlGbXlBQnNRRVJJNXNnUVFBQkVTT2JBUUVMSUpBUW9yV0NIWUcvUlpzQkFRc0F6UXNoVUFFQkVTT1RBeEFUWTJOemMyTlRRbUl5SUdGU00yTmpNeUZoVVVCd2NHRlFNME5qSVdGQVlpSmdGbEFqSk5nMVJ1YVdaOHVRTGp0cjNUb20xSndUZHNPRGhzTndHYWQ0cFVoMTl0YVhkc1c2TEh5N0d2cW14Um1QN0RMVDA5V2pzN0FBQUNBR3IrT3diV0JaY0FOUUJDQUdnQXNESXZzQUJGV0xBSUx4dXhDQkErV2JBRDBMSVBNZ2dSRWptd0R5K3lCUWdQRVJJNXNBZ1FzamtDQ2l0WUlkZ2I5Rm13RmRDd01oQ3lHd0lLSzFnaDJCdjBXYkFJRUxBcTBMQXFMN0lqQWdvcldDSFlHL1Jac0E4UXNrQUNDaXRZSWRnYjlGa3dNUUVHQWlNaUp3WUdJeUltTnpZU05qTXlGaGNEQmpNeU5qY1NBQ0VpQkFJSEJoSUVNekkyTnhjR0JpTWlKQUlURWhJa016SUVFZ0VHRmpNeU5qYzNFeVlqSWdZR3lnell0YnMxTm90S2pwSVREM20vYVZHQVVEUVRrM0dNQmhQK3VmNnl5ZjdJdEFzTWtBRW4wVnExUENVK3pXbjYvcGl6REF6ZUFYenYrUUZrcnZ2eURsRllQRzhrQVM0NFFIV1pBZmJ5L3Vpb1ZWUG96YVVCQTVRclAvM1c1K0MwQVlVQm1NZitpUGI0L3BQQkxDTnpKekxoQWFjQkd3RVRBYmZ2NFA1YS9wQ09tR1pmQ1FIM0hlNEFBQUlBSEFBQUJSMEZzQUFIQUFvQVJnQ3dBRVZZc0FRdkc3RUVIRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3Qmk4YnNRWVFQbG15Q1FRQ0VSSTVzQWt2c2dBQkNpdFlJZGdiOUZteUNnUUNFUkk1TURFQklRTWpBVE1CSXdFaEF3UE4vWjZKeGdJc3FBSXR4ZjFOQWUvNEFYeitoQVd3K2xBQ0dnS3BBQU1BcVFBQUJJZ0ZzQUFPQUJZQUh3QlZBTEFBUlZpd0FTOGJzUUVjUGxtd0FFVllzQUF2RzdFQUVENVpzaGNBQVJFU09iQVhMN0lQQVFvcldDSFlHL1Jac2dnUEZ4RVNPYkFBRUxJUUFRb3JXQ0hZRy9SWnNBRVFzaDhCQ2l0WUlkZ2I5Rmt3TVRNUklUSVdGUlFHQnhZV0ZSUUdJd0VSSVRJMk5SQWhKU0V5TmpVMEppTWhxUUhjN2U5MFpIYUovdWoreHdFOWhwdis0djdBQVNKK2w0eVAvdVFGc01UQVpwMHJJYm1BeE9BQ3FmMzBpM29CQjVwK2JIaHRBQUFCQUhmLzdBVFlCY1FBSEFCRkFMQUFSVml3Q3k4YnNRc2NQbG13QUVWWXNBTXZHN0VERUQ1WnNBc1FzQS9Rc0FzUXNoSUJDaXRZSWRnYjlGbXdBeEN5R1FFS0sxZ2gyQnYwV2JBREVMQWMwREF4QVFZRUl5QUFFVFUwRWlRek1nQVhJeVltSXlJQ0ZSVVVFak15TmpjRTJCdis0ZTcrL3Y3SmtRRUtyK2dCR0JmQkdhZVd1TkhHc3FDckhBSE81L3NCY2dFMmpNc0JOS1grL2VXdW5QN3crNDN0L3VpUnRBQUNBS2tBQUFUR0JiQUFDd0FWQURrQXNBQkZXTEFCTHh1eEFSdytXYkFBUlZpd0FDOGJzUUFRUGxtd0FSQ3lEQUVLSzFnaDJCdjBXYkFBRUxJTkFRb3JXQ0hZRy9SWk1ERXpFU0V5QkJJWEZSUUNCQWNERVRNeUVqVTFOQUlucVFHYnZnRWtud0dmL3RuRTA4cmU5K25XQmJDby9zckpYYzcreXFZQ0JSTDdpd0VVLzFYNEFSTUNBQUFCQUtrQUFBUkdCYkFBQ3dCT0FMQUFSVml3Qmk4YnNRWWNQbG13QUVWWXNBUXZHN0VFRUQ1WnNnc0VCaEVTT2JBTEw3SUFBUW9yV0NIWUcvUlpzQVFRc2dJQkNpdFlJZGdiOUZtd0JoQ3lDQUVLSzFnaDJCdjBXVEF4QVNFUklSVWhFU0VWSVJFaEErRDlpUUxkL0dNRGsvMHRBbmNDb2YzOG5RV3dudjRzQUFFQXFRQUFCQzhGc0FBSkFFQUFzQUJGV0xBRUx4dXhCQncrV2JBQVJWaXdBaThic1FJUVBsbXlDUUlFRVJJNXNBa3ZzZ0FCQ2l0WUlkZ2I5Rm13QkJDeUJnRUtLMWdoMkJ2MFdUQXhBU0VSSXhFaEZTRVJJUVBNL1ozQUE0YjlPZ0pqQW9QOWZRV3dudjRPQUFFQWV2L3NCTndGeEFBZkFHSUFzQUJGV0xBTEx4dXhDeHcrV2JBQVJWaXdBeThic1FNUVBsbXdDeEN3RDlDd0N4Q3lFUUVLSzFnaDJCdjBXYkFERUxJWUFRb3JXQ0hZRy9SWnNoNERDeEVTT2JBZUw3UVBIaDhlQWwyMFB4NVBIZ0pkc2gwQkNpdFlJZGdiOUZrd01TVUdCQ01pSkFJbk5SQUFJVElFRnlNQ0lTSUNBeFVVRWpNeU5qY1JJVFVoQk54Sy92ZXdzdjdzbHdJQk13RVc1QUVXSDhBMi90N0J4d0hndjJ5aU5mNnZBaEMvYW1tbkFUVExmd0ZKQVdycDFnRWgvdkgrLzNmMS90OHdPUUZIbkFBQkFLa0FBQVVJQmJBQUN3QlZBTEFBUlZpd0JpOGJzUVljUGxtd0FFVllzQW92RzdFS0hENVpzQUJGV0xBQUx4dXhBQkErV2JBQVJWaXdCQzhic1FRUVBsbXdBQkN3Q2RDd0NTK3lud2tCY3JJdkNRRmRzZ0lCQ2l0WUlkZ2I5Rmt3TVNFakVTRVJJeEV6RVNFUk13VUl3ZjBpd01BQzNzRUNvZjFmQmJEOWpnSnlBQUFCQUxjQUFBRjNCYkFBQXdBZEFMQUFSVml3QWk4YnNRSWNQbG13QUVWWXNBQXZHN0VBRUQ1Wk1ERWhJeEV6QVhmQXdBV3dBQUFCQURYLzdBUE1CYkFBRHdBdUFMQUFSVml3QUM4YnNRQWNQbG13QUVWWXNBVXZHN0VGRUQ1WnNBblFzQVVRc2d3QkNpdFlJZGdiOUZrd01RRXpFUlFHSXlJbU5UTVVGak15TmpjREM4SDcwZG55d0ltQ2Q1TUJCYkQ3K2RIczNzaDlqSmFIQUFBQkFLa0FBQVVGQmJBQUN3QjBBTEFBUlZpd0JTOGJzUVVjUGxtd0FFVllzQWN2RzdFSEhENVpzQUJGV0xBQ0x4dXhBaEErV2JBQVJWaXdDeThic1FzUVBsbXlBQUlGRVJJNVFCRktBRm9BYWdCNkFJb0FtZ0NxQUxvQUNGMnlPUUFCWGJJR0JRSVJFamxBRXpZR1JnWldCbVlHZGdhR0JwWUdwZ2EyQmdsZE1ERUJCeEVqRVRNUkFUTUJBU01DRzdMQXdBS0g2UDNEQW1ybUFxVzUvaFFGc1Awd0F0RDlmZnpUQUFFQXFRQUFCQndGc0FBRkFDZ0FzQUJGV0xBRUx4dXhCQncrV2JBQVJWaXdBaThic1FJUVBsbXlBQUVLSzFnaDJCdjBXVEF4SlNFVklSRXpBV29Dc3Z5TndaMmRCYkFBQUFFQXFRQUFCbElGc0FBT0FGa0FzQUJGV0xBQUx4dXhBQncrV2JBQVJWaXdBaThic1FJY1BsbXdBRVZZc0FRdkc3RUVFRDVac0FCRldMQUlMeHV4Q0JBK1diQUFSVml3REM4YnNRd1FQbG15QVFBRUVSSTVzZ2NBQkJFU09iSUtBQVFSRWprd01Ra0NNeEVqRVJNQkl3RVRFU01SQWFFQjNBSGMrY0FTL2lLVC9pTVR3QVd3KzF3RXBQcFFBamNDWlB0bEJKajluLzNKQmJBQUFBRUFxUUFBQlFnRnNBQUpBRXl5QVFvTEVSSTVBTEFBUlZpd0JTOGJzUVVjUGxtd0FFVllzQWd2RzdFSUhENVpzQUJGV0xBQUx4dXhBQkErV2JBQVJWaXdBeThic1FNUVBsbXlBZ1VBRVJJNXNnY0ZBQkVTT1RBeElTTUJFU01STXdFUk13VUl3ZjBqd2NFQzM3OEVZdnVlQmJEN21RUm5BQUlBZHYvc0JRa0Z4QUFSQUI4QU9RQ3dBRVZZc0Ewdkc3RU5IRDVac0FCRldMQUVMeHV4QkJBK1diQU5FTElWQVFvcldDSFlHL1Jac0FRUXNod0JDaXRZSWRnYjlGa3dNUUVVQWdRaklpUUNKelUwRWlRek1nUVNGU2NRQWlNaUFnY1ZGQkl6TWhJM0JRbVEvdml3clA3Mmt3S1NBUXVzcndFTGtML1F1N2JSQTlPNXVzd0RBcW5XL3NHb3FRRTV6bW5TQVVLcnFmNi8xUUlCQXdFVi91djJhL3YrNFFFUC9RQUFBZ0NwQUFBRXdBV3dBQW9BRXdCTnNnb1VGUkVTT2JBS0VMQU0wQUN3QUVWWXNBTXZHN0VESEQ1WnNBQkZXTEFCTHh1eEFSQStXYklMQXdFUkVqbXdDeSt5QUFFS0sxZ2gyQnYwV2JBREVMSVNBUW9yV0NIWUcvUlpNREVCRVNNUklUSUVGUlFFSXlVaE1qWTFOQ1luSVFGcHdBSVo3d0VQL3ZmMy9xa0JXWnFrcEkvK25BSTYvY1lGc1BUSjFPV2RrWW1DbkFNQUFnQnQvd29GQmdYRUFCVUFJZ0JOc2dnakpCRVNPYkFJRUxBWjBBQ3dBRVZZc0JFdkc3RVJIRDVac0FCRldMQUlMeHV4Q0JBK1diSURDQkVSRWptd0VSQ3lHUUVLSzFnaDJCdjBXYkFJRUxJZ0FRb3JXQ0hZRy9SWk1ERUJGQUlIQlFjbEJpTWlKQUluTlRRU0pETXlCQklWSnhBQ0l5SUNCeFVVRWlBU053VUJobmtCQklQK3pVaFFyUDcya3dLU0FRdXNzQUVMa01ETnZyWFJBOUVCZE13REFxblQvczlXekhuMEVxa0JPYzVwMGdGQ3E2cit3ZFVCQVFFQkYvN3I5bXY2L3VBQkQvMEFBQUlBcUFBQUJNa0ZzQUFPQUJjQVliSUZHQmtSRWptd0JSQ3dGdEFBc0FCRldMQUVMeHV4QkJ3K1diQUFSVml3QWk4YnNRSVFQbG13QUVWWXNBMHZHN0VORUQ1WnNoQUVBaEVTT2JBUUw3SUFBUW9yV0NIWUcvUlpzZ3NBQkJFU09iQUVFTElXQVFvcldDSFlHL1JaTURFQklSRWpFU0V5QkJVVUJnY0JGU01CSVRJMk5UUW1KeUVDdi82cXdRSGk5Z0VKazRNQlZzNzliZ0VuajZtaG1QN2FBazM5c3dXdzROYUl5akw5bGd3QzZwUjhoNUFCQUFBQkFGRC83QVJ5QmNRQUpnQmhzZ0FuS0JFU09RQ3dBRVZZc0FZdkc3RUdIRDVac0FCRldMQWFMeHV4R2hBK1diQUdFTEFMMExBR0VMSU9BUW9yV0NIWUcvUlpzaVlhQmhFU09iQW1FTElVQVFvcldDSFlHL1Jac0JvUXNCL1FzQm9Rc2lJQkNpdFlJZGdiOUZrd01RRW1KalUwSkRNeUZoWVZJelFtSXlJR0ZSUVdCQllXRlJRRUl5SWtKalV6RkJZek1qWTBKZ0pXOStFQkU5eVc2NEhCcUptT241Y0JhODFqL3V6bmx2NzhqY0hEbzVpaWxnS0pSOCtZck9GMHpIbUVsMzF2V1h0bWU2UnZzZFZ6eUgrRW1YeldkUUFBQVFBeEFBQUVsd1d3QUFjQUxnQ3dBRVZZc0FZdkc3RUdIRDVac0FCRldMQUNMeHV4QWhBK1diQUdFTElBQVFvcldDSFlHL1Jac0FUUU1ERUJJUkVqRVNFMUlRU1gvaXkvL2kwRVpnVVMrdTRGRXA0QUFRQ00vK3dFcWdXd0FCSUFQTElGRXhRUkVqa0FzQUJGV0xBQUx4dXhBQncrV2JBQVJWaXdDUzhic1FrY1BsbXdBRVZZc0FVdkc3RUZFRDVac2c0QkNpdFlJZGdiOUZrd01RRVJCZ0FIQnlJQUp4RXpFUlFXTXpJMk5SRUVxZ0grLzl3ejcvN2tBcjZ1b2FPdEJiRDhJczcrK2hBQ0FRTGlBK0Q4SnA2dnJwNEQyd0FBQVFBY0FBQUUvUVd3QUFZQU9MSUFCd2dSRWprQXNBQkZXTEFCTHh1eEFSdytXYkFBUlZpd0JTOGJzUVVjUGxtd0FFVllzQU12RzdFREVENVpzZ0FCQXhFU09UQXhKUUV6QVNNQk13S0xBYURTL2VTcS9lWFIvd1N4K2xBRnNBQUFBUUE5QUFBRzdRV3dBQklBV1FDd0FFVllzQU12RzdFREhENVpzQUJGV0xBSUx4dXhDQncrV2JBQVJWaXdFUzhic1JFY1BsbXdBRVZZc0Fvdkc3RUtFRDVac0FCRldMQVBMeHV4RHhBK1diSUJBd29SRWpteUJnTUtFUkk1c2cwRENoRVNPVEF4QVJjM0FUTUJGemNUTXdFakFTY0hBU01CTXdIakhDa0JJS0lCR1NnZjRzSCtuNi8rMUJjWC9zbXYvcURBQWN2QXJRUDQvQWl3eEFQaytsQUVKVzl2KzlzRnNBQUJBRGtBQUFUT0JiQUFDd0JyQUxBQVJWaXdBUzhic1FFY1BsbXdBRVZZc0Fvdkc3RUtIRDVac0FCRldMQUVMeHV4QkJBK1diQUFSVml3Qnk4YnNRY1FQbG15QUFFRUVSSTVRQW1HQUpZQXBnQzJBQVJkc2dZQkJCRVNPVUFKaVFhWkJxa0d1UVlFWGJJREFBWVJFam15Q1FZQUVSSTVNREVCQVRNQkFTTUJBU01CQVRNQ2hBRmQ0djQwQWRmay9wcittT01CMlA0ejRRT0NBaTc5THYwaUFqajl5QUxlQXRJQUFBRUFEd0FBQkxzRnNBQUlBREVBc0FCRldMQUJMeHV4QVJ3K1diQUFSVml3Qnk4YnNRY2NQbG13QUVWWXNBUXZHN0VFRUQ1WnNnQUJCQkVTT1RBeEFRRXpBUkVqRVFFekFtVUJmTnIrQ3NEK0N0d0MxUUxiL0cvOTRRSWZBNUVBQUFFQVZnQUFCSG9Gc0FBSkFFUUFzQUJGV0xBSEx4dXhCeHcrV2JBQVJWaXdBaThic1FJUVBsbXlBQUVLSzFnaDJCdjBXYklFQUFJUkVqbXdCeEN5QlFFS0sxZ2gyQnYwV2JJSkJRY1JFamt3TVNVaEZTRTFBU0UxSVJVQk9RTkIrOXdESHZ6dkEvZWRuWkFFZ3A2TkFBQUJBSkwreUFJTEJvQUFCd0FpQUxBRUw3QUhMN0lBQVFvcldDSFlHL1Jac0FRUXNnTUJDaXRZSWRnYjlGa3dNUUVqRVRNVklSRWhBZ3Uvdi82SEFYa0Y2UGw0bUFlNEFBQUJBQ2ovZ3dNNEJiQUFBd0FUQUxBQ0w3QUFSVml3QUM4YnNRQWNQbGt3TVJNekFTTW9zQUpnc0FXdytkTUFBUUFKL3NnQmd3YUFBQWNBSlFDd0FpK3dBUyt3QWhDeUJRRUtLMWdoMkJ2MFdiQUJFTElHQVFvcldDSFlHL1JaTURFVElSRWhOVE1SSXdrQmV2Nkd3Y0VHZ1BoSW1BYUlBQUFCQUVBQzJRTVVCYkFBQmdBbnNnQUhDQkVTT1FDd0FFVllzQU12RzdFREhENVpzQURRc2dFSEF4RVNPYkFCTDdBRjBEQXhBUU1qQVRNQkl3R3F2cXdCSzM4Qktxc0V1LzRlQXRmOUtRQUJBQVQvYVFPWUFBQUFBd0FiQUxBQVJWaXdBeThic1FNUVBsbXlBQUVLSzFnaDJCdjBXVEF4QlNFMUlRT1kvR3dEbEplWEFBQUJBRGtFMkFIYUJmNEFBd0FqQUxBQkw3SVBBUUZkc0FEUUdiQUFMeGl3QVJDd0F0Q3dBaSswRHdJZkFnSmRNREVCSXdFekFkcWYvdjdmQk5nQkpnQUFBZ0J0Lyt3RDZnUk9BQjRBS0FCNXNoY3BLaEVTT2JBWEVMQWcwQUN3QUVWWXNCY3ZHN0VYR0Q1WnNBQkZXTEFFTHh1eEJCQStXYkFBUlZpd0FDOGJzUUFRUGxteUFoY0VFUkk1c2dzWEJCRVNPYkFMTDdBWEVMSVBBUW9yV0NIWUcvUlpzaElMRnhFU09iQUVFTElmQVFvcldDSFlHL1Jac0FzUXNpTUJDaXRZSWRnYjlGa3dNU0VtSndZaklpWTFOQ1F6TXpVMEppTWlCaFVqTkRZMk16SVdGeEVVRnhVbE1qWTNOU01nRlJRV0F5Z1FDb0d6b00wQkFlbTBkSEZqaHJwenhYYTcxQVFtL2d0WG5DT1IvcXgwSUZLR3RZdXB1MVZoYzJSSFVaZFl1NlQrRHBWWUVJMWFTTjdIVjJJQUFnQ00vK3dFSUFZQUFBNEFHUUJrc2hJYUd4RVNPYkFTRUxBRDBBQ3dDQyt3QUVWWXNBd3ZHN0VNR0Q1WnNBQkZXTEFETHh1eEF4QStXYkFBUlZpd0JpOGJzUVlRUGxteUJRZ0RFUkk1c2dvTUF4RVNPYkFNRUxJU0FRb3JXQ0hZRy9SWnNBTVFzaGNCQ2l0WUlkZ2I5Rmt3TVFFVUFpTWlKd2NqRVRNUk5pQVNFU2MwSmlNaUJ4RVdNekkyQkNEa3dNMXdDYXE1Y0FHSzRibVNpYmRRVmJTRmxBSVIrUDdUa1gwR0FQM0RpLzdXL3YwRnZjNnEvaXlxemdBQkFGei83QVBzQkU0QUhRQkpzaEFlSHhFU09RQ3dBRVZZc0JBdkc3RVFHRDVac0FCRldMQUlMeHV4Q0JBK1diSUFBUW9yV0NIWUcvUlpzQWdRc0FQUXNCQVFzQlRRc0JBUXNoY0JDaXRZSWRnYjlGa3dNU1V5TmpjekRnSWpJZ0FSTlRRMk5qTXlGaGNqSmlZaklnWVZGUlFXQWo1amxBaXZCWGJGYnQzKyszVFpsTGJ4Q0s4SWoybU5tNXFEZUZwZHFHUUJKd0VBSDU3MmlOcXVhWWZMd0NPN3lnQUFBZ0JmLyt3RDhBWUFBQThBR2dCa3NoZ2JIQkVTT2JBWUVMQUQwQUN3Qmkrd0FFVllzQU12RzdFREdENVpzQUJGV0xBTUx4dXhEQkErV2JBQVJWaXdDQzhic1FnUVBsbXlCUU1NRVJJNXNnb0REQkVTT2JBTUVMSVRBUW9yV0NIWUcvUlpzQU1Rc2hnQkNpdFlJZGdiOUZrd01STTBFak15RnhFekVTTW5CaU1pQWpVWEZCWXpNamNSSmlNaUJsL3N2NzV2dWFvSmI4YTg3Ym1ZaHJCUlU2eUltQUltK1FFdmdnSTArZ0IwaUFFMCtBZTQwSjRCOFpuU0FBQUNBRjMvN0FQekJFNEFGUUFkQUdteUNCNGZFUkk1c0FnUXNCYlFBTEFBUlZpd0NDOGJzUWdZUGxtd0FFVllzQUF2RzdFQUVENVpzaG9JQUJFU09iQWFMN1MvR3M4YUFsMnlEQUVLSzFnaDJCdjBXYkFBRUxJUUFRb3JXQ0hZRy9SWnNoTUlBQkVTT2JBSUVMSVdBUW9yV0NIWUcvUlpNREVGSWdBMU5UUTJOak15RWhFVklSWVdNekkyTnhjR0FTSUdCeUUxSmlZQ1Rkeis3SHZkZ2RQcS9TTUVzNHBpaUROeGlQN1pjSmdTQWg0SWlCUUJJZklpb2YyUC91cisvVTJneFZCQ1dORUR5cU9URG8yYkFBRUFQQUFBQXNvR0ZRQVZBR095RHhZWEVSSTVBTEFBUlZpd0NDOGJzUWdlUGxtd0FFVllzQU12RzdFREdENVpzQUJGV0xBUkx4dXhFUmcrV2JBQVJWaXdBQzhic1FBUVBsbXdBeEN5QVFFS0sxZ2gyQnYwV2JBSUVMSU5BUW9yV0NIWUcvUlpzQUVRc0JQUXNCVFFNREV6RVNNMU16VTBOak15RndjbUl5SUdGUlV6RlNNUjU2dXJ1cXBBUHdvdk5WcGk1K2NEcTQ5dnJyNFJsZ2xwWW5LUC9GVUFBZ0JnL2xZRDhnUk9BQmtBSkFDRHNpSWxKaEVTT2JBaUVMQUwwQUN3QUVWWXNBTXZHN0VER0Q1WnNBQkZXTEFHTHh1eEJoZytXYkFBUlZpd0N5OGJzUXNTUGxtd0FFVllzQmN2RzdFWEVENVpzZ1VERnhFU09iSVBGd3NSRWptd0N4Q3lFUUVLSzFnaDJCdjBXYklWQXhjUkVqbXdGeEN5SFFFS0sxZ2gyQnYwV2JBREVMSWlBUW9yV0NIWUcvUlpNREVUTkJJek1oYzNNeEVVQmlNaUppYzNGak15TmpVMUJpTWlBamNVRmpNeU54RW1JeUlHWU9yQnhtOEpxZm5TZGVBN1lIZXNoNWR2d0w3cnVwYUhyMUpWcW9lWUFpYjlBU3VNZVB2ZzB2SmtWMitUbUlwZGdBRXk4N2ZSbndIdW05SUFBQUVBakFBQUE5OEdBQUFSQUVteUNoSVRFUkk1QUxBUUw3QUFSVml3QWk4YnNRSVlQbG13QUVWWXNBVXZHN0VGRUQ1WnNBQkZXTEFPTHh1eERoQStXYklBQWdVUkVqbXdBaEN5Q2dFS0sxZ2gyQnYwV1RBeEFUWXpJQk1SSXhFbUppTWlCZ2NSSXhFekFVVjd4UUZYQTdrQmFXOWFpQ2E1dVFPM2wvNTkvVFVDekhWd1lFNzgvUVlBQUFJQWpRQUFBV2dGeEFBREFBd0FQcklHRFE0UkVqbXdCaEN3QWRBQXNBQkZXTEFDTHh1eEFoZytXYkFBUlZpd0FDOGJzUUFRUGxtd0FoQ3dDdEN3Q2kreUJnVUtLMWdoMkJ2MFdUQXhJU01STXdNME5qSVdGQVlpSmdGVnVibklOMnc0T0d3M0JEb0JIeTArUGxvOFBBQUMvNy8rU3dGWkJjUUFEQUFXQUVteUVCY1lFUkk1c0JBUXNBRFFBTEFBUlZpd0RDOGJzUXdZUGxtd0FFVllzQU12RzdFREVqNVpzZ2dCQ2l0WUlkZ2I5Rm13REJDd0ZkQ3dGUyt5RUFVS0sxZ2gyQnYwV1RBeEFSRVFJU0luTlJZek1qWTFFUU0wTmpNeUZoUUdJaVlCUy83bFBUUWdORDVCRXpjMU5qZzRiRFlFT3Z0Si9zZ1NsQWhEVXdTN0FSOHNQejVhUER3QUFBRUFqUUFBQkF3R0FBQU1BSFVBc0FCRldMQUVMeHV4QkI0K1diQUFSVml3Q0M4YnNRZ1lQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFMTHh1eEN4QStXYklBQ0FJUkVqbEFGVG9BU2dCYUFHb0FlZ0NLQUpvQXFnQzZBTW9BQ2wyeUJnZ0NFUkk1UUJVMkJrWUdWZ1ptQm5ZR2hnYVdCcVlHdGdiR0JncGRNREVCQnhFakVUTVJOd0V6QVFFakFicDB1YmxqQVZIaC9sc0IxdGtCOVhuK2hBWUEvRjkzQVdUK1BQMktBQUVBbkFBQUFWVUdBQUFEQUIwQXNBQkZXTEFDTHh1eEFoNCtXYkFBUlZpd0FDOGJzUUFRUGxrd01TRWpFVE1CVmJtNUJnQUFBQUVBaXdBQUJuZ0VUZ0FkQUhleUJCNGZFUkk1QUxBQVJWaXdBeThic1FNWVBsbXdBRVZZc0Fndkc3RUlHRDVac0FCRldMQUFMeHV4QUJnK1diQUFSVml3Q3k4YnNRc1FQbG13QUVWWXNCUXZHN0VVRUQ1WnNBQkZXTEFiTHh1eEd4QStXYklCQ0FzUkVqbXlCUWdMRVJJNXNBZ1FzaEFCQ2l0WUlkZ2I5Rm13R05Bd01RRVhOak15RnpZMk15QVRFU01STkNZaklnWUhFU01STkNNaUJ4RWpFUUU2QlhmSzQxSTJyWFlCWkFhNWFuMW5pQXU2NTdaRHVRUTZlSXl1VG1EK2gvMHJBc3AwYzN0by9USUN4ZXliL09vRU9nQUJBSXdBQUFQZkJFNEFFUUJUc2dzU0V4RVNPUUN3QUVWWXNBTXZHN0VER0Q1WnNBQkZXTEFBTHh1eEFCZytXYkFBUlZpd0JpOGJzUVlRUGxtd0FFVllzQTh2RzdFUEVENVpzZ0VEQmhFU09iQURFTElMQVFvcldDSFlHL1JaTURFQkZ6WXpJQk1SSXhFbUppTWlCZ2NSSXhFQk93Wjh5QUZYQTdrQmFXOWFpQ2E1QkRxSW5QNTkvVFVDekhWd1lFNzgvUVE2QUFBQ0FGdi83QVEwQkU0QUR3QWJBRU95REJ3ZEVSSTVzQXdRc0JQUUFMQUFSVml3QkM4YnNRUVlQbG13QUVWWXNBd3ZHN0VNRUQ1WnNoTUJDaXRZSWRnYjlGbXdCQkN5R1FFS0sxZ2gyQnYwV1RBeEV6UTJOak15QUJVVkZBWUdJeUlBTlJjVUZqTXlOalUwSmlNaUJsdDkzNC9kQVJGNTRaTGMvdSs2cDR5TnBxbU1pYWdDSjUvK2l2N08vZzJlKzR3Qk12d0p0TnJkeDdMZDJnQUNBSXorWUFRZUJFNEFEd0FhQUc2eUV4c2NFUkk1c0JNUXNBelFBTEFBUlZpd0RDOGJzUXdZUGxtd0FFVllzQWt2RzdFSkdENVpzQUJGV0xBR0x4dXhCaEkrV2JBQVJWaXdBeThic1FNUVBsbXlCUXdERVJJNXNnb01BeEVTT2JBTUVMSVRBUW9yV0NIWUcvUlpzQU1Rc2hnQkNpdFlJZGdiOUZrd01RRVVBaU1pSnhFakVUTVhOak15RWhFbk5DWWpJZ2NSRmpNeU5nUWU0c0hGY2JtcENYSEp3K081bklpb1ZGT3JoWjBDRWZmKzBuMzk5d1hhZUl6KzJ2NzZCTGZVbGYzN2xOTUFBQUlBWC81Z0ErOEVUZ0FQQUJvQWE3SVlHeHdSRWptd0dCQ3dBOUFBc0FCRldMQURMeHV4QXhnK1diQUFSVml3Qmk4YnNRWVlQbG13QUVWWXNBZ3ZHN0VJRWo1WnNBQkZXTEFNTHh1eERCQStXYklGQXd3UkVqbXlDZ01NRVJJNXNoTUJDaXRZSWRnYjlGbXdBeEN5R0FFS0sxZ2gyQnYwV1RBeEV6UVNNeklYTnpNUkl4RUdJeUlDTlJjVUZqTXlOeEVtSXlJR1grckZ3RzhJcXJsd3VzVHB1WjJGcFZkWW9vYWVBaWIvQVNtQmJmb21BZ1I0QVRIOENMclVrZ0lTajlVQUFRQ01BQUFDbHdST0FBMEFScklFRGc4UkVqa0FzQUJGV0xBTEx4dXhDeGcrV2JBQVJWaXdDQzhic1FnWVBsbXdBRVZZc0FVdkc3RUZFRDVac0FzUXNnSUJDaXRZSWRnYjlGbXlDUXNGRVJJNU1ERUJKaU1pQnhFakVUTVhOak15RndLWEtqRzJRYm0wQTF1bk5od0RsQWViL1FBRU9uMlJEZ0FCQUYvLzdBTzdCRTRBSmdCaHNna25LQkVTT1FDd0FFVllzQWt2RzdFSkdENVpzQUJGV0xBY0x4dXhIQkErV2JJREhBa1JFam13Q1JDd0RkQ3dDUkN5RUFFS0sxZ2gyQnYwV2JBREVMSVZBUW9yV0NIWUcvUlpzQndRc0NIUXNCd1FzaVFCQ2l0WUlkZ2I5Rmt3TVFFMEppUW1KalUwTmpNeUZoVWpOQ1lqSWdZVkZCWUVGaFlWRkFZaklpWW1OVE1XRmpNeU5nTUNjZjducFUvaHI3amx1b0ZpWlhKcUFSV3NVK2k1Z3NoeHVRV0xjbWwvQVI5TFV6eFVkRkNGdUw2VVRHNVlSME5FUGxaNVY1R3ZYS1ZnWFcxVkFBRUFDZi9zQWxZRlFBQVZBRit5RGhZWEVSSTVBTEFBUlZpd0FTOGJzUUVZUGxtd0FFVllzQk12RzdFVEdENVpzQUJGV0xBTkx4dXhEUkErV2JBQkVMQUEwTEFBTDdBQkVMSURBUW9yV0NIWUcvUlpzQTBRc2dnQkNpdFlJZGdiOUZtd0F4Q3dFZEN3RXRBd01RRVJNeFVqRVJRV016STNGUVlqSWlZMUVTTTFNeEVCaDhyS05rRWdPRWxGZkg3RnhRVkEvdnFQL1dGQlFReVdGSmFLQXArUEFRWUFBUUNJLyt3RDNBUTZBQkFBVTdJS0VSSVJFamtBc0FCRldMQUdMeHV4QmhnK1diQUFSVml3RFM4YnNRMFlQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFRTHh1eEVCQStXYklBRFFJUkVqbXdBaEN5Q2dFS0sxZ2gyQnYwV1RBeEpRWWpJaVluRVRNUkZETXlOeEV6RVNNREtHelJyYlVCdWNqVVJybXdhMy9KeFFMQS9VWDJuZ01UKzhZQUFBRUFJUUFBQTdvRU9nQUdBRGl5QUFjSUVSSTVBTEFBUlZpd0FTOGJzUUVZUGxtd0FFVllzQVV2RzdFRkdENVpzQUJGV0xBREx4dXhBeEErV2JJQUJRTVJFamt3TVNVQk13RWpBVE1COFFFTXZmNThqZjU0dmZzRFAvdkdCRG9BQUFFQUt3QUFCZE1FT2dBTUFHQ3lCUTBPRVJJNUFMQUFSVml3QVM4YnNRRVlQbG13QUVWWXNBZ3ZHN0VJR0Q1WnNBQkZXTEFMTHh1eEN4ZytXYkFBUlZpd0F5OGJzUU1RUGxtd0FFVllzQVl2RzdFR0VENVpzZ0FMQXhFU09iSUZDd01SRWpteUNnc0RFUkk1TURFbEV6TUJJd0VCSXdFekV4TXpCRXJRdWY3Rmx2NzUvd0NXL3NhNDFmeVYvd003KzhZRE5Qek1CRHI4MWdNcUFBRUFLUUFBQThvRU9nQUxBRk1Bc0FCRldMQUJMeHV4QVJnK1diQUFSVml3Q2k4YnNRb1lQbG13QUVWWXNBUXZHN0VFRUQ1WnNBQkZXTEFITHh1eEJ4QStXYklBQ2dRUkVqbXlCZ29FRVJJNXNnTUFCaEVTT2JJSkJnQVJFamt3TVFFVE13RUJJd01ESXdFQk13SDM4TmorbmdGdDF2cjYxd0Z0L3A3V0FxOEJpLzNwL2QwQmxmNXJBaU1DRndBQkFCYitTd093QkRvQUR3QkpzZ0FRRVJFU09RQ3dBRVZZc0FFdkc3RUJHRDVac0FCRldMQU9MeHV4RGhnK1diQUFSVml3QlM4YnNRVVNQbG15QUE0RkVSSTVzZ2tCQ2l0WUlkZ2I5Rm13QUJDd0RkQXdNUUVUTXdFQ0l5Y25OUmN5TmpjM0FUTUI3dnpHL2sxbDNDTkZNbDVwSWluK2Zzb0JEd01yK3gvKzhnTU5sZ1JNWlc0RUxnQUJBRmdBQUFPekJEb0FDUUJFQUxBQVJWaXdCeThic1FjWVBsbXdBRVZZc0FJdkc3RUNFRDVac2dBQkNpdFlJZGdiOUZteUJBQUNFUkk1c0FjUXNnVUJDaXRZSWRnYjlGbXlDUVVIRVJJNU1ERWxJUlVoTlFFaE5TRVZBVG9DZWZ5bEFsWDl0QU0wbDVlSUF4bVpnd0FBQVFCQS9wSUNuZ1k5QUJnQU1iSVRHUm9SRWprQXNBMHZzQUF2c2djTkFCRVNPYkFITDdJZkJ3RmRzZ1lEQ2l0WUlkZ2I5Rm15RXdZSEVSSTVNREVCSmlZMU5UUWpOVEkxTlRZMk54Y0dFUlVVQnhZVkZSSVhBbml4czlUVUFxK3pKdEducHdQTy9wSXk1YnpIODVIeTBMZmhNM05EL3ViSzQxbGE1YzcrN1VJQUFBRUFyLzd5QVVRRnNBQURBQk1Bc0FBdnNBQkZXTEFDTHh1eEFodytXVEF4QVNNUk13RkVsWlgrOGdhK0FBQUJBQlAra2dKeUJqMEFHQUF4c2dVWkdoRVNPUUN3Q3krd0dDK3lFUXNZRVJJNXNCRXZzaDhSQVYyeUVnTUtLMWdoMkJ2MFdiSUZFaEVSRWprd01SYzJFelUwTnlZMU5SQW5OeFlXRnhVVU14VWlGUlVVQmdjVHl3ZTF0ZEVtc2JJQjFOUzFyL3RCQVFyYzUxUlM2Y3NCR2tOek11RzUwdStSODhxODRqSUFBQUVBZ3dHU0JPOERJZ0FYQUVLeUVSZ1pFUkk1QUxBQVJWaXdEeThic1E4V1BsbXdBTkN3RHhDd0ZOQ3dGQyt5QXdFS0sxZ2gyQnYwV2JBUEVMSUlBUW9yV0NIWUcvUlpzQU1Rc0F2UU1ERUJGQVlqSWk0Q0l5SUdGUWMwTmpNeUZoWVhGekkyTlFUdnU0bElnS2xLS2s1VW9iaUxUSXl3UUIxTVh3TUpudGsxbENSclhnS2d6a0NoQ2dKMFh3QUNBSXYrbUFGbUJFMEFBd0FNQURLeUJnME9FUkk1c0FZUXNBRFFBTEFDTDdBQVJWaXdDeThic1FzWVBsbXlCZ1VLSzFnaDJCdjBXYklCQWdZUkVqa3dNUk16RXlNVEZBWWlKalEyTWhhcXFBM0N5VGRzT0Roc053S3MrK3dGVEMwK1BsbzhQQUFCQUduL0N3UDVCU1lBSVFCU3NnQWlJeEVTT1FDd0FFVllzQlF2RzdFVUdENVpzQUJGV0xBS0x4dXhDaEErV2JBSDBMSUFBUW9yV0NIWUcvUlpzQW9Rc0FQUXNCUVFzQkhRc0JRUXNCalFzQlFRc2hzQkNpdFlJZGdiOUZrd01TVXlOamN6QmdZSEZTTTFKZ0kxTlRRU056VXpGUllXRnlNbUppTWlCaFVWRkJZQ1NtU1VDSzhHeHBDNXM4aktzYm1Xd0FhdkNJOXBqWnViZzNsWmZza2E2ZW9pQVJ6Y0k5UUJIU0hpM3hmVWxtbUh5OEFqdThvQUFRQmJBQUFFYUFYRUFDRUFmTEljSWlNUkVqa0FzQUJGV0xBVUx4dXhGQncrV2JBQVJWaXdCUzhic1FVUVBsbXlIeFFGRVJJNXNCOHZzbDhmQVhLeWp4OEJjYksvSHdGZHNnQUJDaXRZSWRnYjlGbXdCUkN5QXdFS0sxZ2gyQnYwV2JBSDBMQUkwTEFBRUxBTjBMQWZFTEFQMExBVUVMQVkwTEFVRUxJYkFRb3JXQ0hZRy9SWk1ERUJGeFFISVFjaE5UTTJOamMxSnlNMU13TTBOak15RmhVak5DWWpJZ1lWRXlFVkFjRUlQZ0xkQWZ2NFRTZ3lBZ2lsb0FuMXlMN2V2Mzl2YVlJSkFUOENidHlhVzUyZENZTmdDTjJkQVFUSDd0U3hhM3lhZmY3OG5RQUFBZ0JwLytVRld3VHhBQnNBS2dBL3NnSXJMQkVTT2JBQ0VMQW4wQUN3QUVWWXNBSXZHN0VDRUQ1WnNCRFFzQkF2c0FJUXNoOEJDaXRZSWRnYjlGbXdFQkN5SndFS0sxZ2gyQnYwV1RBeEpRWWpJaWNISnpjbU5UUTNKemNYTmpNeUZ6Y1hCeFlWRkFjWEJ3RVVGaFl5TmpZMU5DWW1JeUlHQmdSUG45SFBuNGFDaTJod2s0S1Ruc1BFbjVXRWwyNW1qNFQ4WUhQRTRzUnhjY1Z3Y2NSemNJU0NpSWVObk1yT281ZUlsbmg1bUltYW84dkVuNUNJQW50NzFIcDcwM3Q2MDNsNDFBQUFBUUFmQUFBRXJRV3dBQllBYXdDd0FFVllzQll2RzdFV0hENVpzQUJGV0xBQkx4dXhBUncrV2JBQVJWaXdEQzhic1F3UVBsbXlEeE1ESzdJQURCWVJFam0wRHhNZkV3SmRzQk1Rc0FQUXNCTVFzaElDQ2l0WUlkZ2I5Rm13QnRDd0R4Q3dCOUN3RHhDeURnSUtLMWdoMkJ2MFdiQUswREF4QVFFekFTRVZJUlVoRlNFUkl4RWhOU0UxSVRVaEFUTUNaZ0ZzMi81ZUFUaitnQUdBL29EQi9vWUJldjZHQVRuK1h0d0REZ0tpL1RCOXBYeit2Z0ZDZktWOUF0QUFBQUlBay83eUFVMEZzQUFEQUFjQUdBQ3dBQyt3QUVWWXNBWXZHN0VHSEQ1WnNnVUJBeXN3TVJNUk14RVJJeEV6azdxNnV2N3lBeGY4NlFQSUF2WUFBZ0JhL2hFRWVRWEVBRFFBUkFDQXNpTkZSaEVTT2JBakVMQTEwQUN3Q0Mrd0FFVllzQ012RzdFakhENVpzaFlJSXhFU09iQVdFTEkvQVFvcldDSFlHL1Jac2dJV1B4RVNPYkFJRUxBTzBMQUlFTElSQVFvcldDSFlHL1Jac2pBakNCRVNPYkF3RUxJM0FRb3JXQ0hZRy9SWnNoMDNNQkVTT2JBakVMQW4wTEFqRUxJcUFRb3JXQ0hZRy9SWk1ERUJGQWNXRmhVVUJDTWlKaWNtTlRjVUZqTXlOalUwSmljdUFqVTBOeVltTlRRa016SUVGU00wSmlNaUJoVVVGaFlFSGdJbEppY0dCaFVVRmhZRUZ6WTJOVFFtQkhtNlJVaisvT1J3eVVhTHVyU2NpS2FPMGJiQVhiWkNSd0VMM3VnQkJMbW9pNDZoT0ljQkg2bHhPdjNoV2t0UVN6YUZBUndzVGxTTEFhKzlWVEdJWktqSE9EbHh6UUtDbDNWZ1dXaytNRytiYjdwWU1ZaGtwc2ppelgyYmMySkZVRUZRU0dHQnF4Z2JFMlZGUmxCQ1VoRVVaVVZZYlFBQUFnQm1CUEFDN3dYRkFBZ0FFUUFkQUxBSEw3SUNCUW9yV0NIWUcvUlpzQXZRc0FjUXNCRFFzQkF2TURFVE5EWXlGaFFHSWlZbE5EWXlGaFFHSWlabU4ydzRPR3czQWE0M2JEZzRiRGNGV3kwOVBWbzhQQ3N0UGo1YVBEd0FBQU1BVy8vckJlWUZ4QUFiQUNvQU9RQ1ZzaWM2T3hFU09iQW5FTEFEMExBbkVMQTIwQUN3QUVWWXNDNHZHN0V1SEQ1WnNBQkZXTEEyTHh1eE5oQStXYklETmk0UkVqbXdBeSswRHdNZkF3SmRzZ291TmhFU09iQUtMN1FBQ2hBS0FsMnlEZ29ERVJJNXNoRUNDaXRZSWRnYjlGbXdBeEN5R0FJS0sxZ2gyQnYwV2JJYkF3b1JFam13TmhDeUlBUUtLMWdoMkJ2MFdiQXVFTEluQkFvcldDSFlHL1JaTURFQkZBWWpJaVkxTlRRMk16SVdGU00wSmlNaUJoVVZGQll6TWpZMUpSUVNCQ0FrRWpVMEFpUWpJZ1FDQnpRU0pDQUVFaFVVQWdRaklpUUNCRit0bnAyOXY1dWdySkpmVzE1c2JGNWNYZjBCb0FFVEFVQUJFcUNlL3UyaG9QN3NuM083QVVzQmdBRkt1N1QrdGNiRi9yVzJBbFdab2RPMmJyRFRwSlZqVllwN2NYaUtWR1dFclA3YnBxWUJKYXlxQVNLbnBmN2Nxc29CV3NmSC9xYkt4ZjZvMGM4QldBQUFBZ0NUQXJNRER3WEVBQnNBSlFCc3NnNG1KeEVTT2JBT0VMQWQwQUN3QUVWWXNCVXZHN0VWSEQ1WnNnUW1GUkVTT2JBRUw3QUEwTElDQkJVUkVqbXlDd1FWRVJJNXNBc3ZzQlVRc2c0RENpdFlJZGdiOUZteUVRc1ZFUkk1c0FRUXNod0RDaXRZSWRnYjlGbXdDeEN5SUFRS0sxZ2gyQnYwV1RBeEFTWW5CaU1pSmpVME5qTXpOVFFqSWdZVkp6UTJNeklXRlJFVUZ5VXlOamMxSXdZR0ZSUUNhZ3dHVElCM2dxZXNiSHhGVDZHc2lZV2FHdjZrSzFnY2NGTlpBc0VpSmxaOFoyOTROSWMyTXd4bmdvK0cvc1JoVVhzb0c0NEJQek5lLy84QVpnQ1hBMlFEc3dBbUFYcjYvZ0FIQVhvQlJQLytBQUVBZndGM0E3NERJQUFGQUJvQXNBUXZzQUhRc0FFdnNBUVFzZ0lCQ2l0WUlkZ2I5Rmt3TVFFakVTRTFJUU8rdXYxN0F6OEJkd0VJb1FBRUFGci82d1hsQmNRQURnQWVBRFFBUFFDcHNqWStQeEVTT2JBMkVMQUwwTEEyRUxBVDBMQTJFTEFqMEFDd0FFVllzQU12RzdFREhENVpzQUJGV0xBTEx4dXhDeEErV2JJVEJBb3JXQ0hZRy9SWnNBTVFzaHNFQ2l0WUlkZ2I5Rm15SUFzREVSSTVzQ0F2c2lJREN4RVNPYkFpTDdRQUloQWlBbDJ5TlNBaUVSSTVzRFV2c3I4MUFWMjBBRFVRTlFKZHNoOENDaXRZSWRnYjlGbXlLQjgxRVJJNXNDQVFzQy9Rc0M4dnNDSVFzajBDQ2l0WUlkZ2I5Rmt3TVJNMEVpUWdCQklWRkFJRUl5SWtBamNVRWdRek1pUVNOVFFDSkNNaUJBSUZFU01SSVRJV0ZSUUhGaGNWRkJjVkl5WTBKeVluSnpNMk5qVTBKaU1qV3JzQlN3R0FBVXE3dFA2MXhzWCt0Ylp6b0FFVG9LRUJGSjJkL3V5aG9QN3Nud0hBalFFVW1hbUFlZ0VSa1E0REVIT3duRWhZVG1TS0F0bktBVnJIeC82bXlzWCtxTkhQQVZqSHJQN2JwcWtCSXF5ckFTR25wZjdjOWY2dUExR0RmWHRCTXBvOVZpWVFKTGtSWUFTQUFrSTJTVDBBQUFFQWVBVWhBMElGc0FBREFCRUFzQUV2c2dJRENpdFlJZGdiOUZrd01RRWhOU0VEUXYwMkFzb0ZJWThBQWdDQ0E4QUNmQVhFQUFzQUZnQXZBTEFBUlZpd0F5OGJzUU1jUGxtd0ROQ3dEQyt5Q1FJS0sxZ2gyQnYwV2JBREVMSVNBZ29yV0NIWUcvUlpNREVUTkRZek1oWVZGQVlqSWlZWE1qWTFOQ1lqSWdZVUZvS1ZhbWlUazJocGx2ODJTa28yTjB0TEJNQm9uSnRwYXBhV0ZrYzVPa3RQYkVvQUFnQmhBQUFEOVFUekFBc0FEd0JHQUxBSkw3QUFSVml3RFM4YnNRMFFQbG13Q1JDd0FOQ3dDUkN5QmdFS0sxZ2gyQnYwV2JBRDBMQU5FTElPQVFvcldDSFlHL1Jac2dVT0JoRVNPYlFMQlJzRkFsMHdNUUVoRlNFUkl4RWhOU0VSTXdFaE5TRUNpUUZzL3BTbi9uOEJnYWNCUWZ5OUEwTURWcGYrWWdHZWx3R2QrdzJZQUFBQkFFSUNtd0tyQmJzQUZnQlVzZ2dYR0JFU09RQ3dBRVZZc0E0dkc3RU9IRDVac0FCRldMQUFMeHV4QUJRK1diSVdBZ29yV0NIWUcvUlpzQUxRc2dNT0ZoRVNPYkFPRUxJSUFnb3JXQ0hZRy9SWnNBNFFzQXZRc2hRV0RoRVNPVEF4QVNFMUFUWTFOQ1lqSWdZVkl6UTJJQllWRkE4Q0lRS3IvYWtCTEcxQVBFdEhuYWNCQ0pwclZMQUJqd0tiYkFFYVprVXhQVXc1Y3BSL2JtaHJUNUVBQVFBK0FvOENtZ1c2QUNZQWliSWdKeWdSRWprQXNBQkZXTEFPTHh1eERodytXYkFBUlZpd0dTOGJzUmtVUGxteUFCa09FUkk1c0FBdnRtOEFmd0NQQUFOZHNqOEFBWEcyRHdBZkFDOEFBMTJ5WHdBQmNyQU9FTElIQWdvcldDSFlHL1Jac2dvT0dSRVNPYkFBRUxJbUJBb3JXQ0hZRy9SWnNoUW1BQkVTT2JJZEdRNFJFam13R1JDeUlBSUtLMWdoMkJ2MFdUQXhBVE15TmpVMEppTWlCaFVqTkRZek1oWVZGQVlIRmhVVUJpTWlKalV6RkJZek1qWTFOQ2NqQVFsVVNrZy9SamxMbmFOOGlaeEdRcFdxaUlTbW5rOURSa21jV0FSbFBUQXRPak1wWW50NWFEZGJHU21QYW4xK2F5MDhQRE54QWdBQUFRQjdCTmdDSEFYK0FBTUFJd0N3QWkreUR3SUJYYkFBMExBQUw3UVBBQjhBQWwyd0FoQ3dBOUFac0FNdkdEQXhBVE1CSXdFODRQNzBsUVgrL3RvQUFBRUFtdjVnQSs0RU9nQVNBRkN5RFJNVUVSSTVBTEFBUlZpd0FDOGJzUUFZUGxtd0FFVllzQWN2RzdFSEdENVpzQUJGV0xBUUx4dXhFQkkrV2JBQVJWaXdEUzhic1EwUVBsbXlCQUVLSzFnaDJCdjBXYklMQncwUkVqa3dNUUVSRmhZek1qY1JNeEVqSndZaklpY1JJeEVCVXdGbmRNYyt1cWNKWGFxVFVia0VPdjJIbzV5WUF5RDd4bk9IU2Y0ckJkb0FBUUJEQUFBRFFBV3dBQW9BSzdJQ0N3d1JFamtBc0FCRldMQUlMeHV4Q0J3K1diQUFSVml3QUM4YnNRQVFQbG15QVFBSUVSSTVNREVoRVNNaUpEVTBKRE1oRVFLR1ZPYis5d0VLNWdFTkFnaisxdFgvK2xBQUFBRUFrd0pyQVhrRFNRQUpBQmF5QXdvTEVSSTVBTEFDTDdFSUNpdFkyQnZjV1RBeEV6UTJNaFlWRkFZaUpwTTVjanM3Y2prQzJUQkFRREF2UHo4QUFRQjAvazBCcWdBQUFBNEFRYklGRHhBUkVqa0FzQUJGV0xBQUx4dXhBQkErV2JBQVJWaXdCaThic1FZU1BsbTBFd1lqQmdKZHNnRUdBQkVTT2JFSENpdFkyQnZjV2JBQkVMQU4wREF4SVFjV0ZSUUdJeWN5TmpVMEppYzNBUjBNbWFDUEIwOVhRR0lnTkJ1U1lYRnJOQzhzS2dtR0FBRUFlZ0tpQWU4RnR3QUdBRUN5QVFjSUVSSTVBTEFBUlZpd0JTOGJzUVVjUGxtd0FFVllzQUF2RzdFQUZENVpzZ1FBQlJFU09iQUVMN0lEQWdvcldDSFlHL1Jac2dJREJSRVNPVEF4QVNNUkJ6VWxNd0h2bmRnQll4SUNvZ0paT1lCMUFBQUNBSG9Dc2dNbkJjUUFEQUFhQUVDeUF4c2NFUkk1c0FNUXNCRFFBTEFBUlZpd0F5OGJzUU1jUGxteUNoc0RFUkk1c0FvdnNoQURDaXRZSWRnYjlGbXdBeEN5RndNS0sxZ2gyQnYwV1RBeEV6UTJNeklXRlJVVUJpQW1OUmNVRmpNeU5qVTFOQ1lqSWdZSGVyeWFtN3k3L3N5K28yRlVVMTloVTFGZ0FnUmpuc1BCcGtxZndzS2xCbVJ5YzJWT1kzSnVZUUQvL3dCbUFKZ0RlQU8xQUNZQmV3MEFBQWNCZXdGcUFBRC8vd0JWQUFBRmtRV3RBQ2NCMWYvYkFwZ0FKd0Y4QVJnQUNBRUhBZGdDMWdBQUFCQUFzQUJGV0xBRkx4dXhCUncrV1RBeC8vOEFVQUFBQmNrRnJRQW5BWHdBN0FBSUFDY0IxZi9XQXBnQkJ3SFdBeDRBQUFBUUFMQUFSVml3Q1M4YnNRa2NQbGt3TWYvL0FHOEFBQVh0QmJzQUp3RjhBWmNBQ0FBbkFkZ0RNZ0FBQVFjQjF3QXhBcHNBRUFDd0FFVllzQ0V2RzdFaEhENVpNREVBQWdCRS9uOERlQVJOQUJnQUlnQlhzZ2tqSkJFU09iQUpFTEFjMEFDd0VDK3dBRVZZc0NFdkc3RWhHRDVac2dBUUlSRVNPYklERUFBUkVqbXdFQkN5Q1FFS0sxZ2gyQnYwV2JBUUVMQU0wTElWQUJBUkVqbXdJUkN5R3dVS0sxZ2gyQnYwV1RBeEFRNERCd2NVRmpNeU5qVXpCZ1lqSWlZMU5EYzNOalVURkFZaUpqVTBOaklXQWt3QktXQzRDd0owYldSOXVRTGh0OFRXb0cxQ3dUZHNPRGhzTndLb2FuOTJ3V01sYlhOeFc2SE15Yk90cjNGT2tnRTlMVDQrTFN3OFBBQUMvL0lBQUFkWEJiQUFEd0FTQUhjQXNBQkZXTEFHTHh1eEJodytXYkFBUlZpd0FDOGJzUUFRUGxtd0FFVllzQVF2RzdFRUVENVpzaEVHQUJFU09iQVJMN0lDQVFvcldDSFlHL1Jac0FZUXNnZ0JDaXRZSWRnYjlGbXlDd0FHRVJJNXNBc3ZzZ3dCQ2l0WUlkZ2I5Rm13QUJDeURnRUtLMWdoMkJ2MFdiSVNCZ0FSRWprd01TRWhBeUVESXdFaEZTRVRJUlVoRXlFQklRTUhWL3lORC8zTXplSURjQU8zL1UwVUFrNzl1QllDd2ZxdkFjZ2ZBV0grbndXd21QNHBsLzN0QVhnQzNRQUJBRmtBemdQZEJHTUFDd0E0QUxBREw3SUpEQU1SRWptd0NTK3lDZ2tERVJJNXNnUURDUkVTT2JJQkNnUVJFam13QXhDd0JkQ3lCd1FLRVJJNXNBa1FzQXZRTURFVEFRRTNBUUVYQVFFSEFRRlpBVXIrdUhjQlNRRkpkLzY0QVVwMy9yWCt0UUZKQVZBQlQzditzUUZQZS82eC9yQjdBVkgrcndBQUF3QjIvNk1GSFFYc0FCY0FJQUFwQUdheUJDb3JFUkk1c0FRUXNCM1FzQVFRc0NiUUFMQUFSVml3RUM4YnNSQWNQbG13QUVWWXNBUXZHN0VFRUQ1WnNob1FCQkVTT2JJakVBUVJFam13SXhDd0c5Q3dFQkN5SFFFS0sxZ2gyQnYwV2JBYUVMQWswTEFFRUxJbUFRb3JXQ0hZRy9SWk1ERUJGQUlFSXlJbkJ5TTNKaEUxTkJJa016SVhOek1IRmhNRkZCY0JKaU1pQWdjRk5DY0JGak15RWpjRkNaRCsrTENyZzJHT2tMNlNBUXVzMXBSbmpaK0pBdndzWWdJMFpxYTIwUU1ERlRqOTIxdDV1c3dEQXFuVy9zR29VcHZud0FGb1U5SUJRcXQ5cGYrNy90cGo5STBEaUcvKzYvWU50b1A4ajBBQkQvMEFBZ0NtQUFBRVhRV3dBQTBBRmdCWHNna1hHQkVTT2JBSkVMQVEwQUN3QUVWWXNBQXZHN0VBSEQ1WnNBQkZXTEFMTHh1eEN4QStXYklCQUFzUkVqbXdBUyt5RUFBTEVSSTVzQkF2c2drQkNpdFlJZGdiOUZtd0FSQ3lEZ0VLSzFnaDJCdjBXVEF4QVJFaE1oWVdGUlFFSXlFUkl4RVRFU0V5TmpVMEppY0JZQUVYazl4My92amovdTY2dWdFVmpxQ2dpQVd3L3R0cHduN0M1LzdIQmJEK1EvM2VsM2g3bHdFQUFRQ0wvK3dFYWdZU0FDb0FhYkloS3l3UkVqa0FzQUJGV0xBRkx4dXhCUjQrV2JBQVJWaXdFeThic1JNUVBsbXdBRVZZc0FBdkc3RUFFRDVac2dvVEJSRVNPYklPQlJNUkVqbXdFeEN5R2dFS0sxZ2gyQnYwV2JJZ0V3VVJFam15SXdVVEVSSTVzQVVRc2lnQkNpdFlJZGdiOUZrd01TRWpFVFEyTXpJV0ZSUUdGUlFlQWhVVUJpTWlKaWMzRmhZek1qWTFOQzRDTlRRMk5UUW1JeUlSQVVTNXo3cTB4WUJMdkZiTHRsRzFKaXN4aHpWcmNVcTlWNHRvV05vRVY5RHJzNTk5eTBVelg1Q0lUSit5TEJ5YklDeGVValJnazRwUldjOVVYbXYrMndBREFFNy83QVo4QkU0QUtnQTFBRDBBeHJJQ1BqOFJFam13QWhDd0x0Q3dBaEN3T2RBQXNBQkZXTEFYTHh1eEZ4ZytXYkFBUlZpd0hTOGJzUjBZUGxtd0FFVllzQUF2RzdFQUVENVpzQUJGV0xBRkx4dXhCUkErV2JJQ0hRQVJFam15REFVWEVSSTVzQXd2dEw4TXp3d0NYYkFYRUxJUUFRb3JXQ0hZRy9SWnNoTU1GeEVTT2JJYUhRQVJFam15T2gwQUVSSTVzRG92dEw4Nnp6b0NYYkloQVFvcldDSFlHL1Jac0FBUXNpVUJDaXRZSWRnYjlGbXlLQjBBRVJJNXNDdlFzQXdRc2k4QkNpdFlJZGdiOUZtd0VCQ3dOdEF3TVFVZ0p3WUdJeUltTlRRMk16TTFOQ1lqSWdZVkp6UTJNeklXRnpZMk16SVNGUlVoRmhZek1qYzNGd1lsTWpZM05TTUdCaFVVRmdFaUJnY2hOVFFtQk83Kys0aEI0bzJudk9QZDMyNW9hWXk0OHJ0enNESS9ybW5TNlAwb0I2NlZsSGt2UUo3OENVaWVNdVIxakdvRFVIT1ZFUUlhaGhTMFZsNnRsNTJ1Vld0N2JsRVRqN1ZUVTA5WC92L3BjN0MvVEIrSWVaWktOdTBDYmxOTlhRTTBxNHNmaEpNQUFBSUFmdi9zQkMwR0xBQWRBQ3NBVkxJSExDMFJFam13QnhDd0tOQUFzQUJGV0xBWkx4dXhHUjQrV2JBQVJWaXdCeThic1FjUVBsbXlEeGtIRVJJNXNBOHZzaEVaQnhFU09iSWlBUW9yV0NIWUcvUlpzQWNRc2lnQkNpdFlJZGdiOUZrd01RRVNFUlVVQmdZaklpWW1OVFEyTmpNeUZ5WW5CeWMzSmljM0ZoYzNGd01uSmlZaklnWVZGQll6TWpZMUF6VDVkZGlHaDl4NWNNK0JvM2t3amRwSndJUzNPZSt2dlVsb0FpR0xYSkdpcDRCOW1RVVYvdmorWjEyZS9aQ0I0SWFUNllKeXc0MlVZNE5iTVo4Mmk0RmsvUE00UFVtL3A0ekU0cmdBQUFNQVJ3Q3NCQzBFdWdBREFBMEFGd0JPc2djWUdSRVNPYkFIRUxBQTBMQUhFTEFSMEFDd0FpK3lBUUVLSzFnaDJCdjBXYkFDRUxFTUNpdFkyQnZjV2JFR0NpdFkyQnZjV2JBQkVMRVFDaXRZMkJ2Y1diRVdDaXRZMkJ2Y1dUQXhBU0UxSVFFME5qSVdGUlFHSWlZUk5EWXlGaFVVQmlJbUJDMzhHZ1BtL2FBNWNqczdjams1Y2pzN2Nqa0NXTGdCT2pCQVFEQXZQajc4L2pCQVFEQXVQejhBQUFNQVcvOTZCRFFFdUFBVkFCMEFKZ0Jqc2dRbktCRVNPYkFFRUxBYjBMQUVFTEFqMEFDd0FFVllzQVF2RzdFRUdENVpzQUJGV0xBUEx4dXhEeEErV2JJakFRb3JXQ0hZRy9SWnNpRWpCQkVTT2JBaEVMQVkwTEFFRUxJYkFRb3JXQ0hZRy9SWnNoa2JEeEVTT2JBWkVMQWcwREF4RXpRMk5qTXlGemN6QnhZUkZBWUdJeUluQnlNM0poTVVGd0VtSXlJR0JUUW5BUll6TWpZMVczdmhqMjVlU1h4bXczemdrR2hXU254a3pibGhBVmMrU0lxb0FtWlgvcXczUW91bkFpZWYvWXNxbE0yYS9zQ2Uvb2tqbGN1VkFUZkNid0sySU5xMXRtLzlVQm5idVFBQ0FKWCtZQVFuQmdBQUR3QWFBR1N5R0JzY0VSSTVzQmdRc0F6UUFMQUlMN0FBUlZpd0RDOGJzUXdZUGxtd0FFVllzQVl2RzdFR0VqNVpzQUJGV0xBREx4dXhBeEErV2JJRkRBTVJFam15Q2d3REVSSTVzQXdRc2hNQkNpdFlJZGdiOUZtd0F4Q3lHQUVLSzFnaDJCdjBXVEF4QVJRQ0l5SW5FU01STXhFMk16SVNFU2MwSmlNaUJ4RVdNekkyQkNmaXdjVnh1Ymx4d3NQanVaeUlxRlJUcTRXZEFoSDMvdEo5L2ZjSG9QM0toUDdhL3ZvRXQ5U1YvZnVVMHdBQUFnQWRBQUFGaUFXd0FCTUFGd0JyQUxBQVJWaXdEeThic1E4Y1BsbXdBRVZZc0Fndkc3RUlFRDVac2hRSUR4RVNPYkFVTDdJUUZBOFJFam13RUMrd0FOQ3dFQkN5RndFS0sxZ2gyQnYwV2JBRDBMQUlFTEFGMExBVUVMSUhBUW9yV0NIWUcvUlpzQmNRc0FyUXNCQVFzQTNRc0E4UXNCTFFNREVCTXhVakVTTVJJUkVqRVNNMU14RXpFU0VSTXdFaE5TRUZBb2FHd2YwandZYUd3UUxkd2Z4aUF0MzlJd1NPanZ3QUFxSDlYd1FBamdFaS90NEJJdjJPd2dBQkFKc0FBQUZWQkRvQUF3QWRBTEFBUlZpd0FpOGJzUUlZUGxtd0FFVllzQUF2RzdFQUVENVpNREVoSXhFekFWVzZ1Z1E2QUFBQkFKb0FBQVEvQkRvQURBQm9BTEFBUlZpd0JDOGJzUVFZUGxtd0FFVllzQWd2RzdFSUdENVpzQUJGV0xBQ0x4dXhBaEErV2JBQVJWaXdDeThic1FzUVBsbXdBaEN3QnRDd0JpK3lud1lCWGJTL0JzOEdBbDJ5THdZQlhiTC9CZ0Zkc2dFQkNpdFlJZGdiOUZteUNnRUdFUkk1TURFQkl4RWpFVE1STXdFekFRRWpBYjlydXJwYkFZM2YvandCNk9rQnpmNHpCRHIrTmdISy9mUDkwd0FBQVFBaUFBQUVHd1d3QUEwQVd3Q3dBRVZZc0F3dkc3RU1IRDVac0FCRldMQUdMeHV4QmhBK1diSUJEQVlSRWptd0FTK3dBTkN3QVJDeUFnRUtLMWdoMkJ2MFdiQUQwTEFHRUxJRUFRb3JXQ0hZRy9SWnNBTVFzQWpRc0FuUXNBQVFzQXZRc0FyUU1ERUJKUlVGRVNFVklSRUhOVGNSTXdGcEFRZisrUUt5L0kyR2hzRURTMVI5VlAzUG5RS1JLbjBxQXFJQUFBRUFJZ0FBQWdvR0FBQUxBRW9Bc0FCRldMQUtMeHV4Q2g0K1diQUFSVml3QkM4YnNRUVFQbG15QVFRS0VSSTVzQUV2c0FEUXNBRVFzZ0lCQ2l0WUlkZ2I5Rm13QTlDd0J0Q3dCOUN3QUJDd0NkQ3dDTkF3TVFFM0ZRY1JJeEVITlRjUk13RnNucDY2a0pDNkEyVTllejM5RmdLak4zczNBdUlBQVFDaS9rc0U4UVd3QUJNQVdySUdGQlVSRWprQXNBQkZXTEFBTHh1eEFCdytXYkFBUlZpd0VDOGJzUkFjUGxtd0FFVllzQVF2RzdFRUVqNVpzQUJGV0xBT0x4dXhEaEErV2JBRUVMSUpBUW9yV0NIWUcvUlpzZzBPRUJFU09iSVNEZ0FSRWprd01RRVJGQVlqSWljM0ZqTXlOVFVCRVNNUk13RVJCUEdybkQwMkRpVTlpUDB6d01BQ3pRV3crZjJvdWhLYUR0QkhCR3I3bGdXdys1Z0VhQUFBQVFDUi9rc0Q4QVJPQUJvQVliSU5HeHdSRWprQXNBQkZXTEFETHh1eEF4ZytXYkFBUlZpd0FDOGJzUUFZUGxtd0FFVllzQW92RzdFS0VqNVpzQUJGV0xBWUx4dXhHQkErV2JJQkdBTVJFam13Q2hDeUR3RUtLMWdoMkJ2MFdiQURFTElWQVFvcldDSFlHL1JaTURFQkZ6WXpNaFlYRVJRR0l5SW5OeFl6TWpVUk5DWWpJZ2NSSXhFQk53MTB5N080QXFlYlBUWU9JMEtKYjMydlVib0VPcHF1ME12ODlLUzRFcDBOd2dMM2k0Q0YvTlFFT2dBQ0FHai82d2NKQmNRQUZ3QWpBSkd5QVNRbEVSSTVzQUVRc0JyUUFMQUFSVml3REM4YnNRd2NQbG13QUVWWXNBNHZHN0VPSEQ1WnNBQkZXTEFBTHh1eEFCQStXYkFBUlZpd0F5OGJzUU1RUGxtd0RoQ3lFQUVLSzFnaDJCdjBXYklUQUE0UkVqbXdFeSt5RkFFS0sxZ2gyQnYwV2JBQUVMSVdBUW9yV0NIWUcvUlpzQU1Rc2hnQkNpdFlJZGdiOUZtd0RCQ3lIUUVLSzFnaDJCdjBXVEF4SVNFR0l5SW1BaWNSTkJJMk16SVhJUlVoRVNFVklSRWhCVEkzRVNZaklnWUhFUlFXQnduOHNMSnlvdjZNQVl2K29ueXFBMGI5TFFKMy9Za0MzZnVNY1dadGJLM0NBc01WbGdFUHF3RTFyQUVSbHhTZS9peWQvZndiRGdTT0QrWFAvc2ZUNndBQUF3QmgvK3dIQUFST0FDQUFMQUEwQUpheUJqVTJFUkk1c0FZUXNDYlFzQVlRc0REUUFMQUFSVml3QkM4YnNRUVlQbG13QUVWWXNBb3ZHN0VLR0Q1WnNBQkZXTEFYTHh1eEZ4QStXYkFBUlZpd0hTOGJzUjBRUGxteUJ3b1hFUkk1c2pFS0Z4RVNPYkF4TDdJT0FRb3JXQ0hZRy9SWnNCY1FzaElCQ2l0WUlkZ2I5Rm15RkFvWEVSSTVzaG9LRnhFU09iQWswTEFFRUxJcUFRb3JXQ0hZRy9SWnNDM1FNREVUTkRZMk16SVdGelkyTXpJV0ZSVWhGaFl6TWpjWEJpTWlKaWNHQmlNaUFEVVhGQll6TWpZMU5DWWpJZ1lsSWdZSElUVTBKbUY1MjQ2SnlUMUJ4SERQNnYweUI2U0d2SGhLaWZXSHpUOCt4NGJjL3ZpNW9JdUpvS0dLaDZJRUxXT1dGZ0lPaVFJbm9QNkpkV1JtYy83cmRLckZiSDZFY0dSamNRRXcvZ20zMk5mT3R0blcxcU9LR24yV0FBQUJBS0FBQUFLQ0JoVUFEQUF5c2dNTkRoRVNPUUN3QUVWWXNBUXZHN0VFSGo1WnNBQkZXTEFBTHh1eEFCQStXYkFFRUxJSkFRb3JXQ0hZRy9SWk1ERXpFVFkyTXpJWEJ5WWpJaFVSb0FHd29qdFVGeWd6dHdTdXFiNFZqZ3ZkKzJBQUFBSUFYZi9zQlJJRnhBQVhBQjhBVzdJQUlDRVJFam13R05BQXNBQkZXTEFRTHh1eEVCdytXYkFBUlZpd0FDOGJzUUFRUGxteUJSQUFFUkk1c0FVdnNCQVFzZ2tCQ2l0WUlkZ2I5Rm13QUJDeUdBRUtLMWdoMkJ2MFdiQUZFTEliQVFvcldDSFlHL1JaTURFRklBQVJOU0UxRUFJaklnY0hKemMyTXlBQUVSVVVBZ1FuTWhJM0lSVVVGZ0s1L3VQK3dRUDA5TjJsaXowdkZwN29BUzRCWkp6KzZxZXAzZy84ejlNVUFWa0JSWFVIQVFJQkhEb2FqdzFZL29mK3NWVEYvcisybmdFRjJ5TGE1QUFCLytUK1N3SzhCaFVBSGdCeHNoUWZJQkVTT1FDd0FFVllzQlV2RzdFVkhqNVpzQUJGV0xBUUx4dXhFQmcrV2JBQVJWaXdIUzhic1IwWVBsbXdBRVZZc0FVdkc3RUZFajVac0IwUXNnQUJDaXRZSWRnYjlGbXdCUkN5Q2dFS0sxZ2gyQnYwV2JBQUVMQU8wTEFQMExBVkVMSWFBUW9yV0NIWUcvUlpNREVCSXhFVUJpTWlKemNXTXpJMk5SRWpOVE0xTmpZek1oY0hKaU1pQnhVekFtRExxSm85TWc0ZVEwRkhxNnNDcjZFN1ZCWW1QS3NFeXdPcisvNm50eEtURFdoY0JBU1BlS2U4RlpNS3czb0FBQUlBWmYvc0JaMEdOd0FYQUNVQVU3SUVKaWNSRWptd0JCQ3dJdEFBc0FCRldMQU5MeHV4RFJ3K1diQUFSVml3QkM4YnNRUVFQbG15RHcwRUVSSTVzQThRc0JYUXNBMFFzaHNCQ2l0WUlkZ2I5Rm13QkJDeUlnRUtLMWdoMkJ2MFdUQXhBUlFDQkNNaUpBSW5OVFFTSkRNeUZ6WTJOVE1RQlJZWEJ4QUNJeUlDQnhVVUVqTXlFaEVFK0pEKytMQ3IvdmFWQVpJQkM2endtMkJkcC83NVlRRyt6NzIyMFFQVHViL0xBcW5XL3NHb3FBRSt6MlRTQVVHc213ZURoUDZ6UGF6MkJBRUNBUmIrNi9acisvN2hBUm9CQVFBQUFnQmIvK3dFdWdTd0FCWUFJd0JUc2hNa0pSRVNPYkFURUxBYTBBQ3dBRVZZc0FRdkc3RUVHRDVac0FCRldMQVRMeHV4RXhBK1diSUdCQk1SRWptd0JoQ3dETkN3RXhDeUdnRUtLMWdoMkJ2MFdiQUVFTEloQVFvcldDSFlHL1JaTURFVE5EWTJNeklYTmpZMU14QUhGaFVWRkFZR0l5SUFOUmNVRmpNeU5qVTFOQ1lqSWdaYmUrR1B6NGhIUUpiUFNYemdrTjcrOGJtbmpZdW5xWXVLcUFJbm4vMkxpZ2hrZ1A3ZE00cXBGcDcraVFFeit3bTAydHU1RUxYYTJnQUFBUUNNLyt3R0hRWUNBQm9BVExJTUd4d1JFamtBc0FCRldMQVNMeHV4RWh3K1diQUFSVml3R2k4YnNSb2NQbG13QUVWWXNBMHZHN0VORUQ1WnNnRU5HaEVTT2JBQkVMQUkwTEFORUxJV0FRb3JXQ0hZRy9SWk1ERUJGVFkyTlRNVUJnY1JCZ0lIQnlJQUp4RXpFUlFXTXpJMk5SRUVxbk5objdIQ0FmVFRTZS8rNUFLK3JxR2pyUVd3MVF1Sms5TFJEUDEreC83OEZnUUJBdUlENFB3bW5xK3VuZ1BiQUFFQWlQL3NCUThFa0FBWkFHQ3lCeG9iRVJJNUFMQUFSVml3RXk4YnNSTVlQbG13QUVWWXNBMHZHN0VOR0Q1WnNBQkZXTEFJTHh1eENCQStXYkFBUlZpd0JTOGJzUVVRUGxteUZRZ1RFUkk1c0JVUXNBUFFzZ1lJRXhFU09iQUlFTElRQVFvcldDSFlHL1JaTURFQkZBWUhFU01uQmlNaUppY1JNeEVVTXpJM0VUTVZQZ0kxQlErVG9MQUViTkd0dFFHNXlOUkd1VVJFSFFTUXRKTUUvTHRyZjhuRkFzRDlSZmFlQXhPREFpTkliQUFCLzdUK1N3RmxCRG9BRFFBb0FMQUFSVml3QUM4YnNRQVlQbG13QUVWWXNBUXZHN0VFRWo1WnNna0JDaXRZSWRnYjlGa3dNUUVSRkFZaklpYzNGak15TmpVUkFXV3FtRHMwRGg1RFFVZ0VPdnR0cXJJU2t3MW9YQVNUQUFJQVl2L3NBK2tFVHdBVUFCd0FaYklJSFI0UkVqbXdDQkN3RmRBQXNBQkZXTEFBTHh1eEFCZytXYkFBUlZpd0NDOGJzUWdRUGxteURRQUlFUkk1c0EwdnNBQVFzaEFCQ2l0WUlkZ2I5Rm15RWdBSUVSSTVzQWdRc2hVQkNpdFlJZGdiOUZtd0RSQ3lHQUVLSzFnaDJCdjBXVEF4QVRJQUZSVVVCZ1luSWlZMU5TRW1KaU1pQnljMkFUSTJOeUVWRkJZQi85d0JEbnpZZXREcEFzMEhvWWk2ZTBtTUFRNWlseFg5ODRrRVQvN1UrU1NWK0kwQi91bDBxTWhzZlliOE5hU0pHbjJXQUFFQXFRVGtBd1lHQUFBSUFEUUFzQVF2c0FmUXNBY3Z0QThISHdjQ1hiSUZCQWNSRWprWnNBVXZHTEFCMEJtd0FTOFlzQVFRc0FMUXNnTUVCeEVTT1RBeEFSVWpKd2NqTlJNekF3YVpscFdaOW5BRTdncXFxZ3dCRUFBQUFRQ01CT01DOWdYL0FBZ0FJQUN3QkMrd0FkQ3dBUyswRHdFZkFRSmRzZ0FFQVJFU09iQUkwTEFJTHpBeEFUY3pGUU1qQXpVekFjQ1dvUDV4KzUwRlZhb0svdTRCRWdyLy93QjRCU0VEUWdXd0FRWUFjQUFBQUFvQXNBRXZzUUlEOURBeEFBRUFnUVRMQXRnRjF3QU1BQ2F5Q1EwT0VSSTVBTEFETDdJUEF3RmRzZ2tFQ2l0WUlkZ2I5Rm13QnRDd0JpK3dETkF3TVFFVUJpQW1OVE1VRmpNeU5qVUMyS1grOUthWFRFbEdUd1hYZVpPVWVFWlBUa2NBQVFDTkJPNEJhQVhDQUFnQUdMSUNDUW9SRWprQXNBY3ZzZ0lGQ2l0WUlkZ2I5Rmt3TVJNME5qSVdGQVlpSm8wM2JEZzRiRGNGVnkwK1BsbzhQQUFDQUhrRXRBSW5CbEFBQ1FBVUFDcXlBeFVXRVJJNXNBTVFzQTNRQUxBREw3QUgwTEFITDdJL0J3RmRzQU1Rc0EzUXNBY1FzQkxRTURFQkZBWWpJaVkwTmpJV0JSUVdNekkyTkNZaklnWUNKM3hiWEh0N3VIdit0VU14TUVSRE1USkNCWUJYZFhhc2VucFdMMFJDWWtWR0FBQUJBREwrVHdHU0FEZ0FFQUF1c2dVUkVoRVNPUUN3RUMrd0FFVllzQW92RzdFS0VqNVpzZ1VEQ2l0WUlkZ2I5Rm0yRHhBZkVDOFFBMTB3TVNFSEJoVVVNekkzRndZaklpWTFORFkzQVg0NmNVNHdOQTFHV2xsbmhuc3RXMVpJR25rc2FGWlptamdBQUFFQWV3VFpBejRGNkFBWEFENEFzQU12c0FqUXNBZ3Z0QThJSHdnQ1hiQURFTEFMMExBTEw3QUlFTElQQXdvcldDSFlHL1Jac0FNUXNoUURDaXRZSWRnYjlGbXdEeEN3RjlBd01RRVVCaU1pTGdJaklnWVZKelEyTXpJZUFqTXlOalVEUG50Y0tUeGhLeHdwT254NVhTTTRZRE1mS3prRjNHeUdGRDROUHpFSGE0d1VPaEpFTFFBQ0FGNEUwQU1zQmY4QUF3QUhBRHNBc0FJdnNBRFFzQUF2dEE4QUh3QUNYYkFDRUxBRDBCbXdBeThZc0FBUXNBWFFzQVV2c0FJUXNBYlFzQVl2c0FNUXNBZlFHYkFITHhnd01RRXpBU01ETXdNakFsM1Avdk9wYmNYYWxnWC8vdEVCTC83UkFBQUNBSDcrYXdIVi83VUFDd0FXQURRQXNBTXZRQXNBQXhBRElBTXdBMEFEQlYyd0NkQ3dDUzlBQ1RBSlFBbFFDV0FKQkYyeUFBa0JYYkFPMExBREVMQVUwREF4RnpRMk16SVdGUlFHSXlJbU54UVdNalkxTkNZaklnWitaRXBIWW1CSlRHSlhORVl3TUNNbE12SkdZV0JIUmwxZVJTTXdNQ01rTWpRQUFmeW5CTmorU0FYK0FBTUFIZ0N3QVMrd0FOQVpzQUF2R0xBQkVMQUMwTEFDTDdRUEFoOENBbDB3TVFFakFUUCtTSi8rL3VBRTJBRW1BQUg5YndUWS94QUYvZ0FEQUI0QXNBSXZzQUhRc0FFdnRBOEJId0VDWGJBQ0VMQUQwQm13QXk4WU1ERUJNd0VqL2pEZy92U1ZCZjcrMnYvLy9Jc0UyZjlPQmVnQUJ3Q2svQkFBQUFBQi9WNEUyZjZVQm5RQURnQXVBTEFBTDdJUEFBRmRzQWZRc0FjdlFBa1BCeDhITHdjL0J3UmRzQWJRc2dFQUJoRVNPYklOQUFjUkVqa3dNUUVuTmpZMEppTTNNaFlWRkFZSEIvMTBBVXRHVzBzSGxacE9UUUVFMlprRkhrNG5hbWRWUFZBTFJ3QUMvQ2NFNVA4SEJlNEFBd0FIQURjQXNBRXZzQURRR2JBQUx4aXdBUkN3QmRDd0JTK3dCdEN3QmkrMkR3WWZCaThHQTEyd0E5Q3dBeSt3QUJDd0JOQVpzQVF2R0RBeEFTTUJNd0VqQXpQK0Fxbit6dUVCLzViMnpnVGtBUXIrOWdFS0FBSDlPUDZpL2hQL2RnQUlBQkVBc0FJdnNnY0ZDaXRZSWRnYjlGa3dNUVUwTmpJV0ZBWWlKdjA0TjJ3NE9HdzM5UzArUGxvOFBBQUFBUUMzQk80Qm13WS9BQU1BSFFDd0FpK3dBTkN3QUMreUR3QUJYYklEQWdBUkVqa1pzQU12R0RBeEV6TURJKzJ1ZEhBR1AvNnZBQUFEQUhFRThBT0RCb2dBQXdBTUFCVUFOd0N3Q3krd0F0Q3dBaSt3QWRDd0FTK3dBaEN3QTlBWnNBTXZHTEFMRUxJR0JRb3JXQ0hZRy9SWnNBL1FzQXNRc0JUUXNCUXZNREVCTXdNakJUUTJNaFlVQmlJbUpUUTJNaFlVQmlJbUFlRzhaWWYrd0Rkc09EaHNOd0kzTjJ3NE9HdzNCb2orK0NVdFBUMWFQRHdyTFQ0K1dqdzgvLzhBa3dKckFYa0RTUUVHQUhnQUFBQUdBTEFDTHpBeEFBRUFzUUFBQkRBRnNBQUZBQ3NBc0FCRldMQUVMeHV4QkJ3K1diQUFSVml3QWk4YnNRSVFQbG13QkJDeUFBRUtLMWdoMkJ2MFdUQXhBU0VSSXhFaEJERDlRc0VEZndVUyt1NEZzQUFDQUI4QUFBVnpCYkFBQXdBR0FDOEFzQUJGV0xBQUx4dXhBQncrV2JBQVJWaXdBaThic1FJUVBsbXlCQUVLSzFnaDJCdjBXYklHQWdBUkVqa3dNUUV6QVNFbElRRUNocW9DUS9xc0FRWURUUDVuQmJENlVKMEVLQUFEQUdmLzdBVDZCY1FBQXdBVkFDTUFkN0lJSkNVUkVqbXdDQkN3QWRDd0NCQ3dJTkFBc0FCRldMQVJMeHV4RVJ3K1diQUFSVml3Q0M4YnNRZ1FQbG15QWdnUkVSSTVzQUl2c3M4Q0FWMnkvd0lCWGJJdkFnRmR0TDhDendJQ2NiSUJBUW9yV0NIWUcvUlpzQkVRc2hrQkNpdFlJZGdiOUZtd0NCQ3lJQUVLSzFnaDJCdjBXVEF4QVNFMUlRVVVBZ1FqSWlRQ0p6VTBFaVF6TWdRU0Z3Y1FBaU1pQWdjVkZCSXpNaEkzQThEOSt3SUZBVHFQL3ZpeHJQNzJrd0tTQVF1c3J3RUlrUUsvMEx1MjBRUFJ1N3JNQXdLVG1JTFYvc0txcVFFNXptblNBVUtycVA3Rnp3c0JBd0VWL3V2MmEvcis0QUVQL1FBQkFESUFBQVVEQmJBQUJnQXhBTEFBUlZpd0F5OGJzUU1jUGxtd0FFVllzQUV2RzdFQkVENVpzQUJGV0xBRkx4dXhCUkErV2JJQUF3RVJFamt3TVFFQkl3RXpBU01DbXY1bXpnSVNyQUlUendTSiszY0ZzUHBRQUFBREFIZ0FBQVFoQmJBQUF3QUhBQXNBVHdDd0FFVllzQWd2RzdFSUhENVpzQUJGV0xBQ0x4dXhBaEErV2JJQUFRb3JXQ0hZRy9SWnNBSVFzQVhRc0FVdnNpOEZBVjJ5QmdFS0sxZ2gyQnYwV2JBSUVMSUtBUW9yV0NIWUcvUlpNREUzSVJVaEV5RVZJUU1oRlNGNEE2bjhWMWNDOHYwT1V3T1UvR3lkblFNL25RTU9uZ0FCQUxJQUFBVUJCYkFBQndBNEFMQUFSVml3Qmk4YnNRWWNQbG13QUVWWXNBQXZHN0VBRUQ1WnNBQkZXTEFFTHh1eEJCQStXYkFHRUxJQ0FRb3JXQ0hZRy9SWk1ERWhJeEVoRVNNUklRVUJ3ZjB5d0FSUEJSTDY3Z1d3QUFFQVJRQUFCRVFGc0FBTUFEd0FzQUJGV0xBSUx4dXhDQncrV2JBQVJWaXdBeThic1FNUVBsbXlBUUVLSzFnaDJCdjBXYkFGMExBSUVMSUtBUW9yV0NIWUcvUlpzQWZRTURFQkFTRVZJVFVCQVRVaEZTRUJBdkwrUXdNUC9BRUI0ZjRmQTg3OUpBRzdBczc5ejUyUEFrb0NSNUNlL2RRQUFBTUFUUUFBQlhRRnNBQVVBQnNBSXdCc3Nnb2tKUkVTT2JBS0VMQVYwTEFLRUxBYzBBQ3dBRVZZc0JNdkc3RVRIRDVac0FCRldMQUpMeHV4Q1JBK1diSVNFd2tSRWptd0VpK3dBTkN5Q0FrVEVSSTVzQWd2c0F2UXNBZ1FzaDBCQ2l0WUlkZ2I5Rm13RmRDd0VoQ3lGZ0VLSzFnaDJCdjBXYkFjMERBeEFUSUVGaFVVQmdRakZTTTFJaVFtRURZMk16VXpBeEVqSWdZUUZnRVJNekkyTlRRbUEwS2dBUU9Qa3Y4QW9NS2kvdjZQa2YrandzSUZyTVBDQVhRRXJNUERCUGVNL0p1ZC9ZdXZyNDM2QVRqOWpMbjduZ01LMHY2WTBBTUsvUGJSdGJQUkFBQUJBRm9BQUFVaEJiQUFHQUJjc2dBWkdoRVNPUUN3QUVWWXNBUXZHN0VFSEQ1WnNBQkZXTEFSTHh1eEVSdytXYkFBUlZpd0Z5OGJzUmNjUGxtd0FFVllzQXN2RzdFTEVENVpzaFlFQ3hFU09iQVdMN0FBMExBV0VMSU5BUW9yV0NIWUcvUlpzQXJRTURFQk5qWTFFVE1SRkFZR0J4RWpFU1lBSnhFekVSWVdGeEV6QXhhY3JzRi83Wi9CNS83dkE4QUJwWlhCQWdzWDE2b0NEZjN3bi9XVEQvNldBV29YQVNydEFoajk3NlBYR1FPa0FBQUJBSEVBQUFUTEJjUUFKQUJjc2hrbEpoRVNPUUN3QUVWWXNCa3ZHN0VaSEQ1WnNBQkZXTEFPTHh1eERoQStXYkFBUlZpd0l5OGJzU01RUGxtd0RoQ3lFQUVLSzFnaDJCdjBXYkFOMExBQTBMQVpFTElHQVFvcldDSFlHL1Jac0JBUXNDSFFzQ0xRTURFbE5oSTNOVFFtSUFZVkZSUVNGeFVoTlRNbUFqVTFOQkkyTXpJV0VoY1ZGQUlITXhVaEF1R0ttZ1BDL3E3QW5aSCtGTjFxZUkzK29hRDlqZ040YXR6K0hLSWJBUnpxaHVmMit1Vng4UDdZSEtLZFpnRXpvbSs2QVNTZm5QN2t0SUtnL3MxbW5RQUFBZ0JrLytzRWR3Uk9BQllBSVFCOHNoOGlJeEVTT2JBZkVMQVQwQUN3QUVWWXNCTXZHN0VUR0Q1WnNBQkZXTEFXTHh1eEZoZytXYkFBUlZpd0NDOGJzUWdRUGxtd0FFVllzQXd2RzdFTUVENVpzQWdRc2dNQkNpdFlJZGdiOUZteUNoTUlFUkk1c2hVVENCRVNPYkFNRUxJYUFRb3JXQ0hZRy9SWnNCTVFzaDhCQ2l0WUlkZ2I5Rmt3TVFFUkZqTXlOeGNHSXlJbkJpTWlBalUxRUJJek1oYzNBUlFXTXpJM0VTWWpJZ1lEN2dKT0V3OFhNRXFUSm12UndPVGl4TXRyRWYzTWtvZXRVbFdvaHBVRU92empqQVdKSXFXbEFSdjBEd0VJQVQyaGpmMjZyOE82QWI2ODR3QUFBZ0NnL29BRVRRWEVBQlFBS2dCcHNnQXJMQkVTT2JBWTBBQ3dEeSt3QUVWWXNBQXZHN0VBSEQ1WnNBQkZXTEFNTHh1eERCQStXYklvQUF3UkVqbXdLQyt5SlFFS0sxZ2gyQnYwV2JJR0pTZ1JFam15RGd3QUVSSTVzQUFRc2hnQkNpdFlJZGdiOUZtd0RCQ3lId0VLSzFnaDJCdjBXVEF4QVRJV0ZSUUdCeFlXRlJRR0l5SW5FU01STkRZMkFUUW1JeUlHQnhFV0ZqTXlOalUwSmljak5UTXlOZ0pkd2V0aVdIdUQrYzIxZUxwNnp3Rm5pR3RzbGdFc2tGNkdtb3h0bGxWNGZnWEUyNjVibUM0dHc0TE43MS8rTlFXeGJMeHIvbnRtaDQ1ci9NTTBQNkNCZHFVRG1IY0FBUUF1L21BRDN3UTZBQWdBT0xJQUNRb1JFamtBc0FCRldMQUJMeHV4QVJnK1diQUFSVml3Qnk4YnNRY1lQbG13QUVWWXNBUXZHN0VFRWo1WnNnQUhCQkVTT1RBeEFRRXpBUkVqRVFFekFnb0JHTDMraGJyK2hMMEJGQU1tKy8vK0p3SGdBL29BQWdCZy8rd0VKd1ljQUI0QUtnQmVzaFFyTEJFU09iQVVFTEFpMEFDd0FFVllzQU12RzdFREhqNVpzQUJGV0xBVUx4dXhGQkErV2JBREVMSUlBUW9yV0NIWUcvUlpzaHNVQXhFU09iQWJMN0lvQ3dvcldDSFlHL1Jac0F6UXNCUVFzaUlCQ2l0WUlkZ2I5Rmt3TVJNME5qTXlGd2NtSXlJR0ZSUUVFaGNWRkFZR0l5SUFOVFUwRWpjbkppWVRGQll6TWpZMU5DWW5JZ2JkeTYrTGhnS1hmRlpsQWJ2UEJYYmJrZDcrK2J5UUFXTnJQcUdKaUtDcGZZaWtCUFdJbnplZ08wZytiSm4rODhRbm1mT0ZBU2Z5RGFVQkNDTUZKNHo5WTdETHlzYUkyeG5OQUFFQVkvL3NBK3dFVFFBbEFHK3lBeVluRVJJNUFMQUFSVml3RlM4YnNSVVlQbG13QUVWWXNBb3ZHN0VLRUQ1WnNnTUJDaXRZSWRnYjlGbXdDaEN3QnRDd0NoQ3dJdEN3SWkreUx5SUJYYksvSWdGZHNpTUJDaXRZSWRnYjlGbXlEeU1pRVJJNXNoa1ZJaEVTT2JBVkVMSWNBUW9yV0NIWUcvUlpNREVCRkJZek1qWTFNeFFHSXlJbU5UUTNKaVkxTkRZek1oWVZJelFtSXlJR0ZSUXpNeFVqQmdFZWszWnhtN24veHN6NHpWaGk1OHE2K2JtUGEzQ0g5TVRnNmdFd1RXSnVVWnU1c1pPNlFpUjZTWlNtczQ1R1pWdEtvSlFHQUFFQWJmNkJBOE1Gc0FBZkFFdXlDQ0FoRVJJNUFMQVBMN0FBUlZpd0FDOGJzUUFjUGxteUhRRUtLMWdoMkJ2MFdiQUIwTElWSUFBUkVqbXlBaFVBRVJJNXNCVVFzZ2NCQ2l0WUlkZ2I5Rm15SEFBVkVSSTVNREVCRlFFR0JoVVVGaGNYRmhZVkJnWUhKelkyTlRRa0p5WW1OVFFTTndFaE5RUEQvcUtLWmtOUzkxRkhBbXhEWWk4ei9zdzJaMXVTZndFZC9ZTUZzSGorVmFIbGhWcGhHVWdZV0U1RnJEWlVOVlV0UkU0WUxabUJnZ0ZBbGdGRG1BQUJBSkgrWVFQd0JFNEFFZ0JUc2d3VEZCRVNPUUN3QUVWWXNBTXZHN0VER0Q1WnNBQkZXTEFBTHh1eEFCZytXYkFBUlZpd0J5OGJzUWNTUGxtd0FFVllzQkF2RzdFUUVENVpzZ0VRQXhFU09iQURFTElNQVFvcldDSFlHL1JaTURFQkZ6WXpNaFlYRVNNUk5DWWpJZ1lIRVNNUkFUZ0xlTWkrcmdHNWJJQmNnaUs2QkRxSW5NWE0rNlFFVVloOFYwNzg3d1E2QUFBREFIci83QVFTQmNRQURRQVdBQjRBa3JJREh5QVJFam13QXhDd0U5Q3dBeEN3RzlBQXNBQkZXTEFLTHh1eENodytXYkFBUlZpd0F5OGJzUU1RUGxteURnTUtFUkk1c0E0dnNsOE9BVjJ5L3c0QlhiU1BEcDhPQW5HMHZ3N1BEZ0p4c2k4T0FYR3l6dzRCWGJJdkRnRmR0TzhPL3c0Q2NiQUtFTElUQVFvcldDSFlHL1Jac0E0UXNoZ0JDaXRZSWRnYjlGbXdBeEN5R3dFS0sxZ2gyQnYwV1RBeEFSQUNJeUlDQXpVUUVqTXlFaE1GSVRVMEppTWlCaFVGSVJVVUZpQTJOd1FTN04vYjdnVHMzOTdyQlAwaEFpV0xpSWFNQWlYOTI1SUJCSTBDQW9EK3YvNnRBVXdCTk0wQlBRRk8vcnorelN3MzQvSHg0ODhuNWZydzR3QUFBUURELy9RQ1N3UTZBQXdBS0FDd0FFVllzQUF2RzdFQUdENVpzQUJGV0xBSkx4dXhDUkErV2JJRUFRb3JXQ0hZRy9SWk1ERUJFUlFXTXpJM0Z3WWpJaEVSQVh3M1FEQW5BVVpKK1FRNi9OYy9RQXlYRXdFbUF5QUFBUUFsLys4RU93WHVBQm9BVUxJUUd4d1JFamtBc0FBdnNBQkZXTEFMTHh1eEN4QStXYkFBUlZpd0VTOGJzUkVRUGxtd0N4Q3lCd0VLSzFnaDJCdjBXYklRQUFzUkVqbXdFQkN3RTlDd0FCQ3lGd0VLSzFnaDJCdjBXVEF4QVRJV0Z3RVdGak0zRndZaklpWW1Kd01CSXdFbkppWWpCeWMyQVFWaWVDRUJxeFF0SXlZR0pDcE5UajRkNXY3aXpnR0tZQmMxTFM4QktnWHVVRi83cXpNbkE1Z01KVlpRQWxIODlRUUY2emd1QW80TUFBRUFaZjUzQTZrRnhBQXRBRmF5QXk0dkVSSTVBTEFYTDdBQVJWaXdLeThic1NzY1BsbXlBZ0VLSzFnaDJCdjBXYklJTGlzUkVqbXdDQyt5Q1FFS0sxZ2gyQnYwV2JJZUxpc1JFam13SGhDeUR3RUtLMWdoMkJ2MFdiSWxDUWdSRWprd01RRW1JeUlHRlJRaE14VWpCZ1lWRkJZRUZoY1dGUlFHQnljM05qVTBMZ1ExTkRZM0ppWTFOQ1F6TWhjRGNvUmhqYUFCVFlXV3RzZVFBUTk4SUU5b1NHczVNVXptcVhkQnBKWjJnd0VDNUpGd0JRZ2taMVhibUFLY28zQ2RRU1VVTVdsQXB6MVVRRHcrSnk0elFtbVpiNUhMTGlxWVlKKzVKd0FCQUNuLzlBU2tCRG9BRkFCY3Nnc1ZGaEVTT1FDd0FFVllzQk12RzdFVEdENVpzQUJGV0xBS0x4dXhDaEErV2JBQVJWaXdEeThic1E4UVBsbXdFeEN5QUFFS0sxZ2gyQnYwV2JBS0VMSUZBUW9yV0NIWUcvUlpzQUFRc0EzUXNBN1FzQkhRc0JMUU1ERUJJeEVVRmpNeU54Y0dJeUlSRVNFUkl4RWpOU0VFY1p3MlFUQW5BVVpKK2Y1dnVha0VTQU9oL1hKQVFReVhFd0VtQW9mOFh3T2htUUFDQUpIK1lBUWZCRTRBRHdBYkFGZXlFaHdkRVJJNXNCSVFzQURRQUxBQVJWaXdBQzhic1FBWVBsbXdBRVZZc0Fvdkc3RUtFajVac0FCRldMQUhMeHV4QnhBK1diSUpBQWNSRWpteUVnRUtLMWdoMkJ2MFdiQUFFTElZQVFvcldDSFlHL1JaTURFQk1oSVhGeFFDSXlJbkVTTVJORFkyQXhZek1qWTFOQ1lqSWdZVkFsRFA5QXNCNEwvRGNycHh6WVJUcTRlV2tZVjFrQVJPL3ViK1F2RCs2SHo5K0FQa251eUEvTWlUdzhQTjROaXBBQUFCQUdYK2lnUGhCRTRBSWdCSnNnQWpKQkVTT1FDd0ZDK3dBRVZZc0FBdkc3RUFHRDVac0FCRldMQWJMeHV4R3hBK1diQUFFTEFFMExBQUVMSUhBUW9yV0NIWUcvUlpzQnNRc2cwQkNpdFlJZGdiOUZrd01RRXlGaFVqTkNZaklnWVZGUkFGRnhZV0ZRWUdCeWMzTmpVMEppY21BalUxTkRZMkFqMjk1NitHYjRTYkFVQ0dZbEFDWTBwaUx6RkdWdXo0ZDljRVR0VzBib1Bic3lEKy9HTW1IV0JRUDZjK1ZUWThSaXNyRXpRQkFkTXFtUHVKQUFJQVlQL3NCSHNFT2dBUkFCMEFUTElJSGg4UkVqbXdDQkN3RmRBQXNBQkZXTEFRTHh1eEVCZytXYkFBUlZpd0NDOGJzUWdRUGxtd0VCQ3lBQUVLSzFnaDJCdjBXYkFJRUxJVkFRb3JXQ0hZRy9SWnNBQVFzQnZRTURFQklSWVJGUlFHQmlNaUFEVTFORFkyTnlFQkZCWXpNalkxTkNZaklnWUVlLzdreUhyZGpOcis5bmJaakFKQS9KK2dpb3Vmb1l1Sm53T2hsUDd2RVl6cmlBRXYvdzJZOG9nQi9kZTMxOW5Mck03TUFBRUFVZi9zQTlrRU9nQVFBRW15Q2hFU0VSSTVBTEFBUlZpd0R5OGJzUThZUGxtd0FFVllzQWt2RzdFSkVENVpzQThRc2dBQkNpdFlJZGdiOUZtd0NSQ3lCQUVLSzFnaDJCdjBXYkFBRUxBTjBMQU8wREF4QVNFUkZETXlOeGNHSXlJbUp4RWhOU0VEMmY2TmFTc3hLa3hxZlhVQi9xVURpQU9rL1dtRkdvSTBrNUlDazVZQUFRQ1AvK3dEOWdRNkFCSUFQTElPRXhRUkVqa0FzQUJGV0xBQUx4dXhBQmcrV2JBQVJWaXdDQzhic1FnWVBsbXdBRVZZc0E0dkc3RU9FRDVac2dNQkNpdFlJZGdiOUZrd01RRVJFRE15TmpVbUF6TVdFUkFBSXlJbUp4RUJTY21CcWdWMnczSCsvOXJDeUFJRU92MTUvcy82dHVjQklmSCs2Zjc1L3NIZzF3S1hBQUlBVi80aUJVd0VPZ0FaQUNJQVhMSVBJeVFSRWptd0R4Q3dHdEFBc0JndnNBQkZXTEFHTHh1eEJoZytXYkFBUlZpd0VDOGJzUkFZUGxtd0FFVllzQmN2RzdFWEVENVpzQURRc0JjUXNob0JDaXRZSWRnYjlGbXdETkN3RUJDeUlBRUtLMWdoMkJ2MFdUQXhCU1FBTlRRU054Y0dCeFFXRnhFME5qTXlGaFlWRkFBRkVTTVROalkxSmlZakloVUNiUDhBL3V1QmYyV2hDcldtaW5HQzRZTCszdjc3dWJtcXhBV2xna0lSRndFeis2Z0JCMWVGalBXdDVSb0N6R2w5amZpVjgvN1hGZjR6QW1ZVzNxU3AyRklBQUFFQVgvNG9CVU1FT2dBWkFGaXlBQm9iRVJJNUFMQU5MN0FBUlZpd0FDOGJzUUFZUGxtd0FFVllzQVl2RzdFR0dENVpzQUJGV0xBVEx4dXhFeGcrV2JBQVJWaXdEQzhic1F3UVBsbXlBUUVLSzFnaDJCdjBXYkFNRUxBUDBMQUJFTEFZMERBeEFSRTJOalVtQXpNV0VSQUFCUkVqRVNZQUVSRXpFUllXRnhFREhLdkRCWHJDZHY3ai92YTUvLzc3dWdLbW9nUTYvRTRZNWJMb0FSdnMvdW4rL2Y3UUZmNDVBY2thQVRZQkV3SG0vZzdDNUJrRHNRQUJBSHIvN0FZWkJEb0FJd0Jhc2hza0pSRVNPUUN3QUVWWXNBQXZHN0VBR0Q1WnNBQkZXTEFUTHh1eEV4ZytXYkFBUlZpd0dTOGJzUmtRUGxtd0FFVllzQjR2RzdFZUVENVpzZ1VCQ2l0WUlkZ2I5Rm15Q1FBZUVSSTVzQTdRc2hzVEdSRVNPVEF4QVFJSEZCWXpNalkxRVRNUkZoWXpNalkxSmdNekZoRVFBaU1pSndZR0l5SUNFUkEzQWNTS0IzSnFiSEc3QVhGcmFuSUhpc09Iejd6d1ZTbWtkN3pQaHdRNi91WHZ5K090cGdFdC9zNmtxdUxNN3dFYjlQN3EvdTMreis1MWVRRXhBUk1CSCtzQUFBSUFlZi9zQkhrRnhnQWZBQ2dBYnJJVUtTb1JFam13RkJDd0p0QUFzQUJGV0xBWkx4dXhHUncrV2JBQVJWaXdCaThic1FZUVBsbXlIUmtHRVJJNXNCMHZzZ0lCQ2l0WUlkZ2I5Rm15Q3hrR0VSSTVzQVlRc2c4QkNpdFlJZGdiOUZtd0FoQ3dFOUN3SFJDd0k5Q3dHUkN5SmdFS0sxZ2gyQnYwV1RBeEFRWUhGUVlHSXlJbU5SRTNFUlFXTXpJMk5UVW1BRFUwTmpNeUZoVVJOamNCRkJZWEVTWWpJaFVFZVR4VEF1WEl5L2U2akh4MGd0bis4N2lXbjdJL1NQMlVvb29GazVRQ2N4Y0pwdFB1OTljQlJ3TCtzSStia3BpbUh3RWEyYUM3eGJMK29RVVRBVktGdlI0QmFNYkVBQUFCLzlvQUFBUnVCYndBR2dCSnNnQWJIQkVTT1FDd0FFVllzQVF2RzdFRUhENVpzQUJGV0xBWEx4dXhGeHcrV2JBQVJWaXdEUzhic1EwUVBsbXlBQVFORVJJNXNBUVFzZ2tCQ2l0WUlkZ2I5Rm13RXRBd01RRVROall6TWhjSEppTWlCd0VSSXhFQkppTWlCeWMyTXpJV0Z3SWs0U3RyVjBnMEpBMG5SaVQrMTcvKzJDZERKdzBrTkVkWWF5b0RCZ0g3WTFnYmx3aFAvWGY5eGdJOEFvZFBDSlljVkYwQUFnQksvK3dHR3dRNkFCSUFKZ0J3c2dnbktCRVNPYkFJRUxBZTBBQ3dBRVZZc0JFdkc3RVJHRDVac0FCRldMQUdMeHV4QmhBK1diQUFSVml3Q2k4YnNRb1FQbG13RVJDeUFBRUtLMWdoMkJ2MFdiSUlFUVlSRWptd0Q5Q3dFTkN3RmRDd0Z0Q3dDaEN5R3dFS0sxZ2gyQnYwV2JJZkNoRVJFam13Sk5Bd01RRWpGaFVRQWlNaUp3WWpJZ0lSTkRjak5TRUJKaWNoQmdjVUZqTXlOamNSTXhFV0ZqTXlOZ1liaUVDOHEvRlRVL0NxdlVCMEJkSCsvZ1JLL0x0TEJHQllhWEVDdXdKeGFsWmdBNkdzeGY3di9zM3Y3d0V3QVJTL3Nwbjk5cXJIeUtuTDQ2ZWlBUWYrK2FLbjRnQUJBQ3IvOVFXeEJiQUFHQUJoc2hFWkdoRVNPUUN3QUVWWXNCY3ZHN0VYSEQ1WnNBQkZXTEFKTHh1eENSQStXYkFYRUxJQUFRb3JXQ0hZRy9SWnNnUVhDUkVTT2JBRUw3QUpFTElLQVFvcldDSFlHL1Jac0FRUXNoQUJDaXRZSWRnYjlGbXdBQkN3RmRDd0Z0QXdNUUVoRVRZek1nUVFCQ01uTWpZMUppWWpJZ2NSSXhFaE5TRUVsUDMybllUMEFSTCsvTzBDbTVnQ282S1dpc0grWVFScUJSTCtPVER4L2s3amxwR1VqcFl1L1ZvRkVwNEFBQUVBZS8vc0JOd0Z4QUFmQUlheUF5QWhFUkk1QUxBQVJWaXdDeThic1FzY1BsbXdBRVZZc0FNdkc3RURFRDVac0FzUXNBL1FzQXNRc2hJQkNpdFlJZGdiOUZteUZnTUxFUkk1c0JZdnRMOFd6eFlDY2JMUEZnRmRzcDhXQVhHeS94WUJYYkl2RmdGZHNsOFdBWEt5anhZQmNySVhBUW9yV0NIWUcvUlpzQU1Rc2h3QkNpdFlJZGdiOUZtd0F4Q3dIOUF3TVFFR0JDTWdBQkUxTkJJa016SUFGeU1tSmlNaUFnY2hGU0VWRkJJek1qWTNCTndiL3VIdS92Nyt5WThCQzdEb0FSZ1h3Qm1ubDduT0FnSTYvY2JHc3FDckhBSE81L3NCY2dFMmk4a0JOYWYrL2VXc252N3g2cDBDN2Y3b2tiUUFBZ0F4QUFBSU93V3dBQmdBSVFCMHNna2lJeEVTT2JBSkVMQVowQUN3QUVWWXNBQXZHN0VBSEQ1WnNBQkZXTEFJTHh1eENCQStXYkFBUlZpd0VDOGJzUkFRUGxteUFRQUlFUkk1c0FFdnNBQVFzZ29CQ2l0WUlkZ2I5Rm13RUJDeUVnRUtLMWdoMkJ2MFdiQUJFTElaQVFvcldDSFlHL1Jac0JJUXNCclFzQnZRTURFQkVTRVdCQlVVQkFjaEVTRURBZ0lHQnlNMU56NENOeE1CRVNFeU5qVTBKaWNFN2dGcDNnRUcvdjdlL2RQK0FCb1BXYXlRUHloZFpEUUxIZ04zQVYrTW9wMktCYkQ5eXdQd3k4YnpCQVVTL2IvKzN2N2NpUUtkQWdkcjZ2TUN3djB0L2NDZWhJQ2NBZ0FDQUxFQUFBaE5CYkFBRWdBYkFJS3lBUndkRVJJNXNBRVFzQlBRQUxBQVJWaXdFaThic1JJY1BsbXdBRVZZc0FJdkc3RUNIRDVac0FCRldMQVBMeHV4RHhBK1diQUFSVml3REM4YnNRd1FQbG15QUFJUEVSSTVzQUF2c2dRTUFoRVNPYkFFTDdBQUVMSU9BUW9yV0NIWUcvUlpzQVFRc2hNQkNpdFlJZGdiOUZtd0RCQ3lGQUVLSzFnaDJCdjBXVEF4QVNFUk14RWhGZ1FWRkFRSElSRWhFU01STXdFUklUSTJOVFFtSndGeUFzN0FBV3JpQVFIKy85LzkwLzB5d2NFRGpnRmZqcUNZaWdNNUFuZjluZ1BpdmIvcEJBS2MvV1FGc1AwQi9mV09lblNNQXdBQkFENEFBQVhVQmJBQUZRQmRzZzRXRnhFU09RQ3dBRVZZc0JRdkc3RVVIRDVac0FCRldMQUlMeHV4Q0JBK1diQUFSVml3RUM4YnNSQVFQbG13RkJDeUFBRUtLMWdoMkJ2MFdiSUVGQWdSRWptd0JDK3lEUUVLSzFnaDJCdjBXYkFBRUxBUzBMQVQwREF4QVNFUk5qTXlGaGNSSXhFbUppTWlCeEVqRVNFMUlRU20vZkNnci9yeUE4RUJpYVNwcHNEK2FBUm9CUkwrVUNqYTNmNHRBYzZZaGlyOVBnVVNuZ0FCQUxEK21RVC9CYkFBQ3dCSUFMQUpMN0FBUlZpd0FDOGJzUUFjUGxtd0FFVllzQVF2RzdFRUhENVpzQUJGV0xBR0x4dXhCaEErV2JBQVJWaXdDaThic1FvUVBsbXlBZ0VLSzFnaDJCdjBXYkFEMERBeEV6TVJJUkV6RVNFUkl4RWhzTUVDenNEK1FNSCtNZ1d3K3UwRkUvcFEvcGtCWndBQ0FLSUFBQVN4QmJBQURBQVZBRnV5RHhZWEVSSTVzQThRc0FQUUFMQUFSVml3Q3k4YnNRc2NQbG13QUVWWXNBa3ZHN0VKRUQ1WnNBc1FzZ0FCQ2l0WUlkZ2I5Rm15QWdzSkVSSTVzQUl2c2cwQkNpdFlJZGdiOUZtd0NSQ3lEZ0VLSzFnaDJCdjBXVEF4QVNFUklSWUVGUlFFQnlFUklRRVJJVEkyTlRRbUp3UWgvVUlCYXVRQkFQNyszLzNTQTMvOVFnRmZqNStaalFVUy9rd0Q1TVRGNmdRRnNQMFEvZDJZZ0h1T0FnQUNBREwrbWdYSkJiQUFEZ0FWQUZ1eUVoWVhFUkk1c0JJUXNBdlFBTEFFTDdBQVJWaXdDeThic1FzY1BsbXdBRVZZc0FJdkc3RUNFRDVac0FRUXNBSFFzQUlRc2dZQkNpdFlJZGdiOUZtd0RkQ3dEdEN3RDlDd0VOQ3dDeEN5RVFFS0sxZ2gyQnYwV1RBeEFTTVJJUkVqQXpNMkVqY1RJUkV6SVNFUklRTUdBZ1hIdi92cndBRjNYbThPSUFObnZ2dTdBc2IrRXhVTmEvNmJBV1grbWdJRGFnRmwxUUp2K3UwRWRmNVUrLzZlQUFFQUd3QUFCelVGc0FBVkFJWUFzQUJGV0xBSkx4dXhDUncrV2JBQVJWaXdEUzhic1EwY1BsbXdBRVZZc0JFdkc3RVJIRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3Qmk4YnNRWVFQbG13QUVWWXNCUXZHN0VVRUQ1WnNBSVFzQkRRc0JBdnNpOFFBVjJ5enhBQlhiSUFBUW9yV0NIWUcvUlpzQVRRc2dnUUFCRVNPYkFRRUxBTDBMSVRBQkFSRWprd01RRWpFU01SSXdFakFRRXpBVE1STXhFekFUTUJBU01FcUp6QXBmNWs4QUhxL2p6akFZT2x3SjRCZytMK1BBSHE3d0tZL1dnQ21QMW9Bd0FDc1AySUFuajlpQUo0L1ZIOC93QUJBRkQvN0FScUJjUUFLQUJ5c2dNcEtoRVNPUUN3QUVWWXNBc3ZHN0VMSEQ1WnNBQkZXTEFXTHh1eEZoQStXYkFMRUxJREFRb3JXQ0hZRy9SWnNBc1FzQWJRc2lVV0N4RVNPYkFsTDdMUEpRRmRzcDhsQVhHeUpBRUtLMWdoMkJ2MFdiSVJKQ1VSRWptd0ZoQ3dHOUN3RmhDeUhnRUtLMWdoMkJ2MFdUQXhBVFFtSXlJR0ZTTTBOall6TWdRVkZBWUhCQlVVQkNNaUppWTFNeFFXTXpJMk5SQWxJelV6TmpZRGxLbVpnSzNBZitTSzlBRU9mRzhCQWY3YzlKSHRoTUMyakoyNy9zTzBzNUtXQkNsMGlZMW9kTGhuMjhObHBqQlcvOFRtWjc2RGM1bVNlQUVBQlo0RGZnQUJBTEVBQUFUL0JiQUFDUUJkQUxBQVJWaXdBQzhic1FBY1BsbXdBRVZZc0Fjdkc3RUhIRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3QlM4YnNRVVFQbG15QkFBQ0VSSTVRQW1LQkpvRXFnUzZCQVJkc2drQUFoRVNPVUFKaFFtVkNhVUp0UWtFWFRBeEFUTVJJeEVCSXhFekVRUS93TUQ5TThIQkJiRDZVQVJpKzU0RnNQdWVBQUFCQUM4QUFBVDJCYkFBRVFCTnNnUVNFeEVTT1FDd0FFVllzQUF2RzdFQUhENVpzQUJGV0xBQkx4dXhBUkErV2JBQVJWaXdDUzhic1FrUVBsbXdBQkN5QXdFS0sxZ2gyQnYwV2JBSkVMSUxBUW9yV0NIWUcvUlpNREVCRVNNUklRTUNBZ1lISXpVM1BnSTNFd1Qyd1AzMkdnOVpySkEvS0Yxa05Bc2VCYkQ2VUFVUy9iLyszdjdjaVFLZEFnZHI2dk1Dd2dBQUFRQk4vK3NFeXdXd0FCRUFTcklFRWhNUkVqa0FzQUJGV0xBQkx4dXhBUncrV2JBQVJWaXdFQzhic1JBY1BsbXdBRVZZc0Fjdkc3RUhFRDVac2dBQkJ4RVNPYklMQVFvcldDSFlHL1Jac2c4SEVCRVNPVEF4QVFFekFRNENJeUluTnhjeVB3SUJNd0tkQVUvZi9mMDBXbmxiVHhZR1cya3pHU2IrRU5jQ1l3Tk4rME4wWVRNSm1BUmxORmtFTmdBQUF3QlQvOFFGNHdYc0FCZ0FJUUFxQUZ1eURDc3NFUkk1c0F3UXNDRFFzQXdRc0NMUUFMQUxMN0FYTDdJVkZ3c1JFam13RlMrd0FOQ3lDUXNYRVJJNXNBa3ZzQTNRc0JVUXNoa0JDaXRZSWRnYjlGbXdDUkN5SkFFS0sxZ2gyQnYwV2JBZjBMQVpFTEFpMERBeEFUTVdCQklWRkFJRUJ5TVZJelVqSWlRQ0VCSWtNek0xTXdNaUJoVVVGak16RVRNUk16STJOVFFtSXdONEg2VUJFSmVZL3ZTa0k3b2NwLzd2bDVjQkVhY2N1dGE4MjlxL0dyb2N2OWZYd3dVZUFaais5YVdtL3ZLWEFzVEVtQUVNQVU0QkRKak8vcHZuemM3bEEyZjhtZXZLeU9vQUFBRUFyLzZoQlpjRnNBQUxBRHNBc0FrdnNBQkZXTEFBTHh1eEFCdytXYkFBUlZpd0JDOGJzUVFjUGxtd0FFVllzQW92RzdFS0VENVpzZ0lCQ2l0WUlkZ2I5Rm13QnRBd01STXpFU0VSTXhFekF5TVJJYS9CQXM3QW1SS3QrOWNGc1BydEJSUDY4ZjRBQVY4QUFBRUFsZ0FBQk1nRnNBQVNBRWF5QlJNVUVSSTVBTEFBUlZpd0FDOGJzUUFjUGxtd0FFVllzQW92RzdFS0hENVpzQUJGV0xBQkx4dXhBUkErV2JJUEFBRVJFam13RHkreUJnRUtLMWdoMkJ2MFdUQXhBUkVqRVFZR0l5SW1KeEV6RVJZV016STNFUVRJd1dtc2J2bnlBOEVCaWFPK3hRV3crbEFDV3g0WDJOOEIwLzR5bUlZMkFyWUFBQUVBc0FBQUJ0Y0ZzQUFMQUVnQXNBQkZXTEFBTHh1eEFCdytXYkFBUlZpd0F5OGJzUU1jUGxtd0FFVllzQWN2RzdFSEhENVpzQUJGV0xBSkx4dXhDUkErV2JJQkFRb3JXQ0hZRy9SWnNBWFFzQWJRTURFQkVTRVJNeEVoRVRNUklSRUJjUUgxdndIeXdQblpCYkQ2N1FVVCt1MEZFL3BRQmJBQUFRQ3cvcUVIYWdXd0FBOEFWQUN3Q3krd0FFVllzQUF2RzdFQUhENVpzQUJGV0xBREx4dXhBeHcrV2JBQVJWaXdCeThic1FjY1BsbXdBRVZZc0Ewdkc3RU5FRDVac2dFQkNpdFlJZGdiOUZtd0JkQ3dCdEN3Q2RDd0N0Q3dBdEF3TVFFUklSRXpFU0VSTXhFekF5TVJJUkVCY1FIMXZ3SHl3Sk1TcGZuOUJiRDY3UVVUK3UwRkUvcm4vZ29CWHdXd0FBQUNBQkFBQUFXNEJiQUFEQUFWQUY2eUFSWVhFUkk1c0FFUXNBM1FBTEFBUlZpd0FDOGJzUUFjUGxtd0FFVllzQWt2RzdFSkVENVpzZ0lBQ1JFU09iQUNMN0FBRUxJTEFRb3JXQ0hZRy9SWnNBSVFzZzBCQ2l0WUlkZ2I5Rm13Q1JDeURnRUtLMWdoMkJ2MFdUQXhFeUVSSVRJRUZSUUVCeUVSSVFFUklUSTJOVFFtSnhBQ1d3RmE3d0VFL3Y3aS9kYitaZ0piQVYrT241bU1CYkQ5cnVYR3hlc0RCUmo5cVAzZG1JQjdqZ0lBQUFNQXNnQUFCakFGc0FBS0FCTUFGd0J0c2hJWUdSRVNPYkFTRUxBRzBMQVNFTEFWMEFDd0FFVllzQWt2RzdFSkhENVpzQUJGV0xBV0x4dXhGaHcrV2JBQVJWaXdCeThic1FjUVBsbXdBRVZZc0JRdkc3RVVFRDVac2dBSkJ4RVNPYkFBTDdJTEFRb3JXQ0hZRy9SWnNBY1FzZ3dCQ2l0WUlkZ2I5Rmt3TVFFaEZnUVZGQVFISVJFekVSRWhNalkxTkNZbkFTTVJNd0Z5QVdya0FRRCsvdC85MDhBQlg0K2ZtWTBEVjhEQUExNEQ1TVRGNmdRRnNQMFEvZDJZZ0h1T0F2MUFCYkFBQUFJQW93QUFCTEVGc0FBS0FCTUFUYklORkJVUkVqbXdEUkN3QWRBQXNBQkZXTEFKTHh1eENSdytXYkFBUlZpd0J5OGJzUWNRUGxteUFBa0hFUkk1c0FBdnNnc0JDaXRZSWRnYjlGbXdCeEN5REFFS0sxZ2gyQnYwV1RBeEFTRVdCQlVVQkFjaEVUTVJFU0V5TmpVMEppY0JZd0ZxNUFFQS92N2YvZFBBQVYrUG41bU5BMTRENU1URjZnUUZzUDBRL2QyWWdIdU9BZ0FBQVFDVC8rd0U5QVhFQUI4QWo3SU1JQ0VSRWprQXNBQkZXTEFUTHh1eEV4dytXYkFBUlZpd0hDOGJzUndRUGxtd0FOQ3dIQkN5QXdFS0sxZ2gyQnYwV2JJSUhCTVJFam13Q0MrMDd3ai9DQUp4c3M4SUFWMnlMd2dCY2JTL0NNOElBbkd5bndnQmNiTC9DQUZkc2k4SUFWMnlYd2dCY3JLUENBRnlzZ1lCQ2l0WUlkZ2I5Rm13RXhDeURBRUtLMWdoMkJ2MFdiQVRFTEFQMERBeEFSWVdNeklTTnlFMUlUUUNJeUlHQnlNMkFETXlCQklWRlJRQ0JDTWlKQ2NCVkJ5cm9LM0pBdjNEQWozUHVwYW5HY0VYQVJqb3NBRUxqNDcrL2FqdS91RWJBYzYwa1FFTzhKN3RBUlNjcnVVQkE2Zit5OG1SeWY3TXBmdm5BQUlBdC8vc0J0b0Z4QUFYQUNVQW9iSWhKaWNSRWptd0lSQ3dFdEFBc0FCRldMQVRMeHV4RXh3K1diQUFSVml3RFM4YnNRMGNQbG13QUVWWXNBUXZHN0VFRUQ1WnNBQkZXTEFLTHh1eENoQStXYklQQ2cwUkVqbXdEeSt5WHc4QlhiTC9Ed0ZkdEU4UFh3OENjYlNQRDU4UEFuR3lMdzhCY2JMUER3RmRzaThQQVYyeXp3OEJjYklJQVFvcldDSFlHL1Jac0JNUXNoc0JDaXRZSWRnYjlGbXdCQkN5SWdFS0sxZ2gyQnYwV1RBeEFSUUNCQ01pSkFJbkl4RWpFVE1STXpZU0pETXlCQklWSnhBQ0l5SUNCeFVVRWpNeUVqY0cycEQrK0xDbS92bVZDTkhBd05BRGtBRUtySzhCQzVDLzBMdTIwUVBUdWJyTUF3S3AxdjdCcUtBQktzZjlnd1d3L1dUT0FUZXJxZjYvMVFJQkF3RVYvdXYyYS92KzRRRVAvUUFBQWdCWkFBQUVaQVd3QUF3QUZRQmhzaEFXRnhFU09iQVFFTEFLMEFDd0FFVllzQW92RzdFS0hENVpzQUJGV0xBQUx4dXhBQkErV2JBQVJWaXdBeThic1FNUVBsbXlFUW9BRVJJNXNCRXZzZ0VCQ2l0WUlkZ2I5Rm15QlFFS0VSSTVzQW9Rc2hJQkNpdFlJZGdiOUZrd01TRVJJUUVqQVNRUk5DUXpJUkVCRkJZWElSRWhJZ1lEby82dy90UE5BVkwrNWdFUjh3SFAvTzJsa3dFYS91K2NwUUkzL2NrQ2JHOEJIdERuK2xBRCtZU2dBUUkrbEFBQ0FHSC83QVFvQmhFQUd3QW9BR0t5SENrcUVSSTVzQndRc0FqUUFMQUFSVml3RWk4YnNSSWVQbG13QUVWWXNBZ3ZHN0VJRUQ1WnNnQVNDQkVTT2JBQUw3SVhBQklSRWpteUR4SVhFUkk1c2hvQUNCRVNPYkljQVFvcldDSFlHL1Jac0FnUXNpTUJDaXRZSWRnYjlGa3dNUUV5RWhVVkZBWUdJeUlBTlRVUUVqYzJOalV6RkFZSEJ3WUdCellYSWdZVkZSUVdNekkyTlRRbUFtZk05WGJka05yKzl2MzNqR0tZY1h5S3BhVVprNitJb0tHSmlxQ2hBL3orNzk4Um1mR0ZBU1AxV2dGVkFaSXNHVWcvZll3ZEh5ZTVtcXFZdDZJUXJzdk14Sm01QUFNQW5RQUFCQ2tFT2dBT0FCWUFIQUNPc2hnZEhoRVNPYkFZRUxBQzBMQVlFTEFXMEFDd0FFVllzQUV2RzdFQkdENVpzQUJGV0xBQUx4dXhBQkErV2JJWEFRQVJFam13RnkrMHZ4ZlBGd0pkdEo4WHJ4Y0NjYkwvRndGZHNnOFhBWEcwTHhjL0Z3SmR0RzhYZnhjQ2NySVBBUW9yV0NIWUcvUlpzZ2dQRnhFU09iQUFFTElRQVFvcldDSFlHL1Jac0FFUXNoc0JDaXRZSWRnYjlGa3dNVE1SSVRJV0ZSUUdCeFlXRlJRR0l3RVJJVEkyTlRRakpUTWdFQ2NqblFHbTJPZGFXR0ozMjhqKzBBRXlkSFB1L3RYdkFRVDIvUVE2bDVKTGVTQVhobDJWbmdIYi9ycFdUcUtVQVRBRkFBQUJBSm9BQUFOSEJEb0FCUUFyQUxBQVJWaXdCQzhic1FRWVBsbXdBRVZZc0FJdkc3RUNFRDVac0FRUXNnQUJDaXRZSWRnYjlGa3dNUUVoRVNNUklRTkgvZzI2QXEwRG9meGZCRG9BQWdBdS9zSUVrd1E2QUE0QUZBQmJzaElWRmhFU09iQVNFTEFFMEFDd0RDK3dBRVZZc0FRdkc3RUVHRDVac0FCRldMQUtMeHV4Q2hBK1diSUFBUW9yV0NIWUcvUlpzQWJRc0FmUXNBd1FzQW5Rc0FjUXNBL1FzQkRRc0FRUXNoRUJDaXRZSWRnYjlGa3dNVGMzTmhNVElSRXpFU01SSVJFakV5RWhFU0VEQW9OQWJBOFJBcm1MdWYwTnVRRUJMd0h4L3JNTEVaZFBqQUVZQWJEOFhmNHJBVDcrd2dIVkF2aisvdjY5QUFFQUZRQUFCZ1FFT2dBVkFKQUFzQUJGV0xBSkx4dXhDUmcrV2JBQVJWaXdEUzhic1EwWVBsbXdBRVZZc0JFdkc3RVJHRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3Qmk4YnNRWVFQbG13QUVWWXNCUXZHN0VVRUQ1WnNBSVFzQkRRc0JBdnNyOFFBVjJ5L3hBQlhiSXZFQUZkc3M4UUFYR3lBQUVLSzFnaDJCdjBXYkFFMExJSUVBQVJFam13RUJDd0M5Q3lFd0FRRVJJNU1ERUJJeEVqRVNNQkl3RUJNd0V6RVRNUk13RXpBUUVqQSt1Q3VZTCswZW9CZy82aTRBRVhmN2wrQVJuZy9xRUJnK29CMXY0cUFkYitLZ0l3QWdyK1FBSEEva0FCd1AzMS9kRUFBUUJZLyswRHJBUk5BQ1lBaHJJREp5Z1JFamtBc0FCRldMQUtMeHV4Q2hnK1diQUFSVml3RlM4YnNSVVFQbG13Q2hDeUF3RUtLMWdoMkJ2MFdiSWxDaFVSRWptd0pTKzBMeVUvSlFKZHRMOGx6eVVDWGJTZkphOGxBbkcwYnlWL0pRSnlzZ1lsQ2hFU09iSWlBUW9yV0NIWUcvUlpzaEFpSlJFU09iSVpGUW9SRWptd0ZSQ3lIQUVLSzFnaDJCdjBXVEF4QVRRbUl5SUdGU00wTmpNeUZoVVVCZ2NXRlJRR0l5SW1OVE1VRmpNeU5qVTBKaU1qTlRNMkF0OTBaV0tEdU95eHZ0UllVYjNtd0x2enVJMXBhb0p0YzduSnZRTVNURmxtUlkyMG81ZEplaVJBdkpXdXQ1eFBjV0pPVzArY0JRQUJBSndBQUFRQkJEb0FDUUJGQUxBQVJWaXdBQzhic1FBWVBsbXdBRVZZc0Fjdkc3RUhHRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3QlM4YnNRVVFQbG15QkFjQ0VSSTVzZ2tIQWhFU09UQXhBVE1SSXhFQkl4RXpFUU5JdWJuK0RibTVCRHI3eGdNVi9Pc0VPdnpxQUFBQkFKd0FBQVEvQkRvQURBQjNBTEFBUlZpd0JDOGJzUVFZUGxtd0FFVllzQWd2RzdFSUdENVpzQUJGV0xBQ0x4dXhBaEErV2JBQVJWaXdDeThic1FzUVBsbXdBaEN3QnRDd0JpK3lud1lCWGJML0JnRmRzczhHQVhHeW53WUJjYlMvQnM4R0FsMnlMd1lCWGJKdkJnRnlzZ0VCQ2l0WUlkZ2I5Rm15Q2dFR0VSSTVNREVCSXhFakVUTVJNd0V6QVFFakFkMkh1cnA1QVd6Zy9sUUIwT3NCemY0ekJEcitOZ0hLL2ZqOXpnQUJBQ3dBQUFRREJEb0FEd0JOc2dRUUVSRVNPUUN3QUVWWXNBQXZHN0VBR0Q1WnNBQkZXTEFCTHh1eEFSQStXYkFBUlZpd0NDOGJzUWdRUGxtd0FCQ3lBd0VLSzFnaDJCdjBXYkFJRUxJS0FRb3JXQ0hZRy9SWk1ERUJFU01SSVFNQ0JnY2pOVGMyTmpjVEJBTzYvcEFXRXBla1NqVmFUZ3NVQkRyN3hnT2gvbXYrNmZBRm93UUt2UDRCendBQUFRQ2RBQUFGVWdRNkFBd0FXUUN3QUVWWXNBRXZHN0VCR0Q1WnNBQkZXTEFMTHh1eEN4ZytXYkFBUlZpd0F5OGJzUU1RUGxtd0FFVllzQVl2RzdFR0VENVpzQUJGV0xBSkx4dXhDUkErV2JJQUN3TVJFam15QlFzREVSSTVzZ2dMQXhFU09UQXhKUUV6RVNNUkFTTUJFU01STXdMN0FYRG51ZjZpZ1A2YnVmRDFBMFg3eGdNVC9PMERKUHpjQkRvQUFRQ2NBQUFFQUFRNkFBc0FpZ0N3QUVWWXNBWXZHN0VHR0Q1WnNBQkZXTEFLTHh1eENoZytXYkFBUlZpd0FDOGJzUUFRUGxtd0FFVllzQVF2RzdFRUVENVpzQUFRc0FuUXNBa3ZzbThKQVYyMHZ3blBDUUpkc2o4SkFYRzB6d25mQ1FKeHNnOEpBWEswbndtdkNRSnhzdjhKQVYyeUR3a0JjYktmQ1FGZHNpOEpBVjIwYndsL0NRSnlzZ0lCQ2l0WUlkZ2I5Rmt3TVNFakVTRVJJeEV6RVNFUk13UUF1ZjRQdXJvQjhia0J6djR5QkRyK0t3SFZBQUVBbkFBQUJBRUVPZ0FIQURnQXNBQkZXTEFHTHh1eEJoZytXYkFBUlZpd0FDOGJzUUFRUGxtd0FFVllzQVF2RzdFRUVENVpzQVlRc2dJQkNpdFlJZGdiOUZrd01TRWpFU0VSSXhFaEJBRzUvZzY2QTJVRG9meGZCRG9BQVFBb0FBQURzQVE2QUFjQU1RQ3dBRVZZc0FZdkc3RUdHRDVac0FCRldMQUNMeHV4QWhBK1diQUdFTElBQVFvcldDSFlHL1Jac0FUUXNBWFFNREVCSVJFakVTRTFJUU93L3BXNS9wd0RpQU9rL0Z3RHBKWUFBQU1BWlA1Z0JXa0dBQUFhQUNVQU1BQi9zZ2N4TWhFU09iQUhFTEFnMExBSEVMQXIwQUN3Qmkrd0FFVllzQU12RzdFREdENVpzQUJGV0xBS0x4dXhDaGcrV2JBQVJWaXdFeThic1JNU1BsbXdBRVZZc0JBdkc3RVFFRDVac0FCRldMQVhMeHV4RnhBK1diQUtFTEllQVFvcldDSFlHL1Jac0JBUXNpTUJDaXRZSWRnYjlGbXdLZEN3SGhDd0x0QXdNUk1RRWpNeUZ4RXpFVFl6TWhJUkZBSWpJaWNSSXhFR0l5SUNOU1UwSmlNaUJ4RVdNekkySlJRV016STNFU1lqSWdaazByZFZRTGxHWHJqUzBiZGhSYmxDVmJiUkJFeU1lejh2TFVOOGlmeHRnbm82THlvOWVvUUNDUUVQQVRZZEFjLytLeVAreXY3YzcvN21JUDVWQWFnZEFScjFEOHpoRlB6eEVjQ3l0cndTQXhFUjJnQUFBUUNjL3I4RWdnUTZBQXNBT3dDd0NDK3dBRVZZc0FBdkc3RUFHRDVac0FCRldMQUVMeHV4QkJnK1diQUFSVml3Q2k4YnNRb1FQbG15QWdFS0sxZ2gyQnYwV2JBRzBEQXhFek1SSVJFekVUTURJeEVobkxvQjhybUJFcWI4MGdRNi9GMERvL3hkL2lnQlFRQUFBUUJuQUFBRHZRUTdBQkFBUnJJRUVSSVJFamtBc0FCRldMQUlMeHV4Q0JnK1diQUFSVml3RHk4YnNROFlQbG13QUVWWXNBQXZHN0VBRUQ1WnNnd1BBQkVTT2JBTUw3SUVBUW9yV0NIWUcvUlpNREVoSXhFR0l5SW1KeEV6RVJZek1qY1JNd085dW5xQXk5VUN1UVhrZ0hxNkFZZ2cwTUFCUS82MzhpQUNHZ0FCQUp3QUFBWGdCRG9BQ3dCSUFMQUFSVml3QUM4YnNRQVlQbG13QUVWWXNBTXZHN0VER0Q1WnNBQkZXTEFITHh1eEJ4ZytXYkFBUlZpd0NTOGJzUWtRUGxteUFRRUtLMWdoMkJ2MFdiQUYwTEFHMERBeEFSRWhFVE1SSVJFekVTRVJBVllCakxrQmk3cjZ2QVE2L0YwRG8veGRBNlA3eGdRNkFBRUFrZjYvQm0wRU9nQVBBRXNBc0F3dnNBQkZXTEFBTHh1eEFCZytXYkFBUlZpd0F5OGJzUU1ZUGxtd0FFVllzQWN2RzdFSEdENVpzQUJGV0xBTkx4dXhEUkErV2JJQkFRb3JXQ0hZRy9SWnNBWFFzQW5RTURFQkVTRVJNeEVoRVRNUk13TWpFU0VSQVVzQmpMa0JpN3FZRXFiNjNBUTYvRjBEby94ZEE2UDhYZjRvQVVFRU9nQUNBQjRBQUFTL0JEb0FEQUFWQUY2eUFSWVhFUkk1c0FFUXNBM1FBTEFBUlZpd0FDOGJzUUFZUGxtd0FFVllzQWt2RzdFSkVENVpzZ0lBQ1JFU09iQUNMN0FBRUxJTEFRb3JXQ0hZRy9SWnNBSVFzZzBCQ2l0WUlkZ2I5Rm13Q1JDeURnRUtLMWdoMkJ2MFdUQXhFeUVSSVJZV0ZSUUdJeUVSSVFFUklUSTJOVFFtSng0QitnRVp1TmJjdXY0Mi9yOEIrZ0VUYUhKdlpBUTYvb3NDdktHaXhBT2kvb3orYVd0ZFduTUNBQUFEQUowQUFBVi9CRG9BQ2dBT0FCY0FiYklHR0JrUkVqbXdCaEN3RE5Dd0JoQ3dFOUFBc0FCRldMQUpMeHV4Q1JnK1diQUFSVml3RFM4YnNRMFlQbG13QUVWWXNBY3ZHN0VIRUQ1WnNBQkZXTEFMTHh1eEN4QStXYklBRFFjUkVqbXdBQyt5RHdFS0sxZ2gyQnYwV2JBSEVMSVFBUW9yV0NIWUcvUlpNREVCSVJZV0ZSUUdJeUVSTXdFakVUTUJFU0V5TmpVMEppY0JWZ0VadU5iY3V2NDJ1UVFwdXJyNzF3RVRhSEp2WkFMRkFyeWhvc1FFT3Z2R0JEcjk5UDVwYTExYWN3SUFBZ0NkQUFBRC9RUTZBQW9BRXdCTnNnY1VGUkVTT2JBSEVMQU4wQUN3QUVWWXNBa3ZHN0VKR0Q1WnNBQkZXTEFITHh1eEJ4QStXYklBQ1FjUkVqbXdBQyt5Q3dFS0sxZ2gyQnYwV2JBSEVMSU1BUW9yV0NIWUcvUlpNREVCSVJZV0ZSUUdJeUVSTXhFUklUSTJOVFFtSndGV0FSbTQxdHk2L2phNUFSTm9jbTlrQXNVQ3ZLR2l4QVE2L2ZUK2FXdGRXbk1DQUFFQVpQL3NBK0FFVGdBZkFJS3lBQ0FoRVJJNUFMQUFSVml3Q0M4YnNRZ1lQbG13QUVWWXNCQXZHN0VRRUQ1WnNBZ1FzZ0FCQ2l0WUlkZ2I5Rm15SFFnUUVSSTVzQjB2dEM4ZFB4MENYYlMvSGM4ZEFsMjBueDJ2SFFKeHRHOGRmeDBDY3JJRENCMFJFam15RkJBSUVSSTVzQkFRc2hjQkNpdFlJZGdiOUZtd0hSQ3lHZ0VLSzFnaDJCdjBXVEF4QVNJR0ZTTTBOall6TWdBVkZSUUdCaU1pSmpVekZCWXpNalkzSVRVaEppWUNDR09Sc0hiRWF0TUJCWGZYaXJUd3NJNW1kNW9NL21vQmxBNldBN1orVmwycVpmN1A5aCtZKzRuZ3AyYUx1S0dZa3JFQUFBSUFuZi9zQmpBRVRnQVVBQjhBbmJJTklDRVJFam13RFJDd0ZkQUFzQUJGV0xBVUx4dXhGQmcrV2JBQVJWaXdCQzhic1FRWVBsbXdBRVZZc0JFdkc3RVJFRDVac0FCRldMQU1MeHV4REJBK1diSUFFUlFSRWptd0FDKzB2d0RQQUFKZHRKOEFyd0FDY2JML0FBRmRzZzhBQVhHMEx3QS9BQUpkdGw4QWJ3Qi9BQU55c2hBQkNpdFlJZGdiOUZtd0RCQ3lHQUVLSzFnaDJCdjBXYkFFRUxJZEFRb3JXQ0hZRy9SWk1ERUJJVFlBTXpJQUZ4Y1VCZ1lqSWdBbklSRWpFVE1CRkJZZ05qVTBKaU1pQmdGV0FRUVZBUW5LMUFFT0N3Rjg0SkRSL3ZZUS92MjV1UUc2cHdFYXBhaU1pcWdDYjlnQkIvN2k1VHFlL29rQkVkcitLUVE2L2RlMDJ0N0dzZDdhQUFBQ0FDOEFBQVBIQkRvQURRQVdBR0d5RkJjWUVSSTVzQlFRc0EzUUFMQUFSVml3QUM4YnNRQVlQbG13QUVWWXNBRXZHN0VCRUQ1WnNBQkZXTEFGTHh1eEJSQStXYklTQUFFUkVqbXdFaSt5QXdFS0sxZ2gyQnYwV2JJSEF3QVJFam13QUJDeUV3RUtLMWdoMkJ2MFdUQXhBUkVqRVNFREl3RW1KalUwTmpjREZCWVhJUkVoSWdZRHg3cis2Zi9JQVJCb2I5NjYzbXhaQVNiKzltZDZCRHI3eGdHbC9sc0J3U2FmYXBTMUFmNjBUMkVCQVdkbEFBSC82UDVMQTk4R0FBQWlBSVN5RFNNa0VSSTVBTEFmTDdBQVJWaXdCQzhic1FRWVBsbXdBRVZZc0Jrdkc3RVpFRDVac0FCRldMQUtMeHV4Q2hJK1diSy9Id0Zkc2k4ZkFWMnlEeDhCWGJJZUdSOFJFam13SGkrd0lkQ3lBUUVLSzFnaDJCdjBXYklDR1FRUkVqbXdDaEN5RHdFS0sxZ2gyQnYwV2JBRUVMSVZBUW9yV0NIWUcvUlpzQUVRc0J2UU1ERUJJUkUyTXlBVEVSUUdJeUluTnhZeU5qVVJOQ1lqSWdZSEVTTVJJelV6TlRNVklRSmovdUo3eFFGWEE2cVlQVFlQSTRKSWFYQmFpQ2E1cEtTNUFSNEV1ZjcrbC81OS9OeXFzaEtURFdoY0F5QjRjbUJPL1AwRXVaaXZyd0FCQUdmLzdBUDNCRTRBSHdDY3NnQWdJUkVTT1FDd0FFVllzQkF2RzdFUUdENVpzQUJGV0xBSUx4dXhDQkErV2JJQUFRb3JXQ0hZRy9SWnNnTUlFQkVTT2JJYkVBZ1JFam13R3krMER4c2ZHd0p5dEw4Ynp4c0NYYlNmRzY4YkFuRzB6eHZmR3dKeHN2OGJBVjJ5RHhzQmNiUXZHejhiQWwyMGJ4dC9Hd0p5c3I4YkFYS3lGQkFiRVJJNXNCQVFzaGNCQ2l0WUlkZ2I5Rm13R3hDeUhBRUtLMWdoMkJ2MFdUQXhKVEkyTnpNT0FpTWlBQkUxTkRZMk16SVdGeU1tSmlNaUJnY2hGU0VXRmdKSVk1UUlzQVY0eEc3ZS92MTEySlMyOFFpd0NJOW9ncG9LQVpUK2JBcVpnM2hhWHFoakFTZ0JBQjZmOTRiYXJtbUhzWjJZb0swQUFnQW5BQUFHaGdRNkFCWUFId0I1c2drZ0lSRVNPYkFKRUxBWDBBQ3dBRVZZc0FBdkc3RUFHRDVac0FCRldMQUlMeHV4Q0JBK1diQUFSVml3RHk4YnNROFFQbG15QVFBSUVSSTVzQUV2c0FBUXNnb0JDaXRZSWRnYjlGbXdEeEN5RVFFS0sxZ2gyQnYwV2JBQkVMSVhBUW9yV0NIWUcvUlpzQWdRc2hnQkNpdFlJZGdiOUZrd01RRVJJUllXRlJRR0J5RVJJUU1DQmdjak5UYzJOamNUQVJFaE1qWTFOQ1luQTk4QkhyYlQwN2YrS2Y2dkZ4U2NwVUUyVlUwTkZ3SzhBUk5sZFhKakJEcitaQU8xbEpPOEF3T2gvbHIrNitRQ293UUtwOU1DRC8zTS9vOXBWbEZnQVFBQUFnQ2NBQUFHcHdRNkFCSUFHd0I3c2dFY0hSRVNPYkFCRUxBVDBBQ3dBRVZZc0FJdkc3RUNHRDVac0FCRldMQVJMeHV4RVJnK1diQUFSVml3Q3k4YnNRc1FQbG13QUVWWXNBOHZHN0VQRUQ1WnNnRVJDeEVTT2JBQkw3QUUwTEFCRUxJTkFRb3JXQ0hZRy9SWnNBUVFzaE1CQ2l0WUlkZ2I5Rm13Q3hDeUZBRUtLMWdoMkJ2MFdUQXhBU0VSTXhFaEZoWVZGQVlqSVJFaEVTTVJNd0VSSVRJMk5UUW1Kd0ZXQWZHNUFTSzAwZG05L2piK0Q3cTZBcW9CRTJWMWNtTUNvUUdaL21NRXNaYVh1d0lLL2ZZRU92M00vbzlwVmxGZ0FRQUIvLzBBQUFQZkJnQUFHUUI1c2d3YUd4RVNPUUN3Rmkrd0FFVllzQVF2RzdFRUdENVpzQUJGV0xBSEx4dXhCeEErV2JBQVJWaXdFQzhic1JBUVBsbXl2eFlCWGJJdkZnRmRzZzhXQVYyeUdSQVdFUkk1c0JrdnNnQUJDaXRZSWRnYjlGbXlBZ1FIRVJJNXNBUVFzZ3dCQ2l0WUlkZ2I5Rm13QUJDd0V0Q3dHUkN3Rk5Bd01RRWhFVFl6SUJNUkl4RW1KaU1pQmdjUkl4RWpOVE0xTXhVaEFubit6SHZGQVZjRHVRRnBiMXFJSnJtUGo3a0JOQVMrL3ZtWC9uMzlOUUxNZFhCZ1R2ejlCTDZYcTZzQUFBRUFuUDZjQkFFRU9nQUxBRVVBc0FndnNBQkZXTEFBTHh1eEFCZytXYkFBUlZpd0F5OGJzUU1ZUGxtd0FFVllzQVV2RzdFRkVENVpzQUJGV0xBSkx4dXhDUkErV2JJQkFRb3JXQ0hZRy9SWk1ERUJFU0VSTXhFaEVTTVJJUkVCVmdIeXVmNnR1ZjZuQkRyOFhRT2orOGIrbkFGa0JEb0FBQUVBblAvc0JuVUZzQUFnQUdDeUJ5RWlFUkk1QUxBQVJWaXdBQzhic1FBY1BsbXdBRVZZc0E0dkc3RU9IRDVac0FCRldMQVhMeHV4Rnh3K1diQUFSVml3QkM4YnNRUVFQbG13QUVWWXNBb3ZHN0VLRUQ1WnNnY0FCQkVTT2JJVEFRb3JXQ0hZRy9SWnNCelFNREVCRVJRR0l5SW1Kd1lHSXlJbUp4RXpFUlFXTXpJMk5SRXpFUlFXTXpJMk5SRUdkZUhEYmFzeE5MSnh2ZGNCd1hKaWNvTEhmR2xxZWdXdys5N0czRmRaV1ZmYnd3UW0rOTE3aW9sOEJDUDczWDJJaVgwRUlnQUJBSUgvNndXdEJEb0FIZ0Jnc2dZZklCRVNPUUN3QUVWWXNBQXZHN0VBR0Q1WnNBQkZXTEFNTHh1eERCZytXYkFBUlZpd0ZTOGJzUlVZUGxtd0FFVllzQVF2RzdFRUVENVpzQUJGV0xBSUx4dXhDQkErV2JJR0ZRUVJFam15RVFFS0sxZ2gyQnYwV2JBYTBEQXhBUkVVQmlNaUp3WWpJaVluRVRNUkZoWXpNalkxRVRNUkZCWXpNalkzRVFXdHlxN0dXVi9PcDhBQnVRRmJVMkp2dW1WY1dXVUJCRHI5SjdER2xKVERzQUxjL1NObWRYaG5BdG45SjJkNGRXWUMzUUFDLzl3QUFBUDhCaFlBRVFBYUFIR3lGQnNjRVJJNXNCUVFzQVBRQUxBQVJWaXdEaThic1E0ZVBsbXdBRVZZc0Fndkc3RUlFRDVac2hFT0NCRVNPYkFSTDdJQUFRb3JXQ0hZRy9SWnNnSU9DQkVTT2JBQ0w3QUFFTEFLMExBUkVMQU0wTEFDRUxJU0FRb3JXQ0hZRy9SWnNBZ1FzaE1CQ2l0WUlkZ2I5Rmt3TVFFaEVTRVdGaEFHQnlFUkl6VXpFVE1SSVFFUklUSTJOVFFtSndLVy9yOEJHTHZVMUxmK0tyKy91Z0ZCL3I4QkVtbHhiMlFFT3Y2d0Fzcit0dEVEQkRxWEFVWCt1LzJCL2tWM1pHRjlBZ0FBQVFDMy8rMEdvQVhGQUNZQWg3SWVKeWdSRWprQXNBQkZXTEFGTHh1eEJSdytXYkFBUlZpd0ppOGJzU1ljUGxtd0FFVllzQjB2RzdFZEVENVpzQUJGV0xBakx4dXhJeEErV2JJUUJSMFJFam13RUMrd0FOQ3dCUkN3Q2RDd0JSQ3lEQUVLSzFnaDJCdjBXYkFRRUxJUkFRb3JXQ0hZRy9SWnNCMFFzaFlCQ2l0WUlkZ2I5Rm13SFJDd0dkQ3dFUkN3SWRBd01RRXpOaElrTXpJQUZ5TW1KaU1pQWdjaEZTRVZGQkl6TWpZM013WUVJeUFBRVRVakVTTVJNd0Y0eHdXVEFRYXM1Z0VaR01BWnA1ZTB6d1lDSHYzaXhyS2pxUnpBRy83aDd2Nysvc25Id2NFRFFNRUJKcDcvQU9pc252Nzc0cGNhN2Y3b2s3TG4rd0Z5QVRZVS9WY0ZzQUFCQUpuLzdBV2hCRTRBSkFERXNnTWxKaEVTT1FDd0FFVllzQVF2RzdFRUdENVpzQUJGV0xBa0x4dXhKQmcrV2JBQVJWaXdJUzhic1NFUVBsbXdBRVZZc0J3dkc3RWNFRDVac2c4Y0JCRVNPYkFQTDdTL0Q4OFBBbDIwUHc5UER3Snh0TThQM3c4Q2NiUVBEeDhQQW5LMG53K3ZEd0p4c3Y4UEFWMnlEdzhCY2JRdkR6OFBBbDIwYnc5L0R3SnlzQURRc2dnUEJCRVNPYkFFRUxJTEFRb3JXQ0hZRy9SWnNBOFFzaEFCQ2l0WUlkZ2I5Rm13SEJDeUZBRUtLMWdoMkJ2MFdiSVhIQVFSRWptd0VCQ3dIOUF3TVFFek5oSXpNaFlYSXlZbUl5SUdCeUVWSVJZV016STJOek1PQWlNaUFpY2pFU01STXdGVHZ4RC8wYmJ4Q0xBSWoyaUVtQW9CdGY1TENwbURZNVFJc0FWNHhHN1IvaERBdXJvQ1o5OEJDTnF1YVlleG5wZWdyWGhhWHFoakFRYmUvakFFT2dBQUFnQW9BQUFFNUFXd0FBc0FEZ0JXQUxBQVJWaXdDQzhic1FnY1BsbXdBRVZZc0FJdkc3RUNFRDVac0FCRldMQUdMeHV4QmhBK1diQUFSVml3Q2k4YnNRb1FQbG15RFFnQ0VSSTVzQTB2c2dBQkNpdFlJZGdiOUZtd0JOQ3lEZ2dDRVJJNU1ERUJJeEVqRVNNREl3RXpBU01CSVFNRGlhcThucGpGQWcyckFnVEYvWjhCazhjQnR2NUtBYmIrU2dXdytsQUNXZ0pKQUFBQ0FBOEFBQVFsQkRvQUN3QVFBRllBc0FCRldMQUlMeHV4Q0JnK1diQUFSVml3QWk4YnNRSVFQbG13QUVWWXNBWXZHN0VHRUQ1WnNBQkZXTEFLTHh1eENoQStXYklOQWdnUkVqbXdEUyt5QVFFS0sxZ2gyQnYwV2JBRTBMSVBDQUlSRWprd01RRWpFU01SSXdNakFUTUJJd0VoQXljSEF1MTF1WHgzdlFHNm53Rzl2djRaQVMrQUdCZ0JLZjdYQVNuKzF3UTYrOFlCd1FFN1dWa0FBQUlBeVFBQUJ2VUZzQUFUQUJZQWZBQ3dBRVZZc0FJdkc3RUNIRDVac0FCRldMQVNMeHV4RWh3K1diQUFSVml3QkM4YnNRUVFQbG13QUVWWXNBZ3ZHN0VJRUQ1WnNBQkZXTEFNTHh1eERCQStXYkFBUlZpd0VDOGJzUkFRUGxteUZRSUVFUkk1c0JVdnNBRFFzQlVRc2dZQkNpdFlJZGdiOUZtd0N0Q3dCaEN3RHRDeUZnSUVFUkk1TURFQklRRXpBU01ESXhFakVTTURJeE1oRVNNUk13RWhBd0dLQVljQk5hc0NCTVdXcXJ5ZW1NV2UvclBCd1FKRkFaUEhBbGtEVi9wUUFiYitTZ0cyL2tvQnVQNUlCYkQ4cWdKSkFBQUNBTHdBQUFYa0JEb0FFd0FZQUg4QXNBQkZXTEFDTHh1eEFoZytXYkFBUlZpd0VpOGJzUklZUGxtd0FFVllzQVF2RzdFRUVENVpzQUJGV0xBSUx4dXhDQkErV2JBQVJWaXdEQzhic1F3UVBsbXdBRVZZc0JBdkc3RVFFRDVac2dBUUVoRVNPYkFBTDdBQjBMSU9BUW9yV0NIWUcvUlpzQXZRc0FmUXNBRVFzQlRRc0JYUXNoY1NCQkVTT1RBeEFTRUJNd0VqQXlNUkl4RWpBeU1USXhFakVUTUJJUU1uQndGMkFROEJBNThCdmI1NmRibDhkNzE1MGJxNkFja0JMNEFZR0FIQkFubjd4Z0VwL3RjQktmN1hBU2orMkFRNi9ZY0JPMWxaQUFBQ0FKTUFBQVkvQmJBQUhRQWhBSGF5SGlJakVSSTVzQjRRc0E3UUFMQUFSVml3SEM4YnNSd2NQbG13QUVWWXNBVXZHN0VGRUQ1WnNBQkZXTEFOTHh1eERSQStXYkFBUlZpd0ZTOGJzUlVRUGxteUFRMGNFUkk1c0FFdnNnb0JDaXRZSWRnYjlGbXdFTkN3QVJDd0d0Q3dBUkN3SHRDd0hCQ3lJQUVLSzFnaDJCdjBXVEF4QVRNeUZoY1JJeEVtSmljakJ4RWpFU2NqSWdZSEVTTVJOall6TXdFaEFUTUJJUVJCRy9Uc0E4RUJmSnFGRmNFTmlKNkNCTUFEN1BNcS9uZ0VzdjJmRUFFYS9ic0RLdFRZL29JQmVKQ0NBaVA5bHdKMkZudU4vbndCZnRqVUFvYjllZ0hvQUFBQ0FKWUFBQVZMQkRvQUd3QWZBSE95SENBaEVSSTVzQndRc0JUUUFMQUFSVml3Qmk4YnNRWVlQbG13QUVWWXNCc3ZHN0ViRUQ1WnNBQkZXTEFVTHh1eEZCQStXYkFBUlZpd0RDOGJzUXdRUGxteUhCUUdFUkk1c0J3dnNBVFFzQndRc0FmUXNoQUJDaXRZSWRnYjlGbXdGOUN3QmhDeUhnRUtLMWdoMkJ2MFdUQXhNelUyTmpjQklRRVdGaGNWSXpVbUppTWpCeEVqRVNjaklnWUhGUUV6RXlHV0JNclMvdUVEdi83Z3pzVUN1Z0p6akRVTHVRWStqSFVDQWFJSXQvNkx0czNTQmdIZi9pRUwwOUN0c1pLQkUvNVBBYnNKZnBXeEFsd0JSZ0FDQUxZQUFBaHlCYkFBSWdBbUFKT3lKaWNvRVJJNXNDWVFzQjdRQUxBQVJWaXdDQzhic1FnY1BsbXdBRVZZc0Fzdkc3RUxIRDVac0FCRldMQUZMeHV4QlJBK1diQUFSVml3SWk4YnNTSVFQbG13QUVWWXNCc3ZHN0ViRUQ1WnNBQkZXTEFUTHh1eEV4QStXYklKQlFnUkVqbXdDUyt5QkFFS0sxZ2gyQnYwV2JBSkVMQWowTEFOMExBRUVMQWUwTEFZMExBTEVMSW1BUW9yV0NIWUcvUlpNREVoRVRZM0lSRWpFVE1SSVFFaEFUTXlGaGNSSXhFbUppY2pCeEVqRVNjaklnWUhFUUV6QVNFQ3hRRlAvbUxCd1FOWi9ua0VzLzU0Ry9Uc0E4RUJmSnFGRnNBT2g1NkNCQUlWRUFFYS9ic0JlTE5wL1d3RnNQMThBb1Q5ZXRUWS9vSUJlSkNDQWlYOW1RSjFGM3VOL253REtnSG9BQUlBbXdBQUJ6c0VPZ0FoQUNVQWxySWVKaWNSRWptd0hoQ3dKZEFBc0FCRldMQUhMeHV4QnhnK1diQUFSVml3Q3k4YnNRc1lQbG13QUVWWXNBQXZHN0VBRUQ1WnNBQkZXTEFGTHh1eEJSQStXYkFBUlZpd0VTOGJzUkVRUGxtd0FFVllzQmt2RzdFWkVENVpzZ29MQUJFU09iQUtMN0lkQVFvcldDSFlHL1Jac0FQUXNBb1FzQTNRc0IwUXNCYlFzQW9Rc0NMUXNBc1FzaVFCQ2l0WUlkZ2I5Rmt3TVNFMU5qY2hFU01STXhFaEFTRUJGaFlYRlNNMUppWWpJd2NSSXhFbkl3WUdCeFVCTXhNaEFvWUNSdjZIdXJvQzBmN2hBNy8rNE03RkFyb0NjNHcxQzdrR1M0VnZBZ0dpQ0xmK2k2K3RhUDQ4QkRyK0lnSGUvaUVMMDlDdHNaS0JFLzVQQWJzSkFvQ1Ryd0pjQVVZQUFBSUFVUDVHQTZvSGhnQXBBRElBaDdJcU16UVJFam13S2hDd0F0QUFzQmt2c0M0dnNBQkZXTEFGTHh1eEJSdytXYkFBUlZpd0VpOGJzUklRUGxtd0JSQ3lBd0VLSzFnaDJCdjBXYklvQlJJUkVqbXdLQyt5SlFFS0sxZ2gyQnYwV2JJTUpTZ1JFam13RWhDeUh3RUtLMWdoMkJ2MFdiSVBMZ0Zkc0M0UXNDdlFzQ3N2dEE4ckh5c0NYYklxTGlzUkVqbXdNdEF3TVFFMEppTWhOU0V5QkJVVUJnY1dGaFVVQkNNakJoVVVGeGNISmlZMU5EWTNNelkyTlJBbEl6VXpJQU0zTXhVREl3TTFNd0xhbllmK3pnRXIzZ0VHZ1hPQ2lmNzM0RFNOZ2g5S2VvMmxvalNHbi82K21ZWUJQN3lYb1A1eStwMEVLbTZBbU5peVo2UXRLYTJDeE9VRGJXbENEMzAxcUdONmd3RUJsSGtCQ0FXWUE2V3FDdjd1QVJJS0FBSUFUUDVHQTNZR01BQXBBRElBbnJJdU16UVJFam13TGhDd0g5QUFzQmd2c0M0dnNBQkZXTEFGTHh1eEJSZytXYkFBUlZpd0VTOGJzUkVRUGxtd0JSQ3lBd0VLSzFnaDJCdjBXYklvQlJFUkVqbXdLQyswTHlnL0tBSmR0TDhvenlnQ1hiU2ZLSzhvQW5HMGJ5aC9LQUp5c2lVQkNpdFlJZGdiOUZteURDVW9FUkk1c0JFUXNoNEJDaXRZSWRnYjlGbXdMaEN3SzlDd0t5KzBEeXNmS3dKZHNpb3VLeEVTT2JBeTBEQXhBVFFtSnlFMUlUSVdGUlFHQnhZVkZBWWpJd1lWRkJjWEJ5WW1OVFEyTnpNMk56WTFOQ1VqTlRNZ0F6Y3pGUU1qQXpVekFxZC9jUDdKQVNmSzdtWmIxL1BJTW8yQ0gwdDhpcVdpTm5KRFAvN29tWWdCRTlxWG9QNXkrcDBEQ1VOVEFwbXFpMGwzSkVLdmxLOERiV2xDRDMwM3FHRjZnd0VDTUM1SW9nT1lBeDJxQ3Y3dUFSSUtBQUFEQUdmLzdBVDZCY1FBRVFBWUFCOEFpYklFSUNFUkVqbXdCQkN3RXRDd0JCQ3dHZEFBc0FCRldMQU5MeHV4RFJ3K1diQUFSVml3QkM4YnNRUVFQbG13RFJDeUVnRUtLMWdoMkJ2MFdiSVdEUVFSRWptd0ZpK3lMeFlCWGJMUEZnRmRzaThXQVhHeS94WUJYYkpmRmdGZHRFOFdYeFlDY2JLZkZnRnhzQVFRc2hrQkNpdFlJZGdiOUZtd0ZoQ3lIQUVLSzFnaDJCdjBXVEF4QVJRQ0JDTWlKQUluTlRRU0pETXlCQklYQVNJQ0J5RW1BZ015RWpjaEZoSUUrby8rK0xHcy92YVRBcElCQzZ5dkFRaVJBdjIydHRBRUF4UUV6cmEyeWdqODdBalRBcW5WL3NLcXFRRTV6bW5TQVVLcnFQN0Z6d0lOL3UzeStBRU4rM0FCQVBUcy92Z0FBQU1BVy8vc0JEUUVUZ0FQQUJVQUhBQ0hzZ1FkSGhFU09iQUVFTEFUMExBRUVMQVcwQUN3QUVWWXNBUXZHN0VFR0Q1WnNBQkZXTEFNTHh1eERCQStXYklhREFRUkVqbXdHaSswdnhyUEdnSmR0SjhhcnhvQ2NiTC9HZ0Zkc2c4YUFYRzBMeG8vR2dKZHRNOGEzeG9DY2JJUUFRb3JXQ0hZRy9SWnNBd1FzaFFCQ2l0WUlkZ2I5Rm13QkJDeUZnRUtLMWdoMkJ2MFdUQXhFelEyTmpNeUFCY1hGQVlHSXlJQU5RVWhGaFlnTmdFaUJnY2hKaVpiZStHUDFBRU9Dd0Y4NEpEZS92RURIUDJmRGFRQkFxSCszSDJpRHdKZUVxTUNKNS85aS83aTVUcWUvb2tCTS90RW03aTZBbm0xazVleEFBRUFGZ0FBQk4wRnd3QVBBRWF5QWhBUkVSSTVBTEFBUlZpd0JpOGJzUVljUGxtd0FFVllzQTh2RzdFUEhENVpzQUJGV0xBTUx4dXhEQkErV2JJQkJnd1JFam13QmhDeUNBRUtLMWdoMkJ2MFdUQXhBUmMzQVRZMk14Y0hJZ1lIQVNNQk13SkRJU01CQ0RPR1p5NEJRRUFmL255cS9nZlFBWGFDZ1FNL2wzZ0JxenhVKzNrRnNBQUJBQzRBQUFRTEJFMEFFUUJHc2dJU0V4RVNPUUN3QUVWWXNBVXZHN0VGR0Q1WnNBQkZXTEFSTHh1eEVSZytXYkFBUlZpd0RpOGJzUTRRUGxteUFRVU9FUkk1c0FVUXNnb0JDaXRZSWRnYjlGa3dNUUVYTnhNMk16SVhCeVlqSWdZSEFTTUJNd0hiRnhtZFRheEhJeFVOSFI4OEVQN1hqZjZEdlFFOFpHUUNIL0lZbEFnd0xmeTBCRG9BQUFJQVovOXpCUG9HTkFBVEFDY0FVcklGS0NrUkVqbXdCUkN3R2RBQXNBQkZXTEFOTHh1eERSdytXYkFBUlZpd0F5OGJzUU1RUGxtd0J0Q3dEUkN3RU5DeUZ3RUtLMWdoMkJ2MFdiQWEwTEFERUxJa0FRb3JXQ0hZRy9SWnNDSFFNREVCRUFBSEZTTTFKZ0FETlJBQU56VXpGUllBRVNjMEFpY1ZJelVHQWhVVkZCSVhOVE1WTmhJMUJQcisvdU81NWY3eEFRRU81N25pQVFPL21ZMjVrNk9ra3JtUGx3S3AvdDMra1NPQmZ4OEJjUUVqWUFFa0FYWWZkbmdsL3BEKzJRZmdBUWtqWVdRZi91N2ZYZDcrN0I5bVpDSUJDK0lBQUFJQVcvK0pCRFFFdFFBVEFDVUFXTElESmljUkVqbXdBeEN3SE5BQXNBQkZXTEFETHh1eEF4ZytXYkFBUlZpd0VDOGJzUkFRUGxtd0F4Q3dCdEN3RUJDd0RkQ3dFQkN5SXdFS0sxZ2gyQnYwV2JBVTBMQURFTElkQVFvcldDSFlHL1Jac0JyUU1ERVROQkkzTlRNVkZoSVZGUlFDQnhVak5TWUNOUUUyTmpVMEppY1ZJelVHQmhVVUZoYzFNMXZVdWJtNjJkMjJ1YlRaQWtaamRuUmx1V0p5Y1dPNUFpZlNBU29pY0c4Zy90amRFTmorMkIxcmJCOEJKOXorZVIvTnE1SFFJR0poSWRDbGtzc2laZ0FBQXdDYy8rc0did2RSQUN3QVFBQkpBS2F5Q2twTEVSSTVzQW9Rc0RMUXNBb1FzRW5RQUxBQVJWaXdGQzhic1JRY1BsbXdBRVZZc0Ewdkc3RU5FRDVac0JRUXNBRFFzQTBRc0FmUXNnb05GQkVTT2JBVUVMSVZBUW9yV0NIWUcvUlpzQTBRc2h3QkNpdFlJZGdiOUZteUlCUU5FUkk1c0NYUXNCVVFzQ3pRc0JRUXNEalFzRGd2c0MvUXNpMENDaXRZSWRnYjlGbXdMeEN3Tk5Dd05DK3lQQUlLSzFnaDJCdjBXYkE0RUxCRTBMQkowTEJKTHpBeEFUSVdGUkVVQmlNaUppY0dCaU1pSmljUk5EWXpGU0lHRlJFVUZqTXlOalVSTXhFVUZqTXlOalVSTkNZakV4VWpJaTRDSXlJVkZTTTFORFl6TWg0Q0FUWTNOVE1WRkFZSEJOdTcyZG03Y0xJME5MQnd1ZGdFMkwxamNYSmljb0xCZ25OamNHOWthQ3RRZ3JnMEdIR0FmMjRvU0w5cS9rQkNBNTFiT3dXdjhOYjl4dFR3VlZoWVZlak5Ba3JVOFo2ZGlmM0VqSnVKZkFHcy9sUjZpNXlNQWpxSW53SENmeUpRREhBUEpHNXNFVkliL3BCUVBHbG1NblVnQUFNQWZ2L3JCYW9GOFFBckFEOEFTQUNzc2dsSlNoRVNPYkFKRUxBODBMQUpFTEJJMEFDd0FFVllzQk12RzdFVEdENVpzQUJGV0xBTUx4dXhEQkErV2JBVEVMQUEwTEFNRUxBSDBMSUpEQk1SRWptd0V4Q3lGQUVLSzFnaDJCdjBXYkFNRUxJYkFRb3JXQ0hZRy9SWnNoOFREQkVTT2JBazBMQVVFTEFyMExBVEVMQTMwTEEzTDdBdDBMQXRMN0lzQWdvcldDSFlHL1Jac0MwUXNEUFFzRE12c2pzQ0NpdFlJZGdiOUZtd054Q3dROUN3UXkrd1NOQ3dTQzh3TVFFeUZoVVJGQVlqSWljR0JpTWlKaWNSTkRZekZTSUdGUkVVRmpNeU5qVTFNeFVXRmpNeU5qVVJOQ1lqRXhVaklpNENJeUlWRlNNMU5EWXpNaDRDQVRZM05UTVZGQVlIQkVLb3dNQ28wRjh2bkdLandRVEFxRkpkWEZOaWI3a0JjR0ZSWFYxUnFpeFBmc0F3R0hLQWYyOHBTcmR0L2tGQkE1NWJPd1JFMjhMKzM4SGFsVXRLMExzQk1zSGJtSWg4L3Q1N2lYaG42KzVuZFloOUFTRjhpQUhIZnlCU0MyOFBKRzVzRWxBYy9vWk9QMmhtTW5VZ0FBSUFuUC9zQm5VSEF3QWdBQ2dBZ3JJSEtTb1JFam13QnhDd0o5QUFzQUJGV0xBUEx4dXhEeHcrV2JBQVJWaXdGeThic1JjY1BsbXdBRVZZc0NBdkc3RWdIRDVac0FCRldMQUtMeHV4Q2hBK1diQUUwTElIQ2c4UkVqbXdDaEN5RXdFS0sxZ2gyQnYwV2JBYzBMQVBFTEFuMExBbkw3QW8wTEFvTDdJaUJnb3JXQ0hZRy9SWnNDZ1FzQ1hRc0NVdk1ERUJFUlFHSXlJbUp3WUdJeUltSnhFekVSUVdNekkyTlJFekVSUVdNekkyTlJFbE5TRVhJUlVqTlFaMTRjTnRxekUwc25HOTF3SEJjbUp5Z3NkOGFXcDYvRUlETEFIK3RhZ0ZzUHZleHR4WFdWbFgyOE1FSnZ2ZGU0cUpmQVFqKzkxOWlJbDlCQ0xvYTJ0OWZRQUFBZ0NCLytzRnJRV3dBQjRBSmdDRnNnWW5LQkVTT2JBR0VMQWowQUN3QUVWWXNBMHZHN0VOR0Q1WnNBQkZXTEFWTHh1eEZSZytXYkFBUlZpd0hpOGJzUjRZUGxtd0FFVllzQWd2RzdFSUVENVpzQVRRc0FRdnNnWUlEUkVTT2JBSUVMSVJBUW9yV0NIWUcvUlpzQnJRc0EwUXNDWFFzQ1V2c0NiUXNDWXZzaUFHQ2l0WUlkZ2I5Rm13SmhDd0k5Q3dJeTh3TVFFUkZBWWpJaWNHSXlJbUp4RXpFUllXTXpJMk5SRXpFUlFXTXpJMk54RUJOU0VYSVJVak5RV3R5cTdHV1YvT3A4QUJ1UUZiVTJKdnVtVmNXV1VCL0pNRExBUCtzNmtFT3YwbnNNYVVsTU93QXR6OUkyWjFlR2NDMmYwblozaDFaZ0xkQVF0cmE0Q0FBQUFCQUhYK2hBUzhCY1VBR1FCSnNoZ2FHeEVTT1FDd0FDK3dBRVZZc0Fvdkc3RUtIRDVac0FCRldMQUNMeHV4QWhBK1diQUtFTEFPMExBS0VMSVJBUW9yV0NIWUcvUlpzQUlRc2hrQkNpdFlJZGdiOUZrd01RRWpFU1lBTlRVMEVpUXpNZ0FYSXlZbUl5SUNGUlVVRWhjekF4Uy8yUDc0amdFQW9QY0JJQUxCQXJXaG9NM0ZuWHoraEFGc0hBRlcvL1N4QVNDZi92amducXorL05UMHl2NzdCQUFCQUdUK2dnUGdCRTRBR1FCSnNoZ2FHeEVTT1FDd0FDK3dBRVZZc0Fvdkc3RUtHRDVac0FCRldMQUNMeHV4QWhBK1diQUtFTEFPMExBS0VMSVJBUW9yV0NIWUcvUlpzQUlRc2hnQkNpdFlJZGdiOUZrd01RRWpFU1lDTlRVME5qWXpNaFlWSXpRbUl5SUdGUlVVRmhjekFxSzVzZFIzMTR1ejhLK1BaWVNjbG9KdC9vSUJjQjRCSnRram1mbUs0YWhsak5xMUg2amJBd0FBQVFCMEFBQUVrQVUrQUJNQUV3Q3dEaSt3QUVWWXNBUXZHN0VFRUQ1Wk1ERUJCUWNsQXlNVEpUY0ZFeVUzQlJNekF3VUhKUUpZQVNGRS90MjJxT0grMzBRQkpjMysza1lCSTd5bDV3RWxTUDdnQWI2c2U2cit2d0dPcTN1ckFXMnJmYXNCUy81b3EzcXFBQUg4WndTbS95Y0YvQUFIQUJFQXNBQXZzZ01HQ2l0WUlkZ2I5Rmt3TVFFVkp6Y2hKeGNWL1EybUFRSWJBYVVGSTMwQjZXd0IyQUFBQWZ4eEJSZi9aQVlWQUJNQUxnQ3dEaSt3Q05Dd0NDK3lBQUlLSzFnaDJCdjBXYkFPRUxBRjBMQUZMN0FPRUxJUEFnb3JXQ0hZRy9SWk1ERUJNaFlWRlNNMU5DTWlCd2NHQnlNMU1qNEMvblp2ZjRCeUtpMXZpWFk4YkdyQlJ3WVZiRzRrRG5BU0x6b0NmaHRURVFBQi9XWUZGdjVVQmxjQUJRQU1BTEFCTDdBRjBMQUZMekF4QVRVekZSY0gvV2F6TzAwRjNIdU1kRUVBQUFIOXBBVVcvcE1HVndBRkFBd0FzQU12c0FEUXNBQXZNREVCSnpjbk14WDk4VTA3QWJVRkZrRjBqSHNBQ1BvYi9zUUJ0Z1d2QUF3QUdnQW5BRFVBUWdCUEFGd0FhZ0I2QUxCRkw3QlRMN0JnTDdBNEw3QUFSVml3QWk4YnNRSWNQbG15Q1FzS0sxZ2gyQnYwV2JCRkVMQVEwTEJGRUxKTUN3b3JXQ0hZRy9SWnNCZlFzRk1Rc0I3UXNGTVFzbG9MQ2l0WUlkZ2I5Rm13SmRDd1lCQ3dLOUN3WUJDeVp3c0tLMWdoMkJ2MFdiQXkwTEE0RUxJL0N3b3JXQ0hZRy9SWk1ERUJORFl5RmhVak5DWWpJZ1lWQVRRMk16SVdGU00wSmlNaUJoVVRORFl6TWhZVkl6UW1JZ1lWQVRRMk16SVdGU00wSmlNaUJoVUJORFl5RmhVak5DWWpJZ1lWQVRRMk1oWVZJelFtSXlJR0ZRRTBOak15RmhVak5DWWlCaFVUTkRZek1oWVZJelFtSXlJR0ZmMEljNzUwY0RNd0xqTUIzblJkWDNWeE5TNHNNMGgxWFY5MGNEVmNNLzdMZEYxZmRIQTFMaTB6L1U5enZuUndNekF1TS8xTmRMNTBjRE13TGpQKzNuVmRYM1J3TlZ3ek5YVmRYM1Z4TlM0dE13VHpWR2hvVkM0M05URCs2MVJvWjFVeE5EVXcvZ2xWWjJoVU1UUTNMdjM1Vkdob1ZERTBOeTcrNUZSb2FGUXVOemN1QlJwVWFHaFVMamMxTVA0SlZXZG9WREUwTnk3OStWVm5aMVV4TkRVd0FBajZMUDVqQVdzRnhnQUVBQWtBRGdBVEFCZ0FIUUFpQUNjQU9RQ3dJUyt3RWkrd0N5K3dHeSt3Smkrd0FFVllzQWN2RzdFSEhENVpzQUJGV0xBV0x4dXhGaG8rV2JBQVJWaXdBaThic1FJU1Bsa3dNUVVYQXlNVEF5Y1RNd01CTndVVkpRVUhKVFVGQVRjbEZ3VUJCd1VuSlFNbkF6Y1RBUmNUQndQK0x3dDZZRVk2REhwZ1JnSWREUUZOL3FiN2RRMytzd0ZhQTV3Q0FVQkUvdHY4OHdMK3dFVUJKaXNSbEVIR0EyQVJsRUxFUEE3K3JRRmhCS0lPQVZMK29QNFJESHhpUnpzTWZHSkhBYTRRbVVUSS9JNFJtVVhJQXVRQ0FVWkYvdFg4NHdMK3UwY0JLd0FBQXYvY0FBQUQvQVp4QUJFQUdnQjBzaFFiSEJFU09iQVVFTEFEMEFDd0FFVllzQXd2RzdFTUhENVpzQUJGV0xBUUx4dXhFQncrV2JBQVJWaXdDQzhic1FnUVBsbXdFQkN5QUFFS0sxZ2gyQnYwV2JJQ0RBZ1JFam13QWkrd0FCQ3dDdEN3QzlDd0FoQ3lFZ0VLSzFnaDJCdjBXYkFJRUxJVEFRb3JXQ0hZRy9SWk1ERUJJUkVoRmhZUUJnY2hFU00xTXpVekZTRUJFU0V5TmpVMEppY0NsdjYvQVJpNzFOUzMvaXEvdjdvQlFmNi9BUkpwY1c5a0JSajkwZ0xLL3JiUkF3VVltTUhCL0tMK1JYZGtZWDBDQUFJQXFBQUFCTmNGc0FBT0FCc0FWTElFSEIwUkVqbXdCQkN3RjlBQXNBQkZXTEFETHh1eEF4dytXYkFBUlZpd0FTOGJzUUVRUGxteUZnTUJFUkk1c0JZdnNnQUJDaXRZSWRnYjlGbXlDUUFERVJJNXNBTVFzaFFCQ2l0WUlkZ2I5Rmt3TVFFUkl4RWhNZ1FWRkFjWEJ5Y0dJd0UyTlRRbUp5RVJJVEkzSnpjQmFjRUNHZXdCRTJkK2JZdDJxQUVaSmFXUi9xQUJXR0pGYm00Q092M0dCYkR5eTdwd2ltZVpOd0ViUVZ1Q25RTDl4UjE1WmdBQUFnQ00vbUFFSXdST0FCTUFJZ0Ixc2h3akpCRVNPYkFjRUxBUTBBQ3dBRVZZc0JBdkc3RVFHRDVac0FCRldMQU5MeHV4RFJnK1diQUFSVml3Q2k4YnNRb1NQbG13QUVWWXNBY3ZHN0VIRUQ1WnNnSUhFQkVTT2JJSkVBY1JFam15RGhBSEVSSTVzQkFRc2hjQkNpdFlJZGdiOUZtd0J4Q3lIQUVLSzFnaDJCdjBXVEF4QVJRSEZ3Y25CaU1pSnhFakVUTVhOak15RWhFbk5DWWpJZ2NSRmpNeU55YzNGellFSG1wdmJtNVpjOFZ4dWFrSmNjbkQ0N21jaUtoVVU2dFNQR1p1V2pJQ0VlNlhmV1o3T0gzOTl3WGFlSXorMnY3NkJMZlVsZjM3bENkeloyZGlBQUFCQUtJQUFBUWpCd0FBQ1FBMXNnTUtDeEVTT1FDd0NDK3dBRVZZc0FZdkc3RUdIRDVac0FCRldMQUVMeHV4QkJBK1diQUdFTElDQVFvcldDSFlHL1JaTURFQkl4VWhFU01SSVJFekJDTUQvVUxBQXNpNUJSZ0crdTRGc0FGUUFBQUJBSkVBQUFOQ0JYWUFCd0F1QUxBR0w3QUFSVml3QkM4YnNRUVlQbG13QUVWWXNBSXZHN0VDRUQ1WnNBUVFzZ0FCQ2l0WUlkZ2I5Rmt3TVFFaEVTTVJJUkV6QTBMK0Nib0IrTGtEb2Z4ZkJEb0JQQUFCQUxIKzN3UjhCYkFBRlFCYnNnb1dGeEVTT1FDd0NTK3dBRVZZc0JRdkc3RVVIRDVac0FCRldMQVNMeHV4RWhBK1diQVVFTElBQVFvcldDSFlHL1Jac2dNVUNSRVNPYkFETDdBSkVMSUtBUW9yV0NIWUcvUlpzQU1Rc2hBQkNpdFlJZGdiOUZrd01RRWhFVE1nQUJFUUFpTW5NalkxSmlZakl4RWpFU0VFTVAxQ3NnRWNBVHoxNUFLUmtBSE16clhCQTM4RkV2NHYvcy8rOFA3NC91ZVR3OHZMMVAxaEJiQUFBQUVBa2Y3bEE3NEVPZ0FXQUZ1eUN4Y1lFUkk1QUxBS0w3QUFSVml3RlM4YnNSVVlQbG13QUVWWXNCTXZHN0VURUQ1WnNCVVFzZ0FCQ2l0WUlkZ2I5Rm15QXhVS0VSSTVzQU12c0FvUXNnc0JDaXRZSWRnYjlGbXdBeEN5RVFFS0sxZ2gyQnYwV1RBeEFTRVJNeklBRlJRR0JnY25OalkxTkNZakl4RWpFU0VEUHY0TmJPOEJHR0txZFRDQWVMS1ljTG9DclFPaC91VCsvTmRpeUlZVmtpR1plWkdvL2gwRU9nQUFBUUNqQUFBRS93V3dBQlFBWWdDd0FFVllzQUF2RzdFQUhENVpzQUJGV0xBTUx4dXhEQncrV2JBQVJWaXdBaThic1FJUVBsbXdBRVZZc0Fvdkc3RUtFRDVac0EvUXNBOHZzaThQQVYyeXp3OEJYYklJQVFvcldDSFlHL1Jac2dFSUR4RVNPYkFGMExBUEVMQVMwREF4Q1FJakFTTVZJelVqRVNNUk14RXpFVE1STXdFRTB2NXdBYjN4L3FKUWxHakJ3V2lVVFFGREJiRDlUdjBDQW83MDlQMXlCYkQ5ZndFQS93QUNnUUFBQVFDYUFBQUVmd1E2QUJRQWV3Q3dBRVZZc0Ewdkc3RU5HRDVac0FCRldMQVVMeHV4RkJnK1diQUFSVml3Q2k4YnNRb1FQbG13QUVWWXNBTXZHN0VERUQ1WnNBb1FzQTdRc0E0dnNwOE9BVjJ5L3c0QlhiS2ZEZ0Z4dEw4T3p3NENYYkl2RGdGZHNtOE9BWEt5Q1FFS0sxZ2gyQnYwV2JJQkNRNFJFam13QmRDd0RoQ3dFdEF3TVFrQ0l3RWpGU00xSXhFakVUTVJNelV6RlRNQkJGcityZ0YzNi83ck1wUmx1cnBsbENvQkF3UTYvZjc5eUFITndzTCtNd1E2L2piVjFRSEtBQUVBUkFBQUJvc0ZzQUFPQUdzQXNBQkZXTEFHTHh1eEJodytXYkFBUlZpd0NpOGJzUW9jUGxtd0FFVllzQUl2RzdFQ0VENVpzQUJGV0xBTkx4dXhEUkErV2JJSUJnSVJFam13Q0MreUx3Z0JYYkxQQ0FGZHNnRUJDaXRZSWRnYjlGbXdCaEN5QkFFS0sxZ2gyQnYwV2JJTUFRZ1JFamt3TVFFakVTTVJJVFVoRVRNQk13RUJJd09Rc01IK0pRS2NsZ0g4Ny8zVUFsYnNBbzc5Y2dVWW1QMStBb0w5UC8wUkFBRUFQZ0FBQlgwRU9nQU9BSUFBc0FCRldMQUdMeHV4QmhnK1diQUFSVml3Q2k4YnNRb1lQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFOTHh1eERSQStXYkFDRUxBSjBMQUpMN0tmQ1FGZHN2OEpBVjJ5bndrQmNiUy9DYzhKQWwyeUx3a0JYYkp2Q1FGeXNnQUJDaXRZSWRnYjlGbXdCaEN5QkFFS0sxZ2gyQnYwV2JJTUFBa1JFamt3TVFFakVTTVJJVFVoRVRNQk13RUJJd01iaUxyK1pRSlZlZ0ZyNGY1VEFkSHJBYzMrTXdPaG1mNDJBY3I5K1AzT0FBQUJBS2dBQUFlRUJiQUFEUUJlQUxBQVJWaXdBaThic1FJY1BsbXdBRVZZc0F3dkc3RU1IRDVac0FCRldMQUdMeHV4QmhBK1diQUFSVml3Q2k4YnNRb1FQbG13QWRDd0FTK3lMd0VCWGJBQ0VMSUVBUW9yV0NIWUcvUlpzQUVRc2dnQkNpdFlJZGdiOUZrd01RRWhFU0VWSVJFakVTRVJJeEV6QVdrQzNnTTkvWVBBL1NMQndRTStBbktZK3VnQ29mMWZCYkFBQVFDUkFBQUZhUVE2QUEwQW13Q3dBRVZZc0FJdkc3RUNHRDVac0FCRldMQU1MeHV4REJnK1diQUFSVml3Qmk4YnNRWVFQbG13QUVWWXNBb3ZHN0VLRUQ1WnNBWVFzQUhRc0FFdnNtOEJBVjIwdndIUEFRSmRzajhCQVhHMHp3SGZBUUp4c2c4QkFYSzBud0d2QVFKeHN2OEJBVjJ5RHdFQmNiS2ZBUUZkc2k4QkFWMjBid0YvQVFKeXNBSVFzZ1FCQ2l0WUlkZ2I5Rm13QVJDeUNBRUtLMWdoMkJ2MFdUQXhBU0VSSVJVaEVTTVJJUkVqRVRNQlN3SHhBaTMrakxuK0Q3cTZBbVVCMVpuOFh3SE8vaklFT2dBQUFRQ3cvdDhIelFXd0FCY0FhTElSR0JrUkVqa0FzQWN2c0FCRldMQVdMeHV4Rmh3K1diQUFSVml3RkM4YnNSUVFQbG13QUVWWXNCRXZHN0VSRUQ1WnNnRVdCeEVTT2JBQkw3QUhFTElJQVFvcldDSFlHL1Jac0FFUXNnNEJDaXRZSWRnYjlGbXdGaEN5RWdFS0sxZ2gyQnYwV1RBeEFUTWdBQkVRQWlNbk1qWTFKaVlqSXhFakVTRVJJeEVoQlA5MkFSd0JQUFhrQXBHUUFjek9lY0g5TXNBRVR3TkIvcy8rOFA3NC91ZVR3OHZMMVAxaEJSTDY3Z1d3QUFBQkFKSCs1UWF3QkRvQUdBQm9zaElaR2hFU09RQ3dDQyt3QUVWWXNCY3ZHN0VYR0Q1WnNBQkZXTEFWTHh1eEZSQStXYkFBUlZpd0VpOGJzUklRUGxteUFSY0lFUkk1c0FFdnNBZ1FzZ2tCQ2l0WUlkZ2I5Rm13QVJDeUR3RUtLMWdoMkJ2MFdiQVhFTElUQVFvcldDSFlHL1JaTURFQk16SUFGUWNHQmdjbk5qWTFOQ1lqSXhFakVTRVJJeEVoQS9hZytBRWlBeFRSbVRCOGU3eWdwTG4rRHJvRFpRS0YvdnpYSnFQaEc1SWdsbjJTcC80ZEE2SDhYd1E2QUFJQWNmL2tCYUlGeFFBb0FEWUFtN0lZTnpnUkVqbXdHQkN3S2RBQXNBQkZXTEFOTHh1eERSdytXYkFBUlZpd0h5OGJzUjhjUGxtd0FFVllzQVF2RzdFRUVENVpzQURRc0FBdnNnSUVIeEVTT2JBQ0w3QU5FTElPQVFvcldDSFlHL1Jac0FRUXNoVUJDaXRZSWRnYjlGbXdBaEN5TEFFS0sxZ2gyQnYwV2JJWEFpd1JFam15Sml3Q0VSSTVzQUFRc2lnQkNpdFlJZGdiOUZtd0h4Q3lNd0VLSzFnaDJCdjBXVEF4QlNJbkJpTWlKQUkxTlRRU05qTVhJZ1lWRlJRU016STNKZ0kxTlRRMk5qTXlFaFVWRkFJSEZqTUJGQllYTmpZMU5UUW1JeUlHRlFXaTE3T09yTEwrNUo5MTBvUUJkcFRzdjBZNGVZUm92WGEyNW05bWFIbjlmWGgxWW1oNVkyRjZIRWxDc2dGQ3hLeXhBU0tqcGY3WnB1eisxdzFoQVJXcTQ1cjlqZjdNL2V1ZS92WmZHZ0kwbU8xS1NPZU4rYkhPMHJJQUFBSUFiZi9yQkp3RVR3QWtBQzhBb3JJRU1ERVJFam13QkJDd0pkQUFzQUJGV0xBTUx4dXhEQmcrV2JBQVJWaXdIQzhic1J3WVBsbXdBRVZZc0FRdkc3RUVFRDVac0FCRldMQUFMeHV4QUJBK1diSUNCQndSRWptd0FpK3dEQkN5RFFFS0sxZ2gyQnYwV2JBRUVMSVVBUW9yV0NIWUcvUlpzQUlRc2ljQkNpdFlJZGdiOUZteUZoUW5FUkk1c0FBUXNpUUJDaXRZSWRnYjlGbXlJaWNrRVJJNXNCd1FzaXdCQ2l0WUlkZ2I5Rmt3TVFVaUp3WWpJaVlDTlRVMEVqTVZJZ1lWRlJRV016STNKaEUxTkRZek1oWVZGUlFIRmpNQkZCYzJOelUwSmlJR0J3U2Nzb3gyajR6aGY4V2JTVjJwaVM0c3dhMlBqTEtBVDJIK0Q1OW1BMGw0UmdFTU9VS1ZBUktuT3MwQkRwNnRrampCOEF1aUFSRmV3T3Y1em1Mam5SVUJxZFowYzdwMWdwNk5lZ0FBQVFBMC9xRUdrd1d3QUJNQVd3Q3dFUyt3QUVWWXNBY3ZHN0VISEQ1WnNBQkZXTEFNTHh1eERCdytXYkFBUlZpd0V5OGJzUk1RUGxtd0J4Q3lDQUVLSzFnaDJCdjBXYkFBMExBSEVMQUYwTEFEMExBQzBMQVRFTElLQVFvcldDSFlHL1Jac0E3UU1ERUJJVFVoTlRNVklSVWhFU0VSTXhFekF5TVJJUUdyL29rQmQ4RUJnZjUvQXM3Qm1CS3MrOVlGR0pjQkFaZjdoUVVUK3ZIK0FBRmZBQUVBSC82L0JSWUVPZ0FQQUVzQXNBMHZzQUJGV0xBREx4dXhBeGcrV2JBQVJWaXdEeThic1E4UVBsbXdBeEN5QkFFS0sxZ2gyQnYwV2JBQTBMQVBFTElHQVFvcldDSFlHL1Jac0FNUXNBalFzQVlRc0FyUU1ERUJJVFVoRlNNUklSRXpFVE1ESXhFaEFUSCs3Z0xFK1FIeXVvQVNwZnpTQTZPWGwvejBBNlA4WGY0b0FVRUFBUUNXQUFBRXlBV3dBQmNBVDdJRUdCa1JFamtBc0FCRldMQUFMeHV4QUJ3K1diQUFSVml3Q2k4YnNRb2NQbG13QUVWWXNBd3ZHN0VNRUQ1WnNnY0FEQkVTT2JBSEw3QUUwTEFIRUxJUUFRb3JXQ0hZRy9SWnNCUFFNREVCRVJZV014RXpFVFkzRVRNUkl4RUdCeFVqTlNJbUp4RUJWd0dKb0pWNWVNSEJjbitWK084RUJiRCtNcHFFQVRiKzBnMGhBcmI2VUFKYklnM3U2Tm5hQWRjQUFBRUFnd0FBQTlrRU93QVdBRSt5QmhjWUVSSTVBTEFBUlZpd0N5OGJzUXNZUGxtd0FFVllzQlV2RzdFVkdENVpzQUJGV0xBQUx4dXhBQkErV2JJUEZRQVJFam13RHkreUJ3RUtLMWdoMkJ2MFdiQUUwTEFQRUxBUzBEQXhJU01SQmdjVkl6VW1KaWNSTXhFV0Z4RXpFVFkzRVRNRDJicEdVNWF3dXdLNUJhK1dWRVc2QVlnVENZZUZEY3kxQVVQK3RkTWFBUmorNmdvUkFob0FBQUVBaWdBQUJMd0ZzQUFSQUVheUJSSVRFUkk1QUxBQVJWaXdBUzhic1FFY1BsbXdBRVZZc0FBdkc3RUFFRDVac0FCRldMQUpMeHV4Q1JBK1diSUZBUUFSRWptd0JTK3lEZ0VLSzFnaDJCdjBXVEF4TXhFekVUWXpNaFlYRVNNUkppWWpJZ2NSaXNHNXl2bnlBOEVCaWFPN3lBV3cvYVUxMk4vK0xRSE9tSVkzL1VzQUFBSUFQLy9xQmIwRnd3QWRBQ1VBWkxJWEppY1JFam13RnhDd0pOQUFzQUJGV0xBUEx4dXhEeHcrV2JBQVJWaXdBQzhic1FBUVBsbXlIdzhBRVJJNXNCOHZzaE1CQ2l0WUlkZ2I5Rm13Qk5Dd0h4Q3dDOUN3QUJDeUdBRUtLMWdoMkJ2MFdiQVBFTElqQVFvcldDSFlHL1JaTURFRklBQVJOU1ltTlRNVUZoYzBFall6SUFBUkZTRVZGQll6TWpjWEJnWUJJVFUwSmlNaUFnUHAvdUwrczVtbW1GQlhqdjJXQVFJQkhQeUMzc3l6cGk5QTB2M2dBcjZ6cTU3Q0ZnRlJBU2xiRThXaVduMFV0QUVmb3Y2ai9yNXNYZHozVTQ4dE5RTmFJZG5sL3YwQUF2L2UvK3dFWXdST0FCa0FJUUJ5c2hRaUl4RVNPYkFVRUxBYjBBQ3dBRVZZc0Ewdkc3RU5HRDVac0FCRldMQUFMeHV4QUJBK1diSWVEUUFSRWptd0hpKzB2eDdQSGdKZHNoRUJDaXRZSWRnYjlGbXdBOUN3SGhDd0NkQ3dBQkN5RlFFS0sxZ2gyQnYwV2JJWERRQVJFam13RFJDeUdnRUtLMWdoMkJ2MFdUQXhCU0lBTlNZbU5UTVVGejRDTXpJU0VSVWhGaFl6TWpjWEJnRWlCZ2NoTlNZbUFyM2MvdXg0ZDVObEZJVEljTlBxL1NNRXM0cXViM0dJL3Rsd21CSUNIZ2lJRkFFaCtoMnVocE13Z3NsdS91cisvVTJneFpKWTBRUEtvNU1PalpzQUFBRUFvLzdXQk13RnNBQVdBRjJ5RlJjWUVSSTVBTEFPTDdBQVJWaXdBaThic1FJY1BsbXdBRVZZc0FZdkc3RUdIRDVac0FCRldMQUFMeHV4QUJBK1diSUVBQUlSRWptd0JDK3dDTkN3RGhDeUR3RUtLMWdoMkJ2MFdiQUVFTElXQVFvcldDSFlHL1JaTURFaEl4RXpFVE1CTXdFV0FCVVFBaU1uTWpZMUppWW5JUUZrd2NHRkFnSGkvZmo0QVEzNTVnS1FrQUxIeC83c0JiRDlqd0p4L1lnVy90TDYvdmorNUpqQnljclNBUUFBQVFDYS92NEVHUVE2QUJZQWViSU5GeGdSRWprQXNBY3ZzQUJGV0xBUkx4dXhFUmcrV2JBQVJWaXdGUzhic1JVWVBsbXdBRVZZc0E4dkc3RVBFRDVac0JQUXNCTXZzcDhUQVYyeS94TUJYYktmRXdGeHRMOFR6eE1DWGJJdkV3RmRzczhUQVhHd0FOQ3dCeEN5Q0FFS0sxZ2gyQnYwV2JBVEVMSU9BUW9yV0NIWUcvUlpNREVCRmhZVkZBWUdCeWMyTlRRbUp5TVJJeEV6RVRNQk13Si93ODVrckhBdytLMmxzcnE2V3dHSzRBSmtIK0swWGNWOEU1STU1b3FTQXY0ekJEcitOZ0hLQUFBQkFMSCtTd1QrQmJBQUZRQ25zZ29XRnhFU09RQ3dBRVZZc0FBdkc3RUFIRDVac0FCRldMQURMeHV4QXh3K1diQUFSVml3Q0M4YnNRZ1NQbG13QUVWWXNCTXZHN0VURUQ1WnNBTFFzQUl2c2w4Q0FWMnl6d0lCWGJJZkFnRnh0RzhDZndJQ2NiUy9BczhDQW5HMER3SWZBZ0p5c3U4Q0FYR3lud0lCY2JKUEFnRnhzdjhDQVYyeXJ3SUJYYkl2QWdGZHNqOENBWEt3Q0JDeURRRUtLMWdoMkJ2MFdiQUNFTElSQVFvcldDSFlHL1JaTURFQkVTRVJNeEVVQmlNaUp6Y1dNekkyTlJFaEVTTVJBWElDek1Dcm5EdzJEaVU5UVVqOU5NRUZzUDF1QXBMNS9haTZFcG9PWjF3QzFmMS9CYkFBQUFFQWtmNUxBL1VFT2dBV0FKK3lDaGNZRVJJNUFMQUFSVml3QUM4YnNRQVlQbG13QUVWWXNBTXZHN0VER0Q1WnNBQkZXTEFJTHh1eENCSStXYkFBUlZpd0ZDOGJzUlFRUGxtd0F0Q3dBaSt5YndJQlhiUy9BczhDQWwyeVB3SUJjYlRQQXQ4Q0FuR3lEd0lCY3JTZkFxOENBbkd5L3dJQlhiSVBBZ0Z4c3A4Q0FWMnlMd0lCWGJSdkFuOENBbkt3Q0JDeURnRUtLMWdoMkJ2MFdiQUNFTElTQVFvcldDSFlHL1JaTURFQkVTRVJNeEVVQmlNaUp6Y1dGeGN5TmpVUklSRWpFUUZMQWZHNXE1ZzhOQThSUEJSQ1NQNFB1Z1E2L2lzQjFmdHRxcklTa3djRkFXaGNBaWYrTWdRNkFBQUNBRjMvN0FVU0JjUUFGd0FmQUY2eUNDQWhFUkk1c0FnUXNCalFBTEFBUlZpd0FDOGJzUUFjUGxtd0FFVllzQWd2RzdFSUVENVpzZzBBQ0JFU09iQU5MN0FBRUxJUkFRb3JXQ0hZRy9SWnNBZ1FzaGdCQ2l0WUlkZ2I5Rm13RFJDeUd3RUtLMWdoMkJ2MFdUQXhBU0FBRVJVVUFnUWpJQUFSTlNFMUVBSWpJZ2NISnpjMkFUSVNOeUVWRkJZQ2dBRXVBV1NjL3Vxbi91UCt3UVAwOU4ybGl6MHZGcDRCSWFuZUQvelAwd1hFL29mK3NWVEYvcisyQVZrQlJYVUhBUUlCSERvYWp3MVkrc1lCQmRzaTJ1UUFBUUJvLytzRUxBV3dBQnNBWjdJTEhCMFJFamtBc0FCRldMQUNMeHV4QWh3K1diQUFSVml3Q3k4YnNRc1FQbG13QWhDeUFBRUtLMWdoMkJ2MFdiQUUwTElGQWdzUkVqbXdCUyt3Q3hDd0VOQ3dDeEN5RXdFS0sxZ2gyQnYwV2JBRkVMSVpBUW9yV0NIWUcvUlpzQVVRc0J2UU1ERUJJVFVoRndFV0ZoVVVCQ01pSmlZMU14UVdNekkyTlRRbUl5TTFBeDM5ZGdOckFmNXIyZW4rOCtDRzIzYkFuSHVKbzZhZWpRVVNubjMrSGc3bnhzUG9hYjZDY3BxU2VKMk9sd0FBQVFCcC9uVUVLQVE2QUJvQVdySUxHeHdSRWprQXNBc3ZzQUJGV0xBQ0x4dXhBaGcrV2JJQUFRb3JXQ0hZRy9SWnNBVFFzZ1VDQ3hFU09iQUZMN0FMRUxBUTBMQUxFTElUQVFvcldDSFlHL1Jac0FVUXNoZ0RDaXRZSWRnYjlGbXdCUkN3R3RBd01RRWhOU0VYQVJZV0ZSUUVJeUltSmpVekZCWXpNalkxRUNVak5RTU0vWWdEWlFIK2N0VG8vdlRlaE5kNnVwNTlqYVQreWFBRG9abDIvaEVRNGNYRDUyYS9nM0dmbFhrQklnaVgvLzhBT3Y1TEJIUUZzQUFtQUxCRUFBQW1BZDZyUUFBSEFhOEE4QUFBLy84QU8vNUxBNVlFT2dBbUFPdFBBQUFtQWQ2c2pnRUhBYThBNFFBQUFBZ0FzZ0FHQVYwd01RQUNBRmNBQUFSbEJiQUFDZ0FUQUZDeUJCUVZFUkk1c0FRUXNBM1FBTEFBUlZpd0FTOGJzUUVjUGxtd0FFVllzQU12RzdFREVENVpzZ0FCQXhFU09iQUFMN0FERUxJTEFRb3JXQ0hZRy9SWnNBQVFzZ3dCQ2l0WUlkZ2I5Rmt3TVFFUk14RWhJaVExTkRZM0FSRWhJZ1lWRkJZWEE2UEMvZC9rL3ZmLzRBRnQvcUdNb1orS0EzTUNQZnBROHN2SDZ3VDlLZ0k0bG9DQ253RUFBZ0JaQUFBR1p3V3dBQmNBSHdCYXNnY2dJUkVTT2JBSEVMQVkwQUN3QUVWWXNBZ3ZHN0VJSEQ1WnNBQkZXTEFBTHh1eEFCQStXYklIQ0FBUkVqbXdCeSt3QUJDeUdBRUtLMWdoMkJ2MFdiQUswTElRQUFnUkVqbXdCeEN5R1FFS0sxZ2gyQnYwV1RBeElTSWtOVFFrTnlFUk14RTNOalkzTmljekZ4WUhCZ1lqSlJFaElnWVVGaGNDUitYKzl3RUI0d0Zxd1ZodmNnTUVRTG9XTHdNRTVjUCs3LzZnanA2WWhmVEp4dTBEQWozNjZ3RUNrbnVpcDBTWGJzUG9uUUk0bC82ZkJBQUFBZ0JrLytjR2JnWVlBQjhBS3dDRHNob3NMUkVTT2JBYUVMQXEwQUN3QUVWWXNBWXZHN0VHSGo1WnNBQkZXTEFETHh1eEF4ZytXYkFBUlZpd0dDOGJzUmdRUGxtd0FFVllzQnd2RzdFY0VENVpzZ1VER0JFU09iQVlFTElMQVFvcldDSFlHL1Jac2hFREdCRVNPYklhQXhnUkVqbXdBeEN5SWdFS0sxZ2gyQnYwV2JBY0VMSW9BUW9yV0NIWUcvUlpNREVURUJJek1oY1JNeEVHRmpNMk5qYzJKemNXRmdjT0FpTUdKd1lqSWdJMUFTWWpJZ1lWRkJZek1qY25aT0xFdDJxNUFsOU9pWmNFQkVHekhDa0NBbm5aaWZKT2JOdkE1QUxIVXFHSGxKR0lwMU1GQWdrQkNBRTlnd0pOKzBGZmVBTFF2YnJZQVdiSFpxbjVoQVM2dGdFYjlBRXhodC9lcmIrVFBnQUFBUUEyLytNRjFRV3dBQ2NBWTdJUUtDa1JFamtBc0FCRldMQUpMeHV4Q1J3K1diQUFSVml3SVM4YnNTRVFQbG15QVNnSkVSSTVzQUV2c2dBQkNpdFlJZGdiOUZtd0NSQ3lCd0VLSzFnaDJCdjBXYklQQUFFUkVqbXdJUkN5RlFFS0sxZ2gyQnYwV2JJYUlRa1JFamt3TVJNMU16WTJOVFFoSVRVaEZoWVZGQWNXRXhVVUZqTTJOamMySnpNWEZnY0dBaU1FQXpVMEppZittNStUL3N2K29BRnI3L3p0MndWVFFYU0dCQVJCdWhjd0F3VDJ4LzY5RDRkMUFubWVBbnVEKzU0QjBjbm9Za1grL0ZCUFd3TE91YnZZV0x1QS9mN1hDQUZOUUhpUUFRQUJBREgvNHdUb0JEb0FKd0Jnc2c4b0tSRVNPUUN3QUVWWXNCOHZHN0VmR0Q1WnNBQkZXTEFPTHh1eERoQStXYklDQVFvcldDSFlHL1Jac2djT0h4RVNPYklYS0I4UkVqbXdGeSt5RkFFS0sxZ2gyQnYwV2JBZkVMSWRBUW9yV0NIWUcvUlpzaVVVRnhFU09UQXhKUVl6TmpZM05pY3pGaFlIQmdZakJpWW5OVFFqSXljek5qWTFOQ1lqSVNjaEZoWVZGQWNXRndMbkFsOXdkZ01FUXJRdEdBRUU1N2lIaVFmWXpRTEFlbTU5ZGY3N0JnRVl4Tnk4dGdUVldBS2JpWm1taG9BNXpmQURjSU5IblpZQlYwcFZYWllEcDVpZFNqU3lBQUVBVXY3WEEvVUZyd0FoQUYyeUlDSWpFUkk1QUxBWEw3QUFSVml3Q1M4YnNRa2NQbG13QUVWWXNCb3ZHN0VhRUQ1WnNnRWlDUkVTT2JBQkw3SUFBUW9yV0NIWUcvUlpzQWtRc2djQkNpdFlJZGdiOUZteUR3QUJFUkk1c0JvUXNSSUtLMWpZRzl4Wk1ERVROVE0yTmpVUUlTRTFJUllXRlJRSEZoTVZNeFVVQmdjbk5qY2pKaWMxTkNZanI2bWttLzdLL3ZFQkllajA1ZDRFcVdGTmFsRU9hendEa25jQ2VaY0JmWVVCQlpjRDBzbmlaRWIrK0ttVVljaEFTSE51Tkt1UGZvMEFBQUVBZWY3SEE5a0VPZ0FnQUYyeUlDRWlFUkk1QUxBWEw3QUFSVml3Q0M4YnNRZ1lQbG13QUVWWXNCb3ZHN0VhRUQ1WnNnRWhDQkVTT2JBQkw3SUFBUW9yV0NIWUcvUlpzQWdRc2dZQkNpdFlJZGdiOUZteUR3QUJFUkk1c0JvUXNSSUtLMWpZRzl4Wk1ERVRKek0yTlRRaklUVWhGaGNXRlJRSEZoY1ZNeFVVQmdjbk5qY2pKaWMxTkNQQ0FkdnA5ZjdwQVNmZGJGYSt2UUdhWWsxcFZBMW5Nd0xhQWJpWEFxR3lsZ05uVTRTaFNUWEtUSlJoeWo1SWRIMGhoVjYwQUFFQVJQL3JCM0FGc0FBakFHS3lBQ1FsRVJJNUFMQUFSVml3RGk4YnNRNGNQbG13QUVWWXNDQXZHN0VnRUQ1WnNBQkZXTEFITHh1eEJ4QStXYkFPRUxJQUFRb3JXQ0hZRy9SWnNBY1FzZ2dCQ2l0WUlkZ2I5Rm13SUJDeUV3RUtLMWdoMkJ2MFdiSVpEaUFSRWprd01RRWhBd0lDQmdjak5UYytBamNUSVJFVUZqTXlOamMySnpjV0ZnY0dBZ2NISWlZMUJDZitHaG9QV2F5UVB5aGRaRFFMSGdOZldVK0Nsd1FDUDdvY0tRSUQ2Y011czdjRkV2Mi8vdDcrM0lrQ25RSUhhK3J6QXNMN3JHQjB6YnpBMGdGbXgyYnMvdG9TQXJxMEFBQUJBRC8vNndZNkJEb0FJUUJpc2lBaUl4RVNPUUN3QUVWWXNBd3ZHN0VNR0Q1WnNBQkZXTEFlTHh1eEhoQStXYkFBUlZpd0JpOGJzUVlRUGxtd0RCQ3lBQUVLSzFnaDJCdjBXYkFHRUxJSEFRb3JXQ0hZRy9SWnNCNFFzaEVCQ2l0WUlkZ2I5Rm15Rmg0TUVSSTVNREVCSVFNQ0JnY2pOVGMyTmpjVElSRVVGak15TmpjMkp6TVhGZ2NPQWlNaUppY0RNZjY3RnhTY3BVRTJWVTBORndLdldrOXNld1FFUWJNV01BTUNiTDU0cnJNQkE2SCtXdjdyNUFLakJBcW4wd0lQL1NGZ2ViZXJzc3RRc1h5YTVubTRzUUFCQUtuLzV3ZHhCYkFBSFFDdXNoUWVIeEVTT1FDd0FFVllzQUF2RzdFQUhENVpzQUJGV0xBWkx4dXhHUncrV2JBQVJWaXdFUzhic1JFUVBsbXdBRVZZc0Jjdkc3RVhFRDVac0JFUXNnUUJDaXRZSWRnYjlGbXlDZ0FSRVJJNXNCY1FzQnpRc0J3dnN1OGNBWEd5WHh3QlhiTFBIQUZkc2g4Y0FYRzBieHgvSEFKeHRMOGN6eHdDY2JLZkhBRnhzazhjQVhHeS94d0JYYkt2SEFGZHNpOGNBVjIwRHh3ZkhBSnlzajhjQVhLeUZRRUtLMWdoMkJ2MFdUQXhBUkVVRmpNMk5qYzJKemNXRmdjT0FpTUdKaWNSSVJFakVUTVJJUkVFNlYxS2hwUUVCRUs3R3lzQ0FudllpcXUxQ1AxQ3djRUN2Z1d3KzZ4bGJ3TE51cmZiQVdMS1o2ajdnd1M0dXdFbi9YOEZzUDF1QXBJQUFRQ1EvK2NHVFFRNkFCd0FvN0liSFI0UkVqa0FzQUJGV0xBRUx4dXhCQmcrV2JBQVJWaXdDQzhic1FnWVBsbXdBRVZZc0Jrdkc3RVpFRDVac0FCRldMQUNMeHV4QWhBK1diQUgwTEFITDdKdkJ3RmR0TDhIendjQ1hiSS9Cd0Z4dE04SDN3Y0NjYklQQndGeXRKOEhyd2NDY2JML0J3RmRzZzhIQVhHeW53Y0JYYkl2QndGZHRHOEhmd2NDY3JJQUFRb3JXQ0hZRy9SWnNCa1FzZzBCQ2l0WUlkZ2I5Rm15RWhrSUVSSTVNREVCSVJFakVUTVJJUkV6RVJRV016WTJOelluTXhjV0J3WUNJd1ltSndORC9nYTV1UUg2dVZ4TmJId0VCRUd5RnpBREJPYTdwN01JQWMzK013UTYvaW9CMXYwaFpIVUN0YXVzMFZPeGVlcis4UVMzdXdBQkFIYi82d1NnQmNVQUlnQkhzaFVqSkJFU09RQ3dBRVZZc0Frdkc3RUpIRDVac0FCRldMQUFMeHV4QUJBK1diQUpFTElPQVFvcldDSFlHL1Jac0FBUXNoWUJDaXRZSWRnYjlGbXlHd0FKRVJJNU1ERUZJaVFDSnhFMEVpUXpNaGNISmlNaUFoVVZGQllXTXpZMk56WW5NeGNXQnc0Q0FybWsvdmlWQXBRQkNxWGNoenVHb3F6WFlyQnhqWllEQXpXNkpoTUJBbnZlRlpzQkdLMEJFSzhCSHAxWWlrVCsvdEwrZzlWMUFwbUdtcyt6VzF1SXlXMEFBUUJsLytzRHh3Uk9BQjRBUkxJVEh5QVJFamtBc0FCRldMQVRMeHV4RXhnK1diQUFSVml3Q3k4YnNRc1FQbG15QUFFS0sxZ2gyQnYwV2JJRkN4TVJFam13RXhDeUdBRUtLMWdoMkJ2MFdUQXhKVFkyTnpRbk14WUhCZ1lqSWdBMU5UUTJOak15RndjbUl5SUdGUlVVRmdKUllGb0NGTEljQVFURXJkeis4SGJXaTdsZ0xHT0tnNXVtZ2dKUVdYcHlsbGFacVFFeTl4NlgrWXhDa0RyY3N4K3Iyd0FCQUNQLzV3VkhCYkFBR0FCTnNnVVpHaEVTT1FDd0FFVllzQUl2RzdFQ0hENVpzQUJGV0xBVkx4dXhGUkErV2JBQ0VMSUFBUW9yV0NIWUcvUlpzQVRRc0FYUXNCVVFzZ2tCQ2l0WUlkZ2I5Rm15RGdJVkVSSTVNREVCSVRVaEZTRVJGQll6TmpZU0p6Y1dGZ2NPQWlNR0ppY0IvdjRsQklEK0hGeE1ocFFJUXJvYkt3TUNlZG1KcXJjSUJSS2VudnhJWUhJQzBBRnUyd0ZpeW1lcCtZUUV0N3dBQUFFQVJ2L25CTGNFT2dBWUFFMnlGaGthRVJJNUFMQUFSVml3QWk4YnNRSVlQbG13QUVWWXNCVXZHN0VWRUQ1WnNBSVFzZ0FCQ2l0WUlkZ2I5Rm13Qk5Dd0JkQ3dGUkN5Q1FFS0sxZ2gyQnYwV2JJT0ZRSVJFamt3TVFFaE5TRVZJUkVVRmpNMk5qYzJKek1XRmdjR0JpTUdKaWNCclA2YUE0ditsVjVOY1hjREJFQ3lLaHNCQk9pNXFyTUlBNlNXbHYyMVkzUUNuWW1Ycm4yTVBORHZCTG01QUFFQWx2L3NCUDhGeFFBcEFHK3lKQ29yRVJJNUFMQUFSVml3Rmk4YnNSWWNQbG13QUVWWXNBc3ZHN0VMRUQ1WnNnTUJDaXRZSWRnYjlGbXdDeEN3QnRDeUpRc1dFUkk1c0NVdnNzOGxBVjJ5bnlVQmNiSW1BUW9yV0NIWUcvUlpzaEFtSlJFU09iQVdFTEFiMExBV0VMSWVBUW9yV0NIWUcvUlpNREVCRkJZek1qWTFNeFFHQmlNZ0pEVTBKU1ltTlRRa0lUSVdGaFVqTkNZaklnWVZGQllYTXhVakJnWUJXTSt3bTh6QmpmNmQvdnYreEFFVWVJWUJKUUVHay9XTXdjR1NwOEt0bzhURXNiVUJrbmlTbUhTRHZtZmx4ZjlXTUtabHhOdGx1blZuajRoMmRYMENuZ0orQUFJQWJ3UndBc2tGMWdBRkFBMEFJd0N3Q3krd0I5Q3dCeSt3QWRDd0FTK3dDeEN3Qk5Dd0JDK3dCZEFac0FVdkdEQXhBUk16RlFNakFUTVZGaGNISmpVQmtYVEUzMW4rM3FnRFVFbXlCSlFCUWhYK3d3RlNXM3RWTzErN0FQLy9BQ1VDSHdJTkFyWUFCZ0FSQUFELy93QWxBaDhDRFFLMkFBWUFFUUFBLy84QW9nS0xCSTBESWdCR0FaZlpBRXpOUUFELy93Q1FBb3NGeVFNaUFFWUJsNFFBWm1aQUFQLy9BQTMrYkFPaEFBQUFKd0JEQUFuL0F3RUdBRU1KQUFBVUFFQUpBd0lUQWlNQ013SUVYYkt3QWdGZE1ERUFBUUJnQkRFQmVBWVRBQWdBSWJJSUNRb1JFamtBc0FCRldMQUFMeHV4QUI0K1diSUZDUUFSRWptd0JTOHdNUUVYQmdjVkl6VTBOZ0VPYWwwRHVHRUdFMGgvazRoMFpzZ0FBUUF3QkJZQlJ3WUFBQWdBSWJJSUNRb1JFamtBc0FCRldMQUVMeHV4QkI0K1diSUFDUVFSRWptd0FDOHdNUk1uTmpjMU14VUdCcGxwWFFPM0FXRUVGa2lDa0pDQ1pNY0FBUUFrL3VVQk93QzFBQWdBSHJJSUNRb1JFamtBc0FrdnNnUUZDaXRZSWRnYjlGbXdBTkN3QUM4d01STW5OamMxTXhVVUJvMXBXd081WS83bFNYK1NkbVJseWdBQkFFOEVGZ0ZuQmdBQUNBQU1BTEFJTDdBRTBMQUVMekF4QVJVV0Z3Y21KaWMxQVFZRVhXcE5Yd0lHQUpPUWYwaEF3bUdIQVAvL0FHZ0VNUUs3QmhNQUpnRnNDQUFBQndGc0FVTUFBUC8vQUR3RUZnS0dCZ0FBSmdGdERBQUFCd0Z0QVQ4QUFBQUNBQ1QrMHdKa0FQWUFDQUFSQURDeUNoSVRFUkk1c0FvUXNBWFFBTEFTTDdJRUJRb3JXQ0hZRy9SWnNBRFFzQUF2c0FuUXNBa3ZzQVFRc0EzUU1ERVRKelkzTlRNVkZBWVhKelkzTlRNVkZBYU5hVnNEdVdQZGFWc0R1bUgrMDBpSm1ibWtiTk5BU0ltWnVhUnIwUUFBQVFCR0FBQUVKQVd3QUFzQVN3Q3dBRVZZc0Fndkc3RUlIRDVac0FCRldMQUdMeHV4QmhnK1diQUFSVml3Q2k4YnNRb1lQbG13QUVWWXNBSXZHN0VDRUQ1WnNBb1FzZ0FCQ2l0WUlkZ2I5Rm13Qk5Dd0JkQXdNUUVoRVNNUklUVWhFVE1SSVFRay9teTYvbkFCa0xvQmxBT2gvRjhEb1prQmR2NktBQUVBVi81Z0JEUUZzQUFUQUh3QXNBQkZXTEFNTHh1eERCdytXYkFBUlZpd0NpOGJzUW9ZUGxtd0FFVllzQTR2RzdFT0dENVpzQUJGV0xBQ0x4dXhBaEkrV2JBQVJWaXdBQzhic1FBUVBsbXdBRVZZc0FRdkc3RUVFRDVac2dZQkNpdFlJZGdiOUZtd0RoQ3lDQUVLSzFnaDJCdjBXYkFKMExBUTBMQVIwTEFHRUxBUzBMQVQwREF4SVNFUkl4RWhOU0VSSVRVaEVUTVJJUlVoRVNFRU5QNXF1djV6QVkzK2N3R051Z0dXL21vQmx2NWdBYUNYQXdxWkFYYitpcG44OWdBQUFRQ0tBaGNDSWdQTEFBMEFGcklLRGc4UkVqa0FzQU12c1FvS0sxallHOXhaTURFVE5EWXpNaFlWRlJRR0l5SW1OWXB2WEZ0eWJsNWRid01FVjNCdFhTVlhibTlZLy84QWxQLzFBeThBMFFBbUFCSUVBQUFIQUJJQnVRQUEvLzhBbFAvMUJNNEEwUUFtQUJJRUFBQW5BQklCdVFBQUFBY0FFZ05ZQUFBQUFRQW1BaDRBendLM0FBTUFEd0N3QWkreEFRb3JXTmdiM0Zrd01STWpOVFBQcWFrQ0hwa0FBQVlBUlAvckIxY0Z4UUFWQUNNQUp3QTFBRU1BVVFDNHNnSlNVeEVTT2JBQ0VMQWIwTEFDRUxBbTBMQUNFTEFvMExBQ0VMQTIwTEFDRUxCSjBBQ3dBRVZZc0Jrdkc3RVpIRDVac0FCRldMQVNMeHV4RWhBK1diQUQwTEFETDdBSDBMQUhMN0FTRUxBTzBMQU9MN0FaRUxBZzBMQWdMN0lrRWhrUkVqbXdKQyt5SmhrU0VSSTVzQ1l2c0JJUXNpc0VDaXRZSWRnYjlGbXdBeEN5TWdRS0sxZ2gyQnYwV2JBckVMQTUwTEF5RUxCQTBMQWdFTEpIQkFvcldDSFlHL1Jac0JrUXNrNEVDaXRZSWRnYjlGa3dNUUUwTmpNeUZ6WXpNaFlWRlJRR0l5SW5CaU1pSmpVQk5EWXpNaFlWRlJRR0l5SW1OUUVuQVJjREZCWXpNalkxTlRRbUl5SUdGUVVVRmpNeU5qVTFOQ1lqSWdZVkFSUVdNekkyTlRVMEppTWlCaFVETjZlRG1FMVBsNE9vcDRLWlQweVhncXI5RGFlRGhLZWxoSUtxQVdsb0FzZG9zMWhLU0ZaWFNVZFpBY3RZU1VoV1YwbElWL3RDV0VwSFYxWktTRmdCWllPcGVYbW9pMGVEcVhoNHA0c0RlNE9xcW9oSWdhcW5pL3djUWdSeVF2dzNUMlZqVlVwUFpHTlVTazlsWmxKS1QyUmtVd0xxVG1WaVZVbE9abVZUQUFBQkFHd0FtUUlnQTdVQUJnQVFBTEFGTDdJQ0J3VVJFam13QWk4d01RRUJJd0UxQVRNQkhnRUNqZjdaQVNlTkFpYitjd0dFRXdHRkFBRUFXUUNZQWc0RHRRQUdBQkFBc0FBdnNnTUhBQkVTT2JBREx6QXhFd0VWQVNNQkFlY0JKLzdaamdFQy92NER0ZjU3RS81N0FZNEJqd0FCQURzQWJnTnFCU0lBQXdBSkFMQUFMN0FDTHpBeE55Y0JGNk5vQXNkb2JrSUVja0lBLy84QU5nS1FBcnNGcFFNSEFkZ0FBQUtRQUJNQXNBQkZXTEFKTHh1eENSdytXYkFOMERBeEFBQUJBSG9DaXdMNEJib0FEd0JUc2dvUUVSRVNPUUN3QUVWWXNBQXZHN0VBSEQ1WnNBQkZXTEFETHh1eEF4dytXYkFBUlZpd0RTOGJzUTBVUGxtd0FFVllzQVl2RzdFR0ZENVpzZ0VOQXhFU09iQURFTElLQXdvcldDSFlHL1JaTURFVEZ6WXpJQkVSSXhFbUl5SUhFU01SK2g1S2tnRUVxZ09OYml5cUJhdDdpdjdHL2dzQjVybHQvYzRESUFBQUFRQmJBQUFFYUFYRUFDa0FsckloS2lzUkVqa0FzQUJGV0xBWkx4dXhHUncrV2JBQVJWaXdCaThic1FZUVBsbXlLUmtHRVJJNXNDa3ZzZ0FDQ2l0WUlkZ2I5Rm13QmhDeUJBRUtLMWdoMkJ2MFdiQUkwTEFKMExBQUVMQU8wTEFwRUxBUTBMQXBFTEFWMExBVkw3WVBGUjhWTHhVRFhiSVNBZ29yV0NIWUcvUlpzQmtRc0IzUXNCa1FzaUFCQ2l0WUlkZ2I5Rm13RlJDd0pOQ3dFaEN3SnRBd01RRWhGeFFISVFjaE5UTTJOamMxSnlNMU15Y2pOVE1uTkRZek1oWVZJelFtSXlJR0ZSY2hGU0VYSVFNVi9yRURQZ0xkQWZ2NFRTZ3lBZ09xcGdTaW5RYjF5TDdldjM5dmFZSUdBVnorcVFRQlV3SFdSSnBiblowSmcyQUlSWDJJZmJmSDd0U3hhM3lhZmJkOWlBQUZBQjhBQUFZMkJiQUFHd0FmQUNNQUpnQXBBTEVBc0FCRldMQVhMeHV4Rnh3K1diQUFSVml3R2k4YnNSb2NQbG13QUVWWXNBd3ZHN0VNRUQ1WnNBQkZXTEFKTHh1eENSQStXYklRREJjUkVqbXdFQyt3Rk5Dd0ZDKzBEeFFmRkFKZHNDVFFzQ1F2c0JqUXNCZ3ZzQURRc0FBdnNCUVFzaE1CQ2l0WUlkZ2I5Rm13SDlDd0k5Q3dBOUN3RUJDd0hOQ3dIQyt3SU5Dd0lDK3dCTkN3QkMrd0VCQ3lEd0VLSzFnaDJCdjBXYkFMMExBcDBMQUgwTEltRnd3UkVqbXlKd2thRVJJNU1ERUJNeFVqRlRNVkl4RWpBU0VSSXhFak5UTTFJelV6RVRNQklSRXpBU0VuSXdVek5TRWxNeWNCTlNNRlY5L2YzOS9DL3NIK1lzRFoyZG5ad0FGUkFZKy8vR0VCTzJIYUFoVE0vdFQrVEhkM0F1Qm9BNnlZbEpqK0dBSG8vaGdCNkppVW1BSUUvZndDQlB6UWxKU1VtTGI4NTU4QUFBSUFwLy9zQmdNRnNBQWZBQ2dBb3JJaktTb1JFam13SXhDd0VkQUFzQUJGV0xBV0x4dXhGaHcrV2JBQVJWaXdHaThic1JvWVBsbXdBRVZZc0I0dkc3RWVHRDVac0FCRldMQUtMeHV4Q2hBK1diQUFSVml3RkM4YnNSUVFQbG13SGhDeUFBRUtLMWdoMkJ2MFdiQUtFTElGQVFvcldDSFlHL1Jac0FBUXNBN1FzQS9Rc2lFVUZoRVNPYkFoTDdJU0FRb3JXQ0hZRy9SWnNCNFFzQjNRc0IwdnNCWVFzaWNCQ2l0WUlkZ2I5Rmt3TVFFakVSUVdNekkzRndZaklpWTFFU01HQmdjakVTTVJJVElXRnpNUk14RXpBVE15TmpVMEppY2pCZjdLTmtFak5BRkpSbngranhUbng4bTVBWG5LN1JTUHVzcjdZc0NMaTRlRXl3T3IvV0ZCUVF5V0ZKYUtBcCszdlFMOXl3V3d3TFlCQnY3Ni9wS05sNWlPQXYvL0FLai83QWdRQmJBQUpnQTJBQUFBQndCWEJGVUFBQUFIQURrQUFBY3BCYkFBSHdBakFDY0FLd0F3QURVQU9nQzNBTEFBUlZpd0hpOGJzUjRjUGxtd0FFVllzQnN2RzdFYkhENVpzQUJGV0xBQ0x4dXhBaHcrV2JBQVJWaXdEUzhic1EwUVBsbXdBRVZZc0JBdkc3RVFFRDVac2hRUUd4RVNPYkFVTDdBWTBMQVlMN0FjMExBMjBMQUEwTEFFMExBWUVMSVhBUW9yV0NIWUcvUlpzQ2ZRc0NQUXNDdlFzQWZRc0JRUXNDVFFzQ0RRc0NqUXNBalFzQlFRc2hNQkNpdFlJZGdiOUZtd010Q3dEOUN3TGRDd0M5Q3lOQkFlRVJJNXNEUVFzQy9Rc2prZUVCRVNPVEF4QVNFVE13TXpGU01ITXhVaEF5TURJUU1qQXlFMU15Y2pOVE1ETXhNaEV6TURJU2NqQlRNM0lRVXpOeUVUSXhjWE55VWpGeGMzQVRNbkp3Y0Vod0ZUYk1Gemxib3Y2Zjd5ZEsrSS9vU05yM1grOXVVdnRwRnp3RzRCVm9paDR3RWtON1QrZXFVMy92Z0RQNlVzL3ZtNVdRd3BIL3pwVndZZEtBRkVYUmNYRndQVUFkeitKSmpDbVA0ZUFlTCtIZ0hpbU1LWUFkeitKQUhjL01yQ3dzTEN3djZtS3JMR0ZoZkFyUUljVVc5dkFBQUNBSXdBQUFXZUJEb0FEUUFiQUdRQXNBQkZXTEFXTHh1eEZoZytXYkFBUlZpd0FDOGJzUUFZUGxtd0FFVllzQXN2RzdFTEVENVpzQUJGV0xBT0x4dXhEaEErV2JJUkFRb3JXQ0hZRy9SWnNnVVJBQkVTT2JBRkw3QUFFTElLQVFvcldDSFlHL1Jac2c4S0N4RVNPYkFQTHpBeEFUSVdGeEVqRVRRbUp5RVJJeEVCRVRNUklUSTJOeEV6RVFZR0J3SzZyNmdFdVdWdi9yMjVBWW01QVQ1eFp3RzVBcVd0QkRyQnYvNmpBVXgvZUFIOFh3UTYrOFlDM2YyN2RYNENyLzFPd3NRQ0FBQUJBRi8vN0FRY0JjUUFJd0NIc2hVa0pSRVNPUUN3QUVWWXNCWXZHN0VXSEQ1WnNBQkZXTEFKTHh1eENSQStXYklqQ1JZUkVqbXdJeSt5QUFJS0sxZ2gyQnYwV2JBSkVMSUVBUW9yV0NIWUcvUlpzQUFRc0F6UXNDTVFzQS9Rc0NNUXNCL1FzQjh2dGc4Zkh4OHZId05kc2lBQ0NpdFlJZGdiOUZtd0VOQ3dIeEN3RTlDd0ZoQ3lHd0VLSzFnaDJCdjBXVEF4QVNFV0ZqTXlOeGNHSXlJQUF5TTFNelVqTlRNU0FETXlGd2NtSXlJR0J5RVZJUlVoQTFIK2dBUzBwWFJtRkhoNCtQN2pCckt5c3JJS0FSM3phb2NVYlc2a3NRWUJmLzZBQVlBQ0hjUFNJcUFlQVNVQkRIeUpmUUVHQVI4Zm9pUEx2SDJKQUFRQUh3QUFCYndGc0FBWkFCNEFJd0FvQUxnQXNBQkZXTEFMTHh1eEN4dytXYkFBUlZpd0FTOGJzUUVRUGxtd0N4Q3lLQUVLSzFnaDJCdjBXYklrS0FFUkVqbXdKQyt5Y0NRQmNiWUFKQkFrSUNRRFhiSWNBUW9yV0NIWUcvUlpzQjNRc0IwdnNuQWRBWEcyQUIwUUhTQWRBMTJ5SUFFS0sxZ2gyQnYwV2JBaDBMQWhMN0p3SVFGeHNpQWhBVjJ5QUFFS0sxZ2gyQnYwV2JBZ0VMQUQwTEFkRUxBRzBMQUdMN0FjRUxBSDBMQWtFTEFLMExBa0VMQVAwTEFjRUxBUzBMQWRFTEFVMExBVUx6QXhBUkVqRVNNMU16VWpOVE0xSVRJV0Z6TVZJeGNITXhVakJpRUJKeUVWSVFjaEZTRXlBU0VtSXlFQnBjREd4c2JHQWhteDZ6YnN3d01Dd3VWci9vd0JSQVQ5YlFLVlAvMnFBVm1zL2ZzQ1NsU2UvcWdDT3YzR0F6Q1hYcGYwaEhDWE1peVg5Z0czTkY2WFdRSGxWZ0FBQVFBcUFBQUQrQVd3QUJvQVpnQ3dBRVZZc0Jrdkc3RVpIRDVac0FCRldMQU1MeHV4REJBK1diQVpFTElZQVFvcldDSFlHL1Jac0FIUXNCZ1FzQlRRc0JRdnNBUFFzQlFRc2hNQkNpdFlJZGdiOUZtd0J0Q3dFeEN3RHRDd0RpK3lDUUVLSzFnaDJCdjBXYklOQ1E0UkVqa3dNUUVqRmhjekJ5TUdCaU1CRlNNQkp6TTJOamNoTnlFbUp5RTNJUVBLN0VBUnlTNllFdmJiQWUzai9lNEIrWDJjRmYyOUxnSVRNUGIrNXk4RG5RVVNVWFdlc3JUOXhBd0NhWDBCYTF5ZXZnaWVBQUVBSVAvdUJCb0ZzQUFlQUkwQXNBQkZXTEFSTHh1eEVSdytXYkFBUlZpd0JTOGJzUVVRUGxteUV4RUZFUkk1c0JNdnNCZlFzQmN2c2dBWEFWMnlHQUVLSzFnaDJCdjBXYkFaMExBSTBMQUowTEFYRUxBVzBMQUwwTEFLMExBVEVMSVVBUW9yV0NIWUcvUlpzQlhRc0F6UXNBM1FzQk1Rc0JMUXNBL1FzQTdRc0FVUXNob0JDaXRZSWRnYjlGbXlIZ1VSRVJJNXNCNHZNREVCRlFZQ0JDTWlKeEVITlRjMUJ6VTNFVE1STnhVSEZUY1ZCeEUyRWhFMUJCb0NrUDczcjFCczlQVDA5TUQ3Ky92N3Zza0RBMlRTL3NlbUVnSmFiN0p2bVcreWJ3Rlovdjl6c25PWmM3SnovZDRDQVJBQkNWZ0FBUUJkQUFBRTZ3UTZBQmNBWExJQUdCa1JFamtBc0FCRldMQVdMeHV4RmhnK1diQUFSVml3QkM4YnNRUVFQbG13QUVWWXNBb3ZHN0VLRUQ1WnNBQkZXTEFRTHh1eEVCQStXYklBQ2hZUkVqbXdBQyt5Q1FFS0sxZ2gyQnYwV2JBTTBMQUFFTEFWMERBeEFSWUFFUlVqTlNZQ0p4RWpFUVlDQnhVak5SSUFOelV6QXYvbkFRVzVBcDZUdVkrZkFya0RBUWZmdVFOeElmNk4vdHEzeU44QkJTRDlOQUxLSWY3MTJNYkZBUjBCYlNMSkFBSUFId0FBQlFNRnNBQVdBQjhBYlFDd0FFVllzQXd2RzdFTUhENVpzQUJGV0xBREx4dXhBeEErV2JJR0F3d1JFam13QmkreUJRRUtLMWdoMkJ2MFdiQUIwTEFHRUxBSzBMQUtMN1FQQ2g4S0FsMnlDUUVLSzFnaDJCdjBXYkFVMExBR0VMQVYwTEFLRUxBWDBMQU1FTElmQVFvcldDSFlHL1JaTURFQklSRWpFU00xTXpVak5UTVJJVElFRlJRRUJ5RVZJUUVoTWpZMU5DWW5JUUw4L3JHL3o4L1B6d0laNmdFUy92bnkvcU1CVC82eEFWcWJvcWlQL3FBQkUvN3RBUk9laVowQzJlN0wxZWNCaVFFbWtveC9uUUVBQkFCNi8rc0Znd1hGQUJzQUp3QTFBRGtBdDdJY09qc1JFam13SEJDd0FOQ3dIQkN3S05Dd0hCQ3dPTkFBc0FCRldMQUtMeHV4Q2h3K1diQUFSVml3SlM4YnNTVVFQbG13Q2hDd0E5Q3dBeSt5RGdvREVSSTV0aW9PT2c1S0RnTmRzQW9Rc2hFRUNpdFlJZGdiOUZtd0F4Q3lHQVFLSzFnaDJCdjBXYkliQXdvUkVqbTBOaHRHR3dKZHNpVWJBVjJ3SlJDd0g5Q3dIeSt3SlJDeUt3UUtLMWdoMkJ2MFdiQWZFTEl5QkFvcldDSFlHL1Jac2pZbENoRVNPYkEyTDdJNENpVVJFam13T0M4d01RRVVCaU1pSmpVMU5EWXpNaFlWSXpRbUl5SUdGUlVVRmpNeU5qVUJORFlnRmhVVkZBWWdKalVYRkJZek1qWTFOVFFtSXlJR0ZRVW5BUmNDcUpoN2VxR2VlM21jaWtsQ1FVMVBRVDFNQVJDbkFRYW9wLzc4cW9wWVNraFdWMGxIV2Y0R2FRTEhhUVFlYnBDb2lVZUNxNUZ2T2sxbVVrbE9aVXc2L1VlRHFhaUxSNE9wcDRzR1QyVmpWVXBQWkdOVTgwSUVja0lBQUFJQWFQL3JBMm9HRXdBWEFDRUFaTElUSWlNUkVqbXdFeEN3R05BQXNBQkZXTEFNTHh1eERCNCtXYkFBUlZpd0FDOGJzUUFRUGxteUJnd0FFUkk1c0FZdnNnVUJDaXRZSWRnYjlGbXdFOUN3QUJDeUZ3RUtLMWdoMkJ2MFdiQUdFTEFZMExBTUVMSWZBUW9yV0NIWUcvUlpNREVGSWlZMUJpTTFNamNSTmpZek1oWVZGUlFDQnhVVUZqTUROalkxTlRRbUl5SUhBc3pDMG1KdWNWOEJuWVY0bDg2cmEzRGJXV2N3Sm1jREZlcnJITEFqQWlTeXhxMlRKY0grajJ0aW1vMENZMVgxZXlkU1RORUFBQVFBb2dBQUI4WUZ3QUFEQUJBQUhnQW9BS095SHlrcUVSSTVzQjhRc0FIUXNCOFFzQVRRc0I4UXNCSFFBTEFBUlZpd0p5OGJzU2NjUGxtd0FFVllzQ1V2RzdFbEhENVpzQUJGV0xBSEx4dXhCeHcrV2JBQVJWaXdJaThic1NJUVBsbXdBRVZZc0NBdkc3RWdFRDVac0FjUXNBM1FzQUxRc0FJdnNoQUNBVjJ5QVFNS0sxZ2gyQnYwV2JBTkVMSVVBd29yV0NIWUcvUlpzQWNRc2hzRENpdFlJZGdiOUZteUlTVWdFUkk1c2lZZ0pSRVNPVEF4QVNFMUlRRTBOaUFXRlJVVUJpTWlKalVYRkJZek1qWTNOVFFtSXlJR0ZRRWpBUkVqRVRNQkVUTUhwUDJaQW1mOWRib0JPTHU1bko2Nm8xOVdWRjBCWDFWVVgvNjh6UDJ2dWNzQ1ZMY0JuSTRDUFp1K3U2TmRuYnE3b1FWaWEycGdaV0ZyYTJQN213UnUrNUlGc1B1UEJIRUFBZ0JuQTVjRU9BV3dBQXdBRkFCdEFMQUFSVml3Qmk4YnNRWWNQbG13QUVWWXNBa3ZHN0VKSEQ1WnNBQkZXTEFUTHh1eEV4dytXYklCRlFZUkVqbXdBUyt5QUFrQkVSSTVzZ01CQmhFU09iQUUwTElJQVFrUkVqbXdBUkN3QzlDd0JoQ3hEUW9yV05nYjNGbXdBUkN3RDlDd0RSQ3dFZEN3RXRBd01RRURJd01SSXhFekV4TXpFU01CSXhFakVTTTFJUVBlakRTTVduQ1FrSEJhL2d1VFc1UUJnZ1VoL25ZQmlmNTNBaG4rY1FHUC9lY0J5UDQ0QWNoUkFBQUNBSmovN0FTVEJFNEFGUUFjQUdLeUFoMGVFUkk1c0FJUXNCYlFBTEFBUlZpd0NpOGJzUW9ZUGxtd0FFVllzQUl2RzdFQ0VENVpzaG9LQWhFU09iQWFMN0lQQ2dvcldDSFlHL1Jac0FJUXNoTUtDaXRZSWRnYjlGbXlGUW9DRVJJNXNBb1FzaFlLQ2l0WUlkZ2I5Rmt3TVNVR0l5SW1BalUwRWpZek1oWVdGeFVoRVJZek1qY0JJZ2NSSVJFbUJCYTN1NUgwaDVENGhJWGpoQVA5QUhlYXhLeitrSmQ2QWh4elhuS2RBUUdUandFRG40dnprRDcrdUc1NkF5cDYvdXNCSG5ILy93QlUvL1VGc3dXYkFDY0IxZi9hQW9ZQUp3RjhBT1lBQUFBSEFkd0RGQUFBLy84QVpQLzFCbE1GdEFBbkFkY0FKZ0tVQUNjQmZBR2xBQUFBQndIY0E3UUFBUC8vQUdQLzlRWkpCYVFBSndIWkFBZ0Nqd0FuQVh3Qmd3QUFBQWNCM0FPcUFBRC8vd0JaLy9VRi9RV2tBQ2NCMndBZkFvOEFKd0Y4QVNBQUFBQUhBZHdEWGdBQUFBSUFhdi9yQkRJRjdBQWJBQ29BVzdJVkt5d1JFam13RlJDd0k5QUFzQTB2c0FCRldMQVZMeHV4RlJBK1diSUFEUlVSRWptd0FDK3lBd0FWRVJJNXNBMFFzZ2NCQ2l0WUlkZ2I5Rm13QUJDeUhBRUtLMWdoMkJ2MFdiQVZFTElqQVFvcldDSFlHL1JaTURFQk1oWVhMZ0lqSWdjbk56WXpJQUFSRlJRQ0JpTWlBRFUxTkFBWElnWVZGUlFXTXpJMk5UVW5KaVlDUEYybU9nNXBwbUNCbXhBeGRKY0JCd0VmZU42UTJ2NzRBUURrakorZmlvNmZCQnlnQS81TlJJelplVHVYRlREK1R2NXVNcnorMXFVQkkvWU8zQUVRbUx1Z0VLclArZHM5RDFwcUFBQUJBS24vS3dUbEJiQUFCd0FuQUxBRUw3QUFSVml3Qmk4YnNRWWNQbG13QkJDd0FkQ3dCaEN5QWdFS0sxZ2gyQnYwV1RBeEJTTVJJUkVqRVNFRTVibjlOcmtFUE5VRjdmb1RCb1VBQVFCRi92TUVxd1d3QUF3QU5RQ3dBeSt3QUVWWXNBZ3ZHN0VJSEQ1WnNBTVFzZ0lCQ2l0WUlkZ2I5Rm13QmRDd0NCQ3lDZ0VLSzFnaDJCdjBXYkFIMERBeEFRRWhGU0UxQVFFMUlSVWhBUU5yL2JzRGhmdWFBbUg5bndRWi9NY0NSZ0pCL1VxWWp3TE1BdEtRbVAxQ0FBRUFxQUtMQStzRElnQURBQnNBc0FCRldMQUNMeHV4QWhZK1diSUJBUW9yV0NIWUcvUlpNREVCSVRVaEErdjh2UU5EQW91WEFBRUFQd0FBQkpnRnNBQUlBRHl5QXdrS0VSSTVBTEFITDdBQVJWaXdBUzhic1FFY1BsbXdBRVZZc0FNdkc3RURFRDVac2dBQkF4RVNPYkFIRUxJR0FRb3JXQ0hZRy9SWk1ERUJBVE1CSXdNak5TRUNNQUdydmYzaWpmVzVBVHNCSEFTVStsQUNkSm9BQXdCaS8rc0h5d1JPQUJ3QUxBQThBRyt5QnowK0VSSTVzQWNRc0NUUXNBY1FzRFRRQUxBQVJWaXdCQzhic1FRUVBsbXdBRVZZc0Fvdkc3RUtFRDVac0JQUXNCTXZzQm5Rc0JrdnNnY1pCQkVTT2JJV0dRUVJFam13Q2hDeUlBRUtLMWdoMkJ2MFdiQVRFTElwQVFvcldDSFlHL1Jac0REUXNDQVFzRG5RTURFQkZBSUdJeUltSndZR0l5SW1BalUxTkJJMk16SVdGelkyTXpJQUZRVVVGak15TmpjM05TNENJeUlHRlNVMEppTWlCZ2NIRlI0Q016STJOUWZMZnQrSmtlNVFVZXlRaWQ2QWZ0K0lrZTFSVU8rU3pnRVcrVkNtaUhLNU5Bc1ljcEpRaHFZRjk2YUZjN3cxQ1JaMWtGQ0lwUUlQay84QWtiaXhzN2FQQVFDWEdKTUJBSkszczdHNS9zSHpEYkhjdktNbkttUEFZZHk1Q0s3ZnZhZ2ZLbUhGWU42NEFBSC9zUDVMQW80R0ZRQVZBRDJ5QWhZWEVSSTVBTEFBUlZpd0RpOGJzUTRlUGxtd0FFVllzQU12RzdFREVqNVpzZ2dCQ2l0WUlkZ2I5Rm13RGhDeUV3RUtLMWdoMkJ2MFdUQXhCUlFHSXlJbk54WXpNalVSTkRZek1oY0hKaU1pRlFGbHBKNDVPaEl1SVp1eG9UeFVHQ1UydG11aXFCU1JEYkVGR2FxK0ZZNEwyd0FDQUdVQkdBUUxBL1FBRlFBckFJMnlIQ3d0RVJJNXNCd1FzQVhRQUxBREw3SVBBd0Zkc0EzUXNBMHZzZ0FOQVYyeUNBRUtLMWdoMkJ2MFdiQURFTEFLMExBS0w3QURFTElTQVFvcldDSFlHL1Jac0EwUXNCWFFzQlV2c0EwUXNCblFzQmt2c0NQUXNDTXZzZ0FqQVYyeUhnRUtLMWdoMkJ2MFdiQVpFTEFnMExBZ0w3QVpFTElvQVFvcldDSFlHL1Jac0NNUXNDdlFzQ3N2TURFVE5qWXpOaGNYRmpNeU54VUdJeUluSnlZSElnWUhCelkyTXpZWEZ4WXpNamNYQmlNaUp5Y21CeUlHQjJZd2cwSlNTcGhDVG9abVo0Vk9RcUZFVDBLRE1BRXdna0pTU3BWRVVJVm1BV2VGVGtLWVNsSkNnekFEaFRNNkFpTk9INEMrYlI5VEh3SkVQT1V6T3dJalRTR0F2VzBmVGlNQ1JEd0FBQUVBbUFDYkE5b0UxUUFUQURjQXNCTXZzZ0FCQ2l0WUlkZ2I5Rm13Qk5Dd0V4Q3dCOUN3RXhDd0Q5Q3dEeSt5RUFFS0sxZ2gyQnYwV2JBSTBMQVBFTEFMMERBeEFTRUhKemNqTlNFM0lUVWhFeGNITXhVaEJ5RUQydjN0amw5c3JnRUxsZjVnQWY2WlgzZkQvdCtVQWJVQmovUTd1YUQvb1FFR084dWgvd0QvL3dBK0FBSURnUVErQUdZQUlBQmhRQUE1bWdFSEFaZi9sdjEzQUIwQXNBQkZXTEFGTHh1eEJSZytXYkFBUlZpd0NDOGJzUWdRUGxrd01RRC8vd0NGQUFFRDNBUlJBR1lBSWdCelFBQTVtZ0VIQVpmLzNmMTJBQjBBc0FCRldMQUNMeHV4QWhnK1diQUFSVml3Q0M4YnNRZ1FQbGt3TVFBQUFnQXJBQUFEM0FXd0FBVUFDUUE0c2dnS0N4RVNPYkFJRUxBQjBBQ3dBRVZZc0FBdkc3RUFIRDVac0FCRldMQURMeHV4QXhBK1diSUdBQU1SRWpteUNBQURFUkk1TURFQk13RUJJd2tFQWJ5TUFaVCtjSTMrYkFIVy91a0JIQUVZQmJEOUovMHBBdGNDRC8zeC9mSUNEZ0QvL3dDMUFLY0Jtd1QxQUNjQUVnQWxBTElBQndBU0FDVUVKQUFDQUc0Q2VRSXpCRG9BQXdBSEFDd0FzQUJGV0xBQ0x4dXhBaGcrV2JBQVJWaXdCaThic1FZWVBsbXdBaEN3QU5Dd0FDK3dCTkN3QmRBd01STWpFVE1CSXhFeis0Mk5BVGlOalFKNUFjSCtQd0hCQUFBQkFGei9Yd0ZYQU84QUNBQWdzZ2dKQ2hFU09RQ3dDUyt3Qk5Dd0JDKzBRQVJRQkFKZHNBRFFzQUF2TURFWEp6WTNOVE1WRkFiRmFVZ0NzVStoU0cxL1hFeGJzd0QvL3dBOEFBQUU5Z1lWQUNZQVNnQUFBQWNBU2dJc0FBQUFBZ0FmQUFBRHpRWVZBQlVBR1FDRHNnZ2FHeEVTT2JBSUVMQVgwQUN3QUVWWXNBZ3ZHN0VJSGo1WnNBQkZXTEFETHh1eEF4ZytXYkFBUlZpd0VTOGJzUkVZUGxtd0FFVllzQmd2RzdFWUdENVpzQUJGV0xBQUx4dXhBQkErV2JBQVJWaXdGaThic1JZUVBsbXdBeEN5QVFFS0sxZ2gyQnYwV2JBSUVMSU5BUW9yV0NIWUcvUlpzQUVRc0JQUXNCVFFNREV6RVNNMU16VTBOak15RndjbUl5SUdGUlV6RlNNUklTTVJNOHFycTgrOWNLc2ZmWEYzYWQzZEFrbTZ1Z09yajF5MXlqMmNNbXRyWG8vOFZRUTZBQUVBUEFBQUEra0dGUUFXQUZ3QXNBQkZXTEFTTHh1eEVoNCtXYkFBUlZpd0JpOGJzUVlZUGxtd0FFVllzQWt2RzdFSkVENVpzQUJGV0xBV0x4dXhGaEErV2JBU0VMSUNBUW9yV0NIWUcvUlpzQVlRc2djQkNpdFlJZGdiOUZtd0M5Q3dCaEN3RHRBd01RRW1JeUlWRlRNVkl4RWpFU00xTXpVMk5qTXlCUkVqQXpCOFRNam41N21ycXdIQXNXVUJLN2tGWXhUU2E0LzhWUU9yajNhdHVEMzZLQUFBQWdBOEFBQUdNZ1lWQUNjQUt3Q2RBTEFBUlZpd0ZpOGJzUlllUGxtd0FFVllzQWd2RzdFSUhqNVpzQUJGV0xBZ0x4dXhJQmcrV2JBQVJWaXdFaThic1JJWVBsbXdBRVZZc0FRdkc3RUVHRDVac0FCRldMQXFMeHV4S2hnK1diQUFSVml3S1M4YnNTa1FQbG13QUVWWXNDTXZHN0VqRUQ1WnNBQkZXTEFuTHh1eEp4QStXYkFnRUxJaEFRb3JXQ0hZRy9SWnNDWFFzQUhRc0FnUXNnMEJDaXRZSWRnYjlGbXdHOUF3TVRNUkl6VXpOVFEyTXpJWEJ5WWpJZ1lWRlNFMU5EWXpNaGNISmlNaUJoVVZNeFVqRVNNUklSRWhJeEV6NTZ1cnVxcEFQd292TlZwaUFaRFB2WENySDMxeWQybmUzcm4rY0FTU3Via0RxNDl2cnI0UmxnbHBZbkpjdGNvOW5ESnFiRjZQL0ZVRHEveFZCRG9BQUFFQVBBQUFCaklHRlFBb0FHb0FzQUJGV0xBSUx4dXhDQjQrV2JBQVJWaXdJUzhic1NFWVBsbXdBRVZZc0Nndkc3RW9FRDVac0NFUXNpSUJDaXRZSWRnYjlGbXdKdEN3QWRDd0lSQ3dFdEN3Qk5Dd0NCQ3lEUUVLSzFnaDJCdjBXYkFJRUxBVzBMQW9FTEFsMExBYTBMQU5FTEFkMERBeE14RWpOVE0xTkRZek1oY0hKaU1pQmhVVklUVTJOak15QlJFakVTWWpJaFVWTXhVakVTTVJJUkhucTZ1NnFrQS9DaTgxV21JQmtBSEFzV1VCSzdsOFRNam41N24rY0FPcmoyK3V2aEdXQ1dsaWNuYXR1RDM2S0FWakZOSnJqL3hWQTZ2OFZRQUJBRHovN0FTYkJoVUFKZ0J6QUxBQVJWaXdJUzhic1NFZVBsbXdBRVZZc0Iwdkc3RWRHRDVac0FCRldMQVlMeHV4R0JBK1diQUFSVml3Q2k4YnNRb1FQbG13SFJDd0VOQ3dKZEN5QVFFS0sxZ2gyQnYwV2JBS0VMSUZBUW9yV0NIWUcvUlpzQUVRc0E3UXNDRVFzaFVCQ2l0WUlkZ2I5Rm13RGhDd0d0QXdNUUVqRVJRV016STNGd1lqSWlZMUVTTTFNeEVtSnljaUZSRWpFU00xTXpVME5qTXlGaGNSTXdTV3lqWkJJelFCU1VaOGZzWEZQV1lZdDdtcnE3T2dYZHRheWdPci9XRkJRUXlXRkphS0FwK1BBUjhjQndIZCsyQURxNDl3cmI0NUxQNktBQUFCQUYvLzdBWlVCaEVBVEFDNXNoWk5UaEVTT1FDd0FFVllzRWN2RzdGSEhqNVpzQUJGV0xBUEx4dXhEeGcrV2JBQVJWaXdTeThic1VzWVBsbXdBRVZZc0VBdkc3RkFHRDVac0FCRldMQUpMeHV4Q1JBK1diQUFSVml3TEM4YnNTd1FQbG13U3hDeUFRRUtLMWdoMkJ2MFdiQUpFTElFQVFvcldDSFlHL1Jac0FFUXNBM1FzRWNRc2hRQkNpdFlJZGdiOUZtd1FCQ3lJQUVLSzFnaDJCdjBXYkk2TEVBUkVqbXdPaEN5SlFFS0sxZ2gyQnYwV2JBc0VMSTBBUW9yV0NIWUcvUlpNREVCSXhFVU16STNGd1lqSWlZMUVTTTFNelUwSmlNaUJoVVVIZ0lWSXpRbUl5SUdGUlFXQkJZV0ZSUUdJeUltSmpVekZoWXpNalkxTkNZa0ppWTFORFl6TWhjbU5UUTJNeklXRlJVekJrL0tkeU0wQVUxQ2RvUzh2R1ppV0Z3ZkpSNjZnV0psY21vQkZheFQ2TG1DeUhHNUJZdHlhWDl4L3VlbFQrR3ZZRllzeXB1NXljb0RxLzErbnd5V0ZLYVhBb0tQVlhKMVdFWTdhWEI4VEV4dVdFZERSRDVXZVZlUnIxeWxZRjF0VlVkTFV6eFVkRkNGdUI1dVVueWx4OE5OQUFBV0FGditjZ2Z1QmE0QURRQWFBQ2dBTndBOUFFTUFTUUJQQUZZQVdnQmVBR0lBWmdCcUFHNEFkZ0I2QUg0QWdnQ0dBSW9BamdHK3NoQ1BrQkVTT2JBUUVMQUEwTEFRRUxBYjBMQVFFTEF3MExBUUVMQTgwTEFRRUxBKzBMQVFFTEJHMExBUUVMQkswTEFRRUxCUTBMQVFFTEJYMExBUUVMQmIwTEFRRUxCaDBMQVFFTEJqMExBUUVMQm4wTEFRRUxCdDBMQVFFTEJ3MExBUUVMQjMwTEFRRUxCNzBMQVFFTEIvMExBUUVMQ0UwTEFRRUxDSTBMQVFFTENNMEFDd1BTK3dBRVZZc0VZdkc3RkdIRDVac241SkF5dXllbnNESzdLQ2R3TXJzbjg2QXl1eUNqMUdFUkk1c0FvdnNBUFFzQU12c0E3UXNBNHZzQW9Rc0EvUXNBOHZzbEFPRHhFU09iQlFMN0p2QndvcldDSFlHL1Jac2hWUWJ4RVNPYkFLRUxJZUJ3b3JXQ0hZRy9SWnNBTVFzaVVIQ2l0WUlkZ2I5Rm13RHhDd0tkQ3dLUyt3RGhDd0x0Q3dMaSt5TkFjS0sxZ2gyQnYwV2JBOUVMSThDZ29yV0NIWUcvUlpzRDBRc0d2UXNHZlFzR1BRc0Q3UXNEd1FzR3pRc0dqUXNHVFFzRC9Rc0RvUXNFSFFzRVlRc0dEUXNGelFzRmpRc0V2UXNrb0tDaXRZSWRnYjlGbXdXdEN3WHRDd1l0Q3dSOUN3U1JDd1R0Q3dEaEN5VVFjS0sxZ2gyQnYwV2JBUEVMSjJCd29yV0NIWUcvUlpzSGNRc0lUUXNIb1FzSVhRc0hzUXNJalFzSDRRc0luUXNIOFFzSXpRc0lJUXNJM1FNREVCRkFZaklpWW5OVFEyTXpJV0Z4TVJNeklXRlJRSEZoWVZGQ01CTkNZaklnWVZGUlFXTXpJMk5RRXpFUlFHSXlJbU5UTVVNekkyTlFFUk14VXpGU0UxTXpVekVRRVJJUlVqRlNVMUlSRWpOUUVWTXpJMU5DY1ROU0VWSVRVaEZTRTFJUlVCTlNFVklUVWhGU0UxSVJVVE16STFOQ1lqSXdFak5UTTFJelV6RVNNMU15VWpOVE0xSXpVekVTTTFNd001Z1dSbWdBSithR1dBQWtPOFluSlVNalRRL285S1FVQktTa0pBU1FPNlhHbFNXRzFkYUNrMitjUnh4QVVveDIvNGJRRTF4QVhzQVRadi9GeCtaMkxMQVJiOVd3RVYvVndCRkFJS0FSYjlXd0VWL1Z3QkZMeGRkam84WGZ6eGNYRnhjWEZ4QnlKdmIyOXZiMjhCMUdKNWVGNTFYM3g0WHY2ekFpVkpUVlFnRFVZdG13RklSVTVPUlhCRlRrNUZBVS8raGs1ZFVWTmJOaXo4eVFFN3luRnh5djdGQmg4QkhYU3BxWFQrNDZuOHRxbFRVZ1FEU25SMGRIUjBkUGs0Y1hGeGNYRnhBOFJRS1I3KzAveCsrdndWK1g3OGZ2cjhGZmtBQlFCYy9kVUgxd2h6QUFNQUhBQWdBQ1FBS0FCU3N4RVBFQVFyc3dRUEhBUXJzd29QRndRcnNBUVFzQjNRc0J3UXNCN1FBTEFoTDdBbEw3SWNIZ01yc0NVUXNBRFFzQUF2c0NFUXNBTFFzQUl2c2cwQUFoRVNPYkFOTDdJZkhnSVJFam13SHk4d01Ra0RCVFEyTnpZMk5UUW1JeUlHQnpNMk5qTXlGaFVVQndZR0ZSY2pGVE1ETXhVakF6TVZJd1FZQTcvOFFmeEVCQThlSkVwY3A1V1FvQUxMQWpvck9UaGRXeS9LeXNwTEJBUUNCQVFHVXZ3eC9ERUR6L0U2T2hnbmgwcUFsNHQvTXpSQU5GODhRVnhNVzZyOVRBUUtuZ1FBQVFBN0FBQUQwZ1d3QUFZQU1nQ3dBRVZZc0FVdkc3RUZIRDVac0FCRldMQUJMeHV4QVJBK1diQUZFTElEQVFvcldDSFlHL1Jac2dBREJSRVNPVEF4QVFFakFTRTFJUVBTL2I2NkFrRDlKUU9YQlVqNnVBVVltQUFBQWdCYS8rd0VSQVJPQUJBQUhBQTJBTEFBUlZpd0JDOGJzUVFZUGxtd0FFVllzQXd2RzdFTUVENVpzaFFCQ2l0WUlkZ2I5Rm13QkJDeUdnRUtLMWdoMkJ2MFdUQXhFelEyTmpNeUFCVVZGQVlHSXlJbUppYzNGQll6TWpZMU5DWWpJZ1phZ09PUTNRRWFmdVdTaitPQkFybXZqWTZ1c1kyTHJ3SW5uUCtNL3N6N0RwMzhqSWo1bWdxdzN1REVyK0RlQUFBQi83YitTd0ZuQUpnQURBQW5BTEFOTDdBQVJWaXdCQzhic1FRU1BsbXlDUUVLSzFnaDJCdjBXYkFORUxBTTBMQU1MekF4SlJVR0JpTWlKemNXTXpJMU5RRm5BYXFYT3pRT0hrT0ptUFdvc0JLZERjTHBBQUVBWi82WkFTRUFtUUFEQUJJQXNBUXZzQUxRc0FJdnNBSFFzQUV2TURFQkl4RXpBU0c2dXY2WkFnQUFBZ0NEQk5rQzBnYlFBQTBBSVFCN0FMQURMN0FIMExBSEwwQU5Ed2NmQnk4SFB3ZFBCMThIQmwyd0F4Q3lDZ1FLSzFnaDJCdjBXYkFIRUxBTjBMQU5MN0FIRUxBUjBMQVJMN0FVMExBVUwwQUxEeFFmRkM4VVB4UlBGQVZkc0JFUXNCZlFzQmN2c0JRUXNoc0VDaXRZSWRnYjlGbXdFUkN5SGdRS0sxZ2gyQnYwV2JBYkVMQWgwREF4QVJRR0l5SW1OVE1VRmpNeU5qVVRGQVlqSWlZaklnWVZKelEyTXpJV016STJOUUxTb1lhSG9aWktTRWRLaldCR09uY3NJakJUWUVVd2dTd2pNQVd1WDNaMlh6WkFRRFlCQ2twcFN6TW1GVXRyU3pNbUFBQUNBSUVFNEFMS0J3TUFEUUFjQUdVQXNBTXZzQWZRc0FjdlFBMFBCeDhITHdjL0IwOEhYd2NHWGJBREVMSUtCQW9yV0NIWUcvUlpzQWNRc0EzUXNBMHZzQWNRc0E3UXNBNHZzQlhRc0JVdlFBOFBGUjhWTHhVL0ZVOFZYeFZ2RlFkZHNCVFFzZzhVRGhFU09iSWJEaFVSRWprd01RRVVCaU1pSmpVekZCWXpNalkxSnljMk5qVTBJemN5RmhVVUJnY0hBc3FoZzRTaGtrcEpSVXpKQVVwQ29BZVFsRkZFQVFXd1huSnpYVFUrUFRZUmZBUVlIVHRTVGtJeU93YytBQUFDQUlFRTN3TGdCb29BRFFBUkFGOEFzQU12c0FmUXNBY3ZRQTBQQng4SEx3Yy9CMDhIWHdjR1hiQURFTElLQkFvcldDSFlHL1Jac0FjUXNBM1FzQTB2c0FjUXNCRFFzQkF2c0EvUXNBOHZRQThQRHg4UEx3OC9EMDhQWHc5dkR3ZGRzQkFRc0JIUUdiQVJMeGd3TVFFVUJpTWlKalV6RkJZek1qWTFKek1ISXdMZ3FJZUlxSmhQU1VkUFlKbWtaZ1d3WDNKeVh6YzlQelhheGdBQ0FHa0U1QU5HQnRRQUJnQWFBSVVBc0FNdnNBSFFzQUV2c0FiUXNBWXZRQWtQQmg4R0x3WS9CZ1Jkc2dRREJoRVNPUm13QkM4WXNBRFFzZ0lHQVJFU09iQUdFTEFLMExBS0w3US9DazhLQWwyd0RkQ3dEUzlBRFE4Tkh3MHZEVDhOVHcxZkRRWmRzQW9Rc0JEUXNCQXZzQTBRc2hRRUNpdFlJZGdiOUZtd0NoQ3lGd1FLSzFnaDJCdjBXYkFVRUxBYTBEQXhBU01uQnlNbE16Y1VCaU1pSmlNaUJoVW5ORFl6TWhZek1qWTFBMGFxeGNXcEFTMkR3MkJCTm00b0hUWk5ZRUFxZkNZZk5BVGtucDcwNVQ1ZVJ5NGRFejlpUmkwY0FBSUFhUVRrQSt3R3p3QUdBQlVBWVFDd0F5K3dCZEN3QlMrMkR3VWZCUzhGQTEyeUJBTUZFUkk1R2JBRUx4aXdBTkN3QXhDd0FkQ3dBUyt5QWdVREVSSTVzQWZRc0FjdnNBN1FzQTR2UUEwUERoOE9MdzQvRGs4T1h3NEdYYkFOMExJSUJ3MFJFam15RkE0SEVSSTVNREVCSXljSEl3RXpGeWMyTmpVMEl6Y3lGaFVVQmdjSEEwYXF4Y1dwQVJDOHZnRkJPNDBGZ0laS1BBRUU1THE2QVFaOGd3UWFJVU5jV0VrN1FnYzhBQUwvWGdUUEEwWUdnZ0FHQUFvQVhRQ3dBeSt5RHdNQlhiQUUwQm13QkM4WXNBRFFHYkFBTHhpd0F4Q3dBZEN3QVMrd0J0Q3dCaSsyRHdZZkJpOEdBMTJ5QWdNR0VSSTVzQU1Rc0FqUXNBZ3ZzQWZRR2JBSEx4aXdDQkN3Q3RDd0NpKzJEd29mQ2k4S0ExMHdNUUVqSndjakFUTUZJd016QTBiRnFxckVBU0tZL28rTXlNY0V6NTZlQVFaVkFRSUFBQUlBYmdUaEJGZ0dsUUFHQUFvQVhRQ3dBeSt5RHdNQlhiQUYwTEFGTDdBQTBMQUFMN1lQQUI4QUx3QURYYkFERUxBQzBCbXdBaThZc2dRREFCRVNPYkFHMEJtd0JpOFlzQU1Rc0FuUXNBa3ZzQWZRc0FjdnRnOEhId2N2QndOZHNBa1FzQXJRR2JBS0x4Z3dNUUV6QVNNbkJ5TUJNd01qQVpLWUFTTEZxYXJHQXlMSXlZMEY2UDc1bjU4QnRQNzlBQUlBZ1FUZkF1QUdpZ0FOQUJFQVh3Q3dBeSt3QjlDd0J5OUFEUThISHdjdkJ6OEhUd2RmQndaZHNBTVFzZ29FQ2l0WUlkZ2I5Rm13QnhDd0RkQ3dEUyt3QnhDd0VkQ3dFUyt3RDlDd0R5OUFEdzhQSHc4dkR6OFBUdzlmRDI4UEIxMndFUkN3RU5BWnNCQXZHREF4QVJRR0l5SW1OVE1VRmpNeU5qVWxNeGNqQXVDb2g0aW9tRTlKUjAvK3BwcHdaUVd3WDNKeVh6YzlQelhheGdBQUFRQ2ZCSTRCbGdZN0FBZ0FEQUN3QUMrd0JOQ3dCQzh3TVFFWEJnY1ZJelUwTmdFcmF6c0R1VlFHTzFOamI0aUNUYTBBQUFJQUV3QUFCSEFFalFBSEFBb0FSZ0N3QUVWWXNBUXZHN0VFR2o1WnNBQkZXTEFDTHh1eEFoQStXYkFBUlZpd0JpOGJzUVlRUGxteUNRUUNFUkk1c0FrdnNnQUJDaXRZSWRnYjlGbXlDZ1FDRVJJNU1ERUJJUU1qQVRNQkl3RWhBd05HL2ZodXZRSGZwZ0hZdlAzR0FaSEhBUmYrNlFTTiszTUJyZ0g5QUFNQWlnQUFBKzhFalFBT0FCWUFIZ0JvQUxBQVJWaXdBUzhic1FFYVBsbXdBRVZZc0FBdkc3RUFFRDVac2hjQUFSRVNPYkFYTDdLL0Z3RmR0QjhYTHhjQ1hiVGZGKzhYQWwyeUR3RUtLMWdoMkJ2MFdiSUlEeGNSRWptd0FCQ3lFQUVLSzFnaDJCdjBXYkFCRUxJZUFRb3JXQ0hZRy9SWk1ERXpFU0V5RmhVVUJnY1dGaFVVQmdjQkVTRXlOalUwSXlVek1qWTFOQ2NqaWdHVzBkNWZXR04wMnNuKzl3RUdjM3JyL3ZqcWJIemw3UVNObzV0UmZpRVlsV1dlcmdFQ0V2NkZZbFhFalZWVHFBVUFBQUVBWVAvd0JEQUVuUUFjQUV5eUF4MGVFUkk1QUxBQVJWaXdDeThic1FzYVBsbXdBRVZZc0FNdkc3RURFRDVac0FzUXNBL1FzQXNRc2hJQkNpdFlJZGdiOUZtd0F4Q3lHUUVLSzFnaDJCdjBXYkFERUxBYzBEQXhBUVlHSXlJQUVUVTBOall6TWhZWEl5WW1JeUlHQnhVVUZqTXlOamNFTUJUODBlRCs4WHZubU16M0U3a1NqWDZacHdHZmw0ZU5GQUY1dTg0Qkp3RURYcVQ1aU5PN2duVEx2V3E5ejIrREFBSUFpZ0FBQkI4RWpRQUtBQlFBUnJJQ0ZSWVJFam13QWhDd0ZOQUFzQUJGV0xBQkx4dXhBUm8rV2JBQVJWaXdBQzhic1FBUVBsbXdBUkN5Q3dFS0sxZ2gyQnYwV2JBQUVMSU1BUW9yV0NIWUcvUlpNREV6RVNFeUZoWVhGUlFBSVFNUk16STJOVFUwSmlPS0FXbWkrNHdEL3NuKytaNmt1c2E5dHdTTmhmYWZUZnorMWdQMC9LUFF3RURBelFBQkFJb0FBQU91QkkwQUN3QlVBTEFBUlZpd0JpOGJzUVlhUGxtd0FFVllzQVF2RzdFRUVENVpzQXZRc0FzdnN0OExBVjJ5SHdzQlhiSUFBUW9yV0NIWUcvUlpzQVFRc2dJQkNpdFlJZGdiOUZtd0JoQ3lDQUVLSzFnaDJCdjBXVEF4QVNFUklSVWhFU0VWSVJFaEExZjk3QUpyL053REh2MmJBaFFDRHY2Smx3U05tZjZ5QUFFQWlnQUFBNXNFalFBSkFFRUFzQUJGV0xBRUx4dXhCQm8rV2JBQVJWaXdBaThic1FJUVBsbXdDZEN3Q1MreUh3a0JYYklBQVFvcldDSFlHL1Jac0FRUXNnWUJDaXRZSWRnYjlGa3dNUUVoRVNNUklSVWhFU0VEUy8zNHVRTVIvYWdDQ0FIei9nMEVqWm4rbUFBQUFRQmovL0FFTlFTZEFCMEFYN0lLSGg4UkVqa0FzQUJGV0xBS0x4dXhDaG8rV2JBQVJWaXdBeThic1FNUVBsbXlIUW9ERVJJNXNCMHZzZzBkQ2hFU09iQUtFTElRQVFvcldDSFlHL1Jac0FNUXNoY0JDaXRZSWRnYjlGbXdIUkN5R2dNS0sxZ2gyQnYwV1RBeEpRWUdJeUlBSnpVUUFETXlGaGNqSmlNaUJoVVZGQll6TWpjMUlUVWhCRFZDNlpmdS91QUNBUXZ5eVBJYnVDYjFuNmE1b0xaUi91Y0IwWlpUVXdFcS9Gb0JCZ0VudkxYWnpzZFV2dGRLN3BBQUFBRUFpZ0FBQkZnRWpRQUxBRk1Bc0FCRldMQUdMeHV4QmhvK1diQUFSVml3Q2k4YnNRb2FQbG13QUVWWXNBQXZHN0VBRUQ1WnNBQkZXTEFFTHh1eEJCQStXYklKQUFvUkVqbDhzQWt2R0xLakNRRmRzZ0lCQ2l0WUlkZ2I5Rmt3TVNFakVTRVJJeEV6RVNFUk13Ull1ZjJrdWJrQ1hMa0I4djRPQkkzOS9RSURBQUFCQUpjQUFBRlJCSTBBQXdBZEFMQUFSVml3QWk4YnNRSWFQbG13QUVWWXNBQXZHN0VBRUQ1Wk1ERWhJeEV6QVZHNnVnU05BQUFCQUN2LzhBTk5CSTBBRHdBMXNnVVFFUkVTT1FDd0FFVllzQUF2RzdFQUdqNVpzQUJGV0xBRkx4dXhCUkErV2JBSjBMQUZFTElNQVFvcldDSFlHL1JaTURFQk14RVVCaU1pSmpVekZCWXpNalkxQXBLNzFMSEMyN3B4Y2x4dUJJMzh4WjNGdDZSZVptMWZBQUFCQUlvQUFBUlhCSTBBREFCTUFMQUFSVml3QkM4YnNRUWFQbG13QUVWWXNBZ3ZHN0VJR2o1WnNBQkZXTEFDTHh1eEFoQStXYkFBUlZpd0N5OGJzUXNRUGxteUFBSUlFUkk1c2dZQ0JCRVNPYklLQWdnUkVqa3dNUUVIRVNNUk14RTNBVE1CQVNNQjFwTzV1WUlCamVQK0lRSUI0UUlIanY2SEJJMzkxWkFCbS8zNS9Yb0FBQUVBaWdBQUE0c0VqUUFGQUNnQXNBQkZXTEFFTHh1eEJCbytXYkFBUlZpd0FpOGJzUUlRUGxteUFBRUtLMWdoMkJ2MFdUQXhKU0VWSVJFekFVTUNTUHovdVplWEJJMEFBQUVBaWdBQUJYY0VqUUFPQUdDeUFROFFFUkk1QUxBQVJWaXdBQzhic1FBYVBsbXdBRVZZc0FJdkc3RUNHajVac0FCRldMQUVMeHV4QkJBK1diQUFSVml3Q0M4YnNRZ1FQbG13QUVWWXNBd3ZHN0VNRUQ1WnNnRUFCQkVTT2JJSEFBUVJFam15Q2dBRUVSSTVNREVKQWpNUkl4RVRBU01CRXhFakVRRjZBWWNCaGZHNEUvNXlpUDV6RTdnRWpmeHhBNC83Y3dHUkFoWDhXZ09pL2UvK2J3U05BQUVBaWdBQUJGZ0VqUUFKQUVVQXNBQkZXTEFGTHh1eEJSbytXYkFBUlZpd0NDOGJzUWdhUGxtd0FFVllzQUF2RzdFQUVENVpzQUJGV0xBREx4dXhBeEErV2JJQ0JRQVJFam15QndVQUVSSTVNREVoSXdFUkl4RXpBUkV6QkZpNC9hTzV1UUpkdUFOcy9KUUVqZnlUQTIwQUFBSUFZUC93QkZvRW5RQU5BQnNBUnJJREhCMFJFam13QXhDd0VkQUFzQUJGV0xBS0x4dXhDaG8rV2JBQVJWaXdBeThic1FNUVBsbXdDaEN5RVFFS0sxZ2gyQnYwV2JBREVMSVlBUW9yV0NIWUcvUlpNREVCRUFBaklnQVJOUkFBTXpJQUZ3YzBKaU1pQmhVVkZCWXpNalkxQkZyKzdPamwvdWNCRitYcEFSTUN0NnlibHErd2w1eXBBaVQrKy83UkFUSUJCejRCQWdFMC90RC9CY2JTMXNWQ3c5ZlR4d0FDQUlvQUFBUWJCSTBBQ2dBVEFFMnlDaFFWRVJJNXNBb1FzQXpRQUxBQVJWaXdBeThic1FNYVBsbXdBRVZZc0FFdkc3RUJFRDVac2dzREFSRVNPYkFMTDdJQUFRb3JXQ0hZRy9SWnNBTVFzaElCQ2l0WUlkZ2I5Rmt3TVFFUkl4RWhNaFlWRkFZakpTRXlOalUwSmljaEFVTzVBZFBNOHVyVy91Z0JHbnlJaUhmKzRRRzIva29FamNlb3FyNllhbVJnZHdFQUFnQlovellFVndTZEFCTUFJUUJOc2dnaUl4RVNPYkFJRUxBZTBBQ3dBRVZZc0JBdkc3RVFHajVac0FCRldMQUlMeHV4Q0JBK1diSURDQkFSRWptd0VCQ3lGd0VLSzFnaDJCdjBXYkFJRUxJZUFRb3JXQ0hZRy9SWk1ERUJGQVlIRndjbEJpTWlBQkUxTkJJMk16SUFFU2MwSmlNaUJnY1ZGQll6TWpZMUJGVndadGg4L3ZrMlJ1VCs1WC9vbHVvQkZiZXNuSlNzQks2WW5Lb0NKS2J6UnFCdnh3MEJNUUVJUHFrQkE0cit6Zjc1QnNiU3o3bFZ3dGpUeHdBQ0FJb0FBQVFsQkkwQURRQVdBR0d5RlJjWUVSSTVzQlVRc0FYUUFMQUFSVml3QkM4YnNRUWFQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFNTHh1eERCQStXYklQQkFJUkVqbXdEeSt5QUFFS0sxZ2gyQnYwV2JJS0FBUVJFam13QkJDeUZRRUtLMWdoMkJ2MFdUQXhBU0VSSXhFaE1oWVZGQWNCRlNNQk16STJOVFFtSXlNQ1d2N3B1UUdxMWVmckFTREcvZVQyZFltR2Z2QUJ3ZjQvQkkyNnF1UlovaDRLQWxodFhXUnVBQUVBUS8vd0E5MEVuUUFsQUZvQXNBQkZXTEFKTHh1eENSbytXYkFBUlZpd0hDOGJzUndRUGxteUFod0pFUkk1c0FrUXNBM1FzQWtRc2hBQkNpdFlJZGdiOUZtd0FoQ3lGZ0VLSzFnaDJCdjBXYkFjRUxBZzBMQWNFTElqQVFvcldDSFlHL1JaTURFQk5DWWtKeVkxTkRZek1oWVZJelFtSXlJR0ZSUVdCQllXRlJRR0l5SWtOVE1VRmpNeU5nTWplZjdhVnNQenY4VDV1WTE1Y1laN0FUaXdWdlBIei83dnVwcU1mb0lCS2xCWVNpdGlzNCt5eUp4aWExbFFRVmhRWlloYms2bkxvbVp5V3dBQkFDZ0FBQVA5QkkwQUJ3QXVBTEFBUlZpd0JpOGJzUVlhUGxtd0FFVllzQUl2RzdFQ0VENVpzQVlRc2dBQkNpdFlJZGdiOUZtd0JOQXdNUUVoRVNNUklUVWhBLzMrY2JuK2N3UFZBL1Q4REFQMG1RQUJBSFQvOEFRS0JJMEFFUUE4c2dRU0V4RVNPUUN3QUVWWXNBQXZHN0VBR2o1WnNBQkZXTEFJTHh1eENCbytXYkFBUlZpd0JDOGJzUVFRUGxteURRRUtLMWdoMkJ2MFdUQXhBUkVVQmlNaUppY1JNeEVVRmpNeU5qVVJCQXI2MGRMMkE3ZVBoWU9QQkkzODlMYmIwN1lERlB6MGVZRi9ld01NQUFFQUZBQUFCRk1FalFBSUFERUFzQUJGV0xBREx4dXhBeG8rV2JBQVJWaXdCeThic1FjYVBsbXdBRVZZc0FVdkc3RUZFRDVac2dFREJSRVNPVEF4QVJjM0FUTUJJd0V6QWhvWkdnRkF4djQzcmY0M3h3RWtYbHdEYS90ekJJMEFBQUVBTVFBQUJmRUVqUUFTQUdDeURoTVVFUkk1QUxBQVJWaXdBeThic1FNYVBsbXdBRVZZc0Fndkc3RUlHajVac0FCRldMQVJMeHV4RVJvK1diQUFSVml3Q2k4YnNRb1FQbG13QUVWWXNBOHZHN0VQRUQ1WnNnRURDaEVTT2JJR0F3b1JFam15RFFNS0VSSTVNREVCRnpjVE14TVhOeE16QVNNQkp3Y0JJd0V6QWE4TEQvaWw5QTBNeHJqKzFxNysvQUVCL3ZTdC90ZTNBU1pRUUFOMy9JWTdVQU5sKzNNRGxRVUYvR3NFalFBQUFRQW1BQUFFTVFTTkFBc0FVd0N3QUVWWXNBRXZHN0VCR2o1WnNBQkZXTEFLTHh1eENobytXYkFBUlZpd0JDOGJzUVFRUGxtd0FFVllzQWN2RzdFSEVENVpzZ0FCQkJFU09iSUdBUVFSRWpteUF3QUdFUkk1c2drR0FCRVNPVEF4QVFFekFRRWpBUUVqQVFFekFpZ0JIOXorZFFHWjNQN1YvdGpjQVpiK2M5c0MyZ0d6L2I3OXRRRzcva1VDU3dKQ0FBQUJBQTBBQUFRY0JJMEFDQUF4QUxBQVJWaXdBUzhic1FFYVBsbXdBRVZZc0Fjdkc3RUhHajVac0FCRldMQUVMeHV4QkJBK1diSUFBUVFSRWprd01RRUJNd0VSSXhFQk13SVVBVGpRL2xLNS9salFBa29DUS8wSy9ta0JvZ0xyQUFBQkFFY0FBQVBnQkkwQUNRQkVBTEFBUlZpd0J5OGJzUWNhUGxtd0FFVllzQUl2RzdFQ0VENVpzZ0FCQ2l0WUlkZ2I5Rm15QkFBQ0VSSTVzQWNRc2dVQkNpdFlJZGdiOUZteUNRVUhFUkk1TURFbElSVWhOUUVoTlNFVkFTOENzZnhuQXBqOWNRTjRsNWQ4QTNpWmVRQUFBZ0JRLy9VQ25RTWdBQTBBRndCR3NnTVlHUkVTT2JBREVMQVEwQUN3QUVWWXNBb3ZHN0VLRmo1WnNBQkZXTEFETHh1eEF4QStXYkFLRUxJUUFnb3JXQ0hZRy9SWnNBTVFzaFVDQ2l0WUlkZ2I5Rmt3TVFFVUJpTWlKaWMxTkRZek1oWVhKelFqSWdjVkZETXlOd0tkbUkyTG5BR2JpNDJZQXAyS2hRU0xoQVFCUmFLdXJLQ09vNjZzblFmQXRMUEN0UUFCQUhvQUFBSHZBeFVBQmdBMUFMQUFSVml3QlM4YnNRVVdQbG13QUVWWXNBRXZHN0VCRUQ1WnNnUUZBUkVTT2JBRUw3SURBZ29yV0NIWUcvUlpzQUxRTURFaEl4RUhOU1V6QWUrZDJBRmpFZ0paT1lCMUFBRUFRZ0FBQXFzRElBQVdBRlN5Q0JjWUVSSTVBTEFBUlZpd0RpOGJzUTRXUGxtd0FFVllzQUF2RzdFQUVENVpzaFVDQ2l0WUlkZ2I5Rm13QXRDeUZCVU9FUkk1c2dNT0ZCRVNPYkFPRUxJSUFnb3JXQ0hZRy9SWnNBNFFzQXZRTURFaElUVUJOalUwSmlNaUJoVWpORFlnRmhVVUR3SWhBcXY5cVFFc2JVQThTMGVkcHdFSW1tdFVzQUdQYkFFYVprVXhQVXc1Y3BSL2JtaHJUNUVBQVFBKy8vVUNtZ01nQUNZQWNRQ3dBRVZZc0E0dkc3RU9GajVac0FCRldMQVpMeHV4R1JBK1diSUFHUTRSRWpsOHNBQXZHTGFBQUpBQW9BQURYYkFPRUxJSEFnb3JXQ0hZRy9SWnNnb0FCeEVTT2JBQUVMSW1BZ29yV0NIWUcvUlpzaFFtQUJFU09iQVpFTElnQWdvcldDSFlHL1Jac2gwbUlCRVNPVEF4QVRNeU5qVTBKaU1pQmhVak5EWXpNaFlWRkFZSEZoVVVCaU1pSmpVekZCWXpNalkxTkNjakFRbFVTa2cvUmpsTG5hTjhpWnhHUXBXcWlJU21uazlEUmttY1dBSExQVEF0T2pNcFludDVhRGRiR1NtUGFuMStheTA4UEROeEFnQUFBZ0EyQUFBQ3V3TVZBQW9BRGdCSkFMQUFSVml3Q1M4YnNRa1dQbG13QUVWWXNBUXZHN0VFRUQ1WnNnRUpCQkVTT2JBQkw3SUNBZ29yV0NIWUcvUlpzQWJRc0FFUXNBdlFzZ2dMQmhFU09iSU5DUVFSRWprd01RRXpGU01WSXpVaEp3RXpBVE1SQndKUWEydWQvb2tHQVhtaC9vVGZFUUVyZ3FtcFpnSUcvaFlCSVJ3QUFRQmIvL1VDcHdNVkFCc0FZUUN3QUVWWXNBRXZHN0VCRmo1WnNBQkZXTEFOTHh1eERSQStXYkFCRUxJRUNRb3JXQ0hZRy9SWnNnY05BUkVTT2JBSEw3SVpBZ29yV0NIWUcvUlpzZ1VIR1JFU09iQU5FTEFSMExBTkVMSVRBZ29yV0NIWUcvUlpzQWNRc0J2UU1ERVRFeUVWSVFjMk16SVdGUlFHSXlJbUp6TVdNekkyTlRRbUl5SUhjRElCM3Y2akZrRktnSStnaG5tbkJwc0tnVUZJVGtwSk93R0RBWktFcWgySmVYeVJmbVZqUzBRK1RTc0FBQUlBVnYvMUFxc0RIZ0FUQUI4QVRnQ3dBRVZZc0FBdkc3RUFGajVac0FCRldMQU1MeHV4REJBK1diQUFFTElCQWdvcldDSFlHL1Jac2dZTUFCRVNPYkFHTDdJVUFnb3JXQ0hZRy9SWnNBd1FzaHNDQ2l0WUlkZ2I5Rmt3TVFFVkl3UUhOak15RmhVVUJpTWlKalUxTkRZM0F5SUdCeFVVRmpNeU5qUW1BaWdSL3ZRWFNISjJoNStFaTZmZXpYNHpUUkZUUHoxT1J3TWVnd0xiVFpGM2RKcW1selBRNUFYK2Jpd2dJbFJWVDN4TUFBQUJBRG9BQUFLbEF4VUFCZ0F5QUxBQVJWaXdCUzhic1FVV1BsbXdBRVZZc0FJdkc3RUNFRDVac0FVUXNnUUNDaXRZSWRnYjlGbXlBQVVFRVJJNU1ERUJBU01CSVRVaEFxWCtvNllCWGY0N0Ftc0N1LzFGQXBPQ0FBQURBRS8vOVFLZkF5QUFFd0FlQUNnQWVnQ3dBRVZZc0JFdkc3RVJGajVac0FCRldMQUdMeHV4QmhBK1diSWtCaEVSRWptd0pDKzIzeVR2SlA4a0ExMjJEeVFmSkM4a0ExMnkveVFCY2JRUEpCOGtBbkt5RndJS0sxZ2gyQnYwV2JJQ0pCY1JFam15REJja0VSSTVzQVlRc2gwQ0NpdFlJZGdiOUZtd0VSQ3lId0lLSzFnaDJCdjBXVEF4QVJRSEZoVVVCaUFtTlRRMk55WTFORFl6TWhZRE5DWWpJZ1lWRkJZeU5nTWlCaFVVRmpJMk5DWUNpM2VMb1A3d29FcEFkNWQ5ZnBlSlRqNC9TMHgrVEl3M1B6OXdQMEFDUTNZM080TnFlWGxxUW1FYk4zWm5kbmIrT2pRNk9qUTFPam9COERVd0xqZzRYRGNBQUFJQVNmLzVBcFVESUFBU0FCNEFXZ0N3QUVWWXNBZ3ZHN0VJRmo1WnNBQkZXTEFQTHh1eER4QStXYklDRHdnUkVqbXdBaSsyRHdJZkFpOENBMTJ3RHhDeUVBSUtLMWdoMkJ2MFdiQUNFTElUQWdvcldDSFlHL1Jac0FnUXNoa0NDaXRZSWRnYjlGa3dNUUVHSXlJbU5UUTJNeklXRnhVUUJRYzFNalluTWpjMU5DWWpJZ1lWRkJZQjlrVmxkbzJqZ1ltY0EvNXpONWFFZTE0cVR6dzdURW9CUUVHS2ZubWdwWlE5L21RVUFYOWlua2M4VTFCVVEwRk9BQUVBandLTEF3c0RJZ0FEQUJFQXNBSXZzZ0VCQ2l0WUlkZ2I5Rmt3TVFFaE5TRURDLzJFQW53Q2k1Y0FBd0NlQkVBQ2JnWnlBQU1BRHdBYkFISUFzQUJGV0xBTkx4dXhEUmcrV2JBSDBMQUhMMEFKUHdkUEIxOEhid2NFWGJBQzBMQUNMN1kvQWs4Q1h3SURYYkFBMExBQUwwQVJEd0FmQUM4QVB3QlBBRjhBYndCL0FBaGRzQUlRc0FQUUdiQURMeGl3RFJDeUV3Y0tLMWdoMkJ2MFdiQUhFTElaQndvcldDSFlHL1JaTURFQk13Y2pCelEyTXpJV0ZSUUdJeUltTnhRV016STJOVFFtSXlJR0FiRzkzSEtDWkVoRVkyRkdTR1JWTXlRak1EQWpKVElHY3JqWFJtRmVTVWRjWGtVak1qRWtKakkwQUFNQUh2NUtCQkVFVGdBcEFEY0FSQUNQQUxBQVJWaXdKaThic1NZWVBsbXdBRVZZc0JZdkc3RVdFajVac0NZUXNDblFzQ2t2c2dBRENpdFlJZGdiOUZteUNCWW1FUkk1c0FndnNnNElGaEVTT2JBT0w3U1FEcUFPQWwyeU53RUtLMWdoMkJ2MFdiSWNOdzRSRWpteUlBZ21FUkk1c0JZUXNqQUJDaXRZSWRnYjlGbXdDQkN5T3dFS0sxZ2gyQnYwV2JBbUVMSkNBUW9yV0NIWUcvUlpNREVCSXhZWEZSUUdCaU1pSndZVkZCY3pGaFlWRkFZR0l5SW1OVFEyTnlZMU5EY21OVFUwTmpNeUZ5RUJCZ1lWRkJZek1qWTFOQ1luSXdNVUZqTXlOalUxTkNZaUJoVUVFWmM2QVcvRGVFOUpOSHEzeU02TjlKZlIvMTVVT0hPdThidFFSd0Z2L1R3NFBKU0RrczFvYk85MGpHbG5pb3JTaWdPblZHa1pZcVplRlNwQVVBSUJsWTlVb1dDYmVsT0tLaTlLZkZKcXhRdWR5aFQ3K0JwZE4wcFpja3hLUVFJQ3BWTjdlbGdTVjNoNFdnQUFBZ0JrLytzRVdBUk9BQkFBSEFCaEFMQUFSVml3Q1M4YnNRa1lQbG13QUVWWXNBd3ZHN0VNR0Q1WnNBQkZXTEFDTHh1eEFoQStXYkFBUlZpd0VDOGJzUkFRUGxteUFBSUpFUkk1c2dzSkFoRVNPYkFDRUxJVUFRb3JXQ0hZRy9SWnNBa1FzaG9CQ2l0WUlkZ2I5Rmt3TVNVQ0lTSUNOVFVRRWpNZ0V6Y3pBeE1qQVJRV016SVROU1ltSXlJR0E0SnMvdkxBNU9MRUFRbHNJckJxY2JEOWRaS0gwMGdja211R2xmSCsrZ0ViOUE4QkNBRTkvdi90L2VMOTVBSDByOE1CaHlTK3krTUFBZ0N4QUFBRTR3V3ZBQllBSGdCaHNoZ2ZJQkVTT2JBWUVMQUUwQUN3QUVWWXNBTXZHN0VESEQ1WnNBQkZXTEFCTHh1eEFSQStXYkFBUlZpd0R5OGJzUThRUGxteUZ3TUJFUkk1c0JjdnNnQUJDaXRZSWRnYjlGbXlDUmNBRVJJNXNBTVFzaDBCQ2l0WUlkZ2I5Rmt3TVFFUkl4RWhNaFlWRkFjV0V4VVdGeFVqSmljMU5DWWpKU0V5TmpVUUlTRUJjc0VDRHZENzdkNEZBa0hHT3dPTWYvNmVBVG1pbmY3UC9ya0NkUDJNQmEvU3pPVmpSZjc2bkkwOUdEYXNpM2lQblh5RUFRQUFBUUN5QUFBRkhRV3dBQXdBYUFDd0FFVllzQVF2RzdFRUhENVpzQUJGV0xBSUx4dXhDQncrV2JBQVJWaXdBaThic1FJUVBsbXdBRVZZc0Fzdkc3RUxFRDVac2dZQ0JCRVNPWHl3Qmk4WXRHTUdjd1lDWGJRekJrTUdBbDJ5a3dZQlhiSUJBUW9yV0NIWUcvUlpzZ29CQmhFU09UQXhBU01SSXhFekVUTUJNd0VCSXdJanNjREFsZ0g5Ny8zVUFsWHJBbzc5Y2dXdy9YNENndjArL1JJQUFBRUFrZ0FBQkJRR0FBQU1BRk1Bc0FCRldMQUVMeHV4QkI0K1diQUFSVml3Q0M4YnNRZ1lQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFMTHh1eEN4QStXYklIQ0FJUkVqbXdCeSt5QUFFS0sxZ2gyQnYwV2JJS0FBY1JFamt3TVFFakVTTVJNeEV6QVRNQkFTTUJ6SUM2dW40Qk85ditoZ0d1MndIMS9nc0dBUHlPQWF6K0UvMnpBQUVBc2dBQUJQb0ZzQUFMQUV3QXNBQkZXTEFETHh1eEF4dytXYkFBUlZpd0J5OGJzUWNjUGxtd0FFVllzQUV2RzdFQkVENVpzQUJGV0xBS0x4dXhDaEErV2JJQUF3RVJFam15QlFNQkVSSTVzZ2tBQlJFU09UQXhBUkVqRVRNUk13RXpBUUVqQVhMQXdBd0NZL0g5YXdLOTdRSzEvVXNGc1AxNUFvZjlPLzBWQUFBQkFKSUFBQVB4QmhnQURBQk1BTEFBUlZpd0JDOGJzUVFlUGxtd0FFVllzQWd2RzdFSUdENVpzQUJGV0xBQ0x4dXhBaEErV2JBQVJWaXdDeThic1FzUVBsbXlBQWdDRVJJNXNnWUlBaEVTT2JJS0JnQVJFamt3TVFFakVTTVJNeEV6QVRNQkFTTUJVQVM2dWdFQml2RCtLd0gvNUFIei9nMEdHUHgxQWEzK0RmMjVBQUFCQUVQL0V3UGRCWE1BS3dCbUFMQUFSVml3Q1M4YnNRa2FQbG13QUVWWXNDSXZHN0VpRUQ1WnNnSWlDUkVTT2JBSkVMQU0wTEFKRUxBUTBMQUpFTElUQVFvcldDSFlHL1Jac0FJUXNoa0JDaXRZSWRnYjlGbXdJaEN3SDlDd0loQ3dKdEN3SWhDeUtRRUtLMWdoMkJ2MFdUQXhBVFFtSkNjbU5UUTJOelV6RlJZV0ZTTTBKaU1pQmhVVUZnUVdGaFVVQmdjVkl6VW1KalV6RkJZek1qWURJM24rMmxiRHk2YVZvOGE1alhseGhuc0JPTEJXdzZtVnV0KzZtb3grZ2dFcVVGaEtLMkt6Z3F3UTJkc1Z3b2hpYTFsUVFWaFFaWWhiZ3FZUTRlRVR3cFJtY2xzQUFBRUFNQUFBQSs4RW5RQWdBR0FBc0FCRldMQVVMeHV4RkJvK1diQUFSVml3Qnk4YnNRY1FQbG15RHdjVUVSSTVzQTh2c2c0RUNpdFlJZGdiOUZtd0FkQ3dCeEN5QkFFS0sxZ2gyQnYwV2JBSTBMQVVFTEFZMExBVUVMSWJBUW9yV0NIWUcvUlpzQThRc0IvUU1ERUJJUmNXQnlFSElUVXpOamMzSnlNMU15Y21Oak15RmhVak5DWWpJZ1lYRnlFREhmNXdBUVU0QXBRQi9JUUtUd2tCQWFTZ0JBYkx0YmZLdVdoZ1hXZ0VCQUdVQWZRaXkyK1ltQmZkUmlKNWU4bnN6TGR3ZDQrS2V3QUFBUUFXQUFBRUpRU05BQmNBaWdDd0FFVllzQmN2RzdFWEdqNVpzQUJGV0xBQkx4dXhBUm8rV2JBQVJWaXdEUzhic1EwUVBsbXlBQTBYRVJJNXNoQU5GeEVTT2JBUUw3SVBFQUZkc0JUUXNCUXZ0QThVSHhRQ2NVQVBEeFFmRkM4VVB4UlBGRjhVYnhRSFhiQUQwTEFVRUxJVEJBb3JXQ0hZRy9SWnNBYlFzQkFRc0FqUXNCQVFzZzhFQ2l0WUlkZ2I5Rm13QzlBd01RRUJNd0V6RlNFSEZTRVZJUlVqTlNFMUlUVWhOU0VCTXdJZEFUalEvcHY3L3NFRkFVVCt2TG4rdkFGRS9yd0JBUDZjMEFKTEFrTDlqSGtKUW5qZDNYaExlUUowQUFFQWlnQUFBNFVFalFBRkFES3lBUVlIRVJJNUFMQUFSVml3QkM4YnNRUWFQbG13QUVWWXNBSXZHN0VDRUQ1WnNBUVFzZ0FCQ2l0WUlkZ2I5Rmt3TVFFaEVTTVJJUU9GL2I2NUF2c0Q5UHdNQkkwQUFBSUFGQUFBQkZNRWpRQURBQWdBUExJRkNRb1JFam13QlJDd0F0QUFzQUJGV0xBQ0x4dXhBaG8rV2JBQVJWaXdBQzhic1FBUVBsbXlCUUlBRVJJNXNnY0JDaXRZSWRnYjlGa3dNU0VoQVRNREp3Y0JJUVJUKzhFQnlhMDlHaG4rK0FKREJJMyszVnhlL1RBQUFBTUFZUC93QkZvRW5RQURBQkVBSHdCZUFMQUFSVml3RGk4YnNRNGFQbG13QUVWWXNBY3ZHN0VIRUQ1WnNnSUhEaEVTT1h5d0FpOFl0R0FDY0FJQ2NiUmdBbkFDQWwyeUFRRUtLMWdoMkJ2MFdiQU9FTElWQVFvcldDSFlHL1Jac0FjUXNod0JDaXRZSWRnYjlGa3dNUUVoTlNFRkVBQWpJZ0FSTlJBQU16SUFGd2MwSmlNaUJoVVZGQll6TWpZMUExWCtId0hoQVFYKzdPamwvdWNCRitYcEFSTUN0NnlibHErd2w1eXBBZm1aYnY3Ny90RUJNZ0VIUGdFQ0FUVCswUDhGeHRMV3hVTEQxOVBIQUFFQUZBQUFCRk1FalFBSUFEaXlCd2tLRVJJNUFMQUFSVml3QWk4YnNRSWFQbG13QUVWWXNBQXZHN0VBRUQ1WnNBQkZXTEFFTHh1eEJCQStXYklIQWdBUkVqa3dNVE1qQVRNQkl3RW5COXZIQWNtdEFjbkcvc0FhR1FTTiszTURhbHhlQUFBREFENEFBQU5MQkkwQUF3QUhBQXNBWTdJRURBMFJFam13QkJDd0FkQ3dCQkN3Q2RBQXNBQkZXTEFLTHh1eENobytXYkFBUlZpd0FDOGJzUUFRUGxteUFnRUtLMWdoMkJ2MFdiSUhDZ0FSRWptd0J5K3l2d2NCWGJJRUFRb3JXQ0hZRy9SWnNBb1FzZ2dCQ2l0WUlkZ2I5Rmt3TVNFaE5TRURJVFVoRXlFMUlRTkwvUE1ERFVQOWR3S0pRL3p6QXcyWUFYdVlBVW1aQUFFQWlnQUFCRVFFalFBSEFEK3lBUWdKRVJJNUFMQUFSVml3Qmk4YnNRWWFQbG13QUVWWXNBQXZHN0VBRUQ1WnNBQkZXTEFFTHh1eEJCQStXYkFHRUxJQ0FRb3JXQ0hZRy9SWk1ERWhJeEVoRVNNUklRUkV1djI1dVFPNkEvVDhEQVNOQUFBQkFEOEFBQVBJQkkwQURBQkRzZ1lORGhFU09RQ3dBRVZZc0Fndkc3RUlHajVac0FCRldMQURMeHV4QXhBK1diSUJBUW9yV0NIWUcvUlpzQVhRc0FnUXNnb0JDaXRZSWRnYjlGbXdCOUF3TVFFQklSVWhOUUVCTlNFVklRRUNiLzYyQXFQOGR3RlIvcThEVi8yUEFVb0NPdjVmbVpBQnR3RzJrSm4rWHdBREFHQUFBQVVHQkkwQUVRQVhBQjRBWEFDd0FFVllzQkF2RzdFUUdqNVpzQUJGV0xBSUx4dXhDQkErV2JJUEVBZ1JFam13RHkrd0FOQ3lDUWdRRVJJNXNBa3ZzQWJRc0FrUXNoUUJDaXRZSWRnYjlGbXdEeEN5RlFFS0sxZ2gyQnYwV2JBYjBMQVVFTEFjMERBeEFSWUVGUlFFQnhVak5TWWtOVFFrTnpVekFSQUZFUVlHQlRRbUp4RTJOZ01RNWdFUS91M2p1ZW4rOGdFUTU3bitDQUUvbXFVRE5xYVltS1lFRmczNnk4MzhEVzV1RGZ2TXpmc05kdjIxL3RnUkFuTUpsNWlabFFuOWpncVdBQUFCQUdBQUFBUzJCSTBBRlFCY3NnQVdGeEVTT1FDd0FFVllzQU12RzdFREdqNVpzQUJGV0xBUEx4dXhEeG8rV2JBQVJWaXdGQzhic1JRYVBsbXdBRVZZc0Frdkc3RUpFRDVac2hNRENSRVNPYkFUTDdBQTBMQVRFTElMQVFvcldDSFlHL1Jac0FqUU1ERUJKQkVSTXhFR0FnY1JJeEVtQWljUk14RVFCUkV6QXVnQkZia0Q4dG02MmZBRnVnRVV1Z0c3TXdGckFUVCt2ZlArNGhqKzN3RWZGQUVkOGdGTC9zditqaTBDMUFBQkFIVUFBQVIrQkowQUlRQmNzZ2NpSXhFU09RQ3dBRVZZc0Jndkc3RVlHajVac0FCRldMQVBMeHV4RHhBK1diQUFSVml3SUM4YnNTQVFQbG13RHhDeUVRRUtLMWdoMkJ2MFdiQU8wTEFBMExBWUVMSUhBUW9yV0NIWUcvUlpzQkVRc0I3UXNCL1FNREVsTmpZMU5UUW1JeUlHRlJVVUZoY1ZJVFV6SmhFMU5BQXpNZ0FWRlJBSE14VWhBcnVJZjY2ZG5LeU5mLzQrcjdNQkcrZm9BUnl5dGY0OW5SL2Z6U2F6d01HM0ljemZJSjJYblFFNkh1NEJJLzdjOVJ6K3k1eVhBQUVBSnYvc0JTd0VqUUFaQUd1eUZob2JFUkk1QUxBQVJWaXdBaThic1FJYVBsbXdBRVZZc0E0dkc3RU9FRDVac0FCRldMQVlMeHV4R0JBK1diQUNFTElBQVFvcldDSFlHL1Jac0FUUXNBWFFzZ2dDRGhFU09iQUlMN0FPRUxJUEFRb3JXQ0hZRy9SWnNBZ1FzaFVCQ2l0WUlkZ2I5Rmt3TVFFaE5TRVZJUkUyTXpJV0ZSUUdJelV5TmpVMEppTWlCeEVqQVlyK25BT0ovcFNYbk5UaTVlQ05mMzJBblphNUEvU1ptZjdYTWRERXZyNlhiWGlEZVRMOXpnQUFBUUJnLy9BRU1BU2RBQjRBZmJJREh5QVJFamtBc0FCRldMQUxMeHV4Q3hvK1diQUFSVml3QXk4YnNRTVFQbG15RHdzREVSSTVzQXNRc2hJQkNpdFlJZGdiOUZteUZnc0RFUkk1ZkxBV0x4aXlvQllCWGJSZ0ZuQVdBbDJ5TUJZQmNiUmdGbkFXQW5HeUZ3RUtLMWdoMkJ2MFdiQURFTEliQVFvcldDSFlHL1Jac2g0REN4RVNPVEF4QVFZR0l5SUFFVFUwTmpZek1oWVhJeVltSXlJR0J5RVZJUllXTXpJMk53UXdGUHpSNFA3eGUrZVl6UGNUdVJLTmZwbWlCZ0cvL2tFRW9aR0hqUlFCZWJ2T0FTY0JBMTZrK1lqVHU0SjB3NitZc3NKdmd3QUNBQ2NBQUFiN0JJMEFGd0FnQUhheUJDRWlFUkk1c0FRUXNCalFBTEFBUlZpd0VpOGJzUklhUGxtd0FFVllzQU12RzdFREVENVpzQUJGV0xBTEx4dXhDeEErV2JBU0VMSUZBUW9yV0NIWUcvUlpzQXNRc2c0QkNpdFlJZGdiOUZteUZCSURFUkk1c0JRdnNoZ0JDaXRZSWRnYjlGbXdBeEN5R1FFS0sxZ2gyQnYwV1RBeEFSUUdCeUVSSVFNT0FnY2pOemMyTmhNVElSRWhGaFlsRVNFeU5qVTBKaU1HKytiRC9pditYZzhMVFpkN093UXVZRkVLRkFNT0FTVEI0UDA3QVJWeWhJTnpBVzZseHdJRDlQNWw3ZloxQWFVQkJMNEJDUUljL2tvRXdTMytXWFZqWDNBQUFnQ0tBQUFIQ1FTTkFCSUFHd0NKc2dFY0hSRVNPYkFCRUxBVDBBQ3dBRVZZc0FJdkc3RUNHajVac0FCRldMQVJMeHV4RVJvK1diQUFSVml3Q3k4YnNRc1FQbG13QUVWWXNBOHZHN0VQRUQ1WnNnRUNDeEVTT1h5d0FTOFlzcUFCQVYyeUJBSUxFUkk1c0FRdnNBRVFzZzBCQ2l0WUlkZ2I5Rm13QkJDeUV3RUtLMWdoMkJ2MFdiQUxFTElVQVFvcldDSFlHL1JaTURFQklSRXpFU0VXRmhVVUJnY2hFU0VSSXhFekFSRWhNalkxTkNZbkFVTUNTTGtCSk1IZzVzUCtLLzI0dWJrREFRRVZjNFI5YmdLS0FnUCtTZ1RCcEtYSEFnSHkvZzRFamYyeS9sbDNZVnR4QXdBQUFRQW9BQUFGTGdTTkFCVUFXcklIRmhjUkVqa0FzQUJGV0xBQ0x4dXhBaG8rV2JBQVJWaXdEQzhic1F3UVBsbXdBRVZZc0JRdkc3RVVFRDVac0FJUXNnQUJDaXRZSWRnYjlGbXdCTkN3QmRDeUNBSU1FUkk1c0FndnNoRUJDaXRZSWRnYjlGa3dNUUVoTlNFVklSRTJNeklXRnhFakVUUW1JeUlIRVNNQmkvNmRBNG4rbEpPZzFONEV1bjEvblphNkEvU1ptZjdYTWNyQi9vOEJaSWQ1TXYzT0FBQUJBSXIrbXdSREJJMEFDd0JQc2dNTURSRVNPUUN3QWkrd0FFVllzQVl2RzdFR0dqNVpzQUJGV0xBS0x4dXhDaG8rV2JBQVJWaXdBQzhic1FBUVBsbXdBRVZZc0FRdkc3RUVFRDVac2dnQkNpdFlJZGdiOUZtd0NkQXdNU0VoRVNNUklSRXpFU0VSTXdSRC9vRzUvbis1QWtlNS9wc0JaUVNOL0FzRDlRQUNBSW9BQUFRSUJJMEFEQUFWQUY2eUF4WVhFUkk1c0FNUXNBM1FBTEFBUlZpd0N5OGJzUXNhUGxtd0FFVllzQWt2RzdFSkVENVpzQXNRc2dBQkNpdFlJZGdiOUZteUF3c0pFUkk1c0FNdnNBa1FzZzBCQ2l0WUlkZ2I5Rm13QXhDeUV3RUtLMWdoMkJ2MFdUQXhBU0VSSVRJV0ZSUUdCeUVSSVFFeU5qVTBKaWNoRVFPVi9hNEJFYzdtNU1YK0t3TUwvc056aEgxdS90OEQ5LzdneEtXa3lBSUVqZndMZDJGYmNRUCtXUUFDQUM3K3JBVG5CSTBBRHdBVkFGdXlFeFlYRVJJNXNCTVFzQVhRQUxBSkw3QUFSVml3QlM4YnNRVWFQbG13QUVWWXNBc3ZHN0VMRUQ1WnNnQUJDaXRZSWRnYjlGbXdCOUN3Q05Dd0NSQ3dEZEN3Q0JDd0VOQ3dFZEN3QlJDeUVnRUtLMWdoMkJ2MFdUQXhOemMyTmpjVElSRXpFU01SSVJFakV5RWhFU0VEQW9VcFIwY0hEZ01IajduOHVyb0JBUzRDUXY1a0RCR1lNVmI5MkFHWi9BditGQUZVL3EwQjZ3TmMvc2orbVFBQkFCOEFBQVhyQkkwQUZRQ1JzZ0VXRnhFU09RQ3dBRVZZc0Frdkc3RUpHajVac0FCRldMQU5MeHV4RFJvK1diQUFSVml3RVM4YnNSRWFQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFHTHh1eEJoQStXYkFBUlZpd0ZDOGJzUlFRUGxteUVBa0NFUkk1ZkxBUUx4aXlvQkFCWGJSZ0VIQVFBbDJ5QUFFS0sxZ2gyQnYwV2JBRTBMSVRFQUFSRWptd0V4Q3dDTkN3RUJDd0M5QXdNUUVqRVNNUkl3RWpBUUV6QVRNUk14RXpBVE1CQVNNRHhXTzZaUDdGNmdHRy9wN2dBU3hadWxrQkxPRCtuQUdJNmdIMi9nb0I5djRLQWxFQ1BQNERBZjMrQXdIOS9jMzlwZ0FBQVFCSC8vQUQxQVNkQUNnQWZiSWtLU29SRWprQXNBQkZXTEFLTHh1eENobytXYkFBUlZpd0ZpOGJzUllRUGxtd0NoQ3lBd0VLSzFnaDJCdjBXYklHQ2hZUkVqbXlKd29XRVJJNXNDY3Z0QjhuTHljQ1hiSy9Kd0ZkdE44bjd5Y0NYYklrQVFvcldDSFlHL1Jac2hBa0p4RVNPYkljRmdvUkVqbXdGaEN5SHdFS0sxZ2gyQnYwV1RBeEFUUW1JeUlHRlNNME5qTXlGaFVVQmdjV0ZoVVVCaU1pSmljbU5UTVdGak15TmpVMEpTTTFNellEQ0lwOWJvRzY3YnpUN201bmRuSCsxVnVwUFhtNUJZTjVpSkwrLzUyYzd3TlFWRjFZVDQ2MXFKWldqU2tra2x1ZXRDd3VXWjFXWUdCWXdRV1lCUUFCQUlvQUFBUmhCSTBBQ1FCTXNnQUtDeEVTT1FDd0FFVllzQUF2RzdFQUdqNVpzQUJGV0xBSEx4dXhCeG8rV2JBQVJWaXdBaThic1FJUVBsbXdBRVZZc0FVdkc3RUZFRDVac2dRQUFoRVNPYklKQUFJUkVqa3dNUUV6RVNNUkFTTVJNeEVEcUxtNS9adTV1UVNOKzNNRGRQeU1CSTM4akFBQkFJc0FBQVFzQkkwQURBQm9zZ29ORGhFU09RQ3dBRVZZc0FRdkc3RUVHajVac0FCRldMQUlMeHV4Q0JvK1diQUFSVml3QWk4YnNRSVFQbG13QUVWWXNBc3ZHN0VMRUQ1WnNnWUNCQkVTT1h5d0JpOFlzcUFHQVYyMFlBWndCZ0pkc2dFQkNpdFlJZGdiOUZteUNnRUdFUkk1TURFQkl4RWpFVE1STXdFekFRRWpBYTVxdWJsa0FZWGYvalVCNis4Qjl2NEtCSTMrQXdIOS9jWDlyZ0FBQVFBbkFBQUVOZ1NOQUE4QVRiSUVFQkVSRWprQXNBQkZXTEFBTHh1eEFCbytXYkFBUlZpd0FTOGJzUUVRUGxtd0FFVllzQWd2RzdFSUVENVpzQUFRc2dNQkNpdFlJZGdiOUZtd0NCQ3lDZ0VLSzFnaDJCdjBXVEF4QVJFakVTRURBZ0lISXpjM05qWTNFd1EydWY1ZUR3MmtzRVFFS1Y1UURSa0VqZnR6QS9UK2d2NnEvdVVGcFFNSG51SUNYZ0FBQVFBaS8rd0VDd1NOQUJFQVE3SUJFaE1SRWprQXNBQkZXTEFDTHh1eEFobytXYkFBUlZpd0VDOGJzUkFhUGxtd0FFVllzQWd2RzdFSUVENVpzZ0VJQWhFU09iSU1BUW9yV0NIWUcvUlpNREVCRndFekFRY0dCd2NpSnpjWE1qWTNBVE1COVMwQkZOWCtYaVZRcWlaUUZBWmNNVWtnL21iV0FqQjRBdFg4UlVtUkN3RUlrd1V4T3dPZkFBQUJBSXIrckFUeEJJMEFDd0JGc2drTURSRVNPUUN3QWkrd0FFVllzQVl2RzdFR0dqNVpzQUJGV0xBS0x4dXhDaG8rV2JBQVJWaXdCQzhic1FRUVBsbXlBQUVLSzFnaDJCdjBXYkFJMExBSjBEQXhKVE1ESXhFaEVUTVJJUkV6QkVTdEVxWDhVTGtDUjdxWS9oUUJWQVNOL0FzRDlRQUFBUUE5QUFBRDN3U05BQkVBUnJJRUVoTVJFamtBc0FCRldMQUlMeHV4Q0JvK1diQUFSVml3RUM4YnNSQWFQbG13QUVWWXNBQXZHN0VBRUQ1WnNnMElBQkVTT2JBTkw3SUVBUW9yV0NIWUcvUlpNREVoSXhFR0l5SW1KeEV6RVJRV016STNFVE1EMzdtUW85VGVCTGwrZjUyV3VRSENNTXJCQVhEK25ZZDVNZ0l4QUFFQWlnQUFCY1lFalFBTEFFK3lCUXdORVJJNUFMQUFSVml3QWk4YnNRSWFQbG13QUVWWXNBWXZHN0VHR2o1WnNBQkZXTEFLTHh1eENobytXYkFBUlZpd0FDOGJzUUFRUGxteUJBRUtLMWdoMkJ2MFdiQUkwTEFKMERBeElTRVJNeEVoRVRNUklSRXpCY2I2eExrQmlMb0JpTGtFamZ3TEEvWDhDd1AxQUFFQWl2NnNCblVFalFBUEFGaXlDeEFSRVJJNUFMQUNMN0FBUlZpd0JpOGJzUVlhUGxtd0FFVllzQW92RzdFS0dqNVpzQUJGV0xBT0x4dXhEaG8rV2JBQVJWaXdCQzhic1FRUVBsbXlBQUVLSzFnaDJCdjBXYkFJMExBSjBMQU0wTEFOMERBeEpUTURJeEVoRVRNUklSRXpFU0VSTXdYSHJoS20rczI1QVlpNkFZaTZtUDRVQVZRRWpmd0xBL1g4Q3dQMUFBQUNBQWdBQUFUV0JJMEFEUUFXQUY2eUNCY1lFUkk1c0FnUXNCWFFBTEFBUlZpd0J5OGJzUWNhUGxtd0FFVllzQU12RzdFREVENVpzQWNRc2dVQkNpdFlJZGdiOUZteUNnY0RFUkk1c0FvdnNBTVFzZzRCQ2l0WUlkZ2I5Rm13Q2hDeUZBRUtLMWdoMkJ2MFdUQXhBUlFHQnlFUklUVWhFU0V5RmhZQk1qWTFOQ1lqSVJFRTF1VEUvaXIrc0FJS0FSYUV3bWorVVhLRWczUCs2d0Z1cE1nQ0EvU1ova3BZby82OGRXTmZjUDVaLy84QWlnQUFCV2NFalFBbUFnZ0FBQUFIQWNJRUZnQUFBQUlBaWdBQUJBZ0VqUUFLQUJNQVVMSUlGQlVSRWptd0NCQ3dDOUFBc0FCRldMQUZMeHV4QlJvK1diQUFSVml3QXk4YnNRTVFQbG15Q0FVREVSSTVzQWd2c0FNUXNnc0JDaXRZSWRnYjlGbXdDQkN5RVFFS0sxZ2gyQnYwV1RBeEFSUUdCeUVSTXhFaE1oWUJNalkxTkNZbklSRUVDT1RGL2l1NUFSSE81djVRYzRSOWJ2N2ZBVzZreUFJRWpmNUt4UDZGZDJGYmNRUCtXUUFCQUV2LzhBUWJCSjBBSGdCNnNnTWZJQkVTT1FDd0FFVllzQk12RzdFVEdqNVpzQUJGV0xBYkx4dXhHeEErV2JJQUd4TVJFam15QXdFS0sxZ2gyQnYwV2JJSkV4c1JFamw4c0FrdkdMS2dDUUZkdEdBSmNBa0NYYkl3Q1FGeHRHQUpjQWtDY2JJR0FRb3JXQ0hZRy9SWnNCTVFzZ3dCQ2l0WUlkZ2I5Rm15RHhNYkVSSTVNREVCRmhZek1qWTNJVFVoSmlZaklnWUhJelkyTXpJQUZ4VVVCZ1lqSWlZbkFRUVVqWWVOb2dmK1FRRytCYU9ZZm8wU3VSUDN6T1FCRVFWNDRwWFAvaFFCZVlOdnU3bVlyOE4wZ3J2VC90LzBkYVA1aDg2N0FBQUNBSXIvOEFZVkJKMEFFd0FoQUlxeUJDSWpFUkk1c0FRUXNCalFBTEFBUlZpd0VDOGJzUkFhUGxtd0FFVllzQXN2RzdFTEdqNVpzQUJGV0xBREx4dXhBeEErV2JBQVJWaXdDQzhic1FnUVBsbXlEUWdMRVJJNWZMQU5MeGkwWUExd0RRSnhzcUFOQVYyMFlBMXdEUUpkc2dZQkNpdFlJZGdiOUZtd0VCQ3lGd0VLSzFnaDJCdjBXYkFERUxJZUFRb3JXQ0hZRy9SWk1ERUJFQUFqSWdBbkl4RWpFVE1STXpZQU16SUFGd2MwSmlNaUJoVVZGQll6TWpZMUJoWCs3T2pkL3VzTTJMbTUyQTRCRk5ycEFSTUN0NnlibHErd2w1eXBBaVQrKy83UkFSenkvZ0lFamY0SjhRRVcvdEQvQmNiUzFzVkN3OWZUeHdBQUFnQlFBQUFEL0FTTkFBMEFGQUJoc2hNVkZoRVNPYkFURUxBSDBBQ3dBRVZZc0Fjdkc3RUhHajVac0FCRldMQUFMeHV4QUJBK1diQUFSVml3Q1M4YnNRa1FQbG15RVFjQUVSSTVzQkV2c2dzQkNpdFlJZGdiOUZteUFRc0hFUkk1c0FjUXNoSUJDaXRZSWRnYjlGa3dNVE1CSmlZMU5EWTNJUkVqRVNFREV4UVhJUkVoSWxBQklucHgzTWdCMGJuKzBQOHU1Z0ViL3Uvd0FnMG1uV2loc2dMN2N3SGYvaUVETUxRRUFYd0FBUUFMQUFBRDV3U05BQTBBVUxJQkRnOFJFamtBc0FCRldMQUlMeHV4Q0JvK1diQUFSVml3QWk4YnNRSVFQbG15RFFnQ0VSSTVzQTB2c2dBQkNpdFlJZGdiOUZtd0JOQ3dEUkN3QnRDd0NCQ3lDZ0VLSzFnaDJCdjBXVEF4QVNNUkl4RWpOVE1SSVJVaEVUTUNoK0s1NGVFQysvMis0Z0g5L2dNQi9aY0IrWm4rb0FBQUFRQWYvcXdHSWdTTkFCa0FxcklJR2hzUkVqa0FzQUJGV0xBUUx4dXhFQm8rV2JBQVJWaXdGQzhic1JRYVBsbXdBRVZZc0Jndkc3RVlHajVac0FCRldMQU5MeHV4RFJBK1diQUFSVml3Q2k4YnNRb1FQbG13QUVWWXNBVXZHN0VGRUQ1WnNoY0tHQkVTT1h5d0Z5OFlzcUFYQVYyMFlCZHdGd0pkdEdBWGNCY0NjYklIQVFvcldDSFlHL1Jac2dBSEZ4RVNPYkFGRUxJQkFRb3JXQ0hZRy9SWnNBY1FzQXZRc2c4WEJ4RVNPYkFYRUxBUzBEQXhBUUV6RVNNUkl3RWpFU01SSXdFakFRRXpBVE1STXhFekFUTUVZd0VtbWFkNi9zUmp1bVQreGVvQmh2NmU0QUVzV2JwWkFTemdBbHIrUFA0V0FWUUI5djRLQWZiK0NnSlJBanorQXdIOS9nTUIvUUFCQUl2K3JBUk9CSTBBRUFDQXNnQVJFaEVTT1FDd0F5K3dBRVZZc0Fzdkc3RUxHajVac0FCRldMQVBMeHV4RHhvK1diQUFSVml3Q1M4YnNRa1FQbG13QUVWWXNBVXZHN0VGRUQ1WnNnMEpDeEVTT1h5d0RTOFl0R0FOY0EwQ2NiS2dEUUZkdEdBTmNBMENYYklJQVFvcldDSFlHL1Jac2dBSURSRVNPYkFGRUxJQkFRb3JXQ0hZRy9SWk1ERUJBVE1SSXhFakFTTVJJeEV6RVRNQk13SkJBVytlcUduK2NXcTV1V1FCaGQ4Q1V2NUUvaFlCVkFIMi9nb0VqZjREQWYwQUFBRUFpd0FBQk9jRWpRQVVBSGl5Q3hVV0VSSTVBTEFBUlZpd0JpOGJzUVlhUGxtd0FFVllzQk12RzdFVEdqNVpzQUJGV0xBSkx4dXhDUkErV2JBQVJWaXdFUzhic1JFUVBsbXlBQkVURVJJNWZMQUFMeGl5b0FBQlhiUmdBSEFBQWwyMFlBQndBQUp4c0FUUXNBQVFzaEFCQ2l0WUlkZ2I5Rm15Q0JBQUVSSTVzQXpRTURFQk16VXpGVE1CTXdFQkl3RWpGU00xSXhFakVUTUJSRkNVUEFHRTRQNDBBZXZ2L25GQmxGQzV1UUtRNU9RQi9mM0YvYTRCOXM3Ty9nb0VqUUFBQVFBakFBQUZGUVNOQUE0QWZiSUFEeEFSRWprQXNBQkZXTEFHTHh1eEJobytXYkFBUlZpd0NpOGJzUW9hUGxtd0FFVllzQUl2RzdFQ0VENVpzQUJGV0xBTkx4dXhEUkErV2JJSUFnWVJFamw4c0FndkdMS2dDQUZkdEdBSWNBZ0NYYlJnQ0hBSUFuR3lBUUVLSzFnaDJCdjBXYkFHRUxJRUFRb3JXQ0hZRy9SWnNnd0JDQkVTT1RBeEFTTVJJeEVoTlNFUk13RXpBUUVqQXBkcHV2NnZBZ3RqQVlYZy9qUUI2KzhCOXY0S0EvV1kvZ01CL2YzRi9hNEFBZ0JnLytzRld3U2ZBQ01BTGdDVXNoUXZNQkVTT2JBVUVMQWswQUN3QUVWWXNBc3ZHN0VMR2o1WnNBQkZXTEFiTHh1eEd4bytXYkFBUlZpd0FDOGJzUUFRUGxtd0FFVllzQVF2RzdFRUVENVpzZ0lFR3hFU09iQUNMN0FMRUxJTUFRb3JXQ0hZRy9SWnNBUVFzaE1CQ2l0WUlkZ2I5Rm13QWhDeUpnRUtLMWdoMkJ2MFdiSVZFeVlSRWpteUlRSW1FUkk1c0JzUXNpd0JDaXRZSWRnYjlGa3dNUVVpSndZaklBQVJOUkFTTXhjaUJoVVZGQll6TWpjbUF6VTBFak15RWhVVkVBY1dNd0VRRnpZUk5UUW1JeUlEQlZ2WnBvbWovdXIreHZUU0FYNlEwTWMyTXVNQno3VzR6YlplZHYyUzRiWmlhc1lGRkRzOEFVVUJLaG9CQXdFb25zUElJZWpsQ0xJQlJTZnJBUVQrLy9FNC90cXlFZ0g5L3N4NWdRRWVPS3lqL3NQLy93QU5BQUFFSEFTTkFDWUIwZ0FBQVFjQjNnQkUvdDRBQ0FDeUFBb0JYVEF4QUFFQUp2NnNCSEVFalFBUUFHdXlDeEVTRVJJNUFMQUhMN0FBUlZpd0FTOGJzUUVhUGxtd0FFVllzQTh2RzdFUEdqNVpzQUJGV0xBSkx4dXhDUkErV2JBQVJWaXdEQzhic1F3UVBsbXlBQUVNRVJJNXNnc01BUkVTT2JJREN3QVJFam13Q1JDeUJBRUtLMWdoMkJ2MFdiSU9BQXNSRWprd01RRUJNd0VCTlRNUkl4RWpBUUVqQVFFekFpZ0JIOXorZFFFeHFLaDAvdFgrMk53Qmx2NXoyd0xhQWJQOXZ2NUtBZjRXQVZRQnUvNUZBa3NDUWdBQUFRQW0vcXdGOGdTTkFBOEFYTElKRUJFUkVqa0FzQUl2c0FCRldMQUlMeHV4Q0JvK1diQUFSVml3RGk4YnNRNGFQbG13QUVWWXNBUXZHN0VFRUQ1WnNnQUJDaXRZSWRnYjlGbXdDQkN5QmdFS0sxZ2gyQnYwV2JBSzBMQUwwTEFBRUxBTTBMQU4wREF4SlRNREl4RWhFU0UxSVJVaEVTRVJNd1ZFcmhLbC9GRCttd09KL3BVQ1JycVkvaFFCVkFQMG1abjhwQVAxQUFBQkFEMEFBQVBmQkkwQUZ3QlBzZ1FZR1JFU09RQ3dBRVZZc0Fzdkc3RUxHajVac0FCRldMQVdMeHV4RmhvK1diQUFSVml3QUM4YnNRQVFQbG15RUFzQUVSSTVzQkF2c2djQkNpdFlJZGdiOUZtd0JOQ3dFQkN3RTlBd01TRWpFUVlIRlNNMUppWW5FVE1SRkJZWE5UTVZOamNSTXdQZnVXTnBsYnpKQTdsbmFKVm5aYmtCd2lFTHhzTUt5Ym9CYmY2ZGUzZ0w4TzBMSWdJeEFBQUJBSW9BQUFRc0JJMEFFUUJHc2dRU0V4RVNPUUN3QUVWWXNBQXZHN0VBR2o1WnNBQkZXTEFJTHh1eENCQStXYkFBUlZpd0VDOGJzUkFRUGxteUJBQUlFUkk1c0FRdnNnMEJDaXRZSWRnYjlGa3dNUk16RVRZek1oWVhFU01STkNZaklnY1JJNHE1bXBuVTNnUzVmbitZbTdrRWpmNCtNY3JCL284QlpJZDVNLzNQQUFBQ0FBTC84QVZyQkowQUhBQWtBR215RlNVbUVSSTVzQlVRc0I3UUFMQUFSVml3RGk4YnNRNGFQbG13QUVWWXNBQXZHN0VBRUQ1WnNpRU9BQkVTT2JBaEw3Sy9JUUZkc2hJQkNpdFlJZGdiOUZtd0E5Q3dJUkN3Q3RDd0FCQ3lGZ0VLSzFnaDJCdjBXYkFPRUxJZEFRb3JXQ0hZRy9SWk1ERUZJZ0ExSmlZMU14UVdGejRDTXpJQUVSVWhGQll6TWpZM0Z3WUdBeUlHQnlFMU5DWURrZi8renFhNG1WOW1CWWZwanZnQkVQeXV3YmRNaDFBNVBMaVdqN1VHQXBtdUVBRWk4d3ZHcUY1M0RKUHNnZjdyL3YyQ3NjQWZLSklvTHdRUndxUWJvYW9BQUFJQVh2L3dCR2tFblFBV0FCNEFYcklJSHlBUkVqbXdDQkN3RjlBQXNBQkZXTEFBTHh1eEFCbytXYkFBUlZpd0NDOGJzUWdRUGxteURRQUlFUkk1c0EwdnNBQVFzaEVCQ2l0WUlkZ2I5Rm13Q0JDeUZ3RUtLMWdoMkJ2MFdiQU5FTElhQVFvcldDSFlHL1JaTURFQk1nQVhGUlFHQmlNaUFCRTFJVFUwSmlNaUJ5YzJOaE15TmpjaEZSUVdBa2YzQVNrQ2hPeVQrUDd3QTFMQnQ1T1FPVUhBaVpHekJ2MW5yUVNkL3VEdmlKbjBpUUVWQVFHQ0FiSEJTSklwTC92dHhxRWJvS3dBQUFFQVIvL3RBOVFFalFBY0FHMnlHaDBlRVJJNUFMQUFSVml3QWk4YnNRSWFQbG13QUVWWXNBc3ZHN0VMRUQ1WnNBSVFzZ0FCQ2l0WUlkZ2I5Rm15QkFBQ0VSSTVzZ1VMQWhFU09iQUZMN0lSQ3dJUkVqbXdDeEN5RkFFS0sxZ2gyQnYwV2JBRkVMSWFBUW9yV0NIWUcvUlpzaHdGR2hFU09UQXhBU0UxSVJjQkZoWVZGQVlqSWlZbkpqVXpGaFl6TWpZMU5DWWpJelVDcy8yOEF6Z0MvcW14MGZ6WFdhczhlcmtGaVhPSWtvcUdnQVAwbVhiK214REZpNmUrTFM1YW5sbGthR3BmYXFVQUF3QmcvL0FFV2dTZEFBMEFGQUFiQUhPeUF4d2RFUkk1c0FNUXNBN1FzQU1Rc0JYUUFMQUFSVml3Q2k4YnNRb2FQbG13QUVWWXNBTXZHN0VERUQ1WnNnNEJDaXRZSWRnYjlGbXlHUW9ERVJJNWZMQVpMeGl5b0JrQlhiUmdHWEFaQWwyMFlCbHdHUUp4c2hFQkNpdFlJZGdiOUZtd0NoQ3lGUUVLSzFnaDJCdjBXVEF4QVJBQUl5SUFFVFVRQURNeUFCY0JNalkzSVJZV0V5SUdCeUVtSmdSYS91em81ZjduQVJmbDZRRVRBdjRFazZnSi9YWUtyWTJScXdnQ2lnbXFBaVQrKy83UkFUSUJCejRCQWdFMC90RC8vaHk4dExEQUEzZkRyTE84QUFBQkFEQUFBQVB2QkowQUp3Q3VzaDBvS1JFU09RQ3dBRVZZc0Iwdkc3RWRHajVac0FCRldMQU1MeHV4REJBK1diSUdIUXdSRWptd0JpK3lEd1lCY2JJUEJnRmRzazhHQVhHd0FkQ3dBUzlBQ1I4Qkx3RS9BVThCQkYyeUFBRUJYYklDQkFvcldDSFlHL1Jac0FZUXNnY0VDaXRZSWRnYjlGbXdEQkN5Q2dFS0sxZ2gyQnYwV2JBTzBMQVAwTEFIRUxBUjBMQUdFTEFUMExBQ0VMQVcwTEFCRUxBWTBMSWhBUjBSRWptd0hSQ3lKQUVLSzFnaDJCdjBXVEF4QVNFVklSY1ZJUlVoQmdjaEJ5RTFNelkzSXpVek5TY2pOVE1uSmpZek1oWVZJelFtSXlJR0Z3R0hBWmIrYmdNQmovNXNDaVFDbEFIOGhBby9GSitsQTZLZUFnYkx0YmZLdVdoZ1hXZ0VBcWg1WFJCNWFrZVltQktmZVJCZGVVREo3TXkzY0hlUGlnQUFBUUJDLy9BRG5nU2RBQ0VBbnJJVUlpTVJFamtBc0FCRldMQVZMeHV4RlJvK1diQUFSVml3Q0M4YnNRZ1FQbG15SVJVSUVSSTVzQ0V2c2c4aEFWMjBFQ0VnSVFKZHNnQUVDaXRZSWRnYjlGbXdDQkN5QXdFS0sxZ2gyQnYwV2JBQUVMQUwwTEFoRUxBTjBMQWhFTEFTMExBU0wwQUpIeEl2RWo4U1R4SUVYYklBRWdGZHNnOEVDaXRZSWRnYjlGbXdGUkN5R2dFS0sxZ2gyQnYwV2JBU0VMQWMwTEFQRUxBZTBEQXhBU0VTSVRJM0Z3WWpJaVluSXpVek5TTTFNelkyTXpJWEJ5WWpJQU1oRlNFVklRTXYvbWdnQVFKaWFCdDJiOVAxRkp1WGw1c1c5YzlnaHhWWmVmOEFJQUdZL21RQm5BR1cvdkVjbFI3YXpIbHRlY3pjSDVVYy92QjViUUFBQkFDS0FBQUhyUVNkQUFNQUVBQWVBQ2dBcUxJZktTb1JFam13SHhDd0FkQ3dIeEN3Qk5Dd0h4Q3dFZEFBc0FCRldMQW5MeHV4SnhvK1diQUFSVml3SlM4YnNTVWFQbG13QUVWWXNBY3ZHN0VIR2o1WnNBQkZXTEFpTHh1eEloQStXYkFBUlZpd0lDOGJzU0FRUGxtd0J4Q3dEZEN3RFMrd0F0Q3dBaSswQUFJUUFnSmRzZ0VEQ2l0WUlkZ2I5Rm13RFJDeUZBTUtLMWdoMkJ2MFdiQUhFTEliQXdvcldDSFlHL1Jac2lFbklCRVNPYkltSUNjUkVqa3dNU1VoTlNFQk5EWWdGaFVWRkFZaklpWTFGeFFXTXpJMk5UVTBKaU1pQmhVQkl3RVJJeEV6QVJFekIyNzkwd0l0L1pLOEFUUzl2cGVadjZOZVYxUmVZVk5TWWY2MXVQMmp1YmtDWGJpOWpnSURsYnE0bTFDWXRyZWNCVmxxYVZ4U1dtaG5YdnkxQTJ6OGxBU04vSk1EYlFBQUFnQW9BQUFFWmdTTkFCWUFId0NEc2dBZ0lSRVNPYkFZMEFDd0FFVllzQXd2RzdFTUdqNVpzQUJGV0xBQ0x4dXhBaEErV2JJV0RBSVJFam13RmkreUFBRUtLMWdoMkJ2MFdiQUUwTEFXRUxBRzBMQVdFTEFMMExBTEwwQUpEd3NmQ3k4TFB3c0VYYlMvQzg4TEFsMnlDQUVLSzFnaDJCdjBXYkFUMExBTEVMQVgwTEFNRUxJZUFRb3JXQ0hZRy9SWk1ERWxJUlVqTlNNMU16VWpOVE1SSVRJV0ZSUUdCeUVWSVNVaE1qWTFOQ1lqSVFLay92NjZ3TURBd0FIUHhlcmp2djdkQVFMKy9nRVZjb09FY1A3cXRMUzBtRm1ZQWxETXFLWExCRm54ZUdKa2VnQUFBZ0NNLyt3RU5BWUFBQkFBR3dCa3NoUWNIUkVTT2JBVUVMQU4wQUN3Q1Mrd0FFVllzQTB2RzdFTkdENVpzQUJGV0xBRUx4dXhCQkErV2JBQVJWaXdCeThic1FjUVBsbXlCZzBFRVJJNXNnc05CQkVTT2JBTkVMSVVBUW9yV0NIWUcvUlpzQVFRc2hrQkNpdFlJZGdiOUZrd01RRVVCZ1lqSWljSEl4RXpFVFl6TWhJUkp6UW1JeUlIRVJZek1qWUVORy9KZ05Gd0Q2QzVjTVhKOGJtampMZFFWYlNLb3dJU24veUxsWUVHQVAzRGkvN1QvdjhIdE5hcS9peXIyQUFBQVFCYy8rd0Q3d1JPQUIwQVNiSUFIaDhSRWprQXNBQkZXTEFRTHh1eEVCZytXYkFBUlZpd0NDOGJzUWdRUGxteUFBRUtLMWdoMkJ2MFdiQUlFTEFEMExBUUVMQVUwTEFRRUxJWEFRb3JXQ0hZRy9SWk1ERWxNalkzTXc0Q0l5SUFOVFUwTmpZek1oWVhJeVltSXlJR0ZSVVVGZ0pBWTVRSXNBVjR4RzdmL3Z0MjI1TzI4UWl3Q0k5b2o1dWRnM2hhWHFoakFTcjhJSjM1aHRxdWFZZk92eUc4eVFBQ0FGdi83QVFBQmdBQUVRQWNBR1N5R2gwZUVSSTVzQm9Rc0FUUUFMQUhMN0FBUlZpd0JDOGJzUVFZUGxtd0FFVllzQTB2RzdFTkVENVpzQUJGV0xBSkx4dXhDUkErV2JJR0JBMFJFam15Q3dRTkVSSTVzQTBRc2hVQkNpdFlJZGdiOUZtd0JCQ3lHZ0VLSzFnaDJCdjBXVEF4RXpRMk5qTXlGeEV6RVNNbkJpTWlKaVluTnhRV016STNFU1lqSWdaYmNjNkF2bSs1b1E1dnluekxkUUc1cUlxdlVsT3NqYWNDSnAvOGpZSUNOUG9BZUl5TSs1Z0dzZGlmQWZHWjFnQUNBRnYrVmdRQUJFNEFHd0FtQUh5eUh5Y29FUkk1c0I4UXNBdlFBTEFBUlZpd0F5OGJzUU1ZUGxtd0FFVllzQVl2RzdFR0dENVpzQUJGV0xBTEx4dXhDeEkrV2JBQVJWaXdHQzhic1JnUVBsbXlCUU1ZRVJJNXNBc1FzaElCQ2l0WUlkZ2I5Rm15RmdNWUVSSTVzQmdRc2g4QkNpdFlJZGdiOUZtd0F4Q3lKQUVLSzFnaDJCdjBXVEF4RXpRU016SVhOek1SQmdJaklpWW5OeFlXTXpJMk5UVUdJeUlDTlJjVUZqTXlOeEVtSXlJR1cvakd6RzhQblFMMDRGYklTRGMvbjArVmltL0J3dnE1cG91dlUxT3RqcVVDSnZZQk1wU0EvQTd2L3YwM01vb3FNckNvS0lFQk9QUUhzTm1oQWV1ZDF3RC8vd0JYQUFBQ2hnVzNBQVlBRmEwQUFBSUFqUDVnQkRJRVRnQVFBQnNBYnJJWkhCMFJFam13R1JDd0RkQUFzQUJGV0xBTkx4dXhEUmcrV2JBQVJWaXdDaThic1FvWVBsbXdBRVZZc0Fjdkc3RUhFajVac0FCRldMQUVMeHV4QkJBK1diSUdEUVFSRWpteUN3MEVFUkk1c0EwUXNoUUJDaXRZSWRnYjlGbXdCQkN5R1FFS0sxZ2gyQnYwV1RBeEFSUUdCaU1pSnhFakVUTVhOak15RWhjSE5DWWpJZ2NSRmpNeU5nUXlic2lCeFhHNW53OTB5c0h1Q3JpcGo2aFVVNnVNcWdJUm52eUxmZjMzQmRwOWtmN3A2aWV3MjVYOSs1VGZBQUFDQUZ2K1lBUC9CRTRBRHdBYUFHdXlHQnNjRVJJNXNCZ1FzQVBRQUxBQVJWaXdBeThic1FNWVBsbXdBRVZZc0FZdkc3RUdHRDVac0FCRldMQUlMeHV4Q0JJK1diQUFSVml3REM4YnNRd1FQbG15QlFNTUVSSTVzZ29EREJFU09iSVRBUW9yV0NIWUcvUlpzQU1Rc2hnQkNpdFlJZGdiOUZrd01STTBFak15RnpjekVTTVJCaU1pQWpVWEZCWXpNamNSSmlNaUJsdjN6TVJ2RHFDNWNMckgrcm1xaktaV1dLS09xZ0lsOVFFMGhuTDZKZ0lFZUFFMTlnZXUzNU1DRVkvZkFBSUFYZi9zQS9NRVRnQVVBQndBWXJJSUhSNFJFam13Q0JDd0ZkQUFzQUJGV0xBSUx4dXhDQmcrV2JBQVJWaXdBQzhic1FBUVBsbXlHUWdBRVJJNXNCa3Z0TDhaenhrQ1hiSU1BUW9yV0NIWUcvUlpzQUFRc2hBQkNpdFlJZGdiOUZtd0NCQ3lGUUVLSzFnaDJCdjBXVEF4QlNJQUp5YzBOall6TWhJVkZTRVdGak15TnhjR0FTSUdCeUUxTkNZQ2NlWCszUXNCZk4yQTFlajlKQWpDbWFCNE9ZUCs3bk9ZRVFJZ2lSUUJGK05PbS9XSy92N3dkSjNJV245eUE4cWdsaG1EbWdBQ0FHRCtWZ1B5QkU0QUdnQWxBSHl5SXlZbkVSSTVzQ01Rc0F2UUFMQUFSVml3QXk4YnNRTVlQbG13QUVWWXNBWXZHN0VHR0Q1WnNBQkZXTEFMTHh1eEN4SStXYkFBUlZpd0Z5OGJzUmNRUGxteUJRTVhFUkk1c0FzUXNoRUJDaXRZSWRnYjlGbXlGUU1YRVJJNXNCY1FzaDRCQ2l0WUlkZ2I5Rm13QXhDeUl3RUtLMWdoMkJ2MFdUQXhFelFTTXpJWE56TVJGQVlqSWlZbk54WXpNalkxTlFZaklnSTFGeFFXTXpJM0VTWWpJZ1pnNk1QS2NCQ2Q5ZUZTcjBFM2VvK1ZpVy9BdnV1NmxZaXZVbFdxaVpZQ0pmb0JMNU4vL0FYcS95MHBpa21ubmpxQUFUTDZDTFhUb0FIdW05QUFBUUIrLytzRkhRWEZBQjRBVExJTUh5QVJFamtBc0FCRldMQU1MeHV4REJ3K1diQUFSVml3QXk4YnNRTVFQbG13REJDd0VOQ3dEQkN5RXdFS0sxZ2gyQnYwV2JBREVMSWJBUW9yV0NIWUcvUlpzQU1Rc0I3UU1ERUJCZ0FqSWlRQ0p6VTBFaVF6TWdBWEl5WW1JeUlDRVJVVUVoWXpNalkzQlJ3WS90dnVzZjdob2dHZEFSdXk3UUV2R2NFWXY1M0E2bTdJZmFHd0dnSE8zLzc4dEFGSHkwVFRBVXF6L3Zyam82ait5LzcrTjZIL0FKQ2RxUUFCQUg3LzZ3VWVCY1FBSWdCdHNnd2pKQkVTT1FDd0FFVllzQXd2RzdFTUhENVpzQUJGV0xBREx4dXhBeEErV2JJUUF3d1JFam13RUMrd0RCQ3lFd0VLSzFnaDJCdjBXYkFERUxJYkFRb3JXQ0hZRy9SWnNpSU1BeEVTT2JBaUw3US9JazhpQWwyMER5SWZJZ0pkc2g4QkNpdFlJZGdiOUZrd01TVUdCQ01pSkFJbk5UUVNKRE15QkJjakppWWpJZ0lIQnhRU0ZqTXlOamNSSVRVaEJSNUQvdU93dS83V3FBT2JBUnkxOFFFaElzQWV1cHkxN0FvQmVOT0ZjclVxL3JBQ0Q3NWhjclFCUjlJdDJ3Rk90dVhhbFl6KzNQSkdyUDcyakRvd0FVYWJBQUlBc2dBQUJSRUZzQUFMQUJVQVJySURGaGNSRWptd0F4Q3dGZEFBc0FCRldMQUJMeHV4QVJ3K1diQUFSVml3QUM4YnNRQVFQbG13QVJDeURBRUtLMWdoMkJ2MFdiQUFFTElOQVFvcldDSFlHL1JaTURFekVTRXlCQklYRlJRQ0JBY0RFVE15QUJFMU5BQWpzZ0d4d1FFNHNRU3Qvc0xMNmQvcUFSUCs5K2dGc0t6K3hNZyswUDdCc1FJRkV2dUxBU29CQXlUOEFTZ0FBZ0IrLytzRlh3WEZBQkVBSWdCR3NnUWpKQkVTT2JBRUVMQWYwQUN3QUVWWXNBMHZHN0VOSEQ1WnNBQkZXTEFFTHh1eEJCQStXYkFORUxJV0FRb3JXQ0hZRy9SWnNBUVFzaDhCQ2l0WUlkZ2I5Rmt3TVFFVUFnUWpJaVFDSnpVMEVpUXpNZ1FTRndjMEFpWWpJZ1lHQnhVVUVoWXpNaEkxQlYraS91S3ZxLzdocGdLa0FTR3JyUUVnb3dHL2JzZDllTVp5QVhISmVjSHZBc0xPL3JDNXVRRkt5RGZOQVUrOHVmNjB6QVdpQVFDUGovNmNOYUQrL3BJQk8vOEFBQUlBZnY4RUJWOEZ4UUFWQUNZQVRiSUlKeWdSRWptd0NCQ3dJOUFBc0FCRldMQVJMeHV4RVJ3K1diQUFSVml3Q0M4YnNRZ1FQbG15QXdnUkVSSTVzQkVRc2hvQkNpdFlJZGdiOUZtd0NCQ3lJd0VLSzFnaDJCdjBXVEF4QVJRQ0J4Y0hKUVlqSWlRQ0p6VTBFaVF6TWdRU0ZTYzBBaVlqSWdZR0J4VVVFaFl6TWhJMUJWK3BsUHFEL3N3NVBLdis0S1FEb2dFaXJLNEJJYUsvYnNkOWVNZHhBWEhKZWNIdkFzTFUvcXhhdzNuekRMb0JSc1k2ekFGUXZyditzTTRCb3dFQmo1RC9uRE9nL3Y2U0FUdi9BQUFCQUtBQUFBTEpCSTBBQmdBeUFMQUFSVml3QlM4YnNRVWFQbG13QUVWWXNBQXZHN0VBRUQ1WnNnUUFCUkVTT2JBRUw3SURBUW9yV0NIWUcvUlpNREVoSXhFRk5TVXpBc201L3BBQ0NoOERwb3VveWdBQkFJTUFBQVFnQktBQUdBQlVzZ2taR2hFU09RQ3dBRVZZc0JFdkc3RVJHajVac0FCRldMQUFMeHV4QUJBK1diSVhBUW9yV0NIWUcvUlpzQUxRc2hZWEVSRVNPYklERVJZUkVqbXdFUkN5Q1FFS0sxZ2gyQnYwV2JBUkVMQU0wREF4SVNFMUFUWTNOelFtSXlJR0ZTTTBOall6TWhZVkZBY0JJUVFnL0ljQi9YMEtBMzFtZXBXNWVOSit1K0hGL29ZQ2VJTUJ5WE5VTlZSc2puVnd2Mnk0bUxHMC9xd0FBUUNLQUFBRGhRWEVBQWNBTXJJRENBa1JFamtBc0FCRldMQUdMeHV4QmhvK1diQUFSVml3QkM4YnNRUVFQbG13QmhDeUFnRUtLMWdoMkJ2MFdUQXhBVE1SSVJFakVTRUN6TG45dnJrQ1FnWEUvakQ4REFTTkFBRUFELzZqQTk0RWpRQVlBRTRBc0FzdnNBQkZXTEFDTHh1eEFobytXYklCQVFvcldDSFlHL1Jac0FUUXNnVUxBaEVTT2JBRkw3QUxFTElRQVFvcldDSFlHL1Jac0FVUXNoY0JDaXRZSWRnYjlGbXlHQmNGRVJJNU1ERUJJVFVoRlFFV0ZoVVVBQ01pSnpjV016STJOVFFtSXlNMUF1VDlkQU55L29DeTR2N00vOHJTTktXeHROZTV3RHdEOUpsMi9td1k5clA1L3RwbmkxaktwYXVsWndBQ0FENyt0Z1NnQkkwQUNnQU9BRXNBc0FCRldMQUpMeHV4Q1JvK1diQUFSVml3QWk4YnNRSVFQbG13QUVWWXNBWXZHN0VHRUQ1WnNnQUJDaXRZSWRnYjlGbXdCaEN3QmRDd0JTK3dBQkN3RE5DeURRa0NFUkk1TURFbE14VWpFU01SSVRVQk13RWhFUWNEMjhYRnV2MGRBdGJIL1R3Q0NoeVdsLzYzQVVsdEJDSDhDUUw4TlFELy93QlFBbzBDblFXNEF3Y0IxQUFBQXBnQUV3Q3dBRVZZc0Fvdkc3RUtIRDVac0JEUU1ERUEvLzhBTmdLWUFyc0ZyUU1IQWRnQUFBS1lBQk1Bc0FCRldMQUpMeHV4Q1J3K1diQU4wREF4QVAvL0FGc0NqUUtuQmEwREJ3SFpBQUFDbUFBUUFMQUFSVml3QVM4YnNRRWNQbGt3TWYvL0FGWUNqUUtyQmJZREJ3SGFBQUFDbUFBVEFMQUFSVml3QUM4YnNRQWNQbG13Rk5Bd01RRC8vd0E2QXBnQ3BRV3RBd2NCMndBQUFwZ0FFQUN3QUVWWXNBVXZHN0VGSEQ1Wk1ESC8vd0JQQW8wQ253VzRBd2NCM0FBQUFwZ0FHUUN3QUVWWXNCRXZHN0VSSEQ1WnNCZlFzQkVRc0IvUU1ERUEvLzhBU1FLUkFwVUZ1QU1IQWQwQUFBS1lBQk1Bc0FCRldMQUlMeHV4Q0J3K1diQVowREF4QUFBQkFHWCtvQVFGQkl3QUd3Qk9BTEFOTDdBQVJWaXdBUzhic1FFYVBsbXlCQUVLSzFnaDJCdjBXYklIRFFFUkVqbXdCeSt5R0FFS0sxZ2gyQnYwV2JJRkJ4Z1JFam13RFJDeUVnRUtLMWdoMkJ2MFdiQUhFTEFiMERBeEV4TWhGU0VETmpjMkVoVVVBQ01pSnpjV016STJOVFFtSXlJR0I0Wm1BeFQ5ZmpadmxjangvdUR4NEs4Nmd0T1p2NldIYW5VaUFYUURHS3YrZEVBQ0F2NzE0ZS8rNG5LTFpjK2tqN1k2VXdBQUFRQksvcllEOGdTTkFBWUFKUUN3QVMrd0FFVllzQVV2RzdFRkdqNVpzZ01CQ2l0WUlkZ2I5Rm15QUFNRkVSSTVNREVCQVNNQklUVWhBL0w5b0xvQ1YvMGJBNmdFSS9xVEJUK1lBQUlBWVAvd0JtMEVuUUFUQUIwQW1ySVZIaDhSRWptd0ZSQ3dDdEFBc0FCRldMQUpMeHV4Q1JvK1diQUFSVml3Q3k4YnNRc2FQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFBTHh1eEFCQStXYkFMRUxJTUFRb3JXQ0hZRy9SWnNBQVFzQS9Rc0E4dnNoOFBBVjJ5M3c4QlhiSVFBUW9yV0NIWUcvUlpzQUFRc2hNQkNpdFlJZGdiOUZtd0FoQ3lGQUVLSzFnaDJCdjBXYkFKRUxJWEFRb3JXQ0hZRy9SWk1ERWhJUVVpQUJFMUVBQXpCU0VWSVJFaEZTRVJJUVUzRVNjaUJoVVZGQllHYmYxai9vN2wvdWNCRitVQld3S3YvWnNDRlAzc0Ftejc4ZXJzbHErd0VBRXlBUWMrQVFJQk5CQ1ovcktZL29rTkJ3Tm5DZGJGUXNQWEFBSUFndjZwQkQ4RW9RQVlBQ1VBU3dDd0ZDK3dBRVZZc0F3dkc3RU1HajVac0JRUXNnQUJDaXRZSWRnYjlGbXlCUlFNRVJJNXNBVXZzZ01GREJFU09iSWFBUW9yV0NIWUcvUlpzQXdRc2lBQkNpdFlJZGdiOUZrd01RVXlOamNHSXlJQ05UUTJOak15QUJNVkZBSUVJeUluTnhZVE1qWTNOVFFtSXlJR0ZSUVdBZCt4M0JWM3Q5TC9kZEtFNndFRkFwTCs4NitmZGlaNjRHbWZJcUdTZjVpanYvVFphUUVVNHB6c2Z2N2MvdmI2M1A2NnJqeU9NZ0g4WEZLVXhjWERxNVhKQUFBQ0FIai82d1NKQktFQUN3QVpBRGtBc0FCRldMQUlMeHV4Q0JvK1diQUFSVml3QXk4YnNRTVFQbG13Q0JDeUR3RUtLMWdoMkJ2MFdiQURFTElXQVFvcldDSFlHL1JaTURFQkVBQWdBQU0xRUFBZ0FCTW5OQ1lqSWdZSEZSUVdNekkyTndTSi91aitJdjdtQVFFWkFkNEJHUUc2c3AyYnNnSzJtNXF4QWdJOC91cit4UUU4QVJRVUFSUUJQdjdFL3VzTnl1TGd4VFRKNWQzS0FQLy8vN1QrU3dGbEJEb0FCZ0NiQUFELy8vKzAva3NCWlFRNkFBWUFtd0FBLy84QW13QUFBVlVFT2dBR0FJd0FBUC8vLy9yK1dRRmFCRG9BSmdDTUFBQUFCZ0NqeUFyLy93Q2JBQUFCVlFRNkFBWUFqQUFBLy84QWh2NnNBV0VFT2dBbUFJd0FBQUFIQUt3RFRnQUtBQUVBaXYvc0Eva0VuUUFoQUZ3QXNBQkZXTEFWTHh1eEZSbytXYkFBUlZpd0VDOGJzUkFRUGxtd0FFVllzQjh2RzdFZkVENVpzZ0lCQ2l0WUlkZ2I5Rm15R1I4VkVSSTVzQmt2c1FnS0sxallHOXhac0JrUXNBclFzQlVRc2cwQkNpdFlJZGdiOUZrd01TVVdNekkyTlRRbUl5TTFFeVlqSWdNUkl4RTJOak15RmhjQkZoWVZGQVlqSWljQncxSllZWEtJaDFUdFRtUFRCTGdCeGNscncyWCs3cW0yMTdWM2FMVXplMk5pVllrQkp6Nys5ZjBHQXZYUzFsVmkvcllQbzRhc3pERUEvLzhBSlFJZkFnMEN0Z0lHQUJFQUFBQUNBQ1VBQUFUa0JiQUFEd0FkQUdZQXNBQkZXTEFGTHh1eEJSdytXYkFBUlZpd0FDOGJzUUFRUGxteUJBQUZFUkk1c0FRdnNzOEVBVjJ5THdRQlhiS2ZCQUZ4c2dFQkNpdFlJZGdiOUZtd0VkQ3dBQkN5RWdFS0sxZ2gyQnYwV2JBRkVMSWJBUW9yV0NIWUcvUlpzQVFRc0J6UU1ERXpFU00xTXhFaE1nUVNGeFVVQWdRSEV5RVJNeklTTnpVMEFpY2pFU0hIb3FJQm03NEJKSjhCbi83WnhFZis1c25lOXdIcDF1QUJHZ0thbHdKL3FQN0t5VjNPL3NxbUFnS2EvZ01CRXZsZCtBRVRBdjRmQUFBQ0FDVUFBQVRrQmJBQUR3QWRBR1lBc0FCRldMQUZMeHV4QlJ3K1diQUFSVml3QUM4YnNRQVFQbG15QkFBRkVSSTVzQVF2c3M4RUFWMnlMd1FCWGJLZkJBRnhzZ0VCQ2l0WUlkZ2I5Rm13RWRDd0FCQ3lFZ0VLSzFnaDJCdjBXYkFGRUxJYkFRb3JXQ0hZRy9SWnNBUVFzQnpRTURFekVTTTFNeEVoTWdRU0Z4VVVBZ1FIRXlFUk16SVNOelUwQWljakVTSEhvcUlCbTc0QkpKOEJuLzdaeEVmKzVzbmU5d0hwMXVBQkdnS2Fsd0ovcVA3S3lWM08vc3FtQWdLYS9nTUJFdmxkK0FFVEF2NGZBQUFCQUFBQUFBUDlCZ0FBR1FCcUFMQVhMN0FBUlZpd0JDOGJzUVFZUGxtd0FFVllzQkF2RzdFUUVENVpzQUJGV0xBSUx4dXhDQkErV2JJdkZ3RmRzZzhYQVYyeUZSQVhFUkk1c0JVdnNoSUJDaXRZSWRnYjlGbXdBZEN5QWhBRUVSSTVzQVFRc2d3QkNpdFlJZGdiOUZtd0ZSQ3dHTkF3TVFFaEVUWXpJQk1SSXhFbUppTWlCZ2NSSXhFak5UTTFNeFVoQW56KzUzdkZBVmNEdVFGcGIxcUlKcm1xcXJrQkdRVFMvdVdYL24zOU5RTE1kWEJnVHZ6OUJOS1hsNWNBQVFBeEFBQUVsd1d3QUE4QVRBQ3dBRVZZc0Fvdkc3RUtIRDVac0FCRldMQUNMeHV4QWhBK1diSVBDZ0lSRWptd0R5K3lBQUVLSzFnaDJCdjBXYkFFMExBUEVMQUcwTEFLRUxJSUFRb3JXQ0hZRy9SWnNBelFNREVCSXhFakVTTTFNeEVoTlNFVklSRXpBNnJudjliVy9pMEVadjRzNXdNMy9Na0RONWNCUko2ZS9yd0FBZi8wLyt3Q2NBVkFBQjBBY3dDd0FFVllzQUV2RzdFQkdENVpzQUJGV0xBUkx4dXhFUkErV2JBQkVMQUEwTEFBTDdBQkVMSUVBUW9yV0NIWUcvUlpzQUVRc0FYUXNBVXZzZ0FGQVYyeUNBRUtLMWdoMkJ2MFdiQVJFTElNQVFvcldDSFlHL1Jac0FnUXNCWFFzQVVRc0JqUXNBUVFzQm5Rc0FFUXNCelFNREVCRVRNVkl4VXpGU01SRkJZek1qY1ZCaU1pSmpVUkl6VXpOU00xTXhFQmg4cks2ZWsyUVNBNFNVVjhmdHJheGNVRlFQNzZqN3FYL3JKQlFReVdGSmFLQVU2WHVvOEJCdi8vQUJ3QUFBVWRCelFDSmdBbEFBQUJCd0JFQVRBQk5nQVVBTEFBUlZpd0JDOGJzUVFjUGxteERBajBNREgvL3dBY0FBQUZIUWMwQWlZQUpRQUFBUWNBZFFHL0FUWUFGQUN3QUVWWXNBVXZHN0VGSEQ1WnNRMEk5REF4Ly84QUhBQUFCUjBITmdJbUFDVUFBQUVIQUowQXlRRTJBQlFBc0FCRldMQUVMeHV4QkJ3K1diRVBCdlF3TWYvL0FCd0FBQVVkQnlJQ0pnQWxBQUFCQndDa0FNVUJPZ0FVQUxBQVJWaXdCUzhic1FVY1BsbXhEZ1QwTURILy93QWNBQUFGSFFiN0FpWUFKUUFBQVFjQWFnRDVBVFlBRndDd0FFVllzQVF2RzdFRUhENVpzUkVFOUxBYjBEQXhBUC8vQUJ3QUFBVWRCNUVDSmdBbEFBQUJCd0NpQVZBQlFRQVhBTEFBUlZpd0JDOGJzUVFjUGxteERnYjBzQmpRTURFQS8vOEFIQUFBQlIwSGxBSW1BQ1VBQUFBSEFkOEJXZ0VpLy84QWQvNUVCTmdGeEFJbUFDY0FBQUFIQUhrQjB2LzMvLzhBcVFBQUJFWUhRQUltQUNrQUFBRUhBRVFBK3dGQ0FCUUFzQUJGV0xBR0x4dXhCaHcrV2JFTkNQUXdNZi8vQUtrQUFBUkdCMEFDSmdBcEFBQUJCd0IxQVlvQlFnQVVBTEFBUlZpd0JpOGJzUVljUGxteERnajBNREgvL3dDcEFBQUVSZ2RDQWlZQUtRQUFBUWNBblFDVUFVSUFGQUN3QUVWWXNBWXZHN0VHSEQ1WnNSQUc5REF4Ly84QXFRQUFCRVlIQndJbUFDa0FBQUVIQUdvQXhBRkNBQmNBc0FCRldMQUdMeHV4Qmh3K1diRVNCUFN3RzlBd01RRC8vLy9nQUFBQmdRZEFBaVlBTFFBQUFRY0FSUCtuQVVJQUZBQ3dBRVZZc0FJdkc3RUNIRDVac1FVSTlEQXgvLzhBc0FBQUFsRUhRQUltQUMwQUFBRUhBSFVBTlFGQ0FCUUFzQUJGV0xBREx4dXhBeHcrV2JFR0NQUXdNZi8vLytrQUFBSkdCMElDSmdBdEFBQUJCd0NkLzBBQlFnQVVBTEFBUlZpd0FpOGJzUUljUGxteENBYjBNREgvLy8vV0FBQUNYd2NIQWlZQUxRQUFBUWNBYXY5d0FVSUFGd0N3QUVWWXNBSXZHN0VDSEQ1WnNRb0U5TEFVMERBeEFQLy9BS2tBQUFVSUJ5SUNKZ0F5QUFBQkJ3Q2tBUHNCT2dBVUFMQUFSVml3Qmk4YnNRWWNQbG14RFFUME1ESC8vd0IyLyt3RkNRYzJBaVlBTXdBQUFRY0FSQUZTQVRnQUZBQ3dBRVZZc0Ewdkc3RU5IRDVac1NFSTlEQXgvLzhBZHYvc0JRa0hOZ0ltQURNQUFBRUhBSFVCNFFFNEFCUUFzQUJGV0xBTkx4dXhEUncrV2JFaUNQUXdNZi8vQUhiLzdBVUpCemdDSmdBekFBQUJCd0NkQU9zQk9BQVVBTEFBUlZpd0RTOGJzUTBjUGxteElnYjBNREgvL3dCMi8rd0ZDUWNrQWlZQU13QUFBUWNBcEFEbkFUd0FGQUN3QUVWWXNBMHZHN0VOSEQ1WnNTTUU5REF4Ly84QWR2L3NCUWtHL1FJbUFETUFBQUVIQUdvQkd3RTRBQmNBc0FCRldMQU5MeHV4RFJ3K1diRW5CUFN3TU5Bd01RRC8vd0NNLyt3RXFnYzBBaVlBT1FBQUFRY0FSQUVyQVRZQUZBQ3dBRVZZc0Fvdkc3RUtIRDVac1JRSTlEQXgvLzhBalAvc0JLb0hOQUltQURrQUFBRUhBSFVCdWdFMkFCUUFzQUJGV0xBU0x4dXhFaHcrV2JFVkNQUXdNZi8vQUl6LzdBU3FCellDSmdBNUFBQUJCd0NkQU1RQk5nQVVBTEFBUlZpd0NpOGJzUW9jUGxteEZ3YjBNREgvL3dDTS8rd0VxZ2I3QWlZQU9RQUFBUWNBYWdEMEFUWUFGd0N3QUVWWXNBb3ZHN0VLSEQ1WnNSa0U5TEFqMERBeEFQLy9BQThBQUFTN0J6UUNKZ0E5QUFBQkJ3QjFBWWdCTmdBVUFMQUFSVml3QVM4YnNRRWNQbG14Q3dqME1ESC8vd0J0Lyt3RDZnWCtBaVlBUlFBQUFRY0FSQURWQUFBQUZBQ3dBRVZZc0Jjdkc3RVhHRDVac1NvSjlEQXgvLzhBYmYvc0Erb0YvZ0ltQUVVQUFBRUhBSFVCWkFBQUFCUUFzQUJGV0xBWEx4dXhGeGcrV2JFckNmUXdNZi8vQUczLzdBUHFCZ0FDSmdCRkFBQUJCZ0NkYmdBQUZBQ3dBRVZZc0Jjdkc3RVhHRDVac1NzQjlEQXgvLzhBYmYvc0Erb0Y3QUltQUVVQUFBRUdBS1JxQkFBVUFMQUFSVml3Rnk4YnNSY1lQbG14TEFIME1ESC8vd0J0Lyt3RDZnWEZBaVlBUlFBQUFRY0FhZ0NlQUFBQUZ3Q3dBRVZZc0Jjdkc3RVhHRDVac1RBQjlMQTUwREF4QVAvL0FHMy83QVBxQmxzQ0pnQkZBQUFCQndDaUFQVUFDd0FYQUxBQVJWaXdGeThic1JjWVBsbXhMQVQwc0RiUU1ERUEvLzhBYmYvc0Erb0dYd0ltQUVVQUFBQUhBZDhBLy8vdC8vOEFYUDVFQSt3RVRnSW1BRWNBQUFBSEFIa0JQLy8zLy84QVhmL3NBL01GL2dJbUFFa0FBQUVIQUVRQXhRQUFBQlFBc0FCRldMQUlMeHV4Q0JnK1diRWZDZlF3TWYvL0FGMy83QVB6QmY0Q0pnQkpBQUFCQndCMUFWUUFBQUFVQUxBQVJWaXdDQzhic1FnWVBsbXhJQW4wTURILy93QmQvK3dEOHdZQUFpWUFTUUFBQVFZQW5WNEFBQlFBc0FCRldMQUlMeHV4Q0JnK1diRWdBZlF3TWYvL0FGMy83QVB6QmNVQ0pnQkpBQUFCQndCcUFJNEFBQUFYQUxBQVJWaXdDQzhic1FnWVBsbXhKUUgwc0M3UU1ERUEvLy8veGdBQUFXY0YvUUltQUl3QUFBRUdBRVNOL3dBVUFMQUFSVml3QWk4YnNRSVlQbG14QlFuME1ESC8vd0NXQUFBQ053WDlBaVlBakFBQUFRWUFkUnYvQUJRQXNBQkZXTEFETHh1eEF4ZytXYkVHQ2ZRd01mLy8vODhBQUFJc0JmOENKZ0NNQUFBQkJ3Q2QveWIvL3dBVUFMQUFSVml3QWk4YnNRSVlQbG14Q0FIME1ESC8vLys4QUFBQ1JRWEVBaVlBakFBQUFRY0FhdjlXLy84QUZ3Q3dBRVZZc0FJdkc3RUNHRDVac1FzQjlMQVUwREF4QVAvL0FJd0FBQVBmQmV3Q0pnQlNBQUFCQmdDa1lRUUFGQUN3QUVWWXNBTXZHN0VER0Q1WnNSVUI5REF4Ly84QVcvL3NCRFFGL2dJbUFGTUFBQUVIQUVRQXp3QUFBQlFBc0FCRldMQUVMeHV4QkJnK1diRWRDZlF3TWYvL0FGdi83QVEwQmY0Q0pnQlRBQUFCQndCMUFWNEFBQUFVQUxBQVJWaXdCQzhic1FRWVBsbXhIZ24wTURILy93QmIvK3dFTkFZQUFpWUFVd0FBQVFZQW5XZ0FBQlFBc0FCRldMQUVMeHV4QkJnK1diRWVBZlF3TWYvL0FGdi83QVEwQmV3Q0pnQlRBQUFCQmdDa1pBUUFGQUN3QUVWWXNBUXZHN0VFR0Q1WnNSOEI5REF4Ly84QVcvL3NCRFFGeFFJbUFGTUFBQUVIQUdvQW1BQUFBQmNBc0FCRldMQUVMeHV4QkJnK1diRWpBZlN3TE5Bd01RRC8vd0NJLyt3RDNBWCtBaVlBV1FBQUFRY0FSQURIQUFBQUZBQ3dBRVZZc0Fjdkc3RUhHRDVac1JJSjlEQXgvLzhBaVAvc0E5d0YvZ0ltQUZrQUFBRUhBSFVCVmdBQUFCUUFzQUJGV0xBTkx4dXhEUmcrV2JFVENmUXdNZi8vQUlqLzdBUGNCZ0FDSmdCWkFBQUJCZ0NkWUFBQUZBQ3dBRVZZc0Fjdkc3RUhHRDVac1JVQjlEQXgvLzhBaVAvc0E5d0Z4UUltQUZrQUFBRUhBR29Ba0FBQUFCY0FzQUJGV0xBSEx4dXhCeGcrV2JFWUFmU3dJZEF3TVFELy93QVcva3NEc0FYK0FpWUFYUUFBQVFjQWRRRWJBQUFBRkFDd0FFVllzQUV2RzdFQkdENVpzUklKOURBeC8vOEFGdjVMQTdBRnhRSW1BRjBBQUFFR0FHcFZBQUFYQUxBQVJWaXdEeThic1E4WVBsbXhGd0gwc0NEUU1ERUEvLzhBSEFBQUJSMEc3Z0ltQUNVQUFBRUhBSEFBeHdFK0FCTUFzQUJGV0xBRUx4dXhCQncrV2JBTTNEQXhBUC8vQUczLzdBUHFCYmdDSmdCRkFBQUJCZ0J3YkFnQUV3Q3dBRVZZc0Jjdkc3RVhHRDVac0NyY01ERUEvLzhBSEFBQUJSMEhEZ0ltQUNVQUFBRUhBS0FBOUFFM0FCTUFzQUJGV0xBRUx4dXhCQncrV2JBTjNEQXhBUC8vQUczLzdBUHFCZGdDSmdCRkFBQUJCd0NnQUprQUFRQVRBTEFBUlZpd0Z5OGJzUmNZUGxtd0s5d3dNUUFBQWdBYy9rOEZIUVd3QUJZQUdRQm5BTEFBUlZpd0ZpOGJzUlljUGxtd0FFVllzQlF2RzdFVUVENVpzQUJGV0xBQkx4dXhBUkErV2JBQVJWaXdEQzhic1F3U1BsbXlCd01LSzFnaDJCdjBXYkFCRUxBUjBMQVJMN0lYRkJZUkVqbXdGeSt5RXdFS0sxZ2gyQnYwV2JJWkZoUVJFamt3TVFFQkl3Y0dGUlF6TWpjWEJpTWlKalUwTndNaEF5TUJBeUVEQXZBQ0xTWTZjVTR3TkExR1dsbG5xWWY5bm9uR0FpeWpBZS80QmJENlVDMWJWa2dhZVN4b1ZwQnNBWFAraEFXdy9Hb0NxUUFBQWdCdC9rOEQ2Z1JPQUMwQU53Q1FBTEFBUlZpd0Z5OGJzUmNZUGxtd0FFVllzQVF2RzdFRUVENVpzQUJGV0xBZUx4dXhIaEErV2JBQVJWaXdLUzhic1NrU1BsbXdIaEN3QU5Dd0FDK3lBZ1FYRVJJNXNnc1hCQkVTT2JBTEw3QVhFTElQQVFvcldDSFlHL1Jac2hJTEZ4RVNPYkFwRUxJa0F3b3JXQ0hZRy9SWnNBUVFzaTRCQ2l0WUlkZ2I5Rm13Q3hDeU13RUtLMWdoMkJ2MFdUQXhKU1luQmlNaUpqVTBKRE16TlRRbUl5SUdGU00wTmpZek1oWVhFUlFYRlNNSEJoVVVNekkzRndZaklpWTFOQ2N5TmpjMUl5QVZGQllESkE4SGdiT2d6UUVCNmJSMGNXT0d1blBGZHJ2VUJDWWhPbkZPTURRTlJscFpaNGhYbkNPUi9xeDBCeVpGaHJXTHFidFZZWE5rUjFHWFdMdWsvZzZWV0JBdFcxWklHbmtzYUZhUThGcEkzc2RYWWdELy93QjMvK3dFMkFkVkFpWUFKd0FBQVFjQWRRSEdBVmNBRkFDd0FFVllzQXN2RzdFTEhENVpzUjhJOURBeC8vOEFYUC9zQSt3Ri9nSW1BRWNBQUFFSEFIVUJNd0FBQUJRQXNBQkZXTEFRTHh1eEVCZytXYkVnQ2ZRd01mLy9BSGYvN0FUWUIxY0NKZ0FuQUFBQkJ3Q2RBTkFCVndBVUFMQUFSVml3Q3k4YnNRc2NQbG14SHdiME1ESC8vd0JjLyt3RDdBWUFBaVlBUndBQUFRWUFuVDBBQUJRQXNBQkZXTEFRTHh1eEVCZytXYkVnQWZRd01mLy9BSGYvN0FUWUJ4a0NKZ0FuQUFBQkJ3Q2hBYTRCVndBVUFMQUFSVml3Q3k4YnNRc2NQbG14SXdUME1ESC8vd0JjLyt3RDdBWENBaVlBUndBQUFRY0FvUUViQUFBQUZBQ3dBRVZZc0JBdkc3RVFHRDVac1NRQjlEQXgvLzhBZC8vc0JOZ0hWd0ltQUNjQUFBRUhBSjRBNWdGWUFCUUFzQUJGV0xBTEx4dXhDeHcrV2JFaEJ2UXdNZi8vQUZ6LzdBUHNCZ0FDSmdCSEFBQUJCZ0NlVXdFQUZBQ3dBRVZZc0JBdkc3RVFHRDVac1NJQjlEQXgvLzhBcVFBQUJNWUhRZ0ltQUNnQUFBRUhBSjRBbndGREFCUUFzQUJGV0xBQkx4dXhBUncrV2JFYkJ2UXdNZi8vQUYvLzdBVXJCZ0lBSmdCSUFBQUJCd0dpQTlRRkV3QklBTEx3SHdGeXNoOGZBVjJ5bng4QlhiSWZId0Z4dE04ZjN4OENjYkxmSHdGeXNsOGZBWEt5VHg4QmNiTFBId0ZkdEU4Zlh4OENYYkpnSHdGZHN1QWZBWEd5NEI4QlhUQXgvLzhBcVFBQUJFWUcrZ0ltQUNrQUFBRUhBSEFBa2dGS0FCTUFzQUJGV0xBR0x4dXhCaHcrV2JBTjNEQXhBUC8vQUYzLzdBUHpCYmdDSmdCSkFBQUJCZ0J3WEFnQUV3Q3dBRVZZc0Fndkc3RUlHRDVac0IvY01ERUEvLzhBcVFBQUJFWUhHZ0ltQUNrQUFBRUhBS0FBdndGREFCTUFzQUJGV0xBR0x4dXhCaHcrV2JBUDNEQXhBUC8vQUYzLzdBUHpCZGdDSmdCSkFBQUJCd0NnQUlrQUFRQVRBTEFBUlZpd0NDOGJzUWdZUGxtd0lkd3dNUUQvL3dDcEFBQUVSZ2NFQWlZQUtRQUFBUWNBb1FGeUFVSUFGQUN3QUVWWXNBWXZHN0VHSEQ1WnNSTUU5REF4Ly84QVhmL3NBL01Gd2dJbUFFa0FBQUVIQUtFQlBBQUFBQlFBc0FCRldMQUlMeHV4Q0JnK1diRWxBZlF3TVFBQkFLbitUd1JHQmJBQUd3QjJBTEFBUlZpd0ZpOGJzUlljUGxtd0FFVllzQlV2RzdFVkVENVpzQUJGV0xBUEx4dXhEeEkrV2JBQVJWaXdCQzhic1FRUVBsbXlHaFVXRVJJNXNCb3ZzZ0VCQ2l0WUlkZ2I5Rm13RlJDeUFnRUtLMWdoMkJ2MFdiQVBFTElLQXdvcldDSFlHL1Jac0JZUXNoa0JDaXRZSWRnYjlGa3dNUUVoRVNFVkl3Y0dGUlF6TWpjWEJpTWlKalUwTnlFUklSVWhFU0VENFAySkF0MUpPbkZPTURRTlJscFpaNXY5WFFPVC9TMENkd0toL2Z5ZExWdFdTQnA1TEdoV2lta0ZzSjcrTEFBQUFnQmQvbWdEOHdST0FDVUFMUUI2QUxBQVJWaXdHaThic1JvWVBsbXdBRVZZc0Ewdkc3RU5FajVac0FCRldMQVNMeHV4RWhBK1diQUUwTEFORUxJSUF3b3JXQ0hZRy9SWnNpb1NHaEVTT2JBcUw3Uy9LczhxQWwyeUhnRUtLMWdoMkJ2MFdiQVNFTElpQVFvcldDSFlHL1Jac2lVU0doRVNPYkFhRUxJbUFRb3JXQ0hZRy9SWk1ERWxCZ2N6QndZVkZETXlOeGNHSXlJbU5UUTNKZ0ExTlRRMk5qTXlFaEVWSVJZV016STJOd0VpQmdjaE5TWW1BK1ZIY3dFNmNVNHdOQTFHV2xsbll0cis5WHZkZ2RQcS9TTUVzNHBpaURQK3duQ1lFZ0llQ0lpOWJqWXRXMVpJR25rc2FGWnNXZ1FCSWU4aG9mMlAvdXIrL1UyZ3hWQkNBcUdqa3c2Tm13RC8vd0NwQUFBRVJnZENBaVlBS1FBQUFRY0FuZ0NxQVVNQUZBQ3dBRVZZc0FZdkc3RUdIRDVac1JFRzlEQXgvLzhBWGYvc0EvTUdBQUltQUVrQUFBRUdBSjUwQVFBVUFMQUFSVml3Q0M4YnNRZ1lQbG14SWdIME1ESC8vd0I2Lyt3RTNBZFhBaVlBS3dBQUFRY0FuUURJQVZjQUZBQ3dBRVZZc0Fzdkc3RUxIRDVac1NJRzlEQXgvLzhBWVA1V0EvSUdBQUltQUVzQUFBRUdBSjFWQUFBVUFMQUFSVml3QXk4YnNRTVlQbG14SndIME1ESC8vd0I2Lyt3RTNBY3ZBaVlBS3dBQUFRY0FvQUR6QVZnQUV3Q3dBRVZZc0Fzdkc3RUxIRDVac0NMY01ERUEvLzhBWVA1V0EvSUYyQUltQUVzQUFBRUhBS0FBZ0FBQkFCTUFzQUJGV0xBREx4dXhBeGcrV2JBbjNEQXhBUC8vQUhyLzdBVGNCeGtDSmdBckFBQUJCd0NoQWFZQlZ3QVVBTEFBUlZpd0N5OGJzUXNjUGxteEp3VDBNREgvL3dCZy9sWUQ4Z1hDQWlZQVN3QUFBUWNBb1FFekFBQUFGQUN3QUVWWXNBTXZHN0VER0Q1WnNTd0I5REF4Ly84QWV2My9CTndGeEFJbUFDc0FBQUFIQWFJQm8vNmcvLzhBWVA1V0EvSUdrd0ltQUVzQUFBRUhBYmtCS3dCWUFCTUFzQUJGV0xBREx4dXhBeGcrV2JBcTNEQXhBUC8vQUtrQUFBVUlCMElDSmdBc0FBQUJCd0NkQVBFQlFnQVVBTEFBUlZpd0J5OGJzUWNjUGxteEVBYjBNREgvL3dDTUFBQUQzd2RCQWlZQVRBQUFBUWNBblFBZEFVRUFDUUN3RVMrd0ZOd3dNUUQvLy8rM0FBQUNlZ2N1QWlZQUxRQUFBUWNBcFA4OEFVWUFGQUN3QUVWWXNBTXZHN0VESEQ1WnNRY0U5REF4Ly8vL25RQUFBbUFGNmdJbUFJd0FBQUVIQUtUL0lnQUNBQlFBc0FCRldMQURMeHV4QXhnK1diRUhBZlF3TWYvLy83WUFBQUtBQnZvQ0pnQXRBQUFCQndCdy96NEJTZ0FUQUxBQVJWaXdBaThic1FJY1BsbXdCZHd3TVFELy8vK2NBQUFDWmdXMkFpWUFqQUFBQVFjQWNQOGtBQVlBRXdDd0FFVllzQUl2RzdFQ0dENVpzQVhjTURFQS8vLy83QUFBQWtNSEdnSW1BQzBBQUFFSEFLRC9hd0ZEQUJNQXNBQkZXTEFDTHh1eEFodytXYkFIM0RBeEFQLy8vOUlBQUFJcEJkY0NKZ0NNQUFBQkJ3Q2cvMUVBQUFBVEFMQUFSVml3QWk4YnNRSVlQbG13Qjl3d01RRC8vd0FZL2xnQmVBV3dBaVlBTFFBQUFBWUFvK1lKLy8vLysvNVBBV2dGeEFJbUFFMEFBQUFHQUtQSkFQLy9BS29BQUFHRkJ3UUNKZ0F0QUFBQkJ3Q2hBQjBCUWdBVUFMQUFSVml3QWk4YnNRSWNQbG14Q3dUME1ESC8vd0MzLyt3RitRV3dBQ1lBTFFBQUFBY0FMZ0l0QUFELy93Q04va3NEU2dYRUFDWUFUUUFBQUFjQVRnSHhBQUQvL3dBMS8rd0VnZ2MxQWlZQUxnQUFBUWNBblFGOEFUVUFGQUN3QUVWWXNBQXZHN0VBSEQ1WnNSUUc5REF4Ly8vL3RQNUxBamtGMkFJbUFKc0FBQUVIQUozL00vL1lBQlFBc0FCRldMQU5MeHV4RFJnK1diRVNCUFF3TWYvL0FLbjkvd1VGQmJBQ0pnQXZBQUFBQndHaUFaVCtvUC8vQUkzOS93UU1CZ0FDSmdCUEFBQUFCd0dpQVJIK29QLy9BS0VBQUFRY0J5OENKZ0F3QUFBQkJ3QjFBQ1lCTVFBVUFMQUFSVml3QlM4YnNRVWNQbG14Q0FqME1ESC8vd0NUQUFBQ05BZVVBaVlBVUFBQUFRY0FkUUFZQVpZQUZBQ3dBRVZZc0FNdkc3RURIajVac1FZSjlEQXgvLzhBcWYzL0JCd0ZzQUltQURBQUFBQUhBYUlCYlA2Zy8vOEFWLzMvQVZVR0FBSW1BRkFBQUFBSEFhTC8rLzZnLy84QXFRQUFCQndGc1FJbUFEQUFBQUVIQWFJQjFRVENBQkFBc0FCRldMQUtMeHV4Q2h3K1dUQXgvLzhBbkFBQUFxMEdBZ0FtQUZBQUFBRUhBYUlCVmdVVEFGQUFzaDhJQVYyeW53Z0JYYlFmQ0M4SUFuR3lyd2dCY2JRdkNEOElBbkt5M3dnQmNyWmZDRzhJZndnRGNyVFBDTjhJQW5HeVR3Z0JjYkxQQ0FGZHRFOElYd2dDWGJKZ0NBRmRzdkFJQVhJd01mLy9BS2tBQUFRY0JiQUNKZ0F3QUFBQUJ3Q2hBYno5eGYvL0FKd0FBQUtnQmdBQUpnQlFBQUFBQndDaEFUajl0di8vQUtrQUFBVUlCelFDSmdBeUFBQUJCd0IxQWZVQk5nQVVBTEFBUlZpd0NDOGJzUWdjUGxteERBajBNREgvL3dDTUFBQUQzd1grQWlZQVVnQUFBUWNBZFFGYkFBQUFGQUN3QUVWWXNBTXZHN0VER0Q1WnNSUUo5REF4Ly84QXFmMy9CUWdGc0FJbUFESUFBQUFIQWFJQjBQNmcvLzhBalAzL0E5OEVUZ0ltQUZJQUFBQUhBYUlCTS82Zy8vOEFxUUFBQlFnSE5nSW1BRElBQUFFSEFKNEJGUUUzQUJRQXNBQkZXTEFHTHh1eEJodytXYkVQQnZRd01mLy9BSXdBQUFQZkJnQUNKZ0JTQUFBQkJnQ2Vld0VBRkFDd0FFVllzQU12RzdFREdENVpzUllCOURBeC8vLy92QUFBQTk4R0JBSW1BRklBQUFFSEFhTC9ZQVVWQUFZQXNCY3ZNREgvL3dCMi8rd0ZDUWJ3QWlZQU13QUFBUWNBY0FEcEFVQUFFd0N3QUVWWXNBMHZHN0VOSEQ1WnNDSGNNREVBLy84QVcvL3NCRFFGdUFJbUFGTUFBQUVHQUhCbUNBQVRBTEFBUlZpd0JDOGJzUVFZUGxtd0hkd3dNUUQvL3dCMi8rd0ZDUWNRQWlZQU13QUFBUWNBb0FFV0FUa0FFd0N3QUVWWXNBMHZHN0VOSEQ1WnNDTGNNREVBLy84QVcvL3NCRFFGMkFJbUFGTUFBQUVIQUtBQWt3QUJBQk1Bc0FCRldMQUVMeHV4QkJnK1diQWYzREF4QVAvL0FIYi83QVVKQnpjQ0pnQXpBQUFCQndDbEFXc0JPQUFYQUxBQVJWaXdEUzhic1EwY1BsbXhKZ2owc0NMUU1ERUEvLzhBVy8vc0JEUUYvd0ltQUZNQUFBRUhBS1VBNkFBQUFCY0FzQUJGV0xBRUx4dXhCQmcrV2JFaUNmU3dIdEF3TVFELy93Q29BQUFFeVFjMEFpWUFOZ0FBQVFjQWRRR0FBVFlBRkFDd0FFVllzQVF2RzdFRUhENVpzUm9JOURBeC8vOEFqQUFBQXRJRi9nSW1BRllBQUFFSEFIVUF0Z0FBQUJRQXNBQkZXTEFMTHh1eEN4ZytXYkVRQ2ZRd01mLy9BS2o5L3dUSkJiQUNKZ0EyQUFBQUJ3R2lBV1Arb1AvL0FGUDkvd0tYQkU0Q0pnQldBQUFBQndHaS8vZitvUC8vQUtnQUFBVEpCellDSmdBMkFBQUJCd0NlQUtBQk53QVVBTEFBUlZpd0JDOGJzUVFjUGxteEhRYjBNREgvL3dCakFBQUN6UVlBQWlZQVZnQUFBUVlBbnRjQkFCUUFzQUJGV0xBTEx4dXhDeGcrV2JFU0FmUXdNZi8vQUZELzdBUnlCellDSmdBM0FBQUJCd0IxQVkwQk9BQVVBTEFBUlZpd0JpOGJzUVljUGxteEtRajBNREgvL3dCZi8rd0R1d1grQWlZQVZ3QUFBUWNBZFFGUkFBQUFGQUN3QUVWWXNBa3ZHN0VKR0Q1WnNTa0o5REF4Ly84QVVQL3NCSElIT0FJbUFEY0FBQUVIQUowQWx3RTRBQlFBc0FCRldMQUdMeHV4Qmh3K1diRXBCdlF3TWYvL0FGLy83QU83QmdBQ0pnQlhBQUFCQmdDZFd3QUFGQUN3QUVWWXNBa3ZHN0VKR0Q1WnNTa0I5REF4Ly84QVVQNU5CSElGeEFJbUFEY0FBQUFIQUhrQm53QUEvLzhBWC81RkE3c0VUZ0ltQUZjQUFBQUhBSGtCWGYvNC8vOEFVUDMvQkhJRnhBSW1BRGNBQUFBSEFhSUJkZjZnLy84QVgvMy9BN3NFVGdJbUFGY0FBQUFIQWFJQk0vNmcvLzhBVVAvc0JISUhPQUltQURjQUFBRUhBSjRBclFFNUFCUUFzQUJGV0xBR0x4dXhCaHcrV2JFckJ2UXdNZi8vQUYvLzdBTzdCZ0FDSmdCWEFBQUJCZ0NlY1FFQUZBQ3dBRVZZc0Frdkc3RUpHRDVac1NzQjlEQXgvLzhBTWYzL0JKY0ZzQUltQURnQUFBQUhBYUlCWnY2Zy8vOEFDZjMvQWxZRlFBSW1BRmdBQUFBSEFhSUF4ZjZnLy84QU1mNU5CSmNGc0FJbUFEZ0FBQUFIQUhrQmtBQUEvLzhBQ2Y1TkFwa0ZRQUltQUZnQUFBQUhBSGtBN3dBQS8vOEFNUUFBQkpjSE5nSW1BRGdBQUFFSEFKNEFvZ0UzQUJRQXNBQkZXTEFHTHh1eEJodytXYkVOQnZRd01mLy9BQW4vN0FMc0Jua0FKZ0JZQUFBQUJ3R2lBWlVGaXYvL0FJei83QVNxQnlJQ0pnQTVBQUFCQndDa0FNQUJPZ0FVQUxBQVJWaXdFaThic1JJY1BsbXhGZ1QwTURILy93Q0kvK3dEM0FYc0FpWUFXUUFBQVFZQXBGd0VBQlFBc0FCRldMQU5MeHV4RFJnK1diRVVBZlF3TWYvL0FJei83QVNxQnU0Q0pnQTVBQUFCQndCd0FNSUJQZ0FUQUxBQVJWaXdFaThic1JJY1BsbXdFOXd3TVFELy93Q0kvK3dEM0FXNEFpWUFXUUFBQVFZQWNGNElBQk1Bc0FCRldMQUhMeHV4QnhnK1diQVMzREF4QVAvL0FJei83QVNxQnc0Q0pnQTVBQUFCQndDZ0FPOEJOd0FUQUxBQVJWaXdDaThic1FvY1BsbXdGdHd3TVFELy93Q0kvK3dEM0FYWUFpWUFXUUFBQVFjQW9BQ0xBQUVBRXdDd0FFVllzQWN2RzdFSEdENVpzQlRjTURFQS8vOEFqUC9zQktvSGtRSW1BRGtBQUFFSEFLSUJTd0ZCQUJjQXNBQkZXTEFLTHh1eENodytXYkVXQnZTd0lOQXdNUUQvL3dDSS8rd0QzQVpiQWlZQVdRQUFBUWNBb2dEbkFBc0FGd0N3QUVWWXNBY3ZHN0VIR0Q1WnNSUUU5TEFlMERBeEFQLy9BSXovN0FTcUJ6VUNKZ0E1QUFBQkJ3Q2xBVVFCTmdBWEFMQUFSVml3RWk4YnNSSWNQbG14RlFqMHNCblFNREVBLy84QWlQL3NCQXdGL3dJbUFGa0FBQUVIQUtVQTRBQUFBQmNBc0FCRldMQU5MeHV4RFJnK1diRVRDZlN3RjlBd01RQUFBUUNNL25zRXFnV3dBQ0FBVXdDd0FFVllzQmd2RzdFWUhENVpzQUJGV0xBTkx4dXhEUkkrV2JBQVJWaXdFeThic1JNUVBsbXdHQkN3SU5DeUJCTWdFUkk1c0EwUXNnZ0RDaXRZSWRnYjlGbXdFeEN5SEFFS0sxZ2gyQnYwV1RBeEFSRUdCZ2NHRlJRek1qY1hCaU1pSmpVME53Y2lBQ2NSTXhFVUZqTXlOalVSQktvQmlvT2JUakEwRFVaYVdXZFBGdS8rNUFLK3JxR2pyUVd3L0NHVTRqdHlZRWdhZVN4b1ZtRlRBUUVDNGdQZy9DYWVyNjZlQTlzQUFRQ0kvazhENWdRNkFCOEFiUUN3QUVWWXNCY3ZHN0VYR0Q1WnNBQkZXTEFkTHh1eEhSZytXYkFBUlZpd0h5OGJzUjhRUGxtd0FFVllzQkl2RzdFU0VENVpzQUJGV0xBS0x4dXhDaEkrV2JJRkF3b3JXQ0hZRy9SWnNCOFFzQS9Rc0E4dnNoQVNIUkVTT2JBU0VMSWFBUW9yV0NIWUcvUlpNREVoQndZVkZETXlOeGNHSXlJbU5UUTNKd1lqSWlZbkVUTVJGRE15TnhFekVRUFNPbkZPTURRTlJscFpaNllFYk5HdHRRRzV5TlJHdVMxYlZrZ2FlU3hvVm85cVpYL0p4UUxBL1VYMm5nTVQrOGIvL3dBOUFBQUc3UWMyQWlZQU93QUFBUWNBblFIRkFUWUFGQUN3QUVWWXNBTXZHN0VESEQ1WnNSY0c5REF4Ly84QUt3QUFCZE1HQUFJbUFGc0FBQUVIQUowQkpBQUFBQlFBc0FCRldMQU1MeHV4REJnK1diRVBBZlF3TWYvL0FBOEFBQVM3QnpZQ0pnQTlBQUFCQndDZEFKSUJOZ0FVQUxBQVJWaXdBUzhic1FFY1BsbXhDd2IwTURILy93QVcva3NEc0FZQUFpWUFYUUFBQVFZQW5TVUFBQlFBc0FCRldMQVBMeHV4RHhnK1diRVVBZlF3TWYvL0FBOEFBQVM3QnZzQ0pnQTlBQUFCQndCcUFNSUJOZ0FYQUxBQVJWaXdDQzhic1FnY1BsbXhFQVQwc0JuUU1ERUEvLzhBVmdBQUJIb0hOQUltQUQ0QUFBRUhBSFVCaHdFMkFCUUFzQUJGV0xBSEx4dXhCeHcrV2JFTUNQUXdNZi8vQUZnQUFBT3pCZjRDSmdCZUFBQUJCd0IxQVNFQUFBQVVBTEFBUlZpd0J5OGJzUWNZUGxteERBbjBNREgvL3dCV0FBQUVlZ2I0QWlZQVBnQUFBUWNBb1FGdkFUWUFGQUN3QUVWWXNBY3ZHN0VISEQ1WnNSRUU5REF4Ly84QVdBQUFBN01Gd2dJbUFGNEFBQUVIQUtFQkNRQUFBQlFBc0FCRldMQUhMeHV4QnhnK1diRVJBZlF3TWYvL0FGWUFBQVI2QnpZQ0pnQStBQUFCQndDZUFLY0JOd0FVQUxBQVJWaXdCeThic1FjY1BsbXhEd2IwTURILy93QllBQUFEc3dZQUFpWUFYZ0FBQVFZQW5rRUJBQlFBc0FCRldMQUhMeHV4QnhnK1diRVBBZlF3TWYvLy8vSUFBQWRYQjBBQ0pnQ0JBQUFCQndCMUFza0JRZ0FVQUxBQVJWaXdCaThic1FZY1BsbXhGUWowTURILy93Qk8vK3dHZkFYL0FpWUFoZ0FBQVFjQWRRSjZBQUVBRkFDd0FFVllzQjB2RzdFZEdENVpzVUFKOURBeC8vOEFkditqQlIwSGZnSW1BSU1BQUFFSEFIVUI2UUdBQUJRQXNBQkZXTEFRTHh1eEVCdytXYkVzQ1BRd01mLy9BRnYvZWdRMEJmNENKZ0NKQUFBQkJ3QjFBVGNBQUFBVUFMQUFSVml3QkM4YnNRUVlQbG14S1FuME1ESC8vLysrQUFBRUh3U05BaVlCdlFBQUFRY0Izdjh2LzNnQUxBQ3lIeGdCY2JUZkdPOFlBbkcwSHhndkdBSmRzaDhZQVhLeVR4Z0JjYlR2R1A4WUFsMnlYeGdCWFRBeC8vLy92Z0FBQkI4RWpRSW1BYjBBQUFFSEFkNy9MLzk0QURZQXRPOFgveGNDWGJKUEZ3RnhzaDhYQVhLeTN4Y0Jjckp2RndGeXROOFg3eGNDY2JJZkZ3RnhzbDhYQVYyMEh4Y3ZGd0pkTURILy93QW9BQUFEL1FTTkFpWUJ6UUFBQVFZQjNrWGdBQTBBc2dNS0FWMnlzQW9CWFRBeEFQLy9BQk1BQUFSd0Jod0NKZ0c2QUFBQkJ3QkVBTlVBSGdBVUFMQUFSVml3QkM4YnNRUWFQbG14REFiME1ESC8vd0FUQUFBRWNBWWNBaVlCdWdBQUFRY0FkUUZrQUI0QUZBQ3dBRVZZc0FVdkc3RUZHajVac1EwRzlEQXgvLzhBRXdBQUJIQUdIZ0ltQWJvQUFBRUdBSjF1SGdBVUFMQUFSVml3QkM4YnNRUWFQbG14RHdUME1ESC8vd0FUQUFBRWNBWUtBaVlCdWdBQUFRWUFwR29pQUJRQXNBQkZXTEFGTHh1eEJSbytXYkVPQXZRd01mLy9BQk1BQUFSd0JlTUNKZ0c2QUFBQkJ3QnFBSjRBSGdBWEFMQUFSVml3QkM4YnNRUWFQbG14RWdMMHNCdlFNREVBLy84QUV3QUFCSEFHZVFJbUFib0FBQUVIQUtJQTlRQXBBQmNBc0FCRldMQUVMeHV4QkJvK1diRU9CdlN3R05Bd01RRC8vd0FUQUFBRWNBWjhBaVlCdWdBQUFBY0Izd0QvQUFyLy93Qmcva29FTUFTZEFpWUJ2QUFBQUFjQWVRRjAvLzMvL3dDS0FBQURyZ1ljQWlZQnZnQUFBUWNBUkFDb0FCNEFGQUN3QUVWWXNBWXZHN0VHR2o1WnNRMEc5REF4Ly84QWlnQUFBNjRHSEFJbUFiNEFBQUVIQUhVQk53QWVBQlFBc0FCRldMQUhMeHV4QnhvK1diRU9CdlF3TWYvL0FJb0FBQU91Qmg0Q0pnRytBQUFCQmdDZFFSNEFGQUN3QUVWWXNBWXZHN0VHR2o1WnNSQUU5REF4Ly84QWlnQUFBNjRGNHdJbUFiNEFBQUVHQUdweEhnQVhBTEFBUlZpd0JpOGJzUVlhUGxteEV3TDBzQnpRTURFQS8vLy92Z0FBQVY4R0hBSW1BY0lBQUFFR0FFU0ZIZ0FVQUxBQVJWaXdBaThic1FJYVBsbXhCUWIwTURILy93Q09BQUFDTHdZY0FpWUJ3Z0FBQVFZQWRSTWVBQlFBc0FCRldMQURMeHV4QXhvK1diRUdCdlF3TWYvLy84Y0FBQUlrQmg0Q0pnSENBQUFCQndDZC94NEFIZ0FVQUxBQVJWaXdBaThic1FJYVBsbXhDQVQwTURILy8vKzBBQUFDUFFYakFpWUJ3Z0FBQVFjQWF2OU9BQjRBRndDd0FFVllzQUl2RzdFQ0dqNVpzUXNDOUxBVTBEQXhBUC8vQUlvQUFBUllCZ29DSmdISEFBQUJCd0NrQUpVQUlnQVVBTEFBUlZpd0JpOGJzUVlhUGxteERRTDBNREgvL3dCZy8vQUVXZ1ljQWlZQnlBQUFBUWNBUkFEdUFCNEFGQUN3QUVWWXNBb3ZHN0VLR2o1WnNSMEc5REF4Ly84QVlQL3dCRm9HSEFJbUFjZ0FBQUVIQUhVQmZRQWVBQlFBc0FCRldMQUtMeHV4Q2hvK1diRWVCdlF3TWYvL0FHRC84QVJhQmg0Q0pnSElBQUFCQndDZEFJY0FIZ0FVQUxBQVJWaXdDaThic1FvYVBsbXhJQVQwTURILy93QmcvL0FFV2dZS0FpWUJ5QUFBQVFjQXBBQ0RBQ0lBRkFDd0FFVllzQW92RzdFS0dqNVpzUjhDOURBeC8vOEFZUC93QkZvRjR3SW1BY2dBQUFFSEFHb0F0d0FlQUJjQXNBQkZXTEFLTHh1eENobytXYkVqQXZTd0xOQXdNUUQvL3dCMC8vQUVDZ1ljQWlZQnpnQUFBUWNBUkFEUEFCNEFGQUN3QUVWWXNBa3ZHN0VKR2o1WnNSTUc5REF4Ly84QWRQL3dCQW9HSEFJbUFjNEFBQUVIQUhVQlhnQWVBQlFBc0FCRldMQVJMeHV4RVJvK1diRVVCdlF3TWYvL0FIVC84QVFLQmg0Q0pnSE9BQUFCQmdDZGFCNEFGQUN3QUVWWXNBa3ZHN0VKR2o1WnNSWUU5REF4Ly84QWRQL3dCQW9GNHdJbUFjNEFBQUVIQUdvQW1BQWVBQmNBc0FCRldMQUpMeHV4Q1JvK1diRVpBdlN3SXRBd01RRC8vd0FOQUFBRUhBWWNBaVlCMGdBQUFRY0FkUUV6QUI0QUZBQ3dBRVZZc0FFdkc3RUJHajVac1FzRzlEQXgvLzhBRXdBQUJIQUYxZ0ltQWJvQUFBRUdBSEJzSmdBVEFMQUFSVml3QkM4YnNRUWFQbG13RE53d01RRC8vd0FUQUFBRWNBWDJBaVlCdWdBQUFRY0FvQUNaQUI4QUZBQ3dBRVZZc0FRdkc3RUVHajVac1E0STlEQXhBQUlBRS81UEJIQUVqUUFXQUJrQVp3Q3dBRVZZc0FBdkc3RUFHajVac0FCRldMQVVMeHV4RkJBK1diQUFSVml3QVM4YnNRRVFQbG13QUVWWXNBd3ZHN0VNRWo1WnNnY0RDaXRZSWRnYjlGbXdBUkN3RWRDd0VTK3lGeFFBRVJJNXNCY3ZzaE1CQ2l0WUlkZ2I5Rm15R1FBVUVSSTVNREVCQVNNSEJoVVVNekkzRndZaklpWTFORGNESVFNakFRTWhBd0tZQWRnbU9uRk9NRFFOUmxwWlo3Qm8vZmh1dlFIZmVBR1J4d1NOKzNNdFcxWklHbmtzYUZhVWJBRUsvdWtFamYwaEFmMEEvLzhBWVAvd0JEQUdIQUltQWJ3QUFBRUhBSFVCYVFBZUFCUUFzQUJGV0xBTEx4dXhDeG8rV2JFZkJ2UXdNZi8vQUdELzhBUXdCaDRDSmdHOEFBQUJCZ0NkY3g0QUZBQ3dBRVZZc0Fzdkc3RUxHajVac1NFRTlEQXgvLzhBWVAvd0JEQUY0QUltQWJ3QUFBRUhBS0VCVVFBZUFCUUFzQUJGV0xBTEx4dXhDeG8rV2JFakF2UXdNZi8vQUdELzhBUXdCaDRDSmdHOEFBQUJCd0NlQUlrQUh3QVVBTEFBUlZpd0N5OGJzUXNhUGxteElRYjBNREgvL3dDS0FBQUVId1llQWlZQnZRQUFBUVlBbmpJZkFCUUFzQUJGV0xBQkx4dXhBUm8rV2JFYUJ2UXdNZi8vQUlvQUFBT3VCZFlDSmdHK0FBQUJCZ0J3UHlZQUV3Q3dBRVZZc0FZdkc3RUdHajVac0EzY01ERUEvLzhBaWdBQUE2NEY5Z0ltQWI0QUFBRUdBS0JzSHdBVUFMQUFSVml3Qmk4YnNRWWFQbG14RHdqME1ESC8vd0NLQUFBRHJnWGdBaVlCdmdBQUFRY0FvUUVmQUI0QUZBQ3dBRVZZc0FZdkc3RUdHajVac1JNQzlEQXhBQUVBaXY1UEE2NEVqUUFiQUhnQXNBQkZXTEFXTHh1eEZobytXYkFBUlZpd0ZDOGJzUlFRUGxtd0FFVllzQTh2RzdFUEVqNVpzQlFRc0J2UXNCc3ZzaDhiQVYyeTN4c0JYYklBQVFvcldDSFlHL1Jac0JRUXNnSUJDaXRZSWRnYjlGbXdGQkN3QmRDd0R4Q3lDZ01LSzFnaDJCdjBXYkFXRUxJWkFRb3JXQ0hZRy9SWk1ERUJJUkVoRlNNSEJoVVVNekkzRndZaklpWTFORGNoRVNFVklSRWhBMWY5N0FKclBUcHhUakEwRFVaYVdXZWIvY29ESHYyYkFoUUNEdjZKbHkxYlZrZ2FlU3hvVm9wcEJJMlovcklBLy84QWlnQUFBNjRHSGdJbUFiNEFBQUVHQUo1WEh3QVVBTEFBUlZpd0JpOGJzUVlhUGxteEVRYjBNREgvL3dCai8vQUVOUVllQWlZQndBQUFBUVlBblhFZUFCUUFzQUJGV0xBS0x4dXhDaG8rV2JFZ0JQUXdNZi8vQUdQLzhBUTFCZllDSmdIQUFBQUJCd0NnQUp3QUh3QVVBTEFBUlZpd0NpOGJzUW9hUGxteElBajBNREgvL3dCai8vQUVOUVhnQWlZQndBQUFBUWNBb1FGUEFCNEFGQUN3QUVWWXNBb3ZHN0VLR2o1WnNTVUM5REF4Ly84QVkvMzhCRFVFblFJbUFjQUFBQUFIQWFJQlQvNmQvLzhBaWdBQUJGZ0dIZ0ltQWNFQUFBRUhBSjBBa0FBZUFCUUFzQUJGV0xBSEx4dXhCeG8rV2JFUUJQUXdNZi8vLzVVQUFBSllCZ29DSmdIQ0FBQUJCd0NrL3hvQUlnQVVBTEFBUlZpd0F5OGJzUU1hUGxteEJ3TDBNREgvLy8rVUFBQUNYZ1hXQWlZQndnQUFBUWNBY1A4Y0FDWUFFd0N3QUVWWXNBSXZHN0VDR2o1WnNBWGNNREVBLy8vL3lnQUFBaUVGOWdJbUFjSUFBQUVIQUtEL1NRQWZBQlFBc0FCRldMQUNMeHV4QWhvK1diRUhDUFF3TWYvL0FBYitUd0ZtQkkwQ0pnSENBQUFBQmdDajFBRC8vd0NKQUFBQlpBWGdBaVlCd2dBQUFRWUFvZndlQUJRQXNBQkZXTEFDTHh1eEFobytXYkVMQXZRd01mLy9BQ3YvOEFRTkJoNENKZ0hEQUFBQkJ3Q2RBUWNBSGdBVUFMQUFSVml3QUM4YnNRQWFQbG14RkFUME1ESC8vd0NLL2Z3RVZ3U05BaVlCeEFBQUFBY0JvZ0VVL3AzLy93Q0NBQUFEaXdZY0FpWUJ4UUFBQVFZQWRRY2VBQlFBc0FCRldMQUZMeHV4QlJvK1diRUlCdlF3TWYvL0FJcjkvQU9MQkkwQ0pnSEZBQUFBQndHaUFSRCtuZi8vQUlvQUFBT0xCSTRDSmdIRkFBQUJCd0dpQVg0RG53QVFBTEFBUlZpd0NpOGJzUW9hUGxrd01mLy9BSW9BQUFPTEJJMENKZ0hGQUFBQUJ3Q2hBV2I5Ti8vL0FJb0FBQVJZQmh3Q0pnSEhBQUFCQndCMUFZOEFIZ0FVQUxBQVJWaXdDQzhic1FnYVBsbXhEQWIwTURILy93Q0svZndFV0FTTkFpWUJ4d0FBQUFjQm9nRnMvcDMvL3dDS0FBQUVXQVllQWlZQnh3QUFBUWNBbmdDdkFCOEFGQUN3QUVWWXNBWXZHN0VHR2o1WnNROEc5REF4Ly84QVlQL3dCRm9GMWdJbUFjZ0FBQUVIQUhBQWhRQW1BQk1Bc0FCRldMQUtMeHV4Q2hvK1diQWQzREF4QVAvL0FHRC84QVJhQmZZQ0pnSElBQUFCQndDZ0FMSUFId0FVQUxBQVJWaXdDaThic1FvYVBsbXhId2owTURILy93QmcvL0FFV2dZZEFpWUJ5QUFBQVFjQXBRRUhBQjRBRndDd0FFVllzQW92RzdFS0dqNVpzUjRHOUxBaTBEQXhBUC8vQUlvQUFBUWxCaHdDSmdITEFBQUJCd0IxQVNjQUhnQVVBTEFBUlZpd0JTOGJzUVVhUGxteEdRYjBNREgvL3dDSy9md0VKUVNOQWlZQnl3QUFBQWNCb2dFTi9wMy8vd0NLQUFBRUpRWWVBaVlCeXdBQUFRWUFua2NmQUJRQXNBQkZXTEFFTHh1eEJCbytXYkVjQnZRd01mLy9BRVAvOEFQZEJod0NKZ0hNQUFBQkJ3QjFBVDRBSGdBVUFMQUFSVml3Q1M4YnNRa2FQbG14S0FiME1ESC8vd0JELy9BRDNRWWVBaVlCekFBQUFRWUFuVWdlQUJRQXNBQkZXTEFKTHh1eENSbytXYkVxQlBRd01mLy9BRVArVFFQZEJKMENKZ0hNQUFBQUJ3QjVBVk1BQVAvL0FFUC84QVBkQmg0Q0pnSE1BQUFCQmdDZVhoOEFGQUN3QUVWWXNBa3ZHN0VKR2o1WnNTb0c5REF4Ly84QUtQMzhBLzBFalFJbUFjMEFBQUFIQWFJQkZQNmQvLzhBS0FBQUEvMEdIZ0ltQWMwQUFBRUdBSjVSSHdBVUFMQUFSVml3Qmk4YnNRWWFQbG14RFFiME1ESC8vd0FvL2s4RC9RU05BaVlCelFBQUFBY0FlUUUrQUFMLy93QjAvL0FFQ2dZS0FpWUJ6Z0FBQVFZQXBHUWlBQlFBc0FCRldMQVJMeHV4RVJvK1diRVZBdlF3TWYvL0FIVC84QVFLQmRZQ0pnSE9BQUFCQmdCd1ppWUFFd0N3QUVWWXNBa3ZHN0VKR2o1WnNCUGNNREVBLy84QWRQL3dCQW9GOWdJbUFjNEFBQUVIQUtBQWt3QWZBQlFBc0FCRldMQUpMeHV4Q1JvK1diRVZDUFF3TWYvL0FIVC84QVFLQm5rQ0pnSE9BQUFCQndDaUFPOEFLUUFYQUxBQVJWaXdDUzhic1FrYVBsbXhGUWIwc0IvUU1ERUEvLzhBZFAvd0JCUUdIUUltQWM0QUFBRUhBS1VBNkFBZUFCY0FzQUJGV0xBUkx4dXhFUm8rV2JFVUJ2U3dHTkF3TVFBQUFRQjAvblFFQ2dTTkFDQUFVd0N3QUVWWXNCZ3ZHN0VZR2o1WnNBQkZXTEFPTHh1eERoSStXYkFBUlZpd0V5OGJzUk1RUGxtd0dCQ3dJTkN5QlJNZ0VSSTVzQTRRc2drRENpdFlJZGdiOUZtd0V4Q3lIQUVLSzFnaDJCdjBXVEF4QVJFVUJnY0hCaFVVTXpJM0Z3WWpJaVkxTkRjaUppY1JNeEVVRmpNeU5qVVJCQXA0YnpKc1RqQTBEVVphV1dkYXpma0V0NCtGZzQ4RWpmenplcm93S0Z0U1NCcDVMR2hXYUZiT3VBTVgvUFI1Z1g5N0F3d0EvLzhBTVFBQUJmRUdIZ0ltQWRBQUFBRUhBSjBCT3dBZUFCUUFzQUJGV0xBREx4dXhBeG8rV2JFWEJQUXdNZi8vQUEwQUFBUWNCaDRDSmdIU0FBQUJCZ0NkUFI0QUZBQ3dBRVZZc0Fndkc3RUlHajVac1EwRTlEQXgvLzhBRFFBQUJCd0Y0d0ltQWRJQUFBRUdBR3B0SGdBWEFMQUFSVml3Q0M4YnNRZ2FQbG14RUFMMHNCblFNREVBLy84QVJ3QUFBK0FHSEFJbUFkTUFBQUVIQUhVQk13QWVBQlFBc0FCRldMQUlMeHV4Q0JvK1diRU1CdlF3TWYvL0FFY0FBQVBnQmVBQ0pnSFRBQUFCQndDaEFSc0FIZ0FVQUxBQVJWaXdCeThic1FjYVBsbXhFUUwwTURILy93QkhBQUFENEFZZUFpWUIwd0FBQVFZQW5sTWZBQlFBc0FCRldMQUhMeHV4QnhvK1diRVBCdlF3TWYvL0FCd0FBQVVkQmo4Q0pnQWxBQUFBQmdDdEJBRC8vLy93QUFBRXFnWS9BQ1lBS1dRQUFBY0FyZjg1QUFELy8vLytBQUFGYkFaQkFDWUFMR1FBQUFjQXJmOUhBQUwvL3dBRUFBQUIyd1pBQUNZQUxXUUFBQWNBcmY5TkFBSC8vLy82Lyt3RkhRWS9BQ1lBTXhRQUFBY0FyZjlEQUFELy8vOTRBQUFGSHdZL0FDWUFQV1FBQUFjQXJmN0JBQUQvLy8vOUFBQUUzd1kvQUNZQXVSUUFBQWNBcmY5R0FBRC8vLytiLy9RQ3JRWjBBaVlBd2dBQUFRY0FydjhxLyt3QUhRQ3dBRVZZc0F3dkc3RU1HRDVac1JnQjlMQVAwTEFZRUxBaDBEQXhBUC8vQUJ3QUFBVWRCYkFDQmdBbEFBRC8vd0NwQUFBRWlBV3dBZ1lBSmdBQS8vOEFxUUFBQkVZRnNBSUdBQ2tBQVAvL0FGWUFBQVI2QmJBQ0JnQStBQUQvL3dDcEFBQUZDQVd3QWdZQUxBQUEvLzhBdHdBQUFYY0ZzQUlHQUMwQUFQLy9BS2tBQUFVRkJiQUNCZ0F2QUFELy93Q3BBQUFHVWdXd0FnWUFNUUFBLy84QXFRQUFCUWdGc0FJR0FESUFBUC8vQUhiLzdBVUpCY1FDQmdBekFBRC8vd0NwQUFBRXdBV3dBZ1lBTkFBQS8vOEFNUUFBQkpjRnNBSUdBRGdBQVAvL0FBOEFBQVM3QmJBQ0JnQTlBQUQvL3dBNUFBQUV6Z1d3QWdZQVBBQUEvLy8vMWdBQUFsOEhCd0ltQUMwQUFBRUhBR3IvY0FGQ0FCY0FzQUJGV0xBQ0x4dXhBaHcrV2JFTEJQU3dGTkF3TVFELy93QVBBQUFFdXdiN0FpWUFQUUFBQVFjQWFnRENBVFlBRndDd0FFVllzQWd2RzdFSUhENVpzUkFFOUxBWjBEQXhBUC8vQUdULzZ3UjNCam9DSmdDNkFBQUJCd0N0QVhYLyt3QVVBTEFBUlZpd0V5OGJzUk1ZUGxteEpBSDBNREgvL3dCai8rd0Q3QVk1QWlZQXZnQUFBUWNBclFFci8vb0FGQUN3QUVWWXNCVXZHN0VWR0Q1WnNTZ0I5REF4Ly84QWtmNWhBL0FHT2dJbUFNQUFBQUVIQUswQlJ2LzdBQlFBc0FCRldMQURMeHV4QXhnK1diRVZBZlF3TWYvL0FNUC85QUpMQmlVQ0pnRENBQUFCQmdDdEt1WUFGQUN3QUVWWXNBd3ZHN0VNR0Q1WnNROEI5REF4Ly84QWovL3NBL1lHZEFJbUFNb0FBQUVHQUs0aDdBQWRBTEFBUlZpd0FDOGJzUUFZUGxteEhRSDBzQlhRc0IwUXNDZlFNREVBLy84QW1nQUFCRDhFT2dJR0FJMEFBUC8vQUZ2LzdBUTBCRTRDQmdCVEFBRC8vd0NhL21BRDdnUTZBZ1lBZGdBQS8vOEFJUUFBQTdvRU9nSUdBRm9BQVAvL0FDa0FBQVBLQkRvQ0JnQmNBQUQvLy8vbS8vUUNid1d4QWlZQXdnQUFBUVlBYW9Ec0FCY0FzQUJGV0xBTUx4dXhEQmcrV2JFVUFmU3dIZEF3TVFELy93Q1AvK3dEOWdXeEFpWUF5Z0FBQVFZQWFuZnNBQmNBc0FCRldMQUFMeHV4QUJnK1diRWFBZlN3STlBd01RRC8vd0JiLyt3RU5BWTZBaVlBVXdBQUFRY0FyUUZELy9zQUZBQ3dBRVZZc0FRdkc3RUVHRDVac1I0QjlEQXgvLzhBai8vc0EvWUdKUUltQU1vQUFBRUhBSzBCSXYvbUFCUUFzQUJGV0xBQUx4dXhBQmcrV2JFVkFmUXdNZi8vQUhyLzdBWVpCaUlDSmdETkFBQUJCd0N0QWxQLzR3QVVBTEFBUlZpd0FDOGJzUUFZUGxteEpnSDBNREgvL3dDcEFBQUVSZ2NIQWlZQUtRQUFBUWNBYWdERUFVSUFGd0N3QUVWWXNBWXZHN0VHSEQ1WnNSTUU5TEFjMERBeEFQLy9BTEVBQUFRd0IwQUNKZ0N3QUFBQkJ3QjFBWkFCUWdBVUFMQUFSVml3QkM4YnNRUWNQbG14Q0FqME1ERUFBUUJRLyt3RWNnWEVBQ1lBWWJJQUp5Z1JFamtBc0FCRldMQUdMeHV4Qmh3K1diQUFSVml3R2k4YnNSb1FQbG13QmhDd0M5Q3dCaEN5RGdFS0sxZ2gyQnYwV2JJbUdnWVJFam13SmhDeUZBRUtLMWdoMkJ2MFdiQWFFTEFmMExBYUVMSWlBUW9yV0NIWUcvUlpNREVCSmlZMU5DUXpNaFlXRlNNMEppTWlCaFVVRmdRV0ZoVVVCQ01pSkNZMU14UVdNekkyTkNZQ1Z2ZmhBUlBjbHV1QndhaVpqcCtYQVd2TlkvN3M1NWIrL0kzQnc2T1lvcFlDaVVmUG1LemhkTXg1aEpkOWIxbDdabnVrYjdIVmM4aC9oSmw4MW5VQS8vOEF0d0FBQVhjRnNBSUdBQzBBQVAvLy85WUFBQUpmQndjQ0pnQXRBQUFCQndCcS8zQUJRZ0FYQUxBQVJWaXdBaThic1FJY1BsbXhDd1Qwc0JUUU1ERUEvLzhBTmYvc0E4d0ZzQUlHQUM0QUFQLy9BTElBQUFVZEJiQUNCZ0hqQUFELy93Q3BBQUFGQlFjdUFpWUFMd0FBQVFjQWRRRjdBVEFBRkFDd0FFVllzQVV2RzdFRkhENVpzUTRJOURBeC8vOEFUZi9yQk1zSEdnSW1BTjBBQUFFSEFLQUEyZ0ZEQUJNQXNBQkZXTEFSTHh1eEVSdytXYkFWM0RBeEFQLy9BQndBQUFVZEJiQUNCZ0FsQUFELy93Q3BBQUFFaUFXd0FnWUFKZ0FBLy84QXNRQUFCREFGc0FJR0FMQUFBUC8vQUtrQUFBUkdCYkFDQmdBcEFBRC8vd0N4QUFBRS93Y2FBaVlBMndBQUFRY0FvQUV4QVVNQUV3Q3dBRVZZc0Fndkc3RUlIRDVac0EzY01ERUEvLzhBcVFBQUJsSUZzQUlHQURFQUFQLy9BS2tBQUFVSUJiQUNCZ0FzQUFELy93QjIvK3dGQ1FYRUFnWUFNd0FBLy84QXNnQUFCUUVGc0FJR0FMVUFBUC8vQUtrQUFBVEFCYkFDQmdBMEFBRC8vd0IzLyt3RTJBWEVBZ1lBSndBQS8vOEFNUUFBQkpjRnNBSUdBRGdBQVAvL0FEa0FBQVRPQmJBQ0JnQThBQUQvL3dCdC8rd0Q2Z1JPQWdZQVJRQUEvLzhBWGYvc0EvTUVUZ0lHQUVrQUFQLy9BSndBQUFRQkJjUUNKZ0R2QUFBQkJ3Q2dBS0wvN1FBVEFMQUFSVml3Q0M4YnNRZ1lQbG13RGR3d01RRC8vd0JiLyt3RU5BUk9BZ1lBVXdBQS8vOEFqUDVnQkI0RVRnSUdBRlFBQUFBQkFGei83QVBzQkU0QUhRQkpzaEFlSHhFU09RQ3dBRVZZc0JBdkc3RVFHRDVac0FCRldMQUlMeHV4Q0JBK1diSUFBUW9yV0NIWUcvUlpzQWdRc0FQUXNCQVFzQlRRc0JBUXNoY0JDaXRZSWRnYjlGa3dNU1V5TmpjekRnSWpJZ0FSTlRRMk5qTXlGaGNqSmlZaklnWVZGUlFXQWo1amxBaXZCWGJGYnQzKyszVFpsTGJ4Q0s4SWoybU5tNXFEZUZwZHFHUUJKd0VBSDU3MmlOcXVhWWZMd0NPN3lnRC8vd0FXL2tzRHNBUTZBZ1lBWFFBQS8vOEFLUUFBQThvRU9nSUdBRndBQVAvL0FGMy83QVB6QmNVQ0pnQkpBQUFCQndCcUFJNEFBQUFYQUxBQVJWaXdDQzhic1FnWVBsbXhKUUgwc0M3UU1ERUEvLzhBbWdBQUEwY0Y2Z0ltQU9zQUFBRUhBSFVBemYvc0FCUUFzQUJGV0xBRUx4dXhCQmcrV2JFSUNmUXdNZi8vQUYvLzdBTzdCRTRDQmdCWEFBRC8vd0NOQUFBQmFBWEVBZ1lBVFFBQS8vLy92QUFBQWtVRnhBSW1BSXdBQUFFSEFHci9Wdi8vQUJjQXNBQkZXTEFDTHh1eEFoZytXYkVMQWZTd0ZOQXdNUUQvLy8rLy9rc0JXUVhFQWdZQVRnQUEvLzhBbkFBQUJEOEY2UUltQVBBQUFBRUhBSFVCTy8vckFCUUFzQUJGV0xBRUx4dXhCQmcrV2JFUENmUXdNZi8vQUJiK1N3T3dCZGdDSmdCZEFBQUJCZ0NnVUFFQUV3Q3dBRVZZc0E4dkc3RVBHRDVac0JQY01ERUEvLzhBUFFBQUJ1MEhOQUltQURzQUFBRUhBRVFDTEFFMkFCUUFzQUJGV0xBREx4dXhBeHcrV2JFVUNQUXdNZi8vQUNzQUFBWFRCZjRDSmdCYkFBQUJCd0JFQVlzQUFBQVVBTEFBUlZpd0N5OGJzUXNZUGxteERnbjBNREgvL3dBOUFBQUc3UWMwQWlZQU93QUFBUWNBZFFLN0FUWUFGQUN3QUVWWXNBUXZHN0VFSEQ1WnNSVUk5REF4Ly84QUt3QUFCZE1GL2dJbUFGc0FBQUVIQUhVQ0dnQUFBQlFBc0FCRldMQU1MeHV4REJnK1diRVBDZlF3TWYvL0FEMEFBQWJ0QnZzQ0pnQTdBQUFCQndCcUFmVUJOZ0FYQUxBQVJWaXdBeThic1FNY1BsbXhHZ1Qwc0NQUU1ERUEvLzhBS3dBQUJkTUZ4UUltQUZzQUFBRUhBR29CVkFBQUFCY0FzQUJGV0xBTEx4dXhDeGcrV2JFVUFmU3dIZEF3TVFELy93QVBBQUFFdXdjMEFpWUFQUUFBQVFjQVJBRDVBVFlBRkFDd0FFVllzQWd2RzdFSUhENVpzUW9JOURBeC8vOEFGdjVMQTdBRi9nSW1BRjBBQUFFSEFFUUFqQUFBQUJRQXNBQkZXTEFQTHh1eER4ZytXYkVSQ2ZRd01mLy9BR2NFSVFEOUJnQUNCZ0FMQUFELy93Q0lCQklDSXdZQUFnWUFCZ0FBLy84QW9QLzFBNG9Gc0FBbUFBVUFBQUFIQUFVQ0R3QUEvLy8vdFA1TEFqOEYyQUltQUpzQUFBRUhBSjcvU2YvWkFCUUFzQUJGV0xBTkx4dXhEUmcrV2JFVEFmUXdNZi8vQURBRUZnRkhCZ0FDQmdGdEFBRC8vd0NwQUFBR1VnYzBBaVlBTVFBQUFRY0FkUUtaQVRZQUZBQ3dBRVZZc0FJdkc3RUNIRDVac1JFSTlEQXgvLzhBaXdBQUJuZ0YvZ0ltQUZFQUFBRUhBSFVDclFBQUFCUUFzQUJGV0xBREx4dXhBeGcrV2JFZ0NmUXdNZi8vQUJ6K2F3VWRCYkFDSmdBbEFBQUFCd0NtQVg4QUFQLy9BRzMrYXdQcUJFNENKZ0JGQUFBQUJ3Q21BTWNBQVAvL0FLa0FBQVJHQjBBQ0pnQXBBQUFCQndCRUFQc0JRZ0FVQUxBQVJWaXdCaThic1FZY1BsbXhEUWowTURILy93Q3hBQUFFL3dkQUFpWUEyd0FBQVFjQVJBRnRBVUlBRkFDd0FFVllzQWd2RzdFSUhENVpzUXNJOURBeC8vOEFYZi9zQS9NRi9nSW1BRWtBQUFFSEFFUUF4UUFBQUJRQXNBQkZXTEFJTHh1eENCZytXYkVmQ2ZRd01mLy9BSndBQUFRQkJlb0NKZ0R2QUFBQkJ3QkVBTjcvN0FBVUFMQUFSVml3Q0M4YnNRZ1lQbG14Q3duME1ESC8vd0JhQUFBRklRV3dBZ1lBdUFBQS8vOEFYLzRvQlVNRU9nSUdBTXdBQVAvL0FCWUFBQVRkQnVnQ0pnRVlBQUFCQndDckJEa0ErZ0FYQUxBQVJWaXdEeThic1E4Y1BsbXhFUWowc0JYUU1ERUEvLy8vK3dBQUJBc0Z3UUltQVJrQUFBRUhBS3NEMVAvVEFCY0FzQUJGV0xBUkx4dXhFUmcrV2JFVENmU3dGOUF3TVFELy93QmIva3NJUUFST0FDWUFVd0FBQUFjQVhRU1FBQUQvL3dCMi9rc0pNQVhFQUNZQU13QUFBQWNBWFFXQUFBRC8vd0JRL2xFRWFnWEVBaVlBMmdBQUFBY0JzQUdjLzdqLy93QlkvbElEckFSTkFpWUE3Z0FBQUFjQnNBRkQvN24vL3dCMy9sRUUyQVhFQWlZQUp3QUFBQWNCc0FIbC83ai8vd0JjL2xFRDdBUk9BaVlBUndBQUFBY0JzQUZTLzdqLy93QVBBQUFFdXdXd0FnWUFQUUFBLy84QUx2NWdBOThFT2dJR0FMd0FBUC8vQUxjQUFBRjNCYkFDQmdBdEFBRC8vd0FiQUFBSE5RY2FBaVlBMlFBQUFRY0FvQUg0QVVNQUV3Q3dBRVZZc0Ewdkc3RU5IRDVac0JuY01ERUEvLzhBRlFBQUJnUUZ4QUltQU8wQUFBRUhBS0FCWC8vdEFCTUFzQUJGV0xBTkx4dXhEUmcrV2JBWjNEQXhBUC8vQUxjQUFBRjNCYkFDQmdBdEFBRC8vd0FjQUFBRkhRY09BaVlBSlFBQUFRY0FvQUQwQVRjQUV3Q3dBRVZZc0FRdkc3RUVIRDVac0E3Y01ERUEvLzhBYmYvc0Erb0YyQUltQUVVQUFBRUhBS0FBbVFBQkFCTUFzQUJGV0xBWEx4dXhGeGcrV2JBczNEQXhBUC8vQUJ3QUFBVWRCdnNDSmdBbEFBQUJCd0JxQVBrQk5nQVVBTEFBUlZpd0JDOGJzUVFjUGxteEVnVDBNREgvL3dCdC8rd0Q2Z1hGQWlZQVJRQUFBUWNBYWdDZUFBQUFGd0N3QUVWWXNCY3ZHN0VYR0Q1WnNUQUI5TEE1MERBeEFQLy8vL0lBQUFkWEJiQUNCZ0NCQUFELy93Qk8vK3dHZkFST0FnWUFoZ0FBLy84QXFRQUFCRVlIR2dJbUFDa0FBQUVIQUtBQXZ3RkRBQk1Bc0FCRldMQUdMeHV4Qmh3K1diQVAzREF4QVAvL0FGMy83QVB6QmRnQ0pnQkpBQUFCQndDZ0FJa0FBUUFUQUxBQVJWaXdDQzhic1FnWVBsbXdJZHd3TVFELy93QmQvK3dGRWdiWkFpWUJSUUFBQVFjQWFnRFRBUlFBRndDd0FFVllzQUF2RzdFQUhENVpzU2NFOUxBdzBEQXhBUC8vQUdMLzdBUHBCRThDQmdDY0FBRC8vd0JpLyt3RDZRWEdBaVlBbkFBQUFRY0FhZ0NIQUFFQUZ3Q3dBRVZZc0FBdkc3RUFHRDVac1NRQjlMQXQwREF4QVAvL0FCc0FBQWMxQndjQ0pnRFpBQUFCQndCcUFmMEJRZ0FYQUxBQVJWaXdEUzhic1EwY1BsbXhIUVQwc0NiUU1ERUEvLzhBRlFBQUJnUUZzUUltQU8wQUFBRUhBR29CWlAvc0FCY0FzQUJGV0xBTkx4dXhEUmcrV2JFZEFmU3dKdEF3TVFELy93QlEvK3dFYWdjY0FpWUEyZ0FBQVFjQWFnQzNBVmNBRndDd0FFVllzQXN2RzdFTEhENVpzVEFFOUxBNTBEQXhBUC8vQUZqLzdRT3NCY1VDSmdEdUFBQUJCZ0JxWGdBQUZ3Q3dBRVZZc0Fvdkc3RUtHRDVac1M0QjlMQTMwREF4QVAvL0FMRUFBQVQvQnZvQ0pnRGJBQUFCQndCd0FRUUJTZ0FUQUxBQVJWaXdDQzhic1FnY1BsbXdDOXd3TVFELy93Q2NBQUFFQVFXa0FpWUE3d0FBQVFZQWNIWDBBQk1Bc0FCRldMQUhMeHV4QnhnK1diQUwzREF4QVAvL0FMRUFBQVQvQndjQ0pnRGJBQUFCQndCcUFUWUJRZ0FYQUxBQVJWaXdDQzhic1FnY1BsbXhFUVQwc0JyUU1ERUEvLzhBbkFBQUJBRUZzUUltQU84QUFBRUhBR29BcC8vc0FCY0FzQUJGV0xBSUx4dXhDQmcrV2JFUkFmU3dHdEF3TVFELy93QjIvK3dGQ1FiOUFpWUFNd0FBQVFjQWFnRWJBVGdBRndDd0FFVllzQTB2RzdFTkhENVpzU2NFOUxBdzBEQXhBUC8vQUZ2LzdBUTBCY1VDSmdCVEFBQUJCd0JxQUpnQUFBQVhBTEFBUlZpd0JDOGJzUVFZUGxteEl3SDBzQ3pRTURFQS8vOEFaLy9zQlBvRnhBSUdBUllBQVAvL0FGdi83QVEwQkU0Q0JnRVhBQUQvL3dCbi8rd0UrZ2NDQWlZQkZnQUFBUWNBYWdFT0FUMEFGd0N3QUVWWXNBMHZHN0VOSEQ1WnNTY0U5TEF3MERBeEFQLy9BRnYvN0FRMEJjY0NKZ0VYQUFBQkJ3QnFBSWdBQWdBWEFMQUFSVml3QkM4YnNRUVlQbG14SkFIMHNDM1FNREVBLy84QWsvL3NCUFFISFFJbUFPWUFBQUVIQUdvQkRRRllBQmNBc0FCRldMQVRMeHV4RXh3K1diRW5CUFN3TU5Bd01RRC8vd0JrLyt3RDRBWEZBaVlBL2dBQUFRWUFhbndBQUJjQXNBQkZXTEFJTHh1eENCZytXYkVuQWZTd01OQXdNUUQvL3dCTi8rc0V5d2I2QWlZQTNRQUFBUWNBY0FDdEFVb0FFd0N3QUVWWXNCRXZHN0VSSEQ1WnNCUGNNREVBLy84QUZ2NUxBN0FGdUFJbUFGMEFBQUVHQUhBakNBQVRBTEFBUlZpd0RpOGJzUTRZUGxtd0Vkd3dNUUQvL3dCTi8rc0V5d2NIQWlZQTNRQUFBUWNBYWdEZkFVSUFGd0N3QUVWWXNCRXZHN0VSSEQ1WnNSa0U5TEFpMERBeEFQLy9BQmIrU3dPd0JjVUNKZ0JkQUFBQkJnQnFWUUFBRndDd0FFVllzQTh2RzdFUEdENVpzUmNCOUxBZzBEQXhBUC8vQUUzLzZ3VExCMEVDSmdEZEFBQUJCd0NsQVM4QlFnQVhBTEFBUlZpd0FTOGJzUUVjUGxteEZBajBzQmpRTURFQS8vOEFGdjVMQTlFRi93SW1BRjBBQUFFSEFLVUFwUUFBQUJjQXNBQkZXTEFQTHh1eER4ZytXYkVXQ2ZTd0V0QXdNUUQvL3dDV0FBQUV5QWNIQWlZQTRBQUFBUWNBYWdFSkFVSUFGd0N3QUVWWXNBc3ZHN0VMSEQ1WnNSb0U5TEFqMERBeEFQLy9BR2NBQUFPOUJiRUNKZ0Q0QUFBQkJnQnFaT3dBRndDd0FFVllzQWt2RzdFSkdENVpzUmdCOUxBaDBEQXhBUC8vQUxJQUFBWXdCd2NBSmdEbER3QUFKd0F0QkxrQUFBRUhBR29CMHdGQ0FCY0FzQUJGV0xBS0x4dXhDaHcrV2JFZkJQU3dLTkF3TVFELy93Q2RBQUFGZndXeEFDWUEvUUFBQUNjQWpBUXFBQUFCQndCcUFXMy83QUFYQUxBQVJWaXdDaThic1FvWVBsbXhId0gwc0NqUU1ERUEvLzhBT2Y1TEJRNEZzQUltQUR3QUFBQUhBYThEcHdBQS8vOEFLZjVMQkJ3RU9nSW1BRndBQUFBSEFhOEN0UUFBLy84QVgvL3NBL0FHQUFJR0FFZ0FBUC8vQUMvK1N3V3NCYkFDSmdEY0FBQUFCd0d2QkVVQUFQLy9BQ3orU3dTN0JEb0NKZ0R4QUFBQUJ3R3ZBMVFBQVAvL0FCeitvZ1VkQmJBQ0pnQWxBQUFBQndDc0JRSUFBUC8vQUczK29nUHFCRTRDSmdCRkFBQUFCd0NzQkVvQUFQLy9BQndBQUFVZEI3b0NKZ0FsQUFBQkJ3Q3FCTzRCUmdBVUFMQUFSVml3QkM4YnNRUWNQbG14Q3dqME1ESC8vd0J0Lyt3RDZnYUVBaVlBUlFBQUFRY0FxZ1NUQUJBQUZBQ3dBRVZZc0Jjdkc3RVhHRDVac1NrQjlEQXgvLzhBSEFBQUJSMEh3d0ltQUNVQUFBRUhBYmNBd3dFdUFCY0FzQUJGV0xBRkx4dXhCUncrV2JFT0RQU3dGTkF3TVFELy93QnQvK3dFd0FhT0FpWUFSUUFBQVFZQnQyajVBQmNBc0FCRldMQVhMeHV4RnhnK1diRXNDUFN3TXRBd01RRC8vd0FjQUFBRkhRZS9BaVlBSlFBQUFRY0J0Z0RIQVQwQUZ3Q3dBRVZZc0FRdkc3RUVIRDVac1E0TTlMQVQwREF4QVAvLy84ci83QVBxQm9rQ0pnQkZBQUFCQmdHMmJBY0FGd0N3QUVWWXNCY3ZHN0VYR0Q1WnNTd0k5TEF4MERBeEFQLy9BQndBQUFVZEIrb0NKZ0FsQUFBQkJ3RzFBTWdCR3dBWEFMQUFSVml3QlM4YnNRVWNQbG14REF6MHNDRFFNREVBLy84QWJmL3NCRmtHdFFJbUFFVUFBQUVHQWJWdDVnQVhBTEFBUlZpd0Z5OGJzUmNZUGxteEtnajBzRERRTURFQS8vOEFIQUFBQlIwSDJnSW1BQ1VBQUFFSEFiUUF4d0VHQUJjQXNBQkZXTEFGTHh1eEJSdytXYkVNRFBTd0ZkQXdNUUQvL3dCdC8rd0Q2Z2FsQWlZQVJRQUFBUVlCdEd6UkFCY0FzQUJGV0xBWEx4dXhGeGcrV2JFcUNQU3dNOUF3TVFELy93QWMvcUlGSFFjMkFpWUFKUUFBQUNjQW5RREpBVFlCQndDc0JRSUFBQUFVQUxBQVJWaXdCQzhic1FRY1BsbXhEd2IwTURILy93QnQvcUlENmdZQUFpWUFSUUFBQUNZQW5XNEFBUWNBckFSS0FBQUFGQUN3QUVWWXNCY3ZHN0VYR0Q1WnNTMEI5REF4Ly84QUhBQUFCUjBIdHdJbUFDVUFBQUVIQWJNQTZnRXRBQmNBc0FCRldMQUVMeHV4QkJ3K1diRU9CL1N3RzlBd01RRC8vd0J0Lyt3RDZnYUNBaVlBUlFBQUFRY0Jzd0NQLy9nQUZ3Q3dBRVZZc0Jjdkc3RVhHRDVac1N3RTlMQTUwREF4QVAvL0FCd0FBQVVkQjdjQ0pnQWxBQUFCQndHNEFPb0JMUUFYQUxBQVJWaXdCQzhic1FRY1BsbXhEZ2Ywc0J6UU1ERUEvLzhBYmYvc0Erb0dnZ0ltQUVVQUFBRUhBYmdBai8vNEFCY0FzQUJGV0xBWEx4dXhGeGcrV2JFc0JQU3dPdEF3TVFELy93QWNBQUFGSFFoQUFpWUFKUUFBQVFjQnNnRHVBVDBBRndDd0FFVllzQVF2RzdFRUhENVpzUTRIOUxBbjBEQXhBUC8vQUczLzdBUHFCd29DSmdCRkFBQUJCd0d5QUpNQUJ3QVhBTEFBUlZpd0Z5OGJzUmNZUGxteExBVDBzRVhRTURFQS8vOEFIQUFBQlIwSUZRSW1BQ1VBQUFFSEFiRUE3Z0ZGQUJjQXNBQkZXTEFFTHh1eEJCdytXYkVPQi9Td0hOQXdNUUQvL3dCdC8rd0Q2Z2JmQWlZQVJRQUFBUWNCc1FDVEFBOEFGd0N3QUVWWXNCY3ZHN0VYR0Q1WnNTd0U5TEE2MERBeEFQLy9BQnorb2dVZEJ3NENKZ0FsQUFBQUp3Q2dBUFFCTndFSEFLd0ZBZ0FBQUJNQXNBQkZXTEFFTHh1eEJCdytXYkFPM0RBeEFQLy9BRzMrb2dQcUJkZ0NKZ0JGQUFBQUp3Q2dBSmtBQVFFSEFLd0VTZ0FBQUJNQXNBQkZXTEFYTHh1eEZ4ZytXYkFzM0RBeEFQLy9BS24rb2dSR0JiQUNKZ0FwQUFBQUJ3Q3NCTUFBQVAvL0FGMytvZ1B6QkU0Q0pnQkpBQUFBQndDc0JJd0FBUC8vQUtrQUFBUkdCOFlDSmdBcEFBQUJCd0NxQkxrQlVnQVVBTEFBUlZpd0JpOGJzUVljUGxteERBajBNREgvL3dCZC8rd0Q4d2FFQWlZQVNRQUFBUWNBcWdTREFCQUFGQUN3QUVWWXNBZ3ZHN0VJR0Q1WnNSNEI5REF4Ly84QXFRQUFCRVlITGdJbUFDa0FBQUVIQUtRQWtBRkdBQlFBc0FCRldMQUdMeHV4Qmh3K1diRVBCUFF3TWYvL0FGMy83QVB6QmV3Q0pnQkpBQUFCQmdDa1dnUUFGQUN3QUVWWXNBZ3ZHN0VJR0Q1WnNTRUI5REF4Ly84QXFRQUFCT1lIendJbUFDa0FBQUVIQWJjQWpnRTZBQmNBc0FCRldMQUhMeHV4Qnh3K1diRVBEUFN3RmRBd01RRC8vd0JkLyt3RXNBYU9BaVlBU1FBQUFRWUJ0MWo1QUJjQXNBQkZXTEFJTHh1eENCZytXYkVoQ1BTd0o5QXdNUUQvLy8vd0FBQUVSZ2ZMQWlZQUtRQUFBUWNCdGdDU0FVa0FGd0N3QUVWWXNBWXZHN0VHSEQ1WnNROE05TEFVMERBeEFQLy8vN3IvN0FQekJva0NKZ0JKQUFBQkJnRzJYQWNBRndDd0FFVllzQWd2RzdFSUdENVpzU0VJOUxBbTBEQXhBUC8vQUtrQUFBUi9CL1lDSmdBcEFBQUJCd0cxQUpNQkp3QVhBTEFBUlZpd0JpOGJzUVljUGxteER3ejBzQlBRTURFQS8vOEFYZi9zQkVrR3RRSW1BRWtBQUFFR0FiVmQ1Z0FYQUxBQVJWaXdDQzhic1FnWVBsbXhId2owc0NYUU1ERUEvLzhBcVFBQUJFWUg1Z0ltQUNrQUFBRUhBYlFBa2dFU0FCY0FzQUJGV0xBR0x4dXhCaHcrV2JFUERQU3dGdEF3TVFELy93QmQvK3dEOHdhbEFpWUFTUUFBQVFZQnRGelJBQmNBc0FCRldMQUlMeHV4Q0JnK1diRWhDUFN3S05Bd01RRC8vd0NwL3FJRVJnZENBaVlBS1FBQUFDY0FuUUNVQVVJQkJ3Q3NCTUFBQUFBVUFMQUFSVml3Qmk4YnNRWWNQbG14RUFiME1ESC8vd0JkL3FJRDh3WUFBaVlBU1FBQUFDWUFuVjRBQVFjQXJBU01BQUFBRkFDd0FFVllzQWd2RzdFSUdENVpzU0FCOURBeC8vOEF0d0FBQWZnSHhnSW1BQzBBQUFFSEFLb0RaQUZTQUJRQXNBQkZXTEFDTHh1eEFodytXYkVFQ1BRd01mLy9BSnNBQUFIZUJvSUNKZ0NNQUFBQkJ3Q3FBMG9BRGdBVUFMQUFSVml3QWk4YnNRSVlQbG14QkFIME1ESC8vd0NqL3FJQmZnV3dBaVlBTFFBQUFBY0FyQU5yQUFELy93Q0YvcUlCYUFYRUFpWUFUUUFBQUFjQXJBTk5BQUQvL3dCMi9xSUZDUVhFQWlZQU13QUFBQWNBckFVWUFBRC8vd0JiL3FJRU5BUk9BaVlBVXdBQUFBY0FyQVNkQUFELy93QjIvK3dGQ1FlOEFpWUFNd0FBQVFjQXFnVVFBVWdBRkFDd0FFVllzQTB2RzdFTkhENVpzUzRJOURBeC8vOEFXLy9zQkRRR2hBSW1BRk1BQUFFSEFLb0VqUUFRQUJRQXNBQkZXTEFFTHh1eEJCZytXYkVxQWZRd01mLy9BSGIvN0FVOUI4VUNKZ0F6QUFBQkJ3RzNBT1VCTUFBWEFMQUFSVml3RFM4YnNRMGNQbG14SXd6MHNDblFNREVBLy84QVcvL3NCTG9HamdJbUFGTUFBQUVHQWJkaStRQVhBTEFBUlZpd0JDOGJzUVFZUGxteEh3ajBzQ1hRTURFQS8vOEFSLy9zQlFrSHdRSW1BRE1BQUFFSEFiWUE2UUUvQUJjQXNBQkZXTEFOTHh1eERSdytXYkVoRFBTd0tOQXdNUUQvLy8vRS8rd0VOQWFKQWlZQVV3QUFBUVlCdG1ZSEFCY0FzQUJGV0xBRUx4dXhCQmcrV2JFZENQU3dKTkF3TVFELy93QjIvK3dGQ1Fmc0FpWUFNd0FBQVFjQnRRRHFBUjBBRndDd0FFVllzQTB2RzdFTkhENVpzU0VNOUxBbjBEQXhBUC8vQUZ2LzdBUlRCclVDSmdCVEFBQUJCZ0cxWitZQUZ3Q3dBRVZZc0FRdkc3RUVHRDVac1IwSTlMQWowREF4QVAvL0FIYi83QVVKQjl3Q0pnQXpBQUFCQndHMEFPa0JDQUFYQUxBQVJWaXdEUzhic1EwY1BsbXhJUXowc0NyUU1ERUEvLzhBVy8vc0JEUUdwUUltQUZNQUFBRUdBYlJtMFFBWEFMQUFSVml3QkM4YnNRUVlQbG14SFFqMHNDYlFNREVBLy84QWR2NmlCUWtIT0FJbUFETUFBQUFuQUowQTZ3RTRBUWNBckFVWUFBQUFGQUN3QUVWWXNBMHZHN0VOSEQ1WnNTSUc5REF4Ly84QVcvNmlCRFFHQUFJbUFGTUFBQUFtQUoxb0FBRUhBS3dFblFBQUFCUUFzQUJGV0xBRUx4dXhCQmcrV2JFZUFmUXdNZi8vQUdYLzdBV2RCeThDSmdDWEFBQUJCd0IxQWQwQk1RQVVBTEFBUlZpd0RTOGJzUTBjUGxteEtBajBNREgvL3dCYi8rd0V1Z1grQWlZQW1BQUFBUWNBZFFGbEFBQUFGQUN3QUVWWXNBUXZHN0VFR0Q1WnNTWUo5REF4Ly84QVpmL3NCWjBITHdJbUFKY0FBQUVIQUVRQlRnRXhBQlFBc0FCRldMQU5MeHV4RFJ3K1diRW5DUFF3TWYvL0FGdi83QVM2QmY0Q0pnQ1lBQUFCQndCRUFOWUFBQUFVQUxBQVJWaXdCQzhic1FRWVBsbXhKUW4wTURILy93QmwvK3dGblFlMUFpWUFsd0FBQVFjQXFnVU1BVUVBRkFDd0FFVllzQTB2RzdFTkhENVpzVFFJOURBeC8vOEFXLy9zQkxvR2hBSW1BSmdBQUFFSEFLb0VsQUFRQUJRQXNBQkZXTEFFTHh1eEJCZytXYkV5QWZRd01mLy9BR1gvN0FXZEJ4MENKZ0NYQUFBQkJ3Q2tBT01CTlFBVUFMQUFSVml3RFM4YnNRMGNQbG14S1FUME1ESC8vd0JiLyt3RXVnWHNBaVlBbUFBQUFRWUFwR3NFQUJRQXNBQkZXTEFFTHh1eEJCZytXYkVuQWZRd01mLy9BR1grb2dXZEJqY0NKZ0NYQUFBQUJ3Q3NCUWtBQVAvL0FGditvZ1M2QkxBQ0pnQ1lBQUFBQndDc0JKc0FBUC8vQUl6K29nU3FCYkFDSmdBNUFBQUFCd0NzQk80QUFQLy9BSWorb2dQY0JEb0NKZ0JaQUFBQUJ3Q3NCRkVBQVAvL0FJei83QVNxQjdvQ0pnQTVBQUFCQndDcUJPa0JSZ0FVQUxBQVJWaXdDaThic1FvY1BsbXhFd2owTURILy93Q0kvK3dEM0FhRUFpWUFXUUFBQVFjQXFnU0ZBQkFBRkFDd0FFVllzQWN2RzdFSEdENVpzUkVCOURBeC8vOEFqUC9zQmgwSFFBSW1BSmtBQUFFSEFIVUIxQUZDQUJRQXNBQkZXTEFhTHh1eEdodytXYkVkQ1BRd01mLy9BSWovN0FVUEJlb0NKZ0NhQUFBQkJ3QjFBV1AvN0FBVUFMQUFSVml3RXk4YnNSTVlQbG14SEFuME1ESC8vd0NNLyt3R0hRZEFBaVlBbVFBQUFRY0FSQUZGQVVJQUZBQ3dBRVZZc0JJdkc3RVNIRDVac1J3STlEQXgvLzhBaVAvc0JROEY2Z0ltQUpvQUFBRUhBRVFBMVAvc0FCUUFzQUJGV0xBTkx4dXhEUmcrV2JFYkNmUXdNZi8vQUl6LzdBWWRCOFlDSmdDWkFBQUJCd0NxQlFNQlVnQVVBTEFBUlZpd0dpOGJzUm9jUGxteEtRajBNREgvL3dDSS8rd0ZEd1p3QWlZQW1nQUFBUWNBcWdTUy8vd0FGQUN3QUVWWXNCTXZHN0VUR0Q1WnNTZ0I5REF4Ly84QWpQL3NCaDBITGdJbUFKa0FBQUVIQUtRQTJnRkdBQlFBc0FCRldMQVNMeHV4RWh3K1diRWVCUFF3TWYvL0FJai83QVVQQmRnQ0pnQ2FBQUFCQmdDa2FmQUFGQUN3QUVWWXNCTXZHN0VUR0Q1WnNSMEI5REF4Ly84QWpQNmlCaDBHQWdJbUFKa0FBQUFIQUt3RkNRQUEvLzhBaVA2aUJROEVrQUltQUpvQUFBQUhBS3dFVndBQS8vOEFELzZpQkxzRnNBSW1BRDBBQUFBSEFLd0V1d0FBLy84QUZ2NEZBN0FFT2dJbUFGMEFBQUFIQUt3RkhQOWovLzhBRHdBQUJMc0h1Z0ltQUQwQUFBRUhBS29FdHdGR0FCUUFzQUJGV0xBSUx4dXhDQncrV2JFSkNQUXdNZi8vQUJiK1N3T3dCb1FDSmdCZEFBQUJCd0NxQkVvQUVBQVVBTEFBUlZpd0R5OGJzUThZUGxteEVBSDBNREgvL3dBUEFBQUV1d2NpQWlZQVBRQUFBUWNBcEFDT0FUb0FGQUN3QUVWWXNBRXZHN0VCSEQ1WnNRd0U5REF4Ly84QUZ2NUxBN0FGN0FJbUFGMEFBQUVHQUtRaEJBQVVBTEFBUlZpd0FTOGJzUUVZUGxteEV3SDBNREVBQWdCZi8rd0VyQVlBQUJjQUlnQi9BTEFVTDdBQVJWaXdEUzhic1EwWVBsbXdBRVZZc0FNdkc3RURFRDVac0FCRldMQUdMeHV4QmhBK1diSVBGQUZkc2k4VUFWMnlFd01VRVJJNXNCTXZzaEFCQ2l0WUlkZ2I5Rm13QWRDeUJBWU5FUkk1c2c4TkJoRVNPYkFURUxBVzBMQUdFTEliQVFvcldDSFlHL1Jac0EwUXNpQUJDaXRZSWRnYjlGa3dNUUVqRVNNbkJpTWlBalUxTkJJek1oY1JJVFVoTlRNVk13RVVGak15TnhFbUl5SUdCS3k4cWdsdnhyenQ3TCsrYi83NUFRZTV2UHhzbUlhd1VWT3NpSmdFMHZzdWRJZ0JOUGdPK1FFdmdnRUdsNWVYL0tpNDBKNEI4Wm5TQVAvL0FGLyt6UVNzQmdBQUpnQklBQUFBSndIZUFhRUNSd0VIQUVNQW4vOWtBQWdBc2k4ZUFWMHdNZi8vQUxMK21BVkVCYkFDSmdIakFBQUFCd0d3QkNQLy8vLy9BSnorbVFTQkJEb0NKZ0R3QUFBQUJ3R3dBMkFBQVAvL0FLbittUVdwQmJBQ0pnQXNBQUFBQndHd0JJZ0FBUC8vQUp6K21RU2lCRG9DSmdEekFBQUFCd0d3QTRFQUFQLy9BREgrbVFTWEJiQUNKZ0E0QUFBQUJ3R3dBajhBQVAvL0FDaittUU93QkRvQ0pnRDFBQUFBQndHd0FjWUFBUC8vQURuK21RVDRCYkFDSmdBOEFBQUFCd0d3QTljQUFQLy9BQ24rbVFRR0JEb0NKZ0JjQUFBQUJ3R3dBdVVBQVAvL0FKYittUVZtQmJBQ0pnRGdBQUFBQndHd0JFVUFBUC8vQUdmK21RUmVCRHNDSmdENEFBQUFCd0d3QXowQUFQLy9BSmIrbVFUSUJiQUNKZ0RnQUFBQUJ3R3dBdjRBQVAvL0FHZittUU85QkRzQ0pnRDRBQUFBQndHd0FmVUFBUC8vQUxIK21RUXdCYkFDSmdDd0FBQUFCd0d3QU84QUFQLy9BSnIrbVFOSEJEb0NKZ0RyQUFBQUJ3R3dBTlVBQVAvL0FCdittUWVDQmJBQ0pnRFpBQUFBQndHd0JtRUFBUC8vQUJYK21RWTlCRG9DSmdEdEFBQUFCd0d3QlJ3QUFQLy9BRC8rVlFXOUJjTUNKZ0UvQUFBQUJ3R3dBd2IvdlAvLy85NytXUVJqQkU0Q0pnRkFBQUFBQndHd0FnSC93UC8vQUl3QUFBUGZCZ0FDQmdCTUFBQUFBdi9VQUFBRXNRV3dBQklBR3dCaEFMQUFSVml3RHk4YnNROGNQbG13QUVWWXNBb3ZHN0VLRUQ1WnNnSUtEeEVTT2JBQ0w3SU9Ed0lSRWptd0RpK3lDd0VLSzFnaDJCdjBXYkFCMExBT0VMQVIwTEFDRUxJVEFRb3JXQ0hZRy9SWnNBb1FzaFFCQ2l0WUlkZ2I5Rmt3TVFFakZTRVdCQlVVQkFjaEVTTTFNelV6RlRNREVTRXlOalUwSmljQ1VPMEJhdVFCQVA3KzMvM1R6OC9BN2UwQlg0K2ZtWTBFVVBJRDVNVEY2Z1FFVUpmSnlmM1ovZDJZZ0h1T0FnQUMvOVFBQUFTeEJiQUFFZ0FiQUdFQXNBQkZXTEFRTHh1eEVCdytXYkFBUlZpd0NpOGJzUW9RUGxteUFnb1FFUkk1c0FJdnNoRUNFQkVTT2JBUkw3SUJBUW9yV0NIWUcvUlpzQXZRc0JFUXNBN1FzQUlRc2hNQkNpdFlJZGdiOUZtd0NoQ3lGQUVLSzFnaDJCdjBXVEF4QVNNVklSWUVGUlFFQnlFUkl6VXpOVE1WTXdNUklUSTJOVFFtSndKUTdRRnE1QUVBL3Y3Zi9kUFB6OER0N1FGZmo1K1pqUVJROGdQa3hNWHFCQVJRbDhuSi9kbjkzWmlBZTQ0Q0FBRUFBd0FBQkRBRnNBQU5BRTRBc0FCRldMQUlMeHV4Q0J3K1diQUFSVml3QWk4YnNRSVFQbG15RFFnQ0VSSTVzQTB2c25vTkFWMnlBQUVLSzFnaDJCdjBXYkFFMExBTkVMQUcwTEFJRUxJS0FRb3JXQ0hZRy9SWk1ERUJJUkVqRVNNMU14RWhGU0VSSVFKLy92UEJycTREZi8xQ0FRMENyUDFVQXF5WEFtMmUvakVBQUFILy9BQUFBMGNFT2dBTkFFa0FzQUJGV0xBSUx4dXhDQmcrV2JBQVJWaXdBaThic1FJUVBsbXlEUWdDRVJJNXNBMHZzZ0FCQ2l0WUlkZ2I5Rm13Qk5Dd0RSQ3dCdEN3Q0JDeUNnRUtLMWdoMkJ2MFdUQXhBU0VSSXhFak5UTVJJUlVoRVNFQ2VQN2N1cDZlQXEzK0RRRWtBZC8rSVFIZmx3SEVtZjdWQUFFQUN3QUFCVEVGc0FBVUFINEFzQUJGV0xBSUx4dXhDQncrV2JBQVJWaXdFQzhic1JBY1BsbXdBRVZZc0FJdkc3RUNFRDVac0FCRldMQVRMeHV4RXhBK1diSU9DQUlSRWptd0RpK3lMdzRCWGJMUERnRmRzZ0VCQ2l0WUlkZ2I5Rm15QndnQ0VSSTVzQWN2c2dRQkNpdFlJZGdiOUZtd0J4Q3dDdEN3QkJDd0ROQ3lFZ0VPRVJJNU1ERUJJeEVqRVNNMU16VXpGU0VWSVJFekFUTUJBU01DTjdIQXU3dkFBUUgrLzVZQi9lLzkxQUpWNndLTy9YSUVONWZpNHBmKzl3S0MvVDc5RWdBQUFmL1RBQUFFS0FZQUFCUUFkQUN3QUVWWXNBZ3ZHN0VJSGo1WnNBQkZXTEFRTHh1eEVCZytXYkFBUlZpd0FpOGJzUUlRUGxtd0FFVllzQk12RzdFVEVENVpzZzRRQWhFU09iQU9MN0lCQVFvcldDSFlHL1Jac2djSUVCRVNPYkFITDdJRUFRb3JXQ0hZRy9SWnNBY1FzQXJRc0FRUXNBelFzaElCRGhFU09UQXhBU01SSXhFak5UTTFNeFV6RlNNUk13RXpBUUVqQWVDQXV0UFR1dS92ZmdFNzIvNkdBYTdiQWZYK0N3VEJsNmlvbC8zTkFheitFLzJ6QVAvL0FMSCttd1d5QnhvQ0pnRGJBQUFBSndDZ0FURUJRd0VIQUJBRWZ2KzlBQk1Bc0FCRldMQUlMeHV4Q0J3K1diQU4zREF4QVAvL0FKeittd1MxQmNRQ0pnRHZBQUFBSndDZ0FLTC83UUVIQUJBRGdmKzlBQk1Bc0FCRldMQUlMeHV4Q0JnK1diQU4zREF4QVAvL0FLbittd1c3QmJBQ0pnQXNBQUFBQndBUUJJZi92Zi8vQUp6K213UzBCRG9DSmdEekFBQUFCd0FRQTREL3ZmLy9BS24rbXdiNEJiQUNKZ0F4QUFBQUJ3QVFCY1QvdmYvL0FKMyttd1lHQkRvQ0pnRHlBQUFBQndBUUJOTC92Zi8vQUMvK213V29CYkFDSmdEY0FBQUFCd0FRQkhUL3ZmLy9BQ3orbXdTM0JEb0NKZ0R4QUFBQUJ3QVFBNFAvdlFBQkFBOEFBQVM3QmJBQURnQldzZ29QRUJFU09RQ3dBRVZZc0Fndkc3RUlIRDVac0FCRldMQUxMeHV4Q3h3K1diQUFSVml3QWk4YnNRSVFQbG15QmdnQ0VSSTVzQVl2c2dVQkNpdFlJZGdiOUZtd0FOQ3lDZ2dDRVJJNXNBWVFzQTdRTURFQkl4RWpFU00xTXdFekFRRXpBVE1EcHVIQTI1VCtVZHdCZWdGODJ2NVJtZ0lKL2ZjQ0NaY0RFUDBsQXR2ODhBQUFBUUF1L21BRDN3UTZBQTRBWTdJS0R4QVJFamtBc0FCRldMQUlMeHV4Q0JnK1diQUFSVml3Q3k4YnNRc1lQbG13QUVWWXNBSXZHN0VDRWo1WnNBQkZXTEFBTHh1eEFCQStXYkFBUlZpd0JDOGJzUVFRUGxteUJnRUtLMWdoMkJ2MFdiSUtDd0FSRWptd0RkQ3dEdEF3TVFVakVTTVJJelV6QVRNQkFUTUJNd05LNXJyY3YvNmh2UUVmQVJpOS9xUElDLzVyQVpXWEE2NzgyZ01tL0ZJQUFBRUFPUUFBQk00RnNBQVJBR01Bc0FCRldMQUxMeHV4Q3h3K1diQUFSVml3RGk4YnNRNGNQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFGTHh1eEJSQStXYklSQ3dJUkVqbXdFUyt5QUFFS0sxZ2gyQnYwV2JJRUN3SVJFam13QjlDd0VSQ3dDZEN5RFFzQ0VSSTVNREVCSXdFakFRRWpBU00xTXdFekFRRXpBVE1EeEtRQnJ1VCttdjZZNHdHdm9KSCthK0VCWHdGZDR2NXJsZ0tlL1dJQ09QM0lBcDZYQW52OTBnSXUvWVVBQVFBcEFBQUR5Z1E2QUJFQVl3Q3dBRVZZc0Fzdkc3RUxHRDVac0FCRldMQU9MeHV4RGhnK1diQUFSVml3QWk4YnNRSVFQbG13QUVWWXNBVXZHN0VGRUQ1WnNoRU9BaEVTT2JBUkw3SUFBUW9yV0NIWUcvUlpzZ1FPQWhFU09iQUgwTEFSRUxBSjBMSU5EZ0lSRWprd01RRWpBU01EQXlNQkl6VXpBVE1URXpNQk13TThzd0ZCMXZyNjF3RkJxcDcrMXRidDhOaisxcWNCNGY0ZkFaWCthd0hobHdIQy9uVUJpLzQrLy84QVkvL3NBK3dFVFFJR0FMNEFBUC8vQUJJQUFBUXZCYkFDSmdBcUFBQUFCd0hlLzRQK2YvLy9BSkFDaXdYSkF5SUFSZ0dYaEFCbVprQUEvLzhBWFFBQUJETUZ4QUlHQUJZQUFQLy9BRjcvN0FQNUJjUUNCZ0FYQUFELy93QTFBQUFFVUFXd0FnWUFHQUFBLy84QW12L3NCQzBGc0FJR0FCa0FBUC8vQUdULy93UDRCY1FBQmdBZEFBRC8vd0NILyt3RUhnWEVBQVlBRkJRQS8vOEFldi9zQk53SFZRSW1BQ3NBQUFFSEFIVUJ2Z0ZYQUJRQXNBQkZXTEFMTHh1eEN4dytXYkVpQ1BRd01mLy9BR0QrVmdQeUJmNENKZ0JMQUFBQkJ3QjFBVXNBQUFBVUFMQUFSVml3QXk4YnNRTVlQbG14SnduME1ESC8vd0NwQUFBRkNBYzBBaVlBTWdBQUFRY0FSQUZtQVRZQUZBQ3dBRVZZc0FZdkc3RUdIRDVac1FzSTlEQXgvLzhBakFBQUE5OEYvZ0ltQUZJQUFBRUhBRVFBekFBQUFCUUFzQUJGV0xBREx4dXhBeGcrV2JFVENmUXdNZi8vQUJ3QUFBVWRCeUFDSmdBbEFBQUJCd0NyQkcwQk1nQVhBTEFBUlZpd0JDOGJzUVFjUGxteERBajBzQkRRTURFQS8vOEFPZi9zQStvRjZ3SW1BRVVBQUFFSEFLc0VFdi85QUJjQXNBQkZXTEFYTHh1eEZ4ZytXYkVxQ2ZTd0x0QXdNUUQvL3dCZkFBQUVSZ2NzQWlZQUtRQUFBUWNBcXdRNEFUNEFGd0N3QUVWWXNBWXZHN0VHSEQ1WnNRMEk5TEFSMERBeEFQLy9BQ24vN0FQekJlc0NKZ0JKQUFBQkJ3Q3JCQUwvL1FBWEFMQUFSVml3Q0M4YnNRZ1lQbG14SHduMHNDUFFNREVBLy8vL0NnQUFBZW9ITEFJbUFDMEFBQUVIQUtzQzR3RStBQmNBc0FCRldMQUNMeHV4QWh3K1diRUZDUFN3Q2RBd01RRC8vLzd3QUFBQjBBWHBBaVlBakFBQUFRY0Fxd0xKLy9zQUZ3Q3dBRVZZc0FJdkc3RUNHRDVac1FVSjlMQUowREF4QVAvL0FIYi83QVVKQnlJQ0pnQXpBQUFCQndDckJJOEJOQUFYQUxBQVJWaXdEUzhic1EwY1BsbXhJUWowc0NYUU1ERUEvLzhBTS8vc0JEUUY2d0ltQUZNQUFBRUhBS3NFRFAvOUFCY0FzQUJGV0xBRUx4dXhCQmcrV2JFZENmU3dJZEF3TVFELy93QlZBQUFFeVFjZ0FpWUFOZ0FBQVFjQXF3UXVBVElBRndDd0FFVllzQVF2RzdFRUhENVpzUmtJOUxBZDBEQXhBUC8vLzRzQUFBS1hCZXNDSmdCV0FBQUJCd0NyQTJULy9RQVhBTEFBUlZpd0N5OGJzUXNZUGxteER3bjBzQlBRTURFQS8vOEFqUC9zQktvSElBSW1BRGtBQUFFSEFLc0VhQUV5QUJjQXNBQkZXTEFKTHh1eENSdytXYkVVQ1BTd0dOQXdNUUQvL3dBci8rd0QzQVhyQWlZQVdRQUFBUWNBcXdRRS8vMEFGd0N3QUVWWXNBY3ZHN0VIR0Q1WnNSSUo5TEFXMERBeEFQLy8vem9BQUFUU0JqOEFKZ0RQWkFBQUJ3Q3Qvb01BQVAvL0FLbitvZ1NJQmJBQ0pnQW1BQUFBQndDc0JMb0FBUC8vQUl6K29nUWdCZ0FDSmdCR0FBQUFCd0NzQktzQUFQLy9BS24rb2dUR0JiQUNKZ0FvQUFBQUJ3Q3NCTGtBQVAvL0FGLytvZ1B3QmdBQ0pnQklBQUFBQndDc0JMMEFBUC8vQUtuOS93VEdCYkFDSmdBb0FBQUFCd0dpQVdYK29QLy9BRi85L3dQd0JnQUNKZ0JJQUFBQUJ3R2lBV24rb1AvL0FLbitvZ1VJQmJBQ0pnQXNBQUFBQndDc0JSOEFBUC8vQUl6K29nUGZCZ0FDSmdCTUFBQUFCd0NzQktFQUFQLy9BS2tBQUFVRkJ5NENKZ0F2QUFBQkJ3QjFBWHNCTUFBVUFMQUFSVml3QlM4YnNRVWNQbG14RGdqME1ESC8vd0NOQUFBRURBYy9BaVlBVHdBQUFRY0FkUUZFQVVFQUNRQ3dCUyt3RDl3d01RRC8vd0NwL3FJRkJRV3dBaVlBTHdBQUFBY0FyQVRvQUFELy93Q04vcUlFREFZQUFpWUFUd0FBQUFjQXJBUmxBQUQvL3dDcC9xSUVIQVd3QWlZQU1BQUFBQWNBckFUQUFBRC8vd0NHL3FJQllRWUFBaVlBVUFBQUFBY0FyQU5PQUFELy93Q3AvcUlHVWdXd0FpWUFNUUFBQUFjQXJBWFNBQUQvL3dDTC9xSUdlQVJPQWlZQVVRQUFBQWNBckFYV0FBRC8vd0NwL3FJRkNBV3dBaVlBTWdBQUFBY0FyQVVrQUFELy93Q00vcUlEM3dST0FpWUFVZ0FBQUFjQXJBU0hBQUQvL3dDcEFBQUV3QWRBQWlZQU5BQUFBUWNBZFFGOEFVSUFGQUN3QUVWWXNBTXZHN0VESEQ1WnNSWUk5REF4Ly84QWpQNWdCQjRGOVFJbUFGUUFBQUVIQUhVQmsvLzNBQlFBc0FCRldMQU1MeHV4REJnK1diRWRDZlF3TWYvL0FLaitvZ1RKQmJBQ0pnQTJBQUFBQndDc0JMY0FBUC8vQUlMK29nS1hCRTRDSmdCV0FBQUFCd0NzQTBvQUFQLy9BRkQrb2dSeUJjUUNKZ0EzQUFBQUJ3Q3NCTWtBQVAvL0FGLytvZ083QkU0Q0pnQlhBQUFBQndDc0JJY0FBUC8vQURIK29nU1hCYkFDSmdBNEFBQUFCd0NzQkxvQUFQLy9BQW4rb2dKV0JVQUNKZ0JZQUFBQUJ3Q3NCQmtBQVAvL0FCd0FBQVQ5Qnk0Q0pnQTZBQUFCQndDa0FMUUJSZ0FVQUxBQVJWaXdCaThic1FZY1BsbXhDZ1QwTURILy93QWhBQUFEdWdYakFpWUFXZ0FBQVFZQXBCMzdBQlFBc0FCRldMQUJMeHV4QVJnK1diRUtBZlF3TWYvL0FCeitvZ1Q5QmJBQ0pnQTZBQUFBQndDc0JPUUFBUC8vQUNIK29nTzZCRG9DSmdCYUFBQUFCd0NzQkUwQUFQLy9BRDMrb2didEJiQUNKZ0E3QUFBQUJ3Q3NCZThBQVAvL0FDditvZ1hUQkRvQ0pnQmJBQUFBQndDc0JWTUFBUC8vQUZiK29nUjZCYkFDSmdBK0FBQUFCd0NzQkxvQUFQLy9BRmorb2dPekJEb0NKZ0JlQUFBQUJ3Q3NCR0lBQVAvLy9uai83QVZQQmRZQUpnQXpSZ0FBQndGYS9na0FBUC8vQUJNQUFBUndCUndDSmdHNkFBQUFCd0N0Lzl6KzNmLy8vNThBQUFQcUJSOEFKZ0crUEFBQUJ3Q3QvdWorNFAvLy83d0FBQVNVQlJ3QUpnSEJQQUFBQndDdC93WCszZi8vLzhBQUFBR05CUjRBSmdIQ1BBQUFCd0N0L3duKzMvLy8vOS8vOEFSa0JSd0FKZ0hJQ2dBQUJ3Q3QveWorM2YvLy8xY0FBQVJZQlJ3QUpnSFNQQUFBQndDdC9xRCszZi8vLy9nQUFBU0lCUnNBSmdIekNnQUFCd0N0LzBIKzNQLy9BQk1BQUFSd0JJMENCZ0c2QUFELy93Q0tBQUFEN3dTTkFnWUJ1d0FBLy84QWlnQUFBNjRFalFJR0FiNEFBUC8vQUVjQUFBUGdCSTBDQmdIVEFBRC8vd0NLQUFBRVdBU05BZ1lCd1FBQS8vOEFsd0FBQVZFRWpRSUdBY0lBQVAvL0FJb0FBQVJYQkkwQ0JnSEVBQUQvL3dDS0FBQUZkd1NOQWdZQnhnQUEvLzhBWVAvd0JGb0VuUUlHQWNnQUFQLy9BSW9BQUFRYkJJMENCZ0hKQUFELy93QW9BQUFEL1FTTkFnWUJ6UUFBLy84QURRQUFCQndFalFJR0FkSUFBUC8vQUNZQUFBUXhCSTBDQmdIUkFBRC8vLyswQUFBQ1BRWGpBaVlCd2dBQUFRY0FhdjlPQUI0QUZ3Q3dBRVZZc0FJdkc3RUNHajVac1FzQzlMQVUwREF4QVAvL0FBMEFBQVFjQmVNQ0pnSFNBQUFCQmdCcWJSNEFGd0N3QUVWWXNBZ3ZHN0VJR2o1WnNSQUM5TEFaMERBeEFQLy9BSW9BQUFPdUJlTUNKZ0crQUFBQkJnQnFjUjRBRndDd0FFVllzQVl2RzdFR0dqNVpzUk1DOUxBYzBEQXhBUC8vQUlvQUFBT0ZCaHdDSmdIcUFBQUJCd0IxQVRRQUhnQVVBTEFBUlZpd0JDOGJzUVFhUGxteENBYjBNREgvL3dCRC8vQUQzUVNkQWdZQnpBQUEvLzhBbHdBQUFWRUVqUUlHQWNJQUFQLy8vN1FBQUFJOUJlTUNKZ0hDQUFBQkJ3QnEvMDRBSGdBWEFMQUFSVml3QWk4YnNRSWFQbG14Q3dMMHNCVFFNREVBLy84QUsvL3dBMDBFalFJR0FjTUFBUC8vQUlvQUFBUlhCaHdDSmdIRUFBQUJCd0IxQVNVQUhnQVVBTEFBUlZpd0JTOGJzUVVhUGxteER3YjBNREgvL3dBaS8rd0VDd1gyQWlZQ0FRQUFBUVlBb0djZkFCUUFzQUJGV0xBQ0x4dXhBaG8rV2JFVUNQUXdNZi8vQUJNQUFBUndCSTBDQmdHNkFBRC8vd0NLQUFBRDd3U05BZ1lCdXdBQS8vOEFpZ0FBQTRVRWpRSUdBZW9BQVAvL0FJb0FBQU91QkkwQ0JnRytBQUQvL3dDS0FBQUVZUVgyQWlZQi9nQUFBUWNBb0FESkFCOEFGQUN3QUVWWXNBZ3ZHN0VJR2o1WnNRMEk5REF4Ly84QWlnQUFCWGNFalFJR0FjWUFBUC8vQUlvQUFBUllCSTBDQmdIQkFBRC8vd0JnLy9BRVdnU2RBZ1lCeUFBQS8vOEFpZ0FBQkVRRWpRSUdBZThBQVAvL0FJb0FBQVFiQkkwQ0JnSEpBQUQvL3dCZy8vQUVNQVNkQWdZQnZBQUEvLzhBS0FBQUEvMEVqUUlHQWMwQUFQLy9BQ1lBQUFReEJJMENCZ0hSQUFBQUFRQkgvbEFEMUFTZEFDa0FtZ0N3QUVWWXNBb3ZHN0VLR2o1WnNBQkZXTEFaTHh1eEdSQStXYkFBUlZpd0dDOGJzUmdTUGxtd0NoQ3lBd0VLSzFnaDJCdjBXYklHQ2hrUkVqbXlKeGtLRVJJNWZMQW5MeGl5OENjQlhiSUFKd0Z4c3FBbkFWMjBZQ2R3SndKZHNqQW5BWEcwWUNkd0p3SnhzaVlCQ2l0WUlkZ2I5Rm15RUNZbkVSSTVzQmtRc0JiUXNoMFpDaEVTT2JBWkVMSWdBUW9yV0NIWUcvUlpNREVCTkNZaklnWVZJelEyTXpJV0ZSUUdCeFlXRlJRR0J4RWpFU1ltTlRNV0ZqTXlOalUwSlNNMU16WURDSXA5Ym9HNjdielQ3bTVuZG5ITHI3cWp0cmtGZzNtSWt2Ny9uWnp2QTFCVVhWaFBqcldvbGxhTktTU1NXNHl2RXY1YkFhY1VyWWhXWUdCWXdRV1lCUUFBQVFDSy9wa0UrZ1NOQUE4QVhRQ3dBUyt3QUVWWXNBa3ZHN0VKR2o1WnNBQkZXTEFETHh1eEF4QStXYkFBUlZpd0JpOGJzUVlRUGxteUN3TUpFUkk1ZkxBTEx4aXlvQXNCWGJJRUFRb3JXQ0hZRy9SWnNBa1FzQXpRc0FNUXNnNEJDaXRZSWRnYjlGa3dNUUVqRVNNUklSRWpFVE1SSVJFekVUTUUrcnFoL2FTNXVRSmN1YUwrbVFGbkFmTCtEZ1NOL2YwQ0Evd01BQUFCQUdEK1ZnUXdCSjBBSHdCWUFMQUFSVml3RGk4YnNRNGFQbG13QUVWWXNBTXZHN0VERUQ1WnNBQkZXTEFGTHh1eEJSSStXYkFERUxBRzBMQU9FTEFTMExBT0VMSVZBUW9yV0NIWUcvUlpzQU1Rc2h3QkNpdFlJZGdiOUZtd0F4Q3dIOUF3TVFFR0JnY1JJeEVtQWpVMU5EWTJNeklXRnlNbUppTWlCZ2NWRkJZek1qWTNCREFVeTZtNnQ5ZDc1NWpNOXhPNUVvMSttYWNCbjVlSGpSUUJlYWpIRlA1Z0FhSWVBUjdqWWFUNWlOTzdnblRMdldxOXoyK0QvLzhBRFFBQUJCd0VqUUlHQWRJQUFQLy9BQUwrVVFWckJKMENKZ0lYQUFBQUJ3R3dBcnovdVAvL0FJb0FBQVJoQmRZQ0pnSCtBQUFCQndCd0FKd0FKZ0FUQUxBQVJWaXdDQzhic1FnYVBsbXdDOXd3TVFELy93QWkvK3dFQ3dYV0FpWUNBUUFBQVFZQWNEb21BQk1Bc0FCRldMQVJMeHV4RVJvK1diQVQzREF4QVAvL0FHQUFBQVVHQkkwQ0JnSHhBQUQvL3dBYy9rOEZIUVd3QWlZQUpRQUFBQWNBb3dGOEFBRC8vd0J0L2s4RDZnUk9BaVlBUlFBQUFBY0Fvd0RFQUFELy93Q3AvbGtFUmdXd0FpWUFLUUFBQUFjQW93RTZBQXIvL3dCZC9rOEQ4d1JPQWlZQVNRQUFBQWNBb3dFR0FBQUFBQUFBQUEwQW9nQURBQUVFQ1FBQUFGNEFBQUFEQUFFRUNRQUJBQXdBWGdBREFBRUVDUUFDQUE0QWFnQURBQUVFQ1FBREFBd0FYZ0FEQUFFRUNRQUVBQXdBWGdBREFBRUVDUUFGQUN3QWVBQURBQUVFQ1FBR0FCd0FwQUFEQUFFRUNRQUhBRUFBd0FBREFBRUVDUUFKQUF3QkFBQURBQUVFQ1FBTEFCUUJEQUFEQUFFRUNRQU1BQ1lCSUFBREFBRUVDUUFOQUZ3QlJnQURBQUVFQ1FBT0FGUUJvZ0JEQUc4QWNBQjVBSElBYVFCbkFHZ0FkQUFnQURJQU1BQXhBREVBSUFCSEFHOEFid0JuQUd3QVpRQWdBRWtBYmdCakFDNEFJQUJCQUd3QWJBQWdBRklBYVFCbkFHZ0FkQUJ6QUNBQVVnQmxBSE1BWlFCeUFIWUFaUUJrQUM0QVVnQnZBR0lBYndCMEFHOEFVZ0JsQUdjQWRRQnNBR0VBY2dCV0FHVUFjZ0J6QUdrQWJ3QnVBQ0FBTWdBdUFEQUFNQUF4QURFQU1BQXhBRHNBSUFBeUFEQUFNUUEwQUZJQWJ3QmlBRzhBZEFCdkFDMEFVZ0JsQUdjQWRRQnNBR0VBY2dCU0FHOEFZZ0J2QUhRQWJ3QWdBR2tBY3dBZ0FHRUFJQUIwQUhJQVlRQmtBR1VBYlFCaEFISUFhd0FnQUc4QVpnQWdBRWNBYndCdkFHY0FiQUJsQUM0QVJ3QnZBRzhBWndCc0FHVUFSd0J2QUc4QVp3QnNBR1VBTGdCakFHOEFiUUJEQUdnQWNnQnBBSE1BZEFCcEFHRUFiZ0FnQUZJQWJ3QmlBR1VBY2dCMEFITUFid0J1QUV3QWFRQmpBR1VBYmdCekFHVUFaQUFnQUhVQWJnQmtBR1VBY2dBZ0FIUUFhQUJsQUNBQVFRQndBR0VBWXdCb0FHVUFJQUJNQUdrQVl3QmxBRzRBY3dCbEFDd0FJQUJXQUdVQWNnQnpBR2tBYndCdUFDQUFNZ0F1QURBQWFBQjBBSFFBY0FBNkFDOEFMd0IzQUhjQWR3QXVBR0VBY0FCaEFHTUFhQUJsQUM0QWJ3QnlBR2NBTHdCc0FHa0FZd0JsQUc0QWN3QmxBSE1BTHdCTUFFa0FRd0JGQUU0QVV3QkZBQzBBTWdBdUFEQUFBd0FBQUFBQUFQOXFBR1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBSUFDQUFDLy84QUR3QUJBQUFBREFBQUFBQUFBQUFDQUY0QUpRQStBQUVBUlFCZUFBRUFlUUI1QUFNQWdRQ0JBQUVBZ3dDREFBRUFoZ0NHQUFFQWlRQ0pBQUVBaXdDVkFBRUFsd0NjQUFFQW93Q2pBQU1BcHdDc0FBTUFzQUN3QUFFQXVRQzZBQUVBdmdDK0FBRUF3QURBQUFFQXdnRENBQUVBeGdER0FBRUF5Z0RLQUFFQXpBRE5BQUVBendEUUFBRUEwZ0RTQUFFQTJRRGRBQUVBNEFEZ0FBRUE1QURrQUFFQTVnRG9BQUVBNmdENkFBRUEvQUQ4QUFFQS9nRUFBQUVCQWdFQ0FBRUJCd0VJQUFFQkZRRVpBQUVCR3dFYkFBRUJId0VoQUFFQkl3RWtBQU1CT0FFNUFBRUJQZ0ZBQUFFQlJRRkZBQUVCVFFGTkFBRUJUd0ZQQUFFQlV3RlRBQUVCVlFGWEFBRUJXUUZaQUFFQm9nR2lBQU1Cb3dHcEFBSUJ1Z0hUQUFFQjRnSGlBQUVCNUFIa0FBRUI2Z0hxQUFFQjh3SHpBQUVCOVFIMUFBRUIvQUgrQUFFQ0FBSUJBQUVDQXdJREFBRUNCd0lIQUFFQ0NRSUxBQUVDRVFJUkFBRUNGZ0lZQUFFQ0dnSWFBQUVDUGdKREFBRUNSd0t2QUFFQ3NnTllBQUVEV3dOcUFBRURjUU54QUFFRGN3TjNBQUVEZWdOL0FBRURnUU9FQUFFRGhnT0tBQUVEakFPbkFBRURxd09yQUFFRHJRTzBBQUVEdGdPNEFBRUR2UU8vQUFFRHdRUE5BQUVEendQWkFBRUQzQVBzQUFFRDd3UklBQUVFU3dSTEFBRUVUUVJOQUFFRVR3UlFBQUVFV3dSYkFBRUVZZ1JrQUFFRVpnUm1BQUVFYWdScUFBRUViQVJ0QUFFRWJ3UnZBQUVFZHdTR0FBRUVod1NIQUFJRWlBU3dBQUVFc2dUS0FBRUV6QVRRQUFFRTBnVFZBQUVFMXdUWkFBRUUyd1RjQUFFRTNnVGhBQUVBQVFBQUFBb0FYQUNhQUFSRVJreFVBQnBqZVhKc0FDaG5jbVZyQURac1lYUnVBRVFBQkFBQUFBRC8vd0FDQUFBQUJBQUVBQUFBQVAvL0FBSUFBUUFGQUFRQUFBQUEvLzhBQWdBQ0FBWUFCQUFBQUFELy93QUNBQU1BQndBSVkzQnpjQUF5WTNCemNBQXlZM0J6Y0FBeVkzQnpjQUF5YTJWeWJnQTRhMlZ5YmdBNGEyVnliZ0E0YTJWeWJnQTRBQUFBQVFBQUFBQUFBUUFCQUFJQUJnSFlBQUVBQUFBQkFBZ0FBUUFLQUFVQUpBQklBQUVBM2dBSUFDVUFKZ0FuQUNnQUtRQXFBQ3NBTEFBdEFDNEFMd0F3QURFQU1nQXpBRFFBTlFBMkFEY0FPQUE1QURvQU93QThBRDBBUGdCbEFHY0FrZ0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QU5FQTBnRFRBTlFBMVFEV0FOY0EyQURaQU5vQTJ3RGNBTjBBM2dEZkFPQUE0UURpQU9NQTVBRGxBT1lBNXdEb0FTd0JNQUV5QVRnQk9nRThBVDRCUHdGRkFVWUJmd0dGQVlvQmpRSkhBa2dDU2dKTUFrMENUZ0pQQWxBQ1VRSlNBbE1DVkFKVkFsWUNWd0pZQWxrQ1dnSmJBbHdDWFFKZUFsOENZQUpoQW1JQ1l3SmtBbVVDWmdLREFvVUNod0tKQW9zQ2pRS1BBcEVDa3dLVkFwY0NtUUtiQXAwQ253S2hBcU1DcFFLbkFxa0Nxd0t0QXE4Q3NnSzBBcllDdUFLNkFyd0N2Z0xBQXNJQ3hRTEhBc2tDeXdMTkFzOEMwUUxUQXRVQzJRTGJBdDBDM3dMaEF1TUM1UUxuQXVrQzZ3THRBdThDOFFMeUF2UUM5Z05UQTFRRFZRTldBMWNEV0FOWkExc0RYQU5kQTE0RFh3TmdBMkVEWWdOa0EyVURaZ05uQTJnRGFRTnFBM29EZXdOOEEzMERmZ04vQTRBRGdRT0NBNE1EaEFPRkE0WURod09JQTRrRGlnT0xBNHdEalFPT0E0OER1d085QTc4RDFBUGFBK0FFU1FSTEJFOEVWd1JaQkY0RWFnQUNBQUFBQkFBT0Q4NFY4alZpQUFFRFZBQUVBQUFCcFFyU0N0SUdnZ3R3Q29BSy9nK2FEQUFHaUE3dUR1NE1SZzZnQ2lJTzdnN3VENW9LaWdhU0RHWU1SZ3JZQ3F3TlVnOFFDbDRMNGdzUURCWUdtQTIyRGJZTnRnd2dDeEFLVUF4TURiQU1UQXNRQnFZTjVndHdENW9MY0Fhc0JySUd2QWJDQnNnTVRBYk9CdGdOdGdiK0J4UUhLZ2N3QjBZSFRBZFNCNFFIaWdlUURjQU53QWUrRHU0SDRBZ0NEVklJTUE3dUR1NExKZzd1RHU0SVJnM0FEY0FJZUFpQ0NJd0lwZzFJQ0xnTnNBalNDT2dMRUFreUNVd0phQWxvQ3hBSllnbG9DV2dKYUF0d0RDQUsyQXhNQ3hBTjVnMUlEcUFPb0ExSUN0SUswZ3JTQ3RJSzBnbUtDYkFKdWduRUNlSUo5QW9HQ2hnSy9nK2FENW9QbWcrYURHWUxjQXR3QzNBTGNBdHdDM0FMY0FyK0RBQU1BQXdBREFBTzdnN3VEdTRPN2c3dUQ1b1BtZythRDVvUG1neEdERVlNUmd4R0R4QUw0Z3ZpQytJTDRndmlDK0lMNGd3V0RCWU1GZ3dXRGJZTUlBd2dEQ0FNSUF3Z0RFd01UQXR3QytJTGNBdmlDM0FMNGdyK0N2NEsvZ3IrRDVvTUFBd1dEQUFNRmd3QURCWU1BQXdXREFBTUZnN3VEYllPN2c3dUR1NE83Zzd1REVZT29Bb2lDaUlLSWdvaUR1NE50Zzd1RGJZTzdnMjJEYllQbWd3Z0Q1b01JQSthRENBS1VBcFFDbEFNWmd4bURHWU1SZ3hHREVZTVJneEdERVlLckE4UURFd1BFQXBlQ2w0S1hndHdEQUFPN2c3dUQ1b1BFQXR3Q29BTUFBcGVEdTRPN2c2Z0R1NE83ZythQ29vTVpnOFFEVklPN2c4UURiWU1JQXhNRENBTUFBM21EdTRPN2d4R0RxQU9vQXNtQzNBS2dBM21EQUFPN2c3dUQ1b0tpZ3IrREdZTlVndmlEQllNSUFzUURFd05zQXdXRFVnTVRBcXNDcXdLckE4UURFd0swZ3JTQ3RJTzdnMjJDM0FMNGd3QURCWUsyQXhNQ3Y0UEVBeE1EdTROVWcyd0R1NExjQXZpQzNBTDRnd0FEQllNRmd3V0RWSU5zQSthRENBTUlBc1FDeVlNVEFzbURFd0xKZ3hNRFZJTnNBdHdDK0lMY0F2aUMzQUw0Z3R3QytJTGNBdmlDM0FMNGd0d0MrSUxjQXZpQzNBTDRndHdDK0lMY0F2aUMzQUw0Z3dBREJZTUFBd1dEQUFNRmd3QURCWU1BQXdXREFBTUZnd0FEQllNQUF3V0R1NE83ZythRENBUG1nd2dENW9NSUErYURDQVBtZ3dnRDVvTUlBK2FEQ0FNSUF4R0RFWVBFQXhNRHhBTVRBOFFERXdPb0E3dURHWU5VZzJ3RGVZTlNBMVNEYkFOdGczQURlWU9vQTd1RHU0UEVBK2FBQUlBaHdBR0FBWUFBQUFMQUFzQUFRQVRBQk1BQWdBbEFDb0FBd0FzQURVQUNRQTRBRDRBRXdCRkFFWUFHZ0JKQUVvQUhBQk1BRXdBSGdCUkFGUUFId0JXQUZZQUl3QmFBRm9BSkFCY0FGMEFKUUNLQUlvQUp3Q2NBSndBS0FDd0FMUUFLUUMyQUxnQUxnQzZBTG9BTVFDOEFMMEFNZ0MvQU1BQU5BRENBTVFBTmdER0FNc0FPUURSQU5FQVB3RFRBTjBBUUFEZkFOOEFTd0RoQU9NQVRBRGxBT2NBVHdEcEFPMEFVZ0R3QVBBQVZ3RDFBUGNBV0FENkFQc0FXd0Q5QVA4QVhRRURBUVFBWUFFSkFRa0FZZ0VNQVF3QVl3RVhBUmtBWkFFckFTMEFad0V3QVRBQWFnRXlBVElBYXdGSkFVa0FiQUZzQVcwQWJRRnZBWEVBYndHNkFib0FjZ0c5QWIwQWN3SEVBY1VBZEFISUFjZ0FkZ0hLQWNzQWR3SE5BYzBBZVFJb0FpZ0FlZ0lxQWlzQWV3SkhBa2dBZlFKS0Frb0Fmd0pNQW0wQWdBSnZBbklBb2dKM0Fud0FwZ0tCQW9rQXJBS0xBb3NBdFFLTkFvMEF0Z0tQQW84QXR3S1JBcEVBdUFLVEFwd0F1UUtsQXFjQXd3S3BBcWtBeGdLckFxc0F4d0t0QXEwQXlBS3ZBcThBeVFLeUFySUF5Z0swQXJRQXl3SzJBcllBekFLNEFyZ0F6UUs2QXJvQXpnSzhBcndBendLK0Fzb0EwQUxNQXN3QTNRTE9BczRBM2dMUUF0QUEzd0xiQXRzQTRBTGRBdDBBNFFMZkF0OEE0Z0xoQXVFQTR3TGpBdU1BNUFMbEF1VUE1UUxuQXVjQTVnTHBBdWtBNXdMckF1c0E2QUx0QXUwQTZRTHZBdklBNmdMMEF2UUE3Z0wyQXZZQTd3TlRBMWdBOEFOYkEyb0E5Z050QTIwQkJnTnhBM0VCQndOekEzTUJDQU4zQTNjQkNRTjZBM3NCQ2dOOUE0WUJEQU9JQTRvQkZnT01BNUVCR1FPVEE1UUJId09XQTVrQklRT2ZBNkFCSlFPaUE2SUJKd09rQTZRQktBT21BNmtCS1FPc0E3RUJMUU96QTdNQk13TzNBN2dCTkFPOUE3MEJOZ08vQThnQk53UExBOHdCUVFQT0E5RUJRd1BZQTlrQlJ3UGRBOTBCU1FQZkErVUJTZ1BxQStzQlVRUHZCQmNCVXdRWkJCa0JmQVFiQkNnQmZRUXdCREFCaXdRekJETUJqQVExQkRVQmpRUkJCRVlCamdSSkJFa0JsQVJMQkVzQmxRUk5CRTBCbGdSUEJGQUJsd1JWQkZnQm1RUmJCRnNCblFSZEJGNEJuZ1JnQkdBQm9BUmtCR1FCb1FSbUJHWUJvZ1JxQkdvQm93U3FCS29CcEFBQkFCUC9JQUFDQUZiLzVnRzYvOEFBQVFHNkFBNEFBd0FOQUJRQVFRQVNBR0VBRXdBQkFQWC85UUFCQU1NQURRQUNBTGYvd2dEREFCQUFBUURELytJQUFRREcvL0lBQVFEREFBNEFBZ0RKLyswQTlmL0FBQWtBdnYvbUFNSC82d0RDLytrQXhQL3dBTVgvNXdESi8rTUF5Ly9PQU16LzFBRE4vOXNBQlFEQi8rd0F3d0FQQU1YLzZnREovOFFBeS8vbkFBVUFTdi9wQU1ILzdnRERBQkFBeGYvc0FNbi9JQUFCQU1NQUR3QUZBTW4vNmdEcy8rNEE5ZityQVRQLzdBRlkvK3dBQVFEMS85VUFBUURKQUFzQURBQktBQXdBeFFBTEFNa0FEQUc2Lzc4QnZQL3VBY0QvN0FISS8rMEJ5di9zQWN6LzlRSE5BQTRCendBTkFkSUFEUUFCQVBYLzJBQUJBUFgvcWdBTEFPWC8xQUQxLzhrQkNQL2xBUi8vNHdFei84UUJQUC9oQVUzLzFBRk8vL1VCVC8vbkFWZi8wZ0ZZLzhrQUNBRGwvOGtBOWYvZkFRai83UUVmLytzQk0vL2ZBVC8vNlFGTy8vVUJXUC9nQUFnQTVmL21BUFgvMEFFei84NEJQUC9vQVUzLzV3RlAvKzBCVi8vbUFWai8wQUFMQU5nQUZBRGwvK0FBN0FBVEFUei80UUU5LytBQlFQL2hBVVgvNlFGTi85OEJULy9lQVZmLzN3RlovL0lBQlFBYi8vSUE1Zi94QVUzLzhnRlAvL0lCVi8veUFBd0EyQUFUQU9YLzVnRG0vL1FBN0FBU0FQWC81d0V6LytjQlBQL2xBVDMvNkFGTi8rWUJULy9tQVZmLzVnRlkvK2NBQWdEWS8rSUJWLy9rQUFJQTJQL2hBT3ovNUFBR0FPei83Z0QxLys0QkNQLzBBUi8vOFFFei8rOEJXUC92QUFRQTlmLzBBUWovOVFFei8vVUJXUC8xQUFZQTdBQVVBUFgvN1FENy8rSUJNLy90QVQzLzdRRlkvKzBBQlFFYi8rc0J2UC9yQWNELzZRSEkvK3NCeXYvckFCSUFTZ0FOQU1iL3F3REgvOEFBeS8vVkFPei9xZ0ViLytJQkh3QU1BVTRBQ3dGUUFBc0J1disvQWJ6LzdnSEEvK3dCeVAvdEFjci83QUhNLy9VQnpRQU9BYzhBRFFIU0FBMEFCZ0RzQUJRQTlmL3dBUUFBREFFei8vQUJQZi9tQVZqLzhBQUZBT3dBT2dEMS8rTUJNLy9pQVQzLzR3RlkvK01BQVFEcy8rOEFDQUQxLzdvQkNQL1BBUi8vMndFei8xQUJQZitkQVU3LzhBRlEvL0lCV1A5TUFBa0J2UC95QWNELzhnSEkvL0lCeXYveUFjMy93QUhPLyt3QnovL0hBZEQvMkFIUy83OEFBZ0hQLys0QjBQLzFBQUlCeVAvckFjci82d0FIQWNqLzd3SEsvL0FCemYrN0FjNy83QUhQLzdjQjBQL1ZBZEwvdEFBRUFjMy83Z0hQLy9FQjBmL3NBZEwvNmdBRUFjMy82UUhQLytzQjBQL3hBZEwvNVFBRUFjMy84Z0hQLy9FQjBQLzFBZEwvN2dBQ0FjOEFEUUhTQUEwQUN3QmIvNlFCdWdBVEFiei84d0hBLy9FQnlQL3lBY3IvOFFITi96c0J6di9hQWMvL1ZBSFEvNUVCMHY4L0FBTUFTZ0FQQUZnQU1nQmJBQkVBQ0FCYi8rVUF0Ly9MQU16LzVBRzZBQTBCdlAvdEFjRC82d0hJLyt3Qnl2L3NBQUlCRUFBTEFWZi81Z0FJQUZnQURnQ0IvNThBdy8vZUFNYi81UURZLzZnQTdQL0tBVXIvNHdHNi84WUFDUUFOQUE4QVFRQU1BRmIvNndCaEFBNEJ1di9MQWJ6LzZRSEEvK2NCeVAvbkFjci81d0FCQUZzQUN3QUpBQTBBRkFCQkFCRUFWdi9pQUdFQUV3RzYvN1FCdlAvWkFjRC8yUUhJLzlrQnl2L1pBQVFBRGYvbUFFSC85QUJoLys4QlFQL3RBQVVBeWYvcUFPei83Z0QxLzdBQk0vL3NBVmovN0FBU0FOai9yZ0RsQUJJQTZ2L2dBT3ovclFEdS85WUEvUC9mQVFELzBnRUcvK0FCRy8vT0FTdi8zUUV0LytJQk1mL2dBVGYvNEFFOS8ra0JRUC9hQVVyL3ZRRlUvOThCVndBUkFCd0FJLy9EQUZqLzd3QmIvOThBbWYvdUFMZi81UUM0LzlFQXd3QVJBTW4veUFEWUFCTUE1Zi9GQVBYL3lnRXovNThCUFA5UkFUMy9ld0UvLzhvQlFQL2RBVVgvOGdGTi8zVUJULy9LQVZmL1R3RlkvNHdCd1AvMUFjai85UUhOLzhjQnp2L3hBYy8velFIUS85MEIwdi9FQUFjQTlmL3dBUWovOFFFZi8vTUJNLy94QVU3Lzh3RlEvK2tCV1AvVEFBVUFTdi91QUZ2LzZnSFAvL0FCMFAvdEFkTC84QUFDQVBYLzlRRnQvN0FBQ1FESi8rb0E3UCs0QVBYLzZnRUkvL0FCSC8veEFUUC82d0ZPLy9VQldQL3NBVzMvc0FBQkFici82d0FHQUVvQURRREZBQXNBeHYvcUFNa0FEQURzLzhnQkcvL3hBRGdBQlAvWUFGYi90UUJiLzhjQWJmNjRBSHovS0FDQi8wMEFoditPQUluL29RQzMvNjRBdnY5K0FNTC9ad0RGLzRjQXh2OWxBTW4vbmdETC8yb0F6UDl6QU0zL1hnRFkvNlVBNVFBUEFPbi81QURxLzZBQTdQOTBBTzcvZ0FEMS83SUEvUDk5QVA3L2dBRUEvM2tCQnY5OUFRai9md0ViLzVnQkgvL2FBU3YvZ1FFdC81Z0JNZjk5QVRQL3N3RTMvNkFCUGY5OEFULy9tZ0ZBLzJ3QlJmL21BVXIvYXdGTy81SUJVUCt0QVZUL2V3RlhBQThCV1ArUkFWbi84Z0c2LzY4QnZQKzVBY0QvdVFISS83a0J5dis1QWN6L3ZBSE4vL0VCMFAveEFkSC83UUFDQU96L3lRRWIvKzRBRndDMy85UUF3Zi90QU1NQUVRREovK0FBeS8vbkFNei81UUROLys0QTJBQVNBT24vNlFEMS85Y0JNLy9YQVQzLzB3RS8vOVlCUVAvRkFVWC81d0ZOQUEwQlR3QU1BVmovMWdGWi8vSUJ2UC9wQWNELzV3SEkvK2NCeXYvcEFBRUJHLy94QUFJQTlmL0FBVzMvc0FBSkFPWC93d0QxLzg4Qk0vL09BVHovNXdFLy85OEJUZi9SQVUvLzdBRlgvNkFCV1AvUkFDNEFWdjl0QUZ2L2pBQnQvYjhBZlA1OUFJSCt2QUNHL3lzQWlmOUxBTGYvWVFDKy93OEF3djdvQU1YL0h3REcvdVVBeWY5R0FNdis3UURNL3YwQXpmN1pBTmovVWdEbEFBVUE2Zis5QU9yL1NRRHMvdjRBN3Y4VEFQWC9hQUQ4L3c0QS92OFRBUUQvQndFRy93NEJDUDhSQVJ2L1BBRWYvNndCSy84VkFTMy9QQUV4L3c0Qk0vOXFBVGYvU1FFOS93d0JQLzgvQVVEKzhRRkYvOEFCU3Y3dkFVNy9NUUZRLzE4QlZQOEtBVmNBQlFGWS96QUJXZi9WQUJNQVcvL0JBTGYveFFESi83UUE2Zi9YQVBYL3VRRUkvN0lCRy8vU0FSLy95QUV6LzZBQlBmL0ZBVVgvNUFGTy84d0JVUC9NQVZqL3l3RlovKzhCdlAvb0FjRC81Z0hJLytjQnl2L25BQWdBMkFBVkFPd0FGUUU4LytRQlBmL2xBVC8vNUFGTi8rTUJULy9pQVZmLzVBQWlBQXIvNGdBTkFCUUFEdi9QQUVFQUVnQksvK29BVnYvWUFGai82Z0JoQUJNQWJmK3VBSHovelFDQi82QUFodi9CQUluL3dBQzMvOUFBdS8vcUFMNy94Z0MvQUEwQXdmL3BBTUwvMWdERi8rZ0F4dis2QU1uLzZRREwvOHNBelAvYUFNMy94d0YxLzlNQnV2K3JBYnovelFIQS84c0J5UC9MQWNyL3l3SE4vL01CMFAvekFkSC83d0FKQUlILzN3QzAvL01BdHYvd0FNUC82Z0RZLzk4QTVmL2dBVmYvNEFHNi8rMEIwZi8xQUFFQUdBQUVBQUFBQndBcUFGUUFxZ1BjQkZvRXhBVUdBQUVBQndBRUFBd0FLZ0ExQURZQVB3QktBQW9BT1AvWUFOSC8yQURWLzlnQk12L1lBVHIvMkFMYi85Z0MzZi9ZQXQvLzJBT08vOWdFVGYvWUFCVUFPZ0FVQURzQUVnQTlBQllCR0FBVUFtWUFGZ0x0QUJJQzd3QVdBdkVBRmdOWUFCWURad0FXQTJvQUZnT2dBQklEb2dBU0E2UUFFZ09tQUJZRHR3QVVBNzhBRmdSQkFCWUVRd0FXQkVVQUZnUnFBQllBekFBUS94WUFFdjhXQUNYL1ZnQXUvdmdBT0FBVUFFWC8zZ0JILytzQVNQL3JBRW4vNndCTC8rc0FVLy9yQUZYLzZ3QlovK29BV3Yvb0FGMy82QUNULytzQW1QL3JBSnIvNmdDeC8xWUFzLzlXQUxyLzZ3QzgvK2dBeC8vckFNai82d0RLLytvQTBRQVVBTlVBRkFEMi8rc0JBdi9yQVF6L1ZnRVgvK3NCR2Yvb0FSMy82d0VoLytzQk1nQVVBVG4vNndFNkFCUUJTLy9yQVV6LzZ3RlcvK3NCYnY4V0FYTC9GZ0YyL3hZQmQvOFdBa3ovVmdKTi8xWUNUdjlXQWsvL1ZnSlEvMVlDVWY5V0FsTC9WZ0puLzk0Q2FQL2VBbW4vM2dKcS85NENhLy9lQW16LzNnSnQvOTRDYnYvckFtLy82d0p3LytzQ2NmL3JBbkwvNndKNC8rc0NlZi9yQW5yLzZ3SjcvK3NDZlAvckFuMy82Z0orLytvQ2YvL3FBb0QvNmdLQi8rZ0Nndi9vQW9QL1ZnS0UvOTRDaGY5V0FvYi8zZ0tILzFZQ2lQL2VBb3IvNndLTS8rc0Nqdi9yQXBELzZ3S1MvK3NDbFAvckFwYi82d0tZLytzQ212L3JBcHovNndLZS8rc0NvUC9yQXFMLzZ3S2svK3NDc3Y3NEFzYi82d0xJLytzQ3l2L3JBdHNBRkFMZEFCUUMzd0FVQXVMLzZnTGsvK29DNXYvcUF1ai82Z0xxLytvQzdQL3FBdkQvNkFOVC8xWURXLzlXQTJ2LzZ3TnYvK29EY2YvckEzUC82QU4yLytvRGQvL3JBM2ovNmdOLy92Z0RnLzlXQTQ0QUZBT1EvOTREa2YvckE1UC82d09WLytzRGx2L29BNWovNndPZi8rZ0RwLy9vQTYvL1ZnT3cvOTREcy8vckE3ai82QU81LytzRHZ2L3JBOEQvNkFQRi8xWUR4di9lQThmL1ZnUEkvOTREelAvckE4Ny82d1BQLytzRDJmL3JBOXYvNndQZC8rc0Q0Zi9vQStQLzZBUGwvK2dEN1AvckErLy9WZ1B3Lzk0RDhmOVdBL0wvM2dQei8xWUQ5UC9lQS9YL1ZnUDIvOTREOS85V0Evai8zZ1A1LzFZRCt2L2VBL3YvVmdQOC85NEQvZjlXQS83LzNnUC8vMVlFQVAvZUJBSC9WZ1FDLzk0RUEvOVdCQVQvM2dRRi8xWUVCdi9lQkFqLzZ3UUsvK3NFRFAvckJBNy82d1FRLytzRUV2L3JCQlQvNndRVy8rc0VIUC9yQkI3LzZ3UWcvK3NFSXYvckJDVC82d1FtLytzRUtQL3JCQ3IvNndRcy8rc0VMdi9yQkRELzZ3UXkvK3NFTlAvcUJEYi82Z1E0LytvRU92L3FCRHovNmdRKy8rb0VRUC9xQkVMLzZBUkUvK2dFUnYvb0JFMEFGQUFmQURqLzFRQTYvK1FBTy8vc0FEMy8zUURSLzlVQTFmL1ZBUmovNUFFeS85VUJPdi9WQW1iLzNRTGIvOVVDM2YvVkF0Ly8xUUx0Lyt3QzcvL2RBdkgvM1FOWS85MERaLy9kQTJyLzNRT08vOVVEb1Avc0E2TC83QU9rLyt3RHB2L2RBN2YvNUFPLy85MEVRZi9kQkVQLzNRUkYvOTBFVGYvVkJHci8zUUFhQURqL3NBQTYvKzBBUGYvUUFOSC9zQURWLzdBQkdQL3RBVEwvc0FFNi83QUNadi9RQXR2L3NBTGQvN0FDMy8rd0F1Ly8wQUx4LzlBRFdQL1FBMmYvMEFOcS85QURqdit3QTZiLzBBTzMvKzBEdi8vUUJFSC8wQVJELzlBRVJmL1FCRTMvc0FScS85QUFFQUF1Lys0QU9mL3VBbUwvN2dKai8rNENaUC91QW1YLzdnS3kvKzRDNGYvdUF1UC83Z0xsLys0QzUvL3VBdW4vN2dMci8rNERmLy91QkRQLzdnUTEvKzRBUndBR0FCQUFDd0FRQUVmLzZBQkkvK2dBU2Yvb0FFdi82QUJWLytnQWsvL29BSmovNkFDNi8rZ0F4Ly9vQU1qLzZBRDIvK2dCQXYvb0FSMy82QUVoLytnQk9mL29BVXYvNkFGTS8rZ0JWdi9vQVd3QUVBRnRBQkFCYndBUUFYQUFFQUZ4QUJBQ2J2L29BbS8vNkFKdy8rZ0NjZi9vQW5MLzZBS0svK2dDalAvb0FvNy82QUtRLytnQ2t2L29BcFQvNkFLVy8rZ0NtUC9vQXByLzZBS2MvK2dDbnYvb0FxRC82QUtpLytnQ3BQL29BMnYvNkFPUi8rZ0RsZi9vQTVqLzZBT29BQkFEcVFBUUE2d0FFQU96LytnRHVmL29BNzcvNkFQTS8rZ0R6di9vQTgvLzZBUGIvK2dEN1Avb0JBai82QVFLLytnRURQL29CQTcvNkFRUS8rZ0VFdi9vQkJULzZBUVcvK2dFS3Yvb0JDei82QVF1LytnRU12L29BQUVBVmdBRUFBQUFKZ0NtQVp3QitnSVVBbFlDekFQQ0JMZ0ZrZ1lzQ01ZS2pBdGVERlFPR2c1TURuNE8vQkRpRVZnU0toUk1GUUlXYUJjaUY2Z1lCaGpJR1Q0ZXdCbFFHcUljNEIwQ0hoZ2VsaDdBSHVvQUFRQW1BRThBV0FCYkFGOEFuQUMwQUxZQXR3QzRBTDhBd2dEREFNUUF5UURMQU13QXpRRFJBTlVBMXdEWUFOb0E0Z0RtQU9jQTZBRHBBT29BN0FEdUFQQUE5UUQzQVBvQS93RUNBU0VCYlFBOUFFZi83QUJJLyt3QVNmL3NBRXYvN0FCVi8rd0FrLy9zQUpqLzdBQzYvK3dBeC8vc0FNai83QUQyLyt3QkF2L3NBUjMvN0FFaC8rd0JPZi9zQVV2LzdBRk0vK3dCVnYvc0FtNy83QUp2Lyt3Q2NQL3NBbkgvN0FKeS8rd0Npdi9zQW96LzdBS08vK3dDa1Avc0FwTC83QUtVLyt3Q2x2L3NBcGovN0FLYS8rd0NuUC9zQXA3LzdBS2cvK3dDb3Yvc0FxVC83QU5yLyt3RGtmL3NBNVgvN0FPWS8rd0RzLy9zQTduLzdBTysvK3dEelAvc0E4Ny83QVBQLyt3RDIvL3NBK3ovN0FRSS8rd0VDdi9zQkF6LzdBUU8vK3dFRVAvc0JCTC83QVFVLyt3RUZ2L3NCQ3IvN0FRcy8rd0VMdi9zQkRMLzdBQVhBRlAvN0FFWC8rd0NlUC9zQW5uLzdBSjYvK3dDZS8vc0Fuei83QUxHLyt3Q3lQL3NBc3IvN0FOeC8rd0RkLy9zQTVQLzdBUFovK3dEM2Yvc0JCei83QVFlLyt3RUlQL3NCQ0wvN0FRay8rd0VKdi9zQkNqLzdBUXcvK3dBQmdBUS80UUFFditFQVc3L2hBRnkvNFFCZHYrRUFYZi9oQUFRQUM3LzdBQTUvK3dDWXYvc0FtUC83QUprLyt3Q1pmL3NBckwvN0FMaC8rd0M0Ly9zQXVYLzdBTG4vK3dDNmYvc0F1di83QU4vLyt3RU0vL3NCRFgvN0FBZEFBYi84Z0FMLy9JQVd2L3pBRjMvOHdDOC8vTUJHZi96QVd6LzhnRnQvL0lCYi8veUFYRC84Z0Z4Ly9JQ2dmL3pBb0wvOHdMdy8vTURjLy96QTViLzh3T2YvL01EcC8vekE2ai84Z09wLy9JRHJQL3lBN2ovOHdQQS8vTUQ0Zi96QStQLzh3UGwvL01FUXYvekJFVC84d1JHLy9NQVBRQW4vL01BSy8vekFEUC84d0ExLy9NQWcvL3pBSkwvOHdDWC8vTUFzdi96QU5MLzh3RUgvL01CRnYvekFSci84d0VjLy9NQkh2L3pBU0QvOHdFNC8vTUJWZi96QWlqLzh3SXAvL01DSy8vekFpei84d0pULy9NQ1hmL3pBbDcvOHdKZi8vTUNZUC96QW1ILzh3S0ovL01DaS8vekFvMy84d0tQLy9NQ25mL3pBcC8vOHdLaC8vTUNvLy96QXNYLzh3TEgvL01DeWYvekF2ci84d05YLy9NRFpQL3pBNHIvOHdPTi8vTUR1di96QTczLzh3UFkvL01EMnYvekE5ei84d1FiLy9NRUhmL3pCQi8vOHdRaC8vTUVJLy96QkNYLzh3UW4vL01FS2YvekJDdi84d1F0Ly9NRUwvL3pCREgvOHdTcS8vTUFQUUFuLytZQUsvL21BRFAvNWdBMS8rWUFnLy9tQUpMLzVnQ1gvK1lBc3YvbUFOTC81Z0VILytZQkZ2L21BUnIvNWdFYy8rWUJIdi9tQVNELzVnRTQvK1lCVmYvbUFpai81Z0lwLytZQ0svL21BaXovNWdKVC8rWUNYZi9tQWw3LzVnSmYvK1lDWVAvbUFtSC81Z0tKLytZQ2kvL21BbzMvNWdLUC8rWUNuZi9tQXAvLzVnS2gvK1lDby8vbUFzWC81Z0xILytZQ3lmL21BdnIvNWdOWC8rWURaUC9tQTRyLzVnT04vK1lEdXYvbUE3My81Z1BZLytZRDJ2L21BOXovNWdRYi8rWUVIZi9tQkIvLzVnUWgvK1lFSS8vbUJDWC81Z1FuLytZRUtmL21CQ3YvNWdRdC8rWUVMLy9tQkRILzVnU3EvK1lBTmdBbC8rUUFQUC9TQUQzLzB3Q3gvK1FBcy8va0FObi8wZ0VNLytRQ1RQL2tBazMvNUFKTy8rUUNULy9rQWxELzVBSlIvK1FDVXYva0FtYi8wd0tELytRQ2hmL2tBb2YvNUFMdi85TUM4Zi9UQTFQLzVBTlkvOU1EVy8va0EyZi8wd05vLzlJRGF2L1RBNFAvNUFPUC85SURwdi9UQTYvLzVBTy8vOU1Ed3YvU0E4WC81QVBILytRRDBQL1NBK3IvMGdQdi8rUUQ4Zi9rQS9QLzVBUDEvK1FEOS8va0Evbi81QVA3LytRRC9mL2tBLy8vNUFRQi8rUUVBLy9rQkFYLzVBUkIvOU1FUS8vVEJFWC8wd1JQLzlJRVYvL1NCR3IvMHdBbUFCRC9IZ0FTL3g0QUpmL05BTEgvelFDei84MEJEUC9OQVc3L0hnRnkveDRCZHY4ZUFYZi9IZ0pNLzgwQ1RmL05BazcvelFKUC84MENVUC9OQWxIL3pRSlMvODBDZy8vTkFvWC96UUtILzgwRFUvL05BMXYvelFPRC84MERyLy9OQThYL3pRUEgvODBENy8vTkEvSC96UVB6LzgwRDlmL05BL2YvelFQNS84MEQrLy9OQS8zL3pRUC8vODBFQWYvTkJBUC96UVFGLzgwQXBnQkgvOXdBU1AvY0FFbi8zQUJMLzl3QVVmL3pBRkwvOHdCVC85WUFWUC96QUZYLzNBQlovOTBBV3YvaEFGMy80UUNULzl3QW1QL2NBSnIvM1FDNi85d0F2UC9oQU1ELzh3REgvOXdBeVAvY0FNci8zUURyLy9NQTcvL3pBUEQvOHdEeS8vTUE4Ly96QVBULzh3RDIvOXdBOS8vekFQbi84d0Q2Ly9NQS9mL3pBUC8vOHdFQy85d0JCUC96QVJmLzFnRVovK0VCSGYvY0FTSC8zQUUxLy9NQk9mL2NBVVQvOHdGSi8vTUJTLy9jQVV6LzNBRlcvOXdDYnYvY0FtLy8zQUp3Lzl3Q2NmL2NBbkwvM0FKMy8vTUNlUC9XQW5uLzFnSjYvOVlDZS8vV0Fuei8xZ0o5LzkwQ2Z2L2RBbi8vM1FLQS85MENnZi9oQW9MLzRRS0svOXdDalAvY0FvNy8zQUtRLzl3Q2t2L2NBcFQvM0FLVy85d0NtUC9jQXByLzNBS2MvOXdDbnYvY0FxRC8zQUtpLzl3Q3BQL2NBci8vOHdMQi8vTUN3Ly96QXNULzh3TEcvOVlDeVAvV0Fzci8xZ0xpLzkwQzVQL2RBdWIvM1FMby85MEM2di9kQXV6LzNRTHcvK0VEYS8vY0EyMy84d052LzkwRGNmL1dBM1AvNFFOMi85MERkLy9XQTNqLzNRT1IvOXdEa3YvekE1UC8xZ09VLy9NRGxmL2NBNWIvNFFPWS85d0RtZi96QTU3Lzh3T2YvK0VEcC8vaEE2Ny84d096Lzl3RHRQL3pBN2ovNFFPNS85d0R2di9jQThELzRRUE0vOXdEenYvY0E4Ly8zQVBWLy9NRDEvL3pBOW4vMWdQYi85d0QzZi9XQStILzRRUGovK0VENWYvaEErbi84d1BzLzl3RUNQL2NCQXIvM0FRTS85d0VEdi9jQkJELzNBUVMvOXdFRlAvY0JCYi8zQVFjLzlZRUh2L1dCQ0QvMWdRaS85WUVKUC9XQkNiLzFnUW8vOVlFS3YvY0JDei8zQVF1Lzl3RU1QL1dCREwvM0FRMC85MEVOdi9kQkRqLzNRUTYvOTBFUFAvZEJENy8zUVJBLzkwRVF2L2hCRVQvNFFSRy8rRUVTdi96QkV6Lzh3UlcvL01FWS8vekJHWC84d1JuLy9NQWNRQUcvOW9BQy8vYUFFZi84QUJJLy9BQVNmL3dBRXYvOEFCVi8vQUFXZi92QUZyLzNBQmQvOXdBay8vd0FKai84QUNhLys4QXV2L3dBTHovM0FESC8vQUF5UC93QU1yLzd3RDIvL0FCQXYvd0FSbi8zQUVkLy9BQklmL3dBVG4vOEFGTC8vQUJUUC93QVZiLzhBRnMvOW9CYmYvYUFXLy8yZ0Z3LzlvQmNmL2FBbTcvOEFKdi8vQUNjUC93QW5ILzhBSnkvL0FDZmYvdkFuNy83d0ovLys4Q2dQL3ZBb0gvM0FLQy85d0Npdi93QW96LzhBS08vL0FDa1Avd0FwTC84QUtVLy9BQ2x2L3dBcGovOEFLYS8vQUNuUC93QXA3LzhBS2cvL0FDb3Yvd0FxVC84QUxpLys4QzVQL3ZBdWIvN3dMby8rOEM2di92QXV6Lzd3THcvOXdEYS8vd0EyLy83d056Lzl3RGR2L3ZBM2ovN3dPUi8vQURsZi93QTViLzNBT1kvL0FEbi8vY0E2Zi8zQU9vLzlvRHFmL2FBNnovMmdPei8vQUR1UC9jQTduLzhBTysvL0FEd1AvY0E4ei84QVBPLy9BRHovL3dBOXYvOEFQaC85d0Q0Ly9jQStYLzNBUHMvL0FFQ1Avd0JBci84QVFNLy9BRUR2L3dCQkQvOEFRUy8vQUVGUC93QkJiLzhBUXEvL0FFTFAvd0JDNy84QVF5Ly9BRU5QL3ZCRGIvN3dRNC8rOEVPdi92QkR6Lzd3USsvKzhFUVAvdkJFTC8zQVJFLzl3RVJ2L2NBRFFBQnYrZ0FBdi9vQUJaLy9FQVd2L0ZBRjMveFFDYS8vRUF2UC9GQU1yLzhRRVovOFVCYlArZ0FXMy9vQUZ2LzZBQmNQK2dBWEgvb0FKOS8vRUNmdi94QW4vLzhRS0EvL0VDZ2YvRkFvTC94UUxpLy9FQzVQL3hBdWIvOFFMby8vRUM2di94QXV6LzhRTHcvOFVEYi8veEEzUC94UU4yLy9FRGVQL3hBNWIveFFPZi84VURwLy9GQTZqL29BT3AvNkFEclArZ0E3ai94UVBBLzhVRDRmL0ZBK1AveFFQbC84VUVOUC94QkRiLzhRUTQvL0VFT3YveEJEei84UVErLy9FRVFQL3hCRUwveFFSRS84VUVSdi9GQUQwQVIvL25BRWovNXdCSi8rY0FTLy9uQUZYLzV3Q1QvK2NBbVAvbkFMci81d0RILytjQXlQL25BUGIvNXdFQy8rY0JIZi9uQVNILzV3RTUvK2NCUy8vbkFVei81d0ZXLytjQ2J2L25BbS8vNXdKdy8rY0NjZi9uQW5MLzV3S0svK2NDalAvbkFvNy81d0tRLytjQ2t2L25BcFQvNXdLVy8rY0NtUC9uQXByLzV3S2MvK2NDbnYvbkFxRC81d0tpLytjQ3BQL25BMnYvNXdPUi8rY0RsZi9uQTVqLzV3T3ovK2NEdWYvbkE3Ny81d1BNLytjRHp2L25BOC8vNXdQYi8rY0Q3UC9uQkFqLzV3UUsvK2NFRFAvbkJBNy81d1FRLytjRUV2L25CQlQvNXdRVy8rY0VLdi9uQkN6LzV3UXUvK2NFTXYvbkFIRUFCZ0FNQUFzQURBQkgvK2dBU1Avb0FFbi82QUJMLytnQVUvL3FBRlgvNkFCYUFBc0FYUUFMQUpQLzZBQ1kvK2dBdXYvb0FMd0FDd0RILytnQXlQL29BUGIvNkFFQy8rZ0JGLy9xQVJrQUN3RWQvK2dCSWYvb0FUbi82QUZMLytnQlRQL29BVmIvNkFGc0FBd0JiUUFNQVc4QURBRndBQXdCY1FBTUFtNy82QUp2LytnQ2NQL29BbkgvNkFKeS8rZ0NlUC9xQW5uLzZnSjYvK29DZS8vcUFuei82Z0tCQUFzQ2dnQUxBb3IvNkFLTS8rZ0Nqdi9vQXBELzZBS1MvK2dDbFAvb0FwYi82QUtZLytnQ212L29BcHovNkFLZS8rZ0NvUC9vQXFMLzZBS2svK2dDeHYvcUFzai82Z0xLLytvQzhBQUxBMnYvNkFOeC8rb0Rjd0FMQTNmLzZnT1IvK2dEay8vcUE1WC82QU9XQUFzRG1QL29BNThBQ3dPbkFBc0RxQUFNQTZrQURBT3NBQXdEcy8vb0E3Z0FDd081LytnRHZ2L29BOEFBQ3dQTS8rZ0R6di9vQTgvLzZBUFovK29EMi8vb0E5My82Z1BoQUFzRDR3QUxBK1VBQ3dQcy8rZ0VDUC9vQkFyLzZBUU0vK2dFRHYvb0JCRC82QVFTLytnRUZQL29CQmIvNkFRYy8rb0VIdi9xQkNELzZnUWkvK29FSlAvcUJDYi82Z1FvLytvRUt2L29CQ3ovNkFRdS8rZ0VNUC9xQkRMLzZBUkNBQXNFUkFBTEJFWUFDd0FNQUZ6LzdRQmUvKzBBN2YvdEF2UC83UUwxLyswQzkvL3RBNWYvN1FQRC8rMEQwZi90QSt2LzdRUlEvKzBFV1AvdEFBd0FYUC95QUY3LzhnRHQvL0lDOC8veUF2WC84Z0wzLy9JRGwvL3lBOFAvOGdQUi8vSUQ2Ly95QkZELzhnUlkvL0lBSHdCYS8vUUFYUC95QUYzLzlBQmUvL01BdlAvMEFPMy84Z0VaLy9RQ2dmLzBBb0wvOUFMdy8vUUM4Ly96QXZYLzh3TDMvL01EYy8vMEE1Yi85QU9YLy9JRG4vLzBBNmYvOUFPNC8vUUR3UC8wQThQLzhnUFIvL0lENGYvMEErUC85QVBsLy9RRDYvL3lCRUwvOUFSRS8vUUVSdi8wQkZELzhnUlkvL0lBZVFBRy84b0FDLy9LQURqLzBnQTYvOVFBUFAvMEFEMy8wd0JSLzlFQVV2L1JBRlQvMFFCYS8rWUFYUC92QUYzLzVnQzgvK1lBd1AvUkFOSC8wZ0RWLzlJQTJmLzBBTjMvN1FEZy8rRUE2Ly9SQU8zLzd3RHYvOUVBOFAvUkFQTC8wUUR6LzlFQTlQL1JBUGYvMFFENS85RUErdi9SQVAzLzBRRC8vOUVCQlAvUkFSai8xQUVaLytZQk12L1NBVFgvMFFFNi85SUJSUC9SQVVuLzBRRnMvOG9CYmYvS0FXLy95Z0Z3LzhvQmNmL0tBbWIvMHdKMy85RUNnZi9tQW9MLzVnSy8vOUVDd2YvUkFzUC8wUUxFLzlFQzIvL1NBdDMvMGdMZi85SUM3Ly9UQXZELzVnTHgvOU1EV1AvVEEyZi8wd05vLy9RRGF2L1RBMjMvMFFOei8rWURndi90QTQ3LzBnT1AvL1FEa3YvUkE1VC8wUU9XLytZRGwvL3ZBNW4vMFFPZS85RURuLy9tQTZiLzB3T24vK1lEcVAvS0E2bi95Z09zLzhvRHJ2L1JBN1QvMFFPMy85UUR1UC9tQTcvLzB3UEEvK1lEd3YvMEE4UC83d1BRLy9RRDBmL3ZBOVgvMFFQWC85RUQ0UC90QStILzVnUGkvKzBENC8vbUErVC83UVBsLytZRDV2L2hBK24vMFFQcS8vUUQ2Ly92QkVILzB3UkMvK1lFUS8vVEJFVC81Z1JGLzlNRVJ2L21CRXIvMFFSTS85RUVUZi9TQkUvLzlBUlEvKzhFVWYvaEJGUC80UVJXLzlFRVYvLzBCRmovN3dSai85RUVaZi9SQkdmLzBRUnEvOU1BSFFBNC83NEFXdi92QUYzLzd3QzgvKzhBMGYrK0FOWC92Z0VaLys4Qk12KytBVHIvdmdLQi8rOENndi92QXR2L3ZnTGQvNzRDMy8rK0F2RC83d056Lys4RGp2KytBNWIvN3dPZi8rOERwLy92QTdqLzd3UEEvKzhENGYvdkErUC83d1BsLys4RVF2L3ZCRVQvN3dSRy8rOEVUZisrQURRQU9QL21BRHIvNXdBOC8vSUFQZi9uQUZ6LzhRRFIvK1lBMWYvbUFObi84Z0RkLys0QTRQL29BTzMvOFFFWS8rY0JNdi9tQVRyLzVnSm0vK2NDMi8vbUF0My81Z0xmLytZQzcvL25BdkgvNXdOWS8rY0RaLy9uQTJqLzhnTnEvK2NEZ3YvdUE0Ny81Z09QLy9JRGwvL3hBNmIvNXdPMy8rY0R2Ly9uQThMLzhnUEQvL0VEMFAveUE5SC84UVBnLys0RDR2L3VBK1QvN2dQbS8rZ0Q2di95QSt2LzhRUkIvK2NFUS8vbkJFWC81d1JOLytZRVQvL3lCRkQvOFFSUi8rZ0VVLy9vQkZmLzhnUlkvL0VFYXYvbkFJZ0FKUUFRQUNmLzZBQXIvK2dBTS8vb0FEWC82QUE0LytBQU92L2dBRDMvM3dDRC8rZ0Frdi9vQUpmLzZBQ3hBQkFBc3Yvb0FMTUFFQURSLytBQTB2L29BTk1BRUFEVi8rQUEzQUFRQU9ELzRRRHhBQkFBK1AvZ0FRTUFFQUVILytnQkRBQVFBUmIvNkFFWS8rQUJHdi9vQVJ6LzZBRWUvK2dCSVAvb0FUTC80QUU0LytnQk92L2dBVkVBRUFGVi8rZ0NLUC9vQWluLzZBSXIvK2dDTFAvb0Frd0FFQUpOQUJBQ1RnQVFBazhBRUFKUUFCQUNVUUFRQWxJQUVBSlQvK2dDWGYvb0FsNy82QUpmLytnQ1lQL29BbUgvNkFKbS85OENnd0FRQW9VQUVBS0hBQkFDaWYvb0Fvdi82QUtOLytnQ2ovL29BcDMvNkFLZi8rZ0NvZi9vQXFQLzZBTEYvK2dDeC8vb0Fzbi82QUxiLytBQzNmL2dBdC8vNEFMdi85OEM4Zi9mQXZyLzZBTlRBQkFEVi8vb0Exai8zd05iQUJBRFpQL29BMmYvM3dOcS85OERnd0FRQTRyLzZBT04vK2dEanYvZ0E2Yi8zd092QUJBRHQvL2dBN3IvNkFPOS8rZ0R2Ly9mQThVQUVBUEhBQkFEMlAvb0E5ci82QVBjLytnRDV2L2hBK2YvNEFQdEFCQUQ3Z0FRQSs4QUVBUHhBQkFEOHdBUUEvVUFFQVAzQUJBRCtRQVFBL3NBRUFQOUFCQUQvd0FRQkFFQUVBUURBQkFFQlFBUUJCdi82QVFkLytnRUgvL29CQ0gvNkFRai8rZ0VKZi9vQkNmLzZBUXAvK2dFSy8vb0JDMy82QVF2LytnRU1mL29CRUgvM3dSRC85OEVSZi9mQkUzLzRBUlIvK0VFVXYvZ0JGUC80UVJVLytBRWFBQVFCR2tBRUFScS85OEVxdi9vQUMwQU9QL3hBRHIvOUFBOC8vUUFQZi93QU5ILzhRRFQvL1VBMWYveEFObi85QURjLy9VQTNmL3pBUmovOUFFeS8vRUJPdi94QVZILzlRSm0vL0FDMi8veEF0My84UUxmLy9FQzcvL3dBdkgvOEFOWS8vQURaLy93QTJqLzlBTnEvL0FEZ3YvekE0Ny84UU9QLy9RRHB2L3dBN2YvOUFPLy8vQUR3di8wQTlELzlBUGcvL01ENHYvekErVC84d1BxLy9RRDdmLzFCRUgvOEFSRC8vQUVSZi93QkUzLzhRUlAvL1FFVi8vMEJHai85UVJxLy9BQVdRQWxBQThBT1AvbUFEci81Z0E4QUE0QVBmL21BTEVBRHdDekFBOEEwZi9tQU5NQURnRFYvK1lBMlFBT0FOd0FEZ0RkQUFzQTRQL2xBUEVBRHdENC8rZ0JBd0FQQVF3QUR3RVkvK1lCTXYvbUFUci81Z0ZSQUE0Q1RBQVBBazBBRHdKT0FBOENUd0FQQWxBQUR3SlJBQThDVWdBUEFtYi81Z0tEQUE4Q2hRQVBBb2NBRHdMYi8rWUMzZi9tQXQvLzVnTHYvK1lDOGYvbUExTUFEd05ZLytZRFd3QVBBMmYvNWdOb0FBNERhdi9tQTRJQUN3T0RBQThEanYvbUE0OEFEZ09tLytZRHJ3QVBBN2YvNWdPLy8rWUR3Z0FPQThVQUR3UEhBQThEMEFBT0ErQUFDd1BpQUFzRDVBQUxBK2IvNVFQbi8rZ0Q2Z0FPQSswQURnUHVBQThEN3dBUEEvRUFEd1B6QUE4RDlRQVBBL2NBRHdQNUFBOEQrd0FQQS8wQUR3UC9BQThFQVFBUEJBTUFEd1FGQUE4RVFmL21CRVAvNWdSRi8rWUVUZi9tQkU4QURnUlIvK1VFVXYvb0JGUC81UVJVLytnRVZ3QU9CR2dBRGdScEFBOEVhdi9tQUM0QU9QL2pBRHovNVFBOS8rUUEwZi9qQU5QLzVRRFYvK01BMmYvbEFOei81UURkLytrQThmL3FBUVAvNmdFeS8rTUJPdi9qQVZILzVRSm0vK1FDMi8vakF0My80d0xmLytNQzcvL2tBdkgvNUFOWS8rUURaLy9rQTJqLzVRTnEvK1FEZ3YvcEE0Ny80d09QLytVRHB2L2tBNy8vNUFQQy8rVUQwUC9sQStELzZRUGkvK2tENVAvcEErci81UVB0LytVRDd2L3FCRUgvNUFSRC8rUUVSZi9rQkUzLzR3UlAvK1VFVi8vbEJHai81UVJwLytvRWF2L2tBQ0VBT1AvaUFEei81QURSLytJQTAvL2tBTlgvNGdEWi8rUUEzUC9rQU4zLzZRRHgvK3NCQS8vckFUTC80Z0U2LytJQlVmL2tBdHYvNGdMZC8rSUMzLy9pQTJqLzVBT0MvK2tEanYvaUE0Ly81QVBDLytRRDBQL2tBK0QvNlFQaS8ra0Q1UC9wQStyLzVBUHQvK1FEN3YvckJFMy80Z1JQLytRRVYvL2tCR2ovNUFScC8rc0FGd0E0LytzQVBmL3pBTkgvNndEVi8rc0JNdi9yQVRyLzZ3Sm0vL01DMi8vckF0My82d0xmLytzQzcvL3pBdkgvOHdOWS8vTURaLy96QTJyLzh3T08vK3NEcHYvekE3Ly84d1JCLy9NRVEvL3pCRVgvOHdSTi8rc0Vhdi96QURBQVVmL3ZBRkwvN3dCVS8rOEFYUC93QU1ELzd3RHIvKzhBN2Yvd0FPLy83d0R3Lys4QTh2L3ZBUFAvN3dEMC8rOEE5Ly92QVBuLzd3RDYvKzhBL2YvdkFQLy83d0VFLys4Qk5mL3ZBVVQvN3dGSi8rOENkLy92QXIvLzd3TEIvKzhDdy8vdkFzVC83d050Lys4RGt2L3ZBNVQvN3dPWC8vQURtZi92QTU3Lzd3T3UvKzhEdFAvdkE4UC84QVBSLy9BRDFmL3ZBOWYvN3dQcC8rOEQ2Ly93QkVyLzd3Uk0vKzhFVVAvd0JGYi83d1JZLy9BRVkvL3ZCR1gvN3dSbi8rOEFIUUFHLy9JQUMvL3lBRnIvOVFCZC8vVUF2UC8xQVJuLzlRRnMvL0lCYmYveUFXLy84Z0Z3Ly9JQmNmL3lBb0gvOVFLQy8vVUM4UC8xQTNQLzlRT1cvL1VEbi8vMUE2Zi85UU9vLy9JRHFmL3lBNnovOGdPNC8vVUR3UC8xQStILzlRUGovL1VENWYvMUJFTC85UVJFLy9VRVJ2LzFBQVFBK1AvdEErZi83UVJTLyswRVZQL3RBRlFBUi8vd0FFai84QUJKLy9BQVMvL3dBRlAvNndCVi8vQUFrLy93QUpqLzhBQzYvL0FBeC8vd0FNai84QUQyLy9BQkF2L3dBUmYvNndFZC8vQUJJZi93QVRuLzhBRkwvL0FCVFAvd0FWYi84QUp1Ly9BQ2IvL3dBbkQvOEFKeC8vQUNjdi93QW5qLzZ3SjUvK3NDZXYvckFudi82d0o4LytzQ2l2L3dBb3ovOEFLTy8vQUNrUC93QXBMLzhBS1UvL0FDbHYvd0Fwai84QUthLy9BQ25QL3dBcDcvOEFLZy8vQUNvdi93QXFULzhBTEcvK3NDeVAvckFzci82d05yLy9BRGNmL3JBM2YvNndPUi8vQURrLy9yQTVYLzhBT1kvL0FEcy8vd0E3bi84QU8rLy9BRHpQL3dBODcvOEFQUC8vQUQyZi9yQTl2LzhBUGQvK3NEN1Avd0JBai84QVFLLy9BRURQL3dCQTcvOEFRUS8vQUVFdi93QkJULzhBUVcvL0FFSFAvckJCNy82d1FnLytzRUl2L3JCQ1QvNndRbS8rc0VLUC9yQkNyLzhBUXMvL0FFTHYvd0JERC82d1F5Ly9BQWp3QUdBQTBBQ3dBTkFFWC84QUJILzdBQVNQK3dBRW4vc0FCTC83QUFVLy9XQUZYL3NBQmFBQXNBWFFBTEFKUC9zQUNZLzdBQXV2K3dBTHdBQ3dESS83QUE4Zit2QVBiL3NBRUMvN0FCQS8rdkFSZi8xZ0VaQUFzQkhmK3dBU0gvc0FFNS83QUJTLyt3QVV6L3NBRlcvN0FCYkFBTkFXMEFEUUZ2QUEwQmNBQU5BWEVBRFFKbi8vQUNhUC93QW1uLzhBSnEvL0FDYS8vd0Ftei84QUp0Ly9BQ2J2K3dBbS8vc0FKdy83QUNjZit3QW5ML3NBSjQvOVlDZWYvV0Fuci8xZ0o3LzlZQ2ZQL1dBb0VBQ3dLQ0FBc0NoUC93QW9iLzhBS0kvL0FDaXYrd0Fvei9zQUtPLzdBQ2tQK3dBcEwvc0FLVS83QUNsdit3QXBqL3NBS2EvN0FDblArd0FwNy9zQUtnLzdBQ292K3dBcVQvc0FMRy85WUN5UC9XQXNyLzFnTHdBQXNEYS8rd0EzSC8xZ056QUFzRGQvL1dBNUQvOEFPUi83QURrLy9XQTVYL3NBT1dBQXNEbVArd0E1OEFDd09uQUFzRHFBQU5BNmtBRFFPc0FBMERzUC93QTdQL3NBTzRBQXNEdWYrd0E3Ny9zQVBBQUFzRHh2L3dBOGovOEFQTS83QUR6dit3QTgvL3NBUFovOVlEMi8rd0E5My8xZ1BoQUFzRDR3QUxBK1VBQ3dQcy83QUQ3dit2QS9ELzhBUHkvL0FEOVAvd0EvYi84QVA0Ly9BRCt2L3dBL3ovOEFQKy8vQUVBUC93QkFMLzhBUUUvL0FFQnYvd0JBai9zQVFLLzdBRURQK3dCQTcvc0FRUS83QUVFdit3QkJUL3NBUVcvN0FFSFAvV0JCNy8xZ1FnLzlZRUl2L1dCQ1QvMWdRbS85WUVLUC9XQkNyL3NBUXMvN0FFTHYrd0JERC8xZ1F5LzdBRVFnQUxCRVFBQ3dSR0FBc0VhZit2QUFnQThRQVFBUGovOEFFREFCQUQ1Ly93QSs0QUVBUlMvL0FFVlAvd0JHa0FFQUJGQUVjQURBQklBQXdBU1FBTUFFc0FEQUJWQUF3QWt3QU1BSmdBREFDNkFBd0F4d0FNQU1nQURBRHhBQmdBOWdBTUFQai85d0VDQUF3QkF3QVlBUjBBREFFaEFBd0JPUUFNQVVzQURBRk1BQXdCVmdBTUFtNEFEQUp2QUF3Q2NBQU1BbkVBREFKeUFBd0NpZ0FNQW93QURBS09BQXdDa0FBTUFwSUFEQUtVQUF3Q2xnQU1BcGdBREFLYUFBd0NuQUFNQXA0QURBS2dBQXdDb2dBTUFxUUFEQU5yQUF3RGtRQU1BNVVBREFPWUFBd0Rzd0FNQTdrQURBTytBQXdEekFBTUE4NEFEQVBQQUF3RDJ3QU1BK2YvOXdQc0FBd0Q3Z0FZQkFnQURBUUtBQXdFREFBTUJBNEFEQVFRQUF3RUVnQU1CQlFBREFRV0FBd0VLZ0FNQkN3QURBUXVBQXdFTWdBTUJGTC85d1JVLy9jRWFRQVlBQjhBV3YvMEFGei84QUJkLy9RQXZQLzBBTzMvOEFEeC8vTUJBLy96QVJuLzlBS0IvL1FDZ3YvMEF2RC85QU56Ly9RRGx2LzBBNWYvOEFPZi8vUURwLy8wQTdqLzlBUEEvL1FEdy8vd0E5SC84QVBoLy9RRDQvLzBBK1gvOUFQci8vQUQ3di96QkVMLzlBUkUvL1FFUnYvMEJGRC84QVJZLy9BRWFmL3pBQW9BQnYvV0FBdi8xZ0ZzLzlZQmJmL1dBVy8vMWdGdy85WUJjZi9XQTZqLzFnT3AvOVlEclAvV0FBb0FCdi8xQUF2LzlRRnMvL1VCYmYvMUFXLy85UUZ3Ly9VQmNmLzFBNmovOVFPcC8vVURyUC8xQUNFQVRBQWdBRThBSUFCUUFDQUFVLytBQUZmL2tBRVgvNEFDZVArQUFubi9nQUo2LzRBQ2UvK0FBbnovZ0FMRy80QUN5UCtBQXNyL2dBTFMvNUFDMVArUUF0Yi9rQUxZLzVBQzJ2K1FBM0gvZ0FOMy80QURrLytBQTVyL2tBUFovNEFEM2YrQUJCei9nQVFlLzRBRUlQK0FCQ0wvZ0FRay80QUVKditBQkNqL2dBUXcvNEFBQWdlS0FBUUFBQXBlRWI0QUlRQWRBQUFBRWYvTy80OEFFdi8xLysvL2lQLzAvN3YvZi8vMUFBei9xZitpLzhrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rVUFBQUFBLytqL3lRQUEvL01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSQUFELzVRQVJBQUFBQUFBQUFBQUFBUC9qQUFBQUFBQUEvK1QvNUFBQUFCSUFFUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELzRRQUFBQUFBQUFBQUFBQUFBQUFBQUFELzVRQUFBQUQvNnYvVkFBQUFBUC9yLytyL212L3BBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvK01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rWUFBQUFBQUFBQUFBQUEvKzBBQUFBVS8rOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC83UUFBQUFBQUFBQUFBQUFBQUFBQUFBRC95Lys0LzN6L2Z2L2tBQUFBQVArZEFBOEFFUCtoLzhRQUVBQVFBQUFBQVAreEFBRC9KZ0FBLzUzL3MvOFkvNVAvOFArUC80ei9FQUFBLzVML2N2OE0vdy8vdlFBQUFBRC9SQUFGQUFmL1MvK0dBQWNBQndBQUFBRC9QZ0FBL25vQUFQOUUvMnIrWXY4ei85SC9MUDhuQUFBQUFBQUFBQUFBQVAvWUFBQUFBQUFBLyt3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvN0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvWS82TUFBUC9oQUFBQUFQL2xBQUFBQVAvcEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rWUFBUC9BLytrQUFBQUFBQUFBQUFBQUFBRC9ld0FBQUFEL3YvL0svckFBQVA5eC91My8xQUFBLzFIL0VRQUFBQUFBRXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC9KQUE4QUFQL1pBQUFBQUFBQS8vTUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8zYi80ZjY4LytiLzh3QUFBQUFBQUFBQS8vVUFBUDg0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC9xQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvOVFBQUFBRC84d0FBQUFELzBnQUFBQUQvNUFBQUFBQUFBQUFBQUFEL3RRQUEveDhBQVAvVUFBRC8yd0FBQUFELzBnQUFBQUFBQUFBUi8rSC8wUUFSLytjQUFBQUEvK3NBQUFBQS8rc0FBQUFPQUFBQUFBQUFBQUFBQUFBQUFBRC81Z0FBLzlJQUFBQUFBQUFBQUFBQUFBQUFBUC9zQUFBQUFQL2ovNkFBQVArL0FCRUFFZi9aLytJQUVnQVNBQUFBQVAraUFBMy9MUUFBLzcvLzZmL00vOWovOFArMy84Yi9vQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC80UUFBQUE3LzdRQUFBQUFBQUFBQUFBRC8xUUFBLzRVQUFQL2hBQUQveEFBQUFBRC8zd0FBQUFBQUFBQUEvK1VBQUFBQS8rWUFBQUFBLytzQUFBQUEvKzBBQUFBQUFBQUFBQUFBQUEwQUFBQUFBQUQvNndBQUFBQUFBQUFBQUFBQUFBQUFBQUQveWdBQS8rbi91Ly9wQUFBQUFQKzlBQUFBRWdBQUFBQUFBQUFTQUFBQUFQK2xBQUQrYlFBQS83MEFBUCtKLzVvQUFQK1IvOUlBQUFBQUFBRC84UUFBQUFBQUFBQUEvNzBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvMUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzFBQUQvOGdBQUFBRC80d0FBQUFBQUFBQUEvL0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvOFFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvOHdBQUFBQUFBQUFBLy9JQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQK1lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC94QUFELzhBQUFBQUQvZUFBQUFBQUFBQUFBLy9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELzZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvOWNBQUFBQUFBLy84UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLzVVQUFQL3pBQUFBQUFBQUFBRC84UUFBQUFBQUFBQUFBQklBQUFBQUFBQUFBQUFRLyt3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQK0ZBQUQvN1FBQUFBQUFBQUFBLzlnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQL3NBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVArVi84TUFBQUFBQUFBQUFBQUFBQUFBQUFBQS80Z0FBQUFBQUFEL3hRQUFBQUQvN0FBQS84Ny9zQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC9WZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvL1VBQUFBQUFBQUFBQUFBLzhBQUFBQUEvdlVBQUFBQS84ai9yZi9uLytzQUFQL3dBQUFBQUFBQS84a0FBQUFBQUFBQUFBQUFBQUFBQUFBQS85My8yUUFBQUFBQUFQOTVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC8xQUFBQUFBQUFBQUFBQUFBQUFBSUFlQUFHQUFZQUFBQUxBQXNBQVFBUUFCQUFBZ0FTQUJJQUF3QWxBQ2tBQkFBc0FEUUFDUUE0QUQ0QUVnQkZBRWNBR1FCSkFFa0FIQUJNQUV3QUhRQlJBRlFBSGdCV0FGWUFJZ0JhQUZvQUl3QmNBRjRBSkFDS0FJb0FKd0N3QUxNQUtBQzhBTHdBTEFEQUFNQUFMUURHQU1ZQUxnRFRBTlFBTHdEV0FOWUFNUURaQU5rQU1nRGJBTjBBTXdEZkFOOEFOZ0RoQU9FQU53RGpBT01BT0FEbEFPVUFPUURyQU9zQU9nRHRBTzBBT3dEMkFQWUFQQUQ3QVBzQVBRRDlBUDRBUGdFREFRUUFRQUVKQVFrQVFnRU1BUXdBUXdFWEFSa0FSQUVyQVMwQVJ3RXdBVEFBU2dFeUFUSUFTd0ZKQVVrQVRBRnNBWElBVFFGMkFYY0FWQUlvQWlnQVZnSXFBaXNBVndKSEFrZ0FXUUpLQWtvQVd3Sk1BbklBWEFKM0Fud0Fnd0tCQXBFQWlRS1RBcHdBbWdLbEFxY0FwQUtwQXFrQXB3S3JBcXNBcUFLdEFxMEFxUUt2QXE4QXFnS3lBcklBcXdLMEFyUUFyQUsyQXJZQXJRSzRBcmdBcmdLNkFyb0Fyd0s4QXJ3QXNBSytBc29Bc1FMTUFzd0F2Z0xPQXM0QXZ3TFFBdEFBd0FMYkF0c0F3UUxkQXQwQXdnTGZBdDhBd3dMaEF1RUF4QUxqQXVNQXhRTGxBdVVBeGdMbkF1Y0F4d0xwQXVrQXlBTHJBdXNBeVFMdEF1MEF5Z0x2QXZjQXl3TlRBMWdBMUFOYkEyb0EyZ050QTIwQTZnTnhBM0VBNndOekEzTUE3QU4zQTNjQTdRTjZBM3NBN2dOOUE0WUE4QU9JQTRvQStnT01BNUVBL1FPVEE1a0JBd09mQTZBQkNnT2lBNklCREFPa0E2UUJEUU9tQTZrQkRnT3NBN0VCRWdPekE3TUJHQU8zQTdnQkdRTzlBOGdCR3dQTEE4d0JKd1BPQTlFQktRUFlBOWtCTFFQZEE5MEJMd1BmQStVQk1BUHFBK3NCTndQdkJCY0JPUVFaQkJrQllnUWJCQ2dCWXdRd0JEQUJjUVF6QkRNQmNnUTFCRFVCY3dSQkJFWUJkQVJKQkVrQmVnUkxCRXNCZXdSTkJFMEJmQVJQQkZBQmZRUlZCRmdCZndSYkJGc0Jnd1JkQkY0QmhBUmdCR0FCaGdSa0JHUUJod1JtQkdZQmlBUnFCR29CaVFTcUJLb0JpZ0FDQVRvQUJnQUdBQjBBQ3dBTEFCMEFFQUFRQUI0QUVnQVNBQjRBSmdBbUFBRUFKd0FuQUFRQUtBQW9BQU1BS1FBcEFBVUFMQUF0QUFJQUxnQXVBQXdBTHdBdkFBa0FNQUF3QUFvQU1RQXlBQUlBTXdBekFBTUFOQUEwQUFzQU9BQTRBQVlBT1FBNUFBd0FPZ0E2QUEwQU93QTdBQkFBUEFBOEFBNEFQUUE5QUE4QVBnQStBQkVBUlFCRkFCTUFSZ0JHQUJVQVJ3QkhBQlFBU1FCSkFCWUFUQUJNQUJjQVVRQlNBQmNBVXdCVEFCZ0FWQUJVQUJVQVZnQldBQm9BV2dCYUFCa0FYQUJjQUJzQVhRQmRBQmtBWGdCZUFCd0FpZ0NLQUJVQXNBQ3dBQWNBc2dDeUFBTUF2QUM4QUJrQXdBREFBQmNBeGdER0FCVUEwd0RVQUI4QTFnRFdBQUlBMlFEWkFBNEEyd0RjQUFJQTNRRGRBQklBM3dEZkFBSUE0UURoQUFJQTR3RGpBQjhBNVFEbEFCOEE2d0RyQUFnQTdRRHRBQnNBOWdEMkFCVUErd0Q3QUNBQS9RRDlBQ0FBL2dEK0FCVUJBd0VFQUNBQkNRRUpBQ0FCRndFWEFCZ0JHQUVZQUEwQkdRRVpBQmtCS3dFckFCVUJMQUVzQUFjQkxRRXRBQWdCTUFFd0FBa0JNZ0V5QUFrQlNRRkpBQWdCYkFGdEFCMEJiZ0Z1QUI0QmJ3RnhBQjBCY2dGeUFCNEJkZ0YzQUI0Q0tBSW9BQVFDS2dJckFBTUNSd0pJQUFNQ1NnSktBQVlDVXdKVEFBUUNWQUpYQUFVQ1dBSmNBQUlDWFFKaEFBTUNZZ0psQUF3Q1pnSm1BQThDWndKdEFCTUNiZ0p1QUJRQ2J3SnlBQllDZHdKM0FCY0NlQUo4QUJnQ2dRS0NBQmtDaEFLRUFCTUNoZ0tHQUJNQ2lBS0lBQk1DaVFLSkFBUUNpZ0tLQUJRQ2l3S0xBQVFDakFLTUFCUUNqUUtOQUFRQ2pnS09BQlFDandLUEFBUUNrQUtRQUJRQ2tRS1JBQU1Da3dLVEFBVUNsQUtVQUJZQ2xRS1ZBQVVDbGdLV0FCWUNsd0tYQUFVQ21BS1lBQllDbVFLWkFBVUNtZ0thQUJZQ213S2JBQVVDbkFLY0FCWUNwUUtsQUFJQ3BnS21BQmNDcHdLbkFBSUNxUUtwQUFJQ3F3S3JBQUlDclFLdEFBSUNyd0t2QUFJQ3NnS3lBQXdDdEFLMEFBa0N0Z0syQUFvQ3VBSzRBQW9DdWdLNkFBb0N2QUs4QUFvQ3ZnSytBQUlDdndLL0FCY0N3QUxBQUFJQ3dRTEJBQmNDd2dMQ0FBSUN3d0xFQUJjQ3hRTEZBQU1DeGdMR0FCZ0N4d0xIQUFNQ3lBTElBQmdDeVFMSkFBTUN5Z0xLQUJnQ3pBTE1BQm9DemdMT0FCb0MwQUxRQUJvQzJ3TGJBQVlDM1FMZEFBWUMzd0xmQUFZQzRRTGhBQXdDNHdMakFBd0M1UUxsQUF3QzV3TG5BQXdDNlFMcEFBd0M2d0xyQUF3QzdRTHRBQkFDN3dMdkFBOEM4QUx3QUJrQzhRTHhBQThDOGdMeUFCRUM4d0x6QUJ3QzlBTDBBQkVDOVFMMUFCd0M5Z0wyQUJFQzl3TDNBQndEVkFOVUFBVURWUU5XQUFJRFZ3TlhBQU1EV0FOWUFBOERYQU5jQUFFRFhRTmRBQVVEWGdOZUFCRURYd05nQUFJRFlRTmhBQWtEWWdOakFBSURaQU5rQUFNRFpRTmxBQXNEWmdObUFBWURad05uQUE4RGFBTm9BQTREYVFOcEFBSURhZ05xQUE4RGJRTnRBQmNEY1FOeEFCZ0Rjd056QUJrRGR3TjNBQmdEZWdONkFBVURld043QUFjRGZRTitBQUlEZndOL0FBd0RnQU9CQUFrRGdnT0NBQklEaEFPRUFBRURoUU9GQUFjRGhnT0dBQVVEaUFPSkFBSURpZ09LQUFNRGpBT01BQXNEalFPTkFBUURqZ09PQUFZRGp3T1BBQTREa0FPUUFCTURrUU9SQUJZRGt3T1RBQmdEbEFPVUFCVURsUU9WQUJRRGxnT1dBQmtEbHdPWEFCc0RtQU9ZQUJZRG1RT1pBQWdEbndPZkFCa0RvQU9nQUJBRG9nT2lBQkFEcEFPa0FCQURwZ09tQUE4RHB3T25BQmtEcUFPcEFCMERyQU9zQUIwRHJRT3RBQUlEcmdPdUFCY0RzQU93QUJNRHNRT3hBQVVEc3dPekFCWUR0d08zQUEwRHVBTzRBQmtEdlFPOUFBUUR2Z08rQUJRRHZ3Ty9BQThEd0FQQUFCa0R3UVBCQUFJRHdnUENBQTREd3dQREFCc0R4QVBFQUFJRHhnUEdBQk1EeUFQSUFCTUR5d1BMQUFVRHpBUE1BQllEemdQUEFCWUQwQVBRQUE0RDBRUFJBQnNEMkFQWUFBTUQyUVBaQUJnRDNRUGRBQmdEM3dQZkFCVUQ0QVBnQUJJRDRRUGhBQmtENGdQaUFCSUQ0d1BqQUJrRDVBUGtBQklENVFQbEFCa0Q2Z1BxQUE0RDZ3UHJBQnNEOEFQd0FCTUQ4Z1B5QUJNRDlBUDBBQk1EOWdQMkFCTUQrQVA0QUJNRCtnUDZBQk1EL0FQOEFCTUQvZ1ArQUJNRUFBUUFBQk1FQWdRQ0FCTUVCQVFFQUJNRUJnUUdBQk1FQndRSEFBVUVDQVFJQUJZRUNRUUpBQVVFQ2dRS0FCWUVDd1FMQUFVRURBUU1BQllFRFFRTkFBVUVEZ1FPQUJZRUR3UVBBQVVFRUFRUUFCWUVFUVFSQUFVRUVnUVNBQllFRXdRVEFBVUVGQVFVQUJZRUZRUVZBQVVFRmdRV0FCWUVGd1FYQUFJRUdRUVpBQUlFR3dRYkFBTUVIQVFjQUJnRUhRUWRBQU1FSGdRZUFCZ0VId1FmQUFNRUlBUWdBQmdFSVFRaEFBTUVJZ1FpQUJnRUl3UWpBQU1FSkFRa0FCZ0VKUVFsQUFNRUpnUW1BQmdFSndRbkFBTUVLQVFvQUJnRU1BUXdBQmdFTXdRekFBd0VOUVExQUF3RVFRUkJBQThFUWdSQ0FCa0VRd1JEQUE4RVJBUkVBQmtFUlFSRkFBOEVSZ1JHQUJrRVNRUkpBQWtFU3dSTEFBSUVUUVJOQUFZRVR3UlBBQTRFVUFSUUFCc0VWUVJWQUFjRVZnUldBQWdFVndSWEFBNEVXQVJZQUJzRVd3UmJBQmNFWFFSZEFCOEVYZ1JlQUFjRVlBUmdBQWtFWkFSa0FBSUVaZ1JtQUFJRWFnUnFBQThFcWdTcUFBTUFBZ0Z0QUFZQUJnQUhBQXNBQ3dBSEFCQUFFQUFUQUJFQUVRQVhBQklBRWdBVEFDVUFKUUFSQUNjQUp3QUZBQ3NBS3dBRkFDNEFMZ0FjQURNQU13QUZBRFVBTlFBRkFEY0FOd0FaQURnQU9BQUtBRGtBT1FBR0FEb0FPZ0FOQURzQU93QUpBRHdBUEFBU0FEMEFQUUFPQUQ0QVBnQVVBRVVBUlFBYUFFY0FTUUFWQUVzQVN3QVZBRkVBVWdBWUFGTUFVd0FJQUZRQVZBQVlBRlVBVlFBVkFGY0FWd0FiQUZrQVdRQUxBRm9BV2dBQ0FGd0FYQUFXQUYwQVhRQUNBRjRBWGdBTUFJTUFnd0FGQUpJQWtnQUZBSk1Ba3dBVkFKY0Fsd0FGQUpnQW1BQVZBSm9BbWdBTEFMRUFzUUFSQUxJQXNnQUZBTE1Bc3dBUkFMb0F1Z0FWQUx3QXZBQUNBTUFBd0FBWUFNY0F5QUFWQU1vQXlnQUxBTkVBMFFBS0FOSUEwZ0FGQU5NQTB3QUJBTlVBMVFBS0FOa0EyUUFTQU53QTNBQUJBTjBBM1FBUUFPQUE0QUFQQU9zQTZ3QVlBTzBBN1FBV0FPOEE4QUFZQVBFQThRQUVBUElBOUFBWUFQWUE5Z0FWQVBjQTl3QVlBUGdBK0FBREFQa0ErZ0FZQVAwQS9RQVlBUDhBL3dBWUFRSUJBZ0FWQVFNQkF3QUVBUVFCQkFBWUFRY0JCd0FGQVF3QkRBQVJBUllCRmdBRkFSY0JGd0FJQVJnQkdBQU5BUmtCR1FBQ0FSb0JHZ0FGQVJ3QkhBQUZBUjBCSFFBVkFSNEJIZ0FGQVNBQklBQUZBU0VCSVFBVkFUSUJNZ0FLQVRVQk5RQVlBVGdCT0FBRkFUa0JPUUFWQVRvQk9nQUtBVVFCUkFBWUFVa0JTUUFZQVVzQlRBQVZBVkVCVVFBQkFWVUJWUUFGQVZZQlZnQVZBV2tCYWdBWEFXd0JiUUFIQVc0QmJnQVRBVzhCY1FBSEFYSUJjZ0FUQVhZQmR3QVRBaWdDS1FBRkFpc0NMQUFGQWtZQ1JnQVhBa3dDVWdBUkFsTUNVd0FGQWwwQ1lRQUZBbUlDWlFBR0FtWUNaZ0FPQW1jQ2JRQWFBbTRDY2dBVkFuY0Nkd0FZQW5nQ2ZBQUlBbjBDZ0FBTEFvRUNnZ0FDQW9NQ2d3QVJBb1FDaEFBYUFvVUNoUUFSQW9ZQ2hnQWFBb2NDaHdBUkFvZ0NpQUFhQW9rQ2lRQUZBb29DaWdBVkFvc0Npd0FGQW93Q2pBQVZBbzBDalFBRkFvNENqZ0FWQW84Q2p3QUZBcEFDa0FBVkFwSUNrZ0FWQXBRQ2xBQVZBcFlDbGdBVkFwZ0NtQUFWQXBvQ21nQVZBcHdDbkFBVkFwMENuUUFGQXA0Q25nQVZBcDhDbndBRkFxQUNvQUFWQXFFQ29RQUZBcUlDb2dBVkFxTUNvd0FGQXFRQ3BBQVZBcklDc2dBY0FyOEN2d0FZQXNFQ3dRQVlBc01DeEFBWUFzVUN4UUFGQXNZQ3hnQUlBc2NDeHdBRkFzZ0N5QUFJQXNrQ3lRQUZBc29DeWdBSUF0RUMwUUFaQXRJQzBnQWJBdE1DMHdBWkF0UUMxQUFiQXRVQzFRQVpBdFlDMWdBYkF0Y0Mxd0FaQXRnQzJBQWJBdGtDMlFBWkF0b0MyZ0FiQXRzQzJ3QUtBdDBDM1FBS0F0OEMzd0FLQXVFQzRRQUdBdUlDNGdBTEF1TUM0d0FHQXVRQzVBQUxBdVVDNVFBR0F1WUM1Z0FMQXVjQzV3QUdBdWdDNkFBTEF1a0M2UUFHQXVvQzZnQUxBdXNDNndBR0F1d0M3QUFMQXUwQzdRQUpBdThDN3dBT0F2QUM4QUFDQXZFQzhRQU9BdklDOGdBVUF2TUM4d0FNQXZRQzlBQVVBdlVDOVFBTUF2WUM5Z0FVQXZjQzl3QU1Bdm9DK2dBRkExTURVd0FSQTFjRFZ3QUZBMWdEV0FBT0Exc0RXd0FSQTE0RFhnQVVBMlFEWkFBRkEyY0Rad0FPQTJnRGFBQVNBMm9EYWdBT0Eyc0Rhd0FWQTIwRGJRQVlBMjhEYndBTEEzRURjUUFJQTNNRGN3QUNBM1lEZGdBTEEzY0Rkd0FJQTNnRGVBQUxBMzhEZndBY0E0SURnZ0FRQTRNRGd3QVJBNG9EaWdBRkE0MERqUUFGQTQ0RGpnQUtBNDhEandBU0E1QURrQUFhQTVFRGtRQVZBNUlEa2dBWUE1TURrd0FJQTVRRGxBQVlBNVVEbFFBVkE1WURsZ0FDQTVjRGx3QVdBNWdEbUFBVkE1a0RtUUFZQTVvRG1nQWJBNTREbmdBWUE1OERud0FDQTZBRG9BQUpBNklEb2dBSkE2UURwQUFKQTZZRHBnQU9BNmNEcHdBQ0E2Z0RxUUFIQTZ3RHJBQUhBNjREcmdBWUE2OERyd0FSQTdBRHNBQWFBN01Ec3dBVkE3UUR0QUFZQTdjRHR3QU5BN2dEdUFBQ0E3a0R1UUFWQTdvRHVnQUZBNzBEdlFBRkE3NER2Z0FWQTc4RHZ3QU9BOEFEd0FBQ0E4SUR3Z0FTQThNRHd3QVdBOFVEeFFBUkE4WUR4Z0FhQThjRHh3QVJBOGdEeUFBYUE4d0R6QUFWQTg0RHp3QVZBOUFEMEFBU0E5RUQwUUFXQTlVRDFRQVlBOWNEMXdBWUE5Z0QyQUFGQTlrRDJRQUlBOW9EMmdBRkE5c0Qyd0FWQTl3RDNBQUZBOTBEM1FBSUErQUQ0QUFRQStFRDRRQUNBK0lENGdBUUErTUQ0d0FDQStRRDVBQVFBK1VENVFBQ0ErWUQ1Z0FQQStjRDV3QURBK2tENlFBWUErb0Q2Z0FTQStzRDZ3QVdBK3dEN0FBVkErMEQ3UUFCQSs0RDdnQUVBKzhEN3dBUkEvQUQ4QUFhQS9FRDhRQVJBL0lEOGdBYUEvTUQ4d0FSQS9RRDlBQWFBL1VEOVFBUkEvWUQ5Z0FhQS9jRDl3QVJBL2dEK0FBYUEva0QrUUFSQS9vRCtnQWFBL3NEK3dBUkEvd0QvQUFhQS8wRC9RQVJBLzREL2dBYUEvOEQvd0FSQkFBRUFBQWFCQUVFQVFBUkJBSUVBZ0FhQkFNRUF3QVJCQVFFQkFBYUJBVUVCUUFSQkFZRUJnQWFCQWdFQ0FBVkJBb0VDZ0FWQkF3RURBQVZCQTRFRGdBVkJCQUVFQUFWQkJJRUVnQVZCQlFFRkFBVkJCWUVGZ0FWQkJzRUd3QUZCQndFSEFBSUJCMEVIUUFGQkI0RUhnQUlCQjhFSHdBRkJDQUVJQUFJQkNFRUlRQUZCQ0lFSWdBSUJDTUVJd0FGQkNRRUpBQUlCQ1VFSlFBRkJDWUVKZ0FJQkNjRUp3QUZCQ2dFS0FBSUJDa0VLUUFGQkNvRUtnQVZCQ3NFS3dBRkJDd0VMQUFWQkMwRUxRQUZCQzRFTGdBVkJDOEVMd0FGQkRBRU1BQUlCREVFTVFBRkJESUVNZ0FWQkRNRU13QUdCRFFFTkFBTEJEVUVOUUFHQkRZRU5nQUxCRGdFT0FBTEJEb0VPZ0FMQkR3RVBBQUxCRDRFUGdBTEJFQUVRQUFMQkVFRVFRQU9CRUlFUWdBQ0JFTUVRd0FPQkVRRVJBQUNCRVVFUlFBT0JFWUVSZ0FDQkVvRVNnQVlCRXdFVEFBWUJFMEVUUUFLQkU4RVR3QVNCRkFFVUFBV0JGRUVVUUFQQkZJRVVnQURCRk1FVXdBUEJGUUVWQUFEQkZZRVZnQVlCRmNFVndBU0JGZ0VXQUFXQkdNRVl3QVlCR1VFWlFBWUJHY0Vad0FZQkdnRWFBQUJCR2tFYVFBRUJHb0VhZ0FPQkhBRWNBQVhCS29FcWdBRkFBRUFBQUFLQWdZRzhBQUVSRVpNVkFBYVkzbHliQUJJWjNKbGF3QjJiR0YwYmdDa0FBUUFBQUFBLy84QUVnQUFBQW9BRkFBZUFDZ0FOQUJCQUVzQVZRQmZBR2tBY3dCOUFJY0FrUUNiQUtVQXJ3QUVBQUFBQVAvL0FCSUFBUUFMQUJVQUh3QXBBRFVBUWdCTUFGWUFZQUJxQUhRQWZnQ0lBSklBbkFDbUFMQUFCQUFBQUFELy93QVNBQUlBREFBV0FDQUFLZ0EyQUVNQVRRQlhBR0VBYXdCMUFIOEFpUUNUQUowQXB3Q3hBQ2dBQmtGYVJTQUFWRU5TVkNBQWZrMVBUQ0FBcUU1QlZpQUExRkpQVFNBQkFGUlZVaUFCTEFBQS8vOEFFd0FEQUEwQUZ3QWhBQ3NBTWdBM0FFUUFUZ0JZQUdJQWJBQjJBSUFBaWdDVUFKNEFxQUN5QUFELy93QVNBQVFBRGdBWUFDSUFMQUE0QUVVQVR3QlpBR01BYlFCM0FJRUFpd0NWQUo4QXFRQ3pBQUQvL3dBU0FBVUFEd0FaQUNNQUxRQTVBRVlBVUFCYUFHUUFiZ0I0QUlJQWpBQ1dBS0FBcWdDMEFBRC8vd0FUQUFZQUVBQWFBQ1FBTGdBNkFENEFSd0JSQUZzQVpRQnZBSGtBZ3dDTkFKY0FvUUNyQUxVQUFQLy9BQk1BQndBUkFCc0FKUUF2QURzQVB3QklBRklBWEFCbUFIQUFlZ0NFQUk0QW1BQ2lBS3dBdGdBQS8vOEFFd0FJQUJJQUhBQW1BREFBUEFCQUFFa0FVd0JkQUdjQWNRQjdBSVVBandDWkFLTUFyUUMzQUFELy93QVRBQWtBRXdBZEFDY0FNUUF6QUQwQVNnQlVBRjRBYUFCeUFId0FoZ0NRQUpvQXBBQ3VBTGdBdVdNeWMyTUVXR015YzJNRVdHTXljMk1FV0dNeWMyTUVXR015YzJNRVdHTXljMk1FV0dNeWMyTUVXR015YzJNRVdHTXljMk1FV0dNeWMyTUVXR05qYlhBRVhtTmpiWEFFWG1OamJYQUVYbU5qYlhBRVhtTmpiWEFFWG1OamJYQUVYbU5qYlhBRVhtTmpiWEFFWG1OamJYQUVYbU5qYlhBRVhtUnNhV2NFWm1Sc2FXY0VabVJzYVdjRVptUnNhV2NFWm1Sc2FXY0VabVJzYVdjRVptUnNhV2NFWm1Sc2FXY0VabVJzYVdjRVptUnNhV2NFWm1SdWIyMEViR1J1YjIwRWJHUnViMjBFYkdSdWIyMEViR1J1YjIwRWJHUnViMjBFYkdSdWIyMEViR1J1YjIwRWJHUnViMjBFYkdSdWIyMEViR1p5WVdNRWNtWnlZV01FY21aeVlXTUVjbVp5WVdNRWNtWnlZV01FY21aeVlXTUVjbVp5WVdNRWNtWnlZV01FY21aeVlXTUVjbVp5WVdNRWNteHBaMkVFZkd4cFoyRUVoR3h1ZFcwRWlteHVkVzBFaW14dWRXMEVpbXh1ZFcwRWlteHVkVzBFaW14dWRXMEVpbXh1ZFcwRWlteHVkVzBFaW14dWRXMEVpbXh1ZFcwRWlteHZZMndFa0d4dlkyd0VsbXh2WTJ3RW5HNTFiWElFb201MWJYSUVvbTUxYlhJRW9tNTFiWElFb201MWJYSUVvbTUxYlhJRW9tNTFiWElFb201MWJYSUVvbTUxYlhJRW9tNTFiWElFb205dWRXMEVxRzl1ZFcwRXFHOXVkVzBFcUc5dWRXMEVxRzl1ZFcwRXFHOXVkVzBFcUc5dWRXMEVxRzl1ZFcwRXFHOXVkVzBFcUc5dWRXMEVxSEJ1ZFcwRXJuQnVkVzBFcm5CdWRXMEVybkJ1ZFcwRXJuQnVkVzBFcm5CdWRXMEVybkJ1ZFcwRXJuQnVkVzBFcm5CdWRXMEVybkJ1ZFcwRXJuTnRZM0FFdEhOdFkzQUV0SE50WTNBRXRITnRZM0FFdEhOdFkzQUV0SE50WTNBRXRITnRZM0FFdEhOdFkzQUV0SE50WTNBRXRITnRZM0FFdEhOek1ERUV1bk56TURFRXVuTnpNREVFdW5Oek1ERUV1bk56TURFRXVuTnpNREVFdW5Oek1ERUV1bk56TURFRXVuTnpNREVFdW5Oek1ERUV1bk56TURJRXdITnpNRElFd0hOek1ESUV3SE56TURJRXdITnpNRElFd0hOek1ESUV3SE56TURJRXdITnpNRElFd0hOek1ESUV3SE56TURJRXdITnpNRE1FeG5Oek1ETUV4bk56TURNRXhuTnpNRE1FeG5Oek1ETUV4bk56TURNRXhuTnpNRE1FeG5Oek1ETUV4bk56TURNRXhuTnpNRE1FeG5Oek1EUUV6SE56TURRRXpITnpNRFFFekhOek1EUUV6SE56TURRRXpITnpNRFFFekhOek1EUUV6SE56TURRRXpITnpNRFFFekhOek1EUUV6SE56TURVRTBuTnpNRFVFMG5Oek1EVUUwbk56TURVRTBuTnpNRFVFMG5Oek1EVUUwbk56TURVRTBuTnpNRFVFMG5Oek1EVUUwbk56TURVRTBuTnpNRFlFMkhOek1EWUUySE56TURZRTJITnpNRFlFMkhOek1EWUUySE56TURZRTJITnpNRFlFMkhOek1EWUUySE56TURZRTJITnpNRFlFMkhOek1EY0Uzbk56TURjRTNuTnpNRGNFM25Oek1EY0Uzbk56TURjRTNuTnpNRGNFM25Oek1EY0Uzbk56TURjRTNuTnpNRGNFM25Oek1EY0UzblJ1ZFcwRTVIUnVkVzBFNUhSdWRXMEU1SFJ1ZFcwRTVIUnVkVzBFNUhSdWRXMEU1SFJ1ZFcwRTVIUnVkVzBFNUhSdWRXMEU1SFJ1ZFcwRTVBQUFBQUVBQUFBQUFBSUFBZ0FEQUFBQUFRQUhBQUFBQVFBWUFBQUFBd0FWQUJZQUZ3QUFBQUlBQ0FBSkFBQUFBUUFKQUFBQUFRQVVBQUFBQVFBRUFBQUFBUUFHQUFBQUFRQUZBQUFBQVFBWkFBQUFBUUFSQUFBQUFRQVRBQUFBQVFBQkFBQUFBUUFLQUFBQUFRQUxBQUFBQVFBTUFBQUFBUUFOQUFBQUFRQU9BQUFBQVFBUEFBQUFBUUFRQUFBQUFRQVNBQnNBT0FQR0JyUUhZQTN3RGZBT0JnNG9EbDRPaEE2eURzWU8yZzd1RHdBUEdnOWNEM29QbUEvS0Qvd1FMaEJDRUhvUWJCQjZFS1lBQVFBQUFBRUFDQUFDQWNRQTN3SG5BYm9CdXdHOEFiMEJ2Z0cvQWNBQndRSENBY01CeEFIRkFjWUJ4d0hJQWNrQnlnSExBY3dCelFIT0FjOEIwQUhSQWRJQjB3SG9BZWtDUkFJN0Flb0I2d0hzQWUwQjdnSHZBZkFCOFFIeUFmTUI5QUgxQWZZQjl3SDRBZmtCK2dIN0Fmd0IvUUgrQWdBQ0FRVGRBZ0lDQXdJRUFnVUNCZ0lIQWdnQ0NRSUtBZ3NDTHdJUEFoQUNFUUlVQWhVQ0ZnSVhBaGdDR1FJYkFod0NIZ0lkQXZ3Qy9RTCtBdjhEQUFNQkF3SURBd01FQXdVREJnTUhBd2dEQ1FNS0F3c0REQU1OQXc0RER3TVFBeEVERWdNVEF4UURGUU1XQXhjREdBTVpBeG9ER3dNY0F4MERIZ01mQXlBRElRTWlBeU1ESkFNbEF5WURKd01vQXlrREtnTXJBeXdETFFNdUF5OERNQU14QXpJRE13TTBBelVETmdNM0F6Z0RPUU02QXpzRFBBTTlBejREUHdOQUEwRURRZ05EQTBRRFJnTkZBMGNEU0FOSkEwb0RTd05NQTAwRFRnTlBBMUFEVVFOU0JLc0VyQVN0Qks0RXJ3U3dCTEVFc2dTekJMUUV0UVMyQkxjRXVBUzVCTG9FdXdTOEJMMEV2Z1MvQk1BRXdRVENCTU1FeEFURkJNWUIvd1RIQk1nRXlRVEtCTXNFekFUTkJNNEV6d1RRQk5FRTBnVFRCTlFFMVFUV0JOZ0UyUVRiQWhvRTNBSU9CTmNDRXdJTkJOb0NEQUlTQUFFQTN3QUlBQ1VBSmdBbkFDZ0FLUUFxQUNzQUxBQXRBQzRBTHdBd0FERUFNZ0F6QURRQU5RQTJBRGNBT0FBNUFEb0FPd0E4QUQwQVBnQmxBR2NBaFFDU0FMQUFzUUN5QUxNQXRBQzFBTFlBdHdDNEFMa0EwUURTQU5NQTFBRFZBTllBMXdEWUFOa0EyZ0RiQU53QTNRRGVBTjhBNEFEaEFPSUE0d0RrQU9VQTVnRG5BT2dCTEFFd0FUSUJPQUU2QVR3QlBnRS9BVVVCUmdGL0FZVUJpZ0dOQWtjQ1NBSktBa3dDVFFKT0FrOENVQUpSQWxJQ1V3SlVBbFVDVmdKWEFsZ0NXUUphQWxzQ1hBSmRBbDRDWHdKZ0FtRUNZZ0pqQW1RQ1pRSm1Bb01DaFFLSEFva0Npd0tOQW84Q2tRS1RBcFVDbHdLWkFwc0NuUUtmQXFFQ293S2xBcWNDcVFLckFxMENyd0t5QXJRQ3RnSzRBcm9DdkFLK0FzQUN3Z0xGQXNjQ3lRTExBczBDendMUkF0TUMxUUxaQXRzQzNRTGZBdUVDNHdMbEF1Y0M2UUxyQXUwQzd3THhBdklDOUFMMkExTURWQU5WQTFZRFZ3TllBMWtEV3dOY0ExMERYZ05mQTJBRFlRTmlBMlFEWlFObUEyY0RhQU5wQTJvRGVnTjdBM3dEZlFOK0EzOERnQU9CQTRJRGd3T0VBNFVEaGdPSEE0Z0RpUU9LQTRzRGpBT05BNDREandPN0E3MER2d1BVQTlvRDRBUkpCRXNFVHdSWEJGa0VYZ1JxQUFFQUFBQUJBQWdBQWdGMEFMY0J1Z0c3QWJ3QnZRRytBYjhCd0FIQkFjSUJ3d0hFQWNVQnhnSEhBY2dCeVFIS0Fjc0J6QUhOQWM0Qnp3SFFBZEVCMGdIVEF2MERNQUk3QWZvRXlnVExBZnNCL0FIOUFmNEIvd0lBQk00RXp3VFJCTlFFM1FJQ0FnTUNCQUlGQWdZQ0J3SUlBZ2tDQ2dJTEFmUUI5UUgyQWZjQitBSDVBaThDRHdJUUFoRUNGQUlWQWhjQ0dRTCtBdjhEQUFNQkF3SURBd01FQXdVREJnTUhBd2dEQ1FNS0F3c0REQU1OQXc0RER3TVFBeEVERWdNVEF4UURGUU1XQXhjREdBTVpBMDhER2dNYkF4d0RIUU1lQXg4RElBTWhBeUlESXdNa0F5VURKZ01uQXlnREtRTXFBeXNETEFNdEF5NERMd014QXpJRE13TTBBelVETmdNM0F6Z0RPUU02QXpzRFBBTTlBejREUHdOQUEwRURRZ05EQTBRRFJnTkZBMGNEU0FOSkEwb0RTd05NQTAwRFRnTlFBMUVEVWdUSkJNd0V6UVRRQk5JRTB3SUJCTlVFd1FUQ0JNTUV4QVRGQk1ZRXh3VElCTllFMkFUWkFoZ0Uyd0lhQk53Qy9BSU9CTmNDRXdJTkJOb0NGZ0lNQWhJQUFRQzNBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQ0hBSXdBa3dEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QkFBRUJBUUlCQXdFRUFRVUJCZ0V0QVRFQk13RTVBVHNCUFFGQUFVY0NTd0puQW1nQ2FRSnFBbXNDYkFKdEFtNENid0p3QW5FQ2NnSnpBblFDZFFKMkFuY0NlQUo1QW5vQ2V3SjhBbjBDZmdKL0FvQUNnUUtDQW9RQ2hnS0lBb29DakFLT0FwQUNrZ0tVQXBZQ21BS2FBcHdDbmdLZ0FxSUNwQUttQXFnQ3FnS3NBcTRDc3dLMUFyY0N1UUs3QXIwQ3Z3TEJBc01DeGdMSUFzb0N6QUxPQXRBQzBnTFVBdFlDMmdMY0F0NEM0QUxpQXVRQzVnTG9BdW9DN0FMdUF2QUM4d0wxQXZjRGtBT1JBNUlEa3dPVUE1VURsZ09YQTVnRG1RT2FBNXNEbkFPZEE1NERud084QTc0RHdBUE9BOVVEMndQaEJFY0VTZ1JNQkZBRVdBUmFCRnNFWHdSckFBWUFBQUFHQUJJQUtnQkNBRm9BY2dDS0FBTUFBQUFCQUJJQUFRQ1FBQUVBQUFBYUFBRUFBUUJOQUFNQUFBQUJBQklBQVFCNEFBRUFBQUFhQUFFQUFRQk9BQU1BQUFBQkFCSUFBUUJnQUFFQUFBQWFBQUVBQVFLdUFBTUFBQUFCQUJJQUFRQklBQUVBQUFBYUFBRUFBUU9iQUFNQUFBQUJBQklBQVFBd0FBRUFBQUFhQUFFQUFRT2RBQU1BQUFBQkFCSUFBUUFZQUFFQUFBQWFBQUVBQVFRYUFBSUFBUUNuQUtzQUFBQUVBQUFBQVFBSUFBRUdIZ0EyQUhJQXBBQ3VBTGdBeWdEOEFRNEJHQUZLQVdRQmZnR1FBYm9CN0FIMkFoZ0NNZ0pFQW5ZQ2lBS2lBc3dDM2dNUUF4b0RKQU0yQTJnRGNnTjhBNFlEb0FPNkE4d0Q5Z1FvQkRJRVZBUnVCSUFFc2dURUJONEZDQVVhQlNRRkxnVTRCVUlGYkFXV0JjQUY2Z1lVQUFZQURnQVVBQm9BSUFBbUFDd0NUQUFDQUtjQ1RRQUNBS2dDVHdBQ0FLa0Q4UUFDQUtvRWV3QUNBS3NEN3dBQ0FLd0FBUUFFQklnQUFnQ3NBQUVBQkFLSkFBSUFxQUFDQUFZQURBU0tBQUlBckFTTUFBSUJvZ0FHQUE0QUZBQWFBQ0FBSmdBc0FsUUFBZ0NuQWxVQUFnQ29CQXNBQWdDcEJBa0FBZ0NxQkgwQUFnQ3JCQWNBQWdDc0FBSUFCZ0FNQkhjQUFnQ29BcU1BQWdHaUFBRUFCQVNPQUFJQXJBQUdBQTRBRkFBYUFDQUFKZ0FzQWxnQUFnQ25BbGtBQWdDb0FxY0FBZ0NwQkJjQUFnQ3FCSDhBQWdDckJCa0FBZ0NzQUFNQUNBQU9BQlFFa0FBQ0FLZ0VrZ0FDQUt3Q3RBQUNBYUlBQXdBSUFBNEFGQUsyQUFJQXFBU1VBQUlBckFLNEFBSUJvZ0FDQUFZQURBT3RBQUlBcUFTV0FBSUFyQUFGQUF3QUVnQVlBQjRBSkFSNUFBSUFwd0srQUFJQXFBSmNBQUlBcVFTWUFBSUFyQUxBQUFJQm9nQUdBQTRBRkFBYUFDQUFKZ0FzQWwwQUFnQ25BbDRBQWdDb0FtQUFBZ0NwQkIwQUFnQ3FCSUVBQWdDckJCc0FBZ0NzQUFFQUJBU2FBQUlBcUFBRUFBb0FFQUFXQUJ3Q3l3QUNBS2dFZ3dBQ0FLc0VuQUFDQUt3Q3pRQUNBYUlBQXdBSUFBNEFGQUxSQUFJQXFBU2VBQUlBckFMWEFBSUJvZ0FDQUFZQURBU2dBQUlBckFMYkFBSUJvZ0FHQUE0QUZBQWFBQ0FBSmdBc0FtSUFBZ0NuQW1NQUFnQ29BdUVBQWdDcEJEVUFBZ0NxQklVQUFnQ3JCRE1BQWdDc0FBSUFCZ0FNQktJQUFnQ3BCS1FBQWdDc0FBTUFDQUFPQUJRRG9BQUNBS2NEb2dBQ0FLZ0VwZ0FDQUt3QUJRQU1BQklBR0FBZUFDUURwZ0FDQUtjQ1pnQUNBS2dFUlFBQ0FLa0VRd0FDQUtvRVFRQUNBS3dBQWdBR0FBd0M4Z0FDQUtnRXFBQUNBS3dBQmdBT0FCUUFHZ0FnQUNZQUxBSm5BQUlBcHdKb0FBSUFxQUpxQUFJQXFRUHlBQUlBcWdSOEFBSUFxd1B3QUFJQXJBQUJBQVFFaVFBQ0FLd0FBUUFFQW9vQUFnQ29BQUlBQmdBTUJJc0FBZ0NzQkkwQUFnR2lBQVlBRGdBVUFCb0FJQUFtQUN3Q2J3QUNBS2NDY0FBQ0FLZ0VEQUFDQUtrRUNnQUNBS29FZmdBQ0FLc0VDQUFDQUt3QUFRQUVCSGdBQWdDb0FBRUFCQVNQQUFJQXJBQUJBQVFFR2dBQ0FLd0FBd0FJQUE0QUZBU1JBQUlBcUFTVEFBSUFyQUsxQUFJQm9nQURBQWdBRGdBVUFyY0FBZ0NvQkpVQUFnQ3NBcmtBQWdHaUFBSUFCZ0FNQTY0QUFnQ29CSmNBQWdDc0FBVUFEQUFTQUJnQUhnQWtCSG9BQWdDbkFyOEFBZ0NvQW5jQUFnQ3BCSmtBQWdDc0FzRUFBZ0dpQUFZQURnQVVBQm9BSUFBbUFDd0NlQUFDQUtjQ2VRQUNBS2dDZXdBQ0FLa0VIZ0FDQUtvRWdnQUNBS3NFSEFBQ0FLd0FBUUFFQkpzQUFnQ29BQVFBQ2dBUUFCWUFIQUxNQUFJQXFBU0VBQUlBcXdTZEFBSUFyQUxPQUFJQm9nQURBQWdBRGdBVUF0SUFBZ0NvQko4QUFnQ3NBdGdBQWdHaUFBSUFCZ0FNQktFQUFnQ3NBdHdBQWdHaUFBWUFEZ0FVQUJvQUlBQW1BQ3dDZlFBQ0FLY0NmZ0FDQUtnQzRnQUNBS2tFTmdBQ0FLb0VoZ0FDQUtzRU5BQUNBS3dBQWdBR0FBd0Vvd0FDQUtrRXBRQUNBS3dBQXdBSUFBNEFGQU9oQUFJQXB3T2pBQUlBcUFTbkFBSUFyQUFGQUF3QUVnQVlBQjRBSkFPbkFBSUFwd0tCQUFJQXFBUkdBQUlBcVFSRUFBSUFxZ1JDQUFJQXJBQUNBQVlBREFMekFBSUFxQVNwQUFJQXJBQUJBQVFDK0FBQ0FLZ0FBUUFFQXZvQUFnQ29BQUVBQkFMNUFBSUFxQUFCQUFRQyt3QUNBS2dBQlFBTUFCSUFHQUFlQUNRQ2N3QUNBS2NDZEFBQ0FLZ0NxQUFDQUtrRUdBQUNBS29FZ0FBQ0FLc0FCUUFNQUJJQUdBQWVBQ1FFS3dBQ0FLY0VLUUFDQUtnRUx3QUNBS2tFTFFBQ0FLb0VNUUFDQUt3QUJRQU1BQklBR0FBZUFDUUVMQUFDQUtjRUtnQUNBS2dFTUFBQ0FLa0VMZ0FDQUtvRU1nQUNBS3dBQlFBTUFCSUFHQUFlQUNRRU9RQUNBS2NFTndBQ0FLZ0VQUUFDQUtrRU93QUNBS29FUHdBQ0FLd0FCUUFNQUJJQUdBQWVBQ1FFT2dBQ0FLY0VPQUFDQUtnRVBnQUNBS2tFUEFBQ0FLb0VRQUFDQUt3QUFRQUVCSWNBQWdDb0FBSUFFUUFsQUNrQUFBQXJBQzBBQlFBdkFEUUFDQUEyQURzQURnQTlBRDRBRkFCRkFFa0FGZ0JMQUUwQUd3QlBBRlFBSGdCV0FGc0FKQUJkQUY0QUtnQ0JBSUVBTEFDREFJTUFMUUNHQUlZQUxnQ0pBSWtBTHdDTUFJd0FNQUNYQUpvQU1RRFBBTThBTlFBQkFBQUFBUUFJQUFFQUJnQUNBQUVBQWdMVkF0WUFBUUFBQUFFQUNBQUNBQTRBQkFUZUJOOEU0QVRoQUFFQUJBS0hBb2dDbVFLYUFBUUFBQUFCQUFnQUFRQW1BQUlBQ2dBY0FBSUFCZ0FNQWFNQUFnQktBYWdBQWdCWUFBRUFCQUdwQUFJQVdBQUJBQUlBU2dCWEFBUUFBQUFCQUFnQUFRQkVBQUlBQ2dBVUFBRUFCQUdrQUFJQVRRQUJBQVFCcGdBQ0FFMEFCQUFBQUFFQUNBQUJBQjRBQWdBS0FCUUFBUUFFQWFVQUFnQlFBQUVBQkFHbkFBSUFVQUFCQUFJQVNnR2pBQUVBQUFBQkFBZ0FBUUFHQVpVQUFRQUJBRXNBQVFBQUFBRUFDQUFCQUFZQkp3QUJBQUVBdWdBQkFBQUFBUUFJQUFFQUJnR3NBQUVBQVFBMkFBRUFBQUFCQUFnQUFnQWNBQUlCNHdIa0FBRUFBQUFCQUFnQUFnQUtBQUlCNVFIbUFBRUFBZ0F2QUU4QUFRQUFBQUVBQ0FBQ0FCNEFEQUlvQWlvQ0tRSXJBaXdDSHdJZ0FpRUNJZ0d1QWlRQ0pRQUJBQXdBSndBb0FDc0FNd0ExQUVZQVJ3QklBRXNBVXdCVUFGVUFBUUFBQUFFQUNBQUNBQXdBQXdJbUFpY0NKd0FCQUFNQVNRQkxBaUlBQVFBQUFBRUFDQUFDQUdZQUNBSTlBaTBDTGdJd0FqRUNPUUk2QWp3QUFRQUFBQUVBQ0FBQ0FCWUFDQUFiQUJVQUZnQVhBQmdBR1FBZEFCUUFBUUFJQWEwQ0l3UnhCSElFY3dSMEJIVUVkZ0FCQUFBQUFRQUlBQUlBRmdBSUJIWUNJd1J4QkhJRWN3UjBBYTBFZFFBQkFBZ0FGQUFWQUJZQUZ3QVlBQmtBR3dBZEFBRUFBQUFCQUFnQUFnQVdBQWdBRlFBV0FCY0FHQUFaQUJzQUhRQVVBQUVBQ0FJdEFpNENNQUl4QWprQ09nSThBajBBQVFBQUFBRUFDQUFCQUFZQmFRQUJBQUVBRXdBR0FBQUFBUUFJQUFNQUFRQVNBQUVBVWdBQUFBRUFBQUFhQUFJQUFnRjhBWHdBQUFIVUFkMEFBUUFCQUFBQUFRQUlBQUVBS0FIQUFBRUFBQUFCQUFnQUFnQWFBQW9DTWdCNkFITUFkQUl6QWpRQ05RSTJBamNDT0FBQ0FBRUFGQUFkQUFBQUFRQUFBQUVBQ0FBQ0FDWUFFQUhVQWRVQjFnSFhBZGdCMlFIYUFkc0IzQUhkQWtBQ1BnSkJBa0lDUHdKREFBRUFFQUFVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUUwQVRnS3VBNXNEblFRYSIKfTs="></script>
<link href="data:text/css,%40keyframes%20dtb%2Dspinner%7B100%25%7Btransform%3Arotate%28360deg%29%7D%7D%40%2Do%2Dkeyframes%20dtb%2Dspinner%7B100%25%7B%2Do%2Dtransform%3Arotate%28360deg%29%3Btransform%3Arotate%28360deg%29%7D%7D%40%2Dms%2Dkeyframes%20dtb%2Dspinner%7B100%25%7B%2Dms%2Dtransform%3Arotate%28360deg%29%3Btransform%3Arotate%28360deg%29%7D%7D%40%2Dwebkit%2Dkeyframes%20dtb%2Dspinner%7B100%25%7B%2Dwebkit%2Dtransform%3Arotate%28360deg%29%3Btransform%3Arotate%28360deg%29%7D%7D%40%2Dmoz%2Dkeyframes%20dtb%2Dspinner%7B100%25%7B%2Dmoz%2Dtransform%3Arotate%28360deg%29%3Btransform%3Arotate%28360deg%29%7D%7Ddiv%2Edt%2Dbutton%2Dinfo%7Bposition%3Afixed%3Btop%3A50%25%3Bleft%3A50%25%3Bwidth%3A400px%3Bmargin%2Dtop%3A%2D100px%3Bmargin%2Dleft%3A%2D200px%3Bbackground%2Dcolor%3Awhite%3Bborder%3A2px%20solid%20%23111%3Bbox%2Dshadow%3A3px%203px%208px%20rgba%280%2C0%2C0%2C0%2E3%29%3Bborder%2Dradius%3A3px%3Btext%2Dalign%3Acenter%3Bz%2Dindex%3A21%7Ddiv%2Edt%2Dbutton%2Dinfo%20h2%7Bpadding%3A0%2E5em%3Bmargin%3A0%3Bfont%2Dweight%3Anormal%3Bborder%2Dbottom%3A1px%20solid%20%23ddd%3Bbackground%2Dcolor%3A%23f3f3f3%7Ddiv%2Edt%2Dbutton%2Dinfo%3Ediv%7Bpadding%3A1em%7Ddiv%2Edt%2Dbutton%2Dcollection%2Dtitle%7Btext%2Dalign%3Acenter%3Bpadding%3A0%2E3em%200%200%2E5em%3Bfont%2Dsize%3A0%2E9em%7Ddiv%2Edt%2Dbutton%2Dcollection%2Dtitle%3Aempty%7Bdisplay%3Anone%7Dbutton%2Edt%2Dbutton%2Cdiv%2Edt%2Dbutton%2Ca%2Edt%2Dbutton%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%3Bbox%2Dsizing%3Aborder%2Dbox%3Bmargin%2Dright%3A0%2E333em%3Bmargin%2Dbottom%3A0%2E333em%3Bpadding%3A0%2E5em%201em%3Bborder%3A1px%20solid%20%23999%3Bborder%2Dradius%3A2px%3Bcursor%3Apointer%3Bfont%2Dsize%3A0%2E88em%3Bline%2Dheight%3A1%2E6em%3Bcolor%3Ablack%3Bwhite%2Dspace%3Anowrap%3Boverflow%3Ahidden%3Bbackground%2Dcolor%3A%23e9e9e9%3Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23e9e9e9%20100%25%29%3Bbackground%2Dimage%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23e9e9e9%20100%25%29%3Bbackground%2Dimage%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23e9e9e9%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23e9e9e9%20100%25%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20bottom%2C%20%23fff%200%25%2C%20%23e9e9e9%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28GradientType%3D0%2CStartColorStr%3D%27white%27%2C%20EndColorStr%3D%27%23e9e9e9%27%29%3B%2Dwebkit%2Duser%2Dselect%3Anone%3B%2Dmoz%2Duser%2Dselect%3Anone%3B%2Dms%2Duser%2Dselect%3Anone%3Buser%2Dselect%3Anone%3Btext%2Ddecoration%3Anone%3Boutline%3Anone%3Btext%2Doverflow%3Aellipsis%7Dbutton%2Edt%2Dbutton%2Edisabled%2Cdiv%2Edt%2Dbutton%2Edisabled%2Ca%2Edt%2Dbutton%2Edisabled%7Bcolor%3A%23999%3Bborder%3A1px%20solid%20%23d0d0d0%3Bcursor%3Adefault%3Bbackground%2Dcolor%3A%23f9f9f9%3Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23f9f9f9%20100%25%29%3Bbackground%2Dimage%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23f9f9f9%20100%25%29%3Bbackground%2Dimage%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23f9f9f9%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23f9f9f9%20100%25%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20bottom%2C%20%23fff%200%25%2C%20%23f9f9f9%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28GradientType%3D0%2CStartColorStr%3D%27%23ffffff%27%2C%20EndColorStr%3D%27%23f9f9f9%27%29%7Dbutton%2Edt%2Dbutton%3Aactive%3Anot%28%2Edisabled%29%2Cbutton%2Edt%2Dbutton%2Eactive%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%3Aactive%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%2Eactive%3Anot%28%2Edisabled%29%2Ca%2Edt%2Dbutton%3Aactive%3Anot%28%2Edisabled%29%2Ca%2Edt%2Dbutton%2Eactive%3Anot%28%2Edisabled%29%7Bbackground%2Dcolor%3A%23e2e2e2%3Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23f3f3f3%200%25%2C%20%23e2e2e2%20100%25%29%3Bbackground%2Dimage%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23f3f3f3%200%25%2C%20%23e2e2e2%20100%25%29%3Bbackground%2Dimage%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23f3f3f3%200%25%2C%20%23e2e2e2%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23f3f3f3%200%25%2C%20%23e2e2e2%20100%25%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20bottom%2C%20%23f3f3f3%200%25%2C%20%23e2e2e2%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28GradientType%3D0%2CStartColorStr%3D%27%23f3f3f3%27%2C%20EndColorStr%3D%27%23e2e2e2%27%29%3Bbox%2Dshadow%3Ainset%201px%201px%203px%20%23999999%7Dbutton%2Edt%2Dbutton%3Aactive%3Anot%28%2Edisabled%29%3Ahover%3Anot%28%2Edisabled%29%2Cbutton%2Edt%2Dbutton%2Eactive%3Anot%28%2Edisabled%29%3Ahover%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%3Aactive%3Anot%28%2Edisabled%29%3Ahover%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%2Eactive%3Anot%28%2Edisabled%29%3Ahover%3Anot%28%2Edisabled%29%2Ca%2Edt%2Dbutton%3Aactive%3Anot%28%2Edisabled%29%3Ahover%3Anot%28%2Edisabled%29%2Ca%2Edt%2Dbutton%2Eactive%3Anot%28%2Edisabled%29%3Ahover%3Anot%28%2Edisabled%29%7Bbox%2Dshadow%3Ainset%201px%201px%203px%20%23999999%3Bbackground%2Dcolor%3A%23cccccc%3Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23eaeaea%200%25%2C%20%23ccc%20100%25%29%3Bbackground%2Dimage%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23eaeaea%200%25%2C%20%23ccc%20100%25%29%3Bbackground%2Dimage%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23eaeaea%200%25%2C%20%23ccc%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23eaeaea%200%25%2C%20%23ccc%20100%25%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20bottom%2C%20%23eaeaea%200%25%2C%20%23ccc%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28GradientType%3D0%2CStartColorStr%3D%27%23eaeaea%27%2C%20EndColorStr%3D%27%23cccccc%27%29%7Dbutton%2Edt%2Dbutton%3Ahover%2Cdiv%2Edt%2Dbutton%3Ahover%2Ca%2Edt%2Dbutton%3Ahover%7Btext%2Ddecoration%3Anone%7Dbutton%2Edt%2Dbutton%3Ahover%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%3Ahover%3Anot%28%2Edisabled%29%2Ca%2Edt%2Dbutton%3Ahover%3Anot%28%2Edisabled%29%7Bborder%3A1px%20solid%20%23666%3Bbackground%2Dcolor%3A%23e0e0e0%3Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23f9f9f9%200%25%2C%20%23e0e0e0%20100%25%29%3Bbackground%2Dimage%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23f9f9f9%200%25%2C%20%23e0e0e0%20100%25%29%3Bbackground%2Dimage%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23f9f9f9%200%25%2C%20%23e0e0e0%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23f9f9f9%200%25%2C%20%23e0e0e0%20100%25%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20bottom%2C%20%23f9f9f9%200%25%2C%20%23e0e0e0%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28GradientType%3D0%2CStartColorStr%3D%27%23f9f9f9%27%2C%20EndColorStr%3D%27%23e0e0e0%27%29%7Dbutton%2Edt%2Dbutton%3Afocus%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%3Afocus%3Anot%28%2Edisabled%29%2Ca%2Edt%2Dbutton%3Afocus%3Anot%28%2Edisabled%29%7Bborder%3A1px%20solid%20%23426c9e%3Btext%2Dshadow%3A0%201px%200%20%23c4def1%3Boutline%3Anone%3Bbackground%2Dcolor%3A%2379ace9%3Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23bddef4%200%25%2C%20%2379ace9%20100%25%29%3Bbackground%2Dimage%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23bddef4%200%25%2C%20%2379ace9%20100%25%29%3Bbackground%2Dimage%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23bddef4%200%25%2C%20%2379ace9%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23bddef4%200%25%2C%20%2379ace9%20100%25%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20bottom%2C%20%23bddef4%200%25%2C%20%2379ace9%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28GradientType%3D0%2CStartColorStr%3D%27%23bddef4%27%2C%20EndColorStr%3D%27%2379ace9%27%29%7D%2Edt%2Dbutton%20embed%7Boutline%3Anone%7Ddiv%2Edt%2Dbuttons%7Bposition%3Arelative%3Bfloat%3Aleft%7Ddiv%2Edt%2Dbuttons%2Ebuttons%2Dright%7Bfloat%3Aright%7Ddiv%2Edt%2Dbutton%2Dcollection%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bwidth%3A150px%3Bmargin%2Dtop%3A3px%3Bpadding%3A8px%208px%204px%208px%3Bborder%3A1px%20solid%20%23ccc%3Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C0%2E4%29%3Bbackground%2Dcolor%3Awhite%3Boverflow%3Ahidden%3Bz%2Dindex%3A2002%3Bborder%2Dradius%3A5px%3Bbox%2Dshadow%3A3px%203px%205px%20rgba%280%2C0%2C0%2C0%2E3%29%3Bbox%2Dsizing%3Aborder%2Dbox%7Ddiv%2Edt%2Dbutton%2Dcollection%20button%2Edt%2Dbutton%2Cdiv%2Edt%2Dbutton%2Dcollection%20div%2Edt%2Dbutton%2Cdiv%2Edt%2Dbutton%2Dcollection%20a%2Edt%2Dbutton%7Bposition%3Arelative%3Bleft%3A0%3Bright%3A0%3Bwidth%3A100%25%3Bdisplay%3Ablock%3Bfloat%3Anone%3Bmargin%2Dbottom%3A4px%3Bmargin%2Dright%3A0%7Ddiv%2Edt%2Dbutton%2Dcollection%20button%2Edt%2Dbutton%3Aactive%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%2Dcollection%20button%2Edt%2Dbutton%2Eactive%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%2Dcollection%20div%2Edt%2Dbutton%3Aactive%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%2Dcollection%20div%2Edt%2Dbutton%2Eactive%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%2Dcollection%20a%2Edt%2Dbutton%3Aactive%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%2Dcollection%20a%2Edt%2Dbutton%2Eactive%3Anot%28%2Edisabled%29%7Bbackground%2Dcolor%3A%23dadada%3Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23f0f0f0%200%25%2C%20%23dadada%20100%25%29%3Bbackground%2Dimage%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23f0f0f0%200%25%2C%20%23dadada%20100%25%29%3Bbackground%2Dimage%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23f0f0f0%200%25%2C%20%23dadada%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23f0f0f0%200%25%2C%20%23dadada%20100%25%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20bottom%2C%20%23f0f0f0%200%25%2C%20%23dadada%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28GradientType%3D0%2CStartColorStr%3D%27%23f0f0f0%27%2C%20EndColorStr%3D%27%23dadada%27%29%3Bbox%2Dshadow%3Ainset%201px%201px%203px%20%23666%7Ddiv%2Edt%2Dbutton%2Dcollection%2Efixed%7Bposition%3Afixed%3Btop%3A50%25%3Bleft%3A50%25%3Bmargin%2Dleft%3A%2D75px%3Bborder%2Dradius%3A0%7Ddiv%2Edt%2Dbutton%2Dcollection%2Efixed%2Etwo%2Dcolumn%7Bmargin%2Dleft%3A%2D200px%7Ddiv%2Edt%2Dbutton%2Dcollection%2Efixed%2Ethree%2Dcolumn%7Bmargin%2Dleft%3A%2D225px%7Ddiv%2Edt%2Dbutton%2Dcollection%2Efixed%2Efour%2Dcolumn%7Bmargin%2Dleft%3A%2D300px%7Ddiv%2Edt%2Dbutton%2Dcollection%3E%3Alast%2Dchild%7Bdisplay%3Ablock%20%21important%3B%2Dwebkit%2Dcolumn%2Dgap%3A8px%3B%2Dmoz%2Dcolumn%2Dgap%3A8px%3B%2Dms%2Dcolumn%2Dgap%3A8px%3B%2Do%2Dcolumn%2Dgap%3A8px%3Bcolumn%2Dgap%3A8px%7Ddiv%2Edt%2Dbutton%2Dcollection%3E%3Alast%2Dchild%3E%2A%7B%2Dwebkit%2Dcolumn%2Dbreak%2Dinside%3Aavoid%3Bbreak%2Dinside%3Aavoid%7Ddiv%2Edt%2Dbutton%2Dcollection%2Etwo%2Dcolumn%7Bwidth%3A400px%7Ddiv%2Edt%2Dbutton%2Dcollection%2Etwo%2Dcolumn%3E%3Alast%2Dchild%7Bpadding%2Dbottom%3A1px%3B%2Dwebkit%2Dcolumn%2Dcount%3A2%3B%2Dmoz%2Dcolumn%2Dcount%3A2%3B%2Dms%2Dcolumn%2Dcount%3A2%3B%2Do%2Dcolumn%2Dcount%3A2%3Bcolumn%2Dcount%3A2%7Ddiv%2Edt%2Dbutton%2Dcollection%2Ethree%2Dcolumn%7Bwidth%3A450px%7Ddiv%2Edt%2Dbutton%2Dcollection%2Ethree%2Dcolumn%3E%3Alast%2Dchild%7Bpadding%2Dbottom%3A1px%3B%2Dwebkit%2Dcolumn%2Dcount%3A3%3B%2Dmoz%2Dcolumn%2Dcount%3A3%3B%2Dms%2Dcolumn%2Dcount%3A3%3B%2Do%2Dcolumn%2Dcount%3A3%3Bcolumn%2Dcount%3A3%7Ddiv%2Edt%2Dbutton%2Dcollection%2Efour%2Dcolumn%7Bwidth%3A600px%7Ddiv%2Edt%2Dbutton%2Dcollection%2Efour%2Dcolumn%3E%3Alast%2Dchild%7Bpadding%2Dbottom%3A1px%3B%2Dwebkit%2Dcolumn%2Dcount%3A4%3B%2Dmoz%2Dcolumn%2Dcount%3A4%3B%2Dms%2Dcolumn%2Dcount%3A4%3B%2Do%2Dcolumn%2Dcount%3A4%3Bcolumn%2Dcount%3A4%7Ddiv%2Edt%2Dbutton%2Dcollection%20%2Edt%2Dbutton%7Bborder%2Dradius%3A0%7Ddiv%2Edt%2Dbutton%2Dbackground%7Bposition%3Afixed%3Btop%3A0%3Bleft%3A0%3Bwidth%3A100%25%3Bheight%3A100%25%3Bbackground%3Argba%280%2C0%2C0%2C0%2E7%29%3Bbackground%3A%2Dms%2Dradial%2Dgradient%28center%2C%20ellipse%20farthest%2Dcorner%2C%20rgba%280%2C0%2C0%2C0%2E3%29%200%25%2C%20rgba%280%2C0%2C0%2C0%2E7%29%20100%25%29%3Bbackground%3A%2Dmoz%2Dradial%2Dgradient%28center%2C%20ellipse%20farthest%2Dcorner%2C%20rgba%280%2C0%2C0%2C0%2E3%29%200%25%2C%20rgba%280%2C0%2C0%2C0%2E7%29%20100%25%29%3Bbackground%3A%2Do%2Dradial%2Dgradient%28center%2C%20ellipse%20farthest%2Dcorner%2C%20rgba%280%2C0%2C0%2C0%2E3%29%200%25%2C%20rgba%280%2C0%2C0%2C0%2E7%29%20100%25%29%3Bbackground%3A%2Dwebkit%2Dgradient%28radial%2C%20center%20center%2C%200%2C%20center%20center%2C%20497%2C%20color%2Dstop%280%2C%20rgba%280%2C0%2C0%2C0%2E3%29%29%2C%20color%2Dstop%281%2C%20rgba%280%2C0%2C0%2C0%2E7%29%29%29%3Bbackground%3A%2Dwebkit%2Dradial%2Dgradient%28center%2C%20ellipse%20farthest%2Dcorner%2C%20rgba%280%2C0%2C0%2C0%2E3%29%200%25%2C%20rgba%280%2C0%2C0%2C0%2E7%29%20100%25%29%3Bbackground%3Aradial%2Dgradient%28ellipse%20farthest%2Dcorner%20at%20center%2C%20rgba%280%2C0%2C0%2C0%2E3%29%200%25%2C%20rgba%280%2C0%2C0%2C0%2E7%29%20100%25%29%3Bz%2Dindex%3A2001%7D%40media%20screen%20and%20%28max%2Dwidth%3A%20640px%29%7Bdiv%2Edt%2Dbuttons%7Bfloat%3Anone%20%21important%3Btext%2Dalign%3Acenter%7D%7Dbutton%2Edt%2Dbutton%2Eprocessing%2Cdiv%2Edt%2Dbutton%2Eprocessing%2Ca%2Edt%2Dbutton%2Eprocessing%7Bcolor%3Argba%280%2C0%2C0%2C0%2E2%29%7Dbutton%2Edt%2Dbutton%2Eprocessing%3Aafter%2Cdiv%2Edt%2Dbutton%2Eprocessing%3Aafter%2Ca%2Edt%2Dbutton%2Eprocessing%3Aafter%7Bposition%3Aabsolute%3Btop%3A50%25%3Bleft%3A50%25%3Bwidth%3A16px%3Bheight%3A16px%3Bmargin%3A%2D8px%200%200%20%2D8px%3Bbox%2Dsizing%3Aborder%2Dbox%3Bdisplay%3Ablock%3Bcontent%3A%27%20%27%3Bborder%3A2px%20solid%20%23282828%3Bborder%2Dradius%3A50%25%3Bborder%2Dleft%2Dcolor%3Atransparent%3Bborder%2Dright%2Dcolor%3Atransparent%3Banimation%3Adtb%2Dspinner%201500ms%20infinite%20linear%3B%2Do%2Danimation%3Adtb%2Dspinner%201500ms%20infinite%20linear%3B%2Dms%2Danimation%3Adtb%2Dspinner%201500ms%20infinite%20linear%3B%2Dwebkit%2Danimation%3Adtb%2Dspinner%201500ms%20infinite%20linear%3B%2Dmoz%2Danimation%3Adtb%2Dspinner%201500ms%20infinite%20linear%7D%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,LyohCiBCdXR0b25zIGZvciBEYXRhVGFibGVzIDEuNi4xCiDCqTIwMTYtMjAxOSBTcHJ5TWVkaWEgTHRkIC0gZGF0YXRhYmxlcy5uZXQvbGljZW5zZQoqLwooZnVuY3Rpb24oZCl7ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwiZGF0YXRhYmxlcy5uZXQiXSxmdW5jdGlvbih1KXtyZXR1cm4gZCh1LHdpbmRvdyxkb2N1bWVudCl9KToib2JqZWN0Ij09PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKHUsdCl7dXx8KHU9d2luZG93KTt0JiZ0LmZuLmRhdGFUYWJsZXx8KHQ9cmVxdWlyZSgiZGF0YXRhYmxlcy5uZXQiKSh1LHQpLiQpO3JldHVybiBkKHQsdSx1LmRvY3VtZW50KX06ZChqUXVlcnksd2luZG93LGRvY3VtZW50KX0pKGZ1bmN0aW9uKGQsdSx0LHApe2Z1bmN0aW9uIHkoYSl7YT1uZXcgbS5BcGkoYSk7dmFyIGI9YS5pbml0KCkuYnV0dG9uc3x8bS5kZWZhdWx0cy5idXR0b25zO3JldHVybihuZXcgbihhLGIpKS5jb250YWluZXIoKX12YXIgbT1kLmZuLmRhdGFUYWJsZSxCPTAsQz0wLHE9bS5leHQuYnV0dG9ucyxuPWZ1bmN0aW9uKGEsYil7aWYoISh0aGlzIGluc3RhbmNlb2YKbikpcmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybihuZXcgbihiLGEpKS5jb250YWluZXIoKX07InVuZGVmaW5lZCI9PT10eXBlb2YgYiYmKGI9e30pOyEwPT09YiYmKGI9e30pO2QuaXNBcnJheShiKSYmKGI9e2J1dHRvbnM6Yn0pO3RoaXMuYz1kLmV4dGVuZCghMCx7fSxuLmRlZmF1bHRzLGIpO2IuYnV0dG9ucyYmKHRoaXMuYy5idXR0b25zPWIuYnV0dG9ucyk7dGhpcy5zPXtkdDpuZXcgbS5BcGkoYSksYnV0dG9uczpbXSxsaXN0ZW5LZXlzOiIiLG5hbWVzcGFjZToiZHRiIitCKyt9O3RoaXMuZG9tPXtjb250YWluZXI6ZCgiPCIrdGhpcy5jLmRvbS5jb250YWluZXIudGFnKyIvPiIpLmFkZENsYXNzKHRoaXMuYy5kb20uY29udGFpbmVyLmNsYXNzTmFtZSl9O3RoaXMuX2NvbnN0cnVjdG9yKCl9O2QuZXh0ZW5kKG4ucHJvdG90eXBlLHthY3Rpb246ZnVuY3Rpb24oYSxiKXthPXRoaXMuX25vZGVUb0J1dHRvbihhKTtpZihiPT09cClyZXR1cm4gYS5jb25mLmFjdGlvbjthLmNvbmYuYWN0aW9uPQpiO3JldHVybiB0aGlzfSxhY3RpdmU6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLl9ub2RlVG9CdXR0b24oYSk7YT10aGlzLmMuZG9tLmJ1dHRvbi5hY3RpdmU7Yz1kKGMubm9kZSk7aWYoYj09PXApcmV0dXJuIGMuaGFzQ2xhc3MoYSk7Yy50b2dnbGVDbGFzcyhhLGI9PT1wPyEwOmIpO3JldHVybiB0aGlzfSxhZGQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLnMuYnV0dG9ucztpZigic3RyaW5nIj09PXR5cGVvZiBiKXtiPWIuc3BsaXQoIi0iKTt2YXIgZT10aGlzLnM7Yz0wO2Zvcih2YXIgZD1iLmxlbmd0aC0xO2M8ZDtjKyspZT1lLmJ1dHRvbnNbMSpiW2NdXTtjPWUuYnV0dG9ucztiPTEqYltiLmxlbmd0aC0xXX10aGlzLl9leHBhbmRCdXR0b24oYyxhLGUhPT1wLGIpO3RoaXMuX2RyYXcoKTtyZXR1cm4gdGhpc30sY29udGFpbmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tLmNvbnRhaW5lcn0sZGlzYWJsZTpmdW5jdGlvbihhKXthPXRoaXMuX25vZGVUb0J1dHRvbihhKTtkKGEubm9kZSkuYWRkQ2xhc3ModGhpcy5jLmRvbS5idXR0b24uZGlzYWJsZWQpOwpyZXR1cm4gdGhpc30sZGVzdHJveTpmdW5jdGlvbigpe2QoImJvZHkiKS5vZmYoImtleXVwLiIrdGhpcy5zLm5hbWVzcGFjZSk7dmFyIGE9dGhpcy5zLmJ1dHRvbnMuc2xpY2UoKSxiO3ZhciBjPTA7Zm9yKGI9YS5sZW5ndGg7YzxiO2MrKyl0aGlzLnJlbW92ZShhW2NdLm5vZGUpO3RoaXMuZG9tLmNvbnRhaW5lci5yZW1vdmUoKTthPXRoaXMucy5kdC5zZXR0aW5ncygpWzBdO2M9MDtmb3IoYj1hLmxlbmd0aDtjPGI7YysrKWlmKGEuaW5zdD09PXRoaXMpe2Euc3BsaWNlKGMsMSk7YnJlYWt9cmV0dXJuIHRoaXN9LGVuYWJsZTpmdW5jdGlvbihhLGIpe2lmKCExPT09YilyZXR1cm4gdGhpcy5kaXNhYmxlKGEpO2E9dGhpcy5fbm9kZVRvQnV0dG9uKGEpO2QoYS5ub2RlKS5yZW1vdmVDbGFzcyh0aGlzLmMuZG9tLmJ1dHRvbi5kaXNhYmxlZCk7cmV0dXJuIHRoaXN9LG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jLm5hbWV9LG5vZGU6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIHRoaXMuZG9tLmNvbnRhaW5lcjsKYT10aGlzLl9ub2RlVG9CdXR0b24oYSk7cmV0dXJuIGQoYS5ub2RlKX0scHJvY2Vzc2luZzpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMucy5kdCxlPXRoaXMuX25vZGVUb0J1dHRvbihhKTtpZihiPT09cClyZXR1cm4gZChlLm5vZGUpLmhhc0NsYXNzKCJwcm9jZXNzaW5nIik7ZChlLm5vZGUpLnRvZ2dsZUNsYXNzKCJwcm9jZXNzaW5nIixiKTtkKGMudGFibGUoKS5ub2RlKCkpLnRyaWdnZXJIYW5kbGVyKCJidXR0b25zLXByb2Nlc3NpbmcuZHQiLFtiLGMuYnV0dG9uKGEpLGMsZChhKSxlLmNvbmZdKTtyZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuX25vZGVUb0J1dHRvbihhKSxjPXRoaXMuX25vZGVUb0hvc3QoYSksZT10aGlzLnMuZHQ7aWYoYi5idXR0b25zLmxlbmd0aClmb3IodmFyIGc9Yi5idXR0b25zLmxlbmd0aC0xOzA8PWc7Zy0tKXRoaXMucmVtb3ZlKGIuYnV0dG9uc1tnXS5ub2RlKTtiLmNvbmYuZGVzdHJveSYmYi5jb25mLmRlc3Ryb3kuY2FsbChlLmJ1dHRvbihhKSwKZSxkKGEpLGIuY29uZik7dGhpcy5fcmVtb3ZlS2V5KGIuY29uZik7ZChiLm5vZGUpLnJlbW92ZSgpO2E9ZC5pbkFycmF5KGIsYyk7Yy5zcGxpY2UoYSwxKTtyZXR1cm4gdGhpc30sdGV4dDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuX25vZGVUb0J1dHRvbihhKTthPXRoaXMuYy5kb20uY29sbGVjdGlvbi5idXR0b25MaW5lcjthPWMuaW5Db2xsZWN0aW9uJiZhJiZhLnRhZz9hLnRhZzp0aGlzLmMuZG9tLmJ1dHRvbkxpbmVyLnRhZzt2YXIgZT10aGlzLnMuZHQsZz1kKGMubm9kZSksZj1mdW5jdGlvbihhKXtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGE/YShlLGcsYy5jb25mKTphfTtpZihiPT09cClyZXR1cm4gZihjLmNvbmYudGV4dCk7Yy5jb25mLnRleHQ9YjthP2cuY2hpbGRyZW4oYSkuaHRtbChmKGIpKTpnLmh0bWwoZihiKSk7cmV0dXJuIHRoaXN9LF9jb25zdHJ1Y3RvcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYj10aGlzLnMuZHQsYz1iLnNldHRpbmdzKClbMF0sZT10aGlzLmMuYnV0dG9uczsKYy5fYnV0dG9uc3x8KGMuX2J1dHRvbnM9W10pO2MuX2J1dHRvbnMucHVzaCh7aW5zdDp0aGlzLG5hbWU6dGhpcy5jLm5hbWV9KTtmb3IodmFyIGc9MCxmPWUubGVuZ3RoO2c8ZjtnKyspdGhpcy5hZGQoZVtnXSk7Yi5vbigiZGVzdHJveSIsZnVuY3Rpb24oYixlKXtlPT09YyYmYS5kZXN0cm95KCl9KTtkKCJib2R5Iikub24oImtleXVwLiIrdGhpcy5zLm5hbWVzcGFjZSxmdW5jdGlvbihiKXtpZighdC5hY3RpdmVFbGVtZW50fHx0LmFjdGl2ZUVsZW1lbnQ9PT10LmJvZHkpe3ZhciBjPVN0cmluZy5mcm9tQ2hhckNvZGUoYi5rZXlDb2RlKS50b0xvd2VyQ2FzZSgpOy0xIT09YS5zLmxpc3RlbktleXMudG9Mb3dlckNhc2UoKS5pbmRleE9mKGMpJiZhLl9rZXlwcmVzcyhjLGIpfX0pfSxfYWRkS2V5OmZ1bmN0aW9uKGEpe2Eua2V5JiYodGhpcy5zLmxpc3RlbktleXMrPWQuaXNQbGFpbk9iamVjdChhLmtleSk/YS5rZXkua2V5OmEua2V5KX0sX2RyYXc6ZnVuY3Rpb24oYSxiKXthfHwoYT10aGlzLmRvbS5jb250YWluZXIsCmI9dGhpcy5zLmJ1dHRvbnMpO2EuY2hpbGRyZW4oKS5kZXRhY2goKTtmb3IodmFyIGM9MCxlPWIubGVuZ3RoO2M8ZTtjKyspYS5hcHBlbmQoYltjXS5pbnNlcnRlciksYS5hcHBlbmQoIiAiKSxiW2NdLmJ1dHRvbnMmJmJbY10uYnV0dG9ucy5sZW5ndGgmJnRoaXMuX2RyYXcoYltjXS5jb2xsZWN0aW9uLGJbY10uYnV0dG9ucyl9LF9leHBhbmRCdXR0b246ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGc9dGhpcy5zLmR0LGY9MDtiPWQuaXNBcnJheShiKT9iOltiXTtmb3IodmFyIGg9MCxrPWIubGVuZ3RoO2g8aztoKyspe3ZhciByPXRoaXMuX3Jlc29sdmVFeHRlbmRzKGJbaF0pO2lmKHIpaWYoZC5pc0FycmF5KHIpKXRoaXMuX2V4cGFuZEJ1dHRvbihhLHIsYyxlKTtlbHNle3ZhciBsPXRoaXMuX2J1aWxkQnV0dG9uKHIsYyk7bCYmKGUhPT1wPyhhLnNwbGljZShlLDAsbCksZSsrKTphLnB1c2gobCksbC5jb25mLmJ1dHRvbnMmJihsLmNvbGxlY3Rpb249ZCgiPCIrdGhpcy5jLmRvbS5jb2xsZWN0aW9uLnRhZysKIi8+IiksbC5jb25mLl9jb2xsZWN0aW9uPWwuY29sbGVjdGlvbix0aGlzLl9leHBhbmRCdXR0b24obC5idXR0b25zLGwuY29uZi5idXR0b25zLCEwLGUpKSxyLmluaXQmJnIuaW5pdC5jYWxsKGcuYnV0dG9uKGwubm9kZSksZyxkKGwubm9kZSksciksZisrKX19fSxfYnVpbGRCdXR0b246ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmMuZG9tLmJ1dHRvbixlPXRoaXMuYy5kb20uYnV0dG9uTGluZXIsZz10aGlzLmMuZG9tLmNvbGxlY3Rpb24sZj10aGlzLnMuZHQsaD1mdW5jdGlvbihiKXtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGI/YihmLGwsYSk6Yn07YiYmZy5idXR0b24mJihjPWcuYnV0dG9uKTtiJiZnLmJ1dHRvbkxpbmVyJiYoZT1nLmJ1dHRvbkxpbmVyKTtpZihhLmF2YWlsYWJsZSYmIWEuYXZhaWxhYmxlKGYsYSkpcmV0dXJuITE7dmFyIGs9ZnVuY3Rpb24oYSxiLGMsZSl7ZS5hY3Rpb24uY2FsbChiLmJ1dHRvbihjKSxhLGIsYyxlKTtkKGIudGFibGUoKS5ub2RlKCkpLnRyaWdnZXJIYW5kbGVyKCJidXR0b25zLWFjdGlvbi5kdCIsCltiLmJ1dHRvbihjKSxiLGMsZV0pfTtnPWEudGFnfHxjLnRhZzt2YXIgcj1hLmNsaWNrQmx1cnM9PT1wPyEwOmEuY2xpY2tCbHVycyxsPWQoIjwiK2crIi8+IikuYWRkQ2xhc3MoYy5jbGFzc05hbWUpLmF0dHIoInRhYmluZGV4Iix0aGlzLnMuZHQuc2V0dGluZ3MoKVswXS5pVGFiSW5kZXgpLmF0dHIoImFyaWEtY29udHJvbHMiLHRoaXMucy5kdC50YWJsZSgpLm5vZGUoKS5pZCkub24oImNsaWNrLmR0YiIsZnVuY3Rpb24oYil7Yi5wcmV2ZW50RGVmYXVsdCgpOyFsLmhhc0NsYXNzKGMuZGlzYWJsZWQpJiZhLmFjdGlvbiYmayhiLGYsbCxhKTtyJiZsLmJsdXIoKX0pLm9uKCJrZXl1cC5kdGIiLGZ1bmN0aW9uKGIpezEzPT09Yi5rZXlDb2RlJiYhbC5oYXNDbGFzcyhjLmRpc2FibGVkKSYmYS5hY3Rpb24mJmsoYixmLGwsYSl9KTsiYSI9PT1nLnRvTG93ZXJDYXNlKCkmJmwuYXR0cigiaHJlZiIsIiMiKTsiYnV0dG9uIj09PWcudG9Mb3dlckNhc2UoKSYmbC5hdHRyKCJ0eXBlIiwiYnV0dG9uIik7CmUudGFnPyhnPWQoIjwiK2UudGFnKyIvPiIpLmh0bWwoaChhLnRleHQpKS5hZGRDbGFzcyhlLmNsYXNzTmFtZSksImEiPT09ZS50YWcudG9Mb3dlckNhc2UoKSYmZy5hdHRyKCJocmVmIiwiIyIpLGwuYXBwZW5kKGcpKTpsLmh0bWwoaChhLnRleHQpKTshMT09PWEuZW5hYmxlZCYmbC5hZGRDbGFzcyhjLmRpc2FibGVkKTthLmNsYXNzTmFtZSYmbC5hZGRDbGFzcyhhLmNsYXNzTmFtZSk7YS50aXRsZUF0dHImJmwuYXR0cigidGl0bGUiLGgoYS50aXRsZUF0dHIpKTthLmF0dHImJmwuYXR0cihhLmF0dHIpO2EubmFtZXNwYWNlfHwoYS5uYW1lc3BhY2U9Ii5kdC1idXR0b24tIitDKyspO2U9KGU9dGhpcy5jLmRvbS5idXR0b25Db250YWluZXIpJiZlLnRhZz9kKCI8IitlLnRhZysiLz4iKS5hZGRDbGFzcyhlLmNsYXNzTmFtZSkuYXBwZW5kKGwpOmw7dGhpcy5fYWRkS2V5KGEpO3RoaXMuYy5idXR0b25DcmVhdGVkJiYoZT10aGlzLmMuYnV0dG9uQ3JlYXRlZChhLGUpKTtyZXR1cm57Y29uZjphLApub2RlOmwuZ2V0KDApLGluc2VydGVyOmUsYnV0dG9uczpbXSxpbkNvbGxlY3Rpb246Yixjb2xsZWN0aW9uOm51bGx9fSxfbm9kZVRvQnV0dG9uOmZ1bmN0aW9uKGEsYil7Ynx8KGI9dGhpcy5zLmJ1dHRvbnMpO2Zvcih2YXIgYz0wLGU9Yi5sZW5ndGg7YzxlO2MrKyl7aWYoYltjXS5ub2RlPT09YSlyZXR1cm4gYltjXTtpZihiW2NdLmJ1dHRvbnMubGVuZ3RoKXt2YXIgZD10aGlzLl9ub2RlVG9CdXR0b24oYSxiW2NdLmJ1dHRvbnMpO2lmKGQpcmV0dXJuIGR9fX0sX25vZGVUb0hvc3Q6ZnVuY3Rpb24oYSxiKXtifHwoYj10aGlzLnMuYnV0dG9ucyk7Zm9yKHZhciBjPTAsZT1iLmxlbmd0aDtjPGU7YysrKXtpZihiW2NdLm5vZGU9PT1hKXJldHVybiBiO2lmKGJbY10uYnV0dG9ucy5sZW5ndGgpe3ZhciBkPXRoaXMuX25vZGVUb0hvc3QoYSxiW2NdLmJ1dHRvbnMpO2lmKGQpcmV0dXJuIGR9fX0sX2tleXByZXNzOmZ1bmN0aW9uKGEsYil7aWYoIWIuX2J1dHRvbnNIYW5kbGVkKXt2YXIgYz0KZnVuY3Rpb24oZSl7Zm9yKHZhciBnPTAsZj1lLmxlbmd0aDtnPGY7ZysrKXt2YXIgaD1lW2ddLmNvbmYsaz1lW2ddLm5vZGU7aC5rZXkmJihoLmtleT09PWE/KGIuX2J1dHRvbnNIYW5kbGVkPSEwLGQoaykuY2xpY2soKSk6IWQuaXNQbGFpbk9iamVjdChoLmtleSl8fGgua2V5LmtleSE9PWF8fGgua2V5LnNoaWZ0S2V5JiYhYi5zaGlmdEtleXx8aC5rZXkuYWx0S2V5JiYhYi5hbHRLZXl8fGgua2V5LmN0cmxLZXkmJiFiLmN0cmxLZXl8fGgua2V5Lm1ldGFLZXkmJiFiLm1ldGFLZXl8fChiLl9idXR0b25zSGFuZGxlZD0hMCxkKGspLmNsaWNrKCkpKTtlW2ddLmJ1dHRvbnMubGVuZ3RoJiZjKGVbZ10uYnV0dG9ucyl9fTtjKHRoaXMucy5idXR0b25zKX19LF9yZW1vdmVLZXk6ZnVuY3Rpb24oYSl7aWYoYS5rZXkpe3ZhciBiPWQuaXNQbGFpbk9iamVjdChhLmtleSk/YS5rZXkua2V5OmEua2V5O2E9dGhpcy5zLmxpc3RlbktleXMuc3BsaXQoIiIpO2I9ZC5pbkFycmF5KGIsYSk7YS5zcGxpY2UoYiwKMSk7dGhpcy5zLmxpc3RlbktleXM9YS5qb2luKCIiKX19LF9yZXNvbHZlRXh0ZW5kczpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnMuZHQsYyxlPWZ1bmN0aW9uKGMpe2Zvcih2YXIgZT0wOyFkLmlzUGxhaW5PYmplY3QoYykmJiFkLmlzQXJyYXkoYyk7KXtpZihjPT09cClyZXR1cm47aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBjKXtpZihjPWMoYixhKSwhYylyZXR1cm4hMX1lbHNlIGlmKCJzdHJpbmciPT09dHlwZW9mIGMpe2lmKCFxW2NdKXRocm93IlVua25vd24gYnV0dG9uIHR5cGU6ICIrYztjPXFbY119ZSsrO2lmKDMwPGUpdGhyb3ciQnV0dG9uczogVG9vIG1hbnkgaXRlcmF0aW9ucyI7fXJldHVybiBkLmlzQXJyYXkoYyk/YzpkLmV4dGVuZCh7fSxjKX07Zm9yKGE9ZShhKTthJiZhLmV4dGVuZDspe2lmKCFxW2EuZXh0ZW5kXSl0aHJvdyJDYW5ub3QgZXh0ZW5kIHVua25vd24gYnV0dG9uIHR5cGU6ICIrYS5leHRlbmQ7dmFyIGc9ZShxW2EuZXh0ZW5kXSk7aWYoZC5pc0FycmF5KGcpKXJldHVybiBnOwppZighZylyZXR1cm4hMTt2YXIgZj1nLmNsYXNzTmFtZTthPWQuZXh0ZW5kKHt9LGcsYSk7ZiYmYS5jbGFzc05hbWUhPT1mJiYoYS5jbGFzc05hbWU9ZisiICIrYS5jbGFzc05hbWUpO3ZhciBoPWEucG9zdGZpeEJ1dHRvbnM7aWYoaCl7YS5idXR0b25zfHwoYS5idXR0b25zPVtdKTtmPTA7Zm9yKGM9aC5sZW5ndGg7ZjxjO2YrKylhLmJ1dHRvbnMucHVzaChoW2ZdKTthLnBvc3RmaXhCdXR0b25zPW51bGx9aWYoaD1hLnByZWZpeEJ1dHRvbnMpe2EuYnV0dG9uc3x8KGEuYnV0dG9ucz1bXSk7Zj0wO2ZvcihjPWgubGVuZ3RoO2Y8YztmKyspYS5idXR0b25zLnNwbGljZShmLDAsaFtmXSk7YS5wcmVmaXhCdXR0b25zPW51bGx9YS5leHRlbmQ9Zy5leHRlbmR9cmV0dXJuIGF9LF9wb3BvdmVyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZT10aGlzLmMsZz1kLmV4dGVuZCh7YWxpZ246ImJ1dHRvbi1sZWZ0IixhdXRvQ2xvc2U6ITEsYmFja2dyb3VuZDohMCxiYWNrZ3JvdW5kQ2xhc3NOYW1lOiJkdC1idXR0b24tYmFja2dyb3VuZCIsCmNvbnRlbnRDbGFzc05hbWU6ZS5kb20uY29sbGVjdGlvbi5jbGFzc05hbWUsY29sbGVjdGlvbkxheW91dDoiIixjb2xsZWN0aW9uVGl0bGU6IiIsZHJvcHVwOiExLGZhZGU6NDAwLHJpZ2h0QWxpZ25DbGFzc05hbWU6ImR0LWJ1dHRvbi1yaWdodCIsdGFnOmUuZG9tLmNvbGxlY3Rpb24udGFnfSxjKSxmPWIubm9kZSgpLGg9ZnVuY3Rpb24oKXtkKCIuZHQtYnV0dG9uLWNvbGxlY3Rpb24iKS5zdG9wKCkuZmFkZU91dChnLmZhZGUsZnVuY3Rpb24oKXtkKHRoaXMpLmRldGFjaCgpfSk7ZChiLmJ1dHRvbnMoJ1thcmlhLWhhc3BvcHVwPSJ0cnVlIl1bYXJpYS1leHBhbmRlZD0idHJ1ZSJdJykubm9kZXMoKSkuYXR0cigiYXJpYS1leHBhbmRlZCIsImZhbHNlIik7ZCgiZGl2LmR0LWJ1dHRvbi1iYWNrZ3JvdW5kIikub2ZmKCJjbGljay5kdGItY29sbGVjdGlvbiIpO24uYmFja2dyb3VuZCghMSxnLmJhY2tncm91bmRDbGFzc05hbWUsZy5mYWRlLGYpO2QoImJvZHkiKS5vZmYoIi5kdGItY29sbGVjdGlvbiIpOwpiLm9mZigiYnV0dG9ucy1hY3Rpb24uYi1pbnRlcm5hbCIpfTshMT09PWEmJmgoKTtjPWQoYi5idXR0b25zKCdbYXJpYS1oYXNwb3B1cD0idHJ1ZSJdW2FyaWEtZXhwYW5kZWQ9InRydWUiXScpLm5vZGVzKCkpO2MubGVuZ3RoJiYoZj1jLmVxKDApLGgoKSk7Yz1kKCI8ZGl2Lz4iKS5hZGRDbGFzcygiZHQtYnV0dG9uLWNvbGxlY3Rpb24iKS5hZGRDbGFzcyhnLmNvbGxlY3Rpb25MYXlvdXQpLmNzcygiZGlzcGxheSIsIm5vbmUiKTthPWQoYSkuYWRkQ2xhc3MoZy5jb250ZW50Q2xhc3NOYW1lKS5hdHRyKCJyb2xlIiwibWVudSIpLmFwcGVuZFRvKGMpO2YuYXR0cigiYXJpYS1leHBhbmRlZCIsInRydWUiKTtmLnBhcmVudHMoImJvZHkiKVswXSE9PXQuYm9keSYmKGY9dC5ib2R5Lmxhc3RDaGlsZCk7Zy5jb2xsZWN0aW9uVGl0bGUmJmMucHJlcGVuZCgnPGRpdiBjbGFzcz0iZHQtYnV0dG9uLWNvbGxlY3Rpb24tdGl0bGUiPicrZy5jb2xsZWN0aW9uVGl0bGUrIjwvZGl2PiIpO2MuaW5zZXJ0QWZ0ZXIoZikuZmFkZUluKGcuZmFkZSk7CnZhciBrPWQoYi50YWJsZSgpLmNvbnRhaW5lcigpKTtlPWMuY3NzKCJwb3NpdGlvbiIpOyJkdC1jb250YWluZXIiPT09Zy5hbGlnbiYmKGY9Zi5wYXJlbnQoKSxjLmNzcygid2lkdGgiLGsud2lkdGgoKSkpO2lmKCJhYnNvbHV0ZSI9PT1lKXtlPWYucG9zaXRpb24oKTtjLmNzcyh7dG9wOmUudG9wK2Yub3V0ZXJIZWlnaHQoKSxsZWZ0OmUubGVmdH0pO3ZhciByPWMub3V0ZXJIZWlnaHQoKSxsPWMub3V0ZXJXaWR0aCgpLHc9ay5vZmZzZXQoKS50b3Aray5oZWlnaHQoKTt3PWUudG9wK2Yub3V0ZXJIZWlnaHQoKStyLXc7dmFyIEQ9ZS50b3AtcixtPWsub2Zmc2V0KCkudG9wO3I9ZS50b3Atci01Oyh3Pm0tRHx8Zy5kcm9wdXApJiYtcjxtJiZjLmNzcygidG9wIixyKTsoYy5oYXNDbGFzcyhnLnJpZ2h0QWxpZ25DbGFzc05hbWUpfHwiYnV0dG9uLXJpZ2h0Ij09PWcuYWxpZ24pJiZjLmNzcygibGVmdCIsZS5sZWZ0K2Yub3V0ZXJXaWR0aCgpLWwpO3I9ZS5sZWZ0K2w7az1rLm9mZnNldCgpLmxlZnQrCmsud2lkdGgoKTtyPmsmJmMuY3NzKCJsZWZ0IixlLmxlZnQtKHItaykpO2s9Zi5vZmZzZXQoKS5sZWZ0K2w7az5kKHUpLndpZHRoKCkmJmMuY3NzKCJsZWZ0IixlLmxlZnQtKGstZCh1KS53aWR0aCgpKSl9ZWxzZSBlPWMuaGVpZ2h0KCkvMixlPmQodSkuaGVpZ2h0KCkvMiYmKGU9ZCh1KS5oZWlnaHQoKS8yKSxjLmNzcygibWFyZ2luVG9wIiwtMSplKTtnLmJhY2tncm91bmQmJm4uYmFja2dyb3VuZCghMCxnLmJhY2tncm91bmRDbGFzc05hbWUsZy5mYWRlLGYpO2QoImRpdi5kdC1idXR0b24tYmFja2dyb3VuZCIpLm9uKCJjbGljay5kdGItY29sbGVjdGlvbiIsZnVuY3Rpb24oKXt9KTtkKCJib2R5Iikub24oImNsaWNrLmR0Yi1jb2xsZWN0aW9uIixmdW5jdGlvbihiKXt2YXIgYz1kLmZuLmFkZEJhY2s/ImFkZEJhY2siOiJhbmRTZWxmIjtkKGIudGFyZ2V0KS5wYXJlbnRzKClbY10oKS5maWx0ZXIoYSkubGVuZ3RofHxoKCl9KS5vbigia2V5dXAuZHRiLWNvbGxlY3Rpb24iLGZ1bmN0aW9uKGEpezI3PT09CmEua2V5Q29kZSYmaCgpfSk7Zy5hdXRvQ2xvc2UmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtiLm9uKCJidXR0b25zLWFjdGlvbi5iLWludGVybmFsIixmdW5jdGlvbihhLGIsYyxlKXtlWzBdIT09ZlswXSYmaCgpfSl9LDApfX0pO24uYmFja2dyb3VuZD1mdW5jdGlvbihhLGIsYyxlKXtjPT09cCYmKGM9NDAwKTtlfHwoZT10LmJvZHkpO2E/ZCgiPGRpdi8+IikuYWRkQ2xhc3MoYikuY3NzKCJkaXNwbGF5Iiwibm9uZSIpLmluc2VydEFmdGVyKGUpLnN0b3AoKS5mYWRlSW4oYyk6ZCgiZGl2LiIrYikuc3RvcCgpLmZhZGVPdXQoYyxmdW5jdGlvbigpe2QodGhpcykucmVtb3ZlQ2xhc3MoYikucmVtb3ZlKCl9KX07bi5pbnN0YW5jZVNlbGVjdG9yPWZ1bmN0aW9uKGEsYil7aWYoYT09PXB8fG51bGw9PT1hKXJldHVybiBkLm1hcChiLGZ1bmN0aW9uKGEpe3JldHVybiBhLmluc3R9KTt2YXIgYz1bXSxlPWQubWFwKGIsZnVuY3Rpb24oYSl7cmV0dXJuIGEubmFtZX0pLGc9ZnVuY3Rpb24oYSl7aWYoZC5pc0FycmF5KGEpKWZvcih2YXIgZj0KMCxrPWEubGVuZ3RoO2Y8aztmKyspZyhhW2ZdKTtlbHNlInN0cmluZyI9PT10eXBlb2YgYT8tMSE9PWEuaW5kZXhPZigiLCIpP2coYS5zcGxpdCgiLCIpKTooYT1kLmluQXJyYXkoZC50cmltKGEpLGUpLC0xIT09YSYmYy5wdXNoKGJbYV0uaW5zdCkpOiJudW1iZXIiPT09dHlwZW9mIGEmJmMucHVzaChiW2FdLmluc3QpfTtnKGEpO3JldHVybiBjfTtuLmJ1dHRvblNlbGVjdG9yPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdLGU9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCxnLGY9MCxrPWIubGVuZ3RoO2Y8aztmKyspaWYoZD1iW2ZdKWc9YyE9PXA/YytmOmYrIiIsYS5wdXNoKHtub2RlOmQubm9kZSxuYW1lOmQuY29uZi5uYW1lLGlkeDpnfSksZC5idXR0b25zJiZlKGEsZC5idXR0b25zLGcrIi0iKX0sZz1mdW5jdGlvbihhLGIpe3ZhciBmLGg9W107ZShoLGIucy5idXR0b25zKTt2YXIgaz1kLm1hcChoLGZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGV9KTtpZihkLmlzQXJyYXkoYSl8fAphIGluc3RhbmNlb2YgZClmb3Ioaz0wLGY9YS5sZW5ndGg7azxmO2srKylnKGFba10sYik7ZWxzZSBpZihudWxsPT09YXx8YT09PXB8fCIqIj09PWEpZm9yKGs9MCxmPWgubGVuZ3RoO2s8ZjtrKyspYy5wdXNoKHtpbnN0OmIsbm9kZTpoW2tdLm5vZGV9KTtlbHNlIGlmKCJudW1iZXIiPT09dHlwZW9mIGEpYy5wdXNoKHtpbnN0OmIsbm9kZTpiLnMuYnV0dG9uc1thXS5ub2RlfSk7ZWxzZSBpZigic3RyaW5nIj09PXR5cGVvZiBhKWlmKC0xIT09YS5pbmRleE9mKCIsIikpZm9yKGg9YS5zcGxpdCgiLCIpLGs9MCxmPWgubGVuZ3RoO2s8ZjtrKyspZyhkLnRyaW0oaFtrXSksYik7ZWxzZSBpZihhLm1hdGNoKC9eXGQrKFwtXGQrKSokLykpaz1kLm1hcChoLGZ1bmN0aW9uKGEpe3JldHVybiBhLmlkeH0pLGMucHVzaCh7aW5zdDpiLG5vZGU6aFtkLmluQXJyYXkoYSxrKV0ubm9kZX0pO2Vsc2UgaWYoLTEhPT1hLmluZGV4T2YoIjpuYW1lIikpZm9yKGE9YS5yZXBsYWNlKCI6bmFtZSIsIiIpLGs9CjAsZj1oLmxlbmd0aDtrPGY7aysrKWhba10ubmFtZT09PWEmJmMucHVzaCh7aW5zdDpiLG5vZGU6aFtrXS5ub2RlfSk7ZWxzZSBkKGspLmZpbHRlcihhKS5lYWNoKGZ1bmN0aW9uKCl7Yy5wdXNoKHtpbnN0OmIsbm9kZTp0aGlzfSl9KTtlbHNlIm9iamVjdCI9PT10eXBlb2YgYSYmYS5ub2RlTmFtZSYmKGg9ZC5pbkFycmF5KGEsayksLTEhPT1oJiZjLnB1c2goe2luc3Q6Yixub2RlOmtbaF19KSl9LGY9MCxoPWEubGVuZ3RoO2Y8aDtmKyspZyhiLGFbZl0pO3JldHVybiBjfTtuLmRlZmF1bHRzPXtidXR0b25zOlsiY29weSIsImV4Y2VsIiwiY3N2IiwicGRmIiwicHJpbnQiXSxuYW1lOiJtYWluIix0YWJJbmRleDowLGRvbTp7Y29udGFpbmVyOnt0YWc6ImRpdiIsY2xhc3NOYW1lOiJkdC1idXR0b25zIn0sY29sbGVjdGlvbjp7dGFnOiJkaXYiLGNsYXNzTmFtZToiIn0sYnV0dG9uOnt0YWc6IkFjdGl2ZVhPYmplY3QiaW4gdT8iYSI6ImJ1dHRvbiIsY2xhc3NOYW1lOiJkdC1idXR0b24iLAphY3RpdmU6ImFjdGl2ZSIsZGlzYWJsZWQ6ImRpc2FibGVkIn0sYnV0dG9uTGluZXI6e3RhZzoic3BhbiIsY2xhc3NOYW1lOiIifX19O24udmVyc2lvbj0iMS42LjEiO2QuZXh0ZW5kKHEse2NvbGxlY3Rpb246e3RleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaTE4bigiYnV0dG9ucy5jb2xsZWN0aW9uIiwiQ29sbGVjdGlvbiIpfSxjbGFzc05hbWU6ImJ1dHRvbnMtY29sbGVjdGlvbiIsaW5pdDpmdW5jdGlvbihhLGIsYyl7Yi5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMSl9LGFjdGlvbjpmdW5jdGlvbihhLGIsYyxlKXthLnN0b3BQcm9wYWdhdGlvbigpO2UuX2NvbGxlY3Rpb24ucGFyZW50cygiYm9keSIpLmxlbmd0aD90aGlzLnBvcG92ZXIoITEsZSk6dGhpcy5wb3BvdmVyKGUuX2NvbGxlY3Rpb24sZSl9LGF0dHI6eyJhcmlhLWhhc3BvcHVwIjohMH19LGNvcHk6ZnVuY3Rpb24oYSxiKXtpZihxLmNvcHlIdG1sNSlyZXR1cm4iY29weUh0bWw1IjtpZihxLmNvcHlGbGFzaCYmcS5jb3B5Rmxhc2guYXZhaWxhYmxlKGEsCmIpKXJldHVybiJjb3B5Rmxhc2gifSxjc3Y6ZnVuY3Rpb24oYSxiKXtpZihxLmNzdkh0bWw1JiZxLmNzdkh0bWw1LmF2YWlsYWJsZShhLGIpKXJldHVybiJjc3ZIdG1sNSI7aWYocS5jc3ZGbGFzaCYmcS5jc3ZGbGFzaC5hdmFpbGFibGUoYSxiKSlyZXR1cm4iY3N2Rmxhc2gifSxleGNlbDpmdW5jdGlvbihhLGIpe2lmKHEuZXhjZWxIdG1sNSYmcS5leGNlbEh0bWw1LmF2YWlsYWJsZShhLGIpKXJldHVybiJleGNlbEh0bWw1IjtpZihxLmV4Y2VsRmxhc2gmJnEuZXhjZWxGbGFzaC5hdmFpbGFibGUoYSxiKSlyZXR1cm4iZXhjZWxGbGFzaCJ9LHBkZjpmdW5jdGlvbihhLGIpe2lmKHEucGRmSHRtbDUmJnEucGRmSHRtbDUuYXZhaWxhYmxlKGEsYikpcmV0dXJuInBkZkh0bWw1IjtpZihxLnBkZkZsYXNoJiZxLnBkZkZsYXNoLmF2YWlsYWJsZShhLGIpKXJldHVybiJwZGZGbGFzaCJ9LHBhZ2VMZW5ndGg6ZnVuY3Rpb24oYSl7YT1hLnNldHRpbmdzKClbMF0uYUxlbmd0aE1lbnU7dmFyIGI9ZC5pc0FycmF5KGFbMF0pPwphWzBdOmEsYz1kLmlzQXJyYXkoYVswXSk/YVsxXTphO3JldHVybntleHRlbmQ6ImNvbGxlY3Rpb24iLHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaTE4bigiYnV0dG9ucy5wYWdlTGVuZ3RoIix7Ii0xIjoiU2hvdyBhbGwgcm93cyIsXzoiU2hvdyAlZCByb3dzIn0sYS5wYWdlLmxlbigpKX0sY2xhc3NOYW1lOiJidXR0b25zLXBhZ2UtbGVuZ3RoIixhdXRvQ2xvc2U6ITAsYnV0dG9uczpkLm1hcChiLGZ1bmN0aW9uKGEsYil7cmV0dXJue3RleHQ6Y1tiXSxjbGFzc05hbWU6ImJ1dHRvbi1wYWdlLWxlbmd0aCIsYWN0aW9uOmZ1bmN0aW9uKGIsYyl7Yy5wYWdlLmxlbihhKS5kcmF3KCl9LGluaXQ6ZnVuY3Rpb24oYixjLGQpe3ZhciBlPXRoaXM7Yz1mdW5jdGlvbigpe2UuYWN0aXZlKGIucGFnZS5sZW4oKT09PWEpfTtiLm9uKCJsZW5ndGguZHQiK2QubmFtZXNwYWNlLGMpO2MoKX0sZGVzdHJveTpmdW5jdGlvbihhLGIsYyl7YS5vZmYoImxlbmd0aC5kdCIrYy5uYW1lc3BhY2UpfX19KSwKaW5pdDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpczthLm9uKCJsZW5ndGguZHQiK2MubmFtZXNwYWNlLGZ1bmN0aW9uKCl7ZC50ZXh0KGMudGV4dCl9KX0sZGVzdHJveTpmdW5jdGlvbihhLGIsYyl7YS5vZmYoImxlbmd0aC5kdCIrYy5uYW1lc3BhY2UpfX19fSk7bS5BcGkucmVnaXN0ZXIoImJ1dHRvbnMoKSIsZnVuY3Rpb24oYSxiKXtiPT09cCYmKGI9YSxhPXApO3RoaXMuc2VsZWN0b3IuYnV0dG9uR3JvdXA9YTt2YXIgYz10aGlzLml0ZXJhdG9yKCEwLCJ0YWJsZSIsZnVuY3Rpb24oYyl7aWYoYy5fYnV0dG9ucylyZXR1cm4gbi5idXR0b25TZWxlY3RvcihuLmluc3RhbmNlU2VsZWN0b3IoYSxjLl9idXR0b25zKSxiKX0sITApO2MuX2dyb3VwU2VsZWN0b3I9YTtyZXR1cm4gY30pO20uQXBpLnJlZ2lzdGVyKCJidXR0b24oKSIsZnVuY3Rpb24oYSxiKXthPXRoaXMuYnV0dG9ucyhhLGIpOzE8YS5sZW5ndGgmJmEuc3BsaWNlKDEsYS5sZW5ndGgpO3JldHVybiBhfSk7bS5BcGkucmVnaXN0ZXJQbHVyYWwoImJ1dHRvbnMoKS5hY3RpdmUoKSIsCiJidXR0b24oKS5hY3RpdmUoKSIsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1wP3RoaXMubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhLmluc3QuYWN0aXZlKGEubm9kZSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oYil7Yi5pbnN0LmFjdGl2ZShiLm5vZGUsYSl9KX0pO20uQXBpLnJlZ2lzdGVyUGx1cmFsKCJidXR0b25zKCkuYWN0aW9uKCkiLCJidXR0b24oKS5hY3Rpb24oKSIsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1wP3RoaXMubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhLmluc3QuYWN0aW9uKGEubm9kZSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oYil7Yi5pbnN0LmFjdGlvbihiLm5vZGUsYSl9KX0pO20uQXBpLnJlZ2lzdGVyKFsiYnV0dG9ucygpLmVuYWJsZSgpIiwiYnV0dG9uKCkuZW5hYmxlKCkiXSxmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2IuaW5zdC5lbmFibGUoYi5ub2RlLGEpfSl9KTttLkFwaS5yZWdpc3RlcihbImJ1dHRvbnMoKS5kaXNhYmxlKCkiLAoiYnV0dG9uKCkuZGlzYWJsZSgpIl0sZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGEpe2EuaW5zdC5kaXNhYmxlKGEubm9kZSl9KX0pO20uQXBpLnJlZ2lzdGVyUGx1cmFsKCJidXR0b25zKCkubm9kZXMoKSIsImJ1dHRvbigpLm5vZGUoKSIsZnVuY3Rpb24oKXt2YXIgYT1kKCk7ZCh0aGlzLmVhY2goZnVuY3Rpb24oYil7YT1hLmFkZChiLmluc3Qubm9kZShiLm5vZGUpKX0pKTtyZXR1cm4gYX0pO20uQXBpLnJlZ2lzdGVyUGx1cmFsKCJidXR0b25zKCkucHJvY2Vzc2luZygpIiwiYnV0dG9uKCkucHJvY2Vzc2luZygpIixmdW5jdGlvbihhKXtyZXR1cm4gYT09PXA/dGhpcy5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5zdC5wcm9jZXNzaW5nKGEubm9kZSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oYil7Yi5pbnN0LnByb2Nlc3NpbmcoYi5ub2RlLGEpfSl9KTttLkFwaS5yZWdpc3RlclBsdXJhbCgiYnV0dG9ucygpLnRleHQoKSIsImJ1dHRvbigpLnRleHQoKSIsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT0KcD90aGlzLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYS5pbnN0LnRleHQoYS5ub2RlKX0pOnRoaXMuZWFjaChmdW5jdGlvbihiKXtiLmluc3QudGV4dChiLm5vZGUsYSl9KX0pO20uQXBpLnJlZ2lzdGVyUGx1cmFsKCJidXR0b25zKCkudHJpZ2dlcigpIiwiYnV0dG9uKCkudHJpZ2dlcigpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYSl7YS5pbnN0Lm5vZGUoYS5ub2RlKS50cmlnZ2VyKCJjbGljayIpfSl9KTttLkFwaS5yZWdpc3RlcigiYnV0dG9uKCkucG9wb3ZlcigpIixmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gYy5pbnN0Ll9wb3BvdmVyKGEsdGhpcy5idXR0b24odGhpc1swXS5ub2RlKSxiKX0pfSk7bS5BcGkucmVnaXN0ZXIoImJ1dHRvbnMoKS5jb250YWluZXJzKCkiLGZ1bmN0aW9uKCl7dmFyIGE9ZCgpLGI9dGhpcy5fZ3JvdXBTZWxlY3Rvcjt0aGlzLml0ZXJhdG9yKCEwLCJ0YWJsZSIsZnVuY3Rpb24oYyl7aWYoYy5fYnV0dG9ucyl7Yz0Kbi5pbnN0YW5jZVNlbGVjdG9yKGIsYy5fYnV0dG9ucyk7Zm9yKHZhciBkPTAsZz1jLmxlbmd0aDtkPGc7ZCsrKWE9YS5hZGQoY1tkXS5jb250YWluZXIoKSl9fSk7cmV0dXJuIGF9KTttLkFwaS5yZWdpc3RlcigiYnV0dG9ucygpLmNvbnRhaW5lcigpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRhaW5lcnMoKS5lcSgwKX0pO20uQXBpLnJlZ2lzdGVyKCJidXR0b24oKS5hZGQoKSIsZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNvbnRleHQ7Yy5sZW5ndGgmJihjPW4uaW5zdGFuY2VTZWxlY3Rvcih0aGlzLl9ncm91cFNlbGVjdG9yLGNbMF0uX2J1dHRvbnMpLGMubGVuZ3RoJiZjWzBdLmFkZChiLGEpKTtyZXR1cm4gdGhpcy5idXR0b24odGhpcy5fZ3JvdXBTZWxlY3RvcixhKX0pO20uQXBpLnJlZ2lzdGVyKCJidXR0b25zKCkuZGVzdHJveSgpIixmdW5jdGlvbigpe3RoaXMucGx1Y2soImluc3QiKS51bmlxdWUoKS5lYWNoKGZ1bmN0aW9uKGEpe2EuZGVzdHJveSgpfSk7cmV0dXJuIHRoaXN9KTsKbS5BcGkucmVnaXN0ZXJQbHVyYWwoImJ1dHRvbnMoKS5yZW1vdmUoKSIsImJ1dHRvbnMoKS5yZW1vdmUoKSIsZnVuY3Rpb24oKXt0aGlzLmVhY2goZnVuY3Rpb24oYSl7YS5pbnN0LnJlbW92ZShhLm5vZGUpfSk7cmV0dXJuIHRoaXN9KTt2YXIgdjttLkFwaS5yZWdpc3RlcigiYnV0dG9ucy5pbmZvKCkiLGZ1bmN0aW9uKGEsYixjKXt2YXIgZT10aGlzO2lmKCExPT09YSlyZXR1cm4gdGhpcy5vZmYoImRlc3Ryb3kuYnRuLWluZm8iKSxkKCIjZGF0YXRhYmxlc19idXR0b25zX2luZm8iKS5mYWRlT3V0KGZ1bmN0aW9uKCl7ZCh0aGlzKS5yZW1vdmUoKX0pLGNsZWFyVGltZW91dCh2KSx2PW51bGwsdGhpczt2JiZjbGVhclRpbWVvdXQodik7ZCgiI2RhdGF0YWJsZXNfYnV0dG9uc19pbmZvIikubGVuZ3RoJiZkKCIjZGF0YXRhYmxlc19idXR0b25zX2luZm8iKS5yZW1vdmUoKTthPWE/IjxoMj4iK2ErIjwvaDI+IjoiIjtkKCc8ZGl2IGlkPSJkYXRhdGFibGVzX2J1dHRvbnNfaW5mbyIgY2xhc3M9ImR0LWJ1dHRvbi1pbmZvIi8+JykuaHRtbChhKS5hcHBlbmQoZCgiPGRpdi8+IilbInN0cmluZyI9PT0KdHlwZW9mIGI/Imh0bWwiOiJhcHBlbmQiXShiKSkuY3NzKCJkaXNwbGF5Iiwibm9uZSIpLmFwcGVuZFRvKCJib2R5IikuZmFkZUluKCk7YyE9PXAmJjAhPT1jJiYodj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5idXR0b25zLmluZm8oITEpfSxjKSk7dGhpcy5vbigiZGVzdHJveS5idG4taW5mbyIsZnVuY3Rpb24oKXtlLmJ1dHRvbnMuaW5mbyghMSl9KTtyZXR1cm4gdGhpc30pO20uQXBpLnJlZ2lzdGVyKCJidXR0b25zLmV4cG9ydERhdGEoKSIsZnVuY3Rpb24oYSl7aWYodGhpcy5jb250ZXh0Lmxlbmd0aClyZXR1cm4gRShuZXcgbS5BcGkodGhpcy5jb250ZXh0WzBdKSxhKX0pO20uQXBpLnJlZ2lzdGVyKCJidXR0b25zLmV4cG9ydEluZm8oKSIsZnVuY3Rpb24oYSl7YXx8KGE9e30pO3ZhciBiPWE7dmFyIGM9IioiPT09Yi5maWxlbmFtZSYmIioiIT09Yi50aXRsZSYmYi50aXRsZSE9PXAmJm51bGwhPT1iLnRpdGxlJiYiIiE9PWIudGl0bGU/Yi50aXRsZTpiLmZpbGVuYW1lOyJmdW5jdGlvbiI9PT0KdHlwZW9mIGMmJihjPWMoKSk7Yz09PXB8fG51bGw9PT1jP2M9bnVsbDooLTEhPT1jLmluZGV4T2YoIioiKSYmKGM9ZC50cmltKGMucmVwbGFjZSgiKiIsZCgiaGVhZCA+IHRpdGxlIikudGV4dCgpKSkpLGM9Yy5yZXBsYWNlKC9bXmEtekEtWjAtOV9cdTAwQTEtXHVGRkZGXC4sXC1fICFcKFwpXS9nLCIiKSwoYj14KGIuZXh0ZW5zaW9uKSl8fChiPSIiKSxjKz1iKTtiPXgoYS50aXRsZSk7Yj1udWxsPT09Yj9udWxsOi0xIT09Yi5pbmRleE9mKCIqIik/Yi5yZXBsYWNlKCIqIixkKCJoZWFkID4gdGl0bGUiKS50ZXh0KCl8fCJFeHBvcnRlZCBkYXRhIik6YjtyZXR1cm57ZmlsZW5hbWU6Yyx0aXRsZTpiLG1lc3NhZ2VUb3A6eih0aGlzLGEubWVzc2FnZXx8YS5tZXNzYWdlVG9wLCJ0b3AiKSxtZXNzYWdlQm90dG9tOnoodGhpcyxhLm1lc3NhZ2VCb3R0b20sImJvdHRvbSIpfX0pO3ZhciB4PWZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT09YXx8YT09PXA/bnVsbDoiZnVuY3Rpb24iPT09dHlwZW9mIGE/CmEoKTphfSx6PWZ1bmN0aW9uKGEsYixjKXtiPXgoYik7aWYobnVsbD09PWIpcmV0dXJuIG51bGw7YT1kKCJjYXB0aW9uIixhLnRhYmxlKCkuY29udGFpbmVyKCkpLmVxKDApO3JldHVybiIqIj09PWI/YS5jc3MoImNhcHRpb24tc2lkZSIpIT09Yz9udWxsOmEubGVuZ3RoP2EudGV4dCgpOiIiOmJ9LEE9ZCgiPHRleHRhcmVhLz4iKVswXSxFPWZ1bmN0aW9uKGEsYil7dmFyIGM9ZC5leHRlbmQoITAse30se3Jvd3M6bnVsbCxjb2x1bW5zOiIiLG1vZGlmaWVyOntzZWFyY2g6ImFwcGxpZWQiLG9yZGVyOiJhcHBsaWVkIn0sb3J0aG9nb25hbDoiZGlzcGxheSIsc3RyaXBIdG1sOiEwLHN0cmlwTmV3bGluZXM6ITAsZGVjb2RlRW50aXRpZXM6ITAsdHJpbTohMCxmb3JtYXQ6e2hlYWRlcjpmdW5jdGlvbihhKXtyZXR1cm4gZShhKX0sZm9vdGVyOmZ1bmN0aW9uKGEpe3JldHVybiBlKGEpfSxib2R5OmZ1bmN0aW9uKGEpe3JldHVybiBlKGEpfX0sY3VzdG9taXplRGF0YTpudWxsfSxiKSxlPWZ1bmN0aW9uKGEpe2lmKCJzdHJpbmciIT09CnR5cGVvZiBhKXJldHVybiBhO2E9YS5yZXBsYWNlKC88c2NyaXB0XGJbXjxdKig/Oig/ITxcL3NjcmlwdD4pPFtePF0qKSo8XC9zY3JpcHQ+L2dpLCIiKTthPWEucmVwbGFjZSgvPCFcLVwtLio/XC1cLT4vZywiIik7Yy5zdHJpcEh0bWwmJihhPWEucmVwbGFjZSgvPFtePl0qPi9nLCIiKSk7Yy50cmltJiYoYT1hLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKSk7Yy5zdHJpcE5ld2xpbmVzJiYoYT1hLnJlcGxhY2UoL1xuL2csIiAiKSk7Yy5kZWNvZGVFbnRpdGllcyYmKEEuaW5uZXJIVE1MPWEsYT1BLnZhbHVlKTtyZXR1cm4gYX07Yj1hLmNvbHVtbnMoYy5jb2x1bW5zKS5pbmRleGVzKCkubWFwKGZ1bmN0aW9uKGIpe3ZhciBkPWEuY29sdW1uKGIpLmhlYWRlcigpO3JldHVybiBjLmZvcm1hdC5oZWFkZXIoZC5pbm5lckhUTUwsYixkKX0pLnRvQXJyYXkoKTt2YXIgZz1hLnRhYmxlKCkuZm9vdGVyKCk/YS5jb2x1bW5zKGMuY29sdW1ucykuaW5kZXhlcygpLm1hcChmdW5jdGlvbihiKXt2YXIgZD0KYS5jb2x1bW4oYikuZm9vdGVyKCk7cmV0dXJuIGMuZm9ybWF0LmZvb3RlcihkP2QuaW5uZXJIVE1MOiIiLGIsZCl9KS50b0FycmF5KCk6bnVsbCxmPWQuZXh0ZW5kKHt9LGMubW9kaWZpZXIpO2Euc2VsZWN0JiYiZnVuY3Rpb24iPT09dHlwZW9mIGEuc2VsZWN0LmluZm8mJmYuc2VsZWN0ZWQ9PT1wJiZhLnJvd3MoYy5yb3dzLGQuZXh0ZW5kKHtzZWxlY3RlZDohMH0sZikpLmFueSgpJiZkLmV4dGVuZChmLHtzZWxlY3RlZDohMH0pO2Y9YS5yb3dzKGMucm93cyxmKS5pbmRleGVzKCkudG9BcnJheSgpO3ZhciBoPWEuY2VsbHMoZixjLmNvbHVtbnMpO2Y9aC5yZW5kZXIoYy5vcnRob2dvbmFsKS50b0FycmF5KCk7aD1oLm5vZGVzKCkudG9BcnJheSgpO2Zvcih2YXIgaz1iLmxlbmd0aCxtPVtdLGw9MCxuPTAscT0wPGs/Zi5sZW5ndGgvazowO248cTtuKyspe2Zvcih2YXIgdT1ba10sdD0wO3Q8azt0KyspdVt0XT1jLmZvcm1hdC5ib2R5KGZbbF0sbix0LGhbbF0pLGwrKzttW25dPXV9Yj17aGVhZGVyOmIsCmZvb3RlcjpnLGJvZHk6bX07Yy5jdXN0b21pemVEYXRhJiZjLmN1c3RvbWl6ZURhdGEoYik7cmV0dXJuIGJ9O2QuZm4uZGF0YVRhYmxlLkJ1dHRvbnM9bjtkLmZuLkRhdGFUYWJsZS5CdXR0b25zPW47ZCh0KS5vbigiaW5pdC5kdCBwbHVnaW4taW5pdC5kdCIsZnVuY3Rpb24oYSxiKXsiZHQiPT09YS5uYW1lc3BhY2UmJihhPWIub0luaXQuYnV0dG9uc3x8bS5kZWZhdWx0cy5idXR0b25zKSYmIWIuX2J1dHRvbnMmJihuZXcgbihiLGEpKS5jb250YWluZXIoKX0pO20uZXh0LmZlYXR1cmUucHVzaCh7Zm5Jbml0OnksY0ZlYXR1cmU6IkIifSk7bS5leHQuZmVhdHVyZXMmJm0uZXh0LmZlYXR1cmVzLnJlZ2lzdGVyKCJidXR0b25zIix5KTtyZXR1cm4gbn0pOwo="></script>
<script src="data:application/javascript;base64,LyohCiBGbGFzaCBleHBvcnQgYnV0dG9ucyBmb3IgQnV0dG9ucyBhbmQgRGF0YVRhYmxlcy4KIDIwMTUtMjAxNyBTcHJ5TWVkaWEgTHRkIC0gZGF0YXRhYmxlcy5uZXQvbGljZW5zZQoKIFplcm9DbGlwYmFvcmQgLSBNSVQgbGljZW5zZQogQ29weXJpZ2h0IChjKSAyMDEyIEpvc2VwaCBIdWNrYWJ5CiovCihmdW5jdGlvbihnKXsiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiLCJkYXRhdGFibGVzLm5ldCIsImRhdGF0YWJsZXMubmV0LWJ1dHRvbnMiXSxmdW5jdGlvbihuKXtyZXR1cm4gZyhuLHdpbmRvdyxkb2N1bWVudCl9KToib2JqZWN0Ij09PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKG4sbSl7bnx8KG49d2luZG93KTttJiZtLmZuLmRhdGFUYWJsZXx8KG09cmVxdWlyZSgiZGF0YXRhYmxlcy5uZXQiKShuLG0pLiQpO20uZm4uZGF0YVRhYmxlLkJ1dHRvbnN8fHJlcXVpcmUoImRhdGF0YWJsZXMubmV0LWJ1dHRvbnMiKShuLG0pO3JldHVybiBnKG0sbixuLmRvY3VtZW50KX06ZyhqUXVlcnksd2luZG93LGRvY3VtZW50KX0pKGZ1bmN0aW9uKGcsbixtLHUpe2Z1bmN0aW9uIEEoYSl7Zm9yKHZhciBiPSIiOzA8PWE7KWI9U3RyaW5nLmZyb21DaGFyQ29kZShhJTI2KzY1KStiLGE9TWF0aC5mbG9vcihhLzI2KS0xOwpyZXR1cm4gYn1mdW5jdGlvbiByKGEsYixjKXt2YXIgZD1hLmNyZWF0ZUVsZW1lbnQoYik7YyYmKGMuYXR0ciYmZyhkKS5hdHRyKGMuYXR0ciksYy5jaGlsZHJlbiYmZy5lYWNoKGMuY2hpbGRyZW4sZnVuY3Rpb24oYSxiKXtkLmFwcGVuZENoaWxkKGIpfSksbnVsbCE9PWMudGV4dCYmYy50ZXh0IT09dSYmZC5hcHBlbmRDaGlsZChhLmNyZWF0ZVRleHROb2RlKGMudGV4dCkpKTtyZXR1cm4gZH1mdW5jdGlvbiBHKGEsYil7dmFyIGM9YS5oZWFkZXJbYl0ubGVuZ3RoO2EuZm9vdGVyJiZhLmZvb3RlcltiXS5sZW5ndGg+YyYmKGM9YS5mb290ZXJbYl0ubGVuZ3RoKTtmb3IodmFyIGQ9MCxmPWEuYm9keS5sZW5ndGg7ZDxmO2QrKyl7dmFyIGU9YS5ib2R5W2RdW2JdO2U9bnVsbCE9PWUmJmUhPT11P2UudG9TdHJpbmcoKToiIjstMSE9PWUuaW5kZXhPZigiXG4iKT8oZT1lLnNwbGl0KCJcbiIpLGUuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBiLmxlbmd0aC1hLmxlbmd0aH0pLGU9ZVswXS5sZW5ndGgpOgplPWUubGVuZ3RoO2U+YyYmKGM9ZSk7aWYoNDA8YylyZXR1cm4gNTJ9Yyo9MS4zO3JldHVybiA2PGM/Yzo2fWZ1bmN0aW9uIEIoYSl7dj09PXUmJih2PS0xPT09ei5zZXJpYWxpemVUb1N0cmluZyhnLnBhcnNlWE1MKHRbInhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbCJdKSkuaW5kZXhPZigieG1sbnM6ciIpKTtnLmVhY2goYSxmdW5jdGlvbihiLGMpe2lmKGcuaXNQbGFpbk9iamVjdChjKSlCKGMpO2Vsc2V7aWYodil7dmFyIGQ9Yy5jaGlsZE5vZGVzWzBdLGYsZT1bXTtmb3IoZj1kLmF0dHJpYnV0ZXMubGVuZ3RoLTE7MDw9ZjtmLS0pe3ZhciBoPWQuYXR0cmlidXRlc1tmXS5ub2RlTmFtZTt2YXIgaz1kLmF0dHJpYnV0ZXNbZl0ubm9kZVZhbHVlOy0xIT09aC5pbmRleE9mKCI6IikmJihlLnB1c2goe25hbWU6aCx2YWx1ZTprfSksZC5yZW1vdmVBdHRyaWJ1dGUoaCkpfWY9MDtmb3IoaD1lLmxlbmd0aDtmPGg7ZisrKWs9Yy5jcmVhdGVBdHRyaWJ1dGUoZVtmXS5uYW1lLnJlcGxhY2UoIjoiLAoiX2R0X2JfbmFtZXNwYWNlX3Rva2VuXyIpKSxrLnZhbHVlPWVbZl0udmFsdWUsZC5zZXRBdHRyaWJ1dGVOb2RlKGspfWM9ei5zZXJpYWxpemVUb1N0cmluZyhjKTt2JiYoLTE9PT1jLmluZGV4T2YoIjw/eG1sIikmJihjPSc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+JytjKSxjPWMucmVwbGFjZSgvX2R0X2JfbmFtZXNwYWNlX3Rva2VuXy9nLCI6IikpO2M9Yy5yZXBsYWNlKC88KFtePD5dKj8pIHhtbG5zPSIiKFtePD5dKj8pPi9nLCI8JDEgJDI+Iik7YVtiXT1jfX0pfXZhciBsPWcuZm4uZGF0YVRhYmxlLGg9e3ZlcnNpb246IjEuMC40LVRhYmxlVG9vbHMyIixjbGllbnRzOnt9LG1vdmllUGF0aDoiIixuZXh0SWQ6MSwkOmZ1bmN0aW9uKGEpeyJzdHJpbmciPT10eXBlb2YgYSYmKGE9bS5nZXRFbGVtZW50QnlJZChhKSk7YS5hZGRDbGFzc3x8KGEuaGlkZT1mdW5jdGlvbigpe3RoaXMuc3R5bGUuZGlzcGxheT0ibm9uZSJ9LGEuc2hvdz0KZnVuY3Rpb24oKXt0aGlzLnN0eWxlLmRpc3BsYXk9IiJ9LGEuYWRkQ2xhc3M9ZnVuY3Rpb24oYSl7dGhpcy5yZW1vdmVDbGFzcyhhKTt0aGlzLmNsYXNzTmFtZSs9IiAiK2F9LGEucmVtb3ZlQ2xhc3M9ZnVuY3Rpb24oYSl7dGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWUucmVwbGFjZShuZXcgUmVnRXhwKCJcXHMqIithKyJcXHMqIiksIiAiKS5yZXBsYWNlKC9eXHMrLywiIikucmVwbGFjZSgvXHMrJC8sIiIpfSxhLmhhc0NsYXNzPWZ1bmN0aW9uKGEpe3JldHVybiEhdGhpcy5jbGFzc05hbWUubWF0Y2gobmV3IFJlZ0V4cCgiXFxzKiIrYSsiXFxzKiIpKX0pO3JldHVybiBhfSxzZXRNb3ZpZVBhdGg6ZnVuY3Rpb24oYSl7dGhpcy5tb3ZpZVBhdGg9YX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYSxiLGMpeyhhPXRoaXMuY2xpZW50c1thXSkmJmEucmVjZWl2ZUV2ZW50KGIsYyl9LGxvZzpmdW5jdGlvbihhKXtjb25zb2xlLmxvZygiRmxhc2g6ICIrYSl9LHJlZ2lzdGVyOmZ1bmN0aW9uKGEsCmIpe3RoaXMuY2xpZW50c1thXT1ifSxnZXRET01PYmplY3RQb3NpdGlvbjpmdW5jdGlvbihhKXt2YXIgYj17bGVmdDowLHRvcDowLHdpZHRoOmEud2lkdGg/YS53aWR0aDphLm9mZnNldFdpZHRoLGhlaWdodDphLmhlaWdodD9hLmhlaWdodDphLm9mZnNldEhlaWdodH07IiIhPT1hLnN0eWxlLndpZHRoJiYoYi53aWR0aD1hLnN0eWxlLndpZHRoLnJlcGxhY2UoInB4IiwiIikpOyIiIT09YS5zdHlsZS5oZWlnaHQmJihiLmhlaWdodD1hLnN0eWxlLmhlaWdodC5yZXBsYWNlKCJweCIsIiIpKTtmb3IoO2E7KWIubGVmdCs9YS5vZmZzZXRMZWZ0LGIudG9wKz1hLm9mZnNldFRvcCxhPWEub2Zmc2V0UGFyZW50O3JldHVybiBifSxDbGllbnQ6ZnVuY3Rpb24oYSl7dGhpcy5oYW5kbGVycz17fTt0aGlzLmlkPWgubmV4dElkKys7dGhpcy5tb3ZpZUlkPSJaZXJvQ2xpcGJvYXJkX1RhYmxlVG9vbHNNb3ZpZV8iK3RoaXMuaWQ7aC5yZWdpc3Rlcih0aGlzLmlkLHRoaXMpO2EmJnRoaXMuZ2x1ZShhKX19OwpoLkNsaWVudC5wcm90b3R5cGU9e2lkOjAscmVhZHk6ITEsbW92aWU6bnVsbCxjbGlwVGV4dDoiIixmaWxlTmFtZToiIixhY3Rpb246ImNvcHkiLGhhbmRDdXJzb3JFbmFibGVkOiEwLGNzc0VmZmVjdHM6ITAsaGFuZGxlcnM6bnVsbCxzaXplZDohMSxzaGVldE5hbWU6IiIsZ2x1ZTpmdW5jdGlvbihhLGIpe3RoaXMuZG9tRWxlbWVudD1oLiQoYSk7YT05OTt0aGlzLmRvbUVsZW1lbnQuc3R5bGUuekluZGV4JiYoYT1wYXJzZUludCh0aGlzLmRvbUVsZW1lbnQuc3R5bGUuekluZGV4LDEwKSsxKTt2YXIgYz1oLmdldERPTU9iamVjdFBvc2l0aW9uKHRoaXMuZG9tRWxlbWVudCk7dGhpcy5kaXY9bS5jcmVhdGVFbGVtZW50KCJkaXYiKTt2YXIgZD10aGlzLmRpdi5zdHlsZTtkLnBvc2l0aW9uPSJhYnNvbHV0ZSI7ZC5sZWZ0PSIwcHgiO2QudG9wPSIwcHgiO2Qud2lkdGg9Yy53aWR0aCsicHgiO2QuaGVpZ2h0PWMuaGVpZ2h0KyJweCI7ZC56SW5kZXg9YTsidW5kZWZpbmVkIiE9dHlwZW9mIGImJgoiIiE9PWImJih0aGlzLmRpdi50aXRsZT1iKTswIT09Yy53aWR0aCYmMCE9PWMuaGVpZ2h0JiYodGhpcy5zaXplZD0hMCk7dGhpcy5kb21FbGVtZW50JiYodGhpcy5kb21FbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZGl2KSx0aGlzLmRpdi5pbm5lckhUTUw9dGhpcy5nZXRIVE1MKGMud2lkdGgsYy5oZWlnaHQpLnJlcGxhY2UoLyYvZywiJmFtcDsiKSl9LHBvc2l0aW9uRWxlbWVudDpmdW5jdGlvbigpe3ZhciBhPWguZ2V0RE9NT2JqZWN0UG9zaXRpb24odGhpcy5kb21FbGVtZW50KSxiPXRoaXMuZGl2LnN0eWxlO2IucG9zaXRpb249ImFic29sdXRlIjtiLndpZHRoPWEud2lkdGgrInB4IjtiLmhlaWdodD1hLmhlaWdodCsicHgiOzAhPT1hLndpZHRoJiYwIT09YS5oZWlnaHQmJih0aGlzLnNpemVkPSEwLGI9dGhpcy5kaXYuY2hpbGROb2Rlc1swXSxiLndpZHRoPWEud2lkdGgsYi5oZWlnaHQ9YS5oZWlnaHQpfSxnZXRIVE1MOmZ1bmN0aW9uKGEsYil7dmFyIGM9IiIsZD0iaWQ9Iit0aGlzLmlkKwoiJndpZHRoPSIrYSsiJmhlaWdodD0iK2I7aWYobmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvTVNJRS8pKXt2YXIgZj1sb2NhdGlvbi5ocmVmLm1hdGNoKC9eaHR0cHMvaSk/Imh0dHBzOi8vIjoiaHR0cDovLyI7Yys9JzxvYmplY3QgY2xhc3NpZD0iY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIiBjb2RlYmFzZT0iJytmKydkb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj0xMCwwLDAsMCIgd2lkdGg9IicrYSsnIiBoZWlnaHQ9IicrYisnIiBpZD0iJyt0aGlzLm1vdmllSWQrJyIgYWxpZ249Im1pZGRsZSI+PHBhcmFtIG5hbWU9ImFsbG93U2NyaXB0QWNjZXNzIiB2YWx1ZT0iYWx3YXlzIiAvPjxwYXJhbSBuYW1lPSJhbGxvd0Z1bGxTY3JlZW4iIHZhbHVlPSJmYWxzZSIgLz48cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSInK2gubW92aWVQYXRoKyciIC8+PHBhcmFtIG5hbWU9Imxvb3AiIHZhbHVlPSJmYWxzZSIgLz48cGFyYW0gbmFtZT0ibWVudSIgdmFsdWU9ImZhbHNlIiAvPjxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iYmVzdCIgLz48cGFyYW0gbmFtZT0iYmdjb2xvciIgdmFsdWU9IiNmZmZmZmYiIC8+PHBhcmFtIG5hbWU9ImZsYXNodmFycyIgdmFsdWU9IicrCmQrJyIvPjxwYXJhbSBuYW1lPSJ3bW9kZSIgdmFsdWU9InRyYW5zcGFyZW50Ii8+PC9vYmplY3Q+J31lbHNlIGMrPSc8ZW1iZWQgaWQ9IicrdGhpcy5tb3ZpZUlkKyciIHNyYz0iJytoLm1vdmllUGF0aCsnIiBsb29wPSJmYWxzZSIgbWVudT0iZmFsc2UiIHF1YWxpdHk9ImJlc3QiIGJnY29sb3I9IiNmZmZmZmYiIHdpZHRoPSInK2ErJyIgaGVpZ2h0PSInK2IrJyIgbmFtZT0iJyt0aGlzLm1vdmllSWQrJyIgYWxpZ249Im1pZGRsZSIgYWxsb3dTY3JpcHRBY2Nlc3M9ImFsd2F5cyIgYWxsb3dGdWxsU2NyZWVuPSJmYWxzZSIgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiBmbGFzaHZhcnM9IicrZCsnIiB3bW9kZT0idHJhbnNwYXJlbnQiIC8+JztyZXR1cm4gY30saGlkZTpmdW5jdGlvbigpe3RoaXMuZGl2JiYodGhpcy5kaXYuc3R5bGUubGVmdD0iLTIwMDBweCIpfSwKc2hvdzpmdW5jdGlvbigpe3RoaXMucmVwb3NpdGlvbigpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLmRvbUVsZW1lbnQmJnRoaXMuZGl2JiYoZyh0aGlzLmRpdikucmVtb3ZlKCksdGhpcy5kaXY9dGhpcy5kb21FbGVtZW50PW51bGwsZy5lYWNoKGguY2xpZW50cyxmdW5jdGlvbihiLGMpe2M9PT1hJiZkZWxldGUgaC5jbGllbnRzW2JdfSkpfSxyZXBvc2l0aW9uOmZ1bmN0aW9uKGEpe2EmJigodGhpcy5kb21FbGVtZW50PWguJChhKSl8fHRoaXMuaGlkZSgpKTtpZih0aGlzLmRvbUVsZW1lbnQmJnRoaXMuZGl2KXthPWguZ2V0RE9NT2JqZWN0UG9zaXRpb24odGhpcy5kb21FbGVtZW50KTt2YXIgYj10aGlzLmRpdi5zdHlsZTtiLmxlZnQ9IiIrYS5sZWZ0KyJweCI7Yi50b3A9IiIrYS50b3ArInB4In19LGNsZWFyVGV4dDpmdW5jdGlvbigpe3RoaXMuY2xpcFRleHQ9IiI7dGhpcy5yZWFkeSYmdGhpcy5tb3ZpZS5jbGVhclRleHQoKX0sYXBwZW5kVGV4dDpmdW5jdGlvbihhKXt0aGlzLmNsaXBUZXh0Kz0KYTt0aGlzLnJlYWR5JiZ0aGlzLm1vdmllLmFwcGVuZFRleHQoYSl9LHNldFRleHQ6ZnVuY3Rpb24oYSl7dGhpcy5jbGlwVGV4dD1hO3RoaXMucmVhZHkmJnRoaXMubW92aWUuc2V0VGV4dChhKX0sc2V0RmlsZU5hbWU6ZnVuY3Rpb24oYSl7dGhpcy5maWxlTmFtZT1hO3RoaXMucmVhZHkmJnRoaXMubW92aWUuc2V0RmlsZU5hbWUoYSl9LHNldFNoZWV0RGF0YTpmdW5jdGlvbihhKXt0aGlzLnJlYWR5JiZ0aGlzLm1vdmllLnNldFNoZWV0RGF0YShKU09OLnN0cmluZ2lmeShhKSl9LHNldEFjdGlvbjpmdW5jdGlvbihhKXt0aGlzLmFjdGlvbj1hO3RoaXMucmVhZHkmJnRoaXMubW92aWUuc2V0QWN0aW9uKGEpfSxhZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGEsYil7YT1hLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9eb24vLCIiKTt0aGlzLmhhbmRsZXJzW2FdfHwodGhpcy5oYW5kbGVyc1thXT1bXSk7dGhpcy5oYW5kbGVyc1thXS5wdXNoKGIpfSxzZXRIYW5kQ3Vyc29yOmZ1bmN0aW9uKGEpe3RoaXMuaGFuZEN1cnNvckVuYWJsZWQ9CmE7dGhpcy5yZWFkeSYmdGhpcy5tb3ZpZS5zZXRIYW5kQ3Vyc29yKGEpfSxzZXRDU1NFZmZlY3RzOmZ1bmN0aW9uKGEpe3RoaXMuY3NzRWZmZWN0cz0hIWF9LHJlY2VpdmVFdmVudDpmdW5jdGlvbihhLGIpe2E9YS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXm9uLywiIik7c3dpdGNoKGEpe2Nhc2UgImxvYWQiOnRoaXMubW92aWU9bS5nZXRFbGVtZW50QnlJZCh0aGlzLm1vdmllSWQpO2lmKCF0aGlzLm1vdmllKXt2YXIgYz10aGlzO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjLnJlY2VpdmVFdmVudCgibG9hZCIsbnVsbCl9LDEpO3JldHVybn1pZighdGhpcy5yZWFkeSYmbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvRmlyZWZveC8pJiZuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9XaW5kb3dzLykpe2M9dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5yZWNlaXZlRXZlbnQoImxvYWQiLG51bGwpfSwxMDApO3RoaXMucmVhZHk9ITA7cmV0dXJufXRoaXMucmVhZHk9CiEwO3RoaXMubW92aWUuY2xlYXJUZXh0KCk7dGhpcy5tb3ZpZS5hcHBlbmRUZXh0KHRoaXMuY2xpcFRleHQpO3RoaXMubW92aWUuc2V0RmlsZU5hbWUodGhpcy5maWxlTmFtZSk7dGhpcy5tb3ZpZS5zZXRBY3Rpb24odGhpcy5hY3Rpb24pO3RoaXMubW92aWUuc2V0SGFuZEN1cnNvcih0aGlzLmhhbmRDdXJzb3JFbmFibGVkKTticmVhaztjYXNlICJtb3VzZW92ZXIiOnRoaXMuZG9tRWxlbWVudCYmdGhpcy5jc3NFZmZlY3RzJiZ0aGlzLnJlY292ZXJBY3RpdmUmJnRoaXMuZG9tRWxlbWVudC5hZGRDbGFzcygiYWN0aXZlIik7YnJlYWs7Y2FzZSAibW91c2VvdXQiOnRoaXMuZG9tRWxlbWVudCYmdGhpcy5jc3NFZmZlY3RzJiYodGhpcy5yZWNvdmVyQWN0aXZlPSExLHRoaXMuZG9tRWxlbWVudC5oYXNDbGFzcygiYWN0aXZlIikmJih0aGlzLmRvbUVsZW1lbnQucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLHRoaXMucmVjb3ZlckFjdGl2ZT0hMCkpO2JyZWFrO2Nhc2UgIm1vdXNlZG93biI6dGhpcy5kb21FbGVtZW50JiYKdGhpcy5jc3NFZmZlY3RzJiZ0aGlzLmRvbUVsZW1lbnQuYWRkQ2xhc3MoImFjdGl2ZSIpO2JyZWFrO2Nhc2UgIm1vdXNldXAiOnRoaXMuZG9tRWxlbWVudCYmdGhpcy5jc3NFZmZlY3RzJiYodGhpcy5kb21FbGVtZW50LnJlbW92ZUNsYXNzKCJhY3RpdmUiKSx0aGlzLnJlY292ZXJBY3RpdmU9ITEpfWlmKHRoaXMuaGFuZGxlcnNbYV0pZm9yKHZhciBkPTAsZj10aGlzLmhhbmRsZXJzW2FdLmxlbmd0aDtkPGY7ZCsrKXt2YXIgZT10aGlzLmhhbmRsZXJzW2FdW2RdO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlKWUodGhpcyxiKTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgZSYmMj09ZS5sZW5ndGgpZVswXVtlWzFdXSh0aGlzLGIpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKW5bZV0odGhpcyxiKX19fTtoLmhhc0ZsYXNoPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgQWN0aXZlWE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2giKSwhMH1jYXRjaChhKXtpZihuYXZpZ2F0b3IubWltZVR5cGVzJiYKbmF2aWdhdG9yLm1pbWVUeXBlc1siYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giXSE9PXUmJm5hdmlnYXRvci5taW1lVHlwZXNbImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIl0uZW5hYmxlZFBsdWdpbilyZXR1cm4hMH1yZXR1cm4hMX07bi5aZXJvQ2xpcGJvYXJkX1RhYmxlVG9vbHM9aDt2YXIgQz1mdW5jdGlvbihhLGIpe2IuYXR0cigiaWQiKTtiLnBhcmVudHMoImh0bWwiKS5sZW5ndGg/YS5nbHVlKGJbMF0sIiIpOnNldFRpbWVvdXQoZnVuY3Rpb24oKXtDKGEsYil9LDUwMCl9LEg9ZnVuY3Rpb24oYSl7dmFyIGI9IlNoZWV0MSI7YS5zaGVldE5hbWUmJihiPWEuc2hlZXROYW1lLnJlcGxhY2UoL1tcW1xdXCpcL1xcXD86XS9nLCIiKSk7cmV0dXJuIGJ9LHg9ZnVuY3Rpb24oYSxiKXtiPWIubWF0Y2goL1tcc1xTXXsxLDgxOTJ9L2cpfHxbXTthLmNsZWFyVGV4dCgpO2Zvcih2YXIgYz0wLGQ9Yi5sZW5ndGg7YzxkO2MrKylhLmFwcGVuZFRleHQoYltjXSl9LEQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEubmV3bGluZT8KYS5uZXdsaW5lOm5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL1dpbmRvd3MvKT8iXHJcbiI6IlxuIn0sRT1mdW5jdGlvbihhLGIpe3ZhciBjPUQoYik7YT1hLmJ1dHRvbnMuZXhwb3J0RGF0YShiLmV4cG9ydE9wdGlvbnMpO3ZhciBkPWIuZmllbGRCb3VuZGFyeSxmPWIuZmllbGRTZXBhcmF0b3IsZT1uZXcgUmVnRXhwKGQsImciKSxnPWIuZXNjYXBlQ2hhciE9PXU/Yi5lc2NhcGVDaGFyOiJcXCIsaD1mdW5jdGlvbihhKXtmb3IodmFyIGI9IiIsYz0wLGg9YS5sZW5ndGg7YzxoO2MrKykwPGMmJihiKz1mKSxiKz1kP2QrKCIiK2FbY10pLnJlcGxhY2UoZSxnK2QpK2Q6YVtjXTtyZXR1cm4gYn0sbj1iLmhlYWRlcj9oKGEuaGVhZGVyKStjOiIiO2I9Yi5mb290ZXImJmEuZm9vdGVyP2MraChhLmZvb3Rlcik6IiI7Zm9yKHZhciBtPVtdLHA9MCxyPWEuYm9keS5sZW5ndGg7cDxyO3ArKyltLnB1c2goaChhLmJvZHlbcF0pKTtyZXR1cm57c3RyOm4rbS5qb2luKGMpK2Iscm93czptLmxlbmd0aH19LAp5PXthdmFpbGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gaC5oYXNGbGFzaCgpfSxpbml0OmZ1bmN0aW9uKGEsYixjKXtoLm1vdmllUGF0aD1sLkJ1dHRvbnMuc3dmUGF0aDt2YXIgZD1uZXcgaC5DbGllbnQ7ZC5zZXRIYW5kQ3Vyc29yKCEwKTtkLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlRG93biIsZnVuY3Rpb24oZCl7Yy5fZnJvbUZsYXNoPSEwO2EuYnV0dG9uKGJbMF0pLnRyaWdnZXIoKTtjLl9mcm9tRmxhc2g9ITF9KTtDKGQsYik7Yy5fZmxhc2g9ZH0sZGVzdHJveTpmdW5jdGlvbihhLGIsYyl7Yy5fZmxhc2guZGVzdHJveSgpfSxmaWVsZFNlcGFyYXRvcjoiLCIsZmllbGRCb3VuZGFyeTonIicsZXhwb3J0T3B0aW9uczp7fSx0aXRsZToiKiIsbWVzc2FnZVRvcDoiKiIsbWVzc2FnZUJvdHRvbToiKiIsZmlsZW5hbWU6IioiLGV4dGVuc2lvbjoiLmNzdiIsaGVhZGVyOiEwLGZvb3RlcjohMX0sej0iIjt6PSJ1bmRlZmluZWQiPT09dHlwZW9mIG4uWE1MU2VyaWFsaXplcj9uZXcgZnVuY3Rpb24oKXt0aGlzLnNlcmlhbGl6ZVRvU3RyaW5nPQpmdW5jdGlvbihhKXtyZXR1cm4gYS54bWx9fTpuZXcgWE1MU2VyaWFsaXplcjt2YXIgdix0PXsiX3JlbHMvLnJlbHMiOic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+PFJlbGF0aW9uc2hpcHMgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvcmVsYXRpb25zaGlwcyI+PFJlbGF0aW9uc2hpcCBJZD0icklkMSIgVHlwZT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9vZmZpY2VEb2N1bWVudCIgVGFyZ2V0PSJ4bC93b3JrYm9vay54bWwiLz48L1JlbGF0aW9uc2hpcHM+JywieGwvX3JlbHMvd29ya2Jvb2sueG1sLnJlbHMiOic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+PFJlbGF0aW9uc2hpcHMgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvcmVsYXRpb25zaGlwcyI+PFJlbGF0aW9uc2hpcCBJZD0icklkMSIgVHlwZT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy93b3Jrc2hlZXQiIFRhcmdldD0id29ya3NoZWV0cy9zaGVldDEueG1sIi8+PFJlbGF0aW9uc2hpcCBJZD0icklkMiIgVHlwZT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9zdHlsZXMiIFRhcmdldD0ic3R5bGVzLnhtbCIvPjwvUmVsYXRpb25zaGlwcz4nLAoiW0NvbnRlbnRfVHlwZXNdLnhtbCI6Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz48VHlwZXMgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvY29udGVudC10eXBlcyI+PERlZmF1bHQgRXh0ZW5zaW9uPSJ4bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi94bWwiIC8+PERlZmF1bHQgRXh0ZW5zaW9uPSJyZWxzIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UucmVsYXRpb25zaGlwcyt4bWwiIC8+PERlZmF1bHQgRXh0ZW5zaW9uPSJqcGVnIiBDb250ZW50VHlwZT0iaW1hZ2UvanBlZyIgLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC93b3JrYm9vay54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldC5tYWluK3htbCIgLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC93b3Jrc2hlZXRzL3NoZWV0MS54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sIiAvPjxPdmVycmlkZSBQYXJ0TmFtZT0iL3hsL3N0eWxlcy54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zdHlsZXMreG1sIiAvPjwvVHlwZXM+JywKInhsL3dvcmtib29rLnhtbCI6Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz48d29ya2Jvb2sgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiIgeG1sbnM6cj0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcyI+PGZpbGVWZXJzaW9uIGFwcE5hbWU9InhsIiBsYXN0RWRpdGVkPSI1IiBsb3dlc3RFZGl0ZWQ9IjUiIHJ1cEJ1aWxkPSIyNDgxNiIvPjx3b3JrYm9va1ByIHNob3dJbmtBbm5vdGF0aW9uPSIwIiBhdXRvQ29tcHJlc3NQaWN0dXJlcz0iMCIvPjxib29rVmlld3M+PHdvcmtib29rVmlldyB4V2luZG93PSIwIiB5V2luZG93PSIwIiB3aW5kb3dXaWR0aD0iMjU2MDAiIHdpbmRvd0hlaWdodD0iMTkwMjAiIHRhYlJhdGlvPSI1MDAiLz48L2Jvb2tWaWV3cz48c2hlZXRzPjxzaGVldCBuYW1lPSIiIHNoZWV0SWQ9IjEiIHI6aWQ9InJJZDEiLz48L3NoZWV0cz48L3dvcmtib29rPicsCiJ4bC93b3Jrc2hlZXRzL3NoZWV0MS54bWwiOic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+PHdvcmtzaGVldCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczpyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIiB4bWxuczptYz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDYiIG1jOklnbm9yYWJsZT0ieDE0YWMiIHhtbG5zOngxNGFjPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMDkvOS9hYyI+PHNoZWV0RGF0YS8+PG1lcmdlQ2VsbHMgY291bnQ9IjAiLz48L3dvcmtzaGVldD4nLCJ4bC9zdHlsZXMueG1sIjonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3R5bGVTaGVldCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczptYz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDYiIG1jOklnbm9yYWJsZT0ieDE0YWMiIHhtbG5zOngxNGFjPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMDkvOS9hYyI+PG51bUZtdHMgY291bnQ9IjYiPjxudW1GbXQgbnVtRm10SWQ9IjE2NCIgZm9ybWF0Q29kZT0iIywjIzAuMDBfLSBbJCQtNDVDXSIvPjxudW1GbXQgbnVtRm10SWQ9IjE2NSIgZm9ybWF0Q29kZT0iJnF1b3Q7wqMmcXVvdDsjLCMjMC4wMCIvPjxudW1GbXQgbnVtRm10SWQ9IjE2NiIgZm9ybWF0Q29kZT0iWyTigqwtMl0gIywjIzAuMDAiLz48bnVtRm10IG51bUZtdElkPSIxNjciIGZvcm1hdENvZGU9IjAuMCUiLz48bnVtRm10IG51bUZtdElkPSIxNjgiIGZvcm1hdENvZGU9IiMsIyMwOygjLCMjMCkiLz48bnVtRm10IG51bUZtdElkPSIxNjkiIGZvcm1hdENvZGU9IiMsIyMwLjAwOygjLCMjMC4wMCkiLz48L251bUZtdHM+PGZvbnRzIGNvdW50PSI1IiB4MTRhYzprbm93bkZvbnRzPSIxIj48Zm9udD48c3ogdmFsPSIxMSIgLz48bmFtZSB2YWw9IkNhbGlicmkiIC8+PC9mb250Pjxmb250PjxzeiB2YWw9IjExIiAvPjxuYW1lIHZhbD0iQ2FsaWJyaSIgLz48Y29sb3IgcmdiPSJGRkZGRkZGRiIgLz48L2ZvbnQ+PGZvbnQ+PHN6IHZhbD0iMTEiIC8+PG5hbWUgdmFsPSJDYWxpYnJpIiAvPjxiIC8+PC9mb250Pjxmb250PjxzeiB2YWw9IjExIiAvPjxuYW1lIHZhbD0iQ2FsaWJyaSIgLz48aSAvPjwvZm9udD48Zm9udD48c3ogdmFsPSIxMSIgLz48bmFtZSB2YWw9IkNhbGlicmkiIC8+PHUgLz48L2ZvbnQ+PC9mb250cz48ZmlsbHMgY291bnQ9IjYiPjxmaWxsPjxwYXR0ZXJuRmlsbCBwYXR0ZXJuVHlwZT0ibm9uZSIgLz48L2ZpbGw+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPSJub25lIiAvPjwvZmlsbD48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9InNvbGlkIj48ZmdDb2xvciByZ2I9IkZGRDlEOUQ5IiAvPjxiZ0NvbG9yIGluZGV4ZWQ9IjY0IiAvPjwvcGF0dGVybkZpbGw+PC9maWxsPjxmaWxsPjxwYXR0ZXJuRmlsbCBwYXR0ZXJuVHlwZT0ic29saWQiPjxmZ0NvbG9yIHJnYj0iRkZEOTk3OTUiIC8+PGJnQ29sb3IgaW5kZXhlZD0iNjQiIC8+PC9wYXR0ZXJuRmlsbD48L2ZpbGw+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPSJzb2xpZCI+PGZnQ29sb3IgcmdiPSJmZmM2ZWZjZSIgLz48YmdDb2xvciBpbmRleGVkPSI2NCIgLz48L3BhdHRlcm5GaWxsPjwvZmlsbD48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9InNvbGlkIj48ZmdDb2xvciByZ2I9ImZmYzZjZmVmIiAvPjxiZ0NvbG9yIGluZGV4ZWQ9IjY0IiAvPjwvcGF0dGVybkZpbGw+PC9maWxsPjwvZmlsbHM+PGJvcmRlcnMgY291bnQ9IjIiPjxib3JkZXI+PGxlZnQgLz48cmlnaHQgLz48dG9wIC8+PGJvdHRvbSAvPjxkaWFnb25hbCAvPjwvYm9yZGVyPjxib3JkZXIgZGlhZ29uYWxVcD0iZmFsc2UiIGRpYWdvbmFsRG93bj0iZmFsc2UiPjxsZWZ0IHN0eWxlPSJ0aGluIj48Y29sb3IgYXV0bz0iMSIgLz48L2xlZnQ+PHJpZ2h0IHN0eWxlPSJ0aGluIj48Y29sb3IgYXV0bz0iMSIgLz48L3JpZ2h0Pjx0b3Agc3R5bGU9InRoaW4iPjxjb2xvciBhdXRvPSIxIiAvPjwvdG9wPjxib3R0b20gc3R5bGU9InRoaW4iPjxjb2xvciBhdXRvPSIxIiAvPjwvYm90dG9tPjxkaWFnb25hbCAvPjwvYm9yZGVyPjwvYm9yZGVycz48Y2VsbFN0eWxlWGZzIGNvdW50PSIxIj48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgLz48L2NlbGxTdHlsZVhmcz48Y2VsbFhmcyBjb3VudD0iNjEiPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSIyIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIzIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSIzIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSI0IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSI0IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSI1IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSIwIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSIyIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSIyIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSIzIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSI0IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSI0IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSI1IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSI1IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlBbGlnbm1lbnQ9IjEiPjxhbGlnbm1lbnQgaG9yaXpvbnRhbD0ibGVmdCIvPjwveGY+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlBbGlnbm1lbnQ9IjEiPjxhbGlnbm1lbnQgaG9yaXpvbnRhbD0iY2VudGVyIi8+PC94Zj48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseUFsaWdubWVudD0iMSI+PGFsaWdubWVudCBob3Jpem9udGFsPSJyaWdodCIvPjwveGY+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlBbGlnbm1lbnQ9IjEiPjxhbGlnbm1lbnQgaG9yaXpvbnRhbD0iZmlsbCIvPjwveGY+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlBbGlnbm1lbnQ9IjEiPjxhbGlnbm1lbnQgdGV4dFJvdGF0aW9uPSI5MCIvPjwveGY+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlBbGlnbm1lbnQ9IjEiPjxhbGlnbm1lbnQgd3JhcFRleHQ9IjEiLz48L3hmPjx4ZiBudW1GbXRJZD0iOSIgICBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlOdW1iZXJGb3JtYXQ9IjEiLz48eGYgbnVtRm10SWQ9IjE2NCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5TnVtYmVyRm9ybWF0PSIxIi8+PHhmIG51bUZtdElkPSIxNjUiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseU51bWJlckZvcm1hdD0iMSIvPjx4ZiBudW1GbXRJZD0iMTY2IiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlOdW1iZXJGb3JtYXQ9IjEiLz48eGYgbnVtRm10SWQ9IjE2NyIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5TnVtYmVyRm9ybWF0PSIxIi8+PHhmIG51bUZtdElkPSIxNjgiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseU51bWJlckZvcm1hdD0iMSIvPjx4ZiBudW1GbXRJZD0iMTY5IiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlOdW1iZXJGb3JtYXQ9IjEiLz48eGYgbnVtRm10SWQ9IjMiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseU51bWJlckZvcm1hdD0iMSIvPjx4ZiBudW1GbXRJZD0iNCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5TnVtYmVyRm9ybWF0PSIxIi8+PC9jZWxsWGZzPjxjZWxsU3R5bGVzIGNvdW50PSIxIj48Y2VsbFN0eWxlIG5hbWU9Ik5vcm1hbCIgeGZJZD0iMCIgYnVpbHRpbklkPSIwIiAvPjwvY2VsbFN0eWxlcz48ZHhmcyBjb3VudD0iMCIgLz48dGFibGVTdHlsZXMgY291bnQ9IjAiIGRlZmF1bHRUYWJsZVN0eWxlPSJUYWJsZVN0eWxlTWVkaXVtOSIgZGVmYXVsdFBpdm90U3R5bGU9IlBpdm90U3R5bGVNZWRpdW00IiAvPjwvc3R5bGVTaGVldD4nfSwKRj1be21hdGNoOi9eXC0/XGQrXC5cZCUkLyxzdHlsZTo2MCxmbXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEvMTAwfX0se21hdGNoOi9eXC0/XGQrXC4/XGQqJSQvLHN0eWxlOjU2LGZtdDpmdW5jdGlvbihhKXtyZXR1cm4gYS8xMDB9fSx7bWF0Y2g6L15cLT9cJFtcZCxdKy4/XGQqJC8sc3R5bGU6NTd9LHttYXRjaDovXlwtP8KjW1xkLF0rLj9cZCokLyxzdHlsZTo1OH0se21hdGNoOi9eXC0/4oKsW1xkLF0rLj9cZCokLyxzdHlsZTo1OX0se21hdGNoOi9eXChbXGQsXStcKSQvLHN0eWxlOjYxLGZtdDpmdW5jdGlvbihhKXtyZXR1cm4tMSphLnJlcGxhY2UoL1tcKFwpXS9nLCIiKX19LHttYXRjaDovXlwoW1xkLF0rXC5cZHsyfVwpJC8sc3R5bGU6NjIsZm10OmZ1bmN0aW9uKGEpe3JldHVybi0xKmEucmVwbGFjZSgvW1woXCldL2csIiIpfX0se21hdGNoOi9eW1xkLF0rJC8sc3R5bGU6NjN9LHttYXRjaDovXltcZCxdK1wuXGR7Mn0kLyxzdHlsZTo2NH1dO2wuQnV0dG9ucy5zd2ZQYXRoPSIvL2Nkbi5kYXRhdGFibGVzLm5ldC9idXR0b25zLyIrCmwuQnV0dG9ucy52ZXJzaW9uKyIvc3dmL2ZsYXNoRXhwb3J0LnN3ZiI7bC5BcGkucmVnaXN0ZXIoImJ1dHRvbnMucmVzaXplKCkiLGZ1bmN0aW9uKCl7Zy5lYWNoKGguY2xpZW50cyxmdW5jdGlvbihhLGIpe2IuZG9tRWxlbWVudCE9PXUmJmIuZG9tRWxlbWVudC5wYXJlbnROb2RlJiZiLnBvc2l0aW9uRWxlbWVudCgpfSl9KTtsLmV4dC5idXR0b25zLmNvcHlGbGFzaD1nLmV4dGVuZCh7fSx5LHtjbGFzc05hbWU6ImJ1dHRvbnMtY29weSBidXR0b25zLWZsYXNoIix0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmkxOG4oImJ1dHRvbnMuY29weSIsIkNvcHkiKX0sYWN0aW9uOmZ1bmN0aW9uKGEsYixjLGQpe2lmKGQuX2Zyb21GbGFzaCl7dGhpcy5wcm9jZXNzaW5nKCEwKTthPWQuX2ZsYXNoO3ZhciBmPUUoYixkKTtjPWIuYnV0dG9ucy5leHBvcnRJbmZvKGQpO3ZhciBlPUQoZCk7Zj1mLnN0cjtjLnRpdGxlJiYoZj1jLnRpdGxlK2UrZStmKTtjLm1lc3NhZ2VUb3AmJihmPWMubWVzc2FnZVRvcCsKZStlK2YpO2MubWVzc2FnZUJvdHRvbSYmKGY9ZitlK2UrYy5tZXNzYWdlQm90dG9tKTtkLmN1c3RvbWl6ZSYmKGY9ZC5jdXN0b21pemUoZixkLGIpKTthLnNldEFjdGlvbigiY29weSIpO3goYSxmKTt0aGlzLnByb2Nlc3NpbmcoITEpO2IuYnV0dG9ucy5pbmZvKGIuaTE4bigiYnV0dG9ucy5jb3B5VGl0bGUiLCJDb3B5IHRvIGNsaXBib2FyZCIpLGIuaTE4bigiYnV0dG9ucy5jb3B5U3VjY2VzcyIse186IkNvcGllZCAlZCByb3dzIHRvIGNsaXBib2FyZCIsMToiQ29waWVkIDEgcm93IHRvIGNsaXBib2FyZCJ9LGRhdGEucm93cyksM0UzKX19LGZpZWxkU2VwYXJhdG9yOiJcdCIsZmllbGRCb3VuZGFyeToiIn0pO2wuZXh0LmJ1dHRvbnMuY3N2Rmxhc2g9Zy5leHRlbmQoe30seSx7Y2xhc3NOYW1lOiJidXR0b25zLWNzdiBidXR0b25zLWZsYXNoIix0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmkxOG4oImJ1dHRvbnMuY3N2IiwiQ1NWIil9LGFjdGlvbjpmdW5jdGlvbihhLGIsYyxkKXthPQpkLl9mbGFzaDt2YXIgZj1FKGIsZCk7Yz1iLmJ1dHRvbnMuZXhwb3J0SW5mbyhkKTtiPWQuY3VzdG9taXplP2QuY3VzdG9taXplKGYuc3RyLGQsYik6Zi5zdHI7YS5zZXRBY3Rpb24oImNzdiIpO2Euc2V0RmlsZU5hbWUoYy5maWxlbmFtZSk7eChhLGIpfSxlc2NhcGVDaGFyOiciJ30pO2wuZXh0LmJ1dHRvbnMuZXhjZWxGbGFzaD1nLmV4dGVuZCh7fSx5LHtjbGFzc05hbWU6ImJ1dHRvbnMtZXhjZWwgYnV0dG9ucy1mbGFzaCIsdGV4dDpmdW5jdGlvbihhKXtyZXR1cm4gYS5pMThuKCJidXR0b25zLmV4Y2VsIiwiRXhjZWwiKX0sYWN0aW9uOmZ1bmN0aW9uKGEsYixjLGQpe3RoaXMucHJvY2Vzc2luZyghMCk7YT1kLl9mbGFzaDt2YXIgZj0wLGU9Zy5wYXJzZVhNTCh0WyJ4bC93b3Jrc2hlZXRzL3NoZWV0MS54bWwiXSksaD1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzaGVldERhdGEiKVswXTtjPXtfcmVsczp7Ii5yZWxzIjpnLnBhcnNlWE1MKHRbIl9yZWxzLy5yZWxzIl0pfSx4bDp7X3JlbHM6eyJ3b3JrYm9vay54bWwucmVscyI6Zy5wYXJzZVhNTCh0WyJ4bC9fcmVscy93b3JrYm9vay54bWwucmVscyJdKX0sCiJ3b3JrYm9vay54bWwiOmcucGFyc2VYTUwodFsieGwvd29ya2Jvb2sueG1sIl0pLCJzdHlsZXMueG1sIjpnLnBhcnNlWE1MKHRbInhsL3N0eWxlcy54bWwiXSksd29ya3NoZWV0czp7InNoZWV0MS54bWwiOmV9fSwiW0NvbnRlbnRfVHlwZXNdLnhtbCI6Zy5wYXJzZVhNTCh0WyJbQ29udGVudF9UeXBlc10ueG1sIl0pfTt2YXIgaz1iLmJ1dHRvbnMuZXhwb3J0RGF0YShkLmV4cG9ydE9wdGlvbnMpLG0sbixwPWZ1bmN0aW9uKGEpe209ZisxO249cihlLCJyb3ciLHthdHRyOntyOm19fSk7Zm9yKHZhciBiPTAsYz1hLmxlbmd0aDtiPGM7YisrKXt2YXIgbD1BKGIpKyIiK20saz1udWxsO2lmKG51bGw9PT1hW2JdfHxhW2JdPT09dXx8IiI9PT1hW2JdKWlmKCEwPT09ZC5jcmVhdGVFbXB0eUNlbGxzKWFbYl09IiI7ZWxzZSBjb250aW51ZTthW2JdPWcudHJpbShhW2JdKTtmb3IodmFyIHA9MCx0PUYubGVuZ3RoO3A8dDtwKyspe3ZhciBxPUZbcF07aWYoYVtiXS5tYXRjaCYmIWFbYl0ubWF0Y2goL14wXGQrLykmJgphW2JdLm1hdGNoKHEubWF0Y2gpKXtrPWFbYl0ucmVwbGFjZSgvW15cZFwuXC1dL2csIiIpO3EuZm10JiYoaz1xLmZtdChrKSk7az1yKGUsImMiLHthdHRyOntyOmwsczpxLnN0eWxlfSxjaGlsZHJlbjpbcihlLCJ2Iix7dGV4dDprfSldfSk7YnJlYWt9fWt8fCgibnVtYmVyIj09PXR5cGVvZiBhW2JdfHxhW2JdLm1hdGNoJiZhW2JdLm1hdGNoKC9eLT9cZCsoXC5cZCspPyQvKSYmIWFbYl0ubWF0Y2goL14wXGQrLyk/az1yKGUsImMiLHthdHRyOnt0OiJuIixyOmx9LGNoaWxkcmVuOltyKGUsInYiLHt0ZXh0OmFbYl19KV19KToocT1hW2JdLnJlcGxhY2U/YVtiXS5yZXBsYWNlKC9bXHgwMC1ceDA5XHgwQlx4MENceDBFLVx4MUZceDdGLVx4OUZdL2csIiIpOmFbYl0saz1yKGUsImMiLHthdHRyOnt0OiJpbmxpbmVTdHIiLHI6bH0sY2hpbGRyZW46e3JvdzpyKGUsImlzIix7Y2hpbGRyZW46e3JvdzpyKGUsInQiLHt0ZXh0OnF9KX19KX19KSkpO24uYXBwZW5kQ2hpbGQoayl9aC5hcHBlbmRDaGlsZChuKTsKZisrfTtnKCJzaGVldHMgc2hlZXQiLGMueGxbIndvcmtib29rLnhtbCJdKS5hdHRyKCJuYW1lIixIKGQpKTtkLmN1c3RvbWl6ZURhdGEmJmQuY3VzdG9taXplRGF0YShrKTt2YXIgbD1mdW5jdGlvbihhLGIpe3ZhciBjPWcoIm1lcmdlQ2VsbHMiLGUpO2NbMF0uYXBwZW5kQ2hpbGQocihlLCJtZXJnZUNlbGwiLHthdHRyOntyZWY6IkEiK2ErIjoiK0EoYikrYX19KSk7Yy5hdHRyKCJjb3VudCIsYy5hdHRyKCJjb3VudCIpKzEpO2coInJvdzplcSgiKyhhLTEpKyIpIGMiLGUpLmF0dHIoInMiLCI1MSIpfSxxPWIuYnV0dG9ucy5leHBvcnRJbmZvKGQpO3EudGl0bGUmJihwKFtxLnRpdGxlXSxmKSxsKGYsay5oZWFkZXIubGVuZ3RoLTEpKTtxLm1lc3NhZ2VUb3AmJihwKFtxLm1lc3NhZ2VUb3BdLGYpLGwoZixrLmhlYWRlci5sZW5ndGgtMSkpO2QuaGVhZGVyJiYocChrLmhlYWRlcixmKSxnKCJyb3c6bGFzdCBjIixlKS5hdHRyKCJzIiwiMiIpKTtmb3IodmFyIHc9MCx2PWsuYm9keS5sZW5ndGg7dzwKdjt3KyspcChrLmJvZHlbd10sZik7ZC5mb290ZXImJmsuZm9vdGVyJiYocChrLmZvb3RlcixmKSxnKCJyb3c6bGFzdCBjIixlKS5hdHRyKCJzIiwiMiIpKTtxLm1lc3NhZ2VCb3R0b20mJihwKFtxLm1lc3NhZ2VCb3R0b21dLGYpLGwoZixrLmhlYWRlci5sZW5ndGgtMSkpO3A9cihlLCJjb2xzIik7Zygid29ya3NoZWV0IixlKS5wcmVwZW5kKHApO2w9MDtmb3Iodz1rLmhlYWRlci5sZW5ndGg7bDx3O2wrKylwLmFwcGVuZENoaWxkKHIoZSwiY29sIix7YXR0cjp7bWluOmwrMSxtYXg6bCsxLHdpZHRoOkcoayxsKSxjdXN0b21XaWR0aDoxfX0pKTtkLmN1c3RvbWl6ZSYmZC5jdXN0b21pemUoYyxkLGIpO0IoYyk7YS5zZXRBY3Rpb24oImV4Y2VsIik7YS5zZXRGaWxlTmFtZShxLmZpbGVuYW1lKTthLnNldFNoZWV0RGF0YShjKTt4KGEsIiIpO3RoaXMucHJvY2Vzc2luZyghMSl9LGV4dGVuc2lvbjoiLnhsc3giLGNyZWF0ZUVtcHR5Q2VsbHM6ITF9KTtsLmV4dC5idXR0b25zLnBkZkZsYXNoPQpnLmV4dGVuZCh7fSx5LHtjbGFzc05hbWU6ImJ1dHRvbnMtcGRmIGJ1dHRvbnMtZmxhc2giLHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaTE4bigiYnV0dG9ucy5wZGYiLCJQREYiKX0sYWN0aW9uOmZ1bmN0aW9uKGEsYixjLGQpe3RoaXMucHJvY2Vzc2luZyghMCk7YT1kLl9mbGFzaDtjPWIuYnV0dG9ucy5leHBvcnREYXRhKGQuZXhwb3J0T3B0aW9ucyk7dmFyIGY9Yi5idXR0b25zLmV4cG9ydEluZm8oZCksZT1iLnRhYmxlKCkubm9kZSgpLm9mZnNldFdpZHRoLGc9Yi5jb2x1bW5zKGQuY29sdW1ucykuaW5kZXhlcygpLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYi5jb2x1bW4oYSkuaGVhZGVyKCkub2Zmc2V0V2lkdGgvZX0pO2Euc2V0QWN0aW9uKCJwZGYiKTthLnNldEZpbGVOYW1lKGYuZmlsZW5hbWUpO3goYSxKU09OLnN0cmluZ2lmeSh7dGl0bGU6Zi50aXRsZXx8IiIsbWVzc2FnZVRvcDpmLm1lc3NhZ2VUb3B8fCIiLG1lc3NhZ2VCb3R0b206Zi5tZXNzYWdlQm90dG9tfHwiIiwKY29sV2lkdGg6Zy50b0FycmF5KCksb3JpZW50YXRpb246ZC5vcmllbnRhdGlvbixzaXplOmQucGFnZVNpemUsaGVhZGVyOmQuaGVhZGVyP2MuaGVhZGVyOm51bGwsZm9vdGVyOmQuZm9vdGVyP2MuZm9vdGVyOm51bGwsYm9keTpjLmJvZHl9KSk7dGhpcy5wcm9jZXNzaW5nKCExKX0sZXh0ZW5zaW9uOiIucGRmIixvcmllbnRhdGlvbjoicG9ydHJhaXQiLHBhZ2VTaXplOiJBNCIsbmV3bGluZToiXG4ifSk7cmV0dXJuIGwuQnV0dG9uc30pOwo="></script>
<script src="data:application/javascript;base64,LyohCiBIVE1MNSBleHBvcnQgYnV0dG9ucyBmb3IgQnV0dG9ucyBhbmQgRGF0YVRhYmxlcy4KIDIwMTYgU3ByeU1lZGlhIEx0ZCAtIGRhdGF0YWJsZXMubmV0L2xpY2Vuc2UKCiBGaWxlU2F2ZXIuanMgKDEuMy4zKSAtIE1JVCBsaWNlbnNlCiBDb3B5cmlnaHQgwqkgMjAxNiBFbGkgR3JleSAtIGh0dHA6Ly9lbGlncmV5LmNvbQoqLwooZnVuY3Rpb24oZil7ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwiZGF0YXRhYmxlcy5uZXQiLCJkYXRhdGFibGVzLm5ldC1idXR0b25zIl0sZnVuY3Rpb24oZyl7cmV0dXJuIGYoZyx3aW5kb3csZG9jdW1lbnQpfSk6Im9iamVjdCI9PT10eXBlb2YgZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihnLHAseix0KXtnfHwoZz13aW5kb3cpO3AmJnAuZm4uZGF0YVRhYmxlfHwocD1yZXF1aXJlKCJkYXRhdGFibGVzLm5ldCIpKGcscCkuJCk7cC5mbi5kYXRhVGFibGUuQnV0dG9uc3x8cmVxdWlyZSgiZGF0YXRhYmxlcy5uZXQtYnV0dG9ucyIpKGcscCk7cmV0dXJuIGYocCxnLGcuZG9jdW1lbnQseix0KX06ZihqUXVlcnksd2luZG93LGRvY3VtZW50KX0pKGZ1bmN0aW9uKGYsZyxwLHosdCx3KXtmdW5jdGlvbiBBKGEpe2Zvcih2YXIgYj0iIjswPD1hOyliPVN0cmluZy5mcm9tQ2hhckNvZGUoYSUyNis2NSkrYixhPU1hdGguZmxvb3IoYS8KMjYpLTE7cmV0dXJuIGJ9ZnVuY3Rpb24gRShhLGIpe3k9PT13JiYoeT0tMT09PUMuc2VyaWFsaXplVG9TdHJpbmcoZi5wYXJzZVhNTChGWyJ4bC93b3Jrc2hlZXRzL3NoZWV0MS54bWwiXSkpLmluZGV4T2YoInhtbG5zOnIiKSk7Zi5lYWNoKGIsZnVuY3Rpb24oYixjKXtpZihmLmlzUGxhaW5PYmplY3QoYykpYj1hLmZvbGRlcihiKSxFKGIsYyk7ZWxzZXtpZih5KXt2YXIgZD1jLmNoaWxkTm9kZXNbMF0sZSxoPVtdO2ZvcihlPWQuYXR0cmlidXRlcy5sZW5ndGgtMTswPD1lO2UtLSl7dmFyIG09ZC5hdHRyaWJ1dGVzW2VdLm5vZGVOYW1lO3ZhciBrPWQuYXR0cmlidXRlc1tlXS5ub2RlVmFsdWU7LTEhPT1tLmluZGV4T2YoIjoiKSYmKGgucHVzaCh7bmFtZTptLHZhbHVlOmt9KSxkLnJlbW92ZUF0dHJpYnV0ZShtKSl9ZT0wO2ZvcihtPWgubGVuZ3RoO2U8bTtlKyspaz1jLmNyZWF0ZUF0dHJpYnV0ZShoW2VdLm5hbWUucmVwbGFjZSgiOiIsIl9kdF9iX25hbWVzcGFjZV90b2tlbl8iKSksCmsudmFsdWU9aFtlXS52YWx1ZSxkLnNldEF0dHJpYnV0ZU5vZGUoayl9Yz1DLnNlcmlhbGl6ZVRvU3RyaW5nKGMpO3kmJigtMT09PWMuaW5kZXhPZigiPD94bWwiKSYmKGM9Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4nK2MpLGM9Yy5yZXBsYWNlKC9fZHRfYl9uYW1lc3BhY2VfdG9rZW5fL2csIjoiKSxjPWMucmVwbGFjZSgveG1sbnM6TlNbXGRdKz0iIiBOU1tcZF0rOi9nLCIiKSk7Yz1jLnJlcGxhY2UoLzwoW148Pl0qPykgeG1sbnM9IiIoW148Pl0qPyk+L2csIjwkMSAkMj4iKTthLmZpbGUoYixjKX19KX1mdW5jdGlvbiByKGEsYixkKXt2YXIgYz1hLmNyZWF0ZUVsZW1lbnQoYik7ZCYmKGQuYXR0ciYmZihjKS5hdHRyKGQuYXR0ciksZC5jaGlsZHJlbiYmZi5lYWNoKGQuY2hpbGRyZW4sZnVuY3Rpb24oYSxiKXtjLmFwcGVuZENoaWxkKGIpfSksbnVsbCE9PWQudGV4dCYmZC50ZXh0IT09dyYmYy5hcHBlbmRDaGlsZChhLmNyZWF0ZVRleHROb2RlKGQudGV4dCkpKTsKcmV0dXJuIGN9ZnVuY3Rpb24gTChhLGIpe3ZhciBkPWEuaGVhZGVyW2JdLmxlbmd0aDthLmZvb3RlciYmYS5mb290ZXJbYl0ubGVuZ3RoPmQmJihkPWEuZm9vdGVyW2JdLmxlbmd0aCk7Zm9yKHZhciBjPTAsZj1hLmJvZHkubGVuZ3RoO2M8ZjtjKyspe3ZhciBlPWEuYm9keVtjXVtiXTtlPW51bGwhPT1lJiZlIT09dz9lLnRvU3RyaW5nKCk6IiI7LTEhPT1lLmluZGV4T2YoIlxuIik/KGU9ZS5zcGxpdCgiXG4iKSxlLnNvcnQoZnVuY3Rpb24oYSxjKXtyZXR1cm4gYy5sZW5ndGgtYS5sZW5ndGh9KSxlPWVbMF0ubGVuZ3RoKTplPWUubGVuZ3RoO2U+ZCYmKGQ9ZSk7aWYoNDA8ZClyZXR1cm4gNTR9ZCo9MS4zNTtyZXR1cm4gNjxkP2Q6Nn12YXIgdj1mLmZuLmRhdGFUYWJsZTt2LkJ1dHRvbnMucGRmTWFrZT1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4gdHx8Zy5wZGZNYWtlO3Q9bV9ha2V9O3YuQnV0dG9ucy5qc3ppcD1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4genx8Zy5KU1ppcDt6PWF9Owp2YXIgQj1mdW5jdGlvbihhKXtpZighKCJ1bmRlZmluZWQiPT09dHlwZW9mIGF8fCJ1bmRlZmluZWQiIT09dHlwZW9mIG5hdmlnYXRvciYmL01TSUUgWzEtOV1cLi8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSkpe3ZhciBiPWEuZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiYSIpLGQ9ImRvd25sb2FkImluIGIsYz0vY29uc3RydWN0b3IvaS50ZXN0KGEuSFRNTEVsZW1lbnQpfHxhLnNhZmFyaSxmPS9DcmlPU1wvW1xkXSsvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksZT1mdW5jdGlvbihjKXsoYS5zZXRJbW1lZGlhdGV8fGEuc2V0VGltZW91dCkoZnVuY3Rpb24oKXt0aHJvdyBjO30sMCl9LGg9ZnVuY3Rpb24oYyl7c2V0VGltZW91dChmdW5jdGlvbigpeyJzdHJpbmciPT09dHlwZW9mIGM/KGEuVVJMfHxhLndlYmtpdFVSTHx8YSkucmV2b2tlT2JqZWN0VVJMKGMpOmMucmVtb3ZlKCl9LDRFNCl9LG09ZnVuY3Rpb24oYSl7cmV0dXJuL15ccyooPzp0ZXh0XC9cUyp8YXBwbGljYXRpb25cL3htbHxcUypcL1xTKlwreG1sKVxzKjsuKmNoYXJzZXRccyo9XHMqdXRmLTgvaS50ZXN0KGEudHlwZSk/Cm5ldyBCbG9iKFtTdHJpbmcuZnJvbUNoYXJDb2RlKDY1Mjc5KSxhXSx7dHlwZTphLnR5cGV9KTphfSxrPWZ1bmN0aW9uKGsscSxuKXtufHwoaz1tKGspKTt2YXIgbD10aGlzLGc9ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSI9PT1rLnR5cGUsRD1mdW5jdGlvbigpe3ZhciBhPVsid3JpdGVzdGFydCIsInByb2dyZXNzIiwid3JpdGUiLCJ3cml0ZWVuZCJdO2E9W10uY29uY2F0KGEpO2Zvcih2YXIgYz1hLmxlbmd0aDtjLS07KXt2YXIgYj1sWyJvbiIrYVtjXV07aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBiKXRyeXtiLmNhbGwobCxsKX1jYXRjaChNKXtlKE0pfX19O2wucmVhZHlTdGF0ZT1sLklOSVQ7aWYoZCl7dmFyIHU9KGEuVVJMfHxhLndlYmtpdFVSTHx8YSkuY3JlYXRlT2JqZWN0VVJMKGspO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtiLmhyZWY9dTtiLmRvd25sb2FkPXE7dmFyIGE9bmV3IE1vdXNlRXZlbnQoImNsaWNrIik7Yi5kaXNwYXRjaEV2ZW50KGEpO0QoKTtoKHUpO2wucmVhZHlTdGF0ZT0KbC5ET05FfSl9ZWxzZShmdW5jdGlvbigpe2lmKChmfHxnJiZjKSYmYS5GaWxlUmVhZGVyKXt2YXIgYj1uZXcgRmlsZVJlYWRlcjtiLm9ubG9hZGVuZD1mdW5jdGlvbigpe3ZhciBjPWY/Yi5yZXN1bHQ6Yi5yZXN1bHQucmVwbGFjZSgvXmRhdGE6W147XSo7LywiZGF0YTphdHRhY2htZW50L2ZpbGU7Iik7YS5vcGVuKGMsIl9ibGFuayIpfHwoYS5sb2NhdGlvbi5ocmVmPWMpO2wucmVhZHlTdGF0ZT1sLkRPTkU7RCgpfTtiLnJlYWRBc0RhdGFVUkwoayk7bC5yZWFkeVN0YXRlPWwuSU5JVH1lbHNlIHV8fCh1PShhLlVSTHx8YS53ZWJraXRVUkx8fGEpLmNyZWF0ZU9iamVjdFVSTChrKSksZz9hLmxvY2F0aW9uLmhyZWY9dTphLm9wZW4odSwiX2JsYW5rIil8fChhLmxvY2F0aW9uLmhyZWY9dSksbC5yZWFkeVN0YXRlPWwuRE9ORSxEKCksaCh1KX0pKCl9LG49ay5wcm90b3R5cGU7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgbmF2aWdhdG9yJiZuYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYilyZXR1cm4gZnVuY3Rpb24oYSwKYyxiKXtjPWN8fGEubmFtZXx8ImRvd25sb2FkIjtifHwoYT1tKGEpKTtyZXR1cm4gbmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IoYSxjKX07bi5hYm9ydD1mdW5jdGlvbigpe307bi5yZWFkeVN0YXRlPW4uSU5JVD0wO24uV1JJVElORz0xO24uRE9ORT0yO24uZXJyb3I9bi5vbndyaXRlc3RhcnQ9bi5vbnByb2dyZXNzPW4ub253cml0ZT1uLm9uYWJvcnQ9bi5vbmVycm9yPW4ub253cml0ZWVuZD1udWxsO3JldHVybiBmdW5jdGlvbihhLGMsYil7cmV0dXJuIG5ldyBrKGEsY3x8YS5uYW1lfHwiZG93bmxvYWQiLGIpfX19KCJ1bmRlZmluZWQiIT09dHlwZW9mIHNlbGYmJnNlbGZ8fCJ1bmRlZmluZWQiIT09dHlwZW9mIGcmJmd8fHRoaXMuY29udGVudCk7di5maWxlU2F2ZT1CO3ZhciBHPWZ1bmN0aW9uKGEpe3ZhciBiPSJTaGVldDEiO2Euc2hlZXROYW1lJiYoYj1hLnNoZWV0TmFtZS5yZXBsYWNlKC9bXFtcXVwqXC9cXFw/Ol0vZywiIikpO3JldHVybiBifSxIPWZ1bmN0aW9uKGEpe3JldHVybiBhLm5ld2xpbmU/CmEubmV3bGluZTpuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9XaW5kb3dzLyk/IlxyXG4iOiJcbiJ9LEk9ZnVuY3Rpb24oYSxiKXt2YXIgZD1IKGIpO2E9YS5idXR0b25zLmV4cG9ydERhdGEoYi5leHBvcnRPcHRpb25zKTt2YXIgYz1iLmZpZWxkQm91bmRhcnksZj1iLmZpZWxkU2VwYXJhdG9yLGU9bmV3IFJlZ0V4cChjLCJnIiksaD1iLmVzY2FwZUNoYXIhPT13P2IuZXNjYXBlQ2hhcjoiXFwiLG09ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPSIiLGQ9MCxtPWEubGVuZ3RoO2Q8bTtkKyspMDxkJiYoYis9ZiksYis9Yz9jKygiIithW2RdKS5yZXBsYWNlKGUsaCtjKStjOmFbZF07cmV0dXJuIGJ9LGs9Yi5oZWFkZXI/bShhLmhlYWRlcikrZDoiIjtiPWIuZm9vdGVyJiZhLmZvb3Rlcj9kK20oYS5mb290ZXIpOiIiO2Zvcih2YXIgbj1bXSxnPTAscT1hLmJvZHkubGVuZ3RoO2c8cTtnKyspbi5wdXNoKG0oYS5ib2R5W2ddKSk7cmV0dXJue3N0cjprK24uam9pbihkKStiLHJvd3M6bi5sZW5ndGh9fSwKSj1mdW5jdGlvbigpe2lmKC0xPT09bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJTYWZhcmkiKXx8LTEhPT1uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIkNocm9tZSIpfHwtMSE9PW5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiT3BlcmEiKSlyZXR1cm4hMTt2YXIgYT1uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9BcHBsZVdlYktpdFwvKFxkK1wuXGQrKS8pO3JldHVybiBhJiYxPGEubGVuZ3RoJiY2MDMuMT4xKmFbMV0/ITA6ITF9O3RyeXt2YXIgQz1uZXcgWE1MU2VyaWFsaXplcix5fWNhdGNoKGEpe312YXIgRj17Il9yZWxzLy5yZWxzIjonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/PjxSZWxhdGlvbnNoaXBzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDEiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiIFRhcmdldD0ieGwvd29ya2Jvb2sueG1sIi8+PC9SZWxhdGlvbnNoaXBzPicsCiJ4bC9fcmVscy93b3JrYm9vay54bWwucmVscyI6Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz48UmVsYXRpb25zaGlwcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzIj48UmVsYXRpb25zaGlwIElkPSJySWQxIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIgVGFyZ2V0PSJ3b3Jrc2hlZXRzL3NoZWV0MS54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQyIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3N0eWxlcyIgVGFyZ2V0PSJzdHlsZXMueG1sIi8+PC9SZWxhdGlvbnNoaXBzPicsIltDb250ZW50X1R5cGVzXS54bWwiOic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+PFR5cGVzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L2NvbnRlbnQtdHlwZXMiPjxEZWZhdWx0IEV4dGVuc2lvbj0ieG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24veG1sIiAvPjxEZWZhdWx0IEV4dGVuc2lvbj0icmVscyIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLnJlbGF0aW9uc2hpcHMreG1sIiAvPjxEZWZhdWx0IEV4dGVuc2lvbj0ianBlZyIgQ29udGVudFR5cGU9ImltYWdlL2pwZWciIC8+PE92ZXJyaWRlIFBhcnROYW1lPSIveGwvd29ya2Jvb2sueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQubWFpbit4bWwiIC8+PE92ZXJyaWRlIFBhcnROYW1lPSIveGwvd29ya3NoZWV0cy9zaGVldDEueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwud29ya3NoZWV0K3htbCIgLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC9zdHlsZXMueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc3R5bGVzK3htbCIgLz48L1R5cGVzPicsCiJ4bC93b3JrYm9vay54bWwiOic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+PHdvcmtib29rIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW4iIHhtbG5zOnI9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMiPjxmaWxlVmVyc2lvbiBhcHBOYW1lPSJ4bCIgbGFzdEVkaXRlZD0iNSIgbG93ZXN0RWRpdGVkPSI1IiBydXBCdWlsZD0iMjQ4MTYiLz48d29ya2Jvb2tQciBzaG93SW5rQW5ub3RhdGlvbj0iMCIgYXV0b0NvbXByZXNzUGljdHVyZXM9IjAiLz48Ym9va1ZpZXdzPjx3b3JrYm9va1ZpZXcgeFdpbmRvdz0iMCIgeVdpbmRvdz0iMCIgd2luZG93V2lkdGg9IjI1NjAwIiB3aW5kb3dIZWlnaHQ9IjE5MDIwIiB0YWJSYXRpbz0iNTAwIi8+PC9ib29rVmlld3M+PHNoZWV0cz48c2hlZXQgbmFtZT0iU2hlZXQxIiBzaGVldElkPSIxIiByOmlkPSJySWQxIi8+PC9zaGVldHM+PGRlZmluZWROYW1lcy8+PC93b3JrYm9vaz4nLAoieGwvd29ya3NoZWV0cy9zaGVldDEueG1sIjonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pjx3b3Jrc2hlZXQgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiIgeG1sbnM6cj0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcyIgeG1sbnM6bWM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJrdXAtY29tcGF0aWJpbGl0eS8yMDA2IiBtYzpJZ25vcmFibGU9IngxNGFjIiB4bWxuczp4MTRhYz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDA5LzkvYWMiPjxzaGVldERhdGEvPjxtZXJnZUNlbGxzIGNvdW50PSIwIi8+PC93b3Jrc2hlZXQ+JywieGwvc3R5bGVzLnhtbCI6Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PHN0eWxlU2hlZXQgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiIgeG1sbnM6bWM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJrdXAtY29tcGF0aWJpbGl0eS8yMDA2IiBtYzpJZ25vcmFibGU9IngxNGFjIiB4bWxuczp4MTRhYz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDA5LzkvYWMiPjxudW1GbXRzIGNvdW50PSI2Ij48bnVtRm10IG51bUZtdElkPSIxNjQiIGZvcm1hdENvZGU9IiMsIyMwLjAwXy0gWyQkLTQ1Q10iLz48bnVtRm10IG51bUZtdElkPSIxNjUiIGZvcm1hdENvZGU9IiZxdW90O8KjJnF1b3Q7IywjIzAuMDAiLz48bnVtRm10IG51bUZtdElkPSIxNjYiIGZvcm1hdENvZGU9Ilsk4oKsLTJdICMsIyMwLjAwIi8+PG51bUZtdCBudW1GbXRJZD0iMTY3IiBmb3JtYXRDb2RlPSIwLjAlIi8+PG51bUZtdCBudW1GbXRJZD0iMTY4IiBmb3JtYXRDb2RlPSIjLCMjMDsoIywjIzApIi8+PG51bUZtdCBudW1GbXRJZD0iMTY5IiBmb3JtYXRDb2RlPSIjLCMjMC4wMDsoIywjIzAuMDApIi8+PC9udW1GbXRzPjxmb250cyBjb3VudD0iNSIgeDE0YWM6a25vd25Gb250cz0iMSI+PGZvbnQ+PHN6IHZhbD0iMTEiIC8+PG5hbWUgdmFsPSJDYWxpYnJpIiAvPjwvZm9udD48Zm9udD48c3ogdmFsPSIxMSIgLz48bmFtZSB2YWw9IkNhbGlicmkiIC8+PGNvbG9yIHJnYj0iRkZGRkZGRkYiIC8+PC9mb250Pjxmb250PjxzeiB2YWw9IjExIiAvPjxuYW1lIHZhbD0iQ2FsaWJyaSIgLz48YiAvPjwvZm9udD48Zm9udD48c3ogdmFsPSIxMSIgLz48bmFtZSB2YWw9IkNhbGlicmkiIC8+PGkgLz48L2ZvbnQ+PGZvbnQ+PHN6IHZhbD0iMTEiIC8+PG5hbWUgdmFsPSJDYWxpYnJpIiAvPjx1IC8+PC9mb250PjwvZm9udHM+PGZpbGxzIGNvdW50PSI2Ij48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9Im5vbmUiIC8+PC9maWxsPjxmaWxsPjxwYXR0ZXJuRmlsbCBwYXR0ZXJuVHlwZT0ibm9uZSIgLz48L2ZpbGw+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPSJzb2xpZCI+PGZnQ29sb3IgcmdiPSJGRkQ5RDlEOSIgLz48YmdDb2xvciBpbmRleGVkPSI2NCIgLz48L3BhdHRlcm5GaWxsPjwvZmlsbD48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9InNvbGlkIj48ZmdDb2xvciByZ2I9IkZGRDk5Nzk1IiAvPjxiZ0NvbG9yIGluZGV4ZWQ9IjY0IiAvPjwvcGF0dGVybkZpbGw+PC9maWxsPjxmaWxsPjxwYXR0ZXJuRmlsbCBwYXR0ZXJuVHlwZT0ic29saWQiPjxmZ0NvbG9yIHJnYj0iZmZjNmVmY2UiIC8+PGJnQ29sb3IgaW5kZXhlZD0iNjQiIC8+PC9wYXR0ZXJuRmlsbD48L2ZpbGw+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPSJzb2xpZCI+PGZnQ29sb3IgcmdiPSJmZmM2Y2ZlZiIgLz48YmdDb2xvciBpbmRleGVkPSI2NCIgLz48L3BhdHRlcm5GaWxsPjwvZmlsbD48L2ZpbGxzPjxib3JkZXJzIGNvdW50PSIyIj48Ym9yZGVyPjxsZWZ0IC8+PHJpZ2h0IC8+PHRvcCAvPjxib3R0b20gLz48ZGlhZ29uYWwgLz48L2JvcmRlcj48Ym9yZGVyIGRpYWdvbmFsVXA9ImZhbHNlIiBkaWFnb25hbERvd249ImZhbHNlIj48bGVmdCBzdHlsZT0idGhpbiI+PGNvbG9yIGF1dG89IjEiIC8+PC9sZWZ0PjxyaWdodCBzdHlsZT0idGhpbiI+PGNvbG9yIGF1dG89IjEiIC8+PC9yaWdodD48dG9wIHN0eWxlPSJ0aGluIj48Y29sb3IgYXV0bz0iMSIgLz48L3RvcD48Ym90dG9tIHN0eWxlPSJ0aGluIj48Y29sb3IgYXV0bz0iMSIgLz48L2JvdHRvbT48ZGlhZ29uYWwgLz48L2JvcmRlcj48L2JvcmRlcnM+PGNlbGxTdHlsZVhmcyBjb3VudD0iMSI+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIC8+PC9jZWxsU3R5bGVYZnM+PGNlbGxYZnMgY291bnQ9IjY3Ij48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSIyIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSIyIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSIzIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSI0IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSI0IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSI1IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSI1IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSIwIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIyIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSIyIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSIzIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSIzIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSI0IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSI1IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSI1IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5QWxpZ25tZW50PSIxIj48YWxpZ25tZW50IGhvcml6b250YWw9ImxlZnQiLz48L3hmPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5QWxpZ25tZW50PSIxIj48YWxpZ25tZW50IGhvcml6b250YWw9ImNlbnRlciIvPjwveGY+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlBbGlnbm1lbnQ9IjEiPjxhbGlnbm1lbnQgaG9yaXpvbnRhbD0icmlnaHQiLz48L3hmPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5QWxpZ25tZW50PSIxIj48YWxpZ25tZW50IGhvcml6b250YWw9ImZpbGwiLz48L3hmPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5QWxpZ25tZW50PSIxIj48YWxpZ25tZW50IHRleHRSb3RhdGlvbj0iOTAiLz48L3hmPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5QWxpZ25tZW50PSIxIj48YWxpZ25tZW50IHdyYXBUZXh0PSIxIi8+PC94Zj48eGYgbnVtRm10SWQ9IjkiICAgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5TnVtYmVyRm9ybWF0PSIxIi8+PHhmIG51bUZtdElkPSIxNjQiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseU51bWJlckZvcm1hdD0iMSIvPjx4ZiBudW1GbXRJZD0iMTY1IiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlOdW1iZXJGb3JtYXQ9IjEiLz48eGYgbnVtRm10SWQ9IjE2NiIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5TnVtYmVyRm9ybWF0PSIxIi8+PHhmIG51bUZtdElkPSIxNjciIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseU51bWJlckZvcm1hdD0iMSIvPjx4ZiBudW1GbXRJZD0iMTY4IiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlOdW1iZXJGb3JtYXQ9IjEiLz48eGYgbnVtRm10SWQ9IjE2OSIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5TnVtYmVyRm9ybWF0PSIxIi8+PHhmIG51bUZtdElkPSIzIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlOdW1iZXJGb3JtYXQ9IjEiLz48eGYgbnVtRm10SWQ9IjQiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseU51bWJlckZvcm1hdD0iMSIvPjx4ZiBudW1GbXRJZD0iMSIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5TnVtYmVyRm9ybWF0PSIxIi8+PHhmIG51bUZtdElkPSIyIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlOdW1iZXJGb3JtYXQ9IjEiLz48L2NlbGxYZnM+PGNlbGxTdHlsZXMgY291bnQ9IjEiPjxjZWxsU3R5bGUgbmFtZT0iTm9ybWFsIiB4ZklkPSIwIiBidWlsdGluSWQ9IjAiIC8+PC9jZWxsU3R5bGVzPjxkeGZzIGNvdW50PSIwIiAvPjx0YWJsZVN0eWxlcyBjb3VudD0iMCIgZGVmYXVsdFRhYmxlU3R5bGU9IlRhYmxlU3R5bGVNZWRpdW05IiBkZWZhdWx0UGl2b3RTdHlsZT0iUGl2b3RTdHlsZU1lZGl1bTQiIC8+PC9zdHlsZVNoZWV0Pid9LApLPVt7bWF0Y2g6L15cLT9cZCtcLlxkJSQvLHN0eWxlOjYwLGZtdDpmdW5jdGlvbihhKXtyZXR1cm4gYS8xMDB9fSx7bWF0Y2g6L15cLT9cZCtcLj9cZColJC8sc3R5bGU6NTYsZm10OmZ1bmN0aW9uKGEpe3JldHVybiBhLzEwMH19LHttYXRjaDovXlwtP1wkW1xkLF0rLj9cZCokLyxzdHlsZTo1N30se21hdGNoOi9eXC0/wqNbXGQsXSsuP1xkKiQvLHN0eWxlOjU4fSx7bWF0Y2g6L15cLT/igqxbXGQsXSsuP1xkKiQvLHN0eWxlOjU5fSx7bWF0Y2g6L15cLT9cZCskLyxzdHlsZTo2NX0se21hdGNoOi9eXC0/XGQrXC5cZHsyfSQvLHN0eWxlOjY2fSx7bWF0Y2g6L15cKFtcZCxdK1wpJC8sc3R5bGU6NjEsZm10OmZ1bmN0aW9uKGEpe3JldHVybi0xKmEucmVwbGFjZSgvW1woXCldL2csIiIpfX0se21hdGNoOi9eXChbXGQsXStcLlxkezJ9XCkkLyxzdHlsZTo2MixmbXQ6ZnVuY3Rpb24oYSl7cmV0dXJuLTEqYS5yZXBsYWNlKC9bXChcKV0vZywiIil9fSx7bWF0Y2g6L15cLT9bXGQsXSskLyxzdHlsZTo2M30sCnttYXRjaDovXlwtP1tcZCxdK1wuXGR7Mn0kLyxzdHlsZTo2NH1dO3YuZXh0LmJ1dHRvbnMuY29weUh0bWw1PXtjbGFzc05hbWU6ImJ1dHRvbnMtY29weSBidXR0b25zLWh0bWw1Iix0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmkxOG4oImJ1dHRvbnMuY29weSIsIkNvcHkiKX0sYWN0aW9uOmZ1bmN0aW9uKGEsYixkLGMpe3RoaXMucHJvY2Vzc2luZyghMCk7dmFyIGc9dGhpczthPUkoYixjKTt2YXIgZT1iLmJ1dHRvbnMuZXhwb3J0SW5mbyhjKSxoPUgoYyksbT1hLnN0cjtkPWYoIjxkaXYvPiIpLmNzcyh7aGVpZ2h0OjEsd2lkdGg6MSxvdmVyZmxvdzoiaGlkZGVuIixwb3NpdGlvbjoiZml4ZWQiLHRvcDowLGxlZnQ6MH0pO2UudGl0bGUmJihtPWUudGl0bGUraCtoK20pO2UubWVzc2FnZVRvcCYmKG09ZS5tZXNzYWdlVG9wK2graCttKTtlLm1lc3NhZ2VCb3R0b20mJihtPW0raCtoK2UubWVzc2FnZUJvdHRvbSk7Yy5jdXN0b21pemUmJihtPWMuY3VzdG9taXplKG0sYyxiKSk7Yz1mKCI8dGV4dGFyZWEgcmVhZG9ubHkvPiIpLnZhbChtKS5hcHBlbmRUbyhkKTsKaWYocC5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQoImNvcHkiKSl7ZC5hcHBlbmRUbyhiLnRhYmxlKCkuY29udGFpbmVyKCkpO2NbMF0uZm9jdXMoKTtjWzBdLnNlbGVjdCgpO3RyeXt2YXIgaz1wLmV4ZWNDb21tYW5kKCJjb3B5Iik7ZC5yZW1vdmUoKTtpZihrKXtiLmJ1dHRvbnMuaW5mbyhiLmkxOG4oImJ1dHRvbnMuY29weVRpdGxlIiwiQ29weSB0byBjbGlwYm9hcmQiKSxiLmkxOG4oImJ1dHRvbnMuY29weVN1Y2Nlc3MiLHsxOiJDb3BpZWQgb25lIHJvdyB0byBjbGlwYm9hcmQiLF86IkNvcGllZCAlZCByb3dzIHRvIGNsaXBib2FyZCJ9LGEucm93cyksMkUzKTt0aGlzLnByb2Nlc3NpbmcoITEpO3JldHVybn19Y2F0Y2gocSl7fX1rPWYoIjxzcGFuPiIrYi5pMThuKCJidXR0b25zLmNvcHlLZXlzIiwiUHJlc3MgPGk+Y3RybDwvaT4gb3IgPGk+4oyYPC9pPiArIDxpPkM8L2k+IHRvIGNvcHkgdGhlIHRhYmxlIGRhdGE8YnI+dG8geW91ciBzeXN0ZW0gY2xpcGJvYXJkLjxicj48YnI+VG8gY2FuY2VsLCBjbGljayB0aGlzIG1lc3NhZ2Ugb3IgcHJlc3MgZXNjYXBlLiIpKwoiPC9zcGFuPiIpLmFwcGVuZChkKTtiLmJ1dHRvbnMuaW5mbyhiLmkxOG4oImJ1dHRvbnMuY29weVRpdGxlIiwiQ29weSB0byBjbGlwYm9hcmQiKSxrLDApO2NbMF0uZm9jdXMoKTtjWzBdLnNlbGVjdCgpO3ZhciBuPWYoaykuY2xvc2VzdCgiLmR0LWJ1dHRvbi1pbmZvIikscj1mdW5jdGlvbigpe24ub2ZmKCJjbGljay5idXR0b25zLWNvcHkiKTtmKHApLm9mZigiLmJ1dHRvbnMtY29weSIpO2IuYnV0dG9ucy5pbmZvKCExKX07bi5vbigiY2xpY2suYnV0dG9ucy1jb3B5IixyKTtmKHApLm9uKCJrZXlkb3duLmJ1dHRvbnMtY29weSIsZnVuY3Rpb24oYSl7Mjc9PT1hLmtleUNvZGUmJihyKCksZy5wcm9jZXNzaW5nKCExKSl9KS5vbigiY29weS5idXR0b25zLWNvcHkgY3V0LmJ1dHRvbnMtY29weSIsZnVuY3Rpb24oKXtyKCk7Zy5wcm9jZXNzaW5nKCExKX0pfSxleHBvcnRPcHRpb25zOnt9LGZpZWxkU2VwYXJhdG9yOiJcdCIsZmllbGRCb3VuZGFyeToiIixoZWFkZXI6ITAsZm9vdGVyOiExLAp0aXRsZToiKiIsbWVzc2FnZVRvcDoiKiIsbWVzc2FnZUJvdHRvbToiKiJ9O3YuZXh0LmJ1dHRvbnMuY3N2SHRtbDU9e2JvbTohMSxjbGFzc05hbWU6ImJ1dHRvbnMtY3N2IGJ1dHRvbnMtaHRtbDUiLGF2YWlsYWJsZTpmdW5jdGlvbigpe3JldHVybiBnLkZpbGVSZWFkZXIhPT13JiZnLkJsb2J9LHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaTE4bigiYnV0dG9ucy5jc3YiLCJDU1YiKX0sYWN0aW9uOmZ1bmN0aW9uKGEsYixkLGMpe3RoaXMucHJvY2Vzc2luZyghMCk7YT1JKGIsYykuc3RyO2Q9Yi5idXR0b25zLmV4cG9ydEluZm8oYyk7dmFyIGY9Yy5jaGFyc2V0O2MuY3VzdG9taXplJiYoYT1jLmN1c3RvbWl6ZShhLGMsYikpOyExIT09Zj8oZnx8KGY9cC5jaGFyYWN0ZXJTZXR8fHAuY2hhcnNldCksZiYmKGY9IjtjaGFyc2V0PSIrZikpOmY9IiI7Yy5ib20mJihhPSLvu78iK2EpO0IobmV3IEJsb2IoW2FdLHt0eXBlOiJ0ZXh0L2NzdiIrZn0pLGQuZmlsZW5hbWUsITApO3RoaXMucHJvY2Vzc2luZyghMSl9LApmaWxlbmFtZToiKiIsZXh0ZW5zaW9uOiIuY3N2IixleHBvcnRPcHRpb25zOnt9LGZpZWxkU2VwYXJhdG9yOiIsIixmaWVsZEJvdW5kYXJ5OiciJyxlc2NhcGVDaGFyOiciJyxjaGFyc2V0Om51bGwsaGVhZGVyOiEwLGZvb3RlcjohMX07di5leHQuYnV0dG9ucy5leGNlbEh0bWw1PXtjbGFzc05hbWU6ImJ1dHRvbnMtZXhjZWwgYnV0dG9ucy1odG1sNSIsYXZhaWxhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGcuRmlsZVJlYWRlciE9PXcmJih6fHxnLkpTWmlwKSE9PXcmJiFKKCkmJkN9LHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaTE4bigiYnV0dG9ucy5leGNlbCIsIkV4Y2VsIil9LGFjdGlvbjpmdW5jdGlvbihhLGIsZCxjKXt0aGlzLnByb2Nlc3NpbmcoITApO3ZhciBwPXRoaXMsZT0wO2E9ZnVuY3Rpb24oYSl7cmV0dXJuIGYucGFyc2VYTUwoRlthXSl9O3ZhciBoPWEoInhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbCIpLG09aC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2hlZXREYXRhIilbMF07CmE9e19yZWxzOnsiLnJlbHMiOmEoIl9yZWxzLy5yZWxzIil9LHhsOntfcmVsczp7Indvcmtib29rLnhtbC5yZWxzIjphKCJ4bC9fcmVscy93b3JrYm9vay54bWwucmVscyIpfSwid29ya2Jvb2sueG1sIjphKCJ4bC93b3JrYm9vay54bWwiKSwic3R5bGVzLnhtbCI6YSgieGwvc3R5bGVzLnhtbCIpLHdvcmtzaGVldHM6eyJzaGVldDEueG1sIjpofX0sIltDb250ZW50X1R5cGVzXS54bWwiOmEoIltDb250ZW50X1R5cGVzXS54bWwiKX07dmFyIGs9Yi5idXR0b25zLmV4cG9ydERhdGEoYy5leHBvcnRPcHRpb25zKSxuLHYscT1mdW5jdGlvbihhKXtuPWUrMTt2PXIoaCwicm93Iix7YXR0cjp7cjpufX0pO2Zvcih2YXIgYj0wLGQ9YS5sZW5ndGg7YjxkO2IrKyl7dmFyIGs9QShiKSsiIituLGc9bnVsbDtpZihudWxsPT09YVtiXXx8YVtiXT09PXd8fCIiPT09YVtiXSlpZighMD09PWMuY3JlYXRlRW1wdHlDZWxscylhW2JdPSIiO2Vsc2UgY29udGludWU7dmFyIGw9YVtiXTthW2JdPWYudHJpbShhW2JdKTsKZm9yKHZhciBxPTAscD1LLmxlbmd0aDtxPHA7cSsrKXt2YXIgdT1LW3FdO2lmKGFbYl0ubWF0Y2gmJiFhW2JdLm1hdGNoKC9eMFxkKy8pJiZhW2JdLm1hdGNoKHUubWF0Y2gpKXtnPWFbYl0ucmVwbGFjZSgvW15cZFwuXC1dL2csIiIpO3UuZm10JiYoZz11LmZtdChnKSk7Zz1yKGgsImMiLHthdHRyOntyOmssczp1LnN0eWxlfSxjaGlsZHJlbjpbcihoLCJ2Iix7dGV4dDpnfSldfSk7YnJlYWt9fWd8fCgibnVtYmVyIj09PXR5cGVvZiBhW2JdfHxhW2JdLm1hdGNoJiZhW2JdLm1hdGNoKC9eLT9cZCsoXC5cZCspPyQvKSYmIWFbYl0ubWF0Y2goL14wXGQrLyk/Zz1yKGgsImMiLHthdHRyOnt0OiJuIixyOmt9LGNoaWxkcmVuOltyKGgsInYiLHt0ZXh0OmFbYl19KV19KToobD1sLnJlcGxhY2U/bC5yZXBsYWNlKC9bXHgwMC1ceDA5XHgwQlx4MENceDBFLVx4MUZceDdGLVx4OUZdL2csIiIpOmwsZz1yKGgsImMiLHthdHRyOnt0OiJpbmxpbmVTdHIiLHI6a30sY2hpbGRyZW46e3JvdzpyKGgsCiJpcyIse2NoaWxkcmVuOntyb3c6cihoLCJ0Iix7dGV4dDpsLGF0dHI6eyJ4bWw6c3BhY2UiOiJwcmVzZXJ2ZSJ9fSl9fSl9fSkpKTt2LmFwcGVuZENoaWxkKGcpfW0uYXBwZW5kQ2hpbGQodik7ZSsrfTtjLmN1c3RvbWl6ZURhdGEmJmMuY3VzdG9taXplRGF0YShrKTt2YXIgeD1mdW5jdGlvbihhLGIpe3ZhciBjPWYoIm1lcmdlQ2VsbHMiLGgpO2NbMF0uYXBwZW5kQ2hpbGQocihoLCJtZXJnZUNlbGwiLHthdHRyOntyZWY6IkEiK2ErIjoiK0EoYikrYX19KSk7Yy5hdHRyKCJjb3VudCIscGFyc2VGbG9hdChjLmF0dHIoImNvdW50IikpKzEpO2YoInJvdzplcSgiKyhhLTEpKyIpIGMiLGgpLmF0dHIoInMiLCI1MSIpfSxsPWIuYnV0dG9ucy5leHBvcnRJbmZvKGMpO2wudGl0bGUmJihxKFtsLnRpdGxlXSxlKSx4KGUsay5oZWFkZXIubGVuZ3RoLTEpKTtsLm1lc3NhZ2VUb3AmJihxKFtsLm1lc3NhZ2VUb3BdLGUpLHgoZSxrLmhlYWRlci5sZW5ndGgtMSkpO2MuaGVhZGVyJiYocShrLmhlYWRlciwKZSksZigicm93Omxhc3QgYyIsaCkuYXR0cigicyIsIjIiKSk7ZD1lO3ZhciB0PTA7Zm9yKHZhciB5PWsuYm9keS5sZW5ndGg7dDx5O3QrKylxKGsuYm9keVt0XSxlKTt0PWU7Yy5mb290ZXImJmsuZm9vdGVyJiYocShrLmZvb3RlcixlKSxmKCJyb3c6bGFzdCBjIixoKS5hdHRyKCJzIiwiMiIpKTtsLm1lc3NhZ2VCb3R0b20mJihxKFtsLm1lc3NhZ2VCb3R0b21dLGUpLHgoZSxrLmhlYWRlci5sZW5ndGgtMSkpO3E9cihoLCJjb2xzIik7Zigid29ya3NoZWV0IixoKS5wcmVwZW5kKHEpO3g9MDtmb3IoeT1rLmhlYWRlci5sZW5ndGg7eDx5O3grKylxLmFwcGVuZENoaWxkKHIoaCwiY29sIix7YXR0cjp7bWluOngrMSxtYXg6eCsxLHdpZHRoOkwoayx4KSxjdXN0b21XaWR0aDoxfX0pKTtxPWEueGxbIndvcmtib29rLnhtbCJdO2YoInNoZWV0cyBzaGVldCIscSkuYXR0cigibmFtZSIsRyhjKSk7Yy5hdXRvRmlsdGVyJiYoZigibWVyZ2VDZWxscyIsaCkuYmVmb3JlKHIoaCwiYXV0b0ZpbHRlciIsCnthdHRyOntyZWY6IkEiK2QrIjoiK0Eoay5oZWFkZXIubGVuZ3RoLTEpK3R9fSkpLGYoImRlZmluZWROYW1lcyIscSkuYXBwZW5kKHIocSwiZGVmaW5lZE5hbWUiLHthdHRyOntuYW1lOiJfeGxubS5fRmlsdGVyRGF0YWJhc2UiLGxvY2FsU2hlZXRJZDoiMCIsaGlkZGVuOjF9LHRleHQ6RyhjKSsiISRBJCIrZCsiOiIrQShrLmhlYWRlci5sZW5ndGgtMSkrdH0pKSk7Yy5jdXN0b21pemUmJmMuY3VzdG9taXplKGEsYyxiKTswPT09ZigibWVyZ2VDZWxscyIsaCkuY2hpbGRyZW4oKS5sZW5ndGgmJmYoIm1lcmdlQ2VsbHMiLGgpLnJlbW92ZSgpO2I9bmV3ICh6fHxnLkpTWmlwKTtkPXt0eXBlOiJibG9iIixtaW1lVHlwZToiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQifTtFKGIsYSk7Yi5nZW5lcmF0ZUFzeW5jP2IuZ2VuZXJhdGVBc3luYyhkKS50aGVuKGZ1bmN0aW9uKGEpe0IoYSxsLmZpbGVuYW1lKTtwLnByb2Nlc3NpbmcoITEpfSk6CihCKGIuZ2VuZXJhdGUoZCksbC5maWxlbmFtZSksdGhpcy5wcm9jZXNzaW5nKCExKSl9LGZpbGVuYW1lOiIqIixleHRlbnNpb246Ii54bHN4IixleHBvcnRPcHRpb25zOnt9LGhlYWRlcjohMCxmb290ZXI6ITEsdGl0bGU6IioiLG1lc3NhZ2VUb3A6IioiLG1lc3NhZ2VCb3R0b206IioiLGNyZWF0ZUVtcHR5Q2VsbHM6ITEsYXV0b0ZpbHRlcjohMSxzaGVldE5hbWU6IiJ9O3YuZXh0LmJ1dHRvbnMucGRmSHRtbDU9e2NsYXNzTmFtZToiYnV0dG9ucy1wZGYgYnV0dG9ucy1odG1sNSIsYXZhaWxhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGcuRmlsZVJlYWRlciE9PXcmJih0fHxnLnBkZk1ha2UpfSx0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmkxOG4oImJ1dHRvbnMucGRmIiwiUERGIil9LGFjdGlvbjpmdW5jdGlvbihhLGIsZCxjKXt0aGlzLnByb2Nlc3NpbmcoITApO2Q9Yi5idXR0b25zLmV4cG9ydERhdGEoYy5leHBvcnRPcHRpb25zKTthPWIuYnV0dG9ucy5leHBvcnRJbmZvKGMpO3ZhciBwPQpbXTtjLmhlYWRlciYmcC5wdXNoKGYubWFwKGQuaGVhZGVyLGZ1bmN0aW9uKGEpe3JldHVybnt0ZXh0OiJzdHJpbmciPT09dHlwZW9mIGE/YTphKyIiLHN0eWxlOiJ0YWJsZUhlYWRlciJ9fSkpO2Zvcih2YXIgZT0wLGg9ZC5ib2R5Lmxlbmd0aDtlPGg7ZSsrKXAucHVzaChmLm1hcChkLmJvZHlbZV0sZnVuY3Rpb24oYSl7aWYobnVsbD09PWF8fGE9PT13KWE9IiI7cmV0dXJue3RleHQ6InN0cmluZyI9PT10eXBlb2YgYT9hOmErIiIsc3R5bGU6ZSUyPyJ0YWJsZUJvZHlFdmVuIjoidGFibGVCb2R5T2RkIn19KSk7Yy5mb290ZXImJmQuZm9vdGVyJiZwLnB1c2goZi5tYXAoZC5mb290ZXIsZnVuY3Rpb24oYSl7cmV0dXJue3RleHQ6InN0cmluZyI9PT10eXBlb2YgYT9hOmErIiIsc3R5bGU6InRhYmxlRm9vdGVyIn19KSk7ZD17cGFnZVNpemU6Yy5wYWdlU2l6ZSxwYWdlT3JpZW50YXRpb246Yy5vcmllbnRhdGlvbixjb250ZW50Olt7dGFibGU6e2hlYWRlclJvd3M6MSxib2R5OnB9LGxheW91dDoibm9Cb3JkZXJzIn1dLApzdHlsZXM6e3RhYmxlSGVhZGVyOntib2xkOiEwLGZvbnRTaXplOjExLGNvbG9yOiJ3aGl0ZSIsZmlsbENvbG9yOiIjMmQ0MTU0IixhbGlnbm1lbnQ6ImNlbnRlciJ9LHRhYmxlQm9keUV2ZW46e30sdGFibGVCb2R5T2RkOntmaWxsQ29sb3I6IiNmM2YzZjMifSx0YWJsZUZvb3Rlcjp7Ym9sZDohMCxmb250U2l6ZToxMSxjb2xvcjoid2hpdGUiLGZpbGxDb2xvcjoiIzJkNDE1NCJ9LHRpdGxlOnthbGlnbm1lbnQ6ImNlbnRlciIsZm9udFNpemU6MTV9LG1lc3NhZ2U6e319LGRlZmF1bHRTdHlsZTp7Zm9udFNpemU6MTB9fTthLm1lc3NhZ2VUb3AmJmQuY29udGVudC51bnNoaWZ0KHt0ZXh0OmEubWVzc2FnZVRvcCxzdHlsZToibWVzc2FnZSIsbWFyZ2luOlswLDAsMCwxMl19KTthLm1lc3NhZ2VCb3R0b20mJmQuY29udGVudC5wdXNoKHt0ZXh0OmEubWVzc2FnZUJvdHRvbSxzdHlsZToibWVzc2FnZSIsbWFyZ2luOlswLDAsMCwxMl19KTthLnRpdGxlJiZkLmNvbnRlbnQudW5zaGlmdCh7dGV4dDphLnRpdGxlLApzdHlsZToidGl0bGUiLG1hcmdpbjpbMCwwLDAsMTJdfSk7Yy5jdXN0b21pemUmJmMuY3VzdG9taXplKGQsYyxiKTtiPSh0fHxnLnBkZk1ha2UpLmNyZWF0ZVBkZihkKTsib3BlbiIhPT1jLmRvd25sb2FkfHxKKCk/Yi5kb3dubG9hZChhLmZpbGVuYW1lKTpiLm9wZW4oKTt0aGlzLnByb2Nlc3NpbmcoITEpfSx0aXRsZToiKiIsZmlsZW5hbWU6IioiLGV4dGVuc2lvbjoiLnBkZiIsZXhwb3J0T3B0aW9uczp7fSxvcmllbnRhdGlvbjoicG9ydHJhaXQiLHBhZ2VTaXplOiJBNCIsaGVhZGVyOiEwLGZvb3RlcjohMSxtZXNzYWdlVG9wOiIqIixtZXNzYWdlQm90dG9tOiIqIixjdXN0b21pemU6bnVsbCxkb3dubG9hZDoiZG93bmxvYWQifTtyZXR1cm4gdi5CdXR0b25zfSk7Cg=="></script>
<script src="data:application/javascript;base64,LyohCiBDb2x1bW4gdmlzaWJpbGl0eSBidXR0b25zIGZvciBCdXR0b25zIGFuZCBEYXRhVGFibGVzLgogMjAxNiBTcHJ5TWVkaWEgTHRkIC0gZGF0YXRhYmxlcy5uZXQvbGljZW5zZQoqLwooZnVuY3Rpb24oZil7ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwiZGF0YXRhYmxlcy5uZXQiLCJkYXRhdGFibGVzLm5ldC1idXR0b25zIl0sZnVuY3Rpb24oYyl7cmV0dXJuIGYoYyx3aW5kb3csZG9jdW1lbnQpfSk6Im9iamVjdCI9PT10eXBlb2YgZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihjLGUpe2N8fChjPXdpbmRvdyk7ZSYmZS5mbi5kYXRhVGFibGV8fChlPXJlcXVpcmUoImRhdGF0YWJsZXMubmV0IikoYyxlKS4kKTtlLmZuLmRhdGFUYWJsZS5CdXR0b25zfHxyZXF1aXJlKCJkYXRhdGFibGVzLm5ldC1idXR0b25zIikoYyxlKTtyZXR1cm4gZihlLGMsYy5kb2N1bWVudCl9OmYoalF1ZXJ5LHdpbmRvdyxkb2N1bWVudCl9KShmdW5jdGlvbihmLGMsZSxoKXtjPWYuZm4uZGF0YVRhYmxlO2YuZXh0ZW5kKGMuZXh0LmJ1dHRvbnMse2NvbHZpczpmdW5jdGlvbihhLGIpe3JldHVybntleHRlbmQ6ImNvbGxlY3Rpb24iLAp0ZXh0OmZ1bmN0aW9uKGIpe3JldHVybiBiLmkxOG4oImJ1dHRvbnMuY29sdmlzIiwiQ29sdW1uIHZpc2liaWxpdHkiKX0sY2xhc3NOYW1lOiJidXR0b25zLWNvbHZpcyIsYnV0dG9uczpbe2V4dGVuZDoiY29sdW1uc1RvZ2dsZSIsY29sdW1uczpiLmNvbHVtbnMsY29sdW1uVGV4dDpiLmNvbHVtblRleHR9XX19LGNvbHVtbnNUb2dnbGU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5jb2x1bW5zKGIuY29sdW1ucykuaW5kZXhlcygpLm1hcChmdW5jdGlvbihhKXtyZXR1cm57ZXh0ZW5kOiJjb2x1bW5Ub2dnbGUiLGNvbHVtbnM6YSxjb2x1bW5UZXh0OmIuY29sdW1uVGV4dH19KS50b0FycmF5KCl9LGNvbHVtblRvZ2dsZTpmdW5jdGlvbihhLGIpe3JldHVybntleHRlbmQ6ImNvbHVtblZpc2liaWxpdHkiLGNvbHVtbnM6Yi5jb2x1bW5zLGNvbHVtblRleHQ6Yi5jb2x1bW5UZXh0fX0sY29sdW1uc1Zpc2liaWxpdHk6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5jb2x1bW5zKGIuY29sdW1ucykuaW5kZXhlcygpLm1hcChmdW5jdGlvbihhKXtyZXR1cm57ZXh0ZW5kOiJjb2x1bW5WaXNpYmlsaXR5IiwKY29sdW1uczphLHZpc2liaWxpdHk6Yi52aXNpYmlsaXR5LGNvbHVtblRleHQ6Yi5jb2x1bW5UZXh0fX0pLnRvQXJyYXkoKX0sY29sdW1uVmlzaWJpbGl0eTp7Y29sdW1uczpoLHRleHQ6ZnVuY3Rpb24oYSxiLGQpe3JldHVybiBkLl9jb2x1bW5UZXh0KGEsZCl9LGNsYXNzTmFtZToiYnV0dG9ucy1jb2x1bW5WaXNpYmlsaXR5IixhY3Rpb246ZnVuY3Rpb24oYSxiLGQsZyl7YT1iLmNvbHVtbnMoZy5jb2x1bW5zKTtiPWEudmlzaWJsZSgpO2EudmlzaWJsZShnLnZpc2liaWxpdHkhPT1oP2cudmlzaWJpbGl0eTohKGIubGVuZ3RoJiZiWzBdKSl9LGluaXQ6ZnVuY3Rpb24oYSxiLGQpe3ZhciBnPXRoaXM7Yi5hdHRyKCJkYXRhLWN2LWlkeCIsZC5jb2x1bW5zKTthLm9uKCJjb2x1bW4tdmlzaWJpbGl0eS5kdCIrZC5uYW1lc3BhY2UsZnVuY3Rpb24oYixjKXtjLmJEZXN0cm95aW5nfHxjLm5UYWJsZSE9YS5zZXR0aW5ncygpWzBdLm5UYWJsZXx8Zy5hY3RpdmUoYS5jb2x1bW4oZC5jb2x1bW5zKS52aXNpYmxlKCkpfSkub24oImNvbHVtbi1yZW9yZGVyLmR0IisKZC5uYW1lc3BhY2UsZnVuY3Rpb24oYyxlLGYpezE9PT1hLmNvbHVtbnMoZC5jb2x1bW5zKS5jb3VudCgpJiYoYi50ZXh0KGQuX2NvbHVtblRleHQoYSxkKSksZy5hY3RpdmUoYS5jb2x1bW4oZC5jb2x1bW5zKS52aXNpYmxlKCkpKX0pO3RoaXMuYWN0aXZlKGEuY29sdW1uKGQuY29sdW1ucykudmlzaWJsZSgpKX0sZGVzdHJveTpmdW5jdGlvbihhLGIsZCl7YS5vZmYoImNvbHVtbi12aXNpYmlsaXR5LmR0IitkLm5hbWVzcGFjZSkub2ZmKCJjb2x1bW4tcmVvcmRlci5kdCIrZC5uYW1lc3BhY2UpfSxfY29sdW1uVGV4dDpmdW5jdGlvbihhLGIpe3ZhciBkPWEuY29sdW1uKGIuY29sdW1ucykuaW5kZXgoKSxjPWEuc2V0dGluZ3MoKVswXS5hb0NvbHVtbnNbZF0uc1RpdGxlLnJlcGxhY2UoL1xuL2csIiAiKS5yZXBsYWNlKC88YnJccypcLz8+L2dpLCIgIikucmVwbGFjZSgvPHNlbGVjdCguKj8pPFwvc2VsZWN0Pi9nLCIiKS5yZXBsYWNlKC88IVwtXC0uKj9cLVwtPi9nLCIiKS5yZXBsYWNlKC88Lio/Pi9nLAoiIikucmVwbGFjZSgvXlxzK3xccyskL2csIiIpO3JldHVybiBiLmNvbHVtblRleHQ/Yi5jb2x1bW5UZXh0KGEsZCxjKTpjfX0sY29sdmlzUmVzdG9yZTp7Y2xhc3NOYW1lOiJidXR0b25zLWNvbHZpc1Jlc3RvcmUiLHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaTE4bigiYnV0dG9ucy5jb2x2aXNSZXN0b3JlIiwiUmVzdG9yZSB2aXNpYmlsaXR5Iil9LGluaXQ6ZnVuY3Rpb24oYSxiLGQpe2QuX3Zpc09yaWdpbmFsPWEuY29sdW1ucygpLmluZGV4ZXMoKS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGEuY29sdW1uKGIpLnZpc2libGUoKX0pLnRvQXJyYXkoKX0sYWN0aW9uOmZ1bmN0aW9uKGEsYixkLGMpe2IuY29sdW1ucygpLmV2ZXJ5KGZ1bmN0aW9uKGEpe2E9Yi5jb2xSZW9yZGVyJiZiLmNvbFJlb3JkZXIudHJhbnNwb3NlP2IuY29sUmVvcmRlci50cmFuc3Bvc2UoYSwidG9PcmlnaW5hbCIpOmE7dGhpcy52aXNpYmxlKGMuX3Zpc09yaWdpbmFsW2FdKX0pfX0sY29sdmlzR3JvdXA6e2NsYXNzTmFtZToiYnV0dG9ucy1jb2x2aXNHcm91cCIsCmFjdGlvbjpmdW5jdGlvbihhLGIsZCxjKXtiLmNvbHVtbnMoYy5zaG93KS52aXNpYmxlKCEwLCExKTtiLmNvbHVtbnMoYy5oaWRlKS52aXNpYmxlKCExLCExKTtiLmNvbHVtbnMuYWRqdXN0KCl9LHNob3c6W10saGlkZTpbXX19KTtyZXR1cm4gYy5CdXR0b25zfSk7Cg=="></script>
<script src="data:application/javascript;base64,LyohCiBQcmludCBidXR0b24gZm9yIEJ1dHRvbnMgYW5kIERhdGFUYWJsZXMuCiAyMDE2IFNwcnlNZWRpYSBMdGQgLSBkYXRhdGFibGVzLm5ldC9saWNlbnNlCiovCihmdW5jdGlvbihjKXsiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiLCJkYXRhdGFibGVzLm5ldCIsImRhdGF0YWJsZXMubmV0LWJ1dHRvbnMiXSxmdW5jdGlvbihlKXtyZXR1cm4gYyhlLHdpbmRvdyxkb2N1bWVudCl9KToib2JqZWN0Ij09PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKGUsYSl7ZXx8KGU9d2luZG93KTthJiZhLmZuLmRhdGFUYWJsZXx8KGE9cmVxdWlyZSgiZGF0YXRhYmxlcy5uZXQiKShlLGEpLiQpO2EuZm4uZGF0YVRhYmxlLkJ1dHRvbnN8fHJlcXVpcmUoImRhdGF0YWJsZXMubmV0LWJ1dHRvbnMiKShlLGEpO3JldHVybiBjKGEsZSxlLmRvY3VtZW50KX06YyhqUXVlcnksd2luZG93LGRvY3VtZW50KX0pKGZ1bmN0aW9uKGMsZSxhLHEpe3ZhciBrPWMuZm4uZGF0YVRhYmxlLGQ9YS5jcmVhdGVFbGVtZW50KCJhIikscD1mdW5jdGlvbihiKXtkLmhyZWY9YjtiPWQuaG9zdDstMT09PWIuaW5kZXhPZigiLyIpJiYKMCE9PWQucGF0aG5hbWUuaW5kZXhPZigiLyIpJiYoYis9Ii8iKTtyZXR1cm4gZC5wcm90b2NvbCsiLy8iK2IrZC5wYXRobmFtZStkLnNlYXJjaH07ay5leHQuYnV0dG9ucy5wcmludD17Y2xhc3NOYW1lOiJidXR0b25zLXByaW50Iix0ZXh0OmZ1bmN0aW9uKGIpe3JldHVybiBiLmkxOG4oImJ1dHRvbnMucHJpbnQiLCJQcmludCIpfSxhY3Rpb246ZnVuY3Rpb24oYixhLGQsZyl7Yj1hLmJ1dHRvbnMuZXhwb3J0RGF0YShjLmV4dGVuZCh7ZGVjb2RlRW50aXRpZXM6ITF9LGcuZXhwb3J0T3B0aW9ucykpO2Q9YS5idXR0b25zLmV4cG9ydEluZm8oZyk7dmFyIGs9YS5jb2x1bW5zKGcuZXhwb3J0T3B0aW9ucy5jb2x1bW5zKS5mbGF0dGVuKCkubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBhLnNldHRpbmdzKClbMF0uYW9Db2x1bW5zW2EuY29sdW1uKGIpLmluZGV4KCldLnNDbGFzc30pLnRvQXJyYXkoKSxtPWZ1bmN0aW9uKGIsYSl7Zm9yKHZhciBkPSI8dHI+IixjPTAsZT1iLmxlbmd0aDtjPGU7YysrKWQrPQoiPCIrYSsiICIrKGtbY10/J2NsYXNzPSInK2tbY10rJyInOiIiKSsiPiIrKG51bGw9PT1iW2NdfHxiW2NdPT09cT8iIjpiW2NdKSsiPC8iK2ErIj4iO3JldHVybiBkKyI8L3RyPiJ9LGg9Jzx0YWJsZSBjbGFzcz0iJythLnRhYmxlKCkubm9kZSgpLmNsYXNzTmFtZSsnIj4nO2cuaGVhZGVyJiYoaCs9Ijx0aGVhZD4iK20oYi5oZWFkZXIsInRoIikrIjwvdGhlYWQ+Iik7aCs9Ijx0Ym9keT4iO2Zvcih2YXIgbj0wLHI9Yi5ib2R5Lmxlbmd0aDtuPHI7bisrKWgrPW0oYi5ib2R5W25dLCJ0ZCIpO2grPSI8L3Rib2R5PiI7Zy5mb290ZXImJmIuZm9vdGVyJiYoaCs9Ijx0Zm9vdD4iK20oYi5mb290ZXIsInRoIikrIjwvdGZvb3Q+Iik7aCs9IjwvdGFibGU+Ijt2YXIgZj1lLm9wZW4oIiIsIiIpO2YuZG9jdW1lbnQuY2xvc2UoKTt2YXIgbD0iPHRpdGxlPiIrZC50aXRsZSsiPC90aXRsZT4iO2MoInN0eWxlLCBsaW5rIikuZWFjaChmdW5jdGlvbigpe3ZhciBiPWwsYT1jKHRoaXMpLmNsb25lKClbMF07CiJsaW5rIj09PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmKGEuaHJlZj1wKGEuaHJlZikpO2w9YithLm91dGVySFRNTH0pO3RyeXtmLmRvY3VtZW50LmhlYWQuaW5uZXJIVE1MPWx9Y2F0Y2godCl7YyhmLmRvY3VtZW50LmhlYWQpLmh0bWwobCl9Zi5kb2N1bWVudC5ib2R5LmlubmVySFRNTD0iPGgxPiIrZC50aXRsZSsiPC9oMT48ZGl2PiIrKGQubWVzc2FnZVRvcHx8IiIpKyI8L2Rpdj4iK2grIjxkaXY+IisoZC5tZXNzYWdlQm90dG9tfHwiIikrIjwvZGl2PiI7YyhmLmRvY3VtZW50LmJvZHkpLmFkZENsYXNzKCJkdC1wcmludC12aWV3Iik7YygiaW1nIixmLmRvY3VtZW50LmJvZHkpLmVhY2goZnVuY3Rpb24oYixhKXthLnNldEF0dHJpYnV0ZSgic3JjIixwKGEuZ2V0QXR0cmlidXRlKCJzcmMiKSkpfSk7Zy5jdXN0b21pemUmJmcuY3VzdG9taXplKGYsZyxhKTtiPWZ1bmN0aW9uKCl7Zy5hdXRvUHJpbnQmJihmLnByaW50KCksZi5jbG9zZSgpKX07bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvVHJpZGVudFwvXGQuXGQvKT8KYigpOmYuc2V0VGltZW91dChiLDFFMyl9LHRpdGxlOiIqIixtZXNzYWdlVG9wOiIqIixtZXNzYWdlQm90dG9tOiIqIixleHBvcnRPcHRpb25zOnt9LGhlYWRlcjohMCxmb290ZXI6ITEsYXV0b1ByaW50OiEwLGN1c3RvbWl6ZTpudWxsfTtyZXR1cm4gay5CdXR0b25zfSk7Cg=="></script>
<link href="data:text/css,%2Econtainer%2Dfluid%2Ecrosstalk%2Dbscols%7Bmargin%2Dleft%3A%2D30px%3Bmargin%2Dright%3A%2D30px%3Bwhite%2Dspace%3Anormal%7Dbody%3E%2Econtainer%2Dfluid%2Ecrosstalk%2Dbscols%7Bmargin%2Dleft%3Aauto%3Bmargin%2Dright%3Aauto%7D%2Ecrosstalk%2Dinput%2Dcheckboxgroup%20%2Ecrosstalk%2Doptions%2Dgroup%20%2Ecrosstalk%2Doptions%2Dcolumn%7Bdisplay%3Ainline%2Dblock%3Bpadding%2Dright%3A12px%3Bvertical%2Dalign%3Atop%7D%40media%20only%20screen%20and%20%28max%2Dwidth%3A%20480px%29%7B%2Ecrosstalk%2Dinput%2Dcheckboxgroup%20%2Ecrosstalk%2Doptions%2Dgroup%20%2Ecrosstalk%2Doptions%2Dcolumn%7Bdisplay%3Ablock%3Bpadding%2Dright%3Ainherit%7D%7D%2Ecrosstalk%2Dinput%7Bmargin%2Dbottom%3A15px%7D%2Ecrosstalk%2Dinput%20%2Econtrol%2Dlabel%7Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Ecrosstalk%2Dinput%20input%5Btype%3D%22checkbox%22%5D%7Bmargin%3A4px%200%200%3Bmargin%2Dtop%3A1px%3Bline%2Dheight%3Anormal%7D%2Ecrosstalk%2Dinput%20%2Echeckbox%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bmargin%2Dtop%3A10px%3Bmargin%2Dbottom%3A10px%7D%2Ecrosstalk%2Dinput%20%2Echeckbox%3Elabel%7Bpadding%2Dleft%3A20px%3Bmargin%2Dbottom%3A0%3Bfont%2Dweight%3A400%3Bcursor%3Apointer%7D%2Ecrosstalk%2Dinput%20%2Echeckbox%20input%5Btype%3D%22checkbox%22%5D%2C%2Ecrosstalk%2Dinput%20%2Echeckbox%2Dinline%20input%5Btype%3D%22checkbox%22%5D%7Bposition%3Aabsolute%3Bmargin%2Dtop%3A2px%3Bmargin%2Dleft%3A%2D20px%7D%2Ecrosstalk%2Dinput%20%2Echeckbox%2B%2Echeckbox%7Bmargin%2Dtop%3A%2D5px%7D%2Ecrosstalk%2Dinput%20%2Echeckbox%2Dinline%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%3Bpadding%2Dleft%3A20px%3Bmargin%2Dbottom%3A0%3Bfont%2Dweight%3A400%3Bvertical%2Dalign%3Amiddle%3Bcursor%3Apointer%7D%2Ecrosstalk%2Dinput%20%2Echeckbox%2Dinline%2B%2Echeckbox%2Dinline%7Bmargin%2Dtop%3A0%3Bmargin%2Dleft%3A10px%7D%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,IWZ1bmN0aW9uIG8odSxhLGwpe2Z1bmN0aW9uIHMobixlKXtpZighYVtuXSl7aWYoIXVbbl0pe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFlJiZ0KXJldHVybiB0KG4sITApO2lmKGYpcmV0dXJuIGYobiwhMCk7dmFyIHI9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrbisiJyIpO3Rocm93IHIuY29kZT0iTU9EVUxFX05PVF9GT1VORCIscn12YXIgaT1hW25dPXtleHBvcnRzOnt9fTt1W25dWzBdLmNhbGwoaS5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciB0PXVbbl1bMV1bZV07cmV0dXJuIHModHx8ZSl9LGksaS5leHBvcnRzLG8sdSxhLGwpfXJldHVybiBhW25dLmV4cG9ydHN9Zm9yKHZhciBmPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGU9MDtlPGwubGVuZ3RoO2UrKylzKGxbZV0pO3JldHVybiBzfSh7MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdCYmcihlLnByb3RvdHlwZSx0KSxuJiZyKGUsbiksZX19KCk7dmFyIGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsZSksdGhpcy5fdHlwZXM9e30sdGhpcy5fc2VxPTB9cmV0dXJuIHIoZSxbe2tleToib24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fdHlwZXNbZV07bnx8KG49dGhpcy5fdHlwZXNbZV09e30pO3ZhciByPSJzdWIiK3RoaXMuX3NlcSsrO3JldHVybiBuW3JdPXQscn19LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl90eXBlc1tlXTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdCl7Zm9yKHZhciByIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShyKSYmbltyXT09PXQpcmV0dXJuIGRlbGV0ZSBuW3JdLHI7cmV0dXJuITF9aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiEoIW58fCFuW3RdKSYmKGRlbGV0ZSBuW3RdLHQpO3Rocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCB0eXBlIGZvciBsaXN0ZW5lciIpfX0se2tleToidHJpZ2dlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX3R5cGVzW2VdO2Zvcih2YXIgaSBpbiByKXIuaGFzT3duUHJvcGVydHkoaSkmJnJbaV0uY2FsbChuLHQpfX1dKSxlfSgpO24uZGVmYXVsdD1pfSx7fV0sMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbi5GaWx0ZXJIYW5kbGU9dm9pZCAwO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbihlLHQsbil7cmV0dXJuIHQmJnIoZS5wcm90b3R5cGUsdCksbiYmcihlLG4pLGV9fSgpLGk9bChlKCIuL2V2ZW50cyIpKSxvPWwoZSgiLi9maWx0ZXJzZXQiKSksdT1sKGUoIi4vZ3JvdXAiKSksYT1mdW5jdGlvbihlKXt7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJih0W25dPWVbbl0pO3JldHVybiB0LmRlZmF1bHQ9ZSx0fX0oZSgiLi91dGlsIikpO2Z1bmN0aW9uIGwoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBzPTE7bi5GaWx0ZXJIYW5kbGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKGUsdCl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsbiksdGhpcy5fZXZlbnRSZWxheT1uZXcgaS5kZWZhdWx0LHRoaXMuX2VtaXR0ZXI9bmV3IGEuU3Vic2NyaXB0aW9uVHJhY2tlcih0aGlzLl9ldmVudFJlbGF5KSx0aGlzLl9ncm91cD1udWxsLHRoaXMuX2ZpbHRlclNldD1udWxsLHRoaXMuX2ZpbHRlclZhcj1udWxsLHRoaXMuX3Zhck9uQ2hhbmdlU3ViPW51bGwsdGhpcy5fZXh0cmFJbmZvPWEuZXh0ZW5kKHtzZW5kZXI6dGhpc30sdCksdGhpcy5faWQ9ImZpbHRlciIrcysrLHRoaXMuc2V0R3JvdXAoZSl9cmV0dXJuIHIobixbe2tleToic2V0R3JvdXAiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj10aGlzO2lmKHRoaXMuX2dyb3VwIT09ZSYmKCh0aGlzLl9ncm91cHx8ZSkmJih0aGlzLl9maWx0ZXJWYXImJih0aGlzLl9maWx0ZXJWYXIub2ZmKCJjaGFuZ2UiLHRoaXMuX3Zhck9uQ2hhbmdlU3ViKSx0aGlzLmNsZWFyKCksdGhpcy5fdmFyT25DaGFuZ2VTdWI9bnVsbCx0aGlzLl9maWx0ZXJWYXI9bnVsbCx0aGlzLl9maWx0ZXJTZXQ9bnVsbCksdGhpcy5fZ3JvdXA9ZSkpKXtlPSgwLHUuZGVmYXVsdCkoZSksdGhpcy5fZmlsdGVyU2V0PSh0PWUudmFyKCJmaWx0ZXJzZXQiKSwobj10LmdldCgpKXx8KG49bmV3IG8uZGVmYXVsdCx0LnNldChuKSksbiksdGhpcy5fZmlsdGVyVmFyPSgwLHUuZGVmYXVsdCkoZSkudmFyKCJmaWx0ZXIiKTt2YXIgaT10aGlzLl9maWx0ZXJWYXIub24oImNoYW5nZSIsZnVuY3Rpb24oZSl7ci5fZXZlbnRSZWxheS50cmlnZ2VyKCJjaGFuZ2UiLGUscil9KTt0aGlzLl92YXJPbkNoYW5nZVN1Yj1pfX19LHtrZXk6Il9tZXJnZUV4dHJhSW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGEuZXh0ZW5kKHt9LHRoaXMuX2V4dHJhSW5mbz90aGlzLl9leHRyYUluZm86bnVsbCxlfHxudWxsKX19LHtrZXk6ImNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2VtaXR0ZXIucmVtb3ZlQWxsTGlzdGVuZXJzKCksdGhpcy5jbGVhcigpLHRoaXMuc2V0R3JvdXAobnVsbCl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5fZmlsdGVyU2V0JiYodGhpcy5fZmlsdGVyU2V0LmNsZWFyKHRoaXMuX2lkKSx0aGlzLl9vbkNoYW5nZShlKSl9fSx7a2V5OiJzZXQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fZmlsdGVyU2V0JiYodGhpcy5fZmlsdGVyU2V0LnVwZGF0ZSh0aGlzLl9pZCxlKSx0aGlzLl9vbkNoYW5nZSh0KSl9fSx7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fZW1pdHRlci5vbihlLHQpfX0se2tleToib2ZmIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9lbWl0dGVyLm9mZihlLHQpfX0se2tleToiX29uQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLl9maWx0ZXJTZXQmJnRoaXMuX2ZpbHRlclZhci5zZXQodGhpcy5fZmlsdGVyU2V0LnZhbHVlLHRoaXMuX21lcmdlRXh0cmFJbmZvKGUpKX19LHtrZXk6ImZpbHRlcmVkS2V5cyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZpbHRlclNldD90aGlzLl9maWx0ZXJTZXQudmFsdWU6bnVsbH19XSksbn0oKX0seyIuL2V2ZW50cyI6MSwiLi9maWx0ZXJzZXQiOjMsIi4vZ3JvdXAiOjQsIi4vdXRpbCI6MTF9XSwzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0JiZyKGUucHJvdG90eXBlLHQpLG4mJnIoZSxuKSxlfX0oKSxhPWUoIi4vdXRpbCIpO2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZT09PXQ/MDplPHQ/LTE6dDxlPzE6dm9pZCAwfXZhciBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGUpLHRoaXMucmVzZXQoKX1yZXR1cm4gcihlLFt7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9oYW5kbGVzPXt9LHRoaXMuX2tleXM9e30sdGhpcy5fdmFsdWU9bnVsbCx0aGlzLl9hY3RpdmVIYW5kbGVzPTB9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7bnVsbCE9PXQmJih0PXQuc2xpY2UoMCkpLnNvcnQobCk7dmFyIG49KDAsYS5kaWZmU29ydGVkTGlzdHMpKHRoaXMuX2hhbmRsZXNbZV0sdCkscj1uLmFkZGVkLGk9bi5yZW1vdmVkO3RoaXMuX2hhbmRsZXNbZV09dDtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKyl0aGlzLl9rZXlzW3Jbb11dPSh0aGlzLl9rZXlzW3Jbb11dfHwwKSsxO2Zvcih2YXIgdT0wO3U8aS5sZW5ndGg7dSsrKXRoaXMuX2tleXNbaVt1XV0tLTt0aGlzLl91cGRhdGVWYWx1ZSh0KX19LHtrZXk6Il91cGRhdGVWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT0wPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dGhpcy5fYWxsS2V5cyx0PU9iamVjdC5rZXlzKHRoaXMuX2hhbmRsZXMpLmxlbmd0aDtpZigwPT09dCl0aGlzLl92YWx1ZT1udWxsO2Vsc2V7dGhpcy5fdmFsdWU9W107Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3RoaXMuX2tleXNbZVtuXV09PT10JiZ0aGlzLl92YWx1ZS5wdXNoKGVbbl0pfX19fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYodm9pZCAwIT09dGhpcy5faGFuZGxlc1tlXSl7dmFyIHQ9dGhpcy5faGFuZGxlc1tlXTt0fHwodD1bXSk7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspdGhpcy5fa2V5c1t0W25dXS0tO2RlbGV0ZSB0aGlzLl9oYW5kbGVzW2VdLHRoaXMuX3VwZGF0ZVZhbHVlKCl9fX0se2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92YWx1ZX19LHtrZXk6Il9hbGxLZXlzIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT1PYmplY3Qua2V5cyh0aGlzLl9rZXlzKTtyZXR1cm4gZS5zb3J0KGwpLGV9fV0pLGV9KCk7bi5kZWZhdWx0PWl9LHsiLi91dGlsIjoxMX1dLDQ6W2Z1bmN0aW9uKGwsZSxzKXsoZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShzLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0JiZyKGUucHJvdG90eXBlLHQpLG4mJnIoZSxuKSxlfX0oKSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfTtzLmRlZmF1bHQ9ZnVuY3Rpb24gZSh0KXt7aWYodCYmInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB1Lmhhc093blByb3BlcnR5KHQpfHwodVt0XT1uZXcgYSh0KSksdVt0XTtpZigib2JqZWN0Ij09PSh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOnIodCkpJiZ0Ll92YXJzJiZ0LnZhcilyZXR1cm4gdDtpZihBcnJheS5pc0FycmF5KHQpJiYxPT10Lmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiB0WzBdKXJldHVybiBlKHRbMF0pO3Rocm93IG5ldyBFcnJvcigiSW52YWxpZCBncm91cE5hbWUgYXJndW1lbnQiKX19O3ZhciB0LGk9bCgiLi92YXIiKSxvPSh0PWkpJiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fTtlLl9fY3Jvc3N0YWxrX2dyb3Vwcz1lLl9fY3Jvc3N0YWxrX2dyb3Vwc3x8e307dmFyIHU9ZS5fX2Nyb3NzdGFsa19ncm91cHM7dmFyIGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpLHRoaXMubmFtZT1lLHRoaXMuX3ZhcnM9e319cmV0dXJuIG4odCxbe2tleToidmFyIix2YWx1ZTpmdW5jdGlvbihlKXtpZighZXx8InN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCB2YXIgbmFtZSIpO3JldHVybiB0aGlzLl92YXJzLmhhc093blByb3BlcnR5KGUpfHwodGhpcy5fdmFyc1tlXT1uZXcgby5kZWZhdWx0KHRoaXMsZSkpLHRoaXMuX3ZhcnNbZV19fSx7a2V5OiJoYXMiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHZhciBuYW1lIik7cmV0dXJuIHRoaXMuX3ZhcnMuaGFzT3duUHJvcGVydHkoZSl9fV0pLHR9KCl9KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsiLi92YXIiOjEyfV0sNTpbZnVuY3Rpb24oZixlLGMpeyhmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB0LG49ZigiLi9ncm91cCIpLHI9KHQ9bikmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9LGk9ZigiLi9zZWxlY3Rpb24iKSxvPWYoIi4vZmlsdGVyIiksdT1mKCIuL2lucHV0Iik7ZigiLi9pbnB1dF9zZWxlY3RpemUiKSxmKCIuL2lucHV0X2NoZWNrYm94Z3JvdXAiKSxmKCIuL2lucHV0X3NsaWRlciIpO3ZhciBhPSgwLHIuZGVmYXVsdCkoImRlZmF1bHQiKTtmdW5jdGlvbiBsKGUpe3JldHVybiBhLnZhcihlKX1lLlNoaW55JiZlLlNoaW55LmFkZEN1c3RvbU1lc3NhZ2VIYW5kbGVyKCJ1cGRhdGUtY2xpZW50LXZhbHVlIixmdW5jdGlvbihlKXsic3RyaW5nIj09dHlwZW9mIGUuZ3JvdXA/KDAsci5kZWZhdWx0KShlLmdyb3VwKS52YXIoZS5uYW1lKS5zZXQoZS52YWx1ZSk6bChlLm5hbWUpLnNldChlLnZhbHVlKX0pO3ZhciBzPXtncm91cDpyLmRlZmF1bHQsdmFyOmwsaGFzOmZ1bmN0aW9uKGUpe3JldHVybiBhLmhhcyhlKX0sU2VsZWN0aW9uSGFuZGxlOmkuU2VsZWN0aW9uSGFuZGxlLEZpbHRlckhhbmRsZTpvLkZpbHRlckhhbmRsZSxiaW5kOnUuYmluZH07Yy5kZWZhdWx0PXMsZS5jcm9zc3RhbGs9c30pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0seyIuL2ZpbHRlciI6MiwiLi9ncm91cCI6NCwiLi9pbnB1dCI6NiwiLi9pbnB1dF9jaGVja2JveGdyb3VwIjo3LCIuL2lucHV0X3NlbGVjdGl6ZSI6OCwiLi9pbnB1dF9zbGlkZXIiOjksIi4vc2VsZWN0aW9uIjoxMH1dLDY6W2Z1bmN0aW9uKGUsdCxhKXsoZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxhLnJlZ2lzdGVyPWZ1bmN0aW9uKGUpe3JbZS5jbGFzc05hbWVdPWUsdC5kb2N1bWVudCYmImNvbXBsZXRlIiE9PXQuZG9jdW1lbnQucmVhZHlTdGF0ZT9vKGZ1bmN0aW9uKCl7bigpfSk6dC5kb2N1bWVudCYmc2V0VGltZW91dChuLDEwMCl9LGEuYmluZD1uO3ZhciBvPXQualF1ZXJ5LHI9e307ZnVuY3Rpb24gbigpe09iamVjdC5rZXlzKHIpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIG49cltlXTtvKCIuIituLmNsYXNzTmFtZSkubm90KCIuY3Jvc3N0YWxrLWlucHV0LWJvdW5kIikuZWFjaChmdW5jdGlvbihlLHQpe2kobix0KX0pfSl9ZnVuY3Rpb24gaShlLHQpe3ZhciBuPW8odCkuZmluZCgic2NyaXB0W3R5cGU9J2FwcGxpY2F0aW9uL2pzb24nXVtkYXRhLWZvcj0nIit0LmlkLnJlcGxhY2UoLyhbISIjJCUmJygpKissLi86Ozw9Pj9AW1xcXF1eYHt8fX5dKS9nLCJcXCQxIikrIiddIikscj1KU09OLnBhcnNlKG5bMF0uaW5uZXJUZXh0KSxpPWUuZmFjdG9yeSh0LHIpO28odCkuZGF0YSgiY3Jvc3N0YWxrLWluc3RhbmNlIixpKSxvKHQpLmFkZENsYXNzKCJjcm9zc3RhbGstaW5wdXQtYm91bmQiKX1pZih0LlNoaW55KXt2YXIgZT1uZXcgdC5TaGlueS5JbnB1dEJpbmRpbmcsdT10LmpRdWVyeTt1LmV4dGVuZChlLHtmaW5kOmZ1bmN0aW9uKGUpe3JldHVybiB1KGUpLmZpbmQoIi5jcm9zc3RhbGstaW5wdXQiKX0saW5pdGlhbGl6ZTpmdW5jdGlvbihlKXt2YXIgdCxuO3UoZSkuaGFzQ2xhc3MoImNyb3NzdGFsay1pbnB1dC1ib3VuZCIpfHwobj1vKHQ9ZSksT2JqZWN0LmtleXMocikuZm9yRWFjaChmdW5jdGlvbihlKXtuLmhhc0NsYXNzKGUpJiYhbi5oYXNDbGFzcygiY3Jvc3N0YWxrLWlucHV0LWJvdW5kIikmJmkocltlXSx0KX0pKX0sZ2V0SWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWR9LGdldFZhbHVlOmZ1bmN0aW9uKGUpe30sc2V0VmFsdWU6ZnVuY3Rpb24oZSx0KXt9LHJlY2VpdmVNZXNzYWdlOmZ1bmN0aW9uKGUsdCl7fSxzdWJzY3JpYmU6ZnVuY3Rpb24oZSx0KXt1KGUpLmRhdGEoImNyb3NzdGFsay1pbnN0YW5jZSIpLnJlc3VtZSgpfSx1bnN1YnNjcmliZTpmdW5jdGlvbihlKXt1KGUpLmRhdGEoImNyb3NzdGFsay1pbnN0YW5jZSIpLnN1c3BlbmQoKX19KSx0LlNoaW55LmlucHV0QmluZGluZ3MucmVnaXN0ZXIoZSwiY3Jvc3N0YWxrLmlucHV0QmluZGluZyIpfX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0se31dLDc6W2Z1bmN0aW9uKHIsZSx0KXsoZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO3ZhciB0PWZ1bmN0aW9uKGUpe3tpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHQuZGVmYXVsdD1lLHR9fShyKCIuL2lucHV0IikpLG49cigiLi9maWx0ZXIiKTt2YXIgYT1lLmpRdWVyeTt0LnJlZ2lzdGVyKHtjbGFzc05hbWU6ImNyb3NzdGFsay1pbnB1dC1jaGVja2JveGdyb3VwIixmYWN0b3J5OmZ1bmN0aW9uKGUscil7dmFyIGk9bmV3IG4uRmlsdGVySGFuZGxlKHIuZ3JvdXApLG89dm9pZCAwLHU9YShlKTtyZXR1cm4gdS5vbigiY2hhbmdlIiwiaW5wdXRbdHlwZT0nY2hlY2tib3gnXSIsZnVuY3Rpb24oKXt2YXIgZT11LmZpbmQoImlucHV0W3R5cGU9J2NoZWNrYm94J106Y2hlY2tlZCIpO2lmKDA9PT1lLmxlbmd0aClvPW51bGwsaS5jbGVhcigpO2Vsc2V7dmFyIHQ9e307ZS5lYWNoKGZ1bmN0aW9uKCl7ci5tYXBbdGhpcy52YWx1ZV0uZm9yRWFjaChmdW5jdGlvbihlKXt0W2VdPSEwfSl9KTt2YXIgbj1PYmplY3Qua2V5cyh0KTtuLnNvcnQoKSxvPW4saS5zZXQobil9fSkse3N1c3BlbmQ6ZnVuY3Rpb24oKXtpLmNsZWFyKCl9LHJlc3VtZTpmdW5jdGlvbigpe28mJmkuc2V0KG8pfX19fSl9KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsiLi9maWx0ZXIiOjIsIi4vaW5wdXQiOjZ9XSw4OltmdW5jdGlvbihyLGUsdCl7KGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1uKHIoIi4vaW5wdXQiKSksbD1uKHIoIi4vdXRpbCIpKSxzPXIoIi4vZmlsdGVyIik7ZnVuY3Rpb24gbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHQuZGVmYXVsdD1lLHR9dmFyIGY9ZS5qUXVlcnk7dC5yZWdpc3Rlcih7Y2xhc3NOYW1lOiJjcm9zc3RhbGstaW5wdXQtc2VsZWN0IixmYWN0b3J5OmZ1bmN0aW9uKGUsbil7dmFyIHQ9bC5kYXRhZnJhbWVUb0QzKG4uaXRlbXMpLHI9e29wdGlvbnM6W3t2YWx1ZToiIixsYWJlbDoiKEFsbCkifV0uY29uY2F0KHQpLHZhbHVlRmllbGQ6InZhbHVlIixsYWJlbEZpZWxkOiJsYWJlbCIsc2VhcmNoRmllbGQ6ImxhYmVsIn0saT1mKGUpLmZpbmQoInNlbGVjdCIpWzBdLG89ZihpKS5zZWxlY3RpemUocilbMF0uc2VsZWN0aXplLHU9bmV3IHMuRmlsdGVySGFuZGxlKG4uZ3JvdXApLGE9dm9pZCAwO3JldHVybiBvLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7aWYoMD09PW8uaXRlbXMubGVuZ3RoKWE9bnVsbCx1LmNsZWFyKCk7ZWxzZXt2YXIgdD17fTtvLml0ZW1zLmZvckVhY2goZnVuY3Rpb24oZSl7bi5tYXBbZV0uZm9yRWFjaChmdW5jdGlvbihlKXt0W2VdPSEwfSl9KTt2YXIgZT1PYmplY3Qua2V5cyh0KTtlLnNvcnQoKSxhPWUsdS5zZXQoZSl9fSkse3N1c3BlbmQ6ZnVuY3Rpb24oKXt1LmNsZWFyKCl9LHJlc3VtZTpmdW5jdGlvbigpe2EmJnUuc2V0KGEpfX19fSl9KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsiLi9maWx0ZXIiOjIsIi4vaW5wdXQiOjYsIi4vdXRpbCI6MTF9XSw5OltmdW5jdGlvbihuLGUsdCl7KGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgZD1mdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGU7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSlyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLGk9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgdSxhPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0odT1hLm5leHQoKSkuZG9uZSkmJihuLnB1c2godS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe2k9ITAsbz1lfWZpbmFsbHl7dHJ5eyFyJiZhLnJldHVybiYmYS5yZXR1cm4oKX1maW5hbGx5e2lmKGkpdGhyb3cgb319cmV0dXJuIG59KGUsdCk7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfSx0PWZ1bmN0aW9uKGUpe3tpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHQuZGVmYXVsdD1lLHR9fShuKCIuL2lucHV0IikpLGE9bigiLi9maWx0ZXIiKTt2YXIgdj1lLmpRdWVyeSxwPWUuc3RyZnRpbWU7ZnVuY3Rpb24geShlLHQpe2Zvcih2YXIgbj1lLnRvU3RyaW5nKCk7bi5sZW5ndGg8dDspbj0iMCIrbjtyZXR1cm4gbn10LnJlZ2lzdGVyKHtjbGFzc05hbWU6ImNyb3NzdGFsay1pbnB1dC1zbGlkZXIiLGZhY3Rvcnk6ZnVuY3Rpb24oZSxsKXt2YXIgcz1uZXcgYS5GaWx0ZXJIYW5kbGUobC5ncm91cCksdD17fSxmPXYoZSkuZmluZCgiaW5wdXQiKSxuPWYuZGF0YSgiZGF0YS10eXBlIikscj1mLmRhdGEoInRpbWUtZm9ybWF0IiksaT1mLmRhdGEoInJvdW5kIiksbz12b2lkIDA7aWYoImRhdGUiPT09bilvPXAudXRjKCksdC5wcmV0dGlmeT1mdW5jdGlvbihlKXtyZXR1cm4gbyhyLG5ldyBEYXRlKGUpKX07ZWxzZSBpZigiZGF0ZXRpbWUiPT09bil7dmFyIHU9Zi5kYXRhKCJ0aW1lem9uZSIpO289dT9wLnRpbWV6b25lKHUpOnAsdC5wcmV0dGlmeT1mdW5jdGlvbihlKXtyZXR1cm4gbyhyLG5ldyBEYXRlKGUpKX19ZWxzZSJudW1iZXIiPT09biYmdm9pZCAwIT09aSYmKHQucHJldHRpZnk9ZnVuY3Rpb24oZSl7dmFyIHQ9TWF0aC5wb3coMTAsaSk7cmV0dXJuIE1hdGgucm91bmQoZSp0KS90fSk7ZnVuY3Rpb24gYygpe3ZhciBlPWYuZGF0YSgiaW9uUmFuZ2VTbGlkZXIiKS5yZXN1bHQsdD12b2lkIDAsbj1mLmRhdGEoImRhdGEtdHlwZSIpO3JldHVybiB0PSJkYXRlIj09PW4/ZnVuY3Rpb24oZSl7cmV0dXJuKHQ9bmV3IERhdGUoK2UpKWluc3RhbmNlb2YgRGF0ZT90LmdldFVUQ0Z1bGxZZWFyKCkrIi0iK3kodC5nZXRVVENNb250aCgpKzEsMikrIi0iK3kodC5nZXRVVENEYXRlKCksMik6bnVsbDt2YXIgdH06ImRhdGV0aW1lIj09PW4/ZnVuY3Rpb24oZSl7cmV0dXJuK2UvMWUzfTpmdW5jdGlvbihlKXtyZXR1cm4rZX0sImRvdWJsZSI9PT1mLmRhdGEoImlvblJhbmdlU2xpZGVyIikub3B0aW9ucy50eXBlP1t0KGUuZnJvbSksdChlLnRvKV06dChlLmZyb20pfWYuaW9uUmFuZ2VTbGlkZXIodCk7dmFyIGg9bnVsbDtyZXR1cm4gZi5vbigiY2hhbmdlLmNyb3NzdGFsa1NsaWRlcklucHV0IixmdW5jdGlvbihlKXtpZighZi5kYXRhKCJ1cGRhdGluZyIpJiYhZi5kYXRhKCJhbmltYXRpbmciKSl7Zm9yKHZhciB0PWMoKSxuPWQodCwyKSxyPW5bMF0saT1uWzFdLG89W10sdT0wO3U8bC52YWx1ZXMubGVuZ3RoO3UrKyl7dmFyIGE9bC52YWx1ZXNbdV07cjw9YSYmYTw9aSYmby5wdXNoKGwua2V5c1t1XSl9by5zb3J0KCkscy5zZXQobyksaD1vfX0pLHtzdXNwZW5kOmZ1bmN0aW9uKCl7cy5jbGVhcigpfSxyZXN1bWU6ZnVuY3Rpb24oKXtoJiZzLnNldChoKX19fX0pfSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7Ii4vZmlsdGVyIjoyLCIuL2lucHV0Ijo2fV0sMTA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4uU2VsZWN0aW9uSGFuZGxlPXZvaWQgMDt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0JiZyKGUucHJvdG90eXBlLHQpLG4mJnIoZSxuKSxlfX0oKSxpPWEoZSgiLi9ldmVudHMiKSksbz1hKGUoIi4vZ3JvdXAiKSksdT1mdW5jdGlvbihlKXt7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJih0W25dPWVbbl0pO3JldHVybiB0LmRlZmF1bHQ9ZSx0fX0oZSgiLi91dGlsIikpO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fW4uU2VsZWN0aW9uSGFuZGxlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3ZhciBlPTA8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLHQ9MTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsbiksdGhpcy5fZXZlbnRSZWxheT1uZXcgaS5kZWZhdWx0LHRoaXMuX2VtaXR0ZXI9bmV3IHUuU3Vic2NyaXB0aW9uVHJhY2tlcih0aGlzLl9ldmVudFJlbGF5KSx0aGlzLl9ncm91cD1udWxsLHRoaXMuX3Zhcj1udWxsLHRoaXMuX3Zhck9uQ2hhbmdlU3ViPW51bGwsdGhpcy5fZXh0cmFJbmZvPXUuZXh0ZW5kKHtzZW5kZXI6dGhpc30sdCksdGhpcy5zZXRHcm91cChlKX1yZXR1cm4gcihuLFt7a2V5OiJzZXRHcm91cCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZih0aGlzLl9ncm91cCE9PWUmJih0aGlzLl9ncm91cHx8ZSkmJih0aGlzLl92YXImJih0aGlzLl92YXIub2ZmKCJjaGFuZ2UiLHRoaXMuX3Zhck9uQ2hhbmdlU3ViKSx0aGlzLl92YXI9bnVsbCx0aGlzLl92YXJPbkNoYW5nZVN1Yj1udWxsKSx0aGlzLl9ncm91cD1lKSl7dGhpcy5fdmFyPSgwLG8uZGVmYXVsdCkoZSkudmFyKCJzZWxlY3Rpb24iKTt2YXIgbj10aGlzLl92YXIub24oImNoYW5nZSIsZnVuY3Rpb24oZSl7dC5fZXZlbnRSZWxheS50cmlnZ2VyKCJjaGFuZ2UiLGUsdCl9KTt0aGlzLl92YXJPbkNoYW5nZVN1Yj1ufX19LHtrZXk6Il9tZXJnZUV4dHJhSW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHUuZXh0ZW5kKHt9LHRoaXMuX2V4dHJhSW5mbz90aGlzLl9leHRyYUluZm86bnVsbCxlfHxudWxsKX19LHtrZXk6InNldCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLl92YXImJnRoaXMuX3Zhci5zZXQoZSx0aGlzLl9tZXJnZUV4dHJhSW5mbyh0KSl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5fdmFyJiZ0aGlzLnNldCh2b2lkIDAsdGhpcy5fbWVyZ2VFeHRyYUluZm8oZSkpfX0se2tleToib24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2VtaXR0ZXIub24oZSx0KX19LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fZW1pdHRlci5vZmYoZSx0KX19LHtrZXk6ImNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2VtaXR0ZXIucmVtb3ZlQWxsTGlzdGVuZXJzKCksdGhpcy5zZXRHcm91cChudWxsKX19LHtrZXk6InZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmFyP3RoaXMuX3Zhci5nZXQoKTpudWxsfX1dKSxufSgpfSx7Ii4vZXZlbnRzIjoxLCIuL2dyb3VwIjo0LCIuL3V0aWwiOjExfV0sMTE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbihlLHQsbil7cmV0dXJuIHQmJnIoZS5wcm90b3R5cGUsdCksbiYmcihlLG4pLGV9fSgpLGw9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9O2Z1bmN0aW9uIHUoZSl7Zm9yKHZhciB0PTE7dDxlLmxlbmd0aDt0KyspaWYoZVt0XTw9ZVt0LTFdKXRocm93IG5ldyBFcnJvcigiTGlzdCBpcyBub3Qgc29ydGVkIG9yIGNvbnRhaW5zIGR1cGxpY2F0ZSIpfW4uZXh0ZW5kPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49QXJyYXkoMTx0P3QtMTowKSxyPTE7cjx0O3IrKyluW3ItMV09YXJndW1lbnRzW3JdO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgbz1uW2ldO2lmKG51bGwhPW8pZm9yKHZhciB1IGluIG8pby5oYXNPd25Qcm9wZXJ0eSh1KSYmKGVbdV09b1t1XSl9cmV0dXJuIGV9LG4uY2hlY2tTb3J0ZWQ9dSxuLmRpZmZTb3J0ZWRMaXN0cz1mdW5jdGlvbihlLHQpe3ZhciBuPTAscj0wO2V8fChlPVtdKTt0fHwodD1bXSk7dmFyIGk9W10sbz1bXTt1KGUpLHUodCk7Zm9yKDtuPGUubGVuZ3RoJiZyPHQubGVuZ3RoOyllW25dPT09dFtyXT8obisrLHIrKyk6ZVtuXTx0W3JdP2kucHVzaChlW24rK10pOm8ucHVzaCh0W3IrK10pO248ZS5sZW5ndGgmJihpPWkuY29uY2F0KGUuc2xpY2UobikpKTtyPHQubGVuZ3RoJiYobz1vLmNvbmNhdCh0LnNsaWNlKHIpKSk7cmV0dXJue3JlbW92ZWQ6aSxhZGRlZDpvfX0sbi5kYXRhZnJhbWVUb0QzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49dm9pZCAwO2Zvcih2YXIgciBpbiBlKXtpZihlLmhhc093blByb3BlcnR5KHIpJiZ0LnB1c2gociksIm9iamVjdCIhPT1sKGVbcl0pfHx2b2lkIDA9PT1lW3JdLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkFsbCBmaWVsZHMgbXVzdCBiZSBhcnJheXMiKTtpZih2b2lkIDAhPT1uJiZuIT09ZVtyXS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIG9mIHRoZSBzYW1lIGxlbmd0aCIpO249ZVtyXS5sZW5ndGh9Zm9yKHZhciBpPVtdLG89dm9pZCAwLHU9MDt1PG47dSsrKXtvPXt9O2Zvcih2YXIgYT0wO2E8dC5sZW5ndGg7YSsrKW9bdFthXV09ZVt0W2FdXVt1XTtpLnB1c2gobyl9cmV0dXJuIGl9O24uU3Vic2NyaXB0aW9uVHJhY2tlcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsdCksdGhpcy5fZW1pdHRlcj1lLHRoaXMuX3N1YnM9e319cmV0dXJuIHIodCxbe2tleToib24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fZW1pdHRlci5vbihlLHQpO3JldHVybiB0aGlzLl9zdWJzW25dPWUsbn19LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9lbWl0dGVyLm9mZihlLHQpO3JldHVybiBuJiZkZWxldGUgdGhpcy5fc3Vic1tuXSxufX0se2tleToicmVtb3ZlQWxsTGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj10aGlzLl9zdWJzO3RoaXMuX3N1YnM9e30sT2JqZWN0LmtleXMobikuZm9yRWFjaChmdW5jdGlvbihlKXt0Ll9lbWl0dGVyLm9mZihuW2VdLGUpfSl9fV0pLHR9KCl9LHt9XSwxMjpbZnVuY3Rpb24oYSxlLGwpeyhmdW5jdGlvbihvKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlLHU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdCYmcihlLnByb3RvdHlwZSx0KSxuJiZyKGUsbiksZX19KCksbj1hKCIuL2V2ZW50cyIpLGk9KGU9bikmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9O3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLHQsbil7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsciksdGhpcy5fZ3JvdXA9ZSx0aGlzLl9uYW1lPXQsdGhpcy5fdmFsdWU9bix0aGlzLl9ldmVudHM9bmV3IGkuZGVmYXVsdH1yZXR1cm4gdChyLFt7a2V5OiJnZXQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfX0se2tleToic2V0Iix2YWx1ZTpmdW5jdGlvbihlLHQpe2lmKHRoaXMuX3ZhbHVlIT09ZSl7dmFyIG49dGhpcy5fdmFsdWU7dGhpcy5fdmFsdWU9ZTt2YXIgcj17fTtpZih0JiYib2JqZWN0Ij09PSh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOnUodCkpKWZvcih2YXIgaSBpbiB0KXQuaGFzT3duUHJvcGVydHkoaSkmJihyW2ldPXRbaV0pO3Iub2xkVmFsdWU9bixyLnZhbHVlPWUsdGhpcy5fZXZlbnRzLnRyaWdnZXIoImNoYW5nZSIscix0aGlzKSxvLlNoaW55JiZvLlNoaW55Lm9uSW5wdXRDaGFuZ2UmJm8uU2hpbnkub25JbnB1dENoYW5nZSgiLmNsaWVudFZhbHVlLSIrKG51bGwhPT10aGlzLl9ncm91cC5uYW1lP3RoaXMuX2dyb3VwLm5hbWUrIi0iOiIiKSt0aGlzLl9uYW1lLHZvaWQgMD09PWU/bnVsbDplKX19fSx7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fZXZlbnRzLm9uKGUsdCl9fSx7a2V5OiJvZmYiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2V2ZW50cy5vZmYoZSx0KX19XSkscn0oKTtsLmRlZmF1bHQ9cn0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0seyIuL2V2ZW50cyI6MX1dfSx7fSxbNV0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1jcm9zc3RhbGsubWluLmpzLm1hcA=="></script>
<style type="text/css">
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
</style>
<style type="text/css">
code {
white-space: pre;
}
.sourceCode {
overflow: visible;
}
</style>
<style type="text/css" data-origin="pandoc">
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ background-color: #f8f8f8; }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ef2929; } /* Alert */
code span.an { color: #8f5902; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #c4a000; } /* Attribute */
code span.bn { color: #0000cf; } /* BaseN */
code span.cf { color: #204a87; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4e9a06; } /* Char */
code span.cn { color: #000000; } /* Constant */
code span.co { color: #8f5902; font-style: italic; } /* Comment */
code span.cv { color: #8f5902; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #8f5902; font-weight: bold; font-style: italic; } /* Documentation */
code span.dt { color: #204a87; } /* DataType */
code span.dv { color: #0000cf; } /* DecVal */
code span.er { color: #a40000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #0000cf; } /* Float */
code span.fu { color: #000000; } /* Function */
code span.im { } /* Import */
code span.in { color: #8f5902; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #204a87; font-weight: bold; } /* Keyword */
code span.op { color: #ce5c00; font-weight: bold; } /* Operator */
code span.ot { color: #8f5902; } /* Other */
code span.pp { color: #8f5902; font-style: italic; } /* Preprocessor */
code span.sc { color: #000000; } /* SpecialChar */
code span.ss { color: #4e9a06; } /* SpecialString */
code span.st { color: #4e9a06; } /* String */
code span.va { color: #000000; } /* Variable */
code span.vs { color: #4e9a06; } /* VerbatimString */
code span.wa { color: #8f5902; font-weight: bold; font-style: italic; } /* Warning */
</style>
<script>
// apply pandoc div.sourceCode style to pre.sourceCode instead
(function() {
var sheets = document.styleSheets;
for (var i = 0; i < sheets.length; i++) {
if (sheets[i].ownerNode.dataset["origin"] !== "pandoc") continue;
try { var rules = sheets[i].cssRules; } catch (e) { continue; }
for (var j = 0; j < rules.length; j++) {
var rule = rules[j];
// check if there is a div.sourceCode rule
if (rule.type !== rule.STYLE_RULE || rule.selectorText !== "div.sourceCode") continue;
var style = rule.style.cssText;
// check if color or background-color is set
if (rule.style.color === '' && rule.style.backgroundColor === '') continue;
// replace div.sourceCode by a pre.sourceCode rule
sheets[i].deleteRule(j);
sheets[i].insertRule('pre.sourceCode{' + style + '}', j);
}
}
})();
</script>
<link rel="stylesheet" href="data:text/css,%0A%23TOC%3A%3Abefore%20%7B%0Acontent%3A%20%22%22%3B%0Adisplay%3A%20block%3B%0Aheight%3A%20200px%3B%0Amargin%3A%2020px%2020px%2040px%2020px%3B%0Abackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAaQAAAGkCAYAAAB%2BTFE1AAABJ2lDQ1BrQ0dDb2xvclNwYWNlQWRvYmVSR0IxOTk4AAAokWNgYFJILCjIYRJgYMjNKykKcndSiIiMUmB%2FwsDDIMIgziDEwJyYXFzgGBDgwwAEMBoVfLvGwAiiL%2BuCzMKUxwu4UlKLk4H0HyDOTi4oKmFgYMwAspXLSwpA7B4gWyQpG8xeAGIXAR0IZG8BsdMh7BNgNRD2HbCakCBnIPsDkM2XBGYzgeziS4ewBUBsqL0gIOiYkp%2BUqgDyvYahpaWFJol%2BIAhKUitKQLRzfkFlUWZ6RomCIzCkUhU885L1dBSMDIwMGBhA4Q5R%2FTkQHJ6MYmcQYgiAEJsjwcDgv5SBgeUPQsykl4FhgQ4DA%2F9UhJiaIQODgD4Dw745yaVFZVBjGJmMGRgI8QH7%2FkpC0oNXTwAAAAZiS0dEAP8A%2FwD%2FoL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB%2BQMFBIgMYByjXsAACAASURBVHja7d15eFRVmvjx92bf94UQEiAQEiBAIKCAIDuOgtrdDiqobauP2vP0tE870z12z%2FNrHbt7HJ2e1u7pcQEbp7UBWQRFcGOXfUkgbElIIDtJyL4Hsp3fHwjDUsutSlWlqvL9PA%2BPpurcqnPfW%2Fe899x77rkiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADqMRAjiDleu2qoLicrdbr6eW3CcpSYnsZ4AOHoQAAEBCAgCAhAQAICEBAEBCAgCQkAAAICEBAEhIAACQkAAAJCQAAEhIAAASEgAAJCQAAAkJAAASEgCAhAQAAAkJAEBCAgDARrwIAdyRpmmiaZY%2FOby3t5fgASQkwHZ%2B9Pf3SkpSosUZaeW6raqguJwAAv2AU3YAABISAAAkJAAACQkAABISAICEBAAACQkAQEICAICEBAAgIQEAQEICAJCQAAAgIQEASEgAAJCQAAAkJAAASEgAABISAAAkJAAACQkAABISAICEBAAACQkAQEICAICEBAAgIQEAQEICAJCQAAAgIQEASEgAAJCQAAAkJAAASEgAAJCQAAAkJAAASEgAABISAAAkJAAACQkAABISAICEBAAACQkAQEICAICEBAAgIQEAQEICAJCQAAAgIQEASEgAAJCQAAAkJAAASEgAABISAAAkJACAu%2FIiBMANR2gemnh42O44TdM0ggqQkADLPbVkkU0zyGu%2FIKaA7gNCQgAAICEBAEBCAgCQkAAAICEBAEhIAACQkAAAJCQAAEhIAAASEgAAJCQAAAkJAAASEiDS26sIAuBimBsfTmHluq2qoLicQDipp5bcJylJibQXoIcEACAhAQBAQgIAkJAAACAhAQBISAAAkJAAACQkAABISAAAkJAAACQkAABISAAAEhIAACQkAAAJCQAAEhIAgIQEAAAJCQDgErwIAZziyMhDEw8Pjo9spbe3lyCAhARY46klizSiYDsr121VBcXlBAKudWBKCAAAJCQAAEhIAAASEgAAJCQAAAkJAAASEgCAhAQAAAkJAEBCAgCAhAQAICEBAEBCAqCUIghwOcz2DafA7NS2db7kIkEAPSQAAEhIAAASEgAAJCQAAAkJAAASEgCAhAQAAAkJAEBCAgCAhAQAICEBAEBCAgCQkAAAICEBAEhIAACQkAAAJCQAAEhIAIABi0eYwzmOjDw08fDg%2BMhZaZpGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYs7bXXX1PmS4n4%2BPhIVGSUjEsbJxmTMrSBGrC3%2Fvst1dHeYbZcXFycPPXkUy4Rp8LCQrV2%2FVqTZfwD%2FOXFF150yPrk5Oao4yeOS3V1tVy%2BclnE%2FC9UfvzcjxdERETssFUd9O4Xvj6%2BEhMTI%2BkT0mVc2jiHxOdc%2FjmVdTxLqqqq5MqVK6KU%2Bao%2B%2FdTTMih2kE3q19DYkPTue%2B9esFuj5KGJt5e3%2BAf4S1homMTExMiQ%2BCEyOnW0U%2BxPqz9erUpKSmz2ebNnzZbp06Y7XVtRU1uz%2Fv2%2FvL9ET9mMSRlyz8J7%2BrwOXpeqL%2BkuXFZWJieyT8j7K99Xzz7z7IBLSnl5eerdFe%2FqKnup%2BpLU1ta%2BHhUV9UtnX6%2FOzk7R8ztY%2FfFq9djSx%2By63Tdu2qiWv7%2Fc4uV6enueExGbJSRL9ovSslLJzMqUj9d9rJY%2BstSu8dnyxRb1znvvWB6f7h6b1aGnp%2Bc5S%2BJjKy%2F%2B%2FEWVMipFpkye0q8HxQ0NDWLL9W9ra3PKdiEzK3OJ3vU8cPCATb7Tw5qFzpw9I4ePHFYywBzNPGpR%2BWNZx15yq%2FU%2FdlROnzltt%2B1ecL5A7d2%2F12Xjc%2FjIYcnJzbFbfErLStWOnTtkoOrt7ZXcvFz5aNVH8spvXlHHMo8pgT0Tku6yTc1NkpeX1%2Bft4WHtgidPnxxwG%2Bj0mdN226Cuwtypvb44dfqUy8fn1KlTxMcBGhsbZdWaVfLu8ndJSnZQWFSoamtr7XrAbtOEVFtTO6A20JFjR1RnZ6dlMaqtlcKiQrfaYVpbW%2BWDv35gl3Wqqalx%2BfjU1NpvHdwhPraWdy5PXv3dq6qmpmY90bCdY5nH7H7AbtOEdOXKFTbQAO0lnTx1UjKzMm2elCxN%2BM7oSqf99gt3iI891NfXyzvL31lCJGwnOzvbqt%2Fn0WNH%2B9QueBB68xoaG5LOnz9v1bInsk%2B4ZUw%2B2fSJNDQ2JNnyM%2FWMFnN6dlwFt4iPHZPSeyveI0C2SEYns1V7R7t1B%2B5Zx%2Fr03SQkfb2cC9Y2Bu3t7XLy1Em321E6Ojpk7bq1F%2Fh1wFnk5uVK9slsklIfWXs2SESkoKCgT9%2FtNX3q9JtON%2BTk5EjH5Q62ys0JqV%2BXd1Z55%2FJk%2F4H9asZdMxw6BNfT01PGpY2TAP%2BA669FR0U%2FbMvvuHG%2F6LjcIWfOnJGu7i6X2C4eHh4yLm2cBAYEXn8tIDBghK0%2BPyoy6pfr1q%2B7aQRpW3ubnDxlfqBTcHCwjBs7zmSZru4uaWlpkZKSEovbom%2B2fWP3%2BI4dM1aio6Jveq2mrkZXYzxl8hTx9vK%2B6bX4%2BHinS%2Bx96cXv3LVTzZs7z6o2weuRhx%2B5acH8gnz19rtvk4W%2BU1pWqv7w1h%2F69Blnc866bXw2b9ksNTU166OjbZsQTFny0BKZNnWaXZPgrftFZlam%2Btvqv7nENnnw%2Fgdl9qzZDo1P%2BcVypSchRUVG3basKcdPHFebt2yWxsZGXeUrKiuktLRUJSYm2m3958yec9tnZx3PUnoS0uPLHnfq%2Bzf37turNn66sd8OwG87ZTcqedSAnYXB2u5rZESkyfd7enpk%2F8H9bnkqobOzU1Z%2FvNqhF5TjBzv%2BiNLZjmLdpa7mTJo4SXv15Ve1QbGDdC%2BTk5dDw2XHZGKuvauorJCLFy9a1d5xDcn8EZrZMgvmLzC%2FoTMz3TZGRcVFsmPnDscl3H44ZNKE47T%2B9KMf%2Fkg0Td82KCsrI2BWuHTpUn1JqekpkSIjI2XixIlmP8vae5JISCacOXtGtba2miwTEx2j6%2FRRUXGR1NS6770SX379pVRUVHBBGXYRFxenjUsbp6uspTd04nrvKNxcmRFJI2REkvnLkXoO5ElIdui%2BjhhxdeMMjhusp5fktvdK9PT0yKqPV%2FGjgd2MGT1GV7mODgZl2a29SxohY0aP0Tw8TKeO5uZmyc3LtfgAlYRkqod05ozZMskjk2%2F6b183uCu7ePGifPHlF%2FSSYBdRUVH6CnJ21WIF5wtUfUO9nvbueRGRhCEJZstaM3ychGTEocOHlJ5hvtdmHR6VPMr8qYQ695tK6Fbbd26X4pJikhJszsfbR1e5G28HgD66Bm9FRkpkZOQKEZHkZPMH4NZMJURC6sMGunE0U1pamubp6enWvSRfX1%2BzZZRSsnrNan5AsLnWtlZd5cLCwgiWhfQM2U9NSTX4%2F8ZYM5UQCclwT%2Bb1C4XmJyEYO3rsTX%2Frudh34oTrTiU0c8ZMXeWqa6pl46aN9JJgU6WlpbrKJSYmEiwLZB3PUpcvXzZb7sZreMkjkzV%2FP3%2FzB%2FYWTiVEQjLci9H1HKNbR%2F2MHzfe7DLtHa47ldDguMG6rpWJiOzdv1fyC%2FJJSrCZ49n6Rm6ljEohWBbQczbI19dX0sam3XR1bswY84NMLJ1KiIRk6IghK8tsmcjISLn1bvCZM2Zqeu6VcNXTdi2tLfLg%2FQ%2Fqvh9k9cecuoNtHDx0UFVXV5vfLyMiZUTSCIY1WOBc%2FjmzZdLGpt322qT0SWaXU0rJjl3671EkId2iqLhIVdeY%2F%2BFPmmh4Y%2BjpQbjqVEJtrW2SkJCg3THlDl3lGxsbZfXHq%2BkloU9y83LVps826So7b%2B48AmaB3d%2FuVr29vebbOwPJJy0tTddpO0sOwElIVnRfRUQmpk%2B06PUb9fT0yP4DrjeV0LUp6Zc9ukzXD1Hk6mPPT50%2BRVKCxSorK9X6T9ar5e8vl64u8yNeB8cNlrum30XvyAJ6ZpDx9%2FeXtLQ0g3EdP368nu0o5RfLdbUBXmySm%2Bl5flFsbKzED443uIGmT5uuvfjzF80edfT1uSH94cYLn4sXL5YNn2zQtdy6Dev4YUFERC5WXJTf%2F%2BH3Jhun7u5uaW5pltd%2F%2F7ruz%2FXx8ZEnn3hSXvrFSwTZgoSvJ8amro1PSp8kR44esdmBPj2kG5w8dVK1t5t%2FMJW5c6d6hkQWFxe73FRCNx6lzpg%2BQ9MzqlDk6mPPV%2F7vSnpJkM7OTim%2FWG7yX9WlKtGzH17j7eUtzz7zrAwaNIjekQX0zjdn7PKEiEhqaqoWGBho9jOOH9c3IIWEdGP3Vee5zonpExus3YC3dJddaiqhW3t9Sx9dusHHR9%2FNiqdOn5JjmcdISrCpsLAw%2Bek%2F%2FpSnFFgh67j5wVtBQUGSmpJqMrbpE9LNfk5zi76phEhIN9Az2CA%2BPl5iY2MjTJWZMnmK5uVl%2Fmyoq08lFB0V%2FfD3Hvie7vIbN220%2BWPPMXClpqTKqy%2B%2Fqg1NHEoyslDeuTzV1NRkttyE8RP0HKDr%2Bk49p%2B1ISN%2FZf2C%2F6unpMd99TdfX%2B9EzEaQ7TCV01%2FS7tNGpo3WV7bjMY89h00ZV3vzjmyrreBY9bwvpfRyOnrM9ySOTtZCQELPl9EwlREKyIHuLiKSnp79hqw3pDr0kEZEfP%2FdjLSAgQHcjsm%2F%2FPhoQ2ERJaYl8tOojefu9t1VDA71vvU6eNj9VUGhIqIwcMVJX73PiBPO9pM7OTjly7IgiIZlRXVOdWVxSbLbc0MShEhUZ9UtdGyh9oqbn%2BoorTyV0o4f%2FXv8TzD%2Ff%2BrnU1Ljvs6HgePn5%2BfLHP%2F%2FxQtWlKg52zB98q87OTj0H37o%2FU89D%2B%2FT0zEhIV4OUYctezzWG7m6%2BlStPJXRrAtYbn%2F547DncX2Njo7z9ztsEwgxbjK671fBhw7WI8Aiz5QrOm55KiPuQRN9pM03TZPas2RZdPJ2YPlHXkxOteW6IM3ryiSe1l%2F%2FtZdXUbP5iaVFxkezavUvNnTP3ekzNPfQLri8hIUF%2B%2FuLPze5HtbW1r7e0trxUVlYm2SezRc9kxyJXR3O9%2Fe7b6if%2F8BMGOhhLCjrml4uIiJBhQ4dZ3N7t3L3TZJlrUwnNnztfo4dkwIULF1RdfZ3ZcknDLT89PX7ceM3Pz89suZzcHLeJ57JHl%2Bku%2B%2BVXX950L5aekYlwbV6e%2BrZxVFTUL4cPG67dPfNu7YV%2FfEF7%2FtnnRc%2F9LiIi%2BQX5kn0ym1N3BuzYtUMpZT40ekfO3bSMDU7bDfgWQG%2FvpKS0RH71%2F35l8Y9cz7Tu16YSmnHXDJc%2FqktNTdU2bNyg9h%2FYb7ZsV3eXfLLxk%2Bun7vTe04SBZ8zoMVp1dXXmm396M0PPI8q%2F%2BuYrgmZhMrjRvv37LG7v3nnvHV3lKquuTiU0JH6IRg%2FpFtkns3WV6%2B7ulvb2dov%2F6Zm4UMQ1pxIyZslDS7To6GhdZfPO5V2%2Fhubv70%2BLAaNiYmImL3lI36XHqqoqKS0rpZd0g7LyMlVZVamrbGdnp1XtXV87AgM6IZ3IPqE6Lnc4RV2Ki4vdauTZY0sf0%2F2Yis2fbxYRkaDAIJdfbyX2awP1nGpxdxmTMrSYmBhdZfU8BXUgcaZr1camEhrQCUnvaBOHdaezMt1m5NnwYcO1BfMW6CpbV18nO3buUMHBwU67Pl5eXrruP9MzK7W19H62u1%2BLu%2FXBmMbofcLsQKFngJWjNLc0S05ujiIh3SAvL8%2B5jmDc6LSdiMii%2BxZpQ%2BKH6Cq7fed28fT0dNp1iYrSd%2F9ZS3OLXXdiPXx9fN16v01M0PeI8orKCrLQd87mnFUtLS1OVSdDo5sHbELas3eP0nt9x1Hq6uqksLDQrc7LPL7scV1H7JcvX5aDhw469broGZbe3tEu9poxoK6uTle5wYMHu%2FWQ56Agfad2Lbmm4e6ccUYYQ1MJDdiEpHe0Cb2kvomLi9MW3btIV1m9F1z7S3hYuL6e97k8m8%2FXd%2Br0KV0HUL6%2Bvm6%2F7%2BqZc1JExNkOOPu18T992unqZGgqoQGZkCqrKlVZeZlT1i07O9vt4j13zlzdz05y8uSqq5w9LqbrHQ06KHaQ2%2B%2B%2Fzc36Tl3qHVTj7g4dPqS6urucsm63dgz67ernufxzZgckpaSkaI4IgimPPvyohIaG9vk7CwoKZNeeXeZPM3w3ldCE8RPcam96bOljz7%2FxX28sv3LlisuuQ9LwJDlz9ozZcrl5uVJSWqJs9ViE6urqzNfeeE1XWXdI%2FOYUFRfpKsdtBN%2B1dzpP1%2Fn6%2BsqTTzxpk0S%2B78A%2Byckxf8N%2FwfkCaWhsSAoPCy%2Fs14T03or3%2Bq1LnXlc3waKiYmRaVOn2Swx6Hm0uYj7TCV0o8jIyBWHjxxe%2FvG6j112HVJTUuXzrZ%2FrKrtx00abfe%2FGTzdm6B3ynZKS4vYNrN4eaEx0jAx09fX181%2F93au6yk4YP0HGjhlrk%2FYuJzdH6UlISinJOp51QUQ0kQF4yi6%2FIF81NjbqKpsxKcOm352amqp3Y7pl7KfeOVXTM%2BGss4qPj9diY2J1lS0pLZHVH6%2Fu8wCVTzd%2FqvLO6RsNqufpnq5u245tqrW1VVfZIUOGyECXmZW5XW%2FZyZMm2%2Bx7x4weo%2BkdfHLjGasBl5As6X1kTMrYYMvv1rvBr00l5I7xf%2FaZZzW9c5I5o2nTpukue%2FTYUVnxlxVWb8ePVn2k9ny7R3%2FCv2OqW%2B%2B7Obk56quv9U8JlJqSKgOd3vYuJDjE5pdI9D7MtLKqUsrKy1SfElJfh1T21%2Bm6E9n6nj80bOgwiY6KftiW350xKUPTO1%2FbgYMHHBYTvfe32MojSx5x2R18zqw5uh9GKCJyNues%2FPrffq1279mtOzHtP7hfvfrbV1XW8Szd3%2BPl5SX3L77f6XtH1v7Wvt72tXp%2F5fu6243AwEAZlzZuQI9qOJd%2FTlXXVOtLHpMm2fz7MzL0n2G61t5ZfQ2pq7tL%2FvLBX9TE9IkW3dDY1dUlR44eMftcDFupq6t7rqy8bHl7e7scOHhAyi%2BW600edqnPuLRxoqehqaiskPdXvq%2FSJ6SLt7e3pE9It9nOdeNMyK1trfLFV184dEeZMH6CtmrNKuWq18ru%2B7v75JNNn%2BhvhJub5bPPP5Ofv%2FRzlTQ8SUaOGClhYWESGBgomqZJW1ubNDU1yYWiC3LhwgXZ8InlHfN5c%2BbJH%2F7zD04fu7q6Olmzdo1KTUk1eV9Xd3e3tLa2SmlZqeTm5YolPSMRkbum32W3dTh%2F4fxtpw0Liwp1LXvk6BF169D8uEFxDbGxsRG2qFtZWZmqq6%2BThsYGWbV6lf7kMdH27d2wocO03%2F77b1VtXa3ZsocOH5JNn25SfRrUcPrMaV3PSe9PBecLLL6Q7uHhIXfPvNsuR1eTMyaL3iPfM2fPXB%2FVVVlZqeLi4vpcp5KSEvXmn97s9%2B3y%2BLLHtVd%2B84ru63nOZOaMmdqbf3xTlZSWWHYQ19Ul5%2FLPybn8czatT1RUlNx3730u0xs4cvSIHDl6xG6fHxQUJIvuXWS3eHz9zddWH1CvWbvmttcW37c43FZ1O3DwgBw6csiiZWKiYyQxMdEu8cqYlCHfbP9GV9lv933LbN%2BGpIyy30glSy72ubvHlj7msnV%2F8oknn3eGYcVeXl7y1JNP8WO6gSXP5IL9zgZ999kNFnUG2ByO3UAi1j38yh2NSh6lzZo5yyXrHhkZueKZp54Rby%2FvfquDpmnyxGNPiKHnygxUi%2B5bZLOhywOovdtgr8%2BOjY2NSBiSQEKylo%2BPj0yZPEWz8w%2FAJWNjj1mkf%2FD9H%2BgeSu1skkcma08%2F9XS%2FPFjQw8NDHlv6mE2vLTrbb8PiZHTvIlk4fyHJyAJDE4dKdLRtB2%2Fd1t5ZMLjBYEIK8A%2Fo90BZMpLJ1Xovw4cN1wYNcr0pXmwxY4Uhjy97XNfEpc5ozOgx2gs%2FeUHCwsIcum%2F8%2BLkf2%2F3AyRKDYgf1W10CAwPl6R89LQsXkIwsNfVO%2B98qMGfWHE3vwDeDrUBycnK%2FB2pU8qh%2BOeqcO2euQ75r4fyFrtgjsMvnJiYmagsXLHTZnTohIUF79eVXtSmTpzgiAcp%2F%2FO4%2FtJRRKU7X%2BA5NHOrw%2FXX6tOny2m9f09xtqi1HCAsLk%2BnTpjskbndN0zfq0WBCumfhPf16btzb21vuWXCPw7%2F3%2FkX3O%2BxIL2NShuZKp%2B5GJI2QtLFpdovNvffcq%2Bl9zo2zenzZ49rPXviZjBwx0uafHR8fL88%2F%2B7w8%2F%2BzzTtvwLl602CETmoaHh8v8ufPl1%2F%2F66wWPLHmERGQFT09Phw4qeugHD2mD4wabLWfwxG%2F84HitrLxMffn1l1JQUGDXp2DeyMfHR0aOHCmL7l3ksGe6eHp6SmJiosyZNUccfZT1w8d%2FqO3bv08dOnJIKisrnXK6%2FNCQUMnIyJAH73%2FQ7rF5bNlj8l9%2F%2BC9x1pmJ9Rg%2BbLgmIlJ%2BsVwdPHRQTp8%2BbfXNoH5%2BfjJ2zFiZNnWaJI9M1v7ln%2F%2FFqdd9VPIo7cKFC%2BqrbV9JYWGh7sdEmItBeHi4DIodJEMTh8rIESMlISGBJGQlX19fGZU8ShYuWCiJCYkOjeNLv3hJ27J1izqRfULq6g0%2F20t3hez10LEbjnoK7fXZxupuz%2B905rrq2paayLUZeJ0lBs683UwpKS1RxcXFUlpWKrV1tdJQ3yDtHe3XD%2FS8vLyuNrxh4RIZGSlDhgyRYUOHSfLIZJdveK1qN%2Frxt9cf7aGtf8%2BG6uas%2B4y98woAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALhGIwSAeyi5WKUuVtVIe8cVCQ0OlCkTRrN%2Fg4QEwLG%2B3H1IHT6Rc9NrPt5esnjedEkfk8x%2BDpfgRQjsI%2Fd8iTpfXG7%2BiEDTxM%2FXR%2Fz9fMXfz1eiI8MkIS6GBsSJFJdVqoLicmloapH6phZpaGqRjstXRNM0CQ0OlMjwUIkKD5UhcdEyYfTIftl2tyYjEZHOrm45YuB1gB7SALN9%2FzG17%2Bgpq5b19vKSIXHRMi41SSaPS2Ub9ZOKS7Vqx4Es0XNg8X%2FbzlNSkhJlXOoIGT1yqEO2XWFphfrrJ18Zff83%2F%2FQMvyHQQ4J1urq7paisUorKKuU%2F31ujpmekyYwp4526UTl6Mlfd%2BPfgmCgZEhftsg3hroNZ6r3Vm63Ydj1yJr9IzuQXyeZt%2B9SDC2faPQZBgf5ZIpLBngNX50EInFtre4ds23dMPlj%2FhXLWOh4%2BcVZt3XlQbvx3rrDUZWN%2B5lyh2nM4u8%2BfkzIi0SH1jYkMnxwVEWrkvTB2IpCQYFvF5VXyn%2B%2BtUXUNTc85W92ycwrcKtafbdvX588ICwmS1BFDHdZDXDRnmgyNj73ptaiIUPn%2BPXez88BlcMrOxXpLazbvWC4iK5ylTpdq6uvf%2FtunbhPjwyfOqi93HzZbztPTQ3p6eo2%2BP3lcikPrPWJovCYiUtfQ9FzH5SvLh3w3MOYFdhuQkGDK9ElpMmbUMBER6ezskpr6Jqmpb5CauiYprbgkShk%2FO1dT3yhrt%2BxUj94%2Fzymuz5zIKQh3p22TX2R8AENIUKDcO%2FtOGTtq%2BPXYX6yqUeVVNZJ7vkSKyyult1eJp6eH3H1ner9sn8jw0BXOdMACkJCcXFhokCQOjjXYYJVVXFKbvtkrdQ3NRpfPKSiW8soaZcmggeNn8lVVTZ00tbRJc0ubNLe2SWv7ZfHw0CQ8JFgiw0MkKjxUhiXESUpSoq7PLausVqs%2F227wvcKyCtm29%2BhtmdXLy0vmTp%2BkObquepWUVxp9b%2BkD8yR%2B0M0xv%2FXv%2FcdOKaWUvGLh914ouahq6hultr5Jrv63Ubq6eyQwwE%2BCAwMkJChAYqIiJG3U8AURYSE7bl3eUKxFRAID%2FOWuyeN0x%2Bh8cbm6VNsg1XUNcqm2Qeobm8XXx1uiI8IkOjJMoiLCZGh8bFZMZPhkPZ9nqF4pSYkydMig63U6m1%2Bkcs%2BXSHVdg7S2dUhXd7eEhQRLVESoRIaFyJjkYTI4Nsqq7dzXuDoqTriK4aB2YmrY931zpsrUiWNNxv7Tb%2FaqE2eNX5tJHjZEnvjBPZq5nSY757zkni%2BWru4e3XUfMiha5t2Vcf00kCGf79ivsk6dE0tHWvj5%2Bsi%2F%2FuQJzZF1tcTLb640uEr%2Bvj7yKwP17qvyyhr12bZ9Ul3XoH%2Bd46Jl1h3pkjLi%2F5KxsXpHR4TJT3%2F0kGa%2BHtVq49ffmjwQusZD02RaRprcc%2FcdmjXxTBs1XB5ePFcTEVmx5nNVXlVjupHSNJk6cYzcO3uq5ui4OipO%2BC5mhMA5ff%2Beu7XgwACj7xeYuTcmO6dAfbTpGzmVd8GiBl5EpLyqRj7c%2BLVknsq7rTGpuFSrXn93tcq0Ihk5uq5W7RCa4baj40qnzbfx198eUe%2Bv3WJRo%2FldY2vxMqbsOpil%2FrJ2q65GVkSkVyk5kHla3lq5XhWVVVgc9%2FMlF%2BVSbX39WyvXm01GIiJKKTl0%2FKz8z4cbVX%2FG1dFxIiHBqcyemm7y%2FVN5F4z%2ByNPHJGt%2Bvj59%2Bv6v9hyWS7X19Te%2BVt%2FYLO0dl226nvaqqzWCg4wfBPzPh5ts1qj89ZOv1MGsMyavF5rqMcy8Y4JNjrrXbdmp9hzOll4r6tHQ1CJrNu%2BweLnLVzrlnb99Ft7Q1GLRctV1jXIg87Tqj7j2R5xISHAqUyaM1kKDA42%2BX1RWaXL5qRPH9On7u7p7A4PZ0wAAC8tJREFUZNPXex0yaMFZ6ho%2FKNpEg9ggb7y3Wh275SZgS%2BUWFKvC0gqrlx85LN4mMS8srVBnC4r79BlXOrtk3dZdFsfDmoQhIvLtkWyHx7U%2F4zTQMKjByQ2OjZKmljaD79U1NJlcdu70DO13f%2F5QdXZ1Xz0CFJFhCXEyODZKIsJCJNDfVxqbW%2BXQ8bNGv6Oyuu6mv%2F39fCUhLkZERNo6Lkt9o%2FHTF9fK3cjHx9thdbWutzZSckw0Pm3tl2XLzoPy1sr16u47J0hGWorFPZVv9h41WyY0OFD8%2Fa6u8%2BVbThdOGjvKJr%2Btr%2FYcMfpeUIC%2FzJ42UWKjwuVKZ5fkXSiRzFPnDJY9m18kBUXlKnn4EKt7bcGB%2FhIWGiyNTS3S0tZhsneVU1CsxiQP0xwVV2eKEwkJ%2FSosJMjoex2Xr5hdfnpGmuRdKJXxqSNMTj%2F0%2B%2BUfq5a2doPvFZdXqmFD4jQRuWnwwMnc82rjV98aXGbWneky764Mi3Y8W9fVGqkjhmobvtitTp8rNHsaZvO2%2FfLWyvVqzrRJkj5G36Sq%2B4%2BdUtv2HTP6%2FpC4aHlu6QM3fVZ9Y%2FP8s%2FlF20%2BfK5Tmlrabhp1b69ipPLVlxwGD70WEhcjPnl5y23fkFBSptVt2GVzm8ImzVtUjNDhQlj04X%2BJi%2Fm8U3Z7DJ9Sug8eNLlNn4CDIXnF1ljiRkOAUwkODjb6n51rO3On6ksKUCalirBG4VNvgkHV1lrouWTRH%2B58PNyk9F8Ubmlpk09ffytsffaq%2Bf89Ms8OTc8%2BXGH0vftDtjeZ3Dd8OsfGI2FO5542%2Bd%2B%2BsO%2BVnBl4fkzxcW715uzp34fZpoWrN9NYN8fXxln9%2B9lHtn5%2B9%2BfXZUydq%2F7vhS2XslHS9ge%2ByV1ydIU4DCdeQnFxQgL%2FR966d3rKFqPBQo%2B%2B1tLY7VUwcUdelD8x7PiQoUHf5S7X1smLN57L70HGT1wlMneK8KyPNYTE0Vg9fH2%2BTw55Hjxhq8PXG5laL6zAuJcnoexPHJhs%2FCDDwXfaKqzPEiR4SnEabiV6Qh4f%2B44mLVTWqrrFZ6hqapLa%2BSVra2qW7u0e6e3qku7tHvth9yGnW2Rnqem3Gg%2FVbd6kz%2BUW6lulVSnYfOiFbdx5Ui%2BdN1yzZngF%2BvpKWkuSwawvGrtN0d%2FfI2i07jSbVPYdPGHxdKSWXaurrY6MjIvTWIX2M8aQTERpiPM69vQ6LqzPEiYQEp2FqaGxwoL%2FZ5b89kq2OZufI8jWfO%2F26OmNdH148Vyspr1Lb9h%2BTsopqXcscPZkrx07mqlsfIV5xqdboIy3Cw0Ictk6V1XXq3VWfGXyvp7fX5KAOk7%2FV5haLRjkmxscaTRSBAX7Pi8hyPZ9jr7g6S5xISHCJhGTqlNLpvAvqs237ZOeBLKdfR2ev67VpbgpLK9SewyekuLzK7DKGHl9h6rSSnoMLWzFVj77o7dU%2FqtnTTO8%2BMjx0xctvrlze1%2FXpS1ydIU4kJDiVmrpGo%2B8Zu0cpp6BIrduyS1zhZ%2B9KdU1KHKyJXB3J983eY3LRxCwDLW3tcvxMvpqUNup6L6DdxKhIH2%2FH7YptNr6x2RoB%2Fn42%2Byx7xdUZ4kRCgtM4m1%2Bk1m3dZeKUxyCDr2%2Fbl2m2gR8SFy3R4WESGhIofr6%2BUl5ZLXqvldiSK9X1mmvDyr%2FZe1QdyDxt%2FGCi%2FuaDiRATU0E5svEzdStB3%2Bg%2FrPD19bbZt9orrs4QJxISnIap%2Byo0EZk4Nvm2c%2FCFpRXqr598ZXS5ofGx8sD8GRuiI8MevvH13PMlytGNvCvV1ZB77r5D27x9v8o6bfhGyFtP%2BYSHBjeIiMHrB44cyRgVHrpARLYbi%2Fkzjyy2ahDAb%2F5Jf1nNhqPY7RVXZ4jTQMOwbye1%2B9BxZer6UcLgWIOvm5q9ISQoQJ55ZLF2awNvqPF0BFeqqzHjU5N0H52bGllVU98kDU0tSY6oc0RYyA4vT0%2FD28SJYquXveLqbnEiIcEqqz7dpnYfOmGyzKw7Jxh83di0OqaSmIhIWWW1TdehqaVVRxnnqOs1Z84VquVrPlfHz%2BTrPqdy5UqX0ff8fG6fMDbQyLUTpZQcPZl7Qc93Vlyq7fM5n0gj93K1tnXIibP5LndOyV5xdbc4kZBgVm194%2Bt5F0rUroPH1e%2F%2B%2FKHKLyozWX7YkEGSPDzB4OkCLy9Po8tdqjU8GXZBUZmyZgirqZt29XyeI%2BuqR1d3t1ysqpHPtu2T%2F3hnldqy44AqLDX%2B2ICGppakL%2FcYf9x5dMTtjVl4mPGZN46cyDE5g%2FvxM%2FnqTx9sUGu37Ozzug6KNn4bzDffHpW6hqbn9HzO2fwi9enXe%2Fu9YbZXXN0tTs6Oa0j94Mvdh%2BVPH2xQl690SseVK%2FLff92oe1l%2FP195YMGMN4y9b2oWg9r6JjmSnaPuTB9zPZntO3bK6gYuLCTI6L0inV3d8pe1W1VaynAJ8PeT6toGqaqtl5q6Rln24PyG2KiICEfW1VIdl6%2FIsVN5cuxUnvz2vz9UEWEhEhEWLBGhweLh4SG1DU3yp%2F%2FdYHII79hRw297bcr40VJeaXh0XndPj3zy5R5Zu2WnSoiLEX8%2FX2lqaZX6xhYpuVgln23bdy3ufV6%2FWVPT3zibX%2FRSd8%2Ftz59qv3xF3vnbp8v3HT25PC0laUR4aPD1if1q6hvXNzS1LMktKJazBcViatCNI9krru4WJxISDLLmHLSnh4csvX%2BeRIWH%2FtJoQooINfkZX%2Bw6JK%2B89YEKCvCX1vYO2W5i4ISO0z4rXnnrg%2BXGHiVQWnFJSisu3fZ6b29vuKPr2tee06XaeqO9NoNH7KHBMiQu5rZe7MSxydo7f%2FtUVdXUm%2Bxd2qsXeMOByy%2B%2FPZL9krF7v7q6e2T7%2FkzZvj%2FzwstvrhQvT0%2Fp7umRP1tw8ORI9oqru8XJ2XHKzkUEBwbIDx%2F6OxmWYHom60HRkZqpCVlFrp5Xb2lrt%2FqZNDcanhDXh9NGjq2ro3h6eMj3Fs40%2Bv7CmVOcop6z7kzXYiL1TRpgqIfgbOwVV3eLEwkJfZI6IlF%2B8fxSbXiCvscqLJo7zeLv8PbykjQDp5jMWTBjcp%2FWzZF1dZQHF84UU9tq5LAh2uRxKU5R17%2B%2Fb7ZER4a5xX5iz7i6U5xISLD8KNvTQyaOTZZ%2FePx7suzBBRbd7zBqeII2deJY3eX9fX1k2YPz5eHFczVjw1yNiR8UrU2fZP1syo6sqzlhIUES1IepZobGD5Knltyr69lIDyyYoS17cL4Em7ip02hvOSjAZus8KDpC%2B%2BmTD2nzZ0wWby%2Fr4unIWSb6K67uFidnRYT6ma%2BPt%2Fj7%2BYqfr48EBwVIQlyMJMTF3PQgPGvcN2eqVlhaobbuPGj0GSy%2BPt6SOmKoPHTvLO1XP7n62uiRQ%2BXWh9MFBphupP9u9p1aTkGx2rbvmMl7hEKDAyUlKfGmh7E5uq6mDE8YfH3OujPnCiXnfInZZ075%2BfrI4NgoufuOCdenFtLf8x2qiYhs3XlQFZdXSl1js%2FT09JqoX5xMmzT2%2BnI3JWo%2FX4MPbPTW2QjefccErb6xef6ewye2V1yqlfrGFpOnn7w8PWVUUoKkjRpucjZtY%2FUKDDA%2FddC16zG3N%2BzeDouro%2BKEqwjQAFFUVqHqGq4miwB%2FXwkKDJDEwbF22f45BcWqtb1DRF39rgB%2FPwkOCtgQHXH7Ta79XVc9qmsbMlva2jNa2jrkSmfn1cdthwSbfRifNeoamp6rrW9a3tjSKr4%2B3hIcGCBBAf4N%2FfG4grqGpufqGpqWNza3ieahibeXl%2Fj5eEtEeEhWTGT4ZFf6%2Fdszru4UJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO5f8DodhAHU3RkO8AAAAASUVORK5CYII%3D%29%3B%0Abackground%2Dsize%3A%20contain%3B%0Abackground%2Dposition%3A%20center%20center%3B%0Abackground%2Drepeat%3A%20no%2Drepeat%3B%0A%7D%0A%0A%2Etocify%20%7B%0Aborder%3A%20none%3B%20%0Aborder%2Dradius%3A%200px%3B%20%0A%0A%7D" type="text/css" />
<style type="text/css">
.main-container {
max-width: 940px;
margin-left: auto;
margin-right: auto;
}
img {
max-width:100%;
}
.tabbed-pane {
padding-top: 12px;
}
.html-widget {
margin-bottom: 20px;
}
button.code-folding-btn:focus {
outline: none;
}
summary {
display: list-item;
}
pre code {
padding: 0;
}
</style>
<!-- tabsets -->
<style type="text/css">
.tabset-dropdown > .nav-tabs {
display: inline-table;
max-height: 500px;
min-height: 44px;
overflow-y: auto;
border: 1px solid #ddd;
border-radius: 4px;
}
.tabset-dropdown > .nav-tabs > li.active:before {
content: "";
font-family: 'Glyphicons Halflings';
display: inline-block;
padding: 10px;
border-right: 1px solid #ddd;
}
.tabset-dropdown > .nav-tabs.nav-tabs-open > li.active:before {
content: "";
border: none;
}
.tabset-dropdown > .nav-tabs.nav-tabs-open:before {
content: "";
font-family: 'Glyphicons Halflings';
display: inline-block;
padding: 10px;
border-right: 1px solid #ddd;
}
.tabset-dropdown > .nav-tabs > li.active {
display: block;
}
.tabset-dropdown > .nav-tabs > li > a,
.tabset-dropdown > .nav-tabs > li > a:focus,
.tabset-dropdown > .nav-tabs > li > a:hover {
border: none;
display: inline-block;
border-radius: 4px;
background-color: transparent;
}
.tabset-dropdown > .nav-tabs.nav-tabs-open > li {
display: block;
float: none;
}
.tabset-dropdown > .nav-tabs > li {
display: none;
}
</style>
<!-- code folding -->
<style type="text/css">
#TOC {
margin: 25px 0px 20px 0px;
}
@media (max-width: 768px) {
#TOC {
position: relative;
width: 100%;
}
}
@media print {
.toc-content {
/* see https://github.com/w3c/csswg-drafts/issues/4434 */
float: right;
}
}
.toc-content {
padding-left: 30px;
padding-right: 40px;
}
div.main-container {
max-width: 1200px;
}
div.tocify {
width: 20%;
max-width: 260px;
max-height: 85%;
}
@media (min-width: 768px) and (max-width: 991px) {
div.tocify {
width: 25%;
}
}
@media (max-width: 767px) {
div.tocify {
width: 100%;
max-width: none;
}
}
.tocify ul, .tocify li {
line-height: 20px;
}
.tocify-subheader .tocify-item {
font-size: 0.90em;
}
.tocify .list-group-item {
border-radius: 0px;
}
</style>
</head>
<body>
<div class="container-fluid main-container">
<!-- setup 3col/9col grid for toc_float and main content -->
<div class="row">
<div class="col-xs-12 col-sm-4 col-md-3">
<div id="TOC" class="tocify">
</div>
</div>
<div class="toc-content col-xs-12 col-sm-8 col-md-9">
<div id="header">
<h1 class="title toc-ignore">Other errors</h1>
<h4 class="author">Scary Scarecrow</h4>
<h4 class="date">5/23/2022</h4>
</div>
<div id="read-files" class="section level2">
<h2>Read files</h2>
<div class="sourceCode" id="cb1"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a>contacts<span class="ot">&lt;-</span><span class="fu">read.csv</span>(<span class="st">&quot;./contacts/output/combined/combined.csv&quot;</span>)</span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a>accounts<span class="ot">&lt;-</span><span class="fu">read.csv</span>(<span class="st">&quot;./accounts/output/combined/combinedaccount.csv&quot;</span>)</span>
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a>account_identi<span class="ot">&lt;-</span><span class="fu">read.csv</span>(<span class="st">&quot;./accounts/output/combined/combinedaccountidentification.csv&quot;</span>)</span>
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a>account_team<span class="ot">&lt;-</span><span class="fu">read.csv</span>(<span class="st">&quot;./accounts/output/combined/combinedaccountteam.csv&quot;</span>)</span>
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a>account_sales<span class="ot">&lt;-</span><span class="fu">read.csv</span>(<span class="st">&quot;./accounts/output/combined/combinedsalesdata.csv&quot;</span>)</span>
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a>opportun<span class="ot">&lt;-</span><span class="fu">read.csv</span>(<span class="st">&quot;./projects/output/combined/combinedopportunity.csv&quot;</span>)</span>
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a>opportun_party<span class="ot">&lt;-</span><span class="fu">read.csv</span>(<span class="st">&quot;./projects/output/combined/combinedopportunitypartyinfo.csv&quot;</span>)</span>
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true" tabindex="-1"></a>opportun_prece<span class="ot">&lt;-</span><span class="fu">read.csv</span>(<span class="st">&quot;./projects/output/combined/combinedopportunityprecedingfollo.csv&quot;</span>)</span>
<span id="cb1-11"><a href="#cb1-11" aria-hidden="true" tabindex="-1"></a>opportun_sales<span class="ot">&lt;-</span><span class="fu">read.csv</span>(<span class="st">&quot;./projects/output/combined/combinedopportunitysalesteampartyin.csv&quot;</span>)</span></code></pre></div>
</div>
<div id="duplicates" class="section level2">
<h2>Duplicates</h2>
<div id="contacts" class="section level3">
<h3>Contacts</h3>
<div class="sourceCode" id="cb2"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a>contacts[contacts<span class="sc">$</span>External_Key<span class="sc">==</span>contacts<span class="sc">$</span>External_Key[<span class="fu">duplicated</span>(contacts<span class="sc">$</span>External_Key)],] <span class="sc">|&gt;</span> </span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a><span class="fu">teapot</span>()</span></code></pre></div>
<div id="htmlwidget-83eacc57bc5b4f285dc6" style="width:100%;height:auto;" class="datatables html-widget"></div>
<script type="application/json" data-for="htmlwidget-83eacc57bc5b4f285dc6">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[["1","1852"],["CON00134627","CON00134627"],[null,null],[2,2],[2,2],[null,null],[null,null],[null,null],["健",""],["韩","Sprute"],[null,null],[null,null],[null,null],[null,null],[null,null],["",""],[null,null],[null,null],[null,null],[null,null],[null,null],[null,null],["CN000012","MM72771"],[null,null],[null,null],[null,null],[null,null],["技术经理",""],["Z100","Z100"],["ZCN","ZDE"],[null,null],[null,null],["02083331899","74172"],["",""],[null,null],["HJ@GZZMC.com","info@sprute-kulmbach.de"],[null,null],[null,null],["CN","DE"],[null,null],["4号","6"],["广州市越秀区广卫路","Katschenreuth "],["广州市","Kulmbach"],["510000","95326"],[null,null],[null,null],[99999,99999],["高级工程师",""],["CON00134627","CON00134627"],[null,null],[null,null]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>External_Key<\/th>\n <th>Contact_ID<\/th>\n <th>Status<\/th>\n <th>Title<\/th>\n <th>Academic_Title<\/th>\n <th>Additional_Academic_Title<\/th>\n <th>Prefix<\/th>\n <th>First_Name<\/th>\n <th>Last_Name<\/th>\n <th>Additional_Last_Name<\/th>\n <th>Initials<\/th>\n <th>Middle_Name<\/th>\n <th>Gender<\/th>\n <th>Marital_Status<\/th>\n <th>Language<\/th>\n <th>Nick_Name<\/th>\n <th>Date_of_Birth<\/th>\n <th>Birth_Name<\/th>\n <th>Contact_Permission<\/th>\n <th>Profession<\/th>\n <th>Perception_Of_Company<\/th>\n <th>Account_External_Key<\/th>\n <th>Account_ID<\/th>\n <th>Building<\/th>\n <th>Floor<\/th>\n <th>Room<\/th>\n <th>Job_Title<\/th>\n <th>Function<\/th>\n <th>Department<\/th>\n <th>Department_From_Business_Card<\/th>\n <th>VIP_Contact<\/th>\n <th>Phone<\/th>\n <th>Mobile<\/th>\n <th>Fax<\/th>\n <th>EMail<\/th>\n <th>EMail_Invalid<\/th>\n <th>Best_Reached_By<\/th>\n <th>CountryRegion<\/th>\n <th>State_Text_Updatable<\/th>\n <th>House_Number<\/th>\n <th>Street<\/th>\n <th>City<\/th>\n <th>Postal_Code<\/th>\n <th>State<\/th>\n <th>Contact_Owner_External_Key<\/th>\n <th>Contact_Owner_ID<\/th>\n <th>Academic_title<\/th>\n <th>Former_CRM_reference<\/th>\n <th>Contact_Department<\/th>\n <th>Contact_Function<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"filter":true,"columnDefs":[{"className":"dt-right","targets":[3,4,46,49,50]},{"orderable":false,"targets":0}],"order":[],"autoWidth":false,"orderClasses":false}},"evals":[],"jsHooks":[]}</script>
</div>
<div id="accounts" class="section level3">
<h3>Accounts</h3>
<div id="accounts-1" class="section level4">
<h4>Accounts</h4>
<div class="sourceCode" id="cb3"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a>accounts[accounts<span class="sc">$</span>External_Key <span class="sc">%in%</span> accounts<span class="sc">$</span>External_Key[<span class="fu">duplicated</span>(accounts<span class="sc">$</span>External_Key)],] <span class="sc">|&gt;</span> </span>
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">teapot</span>()</span></code></pre></div>
<div id="htmlwidget-73856a2bbd56e8f1b0fc" style="width:100%;height:auto;" class="datatables html-widget"></div>
<script type="application/json" data-for="htmlwidget-73856a2bbd56e8f1b0fc">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>External_Key<\/th>\n <th>Account_ID<\/th>\n <th>Role<\/th>\n <th>Status<\/th>\n <th>DUNS<\/th>\n <th>Legal_Form<\/th>\n <th>ABC_Classification<\/th>\n <th>Nielsen_ID<\/th>\n <th>Industry<\/th>\n <th>Contact_Permission<\/th>\n <th>Name<\/th>\n <th>Additional_Name<\/th>\n <th>Additional_Name_2<\/th>\n <th>Additional_Name_3<\/th>\n <th>CountryRegion<\/th>\n <th>State<\/th>\n <th>co<\/th>\n <th>Address_Line_1<\/th>\n <th>Address_Line_2<\/th>\n <th>House_Number<\/th>\n <th>Additional_House_Number<\/th>\n <th>Street<\/th>\n <th>Address_Line_4<\/th>\n <th>Address_Line_5<\/th>\n <th>District<\/th>\n <th>City<\/th>\n <th>Different_City<\/th>\n <th>Postal_Code<\/th>\n <th>County<\/th>\n <th>Company_Postal_Code<\/th>\n <th>PO_Box_Address<\/th>\n <th>PO_Box<\/th>\n <th>PO_Box_Postal_Code<\/th>\n <th>PO_Box_CountryRegion<\/th>\n <th>PO_Box_State<\/th>\n <th>PO_Box_City<\/th>\n <th>Time_Zone<\/th>\n <th>Building<\/th>\n <th>Floor<\/th>\n <th>Room<\/th>\n <th>Phone<\/th>\n <th>Mobile<\/th>\n <th>Fax<\/th>\n <th>EMail<\/th>\n <th>Web_Site<\/th>\n <th>Language<\/th>\n <th>Best_Reached_By<\/th>\n <th>Order_Block<\/th>\n <th>Delivery_Block<\/th>\n <th>Billing_Block<\/th>\n <th>Sales_Support_Block<\/th>\n <th>Legal_Competence<\/th>\n <th>Recommended_Visit_Frequency<\/th>\n <th>Visit_Duration<\/th>\n <th>Owner_ID<\/th>\n <th>Owner_External_Key<\/th>\n <th>Customer_type_I<\/th>\n <th>Customer_type_II<\/th>\n <th>Grouping<\/th>\n <th>Former_CRM_reference<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"filter":true,"columnDefs":[{"className":"dt-right","targets":[4,55,57]},{"orderable":false,"targets":0}],"order":[],"autoWidth":false,"orderClasses":false}},"evals":[],"jsHooks":[]}</script>
</div>
<div id="accounts-identity" class="section level4">
<h4>Accounts Identity</h4>
<div class="sourceCode" id="cb4"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a>account_identi[account_identi<span class="sc">$</span>External_Key <span class="sc">%in%</span> account_identi<span class="sc">$</span>External_Key[<span class="fu">duplicated</span>(account_identi<span class="sc">$</span>External_Key)],] <span class="sc">|&gt;</span> </span>
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">teapot</span>()</span></code></pre></div>
<div id="htmlwidget-46a107ad417a6e9ffaa0" style="width:100%;height:auto;" class="datatables html-widget"></div>
<script type="application/json" data-for="htmlwidget-46a107ad417a6e9ffaa0">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[[],[],[],[],[],[],[],[],[],[],[],[]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>External_Key<\/th>\n <th>CorporateAccountExternalKey<\/th>\n <th>Account_ID<\/th>\n <th>ID_Type<\/th>\n <th>ID_Number<\/th>\n <th>Responsible_Institution<\/th>\n <th>Entry_Date<\/th>\n <th>Valid_From<\/th>\n <th>Valid_To<\/th>\n <th>CountryRegion<\/th>\n <th>State<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"filter":true,"order":[],"autoWidth":false,"orderClasses":false,"columnDefs":[{"orderable":false,"targets":0}]}},"evals":[],"jsHooks":[]}</script>
</div>
<div id="accounts-team" class="section level4">
<h4>Accounts Team</h4>
<div class="sourceCode" id="cb5"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a>account_team[account_team<span class="sc">$</span>External_Key <span class="sc">%in%</span> account_team<span class="sc">$</span>External_Key[<span class="fu">duplicated</span>(account_team<span class="sc">$</span>External_Key)],] <span class="sc">|&gt;</span> </span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">teapot</span>()</span></code></pre></div>
<div id="htmlwidget-9f43a8193f2ef0c60db1" style="width:100%;height:auto;" class="datatables html-widget"></div>
<script type="application/json" data-for="htmlwidget-9f43a8193f2ef0c60db1">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>External_Key<\/th>\n <th>Corporate_Account_External_Key<\/th>\n <th>Account_ID<\/th>\n <th>Employee_External_Key<\/th>\n <th>Employee_ID<\/th>\n <th>Party_Role<\/th>\n <th>Start_Date<\/th>\n <th>End_Date<\/th>\n <th>Main<\/th>\n <th>Sales_Organization_External_Key<\/th>\n <th>Sales_Organization_ID<\/th>\n <th>Distribution_Channel<\/th>\n <th>Division<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"filter":true,"columnDefs":[{"className":"dt-right","targets":[5,6,12,13]},{"orderable":false,"targets":0}],"order":[],"autoWidth":false,"orderClasses":false}},"evals":[],"jsHooks":[]}</script>
</div>
<div id="accounts-sales" class="section level4">
<h4>Accounts Sales</h4>
<div class="sourceCode" id="cb6"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a>account_sales[account_sales<span class="sc">$</span>External_Key <span class="sc">%in%</span> account_sales<span class="sc">$</span>External_Key[<span class="fu">duplicated</span>(account_sales<span class="sc">$</span>External_Key)],] <span class="sc">|&gt;</span> </span>
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">teapot</span>()</span></code></pre></div>
<div id="htmlwidget-5f4c3473c4eddbac95e9" style="width:100%;height:auto;" class="datatables html-widget"></div>
<script type="application/json" data-for="htmlwidget-5f4c3473c4eddbac95e9">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>External_Key<\/th>\n <th>Corporate_Account_External_Key<\/th>\n <th>Account_ID<\/th>\n <th>Sales_Organization_ID<\/th>\n <th>Sales_Organization_External_Key<\/th>\n <th>Distribution_Channel<\/th>\n <th>Division<\/th>\n <th>Sales_Office_External_Key<\/th>\n <th>Sales_Office_ID<\/th>\n <th>Sales_Group_External_Key<\/th>\n <th>Sales_Group_ID<\/th>\n <th>Billing_Block<\/th>\n <th>Delivery_Block<\/th>\n <th>Order_Block<\/th>\n <th>Sales_Support_Block<\/th>\n <th>Currency<\/th>\n <th>Customer_Group<\/th>\n <th>Delivery_Priority<\/th>\n <th>Incoterms<\/th>\n <th>Incoterms_Location<\/th>\n <th>Payment_Terms<\/th>\n <th>Complete_Delivery<\/th>\n <th>Price_List<\/th>\n <th>Price_Group<\/th>\n <th>Marked_for_Deletion<\/th>\n <th>Plant_External_Key<\/th>\n <th>Plant_ID<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"filter":true,"columnDefs":[{"className":"dt-right","targets":[6,7]},{"orderable":false,"targets":0}],"order":[],"autoWidth":false,"orderClasses":false}},"evals":[],"jsHooks":[]}</script>
</div>
</div>
<div id="projects" class="section level3">
<h3>Projects</h3>
<div id="opportunities" class="section level4">
<h4>Opportunities</h4>
<div class="sourceCode" id="cb7"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a>opportun[opportun<span class="sc">$</span>External_Key <span class="sc">%in%</span> opportun<span class="sc">$</span>External_Key[<span class="fu">duplicated</span>(opportun<span class="sc">$</span>External_Key)],] <span class="sc">|&gt;</span> </span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">teapot</span>()</span></code></pre></div>
<div id="htmlwidget-53507decb0b4456d7277" style="width:100%;height:auto;" class="datatables html-widget"></div>
<script type="application/json" data-for="htmlwidget-53507decb0b4456d7277">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>External_Key<\/th>\n <th>Document_Type<\/th>\n <th>Opportunity_ID<\/th>\n <th>External_ID<\/th>\n <th>Account<\/th>\n <th>Name<\/th>\n <th>Primary_Contact<\/th>\n <th>Priority<\/th>\n <th>Source<\/th>\n <th>Status<\/th>\n <th>Custom_Status<\/th>\n <th>Reason_for_Status<\/th>\n <th>Sales_Cycle<\/th>\n <th>Sales_Phase<\/th>\n <th>Status_Since<\/th>\n <th>Sales_Phase_Start_Date<\/th>\n <th>Probability<\/th>\n <th>Header_Revenue_Schedule_Indicator<\/th>\n <th>Relevant_for_Forecast<\/th>\n <th>Expected_Value<\/th>\n <th>Currency<\/th>\n <th>Start_Date<\/th>\n <th>Close_Date<\/th>\n <th>Revenue_Start_Date<\/th>\n <th>Revenue_End_Date<\/th>\n <th>Forecast_Category<\/th>\n <th>Category<\/th>\n <th>Sales_Unit<\/th>\n <th>Sales_Organization<\/th>\n <th>Distribution_Channel<\/th>\n <th>Division<\/th>\n <th>Sales_Office<\/th>\n <th>Sales_Group<\/th>\n <th>Territory_ID<\/th>\n <th>Owner<\/th>\n <th>End_Buyer_Party<\/th>\n <th>Product_Recipient_Party<\/th>\n <th>Approver_Party<\/th>\n <th>Payer_Party<\/th>\n <th>Billto_Party<\/th>\n <th>Seller_Party<\/th>\n <th>Progress<\/th>\n <th>Budget_Prospect<\/th>\n <th>Sales_Unit_Party_External_Key<\/th>\n <th>Bill_To_Party_External_Key<\/th>\n <th>Product_Recepient_Party_External_Key<\/th>\n <th>Seller_Party_External_Key<\/th>\n <th>Sales_Group_External_Key<\/th>\n <th>End_Buyer_Party_External_Key<\/th>\n <th>Primary_Contact_Party_External_Key<\/th>\n <th>Sales_Office_External_Key<\/th>\n <th>Approver_Party_External_Key<\/th>\n <th>Payer_Party_External_Key<\/th>\n <th>Main_Employee_Responsible_Party_External_Key<\/th>\n <th>Sales_Organisation_External_Key<\/th>\n <th>Prospect_Party_External_Key<\/th>\n <th>External_Probability<\/th>\n <th>Classification<\/th>\n <th>Expected_order_date<\/th>\n <th>Frame_type<\/th>\n <th>International_project<\/th>\n <th>Former_CRM_reference<\/th>\n <th>LEVIAT_specified<\/th>\n <th>Close_date<\/th>\n <th>Start_date<\/th>\n <th>Opportunity_type<\/th>\n <th>Parent_opportunity<\/th>\n <th>Product_pillar<\/th>\n <th>Project_ID<\/th>\n <th>Project_Country<\/th>\n <th>Project_Description<\/th>\n <th>Project_Postal_code<\/th>\n <th>Project_street<\/th>\n <th>Project_type_I<\/th>\n <th>Project_type_II<\/th>\n <th>Project_City<\/th>\n <th>Submission_date<\/th>\n <th>BIM_designed<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"filter":true,"columnDefs":[{"className":"dt-right","targets":[5,8,9,10,14,30,31,34,35,58,63,66,74,78]},{"orderable":false,"targets":0}],"order":[],"autoWidth":false,"orderClasses":false}},"evals":[],"jsHooks":[]}</script>
</div>
<div id="opportunity-party" class="section level4">
<h4>Opportunity Party</h4>
<div class="sourceCode" id="cb8"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a>opportun_party[opportun_party<span class="sc">$</span>External_Key <span class="sc">%in%</span> opportun_party<span class="sc">$</span>External_Key[<span class="fu">duplicated</span>(opportun_party<span class="sc">$</span>External_Key)],] <span class="sc">|&gt;</span> </span>
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">teapot</span>()</span></code></pre></div>
<div id="htmlwidget-d3ae8a8992cf13ed6ee6" style="width:100%;height:auto;" class="datatables html-widget"></div>
<script type="application/json" data-for="htmlwidget-d3ae8a8992cf13ed6ee6">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[[],[],[],[],[],[],[],[],[],[]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>External_Key<\/th>\n <th>Opportunity_External_Key<\/th>\n <th>Opportunity_ID<\/th>\n <th>Party_ID<\/th>\n <th>Role_Category_Code<\/th>\n <th>Role<\/th>\n <th>Party_Type<\/th>\n <th>Main_Indicator<\/th>\n <th>Party_External_Key<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"filter":true,"columnDefs":[{"className":"dt-right","targets":4},{"orderable":false,"targets":0}],"order":[],"autoWidth":false,"orderClasses":false}},"evals":[],"jsHooks":[]}</script>
</div>
<div id="opportunity-preceding" class="section level4">
<h4>Opportunity Preceding</h4>
<div class="sourceCode" id="cb9"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a>opportun_prece[opportun_prece<span class="sc">$</span>External_Key <span class="sc">%in%</span> opportun_prece<span class="sc">$</span>External_Key[<span class="fu">duplicated</span>(opportun_prece<span class="sc">$</span>External_Key)],] <span class="sc">|&gt;</span> </span>
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">teapot</span>()</span></code></pre></div>
<div id="htmlwidget-0496c7bc214b7dbc9508" style="width:100%;height:auto;" class="datatables html-widget"></div>
<script type="application/json" data-for="htmlwidget-0496c7bc214b7dbc9508">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>External_Key<\/th>\n <th>Opportunity_External_Key<\/th>\n <th>Opportunity_ID<\/th>\n <th>Reference_Doc_External_Key<\/th>\n <th>ID<\/th>\n <th>Type_Code<\/th>\n <th>Role_Code<\/th>\n <th>Main<\/th>\n <th>Item_ID<\/th>\n <th>Item_Type_Code<\/th>\n <th>Sales_Cycle_Code<\/th>\n <th>Sales_Cycle_Phase_Code<\/th>\n <th>Sales_Cycle_Phase_Step_Code<\/th>\n <th>Business_Transaction_Document_Reference_Business_System_ID<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"filter":true,"columnDefs":[{"className":"dt-right","targets":[4,6,7,10]},{"orderable":false,"targets":0}],"order":[],"autoWidth":false,"orderClasses":false}},"evals":[],"jsHooks":[]}</script>
</div>
<div id="opportunity-sales" class="section level4">
<h4>Opportunity Sales</h4>
<div class="sourceCode" id="cb10"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a>opportun_sales[opportun_sales<span class="sc">$</span>External_Key <span class="sc">%in%</span> opportun_sales<span class="sc">$</span>External_Key[<span class="fu">duplicated</span>(opportun_sales<span class="sc">$</span>External_Key)],] <span class="sc">|&gt;</span> </span>
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">teapot</span>()</span></code></pre></div>
<div id="htmlwidget-807f709db9aba0e416cc" style="width:100%;height:auto;" class="datatables html-widget"></div>
<script type="application/json" data-for="htmlwidget-807f709db9aba0e416cc">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[[],[],[],[],[],[],[],[],[]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>External_Key<\/th>\n <th>Opportunity_External_Key<\/th>\n <th>Opportunity_ID<\/th>\n <th>Party_ID<\/th>\n <th>Role_Category_Code<\/th>\n <th>Role<\/th>\n <th>Main_Indicator<\/th>\n <th>Party_External_Key<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"filter":true,"columnDefs":[{"className":"dt-right","targets":4},{"orderable":false,"targets":0}],"order":[],"autoWidth":false,"orderClasses":false}},"evals":[],"jsHooks":[]}</script>
</div>
</div>
</div>
<div id="account-vs-contacts" class="section level2">
<h2>Account Vs Contacts</h2>
<div class="sourceCode" id="cb11"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a>accou<span class="ot">&lt;-</span>accounts <span class="sc">|&gt;</span> <span class="fu">select</span>(External_Key) <span class="sc">|&gt;</span> <span class="fu">rename</span>(<span class="at">account_key=</span>External_Key)</span>
<span id="cb11-2"><a href="#cb11-2" aria-hidden="true" tabindex="-1"></a>op<span class="ot">&lt;-</span>contacts <span class="sc">|&gt;</span> </span>
<span id="cb11-3"><a href="#cb11-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">select</span>(External_Key,Account_External_Key) <span class="sc">|&gt;</span> </span>
<span id="cb11-4"><a href="#cb11-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">rename</span>(<span class="at">contact_key=</span>External_Key) <span class="sc">|&gt;</span> </span>
<span id="cb11-5"><a href="#cb11-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">full_join</span>(accou, <span class="at">by=</span><span class="fu">c</span>(<span class="st">&quot;Account_External_Key&quot;</span><span class="ot">=</span><span class="st">&quot;account_key&quot;</span>), <span class="at">keep=</span>T) <span class="sc">|&gt;</span> </span>
<span id="cb11-6"><a href="#cb11-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">mutate</span>(<span class="at">Result=</span> <span class="fu">ifelse</span>(<span class="fu">is.na</span>(account_key),<span class="st">&quot;Missing from Accounts&quot;</span>,</span>
<span id="cb11-7"><a href="#cb11-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">ifelse</span>(<span class="fu">is.na</span>(Account_External_Key), <span class="st">&quot;Missing from Contacts&quot;</span>,</span>
<span id="cb11-8"><a href="#cb11-8" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;All Right&quot;</span>)))</span>
<span id="cb11-9"><a href="#cb11-9" aria-hidden="true" tabindex="-1"></a>op <span class="sc">|&gt;</span> <span class="fu">count</span>(Result)</span></code></pre></div>
<pre><code>## Result n
## 1 All Right 3368
## 2 Missing from Accounts 344
## 3 Missing from Contacts 5072</code></pre>
<div id="missing-from-accounts-exists-in-contacts" class="section level3">
<h3>Missing from Accounts (Exists in Contacts)</h3>
<div class="sourceCode" id="cb13"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a>op <span class="sc">|&gt;</span> </span>
<span id="cb13-2"><a href="#cb13-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">filter</span>(Result <span class="sc">==</span> <span class="st">&quot;Missing from Accounts&quot;</span>) <span class="sc">|&gt;</span> </span>
<span id="cb13-3"><a href="#cb13-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">teapot</span>()</span></code></pre></div>
<div id="htmlwidget-ad9ed597ca8b86588ab4" style="width:100%;height:auto;" class="datatables html-widget"></div>
<script type="application/json" data-for="htmlwidget-ad9ed597ca8b86588ab4">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","107","108","109","110","111","112","113","114","115","116","117","118","119","120","121","122","123","124","125","126","127","128","129","130","131","132","133","134","135","136","137","138","139","140","141","142","143","144","145","146","147","148","149","150","151","152","153","154","155","156","157","158","159","160","161","162","163","164","165","166","167","168","169","170","171","172","173","174","175","176","177","178","179","180","181","182","183","184","185","186","187","188","189","190","191","192","193","194","195","196","197","198","199","200","201","202","203","204","205","206","207","208","209","210","211","212","213","214","215","216","217","218","219","220","221","222","223","224","225","226","227","228","229","230","231","232","233","234","235","236","237","238","239","240","241","242","243","244","245","246","247","248","249","250","251","252","253","254","255","256","257","258","259","260","261","262","263","264","265","266","267","268","269","270","271","272","273","274","275","276","277","278","279","280","281","282","283","284","285","286","287","288","289","290","291","292","293","294","295","296","297","298","299","300","301","302","303","304","305","306","307","308","309","310","311","312","313","314","315","316","317","318","319","320","321","322","323","324","325","326","327","328","329","330","331","332","333","334","335","336","337","338","339","340","341","342","343","344"],["CON00136886","CON00136879","CON00136875","CON00136862","CON00136856","CON00136848","CON00136844","CON00136839","CON00136832","CON00136771","CON00136738","CON00136737","CON00136728","CON00136725","CON00136700","CON00136692","CON00136688","CON00136686","CON00136666","CON00136662","CON00136661","CON00136653","CON00136650","CON00136637","CON00136632","CON00136629","CON00136627","CON00136609","CON00136599","CON00136595","CON00136588","CON00136585","CON00136575","CON00136563","CON00136560","CON00136522","CON00136519","CON00136492","CON00136439","CON00136427","CON00136412","CON00136404","CON00136400","CON00136389","CON00136379","CON00136377","CON00136373","CON00136372","CON00136371","CON00136369","CON00136368","CON00136367","CON00136364","CON00136343","CON00136337","CON00136335","CON00136332","CON00136329","CON00136323","CON00136318","CON00136317","CON00136315","CON00136313","CON00136312","CON00136311","CON00136307","CON00136293","CON00136280","CON00136271","CON00136269","CON00136268","CON00136256","CON00136251","CON00136237","CON00136222","CON00136220","CON00136214","CON00136198","CON00136196","CON00136192","CON00136185","CON00136184","CON00136177","CON00136176","CON00136172","CON00136170","CON00136169","CON00136163","CON00136162","CON00136156","CON00136153","CON00136148","CON00136145","CON00136141","CON00136132","CON00136130","CON00136128","CON00136126","CON00136115","CON00136113","CON00136112","CON00136110","CON00136109","CON00136103","CON00136101","CON00136098","CON00136091","CON00136088","CON00136081","CON00136080","CON00136074","CON00136043","CON00136042","CON00136023","CON00136020","CON00136012","CON00136011","CON00136009","CON00136008","CON00136006","CON00136003","CON00135996","CON00135983","CON00135976","CON00135972","CON00135964","CON00135943","CON00135936","CON00135930","CON00135928","CON00135918","CON00135916","CON00135904","CON00135902","CON00135893","CON00135891","CON00135888","CON00135887","CON00135886","CON00135879","CON00135870","CON00135864","CON00135857","CON00135853","CON00135847","CON00135842","CON00135839","CON00135838","CON00135835","CON00135831","CON00135827","CON00135824","CON00135810","CON00135808","CON00135804","CON00135793","CON00135789","CON00135780","CON00135749","CON00135711","CON00135707","CON00135706","CON00135702","CON00135699","CON00135697","CON00135696","CON00135695","CON00135693","CON00135690","CON00135689","CON00135687","CON00135686","CON00135685","CON00135681","CON00135653","CON00135640","CON00135605","CON00135586","CON00135580","CON00135573","CON00135572","CON00135571","CON00135568","CON00135559","CON00135554","CON00135535","CON00135501","CON00135490","CON00135488","CON00135487","CON00135478","CON00135476","CON00135460","CON00135457","CON00135453","CON00135450","CON00135447","CON00135444","CON00135441","CON00135436","CON00135435","CON00135432","CON00135431","CON00135430","CON00135426","CON00135422","CON00135421","CON00135420","CON00135419","CON00135418","CON00135417","CON00135414","CON00135412","CON00135405","CON00135402","CON00135394","CON00135393","CON00135390","CON00135389","CON00135386","CON00135384","CON00135382","CON00135381","CON00135380","CON00135376","CON00135375","CON00135373","CON00135372","CON00135371","CON00135366","CON00135365","CON00135364","CON00135363","CON00135362","CON00135357","CON00135346","CON00135338","CON00135337","CON00135336","CON00135334","CON00135332","CON00135303","CON00135300","CON00135292","CON00135284","CON00135264","CON00135263","CON00135262","CON00135256","CON00135253","CON00135249","CON00135245","CON00135237","CON00135236","CON00135232","CON00135214","CON00135213","CON00135201","CON00135200","CON00135199","CON00135192","CON00135189","CON00135179","CON00135178","CON00135174","CON00135173","CON00135169","CON00135168","CON00135163","CON00135161","CON00135157","CON00135154","CON00135153","CON00135144","CON00135143","CON00135142","CON00135122","CON00135121","CON00135120","CON00135114","CON00135100","CON00135057","CON00135050","CON00135036","CON00135027","CON00135019","CON00135003","CON00134998","CON00134997","CON00134987","CON00134986","CON00134984","CON00134983","CON00134976","CON00134969","CON00134968","CON00134960","CON00134959","CON00134957","CON00134944","CON00134943","CON00134940","CON00134931","CON00134929","CON00134923","CON00134919","CON00134915","CON00134910","CON00134908","CON00134907","CON00134902","CON00134894","CON00134887","CON00134876","CON00134871","CON00134866","CON00134841","CON00134776","CON00134775","CON00134773","CON00134752","CON00134751","CON00134746","CON00134745","CON00134736","CON00134711","CON00134706","CON00134705","CON00134698","CON00134696","CON00134690","CON00134663","CON00134649","CON00134645","CON00134642","CON00134639","CON00136235","CON00136234","CON00136233","CON00136232","CON00135764","CON00136579","CON00136414","CON00136157"],["MM115777","MM241266","MM120250","MM237079","15290028","MM67317","MM236886","MM59675","MM156995","MM148738","MM83299","15256384","MM102321","MM242941","MM147348","MM231375","MM82284","MM70018","MM64389","MM71789","MM57241","MM122289","MM237420","MM224148","MM59039","11181595","MM236308","MM173326","MM59080","MM61090","394778","MM161794","MM56789","MM53388","MM53656","MM158112","MM71968","DE001589","DE002400","MM57197","DE000164","MM76089","MM179716","11110601","11181595","MM57760","MM238260","MM130814","MM83474","MM114947","DE000019","MM147793","MM177228","MM149975","11010282","MM103678","MM52960","DE001725","MM82284","MM223969","MM76898","MM90150","MM102108","MM73639","MM70655","MM121569","MM232802","MM175301","11051254","11051254","MM147296","MM232710","MM74309","814248","MM55032","11197657","MM87448","MM243577","MM83290","340601","MM115759","MM247195","MM59039","11081563","DE001300","MM75579","MM171435","836350","836350","377217","MM60257","MM161808","MM114931","MM126349","11811197","MM70655","DE000019","MM52956","MM58681","MM76684","097691","11180204","MM237105","MM146195","11025549","MM188751","MM173777","MM75285","MM244436","MM241999","MM248198","MM237584","11708118","MM79770","MM248067","MM149579","11708113","MM111695","MM154740","MM153937","MM226547","MM174943","MM53484","MM237584","11890544","521323","MM124295","959973","226441","MM102321","11120170","MM232442","MM148832","MM173777","057288","MM148484","371996","236904","236904","045665","MM64049","MM72863","527640","MM53008","MM52997","MM243577","MM102108","MM72983","MM54956","11180204","11882605","MM131063","MM73137","621527","MM68098","MM56271","MM244964","11085016","277911","MM177667","MM185354","MM60203","MM234522","MM53008","MM70587","MM248665","MM229842","MM116172","MM158280","394778","11130835","MM158280","MM228969","11072306","15290028","11083403","MM245778","MM244361","485981","394778","MM70587","MM85880","MM239586","MM172452","MM73695","11189837","MM238519","16620199","DE001299","MM185354","MM90150","MM236886","MM59164","MM121920","MM102321","MM56917","MM60796","MM52797","MM239093","MM237216","434055","485981","MM228398","MM245949","491306","MM55533","MM68342","MM65739","MM86541","MM57477","DE001299","MM150625","MM173425","296026","MM89610","MM103956","665477","MM56111","MM120250","MM188461","MM52762","MM244373","MM61142","MM154799","MM91006","545460","MM237855","MM65856","MM57130","MM230694","MM115219","MM226749","MM164086","MM54378","883098","DE001161","MM231078","MM231078","MM231078","11051254","11708092","MM121920","MM89751","324684","369530","MM60820","MM60820","MM60820","MM237584","MM80158","MM155501","MM56789","MM125489","MM179658","MM68570","MM67271","MM68111","MM75376","MM179126","858075","MM68111","MM107692","DE000886","MM166899","MM157891","341145","116098","MM237000","MM73073","DE000416","MM53019","648007","628348","DE001043","MM70655","MM73434","MM70385","MM70385","129042","MM89751","MM124069","MM66061","11181305","485602","11015210","MM54385","MM59818","MM241660","420549","MM72879","MM115931","MM53147","MM123018","MM73695","MM181579","MM242832","MM229821","MM184505","MM59120","11719223","MM175301","057288","MM55517","MM56271","540901","11085611","MM80142","MM90853","MM60952","MM61356","DE002360","MM125879","MM55279","MM71732","MM233605","MM213938","MM53210","040283","MM90150","485981","621527","621527","MM53008","MM53008","11010824","117547","319840","MM171435","MM248067","MM115914","MM72942","MM59205","MM189192","MM231078","MM223693","MM172856","FI000051","FI000051","FI000041","FI000041","NO314","NO322","IT002975","PL000203"],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],["Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts","Missing from Accounts"]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>contact_key<\/th>\n <th>Account_External_Key<\/th>\n <th>account_key<\/th>\n <th>Result<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"filter":true,"order":[],"autoWidth":false,"orderClasses":false,"columnDefs":[{"orderable":false,"targets":0}]}},"evals":[],"jsHooks":[]}</script>
</div>
<div id="unique-accounts" class="section level3">
<h3>Unique Accounts</h3>
<div class="sourceCode" id="cb14"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a>op <span class="sc">|&gt;</span> </span>
<span id="cb14-2"><a href="#cb14-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">filter</span>(Result <span class="sc">==</span> <span class="st">&quot;Missing from Accounts&quot;</span>) <span class="sc">|&gt;</span> </span>
<span id="cb14-3"><a href="#cb14-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">select</span>(Account_External_Key) <span class="sc">|&gt;</span> <span class="fu">unique</span>() <span class="sc">|&gt;</span> </span>
<span id="cb14-4"><a href="#cb14-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">teapot</span>()</span></code></pre></div>
<div id="htmlwidget-3d8a0a3150bd45297727" style="width:100%;height:auto;" class="datatables html-widget"></div>
<script type="application/json" data-for="htmlwidget-3d8a0a3150bd45297727">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","46","47","48","49","50","51","52","53","54","55","56","57","58","60","61","62","63","64","65","66","67","68","69","71","72","73","74","75","76","77","78","79","80","81","82","84","85","86","87","88","90","91","92","93","94","95","98","99","100","101","102","103","104","105","106","107","108","109","110","111","112","113","114","115","116","117","118","119","120","121","122","123","125","126","127","128","129","131","132","133","135","136","137","138","140","141","142","143","144","145","148","149","151","152","153","154","155","156","157","158","159","160","161","162","163","165","166","167","168","169","171","173","174","176","177","178","179","182","183","184","185","186","187","188","189","193","194","196","197","198","199","200","201","203","204","205","206","207","208","209","210","212","213","214","215","216","217","218","220","221","222","223","224","225","226","227","228","229","230","231","232","233","234","235","236","237","241","243","244","245","246","250","251","253","254","255","256","257","258","259","260","262","263","264","265","266","267","268","269","270","271","272","273","274","276","277","279","281","282","283","284","285","286","287","288","289","290","291","292","293","295","296","297","298","299","300","303","305","306","307","308","309","310","311","312","313","314","315","316","317","318","325","326","327","330","331","332","333","335","336","337","339","341","342","343","344"],["MM115777","MM241266","MM120250","MM237079","15290028","MM67317","MM236886","MM59675","MM156995","MM148738","MM83299","15256384","MM102321","MM242941","MM147348","MM231375","MM82284","MM70018","MM64389","MM71789","MM57241","MM122289","MM237420","MM224148","MM59039","11181595","MM236308","MM173326","MM59080","MM61090","394778","MM161794","MM56789","MM53388","MM53656","MM158112","MM71968","DE001589","DE002400","MM57197","DE000164","MM76089","MM179716","11110601","MM57760","MM238260","MM130814","MM83474","MM114947","DE000019","MM147793","MM177228","MM149975","11010282","MM103678","MM52960","DE001725","MM223969","MM76898","MM90150","MM102108","MM73639","MM70655","MM121569","MM232802","MM175301","11051254","MM147296","MM232710","MM74309","814248","MM55032","11197657","MM87448","MM243577","MM83290","340601","MM115759","MM247195","11081563","DE001300","MM75579","MM171435","836350","377217","MM60257","MM161808","MM114931","MM126349","11811197","MM52956","MM58681","MM76684","097691","11180204","MM237105","MM146195","11025549","MM188751","MM173777","MM75285","MM244436","MM241999","MM248198","MM237584","11708118","MM79770","MM248067","MM149579","11708113","MM111695","MM154740","MM153937","MM226547","MM174943","MM53484","11890544","521323","MM124295","959973","226441","11120170","MM232442","MM148832","057288","MM148484","371996","236904","045665","MM64049","MM72863","527640","MM53008","MM52997","MM72983","MM54956","11882605","MM131063","MM73137","621527","MM68098","MM56271","MM244964","11085016","277911","MM177667","MM185354","MM60203","MM234522","MM70587","MM248665","MM229842","MM116172","MM158280","11130835","MM228969","11072306","11083403","MM245778","MM244361","485981","MM85880","MM239586","MM172452","MM73695","11189837","MM238519","16620199","DE001299","MM59164","MM121920","MM56917","MM60796","MM52797","MM239093","MM237216","434055","MM228398","MM245949","491306","MM55533","MM68342","MM65739","MM86541","MM57477","MM150625","MM173425","296026","MM89610","MM103956","665477","MM56111","MM188461","MM52762","MM244373","MM61142","MM154799","MM91006","545460","MM237855","MM65856","MM57130","MM230694","MM115219","MM226749","MM164086","MM54378","883098","DE001161","MM231078","11708092","MM89751","324684","369530","MM60820","MM80158","MM155501","MM125489","MM179658","MM68570","MM67271","MM68111","MM75376","MM179126","858075","MM107692","DE000886","MM166899","MM157891","341145","116098","MM237000","MM73073","DE000416","MM53019","648007","628348","DE001043","MM73434","MM70385","129042","MM124069","MM66061","11181305","485602","11015210","MM54385","MM59818","MM241660","420549","MM72879","MM115931","MM53147","MM123018","MM181579","MM242832","MM229821","MM184505","MM59120","11719223","MM55517","540901","11085611","MM80142","MM90853","MM60952","MM61356","DE002360","MM125879","MM55279","MM71732","MM233605","MM213938","MM53210","040283","11010824","117547","319840","MM115914","MM72942","MM59205","MM189192","MM223693","MM172856","FI000051","FI000041","NO314","NO322","IT002975","PL000203"]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>Account_External_Key<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"filter":true,"order":[],"autoWidth":false,"orderClasses":false,"columnDefs":[{"orderable":false,"targets":0}]}},"evals":[],"jsHooks":[]}</script>
</div>
<div id="missing-from-contacts-exists-in-accounts" class="section level3">
<h3>Missing from Contacts (Exists in Accounts)</h3>
<div class="sourceCode" id="cb15"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a>op <span class="sc">|&gt;</span> </span>
<span id="cb15-2"><a href="#cb15-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">filter</span>(Result <span class="sc">==</span> <span class="st">&quot;Missing from Contacts&quot;</span>) <span class="sc">|&gt;</span> </span>
<span id="cb15-3"><a href="#cb15-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">teapot</span>()</span></code></pre></div>
<div id="htmlwidget-00b8870b486c623f08f2" style="width:100%;height:auto;" class="datatables html-widget"></div>
<script type="application/json" data-for="htmlwidget-00b8870b486c623f08f2">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","107","108","109","110","111","112","113","114","115","116","117","118","119","120","121","122","123","124","125","126","127","128","129","130","131","132","133","134","135","136","137","138","139","140","141","142","143","144","145","146","147","148","149","150","151","152","153","154","155","156","157","158","159","160","161","162","163","164","165","166","167","168","169","170","171","172","173","174","175","176","177","178","179","180","181","182","183","184","185","186","187","188","189","190","191","192","193","194","195","196","197","198","199","200","201","202","203","204","205","206","207","208","209","210","211","212","213","214","215","216","217","218","219","220","221","222","223","224","225","226","227","228","229","230","231","232","233","234","235","236","237","238","239","240","241","242","243","244","245","246","247","248","249","250","251","252","253","254","255","256","257","258","259","260","261","262","263","264","265","266","267","268","269","270","271","272","273","274","275","276","277","278","279","280","281","282","283","284","285","286","287","288","289","290","291","292","293","294","295","296","297","298","299","300","301","302","303","304","305","306","307","308","309","310","311","312","313","314","315","316","317","318","319","320","321","322","323","324","325","326","327","328","329","330","331","332","333","334","335","336","337","338","339","340","341","342","343","344","345","346","347","348","349","350","351","352","353","354","355","356","357","358","359","360","361","362","363","364","365","366","367","368","369","370","371","372","373","374","375","376","377","378","379","380","381","382","383","384","385","386","387","388","389","390","391","392","393","394","395","396","397","398","399","400","401","402","403","404","405","406","407","408","409","410","411","412","413","414","415","416","417","418","419","420","421","422","423","424","425","426","427","428","429","430","431","432","433","434","435","436","437","438","439","440","441","442","443","444","445","446","447","448","449","450","451","452","453","454","455","456","457","458","459","460","461","462","463","464","465","466","467","468","469","470","471","472","473","474","475","476","477","478","479","480","481","482","483","484","485","486","487","488","489","490","491","492","493","494","495","496","497","498","499","500","501","502","503","504","505","506","507","508","509","510","511","512","513","514","515","516","517","518","519","520","521","522","523","524","525","526","527","528","529","530","531","532","533","534","535","536","537","538","539","540","541","542","543","544","545","546","547","548","549","550","551","552","553","554","555","556","557","558","559","560","561","562","563","564","565","566","567","568","569","570","571","572","573","574","575","576","577","578","579","580","581","582","583","584","585","586","587","588","589","590","591","592","593","594","595","596","597","598","599","600","601","602","603","604","605","606","607","608","609","610","611","612","613","614","615","616","617","618","619","620","621","622","623","624","625","626","627","628","629","630","631","632","633","634","635","636","637","638","639","640","641","642","643","644","645","646","647","648","649","650","651","652","653","654","655","656","657","658","659","660","661","662","663","664","665","666","667","668","669","670","671","672","673","674","675","676","677","678","679","680","681","682","683","684","685","686","687","688","689","690","691","692","693","694","695","696","697","698","699","700","701","702","703","704","705","706","707","708","709","710","711","712","713","714","715","716","717","718","719","720","721","722","723","724","725","726","727","728","729","730","731","732","733","734","735","736","737","738","739","740","741","742","743","744","745","746","747","748","749","750","751","752","753","754","755","756","757","758","759","760","761","762","763","764","765","766","767","768","769","770","771","772","773","774","775","776","777","778","779","780","781","782","783","784","785","786","787","788","789","790","791","792","793","794","795","796","797","798","799","800","801","802","803","804","805","806","807","808","809","810","811","812","813","814","815","816","817","818","819","820","821","822","823","824","825","826","827","828","829","830","831","832","833","834","835","836","837","838","839","840","841","842","843","844","845","846","847","848","849","850","851","852","853","854","855","856","857","858","859","860","861","862","863","864","865","866","867","868","869","870","871","872","873","874","875","876","877","878","879","880","881","882","883","884","885","886","887","888","889","890","891","892","893","894","895","896","897","898","899","900","901","902","903","904","905","906","907","908","909","910","911","912","913","914","915","916","917","918","919","920","921","922","923","924","925","926","927","928","929","930","931","932","933","934","935","936","937","938","939","940","941","942","943","944","945","946","947","948","949","950","951","952","953","954","955","956","957","958","959","960","961","962","963","964","965","966","967","968","969","970","971","972","973","974","975","976","977","978","979","980","981","982","983","984","985","986","987","988","989","990","991","992","993","994","995","996","997","998","999","1000","1001","1002","1003","1004","1005","1006","1007","1008","1009","1010","1011","1012","1013","1014","1015","1016","1017","1018","1019","1020","1021","1022","1023","1024","1025","1026","1027","1028","1029","1030","1031","1032","1033","1034","1035","1036","1037","1038","1039","1040","1041","1042","1043","1044","1045","1046","1047","1048","1049","1050","1051","1052","1053","1054","1055","1056","1057","1058","1059","1060","1061","1062","1063","1064","1065","1066","1067","1068","1069","1070","1071","1072","1073","1074","1075","1076","1077","1078","1079","1080","1081","1082","1083","1084","1085","1086","1087","1088","1089","1090","1091","1092","1093","1094","1095","1096","1097","1098","1099","1100","1101","1102","1103","1104","1105","1106","1107","1108","1109","1110","1111","1112","1113","1114","1115","1116","1117","1118","1119","1120","1121","1122","1123","1124","1125","1126","1127","1128","1129","1130","1131","1132","1133","1134","1135","1136","1137","1138","1139","1140","1141","1142","1143","1144","1145","1146","1147","1148","1149","1150","1151","1152","1153","1154","1155","1156","1157","1158","1159","1160","1161","1162","1163","1164","1165","1166","1167","1168","1169","1170","1171","1172","1173","1174","1175","1176","1177","1178","1179","1180","1181","1182","1183","1184","1185","1186","1187","1188","1189","1190","1191","1192","1193","1194","1195","1196","1197","1198","1199","1200","1201","1202","1203","1204","1205","1206","1207","1208","1209","1210","1211","1212","1213","1214","1215","1216","1217","1218","1219","1220","1221","1222","1223","1224","1225","1226","1227","1228","1229","1230","1231","1232","1233","1234","1235","1236","1237","1238","1239","1240","1241","1242","1243","1244","1245","1246","1247","1248","1249","1250","1251","1252","1253","1254","1255","1256","1257","1258","1259","1260","1261","1262","1263","1264","1265","1266","1267","1268","1269","1270","1271","1272","1273","1274","1275","1276","1277","1278","1279","1280","1281","1282","1283","1284","1285","1286","1287","1288","1289","1290","1291","1292","1293","1294","1295","1296","1297","1298","1299","1300","1301","1302","1303","1304","1305","1306","1307","1308","1309","1310","1311","1312","1313","1314","1315","1316","1317","1318","1319","1320","1321","1322","1323","1324","1325","1326","1327","1328","1329","1330","1331","1332","1333","1334","1335","1336","1337","1338","1339","1340","1341","1342","1343","1344","1345","1346","1347","1348","1349","1350","1351","1352","1353","1354","1355","1356","1357","1358","1359","1360","1361","1362","1363","1364","1365","1366","1367","1368","1369","1370","1371","1372","1373","1374","1375","1376","1377","1378","1379","1380","1381","1382","1383","1384","1385","1386","1387","1388","1389","1390","1391","1392","1393","1394","1395","1396","1397","1398","1399","1400","1401","1402","1403","1404","1405","1406","1407","1408","1409","1410","1411","1412","1413","1414","1415","1416","1417","1418","1419","1420","1421","1422","1423","1424","1425","1426","1427","1428","1429","1430","1431","1432","1433","1434","1435","1436","1437","1438","1439","1440","1441","1442","1443","1444","1445","1446","1447","1448","1449","1450","1451","1452","1453","1454","1455","1456","1457","1458","1459","1460","1461","1462","1463","1464","1465","1466","1467","1468","1469","1470","1471","1472","1473","1474","1475","1476","1477","1478","1479","1480","1481","1482","1483","1484","1485","1486","1487","1488","1489","1490","1491","1492","1493","1494","1495","1496","1497","1498","1499","1500","1501","1502","1503","1504","1505","1506","1507","1508","1509","1510","1511","1512","1513","1514","1515","1516","1517","1518","1519","1520","1521","1522","1523","1524","1525","1526","1527","1528","1529","1530","1531","1532","1533","1534","1535","1536","1537","1538","1539","1540","1541","1542","1543","1544","1545","1546","1547","1548","1549","1550","1551","1552","1553","1554","1555","1556","1557","1558","1559","1560","1561","1562","1563","1564","1565","1566","1567","1568","1569","1570","1571","1572","1573","1574","1575","1576","1577","1578","1579","1580","1581","1582","1583","1584","1585","1586","1587","1588","1589","1590","1591","1592","1593","1594","1595","1596","1597","1598","1599","1600","1601","1602","1603","1604","1605","1606","1607","1608","1609","1610","1611","1612","1613","1614","1615","1616","1617","1618","1619","1620","1621","1622","1623","1624","1625","1626","1627","1628","1629","1630","1631","1632","1633","1634","1635","1636","1637","1638","1639","1640","1641","1642","1643","1644","1645","1646","1647","1648","1649","1650","1651","1652","1653","1654","1655","1656","1657","1658","1659","1660","1661","1662","1663","1664","1665","1666","1667","1668","1669","1670","1671","1672","1673","1674","1675","1676","1677","1678","1679","1680","1681","1682","1683","1684","1685","1686","1687","1688","1689","1690","1691","1692","1693","1694","1695","1696","1697","1698","1699","1700","1701","1702","1703","1704","1705","1706","1707","1708","1709","1710","1711","1712","1713","1714","1715","1716","1717","1718","1719","1720","1721","1722","1723","1724","1725","1726","1727","1728","1729","1730","1731","1732","1733","1734","1735","1736","1737","1738","1739","1740","1741","1742","1743","1744","1745","1746","1747","1748","1749","1750","1751","1752","1753","1754","1755","1756","1757","1758","1759","1760","1761","1762","1763","1764","1765","1766","1767","1768","1769","1770","1771","1772","1773","1774","1775","1776","1777","1778","1779","1780","1781","1782","1783","1784","1785","1786","1787","1788","1789","1790","1791","1792","1793","1794","1795","1796","1797","1798","1799","1800","1801","1802","1803","1804","1805","1806","1807","1808","1809","1810","1811","1812","1813","1814","1815","1816","1817","1818","1819","1820","1821","1822","1823","1824","1825","1826","1827","1828","1829","1830","1831","1832","1833","1834","1835","1836","1837","1838","1839","1840","1841","1842","1843","1844","1845","1846","1847","1848","1849","1850","1851","1852","1853","1854","1855","1856","1857","1858","1859","1860","1861","1862","1863","1864","1865","1866","1867","1868","1869","1870","1871","1872","1873","1874","1875","1876","1877","1878","1879","1880","1881","1882","1883","1884","1885","1886","1887","1888","1889","1890","1891","1892","1893","1894","1895","1896","1897","1898","1899","1900","1901","1902","1903","1904","1905","1906","1907","1908","1909","1910","1911","1912","1913","1914","1915","1916","1917","1918","1919","1920","1921","1922","1923","1924","1925","1926","1927","1928","1929","1930","1931","1932","1933","1934","1935","1936","1937","1938","1939","1940","1941","1942","1943","1944","1945","1946","1947","1948","1949","1950","1951","1952","1953","1954","1955","1956","1957","1958","1959","1960","1961","1962","1963","1964","1965","1966","1967","1968","1969","1970","1971","1972","1973","1974","1975","1976","1977","1978","1979","1980","1981","1982","1983","1984","1985","1986","1987","1988","1989","1990","1991","1992","1993","1994","1995","1996","1997","1998","1999","2000","2001","2002","2003","2004","2005","2006","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017","2018","2019","2020","2021","2022","2023","2024","2025","2026","2027","2028","2029","2030","2031","2032","2033","2034","2035","2036","2037","2038","2039","2040","2041","2042","2043","2044","2045","2046","2047","2048","2049","2050","2051","2052","2053","2054","2055","2056","2057","2058","2059","2060","2061","2062","2063","2064","2065","2066","2067","2068","2069","2070","2071","2072","2073","2074","2075","2076","2077","2078","2079","2080","2081","2082","2083","2084","2085","2086","2087","2088","2089","2090","2091","2092","2093","2094","2095","2096","2097","2098","2099","2100","2101","2102","2103","2104","2105","2106","2107","2108","2109","2110","2111","2112","2113","2114","2115","2116","2117","2118","2119","2120","2121","2122","2123","2124","2125","2126","2127","2128","2129","2130","2131","2132","2133","2134","2135","2136","2137","2138","2139","2140","2141","2142","2143","2144","2145","2146","2147","2148","2149","2150","2151","2152","2153","2154","2155","2156","2157","2158","2159","2160","2161","2162","2163","2164","2165","2166","2167","2168","2169","2170","2171","2172","2173","2174","2175","2176","2177","2178","2179","2180","2181","2182","2183","2184","2185","2186","2187","2188","2189","2190","2191","2192","2193","2194","2195","2196","2197","2198","2199","2200","2201","2202","2203","2204","2205","2206","2207","2208","2209","2210","2211","2212","2213","2214","2215","2216","2217","2218","2219","2220","2221","2222","2223","2224","2225","2226","2227","2228","2229","2230","2231","2232","2233","2234","2235","2236","2237","2238","2239","2240","2241","2242","2243","2244","2245","2246","2247","2248","2249","2250","2251","2252","2253","2254","2255","2256","2257","2258","2259","2260","2261","2262","2263","2264","2265","2266","2267","2268","2269","2270","2271","2272","2273","2274","2275","2276","2277","2278","2279","2280","2281","2282","2283","2284","2285","2286","2287","2288","2289","2290","2291","2292","2293","2294","2295","2296","2297","2298","2299","2300","2301","2302","2303","2304","2305","2306","2307","2308","2309","2310","2311","2312","2313","2314","2315","2316","2317","2318","2319","2320","2321","2322","2323","2324","2325","2326","2327","2328","2329","2330","2331","2332","2333","2334","2335","2336","2337","2338","2339","2340","2341","2342","2343","2344","2345","2346","2347","2348","2349","2350","2351","2352","2353","2354","2355","2356","2357","2358","2359","2360","2361","2362","2363","2364","2365","2366","2367","2368","2369","2370","2371","2372","2373","2374","2375","2376","2377","2378","2379","2380","2381","2382","2383","2384","2385","2386","2387","2388","2389","2390","2391","2392","2393","2394","2395","2396","2397","2398","2399","2400","2401","2402","2403","2404","2405","2406","2407","2408","2409","2410","2411","2412","2413","2414","2415","2416","2417","2418","2419","2420","2421","2422","2423","2424","2425","2426","2427","2428","2429","2430","2431","2432","2433","2434","2435","2436","2437","2438","2439","2440","2441","2442","2443","2444","2445","2446","2447","2448","2449","2450","2451","2452","2453","2454","2455","2456","2457","2458","2459","2460","2461","2462","2463","2464","2465","2466","2467","2468","2469","2470","2471","2472","2473","2474","2475","2476","2477","2478","2479","2480","2481","2482","2483","2484","2485","2486","2487","2488","2489","2490","2491","2492","2493","2494","2495","2496","2497","2498","2499","2500","2501","2502","2503","2504","2505","2506","2507","2508","2509","2510","2511","2512","2513","2514","2515","2516","2517","2518","2519","2520","2521","2522","2523","2524","2525","2526","2527","2528","2529","2530","2531","2532","2533","2534","2535","2536","2537","2538","2539","2540","2541","2542","2543","2544","2545","2546","2547","2548","2549","2550","2551","2552","2553","2554","2555","2556","2557","2558","2559","2560","2561","2562","2563","2564","2565","2566","2567","2568","2569","2570","2571","2572","2573","2574","2575","2576","2577","2578","2579","2580","2581","2582","2583","2584","2585","2586","2587","2588","2589","2590","2591","2592","2593","2594","2595","2596","2597","2598","2599","2600","2601","2602","2603","2604","2605","2606","2607","2608","2609","2610","2611","2612","2613","2614","2615","2616","2617","2618","2619","2620","2621","2622","2623","2624","2625","2626","2627","2628","2629","2630","2631","2632","2633","2634","2635","2636","2637","2638","2639","2640","2641","2642","2643","2644","2645","2646","2647","2648","2649","2650","2651","2652","2653","2654","2655","2656","2657","2658","2659","2660","2661","2662","2663","2664","2665","2666","2667","2668","2669","2670","2671","2672","2673","2674","2675","2676","2677","2678","2679","2680","2681","2682","2683","2684","2685","2686","2687","2688","2689","2690","2691","2692","2693","2694","2695","2696","2697","2698","2699","2700","2701","2702","2703","2704","2705","2706","2707","2708","2709","2710","2711","2712","2713","2714","2715","2716","2717","2718","2719","2720","2721","2722","2723","2724","2725","2726","2727","2728","2729","2730","2731","2732","2733","2734","2735","2736","2737","2738","2739","2740","2741","2742","2743","2744","2745","2746","2747","2748","2749","2750","2751","2752","2753","2754","2755","2756","2757","2758","2759","2760","2761","2762","2763","2764","2765","2766","2767","2768","2769","2770","2771","2772","2773","2774","2775","2776","2777","2778","2779","2780","2781","2782","2783","2784","2785","2786","2787","2788","2789","2790","2791","2792","2793","2794","2795","2796","2797","2798","2799","2800","2801","2802","2803","2804","2805","2806","2807","2808","2809","2810","2811","2812","2813","2814","2815","2816","2817","2818","2819","2820","2821","2822","2823","2824","2825","2826","2827","2828","2829","2830","2831","2832","2833","2834","2835","2836","2837","2838","2839","2840","2841","2842","2843","2844","2845","2846","2847","2848","2849","2850","2851","2852","2853","2854","2855","2856","2857","2858","2859","2860","2861","2862","2863","2864","2865","2866","2867","2868","2869","2870","2871","2872","2873","2874","2875","2876","2877","2878","2879","2880","2881","2882","2883","2884","2885","2886","2887","2888","2889","2890","2891","2892","2893","2894","2895","2896","2897","2898","2899","2900","2901","2902","2903","2904","2905","2906","2907","2908","2909","2910","2911","2912","2913","2914","2915","2916","2917","2918","2919","2920","2921","2922","2923","2924","2925","2926","2927","2928","2929","2930","2931","2932","2933","2934","2935","2936","2937","2938","2939","2940","2941","2942","2943","2944","2945","2946","2947","2948","2949","2950","2951","2952","2953","2954","2955","2956","2957","2958","2959","2960","2961","2962","2963","2964","2965","2966","2967","2968","2969","2970","2971","2972","2973","2974","2975","2976","2977","2978","2979","2980","2981","2982","2983","2984","2985","2986","2987","2988","2989","2990","2991","2992","2993","2994","2995","2996","2997","2998","2999","3000","3001","3002","3003","3004","3005","3006","3007","3008","3009","3010","3011","3012","3013","3014","3015","3016","3017","3018","3019","3020","3021","3022","3023","3024","3025","3026","3027","3028","3029","3030","3031","3032","3033","3034","3035","3036","3037","3038","3039","3040","3041","3042","3043","3044","3045","3046","3047","3048","3049","3050","3051","3052","3053","3054","3055","3056","3057","3058","3059","3060","3061","3062","3063","3064","3065","3066","3067","3068","3069","3070","3071","3072","3073","3074","3075","3076","3077","3078","3079","3080","3081","3082","3083","3084","3085","3086","3087","3088","3089","3090","3091","3092","3093","3094","3095","3096","3097","3098","3099","3100","3101","3102","3103","3104","3105","3106","3107","3108","3109","3110","3111","3112","3113","3114","3115","3116","3117","3118","3119","3120","3121","3122","3123","3124","3125","3126","3127","3128","3129","3130","3131","3132","3133","3134","3135","3136","3137","3138","3139","3140","3141","3142","3143","3144","3145","3146","3147","3148","3149","3150","3151","3152","3153","3154","3155","3156","3157","3158","3159","3160","3161","3162","3163","3164","3165","3166","3167","3168","3169","3170","3171","3172","3173","3174","3175","3176","3177","3178","3179","3180","3181","3182","3183","3184","3185","3186","3187","3188","3189","3190","3191","3192","3193","3194","3195","3196","3197","3198","3199","3200","3201","3202","3203","3204","3205","3206","3207","3208","3209","3210","3211","3212","3213","3214","3215","3216","3217","3218","3219","3220","3221","3222","3223","3224","3225","3226","3227","3228","3229","3230","3231","3232","3233","3234","3235","3236","3237","3238","3239","3240","3241","3242","3243","3244","3245","3246","3247","3248","3249","3250","3251","3252","3253","3254","3255","3256","3257","3258","3259","3260","3261","3262","3263","3264","3265","3266","3267","3268","3269","3270","3271","3272","3273","3274","3275","3276","3277","3278","3279","3280","3281","3282","3283","3284","3285","3286","3287","3288","3289","3290","3291","3292","3293","3294","3295","3296","3297","3298","3299","3300","3301","3302","3303","3304","3305","3306","3307","3308","3309","3310","3311","3312","3313","3314","3315","3316","3317","3318","3319","3320","3321","3322","3323","3324","3325","3326","3327","3328","3329","3330","3331","3332","3333","3334","3335","3336","3337","3338","3339","3340","3341","3342","3343","3344","3345","3346","3347","3348","3349","3350","3351","3352","3353","3354","3355","3356","3357","3358","3359","3360","3361","3362","3363","3364","3365","3366","3367","3368","3369","3370","3371","3372","3373","3374","3375","3376","3377","3378","3379","3380","3381","3382","3383","3384","3385","3386","3387","3388","3389","3390","3391","3392","3393","3394","3395","3396","3397","3398","3399","3400","3401","3402","3403","3404","3405","3406","3407","3408","3409","3410","3411","3412","3413","3414","3415","3416","3417","3418","3419","3420","3421","3422","3423","3424","3425","3426","3427","3428","3429","3430","3431","3432","3433","3434","3435","3436","3437","3438","3439","3440","3441","3442","3443","3444","3445","3446","3447","3448","3449","3450","3451","3452","3453","3454","3455","3456","3457","3458","3459","3460","3461","3462","3463","3464","3465","3466","3467","3468","3469","3470","3471","3472","3473","3474","3475","3476","3477","3478","3479","3480","3481","3482","3483","3484","3485","3486","3487","3488","3489","3490","3491","3492","3493","3494","3495","3496","3497","3498","3499","3500","3501","3502","3503","3504","3505","3506","3507","3508","3509","3510","3511","3512","3513","3514","3515","3516","3517","3518","3519","3520","3521","3522","3523","3524","3525","3526","3527","3528","3529","3530","3531","3532","3533","3534","3535","3536","3537","3538","3539","3540","3541","3542","3543","3544","3545","3546","3547","3548","3549","3550","3551","3552","3553","3554","3555","3556","3557","3558","3559","3560","3561","3562","3563","3564","3565","3566","3567","3568","3569","3570","3571","3572","3573","3574","3575","3576","3577","3578","3579","3580","3581","3582","3583","3584","3585","3586","3587","3588","3589","3590","3591","3592","3593","3594","3595","3596","3597","3598","3599","3600","3601","3602","3603","3604","3605","3606","3607","3608","3609","3610","3611","3612","3613","3614","3615","3616","3617","3618","3619","3620","3621","3622","3623","3624","3625","3626","3627","3628","3629","3630","3631","3632","3633","3634","3635","3636","3637","3638","3639","3640","3641","3642","3643","3644","3645","3646","3647","3648","3649","3650","3651","3652","3653","3654","3655","3656","3657","3658","3659","3660","3661","3662","3663","3664","3665","3666","3667","3668","3669","3670","3671","3672","3673","3674","3675","3676","3677","3678","3679","3680","3681","3682","3683","3684","3685","3686","3687","3688","3689","3690","3691","3692","3693","3694","3695","3696","3697","3698","3699","3700","3701","3702","3703","3704","3705","3706","3707","3708","3709","3710","3711","3712","3713","3714","3715","3716","3717","3718","3719","3720","3721","3722","3723","3724","3725","3726","3727","3728","3729","3730","3731","3732","3733","3734","3735","3736","3737","3738","3739","3740","3741","3742","3743","3744","3745","3746","3747","3748","3749","3750","3751","3752","3753","3754","3755","3756","3757","3758","3759","3760","3761","3762","3763","3764","3765","3766","3767","3768","3769","3770","3771","3772","3773","3774","3775","3776","3777","3778","3779","3780","3781","3782","3783","3784","3785","3786","3787","3788","3789","3790","3791","3792","3793","3794","3795","3796","3797","3798","3799","3800","3801","3802","3803","3804","3805","3806","3807","3808","3809","3810","3811","3812","3813","3814","3815","3816","3817","3818","3819","3820","3821","3822","3823","3824","3825","3826","3827","3828","3829","3830","3831","3832","3833","3834","3835","3836","3837","3838","3839","3840","3841","3842","3843","3844","3845","3846","3847","3848","3849","3850","3851","3852","3853","3854","3855","3856","3857","3858","3859","3860","3861","3862","3863","3864","3865","3866","3867","3868","3869","3870","3871","3872","3873","3874","3875","3876","3877","3878","3879","3880","3881","3882","3883","3884","3885","3886","3887","3888","3889","3890","3891","3892","3893","3894","3895","3896","3897","3898","3899","3900","3901","3902","3903","3904","3905","3906","3907","3908","3909","3910","3911","3912","3913","3914","3915","3916","3917","3918","3919","3920","3921","3922","3923","3924","3925","3926","3927","3928","3929","3930","3931","3932","3933","3934","3935","3936","3937","3938","3939","3940","3941","3942","3943","3944","3945","3946","3947","3948","3949","3950","3951","3952","3953","3954","3955","3956","3957","3958","3959","3960","3961","3962","3963","3964","3965","3966","3967","3968","3969","3970","3971","3972","3973","3974","3975","3976","3977","3978","3979","3980","3981","3982","3983","3984","3985","3986","3987","3988","3989","3990","3991","3992","3993","3994","3995","3996","3997","3998","3999","4000","4001","4002","4003","4004","4005","4006","4007","4008","4009","4010","4011","4012","4013","4014","4015","4016","4017","4018","4019","4020","4021","4022","4023","4024","4025","4026","4027","4028","4029","4030","4031","4032","4033","4034","4035","4036","4037","4038","4039","4040","4041","4042","4043","4044","4045","4046","4047","4048","4049","4050","4051","4052","4053","4054","4055","4056","4057","4058","4059","4060","4061","4062","4063","4064","4065","4066","4067","4068","4069","4070","4071","4072","4073","4074","4075","4076","4077","4078","4079","4080","4081","4082","4083","4084","4085","4086","4087","4088","4089","4090","4091","4092","4093","4094","4095","4096","4097","4098","4099","4100","4101","4102","4103","4104","4105","4106","4107","4108","4109","4110","4111","4112","4113","4114","4115","4116","4117","4118","4119","4120","4121","4122","4123","4124","4125","4126","4127","4128","4129","4130","4131","4132","4133","4134","4135","4136","4137","4138","4139","4140","4141","4142","4143","4144","4145","4146","4147","4148","4149","4150","4151","4152","4153","4154","4155","4156","4157","4158","4159","4160","4161","4162","4163","4164","4165","4166","4167","4168","4169","4170","4171","4172","4173","4174","4175","4176","4177","4178","4179","4180","4181","4182","4183","4184","4185","4186","4187","4188","4189","4190","4191","4192","4193","4194","4195","4196","4197","4198","4199","4200","4201","4202","4203","4204","4205","4206","4207","4208","4209","4210","4211","4212","4213","4214","4215","4216","4217","4218","4219","4220","4221","4222","4223","4224","4225","4226","4227","4228","4229","4230","4231","4232","4233","4234","4235","4236","4237","4238","4239","4240","4241","4242","4243","4244","4245","4246","4247","4248","4249","4250","4251","4252","4253","4254","4255","4256","4257","4258","4259","4260","4261","4262","4263","4264","4265","4266","4267","4268","4269","4270","4271","4272","4273","4274","4275","4276","4277","4278","4279","4280","4281","4282","4283","4284","4285","4286","4287","4288","4289","4290","4291","4292","4293","4294","4295","4296","4297","4298","4299","4300","4301","4302","4303","4304","4305","4306","4307","4308","4309","4310","4311","4312","4313","4314","4315","4316","4317","4318","4319","4320","4321","4322","4323","4324","4325","4326","4327","4328","4329","4330","4331","4332","4333","4334","4335","4336","4337","4338","4339","4340","4341","4342","4343","4344","4345","4346","4347","4348","4349","4350","4351","4352","4353","4354","4355","4356","4357","4358","4359","4360","4361","4362","4363","4364","4365","4366","4367","4368","4369","4370","4371","4372","4373","4374","4375","4376","4377","4378","4379","4380","4381","4382","4383","4384","4385","4386","4387","4388","4389","4390","4391","4392","4393","4394","4395","4396","4397","4398","4399","4400","4401","4402","4403","4404","4405","4406","4407","4408","4409","4410","4411","4412","4413","4414","4415","4416","4417","4418","4419","4420","4421","4422","4423","4424","4425","4426","4427","4428","4429","4430","4431","4432","4433","4434","4435","4436","4437","4438","4439","4440","4441","4442","4443","4444","4445","4446","4447","4448","4449","4450","4451","4452","4453","4454","4455","4456","4457","4458","4459","4460","4461","4462","4463","4464","4465","4466","4467","4468","4469","4470","4471","4472","4473","4474","4475","4476","4477","4478","4479","4480","4481","4482","4483","4484","4485","4486","4487","4488","4489","4490","4491","4492","4493","4494","4495","4496","4497","4498","4499","4500","4501","4502","4503","4504","4505","4506","4507","4508","4509","4510","4511","4512","4513","4514","4515","4516","4517","4518","4519","4520","4521","4522","4523","4524","4525","4526","4527","4528","4529","4530","4531","4532","4533","4534","4535","4536","4537","4538","4539","4540","4541","4542","4543","4544","4545","4546","4547","4548","4549","4550","4551","4552","4553","4554","4555","4556","4557","4558","4559","4560","4561","4562","4563","4564","4565","4566","4567","4568","4569","4570","4571","4572","4573","4574","4575","4576","4577","4578","4579","4580","4581","4582","4583","4584","4585","4586","4587","4588","4589","4590","4591","4592","4593","4594","4595","4596","4597","4598","4599","4600","4601","4602","4603","4604","4605","4606","4607","4608","4609","4610","4611","4612","4613","4614","4615","4616","4617","4618","4619","4620","4621","4622","4623","4624","4625","4626","4627","4628","4629","4630","4631","4632","4633","4634","4635","4636","4637","4638","4639","4640","4641","4642","4643","4644","4645","4646","4647","4648","4649","4650","4651","4652","4653","4654","4655","4656","4657","4658","4659","4660","4661","4662","4663","4664","4665","4666","4667","4668","4669","4670","4671","4672","4673","4674","4675","4676","4677","4678","4679","4680","4681","4682","4683","4684","4685","4686","4687","4688","4689","4690","4691","4692","4693","4694","4695","4696","4697","4698","4699","4700","4701","4702","4703","4704","4705","4706","4707","4708","4709","4710","4711","4712","4713","4714","4715","4716","4717","4718","4719","4720","4721","4722","4723","4724","4725","4726","4727","4728","4729","4730","4731","4732","4733","4734","4735","4736","4737","4738","4739","4740","4741","4742","4743","4744","4745","4746","4747","4748","4749","4750","4751","4752","4753","4754","4755","4756","4757","4758","4759","4760","4761","4762","4763","4764","4765","4766","4767","4768","4769","4770","4771","4772","4773","4774","4775","4776","4777","4778","4779","4780","4781","4782","4783","4784","4785","4786","4787","4788","4789","4790","4791","4792","4793","4794","4795","4796","4797","4798","4799","4800","4801","4802","4803","4804","4805","4806","4807","4808","4809","4810","4811","4812","4813","4814","4815","4816","4817","4818","4819","4820","4821","4822","4823","4824","4825","4826","4827","4828","4829","4830","4831","4832","4833","4834","4835","4836","4837","4838","4839","4840","4841","4842","4843","4844","4845","4846","4847","4848","4849","4850","4851","4852","4853","4854","4855","4856","4857","4858","4859","4860","4861","4862","4863","4864","4865","4866","4867","4868","4869","4870","4871","4872","4873","4874","4875","4876","4877","4878","4879","4880","4881","4882","4883","4884","4885","4886","4887","4888","4889","4890","4891","4892","4893","4894","4895","4896","4897","4898","4899","4900","4901","4902","4903","4904","4905","4906","4907","4908","4909","4910","4911","4912","4913","4914","4915","4916","4917","4918","4919","4920","4921","4922","4923","4924","4925","4926","4927","4928","4929","4930","4931","4932","4933","4934","4935","4936","4937","4938","4939","4940","4941","4942","4943","4944","4945","4946","4947","4948","4949","4950","4951","4952","4953","4954","4955","4956","4957","4958","4959","4960","4961","4962","4963","4964","4965","4966","4967","4968","4969","4970","4971","4972","4973","4974","4975","4976","4977","4978","4979","4980","4981","4982","4983","4984","4985","4986","4987","4988","4989","4990","4991","4992","4993","4994","4995","4996","4997","4998","4999","5000","5001","5002","5003","5004","5005","5006","5007","5008","5009","5010","5011","5012","5013","5014","5015","5016","5017","5018","5019","5020","5021","5022","5023","5024","5025","5026","5027","5028","5029","5030","5031","5032","5033","5034","5035","5036","5037","5038","5039","5040","5041","5042","5043","5044","5045","5046","5047","5048","5049","5050","5051","5052","5053","5054","5055","5056","5057","5058","5059","5060","5061","5062","5063","5064","5065","5066","5067","5068","5069","5070","5071","5072"],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],["CN000001","CN000002","CN000003","CN000005","CN000006","CN000007","CN000008","019349","034316","069307","080879","095479","097950","11010380","11010752","11010893","11010914","11015701","11020465","11020502","11020603","11022414","11023916","11024711","11030302","11041905","11050402","11050609","11060126","11070166","11080229","11081002","11111811","11112803","11120226","11120404","11121091","11121515","11180135","11180504","11181124","11191103","11192798","11192832","11194048","11194420","11197467","11197706","11200816","11230369","11230526","11231708","116944","11702406","117449","11807178","11809231","11811315","11811401","11811588","11812097","11812342","11889406","120749","146042","15136353","15140003","15300002","16614152","16627060","169670","170403","183112","196399","228442","249916","262606","292352","292900","298102","319142","325948","327846","344402","353422","356875","371273","381115","385901","395576","397568","416648","423170","444687","454595","484596","519572","524049","538183","545408","559681","584903","586006","597064","620348","625040","644595","645906","653498","674340","683694","687550","689598","692617","694308","697291","698965","718684","726746","733868","742310","757342","765191","772016","772113","784202","798544","824441","826942","834010","843004","849719","858393","861570","862370","874395","892968","895561","896160","912345","938282","938815","939542","940848","943602","955291","977730","CNT120","DE000001","DE000002","DE000003","DE000010","DE000016","DE000017","DE000018","DE000021","DE000022","DE000023","DE000024","DE000026","DE000027","DE000028","DE000030","DE000031","DE000036","DE000038","DE000040","DE000041","DE000042","DE000043","DE000045","DE000046","DE000047","DE000052","DE000053","DE000054","DE000055","DE000056","DE000059","DE000061","DE000062","DE000063","DE000064","DE000066","DE000068","DE000070","DE000072","DE000073","DE000076","DE000077","DE000078","DE000079","DE000086","DE000087","DE000088","DE000090","DE000092","DE000094","DE000095","DE000096","DE000097","DE000099","DE000100","DE000104","DE000106","DE000107","DE000108","DE000112","DE000115","DE000116","DE000118","DE000124","DE000125","DE000129","DE000130","DE000133","DE000134","DE000136","DE000139","DE000140","DE000142","DE000145","DE000147","DE000150","DE000151","DE000153","DE000154","DE000155","DE000156","DE000157","DE000161","DE000167","DE000168","DE000169","DE000170","DE000172","DE000173","DE000174","DE000180","DE000181","DE000182","DE000183","DE000184","DE000186","DE000189","DE000191","DE000195","DE000196","DE000200","DE000201","DE000209","DE000210","DE000214","DE000217","DE000218","DE000219","DE000225","DE000228","DE000229","DE000230","DE000233","DE000234","DE000235","DE000237","DE000239","DE000242","DE000243","DE000245","DE000246","DE000251","DE000258","DE000268","DE000269","DE000273","DE000275","DE000276","DE000277","DE000278","DE000282","DE000283","DE000286","DE000289","DE000290","DE000291","DE000292","DE000293","DE000297","DE000299","DE000300","DE000304","DE000305","DE000311","DE000315","DE000316","DE000318","DE000320","DE000321","DE000322","DE000323","DE000326","DE000330","DE000333","DE000335","DE000336","DE000338","DE000339","DE000340","DE000342","DE000346","DE000347","DE000348","DE000350","DE000355","DE000356","DE000359","DE000361","DE000363","DE000366","DE000367","DE000370","DE000373","DE000375","DE000381","DE000386","DE000388","DE000396","DE000401","DE000403","DE000404","DE000409","DE000410","DE000415","DE000418","DE000419","DE000421","DE000423","DE000430","DE000431","DE000433","DE000434","DE000437","DE000439","DE000440","DE000445","DE000446","DE000448","DE000449","DE000450","DE000452","DE000455","DE000458","DE000463","DE000465","DE000472","DE000481","DE000482","DE000484","DE000487","DE000488","DE000489","DE000490","DE000492","DE000494","DE000498","DE000500","DE000501","DE000502","DE000504","DE000505","DE000506","DE000507","DE000513","DE000516","DE000520","DE000522","DE000523","DE000530","DE000531","DE000532","DE000533","DE000535","DE000536","DE000539","DE000540","DE000543","DE000544","DE000546","DE000548","DE000550","DE000552","DE000553","DE000554","DE000555","DE000557","DE000558","DE000559","DE000567","DE000569","DE000570","DE000571","DE000572","DE000573","DE000577","DE000578","DE000581","DE000582","DE000583","DE000584","DE000590","DE000592","DE000594","DE000599","DE000600","DE000602","DE000604","DE000605","DE000607","DE000609","DE000610","DE000613","DE000614","DE000615","DE000616","DE000617","DE000620","DE000621","DE000623","DE000627","DE000628","DE000629","DE000631","DE000632","DE000637","DE000639","DE000641","DE000643","DE000644","DE000645","DE000647","DE000650","DE000651","DE000653","DE000656","DE000664","DE000665","DE000668","DE000670","DE000673","DE000674","DE000676","DE000681","DE000685","DE000687","DE000689","DE000690","DE000692","DE000694","DE000695","DE000698","DE000699","DE000702","DE000705","DE000707","DE000708","DE000709","DE000710","DE000712","DE000718","DE000720","DE000721","DE000725","DE000728","DE000729","DE000731","DE000732","DE000734","DE000739","DE000740","DE000743","DE000747","DE000749","DE000751","DE000758","DE000759","DE000762","DE000764","DE000767","DE000772","DE000776","DE000777","DE000778","DE000781","DE000783","DE000786","DE000787","DE000788","DE000791","DE000792","DE000801","DE000803","DE000806","DE000807","DE000808","DE000809","DE000810","DE000812","DE000816","DE000817","DE000818","DE000820","DE000821","DE000822","DE000824","DE000826","DE000828","DE000829","DE000830","DE000831","DE000835","DE000837","DE000842","DE000843","DE000846","DE000848","DE000849","DE000850","DE000851","DE000854","DE000857","DE000861","DE000864","DE000865","DE000867","DE000870","DE000871","DE000872","DE000874","DE000875","DE000878","DE000880","DE000883","DE000884","DE000889","DE000890","DE000894","DE000895","DE000896","DE000900","DE000901","DE000903","DE000908","DE000909","DE000911","DE000915","DE000917","DE000919","DE000921","DE000922","DE000925","DE000928","DE000929","DE000930","DE000932","DE000934","DE000935","DE000937","DE000939","DE000942","DE000943","DE000945","DE000946","DE000949","DE000950","DE000951","DE000952","DE000953","DE000955","DE000957","DE000960","DE000962","DE000963","DE000966","DE000967","DE000969","DE000971","DE000972","DE000973","DE000974","DE000975","DE000976","DE000978","DE000979","DE000980","DE000984","DE000989","DE000991","DE000994","DE000997","DE000999","DE001001","DE001004","DE001005","DE001009","DE001010","DE001015","DE001016","DE001017","DE001019","DE001021","DE001023","DE001024","DE001028","DE001029","DE001030","DE001032","DE001033","DE001034","DE001037","DE001040","DE001044","DE001045","DE001047","DE001049","DE001050","DE001053","DE001054","DE001055","DE001059","DE001060","DE001062","DE001064","DE001065","DE001069","DE001071","DE001073","DE001078","DE001079","DE001081","DE001082","DE001083","DE001086","DE001092","DE001093","DE001100","DE001101","DE001111","DE001117","DE001119","DE001121","DE001122","DE001123","DE001127","DE001129","DE001134","DE001136","DE001138","DE001139","DE001140","DE001141","DE001142","DE001143","DE001149","DE001156","DE001160","DE001163","DE001168","DE001172","DE001173","DE001174","DE001175","DE001177","DE001178","DE001181","DE001182","DE001188","DE001190","DE001191","DE001192","DE001193","DE001194","DE001196","DE001201","DE001202","DE001207","DE001209","DE001210","DE001212","DE001214","DE001216","DE001218","DE001220","DE001221","DE001225","DE001231","DE001232","DE001235","DE001236","DE001240","DE001242","DE001244","DE001245","DE001247","DE001251","DE001252","DE001253","DE001254","DE001260","DE001261","DE001262","DE001263","DE001266","DE001268","DE001270","DE001271","DE001274","DE001275","DE001278","DE001282","DE001287","DE001289","DE001292","DE001293","DE001302","DE001303","DE001305","DE001307","DE001309","DE001311","DE001313","DE001315","DE001316","DE001319","DE001322","DE001323","DE001324","DE001327","DE001329","DE001332","DE001333","DE001334","DE001335","DE001342","DE001344","DE001351","DE001355","DE001359","DE001363","DE001366","DE001368","DE001370","DE001371","DE001372","DE001377","DE001378","DE001379","DE001384","DE001385","DE001386","DE001390","DE001391","DE001392","DE001393","DE001394","DE001395","DE001396","DE001397","DE001400","DE001403","DE001404","DE001405","DE001408","DE001410","DE001412","DE001413","DE001415","DE001419","DE001421","DE001424","DE001425","DE001427","DE001430","DE001432","DE001440","DE001446","DE001449","DE001452","DE001453","DE001455","DE001457","DE001460","DE001461","DE001463","DE001464","DE001465","DE001470","DE001471","DE001472","DE001474","DE001476","DE001477","DE001479","DE001480","DE001482","DE001484","DE001489","DE001490","DE001491","DE001492","DE001494","DE001495","DE001497","DE001498","DE001499","DE001505","DE001509","DE001510","DE001514","DE001515","DE001517","DE001519","DE001521","DE001523","DE001525","DE001528","DE001532","DE001533","DE001534","DE001535","DE001537","DE001538","DE001539","DE001540","DE001541","DE001542","DE001543","DE001544","DE001548","DE001549","DE001552","DE001554","DE001557","DE001558","DE001559","DE001563","DE001564","DE001568","DE001570","DE001572","DE001574","DE001575","DE001577","DE001578","DE001581","DE001584","DE001586","DE001591","DE001592","DE001595","DE001596","DE001605","DE001606","DE001609","DE001612","DE001614","DE001615","DE001616","DE001623","DE001624","DE001630","DE001633","DE001634","DE001636","DE001642","DE001643","DE001646","DE001647","DE001648","DE001649","DE001653","DE001655","DE001656","DE001659","DE001660","DE001662","DE001663","DE001664","DE001666","DE001667","DE001670","DE001671","DE001672","DE001674","DE001675","DE001676","DE001677","DE001680","DE001682","DE001688","DE001689","DE001702","DE001703","DE001704","DE001705","DE001706","DE001708","DE001709","DE001710","DE001711","DE001713","DE001714","DE001716","DE001717","DE001724","DE001726","DE001727","DE001728","DE001731","DE001732","DE001733","DE001737","DE001738","DE001740","DE001741","DE001746","DE001747","DE001748","DE001750","DE001755","DE001757","DE001758","DE001760","DE001762","DE001763","DE001764","DE001765","DE001769","DE001772","DE001773","DE001778","DE001783","DE001786","DE001787","DE001788","DE001789","DE001791","DE001792","DE001793","DE001794","DE001795","DE001796","DE001798","DE001799","DE001802","DE001803","DE001804","DE001806","DE001807","DE001808","DE001809","DE001811","DE001814","DE001816","DE001817","DE001819","DE001821","DE001822","DE001823","DE001826","DE001828","DE001830","DE001832","DE001835","DE001838","DE001840","DE001842","DE001845","DE001846","DE001849","DE001851","DE001858","DE001861","DE001864","DE001870","DE001871","DE001875","DE001876","DE001877","DE001878","DE001881","DE001882","DE001885","DE001886","DE001894","DE001897","DE001898","DE001903","DE001907","DE001912","DE001913","DE001914","DE001916","DE001924","DE001925","DE001927","DE001928","DE001929","DE001930","DE001934","DE001935","DE001938","DE001942","DE001947","DE001950","DE001951","DE001957","DE001959","DE001961","DE001962","DE001963","DE001965","DE001966","DE001967","DE001971","DE001973","DE001976","DE001983","DE001985","DE001986","DE001987","DE001989","DE001991","DE001996","DE001997","DE002006","DE002007","DE002008","DE002010","DE002011","DE002014","DE002015","DE002016","DE002020","DE002022","DE002024","DE002025","DE002026","DE002030","DE002032","DE002034","DE002036","DE002038","DE002039","DE002041","DE002046","DE002047","DE002052","DE002054","DE002059","DE002061","DE002068","DE002069","DE002070","DE002072","DE002073","DE002075","DE002076","DE002077","DE002079","DE002080","DE002081","DE002087","DE002090","DE002092","DE002093","DE002094","DE002095","DE002097","DE002099","DE002100","DE002106","DE002109","DE002110","DE002113","DE002117","DE002118","DE002121","DE002122","DE002123","DE002124","DE002125","DE002127","DE002128","DE002129","DE002131","DE002133","DE002135","DE002143","DE002147","DE002148","DE002149","DE002154","DE002155","DE002157","DE002167","DE002173","DE002174","DE002175","DE002176","DE002181","DE002182","DE002183","DE002184","DE002185","DE002188","DE002189","DE002190","DE002191","DE002192","DE002195","DE002196","DE002200","DE002205","DE002207","DE002209","DE002210","DE002211","DE002212","DE002216","DE002217","DE002219","DE002222","DE002225","DE002227","DE002228","DE002230","DE002231","DE002234","DE002235","DE002236","DE002242","DE002243","DE002244","DE002245","DE002246","DE002250","DE002251","DE002252","DE002254","DE002255","DE002257","DE002258","DE002262","DE002263","DE002264","DE002265","DE002268","DE002271","DE002272","DE002273","DE002275","DE002276","DE002278","DE002279","DE002281","DE002282","DE002283","DE002284","DE002286","DE002298","DE002302","DE002304","DE002306","DE002309","DE002310","DE002312","DE002314","DE002317","DE002318","DE002319","DE002320","DE002322","DE002326","DE002327","DE002329","DE002330","DE002331","DE002332","DE002333","DE002334","DE002335","DE002336","DE002338","DE002339","DE002340","DE002342","DE002343","DE002344","DE002345","DE002347","DE002348","DE002349","DE002352","DE002353","DE002354","DE002355","DE002361","DE002362","DE002363","DE002365","DE002366","DE002368","DE002371","DE002372","DE002374","DE002375","DE002376","DE002377","DE002378","DE002380","DE002382","DE002383","DE002384","DE002385","DE002387","DE002388","DE002389","DE002392","DE002397","DE002398","DE002401","DE002402","DE002403","DE002406","DE002407","DE002408","DE002409","DE002411","DE002412","DE002413","DE002414","DE002415","DE002416","DE002417","DE002418","DE002419","DE002420","DE002423","DE002424","DE002425","DE002426","DE002427","DE002428","DE002429","DE002430","DE002431","DE002432","DE002433","DE002434","DE002435","DE002436","DE002437","DE002438","DE002439","DE002440","DE002441","DE002442","DE002443","DE002444","DE002445","DE002446","DE002450","DE002451","DE002452","DE002453","DE002454","DE002455","DE002456","DE002457","DE002458","DE002459","DE002460","DE002461","DE002462","DE002463","DE002464","DE002465","DE002466","DE002467","DE002468","DE002469","DE002470","DE002471","DE002472","DE002473","DE002474","DE002475","DE002476","DE002477","DE002479","DE002480","DE002481","DE002484","DE002486","DE002488","DE002489","DE002490","DE002492","DE002493","DE002494","DE002496","DE002499","DE002500","DE002501","DE002502","DE002503","DE002504","DE002505","DE002506","DE002507","DE002508","DE002509","DE002510","DE002511","DE002514","DE002517","DE002518","DE002519","DE002520","DE002521","DE002522","DE002523","DE002524","DE002525","DE002527","DE002528","DE002529","DE002530","DE002531","DE002532","DE002533","DE002534","DE002535","DE002536","DE002537","DE002538","DE002539","DE002540","DE002541","DE002542","DE002543","DE002544","DE002545","DE002546","DE002547","DE002548","DE002549","DE002550","DE002551","DE002552","DE002553","DE002554","DE002556","DE002557","DE002558","DE002560","DE002561","DE002566","DE002567","DE002568","DE002569","DE002570","DE002572","DE002573","DE002574","DE002575","DE002576","DE002577","DE002582","DE002583","DE002584","DE002586","DE002587","DE002588","DE002589","DE002591","DE002592","DE002594","DE002595","DE002598","DE002599","DE002600","DE002601","DE002602","DE002603","DE002604","DE002605","DE002606","DE002607","DE002608","DE002609","DE002610","DE002611","DE002612","DE002613","DE002615","DE002617","DE002620","DE002623","DE002624","DE002625","DE002626","DE002627","DE002628","DE002629","DE002630","DE002631","DE002632","DE002633","DE002634","DE002636","DE002637","DE002638","DE002640","DE002642","DE002643","DE002644","DE002645","DE002646","DE002647","DE002648","DE002649","DE002650","DE002652","DE002654","DE002655","DE002656","DE002657","DE002658","DE002660","DE002661","DE002662","DE002663","DE002664","DE002665","DE002666","DE002667","DE002668","DE002669","DE002670","DE002671","DE002674","DE002675","DE002676","DE002677","DE002678","DE002679","DE002680","DE002681","DE002682","DE002683","DE002684","DE002686","DE002688","DE002689","DE002690","DE002692","DE002693","DE002696","DE002697","DE002698","DE002699","DE002700","DE002701","DE002702","DE002703","DE002704","DE002705","DE002709","DE002710","DE002712","DE002713","DE002714","DE002718","DE002720","MM102083","MM102500","MM103187","MM103230","MM103923","MM104022","MM104186","MM106070","MM107658","MM111473","MM111982","MM116479","MM116560","MM116641","MM116913","MM117332","MM117575","MM117851","MM117984","MM118108","MM119055","MM119424","MM119715","MM119994","MM120270","MM120641","MM120655","MM121174","MM121183","MM121448","MM121483","MM122541","MM122910","MM123651","MM124107","MM125865","MM126216","MM127053","MM130938","MM147406","MM148261","MM149225","MM149243","MM149583","MM149748","MM150137","MM150682","MM150877","MM151212","MM151351","MM153900","MM153965","MM154107","MM154324","MM154648","MM156113","MM156448","MM157389","MM157741","MM157856","MM157947","MM158070","MM158631","MM159277","MM159812","MM160248","MM162246","MM162623","MM162719","MM162993","MM163013","MM163197","MM163297","MM163703","MM163960","MM164016","MM166874","MM167416","MM168080","MM171457","MM172646","MM173357","MM174508","MM176013","MM176199","MM176415","MM176494","MM176522","MM176529","MM176712","MM176795","MM177371","MM177627","MM178792","MM182204","MM182507","MM182509","MM182659","MM183755","MM184248","MM186379","MM186882","MM187786","MM189223","MM214091","MM214093","MM215064","MM215344","MM215352","MM223664","MM223821","MM224070","MM224951","MM225084","MM225290","MM225851","MM225926","MM226134","MM226246","MM227161","MM227312","MM227957","MM228252","MM228512","MM230697","MM231409","MM231410","MM231880","MM231881","MM231904","MM231922","MM232198","MM232445","MM232665","MM232685","MM232983","MM233067","MM233119","MM233143","MM233705","MM234015","MM234424","MM234525","MM235170","MM235304","MM235475","MM235582","MM235655","MM235677","MM235821","MM235901","MM235977","MM235994","MM236415","MM236500","MM236527","MM236619","MM236670","MM236724","MM236753","MM236878","MM238069","MM238408","MM238710","MM238866","MM239036","MM239039","MM239068","MM239114","MM239363","MM240128","MM240185","MM240248","MM240320","MM240727","MM240955","MM241002","MM241109","MM241366","MM241597","MM241598","MM241692","MM241693","MM241981","MM242698","MM242775","MM242795","MM243170","MM243276","MM243704","MM243782","MM243891","MM243978","MM244023","MM244028","MM244121","MM244755","MM244848","MM245759","MM246966","MM247424","MM247522","MM247644","MM247698","MM247747","MM247892","MM249318","MM52681","MM52694","MM52699","MM52737","MM52885","MM52971","MM53015","MM53110","MM53119","MM53255","MM53519","MM53559","MM53744","MM53756","MM53783","MM53796","MM53840","MM53860","MM53866","MM54162","MM54256","MM54291","MM54360","MM54365","MM54578","MM54633","MM54634","MM54665","MM54668","MM54814","MM54858","MM55061","MM55142","MM55194","MM55213","MM55226","MM55269","MM55296","MM55391","MM55395","MM55413","MM55468","MM55487","MM55649","MM55681","MM55730","MM55818","MM55898","MM56009","MM56039","MM56063","MM56090","MM56161","MM56164","MM56251","MM56292","MM56296","MM56631","MM56792","MM56812","MM56817","MM56846","MM56853","MM56954","MM57123","MM57125","MM57226","MM57276","MM57492","MM57508","MM57524","MM57550","MM57608","MM57780","MM57857","MM57858","MM57908","MM57910","MM57972","MM58091","MM58118","MM58163","MM58326","MM58348","MM58349","MM58456","MM58479","MM58650","MM58706","MM58785","MM58865","MM59058","MM59129","MM59178","MM59448","MM59450","MM59490","MM59510","MM59514","MM59571","MM59706","MM59719","MM59723","MM59761","MM59820","MM59843","MM59934","MM59943","MM59976","MM59983","MM60116","MM60123","MM60160","MM60164","MM60215","MM60488","MM60687","MM60831","MM60836","MM60855","MM60989","MM60994","MM61110","MM61243","MM61588","MM61592","MM63450","MM63558","MM64431","MM64464","MM64468","MM64499","MM64554","MM64630","MM64704","MM64706","MM64707","MM64738","MM64949","MM65677","MM65755","MM65760","MM65907","MM65922","MM66191","MM66215","MM66483","MM66752","MM66894","MM67517","MM67731","MM68044","MM68325","MM68334","MM68464","MM68776","MM68793","MM68803","MM68810","MM68830","MM68915","MM68999","MM69036","MM69376","MM69420","MM69444","MM70367","MM70431","MM70566","MM70588","MM70617","MM70700","MM70981","MM71157","MM71173","MM71282","MM71401","MM71683","MM71695","MM72584","MM72867","MM73129","MM73532","MM73731","MM73849","MM73944","MM74172","MM74274","MM74433","MM74778","MM74799","MM74880","MM74881","MM74882","MM76044","MM76055","MM76085","MM76177","MM76290","MM76334","MM76357","MM76523","MM76727","MM76736","MM79646","MM79924","MM79930","MM80178","MM80339","MM80441","MM80656","MM81390","MM82208","MM82238","MM83301","MM83334","MM84199","MM84389","MM85243","MM85522","MM85531","MM85539","MM85583","MM85650","MM85776","MM87401","MM87821","MM87828","MM88048","MM88113","MM88616","MM88723","MM89087","MM89088","MM89193","MM89362","MM89571","MM89612","MM90041","MM90123","MM90124","MM90125","MM90137","MM90722","MM90917","NL77817476","ES000003","ES000004","ES000007","ES000008","ES000009","FI000047","FI000046","FI000045","FI000039","FI000038","FI000037","FI000034","FI000024","FI000023","FI000022","FI000021","FI000020","FI000019","FI000017","FI000016","FI000012","FI000010","FI000009","FI000007","FI000006","IT000001","IT000002","IT000003","IT000006","IT000007","IT000010","IT000013","IT000014","IT000015","IT000017","IT000018","IT000020","IT000021","IT000023","IT000024","IT000025","IT000026","IT000027","IT000028","IT000029","IT000030","IT000031","IT000033","IT000034","IT000036","IT000037","IT000038","IT000039","IT000040","IT000041","IT000042","IT000044","IT000045","IT000046","IT000047","IT000048","IT000049","IT000050","IT000052","IT000053","IT000054","IT000055","IT000057","IT000058","IT000059","IT000062","IT000063","IT000064","IT000065","IT000066","IT000067","IT000068","IT000069","IT000070","IT000072","IT000073","IT000074","IT000075","IT000077","IT000078","IT000079","IT000080","IT000081","IT000084","IT000085","IT000086","IT000088","IT000089","IT000090","IT000091","IT000092","IT000093","IT000095","IT000096","IT000097","IT000098","IT000099","IT000100","IT000101","IT000102","IT000103","IT000104","IT000105","IT000106","IT000110","IT000111","IT000112","IT000114","IT000115","IT000116","IT000117","IT000118","IT000119","IT000120","IT000121","IT000122","IT000123","IT000124","IT000125","IT000126","IT000127","IT000128","IT000129","IT000130","IT000131","IT000132","IT000133","IT000134","IT000135","IT000136","IT000137","IT000138","IT000139","IT000140","IT000141","IT000142","IT000143","IT000144","IT000145","IT000146","IT000147","IT000148","IT000149","IT000150","IT000151","IT000152","IT000153","IT000154","IT000155","IT000156","IT000157","IT000158","IT000159","IT000163","IT000164","IT000165","IT000166","IT000167","IT000168","IT000169","IT000171","IT000173","IT000176","IT000177","IT000178","IT000180","IT000181","IT000182","IT000183","IT000185","IT000186","IT000188","IT000191","IT000192","IT000193","IT000196","IT000197","IT000198","IT000199","IT000200","IT000201","IT000203","IT000204","IT000206","IT000207","IT000208","IT000209","IT000210","IT000211","IT000212","IT000214","IT000216","IT000217","IT000219","IT000220","IT000221","IT000222","IT000223","IT000224","IT000225","IT000226","IT000227","IT000230","IT000231","IT000234","IT000235","IT000236","IT000238","IT000241","IT000242","IT000243","IT000245","IT000246","IT000247","IT000248","IT000250","IT000252","IT000253","IT000254","IT000257","IT000260","IT000261","IT000262","IT000263","IT000264","IT000267","IT000268","IT000269","IT000270","IT000271","IT000272","IT000273","IT000274","IT000275","IT000276","IT000277","IT000278","IT000279","IT000281","IT000282","IT000283","IT000284","IT000285","IT000287","IT000288","IT000292","IT000293","IT000294","IT000295","IT000296","IT000297","IT000298","IT000299","IT000300","IT000301","IT000302","IT000306","IT000308","IT000309","IT000310","IT000311","IT000312","IT000313","IT000314","IT000315","IT000316","IT000318","IT000319","IT000320","IT000322","IT000323","IT000326","IT000327","IT000328","IT000329","IT000331","IT000332","IT000333","IT000334","IT000335","IT000336","IT000341","IT000342","IT000343","IT000344","IT000347","IT000348","IT000349","IT000351","IT000353","IT000354","IT000355","IT000356","IT000357","IT000358","IT000361","IT000362","IT000363","IT000364","IT000365","IT000367","IT000368","IT000371","IT000372","IT000373","IT000374","IT000375","IT000377","IT000378","IT000379","IT000382","IT000383","IT000385","IT000386","IT000389","IT000390","IT000391","IT000392","IT000393","IT000394","IT000395","IT000396","IT000397","IT000398","IT000399","IT000400","IT000401","IT000404","IT000405","IT000406","IT000407","IT000410","IT000411","IT000412","IT000413","IT000414","IT000415","IT000420","IT000421","IT000422","IT000423","IT000424","IT000425","IT000426","IT000428","IT000429","IT000430","IT000432","IT000433","IT000434","IT000435","IT000436","IT000437","IT000438","IT000439","IT000440","IT000443","IT000444","IT000445","IT000446","IT000447","IT000448","IT000449","IT000450","IT000451","IT000453","IT000455","IT000456","IT000457","IT000458","IT000460","IT000461","IT000462","IT000465","IT000466","IT000467","IT000469","IT000470","IT000472","IT000473","IT000474","IT000477","IT000479","IT000481","IT000482","IT000487","IT000488","IT000489","IT000491","IT000493","IT000495","IT000496","IT000497","IT000498","IT000499","IT000501","IT000502","IT000503","IT000504","IT000505","IT000506","IT000507","IT000508","IT000510","IT000512","IT000513","IT000514","IT000515","IT000516","IT000517","IT000518","IT000519","IT000520","IT000521","IT000522","IT000523","IT000524","IT000525","IT000527","IT000528","IT000529","IT000530","IT000532","IT000534","IT000535","IT000536","IT000538","IT000539","IT000541","IT000543","IT000545","IT000546","IT000547","IT000548","IT000549","IT000550","IT000551","IT000552","IT000553","IT000555","IT000556","IT000557","IT000558","IT000559","IT000560","IT000561","IT000562","IT000564","IT000567","IT000568","IT000571","IT000573","IT000574","IT000575","IT000576","IT000577","IT000578","IT000579","IT000581","IT000582","IT000583","IT000584","IT000586","IT000587","IT000588","IT000589","IT000590","IT000591","IT000592","IT000593","IT000594","IT000596","IT000597","IT000599","IT000600","IT000601","IT000602","IT000603","IT000604","IT000605","IT000606","IT000607","IT000608","IT000609","IT000610","IT000611","IT000612","IT000613","IT000615","IT000616","IT000617","IT000618","IT000621","IT000622","IT000623","IT000624","IT000625","IT000626","IT000627","IT000628","IT000629","IT000630","IT000631","IT000633","IT000634","IT000635","IT000636","IT000638","IT000639","IT000640","IT000641","IT000642","IT000644","IT000646","IT000648","IT000649","IT000651","IT000652","IT000653","IT000654","IT000655","IT000657","IT000658","IT000659","IT000660","IT000662","IT000663","IT000667","IT000668","IT000670","IT000672","IT000673","IT000676","IT000677","IT000678","IT000679","IT000680","IT000681","IT000683","IT000684","IT000685","IT000686","IT000687","IT000689","IT000690","IT000691","IT000692","IT000693","IT000694","IT000695","IT000696","IT000697","IT000701","IT000702","IT000703","IT000704","IT000705","IT000706","IT000707","IT000709","IT000710","IT000711","IT000713","IT000714","IT000715","IT000718","IT000719","IT000720","IT000724","IT000728","IT000729","IT000730","IT000731","IT000732","IT000733","IT000734","IT000736","IT000737","IT000738","IT000739","IT000740","IT000741","IT000743","IT000745","IT000746","IT000752","IT000753","IT000754","IT000755","IT000756","IT000757","IT000758","IT000759","IT000761","IT000762","IT000763","IT000766","IT000767","IT000768","IT000770","IT000771","IT000773","IT000774","IT000775","IT000776","IT000777","IT000778","IT000779","IT000780","IT000781","IT000783","IT000784","IT000787","IT000788","IT000789","IT000790","IT000791","IT000792","IT000793","IT000794","IT000795","IT000798","IT000799","IT000800","IT000801","IT000802","IT000803","IT000804","IT000805","IT000806","IT000807","IT000808","IT000809","IT000810","IT000811","IT000812","IT000813","IT000815","IT000816","IT000817","IT000818","IT000820","IT000821","IT000823","IT000824","IT000825","IT000826","IT000827","IT000829","IT000830","IT000831","IT000832","IT000833","IT000835","IT000836","IT000837","IT000838","IT000839","IT000840","IT000841","IT000843","IT000844","IT000845","IT000846","IT000847","IT000848","IT000849","IT000850","IT000852","IT000853","IT000854","IT000856","IT000857","IT000858","IT000859","IT000860","IT000863","IT000864","IT000865","IT000866","IT000867","IT000868","IT000869","IT000870","IT000872","IT000874","IT000875","IT000876","IT000877","IT000880","IT000881","IT000884","IT000885","IT000887","IT000888","IT000889","IT000890","IT000891","IT000892","IT000893","IT000894","IT000895","IT000898","IT000899","IT000900","IT000901","IT000902","IT000903","IT000905","IT000906","IT000907","IT000908","IT000911","IT000912","IT000913","IT000914","IT000915","IT000916","IT000917","IT000919","IT000920","IT000922","IT000923","IT000924","IT000926","IT000927","IT000928","IT000929","IT000930","IT000932","IT000933","IT000936","IT000938","IT000939","IT000940","IT000943","IT000944","IT000947","IT000949","IT000950","IT000951","IT000953","IT000954","IT000955","IT000956","IT000957","IT000958","IT000959","IT000960","IT000961","IT000962","IT000963","IT000964","IT000965","IT000967","IT000968","IT000969","IT000970","IT000972","IT000973","IT000974","IT000976","IT000977","IT000978","IT000980","IT000982","IT000984","IT000988","IT000989","IT000990","IT000991","IT000992","IT000993","IT000995","IT000999","IT001000","IT001003","IT001004","IT001006","IT001007","IT001008","IT001009","IT001010","IT001011","IT001012","IT001013","IT001014","IT001015","IT001016","IT001017","IT001018","IT001019","IT001020","IT001021","IT001022","IT001023","IT001024","IT001025","IT001026","IT001027","IT001028","IT001030","IT001031","IT001032","IT001033","IT001036","IT001037","IT001039","IT001040","IT001041","IT001042","IT001045","IT001046","IT001047","IT001048","IT001049","IT001050","IT001052","IT001053","IT001054","IT001055","IT001056","IT001057","IT001058","IT001060","IT001062","IT001063","IT001065","IT001066","IT001067","IT001068","IT001069","IT001070","IT001071","IT001073","IT001074","IT001075","IT001078","IT001079","IT001080","IT001081","IT001083","IT001084","IT001086","IT001087","IT001088","IT001089","IT001091","IT001092","IT001093","IT001094","IT001095","IT001096","IT001097","IT001099","IT001100","IT001101","IT001102","IT001103","IT001104","IT001106","IT001107","IT001109","IT001111","IT001112","IT001114","IT001116","IT001117","IT001119","IT001122","IT001126","IT001127","IT001129","IT001134","IT001135","IT001136","IT001137","IT001138","IT001139","IT001140","IT001141","IT001142","IT001149","IT001150","IT001153","IT001154","IT001155","IT001156","IT001157","IT001158","IT001159","IT001160","IT001161","IT001163","IT001164","IT001166","IT001167","IT001168","IT001169","IT001170","IT001171","IT001172","IT001174","IT001175","IT001176","IT001178","IT001179","IT001180","IT001181","IT001182","IT001183","IT001184","IT001185","IT001186","IT001187","IT001188","IT001189","IT001190","IT001191","IT001192","IT001193","IT001194","IT001195","IT001196","IT001197","IT001198","IT001199","IT001200","IT001201","IT001202","IT001203","IT001204","IT001205","IT001207","IT001208","IT001209","IT001210","IT001211","IT001212","IT001213","IT001214","IT001215","IT001216","IT001217","IT001218","IT001219","IT001220","IT001221","IT001223","IT001224","IT001225","IT001227","IT001229","IT001232","IT001233","IT001234","IT001235","IT001236","IT001237","IT001238","IT001240","IT001241","IT001242","IT001243","IT001244","IT001245","IT001246","IT001247","IT001248","IT001249","IT001250","IT001251","IT001252","IT001253","IT001254","IT001255","IT001256","IT001257","IT001258","IT001259","IT001260","IT001261","IT001262","IT001263","IT001265","IT001266","IT001268","IT001270","IT001271","IT001272","IT001273","IT001274","IT001275","IT001276","IT001277","IT001278","IT001279","IT001281","IT001282","IT001283","IT001284","IT001285","IT001286","IT001287","IT001288","IT001289","IT001291","IT001292","IT001293","IT001294","IT001295","IT001299","IT001300","IT001301","IT001302","IT001303","IT001307","IT001308","IT001309","IT001311","IT001312","IT001313","IT001314","IT001315","IT001316","IT001317","IT001318","IT001319","IT001322","IT001324","IT001325","IT001326","IT001327","IT001328","IT001329","IT001330","IT001331","IT001333","IT001334","IT001337","IT001338","IT001339","IT001340","IT001341","IT001342","IT001343","IT001344","IT001346","IT001348","IT001349","IT001351","IT001352","IT001353","IT001354","IT001355","IT001356","IT001357","IT001358","IT001359","IT001360","IT001362","IT001363","IT001364","IT001365","IT001367","IT001368","IT001369","IT001370","IT001371","IT001372","IT001373","IT001374","IT001375","IT001376","IT001377","IT001378","IT001379","IT001380","IT001388","IT001389","IT001390","IT001394","IT001396","IT001397","IT001400","IT001401","IT001402","IT001403","IT001404","IT001405","IT001406","IT001407","IT001408","IT001409","IT001410","IT001411","IT001413","IT001414","IT001415","IT001416","IT001417","IT001418","IT001420","IT001421","IT001423","IT001424","IT001425","IT001426","IT001427","IT001428","IT001429","IT001430","IT001431","IT001432","IT001433","IT001434","IT001435","IT001436","IT001437","IT001439","IT001441","IT001442","IT001446","IT001447","IT001448","IT001449","IT001450","IT001452","IT001457","IT001458","IT001459","IT001460","IT001461","IT001462","IT001463","IT001464","IT001465","IT001466","IT001467","IT001469","IT001470","IT001471","IT001472","IT001473","IT001474","IT001475","IT001477","IT001478","IT001479","IT001480","IT001481","IT001482","IT001484","IT001485","IT001487","IT001488","IT001489","IT001490","IT001491","IT001492","IT001493","IT001494","IT001495","IT001497","IT001498","IT001500","IT001501","IT001503","IT001504","IT001505","IT001507","IT001508","IT001509","IT001510","IT001511","IT001512","IT001513","IT001514","IT001515","IT001516","IT001517","IT001518","IT001519","IT001520","IT001521","IT001522","IT001523","IT001524","IT001525","IT001530","IT001532","IT001533","IT001534","IT001535","IT001536","IT001537","IT001538","IT001539","IT001540","IT001541","IT001543","IT001544","IT001545","IT001546","IT001547","IT001548","IT001549","IT001552","IT001553","IT001554","IT001555","IT001558","IT001559","IT001560","IT001562","IT001563","IT001564","IT001565","IT001569","IT001570","IT001571","IT001572","IT001574","IT001575","IT001578","IT001579","IT001580","IT001581","IT001583","IT001584","IT001586","IT001587","IT001589","IT001590","IT001591","IT001592","IT001593","IT001594","IT001595","IT001597","IT001598","IT001599","IT001602","IT001603","IT001604","IT001605","IT001606","IT001608","IT001610","IT001611","IT001612","IT001613","IT001615","IT001616","IT001619","IT001620","IT001621","IT001622","IT001624","IT001625","IT001626","IT001627","IT001628","IT001629","IT001630","IT001631","IT001632","IT001633","IT001634","IT001635","IT001636","IT001637","IT001638","IT001639","IT001640","IT001641","IT001642","IT001643","IT001644","IT001645","IT001647","IT001648","IT001649","IT001650","IT001651","IT001652","IT001653","IT001654","IT001655","IT001656","IT001657","IT001658","IT001659","IT001660","IT001661","IT001662","IT001663","IT001664","IT001666","IT001667","IT001668","IT001669","IT001671","IT001672","IT001673","IT001675","IT001677","IT001678","IT001679","IT001680","IT001681","IT001684","IT001685","IT001686","IT001688","IT001689","IT001697","IT001698","IT001699","IT001700","IT001701","IT001703","IT001704","IT001706","IT001707","IT001710","IT001711","IT001712","IT001713","IT001714","IT001716","IT001717","IT001718","IT001719","IT001720","IT001722","IT001723","IT001725","IT001727","IT001728","IT001729","IT001731","IT001732","IT001733","IT001734","IT001735","IT001736","IT001737","IT001738","IT001739","IT001740","IT001741","IT001742","IT001743","IT001744","IT001746","IT001748","IT001749","IT001751","IT001752","IT001753","IT001754","IT001756","IT001757","IT001758","IT001759","IT001760","IT001761","IT001763","IT001764","IT001765","IT001767","IT001768","IT001769","IT001771","IT001772","IT001773","IT001774","IT001775","IT001776","IT001777","IT001779","IT001781","IT001782","IT001783","IT001784","IT001785","IT001786","IT001788","IT001789","IT001792","IT001793","IT001794","IT001795","IT001796","IT001797","IT001798","IT001799","IT001800","IT001804","IT001805","IT001806","IT001808","IT001809","IT001811","IT001814","IT001815","IT001816","IT001817","IT001820","IT001821","IT001822","IT001823","IT001824","IT001825","IT001826","IT001828","IT001829","IT001830","IT001831","IT001832","IT001834","IT001835","IT001836","IT001837","IT001838","IT001839","IT001840","IT001841","IT001842","IT001843","IT001845","IT001846","IT001847","IT001849","IT001850","IT001851","IT001853","IT001854","IT001855","IT001856","IT001857","IT001859","IT001860","IT001861","IT001862","IT001863","IT001864","IT001865","IT001866","IT001869","IT001870","IT001871","IT001872","IT001873","IT001874","IT001876","IT001877","IT001878","IT001879","IT001881","IT001882","IT001885","IT001886","IT001887","IT001888","IT001889","IT001890","IT001891","IT001894","IT001895","IT001897","IT001898","IT001899","IT001902","IT001903","IT001904","IT001905","IT001906","IT001907","IT001910","IT001911","IT001912","IT001913","IT001914","IT001915","IT001916","IT001919","IT001920","IT001921","IT001924","IT001925","IT001926","IT001927","IT001928","IT001929","IT001930","IT001931","IT001932","IT001934","IT001935","IT001936","IT001938","IT001939","IT001940","IT001941","IT001942","IT001943","IT001944","IT001945","IT001947","IT001948","IT001949","IT001950","IT001952","IT001954","IT001955","IT001956","IT001957","IT001958","IT001959","IT001962","IT001963","IT001964","IT001965","IT001966","IT001967","IT001968","IT001969","IT001970","IT001972","IT001973","IT001974","IT001975","IT001976","IT001977","IT001978","IT001979","IT001980","IT001982","IT001984","IT001985","IT001986","IT001987","IT001991","IT001992","IT001995","IT001997","IT001998","IT001999","IT002000","IT002001","IT002002","IT002004","IT002006","IT002007","IT002008","IT002010","IT002011","IT002012","IT002013","IT002014","IT002015","IT002016","IT002017","IT002018","IT002022","IT002023","IT002025","IT002026","IT002027","IT002029","IT002030","IT002031","IT002032","IT002033","IT002034","IT002035","IT002037","IT002038","IT002039","IT002040","IT002042","IT002043","IT002046","IT002047","IT002048","IT002049","IT002050","IT002053","IT002054","IT002056","IT002057","IT002058","IT002059","IT002060","IT002061","IT002062","IT002064","IT002068","IT002071","IT002072","IT002074","IT002076","IT002077","IT002078","IT002080","IT002081","IT002082","IT002085","IT002087","IT002089","IT002091","IT002092","IT002093","IT002094","IT002095","IT002096","IT002098","IT002099","IT002100","IT002102","IT002103","IT002104","IT002105","IT002107","IT002108","IT002109","IT002110","IT002112","IT002113","IT002114","IT002115","IT002116","IT002117","IT002118","IT002120","IT002121","IT002122","IT002124","IT002127","IT002128","IT002130","IT002131","IT002132","IT002133","IT002134","IT002139","IT002140","IT002143","IT002144","IT002145","IT002146","IT002147","IT002148","IT002149","IT002150","IT002151","IT002153","IT002154","IT002155","IT002157","IT002161","IT002162","IT002163","IT002164","IT002165","IT002166","IT002168","IT002169","IT002171","IT002173","IT002174","IT002175","IT002176","IT002177","IT002178","IT002179","IT002180","IT002181","IT002182","IT002183","IT002184","IT002186","IT002188","IT002189","IT002191","IT002192","IT002193","IT002194","IT002198","IT002199","IT002200","IT002201","IT002202","IT002204","IT002205","IT002207","IT002208","IT002209","IT002210","IT002212","IT002213","IT002214","IT002215","IT002216","IT002217","IT002219","IT002220","IT002222","IT002223","IT002224","IT002225","IT002226","IT002228","IT002229","IT002230","IT002231","IT002232","IT002233","IT002234","IT002235","IT002236","IT002238","IT002241","IT002245","IT002246","IT002247","IT002248","IT002249","IT002250","IT002251","IT002252","IT002255","IT002256","IT002257","IT002259","IT002260","IT002261","IT002262","IT002263","IT002268","IT002269","IT002270","IT002271","IT002273","IT002275","IT002276","IT002278","IT002279","IT002280","IT002281","IT002283","IT002287","IT002288","IT002289","IT002292","IT002293","IT002294","IT002295","IT002296","IT002297","IT002298","IT002299","IT002300","IT002301","IT002304","IT002306","IT002307","IT002309","IT002310","IT002311","IT002312","IT002313","IT002314","IT002315","IT002316","IT002318","IT002319","IT002320","IT002321","IT002322","IT002323","IT002324","IT002325","IT002326","IT002327","IT002328","IT002332","IT002333","IT002334","IT002336","IT002337","IT002338","IT002339","IT002341","IT002342","IT002343","IT002344","IT002345","IT002346","IT002347","IT002348","IT002350","IT002351","IT002352","IT002353","IT002354","IT002355","IT002356","IT002357","IT002358","IT002359","IT002360","IT002361","IT002362","IT002363","IT002365","IT002366","IT002367","IT002368","IT002369","IT002370","IT002371","IT002372","IT002373","IT002375","IT002376","IT002378","IT002379","IT002380","IT002381","IT002382","IT002383","IT002384","IT002385","IT002386","IT002387","IT002388","IT002389","IT002390","IT002391","IT002392","IT002393","IT002394","IT002396","IT002398","IT002399","IT002400","IT002401","IT002402","IT002403","IT002404","IT002406","IT002407","IT002408","IT002409","IT002410","IT002412","IT002413","IT002414","IT002415","IT002416","IT002418","IT002421","IT002423","IT002424","IT002425","IT002426","IT002428","IT002429","IT002430","IT002433","IT002434","IT002435","IT002436","IT002437","IT002438","IT002441","IT002442","IT002443","IT002446","IT002449","IT002450","IT002451","IT002452","IT002453","IT002454","IT002455","IT002456","IT002461","IT002463","IT002464","IT002465","IT002466","IT002467","IT002468","IT002469","IT002470","IT002471","IT002472","IT002473","IT002474","IT002475","IT002476","IT002477","IT002478","IT002479","IT002480","IT002482","IT002483","IT002484","IT002486","IT002487","IT002488","IT002489","IT002490","IT002491","IT002492","IT002493","IT002494","IT002496","IT002497","IT002498","IT002499","IT002500","IT002501","IT002502","IT002503","IT002505","IT002506","IT002508","IT002509","IT002511","IT002512","IT002513","IT002514","IT002515","IT002516","IT002517","IT002519","IT002520","IT002521","IT002522","IT002523","IT002525","IT002526","IT002527","IT002528","IT002529","IT002531","IT002532","IT002533","IT002534","IT002535","IT002536","IT002537","IT002538","IT002539","IT002540","IT002541","IT002542","IT002543","IT002544","IT002545","IT002546","IT002547","IT002548","IT002551","IT002552","IT002553","IT002554","IT002555","IT002556","IT002558","IT002559","IT002560","IT002601","IT002603","IT002604","IT002608","IT002609","IT002610","IT002611","IT002612","IT002613","IT002614","IT002615","IT002616","IT002617","IT002619","IT002620","IT002622","IT002623","IT002624","IT002625","IT002626","IT002627","IT002628","IT002629","IT002631","IT002633","IT002634","IT002635","IT002636","IT002637","IT002638","IT002639","IT002640","IT002642","IT002643","IT002644","IT002645","IT002646","IT002648","IT002649","IT002650","IT002652","IT002653","IT002654","IT002656","IT002658","IT002659","IT002660","IT002662","IT002663","IT002664","IT002665","IT002666","IT002667","IT002668","IT002669","IT002671","IT002672","IT002674","IT002677","IT002679","IT002681","IT002682","IT002683","IT002684","IT002687","IT002689","IT002690","IT002691","IT002692","IT002694","IT002695","IT002696","IT002697","IT002698","IT002699","IT002700","IT002701","IT002702","IT002704","IT002705","IT002706","IT002708","IT002709","IT002710","IT002711","IT002712","IT002714","IT002716","IT002717","IT002718","IT002720","IT002721","IT002722","IT002723","IT002724","IT002726","IT002727","IT002728","IT002729","IT002730","IT002731","IT002732","IT002733","IT002735","IT002736","IT002738","IT002739","IT002740","IT002741","IT002743","IT002744","IT002746","IT002748","IT002749","IT002750","IT002751","IT002752","IT002753","IT002754","IT002755","IT002757","IT002758","IT002759","IT002761","IT002764","IT002766","IT002767","IT002768","IT002769","IT002771","IT002772","IT002773","IT002774","IT002775","IT002776","IT002777","IT002778","IT002779","IT002780","IT002781","IT002782","IT002783","IT002784","IT002785","IT002787","IT002788","IT002789","IT002791","IT002792","IT002793","IT002794","IT002795","IT002796","IT002797","IT002799","IT002800","IT002801","IT002802","IT002803","IT002804","IT002805","IT002806","IT002807","IT002808","IT002809","IT002810","IT002812","IT002813","IT002814","IT002816","IT002817","IT002818","IT002820","IT002822","IT002824","IT002826","IT002827","IT002828","IT002829","IT002830","IT002832","IT002835","IT002836","IT002837","IT002839","IT002840","IT002842","IT002844","IT002846","IT002847","IT002848","IT002849","IT002850","IT002851","IT002852","IT002854","IT002855","IT002856","IT002857","IT002858","IT002859","IT002860","IT002861","IT002862","IT002864","IT002865","IT002866","IT002868","IT002869","IT002871","IT002872","IT002873","IT002874","IT002875","IT002877","IT002878","IT002879","IT002880","IT002882","IT002884","IT002885","IT002886","IT002888","IT002889","IT002891","IT002892","IT002893","IT002894","IT002895","IT002896","IT002897","IT002900","IT002902","IT002903","IT002906","IT002907","IT002909","IT002910","IT002911","IT002912","IT002913","IT002915","IT002916","IT002917","IT002918","IT002920","IT002922","IT002924","IT002925","IT002926","IT002927","IT002929","IT002930","IT002931","IT002932","IT002933","IT002934","IT002935","IT002936","IT002937","IT002939","IT002941","IT002942","IT002943","IT002945","IT002946","IT002947","IT002948","IT002949","IT002950","IT002951","IT002952","IT002953","IT002954","IT002955","IT002956","IT002957","IT002958","IT002960","IT002961","IT002963","IT002964","IT002966","IT002967","IT002968","IT002971","IT002972","IT002973","IT002974","IT002976","IT002979","IT002980","IT002982","IT002983","IT002984","IT002985","IT002986","IT002987","IT002990","IT002993","IT002994","IT002996","IT002998","IT003000","IT003001","IT003002","IT003005","IT003006","IT003007","IT003008","IT003009","IT003010","IT003012","IT003014","IT003016","IT003017","IT003018","IT003021","IT003022","IT003024","IT003025","IT003026","IT003027","IT003029","IT003030","IT003031","IT003032","IT003033","IT003034","IT003035","IT003037","IT003039","IT003040","IT003046","IT003047","IT003048","IT003049","IT003050","IT003053","IT003054","IT003055","IT003056","IT003057","IT003058","IT003059","IT003062","IT003063","IT003064","IT003065","IT003068","IT003070","IT003071","IT003072","IT003073","IT003074","IT003076","IT003078","IT003079","IT003080","IT003081","IT003082","IT003085","IT003086","IT003087","IT003088","IT003089","IT003090","IT003091","IT003092","IT003093","IT003094","IT003095","IT003096","IT003097","IT003098","IT003099","IT003100","IT003101","IT003102","IT003103","IT003104","IT003105","IT003106","IT003108","IT003109","IT003110","IT003112","IT003114","IT003115","IT003117","IT003118","IT003119","IT003120","IT003121","IT003122","IT003123","IT003124","IT003125","IT003130","IT003131","IT003133","IT003134","IT003135","IT003136","IT003137","IT003138","IT003139","IT003142","IT003144","IT003145","IT003147","IT003148","IT003149","IT003150","IT003151","IT003154","IT003155","IT003156","IT003157","IT003158","IT003159","IT003160","IT003161","IT003162","IT003163","IT003164","IT003166","IT003167","IT003168","IT003169","IT003171","IT003172","IT003173","IT003174","IT003176","IT003177","IT003178","IT003179","IT003180","IT003183","IT003184","IT003185","IT003186","IT003188","IT003189","IT003190","IT003191","IT003192","IT003193","IT003194","IT003195","IT003197","IT003198","IT003201","IT003202","IT003203","IT003205","IT003206","IT003207","IT003209","IT003211","IT003212","IT003214","IT003215","IT003216","IT003218","IT003219","IT003220","IT003221","IT003222","IT003223","IT003224","IT003225","IT003226","IT003227","IT003228","IT003229","IT003230","IT003231","IT003232","IT003233","IT003234","IT003235","IT003238","IT003239","IT003240","IT003241","IT003242","IT003244","IT003245","IT003246","IT003247","IT003250","IT003251","IT003252","IT003253","IT003255","IT003256","IT003257","IT003258","IT003259","IT003261","IT003262","IT003263","IT003264","IT003265","IT003266","IT003267","IT003268","IT003269","IT003270","IT003271","IT003272","IT003273","IT003274","IT003275","IT003276","IT003277","IT003278","IT003279","IT003280","IT003281","IT003282","IT003283","IT003284","IT003285","IT003286","IT003287","IT003288","IT003289","IT003290","IT003291","IT003292","IT003293","IT003294","IT003295","IT003296","IT003297","IT003298","IT003299","IT003300","IT003301","IT003302","IT003303","IT003304","IT003305","IT003306","IT003307","IT003308","IT003309","IT003310","IT003311","IT003312","IT003314","IT003315","IT003316","IT003317","IT003318","IT003319","IT003320","IT003321","IT003322","IT003323","IT003324","IT003325","IT003326","IT003327","IT003328","IT003329","IT003330","IT003331","IT003332","IT003333","IT003334","IT003335","IT003336","IT003337","IT003338","IT003339","IT003340","IT003341","IT003342","IT003343","IT003344","IT003345","IT003346","IT003347","IT003349","IT003350","IT003351","IT003352","IT003353","IT003354","IT003355","IT003356","IT003357","IT003358","IT003359","IT003360","IT003361","IT003362","IT003363","IT003364","IT003365","IT003366","IT003367","IT003368","IT003369","IT003370","NL000002","NL000562","NL000005","NL000006","NL000599","NL000007","NL000025","NL000027","NL000028","NL000561","NL000030","NL000031","NL000032","NL000035","NL000036","NL000037","NL000040","NL000042","NL000043","NL000045","NL000567","NL000049","NL000050","NL000052","NL000621","NL000053","NLAK968","NL000556","NL000054","NL000055","NL000593","NL77835526","NL000057","NL000058","NL000065","NL000066","NL000067","NL000069","NL000072","NL000074","NL000078","NL000083","NL52224137064","NL000085","NL000091","NL000115","NL000117","NL000159","NL000162","NL000578","NL000164","NL8868655972","NL000165","NL000168","NL000169","NL000170","NL000171","NL51806531476","NL77843331","NL000178","NL000179","NL000570","NL77833228","NL000182","NL000183","NL47540129441","NL000185","NL000186","NL000187","NL000592","NL000557","NL000188","NL000191","NL000555","NL000194","NL000196","NL000568","NL000200","NL000202","NL000203","NL000591","NL000204","NL000205","NL29019664454","NL000212","NL000213","NL000214","NL000215","NL000216","NL000617","NL000218","NL000575","NL000220","NL000221","NL000222","NL000224","NL000225","NL000226","NL000227","NL000232","NL000233","NL000236","NL000237","NL000238","NL000239","NL000240","NL000241","NL000242","NL000244","NL000589","NL38556673392","NL000558","NL000247","NL000249","NL000250","NL000252","NL000257","NL000258","NL000584","NL7117497070","NL000260","NL000262","NL000263","NL000265","NL000267","NL000271","NL000273","NL77831279","NL000276","NL000277","NL000279","NL50563761957","NL000281","NL000560","NLAK234","NL000282","NL000283","NL000284","NL61543462483","NL000287","NL000290","NL000294","NL000295","NL000296","NL000620","NL000586","NL000595","NL000299","NL000300","NL000563","NL000301","NL000576","NL000307","NL000308","NL000597","NL000310","NL000311","NL77809599","NL66723536269","NL000564","NL000317","NL000318","NL000319","NL000321","NL000324","NL000328","NL000329","NL000331","NL000332","NL000337","NL000342","NL000346","NL000350","NL000352","NL000354","NL35619318086","NL000573","NL000355","NL000356","NL000358","NL000364","NL000365","NL000615","NL000367","NL000368","NL000369","NL000565","NL000370","NL000372","NL000373","NL77841323","NL000374","NL000377","NL000378","NL000387","NL000388","NL000390","NL000394","NL000406","NL000408","NL25853548182","NL000413","NL000414","NL000415","NL000559","NL000416","NL000418","NL000422","NL000424","NL51350449598","NL000590","NL000425","NL000426","NL000604","NL000427","NL000428","NL000431","NL000432","NL000434","NL000602","NL000550","NL000437","NL000438","NL000440","NL000441","NL000442","NL000443","NL000606","NL000446","NL000447","NL000448","NL000449","NL000450","NL000451","NL000452","NL000453","NL000455","NL000457","NL000458","NL000459","NL000612","NL000463","NL000466","NL000467","NL000603","NL000470","NL000474","NL000476","NL000479","NL33850562804","NL000480","NL000482","NL000483","NL000487","NL000492","NL000499","NL000500","NL000503","NL000505","NL000610","NL000509","NL000511","NL58933567561","NL000514","NL000515","NL000516","NL000517","NL000518","NL000519","NL000520","NLAK1054","NL000524","NL000526","NL47098664255","NL000531","NL000534","NL000535","NL000537","NL000538","NL000539","NL000540","NL000541","NL000543","NL000546","PL000002","PL000003","PL000008","PL000010","PL000012","PL000013","PL000014","PL000015","PL000016","PL000020","PL000021","PL000022","PL000023","PL000024","PL000025","PL000027","PL000028","PL000029","PL000031","PL000036","PL000037","PL000038","PL000039","PL000041","PL000042","PL000043","PL000044","PL000046","PL000047","PL000048","PL000049","PL000050","PL000051","PL000052","PL000056","PL000058","PL000060","PL000062","PL000064","PL000065","PL000066","PL000067","PL000070","PL000075","PL000077","PL000081","PL000085","PL000086","PL000090","PL000091","PL000092","PL000094","PL000096","PL000098","PL000099","PL000100","PL000103","PL000105","PL000107","PL000108","PL000110","PL000111","PL000112","PL000115","PL000118","PL000119","PL000123","PL000127","PL000128","PL000129","PL000130","PL000131","PL000133","PL000136","PL000138","PL000140","PL000141","PL000142","PL000143","PL000145","PL000147","PL000148","PL000149","PL000154","PL000156","PL000157","PL000158","PL000159","PL000161","PL000165","PL000170","PL000171","PL000173","PL000174","PL000175","PL000176","PL000177","PL000180","PL000181","PL000182","PL000183","PL000184","PL000186","PL000189","PL000190","PL000192","PL000193","PL000196","PL000198","PL000199","PL000200","PL000201","PL000204","PL000205","PL000209","PL000210","PL000211","PL000214","PL000215","PL000217","PL000219","PL000220","PL000221","PL000223","PL000225","PL000226","PL000227","PL000228","PL000229","PL000231","PL000233","PL000234","PL000237","PL000240","PL000241","PL000242","PL000243","PL000244","PL000250","PL000251","PL000253","PL000254","PL000255","PL000258","PL000259","PL000260","PL000262","PL000263","PL000264","PL000265","PL000271","PL000272","PL000273","PL000274","PL000277","PL000280","PL000281","PL000282","PL000283","PL000284","PL000285","PL000287","PL000289","PL000290","PL000292","PL000293","PL000295","PL000297","PL000298","PL000299","PL000300","PL000302","PL000303","PL000305","PL000306","PL000307","PL000308","PL000309","PL000310","PL000311","PL000312","PL000313","PL000314","PL000316","PL000317","PL000318","PL000319","PL000320","PL000321","PL000325","PL000326","PL000327","PL000328","PL000331","PL000333","PL000334","PL000336","PL000338","PL000339","PL000340","PL000346","PL000347","PL000348","PL000350","PL000351","PL000352","PL000353","PL000354","PL000356","PL000358","PL000364","PL000367","PL000368","PL000369","PL000371","PL000372","PL000373","PL000374","PL000375","PL000376","PL000378","PL000379","PL000380","PL000382","PL000383","PL000386","PL000387","PL000388","PL000389","PL000392","PL000394","PL000395","PL000398","PL000399","PL000400","PL000404","PL000406","PL000407","PL000408","PL000409","PL000410","PL000412","PL000413","PL000414","PL10237","PL11408","PL12238","PL14357","PL14829","PL15551","PL16249","PL16545","PL16681","SE0617","SE0516","SE0382","SE000015","SE000007","SE000006","SE000005"],["Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts","Missing from Contacts"]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>contact_key<\/th>\n <th>Account_External_Key<\/th>\n <th>account_key<\/th>\n <th>Result<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"filter":true,"order":[],"autoWidth":false,"orderClasses":false,"columnDefs":[{"orderable":false,"targets":0}]}},"evals":[],"jsHooks":[]}</script>
<div id="unique-accounts-1" class="section level4">
<h4>Unique Accounts</h4>
<div class="sourceCode" id="cb16"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a>op <span class="sc">|&gt;</span> </span>
<span id="cb16-2"><a href="#cb16-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">filter</span>(Result <span class="sc">==</span> <span class="st">&quot;Missing from Contacts&quot;</span>) <span class="sc">|&gt;</span> </span>
<span id="cb16-3"><a href="#cb16-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">select</span>(account_key) <span class="sc">|&gt;</span> <span class="fu">unique</span>() <span class="sc">|&gt;</span> </span>
<span id="cb16-4"><a href="#cb16-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">teapot</span>()</span></code></pre></div>
<div id="htmlwidget-48b0d09698bb01bb6338" style="width:100%;height:auto;" class="datatables html-widget"></div>
<script type="application/json" data-for="htmlwidget-48b0d09698bb01bb6338">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","107","108","109","110","111","112","113","114","115","116","117","118","119","120","121","122","123","124","125","126","127","128","129","130","131","132","133","134","135","136","137","138","139","140","141","142","143","144","145","146","147","148","149","150","151","152","153","154","155","156","157","158","159","160","161","162","163","164","165","166","167","168","169","170","171","172","173","174","175","176","177","178","179","180","181","182","183","184","185","186","187","188","189","190","191","192","193","194","195","196","197","198","199","200","201","202","203","204","205","206","207","208","209","210","211","212","213","214","215","216","217","218","219","220","221","222","223","224","225","226","227","228","229","230","231","232","233","234","235","236","237","238","239","240","241","242","243","244","245","246","247","248","249","250","251","252","253","254","255","256","257","258","259","260","261","262","263","264","265","266","267","268","269","270","271","272","273","274","275","276","277","278","279","280","281","282","283","284","285","286","287","288","289","290","291","292","293","294","295","296","297","298","299","300","301","302","303","304","305","306","307","308","309","310","311","312","313","314","315","316","317","318","319","320","321","322","323","324","325","326","327","328","329","330","331","332","333","334","335","336","337","338","339","340","341","342","343","344","345","346","347","348","349","350","351","352","353","354","355","356","357","358","359","360","361","362","363","364","365","366","367","368","369","370","371","372","373","374","375","376","377","378","379","380","381","382","383","384","385","386","387","388","389","390","391","392","393","394","395","396","397","398","399","400","401","402","403","404","405","406","407","408","409","410","411","412","413","414","415","416","417","418","419","420","421","422","423","424","425","426","427","428","429","430","431","432","433","434","435","436","437","438","439","440","441","442","443","444","445","446","447","448","449","450","451","452","453","454","455","456","457","458","459","460","461","462","463","464","465","466","467","468","469","470","471","472","473","474","475","476","477","478","479","480","481","482","483","484","485","486","487","488","489","490","491","492","493","494","495","496","497","498","499","500","501","502","503","504","505","506","507","508","509","510","511","512","513","514","515","516","517","518","519","520","521","522","523","524","525","526","527","528","529","530","531","532","533","534","535","536","537","538","539","540","541","542","543","544","545","546","547","548","549","550","551","552","553","554","555","556","557","558","559","560","561","562","563","564","565","566","567","568","569","570","571","572","573","574","575","576","577","578","579","580","581","582","583","584","585","586","587","588","589","590","591","592","593","594","595","596","597","598","599","600","601","602","603","604","605","606","607","608","609","610","611","612","613","614","615","616","617","618","619","620","621","622","623","624","625","626","627","628","629","630","631","632","633","634","635","636","637","638","639","640","641","642","643","644","645","646","647","648","649","650","651","652","653","654","655","656","657","658","659","660","661","662","663","664","665","666","667","668","669","670","671","672","673","674","675","676","677","678","679","680","681","682","683","684","685","686","687","688","689","690","691","692","693","694","695","696","697","698","699","700","701","702","703","704","705","706","707","708","709","710","711","712","713","714","715","716","717","718","719","720","721","722","723","724","725","726","727","728","729","730","731","732","733","734","735","736","737","738","739","740","741","742","743","744","745","746","747","748","749","750","751","752","753","754","755","756","757","758","759","760","761","762","763","764","765","766","767","768","769","770","771","772","773","774","775","776","777","778","779","780","781","782","783","784","785","786","787","788","789","790","791","792","793","794","795","796","797","798","799","800","801","802","803","804","805","806","807","808","809","810","811","812","813","814","815","816","817","818","819","820","821","822","823","824","825","826","827","828","829","830","831","832","833","834","835","836","837","838","839","840","841","842","843","844","845","846","847","848","849","850","851","852","853","854","855","856","857","858","859","860","861","862","863","864","865","866","867","868","869","870","871","872","873","874","875","876","877","878","879","880","881","882","883","884","885","886","887","888","889","890","891","892","893","894","895","896","897","898","899","900","901","902","903","904","905","906","907","908","909","910","911","912","913","914","915","916","917","918","919","920","921","922","923","924","925","926","927","928","929","930","931","932","933","934","935","936","937","938","939","940","941","942","943","944","945","946","947","948","949","950","951","952","953","954","955","956","957","958","959","960","961","962","963","964","965","966","967","968","969","970","971","972","973","974","975","976","977","978","979","980","981","982","983","984","985","986","987","988","989","990","991","992","993","994","995","996","997","998","999","1000","1001","1002","1003","1004","1005","1006","1007","1008","1009","1010","1011","1012","1013","1014","1015","1016","1017","1018","1019","1020","1021","1022","1023","1024","1025","1026","1027","1028","1029","1030","1031","1032","1033","1034","1035","1036","1037","1038","1039","1040","1041","1042","1043","1044","1045","1046","1047","1048","1049","1050","1051","1052","1053","1054","1055","1056","1057","1058","1059","1060","1061","1062","1063","1064","1065","1066","1067","1068","1069","1070","1071","1072","1073","1074","1075","1076","1077","1078","1079","1080","1081","1082","1083","1084","1085","1086","1087","1088","1089","1090","1091","1092","1093","1094","1095","1096","1097","1098","1099","1100","1101","1102","1103","1104","1105","1106","1107","1108","1109","1110","1111","1112","1113","1114","1115","1116","1117","1118","1119","1120","1121","1122","1123","1124","1125","1126","1127","1128","1129","1130","1131","1132","1133","1134","1135","1136","1137","1138","1139","1140","1141","1142","1143","1144","1145","1146","1147","1148","1149","1150","1151","1152","1153","1154","1155","1156","1157","1158","1159","1160","1161","1162","1163","1164","1165","1166","1167","1168","1169","1170","1171","1172","1173","1174","1175","1176","1177","1178","1179","1180","1181","1182","1183","1184","1185","1186","1187","1188","1189","1190","1191","1192","1193","1194","1195","1196","1197","1198","1199","1200","1201","1202","1203","1204","1205","1206","1207","1208","1209","1210","1211","1212","1213","1214","1215","1216","1217","1218","1219","1220","1221","1222","1223","1224","1225","1226","1227","1228","1229","1230","1231","1232","1233","1234","1235","1236","1237","1238","1239","1240","1241","1242","1243","1244","1245","1246","1247","1248","1249","1250","1251","1252","1253","1254","1255","1256","1257","1258","1259","1260","1261","1262","1263","1264","1265","1266","1267","1268","1269","1270","1271","1272","1273","1274","1275","1276","1277","1278","1279","1280","1281","1282","1283","1284","1285","1286","1287","1288","1289","1290","1291","1292","1293","1294","1295","1296","1297","1298","1299","1300","1301","1302","1303","1304","1305","1306","1307","1308","1309","1310","1311","1312","1313","1314","1315","1316","1317","1318","1319","1320","1321","1322","1323","1324","1325","1326","1327","1328","1329","1330","1331","1332","1333","1334","1335","1336","1337","1338","1339","1340","1341","1342","1343","1344","1345","1346","1347","1348","1349","1350","1351","1352","1353","1354","1355","1356","1357","1358","1359","1360","1361","1362","1363","1364","1365","1366","1367","1368","1369","1370","1371","1372","1373","1374","1375","1376","1377","1378","1379","1380","1381","1382","1383","1384","1385","1386","1387","1388","1389","1390","1391","1392","1393","1394","1395","1396","1397","1398","1399","1400","1401","1402","1403","1404","1405","1406","1407","1408","1409","1410","1411","1412","1413","1414","1415","1416","1417","1418","1419","1420","1421","1422","1423","1424","1425","1426","1427","1428","1429","1430","1431","1432","1433","1434","1435","1436","1437","1438","1439","1440","1441","1442","1443","1444","1445","1446","1447","1448","1449","1450","1451","1452","1453","1454","1455","1456","1457","1458","1459","1460","1461","1462","1463","1464","1465","1466","1467","1468","1469","1470","1471","1472","1473","1474","1475","1476","1477","1478","1479","1480","1481","1482","1483","1484","1485","1486","1487","1488","1489","1490","1491","1492","1493","1494","1495","1496","1497","1498","1499","1500","1501","1502","1503","1504","1505","1506","1507","1508","1509","1510","1511","1512","1513","1514","1515","1516","1517","1518","1519","1520","1521","1522","1523","1524","1525","1526","1527","1528","1529","1530","1531","1532","1533","1534","1535","1536","1537","1538","1539","1540","1541","1542","1543","1544","1545","1546","1547","1548","1549","1550","1551","1552","1553","1554","1555","1556","1557","1558","1559","1560","1561","1562","1563","1564","1565","1566","1567","1568","1569","1570","1571","1572","1573","1574","1575","1576","1577","1578","1579","1580","1581","1582","1583","1584","1585","1586","1587","1588","1589","1590","1591","1592","1593","1594","1595","1596","1597","1598","1599","1600","1601","1602","1603","1604","1605","1606","1607","1608","1609","1610","1611","1612","1613","1614","1615","1616","1617","1618","1619","1620","1621","1622","1623","1624","1625","1626","1627","1628","1629","1630","1631","1632","1633","1634","1635","1636","1637","1638","1639","1640","1641","1642","1643","1644","1645","1646","1647","1648","1649","1650","1651","1652","1653","1654","1655","1656","1657","1658","1659","1660","1661","1662","1663","1664","1665","1666","1667","1668","1669","1670","1671","1672","1673","1674","1675","1676","1677","1678","1679","1680","1681","1682","1683","1684","1685","1686","1687","1688","1689","1690","1691","1692","1693","1694","1695","1696","1697","1698","1699","1700","1701","1702","1703","1704","1705","1706","1707","1708","1709","1710","1711","1712","1713","1714","1715","1716","1717","1718","1719","1720","1721","1722","1723","1724","1725","1726","1727","1728","1729","1730","1731","1732","1733","1734","1735","1736","1737","1738","1739","1740","1741","1742","1743","1744","1745","1746","1747","1748","1749","1750","1751","1752","1753","1754","1755","1756","1757","1758","1759","1760","1761","1762","1763","1764","1765","1766","1767","1768","1769","1770","1771","1772","1773","1774","1775","1776","1777","1778","1779","1780","1781","1782","1783","1784","1785","1786","1787","1788","1789","1790","1791","1792","1793","1794","1795","1796","1797","1798","1799","1800","1801","1802","1803","1804","1805","1806","1807","1808","1809","1810","1811","1812","1813","1814","1815","1816","1817","1818","1819","1820","1821","1822","1823","1824","1825","1826","1827","1828","1829","1830","1831","1832","1833","1834","1835","1836","1837","1838","1839","1840","1841","1842","1843","1844","1845","1846","1847","1848","1849","1850","1851","1852","1853","1854","1855","1856","1857","1858","1859","1860","1861","1862","1863","1864","1865","1866","1867","1868","1869","1870","1871","1872","1873","1874","1875","1876","1877","1878","1879","1880","1881","1882","1883","1884","1885","1886","1887","1888","1889","1890","1891","1892","1893","1894","1895","1896","1897","1898","1899","1900","1901","1902","1903","1904","1905","1906","1907","1908","1909","1910","1911","1912","1913","1914","1915","1916","1917","1918","1919","1920","1921","1922","1923","1924","1925","1926","1927","1928","1929","1930","1931","1932","1933","1934","1935","1936","1937","1938","1939","1940","1941","1942","1943","1944","1945","1946","1947","1948","1949","1950","1951","1952","1953","1954","1955","1956","1957","1958","1959","1960","1961","1962","1963","1964","1965","1966","1967","1968","1969","1970","1971","1972","1973","1974","1975","1976","1977","1978","1979","1980","1981","1982","1983","1984","1985","1986","1987","1988","1989","1990","1991","1992","1993","1994","1995","1996","1997","1998","1999","2000","2001","2002","2003","2004","2005","2006","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017","2018","2019","2020","2021","2022","2023","2024","2025","2026","2027","2028","2029","2030","2031","2032","2033","2034","2035","2036","2037","2038","2039","2040","2041","2042","2043","2044","2045","2046","2047","2048","2049","2050","2051","2052","2053","2054","2055","2056","2057","2058","2059","2060","2061","2062","2063","2064","2065","2066","2067","2068","2069","2070","2071","2072","2073","2074","2075","2076","2077","2078","2079","2080","2081","2082","2083","2084","2085","2086","2087","2088","2089","2090","2091","2092","2093","2094","2095","2096","2097","2098","2099","2100","2101","2102","2103","2104","2105","2106","2107","2108","2109","2110","2111","2112","2113","2114","2115","2116","2117","2118","2119","2120","2121","2122","2123","2124","2125","2126","2127","2128","2129","2130","2131","2132","2133","2134","2135","2136","2137","2138","2139","2140","2141","2142","2143","2144","2145","2146","2147","2148","2149","2150","2151","2152","2153","2154","2155","2156","2157","2158","2159","2160","2161","2162","2163","2164","2165","2166","2167","2168","2169","2170","2171","2172","2173","2174","2175","2176","2177","2178","2179","2180","2181","2182","2183","2184","2185","2186","2187","2188","2189","2190","2191","2192","2193","2194","2195","2196","2197","2198","2199","2200","2201","2202","2203","2204","2205","2206","2207","2208","2209","2210","2211","2212","2213","2214","2215","2216","2217","2218","2219","2220","2221","2222","2223","2224","2225","2226","2227","2228","2229","2230","2231","2232","2233","2234","2235","2236","2237","2238","2239","2240","2241","2242","2243","2244","2245","2246","2247","2248","2249","2250","2251","2252","2253","2254","2255","2256","2257","2258","2259","2260","2261","2262","2263","2264","2265","2266","2267","2268","2269","2270","2271","2272","2273","2274","2275","2276","2277","2278","2279","2280","2281","2282","2283","2284","2285","2286","2287","2288","2289","2290","2291","2292","2293","2294","2295","2296","2297","2298","2299","2300","2301","2302","2303","2304","2305","2306","2307","2308","2309","2310","2311","2312","2313","2314","2315","2316","2317","2318","2319","2320","2321","2322","2323","2324","2325","2326","2327","2328","2329","2330","2331","2332","2333","2334","2335","2336","2337","2338","2339","2340","2341","2342","2343","2344","2345","2346","2347","2348","2349","2350","2351","2352","2353","2354","2355","2356","2357","2358","2359","2360","2361","2362","2363","2364","2365","2366","2367","2368","2369","2370","2371","2372","2373","2374","2375","2376","2377","2378","2379","2380","2381","2382","2383","2384","2385","2386","2387","2388","2389","2390","2391","2392","2393","2394","2395","2396","2397","2398","2399","2400","2401","2402","2403","2404","2405","2406","2407","2408","2409","2410","2411","2412","2413","2414","2415","2416","2417","2418","2419","2420","2421","2422","2423","2424","2425","2426","2427","2428","2429","2430","2431","2432","2433","2434","2435","2436","2437","2438","2439","2440","2441","2442","2443","2444","2445","2446","2447","2448","2449","2450","2451","2452","2453","2454","2455","2456","2457","2458","2459","2460","2461","2462","2463","2464","2465","2466","2467","2468","2469","2470","2471","2472","2473","2474","2475","2476","2477","2478","2479","2480","2481","2482","2483","2484","2485","2486","2487","2488","2489","2490","2491","2492","2493","2494","2495","2496","2497","2498","2499","2500","2501","2502","2503","2504","2505","2506","2507","2508","2509","2510","2511","2512","2513","2514","2515","2516","2517","2518","2519","2520","2521","2522","2523","2524","2525","2526","2527","2528","2529","2530","2531","2532","2533","2534","2535","2536","2537","2538","2539","2540","2541","2542","2543","2544","2545","2546","2547","2548","2549","2550","2551","2552","2553","2554","2555","2556","2557","2558","2559","2560","2561","2562","2563","2564","2565","2566","2567","2568","2569","2570","2571","2572","2573","2574","2575","2576","2577","2578","2579","2580","2581","2582","2583","2584","2585","2586","2587","2588","2589","2590","2591","2592","2593","2594","2595","2596","2597","2598","2599","2600","2601","2602","2603","2604","2605","2606","2607","2608","2609","2610","2611","2612","2613","2614","2615","2616","2617","2618","2619","2620","2621","2622","2623","2624","2625","2626","2627","2628","2629","2630","2631","2632","2633","2634","2635","2636","2637","2638","2639","2640","2641","2642","2643","2644","2645","2646","2647","2648","2649","2650","2651","2652","2653","2654","2655","2656","2657","2658","2659","2660","2661","2662","2663","2664","2665","2666","2667","2668","2669","2670","2671","2672","2673","2674","2675","2676","2677","2678","2679","2680","2681","2682","2683","2684","2685","2686","2687","2688","2689","2690","2691","2692","2693","2694","2695","2696","2697","2698","2699","2700","2701","2702","2703","2704","2705","2706","2707","2708","2709","2710","2711","2712","2713","2714","2715","2716","2717","2718","2719","2720","2721","2722","2723","2724","2725","2726","2727","2728","2729","2730","2731","2732","2733","2734","2735","2736","2737","2738","2739","2740","2741","2742","2743","2744","2745","2746","2747","2748","2749","2750","2751","2752","2753","2754","2755","2756","2757","2758","2759","2760","2761","2762","2763","2764","2765","2766","2767","2768","2769","2770","2771","2772","2773","2774","2775","2776","2777","2778","2779","2780","2781","2782","2783","2784","2785","2786","2787","2788","2789","2790","2791","2792","2793","2794","2795","2796","2797","2798","2799","2800","2801","2802","2803","2804","2805","2806","2807","2808","2809","2810","2811","2812","2813","2814","2815","2816","2817","2818","2819","2820","2821","2822","2823","2824","2825","2826","2827","2828","2829","2830","2831","2832","2833","2834","2835","2836","2837","2838","2839","2840","2841","2842","2843","2844","2845","2846","2847","2848","2849","2850","2851","2852","2853","2854","2855","2856","2857","2858","2859","2860","2861","2862","2863","2864","2865","2866","2867","2868","2869","2870","2871","2872","2873","2874","2875","2876","2877","2878","2879","2880","2881","2882","2883","2884","2885","2886","2887","2888","2889","2890","2891","2892","2893","2894","2895","2896","2897","2898","2899","2900","2901","2902","2903","2904","2905","2906","2907","2908","2909","2910","2911","2912","2913","2914","2915","2916","2917","2918","2919","2920","2921","2922","2923","2924","2925","2926","2927","2928","2929","2930","2931","2932","2933","2934","2935","2936","2937","2938","2939","2940","2941","2942","2943","2944","2945","2946","2947","2948","2949","2950","2951","2952","2953","2954","2955","2956","2957","2958","2959","2960","2961","2962","2963","2964","2965","2966","2967","2968","2969","2970","2971","2972","2973","2974","2975","2976","2977","2978","2979","2980","2981","2982","2983","2984","2985","2986","2987","2988","2989","2990","2991","2992","2993","2994","2995","2996","2997","2998","2999","3000","3001","3002","3003","3004","3005","3006","3007","3008","3009","3010","3011","3012","3013","3014","3015","3016","3017","3018","3019","3020","3021","3022","3023","3024","3025","3026","3027","3028","3029","3030","3031","3032","3033","3034","3035","3036","3037","3038","3039","3040","3041","3042","3043","3044","3045","3046","3047","3048","3049","3050","3051","3052","3053","3054","3055","3056","3057","3058","3059","3060","3061","3062","3063","3064","3065","3066","3067","3068","3069","3070","3071","3072","3073","3074","3075","3076","3077","3078","3079","3080","3081","3082","3083","3084","3085","3086","3087","3088","3089","3090","3091","3092","3093","3094","3095","3096","3097","3098","3099","3100","3101","3102","3103","3104","3105","3106","3107","3108","3109","3110","3111","3112","3113","3114","3115","3116","3117","3118","3119","3120","3121","3122","3123","3124","3125","3126","3127","3128","3129","3130","3131","3132","3133","3134","3135","3136","3137","3138","3139","3140","3141","3142","3143","3144","3145","3146","3147","3148","3149","3150","3151","3152","3153","3154","3155","3156","3157","3158","3159","3160","3161","3162","3163","3164","3165","3166","3167","3168","3169","3170","3171","3172","3173","3174","3175","3176","3177","3178","3179","3180","3181","3182","3183","3184","3185","3186","3187","3188","3189","3190","3191","3192","3193","3194","3195","3196","3197","3198","3199","3200","3201","3202","3203","3204","3205","3206","3207","3208","3209","3210","3211","3212","3213","3214","3215","3216","3217","3218","3219","3220","3221","3222","3223","3224","3225","3226","3227","3228","3229","3230","3231","3232","3233","3234","3235","3236","3237","3238","3239","3240","3241","3242","3243","3244","3245","3246","3247","3248","3249","3250","3251","3252","3253","3254","3255","3256","3257","3258","3259","3260","3261","3262","3263","3264","3265","3266","3267","3268","3269","3270","3271","3272","3273","3274","3275","3276","3277","3278","3279","3280","3281","3282","3283","3284","3285","3286","3287","3288","3289","3290","3291","3292","3293","3294","3295","3296","3297","3298","3299","3300","3301","3302","3303","3304","3305","3306","3307","3308","3309","3310","3311","3312","3313","3314","3315","3316","3317","3318","3319","3320","3321","3322","3323","3324","3325","3326","3327","3328","3329","3330","3331","3332","3333","3334","3335","3336","3337","3338","3339","3340","3341","3342","3343","3344","3345","3346","3347","3348","3349","3350","3351","3352","3353","3354","3355","3356","3357","3358","3359","3360","3361","3362","3363","3364","3365","3366","3367","3368","3369","3370","3371","3372","3373","3374","3375","3376","3377","3378","3379","3380","3381","3382","3383","3384","3385","3386","3387","3388","3389","3390","3391","3392","3393","3394","3395","3396","3397","3398","3399","3400","3401","3402","3403","3404","3405","3406","3407","3408","3409","3410","3411","3412","3413","3414","3415","3416","3417","3418","3419","3420","3421","3422","3423","3424","3425","3426","3427","3428","3429","3430","3431","3432","3433","3434","3435","3436","3437","3438","3439","3440","3441","3442","3443","3444","3445","3446","3447","3448","3449","3450","3451","3452","3453","3454","3455","3456","3457","3458","3459","3460","3461","3462","3463","3464","3465","3466","3467","3468","3469","3470","3471","3472","3473","3474","3475","3476","3477","3478","3479","3480","3481","3482","3483","3484","3485","3486","3487","3488","3489","3490","3491","3492","3493","3494","3495","3496","3497","3498","3499","3500","3501","3502","3503","3504","3505","3506","3507","3508","3509","3510","3511","3512","3513","3514","3515","3516","3517","3518","3519","3520","3521","3522","3523","3524","3525","3526","3527","3528","3529","3530","3531","3532","3533","3534","3535","3536","3537","3538","3539","3540","3541","3542","3543","3544","3545","3546","3547","3548","3549","3550","3551","3552","3553","3554","3555","3556","3557","3558","3559","3560","3561","3562","3563","3564","3565","3566","3567","3568","3569","3570","3571","3572","3573","3574","3575","3576","3577","3578","3579","3580","3581","3582","3583","3584","3585","3586","3587","3588","3589","3590","3591","3592","3593","3594","3595","3596","3597","3598","3599","3600","3601","3602","3603","3604","3605","3606","3607","3608","3609","3610","3611","3612","3613","3614","3615","3616","3617","3618","3619","3620","3621","3622","3623","3624","3625","3626","3627","3628","3629","3630","3631","3632","3633","3634","3635","3636","3637","3638","3639","3640","3641","3642","3643","3644","3645","3646","3647","3648","3649","3650","3651","3652","3653","3654","3655","3656","3657","3658","3659","3660","3661","3662","3663","3664","3665","3666","3667","3668","3669","3670","3671","3672","3673","3674","3675","3676","3677","3678","3679","3680","3681","3682","3683","3684","3685","3686","3687","3688","3689","3690","3691","3692","3693","3694","3695","3696","3697","3698","3699","3700","3701","3702","3703","3704","3705","3706","3707","3708","3709","3710","3711","3712","3713","3714","3715","3716","3717","3718","3719","3720","3721","3722","3723","3724","3725","3726","3727","3728","3729","3730","3731","3732","3733","3734","3735","3736","3737","3738","3739","3740","3741","3742","3743","3744","3745","3746","3747","3748","3749","3750","3751","3752","3753","3754","3755","3756","3757","3758","3759","3760","3761","3762","3763","3764","3765","3766","3767","3768","3769","3770","3771","3772","3773","3774","3775","3776","3777","3778","3779","3780","3781","3782","3783","3784","3785","3786","3787","3788","3789","3790","3791","3792","3793","3794","3795","3796","3797","3798","3799","3800","3801","3802","3803","3804","3805","3806","3807","3808","3809","3810","3811","3812","3813","3814","3815","3816","3817","3818","3819","3820","3821","3822","3823","3824","3825","3826","3827","3828","3829","3830","3831","3832","3833","3834","3835","3836","3837","3838","3839","3840","3841","3842","3843","3844","3845","3846","3847","3848","3849","3850","3851","3852","3853","3854","3855","3856","3857","3858","3859","3860","3861","3862","3863","3864","3865","3866","3867","3868","3869","3870","3871","3872","3873","3874","3875","3876","3877","3878","3879","3880","3881","3882","3883","3884","3885","3886","3887","3888","3889","3890","3891","3892","3893","3894","3895","3896","3897","3898","3899","3900","3901","3902","3903","3904","3905","3906","3907","3908","3909","3910","3911","3912","3913","3914","3915","3916","3917","3918","3919","3920","3921","3922","3923","3924","3925","3926","3927","3928","3929","3930","3931","3932","3933","3934","3935","3936","3937","3938","3939","3940","3941","3942","3943","3944","3945","3946","3947","3948","3949","3950","3951","3952","3953","3954","3955","3956","3957","3958","3959","3960","3961","3962","3963","3964","3965","3966","3967","3968","3969","3970","3971","3972","3973","3974","3975","3976","3977","3978","3979","3980","3981","3982","3983","3984","3985","3986","3987","3988","3989","3990","3991","3992","3993","3994","3995","3996","3997","3998","3999","4000","4001","4002","4003","4004","4005","4006","4007","4008","4009","4010","4011","4012","4013","4014","4015","4016","4017","4018","4019","4020","4021","4022","4023","4024","4025","4026","4027","4028","4029","4030","4031","4032","4033","4034","4035","4036","4037","4038","4039","4040","4041","4042","4043","4044","4045","4046","4047","4048","4049","4050","4051","4052","4053","4054","4055","4056","4057","4058","4059","4060","4061","4062","4063","4064","4065","4066","4067","4068","4069","4070","4071","4072","4073","4074","4075","4076","4077","4078","4079","4080","4081","4082","4083","4084","4085","4086","4087","4088","4089","4090","4091","4092","4093","4094","4095","4096","4097","4098","4099","4100","4101","4102","4103","4104","4105","4106","4107","4108","4109","4110","4111","4112","4113","4114","4115","4116","4117","4118","4119","4120","4121","4122","4123","4124","4125","4126","4127","4128","4129","4130","4131","4132","4133","4134","4135","4136","4137","4138","4139","4140","4141","4142","4143","4144","4145","4146","4147","4148","4149","4150","4151","4152","4153","4154","4155","4156","4157","4158","4159","4160","4161","4162","4163","4164","4165","4166","4167","4168","4169","4170","4171","4172","4173","4174","4175","4176","4177","4178","4179","4180","4181","4182","4183","4184","4185","4186","4187","4188","4189","4190","4191","4192","4193","4194","4195","4196","4197","4198","4199","4200","4201","4202","4203","4204","4205","4206","4207","4208","4209","4210","4211","4212","4213","4214","4215","4216","4217","4218","4219","4220","4221","4222","4223","4224","4225","4226","4227","4228","4229","4230","4231","4232","4233","4234","4235","4236","4237","4238","4239","4240","4241","4242","4243","4244","4245","4246","4247","4248","4249","4250","4251","4252","4253","4254","4255","4256","4257","4258","4259","4260","4261","4262","4263","4264","4265","4266","4267","4268","4269","4270","4271","4272","4273","4274","4275","4276","4277","4278","4279","4280","4281","4282","4283","4284","4285","4286","4287","4288","4289","4290","4291","4292","4293","4294","4295","4296","4297","4298","4299","4300","4301","4302","4303","4304","4305","4306","4307","4308","4309","4310","4311","4312","4313","4314","4315","4316","4317","4318","4319","4320","4321","4322","4323","4324","4325","4326","4327","4328","4329","4330","4331","4332","4333","4334","4335","4336","4337","4338","4339","4340","4341","4342","4343","4344","4345","4346","4347","4348","4349","4350","4351","4352","4353","4354","4355","4356","4357","4358","4359","4360","4361","4362","4363","4364","4365","4366","4367","4368","4369","4370","4371","4372","4373","4374","4375","4376","4377","4378","4379","4380","4381","4382","4383","4384","4385","4386","4387","4388","4389","4390","4391","4392","4393","4394","4395","4396","4397","4398","4399","4400","4401","4402","4403","4404","4405","4406","4407","4408","4409","4410","4411","4412","4413","4414","4415","4416","4417","4418","4419","4420","4421","4422","4423","4424","4425","4426","4427","4428","4429","4430","4431","4432","4433","4434","4435","4436","4437","4438","4439","4440","4441","4442","4443","4444","4445","4446","4447","4448","4449","4450","4451","4452","4453","4454","4455","4456","4457","4458","4459","4460","4461","4462","4463","4464","4465","4466","4467","4468","4469","4470","4471","4472","4473","4474","4475","4476","4477","4478","4479","4480","4481","4482","4483","4484","4485","4486","4487","4488","4489","4490","4491","4492","4493","4494","4495","4496","4497","4498","4499","4500","4501","4502","4503","4504","4505","4506","4507","4508","4509","4510","4511","4512","4513","4514","4515","4516","4517","4518","4519","4520","4521","4522","4523","4524","4525","4526","4527","4528","4529","4530","4531","4532","4533","4534","4535","4536","4537","4538","4539","4540","4541","4542","4543","4544","4545","4546","4547","4548","4549","4550","4551","4552","4553","4554","4555","4556","4557","4558","4559","4560","4561","4562","4563","4564","4565","4566","4567","4568","4569","4570","4571","4572","4573","4574","4575","4576","4577","4578","4579","4580","4581","4582","4583","4584","4585","4586","4587","4588","4589","4590","4591","4592","4593","4594","4595","4596","4597","4598","4599","4600","4601","4602","4603","4604","4605","4606","4607","4608","4609","4610","4611","4612","4613","4614","4615","4616","4617","4618","4619","4620","4621","4622","4623","4624","4625","4626","4627","4628","4629","4630","4631","4632","4633","4634","4635","4636","4637","4638","4639","4640","4641","4642","4643","4644","4645","4646","4647","4648","4649","4650","4651","4652","4653","4654","4655","4656","4657","4658","4659","4660","4661","4662","4663","4664","4665","4666","4667","4668","4669","4670","4671","4672","4673","4674","4675","4676","4677","4678","4679","4680","4681","4682","4683","4684","4685","4686","4687","4688","4689","4690","4691","4692","4693","4694","4695","4696","4697","4698","4699","4700","4701","4702","4703","4704","4705","4706","4707","4708","4709","4710","4711","4712","4713","4714","4715","4716","4717","4718","4719","4720","4721","4722","4723","4724","4725","4726","4727","4728","4729","4730","4731","4732","4733","4734","4735","4736","4737","4738","4739","4740","4741","4742","4743","4744","4745","4746","4747","4748","4749","4750","4751","4752","4753","4754","4755","4756","4757","4758","4759","4760","4761","4762","4763","4764","4765","4766","4767","4768","4769","4770","4771","4772","4773","4774","4775","4776","4777","4778","4779","4780","4781","4782","4783","4784","4785","4786","4787","4788","4789","4790","4791","4792","4793","4794","4795","4796","4797","4798","4799","4800","4801","4802","4803","4804","4805","4806","4807","4808","4809","4810","4811","4812","4813","4814","4815","4816","4817","4818","4819","4820","4821","4822","4823","4824","4825","4826","4827","4828","4829","4830","4831","4832","4833","4834","4835","4836","4837","4838","4839","4840","4841","4842","4843","4844","4845","4846","4847","4848","4849","4850","4851","4852","4853","4854","4855","4856","4857","4858","4859","4860","4861","4862","4863","4864","4865","4866","4867","4868","4869","4870","4871","4872","4873","4874","4875","4876","4877","4878","4879","4880","4881","4882","4883","4884","4885","4886","4887","4888","4889","4890","4891","4892","4893","4894","4895","4896","4897","4898","4899","4900","4901","4902","4903","4904","4905","4906","4907","4908","4909","4910","4911","4912","4913","4914","4915","4916","4917","4918","4919","4920","4921","4922","4923","4924","4925","4926","4927","4928","4929","4930","4931","4932","4933","4934","4935","4936","4937","4938","4939","4940","4941","4942","4943","4944","4945","4946","4947","4948","4949","4950","4951","4952","4953","4954","4955","4956","4957","4958","4959","4960","4961","4962","4963","4964","4965","4966","4967","4968","4969","4970","4971","4972","4973","4974","4975","4976","4977","4978","4979","4980","4981","4982","4983","4984","4985","4986","4987","4988","4989","4990","4991","4992","4993","4994","4995","4996","4997","4998","4999","5000","5001","5002","5003","5004","5005","5006","5007","5008","5009","5010","5011","5012","5013","5014","5015","5016","5017","5018","5019","5020","5021","5022","5023","5024","5025","5026","5027","5028","5029","5030","5031","5032","5033","5034","5035","5036","5037","5038","5039","5040","5041","5042","5043","5044","5045","5046","5047","5048","5049","5050","5051","5052","5053","5054","5055","5056","5057","5058","5059","5060","5061","5062","5063","5064","5065","5066","5067","5068","5069","5070","5071","5072"],["CN000001","CN000002","CN000003","CN000005","CN000006","CN000007","CN000008","019349","034316","069307","080879","095479","097950","11010380","11010752","11010893","11010914","11015701","11020465","11020502","11020603","11022414","11023916","11024711","11030302","11041905","11050402","11050609","11060126","11070166","11080229","11081002","11111811","11112803","11120226","11120404","11121091","11121515","11180135","11180504","11181124","11191103","11192798","11192832","11194048","11194420","11197467","11197706","11200816","11230369","11230526","11231708","116944","11702406","117449","11807178","11809231","11811315","11811401","11811588","11812097","11812342","11889406","120749","146042","15136353","15140003","15300002","16614152","16627060","169670","170403","183112","196399","228442","249916","262606","292352","292900","298102","319142","325948","327846","344402","353422","356875","371273","381115","385901","395576","397568","416648","423170","444687","454595","484596","519572","524049","538183","545408","559681","584903","586006","597064","620348","625040","644595","645906","653498","674340","683694","687550","689598","692617","694308","697291","698965","718684","726746","733868","742310","757342","765191","772016","772113","784202","798544","824441","826942","834010","843004","849719","858393","861570","862370","874395","892968","895561","896160","912345","938282","938815","939542","940848","943602","955291","977730","CNT120","DE000001","DE000002","DE000003","DE000010","DE000016","DE000017","DE000018","DE000021","DE000022","DE000023","DE000024","DE000026","DE000027","DE000028","DE000030","DE000031","DE000036","DE000038","DE000040","DE000041","DE000042","DE000043","DE000045","DE000046","DE000047","DE000052","DE000053","DE000054","DE000055","DE000056","DE000059","DE000061","DE000062","DE000063","DE000064","DE000066","DE000068","DE000070","DE000072","DE000073","DE000076","DE000077","DE000078","DE000079","DE000086","DE000087","DE000088","DE000090","DE000092","DE000094","DE000095","DE000096","DE000097","DE000099","DE000100","DE000104","DE000106","DE000107","DE000108","DE000112","DE000115","DE000116","DE000118","DE000124","DE000125","DE000129","DE000130","DE000133","DE000134","DE000136","DE000139","DE000140","DE000142","DE000145","DE000147","DE000150","DE000151","DE000153","DE000154","DE000155","DE000156","DE000157","DE000161","DE000167","DE000168","DE000169","DE000170","DE000172","DE000173","DE000174","DE000180","DE000181","DE000182","DE000183","DE000184","DE000186","DE000189","DE000191","DE000195","DE000196","DE000200","DE000201","DE000209","DE000210","DE000214","DE000217","DE000218","DE000219","DE000225","DE000228","DE000229","DE000230","DE000233","DE000234","DE000235","DE000237","DE000239","DE000242","DE000243","DE000245","DE000246","DE000251","DE000258","DE000268","DE000269","DE000273","DE000275","DE000276","DE000277","DE000278","DE000282","DE000283","DE000286","DE000289","DE000290","DE000291","DE000292","DE000293","DE000297","DE000299","DE000300","DE000304","DE000305","DE000311","DE000315","DE000316","DE000318","DE000320","DE000321","DE000322","DE000323","DE000326","DE000330","DE000333","DE000335","DE000336","DE000338","DE000339","DE000340","DE000342","DE000346","DE000347","DE000348","DE000350","DE000355","DE000356","DE000359","DE000361","DE000363","DE000366","DE000367","DE000370","DE000373","DE000375","DE000381","DE000386","DE000388","DE000396","DE000401","DE000403","DE000404","DE000409","DE000410","DE000415","DE000418","DE000419","DE000421","DE000423","DE000430","DE000431","DE000433","DE000434","DE000437","DE000439","DE000440","DE000445","DE000446","DE000448","DE000449","DE000450","DE000452","DE000455","DE000458","DE000463","DE000465","DE000472","DE000481","DE000482","DE000484","DE000487","DE000488","DE000489","DE000490","DE000492","DE000494","DE000498","DE000500","DE000501","DE000502","DE000504","DE000505","DE000506","DE000507","DE000513","DE000516","DE000520","DE000522","DE000523","DE000530","DE000531","DE000532","DE000533","DE000535","DE000536","DE000539","DE000540","DE000543","DE000544","DE000546","DE000548","DE000550","DE000552","DE000553","DE000554","DE000555","DE000557","DE000558","DE000559","DE000567","DE000569","DE000570","DE000571","DE000572","DE000573","DE000577","DE000578","DE000581","DE000582","DE000583","DE000584","DE000590","DE000592","DE000594","DE000599","DE000600","DE000602","DE000604","DE000605","DE000607","DE000609","DE000610","DE000613","DE000614","DE000615","DE000616","DE000617","DE000620","DE000621","DE000623","DE000627","DE000628","DE000629","DE000631","DE000632","DE000637","DE000639","DE000641","DE000643","DE000644","DE000645","DE000647","DE000650","DE000651","DE000653","DE000656","DE000664","DE000665","DE000668","DE000670","DE000673","DE000674","DE000676","DE000681","DE000685","DE000687","DE000689","DE000690","DE000692","DE000694","DE000695","DE000698","DE000699","DE000702","DE000705","DE000707","DE000708","DE000709","DE000710","DE000712","DE000718","DE000720","DE000721","DE000725","DE000728","DE000729","DE000731","DE000732","DE000734","DE000739","DE000740","DE000743","DE000747","DE000749","DE000751","DE000758","DE000759","DE000762","DE000764","DE000767","DE000772","DE000776","DE000777","DE000778","DE000781","DE000783","DE000786","DE000787","DE000788","DE000791","DE000792","DE000801","DE000803","DE000806","DE000807","DE000808","DE000809","DE000810","DE000812","DE000816","DE000817","DE000818","DE000820","DE000821","DE000822","DE000824","DE000826","DE000828","DE000829","DE000830","DE000831","DE000835","DE000837","DE000842","DE000843","DE000846","DE000848","DE000849","DE000850","DE000851","DE000854","DE000857","DE000861","DE000864","DE000865","DE000867","DE000870","DE000871","DE000872","DE000874","DE000875","DE000878","DE000880","DE000883","DE000884","DE000889","DE000890","DE000894","DE000895","DE000896","DE000900","DE000901","DE000903","DE000908","DE000909","DE000911","DE000915","DE000917","DE000919","DE000921","DE000922","DE000925","DE000928","DE000929","DE000930","DE000932","DE000934","DE000935","DE000937","DE000939","DE000942","DE000943","DE000945","DE000946","DE000949","DE000950","DE000951","DE000952","DE000953","DE000955","DE000957","DE000960","DE000962","DE000963","DE000966","DE000967","DE000969","DE000971","DE000972","DE000973","DE000974","DE000975","DE000976","DE000978","DE000979","DE000980","DE000984","DE000989","DE000991","DE000994","DE000997","DE000999","DE001001","DE001004","DE001005","DE001009","DE001010","DE001015","DE001016","DE001017","DE001019","DE001021","DE001023","DE001024","DE001028","DE001029","DE001030","DE001032","DE001033","DE001034","DE001037","DE001040","DE001044","DE001045","DE001047","DE001049","DE001050","DE001053","DE001054","DE001055","DE001059","DE001060","DE001062","DE001064","DE001065","DE001069","DE001071","DE001073","DE001078","DE001079","DE001081","DE001082","DE001083","DE001086","DE001092","DE001093","DE001100","DE001101","DE001111","DE001117","DE001119","DE001121","DE001122","DE001123","DE001127","DE001129","DE001134","DE001136","DE001138","DE001139","DE001140","DE001141","DE001142","DE001143","DE001149","DE001156","DE001160","DE001163","DE001168","DE001172","DE001173","DE001174","DE001175","DE001177","DE001178","DE001181","DE001182","DE001188","DE001190","DE001191","DE001192","DE001193","DE001194","DE001196","DE001201","DE001202","DE001207","DE001209","DE001210","DE001212","DE001214","DE001216","DE001218","DE001220","DE001221","DE001225","DE001231","DE001232","DE001235","DE001236","DE001240","DE001242","DE001244","DE001245","DE001247","DE001251","DE001252","DE001253","DE001254","DE001260","DE001261","DE001262","DE001263","DE001266","DE001268","DE001270","DE001271","DE001274","DE001275","DE001278","DE001282","DE001287","DE001289","DE001292","DE001293","DE001302","DE001303","DE001305","DE001307","DE001309","DE001311","DE001313","DE001315","DE001316","DE001319","DE001322","DE001323","DE001324","DE001327","DE001329","DE001332","DE001333","DE001334","DE001335","DE001342","DE001344","DE001351","DE001355","DE001359","DE001363","DE001366","DE001368","DE001370","DE001371","DE001372","DE001377","DE001378","DE001379","DE001384","DE001385","DE001386","DE001390","DE001391","DE001392","DE001393","DE001394","DE001395","DE001396","DE001397","DE001400","DE001403","DE001404","DE001405","DE001408","DE001410","DE001412","DE001413","DE001415","DE001419","DE001421","DE001424","DE001425","DE001427","DE001430","DE001432","DE001440","DE001446","DE001449","DE001452","DE001453","DE001455","DE001457","DE001460","DE001461","DE001463","DE001464","DE001465","DE001470","DE001471","DE001472","DE001474","DE001476","DE001477","DE001479","DE001480","DE001482","DE001484","DE001489","DE001490","DE001491","DE001492","DE001494","DE001495","DE001497","DE001498","DE001499","DE001505","DE001509","DE001510","DE001514","DE001515","DE001517","DE001519","DE001521","DE001523","DE001525","DE001528","DE001532","DE001533","DE001534","DE001535","DE001537","DE001538","DE001539","DE001540","DE001541","DE001542","DE001543","DE001544","DE001548","DE001549","DE001552","DE001554","DE001557","DE001558","DE001559","DE001563","DE001564","DE001568","DE001570","DE001572","DE001574","DE001575","DE001577","DE001578","DE001581","DE001584","DE001586","DE001591","DE001592","DE001595","DE001596","DE001605","DE001606","DE001609","DE001612","DE001614","DE001615","DE001616","DE001623","DE001624","DE001630","DE001633","DE001634","DE001636","DE001642","DE001643","DE001646","DE001647","DE001648","DE001649","DE001653","DE001655","DE001656","DE001659","DE001660","DE001662","DE001663","DE001664","DE001666","DE001667","DE001670","DE001671","DE001672","DE001674","DE001675","DE001676","DE001677","DE001680","DE001682","DE001688","DE001689","DE001702","DE001703","DE001704","DE001705","DE001706","DE001708","DE001709","DE001710","DE001711","DE001713","DE001714","DE001716","DE001717","DE001724","DE001726","DE001727","DE001728","DE001731","DE001732","DE001733","DE001737","DE001738","DE001740","DE001741","DE001746","DE001747","DE001748","DE001750","DE001755","DE001757","DE001758","DE001760","DE001762","DE001763","DE001764","DE001765","DE001769","DE001772","DE001773","DE001778","DE001783","DE001786","DE001787","DE001788","DE001789","DE001791","DE001792","DE001793","DE001794","DE001795","DE001796","DE001798","DE001799","DE001802","DE001803","DE001804","DE001806","DE001807","DE001808","DE001809","DE001811","DE001814","DE001816","DE001817","DE001819","DE001821","DE001822","DE001823","DE001826","DE001828","DE001830","DE001832","DE001835","DE001838","DE001840","DE001842","DE001845","DE001846","DE001849","DE001851","DE001858","DE001861","DE001864","DE001870","DE001871","DE001875","DE001876","DE001877","DE001878","DE001881","DE001882","DE001885","DE001886","DE001894","DE001897","DE001898","DE001903","DE001907","DE001912","DE001913","DE001914","DE001916","DE001924","DE001925","DE001927","DE001928","DE001929","DE001930","DE001934","DE001935","DE001938","DE001942","DE001947","DE001950","DE001951","DE001957","DE001959","DE001961","DE001962","DE001963","DE001965","DE001966","DE001967","DE001971","DE001973","DE001976","DE001983","DE001985","DE001986","DE001987","DE001989","DE001991","DE001996","DE001997","DE002006","DE002007","DE002008","DE002010","DE002011","DE002014","DE002015","DE002016","DE002020","DE002022","DE002024","DE002025","DE002026","DE002030","DE002032","DE002034","DE002036","DE002038","DE002039","DE002041","DE002046","DE002047","DE002052","DE002054","DE002059","DE002061","DE002068","DE002069","DE002070","DE002072","DE002073","DE002075","DE002076","DE002077","DE002079","DE002080","DE002081","DE002087","DE002090","DE002092","DE002093","DE002094","DE002095","DE002097","DE002099","DE002100","DE002106","DE002109","DE002110","DE002113","DE002117","DE002118","DE002121","DE002122","DE002123","DE002124","DE002125","DE002127","DE002128","DE002129","DE002131","DE002133","DE002135","DE002143","DE002147","DE002148","DE002149","DE002154","DE002155","DE002157","DE002167","DE002173","DE002174","DE002175","DE002176","DE002181","DE002182","DE002183","DE002184","DE002185","DE002188","DE002189","DE002190","DE002191","DE002192","DE002195","DE002196","DE002200","DE002205","DE002207","DE002209","DE002210","DE002211","DE002212","DE002216","DE002217","DE002219","DE002222","DE002225","DE002227","DE002228","DE002230","DE002231","DE002234","DE002235","DE002236","DE002242","DE002243","DE002244","DE002245","DE002246","DE002250","DE002251","DE002252","DE002254","DE002255","DE002257","DE002258","DE002262","DE002263","DE002264","DE002265","DE002268","DE002271","DE002272","DE002273","DE002275","DE002276","DE002278","DE002279","DE002281","DE002282","DE002283","DE002284","DE002286","DE002298","DE002302","DE002304","DE002306","DE002309","DE002310","DE002312","DE002314","DE002317","DE002318","DE002319","DE002320","DE002322","DE002326","DE002327","DE002329","DE002330","DE002331","DE002332","DE002333","DE002334","DE002335","DE002336","DE002338","DE002339","DE002340","DE002342","DE002343","DE002344","DE002345","DE002347","DE002348","DE002349","DE002352","DE002353","DE002354","DE002355","DE002361","DE002362","DE002363","DE002365","DE002366","DE002368","DE002371","DE002372","DE002374","DE002375","DE002376","DE002377","DE002378","DE002380","DE002382","DE002383","DE002384","DE002385","DE002387","DE002388","DE002389","DE002392","DE002397","DE002398","DE002401","DE002402","DE002403","DE002406","DE002407","DE002408","DE002409","DE002411","DE002412","DE002413","DE002414","DE002415","DE002416","DE002417","DE002418","DE002419","DE002420","DE002423","DE002424","DE002425","DE002426","DE002427","DE002428","DE002429","DE002430","DE002431","DE002432","DE002433","DE002434","DE002435","DE002436","DE002437","DE002438","DE002439","DE002440","DE002441","DE002442","DE002443","DE002444","DE002445","DE002446","DE002450","DE002451","DE002452","DE002453","DE002454","DE002455","DE002456","DE002457","DE002458","DE002459","DE002460","DE002461","DE002462","DE002463","DE002464","DE002465","DE002466","DE002467","DE002468","DE002469","DE002470","DE002471","DE002472","DE002473","DE002474","DE002475","DE002476","DE002477","DE002479","DE002480","DE002481","DE002484","DE002486","DE002488","DE002489","DE002490","DE002492","DE002493","DE002494","DE002496","DE002499","DE002500","DE002501","DE002502","DE002503","DE002504","DE002505","DE002506","DE002507","DE002508","DE002509","DE002510","DE002511","DE002514","DE002517","DE002518","DE002519","DE002520","DE002521","DE002522","DE002523","DE002524","DE002525","DE002527","DE002528","DE002529","DE002530","DE002531","DE002532","DE002533","DE002534","DE002535","DE002536","DE002537","DE002538","DE002539","DE002540","DE002541","DE002542","DE002543","DE002544","DE002545","DE002546","DE002547","DE002548","DE002549","DE002550","DE002551","DE002552","DE002553","DE002554","DE002556","DE002557","DE002558","DE002560","DE002561","DE002566","DE002567","DE002568","DE002569","DE002570","DE002572","DE002573","DE002574","DE002575","DE002576","DE002577","DE002582","DE002583","DE002584","DE002586","DE002587","DE002588","DE002589","DE002591","DE002592","DE002594","DE002595","DE002598","DE002599","DE002600","DE002601","DE002602","DE002603","DE002604","DE002605","DE002606","DE002607","DE002608","DE002609","DE002610","DE002611","DE002612","DE002613","DE002615","DE002617","DE002620","DE002623","DE002624","DE002625","DE002626","DE002627","DE002628","DE002629","DE002630","DE002631","DE002632","DE002633","DE002634","DE002636","DE002637","DE002638","DE002640","DE002642","DE002643","DE002644","DE002645","DE002646","DE002647","DE002648","DE002649","DE002650","DE002652","DE002654","DE002655","DE002656","DE002657","DE002658","DE002660","DE002661","DE002662","DE002663","DE002664","DE002665","DE002666","DE002667","DE002668","DE002669","DE002670","DE002671","DE002674","DE002675","DE002676","DE002677","DE002678","DE002679","DE002680","DE002681","DE002682","DE002683","DE002684","DE002686","DE002688","DE002689","DE002690","DE002692","DE002693","DE002696","DE002697","DE002698","DE002699","DE002700","DE002701","DE002702","DE002703","DE002704","DE002705","DE002709","DE002710","DE002712","DE002713","DE002714","DE002718","DE002720","MM102083","MM102500","MM103187","MM103230","MM103923","MM104022","MM104186","MM106070","MM107658","MM111473","MM111982","MM116479","MM116560","MM116641","MM116913","MM117332","MM117575","MM117851","MM117984","MM118108","MM119055","MM119424","MM119715","MM119994","MM120270","MM120641","MM120655","MM121174","MM121183","MM121448","MM121483","MM122541","MM122910","MM123651","MM124107","MM125865","MM126216","MM127053","MM130938","MM147406","MM148261","MM149225","MM149243","MM149583","MM149748","MM150137","MM150682","MM150877","MM151212","MM151351","MM153900","MM153965","MM154107","MM154324","MM154648","MM156113","MM156448","MM157389","MM157741","MM157856","MM157947","MM158070","MM158631","MM159277","MM159812","MM160248","MM162246","MM162623","MM162719","MM162993","MM163013","MM163197","MM163297","MM163703","MM163960","MM164016","MM166874","MM167416","MM168080","MM171457","MM172646","MM173357","MM174508","MM176013","MM176199","MM176415","MM176494","MM176522","MM176529","MM176712","MM176795","MM177371","MM177627","MM178792","MM182204","MM182507","MM182509","MM182659","MM183755","MM184248","MM186379","MM186882","MM187786","MM189223","MM214091","MM214093","MM215064","MM215344","MM215352","MM223664","MM223821","MM224070","MM224951","MM225084","MM225290","MM225851","MM225926","MM226134","MM226246","MM227161","MM227312","MM227957","MM228252","MM228512","MM230697","MM231409","MM231410","MM231880","MM231881","MM231904","MM231922","MM232198","MM232445","MM232665","MM232685","MM232983","MM233067","MM233119","MM233143","MM233705","MM234015","MM234424","MM234525","MM235170","MM235304","MM235475","MM235582","MM235655","MM235677","MM235821","MM235901","MM235977","MM235994","MM236415","MM236500","MM236527","MM236619","MM236670","MM236724","MM236753","MM236878","MM238069","MM238408","MM238710","MM238866","MM239036","MM239039","MM239068","MM239114","MM239363","MM240128","MM240185","MM240248","MM240320","MM240727","MM240955","MM241002","MM241109","MM241366","MM241597","MM241598","MM241692","MM241693","MM241981","MM242698","MM242775","MM242795","MM243170","MM243276","MM243704","MM243782","MM243891","MM243978","MM244023","MM244028","MM244121","MM244755","MM244848","MM245759","MM246966","MM247424","MM247522","MM247644","MM247698","MM247747","MM247892","MM249318","MM52681","MM52694","MM52699","MM52737","MM52885","MM52971","MM53015","MM53110","MM53119","MM53255","MM53519","MM53559","MM53744","MM53756","MM53783","MM53796","MM53840","MM53860","MM53866","MM54162","MM54256","MM54291","MM54360","MM54365","MM54578","MM54633","MM54634","MM54665","MM54668","MM54814","MM54858","MM55061","MM55142","MM55194","MM55213","MM55226","MM55269","MM55296","MM55391","MM55395","MM55413","MM55468","MM55487","MM55649","MM55681","MM55730","MM55818","MM55898","MM56009","MM56039","MM56063","MM56090","MM56161","MM56164","MM56251","MM56292","MM56296","MM56631","MM56792","MM56812","MM56817","MM56846","MM56853","MM56954","MM57123","MM57125","MM57226","MM57276","MM57492","MM57508","MM57524","MM57550","MM57608","MM57780","MM57857","MM57858","MM57908","MM57910","MM57972","MM58091","MM58118","MM58163","MM58326","MM58348","MM58349","MM58456","MM58479","MM58650","MM58706","MM58785","MM58865","MM59058","MM59129","MM59178","MM59448","MM59450","MM59490","MM59510","MM59514","MM59571","MM59706","MM59719","MM59723","MM59761","MM59820","MM59843","MM59934","MM59943","MM59976","MM59983","MM60116","MM60123","MM60160","MM60164","MM60215","MM60488","MM60687","MM60831","MM60836","MM60855","MM60989","MM60994","MM61110","MM61243","MM61588","MM61592","MM63450","MM63558","MM64431","MM64464","MM64468","MM64499","MM64554","MM64630","MM64704","MM64706","MM64707","MM64738","MM64949","MM65677","MM65755","MM65760","MM65907","MM65922","MM66191","MM66215","MM66483","MM66752","MM66894","MM67517","MM67731","MM68044","MM68325","MM68334","MM68464","MM68776","MM68793","MM68803","MM68810","MM68830","MM68915","MM68999","MM69036","MM69376","MM69420","MM69444","MM70367","MM70431","MM70566","MM70588","MM70617","MM70700","MM70981","MM71157","MM71173","MM71282","MM71401","MM71683","MM71695","MM72584","MM72867","MM73129","MM73532","MM73731","MM73849","MM73944","MM74172","MM74274","MM74433","MM74778","MM74799","MM74880","MM74881","MM74882","MM76044","MM76055","MM76085","MM76177","MM76290","MM76334","MM76357","MM76523","MM76727","MM76736","MM79646","MM79924","MM79930","MM80178","MM80339","MM80441","MM80656","MM81390","MM82208","MM82238","MM83301","MM83334","MM84199","MM84389","MM85243","MM85522","MM85531","MM85539","MM85583","MM85650","MM85776","MM87401","MM87821","MM87828","MM88048","MM88113","MM88616","MM88723","MM89087","MM89088","MM89193","MM89362","MM89571","MM89612","MM90041","MM90123","MM90124","MM90125","MM90137","MM90722","MM90917","NL77817476","ES000003","ES000004","ES000007","ES000008","ES000009","FI000047","FI000046","FI000045","FI000039","FI000038","FI000037","FI000034","FI000024","FI000023","FI000022","FI000021","FI000020","FI000019","FI000017","FI000016","FI000012","FI000010","FI000009","FI000007","FI000006","IT000001","IT000002","IT000003","IT000006","IT000007","IT000010","IT000013","IT000014","IT000015","IT000017","IT000018","IT000020","IT000021","IT000023","IT000024","IT000025","IT000026","IT000027","IT000028","IT000029","IT000030","IT000031","IT000033","IT000034","IT000036","IT000037","IT000038","IT000039","IT000040","IT000041","IT000042","IT000044","IT000045","IT000046","IT000047","IT000048","IT000049","IT000050","IT000052","IT000053","IT000054","IT000055","IT000057","IT000058","IT000059","IT000062","IT000063","IT000064","IT000065","IT000066","IT000067","IT000068","IT000069","IT000070","IT000072","IT000073","IT000074","IT000075","IT000077","IT000078","IT000079","IT000080","IT000081","IT000084","IT000085","IT000086","IT000088","IT000089","IT000090","IT000091","IT000092","IT000093","IT000095","IT000096","IT000097","IT000098","IT000099","IT000100","IT000101","IT000102","IT000103","IT000104","IT000105","IT000106","IT000110","IT000111","IT000112","IT000114","IT000115","IT000116","IT000117","IT000118","IT000119","IT000120","IT000121","IT000122","IT000123","IT000124","IT000125","IT000126","IT000127","IT000128","IT000129","IT000130","IT000131","IT000132","IT000133","IT000134","IT000135","IT000136","IT000137","IT000138","IT000139","IT000140","IT000141","IT000142","IT000143","IT000144","IT000145","IT000146","IT000147","IT000148","IT000149","IT000150","IT000151","IT000152","IT000153","IT000154","IT000155","IT000156","IT000157","IT000158","IT000159","IT000163","IT000164","IT000165","IT000166","IT000167","IT000168","IT000169","IT000171","IT000173","IT000176","IT000177","IT000178","IT000180","IT000181","IT000182","IT000183","IT000185","IT000186","IT000188","IT000191","IT000192","IT000193","IT000196","IT000197","IT000198","IT000199","IT000200","IT000201","IT000203","IT000204","IT000206","IT000207","IT000208","IT000209","IT000210","IT000211","IT000212","IT000214","IT000216","IT000217","IT000219","IT000220","IT000221","IT000222","IT000223","IT000224","IT000225","IT000226","IT000227","IT000230","IT000231","IT000234","IT000235","IT000236","IT000238","IT000241","IT000242","IT000243","IT000245","IT000246","IT000247","IT000248","IT000250","IT000252","IT000253","IT000254","IT000257","IT000260","IT000261","IT000262","IT000263","IT000264","IT000267","IT000268","IT000269","IT000270","IT000271","IT000272","IT000273","IT000274","IT000275","IT000276","IT000277","IT000278","IT000279","IT000281","IT000282","IT000283","IT000284","IT000285","IT000287","IT000288","IT000292","IT000293","IT000294","IT000295","IT000296","IT000297","IT000298","IT000299","IT000300","IT000301","IT000302","IT000306","IT000308","IT000309","IT000310","IT000311","IT000312","IT000313","IT000314","IT000315","IT000316","IT000318","IT000319","IT000320","IT000322","IT000323","IT000326","IT000327","IT000328","IT000329","IT000331","IT000332","IT000333","IT000334","IT000335","IT000336","IT000341","IT000342","IT000343","IT000344","IT000347","IT000348","IT000349","IT000351","IT000353","IT000354","IT000355","IT000356","IT000357","IT000358","IT000361","IT000362","IT000363","IT000364","IT000365","IT000367","IT000368","IT000371","IT000372","IT000373","IT000374","IT000375","IT000377","IT000378","IT000379","IT000382","IT000383","IT000385","IT000386","IT000389","IT000390","IT000391","IT000392","IT000393","IT000394","IT000395","IT000396","IT000397","IT000398","IT000399","IT000400","IT000401","IT000404","IT000405","IT000406","IT000407","IT000410","IT000411","IT000412","IT000413","IT000414","IT000415","IT000420","IT000421","IT000422","IT000423","IT000424","IT000425","IT000426","IT000428","IT000429","IT000430","IT000432","IT000433","IT000434","IT000435","IT000436","IT000437","IT000438","IT000439","IT000440","IT000443","IT000444","IT000445","IT000446","IT000447","IT000448","IT000449","IT000450","IT000451","IT000453","IT000455","IT000456","IT000457","IT000458","IT000460","IT000461","IT000462","IT000465","IT000466","IT000467","IT000469","IT000470","IT000472","IT000473","IT000474","IT000477","IT000479","IT000481","IT000482","IT000487","IT000488","IT000489","IT000491","IT000493","IT000495","IT000496","IT000497","IT000498","IT000499","IT000501","IT000502","IT000503","IT000504","IT000505","IT000506","IT000507","IT000508","IT000510","IT000512","IT000513","IT000514","IT000515","IT000516","IT000517","IT000518","IT000519","IT000520","IT000521","IT000522","IT000523","IT000524","IT000525","IT000527","IT000528","IT000529","IT000530","IT000532","IT000534","IT000535","IT000536","IT000538","IT000539","IT000541","IT000543","IT000545","IT000546","IT000547","IT000548","IT000549","IT000550","IT000551","IT000552","IT000553","IT000555","IT000556","IT000557","IT000558","IT000559","IT000560","IT000561","IT000562","IT000564","IT000567","IT000568","IT000571","IT000573","IT000574","IT000575","IT000576","IT000577","IT000578","IT000579","IT000581","IT000582","IT000583","IT000584","IT000586","IT000587","IT000588","IT000589","IT000590","IT000591","IT000592","IT000593","IT000594","IT000596","IT000597","IT000599","IT000600","IT000601","IT000602","IT000603","IT000604","IT000605","IT000606","IT000607","IT000608","IT000609","IT000610","IT000611","IT000612","IT000613","IT000615","IT000616","IT000617","IT000618","IT000621","IT000622","IT000623","IT000624","IT000625","IT000626","IT000627","IT000628","IT000629","IT000630","IT000631","IT000633","IT000634","IT000635","IT000636","IT000638","IT000639","IT000640","IT000641","IT000642","IT000644","IT000646","IT000648","IT000649","IT000651","IT000652","IT000653","IT000654","IT000655","IT000657","IT000658","IT000659","IT000660","IT000662","IT000663","IT000667","IT000668","IT000670","IT000672","IT000673","IT000676","IT000677","IT000678","IT000679","IT000680","IT000681","IT000683","IT000684","IT000685","IT000686","IT000687","IT000689","IT000690","IT000691","IT000692","IT000693","IT000694","IT000695","IT000696","IT000697","IT000701","IT000702","IT000703","IT000704","IT000705","IT000706","IT000707","IT000709","IT000710","IT000711","IT000713","IT000714","IT000715","IT000718","IT000719","IT000720","IT000724","IT000728","IT000729","IT000730","IT000731","IT000732","IT000733","IT000734","IT000736","IT000737","IT000738","IT000739","IT000740","IT000741","IT000743","IT000745","IT000746","IT000752","IT000753","IT000754","IT000755","IT000756","IT000757","IT000758","IT000759","IT000761","IT000762","IT000763","IT000766","IT000767","IT000768","IT000770","IT000771","IT000773","IT000774","IT000775","IT000776","IT000777","IT000778","IT000779","IT000780","IT000781","IT000783","IT000784","IT000787","IT000788","IT000789","IT000790","IT000791","IT000792","IT000793","IT000794","IT000795","IT000798","IT000799","IT000800","IT000801","IT000802","IT000803","IT000804","IT000805","IT000806","IT000807","IT000808","IT000809","IT000810","IT000811","IT000812","IT000813","IT000815","IT000816","IT000817","IT000818","IT000820","IT000821","IT000823","IT000824","IT000825","IT000826","IT000827","IT000829","IT000830","IT000831","IT000832","IT000833","IT000835","IT000836","IT000837","IT000838","IT000839","IT000840","IT000841","IT000843","IT000844","IT000845","IT000846","IT000847","IT000848","IT000849","IT000850","IT000852","IT000853","IT000854","IT000856","IT000857","IT000858","IT000859","IT000860","IT000863","IT000864","IT000865","IT000866","IT000867","IT000868","IT000869","IT000870","IT000872","IT000874","IT000875","IT000876","IT000877","IT000880","IT000881","IT000884","IT000885","IT000887","IT000888","IT000889","IT000890","IT000891","IT000892","IT000893","IT000894","IT000895","IT000898","IT000899","IT000900","IT000901","IT000902","IT000903","IT000905","IT000906","IT000907","IT000908","IT000911","IT000912","IT000913","IT000914","IT000915","IT000916","IT000917","IT000919","IT000920","IT000922","IT000923","IT000924","IT000926","IT000927","IT000928","IT000929","IT000930","IT000932","IT000933","IT000936","IT000938","IT000939","IT000940","IT000943","IT000944","IT000947","IT000949","IT000950","IT000951","IT000953","IT000954","IT000955","IT000956","IT000957","IT000958","IT000959","IT000960","IT000961","IT000962","IT000963","IT000964","IT000965","IT000967","IT000968","IT000969","IT000970","IT000972","IT000973","IT000974","IT000976","IT000977","IT000978","IT000980","IT000982","IT000984","IT000988","IT000989","IT000990","IT000991","IT000992","IT000993","IT000995","IT000999","IT001000","IT001003","IT001004","IT001006","IT001007","IT001008","IT001009","IT001010","IT001011","IT001012","IT001013","IT001014","IT001015","IT001016","IT001017","IT001018","IT001019","IT001020","IT001021","IT001022","IT001023","IT001024","IT001025","IT001026","IT001027","IT001028","IT001030","IT001031","IT001032","IT001033","IT001036","IT001037","IT001039","IT001040","IT001041","IT001042","IT001045","IT001046","IT001047","IT001048","IT001049","IT001050","IT001052","IT001053","IT001054","IT001055","IT001056","IT001057","IT001058","IT001060","IT001062","IT001063","IT001065","IT001066","IT001067","IT001068","IT001069","IT001070","IT001071","IT001073","IT001074","IT001075","IT001078","IT001079","IT001080","IT001081","IT001083","IT001084","IT001086","IT001087","IT001088","IT001089","IT001091","IT001092","IT001093","IT001094","IT001095","IT001096","IT001097","IT001099","IT001100","IT001101","IT001102","IT001103","IT001104","IT001106","IT001107","IT001109","IT001111","IT001112","IT001114","IT001116","IT001117","IT001119","IT001122","IT001126","IT001127","IT001129","IT001134","IT001135","IT001136","IT001137","IT001138","IT001139","IT001140","IT001141","IT001142","IT001149","IT001150","IT001153","IT001154","IT001155","IT001156","IT001157","IT001158","IT001159","IT001160","IT001161","IT001163","IT001164","IT001166","IT001167","IT001168","IT001169","IT001170","IT001171","IT001172","IT001174","IT001175","IT001176","IT001178","IT001179","IT001180","IT001181","IT001182","IT001183","IT001184","IT001185","IT001186","IT001187","IT001188","IT001189","IT001190","IT001191","IT001192","IT001193","IT001194","IT001195","IT001196","IT001197","IT001198","IT001199","IT001200","IT001201","IT001202","IT001203","IT001204","IT001205","IT001207","IT001208","IT001209","IT001210","IT001211","IT001212","IT001213","IT001214","IT001215","IT001216","IT001217","IT001218","IT001219","IT001220","IT001221","IT001223","IT001224","IT001225","IT001227","IT001229","IT001232","IT001233","IT001234","IT001235","IT001236","IT001237","IT001238","IT001240","IT001241","IT001242","IT001243","IT001244","IT001245","IT001246","IT001247","IT001248","IT001249","IT001250","IT001251","IT001252","IT001253","IT001254","IT001255","IT001256","IT001257","IT001258","IT001259","IT001260","IT001261","IT001262","IT001263","IT001265","IT001266","IT001268","IT001270","IT001271","IT001272","IT001273","IT001274","IT001275","IT001276","IT001277","IT001278","IT001279","IT001281","IT001282","IT001283","IT001284","IT001285","IT001286","IT001287","IT001288","IT001289","IT001291","IT001292","IT001293","IT001294","IT001295","IT001299","IT001300","IT001301","IT001302","IT001303","IT001307","IT001308","IT001309","IT001311","IT001312","IT001313","IT001314","IT001315","IT001316","IT001317","IT001318","IT001319","IT001322","IT001324","IT001325","IT001326","IT001327","IT001328","IT001329","IT001330","IT001331","IT001333","IT001334","IT001337","IT001338","IT001339","IT001340","IT001341","IT001342","IT001343","IT001344","IT001346","IT001348","IT001349","IT001351","IT001352","IT001353","IT001354","IT001355","IT001356","IT001357","IT001358","IT001359","IT001360","IT001362","IT001363","IT001364","IT001365","IT001367","IT001368","IT001369","IT001370","IT001371","IT001372","IT001373","IT001374","IT001375","IT001376","IT001377","IT001378","IT001379","IT001380","IT001388","IT001389","IT001390","IT001394","IT001396","IT001397","IT001400","IT001401","IT001402","IT001403","IT001404","IT001405","IT001406","IT001407","IT001408","IT001409","IT001410","IT001411","IT001413","IT001414","IT001415","IT001416","IT001417","IT001418","IT001420","IT001421","IT001423","IT001424","IT001425","IT001426","IT001427","IT001428","IT001429","IT001430","IT001431","IT001432","IT001433","IT001434","IT001435","IT001436","IT001437","IT001439","IT001441","IT001442","IT001446","IT001447","IT001448","IT001449","IT001450","IT001452","IT001457","IT001458","IT001459","IT001460","IT001461","IT001462","IT001463","IT001464","IT001465","IT001466","IT001467","IT001469","IT001470","IT001471","IT001472","IT001473","IT001474","IT001475","IT001477","IT001478","IT001479","IT001480","IT001481","IT001482","IT001484","IT001485","IT001487","IT001488","IT001489","IT001490","IT001491","IT001492","IT001493","IT001494","IT001495","IT001497","IT001498","IT001500","IT001501","IT001503","IT001504","IT001505","IT001507","IT001508","IT001509","IT001510","IT001511","IT001512","IT001513","IT001514","IT001515","IT001516","IT001517","IT001518","IT001519","IT001520","IT001521","IT001522","IT001523","IT001524","IT001525","IT001530","IT001532","IT001533","IT001534","IT001535","IT001536","IT001537","IT001538","IT001539","IT001540","IT001541","IT001543","IT001544","IT001545","IT001546","IT001547","IT001548","IT001549","IT001552","IT001553","IT001554","IT001555","IT001558","IT001559","IT001560","IT001562","IT001563","IT001564","IT001565","IT001569","IT001570","IT001571","IT001572","IT001574","IT001575","IT001578","IT001579","IT001580","IT001581","IT001583","IT001584","IT001586","IT001587","IT001589","IT001590","IT001591","IT001592","IT001593","IT001594","IT001595","IT001597","IT001598","IT001599","IT001602","IT001603","IT001604","IT001605","IT001606","IT001608","IT001610","IT001611","IT001612","IT001613","IT001615","IT001616","IT001619","IT001620","IT001621","IT001622","IT001624","IT001625","IT001626","IT001627","IT001628","IT001629","IT001630","IT001631","IT001632","IT001633","IT001634","IT001635","IT001636","IT001637","IT001638","IT001639","IT001640","IT001641","IT001642","IT001643","IT001644","IT001645","IT001647","IT001648","IT001649","IT001650","IT001651","IT001652","IT001653","IT001654","IT001655","IT001656","IT001657","IT001658","IT001659","IT001660","IT001661","IT001662","IT001663","IT001664","IT001666","IT001667","IT001668","IT001669","IT001671","IT001672","IT001673","IT001675","IT001677","IT001678","IT001679","IT001680","IT001681","IT001684","IT001685","IT001686","IT001688","IT001689","IT001697","IT001698","IT001699","IT001700","IT001701","IT001703","IT001704","IT001706","IT001707","IT001710","IT001711","IT001712","IT001713","IT001714","IT001716","IT001717","IT001718","IT001719","IT001720","IT001722","IT001723","IT001725","IT001727","IT001728","IT001729","IT001731","IT001732","IT001733","IT001734","IT001735","IT001736","IT001737","IT001738","IT001739","IT001740","IT001741","IT001742","IT001743","IT001744","IT001746","IT001748","IT001749","IT001751","IT001752","IT001753","IT001754","IT001756","IT001757","IT001758","IT001759","IT001760","IT001761","IT001763","IT001764","IT001765","IT001767","IT001768","IT001769","IT001771","IT001772","IT001773","IT001774","IT001775","IT001776","IT001777","IT001779","IT001781","IT001782","IT001783","IT001784","IT001785","IT001786","IT001788","IT001789","IT001792","IT001793","IT001794","IT001795","IT001796","IT001797","IT001798","IT001799","IT001800","IT001804","IT001805","IT001806","IT001808","IT001809","IT001811","IT001814","IT001815","IT001816","IT001817","IT001820","IT001821","IT001822","IT001823","IT001824","IT001825","IT001826","IT001828","IT001829","IT001830","IT001831","IT001832","IT001834","IT001835","IT001836","IT001837","IT001838","IT001839","IT001840","IT001841","IT001842","IT001843","IT001845","IT001846","IT001847","IT001849","IT001850","IT001851","IT001853","IT001854","IT001855","IT001856","IT001857","IT001859","IT001860","IT001861","IT001862","IT001863","IT001864","IT001865","IT001866","IT001869","IT001870","IT001871","IT001872","IT001873","IT001874","IT001876","IT001877","IT001878","IT001879","IT001881","IT001882","IT001885","IT001886","IT001887","IT001888","IT001889","IT001890","IT001891","IT001894","IT001895","IT001897","IT001898","IT001899","IT001902","IT001903","IT001904","IT001905","IT001906","IT001907","IT001910","IT001911","IT001912","IT001913","IT001914","IT001915","IT001916","IT001919","IT001920","IT001921","IT001924","IT001925","IT001926","IT001927","IT001928","IT001929","IT001930","IT001931","IT001932","IT001934","IT001935","IT001936","IT001938","IT001939","IT001940","IT001941","IT001942","IT001943","IT001944","IT001945","IT001947","IT001948","IT001949","IT001950","IT001952","IT001954","IT001955","IT001956","IT001957","IT001958","IT001959","IT001962","IT001963","IT001964","IT001965","IT001966","IT001967","IT001968","IT001969","IT001970","IT001972","IT001973","IT001974","IT001975","IT001976","IT001977","IT001978","IT001979","IT001980","IT001982","IT001984","IT001985","IT001986","IT001987","IT001991","IT001992","IT001995","IT001997","IT001998","IT001999","IT002000","IT002001","IT002002","IT002004","IT002006","IT002007","IT002008","IT002010","IT002011","IT002012","IT002013","IT002014","IT002015","IT002016","IT002017","IT002018","IT002022","IT002023","IT002025","IT002026","IT002027","IT002029","IT002030","IT002031","IT002032","IT002033","IT002034","IT002035","IT002037","IT002038","IT002039","IT002040","IT002042","IT002043","IT002046","IT002047","IT002048","IT002049","IT002050","IT002053","IT002054","IT002056","IT002057","IT002058","IT002059","IT002060","IT002061","IT002062","IT002064","IT002068","IT002071","IT002072","IT002074","IT002076","IT002077","IT002078","IT002080","IT002081","IT002082","IT002085","IT002087","IT002089","IT002091","IT002092","IT002093","IT002094","IT002095","IT002096","IT002098","IT002099","IT002100","IT002102","IT002103","IT002104","IT002105","IT002107","IT002108","IT002109","IT002110","IT002112","IT002113","IT002114","IT002115","IT002116","IT002117","IT002118","IT002120","IT002121","IT002122","IT002124","IT002127","IT002128","IT002130","IT002131","IT002132","IT002133","IT002134","IT002139","IT002140","IT002143","IT002144","IT002145","IT002146","IT002147","IT002148","IT002149","IT002150","IT002151","IT002153","IT002154","IT002155","IT002157","IT002161","IT002162","IT002163","IT002164","IT002165","IT002166","IT002168","IT002169","IT002171","IT002173","IT002174","IT002175","IT002176","IT002177","IT002178","IT002179","IT002180","IT002181","IT002182","IT002183","IT002184","IT002186","IT002188","IT002189","IT002191","IT002192","IT002193","IT002194","IT002198","IT002199","IT002200","IT002201","IT002202","IT002204","IT002205","IT002207","IT002208","IT002209","IT002210","IT002212","IT002213","IT002214","IT002215","IT002216","IT002217","IT002219","IT002220","IT002222","IT002223","IT002224","IT002225","IT002226","IT002228","IT002229","IT002230","IT002231","IT002232","IT002233","IT002234","IT002235","IT002236","IT002238","IT002241","IT002245","IT002246","IT002247","IT002248","IT002249","IT002250","IT002251","IT002252","IT002255","IT002256","IT002257","IT002259","IT002260","IT002261","IT002262","IT002263","IT002268","IT002269","IT002270","IT002271","IT002273","IT002275","IT002276","IT002278","IT002279","IT002280","IT002281","IT002283","IT002287","IT002288","IT002289","IT002292","IT002293","IT002294","IT002295","IT002296","IT002297","IT002298","IT002299","IT002300","IT002301","IT002304","IT002306","IT002307","IT002309","IT002310","IT002311","IT002312","IT002313","IT002314","IT002315","IT002316","IT002318","IT002319","IT002320","IT002321","IT002322","IT002323","IT002324","IT002325","IT002326","IT002327","IT002328","IT002332","IT002333","IT002334","IT002336","IT002337","IT002338","IT002339","IT002341","IT002342","IT002343","IT002344","IT002345","IT002346","IT002347","IT002348","IT002350","IT002351","IT002352","IT002353","IT002354","IT002355","IT002356","IT002357","IT002358","IT002359","IT002360","IT002361","IT002362","IT002363","IT002365","IT002366","IT002367","IT002368","IT002369","IT002370","IT002371","IT002372","IT002373","IT002375","IT002376","IT002378","IT002379","IT002380","IT002381","IT002382","IT002383","IT002384","IT002385","IT002386","IT002387","IT002388","IT002389","IT002390","IT002391","IT002392","IT002393","IT002394","IT002396","IT002398","IT002399","IT002400","IT002401","IT002402","IT002403","IT002404","IT002406","IT002407","IT002408","IT002409","IT002410","IT002412","IT002413","IT002414","IT002415","IT002416","IT002418","IT002421","IT002423","IT002424","IT002425","IT002426","IT002428","IT002429","IT002430","IT002433","IT002434","IT002435","IT002436","IT002437","IT002438","IT002441","IT002442","IT002443","IT002446","IT002449","IT002450","IT002451","IT002452","IT002453","IT002454","IT002455","IT002456","IT002461","IT002463","IT002464","IT002465","IT002466","IT002467","IT002468","IT002469","IT002470","IT002471","IT002472","IT002473","IT002474","IT002475","IT002476","IT002477","IT002478","IT002479","IT002480","IT002482","IT002483","IT002484","IT002486","IT002487","IT002488","IT002489","IT002490","IT002491","IT002492","IT002493","IT002494","IT002496","IT002497","IT002498","IT002499","IT002500","IT002501","IT002502","IT002503","IT002505","IT002506","IT002508","IT002509","IT002511","IT002512","IT002513","IT002514","IT002515","IT002516","IT002517","IT002519","IT002520","IT002521","IT002522","IT002523","IT002525","IT002526","IT002527","IT002528","IT002529","IT002531","IT002532","IT002533","IT002534","IT002535","IT002536","IT002537","IT002538","IT002539","IT002540","IT002541","IT002542","IT002543","IT002544","IT002545","IT002546","IT002547","IT002548","IT002551","IT002552","IT002553","IT002554","IT002555","IT002556","IT002558","IT002559","IT002560","IT002601","IT002603","IT002604","IT002608","IT002609","IT002610","IT002611","IT002612","IT002613","IT002614","IT002615","IT002616","IT002617","IT002619","IT002620","IT002622","IT002623","IT002624","IT002625","IT002626","IT002627","IT002628","IT002629","IT002631","IT002633","IT002634","IT002635","IT002636","IT002637","IT002638","IT002639","IT002640","IT002642","IT002643","IT002644","IT002645","IT002646","IT002648","IT002649","IT002650","IT002652","IT002653","IT002654","IT002656","IT002658","IT002659","IT002660","IT002662","IT002663","IT002664","IT002665","IT002666","IT002667","IT002668","IT002669","IT002671","IT002672","IT002674","IT002677","IT002679","IT002681","IT002682","IT002683","IT002684","IT002687","IT002689","IT002690","IT002691","IT002692","IT002694","IT002695","IT002696","IT002697","IT002698","IT002699","IT002700","IT002701","IT002702","IT002704","IT002705","IT002706","IT002708","IT002709","IT002710","IT002711","IT002712","IT002714","IT002716","IT002717","IT002718","IT002720","IT002721","IT002722","IT002723","IT002724","IT002726","IT002727","IT002728","IT002729","IT002730","IT002731","IT002732","IT002733","IT002735","IT002736","IT002738","IT002739","IT002740","IT002741","IT002743","IT002744","IT002746","IT002748","IT002749","IT002750","IT002751","IT002752","IT002753","IT002754","IT002755","IT002757","IT002758","IT002759","IT002761","IT002764","IT002766","IT002767","IT002768","IT002769","IT002771","IT002772","IT002773","IT002774","IT002775","IT002776","IT002777","IT002778","IT002779","IT002780","IT002781","IT002782","IT002783","IT002784","IT002785","IT002787","IT002788","IT002789","IT002791","IT002792","IT002793","IT002794","IT002795","IT002796","IT002797","IT002799","IT002800","IT002801","IT002802","IT002803","IT002804","IT002805","IT002806","IT002807","IT002808","IT002809","IT002810","IT002812","IT002813","IT002814","IT002816","IT002817","IT002818","IT002820","IT002822","IT002824","IT002826","IT002827","IT002828","IT002829","IT002830","IT002832","IT002835","IT002836","IT002837","IT002839","IT002840","IT002842","IT002844","IT002846","IT002847","IT002848","IT002849","IT002850","IT002851","IT002852","IT002854","IT002855","IT002856","IT002857","IT002858","IT002859","IT002860","IT002861","IT002862","IT002864","IT002865","IT002866","IT002868","IT002869","IT002871","IT002872","IT002873","IT002874","IT002875","IT002877","IT002878","IT002879","IT002880","IT002882","IT002884","IT002885","IT002886","IT002888","IT002889","IT002891","IT002892","IT002893","IT002894","IT002895","IT002896","IT002897","IT002900","IT002902","IT002903","IT002906","IT002907","IT002909","IT002910","IT002911","IT002912","IT002913","IT002915","IT002916","IT002917","IT002918","IT002920","IT002922","IT002924","IT002925","IT002926","IT002927","IT002929","IT002930","IT002931","IT002932","IT002933","IT002934","IT002935","IT002936","IT002937","IT002939","IT002941","IT002942","IT002943","IT002945","IT002946","IT002947","IT002948","IT002949","IT002950","IT002951","IT002952","IT002953","IT002954","IT002955","IT002956","IT002957","IT002958","IT002960","IT002961","IT002963","IT002964","IT002966","IT002967","IT002968","IT002971","IT002972","IT002973","IT002974","IT002976","IT002979","IT002980","IT002982","IT002983","IT002984","IT002985","IT002986","IT002987","IT002990","IT002993","IT002994","IT002996","IT002998","IT003000","IT003001","IT003002","IT003005","IT003006","IT003007","IT003008","IT003009","IT003010","IT003012","IT003014","IT003016","IT003017","IT003018","IT003021","IT003022","IT003024","IT003025","IT003026","IT003027","IT003029","IT003030","IT003031","IT003032","IT003033","IT003034","IT003035","IT003037","IT003039","IT003040","IT003046","IT003047","IT003048","IT003049","IT003050","IT003053","IT003054","IT003055","IT003056","IT003057","IT003058","IT003059","IT003062","IT003063","IT003064","IT003065","IT003068","IT003070","IT003071","IT003072","IT003073","IT003074","IT003076","IT003078","IT003079","IT003080","IT003081","IT003082","IT003085","IT003086","IT003087","IT003088","IT003089","IT003090","IT003091","IT003092","IT003093","IT003094","IT003095","IT003096","IT003097","IT003098","IT003099","IT003100","IT003101","IT003102","IT003103","IT003104","IT003105","IT003106","IT003108","IT003109","IT003110","IT003112","IT003114","IT003115","IT003117","IT003118","IT003119","IT003120","IT003121","IT003122","IT003123","IT003124","IT003125","IT003130","IT003131","IT003133","IT003134","IT003135","IT003136","IT003137","IT003138","IT003139","IT003142","IT003144","IT003145","IT003147","IT003148","IT003149","IT003150","IT003151","IT003154","IT003155","IT003156","IT003157","IT003158","IT003159","IT003160","IT003161","IT003162","IT003163","IT003164","IT003166","IT003167","IT003168","IT003169","IT003171","IT003172","IT003173","IT003174","IT003176","IT003177","IT003178","IT003179","IT003180","IT003183","IT003184","IT003185","IT003186","IT003188","IT003189","IT003190","IT003191","IT003192","IT003193","IT003194","IT003195","IT003197","IT003198","IT003201","IT003202","IT003203","IT003205","IT003206","IT003207","IT003209","IT003211","IT003212","IT003214","IT003215","IT003216","IT003218","IT003219","IT003220","IT003221","IT003222","IT003223","IT003224","IT003225","IT003226","IT003227","IT003228","IT003229","IT003230","IT003231","IT003232","IT003233","IT003234","IT003235","IT003238","IT003239","IT003240","IT003241","IT003242","IT003244","IT003245","IT003246","IT003247","IT003250","IT003251","IT003252","IT003253","IT003255","IT003256","IT003257","IT003258","IT003259","IT003261","IT003262","IT003263","IT003264","IT003265","IT003266","IT003267","IT003268","IT003269","IT003270","IT003271","IT003272","IT003273","IT003274","IT003275","IT003276","IT003277","IT003278","IT003279","IT003280","IT003281","IT003282","IT003283","IT003284","IT003285","IT003286","IT003287","IT003288","IT003289","IT003290","IT003291","IT003292","IT003293","IT003294","IT003295","IT003296","IT003297","IT003298","IT003299","IT003300","IT003301","IT003302","IT003303","IT003304","IT003305","IT003306","IT003307","IT003308","IT003309","IT003310","IT003311","IT003312","IT003314","IT003315","IT003316","IT003317","IT003318","IT003319","IT003320","IT003321","IT003322","IT003323","IT003324","IT003325","IT003326","IT003327","IT003328","IT003329","IT003330","IT003331","IT003332","IT003333","IT003334","IT003335","IT003336","IT003337","IT003338","IT003339","IT003340","IT003341","IT003342","IT003343","IT003344","IT003345","IT003346","IT003347","IT003349","IT003350","IT003351","IT003352","IT003353","IT003354","IT003355","IT003356","IT003357","IT003358","IT003359","IT003360","IT003361","IT003362","IT003363","IT003364","IT003365","IT003366","IT003367","IT003368","IT003369","IT003370","NL000002","NL000562","NL000005","NL000006","NL000599","NL000007","NL000025","NL000027","NL000028","NL000561","NL000030","NL000031","NL000032","NL000035","NL000036","NL000037","NL000040","NL000042","NL000043","NL000045","NL000567","NL000049","NL000050","NL000052","NL000621","NL000053","NLAK968","NL000556","NL000054","NL000055","NL000593","NL77835526","NL000057","NL000058","NL000065","NL000066","NL000067","NL000069","NL000072","NL000074","NL000078","NL000083","NL52224137064","NL000085","NL000091","NL000115","NL000117","NL000159","NL000162","NL000578","NL000164","NL8868655972","NL000165","NL000168","NL000169","NL000170","NL000171","NL51806531476","NL77843331","NL000178","NL000179","NL000570","NL77833228","NL000182","NL000183","NL47540129441","NL000185","NL000186","NL000187","NL000592","NL000557","NL000188","NL000191","NL000555","NL000194","NL000196","NL000568","NL000200","NL000202","NL000203","NL000591","NL000204","NL000205","NL29019664454","NL000212","NL000213","NL000214","NL000215","NL000216","NL000617","NL000218","NL000575","NL000220","NL000221","NL000222","NL000224","NL000225","NL000226","NL000227","NL000232","NL000233","NL000236","NL000237","NL000238","NL000239","NL000240","NL000241","NL000242","NL000244","NL000589","NL38556673392","NL000558","NL000247","NL000249","NL000250","NL000252","NL000257","NL000258","NL000584","NL7117497070","NL000260","NL000262","NL000263","NL000265","NL000267","NL000271","NL000273","NL77831279","NL000276","NL000277","NL000279","NL50563761957","NL000281","NL000560","NLAK234","NL000282","NL000283","NL000284","NL61543462483","NL000287","NL000290","NL000294","NL000295","NL000296","NL000620","NL000586","NL000595","NL000299","NL000300","NL000563","NL000301","NL000576","NL000307","NL000308","NL000597","NL000310","NL000311","NL77809599","NL66723536269","NL000564","NL000317","NL000318","NL000319","NL000321","NL000324","NL000328","NL000329","NL000331","NL000332","NL000337","NL000342","NL000346","NL000350","NL000352","NL000354","NL35619318086","NL000573","NL000355","NL000356","NL000358","NL000364","NL000365","NL000615","NL000367","NL000368","NL000369","NL000565","NL000370","NL000372","NL000373","NL77841323","NL000374","NL000377","NL000378","NL000387","NL000388","NL000390","NL000394","NL000406","NL000408","NL25853548182","NL000413","NL000414","NL000415","NL000559","NL000416","NL000418","NL000422","NL000424","NL51350449598","NL000590","NL000425","NL000426","NL000604","NL000427","NL000428","NL000431","NL000432","NL000434","NL000602","NL000550","NL000437","NL000438","NL000440","NL000441","NL000442","NL000443","NL000606","NL000446","NL000447","NL000448","NL000449","NL000450","NL000451","NL000452","NL000453","NL000455","NL000457","NL000458","NL000459","NL000612","NL000463","NL000466","NL000467","NL000603","NL000470","NL000474","NL000476","NL000479","NL33850562804","NL000480","NL000482","NL000483","NL000487","NL000492","NL000499","NL000500","NL000503","NL000505","NL000610","NL000509","NL000511","NL58933567561","NL000514","NL000515","NL000516","NL000517","NL000518","NL000519","NL000520","NLAK1054","NL000524","NL000526","NL47098664255","NL000531","NL000534","NL000535","NL000537","NL000538","NL000539","NL000540","NL000541","NL000543","NL000546","PL000002","PL000003","PL000008","PL000010","PL000012","PL000013","PL000014","PL000015","PL000016","PL000020","PL000021","PL000022","PL000023","PL000024","PL000025","PL000027","PL000028","PL000029","PL000031","PL000036","PL000037","PL000038","PL000039","PL000041","PL000042","PL000043","PL000044","PL000046","PL000047","PL000048","PL000049","PL000050","PL000051","PL000052","PL000056","PL000058","PL000060","PL000062","PL000064","PL000065","PL000066","PL000067","PL000070","PL000075","PL000077","PL000081","PL000085","PL000086","PL000090","PL000091","PL000092","PL000094","PL000096","PL000098","PL000099","PL000100","PL000103","PL000105","PL000107","PL000108","PL000110","PL000111","PL000112","PL000115","PL000118","PL000119","PL000123","PL000127","PL000128","PL000129","PL000130","PL000131","PL000133","PL000136","PL000138","PL000140","PL000141","PL000142","PL000143","PL000145","PL000147","PL000148","PL000149","PL000154","PL000156","PL000157","PL000158","PL000159","PL000161","PL000165","PL000170","PL000171","PL000173","PL000174","PL000175","PL000176","PL000177","PL000180","PL000181","PL000182","PL000183","PL000184","PL000186","PL000189","PL000190","PL000192","PL000193","PL000196","PL000198","PL000199","PL000200","PL000201","PL000204","PL000205","PL000209","PL000210","PL000211","PL000214","PL000215","PL000217","PL000219","PL000220","PL000221","PL000223","PL000225","PL000226","PL000227","PL000228","PL000229","PL000231","PL000233","PL000234","PL000237","PL000240","PL000241","PL000242","PL000243","PL000244","PL000250","PL000251","PL000253","PL000254","PL000255","PL000258","PL000259","PL000260","PL000262","PL000263","PL000264","PL000265","PL000271","PL000272","PL000273","PL000274","PL000277","PL000280","PL000281","PL000282","PL000283","PL000284","PL000285","PL000287","PL000289","PL000290","PL000292","PL000293","PL000295","PL000297","PL000298","PL000299","PL000300","PL000302","PL000303","PL000305","PL000306","PL000307","PL000308","PL000309","PL000310","PL000311","PL000312","PL000313","PL000314","PL000316","PL000317","PL000318","PL000319","PL000320","PL000321","PL000325","PL000326","PL000327","PL000328","PL000331","PL000333","PL000334","PL000336","PL000338","PL000339","PL000340","PL000346","PL000347","PL000348","PL000350","PL000351","PL000352","PL000353","PL000354","PL000356","PL000358","PL000364","PL000367","PL000368","PL000369","PL000371","PL000372","PL000373","PL000374","PL000375","PL000376","PL000378","PL000379","PL000380","PL000382","PL000383","PL000386","PL000387","PL000388","PL000389","PL000392","PL000394","PL000395","PL000398","PL000399","PL000400","PL000404","PL000406","PL000407","PL000408","PL000409","PL000410","PL000412","PL000413","PL000414","PL10237","PL11408","PL12238","PL14357","PL14829","PL15551","PL16249","PL16545","PL16681","SE0617","SE0516","SE0382","SE000015","SE000007","SE000006","SE000005"]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>account_key<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"filter":true,"order":[],"autoWidth":false,"orderClasses":false,"columnDefs":[{"orderable":false,"targets":0}]}},"evals":[],"jsHooks":[]}</script>
</div>
</div>
</div>
<div id="project-issues" class="section level2">
<h2>Project issues</h2>
<div class="sourceCode" id="cb17"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a>opportun <span class="sc">|&gt;</span> </span>
<span id="cb17-2"><a href="#cb17-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">mutate</span>(<span class="at">grp.var=</span>External_Key) <span class="sc">|&gt;</span> </span>
<span id="cb17-3"><a href="#cb17-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">select</span>(grp.var, External_Key) <span class="sc">|&gt;</span> </span>
<span id="cb17-4"><a href="#cb17-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">mutate</span>(<span class="at">grp.var=</span><span class="fu">ifelse</span>(<span class="fu">str_detect</span>(grp.var,<span class="st">&quot;-&quot;</span>),<span class="fu">str_sub</span>(grp.var,<span class="dv">1</span>,<span class="fu">str_length</span>(grp.var)<span class="sc">-</span><span class="dv">4</span>),grp.var)) <span class="sc">|&gt;</span> </span>
<span id="cb17-5"><a href="#cb17-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">group_by</span>(grp.var) <span class="sc">|&gt;</span> </span>
<span id="cb17-6"><a href="#cb17-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">mutate</span>(<span class="at">count=</span><span class="fu">n</span>()) <span class="sc">|&gt;</span> </span>
<span id="cb17-7"><a href="#cb17-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">filter</span>(count<span class="sc">==</span><span class="dv">1</span>) <span class="sc">|&gt;</span> </span>
<span id="cb17-8"><a href="#cb17-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">rename</span>(<span class="at">source=</span>grp.var) <span class="sc">|&gt;</span> </span>
<span id="cb17-9"><a href="#cb17-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">ungroup</span>() <span class="sc">|&gt;</span> </span>
<span id="cb17-10"><a href="#cb17-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">mutate</span>(<span class="at">project_type=</span><span class="fu">ifelse</span>(source<span class="sc">==</span>External_Key,<span class="st">&quot;Main&quot;</span>,<span class="st">&quot;Sub&quot;</span>)) <span class="sc">|&gt;</span> </span>
<span id="cb17-11"><a href="#cb17-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">teapot</span>()</span></code></pre></div>
<pre><code>## Warning in instance$preRenderHook(instance): It seems your data is too big
## for client-side DataTables. You may consider server-side processing: https://
## rstudio.github.io/DT/server.html</code></pre>
<div id="htmlwidget-abf5fb3ded8c937e9e3c" style="width:100%;height:auto;" class="datatables html-widget"></div>
<script type="application/json" data-for="htmlwidget-abf5fb3ded8c937e9e3c">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","107","108","109","110","111","112","113","114","115","116","117","118","119","120","121","122","123","124","125","126","127","128","129","130","131","132","133","134","135","136","137","138","139","140","141","142","143","144","145","146","147","148","149","150","151","152","153","154","155","156","157","158","159","160","161","162","163","164","165","166","167","168","169","170","171","172","173","174","175","176","177","178","179","180","181","182","183","184","185","186","187","188","189","190","191","192","193","194","195","196","197","198","199","200","201","202","203","204","205","206","207","208","209","210","211","212","213","214","215","216","217","218","219","220","221","222","223","224","225","226","227","228","229","230","231","232","233","234","235","236","237","238","239","240","241","242","243","244","245","246","247","248","249","250","251","252","253","254","255","256","257","258","259","260","261","262","263","264","265","266","267","268","269","270","271","272","273","274","275","276","277","278","279","280","281","282","283","284","285","286","287","288","289","290","291","292","293","294","295","296","297","298","299","300","301","302","303","304","305","306","307","308","309","310","311","312","313","314","315","316","317","318","319","320","321","322","323","324","325","326","327","328","329","330","331","332","333","334","335","336","337","338","339","340","341","342","343","344","345","346","347","348","349","350","351","352","353","354","355","356","357","358","359","360","361","362","363","364","365","366","367","368","369","370","371","372","373","374","375","376","377","378","379","380","381","382","383","384","385","386","387","388","389","390","391","392","393","394","395","396","397","398","399","400","401","402","403","404","405","406","407","408","409","410","411","412","413","414","415","416","417","418","419","420","421","422","423","424","425","426","427","428","429","430","431","432","433","434","435","436","437","438","439","440","441","442","443","444","445","446","447","448","449","450","451","452","453","454","455","456","457","458","459","460","461","462","463","464","465","466","467","468","469","470","471","472","473","474","475","476","477","478","479","480","481","482","483","484","485","486","487","488","489","490","491","492","493","494","495","496","497","498","499","500","501","502","503","504","505","506","507","508","509","510","511","512","513","514","515","516","517","518","519","520","521","522","523","524","525","526","527","528","529","530","531","532","533","534","535","536","537","538","539","540","541","542","543","544","545","546","547","548","549","550","551","552","553","554","555","556","557","558","559","560","561","562","563","564","565","566","567","568","569","570","571","572","573","574","575","576","577","578","579","580","581","582","583","584","585","586","587","588","589","590","591","592","593","594","595","596","597","598","599","600","601","602","603","604","605","606","607","608","609","610","611","612","613","614","615","616","617","618","619","620","621","622","623","624","625","626","627","628","629","630","631","632","633","634","635","636","637","638","639","640","641","642","643","644","645","646","647","648","649","650","651","652","653","654","655","656","657","658","659","660","661","662","663","664","665","666","667","668","669","670","671","672","673","674","675","676","677","678","679","680","681","682","683","684","685","686","687","688","689","690","691","692","693","694","695","696","697","698","699","700","701","702","703","704","705","706","707","708","709","710","711","712","713","714","715","716","717","718","719","720","721","722","723","724","725","726","727","728","729","730","731","732","733","734","735","736","737","738","739","740","741","742","743","744","745","746","747","748","749","750","751","752","753","754","755","756","757","758","759","760","761","762","763","764","765","766","767","768","769","770","771","772","773","774","775","776","777","778","779","780","781","782","783","784","785","786","787","788","789","790","791","792","793","794","795","796","797","798","799","800","801","802","803","804","805","806","807","808","809","810","811","812","813","814","815","816","817","818","819","820","821","822","823","824","825","826","827","828","829","830","831","832","833","834","835","836","837","838","839","840","841","842","843","844","845","846","847","848","849","850","851","852","853","854","855","856","857","858","859","860","861","862","863","864","865","866","867","868","869","870","871","872","873","874","875","876","877","878","879","880","881","882","883","884","885","886","887","888","889","890","891","892","893","894","895","896","897","898","899","900","901","902","903","904","905","906","907","908","909","910","911","912","913","914","915","916","917","918","919","920","921","922","923","924","925","926","927","928","929","930","931","932","933","934","935","936","937","938","939","940","941","942","943","944","945","946","947","948","949","950","951","952","953","954","955","956","957","958","959","960","961","962","963","964","965","966","967","968","969","970","971","972","973","974","975","976","977","978","979","980","981","982","983","984","985","986","987","988","989","990","991","992","993","994","995","996","997","998","999","1000","1001","1002","1003","1004","1005","1006","1007","1008","1009","1010","1011","1012","1013","1014","1015","1016","1017","1018","1019","1020","1021","1022","1023","1024","1025","1026","1027","1028","1029","1030","1031","1032","1033","1034","1035","1036","1037","1038","1039","1040","1041","1042","1043","1044","1045","1046","1047","1048","1049","1050","1051","1052","1053","1054","1055","1056","1057","1058","1059","1060","1061","1062","1063","1064","1065","1066","1067","1068","1069","1070","1071","1072","1073","1074","1075","1076","1077","1078","1079","1080","1081","1082","1083","1084","1085","1086","1087","1088","1089","1090","1091","1092","1093","1094","1095","1096","1097","1098","1099","1100","1101","1102","1103","1104","1105","1106","1107","1108","1109","1110","1111","1112","1113","1114","1115","1116","1117","1118","1119","1120","1121","1122","1123","1124","1125","1126","1127","1128","1129","1130","1131","1132","1133","1134","1135","1136","1137","1138","1139","1140","1141","1142","1143","1144","1145","1146","1147","1148","1149","1150","1151","1152","1153","1154","1155","1156","1157","1158","1159","1160","1161","1162","1163","1164","1165","1166","1167","1168","1169","1170","1171","1172","1173","1174","1175","1176","1177","1178","1179","1180","1181","1182","1183","1184","1185","1186","1187","1188","1189","1190","1191","1192","1193","1194","1195","1196","1197","1198","1199","1200","1201","1202","1203","1204","1205","1206","1207","1208","1209","1210","1211","1212","1213","1214","1215","1216","1217","1218","1219","1220","1221","1222","1223","1224","1225","1226","1227","1228","1229","1230","1231","1232","1233","1234","1235","1236","1237","1238","1239","1240","1241","1242","1243","1244","1245","1246","1247","1248","1249","1250","1251","1252","1253","1254","1255","1256","1257","1258","1259","1260","1261","1262","1263","1264","1265","1266","1267","1268","1269","1270","1271","1272","1273","1274","1275","1276","1277","1278","1279","1280","1281","1282","1283","1284","1285","1286","1287","1288","1289","1290","1291","1292","1293","1294","1295","1296","1297","1298","1299","1300","1301","1302","1303","1304","1305","1306","1307","1308","1309","1310","1311","1312","1313","1314","1315","1316","1317","1318","1319","1320","1321","1322","1323","1324","1325","1326","1327","1328","1329","1330","1331","1332","1333","1334","1335","1336","1337","1338","1339","1340","1341","1342","1343","1344","1345","1346","1347","1348","1349","1350","1351","1352","1353","1354","1355","1356","1357","1358","1359","1360","1361","1362","1363","1364","1365","1366","1367","1368","1369","1370","1371","1372","1373","1374","1375","1376","1377","1378","1379","1380","1381","1382","1383","1384","1385","1386","1387","1388","1389","1390","1391","1392","1393","1394","1395","1396","1397","1398","1399","1400","1401","1402","1403","1404","1405","1406","1407","1408","1409","1410","1411","1412","1413","1414","1415","1416","1417","1418","1419","1420","1421","1422","1423","1424","1425","1426","1427","1428","1429","1430","1431","1432","1433","1434","1435","1436","1437","1438","1439","1440","1441","1442","1443","1444","1445","1446","1447","1448","1449","1450","1451","1452","1453","1454","1455","1456","1457","1458","1459","1460","1461","1462","1463","1464","1465","1466","1467","1468","1469","1470","1471","1472","1473","1474","1475","1476","1477","1478","1479","1480","1481","1482","1483","1484","1485","1486","1487","1488","1489","1490","1491","1492","1493","1494","1495","1496","1497","1498","1499","1500","1501","1502","1503","1504","1505","1506","1507","1508","1509","1510","1511","1512","1513","1514","1515","1516","1517","1518","1519","1520","1521","1522","1523","1524","1525","1526","1527","1528","1529","1530","1531","1532","1533","1534","1535","1536","1537","1538","1539","1540","1541","1542","1543","1544","1545","1546","1547","1548","1549","1550","1551","1552","1553","1554","1555","1556","1557","1558","1559","1560","1561","1562","1563","1564","1565","1566","1567","1568","1569","1570","1571","1572","1573","1574","1575","1576","1577","1578","1579","1580","1581","1582","1583","1584","1585","1586","1587","1588","1589","1590","1591","1592","1593","1594","1595","1596","1597","1598","1599","1600","1601","1602","1603","1604","1605","1606","1607","1608","1609","1610","1611","1612","1613","1614","1615","1616","1617","1618","1619","1620","1621","1622","1623","1624","1625","1626","1627","1628","1629","1630","1631","1632","1633","1634","1635","1636","1637","1638","1639","1640","1641","1642","1643","1644","1645","1646","1647","1648","1649","1650","1651","1652","1653","1654","1655","1656","1657","1658","1659","1660","1661","1662","1663","1664","1665","1666","1667","1668","1669","1670","1671","1672","1673","1674","1675","1676","1677","1678","1679","1680","1681","1682","1683","1684","1685","1686","1687","1688","1689","1690","1691","1692","1693","1694","1695","1696","1697","1698","1699","1700","1701","1702","1703","1704","1705","1706","1707","1708","1709","1710","1711","1712","1713","1714","1715","1716","1717","1718","1719","1720","1721","1722","1723","1724","1725","1726","1727","1728","1729","1730","1731","1732","1733","1734","1735","1736","1737","1738","1739","1740","1741","1742","1743","1744","1745","1746","1747","1748","1749","1750","1751","1752","1753","1754","1755","1756","1757","1758","1759","1760","1761","1762","1763","1764","1765","1766","1767","1768","1769","1770","1771","1772","1773","1774","1775","1776","1777","1778","1779","1780","1781","1782","1783","1784","1785","1786","1787","1788","1789","1790","1791","1792","1793","1794","1795","1796","1797","1798","1799","1800","1801","1802","1803","1804","1805","1806","1807","1808","1809","1810","1811","1812","1813","1814","1815","1816","1817","1818","1819","1820","1821","1822","1823","1824","1825","1826","1827","1828","1829","1830","1831","1832","1833","1834","1835","1836","1837","1838","1839","1840","1841","1842","1843","1844","1845","1846","1847","1848","1849","1850","1851","1852","1853","1854","1855","1856","1857","1858","1859","1860","1861","1862","1863","1864","1865","1866","1867","1868","1869","1870","1871","1872","1873","1874","1875","1876","1877","1878","1879","1880","1881","1882","1883","1884","1885","1886","1887","1888","1889","1890","1891","1892","1893","1894","1895","1896","1897","1898","1899","1900","1901","1902","1903","1904","1905","1906","1907","1908","1909","1910","1911","1912","1913","1914","1915","1916","1917","1918","1919","1920","1921","1922","1923","1924","1925","1926","1927","1928","1929","1930","1931","1932","1933","1934","1935","1936","1937","1938","1939","1940","1941","1942","1943","1944","1945","1946","1947","1948","1949","1950","1951","1952","1953","1954","1955","1956","1957","1958","1959","1960","1961","1962","1963","1964","1965","1966","1967","1968","1969","1970","1971","1972","1973","1974","1975","1976","1977","1978","1979","1980","1981","1982","1983","1984","1985","1986","1987","1988","1989","1990","1991","1992","1993","1994","1995","1996","1997","1998","1999","2000","2001","2002","2003","2004","2005","2006","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017","2018","2019","2020","2021","2022","2023","2024","2025","2026","2027","2028","2029","2030","2031","2032","2033","2034","2035","2036","2037","2038","2039","2040","2041","2042","2043","2044","2045","2046","2047","2048","2049","2050","2051","2052","2053","2054","2055","2056","2057","2058","2059","2060","2061","2062","2063","2064","2065","2066","2067","2068","2069","2070","2071","2072","2073","2074","2075","2076","2077","2078","2079","2080","2081","2082","2083","2084","2085","2086","2087","2088","2089","2090","2091","2092","2093","2094","2095","2096","2097","2098","2099","2100","2101","2102","2103","2104","2105","2106","2107","2108","2109","2110","2111","2112","2113","2114","2115","2116","2117","2118","2119","2120","2121","2122","2123","2124","2125","2126","2127","2128","2129","2130","2131","2132","2133","2134","2135","2136","2137","2138","2139","2140","2141","2142","2143","2144","2145","2146","2147","2148","2149","2150","2151","2152","2153","2154","2155","2156","2157","2158","2159","2160","2161","2162","2163","2164","2165","2166","2167","2168","2169","2170","2171","2172","2173","2174","2175","2176","2177","2178","2179","2180","2181","2182","2183","2184","2185","2186","2187","2188","2189","2190","2191","2192","2193","2194","2195","2196","2197","2198","2199","2200","2201","2202","2203","2204","2205","2206","2207","2208","2209","2210","2211","2212","2213","2214","2215","2216","2217","2218","2219","2220","2221","2222","2223","2224","2225","2226","2227","2228","2229","2230","2231","2232","2233","2234","2235","2236","2237","2238","2239","2240","2241","2242","2243","2244","2245","2246","2247","2248","2249","2250","2251","2252","2253","2254","2255","2256","2257","2258","2259","2260","2261","2262","2263","2264","2265","2266","2267","2268","2269","2270","2271","2272","2273","2274","2275","2276","2277","2278","2279","2280","2281","2282","2283","2284","2285","2286","2287","2288","2289","2290","2291","2292","2293","2294","2295","2296","2297","2298","2299","2300","2301","2302","2303","2304","2305","2306","2307","2308","2309","2310","2311","2312","2313","2314","2315","2316","2317","2318","2319","2320","2321","2322","2323","2324","2325","2326","2327","2328","2329","2330","2331","2332","2333","2334","2335","2336","2337","2338","2339","2340","2341","2342","2343","2344","2345","2346","2347","2348","2349","2350","2351","2352","2353","2354","2355","2356","2357","2358","2359","2360","2361","2362","2363","2364","2365","2366","2367","2368","2369","2370","2371","2372","2373","2374","2375","2376","2377","2378","2379","2380","2381","2382","2383","2384","2385","2386","2387","2388","2389","2390","2391","2392","2393","2394","2395","2396","2397","2398","2399","2400","2401","2402","2403","2404","2405","2406","2407","2408","2409","2410","2411","2412","2413","2414","2415","2416","2417","2418","2419","2420","2421","2422","2423","2424","2425","2426","2427","2428","2429","2430","2431","2432","2433","2434","2435","2436","2437","2438","2439","2440","2441","2442","2443","2444","2445","2446","2447","2448","2449","2450","2451","2452","2453","2454","2455","2456","2457","2458","2459","2460","2461","2462","2463","2464","2465","2466","2467","2468","2469","2470","2471","2472","2473","2474","2475","2476","2477","2478","2479","2480","2481","2482","2483","2484","2485","2486","2487","2488","2489","2490","2491","2492","2493","2494","2495","2496","2497","2498","2499","2500","2501","2502","2503","2504","2505","2506","2507","2508","2509","2510","2511","2512","2513","2514","2515","2516","2517","2518","2519","2520","2521","2522","2523","2524","2525","2526","2527","2528","2529","2530","2531","2532","2533","2534","2535","2536","2537","2538","2539","2540","2541","2542","2543","2544","2545","2546","2547","2548","2549","2550","2551","2552","2553","2554","2555","2556","2557","2558","2559","2560","2561","2562","2563","2564","2565","2566","2567","2568","2569","2570","2571","2572","2573","2574","2575","2576","2577","2578","2579","2580","2581","2582","2583","2584","2585","2586","2587","2588","2589","2590","2591","2592","2593","2594","2595","2596","2597","2598","2599","2600","2601","2602","2603","2604","2605","2606","2607","2608","2609","2610","2611","2612","2613","2614","2615","2616","2617","2618","2619","2620","2621","2622","2623","2624","2625","2626","2627","2628","2629","2630","2631","2632","2633","2634","2635","2636","2637","2638","2639","2640","2641","2642","2643","2644","2645","2646","2647","2648","2649","2650","2651","2652","2653","2654","2655","2656","2657","2658","2659","2660","2661","2662","2663","2664","2665","2666","2667","2668","2669","2670","2671","2672","2673","2674","2675","2676","2677","2678","2679","2680","2681","2682","2683","2684","2685","2686","2687","2688","2689","2690","2691","2692","2693","2694","2695","2696","2697","2698","2699","2700","2701","2702","2703","2704","2705","2706","2707","2708","2709","2710","2711","2712","2713","2714","2715","2716","2717","2718","2719","2720","2721","2722","2723","2724","2725","2726","2727","2728","2729","2730","2731","2732","2733","2734","2735","2736","2737","2738","2739","2740","2741","2742","2743","2744","2745","2746","2747","2748","2749","2750","2751","2752","2753","2754","2755","2756","2757","2758","2759","2760","2761","2762","2763","2764","2765","2766","2767","2768","2769","2770","2771","2772","2773","2774","2775","2776","2777","2778","2779","2780","2781","2782","2783","2784","2785","2786","2787","2788","2789","2790","2791","2792","2793","2794","2795","2796","2797","2798","2799","2800","2801","2802","2803","2804","2805","2806","2807","2808","2809","2810","2811","2812","2813","2814","2815","2816","2817","2818","2819","2820","2821","2822","2823","2824","2825","2826","2827","2828","2829","2830","2831","2832","2833","2834","2835","2836","2837","2838","2839","2840","2841","2842","2843","2844","2845","2846","2847","2848","2849","2850","2851","2852","2853","2854","2855","2856","2857","2858","2859","2860","2861","2862","2863","2864","2865","2866","2867","2868","2869","2870","2871","2872","2873","2874","2875","2876","2877","2878","2879","2880","2881","2882","2883","2884","2885","2886","2887","2888","2889","2890","2891","2892","2893","2894","2895","2896","2897","2898","2899","2900","2901","2902","2903","2904","2905","2906","2907","2908","2909","2910","2911","2912","2913","2914","2915","2916","2917","2918","2919","2920","2921","2922","2923","2924","2925","2926","2927","2928","2929","2930","2931","2932","2933","2934","2935","2936","2937","2938","2939","2940","2941","2942","2943","2944","2945","2946","2947","2948","2949","2950","2951","2952","2953","2954","2955","2956","2957","2958","2959","2960","2961","2962","2963","2964","2965","2966","2967","2968","2969","2970","2971","2972","2973","2974","2975","2976","2977","2978","2979","2980","2981","2982","2983","2984","2985","2986","2987","2988","2989","2990","2991","2992","2993","2994","2995","2996","2997","2998","2999","3000","3001","3002","3003","3004","3005","3006","3007","3008","3009","3010","3011","3012","3013","3014","3015","3016","3017","3018","3019","3020","3021","3022","3023","3024","3025","3026","3027","3028","3029","3030","3031","3032","3033","3034","3035","3036","3037","3038","3039","3040","3041","3042","3043","3044","3045","3046","3047","3048","3049","3050","3051","3052","3053","3054","3055","3056","3057","3058","3059","3060","3061","3062","3063","3064","3065","3066","3067","3068","3069","3070","3071","3072","3073","3074","3075","3076","3077","3078","3079","3080","3081","3082","3083","3084","3085","3086","3087","3088","3089","3090","3091","3092","3093","3094","3095","3096","3097","3098","3099","3100","3101","3102","3103","3104","3105","3106","3107","3108","3109","3110","3111","3112","3113","3114","3115","3116","3117","3118","3119","3120","3121","3122","3123","3124","3125","3126","3127","3128","3129","3130","3131","3132","3133","3134","3135","3136","3137","3138","3139","3140","3141","3142","3143","3144","3145","3146","3147","3148","3149","3150","3151","3152","3153","3154","3155","3156","3157","3158","3159","3160","3161","3162","3163","3164","3165","3166","3167","3168","3169","3170","3171","3172","3173","3174","3175","3176","3177","3178","3179","3180","3181","3182","3183","3184","3185","3186","3187","3188","3189","3190","3191","3192","3193","3194","3195","3196","3197","3198","3199","3200","3201","3202","3203","3204","3205","3206","3207","3208","3209","3210","3211","3212","3213","3214","3215","3216","3217","3218","3219","3220","3221","3222","3223","3224","3225","3226","3227","3228","3229","3230","3231","3232","3233","3234","3235","3236","3237","3238","3239","3240","3241","3242","3243","3244","3245","3246","3247","3248","3249","3250","3251","3252","3253","3254","3255","3256","3257","3258","3259","3260","3261","3262","3263","3264","3265","3266","3267","3268","3269","3270","3271","3272","3273","3274","3275","3276","3277","3278","3279","3280","3281","3282","3283","3284","3285","3286","3287","3288","3289","3290","3291","3292","3293","3294","3295","3296","3297","3298","3299","3300","3301","3302","3303","3304","3305","3306","3307","3308","3309","3310","3311","3312","3313","3314","3315","3316","3317","3318","3319","3320","3321","3322","3323","3324","3325","3326","3327","3328","3329","3330","3331","3332","3333","3334","3335","3336","3337","3338","3339","3340","3341","3342","3343","3344","3345","3346","3347","3348","3349","3350","3351","3352","3353","3354","3355","3356","3357","3358","3359","3360","3361","3362","3363","3364","3365","3366","3367","3368","3369","3370","3371","3372","3373","3374","3375","3376","3377","3378","3379","3380","3381","3382","3383","3384","3385","3386","3387","3388","3389","3390","3391","3392","3393","3394","3395","3396","3397","3398","3399","3400","3401","3402","3403","3404","3405","3406","3407","3408","3409","3410","3411","3412","3413","3414","3415","3416","3417","3418","3419","3420","3421","3422","3423","3424","3425","3426","3427","3428","3429","3430","3431","3432","3433","3434","3435","3436","3437","3438","3439","3440","3441","3442","3443","3444","3445","3446","3447","3448","3449","3450","3451","3452","3453","3454","3455","3456","3457","3458","3459","3460","3461","3462","3463","3464","3465","3466","3467","3468","3469","3470","3471","3472","3473","3474","3475","3476","3477","3478","3479","3480","3481","3482","3483","3484","3485","3486","3487","3488","3489","3490","3491","3492","3493","3494","3495","3496","3497","3498","3499","3500","3501","3502","3503","3504","3505","3506","3507","3508","3509","3510","3511","3512","3513","3514","3515","3516","3517","3518","3519","3520","3521","3522","3523","3524","3525","3526","3527","3528","3529","3530","3531","3532","3533","3534","3535","3536","3537","3538","3539","3540","3541","3542","3543","3544","3545","3546","3547","3548","3549","3550","3551","3552","3553","3554","3555","3556","3557","3558","3559","3560","3561","3562","3563","3564","3565","3566","3567","3568","3569","3570","3571","3572","3573","3574","3575","3576","3577","3578","3579","3580","3581","3582","3583","3584","3585","3586","3587","3588","3589","3590","3591","3592","3593","3594","3595","3596","3597","3598","3599","3600","3601","3602","3603","3604","3605","3606","3607","3608","3609","3610","3611","3612","3613","3614","3615","3616","3617","3618","3619","3620","3621","3622","3623","3624","3625","3626","3627","3628","3629","3630","3631","3632","3633","3634","3635","3636","3637","3638","3639","3640","3641","3642","3643","3644","3645","3646","3647","3648","3649","3650","3651","3652","3653","3654","3655","3656","3657","3658","3659","3660","3661","3662","3663","3664","3665","3666","3667","3668","3669","3670","3671","3672","3673","3674","3675","3676","3677","3678","3679","3680","3681","3682","3683","3684","3685","3686","3687","3688","3689","3690","3691","3692","3693","3694","3695","3696","3697","3698","3699","3700","3701","3702","3703","3704","3705","3706","3707","3708","3709","3710","3711","3712","3713","3714","3715","3716","3717","3718","3719","3720","3721","3722","3723","3724","3725","3726","3727","3728","3729","3730","3731","3732","3733","3734","3735","3736","3737","3738","3739","3740","3741","3742","3743","3744","3745","3746","3747","3748","3749","3750","3751","3752","3753","3754","3755","3756","3757","3758","3759","3760","3761","3762","3763","3764","3765","3766","3767","3768","3769","3770","3771","3772","3773","3774","3775","3776","3777","3778","3779","3780","3781","3782","3783","3784","3785","3786","3787","3788","3789","3790","3791","3792","3793","3794","3795","3796","3797","3798","3799","3800","3801","3802","3803","3804","3805","3806","3807","3808","3809","3810","3811","3812","3813","3814","3815","3816","3817","3818","3819","3820","3821","3822","3823","3824","3825","3826","3827","3828","3829","3830","3831","3832","3833","3834","3835","3836","3837","3838","3839","3840","3841","3842","3843","3844","3845","3846","3847","3848","3849","3850","3851","3852","3853","3854","3855","3856","3857","3858","3859","3860","3861","3862","3863","3864","3865","3866","3867","3868","3869","3870","3871","3872","3873","3874","3875","3876","3877","3878","3879","3880","3881","3882","3883","3884","3885","3886","3887","3888","3889","3890","3891","3892","3893","3894","3895","3896","3897","3898","3899","3900","3901","3902","3903","3904","3905","3906","3907","3908","3909","3910","3911","3912","3913","3914","3915","3916","3917","3918","3919","3920","3921","3922","3923","3924","3925","3926","3927","3928","3929","3930","3931","3932","3933","3934","3935","3936","3937","3938","3939","3940","3941","3942","3943","3944","3945","3946","3947","3948","3949","3950","3951","3952","3953","3954","3955","3956","3957","3958","3959","3960","3961","3962","3963","3964","3965","3966","3967","3968","3969","3970","3971","3972","3973","3974","3975","3976","3977","3978","3979","3980","3981","3982","3983","3984","3985","3986","3987","3988","3989","3990","3991","3992","3993","3994","3995","3996","3997","3998","3999","4000","4001","4002","4003","4004","4005","4006","4007","4008","4009","4010","4011","4012","4013","4014","4015","4016","4017","4018","4019","4020","4021","4022","4023","4024","4025","4026","4027","4028","4029","4030","4031","4032","4033","4034","4035","4036","4037","4038","4039","4040","4041","4042","4043","4044","4045","4046","4047","4048","4049","4050","4051","4052","4053","4054","4055","4056","4057","4058","4059","4060","4061","4062","4063","4064","4065","4066","4067","4068","4069","4070","4071","4072","4073","4074","4075","4076","4077","4078","4079","4080","4081","4082","4083","4084","4085","4086","4087","4088","4089","4090","4091","4092","4093","4094","4095","4096","4097","4098","4099","4100","4101","4102","4103","4104","4105","4106","4107","4108","4109","4110","4111","4112","4113","4114","4115","4116","4117","4118","4119","4120","4121","4122","4123","4124","4125","4126","4127","4128","4129","4130","4131","4132","4133","4134","4135","4136","4137","4138","4139","4140","4141","4142","4143","4144","4145","4146","4147","4148","4149","4150","4151","4152","4153","4154","4155","4156","4157","4158","4159","4160","4161","4162","4163","4164","4165","4166","4167","4168","4169","4170","4171","4172","4173","4174","4175","4176","4177","4178","4179","4180","4181","4182","4183","4184","4185","4186","4187","4188","4189","4190","4191","4192","4193","4194","4195","4196","4197","4198","4199","4200","4201","4202","4203","4204","4205","4206","4207","4208","4209","4210","4211","4212","4213","4214","4215","4216","4217","4218","4219","4220","4221","4222","4223","4224","4225","4226","4227","4228","4229","4230","4231","4232","4233","4234","4235","4236","4237","4238","4239","4240","4241","4242","4243","4244","4245","4246","4247","4248","4249","4250","4251","4252","4253","4254","4255","4256","4257","4258","4259","4260","4261","4262","4263","4264","4265","4266","4267","4268","4269","4270","4271","4272","4273","4274","4275","4276","4277","4278","4279","4280","4281","4282","4283","4284","4285","4286","4287","4288","4289","4290","4291","4292","4293","4294","4295","4296","4297","4298","4299","4300","4301","4302","4303","4304","4305","4306","4307","4308","4309","4310","4311","4312","4313","4314","4315","4316","4317","4318","4319","4320","4321","4322","4323","4324","4325","4326","4327","4328","4329","4330","4331","4332","4333","4334","4335","4336","4337","4338","4339","4340","4341","4342","4343","4344","4345","4346","4347","4348","4349","4350","4351","4352","4353","4354","4355","4356","4357","4358","4359","4360","4361","4362","4363","4364","4365","4366","4367","4368","4369","4370","4371","4372","4373","4374","4375","4376","4377","4378","4379","4380","4381","4382","4383","4384","4385","4386","4387","4388","4389","4390","4391","4392","4393","4394","4395","4396","4397","4398","4399","4400","4401","4402","4403","4404","4405","4406","4407","4408","4409","4410","4411","4412","4413","4414","4415","4416","4417","4418","4419","4420","4421","4422","4423","4424","4425","4426","4427","4428","4429","4430","4431","4432","4433","4434","4435","4436","4437","4438","4439","4440","4441","4442","4443","4444","4445","4446","4447","4448","4449","4450","4451","4452","4453","4454","4455","4456","4457","4458","4459","4460","4461","4462","4463","4464","4465","4466","4467","4468","4469","4470","4471","4472","4473","4474","4475","4476","4477","4478","4479","4480","4481","4482","4483","4484","4485","4486","4487","4488","4489","4490","4491","4492","4493","4494","4495","4496","4497","4498","4499","4500","4501","4502","4503","4504","4505","4506","4507","4508","4509","4510","4511","4512","4513","4514","4515","4516","4517","4518","4519","4520","4521","4522","4523","4524","4525","4526","4527","4528","4529","4530","4531","4532","4533","4534","4535","4536","4537","4538","4539","4540","4541","4542","4543","4544","4545","4546","4547","4548","4549","4550","4551","4552","4553","4554","4555","4556","4557","4558","4559","4560","4561","4562","4563","4564","4565","4566","4567","4568","4569","4570","4571","4572","4573","4574","4575","4576","4577","4578","4579","4580","4581","4582","4583","4584","4585","4586","4587","4588","4589","4590","4591","4592","4593","4594","4595","4596","4597","4598","4599","4600","4601","4602","4603","4604","4605","4606","4607","4608","4609","4610","4611","4612","4613","4614","4615","4616","4617","4618","4619","4620","4621","4622","4623","4624","4625","4626","4627","4628","4629","4630","4631","4632","4633","4634","4635","4636","4637","4638","4639","4640","4641","4642","4643","4644","4645","4646","4647","4648","4649","4650","4651","4652","4653","4654","4655","4656","4657","4658","4659","4660","4661","4662","4663","4664","4665","4666","4667","4668","4669","4670","4671","4672","4673","4674","4675","4676","4677","4678","4679","4680","4681","4682","4683","4684","4685","4686","4687","4688","4689","4690","4691","4692","4693","4694","4695","4696","4697","4698","4699","4700","4701","4702","4703","4704","4705","4706","4707","4708","4709","4710","4711","4712","4713","4714","4715","4716","4717","4718","4719","4720","4721","4722","4723","4724","4725","4726","4727","4728","4729","4730","4731","4732","4733","4734","4735","4736","4737","4738","4739","4740","4741","4742","4743","4744","4745","4746","4747","4748","4749","4750","4751","4752","4753","4754","4755","4756","4757","4758","4759","4760","4761","4762","4763","4764","4765","4766","4767","4768","4769","4770","4771","4772","4773","4774","4775","4776","4777","4778","4779","4780","4781","4782","4783","4784","4785","4786","4787","4788","4789","4790","4791","4792","4793","4794","4795","4796","4797","4798","4799","4800","4801","4802","4803","4804","4805","4806","4807","4808","4809","4810","4811","4812","4813","4814","4815","4816","4817","4818","4819","4820","4821","4822","4823","4824","4825","4826","4827","4828","4829","4830","4831","4832","4833","4834","4835","4836","4837","4838","4839","4840","4841","4842","4843","4844","4845","4846","4847","4848","4849","4850","4851","4852","4853","4854","4855","4856","4857","4858","4859","4860","4861","4862","4863","4864","4865","4866","4867","4868","4869","4870","4871","4872","4873","4874","4875","4876","4877","4878","4879","4880","4881","4882","4883","4884","4885","4886","4887","4888","4889","4890","4891","4892","4893","4894","4895","4896","4897","4898","4899","4900","4901","4902","4903","4904","4905","4906","4907","4908","4909","4910","4911","4912","4913","4914","4915","4916","4917","4918","4919","4920","4921","4922","4923","4924","4925","4926","4927","4928","4929","4930","4931","4932","4933","4934","4935","4936","4937","4938","4939","4940","4941","4942","4943","4944","4945","4946","4947","4948","4949","4950","4951","4952","4953","4954","4955","4956","4957","4958","4959","4960","4961","4962","4963","4964","4965","4966","4967","4968","4969","4970","4971","4972","4973","4974","4975","4976","4977","4978","4979","4980","4981","4982","4983","4984","4985","4986","4987","4988","4989","4990","4991","4992","4993","4994","4995","4996","4997","4998","4999","5000","5001","5002","5003","5004","5005","5006","5007","5008","5009","5010","5011","5012","5013","5014","5015","5016","5017","5018","5019","5020","5021","5022","5023","5024","5025","5026","5027","5028","5029","5030","5031","5032","5033","5034","5035","5036","5037","5038","5039","5040","5041","5042","5043","5044","5045","5046","5047","5048","5049","5050","5051","5052","5053","5054","5055","5056","5057","5058","5059","5060","5061","5062","5063","5064","5065","5066","5067","5068","5069","5070","5071","5072","5073","5074","5075","5076","5077","5078","5079","5080","5081","5082","5083","5084","5085","5086","5087","5088","5089","5090","5091","5092","5093","5094","5095","5096","5097","5098","5099","5100","5101","5102","5103","5104","5105","5106","5107","5108","5109","5110","5111","5112","5113","5114","5115","5116","5117","5118","5119","5120","5121","5122","5123","5124","5125","5126","5127","5128","5129","5130","5131","5132","5133","5134","5135","5136","5137","5138","5139","5140","5141","5142","5143","5144","5145","5146","5147","5148","5149","5150","5151","5152","5153","5154","5155","5156","5157","5158","5159","5160","5161","5162","5163","5164","5165","5166","5167","5168","5169","5170","5171","5172","5173","5174","5175","5176","5177","5178","5179","5180","5181","5182","5183","5184","5185","5186","5187","5188","5189","5190","5191","5192","5193","5194","5195","5196","5197","5198","5199","5200","5201","5202","5203","5204","5205","5206","5207","5208","5209","5210","5211","5212","5213","5214","5215","5216","5217","5218","5219","5220","5221","5222","5223","5224","5225","5226","5227","5228","5229","5230","5231","5232","5233","5234","5235","5236","5237","5238","5239","5240","5241","5242","5243","5244","5245","5246","5247","5248","5249","5250","5251","5252","5253","5254","5255","5256","5257","5258","5259","5260","5261","5262","5263","5264","5265","5266","5267","5268","5269","5270","5271","5272","5273","5274","5275","5276","5277","5278","5279","5280","5281","5282","5283","5284","5285","5286","5287","5288","5289","5290","5291","5292","5293","5294","5295","5296","5297","5298","5299","5300","5301","5302","5303","5304","5305","5306","5307","5308","5309","5310","5311","5312","5313","5314","5315","5316","5317","5318","5319","5320","5321","5322","5323","5324","5325","5326","5327","5328","5329","5330","5331","5332","5333","5334","5335","5336","5337","5338","5339","5340","5341","5342","5343","5344","5345","5346","5347","5348","5349","5350","5351","5352","5353","5354","5355","5356","5357","5358","5359","5360","5361","5362","5363","5364","5365","5366","5367","5368","5369","5370","5371","5372","5373","5374","5375","5376","5377","5378","5379","5380","5381","5382","5383","5384","5385","5386","5387","5388","5389","5390","5391","5392","5393","5394","5395","5396","5397","5398","5399","5400","5401","5402","5403","5404","5405","5406","5407","5408","5409","5410","5411","5412","5413","5414","5415","5416","5417","5418","5419","5420","5421","5422","5423","5424","5425","5426","5427","5428","5429","5430","5431","5432","5433","5434","5435","5436","5437","5438","5439","5440","5441","5442","5443","5444","5445","5446","5447","5448","5449","5450","5451","5452","5453","5454","5455","5456","5457","5458","5459","5460","5461","5462","5463","5464","5465","5466","5467","5468","5469","5470","5471","5472","5473","5474","5475","5476","5477","5478","5479","5480","5481","5482","5483","5484","5485","5486","5487","5488","5489","5490","5491","5492","5493","5494","5495","5496","5497","5498","5499","5500","5501","5502","5503","5504","5505","5506","5507","5508","5509","5510","5511","5512","5513","5514","5515","5516","5517","5518","5519","5520","5521","5522","5523","5524","5525","5526","5527","5528","5529","5530","5531","5532","5533","5534","5535","5536","5537","5538","5539","5540","5541","5542","5543","5544","5545","5546","5547","5548","5549","5550","5551","5552","5553","5554","5555","5556","5557","5558","5559","5560","5561","5562","5563","5564","5565","5566","5567","5568","5569","5570","5571","5572","5573","5574","5575","5576","5577","5578","5579","5580","5581","5582","5583","5584","5585","5586","5587","5588","5589","5590","5591","5592","5593","5594","5595","5596","5597","5598","5599","5600","5601","5602","5603","5604","5605","5606","5607","5608","5609","5610","5611","5612","5613","5614","5615","5616","5617","5618","5619","5620","5621","5622","5623","5624","5625","5626","5627","5628","5629","5630","5631","5632","5633","5634","5635","5636","5637","5638","5639","5640","5641","5642","5643","5644","5645","5646","5647","5648","5649","5650","5651","5652","5653","5654","5655","5656","5657","5658","5659","5660","5661","5662","5663","5664","5665","5666","5667","5668","5669","5670","5671","5672","5673","5674","5675","5676","5677","5678","5679","5680","5681","5682","5683","5684","5685","5686","5687","5688","5689","5690","5691","5692","5693","5694","5695","5696","5697","5698","5699","5700","5701","5702","5703","5704","5705","5706","5707","5708","5709","5710","5711","5712","5713","5714","5715","5716","5717","5718","5719","5720","5721","5722","5723","5724","5725","5726","5727","5728","5729","5730","5731","5732","5733","5734","5735","5736","5737","5738","5739","5740","5741","5742","5743","5744","5745","5746","5747","5748","5749","5750","5751","5752","5753","5754","5755","5756","5757","5758","5759","5760","5761","5762","5763","5764","5765","5766","5767","5768","5769","5770","5771","5772","5773","5774","5775","5776","5777","5778","5779","5780","5781","5782","5783","5784","5785","5786","5787","5788","5789","5790","5791","5792","5793","5794","5795","5796","5797","5798","5799","5800","5801","5802","5803","5804","5805","5806","5807","5808","5809","5810","5811","5812","5813","5814","5815","5816","5817","5818","5819","5820","5821","5822","5823","5824","5825","5826","5827","5828","5829","5830","5831","5832","5833","5834","5835","5836","5837","5838","5839","5840","5841","5842","5843","5844","5845","5846","5847","5848","5849","5850","5851","5852","5853","5854","5855","5856","5857","5858","5859","5860","5861","5862","5863","5864","5865","5866","5867","5868","5869","5870","5871","5872","5873","5874","5875","5876","5877","5878","5879","5880","5881","5882","5883","5884","5885","5886","5887","5888","5889","5890","5891","5892","5893","5894","5895","5896","5897","5898","5899","5900","5901","5902","5903","5904","5905","5906","5907","5908","5909","5910","5911","5912","5913","5914","5915","5916","5917","5918","5919","5920","5921","5922","5923","5924","5925","5926","5927","5928","5929","5930","5931","5932","5933","5934","5935","5936","5937","5938","5939","5940","5941","5942","5943","5944","5945","5946","5947","5948","5949","5950","5951","5952","5953","5954","5955","5956","5957","5958","5959","5960","5961","5962","5963","5964","5965","5966","5967","5968","5969","5970","5971","5972","5973","5974","5975","5976","5977","5978","5979","5980","5981","5982","5983","5984","5985","5986","5987","5988","5989","5990","5991","5992","5993","5994","5995","5996","5997","5998","5999","6000","6001","6002","6003","6004","6005","6006","6007","6008","6009","6010","6011","6012","6013","6014","6015","6016","6017","6018","6019","6020","6021","6022","6023","6024","6025","6026","6027","6028","6029","6030","6031","6032","6033","6034","6035","6036","6037","6038","6039","6040","6041","6042","6043","6044","6045","6046","6047","6048","6049","6050","6051","6052","6053","6054","6055","6056","6057","6058","6059","6060","6061","6062","6063","6064","6065","6066","6067","6068","6069","6070","6071","6072","6073","6074","6075","6076","6077","6078","6079","6080","6081","6082","6083","6084","6085","6086","6087","6088","6089","6090","6091","6092","6093","6094","6095","6096","6097","6098","6099","6100","6101","6102","6103","6104","6105","6106","6107","6108","6109","6110","6111","6112","6113","6114","6115","6116","6117","6118","6119","6120","6121","6122","6123","6124","6125","6126","6127","6128","6129","6130","6131","6132","6133","6134","6135","6136","6137","6138","6139","6140","6141","6142","6143","6144","6145","6146","6147","6148","6149","6150","6151","6152","6153","6154","6155","6156","6157","6158","6159","6160","6161","6162","6163","6164","6165","6166","6167","6168","6169","6170","6171","6172","6173","6174","6175","6176","6177","6178","6179","6180","6181","6182","6183","6184","6185","6186","6187","6188","6189","6190","6191","6192","6193","6194","6195","6196","6197","6198","6199","6200","6201","6202","6203","6204","6205","6206","6207","6208","6209","6210","6211","6212","6213","6214","6215","6216","6217","6218","6219","6220","6221","6222","6223","6224","6225","6226","6227","6228","6229","6230","6231","6232","6233","6234","6235","6236","6237","6238","6239","6240","6241","6242","6243","6244","6245","6246","6247","6248","6249","6250","6251","6252","6253","6254","6255","6256","6257","6258","6259","6260","6261","6262","6263","6264","6265","6266","6267","6268","6269","6270","6271","6272","6273","6274","6275","6276","6277","6278","6279","6280","6281","6282","6283","6284","6285","6286","6287","6288","6289","6290","6291","6292","6293","6294","6295","6296","6297","6298","6299","6300","6301","6302","6303","6304","6305","6306","6307","6308","6309","6310","6311","6312","6313","6314","6315","6316","6317","6318","6319","6320","6321","6322","6323","6324","6325","6326","6327","6328","6329","6330","6331","6332","6333","6334","6335","6336","6337","6338","6339","6340","6341","6342","6343","6344","6345","6346","6347","6348","6349","6350","6351","6352","6353","6354","6355","6356","6357","6358","6359","6360","6361","6362","6363","6364","6365","6366","6367","6368","6369","6370","6371","6372","6373","6374","6375","6376","6377","6378","6379","6380","6381","6382","6383","6384","6385","6386","6387","6388","6389","6390","6391","6392","6393","6394","6395","6396","6397","6398","6399","6400","6401","6402","6403","6404","6405","6406","6407","6408","6409","6410","6411","6412","6413","6414","6415","6416","6417","6418","6419","6420","6421","6422","6423","6424","6425","6426","6427","6428","6429","6430","6431","6432","6433","6434","6435","6436","6437","6438","6439","6440","6441","6442","6443","6444","6445","6446","6447","6448","6449","6450","6451","6452","6453","6454","6455","6456","6457","6458","6459","6460","6461","6462","6463","6464","6465","6466","6467","6468","6469","6470","6471","6472","6473","6474","6475","6476","6477","6478","6479","6480","6481","6482","6483","6484","6485","6486","6487","6488","6489","6490","6491","6492","6493","6494","6495","6496","6497","6498","6499","6500","6501","6502","6503","6504","6505","6506","6507","6508","6509","6510","6511","6512","6513","6514","6515","6516","6517","6518","6519","6520","6521","6522","6523","6524","6525","6526","6527","6528","6529","6530","6531","6532","6533","6534","6535","6536","6537","6538","6539","6540","6541","6542","6543","6544","6545","6546","6547","6548","6549","6550","6551","6552","6553","6554","6555","6556","6557","6558","6559","6560","6561","6562","6563","6564","6565","6566","6567","6568","6569","6570","6571","6572","6573","6574","6575","6576","6577","6578","6579","6580","6581","6582","6583","6584","6585","6586","6587","6588","6589","6590","6591","6592","6593","6594","6595","6596","6597","6598","6599","6600","6601","6602","6603","6604","6605","6606","6607","6608","6609","6610","6611","6612","6613","6614","6615","6616","6617","6618","6619","6620","6621","6622","6623","6624","6625","6626","6627","6628","6629","6630","6631","6632","6633","6634","6635","6636","6637","6638","6639","6640","6641","6642","6643","6644","6645","6646","6647","6648","6649","6650","6651","6652","6653","6654","6655","6656","6657","6658","6659","6660","6661","6662","6663","6664","6665","6666","6667","6668","6669","6670","6671","6672","6673","6674","6675","6676","6677","6678","6679","6680","6681","6682","6683","6684","6685","6686","6687","6688","6689","6690","6691","6692","6693","6694","6695","6696","6697","6698","6699","6700","6701","6702","6703","6704","6705","6706","6707","6708","6709","6710","6711","6712","6713","6714","6715","6716","6717","6718","6719","6720","6721","6722","6723","6724","6725","6726","6727","6728","6729","6730","6731","6732","6733","6734","6735","6736","6737","6738","6739","6740","6741","6742","6743","6744","6745","6746","6747","6748","6749","6750","6751","6752","6753","6754","6755","6756","6757","6758","6759","6760","6761","6762","6763","6764","6765","6766","6767","6768","6769","6770","6771","6772","6773","6774","6775","6776","6777","6778","6779","6780","6781","6782","6783","6784","6785","6786","6787","6788","6789","6790","6791","6792","6793","6794","6795","6796","6797","6798","6799","6800","6801","6802","6803","6804","6805","6806","6807","6808","6809","6810","6811","6812","6813","6814","6815","6816","6817","6818","6819","6820","6821","6822","6823","6824","6825","6826","6827","6828","6829","6830","6831","6832","6833","6834","6835","6836","6837","6838","6839","6840","6841","6842","6843","6844","6845","6846","6847","6848","6849","6850","6851","6852","6853","6854","6855","6856","6857","6858","6859","6860","6861","6862","6863","6864","6865","6866","6867","6868","6869","6870","6871","6872","6873","6874","6875","6876","6877","6878","6879","6880","6881","6882","6883","6884","6885","6886","6887","6888","6889","6890","6891","6892","6893","6894","6895","6896","6897","6898","6899","6900","6901","6902","6903","6904","6905","6906","6907","6908","6909","6910","6911","6912","6913","6914","6915","6916","6917","6918","6919","6920","6921","6922","6923","6924","6925","6926","6927","6928","6929","6930","6931","6932","6933","6934","6935","6936","6937","6938","6939","6940","6941","6942","6943","6944","6945","6946","6947","6948","6949","6950","6951","6952","6953","6954","6955","6956","6957","6958","6959","6960","6961","6962","6963","6964","6965","6966","6967","6968","6969","6970","6971","6972","6973","6974","6975","6976","6977","6978","6979","6980","6981","6982","6983","6984","6985","6986","6987","6988","6989","6990","6991","6992","6993","6994","6995","6996","6997","6998","6999","7000","7001","7002","7003","7004","7005","7006","7007","7008","7009","7010","7011","7012","7013","7014","7015","7016","7017","7018","7019","7020","7021","7022","7023","7024","7025","7026","7027","7028","7029","7030","7031","7032","7033","7034","7035","7036","7037","7038","7039","7040","7041","7042","7043","7044","7045","7046","7047","7048","7049","7050","7051","7052","7053","7054","7055","7056","7057","7058","7059","7060","7061","7062","7063","7064","7065","7066","7067","7068","7069","7070","7071","7072","7073","7074","7075","7076","7077","7078","7079","7080","7081","7082","7083","7084","7085","7086","7087","7088","7089","7090","7091","7092","7093","7094","7095","7096","7097","7098","7099","7100","7101","7102","7103","7104","7105","7106","7107","7108","7109","7110","7111","7112","7113","7114","7115","7116","7117","7118","7119","7120","7121","7122","7123","7124","7125","7126","7127","7128","7129","7130","7131","7132","7133","7134","7135","7136","7137","7138","7139","7140","7141","7142","7143","7144","7145","7146","7147","7148","7149","7150","7151","7152","7153","7154","7155","7156","7157","7158","7159","7160","7161","7162","7163","7164","7165","7166","7167","7168","7169","7170","7171","7172","7173","7174","7175","7176","7177","7178","7179","7180","7181","7182","7183","7184","7185","7186","7187","7188","7189","7190","7191","7192","7193","7194","7195","7196","7197","7198","7199","7200","7201","7202","7203","7204","7205","7206","7207","7208","7209","7210","7211","7212","7213","7214","7215","7216","7217","7218","7219","7220","7221","7222","7223","7224","7225","7226","7227","7228","7229","7230","7231","7232","7233","7234","7235","7236","7237","7238","7239","7240","7241","7242","7243","7244","7245","7246","7247","7248","7249","7250","7251","7252","7253","7254","7255","7256","7257","7258","7259","7260","7261","7262","7263","7264","7265","7266","7267","7268","7269","7270","7271","7272","7273","7274","7275","7276","7277","7278","7279","7280","7281","7282","7283","7284","7285","7286","7287","7288","7289","7290","7291","7292","7293","7294","7295","7296","7297","7298","7299","7300","7301","7302","7303","7304","7305","7306","7307","7308","7309","7310","7311","7312","7313","7314","7315","7316","7317","7318","7319","7320","7321","7322","7323","7324","7325","7326","7327","7328","7329","7330","7331","7332","7333","7334","7335","7336","7337","7338","7339","7340","7341","7342","7343","7344","7345","7346","7347","7348","7349","7350","7351","7352","7353","7354","7355","7356","7357","7358","7359","7360","7361","7362","7363","7364","7365","7366","7367","7368","7369","7370","7371","7372","7373","7374","7375","7376","7377","7378","7379","7380","7381","7382","7383","7384","7385","7386","7387","7388","7389","7390","7391","7392","7393","7394","7395","7396","7397","7398","7399","7400","7401","7402","7403","7404","7405","7406","7407","7408","7409","7410","7411","7412","7413","7414","7415","7416","7417","7418","7419","7420","7421","7422","7423","7424","7425","7426","7427","7428","7429","7430","7431","7432","7433","7434","7435","7436","7437","7438","7439","7440","7441","7442","7443","7444","7445","7446","7447","7448","7449","7450","7451","7452","7453","7454","7455","7456","7457","7458","7459","7460","7461","7462","7463","7464","7465","7466","7467","7468","7469","7470","7471","7472","7473","7474","7475","7476","7477","7478","7479","7480","7481","7482","7483","7484","7485","7486","7487","7488","7489","7490","7491","7492","7493","7494","7495","7496","7497","7498","7499","7500","7501","7502","7503","7504","7505","7506","7507","7508","7509","7510","7511","7512","7513","7514","7515","7516","7517","7518","7519","7520","7521","7522","7523","7524","7525","7526","7527","7528","7529","7530","7531","7532","7533","7534","7535","7536","7537","7538","7539","7540","7541","7542","7543","7544","7545","7546","7547","7548","7549","7550","7551","7552","7553","7554","7555","7556","7557","7558","7559","7560","7561","7562","7563","7564","7565","7566","7567","7568","7569","7570","7571","7572","7573","7574","7575","7576","7577","7578","7579","7580","7581","7582","7583","7584","7585","7586","7587","7588","7589","7590","7591","7592","7593","7594","7595","7596","7597","7598","7599","7600","7601","7602","7603","7604","7605","7606","7607","7608","7609","7610","7611","7612","7613","7614","7615","7616","7617","7618","7619","7620","7621","7622","7623","7624","7625","7626","7627","7628","7629","7630","7631","7632","7633","7634","7635","7636","7637","7638","7639","7640","7641","7642","7643","7644","7645","7646","7647","7648","7649","7650","7651","7652","7653","7654","7655","7656","7657","7658","7659","7660","7661","7662","7663","7664","7665","7666","7667","7668","7669","7670","7671","7672","7673","7674","7675","7676","7677","7678","7679","7680","7681","7682","7683","7684","7685","7686","7687","7688","7689","7690","7691","7692","7693","7694","7695","7696","7697","7698","7699","7700","7701","7702","7703","7704","7705","7706","7707","7708","7709","7710","7711","7712","7713","7714","7715","7716","7717","7718","7719","7720","7721","7722","7723","7724","7725","7726","7727","7728","7729","7730","7731","7732","7733","7734","7735","7736","7737","7738","7739","7740","7741","7742","7743","7744","7745","7746","7747","7748","7749","7750","7751","7752","7753","7754","7755","7756","7757","7758","7759","7760","7761","7762","7763","7764","7765","7766","7767","7768","7769","7770","7771","7772","7773","7774","7775","7776","7777","7778","7779","7780","7781","7782","7783","7784","7785","7786","7787","7788","7789","7790","7791","7792","7793","7794","7795","7796","7797","7798","7799","7800","7801","7802","7803","7804","7805","7806","7807","7808","7809","7810","7811","7812","7813","7814","7815","7816","7817","7818","7819","7820","7821","7822","7823","7824","7825","7826","7827","7828","7829","7830","7831","7832","7833","7834","7835","7836","7837","7838","7839","7840","7841","7842","7843","7844","7845","7846","7847","7848","7849","7850","7851","7852","7853","7854","7855","7856","7857","7858","7859","7860","7861","7862","7863","7864","7865","7866","7867","7868","7869","7870","7871","7872","7873","7874","7875","7876","7877","7878","7879","7880","7881","7882","7883","7884","7885","7886","7887","7888","7889","7890","7891","7892","7893","7894","7895","7896","7897","7898","7899","7900","7901","7902","7903","7904","7905","7906","7907","7908","7909","7910","7911","7912","7913","7914","7915","7916","7917","7918","7919","7920","7921","7922","7923","7924","7925","7926","7927","7928","7929","7930","7931","7932","7933","7934","7935","7936","7937","7938","7939","7940","7941","7942","7943","7944","7945","7946","7947","7948","7949","7950","7951","7952","7953","7954","7955","7956","7957","7958","7959","7960","7961","7962","7963","7964","7965","7966","7967","7968","7969","7970","7971","7972","7973","7974","7975","7976","7977","7978","7979","7980","7981","7982","7983","7984","7985","7986","7987","7988","7989","7990","7991","7992","7993","7994","7995","7996","7997","7998","7999","8000","8001","8002","8003","8004","8005","8006","8007","8008","8009","8010","8011","8012","8013","8014","8015","8016","8017","8018","8019","8020","8021","8022","8023","8024","8025","8026","8027","8028","8029","8030","8031","8032","8033","8034","8035","8036","8037","8038","8039","8040","8041","8042","8043","8044","8045","8046","8047","8048","8049","8050","8051","8052","8053","8054","8055","8056","8057","8058","8059","8060","8061","8062","8063","8064","8065","8066","8067","8068","8069","8070","8071","8072","8073","8074","8075","8076","8077","8078","8079","8080","8081","8082","8083","8084","8085","8086","8087","8088","8089","8090","8091","8092","8093","8094","8095","8096","8097","8098","8099","8100","8101","8102","8103","8104","8105","8106","8107","8108","8109","8110","8111","8112","8113","8114","8115","8116","8117","8118","8119","8120","8121","8122","8123","8124","8125","8126","8127","8128","8129","8130","8131","8132","8133","8134","8135","8136","8137","8138","8139","8140","8141","8142","8143","8144","8145","8146","8147","8148","8149","8150","8151","8152","8153","8154","8155","8156","8157","8158","8159","8160","8161","8162","8163","8164","8165","8166","8167","8168","8169","8170","8171","8172","8173","8174","8175","8176","8177","8178","8179","8180","8181","8182","8183","8184","8185","8186","8187","8188","8189","8190","8191","8192","8193","8194","8195","8196","8197","8198","8199","8200","8201","8202","8203","8204","8205","8206","8207","8208","8209","8210","8211","8212","8213","8214","8215","8216","8217","8218","8219","8220","8221","8222","8223","8224","8225","8226","8227","8228","8229","8230","8231","8232","8233","8234","8235","8236","8237","8238","8239","8240","8241","8242","8243","8244","8245","8246","8247","8248","8249","8250","8251","8252","8253","8254","8255","8256","8257","8258","8259","8260","8261","8262","8263","8264","8265","8266","8267","8268","8269","8270","8271","8272","8273","8274","8275","8276","8277","8278","8279","8280","8281","8282","8283","8284","8285","8286","8287","8288","8289","8290","8291","8292","8293","8294","8295","8296","8297","8298","8299","8300","8301","8302","8303","8304","8305","8306","8307","8308","8309","8310","8311","8312","8313","8314","8315","8316","8317","8318","8319","8320","8321","8322","8323","8324","8325","8326","8327","8328","8329","8330","8331","8332","8333","8334","8335","8336","8337","8338","8339","8340","8341","8342","8343","8344","8345","8346","8347","8348","8349","8350","8351","8352","8353","8354","8355","8356","8357","8358","8359","8360","8361","8362","8363","8364","8365","8366","8367","8368","8369","8370","8371","8372","8373","8374","8375","8376","8377","8378","8379","8380","8381","8382","8383","8384","8385","8386","8387","8388","8389","8390","8391","8392","8393","8394","8395","8396","8397","8398","8399","8400","8401","8402","8403","8404","8405","8406","8407","8408","8409","8410","8411","8412","8413","8414","8415","8416","8417","8418","8419","8420","8421","8422","8423","8424","8425","8426","8427","8428","8429","8430","8431","8432","8433","8434","8435","8436","8437","8438","8439","8440","8441","8442","8443","8444","8445","8446","8447","8448","8449","8450","8451","8452","8453","8454","8455","8456","8457","8458","8459","8460","8461","8462","8463","8464","8465","8466","8467","8468","8469","8470","8471","8472","8473","8474","8475","8476","8477","8478","8479","8480","8481","8482","8483","8484","8485","8486","8487","8488","8489","8490","8491","8492","8493","8494","8495","8496","8497","8498","8499","8500","8501","8502","8503","8504","8505","8506","8507","8508","8509","8510","8511","8512","8513","8514","8515","8516","8517","8518","8519","8520","8521","8522","8523","8524","8525","8526","8527","8528","8529","8530","8531","8532","8533","8534","8535","8536","8537","8538","8539","8540","8541","8542","8543","8544","8545","8546","8547","8548","8549","8550","8551","8552","8553","8554","8555","8556","8557","8558","8559","8560","8561","8562","8563","8564","8565","8566","8567","8568","8569","8570","8571","8572","8573","8574","8575","8576","8577","8578","8579","8580","8581","8582","8583","8584","8585","8586","8587","8588","8589","8590","8591","8592","8593","8594","8595","8596","8597","8598","8599","8600","8601","8602","8603","8604","8605","8606","8607","8608","8609","8610","8611","8612","8613","8614","8615","8616","8617","8618","8619","8620","8621","8622","8623","8624","8625","8626","8627","8628","8629","8630","8631","8632","8633","8634","8635","8636","8637","8638","8639","8640","8641","8642","8643","8644","8645","8646","8647","8648","8649","8650","8651","8652","8653","8654","8655","8656","8657","8658","8659","8660","8661","8662","8663","8664","8665","8666","8667","8668","8669","8670","8671","8672","8673","8674","8675","8676","8677","8678","8679","8680","8681","8682","8683","8684","8685","8686","8687","8688","8689","8690","8691","8692","8693","8694","8695","8696","8697","8698","8699","8700","8701","8702","8703","8704","8705","8706","8707","8708","8709","8710","8711","8712","8713","8714","8715","8716","8717","8718","8719","8720","8721","8722","8723","8724","8725","8726","8727","8728","8729","8730","8731","8732","8733","8734","8735","8736","8737","8738","8739","8740","8741","8742","8743","8744","8745","8746","8747","8748","8749","8750","8751","8752","8753","8754","8755","8756","8757","8758","8759","8760","8761","8762","8763","8764","8765","8766","8767","8768","8769","8770","8771","8772","8773","8774","8775","8776","8777","8778","8779","8780","8781","8782","8783","8784","8785","8786","8787","8788","8789","8790","8791","8792","8793","8794","8795","8796","8797","8798","8799","8800","8801","8802","8803","8804","8805","8806","8807","8808","8809","8810","8811","8812","8813","8814","8815","8816","8817","8818","8819","8820","8821","8822","8823","8824","8825","8826","8827","8828","8829","8830","8831","8832","8833","8834","8835","8836","8837","8838","8839","8840","8841","8842","8843","8844","8845","8846","8847","8848","8849","8850","8851","8852","8853","8854","8855","8856","8857","8858","8859","8860","8861","8862","8863","8864","8865","8866","8867","8868","8869","8870","8871","8872","8873","8874","8875","8876","8877","8878","8879","8880","8881","8882","8883","8884","8885","8886","8887","8888","8889","8890","8891","8892","8893","8894","8895","8896","8897","8898","8899","8900","8901","8902","8903","8904","8905","8906","8907","8908","8909","8910","8911","8912","8913","8914","8915","8916","8917","8918","8919","8920","8921","8922","8923","8924","8925","8926","8927","8928","8929","8930","8931","8932","8933","8934","8935","8936","8937","8938","8939","8940","8941","8942","8943","8944","8945","8946","8947","8948","8949","8950","8951","8952","8953","8954","8955","8956","8957","8958","8959","8960","8961","8962","8963","8964","8965","8966","8967","8968","8969","8970","8971","8972","8973","8974","8975","8976","8977","8978","8979","8980","8981","8982","8983","8984","8985","8986","8987","8988","8989","8990","8991","8992","8993","8994","8995","8996","8997","8998","8999","9000","9001","9002","9003","9004","9005","9006","9007","9008","9009","9010","9011","9012","9013","9014","9015","9016","9017","9018","9019","9020","9021","9022","9023","9024","9025","9026","9027","9028","9029","9030","9031","9032","9033","9034","9035","9036","9037","9038","9039","9040","9041","9042","9043","9044","9045","9046","9047","9048","9049","9050","9051","9052","9053","9054","9055","9056","9057","9058","9059","9060","9061","9062","9063","9064","9065","9066","9067","9068","9069","9070","9071","9072","9073","9074","9075","9076","9077","9078","9079","9080","9081","9082","9083","9084","9085","9086","9087","9088","9089","9090","9091","9092","9093","9094","9095","9096","9097","9098","9099","9100","9101","9102","9103","9104","9105","9106","9107","9108","9109","9110","9111","9112","9113","9114","9115","9116","9117","9118","9119","9120","9121","9122","9123","9124","9125","9126","9127","9128","9129","9130","9131","9132","9133","9134","9135","9136","9137","9138","9139","9140","9141","9142","9143","9144","9145","9146","9147","9148","9149","9150","9151","9152","9153","9154","9155","9156","9157","9158","9159","9160","9161","9162","9163","9164","9165","9166","9167","9168","9169","9170","9171","9172","9173","9174","9175","9176","9177","9178","9179","9180","9181","9182","9183","9184","9185","9186","9187","9188","9189","9190","9191","9192","9193","9194","9195","9196","9197","9198","9199","9200","9201","9202","9203","9204","9205","9206","9207","9208","9209","9210","9211","9212","9213","9214","9215","9216","9217","9218","9219","9220","9221","9222","9223","9224","9225","9226","9227","9228","9229","9230","9231","9232","9233","9234","9235","9236","9237","9238","9239","9240","9241","9242","9243","9244","9245","9246","9247","9248","9249","9250","9251","9252","9253","9254","9255","9256","9257","9258","9259","9260","9261","9262","9263","9264","9265","9266","9267","9268","9269","9270","9271","9272","9273","9274","9275","9276","9277","9278","9279","9280","9281","9282","9283","9284","9285","9286","9287","9288","9289","9290","9291","9292","9293","9294","9295","9296","9297","9298","9299","9300","9301","9302","9303","9304","9305","9306","9307","9308","9309","9310","9311","9312","9313","9314","9315","9316","9317","9318","9319","9320","9321","9322","9323","9324","9325","9326","9327","9328","9329","9330","9331","9332","9333","9334","9335","9336","9337","9338","9339","9340","9341","9342","9343","9344","9345","9346","9347","9348","9349","9350","9351","9352","9353","9354","9355","9356","9357","9358","9359","9360","9361","9362","9363","9364","9365","9366","9367","9368","9369","9370","9371","9372","9373","9374","9375","9376","9377","9378","9379","9380","9381","9382","9383","9384","9385","9386","9387","9388","9389","9390","9391","9392","9393","9394","9395","9396","9397","9398","9399","9400","9401","9402","9403","9404","9405","9406","9407","9408","9409","9410","9411","9412","9413","9414","9415","9416","9417","9418","9419","9420","9421","9422","9423","9424","9425","9426","9427","9428","9429","9430","9431","9432","9433","9434","9435","9436","9437","9438","9439","9440","9441","9442","9443","9444","9445","9446","9447","9448","9449","9450","9451","9452","9453","9454","9455","9456","9457","9458","9459","9460","9461","9462","9463","9464","9465","9466","9467","9468","9469","9470","9471","9472","9473","9474","9475","9476","9477","9478","9479","9480","9481","9482","9483","9484","9485","9486","9487","9488","9489","9490","9491","9492","9493","9494","9495","9496","9497","9498","9499","9500","9501","9502","9503","9504","9505","9506","9507","9508","9509","9510","9511","9512","9513","9514","9515","9516","9517","9518","9519","9520","9521","9522","9523","9524","9525","9526","9527","9528","9529","9530","9531","9532","9533","9534","9535","9536","9537","9538","9539","9540","9541","9542","9543","9544","9545","9546","9547","9548","9549","9550","9551","9552","9553","9554","9555","9556","9557","9558","9559","9560","9561","9562","9563","9564","9565","9566","9567","9568","9569","9570","9571","9572","9573","9574","9575","9576","9577","9578","9579","9580","9581","9582","9583","9584","9585","9586","9587","9588","9589","9590","9591","9592","9593","9594","9595","9596","9597","9598","9599","9600","9601","9602","9603","9604","9605","9606","9607","9608","9609","9610","9611","9612","9613","9614","9615","9616","9617","9618","9619","9620","9621","9622","9623","9624","9625","9626","9627","9628","9629","9630","9631","9632","9633","9634","9635","9636","9637","9638","9639","9640","9641","9642","9643","9644","9645","9646","9647","9648","9649","9650","9651","9652","9653","9654","9655","9656","9657","9658","9659","9660","9661","9662","9663","9664","9665","9666","9667","9668","9669","9670","9671","9672","9673","9674","9675","9676","9677","9678","9679","9680","9681","9682","9683","9684","9685","9686","9687","9688","9689","9690","9691","9692","9693","9694","9695","9696","9697","9698","9699","9700","9701","9702","9703","9704","9705","9706","9707","9708","9709","9710","9711","9712","9713","9714","9715","9716","9717","9718","9719","9720","9721","9722","9723","9724","9725","9726","9727","9728"],["403667","399778","399772","372639","368024","366057","359802","359425","358210","356664","354760","353566","353485","349506","347868","345756","345584","341476","340107","338503","338502","338501","336467","334819","334158","333029","331247","327893","327184","326729","326274","326272","325125","324172","324026","309354","284452","267685","259096","90525","90414","90413","88991","86419","85161","82124","79477","70111","65993","409769","409710","409693","409357","409301","409294","409262","409145","408944","408868","408864","408827","408764","408608","408495","408398","408340","408338","408166","408158","408104","408071","408047","407727","407654","407585","407534","407054","406986","406873","406766","406750","406534","406517","406485","406414","406218","406106","405981","405951","405837","405454","405444","405398","405042","405039","405030","404946","404936","404886","404829","404827","404826","404823","404818","404809","404804","404797","404787","404785","404783","404779","404778","404777","404770","404768","404765","404759","404758","404757","404756","404754","404751","404746","404744","404739","404736","404735","404726","404725","404723","404722","404721","404720","404719","404712","404711","404703","404701","404700","404695","404689","404687","404686","404683","404677","404673","404669","404667","404666","404659","404658","404654","404651","404649","404648","404639","404638","404637","404636","404634","404630","404625","404624","404623","404622","404619","404611","404610","404608","404606","404603","404601","404600","404597","404594","404589","404586","404585","404583","404578","404577","404567","404565","404564","404552","404551","404548","404546","404544","404542","404540","404537","404535","404533","404528","404522","404521","404520","404517","404491","404483","404474","404394","404337","404290","404281","404268","404244","404230","404169","404109","404019","403875","403868","403750","403684","403361","403329","403167","403149","403090","402660","402644","402641","402600","402516","402505","402446","402423","402345","402289","402116","401977","401949","401893","401876","401863","401803","401457","401452","401418","401415","401380","401368","401298","401204","401188","401133","401112","401101","400987","400884","400811","400793","400777","400705","400665","400627","400537","400455","400453","400361","400353","400322","400290","400261","400230","400039","399852","399812","399714","399677","399660","399601","399583","399578","399576","399574","399548","399457","399263","399259","399245","399237","399218","399200","399169","399034","399018","398808","398747","39856","398555","398398","398383","398379","398332","398314","398313","398127","398104","397934","397799","397769","397748","397742","397694","397594","397589","397545","397510","397466","397392","397331","397251","397222","397213","397196","397084","397076","397075","397074","397070","397061","397060","397056","397055","397047","397042","397040","397038","397032","397031","397028","397023","397020","397018","397017","397014","397007","397006","397004","397003","396999","396998","396989","396987","396981","396978","396973","396972","396966","396964","396956","396955","396950","396947","396943","396942","396941","396940","396937","396934","396933","396930","396929","396928","396925","396916","396914","396913","396912","396908","396906","396905","396903","396902","396900","396895","396894","396893","396892","396888","396887","396884","396881","396879","396866","396863","396860","396854","396853","396851","396850","396845","396837","396826","396821","396811","396809","396801","396800","396799","396796","396791","396787","396786","396785","396784","396781","396778","396775","396773","396771","396763","396762","396761","396760","396759","396758","396748","396741","396580","396510","396433","396429","396305","396225","396207","396205","396114","396067","396012","395935","395890","395788","395772","395701","395608","395584","395574","395548","395447","395396","395352","395350","395348","395277","395260","395235","395165","395057","395039","394971","394956","394948","394923","394921","394919","394912","394890","394808","394794","394782","394732","394725","394705","394581","394574","394567","394531","394524","394491","394458","394445","394440","394200","394169","394148","394101","394085","394068","394063","393990","393959","393952","393935","393898","393824","393822","393781","393771","393721","393701","393672","393670","393663","393660","393643","393615","393582","393572","393553","393549","393524","393513","393507","393397","393346","393296","393270","393181","393092","393083","392985","392970","392950","392932","392916","392843","392818","392783","392749","392646","392473","392435","392379","392359","392277","392252","392104","392061","392051","392022","392010","391961","391911","391880","391807","391768","391759","391745","391728","391712","391593","391592","391494","391491","391474","391414","391302","391299","391281","391270","391232","391189","391118","391083","391081","391075","391060","391027","390949","390843","390777","390754","390737","390698","390664","390547","390453","390448","390438","390286","390251","390150","390120","390108","390099","390061","390057","390041","390001","389978","389930","389896","389860","389830","389732","389716","389711","389667","389590","389588","389539","389509","389427","389423","389393","389333","389276","389265","389195","389184","389147","389143","389101","389070","389054","389001","388920","388865","388839","388830","388821","388745","388733","388635","388627","388607","388585","388373","388368","388364","388302","388296","388289","388243","388204","388181","388148","388116","388086","388072","388043","388013","387973","387954","387797","387739","387724","387626","387543","387513","387455","387432","387430","387425","387405","387403","387295","387228","387214","387205","387134","387121","387092","387008","386995","386964","386951","386947","386928","386921","386904","386889","386860","386819","386817","386797","386782","386700","386687","386666","386665","386662","386654","386643","386642","386641","386640","386637","386597","386595","386588","386569","386535","386504","386498","386483","386454","386451","386446","386445","386421","386407","386391","386384","386380","386314","386294","386285","386242","386227","386225","386211","386181","386140","386119","386054","386034","385952","385885","385867","385847","385845","385821","385795","385783","385746","385679","385591","385585","385535","385499","385497","385409","385396","385368","385353","385289","385265","385263","385261","385250","385245","385234","385233","385229","385193","385111","385109","385067","385023","385021","384979","384927","384869","384798","384794","384737","384706","384689","384678","384673","384660","384620","384479","384472","384411","384401","384379","384295","384291","384251","384230","384115","384104","383957","383904","383903","383834","383762","383737","383587","383581","383577","383573","383555","383554","383552","383468","383443","383413","383254","383176","383160","383148","383134","383086","383081","383068","383053","383051","383048","383022","383002","382997","382927","382918","382864","382863","382843","382839","382825","382795","382782","382776","382739","382698","382667","382635","382621","382591","382579","382565","382552","382522","382508","382500","382490","382488","382484","382482","382476","382455","382446","382432","382414","382310","382306","382295","382293","382271","382262","382191","382179","382162","382157","382150","382087","382053","381928","381915","381883","381835","381811","381809","381808","381807","381806","381805","381789","381781","381672","381649","381644","381629","381609","381589","381576","381548","381472","381449","381431","381356","381316","381282","381280","381231","381204","381194","381033","381032","381031","381030","381029","381028","381027","381026","381022","381019","381018","381017","381016","381015","381014","381013","381012","381011","381010","381009","381008","381007","381006","381005","381004","381003","381001","380998","380997","380996","380995","380993","380992","380991","380990","380988","380987","380986","380985","380984","380983","380982","380980","380979","380978","380977","380976","380975","380974","380973","380972","380971","380970","380969","380968","380967","380966","380963","380962","380961","380960","380959","380958","380957","380956","380955","380954","380953","380952","380950","380948","380947","380946","380944","380943","380942","380941","380940","380939","380938","380937","380935","380934","380933","380931","380929","380928","380925","380924","380923","380921","380918","380917","380916","380915","380914","380913","380911","380910","380909","380908","380907","380906","380904","380902","380901","380900","380899","380897","380896","380895","380894","380893","380892","380891","380890","380889","380888","380887","380886","380885","380884","380883","380882","380881","380880","380879","380878","380877","380876","380874","380873","380872","380871","380869","380868","380803","380748","380730","380662","380651","380647","380634","380630","380628","380610","380537","380495","380493","380470","380442","380394","380370","380348","380232","380179","380169","380163","380089","380034","379992","379978","379955","379920","379861","379709","379692","379657","379649","379490","379488","379473","379446","379404","379312","379294","379278","379249","379236","379190","379153","379046","379001","378968","378941","378907","378890","378762","378758","378752","378744","378742","378706","378696","378682","378610","378533","378483","378473","378467","378459","378365","378322","378290","378248","378236","378147","378096","378012","378007","377982","377924","377859","377846","377839","377812","377810","377804","377803","377772","377686","377605","377591","377489","377448","377403","377396","377333","377327","377310","377251","377249","377202","377193","377172","377102","377087","377063","377026","376995","376963","376927","376750","376742","376736","376734","376700","376692","376671","376638","376636","376630","376589","376579","376554","376539","376528","376456","376448","376375","376368","376359","376322","376312","376231","376226","376216","376210","376084","376039","375992","375988","375981","375970","375948","375927","375814","375797","375781","375760","375684","375667","375627","375625","375611","375609","375577","375563","375498","375495","375488","375486","375473","375437","375426","375421","375418","375416","375386","375361","375313","375308","375299","375216","375211","375197","375196","375194","375193","375192","375191","375190","375188","375184","375183","375182","375181","375180","375178","375177","375176","375174","375173","375172","375170","375167","375166","375164","375162","375159","375156","375154","375152","375151","375150","375149","375145","375144","375143","375142","375141","375137","375136","375135","375134","375133","375132","375131","375129","375127","375126","375125","375124","375123","375121","375120","375119","375118","375117","375116","375115","375114","375113","375110","375107","375105","375103","375102","375101","375100","375099","375098","375097","375096","375094","375093","375092","375091","375090","375088","375087","375085","375084","375082","375080","375079","375078","375077","375076","375075","375074","375073","375072","375070","375069","375067","375064","375063","375060","375057","375056","375055","375054","375053","375051","375048","375046","375045","375044","375043","375041","375040","375038","375034","375033","375032","375029","375027","375025","375024","375022","375021","375019","375017","375015","375012","375010","374999","374972","374965","374930","374921","374904","374890","374882","374852","374846","374794","374750","374732","374659","374644","374638","374601","374380","374285","374279","374196","374159","374131","374122","374107","374078","374062","374023","373990","373979","373972","373964","373959","373942","373920","373894","373890","373883","373879","373875","373873","373838","373757","373705","373690","373684","373679","373650","373614","373575","373564","373545","373543","373492","373469","373445","373438","373409","373367","373191","373170","373123","373109","373107","373069","373056","372970","372963","372882","372869","372860","372838","372831","372771","372767","372665","372644","372642","372623","372614","372538","372536","372496","372485","372463","372442","372372","372362","372359","372313","372304","372282","372208","372150","372128","372087","372079","372074","372043","372017","372008","371962","371933","371929","371913","371873","371853","371816","371805","371772","371735","371706","371587","371577","371547","371516","371510","371508","371497","371495","371491","371489","371488","371459","371453","371449","371427","371418","371345","371338","371320","371318","371316","371301","371297","371248","371193","371187","371157","371103","371052","371031","371017","371000","370998","370958","370941","370928","370907","370872","370867","370832","370791","370765","370763","370738","370735","370732","370727","370725","370723","370722","370721","370720","370717","370714","370711","370707","370701","370700","370698","370697","370696","370695","370694","370688","370687","370686","370683","370675","370671","370668","370667","370665","370660","370659","370658","370649","370648","370640","370634","370630","370627","370621","370620","370619","370615","370613","370611","370603","370602","370600","370597","370542","370538","370524","370511","370493","370386","370324","370310","370308","370222","370186","370151","370134","370130","370071","370038","369969","369935","369917","369896","369803","369779","369766","369753","369708","369686","369678","369616","369580","369572","369537","369525","369491","369444","369432","369390","369372","369360","369334","369312","369289","369245","369219","369216","369214","369211","369130","369126","369112","369009","369005","368950","368948","368932","368904","368865","368832","368813","368778","368773","368748","368746","368723","368672","368667","368623","368567","368538","368518","368497","368474","368456","368429","368421","368417","368249","368228","368043","368034","368029","367959","367947","367812","367811","367797","367793","367756","367742","367717","367711","367708","367703","367674","367672","367668","367631","367613","367568","367500","367415","367322","367292","367266","367222","367143","367141","367138","367124","367053","367046","367033","366996","366994","366989","366948","366922","366920","366910","366895","366875","366819","366759","366745","366719","366633","366622","366612","366573","366522","366519","366518","366517","366515","366513","366511","366506","366505","366504","366503","366502","366501","366498","366497","366494","366493","366492","366491","366489","366486","366481","366480","366478","366477","366475","366473","366467","366466","366465","366460","366459","366458","366456","366455","366454","366453","366451","366448","366442","366439","366435","366434","366433","366432","366430","366429","366428","366424","366422","366417","366416","366409","366401","366400","366392","366389","366388","366382","366381","366380","366375","366373","366370","366364","366358","366355","366353","366351","366347","366343","366339","366337","366336","366323","366321","366317","366315","366314","366313","366311","366273","366230","366226","366187","366155","366144","366116","366106","366076","366047","366045","366018","366003","365972","365962","365955","365951","365937","365911","365909","365885","365777","365649","365643","365637","365619","365607","365585","365560","365536","365526","365392","365346","365340","365336","365332","365313","365280","365268","365266","365264","365253","365237","365205","365186","365132","365119","365087","365082","365077","365055","365046","365038","364988","364977","364959","364929","364848","364830","364820","364789","364781","364767","364760","364716","364705","364685","364662","364640","364617","364597","364555","364551","364533","364495","364445","364441","364426","364409","364396","364394","364356","364321","364300","364295","364276","364274","364261","364259","364198","364183","364095","364091","364072","364067","364063","364055","364029","364026","364014","363916","363888","363882","363844","363830","363812","363811","363783","363778","363760","363728","363714","363674","363655","363626","363589","363571","363558","363551","363548","363491","363424","363419","363343","363336","363274","363272","363256","363212","363199","363188","363146","363142","363103","363091","363086","363060","363053","363048","363026","363019","363004","362994","362980","362942","362860","362843","362807","362775","362739","362704","362702","362700","362683","362675","362674","362672","362671","362667","362653","362652","362651","362648","362646","362640","362638","362635","362633","362632","362630","362628","362623","362622","362618","362606","362602","362582","362573","362571","362481","362440","362407","362386","362367","362350","362321","362316","362306","362288","362267","362230","362162","362090","362036","362019","362016","361981","361867","361860","361817","361808","361789","361782","361763","361748","361714","361699","361652","361624","361605","361513","361497","361491","361487","361428","361358","361348","361300","361273","361257","361253","361241","361235","361223","361134","361133","361130","361126","361103","361087","361015","361010","360987","360982","360974","360964","360939","360936","360855","360847","360834","360831","360786","360750","360661","360658","360646","360641","360632","360615","360609","360573","360571","360505","360466","360428","360424","360419","360412","360407","360404","360377","360349","360345","360276","360245","360237","360231","360229","360210","360125","360119","360096","360092","360046","360023","360021","360018","360013","360012","360011","360006","359999","359998","359992","359991","359984","359979","359973","359972","359971","359968","359964","359962","359960","359958","359956","359955","359954","359953","359951","359948","359937","359927","359925","359923","359916","359914","359913","359912","359907","359905","359899","359818","359799","359785","359756","359745","359726","359668","359662","359618","359601","359593","359591","359575","359557","359553","359549","359511","359492","359483","359373","359370","359363","359354","359352","359340","359332","359329","359312","359299","359291","359286","359274","359264","359255","359174","359145","359134","359106","359080","359073","359061","359055","359052","359047","359040","359035","359010","359006","359003","358974","358953","358949","358947","358924","358891","358871","358869","358773","358758","358756","358740","358731","358696","358683","358681","358679","358665","358663","358639","358618","358586","358578","358534","358526","358506","358493","358407","358317","358301","358296","358274","358272","358264","358258","358216","358200","358180","358144","358119","358118","358117","358116","358115","358114","358113","358112","358111","358110","358109","358108","358107","358106","358105","358104","358103","358102","358100","358098","358094","358091","358090","358089","358088","358087","358086","358084","358083","358080","358079","358078","358076","358075","358070","358069","358068","358067","358066","358052","358048","358010","357973","357956","357917","357905","357903","357897","357890","357868","357801","357776","357771","357764","357726","357682","357677","357642","357622","357614","357583","357568","357546","357539","357449","357447","357445","357428","357366","357353","357350","357343","357337","357318","357317","357294","357219","357216","357193","357167","357127","357120","357089","357087","357083","357033","357001","356971","356954","356931","356907","356905","356855","356853","356846","356844","356838","356785","356762","356746","356743","356691","356683","356638","356637","356636","356635","356634","356632","356631","356630","356629","356628","356627","356626","356625","356623","356622","356621","356620","356618","356617","356616","356615","356614","356613","356612","356611","356610","356609","356608","356607","356606","356602","356601","356599","356598","356594","356593","356592","356591","356590","356589","356585","356583","356582","356581","356580","356579","356578","356574","356573","356572","356571","356569","356568","356563","356562","356561","356560","356559","356558","356557","356556","356555","356554","356553","356552","356551","356550","356549","356548","356547","356546","356545","356543","356542","356541","356540","356539","356538","356537","356536","356535","356534","356533","356532","356530","356529","356528","356527","356526","356525","356524","356523","356522","356521","356520","356519","356518","356517","356516","356515","356514","356513","356512","356511","356510","356509","356508","356507","356506","356505","356504","356503","356502","356501","356500","356499","356498","356497","356496","356495","356494","356493","356492","356491","356490","356489","356488","356487","356486","356485","356484","356483","356482","356480","356479","356478","356477","356476","356475","356474","356473","356472","356471","356470","356469","356468","356466","356465","356464","356463","356462","356461","356460","356459","356458","356457","356456","356455","356454","356453","356452","356451","356450","356449","356448","356447","356446","356445","356444","356443","356442","356441","356440","356439","356437","356436","356434","356433","356432","356429","356428","356427","356426","356425","356424","356423","356422","356421","356420","356419","356418","356417","356416","356415","356414","356412","356411","356410","356409","356408","356407","356406","356404","356403","356402","356401","356400","356399","356398","356397","356396","356393","356391","356390","356389","356388","356386","356385","356384","356383","356382","356381","356380","356379","356378","356377","356376","356375","356374","356373","356372","356371","356370","356367","356365","356363","356362","356361","356360","356359","356358","356356","356355","356354","356353","356352","356351","356350","356349","356348","356347","356346","356345","356344","356343","356342","356341","356340","356339","356338","356337","356336","356335","356334","356333","356332","356331","356330","356329","356328","356327","356326","356325","356324","356322","356321","356320","356318","356315","356314","356312","356310","356308","356307","356306","356305","356304","356303","356302","356301","356300","356299","356298","356297","356296","356293","356292","356291","356289","356287","356286","356285","356284","356283","356281","356280","356279","356278","356277","356276","356275","356274","356273","356272","356271","356270","356269","356268","356267","356266","356265","356262","356261","356259","356258","356257","356256","356255","356254","356252","356251","356249","356248","356247","356246","356243","356242","356241","356238","356237","356236","356235","356234","356233","356232","356231","356230","356229","356228","356225","356224","356223","356222","356221","356220","356219","356217","356216","356215","356214","356213","356212","356211","356210","356209","356207","356206","356205","356204","356203","356202","356201","356200","356199","356197","356196","356195","356194","356193","356192","356191","356189","356188","356187","356185","356184","356182","356181","356180","356179","356176","356175","356174","356173","356172","356171","356170","356168","356167","356165","356164","356163","356161","356160","356157","356154","356153","356152","356151","356146","356144","356141","356118","356111","356105","356102","356099","356095","356093","356090","356088","356087","356086","356085","356084","356082","356081","356080","356079","356078","356077","356076","356075","356074","356073","356072","356070","356069","356065","356064","356063","356061","356060","356059","356058","356057","356056","356055","356053","356051","356050","356049","356047","356046","356045","356044","356043","356042","356041","356040","356039","356038","356036","356035","356034","356033","356032","356031","356030","356029","356028","356027","356010","355998","355997","355996","355980","355979","355978","355971","355963","355951","355948","355940","355939","355937","355924","355913","355897","355895","355894","355889","355885","355884","355882","355881","355879","355878","355876","355875","355874","355873","355872","355871","355870","355869","355866","355865","355864","355863","355862","355861","355859","355858","355856","355855","355854","355853","355852","355851","355850","355849","355848","355847","355844","355842","355841","355839","355837","355836","355835","355834","355833","355832","355831","355827","355826","355825","355823","355822","355821","355814","355812","355811","355807","355806","355805","355804","355800","355799","355798","355794","355793","355791","355790","355789","355788","355787","355784","355783","355775","355774","355773","355772","355769","355766","355765","355759","355736","355735","355733","355731","355730","355729","355728","355717","355705","355694","355693","355690","355685","355677","355675","355674","355672","355671","355669","355667","355660","355657","355656","355654","355651","355649","355640","355578","355559","355552","355551","355543","355539","355523","355521","355518","355441","355429","355425","355358","355343","355323","355316","355302","355264","355234","355233","355222","355215","355174","355079","355041","355038","355029","355019","355002","354981","354958","354920","354883","354875","354868","354844","354834","354829","354810","354793","354773","354758","354753","354748","354724","354679","354665","354635","354580","354578","354556","354553","354528","354526","354519","354499","354474","354466","354409","354405","354375","354370","354351","354348","354247","354186","354166","354157","354155","354123","354103","354071","354065","353996","353992","353983","353979","353975","353962","353958","353932","353923","353921","353909","353877","353777","353755","353751","353747","353733","353708","353689","353658","353641","353622","353559","353555","353542","353509","353502","353500","353497","353479","353443","353401","353378","353360","353350","353333","353331","353328","353326","353324","353311","353303","353291","353290","353289","353284","353276","353263","353261","353248","353245","353232","353214","353162","353145","353129","353104","353072","353068","353066","353022","353004","352999","352955","352926","352883","352861","352859","352855","352850","352838","352806","352804","352738","352710","352704","352695","352692","352688","352682","352661","352650","352636","352632","352599","352577","352568","352533","352499","352480","352473","352463","352436","352429","352413","352369","352363","352287","352281","352256","352247","352241","352236","352216","352211","352164","352150","352141","352139","352137","352135","352133","352112","352101","352076","352074","352072","352069","352067","352061","352041","352003","351995","351980","351960","351959","351935","351887","351880","351874","351864","351862","351802","351799","351796","351788","351774","351772","351761","351757","351729","351725","351712","351670","351625","351623","351621","351596","351584","351583","351578","351574","351572","351565","351563","351524","351522","351515","351504","351500","351495","351493","351482","351478","351461","351453","351451","351412","351356","351340","351318","351268","351252","351248","351231","351223","351190","351188","351157","351128","351070","351065","351059","351039","351030","351009","350998","350986","350969","350940","350919","350916","350892","350849","350839","350789","350756","350744","350722","350717","350700","350698","350695","350693","350667","350657","350529","350522","350503","350453","350451","350438","350436","350434","350428","350419","350393","350389","350358","350349","350325","350322","350298","350297","350291","350286","350276","350267","350264","350233","350191","350185","350165","350147","350115","350107","350087","350022","350016","350010","349937","349935","349859","349835","349824","349818","349815","349792","349777","349760","349759","349744","349682","349666","349633","349618","349616","349605","349603","349601","349596","349590","349565","349552","349503","349499","349490","349450","349447","349401","349398","349372","349341","349338","349308","349280","349278","349207","349201","349179","349144","349135","349108","349105","349005","348971","348954","348932","348921","348897","348895","348884","348813","348771","348769","348767","348765","348764","348763","348757","348756","348754","348749","348746","348743","348741","348739","348732","348728","348726","348725","348723","348721","348719","348705","348691","348646","348631","348621","348566","348561","348559","348552","348495","348488","348478","348474","348462","348460","348452","348402","348396","348393","348392","348391","348373","348353","348334","348323","348320","348309","348307","348285","348280","348195","348188","348186","348184","348128","348125","348095","348075","348045","348023","348014","347969","347960","347959","347956","347950","347942","347919","347898","347894","347888","347876","347795","347790","347772","347764","347741","347704","347701","347698","347678","347676","347664","347611","347600","347582","347580","347549","347522","347503","347485","347443","347436","347423","347414","347412","347389","347382","347380","347332","347329","347313","347284","347282","347278","347272","347265","347255","347201","347185","347161","347150","347144","347126","347115","347104","347087","347083","347059","347055","347031","347010","347005","346999","346998","346995","346990","346989","346974","346967","346965","346946","346929","346927","346924","346921","346912","346885","346877","346857","346852","346847","346842","346771","346739","346732","346709","346670","346652","346634","346621","346588","346586","346573","346559","346545","346542","346536","346534","346533","346509","346459","346457","346452","346445","346436","346431","346410","346392","346382","346359","346355","346345","346340","346321","346318","346281","346263","346252","346233","346220","346181","346178","346171","346167","346148","346136","346126","346116","346060","346020","346018","346015","345935","345858","345850","345816","345813","345795","345792","345765","345707","345694","345668","345656","345640","345569","345546","345538","345490","345487","345472","345469","345459","345427","345410","345372","345360","345341","345335","345334","345330","345324","345309","345305","345286","345251","345248","345240","345236","345234","345229","345219","345216","345190","345160","345154","345129","345123","345122","345115","345112","345072","345049","345002","344976","344962","344935","344932","344907","344898","344870","344864","344829","344825","344823","344816","344814","344807","344767","344745","344735","344732","344730","344711","344709","344682","344674","344672","344670","344636","344633","344632","344627","344626","344620","344593","344548","344513","344415","344410","344404","344400","344394","344389","344387","344362","344346","344291","344279","344253","344247","344215","344213","344211","344209","344139","344103","344101","344093","344089","344079","344067","344021","344016","344014","344003","343973","343965","343963","343944","343941","343887","343883","343873","343864","343862","343859","343835","343820","343808","343802","343799","343794","343782","343758","343754","343749","343731","343726","343722","343698","343691","343670","343666","343662","343660","343645","343639","343636","343625","343619","343617","343615","343591","343590","343587","343586","343570","343552","343545","343541","343537","343517","343466","343462","343459","343441","343398","343382","343344","343325","343242","343229","343226","343218","343211","343205","343202","343169","343117","343115","343103","343100","343093","343085","343064","343062","343015","343012","343007","342954","342906","342899","342826","342789","342787","342780","342769","342767","342712","342692","342680","342639","342633","342612","342606","342597","342589","342586","342506","342470","342409","342407","342394","342386","342362","342361","342340","342329","342324","342296","342292","342290","342282","342233","342183","342175","342167","342151","342118","342106","342079","342040","342000","341935","341910","341900","341877","341875","341870","341868","341821","341817","341794","341786","341772","341765","341759","341757","341752","341751","341744","341740","341738","341733","341731","341719","341717","341613","341559","341556","341532","341524","341522","341515","341502","341487","341484","341478","341459","341454","341450","341431","341408","341403","341370","341363","341359","341353","341347","341293","341289","341287","341272","341267","341265","341238","341234","341224","341203","341179","341177","341171","341168","341140","341136","341132","341109","341105","341083","341066","341052","341031","341025","341023","341017","341007","340991","340978","340934","340932","340925","340910","340888","340886","340824","340818","340814","340806","340797","340786","340776","340774","340766","340754","340704","340650","340641","340633","340593","340527","340522","340509","340493","340489","340466","340461","340409","340407","340381","340341","340340","340338","340336","340334","340326","340325","340324","340300","340289","340285","340273","340235","340233","340194","340193","340189","340188","340184","340182","340180","340177","340176","340175","340174","340173","340171","340169","340149","340136","340127","340106","340105","340104","340103","340102","340100","340099","340097","340095","340093","340092","340085","340084","340083","340077","340050","340025","340005","339988","339965","339952","339950","339906","339904","339877","339823","339821","339817","339742","339660","339656","339609","339569","339567","339557","339537","339533","339514","339510","339470","339438","339422","339387","339359","339339","339301","339296","339290","339279","339275","339204","339195","339103","339016","338942","338938","338895","338873","338852","338849","338845","338841","338838","338835","338827","338824","338820","338809","338745","338742","338739","338736","338684","338669","338618","338591","338574","338553","338551","338547","338526","338520","338516","338510","338508","338499","338473","338461","338420","338418","338405","338356","338322","338261","338253","338221","338213","338174","338170","338149","338135","338107","338061","338051","338048","338038","338006","337999","337951","337933","337928","337880","337858","337848","337781","337778","337745","337724","337722","337720","337718","337714","337708","337706","337705","337703","337698","337696","337694","337692","337690","337689","337688","337686","337685","337683","337682","337680","337679","337678","337677","337676","337675","337674","337673","337672","337668","337655","337592","337554","337550","337542","337526","337514","337508","337505","337433","337428","337398","337391","337320","337310","337292","337276","337238","337235","337205","337202","337195","337161","337114","337111","337022","337020","337017","337016","337015","337014","337011","337010","337004","336935","336932","336914","336897","336895","336888","336884","336879","336870","336865","336860","336819","336802","336789","336784","336773","336749","336716","336712","336640","336635","336629","336624","336623","336622","336620","336618","336617","336616","336615","336614","336612","336606","336605","336601","336592","336589","336588","336584","336569","336552","336551","336550","336549","336536","336535","336524","336521","336517","336507","336421","336417","336362","336347","336340","336317","336297","336285","336270","336227","336202","336192","336190","336188","336178","336154","336059","336026","336005","335998","335997","335995","335992","335990","335939","335895","335881","335846","335841","335836","335829","335825","335820","335802","335797","335702","335699","335689","335682","335661","335654","335651","335635","335616","335614","335560","335548","335545","335529","335527","335526","335525","335524","335523","335522","335520","335519","335518","335510","335509","335508","335506","335505","335504","335500","335495","335426","335423","335403","335381","335373","335371","335363","335354","335350","335349","335347","335338","335333","335315","335313","335301","335295","335256","335245","335243","335210","335208","335134","335127","335107","335100","335091","335046","335027","334994","334986","334966","334933","334930","334867","334865","334847","334845","334842","334841","334839","334778","334734","334731","334730","334728","334727","334726","334725","334723","334719","334718","334714","334691","334672","334657","334655","334651","334643","334638","334635","334610","334598","334592","334571","334537","334528","334502","334476","334469","334432","334335","334334","334332","334331","334330","334329","334328","334325","334321","334319","334317","334315","334314","334313","334312","334311","334308","334306","334303","334301","334296","334266","334254","334226","334224","334216","334209","334177","334169","334151","334099","334094","334080","334062","334061","334029","334026","334024","334004","333995","333993","333975","333972","333932","333931","333894","333882","333857","333840","333833","333783","333765","333763","333747","333729","333726","333724","333705","333686","333645","333644","333642","333640","333578","333571","333565","333557","333553","333521","333501","333499","333488","333484","333480","333474","333471","333448","333443","333438","333435","333434","333432","333430","333429","333426","333424","333419","333416","333414","333409","333408","333406","333398","333312","333294","333292","333283","333268","333251","333228","333226","333224","333191","333187","333167","333159","333158","333143","333141","333083","333082","333066","333061","333049","333047","333041","333035","333023","333020","333018","333000","332997","332966","332960","332883","332869","332855","332827","332814","332793","332788","332783","332780","332769","332761","332750","332742","332719","332717","332712","332705","332698","332689","332662","332660","332656","332633","332631","332630","332595","332522","332514","332498","332497","332495","332494","332492","332489","332488","332483","332481","332478","332476","332474","332472","332469","332466","332463","332462","332459","332449","332442","332429","332423","332420","332388","332384","332377","332373","332369","332344","332340","332335","332316","332307","332292","332246","332233","332217","332190","332189","332184","332171","332156","332088","332085","332078","332057","332045","332034","332030","332029","332020","331989","331948","331944","331925","331894","331868","331866","331858","331849","331843","331833","331801","331779","331774","331769","331746","331737","331732","331703","331698","331667","331659","331655","331635","331631","331620","331598","331567","331560","331526","331519","331508","331506","331498","331496","331473","331446","331445","331443","331442","331438","331436","331434","331433","331430","331428","331427","331426","331425","331424","331420","331419","331417","331416","331415","331411","331410","331409","331405","331382","331377","331375","331371","331366","331336","331329","331318","331312","331291","331285","331271","331228","331212","331204","331143","331134","331131","331127","331125","331083","331050","331047","331002","330995","330992","330984","330980","330979","330976","330975","330972","330965","330943","330932","330797","330723","330679","330643","330631","330612","330596","330526","330525","330513","330441","330429","330422","330319","330294","330292","330291","330289","330288","330285","330284","330282","330281","330276","330275","330272","330271","330268","330267","330265","330264","330263","330262","330261","330258","330257","330256","330200","330197","330193","330189","330163","330161","330160","330159","330158","330155","330152","330148","330145","330144","330143","330142","330141","330140","330136","330135","330092","330077","330028","329981","329976","329947","329882","329874","329870","329837","329792","329778","329774","329764","329755","329706","329652","329610","329584","329578","329575","329573","329567","329559","329525","329491","329471","329458","329436","329433","329428","329426","329422","329418","329416","329415","329413","329412","329408","329407","329386","329373","329358","329347","329344","329300","329289","329287","329282","329270","329263","329256","329252","329221","329204","329191","329166","329157","329155","329153","329150","329123","329119","329079","329033","329022","328971","328970","328962","328866","328851","328829","328793","328787","328766","328763","328744","328719","328717","328714","328700","328672","328668","328635","328634","328597","328588","328576","328560","328538","328522","328444","328420","328404","328401","328400","328398","328389","328378","328376","328371","328368","328342","328337","328320","328319","328298","328261","328247","328233","328191","328112","328073","328058","328045","328013","327961","327956","327950","327924","327916","327913","327908","327905","327869","327866","327862","327852","327835","327812","327788","327772","327757","327755","327753","327750","327747","327745","327743","327740","327736","327735","327734","327732","327729","327727","327725","327724","327722","327721","327718","327717","327716","327715","327713","327711","327710","327709","327708","327701","327698","327696","327695","327693","327692","327673","327664","327647","327641","327623","327612","327569","327560","327556","327554","327543","327539","327516","327487","327484","327472","327449","327434","327429","327405","327386","327362","327353","327351","327331","327307","327278","327276","327271","327269","327267","327265","327249","327247","327227","327171","327167","327165","327155","327125","327104","327101","327099","327097","327088","327086","327084","326354","325201","325175","325173","325164","325019","325011","325007","324476","324064","323270","323267","323265","323261","323259","323249","322015","321463","321461","321359","320651","320641","320634","320622","320611","319605","319274","319252","319250","319245","319236","318654","318651","318639","318627","318613","318516","318509","318319","318022","317897","317893","317856","317515","316982","316375","316365","316096","314760","314209","313988","313977","313971","313967","313953","313829","311276","310479","310467","310465","310463","310453","310445","309309","309175","308987","308302","307940","307755","307737","307300","306391","305623","305622","305454","304918","304536","304461","304457","304454","304041","303388","303383","302501","302471","302464","301989","301246","301245","301234","301233","300002","299166","297067","296948","296937","296933","296022","295938","295395","295393","295129","294701","294686","294669","294667","292976","291522","290959","290017","289999","289161","286861","281461","280245","277750","277541","275314","275296","274397","268207","263824","263122","260388","260249","259737","259402","259207","258941","258656","258651","257078","256844","256402","256372","255463","255355","254440","254406","254312","254302","253910","252405","251927","251910","251698","251523","251154","246895","245765","245760","245482","244769","244139","240329","240050","237250","237058","236926","235519","234725","231814","231095","230337","230254","226832","226597","225377","223492","223301","220486","217088","216598","215673","211019","210762","208394","207069","204673","204492","203492","203020","200594","410177","409046","408720","407939","406387","406386","406259","405424","405417","405293","403620","403486","403485","401524","400879","400878","400877","400876","400874","400873","400870","400869","400867","400864","400856","400855","400851","400850","400836","400835","400834","400440","399966","399448","399442","399395","399326","399325","398768","397760","397744","397715","397512","396346","394415","394252","393559","393527","393512","393498","392784","392771","392624","392294","392121","391726","390817","390804","390761","390753","390727","390714","390424","389935","389514","389231","388783","388781","388652","388648","388344","387755","387688","387580","387332","386414","386390","386179","385149","385142","384171","383912","383830","383705","383405","383180","383098","382638","382570","382355","382351","381508","381435","381410","380485","380010","379713","379711","379374","379140","378567","378234","377612","377507","376507","376340","375944","375788","375774","375222","374918","374907","374902","374878","374782","372906","372539","372206","372178","371688","371679","371008","370023","369854","369850","369763","369734","369674","368438","368341","368300","368213","368212","368211","368168","368158","367436","367205","367203","366804","366054","365825","365323","365221","365086","365079","365014","365010","364948","364909","364567","364385","364059","363933","362955","362815","361929","361062","360673","358767","357876","357712","356689","356000","355255","355077","355037","354951","354949","354685","354551","354548","354530","354495","354487","354320","354303","354037","353880","353871","353854","353788","353257","352607","352556","352120","351240","350752","350392","350193","349722","349713","349409","349112","347865","347682","347363","347261","346820","346815","346808","346805","346731","346602","346601","346599","346473","346401","345908","345867","345725","344693","344537","344414","344223","344222","343804","343649","343384","343335","343309","343261","342347","342122","341966","341964","341212","341057","341054","340908","340820","340759","340735","340723","340610","340488","340479","340375","340347","340283","339699","339206","339136","338777","338710","338646","338342","338298","338274","338268","338267","338265","338262","338260","338209","338181","338180","338060","337346","337122","336817","336356","336281","336235","335538","335469","335164","335126","334958","334776","334536","334530","334527","334524","334523","334519","334497","334483","334479","334478","334472","334141","333963","333796","333768","333727","333446","333402","333400","333366","333348","333161","333151","332848","332836","332676","332036","331987","331730","331579","331494","331476","331376","331357","331293","331288","331000","330955","330941","330801","330799","330393","330340","330296","330081","329571","329139","329059","329051","329009","328978","328809","328791","328789","328680","328563","328257","328222","328098","328093","328054","327967","327534","327525","327439","327398","326764","326030","325149","324914","324747","324725","324712","324567","323417","322565","321516","321122","320966","320565","318315","317834","317771","317416","316989","316556","316320","315422","314888","313773","313766","313715","313689","311997","310150","309038","308732","308639","307956","307607","307087","306275","305933","305306","303707","303705","303696","303490","303054","303023","302892","302874","263790","399499","376744","369923","369920","369221","366590","358480","357943","357895","357892","357538","356974","355356","353818","351792","348135","346840","343370","338300","336657","336583","335547","410211","410023","410022","410021","410020","410019","410018","410017","410016","410015","410014","408664","408347","406633","406632","406631","406508","406507","406506","406505","406504","406503","406502","406501","406500","406499","406498","406497","406496","406495","406494","406493","406492","406063","405862","405861","405860","405859","405858","405857","405856","405855","405854","405853","405852","405851","405850","405849","405848","405847","402591","401976","401911","401910","401909","401908","401907","401906","401905","401904","401903","401764","401763","401762","401761","401760","401759","401758","401757","401756","401755","401754","401281","401280","401279","401278","401277","401276","401275","401274","401273","401272","401271","401270","401269","401268","401267","401266","401265","401264","401263","401262","401261","401260","401259","401258","401257","401256","401255","401254","401253","401252","401251","401250","401249","401248","401247","401246","401245","401244","401243","401242","401241","401240","401239","401238","401237","401236","401235","401234","401233","401232","401231","401230","401229","401228","401227","401226","401225","401223","401222","401221","401220","401219","401218","401217","401216","401215","401214","401213","400606","400605","400604","400603","400602","400601","400600","400599","400598","400597","400596","400595","400594","400593","400592","400591","400590","400589","400588","400587","400586","400585","400584","400583","400582","400581","400580","400579","400578","400577","400576","400224","399631","399630","399629","399628","399627","399626","399625","399624","399623","399622","399621","399620","399619","399618","399617","399016","399015","399014","399013","399012","399011","399010","399009","399008","399007","399006","399005","399004","399003","399002","399001","399000","398999","398998","398997","398996","398995","398993","398992","398991","398990","398989","398988","398987","398986","398985","398984","398983","398982","398981","398980","398979","398978","398977","398976","398975","398974","398973","398972","398971","398970","398969","398968","398967","398966","398965","398964","398963","398962","398961","398960","398959","398958","398957","398956","398955","398954","398953","398952","398951","398950","398949","398948","398947","398946","398945","398944","398943","398942","398941","398940","398939","398715","398714","398713","398712","398711","398710","398709","398708","398707","398706","398705","398704","398703","398702","398701","398700","398699","398698","398696","398695","398694","398693","398692","398691","398690","398688","398687","398684","398683","398682","398681","398680","398679","398678","398677","398666","398665","398664","398663","398662","398661","397654","394275","394146","394137","392706","391992","391991","391990","391989","391988","391987","391986","391985","391984","391983","391982","391981","391980","391979","391978","391977","391976","391975","391410","391409","391408","391407","391406","391405","391404","391403","391402","391401","391400","391399","391398","391397","391396","391395","391394","391393","391392","391391","391390","391389","391388","391387","391386","391385","391384","391383","391382","391381","391380","391379","391378","391377","391376","391375","391374","391373","391372","391371","391370","391369","391368","391367","391366","391365","391364","391363","391362","391361","391360","391359","391358","391357","391356","391355","391354","391353","391352","391351","391350","391348","391347","391346","391345","391344","391343","391342","391341","391340","391339","391338","391337","391336","391335","391334","391333","391332","391331","391330","391329","391251","391250","391249","391248","391247","391246","391245","391244","391243","391238","391237","391231","391230","391229","391228","391227","391226","391225","391224","391223","391222","391221","390962","390701","388926","388131","388130","388129","388128","388127","388126","388125","388124","388123","388122","388121","388120","388119","388118","387944","387943","387942","387941","387940","387939","387938","387937","387936","387935","387934","387933","387932","387931","387930","387929","387928","387927","387926","387925","387924","387923","387922","387921","387920","387919","387918","387917","387916","387915","387914","387913","387912","387911","387910","387909","387908","387907","387906","387905","387904","387903","387902","387901","387900","387899","387898","387897","387896","387895","387894","387893","387892","387891","387890","387889","387888","387887","387886","387885","387884","387883","387882","387881","387880","387879","387878","387877","387876","387875","387874","387873","387872","387871","387870","387869","387868","387866","387865","387864","387863","387862","387861","387860","387859","387858","387857","387856","387855","387854","387853","387852","387822","387523","387522","387521","387520","387497","387496","387271","387270","387269","387268","387267","387266","387265","387264","387263","387262","387261","387259","387258","387257","387256","387255","387254","387253","387252","387251","387250","387249","387248","387247","387246","387245","387244","387243","387242","387187","387186","387185","387184","387183","387182","387181","387180","387179","387178","387177","387176","387175","387174","387173","387172","387171","387170","387169","387168","387167","387166","387165","387164","387151","387149","387148","387147","387146","386429","386141","384950","384554","384551","384550","384549","384548","384547","384546","384545","384544","384543","384542","384541","384540","384539","384538","384537","384536","384535","384534","384533","384518","384511","384121","384112","383786","383579","383419","382994","382993","382992","382991","382990","382989","382988","382987","382986","382985","382984","382983","382982","382981","382980","382979","382978","382977","382976","382975","382974","382973","382972","382971","382970","382969","382968","382967","382966","382965","382964","382963","382962","382961","382960","382959","382958","382957","382956","382955","382954","382953","382952","382951","382950","382949","382948","382947","382946","382945","382944","382943","382942","382941","382940","382939","382938","382937","382936","382935","382934","382933","382761","382099","382098","382097","382081","382080","382079","381964","381963","381962","381961","381960","381959","381958","381957","381956","381955","381954","381953","381952","381941","381940","381939","381938","381937","381936","381935","381934","381933","381932","381931","381930","381872","381871","381870","381869","381868","381867","381866","381865","381825","381824","381823","381822","381821","381820","381819","381817","381816","381815","381814","381813","381689","381451","381228","381126","380335","380304","379816","379815","379814","379813","379812","379811","379810","379809","379808","379807","379806","379805","379804","379803","379802","379801","379800","379799","379798","379797","379108","378080","377903","377749","377748","377747","377746","377745","377743","377742","377741","377740","377739","377738","377737","377736","377735","377734","377733","377732","377726","377725","377724","377723","377722","377721","377720","377719","377718","377717","377716","377714","377674","377673","377672","377671","377658","377657","377656","377655","377654","377652","377651","377650","377649","377648","377474","377473","377472","377471","377470","377469","377468","377467","377466","377465","377464","377463","377462","377461","377460","377459","377458","377457","377456","377455","377454","377453","376844","376843","376842","376841","376840","376839","376838","376837","376836","376835","376834","376833","376832","376831","376830","376829","376828","376827","376826","376825","376824","376823","376822","376821","376820","376819","376818","376817","376816","376815","376814","376813","376812","376811","376810","376809","376808","376807","376806","376805","376804","376803","376802","376801","376800","376799","376798","376797","376796","376795","376794","376793","376792","376791","376790","376789","376788","376787","376786","376785","376784","376783","376782","376781","376780","376779","376778","376777","376776","376775","376774","376773","376772","376771","376770","376769","376768","376767","376766","376765","376764","376763","376762","376688","376489","376488","376486","376485","376484","376123","376051","376018","375530","375382","375296","373741","373630","373536","373535","373532","373296","373295","373294","373293","373292","373291","373290","373289","373288","373287","373286","373285","373284","373283","373282","373281","373280","373279","373278","373277","373276","373275","373274","373273","373272","373271","373270","373269","373268","373267","373266","373265","373258","373256","373255","373254","373252","373250","373249","373248","373247","373246","373245","373244","373243","373242","373230","373229","373228","373227","373226","373225","373224","373223","373222","372740","372739","372738","372737","372736","372735","372734","372733","372732","372731","372730","372729","372728","372727","372726","372725","372724","372723","372722","372721","372720","372719","372718","372717","372716","372715","372714","372713","372712","372711","372710","372709","372708","372707","372706","372705","372704","372703","372702","372701","372700","372699","372698","372697","372696","372695","372694","372693","372692","372691","372690","372689","372688","372687","372686","372685","372684","372683","372682","372681","372680","372679","372678","372677","372676","372675","372674","372673","372672","372671","372670","372669","372668","372667","372302","372301","372300","372299","372298","372297","372296","372295","372294","372293","372292","372291","372290","372289","372288","372287","372171","372170","372167","372166","372165","372164","372163","372162","372161","371681","371091","371076","371057","370939","370554","369973","369860","369551","368141","368023","368020","365806","365805","365804","365803","365802","365801","365800","365799","365798","365797","365796","365795","365794","365793","365764","365763","365762","365761","365760","365759","365758","365757","365756","365755","365754","365753","365752","365751","365750","365748","365747","365746","365745","365744","365743","365742","365741","365740","365739","365738","365737","365736","365735","365734","365733","365732","365731","365730","365729","365728","365727","365726","365725","365724","365723","365722","365721","365720","365719","365718","365717","365716","365715","365714","365713","365712","365711","365710","365709","365708","365707","365571","365570","365569","365568","365567","365566","365565","365563","365562","365561","365559","365413","365412","365411","365410","365408","365407","365406","365405","365404","365402","365401","365400","365373","365372","365371","365370","365369","365368","365367","365366","365365","365363","365361","365360","365359","365358","365357","365217","363697","362934","362930","362929","362927","362926","362922","362921","362880","362879","362878","362877","362570","362569","362568","362567","362566","362565","362564","362563","362562","362561","362560","362559","362558","362557","362556","362555","362554","362553","362552","362551","362550","362549","362548","362547","362546","362545","362544","362543","362542","362541","362540","362539","362538","362537","362536","362535","362534","362533","362532","362531","362530","362529","362528","362527","362526","362525","362524","362523","362522","362521","362520","362519","362517","362516","362515","362514","362513","362512","362511","362510","362509","362508","362507","362506","362505","362504","362503","362502","362501","362406","362405","362404","362403","362402","362401","362400","362399","362398","362397","362396","362395","362232","360989","360370","360369","360368","360367","360366","360365","360364","360363","360362","360361","360360","360359","360358","360357","360314","360313","360312","360311","360310","360309","360308","360307","360306","360305","360304","360303","360302","360301","360300","360299","360298","360297","360296","360295","360294","360293","360292","360291","360290","360289","359803","359797","359677","359633","358487","354452","354448","354447","354444","354442","354276","354275","354272","354271","354270","354262","354260","354259","354258","354257","354256","354255","354252","354236","354235","354234","354233","354232","354231","354230","354229","354228","354227","354226","354225","354224","354223","354222","354221","354220","354219","354218","354217","354216","354215","354214","354213","354212","354211","354210","354209","354208","354207","354206","354205","354204","354203","354202","354201","354200","354198","354197","354196","354195","353209","353208","353207","353206","353205","353204","353203","353202","353201","353200","353199","353198","353197","353196","353195","353194","353193","353192","353191","353190","353189","353188","353187","353186","353185","351404","351403","351402","351401","351400","351399","351398","351397","351396","351395","351394","351393","351392","351391","351390","351389","351388","351387","351386","351385","351384","351383","351382","351381","351380","351379","351378","351377","351376","351375","351374","351373","351372","351371","351370","351369","351368","351367","351366","351365","351364","351162","351161","351155","351150","351114","351111","351109","351105","351104","351100","351098","351082","350624","350623","350622","350621","350620","350619","350618","350617","350616","350615","350614","350613","350612","350611","350610","350609","350608","350607","350606","350605","350604","350603","350602","350601","350600","350599","350598","350597","350596","350595","350594","350593","350592","350591","350590","350589","350588","350587","350586","350585","350584","350583","350582","350581","350580","350579","350578","350577","350576","350575","350574","350573","350572","350571","350570","350569","350568","350567","350566","350565","350564","350563","350562","350561","350560","350559","350558","350557","350556","350555","350554","350553","350552","350551","350550","350549","350548","350547","350546","350545","350544","350543","350542","350541","350540","350539","350538","350537","350536","350535","350534","350533","350532","350531","350415","350414","350413","350412","350411","350406","350405","350404","350403","350005","350004","350003","350002","350000","349999","349998","349997","349996","349995","349994","349359","349356","349355","349354","347568","347246","345991","345990","345989","345988","345987","345986","345985","345984","345983","345982","345981","345980","345979","345978","345977","345976","345975","345974","345973","345972","345971","345969","345968","345967","345966","345965","345964","345963","345962","345961","345960","345959","345958","345957","345956","345955","345954","345953","345952","345951","345950","345949","345948","345947","345946","345945","345944","345943","345942","345941","345940","345939","345938","345446","345210","345208","345205","345204","345199","345196","345008","344619","344617","343845","343704","343468","343420","343287","343209","343193","343192","343191","343190","343189","343188","343187","343186","343185","343184","343183","343182","343181","343180","343179","343178","342919","342454","342447","342192","342088","340884","340883","340882","340881","340880","340879","340878","340877","340876","340875","340874","340873","340872","340871","340870","340869","340868","340867","340866","340865","340864","340863","340862","340861","340860","340859","340858","340857","340856","340855","340854","340853","340852","340851","340850","340849","340848","340847","340846","340845","340844","340843","340842","340744","340743","340742","340670","340669","340625","340620","340619","340618","340615","340552","340548","340481","340478","340271","340270","340269","340268","340267","340266","340265","340264","340263","340262","340261","340260","340259","340258","340257","340256","340255","340254","340253","340252","340250","340249","340248","340247","340245","340143","339913","339910","339849","339659","339334","339327","339010","339009","339008","339007","339006","339005","339004","339003","339002","339000","338999","338998","338997","338996","338995","338994","338993","338992","338991","338990","338989","338988","338987","338986","338985","338984","338983","338982","338981","338980","338979","338978","338977","338976","338975","338974","338973","338972","338971","338970","338969","338968","338965","338964","338963","338962","338961","338959","338958","338448","338447","338446","338445","338444","338443","338442","338441","338440","338439","338438","338437","338436","338435","337906","337901","336702","336701","336700","336699","336698","336697","336696","336695","336694","336693","336692","336691","336690","336689","336688","336687","336686","336685","336684","336683","336682","336681","336680","336679","336678","336677","336676","336675","336674","336673","336672","336671","336670","336669","336668","336667","336666","336148","336147","336145","336144","336137","336136","336134","336133","336132","336130","336128","336126","336125","336121","336118","336115","336108","336107","336106","336105","336104","336103","336102","336101","336100","336099","336098","336097","336096","336095","336093","336092","336090","336087","336071","336070","336069","336068","336067","336066","336065","336064","335755","335724","335723","335720","335429","335428","335136","335131","334885","333710","332290","332288","332287","332285","332280","332279","332278","332273","332270","332269","332268","332267","332265","332264","332263","332262","332260","332259","332258","332257","332256","332255","332254","332253","332252","332251","331914","331913","331912","331911","331910","331909","331658","331522","331521","331518","331517","331512","331057","330787","330786","330785","330784","330783","330782","330781","330780","330779","330778","330777","330776","330775","330774","330773","330772","330771","330770","330769","330768","330767","330766","330765","330764","330763","330762","330761","330760","330759","330758","330757","330756","330755","330753","330752","330751","330750","330749","330748","330747","330746","330745","330744","330743","330742","330741","330740","330739","330738","330737","330736","330678","330677","330676","330675","330674","330673","330672","330671","330670","330669","330668","330667","330665","330664","330663","330662","330661","330660","330659","330658","330657","330655","330555","330554","330553","330551","330550","330549","330548","330547","330546","330545","330544","330543","330542","330541","330540","330539","330538","330537","330536","330506","330505","330504","330503","330499","330497","330494","330493","330489","330488","330487","330486","330485","330484","330480","330479","330478","330477","330474","330473","330472","330466","330464","330463","330462","330461","330456","330455","330454","330452","330451","330448","330447","330446","330442","330439","330434","330418","330417","330416","330415","330414","330413","330412","330411","330410","330409","330408","330407","330406","330405","329676","329675","329670","329669","329668","329667","329666","328565","327521","323595","323040","320261","320088","319936","314533","312993","304986","304946","294816","292632","291430","282500","275522","268531","249640","243206","238299","238259","238192","238110","237947","410231","410096","410074","409865","409717","409593","409591","409562","409545","409376","409344","409165","409139","409113","409041","409032","408990","408983","408977","408656","408654","408508","408498","408475","408456","408307","408144","408141","408038","407998","407859","407839","407832","407828","407810","407769","407741","407732","407656","407604","407472","407451","407436","407261","407173","407166","407087","407075","406996","406882","406876","406807","406779","406432","406370","406321","406174","406054","405959","405919","405749","405709","405685","405623","405519","405502","405422","405420","405390","405387","405380","405377","405353","405348","405296","405285","405283","405210","405188","405172","405161","405159","405147","405145","405141","405136","405134","405131","405108","405088","405085","405081","405073","405011","404998","404996","404990","404989","404984","404976","404964","404912","404873","404495","404417","404391","404386","404383","404373","404369","404333","404312","404272","404265","404189","404187","404163","404082","404061","404008","403689","403687","403610","403487","403479","403474","403468","403465","403462","403460","403432","403404","403392","403322","403311","403308","403190","403183","403179","403042","403020","402999","402937","402865","402853","402851","402830","402816","402814","402805","402727","402713","402689","402666","402664","402562","402557","402545","402461","402438","402406","402382","402377","402370","402368","402351","402322","402317","402315","402293","402291","402219","402193","402183","402176","402134","402122","402114","402112","402106","402101","402065","402051","402024","402020","402014","401987","401983","401920","401918","401900","401666","401662","401638","401636","401618","401597","401555","401553","401547","401541","401373","401364","401361","401359","401297","401285","401203","401171","401165","401140","401127","401097","401084","401028","401024","401011","401008","400909","400907","400827","400768","400735","400732","400722","400720","400708","400669","400646","400565","400555","400516","400490","400461","400401","400396","400310","400265","400263","400259","400256","400254","400251","400176","400160","400148","400145","400141","400138","400077","400073","400051","400005","399936","399920","399916","399816","399808","399784","399782","399718","399712","399681","399658","399611","399589","399561","399550","399339","399284","399261","399133","399078","399073","399020","398933","398843","398766","398628","398608","398545","398489","398483","398407","398394","398392","398362","398285","398171","398044","398029","397943","397925","397923","397905","397846","397842","397840","397822","397581","397559","397540","397527","397503","397501","397312","397288","397211","397169","396571","396569","396567","396467","396393","396355","396347","396281","396246","396214","396196","396190","396178","396162","396070","395941","395938","395888","395868","395834","395483","395466","394992","394665","394551","394543","394271","394265","394235","394224","394065","394061","394059","394047","393986","393943","393934","393905","393901","393895","393869","393839","393795","393779","393775","393693","393662","393631","393560","393461","393452","393407","393391","393307","393235","393223","393221","393215","393037","392791","392681","392657","392619","392552","392546","392395","392361","392334","392314","392308","392232","392223","392199","392094","392057","391971","391969","391924","391844","391775","391574","391553","391500","391486","391279","391209","391207","391205","391197","391126","391078","390945","390933","390875","390796","390672","390582","390563","390487","390465","390412","390397","390387","390356","390314","390312","390310","390267","390228","390209","390179","390173","390075","390069","390063","390029","389966","389926","389917","389833","389828","389807","389761","389739","389663","389578","389421","389415","389400","389327","389313","389268","389174","389154","389117","389034","389003","388929","388912","388879","388690","388630","388501","388485","388480","388463","388330","388314","388172","388163","388096","388001","387966","387814","387804","387800","387756","387735","387712","387567","387562","387352","387226","387217","387202","387031","387006","386982","386967","386874","386864","386845","386838","386787","386716","386532","386502","386305","386213","386128","386126","386121","386116","386045","385929","385869","385827","385819","385797","385733","385718","385716","385714","385668","385443","385400","385392","385349","385333","385130","385106","385099","385011","384765","384762","384757","384724","384688","384583","384552","384525","384505","384461","384457","384447","384277","384222","384164","384155","383969","383836","383823","383815","383688","383660","383601","383594","383520","383386","383378","383252","383204","383089","383073","382921","382896","382834","382802","382793","382713","382685","382575","382543","382458","382430","382379","382201","382046","382040","381894","381857","381756","381754","381750","381733","381687","381640","381538","381413","381408","381401","381393","381303","381287","381260","381169","381160","381154","381128","381123","381060","380844","380799","380794","380778","380574","380572","380408","380400","380355","380322","380292","380214","380086","380082","380063","380038","380030","380018","379857","379851","379787","379749","379647","379592","379589","379539","379504","379435","379378","379372","379368","379346","379230","379197","379174","379128","378954","378767","378667","378631","378492","378175","378152","378041","378039","377988","377970","377879","377706","377637","377596","377593","377531","377484","377478","377366","377364","377224","377160","377149","377117","377095","377014","376972","376867","376620","376611","376536","376479","376467","376366","376364","376301","376290","376279","376275","376248","376132","376050","376004","375967","375958","375950","375915","375911","375783","375730","375706","375704","375700","375520","375518","375501","375484","375436","375431","375414","375395","375279","375271","375225","375220","374985","374937","374915","374816","374728","374724","374677","374655","374579","374571","374500","374421","374412","374407","374358","374314","374310","374283","374251","374199","374120","374103","374041","374037","373995","373981","373969","373924","373922","373877","373816","373752","373747","373577","373560","373498","373496","373428","373419","373411","373396","373394","373334","373330","373161","373092","373054","373021","372946","372941","372872","372856","372845","372834","372824","372818","372792","372788","372772","372759","372754","372748","372741","372629","372620","372586","372573","372469","372424","372380","372350","372346","372336","372257","372198","372003","371960","371952","371943","371880","371691","371661","371625","371615","371613","371541","371445","371416","371390","371383","371375","371369","371343","371323","371221","371216","371203","371162","371097","371095","371068","371063","371011","371004","370946","370926","370893","370865","370863","370860","370840","370754","370744","370578","370552","370417","370355","370255","370245","370235","370224","370214","370110","370096","370021","369979","369885","369717","369707","369680","369669","369664","369660","369585","369505","369499","369470","369468","369385","369347","369340","369332","369272","369239","369230","369070","369050","369041","368988","368908","368896","368851","368732","368726","368721","368714","368695","368613","368591","368533","368522","368508","368452","368374","368353","368339","368330","368236","368232","368014","368010","367966","367915","367907","367905","367800","367421","367413","367341","367285","367240","367238","367106","367104","367100","367098","367096","367092","367090","367088","367084","367079","366886","366844","366839","366837","366681","366679","366249","366243","366005","365609","365449","365286","365282","365235","365213","365172","365152","365080","365075","365072","365041","365032","364917","364899","364860","364811","364799","364580","364450","364447","364412","364403","364398","364264","364254","364214","364210","364176","364065","364052","364043","364006","363948","363941","363918","363906","363897","363781","363620","363610","363608","363565","363563","363559","363556","363544","363509","363468","363461","363401","363389","363370","363365","363291","363264","363208","363134","363131","363100","363007","362972","362898","362896","362796","362484","362467","362313","362274","362219","362215","362209","362202","362187","362157","362151","362110","362077","362037","361975","361932","361879","361874","361870","361769","361701","361678","361630","361324","361322","361298","361296","361292","361288","361214","361084","361077","360932","360915","360903","360807","360737","360592","360575","360569","360396","360181","360094","360088","360057","360052","360049","360014","359874","359872","359870","359760","359740","359721","359658","359650","359639","359637","359562","359551","359513","359391","359364","359323","359212","359157","358818","358816","358785","358783","358779","358738","358705","358700","358692","358661","358634","358574","358571","358563","358435","358426","358408","358330","358254","358177","358137","358044","358040","358020","358016","358012","357839","357836","357784","357751","357725","357673","357634","357624","357612","357610","357604","357569","357557","357547","357543","357378","357376","357325","357323","357289","357280","357253","357239","357225","357078","356992","356951","356912","356882","356685","356657","356015","356007","355725","355576","355571","355495","355423","355416","355396","355313","355287","355238","355229","355217","355194","355167","355117","355081","355069","355065","355062","355024","354999","354938","354936","354927","354878","354871","354823","354818","354780","354740","354725","354722","354673","354660","354654","354634","354626","354620","354618","354566","354522","354500","354430","354417","354289","354184","354136","354131","354118","354082","354046","353981","353936","353911","353907","353873","353866","353862","353828","353779","353773","353765","353737","353716","353704","353697","353681","353667","353655","353653","353605","353552","353517","353486","353483","353439","353422","353420","353410","353408","353391","353314","353304","353271","353171","353122","353110","353083","353078","353074","353050","352984","352968","352933","352889","352885","352847","352840","352835","352807","352780","352766","352763","352732","352717","352626","352591","352582","352546","352441","352374","352360","352354","352324","352246","352244","352171","352099","352005","352001","351975","351915","351912","351756","351753","351723","351703","351699","351607","351587","351535","351468","351455","351449","351439","351436","351334","351272","351260","351182","351173","351166","351159","351075","351072","351057","351054","351052","350988","350961","350958","350875","350866","350823","350818","350813","350807","350785","350777","350768","350762","350689","350658","350511","350499","350488","350484","350482","350478","350385","350381","350378","350375","350372","350369","350366","350364","350332","350248","350235","350149","350145","350120","350095","350018","350006","349990","349921","349856","349853","349851","349822","349802","349742","349714","349659","349585","349577","349575","349572","349472","349464","349462","349425","349415","349413","349410","349374","349366","349363","349326","349226","349167","349117","349092","349090","349085","349076","349074","349061","349059","349055","349050","349011","348995","348992","348989","348978","348927","348891","348820","348803","348775","348642","348606","348604","348564","348548","348542","348538","348536","348493","348491","348427","348364","348330","348264","348218","348216","348212","348206","348149","348137","348063","348039","348018","347980","347948","347877","347855","347843","347792","347747","347742","347710","347686","347660","347655","347493","347491","347481","347479","347475","347473","347468","347459","347451","347354","347320","347173","347171","347169","347167","347165","347132","347030","347024","347022","347020","347018","347012","346919","346905","346864","346823","346806","346791","346753","346715","346688","346656","346611","346590","346562","346550","346498","346348","346329","346324","346308","346239","346229","346205","346185","346183","346165","346159","346066","346064","346043","345995","345923","345891","345804","345802","345780","345776","345763","345761","345720","345586","345582","345572","345530","345519","345494","345466","345461","345457","345425","345396","345394","345304","345170","345162","345141","345118","345109","345044","345039","345014","344995","344973","344918","344878","344821","344793","344781","344777","344773","344771","344728","344726","344684","344679","344603","344600","344596","344594","344522","344511","344507","344488","344471","344453","344434","344335","344332","344273","344267","344256","344233","344230","344193","344191","344143","344138","344136","344064","344010","343961","343950","343929","343855","343828","343812","343779","343774","343714","343706","343702","343699","343554","343493","343445","343426","343417","343402","343359","343348","343320","343198","343150","343058","343051","342998","342961","342955","342879","342843","342838","342834","342831","342810","342802","342738","342736","342727","342722","342693","342688","342684","342682","342677","342670","342668","342664","342659","342631","342629","342526","342524","342519","342516","342494","342456","342450","342421","342389","342288","342285","342249","342227","342221","342214","342210","342145","342143","342130","342114","342112","342110","342108","342022","342017","342002","341998","341996","341931","341906","341858","341854","341848","341841","341839","341836","341799","341788","341776","341774","341764","341710","341708","341703","341694","341688","341683","341680","341670","341648","341646","341640","341630","341626","341623","341618","341609","341603","341598","341596","341588","341585","340536","340471","340467","340464","340438","340433","340431","340202","340200","340114","340112","340109","340074","340043","340040","340029","339979","339977","339975","339944","339935","339927","339891","339889","339859","339851","339847","339845","339775","339746","339727","339601","339595","339575","339559","339555","339420","339414","339409","339364","339356","339352","339322","339264","339261","339254","339241","339216","339214","339188","339126","339099","339093","339091","339040","339033","339028","338921","338875","338869","338857","338851","338847","338817","338774","338764","338725","338723","338721","338717","338714","338628","338611","338583","338577","338572","338555","338494","338466","338464","338408","338401","338368","338364","338336","338324","338320","338238","338125","338115","338108","338103","338015","338007","338002","337960","337938","337887","337862","337798","337783","337776","337773","337770","337767","337736","337734","337727","337725","337653","337649","337528","337511","337501","337465","337461","337418","337413","337410","337405","337322","337308","337296","337280","337264","337241","337233","337142","337137","337133","337129","337104","337093","337047","337044","337039","337037","337033","337028","336993","336969","336966","336964","336959","336868","336864","336854","336850","336845","336827","336782","336780","336778","336772","336766","336755","336752","336654","336449","336447","336425","336414","336412","336410","336359","336299","336283","336263","336260","336255","336249","336246","336240","336226","336176","336169","336160","336157","336072","336035","336032","336029","335999","335977","335958","335898","335891","335876","335873","335850","335834","335832","335787","335775","335773","335748","335694","335641","335634","335628","335623","335618","335607","335601","335594","335567","335562","335476","335430","335394","335388","335383","335379","335357","335336","335321","335311","335303","335300","335279","335275","335209","335109","335103","335093","335021","334999","334996","334990","334956","334942","334929","334925","334908","334887","334882","334873","334869","334837","334831","334826","334822","334754","334752","334750","334604","334565","334556","334551","334545","334487","334482","334471","334467","334463","334436","334398","334395","334368","334229","334179","334147","334145","334117","334084","334058","334056","334049","333991","333942","333907","333897","333893","333891","333832","333792","333748","333692","333674","333670","333657","333585","333575","333525","333523","333519","333463","333455","333449","333440","333403","333393","333389","333338","333334","333263","333244","333155","333148","333134","333123","333056","332975","332971","332925","332914","332907","332889","332885","332875","332871","332821","332781","332776","332755","332722","332715","332691","332685","332645","332558","332518","332512","332506","332502","332445","332431","332324","332238","332219","332129","332127","332103","332070","332062","332054","332052","332022","332009","332001","331999","331921","331889","331880","331874","331870","331865","331863","331861","331856","331852","331850","331837","331834","331831","331829","331818","331813","331808","331799","331795","331792","331785","331757","331755","331745","331735","331731","331671","331663","331654","331650","331625","331544","331539","331537","331294","331283","331183","331180","331178","331174","331054","331045","331043","331005","330997","330986","330957","330810","330808","330713","330710","330586","330511","330419","330397","330387","330385","330384","330323","330315","330252","330250","330225","330185","330177","330122","330120","330104","330084","329997","329989","329979","329961","329955","329950","329899","329886","329864","329857","329839","329746","329743","329741","329678","329673","329657","329577","329568","329563","329561","329499","329497","329495","329493","329489","329487","329340","329321","329319","329317","329315","329313","329311","329309","329297","329291","329262","329258","329242","329240","329212","329210","329199","329125","329038","329018","329015","329011","328989","328986","328967","328965","328959","328957","328953","328923","328921","328918","328915","328913","328911","328905","328831","328826","328655","328649","328631","328624","328622","328618","328553","328551","328479","328452","328364","328308","328306","328301","328292","328264","328158","328155","328147","328145","328137","328135","328132","328128","328125","328020","328016","328001","327984","327982","327980","327975","327973","327971","327933","327922","327907","327845","327841","327815","327804","327802","327790","327782","327766","327764","327759","327653","327633","327616","327610","327563","327558","327546","327531","327523","327476","327468","327437","327433","327428","327420","327416","327412","327410","327404","327313","327261","327257","327190","327123","327119","326547","326306","326080","325215","323755","323187","323070","323026","321634","317024","312812","311855","302754","299886","299862","289924","281965","275205","274118","257619","209847","207584","409250","407533","407331","407176","406408","406211","400700","400689","400681","400679","400671","400571","400486","399026","392208","390643","375230","369073","368151","358846","357309","352566","352345","351487","350525","349080","348255","347821","347689","346122","345605","345497","345484","344833","343505","343210","343109","342969","342953","342228","342161","341988","341742","341691","340473","339867","339786","338956","338695","338424","337402","337075","336768","336186","336184","335626","334547","333001","332983","331641","330795","330431","329088","329047","328729","328037","327810","327384","327218","326778","326200","326027","325833","325736","325721","325332","324799","324752","324703","324231","321712","321258","321063","320972","320894","320871","320682","320662","320188","320164","320070","318729","318351","318174","318126","317334","316937","316785","315293","315176","315126","314572","313762","313357","312086","311616","311375","310977","310368","309444","309113","308981","307471","306801","303324","300690","300108","299205","298611","298441","295194","294465","293797","293073","289912","289730","288903","287939","286698","285442","282801","282711","281455","280458","264623","260979","260193","259056","258952","255717","255590","254806","252950","243578","236211","235672","227878","","385282","380323","373862","347829","343998","339737","335143","331464","328690","328108","327336","239695"],["403667-001","399778","399772","372639","368024-001","366057","359802-001","359425-001","358210-001","356664-002","354760-001","353566-001","353485","349506","347868-001","345756-001","345584-001","341476-001","340107-001","338503","338502","338501","336467","334819-001","334158-001","333029","331247","327893-001","327184","326729-001","326274-001","326272-001","325125-002","324172-011","324026-002","309354-002","284452-002","267685-002","259096-002","90525-001","90414-001","90413-002","88991-004","86419-001","85161-001","82124-001","79477-002","70111-003","65993-001","409769","409710","409693","409357-002","409301","409294","409262","409145","408944","408868","408864","408827","408764","408608","408495","408398","408340","408338","408166","408158","408104","408071","408047","407727-001","407654","407585","407534","407054","406986","406873","406766","406750","406534","406517","406485","406414","406218","406106","405981","405951","405837","405454","405444","405398-002","405042","405039","405030","404946","404936","404886","404829","404827","404826","404823","404818","404809","404804","404797","404787","404785","404783","404779","404778","404777","404770","404768-001","404765","404759","404758","404757","404756","404754","404751","404746","404744","404739","404736","404735","404726","404725","404723","404722","404721","404720","404719","404712","404711","404703","404701","404700","404695","404689","404687","404686","404683","404677","404673","404669","404667","404666","404659","404658","404654","404651","404649","404648","404639","404638","404637","404636","404634","404630","404625","404624","404623","404622","404619","404611","404610","404608","404606","404603","404601","404600","404597-001","404594","404589","404586-001","404585","404583","404578","404577","404567","404565","404564","404552","404551","404548","404546","404544","404542","404540","404537","404535","404533","404528","404522","404521","404520","404517-001","404491","404483","404474","404394","404337","404290","404281","404268","404244","404230","404169","404109","404019","403875","403868","403750","403684","403361","403329","403167","403149","403090","402660","402644","402641","402600","402516","402505","402446","402423","402345","402289","402116","401977","401949","401893","401876","401863","401803","401457","401452","401418","401415","401380","401368","401298","401204","401188","401133","401112","401101","400987","400884","400811","400793-002","400777","400705","400665","400627","400537-001","400455","400453","400361","400353","400322","400290","400261","400230","400039","399852","399812","399714","399677","399660","399601","399583","399578","399576","399574","399548","399457-001","399263","399259","399245-001","399237","399218","399200","399169","399034","399018","398808","398747","39856-002","398555","398398","398383","398379","398332","398314","398313","398127","398104","397934","397799","397769","397748","397742","397694","397594","397589","397545","397510","397466","397392","397331","397251","397222","397213","397196","397084","397076","397075","397074","397070","397061","397060","397056","397055","397047","397042","397040","397038","397032","397031","397028","397023","397020","397018","397017","397014","397007-001","397006","397004","397003","396999","396998","396989","396987","396981","396978","396973","396972","396966","396964","396956","396955","396950","396947","396943-001","396942","396941","396940","396937","396934","396933","396930","396929","396928","396925","396916","396914","396913","396912","396908","396906","396905","396903","396902","396900","396895","396894","396893","396892","396888","396887","396884","396881","396879","396866","396863-001","396860-001","396854","396853","396851","396850","396845","396837-001","396826","396821","396811","396809","396801","396800","396799","396796","396791","396787","396786","396785","396784","396781","396778","396775","396773","396771","396763","396762","396761","396760","396759","396758","396748","396741","396580","396510","396433","396429","396305-002","396225","396207","396205","396114","396067","396012","395935","395890","395788","395772","395701","395608","395584","395574","395548","395447","395396","395352","395350","395348","395277","395260","395235","395165","395057","395039","394971","394956","394948","394923","394921","394919","394912-001","394890","394808","394794","394782","394732","394725","394705","394581","394574","394567","394531","394524","394491","394458","394445","394440","394200","394169","394148","394101","394085","394068","394063","393990","393959","393952","393935","393898","393824","393822","393781","393771","393721","393701","393672","393670","393663","393660","393643","393615","393582","393572","393553","393549","393524","393513","393507","393397","393346","393296","393270","393181","393092","393083","392985","392970","392950","392932","392916","392843","392818","392783","392749","392646","392473","392435","392379","392359","392277","392252","392104","392061","392051","392022","392010","391961","391911","391880","391807","391768","391759","391745","391728","391712","391593","391592","391494","391491","391474","391414","391302","391299","391281","391270","391232","391189","391118","391083","391081","391075","391060","391027","390949","390843","390777","390754","390737","390698","390664","390547","390453","390448","390438","390286","390251","390150","390120","390108","390099","390061","390057","390041","390001","389978","389930","389896","389860","389830","389732","389716","389711","389667","389590","389588","389539","389509","389427","389423","389393","389333","389276","389265","389195","389184","389147","389143-001","389101","389070","389054","389001","388920","388865","388839","388830","388821","388745","388733","388635","388627","388607","388585","388373","388368","388364","388302","388296","388289","388243","388204-003","388181","388148","388116","388086","388072","388043","388013","387973","387954","387797","387739","387724","387626","387543","387513","387455","387432","387430","387425-003","387405","387403","387295","387228","387214","387205","387134","387121","387092","387008","386995","386964","386951","386947","386928","386921","386904","386889","386860-001","386819","386817","386797","386782","386700","386687","386666","386665","386662","386654","386643","386642","386641","386640","386637","386597","386595","386588","386569","386535","386504","386498","386483","386454","386451","386446","386445","386421","386407","386391","386384","386380","386314","386294","386285","386242","386227","386225","386211","386181","386140-002","386119","386054","386034","385952","385885","385867","385847","385845","385821","385795","385783","385746","385679","385591","385585","385535-001","385499","385497","385409","385396","385368","385353","385289","385265","385263","385261","385250","385245","385234","385233","385229-001","385193","385111","385109","385067","385023","385021","384979","384927","384869","384798","384794","384737","384706","384689","384678","384673","384660","384620-001","384479","384472","384411","384401","384379","384295","384291","384251","384230","384115","384104","383957","383904","383903","383834","383762","383737","383587","383581","383577","383573","383555","383554","383552","383468","383443","383413","383254","383176","383160","383148","383134","383086","383081","383068","383053","383051","383048","383022","383002","382997","382927","382918","382864","382863","382843","382839","382825","382795","382782","382776","382739","382698","382667","382635","382621","382591","382579","382565","382552","382522","382508","382500-001","382490","382488","382484","382482","382476-001","382455","382446-002","382432","382414","382310","382306","382295","382293","382271","382262","382191","382179","382162","382157","382150","382087","382053","381928","381915","381883","381835","381811","381809","381808","381807","381806","381805","381789","381781","381672","381649","381644","381629","381609","381589","381576","381548","381472","381449","381431","381356","381316","381282","381280","381231","381204","381194","381033","381032","381031","381030","381029","381028","381027","381026","381022","381019","381018","381017","381016","381015","381014","381013","381012","381011","381010","381009","381008","381007","381006","381005","381004","381003","381001","380998","380997","380996","380995","380993","380992","380991","380990","380988","380987","380986","380985","380984","380983","380982","380980","380979","380978","380977","380976","380975","380974","380973","380972","380971","380970","380969","380968","380967","380966","380963","380962","380961","380960","380959","380958","380957","380956","380955","380954","380953","380952","380950","380948","380947","380946","380944","380943","380942","380941","380940","380939","380938","380937","380935","380934","380933","380931","380929","380928","380925","380924","380923","380921","380918","380917","380916","380915","380914","380913","380911","380910","380909","380908","380907","380906","380904","380902","380901","380900","380899","380897","380896","380895","380894","380893","380892","380891","380890","380889","380888","380887","380886","380885","380884","380883","380882","380881","380880","380879","380878","380877","380876","380874","380873","380872","380871","380869","380868","380803","380748","380730","380662","380651","380647","380634","380630","380628","380610","380537","380495","380493","380470","380442","380394","380370","380348","380232","380179","380169","380163","380089","380034","379992","379978","379955","379920","379861","379709","379692","379657","379649","379490","379488","379473","379446","379404","379312","379294","379278","379249","379236","379190","379153","379046","379001","378968","378941","378907","378890","378762","378758","378752","378744","378742","378706","378696","378682","378610","378533","378483","378473","378467","378459","378365","378322","378290","378248","378236","378147","378096","378012","378007","377982","377924","377859","377846","377839","377812","377810","377804","377803","377772","377686","377605","377591","377489","377448","377403","377396","377333","377327","377310","377251","377249","377202","377193","377172","377102","377087","377063","377026","376995","376963","376927","376750","376742","376736","376734","376700","376692","376671","376638","376636","376630","376589","376579","376554","376539","376528","376456","376448","376375","376368","376359","376322","376312","376231","376226","376216","376210","376084","376039","375992","375988","375981","375970","375948","375927","375814","375797","375781","375760","375684","375667","375627","375625","375611","375609","375577","375563","375498","375495","375488","375486","375473","375437","375426","375421","375418","375416","375386","375361","375313","375308","375299","375216","375211","375197","375196","375194","375193","375192","375191","375190","375188","375184","375183","375182","375181","375180","375178","375177","375176","375174","375173","375172","375170","375167","375166","375164","375162","375159","375156","375154","375152","375151","375150","375149","375145","375144","375143","375142","375141","375137","375136","375135","375134","375133","375132","375131","375129","375127","375126","375125","375124","375123","375121","375120","375119","375118","375117","375116","375115","375114","375113","375110","375107","375105","375103","375102","375101","375100","375099","375098","375097","375096","375094","375093","375092","375091","375090","375088","375087","375085","375084","375082","375080","375079","375078","375077","375076","375075","375074","375073","375072","375070","375069","375067","375064","375063","375060","375057","375056","375055","375054","375053","375051","375048","375046","375045","375044","375043","375041","375040","375038","375034","375033","375032","375029","375027","375025","375024","375022","375021","375019","375017","375015","375012","375010","374999","374972","374965","374930","374921","374904","374890","374882","374852","374846","374794","374750","374732","374659","374644-002","374638","374601","374380","374285","374279","374196","374159","374131","374122","374107","374078","374062","374023","373990","373979","373972","373964","373959","373942","373920","373894","373890","373883","373879","373875","373873","373838","373757","373705","373690","373684","373679","373650","373614","373575","373564","373545","373543","373492","373469","373445","373438","373409","373367","373191","373170","373123","373109","373107","373069","373056","372970","372963","372882","372869","372860","372838","372831","372771","372767","372665","372644","372642","372623-002","372614","372538","372536","372496","372485","372463","372442","372372","372362","372359","372313","372304","372282","372208","372150","372128","372087","372079","372074","372043","372017","372008","371962","371933","371929","371913","371873","371853","371816","371805","371772","371735","371706","371587","371577","371547","371516","371510","371508","371497","371495","371491","371489","371488","371459","371453","371449","371427","371418","371345","371338","371320","371318","371316","371301","371297","371248","371193","371187","371157","371103","371052","371031","371017","371000","370998","370958","370941","370928","370907","370872","370867","370832","370791","370765","370763","370738","370735","370732","370727","370725","370723","370722","370721","370720","370717","370714","370711","370707","370701","370700","370698","370697","370696","370695","370694-001","370688","370687","370686","370683","370675","370671","370668","370667","370665","370660","370659","370658","370649","370648","370640","370634","370630","370627","370621","370620","370619","370615","370613","370611","370603","370602","370600","370597","370542","370538","370524","370511","370493","370386","370324","370310","370308","370222-002","370186","370151","370134","370130","370071","370038","369969","369935","369917","369896","369803","369779","369766","369753","369708-001","369686","369678","369616","369580","369572","369537","369525","369491","369444","369432","369390","369372","369360","369334","369312","369289","369245","369219","369216","369214","369211","369130","369126","369112","369009","369005","368950","368948-001","368932","368904","368865","368832","368813","368778","368773","368748","368746","368723","368672","368667","368623","368567","368538","368518","368497","368474","368456","368429","368421","368417","368249","368228","368043","368034","368029","367959","367947","367812","367811","367797","367793","367756","367742","367717","367711-001","367708","367703","367674","367672","367668-001","367631","367613-001","367568-001","367500-001","367415","367322","367292","367266","367222","367143","367141","367138","367124","367053","367046","367033","366996","366994-002","366989","366948","366922-002","366920","366910","366895","366875","366819","366759","366745","366719","366633","366622","366612","366573","366522","366519","366518","366517","366515","366513","366511","366506","366505","366504","366503","366502","366501","366498","366497","366494","366493","366492","366491","366489","366486","366481","366480","366478","366477","366475","366473","366467","366466","366465","366460","366459","366458","366456","366455","366454","366453","366451","366448","366442","366439","366435","366434","366433","366432","366430","366429","366428-001","366424","366422","366417","366416","366409","366401","366400","366392","366389","366388","366382","366381","366380","366375","366373","366370","366364","366358","366355","366353","366351","366347","366343","366339","366337","366336","366323","366321","366317","366315","366314","366313","366311","366273","366230","366226","366187","366155","366144","366116","366106","366076","366047","366045","366018","366003","365972","365962","365955","365951","365937","365911","365909","365885","365777","365649","365643","365637","365619-002","365607","365585","365560","365536","365526","365392","365346","365340","365336","365332","365313","365280","365268","365266","365264","365253","365237","365205","365186","365132","365119","365087","365082","365077","365055","365046","365038","364988","364977","364959","364929","364848","364830","364820","364789","364781","364767","364760","364716","364705","364685","364662","364640","364617","364597","364555","364551","364533","364495","364445","364441","364426","364409","364396","364394","364356","364321","364300","364295","364276","364274","364261","364259","364198","364183","364095","364091","364072","364067","364063","364055","364029","364026","364014","363916","363888","363882","363844","363830","363812-002","363811","363783","363778","363760","363728","363714","363674","363655-001","363626","363589","363571","363558","363551","363548-001","363491","363424","363419","363343","363336-001","363274","363272","363256","363212","363199","363188","363146","363142","363103","363091","363086","363060","363053","363048","363026","363019","363004","362994","362980","362942","362860","362843","362807-001","362775","362739","362704","362702","362700","362683-001","362675","362674","362672","362671","362667","362653","362652","362651","362648","362646","362640","362638","362635","362633","362632","362630","362628","362623","362622","362618","362606","362602","362582","362573","362571","362481","362440","362407","362386","362367","362350","362321","362316","362306","362288","362267","362230","362162","362090","362036","362019","362016","361981","361867","361860","361817","361808","361789","361782","361763","361748-002","361714","361699","361652","361624","361605","361513","361497","361491","361487","361428","361358","361348","361300","361273","361257","361253","361241","361235","361223","361134","361133","361130","361126","361103","361087","361015","361010","360987","360982","360974","360964","360939","360936","360855","360847","360834-001","360831","360786","360750","360661","360658","360646","360641","360632","360615","360609","360573","360571","360505","360466","360428","360424","360419","360412","360407-002","360404","360377","360349","360345","360276","360245","360237","360231","360229","360210","360125","360119","360096","360092","360046","360023","360021","360018","360013","360012","360011","360006","359999","359998","359992","359991","359984","359979","359973","359972","359971","359968","359964","359962","359960","359958","359956","359955","359954","359953","359951","359948","359937","359927","359925","359923","359916","359914","359913","359912","359907","359905","359899","359818","359799","359785","359756","359745","359726","359668","359662","359618","359601","359593","359591","359575","359557","359553","359549","359511","359492","359483","359373","359370","359363","359354","359352","359340","359332","359329","359312","359299","359291","359286","359274","359264","359255","359174","359145","359134","359106","359080","359073","359061","359055","359052","359047","359040","359035","359010","359006","359003","358974","358953","358949","358947","358924","358891","358871","358869","358773","358758","358756","358740","358731","358696","358683","358681","358679","358665","358663","358639","358618","358586","358578","358534","358526","358506","358493","358407","358317","358301","358296","358274","358272","358264","358258","358216","358200","358180","358144","358119","358118","358117","358116","358115","358114","358113","358112","358111","358110","358109","358108","358107","358106","358105","358104","358103","358102","358100","358098","358094","358091","358090","358089","358088","358087","358086","358084","358083","358080","358079","358078","358076","358075","358070","358069","358068","358067","358066","358052","358048","358010","357973","357956","357917","357905","357903","357897","357890","357868","357801","357776","357771","357764","357726","357682","357677","357642","357622","357614","357583","357568","357546","357539","357449","357447","357445","357428","357366","357353","357350","357343","357337","357318","357317","357294","357219","357216","357193","357167","357127","357120","357089","357087","357083","357033","357001","356971","356954","356931","356907-001","356905","356855","356853","356846","356844","356838","356785","356762","356746","356743","356691","356683","356638","356637","356636","356635","356634","356632","356631","356630","356629","356628","356627","356626","356625","356623","356622","356621","356620","356618","356617","356616","356615","356614","356613","356612","356611","356610","356609","356608","356607","356606","356602","356601","356599","356598","356594","356593","356592","356591","356590","356589","356585","356583","356582","356581","356580","356579","356578","356574","356573","356572","356571","356569","356568","356563","356562","356561","356560","356559","356558","356557","356556","356555","356554","356553","356552","356551","356550","356549","356548","356547","356546","356545","356543","356542","356541","356540","356539","356538","356537","356536","356535","356534","356533","356532","356530","356529","356528","356527","356526","356525","356524","356523","356522","356521","356520","356519","356518","356517","356516","356515","356514","356513","356512","356511","356510","356509","356508","356507","356506","356505","356504","356503","356502","356501","356500","356499","356498","356497","356496","356495","356494","356493","356492","356491","356490","356489","356488","356487","356486","356485","356484","356483","356482","356480","356479","356478","356477","356476","356475","356474","356473","356472","356471","356470","356469","356468","356466","356465","356464","356463","356462","356461","356460","356459","356458","356457","356456","356455","356454","356453","356452","356451","356450","356449","356448","356447","356446","356445","356444","356443","356442","356441","356440","356439","356437","356436","356434","356433","356432","356429","356428","356427","356426","356425","356424","356423","356422","356421","356420","356419","356418","356417","356416","356415","356414","356412","356411","356410","356409","356408","356407","356406","356404","356403","356402","356401","356400","356399","356398","356397","356396","356393","356391","356390","356389","356388","356386","356385","356384","356383","356382","356381","356380","356379","356378","356377","356376","356375","356374","356373","356372","356371","356370","356367","356365","356363","356362","356361","356360","356359","356358","356356","356355","356354","356353","356352","356351","356350","356349","356348","356347","356346","356345","356344","356343","356342","356341","356340","356339","356338","356337","356336","356335","356334","356333","356332","356331","356330","356329","356328","356327","356326","356325","356324","356322","356321","356320","356318","356315","356314","356312","356310","356308","356307","356306","356305","356304","356303-002","356302","356301","356300","356299","356298","356297","356296","356293","356292","356291","356289","356287","356286","356285","356284","356283","356281","356280","356279","356278","356277","356276","356275","356274","356273","356272","356271","356270","356269","356268","356267","356266","356265","356262","356261","356259","356258","356257","356256","356255","356254","356252","356251-004","356249","356248","356247","356246","356243","356242","356241","356238","356237","356236","356235","356234","356233","356232","356231","356230","356229","356228","356225","356224","356223","356222","356221","356220","356219","356217","356216","356215","356214","356213","356212","356211","356210","356209","356207","356206","356205","356204","356203","356202","356201","356200","356199","356197","356196","356195","356194","356193","356192","356191","356189","356188","356187","356185","356184","356182","356181","356180","356179","356176","356175","356174","356173","356172","356171","356170","356168","356167","356165","356164","356163","356161","356160","356157","356154","356153","356152","356151","356146","356144","356141","356118","356111","356105","356102","356099","356095","356093","356090","356088","356087","356086","356085","356084","356082","356081","356080","356079","356078","356077","356076","356075","356074","356073","356072","356070","356069","356065","356064","356063","356061","356060","356059","356058","356057","356056","356055","356053","356051","356050","356049","356047","356046","356045","356044","356043","356042","356041","356040","356039","356038","356036","356035","356034","356033","356032","356031","356030","356029","356028","356027","356010","355998","355997","355996","355980","355979","355978","355971","355963","355951","355948","355940","355939","355937","355924","355913","355897","355895","355894","355889","355885","355884","355882","355881","355879","355878","355876","355875","355874","355873","355872","355871","355870","355869","355866","355865","355864","355863","355862","355861","355859","355858","355856","355855","355854","355853","355852","355851","355850","355849","355848","355847","355844","355842","355841","355839","355837","355836","355835","355834","355833","355832","355831","355827","355826","355825","355823","355822","355821","355814","355812","355811","355807","355806","355805","355804","355800","355799","355798","355794","355793","355791","355790","355789","355788","355787","355784","355783","355775","355774","355773","355772","355769","355766","355765","355759","355736","355735","355733","355731","355730","355729","355728-002","355717","355705","355694","355693","355690","355685","355677","355675","355674","355672","355671","355669","355667","355660","355657","355656","355654","355651","355649","355640","355578","355559","355552","355551","355543","355539","355523","355521","355518","355441","355429","355425","355358","355343","355323","355316","355302","355264","355234","355233","355222","355215","355174","355079","355041","355038","355029","355019","355002","354981","354958","354920","354883","354875","354868","354844","354834","354829","354810","354793","354773","354758","354753","354748","354724","354679","354665","354635-001","354580","354578","354556","354553","354528","354526","354519","354499","354474","354466","354409-002","354405-003","354375","354370","354351","354348","354247","354186","354166","354157","354155","354123","354103","354071","354065","353996-002","353992","353983","353979","353975","353962","353958","353932","353923","353921","353909","353877","353777","353755","353751","353747","353733","353708","353689","353658","353641","353622","353559","353555","353542","353509","353502","353500","353497","353479","353443","353401","353378","353360","353350","353333","353331","353328","353326","353324","353311","353303","353291","353290","353289","353284","353276","353263","353261","353248","353245","353232","353214","353162","353145","353129","353104","353072","353068","353066","353022","353004","352999","352955","352926","352883","352861","352859","352855","352850","352838","352806","352804","352738","352710","352704","352695","352692","352688","352682","352661","352650","352636","352632","352599","352577","352568","352533","352499","352480","352473","352463","352436","352429","352413","352369","352363-003","352287","352281","352256","352247","352241","352236","352216","352211","352164","352150","352141","352139","352137","352135","352133","352112","352101","352076","352074","352072","352069","352067","352061","352041","352003","351995","351980","351960","351959","351935","351887","351880","351874","351864","351862","351802","351799","351796","351788","351774","351772","351761","351757","351729","351725","351712","351670","351625","351623","351621","351596","351584","351583","351578","351574","351572","351565","351563","351524","351522","351515","351504","351500","351495","351493","351482","351478","351461","351453","351451","351412","351356","351340","351318","351268","351252","351248","351231","351223","351190","351188","351157","351128","351070","351065-002","351059","351039","351030","351009","350998","350986","350969","350940","350919","350916","350892","350849","350839","350789","350756","350744","350722","350717","350700","350698","350695","350693","350667","350657","350529","350522","350503","350453","350451","350438","350436","350434","350428","350419","350393","350389","350358","350349","350325","350322","350298","350297","350291","350286","350276","350267","350264","350233","350191","350185","350165","350147","350115","350107","350087","350022","350016","350010","349937","349935","349859","349835","349824","349818-002","349815","349792","349777","349760","349759","349744","349682","349666","349633","349618","349616","349605","349603","349601","349596","349590","349565","349552","349503","349499","349490","349450","349447","349401","349398","349372","349341","349338","349308","349280","349278","349207","349201","349179","349144","349135","349108","349105","349005","348971","348954","348932","348921","348897","348895","348884","348813","348771","348769","348767","348765","348764","348763","348757","348756","348754","348749","348746","348743","348741","348739","348732","348728","348726","348725","348723","348721","348719","348705-001","348691","348646","348631","348621","348566","348561","348559","348552","348495","348488","348478","348474","348462","348460","348452","348402","348396","348393","348392","348391","348373","348353","348334","348323","348320","348309","348307","348285-002","348280","348195","348188","348186","348184","348128","348125","348095","348075","348045","348023","348014","347969","347960","347959","347956","347950","347942","347919","347898","347894","347888","347876","347795","347790","347772","347764","347741","347704","347701","347698","347678","347676","347664","347611","347600","347582","347580","347549","347522","347503","347485","347443","347436","347423","347414-001","347412","347389","347382","347380","347332","347329","347313","347284","347282","347278","347272","347265","347255","347201","347185","347161","347150","347144","347126","347115","347104","347087","347083","347059","347055","347031","347010","347005","346999","346998","346995","346990","346989","346974","346967","346965","346946","346929","346927","346924","346921","346912","346885","346877","346857","346852","346847","346842","346771","346739","346732","346709","346670","346652","346634","346621","346588","346586","346573","346559","346545","346542","346536","346534","346533","346509","346459","346457","346452","346445","346436","346431","346410","346392","346382-002","346359","346355","346345","346340-002","346321","346318","346281","346263","346252","346233","346220","346181","346178","346171","346167","346148","346136","346126","346116","346060","346020","346018","346015","345935","345858","345850","345816","345813","345795","345792","345765","345707","345694","345668","345656","345640","345569","345546","345538","345490","345487","345472","345469","345459","345427","345410","345372","345360","345341","345335","345334","345330","345324","345309","345305","345286","345251","345248","345240","345236","345234","345229","345219","345216","345190","345160","345154","345129","345123","345122","345115","345112","345072","345049","345002","344976","344962","344935","344932","344907","344898","344870","344864","344829","344825","344823","344816","344814","344807","344767","344745","344735","344732","344730","344711","344709","344682","344674","344672","344670","344636","344633","344632","344627","344626","344620","344593","344548","344513","344415","344410","344404","344400","344394","344389","344387","344362","344346","344291","344279","344253","344247","344215","344213","344211","344209","344139","344103","344101","344093","344089","344079","344067","344021","344016","344014","344003","343973","343965","343963","343944","343941","343887","343883","343873","343864","343862","343859","343835","343820","343808","343802","343799","343794","343782","343758","343754","343749","343731","343726","343722","343698","343691","343670","343666","343662","343660","343645","343639","343636","343625","343619","343617","343615","343591","343590","343587","343586","343570","343552","343545","343541","343537","343517","343466","343462","343459","343441","343398","343382","343344","343325","343242","343229","343226","343218","343211","343205","343202","343169","343117","343115","343103-001","343100","343093-001","343085","343064","343062","343015","343012","343007","342954","342906","342899","342826","342789","342787","342780","342769","342767","342712","342692","342680","342639","342633","342612","342606-002","342597","342589","342586","342506","342470","342409","342407","342394","342386","342362","342361","342340","342329","342324","342296","342292","342290","342282","342233","342183","342175","342167","342151","342118","342106","342079","342040","342000","341935","341910","341900","341877","341875","341870","341868","341821","341817","341794","341786","341772","341765","341759","341757","341752","341751","341744","341740","341738","341733","341731","341719","341717","341613","341559","341556","341532","341524","341522","341515-001","341502","341487","341484","341478","341459","341454","341450-002","341431","341408","341403","341370","341363","341359","341353","341347","341293","341289","341287","341272","341267","341265","341238","341234","341224","341203","341179","341177","341171","341168","341140","341136","341132","341109","341105","341083","341066","341052","341031-001","341025","341023","341017","341007","340991","340978","340934","340932","340925","340910","340888","340886","340824","340818","340814","340806","340797","340786","340776","340774","340766","340754","340704","340650","340641","340633","340593","340527","340522","340509","340493","340489","340466","340461","340409","340407","340381","340341","340340","340338","340336","340334","340326","340325","340324","340300","340289","340285","340273","340235","340233","340194","340193","340189","340188","340184","340182","340180","340177","340176","340175","340174","340173","340171","340169","340149","340136","340127","340106","340105","340104","340103","340102","340100-001","340099","340097","340095","340093","340092","340085","340084","340083","340077","340050","340025","340005","339988","339965","339952","339950","339906","339904","339877","339823","339821","339817","339742","339660","339656","339609","339569","339567","339557","339537","339533","339514","339510-002","339470","339438","339422","339387","339359","339339","339301","339296","339290","339279","339275","339204","339195","339103","339016","338942","338938","338895","338873","338852","338849","338845","338841","338838","338835","338827-002","338824","338820","338809","338745","338742","338739","338736","338684","338669","338618","338591","338574","338553","338551","338547","338526","338520","338516","338510","338508","338499","338473","338461","338420","338418","338405","338356","338322","338261","338253","338221","338213","338174","338170","338149","338135","338107","338061","338051","338048","338038","338006","337999","337951","337933","337928","337880","337858","337848","337781","337778-002","337745","337724","337722","337720","337718","337714","337708","337706","337705","337703","337698","337696","337694","337692","337690","337689","337688","337686","337685-002","337683","337682","337680","337679","337678","337677","337676","337675","337674","337673","337672","337668","337655","337592","337554","337550","337542","337526","337514","337508","337505","337433","337428","337398","337391","337320","337310","337292","337276","337238","337235","337205","337202","337195","337161","337114","337111","337022","337020","337017","337016","337015","337014","337011","337010","337004","336935","336932","336914","336897","336895","336888","336884","336879","336870","336865","336860","336819","336802","336789","336784","336773","336749","336716","336712","336640","336635","336629","336624","336623","336622","336620","336618","336617","336616","336615","336614","336612","336606","336605","336601","336592-003","336589","336588","336584","336569","336552","336551","336550","336549","336536","336535","336524","336521","336517","336507","336421","336417","336362","336347","336340","336317","336297","336285","336270","336227","336202","336192","336190","336188","336178","336154","336059","336026","336005","335998","335997","335995","335992","335990","335939","335895","335881","335846","335841","335836","335829","335825","335820","335802","335797","335702","335699","335689","335682","335661","335654","335651","335635","335616","335614","335560","335548","335545","335529","335527","335526","335525","335524","335523","335522","335520","335519","335518","335510","335509","335508","335506","335505","335504","335500","335495","335426","335423","335403","335381","335373","335371","335363","335354","335350","335349","335347","335338","335333","335315","335313","335301","335295","335256","335245","335243","335210","335208","335134","335127","335107","335100","335091","335046","335027","334994","334986","334966","334933","334930","334867","334865","334847","334845","334842","334841","334839-002","334778","334734","334731","334730","334728","334727","334726","334725-001","334723","334719","334718","334714","334691","334672","334657","334655-001","334651","334643-002","334638","334635","334610","334598","334592","334571","334537","334528","334502","334476","334469","334432","334335","334334","334332","334331","334330","334329","334328","334325","334321","334319","334317","334315","334314","334313","334312","334311","334308","334306","334303","334301","334296","334266","334254","334226","334224","334216","334209","334177","334169","334151","334099","334094","334080","334062","334061","334029","334026","334024-002","334004","333995","333993","333975","333972","333932","333931","333894","333882","333857","333840","333833","333783","333765","333763","333747","333729","333726","333724","333705","333686","333645","333644","333642","333640","333578","333571","333565","333557","333553","333521","333501","333499","333488","333484","333480","333474","333471","333448","333443","333438","333435","333434","333432","333430","333429","333426","333424","333419","333416","333414","333409","333408","333406","333398","333312","333294","333292","333283","333268","333251","333228","333226","333224","333191","333187","333167","333159","333158","333143","333141","333083","333082","333066","333061","333049-003","333047","333041","333035","333023","333020","333018","333000","332997","332966-001","332960","332883","332869","332855","332827","332814","332793","332788","332783","332780","332769","332761","332750","332742","332719","332717-004","332712","332705","332698","332689","332662","332660","332656","332633","332631","332630","332595","332522","332514","332498","332497","332495","332494","332492","332489","332488","332483","332481","332478","332476","332474","332472","332469","332466","332463","332462","332459","332449","332442","332429","332423","332420","332388","332384","332377","332373","332369","332344","332340","332335","332316","332307","332292","332246","332233","332217","332190","332189","332184","332171","332156","332088","332085","332078","332057","332045","332034","332030","332029","332020","331989","331948","331944","331925","331894","331868","331866-001","331858","331849","331843","331833","331801","331779","331774","331769","331746","331737","331732","331703","331698","331667","331659","331655","331635","331631","331620","331598","331567","331560","331526","331519","331508","331506","331498","331496","331473","331446","331445","331443","331442","331438","331436","331434","331433","331430","331428","331427","331426","331425","331424","331420","331419","331417","331416","331415","331411","331410","331409-001","331405","331382-001","331377","331375","331371","331366","331336","331329","331318","331312","331291","331285","331271","331228","331212","331204","331143","331134","331131","331127","331125","331083","331050","331047","331002","330995","330992","330984","330980","330979","330976","330975","330972","330965","330943","330932","330797","330723","330679","330643","330631","330612","330596","330526","330525","330513","330441","330429","330422","330319","330294","330292","330291","330289","330288-002","330285","330284","330282","330281","330276","330275","330272","330271","330268","330267","330265","330264-002","330263","330262","330261","330258","330257","330256","330200","330197-001","330193","330189","330163","330161","330160","330159","330158","330155","330152","330148","330145","330144","330143","330142","330141","330140","330136","330135","330092","330077","330028","329981","329976","329947","329882","329874","329870","329837","329792","329778","329774","329764","329755","329706","329652","329610","329584","329578","329575","329573","329567","329559","329525","329491","329471","329458","329436","329433","329428","329426","329422","329418","329416","329415","329413","329412","329408","329407","329386","329373","329358","329347","329344","329300","329289","329287","329282","329270","329263","329256","329252","329221","329204","329191","329166","329157","329155","329153","329150","329123","329119","329079","329033","329022","328971","328970","328962","328866-002","328851","328829","328793","328787","328766","328763","328744","328719","328717","328714","328700","328672","328668","328635","328634","328597","328588","328576","328560","328538","328522","328444","328420","328404","328401","328400","328398","328389","328378","328376","328371","328368","328342","328337","328320","328319","328298","328261-001","328247","328233","328191","328112-001","328073","328058","328045","328013","327961","327956","327950","327924","327916","327913","327908","327905","327869","327866","327862","327852","327835","327812","327788","327772","327757","327755","327753","327750","327747","327745","327743","327740","327736","327735","327734","327732","327729","327727","327725","327724","327722","327721","327718","327717","327716","327715","327713","327711","327710","327709","327708","327701","327698-001","327696-001","327695","327693","327692","327673","327664","327647","327641","327623","327612","327569","327560","327556","327554","327543","327539","327516","327487","327484","327472","327449","327434","327429","327405","327386","327362","327353","327351","327331","327307","327278","327276","327271","327269","327267","327265","327249","327247","327227","327171","327167","327165","327155","327125","327104","327101","327099","327097","327088","327086","327084","326354-004","325201-001","325175-001","325173-001","325164-001","325019-002","325011-001","325007-001","324476-002","324064-003","323270-001","323267-001","323265-001","323261-001","323259-002","323249-001","322015-002","321463-001","321461-001","321359-005","320651-001","320641-001","320634-002","320622-002","320611-002","319605-002","319274-002","319252-001","319250-001","319245-003","319236-001","318654-002","318651-001","318639-001","318627-001","318613-002","318516-003","318509-003","318319-002","318022-003","317897-001","317893-001","317856-002","317515-003","316982-003","316375-001","316365-001","316096-002","314760-001","314209-002","313988-001","313977-001","313971-002","313967-001","313953-001","313829-001","311276-002","310479-001","310467-001","310465-001","310463-001","310453-001","310445-002","309309-003","309175-003","308987-002","308302-004","307940-003","307755-001","307737-001","307300-001","306391-008","305623-001","305622-001","305454-003","304918-005","304536-002","304461-001","304457-001","304454-001","304041-009","303388-001","303383-001","302501-002","302471-001","302464-002","301989-003","301246-002","301245-002","301234-001","301233-001","300002-001","299166-001","297067-004","296948-001","296937-001","296933-002","296022-001","295938-002","295395-001","295393-001","295129-002","294701-001","294686-001","294669-002","294667-003","292976-002","291522-002","290959-001","290017-002","289999-004","289161-002","286861-002","281461-002","280245-001","277750-001","277541-001","275314-003","275296-001","274397-004","268207-001","263824-001","263122-001","260388-001","260249-003","259737-001","259402-002","259207-001","258941-002","258656-001","258651-001","257078-002","256844-002","256402-001","256372-001","255463-002","255355-001","254440-003","254406-001","254312-003","254302-002","253910-009","252405-002","251927-002","251910-002","251698-002","251523-002","251154-005","246895-001","245765-001","245760-002","245482-002","244769-001","244139-002","240329-003","240050-003","237250-004","237058-003","236926-004","235519-002","234725-002","231814-005","231095-002","230337-002","230254-002","226832-002","226597-005","225377-002","223492-003","223301-002","220486-002","217088-004","216598-001","215673-001","211019-002","210762-002","208394-003","207069-002","204673-002","204492-002","203492-002","203020-001","200594-003","410177","409046","408720","407939","406387","406386","406259","405424","405417","405293","403620","403486","403485","401524","400879","400878","400877","400876","400874","400873","400870","400869","400867","400864","400856","400855","400851","400850","400836","400835","400834","400440","399966","399448","399442","399395","399326","399325","398768","397760","397744","397715","397512","396346","394415","394252","393559","393527","393512","393498","392784","392771","392624","392294","392121","391726","390817","390804","390761","390753","390727","390714","390424","389935","389514","389231","388783","388781","388652","388648","388344","387755","387688","387580","387332","386414","386390","386179","385149","385142","384171","383912","383830","383705","383405","383180","383098","382638","382570","382355","382351","381508","381435","381410","380485","380010","379713","379711","379374","379140","378567","378234","377612","377507","376507-001","376340","375944","375788","375774","375222","374918","374907","374902","374878","374782","372906","372539","372206","372178","371688","371679","371008","370023","369854","369850","369763","369734","369674","368438","368341","368300","368213","368212","368211","368168","368158","367436","367205","367203","366804","366054","365825","365323","365221","365086","365079","365014","365010","364948","364909","364567","364385","364059","363933-001","362955","362815","361929","361062","360673","358767","357876","357712","356689","356000","355255","355077","355037","354951","354949","354685","354551","354548","354530","354495","354487","354320","354303","354037","353880","353871","353854","353788","353257","352607","352556","352120","351240","350752","350392","350193","349722","349713","349409","349112","347865","347682","347363","347261","346820","346815","346808","346805","346731","346602","346601","346599","346473","346401","345908","345867","345725","344693","344537","344414","344223","344222","343804","343649","343384","343335","343309","343261","342347","342122","341966","341964","341212","341057","341054-001","340908","340820","340759","340735","340723","340610","340488","340479","340375","340347","340283","339699","339206","339136","338777","338710","338646","338342","338298","338274","338268","338267","338265","338262","338260","338209","338181","338180","338060","337346","337122","336817","336356","336281","336235","335538","335469","335164","335126","334958","334776","334536","334530","334527","334524","334523","334519","334497","334483","334479","334478","334472","334141","333963","333796","333768","333727","333446","333402","333400","333366-001","333348","333161","333151","332848","332836","332676","332036","331987","331730","331579","331494","331476","331376","331357","331293","331288","331000","330955","330941","330801","330799","330393","330340","330296","330081","329571","329139","329059","329051","329009","328978","328809","328791","328789","328680","328563","328257","328222","328098","328093","328054","327967","327534","327525","327439","327398","326764-001","326030-002","325149-002","324914-002","324747-002","324725-002","324712-009","324567-002","323417-001","322565-002","321516-002","321122-001","320966-002","320565-002","318315-002","317834-002","317771-002","317416-002","316989-002","316556-003","316320-001","315422-002","314888-001","313773-001","313766-002","313715-001","313689-001","311997-002","310150-002","309038-004","308732-001","308639-001","307956-002","307607-002","307087-003","306275-002","305933-002","305306-001","303707-002","303705-002","303696-005","303490-002","303054-001","303023-001","302892-002","302874-003","263790-003","399499-001","376744","369923","369920","369221","366590","358480","357943","357895","357892","357538","356974","355356","353818","351792","348135","346840","343370","338300","336657","336583","335547","410211","410023","410022","410021","410020","410019","410018","410017","410016","410015","410014","408664","408347","406633","406632","406631","406508","406507","406506","406505","406504","406503","406502","406501","406500","406499","406498","406497","406496","406495","406494","406493","406492","406063","405862","405861","405860","405859","405858","405857","405856","405855","405854","405853","405852","405851","405850","405849","405848","405847","402591","401976","401911","401910","401909","401908","401907","401906","401905","401904","401903","401764","401763","401762","401761","401760","401759","401758","401757","401756","401755","401754","401281","401280","401279","401278","401277","401276","401275","401274","401273","401272","401271","401270","401269","401268","401267","401266","401265","401264","401263","401262","401261","401260","401259","401258","401257","401256","401255","401254","401253","401252","401251","401250","401249","401248","401247","401246","401245","401244","401243","401242","401241","401240","401239","401238","401237","401236","401235","401234","401233","401232","401231","401230","401229","401228","401227","401226","401225","401223","401222","401221","401220","401219","401218","401217","401216","401215","401214","401213","400606","400605","400604","400603","400602","400601","400600","400599","400598","400597","400596","400595","400594","400593","400592","400591","400590","400589","400588","400587","400586","400585","400584","400583","400582","400581","400580","400579","400578","400577","400576","400224","399631","399630","399629","399628","399627","399626","399625","399624","399623","399622","399621","399620","399619","399618","399617","399016","399015","399014","399013","399012","399011","399010","399009","399008","399007","399006","399005","399004","399003","399002","399001","399000","398999","398998","398997","398996","398995","398993","398992","398991","398990","398989","398988","398987","398986","398985","398984","398983","398982","398981","398980","398979","398978","398977","398976","398975","398974","398973","398972","398971","398970","398969","398968","398967","398966","398965","398964","398963","398962","398961","398960","398959","398958","398957","398956","398955","398954","398953","398952","398951","398950","398949","398948","398947","398946","398945","398944","398943","398942","398941","398940","398939","398715","398714","398713","398712","398711","398710","398709","398708","398707","398706","398705","398704","398703","398702","398701","398700","398699","398698","398696","398695","398694","398693","398692","398691","398690","398688","398687","398684","398683","398682","398681","398680","398679","398678","398677","398666","398665","398664","398663","398662","398661","397654","394275-001","394146","394137","392706","391992","391991","391990","391989","391988","391987","391986","391985","391984","391983","391982","391981","391980","391979","391978","391977","391976","391975","391410","391409","391408","391407","391406","391405","391404","391403","391402","391401","391400","391399","391398","391397","391396","391395","391394","391393","391392","391391","391390","391389","391388","391387","391386","391385","391384","391383","391382","391381","391380","391379","391378","391377","391376","391375","391374","391373","391372","391371","391370","391369","391368","391367","391366","391365","391364","391363","391362","391361","391360","391359","391358","391357","391356","391355","391354","391353","391352","391351","391350","391348","391347","391346","391345","391344","391343","391342","391341","391340","391339","391338","391337","391336","391335","391334","391333","391332","391331","391330","391329","391251","391250","391249","391248","391247","391246","391245","391244","391243","391238","391237","391231","391230","391229","391228","391227","391226","391225","391224","391223","391222","391221","390962","390701","388926","388131","388130","388129","388128","388127","388126","388125","388124","388123","388122","388121","388120","388119","388118","387944","387943","387942","387941","387940","387939","387938","387937","387936","387935","387934","387933","387932","387931","387930","387929","387928","387927","387926","387925","387924","387923","387922","387921","387920","387919","387918","387917","387916","387915","387914","387913","387912","387911","387910","387909","387908","387907","387906","387905","387904","387903","387902","387901","387900","387899","387898","387897","387896","387895","387894","387893","387892","387891","387890","387889","387888","387887","387886","387885","387884","387883","387882","387881","387880","387879","387878","387877","387876","387875","387874","387873","387872","387871","387870","387869","387868","387866","387865","387864","387863","387862","387861","387860","387859","387858","387857","387856","387855","387854","387853","387852","387822","387523","387522","387521","387520","387497","387496","387271","387270","387269","387268","387267","387266","387265","387264","387263","387262","387261","387259","387258","387257","387256","387255","387254","387253","387252","387251","387250","387249","387248","387247","387246","387245","387244","387243","387242","387187","387186","387185","387184","387183","387182","387181","387180","387179","387178","387177","387176","387175","387174","387173","387172","387171","387170","387169","387168","387167","387166","387165","387164","387151","387149","387148","387147","387146","386429","386141","384950","384554","384551","384550","384549","384548","384547","384546","384545","384544","384543","384542","384541","384540","384539","384538","384537","384536","384535","384534","384533","384518","384511","384121","384112","383786","383579","383419","382994","382993","382992","382991","382990","382989","382988","382987","382986","382985","382984","382983","382982","382981","382980","382979","382978","382977","382976","382975","382974","382973","382972","382971","382970","382969","382968","382967","382966","382965","382964","382963","382962","382961","382960","382959","382958","382957","382956","382955","382954","382953","382952","382951","382950","382949","382948","382947","382946","382945","382944","382943","382942","382941","382940","382939","382938","382937","382936","382935","382934","382933","382761","382099","382098","382097","382081","382080","382079","381964","381963","381962","381961","381960","381959","381958","381957","381956","381955","381954","381953","381952","381941","381940","381939","381938","381937","381936","381935","381934","381933","381932","381931","381930","381872","381871","381870","381869","381868","381867","381866","381865","381825","381824","381823","381822","381821","381820","381819","381817","381816","381815","381814","381813","381689","381451","381228","381126","380335-001","380304","379816","379815","379814","379813","379812","379811","379810","379809","379808","379807","379806","379805","379804","379803","379802","379801","379800","379799","379798","379797","379108","378080","377903","377749","377748","377747","377746","377745","377743","377742","377741","377740","377739","377738","377737","377736","377735","377734","377733","377732","377726","377725","377724","377723","377722","377721","377720","377719","377718","377717","377716","377714","377674","377673","377672","377671","377658","377657","377656","377655","377654","377652","377651","377650","377649","377648","377474","377473","377472","377471","377470","377469","377468","377467","377466","377465","377464","377463","377462","377461","377460","377459","377458","377457","377456","377455","377454","377453","376844","376843","376842","376841","376840","376839","376838","376837","376836","376835","376834","376833","376832","376831","376830","376829","376828","376827","376826","376825","376824","376823","376822","376821","376820","376819","376818","376817","376816","376815","376814","376813","376812","376811","376810","376809","376808","376807","376806","376805","376804","376803","376802","376801","376800","376799","376798","376797","376796","376795","376794","376793","376792","376791","376790","376789","376788","376787","376786","376785","376784","376783","376782","376781","376780","376779","376778","376777","376776","376775","376774","376773","376772","376771","376770","376769","376768","376767","376766","376765","376764","376763","376762","376688","376489","376488","376486","376485","376484","376123","376051","376018","375530","375382","375296","373741","373630","373536","373535","373532","373296","373295","373294","373293","373292","373291","373290","373289","373288","373287","373286","373285","373284","373283","373282","373281","373280","373279","373278","373277","373276","373275","373274","373273","373272","373271","373270","373269","373268","373267","373266","373265","373258","373256","373255","373254","373252","373250","373249","373248","373247","373246","373245","373244","373243","373242","373230","373229","373228","373227","373226","373225","373224","373223","373222","372740","372739","372738","372737","372736","372735","372734","372733","372732","372731","372730","372729","372728","372727","372726","372725","372724","372723","372722","372721","372720","372719","372718","372717","372716","372715","372714","372713","372712","372711","372710","372709","372708","372707","372706","372705","372704","372703","372702","372701","372700","372699","372698","372697","372696","372695","372694","372693","372692","372691","372690","372689","372688","372687","372686","372685","372684","372683","372682","372681","372680","372679","372678","372677","372676","372675","372674","372673","372672","372671","372670","372669","372668","372667","372302","372301","372300","372299","372298","372297","372296","372295","372294","372293","372292","372291","372290","372289","372288","372287","372171","372170","372167","372166","372165","372164","372163","372162","372161","371681","371091","371076","371057","370939","370554","369973","369860","369551","368141","368023","368020","365806","365805","365804","365803","365802","365801","365800","365799","365798","365797","365796","365795","365794","365793","365764","365763","365762","365761","365760","365759","365758","365757","365756","365755","365754","365753","365752","365751","365750","365748","365747","365746","365745","365744","365743","365742","365741","365740","365739","365738","365737","365736","365735","365734","365733","365732","365731","365730","365729","365728","365727","365726","365725","365724","365723","365722","365721","365720","365719","365718","365717","365716","365715","365714","365713","365712","365711","365710","365709","365708","365707","365571","365570","365569","365568","365567","365566","365565","365563","365562","365561","365559","365413","365412","365411","365410","365408","365407","365406","365405","365404","365402","365401","365400","365373","365372","365371","365370","365369","365368","365367","365366","365365","365363","365361","365360","365359","365358","365357","365217","363697","362934","362930","362929","362927","362926","362922","362921","362880","362879","362878","362877","362570","362569","362568","362567","362566","362565","362564","362563","362562","362561","362560","362559","362558","362557","362556","362555","362554","362553","362552","362551","362550","362549","362548","362547","362546","362545","362544","362543","362542","362541","362540","362539","362538","362537","362536","362535","362534","362533","362532","362531","362530","362529","362528","362527","362526","362525","362524","362523","362522","362521","362520","362519","362517","362516","362515","362514","362513","362512","362511","362510","362509","362508","362507","362506","362505","362504","362503","362502","362501","362406","362405","362404","362403","362402","362401","362400","362399","362398","362397","362396","362395","362232","360989","360370","360369","360368","360367","360366","360365","360364","360363","360362","360361","360360","360359","360358","360357","360314","360313","360312","360311","360310","360309","360308","360307","360306","360305","360304","360303","360302","360301","360300","360299","360298","360297","360296","360295","360294","360293","360292","360291","360290","360289","359803","359797","359677-001","359633","358487","354452","354448","354447","354444","354442","354276","354275","354272","354271","354270","354262","354260","354259","354258","354257","354256","354255","354252","354236","354235","354234","354233","354232","354231","354230","354229","354228","354227","354226","354225","354224","354223","354222","354221","354220","354219","354218","354217","354216","354215","354214","354213","354212","354211","354210","354209","354208","354207","354206","354205","354204","354203","354202","354201","354200","354198","354197","354196","354195","353209","353208","353207","353206","353205","353204","353203","353202","353201","353200","353199","353198","353197","353196","353195","353194","353193","353192","353191","353190","353189","353188","353187","353186","353185","351404","351403","351402","351401","351400","351399","351398","351397","351396","351395","351394","351393","351392","351391","351390","351389","351388","351387","351386","351385","351384","351383","351382","351381","351380","351379","351378","351377","351376","351375","351374","351373","351372","351371","351370","351369","351368","351367","351366","351365","351364","351162","351161","351155","351150","351114","351111","351109","351105","351104","351100","351098","351082","350624","350623","350622","350621","350620","350619","350618","350617","350616","350615","350614","350613","350612","350611","350610","350609","350608","350607","350606","350605","350604","350603","350602","350601","350600","350599","350598","350597","350596","350595","350594","350593","350592","350591","350590","350589","350588","350587","350586","350585","350584","350583","350582","350581","350580","350579","350578","350577","350576","350575","350574","350573","350572","350571","350570","350569","350568","350567","350566","350565","350564","350563","350562","350561","350560","350559","350558","350557","350556","350555","350554","350553","350552","350551","350550","350549","350548","350547","350546","350545","350544","350543","350542","350541","350540","350539","350538","350537","350536","350535","350534","350533","350532","350531","350415","350414","350413","350412","350411","350406","350405","350404","350403","350005","350004","350003","350002","350000","349999","349998","349997","349996","349995","349994","349359","349356","349355","349354","347568","347246","345991","345990","345989","345988","345987","345986","345985","345984","345983","345982","345981","345980","345979","345978","345977","345976","345975","345974","345973","345972","345971","345969","345968","345967","345966","345965","345964","345963","345962","345961","345960","345959","345958","345957","345956","345955","345954","345953","345952","345951","345950","345949","345948","345947","345946","345945","345944","345943","345942","345941","345940","345939","345938","345446","345210","345208","345205","345204","345199","345196","345008","344619","344617","343845","343704","343468-002","343420","343287","343209","343193","343192","343191","343190","343189","343188","343187","343186","343185","343184","343183","343182","343181","343180","343179","343178","342919-001","342454","342447","342192","342088","340884","340883","340882","340881","340880","340879","340878","340877","340876","340875","340874","340873","340872","340871","340870","340869","340868","340867","340866","340865","340864","340863","340862","340861","340860","340859","340858","340857","340856","340855","340854","340853","340852","340851","340850","340849","340848","340847","340846","340845","340844","340843","340842","340744","340743","340742","340670","340669-001","340625","340620","340619","340618","340615","340552","340548","340481","340478","340271","340270","340269","340268","340267","340266","340265","340264","340263","340262","340261","340260","340259","340258","340257","340256","340255","340254","340253","340252","340250","340249","340248","340247","340245","340143","339913","339910","339849","339659","339334","339327","339010","339009","339008","339007","339006","339005","339004","339003","339002","339000","338999","338998","338997","338996","338995","338994","338993","338992","338991","338990","338989","338988","338987","338986","338985","338984","338983","338982","338981","338980","338979","338978","338977","338976","338975","338974","338973","338972","338971","338970","338969","338968","338965","338964","338963","338962","338961","338959","338958","338448","338447","338446","338445","338444","338443","338442","338441","338440","338439","338438","338437","338436","338435","337906","337901","336702","336701","336700","336699","336698","336697","336696","336695","336694","336693","336692","336691","336690","336689","336688","336687","336686","336685","336684","336683","336682","336681","336680","336679","336678","336677","336676","336675","336674","336673","336672","336671","336670","336669","336668","336667","336666","336148","336147","336145","336144","336137","336136","336134","336133","336132","336130","336128","336126","336125","336121","336118","336115","336108","336107","336106","336105","336104","336103","336102","336101","336100","336099","336098","336097","336096","336095","336093","336092","336090","336087","336071","336070","336069","336068","336067","336066","336065","336064","335755","335724","335723","335720","335429","335428","335136","335131","334885","333710","332290","332288","332287","332285","332280","332279","332278","332273","332270","332269","332268","332267","332265","332264","332263","332262","332260","332259","332258","332257","332256","332255","332254","332253","332252","332251","331914","331913","331912","331911","331910","331909","331658","331522","331521","331518","331517","331512","331057","330787","330786","330785","330784","330783","330782","330781","330780","330779","330778","330777","330776","330775","330774","330773","330772","330771","330770","330769","330768","330767","330766","330765","330764","330763","330762","330761","330760","330759","330758","330757","330756","330755","330753","330752","330751","330750","330749","330748","330747","330746","330745","330744","330743","330742","330741","330740","330739","330738","330737","330736","330678","330677","330676","330675","330674","330673","330672","330671","330670","330669","330668","330667","330665","330664","330663","330662","330661","330660","330659","330658","330657","330655","330555","330554","330553","330551","330550","330549","330548","330547","330546","330545","330544","330543","330542","330541","330540","330539","330538","330537","330536","330506","330505","330504","330503","330499","330497","330494","330493","330489","330488","330487","330486","330485","330484","330480","330479","330478","330477","330474","330473","330472","330466","330464","330463","330462","330461","330456","330455","330454","330452","330451","330448","330447","330446","330442","330439","330434","330418","330417","330416","330415","330414","330413","330412","330411","330410","330409","330408","330407","330406","330405","329676","329675","329670","329669","329668","329667","329666","328565","327521","323595-001","323040-002","320261-002","320088-001","319936-001","314533-001","312993-003","304986-001","304946-003","294816-002","292632-001","291430-002","282500-002","275522-005","268531-002","249640-002","243206-002","238299-001","238259-001","238192-001","238110-001","237947-004","410231","410096","410074","409865","409717","409593","409591","409562","409545","409376","409344","409165","409139","409113","409041","409032","408990","408983","408977","408656","408654","408508","408498","408475","408456","408307","408144","408141","408038","407998","407859","407839","407832","407828","407810","407769","407741","407732","407656","407604","407472","407451","407436","407261","407173","407166","407087","407075","406996","406882","406876","406807","406779","406432","406370","406321","406174","406054","405959","405919","405749","405709","405685","405623","405519","405502","405422","405420","405390","405387","405380","405377","405353","405348","405296","405285","405283","405210","405188","405172","405161","405159","405147","405145","405141","405136","405134","405131","405108","405088","405085","405081","405073","405011","404998","404996","404990","404989","404984","404976","404964","404912","404873","404495","404417","404391","404386","404383","404373","404369","404333","404312","404272","404265","404189","404187","404163","404082","404061","404008","403689","403687","403610","403487","403479","403474","403468","403465","403462","403460","403432","403404","403392","403322","403311","403308","403190","403183","403179","403042","403020","402999","402937","402865","402853","402851","402830","402816","402814","402805","402727","402713","402689","402666","402664","402562","402557","402545","402461","402438","402406","402382","402377","402370","402368","402351","402322","402317","402315","402293","402291","402219","402193","402183","402176","402134","402122","402114","402112","402106","402101","402065","402051","402024","402020","402014","401987","401983","401920","401918","401900","401666","401662","401638","401636","401618","401597","401555","401553","401547","401541","401373","401364","401361","401359","401297","401285","401203","401171","401165","401140","401127","401097","401084","401028","401024","401011","401008","400909","400907","400827","400768","400735","400732","400722","400720","400708","400669","400646","400565","400555","400516","400490","400461","400401","400396","400310","400265","400263","400259","400256","400254","400251","400176","400160","400148","400145","400141","400138","400077","400073","400051","400005","399936","399920","399916","399816","399808","399784","399782","399718","399712","399681","399658","399611","399589","399561","399550","399339","399284","399261","399133","399078","399073","399020","398933","398843","398766","398628","398608","398545","398489","398483","398407","398394","398392","398362","398285","398171","398044","398029","397943","397925","397923","397905","397846","397842","397840","397822","397581","397559","397540","397527","397503","397501","397312","397288","397211","397169","396571","396569","396567","396467","396393","396355","396347","396281","396246","396214","396196","396190","396178","396162","396070","395941","395938","395888","395868","395834","395483","395466","394992","394665","394551","394543","394271","394265","394235","394224","394065","394061","394059","394047","393986","393943","393934","393905","393901","393895","393869","393839","393795","393779","393775","393693","393662","393631","393560","393461","393452","393407","393391","393307","393235","393223","393221","393215","393037","392791","392681","392657","392619","392552","392546","392395","392361","392334","392314","392308","392232","392223","392199","392094","392057","391971","391969","391924","391844","391775","391574","391553","391500","391486","391279","391209","391207","391205","391197","391126","391078","390945","390933","390875","390796","390672","390582","390563","390487","390465","390412","390397","390387","390356","390314","390312","390310","390267","390228","390209","390179","390173","390075","390069","390063","390029","389966","389926","389917","389833","389828","389807","389761","389739","389663","389578","389421","389415","389400","389327","389313","389268","389174","389154","389117","389034","389003","388929","388912","388879","388690","388630","388501","388485","388480","388463","388330","388314","388172","388163","388096","388001","387966","387814","387804","387800","387756","387735","387712","387567","387562","387352","387226","387217","387202","387031","387006","386982","386967","386874","386864","386845","386838","386787","386716","386532","386502","386305","386213","386128","386126","386121","386116","386045","385929","385869","385827","385819","385797","385733","385718","385716","385714","385668","385443","385400","385392","385349","385333","385130","385106","385099","385011","384765","384762","384757","384724","384688","384583","384552","384525","384505","384461","384457","384447","384277","384222","384164","384155","383969","383836","383823","383815","383688","383660","383601","383594","383520","383386","383378","383252","383204","383089","383073","382921","382896","382834","382802","382793","382713","382685","382575","382543","382458","382430","382379","382201","382046","382040","381894","381857","381756","381754","381750","381733","381687","381640","381538","381413","381408","381401","381393","381303","381287","381260","381169","381160","381154","381128","381123","381060","380844","380799","380794","380778","380574","380572","380408","380400","380355","380322","380292","380214","380086","380082","380063","380038","380030","380018","379857","379851","379787","379749","379647","379592","379589","379539","379504","379435","379378","379372","379368","379346","379230","379197","379174","379128","378954","378767","378667","378631","378492","378175","378152","378041","378039","377988","377970","377879","377706","377637","377596","377593","377531","377484","377478","377366","377364","377224","377160","377149","377117","377095","377014","376972","376867","376620","376611","376536","376479","376467","376366","376364","376301","376290","376279","376275","376248","376132","376050","376004","375967","375958","375950","375915","375911","375783","375730","375706","375704","375700","375520","375518","375501","375484","375436","375431","375414","375395","375279","375271","375225","375220","374985","374937","374915","374816","374728","374724","374677","374655","374579","374571","374500","374421","374412","374407","374358","374314","374310","374283","374251","374199","374120","374103","374041","374037","373995","373981","373969","373924","373922","373877","373816","373752","373747","373577","373560","373498","373496","373428","373419","373411","373396","373394","373334","373330","373161","373092","373054","373021","372946","372941","372872","372856","372845","372834","372824","372818","372792","372788","372772","372759","372754","372748","372741","372629","372620","372586","372573","372469","372424","372380","372350","372346","372336","372257","372198","372003","371960","371952","371943","371880","371691","371661","371625","371615","371613","371541","371445","371416","371390","371383","371375","371369","371343","371323","371221","371216","371203","371162","371097","371095","371068","371063","371011","371004","370946","370926","370893","370865","370863","370860","370840","370754","370744","370578","370552","370417","370355","370255","370245","370235","370224","370214","370110","370096","370021","369979","369885","369717","369707","369680","369669","369664","369660","369585","369505","369499","369470","369468","369385","369347","369340","369332","369272","369239","369230","369070","369050","369041","368988","368908","368896","368851","368732","368726","368721","368714","368695","368613","368591","368533","368522","368508","368452","368374","368353","368339","368330","368236","368232","368014","368010","367966","367915","367907","367905","367800","367421","367413","367341","367285","367240","367238","367106","367104","367100","367098","367096","367092","367090","367088","367084","367079","366886","366844","366839","366837","366681","366679","366249","366243","366005","365609","365449","365286","365282","365235","365213","365172","365152","365080","365075","365072","365041","365032","364917","364899","364860","364811","364799","364580","364450","364447","364412","364403","364398","364264","364254","364214","364210","364176","364065","364052","364043","364006","363948","363941","363918","363906","363897","363781","363620","363610","363608","363565","363563","363559","363556","363544","363509","363468","363461","363401","363389","363370","363365","363291","363264","363208","363134","363131","363100","363007","362972","362898","362896","362796","362484","362467","362313","362274","362219","362215","362209","362202","362187","362157","362151","362110","362077","362037","361975","361932","361879","361874","361870","361769","361701","361678","361630","361324","361322","361298","361296","361292","361288","361214","361084","361077","360932","360915","360903","360807","360737","360592","360575","360569","360396","360181","360094","360088","360057","360052","360049","360014","359874","359872","359870","359760","359740","359721","359658","359650","359639","359637","359562","359551","359513","359391","359364","359323","359212","359157","358818","358816","358785","358783","358779","358738","358705","358700","358692","358661","358634","358574","358571","358563","358435","358426","358408","358330","358254","358177","358137","358044","358040","358020","358016","358012","357839","357836","357784","357751","357725","357673","357634","357624","357612","357610","357604","357569","357557","357547","357543","357378","357376","357325","357323","357289","357280","357253","357239","357225","357078","356992","356951","356912","356882","356685","356657","356015","356007","355725","355576","355571","355495","355423","355416","355396","355313","355287","355238","355229","355217","355194","355167","355117","355081","355069","355065","355062","355024","354999","354938","354936","354927","354878","354871","354823","354818","354780","354740","354725","354722","354673","354660","354654","354634","354626","354620","354618","354566","354522","354500","354430","354417","354289","354184","354136","354131","354118","354082","354046","353981","353936","353911","353907","353873","353866","353862","353828","353779","353773","353765","353737","353716","353704","353697","353681","353667","353655","353653","353605","353552","353517","353486","353483","353439","353422","353420","353410","353408","353391","353314","353304","353271","353171","353122","353110","353083","353078","353074","353050","352984","352968","352933","352889","352885","352847","352840","352835","352807","352780","352766","352763","352732","352717","352626","352591","352582","352546","352441","352374","352360","352354","352324","352246","352244","352171","352099","352005","352001","351975","351915","351912","351756","351753","351723","351703","351699","351607","351587","351535","351468","351455","351449","351439","351436","351334","351272","351260","351182","351173","351166","351159","351075","351072","351057","351054","351052","350988","350961","350958","350875","350866","350823","350818","350813","350807","350785","350777","350768","350762","350689","350658","350511","350499","350488","350484","350482","350478","350385","350381","350378","350375","350372","350369","350366","350364","350332","350248","350235","350149","350145","350120","350095","350018","350006","349990","349921","349856","349853","349851","349822","349802","349742","349714","349659","349585","349577","349575","349572","349472","349464","349462","349425","349415","349413","349410","349374","349366","349363","349326","349226","349167","349117","349092","349090","349085","349076","349074","349061","349059","349055","349050","349011","348995","348992","348989","348978","348927","348891","348820","348803","348775","348642","348606","348604","348564","348548","348542","348538","348536","348493","348491","348427","348364","348330","348264","348218","348216","348212","348206","348149","348137","348063","348039","348018","347980","347948","347877","347855","347843","347792","347747","347742","347710","347686","347660","347655","347493","347491","347481","347479","347475","347473","347468","347459","347451","347354","347320","347173","347171","347169","347167","347165","347132","347030","347024","347022","347020","347018","347012","346919","346905","346864","346823","346806","346791","346753","346715","346688","346656","346611","346590","346562","346550","346498","346348","346329","346324","346308","346239","346229","346205","346185","346183","346165","346159","346066","346064","346043","345995","345923","345891","345804","345802","345780","345776","345763","345761","345720","345586","345582","345572","345530","345519","345494","345466","345461","345457","345425","345396","345394","345304","345170","345162","345141","345118","345109","345044","345039","345014","344995","344973","344918","344878","344821","344793","344781","344777","344773","344771","344728","344726","344684","344679","344603","344600","344596","344594","344522","344511","344507","344488","344471","344453","344434","344335","344332","344273","344267","344256","344233","344230","344193","344191","344143","344138","344136","344064","344010","343961","343950","343929","343855","343828","343812","343779","343774","343714","343706","343702","343699","343554","343493","343445","343426","343417","343402","343359","343348","343320","343198","343150","343058","343051","342998","342961","342955","342879","342843","342838","342834","342831","342810","342802","342738","342736","342727","342722","342693","342688","342684","342682","342677","342670","342668","342664","342659","342631","342629","342526","342524","342519","342516","342494","342456","342450","342421","342389","342288","342285","342249","342227","342221","342214","342210","342145","342143","342130","342114","342112","342110","342108","342022","342017","342002","341998","341996","341931","341906","341858","341854","341848","341841","341839","341836","341799","341788","341776","341774","341764","341710","341708","341703","341694","341688","341683","341680","341670","341648","341646","341640","341630","341626","341623","341618","341609","341603","341598","341596","341588","341585","340536","340471","340467","340464","340438","340433","340431","340202","340200","340114","340112","340109","340074","340043","340040","340029","339979","339977","339975","339944","339935","339927","339891","339889","339859","339851","339847","339845","339775","339746","339727","339601","339595","339575","339559","339555","339420","339414","339409","339364","339356","339352","339322","339264","339261","339254","339241","339216","339214","339188","339126","339099","339093","339091","339040","339033","339028","338921","338875","338869","338857","338851","338847","338817","338774","338764","338725","338723","338721","338717","338714","338628","338611","338583","338577","338572","338555","338494","338466","338464","338408","338401","338368","338364","338336","338324","338320","338238","338125","338115","338108","338103","338015","338007","338002","337960","337938","337887","337862","337798","337783","337776","337773","337770","337767","337736","337734","337727","337725","337653","337649","337528","337511","337501","337465","337461","337418","337413","337410","337405","337322","337308","337296","337280","337264","337241","337233","337142","337137","337133","337129","337104","337093","337047","337044","337039","337037","337033","337028","336993","336969","336966","336964","336959","336868","336864","336854","336850","336845","336827","336782","336780","336778","336772","336766","336755","336752","336654","336449","336447","336425","336414","336412","336410","336359","336299","336283","336263","336260","336255","336249","336246","336240","336226","336176","336169","336160","336157","336072","336035","336032","336029","335999","335977","335958","335898","335891","335876","335873","335850","335834","335832","335787","335775","335773","335748","335694","335641","335634","335628","335623","335618","335607","335601","335594","335567","335562","335476","335430","335394","335388","335383","335379","335357","335336","335321","335311","335303","335300","335279","335275","335209","335109","335103","335093","335021","334999","334996","334990","334956","334942","334929","334925","334908","334887","334882","334873","334869","334837","334831","334826","334822","334754","334752","334750","334604","334565","334556","334551","334545","334487","334482","334471","334467","334463","334436","334398","334395","334368","334229","334179","334147","334145","334117","334084","334058","334056","334049","333991","333942","333907","333897","333893","333891","333832","333792","333748","333692","333674","333670","333657","333585","333575","333525","333523","333519","333463","333455","333449","333440","333403","333393","333389","333338","333334","333263","333244","333155","333148","333134","333123","333056","332975","332971","332925","332914","332907","332889","332885","332875","332871","332821","332781","332776","332755","332722","332715","332691","332685","332645","332558","332518","332512","332506","332502","332445","332431","332324","332238","332219","332129","332127","332103","332070","332062","332054","332052","332022","332009","332001","331999","331921","331889","331880","331874","331870","331865","331863","331861","331856","331852","331850","331837","331834","331831","331829","331818","331813","331808","331799","331795","331792","331785","331757","331755","331745","331735","331731","331671","331663","331654","331650","331625","331544","331539","331537","331294","331283","331183","331180","331178","331174","331054","331045","331043","331005","330997","330986","330957","330810","330808","330713","330710","330586","330511","330419","330397","330387","330385","330384","330323","330315","330252","330250","330225","330185","330177","330122","330120","330104","330084","329997","329989","329979","329961","329955","329950","329899","329886","329864","329857","329839","329746","329743","329741","329678","329673","329657","329577","329568","329563","329561","329499","329497","329495","329493","329489","329487","329340","329321","329319","329317","329315","329313","329311","329309","329297","329291","329262","329258","329242","329240","329212","329210","329199","329125","329038","329018","329015","329011","328989","328986","328967","328965","328959","328957","328953","328923","328921","328918","328915","328913","328911","328905","328831","328826","328655","328649","328631","328624","328622","328618","328553","328551","328479","328452","328364","328308","328306","328301","328292","328264","328158","328155","328147","328145","328137","328135","328132","328128","328125","328020","328016","328001","327984","327982","327980","327975","327973","327971","327933","327922","327907","327845","327841","327815","327804","327802","327790","327782","327766","327764","327759","327653","327633","327616","327610","327563","327558","327546","327531","327523","327476","327468","327437","327433","327428","327420","327416","327412","327410","327404","327313","327261","327257","327190","327123","327119","326547-002","326306-002","326080-002","325215-002","323755-002","323187-002","323070-002","323026-003","321634-002","317024-002","312812-002","311855-002","302754-002","299886-002","299862-002","289924-002","281965-002","275205-002","274118-003","257619-002","209847-002","207584-002","409250","407533","407331","407176","406408","406211","400700","400689","400681","400679","400671","400571","400486","399026","392208","390643","375230-001","369073","368151-001","358846","357309","352566","352345-001","351487","350525","349080","348255","347821","347689","346122","345605-003","345497","345484","344833","343505","343210","343109","342969","342953","342228","342161","341988","341742","341691","340473","339867","339786","338956","338695","338424","337402","337075","336768","336186","336184","335626","334547","333001","332983","331641","330795","330431","329088","329047","328729","328037","327810","327384","327218","326778-002","326200-002","326027-002","325833-003","325736-002","325721-002","325332-002","324799-002","324752-002","324703-002","324231-002","321712-002","321258-002","321063-002","320972-002","320894-002","320871-002","320682-002","320662-002","320188-002","320164-002","320070-002","318729-003","318351-002","318174-002","318126-002","317334-002","316937-002","316785-002","315293-002","315176-002","315126-002","314572-002","313762-003","313357-003","312086-002","311616-002","311375-002","310977-002","310368-002","309444-002","309113-002","308981-002","307471-002","306801-002","303324-002","300690-002","300108-002","299205-003","298611-002","298441-002","295194-003","294465-002","293797-004","293073-003","289912-002","289730-003","288903-002","287939-002","286698-002","285442-003","282801-002","282711-002","281455-003","280458-002","264623-002","260979-002","260193-002","259056-002","258952-002","255717-002","255590-002","254806-002","252950-002","243578-003","236211-002","235672-002","227878-002","-003","385282","380323","373862","347829","343998","339737","335143","331464","328690","328108","327336","239695-003"],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],["Sub","Main","Main","Main","Sub","Main","Sub","Sub","Sub","Sub","Sub","Sub","Main","Main","Sub","Sub","Sub","Sub","Sub","Main","Main","Main","Main","Sub","Sub","Main","Main","Sub","Main","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Sub","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Sub","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Sub","Main","Sub","Sub","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Sub","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Sub","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Main","Sub"]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>source<\/th>\n <th>External_Key<\/th>\n <th>count<\/th>\n <th>project_type<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"filter":true,"columnDefs":[{"className":"dt-right","targets":3},{"orderable":false,"targets":0}],"order":[],"autoWidth":false,"orderClasses":false}},"evals":[],"jsHooks":[]}</script>
</div>
</div>
</div>
</div>
<script>
// add bootstrap table styles to pandoc tables
function bootstrapStylePandocTables() {
$('tr.odd').parent('tbody').parent('table').addClass('table table-condensed');
}
$(document).ready(function () {
bootstrapStylePandocTables();
});
</script>
<!-- tabsets -->
<script>
$(document).ready(function () {
window.buildTabsets("TOC");
});
$(document).ready(function () {
$('.tabset-dropdown > .nav-tabs > li').click(function () {
$(this).parent().toggleClass('nav-tabs-open');
});
});
</script>
<!-- code folding -->
<script>
$(document).ready(function () {
// temporarily add toc-ignore selector to headers for the consistency with Pandoc
$('.unlisted.unnumbered').addClass('toc-ignore')
// move toc-ignore selectors from section div to header
$('div.section.toc-ignore')
.removeClass('toc-ignore')
.children('h1,h2,h3,h4,h5').addClass('toc-ignore');
// establish options
var options = {
selectors: "h1,h2,h3,h4",
theme: "bootstrap3",
context: '.toc-content',
hashGenerator: function (text) {
return text.replace(/[.\\/?&!#<>]/g, '').replace(/\s/g, '_');
},
ignoreSelector: ".toc-ignore",
scrollTo: 0
};
options.showAndHide = true;
options.smoothScroll = true;
// tocify
var toc = $("#TOC").tocify(options).data("toc-tocify");
});
</script>
<!-- dynamically load mathjax for compatibility with self-contained -->
<script>
(function () {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
document.getElementsByTagName("head")[0].appendChild(script);
})();
</script>
</body>
</html>