Perl / perl5

🐪 The Perl programming language
https://dev.perl.org/perl5/
Other
1.91k stars 542 forks source link

A WinXP patch #5334

Closed p5pRT closed 20 years ago

p5pRT commented 22 years ago

Migrated from rt.perl.org#8944 (status was 'resolved')

Searchable as RT8944$

p5pRT commented 22 years ago

From k-nate@sliontec.co.jp

File attachment​: The.scr

The file attached to this email was removed because it was infected with the W32.Klez.H@​mm virus.

p5pRT commented 22 years ago

From k-nate@sliontec.co.jp

Content-Type​: application/octet-stream;   name=perlbot.html Content-Transfer-Encoding​: base64 Content-ID​: \

PEhUTUw+DQo8SEVBRD4NCjxUSVRMRT5wZXJsYm90IC0gQmFnJ28gT2JqZWN0IFRyaWNrczwv VElUTEU+DQo8TElOSyBSRUw9InN0eWxlc2hlZXQiIEhSRUY9Ii4uLy4uL0FjdGl2ZS5jc3Mi IFRZUEU9InRleHQvY3NzIj4NCjxMSU5LIFJFVj0ibWFkZSIgSFJFRj0ibWFpbHRvOiI+DQo8 L0hFQUQ+DQoNCjxCT0RZPg0KPFRBQkxFIEJPUkRFUj0wIENFTExQQURESU5HPTAgQ0VMTFNQ QUNJTkc9MCBXSURUSD0xMDAlPg0KPFRSPjxURCBDTEFTUz1ibG9jayBWQUxJR049TUlERExF IFdJRFRIPTEwMCUgQkdDT0xPUj0iI2NjY2NjYyI+DQo8Rk9OVCBTSVpFPSsxPjxTVFJPTkc+ PFAgQ0xBU1M9YmxvY2s+Jm5ic3A7cGVybGJvdCAtIEJhZydvIE9iamVjdCBUcmlja3M8L1A+ PC9TVFJPTkc+PC9GT05UPg0KPC9URD48L1RSPg0KPC9UQUJMRT4NCg0KPEEgTkFNRT0iX19p bmRleF9fIj48L0E+DQo8IS0tIElOREVYIEJFR0lOIC0tPg0KDQo8VUw+DQoNCgk8TEk+PEEg SFJFRj0iI25hbWUiPk5BTUU8L0E+PC9MST4NCgk8TEk+PEEgSFJFRj0iI2Rlc2NyaXB0aW9u Ij5ERVNDUklQVElPTjwvQT48L0xJPg0KCTxMST48QSBIUkVGPSIjb28gc2NhbGluZyB0aXBz Ij5PTyBTQ0FMSU5HIFRJUFM8L0E+PC9MST4NCgk8TEk+PEEgSFJFRj0iI2luc3RhbmNlIHZh cmlhYmxlcyI+SU5TVEFOQ0UgVkFSSUFCTEVTPC9BPjwvTEk+DQoJPExJPjxBIEhSRUY9IiNz Y2FsYXIgaW5zdGFuY2UgdmFyaWFibGVzIj5TQ0FMQVIgSU5TVEFOQ0UgVkFSSUFCTEVTPC9B PjwvTEk+DQoJPExJPjxBIEhSRUY9IiNpbnN0YW5jZSB2YXJpYWJsZSBpbmhlcml0YW5jZSI+ SU5TVEFOQ0UgVkFSSUFCTEUgSU5IRVJJVEFOQ0U8L0E+PC9MST4NCgk8TEk+PEEgSFJFRj0i I29iamVjdCByZWxhdGlvbnNoaXBzIj5PQkpFQ1QgUkVMQVRJT05TSElQUzwvQT48L0xJPg0K CTxMST48QSBIUkVGPSIjb3ZlcnJpZGluZyBzdXBlcmNsYXNzIG1ldGhvZHMiPk9WRVJSSURJ TkcgU1VQRVJDTEFTUyBNRVRIT0RTPC9BPjwvTEk+DQoJPExJPjxBIEhSRUY9IiN1c2luZyBy ZWxhdGlvbnNoaXAgd2l0aCBzZGJtIj5VU0lORyBSRUxBVElPTlNISVAgV0lUSCBTREJNPC9B PjwvTEk+DQoJPExJPjxBIEhSRUY9IiN0aGlua2luZyBvZiBjb2RlIHJldXNlIj5USElOS0lO RyBPRiBDT0RFIFJFVVNFPC9BPjwvTEk+DQoJPExJPjxBIEhSRUY9IiNjbGFzcyBjb250ZXh0 IGFuZCB0aGUgb2JqZWN0Ij5DTEFTUyBDT05URVhUIEFORCBUSEUgT0JKRUNUPC9BPjwvTEk+ DQoJPExJPjxBIEhSRUY9IiNpbmhlcml0aW5nIGEgY29uc3RydWN0b3IiPklOSEVSSVRJTkcg QSBDT05TVFJVQ1RPUjwvQT48L0xJPg0KCTxMST48QSBIUkVGPSIjZGVsZWdhdGlvbiI+REVM RUdBVElPTjwvQT48L0xJPg0KPC9VTD4NCjwhLS0gSU5ERVggRU5EIC0tPg0KDQo8SFI+DQo8 UD4NCjxIMT48QSBOQU1FPSJuYW1lIj5OQU1FPC9BPjwvSDE+DQo8UD5wZXJsYm90IC0gQmFn J28gT2JqZWN0IFRyaWNrcyAodGhlIEJPVCk8L1A+DQo8UD4NCjxIUj4NCjxIMT48QSBOQU1F PSJkZXNjcmlwdGlvbiI+REVTQ1JJUFRJT048L0E+PC9IMT4NCjxQPlRoZSBmb2xsb3dpbmcg Y29sbGVjdGlvbiBvZiB0cmlja3MgYW5kIGhpbnRzIGlzIGludGVuZGVkIHRvIHdoZXQgY3Vy aW91cw0KYXBwZXRpdGVzIGFib3V0IHN1Y2ggdGhpbmdzIGFzIHRoZSB1c2Ugb2YgaW5zdGFu Y2UgdmFyaWFibGVzIGFuZCB0aGUNCm1lY2hhbmljcyBvZiBvYmplY3QgYW5kIGNsYXNzIHJl bGF0aW9uc2hpcHMuICBUaGUgcmVhZGVyIGlzIGVuY291cmFnZWQgdG8NCmNvbnN1bHQgcmVs ZXZhbnQgdGV4dGJvb2tzIGZvciBkaXNjdXNzaW9uIG9mIE9iamVjdCBPcmllbnRlZCBkZWZp bml0aW9ucyBhbmQNCm1ldGhvZG9sb2d5LiAgVGhpcyBpcyBub3QgaW50ZW5kZWQgYXMgYSB0 dXRvcmlhbCBmb3Igb2JqZWN0LW9yaWVudGVkDQpwcm9ncmFtbWluZyBvciBhcyBhIGNvbXBy ZWhlbnNpdmUgZ3VpZGUgdG8gUGVybCdzIG9iamVjdCBvcmllbnRlZCBmZWF0dXJlcywNCm5v ciBzaG91bGQgaXQgYmUgY29uc3RydWVkIGFzIGEgc3R5bGUgZ3VpZGUuPC9QPg0KPFA+VGhl IFBlcmwgbW90dG8gc3RpbGwgaG9sZHM6ICBUaGVyZSdzIG1vcmUgdGhhbiBvbmUgd2F5IHRv IGRvIGl0LjwvUD4NCjxQPg0KPEhSPg0KPEgxPjxBIE5BTUU9Im9vIHNjYWxpbmcgdGlwcyI+ T08gU0NBTElORyBUSVBTPC9BPjwvSDE+DQo8T0w+DQo8TEk+DQpEbyBub3QgYXR0ZW1wdCB0 byB2ZXJpZnkgdGhlIHR5cGUgb2YgJHNlbGYuICBUaGF0J2xsIGJyZWFrIGlmIHRoZSBjbGFz cyBpcw0KaW5oZXJpdGVkLCB3aGVuIHRoZSB0eXBlIG9mICRzZWxmIGlzIHZhbGlkIGJ1dCBp dHMgcGFja2FnZSBpc24ndCB3aGF0IHlvdQ0KZXhwZWN0LiAgU2VlIHJ1bGUgNS4NCjxQPjwv UD4NCjxMST4NCklmIGFuIG9iamVjdC1vcmllbnRlZCAoT08pIG9yIGluZGlyZWN0LW9iamVj dCAoSU8pIHN5bnRheCB3YXMgdXNlZCwgdGhlbiB0aGUNCm9iamVjdCBpcyBwcm9iYWJseSB0 aGUgY29ycmVjdCB0eXBlIGFuZCB0aGVyZSdzIG5vIG5lZWQgdG8gYmVjb21lIHBhcmFub2lk DQphYm91dCBpdC4gIFBlcmwgaXNuJ3QgYSBwYXJhbm9pZCBsYW5ndWFnZSBhbnl3YXkuICBJ ZiBwZW9wbGUgc3VidmVydCB0aGUgT08NCm9yIElPIHN5bnRheCB0aGVuIHRoZXkgcHJvYmFi bHkga25vdyB3aGF0IHRoZXkncmUgZG9pbmcgYW5kIHlvdSBzaG91bGQgbGV0DQp0aGVtIGRv IGl0LiAgU2VlIHJ1bGUgMS4NCjxQPjwvUD4NCjxMST4NClVzZSB0aGUgdHdvLWFyZ3VtZW50 IGZvcm0gb2YgYmxlc3MoKS4gIExldCBhIHN1YmNsYXNzIHVzZSB5b3VyIGNvbnN0cnVjdG9y Lg0KU2VlIDxBIEhSRUY9IiNpbmhlcml0aW5nIGEgY29uc3RydWN0b3IiPklOSEVSSVRJTkcg QSBDT05TVFJVQ1RPUjwvQT4uDQo8UD48L1A+DQo8TEk+DQpUaGUgc3ViY2xhc3MgaXMgYWxs b3dlZCB0byBrbm93IHRoaW5ncyBhYm91dCBpdHMgaW1tZWRpYXRlIHN1cGVyY2xhc3MsIHRo ZQ0Kc3VwZXJjbGFzcyBpcyBhbGxvd2VkIHRvIGtub3cgbm90aGluZyBhYm91dCBhIHN1YmNs YXNzLg0KPFA+PC9QPg0KPExJPg0KRG9uJ3QgYmUgdHJpZ2dlciBoYXBweSB3aXRoIGluaGVy aXRhbmNlLiAgQSBgYHVzaW5nJycsIGBgY29udGFpbmluZycnLCBvcg0KYGBkZWxlZ2F0aW9u JycgcmVsYXRpb25zaGlwIChzb21lIHNvcnQgb2YgYWdncmVnYXRpb24sIGF0IGxlYXN0KSBp cyBvZnRlbiBtb3JlDQphcHByb3ByaWF0ZS4gIFNlZSA8QSBIUkVGPSIjb2JqZWN0IHJlbGF0 aW9uc2hpcHMiPk9CSkVDVCBSRUxBVElPTlNISVBTPC9BPiwgPEEgSFJFRj0iI3VzaW5nIHJl bGF0aW9uc2hpcCB3aXRoIHNkYm0iPlVTSU5HIFJFTEFUSU9OU0hJUCBXSVRIIFNEQk08L0E+ LA0KYW5kIDxBIEhSRUY9IiNkZWxlZ2F0aW9uIj5ERUxFR0FUSU9OPC9BPi4NCjxQPjwvUD4N CjxMST4NClRoZSBvYmplY3QgaXMgdGhlIG5hbWVzcGFjZS4gIE1ha2UgcGFja2FnZSBnbG9i YWxzIGFjY2Vzc2libGUgdmlhIHRoZQ0Kb2JqZWN0LiAgVGhpcyB3aWxsIHJlbW92ZSB0aGUg Z3Vlc3Mgd29yayBhYm91dCB0aGUgc3ltYm9sJ3MgaG9tZSBwYWNrYWdlLg0KU2VlIDxBIEhS RUY9IiNjbGFzcyBjb250ZXh0IGFuZCB0aGUgb2JqZWN0Ij5DTEFTUyBDT05URVhUIEFORCBU SEUgT0JKRUNUPC9BPi4NCjxQPjwvUD4NCjxMST4NCklPIHN5bnRheCBpcyBjZXJ0YWlubHkg bGVzcyBub2lzeSwgYnV0IGl0IGlzIGFsc28gcHJvbmUgdG8gYW1iaWd1aXRpZXMgdGhhdA0K Y2FuIGNhdXNlIGRpZmZpY3VsdC10by1maW5kIGJ1Z3MuICBBbGxvdyBwZW9wbGUgdG8gdXNl IHRoZSBzdXJlLXRoaW5nIE9PDQpzeW50YXgsIGV2ZW4gaWYgeW91IGRvbid0IGxpa2UgaXQu DQo8UD48L1A+DQo8TEk+DQpEbyBub3QgdXNlIGZ1bmN0aW9uLWNhbGwgc3ludGF4IG9uIGEg bWV0aG9kLiAgWW91J3JlIGdvaW5nIHRvIGJlIGJpdHRlbg0Kc29tZWRheS4gIFNvbWVvbmUg bWlnaHQgbW92ZSB0aGF0IG1ldGhvZCBpbnRvIGEgc3VwZXJjbGFzcyBhbmQgeW91ciBjb2Rl DQp3aWxsIGJlIGJyb2tlbi4gIE9uIHRvcCBvZiB0aGF0IHlvdSdyZSBmZWVkaW5nIHRoZSBw YXJhbm9pYSBpbiBydWxlIDIuDQo8UD48L1A+DQo8TEk+DQpEb24ndCBhc3N1bWUgeW91IGtu b3cgdGhlIGhvbWUgcGFja2FnZSBvZiBhIG1ldGhvZC4gIFlvdSdyZSBtYWtpbmcgaXQNCmRp ZmZpY3VsdCBmb3Igc29tZW9uZSB0byBvdmVycmlkZSB0aGF0IG1ldGhvZC4gIFNlZSA8QSBI UkVGPSIjdGhpbmtpbmcgb2YgY29kZSByZXVzZSI+VEhJTktJTkcgT0YgQ09ERSBSRVVTRTwv QT4uDQo8UD48L1A+PC9PTD4NCjxQPg0KPEhSPg0KPEgxPjxBIE5BTUU9Imluc3RhbmNlIHZh cmlhYmxlcyI+SU5TVEFOQ0UgVkFSSUFCTEVTPC9BPjwvSDE+DQo8UD5BbiBhbm9ueW1vdXMg YXJyYXkgb3IgYW5vbnltb3VzIGhhc2ggY2FuIGJlIHVzZWQgdG8gaG9sZCBpbnN0YW5jZQ0K dmFyaWFibGVzLiAgTmFtZWQgcGFyYW1ldGVycyBhcmUgYWxzbyBkZW1vbnN0cmF0ZWQuPC9Q Pg0KPFBSRT4NCiAgICAgICAgcGFja2FnZSBGb287PC9QUkU+DQo8UFJFPg0KICAgICAgICBz dWIgbmV3IHsNCiAgICAgICAgICAgICAgICBteSAkdHlwZSA9IHNoaWZ0Ow0KICAgICAgICAg ICAgICAgIG15ICVwYXJhbXMgPSBAXzsNCiAgICAgICAgICAgICAgICBteSAkc2VsZiA9IHt9 Ow0KICAgICAgICAgICAgICAgICRzZWxmLSZndDt7J0hpZ2gnfSA9ICRwYXJhbXN7J0hpZ2gn fTsNCiAgICAgICAgICAgICAgICAkc2VsZi0mZ3Q7eydMb3cnfSAgPSAkcGFyYW1zeydMb3cn fTsNCiAgICAgICAgICAgICAgICBibGVzcyAkc2VsZiwgJHR5cGU7DQogICAgICAgIH08L1BS RT4NCjxQUkU+DQogICAgICAgIHBhY2thZ2UgQmFyOzwvUFJFPg0KPFBSRT4NCiAgICAgICAg c3ViIG5ldyB7DQogICAgICAgICAgICAgICAgbXkgJHR5cGUgPSBzaGlmdDsNCiAgICAgICAg ICAgICAgICBteSAlcGFyYW1zID0gQF87DQogICAgICAgICAgICAgICAgbXkgJHNlbGYgPSBb XTsNCiAgICAgICAgICAgICAgICAkc2VsZi0mZ3Q7WzBdID0gJHBhcmFtc3snTGVmdCd9Ow0K ICAgICAgICAgICAgICAgICRzZWxmLSZndDtbMV0gPSAkcGFyYW1zeydSaWdodCd9Ow0KICAg ICAgICAgICAgICAgIGJsZXNzICRzZWxmLCAkdHlwZTsNCiAgICAgICAgfTwvUFJFPg0KPFBS RT4NCiAgICAgICAgcGFja2FnZSBtYWluOzwvUFJFPg0KPFBSRT4NCiAgICAgICAgJGEgPSBG b28tJmd0O25ldyggJ0hpZ2gnID0mZ3Q7IDQyLCAnTG93JyA9Jmd0OyAxMSApOw0KICAgICAg ICBwcmludCAmcXVvdDtIaWdoPSRhLSZndDt7J0hpZ2gnfVxuJnF1b3Q7Ow0KICAgICAgICBw cmludCAmcXVvdDtMb3c9JGEtJmd0O3snTG93J31cbiZxdW90Ozs8L1BSRT4NCjxQUkU+DQog ICAgICAgICRiID0gQmFyLSZndDtuZXcoICdMZWZ0JyA9Jmd0OyA3OCwgJ1JpZ2h0JyA9Jmd0 OyA0MCApOw0KICAgICAgICBwcmludCAmcXVvdDtMZWZ0PSRiLSZndDtbMF1cbiZxdW90OzsN CiAgICAgICAgcHJpbnQgJnF1b3Q7UmlnaHQ9JGItJmd0O1sxXVxuJnF1b3Q7OzwvUFJFPg0K PFA+DQo8SFI+DQo8SDE+PEEgTkFNRT0ic2NhbGFyIGluc3RhbmNlIHZhcmlhYmxlcyI+U0NB TEFSIElOU1RBTkNFIFZBUklBQkxFUzwvQT48L0gxPg0KPFA+QW4gYW5vbnltb3VzIHNjYWxh ciBjYW4gYmUgdXNlZCB3aGVuIG9ubHkgb25lIGluc3RhbmNlIHZhcmlhYmxlIGlzIG5lZWRl ZC48L1A+DQo8UFJFPg0KICAgICAgICBwYWNrYWdlIEZvbzs8L1BSRT4NCjxQUkU+DQogICAg ICAgIHN1YiBuZXcgew0KICAgICAgICAgICAgICAgIG15ICR0eXBlID0gc2hpZnQ7DQogICAg ICAgICAgICAgICAgbXkgJHNlbGY7DQogICAgICAgICAgICAgICAgJHNlbGYgPSBzaGlmdDsN CiAgICAgICAgICAgICAgICBibGVzcyBcJHNlbGYsICR0eXBlOw0KICAgICAgICB9PC9QUkU+ DQo8UFJFPg0KICAgICAgICBwYWNrYWdlIG1haW47PC9QUkU+DQo8UFJFPg0KICAgICAgICAk YSA9IEZvby0mZ3Q7bmV3KCA0MiApOw0KICAgICAgICBwcmludCAmcXVvdDthPSQkYVxuJnF1 b3Q7OzwvUFJFPg0KPFA+DQo8SFI+DQo8SDE+PEEgTkFNRT0iaW5zdGFuY2UgdmFyaWFibGUg aW5oZXJpdGFuY2UiPklOU1RBTkNFIFZBUklBQkxFIElOSEVSSVRBTkNFPC9BPjwvSDE+DQo8 UD5UaGlzIGV4YW1wbGUgZGVtb25zdHJhdGVzIGhvdyBvbmUgbWlnaHQgaW5oZXJpdCBpbnN0 YW5jZSB2YXJpYWJsZXMgZnJvbSBhDQpzdXBlcmNsYXNzIGZvciBpbmNsdXNpb24gaW4gdGhl IG5ldyBjbGFzcy4gIFRoaXMgcmVxdWlyZXMgY2FsbGluZyB0aGUNCnN1cGVyY2xhc3MncyBj b25zdHJ1Y3RvciBhbmQgYWRkaW5nIG9uZSdzIG93biBpbnN0YW5jZSB2YXJpYWJsZXMgdG8g dGhlIG5ldw0Kb2JqZWN0LjwvUD4NCjxQUkU+DQogICAgICAgIHBhY2thZ2UgQmFyOzwvUFJF Pg0KPFBSRT4NCiAgICAgICAgc3ViIG5ldyB7DQogICAgICAgICAgICAgICAgbXkgJHR5cGUg PSBzaGlmdDsNCiAgICAgICAgICAgICAgICBteSAkc2VsZiA9IHt9Ow0KICAgICAgICAgICAg ICAgICRzZWxmLSZndDt7J2J1eid9ID0gNDI7DQogICAgICAgICAgICAgICAgYmxlc3MgJHNl bGYsICR0eXBlOw0KICAgICAgICB9PC9QUkU+DQo8UFJFPg0KICAgICAgICBwYWNrYWdlIEZv bzsNCiAgICAgICAgQElTQSA9IHF3KCBCYXIgKTs8L1BSRT4NCjxQUkU+DQogICAgICAgIHN1 YiBuZXcgew0KICAgICAgICAgICAgICAgIG15ICR0eXBlID0gc2hpZnQ7DQogICAgICAgICAg ICAgICAgbXkgJHNlbGYgPSBCYXItJmd0O25ldzsNCiAgICAgICAgICAgICAgICAkc2VsZi0m Z3Q7eydiaXonfSA9IDExOw0KICAgICAgICAgICAgICAgIGJsZXNzICRzZWxmLCAkdHlwZTsN CiAgICAgICAgfTwvUFJFPg0KPFBSRT4NCiAgICAgICAgcGFja2FnZSBtYWluOzwvUFJFPg0K PFBSRT4NCiAgICAgICAgJGEgPSBGb28tJmd0O25ldzsNCiAgICAgICAgcHJpbnQgJnF1b3Q7 YnV6ID0gJnF1b3Q7LCAkYS0mZ3Q7eydidXonfSwgJnF1b3Q7XG4mcXVvdDs7DQogICAgICAg IHByaW50ICZxdW90O2JpeiA9ICZxdW90OywgJGEtJmd0O3snYml6J30sICZxdW90O1xuJnF1 b3Q7OzwvUFJFPg0KPFA+DQo8SFI+DQo8SDE+PEEgTkFNRT0ib2JqZWN0IHJlbGF0aW9uc2hp cHMiPk9CSkVDVCBSRUxBVElPTlNISVBTPC9BPjwvSDE+DQo8UD5UaGUgZm9sbG93aW5nIGRl bW9uc3RyYXRlcyBob3cgb25lIG1pZ2h0IGltcGxlbWVudCBgYGNvbnRhaW5pbmcnJyBhbmQg YGB1c2luZycnDQpyZWxhdGlvbnNoaXBzIGJldHdlZW4gb2JqZWN0cy48L1A+DQo8UFJFPg0K ICAgICAgICBwYWNrYWdlIEJhcjs8L1BSRT4NCjxQUkU+DQogICAgICAgIHN1YiBuZXcgew0K ICAgICAgICAgICAgICAgIG15ICR0eXBlID0gc2hpZnQ7DQogICAgICAgICAgICAgICAgbXkg JHNlbGYgPSB7fTsNCiAgICAgICAgICAgICAgICAkc2VsZi0mZ3Q7eydidXonfSA9IDQyOw0K ICAgICAgICAgICAgICAgIGJsZXNzICRzZWxmLCAkdHlwZTsNCiAgICAgICAgfTwvUFJFPg0K PFBSRT4NCiAgICAgICAgcGFja2FnZSBGb287PC9QUkU+DQo8UFJFPg0KICAgICAgICBzdWIg bmV3IHsNCiAgICAgICAgICAgICAgICBteSAkdHlwZSA9IHNoaWZ0Ow0KICAgICAgICAgICAg ICAgIG15ICRzZWxmID0ge307DQogICAgICAgICAgICAgICAgJHNlbGYtJmd0O3snQmFyJ30g PSBCYXItJmd0O25ldzsNCiAgICAgICAgICAgICAgICAkc2VsZi0mZ3Q7eydiaXonfSA9IDEx Ow0KICAgICAgICAgICAgICAgIGJsZXNzICRzZWxmLCAkdHlwZTsNCiAgICAgICAgfTwvUFJF Pg0KPFBSRT4NCiAgICAgICAgcGFja2FnZSBtYWluOzwvUFJFPg0KPFBSRT4NCiAgICAgICAg JGEgPSBGb28tJmd0O25ldzsNCiAgICAgICAgcHJpbnQgJnF1b3Q7YnV6ID0gJnF1b3Q7LCAk YS0mZ3Q7eydCYXInfS0mZ3Q7eydidXonfSwgJnF1b3Q7XG4mcXVvdDs7DQogICAgICAgIHBy aW50ICZxdW90O2JpeiA9ICZxdW90OywgJGEtJmd0O3snYml6J30sICZxdW90O1xuJnF1b3Q7 OzwvUFJFPg0KPFA+DQo8SFI+DQo8SDE+PEEgTkFNRT0ib3ZlcnJpZGluZyBzdXBlcmNsYXNz IG1ldGhvZHMiPk9WRVJSSURJTkcgU1VQRVJDTEFTUyBNRVRIT0RTPC9BPjwvSDE+DQo8UD5U aGUgZm9sbG93aW5nIGV4YW1wbGUgZGVtb25zdHJhdGVzIGhvdyB0byBvdmVycmlkZSBhIHN1 cGVyY2xhc3MgbWV0aG9kIGFuZA0KdGhlbiBjYWxsIHRoZSBvdmVycmlkZGVuIG1ldGhvZC4g IFRoZSA8U1RST05HPlNVUEVSPC9TVFJPTkc+IHBzZXVkby1jbGFzcyBhbGxvd3MgdGhlDQpw cm9ncmFtbWVyIHRvIGNhbGwgYW4gb3ZlcnJpZGRlbiBzdXBlcmNsYXNzIG1ldGhvZCB3aXRo b3V0IGFjdHVhbGx5IGtub3dpbmcNCndoZXJlIHRoYXQgbWV0aG9kIGlzIGRlZmluZWQuPC9Q Pg0KPFBSRT4NCiAgICAgICAgcGFja2FnZSBCdXo7DQogICAgICAgIHN1YiBnb28geyBwcmlu dCAmcXVvdDtoZXJlJ3MgdGhlIGdvb1xuJnF1b3Q7IH08L1BSRT4NCjxQUkU+DQogICAgICAg IHBhY2thZ2UgQmFyOyBASVNBID0gcXcoIEJ1eiApOw0KICAgICAgICBzdWIgZ29vZ2xlIHsg cHJpbnQgJnF1b3Q7Z29vZ2xlIGhlcmVcbiZxdW90OyB9PC9QUkU+DQo8UFJFPg0KICAgICAg ICBwYWNrYWdlIEJhejsNCiAgICAgICAgc3ViIG11bWJsZSB7IHByaW50ICZxdW90O211bWJs aW5nXG4mcXVvdDsgfTwvUFJFPg0KPFBSRT4NCiAgICAgICAgcGFja2FnZSBGb287DQogICAg ICAgIEBJU0EgPSBxdyggQmFyIEJheiApOzwvUFJFPg0KPFBSRT4NCiAgICAgICAgc3ViIG5l dyB7DQogICAgICAgICAgICAgICAgbXkgJHR5cGUgPSBzaGlmdDsNCiAgICAgICAgICAgICAg ICBibGVzcyBbXSwgJHR5cGU7DQogICAgICAgIH0NCiAgICAgICAgc3ViIGdyciB7IHByaW50 ICZxdW90O2dydW1ibGVcbiZxdW90OyB9DQogICAgICAgIHN1YiBnb28gew0KICAgICAgICAg ICAgICAgIG15ICRzZWxmID0gc2hpZnQ7DQogICAgICAgICAgICAgICAgJHNlbGYtJmd0O1NV UEVSOjpnb28oKTsNCiAgICAgICAgfQ0KICAgICAgICBzdWIgbXVtYmxlIHsNCiAgICAgICAg ICAgICAgICBteSAkc2VsZiA9IHNoaWZ0Ow0KICAgICAgICAgICAgICAgICRzZWxmLSZndDtT VVBFUjo6bXVtYmxlKCk7DQogICAgICAgIH0NCiAgICAgICAgc3ViIGdvb2dsZSB7DQogICAg ICAgICAgICAgICAgbXkgJHNlbGYgPSBzaGlmdDsNCiAgICAgICAgICAgICAgICAkc2VsZi0m Z3Q7U1VQRVI6Omdvb2dsZSgpOw0KICAgICAgICB9PC9QUkU+DQo8UFJFPg0KICAgICAgICBw YWNrYWdlIG1haW47PC9QUkU+DQo8UFJFPg0KICAgICAgICAkZm9vID0gRm9vLSZndDtuZXc7 DQogICAgICAgICRmb28tJmd0O211bWJsZTsNCiAgICAgICAgJGZvby0mZ3Q7Z3JyOw0KICAg ICAgICAkZm9vLSZndDtnb287DQogICAgICAgICRmb28tJmd0O2dvb2dsZTs8L1BSRT4NCjxQ Pg0KPEhSPg0KPEgxPjxBIE5BTUU9InVzaW5nIHJlbGF0aW9uc2hpcCB3aXRoIHNkYm0iPlVT SU5HIFJFTEFUSU9OU0hJUCBXSVRIIFNEQk08L0E+PC9IMT4NCjxQPlRoaXMgZXhhbXBsZSBk ZW1vbnN0cmF0ZXMgYW4gaW50ZXJmYWNlIGZvciB0aGUgU0RCTSBjbGFzcy4gIFRoaXMgY3Jl YXRlcyBhDQpgYHVzaW5nJycgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIFNEQk0gY2xhc3Mg YW5kIHRoZSBuZXcgY2xhc3MgTXlkYm0uPC9QPg0KPFBSRT4NCiAgICAgICAgcGFja2FnZSBN eWRibTs8L1BSRT4NCjxQUkU+DQogICAgICAgIHJlcXVpcmUgU0RCTV9GaWxlOw0KICAgICAg ICByZXF1aXJlIFRpZTo6SGFzaDsNCiAgICAgICAgQElTQSA9IHF3KCBUaWU6Okhhc2ggKTs8 L1BSRT4NCjxQUkU+DQogICAgICAgIHN1YiBUSUVIQVNIIHsNCiAgICAgICAgICAgIG15ICR0 eXBlID0gc2hpZnQ7DQogICAgICAgICAgICBteSAkcmVmICA9IFNEQk1fRmlsZS0mZ3Q7bmV3 KEBfKTsNCiAgICAgICAgICAgIGJsZXNzIHsnZGJtJyA9Jmd0OyAkcmVmfSwgJHR5cGU7DQog ICAgICAgIH0NCiAgICAgICAgc3ViIEZFVENIIHsNCiAgICAgICAgICAgIG15ICRzZWxmID0g c2hpZnQ7DQogICAgICAgICAgICBteSAkcmVmICA9ICRzZWxmLSZndDt7J2RibSd9Ow0KICAg ICAgICAgICAgJHJlZi0mZ3Q7RkVUQ0goQF8pOw0KICAgICAgICB9DQogICAgICAgIHN1YiBT VE9SRSB7DQogICAgICAgICAgICBteSAkc2VsZiA9IHNoaWZ0Ow0KICAgICAgICAgICAgaWYg KGRlZmluZWQgJF9bMF0pew0KICAgICAgICAgICAgICAgIG15ICRyZWYgPSAkc2VsZi0mZ3Q7 eydkYm0nfTsNCiAgICAgICAgICAgICAgICAkcmVmLSZndDtTVE9SRShAXyk7DQogICAgICAg ICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGRpZSAmcXVvdDtDYW5ub3QgU1RPUkUg YW4gdW5kZWZpbmVkIGtleSBpbiBNeWRibVxuJnF1b3Q7Ow0KICAgICAgICAgICAgfQ0KICAg ICAgICB9PC9QUkU+DQo8UFJFPg0KICAgICAgICBwYWNrYWdlIG1haW47DQogICAgICAgIHVz ZSBGY250bCBxdyggT19SRFdSIE9fQ1JFQVQgKTs8L1BSRT4NCjxQUkU+DQogICAgICAgIHRp ZSAlZm9vLCAmcXVvdDtNeWRibSZxdW90OywgJnF1b3Q7U2RibSZxdW90OywgT19SRFdSfE9f Q1JFQVQsIDA2NDA7DQogICAgICAgICRmb297J2Jhcid9ID0gMTIzOw0KICAgICAgICBwcmlu dCAmcXVvdDtmb28tYmFyID0gJGZvb3snYmFyJ31cbiZxdW90Ozs8L1BSRT4NCjxQUkU+DQog ICAgICAgIHRpZSAlYmFyLCAmcXVvdDtNeWRibSZxdW90OywgJnF1b3Q7U2RibTImcXVvdDss IE9fUkRXUnxPX0NSRUFULCAwNjQwOw0KICAgICAgICAkYmFyeydDYXRoeSd9ID0gNDU2Ow0K ICAgICAgICBwcmludCAmcXVvdDtiYXItQ2F0aHkgPSAkYmFyeydDYXRoeSd9XG4mcXVvdDs7 PC9QUkU+DQo8UD4NCjxIUj4NCjxIMT48QSBOQU1FPSJ0aGlua2luZyBvZiBjb2RlIHJldXNl Ij5USElOS0lORyBPRiBDT0RFIFJFVVNFPC9BPjwvSDE+DQo8UD5PbmUgc3RyZW5ndGggb2Yg T2JqZWN0LU9yaWVudGVkIGxhbmd1YWdlcyBpcyB0aGUgZWFzZSB3aXRoIHdoaWNoIG9sZCBj b2RlDQpjYW4gdXNlIG5ldyBjb2RlLiAgVGhlIGZvbGxvd2luZyBleGFtcGxlcyB3aWxsIGRl bW9uc3RyYXRlIGZpcnN0IGhvdyBvbmUgY2FuDQpoaW5kZXIgY29kZSByZXVzZSBhbmQgdGhl biBob3cgb25lIGNhbiBwcm9tb3RlIGNvZGUgcmV1c2UuPC9QPg0KPFA+VGhpcyBmaXJzdCBl eGFtcGxlIGlsbHVzdHJhdGVzIGEgY2xhc3Mgd2hpY2ggdXNlcyBhIGZ1bGx5LXF1YWxpZmll ZCBtZXRob2QNCmNhbGwgdG8gYWNjZXNzIHRoZSBgYHByaXZhdGUnJyBtZXRob2QgQkFaKCku ICBUaGUgc2Vjb25kIGV4YW1wbGUgd2lsbCBzaG93DQp0aGF0IGl0IGlzIGltcG9zc2libGUg dG8gb3ZlcnJpZGUgdGhlIDxDT0RFPkJBWigpPC9DT0RFPiBtZXRob2QuPC9QPg0KPFBSRT4N CiAgICAgICAgcGFja2FnZSBGT087PC9QUkU+DQo8UFJFPg0KICAgICAgICBzdWIgbmV3IHsN CiAgICAgICAgICAgICAgICBteSAkdHlwZSA9IHNoaWZ0Ow0KICAgICAgICAgICAgICAgIGJs ZXNzIHt9LCAkdHlwZTsNCiAgICAgICAgfQ0KICAgICAgICBzdWIgYmFyIHsNCiAgICAgICAg ICAgICAgICBteSAkc2VsZiA9IHNoaWZ0Ow0KICAgICAgICAgICAgICAgICRzZWxmLSZndDtG T086OnByaXZhdGU6OkJBWjsNCiAgICAgICAgfTwvUFJFPg0KPFBSRT4NCiAgICAgICAgcGFj a2FnZSBGT086OnByaXZhdGU7PC9QUkU+DQo8UFJFPg0KICAgICAgICBzdWIgQkFaIHsNCiAg ICAgICAgICAgICAgICBwcmludCAmcXVvdDtpbiBCQVpcbiZxdW90OzsNCiAgICAgICAgfTwv UFJFPg0KPFBSRT4NCiAgICAgICAgcGFja2FnZSBtYWluOzwvUFJFPg0KPFBSRT4NCiAgICAg ICAgJGEgPSBGT08tJmd0O25ldzsNCiAgICAgICAgJGEtJmd0O2Jhcjs8L1BSRT4NCjxQPk5v dyB3ZSB0cnkgdG8gb3ZlcnJpZGUgdGhlIDxDT0RFPkJBWigpPC9DT0RFPiBtZXRob2QuICBX ZSB3b3VsZCBsaWtlIEZPTzo6YmFyKCkgdG8gY2FsbA0KR09PUDo6QkFaKCksIGJ1dCB0aGlz IGNhbm5vdCBoYXBwZW4gYmVjYXVzZSBGT086OmJhcigpIGV4cGxpY2l0bHkgY2FsbHMNCkZP Tzo6cHJpdmF0ZTo6QkFaKCkuPC9QPg0KPFBSRT4NCiAgICAgICAgcGFja2FnZSBGT087PC9Q UkU+DQo8UFJFPg0KICAgICAgICBzdWIgbmV3IHsNCiAgICAgICAgICAgICAgICBteSAkdHlw ZSA9IHNoaWZ0Ow0KICAgICAgICAgICAgICAgIGJsZXNzIHt9LCAkdHlwZTsNCiAgICAgICAg fQ0KICAgICAgICBzdWIgYmFyIHsNCiAgICAgICAgICAgICAgICBteSAkc2VsZiA9IHNoaWZ0 Ow0KICAgICAgICAgICAgICAgICRzZWxmLSZndDtGT086OnByaXZhdGU6OkJBWjsNCiAgICAg ICAgfTwvUFJFPg0KPFBSRT4NCiAgICAgICAgcGFja2FnZSBGT086OnByaXZhdGU7PC9QUkU+ DQo8UFJFPg0KICAgICAgICBzdWIgQkFaIHsNCiAgICAgICAgICAgICAgICBwcmludCAmcXVv dDtpbiBCQVpcbiZxdW90OzsNCiAgICAgICAgfTwvUFJFPg0KPFBSRT4NCiAgICAgICAgcGFj a2FnZSBHT09QOw0KICAgICAgICBASVNBID0gcXcoIEZPTyApOw0KICAgICAgICBzdWIgbmV3 IHsNCiAgICAgICAgICAgICAgICBteSAkdHlwZSA9IHNoaWZ0Ow0KICAgICAgICAgICAgICAg IGJsZXNzIHt9LCAkdHlwZTsNCiAgICAgICAgfTwvUFJFPg0KPFBSRT4NCiAgICAgICAgc3Vi IEJBWiB7DQogICAgICAgICAgICAgICAgcHJpbnQgJnF1b3Q7aW4gR09PUDo6QkFaXG4mcXVv dDs7DQogICAgICAgIH08L1BSRT4NCjxQUkU+DQogICAgICAgIHBhY2thZ2UgbWFpbjs8L1BS RT4NCjxQUkU+DQogICAgICAgICRhID0gR09PUC0mZ3Q7bmV3Ow0KICAgICAgICAkYS0mZ3Q7 YmFyOzwvUFJFPg0KPFA+VG8gY3JlYXRlIHJldXNhYmxlIGNvZGUgd2UgbXVzdCBtb2RpZnkg Y2xhc3MgRk9PLCBmbGF0dGVuaW5nIGNsYXNzDQpGT086OnByaXZhdGUuICBUaGUgbmV4dCBl eGFtcGxlIHNob3dzIGEgcmV1c2FibGUgY2xhc3MgRk9PIHdoaWNoIGFsbG93cyB0aGUNCm1l dGhvZCBHT09QOjpCQVooKSB0byBiZSB1c2VkIGluIHBsYWNlIG9mIEZPTzo6QkFaKCkuPC9Q Pg0KPFBSRT4NCiAgICAgICAgcGFja2FnZSBGT087PC9QUkU+DQo8UFJFPg0KICAgICAgICBz dWIgbmV3IHsNCiAgICAgICAgICAgICAgICBteSAkdHlwZSA9IHNoaWZ0Ow0KICAgICAgICAg ICAgICAgIGJsZXNzIHt9LCAkdHlwZTsNCiAgICAgICAgfQ0KICAgICAgICBzdWIgYmFyIHsN CiAgICAgICAgICAgICAgICBteSAkc2VsZiA9IHNoaWZ0Ow0KICAgICAgICAgICAgICAgICRz ZWxmLSZndDtCQVo7DQogICAgICAgIH08L1BSRT4NCjxQUkU+DQogICAgICAgIHN1YiBCQVog ew0KICAgICAgICAgICAgICAgIHByaW50ICZxdW90O2luIEJBWlxuJnF1b3Q7Ow0KICAgICAg ICB9PC9QUkU+DQo8UFJFPg0KICAgICAgICBwYWNrYWdlIEdPT1A7DQogICAgICAgIEBJU0Eg PSBxdyggRk9PICk7PC9QUkU+DQo8UFJFPg0KICAgICAgICBzdWIgbmV3IHsNCiAgICAgICAg ICAgICAgICBteSAkdHlwZSA9IHNoaWZ0Ow0KICAgICAgICAgICAgICAgIGJsZXNzIHt9LCAk dHlwZTsNCiAgICAgICAgfQ0KICAgICAgICBzdWIgQkFaIHsNCiAgICAgICAgICAgICAgICBw cmludCAmcXVvdDtpbiBHT09QOjpCQVpcbiZxdW90OzsNCiAgICAgICAgfTwvUFJFPg0KPFBS RT4NCiAgICAgICAgcGFja2FnZSBtYWluOzwvUFJFPg0KPFBSRT4NCiAgICAgICAgJGEgPSBH T09QLSZndDtuZXc7DQogICAgICAgICRhLSZndDtiYXI7PC9QUkU+DQo8UD4NCjxIUj4NCjxI MT48QSBOQU1FPSJjbGFzcyBjb250ZXh0IGFuZCB0aGUgb2JqZWN0Ij5DTEFTUyBDT05URVhU IEFORCBUSEUgT0JKRUNUPC9BPjwvSDE+DQo8UD5Vc2UgdGhlIG9iamVjdCB0byBzb2x2ZSBw YWNrYWdlIGFuZCBjbGFzcyBjb250ZXh0IHByb2JsZW1zLiAgRXZlcnl0aGluZyBhDQptZXRo b2QgbmVlZHMgc2hvdWxkIGJlIGF2YWlsYWJsZSB2aWEgdGhlIG9iamVjdCBvciBzaG91bGQg YmUgcGFzc2VkIGFzIGENCnBhcmFtZXRlciB0byB0aGUgbWV0aG9kLjwvUD4NCjxQPkEgY2xh c3Mgd2lsbCBzb21ldGltZXMgaGF2ZSBzdGF0aWMgb3IgZ2xvYmFsIGRhdGEgdG8gYmUgdXNl ZCBieSB0aGUNCm1ldGhvZHMuICBBIHN1YmNsYXNzIG1heSB3YW50IHRvIG92ZXJyaWRlIHRo YXQgZGF0YSBhbmQgcmVwbGFjZSBpdCB3aXRoIG5ldw0KZGF0YS4gIFdoZW4gdGhpcyBoYXBw ZW5zIHRoZSBzdXBlcmNsYXNzIG1heSBub3Qga25vdyBob3cgdG8gZmluZCB0aGUgbmV3DQpj b3B5IG9mIHRoZSBkYXRhLjwvUD4NCjxQPlRoaXMgcHJvYmxlbSBjYW4gYmUgc29sdmVkIGJ5 IHVzaW5nIHRoZSBvYmplY3QgdG8gZGVmaW5lIHRoZSBjb250ZXh0IG9mIHRoZQ0KbWV0aG9k LiAgTGV0IHRoZSBtZXRob2QgbG9vayBpbiB0aGUgb2JqZWN0IGZvciBhIHJlZmVyZW5jZSB0 byB0aGUgZGF0YS4gIFRoZQ0KYWx0ZXJuYXRpdmUgaXMgdG8gZm9yY2UgdGhlIG1ldGhvZCB0 byBnbyBodW50aW5nIGZvciB0aGUgZGF0YSAoYGBJcyBpdCBpbiBteQ0KY2xhc3MsIG9yIGlu IGEgc3ViY2xhc3M/ICBXaGljaCBzdWJjbGFzcz8nJyksIGFuZCB0aGlzIGNhbiBiZSBpbmNv bnZlbmllbnQNCmFuZCB3aWxsIGxlYWQgdG8gaGFja2VyeS4gIEl0IGlzIGJldHRlciBqdXN0 IHRvIGxldCB0aGUgb2JqZWN0IHRlbGwgdGhlDQptZXRob2Qgd2hlcmUgdGhhdCBkYXRhIGlz IGxvY2F0ZWQuPC9QPg0KPFBSRT4NCiAgICAgICAgcGFja2FnZSBCYXI7PC9QUkU+DQo8UFJF Pg0KICAgICAgICAlZml6emxlID0gKCAnUGFzc3dvcmQnID0mZ3Q7ICdYWVpaWScgKTs8L1BS RT4NCjxQUkU+DQogICAgICAgIHN1YiBuZXcgew0KICAgICAgICAgICAgICAgIG15ICR0eXBl ID0gc2hpZnQ7DQogICAgICAgICAgICAgICAgbXkgJHNlbGYgPSB7fTsNCiAgICAgICAgICAg ICAgICAkc2VsZi0mZ3Q7eydmaXp6bGUnfSA9IFwlZml6emxlOw0KICAgICAgICAgICAgICAg IGJsZXNzICRzZWxmLCAkdHlwZTsNCiAgICAgICAgfTwvUFJFPg0KPFBSRT4NCiAgICAgICAg c3ViIGVudGVyIHsNCiAgICAgICAgICAgICAgICBteSAkc2VsZiA9IHNoaWZ0OzwvUFJFPg0K PFBSRT4NCiAgICAgICAgICAgICAgICAjIERvbid0IHRyeSB0byBndWVzcyBpZiB3ZSBzaG91 bGQgdXNlICVCYXI6OmZpenpsZQ0KICAgICAgICAgICAgICAgICMgb3IgJUZvbzo6Zml6emxl LiAgVGhlIG9iamVjdCBhbHJlYWR5IGtub3dzIHdoaWNoDQogICAgICAgICAgICAgICAgIyB3 ZSBzaG91bGQgdXNlLCBzbyBqdXN0IGFzayBpdC4NCiAgICAgICAgICAgICAgICAjDQogICAg ICAgICAgICAgICAgbXkgJGZpenpsZSA9ICRzZWxmLSZndDt7J2ZpenpsZSd9OzwvUFJFPg0K PFBSRT4NCiAgICAgICAgICAgICAgICBwcmludCAmcXVvdDtUaGUgd29yZCBpcyAmcXVvdDss ICRmaXp6bGUtJmd0O3snUGFzc3dvcmQnfSwgJnF1b3Q7XG4mcXVvdDs7DQogICAgICAgIH08 L1BSRT4NCjxQUkU+DQogICAgICAgIHBhY2thZ2UgRm9vOw0KICAgICAgICBASVNBID0gcXco IEJhciApOzwvUFJFPg0KPFBSRT4NCiAgICAgICAgJWZpenpsZSA9ICggJ1Bhc3N3b3JkJyA9 Jmd0OyAnUnVtcGxlJyApOzwvUFJFPg0KPFBSRT4NCiAgICAgICAgc3ViIG5ldyB7DQogICAg ICAgICAgICAgICAgbXkgJHR5cGUgPSBzaGlmdDsNCiAgICAgICAgICAgICAgICBteSAkc2Vs ZiA9IEJhci0mZ3Q7bmV3Ow0KICAgICAgICAgICAgICAgICRzZWxmLSZndDt7J2ZpenpsZSd9 ID0gXCVmaXp6bGU7DQogICAgICAgICAgICAgICAgYmxlc3MgJHNlbGYsICR0eXBlOw0KICAg ICAgICB9PC9QUkU+DQo8UFJFPg0KICAgICAgICBwYWNrYWdlIG1haW47PC9QUkU+DQo8UFJF Pg0KICAgICAgICAkYSA9IEJhci0mZ3Q7bmV3Ow0KICAgICAgICAkYiA9IEZvby0mZ3Q7bmV3 Ow0KICAgICAgICAkYS0mZ3Q7ZW50ZXI7DQogICAgICAgICRiLSZndDtlbnRlcjs8L1BSRT4N CjxQPg0KPEhSPg0KPEgxPjxBIE5BTUU9ImluaGVyaXRpbmcgYSBjb25zdHJ1Y3RvciI+SU5I RVJJVElORyBBIENPTlNUUlVDVE9SPC9BPjwvSDE+DQo8UD5BbiBpbmhlcml0YWJsZSBjb25z dHJ1Y3RvciBzaG91bGQgdXNlIHRoZSBzZWNvbmQgZm9ybSBvZiA8QSBIUkVGPSIuLi8uLi9s aWIvUG9kL3BlcmxmdW5jLmh0bWwjaXRlbV9ibGVzcyI+PENPREU+Ymxlc3MoKTwvQ09ERT48 L0E+IHdoaWNoIGFsbG93cw0KYmxlc3NpbmcgZGlyZWN0bHkgaW50byBhIHNwZWNpZmllZCBj bGFzcy4gIE5vdGljZSBpbiB0aGlzIGV4YW1wbGUgdGhhdCB0aGUNCm9iamVjdCB3aWxsIGJl IGEgQkFSIG5vdCBhIEZPTywgZXZlbiB0aG91Z2ggdGhlIGNvbnN0cnVjdG9yIGlzIGluIGNs YXNzIEZPTy48L1A+DQo8UFJFPg0KICAgICAgICBwYWNrYWdlIEZPTzs8L1BSRT4NCjxQUkU+ DQogICAgICAgIHN1YiBuZXcgew0KICAgICAgICAgICAgICAgIG15ICR0eXBlID0gc2hpZnQ7 DQogICAgICAgICAgICAgICAgbXkgJHNlbGYgPSB7fTsNCiAgICAgICAgICAgICAgICBibGVz cyAkc2VsZiwgJHR5cGU7DQogICAgICAgIH08L1BSRT4NCjxQUkU+DQogICAgICAgIHN1YiBi YXogew0KICAgICAgICAgICAgICAgIHByaW50ICZxdW90O2luIEZPTzo6YmF6KClcbiZxdW90 OzsNCiAgICAgICAgfTwvUFJFPg0KPFBSRT4NCiAgICAgICAgcGFja2FnZSBCQVI7DQogICAg ICAgIEBJU0EgPSBxdyhGT08pOzwvUFJFPg0KPFBSRT4NCiAgICAgICAgc3ViIGJheiB7DQog ICAgICAgICAgICAgICAgcHJpbnQgJnF1b3Q7aW4gQkFSOjpiYXooKVxuJnF1b3Q7Ow0KICAg ICAgICB9PC9QUkU+DQo8UFJFPg0KICAgICAgICBwYWNrYWdlIG1haW47PC9QUkU+DQo8UFJF Pg0KICAgICAgICAkYSA9IEJBUi0mZ3Q7bmV3Ow0KICAgICAgICAkYS0mZ3Q7YmF6OzwvUFJF Pg0KPFA+DQo8SFI+DQo8SDE+PEEgTkFNRT0iZGVsZWdhdGlvbiI+REVMRUdBVElPTjwvQT48 L0gxPg0KPFA+U29tZSBjbGFzc2VzLCBzdWNoIGFzIFNEQk1fRmlsZSwgY2Fubm90IGJlIGVm ZmVjdGl2ZWx5IHN1YmNsYXNzZWQgYmVjYXVzZQ0KdGhleSBjcmVhdGUgZm9yZWlnbiBvYmpl Y3RzLiAgU3VjaCBhIGNsYXNzIGNhbiBiZSBleHRlbmRlZCB3aXRoIHNvbWUgc29ydCBvZg0K YWdncmVnYXRpb24gdGVjaG5pcXVlIHN1Y2ggYXMgdGhlIGBgdXNpbmcnJyByZWxhdGlvbnNo aXAgbWVudGlvbmVkIGVhcmxpZXIgb3INCmJ5IGRlbGVnYXRpb24uPC9QPg0KPFA+VGhlIGZv bGxvd2luZyBleGFtcGxlIGRlbW9uc3RyYXRlcyBkZWxlZ2F0aW9uIHVzaW5nIGFuIDxDT0RF PkFVVE9MT0FEKCk8L0NPREU+IGZ1bmN0aW9uIHRvDQpwZXJmb3JtIG1lc3NhZ2UtZm9yd2Fy ZGluZy4gIFRoaXMgd2lsbCBhbGxvdyB0aGUgTXlkYm0gb2JqZWN0IHRvIGJlaGF2ZQ0KZXhh Y3RseSBsaWtlIGFuIFNEQk1fRmlsZSBvYmplY3QuICBUaGUgTXlkYm0gY2xhc3MgY291bGQg bm93IGV4dGVuZCB0aGUNCmJlaGF2aW9yIGJ5IGFkZGluZyBjdXN0b20gPENPREU+RkVUQ0go KTwvQ09ERT4gYW5kIDxDT0RFPlNUT1JFKCk8L0NPREU+IG1ldGhvZHMsIGlmIHRoaXMgaXMg ZGVzaXJlZC48L1A+DQo8UFJFPg0KICAgICAgICBwYWNrYWdlIE15ZGJtOzwvUFJFPg0KPFBS RT4NCiAgICAgICAgcmVxdWlyZSBTREJNX0ZpbGU7DQogICAgICAgIHJlcXVpcmUgVGllOjpI YXNoOw0KICAgICAgICBASVNBID0gcXcoVGllOjpIYXNoKTs8L1BSRT4NCjxQUkU+DQogICAg ICAgIHN1YiBUSUVIQVNIIHsNCiAgICAgICAgICAgICAgICBteSAkdHlwZSA9IHNoaWZ0Ow0K ICAgICAgICAgICAgICAgIG15ICRyZWYgPSBTREJNX0ZpbGUtJmd0O25ldyhAXyk7DQogICAg ICAgICAgICAgICAgYmxlc3MgeydkZWxlZ2F0ZScgPSZndDsgJHJlZn07DQogICAgICAgIH08 L1BSRT4NCjxQUkU+DQogICAgICAgIHN1YiBBVVRPTE9BRCB7DQogICAgICAgICAgICAgICAg bXkgJHNlbGYgPSBzaGlmdDs8L1BSRT4NCjxQUkU+DQogICAgICAgICAgICAgICAgIyBUaGUg UGVybCBpbnRlcnByZXRlciBwbGFjZXMgdGhlIG5hbWUgb2YgdGhlDQogICAgICAgICAgICAg ICAgIyBtZXNzYWdlIGluIGEgdmFyaWFibGUgY2FsbGVkICRBVVRPTE9BRC48L1BSRT4NCjxQ UkU+DQogICAgICAgICAgICAgICAgIyBERVNUUk9ZIG1lc3NhZ2VzIHNob3VsZCBuZXZlciBi ZSBwcm9wYWdhdGVkLg0KICAgICAgICAgICAgICAgIHJldHVybiBpZiAkQVVUT0xPQUQgPX4g Lzo6REVTVFJPWSQvOzwvUFJFPg0KPFBSRT4NCiAgICAgICAgICAgICAgICAjIFJlbW92ZSB0 aGUgcGFja2FnZSBuYW1lLg0KICAgICAgICAgICAgICAgICRBVVRPTE9BRCA9fiBzL15NeWRi bTo6Ly87PC9QUkU+DQo8UFJFPg0KICAgICAgICAgICAgICAgICMgUGFzcyB0aGUgbWVzc2Fn ZSB0byB0aGUgZGVsZWdhdGUuDQogICAgICAgICAgICAgICAgJHNlbGYtJmd0O3snZGVsZWdh dGUnfS0mZ3Q7JEFVVE9MT0FEKEBfKTsNCiAgICAgICAgfTwvUFJFPg0KPFBSRT4NCiAgICAg ICAgcGFja2FnZSBtYWluOw0KICAgICAgICB1c2UgRmNudGwgcXcoIE9fUkRXUiBPX0NSRUFU ICk7PC9QUkU+DQo8UFJFPg0KICAgICAgICB0aWUgJWZvbywgJnF1b3Q7TXlkYm0mcXVvdDss ICZxdW90O2FkYm0mcXVvdDssIE9fUkRXUnxPX0NSRUFULCAwNjQwOw0KICAgICAgICAkZm9v eydiYXInfSA9IDEyMzsNCiAgICAgICAgcHJpbnQgJnF1b3Q7Zm9vLWJhciA9ICRmb297J2Jh cid9XG4mcXVvdDs7PC9QUkU+DQo8VEFCTEUgQk9SREVSPTAgQ0VMTFBBRERJTkc9MCBDRUxM U1BBQ0lORz0wIFdJRFRIPTEwMCU+DQo8VFI+PFREIENMQVNTPWJsb2NrIFZBTElHTj1NSURE TEUgV0lEVEg9MTAwJSBCR0NPTE9SPSIjY2NjY2NjIj4NCjxGT05UIFNJWkU9KzE+PFNUUk9O Rz48UCBDTEFTUz1ibG9jaz4mbmJzcDtwZXJsYm90IC0gQmFnJ28gT2JqZWN0IFRyaWNrczwv UD48L1NUUk9ORz48L0ZPTlQ+DQo8L1REPjwvVFI+DQo8L1RBQkxFPg0KDQo8L0JPRFk+DQoN CjwvSFRNTD4NCj==