SXNzYWMncyBhbnN3ZXIgaXMgZ29vZC4gQSB3ZWUgYml0IG9mIGdvb2dsaW5nIHdpdGggdGhlIHJp Z2h0IG1hZ2ljCmluY2FudGF0aW9uIChhcmR1aW5vIGxpZ2h0IHN0cmlwIHNjaGVtYXRpYykgZ2l2 ZXMgdXMgYSByZWxldmFudCBzY2hlbWF0aWM6Cmh0dHA6Ly9jZG4ubWFrZXppbmUuY29tL3VwbG9h ZHMvMjAxMy8wNy9pbWFnZTA0LmpwZwpUaGlzIG9uZSBpcyBiaXBvbGFyIHRyYW5zaXN0b3JzLCBi dXQgRkVUcyBjb3VsZCBiZSB1c2VkIHdpdGggbWluaW1hbApjaGFuZ2VzLgoKQSBmZXcgb3RoZXIg dGhvdWdodHMuLi4uCgpEZXBlbmRpbmcgb24gc2l6ZSwgdGhvc2UgbGlnaHQgc3RyaXBzIGNhbiBj b25zdW1lIHF1aXRlIGEgYml0IG9mIHBvd2VyLApsaWtlbHkgdHJhbnNpc3RvcnMgd2VyZSBpbiB5 b3VyIGZ1dHVyZSBhbnl3YXkuCkkgaGF2ZSBhIDEgbWV0ZXIgc2VjdGlvbiBoZXJlIG9uIG15IGRl c2ssIGF0IGZ1bGwgd2hpdGUgYnJpZ2h0bmVzcyBJIGNhbgpwdXNoIG92ZXIgZWlnaHQgYW1wcyB0 aHJvdWdoIGl0LiAoMTQ0IExFRHMgeCAzIGNvbG9ycyB4IDIwIG1BKQpNb3N0IChhbGw/KSBvZiB0 aGUgNTU1IHZhcmlhbnRzIGNhbiBydW4gYXQgMTJ2IG9yIGhpZ2hlci4gU3ViamVjdCB0bwpjdXJy ZW50IGxpbWl0cywgeW91IGNvdWxkIHJ1biB0aGUgNTU1IGF0IDEydiBhbmQgZGlyZWN0bHkgY29u bmVjdCB0aGUKc3RyaXAuIFN1Z2dlc3QgeW91IHJlYWQgdGhlIGRhdGFzaGVldCwgYnV0IHNob3Vs ZCBiZSBnb29kIGZvciB+MS8yIGRvemVuCkxFRHMgdGhhdCB3YXkuCgpTaW5jZSB5b3UncmUgcGxh eWluZyB3aXRoIHN0cmlwIExFRHMsIHNvbWV0aGluZyBnb29kIHRvIGtub3cgYWJvdXQgaXMKaW5k aXZpZHVhbGx5IGFkZHJlc3NhYmxlIHBpeGVsIHN0cmlwcy4gSW5zdGVhZCBvZiBjb250cm9sbGlu ZyB0aGUgcG93ZXIgdG8KdGhlbSwgeW91IGdpdmUgdGhlbSBzdGVhZHkgcG93ZXIgYW5kIHByb3Zp ZGUgYSBkYXRhIHByb3RvY29sIHRvIHRlbGwgdGhlbQpob3cgbXVjaCBvZiBlYWNoIGNvbG9yIHRv IGRpc3BsYXkgb24gZWFjaCBwaXhlbC4gVGhlIGxlYXJuaW5nIGN1cnZlIGlzIGEKYml0IHN0ZWVw ZXIsIGJ1dCB5b3UgY2FuIGRvIGFsbCB0aGUgcmVhbGx5IGNvb2wgZWZmZWN0cyB3aXRoIHRoZW0u IDotKSBUaGF0CndvdWxkIG1vc3RseSBiZSB3czI4MTIgYW5kIHNvbWUgdmFyaWFudHMgKG9uZSB3 aXJlLCB0aW1pbmcgY3JpdGljYWwKcHJvdG9jb2wpIG9yIHRoZSBuZXdlciBBUEExMDJDICh0d28g d2lyZSBTUEkgcHJvdG9jb2wsIG11Y2ggZWFzaWVyIGZvciBtb3N0Cm1pY3JvIGNvbnRyb2xsZXJz KSBCb3RoIG9mIHdoaWNoIGhhdmUgZGVjZW50IHN1cHBvcnQgaW4gdGhlIGFyZHVpbm8gd29ybGQu CgotRGVubnkKCgoKCgoKCgpPbiBGcmksIERlYyAyMywgMjAxNiBhdCA0OjI0IEFNLCBJc2FhYyBN LiBCYXZhcmVzY28gPAppc2FhY2JhdmFyZXNjb0BnbWFpbC5jb20+IHdyb3RlOgoKPiBUaGUgc2lt cGxlc3Qgd2F5IGlzIHVzaW5nIHRocmVlIE5QTiBCSlRzIG9yIE4tQ2hhbm5lbCBGRVRzLgo+IFRp ZSB0aGUgZW1pdHRlcnMgb3Igc291cmNlcyB0byBncm91bmQsIG9uZSByZXNpc3RvciBmcm9tIGVh Y2ggYmFzZSBvcgo+IGdhdGUgdG8gaXRzIGNvbnRyb2xsaW5nIHBpbiBhbmQgdGhlIGNhdGhvZGVz IG9mIGVhY2ggY29sb3IgY29ubmVjdGVkIHRvCj4gb25lIG9mIHRoZSBjb2xsZWN0b3JzIG9yIGRy YWlucy4KPiBEb24ndCBmb3JnZXQgdG8gY29ubmVjdCB0aGUgZ3JvdW5kIG9mIHRoZSBBcmR1aW5v LCB0aGUgZW1pdHRlcnMgb3IKPiBzb3VyY2VzIGFuZCB0aGUgbmVnYXRpdmUgb2YgdGhlIDEyViBw b3dlciBzdXBwbHkgYWxsIHRvZ2V0aGVyLgo+Cj4gSXNhYWMKPgo+Cj4KPiBFbSAyMy8xMi8yMDE2 IDA4OjU1LCBMaW5keSBNYXlmaWVsZCBlc2NyZXZldToKPiA+IEkgaGF2ZSBhIDEydiBsZWQgcmdi IHN0cmlwLCBidXQgaXQgc2VlbXMgYSBiaXQgYmFja3dhcmRzLiAgVGhlcmUgaXMgb25lCj4gbGVh ZCBmb3IgcG9zaXRpdmUgYW5kIDMgbGVhZHMgZm9yIG5lZ2F0aXZlLgo+ID4KPiA+IFRoZXkgbGln aHQgdXAgbmljZWx5IHdpdGggYSAxMnYgd2FsbCB3YXJ0LCBidXQgSSB3YW50ZWQgdG8gbWFrZSB0 aGVtCj4gYmxpbmsuICBJIGNvdWxkIGRvIGl0IGFuYWxvZyB3aXRoIDMgNTU1J3MgYW5kIHBvdHMg dG8gYWRqdXN0IHRoZSByYXRlIG9mCj4gYmxpbmtpbmcsIGFuZCB0aGF0IHdvdWxkIGJlIGNvb2wu Cj4gPgo+ID4gT3IgSSBjb3VsZCBjb250cm9sIGl0IHdpdGggYW4gQXJkdWlubyB3aGljaCBjYW4g dGFrZSAxMnYgYXMgYSBwb3dlcgo+IHNvdXJjZSwgYnV0IHByb2R1Y2VzIChJIHRoaW5rKSA1diBv biB0aGUgb3V0cHV0IHBpbnMuCj4gPgo+ID4gSW4gZWl0aGVyIGNhc2UsIGV2ZXJ5dGhpbmcgSSd2 ZSBldmVyIGRvbmUgdXAgdG8gdGhpcyBwb2ludCB3aXRoCj4gY29udHJvbGxpbmcgc29tZXRoaW5n IGlzIHdpdGggYSBwb3NpdGl2ZSB2b2x0YWdlIGFuZCBub3QgbmVnYXRpdmUuICBTbyB3aGF0Cj4g d291bGQgYmUgdGhlIHdheSB0byBkbyBwb3dlciB0aGUgbGVkcyB3aXRoIG5lZ2F0aXZlIHZvbHRh Z2U/Cj4gPgo+ID4gSSBkaWQgdHJ5IHRvIGZpZ3VyZSBpdCBvdXQuICBFYWNoIHJlZC9ncmVlbi9i bHVlIG5lZ2F0aXZlIGxlYWQgd291bGQgZ28KPiB0byB0aGUgZW1pdHRlciBvZiBhIFBOUCB0cmFu c2lzdG9yIGFuZCB0aGUgYmFzZSB0aWVkIHRvIHdoYXRldmVyIGlzCj4gY29udHJvbGxpbmcgaXQu ICBCdXQgcGVyaGFwcyB0aGVyZSBpcyBhIG1vcmUgc3RhbmRhcmQgb3IgY2xldmVyIHdheSB0byBk bwo+IHRoaXMuCj4gPgo+ID4ga2luZCByZWdhcmRzLAo+ID4gTGluZHkKPiA+Cj4KPgo+IC0tLQo+ IEVzdGUgZW1haWwgZm9pIGVzY2FuZWFkbyBwZWxvIEF2YXN0IGFudGl2w61ydXMuCj4gaHR0cHM6 Ly93d3cuYXZhc3QuY29tL2FudGl2aXJ1cwo+Cj4KPiAtLQo+IGh0dHA6Ly93d3cucGljbGlzdC5j b20vdGVjaHJlZi9waWNsaXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUKPiBWaWV3L2NoYW5n ZSB5b3VyIG1lbWJlcnNoaXAgb3B0aW9ucyBhdAo+IGh0dHA6Ly9tYWlsbWFuLm1pdC5lZHUvbWFp bG1hbi9saXN0aW5mby9waWNsaXN0Cj4KLS0gCmh0dHA6Ly93d3cucGljbGlzdC5jb20vdGVjaHJl Zi9waWNsaXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUKVmlldy9jaGFuZ2UgeW91ciBtZW1i ZXJzaGlwIG9wdGlvbnMgYXQKaHR0cDovL21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZv L3BpY2xpc3QK .