From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Shane Mulligan Newsgroups: gmane.emacs.tangents Subject: Re: Help building Pen.el (GPT for emacs) Date: Fri, 30 Jul 2021 15:20:07 +1200 Message-ID: References: <83lf642jeh.fsf@gnu.org> <83r1fp1es9.fsf@gnu.org> <83o8at1c63.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000fab60a05c84eb265" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="8875"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Eli Zaretskii , Stefan Kangas , emacs-tangents@gnu.org, Jean Louis To: rms@gnu.org Original-X-From: emacs-tangents-bounces+get-emacs-tangents=m.gmane-mx.org@gnu.org Fri Jul 30 05:20:42 2021 Return-path: Envelope-to: get-emacs-tangents@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m9J4k-00029C-4o for get-emacs-tangents@m.gmane-mx.org; Fri, 30 Jul 2021 05:20:42 +0200 Original-Received: from localhost ([::1]:40694 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m9J4i-0003BY-1x for get-emacs-tangents@m.gmane-mx.org; Thu, 29 Jul 2021 23:20:40 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:55596) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m9J4S-0003BP-QQ for emacs-tangents@gnu.org; Thu, 29 Jul 2021 23:20:24 -0400 Original-Received: from mail-yb1-xb2a.google.com ([2607:f8b0:4864:20::b2a]:40504) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1m9J4Q-0001XT-FG; Thu, 29 Jul 2021 23:20:24 -0400 Original-Received: by mail-yb1-xb2a.google.com with SMTP id s48so13568380ybi.7; Thu, 29 Jul 2021 20:20:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=EhQgOPmwxKw4BEODEbJqCOHbpX+vh0gPTGzXXpy33VM=; b=vXaGjACAUgYgVslU42EVv7WIYBvBbJD1W6DSxjXsTi8ZMdNKww9NxG2uteNiDp6Pb7 9MVTRHE2IXQB4fzg0071dBH4KaEp7W06DsWhdCAGqCrEYuWCZUuoYEGzu01s3fAvrHWF RBaBHBPES086F3yqX49LgSecGdreBGquSUeJcneBlOYLpiYyby6AhxMr85nVmKpUjESw TJmzpj3TtQs5eHjmCxfc4P0gL0uGuqKxcPjY44DXcnhqpV4sThNpVPLhYFy3q191KFWG byb4SPI8uo2TUwODZvz3LeH8ndgKuV+jeomicCxW2KJxzx/5DcbNNszQtF/hln2aWiUJ F0hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=EhQgOPmwxKw4BEODEbJqCOHbpX+vh0gPTGzXXpy33VM=; b=i57E8/D0c8KT8YKObx+ME1pHTqyWVoYbICxxoZteXmtUFKaclwZfSJo044cKJRjNny kh6ldc1eGw1tNx6adAe8PyI6bh/40BJ6dHAFtMyzh7DiaLBRBD34raVT0L2JB1zycwQX 1ENk2ToWdcma0qDpr7lRkwRYvNPEfOq5WAFYDeIxcv8X4b5RTOk8nqmGtGaxF7GSybTt X9P/gxJmsuUqYP2ae45Rma9bVw5b23ulSKeepsNZ0YiStnTa46kPQB1PYv4KR7TmbbO0 TN1mctgHR/+ASEqVjt7/Ik72Q0OeB98EPlzCbwOReM4hWbZ6/9/2QatCygI+WKN4hARI cX8w== X-Gm-Message-State: AOAM530+1RYhxyPnVFjULT5xydOeFaSmn/dcSqPfRrgieE+es8wWsWwN IBMdwh/jTCtBXSd28C+D5tLcX99+ntwV7lNipOstS/fGH3D+ X-Google-Smtp-Source: ABdhPJxprnsOmd4zD0xiiNWHlCoXwe/6h/2uKKxOYrmOqHviPq1XTrXSxThQeRpDjGU7/vA/5Ai8vDTTW92Gl/7EBN4= X-Received: by 2002:a25:be0f:: with SMTP id h15mr415650ybk.520.1627615219312; Thu, 29 Jul 2021 20:20:19 -0700 (PDT) In-Reply-To: Received-SPF: pass client-ip=2607:f8b0:4864:20::b2a; envelope-from=mullikine@gmail.com; helo=mail-yb1-xb2a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-tangents@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Emacs news and miscellaneous discussions outside the scope of other Emacs mailing lists List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-tangents-bounces+get-emacs-tangents=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-tangents" Xref: news.gmane.io gmane.emacs.tangents:705 Archived-At: --000000000000fab60a05c84eb265 Content-Type: multipart/alternative; boundary="000000000000fab60805c84eb263" --000000000000fab60805c84eb263 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hey guys. In the last week I have been writing a thesis for Imaginary Programming, which aims to make all of this clear and formalised. I am very sorry if I have sounded frustrated, but I think that this is so important for free software and a GPL-4 may be required to protect people, but also that Copilot and OpenAI's Codex and GPT-3 models infringe upon the spirit of GPT-3 code. I will attach the thesis into this email. https://github.com/semiosis/imaginary-programming-thesis/blob/master/thesis= .org I am working around the clock to finish this thesis and have it published, but it's really important to have these protections in place before the huge suite of SASS services and Microsoft Apps hit the market which are using Copilot and Codex to generate derivative works and applications built upon the backs of free software developers. Thank you. Shane Mulligan How to contact me: =F0=9F=87=A6=F0=9F=87=BA 00 61 421 641 250 =F0=9F=87=B3=F0=9F=87=BF 00 64 21 1462 759 <+64-21-1462-759> mullikine@gmail.com On Mon, Jul 26, 2021 at 12:28 PM Shane Mulligan wrote= : > Hey Richard and all. > > I have just participated in the Augment Minds unconference and have a > recorded demo of Pen.el > > I will also be presenting the demo to Nat Friedman. I have made some > references to the new codex model and how it has stolen the inspiration > from Free software. > > The point I'm making is this: Pen.el and software which combines GPT into > the operating system is the future > and I'm alerting GNU to this first but I'm also showing GitHub. This is > for the following reasons > > - The Copilot/codex model is a disgrace > - We need an free repository of prompts and prompt functions for emacs > > I hope the demo which I will send in the next day or two (or whenever it > becomes available) will be informative. It will be easier than the > asciicast. > > Thank you. > > Shane Mulligan > > How to contact me: > =F0=9F=87=A6=F0=9F=87=BA 00 61 421 641 250 > =F0=9F=87=B3=F0=9F=87=BF 00 64 21 1462 759 <+64-21-1462-759> > mullikine@gmail.com > > > On Mon, Jul 26, 2021 at 12:16 PM Richard Stallman wrote: > >> [[[ To any NSA and FBI agents reading my email: please consider ]]] >> [[[ whether defending the US Constitution against all enemies, ]]] >> [[[ foreign or domestic, requires you to follow Snowden's example. ]]] >> >> > GPT turns emacs into something very powerful >> > beyond your current comprehension. It's so >> > profound that it will replace many of the >> > online and offline services you may have come >> > to take for granted. It goes way beyond that too. >> >> Unfortunately, telling me that something is "powerful beyond [my] >> current comprehension" does not help me start to comprehend any of it. >> >> Would you like to name some of the services that GPT would replace? >> I might learn something concrete from that. >> >> > Here is the recording of me doing that: >> >> > https://asciinema.org/a/SCUhm3l11N3w5eilUfewBDCiP >> >> I looked at that page, but I have no idea what it means. The page >> shows three boxes side by side. Each seems to contain some code, or >> maybe parameter specs, in a language I don't know. I clicked on the >> first box and it brought me to a similar page with three other boxes. >> >> It tasks about "asciicasts" but I don't know what that means. >> If it is something to be viewed, how can I do so? >> >> >> >> -- >> Dr Richard Stallman (https://stallman.org) >> Chief GNUisance of the GNU Project (https://gnu.org) >> Founder, Free Software Foundation (https://fsf.org) >> Internet Hall-of-Famer (https://internethalloffame.org) >> >> >> --000000000000fab60805c84eb263 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hey guys.

In the last week I have been = writing a thesis for Imaginary Programming, which aims to make all of this = clear and formalised.

I am very sorry if I=C2=A0ha= ve sounded frustrated, but I think that this is so important for free softw= are and a GPL-4 may be required to protect people, but also that Copilot an= d OpenAI's Codex and GPT-3 models infringe upon the spirit of GPT-3 cod= e.

I will attach the thesis into this email.
=


I am= working around the clock to finish this thesis and have it published, but = it's really important to have these protections in place before the hug= e suite of SASS services and Microsoft Apps hit the market which are=C2=A0u= sing=C2=A0Copilot and Codex to=C2=A0generate derivative=C2=A0works and appl= ications built upon the backs of free software developers.

Thank you.

Shane Mulligan

=
How to contact me:
3D""
=F0=9F=87=A6=F0=9F=87=BA00 61 421 641 250
=F0=9F= =87=B3=F0=9F=87=BF00 6= 4 21 1462 759
mullikine@gmail.com



On Mon, Jul 26, 2021 at= 12:28 PM Shane Mulligan <mulliki= ne@gmail.com> wrote:
Hey Richard and all.

I have= just participated in the Augment Minds unconference and have a recorded de= mo of Pen.el

I will also be presenting the demo to= Nat Friedman. I have made some references to the new codex model and how i= t has stolen the inspiration from Free software.

T= he point I'm making is this: Pen.el and software which combines GPT int= o the operating=C2=A0system is the future
and I'm alerting GN= U to this first but I'm also showing GitHub. This is for the following = reasons

- The Copilot/codex model is a disgrace
- We need an free repository of prompts and prompt functions for em= acs

I hope the demo which I will send in the next = day or two (or whenever it becomes available) will be informative. It will = be easier than the asciicast.

Thank you.

Shane Mulligan

How to contact me:
3D""
=F0=9F=87=A6=F0=9F=87=BA00 61 421 641 250
=F0=9F=87=B3=F0=9F=87=BF00 64 21 1462 759
mullikine@gmail= .com



On Mon, Jul 26, 2021 at= 12:16 PM Richard Stallman <rms@gnu.org> wrote:
[[[ To any NSA and FBI agents reading my email: please cons= ider=C2=A0 =C2=A0 ]]]
[[[ whether defending the US Constitution against all enemies,=C2=A0 =C2=A0= =C2=A0]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]<= br>
=C2=A0 > GPT turns emacs into something very powerful
=C2=A0 > beyond your current comprehension. It's so
=C2=A0 > profound that it will replace many of the
=C2=A0 > online and offline services you may have come
=C2=A0 > to take for granted. It goes way beyond that too.

Unfortunately, telling me that something is "powerful beyond [my]
current comprehension" does not help me start to comprehend any of it.=

Would you like to name some of the services that GPT would replace?
I might learn something concrete from that.

=C2=A0 > Here is the recording of me doing that:

=C2=A0 > https://asciinema.org/a/SCUhm3l11N3w5ei= lUfewBDCiP

I looked at that page, but I have no idea what it means.=C2=A0 The page
shows three boxes side by side.=C2=A0 Each seems to contain some code, or maybe parameter specs, in a language I don't know.=C2=A0 I clicked on t= he
first box and it brought me to a similar page with three other boxes.

It tasks about "asciicasts" but I don't know what that means.=
If it is something to be viewed, how can I do so?



--
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)


--000000000000fab60805c84eb263-- --000000000000fab60a05c84eb265 Content-Type: application/octet-stream; name="thesis.org" Content-Disposition: attachment; filename="thesis.org" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_krps0mw90 KiBJbWFnaW5hcnkgcHJvZ3JhbW1pbmcgaXMgYSBuZXcgcHJvZ3JhbW1pbmcgcGFyYWRpZ20gYmFz ZWQgb24gbGFuZ3VhZ2UgbW9kZWxzCgoqKiBBYnN0cmFjdApJbWFnaW5hcnkgY29kZSBpcyBjb2Rl IHdobydzIGJlaGF2aW91ciBpcwppbmZsdWVuY2VkIGJ5IExNcy4gVGhlIHNpZGUgZWZmZWN0cyBv ciByZXR1cm4KdmFsdWVzIG9mIGltYWdpbmFyeSBjb2RlLCB0aGVyZWZvcmUsIGFyZQppbWFnaW5l ZCBieSBhIExNLCBidXQgbWF5IGFsc28gYmUgdXNlZCB0bwpmYWNpbGl0YXRlIHRoZSBpbWFnaW5h dGlvbiBvZiB0aGUgcHJvZ3JhbW1lcgphbmQgbWF5IGJlIGNvbnNpZGVyZWQgdG8gYmUgYSBiaWN5 Y2xlIGZvciB0aGUKaW1hZ2luYXRpb24uIFRoaXMgaXMgdmVyeSBvYnZpb3VzIHdoZW4KaW50ZXJh Y3Rpbmcgd2l0aCBhbiBpbWFnaW5hcnkgUkVQTC4gSSB3aWxsCmF0dGVtcHQgdG8gZm9ybWFsaXNl IGltYWdpbmFyeSBwcm9ncmFtbWluZywKbWFrZSBzb21lIGRlbW9uc3RyYXRpb25zIG9mIHByb2dy YW1taW5nIHdpdGhpbgp0aGlzIHBhcmFkaWdtIGFuZCBleHBsb3JlIHNvbWUgdXNlZnVsIGRhdGEK c3RydWN0dXJlcyBhbmQgYWxnb3JpdGhtcyB0aGF0IGFyZSBib3RoCmltcHVyZWx5IGFuZCBwdXJl bHkgaW1hZ2luYXJ5LiBJJ2xsIGFsc28gZ2l2ZQphbiBleGFtcGxlIG9mIGFuIGltYWdpbmFyeSBw cm9ncmFtbWluZwpsYW5ndWFnZSB0aGF0IEkgaGF2ZSBjcmVhdGVkIChwZXJoYXBzIHRoZQpmaXJz dCBvZiBpdHMga2luZCksIGV4YW1wbGFyeS4gVGhlIG1vdGl2YXRpb24KZm9yIGZvcm1hbGlzaW5n IGltYWdpbmFyeSBwcm9ncmFtbWluZyBpcyBub3QKcHVyZWx5IGFjYWRlbWljLiBJbWFnaW5hcnkg Y29kZSBuZWVkcyB0byBiZQpyZWNvZ25pc2VkIGFzIGNvZGUgc28gdGhhdCBpdCBtYXkgYmUgcHJv dGVjdGVkCmJ5IEdQTC4gSSBhbHNvIHBvc2l0IHRoYXQgbW9kZWxzIG9mIE5MLCBpZgp0cmFpbmVk IG9uIHNvdXJjZSBjb2RlLCBjcmVhdGUgYSBob2xvZ3JhcGhpYwpyZXByZXNlbnRhdGlvbiBvZiB0 aGUgc29mdHdhcmUsIHdoaWNoIEkgYXJndWUKaXMgYSBkZXJpdmF0aXZlIHdvcmsgYW5kIGEgcmVm bGVjdGlvbiBvZiB0aGUKb3JpZ2luYWwgY29kZS4gSSBhcmd1ZSB0aGF0IGEgaG9sb2dyYXBoaWMK cmVwcmVzZW50YXRpb24gb2Ygc29mdHdhcmUgYm90aCB3aXRoaW4gKGF1dGhvcgppbnNwaXJhdGlv bikgYW5kIHdpdGhvdXQgKGhvdyBpdCBpcyB1c2VkKSBpcwpqdXN0IGFub3RoZXIgcmVwcmVzZW50 YXRpb24gb2YgdGhlIHNvZnR3YXJlLAphbG9uZ3NpZGUgdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2Rl LCBqdXN0IGFzCmZ1bmN0aW9ucyBtYXkgYmUgcmVwcmVzZW50ZWQgZGlmZmVyZW50bHkuCgoqKiBJ bnRyb2R1Y3Rpb24KVGhlIHJlY2VudGx5IGJ1cmdlb25pbmcgYW5kIHNvb24gdG8gZGltaW5pc2gK cHJvZ3JhbW1pbmcgcGFyYWRpZ20gb2YgcHJvbXB0IGVuZ2luZWVyaW5nIGlzCmFib3V0IHRvIGJl IHN1cGVyc2VkZWQgYnkgcHJvbXB0LXR1bmluZyBhbmQKdGhlIGZpbmUtdHVuaW5nIG9mIExNcyB3 aGljaCB3aWxsIGZ1cnRoZXIKb2NjbHVkZSB0aGUgd2F5IHRoYXQgc29mdHdhcmUgd29ya3MuIFBy b21wdAplbmdpbmVlcmluZyBoYXMgYmFyZWx5IGhhZCBpdCdzIHRpbWUgaW4gdGhlCnNwb3RsaWdo dCBhbmQgYXMgYSByZXN1bHQgaGFzIG5vdCBlc3RhYmxpc2hlZAppdHNlbGYgYXMgYSBzb3ZlcmVp Z24gcHJvZ3JhbW1pbmcgcGFyYWRpZ20uCgpIb3dldmVyLCBpbWFnaW5hcnkgcHJvZ3JhbW1pbmcg aXMgYSBicm9hZGVyCmRlZmluaXRpb24gdGhhdCBlbmNhcHN1bGF0ZXMgYWxsIHByb2dyYW1taW5n CnRoYXQgc29saWNpdHMgTE1zIGFuZCB1c2VzIHRoZWlyIG91dHB1dCB0bwplZmZlY3QgY2hhbmdl IGluIGEgcHJvZ3JhbSdzIGxvZ2ljIGFuZCB3aWxsCm91dGxhc3QgcHJvbXB0IGVuZ2luZWVyaW5n IGFzIGEgdXNlZnVsCmNvbmNlcHQuCgpJbiBjb250cmFzdCB3aXRoIGltYWdpbmFyeSBjb2RlLCBv cmRpbmFyeSBjb2RlCmhhcyBub3QgeWV0IGJlZW4gY29udGFtaW5hdGVkIGJ5IGEgTE0sIGFuZCB3 ZQpzYXkgdGhhdCBpdCBoYXMgbm8gaW1hZ2luYXJ5IGRpbWVuc2lvbiB0byBpdC4KCkltcHVyZSBp bWFnaW5hcnkgY29kZSBpcyB3aGVyZSBvcmRpbmFyeSBjb2RlCmludGVyc2VjdHMgd2l0aCBwdXJl IGltYWdpbmFyeSBjb2RlLiBBbiBpbXB1cmUKaW1hZ2luYXJ5IGZ1bmN0aW9uIGlzIGEgZnVuY3Rp b24gdGhhdCBxdWVyaWVzCmEgTE0gdG8gZGlyZWN0bHkgYWZmZWN0IGl0cyBvd24gbG9naWMgb3IK b3V0cHV0LiBXZSBzYXkgdGhhdCBhbiBpbXB1cmUgaW1hZ2luYXJ5CmZ1bmN0aW9uIGlzIGdyb3Vu ZGVkIFt0byByZWFsaXR5XSBiZWNhdXNlIGl0J3MKY29ubmVjdGluZyBiYXNlIHJlYWxpdHkgdG8g YSBMTS4KClRoZSBvdXRwdXQgYW5kIGJlaGF2aW91ciBvZiBhbiBpbXB1cmUKaW1hZ2luYXJ5IGZ1 bmN0aW9uIGlzIGRpcmVjdGx5IGluZmx1ZW5jZWQgYnkKYmFzZSByZWFsaXR5IHBsdXMgYSBxdWVy eSB0byBhIExNLgoKVGhlIHF1ZXJ5IFtvciBwcm9tcHRdIHRvIHRoZSBMTSBtYXkgYmUgaW4gcGFy dApjb25zdHJ1Y3RlZCBtYW51YWxseSB0aHJvdWdoIHByb21wdAplbmdpbmVlcmluZywgb3IgaW4g cGFydCBjb25zdHJ1Y3RlZAphdXRvbWF0aWNhbGx5IHZpYSBwcm9tcHQgdHVuaW5nLCBvciBpbiBw YXJ0IApjb25zdHJ1Y3RlZCBvciBlbGltaW5hdGVkIGJ5IHRoZSBmaW5lLXR1bmluZyBvZiBhIExN LgpFdmVuIGFmdGVyIGZpbmUtdHVuaW5nLCB0aGVyZQppcyBzdGlsbCBhIHF1ZXJ5IHRvIGJlIGZv cm11bGF0ZWQgdG8gdGhlIExNLAphbmQgdGhhdCBxdWVyeSBtYXkgaW5kZWVkIGJlIHRoZSBlbXB0 eSBzdHJpbmcuCgpDb25zaWRlcmluZyB0aGF0IGxhcmdlIExNcyBzdWNoIGFzIEdQVC0zCmNhbiBw ZXJmb3JtIG11bHRpcGxlIHRhc2tzLCB0aGUgcHJvY2VzcyBvZgpyZWZpbmluZyBhIHF1ZXJ5IHRo cm91Z2ggcHJvbXB0LWVuZ2luZWVyaW5nLApwcm9tcHQtdHVuaW5nIG9yIGZpbmUtdHVuaW5nIGFs c28KY2hhcmFjdGVyaXNlcyB0aGUgZXhwZWN0ZWQgb3V0cHV0IGZyb20gdGhlIExNLgpBbGwgdGhh dCBpcyBsZWZ0IGlzIHRvIG1hcCBhIHByb21wdCBhbG9uZyB3aXRoCml0cyBhc3NvY2lhdGVkIExN IHRvIGEgZnVuY3Rpb24gYW5kIHRoZW4geW91CmhhdmUgYSBwcm9tcHQgZnVuY3Rpb24uCgpQcm9t cHQgZnVuY3Rpb25zIHJlY29uY2lsZSBMTXMgd2l0aApwcm9ncmFtbWluZyBsYW5ndWFnZXMuIEEg cHJvbXB0CmZ1bmN0aW9uIGlzIGp1c3QgYSBmdW5jdGlvbiB0aGF0IHByb21wdHMgYSBMTQphbmQg bWF5IG9wdGlvbmFsbHkgYmUgcGFyYW1ldGVyaXplZCB3aXRoCnRlbXBsYXRlIHZhcmlhYmxlcyB0 aGF0IGFyZSBzdWJzdGl0dXRlZCBpbnRvCnRoZSBwcm9tcHQgb3IgYWxzbyBjb250YWluIGh5cGVy cGFyYW1ldGVycyB0bwphZmZlY3QgdGhlIExNJ3Mgb3BlcmF0aW9uLgoKU3VjaCBmdW5jdGlvbnMg YXJlIHRoZSBiYXNpcyBmb3Igc2VydmljZXMgc3VjaAphcyBHaXRIdWIgQ29waWxvdC4KCioqIElt cHVyZSBpbWFnaW5hcnkgY29kZSBpcyB1c2VmdWwKSW1wdXJlIGltYWdpbmFyeSBjb2RlIGlzIHZl cnkgb2J2aW91c2x5IHVzZWZ1bAphcyBzdWNoIGNvZGUgdXRpbGlzZXMgTE1zIHRoYXQgYXJlIHRy YWluZWQgdG8KcGVyZm9ybSB1c2VmdWwgdGFza3MuIEdQVC0zLCBmb3IgZXhhbXBsZSwgaXMgYQpn ZW5lcmFsaXN0IGFuZCBvbmx5IHJlcXVpcmVzIGEgdGlueSBhbW91bnQgb2YKcHJvbXB0IGRlc2ln biBhbmQvb3IgZmluZS10dW5pbmcgdG8gZGlyZWN0IGl0CnRvIHBlcmZvcm0gdGhlIHRhc2sgeW91 IHdhbnQuCgpGb2xsb3dpbmcgYXJlIHNvbWUgZGVtb25zdHJhdGlvbnMgb2YgdXNpbmcKaW1wdXJl IGltYWdpbmFyeSBjb2RlIHRvIGNvbnN0cnVjdCBwYXJ0IG9mIGFuCmltYWdpbmFyeSBwcm9ncmFt bWluZyBlbnZpcm9ubWVudCwgcGVyZm9ybQpjb2RlIGdlbmVyYXRpb24sIHRyYW5zcGlsZSBjb2Rl IGFuZCB0cmFuc2xhdGUKd29ybGQgbGFuZ3VhZ2VzLgoKKioqIFVzZWZ1bCBpbXB1cmUgaW1hZ2lu YXJ5IGZ1bmN0aW9ucwoqKioqIFdpdGggb25lID1QZW4uZWw9IHN5c3RlbQpUaGUgZm9sbG93aW5n IHByb21wdCBmdW5jdGlvbiBkZWZpbml0aW9uIGZ1bmN0aW9uCmFzc29jaWF0ZXMgYSBwcm9tcHQg d2l0aCBhIExNIChPcGVuQUkncyBHUFQtMwpkYXZpbmNpKSBhbmQgZGVmaW5lcyB0aGUgcGFyYW1l dGVycyBmb3IgYSBmdW5jdGlvbiBpbiBlbWFjcyBsaXNwLgoKIytCRUdJTl9TUkMgeWFtbCAtbiA6 YXN5bmMgOnJlc3VsdHMgdmVyYmF0aW0gY29kZQogIHRpdGxlOiBiYXNoIG9uZSBsaW5lciBnZW5l cmF0b3Igb24gT1MgZnJvbSBuYXR1cmFsIGxhbmd1YWdlCiAgZG9jOiBHZXQgYSBiYXNoIG9uZSBs aW5lciBvbiBPUyBmcm9tIG5hdHVyYWwgbGFuZ3VhZ2UKICBub3RlczoKICAtICJybHByb21wdCBp cyB1c2VkIGhlcmUgb3V0c2lkZSBvZiBwZW4uZWwiCiAgcmxwcm9tcHQ6IG5sc2ggPDE+CiAgcHJv bXB0OiB8CiAgICAgICMgTGlzdCBvZiBvbmUtbGluZXIgc2hlbGwgY29tbWFuZHMgZm9yIDwxPi4K ICAgICAgIyBMYW5ndWFnZTogU2hlbGwKICAgICAgIyBPcGVyYXRpbmcgU3lzdGVtOiA8MT4KCiAg ICAgIElucHV0OiBQcmludCB0aGUgY3VycmVudCBkaXJlY3RvcnkKICAgICAgT3V0cHV0OiBwd2QK ICAgICAgIyMjCiAgICAgIElucHV0OiBMaXN0IGZpbGVzCiAgICAgIE91dHB1dDogbHMgLWwKICAg ICAgIyMjCiAgICAgIElucHV0OiBDaGFuZ2UgZGlyZWN0b3J5IHRvIC90bXAKICAgICAgT3V0cHV0 OiBjZCAvdG1wCiAgICAgICMjIwogICAgICByZXBlYXRlcjogfAogICAgICBJbnB1dDoge30KICAg ICAgT3V0cHV0OgogIGxtLWNvbW1hbmQ6ICJvcGVuYWktY29tcGxldGUuc2giCiAgZW5naW5lOiBk YXZpbmNpCiAgdGVtcGVyYXR1cmU6IDAuOAogIG1heC10b2tlbnM6IDYwCiAgdG9wLXA6IDEKICBz dG9wLXNlcXVlbmNlczoKICAtICIjIyMiCiAgdmFyczoKICAtIE9wZXJhdGluZyBTeXN0ZW0KICAt IGNvbW1hbmQKICBleGFtcGxlczoKICAtIEFyY2ggTGludXgKICAtIEluc3RhbGwgcGFja2FnZQog IHBvc3Rwcm9jZXNzb3I6ICdzZWQgJydzL15PdXRwdXQ6IC8vJycnCiAgY29udmVyc2F0aW9uLW1v ZGU6IHRydWUKIytFTkRfU1JDCgpUaGUgZm9sbG93aW5nIGlzIHRoZSBnZW5lcmF0ZWQgZG9jdW1l bnRhdGlvbgpmb3IgdGhlIGludGVyYWN0aXZlIHByb21wdCBmdW5jdGlvbiBpbiBlbWFjcy4KCiMr QkVHSU5fU1JDIHRleHQgLW4gOmFzeW5jIDpyZXN1bHRzIHZlcmJhdGltIGNvZGUKICBwZi1iYXNo LW9uZS1saW5lci1nZW5lcmF0b3ItZnJvbS1uYXR1cmFsLWxhbmd1YWdlIGlzIGFuIGludGVyYWN0 aXZlCiAgZnVuY3Rpb24gZGVmaW5lZCBpbiBwZW4tZXhhbXBsZS1jb25maWcuZWwuCgogIFNpZ25h dHVyZQogIChwZi1iYXNoLW9uZS1saW5lci1nZW5lcmF0b3ItZnJvbS1uYXR1cmFsLWxhbmd1YWdl ICZvcHRpb25hbCBUQVNLLURFU0NSSVBUSU9OICZrZXkgTk8tU0VMRUNULVJFU1VMVCkKCiAgRG9j dW1lbnRhdGlvbgogIGJhc2ggb25lIGxpbmVyIGdlbmVyYXRvciBmcm9tIG5hdHVyYWwgbGFuZ3Vh Z2UKICBHZXQgYSBiYXNoIG9uZSBsaW5lciBmcm9tIG5hdHVyYWwgbGFuZ3VhZ2UKCiAgcGF0aDoK ICAtIC9ob21lL3NoYW5lL3NvdXJjZS9naXQvc3BhY2VtYWNzL3Byb21wdHMvcHJvbXB0cy9iYXNo LW9uZS1saW5lci5wcm9tcHQKCiAgZXhhbXBsZXM6CiAgLSBzaGlmdCBsYXN0IGFyZ3VtZW50Cgog IEtleSBCaW5kaW5ncwogIFRoaXMgY29tbWFuZCBpcyBub3QgaW4gYW55IGtleW1hcHMuCgogIFJl ZmVyZW5jZXMKICBwZi1iYXNoLW9uZS1saW5lci1nZW5lcmF0b3ItZnJvbS1uYXR1cmFsLWxhbmd1 YWdlIGlzIHVudXNlZCBpbiBwZW4tZXhhbXBsZS1jb25maWcuZWwuCiMrRU5EX1NSQwoKQmVsb3cg aXMgdGhlIGdlbmVyYXRlZCBpbnRlcmFjdGl2ZSBmdW5jdGlvbiBpbiBlbWFjcyBsaXNwLgoKIytC RUdJTl9TUkMgZW1hY3MtbGlzcCAtbiA6YXN5bmMgOnJlc3VsdHMgdmVyYmF0aW0gY29kZQogIChs YW1iZGEKICAgICgmb3B0aW9uYWwgdGFzay1kZXNjcmlwdGlvbiAmcmVzdCAtLWNsLXJlc3QtLSkK ICAgICJiYXNoIG9uZSBsaW5lciBnZW5lcmF0b3IgZnJvbSBuYXR1cmFsIGxhbmd1YWdlXG5HZXQg YSBiYXNoIG9uZSBsaW5lciBmcm9tIG5hdHVyYWwgbGFuZ3VhZ2VcblxucGF0aDpcbi0gL2hvbWUv c2hhbmUvc291cmNlL2dpdC9zcGFjZW1hY3MvcHJvbXB0cy9wcm9tcHRzL2Jhc2gtb25lLWxpbmVy LnByb21wdFxuXG5leGFtcGxlczpcbi0gc2hpZnQgbGFzdCBhcmd1bWVudFxuXG4oZm4gJm9wdGlv bmFsIFRBU0stREVTQ1JJUFRJT04gJmtleSBOTy1TRUxFQ1QtUkVTVUxUKSIKICAgIChpbnRlcmFj dGl2ZQogICAgIChsaXN0CiAgICAgIChpZiBtYXJrLWFjdGl2ZQogICAgICAgICAgKHBlbi1zZWxl Y3RlZC10ZXh0KQogICAgICAgIChpZiBuaWwKICAgICAgICAgICAgKGV0diAic2hpZnQgbGFzdCBh cmd1bWVudCIpCiAgICAgICAgICAocmVhZC1zdHJpbmctaGlzdCAidGFzay1kZXNjcmlwdGlvbjog IiAic2hpZnQgbGFzdCBhcmd1bWVudCIpKSkpKQogICAgKGxldCoKICAgICAgICAoKG5vLXNlbGVj dC1yZXN1bHQKICAgICAgICAgIChjYXIKICAgICAgICAgICAoY2RyCiAgICAgICAgICAgIChwbGlz dC1tZW1iZXIgLS1jbC1yZXN0LS0gJzpuby1zZWxlY3QtcmVzdWx0KSkpKSkKICAgICAgKHByb2du CiAgICAgICAgKGxldAogICAgICAgICAgICAoKC0tY2wta2V5cy0tIC0tY2wtcmVzdC0tKSkKICAg ICAgICAgICh3aGlsZSAtLWNsLWtleXMtLQogICAgICAgICAgICAoY29uZAogICAgICAgICAgICAg KChtZW1xCiAgICAgICAgICAgICAgIChjYXIgLS1jbC1rZXlzLS0pCiAgICAgICAgICAgICAgICco Om5vLXNlbGVjdC1yZXN1bHQgOmFsbG93LW90aGVyLWtleXMpKQogICAgICAgICAgICAgIChzZXRx IC0tY2wta2V5cy0tCiAgICAgICAgICAgICAgICAgICAgKGNkcgogICAgICAgICAgICAgICAgICAg ICAoY2RyIC0tY2wta2V5cy0tKSkpKQogICAgICAgICAgICAgKChjYXIKICAgICAgICAgICAgICAg KGNkcgogICAgICAgICAgICAgICAgKG1lbXEgJzphbGxvdy1vdGhlci1rZXlzIC0tY2wtcmVzdC0t KSkpCiAgICAgICAgICAgICAgKHNldHEgLS1jbC1rZXlzLS0gbmlsKSkKICAgICAgICAgICAgICh0 CiAgICAgICAgICAgICAgKGVycm9yICJLZXl3b3JkIGFyZ3VtZW50ICVzIG5vdCBvbmUgb2YgKDpu by1zZWxlY3QtcmVzdWx0KSIKICAgICAgICAgICAgICAgICAgICAgKGNhciAtLWNsLWtleXMtLSkp KSkpKQogICAgICAgIChjbC1ibG9jayBwZi1iYXNoLW9uZS1saW5lci1nZW5lcmF0b3ItZnJvbS1u YXR1cmFsLWxhbmd1YWdlCiAgICAgICAgICAobGV0KgogICAgICAgICAgICAgICgoZmluYWwtcHJv bXB0ICJUaGUgZm9sbG93aW5nIGlzIGEgbGlzdCBvZiBvbmUtbGluZXJzIGZvciB0aGUgbGludXgg Y29tbWFuZC1saW5lOlxuXG4jIGdldCBuZXdlc3QgZmlsZSBpbiBkaXJlY3RvcnkgYmFzaFxuJCBs cyAtdCAqIHwgaGVhZCAtMVxuIyMjXG4jIEZpbmQgd2l0aCBpbnZlcnQgbWF0Y2ggLSBlLmcuIGZp bmQgZXZlcnkgZmlsZSB0aGF0IGlzIG5vdCBtcDNcbiQgZmluZCAuIC1uYW1lICcqJyAtdHlwZSBm IC1ub3QgLXBhdGggJyoubXAzJ1xuIyMjXG4jIFJlY3Vyc2l2ZWx5IHJlbW92ZSBhbGwgXCJub2Rl X21vZHVsZXNcIiBmb2xkZXJzXG4kIGZpbmQgLiAtbmFtZSBcIm5vZGVfbW9kdWxlc1wiIC1leGVj IHJtIC1yZiAne30nICtcbiMjI1xuIyA8MT5cbiRcbiIpCiAgICAgICAgICAgICAgIChmaW5hbC1t YXgtdG9rZW5zCiAgICAgICAgICAgICAgICAoc3RyCiAgICAgICAgICAgICAgICAgKGlmCiAgICAg ICAgICAgICAgICAgICAgICh2YXJpYWJsZS1wICdtYXgtdG9rZW5zKQogICAgICAgICAgICAgICAg ICAgICAoZXZhbCAnbWF4LXRva2VucykKICAgICAgICAgICAgICAgICAgIDYwKSkpCiAgICAgICAg ICAgICAgIChmaW5hbC1zdG9wLXNlcXVlbmNlcwogICAgICAgICAgICAgICAgKGlmCiAgICAgICAg ICAgICAgICAgICAgKHZhcmlhYmxlLXAgJ3N0b3Atc2VxdWVuY2VzKQogICAgICAgICAgICAgICAg ICAgIChldmFsICdzdG9wLXNlcXVlbmNlcykKICAgICAgICAgICAgICAgICAgJygiIyMjIikpKQog ICAgICAgICAgICAgICAodmFscwogICAgICAgICAgICAgICAgKG1hcGNhciAnc3RyCiAgICAgICAg ICAgICAgICAgICAgICAgIChpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlcmFjdGl2ZS1wKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2wtbG9v cCBmb3Igc3ltIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcodGFz ay1kZXNjcmlwdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y IGlhcmcgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygoaWYgbWFy ay1hY3RpdmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBl bi1zZWxlY3RlZC10ZXh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGlmIG5pbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChldHYgInNoaWZ0IGxhc3QgYXJndW1lbnQiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAocmVhZC1zdHJpbmctaGlzdCAidGFzay1kZXNjcmlwdGlvbjogIiAi c2hpZnQgbGFzdCBhcmd1bWVudCIpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbGxlY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxl dCoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoaW5pdHZhbAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZhbCBzeW0pKSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFuZAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCBpbml0dmFsKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWFyZykKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGV2YWwgaWFyZykKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGluaXR2YWwpKSkpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgKGNsLWxvb3AgZm9yIHYgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn KHRhc2stZGVzY3JpcHRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW50 aWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgdiAnJmtleSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGV2YWwgdikpKSkpCiAgICAgICAgICAgICAgICh2YWxzCiAgICAgICAg ICAgICAgICAoY2wtbG9vcCBmb3IgdHAgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICgtemlw LWZpbGwgbmlsIHZhbHMgJ25pbCkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QKICAg ICAgICAgICAgICAgICAgICAgICAgIChsZXQqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KCh2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyIHRwKSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHBwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2Ry IHRwKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBwcAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHBlbi1zbiBwcCB2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg IHYpKSkpCiAgICAgICAgICAgICAgIChpIDEpCiAgICAgICAgICAgICAgIChmaW5hbC1wcm9tcHQK ICAgICAgICAgICAgICAgIChwZW4tZXhwYW5kLXRlbXBsYXRlIGZpbmFsLXByb21wdCB2YWxzKSkK ICAgICAgICAgICAgICAgKHByb21wdC1lbmQtcG9zCiAgICAgICAgICAgICAgICAob3IKICAgICAg ICAgICAgICAgICAoYnl0ZS1zdHJpbmctc2VhcmNoICI8OnBwPiIgIlRoZSBmb2xsb3dpbmcgaXMg YSBsaXN0IG9mIG9uZS1saW5lcnMgZm9yIHRoZSBsaW51eCBjb21tYW5kLWxpbmU6XG5cbiMgZ2V0 IG5ld2VzdCBmaWxlIGluIGRpcmVjdG9yeSBiYXNoXG4kIGxzIC10ICogfCBoZWFkIC0xXG4jIyNc biMgRmluZCB3aXRoIGludmVydCBtYXRjaCAtIGUuZy4gZmluZCBldmVyeSBmaWxlIHRoYXQgaXMg bm90IG1wM1xuJCBmaW5kIC4gLW5hbWUgJyonIC10eXBlIGYgLW5vdCAtcGF0aCAnKi5tcDMnXG4j IyNcbiMgUmVjdXJzaXZlbHkgcmVtb3ZlIGFsbCBcIm5vZGVfbW9kdWxlc1wiIGZvbGRlcnNcbiQg ZmluZCAuIC1uYW1lIFwibm9kZV9tb2R1bGVzXCIgLWV4ZWMgcm0gLXJmICd7fScgK1xuIyMjXG4j IDwxPlxuJFxuIikKICAgICAgICAgICAgICAgICAoc3RyaW5nLWJ5dGVzIGZpbmFsLXByb21wdCkp KQogICAgICAgICAgICAgICAoZmluYWwtcHJvbXB0CiAgICAgICAgICAgICAgICAoc3RyaW5nLXJl cGxhY2UgIjw6cHA+IiAiIiBmaW5hbC1wcm9tcHQpKQogICAgICAgICAgICAgICAoZmluYWwtcHJv bXB0CiAgICAgICAgICAgICAgICAoaWYgbmlsCiAgICAgICAgICAgICAgICAgICAgKHNvcgogICAg ICAgICAgICAgICAgICAgICAocGVuLXNuYyBuaWwgZmluYWwtcHJvbXB0KQogICAgICAgICAgICAg ICAgICAgICAoY29uY2F0ICJwcm9tcHQtZmlsdGVyICIgbmlsICIgZmFpbGVkLiIpKQogICAgICAg ICAgICAgICAgICBmaW5hbC1wcm9tcHQpKQogICAgICAgICAgICAgICAocGVuLXNoLXVwZGF0ZQog ICAgICAgICAgICAgICAgKG9yIHBlbi1zaC11cGRhdGUKICAgICAgICAgICAgICAgICAgICAoPj0K ICAgICAgICAgICAgICAgICAgICAgKHByZWZpeC1udW1lcmljLXZhbHVlIGN1cnJlbnQtZ2xvYmFs LXByZWZpeC1hcmcpCiAgICAgICAgICAgICAgICAgICAgIDQpKSkKICAgICAgICAgICAgICAgKHNo Y21kCiAgICAgICAgICAgICAgICAocGVuLWxvZwogICAgICAgICAgICAgICAgIChjb25jYXQKICAg ICAgICAgICAgICAgICAgKHNoLWNvbnN0cnVjdC1lbnZzCiAgICAgICAgICAgICAgICAgICBgKCgi UEVOX1BST01QVCIgLChwZW4tZW5jb2RlLXN0cmluZyBmaW5hbC1wcm9tcHQpKQogICAgICAgICAg ICAgICAgICAgICAoIlBFTl9MTV9DT01NQU5EIiAsIm9wZW5haS1jb21wbGV0ZS5zaCIpCiAgICAg ICAgICAgICAgICAgICAgICgiUEVOX0VOR0lORSIgLCJkYXZpbmNpIikKICAgICAgICAgICAgICAg ICAgICAgKCJQRU5fTUFYX1RPS0VOUyIgLChwZW4tZXhwYW5kLXRlbXBsYXRlIGZpbmFsLW1heC10 b2tlbnMgdmFscykpCiAgICAgICAgICAgICAgICAgICAgICgiUEVOX1RFTVBFUkFUVVJFIiAsKHBl bi1leHBhbmQtdGVtcGxhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHN0ciAwLjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh bHMpKQogICAgICAgICAgICAgICAgICAgICAoIlBFTl9TVE9QX1NFUVVFTkNFIiAsKHBlbi1lbmNv ZGUtc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0 cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YXJpYWJsZS1wICdz dG9wLXNlcXVlbmNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGV2YWwgJ3N0b3Atc2VxdWVuY2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIiMjIyIpKSkpCiAgICAgICAgICAgICAgICAgICAgICgiUEVOX1RP UF9QIiAsMSkKICAgICAgICAgICAgICAgICAgICAgKCJQRU5fQ0FDSEUiICxuaWwpCiAgICAgICAg ICAgICAgICAgICAgICgiUEVOX05fQ09NUExFVElPTlMiICw1KQogICAgICAgICAgICAgICAgICAg ICAoIlBFTl9FTkRfUE9TIiAscHJvbXB0LWVuZC1wb3MpKSkKICAgICAgICAgICAgICAgICAgIiAi ICJ1cGQgbG0tY29tcGxldGUiKSkpCiAgICAgICAgICAgICAgIChyZXN1bHRzZGlycwogICAgICAg ICAgICAgICAgKGNsLWxvb3AgZm9yIGkgaW4KICAgICAgICAgICAgICAgICAgICAgICAgIChudW1i ZXItc2VxdWVuY2UgMSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdAogICAgICAg ICAgICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZXNz YWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICJwZi1iYXNoLW9uZS1saW5l ci1nZW5lcmF0b3ItZnJvbS1uYXR1cmFsLWxhbmd1YWdlIiAiIHF1ZXJ5ICIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGludC10by1zdHJpbmcgaSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIi4uLiIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAo bGV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJldAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAocGVuLXByb21wdC1zbmMgc2hjbWQgaSkpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChtZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj b25jYXQgInBmLWJhc2gtb25lLWxpbmVyLWdlbmVyYXRvci1mcm9tLW5hdHVyYWwtbGFuZ3VhZ2Ui ICIgZG9uZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludC10by1z dHJpbmcgaSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCkpKSkKICAgICAgICAg ICAgICAgKHJlc3VsdHMKICAgICAgICAgICAgICAgICgtdW5pcQogICAgICAgICAgICAgICAgIChm bGF0dGVuLW9uY2UKICAgICAgICAgICAgICAgICAgKGNsLWxvb3AgZm9yIHJkIGluIHJlc3VsdHNk aXJzIGNvbGxlY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoc29yIHJkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KC0+PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnbG9iCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgcmQgIi8qIikpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChtYXBjYXIgJ2UvY2F0KQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobWFwY2FyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFt YmRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChhbmQgbmlsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChzb3IgbmlsKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChwZW4tc24gbmlsIHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcikp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobGFtYmRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAodmFyaWFibGUtcCAncHJldHRpZnkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldHRpZnkgbmlsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvciBuaWwpKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHBlbi1zbiBuaWwgcikKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICht YXBjYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5v dCBuaWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocy10cmltLWxl ZnQgcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByKSkpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChtYXBjYXIKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChsYW1iZGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHIp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCBuaWwpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAocy10cmltLXJpZ2h0IHIpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFw Y2FyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoY2wtbG9vcCBmb3Igc3RzcSBpbiBmaW5hbC1zdG9wLXNlcXVlbmNlcyBkbwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNocG9zCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctc2VhcmNo IHN0c3EgcikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChpZiBtYXRjaHBvcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2V0cSByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzLXRydW5jYXRlIG1hdGNocG9zIHIgIiIpKSkpKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGxpc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lc3NhZ2UgIlRyeSBVUERB VEU9eSBvciBkZWJ1Z2dpbmciKSkpKSkpKQogICAgICAgICAgICAgICAocmVzdWx0CiAgICAgICAg ICAgICAgICAoaWYgbm8tc2VsZWN0LXJlc3VsdAogICAgICAgICAgICAgICAgICAgIChsZW5ndGgg cmVzdWx0cykKICAgICAgICAgICAgICAgICAgKGNsLWZ6IHJlc3VsdHMgOnByb21wdAogICAgICAg ICAgICAgICAgICAgICAgICAgKGNvbmNhdCAicGYtYmFzaC1vbmUtbGluZXItZ2VuZXJhdG9yLWZy b20tbmF0dXJhbC1sYW5ndWFnZSIgIjogIikKICAgICAgICAgICAgICAgICAgICAgICAgIDpzZWxl Y3Qtb25seS1tYXRjaCB0KSkpKQogICAgICAgICAgICAoaWYgbm8tc2VsZWN0LXJlc3VsdCByZXN1 bHRzCiAgICAgICAgICAgICAgKGlmCiAgICAgICAgICAgICAgICAgIChpbnRlcmFjdGl2ZS1wKQog ICAgICAgICAgICAgICAgICAoY29uZAogICAgICAgICAgICAgICAgICAgKCg+PQogICAgICAgICAg ICAgICAgICAgICAocHJlZml4LW51bWVyaWMtdmFsdWUgY3VycmVudC1wcmVmaXgtYXJnKQogICAg ICAgICAgICAgICAgICAgICA0KQogICAgICAgICAgICAgICAgICAgIChldHYgcmVzdWx0KSkKICAg ICAgICAgICAgICAgICAgICgoYW5kIG5pbCBtYXJrLWFjdGl2ZSkKICAgICAgICAgICAgICAgICAg ICAocmVwbGFjZS1yZWdpb24gcmVzdWx0KSkKICAgICAgICAgICAgICAgICAgICgob3IgbmlsIG5p bCkKICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0IHJlc3VsdCkpCiAgICAgICAgICAgICAgICAg ICAodAogICAgICAgICAgICAgICAgICAgIChldHYgcmVzdWx0KSkpCiAgICAgICAgICAgICAgICBy ZXN1bHQpKSkpKSkpCiMrRU5EX1NSQwoKVGhlIGFib3ZlIGZ1bmN0aW9uIGNyZWF0ZXMgYSBOTCBz aGVsbC4gVGhpcwplbmFibGVzIHlvdSB0byBnZW5lcmF0ZSBzaGVsbCBjb21tYW5kcyBiYXNlZApv biBOTCBhbmQgaXQgaXMgcGFyYW1ldGVyaXplZCB0byBlbmFibGUgeW91IHRvCnNwZWNpZnkgdGhl IG9wZXJhdGluZyBzeXN0ZW0gdGhhdCB0aGUgY29tbWFuZHMKZ2VuZXJhdGVkIHNob3VsZCBydW4g b24uCgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIC1uIDphc3luYyA6cmVzdWx0cyByYXcKICAobGlz dDJzdHIgKHBmLWJhc2gtb25lLWxpbmVyLWdlbmVyYXRvci1vbi1vcy1mcm9tLW5hdHVyYWwtbGFu Z3VhZ2UgIkFyY2ggTGludXgiICJEaXNhYmxlIGZpcmV3YWxsIiA6bm8tc2VsZWN0LXJlc3VsdCB0 KSkKIytFTkRfU1JDCgpIZXJlIGlzIGEgbGlzdCBvZiBzdWdnZXN0aW9ucyBnZW5lcmF0ZWQgZnJv bQp0aGUgYWJvdmUgcHJvbXB0IGZ1bmN0aW9uLgoKIytCRUdJTl9TUkMgdGV4dCAtbiA6YXN5bmMg OnJlc3VsdHMgdmVyYmF0aW0gY29kZQogIGlwdGFibGVzIC1GCiAgaXB0YWJsZXMgLVAgT1VUUFVU IERST1AKICBzZWQgLWkgJ3MvXlsgXHRdKmZpcmV3YWxsPS4qJC9maXJld2FsbD0wLycgL2V0Yy9z eXNjb25maWcvaXB0YWJsZXMKICBzeXN0ZW1jdGwgc3RvcCBpcHRhYmxlcy5zZXJ2aWNlCiAgc3Vk byBzeXN0ZW1jdGwgc3RvcCBpcHRhYmxlcwogIHN1ZG8gdWZ3IGRpc2FibGUKIytFTkRfU1JDCgpZ b3UgbWF5IGFsc28gcnVuIGl0IGFzIGEgUkVQTC4KCmh0dHBzOi8vc2VtaW9zaXMuZ2l0aHViLmlv L3Bvc3RzL2ltYWdpbmFyeS1wcm9ncmFtbWluZy13aXRoLWdwdC0zLwoKIytCRUdJTl9TUkMgeWFt bCAtbiA6YXN5bmMgOnJlc3VsdHMgdmVyYmF0aW0gY29kZQogIHRpdGxlOiBDb2RlIGludGVycHJl dGVyIGtpY2tzdGFydGVyCiAgZnV0dXJlLXRpdGxlczoKICAtIENvZGUgaW50ZXJwcmV0ZXIga2lj a3N0YXJ0ZXIKICBkb2M6IEdpdmVuIGEgbGluZSBvZiBjb2RlLCBpbmZlciB0aGUgcmVzdWx0IG9m IHJ1bm5pbmcgdGhhdCBjb2RlCiAgcHJvbXB0LXZlcnNpb246IDQKICBwcm9tcHQ6IHwKICAgIENv ZGUgZXhhbXBsZXM6CgogICAgTGFuZ3VhZ2U6IFB5dGhvbgogICAgSW5wdXQ6IHByaW50KHJhbmRv bS5yYW5kaW50KDAsOSkpCiAgICBPdXRwdXQ6IDUKICAgICMjIwogICAgTGFuZ3VhZ2U6IEJhc2gK ICAgIElucHV0OiBTdHI9IkxlYXJuIExpbnV4IGZyb20gTGludXhIaW50Ijsgc3ViU3RyPSR7U3Ry OjY6NX0KICAgIE91dHB1dDogTGludXgKICAgICMjIwogIHJlcGVhdGVyOiB8CiAgICBMYW5ndWFn ZTogPDE+CiAgICBJbnB1dDoge30KICAgIE91dHB1dDoKICBpc3N1ZXM6IAogIGVuZ2luZTogZGF2 aW5jaQogIHRlbXBlcmF0dXJlOiAwLjgKICBtYXgtdG9rZW5zOiA2MAogIHRvcC1wOiAxCiAgc3Rv cC1zZXF1ZW5jZXM6CiAgLSAiIyMiCiAgLSAiXG4iCiAgdmFyczoKICAtIGxhbmd1YWdlCiAgLSBj b2RlCiAgZXhhbXBsZXM6CiAgLSBoYXNrZWxsCiAgLSAnIkhlbGxvIiArKyAiICIgKysgIldvcmxk IicKICBwcmVmZXItZXh0ZXJuYWw6IHRydWUKICBleHRlcm5hbDogaW9sCiAgc2ltaWxhcml0eS10 ZXN0OiBzdHJpbmctZXF1YWwKICBxdWFsaXR5LXNjcmlwdDogbGV2ZW5zaHRlaW4gLXMKICBjb252 ZXJzYXRpb24tbW9kZTogdHJ1ZQogIG4tdGVzdC1ydW5zOiA1CiMrRU5EX1NSQwoKIytCRUdJTl9T UkMgZW1hY3MtbGlzcCAtbiA6YXN5bmMgOnJlc3VsdHMgcmF3CiAgKGNhciAocGYtY29kZS1pbnRl cnByZXRlci1raWNrc3RhcnRlciAiSGFza2VsbCIgIlwiSGVsbG9cIiArKyBcIiBcIiArKyBcIldv cmxkXCIiIDpuby1zZWxlY3QtcmVzdWx0IHQpKQojK0VORF9TUkMKCiMrQkVHSU5fU1JDIHRleHQg LW4gOmFzeW5jIDpyZXN1bHRzIHZlcmJhdGltIGNvZGUKICBIZWxsbyBXb3JsZAojK0VORF9TUkMK CioqKiogV2l0aCB0d28gPVBlbi5lbD0gc3lzdGVtcwoqKioqKiBVc2luZyBhIGNvbW1vbiBsYW5n dWFnZSBtb2RlbApUcmFuc2xhdGluZyBjb21tdW5pY2F0aW9ucyB3aXRoIGEgd29ybGQKbGFuZ3Vh Z2UgdHJhbnNsYXRpb24gcHJvbXB0IGZ1bmN0aW9uLgoKIytCRUdJTl9TUkMgeWFtbCAtbiA6YXN5 bmMgOnJlc3VsdHMgdmVyYmF0aW0gY29kZQogIHRpdGxlOiBUcmFuc2xhdGUgZnJvbSB3b3JsZCBs YW5ndWFnZSBYIHRvIFkKICBwcm9tcHQtdmVyc2lvbjogMwogIGRvYzogVGhpcyBwcm9tcHQgdHJh bnNsYXRlcyBFbmdsaXNoIHRleHQgdG8gYW55IHdvcmxkIGxhbmdhdWdlCiAgcHJvbXB0OiB8CiAg ICAjIyMKICAgICMgRW5nbGlzaDogSGVsbG8KICAgICMgUnVzc2lhbjogWmRyYXZzdHZ1eXRlCiAg ICAjIEl0YWxpYW46IFNhbHZlCiAgICAjIEphcGFuZXNlOiBLb25uaWNoaXdhCiAgICAjIEdlcm1h bjogR3V0ZW4gVGFnCiAgICAjIEZyZW5jaDogQm9uam91cgogICAgIyBTcGFuaXNoOiBIb2xhCiAg ICAjIyMKICAgICMgRW5nbGlzaDogSGFwcHkgYmlydGhkYXkhCiAgICAjIEZyZW5jaDogQm9uIGFu bml2ZXJzYWlyZSAhCiAgICAjIEdlcm1hbjogQWxsZXMgR3V0ZSB6dW0gR2VidXJ0c3RhZyEKICAg ICMgSXRhbGlhbjogQnVvbiBjb21wbGVhbm5vIQogICAgIyBJbmRvbmVzaWFuOiBTZWxhbWF0IHVs YW5nIHRhaHVuIQogICAgIyMjCiAgICAjIDwxPjogPDM+CiAgICAjIDwyPjoKICBlbmdpbmU6IGRh dmluY2kKICB0ZW1wZXJhdHVyZTogMC41CiAgbWF4LXRva2VuczogMjAwCiAgdG9wLXA6IDEKICBz dG9wLXNlcXVlbmNlczoKICAtICIjIgogIHZhcnM6CiAgLSBmcm9tLWxhbmd1YWdlCiAgLSB0by1s YW5ndWFnZQogIC0gcGhyYXNlCiAgcHJlcHJvY2Vzc29yczoKICAtIGNhdAogIC0gY2F0CiAgLSBw ZW4tcyBvbmVsaW5laWZ5CiAgcG9zdHByb2Nlc3NvcjogcGVuLXMgdW5vbmVsaW5laWZ5CiAgZXhh bXBsZXM6CiAgLSBFbmdsaXNoCiAgLSBGcmVuY2gKICAtIEdvb2RuaWdodAogIHZhci1kZWZhdWx0 czoKICAtICIob3IgKHNvciAobnRoIDAgKHBmLWdldC1sYW5ndWFnZSAocGVuLXNlbGVjdGVkLXRl eHQpIDpuby1zZWxlY3QtcmVzdWx0IHQpKSkgKHJlYWQtc3RyaW5nLWhpc3QgXCJQZW4gRnJvbSBs YW5ndWFnZTogXCIpKSIKICAtICIocmVhZC1zdHJpbmctaGlzdCBcIlBlbiBUbyBsYW5ndWFnZTog XCIpIgogIC0gIihwZW4tc2VsZWN0ZWQtdGV4dCkiCiAgZmlsdGVyOiBvbgojK0VORF9TUkMKCkEg ZGVtb25zdHJhdGlvbiBvZiB0d28gcGVvcGxlIHdobyB1bmRlcnN0YW5kCmRpZmZlcmVudCB3b3Js ZCBsYW5ndWFnZXMgdXNpbmcgYSBjb21tb24gTE0gdG8KdW5kZXJzdGFuZCBvbmUgYW5vdGhlci4K CiMrTkFNRTogZnJvbWVuZ2xpc2gKIytCRUdJTl9TUkMgdGV4dCAtbiA6YXN5bmMgOnJlc3VsdHMg dmVyYmF0aW0gY29kZQogIEhhcHB5IGJpcnRoZGF5CiAgVG8geW91CiMrRU5EX1NSQwoKIytCRUdJ Tl9TUkMgZW1hY3MtbGlzcCAtbiA6YXN5bmMgOnJlc3VsdHMgY29kZSByYXcKICA7OyBBbGljZSB0 cmFuc2xhdGVzIGludG8gZnJlbmNoIGZvciBCb2IKICAoY2FyIChwZi10cmFuc2xhdGUtZnJvbS13 b3JsZC1sYW5ndWFnZS14LXRvLXkgIkVuZ2xpc2giICJGcmVuY2giICJIYXBweSBiaXJ0aGRheVxu VG8geW91IiA6bm8tc2VsZWN0LXJlc3VsdCB0KSkKIytFTkRfU1JDCgojK05BTUU6IGZyb21mcmVu Y2gKIytCRUdJTl9TUkMgdGV4dCAtbiA6YXN5bmMgOnJlc3VsdHMgdmVyYmF0aW0gY29kZQogIEJv biBhbm5pdmVyc2FpcmUKICBBIHZvdXMKIytFTkRfU1JDCgojK0JFR0lOX1NSQyB0ZXh0IC1uIDph c3luYyA6cmVzdWx0cyB2ZXJiYXRpbSBjb2RlCiAgTWVyY2kKICBiZWF1Y291cAojK0VORF9TUkMK CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgLW4gOmFzeW5jIDpyZXN1bHRzIGNvZGUgcmF3CiAgOzsg Qm9iIHRyYW5zbGF0ZXMgYmFjayBpbnRvIEVuZ2xpc2ggZm9yIEFsaWNlCiAgKGNhciAocGYtdHJh bnNsYXRlLWZyb20td29ybGQtbGFuZ3VhZ2UteC10by15ICJGcmVuY2giICJFbmdsaXNoIiAiTWVy Y2lcbmJlYXVjb3VwIiA6bm8tc2VsZWN0LXJlc3VsdCB0KSkKIytFTkRfU1JDCgojK0JFR0lOX1NS QyB0ZXh0IC1uIDphc3luYyA6cmVzdWx0cyB2ZXJiYXRpbSBjb2RlCiAgVGhhbmsgeW91IQojK0VO RF9TUkMKCmh0dHBzOi8vYXNjaWluZW1hLm9yZy9hLzdZblNucnJMZ2JpRmx5TXlZeEJnYVpZVWIK CiMrQkVHSU5fRVhQT1JUIGh0bWwKPCEtLSBQbGF5IG9uIGFzY2lpbmVtYS5jb20gLS0+CjwhLS0g PGEgdGl0bGU9ImFzY2lpbmVtYSByZWNvcmRpbmciIGhyZWY9Imh0dHBzOi8vYXNjaWluZW1hLm9y Zy9hLzdZblNucnJMZ2JpRmx5TXlZeEJnYVpZVWIiIHRhcmdldD0iX2JsYW5rIj48aW1nIGFsdD0i YXNjaWluZW1hIHJlY29yZGluZyIgc3JjPSJodHRwczovL2FzY2lpbmVtYS5vcmcvYS83WW5TbnJy TGdiaUZseU15WXhCZ2FaWVViLnN2ZyIgLz48L2E+IC0tPgo8IS0tIFBsYXkgb24gdGhlIGJsb2cg LS0+CjxzY3JpcHQgc3JjPSJodHRwczovL2FzY2lpbmVtYS5vcmcvYS83WW5TbnJyTGdiaUZseU15 WXhCZ2FaWVViLmpzIiBpZD0iYXNjaWljYXN0LTdZblNucnJMZ2JpRmx5TXlZeEJnYVpZVWIiIGFz eW5jPjwvc2NyaXB0PgojK0VORF9FWFBPUlQKCioqKioqIFdpdGggZGlmZmVyZW50IGxhbmd1YWdl IG1vZGVscwotIEdQVC1uZW8gYW5kIEdQVC0zPwotIGN1cmllIHZzIGRhdmluY2k/CgotIEdlbmVy YXRlIGEgc3RvcnkgYWJvdXQgYSBtZWV0aW5nIHdpdGggb25lIHByb21wdAotIFN1bW1hcml6ZSB3 aXRoIGJ1bGxldCBwb2ludHMKICAtIG1lZXRpbmctYnVsbGV0cy10by1zdW1tYXJ5LnByb21wdAoK KioqIEFuIGltcHVyZSBpbWFnaW5hcnkgZGF0YSBzdHJ1Y3R1cmUKKioqKiBXaXRoIG9uZSA9UGVu LmVsPSBzeXN0ZW0KLSBOYXR1cmFsIGxhbmd1YWdlIGRhdGFiYXNlIGVudHJ5CioqKiogV2l0aCB0 d28gPVBlbi5lbD0gc3lzdGVtcwotIERhdGFiYXNlIHByb21wdAoqKioqIFdpdGggdGhyZWUgPVBl bi5lbD0gc3lzdGVtcwotIERhdGFiYXNlIHByb21wdAoKKioqIFRPRE8gRmluZCBhIHVzZWZ1bCBp bXB1cmUgaW1hZ2luYXJ5IGFsZ29yaXRobQoqKioqIFdpdGggb25lID1QZW4uZWw9IHN5c3RlbQot IFRyYW5zbGF0ZSBmcm9tIFggdG8gWQotIEJhY2t0cmFuc2xhdGUgZnJvbSBZIHRvIFgKCkZpbmQg YSBiZXR0ZXIgcHJvbXB0PwoqKioqIFdpdGggdHdvID1QZW4uZWw9IHN5c3RlbXMKKioqKiBXaXRo IHRocmVlID1QZW4uZWw9IHN5c3RlbXMKCioqIFB1cmUgaW1hZ2luYXJ5IGNvZGUgaXMgdXNlZnVs ClB1cmUgaW1hZ2luYXJ5IHByb2dyYW1taW5nIGlzIGEgdHlwZSBvZiBwcm9ncmFtbWluZyB3aGVy ZSB0aGUgb3JpZ2luYWwgbGFuZ3VhZ2UKbW9kZWxzIG1heSBub3QgZXZlbiBiZSBrbm93bi4KCkkg ZGVtb25zdGF0ZSB0aGF0IGNvbGxhYm9yYXRpdmUgcHVyZSBpbWFnaW5hcnkgcHJvZ3JhbW1pbmcg aXMgdXNlZnVsLgoKKioqIFRyYW5zbGF0aW9uIGJldHdlZW4gdHdvID1QZW4uZWw9IHN5c3RlbXMg d2l0aCBkaWZmZXJlbnQgbGFuZ3VhZ2UgbW9kZWxzCkEgY29tbW9uIGxpYnJhcnkgb2YgcHVyZSBp bWFnaW5hcnkgZnVuY3Rpb25zLgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAtbiA6YXN5bmMgOnJl c3VsdHMgdmVyYmF0aW0gY29kZQogICgidHJhbnNsYXRlIiAicHJvc2UiICJmcm9tIiAidG8iKQoj K0VORF9TUkMKClB1cmUgaW1hZ2luYXJ5IGZ1bmN0aW9ucyBjYW4gYmUgY29tcG9zZWQuCgojK0JF R0lOX1NSQyBlbWFjcy1saXNwIC1uIDphc3luYyA6cmVzdWx0cyB2ZXJiYXRpbSBjb2RlCiAgKCJ0 cmFuc2xhdGUiICgibWFrZSBhbmFsb2d5IGFib3V0IiAidG9waWMiKSAiZnJvbSIgInRvIikKIytF TkRfU1JDCgoqKiBJbWFnaW5hcnkgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIGFyZSByZXF1aXJlZCB0 byB3b3JrIHdpdGggbGFuZ3VhZ2UgbW9kZWxzCioqKiBFeGFtcGxhcnkKLSBQYXJ0IG9mIGl0IGlz IHRhc2stb3JpZW50ZWQsIHdoaWNoIGRlZmVycyBpbWFnaW5hdGlvbiB0byBhIGxhbmd1YWdlIG1v ZGVsIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCBtZWFucy4KLSBQYXJ0IG9mIGl0IGlzIGV4YW1wbGUt b3JpZW50ZWQsIHdoaWNoIGlzIHB1cmUtaW1hZ2luYXJ5LgoKKioqIEV4YW1wbGUtb3JpZW50ZWQK IytCRUdJTl9TUkMgZW1hY3MtbGlzcCAtbiA6YXN5bmMgOnJlc3VsdHMgdmVyYmF0aW0gY29kZQog IDs7IENvbnZlcnQgbGluZXMgdG8gcmVnZXguCiAgKHhsLWRlZnByb21wdCAoImxpbmVzIG9mIGNv ZGUiIHJlZ2V4KQogICAgICAgICAgICAgICAgIDs7IDp0YXNrICJDb252ZXJ0IGxpbmVzIHRvIHJl Z2V4IgogICAgICAgICAgICAgICAgIDs7IEdlbmVyYXRlIGlucHV0IHdpdGggdGhpcwogICAgICAg ICAgICAgICAgIDs7IDpnZW4gImV4YW1wbGFyeS1lZGl0LWdlbmVyYXRvciBzaGFuZSIKICAgICAg ICAgICAgICAgICA6Z2VuIGV4YW1wbGFyeS1lZGl0LWdlbmVyYXRvcgogICAgICAgICAgICAgICAg IDpmaWx0ZXIgImdyZXgiCiAgICAgICAgICAgICAgICAgOzsgVGhlIHRoaXJkIGFyZ3VtZW50IChp ZiBzdXBwbGllZCkgc2hvdWxkIGJlIGluY29ycmVjdCBvdXRwdXQgKGEgY291bnRlcmV4YW1wbGUp LgogICAgICAgICAgICAgICAgIDs7IElmIHRoZSAybmQgYXJndW1lbnQgaXMgbGVmdCBvdXQsIGl0 IHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IHRoZSBjb21tYW5kIHNwZWNpZmllZCBieSA6ZXh0ZXJuYWwK ICAgICAgICAgICAgICAgICA6ZXhhbXBsZXMgKCgiZXhhbXBsZSAxXG5leGFtcGxlMiIpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoImV4YW1wbGUgMlxuZXhhbXBsZTMiICJeZXhhbXBsZSBb MjNdJCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoInBpNFxucGk1IiAiXnBpWzQ1XSQi ICJwaTRcbnBpNSIpKQogICAgICAgICAgICAgICAgIDpsbS1jb21tYW5kICJvcGVuYWktY29tcGxl dGUuc2giKQojK0VORF9TUkMKCioqKiBUYXNrIG9yaWVudGVkCiMrQkVHSU5fU1JDIGVtYWNzLWxp c3AgLW4gOmFzeW5jIDpyZXN1bHRzIHZlcmJhdGltIGNvZGUKICAoInRyYW5zbGF0ZSIgKCJtYWtl IGFuYWxvZ3kgYWJvdXQiICJ0b3BpYyIpICJmcm9tIiAidG8iKQojK0VORF9TUkMKCioqIFByb2pl Y3RpbmcgdGhlIGNvZGUgYmFjayB0byB0aGUgc3RhcnRpbmcgTE0gaXMgcG9zc2libGUKLSBTZW1h bnRpYyBzZWFyY2ggb24gZXhpc3RpbmcgZG9jdW1lbnRzCi0gU2VtYW50aWMgc2VhcmNoIG9uIGV4 aXN0aW5nIGZ1bmN0aW9ucyBpbiBlbWFjcwoKKiogTGFuZ3VhZ2UgbW9kZWxzIGVuY29kZSBob2xv Z3JhcGhpYyByZXByZXNlbnRhdGlvbnMgb2Ygc29mdHdhcmUKSXQncyBpbXBvcnRhbnQgdG8gYXZv aWQgbWl4aW5nIHRyYWluaW5nIGRhdGEKb2YgdmFyeWluZyBsaWNlbnNlcyB3aGVuIHRyYWluaW5n IExNcy4gCgpPbmUgcmlzayBpcyB0aGF0IGluIHRoZSBmdXR1cmUsIGFzCmhvbG9ncmFwaGljIHJl cHJlc2VudGF0aW9ucyBvZiBzb2Z0d2FyZSBhcmUgdXNlZCBtb3JlIGluIHBsYWNlIG9mIHJ1bm5p bmcgb3JpZ2luYWwgc291cmNlIGNvZGUgKGkuZS4gYXMgTE1zIGFyZQp1c2VkIG1vcmUgdG8gc2lt dWxhdGUgc29mdHdhcmUpLCBhIHNvZnR3YXJlJ3MKaG9sb2dyYW0gaXMgbW9yZSBsaWtlbHkgdG8g YmUgdXNlZCBpbiB3YXlzIHRoYXQgdmlvbGF0ZSB0aGUKb3JpZ2luYWwgbGljZW5zZSBvciB0aGUg c3Bpcml0IG9mIHRoZSBsaWNlbnNlLgoKTE1zIGJyaW5nIHdpdGggdGhlbSB1bmRlcnN0YW5kaW5n IG9mIHRoZSB3YXkKc29mdHdhcmUgaXMgdXNlZCwgYW5kIGFsc28gYW4gdW5kZXJzdGFuZGluZyBv Zgp0aGUgaW5zcGlyYXRpb24gdGhhdCB3ZW50IGludG8gZGVzaWduaW5nIHRoYXQKc29mdHdhcmUu IFRoZSBpc3N1ZSBpcyB0aGF0IHRoaXMgaXMgYWxsCmF1dG9tYXRlZCBhbmQgcmlnaHQgbm93IG5l dyBzb2Z0d2FyZSBjb21wYW5pZXMKYXJlIHN0YWtpbmcgdGhlaXIgZnV0dXJlIG9uIExNcyBhbmQg dXNpbmcgc2FpZAptb2RlbHMgdG8gdGhlaXIgZnVsbGVzdC4KClRoZXJlZm9yZSwgdGhlIGluZXhv cmFibGUgY29uY2x1c2lvbiBpcyB0aGF0CnNvZnR3YXJlIHRoYXQgaGFzIGJlZW4gdXNlZCB0byB0 cmFpbiB0aGVzZQptb2RlbHMgd2lsbCBiZSB1c2VkIGhvbG9ncmFwaGljYWxseSwgcGVyaGFwcwpt b3JlIHRoYW4gZXZlbiBmcm9tIHRoZWlyIG9yaWdpbmFsIHNvZnR3YXJlCmFuZCB0aGVpciBob2xv Z3JhcGhpYyByZXByZXNlbnRhdGlvbiB0aGF0CmVuY29kZXMgdGhlIHZhbHVlIG9mIHRoZSBzb2Z0 d2FyZSAodGhlIHdheQppdCdzIHVzZWQgYXMgb3Bwb3NlZCB0byB3cml0dGVuKSBpcyB3aGF0J3MK bW9yZSBpbXBvcnRhbnQgYW5kIHRoYXQncyBpcyB3aGF0IGlzIGJlaW5nIGV4cGxvaXRlZC4KCklm IHRoZSBvcmlnaW5hbCBjb2RlIG9mIGFuIGV4YW1wbGUgb2YgZnJlZQpzb2Z0d2FyZSB3YXMgcGFy dCBvZiB0aGUgdHJhaW5pbmcgZGF0YSBvZiBhIE5OCmFsb25nc2lkZSBzb2Z0d2FyZSBvZiBvdGhl ciBjb25mbGljdGluZwpsaWNlbnNlcyB0aGVuIHRoYXQgZWZmZWN0aXZlbHkgcmVsaWNlbmNlcyB0 aGUKc2FtZSBzb2Z0d2FyZSB3aXRob3V0IGNvbnNlbnQsIGdvaW5nIGZvcndhcmQKaW50byB0aGUg ZnV0dXJlLgoKKioqIEdlbmVyYXRpbmcgcGFydHMgb2YgZW1hY3Mgd2l0aCBHUFQtMwpJIGFtIGFi bGUgdG8gZ2VuZXJhdGUgcGFydHMgb2YgR1BMIHByb3RlY3RlZApzb2Z0d2FyZSB1c2luZyBMTXMg YW5kIGNhbiBxdWVyeSB0aGUgTE1zIGFzIHRvCmhvdyB0aGV5IGFyZSB1c2VkLgoKVGhlcmVmb3Jl LCB0aGUgc29mdHdhcmUgZXhpc3RzIG5vdyBpbiB0aGUgbGF0ZW50IHNwYWNlIG9mIGEgbGFuZ3Vh Z2UgbW9kZWwgaW4KdGhlIGZvcm0gb2YgYSBob2xvZ3JhbSwgd2l0aGluIGFuZCB3aXRob3V0IHRo ZSBzb3VyY2UgY29kZS4gTGFuZ3VhZ2UgbW9kZWxzCmVuY29kZSBjb250cml2ZWQgYXNzb2NpYXRp b25zIG1hZGUgYmV0d2VlbiBkaWZmZXJlbnQgcGllY2VzIG9mIHNvZnR3YXJlIGluCm9yZGVyIHRv IGNyZWF0ZSBhbiBhY2N1cmF0ZSBtb2RlbCB0aGF0IGlzIHVzZWZ1bCBmb3Igc2ltdWxhdGlvbiwg Y29kZQpnZW5lcmF0aW9uLCBjb2RlIHVuZGVyc3RhbmRpbmcgYW5kIG1vZGVsbGluZyB0aGUgdXNh Z2Ugb2Ygc29mdHdhcmUuCgotIFRoZSBob2xvZ3JhcGhpYyByZXByZXNlbnRhdGlvbgoKKioqID0w LjkgLyAxPSBpcyBzdGlsbCBzdGVhbGluZwoKKiogQ291bnRlciBhcmd1bWVudHMKKioqIEl0J3Mg bm90IGltYWdpbmFyeSwgaXQncyBqdXN0Li4uIEVuZ2xpc2g/IG1vcmUgbGlrZSwgc3RvY2hhc3Rp YyBwcm9ncmFtbWluZz8KSW1hZ2luYXJ5IHByb2dyYW1taW5nIGlzIG1vcmUgb2YgYW4gYWN0aXZp dHkKYW5kIGEgc3R5bGUgb2YgcHJvZ3JhbW1pbmcgYW5kIGlzIG5vdCByZWFsbHkKY29uY2VybmVk IHdpdGggdGhlIGFtb3VudCBvZiB1bmNlcnRhaW50eS4KCllvdXIgY29kZSBtaWdodCB0YWtlIGEg dHJpcCB0aHJvdWdoIHNvbWVvbmUKZWxzZSdzIExNIGFsb25nIHRoZSB3YXkgYW5kIGJlIHByb2pl Y3RlZCBiYWNrCnRvIHlvdXIgb3duLgoKVGhhdCBtZWFucyB0aGF0IHNvbWUgb2YgdGhlIGxvZ2lj IGlzCmNvbXBsZXRlbHkgb2JzY3VyZWQgYW5kIHlvdSBoYXZlIHRvIG1ha2UKYXNzdW1wdGlvbnMu CgpZb3UgbWF5IGNvbGxhYm9yYXRlIG9uIGEgdXNlciBpbnRlcmZhY2Ugb3IKcHJvZ3JhbSB3aXRo IG90aGVycyBhbmQgc2luY2UgdGhhdCBjb2RlIGNhbid0CmJlIGZ1bGx5IHVuZGVyc3Rvb2QgYnkg b25lIHBlcnNvbiBiZWNhdXNlIG9mCnRoZSB2ZWlsIHRoZW4geW91IGFyZSBjb21wZWxsZWQgdG8g aW1hZ2luZSBpbgpvcmRlciB0byBjcmVhdGUgc29tZXRoaW5nIHVzZWZ1bC4KCkEgcGVyc29uIG11 c3QgYnVpbGQgdGhlaXIgb3duIGludGVyZmFjZSBmcm9tCnRoZSBwdXJlIGltYWdpbmFyeSBmdW5j dGlvbnMgdGhhdCBhcmUgc2hhcmVkLgoKSXQncyBhIHBhcmFkaWdtIGNvbXBsZXRlbHkgbWFkZSB1 cCBzbyBpdCdzCnVzZWZ1bCBhcyBmYXIgYXMgaXQncyB1c2VmdWwuCgpBbGwgdGhpcyBpcyBiYXNl ZCBvbiB0aGlzIGlkZWEgdGhhdCB3ZSB3aWxsCmhhdmUgbWFueSBmaW5ldHVuZWQgYW5kIGNvbXBs ZXRlbHkgZGlmZmVyZW50CnRyYW5zZm9ybWVyIG1vZGVscyBhbmQgd2UgbXVzdCBsZWFybiB0bwpj b21tdW5pY2F0ZS4KClRoZSBOZXZlckVuZGluZyBzdG9yeSBhbHNvIGluZmx1ZW5jZWQgbXkKdGhv dWdodHMuCgpPbmNlIGV2ZXJ5b25lIHN0b3BzIGJlbGlldmluZyBpbiBGYW50YXNpYSBpdApjZWFz ZXMgdG8gZXhpc3QsIGFzIGRvZXMgdGhlIHV0aWxpdHkgb2YKYXBwbGljYXRpb25zIGJ1aWx0IGlu IHB1cmUgaW1hZ2luYXJ5IGNvZGUu --000000000000fab60a05c84eb265--