Q2hlY2sgdGhlIGFzc2VtYmx5IG91dHB1dCBjYW4gaGVscCBhIGxvdCBvbiB0aGlzIG1hdHRlci4g CiAKCiAgICAgT24gU2F0dXJkYXksIE9jdG9iZXIgMTgsIDIwMTQgMTo0NyBBTSwgVGFtw6FzIEZl a2V0ZSA8dG9teTExcHJvY29uc3VsQGdtYWlsLmNvbT4gd3JvdGU6CiAgIAoKICBIaSBFdmVyeW9u ZSEKCk15IGRlYnVnZ2VyIHByb2JsZW0gZ290IHNvbHZlZC4KCkkgYWN0dWFsbHkgdG9vayBpdCB0 byBvbmUgb2YgdGhlIHRlYWNoZXJzIGF0IEJ1ZGFwZXN0IFVuaXZlcnNpdHkgb2YKVGVjaG5vbG9n eSBzbyBzb21lb25lIGNvdWxkIGxvb2sgYXQgaXQgaW4gcGVyc29uLgoKQWZ0ZXIgYSBmYWlyIGFt b3VudCBvZiB0aW1lIHdlIHJlYWxpc2VkIGlmIHdlIHR1cm4gdGhlIGNvZGUgb3B0aW1pemF0aW9u CmRvd24gdG8gMCwgdGhlIGRlYnVnZ2VyIG1vZGUgd2lsbCBhbHNvIHJlc2V0IGl0c2VsZiBwZXJp b2RpY2FsbHkuCgpUaGUgZnVuY3Rpb24gY2FsbGVkIGFwcGxpY2F0aW9uaWRsZWhvb2sgYW5kIGlu IHRoYXQgaXQgYW5vdGhlciBmdW5jdGlvbgpjYWxsZWQgdkNvUm91dGluZVNjaGVkdWxlKCk7IHdh cyB0aGUgY2F1c2Ugb2YgdGhlIHByb2JsZW0uIFRoZXNlIHJlbWFpbmVkCmluIG15IHByb2plY3Qg YmVjYXVzZSBvZiB0aGUgZGVtbyBhcHBsaWNhdGlvbnMgYWxzbyBoYWQgdGhlc2UgaW4gdGhlbSBh bmQgSQp3YXMgdXNpbmcgdGhlIGRlbW8gc2V0dXAgYXMgYW4gZXhhbXBsZSBmb3IgbXkgb3duIHBy b2plY3RzLiBJIHRob3VnaHQgSSBoYWQKdG8gaW5jbHVkZSB0aGVzZSBpbiBvcmRlciB0byBtYWtl IG15IHByb2plY3RzIHdvcmsuCgpUaGUgbWljcm9jb250cm9sbGVyIHJlc2V0IGl0c2VsZiBmb3Ig c29tZSByZWFzb24gd2hlbiBlbnRlcmluZwp2Q29Sb3V0aW5lU2NoZWR1bGUuIFdlIGRpc2FibGVk IGNvbmZpZ1VTRV9JRExFX0hPT0sgYW5kCmNvbmZpZ1VTRV9DT19ST1VUSU5FUy4gQWZ0ZXIgdGhh dCBteSBhcHBsaWNhdGlvbiB3YXMgd29ya2luZyBpbiByZWxlYXNlCm1vZGUgYW5kIGluIGRlYnVn IG1vZGUuCgpUaGlzIGFsc28gbGVmdCB1cyB3aXRoIGEgcXVlc3Rpb24gYnV0IGl0IGRvZXNuJ3Qg bWF0dGVyIG5vdyBiZWNhdXNlIHRoZQpwcm9ibGVtIGlzIHNvbHZlZCwgYnV0IGl0IGlzIHN0aWxs IGludGVyZXN0aW5nLgoKV2h5IGRpZCB0aGUgZGVidWdnZXIgbW9kZSBvbmx5IHJlc2V0IHdoZW4g Y29tcGlsZWQgaW4gMCBvcHRpbWl6YXRpb24/IFdoZW4KaW4gb3B0aW1pemF0aW9uIDIsIHdoeSBk aWQgdGhlIGRlYnVnZ2VyIHNvbHZlIHRoZSBwcm9ibGVtIHRoYXQgdGhlCm1pY3JvY29udHJvbGxl ciBjb3VsZG4ndD8KClRoYW5rIHlvdSBldmVyeW9uZSBmb3IgYWxsIHlvdXIgaGVscCEhIQoKUmVn YXJkcwpUb21pCgoKCk9uIFRodSwgT2N0IDE2LCAyMDE0IGF0IDEyOjA5IFBNLCBUYW3DoXMgRmVr ZXRlIDx0b215MTFwcm9jb25zdWxAZ21haWwuY29tPgp3cm90ZToKCj4gVGhhbmsgeW91IGZvciB5 b3VyIGhlbHAsIHRoZSBwcm9ibGVtIGlzIHdpdGggdGhlIHBpbnMgaGF2aW5nIG1vcmUKPiBmdW5j dGlvbnMuIEkgY2FuJ3QgcmVhbGx5IHNvbHZlIGl0IGJ5IG15c2VsZiB0aG91Z2guIFRoZXJlIGFy ZSB0b28gbWFueQo+IGZ1bmN0aW9ucyBvbiB0aGUgcGlucyBhbmQgSSdtIGEgbGl0dGxlIGxvc3Qg d2l0aCB0aGVtLgo+Cj4gSSBhbSB1c2luZyBhIG1pY3Jvc3RpY2sgMiBkZXZlbG9wbWVudCBib2Fy ZCBhbmQgb24gaXRzIHNjaGVtYXRpYyBJIGNhbiBzZWUKPiB0aGF0IHRoZSBNQ0xSIHBpbiBoYXMg YSBwdWxsIHVwIHJlc2lzdG9yLgo+Cj4gRnJvbSB0aGUgZGV2aWNlIGRvY3VtZW50IG9mIHRoZSBk c3BpYzMzZmoxMjhtYzgwMjoKPgo+IFBJTjIyIDogUEdFQzIgLyBUTVMgLyBQV00xTDMgLyBSUDEx KDEpIC8gQ04xNSAvIFBNRDEgLyBSQjExCj4gUElOMjEgUEdFRDIgLyBUREkgLyBQV00xSDMgLyBS UDEwKDEpIC8gQ04xNiAvIFBNRDIgLyBSQjEwCj4KPiBTbyBQSU4yMiBpcyB3aGVyZSBJIHNlbmQg ZGF0YSB2aWEgVUFSVC4gUElOMjEgaXMgd2hlcmUgSSB3b3VsZCByZWNlaXZlCj4gZGF0YSBmcm9t LiBCdXQgaW4gbXkgc2ltcGxlIGFwcGxpY2F0aW9uIHJpZ2h0IG5vdyBJIGFtIG9ubHkgc2VuZGlu ZyBvdXQgb25lCj4gbGV0dGVyLgo+Cj4gUEdFQzIgZ2V0cyB0YWtlbiBjYXJlIG9mIHdoZW4gSSBz ZXQgdGhlIGNvbmZpZ3VyYXRpb24gYml0cyBzdWNoIGFzOgo+wqAgI3ByYWdtYSBjb25maWcgSUNT ID0gUEdEMcKgIMKgIFRoZSBNUExBQiBjb21tZW50IHRvIHRoaXMgaXM6IGNvbW11bmljYXRpb24K PiBvbiBQR0VDMSBQR0VEMS4gU28gSSB0aGluayBQR0VDMiBjYW4ndCBpbnRlcmZlcmUgd2l0aCBt eSBzaWduYWxzLgo+Cj4gVE1TIGlzIHRoZSBKVEFHIHRlc3QgbW9kZSBwaW4uIEkgY29uZmlndXJl ZCAjcHJhZ21hIGNvbmZpZyBKVEFHRU4gPSBPRkYgLgo+IEpUQUcgaXMgZGlzYWJsZWQKPgo+IFBX TTFMMyBsb3cgb3V0IHB1dCAzLiBJIHRoaW5rIHRoaXMgZ2V0cyB0YWtlbiBjYXJlIHdpdGggdGhp cyBjb25maWd1cmF0aW9uCj4gYml0OiAjcHJhZ21hIGNvbmZpZyBQV01QSU4gPSBPTsKgIMKgIMKg IFRoaXMgbWVhbnMgdGhhdCBQV00gbW9kdWxlIHBpbnMKPiBjb250cm9sbGVkIGJ5IFBPUlQgcmVn aXN0ZXIgYXQgZGV2aWNlIFJlc2V0Cj4KPiBSUDExIGlzIGEgcmVtYXBwYWJsZSBwaW4uIEkgcmVt YXBwZWQgaXQgdG8gYmUgYW4gdWFydCB0cmFuc21pdCBwaW4gd2l0aAo+IHRoaXMgaW5zdHJ1Y3Rp b24gOiBSUE9SNWJpdHMuUlAxMVLCoCDCoCA9IDM7wqAgLy8gQXNzaWduIFUxVFggcGVyaXBoZXJh bCB0bwo+IHBpbiBSUDExIC4KPgo+IENOMTUgY2hhbmdlIG5vdGlmaWNhdGlvbiByZXNnaXN0ZXIg bWFwLiBJIGRvbid0IHJlYWxseSBrbm93IHdoYXQgdGhpcyBpcwo+IGZvci4gQnV0IGFjY29yZGlu ZyB0byB0aGUgZG9jdW1lbnRhdGlvbiB0aGlzIGlzIG9mIGxvd2VyIHByaW9yaXR5IHRoYW4gdGhl Cj4gb3RoZXJzIGJlZm9yZSBpdC4gU28gaWYgSSBpbXBsZW1lbnRlZCBSUDExIGFscmVhZHkgdGhp cyBzaG91bGRudCBiZSBhCj4gcHJvYmxlbQo+Cj4gUE1EMSBwZXJpcGhlcmFsIG1vZHVsZSBkaXNh YmxlIHJlZ2lzdGVyLiBUaGlzIGhvbGRzIHRoZSBVMU1EIGJpdCwgd2hpY2ggaXMKPiB0aGUgVUFS VDEgbW9kdWxlIGRpc2FibGUvZW5hYmxlIGJpdC4gVGhpcyBpcyBpbml0aWFsaXplZCBhcyBlbmFi bGVkIGJ5Cj4gZGVmYXVsdC4gU28gSSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoaXMuCj4K PiBJIGFtIHByb2JhYmx5IG1pc3Npbmcgc29tZXRoaW5nLCBiZWNhdXNlIHdpdGggdGhlc2Ugc2V0 dGluZ3MgdGhlIHByb2plY3QKPiBvbmx5IHdvcmtzIGluIGRlYnVnIG1vZGUgYW5kIG5vdCBpbiBu b3JtYWwgcnVuIG1vZGUuIEkgZGlkbid0IG1ha2UgY2hhbmdlcwo+IHRvIHRoZSBhbmFsb2cgcGlu cyBiZWNhdXNlIGFjY29yZGluZyB0byB0aGlzIG5laXRoZXIgb2YgdGhlc2UgdHdvIHBpbnMgYXJl Cj4gYW5hbG9nIHBpbnMuCj4KPgo+Cj4KPiBPbiBUaHUsIE9jdCAxNiwgMjAxNCBhdCA5OjA0IEFN LCBSdWJlbiBKw7Zuc3NvbiA8bWF4cnViZW5Acmpqb3VybmFsLm5ldD4KPiB3cm90ZToKPgo+PiBB bHNvIHdhdGNoIG91dCBmb3IgdGhlIEpUQUcgcGlucyAoVE1TLCBUQ0ssIFRESSBhbmQgVERPKS4g VGhlc2UgYXJlCj4+IG5vcm1hbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCBidXQgZGlzYWJsZWQgd2hl biBkZWJ1Z2dpbmcgdGhydWdoIHRoZQo+PiBJQ1NQIGludGVyZmFjZSAoUEdFeC9QR0R4KS4KPj4K Pj4gVGhlIGRlYnVnIGV4ZWN1dGl2ZSBhbHNvIHVzZXMgYSBzbWFsbCBhbW91bnQgb2YgcmFtLgo+ Pgo+PiBBbm90aGVyIHRoaW5nIGlzIHRoYXQgdGhlIGRlYnVnZ2VyIHB1bGxzIHVwIHRoZSBNQ0xS IHBpbi4gSWYgeW91Cj4+IGRvbid0IGhhdmUgYSBwdWxsdXAgcmVzaXN0b3Igb24gdGhpcyBwaW4g b24geW91ciBib2FyZCBhbmQgaXQgaXMgdXNlZAo+PiBhcyBNQ0xSIChhbmQgbm90IGEgR1BJTykg eW91ciBjaXJjdWl0IHdpbGwgbm90IHdvcmsgb3Igd29yawo+PiBzcG9yYWRpY2FsbHkuIFRoaXMg aXMgYWxzbyBhIGNvbW1vbiBmYXVsdCB3aGVuIHRoZSBwcm9ncmFtIHdvcmtzIHdpdGgKPj4gdGhl IGRlYnVnZ2VyIGJ1dCBub3QgYnkgaXRzIG93bi4KPj4KPj4gL1J1YmVuCj4+Cj4+ID4gT24gMTUv MTAvMjAxNCAxNTozNCwgVGFtw6FzIEZla2V0ZSB3cm90ZToKPj4gPgo+PiA+ID4gSSBkb24ndCBr bm93IHdoYXQgY291bGQgYmUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbWljcm9jb250cm9s bGVyCj4+ID4gPiBiZWVpbmcgaW4gZGVidWcgbW9kZSBhbmQgYmVlaW5nIGluIG5vcm1hbCBydW5u aW5nIG1vZGUuCj4+ID4KPj4gPiBUaGVyZSBhcmUgc29tZS4gVGhlIG9uZSB0aGF0IEkgZmFjZWQg bXlzZWxmIGlzIHRoZSByZWdpc3RlciBBRFBDRkcKPj4gPiAoQUQxUENGR0wgaW4geW91ciBjYXNl KS4gV2hlbiBkZWJ1Z2dpbmcgdGhlIGRlYnVnIGV4ZWN1dGl2ZSBzZXRzIGFsbCB0aGUKPj4gPiBh bmFsb2cgcGlucyB0byBkaWdpdGFsIGJlY2F1c2Ugc29tZSBQR0MvUEdEIHBhaXJzIGFyZSBzaGFy ZWQgd2l0aCBhbmFsb2cKPj4gPiBpbnB1dHMuIFdoZW4geW91ciBwcm9ncmFtIGlzIHJ1bm5pbmcg d2l0aG91dCB0aGUgZGVidWdnZXIsIHRoZXJlIGlzIG5vCj4+ID4gZGVidWcgZXhlY3V0aXZlIHRv IHNldCB0aGVtIGZvciB5b3UuCj4+ID4KPj4gPiBJc2FhYwo+PiA+Cj4+ID4KPj4gPgo+Pgo+Pgo+ PiAtLQo+PiBodHRwOi8vd3d3LnBpY2xpc3QuY29tL3RlY2hyZWYvcGljbGlzdCBQSUMvU1ggRkFR ICYgbGlzdCBhcmNoaXZlCj4+IFZpZXcvY2hhbmdlIHlvdXIgbWVtYmVyc2hpcCBvcHRpb25zIGF0 Cj4+IGh0dHA6Ly9tYWlsbWFuLm1pdC5lZHUvbWFpbG1hbi9saXN0aW5mby9waWNsaXN0Cj4+Cj4K Pgo+Cj4gLS0KPiAidGhlcmUgaXMgbm8gc3Bvb24iCj4KCgoKLS0gCiJ0aGVyZSBpcyBubyBzcG9v biIKLS0gCmh0dHA6Ly93d3cucGljbGlzdC5jb20vdGVjaHJlZi9waWNsaXN0IFBJQy9TWCBGQVEg JiBsaXN0IGFyY2hpdmUKVmlldy9jaGFuZ2UgeW91ciBtZW1iZXJzaGlwIG9wdGlvbnMgYXQKaHR0 cDovL21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZvL3BpY2xpc3QKCgogICAKLS0gCmh0 dHA6Ly93d3cucGljbGlzdC5jb20vdGVjaHJlZi9waWNsaXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFy Y2hpdmUKVmlldy9jaGFuZ2UgeW91ciBtZW1iZXJzaGlwIG9wdGlvbnMgYXQKaHR0cDovL21haWxt YW4ubWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZvL3BpY2xpc3QK .