PGh0bWw+Cgo8aGVhZD4KPG1ldGEgbmFtZT0iR0VORVJBVE9SIiBjb250ZW50PSJNaWNyb3NvZnQgRnJvbnRQYWdlIDUuMCI+CjxtZXRhIG5hbWU9IlByb2dJZCIgY29udGVudD0iRnJvbnRQYWdlLkVkaXRvci5Eb2N1bWVudCI+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+Cjx0aXRsZT5GaWxlc3lzdGVtIFYzIEludHJvPC90aXRsZT4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vLi4vLi4vLi4vZG9jL3NyYy9taW5pbWFsLmNzcyI+Cgo8Ym9keT4KCjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSI1IiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9ImJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiIGJvcmRlcmNvbG9yPSIjMTExMTExIj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjI3NyI+CjxhIGhyZWY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bSI+CjxpbWcgc3JjPSIuLi8uLi8uLi8uLi9ib29zdC5wbmciIGFsdD0iYm9vc3QucG5nICg2ODk3IGJ5dGVzKSIgYWxpZ249Im1pZGRsZSIgd2lkdGg9IjMwMCIgaGVpZ2h0PSI4NiIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgIDx0ZCBhbGlnbj0ibWlkZGxlIj4KICAgIDxmb250IHNpemU9IjciPkZpbGVzeXN0ZW0KICAgIFZlcnNpb24gMzxicj4KICAgIEludHJvZHVjdGlvbjwvZm9udD48L3RkPgogIDwvdHI+CjwvdGFibGU+Cgo8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iNSIgY2VsbHNwYWNpbmc9IjAiIHN0eWxlPSJib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlIiBib3JkZXJjb2xvcj0iIzExMTExMSIgYmdjb2xvcj0iI0Q3RUVGRiIgd2lkdGg9IjEwMCUiPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuLi8uLi8uLi8uLi9pbmRleC5odG0iPkJvb3N0IEhvbWU8L2E+ICZuYnNwOyZuYnNwOwogICAgPGEgaHJlZj0iaW5kZXguaHRtIj5MaWJyYXJ5IEhvbWU8L2E+ICZuYnNwOyZuYnNwOwogICAgPGEgaHJlZj0icmVmZXJlbmNlLmh0bWwiPlJlZmVyZW5jZTwvYT4gJm5ic3A7Jm5ic3A7CiAgICA8YSBocmVmPSJ0dXRvcmlhbC5odG1sIj5UdXRvcmlhbDwvYT4gJm5ic3A7Jm5ic3A7CiAgICA8YSBocmVmPSJmYXEuaHRtIj5GQVE8L2E+ICZuYnNwOyZuYnNwOwogICAgPGEgaHJlZj0icG9ydGFiaWxpdHlfZ3VpZGUuaHRtIj5Qb3J0YWJpbGl0eTwvYT4gJm5ic3A7Jm5ic3A7CiAgICA8YSBocmVmPSJ2My5odG1sIj5WMyBJbnRybzwvYT4gJm5ic3A7Jm5ic3A7CiAgICA8YSBocmVmPSJ2M19kZXNpZ24uaHRtbCI+VjMgRGVzaWduPC9hPiAmbmJzcDsmbmJzcDsKICAgIDxhIGhyZWY9ImRlcHJlY2F0ZWQuaHRtbCI+RGVwcmVjYXRlZDwvYT4gJm5ic3A7Jm5ic3A7CiAgICA8L3RkPgogIDwvdHI+CjwvdGFibGU+Cgo8aDE+Qm9vc3QgRmlsZXN5c3RlbSBWZXJzaW9uIDM8L2gxPgoKPHA+VmVyc2lvbiAzIGlzIGEgbWFqb3IgcmV2aXNpb24gb2YgdGhlIEJvb3N0IEZpbGVzeXN0ZW0gbGlicmFyeS4gSW1wb3J0YW50IApjaGFuZ2VzIGluY2x1ZGU6PC9wPgoKPHVsPgogIDxsaT5BIHNpbmdsZSBjbGFzcyA8Y29kZT5wYXRoPC9jb2RlPiBoYW5kbGVzIGFsbCBhc3BlY3RzIG9mIAogIGludGVybmF0aW9uYWxpemF0aW9uLCByZXBsYWNpbmcgdGhlIHByZXZpb3VzIHRlbXBsYXRlIGFuZCBpdHMgPGNvZGU+cGF0aDwvY29kZT4gCiAgYW5kIDxjb2RlPndwYXRoPC9jb2RlPiBpbnN0YW50aWF0aW9ucy4gQ2hhcmFjdGVyIHR5cGVzIDxjb2RlPmNoYXI8L2NvZGU+LAogIDxjb2RlPndjaGFyX3Q8L2NvZGU+LCA8Y29kZT5jaGFyMTZfdDwvY29kZT4sIGFuZCA8Y29kZT5jaGFyMzJfdDwvY29kZT4gYXJlIAogIHN1cHBvcnRlZC4gVGhpcyBpcyBhIG1ham9yIHNpbXBsaWZpY2F0aW9uIG9mIHRoZSBwYXRoIGFic3RyYWN0aW9uLCAKICBwYXJ0aWN1bGFybHkgZm9yIGZ1bmN0aW9ucyB0aGF0IHRha2UgcGF0aCBhcmd1bWVudHMuPGJyPgombmJzcDs8L2xpPgogIDxsaT5OZXcgPGNvZGU+Y2xhc3MgcGF0aDwvY29kZT4gbWVtYmVycyBpbmNsdWRlOjxicj4KJm5ic3A7PHVsPgogIDxsaT48Y29kZT48YSBocmVmPSJyZWZlcmVuY2UuaHRtbCNwYXRoLWhhc19zdGVtIj5oYXNfc3RlbTwvYT4oKTwvY29kZT48L2xpPgogIDxsaT48Y29kZT48YSBocmVmPSJyZWZlcmVuY2UuaHRtbCNwYXRoLWhhc19leHRlbnNpb24iPmhhc19leHRlbnNpb248L2E+KCk8L2NvZGU+PC9saT4KICA8bGk+PGNvZGU+PGEgaHJlZj0icmVmZXJlbmNlLmh0bWwjcGF0aC1pc19hYnNvbHV0ZSI+aXNfYWJzb2x1dGU8L2E+KCk8L2NvZGU+LiBUaGlzIHJlbmFtZXMgPGNvZGU+aXNfY29tcGxldGUoKTwvY29kZT4sIHdoaWNoIAogIGlzIG5vdyBkZXByZWNhdGVkLjwvbGk+CiAgPGxpPjxjb2RlPjxhIGhyZWY9InJlZmVyZW5jZS5odG1sI3BhdGgtaXNfcmVsYXRpdmUiPmlzX3JlbGF0aXZlPC9hPigpPC9jb2RlPjwvbGk+CiAgPGxpPjxjb2RlPjxhIGhyZWY9InJlZmVyZW5jZS5odG1sI3BhdGgtbWFrZV9wcmVmZXJyZWQiPm1ha2VfcHJlZmVycmVkPC9hPigpPGJyPgombmJzcDs8L2NvZGU+PC9saT4KPC91bD4KCiAgPC9saT4KICA8bGk+TmV3IG9yIGltcHJvdmVkIG9wZXJhdGlvbnMgZnVuY3Rpb25zIGluY2x1ZGU6PGJyPgombmJzcDs8dWw+CiAgICA8bGk+PGNvZGU+PGEgaHJlZj0icmVmZXJlbmNlLmh0bWwjYWJzb2x1dGUiPmFic29sdXRlPC9hPigpPC9jb2RlPi4gVGhpcyByZXBsYWNlcyB0aGUgb3BlcmF0aW9ucyBmdW5jdGlvbiA8Y29kZT4KICBjb21wbGV0ZSgpPC9jb2RlPiwgd2hpY2ggaXMgbm93IGRlcHJlY2F0ZWQuIFNlbWFudGljcyBhcmUgbm93IHByb3ZpZGVkIGZvciBhIAogICAgV2luZG93cyBjb3JuZXIgY2FzZSB3aGVyZSB0aGUgPGNvZGU+YmFzZTwvY29kZT4gYXJndW1lbnQgd2FzIG5vdCBhbiBhYnNvbHV0ZSAKICAgIHBhdGguIFByZXZpb3VzbHkgdGhpcyByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gYmVpbmcgdGhyb3duLjwvbGk+CiAgICA8bGk+PGNvZGU+PGEgaHJlZj0icmVmZXJlbmNlLmh0bWwjY3JlYXRlX3N5bWxpbmsiPmNyZWF0ZV9zeW1saW5rPC9hPigpPC9jb2RlPiBub3cgc3VwcG9ydGVkIG9uIGJvdGggUE9TSVggYW5kIFdpbmRvd3MuPC9saT4KICAgIDxsaT48Y29kZT48YSBocmVmPSJyZWZlcmVuY2UuaHRtbCNyZWFkX3N5bWxpbmsiPnJlYWRfc3ltbGluazwvYT4oKTwvY29kZT4gZnVuY3Rpb24gYWRkZWQuIFN1cHBvcnRlZCBvbiBib3RoIFBPU0lYIGFuZCAKICAgIFdpbmRvd3MuIFVzZWQgdG8gcmVhZCB0aGUgY29udGVudHMgb2YgYSBzeW1saW5rIGl0c2VsZi48L2xpPgogICAgPGxpPjxjb2RlPjxhIGhyZWY9InJlZmVyZW5jZS5odG1sI3Jlc2l6ZV9maWxlIj5yZXNpemVfZmlsZTwvYT4oKTwvY29kZT4gZnVuY3Rpb24gYWRkZWQuIFN1cHBvcnRlZCBvbiBib3RoIFBPU0lYIGFuZCAKICAgIFdpbmRvd3MuIFVzZWQgdG8gc2hyaW5rIG9yIGdyb3cgYSByZWd1bGFyIGZpbGUuPC9saT4KICAgIDxsaT48Y29kZT48YSBocmVmPSJyZWZlcmVuY2UuaHRtbCN1bmlxdWVfcGF0aCI+dW5pcXVlX3BhdGg8L2E+KCk8L2NvZGU+IGZ1bmN0aW9uIGFkZGVkLiBTdXBwb3J0ZWQgb24gYm90aCBQT1NJWCBhbmQgCiAgICBXaW5kb3dzLiBVc2VkIHRvIGdlbmVyYXRlIGEgc2VjdXJlIHRlbXBvcmFyeSBwYXRobmFtZS48YnI+CiZuYnNwOzwvbGk+CiAgPC91bD4KICA8L2xpPgogIDxsaT5TdXBwb3J0IGZvciBlcnJvciByZXBvcnRpbmcgdmlhIDxjb2RlPmVycm9yX2NvZGU8L2NvZGU+IGlzIG5vdyB1bmlmb3JtIAogIHRocm91Z2hvdXQgdGhlIG9wZXJhdGlvbnMgZnVuY3Rpb25zLjxicj4KJm5ic3A7PC9saT4KICA8bGk+RG9jdW1lbnRhdGlvbiBoYXMgYmVlbiByZXdvcmtlZCwgaW5jbHVkaW5nIHJlLXdyaXRlcyBvZiBtYWpvciBwb3J0aW9ucy48YnI+CiZuYnNwOzwvbGk+CiAgPGxpPkEgbmV3IDxhIGhyZWY9InR1dG9yaWFsLmh0bWwiPlR1dG9yaWFsPC9hPiBwcm92aWRlcyBhIGhvcGVmdWxseSBtdWNoIAogIGdlbnRsZXIgYW5kIG1vcmUgY29tcGxldGUgaW50cm9kdWN0aW9uIGZvciBuZXcgdXNlcnMuIEN1cnJlbnQgdXNlcnMgbWlnaHQgd2FudCAKICB0byByZXZpZXcgdGhlIDxhIGhyZWY9InR1dG9yaWFsLmh0bWwiPnRocmVlIHNlY3Rpb25zIHJlbGF0ZWQgdG8gY2xhc3MgcGF0aDwvYT4uPC9saT4KPC91bD4KCjxoMj5EZXByZWNhdGVkIG5hbWVzIGFuZCBvdGhlciBmZWF0dXJlczwvaDI+Cgo8cD5TZWUgdGhlIDxhIGhyZWY9ImRlcHJlY2F0ZWQuaHRtbCI+RGVwcmVjYXRlZCBGZWF0dXJlcyBwYWdlPC9hPiBmb3IgdHJhbnNpdGlvbiAKYWlkcyB0aGF0IGFsbG93IG11Y2ggZXhpc3RpbmcgY29kZSB0byBjb21waWxlIHdpdGhvdXQgY2hhbmdlIHVzaW5nIFZlcnNpb24gMy48L3A+Cgo8aDI+QnJlYWtpbmcgY2hhbmdlczwvaDI+Cgo8cD5UbyBlYXNlIHRoZSB0cmFuc2l0aW9uLCBWZXJzaW9ucyAyIGFuZCAzIHdpbGwgYm90aCBiZSBpbmNsdWRlZCBpbiB0aGUgbmV4dCAKc2V2ZXJhbCBCb29zdCByZWxlYXNlcy4gVmVyc2lvbiAyIHdpbGwgYmUgdGhlIGRlZmF1bHQgdmVyc2lvbiBmb3Igb25lIHJlbGVhc2UgCmN5Y2xlLCBhbmQgdGhlbiBWZXJzaW9uIDMgd2lsbCBiZWNvbWUgdGhlIGRlZmF1bHQgdmVyc2lvbi48L3A+CjxoMz5DbGFzcyA8Y29kZT5wYXRoPC9jb2RlPjwvaDM+Cjx1bD4KICA8bGk+Q2xhc3MgdGVtcGxhdGUgPGNvZGU+YmFzaWNfcGF0aDwvY29kZT4gYW5kIGl0cyBzcGVjaWFsaXphdGlvbnMgYXJlIAogIHJlcGxhY2VkIGJ5IGEgc2luZ2xlIDxjb2RlPmNsYXNzIHBhdGg8L2NvZGU+LiBUaHVzIGFueSBjb2RlLCBzdWNoIGFzIAogIG92ZXJsb2FkZWQgZnVuY3Rpb25zLCB0aGF0IGRlcGVuZHMgb24gPGNvZGU+cGF0aDwvY29kZT4gYW5kIDxjb2RlPndwYXRoPC9jb2RlPiAKICBiZWluZyB0d28gZGlzdGluY3QgdHlwZXMgd2lsbCBmYWlsIHRvIGNvbXBpbGUgYW5kIG11c3QgYmUgcmVzdHJ1Y3R1cmVkLiAKICBSZXN0cnVjdHVyaW5nIG1heSBiZSBhcyBzaW1wbGUgYXMgcmVtb3Zpbmcgb25lIG9mIHRoZSBvdmVybG9hZHMsIGJ1dCBhbHNvIAogIG1pZ2h0IHJlcXVpcmUgbW9yZSBjb21wbGV4IHJlZGVzaWduLjxicj4KJm5ic3A7PC9saT4KICA8bGk+Q2VydGFpbiBmdW5jdGlvbnMgbm93IHJldHVybiA8Y29kZT5wYXRoPC9jb2RlPiBvYmplY3RzIHJhdGhlciB0aGFuIDxjb2RlPgogIHN0cmluZyBvciB3c3RyaW5nPC9jb2RlPiBvYmplY3RzOjx1bD4KICAgIDxsaT48Y29kZT5yb290X25hbWUoKTwvY29kZT48L2xpPgogICAgPGxpPjxjb2RlPnJvb3RfZGlyZWN0b3J5KCk8L2NvZGU+PC9saT4KICAgIDxsaT48Y29kZT5maWxlbmFtZSgpPC9jb2RlPjwvbGk+CiAgICA8bGk+PGNvZGU+c3RlbSgpPC9jb2RlPjwvbGk+CiAgICA8bGk+PGNvZGU+ZXh0ZW5zaW9uKCk8L2NvZGU+PC9saT4KICA8L3VsPgogIDxwPk5vdCBhbGwgdXNlcyB3aWxsIGZhaWw7IGlmIHRoZSBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQgaW4gYSBjb250ZXh0IHRoYXQgCiAgYWNjZXB0cyBhIDxjb2RlPnBhdGg8L2NvZGU+LCBhbGwgaXMgd2VsbC4gSWYgdGhlIHJlc3VsdCBpcyBiZWluZyB1c2VkIGluIGEgCiAgY29udGV4dCByZXF1aXJpbmcgYSA8Y29kZT5zdGQ6OnN0cmluZzwvY29kZT4gb3IgPGNvZGU+c3RkOjp3c3RyaW5nPC9jb2RlPiwgCiAgdGhlbiA8Y29kZT4uc3RyaW5nKCk8L2NvZGU+IG9yIDxjb2RlPi53c3RyaW5nKCk8L2NvZGU+IHJlc3BlY3RpdmVseSBtdXN0IGJlIAogIGFwcGVuZGVkIHRvIHRoZSBmdW5jdGlvbiBjYWxsLjxicj4KJm5ic3A7PC9saT4KICA8bGk+Jm5ic3A7PGNvZGU+cGF0aDo6aXRlcmF0b3I6OnZhbHVlX3R5cGU8L2NvZGU+IGFuZCZuYnNwOyA8Y29kZT4KICBwYXRoOjpjb25zdF9pdGVyYXRvcjo6dmFsdWVfdHlwZTwvY29kZT4gaXMgPGNvZGU+cGF0aDwvY29kZT4gcmF0aGVyIHRoYW4gPGNvZGU+CiAgYmFzaWNfc3RyaW5nPC9jb2RlPi48L2xpPgo8L3VsPgo8aDM+Q29tcGlsZXIgc3VwcG9ydDwvaDM+Cjx1bD4KICA8bGk+Q29tcGlsZXJzIGFuZCBzdGFuZGFyZCBsaWJyYXJpZXMgdGhhdCBkbyBub3QgZnVsbHkgc3VwcG9ydCB3aWRlIGNoYXJhY3RlcnMgCiAgYW5kIHdpZGUgY2hhcmFjdGVyIHN0cmluZ3MgKDxjb2RlPnN0ZDo6d3N0cmluZzwvY29kZT4pIGFyZSBubyBsb25nZXIgCiAgc3VwcG9ydGVkLjxicj4KJm5ic3A7PC9saT4KICA8bGk+Q3lnd2luIHZlcnNpb25zIHByaW9yIHRvIDEuNyBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBiZWNhdXNlIHRoZXkgbGFjayAKICB3aWRlIHN0cmluZyBzdXBwb3J0LiBDeWd3aW4gbm93IGNvbXBpbGVzIG9ubHkgZm9yIHRoZSBXaW5kb3dzIEFQSSBhbmQgcGF0aCAKICBzeW50YXguPGJyPgombmJzcDs8L2xpPgogIDxsaT5NaW5HVyB2ZXJzaW9ucyBub3Qgc3VwcG9ydGluZyB3aWRlIHN0cmluZ3MgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQuPGJyPgombmJzcDs8L2xpPgogIDxsaT5NaWNyb3NvZnQgVkMrKyA3LjEgYW5kIGVhcmxpZXIgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQuPC9saT4KPC91bD4KCjxocj4KPHA+qSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMsIDIwMDk8L3A+CjxwPkRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gU2VlCjxhIGhyZWY9Imh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+d3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+PC9wPgo8cD5SZXZpc2VkCjwhLS13ZWJib3QgYm90PSJUaW1lc3RhbXAiIFMtVHlwZT0iRURJVEVEIiBTLUZvcm1hdD0iJWQgJUIgJVkiIHN0YXJ0c3BhbiAtLT4wMiBKdWx5IDIwMTA8IS0td2ViYm90IGJvdD0iVGltZXN0YW1wIiBlbmRzcGFuIGktY2hlY2tzdW09IjE4NzYyIiAtLT48L3A+Cgo8L2JvZHk+Cgo8L2h0bWw+