From owner-freebsd-threads@FreeBSD.ORG Sun Sep 26 17:11:53 2010 Return-Path: Delivered-To: freebsd-threads@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3C71C1065670; Sun, 26 Sep 2010 17:11:53 +0000 (UTC) (envelope-from arundel@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 135AA8FC0A; Sun, 26 Sep 2010 17:11:53 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id o8QHBqjK064736; Sun, 26 Sep 2010 17:11:52 GMT (envelope-from arundel@freefall.freebsd.org) Received: (from arundel@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id o8QHBqSR064732; Sun, 26 Sep 2010 17:11:52 GMT (envelope-from arundel) Date: Sun, 26 Sep 2010 17:11:52 GMT Message-Id: <201009261711.o8QHBqSR064732@freefall.freebsd.org> To: arundel@FreeBSD.org, freebsd-bugs@FreeBSD.org, freebsd-threads@FreeBSD.org From: arundel@FreeBSD.org Cc: Subject: Re: misc/150959: [libc] Stub pthread_once in libc should call _libc_once X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Sep 2010 17:11:53 -0000 Old Synopsis: Stub pthread_once in libc should call _libc_once New Synopsis: [libc] Stub pthread_once in libc should call _libc_once Responsible-Changed-From-To: freebsd-bugs->freebsd-threads Responsible-Changed-By: arundel Responsible-Changed-When: Sun Sep 26 17:08:28 UTC 2010 Responsible-Changed-Why: Over to maintainer(s). http://www.freebsd.org/cgi/query-pr.cgi?pr=150959 From owner-freebsd-threads@FreeBSD.ORG Mon Sep 27 11:07:05 2010 Return-Path: Delivered-To: freebsd-threads@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 352B010656CD for ; Mon, 27 Sep 2010 11:07:05 +0000 (UTC) (envelope-from owner-bugmaster@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 1ABA88FC17 for ; Mon, 27 Sep 2010 11:07:05 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id o8RB74Gj023623 for ; Mon, 27 Sep 2010 11:07:04 GMT (envelope-from owner-bugmaster@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id o8RB74UN023619 for freebsd-threads@FreeBSD.org; Mon, 27 Sep 2010 11:07:04 GMT (envelope-from owner-bugmaster@FreeBSD.org) Date: Mon, 27 Sep 2010 11:07:04 GMT Message-Id: <201009271107.o8RB74UN023619@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: gnats set sender to owner-bugmaster@FreeBSD.org using -f From: FreeBSD bugmaster To: freebsd-threads@FreeBSD.org Cc: Subject: Current problem reports assigned to freebsd-threads@FreeBSD.org X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Sep 2010 11:07:05 -0000 Note: to view an individual PR, use: http://www.freebsd.org/cgi/query-pr.cgi?pr=(number). The following is a listing of current problems submitted by FreeBSD users. These represent problem reports covering all versions including experimental development code and obsolete releases. S Tracker Resp. Description -------------------------------------------------------------------------------- o threa/150959 threads [libc] Stub pthread_once in libc should call _libc_onc o threa/150889 threads PTHREAD_MUTEX_INITIALIZER + pthread_mutex_destroy() == o threa/149366 threads pthread_cleanup_pop never runs the configured routine o threa/148515 threads Memory / syslog strangeness in FreeBSD 8.x ( possible o threa/141721 threads rtprio(1): (id|rt)prio priority resets when new thread o threa/136345 threads Recursive read rwlocks in thread A cause deadlock with o threa/135673 threads databases/mysql50-server - MySQL query lock-ups on 7.2 o threa/133734 threads 32 bit libthr failing pthread_create() o threa/128922 threads threads hang with xorg running o threa/127225 threads bug in lib/libthr/thread/thr_init.c o threa/122923 threads 'nice' does not prevent background process from steali o threa/121336 threads lang/neko threading ok on UP, broken on SMP (FreeBSD 7 o threa/116668 threads can no longer use jdk15 with libthr on -stable SMP o threa/116181 threads /dev/io-related io access permissions are not propagat o threa/115211 threads pthread_atfork misbehaves in initial thread o threa/110636 threads [request] gdb(1): using gdb with multi thread applicat o threa/110306 threads apache 2.0 segmentation violation when calling gethost o threa/103975 threads Implicit loading/unloading of libpthread.so may crash o threa/101323 threads [patch] fork(2) in threaded programs broken. s threa/100815 threads FBSD 5.5 broke nanosleep in libc_r s threa/94467 threads send(), sendto() and sendmsg() are not correct in libc s threa/84483 threads problems with devel/nspr and -lc_r on 4.x o threa/80992 threads abort() sometimes not caught by gdb depending on threa o threa/79887 threads [patch] freopen() isn't thread-safe o threa/79683 threads svctcp_create() fails if multiple threads call at the s threa/76694 threads fork cause hang in dup()/close() function in child (-l s threa/76690 threads fork hang in child for -lc_r s threa/69020 threads pthreads library leaks _gc_mutex s threa/49087 threads Signals lost in programs linked with libc_r s threa/48856 threads Setting SIGCHLD to SIG_IGN still leaves zombies under s threa/40671 threads pthread_cancel doesn't remove thread from condition qu s threa/39922 threads [threads] [patch] Threaded applications executed with s threa/37676 threads libc_r: msgsnd(), msgrcv(), pread(), pwrite() need wra s threa/34536 threads accept() blocks other threads s threa/32295 threads [libc_r] [patch] pthread(3) dont dequeue signals s threa/30464 threads pthread mutex attributes -- pshared s threa/24632 threads libc_r delicate deviation from libc in handling SIGCHL s threa/24472 threads libc_r does not honor SO_SNDTIMEO/SO_RCVTIMEO socket o 38 problems total. From owner-freebsd-threads@FreeBSD.ORG Mon Sep 27 15:49:49 2010 Return-Path: Delivered-To: freebsd-threads@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EFC3E1065714; Mon, 27 Sep 2010 15:49:49 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id C01988FC19; Mon, 27 Sep 2010 15:49:49 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id 6CED346C0C; Mon, 27 Sep 2010 11:49:49 -0400 (EDT) Received: from jhbbsd.localnet (smtp.hudson-trading.com [209.249.190.9]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 9F3AD8A050; Mon, 27 Sep 2010 11:49:47 -0400 (EDT) From: John Baldwin To: freebsd-threads@freebsd.org Date: Mon, 27 Sep 2010 11:46:27 -0400 User-Agent: KMail/1.13.5 (FreeBSD/7.3-CBSD-20100819; KDE/4.4.5; amd64; ; ) References: <201009261711.o8QHBqSR064732@freefall.freebsd.org> In-Reply-To: <201009261711.o8QHBqSR064732@freefall.freebsd.org> MIME-Version: 1.0 Message-Id: <201009271146.28000.jhb@freebsd.org> Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (bigwig.baldwin.cx); Mon, 27 Sep 2010 11:49:48 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.95.1 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-2.6 required=4.2 tests=AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bigwig.baldwin.cx Cc: arundel@freebsd.org, freebsd-bugs@freebsd.org Subject: Re: misc/150959: [libc] Stub pthread_once in libc should call _libc_once X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Sep 2010 15:49:50 -0000 On Sunday, September 26, 2010 1:11:52 pm arundel@freebsd.org wrote: > Old Synopsis: Stub pthread_once in libc should call _libc_once > New Synopsis: [libc] Stub pthread_once in libc should call _libc_once > > Responsible-Changed-From-To: freebsd-bugs->freebsd-threads > Responsible-Changed-By: arundel > Responsible-Changed-When: Sun Sep 26 17:08:28 UTC 2010 > Responsible-Changed-Why: > Over to maintainer(s). As you note in the history, libstdc++ depends on this behavior, so it is not likely to be changed. Possibly changing the stub to always return an error would be ok, except that POSIX defines no errors for pthread_once(). Note that this behavior also matches Solaris apparently: (From /usr/include/c++/4.2/bits/gthr-default.h) #if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK /* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if -pthreads is not specified. The functions are dummies and most return an error value. However pthread_once returns 0 without invoking the routine it is passed so we cannot pretend that the interface is active if -pthreads is not specified. On Solaris 2.5.1, the interface is not exposed at all so we need to play the usual game with weak symbols. On Solaris 10 and up, a working interface is always exposed. On FreeBSD 6 and later, libc also exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, which means the alternate __gthread_active_p below cannot be used there. */ #if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) To be honest, I would favor libc exporting '__isthreaded' in some fashion so that libstdc++ could depend on that instead. I think the symbol is already public so that libthr can set it. -- John Baldwin From owner-freebsd-threads@FreeBSD.ORG Mon Sep 27 21:20:05 2010 Return-Path: Delivered-To: freebsd-threads@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 021E9106564A for ; Mon, 27 Sep 2010 21:20:05 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id E41D28FC08 for ; Mon, 27 Sep 2010 21:20:04 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id o8RLK4xW061138 for ; Mon, 27 Sep 2010 21:20:04 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id o8RLK43n061137; Mon, 27 Sep 2010 21:20:04 GMT (envelope-from gnats) Date: Mon, 27 Sep 2010 21:20:04 GMT Message-Id: <201009272120.o8RLK43n061137@freefall.freebsd.org> To: freebsd-threads@FreeBSD.org From: Tom Judge Cc: Subject: Re: threads/135673: databases/mysql50-server - MySQL query lock-ups on 7.2-RELEASE amd64 X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Tom Judge List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Sep 2010 21:20:05 -0000 The following reply was made to PR threads/135673; it has been noted by GNATS. From: Tom Judge To: bug-followup@freebsd.org, freebsd-bugs@desert.net Cc: Subject: Re: threads/135673: databases/mysql50-server - MySQL query lock-ups on 7.2-RELEASE amd64 Date: Mon, 27 Sep 2010 09:19:06 -0500 --0016367d5c102e250904913e7cc1 Content-Type: multipart/alternative; boundary=0016367d5c102e24fb04913e7cbf --0016367d5c102e24fb04913e7cbf Content-Type: text/plain; charset=ISO-8859-1 Hi, Just following up to this issue. We are seeing this on 7.1 amd64 running MySQL 5.0.51a also. The bug seems to have been introduced when userland was switched to the rwlock implementation on the stable/7 branch. We have a easy and repeatable way to trigger this issue and are willing to test and changes people suggest. At the moment we have a libthr with the patch metioned in the PR running and can still trigger the bug. We have a dedicated test host with debugging symbols installed so can provide any additional information upon request. I have attached a thread listing and stack trace for all the threads in a locked up server. I will be trying r*196913*at some point today to see if this fixes the issue. Thanks Tom -- Senior Network Architect Mintel International Ltd. TJU13-ARIN Mintel International Group Ltd | 18-19 Long Lane | London EC1A 9PL UK Registered in England: Number 1475918. | VAT Number: GB 232 9342 72 Contact details for our other offices can be found at http://www.mintel.com/office-locations. This email and any attachments may include content that is confidential, privileged, or otherwise protected under applicable law. Unauthorised disclosure, copying, distribution, or use of the contents is prohibited and may be unlawful. If you have received this email in error, including without appropriate authorisation, then please reply to the sender about the error and delete this email and any attachments. --0016367d5c102e24fb04913e7cbf Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hi,

Just following up to this issue.=A0 We are seeing this on 7.1 am= d64 running MySQL 5.0.51a also.

The bug seems to have been introduce= d when userland was switched to the rwlock implementation on the stable/7 b= ranch.

We have a easy and repeatable way to trigger this issue and are willing= to test and changes people suggest.

At the moment we have a libthr = with the patch metioned in the PR running and can still trigger the bug.
We have a dedicated test host with debugging symbols installed so can p= rovide any additional information upon request.


I have attached = a thread listing and stack trace for all the threads in a locked up server.= =A0 I will be trying r196913 at some point t= oday to see if this fixes the issue.

Thanks

Tom

--
Senior Network Architect<= br>Mintel International Ltd.
TJU13-ARIN

 
 Mintel International Group Ltd | 18-19 Long Lane | London EC1A 9PL UK
 Registered in England: Number 1475918. | VAT Number: GB 232 9342 72
 
 Contact details for our other offices can be found at http://www.mintel.c=
 om/office-locations.
 
 This email and any attachments may include content that is confidential, =
 privileged, or otherwise protected
 under applicable law. Unauthorised disclosure, copying, distribution, or =
 use of the contents is prohibited =
 
 and may be unlawful. If you have received this email in error, including =
 without appropriate authorisation, =
 
 then please reply to the sender about the error and delete this email and=
  any attachments.
 =0D
 --0016367d5c102e24fb04913e7cbf--
 --0016367d5c102e250904913e7cc1
 Content-Type: text/plain; charset=GB2312; name="stacks.txt"
 Content-Disposition: attachment; filename="stacks.txt"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_gelfafzu0
 
 KGdkYikgaW5mbyB0aHJlYWRzCiAgMjMgVGhyZWFkIDB4ODAxNzAyMTgwIChMV1AgMTAwMjQ3KSAg
 MHgwMDAwMDAwODAxNTJjMDNjIGluIHNlbGVjdCAoKSBhdCBzZWxlY3QuUzoyCiAgMjIgVGhyZWFk
 IDB4ODAxNzAyNDgwIChMV1AgMTAwMDkyKSAgMHgwMDAwMDAwODAxMzQyNjdjIGluIF91bXR4X29w
 X2VyciAoKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL2FyY2gvYW1kNjQvYW1kNjQvX3VtdHhfb3Bf
 ZXJyLlM6MzcKICAyMSBUaHJlYWQgMHg4MDE3MDI2MDAgKExXUCAxMDAxMzMpICAweDAwMDAwMDA4
 MDEzNDI2N2MgaW4gX3VtdHhfb3BfZXJyICgpIGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIvYXJjaC9h
 bWQ2NC9hbWQ2NC9fdW10eF9vcF9lcnIuUzozNwogIDIwIFRocmVhZCAweDgwMTcwMjc4MCAoTFdQ
 IDEwMDE2MSkgIDB4MDAwMDAwMDgwMTM0MjY3YyBpbiBfdW10eF9vcF9lcnIgKCkgYXQgL3Vzci9z
 cmMvbGliL2xpYnRoci9hcmNoL2FtZDY0L2FtZDY0L191bXR4X29wX2Vyci5TOjM3CiAgMTkgVGhy
 ZWFkIDB4ODAxNzAyOTAwIChMV1AgMTAwMTYyKSAgMHgwMDAwMDAwODAxMzQyNjdjIGluIF91bXR4
 X29wX2VyciAoKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL2FyY2gvYW1kNjQvYW1kNjQvX3VtdHhf
 b3BfZXJyLlM6MzcKICAxOCBUaHJlYWQgMHg4MDE3MDJjMDAgKExXUCAxMDAxNjQpICAweDAwMDAw
 MDA4MDE1MmMwM2MgaW4gc2VsZWN0ICgpIGF0IHNlbGVjdC5TOjIKICAxNyBUaHJlYWQgMHg4MDE3
 MDJkODAgKExXUCAxMDAxNjMpICAweDAwMDAwMDA4MDE1MmMwM2MgaW4gc2VsZWN0ICgpIGF0IHNl
 bGVjdC5TOjIKICAxNiBUaHJlYWQgMHg4MDE3MDJmMDAgKExXUCAxMDAxNjUpICAweDAwMDAwMDA4
 MDEzNDI2N2MgaW4gX3VtdHhfb3BfZXJyICgpIGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIvYXJjaC9h
 bWQ2NC9hbWQ2NC9fdW10eF9vcF9lcnIuUzozNwogIDE1IFRocmVhZCAweDgwMTcwMzA4MCAoTFdQ
 IDEwMDE2NikgIDB4MDAwMDAwMDgwMTQ5OThlYyBpbiBzaWd3YWl0ICgpIGF0IHNpZ3dhaXQuUzoy
 CiAgMTQgVGhyZWFkIDB4ODAxNzA1NjAwIChMV1AgMTAwMTk4KSAgMHgwMDAwMDAwODAxNTJjMGJj
 IGluIHJlYWQgKCkgYXQgcmVhZC5TOjIKICAxMyBUaHJlYWQgMHg4MDE3MDUxODAgKExXUCAxMDAy
 NTkpICAweDAwMDAwMDA4MDEzNDI2N2MgaW4gX3VtdHhfb3BfZXJyICgpIGF0IC91c3Ivc3JjL2xp
 Yi9saWJ0aHIvYXJjaC9hbWQ2NC9hbWQ2NC9fdW10eF9vcF9lcnIuUzozNwogIDEyIFRocmVhZCAw
 eDgwMTcwNGQwMCAoTFdQIDEwMDI4MCkgIDB4MDAwMDAwMDgwMTM0MjY3YyBpbiBfdW10eF9vcF9l
 cnIgKCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci9hcmNoL2FtZDY0L2FtZDY0L191bXR4X29wX2Vy
 ci5TOjM3CiAgMTEgVGhyZWFkIDB4ODAxNzA0YTAwIChMV1AgMTAwMjgxKSAgMHgwMDAwMDAwODAx
 MzQyNjdjIGluIF91bXR4X29wX2VyciAoKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL2FyY2gvYW1k
 NjQvYW1kNjQvX3VtdHhfb3BfZXJyLlM6MzcKICAxMCBUaHJlYWQgMHg4MDE3MDM5ODAgKExXUCAx
 MDAyODIpICAweDAwMDAwMDA4MDEzNDI2N2MgaW4gX3VtdHhfb3BfZXJyICgpIGF0IC91c3Ivc3Jj
 L2xpYi9saWJ0aHIvYXJjaC9hbWQ2NC9hbWQ2NC9fdW10eF9vcF9lcnIuUzozNwogIDkgVGhyZWFk
 IDB4ODAxNzAzZTAwIChMV1AgMTAwMjgzKSAgMHgwMDAwMDAwODAxMzQyNjdjIGluIF91bXR4X29w
 X2VyciAoKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL2FyY2gvYW1kNjQvYW1kNjQvX3VtdHhfb3Bf
 ZXJyLlM6MzcKICA4IFRocmVhZCAweDgwMTcwNDg4MCAoTFdQIDEwMDI4NCkgIDB4MDAwMDAwMDgw
 MTM0MjY3YyBpbiBfdW10eF9vcF9lcnIgKCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci9hcmNoL2Ft
 ZDY0L2FtZDY0L191bXR4X29wX2Vyci5TOjM3CiAgNyBUaHJlYWQgMHg4MDE3MDQ3MDAgKExXUCAx
 MDAyODUpICAweDAwMDAwMDA4MDEzNDI2N2MgaW4gX3VtdHhfb3BfZXJyICgpIGF0IC91c3Ivc3Jj
 L2xpYi9saWJ0aHIvYXJjaC9hbWQ2NC9hbWQ2NC9fdW10eF9vcF9lcnIuUzozNwogIDYgVGhyZWFk
 IDB4ODAxNzAzNTAwIChMV1AgMTAwMjg2KSAgMHgwMDAwMDAwODAxMzQyNjdjIGluIF91bXR4X29w
 X2VyciAoKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL2FyY2gvYW1kNjQvYW1kNjQvX3VtdHhfb3Bf
 ZXJyLlM6MzcKKiA1IFRocmVhZCAweDgwMTcwNTAwMCAoTFdQIDEwMDI4NykgIDB4MDAwMDAwMDgw
 MTM0MjY3YyBpbiBfdW10eF9vcF9lcnIgKCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci9hcmNoL2Ft
 ZDY0L2FtZDY0L191bXR4X29wX2Vyci5TOjM3CiAgNCBUaHJlYWQgMHg4MDE3MDU0ODAgKExXUCAx
 MDAyODgpICAweDAwMDAwMDA4MDEzNDI2N2MgaW4gX3VtdHhfb3BfZXJyICgpIGF0IC91c3Ivc3Jj
 L2xpYi9saWJ0aHIvYXJjaC9hbWQ2NC9hbWQ2NC9fdW10eF9vcF9lcnIuUzozNwogIDMgVGhyZWFk
 IDB4ODAxNzA0YjgwIChMV1AgMTAwMjg5KSAgMHgwMDAwMDAwODAxMzQyNjdjIGluIF91bXR4X29w
 X2VyciAoKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL2FyY2gvYW1kNjQvYW1kNjQvX3VtdHhfb3Bf
 ZXJyLlM6MzcKICAyIFRocmVhZCAweDgwMTcwNTMwMCAoTFdQIDEwMDI5MCkgIDB4MDAwMDAwMDgw
 MTM0MjY3YyBpbiBfdW10eF9vcF9lcnIgKCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci9hcmNoL2Ft
 ZDY0L2FtZDY0L191bXR4X29wX2Vyci5TOjM3CiAgMSBUaHJlYWQgMHg4MDE3MDU5MDAgKExXUCAx
 MDAyOTEpICAweDAwMDAwMDA4MDE1MmMwYmEgaW4gcmVhZCAoKSBhdCByZWFkLlM6MgoKCihnZGIp
 IHRocmVhZCAxCltTd2l0Y2hpbmcgdG8gdGhyZWFkIDEgKFRocmVhZCAweDgwMTcwNTkwMCAoTFdQ
 IDEwMDI5MSkpXSMwICAweDAwMDAwMDA4MDE1MmMwYmEgaW4gcmVhZCAoKSBhdCByZWFkLlM6Mgoy
 ICAgICAgIFJTWVNDQUxMKHJlYWQpCihnZGIpIGJ0CiMwICAweDAwMDAwMDA4MDE1MmMwYmEgaW4g
 cmVhZCAoKSBhdCByZWFkLlM6MgojMSAgMHgwMDAwMDAwODAxMzM5N2QwIGluIF9fcmVhZCAoZmQ9
 NTUsIGJ1Zj0weDgwZjhmNjAwMCwgbmJ5dGVzPTQpIGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIvdGhy
 ZWFkL3Rocl9zeXNjYWxscy5jOjM3OQojMiAgMHgwMDAwMDAwMDAwNzJjNjFhIGluIHZpb19yZWFk
 ICh2aW89MHg4MGY4YTZiNzAsIGJ1Zj0weDgwZjhmNjAwMCAiXDAwMSIsIHNpemU9VmFyaWFibGUg
 InNpemUiIGlzIG5vdCBhdmFpbGFibGUuCikgYXQgdmlvc29ja2V0LmM6NDMKIzMgIDB4MDAwMDAw
 MDAwMDQ5NGQxNyBpbiBteV9yZWFsX3JlYWQgKG5ldD0weDgwZjhmMzBjMCwgY29tcGxlbj0weDdm
 ZmZmZWE3MGQ3MCkgYXQgbmV0X3NlcnYuY2M6ODE3CiM0ICAweDAwMDAwMDAwMDA0OTUzMjUgaW4g
 bXlfbmV0X3JlYWQgKG5ldD0weDgwZjhmMzBjMCkgYXQgbmV0X3NlcnYuY2M6OTkxCiM1ICAweDAw
 MDAwMDAwMDA0YmU1NDcgaW4gZG9fY29tbWFuZCAodGhkPTB4ODBmOGYzMDAwKSBhdCBzcWxfcGFy
 c2UuY2M6MTU0OAojNiAgMHgwMDAwMDAwMDAwNGJlZWVmIGluIGhhbmRsZV9vbmVfY29ubmVjdGlv
 biAoYXJnPVZhcmlhYmxlICJhcmciIGlzIG5vdCBhdmFpbGFibGUuCikgYXQgc3FsX3BhcnNlLmNj
 OjExOTcKIzcgIDB4MDAwMDAwMDgwMTMzYWIzNyBpbiB0aHJlYWRfc3RhcnQgKGN1cnRocmVhZD0w
 eDgwMTcwNTkwMCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci90aHJlYWQvdGhyX2NyZWF0ZS5jOjI1
 NgojOCAgMHgwMDAwN2ZmZmZlYTMxMDAwIGluID8/ICgpCkVycm9yIGFjY2Vzc2luZyBtZW1vcnkg
 YWRkcmVzcyAweDdmZmZmZWE3MTAwMDogQmFkIGFkZHJlc3MuCgoKKGdkYikgdGhyZWFkIDIgICAK
 W1N3aXRjaGluZyB0byB0aHJlYWQgMiAoVGhyZWFkIDB4ODAxNzA1MzAwIChMV1AgMTAwMjkwKSld
 IzAgIDB4MDAwMDAwMDgwMTM0MjY3YyBpbiBfdW10eF9vcF9lcnIgKCkgYXQgL3Vzci9zcmMvbGli
 L2xpYnRoci9hcmNoL2FtZDY0L2FtZDY0L191bXR4X29wX2Vyci5TOjM3CjM3ICAgICAgUlNZU0NB
 TExfRVJSKF91bXR4X29wKQooZ2RiKSBidAojMCAgMHgwMDAwMDAwODAxMzQyNjdjIGluIF91bXR4
 X29wX2VyciAoKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL2FyY2gvYW1kNjQvYW1kNjQvX3VtdHhf
 b3BfZXJyLlM6MzcKIzEgIDB4MDAwMDAwMDgwMTM0MGQxNSBpbiBjb25kX3dhaXRfY29tbW9uIChj
 b25kPVZhcmlhYmxlICJjb25kIiBpcyBub3QgYXZhaWxhYmxlLgopIGF0IC91c3Ivc3JjL2xpYi9s
 aWJ0aHIvdGhyZWFkL3Rocl9jb25kLmM6MjA0CiMyICAweDAwMDAwMDAwMDA3NGI1YWQgaW4gc2Fm
 ZV9jb25kX3dhaXQgKGNvbmQ9MHg4MTAzMDcyNDgsIG1wPTB4ODEwMzQ3MzU4LCBmaWxlPTB4ODRk
 NDI5ICJ0aHJfbG9jay5jIiwgbGluZT00MTgpIGF0IHRocl9tdXRleC5jOjIwMgojMyAgMHgwMDAw
 MDAwMDAwNzRhNWJjIGluIHdhaXRfZm9yX2xvY2sgKHdhaXQ9MHg4MTAzNDczYTAsIGRhdGE9MHg4
 MTAzZWUyYzgsIGluX3dhaXRfbGlzdD0wICdcMCcpIGF0IHRocl9sb2NrLmM6NDE4CiM0ICAweDAw
 MDAwMDAwMDA3NGFjNWIgaW4gdGhyX2xvY2sgKGRhdGE9MHg4MTAzZWUyYzgsIG93bmVyPTB4ODEw
 MzJhYzIwLCBsb2NrX3R5cGU9VmFyaWFibGUgImxvY2tfdHlwZSIgaXMgbm90IGF2YWlsYWJsZS4K
 KSBhdCB0aHJfbG9jay5jOjY4NwojNSAgMHgwMDAwMDAwMDAwNzRiMTc3IGluIHRocl9tdWx0aV9s
 b2NrIChkYXRhPTB4ODkwZTE2MDYwLCBjb3VudD0xLCBvd25lcj0weDgxMDMyYWMyMCkgYXQgdGhy
 X2xvY2suYzo5NTIKIzYgIDB4MDAwMDAwMDAwMDQ5YTA0NSBpbiBteXNxbF9sb2NrX3RhYmxlcyAo
 dGhkPTB4ODEwMzJhMDAwLCB0YWJsZXM9MHg4MTAzMzFlNTgsIGNvdW50PTEsIGZsYWdzPVZhcmlh
 YmxlICJmbGFncyIgaXMgbm90IGF2YWlsYWJsZS4KKSBhdCBsb2NrLmNjOjE3MgojNyAgMHgwMDAw
 MDAwMDAwNGQ3ZTYwIGluIGxvY2tfdGFibGVzICh0aGQ9MHg4MTAzMmEwMDAsIHRhYmxlcz0weDgx
 MDMzMTA2OCwgY291bnQ9VmFyaWFibGUgImNvdW50IiBpcyBub3QgYXZhaWxhYmxlLgopIGF0IHNx
 bF9iYXNlLmNjOjMxOTEKIzggIDB4MDAwMDAwMDAwMDUyMGZhYyBpbiBteXNxbF91cGRhdGUgKHRo
 ZD0weDgxMDMyYTAwMCwgdGFibGVfbGlzdD0weDgxMDMzMTA2OCwgZmllbGRzPUAweDgxMDMyYjg2
 OCwgdmFsdWVzPUAweDgxMDMyYmJkOCwgY29uZHM9MHg4MTAzMzFiNzgsIG9yZGVyX251bT0xLCBv
 cmRlcj0weDgxMDMzMWQ5MCwgbGltaXQ9MSwgCiAgICBoYW5kbGVfZHVwbGljYXRlcz1EVVBfRVJS
 T1IsIGlnbm9yZT1mYWxzZSkgYXQgc3FsX3VwZGF0ZS5jYzoxNTUKIzkgIDB4MDAwMDAwMDAwMDRi
 N2ZkZiBpbiBteXNxbF9leGVjdXRlX2NvbW1hbmQgKHRoZD0weDgxMDMyYTAwMCkgYXQgc3FsX3Bh
 cnNlLmNjOjM0NjcKIzEwIDB4MDAwMDAwMDAwMDRiY2MxMyBpbiBteXNxbF9wYXJzZSAodGhkPTB4
 ODEwMzJhMDAwLCAKICAgIGluQnVmPTB4ODkwZTExMDVhICJVUERBVEVcbiAgICBlbWFpbF90aW1p
 bmdzXG5TRVRcbiAgICBlbmRfdG0gPSBOT1coKVxuV0hFUkVcbiAgICBlbWFpbF9pZCA9ICc0MTg4
 ODU1NCdcbiAgICBBTkQgc3RhdHVzX2lkID0gJzEwMjAxJ1xuT1JERVIgQllcbiAgICBzdGFydF90
 bSBERVNDXG5MSU1JVCAxIiwgbGVuZ3RoPTE0MiwgCiAgICBmb3VuZF9zZW1pY29sb249MHg3ZmZm
 ZmU5NmNkZTgpIGF0IHNxbF9wYXJzZS5jYzo2MTIzCiMxMSAweDAwMDAwMDAwMDA1MzljNTcgaW4g
 UXVlcnlfbG9nX2V2ZW50OjpleGVjX2V2ZW50ICh0aGlzPTB4ODkwZTBkMGUwLCBybGk9MHg4MGY4
 NTFlMDgsIAogICAgcXVlcnlfYXJnPTB4ODkwZTExMDVhICJVUERBVEVcbiAgICBlbWFpbF90aW1p
 bmdzXG5TRVRcbiAgICBlbmRfdG0gPSBOT1coKVxuV0hFUkVcbiAgICBlbWFpbF9pZCA9ICc0MTg4
 ODU1NCdcbiAgICBBTkQgc3RhdHVzX2lkID0gJzEwMjAxJ1xuT1JERVIgQllcbiAgICBzdGFydF90
 bSBERVNDXG5MSU1JVCAxIiwgcV9sZW5fYXJnPTE0MikKICAgIGF0IGxvZ19ldmVudC5jYzoxOTA3
 CiMxMiAweDAwMDAwMDAwMDA1YmE3MDggaW4gZXhlY19yZWxheV9sb2dfZXZlbnQgKHRoZD0weDgx
 MDMyYTAwMCwgcmxpPTB4ODBmODUxZTA4KSBhdCBzbGF2ZS5jYzozMzM5CiMxMyAweDAwMDAwMDAw
 MDA1YmIxMWYgaW4gaGFuZGxlX3NsYXZlX3NxbCAoYXJnPVZhcmlhYmxlICJhcmciIGlzIG5vdCBh
 dmFpbGFibGUuCikgYXQgc2xhdmUuY2M6MzkzMwojMTQgMHgwMDAwMDAwODAxMzNhYjM3IGluIHRo
 cmVhZF9zdGFydCAoY3VydGhyZWFkPTB4ODAxNzA1MzAwKSBhdCAvdXNyL3NyYy9saWIvbGlidGhy
 L3RocmVhZC90aHJfY3JlYXRlLmM6MjU2CiMxNSAweDAwMDA3ZmZmZmU5MmQwMDAgaW4gPz8gKCkK
 RXJyb3IgYWNjZXNzaW5nIG1lbW9yeSBhZGRyZXNzIDB4N2ZmZmZlOTZkMDAwOiBCYWQgYWRkcmVz
 cy4KCihnZGIpIHRocmVhZCAzCltTd2l0Y2hpbmcgdG8gdGhyZWFkIDMgKFRocmVhZCAweDgwMTcw
 NGI4MCAoTFdQIDEwMDI4OSkpXSMwICAweDAwMDAwMDA4MDEzNDI2N2MgaW4gX3VtdHhfb3BfZXJy
 ICgpIGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIvYXJjaC9hbWQ2NC9hbWQ2NC9fdW10eF9vcF9lcnIu
 UzozNwozNyAgICAgIFJTWVNDQUxMX0VSUihfdW10eF9vcCkKKGdkYikgYnQKIzAgIDB4MDAwMDAw
 MDgwMTM0MjY3YyBpbiBfdW10eF9vcF9lcnIgKCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci9hcmNo
 L2FtZDY0L2FtZDY0L191bXR4X29wX2Vyci5TOjM3CiMxICAweDAwMDAwMDA4MDEzNDBkMTUgaW4g
 Y29uZF93YWl0X2NvbW1vbiAoY29uZD1WYXJpYWJsZSAiY29uZCIgaXMgbm90IGF2YWlsYWJsZS4K
 KSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL3RocmVhZC90aHJfY29uZC5jOjIwNAojMiAgMHgwMDAw
 MDAwMDAwNzRiNWFkIGluIHNhZmVfY29uZF93YWl0IChjb25kPTB4ODEwMzA2ZGU4LCBtcD0weDgx
 MDM0NzM1OCwgZmlsZT0weDg0ZDQyOSAidGhyX2xvY2suYyIsIGxpbmU9NDE4KSBhdCB0aHJfbXV0
 ZXguYzoyMDIKIzMgIDB4MDAwMDAwMDAwMDc0YTViYyBpbiB3YWl0X2Zvcl9sb2NrICh3YWl0PTB4
 ODEwMzQ3M2EwLCBkYXRhPTB4ODkwNjA4MmM4LCBpbl93YWl0X2xpc3Q9MCAnXDAnKSBhdCB0aHJf
 bG9jay5jOjQxOAojNCAgMHgwMDAwMDAwMDAwNzRhYzViIGluIHRocl9sb2NrIChkYXRhPTB4ODkw
 NjA4MmM4LCBvd25lcj0weDgwZjhlYmMyMCwgbG9ja190eXBlPVZhcmlhYmxlICJsb2NrX3R5cGUi
 IGlzIG5vdCBhdmFpbGFibGUuCikgYXQgdGhyX2xvY2suYzo2ODcKIzUgIDB4MDAwMDAwMDAwMDc0
 YjE3NyBpbiB0aHJfbXVsdGlfbG9jayAoZGF0YT0weDgxMDMxOTQ4MCwgY291bnQ9MSwgb3duZXI9
 MHg4MGY4ZWJjMjApIGF0IHRocl9sb2NrLmM6OTUyCiM2ICAweDAwMDAwMDAwMDA0OWEwNDUgaW4g
 bXlzcWxfbG9ja190YWJsZXMgKHRoZD0weDgwZjhlYjAwMCwgdGFibGVzPTB4ODEwMzZlMDc4LCBj
 b3VudD0xLCBmbGFncz1WYXJpYWJsZSAiZmxhZ3MiIGlzIG5vdCBhdmFpbGFibGUuCikgYXQgbG9j
 ay5jYzoxNzIKIzcgIDB4MDAwMDAwMDAwMDRkN2U2MCBpbiBsb2NrX3RhYmxlcyAodGhkPTB4ODBm
 OGViMDAwLCB0YWJsZXM9MHg4MTAzNmQxNjgsIGNvdW50PVZhcmlhYmxlICJjb3VudCIgaXMgbm90
 IGF2YWlsYWJsZS4KKSBhdCBzcWxfYmFzZS5jYzozMTkxCiM4ICAweDAwMDAwMDAwMDA1MjBmYWMg
 aW4gbXlzcWxfdXBkYXRlICh0aGQ9MHg4MGY4ZWIwMDAsIHRhYmxlX2xpc3Q9MHg4MTAzNmQxNjgs
 IGZpZWxkcz1AMHg4MGY4ZWM4NjgsIHZhbHVlcz1AMHg4MGY4ZWNiZDgsIGNvbmRzPTB4ODEwMzZk
 ZDk4LCBvcmRlcl9udW09MSwgb3JkZXI9MHg4MTAzNmRmYjAsIGxpbWl0PTEsIAogICAgaGFuZGxl
 X2R1cGxpY2F0ZXM9RFVQX0VSUk9SLCBpZ25vcmU9ZmFsc2UpIGF0IHNxbF91cGRhdGUuY2M6MTU1
 CiM5ICAweDAwMDAwMDAwMDA0YjdmZGYgaW4gbXlzcWxfZXhlY3V0ZV9jb21tYW5kICh0aGQ9MHg4
 MGY4ZWIwMDApIGF0IHNxbF9wYXJzZS5jYzozNDY3CiMxMCAweDAwMDAwMDAwMDA0YmNjMTMgaW4g
 bXlzcWxfcGFyc2UgKHRoZD0weDgwZjhlYjAwMCwgCiAgICBpbkJ1Zj0weDgxMDM2ZDAxMCAiVVBE
 QVRFIGVtYWlsX3BhcmFsbGVsLmVtYWlsX3RpbWluZ3MgU0VUIGVuZF90bT1OT1coKSBXSEVSRSBl
 bWFpbF9pZCBCRVRXRUVOIDIwMTQzNjkwIEFORCAyMDE0NDY5MCBBTkQgc3RhdHVzX2lkPTEwMjAx
 IE9SREVSIEJZIHN0YXJ0X3RtIERFU0MgTElNSVQgMSIsIGxlbmd0aD0xNDgsIAogICAgZm91bmRf
 c2VtaWNvbG9uPTB4N2ZmZmZlN2U2ZDQ4KSBhdCBzcWxfcGFyc2UuY2M6NjEyMwojMTEgMHgwMDAw
 MDAwMDAwNGJkYzIyIGluIGRpc3BhdGNoX2NvbW1hbmQgKGNvbW1hbmQ9Q09NX1FVRVJZLCB0aGQ9
 MHg4MGY4ZWIwMDAsIAogICAgcGFja2V0PTB4ODBmOGVlMDAxICJVUERBVEUgZW1haWxfcGFyYWxs
 ZWwuZW1haWxfdGltaW5ncyBTRVQgZW5kX3RtPU5PVygpIFdIRVJFIGVtYWlsX2lkIEJFVFdFRU4g
 MjAxNDM2OTAgQU5EIDIwMTQ0NjkwIEFORCBzdGF0dXNfaWQ9MTAyMDEgT1JERVIgQlkgc3RhcnRf
 dG0gREVTQyBMSU1JVCAxIiwgcGFja2V0X2xlbmd0aD1WYXJpYWJsZSAicGFja2V0X2xlbmd0aCIg
 aXMgbm90IGF2YWlsYWJsZS4KKQogICAgYXQgc3FsX3BhcnNlLmNjOjE4MTIKIzEyIDB4MDAwMDAw
 MDAwMDRiZTViMCBpbiBkb19jb21tYW5kICh0aGQ9MHg4MGY4ZWIwMDApIGF0IHNxbF9wYXJzZS5j
 YzoxNTg2CiMxMyAweDAwMDAwMDAwMDA0YmVlZWYgaW4gaGFuZGxlX29uZV9jb25uZWN0aW9uIChh
 cmc9VmFyaWFibGUgImFyZyIgaXMgbm90IGF2YWlsYWJsZS4KKSBhdCBzcWxfcGFyc2UuY2M6MTE5
 NwojMTQgMHgwMDAwMDAwODAxMzNhYjM3IGluIHRocmVhZF9zdGFydCAoY3VydGhyZWFkPTB4ODAx
 NzA0YjgwKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL3RocmVhZC90aHJfY3JlYXRlLmM6MjU2CiMx
 NSAweDAwMDA3ZmZmZmU3YTcwMDAgaW4gPz8gKCkKRXJyb3IgYWNjZXNzaW5nIG1lbW9yeSBhZGRy
 ZXNzIDB4N2ZmZmZlN2U3MDAwOiBCYWQgYWRkcmVzcy4KCgooZ2RiKSB0aHJlYWQgMwpbU3dpdGNo
 aW5nIHRvIHRocmVhZCAzIChUaHJlYWQgMHg4MDE3MDRiODAgKExXUCAxMDAyODkpKV0jMCAgMHgw
 MDAwMDAwODAxMzQyNjdjIGluIF91bXR4X29wX2VyciAoKSBhdCAvdXNyL3NyYy9saWIvbGlidGhy
 L2FyY2gvYW1kNjQvYW1kNjQvX3VtdHhfb3BfZXJyLlM6MzcKMzcgICAgICBSU1lTQ0FMTF9FUlIo
 X3VtdHhfb3ApCihnZGIpIGJ0CiMwICAweDAwMDAwMDA4MDEzNDI2N2MgaW4gX3VtdHhfb3BfZXJy
 ICgpIGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIvYXJjaC9hbWQ2NC9hbWQ2NC9fdW10eF9vcF9lcnIu
 UzozNwojMSAgMHgwMDAwMDAwODAxMzQwZDE1IGluIGNvbmRfd2FpdF9jb21tb24gKGNvbmQ9VmFy
 aWFibGUgImNvbmQiIGlzIG5vdCBhdmFpbGFibGUuCikgYXQgL3Vzci9zcmMvbGliL2xpYnRoci90
 aHJlYWQvdGhyX2NvbmQuYzoyMDQKIzIgIDB4MDAwMDAwMDAwMDc0YjVhZCBpbiBzYWZlX2NvbmRf
 d2FpdCAoY29uZD0weDgxMDMwNmRlOCwgbXA9MHg4MTAzNDczNTgsIGZpbGU9MHg4NGQ0MjkgInRo
 cl9sb2NrLmMiLCBsaW5lPTQxOCkgYXQgdGhyX211dGV4LmM6MjAyCiMzICAweDAwMDAwMDAwMDA3
 NGE1YmMgaW4gd2FpdF9mb3JfbG9jayAod2FpdD0weDgxMDM0NzNhMCwgZGF0YT0weDg5MDYwODJj
 OCwgaW5fd2FpdF9saXN0PTAgJ1wwJykgYXQgdGhyX2xvY2suYzo0MTgKIzQgIDB4MDAwMDAwMDAw
 MDc0YWM1YiBpbiB0aHJfbG9jayAoZGF0YT0weDg5MDYwODJjOCwgb3duZXI9MHg4MGY4ZWJjMjAs
 IGxvY2tfdHlwZT1WYXJpYWJsZSAibG9ja190eXBlIiBpcyBub3QgYXZhaWxhYmxlLgopIGF0IHRo
 cl9sb2NrLmM6Njg3CiM1ICAweDAwMDAwMDAwMDA3NGIxNzcgaW4gdGhyX211bHRpX2xvY2sgKGRh
 dGE9MHg4MTAzMTk0ODAsIGNvdW50PTEsIG93bmVyPTB4ODBmOGViYzIwKSBhdCB0aHJfbG9jay5j
 Ojk1MgojNiAgMHgwMDAwMDAwMDAwNDlhMDQ1IGluIG15c3FsX2xvY2tfdGFibGVzICh0aGQ9MHg4
 MGY4ZWIwMDAsIHRhYmxlcz0weDgxMDM2ZTA3OCwgY291bnQ9MSwgZmxhZ3M9VmFyaWFibGUgImZs
 YWdzIiBpcyBub3QgYXZhaWxhYmxlLgopIGF0IGxvY2suY2M6MTcyCiM3ICAweDAwMDAwMDAwMDA0
 ZDdlNjAgaW4gbG9ja190YWJsZXMgKHRoZD0weDgwZjhlYjAwMCwgdGFibGVzPTB4ODEwMzZkMTY4
 LCBjb3VudD1WYXJpYWJsZSAiY291bnQiIGlzIG5vdCBhdmFpbGFibGUuCikgYXQgc3FsX2Jhc2Uu
 Y2M6MzE5MQojOCAgMHgwMDAwMDAwMDAwNTIwZmFjIGluIG15c3FsX3VwZGF0ZSAodGhkPTB4ODBm
 OGViMDAwLCB0YWJsZV9saXN0PTB4ODEwMzZkMTY4LCBmaWVsZHM9QDB4ODBmOGVjODY4LCB2YWx1
 ZXM9QDB4ODBmOGVjYmQ4LCBjb25kcz0weDgxMDM2ZGQ5OCwgb3JkZXJfbnVtPTEsIG9yZGVyPTB4
 ODEwMzZkZmIwLCBsaW1pdD0xLCAKICAgIGhhbmRsZV9kdXBsaWNhdGVzPURVUF9FUlJPUiwgaWdu
 b3JlPWZhbHNlKSBhdCBzcWxfdXBkYXRlLmNjOjE1NQojOSAgMHgwMDAwMDAwMDAwNGI3ZmRmIGlu
 IG15c3FsX2V4ZWN1dGVfY29tbWFuZCAodGhkPTB4ODBmOGViMDAwKSBhdCBzcWxfcGFyc2UuY2M6
 MzQ2NwojMTAgMHgwMDAwMDAwMDAwNGJjYzEzIGluIG15c3FsX3BhcnNlICh0aGQ9MHg4MGY4ZWIw
 MDAsIAogICAgaW5CdWY9MHg4MTAzNmQwMTAgIlVQREFURSBlbWFpbF9wYXJhbGxlbC5lbWFpbF90
 aW1pbmdzIFNFVCBlbmRfdG09Tk9XKCkgV0hFUkUgZW1haWxfaWQgQkVUV0VFTiAyMDE0MzY5MCBB
 TkQgMjAxNDQ2OTAgQU5EIHN0YXR1c19pZD0xMDIwMSBPUkRFUiBCWSBzdGFydF90bSBERVNDIExJ
 TUlUIDEiLCBsZW5ndGg9MTQ4LCAKICAgIGZvdW5kX3NlbWljb2xvbj0weDdmZmZmZTdlNmQ0OCkg
 YXQgc3FsX3BhcnNlLmNjOjYxMjMKIzExIDB4MDAwMDAwMDAwMDRiZGMyMiBpbiBkaXNwYXRjaF9j
 b21tYW5kIChjb21tYW5kPUNPTV9RVUVSWSwgdGhkPTB4ODBmOGViMDAwLCAKICAgIHBhY2tldD0w
 eDgwZjhlZTAwMSAiVVBEQVRFIGVtYWlsX3BhcmFsbGVsLmVtYWlsX3RpbWluZ3MgU0VUIGVuZF90
 bT1OT1coKSBXSEVSRSBlbWFpbF9pZCBCRVRXRUVOIDIwMTQzNjkwIEFORCAyMDE0NDY5MCBBTkQg
 c3RhdHVzX2lkPTEwMjAxIE9SREVSIEJZIHN0YXJ0X3RtIERFU0MgTElNSVQgMSIsIHBhY2tldF9s
 ZW5ndGg9VmFyaWFibGUgInBhY2tldF9sZW5ndGgiIGlzIG5vdCBhdmFpbGFibGUuCikKICAgIGF0
 IHNxbF9wYXJzZS5jYzoxODEyCiMxMiAweDAwMDAwMDAwMDA0YmU1YjAgaW4gZG9fY29tbWFuZCAo
 dGhkPTB4ODBmOGViMDAwKSBhdCBzcWxfcGFyc2UuY2M6MTU4NgojMTMgMHgwMDAwMDAwMDAwNGJl
 ZWVmIGluIGhhbmRsZV9vbmVfY29ubmVjdGlvbiAoYXJnPVZhcmlhYmxlICJhcmciIGlzIG5vdCBh
 dmFpbGFibGUuCikgYXQgc3FsX3BhcnNlLmNjOjExOTcKIzE0IDB4MDAwMDAwMDgwMTMzYWIzNyBp
 biB0aHJlYWRfc3RhcnQgKGN1cnRocmVhZD0weDgwMTcwNGI4MCkgYXQgL3Vzci9zcmMvbGliL2xp
 YnRoci90aHJlYWQvdGhyX2NyZWF0ZS5jOjI1NgojMTUgMHgwMDAwN2ZmZmZlN2E3MDAwIGluID8/
 ICgpCkVycm9yIGFjY2Vzc2luZyBtZW1vcnkgYWRkcmVzcyAweDdmZmZmZTdlNzAwMDogQmFkIGFk
 ZHJlc3MuCgooZ2RiKSB0aHJlYWQgNApbU3dpdGNoaW5nIHRvIHRocmVhZCA0IChUaHJlYWQgMHg4
 MDE3MDU0ODAgKExXUCAxMDAyODgpKV0jMCAgMHgwMDAwMDAwODAxMzQyNjdjIGluIF91bXR4X29w
 X2VyciAoKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL2FyY2gvYW1kNjQvYW1kNjQvX3VtdHhfb3Bf
 ZXJyLlM6MzcKMzcgICAgICBSU1lTQ0FMTF9FUlIoX3VtdHhfb3ApCihnZGIpIGJ0CiMwICAweDAw
 MDAwMDA4MDEzNDI2N2MgaW4gX3VtdHhfb3BfZXJyICgpIGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIv
 YXJjaC9hbWQ2NC9hbWQ2NC9fdW10eF9vcF9lcnIuUzozNwojMSAgMHgwMDAwMDAwODAxMzQwZDE1
 IGluIGNvbmRfd2FpdF9jb21tb24gKGNvbmQ9VmFyaWFibGUgImNvbmQiIGlzIG5vdCBhdmFpbGFi
 bGUuCikgYXQgL3Vzci9zcmMvbGliL2xpYnRoci90aHJlYWQvdGhyX2NvbmQuYzoyMDQKIzIgIDB4
 MDAwMDAwMDAwMDc0YjVhZCBpbiBzYWZlX2NvbmRfd2FpdCAoY29uZD0weDgxMDMwNmFjOCwgbXA9
 MHg4MTAzNDczNTgsIGZpbGU9MHg4NGQ0MjkgInRocl9sb2NrLmMiLCBsaW5lPTQxOCkgYXQgdGhy
 X211dGV4LmM6MjAyCiMzICAweDAwMDAwMDAwMDA3NGE1YmMgaW4gd2FpdF9mb3JfbG9jayAod2Fp
 dD0weDgxMDM0NzM4MCwgZGF0YT0weDg5MGQxZDJjOCwgaW5fd2FpdF9saXN0PTAgJ1wwJykgYXQg
 dGhyX2xvY2suYzo0MTgKIzQgIDB4MDAwMDAwMDAwMDc0YWM1YiBpbiB0aHJfbG9jayAoZGF0YT0w
 eDg5MGQxZDJjOCwgb3duZXI9MHg4MGY4ZTNjMjAsIGxvY2tfdHlwZT1WYXJpYWJsZSAibG9ja190
 eXBlIiBpcyBub3QgYXZhaWxhYmxlLgopIGF0IHRocl9sb2NrLmM6Njg3CiM1ICAweDAwMDAwMDAw
 MDA3NGIxNzcgaW4gdGhyX211bHRpX2xvY2sgKGRhdGE9MHg4OTBhMDIwNjAsIGNvdW50PTEsIG93
 bmVyPTB4ODBmOGUzYzIwKSBhdCB0aHJfbG9jay5jOjk1MgojNiAgMHgwMDAwMDAwMDAwNDlhMDQ1
 IGluIG15c3FsX2xvY2tfdGFibGVzICh0aGQ9MHg4MGY4ZTMwMDAsIHRhYmxlcz0weDgxMDNiN2Ey
 OCwgY291bnQ9MSwgZmxhZ3M9VmFyaWFibGUgImZsYWdzIiBpcyBub3QgYXZhaWxhYmxlLgopIGF0
 IGxvY2suY2M6MTcyCiM3ICAweDAwMDAwMDAwMDA0ZDdlNjAgaW4gbG9ja190YWJsZXMgKHRoZD0w
 eDgwZjhlMzAwMCwgdGFibGVzPTB4ODEwM2I3MmIwLCBjb3VudD1WYXJpYWJsZSAiY291bnQiIGlz
 IG5vdCBhdmFpbGFibGUuCikgYXQgc3FsX2Jhc2UuY2M6MzE5MQojOCAgMHgwMDAwMDAwMDAwNGRl
 YzE0IGluIG9wZW5fYW5kX2xvY2tfdGFibGVzICh0aGQ9MHg4MGY4ZTMwMDAsIHRhYmxlcz0weDgx
 MDNiNzJiMCkgYXQgc3FsX2Jhc2UuY2M6MzA0NgojOSAgMHgwMDAwMDAwMDAwNGI5NTRhIGluIG15
 c3FsX2V4ZWN1dGVfY29tbWFuZCAodGhkPTB4ODBmOGUzMDAwKSBhdCBzcWxfcGFyc2UuY2M6MjY0
 MwojMTAgMHgwMDAwMDAwMDAwNGJjYzEzIGluIG15c3FsX3BhcnNlICh0aGQ9MHg4MGY4ZTMwMDAs
 IGluQnVmPTB4ODEwM2I3MDEwICJTRUxFQ1QgQ09VTlQoKikgRlJPTSBlbWFpbF9wYXJhbGxlbC5l
 bWFpbF90aW1pbmdzIFdIRVJFIGlkIEJFVFdFRU4gMjAwNzY2NDQ2NiBBTkQgMjAwNzY2NDk5MiIs
 IGxlbmd0aD05MiwgCiAgICBmb3VuZF9zZW1pY29sb249MHg3ZmZmZmU4YTlkNDgpIGF0IHNxbF9w
 YXJzZS5jYzo2MTIzCiMxMSAweDAwMDAwMDAwMDA0YmRjMjIgaW4gZGlzcGF0Y2hfY29tbWFuZCAo
 Y29tbWFuZD1DT01fUVVFUlksIHRoZD0weDgwZjhlMzAwMCwgcGFja2V0PTB4ODBmOGU2MDAxICJT
 RUxFQ1QgQ09VTlQoKikgRlJPTSBlbWFpbF9wYXJhbGxlbC5lbWFpbF90aW1pbmdzIFdIRVJFIGlk
 IEJFVFdFRU4gMjAwNzY2NDQ2NiBBTkQgMjAwNzY2NDk5MiIsIAogICAgcGFja2V0X2xlbmd0aD1W
 YXJpYWJsZSAicGFja2V0X2xlbmd0aCIgaXMgbm90IGF2YWlsYWJsZS4KKSBhdCBzcWxfcGFyc2Uu
 Y2M6MTgxMgojMTIgMHgwMDAwMDAwMDAwNGJlNWIwIGluIGRvX2NvbW1hbmQgKHRoZD0weDgwZjhl
 MzAwMCkgYXQgc3FsX3BhcnNlLmNjOjE1ODYKIzEzIDB4MDAwMDAwMDAwMDRiZWVlZiBpbiBoYW5k
 bGVfb25lX2Nvbm5lY3Rpb24gKGFyZz1WYXJpYWJsZSAiYXJnIiBpcyBub3QgYXZhaWxhYmxlLgop
 IGF0IHNxbF9wYXJzZS5jYzoxMTk3CiMxNCAweDAwMDAwMDA4MDEzM2FiMzcgaW4gdGhyZWFkX3N0
 YXJ0IChjdXJ0aHJlYWQ9MHg4MDE3MDU0ODApIGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIvdGhyZWFk
 L3Rocl9jcmVhdGUuYzoyNTYKIzE1IDB4MDAwMDdmZmZmZTg2YTAwMCBpbiA/PyAoKQpFcnJvciBh
 Y2Nlc3NpbmcgbWVtb3J5IGFkZHJlc3MgMHg3ZmZmZmU4YWEwMDA6IEJhZCBhZGRyZXNzLgoKCihn
 ZGIpIHRocmVhZCA1CltTd2l0Y2hpbmcgdG8gdGhyZWFkIDUgKFRocmVhZCAweDgwMTcwNTAwMCAo
 TFdQIDEwMDI4NykpXSMwICAweDAwMDAwMDA4MDEzNDI2N2MgaW4gX3VtdHhfb3BfZXJyICgpIGF0
 IC91c3Ivc3JjL2xpYi9saWJ0aHIvYXJjaC9hbWQ2NC9hbWQ2NC9fdW10eF9vcF9lcnIuUzozNwoz
 NyAgICAgIFJTWVNDQUxMX0VSUihfdW10eF9vcCkKKGdkYikgYnQKIzAgIDB4MDAwMDAwMDgwMTM0
 MjY3YyBpbiBfdW10eF9vcF9lcnIgKCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci9hcmNoL2FtZDY0
 L2FtZDY0L191bXR4X29wX2Vyci5TOjM3CiMxICAweDAwMDAwMDA4MDEzM2QzOTcgaW4gcndsb2Nr
 X3JkbG9ja19jb21tb24gKHJ3bG9jaz1WYXJpYWJsZSAicndsb2NrIiBpcyBub3QgYXZhaWxhYmxl
 LgopIGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIvdGhyZWFkL3Rocl9yd2xvY2suYzoxNzMKIzIgIDB4
 MDAwMDAwMDAwMDZlZTNkNCBpbiBtaV9ybmV4dCAoaW5mbz0weDgxMDM2NTAwMCwgYnVmPTB4ODEw
 M2Y4NzIwICJcMjEwXe+/ve+/vXdcMDMxK1wxNzdcMDAyPSgiLCBpbng9MCkgYXQgbWlfcm5leHQu
 Yzo0MgojMyAgMHgwMDAwMDAwMDAwNTcyNTQzIGluIGhhX215aXNhbTo6aW5kZXhfbmV4dCAodGhp
 cz0weDgxMDNmODgxMCwgYnVmPTB4ODEwM2Y4NzIwICJcMjEwXe+/ve+/vXdcMDMxK1wxNzdcMDAy
 PSgiKSBhdCBoYV9teWlzYW0uY2M6MTU2NgojNCAgMHgwMDAwMDAwMDAwNTZiMGQ5IGluIGhhbmRs
 ZXI6OnJlYWRfcmFuZ2VfbmV4dCAodGhpcz0weDgxMDNmODgxMCkgYXQgaGFuZGxlci5jYzoyNjg3
 CiM1ICAweDAwMDAwMDAwMDA1NmIzMzQgaW4gaGFuZGxlcjo6cmVhZF9tdWx0aV9yYW5nZV9uZXh0
 ICh0aGlzPTB4ODEwM2Y4ODEwLCBmb3VuZF9yYW5nZV9wPTB4N2ZmZmZlOTJhN2U4KSBhdCBoYW5k
 bGVyLmNjOjI1NjYKIzYgIDB4MDAwMDAwMDAwMDU1MWMyYyBpbiBRVUlDS19SQU5HRV9TRUxFQ1Q6
 OmdldF9uZXh0ICh0aGlzPTB4ODAxNzY4MjgwKSBhdCBvcHRfcmFuZ2UuY2M6NjgxOQojNyAgMHgw
 MDAwMDAwMDAwNTY2ZDMxIGluIHJyX3F1aWNrIChpbmZvPTB4ODBmOGEwNjEwKSBhdCByZWNvcmRz
 LmNjOjIyNAojOCAgMHgwMDAwMDAwMDAwNGYwYjdlIGluIHN1Yl9zZWxlY3QgKGpvaW49MHg4OTBj
 MGJhNTAsIGpvaW5fdGFiPTB4ODBmOGEwNTkwLCBlbmRfb2ZfcmVjb3Jkcz1WYXJpYWJsZSAiZW5k
 X29mX3JlY29yZHMiIGlzIG5vdCBhdmFpbGFibGUuCikgYXQgc3FsX3NlbGVjdC5jYzoxMDYxNQoj
 OSAgMHgwMDAwMDAwMDAwNTA1ZTcwIGluIGRvX3NlbGVjdCAoam9pbj0weDg5MGMwYmE1MCwgZmll
 bGRzPTB4ODkwYzBjY2UwLCB0YWJsZT0weDAsIHByb2NlZHVyZT0weDApIGF0IHNxbF9zZWxlY3Qu
 Y2M6MTAzNzMKIzEwIDB4MDAwMDAwMDAwMDUwOTJmNiBpbiBKT0lOOjpleGVjICh0aGlzPTB4ODkw
 YzBiYTUwKSBhdCBzcWxfc2VsZWN0LmNjOjIxMjAKIzExIDB4MDAwMDAwMDAwMDUwYjFmZCBpbiBt
 eXNxbF9zZWxlY3QgKHRoZD0weDgwZjhkYjAwMCwgcnJlZl9wb2ludGVyX2FycmF5PTB4ODBmOGRj
 OTg4LCB0YWJsZXM9MHg4OTBjMGIyYjAsIHdpbGRfbnVtPTAsIGZpZWxkcz1WYXJpYWJsZSAiZmll
 bGRzIiBpcyBub3QgYXZhaWxhYmxlLgopIGF0IHNxbF9zZWxlY3QuY2M6MjI5OAojMTIgMHgwMDAw
 MDAwMDAwNTBiZDA4IGluIGhhbmRsZV9zZWxlY3QgKHRoZD0weDgwZjhkYjAwMCwgbGV4PTB4ODBm
 OGRjMzIwLCByZXN1bHQ9MHg4OTBjMGJhMzAsIHNldHVwX3RhYmxlc19kb25lX29wdGlvbj0wKSBh
 dCBzcWxfc2VsZWN0LmNjOjI1NgojMTMgMHgwMDAwMDAwMDAwNGI5NTkxIGluIG15c3FsX2V4ZWN1
 dGVfY29tbWFuZCAodGhkPTB4ODBmOGRiMDAwKSBhdCBzcWxfcGFyc2UuY2M6MjY3NgojMTQgMHgw
 MDAwMDAwMDAwNGJjYzEzIGluIG15c3FsX3BhcnNlICh0aGQ9MHg4MGY4ZGIwMDAsIGluQnVmPTB4
 ODkwYzBiMDEwICJTRUxFQ1QgQ09VTlQoKikgRlJPTSBlbWFpbF9wYXJhbGxlbC5lbWFpbF90aW1p
 bmdzIFdIRVJFIGlkIEJFVFdFRU4gMjAxMDExODk5NSBBTkQgMjAxMDExOTQ1NSIsIGxlbmd0aD05
 MiwgCiAgICBmb3VuZF9zZW1pY29sb249MHg3ZmZmZmU5MmJkNDgpIGF0IHNxbF9wYXJzZS5jYzo2
 MTIzCiMxNSAweDAwMDAwMDAwMDA0YmRjMjIgaW4gZGlzcGF0Y2hfY29tbWFuZCAoY29tbWFuZD1D
 T01fUVVFUlksIHRoZD0weDgwZjhkYjAwMCwgcGFja2V0PTB4ODBmOGRlMDAxICIiLCBwYWNrZXRf
 bGVuZ3RoPVZhcmlhYmxlICJwYWNrZXRfbGVuZ3RoIiBpcyBub3QgYXZhaWxhYmxlLgopIGF0IHNx
 bF9wYXJzZS5jYzoxODEyCiMxNiAweDAwMDAwMDAwMDA0YmU1YjAgaW4gZG9fY29tbWFuZCAodGhk
 PTB4ODBmOGRiMDAwKSBhdCBzcWxfcGFyc2UuY2M6MTU4NgojMTcgMHgwMDAwMDAwMDAwNGJlZWVm
 IGluIGhhbmRsZV9vbmVfY29ubmVjdGlvbiAoYXJnPVZhcmlhYmxlICJhcmciIGlzIG5vdCBhdmFp
 bGFibGUuCikgYXQgc3FsX3BhcnNlLmNjOjExOTcKIzE4IDB4MDAwMDAwMDgwMTMzYWIzNyBpbiB0
 aHJlYWRfc3RhcnQgKGN1cnRocmVhZD0weDgwMTcwNTAwMCkgYXQgL3Vzci9zcmMvbGliL2xpYnRo
 ci90aHJlYWQvdGhyX2NyZWF0ZS5jOjI1NgojMTkgMHgwMDAwN2ZmZmZlOGVjMDAwIGluID8/ICgp
 CkVycm9yIGFjY2Vzc2luZyBtZW1vcnkgYWRkcmVzcyAweDdmZmZmZTkyYzAwMDogQmFkIGFkZHJl
 c3MuCgoKKGdkYikgdGhyZWFkIDYKW1N3aXRjaGluZyB0byB0aHJlYWQgNiAoVGhyZWFkIDB4ODAx
 NzAzNTAwIChMV1AgMTAwMjg2KSldIzAgIDB4MDAwMDAwMDgwMTM0MjY3YyBpbiBfdW10eF9vcF9l
 cnIgKCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci9hcmNoL2FtZDY0L2FtZDY0L191bXR4X29wX2Vy
 ci5TOjM3CjM3ICAgICAgUlNZU0NBTExfRVJSKF91bXR4X29wKQooZ2RiKSBidAojMCAgMHgwMDAw
 MDAwODAxMzQyNjdjIGluIF91bXR4X29wX2VyciAoKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL2Fy
 Y2gvYW1kNjQvYW1kNjQvX3VtdHhfb3BfZXJyLlM6MzcKIzEgIDB4MDAwMDAwMDgwMTM0MGQxNSBp
 biBjb25kX3dhaXRfY29tbW9uIChjb25kPVZhcmlhYmxlICJjb25kIiBpcyBub3QgYXZhaWxhYmxl
 LgopIGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIvdGhyZWFkL3Rocl9jb25kLmM6MjA0CiMyICAweDAw
 MDAwMDAwMDA3NGI1YWQgaW4gc2FmZV9jb25kX3dhaXQgKGNvbmQ9MHg4MTAzMDY4NDgsIG1wPTB4
 ODEwMzQ3MzU4LCBmaWxlPTB4ODRkNDI5ICJ0aHJfbG9jay5jIiwgbGluZT00MTgpIGF0IHRocl9t
 dXRleC5jOjIwMgojMyAgMHgwMDAwMDAwMDAwNzRhNWJjIGluIHdhaXRfZm9yX2xvY2sgKHdhaXQ9
 MHg4MTAzNDczODAsIGRhdGE9MHg4MTAzYWIyYzgsIGluX3dhaXRfbGlzdD0wICdcMCcpIGF0IHRo
 cl9sb2NrLmM6NDE4CiM0ICAweDAwMDAwMDAwMDA3NGFjNWIgaW4gdGhyX2xvY2sgKGRhdGE9MHg4
 MTAzYWIyYzgsIG93bmVyPTB4ODBmOGQzYzIwLCBsb2NrX3R5cGU9VmFyaWFibGUgImxvY2tfdHlw
 ZSIgaXMgbm90IGF2YWlsYWJsZS4KKSBhdCB0aHJfbG9jay5jOjY4NwojNSAgMHgwMDAwMDAwMDAw
 NzRiMTc3IGluIHRocl9tdWx0aV9sb2NrIChkYXRhPTB4ODEwMzE5MWUwLCBjb3VudD0xLCBvd25l
 cj0weDgwZjhkM2MyMCkgYXQgdGhyX2xvY2suYzo5NTIKIzYgIDB4MDAwMDAwMDAwMDQ5YTA0NSBp
 biBteXNxbF9sb2NrX3RhYmxlcyAodGhkPTB4ODBmOGQzMDAwLCB0YWJsZXM9MHg4MTAzMWZhMjgs
 IGNvdW50PTEsIGZsYWdzPVZhcmlhYmxlICJmbGFncyIgaXMgbm90IGF2YWlsYWJsZS4KKSBhdCBs
 b2NrLmNjOjE3MgojNyAgMHgwMDAwMDAwMDAwNGQ3ZTYwIGluIGxvY2tfdGFibGVzICh0aGQ9MHg4
 MGY4ZDMwMDAsIHRhYmxlcz0weDgxMDMxZjJiMCwgY291bnQ9VmFyaWFibGUgImNvdW50IiBpcyBu
 b3QgYXZhaWxhYmxlLgopIGF0IHNxbF9iYXNlLmNjOjMxOTEKIzggIDB4MDAwMDAwMDAwMDRkZWMx
 NCBpbiBvcGVuX2FuZF9sb2NrX3RhYmxlcyAodGhkPTB4ODBmOGQzMDAwLCB0YWJsZXM9MHg4MTAz
 MWYyYjApIGF0IHNxbF9iYXNlLmNjOjMwNDYKIzkgIDB4MDAwMDAwMDAwMDRiOTU0YSBpbiBteXNx
 bF9leGVjdXRlX2NvbW1hbmQgKHRoZD0weDgwZjhkMzAwMCkgYXQgc3FsX3BhcnNlLmNjOjI2NDMK
 IzEwIDB4MDAwMDAwMDAwMDRiY2MxMyBpbiBteXNxbF9wYXJzZSAodGhkPTB4ODBmOGQzMDAwLCBp
 bkJ1Zj0weDgxMDMxZjAxMCAiU0VMRUNUIENPVU5UKCopIEZST00gZW1haWxfcGFyYWxsZWwuZW1h
 aWxfdGltaW5ncyBXSEVSRSBpZCBCRVRXRUVOIDIwMTQ4NzUyNDEgQU5EIDIwMTQ4NzUzMjQiLCBs
 ZW5ndGg9OTIsIAogICAgZm91bmRfc2VtaWNvbG9uPTB4N2ZmZmZlYWIxZDQ4KSBhdCBzcWxfcGFy
 c2UuY2M6NjEyMwojMTEgMHgwMDAwMDAwMDAwNGJkYzIyIGluIGRpc3BhdGNoX2NvbW1hbmQgKGNv
 bW1hbmQ9Q09NX1FVRVJZLCB0aGQ9MHg4MGY4ZDMwMDAsIHBhY2tldD0weDgwZjhkNjAwMSAiU0VM
 RUNUIENPVU5UKCopIEZST00gZW1haWxfcGFyYWxsZWwuZW1haWxfdGltaW5ncyBXSEVSRSBpZCBC
 RVRXRUVOIDIwMTQ4NzUyNDEgQU5EIDIwMTQ4NzUzMjQiLCAKICAgIHBhY2tldF9sZW5ndGg9VmFy
 aWFibGUgInBhY2tldF9sZW5ndGgiIGlzIG5vdCBhdmFpbGFibGUuCikgYXQgc3FsX3BhcnNlLmNj
 OjE4MTIKIzEyIDB4MDAwMDAwMDAwMDRiZTViMCBpbiBkb19jb21tYW5kICh0aGQ9MHg4MGY4ZDMw
 MDApIGF0IHNxbF9wYXJzZS5jYzoxNTg2CiMxMyAweDAwMDAwMDAwMDA0YmVlZWYgaW4gaGFuZGxl
 X29uZV9jb25uZWN0aW9uIChhcmc9VmFyaWFibGUgImFyZyIgaXMgbm90IGF2YWlsYWJsZS4KKSBh
 dCBzcWxfcGFyc2UuY2M6MTE5NwojMTQgMHgwMDAwMDAwODAxMzNhYjM3IGluIHRocmVhZF9zdGFy
 dCAoY3VydGhyZWFkPTB4ODAxNzAzNTAwKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL3RocmVhZC90
 aHJfY3JlYXRlLmM6MjU2CiMxNSAweDAwMDA3ZmZmZmVhNzIwMDAgaW4gPz8gKCkKRXJyb3IgYWNj
 ZXNzaW5nIG1lbW9yeSBhZGRyZXNzIDB4N2ZmZmZlYWIyMDAwOiBCYWQgYWRkcmVzcy4KCgoKKGdk
 YikgdGhyZWFkIDcKW1N3aXRjaGluZyB0byB0aHJlYWQgNyAoVGhyZWFkIDB4ODAxNzA0NzAwIChM
 V1AgMTAwMjg1KSldIzAgIDB4MDAwMDAwMDgwMTM0MjY3YyBpbiBfdW10eF9vcF9lcnIgKCkgYXQg
 L3Vzci9zcmMvbGliL2xpYnRoci9hcmNoL2FtZDY0L2FtZDY0L191bXR4X29wX2Vyci5TOjM3CjM3
 ICAgICAgUlNZU0NBTExfRVJSKF91bXR4X29wKQooZ2RiKSBidAojMCAgMHgwMDAwMDAwODAxMzQy
 NjdjIGluIF91bXR4X29wX2VyciAoKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL2FyY2gvYW1kNjQv
 YW1kNjQvX3VtdHhfb3BfZXJyLlM6MzcKIzEgIDB4MDAwMDAwMDgwMTMzZDM5NyBpbiByd2xvY2tf
 cmRsb2NrX2NvbW1vbiAocndsb2NrPVZhcmlhYmxlICJyd2xvY2siIGlzIG5vdCBhdmFpbGFibGUu
 CikgYXQgL3Vzci9zcmMvbGliL2xpYnRoci90aHJlYWQvdGhyX3J3bG9jay5jOjE3MwojMiAgMHgw
 MDAwMDAwMDAwNmVlM2Q0IGluIG1pX3JuZXh0IChpbmZvPTB4ODkwNTA2MDAwLCBidWY9MHg4OTA1
 MGQ3MjAgIu+/vVwwMjVcMjMy77+9d1x077+9XDIxNVwwMDHvv71cdiIsIGlueD0wKSBhdCBtaV9y
 bmV4dC5jOjQyCiMzICAweDAwMDAwMDAwMDA1NzI1NDMgaW4gaGFfbXlpc2FtOjppbmRleF9uZXh0
 ICh0aGlzPTB4ODkwNTBkODEwLCBidWY9MHg4OTA1MGQ3MjAgIu+/vVwwMjVcMjMy77+9d1x077+9
 XDIxNVwwMDHvv71cdiIpIGF0IGhhX215aXNhbS5jYzoxNTY2CiM0ICAweDAwMDAwMDAwMDA1NmIw
 ZDkgaW4gaGFuZGxlcjo6cmVhZF9yYW5nZV9uZXh0ICh0aGlzPTB4ODkwNTBkODEwKSBhdCBoYW5k
 bGVyLmNjOjI2ODcKIzUgIDB4MDAwMDAwMDAwMDU2YjMzNCBpbiBoYW5kbGVyOjpyZWFkX211bHRp
 X3JhbmdlX25leHQgKHRoaXM9MHg4OTA1MGQ4MTAsIGZvdW5kX3JhbmdlX3A9MHg3ZmZmZmViNzM3
 ZTgpIGF0IGhhbmRsZXIuY2M6MjU2NgojNiAgMHgwMDAwMDAwMDAwNTUxYzJjIGluIFFVSUNLX1JB
 TkdFX1NFTEVDVDo6Z2V0X25leHQgKHRoaXM9MHg4MTAzMjYxYTApIGF0IG9wdF9yYW5nZS5jYzo2
 ODE5CiM3ICAweDAwMDAwMDAwMDA1NjZkMzEgaW4gcnJfcXVpY2sgKGluZm89MHg4MTAzYjQ2MTAp
 IGF0IHJlY29yZHMuY2M6MjI0CiM4ICAweDAwMDAwMDAwMDA0ZjBiN2UgaW4gc3ViX3NlbGVjdCAo
 am9pbj0weDg5MGMwZmE1MCwgam9pbl90YWI9MHg4MTAzYjQ1OTAsIGVuZF9vZl9yZWNvcmRzPVZh
 cmlhYmxlICJlbmRfb2ZfcmVjb3JkcyIgaXMgbm90IGF2YWlsYWJsZS4KKSBhdCBzcWxfc2VsZWN0
 LmNjOjEwNjE1CiM5ICAweDAwMDAwMDAwMDA1MDVlNzAgaW4gZG9fc2VsZWN0IChqb2luPTB4ODkw
 YzBmYTUwLCBmaWVsZHM9MHg4OTBjMTBjZTAsIHRhYmxlPTB4MCwgcHJvY2VkdXJlPTB4MCkgYXQg
 c3FsX3NlbGVjdC5jYzoxMDM3MwojMTAgMHgwMDAwMDAwMDAwNTA5MmY2IGluIEpPSU46OmV4ZWMg
 KHRoaXM9MHg4OTBjMGZhNTApIGF0IHNxbF9zZWxlY3QuY2M6MjEyMAojMTEgMHgwMDAwMDAwMDAw
 NTBiMWZkIGluIG15c3FsX3NlbGVjdCAodGhkPTB4ODBmOGNiMDAwLCBycmVmX3BvaW50ZXJfYXJy
 YXk9MHg4MGY4Y2M5ODgsIHRhYmxlcz0weDg5MGMwZjJiMCwgd2lsZF9udW09MCwgZmllbGRzPVZh
 cmlhYmxlICJmaWVsZHMiIGlzIG5vdCBhdmFpbGFibGUuCikgYXQgc3FsX3NlbGVjdC5jYzoyMjk4
 CiMxMiAweDAwMDAwMDAwMDA1MGJkMDggaW4gaGFuZGxlX3NlbGVjdCAodGhkPTB4ODBmOGNiMDAw
 LCBsZXg9MHg4MGY4Y2MzMjAsIHJlc3VsdD0weDg5MGMwZmEzMCwgc2V0dXBfdGFibGVzX2RvbmVf
 b3B0aW9uPTApIGF0IHNxbF9zZWxlY3QuY2M6MjU2CiMxMyAweDAwMDAwMDAwMDA0Yjk1OTEgaW4g
 bXlzcWxfZXhlY3V0ZV9jb21tYW5kICh0aGQ9MHg4MGY4Y2IwMDApIGF0IHNxbF9wYXJzZS5jYzoy
 Njc2CiMxNCAweDAwMDAwMDAwMDA0YmNjMTMgaW4gbXlzcWxfcGFyc2UgKHRoZD0weDgwZjhjYjAw
 MCwgaW5CdWY9MHg4OTBjMGYwMTAgIlNFTEVDVCBDT1VOVCgqKSBGUk9NIGVtYWlsX3BhcmFsbGVs
 LmVtYWlsX3RpbWluZ3MgV0hFUkUgaWQgQkVUV0VFTiAyMDExNDA0NzQ0IEFORCAyMDExNDA1MDUy
 IiwgbGVuZ3RoPTkyLCAKICAgIGZvdW5kX3NlbWljb2xvbj0weDdmZmZmZWI3NGQ0OCkgYXQgc3Fs
 X3BhcnNlLmNjOjYxMjMKIzE1IDB4MDAwMDAwMDAwMDRiZGMyMiBpbiBkaXNwYXRjaF9jb21tYW5k
 IChjb21tYW5kPUNPTV9RVUVSWSwgdGhkPTB4ODBmOGNiMDAwLCBwYWNrZXQ9MHg4MGY4Y2UwMDEg
 IiIsIHBhY2tldF9sZW5ndGg9VmFyaWFibGUgInBhY2tldF9sZW5ndGgiIGlzIG5vdCBhdmFpbGFi
 bGUuCikgYXQgc3FsX3BhcnNlLmNjOjE4MTIKIzE2IDB4MDAwMDAwMDAwMDRiZTViMCBpbiBkb19j
 b21tYW5kICh0aGQ9MHg4MGY4Y2IwMDApIGF0IHNxbF9wYXJzZS5jYzoxNTg2CiMxNyAweDAwMDAw
 MDAwMDA0YmVlZWYgaW4gaGFuZGxlX29uZV9jb25uZWN0aW9uIChhcmc9VmFyaWFibGUgImFyZyIg
 aXMgbm90IGF2YWlsYWJsZS4KKSBhdCBzcWxfcGFyc2UuY2M6MTE5NwojMTggMHgwMDAwMDAwODAx
 MzNhYjM3IGluIHRocmVhZF9zdGFydCAoY3VydGhyZWFkPTB4ODAxNzA0NzAwKSBhdCAvdXNyL3Ny
 Yy9saWIvbGlidGhyL3RocmVhZC90aHJfY3JlYXRlLmM6MjU2CiMxOSAweDAwMDA3ZmZmZmViMzUw
 MDAgaW4gPz8gKCkKRXJyb3IgYWNjZXNzaW5nIG1lbW9yeSBhZGRyZXNzIDB4N2ZmZmZlYjc1MDAw
 OiBCYWQgYWRkcmVzcy4KCgoKKGdkYikgdGhyZWFkIDgKW1N3aXRjaGluZyB0byB0aHJlYWQgOCAo
 VGhyZWFkIDB4ODAxNzA0ODgwIChMV1AgMTAwMjg0KSldIzAgIDB4MDAwMDAwMDgwMTM0MjY3YyBp
 biBfdW10eF9vcF9lcnIgKCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci9hcmNoL2FtZDY0L2FtZDY0
 L191bXR4X29wX2Vyci5TOjM3CjM3ICAgICAgUlNZU0NBTExfRVJSKF91bXR4X29wKQooZ2RiKSBi
 dAojMCAgMHgwMDAwMDAwODAxMzQyNjdjIGluIF91bXR4X29wX2VyciAoKSBhdCAvdXNyL3NyYy9s
 aWIvbGlidGhyL2FyY2gvYW1kNjQvYW1kNjQvX3VtdHhfb3BfZXJyLlM6MzcKIzEgIDB4MDAwMDAw
 MDgwMTM0MGQxNSBpbiBjb25kX3dhaXRfY29tbW9uIChjb25kPVZhcmlhYmxlICJjb25kIiBpcyBu
 b3QgYXZhaWxhYmxlLgopIGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIvdGhyZWFkL3Rocl9jb25kLmM6
 MjA0CiMyICAweDAwMDAwMDAwMDA3NGI1YWQgaW4gc2FmZV9jb25kX3dhaXQgKGNvbmQ9MHg4MTAz
 MDY2NjgsIG1wPTB4ODEwMzQ3MzU4LCBmaWxlPTB4ODRkNDI5ICJ0aHJfbG9jay5jIiwgbGluZT00
 MTgpIGF0IHRocl9tdXRleC5jOjIwMgojMyAgMHgwMDAwMDAwMDAwNzRhNWJjIGluIHdhaXRfZm9y
 X2xvY2sgKHdhaXQ9MHg4MTAzNDczODAsIGRhdGE9MHg4MGZiNzAyYzgsIGluX3dhaXRfbGlzdD0w
 ICdcMCcpIGF0IHRocl9sb2NrLmM6NDE4CiM0ICAweDAwMDAwMDAwMDA3NGFjNWIgaW4gdGhyX2xv
 Y2sgKGRhdGE9MHg4MGZiNzAyYzgsIG93bmVyPTB4ODBmOGMzYzIwLCBsb2NrX3R5cGU9VmFyaWFi
 bGUgImxvY2tfdHlwZSIgaXMgbm90IGF2YWlsYWJsZS4KKSBhdCB0aHJfbG9jay5jOjY4NwojNSAg
 MHgwMDAwMDAwMDAwNzRiMTc3IGluIHRocl9tdWx0aV9sb2NrIChkYXRhPTB4ODEwMzE5MzAwLCBj
 b3VudD0xLCBvd25lcj0weDgwZjhjM2MyMCkgYXQgdGhyX2xvY2suYzo5NTIKIzYgIDB4MDAwMDAw
 MDAwMDQ5YTA0NSBpbiBteXNxbF9sb2NrX3RhYmxlcyAodGhkPTB4ODBmOGMzMDAwLCB0YWJsZXM9
 MHg4MTAzZWZhMjgsIGNvdW50PTEsIGZsYWdzPVZhcmlhYmxlICJmbGFncyIgaXMgbm90IGF2YWls
 YWJsZS4KKSBhdCBsb2NrLmNjOjE3MgojNyAgMHgwMDAwMDAwMDAwNGQ3ZTYwIGluIGxvY2tfdGFi
 bGVzICh0aGQ9MHg4MGY4YzMwMDAsIHRhYmxlcz0weDgxMDNlZjJiMCwgY291bnQ9VmFyaWFibGUg
 ImNvdW50IiBpcyBub3QgYXZhaWxhYmxlLgopIGF0IHNxbF9iYXNlLmNjOjMxOTEKIzggIDB4MDAw
 MDAwMDAwMDRkZWMxNCBpbiBvcGVuX2FuZF9sb2NrX3RhYmxlcyAodGhkPTB4ODBmOGMzMDAwLCB0
 YWJsZXM9MHg4MTAzZWYyYjApIGF0IHNxbF9iYXNlLmNjOjMwNDYKIzkgIDB4MDAwMDAwMDAwMDRi
 OTU0YSBpbiBteXNxbF9leGVjdXRlX2NvbW1hbmQgKHRoZD0weDgwZjhjMzAwMCkgYXQgc3FsX3Bh
 cnNlLmNjOjI2NDMKIzEwIDB4MDAwMDAwMDAwMDRiY2MxMyBpbiBteXNxbF9wYXJzZSAodGhkPTB4
 ODBmOGMzMDAwLCBpbkJ1Zj0weDgxMDNlZjAxMCAiU0VMRUNUIENPVU5UKCopIEZST00gZW1haWxf
 cGFyYWxsZWwuZW1haWxfdGltaW5ncyBXSEVSRSBpZCBCRVRXRUVOIDIwMTQ4MjIyMjYgQU5EIDIw
 MTQ4MjMyMTEiLCBsZW5ndGg9OTIsIAogICAgZm91bmRfc2VtaWNvbG9uPTB4N2ZmZmZlOWVlZDQ4
 KSBhdCBzcWxfcGFyc2UuY2M6NjEyMwojMTEgMHgwMDAwMDAwMDAwNGJkYzIyIGluIGRpc3BhdGNo
 X2NvbW1hbmQgKGNvbW1hbmQ9Q09NX1FVRVJZLCB0aGQ9MHg4MGY4YzMwMDAsIHBhY2tldD0weDgw
 ZjhjNjAwMSAiU0VMRUNUIENPVU5UKCopIEZST00gZW1haWxfcGFyYWxsZWwuZW1haWxfdGltaW5n
 cyBXSEVSRSBpZCBCRVRXRUVOIDIwMTQ4MjIyMjYgQU5EIDIwMTQ4MjMyMTEiLCAKICAgIHBhY2tl
 dF9sZW5ndGg9VmFyaWFibGUgInBhY2tldF9sZW5ndGgiIGlzIG5vdCBhdmFpbGFibGUuCikgYXQg
 c3FsX3BhcnNlLmNjOjE4MTIKIzEyIDB4MDAwMDAwMDAwMDRiZTViMCBpbiBkb19jb21tYW5kICh0
 aGQ9MHg4MGY4YzMwMDApIGF0IHNxbF9wYXJzZS5jYzoxNTg2CiMxMyAweDAwMDAwMDAwMDA0YmVl
 ZWYgaW4gaGFuZGxlX29uZV9jb25uZWN0aW9uIChhcmc9VmFyaWFibGUgImFyZyIgaXMgbm90IGF2
 YWlsYWJsZS4KKSBhdCBzcWxfcGFyc2UuY2M6MTE5NwojMTQgMHgwMDAwMDAwODAxMzNhYjM3IGlu
 IHRocmVhZF9zdGFydCAoY3VydGhyZWFkPTB4ODAxNzA0ODgwKSBhdCAvdXNyL3NyYy9saWIvbGli
 dGhyL3RocmVhZC90aHJfY3JlYXRlLmM6MjU2CiMxNSAweDAwMDA3ZmZmZmU5YWYwMDAgaW4gPz8g
 KCkKRXJyb3IgYWNjZXNzaW5nIG1lbW9yeSBhZGRyZXNzIDB4N2ZmZmZlOWVmMDAwOiBCYWQgYWRk
 cmVzcy4KCgoKKGdkYikgdGhyZWFkIDkKW1N3aXRjaGluZyB0byB0aHJlYWQgOSAoVGhyZWFkIDB4
 ODAxNzAzZTAwIChMV1AgMTAwMjgzKSldIzAgIDB4MDAwMDAwMDgwMTM0MjY3YyBpbiBfdW10eF9v
 cF9lcnIgKCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci9hcmNoL2FtZDY0L2FtZDY0L191bXR4X29w
 X2Vyci5TOjM3CjM3ICAgICAgUlNZU0NBTExfRVJSKF91bXR4X29wKQooZ2RiKSBidAojMCAgMHgw
 MDAwMDAwODAxMzQyNjdjIGluIF91bXR4X29wX2VyciAoKSBhdCAvdXNyL3NyYy9saWIvbGlidGhy
 L2FyY2gvYW1kNjQvYW1kNjQvX3VtdHhfb3BfZXJyLlM6MzcKIzEgIDB4MDAwMDAwMDgwMTM0MGQx
 NSBpbiBjb25kX3dhaXRfY29tbW9uIChjb25kPVZhcmlhYmxlICJjb25kIiBpcyBub3QgYXZhaWxh
 YmxlLgopIGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIvdGhyZWFkL3Rocl9jb25kLmM6MjA0CiMyICAw
 eDAwMDAwMDAwMDA3NGI1YWQgaW4gc2FmZV9jb25kX3dhaXQgKGNvbmQ9MHg4MTAzMDY1YzgsIG1w
 PTB4ODEwMzQ3MzU4LCBmaWxlPTB4ODRkNDI5ICJ0aHJfbG9jay5jIiwgbGluZT00MTgpIGF0IHRo
 cl9tdXRleC5jOjIwMgojMyAgMHgwMDAwMDAwMDAwNzRhNWJjIGluIHdhaXRfZm9yX2xvY2sgKHdh
 aXQ9MHg4MTAzNDczODAsIGRhdGE9MHg4OTBiMGUyYzgsIGluX3dhaXRfbGlzdD0wICdcMCcpIGF0
 IHRocl9sb2NrLmM6NDE4CiM0ICAweDAwMDAwMDAwMDA3NGFjNWIgaW4gdGhyX2xvY2sgKGRhdGE9
 MHg4OTBiMGUyYzgsIG93bmVyPTB4ODBmOGJiYzIwLCBsb2NrX3R5cGU9VmFyaWFibGUgImxvY2tf
 dHlwZSIgaXMgbm90IGF2YWlsYWJsZS4KKSBhdCB0aHJfbG9jay5jOjY4NwojNSAgMHgwMDAwMDAw
 MDAwNzRiMTc3IGluIHRocl9tdWx0aV9sb2NrIChkYXRhPTB4ODkwOTAyMDYwLCBjb3VudD0xLCBv
 d25lcj0weDgwZjhiYmMyMCkgYXQgdGhyX2xvY2suYzo5NTIKIzYgIDB4MDAwMDAwMDAwMDQ5YTA0
 NSBpbiBteXNxbF9sb2NrX3RhYmxlcyAodGhkPTB4ODBmOGJiMDAwLCB0YWJsZXM9MHg4MTAzNzVh
 MjgsIGNvdW50PTEsIGZsYWdzPVZhcmlhYmxlICJmbGFncyIgaXMgbm90IGF2YWlsYWJsZS4KKSBh
 dCBsb2NrLmNjOjE3MgojNyAgMHgwMDAwMDAwMDAwNGQ3ZTYwIGluIGxvY2tfdGFibGVzICh0aGQ9
 MHg4MGY4YmIwMDAsIHRhYmxlcz0weDgxMDM3NTJiMCwgY291bnQ9VmFyaWFibGUgImNvdW50IiBp
 cyBub3QgYXZhaWxhYmxlLgopIGF0IHNxbF9iYXNlLmNjOjMxOTEKIzggIDB4MDAwMDAwMDAwMDRk
 ZWMxNCBpbiBvcGVuX2FuZF9sb2NrX3RhYmxlcyAodGhkPTB4ODBmOGJiMDAwLCB0YWJsZXM9MHg4
 MTAzNzUyYjApIGF0IHNxbF9iYXNlLmNjOjMwNDYKIzkgIDB4MDAwMDAwMDAwMDRiOTU0YSBpbiBt
 eXNxbF9leGVjdXRlX2NvbW1hbmQgKHRoZD0weDgwZjhiYjAwMCkgYXQgc3FsX3BhcnNlLmNjOjI2
 NDMKIzEwIDB4MDAwMDAwMDAwMDRiY2MxMyBpbiBteXNxbF9wYXJzZSAodGhkPTB4ODBmOGJiMDAw
 LCBpbkJ1Zj0weDgxMDM3NTAxMCAiU0VMRUNUIENPVU5UKCopIEZST00gZW1haWxfcGFyYWxsZWwu
 ZW1haWxfdGltaW5ncyBXSEVSRSBpZCBCRVRXRUVOIDIwMTE3NTM1NjkgQU5EIDIwMTE3NTQwMTci
 LCBsZW5ndGg9OTIsIAogICAgZm91bmRfc2VtaWNvbG9uPTB4N2ZmZmZlOGVhZDQ4KSBhdCBzcWxf
 cGFyc2UuY2M6NjEyMwojMTEgMHgwMDAwMDAwMDAwNGJkYzIyIGluIGRpc3BhdGNoX2NvbW1hbmQg
 KGNvbW1hbmQ9Q09NX1FVRVJZLCB0aGQ9MHg4MGY4YmIwMDAsIHBhY2tldD0weDgwZjhiZTAwMSAi
 U0VMRUNUIENPVU5UKCopIEZST00gZW1haWxfcGFyYWxsZWwuZW1haWxfdGltaW5ncyBXSEVSRSBp
 ZCBCRVRXRUVOIDIwMTE3NTM1NjkgQU5EIDIwMTE3NTQwMTciLCAKICAgIHBhY2tldF9sZW5ndGg9
 VmFyaWFibGUgInBhY2tldF9sZW5ndGgiIGlzIG5vdCBhdmFpbGFibGUuCikgYXQgc3FsX3BhcnNl
 LmNjOjE4MTIKIzEyIDB4MDAwMDAwMDAwMDRiZTViMCBpbiBkb19jb21tYW5kICh0aGQ9MHg4MGY4
 YmIwMDApIGF0IHNxbF9wYXJzZS5jYzoxNTg2CiMxMyAweDAwMDAwMDAwMDA0YmVlZWYgaW4gaGFu
 ZGxlX29uZV9jb25uZWN0aW9uIChhcmc9VmFyaWFibGUgImFyZyIgaXMgbm90IGF2YWlsYWJsZS4K
 KSBhdCBzcWxfcGFyc2UuY2M6MTE5NwojMTQgMHgwMDAwMDAwODAxMzNhYjM3IGluIHRocmVhZF9z
 dGFydCAoY3VydGhyZWFkPTB4ODAxNzAzZTAwKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL3RocmVh
 ZC90aHJfY3JlYXRlLmM6MjU2CiMxNSAweDAwMDA3ZmZmZmU4YWIwMDAgaW4gPz8gKCkKRXJyb3Ig
 YWNjZXNzaW5nIG1lbW9yeSBhZGRyZXNzIDB4N2ZmZmZlOGViMDAwOiBCYWQgYWRkcmVzcy4KCgoo
 Z2RiKSB0aHJlYWQgMTAKW1N3aXRjaGluZyB0byB0aHJlYWQgMTAgKFRocmVhZCAweDgwMTcwMzk4
 MCAoTFdQIDEwMDI4MikpXSMwICAweDAwMDAwMDA4MDEzNDI2N2MgaW4gX3VtdHhfb3BfZXJyICgp
 IGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIvYXJjaC9hbWQ2NC9hbWQ2NC9fdW10eF9vcF9lcnIuUzoz
 NwozNyAgICAgIFJTWVNDQUxMX0VSUihfdW10eF9vcCkKKGdkYikgYnQKIzAgIDB4MDAwMDAwMDgw
 MTM0MjY3YyBpbiBfdW10eF9vcF9lcnIgKCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci9hcmNoL2Ft
 ZDY0L2FtZDY0L191bXR4X29wX2Vyci5TOjM3CiMxICAweDAwMDAwMDA4MDEzNDBkMTUgaW4gY29u
 ZF93YWl0X2NvbW1vbiAoY29uZD1WYXJpYWJsZSAiY29uZCIgaXMgbm90IGF2YWlsYWJsZS4KKSBh
 dCAvdXNyL3NyYy9saWIvbGlidGhyL3RocmVhZC90aHJfY29uZC5jOjIwNAojMiAgMHgwMDAwMDAw
 MDAwNzRiNWFkIGluIHNhZmVfY29uZF93YWl0IChjb25kPTB4ODEwMzA2NDg4LCBtcD0weDgxMDM0
 NzM1OCwgZmlsZT0weDg0ZDQyOSAidGhyX2xvY2suYyIsIGxpbmU9NDE4KSBhdCB0aHJfbXV0ZXgu
 YzoyMDIKIzMgIDB4MDAwMDAwMDAwMDc0YTViYyBpbiB3YWl0X2Zvcl9sb2NrICh3YWl0PTB4ODEw
 MzQ3MzgwLCBkYXRhPTB4ODBmZTFkMmM4LCBpbl93YWl0X2xpc3Q9MCAnXDAnKSBhdCB0aHJfbG9j
 ay5jOjQxOAojNCAgMHgwMDAwMDAwMDAwNzRhYzViIGluIHRocl9sb2NrIChkYXRhPTB4ODBmZTFk
 MmM4LCBvd25lcj0weDgwZjhiM2MyMCwgbG9ja190eXBlPVZhcmlhYmxlICJsb2NrX3R5cGUiIGlz
 IG5vdCBhdmFpbGFibGUuCikgYXQgdGhyX2xvY2suYzo2ODcKIzUgIDB4MDAwMDAwMDAwMDc0YjE3
 NyBpbiB0aHJfbXVsdGlfbG9jayAoZGF0YT0weDg5MDUwMjA5MCwgY291bnQ9MSwgb3duZXI9MHg4
 MGY4YjNjMjApIGF0IHRocl9sb2NrLmM6OTUyCiM2ICAweDAwMDAwMDAwMDA0OWEwNDUgaW4gbXlz
 cWxfbG9ja190YWJsZXMgKHRoZD0weDgwZjhiMzAwMCwgdGFibGVzPTB4ODEwMzEyYTI4LCBjb3Vu
 dD0xLCBmbGFncz1WYXJpYWJsZSAiZmxhZ3MiIGlzIG5vdCBhdmFpbGFibGUuCikgYXQgbG9jay5j
 YzoxNzIKIzcgIDB4MDAwMDAwMDAwMDRkN2U2MCBpbiBsb2NrX3RhYmxlcyAodGhkPTB4ODBmOGIz
 MDAwLCB0YWJsZXM9MHg4MTAzMTIyYjAsIGNvdW50PVZhcmlhYmxlICJjb3VudCIgaXMgbm90IGF2
 YWlsYWJsZS4KKSBhdCBzcWxfYmFzZS5jYzozMTkxCiM4ICAweDAwMDAwMDAwMDA0ZGVjMTQgaW4g
 b3Blbl9hbmRfbG9ja190YWJsZXMgKHRoZD0weDgwZjhiMzAwMCwgdGFibGVzPTB4ODEwMzEyMmIw
 KSBhdCBzcWxfYmFzZS5jYzozMDQ2CiM5ICAweDAwMDAwMDAwMDA0Yjk1NGEgaW4gbXlzcWxfZXhl
 Y3V0ZV9jb21tYW5kICh0aGQ9MHg4MGY4YjMwMDApIGF0IHNxbF9wYXJzZS5jYzoyNjQzCiMxMCAw
 eDAwMDAwMDAwMDA0YmNjMTMgaW4gbXlzcWxfcGFyc2UgKHRoZD0weDgwZjhiMzAwMCwgaW5CdWY9
 MHg4MTAzMTIwMTAgIlNFTEVDVCBDT1VOVCgqKSBGUk9NIGVtYWlsX3BhcmFsbGVsLmVtYWlsX3Rp
 bWluZ3MgV0hFUkUgaWQgQkVUV0VFTiAyMDE0MDI5NjI1IEFORCAyMDE0MDMwMDI0IiwgbGVuZ3Ro
 PTkyLCAKICAgIGZvdW5kX3NlbWljb2xvbj0weDdmZmZmZTYxZmQ0OCkgYXQgc3FsX3BhcnNlLmNj
 OjYxMjMKIzExIDB4MDAwMDAwMDAwMDRiZGMyMiBpbiBkaXNwYXRjaF9jb21tYW5kIChjb21tYW5k
 PUNPTV9RVUVSWSwgdGhkPTB4ODBmOGIzMDAwLCBwYWNrZXQ9MHg4MGY4YjYwMDEgIlNFTEVDVCBD
 T1VOVCgqKSBGUk9NIGVtYWlsX3BhcmFsbGVsLmVtYWlsX3RpbWluZ3MgV0hFUkUgaWQgQkVUV0VF
 TiAyMDE0MDI5NjI1IEFORCAyMDE0MDMwMDI0IiwgCiAgICBwYWNrZXRfbGVuZ3RoPVZhcmlhYmxl
 ICJwYWNrZXRfbGVuZ3RoIiBpcyBub3QgYXZhaWxhYmxlLgopIGF0IHNxbF9wYXJzZS5jYzoxODEy
 CiMxMiAweDAwMDAwMDAwMDA0YmU1YjAgaW4gZG9fY29tbWFuZCAodGhkPTB4ODBmOGIzMDAwKSBh
 dCBzcWxfcGFyc2UuY2M6MTU4NgojMTMgMHgwMDAwMDAwMDAwNGJlZWVmIGluIGhhbmRsZV9vbmVf
 Y29ubmVjdGlvbiAoYXJnPVZhcmlhYmxlICJhcmciIGlzIG5vdCBhdmFpbGFibGUuCikgYXQgc3Fs
 X3BhcnNlLmNjOjExOTcKIzE0IDB4MDAwMDAwMDgwMTMzYWIzNyBpbiB0aHJlYWRfc3RhcnQgKGN1
 cnRocmVhZD0weDgwMTcwMzk4MCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci90aHJlYWQvdGhyX2Ny
 ZWF0ZS5jOjI1NgojMTUgMHgwMDAwN2ZmZmZlNWUwMDAwIGluID8/ICgpCkVycm9yIGFjY2Vzc2lu
 ZyBtZW1vcnkgYWRkcmVzcyAweDdmZmZmZTYyMDAwMDogQmFkIGFkZHJlc3MuCgoKKGdkYikgdGhy
 ZWFkIDExCltTd2l0Y2hpbmcgdG8gdGhyZWFkIDExIChUaHJlYWQgMHg4MDE3MDRhMDAgKExXUCAx
 MDAyODEpKV0jMCAgMHgwMDAwMDAwODAxMzQyNjdjIGluIF91bXR4X29wX2VyciAoKSBhdCAvdXNy
 L3NyYy9saWIvbGlidGhyL2FyY2gvYW1kNjQvYW1kNjQvX3VtdHhfb3BfZXJyLlM6MzcKMzcgICAg
 ICBSU1lTQ0FMTF9FUlIoX3VtdHhfb3ApCihnZGIpIGJ0CiMwICAweDAwMDAwMDA4MDEzNDI2N2Mg
 aW4gX3VtdHhfb3BfZXJyICgpIGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIvYXJjaC9hbWQ2NC9hbWQ2
 NC9fdW10eF9vcF9lcnIuUzozNwojMSAgMHgwMDAwMDAwODAxMzQwZDE1IGluIGNvbmRfd2FpdF9j
 b21tb24gKGNvbmQ9VmFyaWFibGUgImNvbmQiIGlzIG5vdCBhdmFpbGFibGUuCikgYXQgL3Vzci9z
 cmMvbGliL2xpYnRoci90aHJlYWQvdGhyX2NvbmQuYzoyMDQKIzIgIDB4MDAwMDAwMDAwMDc0YjVh
 ZCBpbiBzYWZlX2NvbmRfd2FpdCAoY29uZD0weDgxMDMwNjNlOCwgbXA9MHg4MTAzNDczNTgsIGZp
 bGU9MHg4NGQ0MjkgInRocl9sb2NrLmMiLCBsaW5lPTQxOCkgYXQgdGhyX211dGV4LmM6MjAyCiMz
 ICAweDAwMDAwMDAwMDA3NGE1YmMgaW4gd2FpdF9mb3JfbG9jayAod2FpdD0weDgxMDM0NzM4MCwg
 ZGF0YT0weDgwZmYxYzJjOCwgaW5fd2FpdF9saXN0PTAgJ1wwJykgYXQgdGhyX2xvY2suYzo0MTgK
 IzQgIDB4MDAwMDAwMDAwMDc0YWM1YiBpbiB0aHJfbG9jayAoZGF0YT0weDgwZmYxYzJjOCwgb3du
 ZXI9MHg4MGZiNmJjMjAsIGxvY2tfdHlwZT1WYXJpYWJsZSAibG9ja190eXBlIiBpcyBub3QgYXZh
 aWxhYmxlLgopIGF0IHRocl9sb2NrLmM6Njg3CiM1ICAweDAwMDAwMDAwMDA3NGIxNzcgaW4gdGhy
 X211bHRpX2xvY2sgKGRhdGE9MHg4OTBmMDIwNjAsIGNvdW50PTEsIG93bmVyPTB4ODBmYjZiYzIw
 KSBhdCB0aHJfbG9jay5jOjk1MgojNiAgMHgwMDAwMDAwMDAwNDlhMDQ1IGluIG15c3FsX2xvY2tf
 dGFibGVzICh0aGQ9MHg4MGZiNmIwMDAsIHRhYmxlcz0weDgxMDM0OWEyOCwgY291bnQ9MSwgZmxh
 Z3M9VmFyaWFibGUgImZsYWdzIiBpcyBub3QgYXZhaWxhYmxlLgopIGF0IGxvY2suY2M6MTcyCiM3
 ICAweDAwMDAwMDAwMDA0ZDdlNjAgaW4gbG9ja190YWJsZXMgKHRoZD0weDgwZmI2YjAwMCwgdGFi
 bGVzPTB4ODEwMzQ5MmIwLCBjb3VudD1WYXJpYWJsZSAiY291bnQiIGlzIG5vdCBhdmFpbGFibGUu
 CikgYXQgc3FsX2Jhc2UuY2M6MzE5MQojOCAgMHgwMDAwMDAwMDAwNGRlYzE0IGluIG9wZW5fYW5k
 X2xvY2tfdGFibGVzICh0aGQ9MHg4MGZiNmIwMDAsIHRhYmxlcz0weDgxMDM0OTJiMCkgYXQgc3Fs
 X2Jhc2UuY2M6MzA0NgojOSAgMHgwMDAwMDAwMDAwNGI5NTRhIGluIG15c3FsX2V4ZWN1dGVfY29t
 bWFuZCAodGhkPTB4ODBmYjZiMDAwKSBhdCBzcWxfcGFyc2UuY2M6MjY0MwojMTAgMHgwMDAwMDAw
 MDAwNGJjYzEzIGluIG15c3FsX3BhcnNlICh0aGQ9MHg4MGZiNmIwMDAsIGluQnVmPTB4ODEwMzQ5
 MDEwICJTRUxFQ1QgQ09VTlQoKikgRlJPTSBlbWFpbF9wYXJhbGxlbC5lbWFpbF90aW1pbmdzIFdI
 RVJFIGlkIEJFVFdFRU4gMjAxNDY5NTY2NCBBTkQgMjAxNDY5NTY3MCIsIGxlbmd0aD05MiwgCiAg
 ICBmb3VuZF9zZW1pY29sb249MHg3ZmZmZmU2NjBkNDgpIGF0IHNxbF9wYXJzZS5jYzo2MTIzCiMx
 MSAweDAwMDAwMDAwMDA0YmRjMjIgaW4gZGlzcGF0Y2hfY29tbWFuZCAoY29tbWFuZD1DT01fUVVF
 UlksIHRoZD0weDgwZmI2YjAwMCwgcGFja2V0PTB4ODBmOGFlMDAxICJTRUxFQ1QgQ09VTlQoKikg
 RlJPTSBlbWFpbF9wYXJhbGxlbC5lbWFpbF90aW1pbmdzIFdIRVJFIGlkIEJFVFdFRU4gMjAxNDY5
 NTY2NCBBTkQgMjAxNDY5NTY3MCIsIAogICAgcGFja2V0X2xlbmd0aD1WYXJpYWJsZSAicGFja2V0
 X2xlbmd0aCIgaXMgbm90IGF2YWlsYWJsZS4KKSBhdCBzcWxfcGFyc2UuY2M6MTgxMgojMTIgMHgw
 MDAwMDAwMDAwNGJlNWIwIGluIGRvX2NvbW1hbmQgKHRoZD0weDgwZmI2YjAwMCkgYXQgc3FsX3Bh
 cnNlLmNjOjE1ODYKIzEzIDB4MDAwMDAwMDAwMDRiZWVlZiBpbiBoYW5kbGVfb25lX2Nvbm5lY3Rp
 b24gKGFyZz1WYXJpYWJsZSAiYXJnIiBpcyBub3QgYXZhaWxhYmxlLgopIGF0IHNxbF9wYXJzZS5j
 YzoxMTk3CiMxNCAweDAwMDAwMDA4MDEzM2FiMzcgaW4gdGhyZWFkX3N0YXJ0IChjdXJ0aHJlYWQ9
 MHg4MDE3MDRhMDApIGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIvdGhyZWFkL3Rocl9jcmVhdGUuYzoy
 NTYKIzE1IDB4MDAwMDdmZmZmZTYyMTAwMCBpbiA/PyAoKQpFcnJvciBhY2Nlc3NpbmcgbWVtb3J5
 IGFkZHJlc3MgMHg3ZmZmZmU2NjEwMDA6IEJhZCBhZGRyZXNzLgoKCihnZGIpIHRocmVhZCAxMgpb
 U3dpdGNoaW5nIHRvIHRocmVhZCAxMiAoVGhyZWFkIDB4ODAxNzA0ZDAwIChMV1AgMTAwMjgwKSld
 IzAgIDB4MDAwMDAwMDgwMTM0MjY3YyBpbiBfdW10eF9vcF9lcnIgKCkgYXQgL3Vzci9zcmMvbGli
 L2xpYnRoci9hcmNoL2FtZDY0L2FtZDY0L191bXR4X29wX2Vyci5TOjM3CjM3ICAgICAgUlNZU0NB
 TExfRVJSKF91bXR4X29wKQooZ2RiKSBidAojMCAgMHgwMDAwMDAwODAxMzQyNjdjIGluIF91bXR4
 X29wX2VyciAoKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL2FyY2gvYW1kNjQvYW1kNjQvX3VtdHhf
 b3BfZXJyLlM6MzcKIzEgIDB4MDAwMDAwMDgwMTM0MGQxNSBpbiBjb25kX3dhaXRfY29tbW9uIChj
 b25kPVZhcmlhYmxlICJjb25kIiBpcyBub3QgYXZhaWxhYmxlLgopIGF0IC91c3Ivc3JjL2xpYi9s
 aWJ0aHIvdGhyZWFkL3Rocl9jb25kLmM6MjA0CiMyICAweDAwMDAwMDAwMDA3NGI1YWQgaW4gc2Fm
 ZV9jb25kX3dhaXQgKGNvbmQ9MHg4MTAzMDYyMDgsIG1wPTB4ODEwMzQ3MzU4LCBmaWxlPTB4ODRk
 NDI5ICJ0aHJfbG9jay5jIiwgbGluZT00MTgpIGF0IHRocl9tdXRleC5jOjIwMgojMyAgMHgwMDAw
 MDAwMDAwNzRhNWJjIGluIHdhaXRfZm9yX2xvY2sgKHdhaXQ9MHg4MTAzNDczODAsIGRhdGE9MHg4
 MGZlMDgyYzgsIGluX3dhaXRfbGlzdD0wICdcMCcpIGF0IHRocl9sb2NrLmM6NDE4CiM0ICAweDAw
 MDAwMDAwMDA3NGFjNWIgaW4gdGhyX2xvY2sgKGRhdGE9MHg4MGZlMDgyYzgsIG93bmVyPTB4ODBm
 YjYzYzIwLCBsb2NrX3R5cGU9VmFyaWFibGUgImxvY2tfdHlwZSIgaXMgbm90IGF2YWlsYWJsZS4K
 KSBhdCB0aHJfbG9jay5jOjY4NwojNSAgMHgwMDAwMDAwMDAwNzRiMTc3IGluIHRocl9tdWx0aV9s
 b2NrIChkYXRhPTB4ODEwMzE5MzMwLCBjb3VudD0xLCBvd25lcj0weDgwZmI2M2MyMCkgYXQgdGhy
 X2xvY2suYzo5NTIKIzYgIDB4MDAwMDAwMDAwMDQ5YTA0NSBpbiBteXNxbF9sb2NrX3RhYmxlcyAo
 dGhkPTB4ODBmYjYzMDAwLCB0YWJsZXM9MHg4OTBjMTdhMjgsIGNvdW50PTEsIGZsYWdzPVZhcmlh
 YmxlICJmbGFncyIgaXMgbm90IGF2YWlsYWJsZS4KKSBhdCBsb2NrLmNjOjE3MgojNyAgMHgwMDAw
 MDAwMDAwNGQ3ZTYwIGluIGxvY2tfdGFibGVzICh0aGQ9MHg4MGZiNjMwMDAsIHRhYmxlcz0weDg5
 MGMxNzJiMCwgY291bnQ9VmFyaWFibGUgImNvdW50IiBpcyBub3QgYXZhaWxhYmxlLgopIGF0IHNx
 bF9iYXNlLmNjOjMxOTEKIzggIDB4MDAwMDAwMDAwMDRkZWMxNCBpbiBvcGVuX2FuZF9sb2NrX3Rh
 YmxlcyAodGhkPTB4ODBmYjYzMDAwLCB0YWJsZXM9MHg4OTBjMTcyYjApIGF0IHNxbF9iYXNlLmNj
 OjMwNDYKIzkgIDB4MDAwMDAwMDAwMDRiOTU0YSBpbiBteXNxbF9leGVjdXRlX2NvbW1hbmQgKHRo
 ZD0weDgwZmI2MzAwMCkgYXQgc3FsX3BhcnNlLmNjOjI2NDMKIzEwIDB4MDAwMDAwMDAwMDRiY2Mx
 MyBpbiBteXNxbF9wYXJzZSAodGhkPTB4ODBmYjYzMDAwLCBpbkJ1Zj0weDg5MGMxNzAxMCAiU0VM
 RUNUIENPVU5UKCopIEZST00gZW1haWxfcGFyYWxsZWwuZW1haWxfdGltaW5ncyBXSEVSRSBpZCBC
 RVRXRUVOIDIwMDg1NDk0MDcgQU5EIDIwMDg1NTAzNzMiLCBsZW5ndGg9OTIsIAogICAgZm91bmRf
 c2VtaWNvbG9uPTB4N2ZmZmZlYmI1ZDQ4KSBhdCBzcWxfcGFyc2UuY2M6NjEyMwojMTEgMHgwMDAw
 MDAwMDAwNGJkYzIyIGluIGRpc3BhdGNoX2NvbW1hbmQgKGNvbW1hbmQ9Q09NX1FVRVJZLCB0aGQ9
 MHg4MGZiNjMwMDAsIHBhY2tldD0weDgwZmI2NjAwMSAiU0VMRUNUIENPVU5UKCopIEZST00gZW1h
 aWxfcGFyYWxsZWwuZW1haWxfdGltaW5ncyBXSEVSRSBpZCBCRVRXRUVOIDIwMDg1NDk0MDcgQU5E
 IDIwMDg1NTAzNzMiLCAKICAgIHBhY2tldF9sZW5ndGg9VmFyaWFibGUgInBhY2tldF9sZW5ndGgi
 IGlzIG5vdCBhdmFpbGFibGUuCikgYXQgc3FsX3BhcnNlLmNjOjE4MTIKIzEyIDB4MDAwMDAwMDAw
 MDRiZTViMCBpbiBkb19jb21tYW5kICh0aGQ9MHg4MGZiNjMwMDApIGF0IHNxbF9wYXJzZS5jYzox
 NTg2CiMxMyAweDAwMDAwMDAwMDA0YmVlZWYgaW4gaGFuZGxlX29uZV9jb25uZWN0aW9uIChhcmc9
 VmFyaWFibGUgImFyZyIgaXMgbm90IGF2YWlsYWJsZS4KKSBhdCBzcWxfcGFyc2UuY2M6MTE5Nwoj
 MTQgMHgwMDAwMDAwODAxMzNhYjM3IGluIHRocmVhZF9zdGFydCAoY3VydGhyZWFkPTB4ODAxNzA0
 ZDAwKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL3RocmVhZC90aHJfY3JlYXRlLmM6MjU2CiMxNSAw
 eDAwMDA3ZmZmZmViNzYwMDAgaW4gPz8gKCkKRXJyb3IgYWNjZXNzaW5nIG1lbW9yeSBhZGRyZXNz
 IDB4N2ZmZmZlYmI2MDAwOiBCYWQgYWRkcmVzcy4KCgooZ2RiKSB0aHJlYWQgMTMKW1N3aXRjaGlu
 ZyB0byB0aHJlYWQgMTMgKFRocmVhZCAweDgwMTcwNTE4MCAoTFdQIDEwMDI1OSkpXSMwICAweDAw
 MDAwMDA4MDEzNDI2N2MgaW4gX3VtdHhfb3BfZXJyICgpIGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIv
 YXJjaC9hbWQ2NC9hbWQ2NC9fdW10eF9vcF9lcnIuUzozNwozNyAgICAgIFJTWVNDQUxMX0VSUihf
 dW10eF9vcCkKKGdkYikgYnQKIzAgIDB4MDAwMDAwMDgwMTM0MjY3YyBpbiBfdW10eF9vcF9lcnIg
 KCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci9hcmNoL2FtZDY0L2FtZDY0L191bXR4X29wX2Vyci5T
 OjM3CiMxICAweDAwMDAwMDA4MDEzNDBkMTUgaW4gY29uZF93YWl0X2NvbW1vbiAoY29uZD1WYXJp
 YWJsZSAiY29uZCIgaXMgbm90IGF2YWlsYWJsZS4KKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL3Ro
 cmVhZC90aHJfY29uZC5jOjIwNAojMiAgMHgwMDAwMDAwMDAwNzRiNWFkIGluIHNhZmVfY29uZF93
 YWl0IChjb25kPTB4ODEwMzA2MTY4LCBtcD0weDgxMDM0NzM1OCwgZmlsZT0weDg0ZDQyOSAidGhy
 X2xvY2suYyIsIGxpbmU9NDE4KSBhdCB0aHJfbXV0ZXguYzoyMDIKIzMgIDB4MDAwMDAwMDAwMDc0
 YTViYyBpbiB3YWl0X2Zvcl9sb2NrICh3YWl0PTB4ODEwMzQ3MzgwLCBkYXRhPTB4ODkwYzA2MmM4
 LCBpbl93YWl0X2xpc3Q9MCAnXDAnKSBhdCB0aHJfbG9jay5jOjQxOAojNCAgMHgwMDAwMDAwMDAw
 NzRhYzViIGluIHRocl9sb2NrIChkYXRhPTB4ODkwYzA2MmM4LCBvd25lcj0weDgwZmI1YmMyMCwg
 bG9ja190eXBlPVZhcmlhYmxlICJsb2NrX3R5cGUiIGlzIG5vdCBhdmFpbGFibGUuCikgYXQgdGhy
 X2xvY2suYzo2ODcKIzUgIDB4MDAwMDAwMDAwMDc0YjE3NyBpbiB0aHJfbXVsdGlfbG9jayAoZGF0
 YT0weDg5MDYwMjA2MCwgY291bnQ9MSwgb3duZXI9MHg4MGZiNWJjMjApIGF0IHRocl9sb2NrLmM6
 OTUyCiM2ICAweDAwMDAwMDAwMDA0OWEwNDUgaW4gbXlzcWxfbG9ja190YWJsZXMgKHRoZD0weDgw
 ZmI1YjAwMCwgdGFibGVzPTB4ODEwMzk2YTI4LCBjb3VudD0xLCBmbGFncz1WYXJpYWJsZSAiZmxh
 Z3MiIGlzIG5vdCBhdmFpbGFibGUuCikgYXQgbG9jay5jYzoxNzIKIzcgIDB4MDAwMDAwMDAwMDRk
 N2U2MCBpbiBsb2NrX3RhYmxlcyAodGhkPTB4ODBmYjViMDAwLCB0YWJsZXM9MHg4MTAzOTYyYjAs
 IGNvdW50PVZhcmlhYmxlICJjb3VudCIgaXMgbm90IGF2YWlsYWJsZS4KKSBhdCBzcWxfYmFzZS5j
 YzozMTkxCiM4ICAweDAwMDAwMDAwMDA0ZGVjMTQgaW4gb3Blbl9hbmRfbG9ja190YWJsZXMgKHRo
 ZD0weDgwZmI1YjAwMCwgdGFibGVzPTB4ODEwMzk2MmIwKSBhdCBzcWxfYmFzZS5jYzozMDQ2CiM5
 ICAweDAwMDAwMDAwMDA0Yjk1NGEgaW4gbXlzcWxfZXhlY3V0ZV9jb21tYW5kICh0aGQ9MHg4MGZi
 NWIwMDApIGF0IHNxbF9wYXJzZS5jYzoyNjQzCiMxMCAweDAwMDAwMDAwMDA0YmNjMTMgaW4gbXlz
 cWxfcGFyc2UgKHRoZD0weDgwZmI1YjAwMCwgaW5CdWY9MHg4MTAzOTYwMTAgIlNFTEVDVCBDT1VO
 VCgqKSBGUk9NIGVtYWlsX3BhcmFsbGVsLmVtYWlsX3RpbWluZ3MgV0hFUkUgaWQgQkVUV0VFTiAy
 MDE4NDg5MzcyIEFORCAyMDE4NDg5OTQ5IiwgbGVuZ3RoPTkyLCAKICAgIGZvdW5kX3NlbWljb2xv
 bj0weDdmZmZmZTc2NGQ0OCkgYXQgc3FsX3BhcnNlLmNjOjYxMjMKIzExIDB4MDAwMDAwMDAwMDRi
 ZGMyMiBpbiBkaXNwYXRjaF9jb21tYW5kIChjb21tYW5kPUNPTV9RVUVSWSwgdGhkPTB4ODBmYjVi
 MDAwLCBwYWNrZXQ9MHg4MGZiNWUwMDEgIlNFTEVDVCBDT1VOVCgqKSBGUk9NIGVtYWlsX3BhcmFs
 bGVsLmVtYWlsX3RpbWluZ3MgV0hFUkUgaWQgQkVUV0VFTiAyMDE4NDg5MzcyIEFORCAyMDE4NDg5
 OTQ5IiwgCiAgICBwYWNrZXRfbGVuZ3RoPVZhcmlhYmxlICJwYWNrZXRfbGVuZ3RoIiBpcyBub3Qg
 YXZhaWxhYmxlLgopIGF0IHNxbF9wYXJzZS5jYzoxODEyCiMxMiAweDAwMDAwMDAwMDA0YmU1YjAg
 aW4gZG9fY29tbWFuZCAodGhkPTB4ODBmYjViMDAwKSBhdCBzcWxfcGFyc2UuY2M6MTU4NgojMTMg
 MHgwMDAwMDAwMDAwNGJlZWVmIGluIGhhbmRsZV9vbmVfY29ubmVjdGlvbiAoYXJnPVZhcmlhYmxl
 ICJhcmciIGlzIG5vdCBhdmFpbGFibGUuCikgYXQgc3FsX3BhcnNlLmNjOjExOTcKIzE0IDB4MDAw
 MDAwMDgwMTMzYWIzNyBpbiB0aHJlYWRfc3RhcnQgKGN1cnRocmVhZD0weDgwMTcwNTE4MCkgYXQg
 L3Vzci9zcmMvbGliL2xpYnRoci90aHJlYWQvdGhyX2NyZWF0ZS5jOjI1NgojMTUgMHgwMDAwN2Zm
 ZmZlNzI1MDAwIGluID8/ICgpCkVycm9yIGFjY2Vzc2luZyBtZW1vcnkgYWRkcmVzcyAweDdmZmZm
 ZTc2NTAwMDogQmFkIGFkZHJlc3MuCgoKCihnZGIpIHRocmVhZCAxNApbU3dpdGNoaW5nIHRvIHRo
 cmVhZCAxNCAoVGhyZWFkIDB4ODAxNzA1NjAwIChMV1AgMTAwMTk4KSldIzAgIDB4MDAwMDAwMDgw
 MTUyYzBiYyBpbiByZWFkICgpIGF0IHJlYWQuUzoyCjIgICAgICAgUlNZU0NBTEwocmVhZCkKKGdk
 YikgYnQKIzAgIDB4MDAwMDAwMDgwMTUyYzBiYyBpbiByZWFkICgpIGF0IHJlYWQuUzoyCiMxICAw
 eDAwMDAwMDA4MDEzMzk3ZDAgaW4gX19yZWFkIChmZD0zMiwgYnVmPTB4ODBmOGE5MDAwLCBuYnl0
 ZXM9NCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci90aHJlYWQvdGhyX3N5c2NhbGxzLmM6Mzc5CiMy
 ICAweDAwMDAwMDAwMDA3MmM2MWEgaW4gdmlvX3JlYWQgKHZpbz0weDgwZjhhNjAzMCwgYnVmPTB4
 ODBmOGE5MDAwICJcMDAxIiwgc2l6ZT1WYXJpYWJsZSAic2l6ZSIgaXMgbm90IGF2YWlsYWJsZS4K
 KSBhdCB2aW9zb2NrZXQuYzo0MwojMyAgMHgwMDAwMDAwMDAwNDk0ZDE3IGluIG15X3JlYWxfcmVh
 ZCAobmV0PTB4ODBmOGEzMGMwLCBjb21wbGVuPTB4N2ZmZmZlNTlkZDcwKSBhdCBuZXRfc2Vydi5j
 Yzo4MTcKIzQgIDB4MDAwMDAwMDAwMDQ5NTMyNSBpbiBteV9uZXRfcmVhZCAobmV0PTB4ODBmOGEz
 MGMwKSBhdCBuZXRfc2Vydi5jYzo5OTEKIzUgIDB4MDAwMDAwMDAwMDRiZTU0NyBpbiBkb19jb21t
 YW5kICh0aGQ9MHg4MGY4YTMwMDApIGF0IHNxbF9wYXJzZS5jYzoxNTQ4CiM2ICAweDAwMDAwMDAw
 MDA0YmVlZWYgaW4gaGFuZGxlX29uZV9jb25uZWN0aW9uIChhcmc9VmFyaWFibGUgImFyZyIgaXMg
 bm90IGF2YWlsYWJsZS4KKSBhdCBzcWxfcGFyc2UuY2M6MTE5NwojNyAgMHgwMDAwMDAwODAxMzNh
 YjM3IGluIHRocmVhZF9zdGFydCAoY3VydGhyZWFkPTB4ODAxNzA1NjAwKSBhdCAvdXNyL3NyYy9s
 aWIvbGlidGhyL3RocmVhZC90aHJfY3JlYXRlLmM6MjU2CiM4ICAweDAwMDAwMDAwMDAwMDAwMDAg
 aW4gPz8gKCkKRXJyb3IgYWNjZXNzaW5nIG1lbW9yeSBhZGRyZXNzIDB4N2ZmZmZlNTllMDAwOiBC
 YWQgYWRkcmVzcy4KCgoKKGdkYikgdGhyZWFkIDE1CltTd2l0Y2hpbmcgdG8gdGhyZWFkIDE1IChU
 aHJlYWQgMHg4MDE3MDMwODAgKExXUCAxMDAxNjYpKV0jMCAgMHgwMDAwMDAwODAxNDk5OGVjIGlu
 IHNpZ3dhaXQgKCkgYXQgc2lnd2FpdC5TOjIKMiAgICAgICBSU1lTQ0FMTChzaWd3YWl0KQooZ2Ri
 KSBidAojMCAgMHgwMDAwMDAwODAxNDk5OGVjIGluIHNpZ3dhaXQgKCkgYXQgc2lnd2FpdC5TOjIK
 IzEgIDB4MDAwMDAwMDgwMTMzY2JmNyBpbiBfX3NpZ3dhaXQgKHNldD1WYXJpYWJsZSAic2V0IiBp
 cyBub3QgYXZhaWxhYmxlLgopIGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIvdGhyZWFkL3Rocl9zaWcu
 YzozODQKIzIgIDB4MDAwMDAwMDAwMDQ5ZTBmYiBpbiBzaWduYWxfaGFuZCAoYXJnPVZhcmlhYmxl
 ICJhcmciIGlzIG5vdCBhdmFpbGFibGUuCikgYXQgbXlzcWxkLmNjOjIzOTEKIzMgIDB4MDAwMDAw
 MDgwMTMzYWIzNyBpbiB0aHJlYWRfc3RhcnQgKGN1cnRocmVhZD0weDgwMTcwMzA4MCkgYXQgL3Vz
 ci9zcmMvbGliL2xpYnRoci90aHJlYWQvdGhyX2NyZWF0ZS5jOjI1NgojNCAgMHgwMDAwMDAwMDAw
 MDAwMDAwIGluID8/ICgpCkVycm9yIGFjY2Vzc2luZyBtZW1vcnkgYWRkcmVzcyAweDdmZmZmZWJm
 NzAwMDogQmFkIGFkZHJlc3MuCgoKCihnZGIpIHRocmVhZCAxNgpbU3dpdGNoaW5nIHRvIHRocmVh
 ZCAxNiAoVGhyZWFkIDB4ODAxNzAyZjAwIChMV1AgMTAwMTY1KSldIzAgIDB4MDAwMDAwMDgwMTM0
 MjY3YyBpbiBfdW10eF9vcF9lcnIgKCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci9hcmNoL2FtZDY0
 L2FtZDY0L191bXR4X29wX2Vyci5TOjM3CjM3ICAgICAgUlNZU0NBTExfRVJSKF91bXR4X29wKQoo
 Z2RiKSBidAojMCAgMHgwMDAwMDAwODAxMzQyNjdjIGluIF91bXR4X29wX2VyciAoKSBhdCAvdXNy
 L3NyYy9saWIvbGlidGhyL2FyY2gvYW1kNjQvYW1kNjQvX3VtdHhfb3BfZXJyLlM6MzcKIzEgIDB4
 MDAwMDAwMDgwMTM0MGQxNSBpbiBjb25kX3dhaXRfY29tbW9uIChjb25kPVZhcmlhYmxlICJjb25k
 IiBpcyBub3QgYXZhaWxhYmxlLgopIGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIvdGhyZWFkL3Rocl9j
 b25kLmM6MjA0CiMyICAweDAwMDAwMDAwMDA3NGI1YWQgaW4gc2FmZV9jb25kX3dhaXQgKGNvbmQ9
 MHg4MDE3OWY0YzgsIG1wPTB4ODAxNzlmNDkwLCBmaWxlPTB4ODQyYjFjICJvczBzeW5jLmMiLCBs
 aW5lPTM4MCkgYXQgdGhyX211dGV4LmM6MjAyCiMzICAweDAwMDAwMDAwMDA2ZTRmYmIgaW4gb3Nf
 ZXZlbnRfd2FpdCAoZXZlbnQ9MHg4MDE3OWY0OTApIGF0IG9zMHN5bmMuYzozODAKIzQgIDB4MDAw
 MDAwMDAwMDVmNTFmMyBpbiBzcnZfbWFzdGVyX3RocmVhZCAoYXJnPVZhcmlhYmxlICJhcmciIGlz
 IG5vdCBhdmFpbGFibGUuCikgYXQgc3J2MHNydi5jOjI1OTgKIzUgIDB4MDAwMDAwMDgwMTMzYWIz
 NyBpbiB0aHJlYWRfc3RhcnQgKGN1cnRocmVhZD0weDgwMTcwMmYwMCkgYXQgL3Vzci9zcmMvbGli
 L2xpYnRoci90aHJlYWQvdGhyX2NyZWF0ZS5jOjI1NgojNiAgMHgwMDAwMDAwMDAwMDAwMDAwIGlu
 ID8/ICgpCkVycm9yIGFjY2Vzc2luZyBtZW1vcnkgYWRkcmVzcyAweDdmZmZmZWRmODAwMDogQmFk
 IGFkZHJlc3MuCgoKCihnZGIpIHRocmVhZCAxNwpbU3dpdGNoaW5nIHRvIHRocmVhZCAxNyAoVGhy
 ZWFkIDB4ODAxNzAyZDgwIChMV1AgMTAwMTYzKSldIzAgIDB4MDAwMDAwMDgwMTUyYzAzYyBpbiBz
 ZWxlY3QgKCkgYXQgc2VsZWN0LlM6MgoyICAgICAgIFJTWVNDQUxMKHNlbGVjdCkKKGdkYikgYnQK
 IzAgIDB4MDAwMDAwMDgwMTUyYzAzYyBpbiBzZWxlY3QgKCkgYXQgc2VsZWN0LlM6MgojMSAgMHgw
 MDAwMDAwODAxMzM5NWU0IGluIF9fc2VsZWN0IChudW1mZHM9MCwgcmVhZGZkcz0weDAsIHdyaXRl
 ZmRzPTB4MCwgZXhjZXB0ZmRzPTB4MCwgdGltZW91dD0weDdmZmZmZWZmOGY2MCkgYXQgL3Vzci9z
 cmMvbGliL2xpYnRoci90aHJlYWQvdGhyX3N5c2NhbGxzLmM6NDM5CiMyICAweDAwMDAwMDAwMDA2
 ZTUzYmIgaW4gb3NfdGhyZWFkX3NsZWVwICh0bT1WYXJpYWJsZSAidG0iIGlzIG5vdCBhdmFpbGFi
 bGUuCikgYXQgb3MwdGhyZWFkLmM6Mjc0CiMzICAweDAwMDAwMDAwMDA1Zjc3MzAgaW4gc3J2X2Vy
 cm9yX21vbml0b3JfdGhyZWFkIChhcmc9VmFyaWFibGUgImFyZyIgaXMgbm90IGF2YWlsYWJsZS4K
 KSBhdCBzcnYwc3J2LmM6MjEwNgojNCAgMHgwMDAwMDAwODAxMzNhYjM3IGluIHRocmVhZF9zdGFy
 dCAoY3VydGhyZWFkPTB4ODAxNzAyZDgwKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL3RocmVhZC90
 aHJfY3JlYXRlLmM6MjU2CiM1ICAweDAwMDAwMDAwMDAwMDAwMDAgaW4gPz8gKCkKRXJyb3IgYWNj
 ZXNzaW5nIG1lbW9yeSBhZGRyZXNzIDB4N2ZmZmZlZmY5MDAwOiBCYWQgYWRkcmVzcy4KCgoKKGdk
 YikgdGhyZWFkIDE4CltTd2l0Y2hpbmcgdG8gdGhyZWFkIDE4IChUaHJlYWQgMHg4MDE3MDJjMDAg
 KExXUCAxMDAxNjQpKV0jMCAgMHgwMDAwMDAwODAxNTJjMDNjIGluIHNlbGVjdCAoKSBhdCBzZWxl
 Y3QuUzoyCjIgICAgICAgUlNZU0NBTEwoc2VsZWN0KQooZ2RiKSBidAojMCAgMHgwMDAwMDAwODAx
 NTJjMDNjIGluIHNlbGVjdCAoKSBhdCBzZWxlY3QuUzoyCiMxICAweDAwMDAwMDA4MDEzMzk1ZTQg
 aW4gX19zZWxlY3QgKG51bWZkcz0wLCByZWFkZmRzPTB4MCwgd3JpdGVmZHM9MHgwLCBleGNlcHRm
 ZHM9MHgwLCB0aW1lb3V0PTB4N2ZmZmZmMWY5ZjYwKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL3Ro
 cmVhZC90aHJfc3lzY2FsbHMuYzo0MzkKIzIgIDB4MDAwMDAwMDAwMDZlNTNiYiBpbiBvc190aHJl
 YWRfc2xlZXAgKHRtPVZhcmlhYmxlICJ0bSIgaXMgbm90IGF2YWlsYWJsZS4KKSBhdCBvczB0aHJl
 YWQuYzoyNzQKIzMgIDB4MDAwMDAwMDAwMDVmNzEyMCBpbiBzcnZfbG9ja190aW1lb3V0X2FuZF9t
 b25pdG9yX3RocmVhZCAoYXJnPVZhcmlhYmxlICJhcmciIGlzIG5vdCBhdmFpbGFibGUuCikgYXQg
 c3J2MHNydi5jOjE4ODIKIzQgIDB4MDAwMDAwMDgwMTMzYWIzNyBpbiB0aHJlYWRfc3RhcnQgKGN1
 cnRocmVhZD0weDgwMTcwMmMwMCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci90aHJlYWQvdGhyX2Ny
 ZWF0ZS5jOjI1NgojNSAgMHgwMDAwMDAwMDAwMDAwMDAwIGluID8/ICgpCkVycm9yIGFjY2Vzc2lu
 ZyBtZW1vcnkgYWRkcmVzcyAweDdmZmZmZjFmYTAwMDogQmFkIGFkZHJlc3MuCgoKCihnZGIpIHRo
 cmVhZCAxOQpbU3dpdGNoaW5nIHRvIHRocmVhZCAxOSAoVGhyZWFkIDB4ODAxNzAyOTAwIChMV1Ag
 MTAwMTYyKSldIzAgIDB4MDAwMDAwMDgwMTM0MjY3YyBpbiBfdW10eF9vcF9lcnIgKCkgYXQgL3Vz
 ci9zcmMvbGliL2xpYnRoci9hcmNoL2FtZDY0L2FtZDY0L191bXR4X29wX2Vyci5TOjM3CjM3ICAg
 ICAgUlNZU0NBTExfRVJSKF91bXR4X29wKQooZ2RiKSBidAojMCAgMHgwMDAwMDAwODAxMzQyNjdj
 IGluIF91bXR4X29wX2VyciAoKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL2FyY2gvYW1kNjQvYW1k
 NjQvX3VtdHhfb3BfZXJyLlM6MzcKIzEgIDB4MDAwMDAwMDgwMTM0MGQxNSBpbiBjb25kX3dhaXRf
 Y29tbW9uIChjb25kPVZhcmlhYmxlICJjb25kIiBpcyBub3QgYXZhaWxhYmxlLgopIGF0IC91c3Iv
 c3JjL2xpYi9saWJ0aHIvdGhyZWFkL3Rocl9jb25kLmM6MjA0CiMyICAweDAwMDAwMDAwMDA3NGI1
 YWQgaW4gc2FmZV9jb25kX3dhaXQgKGNvbmQ9MHg4MGVkYjBjYTgsIG1wPTB4ODBlZGIwYzcwLCBm
 aWxlPTB4ODQyYjFjICJvczBzeW5jLmMiLCBsaW5lPTM4MCkgYXQgdGhyX211dGV4LmM6MjAyCiMz
 ICAweDAwMDAwMDAwMDA2ZTRmYmIgaW4gb3NfZXZlbnRfd2FpdCAoZXZlbnQ9MHg4MGVkYjBjNzAp
 IGF0IG9zMHN5bmMuYzozODAKIzQgIDB4MDAwMDAwMDAwMDZlODU1MyBpbiBvc19haW9fc2ltdWxh
 dGVkX2hhbmRsZSAoZ2xvYmFsX3NlZ21lbnQ9MywgbWVzc2FnZTE9MHg3ZmZmZmY1ZmJmODgsIG1l
 c3NhZ2UyPTB4N2ZmZmZmNWZiZjgwLCB0eXBlPTB4N2ZmZmZmNWZiZjc4KSBhdCBvczBmaWxlLmM6
 NDA4OQojNSAgMHgwMDAwMDAwMDAwNmIwZTcxIGluIGZpbF9haW9fd2FpdCAoc2VnbWVudD0zKSBh
 dCBmaWwwZmlsLmM6NDEzMQojNiAgMHgwMDAwMDAwMDAwNWY3OWRjIGluIGlvX2hhbmRsZXJfdGhy
 ZWFkIChhcmc9VmFyaWFibGUgImFyZyIgaXMgbm90IGF2YWlsYWJsZS4KKSBhdCBzcnYwc3RhcnQu
 Yzo0NDYKIzcgIDB4MDAwMDAwMDgwMTMzYWIzNyBpbiB0aHJlYWRfc3RhcnQgKGN1cnRocmVhZD0w
 eDgwMTcwMjkwMCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci90aHJlYWQvdGhyX2NyZWF0ZS5jOjI1
 NgojOCAgMHgwMDAwMDAwMDAwMDAwMDAwIGluID8/ICgpCkVycm9yIGFjY2Vzc2luZyBtZW1vcnkg
 YWRkcmVzcyAweDdmZmZmZjVmYzAwMDogQmFkIGFkZHJlc3MuCgoKCihnZGIpIHRocmVhZCAyMApb
 U3dpdGNoaW5nIHRvIHRocmVhZCAyMCAoVGhyZWFkIDB4ODAxNzAyNzgwIChMV1AgMTAwMTYxKSld
 IzAgIDB4MDAwMDAwMDgwMTM0MjY3YyBpbiBfdW10eF9vcF9lcnIgKCkgYXQgL3Vzci9zcmMvbGli
 L2xpYnRoci9hcmNoL2FtZDY0L2FtZDY0L191bXR4X29wX2Vyci5TOjM3CjM3ICAgICAgUlNZU0NB
 TExfRVJSKF91bXR4X29wKQooZ2RiKSBidAojMCAgMHgwMDAwMDAwODAxMzQyNjdjIGluIF91bXR4
 X29wX2VyciAoKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL2FyY2gvYW1kNjQvYW1kNjQvX3VtdHhf
 b3BfZXJyLlM6MzcKIzEgIDB4MDAwMDAwMDgwMTM0MGQxNSBpbiBjb25kX3dhaXRfY29tbW9uIChj
 b25kPVZhcmlhYmxlICJjb25kIiBpcyBub3QgYXZhaWxhYmxlLgopIGF0IC91c3Ivc3JjL2xpYi9s
 aWJ0aHIvdGhyZWFkL3Rocl9jb25kLmM6MjA0CiMyICAweDAwMDAwMDAwMDA3NGI1YWQgaW4gc2Fm
 ZV9jb25kX3dhaXQgKGNvbmQ9MHg4MGVkYjBjMzgsIG1wPTB4ODBlZGIwYzAwLCBmaWxlPTB4ODQy
 YjFjICJvczBzeW5jLmMiLCBsaW5lPTM4MCkgYXQgdGhyX211dGV4LmM6MjAyCiMzICAweDAwMDAw
 MDAwMDA2ZTRmYmIgaW4gb3NfZXZlbnRfd2FpdCAoZXZlbnQ9MHg4MGVkYjBjMDApIGF0IG9zMHN5
 bmMuYzozODAKIzQgIDB4MDAwMDAwMDAwMDZlODU1MyBpbiBvc19haW9fc2ltdWxhdGVkX2hhbmRs
 ZSAoZ2xvYmFsX3NlZ21lbnQ9MiwgbWVzc2FnZTE9MHg3ZmZmZmY3ZmNmODgsIG1lc3NhZ2UyPTB4
 N2ZmZmZmN2ZjZjgwLCB0eXBlPTB4N2ZmZmZmN2ZjZjc4KSBhdCBvczBmaWxlLmM6NDA4OQojNSAg
 MHgwMDAwMDAwMDAwNmIwZTcxIGluIGZpbF9haW9fd2FpdCAoc2VnbWVudD0yKSBhdCBmaWwwZmls
 LmM6NDEzMQojNiAgMHgwMDAwMDAwMDAwNWY3OWRjIGluIGlvX2hhbmRsZXJfdGhyZWFkIChhcmc9
 VmFyaWFibGUgImFyZyIgaXMgbm90IGF2YWlsYWJsZS4KKSBhdCBzcnYwc3RhcnQuYzo0NDYKIzcg
 IDB4MDAwMDAwMDgwMTMzYWIzNyBpbiB0aHJlYWRfc3RhcnQgKGN1cnRocmVhZD0weDgwMTcwMjc4
 MCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci90aHJlYWQvdGhyX2NyZWF0ZS5jOjI1NgojOCAgMHgw
 MDAwMDAwMDAwMDAwMDAwIGluID8/ICgpCkVycm9yIGFjY2Vzc2luZyBtZW1vcnkgYWRkcmVzcyAw
 eDdmZmZmZjdmZDAwMDogQmFkIGFkZHJlc3MuCgoKKGdkYikgdGhyZWFkIDIxCltTd2l0Y2hpbmcg
 dG8gdGhyZWFkIDIxIChUaHJlYWQgMHg4MDE3MDI2MDAgKExXUCAxMDAxMzMpKV0jMCAgMHgwMDAw
 MDAwODAxMzQyNjdjIGluIF91bXR4X29wX2VyciAoKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL2Fy
 Y2gvYW1kNjQvYW1kNjQvX3VtdHhfb3BfZXJyLlM6MzcKMzcgICAgICBSU1lTQ0FMTF9FUlIoX3Vt
 dHhfb3ApCihnZGIpIGJ0CiMwICAweDAwMDAwMDA4MDEzNDI2N2MgaW4gX3VtdHhfb3BfZXJyICgp
 IGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIvYXJjaC9hbWQ2NC9hbWQ2NC9fdW10eF9vcF9lcnIuUzoz
 NwojMSAgMHgwMDAwMDAwODAxMzQwZDE1IGluIGNvbmRfd2FpdF9jb21tb24gKGNvbmQ9VmFyaWFi
 bGUgImNvbmQiIGlzIG5vdCBhdmFpbGFibGUuCikgYXQgL3Vzci9zcmMvbGliL2xpYnRoci90aHJl
 YWQvdGhyX2NvbmQuYzoyMDQKIzIgIDB4MDAwMDAwMDAwMDc0YjVhZCBpbiBzYWZlX2NvbmRfd2Fp
 dCAoY29uZD0weDgwZWRiMGJjOCwgbXA9MHg4MGVkYjBiOTAsIGZpbGU9MHg4NDJiMWMgIm9zMHN5
 bmMuYyIsIGxpbmU9MzgwKSBhdCB0aHJfbXV0ZXguYzoyMDIKIzMgIDB4MDAwMDAwMDAwMDZlNGZi
 YiBpbiBvc19ldmVudF93YWl0IChldmVudD0weDgwZWRiMGI5MCkgYXQgb3Mwc3luYy5jOjM4MAoj
 NCAgMHgwMDAwMDAwMDAwNmU4NTUzIGluIG9zX2Fpb19zaW11bGF0ZWRfaGFuZGxlIChnbG9iYWxf
 c2VnbWVudD0xLCBtZXNzYWdlMT0weDdmZmZmZjlmZGY4OCwgbWVzc2FnZTI9MHg3ZmZmZmY5ZmRm
 ODAsIHR5cGU9MHg3ZmZmZmY5ZmRmNzgpIGF0IG9zMGZpbGUuYzo0MDg5CiM1ICAweDAwMDAwMDAw
 MDA2YjBlNzEgaW4gZmlsX2Fpb193YWl0IChzZWdtZW50PTEpIGF0IGZpbDBmaWwuYzo0MTMxCiM2
 ICAweDAwMDAwMDAwMDA1Zjc5ZGMgaW4gaW9faGFuZGxlcl90aHJlYWQgKGFyZz1WYXJpYWJsZSAi
 YXJnIiBpcyBub3QgYXZhaWxhYmxlLgopIGF0IHNydjBzdGFydC5jOjQ0NgojNyAgMHgwMDAwMDAw
 ODAxMzNhYjM3IGluIHRocmVhZF9zdGFydCAoY3VydGhyZWFkPTB4ODAxNzAyNjAwKSBhdCAvdXNy
 L3NyYy9saWIvbGlidGhyL3RocmVhZC90aHJfY3JlYXRlLmM6MjU2CiM4ICAweDAwMDAwMDAwMDAw
 MDAwMDAgaW4gPz8gKCkKRXJyb3IgYWNjZXNzaW5nIG1lbW9yeSBhZGRyZXNzIDB4N2ZmZmZmOWZl
 MDAwOiBCYWQgYWRkcmVzcy4KCgooZ2RiKSB0aHJlYWQgMjIKW1N3aXRjaGluZyB0byB0aHJlYWQg
 MjIgKFRocmVhZCAweDgwMTcwMjQ4MCAoTFdQIDEwMDA5MikpXSMwICAweDAwMDAwMDA4MDEzNDI2
 N2MgaW4gX3VtdHhfb3BfZXJyICgpIGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIvYXJjaC9hbWQ2NC9h
 bWQ2NC9fdW10eF9vcF9lcnIuUzozNwozNyAgICAgIFJTWVNDQUxMX0VSUihfdW10eF9vcCkKKGdk
 YikgYnQKIzAgIDB4MDAwMDAwMDgwMTM0MjY3YyBpbiBfdW10eF9vcF9lcnIgKCkgYXQgL3Vzci9z
 cmMvbGliL2xpYnRoci9hcmNoL2FtZDY0L2FtZDY0L191bXR4X29wX2Vyci5TOjM3CiMxICAweDAw
 MDAwMDA4MDEzNDBkMTUgaW4gY29uZF93YWl0X2NvbW1vbiAoY29uZD1WYXJpYWJsZSAiY29uZCIg
 aXMgbm90IGF2YWlsYWJsZS4KKSBhdCAvdXNyL3NyYy9saWIvbGlidGhyL3RocmVhZC90aHJfY29u
 ZC5jOjIwNAojMiAgMHgwMDAwMDAwMDAwNzRiNWFkIGluIHNhZmVfY29uZF93YWl0IChjb25kPTB4
 ODBlZGIwYjU4LCBtcD0weDgwZWRiMGIyMCwgZmlsZT0weDg0MmIxYyAib3Mwc3luYy5jIiwgbGlu
 ZT0zODApIGF0IHRocl9tdXRleC5jOjIwMgojMyAgMHgwMDAwMDAwMDAwNmU0ZmJiIGluIG9zX2V2
 ZW50X3dhaXQgKGV2ZW50PTB4ODBlZGIwYjIwKSBhdCBvczBzeW5jLmM6MzgwCiM0ICAweDAwMDAw
 MDAwMDA2ZTg1NTMgaW4gb3NfYWlvX3NpbXVsYXRlZF9oYW5kbGUgKGdsb2JhbF9zZWdtZW50PTAs
 IG1lc3NhZ2UxPTB4N2ZmZmZmYmZlZjg4LCBtZXNzYWdlMj0weDdmZmZmZmJmZWY4MCwgdHlwZT0w
 eDdmZmZmZmJmZWY3OCkgYXQgb3MwZmlsZS5jOjQwODkKIzUgIDB4MDAwMDAwMDAwMDZiMGU3MSBp
 biBmaWxfYWlvX3dhaXQgKHNlZ21lbnQ9MCkgYXQgZmlsMGZpbC5jOjQxMzEKIzYgIDB4MDAwMDAw
 MDAwMDVmNzlkYyBpbiBpb19oYW5kbGVyX3RocmVhZCAoYXJnPVZhcmlhYmxlICJhcmciIGlzIG5v
 dCBhdmFpbGFibGUuCikgYXQgc3J2MHN0YXJ0LmM6NDQ2CiM3ICAweDAwMDAwMDA4MDEzM2FiMzcg
 aW4gdGhyZWFkX3N0YXJ0IChjdXJ0aHJlYWQ9MHg4MDE3MDI0ODApIGF0IC91c3Ivc3JjL2xpYi9s
 aWJ0aHIvdGhyZWFkL3Rocl9jcmVhdGUuYzoyNTYKIzggIDB4MDAwMDAwMDAwMDAwMDAwMCBpbiA/
 PyAoKQpFcnJvciBhY2Nlc3NpbmcgbWVtb3J5IGFkZHJlc3MgMHg3ZmZmZmZiZmYwMDA6IEJhZCBh
 ZGRyZXNzLgoKCihnZGIpIHRocmVhZCAyMgpbU3dpdGNoaW5nIHRvIHRocmVhZCAyMiAoVGhyZWFk
 IDB4ODAxNzAyNDgwIChMV1AgMTAwMDkyKSldIzAgIDB4MDAwMDAwMDgwMTM0MjY3YyBpbiBfdW10
 eF9vcF9lcnIgKCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci9hcmNoL2FtZDY0L2FtZDY0L191bXR4
 X29wX2Vyci5TOjM3CjM3ICAgICAgUlNZU0NBTExfRVJSKF91bXR4X29wKQooZ2RiKSBidAojMCAg
 MHgwMDAwMDAwODAxMzQyNjdjIGluIF91bXR4X29wX2VyciAoKSBhdCAvdXNyL3NyYy9saWIvbGli
 dGhyL2FyY2gvYW1kNjQvYW1kNjQvX3VtdHhfb3BfZXJyLlM6MzcKIzEgIDB4MDAwMDAwMDgwMTM0
 MGQxNSBpbiBjb25kX3dhaXRfY29tbW9uIChjb25kPVZhcmlhYmxlICJjb25kIiBpcyBub3QgYXZh
 aWxhYmxlLgopIGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIvdGhyZWFkL3Rocl9jb25kLmM6MjA0CiMy
 ICAweDAwMDAwMDAwMDA3NGI1YWQgaW4gc2FmZV9jb25kX3dhaXQgKGNvbmQ9MHg4MGVkYjBiNTgs
 IG1wPTB4ODBlZGIwYjIwLCBmaWxlPTB4ODQyYjFjICJvczBzeW5jLmMiLCBsaW5lPTM4MCkgYXQg
 dGhyX211dGV4LmM6MjAyCiMzICAweDAwMDAwMDAwMDA2ZTRmYmIgaW4gb3NfZXZlbnRfd2FpdCAo
 ZXZlbnQ9MHg4MGVkYjBiMjApIGF0IG9zMHN5bmMuYzozODAKIzQgIDB4MDAwMDAwMDAwMDZlODU1
 MyBpbiBvc19haW9fc2ltdWxhdGVkX2hhbmRsZSAoZ2xvYmFsX3NlZ21lbnQ9MCwgbWVzc2FnZTE9
 MHg3ZmZmZmZiZmVmODgsIG1lc3NhZ2UyPTB4N2ZmZmZmYmZlZjgwLCB0eXBlPTB4N2ZmZmZmYmZl
 Zjc4KSBhdCBvczBmaWxlLmM6NDA4OQojNSAgMHgwMDAwMDAwMDAwNmIwZTcxIGluIGZpbF9haW9f
 d2FpdCAoc2VnbWVudD0wKSBhdCBmaWwwZmlsLmM6NDEzMQojNiAgMHgwMDAwMDAwMDAwNWY3OWRj
 IGluIGlvX2hhbmRsZXJfdGhyZWFkIChhcmc9VmFyaWFibGUgImFyZyIgaXMgbm90IGF2YWlsYWJs
 ZS4KKSBhdCBzcnYwc3RhcnQuYzo0NDYKIzcgIDB4MDAwMDAwMDgwMTMzYWIzNyBpbiB0aHJlYWRf
 c3RhcnQgKGN1cnRocmVhZD0weDgwMTcwMjQ4MCkgYXQgL3Vzci9zcmMvbGliL2xpYnRoci90aHJl
 YWQvdGhyX2NyZWF0ZS5jOjI1NgojOCAgMHgwMDAwMDAwMDAwMDAwMDAwIGluID8/ICgpCkVycm9y
 IGFjY2Vzc2luZyBtZW1vcnkgYWRkcmVzcyAweDdmZmZmZmJmZjAwMDogQmFkIGFkZHJlc3MuCihn
 ZGIpIHRocmVhZCAyMwpbU3dpdGNoaW5nIHRvIHRocmVhZCAyMyAoVGhyZWFkIDB4ODAxNzAyMTgw
 IChMV1AgMTAwMjQ3KSldIzAgIDB4MDAwMDAwMDgwMTUyYzAzYyBpbiBzZWxlY3QgKCkgYXQgc2Vs
 ZWN0LlM6MgoyICAgICAgIFJTWVNDQUxMKHNlbGVjdCkKKGdkYikgYnQKIzAgIDB4MDAwMDAwMDgw
 MTUyYzAzYyBpbiBzZWxlY3QgKCkgYXQgc2VsZWN0LlM6MgojMSAgMHgwMDAwMDAwODAxMzM5NWU0
 IGluIF9fc2VsZWN0IChudW1mZHM9MTUsIHJlYWRmZHM9MHg3ZmZmZmZmZmU4NjAsIHdyaXRlZmRz
 PTB4MCwgZXhjZXB0ZmRzPTB4MCwgdGltZW91dD0weDApIGF0IC91c3Ivc3JjL2xpYi9saWJ0aHIv
 dGhyZWFkL3Rocl9zeXNjYWxscy5jOjQzOQojMiAgMHgwMDAwMDAwMDAwNGExZTA4IGluIGhhbmRs
 ZV9jb25uZWN0aW9uc19zb2NrZXRzIChhcmc9VmFyaWFibGUgImFyZyIgaXMgbm90IGF2YWlsYWJs
 ZS4KKSBhdCBteXNxbGQuY2M6NDE1NQojMyAgMHgwMDAwMDAwMDAwNGEyZTBhIGluIG1haW4gKGFy
 Z2M9VmFyaWFibGUgImFyZ2MiIGlzIG5vdCBhdmFpbGFibGUuCikgYXQgbXlzcWxkLmNjOjM2OTYK
 CgoKCg==
 --0016367d5c102e250904913e7cc1--

From owner-freebsd-threads@FreeBSD.ORG  Thu Sep 30 08:53:44 2010
Return-Path: 
Delivered-To: freebsd-threads@hub.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 3936D106566C;
	Thu, 30 Sep 2010 08:53:44 +0000 (UTC)
	(envelope-from davidxu@FreeBSD.org)
Received: from freefall.freebsd.org (freefall.freebsd.org
	[IPv6:2001:4f8:fff6::28])
	by mx1.freebsd.org (Postfix) with ESMTP id 102B98FC14;
	Thu, 30 Sep 2010 08:53:44 +0000 (UTC)
Received: from freefall.freebsd.org (localhost [127.0.0.1])
	by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id o8U8rhRE099493;
	Thu, 30 Sep 2010 08:53:43 GMT
	(envelope-from davidxu@freefall.freebsd.org)
Received: (from davidxu@localhost)
	by freefall.freebsd.org (8.14.4/8.14.4/Submit) id o8U8rh8p099489;
	Thu, 30 Sep 2010 08:53:43 GMT (envelope-from davidxu)
Date: Thu, 30 Sep 2010 08:53:43 GMT
Message-Id: <201009300853.o8U8rh8p099489@freefall.freebsd.org>
To: cgf@netapp.com, davidxu@FreeBSD.org, freebsd-threads@FreeBSD.org
From: davidxu@FreeBSD.org
Cc: 
Subject: Re: threads/150889: PTHREAD_MUTEX_INITIALIZER +
	pthread_mutex_destroy() == EINVAL
X-BeenThere: freebsd-threads@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Threading on FreeBSD 
List-Unsubscribe: , 
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Thu, 30 Sep 2010 08:53:44 -0000

Synopsis: PTHREAD_MUTEX_INITIALIZER + pthread_mutex_destroy() == EINVAL

State-Changed-From-To: open->closed
State-Changed-By: davidxu
State-Changed-When: Thu Sep 30 08:52:59 UTC 2010
State-Changed-Why: 
Fixed.

http://www.freebsd.org/cgi/query-pr.cgi?pr=150889

From owner-freebsd-threads@FreeBSD.ORG  Thu Sep 30 09:50:04 2010
Return-Path: 
Delivered-To: freebsd-threads@hub.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 180491065673
	for ;
	Thu, 30 Sep 2010 09:50:04 +0000 (UTC)
	(envelope-from gnats@FreeBSD.org)
Received: from freefall.freebsd.org (freefall.freebsd.org
	[IPv6:2001:4f8:fff6::28])
	by mx1.freebsd.org (Postfix) with ESMTP id 07C2F8FC08
	for ;
	Thu, 30 Sep 2010 09:50:04 +0000 (UTC)
Received: from freefall.freebsd.org (localhost [127.0.0.1])
	by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id o8U9o3YD052761
	for ;
	Thu, 30 Sep 2010 09:50:03 GMT
	(envelope-from gnats@freefall.freebsd.org)
Received: (from gnats@localhost)
	by freefall.freebsd.org (8.14.4/8.14.4/Submit) id o8U9o33F052760;
	Thu, 30 Sep 2010 09:50:03 GMT (envelope-from gnats)
Date: Thu, 30 Sep 2010 09:50:03 GMT
Message-Id: <201009300950.o8U9o33F052760@freefall.freebsd.org>
To: freebsd-threads@FreeBSD.org
From: David Xu 
Cc: 
Subject: Re: threads/141721: rtprio(1): (id|rt)prio priority resets when new
 thread is created
X-BeenThere: freebsd-threads@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
Reply-To: David Xu 
List-Id: Threading on FreeBSD 
List-Unsubscribe: , 
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Thu, 30 Sep 2010 09:50:04 -0000

The following reply was made to PR threads/141721; it has been noted by GNATS.

From: David Xu 
To: bug-followup@freebsd.org, c.kworr@gmail.com
Cc:  
Subject: Re: threads/141721: rtprio(1): (id|rt)prio priority resets when new
 thread is created
Date: Thu, 30 Sep 2010 17:48:05 +0000

 idle priority is not supported by libthr yet, the reason I don't
 want to enable it is kernel also may have trouble to handle idle
 thread. a thread in kernel holds a non-mutex lock and is preempted,
 it is possible to be starved by other threads, such a priority
 reversal can make system work rather badly.
 
 I think the thread preemption may should work in opposite direction.
 default, it should always be disabled in kernel, only some
 code knows where it is OK to be preempted:
 
 1. interrupt thread preempt others
 2. a thread returned to userland
 3. some kernel code, it knows it is doing large computation,
     or non-sense code, it turns on preemption, when it exits
     such code, it turns off preemption.
 
 idle thread does not mean it is not execute important code,
 idle thread can execute any code in kernel, so idle does not
 mean it is insignificant, the word 'idle' is bogus, priority
 does not mean it is important or less important.