From lurker-index@localhost Thu Jul 24 13:15:51 2008
Return-Path: <mlton-bounces@mlton.org>
X-Spam-Checker-Version: SpamAssassin 3.1.7-deb (2006-10-05) on 
	mail.terpstra.ca
X-Spam-Level: 
X-Spam-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00,
	FORGED_RCVD_HELO,HTML_00_10,HTML_MESSAGE autolearn=no 
	version=3.1.7-deb
X-Original-To: wesley@terpstra.ca
Delivered-To: wesley@terpstra.ca
Received: from localhost (localhost [127.0.0.1])
	by mail.terpstra.ca (Postfix) with ESMTP id 1F12D80004
	for <wesley@terpstra.ca>; Thu, 24 Jul 2008 13:15:20 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at mail.terpstra.ca
Received: from mail.terpstra.ca ([127.0.0.1])
	by localhost (mail.terpstra.ca [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id o8Kx2MSkERm1 for <wesley@terpstra.ca>;
	Thu, 24 Jul 2008 13:15:12 +0200 (CEST)
Received: from mlton.org (mail.sweeks.com [69.55.226.86])
	by mail.terpstra.ca (Postfix) with ESMTP id 8DF0880001
	for <wesley@terpstra.ca>; Thu, 24 Jul 2008 13:14:59 +0200 (CEST)
Received: from localhost.johncompanies.com ([127.0.0.1] helo=mlton.org)
	by mlton.org with esmtp (Exim 4.50)
	id 1KLymR-0004C1-C8; Thu, 24 Jul 2008 04:14:44 -0700
Received: from nf-out-0910.google.com ([64.233.182.189])
	by mlton.org with esmtp (Exim 4.50) id 1KLymC-0004BG-Ee
	for mlton@mlton.org; Thu, 24 Jul 2008 04:14:30 -0700
Received: by nf-out-0910.google.com with SMTP id h3so1258544nfh.33
	for <mlton@mlton.org>; Thu, 24 Jul 2008 04:14:26 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=domainkey-signature:received:received:message-id:date:from:to
	:subject:mime-version:content-type;
	bh=CBWF22hcphuVxTemjPwExMDpUByCJQiB7H2URWa3kOU=;
	b=oWoG9EWzqIRN2TLlIZqDuyEZhKa5Ka/c8Il0DtLSi5FrQzfGyYi0n5Ji4ATZHaTv/P
	imeMCg5+cRYIi/Xu+nhP9Drp6siEe9JAXpij28duLVEo3T/D06uR+NqDoWLv8xlqNAe0
	RL7TirU9atFeIyCEOpH/xLzgJFQSKc3z9jVLk=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma;
	h=message-id:date:from:to:subject:mime-version:content-type;
	b=tlfwJycwCkL73WAT3dRVbth1IxoGTfAvUQOQrjKDL9gnqFM/MWg7AcASmqdS8WuAv2
	zwCE93reX8DH+j+RkdhB/8Q9nnkUleBujOd0qQK/57pnhxzhf4Wri3RFsdReFbIdCQBr
	kFqdJj1SMSPlGzPxfPWsLqTALzAC09WQsv/XQ=
Received: by 10.210.126.5 with SMTP id y5mr193226ebc.56.1216898066354;
	Thu, 24 Jul 2008 04:14:26 -0700 (PDT)
Received: by 10.210.21.12 with HTTP; Thu, 24 Jul 2008 04:14:26 -0700 (PDT)
Message-ID: <c30ce8700807240414j5272330am14790f3fecdd91bf@mail.gmail.com>
Date: Thu, 24 Jul 2008 13:14:26 +0200
From: "Wesley W. Terpstra" <terpstra@gmail.com>
To: mlton@mlton.org
MIME-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_78053_9266173.1216898066346"
Subject: [MLton] Generating C libraries from MLton (patch)
X-BeenThere: mlton@mlton.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: mlton.mlton.org
List-Unsubscribe: <http://mlton.org/mailman/listinfo/mlton>,
	<mailto:mlton-request@mlton.org?subject=unsubscribe>
List-Archive: <http://mlton.org/pipermail/mlton>
List-Post: <mailto:mlton@mlton.org>
List-Help: <mailto:mlton-request@mlton.org?subject=help>
List-Subscribe: <http://mlton.org/mailman/listinfo/mlton>,
	<mailto:mlton-request@mlton.org?subject=subscribe>
Sender: mlton-bounces@mlton.org
Errors-To: mlton-bounces@mlton.org

------=_Part_78053_9266173.1216898066346
Content-Type: multipart/alternative; 
	boundary="----=_Part_78054_30044215.1216898066346"

------=_Part_78054_30044215.1216898066346
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Since the previous attempt to build C libraries with MLton seems to have
fizzled out, I have taken it over. :-) The attached patch adds support for
shared and static libraries to MLton. So far, the shared libraries probably
only work on *nix. I have yet to make DLLs or dylibs for windows and mac osx
respectively. However, the patch has already grown large enough and seems
stable enough that I think this is a good check-point for committing it. I
have tested all the codegens with all three compile modes (executable,
archive, library) and they all work except amd64+shared. The problem here is
that the output amd64 assembly code is not PIC. The amd64 codegen needs to
be changed to use relocatable symbols, which shouldn't be too hard. In any
case, both C and bytecode work on amd64. The x86 codegen also is not PIC,
but x86 shared libraries work even when not relocatable. Nevertheless, when
the amd64 codegen is updated, the x86 should be as well.

Here is a summary of the changes:
  * Add a new header export.h to control symbol visibility
  * Correctly tag all symbols in the codegen (and related headers)
  * Compile the runtime and gdtoa with hidden (internal) visibility only
  * Add an option to control output format (executable,library,archive)
  * Add an option to configure the path to 'ar'
  * Expose the current format in MLton.Platform.Format
  * Add two functions LIBNAME_open and LIBNAME_close to every codegen
  * Fix a bug where returnToC could leave inconsistent stack/heap, causing a
segfault on the first GC after the main thread returns. (This only affected
the C and bytecode codegens)
  * Add a PIC version of mlton and gdtoa for relocatable libraries
  * Add appropriate link flags based on output format
  * Don't output a main function in library code
  * Set the suffix of library to returnToC (involves saving the current
thread, creating a thread to perform the return, then restoring the saved
thread from the runtime)

What remains to be done:
  * Make the amd64/x86 codegens output PIC code when format = Library
  * Test whether 'gcc -shared' suffices for a .dll, If it does, modify the
'.so' prefix for the MinGW/cygwin targets.
  * Test whether 'gcc -shared' suffices for a .dylib. If it does, modify the
'.so' prefix for osx targets.

I would commit this myself as I'm fairly confident I didn't break anything,
but I've misplaced my password. -.- When committing, please try to resist
changing the patch too much, because I spent a lot of time testing it and
would rather not have to do it all again.

------=_Part_78054_30044215.1216898066346
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

<div dir="ltr">Since the previous attempt to build C libraries with MLton seems to have fizzled out, I have taken it over. :-) The attached patch adds support for shared and static libraries to MLton. So far, the shared libraries probably only work on *nix. I have yet to make DLLs or dylibs for windows and mac osx respectively. However, the patch has already grown large enough and seems stable enough that I think this is a good check-point for committing it. I have tested all the codegens with all three compile modes (executable, archive, library) and they all work except amd64+shared. The problem here is that the output amd64 assembly code is not PIC. The amd64 codegen needs to be changed to use relocatable symbols, which shouldn&#39;t be too hard. In any case, both C and bytecode work on amd64. The x86 codegen also is not PIC, but x86 shared libraries work even when not relocatable. Nevertheless, when the amd64 codegen is updated, the x86 should be as well.<br>
<br>Here is a summary of the changes:<br>&nbsp; * Add a new header export.h to control symbol visibility<br>&nbsp; * Correctly tag all symbols in the codegen (and related headers)<br>&nbsp; * Compile the runtime and gdtoa with hidden (internal) visibility only<br>
&nbsp; * Add an option to control output format (executable,library,archive)<br>&nbsp; * Add an option to configure the path to &#39;ar&#39;<br>&nbsp; * Expose the current format in MLton.Platform.Format<br>&nbsp; * Add two functions LIBNAME_open and LIBNAME_close to every codegen<br>
&nbsp; * Fix a bug where returnToC could leave inconsistent stack/heap, causing a segfault on the first GC after the main thread returns. (This only affected the C and bytecode codegens)<br>&nbsp; * Add a PIC version of mlton and gdtoa for relocatable libraries<br>
&nbsp; * Add appropriate link flags based on output format<br>
&nbsp; * Don&#39;t output a main function in library code<br>&nbsp; * Set the suffix of library to returnToC (involves saving the current thread, creating a thread to perform the return, then restoring the saved thread from the runtime)<br>
<br>What remains to be done:<br>&nbsp; * Make the amd64/x86 codegens output PIC code when format = Library<br>&nbsp; * Test whether &#39;gcc -shared&#39; suffices for a .dll, If it does, modify the &#39;.so&#39; prefix for the MinGW/cygwin targets.<br>
&nbsp; * Test whether &#39;gcc -shared&#39; suffices for a .dylib. If it does, modify the &#39;.so&#39; prefix for osx targets.<br><br>I would commit this myself as I&#39;m fairly confident I didn&#39;t break anything, but I&#39;ve misplaced my password. -.- When committing, please try to resist changing the patch too much, because I spent a lot of time testing it and would rather not have to do it all again.<br>
<br></div>

------=_Part_78054_30044215.1216898066346--

------=_Part_78053_9266173.1216898066346
Content-Type: text/x-patch; name=library-support.patch
Content-Transfer-Encoding: base64
X-Attachment-Id: f_fj19luhd0
Content-Disposition: attachment; filename=library-support.patch

SW5kZXg6IGluY2x1ZGUvY29tbW9uLW1haW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBpbmNsdWRlL2NvbW1v
bi1tYWluLmgJKHJldmlzaW9uIDY2NzIpCisrKyBpbmNsdWRlL2NvbW1vbi1tYWluLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNkZWZpbmUgTG9hZEFycmF5KGEsIGYpIGlmIChm
cmVhZCAoYSwgc2l6ZW9mKCphKSwgY2FyZG9mKGEpLCBmKSAhPSBjYXJkb2YoYSkpIHJldHVybiAt
MTsKICNkZWZpbmUgU2F2ZUFycmF5KGEsIGYpIGlmIChmd3JpdGUoYSwgc2l6ZW9mKCphKSwgY2Fy
ZG9mKGEpLCBmKSAhPSBjYXJkb2YoYSkpIHJldHVybiAtMTsKIAotUG9pbnRlciBnY1N0YXRlQWRk
cmVzczsKK0lOVEVSTkFMIFBvaW50ZXIgZ2NTdGF0ZUFkZHJlc3M7CiAKICNkZWZpbmUgSW5pdGlh
bGl6ZShhbCwgbWcsIG1mcywgbW1jLCBwaywgcHMpICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgZ2NTdGF0ZUFkZHJlc3MgPSAmZ2NTdGF0ZTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKQEAgLTcyLDYgKzcyLDEwIEBACiAgICAgICAgIGdjU3RhdGUu
cHJvZmlsaW5nLnN0YWNrID0gcHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgIE1MdG9uX2luaXQgKGFyZ2MsIGFyZ3YsICZnY1N0YXRlKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCiAKLXZvaWQgTUx0b25fY2FsbEZyb21DICgpOworI2RlZmluZSBM
SUJfUEFTVEUoeCx5KSB4ICMjIHkKKyNkZWZpbmUgTElCX09QRU4oeCkgTElCX1BBU1RFKHgsIF9v
cGVuKQorI2RlZmluZSBMSUJfQ0xPU0UoeCkgTElCX1BBU1RFKHgsIF9jbG9zZSkKIAorc3RhdGlj
IHZvaWQgTUx0b25fY2FsbEZyb21DICgpOworCiAjZW5kaWYgLyogI2lmbmRlZiBfQ09NTU9OX01B
SU5fSF8gKi8KSW5kZXg6IGluY2x1ZGUvYW1kNjQtbWFpbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGluY2x1
ZGUvYW1kNjQtbWFpbi5oCShyZXZpc2lvbiA2NjcyKQorKysgaW5jbHVkZS9hbWQ2NC1tYWluLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExLDIxICsxMSwyMSBAQAogI2luY2x1ZGUgImNvbW1vbi1tYWlu
LmgiCiAKIC8qIEdsb2JhbHMgKi8KLVdvcmQ2NCBhcHBseUZGVGVtcEZ1bjsKLVdvcmQ2NCBhcHBs
eUZGVGVtcFN0YWNrQXJnOwotV29yZDY0IGFwcGx5RkZUZW1wUmVnQXJnWzZdOwotUmVhbDMyIGFw
cGx5RkZUZW1wWG1tc1JlZ0FyZ0RbOF07Ci1SZWFsNjQgYXBwbHlGRlRlbXBYbW1zUmVnQXJnU1s4
XTsKLVdvcmQzMiBjaGVja1RlbXA7Ci1Xb3JkNjQgY1JldHVyblRlbXBbMTZdOwotUG9pbnRlciBj
X3N0YWNrUDsKLVdvcmQ2NCBmcGN2dFRlbXA7Ci1Xb3JkMzIgZnBlcVRlbXA7Ci1Xb3JkNjQgZGl2
VGVtcDsKLVdvcmQ2NCBpbmRleFRlbXA7Ci1Xb3JkNjQgcmFUZW1wMTsKLVdvcmQ2NCBzcGlsbFsz
Ml07Ci1Xb3JkNjQgc3RhY2tUb3BUZW1wOworSU5URVJOQUwgV29yZDY0IGFwcGx5RkZUZW1wRnVu
OworSU5URVJOQUwgV29yZDY0IGFwcGx5RkZUZW1wU3RhY2tBcmc7CitJTlRFUk5BTCBXb3JkNjQg
YXBwbHlGRlRlbXBSZWdBcmdbNl07CitJTlRFUk5BTCBSZWFsMzIgYXBwbHlGRlRlbXBYbW1zUmVn
QXJnRFs4XTsKK0lOVEVSTkFMIFJlYWw2NCBhcHBseUZGVGVtcFhtbXNSZWdBcmdTWzhdOworSU5U
RVJOQUwgV29yZDMyIGNoZWNrVGVtcDsKK0lOVEVSTkFMIFdvcmQ2NCBjUmV0dXJuVGVtcFsxNl07
CitJTlRFUk5BTCBQb2ludGVyIGNfc3RhY2tQOworSU5URVJOQUwgV29yZDY0IGZwY3Z0VGVtcDsK
K0lOVEVSTkFMIFdvcmQzMiBmcGVxVGVtcDsKK0lOVEVSTkFMIFdvcmQ2NCBkaXZUZW1wOworSU5U
RVJOQUwgV29yZDY0IGluZGV4VGVtcDsKK0lOVEVSTkFMIFdvcmQ2NCByYVRlbXAxOworSU5URVJO
QUwgV29yZDY0IHNwaWxsWzMyXTsKK0lOVEVSTkFMIFdvcmQ2NCBzdGFja1RvcFRlbXA7CiAKICNp
Zm5kZWYgREVCVUdfQU1ENjRDT0RFR0VOCiAjZGVmaW5lIERFQlVHX0FNRDY0Q09ERUdFTiBGQUxT
RQpAQCAtMzUsOSArMzUsOSBAQAogICAgICAgICByZXR1cm4gKigoR0NfZnJhbWVJbmRleCopKHJh
IC0gc2l6ZW9mKEdDX2ZyYW1lSW5kZXgpKSk7CiB9CiAKLSNkZWZpbmUgTUx0b25NYWluKGFsLCBt
ZywgbWZzLCBtbWMsIHBrLCBwcywgbWwpICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZp
bmUgTUx0b25DYWxsRnJvbUMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKIHZvaWQgTUx0b25fanVtcFRvU01MIChwb2ludGVyIGp1bXApOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXZvaWQgTUx0b25fY2FsbEZyb21DICgpIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3N0YXRpYyB2
b2lkIE1MdG9uX2NhbGxGcm9tQyAoKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICAgICAgcG9pbnRlciBqdW1wOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgR0Nfc3RhdGUgczsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKQEAgLTYwLDggKzYwLDExIEBACiAgICAgICAgIGlmIChERUJVR19BTUQ2NENPREVHRU4p
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAg
ICAgZnByaW50ZiAoc3RkZXJyLCAiTUx0b25fY2FsbEZyb21DKCkgZG9uZVxuIik7ICAgICAgICAg
ICBcCiAgICAgICAgIHJldHVybjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1pbnQgTUx0b25fbWFpbiAo
aW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Cit9CisKKyNkZWZpbmUgTUx0b25NYWluKGFsLCBtZywgbWZzLCBtbWMsIHBrLCBwcywgbWwpICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKK01MdG9uQ2FsbEZyb21DICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0VYUE9SVEVEIGludCBN
THRvbl9tYWluIChpbnQgYXJnYywgY2hhciogYXJndltdKSB7ICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgcG9pbnRlciBqdW1wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgZXh0ZXJuIHBvaW50ZXIgbWw7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
QEAgLTc2LDQgKzc5LDI3IEBACiAgICAgICAgIHJldHVybiAxOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9CiAKKyNkZWZpbmUgTUx0b25M
aWJyYXJ5KGFsLCBtZywgbWZzLCBtbWMsIHBrLCBwcywgbWwpICAgICAgICAgICAgICAgICAgICAg
IFwKK01MdG9uQ2FsbEZyb21DICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKK0VYUE9SVEVEIHZvaWQgTElCX09QRU4oTElCTkFNRSkgKGlu
dCBhcmdjLCBjaGFyKiBhcmd2W10pIHsgICAgICAgICAgICAgIFwKKyAgICAgICAgcG9pbnRlciBq
dW1wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgZXh0ZXJuIHBvaW50ZXIgbWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5pdGlhbGl6ZSAo
YWwsIG1nLCBtZnMsIG1tYywgcGssIHBzKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgaWYgKGdjU3RhdGUuYW1PcmlnaW5hbCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICByZWFsX0luaXQoKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBqdW1wID0g
KHBvaW50ZXIpJm1sOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBqdW1wID0gKihwb2ludGVyKikoZ2NTdGF0ZS5z
dGFja1RvcCAtIEdDX1JFVFVSTkFERFJFU1NfU0laRSk7IFwKKyAgICAgICAgfSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgTUx0b25fanVtcFRvU01MKGp1bXApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgR0Nfc3dpdGNoVG9UaHJlYWQgKCZnY1N0YXRlLCBHQ19n
ZXRTYXZlZFRocmVhZCAoJmdjU3RhdGUpLCAwKTsgIFwKK30gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0VYUE9S
VEVEIHZvaWQgTElCX0NMT1NFKExJQk5BTUUpICgpIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgcG9pbnRlciBqdW1wOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAganVtcCA9ICoocG9pbnRlciop
KGdjU3RhdGUuc3RhY2tUb3AgLSBHQ19SRVRVUk5BRERSRVNTX1NJWkUpOyAgIFwKKyAgICAgICAg
TUx0b25fanVtcFRvU01MKGp1bXApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgR0NfZG9uZSgmZ2NTdGF0ZSk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKwogI2VuZGlmIC8qICNpZm5kZWYgX0FNRDY0
X01BSU5fSF8gKi8KSW5kZXg6IGluY2x1ZGUvYnl0ZWNvZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBpbmNs
dWRlL2J5dGVjb2RlLmgJKHJldmlzaW9uIDY2NzIpCisrKyBpbmNsdWRlL2J5dGVjb2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTgsNiArOCw3IEBACiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVk
ZSAibWwtdHlwZXMuaCIKICNpbmNsdWRlICJjLXR5cGVzLmgiCisjaW5jbHVkZSAiZXhwb3J0Lmgi
CiAKIHR5cGVkZWYgUG9pbnRlciBDUG9pbnRlcjsKIHR5cGVkZWYgUG9pbnRlciBPYmpwdHI7Cklu
ZGV4OiBpbmNsdWRlL2J5dGVjb2RlLW1haW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBpbmNsdWRlL2J5dGVj
b2RlLW1haW4uaAkocmV2aXNpb24gNjY3MikKKysrIGluY2x1ZGUvYnl0ZWNvZGUtbWFpbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNSwxNCArMTUsMTQgQEAKICNkZWZpbmUgREVCVUdfQ09ERUdFTiBG
QUxTRQogI2VuZGlmCiAKLXN0cnVjdCBCeXRlY29kZSBNTHRvbl9ieXRlY29kZTsKK0lOVEVSTkFM
IHN0cnVjdCBCeXRlY29kZSBNTHRvbl9ieXRlY29kZTsKIAogc3RhdGljIEdDX2ZyYW1lSW5kZXgg
cmV0dXJuQWRkcmVzc1RvRnJhbWVJbmRleCAoR0NfcmV0dXJuQWRkcmVzcyByYSkgewogICAgICAg
ICByZXR1cm4gKigoR0NfZnJhbWVJbmRleCopKE1MdG9uX2J5dGVjb2RlLmNvZGUgKyByYSAtIHNp
emVvZihHQ19mcmFtZUluZGV4KSkpOwogfQogCi0jZGVmaW5lIE1MdG9uTWFpbihhbCwgbWcsIG1m
cywgbW1jLCBwaywgcHMsIG1sKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi12b2lkIE1MdG9u
X2NhbGxGcm9tQyAoKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisjZGVmaW5lIE1MdG9uQ2FsbEZyb21DICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCitzdGF0aWMgdm9pZCBNTHRvbl9jYWxsRnJvbUMgKCkg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHVpbnRw
dHJfdCBuZXh0RnVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgICAgIEdDX3N0YXRlIHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC00Niw3ICs0NiwxMCBA
QAogICAgICAgICBpZiAoREVCVUdfQ09ERUdFTikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgIGZwcmludGYgKHN0ZGVyciwgIk1M
dG9uX2NhbGxGcm9tQyBkb25lXG4iKTsgICAgICAgICAgICAgXAogfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
aW50IE1MdG9uX21haW4gKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorCisjZGVmaW5lIE1MdG9uTWFpbihhbCwgbWcsIG1mcywgbW1jLCBw
aywgcHMsIG1sKSAgICAgICAgICAgICAgICAgICAgICAgICBcCitNTHRvbkNhbGxGcm9tQyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitF
WFBPUlRFRCBpbnQgTUx0b25fbWFpbiAoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgeyAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgICAgIHVpbnRwdHJfdCBuZXh0RnVuOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIEluaXRpYWxpemUgKGFs
LCBtZywgbWZzLCBtbWMsIHBrLCBwcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
ICAgIGlmIChnY1N0YXRlLmFtT3JpZ2luYWwpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCkBAIC01Nyw2ICs2MCwyOSBAQAogICAgICAgICAgICAgICAgIG5leHRGdW4g
PSAqKHVpbnRwdHJfdCopKGdjU3RhdGUuc3RhY2tUb3AgLSBHQ19SRVRVUk5BRERSRVNTX1NJWkUp
OyBcCiAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIE1MdG9uX0J5dGVjb2RlX2ludGVycHJldCAo
Jk1MdG9uX2J5dGVjb2RlLCBuZXh0RnVuKTsgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiAx
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiB9CiAKKyNkZWZpbmUgTUx0b25MaWJyYXJ5KGFsLCBtZywgbWZzLCBtbWMsIHBrLCBwcywgbWwp
ICAgICAgICAgICAgICAgICAgICAgIFwKK01MdG9uQ2FsbEZyb21DICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0VYUE9SVEVEIHZvaWQg
TElCX09QRU4oTElCTkFNRSkgKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsgICAgICAgICAgICAg
IFwKKyAgICAgICAgdWludHB0cl90IG5leHRGdW47ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5pdGlhbGl6ZSAoYWwsIG1nLCBtZnMsIG1t
YywgcGssIHBzKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKGdjU3Rh
dGUuYW1PcmlnaW5hbCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgICAgICByZWFsX0luaXQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBuZXh0RnVuID0gbWw7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSBlbHNlIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgICAgICAvKiBSZXR1cm4gdG8gdGhlIHNhdmVkIHdvcmxkICovICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBuZXh0RnVuID0gKih1aW50cHRyX3QqKShn
Y1N0YXRlLnN0YWNrVG9wIC0gR0NfUkVUVVJOQUREUkVTU19TSVpFKTsgXAorICAgICAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBNTHRvbl9CeXRlY29kZV9pbnRlcnByZXQgKCZNTHRvbl9ieXRlY29kZSwg
bmV4dEZ1bik7ICAgICAgICAgICAgXAorICAgICAgICBHQ19zd2l0Y2hUb1RocmVhZCAoJmdjU3Rh
dGUsIEdDX2dldFNhdmVkVGhyZWFkICgmZ2NTdGF0ZSksIDApOyAgXAorfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorRVhQT1JURUQgdm9pZCBMSUJfQ0xPU0UoTElCTkFNRSkgKCkgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICB1aW50cHRyX3QgbmV4dEZ1bjsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBuZXh0RnVuID0g
Kih1aW50cHRyX3QqKShnY1N0YXRlLnN0YWNrVG9wIC0gR0NfUkVUVVJOQUREUkVTU19TSVpFKTsg
XAorICAgICAgICBNTHRvbl9CeXRlY29kZV9pbnRlcnByZXQgKCZNTHRvbl9ieXRlY29kZSwgbmV4
dEZ1bik7ICAgICAgICAgICAgXAorICAgICAgICBHQ19kb25lKCZnY1N0YXRlKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCiAjZW5kaWYgLyogI2lm
bmRlZiBfQllURUNPREVfTUFJTl9IICovCkluZGV4OiBpbmNsdWRlL2MtbWFpbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGluY2x1ZGUvYy1tYWluLmgJKHJldmlzaW9uIDY2NzIpCisrKyBpbmNsdWRlL2MtbWFp
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNiwxMSArMTYsMTEgQEAKICAgICAgICAgcmV0dXJuIChH
Q19mcmFtZUluZGV4KXJhOwogfQogCi0jZGVmaW5lIE1MdG9uTWFpbihhbCwgbWcsIG1mcywgbW1j
LCBwaywgcHMsIG1jLCBtbCkgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIE1MdG9uQ2Fs
bEZyb21DICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAvKiBHbG9iYWxzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi11aW50cHRyX3QgbmV4dEZ1bjsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1pbnQgcmV0dXJuVG9DOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi12
b2lkIE1MdG9uX2NhbGxGcm9tQyAoKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCitJTlRFUk5BTCB1aW50cHRyX3QgbmV4dEZ1bjsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitJTlRFUk5BTCBpbnQgcmV0dXJuVG9D
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitzdGF0
aWMgdm9pZCBNTHRvbl9jYWxsRnJvbUMgKCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgIHN0cnVjdCBjb250IGNvbnQ7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIEdDX3N0YXRlIHM7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCkBAIC00Nyw4ICs0NywxMSBAQAogICAgICAgICAgICAgICAgIHMtPmxpbWl0ID0g
MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBp
ZiAoREVCVUdfQ0NPREVHRU4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgICAgICAgICAgICAgIGZwcmludGYgKHN0ZGVyciwgIk1MdG9uX2NhbGxGcm9t
QyBkb25lXG4iKTsgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW50IE1MdG9uX21h
aW4gKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorfQorCisjZGVmaW5lIE1MdG9uTWFpbihhbCwgbWcsIG1mcywgbW1jLCBwaywgcHMsIG1j
LCBtbCkgICAgICAgICAgICAgICAgICAgICBcCitNTHRvbkNhbGxGcm9tQyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitFWFBPUlRFRCBp
bnQgTUx0b25fbWFpbiAoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgeyAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgICAgIHN0cnVjdCBjb250IGNvbnQ7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIEluaXRpYWxpemUgKGFsLCBtZywgbWZz
LCBtbWMsIHBrLCBwcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChn
Y1N0YXRlLmFtT3JpZ2luYWwpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCkBAIC03MCw2ICs3MywzNyBAQAogICAgICAgICAgICAgICAgIGNvbnQ9KCooc3RydWN0IGNv
bnQoKikodm9pZCkpY29udC5uZXh0Q2h1bmspKCk7ICAgICAgICAgXAogICAgICAgICAgICAgICAg
IGNvbnQ9KCooc3RydWN0IGNvbnQoKikodm9pZCkpY29udC5uZXh0Q2h1bmspKCk7ICAgICAgICAg
XAogICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gMTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogfQogCisjZGVmaW5lIE1MdG9u
TGlicmFyeShhbCwgbWcsIG1mcywgbW1jLCBwaywgcHMsIG1jLCBtbCkgICAgICAgICAgICAgICAg
ICBcCitNTHRvbkNhbGxGcm9tQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCitFWFBPUlRFRCB2b2lkIExJQl9PUEVOKExJQk5BTUUpIChp
bnQgYXJnYywgY2hhciogYXJndltdKSB7ICAgICAgICAgICAgICBcCisgICAgICAgIHN0cnVjdCBj
b250IGNvbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIEluaXRpYWxpemUgKGFsLCBtZywgbWZzLCBtbWMsIHBrLCBwcyk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChnY1N0YXRlLmFtT3JpZ2luYWwpIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgcmVh
bF9Jbml0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICAgICAgUHJlcEZhckp1bXAobWMsIG1sKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgLyogUmV0
dXJuIHRvIHRoZSBzYXZlZCB3b3JsZCAqLyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICAgICAgbmV4dEZ1biA9ICoodWludHB0cl90KikoZ2NTdGF0ZS5zdGFja1RvcCAtIEdD
X1JFVFVSTkFERFJFU1NfU0laRSk7IFwKKyAgICAgICAgICAgICAgICBjb250Lm5leHRDaHVuayA9
IG5leHRDaHVua3NbbmV4dEZ1bl07ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgLyogVHJhbXBvbGluZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBj
b250PSgqKHN0cnVjdCBjb250KCopKHZvaWQpKWNvbnQubmV4dENodW5rKSgpOyAgICAgICAgIFwK
KyAgICAgICAgfSB3aGlsZSAobm90IHJldHVyblRvQyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgR0Nfc3dpdGNoVG9UaHJlYWQgKCZnY1N0YXRlLCBH
Q19nZXRTYXZlZFRocmVhZCAoJmdjU3RhdGUpLCAwKTsgIFwKK30gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0VY
UE9SVEVEIHZvaWQgTElCX0NMT1NFKExJQk5BTUUpICgpIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgc3RydWN0IGNvbnQgY29udDsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbmV4dEZ1biA9ICoodWlu
dHB0cl90KikoZ2NTdGF0ZS5zdGFja1RvcCAtIEdDX1JFVFVSTkFERFJFU1NfU0laRSk7IFwKKyAg
ICAgICAgY29udC5uZXh0Q2h1bmsgPSBuZXh0Q2h1bmtzW25leHRGdW5dOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuVG9DID0gZmFsc2U7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZG8geyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgICAgICBjb250PSgqKHN0cnVjdCBjb250KCopKHZvaWQpKWNvbnQubmV4dENodW5rKSgp
OyAgICAgICAgIFwKKyAgICAgICAgfSB3aGlsZSAobm90IHJldHVyblRvQyk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgR0NfZG9uZSgmZ2NTdGF0ZSk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKwogI2Vu
ZGlmIC8qICNpZm5kZWYgX0NfTUFJTl9IICovCkluZGV4OiBpbmNsdWRlL3g4Ni1tYWluLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gaW5jbHVkZS94ODYtbWFpbi5oCShyZXZpc2lvbiA2NjcyKQorKysgaW5jbHVk
ZS94ODYtbWFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMSwyOCArMTEsMjggQEAKICNpbmNsdWRl
ICJjb21tb24tbWFpbi5oIgogCiAvKiBHbG9iYWxzICovCi1Xb3JkMzIgYXBwbHlGRlRlbXA7Ci1X
b3JkMzIgYXBwbHlGRlRlbXAyOwotV29yZDMyIGNoZWNrVGVtcDsKLVdvcmQzMiBjUmV0dXJuVGVt
cFsxNl07Ci1Qb2ludGVyIGNfc3RhY2tQOwotV29yZDMyIGRpdlRlbXA7Ci1Xb3JkMzIgZmlsZFRl
bXA7Ci1Xb3JkMzIgZnBzd1RlbXA7Ci1Xb3JkMzIgaW5kZXhUZW1wOwotV29yZDMyIHJhVGVtcDE7
Ci1SZWFsNjQgcmFUZW1wMjsKLVJlYWw2NCByZWFsVGVtcDFEOwotUmVhbDY0IHJlYWxUZW1wMkQ7
Ci1SZWFsNjQgcmVhbFRlbXAzRDsKLVJlYWwzMiByZWFsVGVtcDFTOwotUmVhbDMyIHJlYWxUZW1w
MlM7Ci1SZWFsMzIgcmVhbFRlbXAzUzsKLVdvcmQzMiBzcGlsbFsxNl07Ci1Xb3JkMzIgc3RhY2tU
b3BUZW1wOwotV29yZDggd29yZFRlbXAxQjsKLVdvcmQxNiB3b3JkVGVtcDFXOwotV29yZDMyIHdv
cmRUZW1wMUw7CitJTlRFUk5BTCBXb3JkMzIgYXBwbHlGRlRlbXA7CitJTlRFUk5BTCBXb3JkMzIg
YXBwbHlGRlRlbXAyOworSU5URVJOQUwgV29yZDMyIGNoZWNrVGVtcDsKK0lOVEVSTkFMIFdvcmQz
MiBjUmV0dXJuVGVtcFsxNl07CitJTlRFUk5BTCBQb2ludGVyIGNfc3RhY2tQOworSU5URVJOQUwg
V29yZDMyIGRpdlRlbXA7CitJTlRFUk5BTCBXb3JkMzIgZmlsZFRlbXA7CitJTlRFUk5BTCBXb3Jk
MzIgZnBzd1RlbXA7CitJTlRFUk5BTCBXb3JkMzIgaW5kZXhUZW1wOworSU5URVJOQUwgV29yZDMy
IHJhVGVtcDE7CitJTlRFUk5BTCBSZWFsNjQgcmFUZW1wMjsKK0lOVEVSTkFMIFJlYWw2NCByZWFs
VGVtcDFEOworSU5URVJOQUwgUmVhbDY0IHJlYWxUZW1wMkQ7CitJTlRFUk5BTCBSZWFsNjQgcmVh
bFRlbXAzRDsKK0lOVEVSTkFMIFJlYWwzMiByZWFsVGVtcDFTOworSU5URVJOQUwgUmVhbDMyIHJl
YWxUZW1wMlM7CitJTlRFUk5BTCBSZWFsMzIgcmVhbFRlbXAzUzsKK0lOVEVSTkFMIFdvcmQzMiBz
cGlsbFsxNl07CitJTlRFUk5BTCBXb3JkMzIgc3RhY2tUb3BUZW1wOworSU5URVJOQUwgV29yZDgg
d29yZFRlbXAxQjsKK0lOVEVSTkFMIFdvcmQxNiB3b3JkVGVtcDFXOworSU5URVJOQUwgV29yZDMy
IHdvcmRUZW1wMUw7CiAKICNpZm5kZWYgREVCVUdfWDg2Q09ERUdFTgogI2RlZmluZSBERUJVR19Y
ODZDT0RFR0VOIEZBTFNFCkBAIC00Miw5ICs0Miw5IEBACiAgICAgICAgIHJldHVybiAqKChHQ19m
cmFtZUluZGV4KikocmEgLSBzaXplb2YoR0NfZnJhbWVJbmRleCkpKTsKIH0KIAotI2RlZmluZSBN
THRvbk1haW4oYWwsIG1nLCBtZnMsIG1tYywgcGssIHBzLCBtbCkgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorI2RlZmluZSBNTHRvbkNhbGxGcm9tQyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogdm9pZCBNTHRvbl9qdW1wVG9TTUwgKHBvaW50ZXIg
anVtcCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdm9pZCBNTHRvbl9j
YWxsRnJvbUMgKCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorc3RhdGljIHZvaWQgTUx0b25fY2FsbEZyb21DICgpIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBwb2ludGVyIGp1bXA7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBHQ19zdGF0
ZSBzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXApAQCAtNjgsOCArNjgsMTEgQEAKICAgICAgICAgaWYgKERFQlVH
X1g4NkNPREVHRU4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICAgICAgICAgICAgICBmcHJpbnRmIChzdGRlcnIsICJNTHRvbl9jYWxsRnJvbUMoKSBkb25l
XG4iKTsgICAgICAgICAgIFwKICAgICAgICAgcmV0dXJuOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWlu
dCBNTHRvbl9tYWluIChpbnQgYXJnYywgY2hhciogYXJndltdKSB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKK30KKworI2RlZmluZSBNTHRvbk1haW4oYWwsIG1nLCBtZnMsIG1tYywg
cGssIHBzLCBtbCkgICAgICAgICAgICAgICAgICAgICAgICAgXAorTUx0b25DYWxsRnJvbUMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
RVhQT1JURUQgaW50IE1MdG9uX21haW4gKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgICAgICBwb2ludGVyIGp1bXA7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBleHRlcm4gcG9pbnRl
ciBtbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXApAQCAtODQsNSArODcsMjcgQEAKICAgICAgICAgcmV0dXJuIDE7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0KIAor
I2RlZmluZSBNTHRvbkxpYnJhcnkoYWwsIG1nLCBtZnMsIG1tYywgcGssIHBzLCBtbCkgICAgICAg
ICAgICAgICAgICAgICAgXAorTUx0b25DYWxsRnJvbUMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorRVhQT1JURUQgdm9pZCBMSUJfT1BF
TihMSUJOQU1FKSAoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgeyAgICAgICAgICAgICAgXAorICAg
ICAgICBwb2ludGVyIGp1bXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBleHRlcm4gcG9pbnRlciBtbDsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBJbml0aWFsaXplIChhbCwgbWcsIG1mcywgbW1jLCBwaywgcHMpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBpZiAoZ2NTdGF0ZS5hbU9yaWdpbmFsKSB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHJlYWxfSW5pdCgp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgICAgIGp1bXAgPSAocG9pbnRlcikmbWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGp1bXAgPSAqKHBvaW50
ZXIqKShnY1N0YXRlLnN0YWNrVG9wIC0gR0NfUkVUVVJOQUREUkVTU19TSVpFKTsgXAorICAgICAg
ICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBNTHRvbl9qdW1wVG9TTUwoanVtcCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBHQ19zd2l0Y2hUb1RocmVhZCAo
JmdjU3RhdGUsIEdDX2dldFNhdmVkVGhyZWFkICgmZ2NTdGF0ZSksIDApOyAgXAorfSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorRVhQT1JURUQgdm9pZCBMSUJfQ0xPU0UoTElCTkFNRSkgKCkgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwb2ludGVyIGp1bXA7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBqdW1w
ID0gKihwb2ludGVyKikoZ2NTdGF0ZS5zdGFja1RvcCAtIEdDX1JFVFVSTkFERFJFU1NfU0laRSk7
ICAgXAorICAgICAgICBNTHRvbl9qdW1wVG9TTUwoanVtcCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBHQ19kb25lKCZnY1N0YXRlKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCiAjZW5kaWYgLyog
I2lmbmRlZiBfWDg2X01BSU5fSF8gKi8KLQpJbmRleDogaW5jbHVkZS9jLWNodW5rLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gaW5jbHVkZS9jLWNodW5rLmgJKHJldmlzaW9uIDY2NzIpCisrKyBpbmNsdWRlL2Mt
Y2h1bmsuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw3IEBACiAgICAgICAgICAgICAg
ICAgICAgICAgICBmcHJpbnRmIChzdGRlcnIsICIlczolZDogVGhyZWFkX3JldHVyblRvQygpXG4i
LCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9f
TElORV9fKTsgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgcmV0dXJuVG9DID0gVFJVRTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGNvbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICAgICAgZ290byBsZWF2ZUNodW5rOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCiAgICAgICAgIH0gd2hpbGUgKDApCiAKIC8qIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTIxMiw3ICsyMTIs
NyBAQAogI2RlZmluZSBNTFRPTl9DT0RFR0VOX01FTUNQWShkZWNsKQogI2VuZGlmCiBNTFRPTl9D
T0RFR0VOX01FTUNQWSh2b2lkICogbWVtY3B5KHZvaWQgKiwgY29uc3Qgdm9pZCosIHNpemVfdCk7
KQotI2luY2x1ZGUgImJhc2lzLWZmaS5oIgorLyogaW1wb3J0ZWQgdmlhIEZGSSwgc28gZWxpZGVk
OiAjaW5jbHVkZSAiYmFzaXMtZmZpLmgiICovCiAjaW5jbHVkZSAiYmFzaXMvY29lcmNlLmgiCiAj
aW5jbHVkZSAiYmFzaXMvY3BvaW50ZXIuaCIKICNpbmNsdWRlICJiYXNpcy9SZWFsL1JlYWwtb3Bz
LmgiCkluZGV4OiBpbmNsdWRlL2MtY29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaW5jbHVkZS9jLWNv
bW1vbi5oCShyZXZpc2lvbiA2NjcyKQorKysgaW5jbHVkZS9jLWNvbW1vbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMyw2ICsxMyw4IEBACiAjZGVmaW5lIERFQlVHX0NDT0RFR0VOIEZBTFNFCiAjZW5k
aWYKIAorI2luY2x1ZGUgImV4cG9ydC5oIgorCiBzdHJ1Y3QgY29udCB7CiAgICAgICAgIHZvaWQg
Km5leHRDaHVuazsKIH07CkBAIC0yNSw3ICsyNyw3IEBACiAjZGVmaW5lIENodW5rTmFtZShuKSBD
aHVuayAjIyBuCiAKICNkZWZpbmUgRGVjbGFyZUNodW5rKG4pICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgc3RydWN0IGNvbnQgQ2h1bmtOYW1lKG4pKHZvaWQpCisgICAgICAgIElO
VEVSTkFMIHN0cnVjdCBjb250IENodW5rTmFtZShuKSh2b2lkKQogCiAjZGVmaW5lIENodW5rcChu
KSAmKENodW5rTmFtZShuKSkKIApJbmRleDogcnVudGltZS9ieXRlY29kZS9pbnRlcnByZXQuYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBydW50aW1lL2J5dGVjb2RlL2ludGVycHJldC5jCShyZXZpc2lvbiA2Njcy
KQorKysgcnVudGltZS9ieXRlY29kZS9pbnRlcnByZXQuYwkod29ya2luZyBjb3B5KQpAQCAtNTk3
LDYgKzU5Nyw4IEBACiAgICAgICAgIFN3aXRjaCgzMik7CiAgICAgICAgIFN3aXRjaCg2NCk7CiAg
ICAgICAgIGNhc2Ugb3Bjb2RlU3ltIChUaHJlYWRfcmV0dXJuVG9DKToKKyAgICAgICAgICAgICAg
ICBGbHVzaEZyb250aWVyICgpOworICAgICAgICAgICAgICAgIEZsdXNoU3RhY2tUb3AgKCk7CiAg
ICAgICAgICAgICAgICAgbWF5YmUgZ290byBkb25lOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgICAgIGFzc2VydCAoRkFMU0UpOwpJbmRleDogcnVudGltZS9leHBvcnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBydW50aW1lL2V4cG9ydC5oCShyZXZpc2lvbiAwKQorKysgcnVudGltZS9leHBvcnQu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNCBAQAorLyogQ29weXJpZ2h0IChDKSAxOTk5LTIw
MDcgSGVucnkgQ2VqdGluLCBNYXR0aGV3IEZsdWV0LCBTdXJlc2gKKyAqICAgIEphZ2FubmF0aGFu
LCBhbmQgU3RlcGhlbiBXZWVrcy4KKyAqIENvcHlyaWdodCAoQykgMTk5Ny0yMDAwIE5FQyBSZXNl
YXJjaCBJbnN0aXR1dGUuCisgKgorICogTUx0b24gaXMgcmVsZWFzZWQgdW5kZXIgYSBCU0Qtc3R5
bGUgbGljZW5zZS4KKyAqIFNlZSB0aGUgZmlsZSBNTHRvbi1MSUNFTlNFIGZvciBkZXRhaWxzLgor
ICovCisKKyNpZm5kZWYgX01MVE9OX0VYUE9SVF9IXworI2RlZmluZSBfTUxUT05fRVhQT1JUX0hf
CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
Ki8KKy8qICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbHMgICAgICAgICAgICAgICAgICAgICAg
Ki8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
Ki8KKworI2lmIF9fR05VQ19fID49IDQKKyNkZWZpbmUgRVhQT1JURUQgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKKyNkZWZpbmUgSU5URVJOQUwgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiaGlkZGVuIikpKQorI2Vsc2UKKyNkZWZpbmUgRVhQT1JURUQKKyNkZWZpbmUg
SU5URVJOQUwKKyNlbmRpZgorCisjZW5kaWYgLyogX01MVE9OX0VYUE9SVF9IXyAqLwpJbmRleDog
cnVudGltZS9wbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJ1bnRpbWUvcGxhdGZvcm0uaAkocmV2
aXNpb24gNjY3MikKKysrIHJ1bnRpbWUvcGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMTMs
NiArMTMsNyBAQAogI2luY2x1ZGUgInV0aWwuaCIKICNpbmNsdWRlICJtbC10eXBlcy5oIgogI2lu
Y2x1ZGUgImMtdHlwZXMuaCIKKyNpbmNsdWRlICJleHBvcnQuaCIKIAogI2lmbmRlZiBNTHRvbl9Q
bGF0Zm9ybV9BcmNoX2hvc3QKICNlcnJvciBNTHRvbl9QbGF0Zm9ybV9BcmNoX2hvc3Qgbm90IGRl
ZmluZWQKSW5kZXg6IHJ1bnRpbWUvTWFrZWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcnVudGltZS9NYWtl
ZmlsZQkocmV2aXNpb24gNjY3MikKKysrIHJ1bnRpbWUvTWFrZWZpbGUJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDEzICszMywyMSBAQAogRkxBR1MgOj0KIEVYRSA6PQogT1BURkxBR1MgOj0gLU8yIC1m
b21pdC1mcmFtZS1wb2ludGVyCitERUJVR0ZMQUdTIDo9IC1PMSAtZm5vLWlubGluZSAtZmtlZXAt
aW5saW5lLWZ1bmN0aW9ucyAtZzIKK1BJQ0ZMQUdTIDo9IC1mUElDIC1EUElDCiBHQ09QVEZMQUdT
IDo9Ci1ERUJVR0ZMQUdTIDo9IC1PMSAtZm5vLWlubGluZSAtZmtlZXAtaW5saW5lLWZ1bmN0aW9u
cyAtZzIKIEdDREVCVUdGTEFHUyA6PQorR0NQSUNGTEFHUyA6PSAKIFdBUk5GTEFHUyA6PQogT1BU
V0FSTkZMQUdTIDo9CiBERUJVR1dBUk5GTEFHUyA6PQorUElDV0FSTkZMQUdTIDo9IAogCisjIE1h
a2UgbWx0b24gc3RhdGljIGxpYnJhcnkgc3ltYm9scyBwcml2YXRlCitpZmVxICgkKGZpbmRzdHJp
bmcgJChHQ0NfTUFKT1JfVkVSU0lPTiksIDQpLCQoR0NDX01BSk9SX1ZFUlNJT04pKQorRkxBR1Mg
Kz0gLWZ2aXNpYmlsaXR5PWhpZGRlbgorZW5kaWYKKwogaWZlcSAoJChUQVJHRVRfQVJDSCksIGFt
ZDY0KQogRkxBR1MgKz0gLW02NAogaWZlcSAoJChmaW5kc3RyaW5nICQoR0NDX1ZFUlNJT04pLCAz
LjQgNC4wIDQuMSksJChHQ0NfVkVSU0lPTikpCkBAIC0xMTMsOCArMTIxLDEwIEBACiBDRkxBR1Mg
Oj0gLUkuIC1JcGxhdGZvcm0gJChGTEFHUykKIE9QVENGTEFHUyA6PSAkKENGTEFHUykgJChDUFBG
TEFHUykgJChPUFRGTEFHUykKIERFQlVHQ0ZMQUdTIDo9ICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAt
REFTU0VSVD0xICQoREVCVUdGTEFHUykKK1BJQ0NGTEFHUyA6PSAkKENGTEFHUykgJChDUFBGTEFH
UykgJChPUFRGTEFHUykgJChQSUNGTEFHUykKIEdDT1BUQ0ZMQUdTID0gJChHQ09QVEZMQUdTKQog
R0NERUJVR0NGTEFHUyA9ICQoR0NERUJVR0ZMQUdTKQorR0NQSUNDRkxBR1MgPSAkKEdDT1BURkxB
R1MpICQoR0NQSUNGTEFHUykKIFdBUk5DRkxBR1MgOj0KIFdBUk5DRkxBR1MgKz0gLXBlZGFudGlj
IC1XYWxsCiBpZmVxICgkKGZpbmRzdHJpbmcgJChHQ0NfTUFKT1JfVkVSU0lPTiksIDMpLCQoR0ND
X01BSk9SX1ZFUlNJT04pKQpAQCAtMTY3LDYgKzE3Nyw3IEBACiAKIE9QVFdBUk5DRkxBR1MgOj0g
JChXQVJOQ0ZMQUdTKSAtV2Rpc2FibGVkLW9wdGltaXphdGlvbiAkKE9QVFdBUk5GTEFHUykKIERF
QlVHV0FSTkNGTEFHUyA6PSAkKFdBUk5DRkxBR1MpICQoREVCVUdXQVJORkxBR1MpCitQSUNXQVJO
Q0ZMQUdTIDo9ICQoV0FSTkNGTEFHUykgJChPUFRXQVJORkxBR1MpICQoUElDV0FSTkZMQUdTKQog
CiBVVElMSEZJTEVTIDo9CQkJCQkJCVwKIAl1dGlsLmgJCQkJCQkJXApAQCAtMjEyLDI1ICsyMjMs
MzUgQEAKIAlnYy1nZGIubwkJCQkJCVwKIAlwbGF0Zm9ybS1nZGIubwkJCQkJCVwKIAlwbGF0Zm9y
bS8kKFRBUkdFVF9PUyktZ2RiLm8KK1BJQ19PQkpTIDo9IAkJCQkJCQlcCisJdXRpbC1waWMubwkJ
CQkJCVwKKwlnYy1waWMubwkJCQkJCVwKKwlwbGF0Zm9ybS1waWMubwkJCQkJCVwKKwlwbGF0Zm9y
bS8kKFRBUkdFVF9PUyktcGljLm8KIAogT01JVF9CWVRFQ09ERSA6PSBubwogaWZlcSAoJChPTUlU
X0JZVEVDT0RFKSwgeWVzKQogZWxzZQogICBPQkpTICs9IGJ5dGVjb2RlL2ludGVycHJldC5vCiAg
IERFQlVHX09CSlMgKz0gYnl0ZWNvZGUvaW50ZXJwcmV0LWdkYi5vCisgIFBJQ19PQkpTICs9IGJ5
dGVjb2RlL2ludGVycHJldC1waWMubwogZW5kaWYKIAogaWZlcSAoJChDT01QSUxFX0ZBU1QpLCB5
ZXMpCiAgIE9CSlMgKz0gYmFzaXMubwogICBERUJVR19PQkpTICs9IGJhc2lzLWdkYi5vCisgIFBJ
Q19PQkpTICs9IGJhc2lzLXBpYy5vCiBlbHNlCiAgIE9CSlMgKz0gCQkJCQkJCVwKIAkkKGZvcmVh
Y2ggZiwgJChiYXNlbmFtZSAkKEJBU0lTQ0ZJTEVTKSksICQoZikubykKICAgREVCVUdfT0JKUyAr
PSAJCQkJCQlcCiAJJChmb3JlYWNoIGYsICQoYmFzZW5hbWUgJChCQVNJU0NGSUxFUykpLCAkKGYp
LWdkYi5vKQorICBQSUNfT0JKUyArPSAJCQkJCQlcCisJJChmb3JlYWNoIGYsICQoYmFzZW5hbWUg
JChCQVNJU0NGSUxFUykpLCAkKGYpLXBpYy5vKQogZW5kaWYKIAotQUxMIDo9IGxpYmdkdG9hLmEg
bGlibWx0b24uYSBsaWJtbHRvbi1nZGIuYQorQUxMIDo9IGxpYmdkdG9hLmEgbGliZ2R0b2EtZ2Ri
LmEgbGliZ2R0b2EtcGljLmEgXAorICAgICAgIGxpYm1sdG9uLmEgbGlibWx0b24tZ2RiLmEgbGli
bWx0b24tcGljLmEKIEFMTCArPSBnZW4vYy10eXBlcy5zbWwgZ2VuL2Jhc2lzLWZmaS5zbWwgZ2Vu
L3NpemVzCiBpZmVxICgkKE9NSVRfQllURUNPREUpLCB5ZXMpCiBlbHNlCkBAIC0yNDgsNiArMjY5
LDI0IEBACiAJJChBUikgbGliZ2R0b2EuYSBnZHRvYS8qLm8KIAkkKFJBTkxJQikgbGliZ2R0b2Eu
YQogCitsaWJnZHRvYS1nZGIuYTogZ2R0b2EvYXJpdGguaAorCWNkIGdkdG9hICYmIAkJCQkJCVwK
KwkJJChDQykgJChERUJVR0NGTEFHUykgJChERUJVR1dBUk5DRkxBR1MpCQlcCisJCQktdyAtTzEg
LWMgLURJTkZOQU5fQ0hFQ0sgCQlcCisJCQkqLmMKKwkkKFJNKSBnZHRvYS9hcml0aGNoay5vCisJ
JChBUikgbGliZ2R0b2EtZ2RiLmEgZ2R0b2EvKi5vCisJJChSQU5MSUIpIGxpYmdkdG9hLWdkYi5h
CisKK2xpYmdkdG9hLXBpYy5hOiBnZHRvYS9hcml0aC5oCisJY2QgZ2R0b2EgJiYgCQkJCQkJXAor
CQkkKENDKSAkKFBJQ0NGTEFHUykgJChQSUNXQVJOQ0ZMQUdTKQkJXAorCQkJLXcgLU8xIC1jIC1E
SU5GTkFOX0NIRUNLIAkJXAorCQkJKi5jCisJJChSTSkgZ2R0b2EvYXJpdGhjaGsubworCSQoQVIp
IGxpYmdkdG9hLXBpYy5hIGdkdG9hLyoubworCSQoUkFOTElCKSBsaWJnZHRvYS1waWMuYQorCiBn
ZHRvYS9hcml0aGNoay5jOgogCWd6aXAgLWRjIGdkdG9hLnRneiB8IHRhciB4ZiAtCiAJcGF0Y2gg
LXMgLXAwIDxnZHRvYS1wYXRjaApAQCAtMjY2LDcgKzMwNSwxMSBAQAogCSQoQVIpIGxpYm1sdG9u
LWdkYi5hICQoREVCVUdfT0JKUykKIAkkKFJBTkxJQikgbGlibWx0b24tZ2RiLmEKIAorbGlibWx0
b24tcGljLmE6ICQoUElDX09CSlMpCisJJChBUikgbGlibWx0b24tcGljLmEgJChQSUNfT0JKUykK
KwkkKFJBTkxJQikgbGlibWx0b24tcGljLmEKIAorCiBiYXNpcy5jOiAkKEJBU0lTQ0ZJTEVTKQog
CXJtIC1mIGJhc2lzLmMKIAljYXQgJChCQVNJU0NGSUxFUykgPj4gYmFzaXMuYwpAQCAtMzA1LDEy
ICszNDgsMTggQEAKIAlybSAtZiBieXRlY29kZS9wcmludC1vcGNvZGVzJChFWEUpCiAKIAordXRp
bC1waWMubzogdXRpbC5jICQoVVRJTENGSUxFUykgY2Vudi5oICQoVVRJTEhGSUxFUykKKwkkKEND
KSAkKFBJQ0NGTEFHUykgJChQSUNXQVJOQ0ZMQUdTKSAtYyAtbyAkQCAkPAorCiB1dGlsLWdkYi5v
OiB1dGlsLmMgJChVVElMQ0ZJTEVTKSBjZW52LmggJChVVElMSEZJTEVTKQogCSQoQ0MpICQoREVC
VUdDRkxBR1MpICQoREVCVUdXQVJOQ0ZMQUdTKSAtYyAtbyAkQCAkPAogCiB1dGlsLm86IHV0aWwu
YyAkKFVUSUxDRklMRVMpIGNlbnYuaCAkKFVUSUxIRklMRVMpCiAJJChDQykgJChPUFRDRkxBR1Mp
ICQoT1BUV0FSTkNGTEFHUykgLWMgLW8gJEAgJDwKIAorZ2MtcGljLm86IGdjLmMgJChHQ0NGSUxF
UykgJChIRklMRVMpCisJJChDQykgJChQSUNDRkxBR1MpICQoR0NQSUNDRkxBR1MpICQoUElDV0FS
TkNGTEFHUykgLWMgLW8gJEAgJDwKKwogZ2MtZ2RiLm86IGdjLmMgJChHQ0NGSUxFUykgJChIRklM
RVMpCiAJJChDQykgJChERUJVR0NGTEFHUykgJChHQ0RFQlVHQ0ZMQUdTKSAkKERFQlVHV0FSTkNG
TEFHUykgLWMgLW8gJEAgJDwKIApAQCAtMzE4LDEwICszNjcsMTIgQEAKIAkkKENDKSAkKE9QVENG
TEFHUykgJChHQ09QVENGTEFHUykgJChPUFRXQVJOQ0ZMQUdTKSAtYyAtbyAkQCAkPAogCiAjIyBO
ZWVkcyAtV25vLWZsb2F0LWVxdWFsIGZvciBSZWFsPE4+X2VxdWFsLCBpbmNsdWRlZCB2aWEgImMt
Y2h1bmsuaCIuCitieXRlY29kZS9pbnRlcnByZXQtcGljLm86IGJ5dGVjb2RlL2ludGVycHJldC5j
ICQoSEZJTEVTKSAkKEJZVEVDT0RFSEZJTEVTKQorCSQoQ0MpIC1JLi4vaW5jbHVkZSAkKFBJQ0NG
TEFHUykgJChQSUNXQVJOQ0ZMQUdTKSAtV25vLWZsb2F0LWVxdWFsIC1jIC1vICRAICQ8CisKIGJ5
dGVjb2RlL2ludGVycHJldC1nZGIubzogYnl0ZWNvZGUvaW50ZXJwcmV0LmMgJChIRklMRVMpICQo
QllURUNPREVIRklMRVMpCiAJJChDQykgLUkuLi9pbmNsdWRlICQoREVCVUdDRkxBR1MpICQoREVC
VUdXQVJOQ0ZMQUdTKSAtV25vLWZsb2F0LWVxdWFsIC1jIC1vICRAICQ8CiAKLSMjIE5lZWRzIC1X
bm8tZmxvYXQtZXF1YWwgZm9yIFJlYWw8Tj5fZXF1YWwsIGluY2x1ZGVkIHZpYSAiYy1jaHVuay5o
Ii4KIGJ5dGVjb2RlL2ludGVycHJldC5vOiBieXRlY29kZS9pbnRlcnByZXQuYyAkKEhGSUxFUykg
JChCWVRFQ09ERUhGSUxFUykKIAkkKENDKSAtSS4uL2luY2x1ZGUgJChPUFRDRkxBR1MpICQoR0NP
UFRDRkxBR1MpICQoT1BUV0FSTkNGTEFHUykgLVduby1mbG9hdC1lcXVhbCAtYyAtbyAkQCAkPAog
CkBAIC0zMjksMzEgKzM4MCwzNCBAQAogIyMgTmVlZHMgLVduby1mbG9hdC1lcXVhbCBmb3IgUmVh
bDxOPl9lcXVhbDsKICMjIG5lZWRzIC1Xbm8tZm9ybWF0LW5vbmxpdGVyYWxmb3IgRGF0ZV9zdHJm
VGltZTsKICMjIG5lZWRzIC1Xbm8tcmVkdW5kYW50LWRlY2xzIGZvciAnZXh0ZXJuIHN0cnVjdCBH
Q19zdGF0ZSBnY1N0YXRlJy4KK2Jhc2lzLXBpYy5vOiBiYXNpcy5jICQoQkFTSVNDRklMRVMpICQo
SEZJTEVTKQorCSQoQ0MpIC1JYmFzaXMgLUliYXNpcy9Xb3JkIC1JYmFzaXMvUmVhbCAkKFBJQ0NG
TEFHUykgJChQSUNXQVJOQ0ZMQUdTKSAtV25vLWZsb2F0LWVxdWFsIC1Xbm8tZm9ybWF0LW5vbmxp
dGVyYWwgLVduby1yZWR1bmRhbnQtZGVjbHMgLWMgLW8gJEAgJDwKIGJhc2lzLWdkYi5vOiBiYXNp
cy5jICQoQkFTSVNDRklMRVMpICQoSEZJTEVTKQogCSQoQ0MpIC1JYmFzaXMgLUliYXNpcy9Xb3Jk
IC1JYmFzaXMvUmVhbCAkKERFQlVHQ0ZMQUdTKSAkKERFQlVHV0FSTkNGTEFHUykgLVduby1mbG9h
dC1lcXVhbCAtV25vLWZvcm1hdC1ub25saXRlcmFsIC1Xbm8tcmVkdW5kYW50LWRlY2xzIC1jIC1v
ICRAICQ8CitiYXNpcy5vOiBiYXNpcy5jICQoQkFTSVNDRklMRVMpICQoSEZJTEVTKQorCSQoQ0Mp
IC1JYmFzaXMgLUliYXNpcy9Xb3JkIC1JYmFzaXMvUmVhbCAkKE9QVENGTEFHUykgJChPUFRXQVJO
Q0ZMQUdTKSAtV25vLWZsb2F0LWVxdWFsIC1Xbm8tZm9ybWF0LW5vbmxpdGVyYWwgLVduby1yZWR1
bmRhbnQtZGVjbHMgLWMgLW8gJEAgJDwKICMjIE5lZWRzIC1Xbm8tZmxvYXQtZXF1YWwgZm9yIFJl
YWw8Tj5fZXF1YWwuCitiYXNpcy9SZWFsL1JlYWwtcGljLm86IGJhc2lzL1JlYWwvUmVhbC5jICQo
SEZJTEVTKQorCSQoQ0MpICQoUElDQ0ZMQUdTKSAkKFBJQ1dBUk5DRkxBR1MpIC1Xbm8tZmxvYXQt
ZXF1YWwgLWMgLW8gJEAgJDwKIGJhc2lzL1JlYWwvUmVhbC1nZGIubzogYmFzaXMvUmVhbC9SZWFs
LmMgJChIRklMRVMpCisJJChDQykgJChERUJVR0NGTEFHUykgJChERUJVR1dBUk5DRkxBR1MpIC1X
bm8tZmxvYXQtZXF1YWwgLWMgLW8gJEAgJDwKK2Jhc2lzL1JlYWwvUmVhbC5vOiBiYXNpcy9SZWFs
L1JlYWwuYyAkKEhGSUxFUykKIAkkKENDKSAkKE9QVENGTEFHUykgJChPUFRXQVJOQ0ZMQUdTKSAt
V25vLWZsb2F0LWVxdWFsIC1jIC1vICRAICQ8CiAjIyBOZWVkcyAtV25vLWZvcm1hdC1ub25saXRl
cmFsZm9yIERhdGVfc3RyZlRpbWUuCitiYXNpcy9TeXN0ZW0vRGF0ZS1waWMubzogYmFzaXMvU3lz
dGVtL0RhdGUuYyAkKEhGSUxFUykKKwkkKENDKSAkKFBJQ0NGTEFHUykgJChQSUNXQVJOQ0ZMQUdT
KSAtV25vLWZvcm1hdC1ub25saXRlcmFsIC1jIC1vICRAICQ8CiBiYXNpcy9TeXN0ZW0vRGF0ZS1n
ZGIubzogYmFzaXMvU3lzdGVtL0RhdGUuYyAkKEhGSUxFUykKKwkkKENDKSAkKERFQlVHQ0ZMQUdT
KSAkKERFQlVHV0FSTkNGTEFHUykgLVduby1mb3JtYXQtbm9ubGl0ZXJhbCAtYyAtbyAkQCAkPAor
YmFzaXMvU3lzdGVtL0RhdGUubzogYmFzaXMvU3lzdGVtL0RhdGUuYyAkKEhGSUxFUykKIAkkKEND
KSAkKE9QVENGTEFHUykgJChPUFRXQVJOQ0ZMQUdTKSAtV25vLWZvcm1hdC1ub25saXRlcmFsIC1j
IC1vICRAICQ8CiAKKworJS1waWMubzogJS5jICQoSEZJTEVTKQorCSQoQ0MpICQoUElDQ0ZMQUdT
KSAkKFBJQ1dBUk5DRkxBR1MpIC1jIC1vICRAICQ8CisKICUtZ2RiLm86ICUuYyAkKEhGSUxFUykK
IAkkKENDKSAkKERFQlVHQ0ZMQUdTKSAkKERFQlVHV0FSTkNGTEFHUykgLWMgLW8gJEAgJDwKIAot
Ci0jIyBOZWVkcyAtV25vLWZsb2F0LWVxdWFsIGZvciBSZWFsPE4+X2VxdWFsOwotIyMgbmVlZHMg
LVduby1mb3JtYXQtbm9ubGl0ZXJhbCBmb3IgRGF0ZV9zdHJmVGltZTsKLSMjIG5lZWRzIC1Xbm8t
cmVkdW5kYW50LWRlY2xzIGZvciAnZXh0ZXJuIHN0cnVjdCBHQ19zdGF0ZSBnY1N0YXRlJy4KLWJh
c2lzLm86IGJhc2lzLmMgJChCQVNJU0NGSUxFUykgJChIRklMRVMpCi0JJChDQykgLUliYXNpcyAt
SWJhc2lzL1dvcmQgLUliYXNpcy9SZWFsICQoT1BUQ0ZMQUdTKSAkKE9QVFdBUk5DRkxBR1MpIC1X
bm8tZmxvYXQtZXF1YWwgLVduby1mb3JtYXQtbm9ubGl0ZXJhbCAtV25vLXJlZHVuZGFudC1kZWNs
cyAtYyAtbyAkQCAkPAotIyMgTmVlZHMgLVduby1mbG9hdC1lcXVhbCBmb3IgUmVhbDxOPl9lcXVh
bC4KLWJhc2lzL1JlYWwvUmVhbC5vOiBiYXNpcy9SZWFsL1JlYWwuYyAkKEhGSUxFUykKLQkkKEND
KSAkKE9QVENGTEFHUykgJChPUFRXQVJOQ0ZMQUdTKSAtV25vLWZsb2F0LWVxdWFsIC1jIC1vICRA
ICQ8Ci0jIyBOZWVkcyAtV25vLWZvcm1hdC1ub25saXRlcmFsZm9yIERhdGVfc3RyZlRpbWUuCi1i
YXNpcy9TeXN0ZW0vRGF0ZS5vOiBiYXNpcy9TeXN0ZW0vRGF0ZS5jICQoSEZJTEVTKQotCSQoQ0Mp
ICQoT1BUQ0ZMQUdTKSAkKE9QVFdBUk5DRkxBR1MpIC1Xbm8tZm9ybWF0LW5vbmxpdGVyYWwgLWMg
LW8gJEAgJDwKLQogJS5vOiAlLmMgJChIRklMRVMpCiAJJChDQykgJChPUFRDRkxBR1MpICQoT1BU
V0FSTkNGTEFHUykgLWMgLW8gJEAgJDwKIApJbmRleDogbWx0b24vY29udHJvbC9jb250cm9sLWZs
YWdzLnNpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBtbHRvbi9jb250cm9sL2NvbnRyb2wtZmxhZ3Muc2lnCShy
ZXZpc2lvbiA2NjcyKQorKysgbWx0b24vY29udHJvbC9jb250cm9sLWZsYWdzLnNpZwkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ1LDYgKzE0NSwyMCBAQAogCiAgICAgICB2YWwgZXhuSGlzdG9yeTogYm9v
bCByZWYKIAorICAgICAgc3RydWN0dXJlIEZvcm1hdDoKKyAgICAgICAgIHNpZworICAgICAgICAg
ICAgZGF0YXR5cGUgdCA9CisgICAgICAgICAgICAgICBBcmNoaXZlCisgICAgICAgICAgICAgfCBF
eGVjdXRhYmxlCisgICAgICAgICAgICAgfCBMaWJyYXJ5CisgICAgICAgICAgICB2YWwgYWxsOiB0
IGxpc3QKKyAgICAgICAgICAgIHZhbCB0b1N0cmluZzogdCAtPiBzdHJpbmcKKyAgICAgICAgIGVu
ZAorICAgICAgCisgICAgICBkYXRhdHlwZSBmb3JtYXQgPSBkYXRhdHlwZSBGb3JtYXQudAorCisg
ICAgICB2YWwgZm9ybWF0OiBGb3JtYXQudCByZWYKKwogICAgICAgKCogKikKICAgICAgIGRhdGF0
eXBlIGdjQ2hlY2sgPQogICAgICAgICAgTGltaXQKSW5kZXg6IG1sdG9uL2NvbnRyb2wvY29udHJv
bC1mbGFncy5zbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gbWx0b24vY29udHJvbC9jb250cm9sLWZsYWdzLnNt
bAkocmV2aXNpb24gNjY3MikKKysrIG1sdG9uL2NvbnRyb2wvY29udHJvbC1mbGFncy5zbWwJKHdv
cmtpbmcgY29weSkKQEAgLTYxNCw2ICs2MTQsMjcgQEAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdCA9IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICB0b1N0cmluZyA9
IEJvb2wudG9TdHJpbmd9CiAKK3N0cnVjdHVyZSBGb3JtYXQgPQorICAgc3RydWN0CisgICAgICBk
YXRhdHlwZSB0ID0KKyAgICAgICAgIEFyY2hpdmUKKyAgICAgICB8IEV4ZWN1dGFibGUKKyAgICAg
ICB8IExpYnJhcnkKKyAgICAgIAorICAgICAgdmFsIGFsbCA9IFtBcmNoaXZlLCBFeGVjdXRhYmxl
LCBMaWJyYXJ5XQorICAgICAgCisgICAgICB2YWwgdG9TdHJpbmc6IHQgLT4gc3RyaW5nID0KKyAg
ICAgICAgZm4gQXJjaGl2ZSA9PiAiYXJjaGl2ZSIKKyAgICAgICAgIHwgRXhlY3V0YWJsZSA9PiAi
ZXhlY3V0YWJsZSIKKyAgICAgICAgIHwgTGlicmFyeSA9PiAibGlicmFyeSIKKyAgIGVuZAorCitk
YXRhdHlwZSBmb3JtYXQgPSBkYXRhdHlwZSBGb3JtYXQudAorCit2YWwgZm9ybWF0ID0gY29udHJv
bCB7bmFtZSA9ICJnZW5lcmF0ZWQgb3V0cHV0IGZvcm1hdCIsCisgICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdCA9IEZvcm1hdC5FeGVjdXRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgIHRv
U3RyaW5nID0gRm9ybWF0LnRvU3RyaW5nfQorCiBzdHJ1Y3R1cmUgR2NDaGVjayA9CiAgICBzdHJ1
Y3QKICAgICAgIGRhdGF0eXBlIHQgPQpJbmRleDogbWx0b24vYXRvbXMvZmZpLmZ1bgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBtbHRvbi9hdG9tcy9mZmkuZnVuCShyZXZpc2lvbiA2NjcyKQorKysgbWx0b24vYXRv
bXMvZmZpLmZ1bgkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQAogCiBmdW4gZGVjbGFy
ZUV4cG9ydHMge3ByaW50fSA9CiAgICBsZXQKLSAgICAgIHZhbCBfID0gcHJpbnQgIlBvaW50ZXIg
TUx0b25fRkZJX29wQXJnc1Jlc1B0cjtcbiIKKyAgICAgIHZhbCBfID0gcHJpbnQgIklOVEVSTkFM
IFBvaW50ZXIgTUx0b25fRkZJX29wQXJnc1Jlc1B0cjtcbiIKICAgIGluCiAgICAgICBMaXN0LmZv
cmVhY2gKICAgICAgICghc3ltYm9scywgZm4ge25hbWUsIHR5fSA9PgpAQCAtNjksNyArNjksOCBA
QAogICAgICAgICAgICAgICAgICAgICAgICAgICAiKFBvaW50ZXIpKCYiLCB4LCAiKTtcbiJdKQog
ICAgICAgICAgICAgICBlbmQpCiAgICAgICAgICAgdmFsIGhlYWRlciA9Ci0gICAgICAgICAgICAg
Y29uY2F0IFtjYXNlIHJlcyBvZgorICAgICAgICAgICAgIGNvbmNhdCBbIkVYUE9SVEVEICIsCisg
ICAgICAgICAgICAgICAgICAgICBjYXNlIHJlcyBvZgogICAgICAgICAgICAgICAgICAgICAgICAg
Tk9ORSA9PiAidm9pZCIKICAgICAgICAgICAgICAgICAgICAgICB8IFNPTUUgdCA9PiBDVHlwZS50
b1N0cmluZyB0LAogICAgICAgICAgICAgICAgICAgICAgaWYgY29udmVudGlvbiA8PiBDb252ZW50
aW9uLkNkZWNsCkluZGV4OiBtbHRvbi9tYWluL2NvbXBpbGUuZnVuCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG1s
dG9uL21haW4vY29tcGlsZS5mdW4JKHJldmlzaW9uIDY2NzIpCisrKyBtbHRvbi9tYWluL2NvbXBp
bGUuZnVuCSh3b3JraW5nIGNvcHkpCkBAIC00MjQsNiArNDI0LDEwIEBACiAgICAgICAgICAgICAg
ICAgICAgdmFsIF8gPSBwcmludCAidHlwZWRlZiB2b2lkKiBDUG9pbnRlcjtcbiIKICAgICAgICAg
ICAgICAgICAgICB2YWwgXyA9IHByaW50ICJ0eXBlZGVmIFBvaW50ZXIgT2JqcHRyO1xuIgogICAg
ICAgICAgICAgICAgICAgIHZhbCBfID0gcHJpbnQgIlxuIgorICAgICAgICAgICAgICAgICAgIHZh
bCBfID0gCisgICAgICAgICAgICAgICAgICAgICAgaWYgIUNvbnRyb2wuZm9ybWF0ID0gQ29udHJv
bC5FeGVjdXRhYmxlIHRoZW4gKCkgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAocHJp
bnQgKCJ2b2lkICIgXiBGaWxlLmJhc2UgZiBeICJfb3BlbihpbnQgYXJnYywgY29uc3QgY2hhcioq
IGFyZ3YpO1xuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgO3ByaW50ICgidm9pZCAiIF4g
RmlsZS5iYXNlIGYgXiAiX2Nsb3NlKCk7XG4iKSkKICAgICAgICAgICAgICAgICAgICB2YWwgXyA9
IEZmaS5kZWNsYXJlSGVhZGVycyB7cHJpbnQgPSBwcmludH0KICAgICAgICAgICAgICAgICBpbgog
ICAgICAgICAgICAgICAgICAgICgpCkluZGV4OiBtbHRvbi9tYWluL2xvb2t1cC1jb25zdGFudC5m
dW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gbWx0b24vbWFpbi9sb29rdXAtY29uc3RhbnQuZnVuCShyZXZpc2lv
biA2NjcyKQorKysgbWx0b24vbWFpbi9sb29rdXAtY29uc3RhbnQuZnVuCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCB4ODZDb2RlZ2VuID0+IDIKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgYW1kNjRDb2RlZ2VuID0+IDMpKSwKICAgICAgICAoIk1M
dG9uX0ZGSV9udW1FeHBvcnRzIiwgZm4gKCkgPT4gaW50IChGZmkubnVtRXhwb3J0cyAoKSkpLAor
ICAgICAgICgiTUx0b25fUGxhdGZvcm1fRm9ybWF0IiwgZm4gKCkgPT4gY2FzZSAhZm9ybWF0IG9m
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmNoaXZlID0+
ICJhcmNoaXZlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
RXhlY3V0YWJsZSA9PiAiZXhlY3V0YWJsZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IExpYnJhcnkgPT4gImxpYnJhcnkiKSwKICAgICAgICAoIk1MdG9uX1By
b2ZpbGVfaXNPbiIsIGZuICgpID0+IGJvb2wgKGNhc2UgIXByb2ZpbGUgb2YKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2ZpbGVOb25lID0+IGZhbHNl
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcm9maWxl
Q2FsbFN0YWNrID0+IGZhbHNlCkluZGV4OiBtbHRvbi9tYWluL21haW4uZnVuCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIG1sdG9uL21haW4vbWFpbi5mdW4JKHJldmlzaW9uIDY2NzIpCisrKyBtbHRvbi9tYWluL21h
aW4uZnVuCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBACiAgICBlbmQKIAogdmFsIGdj
Yzogc3RyaW5nIHJlZiA9IHJlZiAiPHVuc2V0PiIKK3ZhbCBhcjogc3RyaW5nIHJlZiA9IHJlZiAi
YXIiCiB2YWwgYXNPcHRzOiB7b3B0OiBzdHJpbmcsIHByZWQ6IE9wdFByZWQudH0gbGlzdCByZWYg
PSByZWYgW10KIHZhbCBjY09wdHM6IHtvcHQ6IHN0cmluZywgcHJlZDogT3B0UHJlZC50fSBsaXN0
IHJlZiA9IHJlZiBbXQogdmFsIGxpbmtPcHRzOiB7b3B0OiBzdHJpbmcsIHByZWQ6IE9wdFByZWQu
dH0gbGlzdCByZWYgPSByZWYgW10KQEAgLTIwMyw2ICsyMDQsOCBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICI4IiA9PiBBbGlnbjgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCBfID0+IHVzYWdlIChjb25jYXQgWyJpbnZhbGlkIC1hbGlnbiBmbGFnOiAiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc10p
KSkpKSwKKyAgICAgICAoRXhwZXJ0LCAiYXIiLCAiIDxhcj4iLCAicGF0aCB0byBhciBleGVjdXRh
YmxlIiwKKyAgICAgICAgU3BhY2VTdHJpbmcgKGZuIHMgPT4gYXIgOj0gcykpLAogICAgICAgIChO
b3JtYWwsICJhcy1vcHQiLCAiIDxvcHQ+IiwgInBhc3Mgb3B0aW9uIHRvIGFzc2VtYmxlciIsCiAg
ICAgICAgIChTcGFjZVN0cmluZyBvIHRva2VuaXplT3B0KQogICAgICAgICAoZm4gcyA9PiBMaXN0
LnB1c2ggKGFzT3B0cywge29wdCA9IHMsIHByZWQgPSBPcHRQcmVkLlllc30pKSksCkBAIC0zNTMs
NiArMzU2LDIxIEBACiAgICAgICAgIGJvb2xSZWYgZXhwZXJ0KSwKICAgICAgICAoTm9ybWFsLCAi
ZXhwb3J0LWhlYWRlciIsICIgPGZpbGU+IiwgIndyaXRlIEMgaGVhZGVyIGZpbGUgZm9yIF9leHBv
cnQncyIsCiAgICAgICAgIFNwYWNlU3RyaW5nIChmbiBzID0+IGV4cG9ydEhlYWRlciA6PSBTT01F
IHMpKSwKKyAgICAgICAoRXhwZXJ0LCAiZm9ybWF0IiwgCisgICAgICAgIGNvbmNhdCBbIiB7IiwK
KyAgICAgICAgICAgICAgICBTdHJpbmcuY29uY2F0V2l0aAorICAgICAgICAgICAgICAgIChMaXN0
LmtlZXBBbGxNYXAKKyAgICAgICAgICAgICAgICAgIChDb250cm9sLkZvcm1hdC5hbGwsIGZuIGNn
ID0+IFNPTUUgKENvbnRyb2wuRm9ybWF0LnRvU3RyaW5nIGNnKSksCisgICAgICAgICAgICAgICAg
ICJ8IiksCisgICAgICAgICAgICAgICAgIn0iXSwKKyAgICAgICAgImdlbmVyYXRlZCBvdXRwdXQg
Zm9ybWF0IiwKKyAgICAgICAgU3BhY2VTdHJpbmcgKGZuIHMgPT4KKyAgICAgICAgICAgICAgICAg
ICAgIENvbnRyb2wuZm9ybWF0CisgICAgICAgICAgICAgICAgICAgICA6PSAoY2FzZSBMaXN0LnBl
ZWsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29udHJvbC5Gb3JtYXQuYWxsLCBm
biBjZyA9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBDb250cm9sLkZvcm1h
dC50b1N0cmluZyBjZykgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT01FIGNnID0+
IGNnCisgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTk9ORSA9PiB1c2FnZSAoY29uY2F0IFsi
aW52YWxpZCAtZm9ybWF0IGZsYWc6ICIsIHNdKSkpKSwKICAgICAgICAoRXhwZXJ0LCAiZ2MtY2hl
Y2siLCAiIHtsaW1pdHxmaXJzdHxldmVyeX0iLCAiZm9yY2UgR0NzIiwKICAgICAgICAgU3BhY2VT
dHJpbmcgKGZuIHMgPT4KICAgICAgICAgICAgICAgICAgICAgIGdjQ2hlY2sgOj0KQEAgLTg2OSw2
ICs4ODcsMTggQEAKICAgICAgICAgICAgICAgICAgICBmaWxlID0gcyBeICItIiBeIGdjY0ZpbGV9
CiAgICAgICAgICAgICAgICBlbmQgCiAgICAgICAgICAgfCBTZWxmID0+ICFnY2MKKyAgICAgIHZh
bCBhciA9IAorICAgICAgICAgY2FzZSB0YXJnZXQgb2YgCisgICAgICAgICAgICBDcm9zcyBzID0+
IAorICAgICAgICAgICAgICAgbGV0CisgICAgICAgICAgICAgICAgICB2YWwge2RpciA9IGFyRGly
LCBmaWxlID0gYXJGaWxlfSA9CisgICAgICAgICAgICAgICAgICAgICBPUy5QYXRoLnNwbGl0RGly
RmlsZSAoIWFyKQorICAgICAgICAgICAgICAgaW4gCisgICAgICAgICAgICAgICAgICBPUy5QYXRo
LmpvaW5EaXJGaWxlCisgICAgICAgICAgICAgICAgICB7ZGlyID0gYXJEaXIsCisgICAgICAgICAg
ICAgICAgICAgZmlsZSA9IHMgXiAiLSIgXiBhckZpbGV9CisgICAgICAgICAgICAgICBlbmQgCisg
ICAgICAgICAgfCBTZWxmID0+ICFhcgogCiAgICAgICBmdW4gYWRkVGFyZ2V0T3B0cyBvcHRzID0K
ICAgICAgICAgIExpc3QuZm9sZApAQCAtODg3LDggKzkxNywxMyBAQAogICAgICAgdmFsIGNjT3B0
cyA9IGFkZFRhcmdldE9wdHMgY2NPcHRzCiAgICAgICB2YWwgY2NPcHRzID0gY29uY2F0IFsiLUki
LCAhbGliVGFyZ2V0RGlyLCAiL2luY2x1ZGUiXSA6OiBjY09wdHMKICAgICAgIHZhbCBsaW5rT3B0
cyA9Ci0gICAgICAgICBMaXN0LmNvbmNhdCBbW2NvbmNhdCBbIi1MIiwgIWxpYlRhcmdldERpcl0s
Ci0gICAgICAgICAgICAgICAgICAgICAgIGlmICFkZWJ1Z1J1bnRpbWUgdGhlbiAiLWxtbHRvbi1n
ZGIiIGVsc2UgIi1sbWx0b24iXSwKKyAgICAgICAgIExpc3QuY29uY2F0IFtbY29uY2F0IFsiLUwi
LCAhbGliVGFyZ2V0RGlyXV0sCisgICAgICAgICAgICAgICAgICAgICAgaWYgIWZvcm1hdCA9IExp
YnJhcnkgdGhlbiAKKyAgICAgICAgICAgICAgICAgICAgICBbIi1sbWx0b24tcGljIiwgIi1sZ2R0
b2EtcGljIl0KKyAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICFkZWJ1Z1J1bnRpbWUgdGhl
biAKKyAgICAgICAgICAgICAgICAgICAgICBbIi1sbWx0b24tZ2RiIiwgIi1sZ2R0b2EtZ2RiIl0K
KyAgICAgICAgICAgICAgICAgICAgICBlbHNlIAorICAgICAgICAgICAgICAgICAgICAgIFsiLWxt
bHRvbiIsICItbGdkdG9hIl0sCiAgICAgICAgICAgICAgICAgICAgICAgYWRkVGFyZ2V0T3B0cyBs
aW5rT3B0c10KICAgICAgIHZhbCBfID0KICAgICAgICAgIGlmIG5vdCAoaGFzQ29kZWdlbiAoIWNv
ZGVnZW4pKQpAQCAtMTA2MSw2ICsxMDk2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlICFvdXRwdXQgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PTkUgPT4gc3VmZml4
IHN1ZgogICAgICAgICAgICAgICAgICAgICAgICAgIHwgU09NRSBmID0+IGYKKyAgICAgICAgICAg
ICAgICAgICAgIGZ1biBsaWJuYW1lICgpID0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
IWV4cG9ydEhlYWRlciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9ORSA9PiAibGli
IgorICAgICAgICAgICAgICAgICAgICAgICAgIHwgU09NRSBmID0+IEZpbGUuYmFzZSBmCiAgICAg
ICAgICAgICAgICAgICAgICB2YWwgXyA9CiAgICAgICAgICAgICAgICAgICAgICAgICBhdE1MdG9u
cyA6PQogICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yLmZyb21MaXN0CkBAIC0xMDgxLDE3
ICsxMTIwLDI4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdGFic1BsdXMgPT4gKFsi
LWdzdGFicysiLCAiLWcyIl0sICItV2EsLS1nc3RhYnMiKQogICAgICAgICAgICAgICAgICAgICAg
ZnVuIGNvbXBpbGVPIChpbnB1dHM6IEZpbGUudCBsaXN0KTogdW5pdCA9CiAgICAgICAgICAgICAg
ICAgICAgICAgICBsZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvdXRwdXQgPSBt
YXliZU91dCAiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG91dHB1dCA9IAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAhZm9ybWF0IG9mCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBcmNoaXZlID0+IG1heWJlT3V0ICIuYSIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IEV4ZWN1dGFibGUgPT4gbWF5YmVPdXQgIiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8IExpYnJhcnkgPT4gbWF5YmVPdXQgIi5zbyIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhbCBsaWJPcHRzID0gCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyAiLXNoYXJlZCIsICItV2wsLUJzeW1ib2xpYyIgXQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFsIF8gPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJh
Y2UgKFRvcCwgIkxpbmsiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZuICgpID0+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLnN5c3RlbQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoZ2NjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTGlzdC5jb25jYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWyIt
byIsIG91dHB1dF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICFkZWJ1
ZyB0aGVuIGdjY0RlYnVnIGVsc2UgW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlucHV0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua09wdHNd
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAhZm9ybWF0ID0gQXJjaGl2ZSAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIChGaWxlLnJlbW92ZSBvdXRwdXQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtTeXN0ZW0uc3lzdGVtCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFyLCBMaXN0LmNvbmNhdCBbWyJyY3Mi
LCBvdXRwdXRdLCBpbnB1dHNdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
IFN5c3RlbS5zeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnY2Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5jb25jYXQKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1siLW8iLCBvdXRwdXRdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgIWZvcm1hdCA9IExpYnJhcnkgdGhl
biBsaWJPcHRzIGVsc2UgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAhZGVidWcgdGhlbiBnY2NEZWJ1ZyBlbHNlIFtdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5wdXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGlua09wdHNdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBnY2Mgb24gQ3lnd2luIGFwcGVuZHMgLmV4ZSwg
d2hpY2ggSSBkb24ndCB3YW50LCBzbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbW92
ZSB0aGUgb3V0cHV0IGZpbGUgdG8gaXQncyByaWdodGZ1bCBwbGFjZS4KQEAgLTExMzIsMTEgKzEx
ODIsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgIGxldAogICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsIGRlYnVnU3dpdGNoZXMgPSBnY2NEZWJ1ZyBAIFsiLURBU1NFUlQ9MSJdCiAgICAgICAg
ICAgICAgICAgICAgICAgICB2YWwgb3V0cHV0ID0gbWtPdXRwdXRPIChjLCBpbnB1dCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgdmFsIF8gPQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLnN5c3RlbQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChnY2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuY29uY2F0
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbICItc3RkPWdudTk5IiwgIi1jIiBdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgIWZvcm1hdCA9IEV4ZWN1dGFibGUgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIFtdIGVsc2UgWyAiLURMSUJOQU1FPSIg
XiBsaWJuYW1lICgpIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAhZm9ybWF0
ID0gTGlicmFyeSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gWyAiLWZQSUMi
LCAiLURQSUMiIF0gZWxzZSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICFk
ZWJ1ZyB0aGVuIGRlYnVnU3dpdGNoZXMgZWxzZSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNjT3B0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiLW8iLCBvdXRw
dXRdLApJbmRleDogbWx0b24vY29kZWdlbi9jLWNvZGVnZW4vYy1jb2RlZ2VuLmZ1bgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBtbHRvbi9jb2RlZ2VuL2MtY29kZWdlbi9jLWNvZGVnZW4uZnVuCShyZXZpc2lvbiA2
NjcyKQorKysgbWx0b24vY29kZWdlbi9jLWNvZGVnZW4vYy1jb2RlZ2VuLmZ1bgkod29ya2luZyBj
b3B5KQpAQCAtNDAwLDcgKzQwMCwxMCBAQAogICAgICAgICAgICAgICAgIHwgQ29udHJvbC5Qcm9m
aWxlVGltZUZpZWxkID0+ICJQUk9GSUxFX1RJTUVfRklFTEQiCiAgICAgICAgICAgICAgICAgfCBD
b250cm9sLlByb2ZpbGVUaW1lTGFiZWwgPT4gIlBST0ZJTEVfVElNRV9MQUJFTCIKICAgICAgICAg
IGluIAotICAgICAgICAgICAgQy5jYWxsTm9TZW1pICgiTUx0b25NYWluIiwKKyAgICAgICAgICAg
IEMuY2FsbE5vU2VtaSAoY2FzZSAhQ29udHJvbC5mb3JtYXQgb2YKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ29udHJvbC5BcmNoaXZlID0+ICJNTHRvbkxpYnJhcnkiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IENvbnRyb2wuRXhlY3V0YWJsZSA9PiAiTUx0b25NYWluIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCBDb250cm9sLkxpYnJhcnkgPT4gIk1MdG9uTGlicmFy
eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtDLmludCBhbGlnbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hZ2ljLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQy5ieXRl
cyBtYXhGcmFtZVNpemUsCkBAIC00MTIsNyArNDE1LDcgQEAKICAgICAgICAgICAgIDsgcHJpbnQg
IlxuIgogICAgICAgICAgZW5kCiAgICAgICBmdW4gZGVjbGFyZU1haW4gKCkgPQotICAgICAgICAg
aWYgIUNvbnRyb2wuZW1pdE1haW4KKyAgICAgICAgIGlmICFDb250cm9sLmVtaXRNYWluIGFuZGFs
c28gIUNvbnRyb2wuZm9ybWF0ID0gQ29udHJvbC5FeGVjdXRhYmxlCiAgICAgICAgICAgICB0aGVu
IExpc3QuZm9yZWFjaAogICAgICAgICAgICAgICAgICAoWyJpbnQgbWFpbiAoaW50IGFyZ2MsIGNo
YXIqIGFyZ3ZbXSkgeyIsCiAgICAgICAgICAgICAgICAgICAgInJldHVybiAoTUx0b25fbWFpbiAo
YXJnYywgYXJndikpOyIsCkBAIC00NTMsNyArNDU2LDcgQEAKICAgICAgICAgIGVuZAogICAgaW4K
ICAgICAgIG91dHB1dEluY2x1ZGVzIChpbmNsdWRlcywgcHJpbnQpCi0gICAgICA7IGRlY2xhcmVH
bG9iYWxzICgiIiwgcHJpbnQpCisgICAgICA7IGRlY2xhcmVHbG9iYWxzICgiSU5URVJOQUwgIiwg
cHJpbnQpCiAgICAgICA7IGRlY2xhcmVFeHBvcnRzICgpCiAgICAgICA7IGRlY2xhcmVMb2FkU2F2
ZUdsb2JhbHMgKCkKICAgICAgIDsgZGVjbGFyZUludEluZnMgKCkKQEAgLTExOTUsNyArMTE5OCw3
IEBACiAgICAgICB2YWwge3ByaW50LCBkb25lLCAuLi59ID0gb3V0cHV0QyAoKQogICAgICAgZnVu
IHJlc3QgKCkgPQogICAgICAgICAgKExpc3QuZm9yZWFjaCAoY2h1bmtzLCBmbiBjID0+IGRlY2xh
cmVDaHVuayAoYywgcHJpbnQpKQotICAgICAgICAgIDsgcHJpbnQgInN0cnVjdCBjb250ICggKm5l
eHRDaHVua3MgW10pICgpID0geyIKKyAgICAgICAgICA7IHByaW50ICJJTlRFUk5BTCBzdHJ1Y3Qg
Y29udCAoICpuZXh0Q2h1bmtzIFtdKSAoKSA9IHsiCiAgICAgICAgICAgOyBWZWN0b3IuZm9yZWFj
aCAoZW50cnlMYWJlbHMsIGZuIGwgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwge2NodW5rTGFiZWwsIC4uLn0gPSBs
YWJlbEluZm8gbApJbmRleDogbWx0b24vY29kZWdlbi94ODYtY29kZWdlbi94ODYuZnVuCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIG1sdG9uL2NvZGVnZW4veDg2LWNvZGVnZW4veDg2LmZ1bgkocmV2aXNpb24gNjY3
MikKKysrIG1sdG9uL2NvZGVnZW4veDg2LWNvZGVnZW4veDg2LmZ1bgkod29ya2luZyBjb3B5KQpA
QCAtMzM1MCw2ICszMzUwLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiwiKSldCiAgICAgICAgICAgICAgfCBHbG9iYWwgbCAKICAgICAgICAgICAgICA9PiBzZXEgW3N0
ciAiLmdsb2JsICIsCisgICAgICAgICAgICAgICAgICAgICBMYWJlbC5sYXlvdXQgbCwKKyAgICAg
ICAgICAgICAgICAgICAgIHN0ciAiXG4uaGlkZGVuICIsCiAgICAgICAgICAgICAgICAgICAgICBM
YWJlbC5sYXlvdXQgbF0KICAgICAgICAgICAgICB8IEluZGlyZWN0U3ltYm9sIGwgCiAgICAgICAg
ICAgICAgPT4gc2VxIFtzdHIgIi5pbmRpcmVjdF9zeW1ib2wgIiwKSW5kZXg6IG1sdG9uL2NvZGVn
ZW4veDg2LWNvZGVnZW4veDg2LWNvZGVnZW4uZnVuCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG1sdG9uL2NvZGVn
ZW4veDg2LWNvZGVnZW4veDg2LWNvZGVnZW4uZnVuCShyZXZpc2lvbiA2NjcyKQorKysgbWx0b24v
Y29kZWdlbi94ODYtY29kZWdlbi94ODYtY29kZWdlbi5mdW4JKHdvcmtpbmcgY29weSkKQEAgLTE0
NSw3ICsxNDUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIEludC5tYXggKG1heCwgcmVn
TWF4IHQpKQogICAgICAgICAgICAgICAgICAgICAgdmFsIG0gPSBtICsgMQogICAgICAgICAgICAg
ICAgICAgaW4KLSAgICAgICAgICAgICAgICAgICAgIHByaW50IChjb25jYXQgW0NUeXBlLnRvU3Ry
aW5nIHQsIAorICAgICAgICAgICAgICAgICAgICAgcHJpbnQgKGNvbmNhdCBbIklOVEVSTkFMICIs
IENUeXBlLnRvU3RyaW5nIHQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiBsb2NhbCIsIENUeXBlLnRvU3RyaW5nIHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiWyIsIEludC50b1N0cmluZyBtLCAiXTtcbiJdKQogICAgICAgICAgICAgICAgICAg
ZW5kKQpJbmRleDogbWx0b24vY29kZWdlbi9hbWQ2NC1jb2RlZ2VuL2FtZDY0LmZ1bgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBtbHRvbi9jb2RlZ2VuL2FtZDY0LWNvZGVnZW4vYW1kNjQuZnVuCShyZXZpc2lvbiA2
NjcyKQorKysgbWx0b24vY29kZWdlbi9hbWQ2NC1jb2RlZ2VuL2FtZDY0LmZ1bgkod29ya2luZyBj
b3B5KQpAQCAtMzE0Myw2ICszMTQzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiwiKSldCiAgICAgICAgICAgICAgfCBHbG9iYWwgbCAKICAgICAgICAgICAgICA9PiBz
ZXEgW3N0ciAiLmdsb2JsICIsCisgICAgICAgICAgICAgICAgICAgICBMYWJlbC5sYXlvdXQgbCwK
KyAgICAgICAgICAgICAgICAgICAgIHN0ciAiXG4uaGlkZGVuICIsCiAgICAgICAgICAgICAgICAg
ICAgICBMYWJlbC5sYXlvdXQgbF0KICAgICAgICAgICAgICB8IEluZGlyZWN0U3ltYm9sIGwgCiAg
ICAgICAgICAgICAgPT4gc2VxIFtzdHIgIi5pbmRpcmVjdF9zeW1ib2wgIiwKSW5kZXg6IG1sdG9u
L2NvZGVnZW4vYW1kNjQtY29kZWdlbi9hbWQ2NC1jb2RlZ2VuLmZ1bgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBt
bHRvbi9jb2RlZ2VuL2FtZDY0LWNvZGVnZW4vYW1kNjQtY29kZWdlbi5mdW4JKHJldmlzaW9uIDY2
NzIpCisrKyBtbHRvbi9jb2RlZ2VuL2FtZDY0LWNvZGVnZW4vYW1kNjQtY29kZWdlbi5mdW4JKHdv
cmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAg
IEludC5tYXggKG1heCwgcmVnTWF4IHQpKQogICAgICAgICAgICAgICAgICAgICAgdmFsIG0gPSBt
ICsgMQogICAgICAgICAgICAgICAgICAgaW4KLSAgICAgICAgICAgICAgICAgICAgIHByaW50IChj
b25jYXQgW0NUeXBlLnRvU3RyaW5nIHQsIAorICAgICAgICAgICAgICAgICAgICAgcHJpbnQgKGNv
bmNhdCBbIklOVEVSTkFMICIsIENUeXBlLnRvU3RyaW5nIHQsIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiBsb2NhbCIsIENUeXBlLnRvU3RyaW5nIHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiWyIsIEludC50b1N0cmluZyBtLCAiXTtcbiJdKQog
ICAgICAgICAgICAgICAgICAgZW5kKQpJbmRleDogbWx0b24vY29kZWdlbi9ieXRlY29kZS9ieXRl
Y29kZS5mdW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gbWx0b24vY29kZWdlbi9ieXRlY29kZS9ieXRlY29kZS5m
dW4JKHJldmlzaW9uIDY2NzIpCisrKyBtbHRvbi9jb2RlZ2VuL2J5dGVjb2RlL2J5dGVjb2RlLmZ1
bgkod29ya2luZyBjb3B5KQpAQCAtODI1LDcgKzgyNSw3IEBACiAgICAgICB2YWwgKCkgPSBkb25l
ICgpCiAgICAgICB2YWwge2RvbmUsIHByaW50LCAuLi59ID0gb3V0cHV0QyAoKQogICAgICAgZnVu
IGRlY2xhcmVDYWxsQyAoKSA9Ci0gICAgICAgICAgKHByaW50ICJ2b2lkIE1MdG9uX2NhbGxDIChp
bnQgaSkge1xuIgorICAgICAgICAgIChwcmludCAiSU5URVJOQUwgdm9pZCBNTHRvbl9jYWxsQyAo
aW50IGkpIHtcbiIKICAgICAgICAgICAgOyBwcmludCAic3dpdGNoIChpKSB7XG4iCiAgICAgICAg
ICAgIDsgTGlzdC5mb3JlYWNoICghY2FsbENzLCBmbiB7ZGlzcGxheSwgaW5kZXh9ID0+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAocHJpbnQgKGNvbmNhdCBbImNhc2UgIiwgSW50LnRvU3Ry
aW5nIGluZGV4LCAiOlxuXHQiXSkKSW5kZXg6IGJhc2lzLWxpYnJhcnkvbWx0b24vcGxhdGZvcm0u
c2lnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIGJhc2lzLWxpYnJhcnkvbWx0b24vcGxhdGZvcm0uc2lnCShyZXZp
c2lvbiA2NjcyKQorKysgYmFzaXMtbGlicmFyeS9tbHRvbi9wbGF0Zm9ybS5zaWcJKHdvcmtpbmcg
Y29weSkKQEAgLTE3LDYgKzE3LDE1IEBACiAgICAgICAgICAgICB2YWwgdG9TdHJpbmc6IHQgLT4g
c3RyaW5nCiAgICAgICAgICBlbmQKIAorICAgICAgc3RydWN0dXJlIEZvcm1hdDoKKyAgICAgICAg
IHNpZworICAgICAgICAgICAgZGF0YXR5cGUgdCA9IEFyY2hpdmUgfCBFeGVjdXRhYmxlIHwgTGli
cmFyeQorCisgICAgICAgICAgICB2YWwgZnJvbVN0cmluZzogc3RyaW5nIC0+IHQgb3B0aW9uCisg
ICAgICAgICAgICB2YWwgaG9zdDogdAorICAgICAgICAgICAgdmFsIHRvU3RyaW5nOiB0IC0+IHN0
cmluZworICAgICAgICAgZW5kCisKICAgICAgIHN0cnVjdHVyZSBPUzoKICAgICAgICAgIHNpZwog
ICAgICAgICAgICAgZGF0YXR5cGUgdCA9IEFJWCB8IEN5Z3dpbiB8IERhcndpbiB8IEZyZWVCU0Qg
fCBIUFVYIApJbmRleDogYmFzaXMtbGlicmFyeS9tbHRvbi9wbGF0Zm9ybS5zbWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gYmFzaXMtbGlicmFyeS9tbHRvbi9wbGF0Zm9ybS5zbWwJKHJldmlzaW9uIDY2NzIpCisr
KyBiYXNpcy1saWJyYXJ5L21sdG9uL3BsYXRmb3JtLnNtbAkod29ya2luZyBjb3B5KQpAQCAtMzks
NiArMzksMjUgQEAKICAgICAgICAgICAgIGZ1biB0b1N0cmluZyBhID0gIzIgKHZhbE9mIChwZWVr
IChhbGwsIGZuIChhJywgXykgPT4gYSA9IGEnKSkpCiAgICAgICAgICBlbmQKIAorICAgICAgc3Ry
dWN0dXJlIEZvcm1hdCA9CisgICAgICAgICBzdHJ1Y3QKKyAgICAgICAgICAgIG9wZW4gRm9ybWF0
CisKKyAgICAgICAgICAgIHZhbCBhbGwgPSBbCisgICAgICAgICAgICAgICAgKEFyY2hpdmUsICJB
cmNoaXZlIiksCisgICAgICAgICAgICAgICAgKEV4ZWN1dGFibGUsICJFeGVjdXRhYmxlIiksCisg
ICAgICAgICAgICAgICAgKExpYnJhcnksICJMaWJyYXJ5IildCisKKyAgICAgICAgICAgIGZ1biBm
cm9tU3RyaW5nIHMgPQorICAgICAgICAgICAgICAgbGV0CisgICAgICAgICAgICAgICAgICB2YWwg
cyA9IFN0cmluZy50b0xvd2VyIHMKKyAgICAgICAgICAgICAgIGluCisgICAgICAgICAgICAgICAg
ICBvbWFwIChwZWVrIChhbGwsIGZuIChfLCBzJykgPT4gcyA9IFN0cmluZy50b0xvd2VyIHMnKSwg
IzEpCisgICAgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgZnVuIHRvU3RyaW5nIGEgPSAj
MiAodmFsT2YgKHBlZWsgKGFsbCwgZm4gKGEnLCBfKSA9PiBhID0gYScpKSkKKyAgICAgICAgIGVu
ZAorCiAgICAgICBzdHJ1Y3R1cmUgT1MgPQogICAgICAgICAgc3RydWN0CiAgICAgICAgICAgICBv
cGVuIE9TCkluZGV4OiBiYXNpcy1saWJyYXJ5L21sdG9uL21sdG9uLnNtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBiYXNpcy1saWJyYXJ5L21sdG9uL21sdG9uLnNtbAkocmV2aXNpb24gNjY3MikKKysrIGJhc2lz
LWxpYnJhcnkvbWx0b24vbWx0b24uc21sCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksOCArMTQ5LDI5
IEBACiBlbmQKIAogdmFsIF8gPSAKLSAgIChQcmltaXRpdmUuVG9wTGV2ZWwuc2V0SGFuZGxlciBN
THRvbkV4bi5kZWZhdWx0VG9wTGV2ZWxIYW5kbGVyCi0gICAgOyBQcmltaXRpdmUuVG9wTGV2ZWwu
c2V0U3VmZml4IEV4aXQuZGVmYXVsdFRvcExldmVsU3VmZml4KQorICAgbGV0CisgICAgICBvcGVu
IFByaW1pdGl2ZS5Ub3BMZXZlbAorICAgICAgb3BlbiBNTHRvblBsYXRmb3JtLkZvcm1hdAorICAg
ICAgCisgICAgICBmdW4gbGlicmFyeVN1ZmZpeCAoKSA9CisgICAgICAgICBsZXQKKyAgICAgICAg
ICAgIG9wZW4gQ2xlYW5lcgorICAgICAgICAgICAgdmFsICgpID0gTUx0b25UaHJlYWQubGlicmFy
eVJldHVyblRvQyAoKQorICAgICAgICAgICAgdmFsICgpID0gY2xlYW4gYXRFeGl0CisgICAgICAg
ICAgICB2YWwgKCkgPSBNTHRvblRocmVhZC5saWJyYXJ5UmV0dXJuVG9DICgpCisgICAgICAgICBp
bgorICAgICAgICAgICAgKCkKKyAgICAgICAgIGVuZAorICAgICAgCisgICAgICB2YWwgc3VmZml4
ID0gCisgICAgICAgICBjYXNlIGhvc3Qgb2YKKyAgICAgICAgICAgIEFyY2hpdmUgPT4gbGlicmFy
eVN1ZmZpeAorICAgICAgICAgIHwgRXhlY3V0YWJsZSA9PiBFeGl0LmRlZmF1bHRUb3BMZXZlbFN1
ZmZpeAorICAgICAgICAgIHwgTGlicmFyeSA9PiBsaWJyYXJ5U3VmZml4CisgICBpbgorICAgICAg
c2V0SGFuZGxlciBNTHRvbkV4bi5kZWZhdWx0VG9wTGV2ZWxIYW5kbGVyCisgICAgOyBzZXRTdWZm
aXggc3VmZml4CisgICBlbmQKIGVuZAogCiAoKiBQYXRjaCBPUy5GaWxlU3lzLnRtcE5hbWUgdG8g
dXNlIG1rc3RlbXAuICopCkluZGV4OiBiYXNpcy1saWJyYXJ5L21sdG9uL3RocmVhZC5zaWcKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gYmFzaXMtbGlicmFyeS9tbHRvbi90aHJlYWQuc2lnCShyZXZpc2lvbiA2Njcy
KQorKysgYmFzaXMtbGlicmFyeS9tbHRvbi90aHJlYWQuc2lnCSh3b3JraW5nIGNvcHkpCkBAIC02
Miw2ICs2Miw3IEBACiAgICAgICBpbmNsdWRlIE1MVE9OX1RIUkVBRAogCiAgICAgICB2YWwgYW1J
blNpZ25hbEhhbmRsZXI6IHVuaXQgLT4gYm9vbAorICAgICAgdmFsIGxpYnJhcnlSZXR1cm5Ub0M6
IHVuaXQgLT4gdW5pdAogICAgICAgdmFsIHJlZ2lzdGVyOiBpbnQgKiAoTUx0b25Qb2ludGVyLnQg
LT4gdW5pdCkgLT4gdW5pdAogICAgICAgdmFsIHNldFNpZ25hbEhhbmRsZXI6IChSdW5uYWJsZS50
IC0+IFJ1bm5hYmxlLnQpIC0+IHVuaXQKICAgICAgIHZhbCBzd2l0Y2hUb1NpZ25hbEhhbmRsZXI6
IHVuaXQgLT4gdW5pdApJbmRleDogYmFzaXMtbGlicmFyeS9tbHRvbi90aHJlYWQuc21sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGJhc2lzLWxpYnJhcnkvbWx0b24vdGhyZWFkLnNtbAkocmV2aXNpb24gNjY3MikK
KysrIGJhc2lzLWxpYnJhcnkvbWx0b24vdGhyZWFkLnNtbAkod29ya2luZyBjb3B5KQpAQCAtMjYz
LDQgKzI2MywxNSBAQAogICAgICAgZW5kCiBlbmQKIAorICAgKCogUmV0dXJuaW5nIHRvIEMgZW5k
cyB0aGUgbGlmZSBvZiBhIHRocmVhZCAoaXQgY2Fubm90IGJlIHJlc3VtZWQpLgorICAgICogU28g
d2UgY3JlYXRlIGEgdGhyZWFkLCBzYXZlIHRoZSBtYWluIHRocmVhZCBhbmQgc3dpdGNoIHRvIHRo
ZSBuZXcgdGhyZWFkLgorICAgICogVGhlIGxpYnJhcnkgbWFpbiBsb29wIHBvcHMgdGhlIHNhdmVk
IHRocmVhZCBhZnRlciBleGVjdXRpb24uCisgICAgKikKKyAgIGZ1biBsaWJyYXJ5UmV0dXJuVG9D
ICgpID0gCisgICAgICBsZXQKKyAgICAgICAgIHZhbCBkb29tZWQgPSB0b1ByaW1pdGl2ZSAobmV3
IFByaW0ucmV0dXJuVG9DKQorICAgICAgICAgdmFsICgpID0gUHJpbS5zZXRTYXZlZCAoZ2NTdGF0
ZSwgUHJpbS5jdXJyZW50IGdjU3RhdGUpCisgICAgICBpbgorICAgICAgICAgUHJpbS5zd2l0Y2hU
byBkb29tZWQKKyAgICAgIGVuZAogZW5kCkluZGV4OiBiYXNpcy1saWJyYXJ5L3ByaW1pdGl2ZS9w
cmltLW1sdG9uLnNtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiYXNpcy1saWJyYXJ5L3ByaW1pdGl2ZS9wcmlt
LW1sdG9uLnNtbAkocmV2aXNpb24gNjY3MikKKysrIGJhc2lzLWxpYnJhcnkvcHJpbWl0aXZlL3By
aW0tbWx0b24uc21sCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsNiArMTgzLDIxIEBACiAgICAgICAg
ICAgICB2YWwgaG9zdElzQmlnRW5kaWFuID0gX2NvbnN0ICJNTHRvbl9QbGF0Zm9ybV9BcmNoX2Jp
Z2VuZGlhbiI6IGJvb2w7CiAgICAgICAgICBlbmQKIAorICAgICAgc3RydWN0dXJlIEZvcm1hdCA9
CisgICAgICAgICBzdHJ1Y3QKKyAgICAgICAgICAgIGRhdGF0eXBlIHQgPQorICAgICAgICAgICAg
ICAgQXJjaGl2ZQorICAgICAgICAgICAgIHwgRXhlY3V0YWJsZQorICAgICAgICAgICAgIHwgTGli
cmFyeQorCisgICAgICAgICAgICB2YWwgaG9zdDogdCA9CisgICAgICAgICAgICAgICBjYXNlIF9i
dWlsZF9jb25zdCAiTUx0b25fUGxhdGZvcm1fRm9ybWF0IjogU3RyaW5nOC5zdHJpbmc7IG9mCisg
ICAgICAgICAgICAgICAgICAiYXJjaGl2ZSIgPT4gQXJjaGl2ZQorICAgICAgICAgICAgICAgIHwg
ImV4ZWN1dGFibGUiID0+IEV4ZWN1dGFibGUKKyAgICAgICAgICAgICAgICB8ICJsaWJyYXJ5IiA9
PiBMaWJyYXJ5CisgICAgICAgICAgICAgICAgfCBfID0+IHJhaXNlIFByaW1pdGl2ZS5FeG4uRmFp
bDggInN0cmFuZ2UgTUx0b25fUGxhdGZvcm1fRm9ybWF0IgorICAgICAgICAgZW5kCisKICAgICAg
IHN0cnVjdHVyZSBPUyA9CiAgICAgICAgICBzdHJ1Y3QKICAgICAgICAgICAgIGRhdGF0eXBlIHQg
PQpJbmRleDogZG9jL2NoYW5nZWxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb2MvY2hhbmdlbG9nCShyZXZp
c2lvbiA2NjcyKQorKysgZG9jL2NoYW5nZWxvZwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDE1
IEBACiBIZXJlIGFyZSB0aGUgY2hhbmdlcyBmcm9tIHZlcnNpb24gMjAwNzA4MjYgdG8gdmVyc2lv
biBZWVlZTU1ERC4KIAorKiAyMDA4LTA3LTI0CisgICAtIEFkZGVkIHN1cHBvcnQgZm9yIGNvbXBp
bGluZyB0byBhIEMgbGlicmFyeS4gVGhlIHJlbGV2YW50IG5ldyBjb21waWxlciAKKyAgICAgb3B0
aW9ucyBhcmUgJy1hcicgYW5kICctZm9ybWF0Jy4gTGlicmFyaWVzIGFyZSBuYW1lZCBiYXNlZCBv
biB0aGUgCisgICAgIG5hbWUgb2YgdGhlIC1leHBvcnQtaGVhZGVyIGZpbGUuIExpYnJhcmllcyBo
YXZlIHR3byBleHRyYSBtZXRob2RzOgorICAgICAgICogTkFNRV9vcGVuKGFyZ2MsIGFyZ3YpIGlu
aXRpYWxpemVzIHRoZSBsaWJyYXJ5IGFuZCBydW5zIHRoZSBTTUwgY29kZQorICAgICAgICAgdW50
aWwgaXQgcmVhY2hlcyB0aGUgZW5kIG9mIHRoZSBwcm9ncmFtLiBJZiB0aGUgU01MIGNvZGUgZXhp
dHMgb3IKKyAgICAgICAgIHJhaXNlcyBhbiB1bmNhdWdodCBleGNlcHRpb24sIHRoZSBlbnRpcmUg
cHJvZ3JhbSB3aWxsIHRlcm1pbmF0ZS4KKyAgICAgICAqIE5BTUVfY2xvc2UoKSB3aWxsIGV4ZWN1
dGUgYW55IHJlZ2lzdGVyZWQgYXRFeGl0IGZ1bmN0aW9ucywgYW55CisgICAgICAgICBvdXRzdGFu
ZGluZyBmaW5hbGl6ZXJzLCBhbmQgZnJlZXMgdGhlIE1MIGhlYXAuCisgICAgIAogKiAyMDA4LTA3
LTE2CiAgICAtIEZpeGVkIGJ1ZyBpbiB0aGUgbmFtZSBtYW5nbGluZyBvZiBfaW1wb3J0LWVkIGZ1
bmN0aW9ucyB3aXRoIHRoZQogICAgICBzdGRjYWxsIGNvbnZlbnRpb24uCkluZGV4OiBiaW4vbWx0
b24tc2NyaXB0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbi9tbHRvbi1zY3JpcHQJKHJldmlzaW9uIDY2NzIp
CisrKyBiaW4vbWx0b24tc2NyaXB0CSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBACiAg
ICAgICAgIC1jYy1vcHQtcXVvdGUgIi1JJGxpYi9pbmNsdWRlIiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICAgICAgLWNjLW9wdCAnLU8xJyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgICAgICAtY2Mtb3B0ICctZm5vLXN0cmljdC1hbGlhc2lu
ZyAtZm9taXQtZnJhbWUtcG9pbnRlciAtdycgICBcCi0gICAgICAgIC1saW5rLW9wdCAnLWxnZHRv
YSAtbG0gLWxnbXAnICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLWxpbmst
b3B0ICctbG0gLWxnbXAnICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgLW1s
Yi1wYXRoLW1hcCAiJGxpYi9tbGItcGF0aC1tYXAiICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgICAgICAtdGFyZ2V0LWFzLW9wdCBhbWQ2NCAnLW02NCcgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgICAgIC10YXJnZXQtY2Mtb3B0IGFtZDY0ICctbTY0JyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwK
------=_Part_78053_9266173.1216898066346
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
MLton mailing list
MLton@mlton.org
http://mlton.org/mailman/listinfo/mlton
------=_Part_78053_9266173.1216898066346--


