From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2 ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id sPBXFm64u2E6sAAAgWs5BA (envelope-from ) for ; Thu, 16 Dec 2021 23:06:38 +0100 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2 with LMTPS id gN8LEm64u2GWTQAAB5/wlQ (envelope-from ) for ; Thu, 16 Dec 2021 22:06:38 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id BFBD416DEE for ; Thu, 16 Dec 2021 23:06:37 +0100 (CET) Received: from localhost ([::1]:36092 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mxytY-000790-Cu for larch@yhetil.org; Thu, 16 Dec 2021 17:06:36 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51628) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mxyGR-0005Kx-1O for bug-guix@gnu.org; Thu, 16 Dec 2021 16:26:16 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:53689) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mxyGH-0001WH-PH for bug-guix@gnu.org; Thu, 16 Dec 2021 16:26:09 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mxyGH-000698-Kj for bug-guix@gnu.org; Thu, 16 Dec 2021 16:26:01 -0500 X-Loop: help-debbugs@gnu.org Subject: bug#52559: Fwd: bug#52559: guix pull fails with `Unknown command: nix fish: nix show-derivation "~/.fr-sqOEpp/....-module-import-compiled.drv" Resent-From: Grigory Shepelev Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Thu, 16 Dec 2021 21:26:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 52559 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Maxime Devos , 52559@debbugs.gnu.org Received: via spool by 52559-submit@debbugs.gnu.org id=B52559.163968992823577 (code B ref 52559); Thu, 16 Dec 2021 21:26:01 +0000 Received: (at 52559) by debbugs.gnu.org; 16 Dec 2021 21:25:28 +0000 Received: from localhost ([127.0.0.1]:37002 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mxyFk-00068C-4u for submit@debbugs.gnu.org; Thu, 16 Dec 2021 16:25:28 -0500 Received: from mail-wr1-f53.google.com ([209.85.221.53]:35488) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mxyFi-00067y-Ab for 52559@debbugs.gnu.org; Thu, 16 Dec 2021 16:25:27 -0500 Received: by mail-wr1-f53.google.com with SMTP id j18so418295wrd.2 for <52559@debbugs.gnu.org>; Thu, 16 Dec 2021 13:25:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=u3ztNmq0avM17A5LbyG/m15Dwz0p8nddExFLYj+iW/A=; b=Zj99UCOnozIA89vlc0U3TCA2oCbvLzGWHtQIjpjA/eQRJE80fYGNfCNU5O49sIdd88 PfAZxHmt4FqcR8haNPNHUU9BTUYgR/SjYkFcQT6YkTldu6stfGhkWPEwOoEqiTT9QGFS OMr88vpHLZqRokawcGvTWKn3r95t5YSqALep40rp7vmqpvrMqMHdU/loSNJQiGKdiIYQ uX2rURhBOGIWPlrTIA6QWVqmwlmNgj/o38vHyJlJTBxMuaj+3AgwdY+aTeTozi4OwClR TBJEjfAynpa73eBVVIgfgxyu6RF010KJzvelCLVGGtgGjszkDZxQrt6AfLfz/xboohHl qXTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=u3ztNmq0avM17A5LbyG/m15Dwz0p8nddExFLYj+iW/A=; b=XFm1EtUofF3zfWRKPS2EkR6MsKKHQMpBzKqW5b9xWSkI33qpEJcBFSVwqUwOH2P+Qs PKZw25nXGRlELsBsLBBON7ctVo29pgOF4yl0aCZ23V3CrtlCxhcwWYwdmgCyQlvv9E6Z /3uehj8Hb1HicXb4GAxgfXibSiJd2U7IHOwDD6XqmtGqtzw7mKmtjCaGB785KVVd9HT2 /RwffgXGVQYgCTqXTeD6rAlbMaVMbxWrXm9Z5g6c6rtOzNLt00cozPug8NeMa94NzTsr 7QBm3RvxMFAw5M336PVHqgiSXRU/9YqcMb/S0Sd8O6EvDT0VcQbEoUT9ZhKcNkLJ3Cqd 4oVg== X-Gm-Message-State: AOAM5304umP9xWx1yJFLHESf9GV4i+plggOXt9IkqqlMQWJqRTlT9+fa Pq73/Kg7NDEUytFNjmXVWNqgFrXfY4LYThaH9NA= X-Google-Smtp-Source: ABdhPJy463hdhWHvprX9pT5AKUNE3pXFmcnG+nv446eRl9tP0Li8j+ZoD5Vcj5oU9OEwGpjR111fQ2VwxA96BCBHtRY= X-Received: by 2002:a5d:6d09:: with SMTP id e9mr10185645wrq.17.1639689920432; Thu, 16 Dec 2021 13:25:20 -0800 (PST) MIME-Version: 1.0 References: <1c887d3cd8fde540fce68e610301abd3c29e7915.camel@telenet.be> <144f07ae1cd27c52289a8b175160a21816ead8a8.camel@telenet.be> In-Reply-To: From: Grigory Shepelev Date: Fri, 17 Dec 2021 00:24:44 +0300 Message-ID: Content-Type: multipart/mixed; boundary="0000000000003fe29005d34a0f30" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-guix@gnu.org List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+larch=yhetil.org@gnu.org Sender: "bug-Guix" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1639692398; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:in-reply-to:in-reply-to:references:references: list-id:list-help:list-unsubscribe:list-subscribe:list-post: dkim-signature; bh=+tEefZOfM81Am1+0sXkOjlwSMQ+l3i1cNXBTpLR0yeM=; b=rsznYtBkBWBsZ54Ag4+OXbXXMHrufJd8o69BjafLjjt4sKACLFqL8auKd9pqckhwF+ARaD xi0MjEmiQmmMa3h/zv6QIYoMecg8bkOdGpBNLmPP/ZIebOS/a38nE3l2/jvJSw2PUk959Z kInsglsRO27Cy5+BYo3pz9ITun9Fd1TIuXbIKNx3HbStfUsqtcS0zd+Rf7jRfmtSd2jlQr 538DVI8TEZ3ZFh9PBg18jZGlut9KCRU6JAOxg7CBNoXGD3vQitWG2Fq9DK/oWW4fxjzWRP SUUcU2pQn4iGbMpa32tsDafOBqjdA9coB3t0SL0V7Oxs9nDp708mBzqC9s7ahA== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1639692398; a=rsa-sha256; cv=none; b=pTxLSY+ZQYS0wmUttIasdrOFtsplPS71OTcaYWRMSyWTq3KQfjVA0XtVs8KOCim8fkGRJ+ Ku1TokUspgexOOP3y9hLlCKHygEf6iHp/+m1w33ZJba+UeoBMsG8vLTDLfXrjmpXuKlFhB nacXqoLkQIT7VPFjA9puDiRjKSz1H+araLwhAXLaejJdZe8rVmkBjGfZpjGucCOXz7Eq4r WoTNwcnjMNSr1WAJZvUzKSTyK/zEomE5nb5ISvih7W/PUUlpzL+Bcoezp5xyHkxd1yDfpx mhmDbTG2Xv9jGnGg/T31ZCNR776pKEdodPUQ69psEpSaUFv1rOlTx8Loxo7B6Q== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=gmail.com header.s=20210112 header.b=Zj99UCOn; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -2.39 Authentication-Results: aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=gmail.com header.s=20210112 header.b=Zj99UCOn; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: BFBD416DEE X-Spam-Score: -2.39 X-Migadu-Scanner: scn0.migadu.com X-TUID: RstLVqTQnVJd --0000000000003fe29005d34a0f30 Content-Type: multipart/alternative; boundary="0000000000003fe28f05d34a0f2e" --0000000000003fe28f05d34a0f2e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sorry. Forgot to mention the thread. Now using bash with system and home profiles. same error except (s/nix/bash). ---------- Forwarded message --------- =D0=9E=D1=82: Grigory Shepelev Date: =D0=BF=D1=82, 17 =D0=B4=D0=B5=D0=BA. 2021 =D0=B3. =D0=B2 00:21 Subject: Re: bug#52559: guix pull fails with `Unknown command: nix fish: nix show-derivation "~/.fr-sqOEpp/....-module-import-compiled.drv" To: Maxime Devos Sure, sorry, sleepy. =D0=BF=D1=82, 17 =D0=B4=D0=B5=D0=BA. 2021 =D0=B3. =D0=B2 00:16, Maxime Devo= s : > Grigory Shepelev schreef op vr 17-12-2021 om 00:12 [+0300]: > > In procedure scm_lreadr: /gnu/store/l375q7zi0k894a03xdfsq8qsm5nh2m97- > > module-import/guix/build/utils.scm:822:1: illegal character in escape > > sequence: #\return > > It would be useful to have a copy of the file that the error message is > complaining about. > > Greetings, > Maxime. > > --0000000000003fe28f05d34a0f2e Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Sorry. Forgot to mention the thread.

No= w using bash with system and home profiles. same error except (s/nix/bash).=

---------- Forwarded message ---------
=D0=9E=D1=82: Grigory Shepelev <= ;shegeley@gmail.com>Date: =D0=BF=D1=82, 17 =D0=B4=D0=B5=D0=BA. 2021 =D0=B3. =D0=B2 00:21
Su= bject: Re: bug#52559: guix pull fails with `Unknown command: nix fish: nix = show-derivation "~/.fr-sqOEpp/....-module-import-compiled.drv"To: Maxime Devos <maximedevos= @telenet.be>


Sure, sorry, sle= epy.



=D0=BF=D1=82, 17 =D0=B4=D0=B5=D0=BA= . 2021 =D0=B3. =D0=B2 00:16, Maxime Devos <maximedevos@telenet.be>:
Grigory Shepelev schreef op = vr 17-12-2021 om 00:12 [+0300]:
> In procedure scm_lreadr: /gnu/store/l375q7zi0k894a03xdfsq8qsm5nh2m97-<= br> > module-import/guix/build/utils.scm:822:1: illegal character in escape<= br> > sequence: #\return

It would be useful to have a copy of the file that the error message is
complaining about.

Greetings,
Maxime.

--0000000000003fe28f05d34a0f2e-- --0000000000003fe29005d34a0f30 Content-Type: application/octet-stream; name="utils.scm" Content-Disposition: attachment; filename="utils.scm" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kx9gx7r40 Ozs7IEdOVSBHdWl4IC0tLSBGdW5jdGlvbmFsIHBhY2thZ2UgbWFuYWdlbWVudCBmb3IgR05VCjs7 OyBDb3B5cmlnaHQgwqkgMjAxMiwgMjAxMywgMjAxNCwgMjAxNSwgMjAxNiwgMjAxNywgMjAxOCwg MjAxOSwgMjAyMCwgMjAyMSBMdWRvdmljIENvdXJ0w6hzIDxsdWRvQGdudS5vcmc+Cjs7OyBDb3B5 cmlnaHQgwqkgMjAxMyBBbmRyZWFzIEVuZ2UgPGFuZHJlYXNAZW5nZS5mcj4KOzs7IENvcHlyaWdo dCDCqSAyMDEzIE5pa2l0YSBLYXJldG5pa292IDxuaWtpdGFAa2FyZXRuaWtvdi5vcmc+Cjs7OyBD b3B5cmlnaHQgwqkgMjAxNSwgMjAxOCwgMjAyMSBNYXJrIEggV2VhdmVyIDxtaHdAbmV0cmlzLm9y Zz4KOzs7IENvcHlyaWdodCDCqSAyMDE4IEFydW4gSXNhYWMgPGFydW5pc2FhY0BzeXN0ZW1yZWJv b3QubmV0Pgo7OzsgQ29weXJpZ2h0IMKpIDIwMTgsIDIwMTkgUmljYXJkbyBXdXJtdXMgPHJla2Fk b0BlbGVwaGx5Lm5ldD4KOzs7IENvcHlyaWdodCDCqSAyMDIwIEVmcmFpbSBGbGFzaG5lciA8ZWZy YWltQGZsYXNobmVyLmNvLmlsPgo7OzsgQ29weXJpZ2h0IMKpIDIwMjAsIDIwMjEgTWF4aW0gQ291 cm5veWVyIDxtYXhpbS5jb3Vybm95ZXJAZ21haWwuY29tPgo7OzsgQ29weXJpZ2h0IMKpIDIwMjEg TWF4aW1lIERldm9zIDxtYXhpbWVkZXZvc0B0ZWxlbmV0LmJlPgo7OzsKOzs7IFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEdOVSBHdWl4Lgo7OzsKOzs7IEdOVSBHdWl4IGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKOzs7IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cjs7OyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvciAoYXQKOzs7IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KOzs7Cjs7OyBH TlUgR3VpeCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LCBidXQKOzs7IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKOzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKOzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCjs7Owo7OzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKOzs7IGFsb25nIHdpdGggR05VIEd1aXguICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCgooZGVmaW5lLW1vZHVs ZSAoZ3VpeCBidWlsZCB1dGlscykKICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xKQogICM6dXNl LW1vZHVsZSAoc3JmaSBzcmZpLTExKQogICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTI2KQogICM6 dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTM0KQogICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTM1KQog ICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTYwKQogICM6dXNlLW1vZHVsZSAoaWNlLTkgZnR3KQog ICM6dXNlLW1vZHVsZSAoaWNlLTkgbWF0Y2gpCiAgIzp1c2UtbW9kdWxlIChpY2UtOSByZWdleCkK ICAjOnVzZS1tb2R1bGUgKGljZS05IHJkZWxpbSkKICAjOnVzZS1tb2R1bGUgKGljZS05IGZvcm1h dCkKICAjOnVzZS1tb2R1bGUgKGljZS05IHRocmVhZHMpCiAgIzp1c2UtbW9kdWxlIChybnJzIGJ5 dGV2ZWN0b3JzKQogICM6dXNlLW1vZHVsZSAocm5ycyBpbyBwb3J0cykKICAjOnJlLWV4cG9ydCAo YWxpc3QtY29ucwogICAgICAgICAgICAgICBhbGlzdC1kZWxldGUKCiAgICAgICAgICAgICAgIDs7 IE5vdGU6IFJlLWV4cG9ydCAnZGVsZXRlJyB0byBhbGxvdyBmb3IgcHJvcGVyIHN5bnRheCBtYXRj aGluZwogICAgICAgICAgICAgICA7OyBpbiAnbW9kaWZ5LXBoYXNlcycgZm9ybXMuICBTZWUKICAg ICAgICAgICAgICAgOzsgPGh0dHBzOi8vZGViYnVncy5nbnUub3JnL2NnaS9idWdyZXBvcnQuY2dp P2J1Zz0yNjgwNSMxNj4uCiAgICAgICAgICAgICAgIGRlbGV0ZSkKICAjOmV4cG9ydCAoJXN0b3Jl LWRpcmVjdG9yeQogICAgICAgICAgICBzdG9yZS1maWxlLW5hbWU/CiAgICAgICAgICAgIHN0cmlw LXN0b3JlLWZpbGUtbmFtZQogICAgICAgICAgICBwYWNrYWdlLW5hbWUtPm5hbWUrdmVyc2lvbgog ICAgICAgICAgICBwYXJhbGxlbC1qb2ItY291bnQKCiAgICAgICAgICAgIGNvbXByZXNzb3IKICAg ICAgICAgICAgdGFyYmFsbD8KICAgICAgICAgICAgJXh6LXBhcmFsbGVsLWFyZ3MKCiAgICAgICAg ICAgIGRpcmVjdG9yeS1leGlzdHM/CiAgICAgICAgICAgIGV4ZWN1dGFibGUtZmlsZT8KICAgICAg ICAgICAgc3ltYm9saWMtbGluaz8KICAgICAgICAgICAgY2FsbC13aXRoLXRlbXBvcmFyeS1vdXRw dXQtZmlsZQogICAgICAgICAgICBjYWxsLXdpdGgtYXNjaWktaW5wdXQtZmlsZQogICAgICAgICAg ICBlbGYtZmlsZT8KICAgICAgICAgICAgYXItZmlsZT8KICAgICAgICAgICAgZ3ppcC1maWxlPwog ICAgICAgICAgICByZXNldC1nemlwLXRpbWVzdGFtcAogICAgICAgICAgICB3aXRoLWRpcmVjdG9y eS1leGN1cnNpb24KICAgICAgICAgICAgbWtkaXItcAogICAgICAgICAgICBpbnN0YWxsLWZpbGUK ICAgICAgICAgICAgbWFrZS1maWxlLXdyaXRhYmxlCiAgICAgICAgICAgIGNvcHktcmVjdXJzaXZl bHkKICAgICAgICAgICAgZGVsZXRlLWZpbGUtcmVjdXJzaXZlbHkKICAgICAgICAgICAgZmlsZS1u YW1lLXByZWRpY2F0ZQogICAgICAgICAgICBmaW5kLWZpbGVzCiAgICAgICAgICAgIGZhbHNlLWlm LWZpbGUtbm90LWZvdW5kCgogICAgICAgICAgICBzZWFyY2gtcGF0aC1hcy1saXN0CiAgICAgICAg ICAgIHNldC1wYXRoLWVudmlyb25tZW50LXZhcmlhYmxlCiAgICAgICAgICAgIHNlYXJjaC1wYXRo LWFzLXN0cmluZy0+bGlzdAogICAgICAgICAgICBsaXN0LT5zZWFyY2gtcGF0aC1hcy1zdHJpbmcK ICAgICAgICAgICAgd2hpY2gKICAgICAgICAgICAgc2VhcmNoLWlucHV0LWZpbGUKICAgICAgICAg ICAgc2VhcmNoLWlucHV0LWRpcmVjdG9yeQogICAgICAgICAgICBzZWFyY2gtZXJyb3I/CiAgICAg ICAgICAgIHNlYXJjaC1lcnJvci1wYXRoCiAgICAgICAgICAgIHNlYXJjaC1lcnJvci1maWxlCgog ICAgICAgICAgICBldmVyeSoKICAgICAgICAgICAgYWxpc3QtY29ucy1iZWZvcmUKICAgICAgICAg ICAgYWxpc3QtY29ucy1hZnRlcgogICAgICAgICAgICBhbGlzdC1yZXBsYWNlCiAgICAgICAgICAg IG1vZGlmeS1waGFzZXMKCiAgICAgICAgICAgIHdpdGgtYXRvbWljLWZpbGUtcmVwbGFjZW1lbnQK ICAgICAgICAgICAgc3Vic3RpdHV0ZQogICAgICAgICAgICBzdWJzdGl0dXRlKgogICAgICAgICAg ICBkdW1wLXBvcnQKICAgICAgICAgICAgc2V0LWZpbGUtdGltZQogICAgICAgICAgICBwYXRjaC1z aGViYW5nCiAgICAgICAgICAgIHBhdGNoLW1ha2VmaWxlLVNIRUxMCiAgICAgICAgICAgIHBhdGNo LS91c3IvYmluL2ZpbGUKICAgICAgICAgICAgZm9sZC1wb3J0LW1hdGNoZXMKICAgICAgICAgICAg cmVtb3ZlLXN0b3JlLXJlZmVyZW5jZXMKICAgICAgICAgICAgd3JhcHBlZC1wcm9ncmFtPwogICAg ICAgICAgICB3cmFwLXByb2dyYW0KICAgICAgICAgICAgd3JhcC1zY3JpcHQKCiAgICAgICAgICAg IHdyYXAtZXJyb3I/CiAgICAgICAgICAgIHdyYXAtZXJyb3ItcHJvZ3JhbQogICAgICAgICAgICB3 cmFwLWVycm9yLXR5cGUKCiAgICAgICAgICAgIGludm9rZQogICAgICAgICAgICBpbnZva2UtZXJy b3I/CiAgICAgICAgICAgIGludm9rZS1lcnJvci1wcm9ncmFtCiAgICAgICAgICAgIGludm9rZS1l cnJvci1hcmd1bWVudHMKICAgICAgICAgICAgaW52b2tlLWVycm9yLWV4aXQtc3RhdHVzCiAgICAg ICAgICAgIGludm9rZS1lcnJvci10ZXJtLXNpZ25hbAogICAgICAgICAgICBpbnZva2UtZXJyb3It c3RvcC1zaWduYWwKICAgICAgICAgICAgcmVwb3J0LWludm9rZS1lcnJvcgoKICAgICAgICAgICAg aW52b2tlL3F1aWV0CgogICAgICAgICAgICBtYWtlLWRlc2t0b3AtZW50cnktZmlsZQoKICAgICAg ICAgICAgbG9jYWxlLWNhdGVnb3J5LT5zdHJpbmcpKQoKDAo7OzsKOzs7IEd1aWxlIDIuMCBjb21w YXRpYmlsaXR5IGxhdGVyLgo7OzsKCjs7IFRoZSBib290c3RyYXAgR3VpbGUgaXMgR3VpbGUgMi4w LCBzbyBwcm92aWRlIGEgY29tcGF0aWJpbGl0eSBsYXllci4KKGNvbmQtZXhwYW5kCiAgKChhbmQg Z3VpbGUtMiAobm90IGd1aWxlLTIuMikpCiAgIChkZWZpbmUgKHNldHZidWYgcG9ydCBtb2RlIC4g cmVzdCkKICAgICAoYXBwbHkgKEAgKGd1aWxlKSBzZXR2YnVmKSBwb3J0CiAgICAgICAgICAgICht YXRjaCBtb2RlCiAgICAgICAgICAgICAgKCdsaW5lIF9JT0xCRikKICAgICAgICAgICAgICAoJ2Js b2NrIF9JT0ZCRikKICAgICAgICAgICAgICAoJ25vbmUgX0lPTkJGKQogICAgICAgICAgICAgIChf IG1vZGUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgIDthbiBfSU8qIGludGVnZXIKICAgICAg ICAgICAgcmVzdCkpCgogICAobW9kdWxlLXJlcGxhY2UhIChjdXJyZW50LW1vZHVsZSkgJyhzZXR2 YnVmKSkpCiAgKGVsc2UgI2YpKQoKDAo7OzsKOzs7IENvbXByZXNzaW9uIGhlbHBlcnMuCjs7OwoK KGRlZmluZSAoY29tcHJlc3NvciBmaWxlLW5hbWUpCiAgIlJldHVybiB0aGUgbmFtZSBvZiB0aGUg Y29tcHJlc3NvciBwYWNrYWdlL2JpbmFyeSB1c2VkIHRvIGNvbXByZXNzIG9yCmRlY29tcHJlc3Mg RklMRS1OQU1FLCBiYXNlZCBvbiBpdHMgZmlsZSBleHRlbnNpb24sIGVsc2UgZmFsc2UuIgogIChj b25kICgoc3RyaW5nLXN1ZmZpeD8gImd6IiAgZmlsZS1uYW1lKSAgImd6aXAiKQogICAgICAgICgo c3RyaW5nLXN1ZmZpeD8gIloiICAgZmlsZS1uYW1lKSAgImd6aXAiKQogICAgICAgICgoc3RyaW5n LXN1ZmZpeD8gImJ6MiIgZmlsZS1uYW1lKSAgImJ6aXAyIikKICAgICAgICAoKHN0cmluZy1zdWZm aXg/ICJseiIgIGZpbGUtbmFtZSkgICJsemlwIikKICAgICAgICAoKHN0cmluZy1zdWZmaXg/ICJ6 aXAiIGZpbGUtbmFtZSkgICJ1bnppcCIpCiAgICAgICAgKChzdHJpbmctc3VmZml4PyAieHoiICBm aWxlLW5hbWUpICAieHoiKQogICAgICAgIChlbHNlICNmKSkpICAgICAgICAgICAgICAgIDtubyBj b21wcmVzc2lvbiB1c2VkL3Vua25vd24gZmlsZSBleHRlbnNpb24KCihkZWZpbmUgKHRhcmJhbGw/ IGZpbGUtbmFtZSkKICAiVHJ1ZSB3aGVuIEZJTEUtTkFNRSBoYXMgYSB0YXIgZmlsZSBleHRlbnNp b24uIgogIChzdHJpbmctbWF0Y2ggIlxcLih0YXIoXFwuLiopP3x0Z3p8dGJ6KSQiIGZpbGUtbmFt ZSkpCgooZGVmaW5lICgleHotcGFyYWxsZWwtYXJncykKICAiVGhlIHh6IGFyZ3VtZW50cyByZXF1 aXJlZCB0byBlbmFibGUgYml0LXJlcHJvZHVjaWJsZSwgbXVsdGktdGhyZWFkZWQKY29tcHJlc3Np b24uIgogIChsaXN0ICItLW1lbWxpbWl0PTUwJSIKICAgICAgICAoZm9ybWF0ICNmICItLXRocmVh ZHM9fmEiIChtYXggMiAocGFyYWxsZWwtam9iLWNvdW50KSkpKSkKCgwKOzs7Cjs7OyBEaXJlY3Rv cmllcy4KOzs7CgooZGVmaW5lICglc3RvcmUtZGlyZWN0b3J5KQogICJSZXR1cm4gdGhlIGRpcmVj dG9yeSBuYW1lIG9mIHRoZSBzdG9yZS4iCiAgKG9yIChnZXRlbnYgIk5JWF9TVE9SRV9ESVIiKSAg ICAgICAgICA7b3V0c2lkZSBvZiBidWlsZGVyCiAgICAgIChnZXRlbnYgIk5JWF9TVE9SRSIpICAg ICAgICAgICAgICA7aW5zaWRlIGJ1aWxkZXIsIHNldCBieSB0aGUgZGFlbW9uCiAgICAgICIvZ251 L3N0b3JlIikpCgooZGVmaW5lIChzdG9yZS1maWxlLW5hbWU/IGZpbGUpCiAgIlJldHVybiB0cnVl IGlmIEZJTEUgaXMgaW4gdGhlIHN0b3JlLiIKICAoc3RyaW5nLXByZWZpeD8gKCVzdG9yZS1kaXJl Y3RvcnkpIGZpbGUpKQoKKGRlZmluZSAoc3RyaXAtc3RvcmUtZmlsZS1uYW1lIGZpbGUpCiAgIlN0 cmlwIHRoZSAnL2dudS9zdG9yZScgYW5kIGhhc2ggZnJvbSBGSUxFLCBhIHN0b3JlIGZpbGUgbmFt ZS4gIFRoZSByZXN1bHQKaXMgdHlwaWNhbGx5IGEgXCJQQUNLQUdFLVZFUlNJT05cIiBzdHJpbmcu IgogIChzdHJpbmctZHJvcCBmaWxlCiAgICAgICAgICAgICAgICgrIDM0IChzdHJpbmctbGVuZ3Ro ICglc3RvcmUtZGlyZWN0b3J5KSkpKSkKCihkZWZpbmUgKHBhY2thZ2UtbmFtZS0+bmFtZSt2ZXJz aW9uIG5hbWUpCiAgIkdpdmVuIE5BTUUsIGEgcGFja2FnZSBuYW1lIGxpa2UgXCJmb28tMC45LjFi XCIsIHJldHVybiB0d28gdmFsdWVzOgpcImZvb1wiIGFuZCBcIjAuOS4xYlwiLiAgV2hlbiB0aGUg dmVyc2lvbiBwYXJ0IGlzIHVuYXZhaWxhYmxlLCBOQU1FIGFuZAojZiBhcmUgcmV0dXJuZWQuICBU aGUgZmlyc3QgaHlwaGVuIGZvbGxvd2VkIGJ5IGEgZGlnaXQgaXMgY29uc2lkZXJlZCB0bwppbnRy b2R1Y2UgdGhlIHZlcnNpb24gcGFydC4iCiAgOzsgU2VlIGFsc28gYERydk5hbWUnIGluIE5peC4K CiAgKGRlZmluZSBudW1iZXI/CiAgICAoY3V0IGNoYXItc2V0LWNvbnRhaW5zPyBjaGFyLXNldDpk aWdpdCA8PikpCgogIChsZXQgbG9vcCAoKGNoYXJzICAgKHN0cmluZy0+bGlzdCBuYW1lKSkKICAg ICAgICAgICAgIChwcmVmaXggJygpKSkKICAgIChtYXRjaCBjaGFycwogICAgICAoKCkKICAgICAg ICh2YWx1ZXMgbmFtZSAjZikpCiAgICAgICgoI1wtICg/IG51bWJlcj8gbikgcmVzdCAuLi4pCiAg ICAgICAodmFsdWVzIChsaXN0LT5zdHJpbmcgKHJldmVyc2UgcHJlZml4KSkKICAgICAgICAgICAg ICAgKGxpc3QtPnN0cmluZyAoY29ucyBuIHJlc3QpKSkpCiAgICAgICgoaGVhZCB0YWlsIC4uLikK ICAgICAgIChsb29wIHRhaWwgKGNvbnMgaGVhZCBwcmVmaXgpKSkpKSkKCihkZWZpbmUgcGFyYWxs ZWwtam9iLWNvdW50CiAgOzsgTnVtYmVyIG9mIHByb2Nlc3NlcyB0byBiZSBwYXNzZWQgbmV4dCB0 byBHTlUgTWFrZSdzIGAtaicgYXJndW1lbnQuCiAgKG1ha2UtcGFyYW1ldGVyCiAgIChtYXRjaCAo Z2V0ZW52ICJOSVhfQlVJTERfQ09SRVMiKSAgICAgICAgICAgICAgO3NldCBieSB0aGUgZGFlbW9u CiAgICAgKCNmICAxKQogICAgICgiMCIgKGN1cnJlbnQtcHJvY2Vzc29yLWNvdW50KSkKICAgICAo eCAgIChvciAoc3RyaW5nLT5udW1iZXIgeCkgMSkpKSkpCgooZGVmaW5lIChkaXJlY3RvcnktZXhp c3RzPyBkaXIpCiAgIlJldHVybiAjdCBpZiBESVIgZXhpc3RzIGFuZCBpcyBhIGRpcmVjdG9yeS4i CiAgKGxldCAoKHMgKHN0YXQgZGlyICNmKSkpCiAgICAoYW5kIHMKICAgICAgICAgKGVxPyAnZGly ZWN0b3J5IChzdGF0OnR5cGUgcykpKSkpCgooZGVmaW5lIChleGVjdXRhYmxlLWZpbGU/IGZpbGUp CiAgIlJldHVybiAjdCBpZiBGSUxFIGV4aXN0cyBhbmQgaXMgZXhlY3V0YWJsZS4iCiAgKGxldCAo KHMgKHN0YXQgZmlsZSAjZikpKQogICAgKGFuZCBzCiAgICAgICAgIChub3QgKHplcm8/IChsb2dh bmQgKHN0YXQ6bW9kZSBzKSAjbzEwMCkpKSkpKQoKKGRlZmluZSAoc3ltYm9saWMtbGluaz8gZmls ZSkKICAiUmV0dXJuICN0IGlmIEZJTEUgaXMgYSBzeW1ib2xpYyBsaW5rIChha2EuIFwic3ltbGlu a1wiLikiCiAgKGVxPyAoc3RhdDp0eXBlIChsc3RhdCBmaWxlKSkgJ3N5bWxpbmspKQoKKGRlZmlu ZSAoY2FsbC13aXRoLXRlbXBvcmFyeS1vdXRwdXQtZmlsZSBwcm9jKQogICJDYWxsIFBST0Mgd2l0 aCBhIG5hbWUgb2YgYSB0ZW1wb3JhcnkgZmlsZSBhbmQgb3BlbiBvdXRwdXQgcG9ydCB0byB0aGF0 CmZpbGU7IGNsb3NlIHRoZSBmaWxlIGFuZCBkZWxldGUgaXQgd2hlbiBsZWF2aW5nIHRoZSBkeW5h bWljIGV4dGVudCBvZiB0aGlzCmNhbGwuIgogIChsZXQqICgoZGlyZWN0b3J5IChvciAoZ2V0ZW52 ICJUTVBESVIiKSAiL3RtcCIpKQogICAgICAgICAodGVtcGxhdGUgIChzdHJpbmctYXBwZW5kIGRp cmVjdG9yeSAiL2d1aXgtZmlsZS5YWFhYWFgiKSkKICAgICAgICAgKG91dCAgICAgICAobWtzdGVt cCEgdGVtcGxhdGUpKSkKICAgIChkeW5hbWljLXdpbmQKICAgICAgKGxhbWJkYSAoKQogICAgICAg ICN0KQogICAgICAobGFtYmRhICgpCiAgICAgICAgKHByb2MgdGVtcGxhdGUgb3V0KSkKICAgICAg KGxhbWJkYSAoKQogICAgICAgIChmYWxzZS1pZi1leGNlcHRpb24gKGNsb3NlIG91dCkpCiAgICAg ICAgKGZhbHNlLWlmLWV4Y2VwdGlvbiAoZGVsZXRlLWZpbGUgdGVtcGxhdGUpKSkpKSkKCihkZWZp bmUgKGNhbGwtd2l0aC1hc2NpaS1pbnB1dC1maWxlIGZpbGUgcHJvYykKICAiT3BlbiBGSUxFIGFz IGFuIEFTQ0lJIG9yIGJpbmFyeSBmaWxlLCBhbmQgcGFzcyB0aGUgcmVzdWx0aW5nIHBvcnQgdG8K UFJPQy4gIEZJTEUgaXMgY2xvc2VkIHdoZW4gUFJPQydzIGR5bmFtaWMgZXh0ZW50IGlzIGxlZnQu ICBSZXR1cm4gdGhlCnJldHVybiB2YWx1ZXMgb2YgYXBwbHlpbmcgUFJPQyB0byB0aGUgcG9ydC4i CiAgKGxldCAoKHBvcnQgKHdpdGgtZmx1aWRzICgoJWRlZmF1bHQtcG9ydC1lbmNvZGluZyAjZikp CiAgICAgICAgICAgICAgICA7OyBVc2UgImIiIHNvIHRoYXQgYG9wZW4tZmlsZScgaWdub3JlcyBg Y29kaW5nOicgY29va2llcy4KICAgICAgICAgICAgICAgIChvcGVuLWZpbGUgZmlsZSAicmIiKSkp KQogICAgKGR5bmFtaWMtd2luZAogICAgICAobGFtYmRhICgpCiAgICAgICAgI3QpCiAgICAgIChs YW1iZGEgKCkKICAgICAgICAocHJvYyBwb3J0KSkKICAgICAgKGxhbWJkYSAoKQogICAgICAgIChj bG9zZS1pbnB1dC1wb3J0IHBvcnQpKSkpKQoKKGRlZmluZSAoZmlsZS1oZWFkZXItbWF0Y2ggaGVh ZGVyKQogICJSZXR1cm4gYSBwcm9jZWR1cmUgdGhhdCByZXR1cm5zIHRydWUgd2hlbiBpdHMgYXJn dW1lbnQgaXMgYSBmaWxlIHN0YXJ0aW5nCndpdGggdGhlIGJ5dGVzIGluIEhFQURFUiwgYSBieXRl dmVjdG9yLiIKICAoZGVmaW5lIGxlbgogICAgKGJ5dGV2ZWN0b3ItbGVuZ3RoIGhlYWRlcikpCgog IChsYW1iZGEgKGZpbGUpCiAgICAiUmV0dXJuIHRydWUgaWYgRklMRSBzdGFydHMgd2l0aCB0aGUg cmlnaHQgbWFnaWMgYnl0ZXMuIgogICAgKGRlZmluZSAoZ2V0LWhlYWRlcikKICAgICAgKGNhbGwt d2l0aC1pbnB1dC1maWxlIGZpbGUKICAgICAgICAobGFtYmRhIChwb3J0KQogICAgICAgICAgKGdl dC1ieXRldmVjdG9yLW4gcG9ydCBsZW4pKQogICAgICAgICM6YmluYXJ5ICN0ICM6Z3Vlc3MtZW5j b2RpbmcgI2YpKQoKICAgIChjYXRjaCAnc3lzdGVtLWVycm9yCiAgICAgIChsYW1iZGEgKCkKICAg ICAgICAoZXF1YWw/IChnZXQtaGVhZGVyKSBoZWFkZXIpKQogICAgICAobGFtYmRhIGFyZ3MKICAg ICAgICAoaWYgKD0gRUlTRElSIChzeXN0ZW0tZXJyb3ItZXJybm8gYXJncykpCiAgICAgICAgICAg ICNmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO0ZJTEUgaXMgYSBkaXJlY3Rv cnkKICAgICAgICAgICAgKGFwcGx5IHRocm93IGFyZ3MpKSkpKSkKCihkZWZpbmUgJWVsZi1tYWdp Yy1ieXRlcwogIDs7IE1hZ2ljIGJ5dGVzIG9mIEVMRiBmaWxlcy4gIFNlZSA8ZWxmLmg+LgogICh1 OC1saXN0LT5ieXRldmVjdG9yIChtYXAgY2hhci0+aW50ZWdlciAoc3RyaW5nLT5saXN0ICJceDdG RUxGIikpKSkKCihkZWZpbmUgZWxmLWZpbGU/CiAgKGZpbGUtaGVhZGVyLW1hdGNoICVlbGYtbWFn aWMtYnl0ZXMpKQoKKGRlZmluZSAlYXItbWFnaWMtYnl0ZXMKICA7OyBNYWdpYyBieXRlcyBvZiBh cmNoaXZlcyBjcmVhdGVkIGJ5ICdhcicuICBTZWUgPGFyLmg+LgogICh1OC1saXN0LT5ieXRldmVj dG9yIChtYXAgY2hhci0+aW50ZWdlciAoc3RyaW5nLT5saXN0ICIhPGFyY2g+XG4iKSkpKQoKKGRl ZmluZSBhci1maWxlPwogIChmaWxlLWhlYWRlci1tYXRjaCAlYXItbWFnaWMtYnl0ZXMpKQoKKGRl ZmluZSAlZ3ppcC1tYWdpYy1ieXRlcwogIDs7IE1hZ2ljIGJ5dGVzIG9mIGd6aXAgZmlsZS4gIEJl d2FyZSwgaXQncyBhIHNtYWxsIGhlYWRlciBzbyB0aGVyZSBjb3VsZCBiZQogIDs7IGZhbHNlIHBv c2l0aXZlcy4KICAjdnU4KCN4MWYgI3g4YikpCgooZGVmaW5lIGd6aXAtZmlsZT8KICAoZmlsZS1o ZWFkZXItbWF0Y2ggJWd6aXAtbWFnaWMtYnl0ZXMpKQoKKGRlZmluZSogKHJlc2V0LWd6aXAtdGlt ZXN0YW1wIGZpbGUgIzprZXkgKGtlZXAtbXRpbWU/ICN0KSkKICAiSWYgRklMRSBpcyBhIGd6aXAg ZmlsZSwgcmVzZXQgaXRzIGVtYmVkZGVkIHRpbWVzdGFtcCAoYXMgd2l0aCAnZ3ppcAotLW5vLW5h bWUnKSBhbmQgcmV0dXJuIHRydWUuICBPdGhlcndpc2UgcmV0dXJuICNmLiAgV2hlbiBLRUVQLU1U SU1FPyBpcyB0cnVlLApwcmVzZXJ2ZSBGSUxFJ3MgbW9kaWZpY2F0aW9uIHRpbWUuIgogIChsZXQg KChzdGF0IChzdGF0IGZpbGUpKQogICAgICAgIChwb3J0IChvcGVuIGZpbGUgT19SRFdSKSkpCiAg ICAoZHluYW1pYy13aW5kCiAgICAgIChjb25zdCAjdCkKICAgICAgKGxhbWJkYSAoKQogICAgICAg IChhbmQgKD0gNCAoc2VlayBwb3J0IDQgU0VFS19TRVQpKQogICAgICAgICAgICAgKHB1dC1ieXRl dmVjdG9yIHBvcnQgI3Z1OCgwIDAgMCAwKSkpKQogICAgICAobGFtYmRhICgpCiAgICAgICAgKGNs b3NlLXBvcnQgcG9ydCkKICAgICAgICAoc2V0LWZpbGUtdGltZSBmaWxlIHN0YXQpKSkpKQoKKGRl ZmluZS1zeW50YXgtcnVsZSAod2l0aC1kaXJlY3RvcnktZXhjdXJzaW9uIGRpciBib2R5IC4uLikK ICAiUnVuIEJPRFkgd2l0aCBESVIgYXMgdGhlIHByb2Nlc3MncyBjdXJyZW50IGRpcmVjdG9yeS4i CiAgKGxldCAoKGluaXQgKGdldGN3ZCkpKQogICAoZHluYW1pYy13aW5kCiAgICAgKGxhbWJkYSAo KQogICAgICAgKGNoZGlyIGRpcikpCiAgICAgKGxhbWJkYSAoKQogICAgICAgYm9keSAuLi4pCiAg ICAgKGxhbWJkYSAoKQogICAgICAgKGNoZGlyIGluaXQpKSkpKQoKKGRlZmluZSAobWtkaXItcCBk aXIpCiAgIkNyZWF0ZSBkaXJlY3RvcnkgRElSIGFuZCBhbGwgaXRzIGFuY2VzdG9ycy4iCiAgKGRl ZmluZSBhYnNvbHV0ZT8KICAgIChzdHJpbmctcHJlZml4PyAiLyIgZGlyKSkKCiAgKGRlZmluZSBu b3Qtc2xhc2gKICAgIChjaGFyLXNldC1jb21wbGVtZW50IChjaGFyLXNldCAjXC8pKSkKCiAgKGxl dCBsb29wICgoY29tcG9uZW50cyAoc3RyaW5nLXRva2VuaXplIGRpciBub3Qtc2xhc2gpKQogICAg ICAgICAgICAgKHJvb3QgICAgICAgKGlmIGFic29sdXRlPwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi4iKSkpCiAgICAobWF0Y2gg Y29tcG9uZW50cwogICAgICAoKGhlYWQgdGFpbCAuLi4pCiAgICAgICAobGV0ICgocGF0aCAoc3Ry aW5nLWFwcGVuZCByb290ICIvIiBoZWFkKSkpCiAgICAgICAgIChjYXRjaCAnc3lzdGVtLWVycm9y CiAgICAgICAgICAgKGxhbWJkYSAoKQogICAgICAgICAgICAgKG1rZGlyIHBhdGgpCiAgICAgICAg ICAgICAobG9vcCB0YWlsIHBhdGgpKQogICAgICAgICAgIChsYW1iZGEgYXJncwogICAgICAgICAg ICAgKGlmICg9IEVFWElTVCAoc3lzdGVtLWVycm9yLWVycm5vIGFyZ3MpKQogICAgICAgICAgICAg ICAgIChsb29wIHRhaWwgcGF0aCkKICAgICAgICAgICAgICAgICAoYXBwbHkgdGhyb3cgYXJncykp KSkpKQogICAgICAoKCkgI3QpKSkpCgooZGVmaW5lIChpbnN0YWxsLWZpbGUgZmlsZSBkaXJlY3Rv cnkpCiAgIkNyZWF0ZSBESVJFQ1RPUlkgaWYgaXQgZG9lcyBub3QgZXhpc3QgYW5kIGNvcHkgRklM RSBpbiB0aGVyZSB1bmRlciB0aGUgc2FtZQpuYW1lLiIKICAobWtkaXItcCBkaXJlY3RvcnkpCiAg KGNvcHktZmlsZSBmaWxlIChzdHJpbmctYXBwZW5kIGRpcmVjdG9yeSAiLyIgKGJhc2VuYW1lIGZp bGUpKSkpCgooZGVmaW5lIChtYWtlLWZpbGUtd3JpdGFibGUgZmlsZSkKICAiTWFrZSBGSUxFIHdy aXRhYmxlIGZvciBpdHMgb3duZXIuIgogIChsZXQgKChzdGF0IChsc3RhdCBmaWxlKSkpICAgICAg ICAgICAgICAgICAgICAgIDtYWFg6IHN5bWxpbmtzCiAgICAoY2htb2QgZmlsZSAobG9naW9yICNv NjAwIChzdGF0OnBlcm1zIHN0YXQpKSkpKQoKKGRlZmluZSogKGNvcHktcmVjdXJzaXZlbHkgc291 cmNlIGRlc3RpbmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICM6a2V5CiAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsb2cgKGN1cnJlbnQtb3V0cHV0LXBvcnQpKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAoZm9sbG93LXN5bWxpbmtzPyAjZikKICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNvcHktZmlsZSBjb3B5LWZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAg IGtlZXAtbXRpbWU/IGtlZXAtcGVybWlzc2lvbnM/KQogICJDb3B5IFNPVVJDRSBkaXJlY3Rvcnkg dG8gREVTVElOQVRJT04uICBGb2xsb3cgc3ltbGlua3MgaWYgRk9MTE9XLVNZTUxJTktTPwppcyB0 cnVlOyBvdGhlcndpc2UsIGp1c3QgcHJlc2VydmUgdGhlbS4gIENhbGwgQ09QWS1GSUxFIHRvIGNv cHkgcmVndWxhciBmaWxlcy4KV2hlbiBLRUVQLU1USU1FPyBpcyB0cnVlLCBrZWVwIHRoZSBtb2Rp ZmljYXRpb24gdGltZSBvZiB0aGUgZmlsZXMgaW4gU09VUkNFIG9uCnRob3NlIG9mIERFU1RJTkFU SU9OLiAgV2hlbiBLRUVQLVBFUk1JU1NJT05TPyBpcyB0cnVlLCBwcmVzZXJ2ZSBmaWxlCnBlcm1p c3Npb25zLiAgV3JpdGUgdmVyYm9zZSBvdXRwdXQgdG8gdGhlIExPRyBwb3J0LiIKICAoZGVmaW5l IHN0cmlwLXNvdXJjZQogICAgKGxldCAoKGxlbiAoc3RyaW5nLWxlbmd0aCBzb3VyY2UpKSkKICAg ICAgKGxhbWJkYSAoZmlsZSkKICAgICAgICAoc3Vic3RyaW5nIGZpbGUgbGVuKSkpKQoKICAoZmls ZS1zeXN0ZW0tZm9sZCAoY29uc3QgI3QpICAgICAgICAgICAgICAgICAgICA7IGVudGVyPwogICAg ICAgICAgICAgICAgICAgIChsYW1iZGEgKGZpbGUgc3RhdCByZXN1bHQpICAgIDsgbGVhZgogICAg ICAgICAgICAgICAgICAgICAgKGxldCAoKGRlc3QgKHN0cmluZy1hcHBlbmQgZGVzdGluYXRpb24K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpcC1z b3VyY2UgZmlsZSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCBsb2cgImB+YScg LT4gYH5hJ34lIiBmaWxlIGRlc3QpCiAgICAgICAgICAgICAgICAgICAgICAgIChjYXNlIChzdGF0 OnR5cGUgc3RhdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAoKHN5bWxpbmspCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsZXQgKCh0YXJnZXQgKHJlYWRsaW5rIGZpbGUpKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc3ltbGluayB0YXJnZXQgZGVzdCkpKQogICAgICAgICAg ICAgICAgICAgICAgICAgIChlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb3B5LWZp bGUgZmlsZSBkZXN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiBrZWVwLXBlcm1p c3Npb25zPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaG1vZCBkZXN0IChzdGF0OnBl cm1zIHN0YXQpKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAod2hlbiBrZWVwLW10aW1lPwog ICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQtZmlsZS10aW1lIGRlc3Qgc3RhdCkpKSkKICAg ICAgICAgICAgICAgICAgICAobGFtYmRhIChkaXIgc3RhdCByZXN1bHQpICAgICA7IGRvd24KICAg ICAgICAgICAgICAgICAgICAgIChsZXQgKCh0YXJnZXQgKHN0cmluZy1hcHBlbmQgZGVzdGluYXRp b24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0 cmlwLXNvdXJjZSBkaXIpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIChta2Rpci1wIHRhcmdl dCkpKQogICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGRpciBzdGF0IHJlc3VsdCkgICAgIDsg dXAKICAgICAgICAgICAgICAgICAgICAgIChsZXQgKCh0YXJnZXQgKHN0cmluZy1hcHBlbmQgZGVz dGluYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHN0cmlwLXNvdXJjZSBkaXIpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIGtl ZXAtbXRpbWU/CiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1maWxlLXRpbWUgdGFyZ2V0 IHN0YXQpKQogICAgICAgICAgICAgICAgICAgICAgICAod2hlbiBrZWVwLXBlcm1pc3Npb25zPwog ICAgICAgICAgICAgICAgICAgICAgICAgIChjaG1vZCB0YXJnZXQgKHN0YXQ6cGVybXMgc3RhdCkp KSkpCiAgICAgICAgICAgICAgICAgICAgKGNvbnN0ICN0KSAgICAgICAgICAgICAgICAgICAgOyBz a2lwCiAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoZmlsZSBzdGF0IGVycm5vIHJlc3VsdCkK ICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgKGN1cnJlbnQtZXJyb3ItcG9ydCkgImkvbyBl cnJvcjogfmE6IH5hfiUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgKHN0cmVy cm9yIGVycm5vKSkKICAgICAgICAgICAgICAgICAgICAgICNmKQogICAgICAgICAgICAgICAgICAg ICN0CiAgICAgICAgICAgICAgICAgICAgc291cmNlCgogICAgICAgICAgICAgICAgICAgIChpZiBm b2xsb3ctc3ltbGlua3M/CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXQKICAgICAgICAgICAg ICAgICAgICAgICAgbHN0YXQpKSkKCihkZWZpbmUtc3ludGF4LXJ1bGUgKHdhcm4tb24tZXJyb3Ig ZXhwciBmaWxlKQogIChjYXRjaCAnc3lzdGVtLWVycm9yCiAgICAobGFtYmRhICgpCiAgICAgIGV4 cHIpCiAgICAobGFtYmRhIGFyZ3MKICAgICAgKGZvcm1hdCAoY3VycmVudC1lcnJvci1wb3J0KQog ICAgICAgICAgICAgICJ3YXJuaW5nOiBmYWlsZWQgdG8gZGVsZXRlIH5hOiB+YX4lIgogICAgICAg ICAgICAgIGZpbGUgKHN0cmVycm9yCiAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS1lcnJvci1l cnJubyBhcmdzKSkpKSkpCgooZGVmaW5lKiAoZGVsZXRlLWZpbGUtcmVjdXJzaXZlbHkgZGlyCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmtleSBmb2xsb3ctbW91bnRzPykKICAi RGVsZXRlIERJUiByZWN1cnNpdmVseSwgbGlrZSBgcm0gLXJmJywgd2l0aG91dCBmb2xsb3dpbmcg c3ltbGlua3MuICBEb24ndApmb2xsb3cgbW91bnQgcG9pbnRzIGVpdGhlciwgdW5sZXNzIEZPTExP Vy1NT1VOVFM/IGlzIHRydWUuICBSZXBvcnQgYnV0IGlnbm9yZQplcnJvcnMuIgogIChsZXQgKChk ZXYgKHN0YXQ6ZGV2IChsc3RhdCBkaXIpKSkpCiAgICAoZmlsZS1zeXN0ZW0tZm9sZCAobGFtYmRh IChkaXIgc3RhdCByZXN1bHQpICAgIDsgZW50ZXI/CiAgICAgICAgICAgICAgICAgICAgICAgIChv ciBmb2xsb3ctbW91bnRzPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKD0gZGV2IChzdGF0 OmRldiBzdGF0KSkpKQogICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoZmlsZSBzdGF0IHJl c3VsdCkgICA7IGxlYWYKICAgICAgICAgICAgICAgICAgICAgICAgKHdhcm4tb24tZXJyb3IgKGRl bGV0ZS1maWxlIGZpbGUpIGZpbGUpKQogICAgICAgICAgICAgICAgICAgICAgKGNvbnN0ICN0KSAg ICAgICAgICAgICAgICAgICA7IGRvd24KICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGRp ciBzdGF0IHJlc3VsdCkgICAgOyB1cAogICAgICAgICAgICAgICAgICAgICAgICAod2Fybi1vbi1l cnJvciAocm1kaXIgZGlyKSBkaXIpKQogICAgICAgICAgICAgICAgICAgICAgKGNvbnN0ICN0KSAg ICAgICAgICAgICAgICAgICA7IHNraXAKICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGZp bGUgc3RhdCBlcnJubyByZXN1bHQpCiAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgKGN1 cnJlbnQtZXJyb3ItcG9ydCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2Fybmlu ZzogZmFpbGVkIHRvIGRlbGV0ZSB+YTogfmF+JSIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmaWxlIChzdHJlcnJvciBlcnJubykpKQogICAgICAgICAgICAgICAgICAgICAgI3QKICAg ICAgICAgICAgICAgICAgICAgIGRpcgoKICAgICAgICAgICAgICAgICAgICAgIDs7IERvbid0IGZv bGxvdyBzeW1saW5rcy4KICAgICAgICAgICAgICAgICAgICAgIGxzdGF0KSkpCgooZGVmaW5lIChm aWxlLW5hbWUtcHJlZGljYXRlIHJlZ2V4cCkKICAiUmV0dXJuIGEgcHJlZGljYXRlIHRoYXQgcmV0 dXJucyB0cnVlIHdoZW4gcGFzc2VkIGEgZmlsZSBuYW1lIHdob3NlIGJhc2UKbmFtZSBtYXRjaGVz IFJFR0VYUC4iCiAgKGxldCAoKGZpbGUtcnggKGlmIChyZWdleHA/IHJlZ2V4cCkKICAgICAgICAg ICAgICAgICAgICAgcmVnZXhwCiAgICAgICAgICAgICAgICAgICAgIChtYWtlLXJlZ2V4cCByZWdl eHApKSkpCiAgICAobGFtYmRhIChmaWxlIHN0YXQpCiAgICAgIChyZWdleHAtZXhlYyBmaWxlLXJ4 IChiYXNlbmFtZSBmaWxlKSkpKSkKCihkZWZpbmUqIChmaW5kLWZpbGVzIGRpciAjOm9wdGlvbmFs IChwcmVkIChjb25zdCAjdCkpCiAgICAgICAgICAgICAgICAgICAgICM6a2V5IChzdGF0IGxzdGF0 KQogICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcmllcz8KICAgICAgICAgICAgICAgICAgICAg ZmFpbC1vbi1lcnJvcj8pCiAgIlJldHVybiB0aGUgbGV4aWNvZ3JhcGhpY2FsbHkgc29ydGVkIGxp c3Qgb2YgZmlsZXMgdW5kZXIgRElSIGZvciB3aGljaCBQUkVECnJldHVybnMgdHJ1ZS4gIFBSRUQg aXMgcGFzc2VkIHR3byBhcmd1bWVudHM6IHRoZSBhYnNvbHV0ZSBmaWxlIG5hbWUsIGFuZCBpdHMK c3RhdCBidWZmZXI7IHRoZSBkZWZhdWx0IHByZWRpY2F0ZSBhbHdheXMgcmV0dXJucyB0cnVlLiAg UFJFRCBjYW4gYWxzbyBiZSBhCnJlZ3VsYXIgZXhwcmVzc2lvbiwgaW4gd2hpY2ggY2FzZSBpdCBp cyBlcXVpdmFsZW50IHRvIChmaWxlLW5hbWUtcHJlZGljYXRlClBSRUQpLiAgU1RBVCBpcyB1c2Vk IHRvIG9idGFpbiBmaWxlIGluZm9ybWF0aW9uOyB1c2luZyAnbHN0YXQnIG1lYW5zIHRoYXQKc3lt bGlua3MgYXJlIG5vdCBmb2xsb3dlZC4gIElmIERJUkVDVE9SSUVTPyBpcyB0cnVlLCB0aGVuIGRp cmVjdG9yaWVzIHdpbGwKYWxzbyBiZSBpbmNsdWRlZC4gIElmIEZBSUwtT04tRVJST1I/IGlzIHRy dWUsIHJhaXNlIGFuIGV4Y2VwdGlvbiB1cG9uIGVycm9yLiIKICAobGV0ICgocHJlZCAoaWYgKHBy b2NlZHVyZT8gcHJlZCkKICAgICAgICAgICAgICAgICAgcHJlZAogICAgICAgICAgICAgICAgICAo ZmlsZS1uYW1lLXByZWRpY2F0ZSBwcmVkKSkpKQogICAgOzsgU29ydCB0aGUgcmVzdWx0IHRvIGdl dCBkZXRlcm1pbmlzdGljIHJlc3VsdHMuCiAgICAoc29ydCAoZmlsZS1zeXN0ZW0tZm9sZCAoY29u c3QgI3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChmaWxlIHN0YXQgcmVz dWx0KSA7IGxlYWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChwcmVkIGZpbGUg c3RhdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zIGZpbGUgcmVzdWx0 KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChsYW1iZGEgKGRpciBzdGF0IHJlc3VsdCkgOyBkb3duCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChpZiAoYW5kIGRpcmVjdG9yaWVzPwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocHJlZCBkaXIgc3RhdCkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY29ucyBkaXIgcmVzdWx0KQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzdWx0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1i ZGEgKGRpciBzdGF0IHJlc3VsdCkgOyB1cAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXN1bHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChmaWxlIHN0YXQgcmVz dWx0KSA7IHNraXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoZmlsZSBzdGF0IGVycm5vIHJlc3VsdCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAoY3VycmVudC1lcnJvci1wb3J0KSAi ZmluZC1maWxlczogfmE6IH5hfiUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZmlsZSAoc3RyZXJyb3IgZXJybm8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo d2hlbiBmYWlsLW9uLWVycm9yPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJv ciAiZmluZC1maWxlcyBmYWlsZWQiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz dWx0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJygpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkaXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXQpCiAgICAgICAgICBz dHJpbmc8PykpKQoKKGRlZmluZS1zeW50YXgtcnVsZSAoZmFsc2UtaWYtZmlsZS1ub3QtZm91bmQg ZXhwKQogICJFdmFsdWF0ZSBFWFAgYnV0IHJldHVybiAjZiBpZiBpdCByYWlzZXMgdG8gJ3N5c3Rl bS1lcnJvciB3aXRoIEVOT0VOVC4iCiAgKGNhdGNoICdzeXN0ZW0tZXJyb3IKICAgIChsYW1iZGEg KCkgZXhwKQogICAgKGxhbWJkYSBhcmdzCiAgICAgIChpZiAoPSBFTk9FTlQgKHN5c3RlbS1lcnJv ci1lcnJubyBhcmdzKSkKICAgICAgICAgICNmCiAgICAgICAgICAoYXBwbHkgdGhyb3cgYXJncykp KSkpCgoMCjs7Owo7OzsgU2VhcmNoIHBhdGhzLgo7OzsKCihkZWZpbmUqIChzZWFyY2gtcGF0aC1h cy1saXN0IGZpbGVzIGlucHV0LWRpcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpr ZXkgKHR5cGUgJ2RpcmVjdG9yeSkgcGF0dGVybikKICAiUmV0dXJuIHRoZSBsaXN0IG9mIGRpcmVj dG9yaWVzIGFtb25nIEZJTEVTIG9mIHRoZSBnaXZlbiBUWVBFIChhIHN5bWJvbCBhcwpyZXR1cm5l ZCBieSAnc3RhdDp0eXBlJykgdGhhdCBleGlzdCBpbiBJTlBVVC1ESVJTLiAgRXhhbXBsZToKCiAg KHNlYXJjaC1wYXRoLWFzLWxpc3QgJyhcInNoYXJlL2VtYWNzL3NpdGUtbGlzcFwiIFwic2hhcmUv ZW1hY3MvMjQuMVwiKQogICAgICAgICAgICAgICAgICAgICAgIChsaXN0IFwiL3BhY2thZ2UxXCIg XCIvcGFja2FnZTJcIiBcIi9wYWNrYWdlM1wiKSkKICA9PiAoXCIvcGFja2FnZTEvc2hhcmUvZW1h Y3Mvc2l0ZS1saXNwXCIKICAgICAgXCIvcGFja2FnZTMvc2hhcmUvZW1hY3Mvc2l0ZS1saXNwXCIp CgpXaGVuIFBBVFRFUk4gaXMgdHJ1ZSwgaXQgaXMgYSByZWd1bGFyIGV4cHJlc3Npb24gZGVub3Rp bmcgZmlsZSBuYW1lcyB0byBsb29rCmZvciB1bmRlciB0aGUgZGlyZWN0b3JpZXMgZGVzaWduYXRl ZCBieSBGSUxFUy4gIEZvciBleGFtcGxlOgoKICAoc2VhcmNoLXBhdGgtYXMtbGlzdCAnKFwieG1s XCIpIChsaXN0IGRvY2Jvb2steG1sIGRvY2Jvb2steHNsKQogICAgICAgICAgICAgICAgICAgICAg ICM6dHlwZSAncmVndWxhcgogICAgICAgICAgICAgICAgICAgICAgICM6cGF0dGVybiBcIl5jYXRh bG9nXFxcXC54bWwkXCIpCiAgPT4gKFwiL+KApi94bWwvZHRkL2RvY2Jvb2svY2F0YWxvZy54bWxc IgogICAgICBcIi/igKYveG1sL3hzbC9kb2Nib29rLXhzbC0xLjc4LjEvY2F0YWxvZy54bWxcIikK IgogIChhcHBlbmQtbWFwIChsYW1iZGEgKGlucHV0KQogICAgICAgICAgICAgICAgKGFwcGVuZC1t YXAgKGxhbWJkYSAoZmlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGZp bGUgKHN0cmluZy1hcHBlbmQgaW5wdXQgIi8iIGZpbGUpKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoaWYgcGF0dGVybgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoZmluZC1maWxlcyBmaWxlIChsYW1iZGEgKGZpbGUgc3RhdCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgc3RhdAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXE/IHR5 cGUgKHN0YXQ6dHlwZSBzdGF0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKChmaWxlLW5hbWUtcHJlZGljYXRlIHBhdHRlcm4pIGZp bGUgc3RhdCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjOnN0YXQgc3RhdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjOmRpcmVjdG9yaWVzPyAjdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGxldCAoKHN0YXQgKHN0YXQgZmlsZSAjZikpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChpZiAoYW5kIHN0YXQgKGVxPyB0eXBlIChzdGF0OnR5cGUgc3RhdCkpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCBmaWxlKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCkpKSkpKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgZmlsZXMpKQogICAgICAgICAgICAgIChkZWxldGUtZHVwbGljYXRl cyBpbnB1dC1kaXJzKSkpCgooZGVmaW5lIChsaXN0LT5zZWFyY2gtcGF0aC1hcy1zdHJpbmcgbHN0 IHNlcGFyYXRvcikKICAoaWYgc2VwYXJhdG9yCiAgICAgIChzdHJpbmctam9pbiBsc3Qgc2VwYXJh dG9yKQogICAgICAobWF0Y2ggbHN0CiAgICAgICAgKChoZWFkIHJlc3QgLi4uKSBoZWFkKQogICAg ICAgICgoKSAiIikpKSkKCihkZWZpbmUqIChzZWFyY2gtcGF0aC1hcy1zdHJpbmctPmxpc3QgcGF0 aCAjOm9wdGlvbmFsIChzZXBhcmF0b3IgI1w6KSkKICAoaWYgc2VwYXJhdG9yCiAgICAgIChzdHJp bmctdG9rZW5pemUgcGF0aAogICAgICAgICAgICAgICAgICAgICAgIChjaGFyLXNldC1jb21wbGVt ZW50IChjaGFyLXNldCBzZXBhcmF0b3IpKSkKICAgICAgKGxpc3QgcGF0aCkpKQoKKGRlZmluZSog KHNldC1wYXRoLWVudmlyb25tZW50LXZhcmlhYmxlIGVudi12YXIgZmlsZXMgaW5wdXQtZGlycwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzprZXkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXBhcmF0b3IgIjoiKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGUgJ2RpcmVjdG9yeSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm4pCiAgIkxvb2sgZm9yIGVhY2ggb2Yg RklMRVMgb2YgdGhlIGdpdmVuIFRZUEUgKGEgc3ltYm9sIGFzIHJldHVybmVkIGJ5CidzdGF0OnR5 cGUnKSBpbiBJTlBVVC1ESVJTLiAgU2V0IEVOVi1WQVIgdG8gYSBTRVBBUkFUT1Itc2VwYXJhdGVk IHBhdGgKYWNjb3JkaW5nbHkuICBFeGFtcGxlOgoKICAoc2V0LXBhdGgtZW52aXJvbm1lbnQtdmFy aWFibGUgXCJQS0dfQ09ORklHXCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhc ImxpYi9wa2djb25maWdcIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3Qg cGFja2FnZTEgcGFja2FnZTIpKQoKV2hlbiBQQVRURVJOIGlzIG5vdCAjZiwgaXQgbXVzdCBiZSBh IHJlZ3VsYXIgZXhwcmVzc2lvbiAocmVhbGx5IGEgc3RyaW5nKQpkZW5vdGluZyBmaWxlIG5hbWVz IHRvIGxvb2sgZm9yIHVuZGVyIHRoZSBkaXJlY3RvcmllcyBkZXNpZ25hdGVkIGJ5IEZJTEVTOgoK ICAoc2V0LXBhdGgtZW52aXJvbm1lbnQtdmFyaWFibGUgXCJYTUxfQ0FUQUxPR19GSUxFU1wiCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoXCJ4bWxcIikKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGxpc3QgZG9jYm9vay14bWwgZG9jYm9vay14c2wpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICM6dHlwZSAncmVndWxhcgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjOnBhdHRlcm4gXCJeY2F0YWxvZ1xcXFwueG1sJFwiKQoiCiAgKGxl dCogKChwYXRoICAoc2VhcmNoLXBhdGgtYXMtbGlzdCBmaWxlcyBpbnB1dC1kaXJzCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOnR5cGUgdHlwZQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIzpwYXR0ZXJuIHBhdHRlcm4pKQogICAgICAgICAodmFsdWUg KGxpc3QtPnNlYXJjaC1wYXRoLWFzLXN0cmluZyBwYXRoIHNlcGFyYXRvcikpKQogICAgKGlmIChz dHJpbmctbnVsbD8gdmFsdWUpCiAgICAgICAgKGJlZ2luCiAgICAgICAgICA7OyBOZXZlciBzZXQg RU5WLVZBUiB0byBhbiBlbXB0eSBzdHJpbmcgYmVjYXVzZSBvZnRlbiwgdGhlIGVtcHR5CiAgICAg ICAgICA7OyBzdHJpbmcgaXMgZXF1aXZhbGVudCB0byAiLiIuICBUaGlzIGlzIHRoZSBjYXNlIGZv cgogICAgICAgICAgOzsgR1VJTEVfTE9BRF9QQVRIIGluIEd1aWxlIDIuMCwgZm9yIGluc3RhbmNl LgogICAgICAgICAgKHVuc2V0ZW52IGVudi12YXIpCiAgICAgICAgICAoZm9ybWF0ICN0ICJlbnZp cm9ubWVudCB2YXJpYWJsZSBgfmEnIHVuc2V0fiUiIGVudi12YXIpKQogICAgICAgIChiZWdpbgog ICAgICAgICAgKHNldGVudiBlbnYtdmFyIHZhbHVlKQogICAgICAgICAgKGZvcm1hdCAjdCAiZW52 aXJvbm1lbnQgdmFyaWFibGUgYH5hJyBzZXQgdG8gYH5hJ34lIgogICAgICAgICAgICAgICAgICBl bnYtdmFyIHZhbHVlKSkpKSkKCihkZWZpbmUgKHdoaWNoIHByb2dyYW0pCiAgIlJldHVybiB0aGUg Y29tcGxldGUgZmlsZSBuYW1lIGZvciBQUk9HUkFNIGFzIGZvdW5kIGluICRQQVRILCBvciAjZiBp ZgpQUk9HUkFNIGNvdWxkIG5vdCBiZSBmb3VuZC4iCiAgKHNlYXJjaC1wYXRoIChzZWFyY2gtcGF0 aC1hcy1zdHJpbmctPmxpc3QgKGdldGVudiAiUEFUSCIpKQogICAgICAgICAgICAgICBwcm9ncmFt KSkKCihkZWZpbmUtY29uZGl0aW9uLXR5cGUgJnNlYXJjaC1lcnJvciAmZXJyb3IKICBzZWFyY2gt ZXJyb3I/CiAgKHBhdGggICAgICAgICBzZWFyY2gtZXJyb3ItcGF0aCkKICAoZmlsZSAgICAgICAg IHNlYXJjaC1lcnJvci1maWxlKSkKCihkZWZpbmUgKHNlYXJjaC1pbnB1dC1maWxlIGlucHV0cyBm aWxlKQogICJGaW5kIGEgZmlsZSBuYW1lZCBGSUxFIGFtb25nIHRoZSBJTlBVVFMgYW5kIHJldHVy biBpdHMgYWJzb2x1dGUgZmlsZSBuYW1lLgoKRklMRSBtdXN0IGJlIGEgc3RyaW5nIGxpa2UgXCJi aW4vc2hcIi4gSWYgRklMRSBpcyBub3QgZm91bmQsIGFuIGV4Y2VwdGlvbiBpcwpyYWlzZWQuIgog IChtYXRjaCBpbnB1dHMKICAgICgoKF8gLiBkaXJlY3RvcmllcykgLi4uKQogICAgIDs7IEFjY2Vw dCBib3RoICJiaW4vc2giIGFuZCAiL2Jpbi9zaCIgYXMgRklMRSBhcmd1bWVudC4KICAgICAobGV0 ICgoZmlsZSAoc3RyaW5nLXRyaW0gZmlsZSAjXC8pKSkKICAgICAgIChvciAoc2VhcmNoLXBhdGgg ZGlyZWN0b3JpZXMgZmlsZSkKICAgICAgICAgICAocmFpc2UKICAgICAgICAgICAgKGNvbmRpdGlv biAoJnNlYXJjaC1lcnJvciAocGF0aCBkaXJlY3RvcmllcykgKGZpbGUgZmlsZSkpKSkpKSkpKQoK KGRlZmluZSAoc2VhcmNoLWlucHV0LWRpcmVjdG9yeSBpbnB1dHMgZGlyZWN0b3J5KQogICJGaW5k IGEgc3ViLWRpcmVjdG9yeSBuYW1lZCBESVJFQ1RPUlkgYW1vbmcgdGhlIElOUFVUUyBhbmQgcmV0 dXJuIGl0cwphYnNvbHV0ZSBmaWxlIG5hbWUuCgpESVJFQ1RPUlkgbXVzdCBiZSBhIHN0cmluZyBs aWtlIFwieG1sL2R0ZC9kb2Nib29rXCIuICBJZiBESVJFQ1RPUlkgaXMgbm90CmZvdW5kLCBhbiBl eGNlcHRpb24gaXMgcmFpc2VkLiIKICAobWF0Y2ggaW5wdXRzCiAgICAoKChfIC4gZGlyZWN0b3Jp ZXMpIC4uLikKICAgICAob3IgKGFueSAobGFtYmRhIChwYXJlbnQpCiAgICAgICAgICAgICAgICAo bGV0ICgoZGlyZWN0b3J5IChzdHJpbmctYXBwZW5kIHBhcmVudCAiLyIgZGlyZWN0b3J5KSkpCiAg ICAgICAgICAgICAgICAgIChhbmQgKGRpcmVjdG9yeS1leGlzdHM/IGRpcmVjdG9yeSkKICAgICAg ICAgICAgICAgICAgICAgICBkaXJlY3RvcnkpKSkKICAgICAgICAgICAgICBkaXJlY3RvcmllcykK ICAgICAgICAgKHJhaXNlIChjb25kaXRpb24KICAgICAgICAgICAgICAgICAoJnNlYXJjaC1lcnJv ciAocGF0aCBkaXJlY3RvcmllcykgKGZpbGUgZGlyZWN0b3J5KSkpKSkpKSkKCgwKOzs7Cjs7OyBQ aGFzZXMuCjs7Owo7OzsgSW4gKGd1aXggYnVpbGQgZ251LWJ1aWxkLXN5c3RlbSksIHRoZXJlIGFy ZSBzZXBhcmF0ZSBwaGFzZXMgKGNvbmZpZ3VyZSwKOzs7IGJ1aWxkLCB0ZXN0LCBpbnN0YWxsKS4g IFRoZXkgYXJlIHJlcHJlc2VudGVkIGFzIGEgbGlzdCBvZiBuYW1lL3Byb2NlZHVyZQo7OzsgcGFp cnMuICBUaGUgZm9sbG93aW5nIHByb2NlZHVyZXMgbWFrZSBpdCBlYXN5IHRvIGNoYW5nZSB0aGUg bGlzdCBvZgo7OzsgcGhhc2VzLgo7OzsKCihkZWZpbmUgKGV2ZXJ5KiBwcmVkIGxzdCkKICAiVGhp cyBpcyBsaWtlICdldmVyeScsIGJ1dCBwcm9jZXNzIGFsbCB0aGUgZWxlbWVudHMgb2YgTFNUIGlu c3RlYWQgb2YKc3RvcHBpbmcgYXMgc29vbiBhcyBQUkVEIHJldHVybnMgZmFsc2UuICBUaGlzIGlz IHVzZWZ1bCB3aGVuIFBSRUQgaGFzIHNpZGUKZWZmZWN0cywgc3VjaCBhcyBkaXNwbGF5aW5nIHdh cm5pbmdzIG9yIGVycm9yIG1lc3NhZ2VzLiIKICAobGV0IGxvb3AgKChsc3QgICAgbHN0KQogICAg ICAgICAgICAgKHJlc3VsdCAjdCkpCiAgICAobWF0Y2ggbHN0CiAgICAgICgoKQogICAgICAgcmVz dWx0KQogICAgICAoKGhlYWQgLiB0YWlsKQogICAgICAgKGxvb3AgdGFpbCAoYW5kIChwcmVkIGhl YWQpIHJlc3VsdCkpKSkpKQoKKGRlZmluZSogKGFsaXN0LWNvbnMtYmVmb3JlIHJlZmVyZW5jZSBr ZXkgdmFsdWUgYWxpc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6b3B0aW9uYWwgKGtl eT0/IGVxdWFsPykpCiAgIkluc2VydCB0aGUgS0VZL1ZBTFVFIHBhaXIgYmVmb3JlIHRoZSBmaXJz dCBvY2N1cnJlbmNlIG9mIGEgcGFpciB3aG9zZSBrZXkKaXMgUkVGRVJFTkNFIGluIEFMSVNULiAg VXNlIEtFWT0/IHRvIGNvbXBhcmUga2V5cy4iCiAgKGxldC12YWx1ZXMgKCgoYmVmb3JlIGFmdGVy KQogICAgICAgICAgICAgICAgKGJyZWFrIChtYXRjaC1sYW1iZGEKICAgICAgICAgICAgICAgICAg ICAgICAgKChrIC4gXykKICAgICAgICAgICAgICAgICAgICAgICAgIChrZXk9PyBrIHJlZmVyZW5j ZSkpKQogICAgICAgICAgICAgICAgICAgICAgIGFsaXN0KSkpCiAgICAoYXBwZW5kIGJlZm9yZSAo YWxpc3QtY29ucyBrZXkgdmFsdWUgYWZ0ZXIpKSkpCgooZGVmaW5lKiAoYWxpc3QtY29ucy1hZnRl ciByZWZlcmVuY2Uga2V5IHZhbHVlIGFsaXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICM6 b3B0aW9uYWwgKGtleT0/IGVxdWFsPykpCiAgIkluc2VydCB0aGUgS0VZL1ZBTFVFIHBhaXIgYWZ0 ZXIgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSBwYWlyIHdob3NlIGtleQppcyBSRUZFUkVOQ0Ug aW4gQUxJU1QuICBVc2UgS0VZPT8gdG8gY29tcGFyZSBrZXlzLiIKICAobGV0LXZhbHVlcyAoKChi ZWZvcmUgYWZ0ZXIpCiAgICAgICAgICAgICAgICAoYnJlYWsgKG1hdGNoLWxhbWJkYQogICAgICAg ICAgICAgICAgICAgICAgICAoKGsgLiBfKQogICAgICAgICAgICAgICAgICAgICAgICAgKGtleT0/ IGsgcmVmZXJlbmNlKSkpCiAgICAgICAgICAgICAgICAgICAgICAgYWxpc3QpKSkKICAgIChtYXRj aCBhZnRlcgogICAgICAoKHJlZmVyZW5jZSBhZnRlciAuLi4pCiAgICAgICAoYXBwZW5kIGJlZm9y ZSAoY29ucyogcmVmZXJlbmNlIGAoLGtleSAuICx2YWx1ZSkgYWZ0ZXIpKSkKICAgICAgKCgpCiAg ICAgICAoYXBwZW5kIGJlZm9yZSBgKCgsa2V5IC4gLHZhbHVlKSkpKSkpKQoKKGRlZmluZSogKGFs aXN0LXJlcGxhY2Uga2V5IHZhbHVlIGFsaXN0ICM6b3B0aW9uYWwgKGtleT0/IGVxdWFsPykpCiAg IlJlcGxhY2UgdGhlIGZpcnN0IHBhaXIgaW4gQUxJU1Qgd2hvc2UgY2FyIGlzIEtFWSB3aXRoIHRo ZSBLRVkvVkFMVUUgcGFpci4KQW4gZXJyb3IgaXMgcmFpc2VkIHdoZW4gbm8gc3VjaCBwYWlyIGV4 aXN0cy4iCiAgKGxldC12YWx1ZXMgKCgoYmVmb3JlIGFmdGVyKQogICAgICAgICAgICAgICAgKGJy ZWFrIChtYXRjaC1sYW1iZGEKICAgICAgICAgICAgICAgICAgICAgICAgKChrIC4gXykKICAgICAg ICAgICAgICAgICAgICAgICAgIChrZXk9PyBrIGtleSkpKQogICAgICAgICAgICAgICAgICAgICAg IGFsaXN0KSkpCiAgICAobWF0Y2ggYWZ0ZXIKICAgICAgKChfIGFmdGVyIC4uLikKICAgICAgIChh cHBlbmQgYmVmb3JlIChhbGlzdC1jb25zIGtleSB2YWx1ZSBhZnRlcikpKSkpKQoKKGRlZmluZS1z eW50YXgtcnVsZSAobW9kaWZ5LXBoYXNlcyBwaGFzZXMgbW9kLXNwZWMgLi4uKQogICJNb2RpZnkg UEhBU0VTIHNlcXVlbnRpYWxseSBhcyBwZXIgZWFjaCBNT0QtU1BFQywgd2hpY2ggbWF5IGhhdmUg b25lIG9mIHRoZQpmb2xsb3dpbmcgZm9ybXM6CgogIChkZWxldGUgPG9sZC1waGFzZS1uYW1lPikK ICAocmVwbGFjZSA8b2xkLXBoYXNlLW5hbWU+IDxuZXctcGhhc2U+KQogIChhZGQtYmVmb3JlIDxv bGQtcGhhc2UtbmFtZT4gPG5ldy1waGFzZS1uYW1lPiA8bmV3LXBoYXNlPikKICAoYWRkLWFmdGVy IDxvbGQtcGhhc2UtbmFtZT4gPG5ldy1waGFzZS1uYW1lPiA8bmV3LXBoYXNlPikKCldoZXJlIGV2 ZXJ5IDwqLXBoYXNlLW5hbWU+IGlzIGFuIGV4cHJlc3Npb24gZXZhbHVhdGluZyB0byBhIHN5bWJv bCwgYW5kCjxuZXctcGhhc2U+IGFuIGV4cHJlc3Npb24gZXZhbHVhdGluZyB0byBhIHByb2NlZHVy ZS4iCiAgKGxldCogKChwaGFzZXMqIHBoYXNlcykKICAgICAgICAgKHBoYXNlcyogKCVtb2RpZnkt cGhhc2VzIHBoYXNlcyogbW9kLXNwZWMpKQogICAgICAgICAuLi4pCiAgICBwaGFzZXMqKSkKCihk ZWZpbmUtc3ludGF4ICVtb2RpZnktcGhhc2VzCiAgKHN5bnRheC1ydWxlcyAoZGVsZXRlIHJlcGxh Y2UgYWRkLWJlZm9yZSBhZGQtYWZ0ZXIpCiAgICAoKF8gcGhhc2VzIChkZWxldGUgb2xkLXBoYXNl LW5hbWUpKQogICAgIChhbGlzdC1kZWxldGUgb2xkLXBoYXNlLW5hbWUgcGhhc2VzKSkKICAgICgo XyBwaGFzZXMgKHJlcGxhY2Ugb2xkLXBoYXNlLW5hbWUgbmV3LXBoYXNlKSkKICAgICAoYWxpc3Qt cmVwbGFjZSBvbGQtcGhhc2UtbmFtZSBuZXctcGhhc2UgcGhhc2VzKSkKICAgICgoXyBwaGFzZXMg KGFkZC1iZWZvcmUgb2xkLXBoYXNlLW5hbWUgbmV3LXBoYXNlLW5hbWUgbmV3LXBoYXNlKSkKICAg ICAoYWxpc3QtY29ucy1iZWZvcmUgb2xkLXBoYXNlLW5hbWUgbmV3LXBoYXNlLW5hbWUgbmV3LXBo YXNlIHBoYXNlcykpCiAgICAoKF8gcGhhc2VzIChhZGQtYWZ0ZXIgb2xkLXBoYXNlLW5hbWUgbmV3 LXBoYXNlLW5hbWUgbmV3LXBoYXNlKSkKICAgICAoYWxpc3QtY29ucy1hZnRlciBvbGQtcGhhc2Ut bmFtZSBuZXctcGhhc2UtbmFtZSBuZXctcGhhc2UgcGhhc2VzKSkpKQoKDAo7OzsKOzs7IFByb2dy YW0gaW52b2NhdGlvbi4KOzs7CgooZGVmaW5lLWNvbmRpdGlvbi10eXBlICZpbnZva2UtZXJyb3Ig JmVycm9yCiAgaW52b2tlLWVycm9yPwogIChwcm9ncmFtICAgICAgaW52b2tlLWVycm9yLXByb2dy YW0pCiAgKGFyZ3VtZW50cyAgICBpbnZva2UtZXJyb3ItYXJndW1lbnRzKQogIChleGl0LXN0YXR1 cyAgaW52b2tlLWVycm9yLWV4aXQtc3RhdHVzKQogICh0ZXJtLXNpZ25hbCAgaW52b2tlLWVycm9y LXRlcm0tc2lnbmFsKQogIChzdG9wLXNpZ25hbCAgaW52b2tlLWVycm9yLXN0b3Atc2lnbmFsKSkK CihkZWZpbmUgKGludm9rZSBwcm9ncmFtIC4gYXJncykKICAiSW52b2tlIFBST0dSQU0gd2l0aCB0 aGUgZ2l2ZW4gQVJHUy4gIFJhaXNlIGFuIGV4Y2VwdGlvbgppZiB0aGUgZXhpdCBjb2RlIGlzIG5v bi16ZXJvOyBvdGhlcndpc2UgcmV0dXJuICN0LiIKICAobGV0ICgoY29kZSAoYXBwbHkgc3lzdGVt KiBwcm9ncmFtIGFyZ3MpKSkKICAgICh1bmxlc3MgKHplcm8/IGNvZGUpCiAgICAgIChyYWlzZSAo Y29uZGl0aW9uICgmaW52b2tlLWVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZ3Jh bSBwcm9ncmFtKQogICAgICAgICAgICAgICAgICAgICAgICAgKGFyZ3VtZW50cyBhcmdzKQogICAg ICAgICAgICAgICAgICAgICAgICAgKGV4aXQtc3RhdHVzIChzdGF0dXM6ZXhpdC12YWwgY29kZSkp CiAgICAgICAgICAgICAgICAgICAgICAgICAodGVybS1zaWduYWwgKHN0YXR1czp0ZXJtLXNpZyBj b2RlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIChzdG9wLXNpZ25hbCAoc3RhdHVzOnN0b3At c2lnIGNvZGUpKSkpKSkKICAgICN0KSkKCihkZWZpbmUqIChyZXBvcnQtaW52b2tlLWVycm9yIGMg IzpvcHRpb25hbCAocG9ydCAoY3VycmVudC1lcnJvci1wb3J0KSkpCiAgIlJlcG9ydCB0byBQT1JU IGFib3V0IEMsIGFuICcmaW52b2tlLWVycm9yJyBjb25kaXRpb24sIGluIGEgaHVtYW4tZnJpZW5k bHkKd2F5LiIKICAoZm9ybWF0IHBvcnQgImNvbW1hbmR+eyB+c359IGZhaWxlZCB3aXRoIH46W3Np Z25hbH47c3RhdHVzfl0gfmF+JSIKICAgICAgICAgIChjb25zIChpbnZva2UtZXJyb3ItcHJvZ3Jh bSBjKQogICAgICAgICAgICAgICAgKGludm9rZS1lcnJvci1hcmd1bWVudHMgYykpCiAgICAgICAg ICAoaW52b2tlLWVycm9yLWV4aXQtc3RhdHVzIGMpCiAgICAgICAgICAob3IgKGludm9rZS1lcnJv ci1leGl0LXN0YXR1cyBjKQogICAgICAgICAgICAgIChpbnZva2UtZXJyb3ItdGVybS1zaWduYWwg YykKICAgICAgICAgICAgICAoaW52b2tlLWVycm9yLXN0b3Atc2lnbmFsIGMpKSkpCgooZGVmaW5l IChvcGVuLXBpcGUtd2l0aC1zdGRlcnIgcHJvZ3JhbSAuIGFyZ3MpCiAgIlJ1biBQUk9HUkFNIHdp dGggQVJHUyBpbiBhbiBpbnB1dCBwaXBlLCBidXQsIHVubGlrZSAnb3Blbi1waXBlKicsIHJlZGly ZWN0CmJvdGggaXRzIHN0YW5kYXJkIG91dHB1dCBhbmQgc3RhbmRhcmQgZXJyb3IgdG8gdGhlIHBp cGUuICBSZXR1cm4gdHdvIHZhbHVlOgp0aGUgcGlwZSB0byByZWFkIFBST0dSQU0ncyBkYXRhIGZy b20sIGFuZCB0aGUgUElEIG9mIHRoZSBjaGlsZCBwcm9jZXNzIHJ1bm5pbmcKUFJPR1JBTS4iCiAg OzsgJ29wZW4tcGlwZSonIGRvZXNuJ3QgYXR0ZW1wdCB0byBjYXB0dXJlIHN0ZGVyciBpbiBhbnkg d2F5LCB3aGljaCBpcyB3aHkKICA7OyB3ZSBuZWVkIHRvIHJvbGwgb3VyIG93bi4KICAobWF0Y2gg KHBpcGUpCiAgICAoKGlucHV0IC4gIG91dHB1dCkKICAgICAobWF0Y2ggKHByaW1pdGl2ZS1mb3Jr KQogICAgICAgKDAKICAgICAgICAoZHluYW1pYy13aW5kCiAgICAgICAgICAoY29uc3QgI3QpCiAg ICAgICAgICAobGFtYmRhICgpCiAgICAgICAgICAgIChjbG9zZS1wb3J0IGlucHV0KQogICAgICAg ICAgICAoZHVwMiAoZmlsZW5vIG91dHB1dCkgMSkKICAgICAgICAgICAgKGR1cDIgKGZpbGVubyBv dXRwdXQpIDIpCiAgICAgICAgICAgIChhcHBseSBleGVjbHAgcHJvZ3JhbSBwcm9ncmFtIGFyZ3Mp KQogICAgICAgICAgKGxhbWJkYSAoKQogICAgICAgICAgICAocHJpbWl0aXZlLWV4aXQgMTI3KSkp KQogICAgICAgKHBpZAogICAgICAgIChjbG9zZS1wb3J0IG91dHB1dCkKICAgICAgICAodmFsdWVz IGlucHV0IHBpZCkpKSkpKQoKKGRlZmluZSAoaW52b2tlL3F1aWV0IHByb2dyYW0gLiBhcmdzKQog ICJJbnZva2UgUFJPR1JBTSB3aXRoIEFSR1MgYW5kIGNhcHR1cmUgUFJPR1JBTSdzIHN0YW5kYXJk IG91dHB1dCBhbmQgc3RhbmRhcmQKZXJyb3IuICBJZiBQUk9HUkFNIHN1Y2NlZWRzLCBwcmludCBu b3RoaW5nIGFuZCByZXR1cm4gdGhlIHVuc3BlY2lmaWVkIHZhbHVlOwpvdGhlcndpc2UsIHJhaXNl IGEgJyZtZXNzYWdlJyBlcnJvciBjb25kaXRpb24gdGhhdCBpbmNsdWRlcyB0aGUgc3RhdHVzIGNv ZGUKYW5kIHRoZSBvdXRwdXQgb2YgUFJPR1JBTS4iCiAgKGxldC12YWx1ZXMgKCgocGlwZSBwaWQp CiAgICAgICAgICAgICAgICAoYXBwbHkgb3Blbi1waXBlLXdpdGgtc3RkZXJyIHByb2dyYW0gYXJn cykpKQogICAgKGxldCBsb29wICgobGluZXMgJygpKSkKICAgICAgKG1hdGNoIChyZWFkLWxpbmUg cGlwZSkKICAgICAgICAoKD8gZW9mLW9iamVjdD8pCiAgICAgICAgIChjbG9zZS1wb3J0IHBpcGUp CiAgICAgICAgIChtYXRjaCAod2FpdHBpZCBwaWQpCiAgICAgICAgICAgKChfIC4gc3RhdHVzKQog ICAgICAgICAgICAodW5sZXNzICh6ZXJvPyBzdGF0dXMpCiAgICAgICAgICAgICAgKGxldC1zeW50 YXggKChHXyAoc3ludGF4LXJ1bGVzICgpICAgO2ZvciB4Z2V0dGV4dAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoKF8gc3RyKSBzdHIpKSkpCiAgICAgICAgICAgICAgICAocmFpc2Ug KGNvbmRpdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAoJm1lc3NhZ2UKICAgICAgICAgICAg ICAgICAgICAgICAgIChtZXNzYWdlIChmb3JtYXQgI2YgKEdfICInfmF+eyB+YX59JyBleGl0ZWQg XAp3aXRoIHN0YXR1cyB+YTsgb3V0cHV0IGZvbGxvd3M6fiV+JX57ICB+YX4lfn0iKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtIGFyZ3MKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChzdGF0dXM6ZXhpdC12YWwgc3Rh dHVzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVz KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmV2ZXJzZSBsaW5l cykpKSkpKSkpKSkpCiAgICAgICAgKGxpbmUKICAgICAgICAgKGxvb3AgKGNvbnMgbGluZSBsaW5l cykpKSkpKSkKCgwKOzs7Cjs7OyBUZXh0IHN1YnN0aXR1dGlvbiAoYWthLiBzZWQpLgo7OzsKCihk ZWZpbmUgKHdpdGgtYXRvbWljLWZpbGUtcmVwbGFjZW1lbnQgZmlsZSBwcm9jKQogICJDYWxsIFBS T0Mgd2l0aCB0d28gYXJndW1lbnRzOiBhbiBpbnB1dCBwb3J0IGZvciBGSUxFLCBhbmQgYW4gb3V0 cHV0CnBvcnQgZm9yIHRoZSBmaWxlIHRoYXQgaXMgZ29pbmcgdG8gcmVwbGFjZSBGSUxFLiAgVXBv biBzdWNjZXNzLCBGSUxFIGlzCmF0b21pY2FsbHkgcmVwbGFjZWQgYnkgd2hhdCBoYXMgYmVlbiB3 cml0dGVuIHRvIHRoZSBvdXRwdXQgcG9ydCwgYW5kClBST0MncyByZXN1bHQgaXMgcmV0dXJuZWQu IgogIChsZXQqICgodGVtcGxhdGUgKHN0cmluZy1hcHBlbmQgZmlsZSAiLlhYWFhYWCIpKQogICAg ICAgICAob3V0ICAgICAgKG1rc3RlbXAhIHRlbXBsYXRlKSkKICAgICAgICAgKG1vZGUgICAgIChz dGF0Om1vZGUgKHN0YXQgZmlsZSkpKSkKICAgICh3aXRoLXRocm93LWhhbmRsZXIgI3QKICAgICAg KGxhbWJkYSAoKQogICAgICAgIChjYWxsLXdpdGgtaW5wdXQtZmlsZSBmaWxlCiAgICAgICAgICAo bGFtYmRhIChpbikKICAgICAgICAgICAgKGxldCAoKHJlc3VsdCAocHJvYyBpbiBvdXQpKSkKICAg ICAgICAgICAgICAoY2xvc2Ugb3V0KQogICAgICAgICAgICAgIChjaG1vZCB0ZW1wbGF0ZSBtb2Rl KQogICAgICAgICAgICAgIChyZW5hbWUtZmlsZSB0ZW1wbGF0ZSBmaWxlKQogICAgICAgICAgICAg IHJlc3VsdCkpKSkKICAgICAgKGxhbWJkYSAoa2V5IC4gYXJncykKICAgICAgICAoZmFsc2UtaWYt ZXhjZXB0aW9uIChkZWxldGUtZmlsZSB0ZW1wbGF0ZSkpKSkpKQoKKGRlZmluZSAodW51c2VkLXBy aXZhdGUtdXNlLWNvZGUtcG9pbnQgcykKICAiRmluZCBhIGNvZGUgcG9pbnQgd2l0aGluIGEgVW5p Y29kZSBQcml2YXRlIFVzZSBBcmVhIHRoYXQgaXMgbm90CnByZXNlbnQgaW4gUywgYW5kIHJldHVy biB0aGUgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIgb2JqZWN0LiAgSWYgb25lCmNhbm5vdCBiZSBm b3VuZCwgcmV0dXJuIGZhbHNlLiIKICAoZGVmaW5lIChzY2FuIGxvIGhpKQogICAgKGFuZCAoPD0g bG8gaGkpCiAgICAgICAgIChsZXQgKChjIChpbnRlZ2VyLT5jaGFyIGxvKSkpCiAgICAgICAgICAg KGlmIChzdHJpbmctaW5kZXggcyBjKQogICAgICAgICAgICAgICAoc2NhbiAoKyBsbyAxKSBoaSkK ICAgICAgICAgICAgICAgYykpKSkKICAob3IgKHNjYW4gICAjeEUwMDAgICAjeEY4RkYpCiAgICAg IChzY2FuICAjeEYwMDAwICAjeEZGRkZEKQogICAgICAoc2NhbiAjeDEwMDAwMCAjeDEwRkZGRCkp KQoKKGRlZmluZSAocmVwbGFjZS1jaGFyIGMxIGMyIHMpCiAgIlJldHVybiBhIHN0cmluZyB3aGlj aCBpcyBlcXVhbCB0byBTIGV4Y2VwdCB3aXRoIGFsbCBpbnN0YW5jZXMgb2YgQzEKcmVwbGFjZWQg YnkgQzIuICBJZiBDMSBhbmQgQzIgYXJlIGVxdWFsLCByZXR1cm4gUy4iCiAgKGlmIChjaGFyPT8g YzEgYzIpCiAgICAgIHMKICAgICAgKHN0cmluZy1tYXAgKGxhbWJkYSAoYykKICAgICAgICAgICAg ICAgICAgICAoaWYgKGNoYXI9PyBjIGMxKQogICAgICAgICAgICAgICAgICAgICAgICBjMgogICAg ICAgICAgICAgICAgICAgICAgICBjKSkKICAgICAgICAgICAgICAgICAgcykpKQoKKGRlZmluZSAo c3Vic3RpdHV0ZSBmaWxlIHBhdHRlcm4rcHJvY3MpCiAgIlBBVFRFUk4rUFJPQ1MgaXMgYSBsaXN0 IG9mIHJlZ2V4cC90d28tYXJndW1lbnQtcHJvY2VkdXJlIHBhaXJzLiAgRm9yIGVhY2gKbGluZSBv ZiBGSUxFLCBhbmQgZm9yIGVhY2ggUEFUVEVSTiB0aGF0IGl0IG1hdGNoZXMsIGNhbGwgdGhlIGNv cnJlc3BvbmRpbmcKUFJPQyBhcyAoUFJPQyBMSU5FIE1BVENIRVMpOyBQUk9DIG11c3QgcmV0dXJu IHRoZSBsaW5lIHRoYXQgd2lsbCBiZSB3cml0dGVuIGFzCmEgc3Vic3RpdHV0aW9uIG9mIHRoZSBv cmlnaW5hbCBsaW5lLiAgQmUgY2FyZWZ1bCBhYm91dCB1c2luZyAnJCcgdG8gbWF0Y2ggdGhlCmVu ZCBvZiBhIGxpbmU7IGJ5IGl0c2VsZiBpdCB3b24ndCBtYXRjaCB0aGUgdGVybWluYXRpbmcgbmV3 bGluZSBvZiBhIGxpbmUuIgogIChsZXQgKChyeCtwcm9jICAobWFwIChtYXRjaC1sYW1iZGEKICAg ICAgICAgICAgICAgICAgICAgICAgKCgoPyByZWdleHA/IHBhdHRlcm4pIC4gcHJvYykKICAgICAg ICAgICAgICAgICAgICAgICAgIChjb25zIHBhdHRlcm4gcHJvYykpCiAgICAgICAgICAgICAgICAg ICAgICAgICgocGF0dGVybiAuIHByb2MpCiAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucyAo bWFrZS1yZWdleHAgcGF0dGVybiByZWdleHAvZXh0ZW5kZWQpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwcm9jKSkpCiAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybitwcm9jcykp KQogICAgKHdpdGgtYXRvbWljLWZpbGUtcmVwbGFjZW1lbnQgZmlsZQogICAgICAobGFtYmRhIChp biBvdXQpCiAgICAgICAgKGxldCBsb29wICgobGluZSAocmVhZC1saW5lIGluICdjb25jYXQpKSkK ICAgICAgICAgIChpZiAoZW9mLW9iamVjdD8gbGluZSkKICAgICAgICAgICAgICAjdAogICAgICAg ICAgICAgIDs7IFdvcmsgYXJvdW5kIHRoZSBmYWN0IHRoYXQgR3VpbGUncyByZWdleHAtZXhlYyBk b2VzIG5vdCBoYW5kbGUKICAgICAgICAgICAgICA7OyBOVUwgY2hhcmFjdGVycyAoYSBsaW1pdGF0 aW9uIG9mIHRoZSB1bmRlcmx5aW5nIEdOVSBsaWJjJ3MKICAgICAgICAgICAgICA7OyByZWdleGVj KSBieSB0ZW1wb3JhcmlseSByZXBsYWNpbmcgdGhlbSBieSBhbiB1bnVzZWQgcHJpdmF0ZQogICAg ICAgICAgICAgIDs7IFVuaWNvZGUgY29kZSBwb2ludC4KICAgICAgICAgICAgICA7OyBUT0RPOiBV c2UgU1JGSS0xMTUgaW5zdGVhZCwgb25jZSBhdmFpbGFibGUgaW4gR3VpbGUuCiAgICAgICAgICAg ICAgKGxldCogKChudWwqIChvciAoYW5kIChzdHJpbmctaW5kZXggbGluZSAjXG51bCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVudXNlZC1wcml2YXRlLXVzZS1jb2RlLXBv aW50IGxpbmUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI1xudWwpKQogICAgICAg ICAgICAgICAgICAgICAobGluZSogKHJlcGxhY2UtY2hhciAjXG51bCBudWwqIGxpbmUpKQogICAg ICAgICAgICAgICAgICAgICAobGluZTEqIChmb2xkIChsYW1iZGEgKHIrcCBsaW5lKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHIrcAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKHJlZ2V4cCAuIHByb2MpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggKGxpc3QtbWF0Y2hlcyByZWdleHAgbGluZSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChhbmQgbSsgKF8gXyAu Li4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2MgbGlu ZSBtKykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfIGxpbmUp KSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUqCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcngrcHJvYykpCiAgICAgICAgICAgICAgICAgICAgIChs aW5lMSAocmVwbGFjZS1jaGFyIG51bCogI1xudWwgbGluZTEqKSkpCiAgICAgICAgICAgICAgICAo ZGlzcGxheSBsaW5lMSBvdXQpCiAgICAgICAgICAgICAgICAobG9vcCAocmVhZC1saW5lIGluICdj b25jYXQpKSkpKSkpKSkKCgooZGVmaW5lLXN5bnRheCBsZXQtbWF0Y2hlcwogIDs7IEhlbHBlciBt YWNybyBmb3IgYHN1YnN0aXR1dGUqJy4KICAoc3ludGF4LXJ1bGVzIChfKQogICAgKChsZXQtbWF0 Y2hlcyBpbmRleCBtYXRjaCAoXyB2YXJzIC4uLikgYm9keSAuLi4pCiAgICAgKGxldC1tYXRjaGVz ICgrIDEgaW5kZXgpIG1hdGNoICh2YXJzIC4uLikKICAgICAgICAgICAgICAgICAgYm9keSAuLi4p KQogICAgKChsZXQtbWF0Y2hlcyBpbmRleCBtYXRjaCAodmFyIHZhcnMgLi4uKSBib2R5IC4uLikK ICAgICAobGV0ICgodmFyIChtYXRjaDpzdWJzdHJpbmcgbWF0Y2ggaW5kZXgpKSkKICAgICAgIChs ZXQtbWF0Y2hlcyAoKyAxIGluZGV4KSBtYXRjaCAodmFycyAuLi4pCiAgICAgICAgICAgICAgICAg ICAgYm9keSAuLi4pKSkKICAgICgobGV0LW1hdGNoZXMgaW5kZXggbWF0Y2ggKCkgYm9keSAuLi4p CiAgICAgKGJlZ2luIGJvZHkgLi4uKSkpKQoKKGRlZmluZS1zeW50YXggc3Vic3RpdHV0ZSoKICAo c3ludGF4LXJ1bGVzICgpCiAgICAiU3Vic3RpdHV0ZSBSRUdFWFAgaW4gRklMRSBieSB0aGUgc3Ry aW5nIHJldHVybmVkIGJ5IEJPRFkuICBCT0RZIGlzCmV2YWx1YXRlZCB3aXRoIGVhY2ggTUFUQ0gt VkFSIGJvdW5kIHRvIHRoZSBjb3JyZXNwb25kaW5nIHBvc2l0aW9uYWwgcmVnZXhwCnN1Yi1leHBy ZXNzaW9uLiAgRm9yIGV4YW1wbGU6CgogIChzdWJzdGl0dXRlKiBmaWxlCiAgICAgKChcImhlbGxv XCIpCiAgICAgIFwiZ29vZCBtb3JuaW5nXFxuXCIpCiAgICAgKChcImZvbyhbYS16XSspYmFyKC4q KSRcIiBhbGwgbGV0dGVycyBlbmQpCiAgICAgIChzdHJpbmctYXBwZW5kIFwiYmF6XCIgbGV0dGVy cyBlbmQpKSkKCkhlcmUsIGFueXRpbWUgYSBsaW5lIG9mIEZJTEUgY29udGFpbnMgXCJoZWxsb1wi LCBpdCBpcyByZXBsYWNlZCBieSBcImdvb2QKbW9ybmluZ1wiLiAgQW55dGltZSBhIGxpbmUgb2Yg RklMRSBtYXRjaGVzIHRoZSBzZWNvbmQgcmVnZXhwLCBBTEwgaXMgYm91bmQgdG8KdGhlIGNvbXBs ZXRlIG1hdGNoLCBMRVRURVJTIGlzIGJvdW5kIHRvIHRoZSBmaXJzdCBzdWItZXhwcmVzc2lvbiwg YW5kIEVORCBpcwpib3VuZCB0byB0aGUgbGFzdCBvbmUuCgpXaGVuIG9uZSBvZiB0aGUgTUFUQ0gt VkFSIGlzIGBfJywgbm8gdmFyaWFibGUgaXMgYm91bmQgdG8gdGhlIGNvcnJlc3BvbmRpbmcKbWF0 Y2ggc3Vic3RyaW5nLgoKQWx0ZXJuYXRpdmVseSwgRklMRSBtYXkgYmUgYSBsaXN0IG9mIGZpbGUg bmFtZXMsIGluIHdoaWNoIGNhc2UgdGhleSBhcmUKYWxsIHN1YmplY3QgdG8gdGhlIHN1YnN0aXR1 dGlvbnMuCgpCZSBjYXJlZnVsIGFib3V0IHVzaW5nICckJyB0byBtYXRjaCB0aGUgZW5kIG9mIGEg bGluZTsgYnkgaXRzZWxmIGl0IHdvbid0Cm1hdGNoIHRoZSB0ZXJtaW5hdGluZyBuZXdsaW5lIG9m IGEgbGluZS4iCiAgICAoKHN1YnN0aXR1dGUqIGZpbGUgKChyZWdleHAgbWF0Y2gtdmFyIC4uLikg Ym9keSAuLi4pIC4uLikKICAgICAobGV0ICgpCiAgICAgICAoZGVmaW5lIChzdWJzdGl0dXRlLW9u ZS1maWxlIGZpbGUtbmFtZSkKICAgICAgICAgKHN1YnN0aXR1dGUKICAgICAgICAgIGZpbGUtbmFt ZQogICAgICAgICAgKGxpc3QgKGNvbnMgcmVnZXhwCiAgICAgICAgICAgICAgICAgICAgICAobGFt YmRhIChsIG0rKQogICAgICAgICAgICAgICAgICAgICAgICA7OyBJdGVyYXRlIG92ZXIgbWF0Y2hl cyBNKyBhbmQgcmV0dXJuIHRoZQogICAgICAgICAgICAgICAgICAgICAgICA7OyBtb2RpZmllZCBs aW5lIGJhc2VkIG9uIEwuCiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9vcCAoKG0qIG0r KSAgOyBtYXRjaGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG8gIDApICAg OyBvZmZzZXQgaW4gTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyICAnKCkp KSA7IHJlc3VsdAogICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtKgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgKCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAo KHIgKGNvbnMgKHN1YnN0cmluZyBsIG8pIHIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzdHJpbmctY29uY2F0ZW5hdGUtcmV2ZXJzZSByKSkpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoKG0gLiByZXN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQtbWF0 Y2hlcyAwIG0gKG1hdGNoLXZhciAuLi4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bG9vcCByZXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2g6ZW5k IG0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucyoKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmVnaW4gYm9keSAuLi4pCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YnN0cmluZyBsIG8gKG1hdGNoOnN0YXJ0IG0p KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIpKSkpKSkpKQogICAgICAg ICAgICAgICAgLi4uKSkpCgogICAgICAgKG1hdGNoIGZpbGUKICAgICAgICAgKChmaWxlcyAoLi4u IC4uLikpCiAgICAgICAgICAoZm9yLWVhY2ggc3Vic3RpdHV0ZS1vbmUtZmlsZSBmaWxlcykpCiAg ICAgICAgICgoPyBzdHJpbmc/IGYpCiAgICAgICAgICAoc3Vic3RpdHV0ZS1vbmUtZmlsZSBmKSkp KSkpKQoKDAo7OzsKOzs7IFBhdGNoaW5nIHNoZWJhbmdzLS0tZS5nLiwgL2Jpbi9zaCAtPiAvZ251 L3N0b3JlL3h5ei4uLi1iYXNoL2Jpbi9zaC4KOzs7CgooZGVmaW5lKiAoZHVtcC1wb3J0IGluIG91 dAogICAgICAgICAgICAgICAgICAgICM6b3B0aW9uYWwgbGVuCiAgICAgICAgICAgICAgICAgICAg IzprZXkgKGJ1ZmZlci1zaXplIDE2Mzg0KQogICAgICAgICAgICAgICAgICAgIChwcm9ncmVzcyAo bGFtYmRhICh0IGspIChrKSkpKQogICJSZWFkIExFTiBieXRlcyBmcm9tIElOIG9yIGFzIG11Y2gg ZGF0YSBhcyBwb3NzaWJsZSBpZiBMRU4gaXMgI2YsIGFuZCB3cml0ZQppdCB0byBPVVQsIHVzaW5n IGNodW5rcyBvZiBCVUZGRVItU0laRSBieXRlcy4gIENhbGwgUFJPR1JFU1MgYXQgdGhlIGJlZ2lu bmluZwphbmQgYWZ0ZXIgZWFjaCBzdWNjZXNzZnVsIHRyYW5zZmVyIG9mIEJVRkZFUi1TSVpFIGJ5 dGVzIG9yIGxlc3MsIHBhc3NpbmcgaXQKdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyB0cmFuc2Zl cnJlZCBhbmQgdGhlIGNvbnRpbnVhdGlvbiBvZiB0aGUgdHJhbnNmZXIgYXMKYSB0aHVuay4iCiAg KGRlZmluZSBidWZmZXIKICAgIChtYWtlLWJ5dGV2ZWN0b3IgYnVmZmVyLXNpemUpKQoKICAoZGVm aW5lIChsb29wIHRvdGFsIGJ5dGVzKQogICAgKG9yIChlb2Ytb2JqZWN0PyBieXRlcykKICAgICAg ICAoYW5kIGxlbiAoPSB0b3RhbCBsZW4pKQogICAgICAgIChsZXQgKCh0b3RhbCAoKyB0b3RhbCBi eXRlcykpKQogICAgICAgICAgKHB1dC1ieXRldmVjdG9yIG91dCBidWZmZXIgMCBieXRlcykKICAg ICAgICAgIChwcm9ncmVzcyB0b3RhbAogICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkKICAg ICAgICAgICAgICAgICAgICAgIChsb29wIHRvdGFsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoZ2V0LWJ5dGV2ZWN0b3ItbiEgaW4gYnVmZmVyIDAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoaWYgbGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChtaW4gKC0gbGVuIHRvdGFsKSBidWZmZXItc2l6ZSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVy LXNpemUpKSkpKSkpKQoKICA7OyBNYWtlIHN1cmUgUFJPR1JFU1MgaXMgY2FsbGVkIHdoZW4gd2Ug c3RhcnQgc28gdGhhdCBpdCBjYW4gbWVhc3VyZQogIDs7IHRocm91Z2hwdXQuCiAgKHByb2dyZXNz IDAKICAgICAgICAgICAgKGxhbWJkYSAoKQogICAgICAgICAgICAgIChsb29wIDAgKGdldC1ieXRl dmVjdG9yLW4hIGluIGJ1ZmZlciAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGlmIGxlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobWluIGxlbiBidWZmZXItc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYnVmZmVyLXNpemUpKSkpKSkKCihkZWZpbmUgQVRfU1lNTElOS19OT0ZPTExP VwogIDs7IEd1aWxlIDIuMCBkaWQgbm90IGRlZmluZSB0aGlzIGNvbnN0YW50LCBoZW5jZSB0aGlz IGhhY2suCiAgKGxldCAoKHZhcmlhYmxlIChtb2R1bGUtdmFyaWFibGUgdGhlLXJvb3QtbW9kdWxl ICdBVF9TWU1MSU5LX05PRk9MTE9XKSkpCiAgICAoaWYgdmFyaWFibGUKICAgICAgICAodmFyaWFi bGUtcmVmIHZhcmlhYmxlKQogICAgICAgIDI1NikpKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDtmb3IgR05VL0xpbnV4CgooZGVmaW5lIChzZXQtZmlsZS10aW1lIGZpbGUgc3Rh dCkKICAiU2V0IHRoZSBhdGltZS9tdGltZSBvZiBGSUxFIHRvIHRoYXQgc3BlY2lmaWVkIGJ5IFNU QVQuIgogICh1dGltZSBmaWxlCiAgICAgICAgIChzdGF0OmF0aW1lIHN0YXQpCiAgICAgICAgIChz dGF0Om10aW1lIHN0YXQpCiAgICAgICAgIChzdGF0OmF0aW1lbnNlYyBzdGF0KQogICAgICAgICAo c3RhdDptdGltZW5zZWMgc3RhdCkKICAgICAgICAgQVRfU1lNTElOS19OT0ZPTExPVykpCgooZGVm aW5lIChnZXQtY2hhciogcCkKICA7OyBXZSBjYWxsIGl0IGBnZXQtY2hhcicsIGJ1dCB0aGF0J3Mg cmVhbGx5IGEgYmluYXJ5IHZlcnNpb24KICA7OyB0aGVyZW9mLiAgKFRoZSByZWFsIGBnZXQtY2hh cicgY2Fubm90IGJlIHVzZWQgaGVyZSBiZWNhdXNlIG91cgogIDs7IGJvb3RzdHJhcCBHdWlsZSBp cyBoYWNrZWQgdG8gYWx3YXlzIHVzZSBVVEYtOC4pCiAgKG1hdGNoIChnZXQtdTggcCkKICAgICgo PyBpbnRlZ2VyPyB4KSAoaW50ZWdlci0+Y2hhciB4KSkKICAgICh4IHgpKSkKCihkZWZpbmUgcGF0 Y2gtc2hlYmFuZwogIChsZXQgKChzaGViYW5nLXJ4IChtYWtlLXJlZ2V4cCAiXltbOmJsYW5rOl1d KigvW1s6Z3JhcGg6XV0rKVtbOmJsYW5rOl1dKihbWzpncmFwaDpdXSopKC4qKSQiKSkpCiAgICAo bGFtYmRhKiAoZmlsZQogICAgICAgICAgICAgICM6b3B0aW9uYWwKICAgICAgICAgICAgICAocGF0 aCAoc2VhcmNoLXBhdGgtYXMtc3RyaW5nLT5saXN0IChnZXRlbnYgIlBBVEgiKSkpCiAgICAgICAg ICAgICAgIzprZXkgKGtlZXAtbXRpbWU/ICN0KSkKICAgICAgIlJlcGxhY2UgdGhlICMhIGludGVy cHJldGVyIGZpbGUgbmFtZSBpbiBGSUxFIGJ5IGEgdmFsaWQgb25lIGZvdW5kIGluClBBVEgsIHdo ZW4gRklMRSBhY3R1YWxseSBzdGFydHMgd2l0aCBhIHNoZWJhbmcuICBSZXR1cm4gI3Qgd2hlbiBG SUxFIHdhcwpwYXRjaGVkLCAjZiBvdGhlcndpc2UuICBXaGVuIEtFRVAtTVRJTUU/IGlzIHRydWUs IHRoZSBhdGltZS9tdGltZSBvZgpGSUxFIGFyZSBrZXB0IHVuY2hhbmdlZC4iCiAgICAgIChkZWZp bmUgKHBhdGNoIHAgaW50ZXJwcmV0ZXIgcmVzdC1vZi1saW5lKQogICAgICAgIChsZXQqICgodGVt cGxhdGUgKHN0cmluZy1hcHBlbmQgZmlsZSAiLlhYWFhYWCIpKQogICAgICAgICAgICAgICAob3V0 ICAgICAgKG1rc3RlbXAhIHRlbXBsYXRlKSkKICAgICAgICAgICAgICAgKHN0ICAgICAgIChzdGF0 IGZpbGUpKQogICAgICAgICAgICAgICAobW9kZSAgICAgKHN0YXQ6bW9kZSBzdCkpKQogICAgICAg ICAgKHdpdGgtdGhyb3ctaGFuZGxlciAjdAogICAgICAgICAgICAobGFtYmRhICgpCiAgICAgICAg ICAgICAgKGZvcm1hdCBvdXQgIiMhfmF+YX4lIgogICAgICAgICAgICAgICAgICAgICAgaW50ZXJw cmV0ZXIgcmVzdC1vZi1saW5lKQogICAgICAgICAgICAgIChkdW1wLXBvcnQgcCBvdXQpCiAgICAg ICAgICAgICAgKGNsb3NlIG91dCkKICAgICAgICAgICAgICAoY2htb2QgdGVtcGxhdGUgbW9kZSkK ICAgICAgICAgICAgICAocmVuYW1lLWZpbGUgdGVtcGxhdGUgZmlsZSkKICAgICAgICAgICAgICAo d2hlbiBrZWVwLW10aW1lPwogICAgICAgICAgICAgICAgKHNldC1maWxlLXRpbWUgZmlsZSBzdCkp CiAgICAgICAgICAgICAgI3QpCiAgICAgICAgICAgIChsYW1iZGEgKGtleSAuIGFyZ3MpCiAgICAg ICAgICAgICAgKGZvcm1hdCAoY3VycmVudC1lcnJvci1wb3J0KQogICAgICAgICAgICAgICAgICAg ICAgInBhdGNoLXNoZWJhbmc6IH5hOiBlcnJvcjogfmEgfnN+JSIKICAgICAgICAgICAgICAgICAg ICAgIGZpbGUga2V5IGFyZ3MpCiAgICAgICAgICAgICAgKGZhbHNlLWlmLWV4Y2VwdGlvbiAoZGVs ZXRlLWZpbGUgdGVtcGxhdGUpKQogICAgICAgICAgICAgICNmKSkpKQoKICAgICAgKGNhbGwtd2l0 aC1hc2NpaS1pbnB1dC1maWxlIGZpbGUKICAgICAgICAobGFtYmRhIChwKQogICAgICAgICAgKGFu ZCAoZXE/ICNcIyAoZ2V0LWNoYXIqIHApKQogICAgICAgICAgICAgICAoZXE/ICNcISAoZ2V0LWNo YXIqIHApKQogICAgICAgICAgICAgICAobGV0ICgobGluZSAoZmFsc2UtaWYtZXhjZXB0aW9uIChy ZWFkLWxpbmUgcCkpKSkKICAgICAgICAgICAgICAgICAoYW5kPT4gKGFuZCBsaW5lIChyZWdleHAt ZXhlYyBzaGViYW5nLXJ4IGxpbmUpKQogICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhICht KQogICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQqICgoaW50ZXJwIChtYXRjaDpzdWJzdHJp bmcgbSAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFyZzEgKG1hdGNoOnN1 YnN0cmluZyBtIDIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdCAobWF0 Y2g6c3Vic3RyaW5nIG0gMykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoYXMt ZW52IChzdHJpbmctc3VmZml4PyAiL2VudiIgaW50ZXJwKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGNtZCAoaWYgaGFzLWVudiBhcmcxIChiYXNlbmFtZSBpbnRlcnApKSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJpbiAoc2VhcmNoLXBhdGggcGF0aCBjbWQp KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBiaW4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoaWYgKHN0cmluZz0/IGJpbiBpbnRlcnApCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICNmICAgICAgICAgICAgOyBub3RoaW5nIHRvIGRvCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBoYXMtZW52CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGZvcm1hdCAoY3VycmVudC1lcnJvci1wb3J0KQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaC1zaGViYW5nOiB+YTog Y2hhbmdpbmcgYH5hJyB0byBgfmEnfiUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZmlsZSAoc3RyaW5nLWFwcGVuZCBpbnRlcnAgIiAiIGFyZzEpIGJp bikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhdGNoIHAgYmlu IHJlc3QpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiZWdpbiAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgKGN1cnJlbnQtZXJy b3ItcG9ydCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg InBhdGNoLXNoZWJhbmc6IH5hOiBjaGFuZ2luZyBgfmEnIHRvIGB+YSd+JSIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBpbnRlcnAgYmluKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhdGNoIHAgYmluCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmctbnVsbD8g YXJnMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0 cmluZy1hcHBlbmQgIiAiIGFyZzEgcmVzdCkpKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAo Y3VycmVudC1lcnJvci1wb3J0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAicGF0Y2gtc2hlYmFuZzogfmE6IHdhcm5pbmc6IG5vIGJpbmFyeSBmb3IgaW50ZXJwcmV0 ZXIgYH5hJyBmb3VuZCBpbiAkUEFUSH4lIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmaWxlIChiYXNlbmFtZSBjbWQpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgI2YpKSkpKSkpKSkpKSkKCihkZWZpbmUqIChwYXRjaC1tYWtlZmlsZS1TSEVMTCBm aWxlICM6a2V5IChrZWVwLW10aW1lPyAjdCkpCiAgIlBhdGNoIHRoZSBgU0hFTEwnIHZhcmlhYmxl IGluIEZJTEUsIHdoaWNoIGlzIHN1cHBvc2VkbHkgYSBtYWtlZmlsZS4KV2hlbiBLRUVQLU1USU1F PyBpcyB0cnVlLCB0aGUgYXRpbWUvbXRpbWUgb2YgRklMRSBhcmUga2VwdCB1bmNoYW5nZWQuIgoK ICA7OyBGb3IgaW5zdGFuY2UsIEdldHRleHQtZ2VuZXJhdGVkIHBvL01ha2VmaWxlLmluLmluIGRv IG5vdCBob25vciAkU0hFTEwuCgogIDs7IFhYWDogVW5saWtlIHdpdGggYHBhdGNoLXNoZWJhbmcn LCBGSUxFIGlzIGFsd2F5cyB0b3VjaGVkLgoKICAoZGVmaW5lIChmaW5kLXNoZWxsIG5hbWUpCiAg ICAobGV0ICgoc2hlbGwgKHdoaWNoIG5hbWUpKSkKICAgICAgKHVubGVzcyBzaGVsbAogICAgICAg IChmb3JtYXQgKGN1cnJlbnQtZXJyb3ItcG9ydCkKICAgICAgICAgICAgICAgICJwYXRjaC1tYWtl ZmlsZS1TSEVMTDogd2FybmluZzogbm8gYmluYXJ5IGZvciBzaGVsbCBgfmEnIGZvdW5kIGluICRQ QVRIfiUiCiAgICAgICAgICAgICAgICBuYW1lKSkKICAgICAgc2hlbGwpKQoKICAobGV0ICgoc3Qg KHN0YXQgZmlsZSkpKQogICAgOzsgQ29uc2lkZXIgRklMRSBpcyB1c2luZyBhbiA4LWJpdCBlbmNv ZGluZyB0byBhdm9pZCBlcnJvcnMuCiAgICAod2l0aC1mbHVpZHMgKCglZGVmYXVsdC1wb3J0LWVu Y29kaW5nICNmKSkKICAgICAgKHN1YnN0aXR1dGUqIGZpbGUKICAgICAgICAoKCJeICpTSEVMTFtb OmJsYW5rOl1dKjo/PVtbOmJsYW5rOl1dKihbWzpncmFwaDpdXSovKShbWzpncmFwaDpdXSspKC4q KSQiCiAgICAgICAgICBfIGRpciBzaGVsbCBhcmdzKQogICAgICAgICAobGV0KiAoKG9sZCAoc3Ry aW5nLWFwcGVuZCBkaXIgc2hlbGwpKQogICAgICAgICAgICAgICAgKG5ldyAob3IgKGZpbmQtc2hl bGwgc2hlbGwpIG9sZCkpKQogICAgICAgICAgICh1bmxlc3MgKHN0cmluZz0/IG5ldyBvbGQpCiAg ICAgICAgICAgICAoZm9ybWF0IChjdXJyZW50LWVycm9yLXBvcnQpCiAgICAgICAgICAgICAgICAg ICAgICJwYXRjaC1tYWtlZmlsZS1TSEVMTDogfmE6IGNoYW5naW5nIGBTSEVMTCcgZnJvbSBgfmEn IHRvIGB+YSd+JSIKICAgICAgICAgICAgICAgICAgICAgZmlsZSBvbGQgbmV3KSkKICAgICAgICAg ICAoc3RyaW5nLWFwcGVuZCAiU0hFTEwgPSAiIG5ldyBhcmdzKSkpKSkKCiAgICh3aGVuIGtlZXAt bXRpbWU/CiAgICAgKHNldC1maWxlLXRpbWUgZmlsZSBzdCkpKSkKCihkZWZpbmUqIChwYXRjaC0v dXNyL2Jpbi9maWxlIGZpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzprZXkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUtY29tbWFuZCAod2hpY2ggImZpbGUiKSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtlZXAtbXRpbWU/ICN0KSkKICAiUGF0Y2gg b2NjdXJyZW5jZXMgb2YgXCIvdXNyL2Jpbi9maWxlXCIgaW4gRklMRSwgcmVwbGFjaW5nIHRoZW0g d2l0aApGSUxFLUNPTU1BTkQuICBXaGVuIEtFRVAtTVRJTUU/IGlzIHRydWUsIGtlZXAgRklMRSdz IG1vZGlmaWNhdGlvbiB0aW1lCnVuY2hhbmdlZC4iCiAgKGlmIChub3QgZmlsZS1jb21tYW5kKQog ICAgICAoZm9ybWF0IChjdXJyZW50LWVycm9yLXBvcnQpCiAgICAgICAgICAgICAgInBhdGNoLS91 c3IvYmluL2ZpbGU6IHdhcm5pbmc6IFwKbm8gcmVwbGFjZW1lbnQgJ2ZpbGUnIGNvbW1hbmQsIGRv aW5nIG5vdGhpbmd+JSIpCiAgICAgIChsZXQgKChzdCAoc3RhdCBmaWxlKSkpCiAgICAgICAgOzsg Q29uc2lkZXIgRklMRSBpcyB1c2luZyBhbiA4LWJpdCBlbmNvZGluZyB0byBhdm9pZCBlcnJvcnMu CiAgICAgICAgKHdpdGgtZmx1aWRzICgoJWRlZmF1bHQtcG9ydC1lbmNvZGluZyAjZikpCiAgICAg ICAgICAoc3Vic3RpdHV0ZSogZmlsZQogICAgICAgICAgICAoKCIvdXNyL2Jpbi9maWxlIikKICAg ICAgICAgICAgIChiZWdpbgogICAgICAgICAgICAgICAoZm9ybWF0IChjdXJyZW50LWVycm9yLXBv cnQpCiAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoLS91c3IvYmluL2ZpbGU6IH5hOiBjaGFu Z2luZyBgfmEnIHRvIGB+YSd+JSIKICAgICAgICAgICAgICAgICAgICAgICBmaWxlICIvdXNyL2Jp bi9maWxlIiBmaWxlLWNvbW1hbmQpCiAgICAgICAgICAgICAgIGZpbGUtY29tbWFuZCkpKSkKCiAg ICAgICAgKHdoZW4ga2VlcC1tdGltZT8KICAgICAgICAgIChzZXQtZmlsZS10aW1lIGZpbGUgc3Qp KSkpKQoKKGRlZmluZSogKGZvbGQtcG9ydC1tYXRjaGVzIHByb2MgaW5pdCBwYXR0ZXJuIHBvcnQK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6b3B0aW9uYWwgKHVubWF0Y2hlZCAobGFtYmRh IChfIHIpIHIpKSkKICAiUmVhZCBmcm9tIFBPUlQgY2hhcmFjdGVyLWJ5LWNoYXJhY3RlcjsgZm9y IGVhY2ggbWF0Y2ggYWdhaW5zdApQQVRURVJOLCBjYWxsIChQUk9DIE1BVENIIFJFU1VMVCksIHdo ZXJlIFJFU1VMVCBpcyBzZWVkZWQgd2l0aCBJTklULgpQQVRURVJOIGlzIGEgbGlzdCBvZiBTUkZJ LTE0IGNoYXItc2V0cy4gIENhbGwgKFVOTUFUQ0hFRCBDSEFSIFJFU1VMVCkKZm9yIGVhY2ggdW5t YXRjaGVkIGNoYXJhY3Rlci4iCiAgKGRlZmluZSBpbml0aWFsLXBhdHRlcm4KICAgIDs7IFRoZSBw b29yIGRldmVsb3BlcidzIHJlZ2V4cC4KICAgIChpZiAoc3RyaW5nPyBwYXR0ZXJuKQogICAgICAg IChtYXAgY2hhci1zZXQgKHN0cmluZy0+bGlzdCBwYXR0ZXJuKSkKICAgICAgICBwYXR0ZXJuKSkK CiAgOzsgTm90ZTogd2UncmUgbm90IHJlYWxseSBzdHJpdmluZyBmb3IgcGVyZm9ybWFuY2UgaGVy ZS4uLgogIChsZXQgbG9vcCAoKGNoYXJzICAgJygpKQogICAgICAgICAgICAgKHBhdHRlcm4gaW5p dGlhbC1wYXR0ZXJuKQogICAgICAgICAgICAgKG1hdGNoZWQgJygpKQogICAgICAgICAgICAgKHJl c3VsdCAgaW5pdCkpCiAgICAoY29uZCAoKG51bGw/IGNoYXJzKQogICAgICAgICAgIChsb29wIChs aXN0IChnZXQtY2hhciogcG9ydCkpCiAgICAgICAgICAgICAgICAgcGF0dGVybgogICAgICAgICAg ICAgICAgIG1hdGNoZWQKICAgICAgICAgICAgICAgICByZXN1bHQpKQogICAgICAgICAgKChudWxs PyBwYXR0ZXJuKQogICAgICAgICAgIChsb29wIGNoYXJzCiAgICAgICAgICAgICAgICAgaW5pdGlh bC1wYXR0ZXJuCiAgICAgICAgICAgICAgICAgJygpCiAgICAgICAgICAgICAgICAgKHByb2MgKGxp c3QtPnN0cmluZyAocmV2ZXJzZSBtYXRjaGVkKSkgcmVzdWx0KSkpCiAgICAgICAgICAoKGVvZi1v YmplY3Q/IChjYXIgY2hhcnMpKQogICAgICAgICAgIChmb2xkLXJpZ2h0IHVubWF0Y2hlZCByZXN1 bHQgbWF0Y2hlZCkpCiAgICAgICAgICAoKGNoYXItc2V0LWNvbnRhaW5zPyAoY2FyIHBhdHRlcm4p IChjYXIgY2hhcnMpKQogICAgICAgICAgIChsb29wIChjZHIgY2hhcnMpCiAgICAgICAgICAgICAg ICAgKGNkciBwYXR0ZXJuKQogICAgICAgICAgICAgICAgIChjb25zIChjYXIgY2hhcnMpIG1hdGNo ZWQpCiAgICAgICAgICAgICAgICAgcmVzdWx0KSkKICAgICAgICAgICgobnVsbD8gbWF0Y2hlZCkg ICAgICAgICAgICAgICAgICAgICAgICA7IGNvbW1vbiBjYXNlCiAgICAgICAgICAgKGxvb3AgKGNk ciBjaGFycykKICAgICAgICAgICAgICAgICBwYXR0ZXJuCiAgICAgICAgICAgICAgICAgbWF0Y2hl ZAogICAgICAgICAgICAgICAgICh1bm1hdGNoZWQgKGNhciBjaGFycykgcmVzdWx0KSkpCiAgICAg ICAgICAoZWxzZQogICAgICAgICAgIChsZXQgKChtYXRjaGVkIChyZXZlcnNlIG1hdGNoZWQpKSkK ICAgICAgICAgICAgIChsb29wIChhcHBlbmQgKGNkciBtYXRjaGVkKSBjaGFycykKICAgICAgICAg ICAgICAgICAgIGluaXRpYWwtcGF0dGVybgogICAgICAgICAgICAgICAgICAgJygpCiAgICAgICAg ICAgICAgICAgICAodW5tYXRjaGVkIChjYXIgbWF0Y2hlZCkgcmVzdWx0KSkpKSkpKQoKKGRlZmlu ZSogKHJlbW92ZS1zdG9yZS1yZWZlcmVuY2VzIGZpbGUKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICM6b3B0aW9uYWwgKHN0b3JlICglc3RvcmUtZGlyZWN0b3J5KSkpCiAgIlJlbW92 ZSBmcm9tIEZJTEUgb2NjdXJyZW5jZXMgb2YgZmlsZSBuYW1lcyBpbiBTVE9SRTsgcmV0dXJuICN0 IHdoZW4Kc3RvcmUgcGF0aHMgd2VyZSBlbmNvdW50ZXJlZCBpbiBGSUxFLCAjZiBvdGhlcndpc2Uu ICBUaGlzIHByb2NlZHVyZSBpcwprbm93biBhcyBgbnVrZS1yZWZzJyBpbiBOaXhwa2dzLiIKICAo ZGVmaW5lIHBhdHRlcm4KICAgIChsZXQgKChuaXgtYmFzZTMyLWNoYXJzCiAgICAgICAgICAgJygj XDAgI1wxICNcMiAjXDMgI1w0ICNcNSAjXDYgI1w3ICNcOCAjXDkKICAgICAgICAgICAgICNcYSAj XGIgI1xjICNcZCAjXGYgI1xnICNcaCAjXGkgI1xqICNcayAjXGwgI1xtICNcbgogICAgICAgICAg ICAgI1xwICNccSAjXHIgI1xzICNcdiAjXHcgI1x4ICNceSAjXHopKSkKICAgICAgYCgsQChtYXAg Y2hhci1zZXQgKHN0cmluZy0+bGlzdCBzdG9yZSkpCiAgICAgICAgLChjaGFyLXNldCAjXC8pCiAg ICAgICAgLEAobWFrZS1saXN0IDMyIChsaXN0LT5jaGFyLXNldCBuaXgtYmFzZTMyLWNoYXJzKSkK ICAgICAgICAsKGNoYXItc2V0ICNcLSkpKSkKCiAgKHdpdGgtZmx1aWRzICgoJWRlZmF1bHQtcG9y dC1lbmNvZGluZyAjZikpCiAgICAod2l0aC1hdG9taWMtZmlsZS1yZXBsYWNlbWVudCBmaWxlCiAg ICAgIChsYW1iZGEgKGluIG91dCkKICAgICAgICA7OyBXZSBjYW5ub3QgdXNlIGByZWdleHAtZXhl YycgaGVyZSBiZWNhdXNlIGl0IGNhbm5vdCBkZWFsIHdpdGgKICAgICAgICA7OyBzdHJpbmdzIGNv bnRhaW5pbmcgTlVMIGNoYXJhY3RlcnMuCiAgICAgICAgKGZvcm1hdCAjdCAicmVtb3Zpbmcgc3Rv cmUgcmVmZXJlbmNlcyBmcm9tIGB+YScuLi5+JSIgZmlsZSkKICAgICAgICAoc2V0dmJ1ZiBpbiAn YmxvY2sgNjU1MzYpCiAgICAgICAgKHNldHZidWYgb3V0ICdibG9jayA2NTUzNikKICAgICAgICAo Zm9sZC1wb3J0LW1hdGNoZXMgKGxhbWJkYSAobWF0Y2ggcmVzdWx0KQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwdXQtYnl0ZXZlY3RvciBvdXQgKHN0cmluZy0+dXRmOCBzdG9yZSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1dC11OCBvdXQgKGNoYXItPmludGVnZXIgI1wv KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHV0LWJ5dGV2ZWN0b3Igb3V0CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctPnV0ZjgKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlZWVlZWVlZWVlZWVl ZWVlZWVlZWVlZWVlZWVlZWVlZS0iKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgI2YKICAgICAgICAgICAgICAgICAgICAgICAgICAg cGF0dGVybgogICAgICAgICAgICAgICAgICAgICAgICAgICBpbgogICAgICAgICAgICAgICAgICAg ICAgICAgICAobGFtYmRhIChjaGFyIHJlc3VsdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAocHV0LXU4IG91dCAoY2hhci0+aW50ZWdlciBjaGFyKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXN1bHQpKSkpKSkKCihkZWZpbmUtY29uZGl0aW9uLXR5cGUgJndyYXAtZXJyb3Ig JmVycm9yCiAgd3JhcC1lcnJvcj8KICAocHJvZ3JhbSAgICB3cmFwLWVycm9yLXByb2dyYW0pCiAg KHR5cGUgICAgICAgd3JhcC1lcnJvci10eXBlKSkKCihkZWZpbmUgKHdyYXBwZWQtcHJvZ3JhbT8g cHJvZykKICAiUmV0dXJuICN0IGlmIFBST0cgaXMgYSBwcm9ncmFtIHRoYXQgd2FzIG1vdmVkIGFu ZCB3cmFwcGVkIGJ5ICd3cmFwLXByb2dyYW0nLiIKICAoYW5kIChmaWxlLWV4aXN0cz8gcHJvZykK ICAgICAgIChsZXQgKChiYXNlIChiYXNlbmFtZSBwcm9nKSkpCiAgICAgICAgIChhbmQgKHN0cmlu Zy1wcmVmaXg/ICIuIiBiYXNlKQogICAgICAgICAgICAgIChzdHJpbmctc3VmZml4PyAiLXJlYWwi IGJhc2UpKSkpKQoKKGRlZmluZSogKHdyYXAtcHJvZ3JhbSBwcm9nICM6a2V5IChzaCAod2hpY2gg ImJhc2giKSkgIzpyZXN0IHZhcnMpCiAgIk1ha2UgYSB3cmFwcGVyIGZvciBQUk9HLiAgVkFSUyBz aG91bGQgbG9vayBsaWtlIHRoaXM6CgogICcoVkFSSUFCTEUgREVMSU1JVEVSIFBPU0lUSU9OIExJ U1QtT0YtRElSRUNUT1JJRVMpCgp3aGVyZSBERUxJTUlURVIgaXMgb3B0aW9uYWwuICAnOicgd2ls bCBiZSB1c2VkIGlmIERFTElNSVRFUiBpcyBub3QgZ2l2ZW4uCgpGb3IgZXhhbXBsZSwgdGhpcyBj b21tYW5kOgoKICAod3JhcC1wcm9ncmFtIFwiZm9vXCIKICAgICAgICAgICAgICAgICcoXCJQQVRI XCIgXCI6XCIgPSAoXCIvZ251Ly4uLi9iYXIvYmluXCIpKQogICAgICAgICAgICAgICAgJyhcIkNF UlRfUEFUSFwiIHN1ZmZpeCAoXCIvZ251Ly4uLi9iYXovY2VydHNcIgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXCIvcXV4L2NlcnRzXCIpKSkKCndpbGwgY29weSAnZm9v JyB0byAnLmZvby1yZWFsJyBhbmQgY3JlYXRlIHRoZSBmaWxlICdmb28nIHdpdGggdGhlIGZvbGxv d2luZwpjb250ZW50czoKCiAgIyFsb2NhdGlvbi9vZi9iaW4vYmFzaAogIGV4cG9ydCBQQVRIPVwi L2dudS8uLi4vYmFyL2JpblwiCiAgZXhwb3J0IENFUlRfUEFUSD1cIiRDRVJUX1BBVEgke0NFUlRf UEFUSDorOn0vZ251Ly4uLi9iYXovY2VydHM6L3F1eC9jZXJ0c1wiCiAgZXhlYyAtYSAkMCBsb2Nh dGlvbi9vZi8uZm9vLXJlYWwgXCIkQFwiCgpUaGlzIGlzIHVzZWZ1bCBmb3Igc2NyaXB0cyB0aGF0 IGV4cGVjdCBwYXJ0aWN1bGFyIHByb2dyYW1zIHRvIGJlIGluICRQQVRILCBmb3IKcHJvZ3JhbXMg dGhhdCBleHBlY3QgcGFydGljdWxhciBzaGFyZWQgbGlicmFyaWVzIHRvIGJlIGluICRMRF9MSUJS QVJZX1BBVEgsIG9yCm1vZHVsZXMgaW4gJEdVSUxFX0xPQURfUEFUSCwgZXRjLgoKSWYgUFJPRyBo YXMgcHJldmlvdXNseSBiZWVuIHdyYXBwZWQgYnkgJ3dyYXAtcHJvZ3JhbScsIHRoZSB3cmFwcGVy IGlzIGV4dGVuZGVkCndpdGggZGVmaW5pdGlvbnMgZm9yIFZBUlMuIElmIGl0IGlzIG5vdCwgU0gg d2lsbCBiZSB1c2VkIGFzIGludGVycHJldGVyLiIKICAoZGVmaW5lIHZhcnMvZmlsdGVyZWQKICAg IChtYXRjaCB2YXJzCiAgICAgICgoIzpzaCBfIC4gdmFycykgdmFycykKICAgICAgKHZhcnMgdmFy cykpKQoKICAoZGVmaW5lIHdyYXBwZWQtZmlsZQogICAgKHN0cmluZy1hcHBlbmQgKGRpcm5hbWUg cHJvZykgIi8uIiAoYmFzZW5hbWUgcHJvZykgIi1yZWFsIikpCgogIChkZWZpbmUgYWxyZWFkeS13 cmFwcGVkPwogICAgKGZpbGUtZXhpc3RzPyB3cmFwcGVkLWZpbGUpKQoKICAoZGVmaW5lIChsYXN0 LWxpbmUgcG9ydCkKICAgIDs7IFJldHVybiB0aGUgbGFzdCBsaW5lIHJlYWQgZnJvbSBQT1JUIGFu ZCBsZWF2ZSBQT1JUJ3MgY3Vyc29yIHJpZ2h0CiAgICA7OyBiZWZvcmUgaXQuCiAgICAobGV0IGxv b3AgKChwcmV2aW91cy1saW5lLW9mZnNldCAwKQogICAgICAgICAgICAgICAocHJldmlvdXMtbGlu ZSAiIikKICAgICAgICAgICAgICAgKHBvc2l0aW9uIChzZWVrIHBvcnQgMCBTRUVLX0NVUikpKQog ICAgICAobWF0Y2ggKHJlYWQtbGluZSBwb3J0ICdjb25jYXQpCiAgICAgICAgKCg/IGVvZi1vYmpl Y3Q/KQogICAgICAgICAoc2VlayBwb3J0IHByZXZpb3VzLWxpbmUtb2Zmc2V0IFNFRUtfU0VUKQog ICAgICAgICBwcmV2aW91cy1saW5lKQogICAgICAgICgoPyBzdHJpbmc/IGxpbmUpCiAgICAgICAg IChsb29wIHBvc2l0aW9uIGxpbmUgKCsgKHN0cmluZy1sZW5ndGggbGluZSkgcG9zaXRpb24pKSkp KSkKCiAgKGRlZmluZSAoZXhwb3J0LXZhcmlhYmxlIGxzdCkKICAgIDs7IFJldHVybiBhIHN0cmlu ZyB0aGF0IGV4cG9ydHMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCiAgICAobWF0Y2ggbHN0CiAg ICAgICgodmFyIHNlcCAnPSByZXN0KQogICAgICAgKGZvcm1hdCAjZiAiZXhwb3J0IH5hPVwifmFc IiIKICAgICAgICAgICAgICAgdmFyIChzdHJpbmctam9pbiByZXN0IHNlcCkpKQogICAgICAoKHZh ciBzZXAgJ3ByZWZpeCByZXN0KQogICAgICAgKGZvcm1hdCAjZiAiZXhwb3J0IH5hPVwifmEke35h Oit+YX0kfmFcIiIKICAgICAgICAgICAgICAgdmFyIChzdHJpbmctam9pbiByZXN0IHNlcCkgdmFy IHNlcCB2YXIpKQogICAgICAoKHZhciBzZXAgJ3N1ZmZpeCByZXN0KQogICAgICAgKGZvcm1hdCAj ZiAiZXhwb3J0IH5hPVwiJH5hJHt+YSt+YX1+YVwiIgogICAgICAgICAgICAgICB2YXIgdmFyIHZh ciBzZXAgKHN0cmluZy1qb2luIHJlc3Qgc2VwKSkpCiAgICAgICgodmFyICc9IHJlc3QpCiAgICAg ICAoZm9ybWF0ICNmICJleHBvcnQgfmE9XCJ+YVwiIgogICAgICAgICAgICAgICB2YXIgKHN0cmlu Zy1qb2luIHJlc3QgIjoiKSkpCiAgICAgICgodmFyICdwcmVmaXggcmVzdCkKICAgICAgIChmb3Jt YXQgI2YgImV4cG9ydCB+YT1cIn5hJHt+YTorOn0kfmFcIiIKICAgICAgICAgICAgICAgdmFyIChz dHJpbmctam9pbiByZXN0ICI6IikgdmFyIHZhcikpCiAgICAgICgodmFyICdzdWZmaXggcmVzdCkK ICAgICAgIChmb3JtYXQgI2YgImV4cG9ydCB+YT1cIiR+YSR7fmE6Kzp9fmFcIiIKICAgICAgICAg ICAgICAgdmFyIHZhciB2YXIgKHN0cmluZy1qb2luIHJlc3QgIjoiKSkpKSkKCiAgKHdoZW4gKHdy YXBwZWQtcHJvZ3JhbT8gcHJvZykKICAgIChlcnJvciAoc3RyaW5nLWFwcGVuZCBwcm9nICIgaXMg YSB3cmFwcGVyLiBSZWZ1c2luZyB0byB3cmFwLiIpKSkKCiAgKGlmIGFscmVhZHktd3JhcHBlZD8K CiAgICAgIDs7IFBST0cgaXMgYWxyZWFkeSBhIHdyYXBwZXI6IGFkZCB0aGUgbmV3ICJleHBvcnQg VkFSPVZBTFVFIiBsaW5lcyBqdXN0CiAgICAgIDs7IGJlZm9yZSB0aGUgbGFzdCBsaW5lLgogICAg ICAobGV0KiAoKHBvcnQgKG9wZW4tZmlsZSBwcm9nICJyKyIpKQogICAgICAgICAgICAgKGxhc3Qg KGxhc3QtbGluZSBwb3J0KSkpCiAgICAgICAgKGZvci1lYWNoIChsYW1iZGEgKHZhcikKICAgICAg ICAgICAgICAgICAgICAoZGlzcGxheSAoZXhwb3J0LXZhcmlhYmxlIHZhcikgcG9ydCkKICAgICAg ICAgICAgICAgICAgICAobmV3bGluZSBwb3J0KSkKICAgICAgICAgICAgICAgICAgdmFycy9maWx0 ZXJlZCkKICAgICAgICAoZGlzcGxheSBsYXN0IHBvcnQpCiAgICAgICAgKGNsb3NlLXBvcnQgcG9y dCkpCgogICAgICA7OyBQUk9HIGlzIG5vdCB3cmFwcGVkIHlldDogY3JlYXRlIGEgc2hlbGwgc2Ny aXB0IHRoYXQgc2V0cyBWQVJTLgogICAgICAobGV0ICgocHJvZy10bXAgKHN0cmluZy1hcHBlbmQg d3JhcHBlZC1maWxlICItdG1wIikpKQogICAgICAgIChsaW5rIHByb2cgd3JhcHBlZC1maWxlKQoK ICAgICAgICAoY2FsbC13aXRoLW91dHB1dC1maWxlIHByb2ctdG1wCiAgICAgICAgICAobGFtYmRh IChwb3J0KQogICAgICAgICAgICAoZm9ybWF0IHBvcnQKICAgICAgICAgICAgICAgICAgICAiIyF+ YX4lfmF+JWV4ZWMgLWEgXCIkMFwiIFwifmFcIiBcIiRAXCJ+JSIKICAgICAgICAgICAgICAgICAg ICBzaAogICAgICAgICAgICAgICAgICAgIChzdHJpbmctam9pbiAobWFwIGV4cG9ydC12YXJpYWJs ZSB2YXJzL2ZpbHRlcmVkKSAiXG4iKQogICAgICAgICAgICAgICAgICAgIChjYW5vbmljYWxpemUt cGF0aCB3cmFwcGVkLWZpbGUpKSkpCgogICAgICAgIChjaG1vZCBwcm9nLXRtcCAjbzc1NSkKICAg ICAgICAocmVuYW1lLWZpbGUgcHJvZy10bXAgcHJvZykpKSkKCihkZWZpbmUgd3JhcC1zY3JpcHQK ICAobGV0ICgoaW50ZXJwcmV0ZXItcmVnZXgKICAgICAgICAgKG1ha2UtcmVnZXhwCiAgICAgICAg ICAoc3RyaW5nLWFwcGVuZCAiXiMhID8oL1teIF0rL2Jpbi8oIgogICAgICAgICAgICAgICAgICAg ICAgICAgKHN0cmluZy1qb2luICcoInB5dGhvblteIF0qIgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIlJzY3JpcHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAicGVybCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJydWJ5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhc2giCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2giKSAifCIpCiAgICAgICAg ICAgICAgICAgICAgICAgICAiKSkoID8uKikiKSkpCiAgICAgICAgKGNvZGluZy1saW5lLXJlZ2V4 CiAgICAgICAgIChtYWtlLXJlZ2V4cAogICAgICAgICAgIi4qIy4qY29kaW5nWz06XVtbOnNwYWNl Ol1dKihbLWEtekEtWl8wLTkuXSspIikpKQogICAgKGxhbWJkYSogKHByb2cgIzprZXkgKGd1aWxl ICh3aGljaCAiZ3VpbGUiKSkgIzpyZXN0IHZhcnMpCiAgICAgICJXcmFwIHRoZSBzY3JpcHQgUFJP RyBzdWNoIHRoYXQgVkFSUyBhcmUgc2V0IGZpcnN0LiAgVGhlIGZvcm1hdCBvZiBWQVJTCmlzIHRo ZSBzYW1lIGFzIGluIHRoZSBXUkFQLVBST0dSQU0gcHJvY2VkdXJlLiAgVGhpcyBwcm9jZWR1cmUg ZGlmZmVycyBmcm9tCldSQVAtUFJPR1JBTSBpbiB0aGF0IGl0IGRvZXMgbm90IGNyZWF0ZSBhIHNl cGFyYXRlIHNoZWxsIHNjcmlwdC4gIEluc3RlYWQsClBST0cgaXMgbW9kaWZpZWQgZGlyZWN0bHkg YnkgcHJlcGVuZGluZyBhIEd1aWxlIHNjcmlwdCwgd2hpY2ggaXMgaW50ZXJwcmV0ZWQKYXMgYSBj b21tZW50IGluIHRoZSBzY3JpcHQncyBsYW5ndWFnZS4KClNwZWNpYWwgZW5jb2RpbmcgY29tbWVu dHMgYXMgc3VwcG9ydGVkIGJ5IFB5dGhvbiBhcmUgcmVjcmVhdGVkIG9uIHRoZSBzZWNvbmQKbGlu ZS4KCk5vdGUgdGhhdCB0aGlzIHByb2NlZHVyZSBjYW4gb25seSBiZSB1c2VkIG9uY2UgcGVyIGZp bGUgYXMgR3VpbGUgc2NyaXB0cyBhcmUKbm90IHN1cHBvcnRlZC4iCiAgICAgIChkZWZpbmUgdXBk YXRlLWVudgogICAgICAgIChtYXRjaC1sYW1iZGEKICAgICAgICAgICgodmFyIHNlcCAnPSByZXN0 KQogICAgICAgICAgIGAoc2V0ZW52ICx2YXIgLChzdHJpbmctam9pbiByZXN0IHNlcCkpKQogICAg ICAgICAgKCh2YXIgc2VwICdwcmVmaXggcmVzdCkKICAgICAgICAgICBgKGxldCAoKGN1cnJlbnQg KGdldGVudiAsdmFyKSkpCiAgICAgICAgICAgICAgKHNldGVudiAsdmFyIChpZiBjdXJyZW50CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAsKHN0cmluZy1qb2lu IHJlc3Qgc2VwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LHNlcCBjdXJyZW50KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLChzdHJpbmctam9p biByZXN0IHNlcCkpKSkpCiAgICAgICAgICAoKHZhciBzZXAgJ3N1ZmZpeCByZXN0KQogICAgICAg ICAgIGAobGV0ICgoY3VycmVudCAoZ2V0ZW52ICx2YXIpKSkKICAgICAgICAgICAgICAoc2V0ZW52 ICx2YXIgKGlmIGN1cnJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmct YXBwZW5kIGN1cnJlbnQgLHNlcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLChzdHJpbmctam9pbiByZXN0IHNlcCkpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAsKHN0cmluZy1qb2luIHJlc3Qgc2VwKSkpKSkKICAgICAgICAgICgodmFyICc9IHJl c3QpCiAgICAgICAgICAgYChzZXRlbnYgLHZhciAsKHN0cmluZy1qb2luIHJlc3QgIjoiKSkpCiAg ICAgICAgICAoKHZhciAncHJlZml4IHJlc3QpCiAgICAgICAgICAgYChsZXQgKChjdXJyZW50IChn ZXRlbnYgLHZhcikpKQogICAgICAgICAgICAgIChzZXRlbnYgLHZhciAoaWYgY3VycmVudAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgLChzdHJpbmctam9pbiBy ZXN0ICI6IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6 IiBjdXJyZW50KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLChzdHJpbmctam9pbiBy ZXN0ICI6IikpKSkpCiAgICAgICAgICAoKHZhciAnc3VmZml4IHJlc3QpCiAgICAgICAgICAgYChs ZXQgKChjdXJyZW50IChnZXRlbnYgLHZhcikpKQogICAgICAgICAgICAgIChzZXRlbnYgLHZhciAo aWYgY3VycmVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQg Y3VycmVudCAiOiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICwoc3RyaW5nLWpvaW4gcmVzdCAiOiIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LChzdHJpbmctam9pbiByZXN0ICI6IikpKSkpKSkKICAgICAgKGxldC12YWx1ZXMgKCgoaW50ZXJw cmV0ZXIgYXJncyBjb2RpbmctbGluZSkKICAgICAgICAgICAgICAgICAgICAoY2FsbC13aXRoLWFz Y2lpLWlucHV0LWZpbGUgcHJvZwogICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAocCkKICAg ICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGZpcnN0LW1hdGNoCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZmFsc2UtaWYtZXhjZXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHJlZ2V4cC1leGVjIGludGVycHJldGVyLXJlZ2V4IChyZWFkLWxpbmUgcCkpKSkp CiAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlcyAoYW5kIGZpcnN0LW1hdGNoIChtYXRj aDpzdWJzdHJpbmcgZmlyc3QtbWF0Y2ggMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoYW5kIGZpcnN0LW1hdGNoIChtYXRjaDpzdWJzdHJpbmcgZmlyc3QtbWF0Y2ggMykpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmFsc2UtaWYtZXhjZXB0aW9uCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFuZD0+IChyZWdleHAtZXhlYyBjb2Rpbmct bGluZS1yZWdleCAocmVhZC1saW5lIHApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobGFtYmRhIChtKSAobWF0Y2g6c3Vic3RyaW5nIG0gMCkpKSkpKSkpKSkKICAg ICAgICAoaWYgaW50ZXJwcmV0ZXIKICAgICAgICAgICAgKGxldCogKChoZWFkZXIgKGZvcm1hdCAj ZiAiXAojIX5hIC0tbm8tYXV0by1jb21waWxlCiMhIzsgfmEKI1xcLX5zCiNcXC1+cwoiCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbGUKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAob3IgY29kaW5nLWxpbmUgIkd1aXggd3JhcHBlciIpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgJ2JlZ2luIChtYXAgdXBkYXRlLWVudgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCB2 YXJzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoKCM6Z3VpbGUgXyAuIHZhcnMpIHZhcnMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoXyB2YXJzKSkpKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGAobGV0ICgoY2wgKGNvbW1hbmQtbGluZSkpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSBleGVjbCAsaW50ZXJwcmV0ZXIKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciBjbCkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgKGNhciBjbCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVuZAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJywoc3RyaW5n LXNwbGl0IGFyZ3MgI1xzcGFjZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNsKSkpKSkpCiAgICAgICAgICAgICAgICAgICAodGVtcGxhdGUgKHN0 cmluZy1hcHBlbmQgcHJvZyAiLlhYWFhYWCIpKQogICAgICAgICAgICAgICAgICAgKG91dCAgICAg IChta3N0ZW1wISB0ZW1wbGF0ZSkpCiAgICAgICAgICAgICAgICAgICAoc3QgICAgICAgKHN0YXQg cHJvZykpCiAgICAgICAgICAgICAgICAgICAobW9kZSAgICAgKHN0YXQ6bW9kZSBzdCkpKQogICAg ICAgICAgICAgICh3aXRoLXRocm93LWhhbmRsZXIgI3QKICAgICAgICAgICAgICAgIChsYW1iZGEg KCkKICAgICAgICAgICAgICAgICAgKGNhbGwtd2l0aC1hc2NpaS1pbnB1dC1maWxlIHByb2cKICAg ICAgICAgICAgICAgICAgICAobGFtYmRhIChwKQogICAgICAgICAgICAgICAgICAgICAgKGRpc3Bs YXkgaGVhZGVyIG91dCkKICAgICAgICAgICAgICAgICAgICAgIChkdW1wLXBvcnQgcCBvdXQpCiAg ICAgICAgICAgICAgICAgICAgICAoY2xvc2Ugb3V0KQogICAgICAgICAgICAgICAgICAgICAgKGNo bW9kIHRlbXBsYXRlIG1vZGUpCiAgICAgICAgICAgICAgICAgICAgICAocmVuYW1lLWZpbGUgdGVt cGxhdGUgcHJvZykKICAgICAgICAgICAgICAgICAgICAgIChzZXQtZmlsZS10aW1lIHByb2cgc3Qp KSkpCiAgICAgICAgICAgICAgICAobGFtYmRhIChrZXkgLiBhcmdzKQogICAgICAgICAgICAgICAg ICAoZm9ybWF0IChjdXJyZW50LWVycm9yLXBvcnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAg IndyYXAtc2NyaXB0OiB+YTogZXJyb3I6IH5hIH5zfiUiCiAgICAgICAgICAgICAgICAgICAgICAg ICAgcHJvZyBrZXkgYXJncykKICAgICAgICAgICAgICAgICAgKGZhbHNlLWlmLWV4Y2VwdGlvbiAo ZGVsZXRlLWZpbGUgdGVtcGxhdGUpKQogICAgICAgICAgICAgICAgICAocmFpc2UgKGNvbmRpdGlv bgogICAgICAgICAgICAgICAgICAgICAgICAgICgmd3JhcC1lcnJvciAocHJvZ3JhbSBwcm9nKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZSBrZXkpKSkpCiAgICAg ICAgICAgICAgICAgICNmKSkpCiAgICAgICAgICAgIChyYWlzZSAoY29uZGl0aW9uCiAgICAgICAg ICAgICAgICAgICAgKCZ3cmFwLWVycm9yIChwcm9ncmFtIHByb2cpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh0eXBlICduby1pbnRlcnByZXRlci1mb3VuZCkpKSkpKSkpKQoKKGRl ZmluZSogKG1ha2UtZGVza3RvcC1lbnRyeS1maWxlIGRlc3RpbmF0aW9uICM6a2V5CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZSAiQXBwbGljYXRpb24iKSA7IE9uZSBvZiAi QXBwbGljYXRpb24iLCAiTGluayIgb3IgIkRpcmVjdG9yeSIuCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAodmVyc2lvbiAiMS4xIikKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZW5lcmljLW5h bWUgbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuby1kaXNwbGF5ICNm KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWNvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGhpZGRlbiAjZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHktc2hv dy1pbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90LXNob3ctaW4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkLWJ1cy1hY3RpdmF0YWJsZSAjZikKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeS1leGVjCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBleGVjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRo CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGVybWluYWwgI2YpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtaW1lLXR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj YXRlZ29yaWVzICJBcHBsaWNhdGlvbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbXBsZW1lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3Jkcwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXJ0dXAtbm90aWZ5ICN0KQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnR1cC13LW0tY2xhc3MKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICM6cmVzdCBhbGwtYXJncykKICAiQ3JlYXRlIGEgZGVz a3RvcCBlbnRyeSBmaWxlIGF0IERFU1RJTkFUSU9OLgpZb3UgbXVzdCBzcGVjaWZ5IE5BTUUuCgpW YWx1ZXMgY2FuIGJlIGJvb2xlYW5zLCBudW1iZXJzLCBzdHJpbmdzIG9yIGxpc3Qgb2Ygc3RyaW5n cy4KCkFkZGl0aW9uYWxseSwgbG9jYWxlcyBjYW4gYmUgc3BlY2lmaWVkIHdpdGggYW4gYWxpc3Qg d2hlcmUgdGhlIGtleSBpcyB0aGUKbG9jYWxlLiAgVGhlICNmIGtleSBzcGVjaWZpZXMgdGhlIGRl ZmF1bHQuICBFeGFtcGxlOgoKICAjOm5hbWUgJygoI2YgXCJJIGxvdmUgR3VpeFwiKSAoXCJmclwi IFwiSidhaW1lIEd1aXhcIikpCgpwcm9kdWNlcwoKICBOYW1lPUkgbG92ZSBHdWl4CiAgTmFtZVtm cl09SidhaW1lIEd1aXgKCkZvciBhIGNvbXBsZXRlIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXQs IHNlZSB0aGUgc3BlY2lmaWNhdGlvbnMgYXQKaHR0cHM6Ly9zcGVjaWZpY2F0aW9ucy5mcmVlZGVz a3RvcC5vcmcvZGVza3RvcC1lbnRyeS1zcGVjL2Rlc2t0b3AtZW50cnktc3BlYy1sYXRlc3QuaHRt bC4iCiAgKGRlZmluZSAoZXNjYXBlLXNlbWljb2xvbiBzKQogICAgKHN0cmluZy1qb2luIChzdHJp bmctc3BsaXQgcyAjXDspICJcXDsiKSkKICAoZGVmaW5lKiAocGFyc2Uga2V5IHZhbHVlICM6b3B0 aW9uYWwgbG9jYWxlKQogICAgKHNldCEgdmFsdWUgKG1hdGNoIHZhbHVlCiAgICAgICAgICAgICAg ICAgICgjdCAidHJ1ZSIpCiAgICAgICAgICAgICAgICAgICgjZiAiZmFsc2UiKQogICAgICAgICAg ICAgICAgICAoKD8gIG51bWJlcj8gbikgbikKICAgICAgICAgICAgICAgICAgKCg/ICBzdHJpbmc/ IHMpIChlc2NhcGUtc2VtaWNvbG9uIHMpKQogICAgICAgICAgICAgICAgICAoKD8gIGxpc3Q/IHZh bHVlKQogICAgICAgICAgICAgICAgICAgKGNhdGNoICd3cm9uZy10eXBlLWFyZwogICAgICAgICAg ICAgICAgICAgICAobGFtYmRhICgpIChzdHJpbmctam9pbiAobWFwIGVzY2FwZS1zZW1pY29sb24g dmFsdWUpICI7IikpCiAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgYXJncyAoZXJyb3IgIkxp c3QgYXJndW1lbnRzIGNhbiBvbmx5IGNvbnRhaW4gc3RyaW5nczogfmEiIGFyZ3MpKSkpCiAgICAg ICAgICAgICAgICAgIChfIChlcnJvciAiVmFsdWUgbXVzdCBiZSBhIGJvb2xlYW4sIG51bWJlciwg c3RyaW5nIG9yIGxpc3Qgb2Ygc3RyaW5ncyIpKSkpCiAgICAoZm9ybWF0ICN0ICJ+YT1+YX4lIgog ICAgICAgICAgICAoaWYgbG9jYWxlCiAgICAgICAgICAgICAgICAoZm9ybWF0ICNmICJ+YVt+YV0i IGtleSBsb2NhbGUpCiAgICAgICAgICAgICAgICBrZXkpCiAgICAgICAgICAgIHZhbHVlKSkKCiAg KGRlZmluZSBrZXktZXJyb3ItbWVzc2FnZSAiVGhpcyBwcm9jZWR1cmUgb25seSB0YWtlcyBrZXkg YXJndW1lbnRzIGJlc2lkZSBERVNUSU5BVElPTiIpCgogICh1bmxlc3MgbmFtZQogICAgKGVycm9y ICJNaXNzaW5nIE5BTUUga2V5IGFyZ3VtZW50IikpCiAgKHVubGVzcyAobWVtYmVyICM6dHlwZSBh bGwtYXJncykKICAgIChzZXQhIGFsbC1hcmdzIChhcHBlbmQgKGxpc3QgIzp0eXBlIHR5cGUpIGFs bC1hcmdzKSkpCiAgKG1rZGlyLXAgKGRpcm5hbWUgZGVzdGluYXRpb24pKQoKICAod2l0aC1vdXRw dXQtdG8tZmlsZSBkZXN0aW5hdGlvbgogICAgKGxhbWJkYSAoKQogICAgICAoZm9ybWF0ICN0ICJb RGVza3RvcCBFbnRyeV1+JSIpCiAgICAgIChsZXQgbG9vcCAoKGFyZ3MgYWxsLWFyZ3MpKQogICAg ICAgIChtYXRjaCBhcmdzCiAgICAgICAgICAoKCkgI3QpCiAgICAgICAgICAoKF8pIChlcnJvciBr ZXktZXJyb3ItbWVzc2FnZSkpCiAgICAgICAgICAoKGtleSB2YWx1ZSAuIC4uLikKICAgICAgICAg ICAodW5sZXNzIChrZXl3b3JkPyBrZXkpCiAgICAgICAgICAgICAoZXJyb3Iga2V5LWVycm9yLW1l c3NhZ2UpKQogICAgICAgICAgIChzZXQhIGtleQogICAgICAgICAgICAgICAgIChzdHJpbmctam9p biAobWFwIHN0cmluZy10aXRsZWNhc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc3RyaW5nLXNwbGl0IChzeW1ib2wtPnN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl3b3JkLT5zeW1ib2wga2V5KSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNcLSkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICIiKSkKICAgICAgICAgICAobWF0Y2ggdmFsdWUKICAgICAgICAg ICAgICgoKF8gLiBfKSAuIF8pCiAgICAgICAgICAgICAgKGZvci1lYWNoIChsYW1iZGEgKGxvY2Fs ZS1zdWJ2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyc2Uga2V5CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoYW5kIChsaXN0PyAoY2RyIGxvY2FsZS1zdWJ2 YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg9IDEgKGxl bmd0aCAoY2RyIGxvY2FsZS1zdWJ2YWx1ZSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDs7IFN1cHBvcnQgYm90aCBwcm9wZXIgYW5kIGltcHJvcGVyIGxpc3RzIGZvciBj b252ZW5pZW5jZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYWRyIGxv Y2FsZS1zdWJ2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIg bG9jYWxlLXN1YnZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciBs b2NhbGUtc3VidmFsdWUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpKQogICAgICAg ICAgICAgKF8KICAgICAgICAgICAgICAocGFyc2Uga2V5IHZhbHVlKSkpCiAgICAgICAgICAgKGxv b3AgKGNkZHIgYXJncykpKSkpKSkpCgoMCjs7Owo7OzsgTG9jYWxlcy4KOzs7CgooZGVmaW5lIChs b2NhbGUtY2F0ZWdvcnktPnN0cmluZyBjYXRlZ29yeSkKICAiUmV0dXJuIHRoZSBuYW1lIG9mIGxv Y2FsZSBjYXRlZ29yeSBDQVRFR09SWSwgb25lIG9mIHRoZSAnTENfJyBjb25zdGFudHMuCklmIENB VEVHT1JZIGlzIGEgYml0d2lzZSBvciBvZiBzZXZlcmFsICdMQ18nIGNvbnN0YW50cywgYW4gYXBw cm94aW1hdGlvbiBpcwpyZXR1cm5lZC4iCiAgKGxldHJlYy1zeW50YXggKChjb252ZXJ0IChzeW50 YXgtcnVsZXMgKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF8pCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChudW1iZXItPnN0cmluZyBjYXRlZ29yeSkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKChfIGZpcnN0IHJlc3QgLi4uKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoaWYgKD0gZmlyc3QgY2F0ZWdvcnkpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc3ltYm9sLT5zdHJpbmcgJ2ZpcnN0KQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGNvbnZlcnQgcmVzdCAuLi4pKSkpKSkKICAgIChjb252ZXJ0IExDX0FERFJF U1MgTENfQUxMIExDX0NPTExBVEUgTENfQ1RZUEUKICAgICAgICAgICAgIExDX0lERU5USUZJQ0FU SU9OIExDX01FQVNVUkVNRU5UIExDX01FU1NBR0VTIExDX01PTkVUQVJZCiAgICAgICAgICAgICBM Q19OQU1FIExDX05VTUVSSUMgTENfUEFQRVIgTENfVEVMRVBIT05FCiAgICAgICAgICAgICBMQ19U SU1FKSkpCgo7OzsgTG9jYWwgVmFyaWFibGVzOgo7OzsgZXZhbDogKHB1dCAnY2FsbC13aXRoLW91 dHB1dC1maWxlL2F0b21pYyAnc2NoZW1lLWluZGVudC1mdW5jdGlvbiAxKQo7OzsgZXZhbDogKHB1 dCAnY2FsbC13aXRoLWFzY2lpLWlucHV0LWZpbGUgJ3NjaGVtZS1pbmRlbnQtZnVuY3Rpb24gMSkK Ozs7IGV2YWw6IChwdXQgJ3dpdGgtdGhyb3ctaGFuZGxlciAnc2NoZW1lLWluZGVudC1mdW5jdGlv biAxKQo7OzsgZXZhbDogKHB1dCAnbGV0LW1hdGNoZXMgJ3NjaGVtZS1pbmRlbnQtZnVuY3Rpb24g MykKOzs7IGV2YWw6IChwdXQgJ3dpdGgtYXRvbWljLWZpbGUtcmVwbGFjZW1lbnQgJ3NjaGVtZS1p bmRlbnQtZnVuY3Rpb24gMSkKOzs7IEVuZDoK --0000000000003fe29005d34a0f30--