PGh0bWw+CjxoZWFkPgo8dGl0bGU+Rml4ZWQgSXNzdWVzIGluIE1lcmFrIFJlbGVhc2U8L3RpdGxlPgo8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi8uLi8uLi8uLi9uZXRiZWFucy5jc3MiIC8+CjwvaGVhZD4KPGJvZHk+Cgo8SDE+VGhlIElzc3VlcyBmaXhlZCBpbiB0aGUgTWVyYWsgUmVsZWFzZSAoMy40LjEpPC9IMT4KCjxwPkEgdG90YWwgb2YgMTA3IGlzc3VlcyBoYXZlIGJlZW4gcmVzb2x2ZWQgaW4gdGhlIE5ldEJlYW5zIDMuNC4xLiAKSWYgeW91J2QgbGlrZSwgeW91IG1heSBsaXN0IHRoZW0gYWxsIHVzaW5nIHRoZSAKPGEgaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvYnVnbGlzdC5jZ2k/dGFyZ2V0X21pbGVzdG9uZT0zLjQuMSZvcmRlcj1pc3N1ZXMucHJpb3JpdHkiCj5Jc3N1ZVppbGxhIHF1ZXJ5PC9hPi4KCjxwPlNvbWUgb2YgdGhlbSB3ZXJlIFJGRXMgKHJlcXVlc3RzIGZvciBlbmNoYW5jZW1lbnQpLCBidXQgbW9zdCB3ZXJlIGJ1Z3MsIAplaXRoZXIgbWlub3IgbGlrZSBkb2N1bWVudGF0aW9uIGluY29uc2lzdGVuY2llcywgb3IgbW9yZSBhbm5veWluZyBsaWtlCmluYWJpbGl0eSB0byBicm93c2UgdGhyb3VnaCBjb21waWxhdGlvbiBlcnJvcnMgZnJvbSBBbnQgc2NyaXB0LApkZWFkbG9ja3MgaW4gcHJvamVjdCBzd2l0Y2hpbmcgb3IgbnVtZXJvdXMgdW5jYW5jZWxsYWJsZSBOdWxscG9pbnRlciBleGNlcHRpb25zLgo8L3A+Cgo8SDI+VGhlIGlzc3VlcyBoYXZlIGJlZW4gZ3JvdXBlZCBieSBtb2R1bGVzPC9IMj4KPGJsb2NrcXVvdGU+Cjx0YWJsZSBjbGFzcz0ndGFibGVjYmcnIGJvcmRlcj0nMCcgY2VsbHBhZGRpbmc9JzAnIGNlbGxzcGFjaW5nPScwJz4KICA8dHI+PHRkPjxiPk1vZHVsZSdzIE5hbWU8L2I+PC90ZD48dGQ+PGI+IyBmaXhlZCBpc3N1ZXM8L2I+PC90ZD48L3RyPgogIDx0ciBjbGFzcz0ndGFibGVyJz48dGQ+Jm5ic3A7PC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgogIDx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZD48YSBocmVmPSIjQW50Ij5BbnQ8L2E+PC90ZD48dGQgYWxpZ249J3JpZ2h0Jz41PC90ZD48L3RyPgogIDx0ciA+PHRkPjxhIGhyZWY9IiNBcGlTdXBwb3J0Ij5BcGlTdXBwb3J0PC9hPjwvdGQ+PHRkIGFsaWduPSdyaWdodCc+MTwvdGQ+PC90cj4KICA8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQ+PGEgaHJlZj0iI0F1dG9VcGRhdGUiPkF1dG9VcGRhdGU8L2E+PC90ZD48dGQgYWxpZ249J3JpZ2h0Jz4yPC90ZD48L3RyPgogIDx0cj48dGQ+PGEgaHJlZj0iI0JlYW5zIj5CZWFuczwvYT48L3RkPjx0ZCBhbGlnbj0ncmlnaHQnPjE8L3RkPjwvdHI+CiAgPHRyIGNsYXNzPSd0YWJsZXJiZyc+PHRkPjxhIGhyZWY9IiNDbGF6eiI+Q2xheno8L2E+PC90ZD48dGQgYWxpZ249J3JpZ2h0Jz4xPC90ZD48L3RyPgogIDx0cj48dGQ+PGEgaHJlZj0iI0NvcmUiPkNvcmU8L2E+PC90ZD48dGQgYWxpZ249J3JpZ2h0Jz4xNjwvdGQ+PC90cj4KICA8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQ+PGEgaHJlZj0iI0RpZmYiPkRpZmY8L2E+PC90ZD48dGQgYWxpZ249J3JpZ2h0Jz41PC90ZD48L3RyPgogIDx0cj48dGQ+PGEgaHJlZj0iI0VkaXRvciI+RWRpdG9yPC9hPjwvdGQ+PHRkIGFsaWduPSdyaWdodCc+OTwvdGQ+PC90cj4KICA8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQ+PGEgaHJlZj0iI0Zvcm0iPkZvcm08L2E+PC90ZD48dGQgYWxpZ249J3JpZ2h0Jz4xPC90ZD48L3RyPgogIDx0cj48dGQ+PGEgaHJlZj0iI0luc3RhbGxlciI+SW5zdGFsbGVyPC9hPjwvdGQ+PHRkIGFsaWduPSdyaWdodCc+MTwvdGQ+PC90cj4KICA8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQ+PGEgaHJlZj0iI0phclBhY2thZ2VyIj5KYXJQYWNrYWdlcjwvYT48L3RkPjx0ZCBhbGlnbj0ncmlnaHQnPjE8L3RkPjwvdHI+CiAgPHRyPjx0ZD48YSBocmVmPSIjSmF2YSI+SmF2YTwvYT48L3RkPjx0ZCBhbGlnbj0ncmlnaHQnPjU8L3RkPjwvdHI+CiAgPHRyIGNsYXNzPSd0YWJsZXJiZyc+PHRkPjxhIGhyZWY9IiNKYXZhQ3ZzIj5KYXZhQ3ZzPC9hPjwvdGQ+PHRkIGFsaWduPSdyaWdodCc+NjwvdGQ+PC90cj4KICA8dHI+PHRkPjxhIGhyZWY9IiNKYXZhRG9jIj5KYXZhRG9jPC9hPjwvdGQ+PHRkIGFsaWduPSdyaWdodCc+MjwvdGQ+PC90cj4KICA8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQ+PGEgaHJlZj0iI05iQnVpbGQiPk5iQnVpbGQ8L2E+PC90ZD48dGQgYWxpZ249J3JpZ2h0Jz4yPC90ZD48L3RyPgogIDx0cj48dGQ+PGEgaHJlZj0iI09wZW5JREUiPk9wZW5JREU8L2E+PC90ZD48dGQgYWxpZ249J3JpZ2h0Jz4xNDwvdGQ+PC90cj4KICA8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQ+PGEgaHJlZj0iI1Byb3BlcnRpZXMiPlByb3BlcnRpZXM8L2E+PC90ZD48dGQgYWxpZ249J3JpZ2h0Jz4xPC90ZD48L3RyPgogIDx0cj48dGQ+PGEgaHJlZj0iI1RvbWNhdGludCI+VG9tY2F0aW50PC9hPjwvdGQ+PHRkIGFsaWduPSdyaWdodCc+MTwvdGQ+PC90cj4KICA8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQ+PGEgaHJlZj0iI1VJIj5VSTwvYT48L3RkPjx0ZCBhbGlnbj0ncmlnaHQnPjc8L3RkPjwvdHI+CiAgPHRyPjx0ZD48YSBocmVmPSIjVXNlcnNHdWlkZSI+VXNlcnNHdWlkZTwvYT48L3RkPjx0ZCBhbGlnbj0ncmlnaHQnPjI8L3RkPjwvdHI+CiAgPHRyIGNsYXNzPSd0YWJsZXJiZyc+PHRkPjxhIGhyZWY9IiNWY3NDb3JlIj5WY3NDb3JlPC9hPjwvdGQ+PHRkIGFsaWduPSdyaWdodCc+MTE8L3RkPjwvdHI+CiAgPHRyPjx0ZD48YSBocmVmPSIjVmNzR2VuZXJpYyI+VmNzR2VuZXJpYzwvYT48L3RkPjx0ZCBhbGlnbj0ncmlnaHQnPjk8L3RkPjwvdHI+CiAgPHRyIGNsYXNzPSd0YWJsZXJiZyc+PHRkPjxhIGhyZWY9IiNXZWIiPldlYjwvYT48L3RkPjx0ZCBhbGlnbj0ncmlnaHQnPjE8L3RkPjwvdHI+CiAgPHRyPjx0ZD48YSBocmVmPSIjWG1sIj5YbWw8L2E+PC90ZD48dGQgYWxpZ249J3JpZ2h0Jz4xPC90ZD48L3RyPgogIDx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZD48YSBocmVmPSIjTXVsdGlwbGUiPk11dGxpcGxlIE1vZHVsZXM8L2E+PC90ZD48dGQgYWxpZ249J3JpZ2h0Jz4yPC90ZD48L3RyPgogIDx0ciBjbGFzcz0ndGFibGVyJz48dGQ+Jm5ic3A7PC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgogIDx0cj48dGQ+PGI+VG90YWwgQW1vdW50IG9mIEZpeGVkIElzc3VlczwvYj48L3RkPjx0ZCBhbGlnbj0ncmlnaHQnPjxiPjEwNzwvYj48L3RkPjwvdHI+CjwvdGFibGU+CjwvYmxvY2txdW90ZT4KCjx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSI4MDAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgY2xhc3M9J3RhYmxlYmcnPgo8dGJvZHk+PHRyPgo8dGQ+Cjx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjEiIGNsYXNzPSd0YWJsZWJnJz4KPHRib2R5PgoKPHRyIGNsYXNzPSd0YWJsZWNiZyc+PHRkIGNvbHNwYW49IjIiID48dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj48dGJvZHk+PHRyPjx0ZAphbGlnbj0iY2VudGVyIj48ZGl2IGFsaWduPSJjZW50ZXIiPjxiPjxhIG5hbWU9IkFudCI+PGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iI2h0dHBzOi8vbmV0YmVhbnMub3JnL3NvdXJjZS9icm93c2UvYW50LyI+YW50PC9hPjwvYT48L2I+PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L3RkPjwvdHI+Cjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZCBiZ2NvbG9yPScjRUVFQkM2JyB3aWR0aD0iMjAiIHJvd3NwYW49IjUiPqCgoKA8L3RkPgo8dGQ+PGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMzA3NiI+MjMwNzY8L2E+OiBpbnRlZ3JhdGlvbiBvZiBBbnQgMS41LjEgaW50byBOZXRCZWFucyAzLjQuMTwvYj4KPEJMT0NLUVVPVEU+CldoZW4gTmV0QmVhbnMgMy40IHJlbGVhc2UgY2FtZSB0byBzb21lIGZpbmFsIHBoYXNlLCBBbnQgMS41IHdhcyByZWxlYXNlZCwgYnV0CnRlc3RpbmcgdW5jb3ZlcmVkIHNvbWUgc2V2ZXJlIGJ1Z3MsIHRoYXQgZm9yYml0IHRvIGluY2x1ZGUgaXQgaW50byAzLjQsIHNvbWUKdGltZSBhZnRlciBBbnQgMS41LjEgd2FzIHJlbGVhc2VkIHdpdGggYWxsIHRoZXNlIGJ1Z3MgZml4ZWQsIGJ1dCBOZXRCZWFucyB3YXMKYXJsZWFkeSByZWxlYXNlZC4gVGhlIEFudCAxLjUuMSBpbnRlZ3JhdGlvbiBtb2R1bGUgd2FzIHB1Ymxpc2hlZCB0byBOZXRCZWFucwphdXRvdXBkYXRlIHNlcnZlciwgdGhvcm91Z2hseSB0ZXN0ZWQgYW5kIDMuNC4xIGNvbnRhaW5zIGl0IGJ5IGRlZmF1bHQuCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXInPgo8dGQ+PGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNDQ3NCI+MjQ0NzQ8L2E+OiBuZXh0L3ByZXZpb3VzIGVycm9yIGZyb20gYW50IGNvbXBpbGF0aW9uLjwvYj4KPEJMT0NLUVVPVEU+ClRoaXMgcHJvYmxlbSBoYXBwZW5zIGV2ZXJ5dGltZSB3aGVuIHRoZSBjb21waWxlciBvZiBBbnQgc2NyaXB0IGlzIHNldAp0byAiQW50IFNjcmlwdCBDb21waWxhdGlvbiIuIFRoZSBwcm9ibGVtIGlzIHRoYXQgQW50IG9wZW5zIG93biBPdXRwdXQKdGFiIHdpdGggaXRzIG93biBuYW1lIGFuZCB0aGF0IGFmdGVyIHRoZSBjb21waWxhdGlvbiBpcyBmaW5pc2hlZCwgdGhlCkNvcmUgb3BlbnMgdGhlIHNlY29uZCBvdXRwdXQgdGFiIHdpdGggbmFtZSAiQ29tcGlsZXIiIHdoZXJlIHRoZSBzdGF0dXMKb2YgY29tcGlsYXRpb24gKHN1Y2Nlc3NmdWwgb3Igbm90IGlzIHNob3duKS4gVGhlIHNlY29uZCB0YWIgaXMKYWN0aXZhdGVkIGFuZCBiZWNhdXNlIGFsbCB0aGUgZXJyb3JzIHdlcmUgbG9nZ2VkIGluIHRoZSBmaXJzdCB0YWIsIHRoZQpGMTIgZG9lcyBub3Qgd29yay4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cjx0ciBjbGFzcz0ndGFibGVyYmcnPgo8dGQ+PGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNDUwNiI+MjQ1MDY8L2E+OiBFeGVjdXRvciBub3Qgbm90aWZ5aW5nIG9uIGNvbXBsZXRpb24uPC9iPgo8QkxPQ0tRVU9URT4KVGhlIHRhc2sgd2hpY2ggaXMgcmV0dXJuZWQgZnJvbSBUYXJnZXRFeGVjdXRvciBpcyAKd3JhcHBlciB0YXNrLiBVbmZvcnR1bmF0ZWxseSB0aGlzIHdyYXBwZXIgdGFzayBpcyBuZXZlciBzdGFydGVkLCAKdGhlcmVmb3JlIGl0IGNhbm5vdCByZXBvcnQgdGhhdCB0aGUgd3JhcHBlZCB0YXNrIGhhcyBhbHJlYWR5IGZpbmlzaGVkLgo8L0JMT0NLUVVPVEU+PC90ZD48L3RyPgo8dHIgY2xhc3M9J3RhYmxlcic+Cjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI1NzAxIj4yNTcwMTwvYT46IApEZXNlcmlhbGl6YXRpb24gb2YgQW50UHJvamVjdFN1cHBvcnQgd2l0aCBuZXcgcHJvamVjdCB1bnJlbGlhYmxlPC9iPgo8QkxPQ0tRVU9URT4KQW50UHJvamVjdFN1cHBvcnQgZGVzZXJpYWxpemVzIGl0c2VsZiBieSBkZXNlcidpbmcgYSBGaWxlT2JqZWN0IGFuZCBhIEZpbGUuIApUaGUgRmlsZSBpcyBmaW5lLCBJIHN1cHBvc2UuIApIb3dldmVyIHRoZSBGaWxlT2JqZWN0IGNoZWNrcyB0aGUgUmVwb3NpdG9yeSBmb3IgbW91bnRzLiAKSWYgdGhlIG1vdW50IGhhcyBub3QgYmVlbiBzZXQgdXAgYnkgdGhlIHRpbWUgdGhlIEFQUyBpcyBkZXNlcmlhbGl6ZWQsIAphcHBhcmVudGx5IGl0IGNhbiBiZWNvbWUgaW52YWxpZCAoZm89PW51bGwsIGZpbGU9PW51bGwpIGV2ZW4gdGhvdWdoIAppZiBkZXNlcidkIGxhdGVyIGl0IHdvdWxkIGJlIGZpbmUuCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgo8dHIgY2xhc3M9J3RhYmxlcmJnJz4KPHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI5MjQ2Ij4yOTI0NjwvYT46IApIeXBlcmxpbmtpbmcgb2YgQW50IHNjcmlwdCBlcnJvcnMgZG9lcyBub3Qgd29yayB1bmRlciAxLjUuMQo8L2I+CjxCTE9DS1FVT1RFPgpJIHRoaW5rIHRoaXMgaXMgYSByZWdyZXNzaW9uLiBVbmRlciBBbnQgMS41LjEsCmVycm9yIG1lc3NhZ2VzIHJlZmVycmluZyB0byBidWlsZCBzY3JpcHRzIGRvIG5vdApoeXBlcmxpbmssIGFzIHRoZXkgdXNlIFVSTCBzeW50YXggKGUuZy4gZmlsZTopCndoaWNoIHRoZSBBbnQgbW9kdWxlIGRvZXMgbm90IHJlY29nbml6ZS4gSGVyZSBpcwphbiBleGFtcGxlOiBkb3dubG9hZCBtYXZlbiBzb3VyY2UKKGpha2FydGEuYXBhY2hlLm9yZykgYW5kIHJ1biB0b3AtbGV2ZWwKYnVpbGQtYm9vdHN0cmFwLnhtbCBmcm9tIDMuNC4xIHdpdGggbm8gZnVydGhlcgpjb25maWd1cmF0aW9uIGFuZCB5b3UgZ2V0Ogo8cC8+CjxwcmU+CnNyYy9ib290c3RyYXAvb3JnL2FwYWNoZS9tYXZlbi9Cb290c3RyYXBUYXNrLmphdmEKWzQ1Ml0gY2Fubm90IHJlc29sdmUgc3ltYm9sCnN5bWJvbCAgOiBjbGFzcyBQYXR0ZXJuU2V0IApsb2NhdGlvbjogY2xhc3Mgb3JnLmFwYWNoZS5tYXZlbi5Cb290c3RyYXBUYXNrCiAgICAgICAgUGF0dGVyblNldCBwYXR0ZXJuU2V0ID0gbmV3IFBhdHRlcm5TZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgoyMiBlcnJvcnMKZmlsZTovc3BhY2Uvc3JjL21hdmVuL2J1aWxkLWJvb3RzdHJhcC54bWw6MzQ1OgpDb21waWxlIGZhaWxlZDsgc2VlIHRoZSBjb21waWxlciBlcnJvciBvdXRwdXQgZm9yCmRldGFpbHMuCkJVSUxEIEZBSUxFRAo8L3ByZT4KVGhlIGxhc3QgZXJyb3IgbGluZSBpcyBub3QgaHlwZXJsaW5rZWQuCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgo8dHIgY2xhc3M9InRhYmxlciI+PHRkIGNvbHNwYW49IjIiPqCgoKA8L3RkPjwvdHI+CgoKPHRyIGNsYXNzPSd0YWJsZWNiZyc+PHRkIGNvbHNwYW49IjIiPjx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPjx0Ym9keT48dHI+PHRkIGFsaWduPSJjZW50ZXIiPjxkaXYKYWxpZ249ImNlbnRlciI+PGI+PGEgbmFtZT0nQXBpU3VwcG9ydCc+PGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iI2h0dHBzOi8vbmV0YmVhbnMub3JnL3NvdXJjZS9icm93c2UvYXBpc3VwcG9ydC8iPmFwaXN1cHBvcnQ8L2E+PC9hPjwvYj48L2Rpdj48L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvdGQ+PC90cj4KPHRyIGNsYXNzPSd0YWJsZXJiZyc+PHRkIGJnY29sb3I9JyNFRUVCQzYnIHdpZHRoPSIyMCIgcm93c3Bhbj0iMSI+oKCgoDwvdGQ+Cjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI1ODY5Ij4yNTg2OTwvYT46IE1uZW1vbmljcyBjb25mbGljdCBSZW1vdmUgJmFtcDsgQWZ0ZXIgU2VsZWN0ZWQgaXRlbTwvYj4KPEJMT0NLUVVPVEU+CjxwcmU+Q29tcG9uZW50cyB3aXRoIHBvdGVudGlhbCBtbmVtb25pY3MgY29uZmxpY3Q6CiAtIGNvbXBvbmVudHMgd2l0aCBtbmVtb25pYyAnUicgOgogICBDbGFzczogamF2YXguc3dpbmcuSkJ1dHRvbiB7ICBSZW1vdmUgfCAgTi9BIH0gCiAgIENsYXNzOiBqYXZheC5zd2luZy5KUmFkaW9CdXR0b24geyAgIEFmdGVyClNlbGVjdGVkIEl0ZW0gfCAgTi9BIH0KPC9wcmU+CjwvQkxPQ0tRVU9URT48L3RkPjwvdHI+Cjx0ciBjbGFzcz0idGFibGVyIj48dGQgY29sc3Bhbj0iMiI+oKCgoDwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVjYmcnPjx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj48dGJvZHk+PHRyPjx0ZCBhbGlnbj0iY2VudGVyIj48ZGl2CmFsaWduPSJjZW50ZXIiPjxiPjxhIG5hbWU9J0F1dG9VcGRhdGUnPjxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9IiNodHRwczovL25ldGJlYW5zLm9yZy9zb3VyY2UvYnJvd3NlL2F1dG91cGRhdGUvIj5hdXRvdXBkYXRlPC9hPjwvYT48L2I+PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L3RkPjwvdHI+Cjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZCBiZ2NvbG9yPScjRUVFQkM2JyB3aWR0aD0iMjAiIHJvd3NwYW49IjIiPqCgoKA8L3RkPgo8dGQ+PGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNTc4MiI+MjU3ODI8L2E+OiAKTlBFIGFmdGVyIHRyeSB0byBpbnN0YWxsIG1vZHVsZSBmcm9tIGxvY2FsIG5ibSBmaWxlPC9iPgo8QkxPQ0tRVU9URT4KPFBSRT4KSSBoYXZlIHZhZCBtb2R1bGUgbmJtIGZpbGUgdGhhdCBkb2Vzbid0IGNvbnRhaW4KSW5mby9pbmZvLnhtbCBmaWxlIGFuZCBkbyA6Ci0gcnVuIElERQotIGludm9rZSBVcGRhdGUgQ2VudGVyCi0gc2VsZWN0ICJJbnN0YWxsIG1hbnVhbGx5IGRvd25sb2FkZWQgbW9kdWxlcyIgYW5kCnB1c2ggTmV4dAotIGFkZCBteSBtb2R1bGUgKHh4Lm5ibSkKLSBwdXNoIE5leHQKLT4gTnVsbFBvaW50ZXJFeGNlcHRpb24gYXJpc2UgKHNlZSBhdHRhY2htZW50KSwgSQprbm93IHRoYXQgaXQncyBpbXBvc3NpYmxlIHVzZSBuYm0gZmlsZSB3aXRob3V0CmluZm8ueG1sIGZpbGUgYnkgYXV0b3VwZGF0ZSwgYnV0IEV4Y2VwdGlvbiBzaG91bGQKYmUgY2F0Y2hlZCBhbmQgYW5ub3RhdGVkLgo8L1BSRT4KPC9CTE9DS1FVT1RFPjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyJz48dGQ+PGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9Mjc2MDAiPjI3NjAwPC9hPjogCk1vZHVsZSBYTUwgZmlsZSBmb3IgYXV0b2xvYWQgbW9kdWxlcyBub3Qgd3JpdHRlbiBjb3JyZWN0bHkuPC9iPgo8QkxPQ0tRVU9URT4KPHByZT4KV2hlbiBhbiBhdXRvbG9hZCBtb2R1bGUgaXMgaW5zdGFsbGVkIHZpYQpBdXRvVXBkYXRlLCB0aGUgbW9kdWxlJ3MgWE1MIGZpbGUgd2lsbCBiZSB3cml0dGVuCmxpa2UgdGhpczoKCi4uLiBwcm9sb2cgLi4uCiZsdDttb2R1bGUgbmFtZT0ib3JnLmJyaWFubHNtaXRoLnNtbi5tZHIiJmd0OwouLi4KICAgICZsdDtwYXJhbSBuYW1lPSJqYXIiJmd0O29hZC9zbW5tZHIuamFyJmx0Oy9wYXJhbSZndDsKJmx0Oy9tb2R1bGUmZ3Q7CgpOb3RpY2UgdGhhdCB0aGUgImphciIgcGFyYW1ldGVyIGhhcyBhbiAib2FkLyIKcHJlZml4LiBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBjb2RlIGlzIGRvaW5nIHRoaXM6CiAgIGlmIChqYXJOYW1lLnN0YXJ0c1dpdGgoImF1dG9sb2FkIikpIHsKICAgICAgIGF1dG9sb2FkID0gdHJ1ZTsKICAgICAgIGphck5hbWUgPSBqYXJOYW1lLnN1YnN0cmluZygiZWFnZXIiKTsgIC8vIDw8LS0KICAgIH0KClRvIG1lLCB0aGlzIHByb2JsZW0gY2F1c2VzIG15IGF1dG9sb2FkIG1vZHVsZSB0bwpiZSBpbXBvc3NpYmxlIHRvIGluc3RhbGwsIEFGQUlDVC4gQW5kLCBpdCBzZWVtcwp0aGF0IHRoaXMgY29kZSBoYXMgYmVlbiBpbiBOZXRCZWFucyBzaW5jZSAzLjQKcmVsZWFzZSwgZnJvbSBsb29raW5nIGF0IHRoZSBDVlMgdGFncy4KCkFub3RoZXIgcHJvYmxlbSBpcyB0aGF0IGlmIHlvdXIgbW9kdWxlIGlzIGFuIGVhZ2VyCm1vZHVsZSwgdGhlbiB0aGUgWE1MIGRvY3VtZW50IHdpbGwgbG9vayBsaWtlOgogICAgLi4uCiAgICAmbHQ7cGFyYW0gbmFtZT0iZWFnZXIiPmZhbHNlJmx0Oy9wYXJhbSZndDsKICAgICZsdDtwYXJhbSBuYW1lPSJqYXIiJmd0Oy9zbW5tZHIuamFyJmx0Oy9wYXJhbSZndDsKICAgICZsdDtwYXJhbSBuYW1lPSJvcmlnaW4iJmd0O3VzZXIvZWFnZXImbHQ7L3BhcmFtJmd0OwogICAgLi4uCndoZXJlIHRoZSAiamFyIiBwYXJhbWV0ZXIgaGFzIGFuIGV4dHJhIHNsYXNoLgoKQW5vdGhlciBwcm9ibGVtIGlzIHRoYXQgaWYgeW91ciBtb2R1bGUncyBqYXJmaWxlCmlzIHByZWZpeGVkIHdpdGggImVhZ2VyIiBvciAiYXV0b2xvYWQiIHdpdGhvdXQgYQpzbGFzaCAoImVhZ2VydG9wbGVhc2UuamFyIiwgImF1dG9sb2FkdGVzdC5qYXIiKSwKdGhleSB3aWxsIGJlIGluY29ycmVjdGx5IGNvbmZpZ3VyZWQ6IGluIHRoZSBmaXJzdApjYXNlLCBpdCB3aWxsIGJlIHRyZWF0ZWQgYXMgYW4gZWFnZXIgbW9kdWxlIGZpbGUKbmFtZWQgInRvcGxlYXNlLmphciIgYW5kIGluIHRoZSBsYXR0ZXIgY2FzZSBpdAp3aWxsIGJlIHRyZWF0ZWQgYXMgYW4gYXV0b2xvYWQgbW9kdWxlIGZpbGUgbmFtZWQKInRlc3QuamFyIi4gVG8gZml4IHRoaXMgeW91IG5lZWQgdG8gaW5jbHVkZSB0aGUKc2xhc2ggaW4gdGhlIHRlc3QgKGUuZy4gamFyRmlsZS5zdGFydHNXaXRoKCJlYWdlci8iKSkKPC9wcmU+CjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSJ0YWJsZXIiPjx0ZCBjb2xzcGFuPSIyIj6goKCgPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZWNiZyc+PHRkIGNvbHNwYW49IjIiPjx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPjx0Ym9keT48dHI+PHRkIGFsaWduPSJjZW50ZXIiPjxkaXYKYWxpZ249ImNlbnRlciI+PGI+PGEgbmFtZT0nQmVhbnMnPjxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9IiNodHRwczovL25ldGJlYW5zLm9yZy9zb3VyY2UvYnJvd3NlL2JlYW5zLyI+YmVhbnM8L2E+PC9hPjwvYj48L2Rpdj48L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvdGQ+PC90cj4KPHRyIGNsYXNzPSd0YWJsZXJiZyc+PHRkIGJnY29sb3I9JyNFRUVCQzYnIHdpZHRoPSIyMCIgcm93c3Bhbj0iMSI+oKCgoDwvdGQ+Cjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIgaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI1OTU3Ij4yNTk1NzwvYT46IGdlbmVyYXRlZCBldmVudCB0eXBlbmFtZXMgdXNlIEZRTnMuPC9iPgo8YnIvPgo8QkxPQ0tRVU9URT4KQ3JlYXRlIGEgTmV3IFVuaWNhc3QgRXZlbnQgU291cmNlLiAKR2VuZXJhdGUgZXZlbnQgZmlyaW5nIG1ldGhvZHMgYW5kIHBhc3MgZXZlbnQgYXMgYSBwYXJhbWV0ZXIuIApUcnkgaXQgZm9yIGphdmEuYXd0LmV2ZW50LkFjdGlvbkxpc3RlbmVyLgpJdCB3aWxsIGdlbmVyYXRlICI8Yj5wcml2YXRlIHZvaWQgZmlyZUFjdGlvbkxpc3RlbmVyQWN0aW9uUGVyZm9ybWVkIChBY3Rpb25FdmVudCBldmVudCkKezwvYj4iCmJ1dCBpdCBpcyBub3QgY29tcGlsYWJsZS4gClBsZWFzZSBnZW5lcmF0ZSBGUU4gKGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50KSBpbnN0ZWFkIG9mIHNpbXBsZSBuYW1lLiAKPC9CTE9DS1FVT1RFPjwvdGQ+PC90cj4KPHRyIGNsYXNzPSJ0YWJsZXIiPjx0ZCBjb2xzcGFuPSIyIj6goKCgPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZWNiZyc+PHRkIGNvbHNwYW49IjIiPjx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPjx0Ym9keT48dHI+PHRkIGFsaWduPSJjZW50ZXIiPjxkaXYKYWxpZ249ImNlbnRlciI+PGI+PGEgbmFtZT0nQ2xhenonPjxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9IiNodHRwczovL25ldGJlYW5zLm9yZy9zb3VyY2UvYnJvd3NlL2NsYXp6LyI+Y2xheno8L2E+PC9hPjwvYj48L2Rpdj48L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvdGQ+PC90cj4KPHRyIGNsYXNzPSd0YWJsZXJiZyc+PHRkIGJnY29sb3I9JyNFRUVCQzYnIHdpZHRoPSIyMCIgcm93c3Bhbj0iMSI+oKCgoDwvdGQ+PHRkPgo8Yj4KIzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNjgwNiI+MjY4MDY8L2E+OgpQcm9ibGVtIG9mIE5QRSBHcmFjZWZ1bGx5IGhhbmRsZWQ8L2I+CjxCTE9DS1FVT1RFPgojPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2NzI2Ij4yNjcyNjwvYT4sIAojPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI3NTU3Ij4yNzU1NzwvYT4sIAojPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI3NzU5Ij4yNzc1OTwvYT4gCmFyZSBhbGwgbWFya2VkIGFzIGR1cGxpY2F0ZSBhbmQgdGhlbiB3b3VsZCBiZSBhbHNvIHJlc29sdmVkIGJ5IHRoZSBmaXggb2YgdGhpcwppc3N1ZS4KPC9CTE9DS1FVT1RFPgoKPEJMT0NLUVVPVEU+CgpUaGUgb3BlbmlkZS5qYXIgY29udGFpbnMgZmlsZQoib3JnL29wZW5pZGUvYXd0LyRUb29sYmFyJFBhdGNoJC5jbGFzcyIuIFRoZSBJREUKKGJldHRlciBzYWlkOiBqYXZhIG1vZHVsZSkgZG9lcyBub3QgYmVoYXZlCmNvcnJlY3RseSB3aGVuIGFjY2Vzc2luZyB0aGlzIGNsYXNzLgo8b2w+CjxsaT4KV2hlbiB5b3UgbW91bnQgb3BlbmlkZS5qYXIsIGF1dG9tYXRpYwpjb21wbGF0aW9uIGRhdGFiYXNlIHVwZGF0ZSBpcyBwZXJmb3JtZWQuIFRoZSBmaXJzdAphdHRhY2hlZCBleGNlcHRpb24KKCJkb2xsYXJfaW5fY2xhc3NuYW1lX2V4Y18xX3VwZGF0ZS50eHQiKSBpcyB0aHJvd24Kb24gY29uc29sZS4KPC9saT4KPGxpPldoZW4gZXhwYW5kaW5nIHBhY2thZ2Ugd2l0aCB0aGlzIGZpbGUKKG9yZy5vcGVuaWRlLmF3dCksIHRoZSBzZWNvbmQgYXR0YWNoZWQgZXhjZXB0aW9uCmlzIHRocm93biAoImRvbGxhcl9pbl9jbGFzc25hbWVfZXhjXzIudHh0Iiwgc2hvdwppbiBleGNlcHRpb24gZGlhbG9nKS4KPC9saT4KPGxpPldoZW4gYW4gYXR0ZW1wdCB0byAib3BlbiIgdGhlIGNsYXNzLCB0aGUgdGhpcmQKZXhjZXB0aW9uIGlzIHRocm93bgooImRvbGxhcl9pbl9jbGFzc25hbWVfZXhjXzMudHh0IikgbWFueSB0aW1lcy4gVGhlCk1ESSBmcmFtZSBpcyBub3QgY29tcGxldGVseSByZS1kcmF3biwgd2hlbgpjbGlja2luZyBpbnRvIHRoZSBJREUsIHRoZSBleGNlcHRpb24gaXMgdGhyb3duCmFnYWluLiBUaGUgb25seSB0aGluZyB0aGF0IHN0b3BzIHRoZSBleGNlcHRpb24KZnJvbSB0aHJvd2luZyBpcyB0byBjbG9zZSB0aGUgZXhwbG9yZXIuIEluIHN1bSwKcHJvYmFibHkgdGhlIG9ubHkgd2F5IHRvIGNvbXBsZXRlbHkgcmVzdW1lIElERQp3b3JrIGlzIHRvIGtpbGwgdGhlIElERSBhbmQgcmVzdGFydCBpdC4KPC9saT4KPC9PTD4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cjx0ciBjbGFzcz0idGFibGVyIj48dGQgY29sc3Bhbj0iMiI+oKCgoDwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVjYmcnPjx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj48dGJvZHk+PHRyPjx0ZCBhbGlnbj0iY2VudGVyIj48ZGl2CmFsaWduPSJjZW50ZXIiPjxiPjxhIG5hbWU9J0NvcmUnPjxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9IiNodHRwczovL25ldGJlYW5zLm9yZy9zb3VyY2UvYnJvd3NlL2NvcmUvIj5jb3JlPC9hPjwvYT48L2I+PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L3RkPjwvdHI+Cjx0ciBjbGFzcz0ndGFibGVyYmcnPgo8dGQgYmdjb2xvcj0nI0VFRUJDNicgd2lkdGg9IjIwIiByb3dzcGFuPSIxNiI+PC90ZD4KCjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE4NDA1Ij4xODQwNTwvYT46IApNb3VzZVdoZWVsIGRvZXMgbm90IHdvcmsgaW4gT3V0cHV0IFdpbmRvdzwvYj4KPEJMT0NLUVVPVEU+CkknbSB1c2luZyBOQjMuM0JldGE2IG9uIEpESzEuMy4xLiBJIAppbnN0YWxsZWQgTW91c2UgV2hlZWwgU3VwcG9ydCBtb2R1bGUgaW50byBOZXRCZWFucyBhbmQgbm93IG1vdXNld2hlZWwgCndvcmtzIGluIGFsbCB3aW5kb3dzIGluIE5CIGFwYXJ0IGZyb20gT3V0cHV0V2luZG93LiBTbywgSSB0aGluayBpdCBpcyAKc29tZSBwcm9ibGVtIGluIE9XLgo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyJz48dGQ+PGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNTUxNyI+MjU1MTc8L2E+OiAKV2VsY29tZSBtb2R1bGUgc2hvdWxkIGhpZGUgIldlbGNvbWUiIG5vZGUgaW4gT3B0aW9ucyB3aW5kb3c8L2I+CjxCTE9DS1FVT1RFPgpubyBtb3JlIHdlbGNvbWUgbm9kZSBpbiBvcHRpb25zIHdpbmRvdyAKPGJyPgouLi5iZWNhdXNlIGl0IGlzIHVzZWxlc3Mgd2l0aCB0aGlzIG1vZHVsZSBlbmFibGVkLiAKTmV3IHdlbGNvbWUgZG9lc24ndCB1c2UgdGhpcyBvcHRpb24uIEl0IGlzIG5vZGUgb2Ygb2xkIHdlbGNvbWUgcGFuZWwuCkl0IHdhcyBkaXNjdXNzZWQgdGhhdCBvbGQgb25lIHdpbGwgYmUgYWxpdmUgYW5kIHdpbGwgYmUgZGlzcGxheWVkIAppbiBjYXNlIHNvbWUgb2YgbW9kdWxlIHB1dHMgaXRzIGVudHJ5IHRoZXJlLiBIb3dldmVyLCB3aGVuIHRoaXMgbm9kZSAKaXMgZW1wdHkgYW5kIHRoZXJlIGlzIG5vIG9wdGlvbiB0byBwdXQgdGhlcmUgZW50cmllcyBpdCBpcyBpcyByZWFsbHkgCnVzZWxlc3MuIEluIGVhY2ggY2FzZSBJIHRoaW5rIGl0IGlzIHdvcmsgZm9yIGNvcmUgYmVjYXVzZSBvZiBvbGQgCndlbGNvbWUgcGFuZWwuCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXJiZyc+PHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjU1ODkiPjI1NTg5PC9hPjogClNwbGl0Q29udGFpbmVyIGRvZXMgbm90IHVzZSBVSU1hbmFnZXIgdG8gc2V0IGJvcmRlciBjb2xvcnM8L2I+CjxCTE9DS1FVT1RFPgpJJ20gZG9pbmcgc29tZSB3b3JrIG9uIHRoZW1lcyBzdXBwb3J0LiAgV2hlbiB1c2luZwphIGRhcmsgdGhlbWUsIEkgbm90aWNlZCB0aGF0IEkgY291bGQgbm90IGdldCByaWQKb2YgdGhlIGJyaWdodCBzcGxpdCBib3JkZXJzIGFyb3VuZCBjb21wb25lbnRzLgo8cC8+ClRoZSByZWFzb24gaXMgdGhhdCBpbiBjb2RlLCB0aGUgY29sb3JzIGZvciB0aGlzIGJvcmRlciBhcmUgaGFyZC1jb2RlZC4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcic+PHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjU2MjIiPjI1NjIyPC9hPjogCk51bGxQb2ludGVyRXhjZXB0aW9uIGZyb20gIkZyYW1lIFJlc2lkZXMiIGFjdGlvbiA8L2I+CjxCTE9DS1FVT1RFPgpub3QgcmVwcm9kdWNpYmxlPGJyLz4KSXQgaXMgdHJpZ2dlcmVkIHdoZW4gSSBoYXZlIGEgY3VzdG9tIENsb25lYWJsZVRvcENvbXBvbmVudCBzaXR0aW5nIGluIGl0cyBvd24sIApuZXdseSBjcmVhdGVkIE1vZGUsIG5vdCByZXNpZGluZyBpbiB0aGUgSURFLCBydW5uaW5nIE1ESS4gCklmIEkgZ28gdG8gV2luZG93cyBtZW51LCBidXQgZG9uJ3QgY2xpY2sgYW55d2hlcmUsIGFuZCB0aGVuIGNsaWNrIG9uIHRoZSBDVEMsIAphbmQgYmFjayBhIGZldyB0aW1lcywgaXQgd2lsbCBiZSB0cmlnZ2VyZWQuCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXJiZyc+PHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjU2NzkiPjI1Njc5PC9hPjogCk1heGltaXplIGJ1dHRvbnMgaW4gdXBwZXItcmlnaHQgY29ybmVyIHN0YXkgYWZ0ZXIgU291cmNlIEVkaXRvciByZXNpZGVzIGFzIGEKU2VwYXJhdGUgd2luZG93LjwvYj4KPEJMT0NLUVVPVEU+ClN0ZXBzIHRvIHJlcHJvZHVjZToKPHVsPgo8bGk+cnVuIElERTwvbGk+CjxsaT5zZWxlY3QgV2VsY29tZSBTY3JlZW4gaW4gRWRpdG9yPC9saT4KPGxpPnB1c2ggZnJvbSBtYWluIG1lbnUgV2luZG93IHwgRnJhbWUgUmVzaWRlcyB8IEFzClNlcGFyYXRlIFdpbmRvdzwvbGk+PC91bD4KLT4gYnV0dG9ucyBtYXhpbWl6ZSwgbWluaW1hbGl6ZSBhbmQgcmVzdG9yZSBhcmUKcHJlc2VudCBpbiB1cHBlci1yaWdodCBjb3JuZXIKPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcic+PHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjU4NjEiPjI1ODYxPC9hPjogCk1lbnVJdGVtLmFjY2VsZXJhdG9yRm9udCB1bmFmZmVjdGVkIGJ5IC1mb250c2l6ZSBzd2l0Y2g8L2I+CjxCTE9DS1FVT1RFPgogZGVmYXVsdAphY2NlbGVyYXRvckZvbnQgaXMgRGlhbG9nIFBsYWluIDEwIHdoZXJlYXMgZGVmYXVsdApmb250IGlzIERpYWxvZyBCb2xkIDEyLiBJZiB5b3UgY29uc2lkZXIgdGhlIGJhc2UKZm9udCBzaXplIGluIFN3aW5nIHRvIGJlIDEyIGJ5IGRlZmF1bHQsIGFuZCB3ZSBzZXQKLWZvbnRzaXplIHRvIGUuZy4gMTEsIHdoYXQgc2hvdWxkIGFjY2VsZXJhdG9yRm9udApiZSBzZXQgdG8/IEQuUC4xMCBzZWVtcyByaWdodCB3aXRoIC1mb250c2l6ZSAxMS4KSXQgc2VlbXMgd3Jvbmcgd2l0aCAtZm9udHNpemUgMTguIFNob3VsZCBpdCBiZQpzb21lIHByb3BvcnRpb24/IFJvdW5kZWQgaG93PyBFdGMuCgpUaGVtZXMgKGlzc3VlICMyNTQ3Mikgd291bGQgcHJvdmlkZSBhIG1vcmUKY29oZXJlbnQgc29sdXRpb24gdGhhbiAtZm9udHNpemUgSSB0aGluaywgc2luY2UKeW91IGNvdWxkIHNlbGVjdCBwYXJ0aWN1bGFyIGZvbnQgc2l6ZXMgZm9yIGVhY2ggdXNhZ2UuCgo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciAgY2xhc3M9J3RhYmxlcmJnJz4KPHRkPgo8Yj4KIzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNjA3MiI+MjYwNzI8L2E+Ogpvcmcub3BlbmlkZS5maWxlc3lzdGVtcy5GU0V4Y2VwdGlvbiBvbiBzdGFydHVwIGFmdGVyIGRlbGV0aW5nIGphcjwvYj48YnIgLz4KPEJMT0NLUVVPVEU+CiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjQ1NjgiPjI0NTY4PC9hPiwgCiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjYwODgiPjI2MDg4PC9hPiwgCiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjYzOTEiPjI2MzkxPC9hPiwgCiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjY1MzUiPjI2NTM1PC9hPiwgCiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjY2MjMiPjI2NjIzPC9hPiwgCiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9Mjc0NDIiPjI3NDQyPC9hPiwgCiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9Mjc0NDUiPjI3NDQ1PC9hPiwgCiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9Mjc0NjQiPjI3NDY0PC9hPiwgCiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjgwMTQiPjI4MDE0PC9hPiwgCiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjkyNzkiPjI5Mjc5PC9hPiwgCiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjkzNDMiPjI5MzQzPC9hPgphcmUgYWxsIG1hcmtlZCBhcyBkdXBsaWNhdGUgYW5kIHRoZW4gd291bGQgYmUgYWxzbyByZXNvbHZlZCBieSB0aGUgZml4Cm9mIHRoaXMgaXNzdWUuIAo8L0JMT0NLUVVPVEU+CjxCTE9DS1FVT1RFPgpJIGFtIHNlZWluZyBhIEZTRXhjZXB0aW9uIHJlZ2FyZGluZyBhIGphciB0aGF0IAp3YXMgZGVsZXRlZCBvdXRzaWRlIG9mIHRoZSBpZGUgb24gc3RhcnR1cC4gVGhlIApmdWxsIGxvZyBhbmQgZXhjZXB0aW9uIGluZm8gYXJlIGF0dGFjaGVkLiBUaGUgCmlzc3VlIGNhbiBiZSByZXNvbHZlZCBieSBnb2luZyBpbnRvIHRoZSAKZXhwbG9yZXIgY3VzdG9taXplIGRpYWxvZyBhbmQgcmVtb3ZpbmcgdGhlIApvYnNvbGV0ZSBsaW5rLiBTaG91bGQgdGhpcyBqdXN0IGJlIGRvbmUgCmF1dG9tYXRpY2FsbHksIHBvc3NpYmx5IGFmdGVyIGEgd2FybmluZyBkaWFsb2c/CjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXInPjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIgCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNjE5MSI+MjYxOTE8L2E+OiAKWklQRXhjZXB0aW9uJ3MgZHVyaW5nIG1vZHVsZSBzeXN0ZW0gc3RhcnR1cCBjYW4gY2F1c2UgbWFpbiB0aHJlYWQgdG8gaGFsdAo8L0I+CjxCTE9DS1FVT1RFPgpUaGUgZXhjZXB0aW9uIGlzIGNhdWdodCBhbmQgcmV0aHJvd24sIGJ1dCB0aGUKcmV0aHJvd24gZXhjZXB0aW9uIGlzIG1pc3NpbmcgdGhlIG1vZHVsZSBuYW1lLiBBCmNhdGNoIGNsYXVzZSBhIGJpdCBmdXJ0aGVyIGRvd24gaXMgZXhwZWN0aW5nIHRvCmtub3cgd2hhdCB0aGUgbW9kdWxlIHdhcyBhbmQgd2hlbiBpdCBkb2Vzbid0IGZpbmQKaXQsIGl0IGNob2tlcy4gRWFzeSBmaXguIEltcHJvdmVzIHJvYnVzdG5lc3MgaWYKc29tZSBtb2R1bGUgSkFScyBhcmUgY29ycnVwdGVkIGV0Yy4KPHAvPgpyb2J1c3RuZXNzIGFnYWluc3QgWklQRXhjZXB0aW9uIGR1cmluZyBNb2R1bGVNYW5hZ2VyLmVuYWJsZS4KPC9CTE9DS1FVT1RFPjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2MjM2Ij4yNjIzNjwvYT46IApjb3JlL3NldHRpbmdzIG1vZHVsZSB0ZXh0IHN0cmluZ3Mgbm90IGxvY2FsaXplZCAgICAgICAgICA8L2I+CjxCTE9DS1FVT1RFPgpUaGlzIGJ1ZyBtYWtlcyBpbXBvc3NpYmxlIHRvIGxvY2FsaXplIHNvbWUgb2YgdGhlIHRleHQgY29taW5nIGZyb20gY29yZS9zZXR0aW5ncwptb2R1bGUKPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcic+PHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjY1MDAiPjI2NTAwPC9hPjogCnVuaGVscGZ1bCAiW1dpblN5c10gbnVsbCIgbWVzc2FnZXMgICAgICAgICAgPC9iPgo8QkxPQ0tRVU9URT4KV2l0aCAzLjQgUkMxLCBJJ20gc2VlaW5nIGZyZXF1ZW50IAoiW1dpblN5c10gbnVsbCIgbWVzc2FnZXMgcHJpbnRlZCB0byB0aGUgY29uc29sZQphbmQgSSBkb24ndCBrbm93IHdoeS4Kb3JnLm5ldGJlYW5zLmNvcmUud2luZG93cy5QZXJzaXN0ZW5jZU1hbmFnZXIgJiAKV29ya3NwYWNlSW1wbCBib3RoIGltcGxlbWVudCBzb21ldGhpbmcgbGlrZToKCkVycm9yTWFuYWdlci5nZXREZWZhdWx0KCkubG9nKEVycm9yTWFuYWdlci5XQVJOSU4KRywgIltXaW5TeXNdICIgKyBpb2UuZ2V0TWVzc2FnZSgpKTsgCgpzbyBhcHBhcmVudGx5IHRoZSBleGNlcHRpb24ncyBtZXNzYWdlIGlzIG51bGwuClRoZXJlJ3Mgbm8gbW9yZSBpbmZvIGluIGlkZS5sb2cgdGhhbiB0aGlzLCBidXQgSSAKY2FuIGF0dGFjaCBpdCBpZiB5b3Ugd2FudC4KLS0tCk5vdyBpbiBjYXNlIHRoZXJlIGlzIGEgbnVsbCBtZXNzYWdlLCBpdCBpcyBub3QgZHVtcGVkLgooV2lsbCBmaW5kIG91dCBsYXRlciB3aHkgdGhlcmUgYXJlIHByb3ZpZGVkIHN1Y2ggZXhjZXB0aW9ucykuCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXJiZyc+Cjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIgCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNjUxNyI+MjY1MTc8L2E+OgpNaXNzaW5nIGh5cGVybGlua3MgaW4gb3V0cHV0IHdpbmRvdwo8QkxPQ0tRVU9URT4KdGhlIGJ1ZyBhcHBlYXJzIGlmIChhbmQgb25seSBpZikKbWV0aG9kIG5hbWUgY29udGFpbnMgY2xhc3MgbmFtZS4KPC9CTE9DS1FVT1RFPgo8L2I+PC90ZD4KPC90cj4KCjx0ciBjbGFzcz0ndGFibGVyJz48dGQ+PGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9Mjc3NzYiPjI3Nzc2PC9hPjogCmF1dG9jb252ZXJ0IGphdmF4LmhlbHAgcGFja2FnZSBkZXBzIHRvIGNvcmUvamF2YWhlbHAgbW9kdWxlIGRlcHMuCjwvYj4KPEJMT0NLUVVPVEU+CkEgYml0IGxhdGUsIGJ1dCBJIHRoaW5rIFJvY2hlbGxlIHdhcyByaWdodCBoZXJlIC0Kb2xkZXIgbW9kdWxlcyB0aGF0IGRlY2xhcmVkIGEgcGFja2FnZSBkZXBlbmRlbmN5Cm9uIGphdmF4LmhlbHAgKGUuZy4gYXBpc3VwcG9ydCwgYXBwYXJlbnRseSBUUD8pCnNob3VsZCBoYXZlIGJlZW4gYXV0b21hdGljYWxseSBnaXZlbiBhIGRlcCBvbgpvcmcubmV0YmVhbnMubW9kdWxlcy5qYXZhaGVscC8xIGluIDMuNCwgdG8gbGV0CnRoZW0gY29udGludWUgdG8gdXNlIHRoZSBwYWNrYWdlLgpvcmcubmV0YmVhbnMuY29yZS5tb2R1bGVzLk5iSW5zdGFsbGVyIHBlcm1pdHMgdGhpcwpraW5kIG9mIHRoaW5nLiBCZXR0ZXIgbGF0ZSB0aGFuIG5ldmVyLCByaWdodD8KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQ+PGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjgxMjYiPjI4MTI2PC9hPjogCkluc3RhbGwtQmVmb3JlIG5vdCAgd29ya2luZyBhZnRlciBuZXcgbW9kdWxlIGludHJvZHVjZWQuCjwvQj4KPEJMT0NLUVVPVEU+CmlmIGEgbmV3IHZlcnNpb24gb2YgYSBtb2R1bGUgaXMgcmVsZWFzZWQgdGhhdCBuZXdseSBkZWNsYXJlcyB0aGF0IGl0cyBvYmplY3QgCnR5cGUgc2hvdWxkIGJlIGFib3ZlL2JlbG93IHNvbWUgb3RoZXIgaW4gdGhlIGxpc3QsIHRoZSBwb29sIHNob3VsZCBiZSAKcmVzb3J0ZWQgYWNjb3JkaW5nbHkuIFByb2JhYmx5IG5vdCBhIHZlcnkgaW1wb3J0YW50IGJ1ZzsgYXQgbGVhc3QgaXQgdG9vayAKdGhpcyBsb25nIGZvciBpdCB0byBiZSByZXBvcnRlZCwgdGhvdWdoIGl0IHdhcyBwcm9iYWJseSBhbHdheXMgYnJva2VuLgo8cC8+CnJlc29ydCBhZnRlciBhZGRlZC9yZW1vdmVkIG9yZGVyaW5nIGF0dHJzLgo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyJz48dGQ+PGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yODMwNyI+MjgzMDc8L2E+OiAKTlBFIGZyb20gRGVmYXVsdERlc2t0b3BNYW5hZ2VyLm1heGltaXplRnJhbWU8L2I+CjxCTE9DS1FVT1RFPgo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI4MzU4Ij4yODM1ODwvYT46IApFbmRsZXNzIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb25zIGFmdGVyIHVubW91bnRpbmcgYSBmaWxlc3lzdGVtIHRoYXQgaGFkIGZpbGVzIG9wZW4gaW4gdGhlIGVkaXRvciAgICAgICAgICA8L2I+CjxCTE9DS1FVT1RFPgo8b2w+CjxsaT4gT3BlbiBzZXZlcmFsIGZpbGVzIGZyb20gYSBmaWxlc3lzdGVtIGluIHRoZSBlZGl0b3IKPGxpPiBNb3VudCBhbm90aGVyIGZpbGVzeXN0ZW0KPGxpPiBPcGVuIHNldmVyYWwgZmlsZXMgZnJvbSBmaWxlc3lzdGVtICMyIGluIHRoZSBlZGl0b3IKPGxpPiBVbm1vdW50IHRoZSBmaWxlc3lzdGVtCjwvb2w+CkVYUEVDVDoKPGJyPgpUaGUgb3BlbiB3aW5kb3dzIGZyb20gZmlsZXN5c3RlbSAjMiBjbG9zZSB3L28gZXJyb3IKPHAvPgpBQ1RVQUw6Cjxicj4KSSBzYXcgYW4gZW5kbGVzcyBsb29wIG9mIEluZGV4T3V0T2ZCb3VuZHMgZXhjZXB0aW9ucyB0aGF0IGZvcmNlZCBtZSB0byBraWxsIE5CCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXInPjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIgCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yODQ5NSI+Mjg0OTU8L2E+OgpUcm91YmxlIGxvYWRpbmcgY2xhc3NlcyBmcm9tIGEgc2VhbGVkIEpBUgo8L2I+CjxCTE9DS1FVT1RFPgpTZWFsZWQgSkFScyBhcHBhcmVudGx5IGNhdXNlZCBwcm9ibGVtcyBmb3IgbW9kdWxlcyBpbiBwcmUtNC4wIHZlcnNpb25zOyAKYSB0aGlyZC1wYXJ0eSBtb2R1bGUgZGV2ZWxvcGVyIHJlcG9ydGVkIGV4Y2VwdGlvbnMgdGhyb3duLgpMb29raW5nIGF0IHRoZSBjb2RlLCBpdCBpcyBjbGVhcmx5IHdyb25nIChhIHR5cG8pLiAKRG9lcyBub3QgYWZmZWN0IGFueSBuZXRiZWFucy5vcmcgbW9kdWxlcyB0aGF0IEkga25vdyBvZiwgCmJ1dCBjb3VsZCBiZSBhIGJsb2NrZXIgZm9yIG90aGVyIG1vZHVsZSBhdXRob3JzLiA8cC8+CkFJSU9CRSBmb3Igc2VhbGVkIG1vZHVsZSBKQVJzLjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSJ0YWJsZXIiPjx0ZCBjb2xzcGFuPSIyIj6goCZuYnNwO6CgPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZWNiZyc+PHRkIGNvbHNwYW49IjIiPgo8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KPHRib2R5PgogICAgPHRyPgogICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxiPgogICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9J0RpZmYnPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiBocmVmPSIjaHR0cHM6Ly9uZXRiZWFucy5vcmcvc291cmNlL2Jyb3dzZS9kaWZmLyI+ZGlmZjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2I+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgo8L3Rib2R5Pgo8L3RhYmxlPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQgYmdjb2xvcj0nI0VFRUJDNicgd2lkdGg9IjIwIiByb3dzcGFuPSI1Ij6goKCgPC90ZD4KPHRkPjxiPgojPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI0NTIzIj4yNDUyMzwvYT46IApBcHBseSBwYXRjaCBkb2Vzbid0IHN1cHBvcnQgdGhlIHVuaWZpZWQgZGlmZiBmb3JtYXQKPC9iPgo8QkxPQ0tRVU9URT4KYXBwbHkgcGF0Y2ggYWN0aW9uIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgdW5pZmllZCBkaWZmIGZvcm1hdCB3aGljaCBpcyBwcm9kdWNlZCAKYnkgdGhlIGN2cyBkaWZmIC11ICZsdDtuYW1lJmd0OyBmb3IgZXhhbXBsZS4KPHAvPgpXZWxsLCBpdCdzIGEgbWlzc2luZyBmdW5jdGlvbmFsaXR5IHJhdGhlciB0aGFuIGEgYnVnIGluIGV4aXN0ZW50IGZ1bmN0aW9uYWxpdHkuIApCdXQgSSBhZ3JlZSwgdGhhdCBmcm9tIHRoZSB1c2VycyBwb2ludCBvZiB2aWV3IAp0aGlzIG1heSBiZSBjb25zaWRlcmVkIG1vcmUgbGlrZSBhIGJ1Zy4gCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXInPjx0ZD48Yj4KIzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjYxNDYiPjI2MTQ2PC9hPjogClRoZSBncmFwaGljYWwgZGlmZiBkb2VzIG5vdCBoYW5kbGUgbm90IHJlcG9ydGVkIGxpbmUgZGlmZmVyZW5jZXMgCjwvYj4KPEJMT0NLUVVPVEU+CldoZW4gdGhlIGRpZmYgYWxnb3JpdGhtIGRvZXMgbm90IHJlcG9ydCBlbXB0eSBsaW5lcyBhcyBkaWZmZXJlbmNlcywgdGhlIGdyYXBoaWNhbCBkaWZmIGlzIGNvcnJ1cHRlZC4KVGhlIGdyYXBoaWNhbCBkaWZmIHNob3VsZCB1c2UgYSBoZXVyaXN0aWMgdG8gZGV0ZWN0LCB0aGF0IGEgbWlzc2luZyBvciBhZGRlZCBlbXB0eSBsaW5lIHdhcyBub3QgcmVwb3J0ZWQgYXMgYSBkaWZmZXJlbmNlLgo8YnIvPgpLZWVwIGJhbGFuY2Ugb2YgY29ycmVzcG9uZGluZyBsaW5lcyBldmVuIHdoZW4gdGhlcmUgd2VyZSB1bnJlcG9ydGVkCm1pc3Npbmcgb3IgYWRkZWQgbGluZXMuCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXJiZyc+PHRkPjxiPgojPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2NDI3Ij4yNjQyNzwvYT46IApBcHBseSBQYXRjaCBhY3R0aW9uIGRvZXMnbiByZWZyZXNoIG9wZW5lZCBkb2N1bWVudHMKPC9CPjxCTE9DS1FVT1RFPgo8b2w+CjxsaT5vcGVuIFhNTCwgSmF2YSwgLi4uIGRvY3VtZW50IGluIHRoZSBTb3VyY2UgRWRpdG9yPC9saT4KPGxpPmFwcGx5IHNvbWUgcGF0Y2ggb24gdGhlIGRvY3VtZW50PC9saT4KPC9vbD4KVGhlIGRvY3VtZW50J3MgZmlsZSBpcyBjaGFuZ2VkIG9uIHRoZSBkaXNjIGJ1dCBvbGQKdmVyc2lvbiByZW1haW5zIGluIHRoZSBTb3VyY2UgRWRpdG9yLiBXaGVuIHlvdQplZGl0IHRoZSBkb2N1bWVudCBhbmQgc2F2ZSBpdCwgcGF0Y2gncyBjaGFuZ2VzIGFyZQpsb3N0LiAKPGJyLz4KUHJvcGVybHkgY2xvc2UgdGhlIHN0cmVhbXMgYWZ0ZXIgRmlsZVV0aWwuY29weSgpIQpBbHNvIHJlZnJlc2ggdGhlIEZpbGVPYmplY3QgYWZ0ZXIgc3VjY2Vzc2Z1bGwgYXBwbGljYXRpb24gb2YgdGhlIHBhdGNoLgo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyJz4KPHRkPgo8Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2NzU3Ij4yNjc1NzwvYT46IApBcHBseSBwYXRjaCBkb2Vzbid0IHdvcmsgYXMgZXhwZWN0ZWQKPC9iPgo8QkxPQ0tRVU9URT4KSXQgc2VlbXMsIHRoYXQgdGhlIG9ubHkgcHJvYmxlbSBpcyB0aGUgIiovIiwgdGhhdCBpcyBmb3Igc29tZSByZWFzb24KYWRkZWQgYXQgdGhlIGVuZCBvZiB0aGUgbWVyZ2VkIHBhdGNoLiBJJ2xsIGV4cGxvcmUgdGhhdC4KPGJyPgpUaGUgYnVnIGlzIGluIHRoZSBwYXJzaW5nIGFsZ29yaXRobSBvZiB0aGUgY29udGV4dCBkaWZmLiBUaGUgc2FtZQpwYXRjaCBpbiBzdGFuZGFyZCBVTklYIGRpZmYgZm9ybWF0IHdhcyBhcHBsaWVkIGNvcnJlY3RseS4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQ+PGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yOTM5MCI+MjkzOTA8L2E+OiAKTlBFIHdoaWxlIGFwcGx5aW5nIFVuaWZpZWQgZGlmZgo8L2I+CjxCTE9DS1FVT1RFPgpUaGUgTlBFIHdhcyBjYXVzZWQgYnkgdGhlIGVtcHR5IGxpbmUgYXQgdGhlIGVuZCBvZiB0aGUgcGF0Y2ggZmlsZS4KPGJyPgpUaGlzIE5QRSB3YXMgY2F1c2VkIGJ5IHRoZSBlZGl0aW5nIG9mCnRoZSBkaWZmIGluIGFuIGVkaXRvciAodGhpcyBpcyBhcHBhcmVudCBmcm9tIHRoZSBeTSBhdCB0aGUgZW5kIG9mIHRoZQpkaWZmKS4gVGhpcyBpbnRyb2R1Y2VkIHRoZSBsYXN0IGVtcHR5IGxpbmUsIHdoaWNoIGRvZXMgbm90IG9jY3VyIGlmCnlvdSByZWRpcmVjdCBjdnMgZGlmZiBpbnRvIGEgZmlsZSAodGhpcyBpcyB3aHkgSSBkaWRuJ3QgZGlzY292ZXIgdGhlCmJ1ZyBlYXJsaWVyKS4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9InRhYmxlciI+PHRkIGNvbHNwYW49IjIiPqCgoKA8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlY2JnJz48dGQgY29sc3Bhbj0iMiI+PHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+PHRib2R5Pjx0cj48dGQgYWxpZ249ImNlbnRlciI+PGRpdgphbGlnbj0iY2VudGVyIj48Yj48YSBuYW1lPSdlZGl0b3InPjxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9IiNodHRwczovL25ldGJlYW5zLm9yZy9zb3VyY2UvYnJvd3NlL2VkaXRvci8iPmVkaXRvcjwvYT48L2E+PC9iPjwvZGl2PjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC90ZD48L3RyPgo8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQgYmdjb2xvcj0nI0VFRUJDNicgd2lkdGg9IjIwIiByb3dzcGFuPSI5Ij6goKCgPC90ZD4KPHRkPgo8Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIgCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMTQwNSI+MjE0MDU8L2E+OiAKQ3V0IG9uIHJlYWQtb25seSBzb3VyY2UgaXMgc29tZXRpbWVzIG5vdCByZXZlcnRlZCAod2FzOiBVbmFwcHJvcHJpYXRlIGFjdGlvbnMgaW4gcG9wdXAgbWVudSk8L2I+CjxCTE9DS1FVT1RFPgpTdGVwcyB0byByZXByb2R1Y2U6Cjx1bD4KPGxpPm1ha2UgZGlmZiBvZiB0d28gZmlsZXM8L2xpPgo8bGk+c2VsZWN0IHBhcnQgb2YgdGV4dDwvbGk+CjxsaT5pbnZva2UgcG9wdXAgbWVudTwvbGk+CjwvdWw+Ci0+IGFjdGlvbnMgOiBQYXN0ZSwgQ3V0IGFuZCBEZWxldGUgc2hvdWxkIGJlIGRpc2FibGVkIG9yIHNob3VsZCBiZSBwb3NzaWJsZQp3cml0ZSB0byB0aGlzIHZpZXcgPyEKPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcic+PHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjM1NzEiPjIzNTcxPC9hPjogCk1ha2UgYWJicmV2aWF0aW9ucyB1c2VmdWw6IHN1cHBvcnQgYW5kIGluY2x1ZGUgbXVsdGlsaW5lIGFiYnJldnM8L2I+CjxCTE9DS1FVT1RFPgpBIG11Y2ggbW9yZSB1c2VmdWwgb25lIHdvdWxkIGJlOgo8cHJlPgp0cnljIC0+CgogICAgdHJ5IHsKICAgICAgIHwKICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CiAgICB9CjwvUFJFPgpvciBldmVuIAo8UFJFPgphZGRhY3QgLT4KCiAgICAgYWRkQWN0aW9uTGlzdGVuZXIobmV3IEFjdGlvbkxpc3RlbmVyKCkgewogICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKICAgICAgICAgIHwKICAgICAgIH0KICAgICB9KTsKPC9QUkU+CjwvQkxPQ0tRVU9URT4KCjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZD4KPGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjUzMjMiPjI1MzIzPC9hPjogCkRpc3BlYXJpbmcgY29kZSBjb21wbGV0aW9uPC9iPgo8QkxPQ0tRVU9URT4KU29tZXRpbWVzLCB3aGlsZSB3cml0dGluZyB0aGUgY29kZSwgdGhlIGNvZGUKY29tcGxldGlvbiB2aWV3IGp1c3QgZGlzYXBwZWFycy4gSXQgaXMgc3Ryb25nbHkKZGVwZW5kZW50IG9uIHRoZSB0aW1pbmcsIGJ1dCBpdCBpcyBwb3NzaWJsZSB0bwpzaW1wbHkgcmVwcm9kdWNlIGl0IGlmIHlvdSBrbm93IGhvdy48YnIvPgpUcnkgdGhlc2Ugc3RlcHM6CjxvbD4KPGxpPkNsZWFuIElERSAobmV3IHVzZXJkaXIpLjwvbGk+CjxsaT5PcGVuIGEgamF2YSBlZGl0b3IgKGZvciBleGFtcGxlIENsb2NrRnJhbWUgaW4KZWRpdGluZyBtb2RlKS48L2xpPgo8bGk+SW50byBhIG1ldGhvZCwgdHJ5IHRvIHdyaXRlICJTdHJpbmcuZXJyIi48L2xpPgo8bGk+UHJlc3MgJy4nLjwvbGk+CjxsaT5XYWl0IGZvciBjb2RlIGNvbXBsZXRpb24uPC9saT4KPGxpPk5vdywgd3JpdGUgInByaW50bG4iLCBhbmQgdHJ5IHRvIHByZXNzIGtleXMgYXMKZmFzdCwgYXMgeW91IGNhbi4gT3IsIG1ha2UgYSBkZWxheSAofjFzZWMpIGJldHdlZW4Ka2V5LXByZXNzZXMuIEl0IHNvbWV0aW1lcyBoYXBwZW5zLCB0aGF0IHRoZSBjb2RlCmNvbXBsZXRpb24ganVzdCBkaXNhcHBlYXJzLjwvbGk+CjxsaT5UaGlzIGRvZXMgbm90IGhhcHBlbiB3aGVuIHlvdSB0eXBlLCByZW1vdmUgYWxsCnlvdSBoYXZlIHdyaXR0ZW4gKCIucHJpbnRsbiIpIGFuZCBnbyBiYWNrIHRvIHN0ZXAgNC48L2xpPgo8L09MPgpJdCBzZWVtcyB0byBtZSwgdGhhdCB0aGUgcHJvYmxlbSBoYXBwZW5zIGlmIHRoZQprZXkgaXMgcHJlc3NlZCBkdXJpbmcgY29kZSBjb21wbGV0aW9uCnJlLWV2YWx1YXRpb24uIFRoZSBjb2RlIGNvbXBsZXRpb24gaXMgY2xvc2VkIGFmdGVyCnRoYXQuCjwvQkxPQ0tRVU9URT48L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcic+PHRkPgo8Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIgCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNTk2OSI+MjU5Njk8L2E+OiAKPEJMT0NLUVVPVEU+Ckkgd2FzIGVkaXRpbmcgYSB0ZXh0IHVzaW5nIGNvZGUgY29tcGxldGlvbi4gT25jZSwKSSB3cml0ZSBxdWl0ZSBmYXN0LCBhbmQKSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbi9zIG9jY3VyZWQgKHRoZSBzZWNvbmQgb2YKdGhlIGV4Y2VwdGlvbnMgd2FzIHJlcGVhdGVkIGFwcHJveC4gNC01IHRpbWVzKS4KPGJyPgpJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIHdoaWxlIGVkaXRpbmcgKGNvZGUgY29tcGxldGlvbik8L2I+CkkgYW0gbWFya2luZyB0aGlzIGJ1ZyBhcyBSQU5ET00sIGJlY2F1c2UgaXQgaXMgdW5yZXByb2R1Y2libGUuIEkKaGF2ZSBub3Qgc2VlbiBpdCBmcm9tIHRpbWUgSSByZXBvcnRlZCB0aGlzLCBzbyBJIHN1cHBvc2UgdGhlIGZpeCB3YXMKc3VjY2VzZnVsbC4gUmVvcGVuIGFueWJvZHkgaXMgYWJsZSB0byByZXByb2R1Y2UgdGhpcyBwcm9ibGVtLiBDdXJyZW50CmJ1aWxkIGlzIDIwMDIxMDE3MDEwMC4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQ+CjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2MDYzIj4yNjA2MzwvYT46IApFZGl0b3Igc2hvdWxkIGF0dGVtcHQgdG8gZm9jdXMgdGhlIGxhc3QgYWN0aXZhdGVkIGVkaXRvciB3aW5kb3cgYWZ0ZXIgQWx0K1NoaWZ0K0k8L2I+CjxCTE9DS1FVT1RFPgpUaGUgZm9jdXMganVzdCBzdGF5cyBvbiB0aGUgbWFpbiB3aW5kb3cgYmVjYXVzZQppdCdzIHBhcmVudCBvZiB0aGUgRmFzdEltcG9ydCBkaWFsb2cuIFRoZSBGaW5kCmRpYWxvZyBmb3IgZXhhbXBsZSB1c2VzIFV0aWxpdGllcy5yZXR1cm5Gb2N1cygpIHRvCmF0dGVtcHQgdG8gcmV0dXJuIHRoZSBmb2N1cy4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcic+PHRkPgo8Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIgCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNjQzMCI+MjY0MzA8L2E+OiAKSW1wb3J0IHRvb2wgZG9lc24ndCB3b3JrIGZyb20gWEVtYWNzITwvYj48L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQ+CjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2NDgwIj4yNjQ4MDwvYT46IApKYXZhZG9jIHN1bW1hcnkgZG9lcyBub3Qgd29yayBmb3IgbWV0aG9kIGFyZ3Mgd2l0aCBhcnJheSB0eXBlPC9iPgo8QkxPQ0tRVU9URT4KTW91bnQgSkRLIDEuNCBzb3VyY2VzLCB0eXBlCjxwcmU+Cm5ldyBEZWZhdWx0VGFibGVNb2RlbCgKPC9QUkU+CmFuZCBzY3JvbGwgdGhyb3VnaCB0aGUgY29uc3RydWN0b3JzIHdoZW4gdGhlIHBvcHVwCmFwcGVhcnMuIEphdmFkb2MgaXMgZGlzcGxheWVkIGZvciBtb3N0CmNvbnN0cnVjdG9ycywgYnV0IG5vdCB0aG9zZSB3aXRoIG9uZSBvciBtb3JlCk9iamVjdFtdIHBhcmFtcywgdGhvdWdoIEphdmFkb2MgY29tbWVudHMgZXhpc3QuCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXInPgo8dGQ+PGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjY5NjYiPjI2OTY2PC9hPjogCkZhc3QgSW1wb3J0IChBbHQgU2hpZnQgSSkgc2hvdWxkIHRyaW0gc2VsZWN0ZWQgdGV4dDwvYj4KPEJMT0NLUVVPVEU+CmlmIHlvdSBzZWxlY3QsIGUuZy46ICJSZW1vdGUgRXhjZXB0aW9uICIgd2l0aCBhIHNwYWNlIGFzIHRoZSBsYXN0IGNoYXIgCih3aGljaCB3aWxsIGFsd2F5cyAKaGFwcGVuIGlmIHlvdSB1c2Ugd29yZCBzZWxlY3Rpb24gd2l0aCBjcnRsICsgcmlnaHQgYXJyb3cpCmFuZCB1c2UgdGhlIEZhc3QgSW1wb3J0IGZ1bmN0aW9uLCBpdCB3aWxsIApub3Qgd29yay4KSWYgeW91IHJlbW92ZSB0aGUgbGFzdCBzcGFjZSBhbGwgd29ya3MgYXMgZXhwZWN0ZWQuCkkgZ3JlYXRseSBhcHByZWNpYXRlIHRoZSBGYXN0IApJbXBvcnQgZnVuY3Rpb24gYW5kIHRoaW5rIHRoaXMgc21hbGwgYWRqdXN0bWVudCB3b3VsZCBpbXByb3ZlIGl0cyAiZWFzZSBvZiB1c2UiLgo8L0JMT0NLUVVPVEU+PC90ZD48L3RyPgoKCjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZD4KPGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjcyMTMiPjI3MjEzPC9hPjogClR3byBzZXBhcmF0b3JzIGluIGphdmEgZWRpdG9yJ3MgY29udGV4dCBtZW51PC9iPgo8YnIvPgo8YmxvY2txdW90ZT5UcnkgdG8gaW52b2tlIGEgY29udGV4dCBtZW51IGluIGFueSBqYXZhIGVkaXRvci4KWW91IHdpbGwgc2VlIHRoYXQgYmV0d2VlbiAiRGVsZXRlIiBhbmQgIkFkZCIKYWN0aW9ucyBhcmUgdHdvIHNlcGFyYXRvcnMsIG1ha2luZyBpdCBsb29rCnN0cmFuZ2UuIDwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSJ0YWJsZXIiPjx0ZCBjb2xzcGFuPSIyIj6goKCgPC90ZD48L3RyPgoKCjx0ciBjbGFzcz0ndGFibGVjYmcnPjx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj48dGJvZHk+PHRyPjx0ZCBhbGlnbj0iY2VudGVyIj48ZGl2CmFsaWduPSJjZW50ZXIiPjxiPjxhIG5hbWU9J0NsYXp6Jz48YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSIjaHR0cHM6Ly9uZXRiZWFucy5vcmcvc291cmNlL2Jyb3dzZS9mb3JtLyI+Zm9ybTwvYT48L2E+PC9iPjwvZGl2PjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC90ZD48L3RyPgo8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQgYmdjb2xvcj0nI0VFRUJDNicgd2lkdGg9IjIwIiByb3dzcGFuPSIxIj6goKCgPC90ZD48dGQ+CjxiPgojPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI3OTM2Ij4yNzkzNjwvYT46CkZvcm0gRWRpdG9yIGxvc2VzIGFwcGxldCBtZW51IG9uIHJlbG9hZDwvYj4KPEJMT0NLUVVPVEU+CiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9Mjk3NDkiPjI5NzQ5PC9hPiwgCmlzIG1hcmtlZCBhcyBkdXBsaWNhdGUgYW5kIHRoZW4gd291bGQgYmUgYWxzbyByZXNvbHZlZCBieSB0aGUgZml4IG9mIHRoaXMKaXNzdWUuCjwvQkxPQ0tRVU9URT4KCjxCTE9DS1FVT1RFPgpXaGVuIGFkZGluZyBhIG1lbnUgdG8gYW4gYXBwbGV0IGFsbCB3b3JrcyBmaW5lIGFuZAp0aGUgbWVudSBhcHBlYXJzLiBJIHRoZW4gY29tcGlsZSBpdCBhbmQgd29yayBvbgppdCwgYXQgdGhpcyBzdGFnZSB0aGUgbWVudSBpcyAnaGFuZ2luZycgb2ZmIHRoZQpKQXBwbGV0IG5vZGUgaW4gdGhlIGZvcm0gZWRpdG9yLiBXaGVuIEkgdGhlbiBjbG9zZQppdCB0byB3b3JrIG9uIHNvbWV0aGluZyBlbHNlIGFuZCB0aGUgcmUtb3BlbiBpdCwKdGhlIG1lbnUgaXMgbm8gbG9uZ2VyIHZpc2libGUgaW4gdGhlIGZvcm0gZWRpdG9yCihhbmQgd2hlbiB0aGUgYXBwbGV0IGlzIHJ1biksIGF0IHRoaXMgcG9pbnQgdGhlCm1lbnUgaXMgc2VlbiB0byBiZSAnaGFuZ2luZycgb2ZmIHRoZSBPdGhlcgpDb21wb25lbnRzIG5vZGUuCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgo8dHIgY2xhc3M9InRhYmxlciI+PHRkIGNvbHNwYW49IjIiPqCgoKA8L3RkPjwvdHI+CgoKCjx0ciBjbGFzcz0ndGFibGVjYmcnPjx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj48dGJvZHk+PHRyPjx0ZCBhbGlnbj0iY2VudGVyIj48ZGl2CmFsaWduPSJjZW50ZXIiPjxiPjxhIG5hbWU9J0luc3RhbGxlcic+PGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iI2h0dHBzOi8vbmV0YmVhbnMub3JnL3NvdXJjZS9icm93c2UvaW5zdGFsbGVyLyI+aW5zdGFsbGVyPC9hPjwvYT48L2I+PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQgYmdjb2xvcj0nI0VFRUJDNicgd2lkdGg9IjIwIiByb3dzcGFuPSIxIj48L3RkPgoKPHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2MDQ5Ij4yNjA0OTwvYT46IApJbnN0YWxsZXIgaW5jb3JyZWN0bHkgaW1wb3J0cyBtb2R1bGVzIGZyb20gdXNlcmRpci4KPC9iPgo8YnIvPgo8QkxPQ0tRVU9URT4KSW5zdGFsbGVyIGRvZXNuJ3QgaW1wb3J0IGZvbGRlcnMgbGlrZQp7JHVzZXJkaXJ9L21vZHVsZXMsIGxpYiwgZXRjLiBmcm9tIDMuMy4yIHVzZXJkaXIKKGluIGNvbnRyYXN0IHRvIFNldHRpbmcgSW1wb3J0IFdpemFyZCkuCkl0IGlzIHByb2JsZW0gb2YgYWxsIDMuMy4yIFhNTCB1c2VycyBiZWNhdXNlIFhNTAp3YXNuJ3QgaW4gc3RhbmRhcmQgMy4zLjIgZGlzdHJpYnV0aW9uIGFuZCBpcwphdmFpbGFibGUgdmlhIEF1dG9VcGRhdGUuCgpTdGVwcyB0byByZXByb2R1Y2U6CjxvbD4KPGxpPnJ1biAzLjMuMiB3aXRoIGVtcHR5IHVzZXJkaXI8L2xpPgo8bGk+aW5zdGFsbCBhbGwgWE1MIG1vZHVsZXMgdmlhIFVwZGF0ZSBDZW50ZXI8L2xpPgo8bGk+ZXhpdCAzLjMuMjwvbGk+CjxsaT5ydW4gTmIgMy40IGluc3RhbGxlcjwvbGk+CjxsaT5zbGVsZWN0IEltcG9ydCBTZXR0aW5ncyBmcm9tOiBOZXRCZWFucyBJREUgdjMuMy54PC9saT4KPGxpPmZpbmlzaCBpbnN0YWxhdGlvbjwvbGk+Cjwvb2w+CklERSBzdGFydHMgYW5kIGRpc3BsYXlzIDE4IFdhcm5pbmQgRGlhbG9ncyBhbmQgYQpsb3Qgb2YgZXhjZXB0aW9ucyAoc2VlIGlkZS5sb2cpIGFuZCBpdCB3aWxsIGhhcHBlbgphdCBldmVyeSBzdGFydC4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+CgoKPHRyIGNsYXNzPSJ0YWJsZXIiPjx0ZCBjb2xzcGFuPSIyIj6goKCgPC90ZD48L3RyPgoKCjx0ciBjbGFzcz0ndGFibGVjYmcnPjx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj48dGJvZHk+PHRyPjx0ZCBhbGlnbj0iY2VudGVyIj48ZGl2CmFsaWduPSJjZW50ZXIiPjxiPjxhIG5hbWU9J0phclBhY2thZ2VyJz48YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSIjaHR0cHM6Ly9uZXRiZWFucy5vcmcvc291cmNlL2Jyb3dzZS9qYXJwYWNrYWdlci8iPmphcnBhY2thZ2VyPC9hPjwvYT48L2I+PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L3RkPjwvdHI+Cjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZCBiZ2NvbG9yPScjRUVFQkM2JyB3aWR0aD0iMjAiIHJvd3NwYW49IjEiPqCgoKA8L3RkPgo8dGQ+PGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjU1MDAiPjI1NTAwPC9hPjogCldoaWxlIHNldHRpbmcgZW1wdHkgbG9jYXRpb24sIG1hbnkgZXhjZXB0aW9ucyBhcmUgc2hvd24gaW4gY29uc29sZTwvYj4KPGJyLz4KPEJMT0NLUVVPVEU+CkhvdyB0byByZXByb2R1Y2U6CjxvbD4KPGxpPk9wZW4gT3B0aW9uczwvTEk+CjxsaT5TZWxlY3QgIlNvdXJjZSBDcmVhdGlvbiBhbmQgTWFuYWdlbWVudHxUZW1wbGF0ZXN8SmFyIEFyY2hpdmVzfEphciBSZWNpcGV8Jmx0O0phciBGaWxlbmFtZSZndDsiCm5vZGU8L2xpPgo8bGk+Q2hhbmdlIExvY2F0aW9uIHByb3BlcnR5IHRvIHNvbWV0aGluZzwvbGk+CjxsaT5TZXQgZW1wdHkgdGV4dCB0byBMb2NhdGlvbiBwcm9wZXJ0eTwvbGk+CjxsaT5FUlJPUiAtIE1hbnkgZXhjZXB0aW9uIGFyZSBzaG93biBpbiB0aGUgY29uc29sZSA8L2xpPgo8L1VMPjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSJ0YWJsZXIiPjx0ZCBjb2xzcGFuPSIyIj6goKCgPC90ZD48L3RyPgoKCjx0ciBjbGFzcz0ndGFibGVjYmcnPjx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj48dGJvZHk+PHRyPjx0ZCBhbGlnbj0iY2VudGVyIj48ZGl2CmFsaWduPSJjZW50ZXIiPjxiPjxhIG5hbWU9J0phdmEnPjxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9IiNodHRwczovL25ldGJlYW5zLm9yZy9zb3VyY2UvYnJvd3NlL2phdmEvIj5qYXZhPC9hPjwvYT48L2I+PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcmJnJz4KPHRkIGJnY29sb3I9JyNFRUVCQzYnIHdpZHRoPSIyMCIgcm93c3Bhbj0iNSI+oKCgoDwvdGQ+Cjx0ZD4KPGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjY5MzIiPjI2OTMyPC9hPjogCkNsYXNzUGF0aC5nZXRSZXNvdXJjZU5hbWUoRmlsZU9iamVjdCwgY2hhciwgYm9vbGVhbikgZG9lcyBub3Qgd29yayBhcyBkb2N1bWVudGVkIAo8L2I+CjxCTE9DS1FVT1RFPgpUaGUgc2VwYXJhdG9yIGNoYXJhY3RlciBpcyBpZ25vcmVkIGFuZCAnLycgaXMgYWx3YXlzIHVzZWQuIAo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyJz48dGQ+PGI+CiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI3NjM2Ij4yNzYzNjwvYT46IE5QRSBleGNlcHRpb24gaW4gVjgKcGFyc2VyLgo8L2I+CjxCTE9DS1FVT1RFPgpUaGUgZXhjZXB0aW9uIHdhcyBjYXVzZWQgYnkgcnVubmluZyBKYXZhIHBhcnNlciBmcm9tCmFub3RoZXIgSmF2YSBwYXJzZXIuIFRoaXMgaXMgbm90IHN1cHBvcnRlZC4gIEZpeCBtYWtlcyBzdXJlIHRoYXQKcmVmZXJlbmNlZCBmaWxlcyBhcmUgc2F2ZWQgb25seSBmb3IgaW50ZXJuYWwgY29tcGlsYXRpb24gYW5kIGRvIG5vdApzYXZlZCBmb3IgdGhlIHNvdXJjZSBwYXJzaW5nLgo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZD48Yj4KIzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9Mjc4MjciCj4yNzgyNzwvYT46ICJBcHBlbmQgRW52aXJvbm1lbnQgVmFyaWFibGVzID0gVHJ1ZSIgZG9lcyBub3Qgd29yawo8L2I+CjxCTE9DS1FVT1RFPgpGb3VuZCBpbiA0LjAgZGV2LCBidXQgYWxzbyBpbiAzLjQuIFNldHRpbmcgdGhpcwpmbGFnIHRvIFRydWUgaGFzIG5vIGVmZmVjdC4gQ29kZSBpbgpKYXZhUHJvY2Vzc0V4ZWN1dG9yIHNpbXBseSBpZ25vcmVzIGl0LiBBdHRhY2hpbmcKc3VnZ2VzdGVkIHBhdGNoLgo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyJz4KPHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI4NDgxIgo+Mjg0ODE8L2E+UHJvYmxlbSB3aXRoIGNvbXBpbGUgYWxsCjwvYj4KPEJMT0NLUVVPVEU+CklmIEkgc2VsZWN0IENvbXBpbGUgQWxsIGZyb20gdGhlIGJ1aWxkIG1lbnUgSSBnZXQgYSAKTnVsbFBvaW50ZXJFeGNlcHRpb24gd2l0aCBhIHJlcXVlc3QgdG8gcmVwb3J0IHRoaXMgYnVnLgpJIGhhZCB0aGUgIlVzZSBKYXZhTWFrZSIgcHJvcGVydHkgc2V0IHRvIHRydWUuIFdoZW4gSSAKcmVzZXQgaXQgYmFjayB0byBmYWxzZSBDb21waWxlIEFsbCBkb2VzIG5vdCB0aHJvdyBhbnkgCmV4Y2VwdGlvbnMuIFRoZSBwcm9ibGVtIGlzIHJlcHJvZHVjYWJsZSBiZWNhdXNlIGlmIEkgc2V0IAppdCBiYWNrIHRvIHRydWUgSSBnZXQgdGhlIHNhbWUgZXhjZXB0aW9uLiBJIGFsc28gdHJpZWQgdG8gCmRlbGV0ZSB0aGUgZW50aXJlIHByb2plY3QgYW5kIHJlY3JlYXRlIGl0LiBTYW1lIHRoaW5nLgo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZD48Yj4KIzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjkzMDYiPjI5MzA2PC9hPjogTmV0QmVhbnMgZG9lcyBub3QgY2xvc2UgYWxsIG9wZW4gZmlsZSBkZXNjcmlwdG9ycy4KPC9iPgo8QkxPQ0tRVU9URT4KV2hlbiBJIG1vdW50ZWQgdGVuIGZpbGVzeXN0ZW1zIChpbiB0aGUgTmV0QmVhbnMKRXhwbG9yZXIpIGFuZCByYW4gY29tbWFuZCAiVXBkYXRlIENvZGUKQ29tcGxldGlvbnMuLi4iIG9uIHNvbWUgb2YgdGhlbSwgTmV0QmVhbnMgYmVjYW1lCmNyYXp5LCBkaXNwbGF5ZWQgc2V2ZXJhbCBleGNlcHRpb24gd2luZG93cyBhbmQKcHJpbnRlZCBhIGxvdCBvZiBleGNlcHRpb25zIHRvIHRoZSBjb25zb2xlIGFuZC9vcgp0byAnaWRlLmxvZycuIEl0IGFsc28gc3RhcnRlZCBpbnN0YWxsaW5nIGFuZAp1bmluc3RhbGxpbmcgdmFyaW91cyBzZXRzIG9mIG1vZHVsZXMuCgpTb21lIG9mIHRoZSBleGNlcHRpb24gbWVzc2FnZXMgd3JpdHRlbiBpbnRvCidpZGUubG9nJyBlbmQgd2l0aCAiKFRvbyBtYW55IG9wZW4gZmlsZXMpIi4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+CgoKPHRyIGNsYXNzPSJ0YWJsZXIiPjx0ZCBjb2xzcGFuPSIyIj6goKCgPC90ZD48L3RyPgoKCjx0ciBjbGFzcz0ndGFibGVjYmcnPjx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj48dGJvZHk+PHRyPjx0ZCBhbGlnbj0iY2VudGVyIj48ZGl2CmFsaWduPSJjZW50ZXIiPjxiPjxhIG5hbWU9J0phdmFDdnMnPjxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIGhyZWY9IiNodHRwczovL25ldGJlYW5zLm9yZy9zb3VyY2UvYnJvd3NlL2phdmFjdnMvIj5qYXZhY3ZzPC9hPjwvYT48L2I+PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L3RkPjwvdHI+Cjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZCBiZ2NvbG9yPScjRUVFQkM2JyB3aWR0aD0iMjAiIHJvd3NwYW49IjYiPqCgoKA8L3RkPgo8dGQ+PGI+CiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTIyMjAzIj4yMjIwMzwvYT46CkFmdGVyIHVubG9hZGluZyBhbmQgcmVsb2FkaW5nIEphdmFDVlMgbW9kdWxlLCBKYXZhQ1ZTIGZpbGVzeXN0ZW0gaGFzIGxvY2FsIGZpbGVzeXN0ZW0gaWNvbgo8QkxPQ0tRVU9URT4KUmUtaW5pdGlhbGl6ZSB0aGUgY2FjaGUgYWZ0ZXIgYWRkTm90aWZ5KCkuClRoaXMgaXMgbmVjZXNzYXJ5IGZvciB0aGUgZmlsZXN5c3RlbSBhbmQgY2FjaGUgdG8gd29yayBjb3JyZWN0bHkKYWZ0ZXIgc2V2ZXJhbCBjYWxscyBvZiByZW1vdmVOb3RpZnkoKSBhbmQgYWRkTm90aWZ5KCkuCjwvQkxPQ0tRVU9URT4KPC9iPjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyJz48dGQ+CjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI1ODQ0Ij4yNTg0NDwvYT46CkNWUyB8IERJRkYsIG9mZi1ieS1vbmUgZXJyb3I8L0I+CjxCTE9DS1FVT1RFPgpJZiB1c2luZyAiSWdub3JlIHdoaXRlc3BhY2UiIGFuZCAiSWdub3JlIGJsYW5rIHNwYWNlcyI7IAptYXliZSBvbmUgb2YgdGhvc2UgZmVhdHVyZXMgaXMgYnJva2VuIGxlYWRpbmcgdG8gdGhlIHNwYWNlcyB3ZSBzZWUhCjxwLz4KUnVuIHRoZSB1cGRhdGUgLXAgY29tbWFuZCBmb3IgZWFjaCByZXZpc2lvbiBjb21wYXJlZC4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIHRoZQpncmFwaGljYWwgZGlmZiB0byBoYXZlIHRoZSBjb3JyZWN0IHJldmlzaW9uIHRleHRzLiBUaGUgZGlmZiBjYW4gYmUgZ2l2ZW4KYXJndW1lbnRzIHRvIGlnbm9yZSBzb21lIGNoYW5nZXMgKHNwYWNlcywgZW1wdHkgbGluZXMsIGV0Yy4pIElmIHRoZSBjdnMgZGlmZgppZ25vcmVzIHNvbWUgY2hhbmdlcyBpdCdzIG5vdCBwb3NzaWJsZSB0byBjb25zdHJ1Y3QgdGhlIHNlY29uZCBmaWxlIGZyb20KdGhlIGZpcnN0IG9uZSBhbmQgdGhlIGxpc3Qgb2YgZGlmZmVyZW5jZXMuIAo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyYmcnPgo8dGQ+PGI+CiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI3MjcxIj4yNzI3MTwvYT46CklmIGlzSWdub3JlTG9jYWxseUV4aXN0aW5nRmlsZXMoKSwgcGFzcyBhIG51bGwgZmlsZSBhZ3J1bWVudCBvbmx5IHRvCnNlbmRFbnRyeUFuZE1vZGlmaWVkUmVxdWVzdHMoKS4KPC9iPgo8QkxPQ0tRVU9URT4KV2VsbCwgdGhlIHByb2JsZW0gaXMgaW4Kb3JnLm5ldGJlYW5zLmxpYi5jdnNjbGllbnQuY29tbWFuZC5yZW1vdmUuUmVtb3ZlQ29tbWFuZC5zZW5kRW50cnlBbmRNb2RpZmllZFJlcXVlc3RzKCkKbWV0aG9kLiBXaGVuIGlzSWdub3JlTG9jYWxseUV4aXN0aW5nRmlsZXMoKSBpcyB0cnVlLCB0aGUgZmlsZSBpcyBzZXQKdG8gbnVsbCwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgTlBFLgo8L0JMT0NLUVVPVEU+PC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXInPjx0ZD48Yj4KIzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjcyNzQiPjI3Mjc0PC9hPjoKQ1ZTIGNvbW1hbmRzIGRvbid0IHNhdmUgZWRpdG9yIGJ1ZmZlcnMgZmlyc3Q8L2I+CjxCTE9DS1FVT1RFPgpQbGVhc2UgcmVmZXIgdG8gdGhlIG5idXNlcnMgZGlzY3Vzc2lvbiB0aHJlYWQgCjxhIGhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL3NlcnZsZXRzL1JlYWRNc2c/bXNnSWQ9Mzc2NjQ2Jmxpc3ROYW1lPW5idXNlcnMiPgoiU3VycHJpc2luZyBDVlMgcHJvYmxlbXMgKGNoYW5nZXMgbG9zdCkiIDwvYT4Kc3RhcnRlZCBNb24sIDkgU2VwIDIwMDIgYnkgCk1pa2UgQ2VwZWssIHdoaWNoIGluY2x1ZGVzIHN0ZXAtYnktc3RlcCByZXByb2R1Y3Rpb24gCnNjZW5hcmlvczoKCkJyaWVmIHN1bW1hcnk6ICBDVlMgY29tbWFuZCBleGVjdXRpb24sIHVubGlrZSBBbnQgdGFyZ2V0IApleGVjdXRpb24sIGRvZXNuJ3Qgc2F2ZSBtb2RpZmllZCBmaWxlcyBmaXJzdCBpbiBOZXRCZWFucy4gIApBIG5hc3R5IGNvbnNlcXVlbmNlIGlzIHRoYXQgYSAiQ1ZTIHVwZGF0ZSIgY29tbWFuZCB3aXRoIAp1bnNhdmVkIGVkaXRvciBidWZmZXJzIGNhbiBlYXNpbHkgcmVzdWx0IGluIGxvc3Qgd29yayAKKHlvdXJzIG9yIHNvbWVvbmUgZWxzZSdzKSB3aXRoIG5vIHdhcm5pbmcuCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXJiZyc+PHRkPjxiPgojPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIgCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yODA3NSI+MjgwNzU8L2E+OgpERUFETE9DSyB3aGVuIHlvdSBtb3VudCBGUyBjb250YWluaW5nIFdFQiBtb2R1bGU8L2I+Cjxicj4KPEJMT0NLUVVPVEU+CkluIHZlcnNpb25pbmcgZmlsZXN5c3RlbSdzIGF0dHJpYnV0ZXMgZG8gTk9UIGxvb2sgZm9yIGNvcnJlc3BvbmRpbmcgRmlsZU9iamVjdCwKYmVjYXVzZSB0aGlzIGNhbiBjYXVzZSBkZWFkbG9jay4KSW4gTmJKYXZhQ3ZzRmlsZVN5c3RlbSBnZXRWY3NBdHRyaWJ1dGVzKCkgbWV0aG9kIGFkZGVkIHRvIGJlIGFibGUgdG8gCmFjY2VzcyBhdHRyaWJ1dGVzIGRpcmVjdGx5Lgo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyJz48dGQ+CjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI4OTQzIj4yODk0MzwvYT46CkRlZmF1bHQgU3dpdGNoZXMgZGlhbG9nIGRvZXMgbm90IGFsbG93IHRvIGNhbmNlbCB0aGUgY29tbWFuZDwvQj4KPEJMT0NLUVVPVEU+CldoZW4gY3JlYXRpbmcgYSBjdnMgZmlsZXN5c3RlbSwgdGhlIGRlZmF1bHQgdmFsdWUKZm9yIHRoZSAiVXNlciBJbnRlcmZhY2UgTW9kZSIgcHJvcGVydHkgaXMgIk9ubHkKRGVmYXVsdCBTd2l0Y2hlcyIuIAo8cC8+CldoZW4gZmlyc3QgZXhlY3V0aW5nIGEgY3ZzIGNvbW1hbmQgb24gdGhhdApmaWxlc3lzdGVtLCBhIGRpYWxvZyBjb21lcyB1cCB0byBsZXQgeW91IGtub3cgdGhhdAptb3JlIGFkdmFuY2VkIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgYnV0IGRvZXMgbm90CnByb3ZpZGUgYSB3YXkgdG8gY2FuY2VsIHRoZSBjb21tYW5kLiAKPHAvPgpXaHkgaXMgdGhpcyBiYWQ/IElmIHlvdSBoYXZlIGJlZW4gd29ya2luZyBvbiBhCmxvY2FsIHZlcnNpb25zIG9mIGZpbGVzLCB0aGV5IGNhbiBnZXQgbWVyZ2VkIHdoZW4KeW91IGZpcnN0IGRvIGFuIHVwZGF0ZSBmcm9tIG5ldGJlYW5zIHdpdGhvdXQgYW55CndheSB0byBzdG9wIGl0IHNob3J0IG9mIGtpbGxpbmcgdGhlIGFwcGxpY2F0aW9uCmJlZm9yZSBjbG9zaW5nIHRoZSBkaWFsb2cuIEJhZCwgYmFkIG5ldGJlYW5zLgo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0idGFibGVyIj48dGQgY29sc3Bhbj0iMiI+oKCgoDwvdGQ+PC90cj4KCgo8dHIgY2xhc3M9J3RhYmxlY2JnJz48dGQgY29sc3Bhbj0iMiI+PHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+PHRib2R5Pjx0cj48dGQgYWxpZ249ImNlbnRlciI+PGRpdgphbGlnbj0iY2VudGVyIj48Yj48YSBuYW1lPSdKYXZhRG9jJz48YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiBocmVmPSIjaHR0cHM6Ly9uZXRiZWFucy5vcmcvc291cmNlL2Jyb3dzZS9qYXZhZG9jLyI+amF2YWRvYzwvYT48L2E+PC9iPjwvZGl2PjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC90ZD48L3RyPgo8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQgYmdjb2xvcj0nI0VFRUJDNicgd2lkdGg9IjIwIiByb3dzcGFuPSIyIj6goKCgPC90ZD4KPHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTIyODA1Ij4yMjgwNTwvYT46IApObyBVSSBmb3IgYWNjZXNzaW5nIEphdmFkb2MgZXhjZXB0IHNlYXJjaCBvciBlZGl0b3Igc2hvcnRjdXRzPC9iPgo8QkxPQ0tRVU9URT4KSXQncyBmaW5lIHRoYXQgd2UgZ290IHJpZCBvZiB0aGUgSmF2YURvYyB0YWIgaW4KRXhwbG9yZXIuICBCdXQgaG93IGRvIEkgYWNjZXNzIEphdmFEb2Mgbm93PyAgSQpzaG91bGQgYmUgYWJsZSB0byBicm93c2UgYW5kIHBvc3NpYmx5IG9wZW4gSmF2YURvYwp3aXRob3V0IHJ1bm5pbmcgYSBzZWFyY2ggdG9vbC4KCk9uZSBpZGVhOiAgV2hlbiB5b3UgbW91bnQgSmF2YURvYywgaXQgc2hvdWxkIG9mZmVyCnRvIGFkZCB0aGUgbWFpbiBpbmRleCBmaWxlIHRvIHRoZSBjdXJyZW50IHByb2plY3QuCgpPbmUgaXNzdWUgd2l0aCB0aGF0IGlkZWEgKGFscmVhZHkgZmlsZWQgYW4KZW5oYW5jZW1lbnQgb24gdGhpcyk6IFlvdSBjb3VsZCBlbmQgdXAgd2l0aCBhCmJ1bmNoIG9mIGZpbGVzIGluIHlvdXIgcHJvamVjdCBjYWxsZWQgIkluZGV4LiIgClRoZSByaWdodCBzb2x1dGlvbiBpcyB0byBwYXJzZSBvdXQgYSByZWFzb25hYmxlCm5hbWUgKHN1Y2ggYXMgdXNpbmcgdGhlICZsdDtUSVRMRSZndDsgdGFncyBmcm9tIHRoZQppbmRleCkgYW5kIHVzZSB0aGF0IGZvciB0aGUgc2hvcnRjdXQgdGhhdCBnZXRzCmFkZGVkIHRvIHRoZSBwcm9qZWN0Lgo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyJz48dGQ+PGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNjIzOCI+MjYyMzg8L2E+OiAKVXNlciBhYmxlIHRvIHR5cGUgaW4gdGhlIEphdmFkb2MgT3V0cHV0IFdpbmRvdyAgICAgICAgICA8L2I+CjxCTE9DS1FVT1RFPgpXaGVuIGEgamF2YWRvYyBpcyBjcmVhdGVkIHRoZSB1c2VyIGlzIGFibGUgdG8gdHlwZSBpbiB0aGUgb3V0cHV0IAp3aW5kb3cuCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKCjx0ciBjbGFzcz0idGFibGVyIj48dGQgY29sc3Bhbj0iMiI+oKCgoDwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVjYmcnPjx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj48dGJvZHk+PHRyPjx0ZCBhbGlnbj0iY2VudGVyIj48ZGl2CmFsaWduPSJjZW50ZXIiPjxiPjxhIG5hbWU9J05iQnVpbGQnPjxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIGhyZWY9IiNodHRwczovL25ldGJlYW5zLm9yZy9zb3VyY2UvYnJvd3NlL25iYnVpbGQvIj5uYmJ1aWxkPC9hPjwvYT48L2I+PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L3RkPjwvdHI+Cjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZCBiZ2NvbG9yPScjRUVFQkM2JyB3aWR0aD0iMjAiIHJvd3NwYW49IjIiPqCgoKA8L3RkPgo8dGQ+CjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2NDMxIj4yNjQzMTwvYT46IAptYWtlbmJtIHRhcmdldCBmYWlscyB3aXRoIEFudCAxLjUgPC9iPgo8QkxPQ0tRVU9URT4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcic+PHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9Mjk3MTIiPjI5NzEyPC9hPjogCjMuNCBpbnN0ZWFkIG9mIDMuNC4xIGluIGluc3RhbGxlciAgICAgICAgICA8L2I+CjxCTE9DS1FVT1RFPgpJbiB0aGUgaW5zdGFsbGVyIGZvciAzLjQuMSBSQzEgYnVpbGQgdGhlIE5ldEJlYW5zCjMuNCBpcyBkaXNwbGF5ZWQgZXZlcnl3aGVyZS4KPHAvPgpSdWRvbGYgQmFsYWRhOiAKPGJyPgpJJ3ZlIGdvdCBtaXhlZCBmZWVsaW5nIGlmIGl0J3MgYW4gZXJyb3Igb3Igbm90LCBidXQgaXQncyBjZXJ0YWluLCB0aGF0CkknbSByZXNwb25zaWJsZSBmb3IgdGhhdCBhcyBhbiBpZGVhIGF1dGhvciBhbmQgaW1wbGVtZW50YXRvci4KSW5zdGFsbGVyIGJ1aWxkICpzaGVsbCogc2NyaXB0IHRha2VzIHRoZSBwcm9kdWN0IGtleSBmcm9tIHVzZXJkaXIKdmFsdWUgc3BlY2lmaWVkIGluIHJ1bmlkZV9kZWZhdWx0cy5zaCBJIHdpbGwgdHJ5IHRvIGFycmFuZ2Ugc3BlY2lhbAppbnN0YWxsZXIgYnVpbGQgdG9tb3Jyb3cgdG8gcHJvdmlkZSBnb29kIGluc3RhbGxlcnMgZm9yIDMuNC4xIFJDMgooYnVpbGQgIzIwMDMwMTAzMjM0MSkuIEkgZ3Vlc3MgMy40LjEgaXMgbm90IGdvaW5nIHRvIGNoYW5nZSB1c2VyZGlyIHNvCnRoZSBjaGFuZ2UgaXMgdXB0byBtZS4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9InRhYmxlciI+PHRkIGNvbHNwYW49IjIiPqCgoKA8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlY2JnJz48dGQgY29sc3Bhbj0iMiI+PHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+PHRib2R5Pjx0cj48dGQgYWxpZ249ImNlbnRlciI+PGRpdiBhbGlnbj0iY2VudGVyIj48Yj48YQpuYW1lPSdPcGVuSURFJz48YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiBocmVmPSIjaHR0cHM6Ly9uZXRiZWFucy5vcmcvc291cmNlL2Jyb3dzZS9vcGVuaWRlLyI+b3BlbmlkZTwvYT48L2E+PC9iPjwvZGl2PjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC90ZD48L3RyPgo8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQgYmdjb2xvcj0nI0VFRUJDNicgd2lkdGg9IjIwIiByb3dzcGFuPSIxNCI+oKCgoDwvdGQ+Cjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIgCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNTQ4OSI+MjU0ODk8L2E+OgpEZWZhdWx0IGFjdGlvbiBzb21ldGltZXMgZG9lcyBub3Qgd29yayBvbiBUcmVlVGFibGVWaWV3CjwvYj48L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcic+PHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjU1OTAiPjI1NTkwPC9hPjogCkEgbnVtYmVyIG9mIE9wZW5JREUgY2xhc3NlcyAoZS5nLiBTcGxpdHRlZFBhbmVsKSBnZXQgY29sb3JzIGZyb20gamF2YS5hd3QuU3lzdGVtQ29sb3IsIG5vdCBVSU1hbmFnZXIgICAgICAgICAgPC9iPgo8QkxPQ0tRVU9URT4KSSd2ZSBiZWVuIHBsYXlpbmcgd2l0aCB0aGVtZSBzdXBwb3J0IGFuZCBub3RpY2VkIGEKYnVuY2ggb2YgYm9yZGVycyB0aGF0IGRpZCBub3Qgc2VlbSB0byByZXNwb25kIHRvClVJRGVmYXVsdHMgY2hhbmdlcy4KVGhlIHJlYXNvbiBpcyB0aGF0IHRoZXkgZ2V0IHRoZWlyIGNvbG9ycyBmcm9tCmphdmEuYXd0LlN5c3RlbUNvbG9yIHJhdGhlciB0aGFuIHVzaW5nCmphdmF4LnN3aW5nLlVJTWFuYWdlci5nZXRDb2xvcigpLgo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI1NzMxIj4yNTczMTwvYT46IApUcmVhdCBhcyBmaWxlIGRvZXNuJ3Qgd29yayBpbiBqYXIgZmlsZTwvYj4KPEJMT0NLUVVPVEU+CklmIGphciBmaWxlIGNvbnRhaW5zIHNvbWUgdW5yZWNvZ25pemVkIGZpbGUgYW5kIHVzZXIgd2FudCB2aWV3IHRoYXQgZmlsZSAKYXMgdGV4dCBhbmQgdXNlcyBhY3Rpb24gIlRyZWF0IGFzIEZpbGUiIGZyb20gcG9wLXVwIG1lbnUgb24gdGhhdCBmaWxlLCAKSU9FeGNlcHRpb24gaXMgdGhyb3duIGFuZCBmaWxlIGlzIG5vdCB0cmVhdGVkIGFzIHRleHQuCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXInPjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI1ODg0Ij4yNTg4NDwvYT46IApXcm9uZyB0aXRsZSBvZiBwcm9wZXJ0aWVzIHdpbmRvdy4gICAgICAgICAgPC9iPgo8QkxPQ0tRVU9URT4KUHJvcGVydGllcyB3aW5kb3cgb2YgZmlsZXN5c3RlbXMsIGFyY2hpdmUgZmlsZXMKZXRjLiBoYXMgd3JvbmcgY2FwdGlvbi4gSXQgc2F5cyBzb21ldGhpbmcgbGlrZToKIlByb3BlcnRpZXMgb2YgRDpcRm9yIFtQcm9wZXJ0aWVzIG9mIEQ6XEZvcnRlIGZvcgpKYXZhXFVzZXJcMy40XHNhbXBsZWRpcl0iIGluIGNhc2Ugb2YgZGVmYXVsdCBsb2NhbApmaWxlc3lzdGVtIG9yICJQcm9wZXJ0aWVzIG9mIGplbW15LiBbUHJvcGVydGllcyBvZgpqZW1teS5qYXJdIiBpbiBjYXNlIG9mIEpBUiBmaWxlLiBJdCBsb29rcyBsaWtlIG9ubHkKNiBjaGFyYWN0ZXJzIGFyZSB0YWtlbiBpbnRvIGFjY291bnQsIGRvZXNuJ3QgaXQgPwpJIHdvdWxkIGxvdmUgdG8gYXNzaW5nIGl0IGFzIFAyIGJ1dCBJIGFtIHN1cmUgeW91CndvdWxkIGRvd25ncmFkZSBpdCBpbW1lZGlhdGVsbHkuIEhvd2V2ZXIgY2FuIHRoaXMKcmVtYWluIGluIEZDUyA/IDstKQo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI1OTYzIj4yNTk2MzwvYT46IApbRXhwbG9yZXIgRG5EXSBBZnRlciBjYW5jZWwgZHJvcCBpbiBFeHBsb3JlciBwb3B1cCBtZW51IGFuZCBzaG9ydCBjdXRzIGRvbid0IHdvcmsgdGhlcmUgICAgICAgICAgPC9iPgo8QkxPQ0tRVU9URT4KCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXInPjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2MDI4Ij4yNjAyODwvYT46IAphZnRlciBkZWxldGluZyBHVUkgRWRpdGluZyB3b3Jrc3BhY2UsIGVkaXRvciB3aW5kb3cgYmxhbmsgICAgICAgICAgPC9iPgo8QkxPQ0tRVU9URT4KSSBkaWQgYWJvdXQgdGhlIGZvbGxvd2luZyBzdGVwczoKICBsb29rIGF0IGZpbGVzIGluIGVkaXRpbmcgd29ya3NwYWNlCiAgbW91bnQgc3JjLnppcCAtLSBwcm9iYWJseSB1bnJlbGF0ZWQKICB1bm1vdW50IHNyYy56aXAgLS0gcHJvYmFibHkgdW5yZWxhdGVkCiAgb3BlbiBJbWFnZVZpZXdlci5qYXZhIChvcGVucyBGb3JtIEVkaXRvciBvbiBHVUkKRWRpdGluZyB3b3Jrc3BhY2UpCiAgZGVsZXRlIEdVSSB3b3Jrc3BhY2UKCm5vdyB0aGVyZSBpcyBhIGJsYW5rIHRhYiBpbiB0aGUgZWRpdG9yIGZvciB3aGF0CnNob3VsZCBoYXZlIGJlZW4KdGhlIHNob3dpbmcgZmlsZS4gIE90aGVyIHRhYnMgaW4gdGhlIGVkaXRvciBsb29rCk9LLiAgSGl0dGluZwp0aGUgWCBvbiB0aGUgdGFiIHRvIGRlbGV0ZSBpdCBhbmQgb3BlbmluZyBpdCBhZ2FpbgpmaXhlcyB0aGUKcHJvYmxlbS4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcmJnJz4KPHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2MjI4Ij4yNjIyODwvYT46IApFYWNoIHRpbWUgc2VsZWN0aW9uIG9mIG1vZHVsZSBub2RlIGluIFRvb2xzIHwgT3B0aW9ucyBhcmlzZSBuZXcgUHJvcGVydGllcyBXaW5kb3cKPC9iPgo8YnIvPgo8QkxPQ0tRVU9URT4KU3RlcHMgdG8gcmVwcm9kdWNlOgo8dWw+CjxsaT5ydW4gSURFPC9MST4KPGxpPmludm9rZSBPcHRpb25zIChUb29scyB8IE9wdGlvbnMpPC9MST4KPGxpPnRyeSB0byBzZWxlY3Qgc29tZSBub2RlIHVuZGVyIElERSBDb25maWd1cmF0aW9uCnwgU3lzdGVtIHwgTW9kdWxlcywgPC9saT48L1VMPgoKaWYgZm9sZGVyIGlzIHNlbGVjdGVkIC0+IGl0c2VsZiBleHBhbmRlZDxici8+CmlmIG1vZHVsZSBpcyBzZWxlY3RlZCAtPiBuZXcgcHJvcGVydGllcyB3aW5kb3cKYXJpc2U8L0JMT0NLUVVPVEU+PC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXInPjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIgCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNjMxMSI+MjYzMTE8L2E+OiAKLnNldHRpbmdzIGZpbGVzIGFyZSBwYXJzZWQgMisgdGltZXM8L2I+CjxCTE9DS1FVT1RFPgpEdXJpbmcgdGhlIElERSBzdGFydHVwLCBlYWNoIG9mIHRoZSAuc2V0dGluZ3MKZmlsZXMgdW5kZXIgdGhlIFNlcnZpY2VzIGZvbGRlciB3aWxsIGdldCBwYXJzZWQgYXQKbGVhc3QgdHdpY2UgZHVyaW5nIHRoZSBGb2xkZXJMb29rdXAKaW5pdGlhbGl6YXRpb24uCjxwLz4KSXQgaXMgY2F1c2VkIGJ5IHRoaXMgY29kZSBpbiB0aGUgY29yZToKPHByZT5TZXJpYWxEYXRhQ29udmVydG9yLmphdmE6NzMKICAgICAgICBpZiAoaXNNb2R1bGVFbmFibGVkKCkpIHsgCiAgICAgICAgICAgIGluc3RhbmNlID0gY3JlYXRlSW5zdGFuY2UobnVsbCk7IAogICAgICAgICAgICBsa3BDb250ZW50LmFkZChpbnN0YW5jZSk7IAogICAgICAgIH0KPC9QUkU+CndoZXJlIGluIGlzTW9kdWxlRW5hYmxlZC0+Z2V0TW9kdWxlSW5mbygpIGlzIGNvZGUKdG8gY3JlYXRlL3BhcnNlIGFuIGluc3RhbmNlOgpTdHJpbmcgbW9kdWxlID0gbmV3IFNldHRpbmdzSW5zdGFuY2UobnVsbCkuZ2V0U2V0dGluZ3ModHJ1ZSkuZ2V0Q29kZU5hbWVCYXNlKCk7CmFuZCB0aGUgcGFyc2VkIGluc3RhbmNlIGlzIGltbWVkaWF0ZWxseSBmb3Jnb3R0ZW4gYW5kIGNyZWF0ZWQgYWdhaW4gZnJvbSBhYm92ZSBtZW50aW9uZWQKaW5zdGFuY2UgPSBjcmVhdGVJbnN0YW5jZShudWxsKTsgCmFuZCBpcyBwYXJzZWQgYWdhaW4gbGF0ZXIgKG9uIGRlbWFuZCkuCjxwLz4KSXQgaXMgcG9zc2libGUgdG8ga2VlcCB0aGUgcGFyc2VkIGluc3RhbmNlLAp3aGljaCB3aWxsIHNpZ25pZmljYW50bHkgc3BlZWQgdXAgdGhlIEZvbGRlckxvb2t1cCBpbml0aWFsaXphdGlvbi4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQ+PGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjY2NzgiPjI2Njc4PC9hPjoKSTE4TiAtIFByb2JsZW1zIHdpdGggbG9jYWxpemVkIG1uZW1vbmljcwo8L2I+CjxCTE9DS1FVT1RFPgpJIGZvdW5kIGEgVkVSWSBzZXJpb3VzIGJ1ZyBpbiBsb2NhbGl6ZWQgTmV0YmVhbnM6CldoZW4gSSB0cmFuc2xhdGUsIGUuZy4gIiZhbXA7RmlsZSIgbWVudSBuYW1lIGludG8gUnVzc2lhbiwgSSBoYXZlICImYW1wOyZsdDtTT01FClJVU1NJQU4gU1lNQk9MJmd0Oy4uLiIsCmJ1dCB0aGVuIHRoZSBrZXkgY29tYmluYXRpb24gQWx0KyZsdDtTT01FIFJVU1NJQU4gU1lNQk9MJmd0OyBkb2Vzbid0IHdvcmshCgpBbGwgb3RoZXIgbWVudXMgYW5kIHN1Ym1lbnVzLCBidXR0b25zLCBldGMuIGFyZSBhbHNvIGFmZmVjdGVkLgoKQW5kIEkgZG8gbm90IGxpa2UgdGhlIHdheSwgdXNlZCBieSBMb2NhbGl6YXRvcnMgb2YgTW96aWxsYSAod2hpY2ggYWxzbyBoYXMKdGhlIHNhbWUgYnVnKSwgd2hvIGp1c3QgdHJhbnNsYXRlZCB0aGUgbWVudSBuYW1lLCBidXQgbGVmdCB0aGUgRW5nbGlzaCBrZXkKY29tYmluYXRpb24uClNvICImYW1wO0ZpbGUiIG1lbnUgd291bGQgbG9vayBsaWtlCiImbHQ7UlVTU0lBTiBUUkFOU0xBVElPTiZndDsgKCZhbXA7RikiIC0gdGhpcyBpcyBub3QgdmVyeSBhdHRyYWN0aXZlIGFueXdheS4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcic+PHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2ODg3Ij4yNjg4NzwvYT46IApTeXN0ZW1BY3Rpb24uaWNvblJlc291cmNlIHVwZ3JhZGUgcHJvYmxlbQo8L0I+CjxCTE9DS1FVT1RFPgpUaGUgbmV3IHNlbWFudGljcyBvZiB0aGlzIG1ldGhvZCBhcmUgYmV0dGVyLCAKYnV0IHNvbWUgMy4zLSBtb2R1bGVzIHdpdGggYWN0aW9ucyBtaWdodCBoYXZlIGJlZW4gaGFybWVkIGJ5IHRoZSBjaGFuZ2UuIAojMjY4ODcgcmVzdG9yZXMgY29tcGF0aWJpbGl0eSBmb3IgdGhlbSAKKHdpdGggYSBzdWl0YWJsZSB3YXJuaW5nIHRvIGNvbnNvbGUgYWJvdXQgaG93IHRvIHVwZ3JhZGUpLgo8L3A+ClN5c3RlbUFjdGlvbi5pY29uUmVzb3VyY2UgcmVsYXRpdmUgcGF0aCBjb21wYXQgZml4Lgo8L0JMT0NLUVVPVEU+PC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXJiZyc+PHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjY5MjkiPjI2OTI5PC9hPjogCk51bGxQb2ludGVyRXhjZXB0aW9uIHdoZW4gY2xvc2luZyB3aW5kb3cgICAgICAgICAgPC9iPgo8QkxPQ0tRVU9URT4KSSdtIHJ1bm5pbmcgTmV0YmVhbnMgMy40IHVuZGVyIHRoZSBTdW4gSkRLIDEuNC4wIHVzaW5nIHRoZSAKV2luZG93cyBMJmFtcDtGLiAgSSBoYWQgYSBudW1iZXIgb2YgZmlsZXMgb3BlbiBpbiB0aGUgZWRpdG9yLCAKYW5kIGNsb3NlZCB0aGVtIGFsbCBieSBjbGlja2luZyB0aGUgIlgiIGJ1dHRvbiBpbiB0aGUgbWVudSAKYmFyIChub3QgdGhlIG9uZSBpbiB0aGUgdGl0bGUgYmFyLCB3aGljaCB3b3VsZCBoYXZlIHF1aXQgCnRoZSBhcHBsaWNhdGlvbikuICBUaGUgZWRpdG9yIHdpbmRvdyBkaWQgY2xvc2UsIGJ1dCBJIGFsc28gCmdvdCBhIGRpYWxvZyBib3ggd2l0aCB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjogLi4uCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXInPjx0ZD48Yj4KIzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNzAyNSI+MjcwMjU8L2E+OiAKTm9kZXMgZm9yIERhdGFPYmplY3RzIGNhbiBkaXNhcHBlYXIgZnJvbSB0aGUgdHJlZSBldmVuIHRoZXJlIGlzIG5vIGNoYW5nZSAKaW4gdGhlIERhdGFPYmplY3RzIAo8L2I+CjxCTE9DS1FVT1RFPgpJIGhhdmUgbm90aWNlZCBpc3N1ZSAyNjE5MiBhbmQgZmluZCBvdXQgdGhhdCBpdCBpcwpjYXVzZWQgYnkgZml4IG9mIGlzc3VlIDIwNjk5LgpHb29kIHRvIGtub3csIGJlY2F1c2UgSSBoYWQgdG8gd29ya2Fyb3VuZCB0aGlzCmJlaGF2aW91ciBkdXJpbmcKaW1wbGVtZW50YXRpb24gb2YgaXNzdWUgMjMzNTYsIEkgZGlkIG5vdCBrbm93IHdoeSwKYnV0IHNvbWV0aW1lcyBub2Rlcwp0aGF0IEkgb2J0YWluZWQgYXMgY2hpbGRyZW4gZnJvbSBGb2xkZXJDaGlsZHJlbgp3ZXJlIG5vdCBwcmVzZW50IGluCnRoZSB0cmVlIHdoZW4gSSB0cmllZCB0byBkbwpFeHBsb3Jlck1hbmFnZXIuc2V0U2VsZWN0ZWROb2Rlcy4KVGhpcyBpcyBiYWQgYmVoYXZpb3VyLiBTbyBpdCBpbXBsaWVzIHRoYXQgdGhlIGZpeApvZiB0aGUgYnVnIDIwNjk5IGlzIG5vdCBnb29kLiBJIGFtIGNyZWF0aW5nIHRoaXMKYnVnIGFuZCBJIHdpbGwgdHJ5IHRvIHdyaXRlIGEgdGVzdCBjYXNlIHRvCnNob3csIHdoYXQgaXMgd3JvbmcgYW5kIHdpbGwgYXR0YWNoIGl0IGhlcmUuIAo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI3OTY2Ij4yNzk2NjwvYT46IApJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaW4gRXhwbG9yZXJNYW5hZ2VyIHdoZW4gdHJ5aW5nIHRvIHVzZSB0aGUgUHJvamVjdHMgbW9kdWxlIHdpdGggdGhlIFBsYXRmb3JtICAgICAgICAgIDwvYj4KPEJMT0NLUVVPVEU+CkkgZG93bmxvYWRlZCB0aGUgMy40IHBsYXRmb3JtIHJlbGVhc2UgZGF0ZWQgCjkvMjcvMjAwMiwgYW5kIHdoaWxlIGluIHRoZSBwcm9jZXNzIG9mIGFkZGluZyAKdGhlIG1vZHVsZXMgSSBuZWVkLCBJIHJhbiBpbnRvIGEgcHJvYmxlbSB3aXRoIAp0aGUgUHJvamVjdHMgbW9kdWxlLS1JIHRyaWVkIGJvdGggdmVyc2lvbnMgMS44IAphbmQgMS45LCBhbmQgSSBnZXQgYSBmYXRhbCBleGNlcHRpb24gImNhbm5vdCAKaGF2ZSBudWxsIHJvb3QgY29udGV4dCIuIEFzIEkgdW5kZXJzdGFuZCwgaXQsIAp0aGlzIGlzIHRoZSBwbGF0Zm9ybSByZWxlYXNlIGJhc2VkIG9uIE5CMy40LCAKc28gdGhpcyBwcm9qZWN0cyBtb2R1bGUgc2hvdWxkIHdvcmssIGJlY2F1c2UgCml0IGNhbWUgZnJvbSBteSBOQjMuNCBJREUgaW5zdGFsbGF0aW9uLiBJJ2xsIAphdHRhY2ggdGhlIElERSBsb2cuCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXInPjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI5NzY4Ij4yOTc2ODwvYT46IApOUEUgd2hlbiBpY29uIGZvciBhbiBhY3Rpb24gaXMgbWlzc2luZyAgICAgICAgICA8L2I+CjxCTE9DS1FVT1RFPgpBZnRlciBpbnN0YWxsaW5nIHRoZSBqaW5kZW50LWludGVncmF0aW9uLW1vZHVsZSwgSQpnZXQgYSBOdWxsUG9pbnRlckV4Y2VwdGlvbiwgd2hlbiBJIHRyeSB0byBvcGVuIHRoZQpUb29scy1NZW51CjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSJ0YWJsZXIiPjx0ZCBjb2xzcGFuPSIyIj6goKCgPC90ZD48L3RyPgoKCjx0ciBjbGFzcz0ndGFibGVjYmcnPjx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj48dGJvZHk+PHRyPjx0ZCBhbGlnbj0iY2VudGVyIj48ZGl2CmFsaWduPSJjZW50ZXIiPjxiPjxhIG5hbWU9J1Byb3BlcnRpZXMnPjxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIGhyZWY9IiNodHRwczovL25ldGJlYW5zLm9yZy9zb3VyY2UvYnJvd3NlL3Byb3BlcnRpZXMvIj5wcm9wZXJ0aWVzPC9hPjwvYT48L2I+PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L3RkPjwvdHI+Cjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZCBiZ2NvbG9yPScjRUVFQkM2JyB3aWR0aD0iMjAiIHJvd3NwYW49IjEiPqCgoKA8L3RkPjx0ZD4KPGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9Mjk2MjciPjI5NjI3PC9hPjoKTm9TdWNoTWV0aG9kIGluIFByb3BlcnRpZXNQYXJzZXIuamF2YSB1bmRlciBKREsgMS4zPC9CPgo8QkxPQ0tRVU9URT4KVGhlIGVycm9yIGlzIHJhaXNlZCBvbiBzdGFydHVwIGluClByb3BlcnRpZXNQYXJzZXIucmVhZE5leHRFbGVtIChsaW5lIDE5NCksIGZ1bGwKc3RhY2sgdHJhY2UgYXR0YWNoZWQuCgpQcmlvcml0eSBpcyBQMSBiZWNhdXNlIElERSBkb2Vzbid0IHN0YXJ0IGF0IGFsbC4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9InRhYmxlciI+PHRkIGNvbHNwYW49IjIiPqCgoKA8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlY2JnJz48dGQgY29sc3Bhbj0iMiI+PHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+PHRib2R5Pjx0cj48dGQgYWxpZ249ImNlbnRlciI+PGRpdgphbGlnbj0iY2VudGVyIj48Yj48YSBuYW1lPSdUb21jYXRpbnQnPjxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIGhyZWY9IiNodHRwczovL25ldGJlYW5zLm9yZy9zb3VyY2UvYnJvd3NlL3RvbWNhdGludC8iPnRvbWNhdGludDwvYT48L2E+PC9iPjwvZGl2PjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC90ZD48L3RyPgo8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQgYmdjb2xvcj0nI0VFRUJDNicgd2lkdGg9IjIwIiByb3dzcGFuPSIxIj6goKCgPC90ZD48dGQ+CjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2NTcwIj4yNjU3MDwvYT46Ck51bGxQb2ludGVyRXhjZXB0aW9uIHdoZW4gc3RhcnRpbmcgdXA8L0I+CjxCTE9DS1FVT1RFPgp5b3UgdXNlIGEgYmFkIHppcCB1bnBhY2tpbmcgU1cKCnlvdXIgU1cgZGVsZXRlcyBlbXB0eSBkaXJzIGZyb20gdGhlIElERV9JTlNUQUxMQVRJTi56aXAKCmNoZWNrIGZvciBleGFtcGxlLCBpZiB0aGUgImlkZV9pbnN0YWxsYXRpb25fZGlyXHRvbWNhdDQwNApcY29tbW9uXGNsYXNzZXMiIGV4aXN0cyAodGhpcyBmb2xkZXIgaXMgZW1wdHkpCgppZiBub3QsIGNoYW5nZSBvciByZW9wdGlvbiB5b3VyIFNXCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSJ0YWJsZXIiPjx0ZCBjb2xzcGFuPSIyIj6goKCgPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZWNiZyc+PHRkIGNvbHNwYW49IjIiPjx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPjx0Ym9keT48dHI+PHRkIGFsaWduPSJjZW50ZXIiPjxkaXYKYWxpZ249ImNlbnRlciI+PGI+PGEgbmFtZT0nVUknPjxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIGhyZWY9IiNodHRwczovL25ldGJlYW5zLm9yZy9zb3VyY2UvYnJvd3NlL3VpLyI+dWk8L2E+PC9hPjwvYj48L2Rpdj48L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvdGQ+PC90cj4KPHRyIGNsYXNzPSd0YWJsZXJiZyc+PHRkIGJnY29sb3I9JyNFRUVCQzYnIHdpZHRoPSIyMCIgcm93c3Bhbj0iNyI+oKCgoDwvdGQ+PHRkPgo8Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIgCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNTUxNCI+MjU1MTQ8L2E+OgpNaXNzaW5nIGRlc2NyaXB0aW9ucyBmb3Igd2VsY29tZSBtb2R1bGU8L0I+CjxCTE9DS1FVT1RFPgpUaGlzIG1vZHVsZSBkb2VzIG5vdCBoYXZlIGEgc2hvcnQgbm9yIGxvbmcKZGVzY3JpcHRpb24gaW4gdGhlIFNldHVwIFdpemFyZCdzIG1vZHVsZQppbnN0YWxsYXRpb24gcGFuZWwuPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcic+PHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjU2MTEiPjI1NjExPC9hPjogClNvbWUgaW1hZ2VzIChidWxsZXRzLCB2ZXJ0aWNhbCBsaW5lKSBpbiB3ZWxjb21lIHNjcmVlbiBhcmUgbm90IHRyYW5zcGFyZW50ICAgICAgICAgIDwvYj4KPEJMT0NLUVVPVEU+Cgo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2MDExIj4yNjAxMTwvYT46IApJMThOIC0gIk5leHQiIGluIFRpcHMgUGFuZWwgb2YgV2VsY29tZSBTY3JlZW4gaXMgbm90IGxvY2FsaXphYmxlICAgICAgICAgIDwvYj4KPEJMT0NLUVVPVEU+Cgo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyJz48dGQ+PGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNjAyMiI+MjYwMjI8L2E+OiAKSTE4TiAtICJXZWxjb21lIFNjcmVlbiIgaW4gc2V0dXAgd2l6YXJkIG1vZHVsZSBsaXN0aW5ncyBub3QgZnJvbSBidW5kbGUgZmlsZSAgICAgICAgICA8L2I+CjxCTE9DS1FVT1RFPgpJbiB0aGUgbW9kdWxlcyBsaXN0aW5nIG9mIG9wdGlvbnMgYW5kIHNldHVwCndpemFyZCwgdGhlIHdvcmQgV2VsY29tZSBTY3JlZW4gaXMgbm90IGxvY2FsaXphYmxlCmR1ZSB0byBpdHMgdmFsdWUgbm90IGJlaW5nIGluIGFuIE9wZW5JREUga2V5CmluIGJ1bmRsZSBmaWxlIG9mIHdlbGNvbWUuamFyLgoKQWxzbywgdGhlcmUgaXMgbm90IGEgZGVzY3JpcHRpb24gaW4gdGhlIHNldHVwIAp3aXphcmQncyBkZXNjcmlwdGlvbiBmaWVsZCBmb3IgaXQuCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXJiZyc+PHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjcwMzAiPjI3MDMwPC9hPjogCkkxOE4gLSB3ZWxjb21lIHdpbmRvdyBub3QgZnVsbHkgbG9jYWxpemFibGUgICAgICAgICAgPC9iPgo8QkxPQ0tRVU9URT4KSW4gd2VsY29tZSB3aW5kb3csIG5vdCBhbGwgbGFiZWxzL3RleHQgY29tZQpmcm9tIGh0bWwgb3IgYnVuZGxlIGZpbGVzIHdpdGhpbiB3ZWxjb21lLmphcgoKUmljaGFyZCBtZW50aW9uZWQgdGhhdCB0aGUgdGhpcmQgY29sdW1uIGlzIGZyb20KZ2lmcyBpbnN0ZWFkLCBidXQgZm9yIGZmaiBsb2NhbGl6YXRpb24sIHRoaXMKaW5mb3JtYXRpb24gd291bGQgbmVlZCB0byBiZSBpbiBidW5kbGUgb3IgaHRtbApmaWxlcy4KCkFsc28sIHNvbWUgb2YgdGhlIGxpbmtzIHVuZGVyIGhlbHAgZG8gbm90IHNob3cKZnVsbHkgd2hlbiBwc2V1ZG8gdHJhbnNsYXRlZCAtIHRoYXQgaXMsIHRoZWlyCndpbmRvdyBkb2VzIG5vdCByZXNpemUgdG8gZml0OyB1c2VyIHNob3VsZCBub3QKbmVlZAp0byByZXNpemUgaW4gb3RoZXIgbG9jYWxlIGlmIHRoZSB3aW5kb3cgc2hvd3MKZnVsbHkKaW4gQyBsb2NhbGUuCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXInPjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI3NjMwIj4yNzYzMDwvYT46IApJMThOLUltcG9zc2libGUgdG8gc2V0IGRpZmZlcmVudCBmb250IGZvciAiTmV4dCIgYnV0dG9uIGluIFdlbGNvbWUgICAgICAgICAgPC9iPgo8QkxPQ0tRVU9URT4KCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXJiZyc+PHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjkzODMiPjI5MzgzPC9hPjogCk5ldGJlYW5zIDMuNC4xIFNwbGFzaCBpcyB1Z2x5ICAgICAgICAgIDwvYj4KPEJMT0NLUVVPVEU+Cgo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0idGFibGVyIj48dGQgY29sc3Bhbj0iMiI+oKCgoDwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVjYmcnPjx0ZCBjb2xzcGFuPSIyIj48dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj48dGJvZHk+PHRyPjx0ZCBhbGlnbj0iY2VudGVyIj48ZGl2CmFsaWduPSJjZW50ZXIiPjxiPjxhIG5hbWU9J1VzZXJzR3VpZGUnPjxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIGhyZWY9IiNodHRwczovL25ldGJlYW5zLm9yZy9zb3VyY2UvYnJvd3NlL3VzZXJzZ3VpZGUvIj51c2Vyc2d1aWRlPC9hPjwvYT48L2I+PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L3RkPjwvdHI+Cjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZCBiZ2NvbG9yPScjRUVFQkM2JyB3aWR0aD0iMjAiIHJvd3NwYW49IjIiPqCgoKA8L3RkPgo8dGQ+CjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI5MTk0Ij4yOTE5NDwvYT46IApsaW5raW5nIHRvIGFudCBmYXEgYW5kIGZpeGluZyBhbnQgdmVyc2lvbiBudW1iZXJzPC9iPgo8QkxPQ0tRVU9URT4KQWRkcyBhIGxpbmsgdG8gdGhlIEFudCBGQVEgaW4gdGhlIEJ1aWxkaW5nIFdpdGggQW50IGhlbHAgcGFnZQo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyJz48dGQ+PGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9Mjc0OTgiPjI3NDk4PC9hPjogCm1lcmdpbmcgcmV2aXNpb25zIGZyb20gdHJ1bmsgZm9yIDMuNC4xIHJlbGVhc2UKPC9iPjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0idGFibGVyIj48dGQgY29sc3Bhbj0iMiI+oKCgoDwvdGQ+PC90cj4KCgo8dHIgY2xhc3M9J3RhYmxlY2JnJz48dGQgY29sc3Bhbj0iMiIgPjx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPjx0Ym9keT48dHI+PHRkIGFsaWduPSJjZW50ZXIiPjxkaXYKYWxpZ249ImNlbnRlciI+PGI+PGEgbmFtZT0nVmNzQ29yZSc+PGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIgCmhyZWY9IiNodHRwczovL25ldGJlYW5zLm9yZy9zb3VyY2UvYnJvd3NlL3Zjc2NvcmUvIj52Y3Njb3JlPC9hPjwvYT48L2I+PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L3RkPjwvdHI+Cjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZCBiZ2NvbG9yPScjRUVFQkM2JyB3aWR0aD0iMjAiIHJvd3NwYW49IjkiPqCgoKA8L3RkPgo8dGQ+PGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNTAwOCI+MjUwMDg8L2E+OiAKVGhlIG91dHB1dCB0YWIgaW4gT3V0cHV0IFdpbmRvdyBpcyBub3QgbWFkZSB2aXNpYmxlIHdoZW4gYW4gZXJyb3Igb2N1cnJzCjwvQj4KPEJMT0NLUVVPVEU+ClRoZSBvdXRwdXQgdGFiIGluIE91dHB1dCBXaW5kb3cgc2hvdWxkIGF1dG9tYXRpY2FsbHkgYmVjb21lIHZpc2libGUgCndoZW4gYW4gZXJyb3Igb3V0cHV0IG9mIGEgY29tbWFuZCBpcyBiZWluZyBwcmludGVkIGludG8gaXQuCjxwIC8+CiJWZXJzaW9uaW5nIiBvdXRwdXQgdGFiIGNyZWF0ZWQuIEl0IGlzIHVzZWQgZm9yIG91dHB1dCBvZiBWQ1MgY29tbWFuZHMgaW5zdGVhZCBvZgp0aGUgc3RhbmRhcmQgIk91dHB1dCIgdGFiLiBOb3cgd2UncmUgYWJsZSB0byBtYWtlIHZpc2libGUgdGhpcyAiVmVyc2lvbmluZyIgCnRhYiB3aGVuIGEgY29tbWFuZCBmYWlscy4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcic+PHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjUzNjQiPjI1MzY0PC9hPjogCk5ldGJlYW5zIDMuNCBCZXRhIDIgQ1ZTIEV4dGVybmFsIENsaWVudCBkb2VzIG5vdCBSZWZyZXNoIGNvcnJlY3RseSAgICAgICAgICA8L2I+CjxCTE9DS1FVT1RFPgpJJ3ZlIHNldCB0aGUgZXh0ZXJuYWwgQ1ZTIHByb3BlcnRpZXMgdG8gbWFrZSBzdXJlCnRoYXQgdGhlIFJlZnJlc2ggb2NjdXJzIHdoZW4gdGhlIGRpcmVjdG9yeSBpcwpvcGVuZWQsIGJ1dCB0aGUgZmlsZXMgYXJlIG5vdCBiZWluZyByZWZyZXNoZWQKcHJvcGVybHkuIElmIGEgZGlyZWNvdHJ5IGlzIG9wZW5lZCB0aGF0IGNvbnRhaW5zCnN1Yi1kaXJlY3RvcmllcyBhcyB3ZWxsIGFzIHNvdXJjZSBmaWxlcywgdGhlCnNvdXJjZSBmaWxlcyBpbiB0aGF0IGRpcmVjdG9yeSBkb24ndCBnZXQKcmVmcmVzaGVkLiBUaGUgcmVmcmVzaCBvY2N1cnMgaWYgSSBtYW51YWxseQpyZWZyZXNoIHRob3NlIGZpbGVzLCBob3dldmVyLiBBbHNvLCB0aGUgZm9sZGVycwp0aGVtc2VsdmVzIGFsd2F5cyAKc2hvdyAiTG9jYWwiIGluc3RlYWQgb2YgdGhlIENWUyB2ZXJzaW9uCmluZm9ybWF0aW9uIHVubGVzcyBhIGNoZWNrb3V0IGlzIGRvbmUgb24gdGhhdCBmb2xkZXIuCjxicj4tLS08YnI+CkNhY2hlRGlyLmFkZENoaWxkTmFtZXMoKSBhZGRlZCBzbyB0aGF0IHRoZSBkaXJlY3RvcnkgY2FuIGJlIGluaXRpYWxpemVkIApmcm9tIHRoZSBkaXNrIGNhY2hlIHdoZW4gbmVjZXNzYXJ5LgpBIG5ldyBwcm9wZXJ0eSBsb2NhbCBhZGRlZCB0byBDYWNoZUZpbGUuUGVyc2lzdGVudERhdGEuClZjc0NhY2hlLmxvb2t1cENhY2hlRGlyKCkgYWRkZWQgdG8gZmluZCBhbiBhbHJlYWR5IHJlYWQgZGlyZWN0b3J5LgpBYmlsaXR5IHRvIHJlYWQganVzdCBjYWNoZSBmaWxlIG5hbWVzIGZyb20gdGhlIGRpc2sgY2FjaGUgYWRkZWQgdG8gClZjc0NhY2hlRGlyICZhbXA7IFZjc0NhY2hlRmlsZS4KRXhjbHVzaXZlIGxvY2tpbmcgZm9yIGNhY2hlIGZpbGVzIGltcGxlbWVudGVkIHRvIHByZXZlbnQgY29uY3VycmVudCAKYWNjZXNzIHRvIHRoZSBmaWxlIGNvbnRlbnQgYW5kIG11dHVhbCByZXdyaXRpbmdzLgo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZD48Yj4KIzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjU5NzgiPjI1OTc4PC9hPjogClZhcmlhYmxlcyBhcmUgbm90IGV4cGFuZGVkIGluIHN0YXR1cyBiYXIgYW5kIG5hbWUgb2YgY29tbWFuZHMuPC9iPgo8QkxPQ0tRVU9URT4KUnVudGltZSB2YXJpYWJsZXMgc3Vic3RpdHV0aW9uIGlzIG5vdCBkb25lIGluCnN0YXR1cyBiYXIgb2YgSURFIGFuZCBjb21tYW5kIG5hbWVzIHN0b3JlZCBpbgpoaXN0b3J5IG9mIHJhbiBjb21tYW5kcy4gSXQgY29uY2VybnMgY29tbWFuZHMgbGlrZQoiVlNTfFNldCBQYXNzd29yZCIgb3IgIkNWU3xMb2dpbiIuCjxicj4tLS08YnI+CldlIHN0b3JlIHRoZSBmaWxlc3lzdGVtIHZhcmlhYmxlcyBpbiB0aGUgVmNzQ29tbWFuZFdyYXBwZXIgc28gdGhhdCB0aGV5IGNhbgpiZSBlYXNpbHkgdXNlZCBmb3IgZXhwYW5zaW9uIG9mIGNvbW1hbmQgZGlzcGxheSBuYW1lIGluIHJlcG9ydHMuIApBbHNvIFZjc1J1bnRpbWVDb21tYW5kcyBleHBhbmRzIHRoZSBkaXNwbGF5IG5hbWUgd2l0aCBjdXJyZW50IHZhcmlhYmxlcy4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcic+PHRkPjxiPgojPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIgCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNjQ5MSI+MjY0OTE8L2E+OgpTeXN0ZW1BY3Rpb24gZG9lcyBub3QgZGVjbGFyZSBzZXJpYWxWZXJzaW9uVUlEPC9iPgo8QkxPQ0tRVU9URT4KQWZ0ZXIgcmVzdGFydGluZyAzLjRSQzEsIEkgc2F3IHRoZSBmb2xsb3dpbmcgaW4gCnRoZSBjb25zb2xlOgo8YnI+Ci0tLS0tLS0tLS0tCjxicj4KU2VyaWFsaXphYmxlIGNsYXNzIApvcmcub3BlbmlkZS51dGlsLmFjdGlvbnMuU3lzdGVtQWN0aW9uIGRvZXMgbm90IApkZWNsYXJlIHNlcmlhbFZlcnNpb25VSUQgZmllbGQuIEVuY291bnRlcmVkIHdoaWxlIApzdG9yaW5nOiAuLi4KPGJyPgpJIHNraW1tZWQgdGhhdCBidWcgYW5kIGl0cyBmcmllbmRzIGFuZCBkaWRuJ3QgCmZvbGxvdyBpdCBhbGwsIGJ1dCBhc3N1bWUgeW91IHdhbnQgdGhpcyBmaXhlZCBvciAKeW91IHdvdWxkbid0IGJlIHByaW50aW5nIG91dCB0aGUgbWVzc2FnZS4KRmVlbCBmcmVlIHRvIGNsb3NlIHRoaXMgaWYgaXQncyBub3QgcmVhbGx5IGEgYnVnLgo8YnI+ClBsZWFzZSBzdG9yZSBuYW1lcyBvZiBTeXN0ZW1BY3Rpb24gY2xhc3Nlcywgbm90IHRoZSBpbnN0YW5jZXMKdGhlbXNlbHZlcyB3aGljaCBhcmUgbm90IHJlYWxseSBkZXNpZ25lZCB0byBiZSBzZXJpYWxpemFibGUuCjxicj4tLS08YnI+ClByZXZlbnQgc2VyaWFsaXphdGlvbiBvZiBWY3NBY3Rpb25TdXBwb3J0ZXIgd2l0aCB0aGUgZmlsZXN5c3RlbS4KQWxzbyBkbyBub3Qgc2VyaWFsaXplIHN3aW5nIG9iamVjdHMgaW4gR2VuZXJhbENvbW1hbmRBY3Rpb24uCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKCjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZD48Yj4KIzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjY1NTMiPjI2NTUzPC9hPjoKUmFyZSBkZWFkbG9jayBpbiBWQ1MgY2FjaGUuIDwvQj4KPEJMT0NLUVVPVEU+CldoZW4gZGVjaWRpbmcgd2hldGhlciB0byBjcmVhdGUgYmFja3VwIGZpbGUgb3Igbm90LCBjaGVjayBmb3IKdGhlIGltcG9ydGFudG5lc3MgYXQgbGFzdC4KRHVlIHRvIGEgc2FmZXR5IGNoYW5nZSBpbiBEZWZhdWx0QXR0cmlidXRlcywgLm5iYXR0cnN+IGlzIHNhdmVkIGFuZCBsYXRlcgpyZW5hbWVkIC5uYmF0dHJzfiB0byAubmJhdHRycy4KVGhpcyBoYXMgY2F1c2VkLCB0aGF0ICdpc0lERVNldHRpbmdzRmlsZSgpJyByZXR1cm5zIGZhbHNlIGFsd2F5cwphbmQgYSBkZWFkbG9jayBjb3VsZCBoYXBwZW4gd2hlbiBjYWxsaW5nIGlzSW1wb3J0YW50KCkuCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXInPjx0ZD48Yj4KIzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNjYxNCI+MjY2MTQ8L2E+LAojPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI5Mjk1Ij4yOTI5NTwvYT4sCiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjkyOTgiPjI5Mjk4PC9hPjoKU2hvdyB0aGUgVkNTIHJldmlzaW9ucyBpbnN0ZWFkIG9mIHRoZSBpbnRlcm5hbCB1c2VkIHJldmlzaW9ucy4KPC9iPgo8QkxPQ0tRVU9URT4KU29tZSBWQ1MgaW1wbGVtZW50YXRpb25zLCAoVlNTLCBDTVMgZm9yIE9wZW5WTVMsIGV0Yy4pIGRvCm5vdCB1c2UgYSAiLm4iIGZvcm1hdCByZXZpc2lvbiBudW1iZXIuIFRoYXQgaXMsIHJldmlzaW9uCm51bWJlcnMgYXJlIHBvc2l0aXZlIGludGVnZXJzIG9ubHkuPGJyLz4KV2hlbiB3cml0aW5nIGEgUmV2aXNpb25MaXN0R2V0dGVyIGNsYXNzIGZvciBhIGdlbmVyaWMgVkNTCm1vZHVsZSwgaXQgaXMgbmVjZXNzYXJ5IHRvIGFkZCBhICIuMCIgdG8gdGhlIHJldmlzaW9uIGlmCnRoZSBWQ1Mgb25seSB1c2VzIGludGVnZXJzLiBJZiB0aGlzIGlzIG5vdCBkb25lLCB0aGUKVmVyc2lvbmluZyBFeHBsb3JlciBkb2VzIG5vdCB3b3JrIHByb3Blcmx5IChleHBhbmRpbmcgYSBub2RlIGhhcyBubwplZmZlY3QpLjxici8+CkhhdmluZyBhICIuMCIgZm9sbG93aW5nIGFsbCByZXZpc2lvbnMgaW4gdGhlIFZlcnNpb25pbmcKRXhwbG9yZXIgY2F1c2VzIGNvbmZ1c2lvbiBmb3IgdXNlcnMgb2YgdGhhdCBWQ1MgYW5kIGRvZXNuJ3QKbG9vayB2ZXJ5IGdvb2QuIAo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZD48Yj4KIzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9Mjc4OTAiPjI3ODkwPC9hPjoKRGVhZGxvY2sgaW4gdmNzIGNhY2hpbmcsIHdoZW4gc3dpdGNoaW5nIHByb2plY3RzPC9iPgo8QkxPQ0tRVU9URT4KamRrMS40LjEKSXQgaXMgbm90IHJlcHJvZHVjaWJsZS4gSXQgaGFwcGVuZWQgdG8gbWUgd2hlbgpzd2l0Y2hpbmcgcHJvamVjdHMuCjxicj4tLS08YnI+CkNvbnN0cnVjdCB0aGUgY2FjaGUgZmlsZXMgb3V0c2lkZSBvZiB0aGUgY2FjaGUgZmlsZSBsb2NrIHdoZW4gcmVhZGluZyBmcm9tIGRpc2suCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXInPjx0ZD4KPGI+IzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjgyMzgiPjI4MjM4PC9hPjoKSVRFICYgQ01FICh3aGVuIG1vdXRpbmcgRlNzKTwvYj4KPEJMT0NLUVVPVEU+CkkgdG9vayB0b2RheXMgYnVpbGQgYW5kIHN0YXJ0ZWQgaXQgd2l0aCBjbGVhciB1c2VyZGlyLgpJIG1vdW50ZWQgMSBKYXZhQ1ZTRlMsCmludm9rZWQgVXBkYXRlIFdpemFyZCBhbmQgdXBkYXRpbmcgZmV3IG1vZGVsdXMuLi4uCmR1cmluZyB0aGlzCkkgZXhlY3V0ZWQgb25lIGNsYXNzIHdoaWNoIGF1dG9tYXRpY2FseSBtb3VudHMKdmFyaW91cyBGU3MgdG8gc2V0IG15IENMQVNTUEFUSCwgZXRjLgpBZnRlciBpdCBhbmQgYWxzbyBVcGRhdGUgV2l6YXJkcyBmaW5pc2hlZCBJIGZvdW5kCmluIGNvbnNvbGUKc3RhY2t0cmFjZXMgb2YgSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiBhbmQKQ29uY3VycmVudE1vZGlmaWNhdGlvbkV4Y2VwdGlvbgp3aGljaCBhcmUgYXR0YWNoZWQgaW4gb25lIGZpbGUKPGJyPi0tLTxicj4KVGhlIGFjY2VzcyB0byB0aGUgbGlzdCBvZiBDYWNoZUhhbmRsZXJFdmVudCBsaXN0ZW5lcnMgaXMgc3luY2hyb25pemVkLgo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZD48Yj4jPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI5Mjk2Ij4yOTI5NjwvYT46IApQYXRjaCBmb3IgT3BlblZNUyB0byB3b3JrIGFyb3VuZCBwcm90ZWN0aW9uIGlzc3VlICAgICAgICAgIDwvYj4KPEJMT0NLUVVPVEU+CldlIG5lZWQgdG8gbWFrZSAyIGNoYW5nZXMgdG8gCkNob29zZURpckRpYWxvZygpIGluIHZjc2NvcmUgdG8gd29yawphcm91bmQgYSBmaWxlIHByb3RlY3Rpb24gcHJvYmxlbSB3aXRoIApKYXZhIG9uIE9wZW5WTVMuIFRoZSBjaGFuZ2VzIGFyZQphcyBmb2xsb3dzOiAuLi4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+CgoKPHRyIGNsYXNzPSJ0YWJsZXIiPjx0ZCBjb2xzcGFuPSIyIj6goKCgPC90ZD48L3RyPgoKCjx0ciBjbGFzcz0ndGFibGVjYmcnPjx0ZCBjb2xzcGFuPSIyIiA+PHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+PHRib2R5Pjx0cj48dGQgYWxpZ249ImNlbnRlciI+PGRpdgphbGlnbj0iY2VudGVyIj48Yj48YSBuYW1lPSdWY3NHZW5lcmljJz48YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiBocmVmPSIjaHR0cHM6Ly9uZXRiZWFucy5vcmcvc291cmNlL2Jyb3dzZS92Y3NnZW5lcmljLyI+dmNzZ2VuZXJpYzwvYT48L2E+PC9iPjwvZGl2PjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC90ZD48L3RyPgo8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQgYmdjb2xvcj0nI0VFRUJDNicgd2lkdGg9IjIwIiByb3dzcGFuPSI5Ij6goKCgPC90ZD4KPHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI1MTc1Ij4yNTE3NTwvYT46CkNWUywgUFZDUzogQ2FuJ3Qgc2VlIG5ldyBiYXNpYyB2YXJpYWJsZS4KPC9iPgo8QkxPQ0tRVU9URT4KPHU+RGVzY3JpcHRpb246PC9VPjxici8+CgpUaGlzIGlzIHF1aXRlIGludGVyZXN0aW5nIGJ1Zy4gVXNlcnMgY2FuJ3QgY3JlYXRlCmJhc2ljIHZhcmlhYmxlcyB0byBDVlMgb3IgUFZDUyBmaWxlc3lzdGVtcyBvciBhdApsZWFzdCB0aGV5IGFyZSBub3QgdmlzaWJsZSBpbiB0aGUgY3VzdG9taXplci4gVGhlCm1vc3Qgc3RyYW5nZSBpcyB0aGF0IGl0IHNlZW1zIGxpa2UgVlNTIHdhcyBub3QKYWZmZWN0ZWQuIExvb2tzIGxpa2UgcmVncmVzc2lvbiA/CjxwLz4KPHU+U3RlcHMgdG8gcmVwcm9kdWNlOjwvVT4KPG9sPgo8bGk+SW52b2tlICJWZXJzaW9uaW5nfE1vdW50IFZlcnNpb24gQ29udHJvbHxHZW5lcmljIFZDUyIuPC9MST4KPGxpPlNlbGVjdCBDVlMgcHJvZmlsZSBhbmQgcHVzaCAiTmV4dCA+IiBidXR0b24uPC9MST4KPGxpPkNsaWNrICJFZGl0IFZhcmlhYmxlcy4uLiIgYW5kIHJpZ2h0IGNsaWNrICJCYXNpYyIgbm9kZS48L0xJPgo8bGk+Q2hvb3NlICJBZGQgVmFyaWFibGUiLCB0eXBlICJOYW1lIiBhbmQgY2xpY2sgIk9LIi48L0xJPgo8bGk+UHVzaCAiRmluaXNoIiBhbmQgaW52b2tlIHRoZSBjdXN0b21pemVyIGFmdGVyCnRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQgaW50byBleHBsb3Jlci48L0xJPgo8bGk+VGhlcmUgaXMgbm8gIk5hbWU6IiB0ZXh0ZmllbGQgaW4gaXQuPC9saT4KPC9PTD4KPGJyPi0tLTxicj4KQ29uc3RydWN0IHRoZSBjb25maWd1cmF0aW9uIGlucHV0IGRlc2NyaXB0b3Igb25seSBpZiB0aGUKZGVzY3JpcHRvciBzdHJpbmcgcmVwcmVzZW50YXRpb24gaXMgbm9uLWVtcHR5LgpUaGlzIHByZXZlbnRzIGZyb20gY3JlYXRpbmcgYW5kIGVtcHR5IHBhbmVsIGZyb20gdGhlIGVtcHR5IGlucHV0IGRlc2NyaXBvci4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcic+PHRkPjxiPgojPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIgCmhyZWY9Imh0dHBzOi8vbmV0YmVhbnMub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yNTk1OSI+MjU5NTk8L2E+OgpMYXp5IGVuYWJsaW5nIG9mICJTYXZlIiBwcm9maWxlIGJ1dHRvbi4gPC9CPgo8QkxPQ0tRVU9URT4KSXQncyBxdWl0ZSBhbm5veWluZyB0aGF0ICJTYXZlIiBidXR0b24gZ2V0cwplbmFibGVkIG9uIGxvc3QgZm9jdXMgZXZlbnQgaW5zdGVhZCBvZiBpdHMKbm9uLWVtcHR5IHZhbHVlLiBJIG1lYW4gdGhlIGJ1dHRvbiB3aGVuIHNhdmluZyBvd24KcHJvZmlsZS4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQ+PGI+CiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2MDM0Ij4yNjAzNDwvYT46IApQVkNTOiBGaWxlc3lzdGVtIHVudXNhYmxlIGFmdGVyIHNwZWNpZmljIHdvcmtmbG93LiA8L2I+CjxCTE9DS1FVT1RFPgo8dT5EZXNjcmlwdGlvbjo8L3U+PGJyLz4KVGhlcmUgaXMgYSBzcGVjaWFsIHdvcmtmbG93IHRoYXQgZ2V0cyBQVkNTIGZpbGVzeXN0ZW0gaW50byB1bnVzYWJsZSBzdGF0ZSAKYmVjYXVzZSBvZiBuZXZlciBlbmRpbmcgbG9vcCBvZiBleGNlcHRpb25zLiAKVGhlIG9ubHkgd29ya2Fyb3VuZCBpcyB0byByZXN0YXJ0IElERS4gVGFrZSBhIGxvb2sgYXQgdGhlIGF0dGFjaG1lbnQgCmZvciBkZXRhaWxzIG9yIHJlYWQgYmVsb3cuCjxwLz4KPHU+U3RlcHMgdG8gcmVwcm9kdWNlOjwvdT4KPG9sPgo8bGk+TW91bnQgUFZDUyBmaWxlc3lzdGVtIGFuZCBpbnZva2UgaXRzIGN1c3RvbWl6ZXIuPC9MST4KPGxpPlN3aXRjaCB0byAiRW52aXJvbm1lbnQiIHRhYiBhbmQgcHVzaCAiSW5zZXJ0IiBidXR0b24uPC9MST4KPGxpPlR5cGUgIkFIT0oiIGFzIG5hbWUgYW5kIHB1c2ggIk9LIiBidXR0b24uPC9MST4KPGxpPlN3aXRjaCB0byAiQWR2YW5jZWQiIHRhYiwgcHVzaCAiRWRpdCBWYXJpYWJsZXMiIGFuZCAiT0siLjwvTEk+CjxsaT5SZXBlYXQgc3RlcHMgMiBhbmQgMyB3aXRoICJDRCIgYXMgbmFtZSBvZiBuZXcgdmFyaWFibGUuPC9MST4KPGxpPkV4Y2VwdGlvbnMgd2lsbCBiZSB0aHJvd24uPC9saT4KPC9PTD4KPHAvPgpGaWx0ZXIgb3V0IGFsbCB2YXJpYWJsZXMgd2l0aCBudWxsIHZhbHVlcyBhZnRlciB0aGUgYXV0b2ZpbGwgcHJvY2Vzcy4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcic+PHRkPjxiPgojPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2MTc2Ij4yNjE3NjwvYT46IApUZXh0IGRpZmYgZW1wdHkgYWZ0ZXIgc3dpdGNoIGZyb20gZ3JhcGhpY2FsIGRpZmYgPC9iPgo8QkxPQ0tRVU9URT4KSSB0cmllZCB0byBydW4gZ3JhcGhpY2FsIGRpZmYgKGRpcmVjdGx5IGZyb20KY29udGV4dCBtZW51KSBhbiB0aGVuIEkgc3dpdGNoZWQgdG8gdG8gdGV4dCBkaWZmCnVzaW5nIGNvbWJvIG9uIHRvcCBvZiB0aGUgZm9ybS4gVGhlIHRleHR1YWwgZGlmZgpjb250YWluZWQganVzdCBpbmZvcm1hdGlvbiBhYm91dCBsaW5lcyB3aGVyZSB0aGUKY2hhbmdlIHdhcyBtYWRlLgoKVGV4dCBkaWZmIGZyb20gY29udGV4dCBtZW51IGlzIE9LLCBzbyB0aGUgcHJvYmxlbQpvY2N1cnMgb25seSB3aGVuIHN3aXRjaGluZyBmcm9tIGdyYXBoaWNhbCBkaWZmIHRvCnRleHQgZGlmZi4KPGJyLz4KQWRkIHRoZSB0ZXh0IG9mIHRoZSBkaWZmZXJlbmNlcyBhbHNvIGludG8gdGhlIGRhdGEgb3V0cHV0IG9mIHRoaXMgY29tbWFuZC4KVGhpcyBpcyBuZWNlc3NhcnkgZm9yIHRoZSBwYXJzZXIgc28gdGhhdCB0aGUgdGV4dCB3aWxsIGJlIGluY2x1ZGVkIGluIAp0aGUgRGlmZmVyZW5jZSBvYmplY3RzLgo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZD48Yj4KIzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjYxODgiPjI2MTg4PC9hPjoKQ1ZTOiBJdCB3b3VsZCBiZSBnb29kIHRvIGNoYWluICJSZW1vdmUiIGNvbW1hbmQgd2l0aCAiQ29tbWl0IjwvYj4KPEJMT0NLUVVPVEU+Ckl0IHdvdWxkIGJlIG5pY2UgdG8gaGF2ZSBhbHNvICJDVlN8UmVtb3ZlIiBjb21tYW5kCmNoYWluZWQgd2l0aCAiQ29tbWl0IiBzbyB0aGF0IGl0IGNhbiBiZSBkb25lIGluCm9uZSBzdGVwIGFzIHdpdGggIkFkZCIgY29tbWFuZC4gSSBtZWFuIHRoZQpjaGVja2JveCBsaWtlICJQcm9jZWVkIFdpdGggQ29tbWl0IElmIFJlbW92ZQpTdWNjZWVkcyIuCjxicj4tLS08YnI+ClRoZXJlIGlzIGEgcG9zc2liaWxpdHkgbm93IHRvIGRvIGNvbW1pdCByaWdodCBhZnRlciByZW1vdmUgY29tbWFuZC4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcic+PHRkPjxiPgojPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2NDEzIj4yNjQxMzwvYT46IAoiUmVmcmVzaCBUaW1lIiBpcyByZXNldCB0byBkZWZhdWx0IGluIGV2ZXJ5IElERSBzZXNzaW9uLiA8L2I+CjxCTE9DS1FVT1RFPgoiUmVmcmVzaCBUaW1lIEZvciBMb2NhbCBGaWxlcyBbbXNdIiBmaWxlc3lzdGVtCnByb3BlcnR5IGlzIHJlc2V0IHRvIGl0cyBkZWZhdWx0IHZhbHVlICgxNTAwMCkKd2hlbiBJREUgaXMgcmVzdGFydGVkLiBVc2VyIG11c3QgYWx3YXlzIHNldCBpdAptYW51YWxseSwgaWYgbmV3IElERSBzZXNzaW9uIGlzIHN0YXJ0ZWQuCjxici8+ClRoZSBuZXcgcmVmcmVzaCB0aW1lIHByb3BlcnR5IGRlZmluZWQgKFBST1BfVkNTX1JFRlJFU0hfVElNRSkuClRoaXMgcHJvcGVydHkgaXMgZmlyZWQgd2hlbiB0aGUgcmVmcmVzaCB0aW1lIGlzIGNoYW5nZWQuCjwvQkxPQ0tRVU9URT48L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlcmJnJz48dGQ+PGI+CiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI3MzUzIj4yNzM1MzwvYT46ClBWQ1M6IE5vIHdheSBob3cgdG8gc2V0dXAgVW5peCBzaGVsbCBpbnRlcnByZXRlci48L2I+CjxCTE9DS1FVT1RFPgo8dT5EZXNjcmlwdGlvbjo8L3U+PGJyLz4KVGhlcmUgaXMgbm8gd2F5IGhvdyB0byBzZXR1cCBVbml4IHNoZWxsCmludGVycHJldGVyIGluIFBWQ1MgcHJvZmlsZXMuIEFsdGhvdWdoLCB0aGVyZSBpcyBhCmxvdCBvZiB3b3JrYXJvdW5kcyB0aGV5IGFyZSBub3QgZWFzeSB0byBmaW5kLiBUaGlzCmlzIHNlcmlvdXMgcmVncmVzc2lvbiBpbiBmdW5jdGlvbmFsaXR5IGFuZCBJIHdvdWxkCnJlY29tbWVuZCBpdCBmb3IgMy40LjEuCjxwLz4KPHU+U3RlcHMgdG8gcmVwcm9kdWNlOjwvVT4KPG9sPgo8bGk+SW52b2tlICJWZXJzaW9uaW5nfE1vdW50IFZlcnNpb24KQ29udHJvbHxHZW5lcmljIFZDUyIuPC9saT4KPGxpPlVuY2hlY2sgIk9ubHkgU2hvdyBQcm9maWxlcyBDb21wYXRpYmxlIFdpdGggLi4uIi48L2xpPgo8bGk+U2VsZWN0ICJQVkNTIChXaW5kb3dzIDk1Lzk4L01FKSIgcHJvZmlsZS48L2xpPgo8bGk+VGhlcmUgd2lsbCBiZSBubyAiVW5peCBTaGVsbCIgZmllbGQgaW4gdGhlIGRpYWxvZy48L2xpPgo8L09MPgo8YnI+LS0tPGJyPgpVbml4IFNoZWxsIHZhcmlhYmxlIGFkZGVkIHRvIHRoZSBjb25maWd1cmF0aW9uIGlucHV0IGRlc2NyaXB0b3IgCmZvciBXaW45NS85OC9NRSBQVkNTIHByb2ZpbGVzLgo8L0JMT0NLUVVPVEU+CjwvdGQ+PC90cj4KCjx0ciBjbGFzcz0ndGFibGVyJz48dGQ+PGI+CiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI4MTU3Ij4yODE1NzwvYT46IApHZW5lcmljIFZDUyBOdWxsUG9pbnRlckV4Y2VwdGlvbgo8L2I+CjxCTE9DS1FVT1RFPgpIZXJlIGlzIHRoZSBOUEUgc3RhY2sgdHJhY2UgLSBJJ20gaGF2aW5nIGEgaGVsbCBvZiBhIHRpbWUgCnRyeWluZyB0byBnZXQgTmV0QmVhbnMgaW50ZWdyYXRlZCB3aXRoIFBWQ1MuICBJIGVpdGhlciBnZXQgCmNvbnN0YW50IE5QIGV4Y2VwdGlvbnMgb3IgdGhlIFBDTEkgY29tbWFuZHMgZmFpbC4KPGJyPi0tLTxicj4KSW5pdGlhbGl6ZSB0aGUgcmVmcmVzaGVyIGFmdGVyIEZTIGRlc2VyaWFsaXphdGlvbi4KT3B0aW1hbGl6ZSB0aGUgY2xhc3MgbG9hZGVyIHJldHJpZXZhbCB3aGVuIGxvYWRpbmcgYWN0aW9uIGNsYXNzZXMgZm9yIGNvbW1hbmRzLgpDaGVjayBmb3IgbnVsbCB2YXJpYWJsZSB2YWx1ZXMgdG8gYmUgbW9yZSByb2J1c3QuCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZXJiZyc+PHRkPjxiPiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IgpocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjkyOTciPjI5Mjk3PC9hPjogCkVtcHR5IFdvcmtpbmcgRGlyIHRleHQgYm94IG9uIE9wZW5WTVMgZG9lc24ndCB3b3JrIGNvcnJlY3RseSAgICAgICAgICA8L2I+CjxCTE9DS1FVT1RFPgpXZSBuZWVkIHRvIG1ha2UgYSBwZXJtYW5lbnQgY2hhbmdlIHRvIApWY3NDdXN0b21pemVyLmphdmEgaW4gdmNzZ2VuZXJpYwp0byBwcm9wZXJseSBoYW5kbGUgYW4gZW1wdHkgIldvcmtpbmcgCkRpciIgdGV4dCBib3ggb24gdGhlIEdlbmVyaWMgVkNTCk1vdW50IFdpemFyZCBvbiBPcGVuVk1TLiBUaGlzIGNoYW5nZSAKaXMgYXMgZm9sbG93czogLi4uCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSJ0YWJsZXIiPjx0ZCBjb2xzcGFuPSIyIj6goKCgPC90ZD48L3RyPgoKPHRyIGNsYXNzPSd0YWJsZWNiZyc+PHRkIGNvbHNwYW49IjIiPjx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPjx0Ym9keT48dHI+PHRkIGFsaWduPSJjZW50ZXIiPjxkaXYKYWxpZ249ImNlbnRlciI+PGI+PGEgbmFtZT0nV2ViJz48YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iI2h0dHBzOi8vbmV0YmVhbnMub3JnL3NvdXJjZS9icm93c2Uvd2ViLyI+d2ViPC9hPjwvYT48L2I+PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L3RkPjwvdHI+Cjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZCBiZ2NvbG9yPScjRUVFQkM2JyB3aWR0aD0iMjAiIHJvd3NwYW49IjEiPqCgoKA8L3RkPgo8dGQ+PGI+CiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2NjIwIj4yNjYyMDwvYT46Ck5CMy40IGRvZXMgbm90IHJlY29nbml6ZSBKU1AgZmlsZXMgaWYgdGhlIGZyZWVzdHlsZSBicm93c2VyIGlzIGluc3RhbGxlZDwvYj4KPEJMT0NLUVVPVEU+CjEuIENyZWF0ZWQgYSBuZXcgd2ViIG1vZHVsZS4KMi4gQWRkZWQgdGhyZWUgSlNQcyB0byB0aGUgd2ViIG1vZHVsZS4KMy4gRnJvbSB0aGUgVXBkYXRlIENlbnRlciwgaW5zdGFsbGVkIHRoZSBGcmVlIFN0eWxlIEJyb3dzZXIgbW9kdWxlCihpdCdzIGVpdGhlciBBbHBoYSBvciBCZXRhLCBkb24ndCByZW1lbWJlciB3aGljaCkuCjQuIEFmdGVyIHRoZSBJREUgcmVzdGFydGVkLCBteSBKU1BzIGhhZCBudWxsIGljb25zLgo1LiBGcm9tIHRoZSBPcHRpb25zIHdpbmRvdywgSSBkaXNhYmxlZCB0aGUgRnJlZSBTdHlsZSBCcm93c2VyIG1vZHVsZS4KNi4gQWZ0ZXIgZWl0aGVyIHJlc3RhcnRpbmcgdGhlIElERSBvciByZW1vdW50aW5nIHRoZSB3ZWIgbW9kdWxlLCB0aGUKSlNQIG5vZGVzIGFyZSBiYWNrIHRvIG5vcm1hbC4KPC9CTE9DS1FVT1RFPgo8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9InRhYmxlciI+PHRkIGNvbHNwYW49IjIiPqCgoKA8L3RkPjwvdHI+CgoKPHRyIGNsYXNzPSd0YWJsZWNiZyc+PHRkIGNvbHNwYW49IjIiPjx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPjx0Ym9keT48dHI+PHRkIGFsaWduPSJjZW50ZXIiPjxkaXYKYWxpZ249ImNlbnRlciI+PGI+PGEgbmFtZT0nWG1sJz48YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiBocmVmPSIjaHR0cHM6Ly9uZXRiZWFucy5vcmcvc291cmNlL2Jyb3dzZS94bWwvIj54bWw8L2E+PC9hPjwvYj48L2Rpdj48L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvdGQ+PC90cj4KPHRyIGNsYXNzPSd0YWJsZXJiZyc+PHRkIGJnY29sb3I9JyNFRUVCQzYnIHdpZHRoPSIyMCIgcm93c3Bhbj0iMSI+oKCgoDwvdGQ+Cjx0ZD48Yj4KIzxhIGNsYXNzPW5vcm1hbGxpbmsgdGFyZ2V0PSJuZXciIApocmVmPSJodHRwczovL25ldGJlYW5zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjkwMjQiPjI5MDI0PC9hPjoKbWlub3IgZG9jcyBmaXhlczwvYj48L3RkPjwvdHI+Cgo8dHIgY2xhc3M9InRhYmxlciI+PHRkIGNvbHNwYW49IjIiPqCgoKA8L3RkPjwvdHI+Cgo8dHIgY2xhc3M9J3RhYmxlY2JnJz48dGQgY29sc3Bhbj0iMiI+PHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+PHRib2R5Pjx0cj48dGQgYWxpZ249ImNlbnRlciI+PGRpdgphbGlnbj0iY2VudGVyIj48YSBuYW1lPSdNdWx0aXBsZSc+PGI+bXVsdGlwbGUgbW9kdWxlczwvYj48L2E+PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L3RkPjwvdHI+Cjx0ciBjbGFzcz0ndGFibGVyYmcnPjx0ZCBiZ2NvbG9yPScjRUVFQkM2JyB3aWR0aD0iMjAiIHJvd3NwYW49IjEiPqCgoKA8L3RkPgo8dGQ+PGI+CiM8YSBjbGFzcz1ub3JtYWxsaW5rIHRhcmdldD0ibmV3IiAKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2MDk3Ij4yNjA5NzwvYT4sIAojPGEgY2xhc3M9bm9ybWFsbGluayB0YXJnZXQ9Im5ldyIKaHJlZj0iaHR0cHM6Ly9uZXRiZWFucy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI2MDk5Ij4yNjA5OTwvYT46IApDYW4ndCBzZWxlY3QgJFVTRVJESVIvaGlkZGVuIGRpcnMgaW4gSkZpbGVDaG9zZXIgPC9iPgo8QkxPQ0tRVU9URT4Kc2V0RmlsZUhpZGluZ0VuYWJsZWQoZmFsc2UpIHdhcyBzZXQgZm9yIGFsbCBKRmlsZUNob29zZXJzLCBzbyB0aGF0IHVzZXJzCmNhbiBicm93c2UgaGlkZGVuIGZvbGRlcnMgYW5kIHNlbGVjdCBoaWRkZW4gZmlsZXMuCjwvQkxPQ0tRVU9URT4KPC90ZD48L3RyPgoKPHRyIGNsYXNzPSJ0YWJsZXIiPjx0ZCBjb2xzcGFuPSIyIj6goKCgPC90ZD48L3RyPgoKCjwvdGJvZHk+PC90YWJsZT4KCjwvdGQ+PC90cj4KCjwvdGJvZHk+PC90YWJsZT4KCjwvYm9keT48L2h0bWw+Cg==