PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIKImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CjxodG1sPgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PQogICAgICAidGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+Cjx0aXRsZT5EUkwgUmVtb3RlIE1ldGhvZCBJbnZvY2F0aW9uIEZyYW1ld29yazwvdGl0bGU+CjxsaW5rIGhyZWY9ImRybC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgo8L2hlYWQ+Cjxib2R5Pgo8aDE+IDxhIG5hbWU9InRvcCI+PC9hPkRSTCBSZW1vdGUgTWV0aG9kIEludm9jYXRpb24gRnJhbWV3b3JrPC9oMT4KPHAgY2xhc3M9IlRPQ0hlYWRpbmciPiA8YSBocmVmPSIjUmV2aXNpb25fSGlzdG9yeSI+UmV2aXNpb24gSGlzdG9yeTwvYT4gPC9wPgo8cCBjbGFzcz0iVE9DSGVhZGluZyI+IDxhIGhyZWY9IiNEaXNjbGFpbWVyX2FuZF9MZWdhbCI+RGlzY2xhaW1lciBhbmQgTGVnYWwgSW5mb3JtYXRpb248L2E+IAo8L3A+CjxwIGNsYXNzPSJUT0NIZWFkaW5nIj4gPGEgaHJlZj0iI0Fib3V0X1RoaXNfRG9jdW1lbnQiPiBBYm91dCBUaGlzIERvY3VtZW50PC9hPiAKPC9wPgo8cCBjbGFzcz0iVE9DIj4gPGEgaHJlZj0iI1B1cnBvc2UiPlB1cnBvc2U8L2E+IDwvcD4KPHAgY2xhc3M9IlRPQyI+IDxhIGhyZWY9IiNJbnRlbmRlZF9BdWRpZW5jZSI+SW50ZW5kZWQgQXVkaWVuY2U8L2E+IDwvcD4KPHAgY2xhc3M9IlRPQyI+IDxhIGhyZWY9IiNEb2N1bWVudGF0aW9uX0NvbnZlbnRpb25zIj5Eb2N1bWVudGF0aW9uIENvbnZlbnRpb25zPC9hPiAKPC9wPgo8cCBjbGFzcz0iVE9DSGVhZGluZyI+IDxhIGhyZWY9IiNvdmVydmlldyI+IFJNSSBPdmVydmlldzwvYT4gPC9wPgo8cCBjbGFzcz0iVE9DSGVhZGluZyI+IDxhIGhyZWY9IiNkcmwiPlJNSSBpbiBEUkw8L2E+IDwvcD4KPHAgY2xhc3M9IlRPQyI+IDxhIGhyZWY9IiNhYm91dCI+QWJvdXQ8L2E+IDwvcD4KPHAgY2xhc3M9IlRPQyI+IDxhIGhyZWY9IiNmZWF0dXJlcyI+RmVhdHVyZXM8L2E+IDwvcD4KPHAgY2xhc3M9IlRPQyI+IDxhIGhyZWY9IiNTeXN0ZW0gUHJvcGVydGllcyI+U3lzdGVtIFByb3BlcnRpZXM8L2E+IDwvcD4KPHAgY2xhc3M9IlRPQyI+IDxhIGhyZWY9IiNSTUkgUmVnaXN0cnkiPlJNSSBSZWdpc3RyeTwvYT4gPC9wPgo8cCBjbGFzcz0iVE9DIj4gPGEgaHJlZj0iI1JNSSBhY3RpdmF0aW9uIj5STUkgQWN0aXZhdGlvbjwvYT4gPC9wPgo8cCBjbGFzcz0iVE9DIj4gPGEgaHJlZj0iI1JNSSBjb21waWxlciI+Uk1JIENvbXBpbGVyPC9hPiA8L3A+CjxwIGNsYXNzPSJUT0NIZWFkaW5nIj4gPGEgaHJlZj0iI1JlZmVyZW5jZXMiPlJlZmVyZW5jZXM8L2E+IDwvcD4KPGgxPiA8YSBuYW1lPSJSZXZpc2lvbl9IaXN0b3J5Ij48L2E+UmV2aXNpb24gSGlzdG9yeSA8L2gxPgo8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgogIDx0cj4gCiAgICA8dGQgd2lkdGg9IjI0JSIgY2xhc3M9IlRhYmxlSGVhZGluZyI+IFZlcnNpb24gPC90ZD4KICAgIDx0ZCB3aWR0aD0iNDklIiBjbGFzcz0iVGFibGVIZWFkaW5nIj4gVmVyc2lvbiBJbmZvcm1hdGlvbiA8L3RkPgogICAgPHRkIGNsYXNzPSJUYWJsZUhlYWRpbmciPiBEYXRlIDwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIHdpZHRoPSIyNCUiIGNsYXNzPSJUYWJsZUNlbGwiPiBJbml0aWFsIHZlcnNpb24gPC90ZD4KICAgIDx0ZCB3aWR0aD0iNDklIiBjbGFzcz0iVGFibGVDZWxsIj4gVmFzaWx5IFpha2hhcm92LCBOYWR5YSBNb3Jvem92YSwgU3ZldGxhbmEgCiAgICAgIEtvbm92YWxvdmE6IGRvY3VtZW50IGNyZWF0ZWQuIDwvdGQ+CiAgICA8dGQgY2xhc3M9IlRhYmxlQ2VsbCI+IE1hcmNoIDIzLCAyMDA2IDwvdGQ+CiAgPC90cj4KPC90YWJsZT4KPGgxPiA8YSBuYW1lPSJEaXNjbGFpbWVyX2FuZF9MZWdhbCI+PC9hPkRpc2NsYWltZXIgYW5kIExlZ2FsIEluZm9ybWF0aW9uIDwvaDE+CjxwPiBDb3B5cmlnaHQgMjAwNS0yMDA2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiBvciBpdHMgbGljZW5zb3JzLCBhcyBhcHBsaWNhYmxlLiAKPC9wPgo8cD4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIExpY2Vuc2UpOyB5b3UgbWF5IG5vdCAKICB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiAKICB0aGUgTGljZW5zZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPiAKICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjA8L2E+LiA8L3A+CjxwPiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIAogIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIEFTIElTIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyAKICBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgCiAgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4gPC9wPgo8aDE+IDxhIG5hbWU9IkFib3V0X1RoaXNfRG9jdW1lbnQiPjwvYT5BYm91dCBUaGlzIERvY3VtZW50IDwvaDE+CjxoMj4gPGEgbmFtZT0iUHVycG9zZSI+PC9hPlB1cnBvc2UgPC9oMj4KPHA+VGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIERSTCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUmVtb3RlIE1ldGhvZCBJbnZvY2F0aW9uIAogIChSTUkpIGZyYW1ld29yayBbPGEgaHJlZj0iI1JNSVNwZWMiPjE8L2E+XSBhbmQgZ2l2ZXMgZGV0YWlscyBvbiB0aGUgZnJhbWV3b3JrIAogIGRlc2lnbi48L3A+CjxoMj4gPGEgbmFtZT0iSW50ZW5kZWRfQXVkaWVuY2UiPjwvYT5JbnRlbmRlZCBBdWRpZW5jZSA8L2gyPgo8cD5UaGUgdGFyZ2V0IGF1ZGllbmNlIGZvciB0aGUgZG9jdW1lbnQgaW5jbHVkZXMgYSB3aWRlIGNvbW11bml0eSBvZiBlbmdpbmVlcnMgCiAgaW50ZXJlc3RlZCBpbiB1c2luZyB0aGUgUk1JIGZyYW1ld29yayBpbiB0aGVpciBhcHBsaWNhdGlvbnMgYW5kIGluIGZ1cnRoZXIgd29yayAKICB3aXRoIHRoZSBwcm9kdWN0IHRvIGNvbnRyaWJ1dGUgdG8gaXRzIGRldmVsb3BtZW50LiBUaGUgZG9jdW1lbnQgYXNzdW1lcyB0aGF0IAogIHJlYWRlcnMgYXJlIGZhbWlsaWFyIHdpdGggUk1JIGFuZCB0aGUgSmF2YTxhIGhyZWY9IiMqIj4qPC9hPiBwcm9ncmFtbWluZyBsYW5ndWFnZS48L3A+CjxoMj4gPGEgbmFtZT0iRG9jdW1lbnRhdGlvbl9Db252ZW50aW9ucyI+PC9hPkRvY3VtZW50YXRpb24gQ29udmVudGlvbnMgPC9oMj4KPHA+IFRoaXMgZG9jdW1lbnQgdXNlcyB0aGUgPGEgaHJlZj0gImNvbnZlbnRpb25zLmh0bSIgdGFyZ2V0PQogICAgICAgICAiX2JsYW5rIj51bmlmaWVkIGNvbnZlbnRpb25zPC9hPiBmb3IgdGhlIERSTCBkb2N1bWVudGF0aW9uIGtpdC4gPC9wPgo8cCBjbGFzcz0iYmFja3RvdG9wIj4gPGEgaHJlZj0iI3RvcCI+QmFjayB0byBUb3A8L2E+IDwvcD4KPGgxPiA8YSBuYW1lPSJvdmVydmlldyI+PC9hPlJNSSBPdmVydmlldyA8L2gxPgo8cD5UaGUgUmVtb3RlIE1ldGhvZCBJbnZvY2F0aW9uIChSTUkpIGZyYW1ld29yayBlbmFibGVzIGFuIG9iamVjdCBpbiBvbmUgdmlydHVhbCAKICBtYWNoaW5lIHRvIGNhbGwgbWV0aG9kcyBvZiBhbiBvYmplY3QgaW4gYW5vdGhlciBvbmUsIHRvIGNyZWF0ZSBhcHBsaWNhdGlvbnMgCiAgZGlzdHJpYnV0ZWQgb24gdmFyaW91cyBKYXZhPGEgaHJlZj0iIyoiPio8L2E+IHZpcnR1YWwgbWFjaGluZXMgb24gdGhlIHNhbWUgb3IgCiAgZGlmZmVyZW50IGhvc3RzLjwvcD4KPHAgY2xhc3M9ImJhY2t0b3RvcCI+IDxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gVG9wPC9hPiA8L3A+CjxoMT4gPGEgbmFtZT0iZHJsIj48L2E+Uk1JIGluIERSTDwvaDE+CjxoMj4gPGEgbmFtZT0iYWJvdXQiPjwvYT5BYm91dCA8L2gyPgo8cD5UaGUgUk1JIGZyYW1ld29yayBpcyBhbiBpbmRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbiBvZiBSTUkgWzxhIGhyZWY9IiNSTUlTcGVjIj4xPC9hPl0uIDwvcD4KPHAgY2xhc3M9ImJhY2t0b3RvcCI+IDxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gVG9wPC9hPiA8L3A+CjxoMj4gPGEgbmFtZT0iRmVhdHVyZXMiPjwvYT4gRmVhdHVyZXMgPC9oMj4KPHA+VGhlIERSTCBSTUkgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gcHVibGljIEFQSXMgb25seSwgc28gdGhhdCBwbHVnZ2luZyBEUkwgCiAgUk1JIGludG8gb3RoZXIgSmF2YTxhIGhyZWY9IiMqIj4qPC9hPiBjbGFzcyBsaWJyYXJpZXMgcmVxdWlyZXMgbm8gbW9kaWZpY2F0aW9ucy4gCiAgTm8gbmF0aXZlIGNvZGUgb3IgVk0gaW1wbGVtZW50YXRpb24gZGVwZW5kZW5jaWVzIGFyZSBwcmVzZW50LiA8L3A+CjxwPlRoZSBEUkwgUk1JIGZyYW1ld29yayBzdXBwb3J0cyB2ZXJzaW9ucyAxLjEgYW5kIDEuMiBvZiB0aGUgUk1JIHByb3RvY29sLCBidXQgCiAgbm90IHRoZSBkZXByZWNhdGVkIG11bHRpcGxleGluZyBwcm90b2NvbC48L3A+CjxwPlRoZSBwcm9kdWN0IGltcGxlbWVudHMgdGhlIEphdmE8YSBocmVmPSIjKiI+KjwvYT4gMS41LjAgZHluYW1pYyBwcm94eSBzdHVicyAKICBnZW5lcmF0aW9uIHJlcHJlc2VudGVkIGJ5OjwvcD4KPHVsPgogIDxsaT4gVGhlIDxjb2RlPmphdmEucm1pLnNlcnZlci5VbmljYXN0UmVtb3RlT2JqZWN0PC9jb2RlPiBjbGFzcyAKICA8bGk+IFRoZSA8Y29kZT5qYXZhLnJtaS5zZXJ2ZXIuUmVtb3RlT2JqZWN0SW52b2NhdGlvbkhhbmRsZXI8L2NvZGU+IGNsYXNzIAo8L3VsPgo8cD5GdWxseS1mZWF0dXJlZCBsb2dnaW5nIGlzIGltcGxlbWVudGVkIGJvdGggdGhyb3VnaCB0aGUgY29tbWFuZCBsaW5lIGFuZCB0aHJvdWdoIAogIHRoZSBjb21tb24gbG9nZ2luZyBtZWNoYW5pc20gaW4gdGhlIDxjb2RlPmphdmEudXRpbC5sb2dnaW5nIDwvY29kZT5wYWNrYWdlLjwvcD4KPHAgY2xhc3M9ImJhY2t0b3RvcCI+IDxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gVG9wPC9hPiA8L3A+CjxoMj4gPGEgbmFtZT0iU3lzdGVtIFByb3BlcnRpZXMiPjwvYT4gU3lzdGVtIFByb3BlcnRpZXMgPC9oMj4KPHA+VGhlIFJNSSBmcmFtZXdvcmsgc3VwcG9ydHMgdGhlIGdlbmVyYWwgPGNvZGU+amF2YS5ybWkuKjwvY29kZT4gcHJvcGVydGllcyBhbmQgdGhlIAppbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyA8Y29kZT5oYXJtb255LnJtaS4qPC9jb2RlPiBwcm9wZXJ0aWVzLgogWW91IGNhbiBhbHNvIGNvbnN1bHQgYWRkaXRpb25hbCByZXNvdXJjZXMKIG9uIFJNSSBwcm9wZXJ0aWVzIFs8YSBocmVmPSIjamF2YXJtaSI+MjwvYT5dIGFuZCBbPGEgaHJlZj0iI3N1bnJtaSI+MzwvYT5dLgo8cCBjbGFzcz0iYmFja3RvdG9wIj4gPGEgaHJlZj0iI3RvcCI+QmFjayB0byBUb3A8L2E+IDwvcD4KPGgyPiA8YSBuYW1lPSJSTUkgUmVnaXN0cnkiPjwvYT4gUk1JIFJlZ2lzdHJ5PC9oMj4KPHA+VGhlIFJNSSBSZWdpc3RyeSBtYXBzIG5hbWVzIHRvIHJlbW90ZSBvYmplY3RzLCBzbyB0aGF0IHlvdSBjYW4gbG9vayB0aGVtIHVwIAogIGJ5IG5hbWVzIGxhdGVyLjwvcD4KPHA+VGhlIERSTCBSTUkgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgY29udGFpbiB0aGUgPGNvZGU+cm1pcmVnaXN0cnkgPC9jb2RlPmJpbmFyeSAKICB0b29sLiA8L3A+CjxwPkluc3RlYWQgb2YgdGhpcyB0b29sLCBydW46PC9wPgo8cHJlPmphdmEgb3JnLmFwYWNoZS5oYXJtb255LnJtaS5yZWdpc3RyeS5SZWdpc3RyeUltcGwgW3BvcnRdPC9wcmU+CjxwPkZvciA8Y29kZT5bcG9ydF08L2NvZGU+LCB1c2UgdGhlIG51bWJlciBvZiB0aGUgcG9ydCB3aGVyZSB5b3UgbmVlZCB0byBzdGFydCAKICB0aGUgcmVnaXN0cnkuIE90aGVyd2lzZSwgdGhlIHJlZ2lzdHJ5IHN0YXJ0cyBhdCBwb3J0IDEwOTkuPC9wPgo8cCBjbGFzcz0iYmFja3RvdG9wIj4gPGEgaHJlZj0iI3RvcCI+QmFjayB0byBUb3A8L2E+IDwvcD4KPGgyPiA8YSBuYW1lPSJSTUkgQWN0aXZhdGlvbiI+PC9hPiBSTUkgQWN0aXZhdGlvbjwvaDI+CjxwPlRoZSBSTUkgYWN0aXZhdGlvbiBmcmFtZXdvcmsgaXMgYSBtZWNoYW5pc20gZm9yIGxhenkgaW5pdGlhbGl6YXRpb24gb2YgUk1JIAogIHNlcnZpY2VzLiBUaGUgYWN0aXZhdGlvbiBmcmFtZXdvcmsgY29uc2lzdHMgb2YgdGhlIFJNSSBhY3RpdmF0aW9uIGRhZW1vbiAoUk1JRCkgCiAgYW5kIGEgc2V0IG9mIGF1eGlsaWFyeSBjbGFzc2VzIGluIHRoZSA8Y29kZT5qYXZhLnJtaS5hY3RpdmF0aW9uIDwvY29kZT5wYWNrYWdlLCAKICB3aGljaCByZWdpc3RlciBzZXJ2aWNlcyBpbiBSTUlEIGFuZCB1c2UgdGhlbS48L3A+CjxoMz5STUkgQWN0aXZhdGlvbiBEYWVtb248L2gzPgo8cD5UaGUgRFJMIFJNSSBmcmFtZXdvcmsgZG9lcyBub3QgY29udGFpbiB0aGUgPGNvZGU+cm1pZCA8L2NvZGU+YmluYXJ5IHRvb2wuIDwvcD4KPHA+SW5zdGVhZCBvZiB0aGlzIHRvb2wsIHJ1bjo8L3A+CjxwcmU+amF2YSBvcmcuYXBhY2hlLmhhcm1vbnkucm1pLmFjdGl2YXRpb24uUm1pZCBbb3B0aW9uc108L3ByZT4KPHA+Rm9yIDxjb2RlPltvcHRpb25zXTwvY29kZT4sIHlvdSBjYW4gdXNlIHRoZSB0aGUgPGNvZGU+cm1pZDwvY29kZT4gYmluYXJ5IHRvb2wgCiAgb3B0aW9ucy4gVGhlIG9ubHkgZXhjZXB0aW9uIGlzIHRoZTxjb2RlPjxub2JyPiAtSjwvbm9icj4gPC9jb2RlPm9wdGlvbnMsIHdoaWNoIAogIHlvdSBtdXN0IHBhc3MgZGlyZWN0bHkgdG8gdGhlIEphdmE8YSBocmVmPSIjKiI+KjwvYT4gdmlydHVhbCBtYWNoaW5lLiA8L3A+CjxwIGNsYXNzPSJjbGFzcyI+Uk1JRCBNb25pdG9yaW5nPC9wPgo8cD5Zb3UgY2FuIHBsdWcgYW4gZXh0ZXJuYWwgYWdlbnQgdG8gbW9uaXRvciB0aGUgUk1JRCBpbnRlcm5hbCBzdGF0ZS4gVG8gdHVybiAKICBvbiB0aGlzIGZlYXR1cmUsIHVzZSB0aGUgPGNvZGU+PG5vYnI+LW1vbml0b3I8L25vYnI+PC9jb2RlPiBjb21tYW5kLWxpbmUgb3B0aW9uLjwvcD4KPHA+WW91IGNhbiBzcGVjaWZ5IHlvdXIgb3duIGltcGxlbWVudGF0aW9uIG9mIHRoZSA8Y29kZT5vcmcuYXBhY2hlLmhhcm1vbnkucm1pLmFjdGl2YXRpb24uUm1pZE1vbml0b3I8L2NvZGU+IAogIGludGVyZmFjZSBieSBkZWZpbmluZyB0aGUgPGNvZGU+b3JnLmFwYWNoZS5oYXJtb255LnJtaS5hY3RpdmF0aW9uLm1vbml0b3I8L2NvZGU+IAogIHByb3BlcnR5LiBPdGhlcndpc2UsIHRoZSBkZWZhdWx0IGVtcHR5IG1vbml0b3IgaW1wbGVtZW50YXRpb24gaXMgdXNlZC48L3A+CjxkbD4KICA8ZHQ+RXhhbXBsZTwvZHQ+CjwvZGw+CjxwcmU+CmphdmEgPG5vYnI+LURqYXZhPC9ub2JyPi5zZWN1cml0eS5wb2xpY3k9cm1pZC5wb2xpY3kKICAgICA8bm9icj4tRG9yZzwvbm9icj4uYXBhY2hlLmhhcm1vbnkucm1pLmFjdGl2YXRpb24ubW9uaXRvcj1teS5wYWNrYWdlLk15TW9uaXRvcgogICAgIG9yZy5hcGFjaGUuaGFybW9ueS5ybWkuYWN0aXZhdGlvbi5SbWlkIC1tb25pdG9yPC9wcmU+CjxwIGNsYXNzPSJjbGFzcyI+Q3VzdG9tIGFjdGl2YXRpb24gZ3JvdXBzPC9wPgo8cD5UaGUgRFJMIFJNSSBkYWVtb24gcHJvdmlkZXMgZnVsbCBzdXBwb3J0IGZvciBjdXN0b20gYWN0aXZhdGlvbiBncm91cHMgaW4gYWNjb3JkYW5jZSAKICB3aXRoIHRoZSBzcGVjaWZpY2F0aW9uIFs8YSBocmVmPSIjUk1JU3BlYyI+MTwvYT5dLiA8L3A+CjxwIGNsYXNzPSJjbGFzcyI+UGVyc2lzdGVuY2UgPC9wPgo8cD5UaGUgUk1JIGRhZW1vbiBzYXZlcyBpdHMgc3RhdGUgaW50byB0d28gZmlsZXMgaW4gdGhlIDxjb2RlPmxvZzwvY29kZT4gc3ViZGlyZWN0b3J5IAogIG9mIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBvbiB0aGUgaGFyZCBkcml2ZS48YnI+CiAgVG8gY2hhbmdlIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBmaWxlcywgdXNlIHRoZSA8Y29kZT48bm9icj4tbG9nPC9ub2JyPjwvY29kZT4gCiAgb3B0aW9uLjwvcD4KPHAgY2xhc3M9Im5vdGUiPk5vdGU8L3A+CjxwIGNsYXNzPSJub3RldGV4dCI+VGhlIGZpbGVzJyBmb3JtYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBmb3JtYXQuPC9wPgo8cCBjbGFzcz0iYmFja3RvdG9wIj4gPGEgaHJlZj0iI3RvcCI+QmFjayB0byBUb3A8L2E+IDwvcD4KPGgyPjxhIG5hbWU9IlJNSSBDb21waWxlciI+PC9hPiBSTUkgQ29tcGlsZXI8L2gyPgo8cD5UaGUgUk1JIGNvbXBpbGVyIGdlbmVyYXRlcyBzdHVicyBhbmQgc2tlbGV0b25zIGZvciByZW1vdGUgb2JqZWN0cy48L3A+CjxwPlRoZSBEUkwgUk1JIGZyYW1ld29yayBkb2VzIG5vdCBjb250YWluIHRoZSA8Y29kZT5ybWljPC9jb2RlPiBiaW5hcnkgdG9vbC4gPGJyPgogIEluc3RlYWQgb2YgdGhpcyB0b29sLCBydW46PC9wPgo8cHJlPmphdmEgb3JnLmFwYWNoZS5oYXJtb255LnJtaS5jb21waWxlci5NYWluIFtvcHRpb25zXSAmbHQ7Y2xhc3MgbmFtZSZndDsgPC9wcmU+CjxoMz4gQ2xhc3MgbG9hZGluZzwvaDM+CjxwPkR1cmluZyB0aGlzIG9wZXJhdGlvbiwgdGhlIFJNSSBjb21waWxlciB1c2VzIHRoZSBzeXN0ZW0gY2xhc3MgbG9hZGVyLCB3aGljaCAKICBzZXRzIGNlcnRhaW4gbGltaXRhdGlvbnMgb24gaXRzIGNvbmZpZ3VyYXRpb24uIElmIHlvdSB1c2UgdGhlIDxjb2RlPjxub2JyPi1jbGFzc3BhdGg8L25vYnI+PC9jb2RlPiAKICBvciB0aGUgPGNvZGU+PG5vYnI+LWJvb3RjbGFzc3BhdGg8L25vYnI+PC9jb2RlPiBvcHRpb24sIG1ha2Ugc3VyZSB0aGF0IHlvdSBzZXQgCiAgdGhlIGNvcnJlc3BvbmRpbmcgb3B0aW9ucyBmb3IgSmF2YTxhIGhyZWY9IiMqIj4qPC9hPiB2aXJ0dWFsIG1hY2hpbmUgcnVubmluZyAKICB0aGUgY29tcGlsZXIuIElmIHlvdSBkbyBub3Qgc3BlY2lmeSB0aGUgcHJvcGVyIG9wdGlvbnMsIDxpPkNsYXNzIG5vdCBmb3VuZCA8L2k+IAogIGVycm9ycyBtaWdodCBvY2N1ciBvciBzeXN0ZW0gY2xhc3NlcyBtaWdodCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIG9uZXMgc3BlY2lmaWVkIAogIGluIHRoZTxjb2RlPjxub2JyPiAtYm9vdGNsYXNzcGF0aDwvbm9icj48L2NvZGU+IG9wdGlvbi4gPC9wPgo8ZGw+CiAgPGR0PkV4YW1wbGU8L2R0Pgo8L2RsPgo8cHJlPmphdmEgPG5vYnI+LWNsYXNzcGF0aDwvbm9icj4gcGF0aDE6cGF0aDIgPG5vYnI+LVhib290Y2xhc3NwYXRoOnBhdGgzOnBhdGg0PC9ub2JyPiAKICAgICBvcmcuYXBhY2hlLmhhcm1vbnkucm1pLmNvbXBpbGVyLk1haW4gPG5vYnI+LWNsYXNzcGF0aDwvbm9icj4gcGF0aDE6cGF0aDIKICAgICA8bm9icj4tYm9vdGNsYXNzcGF0aDwvbm9icj4gcGF0aDM6cGF0aDQgW290aGVyIG9wdGlvbnNdICZsdDtjbGFzcyBuYW1lcz48L3ByZT4KPHAgY2xhc3M9Im5vdGUiPk5vdGU8L3A+CjxwIGNsYXNzPSJub3RldGV4dCI+IFRoZSBjb21waWxlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSA8Y29kZT4gPG5vYnI+LWV4dGRpcnM8L25vYnI+PC9jb2RlPiAKICBvcHRpb24uPC9wPgo8aDM+TG9jYXRpbmcgdGhlIEphdmE8YSBocmVmPSIjKiI+KjwvYT4gY29tcGlsZXI8L2gzPgo8cD5UbyBjb21waWxlIHRoZSBnZW5lcmF0ZWQgc3R1YnMsIERSTCBSTUlDIHVzZXMgdGhlIEVjbGlwc2U8YSBocmVmPSIjKiI+KjwvYT4gCiAgY29tcGlsZXIgb3IgYW5vdGhlciBleHRlcm5hbCBKYXZhPGEgaHJlZj0iIyoiPio8L2E+IGNvbXBpbGVyLiBUbyBsb2NhdGUgdGhlIAogIGV4dGVybmFsIGNvbXBpbGVyLCB0aGUgUk1JQyBpbXBsZW1lbnRhdGlvbiB1c2VzIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtLCBjaGVja2luZyAKICB0aGUgZm9sbG93aW5nIHN5c3RlbSBwcm9wZXJ0aWVzIGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6PC9wPgo8b2w+CiAgPGxpPklmIHRoZSA8Y29kZT5vcmcuYXBhY2hlLmhhcm1vbnkucm1pLmNvbXBpbGVyLmNsYXNzPC9jb2RlPiBwcm9wZXJ0eSBpcyBzZXQsIAogICAgdXNlIHRoZSBzcGVjaWZpZWQgY2xhc3MgYXMgYSBKYXZhPGEgaHJlZj0iIyoiPio8L2E+IGNvbXBpbGVyIGNsYXNzIGFuZCBtb3ZlIAogICAgdG8gdGhlIG5leHQgc3RlcC4gT3RoZXJ3aXNlLCBtb3ZlIHRvIHN0ZXAgMy4gCiAgPGxpPklmIHRoZSA8Y29kZT5vcmcuYXBhY2hlLmhhcm1vbnkucm1pLmNvbXBpbGVyLm1ldGhvZDwvY29kZT4gcHJvcGVydHkgaXMgc2V0LCAKICAgIGNhbGwgdGhlIHNwZWNpZmllZCBtZXRob2QgYW5kIHNraXAgZnVydGhlciBzdGVwcy4gT3RoZXJ3aXNlLCBjYWxsIHRoZSA8Y29kZT5tYWluPC9jb2RlPiAKICAgIG1ldGhvZCBhbmQgc2tpcCBmdXJ0aGVyIHN0ZXBzLiBUaGUgcmVzdWx0aW5nIG1ldGhvZCBpcyB0aGUgPGNvZGU+PG5vYnI+Y29tcGlsZXJDbGFzcy5jb21waWxlck1ldGhvZChTdHJpbmdbXSk8L25vYnI+PC9jb2RlPiAKICAgIG1ldGhvZC4gCiAgPGxpPklmIHRoZSA8Y29kZT5vcmcuYXBhY2hlLmhhcm1vbnkucm1pLmNvbXBpbGVyLmV4ZWN1dGFibGU8L2NvZGU+IHByb3BlcnR5IAogICAgaXMgc2V0LCBydW4gdGhlIHNwZWNpZmllZCBleGVjdXRhYmxlIGFuZCBza2lwIGZ1cnRoZXIgc3RlcHMuIAogIDxsaT4gSWYgdGhlIDxjb2RlPkNMQVNTUEFUSDwvY29kZT4gY29udGFpbnMgdGhlIDxjb2RlPm9yZy5lY2xpcHNlLmpkdC5pbnRlcm5hbC5jb21waWxlci5iYXRjaC5NYWluPC9jb2RlPiAKICAgIEVjbGlwc2U8YSBocmVmPSIjKiI+KjwvYT4gY29tcGlsZXIgY2xhc3MsIHVzZSB0aGUgc3BlY2lmaWVkIGNsYXNzIGFuZCBza2lwIAogICAgZnVydGhlciBzdGVwcy4gCiAgPGxpPiBJZiB0aGUgPGNvZGU+RUNMSVBTRV9IT01FPC9jb2RlPiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQgYW5kIHRoZSBFY2xpcHNlPGEgaHJlZj0iIyoiPio8L2E+IGNvbXBpbGVyCiAgICAuamFyIGZpbGUgKDxjb2RlPkVDTElQU0VfSE9NRS9wbHVnaW5zL29yZy5lY2xpcHNlLmpkdC5jb3JlXyouamFyPC9jb2RlPikgaXMgCiAgICBwcmVzZW50LCBsb2FkIHRoZSBFY2xpcHNlPGEgaHJlZj0iIyoiPio8L2E+IGNvbXBpbGVyIGNsYXNzIGZyb20gdGhlIC5qYXIgYXJjaGl2ZSAKICAgIGFuZCBza2lwIHRoZSBsYXN0IHN0ZXAuIAogIDxsaT4gSWYgdGhlIDxjb2RlPkpBVkFfSE9NRTwvY29kZT4gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0IGFuZCB0aGUgPGNvZGU+SkFWQV9IT01FL2Jpbi9qYXZhYzwvY29kZT4gCiAgICBleGVjdXRhYmxlIGlzIHByZXNlbnQsIHJ1biB0aGUgc3BlY2lmaWVkIGV4ZWN1dGFibGUuIAo8L29sPgo8cD5JZiBhbGwgdGhlIHN0ZXBzIGZhaWxlZCwgUk1JQyBleGVjdXRlcyA8Y29kZT5qYXZhYzwvY29kZT4gdG8gc2VhcmNoIGZvciB0aGUgCiAgY29tcGlsZXIgaW4gdGhlIHN5c3RlbSA8Y29kZT5QQVRIPC9jb2RlPiB2YXJpYWJsZS4gSWYgUk1JQyBkb2VzIG5vdCBmaW5kIHRoZSAKICBjb21waWxlciwgaXQgYWJvcnRzIHRoZSBvcGVyYXRpb24gd2l0aCBlcnJvci48YnI+CjwvcD4KPGgzPklJT1AgYW5kIElETCBzdXBwb3J0PC9oMz4KPHA+RFJMIFJNSUMgZG9lcyBub3Qgc3VwcG9ydCBJbnRlcm5ldCBpbnRlci1vcmIgcHJvdG9jb2wgKElJT1ApIGFuZCBpbnRlcmFjdGl2ZSAKICBkYXRhIGxhbmd1YWdlIChJREwpIHN0dWIgZ2VuZXJhdGlvbiwgYW5kLCBjb25zZXF1ZW50bHksIHRoZSBvcHRpb25zPGNvZGU+IDxub2JyPi1paW9wPC9ub2JyPiwgCiAgPG5vYnI+LWlkbDwvbm9icj4sIDxub2JyPi1hbHdheXM8L25vYnI+LCA8bm9icj4tYWx3YXlzZ2VuZXJhdGU8L25vYnI+LCA8bm9icj4tbm9sb2NhbHN0dWJzPC9ub2JyPjwvY29kZT4sIGFuZCA8Y29kZT48bm9icj4tbm9WYWx1ZU1ldGhvZHM8L25vYnI+PC9jb2RlPi48L3A+CjxwIGNsYXNzPSJiYWNrdG90b3AiPiA8YSBocmVmPSIjdG9wIj5CYWNrIHRvIFRvcDwvYT4gPC9wPgo8aDI+PGEgbmFtZT0iUmVmZXJlbmNlcyI+PC9hPiBSZWZlcmVuY2VzPC9oMj4KPHA+WzxhIG5hbWU9IlJNSVNwZWMiPjwvYT4xXSBSTUkgU3BlY2lmaWNhdGlvbiwgPGEgaHJlZj0iaHR0cDovL2phdmEuc3VuLmNvbS9qMnNlLzEuNS4wL2RvY3MvZ3VpZGUvcm1pL3NwZWMvcm1pVE9DLmh0bWwiCnRpdGxlPSJodHRwOi8vamF2YS5zdW4uY29tL2oyc2UvMS41LjAvZG9jcy9ndWlkZS9ybWkvc3BlYy9ybWlUT0MuaHRtbCI+aHR0cDovL2phdmEuc3VuLmNvbS9qMnNlLzEuNS4wL2RvY3MvZ3VpZGUvcm1pL3NwZWMvcm1pVE9DLmh0bWw8L2E+IAo8L3A+CjxwPls8YSBuYW1lPSJqYXZhcm1pIj48L2E+Ml0gPGNvZGU+amF2YS5ybWk8L2NvZGU+IFByb3BlcnRpZXMsIDxhCmhyZWY9Imh0dHA6Ly9qYXZhLnN1bi5jb20vajJzZS8xLjUuMC9kb2NzL2d1aWRlL3JtaS9qYXZhcm1pcHJvcGVydGllcy5odG1sIgp0aXRsZT0iaHR0cDovL2phdmEuc3VuLmNvbS9qMnNlLzEuNS4wL2RvY3MvZ3VpZGUvcm1pL2phdmFybWlwcm9wZXJ0aWVzLmh0bWwiPmh0dHA6Ly9qYXZhLnN1bi5jb20vajJzZS8xLjUuMC9kb2NzL2d1aWRlL3JtaS9qYXZhcm1pcHJvcGVydGllcy5odG1sPC9hPjwvcD4KPHA+WzxhIG5hbWU9InN1bnJtaSI+PC9hPjNdIDxjb2RlPnN1bi5ybWkgPC9jb2RlPlByb3BlcnRpZXMsIDxhCmhyZWY9Imh0dHA6Ly9qYXZhLnN1bi5jb20vajJzZS8xLjUuMC9kb2NzL2d1aWRlL3JtaS9zdW5ybWlwcm9wZXJ0aWVzLmh0bWwiCnRpdGxlPSJodHRwOi8vamF2YS5zdW4uY29tL2oyc2UvMS41LjAvZG9jcy9ndWlkZS9ybWkvc3Vucm1pcHJvcGVydGllcy5odG1sIj5odHRwOi8vamF2YS5zdW4uY29tL2oyc2UvMS41LjAvZG9jcy9ndWlkZS9ybWkvc3Vucm1pcHJvcGVydGllcy5odG1sPC9hPqAgCjwvcD4KPHAgY2xhc3M9ImJhY2t0b3RvcCI+IDxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gVG9wPC9hPiA8L3A+CjxwPiAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNiBJbnRlbCBDb3Jwb3JhdGlvbiA8L3A+CjxwPiA8YSBuYW1lPSIqIj4qPC9hPiBPdGhlciBicmFuZHMgYW5kIG5hbWVzIGFyZSB0aGUgcHJvcGVydHkgb2YgdGhlaXIgcmVzcGVjdGl2ZSAKICBvd25lcnMuIDwvcD4KPC9ib2R5Pgo8L2h0bWw+Cg==