TWFydGluIEtvbGxlciB3cm90ZToKCj4gSGksCj4gCj4gSSdtIHRyeWluZyB0byBtaWdyYXRlIG15 IGttYWlsMSBzZXR1cCB0byBrbWFpbDIgLSBmb3IgdGVzdGluZyBiZWZvcmUKPiByZWFsbHkgdXNp bmcgaXQsIEkgY29waWVkIGV2ZXJ5dGhpbmcgKH4vTWFpbCB+Ly5sb2NhbCB+Ly5jb25maWcgfi8u a2RlNCkKPiBpbnRvIGEgdmlydHVhbCBtYWNoaW5lICh2Ym94KSBydW5uaW5nIG9wZW5TdXNlIDEy LjEvMzJiaXQuCj4gCj4gSSB1cGdyYWRlZCBLREUgdG8gdGhlIHBhY2thZ2VzIGZyb20gS0RFIHRy dW5rIChlLmcuCj4ga2RlcGltNC00LjcuODAtMS4yLmk1ODYsIGFsdGhvdWdoIHRoZSBIZWxwIG1l bnUgc3RpbGwgdGVsbHMgbWUgdGhhdCB0aGlzCj4gaXMgS0RFIDQuNy4zIC4uLikKCktub3duICJp c3N1ZSIsIGFzIGtkZWxpYnMgaXMgc3RpbGwgNC43LnguCgo+IFRoZW4gSSBzaW1wbHkgc3RhcnRl ZCAia21haWwtbWlncmF0b3IgLS1pbnRlcmFjdGl2ZSIgb24gdGhlIGNvbW1hbmRsaW5lLgo+IEkg c2F3IHRoYXQgaXQgY3JlYXRlZCB0aGUgbXlTUUwgZGIsIGV0Yy4gYW5kIHNob3dlZCB0aGUgbWln cmF0aW9uIGRpYWxvZywKPiB3aGljaCBlbmRlZCBpbiAic3VjY2VzcyIuIFBlcmZlY3QsIEkgdGhv dWdodCAuLi4gYnV0OgoKQWxsIHRoZSByZXN0IGluZGljYXRlcyB0aGF0IG1pZ3JhdGlvbiBkaWRu J3QgZ28gd2VsbC4gQXMgZG9uJ3Qga25vdyB0aGF0IApjb2RlLCBJIGNhbid0IGNvbW1lbnQgaW4g ZGV0YWlsLiBMZXQncyBob3BlIEtldmluIHNob3dzIHVwIChoZSByZWFkcyB0aGlzIApsaXN0IGZy b20gdGltZSB0byB0aW1lKSBhbmQgY2FuIGhlbHAgeW91LiBXaGF0IHlvdSBkaWQgbG9va3MgaGVs cGZ1bCB0aG91Z2gsIAppdCBjb3VsZCBoZWxwIGhpbSB0byBpZGVudGlmeSBzb21lIG1vcmUgYnVn cyBpbnNpZGUgdGhlIG1pZ3JhdGlvbiwgCmVzcGVjaWFsbHkgaWYgeW91IGNhbiByZWxpYWJpbHkg cmVwcm9kdWNlIHRoZSBkZXNjcmliZWQgYmVoYXZpb3IuCklmIHlvdSB3YW50IHRvIHRlc3QgaG93 IEtNYWlsIHdvcmtzIHdoZW4geW91IGltcG9ydCB0aGUgZGF0YSBtYW51YWxseSwgCmZvbGxvdyB0 aGUgdXNlcmJhc2UgYXJ0aWNsZTogCmh0dHA6Ly91c2VyYmFzZS5rZGUub3JnL2luZGV4LnBocD90 aXRsZT1LTWFpbC9GQVFzX0hpbnRzX2FuZF9UaXBzI0NsZWFuX3N0YXJ0X2FmdGVyX2FfZmFpbGVk X21pZ3JhdGlvbgoKPiBJbiB0aGUga29uc29sZSB3aGVyZSBJIHN0YXJ0ZWQgdGhlIG1pZ3JhdGlv biBJIG5vdyBnZXQgY29udGludW91c2x5IDMKPiB0aW1lcyBwZXIgc2Vjb25kIHRoZSBmb2xsb3dp bmcgbWVzc2FnZToKPiAKPiBha29uYWRpX21haWxkaXNwYXRjaGVyX2FnZW50KDEyNDY5KS9saWJh a29uYWRpOiBSZXNvdXJjZSBpZCdzIGRvbid0IG1hdGNoOgo+ICAiYWtvbmFkaV9tYWlsZGlyX3Jl c291cmNlXzAiICJha29uYWRpX21peGVkbWFpbGRpcl9yZXNvdXJjZV8wIgo+IAo+IFdoYXQgZG9l cyB0aGF0IG1lYW4gPwoKTW9zdCBwcm9iYWJseSBpbmNvbnNpc3RlbnQgZGF0YWJhc2UgY3JlYXRl ZCBieSB0aGUgbWlncmF0b3IuCgo+IEFsc28sIG15c3FsZCwgYWtvbmFkaXNlcnZlciBhbmQgYWtv bmFkaV9taXhlZG1haWxkaXJfcmVzb3VyY2UgYXJlIHNoYXJpbmcKPiB0aGUgQ1BVLCB3aGljaCBp cyBhdCAxMDAlIGZvciBzb21lIHRpbWUgYWxyZWFkeS4gUXVlc3Rpb246IGlzIHRoZXJlIHNvbWUK PiBleHBlcmllbmNlIHdpdGggaG93IGxvbmcgdGhpcyAoSSBhc3N1bWUpIGluaXRpYWwgZmlsbGlu ZyBvZiB0aGUgREIgdGFrZXMgPwo+IChmaW5kIE1haWwvfHdjIC1sIHJlc3VsdHMgaW4gOTkyMTAp CgpIYXJkIHRvIGp1ZGdlLCBidXQgc2hvdWxkIGJlIGxlc3MgdGhhbiBhbiBob3VyIElNTy4gCgo+ IFNvbWV0aW1lcyAoYWJvdXQgZXZlcnkgMzAgbWVzc2FnZXMgZnJvbSBhYm92ZSkgSSBhbHNvIGdl dCB0aGlzIG91dHB1dDoKPiAKPiBha29uYWRpX25lcG9tdWtfZmVlZGVyKDEyNDY4KSBJdGVtUXVl dWU6OnJlbW92ZURhdGFSZXN1bHQ6ICJEaWQgbm90Cj4gcmVjZWl2ZSBhIHJlcGx5LiBQb3NzaWJs ZSBjYXVzZXMgaW5jbHVkZTogdGhlIHJlbW90ZSBhcHBsaWNhdGlvbiBkaWQgbm90Cj4gc2VuZCBh IHJlcGx5LCB0aGUgbWVzc2FnZSBidXMgc2VjdXJpdHkgcG9saWN5IGJsb2NrZWQgdGhlIHJlcGx5 LCB0aGUgcmVwbHkKPiB0aW1lb3V0IGV4cGlyZWQsIG9yIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24g d2FzIGJyb2tlbi4iCgpTb3JyeSwgbm8gaWRlYS4KCj4gTXkgbWFpbCBzZXR1cCBoYXMgb25seSBs b2NhbCBtYm94IGFuZCBtYWlsZGlyIGZpbGVzLCAKCkFyZSB0aGV5IG1peGVkIChsaWtlIGluIEtN YWlsMSkgb3Igc2VwYXJhdGUgbWFpbGRpciBhbmQgbWJveCBmaWxlcz8gCgo+IG5vIElNQVAgZXRj Lgo+IFRoZSBtaWdyYXRpb24gY3JlYXRlZCB0aGUgZm9sbG93aW5nIG1haWwgcmVsYXRlZCByZXNv dXJjZXM6Cj4gLSAyIFBPUDMgcmVzb3VyY2VzICh3aGljaCBjYW4ndCBkb3dubG9hZCBkYXRhIGFz IEkgZGlzYWJsZWQgdGhlIG5ldHdvcmsgdG8KPiBiZSBzdXJlIG5vdCB0byBkb3dubG9hZCBteSBy ZWFsIG1haWxzKSAKPiAtICJMb2NhbCBGb2xkZXJzIiBtYWlsZGlyCj4gLSAyIGxvY2FsIG1ib3gg ZmlsZSByZXNvdXJjZQo+IC0gIkttYWlsIEZvbGRlcnMiClRoZSBsYXN0IGlzIHlvdXIgaW1wb3J0 ZWQgIm9sZCIgS01haWwgZm9sZGVyLgoKPiBJbnRlcmVzdGluZyBpcyBhbHNvOiBJIG5vdyBzdGFy dGVkICJrbWFpbCIgaW4gYSBzZWNvbmQga29uc29sZSBzZXNzaW9uLAo+IGFuZCBrbWFpbCBwb3Bz IHVwIHRoZSAiRG8geW91IHdhbnQgdG8gbWlncmF0ZSBub3c/IiBkaWFsb2cgLi4uIHdoeSB0aGF0 ID8KPiBJIGFscmVhZHkgcmFuIGl0IGJ5IG15c2VsZiAuLi4gPwoKTWF5YmUgdGhpcyBnb2VzIGF3 YXkgb25jZSBldmVyeXRoaW5nIGlzIGRvbmUgKENQVSB1c2FnZSBnb2VzIGRvd24gaW4gdGhlIAph a29uYWRpIHJlc291cmNlcyk/IEp1c3QgYSB3aWxkIGd1ZXNzLiBJZiBub3QsIGl0IG1lYW5zIHRo ZSBjb25maWcgZmlsZSB3YXMgCm5vdCBwcm9wZXJseSB1cGRhdGVkIGFmdGVyIHRoZSBtaWdyYXRp b24gcnVuLgoKPiBUaGF0J3Mgb2ssIGJ1dCB3aHkgZG9lcyBrbWFpbCB0cnkgdG8gcnVuIGl0IHRo ZW4gPwoKU2VlbXMgbGlrZSBhIGJ1ZywgcmVwb3J0IHRoaXMgKGFzIHlvdSB3cm90ZSBkb3duIGhl cmUpLCBmb3IgS01haWwyIGFuZCAKbWlncmF0aW9uLgoKPiBUaGVuIGttYWlsIHRlcm1pbmF0ZXMg YW5kIGtvbnNvbGUgc2hvd3M6Cj4gCj4ga21haWwyKDEyNjIyKS9saWJha29uYWRpIEFrb25hZGk6 OkdldExvY2tKb2I6OlByaXZhdGU6OnRpbWVvdXQ6IFRpbWVvdXQKPiB0cnlpbmcgdG8gZ2V0IGxv Y2suIENoZWNrIHdobyBoYXMgYWNxdWlyZWQgdGhlIG5hbWUKPiAib3JnLmtkZS5waW0uU3BlY2lh bENvbGxlY3Rpb25zIiBvbiBEQnVzLCB1c2luZyBxZGJ1cyBvciBxZGJ1c3ZpZXdlci4KPiBrbWFp bDIoMTI2MjIpL2xpYmFrb25hZGkKPiBBa29uYWRpOjpTcGVjaWFsQ29sbGVjdGlvbnNSZXF1ZXN0 Sm9iUHJpdmF0ZTo6bG9ja1Jlc3VsdDogRmFpbGVkIHRvIGdldAo+IGxvY2s6ICJaZWl0w7xiZXJz Y2hyZWl0dW5nIGJlaW0gRXJoYWx0ZW4gZGVyIFNwZXJyZS4iIGttYWlsMigxMjYyMikKPiBNYWls Q29tbW9uOjpLZXJuZWw6OmVtZXJnZW5jeUV4aXQ6ICJJbiBLTWFpbCBpc3QgZWluIHNjaHdlcndp ZWdlbmRlcgo+IEZlaGxlciBhdWZnZXRyZXRlbi4gRGFzIFByb2dyYW1tIHdpcmQgYmVlbmRldC4K ClRoaXMgYWxzbyBsb29rcyBzb21lIG1lc3NpbmcgdXAgd2l0aCB0aGUgbWlncmF0aW9uLiBLTWFp bCBuZWVkIHNvbWUgc3BlY2lhbCAKZm9sZGVycyB0byBydW4gKEluYm94LCBPdXRib3gsIGV0Yykg YW5kIHNlZW1zIGl0IGNhbid0IGFjY2VzcyB0aGVtLgo+IAo+IC4uLiB3aGljaCBJIGFzc3VtZSBp cyBkdWUgdG8gbXlzcWxkLCBha29uYWRpc2VydmVyIGFuZAo+IGFrb25hZGlfbWl4ZWRtYWlsZGly X3Jlc291cmNlIHN0aWxsIGZpbGxpbmcgdGhlIERCLiBJcyB0aGF0IGNvcnJlY3QgPwoKTWlnaHQg YmUuCgo+IE5vdGU6IEkgdHJpZWQgdGhpcyBhbHJlYWR5IHllc3RlcmRheSB3aXRoIEtERSA0Ljcu MiBhbmQgbGV0IHRoZSBzeXN0ZW0gcnVuCj4gb3ZlciBuaWdodCwgYnV0IDEyIGhvdXJzIGxhdGVy IHRoZSBDUFUgd2FzIHN0aWxsIGF0IDEwMCUgc28gSSBzdG9wcGVkIHRoaXMKPiB0ZXN0LgoKVGhh dCBpcyBkZWZpbml0ZWx5IHdvcnJ5aW5nLgoKSSBzdWdnZXN0OgotIHBsZWFzZSBrZWVwIHlvdXIg bm9uLW1pZ3JhdGVkIGRhdGEgc29tZXdoZXJlLCBzbyB5b3UgY2FuIHJlcHJvZHVjZSB0aGUgCnBy b2JsZW1zIGFuZCBoZWxwIHRoZSBkZXZlbG9wZXIgZml4IHRoZW0KLSB0cnkgYSBjbGVhbiBpbXBv cnQgaW5zdGVhZCBvZiBtaWdyYXRpbmcgdG8gc2VlIGlmIHRoaXMgZ2l2ZXMgeW91IGFuIHVzYWJs ZSAKS01haWwgKGl0IHNob3VsZCkuCgpBbmRyYXMKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KS0RFIFBJTSB1c2VycyBtYWlsaW5nIGxpc3QKU3Vic2NyaXB0 aW9uIG1hbmFnZW1lbnQ6IGh0dHBzOi8vbWFpbC5rZGUub3JnL21haWxtYW4vbGlzdGluZm8va2Rl cGltLXVzZXJzCg==