QmVsaWV2ZSBpdCBvciBub3QsIEkgYm91Z2h0IG15IGhvdXNlIEJFQ0FVU0UgaXQncyBuZWFy IHRoZSANCmFpcnBvcnQuICA1MDAnIFIgb2YgY2VudGVybGluZSwgNzAwMCcgZnJvbSB0aHJl c2hvbGQgb2YgMDQgDQpMR0EuICBSaWdodCBub3cgLSA2OjEwcG0gRVQgLSBJJ3ZlIGdvdCBw bGFuZXMgZ2Fsb3JlIHNob290aW5nIA0KdGhlIElMUyBpbiBoZWF2eSBmb2cuICBJIGFsd2F5 cyBsb29rIGZvcndhcmQgdG8gZGF5cyBsaWtlIA0KdGhlc2UuDQoNCkNocmlzDQoNCi0tLS0g T3JpZ2luYWwgbWVzc2FnZSAtLS0tDQo+RGF0ZTogRnJpLCAyMyBNYXkgMjAwMyAxNzoxNzo0 MyArMDAwMA0KPkZyb206IGRhbWlyb3NzMkBhdHRiaS5jb20gIA0KPlN1YmplY3Q6IFJlOiBQ cm92aWRlbmNlIGRyb3BzIGV4dGVuc2lvbiBwbGFuIGZvciBzZWNvbmRhcnkgDQpydW53YXkg IA0KPlRvOiBBSVJMSU5FQGxpc3RzZXJ2LmN1bnkuZWR1DQo+DQo+UG9saXRpY2lhbnMgYXJl IG5vdCBvbmx5IHN0dXBpZCBidXQgYWxzbyBzdWZmZXIgZnJvbSBzaG9ydCANCnNpZ2h0ZWRu ZXNzLiBCdWlsZA0KPmFuIGV4dGVuc2lvbiBub3cgb3IgcGF5IGEgbG90IG1vcmUgaW4gdGhl IGZ1dHVyZS4gIEFuZCB0aGUgDQpwZW9wbGUgbGl2aW5nIG5lYXINCj50aGUgYWlycG9ydD8g IE1PVkUhICBJZiB5b3UgYnV5IG9yIHJlbnQgYSBob3VzZSBuZWFyIGFuIA0KYWlycG9ydCwg ZXhwZWN0IG5vaXNlLA0KPnlvdSBpZGlvdHMhDQo+DQo+QSBzd2FtcCBpcyBhIHN3YW1wLCBu byBtYXR0ZXIgd2hhdCB5b3UgY2FsbCBpdC4gIEknZCByYXRoZXIgDQpoYXZlICJ3ZXRsYW5k cyINCj51dGlsaXplZCBmb3Igc29tZXRoaW5nIHVzZWZ1bCB0aGFuIGp1c3Qgc2l0dGluZyB0 aGVyZSANCmdldHRpbmcgd2V0Lg0KPg0KPkRhdmlkIFINCj4+IFByb3ZpZGVuY2UgZHJvcHMg ZXh0ZW5zaW9uIHBsYW4gZm9yIHNlY29uZGFyeSBydW53YXkNCj4+DQo+PiBXQVJXSUNLLCBS LkkuIChBUCkg4oCUIFRoZSBzdGF0ZSBBaXJwb3J0IENvcnBvcmF0aW9uIGhhcyANCmFiYW5k b25lZCBhIHByb3Bvc2FsDQo+PiB0byBleHRlbmQgYSBydW53YXkgYXQgUHJvdmlkZW5jZSdz IFQuRi4gR3JlZW4gQWlycG9ydCwgYSANCmRlY2lzaW9uIGhhaWxlZCBieQ0KPj4gY2l0eSBs ZWFkZXJzIGFuZCByZXNpZGVudHMgb3Bwb3NlZCB0byB0aGUgcGxhbi4gQWlycG9ydCANCkNv cnBvcmF0aW9uDQo+PiBleGVjdXRpdmUgZGlyZWN0b3IgTWljaGFlbCBDaGVzdG9uIGluZm9y bWVkIHRoZSBGZWRlcmFsIA0KQXZpYXRpb24NCj4+IEFkbWluaXN0cmF0aW9uIG9mIHRoZSBk ZWNpc2lvbiBpbiBhIGxldHRlciBkYXRlZCBNYXkgMTIuIA0KSGUgd3JvdGUgdGhlIHBsYW4N Cj4+IHdhcyBkcm9wcGVkIGJlY2F1c2Ugb2YgY29udGludWVkIHB1YmxpYyBvcHBvc2l0aW9u IGFuZCB0aGUgDQpjb3N0cyBvZg0KPj4gZXh0ZW5kaW5nIHRoZSBydW53YXkgaW50byB0aGUg QnVja2V5ZSBCcm9vayANCndldGxhbmRzLiAiV2UndmUgZ290IHRvIHBpY2sNCj4+IG91ciBi YXR0bGVzLCIgQ2hlc3RvbiBzYWlkLiBPZmZpY2lhbHMgaGFkIHdhbnRlZCB0byBleHRlbmQg DQp0aGUgc2Vjb25kYXJ5LA0KPj4gY3Jvc3N3aW5kIHJ1bndheSBieSAyLDAwMCBmZWV0LCBz byBpdCBjb3VsZCBiZSB1c2VkIG1vcmUgDQpieSBjb21tZXJjaWFsDQo+PiBhaXJsaW5lcy4g VGhlIHNob3J0ZXIgcnVud2F5IGhhcyByZWNlaXZlZCBsaXR0bGUgdXNlIHdoZW4gDQpjb21w YXJlZCB0byB0aGUNCj4+IG1haW4gcnVud2F5LiBCdXQgdGhlIGNpdHkgYW5kIHJlc2lkZW50 cyBsaXZpbmcgYXJvdW5kIA0KQnVja2V5ZSBCcm9vayBzYWlkDQo+PiB0aGUgZXh0ZW5zaW9u IHdvdWxkIHBvbGx1dGUgdGhlIHdldGxhbmQgYW5kIGJyaW5nIG1vcmUgDQpub2lzZSB0bw0K Pj4gbmVpZ2hib3Job29kcy4gRXZlbiBmb3JtZXIgR292LiBCcnVjZSBTdW5kbHVuLCBhZnRl ciB3aG9tIA0KYSB0ZXJtaW5hbCBhdA0KPg0KPj4gR3JlZW4gaXMgbmFtZWQsIGFncmVlZCB3 aXRoIHRoZSBkZWNpc2lvbi4NCj4+DQo+PiAiQ2xlYXJseSwgdGhlIFJob2RlIElzbGFuZCBB aXJwb3J0IENvcnBvcmF0aW9uJ3Mgdmlld3BvaW50IA0Kb24gdGhpcyBpc3N1ZSBpcw0KPj4g YSBiaWcgdmljdG9yeSBmb3IgdGhlIENpdHkgb2YgV2Fyd2ljayBhbmQgaXRzIHJlc2lkZW50 cywiIA0KTWF5b3IgU2NvdHQNCj4+IEF2ZWRpc2lhbiB0b2xkIFRoZSBQcm92aWRlbmNlIEpv dXJuYWwuIEFpcnBvcnQgZXhlY3V0aXZlcyANCm5vdyBmb2N1cyBvbg0KPj4gZXh0ZW5kaW5n IHRoZSBwcmltYXJ5IHJ1bndheSBhdCBHcmVlbiB0byA3LDUwMCBmZWV0IGFuZCANCmV2ZW50 dWFsbHkgdG8gOSw1MDANCj4+IGZlZXQsIHNvIGl0IGNvdWxkIGFjY29tbW9kYXRlIGludGVy bmF0aW9uYWwgZmxpZ2h0cy4gVGhlIA0KcmVnaW9uYWwgYWlycG9ydCdzDQo+PiBsYXJnZXN0 IGNhcnJpZXIsIFNvdXRod2VzdCwgc2FpZCB0aGUgZGVjaXNpb24gd291bGQgaGF2ZSANCmxp dHRsZSBlZmZlY3QuICJXZQ0KPj4gaGF2ZSBncm93biBzaW5jZSB3ZSd2ZSBiZWVuIHRoZXJl LCBhbmQgd2Ugc3RpbGwgaGF2ZSByb29tIA0KdG8gZ3JvdywiDQo+PiBTb3V0aHdlc3Qgc3Bv a2Vzd29tYW4gQ2hyaXN0aW5lIFR1cm5lYWJlLUNvbm5lbGx5IHNhaWQuIA0KQ2hlc3RvbiBz YWlkIHRoZQ0KPj4gYWlycG9ydCBpcyBjb25zaWRlcmluZyBhZGRpbmcgNTAwLWZvb3Qgc2Fm ZXR5IGFyZWFzIGF0IA0KZWFjaCBlbmQgb2YgdGhlDQo+PiBzZWNvbmRhcnkgcnVud2F5LiBU aGUgY29ycG9yYXRpb24gaXMgc3R1ZHlpbmcgdXNpbmcgYSBuZXcgDQptYXRlcmlhbCBjYWxs ZWQNCj4+IEZvYW1jcmV0ZSwgd2hpY2ggYWN0cyBsaWtlIHNhbmQgdG8gaGVscCBhdmVydCBj cmFzaGVzLiANCkF2ZWRpc2lhbiBzYWlkIGhlJ2QNCj4+IGJhY2sgdGhlIGlkZWEsIHByb3Zp ZGVkIGl0IGRpZG4ndCBleHRlbmQgdGhlIHJ1bndheS4NCj4+DQo+Pg0KPj4gKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQo+DQo+PiBUaGUg b3duZXIgb2YgUm9nZXIncyBUcmluYmFnbyBTaXRlL1RuVGlzbGFuZC5jb20NCj4+IFJvaiAo Um9nZXIgSmFtZXMpDQo+Pg0K