SSdkIG9ubHkgc3VnZ2VzdCBvbmUgc21hbGwgYWRqdXN0bWVudCBUYW1hcywgc2luY2UgdGhlIE9Q IG1hZGUgaXQgY2xlYXIKdGhlcmUgaXMgb3RoZXIgd29yay9pbnRlcnJ1cHRzIHRoYXQgYWxzbyBu ZWVkIHRvIGJlIHByb2Nlc3NlZC4KCk9uIFRodSwgSnVsIDA0LCAyMDEzIGF0IDA4OjQ2OjE4QU0g LTA3MDAsIFRhbWFzIFJ1ZG5haSB3cm90ZToKPiBZb3UgY2FuIGRvIHRoZSBNYWluIGxvb3AgbGlr ZSB0aGlzOgo+IAo+IG1haW5fbG9vcAo+IAo+ICAgICAgICBiYW5rc2VsICAgICBMRURfVElNRVIg ICAgICAgOyBTZWxlY3RzIGJhbmsgY29udGFpbmluZyBMRURfVElNRVIKPiAKPiAgICAgICAgbW92 ZiAgICAgICAgTEVEX1RJTUVSLGYgICAgIDsgQ2hlY2sgaWYgcmVnaXN0ZXIgTEVEX1RJTUVSIGlz IDAKPiAKPiAgICAgICAgYnRmc3MgICAgICAgU1RBVFVTLFoKPiAKPiAgICAgICAgZ290byAgICAg ICAgbWFpbl9sb29wICAgICAgIDsgV2FpdCB1bnRpbCBMRURfVElNRVIgY291bnRlciByZWFjaGVz IHplcm8KClRoaXMgZ290byBhYm92ZSBpcyB0aGUgb25lIEkgd291bGQgY2hhbmdlLiBJbnN0ZWFk IG9mIGdvaW5nIGJhY2sgdG8KbWFpbl9sb29wIGhlcmUsIEkgd291bGQgc2V0dXAgdG8gcHJvY2Vz cyB0aGUgbmV4dCBmbGFnLiBTb21ldGhpbmcgbGlrZToKCglnb3RvCQluZXh0X2ZsYWcJOyBubyB0 aW1lb3V0IGZvciBzdGF0ZS4gQ2hlY2sgbmV4dCBmbGFnCj4gCj4gdGltZXNfdXAxCj4gCj4gICAg ICAgIG1vdmx3ICAgICAgIC4xMDAgICAgICAgICAgICA7IFJlLWluaXRpemFsaXplIExFRF9USU1F Ugo+IAo+ICAgICAgICBtb3Z3ZiAgICAgICBMRURfVElNRVIKPiAKPiAKPiAKPiBzdGF0ZTEKPiAK PiAgICAgICAgOyBUaGlzIHNpbXBsaWZpZWQgU3RhdGUgTWFjaGluZSBvbmx5IGNvdWxkIGhhdmUg MiBzdGF0ZXMsCj4gCj4gICAgICAgIDsgeW91IHByb2JhYmx5IHdhbnQgdG8gd3JpdGUgYSBtdWNo IGJldHRlciBvbmUKPiAKPiAgICAgICAgYmFua3NlbCAgICAgU1RBVEUKPiAKPiAgICAgICAgYnRm c2MgICAgICAgU1RBVEUsMAo+IAo+ICAgICAgICBnb3RvICAgICAgICBzdGF0ZTIgICAgICAgICA7 IE5vdCBTdGF0ZSAxLCB0cnkgU3RhdGUgMgo+IAo+ICAgICAgICBic2YgICAgICAgICBTVEFURSww ICAgICAgICA7IENoYW5nZSBTdGF0ZQo+IAo+IAo+IAo+ICAgICAgICBiYW5rc2VsICAgICBQT1JU QQo+IAo+ICAgICAgICBic2YgICAgICAgICBQT1JUQSwxICAgICAgICA7IFR1cm4gTEVEIG9uCj4g Cj4gICAgICAgIGdvdG8gICAgICAgIG1haW5fbG9vcAo+IAo+IAo+IAo+IHN0YXRlMgo+IAo+ICAg ICAgICBiY2YgICAgICAgICBTVEFURSwwICAgICAgICA7IENoYW5nZSBTdGF0ZQo+IAo+IAo+IAo+ ICAgICAgICBiYW5rc2VsICAgICBQT1JUQQo+IAo+ICAgICAgICBiY2YgICAgICAgICBQT1JUQSwx ICAgICAgICA7IFR1cm4gTEVEIG9mZgo+IAoKbmV4dF9mbGFnOgo7IFRoaXMgaXMgd2hlcmUgdGhl IHByb2Nlc3NpbmcgY29kZSBmb3IgdGhlIG5leHQgZmxhZyB3b3VsZCBnbwo7IEVhY2ggd291bGQg dGVzdCB0aGUgc2FtZSB3YXkuIFNlZSBpZiB0aGUgdHJpZ2dlciBvY2N1cmVkLCBhbmQKOyBwcm9j ZXNzIHRoZSBjb2RlIGlmIGl0IGRvZXMuIFNraXAgdGhlIGNvZGUgKGFuZCBvbiB0byB0aGUgZmxh ZyAKOyBhZnRlciB0aGlzIG9uZSkgaWYgdGhlIHRyaWdnZXIgaGFzIG5vdCBmaXJlZC4uLgoKPiAg ICAgICAgZ290byAgICAgICAgbWFpbl9sb29wCj4gCj4gCj4gVGFtYXMKPiAKPiAKPiAKPiBPbiA0 IEp1bHkgMjAxMyAwODowNywgVGFtYXMgUnVkbmFpIDx0YW1hcy5ydWRuYWlAZ21haWwuY29tPiB3 cm90ZToKPiAKPiA+IE5vdCBzdXJlIGlmIHlvdSBnb3QgbXkgcHJldmlvdXMgZS1tYWlsIGFib3V0 IHRoZSBjb2xvciBjb2RlZCBJU1I/IFRoYXQgb25lCj4gPiBoZWxwcyB5b3UgdG8gdW5kZXJzdGFu ZCB0aGUgc3RydWN0dXJlLiBBbnl3YXksIGp1c3QgYSBzbWFsbCBtb2RpZmljYXRpb24gdG8KPiA+ IHRoYXQgdGhhdCBpbmNsdWRlcyB5b3VyIExFRF9USU1FUiB2YXJpYWJsZToKPiA+Cj4gPiA7Kioq KioqKioqKioqKioqKioqKioqKioqIElOVEVSUlVQVCBST1VUSU5FCj4gPiAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKPiA+Cj4gPiAgICAgICAgb3JnICAgICAgICAgMHgwMDA0ICAg ICAgICAgIDsgSW50ZXJydXB0IHZlY3Rvcgo+ID4KPiA+IHBvbG9ndWUKPiA+Cj4gPiAgICAgICAg bW92d2YgICAgICAgd190ZW1wICAgICAgICAgIDsgU2F2ZXMgdmFsdWUgaW4gcmVnaXN0ZXIgVwo+ ID4KPiA+ICAgICAgICBtb3ZmICAgICAgICBTVEFUVVMgICAgICAgICAgOyBTYXZlcyB2YWx1ZSBp biByZWdpc3RlciBTVEFUVVMKPiA+Cj4gPiAgICAgICAgbW92d2YgICAgICAgc3RhdHVzX3RlbXAK PiA+Cj4gPiAgICAgICAgbW92ZiAgICAgICAgUENMQVRIICAgICAgICAgIDsgU2F2ZXMgdmFsdWUg aW4gcmVnaXN0ZXIgUENMQVRICj4gPgo+ID4gICAgICAgIG1vdndmICAgICAgIHBjbGF0aF90ZW1w Cj4gPgo+ID4KPiA+Cj4gPiBpc3JfY2FzZV9UTVIwCj4gPgo+ID4gICAgICAgIGJhbmtzZWwgICAg IElOVENPTiAgICAgICAgICA7IFNlbGVjdHMgYmFuayBjb250YWluaW5nIElOVENPTgo+ID4KPiA+ ICAgICAgICBidGZzYyAgICAgICBJTlRDT04sIFRNUjBJRiAgOyBDaGVjayBpZiBpbnRlcnJ1cHQg b2NjdXJyZWQgYnkgVE1SMAo+ID4KPiA+ICAgICAgICBnb3RvICAgICAgICBpc3JfdG1yMCAgICAg ICAgOyBZZXMsIGdvIHRvIGl04oCZcyBJU1IKPiA+Cj4gPiBpc3JfZGVmYXVsdAo+ID4KPiA+ICAg ICAgICBnb3RvICAgICAgICBlcGlsb2d1ZQo+ID4KPiA+Cj4gPgo+ID4gaXNyX3RtcjAKPiA+Cj4g PiAgICAgICAgYmFua3NlbCAgICAgTEVEX1RJTUVSICAgICAgIDsgU2VsZWN0cyBiYW5rIGNvbnRh aW5pbmcgTEVEX1RJTUVSCj4gPgo+ID4gICAgICAgIG1vdmYgICAgICAgIExFRF9USU1FUixmICAg ICA7IENoZWNrIGlmIHJlZ2lzdGVyIExFRF9USU1FUiBpcyAwCj4gPgo+ID4gICAgICAgIGJ0ZnNj ICAgICAgIFNUQVRVUyxaICAgICAgICA7IE9ubHkgd2hlbiBpdCBpcyBub24temVybywgaXQuLi4K PiA+Cj4gPiAgICAgICAgZGVjZiAgICAgICAgTEVEX1RJTUVSICAgICAgIDsgRGVjcmVtZW50cyBy ZWdpc3RlciBDT1VOVEVSIGJ5IDEKPiA+Cj4gPgo+ID4KPiA+IGVvaV90bXIwCj4gPgo+ID4gICAg ICAgIGJhbmtzZWwgICAgIElOVENPTiAgICAgICAgICA7IFNlbGVjdHMgYmFuayBjb250YWluaW5n IElOVENPTgo+ID4KPiA+ICAgICAgICBiY2YgICAgICAgICBJTlRDT04sVE1SMElGICAgOyBDbGVh cnMgaW50ZXJydXB0IGZsYWcgVE1SMElGCj4gPgo+ID4KPiA+Cj4gPiBlcGlsb2d1ZQo+ID4KPiA+ ICAgICAgICBtb3ZmICAgICAgICBwY2xhdGhfdGVtcCx3ICAgOyBQQ0xBVEggaXMgZ2l2ZW4gaXRz IG9yaWdpbmFsIGNvbnRlbnQKPiA+Cj4gPiAgICAgICAgbW92d2YgICAgICAgUENMQVRICj4gPgo+ ID4gICAgICAgIG1vdmYgICAgICAgIHN0YXR1c190ZW1wLHcgICA7IFNUQVRVUyBpcyBnaXZlbiBp dHMgb3JpZ2luYWwgY29udGVudAo+ID4KPiA+ICAgICAgICBtb3Z3ZiAgICAgICBTVEFUVVMKPiA+ Cj4gPiAgICAgICAgc3dhcGYgICAgICAgd190ZW1wLGYgICAgICAgIDsgVyBpcyBnaXZlbiBpdHMg b3JpZ2luYWwgY29udGVudAo+ID4KPiA+ICAgICAgICBzd2FwZiAgICAgICB3X3RlbXAsdwo+ID4K PiA+Cj4gPgo+ID4gICAgICAgIHJldGZpZSAgICAgICAgICAgICAgICAgICAgICA7IFJldHVybiBm cm9tIGludGVycnVwdCByb3V0aW5lCj4gPgo+ID4KPiA+IE5vdyBpbiB0aGUgbWFpbiBsb29wIHlv dSBjaGVjayBpZiBMRURfVElNRVIgaXMgemVyby4gSWYgaXQgaXMsIHRoZW4gdHVybgo+ID4gbGVk IG9uIG9yIG9mZiBkZXBlbmRpbmcgb24gdGhlIHN0YXRlIHBsdXMgc2V0IExFRF9USU1FUiB0byB0 aGUgZGVzaWduYXRlZAo+ID4gdmFsdWUuCj4gPgo+ID4gVGFtYXMKPiA+Cj4gPgo+ID4KPiA+IE9u IDQgSnVseSAyMDEzIDA2OjE1LCBFbGVjdHJvbmljIENvbnN1bHRhdGlvbiA8Cj4gPiBlbGVjdHJv bmljLmNvbnN1bHRhdGlvbi5hdUBnbWFpbC5jb20+IHdyb3RlOgo+ID4KPiA+PiBvciA6Cj4gPj4K PiA+PiBjb3VudGluZyAgICAgYnRmc3MgIElOVENPTixUMElGICAgICAgICAgO2lzIHRpbWVyMCBp bnRlcnJ1cHQgZmxhZyB0cnVlID8KPiA+PiAgICAgICAgICAgICAgICAgICAgICAgZ290byB6ZXJv X3N0YXR1cwo+ID4+ICAgICAgICAgICAgICAgICAgICAgICBiY2YgICAgIElOVENPTixUMElGICAg ICAgICAgICAgO2lmIFQwSUY9ZmFsc2UKPiA+PiBjbGVhciB0aW1lcjAgaW50ZXJydXB0IGZsYWcK PiA+PiAgICAgICAgICAgICAgICAgICAgICAgIGRlY2YgICAgTGVkVGltZXIsMSAgICAgICAgICA7 aWYgVDBJRj10cnVlIHJlZHVjZQo+ID4+IHRoZSBjb3VudGVyCj4gPj4gICAgICAgICAgICAgICAg ICAgICAgIDtjaGVjayBpZiBMZWRUaW1lciA9IDAgPwo+ID4+ICAgICAgICAgIHplcm9fc3RhdHVz ICAgICBidGZzYyAgICAgU1RBVFVTLCBaICAgICAgICAgICAgIDtaIGJpdCBpcyBzZXQKPiA+PiB0 byAxIGlmIFcgd2FzIDAwIC0gc2tpcCBuZXh0IGluc3RydWN0aW9uIGlmIG5vdCAwMAo+ID4+ICAg ICAgICAgICAgICAgICAgICAgICAgO0xlZFRpbWVyPTAKPiA+PiAgICAgICAgICAgICAgICAgICAg ICAgZ290byAgIGNvdW50aW5nICAgICAgICAgIDtmcm9tIGJ0ZnNjIGlmIGl0J3MgMSwgZ28KPiA+ PiB0byBuZXh0IHN0YXRlCj4gPj4gICAgICAgICAgICAgICAgICAgICAgIDtMZWRUaW1lciE9MAo+ ID4+ICAgICAgICAgICAgICAgICAgICAgICAgZ290byAgIG5leHRfc3RhdGUgICAgICAgICAgICA7 ZnJvbSBidGZzYyBpZiBpdCdzCj4gPj4gMCBrZWVwIGNvdW50aW5nIGludGVycnVwdAo+ID4+Cj4g Pj4gICAgICAgICAgbmV4dF9zdGF0ZSAgICBpbmNmICAgIExlZFN0YXRlLDEgICAgICAgICAgICA7 IGlmIDAwIGluY3JlYXNlCj4gPj4gdGhlIHN0YXRlLCBmb3IgdGhlIG5leHQgc3RhdGUKPiA+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCj4gPj4gLS0KPiA+PiBodHRwOi8vd3d3 LnBpY2xpc3QuY29tL3RlY2hyZWYvcGljbGlzdCBQSUMvU1ggRkFRICYgbGlzdCBhcmNoaXZlCj4g Pj4gVmlldy9jaGFuZ2UgeW91ciBtZW1iZXJzaGlwIG9wdGlvbnMgYXQKPiA+PiBodHRwOi8vbWFp bG1hbi5taXQuZWR1L21haWxtYW4vbGlzdGluZm8vcGljbGlzdAo+ID4+Cj4gPgo+ID4KPiA+Cj4g PiAtLQo+ID4gaW50IG1haW4oKSB7IGNoYXIgKmEsKnMsKnE7IHByaW50ZihzPSJpbnQgbWFpbigp IHsgY2hhciAqYSwqcywqcTsKPiA+IHByaW50ZihzPSVzJXMlcywgcT0lcyVzJXMlcyxzLHEscSxh PSVzJXMlcyVzLHEscSxxLGEsYSxxKTsgfSIsCj4gPiBxPSJcIiIscyxxLHEsYT0iXFwiLHEscSxx LGEsYSxxKTsgfQo+ID4KPiAKPiAKPiAKPiAtLSAKPiBpbnQgbWFpbigpIHsgY2hhciAqYSwqcywq cTsgcHJpbnRmKHM9ImludCBtYWluKCkgeyBjaGFyICphLCpzLCpxOwo+IHByaW50ZihzPSVzJXMl cywgcT0lcyVzJXMlcyxzLHEscSxhPSVzJXMlcyVzLHEscSxxLGEsYSxxKTsgfSIsCj4gcT0iXCIi LHMscSxxLGE9IlxcIixxLHEscSxhLGEscSk7IH0KPiAtLSAKPiBodHRwOi8vd3d3LnBpY2xpc3Qu Y29tL3RlY2hyZWYvcGljbGlzdCBQSUMvU1ggRkFRICYgbGlzdCBhcmNoaXZlCj4gVmlldy9jaGFu Z2UgeW91ciBtZW1iZXJzaGlwIG9wdGlvbnMgYXQKPiBodHRwOi8vbWFpbG1hbi5taXQuZWR1L21h aWxtYW4vbGlzdGluZm8vcGljbGlzdAoKLS0gCkJ5cm9uIEEuIEplZmYKQ2hhaXI6IERlcGFydG1l bnQgb2YgQ29tcHV0ZXIgU2NpZW5jZSBhbmQgSW5mb3JtYXRpb24gVGVjaG5vbG9neQpDb2xsZWdl IG9mIEluZm9ybWF0aW9uIGFuZCBNYXRoZW1hdGljYWwgU2NpZW5jZXMKQ2xheXRvbiBTdGF0ZSBV bml2ZXJzaXR5Cmh0dHA6Ly9mYWN1bHR5LmNsYXl0b24uZWR1L2JqZWZmCi0tIApodHRwOi8vd3d3 LnBpY2xpc3QuY29tL3RlY2hyZWYvcGljbGlzdCBQSUMvU1ggRkFRICYgbGlzdCBhcmNoaXZlClZp ZXcvY2hhbmdlIHlvdXIgbWVtYmVyc2hpcCBvcHRpb25zIGF0Cmh0dHA6Ly9tYWlsbWFuLm1pdC5l ZHUvbWFpbG1hbi9saXN0aW5mby9waWNsaXN0Cg== .