From mboxrd@z Thu Jan 1 00:00:00 1970 From: George myglc2 Clemmer Subject: bug#31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error Date: Wed, 18 Apr 2018 23:14:40 -0400 Message-ID: <87r2nbubtr.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:57215) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f902L-0007Zd-R5 for bug-guix@gnu.org; Wed, 18 Apr 2018 23:15:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f902I-0006pA-Kq for bug-guix@gnu.org; Wed, 18 Apr 2018 23:15:05 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:52060) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f902I-0006ov-9n for bug-guix@gnu.org; Wed, 18 Apr 2018 23:15:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1f902I-0001RZ-1Z for bug-guix@gnu.org; Wed, 18 Apr 2018 23:15:02 -0400 Sender: "Debbugs-submit" Resent-Message-ID: Received: from eggs.gnu.org ([2001:4830:134:3::10]:57070) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f9024-0007PY-Py for bug-guix@gnu.org; Wed, 18 Apr 2018 23:14:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f9020-0006Xz-DR for bug-guix@gnu.org; Wed, 18 Apr 2018 23:14:47 -0400 Received: from mail-qk0-x22a.google.com ([2607:f8b0:400d:c09::22a]:35345) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f901z-0006XS-Qd for bug-guix@gnu.org; Wed, 18 Apr 2018 23:14:44 -0400 Received: by mail-qk0-x22a.google.com with SMTP id c188so4074082qkg.2 for ; Wed, 18 Apr 2018 20:14:43 -0700 (PDT) Received: from g1 (c-73-167-118-254.hsd1.ma.comcast.net. [73.167.118.254]) by smtp.gmail.com with ESMTPSA id u63sm56408qkf.41.2018.04.18.20.14.41 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 18 Apr 2018 20:14:41 -0700 (PDT) List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: "bug-Guix" To: 31216@debbugs.gnu.org --=-=-= Content-Type: text/plain Commit ... 217b8c2e0 * gnu: perl: Replace with 5.26.2 [fixes CVE-2018-{6797,6798,6913}]. ... caused the attached perl script that worked like this ... g1@g1 ~/.mail-mirror$ guix environment --ad-hoc perl perl-timedate make wget g1@g1 ~/.mail-mirror [env]$ perl mb2md-3.20.pl Usage: mb2md -h mb2md [-c] -m [-d destdir] mb2md [-c] -s sourcefile [-d destdir] mb2md [-c] -s sourcedir [-l wu-mailboxlist] [-R|-f somefolder] [-d destdir] [-r strip_extension] g1@g1 ~/.mail-mirror [env]$ ... to stop working ... g1@g1 ~/.mail-mirror$ guix environment --ad-hoc perl perl-timedate make wget g1@g1 ~/.mail-mirror [env]$ perl mb2md-3.20.pl Can't locate Date/Parse.pm in @INC (you may need to install the Date::Parse module) (@INC contains: /gnu/store/wpwb4ig3qhv3m7axjlid2c0f1jqzp09p-profile/lib/perl5/site_perl/5.26.2/x86_64-linux-thread-multi /gnu/store/wpwb4ig3qhv3m7axjlid2c0f1jqzp09p-profile/lib/perl5/site_perl/5.26.2 /gnu/store/wpwb4ig3qhv3m7axjlid2c0f1jqzp09p-profile/lib/perl5/site_perl /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/site_perl/5.26.2/x86_64-linux-thread-multi /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/site_perl/5.26.2 /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/5.26.2/x86_64-linux-thread-multi /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/5.26.2) at mb2md-3.20.pl line 385. BEGIN failed--compilation aborted at mb2md-3.20.pl line 385. g1@g1 ~/.mail-mirror [env]$ TIA - George --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=mb2md-3.20.pl Content-Transfer-Encoding: base64 IyEvdXNyL2Jpbi9wZXJsIC13CiMKIyAkSWQ6IG1iMm1kLnBsLHYgMS4yNiAyMDA0LzAzLzI4IDAw OjA5OjQ2IGp1cmkgRXhwICQKIwojIG1iMm1kLTMuMjAucGwgICAgICBDb252ZXJ0cyBNYm94IG1h aWxib3hlcyB0byBNYWlsZGlyIGZvcm1hdC4KIwojIFB1YmxpYyBkb21haW4uCiMKIyBjdXJyZW50 bHkgbWFpbnRhaW5lZCBieToKIyBKdXJpIEhhYmVybGFuZCA8anVyaUBrb3NjaGlrb2RlLmNvbT4K IyBpbml0aWFsbHkgd3JvdGUgYnk6CiMgUm9iaW4gV2hpdHRsZQojCiMgVGhpcyBzY3JpcHQncyB3 ZWIgYWJvZGUgaXMgaHR0cDovL2JhdGxldGguc2FwaWVudGktc2F0Lm9yZy9wcm9qZWN0cy9tYjJt ZC8gLgojIEZvciBhIGNoYW5nZWxvZyBzZWUgaHR0cDovL2JhdGxldGguc2FwaWVudGktc2F0Lm9y Zy9wcm9qZWN0cy9tYjJtZC9jaGFuZ2Vsb2cudHh0CiMKIyBUaGUgTWJveCAtPiBNYWlsZGlyIGlu bmVyIGxvb3AgaXMgYmFzZWQgb24gIHFtYWlsJ3Mgc2NyaXB0IG1ib3gybWFpbGRpciwgd2hpY2gK IyB3YXMga2x1ZGdlZCBieSBJdmFuIEtvaGxlciBpbiAxOTk3IGZyb20gY29udmVydGFuZGNyZWF0 ZSAocHVibGljIGRvbWFpbikKIyBieSBSdXNzZWwgTmVsc29uLiAgQm90aCB0aGVzZSBjb252ZXJ0 IGEgc2luZ2xlIG1haWxzcG9vbCBmaWxlLgojCiMgVGhlIHFtYWlsIGRpc3RyaWJ1dGlvbiBoYXMg YSBtYWlsZGlyMm1ib3guYyBwcm9ncmFtLgojCiMgV2hhdCBpcyBkb2VzOgojID09PT09PT09PT09 PT0KIwojIFJlYWRzIGEgZGlyZWN0b3J5IGZ1bGwgb2YgTWJveCBmb3JtYXQgbWFpbGJveGVzIGFu ZCBjcmVhdGVzIGEgc2V0IG9mCiMgTWFpbGRpciBmb3JtYXQgbWFpbGJveGVzLiAgU29tZSBkZXRh aWxzIG9mIHRoaXMgYXJlIHRvIHN1aXQgQ291cmllcgojIElNQVAncyBuYW1pbmcgY29udmVudGlv bnMgZm9yIE1haWxkaXIgbWFpbGJveGVzLgojCiMgICBodHRwOi8vd3d3LmludGVyNy5jb20vY291 cmllcmltYXAvCiMKIyBUaGlzIGlzIGludGVuZGVkIHRvIGF1dG9tYXRlIHRoZSBjb252ZXJzaW9u IG9mIHRoZSBvbGQKIyAvdmFyL3Nwb29sL21haWwvYmxhaCBmaWxlIC0gd2l0aCBvbmUgY2FsbCBv ZiB0aGlzIHNjcmlwdCAtIGFuZCB0bwojIGNvbnZlcnQgb25lIG9yIG1vcmUgbWFpbGJveGVzIGlu IGEgc3BlY2lmZWQgZGlyZWN0b3J5IHdpdGggc2VwYXJhdGUKIyBjYWxscyB3aXRoIG90aGVyIGNv bW1hbmQgbGluZSBhcmd1bWVudHMuCiMKIyBSdW4gdGhpcyBhcyB0aGUgdXNlciAtIGluIHRoZXNl IGV4YW1wbGVzICJibGFoIi4KCiMgVGhpcyB2ZXJzaW9uIHN1cHBvcnRzIGNvbnZlcnNpb24gb2Y6 CiMKIyAgICBEYXRlICAgIFRoZSBkYXRlLXRpbWUgaW4gdGhlICJGcm9tICIgbGluZSBvZiB0aGUg bWVzc2FnZSBpbiB0aGUKIyAgICAgICAgICAgIE1ib3ggZm9ybWF0IGlzIHRoZSBkYXRlIHdoZW4g dGhlIG1lc3NhZ2Ugd2FzICpyZWNlaXZlZCouCiMgICAgICAgICAgICBUaGlzIGlzIHRyYW5zZm9y bWVkIGludG8gdGhlIGRhdGUtdGltZSBvZiB0aGUgZmlsZSB3aGljaAojICAgICAgICAgICAgY29u dGFpbnMgdGhlIG1lc3NhZ2UgaW4gdGhlIE1haWxkaXIgbWFpbGJveC4KIwojICAgICAgICAgICAg VGhpcyByZWxpZXMgb24gdGhlIERhdGU6OlBhcnNlIHBlcmwgbW9kdWxlIGFuZCB0aGUgdXRpbWUK IyAgICAgICAgICAgIHBlcmwgZnVuY3Rpb24uCiMKIyAgICAgICAgICAgIFRoZSBzY3JpcHQgdHJp ZXMgdG8gY29wZSB3aXRoIGVycmFudCBmb3JtcyBvZiB0aGUKIyAgICAgICAgICAgIE1ib3ggIkZy b20gIiBsaW5lIHdoaWNoIGl0IG1heSBlbmNvdW50ZXIsIGJ1dCBpZgojICAgICAgICAgICAgdGhl cmUgaXMgc29tZXRoaW5nIHJlYWxseSBzY3Jld3kgaW4gYSBGcm9tIGxpbmUsCiMgICAgICAgICAg ICB0aGVuIHBlcmhhcHMgdGhlIHNjcmlwdCB3aWxsIGZhaWwgd2hlbiAidG91Y2giCiMgICAgICAg ICAgICBpcyBnaXZlbiBhbiBpbnZhbGlkIGRhdGUuICBQbGVhc2UgcmVwb3J0IHRoZQojICAgICAg ICAgICAgZXhhY3QgbmF0dXJlIG9mIGFueSBzdWNoICJGcm9tICIgbGluZSEKIwojCiMgICBGbGFn Z2VkCiMgICBSZXBsaWVkCiMgICBSZWFkID0gU2VlbgojICAgVGFnZ2VkIGZvciBEZWxldGlvbgoj CiMgICAgICAgICAgICBJbiB0aGUgTWJveCBtZXNzYWdlLCBmbGFncyBmb3IgdGhlc2UgYXJlIGZv dW5kIGluIHRoZQojICAgICAgICAgICAgIlN0YXR1czogTiIgb3IgIlgtU3RhdHVzOiBOIiBoZWFk ZXJzLCB3aGVyZSAiTiIgaXMgMAojICAgICAgICAgICAgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5n IGNoYXJhY3RlcnMgaW4gdGhlIGxlZnQgY29sdW1uLgojCiMgICAgICAgICAgICBUaGV5IGFyZSBj b252ZXJ0ZWQgdG8gY2hhcmFjdGVycyBpbiB0aGUgcmlnaHQgY29sdW1uLAojICAgICAgICAgICAg d2hpY2ggYmVjb21lIHRoZSBsYXN0IGNoYXJhY3RlcnMgb2YgdGhlIGZpbGUgbmFtZSwKIyAgICAg ICAgICAgIGZvbGxvd2luZyB0aGUgIjoyLCIgd2hpY2ggaW5kaWNhdGVzIElNQVAgbWVzc2FnZSBz dGF0dXMuCiMKIwojICAgICAgICAgICAgICAgIEYgLT4gRiAgICAgIEZsYWdnZWQKIyAgICAgICAg ICAgICAgICBBIC0+IFIgICAgICBSZXBsaWVkCiMgICAgICAgICAgICAgICAgUiAtPiBTICAgICAg UmVhZCA9IFNlZW4KIyAgICAgICAgICAgICAgICBEIC0+IFQgICAgICBUYWdnZWQgZm9yIERlbGV0 aW9uIChUcmFzaCkKIwojICAgICAgICAgICAgVGhpcyBpcyBiYXNlZCBvbiB0aGUgd29yayBvZiBQ aGlsaXAgTWFrIHdobyB3cm90ZSBhCiMgICAgICAgICAgICBjb21wbGV0ZWx5IHNlcGFyYXRlIE1i b3ggLT4gTWFpbGRpciBjb252ZXJ0ZXIgY2FsbGVkCiMgICAgICAgICAgICBwZXJmZWN0X21haWxk aXIgYW5kIHBvc3RlZCBpdCB0byB0aGUgTXV0dC11c2VycyBtYWlsaW5nCiMgICAgICAgICAgICBs aXN0IG9uIDI1IERlY2VtYmVyIDIwMDE6CiMKIyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubWFp bC1hcmNoaXZlLmNvbS9tdXR0LXVzZXJzQG11dHQub3JnL21zZzIxODcyLmh0bWwKIwojICAgICAg ICAgICAgTWljaGFlbCBCZXN0IG9yaWdpbmFsbHkgaW50ZWdyYXRlZCB0aG9zZSBjaGFuZ2VzIGlu dG8gbWIybWQuCiMKIwojICAgSW4gYWRkaXRpb24sIHRoZSBuYW1lcyBvZiB0aGUgbWVzc2FnZSBm aWxlcyBpbiB0aGUgTWFpbGRpciBhcmUgb2YgYQojICAgcmVndWxhciBsZW5ndGggYW5kIGFyZSBv ZiB0aGUgZm9ybToKIwojICAgICAgIDc2NTQzMjEuMDAwMTIzLm1ib3g6Mix4eHgKIwojICAgV2hl cmUgIjc2NTQzMjEiIGlzIHRoZSBVbml4IHRpbWUgaW4gc2Vjb25kcyB3aGVuIHRoZSBzY3JpcHQg d2FzCiMgICBydW4gYW5kICIwMDAxMjMiIGlzIHRoZSBzaXggemVyb2VzIHBhZGRlZCBtZXNzYWdl IG51bWJlciBhcwojICAgbWVzc2FnZXMgYXJlIGNvbnZlcnRlZCBmcm9tIHRoZSBNYm94IGZpbGUu ICAieHh4IiByZXByZXNlbnRzIHplcm8gb3IKIyAgIG1vcmUgb2YgdGhlIGFib3ZlIGZsYWdzIEYs IFIsIFMgb3IgVC4KIwojCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIwojIFVTQUdFCiMgPT09PT0KIwojIFJ1 biB0aGlzIGFzIHRoZSB1c2VyIG9mIHRoZSBtYWlsYm94ZXMsIG5vdCBhcyByb290LgojCiMKIyBt YjJtZCAtaAojIG1iMm1kIFstY10gLW0gWy1kIGRlc3RkaXJdCiMgbWIybWQgWy1jXSAtcyBzb3Vy Y2VmaWxlIFstZCBkZXN0ZGlyXQojIG1iMm1kIFstY10gLXMgc291cmNlZGlyIFstbCB3dS1tYWls Ym94bGlzdF0gWy1SfC1mIHNvbWVmb2xkZXJdIFstZCBkZXN0ZGlyXSBbLXIgc3RyaXBfZXh0ZW5z aW9uXQojCiMgIC1jICAgICAgICAgICAgdXNlIHRoZSBDb250ZW50LUxlbmd0aDogaGVhZGVycyAo aWYgcHJlc2VudCkgdG8gZmluZCB0aGUKIyAgICAgICAgICAgICAgICBiZWdpbm5pbmcgb2YgdGhl IG5leHQgbWVzc2FnZQojICAgICAgICAgICAgICAgIFVzZSB3aXRoIGNhdXRpb24hIFJlc3VsdHMg bWF5IGJlIHVucmVsaWFibGUuIEkgcmVjb21tZW5kIHRvIGRvCiMgICAgICAgICAgICAgICAgYSBy dW4gd2l0aG91dCAiLWMiIGZpcnN0IGFuZCBvbmx5IHVzZSBpdCBpZiB5b3UgYXJlIGNlcnRhaW4s CiMgICAgICAgICAgICAgICAgdGhhdCB0aGUgbWJveCBpbiBxdWVzdGlvbiByZWFsbHkgbmVlZHMg dGhlICItYyIgb3B0aW9uCiMKIyAgLW0gICAgICAgICAgICBJZiB0aGlzIGlzIHVzZWQgdGhlbiB0 aGUgc291cmNlIHdpbGwKIyAgICAgICAgICAgICAgICBiZSB0aGUgc2luZ2xlIG1haWxib3ggYXQg L3Zhci9zcG9vbC9tYWlsL2JsYWggZm9yCiMgICAgICAgICAgICAgICAgdXNlciBibGFoIGFuZCB0 aGUgZGVzdGluYXRpb24gbWFpbGJveCB3aWxsIGJlIHRoZQojICAgICAgICAgICAgICAgICJkZXN0 ZGlyIiBtYWlsYm94IGl0c2VsZi4KIwojCiMgIC1zIHNvdXJjZSAgICAgRGlyZWN0b3J5IG9yIGZp bGUgcmVsYXRpdmUgdG8gdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeSwKIyAgICAgICAgICAgICAg ICB3aGljaCBpcyB3aGVyZSB0aGUgdGhlICJzb21lZm9sZGVycyIgZGlyZWN0b3JpZXMgYXJlIGxv Y2F0ZWQuCiMgICAgICAgICAgICAgICAgT3IgaWYgc3RhcnRpbmcgd2l0aCBhICIvIiBpdCBpcyB0 YWtlbiBhcyBhCiMgICAgICAgICAgICAgICAgYWJzb2x1dGUgcGF0aCwgZS5nLiAvbW50L29sZG1h aWwvdXNlcgojCiMgICAgICAgICAgICAgICAgb3IKIwojICAgICAgICAgICAgICAgIEEgc2luZ2xl IG1ib3ggZmlsZSB3aGljaCB3aWxsIGJlIGNvbnZlcnRlZCB0bwojICAgICAgICAgICAgICAgIHRo ZSBkZXN0ZGlyLgojCiMgIC1SCQkgSWYgZGVmaW5lZCwgZG8gbm90IHNraXAgZGlyZWN0b3JpZXMg Zm91bmQgaW4gYSBtYWlsYm94IAojCQkgZGlyZWN0b3J5LCBidXQgcnVucyByZWN1cnNpdmVseSBp bnRvIGVhY2ggb2YgdGhlbSwgCiMgCQkgY3JlYXRpbmcgYWxsIHdhbnRlZCBmb2xkZXJzIGluIE1h aWxkaXIuCiMJCSBJbmNvbXBhdGlibGUgd2l0aCAnLWYnCiMKIyAgLWYgc29tZWZvbGRlciBEaXJl Y3RvcmllcywgcmVsYXRpdmUgdG8gInNvdXJjZWRpciIgd2hlcmUgdGhlIE1ib3ggZmlsZXMKIyAg ICAgICAgICAgICAgICBhcmUuIEFsbCBtYWlsYm94ZXMgaW4gdGhlICJzb3VyY2VkaXIiCiMgICAg ICAgICAgICAgICAgZGlyZWN0b3J5IHdpbGwgYmUgY29udmVydGVkIGFuZCBwbGFjZWQgaW4gdGhl CiMgICAgICAgICAgICAgICAgImRlc3RkaXIiIGRpcmVjdG9yeS4gIChUeXBpY2FsbHkgdGhlIElu Ym94IGRpcmVjdG9yeQojICAgICAgICAgICAgICAgIHdoaWNoIGluIHRoaXMgaW5zdGFuY2UgaXMg YWxzbyBmdW5jdGlvbmluZyBhcyBhCiMgICAgICAgICAgICAgICAgZm9sZGVyIGZvciBvdGhlciBt YWlsYm94ZXMuKQojCiMgICAgICAgICAgICAgICAgVGhlICJzb21lZm9sZGVyIiBkaXJlY3RvcnkK IyAgICAgICAgICAgICAgICBuYW1lIHdpbGwgYmUgZW5jb2RlZCBpbnRvIHRoZSBuZXcgbWFpbGJv eGVzJyBuYW1lcy4KIyAgICAgICAgICAgICAgICBTZWUgdGhlIGV4YW1wbGVzIGJlbG93LgojCiMg ICAgICAgICAgICAgICAgVGhpcyBkb2VzIG5vdCBzYXZlIGFuIFVXIElNQVAgZHVtbXkgbWVzc2Fn ZSBmaWxlCiMgICAgICAgICAgICAgICAgYXQgdGhlIHN0YXJ0IG9mIHRoZSBNYm94IGZpbGUuICBT bWFsbCBjaGFuZ2VzCiMgICAgICAgICAgICAgICAgaW4gdGhlIGNvZGUgY291bGQgYWRhcHQgaXQg Zm9yIGxvb2tpbmcgZm9yCiMgICAgICAgICAgICAgICAgb3RoZXIgZGlzdGluY3RpdmUgcGF0dGVy bnMgb2YgZHVtbXkgbWVzc2FnZXMgdG9vLgojCiMgICAgICAgICAgICAgICAgRG9uJ3QgbGV0IHRo ZSBzb3VyY2UgZGlyZWN0b3J5IHlvdSBnaXZlIGFzICJzb21lZm9sZGVycyIKIyAgICAgICAgICAg ICAgICBjb250YWluIGFueSAiLiJzIGluIGl0cyBuYW1lLCB1bmxlc3MgeW91IHdhbnQgdG8KIyAg ICAgICAgICAgICAgICBjcmVhdGUgc3ViZm9sZGVycyBmcm9tIHRoZSBJTUFQIHVzZXIncyBwb2lu dCBvZgojICAgICAgICAgICAgICAgIHZpZXcuICBTZWUgdGhlIGV4YW1wbGUgYmVsb3cuCiMKIyAg ICAgICAgICAgICAgICBJbmNvbXBhdGlibGUgd2l0aCAnLWYnCiMKIwojICAtZCBkZXN0ZGlyICAg IERpcmVjdG9yeSB3aGVyZSB0aGUgTWFpbGRpciBmb3JtYXQgZGlyZWN0b3JpZXMgd2lsbCBiZSBj cmVhdGVkLgojICAgICAgICAgICAgICAgIElmIG5vdCBnaXZlbiwgdGhlbiB0aGUgZGVzdGluYXRp b24gd2lsbCBiZSB+L01haWxkaXIgLgojICAgICAgICAgICAgICAgIFR5cGljYWxseSwgdGhpcyBp cyB3aGF0IHRoZSBJTUFQIHNlcnZlciBzZWVzIGFzIHRoZQojICAgICAgICAgICAgICAgIEluYm94 IGFuZCB0aGUgZm9sZGVyIGZvciBhbGwgdXNlciBtYWlsYm94ZXMuCiMgICAgICAgICAgICAgICAg SWYgdGhpcyBiZWdpbnMgd2l0aCBhICcvJyB0aGUgcGF0aCBpcyBjb25zaWRlcmVkIHRvIGJlCiMg ICAgICAgICAgICAgICAgYWJzb2x1dGUsIG90aGVyd2lzZSBpdCBpcyByZWxhdGl2ZSB0byB0aGUg dXNlcnMKIyAgICAgICAgICAgICAgICBob21lIGRpcmVjdG9yeS4KIwojICAtciBzdHJpcF9leHQg IElmIGRlZmluZWQgdGhpcyBleHRlbnNpb24gd2lsbCBiZSBzdHJpcHBlZCBmcm9tCiMgICAgICAg ICAgICAgICAgdGhlIG9yaWdpbmFsIG1haWxib3ggZmlsZSBuYW1lIGJlZm9yZSBjcmVhdGluZwoj ICAgICAgICAgICAgICAgIHRoZSBjb3JyZXNwb25kaW5nIG1haWxkaXIuIFRoZSBleHRlbnNpb24g bXVzdCBiZQojICAgICAgICAgICAgICAgIGdpdmVuIHdpdGhvdXQgdGhlIGxlYWRpbmcgZG90ICgi LiIpLiBTZWUgdGhlIGV4YW1wbGUgYmVsb3cuCiMKIyAgLWwgV1UtZmlsZSAgICBGaWxlIGNvbnRh aW5pbmcgdGhlIGxpc3Qgb2Ygc3Vic2NyaWJlZCBmb2xkZXJzLiAgSWYKIyAgICAgICAgICAgICAg ICBtaWdyYXRpbmcgZnJvbSBXVS1JTUFQIHRoZSBsaXN0IG9mIHN1YnNjcmliZWQgZm9sZGVycyB3 aWxsCiMgICAgICAgICAgICAgICAgYmUgZm91bmQgaW4gdGhlIGZpbGUgY2FsbGVkIC5tYWlsYm94 bGlzdCBpbiB0aGUgdXNlcnMKIyAgICAgICAgICAgICAgICBob21lIGRpcmVjdG9yeS4gIFRoaXMg d2lsbCBjb252ZXJ0IGFsbCBzdWJzY3JpYmVkIGZvbGRlcnMKIyAgICAgICAgICAgICAgICBmb3Ig YSBzaW5nbGUgdXNlcjoKIyAgICAgICAgICAgICAgICAvYmluL21iMm1kIC1zIG1haWwgLWwgLm1h aWxib3hsaXN0IC1SIC1kIE1haWxkaXIKIyAgICAgICAgICAgICAgICBhbmQgZm9yIGFsbCB1c2Vy cyBpbiBhIGRpcmVjdG9yeSBhcyByb290IHlvdSBjYW4gZG8gdGhlCiMgICAgICAgICAgICAgICAg Zm9sbG93aW5nOgojICAgICAgICAgICAgICAgIGZvciBpIGluICo7IGRvIGVjaG8gJGk7c3UgLSAk aSAtYyAiL2Jpbi9tYjJtZCAtcyBtYWlsIC1sIC5tYWlsYm94bGlzdCAtUiAtZCBNYWlsZGlyIjtk b25lCiMKIwojICBFeGFtcGxlCiMgID09PT09PT0KIwojIFdlIGhhdmUgYSBidW5jaCBvZiBkaXJl Y3RvcmllcyBvZiBNYm94IG1haWxib3hlcyBsb2NhdGVkIGF0CiMgL2hvbWUvYmxhaC9vbGRtYWls LwojCiMgICAgIC9ob21lL2JsYWgvb2xkbWFpbC9mZmZmZgojICAgICAvaG9tZS9ibGFoL29sZG1h aWwvZ2dnZ2cKIyAgICAgL2hvbWUvYmxhaC9vbGRtYWlsL3h4eC9hYWFhCiMgICAgIC9ob21lL2Js YWgvb2xkbWFpbC94eHgvYmJiYgojICAgICAvaG9tZS9ibGFoL29sZG1haWwveHh4L2NjY2MKIyAg ICAgL2hvbWUvYmxhaC9vbGRtYWlsL3h4eC9kZGRkCiMgICAgIC9ob21lL2JsYWgvb2xkbWFpbC95 eXl5L2h1ZXkKIyAgICAgL2hvbWUvYmxhaC9vbGRtYWlsL3l5eXkvZHVleQojICAgICAvaG9tZS9i bGFoL29sZG1haWwveXl5eS9sb3VpZQojCiMgV2l0aCB0aGUgVVcgSU1BUCBzZXJ2ZXIsIGZmZmZm IGFuZCBnZ2dnZyB3b3VsZCBoYXZlIGFwcGVhcmVkIGluIHRoZSByb290CiMgb2YgdGhpcyBtYWls IHNlcnZlciwgYWxvbmcgd2l0aCB0aGUgSW5ib3guICBhYWFhLCBiYmJiIGV0Yywgd291bGQgaGF2 ZQojIGFwcGVhcmVkIGluIGEgZm9sZGVyIGNhbGxlZCB4eHggZnJvbSB0aGF0IHJvb3QsIGFuZCB4 eHggd2FzIGp1c3QgYSBmb2xkZXIKIyBub3QgYSBtYWlsYm94IGZvciBzdG9yaW5nIG1lc3NhZ2Vz LgojCiMgV2UgYWxzbyBoYXZlIHRoZSBtYWlsc3Bvb2wgSW5ib3ggYXQ6CiMKIyAgICAgL3Zhci9z cG9vbC9tYWlsL2JsYWgKIwojCiMgVG8gY29udmVydCB0aGVzZSwgYXMgdXNlciBibGFoLCB3ZSBn aXZlIHRoZSBmaXJzdCBjb21tYW5kOgojCiMgICAgbWIybWQgLW0KIwojIFRoZSBtYWluIE1haWxk aXIgZGlyZWN0b3J5IHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdC4KIyAoVGhp cyBpcyB0cnVlIG9mIGFueSBhcmd1bWVudCBvcHRpb25zLCBub3QganVzdCAiLW0iLikKIwojICAg IC9ob21lL2JsYWgvTWFpbGRpci8KIwojIEl0IGhhcyB0aGUgZm9sbG93aW5nIHN1YmRpcmVjdG9y aWVzOgojCiMgICAgL2hvbWUvYmxhaC9NYWlsZGlyL3RtcC8KIyAgICAvaG9tZS9ibGFoL01haWxk aXIvbmV3LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci9jdXIvCiMKIyBUaGVuIC92YXIvc3Bvb2wv YmxhaCBmaWxlIGlzIHJlYWQsIHNwbGl0IGludG8gaW5kaXZpZHVhbCBmaWxlcyBhbmQKIyB3cml0 dGVuIGludG8gL2hvbWUvYmxhaC9NYWlsZGlyL2N1ci8gLgojCiMgTm93IHdlIGdpdmUgdGhlIHNl Y29uZCBjb21tYW5kOgojCiMgICAgbWIybWQgIC1zIG9sZG1haWwgLVIKIwojIFRoaXMgcmVhZHMg cmVjdXJzaXZlbHkgYWxsIE1ib3ggbWFpbGJveGVzIGFuZCBjcmVhdGVzOgojCiMgICAgL2hvbWUv YmxhaC9NYWlsZGlyLy5mZmZmZi8KIyAgICAvaG9tZS9ibGFoL01haWxkaXIvLmdnZ2dnLwojICAg IC9ob21lL2JsYWgvTWFpbGRpci8ueHh4LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueHh4LmFh YWEvCiMgICAgL2hvbWUvYmxhaC9NYWlsZGlyLy54eHguYmJiYi8KIyAgICAvaG9tZS9ibGFoL01h aWxkaXIvLnh4eC5jY2NjLwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueHh4LmFhYWEvCiMgICAg L2hvbWUvYmxhaC9NYWlsZGlyLy55eXl5LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueXl5eS5o dWV5LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueXl5eS5kdWV5LwojICAgIC9ob21lL2JsYWgv TWFpbGRpci8ueXl5eS5sb3VpZS8KIwojICBUaGUgcmVzdWx0LCBmcm9tIHRoZSBJTUFQIGNsaWVu dCdzIHBvaW50IG9mIHZpZXcgaXM6CiMKIyAgICBJbmJveCAtLS0tLS0tLS0tLS0tLS0tLQojICAg ICAgICB8CiMgICAgICAgIHwgZmZmZmYgLS0tLS0tLS0tLS0KIyAgICAgICAgfCBnZ2dnZyAtLS0t LS0tLS0tLQojICAgICAgICB8CiMgICAgICAgIC0geHh4IC0tLS0tLS0tLS0tLS0KIyAgICAgICAg fCAgIHwgYWFhYSAtLS0tLS0tLQojICAgICAgICB8ICAgfCBiYmJiIC0tLS0tLS0tCiMgICAgICAg IHwgICB8IGNjY2MgLS0tLS0tLS0KIyAgICAgICAgfCAgIHwgZGRkZCAtLS0tLS0tLQojICAgICAg ICB8CiMgICAgICAgIC0geXl5eSAtLS0tLS0tLS0tLS0KIyAgICAgICAgICAgICB8IGh1ZXkgLS0t LS0tLQojICAgICAgICAgICAgIHwgZHVleSAtLS0tLS0tCiMgICAgICAgICAgICAgfCBsb3VpZSAt LS0tLS0KIwojIE5vdGUgdGhhdCBhbHRob3VnaCB+L01haWxkaXIvLnh4eC8gYW5kIH4vTWFpbGRp ci8ueXl5eSBtYXkgYXBwZWFyCiMgYXMgZm9sZGVycyB0byB0aGUgSU1BUCBjbGllbnQgdGhlIGFi b3ZlIGNvbW1hbmRzIHRvIG5vdCBnZW5lcmF0ZQojIGFueSBNYWlsZGlyIGZvbGRlcnMgb2YgdGhl c2UgbmFtZXMuICBUaGVzZSBhcmUgc2ltcGx5IGVsZW1lbnRzCiMgb2YgdGhlIG5hbWVzIG9mIG90 aGVyIE1haWxkaXIgZGlyZWN0b3JpZXMuIChpZiB5b3UgdXNlZCAnLVInLCB0aGV5IAojIHdoaWxs IGJlIGFibGUgdG8gYWN0IGFzIG5vcm1hbCBmb2xkZXJzLCBjb250YWluaW5nIG1lc3NhZ2VzIEFO RCBmb2xkZXJzKQojCiMgV2l0aCBhIHNlcGFyYXRlIHJ1biBvZiB0aGlzIHNjcmlwdCwgdXNpbmcg anVzdCB0aGUgIi1zIiBvcHRpb24KIyB3aXRob3V0ICItZiIgbm9yICItUiIsIGl0IHdvdWxkIGJl IHBvc3NpYmxlIHRvIGNyZWF0ZSBtYWlsYm94ZXMgd2hpY2gKIyBhcHBlYXIgYXQgdGhlIHNhbWUg bG9jYXRpb24gYXMgZmFyIGFzIHRoZSBJTUFQIGNsaWVudCBpcwojIGNvbmNlcm5lZC4gIEJ5IGhh dmluZyBNYm94IG1haWxib3hlcyBpbiBzb21lIGRpcmVjdG9yeToKIyB+L29sZG1haWwvbm5uLyBv ZiB0aGUgZm9ybToKIwojICAgICAvaG9tZS9ibGFoL29sZG1haWwvbm4veHh4eAojICAgICAvaG9t ZS9ibGFoL29sZG1haWwvbm4veXl5eXkKIwojIHRoZW4gdGhlIGNvbW1hbmQ6CiMKIyAgIG1iMm1k IC1zIG9sZG1haWwvbm4KIwojIHdpbGwgY3JlYXRlIHR3byBuZXcgTWFpbGRpcnM6CiMKIyAgICAv aG9tZS9ibGFoL01haWxkaXIvLnh4eC8KIyAgICAvaG9tZS9ibGFoL01haWxkaXIvLnl5eXkvCiMK IyBUaGVuIHdoYXQgdXNlZCB0byBiZSB0aGUgeHh4IGFuZCB5eXl5IGZvbGRlcnMgbm93IGZ1bmN0 aW9uIGFzCiMgbWFpbGJveGVzIHRvby4gIE5ldHNjYXBlIDQuNzcgbmVlZGVkIHRvIGJlIHB1dCB0 byBzbGVlcCBhbmQgZ2l2ZW4gRUNUCiMgdG8gcmVjb2duaXNlIHRoaXMgLSBkZWxldGluZyB0aGUg Y29udGVudHMgb2YgKFdpbjJrIGV4YW1wbGUpOgojCiMgICAgQzpcUHJvZ3JhbSBGaWxlc1xOZXRz Y2FwZVxVc2Vyc1x1dVxJbWFwTWFpbFxhYWEuYmJiLmNjY1wKIwojIHdoZXJlICJ1dSIgaXMgdGhl IHVzZXIgYW5kICJhYWEuYmJiLmNjYyIgaXMgdGhlIElNQVAgc2VydmVyCiMKIyBJIG9mdGVuIGZp bmQgdGhhdCBkZWxldGluZyBhbGwgdGhpcyBkaXJlY3RvcnkncyBjb250ZW50cywgZXhjZXB0CiMg InJ1bGVzLmRhdCIsIGZvcmNlcyBOZXRzY2FwZSBiYWNrIHRvIHJlYWxpdHkgYWZ0ZXIgaXRzIElN QVAgaW5uYXJkcwojIGhhdmUgYmVjb21lIHR3aXN0ZWQuICBUaGVuIG1heWJlIHVzZSBGaWxlID4g U3Vic2NyaWJlIC0gYnV0IHRoaXMKIyBzZWVtcyBpbmNhcGFibGUgb2Ygc3Vic2NyaWJpbmcgdG8g Zm9sZGVycy4KIwojIEZvciBPdXRsb29rIEV4cHJlc3MsIHNlbGVjdCB0aGUgbWFpbCBzZXJ2ZXIs IHRoZW4gY2xpY2sgdGhlCiMgIklNQVAgRm9sZGVycyIgYnV0dG9uIGFuZCB1c2UgIlJlc2V0IGxp c3QiLiAgSW4gdGhlICJBbGwiCiMgd2luZG93LCBzZWxlY3QgdGhlIG1haWxib3hlcyB5b3Ugd2Fu dCB0byBzZWUgaW4gbm9ybWFsCiMgdXNhZ2UuCiMKIwojIFRoaXMgc2NyaXB0IGRpZCBub3QgcmVj dXJzZSBzdWJkaXJlY3RvcmllcyBvciBkZWxldGUgb2xkIG1haWxib3hlcywgYmVmb3JlIGFkZGl0 aW9uIG9mIHRoZSAnLVInIHBhcmFtZXRlciA6KQojCiMgQmUgc3VyZSBub3QgdG8gYmUgYWNjZXNz aW5nIHRoZSBNYm94IG1haWxib3hlcyB3aGlsZSBydW5uaW5nIHRoaXMKIyBzY3JpcHQuICBJdCBk b2VzIG5vdCBhdHRlbXB0IHRvIGxvY2sgdGhlbS4gIExpa2V3aXNlLCBkb24ndCBydW4gdHdvCiMg Y29waWVzIG9mIHRoaXMgc2NyaXB0IGVpdGhlci4KIwojCiMgVHJpY2tpZXIgdXNhZ2UgLiAuIC4K IyA9PT09PT09PT09PT09PT09PT09PQojCiMgSWYgeW91IGhhdmUgYSBidW5jaCBvZiBtYWlsYm94 ZXMgaW4gYSBkaXJlY3Rvcnkgfi9vbGRtYWlsL2Rvb3JzLwojIGFuZCB5b3Ugd2FudCB0aGVtIHRv IGFwcGVhciBpbiBmb2xkZXJzIHN1Y2ggYXM6CiMKIyB+L01haWxkaXIvLm11c2ljLmJhbmRzLmRv b3JzLkppbQojIH4vTWFpbGRpci8ubXVzaWMuYmFuZHMuZG9vcnMuSm9obgojCiMgZXRjLiBzbyB0 aGV5IGFwcGVhciBpbiBhbiBJTUFQIGZvbGRlcjoKIwojICAgIEluYm94IC0tLS0tLS0tLS0tLS0t LS0tCiMgICAgICAgIHwgbXVzaWMKIyAgICAgICAgICAgICAgfCBiYW5kcwojICAgICAgICAgICAg ICAgICAgICB8IGRvb3JzCiMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSmltCiMgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgSm9obgojICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJv YmJpZQojICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJheQojCiMgVGhlbiB5b3UgY291bGQg cmVuYW1lIHRoZSBzb3VyY2UgZGlyZWN0b3J5IHRvOgojCiMgIH4vb2xkbWFpbC9tdXNpYy5iYW5k cy5kb29ycy8KIwojIHRoZW4gdXNlOgojCiMgICBtYjJtZCAtcyBvbGRtYWlsIC1mIG11c2ljLmJh bmRzLmRvb3JzCiMKIwojIE9yIHNpbXBseSB1c2UgJy1SJyBzd2l0Y2ggd2l0aDoKIyAgIG1iMm1k IC1zIG9sZG1haWwgLVIKIwojCiMgU3RyaXBwaW5nIG1haWxib3ggZXh0ZW5zaW9uczoKIyA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PSAKIwojIElmIHlvdSB3YW50IHRvIGNvbnZlcnQgbWFp bGJveGVzIHRoYXQgY2FtZSBmb3IgZXhhbXBsZSBmcm9tCiMgYSBXaW5kb3dzIGJveCB0aGFuIHlv dSBtaWdodCB3YW50IHRvIHN0cmlwIHRoZSBleHRlbnNpb24gb2YKIyB0aGUgbWFpbGJveCBuYW1l IHNvIHRoYXQgaXQgd29uJ3QgY3JlYXRlIGEgc3ViZm9sZGVyIGluIHlvdXIKIyBtYWlsIGNsaWVu dHMgdmlldy4KIwojIEV4YW1wbGU6CiMgWW91IGhhdmUgc2V2ZXJhbCBtYWlsYm94ZXMgbmFtZWQg VHJhc2gubWJ4LCBTZW50Lm1ieCwgRHJhZnRzLm1ieAojIElmIHlvdSBkb24ndCBzdHJpcCB0aGUg ZXh0ZW5zaW9uICJtYngiIHlvdSB3aWxsIGdldCB0aGUgZm9sbG93aW5nCiMgaGllcmFyY2h5Ogoj CiMgSW5ib3gKIyAgICAgIHwKIyAgICAgICAtIFRyYXNoIAojICAgICAgfCAgICAgICB8IG1ieAoj ICAgICAgfAojICAgICAgIC0gU2VudCAKIyAgICAgIHwgICAgICAgfCBtYngKIyAgICAgIHwKIyAg ICAgICAtIERyYWZ0cyAKIyAgICAgICAgICAgICAgfCBtYngKIwojIFRoaXMgaXMgbW9yZSB0aGFu IHVnbHkhCiMgSnVzdCB1c2U6CiMgICBtYjJtZCAtcyBvbGRtYWlsIC1yIG1ieAojCiMgTm90ZTog ZG9uJ3Qgc3BlY2lmeSB0aGUgZG90ISBJdCB3aWxsIGJlIHN0cmlwcGVkIG9mZgojIGF1dG9tYWdp Y2FsbHkgOykKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKdXNlIHN0cmljdDsKdXNlIEdldG9w dDo6U3RkOwp1c2UgRGF0ZTo6UGFyc2U7CnVzZSBJTzo6SGFuZGxlOwp1c2UgRmNudGw7CgoJCSAg ICAjIHByaW50IHRoZSB1c2FnZSBtZXNzYWdlCnN1YiB1c2FnZSgpIHsKICAgIHByaW50ICJVc2Fn ZTpcbiI7CiAgICBwcmludCAiICAgICAgIG1iMm1kIC1oXG4iOwogICAgcHJpbnQgIiAgICAgICBt YjJtZCBbLWNdIC1tIFstZCBkZXN0ZGlyXVxuIjsKICAgIHByaW50ICIgICAgICAgbWIybWQgWy1j XSAtcyBzb3VyY2VmaWxlIFstZCBkZXN0ZGlyXVxuIjsKICAgIGRpZSAgICIgICAgICAgbWIybWQg Wy1jXSAtcyBzb3VyY2VkaXIgWy1sIHd1LW1haWxib3hsaXN0XSBbLVJ8LWYgc29tZWZvbGRlcl0g Wy1kIGRlc3RkaXJdIFstciBzdHJpcF9leHRlbnNpb25dXG4iOwp9CgkJICAgICMgZ2V0IG9wdGlv bnMKbXkgJW9wdHM7CmdldG9wdHMoJ2Q6ZjpjaG1zOnI6bDpSJywgXCVvcHRzKSB8fCB1c2FnZSgp Owp1c2FnZSgpIGlmICggZGVmaW5lZCgkb3B0c3tofSkKCXx8ICghZGVmaW5lZCgkb3B0c3ttfSkg JiYgIWRlZmluZWQoJG9wdHN7c30pKSApOwoKIyBHZXQgdWlkLCB1c2VybmFtZSBhbmQgaG9tZSBk aXIKbXkgKCRuYW1lLCAkcGFzc3dkLCAkdWlkLCAkZ2lkLCAkcXVvdGEsICRjb21tZW50LCAkZ2Nv cywgJGhvbWVkaXIsICRzaGVsbCkgPSBnZXRwd3VpZCgkPCk7CgojIEdldCBhcmd1bWVudHMgYW5k IGRldGVybWluZSBzb3VyY2UKIyBhbmQgdGFyZ2V0IGRpcmVjdG9yaWVzLgpteSAkbWJyb290ID0g dW5kZWY7CSMgdGhpcyBpcyB0aGUgYmFzZSBkaXJlY3RvcnkgZm9yIHRoZSBtYm94ZXMKbXkgJG1i ZGlyID0gdW5kZWY7CSMgdGhpcyBpcyBhbiBtYm94IGRpciByZWxhdGl2ZSB0byB0aGUgJG1icm9v dApteSAkbWJmaWxlID0gdW5kZWY7CSMgdGhpcyBpcyBhbiBtYm94IGZpbGUKbXkgJGRlc3QgPSB1 bmRlZjsKbXkgJHN0cmlwX2V4dCA9IHVuZGVmOwpteSAkdXNlX2NsID0gdW5kZWY7CSMgZGVmaW5l cyB3aGV0aGVyIHdlIHVzZSB0aGUgQ29udGVudC1MZW5ndGg6IGhlYWRlciBpZiBwcmVzZW50Cgoj IGlmIG9wdGlvbiAiLWMiIGlzIGdpdmVuLCB3ZSB1c2UgdGhlIENvbnRlbnQtTGVuZ3RoOiBoZWFk ZXIgaWYgcHJlc2VudAojIGRhbmdlcm91cyEgbWF5IGJlIHVucmVsaWFibGUsIGFzIHRoZSB3aG9s ZSBDTCBzdHVmZiBpcyBhIGJhZCBpZGVhCmlmIChkZWZpbmVkKCRvcHRze2N9KSkKewoJJHVzZV9j bCA9IDE7Cn0gZWxzZSB7CgkkdXNlX2NsID0gMDsKfQoKIyBmaXJzdCwgaWYgdGhlIHVzZXIgaGFz IGdvbmUgdGhlIC1tIG9wdGlvbgojIHdlIHNpbXBseSBjb252ZXJ0IHRoZWlyIG1haWxmaWxlCmlm IChkZWZpbmVkKCRvcHRze219KSkKewoJaWYgKGRlZmluZWQoJEVOVnsnTUFJTCd9KSkgewoJCSRt YmZpbGUgPSAkRU5WeydNQUlMJ307Cgl9IGVsc2lmICggLWYgIi92YXIvc3Bvb2wvbWFpbC8kbmFt ZSIgKSB7CgkJJG1iZmlsZSA9ICIvdmFyL3Nwb29sL21haWwvJG5hbWUiCgl9IGVsc2lmICggLWYg Ii92YXIvbWFpbC8kbmFtZSIgKSB7CgkJJG1iZmlsZSA9ICIvdmFyL21haWwvJG5hbWUiCgl9IGVs c2UgewoJCWRpZSgiSSBzZWFyY2hlZCBcJE1BSUwsIC92YXIvc3Bvb2wvbWFpbC8kbmFtZSBhbmQg L3Zhci9tYWlsLyRuYW1lLCAiLgoJCQkiYnV0IEkgY291bGRuJ3QgZmluZCB5b3VyIG1haWwgc3Bv b2wgZmlsZSAtICIpOwoJfQp9CiMgc2VlIGlmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgYSBzb3Vy Y2UgZGlyZWN0b3J5CmVsc2lmIChkZWZpbmVkKCRvcHRze3N9KSkKewoJIyBpZiBvcHRze3N9IGRv ZXNuJ3Qgc3RhcnQgd2l0aCBhICIvIiB0aGVuCgkjIGl0IGlzIGEgc3ViZGlyIG9mIHRoZSB1c2Vy cyAkaG9tZQoJIyBpZiBpdCBkb2VzIHN0YXJ0IHdpdGggYSAiLyIgdGhlbgoJIyBsZXQncyB0YWtl ICRtYnJvb3QgYXMgYSBhYnNvbHV0IHBhdGgKCSRvcHRze3N9ID0gIiRob21lZGlyLyRvcHRze3N9 IiBpZiAoJG9wdHN7c30gIX4gL15cLy8pOyAKCgkjIGNoZWNrIGlmIHRoZSBnaXZlbiBzb3VyY2Ug aXMgYSBtYm94IGZpbGUKCWlmICgtZiAkb3B0c3tzfSkKCXsKCQkkbWJmaWxlID0gJG9wdHN7c307 Cgl9CgoJIyBvdGhlcndpc2UgY2hlY2sgaWYgaXQgaXMgYSBkaXJlY3RvcnkKCWVsc2lmICgtZCAk b3B0c3tzfSkKCXsKCQkkbWJyb290ID0gJG9wdHN7c307CgkJIyBnZXQgcmlkIG9mIHRyYWlsaW5n IC8ncwoJCSRtYnJvb3QgPX4gcy9cLyQvLzsKCgkJIyBjaGVjayBpZiB3ZSBoYXZlIGEgc3BlY2lm aWVkIHN1YiBkaXJlY3RvcnksCgkJIyBvdGhlcndpc2UgdGhlIHN1YiBkaXJlY3RvcnkgaXMgJy4n CgkJaWYgKGRlZmluZWQoJG9wdHN7Zn0pKQoJCXsKCQkJJG1iZGlyID0gJG9wdHN7Zn07CgkJCSMg Z2V0IHJpZCBvZiB0cmFpbGluZyAvJ3MKCQkJJG1iZGlyID1+IHMvXC8kLy87CgkJfQoJfQoKCSMg b3RoZXJ3aXNlIHdlIGhhdmUgYW4gZXJyb3IKCWVsc2UKCXsKCQlkaWUoIkZhdGFsOiBTb3VyY2Ug aXMgbm90IGFuIG1ib3ggZmlsZSBvciBhIGRpcmVjdG9yeSFcbiIpOwoJfQp9CgoKIyBnZXQgdGhl IGRlc3QKZGVmaW5lZCgkb3B0c3tkfSkgJiYgKCRkZXN0ID0gJG9wdHN7ZH0pIHx8ICgkZGVzdCA9 ICJNYWlsZGlyIik7CiMgc2VlIGlmIHdlIGhhdmUgYW55dGhpbmcgdG8gc3RyaXAKZGVmaW5lZCgk b3B0c3tyfSkgJiYgKCRzdHJpcF9leHQgPSAkb3B0c3tyfSk7CiMgTm8gJy1mJyB3aXRoICctUicK aWYoKGRlZmluZWQoJG9wdHN7Un0pKSYmKGRlZmluZWQoJG9wdHN7Zn0pKSkgeyBkaWUgIk5vIHJl Y3Vyc2lvbiB3aXRoIFwiLWZcIiI7fQojIEdldCBsaXN0IG9mIGZvbGRlcnMKbXkgQGZsaXN0Owpp ZihkZWZpbmVkKCRvcHRze2x9KSkKewogICAgb3BlbiAoTElTVCwkb3B0c3tsfSkgb3IgZGllICJD b3VsZCBub3Qgb3BlbiBtYWlsYm94IGxpc3QgJG9wdHN7bH06ICQhIjsKICAgIEBmbGlzdD08TElT VD47CiAgICBjbG9zZSBMSVNUOwp9CgojIGlmIHRoZSBkZXN0aW5hdGlvbiBpcyByZWxhdGl2ZSB0 byB0aGUgaG9tZSBkaXIsCiMgY2hlY2sgdGhhdCB0aGUgaG9tZSBkaXIgZXhpc3RzCmRpZSgiRmF0 YWw6IGhvbWUgZGlyICRob21lZGlyIGRvZXNuJ3QgZXhpc3QuXG4iKSBpZiAoJGRlc3QgIX4gL15c Ly8gJiYgICEgLWUgJGhvbWVkaXIpOwoKIwojIGZvcm0gdGhlIGRlc3RpbmF0aW9uIHZhbHVlCiMg c2xhcCB0aGUgaG9tZSBkaXIgb24gdGhlIGZyb250IG9mIHRoZSBkZXN0IGlmIHRoZSBkZXN0IGRv ZXMgbm90IGJlZ2luCiMgd2l0aCBhICcvJwokZGVzdCA9ICIkaG9tZWRpci8kZGVzdCIgaWYgKCRk ZXN0ICF+IC9eXC8vKTsKIyBnZXQgcmlkIG9mIHRyYWlsaW5nIC8ncwokZGVzdCA9fiBzL1wvJC8v OwoKCiMgQ291bnQgdGhlIG51bWJlciBvZiBtYWlsYm94ZXMsIG9yCiMgYXQgbGVhc3QgZmlsZXMs IHdlIGZvdW5kLgpteSAkbWFpbGJveGNvdW50ID0gMDsKCiMgU2luY2Ugd2UnbGwgYmUgbWFraW5n IHN1YiBkaXJlY3RvcmllcyBvZiB0aGUgbWFpbgojIE1haWxkaXIsIHdlIG5lZWQgdG8gbWFrZSBz dXJlIHRoYXQgdGhlIG1haW4gbWFpbGRpcgojIGV4aXN0cwombWFpbGRpcm1ha2UoJGRlc3QpOwoK IyBOb3cgd2UgZG8gZGlmZmVyZW50IHRoaW5ncyBkZXBlbmRpbmcgb24gd2hldGhlciB3ZSBjb252 ZXJ0IG9uZSBtYm94CiMgZmlsZSBvciBhIGRpcmVjdG9yeSBvZiBtYm94IGZpbGVzCmlmIChkZWZp bmVkKCRtYmZpbGUpKQp7CglpZiAoIWlzYW1haWxib3hmaWxlKCRtYmZpbGUpKQogICAgICAgIHsK ICAgICAgICAgICAgICBwcmludCAiU2tpcHBpbmcgJG1iZmlsZTogbm90IGEgbWJveCBmaWxlXG4i OwogICAgICAgIH0KCWVsc2UKCXsKCSAgICAgIHByaW50ICJDb252ZXJ0aW5nICRtYmZpbGUgdG8g bWFpbGRpcjogJGRlc3RcbiI7CgkgICAgICAjIHRoaXMgaXMgZWFzeSwgd2UganVzdCBydW4gdGhl IGNvbnZlcnQgZnVuY3Rpb24KCSAgICAgICZjb252ZXJ0KCRtYmZpbGUsICRkZXN0KTsKCX0KfQoj IGlmICctZicgd2FzIHVzZWQgLi4uCmVsc2lmIChkZWZpbmVkKCRtYmRpcikpCnsKCXByaW50ICJD b252ZXJ0aW5nIG1ib3hkaXIvbWJkaXI6ICRtYnJvb3QvJG1iZGlyIHRvIG1haWxkaXI6ICRkZXN0 L1xuIjsKCQoJIyBOb3cgc2V0IG91ciBzb3VyY2UgZGlyZWN0b3J5CglteSAkc291cmNlZGlyID0g IiRtYnJvb3QvJG1iZGlyIjsKCgkjIGNoZWNrIHRoYXQgdGhlIGRpcmVjdG9yeSB3ZSBhcmUgc3Vw cG9zZWQgdG8gYmUgZmluZGluZyBtYm94CgkjIGZpbGVzIGluLCBleGlzdHMgYW5kIGlzIGEgZGly ZWN0b3J5CgktZSAkc291cmNlZGlyIG9yIGRpZSgiRmF0YWw6IE1CRElSIGRpcmVjdG9yeSAkc291 cmNlZGlyLyBkb2VzIG5vdCBleGlzdC5cbiIpOwoJLWQgJHNvdXJjZWRpciBvciBkaWUoIkZhdGFs OiBNQkRJUiAkc291cmNlZGlyIGlzIG5vdCBhIGRpcmVjdG9yeS5cbiIpOwoKCQoJJmNvbnZlcnRp dCgkbWJkaXIsIiIpOwp9CiMgRWxzZSwgbGV0J3Mgd29yayBpbiAkbWJyb290CmVsc2UKewoJb3Bl bmRpcihTRElSLCAkbWJyb290KQoJCW9yIGRpZSgiRmF0YWw6IENhbm5vdCBvcGVuIHNvdXJjZSBk aXJlY3RvcnkgJG1icm9vdC8gXG4iKTsKCgoJd2hpbGUgKG15ICRzb3VyY2VmaWxlID0gcmVhZGRp cihTRElSKSkKCXsKCQlpZiAoLWQgIiRtYnJvb3QvJHNvdXJjZWZpbGUiKSB7CgkJCSMgUmVjdXJz ZSBvbmx5IGlmIHJlcXVlc3RlZCAodG8gYmUgY2hhbmdlZCA/KQoJCQlpZiAoZGVmaW5lZCgkb3B0 c3tSfSkpIHsKCQkJCXByaW50ICJjb252ZXJ0aXQoJHNvdXJjZWZpbGUsXCJcIilcbiI7CgkJCQkm Y29udmVydGl0KCRzb3VyY2VmaWxlLCIiKTsKCQkJfSBlbHNlIHsKCQkJcHJpbnQoIiRzb3VyY2Vm aWxlIGlzIGEgZGlyZWN0b3J5LCBidXQgJy1SJyB3YXMgbm90IHVzZWQuLi4gc2tpcHBpbmdcbiIp OwoJCQl9CgkJfQogICAgCQllbHNpZiAoIS1mICIkbWJyb290LyRzb3VyY2VmaWxlIikKCQl7CgkJ CXByaW50ICJTa2lwcGluZyAkbWJyb290LyRzb3VyY2VmaWxlIDogbm90IGEgZmlsZSBub3IgYSBk aXJcbiI7CgkJCW5leHQ7CgkJfQoJCWVsc2lmICghaXNhbWFpbGJveGZpbGUoIiRtYnJvb3QvJHNv dXJjZWZpbGUiKSkKCQl7CgkJCXByaW50ICJTa2lwcGluZyAkbWJyb290LyRzb3VyY2VmaWxlIDog bm90IGEgbWJveCBmaWxlXG4iOwoJCQluZXh0OwoJCX0KCQllbHNlIAoJCXsKCQkJJmNvbnZlcnRp dCgkc291cmNlZmlsZSwiIik7CgkJfQoJfSAjIGVuZCBvZiAid2hpbGUgKCRzZmlsZSA9IHJlYWRk aXIoU0RJUikpIiBsb29wLgoJY2xvc2VkaXIoU0RJUik7CglwcmludGYoIiRtYWlsYm94Y291bnQg ZmlsZXMgcHJvY2Vzc2VkLlxuIik7Cn0KIwoKZXhpdCAwOwoKIyBNeSBkZWJidWdnaW5nIHBsYWNl aG9sZGVyIEkgY2FuIHB1dCBzb21ld2hlcmUgdG8gc2hvdyBob3cgZmFyIHRoZSBzY3JpcHQgcmFu LgojIGRpZSgiU28gZmFyIHNvIGdvb2QuXG5cbiIpOwoKIyBUaGUgaXNhbWFpbGJveGZpbGUgZnVu Y3Rpb24KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgCiMgSGVyZSB3ZSBjaGVjayBpZiB0aGUg ZmlsZSBpcyBhIG1haWxib3ggZmlsZSwgbm90IGFuIGFkZHJlc3MtYm9vayBvciAKIyBzb21ldGhp bmcgZWxzZS4KIyBJZiBmaWxlIGlzIGVtcHR5LCB3ZSBzYXkgaXQgaXMgYSBtYm94LCB0byBjcmVh dGUgaXQgZW1wdHkuCiMKIyBSZXR1cm5zIDEgaWYgZmlsZSBpcyBzYWlkIG1ib3gsIDAgZWxzZS4K c3ViIGlzYW1haWxib3hmaWxlIHsKCW15ICgkbWJ4ZmlsZSkgPSBAXzsKCXJldHVybiAxIGlmKC16 ICRtYnhmaWxlKTsKCXN5c29wZW4oTUJYRklMRSwgIiRtYnhmaWxlIiwgT19SRE9OTFkpIG9yIGRp ZSAiQ291bGQgbm90IG9wZW4gJG1ieGZpbGUgISBcbiI7Cgl3aGlsZSg8TUJYRklMRT4pIHsKCQlp ZiAoL15Gcm9tLykgewoJCQljbG9zZShNQlhGSUxFKTsKCQkJcmV0dXJuIDE7CgkJfQoJCWVsc2Ug ewoJCQljbG9zZShNQlhGSUxFKTsKCQkJcmV0dXJuIDA7CgkJfQoJfQp9CgojIFRoZSBjb252ZXJ0 aXQgZnVuY3Rpb24KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBmdW5jdGlvbiBj cmVhdGVzIGFsbCBzdWJkaXJzIGluIG1haWxkaXIsIGFuZCBjYWxscyBjb252ZXJ0KCkgCiMgZm9y IGVhY2ggbWJveCBmaWxlLgojIFllcywgaXQgYmVjb21lcyB0aGUgJ21haW4gbG9vcCcgOikKc3Vi IGNvbnZlcnRpdAp7CgkjIEdldCBzdWJkaXIgYXMgYXJndW1lbnQKCW15ICgkZGlyLCRvbGRwYXRo KSA9IEBfOwoJCgkkb2xkcGF0aCA9fiBzL1wvXC8vLzsKCgkjIFNraXAgZmlsZXMgYmVnaW5uaW5n IHdpdGggJy4nIHNpbmNlIHRoZXkgYXJlCgkjIG5vdCBub3JtYWxseSBtYm94IGZpbGVzIG5vciBk aXJzIChpbmNsdWRlcyAnLicgYW5kICcuLicpCglpZiAoJGRpciA9fiAvXlwuLykKCXsKCQlwcmlu dCAiU2tpcHBpbmcgJGRpciA6IG5hbWUgYmVnaW5zIHdpdGggYSAnLidcbiI7CgkJcmV0dXJuOwoJ fQoJbXkgJGRlc3RpbmF0aW9uZGlyID0gJGRpcjsKCW15ICR0ZW1wcGF0aCA9ICRvbGRwYXRoOwoK CSMgV2UgZG9uJ3Qgd2FudCB0byBoYXZlIC4ncyBpbiB0aGUgJHRhcmdldGZpbGUgZmlsZQoJIyBu YW1lIGJlY2F1c2UgdGhleSB3aWxsIGJlY29tZSBkaXJlY3RvcmllcyBpbiB0aGUKCSMgTWFpbGRp ci4gVGhlcmVmb3JlIHdlIGNvbnZlcnQgdGhlbSB0byBfJ3MKCSR0ZW1wcGF0aCA9fiBzL1wuL1xf L2c7CgkkZGVzdGluYXRpb25kaXIgPX4gcy9cLi9cXy9nOwoJCgkjIEFwcGVuZGluZyAkb2xkcGF0 aCA9PiBwYXRoIGlzIG9ubHkgbWlzc2luZyAkZGVzdAoJJGRlc3RpbmF0aW9uZGlyID0gIiR0ZW1w cGF0aC4kZGVzdGluYXRpb25kaXIiOwoKCSMgQ29udmVydGluZyAnLycgdG8gJy4nIGluICRkZXN0 aW5hdGlvbmRpcgoJJGRlc3RpbmF0aW9uZGlyID1+cy9cLysvXC4vZzsKCQoJIyBzb3VyY2UgZGly CglteSAkc3JjZGlyPSIkbWJyb290LyRvbGRwYXRoLyRkaXIiOwoKCXByaW50ZigiY29udmVydGl0 KCk6IENvbnZlcnRpbmcgJGRpciBpbiAkbWJyb290LyRvbGRwYXRoIHRvICRkZXN0LyRkZXN0aW5h dGlvbmRpclxuIik7CgkmbWFpbGRpcm1ha2UoIiRkZXN0LyRkZXN0aW5hdGlvbmRpciIpOwoJcHJp bnQoImRlc3RpbmF0aW9uID0gJGRlc3RpbmF0aW9uZGlyXG4iKTsKCWlmICgtZCAkc3JjZGlyKSB7 CgkJb3BlbmRpcihTVUJESVIsICIkc3JjZGlyIikgb3IgZGllICJjYW4ndCBvcGVuICRzcmNkaXIg IVxuIjsKCQlteSBAc3ViZGlybGlzdD1yZWFkZGlyKFNVQkRJUik7CgkJY2xvc2VkaXIoU1VCRElS KTsKCQlmb3JlYWNoIChAc3ViZGlybGlzdCkgewoJCQluZXh0IGlmICgvXlwuKyQvKTsKCQkJcHJp bnQoIlN1YjogJF9cbiIpOwoJCQlwcmludCgiY29udmVydGl0KCRfLFwiJG9sZHBhdGgvJGRpclwi KVxuIik7CgkJCSZjb252ZXJ0aXQoJF8sIiRvbGRwYXRoLyRkaXIiKTsKCQl9IAoJfSBlbHNlIHsK CQkjIFNvdXJjZSBmaWxlIHZlcmlmcyAuLi4uCgkJIwoJCXJldHVybiBpZihkZWZpbmVkKCRvcHRz e2x9KSAmJiAhaW5saXN0KCIkb2xkcGF0aC8kZGlyIixAZmxpc3QpKTsKCgkJaWYgKCFpc2FtYWls Ym94ZmlsZSgiJG1icm9vdC8kb2xkcGF0aC8kZGlyIikpCgkJewoJCQlwcmludCAiU2tpcHBpbmcg JGRpciAoaXMgbm90IG1ib3gpXG4iOwoJCQluZXh0OwoJCX0KCgkJIyB0YXJnZXQgZmlsZSB2ZXJp ZnMuLi4KCQkjCgkJIyBpZiAkc3RyaXBfZXh0ZW5zaW9uIGlzIGRlZmluZWQsCgkJIyBzdHJpcCBp dCBvZmYgdGhlICR0YXJnZXRmaWxlCgkgICAgCWRlZmluZWQoJHN0cmlwX2V4dCkgJiYgKCRkZXN0 aW5hdGlvbmRpciA9fiBzL1wuJHN0cmlwX2V4dCQvLyk7CgkJJmNvbnZlcnQoIiRtYnJvb3QvJG9s ZHBhdGgvJGRpciIsIiRkZXN0LyRkZXN0aW5hdGlvbmRpciIpOwoJCSRtYWlsYm94Y291bnQrKzsK CX0KfQojIFRoZSBtYWlsZGlybWFrZSBmdW5jdGlvbgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQojCiMgSXQgZG9lcyB0aGUgc2FtZSB0aGluZyB0aGF0IHRoZSBtYWlsZGlybWFrZSBiaW5hcnkg dGhhdCAKIyBjb21lcyB3aXRoIGNvdXJpZXItaW1hcCBkaXN0cmlidXRpb24KIwpzdWIgbWFpbGRp cm1ha2UKewoJZm9yZWFjaChAXykgewoJCS1kICRfIG9yIG1rZGlyICRfLDA3MDAgb3IgZGllKCJG YXRhbDogRGlyZWN0b3J5ICRfIGRvZXNuJ3QgZXhpc3QgYW5kIGNhbid0IGJlIGNyZWF0ZWQuXG4i KTsKCQoJCS1kICIkXy90bXAiIG9yIG1rZGlyKCIkXy90bXAiLDA3MDApIG9yIGRpZSgiRmF0YWw6 IFVuYWJsZSB0byBtYWtlICRfL3RtcC8gc3ViZGlyZWN0b3J5LlxuIik7CgkJLWQgIiRfL25ldyIg b3IgbWtkaXIoIiRfL25ldyIsMDcwMCkgb3IgZGllKCJGYXRhbDogVW5hYmxlIHRvIG1ha2UgJF8v bmV3LyBzdWJkaXJlY3RvcnkuXG4iKTsKCQktZCAiJF8vY3VyIiBvciBta2RpcigiJF8vY3VyIiww NzAwKSBvciBkaWUoIkZhdGFsOiBVbmFibGUgdG8gbWFrZSAkXy9jdXIvIHN1YmRpcmVjdG9yeS5c biIpOwoJfQp9CgojIFRoZSBpbmxpc3QgZnVuY3Rpb24KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIwojIEl0IGNoZWNrcyB0aGF0IHRoZSBmb2xkZXIgdG8gYmUgY29udmVydGVkIGlzIGluIHRo ZSBsaXN0IG9mIHN1YnNjcmliZWQKIyBmb2xkZXJzIGluIFdVLUlNQVAKIwpzdWIgaW5saXN0CnsK CW15ICgkZmlsZSxAZmxpc3QpID0gQF87CglteSAkdmFsaWQgPSAwOwoJIyBHZXQgcmlkIG9mIHRo ZSBmaXJzdCAvIGlmIGFueQoJJGZpbGUgPX4gcy9eXC8vLzsKCWZvcmVhY2ggbXkgJGZvbGRlciAo QGZsaXN0KSB7CgkJY2hvbXAgJGZvbGRlcjsKCQlpZiAoJGZpbGUgZXEgJGZvbGRlcikgewoJCQkk dmFsaWQgPSAxOwoJCQlsYXN0OwoJCX0KCX0KCWlmICghJHZhbGlkKSB7CgkJcHJpbnQgIiRmaWxl IGlzIG5vdCBpbiBsaXN0XG4iOwoJfQoJZWxzZSB7CgkJcHJpbnQgIiRmaWxlIGlzIGluIGxpc3Rc biI7Cgl9CgoJcmV0dXJuICR2YWxpZDsKfQoJCiMgCgojIFRoZSBjb252ZXJ0IGZ1bmN0aW9uCiMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIGRvd24gYW5k IGRpcnR5IHdvcmsgb2YKIyBhY3R1YWxseSBjb252ZXJ0aW5nIHRoZSBtYm94IHRvIGEgbWFpbGRp cgojCnN1YiBjb252ZXJ0CnsKCSMgZ2V0IHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFzIGFy Z3VtZW50cwoJbXkgKCRtYm94LCAkbWFpbGRpcikgPSBAXzsKCglwcmludGYoIlNvdXJjZSBNYm94 IGlzICRtYm94XG4iKTsKICAgICAgICBwcmludGYoIlRhcmdldCBNYWlsZGlyIGlzICRtYWlsZGly IFxuIikgOwoKCSMgY3JlYXRlIHRoZSBkaXJlY3RvcmllcyBmb3IgdGhlIG5ldyBtYWlsZGlyCgkj CgkjIGlmIGl0IGlzIHRoZSByb290IG1haWxkaXIgKGllLiBjb252ZXJ0aW5nIHRoZSBpbmJveCkK CSMgdGhlc2UgYWxyZWFkeSBleGlzdCBidXQgdGhhdHMgbm90IGEgYmlnIGlzc3VlCgoJJm1haWxk aXJtYWtlKCRtYWlsZGlyKTsKCiAgICAgICAgIyBDaGFuZ2UgdG8gdGhlIHRhcmdldCBtYWlsYm94 IGRpcmVjdG9yeS4KCiAgICAgICAgY2hkaXIgIiRtYWlsZGlyIiA7CgogICAgICAgICAJICAgICMg Q29udmVydHMgYSBNYm94IHRvIG11bHRpcGxlIGZpbGVzCiAgICAgICAgICAgICAgICAgICAgIyBp biBhIE1haWxkaXIuCiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGFkYXB0ZWQgZnJvbSBt Ym94Mm1haWxkaXIuCiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMg T3BlbiB0aGUgTWJveCBtYWlsYm94IGZpbGUuCgoKICAgICAgICBpZiAoc3lzb3BlbihNQk9YLCAi JG1ib3giLCBPX1JET05MWSkpCiAgICAgICAgewogICAgICAgICAgICAjcHJpbnRmKCJDb252ZXJ0 aW5nIE1ib3ggICAkbWJveCAuIC4gLiAgXG4iKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAg ICAgIHsKICAgICAgICAgICAgZGllKCJGYXRhbDogdW5hYmxlIHRvIG9wZW4gaW5wdXQgbWFpbGJv eCBmaWxlOiAkbWJveCAhIFxuIik7CiAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIFRo aXMgbG9vcCBzY2FucyB0aGUgaW5wdXQgbWFpbGJveCBmb3IKICAgICAgICAgICAgICAgICAgICAj IGEgbGluZSBzdGFydGluZyB3aXRoICJGcm9tICIuICBUaGUKICAgICAgICAgICAgICAgICAgICAj ICJeIiBiZWZvcmUgaXQgaXMgcGF0dGVybi1tYXRjaGluZwogICAgICAgICAgICAgICAgICAgICMg bGluZ28gZm9yIGl0IGJlaW5nIGF0IHRoZSBzdGFydCBvZiBhCiAgICAgICAgICAgICAgICAgICAg IyBsaW5lLgogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIEVhY2gg ZW1haWwgaW4gTWJveCBtYWlsYm94IHN0YXJ0cwogICAgICAgICAgICAgICAgICAgICMgd2l0aCBz dWNoIGEgbGluZSwgd2hpY2ggaXMgd2h5IGFueQogICAgICAgICAgICAgICAgICAgICMgc3VjaCBs aW5lIGluIHRoZSBib2R5IG9mIHRoZSBlbWFpbAogICAgICAgICAgICAgICAgICAgICMgaGFzIHRv IGhhdmUgYSAiPiIgcHV0IGluIGZyb250IG9mIGl0LgogICAgICAgICAgICAgICAgICAgICMKICAg ICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgbm90IHJlcXVpcmVkIGluIGEgTWFpbGRpcgogICAg ICAgICAgICAgICAgICAgICMgbWFpbGJveCwgYW5kIHNvbWUgbWFqaWsgYmVsb3cKICAgICAgICAg ICAgICAgICAgICAjIGZpbmRzIGFueSBzdWNoIHF1b3RlZCAiPiBGcm9tInMgYW5kCiAgICAgICAg ICAgICAgICAgICAgIyBnZXRzIHJpZCBvZiB0aGUgIj4gIiBxdW90ZS4KICAgICAgICAgICAgICAg ICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBFYWNoIGVtYWlsIGlzIHB1dCBpbiBhIGZpbGUK ICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBjdXIvIHN1YmRpcmVjdG9yeSB3aXRoIGEKICAg ICAgICAgICAgICAgICAgICAjIG5hbWUgb2YgdGhlIGZvcm06CiAgICAgICAgICAgICAgICAgICAg IwogICAgICAgICAgICAgICAgICAgICMgICAgbm5ubm5ubm5uLmNjY2MubWJveDoyLFhYWFgKICAg ICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyB3aGVyZToKICAgICAgICAg ICAgICAgICAgICAjICAgICJubm5ubm5ubm4iIGlzIHRoZSBVbml4IHRpbWUgc2luY2UKICAgICAg ICAgICAgICAgICAgICAjICAgICAgIDE5NzAgd2hlbiB0aGlzIHNjcmlwdCBzdGFydGVkCiAgICAg ICAgICAgICAgICAgICAgIyAgICAgICBydW5uaW5nLCBpbmNyZW1lbnRlZCBieSAxIGZvcgogICAg ICAgICAgICAgICAgICAgICMgICAgICAgZXZlcnkgZW1haWwuICBUaGlzIGlzIHRvIGVuc3VyZQog ICAgICAgICAgICAgICAgICAgICMgICAgICAgdW5pcXVlIG5hbWVzIGZvciBlYWNoIG1lc3NhZ2UK ICAgICAgICAgICAgICAgICAgICAjICAgICAgIGZpbGUuCiAgICAgICAgICAgICAgICAgICAgIwog ICAgICAgICAgICAgICAgICAgICMgICAgIi5jY2NjIiBpcyB0aGUgbWVzc2FnZSBjb3VudCBvZgog ICAgICAgICAgICAgICAgICAgICMgICAgICAgbWVzc2FnZXMgZnJvbSB0aGlzIG1ib3guCiAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICAgIi5tYm94IiBpcyBqdXN0 IHRvIGluZGljYXRlIHRoYXQKICAgICAgICAgICAgICAgICAgICAjICAgICAgIHRoaXMgbWVzc2Fn ZSB3YXMgY29udmVydGVkIGZyb20KICAgICAgICAgICAgICAgICAgICAjICAgICAgIGFuIE1ib3gg bWFpbGJveC4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyAgICAi OjIsIiBpcyB0aGUgc3RhcnQgb2YgcG90ZW50aWFsbHkKICAgICAgICAgICAgICAgICAgICAjICAg ICAgIG11bHRpcGxlIElNQVAgZmxhZyBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAgICAgIyAg ICAgICAiWFhYWCIsIGJ1dCBtYXkgYmUgZm9sbG93ZWQgYnkKICAgICAgICAgICAgICAgICAgICAj ICAgICAgIG5vdGhpbmcuCiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAg ICMgVGhpcyBpcyBzb3J0LW9mICBjb21wbGlhbnQgd2l0aAogICAgICAgICAgICAgICAgICAgICMg dGhlIE1haWxkaXIgbmFtaW5nIGNvbnZlbnRpb25zCiAgICAgICAgICAgICAgICAgICAgIyBzcGVj aWZpZWQgYXQ6CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgaHR0 cDovL3d3dy5xbWFpbC5vcmcvbWFuL21hbjUvbWFpbGRpci5odG1sCiAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICMgVGhpcyBhcHByb2FjaCBkb2VzIG5vdCBpbnZvbHZl IHRoZQogICAgICAgICAgICAgICAgICAgICMgcHJvY2VzcyBJRCBvciB0aGUgaG9zdG5hbWUsIGJ1 dCBpdCBpcwogICAgICAgICAgICAgICAgICAgICMgcHJvYmFibHkgZ29vZCBlbm91Z2guCiAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgV2hlbiB0aGUgSU1BUCBzZXJ2 ZXIgbG9va3MgYXQgdGhpcwogICAgICAgICAgICAgICAgICAgICMgbWFpbGJveCwgaXQgd2lsbCBt b3ZlIHRoZSBmaWxlcyB0bwogICAgICAgICAgICAgICAgICAgICMgdGhlIGN1ci8gZGlyZWN0b3J5 IGFuZCBjaGFuZ2UgdGhlaXIKICAgICAgICAgICAgICAgICAgICAjIG5hbWVzIGFzIGl0IHBsZWFz ZXMuICBJbiB0aGUgY2FzZQogICAgICAgICAgICAgICAgICAgICMgb2YgQ291cmllciBJTUFQLCB0 aGUgbmFtZXMgd2lsbAogICAgICAgICAgICAgICAgICAgICMgYmVjb21lIGxpa2U6CiAgICAgICAg ICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICA5OTUwOTY1NDEuMjUzNTEubWJv eDoyLFMKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyB3aXRoIDI1 MzUxIGJlaW5nIENvdXJpZXIgSU1BUCdzCiAgICAgICAgICAgICAgICAgICAgIyBwcm9jZXNzIElE LiAgVGhlIDoyLCBpcyB0aGUgc3RhcnQKICAgICAgICAgICAgICAgICAgICAjIG9mIHRoZSBmbGFn cywgYW5kIHRoZSAiUyIgbWVhbnMKICAgICAgICAgICAgICAgICAgICAjIHRoYXQgdGhpcyBvbmUg aGFzIGJlZW4gc2VlbiBieQogICAgICAgICAgICAgICAgICAgICMgdGhlIHVzZXIuICAoQnV0IGlz IHRoaXMgdGhlIHNhbWUKICAgICAgICAgICAgICAgICAgICAjIG1lYW5pbmcgYXMgdGhlIHVzZXIg YWN0dWFsbHkKICAgICAgICAgICAgICAgICAgICAjIGhhdmluZyBvcGVuZWQgdGhlIG1lc3NhZ2Ug dG8gc2VlCiAgICAgICAgICAgICAgICAgICAgIyBpdHMgY29udGVudHMsIHJhdGhlciB0aGFuIGp1 c3QgdGhlCiAgICAgICAgICAgICAgICAgICAgIyBJTUFQIHNlcnZlciBoYXZpbmcgYmVlbiBhc2tl ZCB0bwogICAgICAgICAgICAgICAgICAgICMgbGlzdCB0aGUgbWVzc2FnZSdzIFN1YmplY3QgZXRj LgogICAgICAgICAgICAgICAgICAgICMgc28gdGhlIGNsaWVudCBjb3VsZCBsaXN0IGl0IGluIHRo ZQogICAgICAgICAgICAgICAgICAgICMgdmlzaWJsZSBJbmJveD8pCiAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICMgVGhpcyBjb250cmFzdHMgd2l0aCBhIG1lc3NhZ2UK ICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZWQgYnkgQ291cmllciBJTUFQLCBzYXkgd2l0aAog ICAgICAgICAgICAgICAgICAgICMgYSBtZXNzYWdlIGNvcHksIHdoaWNoIGlzIGxpa2U6CiAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICA5OTUwOTY1NDEuMjUzNTEu emFpcixTPTE0Mjg1OjIsUwogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAg ICAjIHdoZXJlICIsUz0xNDI4NSIgaXMgdGhlIHNpemUgb2YgdGhlCiAgICAgICAgICAgICAgICAg ICAgIyBtZXNzYWdlIGluIGJ5dGVzLgogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAg ICAgICAgICAjIENvdXJpZXIgTWFpbGRyb3AncyBuYW1lcyBhcmUgc2ltaWxhcgogICAgICAgICAg ICAgICAgICAgICMgYnV0IGxhY2sgdGhlICI6MixYWFhYIiBmbGFncyAuIC4gLgogICAgICAgICAg ICAgICAgICAgICMgZXhjZXB0IGZvciBteSBtb2RpZmllZCBNYWlsZHJvcAogICAgICAgICAgICAg ICAgICAgICMgd2hpY2ggY2FuIGRlbGl2ZXIgdGhlbSB3aXRoIGEKICAgICAgICAgICAgICAgICAg ICAjICI6MixUIiAtIGZsYWdnZWQgZm9yIGRlbGV0aW9uLgogICAgICAgICAgICAgICAgICAgICMK ICAgICAgICAgICAgICAgICAgICAjIEkgaGF2ZSBleHRlbmRlZCB0aGUgbG9naWMgb2YgdGhlCiAg ICAgICAgICAgICAgICAgICAgIyBwZXItbWVzc2FnZSBpbm5lciBsb29wIHRvIHN0b3AKICAgICAg ICAgICAgICAgICAgICAjIHNhdmluZyBhIGZpbGUgZm9yIGEgbWVzc2FnZSB3aXRoOgogICAgICAg ICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIFN1YmplY3Q6IERPTidUIERFTEVU RSBUSElTIE1FU1NBR0UgLS0gRk9MREVSIElOVEVSTkFMIERBVEEKICAgICAgICAgICAgICAgICAg ICAjCiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRoZSBkdW1teSBtZXNzYWdlLCBhbHdh eXMKICAgICAgICAgICAgICAgICAgICAjIGF0IHRoZSBzdGFydCBvZiBhbiBNYm94IGZvcm1hdAog ICAgICAgICAgICAgICAgICAgICMgbWFpbGJveCBmaWxlIC0gYW5kIGlzIHB1dCB0aGVyZQogICAg ICAgICAgICAgICAgICAgICMgYnkgVVcgSU1BUEQuICBTaW5jZSBxdWl0ZSBhIGZldwogICAgICAg ICAgICAgICAgICAgICMgcGVvcGxlIHdpbGwgdXNlIHRoaXMgZm9yCiAgICAgICAgICAgICAgICAg ICAgIyBjb252ZXJ0aW5nIGZyb20gYSBVVyBzeXN0ZW0sCiAgICAgICAgICAgICAgICAgICAgIyBJ IGZpZ3VyZSBpdCBpcyB3b3J0aCBpdC4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAg ICAgICAgICAgIyBJIHdpbGwgbm90IHNhdmUgYW55IHN1Y2ggbWVzc2FnZQogICAgICAgICAgICAg ICAgICAgICMgZmlsZSBmb3IgdGhlIGR1bW15IG1lc3NhZ2UuCiAgICAgICAgICAgICAgICAgICAg IwogICAgICAgICAgICAgICAgICAgICMgUGxhbgogICAgICAgICAgICAgICAgICAgICMgLS0tLQog ICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIFdlIHdhbnQgdG8gcmVh ZCB0aGUgZW50aXJlIE1ib3ggZmlsZSwgd2hpbHN0CiAgICAgICAgICAgICAgICAgICAgIyBnb2lu ZyB0aHJvdWdoIGEgbG9vcCBmb3IgZWFjaCBtZXNzYWdlIHdlIGZpbmQuCiAgICAgICAgICAgICAg ICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgV2Ugd2FudCB0byByZWFkIGFsbCB0aGUgaGVh ZGVycyBvZiB0aGUgbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAjIHN0YXJ0aW5nIHdpdGgg dGhlICJGcm9tICIgbGluZS4gICBGb3IgdGhhdCAiRnJvbSAiCiAgICAgICAgICAgICAgICAgICAg IyBsaW5lIHdlIHdhbnQgdG8gZ2V0IGEgZGF0ZS4KICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgIyBGb3IgYWxsIG90aGVyIGhlYWRlciBsaW5lcywgd2Ugd2FudCB0byBz dG9yZSB0aGVtCiAgICAgICAgICAgICAgICAgICAgIyBpbiAkaGVhZGVycyB3aGlsc3QgcGFyc2lu ZyB0aGVtIHRvIGZpbmQ6CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAg ICMgICAxIC0gQW55IGZsYWdzIGluIHRoZSAiU3RhdHVzOiAiIG9yICJYLVN0YXR1czogIiBvcgog ICAgICAgICAgICAgICAgICAgICMgICAgICAgIlgtTW96aWxsYS1TdGF0dXM6ICIgbGluZXMuCiAg ICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICAyIC0gQSBzdWJqZWN0 IGxpbmUgaW5kaWNhdGluZyB0aGlzIGlzIHRoZSBkdW1teSBtZXNzYWdlCiAgICAgICAgICAgICAg ICAgICAgIyAgICAgICBhdCB0aGUgc3RhcnQgKHR5cGljYWxseSwgYnV0IG5vdCBuZWNlc3Nhcmls eSkgb2YKICAgICAgICAgICAgICAgICAgICAjICAgICAgIHRoZSBNYm94LgogICAgICAgICAgICAg ICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIE9uY2Ugd2UgcmVhY2ggdGhlIGVuZCBvZiB0 aGUgaGVhZGVycywgd2Ugd2lsbCBjcnVuY2ggYW55CiAgICAgICAgICAgICAgICAgICAgIyBmbGFn cyB3ZSBmb3VuZCB0byBjcmVhdGUgYSBmaWxlIG5hbWUuICBUaGVuLCB1bmxlc3MgdGhpcyBpcwog ICAgICAgICAgICAgICAgICAgICMgdGhlIGR1bW15IG1lc3NhZ2Ugd2UgY3JlYXRlIHRoYXQgZmls ZSBhbmQgd3JpdGUgYWxsIHRoZQogICAgICAgICAgICAgICAgICAgICMgaGVhZGVycyB0byBpdC4K ICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBUaGVuIHdlIGNvbnRp bnVlIHJlYWRpbmcgdGhlIE1ib3gsIGNvbnZlcnRpbmcgIj5Gcm9tICIgdG8KICAgICAgICAgICAg ICAgICAgICAjICJGcm9tICIgYW5kIHdyaXRpbmcgaXQgdG8gdGhlIGZpbGUsIHVudGlsIHdlIHJl YWNoIG9uZSBvZjoKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyAg IDEgLSBBbm90aGVyICJGcm9tICIgbGluZSAoaW5kaWNhdGluZyB0aGUgc3RhcnQgb2YgYW5vdGhl cgogICAgICAgICAgICAgICAgICAgICMgICAgICAgbWVzc2FnZSkuCiAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICMgb3IKICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgIyAgIDIgLSBUaGUgZW5kIG9mIHRoZSBNYm94LgogICAgICAgICAgICAg ICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIEluIHRoZSBmb3JtZXIgY2FzZSwgd2hpY2gg d2UgZGV0ZWN0IGF0IHRoZSBzdGFydCBvZiB0aGUgbG9vcAogICAgICAgICAgICAgICAgICAgICMg d2UgbmVlZCB0byBjbG9zZSB0aGUgZmlsZSBhbmQgdG91Y2ggaXQgdG8gYWx0ZXIgaXRzIGRhdGUt dGltZS4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBJbiB0aGUg bGF0ZXIgY2FzZSwgd2UgYWxzbyBuZWVkIHRvIGNsb3NlIHRoZSBmaWxlIGFuZCB0b3VjaAogICAg ICAgICAgICAgICAgICAgICMgaXQgdG8gYWx0ZXIgaXRzIGRhdGUtdGltZSAtIGJ1dCB0aGlzIGlz IGJleW9uZCB0aGUgZW5kIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICMgbG9vcC4KCgogICAg ICAgICAgICAgICAgICAgICMgVmFyaWFibGVzCiAgICAgICAgICAgICAgICAgICAgIyAtLS0tLS0t LS0KCiAgICAgICAgbXkgJG1lc3NhZ2Vjb3VudCA9IDA7CgogICAgICAgICAgICAgICAgICAgICMg Rm9yIGdlbmVyYXRpbmcgdW5pcXVlIGZpbGVuYW1lcyBmb3IKICAgICAgICAgICAgICAgICAgICAj IGVhY2ggbWVzc2FnZS4gIEluaXRpYWxpc2UgaXQgaGVyZSB3aXRoCiAgICAgICAgICAgICAgICAg ICAgIyBudW1lcmljIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSAxOTcwLgogICAgICAgIG15ICR1bmlx dWUgPSB0aW1lOwoKICAgICAgICAgICAgICAgICAgICAjIE5hbWUgb2YgbWVzc2FnZSBmaWxlIHRv IGRlbGV0ZSBpZiB3ZSBmb3VuZCB0aGF0CiAgICAgICAgICAgICAgICAgICAgIyBpdCB3YXMgY3Jl YXRlZCBieSByZWFkaW5nIHRoZSBNYm94IGR1bW15IG1lc3NhZ2UuCgogICAgICAgIG15ICRkZWxl dGVkdW1teSA9ICcnOwoKICAgICAgICAgICAgICAgICAgICAjIFRvIHN0b3JlIHRoZSBjb21wbGV0 ZSAiRnJvbSAoYWRkcmVzcykgKGRhdGUtdGltZSkKICAgICAgICAgICAgICAgICAgICAjIHdoaWNo IGRlbGluZWF0ZXMgdGhlIHN0YXJ0IG9mIGVhY2ggbWVzc2FnZQogICAgICAgICAgICAgICAgICAg ICMgaW4gdGhlIE1ib3gKICAgICAgICBteSAkZnJvbWxpbmUgPSAnJzsKCgogICAgICAgICAgICAg ICAgICAgICMgU2V0IHRvIDEgd2hlbiB3ZSBhcmUgcmVhZGluZyB0aGUgaGVhZGVyIGxpbmVzLAog ICAgICAgICAgICAgICAgICAgICMgaW5jbHVkaW5nIHRoZSAiRnJvbSAiIGxpbmUuCiAgICAgICAg ICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgMCBtZWFucyB3ZSBhcmUgcmVhZGlu ZyB0aGUgbWVzc2FnZSBib2R5IGFuZCBsb29raW5nCiAgICAgICAgICAgICAgICAgICAgIyBmb3Ig YW5vdGhlciAiRnJvbSAiIGxpbmUuCgogICAgICAgIG15ICRpbmhlYWRlcnMgPSAwOwoKICAgICAg ICAgICAgICAgICAgICAjIFZhcmlhYmxlIHRvIGhvbGQgYWxsIGhlYWRlcnMgKGFwYXJ0IGZyb20K ICAgICAgICAgICAgICAgICAgICAjIHRoZSBmaXJzdCBsaW5lICJGcm9tIC4uLi4iIHdoaWNoIGlz IG5vdAogICAgICAgICAgICAgICAgICAgICMgcGFydCBvZiB0aGUgbWVzc2FnZSBpdHNlbGYuCiAg ICAgICAgbXkgJGhlYWRlcnMgPSAnJzsKCiAgICAgICAgICAgICAgICAgICAgIyBWYXJpYWJsZSB0 byBob2xkIHRoZSBhY2N1bXVsYXRlZCBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAgICAgIyB3 ZSBmaW5kIGluIGhlYWRlciBsaW5lcyBvZiB0aGUgdHlwZToKICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgIyAgICBTdGF0dXM6CiAgICAgICAgICAgICAgICAgICAgIyAg ICBYLVN0YXR1czoKICAgICAgICAgICAgICAgICAgICAjICAgIFgtTW96aWxsYS1TdGF0dXM6CiAg ICAgICAgICAgICAgICAgICAgIyAgICBYLUV2b2x1dGlvbjoKICAgICAgICBteSAkZmxhZ3MgPSAn JzsKCiAgICAgICAgICAgICAgICAgICAgIyBUbyBidWlsZCB0aGUgZmlsZSBuYW1lIGZvciB0aGUg bWVzc2FnZSBpbi4KICAgICAgICBteSAkbWVzc2FnZWZuID0gJyc7CgoKICAgICAgICAgICAgICAg ICAgICAjIFRoZSBkYXRlIHN0cmluZyBmcm9tIHRoZSAiRnJvbSAiIGxpbmUgb2YgZWFjaAogICAg ICAgICAgICAgICAgICAgICMgbWVzc2FnZSB3aWxsIGJlIHdyaXR0ZW4gaGVyZSAtIGFuZCB1c2Vk IGJ5CiAgICAgICAgICAgICAgICAgICAgIyB0b3VjaCB0byBhbHRlciB0aGUgZGF0ZS10aW1lIG9m IGVhY2ggbWVzc2FnZQogICAgICAgICAgICAgICAgICAgICMgZmlsZS4gIFB1dCBub24tZGF0ZSB0 ZXh0IGhlcmUgdG8gbWFrZSBpdAogICAgICAgICAgICAgICAgICAgICMgc3BpdCB0aGUgZHVtbXkg aWYgbXkgY29kZSBmYWlscyB0byBmaW5kIGEKICAgICAgICAgICAgICAgICAgICAjIGRhdGUgdG8g d3JpdGUgaW50byB0aGlzLgoKICAgICAgICBteSAkcmVjZWl2ZWRhdGUgPSAnQm9ndXMnOwoKCSMg VGhlIHN1YmplY3Qgb2YgdGhlIG1lc3NhZ2UKCW15ICRzdWJqZWN0ID0gJyc7CgoJbXkgJHByZXZp b3VzX2xpbmVfd2FzX2VtcHR5ID0gMTsKCiAgICAgICAgICAgICAgICAgICAgIyBXZSByZWNvcmQg dGhlIG1lc3NhZ2Ugc3RhcnQgbGluZSBoZXJlLCBmb3IgZXJyb3IKICAgICAgICAgICAgICAgICAg ICAjIHJlcG9ydGluZy4KICAgICAgICBteSAkc3RhcnRsaW5lOwoKICAgICAgICAgICAgICAgICAg ICAjIElmIGRlZmluZWQsIHdlIHVzZSB0aGlzIGFzIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhl CiAgICAgICAgICAgICAgICAgICAgIyBtZXNzYWdlIGJvZHkgcmF0aGVyIHRoYW4gbG9va2luZyBm b3IgYSAvXkZyb20gLyBsaW5lLgogICAgICAgIG15ICRjb250ZW50bGVuZ3RoOwoKCQkJICAgICMg QSBGcm9tIGxpbmVzIGNhbiBlaXRoZXIgb2NjdXIgYXMgdGhlIGZpcnN0CgkJCSAgICAjIGxpbmUg b2YgYSBmaWxlLCBvciBhZnRlciBhbiBlbXB0eSBsaW5lLgoJCQkgICAgIyBNb3N0IG1haWwgc3lz dGVtcyB3aWxsIHF1b3RlIGFsbCBGcm9tIGxpbmVzCgkJICAgICAgICAgICAgIyBhcHBlYXJpbmcg aW4gdGhlIG1lc3NhZ2UsIGJ1dCBzb21lIHdpbGwgb25seQoJCQkgICAgIyBkbyBpdCB3aGVuIG5l Y2Vzc2FyeS4KCQkJICAgICMgU2luY2Ugd2UgaW5pdGlhbGlzZSB0aGUgdmFyaWFibGUgdG8gdHJ1 ZSwKCQkJICAgICMgd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBmb3IgYmVnaW5uaW5nIG9mIGZpbGUu CgogICAgICAgIHdoaWxlKDxNQk9YPikKICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIGV4Y2hhbmdlIHBvc3NpYmxlIFdpbmRvd3MgRU9MIChDUkxGKSB3aXRoIFVuaXggRU9M IChMRikKICAgICAgICAgICAgJF8gPX4gcy9cclxuJC9cbi87CgogICAgICAgICAgICBpZiAoIC9e RnJvbSAvCgkJJiYgJHByZXZpb3VzX2xpbmVfd2FzX2VtcHR5CgkJJiYgKCFkZWZpbmVkICRjb250 ZW50bGVuZ3RoKSAKCSAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgV2UgYXJlIHJlYWRpbmcgdGhlICJGcm9tICIgbGluZSB3aGljaCBoYXMgYW4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgZW1haWwgYWRkcmVzcyBmb2xsb3dlZCBieSBhIHJl Y2VpdmUgZGF0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVHVybiBvbiB0aGUgJGlu aGVhZGVycyBmbGFnIHVudGlsIHdlIHJlYWNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IHRoZSBlbmQgb2YgdGhlIGhlYWRlcnMuCgogICAgICAgICAgICAgICAgJGluaGVhZGVycyA9IDE7 CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZWNvcmQgdGhlIG1lc3NhZ2Ugc3RhcnQg bGluZQoKICAgICAgICAgICAgICAgICRzdGFydGxpbmUgPSAkLjsKCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIElmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBydW4gdGhyb3VnaCB0aGUgbG9v cAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGVuIHRoaXMgbWVhbnMgd2UgaGF2ZSBh bHJlYWR5IGJlZW4gd29ya2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvbiBhIG1l c3NhZ2UuCgogICAgICAgICAgICAgICAgaWYgKCRtZXNzYWdlY291bnQgPiAwKQogICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBzbywgdGhlbiBjbG9zZSB0 aGF0IG1lc3NhZ2UgZmlsZSBhbmQgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1 c2UgdXRpbWUgdG8gY2hhbmdlIGl0cyBkYXRlLXRpbWUuCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdGUgdGhpcyBjb2RlIHNob3Vs ZCBiZSBkdXBsaWNhdGVkIHRvIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBz YW1lIHRoaW5nIGF0IHRoZSBlbmQgb2YgdGhlIHdoaWxlIGxvb3AKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgc2luY2Ugd2UgbXVzdCBjbG9zZSBhbmQgdG91Y2ggdGhlIGZpbmFsIG1lc3Nh Z2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmlsZSB3ZSB3ZXJlIHdyaXRpbmcgd2hl biB3ZSBoaXQgdGhlIGVuZCBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTWJv eCBmaWxlLgoKICAgICAgICAgICAgICAgICAgICBjbG9zZSAoT1VUKTsKCQkgICAgaWYgKCRtZXNz YWdlZm4gbmUgJycpIHsKCQkJbXkgJHQgPSBzdHIydGltZSgkcmVjZWl2ZWRhdGUpOwoJCQl1dGlt ZSAkdCwgJHQsICRtZXNzYWdlZm47CgkJICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIEJlY2F1c2Ugd2Ugb3BlbmVkIHRoZSBNYm94IGZpbGUgd2l0 aG91dCBhbnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUsIEkgdGhpbmsg dGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgaXRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IGN1cnJlbnQgbGluZSBpbiBQZXJsJ3MgZGVmYXVsdCB2YXJpYWJsZSAiJF8iLgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBTbyBhbGwgc29ydHMgb2YgcGF0dGVybiBtYXRjaGluZyBtYWdp YyB3b3JrcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkaXJlY3RseSBvbiBpdC4KCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGFyZSBjdXJyZW50bHkgcmVhZGluZyB0aGUg Zmlyc3QgbGluZSBzdGFydGluZyB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICJG cm9tICIgd2hpY2ggY29udGFpbnMgdGhlIGRhdGUgd2Ugd2FudC4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyB3aWxsIGJlIG9m IHRoZSBmb3JtOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAgICAgRnJvbSBkZHVja0B0ZXN0Lm9yZyBXZWQgTm92IDI0IDExOjA1OjM1 IDE5OTkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgYXQgbGVhc3Qgd2l0aCBVVy1JTUFQLgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBIb3dldmVyLCBJIGRpZCBmaW5kIGEg bmFzdHkgZXhjZXB0aW9uIHRvIHRoaXMgaW4gbXkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgdGVzdHMsIG9mIHRoZSBmb3JtOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyAgICJib3VuY2UtTXVzaWNOZXdzbGV0dGVyIDUtcnc9 dGVzdC5vcmciQGFubm91bmNlMi5tcDMuY29tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbWFrZXMgaXQgdHJpY2tpZXIgdG8g Z2V0IHJpZCBvZiB0aGUgZW1haWwgYWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgYnV0IEkgZGlkIGZpbmQgYSB3YXkuICBJIGNhbid0IHJ1bGUgb3V0IHRoYXQgdGhlcmUgd291 bGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYmUgc29tZSBhZGRyZXNzIGxpa2UgdGhp cyB3aXRoIGFuICJAIiBpbiB0aGUgcXVvdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IHBvcnRpb24gdG9vLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB0ZXN0aW5nIHdpdGggYW4gb2xkIEluYm94 IE1ib3ggZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSSBhbHNvIGZvdW5kIGFu IGluc3RhbmNlIHdoZXJlIHRoZSBlbWFpbCBhZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIGhhZCBubyBAIHNpZ24gYXQgYWxsLiAgSXQgd2FzIGp1c3QgYW4gZW1haWwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgYWNjb3VudCBuYW1lLCB3aXRoIG5vIGhvc3QuCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEkg Y291bGQgc2VhcmNoIGZvciB0aGUgZGF5IG9mIHRoZSB3ZWVrLiAgSWYgSSBza2lwcGVkCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIGF0IGxlYXN0IG9uZSB3b3JkIG9mIG5vbi13aGl0ZXNw YWNlICgxIG9yIG1vcmUgY29udGlndW91cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBu b24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzKSB0aGVuIHNlYXJjaGVkIGZvciBhIGRheSBvZgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgd2VlaywgdGhlbiBJIHNob3VsZCBiZSBhYmxl IHRvIGF2b2lkIGFsbW9zdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBldmVyeSBpbnN0 YW5jZSBvZiBhIGRheSBvZiB0aGUgd2VlayBhcHBlYXJpbmcgaW4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgdGhlIGVtYWlsIGFkZHJlc3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERvIEkgbmVlZCBhIGZhaWxzYWZlIGFy cmFuZ2VtZW50IHRvIHByb3ZpZGUgc29tZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBv dGhlciBkYXRlIHRvIHRvdWNoIGlmIEkgZG9uJ3QgZ2V0IHdoYXQgc2VlbXMgbGlrZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBhIGRhdGUgaW4gbXkgcmVzdWx0aW5nIHN0cmluZz8gIEZv ciBub3csIG5vLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyBJIHdpbGwgdGFrZSBvbmUgYXBwcm9hY2ggaWYgdGhlcmUgaXMgYW4gQCBp biB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIkZyb20gIiBsaW5lIGFuZCBhbm90 aGVyIChqdXN0IHNraXAgdGhlIGZpcnN0IHdvcmQKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgYWZ0ZXIgIkZyb20gIikgaWYgdGhlcmUgaXMgbm8gQCBpbiB0aGUgbGluZS4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgSSBr bmV3IG1vcmUgYWJvdXQgUGVybCBJIHdvdWxkIHByb2JhYmx5IGRvIGl0IGluCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIGEgbW9yZSBlbGVnYW50IHdheS4KCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIENvcHkgdGhlIGN1cnJlbnQgbGluZSBpbnRvICRmcm9tbGluZS4KCiAgICAg ICAgICAgICAgICAkZnJvbWxpbmUgPSAkXzsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IE5vdyBnZXQgcmlkIG9mIHRoZSAiRnJvbSAiLiAiID1+IHMiIG1lYW5zIHN1YnN0aXR1dGUuCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZpbmQgdGhlIHdvcmQgIkZyb20gIiBhdCB0aGUg c3RhcnQgb2YgdGhlIGxpbmUgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcGxh Y2UgaXQgd2l0aCBub3RoaW5nLiAgVGhlIG5vdGhpbmcgaXMgd2hhdCBpcwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyBiZXR3ZWVuIHRoZSBzZWNvbmQgYW5kIHRoaXJkIHNsYXNoLgoKICAg ICAgICAgICAgICAgICRmcm9tbGluZSA9fiBzL15Gcm9tIC8vIDsKCgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyBMaWtld2lzZSBnZXQgcmlkIG9mIHRoZSBlbWFpbCBhZGRyZXNzLgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGZpcnN0IHNlY3Rpb24gaXMgaWYgd2UgZGV0 ZXJtaW5lIHRoZXJlIGlzIG9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3IgbW9y ZSAuIC4gLiApICJAIiBjaGFyYWN0ZXJzIGluIHRoZSBsaW5lLCB3aGljaAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyB3b3VsZCBub3JtYWxseSBiZSB0aGUgY2FzZS4KCiAgICAgICAgICAg ICAgICBpZiAoJGZyb21saW5lID1+IG0vQC8pCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIFRoZSBsaW5lIGhhcyBhdCBsZWFzdCBvbmUgIkAiIGluIGl0LCBz byB3ZSBhc3N1bWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhpcyBpcyBpbiB0aGUg bWlkZGxlIG9mIGFuIGVtYWlsIGFkZHJlc3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIElmIHRoZSBlbWFpbCBhZGRyZXNzIGhhZCBu byBzcGFjZXMsIHRoZW4gd2UgY291bGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZ2V0 IHJpZCBvZiB0aGUgd2hvbGUgdGhpbmcgYnkgc2VhcmNoaW5nIGZvciBhbnkgbnVtYmVyCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIG9mIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgKFxT KSBjb250aWd1b3VzbHksIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGVuIEkg dGhpbmsgYSBzcGFjZS4gIFN1YnNpdHV0ZSBub3RoaW5nIGZvciB0aGlzLgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAkZnJvbWxp bmUgPX4gcy8oXFMpKyAvLyAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIEJ1dCB3ZSBuZWVkIHNvbWV0aGluZyB0byBtYXRjaCBh bnkgbnVtYmVyIG9mIG5vbi1ACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNoYXJhY3Rl cnMsIHRoZW4gdGhlICJAIiBhbmQgdGhlbiBhbGwgdGhlIG5vbi13aGl0ZXNwYWNlCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIGNoYXJhY3RlcnMgZnJvbSB0aGVyZSAod2hpY2ggdGFrZXMg dXMgdG8gdGhlIGVuZCBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAidGVzdC5vcmci KSBhbmQgdGhlbiB0aGUgc3BhY2UgZm9sbG93aW5nIHRoYXQuCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEEgdHV0b3JpYWwgb24gcmVn dWxhciBleHByZXNzaW9ucyBpczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgICAgaHR0cDovL3d3dy5wZXJsZG9jLmNvbS9wZXJsNS42 LjEvcG9kL3BlcmxyZXR1dC5odG1sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIEdldCByaWQgb2YgYWxsIG5vbi1AIGNoYXJhY3RlcnMg dXAgdG8gdGhlIGZpcnN0ICJAIjoKCiAgICAgICAgICAgICAgICAgICAgJGZyb21saW5lID1+IHMv W15AXSsvLzsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBHZXQgcmlkIG9mIHRoZSAi QCIuCgogICAgICAgICAgICAgICAgICAgICRmcm9tbGluZSA9fiBzL0AvLzsKICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgdGhlcmUgd2FzIGFuICJAIiBp biB0aGUgbGluZSwgdGhlbiB3ZSBoYXZlIG5vdwogICAgICAgICAgICAgICAgICAgICAgICAgICAg IyByZW1vdmVkIHRoZSBmaXJzdCBvbmUgKGxldHMgaG9wZSB0aGVyZSBhcmVuJ3QgbW9yZSEpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCBldmVyeXRoaW5nIHdoaWNoIHByZWNlZGVk IGl0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwoJCQkgICAgIyB3ZSBub3cgcmVtb3Zl IGVpdGhlciBzb21ldGhpbmcgbGlrZQoJCQkgICAgIyAnKGZvbyBiYXIpJy4gZWcuICcobm8gbWFp bCBhZGRyZXNzKScsCgkJCSAgICAjIG9yIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlICdAJyB1cCB0byB0 aGUgdHJhaWxpbmcKCQkJICAgICMgdGltZXpvbmUKCQkJICAgICMKCQkJICAgICMgRklYTUU6IGFs bCB0aG9zZSByZWdleHAgc2hvdWxkIGJlIGNvbWJpbmVkIHRvIGp1c3Qgb25lIHNpbmdsZSBvbmUK CgkJJGZyb21saW5lID1+IHMvKFwoKFxTKnwgKStcKXxcUyspICovLzsKCgkJY2hvbXAgJGZyb21s aW5lOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU3Rhc2ggdGhlIGRhdGUtdGltZSBm b3IgbGF0ZXIgdXNlLiAgV2Ugd2lsbCB1c2UgaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgdG8gdG91Y2ggdGhlIGZpbGUgYWZ0ZXIgd2UgaGF2ZSBjbG9zZWQgaXQuCgogICAgICAgICAg ICAgICAgJHJlY2VpdmVkYXRlID0gJGZyb21saW5lOwoJCQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIyBEZWJ1Z2dpbmcgbGluZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIHByaW50ICIkcmVjZWl2ZWRhdGUgaXMgdGhlIHJl Y2VpdmVkYXRlIG9mIG1lc3NhZ2UgJG1lc3NhZ2Vjb3VudC5cbiI7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjICRyZWNlaXZlZGF0ZSA9ICJXZWQgTm92IDI0IDExOjA1OjM1IDE5OTkiOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAg IyBUbyBsb29rIGF0IHRoZSBleGFjdCBkYXRlLXRpbWUgb2YgZmlsZXM6CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgbHMgLWxGYSAt LWZ1bGwtdGltZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyBFbmQgb2YgaGFuZGxpbmcgdGhlICJGcm9tICIgbGluZS4KICAgICAgICAg ICAgfQoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdyBwcm9jZXNzIGhlYWRlciBs aW5lcyB3aGljaCBhcmUgbm90IHRoZSAiRnJvbSAiIGxpbmUuCgogICAgICAgICAgICBpZiAoICAg ICgkaW5oZWFkZXJzIGVxIDEpCiAgICAgICAgICAgICAgICAgJiYgKCEgL15Gcm9tIC8pCiAgICAg ICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBO b3cgd2UgYXJlIHJlYWRpbmcgdGhlIGhlYWRlciBsaW5lcyBhZnRlciB0aGUgIkZyb20gIiBsaW5l LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBLZWVwIGxvb2tpbmcgZm9yIHRoZSBibGFu ayBsaW5lIHdoaWNoIGluZGljYXRlcyB0aGUgZW5kIG9mIHRoZQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBoZWFkZXJzLgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICIuPSIg bWVhbnMgYXBwZW5kIHRoZSBjdXJyZW50IGxpbmUgdG8gdGhlICRoZWFkZXJzCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAg IwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGb3Igc29tZSByZWFzb24sIEkgd2FzIGdl dHRpbmcgdHdvIGJsYW5rIGxpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGF0IHRo ZSBlbmQgb2YgdGhlIGhlYWRlcnMsIHJhdGhlciB0aGFuIG9uZSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgc28gSSBkZWNpZGVkIG5vdCB0byByZWFkIGluIHRoZSBibGFuayBsaW5lCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdoaWNoIHRlcm1pbmF0ZXMgdGhlIGhlYWRlcnMu CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjIERlbGV0ZSB0aGUgInVubGVzcyAoJF8gZXEgIlxuIikiIHRvIGdldCByaWQKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgb2YgdGhpcyBrbHVkZ2UuCgogICAgICAgICAgICAgICAgJGhl YWRlcnMgLj0gJF8gdW5sZXNzICgkXyBlcSAiXG4iKTsKCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIE5vdyBzY2FuIHRoZSBsaW5lIGZvciB2YXJpb3VzIHN0YXR1cyBmbGFncwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBhbmQgdG8gZmluZSB0aGUgU3ViamVjdCBsaW5lLgoKICAg ICAgICAgICAgICAgICRmbGFncyAgLj0gJDEgaWYgL15TdGF0dXM6IChbQS1aXSspLzsKICAgICAg ICAgICAgICAgICRmbGFncyAgLj0gJDEgaWYgL15YLVN0YXR1czogKFtBLVpdKykvOwogICAgICAg ICAgICAgICAgaWYgKC9eWC1Nb3ppbGxhLVN0YXR1czogKFswLTlhLWZdezR9KS9pKQogICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAkZmxhZ3MgLj0gJ1InIGlmIChoZXgoJDEpICYg MHgwMDAxKTsKICAgICAgICAgICAgICAgICAgJGZsYWdzIC49ICdBJyBpZiAoaGV4KCQxKSAmIDB4 MDAwMik7CiAgICAgICAgICAgICAgICAgICRmbGFncyAuPSAnRCcgaWYgKGhleCgkMSkgJiAweDAw MDgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYoL15YXC1Fdm9sdXRpb246 XHMrXHd7OH1cLShcd3s0fSkvb2kpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgJGIgPSBwYWNrKCJINCIsICQxKTsgI3BhY2sgaXQgYXMgNCBkaWdpdCBoZXggKDB4MDAwMCkK ICAgICAgICAgICAgICAgICAgICAkYiA9IHVucGFjaygiQjMyIiwgJGIpOyAjdW5wYWNrIGludG8g Yml0IHN0cmluZwoKICAgICAgICAgICAgICAgICAgICAjICJ1c3VhbGx5IiBvbmx5IHRoZSByaWdo dCBtb3N0IHNpeCBiaXRzIGFyZSB1c2VkCiAgICAgICAgICAgICAgICAgICAgIyBob3dldmVyLCBJ IGhhdmUgY29tZSBhY3Jvc3MgYSBzZXZlbnRoIGJpdCBpbgogICAgICAgICAgICAgICAgICAgICMg YWJvdXQgMTUgKG91dCBvZiAxMCwwMDApIG1lc3NhZ2VzIHdpdGggdGhpcyBiaXQKICAgICAgICAg ICAgICAgICAgICAjIGFjdGl2YXRlZC4KICAgICAgICAgICAgICAgICAgICAjIEkgaGF2ZSBub3Qg Zm91bmQgYW55IGRvY3VtZW50YXRpb24gaW4gdGhlIHNvdXJjZS4KICAgICAgICAgICAgICAgICAg ICAjIElmIHlvdSBmaW5kIG91dCB3aGF0IGl0IGRvZXMsIHBsZWFzZSBsZXQgbWUga25vdy4KCiAg ICAgICAgICAgICAgICAgICAgIyBOb3RlczoKICAgICAgICAgICAgICAgICAgICAjICAgRXZvbHV0 aW9uIDEuNCBkb2VzIG1hcmsgZm9yd2FyZGVkIG1lc3NhZ2VzLgogICAgICAgICAgICAgICAgICAg ICMgICBUaGUgc2l4dGggYml0IGlzIHRvIGRlbm90ZSBhbiBhdHRhY2htZW50CgogICAgICAgICAg ICAgICAgICAgICRmbGFncyAuPSAnQScgaWYoJGIgPX4gL1swMV17MTV9MS8pOyAjcmVwbGllZAog ICAgICAgICAgICAgICAgICAgICRmbGFncyAuPSAnRCcgaWYoJGIgPX4gL1swMV17MTR9MVswMV17 MX0vKTsgI2RlbGV0ZWQKICAgICAgICAgICAgICAgICAgICAkZmxhZ3MgLj0gJ1QnIGlmKCRiID1+ IC9bMDFdezEzfTFbMDFdezJ9Lyk7ICNkcmFmdAogICAgICAgICAgICAgICAgICAgICRmbGFncyAu PSAnRicgaWYoJGIgPX4gL1swMV17MTJ9MVswMV17M30vKTsgI2ZsYWdnZWQKICAgICAgICAgICAg ICAgICAgICAkZmxhZ3MgLj0gJ1InIGlmKCRiID1+IC9bMDFdezExfTFbMDFdezR9Lyk7ICNzZWVu L3JlYWQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRzdWJqZWN0ID0gJDEgaWYg L15TdWJqZWN0OiAoLiopJC87CgkJaWYgKCR1c2VfY2wgZXEgMSkKCQl7CiAgICAgICAgICAgICAg ICAJJGNvbnRlbnRsZW5ndGggPSAkMSBpZiAvXkNvbnRlbnQtTGVuZ3RoOiAoXGQrKSQvOwoJCX0K CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdyBsb29rIG91dCBmb3IgdGhlIGVuZCBv ZiB0aGUgaGVhZGVycyAtIGEgYmxhbmsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGlu ZS4gIFdoZW4gd2UgZmluZCBpdCwgY3JlYXRlIHRoZSBmaWxlIG5hbWUgYW5kCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIGFuYWx5c2UgdGhlIFN1YmplY3QgbGluZS4KCiAgICAgICAgICAg ICAgICBpZiAoJF8gZXEgIlxuIikKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgV2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGhlYWRlcnMuICBTZXQgdGhlCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjICRpbmhlYWRlcnMgZmxhZyBiYWNrIHRvIDAuCgog ICAgICAgICAgICAgICAgICAgICRpbmhlYWRlcnMgPSAwOwoKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgSW5jbHVkZSB0aGUgY3VycmVudCBuZXdsaW5lIGluIHRoZSBjb250ZW50IGxlbmd0 aAoKICAgICAgICAgICAgICAgICAgICArKyRjb250ZW50bGVuZ3RoIGlmIGRlZmluZWQgJGNvbnRl bnRsZW5ndGg7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDcmVhdGUgdGhlIGZpbGUg bmFtZSBmb3IgdGhlIGN1cnJlbnQgbWVzc2FnZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQSBzaW1wbGUgdmVyc2lvbiBvZiB0aGlz IHdvdWxkIGJlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAgICRtZXNzYWdlZm4gPSAiY3VyLyR1bmlxdWUuJG1lc3NhZ2Vjb3VudC5t Ym94OjIsIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgVGhpcyB3b3VsZCBjcmVhdGUgbmFtZXMgd2l0aCAkbWVzc2FnZWNvdW50IHZh bHVlcyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAxLCAyLCBldGMuICBCdXQgZm9y IG5lYXRuZXNzIHdoZW4gbG9va2luZyBhdCBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IGRpcmVjdG9yeSBvZiBzdWNoIG1lc3NhZ2VzLCBzb3J0ZWQgYnkgZmlsZW5hbWUsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIEkgd2FudCB0byBoYXZlIGxlYWRpbmcgemVyb2VzIG9uIG1l c3NhZ2UgY291bnQsIHNvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoYXQgdGhleSB3 b3VsZCBiZSAwMDAwMDEgZXRjLiAgVGhpcyBtYWtlcyB0aGVtCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjIGFwcGVhciBpbiBtZXNzYWdlIG9yZGVyIHJhdGhlciB0aGFuIDEgYmVpbmcgYWZ0 ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMTkgZXRjLiAgU28gdGhpcyBpcyBnb29k IGZvciB1cCB0byA5OTksOTk5IG1lc3NhZ2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IGluIGEgbWFpbGJveC4gIEl0IGlzIGEgY29zbWV0aWMgbWF0dGVyIGZvciBhIHBlcnNvbgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBsb29raW5nIGludG8gdGhlIE1haWxkaXIgZGlyZWN0 b3J5IG1hbnVhbGx5LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUbyBkbyB0aGlzLCB1 c2Ugc3ByaW50ZiBpbnN0ZWFkIHdpdGggIiUwNmQiIGZvcgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIyA2IGNoYXJhY3RlcnMgb2YgemVyby1wYWRkaW5nOgoKICAgICAgICAgICAgCQkkbWVz c2FnZWZuID0gc3ByaW50ZiAoImN1ci8lZC4lMDZkLm1ib3g6MiwiLCAkdW5pcXVlLCAkbWVzc2Fn ZWNvdW50KSA7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQXBwZW5kIGZsYWcgY2hh cmFjdGVycyB0byB0aGUgZW5kIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBm aWxlbmFtZSwgYWNjb3JkaW5nIHRvIGZsYWcgY2hhcmFjdGVycwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBjb2xsZWN0ZWQgZnJvbSB0aGUgbWVzc2FnZSBoZWFkZXJzCgogICAgICAgICAg ICAgICAgICAgICRtZXNzYWdlZm4gLj0gJ0YnIGlmICRmbGFncyA9fiAvRi87ICMgRmxhZ2dlZC4K ICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZWZuIC49ICdSJyBpZiAkZmxhZ3MgPX4gL0EvOyAj IFJlcGxpZWQgdG8uCiAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2VmbiAuPSAnUycgaWYgJGZs YWdzID1+IC9SLzsgIyBTZWVuIG9yIFJlYWQuCiAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2Vm biAuPSAnVCcgaWYgJGZsYWdzID1+IC9ELzsgIyBUYWdnZWQgZm9yIGRlbGV0aW9uLgoKCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIE9wZW5zIGZpbGVuYW1lICRtZXNzYWdlZm4gZm9yIG91 dHB1dCAoPikgd2l0aCBmaWxlaGFuZGxlIE9VVC4KCiAgICAgICAgICAgICAgICAgICAgb3BlbihP VVQsICI+JG1lc3NhZ2VmbiIpIG9yIGRpZSgiRmF0YWw6IHVuYWJsZSB0byBjcmVhdGUgbmV3IG1l c3NhZ2UgJG1lc3NhZ2VmbiIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ291bnQg dGhlIG1lc3NhZ2VzLgoKICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZWNvdW50Kys7CgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBPbmx5IGZvciB0aGUgZmlyc3QgbWVzc2FnZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgdG8gc2VlIGlmIGl0IGlzIGEgZHVtbXku CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERlbGV0ZSB0aGUgbWVzc2FnZSBmaWxlIHdl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGp1c3QgY3JlYXRlZCBpZiBpdCB3YXMgZm9y IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkdW1teSBtZXNzYWdlIGF0IHRoZSBz dGFydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvZiB0aGUgTWJveC4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIHNl YXJjaCB0ZXJtcyBhcyByZXF1aXJlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhl IGxhc3QgMiBsaW5lcyBhcmUgZm9yIHJlbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICJtIiBtZWFucyBtYXRjaCB0aGUgcmVndWxh ciBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBidXQgd2UgY2FuIGRv IHdpdGhvdXQgaXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjIERvIEkgbmVlZCB0byBlc2NhcGUgdGhlICcgaW4gIkRPTidUIj8KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgSSBkaWRuJ3QgaW4gdGhlIG9yaWdpbmFsIHZlcnNp b24uCgogICAgICAgICAgICAgICAgICAgIGlmICggICAoKCRtZXNzYWdlY291bnQgPT0gMSkgJiYg ZGVmaW5lZCgkc3ViamVjdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICYmICgkc3ViamVjdCA9 fiBtL15ET04nVCBERUxFVEUgVEhJUyBNRVNTQUdFIC0tIEZPTERFUiBJTlRFUk5BTCBEQVRBLykK ICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBTdGFzaCB0aGUgZmlsZSBuYW1lIG9mIHRoZSBkdW1teSBtZXNz YWdlIHNvIHdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNhbiBkZWxldGUgaXQgbGF0 ZXIuCgogICAgICAgICAgICAgICAgICAgICAgICAkZGVsZXRlZHVtbXkgPSAiJG1lc3NhZ2VmbiI7 CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUHJp bnQgdGhlIGNvbGxlY3RlZCBoZWFkZXJzIHRvIHRoZSBtZXNzYWdlIGZpbGUuCgogICAgICAgICAg ICAgICAgICAgIHByaW50IE9VVCAiJGhlYWRlcnMiOwoKCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIENsZWFyICRoZWFkZXJzIGFuZCAkZmxhZ3MgcmVhZHkgZm9yIHRoZSBuZXh0IG1lc3Nh Z2UuCgogICAgICAgICAgICAgICAgICAgICRoZWFkZXJzID0gJyc7CiAgICAgICAgICAgICAgICAg ICAgJGZsYWdzID0gJyc7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBFbmQgb2YgcHJv Y2Vzc2luZyB0aGUgaGVhZGVycyBvbmNlIHdlIGZvdW5kIHRoZQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBibGFuayBsaW5lIHdoaWNoIHRlcm1pbmF0ZWQgdGhlbQogICAgICAgICAgICAg ICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRW5kIG9mIGRlYWxpbmcgd2l0aCB0 aGUgaGVhZGVycy4KICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIGlmICggJGluaGVhZGVycyBl cSAwKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBhcmUg bm93IHByb2Nlc3NpbmcgdGhlIG1lc3NhZ2UgYm9keS4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm93IHdlIGhhdmUgcGFzc2VkIHRo ZSBoZWFkZXJzIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvdXRwdXQgZmls ZSwgd2Ugc2NhbiB1bnRpbCB0aGUgd2hpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg bG9vcCBmaW5kcyBhbm90aGVyICJGcm9tICIgbGluZS4KCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIERlY3JlbWVudCBvdXIgY29udGVudCBsZW5ndGggaWYgd2UncmUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgdXNpbmcgaXQgdG8gZmluZCB0aGUgZW5kIG9mIHRoZSBtZXNzYWdl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJvZHkKCiAgICAgICAgICAgICAgICBpZiAo ZGVmaW5lZCAkY29udGVudGxlbmd0aCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg RGVjcmVtZW50IG91ciAkY29udGVudGxlbmd0aCB2YXJpYWJsZQoKICAgICAgICAgICAgICAgICAg ICAkY29udGVudGxlbmd0aCAtPSBsZW5ndGgoJF8pOwoKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgVGhlIHByb3BlciBlbmQgZm9yIGEgbWVzc2FnZSB3aXRoIENvbnRlbnQtTGVuZ3RoCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNwZWNpZmllZCBpcyB0aGUgJGNvbnRlbnRsZW5n dGggdmFyaWFibGUgc2hvdWxkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlIGV4YWN0 bHkgLTEgYW5kIHdlIHNob3VsZCBiZSBvbiBhIGJhcmUKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgbmV3bGluZS4gIE5vdGUgdGhhdCB0aGUgYmFyZSBuZXdsaW5lIGlzIG5vdAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBwcmludGVkIHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQg bWVzc2FnZSBhcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpdCdzIGFjdHVhbGx5IGEg bWVzc2FnZSBzZXBhcmF0b3IgaW4gdGhlIG1ib3gKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgZm9ybWF0IHJhdGhlciB0aGFuIHBhcnQgb2YgdGhlIG1lc3NhZ2UuICBUaGUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgbmV4dCBsaW5lIF9zaG91bGRfIGJlIGEgRnJvbV8gbGluZSwg YnV0IGp1c3QgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2FzZSB0aGUgQ29udGVu dC1MZW5ndGggaGVhZGVyIGlzIGluY29ycmVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAg IyAoZS5nLiBhIGNvcnJ1cHQgbWFpbGJveCksIHdlIGp1c3QgY29udGludWUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgcHV0dGluZyBsaW5lcyBpbnRvIHRoZSBjdXJyZW50IG1lc3NhZ2Ug dW50aWwgd2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2VlIHRoZSBuZXh0IEZyb21f IGxpbmUuCgogICAgICAgICAgICAgICAgICAgIGlmICgkY29udGVudGxlbmd0aCA8IDApIHsKICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb250ZW50bGVuZ3RoID09IC0xICYmICRfIGVxICJc biIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50bGVuZ3RoID0gdW5kZWY7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwoJCQl9CiAgICAgICAgICAgICAgICAg ICAgICAgICRjb250ZW50bGVuZ3RoID0gdW5kZWY7CiAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgV2Ugd2FudCB0byBjb3B5IGV2ZXJ5IHBhcnQgb2YgdGhlIG1lc3Nh Z2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYm9keSB0byB0aGUgb3V0cHV0IGZpbGUs IGV4Y2VwdCBmb3IgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHF1b3RlZCAiPkZy b20gIiBsaW5lcywgd2hpY2ggd2FzIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3 YXkgdGhlIElNQVAgc2VydmVyIGVuY29kZWQgYm9keSBsaW5lcwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBzdGFydGluZyB3aXRoICJGcm9tICIuCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFBhdHRlcm4gbWF0Y2hpbmcgUGVy bCBtYWppayB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXQgcmlkIG9mIGFuIE1i b3ggcXVvdGVkIEZyb20uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIFRoaXMgd29ya3Mgb24gdGhlIGRlZmF1bHQgdmFyaWFibGUgIiRf IiB3aGljaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb250YWlucyB0aGUgdGV4dCBm cm9tIHRoZSBNYm94IG1haWxib3ggLSBJCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGd1 ZXNzIHRoaXMgaXMgdGhlIGNhc2UgYmVjYXVzZSBvZiBvdXIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgKG9wZW4oTUJPWCAuLi4uKSBsaW5lIGFib3ZlLCB3aGljaCBkaWQgbm90CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIGFzc2lnbiB0aGlzIHRvIGFueXRoaW5nIGVsc2UsIHNv IGl0IHdvdWxkIGdvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvIHRoZSBkZWZhdWx0 IHZhcmlhYmxlLiAgVGhpcyBlbmFibGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlu c2NydXRhYmx5IHRlcnNlIFBlcmxpc21zIHRvIGZvbGxvdy4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgInMiIG1lYW5zICJTdWJzaXR1 dGUiIGFuZCBpdCBsb29rcyBmb3IgYW55CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9j Y3VycmVuY2Ugb2YgIj5Gcm9tIiBzdGFydGluZyBhdCB0aGUgc3RhcnQKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICMgb2YgdGhlIGxpbmUuICBXaGVuIGl0IGZpbmRzIHRoaXMsIGl0IHJlcGxh Y2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGl0IHdpdGggIkZyb20iLgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTbyB0 aGlzIGZpbmRzIGFsbCBpbnN0YW5jZXMgaW4gdGhlIE1ib3ggbWVzc2FnZQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyB3aGVyZSB0aGUgb3JpZ2luYWwgbGluZSBzdGFydGVkIHdpdGggdGhl IHdvcmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIkZyb20iIGJ1dCB3YXMgY29udmVy dGVkIHRvICI+RnJvbSIgaW4gb3JkZXIgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg bm90IGJlIG1pc3Rha2VuIGZvciB0aGUgIkZyb20gLi4uIiBsaW5lIHdoaWNoCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIGlzIHVzZWQgdG8gZGVtYXJrIGVhY2ggbWVzc2FnZSBpbiB0aGUg TWJveC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyB3YXMgd2FzIGEgZGVzdHJ1 Y3RpdmUgY29udmVyc2lvbiBiZWNhdXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFu eSBtZXNzYWdlIHdoaWNoIG9yaWdpbmFsbHkgaGFkICI+RnJvbSIgYXQgdGhlCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIHN0YXJ0IG9mIHRoZSBsaW5lLCBiZWZvcmUgYmVpbmcgcHV0IGlu dG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE1ib3gsIHdpbGwgbm93IGhhdmUg dGhhdCBsaW5lIHdpdGhvdXQgdGhlICI+Ii4KCiAgICAgICAgICAgICAgICBzL14+RnJvbSAvRnJv bSAvOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgR2xvcmlvdXMgdGVyc25lc3MgaGVy ZS4gIFRoYW5rcyBTaW1vbiBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZXhwbGFp bmluZyB0aGlzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAicHJpbnQgT1VUIiBtZWFucyBwcmludCB0aGUgZGVmYXVsdCB2YXJpYWJs ZSB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgZmlsZSBvZiBmaWxlIGhhbmRs ZSBPVVQuICBUaGlzIGlzIHdoZXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBi dWxrIG9mIHRoZSBtZXNzYWdlIHRleHQgaXMgd3JpdHRlbiB0bwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyB0aGUgb3V0cHV0IGZpbGUuCgogICAgICAgICAgICAgICAgcHJpbnQgT1VUIG9y IGRpZSgiRmF0YWw6IHVuYWJsZSB0byB3cml0ZSB0byBuZXcgbWVzc2FnZSB0byAkbWVzc2FnZWZu Iik7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRW5kIG9mIHRoZSBpZiBzdGF0ZW1l bnQgZGVhbGluZyB3aXRoIG1lc3NhZ2UgYm9keS4KICAgICAgICAgICAgfQoKCSAgICAkcHJldmlv dXNfbGluZV93YXNfZW1wdHkgPSAoICRfIGVxICJcbiIgKTsKCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjIEVuZCBvZiB3aGlsZSAoTUJPWCkgbG9vcC4KICAgICAgICB9CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIENsb3NlIHRoZSBpbnB1dCBmaWxlLgoKICAgICAgICBjbG9zZShN Qk9YKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENsb3NlIHRoZSBvdXRwdXQgZmls ZSwgYW5kIGR1cGxpY2F0ZSB0aGUgY29kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBm cm9tIHRoZSBzdGFydCBvZiB0aGUgd2hpbGUgbG9vcCB3aGljaCB0b3VjaGVzCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIHRoZSBkYXRlLXRpbWUgb2YgdGhlIG1vc3QgcmVjZW50IG1lc3Nh Z2UgZmlsZS4KCiAgICAgICAgY2xvc2UoT1VUKTsKICAgICAgICBpZiAoJG1lc3NhZ2VmbiBuZSAn JykgewoJICAgIG15ICR0ID0gc3RyMnRpbWUoJHJlY2VpdmVkYXRlKTsKCSAgICB1dGltZSAkdCwg JHQsICRtZXNzYWdlZm47Cgl9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZnRlciBh bGwgdGhlIG1lc3NhZ2VzIGhhdmUgYmVlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBj b252ZXJ0ZWQsIGNoZWNrIHRvIHNlZSBpZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgZmlyc3Qgb25lIHdhcyBhIGR1bW15LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBp ZiBzbywgZGVsZXRlIGl0IGFuZCBtYWtlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRo ZSBtZXNzYWdlIGNvdW50IG9uZSBsZXNzLgoKICAgICAgICBpZiAoJGRlbGV0ZWR1bW15IG5lICIi KQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCJEdW1teSBtYWlsIHN5c3RlbSBmaXJzdCBt ZXNzYWdlIGRldGVjdGVkIGFuZCBub3Qgc2F2ZWQuXG4iKTsKICAgICAgICAgICAgdW5saW5rICRk ZWxldGVkdW1teTsKCiAgICAgICAgICAgICRtZXNzYWdlY291bnQtLTsKCiAgICAgICAgfQoKICAg ICAgICBwcmludGYoIiRtZXNzYWdlY291bnQgbWVzc2FnZXMuXG5cbiIpOwp9Cg== --=-=-=--