PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sOmxhbmc9ImVuIiBsYW5nPSJlbiIgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6KG51bGwpMT0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MCI+PGhlYWQ+PCEtLQogICAgQ29weXJpZ2h0IDIwMDktMjAxMCBJbnRlbCBDb3Jwb3JhdGlvbgogICAgbGljZW5zZSBiYW5uZXIKLS0+Cjx0aXRsZT5Cb29zdCBQb2x5Z29uIExpYnJhcnk6IE92ZXJ2aWV3PC90aXRsZT4KICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9SVNPLTg4NTktMSI+Cjx0YWJsZSBzdHlsZT0ibWFyZ2luOiAwcHQ7IHBhZGRpbmc6IDBwdDsgd2lkdGg6IDEwMCU7IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+PHRib2R5Pjx0cj4KPHRkIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM4LCAyMzgsIDIzOCk7IiBub3dyYXA9IjEiIHZhbGlnbj0idG9wIj4KICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6IDVweDsiIGFsaWduPSJjZW50ZXIiPgogICAgICAgIDxpbWcgYm9yZGVyPSIwIiBzcmM9ImltYWdlcy9ib29zdC5wbmciIHdpZHRoPSIyNzciIGhlaWdodD0iODYiPjxhIHRpdGxlPSJ3d3cuYm9vc3Qub3JnIGhvbWUgcGFnZSIgaHJlZj0iaHR0cDovL3d3dy5ib29zdC5vcmcvIiB0YWJpbmRleD0iMiIgc3R5bGU9ImJvcmRlcjogbWVkaXVtIG5vbmUgOyI+CiAgICAgICAgICAgIDwvYT4KICAgIDwvZGl2PgogICAgPGRpdiBzdHlsZT0ibWFyZ2luOiA1cHg7Ij4KICAgICAgICA8aDMgY2xhc3M9Im5hdmJhciI+Q29udGVudHM8L2gzPgogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9ImluZGV4Lmh0bSI+Qm9vc3QuUG9seWdvbiBNYWluIFBhZ2U8L2E+PC9saT4KCQkJPGxpPkRlc2lnbiBPdmVydmlldzwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSJndGxfaXNvdHJvcHkuaHRtIj5Jc290cm9weTwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iZ3RsX2Nvb3JkaW5hdGVfY29uY2VwdC5odG0iPkNvb3JkaW5hdGUgQ29uY2VwdDwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iZ3RsX2ludGVydmFsX2NvbmNlcHQuaHRtIj5JbnRlcnZhbCBDb25jZXB0PC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT4KCQkJPGEgaHJlZj0iZ3RsX3BvaW50X2NvbmNlcHQuaHRtIj5Qb2ludCBDb25jZXB0PC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJndGxfcmVjdGFuZ2xlX2NvbmNlcHQuaHRtIj5SZWN0YW5nbGUgQ29uY2VwdDwvYT48L2xpPgoJCQk8bGk+PGEgaHJlZj0iZ3RsX3BvbHlnb25fOTBfY29uY2VwdC5odG0iPlBvbHlnb24gOTAgQ29uY2VwdDwvYT48L2xpPgoJCQk8bGk+PGEgaHJlZj0iZ3RsX3BvbHlnb25fOTBfd2l0aF9ob2xlc19jb25jZXB0Lmh0bSI+UG9seWdvbiA5MCBXaXRoIEhvbGVzIENvbmNlcHQ8L2E+PC9saT4KCQkJPGxpPjxhIGhyZWY9Imd0bF9wb2x5Z29uXzQ1X2NvbmNlcHQuaHRtIj5Qb2x5Z29uIDQ1IENvbmNlcHQ8L2E+PC9saT4KCQkJPGxpPjxhIGhyZWY9Imd0bF9wb2x5Z29uXzQ1X3dpdGhfaG9sZXNfY29uY2VwdC5odG0iPlBvbHlnb24gNDUgV2l0aCBIb2xlcyBDb25jZXB0PC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJndGxfcG9seWdvbl9jb25jZXB0Lmh0bSI+UG9seWdvbiBDb25jZXB0PC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJndGxfcG9seWdvbl93aXRoX2hvbGVzX2NvbmNlcHQuaHRtIj5Qb2x5Z29uIFdpdGggSG9sZXMgQ29uY2VwdDwvYT48L2xpPgoJCQk8bGk+PGEgaHJlZj0iZ3RsX3BvbHlnb25fOTBfc2V0X2NvbmNlcHQuaHRtIj5Qb2x5Z29uIDkwIFNldCBDb25jZXB0PC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJndGxfcG9seWdvbl80NV9zZXRfY29uY2VwdC5odG0iPlBvbHlnb24gNDUgU2V0IENvbmNlcHQ8L2E+PC9saT4KCQkJPGxpPjxhIGhyZWY9Imd0bF9wb2x5Z29uX3NldF9jb25jZXB0Lmh0bSI+UG9seWdvbiBTZXQgQ29uY2VwdDwvYT48L2xpPgoJCQk8bGk+PGEgaHJlZj0iZ3RsX2Nvbm5lY3Rpdml0eV9leHRyYWN0aW9uXzkwLmh0bSI+Q29ubmVjdGl2aXR5IEV4dHJhY3Rpb24gOTA8L2E+PC9saT4KCQkJPGxpPjxhIGhyZWY9Imd0bF9jb25uZWN0aXZpdHlfZXh0cmFjdGlvbl80NS5odG0iPkNvbm5lY3Rpdml0eSBFeHRyYWN0aW9uIDQ1PC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJndGxfY29ubmVjdGl2aXR5X2V4dHJhY3Rpb24uaHRtIj5Db25uZWN0aXZpdHkgRXh0cmFjdGlvbjwvYT48L2xpPgoJCQk8bGk+PGEgaHJlZj0iZ3RsX3Byb3BlcnR5X21lcmdlXzkwLmh0bSI+UHJvcGVydHkgTWVyZ2UgOTA8L2E+PC9saT4KCQkJPGxpPjxhIGhyZWY9Imd0bF9wcm9wZXJ0eV9tZXJnZV80NS5odG0iPlByb3BlcnR5IE1lcmdlIDQ1PC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJndGxfcHJvcGVydHlfbWVyZ2UuaHRtIj5Qcm9wZXJ0eSBNZXJnZTwvYT48L2xpPgogICAgICAgIDwvdWw+CiAgICAgICAgPGgzIGNsYXNzPSJuYXZiYXIiPk90aGVyIFJlc291cmNlczwvaDM+CiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iR1RMX2Jvb3N0Y29uMjAwOS5wZGYiPkdUTCBCb29zdGNvbiAyMDA5IFBhcGVyPC9hPjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iR1RMX2Jvb3N0Y29uX2RyYWZ0MDMucGRmIj5HVEwgQm9vc3Rjb24gMjAwOSAKCQkJCVByZXNlbnRhdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9ImFuYWx5c2lzLmh0bSI+UGVyZm9ybWFuY2UgQW5hbHlzaXM8L2E+PC9saT4KICAgICAgICAJPGxpPjxhIGhyZWY9Imd0bF90dXRvcmlhbC5odG0iPkxheW91dCBWZXJzdXMgU2NoZW1hdGljIFR1dG9yaWFsPC9hPjwvbGk+CiAgICAgICAgCTxsaT48YSBocmVmPSJndGxfbWlua293c2tpX3R1dG9yaWFsLmh0bSI+TWlua293c2tpIFN1bSBUdXRvcmlhbDwvYT48L2xpPgogICAgICAgIDwvdWw+CiAgICA8L2Rpdj4KICAgICAgICA8aDMgY2xhc3M9Im5hdmJhciI+UG9seWdvbiBTcG9uc29yPC9oMz4KICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6IDVweDsiIGFsaWduPSJjZW50ZXIiPgogICAgICAgIDxpbWcgYm9yZGVyPSIwIiBzcmM9ImltYWdlcy9pbnRsb2dvLmdpZiIgd2lkdGg9IjEyNyIgaGVpZ2h0PSI1MSI+CiAgICA8L2Rpdj4gICAgCjwvdGQ+Cjx0ZCBzdHlsZT0icGFkZGluZy1sZWZ0OiAxMHB4OyBwYWRkaW5nLXJpZ2h0OiAxMHB4OyBwYWRkaW5nLWJvdHRvbTogMTBweDsiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTAwJSI+Cgo8IS0tIEVuZCBIZWFkZXIgLS0+Cgo8YnI+CjxwPgo8L3A+PGgxPlBvbHlnb24gTGlicmFyeSBEZXNpZ24gT3ZlcnZpZXc8L2gxPgoKPHA+IAo8cD5UaGUgUG9seWdvbiBsaWJyYXJ5IHVzZXMgQysrLUNvbmNlcHRzIGluc3BpcmVkIHRlbXBsYXRlIHByb2dyYW1taW5nIHRvIApwcm92aWRlIGdlbmVyaWMgbGlicmFyeSBmdW5jdGlvbnMgb3ZlcmxvYWRlZCBvbiBjb25jZXB0IHR5cGUuJm5ic3A7IFRoZXJlIGFyZSAKY3VycmVudGx5IHRoaXJ0ZWVuIGNvbmNlcHRzIGluIHRoZSBQb2x5Z29uIGxpYnJhcnkgdHlwZSBzeXN0ZW0uJm5ic3A7IEEgY29uY2VwdCAKb2JqZWN0IGluIHRoZSBQb2x5Z29uIGxpYnJhcnkgaXMganVzdCBhbiBlbXB0eSBzdHJ1Y3Qgc2ltaWxhciB0byBhIHRhZyB0aGF0IAp3b3VsZCBiZSB1c2VkIGZvciB0YWcgZGlzcGF0Y2hpbmcuJm5ic3A7Jm5ic3A7IFRoZXNlIGNvbmNlcHRzIGFyZSBzaG93biBpbiB0aGUgCnJlZmluZW1lbnQgZGlhZ3JhbSBiZWxvdy48L3A+CgoKPC9ib2R5PjxpbWcgYm9yZGVyPSIwIiBzcmM9ImltYWdlcy9yZWZpbmVtZW50cy5wbmciIHdpZHRoPSI0NjYiIGhlaWdodD0iMzY5Ij48cD4KVGhlIGFycm93cyBiZXR3ZWVuIGRpYWdyYW0gYnViYmxlcyBzaG93IGNvbmNlcHQgcmVmaW5lbWVudCByZWxhdGlvbnNoaXBzLiZuYnNwOyBUaGlzIGlzIApzaW1pbGFyLCBidXQgbm90IGlkZW50aWNhbCB0bywgaW5oZXJpdGFuY2UgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIG5vcm1hbCBjbGFzc2VzLiZuYnNwOyAKQSByZWZpbmVtZW50IG9mIGEgY29uY2VwdCBuYXJyb3dzIGRvd24gdGhlIGRlZmluaXRpb24gb2YgYSBtb3JlIGdlbmVyYWwgY29uY2VwdC4mbmJzcDsgCkZvciBleGFtcGxlLCB0aGUgcmVjdGFuZ2xlIGNvbmNlcHQgaXMgYSByZWZpbmVtZW50IG9mIGEgcG9seWdvbiBjb25jZXB0IGJlY2F1c2UgCml0IHJlc3RyaWN0cyB0aGUgcG9seWdvbiB0byBhIGZvdXIgc2lkZWQsIGF4aXMtcGFyYWxsZWwsIHJlY3RpbGluZWFyIGZpZ3VyZS4mbmJzcDsgQSByZWZpbmVtZW50IApvZiBhIGNvbmNlcHQgaXMgYWx3YXlzIGFjY2VwdGFibGUgdG8gYW4gQVBJIHRoYXQgZXhwZWN0cyByZWFkIG9ubHkgYWNjZXNzIHRvIGEgCmdpdmVuIGNvbmNlcHQsIGJ1dCBuZXZlciBhY2NlcHRhYmxlIHRvIGFuIEFQSSB0aGF0IGV4cGVjdHMgdG8gd3JpdGUgdG8gdGhhdCAKY29uY2VwdC4mbmJzcDsgVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIGdlb21ldHJ5IGluIHRoZSBwb2x5Z29uIGxpYnJhcnksIHRoZSAKZ2VuZXJhbCBjYXNlLCB0aGUgY2FzZSByZXN0cmljdGVkIHRvIGFuZ2xlcyB0aGF0IGFyZSBtdWx0aXBsZXMgb2YgNDUgZGVncmVlcywgCmFuZCB0aGUgTWFuaGF0dGFuL3JlY3RpbGluZWFyIGNhc2Ugd2hlcmUgYW5nbGVzIGFyZSByZXN0cmljdGVkIHRvIG11bHRpcGxlcyBvZiAKOTAgZGVncmVlcy4mbmJzcDsmbmJzcDsgVGhlIHJlZmluZW1lbnQgZGlhZ3JhbSBzaG93cyB0aGF0IDkwIGRlZ3JlZSBjb25jZXB0cyBhcmUgCnJlZmluZW1lbnRzIG9mIDQ1IGRlZ3JlZSBjb25jZXB0cywgd2hpY2ggYXJlIHRoZW1zZWx2ZXMgcmVmaW5lbWVudHMgb2YgdGhlIApnZW5lcmFsIGNhc2UuJm5ic3A7IFRoaXMgYWxsb3dzIHRoZSBjb21waWxlciB0byBjaG9vc2UgYmV0d2VlbiB0aGUgdGhyZWUgCmltcGxlbWVudGF0aW9ucyBvZiBhbGdvcml0aG1zIHRvIHNlbGVjdCB0aGUgYmVzdCBhbGdvcml0aG0gZm9yIHRoZSBjb25jZXB0dWFsIApkYXRhIHR5cGVzIHBhc3NlZCB0byBhbiBvdmVybG9hZCBvZiBhIGZ1bmN0aW9uIGluY2x1ZGluZyBoZXRlcm9nZW5lb3VzIApjb21iaW5hdGlvbnMgb2YgOTAsIDQ1IGFuZCBnZW5lcmFsIGNhc2UgZ2VvbWV0cnkuJm5ic3A7IFRvIHByb3ZpZGUgdGhlCjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij5vcGVyYXRvciZhbXA7PC9mb250PiB0aGF0IHBlcmZvcm1zIHRoZSBpbnRlcnNlY3Rpb24gb24gYW55IApwYWlyIG9mIG9iamVjdHMgZnJvbSB0aGUgdGVuIGNvbmNlcHR1YWwgdHlwZXMgcmVsYXRlZCB0byBlYWNoIG90aGVyIHRocm91Z2ggCnJlZmluZW1lbnQgaW4gdGhlIGRpYWdyYXBoIGFib3ZlIGZ1bGx5IG9uZSBodW5kcmVkIGRpc3RpbmN0IGNvbWJpbmF0aW9ucyBvZiAKY29uY2VwdHVhbCB0eXBlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBsaWJyYXJ5LCBidXQgb25seSB0aHJlZSBvdmVybG9hZHMgYXJlIApyZXF1aXJlZCB0byBpbXBsZW1lbnQgdGhlIG9wZXJhdG9yIChvbmUgZm9yIDkwLCBvbmUgZm9yIDQ1IGFuZCBvbmUgZm9yIGFyYml0cmFyeSAKYW5nbGUgdmVyc2lvbiBvZiB0aGUgaW50ZXJzZWN0aW9uIG9wZXJhdGlvbikgYmVjYXVzZSByZWZpbmVtZW50IGdlbmVyYWxpemVzIHRoZSAKaW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVyZmFjZS4mbmJzcDsgSW4gdGhpcyB3YXkgYSBmdWxseSBzeW1tZXRyaWMsIGNvbXBsZXRlIAphbmQgaW50ZXJuYWxseSBjb25zaXN0ZW50IEFQSSBpcyBpbXBsZW1lbnRlZCB0byBwcm92aWRlIG1lYW5pbmdmdWwgYW5kIGNvcnJlY3QgCmJlaGF2aW9ycyBmb3IgYWxsIGNvbWJpbmF0aW9ucyBvZiBhcmd1bWVudCB0eXBlcyBpbiBhbGwgQVBJcyB3aGVyZSB0aG9zZSB0eXBlcyAKbWFrZSBzZW5zZS4mbmJzcDsgRm9yIGV4YW1wbGUsIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBjb3B5IGRhdGEgZnJvbSBhIHBvbHlnb24gCmludG8gYSByZWN0YW5nbGUsIHNvIGF0dGVtcHRpbmcgdG8gZG8gc28geWllbGRzIGEgc3ludGF4IGVycm9yLCB3aGlsZSBjb3B5aW5nIGEgCnJlY3RhbmdsZSBpbnRvIGEgcG9seWdvbiBkb2VzIG1ha2Ugc2Vuc2UuJm5ic3A7IFRoZSA8Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyI+CmFzc2lnbigpPC9mb250PiBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgdG8gY29weSBnZW9tZXRyeSBkYXRhIGJldHdlZW4gY29uY2VwdHMgCmluc3RhbnRpYXRlcyBmb3IgdGhlIDQ5IGNvbWJpbmF0aW9ucyBvZiBjb25jZXB0cyB0aGF0IG1ha2Ugc2Vuc2UsIGJ1dCBub3QgZm9yIAp0aGUgNTEgY29tYmluYXRpb25zIHRoYXQgYXJlIGlsbGVnYWwuJm5ic3A7IFRoZSBzeW50YXggZXJyb3IgeW91IHdpbGwgc2VlIHdoZW4gCmF0dGVtcHRpbmcgYW4gaWxsZWdhbCBhc3NpZ24gb3BlcmF0aW9uIGlzIHNpbXBsZSBhbmQgY2xlYXIgYmVjYXVzZSB1c2Ugb2YgU0ZJTkFFIApieSB0aGUgbGlicmFyeSB0byBvdmVybG9hZCBnZW5lcmljIGZ1bmN0aW9ucyBtZWFucyBubyBtYXRjaGluZyBmdW5jdGlvbiBpcyBmb3VuZCAKYnkgdGhlIGNvbXBpbGVyIGluIGNhc2VzIHdoZXJlIG5vIG92ZXJsb2FkIGlzIHByb3ZpZGVkLjwvcD4KPHA+Cjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij5lcnJvcjogbm8gbWF0Y2hpbmcgZnVuY3Rpb24gZm9yIGNhbGwgdG8gJ2Fzc2lnbihyZWN0YW5nbGVfZGF0YSZsdDtpbnQmZ3Q7JmFtcDssIApwb2x5Z29uX2RhdGEmbHQ7aW50Jmd0OyZhbXA7KSc8L2ZvbnQ+PC9wPgo8cD5Bc3NvY2lhdGVkIHdpdGggZWFjaCBjb25jZXB0IGlzIGEgdHJhaXRzIHN0cnVjdCB0aGF0IGdlbmVyYWxseSBtdXN0IGJlIApzcGVjaWFsaXplZCBmb3IgYSBnaXZlbiBkYXRhIHR5cGUgdG8gcHJvdmlkZSB0aGUgY29uY2VwdCBtYXBwaW5nIGJldHdlZW4gdGhlIAppbnRlcmZhY2VzIG9mIHRoZSBkYXRhIHR5cGUgYW5kIHRoZSBleHBlY3RlZCBiZWhhdmlvcnMgb2YgYW4gb2JqZWN0IG9mIHRoYXQgdHlwZSAKcmVxdWlyZWQgYnkgdGhlIGxpYnJhcnkuJm5ic3A7IFRoZSBsaWJyYXJ5IGFsc28gcHJvdmlkZXMgaXRzIG93biBkYXRhIHR5cGVzIGZvciAKZWFjaCBjb25jZXB0IHRoYXQgY29uZm9ybSB0byB0aGUgZGVmYXVsdCB0cmFpdHMgZGVmaW5pdGlvbi4mbmJzcDsgVGhlc2UgbGlicmFyeSAKcHJvdmlkZWQgZGF0YSB0eXBlcyBhcmUgbm8gbW9yZSB0aGFuIGR1bWIgY29udGFpbmVycyB0aGF0IHByb3ZpZGUgYWNjZXNzIHRvIAp0aGVpciBkYXRhIGFuZCByZWx5IG9uIHRoZSBnZW5lcmljIGxpYnJhcnkgZnVuY3Rpb25zIHRvIGVuZm9yY2UgaW52YXJpYW50cyBhbmQgCnByb3ZpZGUgdXNlZnVsIGJlaGF2aW9ycyBzcGVjaWZpYyB0byB0aGVpciB0eXBlIG9mIGdlb21ldHJ5IHRoYXQgd291bGQgbm9ybWFsbHkgCmJlIG1lbWJlciBmdW5jdGlvbnMgb2YgdGhlIGRhdGEgdHlwZSBpbiBhbiBPTyBkZXNpZ24uJm5ic3A7IFRoZSBsaWJyYXJ5IGRhdGEgCnR5cGVzIGNvbmZvcm0gdG8gdGhlIGRlZmF1bHQgdHJhaXRzIGFzc29jaWF0ZWQgd2l0aCB0aGVpciByZWxhdGVkIGdlb21ldHJ5IApjb25jZXB0IGFuZCBhcmUgcmVnaXN0ZXJlZCBhcyBtb2RlbHMgb2YgdGhhdCBjb25jZXB0LiZuYnNwOyBXaGVuIGEgZGF0YSAKdHlwZSBoYXMgYmVlbiBtYXBwZWQgdG8gYSBjb25jZXB0IHRocm91Z2ggdHJhaXRzIGl0IG5lZWRzIHRvIGJlIHJlZ2lzdGVyZWQgCmFzIHRoYXQgY29uY2VwdHVhbCB0eXBlIHdpdGggdGhlIGxpYnJhcnkgYnkgCnNwZWNpYWxpemluZyB0aGUgZ2VvbWV0cnlfY29uY2VwdCBtZXRhLWZ1bmN0aW9uLiZuYnNwOyBPbmNlIG1hcHBlZCBhbmQgCnJlZ2lzdGVyZWQsIGEgdXNlciBkYXRhIHR5cGUgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHdpdGggbGlicmFyeSBkYXRhIHR5cGVzIAppbiB0aGUgZ2VuZXJpYyBmcmVlIGZ1bmN0aW9ucyB0aGF0IGFyZSBvdmVybG9hZGVkIG9uIGNvbmNlcHQuPHA+VHJhaXRzIGZvciAKbWFwcGluZyBhIGRhdGEgdHlwZSB0byBhIGNvbmNlcHQgYXJlIGJyb2tlbiBkb3duIGludG8gbXV0YWJsZSBhbmQgcmVhZCBvbmx5IAp0cmFpdHMuJm5ic3A7IFJlYWQgb25seSB0cmFpdHMgYXJlIHNwZWNpYWxpemVkIGludGVybmFsbHkgdG8gd29yayB3aXRoIGFueSB0eXBlcyAKdGhhdCBhcmUgcmVmaW5lbWVudHMgb2YgYSBjb25jZXB0LiZuYnNwOyBUaGUgbXV0YWJsZSB0cmFpdHMgYXJlIGRlZmluZWQgb25seSBmb3IgCm9iamVjdHMgdGhhdCBleGFjdGx5IG1vZGVsIHRoZSBjb25jZXB0LiZuYnNwOyBCb3RoIHJlYWQgb25seSB0cmFpdHMgYW5kIG11dGFibGUgCnRyYWl0cyBuZWVkIHRvIGJlIGRlZmluZWQgZm9yIGEgdHlwZSB0byBtb2RlbCBhIGNvbmNlcHQsIGJ1dCBhIHR5cGUgY2FuIGJlIHVzZWQgCndpdGhvdXQgZGVmaW5pbmcgdGhlIG11dGFibGUgdHJhaXRzIGFzIGxvbmcgYXMgbm8gQVBJIHRoYXQgbmVlZHMgdG8gbW9kaWZ5IHRoZSAKb2JqZWN0IGlzIHVzZWQgd2l0aCB0aGF0IHR5cGUuJm5ic3A7IEZvciBleGFtcGxlLCBhIHRyaWFuZ2xlIHR5cGUgY291bGQgYmUgCnJlZ2lzdGVyZWQgYXMgYSBwb2x5Z29uX2NvbmNlcHQgYW5kIHRoZSByZWFkIG9ubHkgdHJhaXRzIGJ1dCBub3QgdGhlIG11dGFibGUgCnRyYWl0cyBkZWZpbmVkIGZvciB0aGF0IHRyaWFuZ2xlIHR5cGUuJm5ic3A7IFRoaXMgd291bGQgYWxsb3cgdGhlIHRyaWFuZ2xlIHR5cGUgCnRvIGJlIHBhc3NlZCBpbnRvIGFueSBBUEkgdGhhdCBleHBlY3RzIGEgY29uc3QgcmVmZXJlbmNlIHRvIGFuIG9iamVjdCB0aGF0IG1vZGVscyAKcG9seWdvbi4mbmJzcDsgCjxwPkFuIG9iamVjdCB0aGF0IGlzIGEgbW9kZWwgb2YgYSBnaXZlbiBjb25jZXB0IGNhbiB1c3VhbGx5IGJlIHZpZXdlZCBhcyBhIG1vZGVsIG9mIGFueSBvZiBpdHMgCnJlZmluZW1lbnRzIGlmIGl0IGlzIGRldGVybWluZWQgYXQgcnVudGltZSB0byBjb25mb3JtIHRvIHRoZSByZXN0cmljdGlvbnMgb2YgCnRob3NlIGNvbmNlcHRzLiZuYnNwOyBUaGlzIGNvbmNlcHQgY2FzdGluZyBpcyBhY2NvbXBsaXNoZWQgdGhyb3VnaCB0aGUKPGZvbnQgZmFjZT0iQ291cmllciBOZXciPnZpZXdfYXMmbHQ7Jmd0OygpPC9mb250PiBmdW5jdGlvbi4mbmJzcDsgRm9yIGV4YW1wbGUgaWYgCmFuIG9iamVjdCBvZiBjb25jZXB0dWFsIHR5cGUgcG9seWdvbiA5MCBoYXMgZm91ciBzaWRlcyBpdCBtdXN0IGJlIGEgcmVjdGFuZ2xlLCAKYW5kIGNhbiBiZSB2aWV3ZWQgYXMgYSByZWN0YW5nbGUgd2l0aCB0aGUgZm9sbG93aW5nIHN5bnRheDo8L3A+CjxwPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij52aWV3X2FzJmx0O3JlY3RhbmdsZV9jb25jZXB0Jmd0Oyhwb2x5Z29uXzkwX29iamVjdCk8L2ZvbnQ+PC9wPgo8cD5UaGUgcmV0dXJuIHZhbHVlIG9mIDxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij52aWV3X2FzJmx0OyZndDsoKTwvZm9udD4gY2FuIGJlIApwYXNzZWQgaW50byBhbnkgaW50ZXJmYWNlIHRoYXQgZXhwZWN0cyBhbiBvYmplY3Qgb2YgdGhlIGNvbmNlcHR1YWwgdHlwZSAKc3BlY2lmaWVkIGluIGl0cyB0ZW1wbGF0ZSBwYXJhbWV0ZXIuJm5ic3A7IFRoZSBleGNlcHRpb24gdG8gdGhpcyBhYmlsaXR5IHRvIApjb25jZXB0IGNhc3QgZ2VvbWV0cmljIG9iamVjdHMgaXMgdGhhdCBwb2x5Z29uIHNldCBvYmplY3RzIGNhbm5vdCBiZSB2aWV3ZWQgYXMgCmluZGl2aWR1YWwgcG9seWdvbnMgb3IgcmVjdGFuZ2xlcy48L3A+IDx0cj4KPHRkIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM4LCAyMzgsIDIzOCk7IiBub3dyYXA9IjEiIHZhbGlnbj0idG9wIj4KICAgICZuYnNwOzwvdGQ+Cjx0ZCBzdHlsZT0icGFkZGluZy1sZWZ0OiAxMHB4OyBwYWRkaW5nLXJpZ2h0OiAxMHB4OyBwYWRkaW5nLWJvdHRvbTogMTBweDsiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTAwJSI+CgoKPHRhYmxlIGNsYXNzPSJkb2NpbmZvIiBydWxlcz0ibm9uZSIgZnJhbWU9InZvaWQiIGlkPSJ0YWJsZTEiPgoJPGNvbGdyb3VwPgoJCTxjb2wgY2xhc3M9ImRvY2luZm8tbmFtZSI+PGNvbCBjbGFzcz0iZG9jaW5mby1jb250ZW50Ij4KCTwvY29sZ3JvdXA+Cgk8dGJvZHkgdkFsaWduPSJ0b3AiPgoJCTx0cj4KCQkJPHRoIGNsYXNzPSJkb2NpbmZvLW5hbWUiPkNvcHlyaWdodDo8L3RoPgoJCQk8dGQ+Q29weXJpZ2h0IKkgSW50ZWwgQ29ycG9yYXRpb24gMjAwOC0yMDEwLjwvdGQ+CgkJPC90cj4KCQk8dHIgY2xhc3M9ImZpZWxkIj4KCQkJPHRoIGNsYXNzPSJkb2NpbmZvLW5hbWUiPkxpY2Vuc2U6PC90aD4KCQkJPHRkIGNsYXNzPSJmaWVsZC1ib2R5Ij5EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgCgkJCVZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIDx0dCBjbGFzcz0ibGl0ZXJhbCI+CgkJCTxzcGFuIGNsYXNzPSJwcmUiPkxJQ0VOU0VfMV8wLnR4dDwvc3Bhbj48L3R0PiBvciBjb3B5IGF0CgkJCTxhIGNsYXNzPSJyZWZlcmVuY2UiIHRhcmdldD0iX3RvcCIgaHJlZj0iaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ij4KCQkJaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0PC9hPik8L3RkPgoJCTwvdHI+CjwvdGFibGU+Cgo8L2h0bWw+