SGksCgpDw6lkcmljIFZpbGxlbWFpbiB3cm90ZToKCj4gSGVsbG8gZGVhciBrZGUgZGV2ZWxvcHBl cnMsCj4gCj4gVGhpcyBtYWlsIHRvIGludHJvZHVjZSBteXNlbGYuCj4gSSdtIEPDqWRyaWMgVmls bGVtYWluIGFuZCBJIHdvcmsgbW9zdGx5IG9uL3dpdGgvZm9yIFBvc3RncmVTUUwuCj4gSSdtIGFs c28gYSBsb25nIGRlYmlhbiBhbmQga2RlIHVzZXIuCj4gCj4gSSB3b3VsZCBsaWtlIHRvIGhlbHAg aW4gdGhlIGFyZWFzIChhdCBsZWFzdCkgb2YgUG9zdGdyZVNRTCBhbmQKPiBha29uYWRpL3NlcnZl ci9zdG9yYWdlIChhbmQgZXZlbnR1YWx5IHF0c3FsLi4uKS4gSSBhbHJlYWR5IGdpdCBjbG9uZQo+ IGFrb25hZGkgYW5kIHF0IHNvIHRoZSBmaXJzdCBzdGVwIGlzIGRvbmUgOikKPiAKPiBJIGFtIHVu c3VyZSB0byB1bmRlcnN0YW5kIHdlbGwgdGhlIGRlY2lzaW9ucyBtYWRlIHdpdGggYmFja2VuZC1w b3N0Z3Jlc3FsCj4gc28gSSB3b3VsZCBsaWtlIHRvIGRpc2N1c3MgdGhlbSBoZXJlLCBvciBwbGVh c2UgcG9pbnQgbWUgdG8gdGhlIHJlbGV2YW50Cj4gdGhyZWFkcyBpbiBNTCBhcmNoaXZlIGlmIGFu eS4KPiAKPiBBa29uYWRpIG1hcHMgUVN0cmluZyB0byBCWVRFQSAoUG9zdGdyZVNRTCBkYXRhIHR5 cGUpLCBJIGJlbGlldmUgaXQgc2hvdWxkCj4gbWFwIGl0IHRvIFRFWFQuIDEuIHdlIGRvIHVzZSB0 b0xhdGluMSB0byBwcmVwYXJlIGRhdGEgd2hlbiB3b3JraW5nIHdpdGgKPiBRU3RyaW5nLCBzbyBp dCBzaG91bGQgYmUgc2FmZSBmb3IgVEVYVCBpbiBQb3N0Z3JlU1FMLiAyLiBlc2NhcGluZyBCWVRF QQo+IGFuZCBURVhUIGRvZXMgbm90IHdvcmsgdGhlIHNhbWUsIEJZVEVBIGFyZSBlc2NhcGVkIHN0 cmluZyAqb3IqIGhleCBzdHJpbmcuCj4gVEVYVCBpcyBwbGFpbiwgb3IgZXNjYXBlZC4KCgpXZSB3 b3VsZCBuZWVkIHRvIGNoZWNrIHdoYXQga2luZCBvZiBkYXRhIGlzIHN0b3JlZCBpbiBCWVRFQSwg YnV0IFFTdHJpbmcgCml0c2VsZiBpcyBVVEY4LiBEb2VzIFRFWFQgc3VwcG9ydCB1dGY4IChzb3Jy eSwgbm8gdGltZSB0byBsb29rIHRoaXMgdXAgbm93KT8KCkhvdyBkbyB0aGV5IHBlcmZvcm0gcGVy Zm9ybWFuY2Ugd2lzZSAoYW5kIHNpemUgd2lzZSBpbiB0aGUgZGF0YWJhc2UpPwoKPiAKPiBTbywg J1xTRUVOJyBpcyBpbmNvcnJlY3QgZm9yIEJZVEVBIGlucHV0IGJ1dCBpcyBjb3JyZWN0IGZvciBU RVhUIGlucHV0Cj4gKHdpdGggc3RhbmRhcmRfY29uZm9ybWluZ19zdHJpbmcgT04pICdcXFNFRU4n IGlzIHRoZSBjb3JyZWN0IGlucHV0IGZvcgo+IEJZVEVBLiBJdCBjYW4gYmUgRSdcXFxcU0VFTicg d2hpY2ggaXMgdGhlIHNhbWUuIExldCdzIHNlZToKPiAjIHNlbGVjdCBFJ1xcXFxTRUVOJzo6Ynl0 ZWE7Cj4gYnl0ZWEgfCBcXFNFRU4KPiAjIHNlbGVjdCAnXFxTRUVOJzo6Ynl0ZWE7Cj4gYnl0ZWEg fCBcXFNFRU4KPiAKPiBCWVRFQSBpcyBieSBkZWZhdWx0IG91dHB1dCBpbiBoZXggZm9ybWF0IGlu IHJlY2VudCB2ZXJzaW9ucyBvZiBQb3N0Z3JlU1FMLgo+IEEgcmVxdWlyZWQgZml4IGluIHRoZSBh a29uYWRpLWJhY2tlbmQtcG9zdGdyZXNxbCBpcyB0byBkbzoKPiAjIHNldCBieXRlYV9vdXRwdXQg dG8gZXNjYXBlOwo+IHRvIGhhdmUgYSBjbGVhbiBvdXRwdXQgKGVsc2UgeW91J2xsIGdldCBhIGJ1 bmNoIG9mIFx4Li4uIGxpa2UgdGhhdAo+ICdceDQ1NWM1YzUzNDU0NTRlJyA9PiAnXFxTRUVOJykg SSd2ZSBhIHBhdGNoIGZvciB0aGF0IGluIGFrb25hZGksIGhvd2V2ZXIKPiBpdCBzaG91bGQgbm90 IGJlIHJlcXVpcmVkOiBpdCBpcyBwcm9iYWJseSB0aGUgam9iIG9mIFFUU3FsIHRvIGhhbmRsZSB0 aGF0Cj4gKElPIG9mIEJZVEVBKQoKV2hlbiBBa29uYWRpIHNldHMgdXAgdGhlIGRhdGFiYXNlLCBp dCBjYW4gc2V0IHVwIGFzIHdlIHdhbnQgdGhlIApieXRlYV9vdXRwdXQuIElmIHdlIHVzZSBhIHNo YXJlZCBzZXJ2ZXIsIGluZGVlZCB0aGlzIGNvdWxkIGJlIG1vcmUgCmltcG9ydGFudCwgYnV0IHRo ZSBzZXR0aW5nIGlzIHBlciBjb25uZWN0aW9uLCBubz8gQW55d2F5LCB3aGF0IGlzIHlvdXIgCnN1 Z2dlc3Rpb24sIHNob3VsZCB3ZSB1c2UgImVzY2FwZSIgb3IgImhleCIgZW5jb2Rpbmc/CgpJbiBh bnkgY2FzZSBpZiB0aGUgY3VycmVudCBjb2RlIHN0b3JlcyBcU0VFTiBpbmNvcnJlY3RseSwgdGhh dCBtdXN0IGJlIApmaXhlZC4KCgo+IFRoaXMgaXMgd2h5IEkgc3RhcnQgdG8gcmVhbGx5IHdvbmRl ciB3aHkgeW91IHVzZWQgQllURUE6IHRoZSBRVCB0eXBlIGZvcgo+IEJZVEVBIHNob3VsZCBiZSBv bmx5IFFCeXRlQXJyYXkuIFFUc3FsIGRvIHVzZSBQUXVuZXNjYXBlU3RyaW5nIChhIGZ1bmN0aW9u Cj4gZnJvbSBsaWJwcSwgdGhlIHBvc3RncmVzcWwgbGlicmFyeSkuIFNvIGl0IGlzIHNhZmUuIEJ1 dCBpdCBpcyB1bnNhZmUgdG8gZG8KPiBRc3RyaW5nIC0+IEJZVEVBIGFuZCBoYXMgYmVlbiBzcG90 ZWQgYnkgcmVjZW50IHByb2JsZW0gd2l0aCBsaWJxdC1zcWwtcHNxbAo+IDguNC41OiB0aGUgY2hh bmdlIGlzIHRoYXQgbm93IHRoZXJlIGlzIGEgdGVzdCBvbiBxdGRyaXZlciBhbmQgZG91YmxlCj4g ZXNjYXBpbmcgaXMgZG9uZSBvbmx5IGZvciBRc3RyaW5nIHdoZW4gc3RhbmRhcmRfY29uZm9ybWlu Z19zdHJpbmcgaXMgT0ZGCj4gKHNvIHRoZSBjb2RlIG9uIGFrb25hZGkgaXMgbm93IHJlYWxseSBi dWd5IGluIHJlZ2FyZCBvZiB0aGlzIHNpdHVhdGlvbiwKPiBiZWNhdXNlIHRoZSBkb3VibGUgZXNj YXBpbmcgaXMgbm90IGRvbmUgYW55bW9yZSkuCgpJbmRlZWQsIHRoZXJlIGlzIGEgcHJvYmxlbSB3 aXRoIHRoZSBsYXRlc3QgUFNRTCBkcml2ZXIgaW4gUXQuIEJ1dCBhcyBJIAp1bmRlcnN0b29kIHRo aXMgaXMgYSBwcm9ibGVtIGluIHRoZSBkcml2ZXIsIG5vIChhZ2Fpbiwgc29tZXRoaW5nIEkgd2Fu dGVkIHRvIAp0ZXN0IGZvciBhIHdoaWxlLCBidXQgbmV2ZXIgaGFkIHRpbWUgdG8gd3JpdGUgYSBw cm9wZXIgdGVzdCBhcHApPyAKCj4gRm9yIG1lbW9yeSwgUG9zdGdyZVNRTCBwcm92aWRlcyBmdW5j dGlvbnMgdG8gY29udmVydCBCWVRFQSB0byBURVhULCBVVEY4Cj4gaW4gdGhpcyBleGFtcGxlOgo+ ICMgc2VsZWN0IGJ5dGVhX2RhdGEsIGNvbnZlcnRfZnJvbShieXRlYV9kYXRhLCdVVEY4JykgYXMg VVRGOF9kYXRhIEZST00KPiAjIChWQUxVRVMgKCdcXFNFRU4nOjpieXRlYSkpIHQoYnl0ZWFfZGF0 YSk7Cj4gYnl0ZWFfZGF0YSB8IFxcU0VFTgo+IHV0ZjhfZGF0YSAgfCBcU0VFTgo+ICMgc2VsZWN0 IHRleHRfZGF0YSwgY29udmVydF90byh0ZXh0X2RhdGEsJ1VURjgnKSBhcyBieXRlYV9kYXRhIEZS T00KPiAjIChWQUxVRVMgKCdcU0VFTic6OlRFWFQpKSB0KHRleHRfZGF0YSk7Cj4gdGV4dF9kYXRh ICB8IFxTRUVOCj4gYnl0ZWFfZGF0YSB8IFxcU0VFTgo+IAo+IFNvLCB3aGF0IGFib3V0IG1hcHBp bmcgZGlyZWN0bHkgUVN0cmluZyB0byBURVhUIGFuZCBiZSBzYWZlID8KClNlZSBhYm92ZS4gSWYg c3VwcG9ydHMgVVRGOCwgc3BlZWQgaXMgY29tcGFyYWJsZSBhbmQgc3BhY2UgaW4gdGhlIGRhdGFi YXNlIAppcyBub3QgbXVjaCBiaWdnZXIsIGl0IGNhbiBiZSBjaGFuZ2VkLgoKPiAKPiBJIGFsc28g d29uZGVyIHdoeSBzb21lIFNRTCBzdGF0ZW1lbnRzIGFyZSBjb25zdHJ1Y3RlZCBpbnN0ZWFkIG9m IHdvcmtpbmcKPiB3aXRoIFFzcWwgYSBiaXQgbW9yZS4gSSBzYXcgc29tZSBzdHJpbmcucmVwbGFj ZSgnXFwnLCdcXFxcJykgaW4gdGhlCj4gYWtvbmFkaSBjb2RlIHdoZW4gSSBiZWxpZXZlIHF0c3Fs LmZvcm1hdFZhbHVlKCkgc2hvdWxkIGhhdmUgYmVlbiB1c2VkLgoKQ291bGQgeW91IHBvaW50IG91 dCBhbiBleGFtcGxlPyBJdCBjYW4gYmUgdGhhdCBzb21lIHN0YXRlbWVudHMgY29tZSBmcm9tIGEg CmR5bmFtaWMgcXVlcnkgYnVpbGRlciwgc28gdGhleSBhcmUgbm90IGxvb2tpbmcgdG9vIG9wdGlt aXplZCwgYnV0IHdlIHdvdWxkIApuZWVkIHRvIHNlZSB0aGUgaW5kaXZpZHVhbCBjYXNlcyB0byBz ZWUgd2hhdCBjYW4gYmUgZml4ZWQuCgpBbmRyYXMKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KS0RFIFBJTSBtYWlsaW5nIGxpc3Qga2RlLXBpbUBrZGUub3Jn Cmh0dHBzOi8vbWFpbC5rZGUub3JnL21haWxtYW4vbGlzdGluZm8va2RlLXBpbQpLREUgUElNIGhv bWUgcGFnZSBhdCBodHRwOi8vcGltLmtkZS5vcmcv