QWxsIHRoZSBkcml2ZXJzIG5hbWVkIGJ5IERlbm55IGFyZSBnZW5lcmFsbHkgd2VsbCB0aG91Z2h0 IG9mIGFuZCBkb24ndCBoYXZlCm1ham9yIGlzc3Vlcy4KClBsZWFzZSwgZm9yIHRoZSBsb3ZlIG9m IGVuZ2luZWVyaW5nLCBkbyBOT1QgcHVyY2hhc2UgYSBUQjY1NjAgZHJpdmVyLi4uClRoZXkgd2Vy ZSBuZXZlciBkZXNpZ25lZCBmb3IgdXNlIGFzIGluZGVwZW5kZW50IHN0ZXBwZXIgZHJpdmVycyBi dXQgcmF0aGVyCndlcmUgbWFkZSBmb3IgaW50ZWdyYXRlZCBhcHBsaWNhdGlvbnMgd2hlcmUgdGhl IHBvd2VyIHVwIHNlcXVlbmNlIGlzCmNhcmVmdWxseSBjb250cm9sbGVkLiBGb3IgQ05DIC8gM0Qg cHJpbnRlciBhcHBsaWNhdGlvbnMsIGFsbCB0aGUgZWJheSAvCmNoaW5hIHZlcnNpb25zIG9mIHRo aXMgZHJpdmVyIGRlcml2ZSBsb2dpYyBwb3dlciBmcm9tIG1vdG9yIHBvd2VyICh2aWEgMTJ2CnRo ZW4gNXYgcmVndWxhdG9yIGNoYWluKSBhbmQgdGhhdCBtZWFucyBsb2dpYyBwb3dlciBhbHdheXMg Y29tZXMgdXAgYWZ0ZXIKbW90b3IgcG93ZXIuIFRoaXMgdmlvbGF0ZXMgdGhlIGRhdGFzaGVldCBh bmQgcmVzdWx0cyBpbiB0aGUgY2hpcCBtZWx0aW5nCmV2ZXJ5IDEgaW4gbiBwb3dlciB1cHMuIG4g bWF5IGJlIGEgbGFyZ2UgbnVtYmVyLCBidXQgaXQgV0lMTCBtZWx0CmV2ZW50dWFsbHkuIC4uLmFu ZCB0aGVuIHlvdSBidXkgYSByZXBsYWNlbWVudC4gR2VuaXVzIG1hcmtldGluZy4KClRoZSBQb2xv bHUgZHJpdmVycyBhcmUgbGlzdGVkIGFzIGJlaW5nIGdvb2QgdG8gcG93ZXIgbGV2ZWxzIHRoYXQg dGhleSBjYW4ndApyZWFzb25hYmx5IHN1cHBvcnQgYXMgZGVsaXZlcmVkLiBJZiB5b3UgbG9vayBj YXJlZnVsbHkgb24gdGhlIHByb2R1Y3QgcGFnZXMKeW91IHdpbGwgZmluZCBhbiBhc3N0ZXJpc2sg KHNpYykgdGhhdCBpbmRpY2F0ZXMgYSBoZWF0c2luayBpcyBuZWVkZWQgZm9yCnRoZSBzcGVjaWZp ZWQgbWF4aW11bSBjdXJyZW50LiBJIGNhbiB0ZWxsIHlvdSBmcm9tIGV4cGVyaWVuY2UgdGhhdCBl dmVuCndpdGggYSBoZWF0c2luaywgdGhvc2UgZHJpdmVycyBhcmUgTk9UIGdvaW5nIHRvIHB1bXAg dGhlaXIgcmF0ZWQgbWF4aW11bQpwb3dlci4gQnV0IHRoZXkgd29yayBmaW5lIGluIHRoZSBoYWxm IHdhdHQgcmFuZ2UgaWYgdGhhdCdzIGFsbCB5b3UgbmVlZC4uLgphbmQgZm9yIG1vc3QgM0QgcHJp bnRlcnMsIHRoYXQncyBhbGwgeW91IG5lZWQuCgpUaGUgb3BlbiBzb3VyY2UgZHJpdmVyIGtpdHMg KHRoZXkgYXJlIGtpdHMpIHRoYXQgSSBzZWxsIGNhbiBiZSBmb3VuZCBhdDoKaHR0cDovL3d3dy5w aWNsaXN0LmNvbS90ZWNocmVmL2lvL3N0ZXBwZXJzLmh0bQphbG9uZyB3aXRoIGEgbG90IG9mIG90 aGVyIHdvbmRlcmZ1bCBpbmZvcm1hdGlvbi4gRm9yIGV4YW1wbGU6CgpIb3cgdG8gZmlndXJlIG91 dCBob3cgbXVjaCBwb3dlciwgYW5kIHNvIHdoYXQgZHJpdmVyLCBhbmQgc28gd2hhdCBtb3RvciB5 b3UKbmVlZCAoaW4gVEhBVCBvcmRlciwgZGFtbiBpdCEpCmh0dHA6Ly93d3cucGljbGlzdC5jb20v dGVjaHJlZi9pby9zdGVwcGVyL2VzdGltYXRlLmh0bQoKV2hhdCdzIHRoZSBkaWZmZXJlbmNlIGJl dHdlZW4gYmlwb2xhciBhbmQgdW5pcG9sYXIgYW5kIHdoaWNoIG9uZSBpcyBiZXN0CmZvciB5b3Vy IGFwcGxpY2F0aW9uOgpodHRwOi8vd3d3LnBpY2xpc3QuY29tL3RlY2hyZWYvaW8vc3RlcHBlci9j b25uZWN0aW9ucy5odG0KCjUwIHdheXMgdG8gbGVhdmUgeW91ciBzdGVwcGVyIG1vdG9yIHdpcmVk IGNvcnJlY3RseSBhbmQvb3IgZmlndXJlIG91dCB3aGljaAp3aXJlIGlzIHdoaWNoLgpodHRwOi8v d3d3LnBpY2xpc3QuY29tL3RlY2hyZWYvaW8vc3RlcHBlci93aXJlcy5odG0KClBvd2VyIHN1cHBs aWVzIGZvciBzdGVwcGVyIG1vdG9ycwpodHRwOi8vd3d3LnBpY2xpc3QuY29tL3RlY2hyZWYvaW8v c3RlcHBlci9wb3dlci5odG0KClBsZWFzZSBrZWVwIGluIG1pbmQgYWxsIHRob3NlIHBhZ2VzIGFy ZSBlZmZlY3RpdmVseSB3aWtpcyBzbyB0aGV5IGNhbiBiZQplZGl0ZWQgLyB1cGRhdGVkIGJ5IHlv dSBhbmQgaGF2ZSBiZWVuIGVkaXRlZCAvIHVwZGF0ZWQgYnkgb3RoZXJzLiBUaGV5IG1heQpiZSBh IGxpdHRsZSBtZXNzeSwgYnV0IHRoZXJlIGlzIGdvbGQgaW4gdGhlcmUgZnJvbSBwZW9wbGUgd2hv IHJlYWxseSBrbm93CnRoZWlyIHNzc3Nzc3R1ZmYuCgoKCgoKCk9uIFdlZCwgQXVnIDEyLCAyMDE1 IGF0IDg6MDQgQU0sIFJ1c3NlbGxNYyA8YXBwdGVjaG56QGdtYWlsLmNvbT4gd3JvdGU6Cgo+IE9u IDEzIEF1Z3VzdCAyMDE1IGF0IDAyOjQ2LCBEZW5ueSBFc3RlcmxpbmUgPGRlc3RlcmxpbmVAZ21h aWwuY29tPiB3cm90ZToKPgo+PiBJbiB0aGlzIHNwYWNlIHNvb25lciBvciBsYXRlciB5b3UncmUg Z29pbmcgdG8gY3Jvc3MgcGF0aHMgd2l0aCB0aGUgM0QKPj4gcHJpbnRlciBjb21tdW5pdHkuICAu Li4KPgo+Cj4gUmVsYXRlZCBtYXRlcmlhbCBhcHBlbmRlZCB1bnRyaW1tZWQ6Cj4KPiBTZWUgd2hh dCBKYW1lcyBOZXd0b24gaGFzIHRvIHNheSBvbiB0aGlzIC0gcHJvYmFibHkgb24gaGlzIG1hc3Nt aW5kIHBhZ2VzLgo+IEhlIHNlbGxzIG9yIHNvbGQgIHN0ZXBwZXIgZHJpdmVyIGJvYXJkcyBkZXNp Z25lZCBieSBSb21hbiBCbGFjaywgd2l0aAo+IHByb2NlZWRzIGdvaW5nIHRvIGtlZXAgdGhlIFBJ Q0xpc3QuY29tIHNpdGUgZ29pbmcuCj4KPiBIZSBoYXMgbm90ZWQgaW4gd3JpdHRlbiBjb21tZW50 IHRoYXQgaXQgaXMgYXBwcm94aW1hdGVseSBpbXBvc3NpYmxlIHRvCj4gcHJvcGVybHkgcG93ZXIg c3VwcGx5IHNlcXVlbmNlIHNvbWUgb2YgdGhlIGNvbW1vbmx5IHVzZWQgQ05DIHN0ZXBwZXIKPiBj b250cm9sIElDcyB1c2VkIGluIG1hbnkgZGVzaWducyB3aXRob3V0IGFkZGluZyBleHRyYSBzdXBw bHkgc3dpdGNoaW5nCj4gJ3doaWNoIHRoZXkgaGF2ZSBub3QgZ290JyBBcHBhcmVudGx5IG1vc3Qg b2YgdGhlc2UgZG8gbm90IGJsb3cgdXAgbW9zdCBvZgo+IHRoZSB0aW1lIGRlc3BpdGUgdGhpcyBz aG9ydGNvbWluZy4gV2hldGhlciB0aGlzIG1hdHRlcnMgaW4gYSBnaXZlbgo+IGFwcGxpY2F0aW9u IG1heSBkZXBlbmQgd2hldGhlciBpdCBpcyBpbiBNYXJzIG9yYml0LCBMRU8gb3IgaW4gdGhlIG5l eHQgcm9vbS4KPgo+IEkgYmVsaWV2ZSB0aGF0IEphbWVzIGNoYW5nZWQgSUNzIGFuZCBjaXJjdWl0 IHNvbWV3aGVyZSBhbG9uZyB0aGUgd2F5IGluCj4gdGhlIHVuaXRzIGhlIHNlbGxzLgo+Cj4gSSds bCBjb3B5IHRoaXMgdG8gaGltIGFuZCBoZSBtYXkgd2lzaCB0byBjb21tZW50Cj4KPgo+ICAgICAg ICAgICAgIFJ1c3NlbGwKPgo+Cj4g4oCL4oCLCj4KPiBPbiAxMyBBdWd1c3QgMjAxNSBhdCAwMjo0 NiwgRGVubnkgRXN0ZXJsaW5lIDxkZXN0ZXJsaW5lQGdtYWlsLmNvbT4gd3JvdGU6Cj4KPj4gSW4g dGhpcyBzcGFjZSBzb29uZXIgb3IgbGF0ZXIgeW91J3JlIGdvaW5nIHRvIGNyb3NzIHBhdGhzIHdp dGggdGhlIDNECj4+IHByaW50ZXIgY29tbXVuaXR5LiBPdGhlcnMgZXhpc3QsIGJ1dCB0aGUgbWFq b3JpdHkgc2VlbSB0byBiZSBzZXR0bGluZyBpbnRvCj4+IGVpdGhlciB0aGUgQWxsZWdybyBBNDk4 OCBvciB0aGUgVEkgRFJWODgyNSBiYXNlZCBkcml2ZXJzLiBUaGUgODgyNSBoYXMgYQo+PiBsaXR0 bGUgaGlnaGVyIGN1cnJlbnQgY2FwYWJpbGl0aWVzLiAoYm90aCBtb3JlIHRoYW4geW91J3JlIGFz a2luZyBmb3IpCj4+IEhlcmUncyBhcyBnb29kIG9mIHBsYWNlIHRvIHN0YXJ0IGFzIGFueToKPj4g aHR0cHM6Ly93d3cucG9sb2x1LmNvbS9jYXRlZ29yeS8xMjAvc3RlcHBlci1tb3Rvci1kcml2ZXJz Cj4+Cj4+IFBvbG9sdSBpcyBhIGdvb2QgY29tcGFueSAoc2F0aXNmaWVkIGN1c3RvbWVyKSBidXQg YmUgYXdhcmUgdGhhdCB0aGVzZQo+PiBkZXNpZ25zIGFyZSBvcGVuIHNvdXJjZSwgY2xvbmVzIG9m IHRoZXNlIG1vZHVsZXMgYXJlIGF2YWlsYWJsZSBmb3IgdW5kZXIKPj4gJDMKPj4gVVMgYW5kIHRo ZSBkcml2ZXIgY2hpcHMgdGhlbXNlbHZlcyBhcmUgYXZhaWxhYmxlIGZyb20gbm9ybWFsIGNoYW5u ZWxzLgo+Pgo+PiBUaGVzZSBhcmUgY3VycmVudCBjb250cm9sbGVkIFBXTSBtaWNyb3N0ZXBwaW5n IGRyaXZlcnMgYW5kIGluIGdlbmVyYWwgeW91Cj4+IHdhbnQgdG8gdXNlIHRoZW0gd2l0aCBhIG1v dG9yIHdpdGggYSBfbG93XyB2b2x0YWdlIHJhdGluZyBhcyB0aGF0IGFsc28KPj4gKG1vc3RseSkg dHJhbnNsYXRlcyBpbnRvIGxvd2VyIGluZHVjdGFuY2UgYW5kIGxvd2VyIHJlc2lzdGFuY2Ugd2hp Y2gKPj4gcmVzdWx0cyBpbiBoaWdoZXIgbWF4aW11bSBhY2NlbGVyYXRpb24gYW5kIHNwZWVkIC0g d2hpY2ggbWF5IG9yIG1heSBub3QgYmUKPj4gaW1wb3J0YW50IHRvIHlvdXIgYXBwbGljYXRpb24u IFRoZSBvbGQgYWRhZ2UgYXBwbGllczogYmV0dGVyIHRvIGhhdmUgYW5kCj4+IG5vdCBuZWVkIHRo YW4gdG8gbmVlZCBhbmQgbm90IGhhdmUuCj4+IEN1cnJlbnQgY2FuIGJlIHNldCB3aXRoIGEgcmVz aXN0b3IgKGFuZCBJJ3ZlIHNlZW4gYXQgbGVhc3Qgb25lIHZlcnNpb24KPj4gdGhhdAo+PiB1c2Vk IGEgZGlnaXRhbCBwb3QpIGFuZCBtaWNyb3N0ZXBwaW5nIGNhbiBiZSBzZXQgd2l0aCBhIGNvdXBs ZSBsb2dpYyBsaW5lcwo+PiAodXN1YWxseSBqdW1wZXJzKQo+Pgo+CgoKLS0gCkphbWVzIE5ld3Rv bgpNYXNzTWluZC5vcmcgPGh0dHA6Ly93d3cubWFzc21pbmQub3JnLz4KMS05NzAtNDYyLTc3NjQK LS0gCmh0dHA6Ly93d3cucGljbGlzdC5jb20vdGVjaHJlZi9waWNsaXN0IFBJQy9TWCBGQVEgJiBs aXN0IGFyY2hpdmUKVmlldy9jaGFuZ2UgeW91ciBtZW1iZXJzaGlwIG9wdGlvbnMgYXQKaHR0cDov L21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZvL3BpY2xpc3QK .