T24gV2VkLCAxNiBKYW4gMjAxMyAxNjowMTowOCAtMDgwMApCb2IgQmxpY2sgPGJvYmJsaWNrQGZ0 bWwubmV0PiB3cm90ZToKCj4gSXMgdGhpcyBhIGNvcnJlY3Qgd2F5IHRvIGRlY2xhcmUgYW5kIGNh bGwgYSBmdW5jdGlvbiB0aGF0IHVzZXMgYSB1bmlvbgo+IGFzIHRoZSBhcmd1bWVudCwgYW5kIHBh c3MgaXQgYSB2YWx1ZSB0aGF0IGlzIG5vdCBkZWNsYXJlZCBhcyB1bmlvbj8KPiAKPiAvL2RlY2xh cmluZyB0aGUgZnVuY3Rpb24KPiB2b2lkIG15RHVtYkZ1bmN0aW9uKHVuaW9uIHt1bnNpZ25lZCBp bnQgdWludDsgc2lnbmVkIGludCBzc2ludDsKPiB1bnNpZ25lZCBjaGFyWzJdIHVuY2hhcn0pOwoK VGhpcyBjb2RlIGlzIHdlaXJkIGJlY2F1c2UgaXQgdXNlcyBhbiBhbm9ueW1vdXMgdW5pb24gKGRl ZmluZWQgaW4gdGhlCnBhcmFtZXRlciBsaXN0KSwgbm90IGJlY2F1c2UgaXQgdXNlcyBhIHVuaW9u ICh0aGUgcGFyYW1ldGVyIGFsc28gaGFzCm5vIG5hbWUsIGJ1dCB0aGF04oCZcyBhIG1pbm9yIGlz c3Vl4oCUbmFtZWxlc3MgcGFyYW1ldGVycyBpbiBwcm90b3R5cGVzCmFyZSBhbGxvd2VkIGluIEMr KyBidXQgbm90IEMpLiBUaGlzCjxodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI5 MDQ2NjgvY29tcGF0aWJsZS10eXBlcy1hbmQtc3RydWN0dXJlcy1pbi1jPgpoYXMgYSBsb3Qgb2Yg ZGlzY3Vzc2lvbiBvbiBhbm9ueW1vdXMgc3RydWN0cywgd2hpY2ggcHJvYmFibHkgYXBwbGllcwp0 byBhbm9ueW1vdXMgdW5pb25zIHRvby4gU29tZSBwZW9wbGUgc2VlbSB0byBiZSBjbGFpbWluZyB0 aGF0IGFub255bW91cwpzdHJ1Y3RzIHdpdGggdGhlIHNhbWUgZWxlbWVudHMgc2hvdWxkIGJlIGNv bXBhdGlibGU7IG90aGVycyBjbGFpbSBub3QuClRoZXkgc2VlbSB0byBzdGFydCB3aXRoIHRoZSBj bGFpbSB0aGF0IHN0cnVjdCBkZWZpbml0aW9ucyB3aXRoIHRoZSBzYW1lCm1lbWJlcnMgYXJlIGNv bXBhdGlibGUuIFRoZXkgdGhlbiBtb3ZlIG9uIHRvIHRoZSBvYnNlcnZhdGlvbiB0aGF0IHRoYXQK b25seSBhcHBsaWVzIGlmIHRoZSBkZWZpbml0aW9ucyBhcmUgaW4gZGlmZmVyZW50IHRyYW5zbGF0 aW9uIHVuaXRzLCBhbmQKdGhhdCBlYWNoIGFub255bW91cyBzdHJ1Y3Qgb3IgdW5pb24gd2l0aGlu IGEgdHJhbnNsYXRpb24gdW5pdCBkZWZpbmVzIGEKc2VwYXJhdGUgdHlwZS4gVGhlIHJlbGV2YW50 IG9ic2VydmF0aW9uIGlzIHRoYXQgaWYgeW91IGRlZmluZSBhIHN0cnVjdAoob3IgdW5pb24pIGlu IGEgcGFyYW1ldGVyIGxpc3QsIHlvdSAqY2Fu4oCZdCogdXNlIGl0IHdpdGhvdXQgYWxzbwpkZWZp bmluZyBpdCBhIHNlY29uZCB0aW1lIGluIHRoZSBzYW1lIHRyYW5zbGF0aW9uIHVuaXQuIOKAnGty aXNz4oCdIG1ha2VzCnNvbWUgcmVmZXJlbmNlIHRvIGFzc2lnbm1lbnQgcnVsZXM7IHdoZXRoZXIg dGhvc2Ugd291bGQgYXBwbHkgZm9yCmZ1bmN0aW9uIHBhcmFtZXRlcnMgb3Igbm90IGxpa2UgeW91 IGhhdmUgaGVyZSwgSSBkb27igJl0IGtub3cuCgpCZXR0ZXIgd291bGQgYmUgdG8gTk9UIG1ha2Ug aXQgYW4gYW5vbnltb3VzIHVuaW9uOgoKdHlwZWRlZiB1bmlvbiB7Cgl1bnNpZ25lZCBpbnQgdWlu dDsKCXNpZ25lZCBpbnQgc3NpbnQ7Cgl1bnNpZ25lZCBjaGFyIHVuY2hhclsyXTsgLy8gYnJhY2tl dHMgZ28gYWZ0ZXIgdGhlIG5hbWUKfSBteV91bmlvbjsKCnZvaWQgbXlEdW1iRnVuY3Rpb24obXlf dW5pb24gc29tZXZhcik7Cgo+IC8vIGNhbGxpbmcgaXQgZnJvbSBzb21ld2hlcmUgaW4gbXkgcHJv Z3JhbQo+ICAgdW5zaWduZWQgaW50IGR1bWJ2YXI7Cj4gICBkdW1idmFyID0gc29tZWR1bWJ2YWx1 ZTsKPiAgIG15RHVtYkZ1bmN0aW9uKGR1bWJ2YXIpOwoKQ2FsbCBpdCBsaWtlIHNvOgoKbXlfdW5p b24geDsKeC51aW50ID0gMjc7Cm15RHVtYkZ1bmN0aW9uKHgpOwoKSW4gQysrIGluaXRpYWxpemVy IGxpc3Qgc3ludGF4IG1pZ2h0IGJlIGFibGUgdG8gZG8gc29tZXRoaW5nCmludGVyZXN0aW5nLCBi dXQgeW91IHdlcmUgdGFsa2luZyBhYm91dCBDLCBzbyBJIHRoaW5rIHRoaXMgaXMgYWxsIHlvdQpn ZXQuCgo+IC8vIHRoZSBmdW5jdGlvbgo+IHZvaWQgbXlEdW1iRnVuY3Rpb24oc29tZXZhcil7Cj4g ICBpZiAoc29tZXZhci51bmNoYXJbMV0pCj4gICAgIGRvX3NvbWV0aGluZygpOwo+IH0KCk90aGVy IHRoYW4gc29tZXZhciBub3QgaGF2aW5nIGEgdHlwZSwgeWVwLgoKPiBJcyB0aGF0IGdvaW5nIHRv IHdvcmssIHRoZSBjb21waWxlciBzaG91bGQga25vdyB0aGF0IHNvbWV2YXIgaXMgYW4KPiB1bnNp Z25lZCBpbnQobm90IHRoYXQgaXQgc2hvdWxkIG1hdHRlciBzaW5jZSBpdCdzIGp1c3QgbWVtb3J5 IHNwYWNlCj4gdGhhdCBpcyB0aGUgc2l6ZSBvZiB0aGUgdW5pb24pLCBzbyB3aXRoaW4gbXkgZnVu Y3Rpb24gSSBjYW4gYWNjZXNzCj4gc29tZXZhci51aW50IHNvbWV2YXIuc3NpbnQgYXMgd2VsbCBh cyBzb21ldmFyLnVuY2hhclswXSBhbmQKPiBzb21ldmFyLnVuY2hhclsxXQoKVGVjaG5pY2FsbHks IGFjY2Vzc2luZyBhbnkgdW5pb24gbWVtYmVyIG90aGVyIHRoYW4gdGhlIGxhc3Qgd3JpdHRlbiBv bmUKaXMgbm90IGRlZmluZWQgYnkgdGhlIHN0YW5kYXJkIChJIGJlbGlldmUgdGhlIG5vdGlvbiBv ZiDigJxsYXN0IHdyaXR0ZW4KbWVtYmVy4oCdIGFwcGxpZXMgdG8gdGhlIHZhbHVlIGFuZCBub3Qg dGhlIHZhcmlhYmxlLCBzbyB0aGF0IGl0CnByb3BhZ2F0ZXMgYWNyb3NzIGNvcGllcyBvZiB0aGUg dW5pb24gbGlrZSBpbiB5b3VyIHBhcmFtZXRlciBsaXN0KS4gWW91CmFyZSBwcm9iYWJseSB3aWxs aW5nIHRvIGFzc3VtZSBjb21waWxlciBiZWhhdmlvdXIgaGVyZSB0aG91Z2guCi0tIApodHRwOi8v d3d3LnBpY2xpc3QuY29tIFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUKVmlldy9jaGFuZ2UgeW91 ciBtZW1iZXJzaGlwIG9wdGlvbnMgYXQKaHR0cDovL21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xp c3RpbmZvL3BpY2xpc3QK .