R2V0dGluZyBhIHNvdXJjZSB0aGF0IHdvdWxkIGJlIGVmZmljaWVudGx5IGJsb2NrZWQgYnkgdGhl IGZpbHRlciBpcyB0aGUKbWFpbiBnb2FsLgpJIGNvdWxkIHRyeSB0byBzb3VyY2UgYSBmaWx0ZXIg dGhhdCBjdXRzIG9mZiBoaWdoZXIsIHRoZXNlIGd1eXMgZGlkIHNvbWUKcHJldHR5IGltcHJlc3Np dmUgd29yazoKaHR0cDovL3d3dy5sZW5zdGlwLmNvbS8xMTMuMS1hcnRpY2xlLVVWX2ZpbHRlcnNf dGVzdC5odG1sCgpJIGJvdWdodCB0aGUgIzEgbGlzdGVkIEhveWEgZmlsdGVyLgoKClRoZXJlJ3Mg YSBncmVhdCBkZWFsIG9mIGN1c3NpbiBhbmQgZGlzY3Vzc2luIG9uIGZpbHRlcnMuICBIZXJlJ3Mg d2hhdCBJCmtub3cgdG8gYmUgdHJ1ZS4KCkVWRVJZIGZpbHRlciBkZWdyYWRlcyBpbWFnZSBxdWFs aXR5LCB0aGUgZGlmZmVyZW5jZSBpcyBieSBob3cgbXVjaC4KRGVzcGl0ZSBtYW55IGNsYWltcyB0 aGF0IG9ubHkgZmlsbSBpcyBhZmZlY3RlZCwgbmVhciBVViBkb2VzIGdldCBwaWNrZWQgdXAKYnkg dGhlIGltYWdlIHNlbnNvci4KCkluIG9yZGVyIHRoYXQgdGhlIFVWIHJlYWN0aXZlIGdsYXNzIHRo YXQgSSBhbSB1c2luZyBjYW4gc2hvdyB1cCB3ZWxsLCBJCm5lZWQgYSBiaXQgb2YgVVYgaW4gdGhl IGlsbHVtaW5hdGlvbi4KCgpNZXJjdXJ5IGxhbXBzIGhhdmUgcGxlbnR5IG9mIG91dHB1dCBpbiB0 aGUgbmVhciBVViBhcyB3ZWxsLgpodHRwOi8vemVpc3MtY2FtcHVzLm1hZ25ldC5mc3UuZWR1L2Fy dGljbGVzL2xpZ2h0c291cmNlcy9tZXJjdXJ5YXJjLmh0bWwKRmlsdGVycyBmb3IgdGhpcyBtYXkg ZXhpc3QuCgoKCgoKCk9uIFN1biwgRmViIDI4LCAyMDE2IGF0IDU6MjYgQU0sIFJ1c3NlbGxNYyA8 YXBwdGVjaG56QGdtYWlsLmNvbT4gd3JvdGU6Cgo+IOKAiwo+IE9uIDI4IEZlYnJ1YXJ5IDIwMTYg YXQgMDU6MDcsIERhdmlkIFZhbkhvcm4gPG1pY3JvYnJpeEBnbWFpbC5jb20+IHdyb3RlOgo+Cj4g PiBJcyB0aGVyZSBhIHNvdXJjZSB3aGVyZSBJIGNhbiBidXkgYSBmZXcgZGVlcCBVViBsZWRzPyAg IEkgYW0gdGFraW5nCj4gPiBwaWN0dXJlcyBvZiBnbGFzcyB1bmRlciBVViBsaWdodCwgYW5kIGV2 ZW4gd2l0aCBhIEhveWEgVVYoMCkgZmlsdGVyCj4gPiAoaGlnaGVzdCBibG9ja2luZyBhdmFpbGFi bGUpIHRoZSBVViBsZWRzIEkgaGF2ZSBhcmUgZ2V0dGluZyB0aHJvdWdoCj4gYmVjYXVzZQo+ID4g dGhleSBhcmUgdXAgYXQgMzk1IHdoZXJlIHRoZSBmaWx0ZXIgc3RpbGwgcGFzc2VzLiAgVGhleSBz aG93IHVwIGFzIGFuCj4gPiBpbnRlbnNlIGJsdWUgbGlnaHQgaW4gdGhlIGNhbWVyYS4gOigKPiA+ Cj4gPiBJIG5lZWQgdG8gbW92ZSB0aGUgc291cmNlIGRvd24gYmVsb3cgMzUwbm0gc28gdGhhdCB0 aGUgZmlsdGVyIGlzIG1vcmUKPiA+IGVmZmVjdGl2ZS4gIEkga25vdyB0aGV5IGFyZSBtYWRlIGRv d24gdG8gMjYwIGlzaCwgYnV0IEkgbmVlZCBzb21lIHRoYXQgSQo+ID4gY2FuIGFjdHVhbGx5IGJ1 eSBpbiBvbmVzaWVzLgo+ID4KPgo+Cj4gSXMgdGhlcmUgYW55IG9iamVjdGlvbiB0byB1c2luZyBn ZXJtaWNpZGFsIGxhbXBzPwo+Cj4gICAgICAgIFNtYWxsICJmbHVvcmVzY2VudCBidWxicyB3aXRo b3V0IHRoZSBmbHVvcmVzY2VudCBwb3dkZXIiIGZyb20gYSBmZXcKPiBXYXR0cyB1cC4KPgo+ICAg ICAgICBTb21lIHZlcnkgc21hbGwgc2luZ2xlIGVuZGVkIHNjcmV3IGluICJidWxicyIuCj4KPiBU aGVzZSB1c3VhbGx5IG5lZWQgYSAnZmx1b3Jlc2NlbnQgdHlwZSIgSFYgc291cmNlIGFuZCBiYWxs YXN0IGJ1dCBjb3VsZAo+IGFsbW9zdCBjZXJ0YWlubHkgYmUgZHJpdmVuIHdpdGggb2xkIENGTCBl bGVjdHJvbmljcy4KPgo+IFlvdSBjYW4gZ2V0ICJuYWlsIHZhcm5pc2ggY3VyaW5nIiB1bml0cyB3 aXRoIGJ1bGIgYW5kIGJhbGxhc3QgYW5kIGhvdXNpbmcuCj4KPiBBbGwgc3VjaCBlbWl0IHNob3J0 IHdhdmVsZW5ndGggVVYtQyBVViBhbmQgYXJlIGV5ZSBsZXRoYWwgaWYgYWxsb3dlZCB0byBiZS4K Pgo+IFlvdSBjYW4gZ2V0IGxvdyBWIERDIHVuaXRzIHdpdGggaW52ZXJ0ZXIgaW5idWlsdC4KPiBf X19fX19fX19fX19fX19fX19fX18KPgo+IE15IHdpZmUgbWFuYWdlZCBib3RoIGV5ZXMgYmFuZGFn ZWQgZm9yIHNldmVyYWwgZGF5cyBhZnRlciBjaGVja2luZyBhIDIwVysKPiB1bml0IEkgd2FzIHVz aW5nIHRvIGRvIHNvbWUgbG9uZ2V2aXR5IHRlc3RzIG9mIG1hdGVyaWFscyAtIEkgY2FsbGVkIGhl cgo+IGZyb20gQ2hpbmEgYW5kIGdhdmUgaGVyIGNhcmVmdWwgaW5zdHJ1Y3Rpb25zIGJ1dCAic29t ZXRoaW5nIHdlbnQgd3JvbmciLgo+IFNoZSBpcyBnb29kIGF0IGZvbGxvd2luZyBpbnN0cnVjdGlv bnMgKGluIHN1Y2ggYXJlYXMgOi0pICkgc28gSSBjYW4gb25seQo+IGd1ZXNzIHdoYXQgaGFwcGVu ZWQuIEkgdGhpbmsgdGhlIFVWIE1BWSBoYXZlIGVpdGhlciByZWZyYWN0ZWQgdGhyb3VnaCBoZXIK PiBzcGVjdGFjbGUgbGVuc2VzIGF0IGEgc3RlZXBlciB0aGFuIGV4cGVjdGVkIGFuZ2xlIGR1ZSB0 byB3YXZlbGVuZ3RoIE9SCj4gbWF5YmUgcmVmbGVjdGVkIG9mZiBpbnNpZGUgZnJvbSBhbiBleHRy ZW1lIGxvdyBsZXZlbCBhbmdsZS4KPiBFaXRoZXIgd2F5IGl0IE1BWSBoYXZlIHNhdmVkIGhlciBz aWdodCBpbiBvbmUgZXllIGFzIHRoZXkgZGlzY292ZXJlZAo+IHJldGluYWwgZGFtYWdlIHRoYXQg bmVlZGVkIGltbWVkaWF0ZSBhY3Rpb24gYW5kIHRoYXQgdGhleSBjbGFpbWVkIGhhZAo+IGFic29s aXV0ZWx5IG5vIGNoYW5jZSBvZiBiZWluZyByZWxhdGVkIHRvIHRoZSBVVi4gKEknbGwgYmVsaWV2 ZSB0aGVtIGluCj4gdGhpcyBjYXNlOi0pICkuCj4KPgo+Cj4g4oCLIFJ1c3NlbGwKPiDigIsKPiAt LQo+IGh0dHA6Ly93d3cucGljbGlzdC5jb20vdGVjaHJlZi9waWNsaXN0IFBJQy9TWCBGQVEgJiBs aXN0IGFyY2hpdmUKPiBWaWV3L2NoYW5nZSB5b3VyIG1lbWJlcnNoaXAgb3B0aW9ucyBhdAo+IGh0 dHA6Ly9tYWlsbWFuLm1pdC5lZHUvbWFpbG1hbi9saXN0aW5mby9waWNsaXN0Cj4KLS0gCmh0dHA6 Ly93d3cucGljbGlzdC5jb20vdGVjaHJlZi9waWNsaXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hp dmUKVmlldy9jaGFuZ2UgeW91ciBtZW1iZXJzaGlwIG9wdGlvbnMgYXQKaHR0cDovL21haWxtYW4u bWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZvL3BpY2xpc3QK .