From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id 1EC113858D37 for ; Thu, 18 Apr 2024 14:48:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1EC113858D37 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=ibm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 1EC113858D37 Authentication-Results: server2.sourceware.org; arc=fail smtp.remote-ip=148.163.156.1 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1713451687; cv=fail; b=GXqVMaaqTWX6RhZVxorAegHCPckwRRL8oSUuJVzOyXkQo5FEDWP6IwhWkFULZT3+3AOkBxY4nh81Fwxy/fIp81v+claFeyAKUQAQv8ngelQg6inwY7K1YmO2isu09TGlWl0SUwC7xHAsaZi0nN/B2soVzCDmgEpyJpq5wuJbTT8= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1713451687; c=relaxed/simple; bh=v9t0qRdLrQXU4iHiBGcM3e/3L6UiyxpFwqLmNHlu6xA=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=R4k4OJtqkIbHe/kQjjiPjdVMurkUpZezzTnFlTeaph96pN8LDCK38h6Lg9+Gd77zTP++I+zDfMmf4SW00YjNoU/uQtdBN77N0Ug6waIO7kdw4oDYsA7ciQ/DxvYIMUzxmfGp/bOb835bf8Mu3R1qF6US6RRlZqhDLC8Lw99RutE= ARC-Authentication-Results: i=2; server2.sourceware.org Received: from pps.filterd (m0353727.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 43ID2cU8031354 for ; Thu, 18 Apr 2024 13:26:36 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : content-type : mime-version; s=pp1; bh=E1rnIlez3OqrfuLDZMtNZfhJuX+0k9JyxrUel5Aye8U=; b=mycIg6BZSS++wiWPzO5IZdAHZM68fY7SdWzzbD/dRSrDjuVE2BF+wsW8h6uDLW8bdFdM VigbLsgIRnNkqLPyD7uKuzlMW+TU1mGs4N5Kykdk7DlpYNDYg4fWZf63r3eYCsxo+TcL lxbxwm1yC7Z7oJ+Ae5dtScuawtZEdcxDlY8UPLGXmWWvd/v7DWqzRdTjzDwNKb9g7XiG CFBlECXx3/DS6ystXbLQknWfNJOHoKe93SwHjTdjZPQdMtC4C+806LHfzjYVgumIP2QO KdpMJS34ehi62g4gZ9FLcDeR7Gv4nz70RMcMh1oD3ktc0WXmH1xa2zDlEyAXMZM4wZO/ lw== Received: from nam02-bn1-obe.outbound.protection.outlook.com (mail-bn1nam02lp2041.outbound.protection.outlook.com [104.47.51.41]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3xk41yr2em-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 18 Apr 2024 13:26:35 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OYYZCI7liNgTjrXrko1XLfB9gesD8+fwAPhcU96M3qpP6D+6+8X/2qfgu7RaltpXJan5rFHRHNJc2b7NsdYf0syF6jr1eMzPt9Y5cz8fidIxIBe/bPC604cSVvouhy0Uc243NDCdst6Nu4lKu/AuFfYDuLnoqa9OEVSnDyLKNha2UVuwfEv5JsUDPzGsgQA1Ii/AJBCFqzFcAX2cVm6SPwDQ9htpYlkMSiruQCCi0CbxY5U3kKk2Ecz6Tk5SvlsAQLNnDoWM/RQtzo+thC/eYU4Njto/6NavkB64DHHbCni+HRUzt/UsFEMU2QrKRjYe7jVTwhjqGCHJQtnDhSe9zA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GYy/PkSRLkRwIU/+9iLpcBq8/c1z5Z+PSYs8UcF9ERo=; b=FSfYW1mOv9PMg1zxJMxsorihPsPvXrLP0uEXFyEm70dSuFz2Vu5VfkJWoW/gCZGmahZzjHkJtzZeQBPO8y9nZCXI/Ab/DNU8WFlCO+JpwrL4Mj9s++frHSGEJoeCzWv5PJTF9FARHNftEGtxK03XgtMLGAYIgJj0ZnI5IDdR0r+ufx6DFrrtEkOu93YScBERZBwbvniPws6d8dDRud/AaNVnoKLBIsWNsIsgeuvkuKQCrCkiJkxi0UIY3t6lIRTJhf7SB3m0JACy6rQuxUmOoWINsTAkVULrhXiCVzRrhGCjZ1KmyWrVgmk2wnkU0q2ANNsvV3Dlwu316uiUA4zR+w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ibm.com; dmarc=pass action=none header.from=ibm.com; dkim=pass header.d=ibm.com; arc=none Received: from CH2PR15MB3544.namprd15.prod.outlook.com (2603:10b6:610:5::26) by DM6PR15MB3816.namprd15.prod.outlook.com (2603:10b6:5:2bf::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7452.50; Thu, 18 Apr 2024 13:26:31 +0000 Received: from CH2PR15MB3544.namprd15.prod.outlook.com ([fe80::86ba:f8f8:c478:6919]) by CH2PR15MB3544.namprd15.prod.outlook.com ([fe80::86ba:f8f8:c478:6919%3]) with mapi id 15.20.7452.049; Thu, 18 Apr 2024 13:26:31 +0000 From: Aditya Kamath1 To: Ulrich Weigand , Aditya Kamath1 via Gdb-patches CC: Sangamesh Mallayya Subject: [PATCH] Fix AIX thread exit events not being reported and UI to show kernel thread ID. Thread-Topic: [PATCH] Fix AIX thread exit events not being reported and UI to show kernel thread ID. Thread-Index: AQHakY91eI9J5qmDk0yrE7KXv56iZg== Date: Thu, 18 Apr 2024 13:26:31 +0000 Message-ID: Accept-Language: en-IN, en-US Content-Language: en-IN X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH2PR15MB3544:EE_|DM6PR15MB3816:EE_ x-ms-office365-filtering-correlation-id: d1e02237-078d-41b3-9292-08dc5fab294f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 1jHqulXx5iTYCNlAdOgxk/y5QWB5Zf26Dw79+wr4jqV2ZPCHgypHhlkFYdSzowHlKAgwG68rIDN9kwe8vjePbCdPH6zIv9CA5FMtnpX8Zkgd2MAHuWw3BsDbZRiTbKgWjxmc/IUUMm7BVsBqnWLkqdyUMF/yzzCElI/T//9IYO/v6+CGLjP+3wnvELjRbbNEsDl19P8wHGAgxbeKXRG9yg8bueRAt1nnV5Y717uEL39rGSqIQc8DbsII6n8jT9Us4rCKaYHLX9cx53w2K7QfyqGHB5NfZLl0VTFP+csC8xH9wWKoRxjJMAT6bWgzQ5gF1+CU+FOd8xEEHEvAjBxy6AjxWdlij5/Mmnwojf9FrJ7iAszZ4YB/6ZT0XkTh+sUWLM9EP14pwqAlEW4gAuRMX+13kz/F9ciB5TZQIBHxRVTUHfKR524quEljUH6DvM3JpCO5x4ikKzmU3eHeZLndp4vgIqsOhii6/ISBRHvwIJGdt5c6AQaP8gPjD6GatTXIYbEWx6pc3V9G6S3zPRDfNaYDEItjuQVlaWWILspV3WFwfkY060lvrRGl9ZbJeVFBTpirltA7pMiVycS/+Inu2Zwq9EHiDtUPelw4nqrvfwBK4EJJMVvD6Ns7WnaA/myXcZvHtazxoiKQlp1DOHB9pGGzDs2Hnlu4Ptlb+T4JUkgdagaFEVqTGMsgqEFktrG+eUUSw1p5gYUBs9ab5tvhtg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR15MB3544.namprd15.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376005)(366007)(1800799015)(38070700009);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?Windows-1252?Q?UMrWzZfSFL/G5AgRaeLvDg5ppX72XGzb2WVu/XwNrz8DeV/iB+14JE2B?= =?Windows-1252?Q?N6L4qE8/H9aGf5vtdybCnexgSgCuf+MhNLUQaDMpU6BR1qjGCdBRhFeP?= =?Windows-1252?Q?HUf8RpNKUFxojXLOF8VM/haQWc0e+wS9akW6FFsvlZBCOy1xKRUiI96R?= =?Windows-1252?Q?7vH3F6gIkdHA00R8sDq+qAWtCoH3wSx7wFnUvQipEMYzwBiK/yWzJ1tV?= =?Windows-1252?Q?hrBp4IUfYpqVunN/6lM4WALlLvD4mwvKmnqe/D9FHMlgt1AyM+ElR+Lq?= =?Windows-1252?Q?aYplyqO+pbP2aBLP7h35dXv4tl/8sEL/QWWmsnmu/B6LQ6RWtjWg5yMV?= =?Windows-1252?Q?u2PXrxyIh4M34BElYS9yMgoHRtOoES5J4MvE1ZcMz2+ikZ6SM6ng7lnP?= =?Windows-1252?Q?E4s06CqvnVLD8bZygToPU5ZAMxGx5NBHSM/YhYDQ2O0nsxL8P0/h9OXH?= =?Windows-1252?Q?BWlUFvFjYMNbNTsoGgfbh5D6UDMhe530ju5ZTBIDuIrn+h6uOrr/19KY?= =?Windows-1252?Q?hGkOL28K/cxfBUSrfVR7bg6iQLmWz1GZ65u64ygYJMBcNbE6pgDuDoke?= =?Windows-1252?Q?rM4b6SZsGpAonNNMl4+Aw7ShL8OrLVECmFMDTjc0M0YyE+giXC5HN8LU?= =?Windows-1252?Q?J/J+j6s5yOk8lt8E2p6zjTX/Et/R/WDQQvFwM3YPHJnHXx9ZHOelmSLY?= =?Windows-1252?Q?3UuXi7Rka2yMDF5lj5/mcywBPMYRt+SCxoszLcjmTu9VA0oKI1MiiX1Y?= =?Windows-1252?Q?UwhO7o716P+KDkzwaeSF+CqnUHf6H0JeNDpJCSIOdr0zQICWkIhVqG1m?= =?Windows-1252?Q?9NKsc8+ayA77Hgv0c94I0tb1hZISCPqhMMz1erM9sesfEX0wy60imI4t?= =?Windows-1252?Q?x4Lubn2XIhUU0o9XWd58IEUFTWg0uWwL058whcAZbV96lyaRprZ2qvqD?= =?Windows-1252?Q?MfRbGJkzegJUdk+bOPjypODdBRlC/IF1MtMl6C14/46nqOzTI0l8P1mq?= =?Windows-1252?Q?NRb1BQHh9Kaj5zz8zmN8nSP4dotZpicsYmPf7kloT/MdNuOm4asZwW/v?= =?Windows-1252?Q?en6yzwkUh7MGXNaXmi7+YLbY1G4b6u0BEilsEPqTxXOXsGmClCZTQjxJ?= =?Windows-1252?Q?qwA335akzK2g20BOtMTE4smNUwymLIZaLz+aUGghqg8FoYRKS8u5ubQ6?= =?Windows-1252?Q?Uemr194e9KYcunrb9T4xTgCsoXoZqycDshMzy/Pb8etUmRfhNaSNHbZl?= =?Windows-1252?Q?C0gvD14gU0oI2wjwvkYderCqHsTzRx7VVAo3Dz1o/OZtFMU46f5WmSIL?= =?Windows-1252?Q?A+YvM23O8VTiL+aStmACIIaBEwnPHoIcLv8BgdRJ62YbOyPQHgitRTqR?= =?Windows-1252?Q?HpwX1VNW8EcBVLv3gnchoS3VFVQsDPD+ns7yzIjn6yaK7qzOGb+uHfR8?= =?Windows-1252?Q?4MVoGEJWHttRD465uQSbud/6m8c5xTv8k68GV0zSNDI6feTcFckNelbA?= =?Windows-1252?Q?7T/noXe7MW39DKq0iOwuPxal6mT6lCLdK+56Dsz1Zg6R0sPedRZV9c0M?= =?Windows-1252?Q?pUaNNaLhIV7OQQeo64JlFBbLKq0oe/yT+QfDgEaCOABHeGkk8P4JLFw+?= =?Windows-1252?Q?fgs3xSfsI4Sw+j7lf4ScKzDcRkMSyeA0rVxfsHqzCso54X0KV5tp6wKY?= =?Windows-1252?Q?ElOeyWpq+NerJzEsla9jQCr7WFM9D8wquNx6LzmIXqcJZ56FxZtPDhvB?= =?Windows-1252?Q?iLUmqqn9ro1ZB8ba0HLDFkKudlAnXqLssxl6GzdA251edTWTnm6c+ddV?= =?Windows-1252?Q?yRpGWQ=3D=3D?= Content-Type: multipart/mixed; boundary="_004_CH2PR15MB3544001C62D1D9E198D8ADF9D60E2CH2PR15MB3544namp_" X-OriginatorOrg: ibm.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR15MB3544.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d1e02237-078d-41b3-9292-08dc5fab294f X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Apr 2024 13:26:31.6855 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: fcf67057-50c9-4ad4-98f3-ffca64add9e9 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: uWgn0B++74/FgRaMHwZ3dMCBVtlGFTzq1SeQf10EJFo2BShCaMtrwRiXU1cfN4kYa7u5usTIkfsVTXVofTkFxA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR15MB3816 X-Proofpoint-ORIG-GUID: JMsBNnh-iKJir_eMfRN86SeLvZ0QEN6C X-Proofpoint-GUID: JMsBNnh-iKJir_eMfRN86SeLvZ0QEN6C X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-04-18_11,2024-04-17_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 spamscore=0 suspectscore=0 bulkscore=0 phishscore=0 lowpriorityscore=0 adultscore=0 mlxlogscore=999 malwarescore=0 impostorscore=0 priorityscore=1501 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2404010000 definitions=main-2404180095 X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,HTML_MESSAGE,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_004_CH2PR15MB3544001C62D1D9E198D8ADF9D60E2CH2PR15MB3544namp_ Content-Type: multipart/alternative; boundary="_000_CH2PR15MB3544001C62D1D9E198D8ADF9D60E2CH2PR15MB3544namp_" --_000_CH2PR15MB3544001C62D1D9E198D8ADF9D60E2CH2PR15MB3544namp_ Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable Respected community members, Hi, Thank you for the comments in the [RFC] thread. Please find attached the patch. (See: 0001-Fix-AIX-thread-exit-events-not-b= eing-reported-and-UI.patch) In AIX, we were not reporting a thread exit event due to which we had a bad= UI. Hello World Hello World Hello World [New Thread 258] [New Thread 515] [New Thread 772] Thread 1 received signal SIGINT, Interrupt. 0xd0611d70 in _p_nsleep () from /usr/lib/libpthreads.a(_shr_xpg5.o) (gdb) info threads Id Target Id Frame * 1 Thread 1 (tid 26607979) (tid 26607979, running) 0xd0611d70 in _p_= nsleep () from /usr/lib/libpthreads.a(_shr_xpg5.o) 2 Thread 258 (tid 30998799) (tid 30998799, finished) aix-thread: ptrac= e (52, 30998799) returned -1 (errno =3D 3 The process does not exist.) More on this can be read here. [https://sourceware.org/pipermail/gdb-patches/2024= -April/208104.html] So, consider program 1 pasted below this email. This program creates 6 threads in total. In AIX once a thread reaches terminated state the information can be obtain= ed using pthdb_pthread_state() In this patch if the state is terminated then we do not want pbuf to keep t= he thread in its list so that we can delete the same from GDB=92s list i.e.= gbuf in sync_threadlists (). But we faced one problem. >Linux raises a ptrace() stop when a new thread is created. When using >li= bthread_db >I believe you should be placing a breakpoint in your thread library so tha= t you ?>can >capture new threads in userspace before they start executing (e.g. in the = >internal >routine in your thread library that eventually calls the thread's start ro= utine). As John mentioned in the RFC thread we need to set a breakpoint in the thre= ad library or similar to capture the new threads before it begins execution. This is currently not happening in AIX. Though in the pd_activate () we are= successful in pthdb_session_init () before the threads begin execution, in= sync_threadlists (), pthdb_pthread () and pthdb_pthread_ptid () return inv= alid thread ID=92s for thread except for the main thread. This results in break of the for loop and we not capturing the remaining 6 = new threads, since pbuf now has only one vector that is the main thread. So the next time when we come to sync_threadlists () we do have all the thr= eads in pbuf. But by then these 6 threads completed their execution and are in PST_TERM s= tate i.e. terminated state. In this stage we did not inform users that the threads are born. At this st= age we also have to show the threads exited or terminated. In order to fix this race I used a variable threads_reported to keep track = of how many threads have reported i.e we displayed new thread information. = So I want to make use of this to show new threads even though the six threa= ds are in terminated state at this stage. The condition if (state =3D=3D PST_TERM && data->threads_reported > 0) checks if we are at PST_TERM and if we reported the new threads. If we did = not we add the new threads in the pbuf list to allow GDB to display new thr= eads. For each new thread we increase the threads_reported variable and decrement= it for every delete. By this way we make sure that the next time post the new thread event [Addi= ng the threads to GDB list] display, when we are in sync_threadlists (), th= e condition if (state =3D=3D PST_TERM && data->threads_reported > 0) holds true and we do not have those terminated threads in the pbuf. This wi= ll make sure the terminated threads are removed. Sample output of GDB of program 1 is pasted below. Reading symbols from //gdb_tests/continue-pending-status_exit_test... (gdb) r Starting program: /gdb_tests/continue-pending-status_exit_test More threads Hello World Hello World Hello World Hello World Hello World Hello World [New Thread 258 (tid 32178533)] [New Thread 515 (tid 30343651)] [New Thread 772 (tid 33554909)] [New Thread 1029 (tid 24969489)] [New Thread 1286 (tid 18153945)] [New Thread 1543 (tid 30736739)] [Thread 258 (tid 32178533) exited] [Thread 515 (tid 30343651) exited] [Thread 772 (tid 33554909) exited] [Thread 1029 (tid 24969489) exited] [Thread 1286 (tid 18153945) exited] [Thread 1543 (tid 30736739) exited] Thread 1 received signal SIGINT, Interrupt. 0xd0611d70 in _p_nsleep () from /usr/lib/libpthread.a(_shr_xpg5.o) (gdb) inof threads Undefined command: "inof". Try "help". (gdb) info threads Id Target Id Frame * 1 Thread 1 (tid 31326579) ([running]) 0xd0611d70 in _p_nsleep () from = /usr/lib/libpthread.a(_shr_xpg5.o) (gdb) q A debugging session is active. Inferior 1 [process 9437570] will be killed. Quit anyway? (y or n) y All these workarounds are because we have problems in catching the new thre= ad event before the threads start executing. If we have that in place, perh= aps we can optimise this patch further. Kindly let me know your feedback for this patch. Also, some minor changes in the UI are made in this patch so that thread de= bugging information is the same like Linux. Have a nice day ahead. Thanks and regards, Aditya. #include #include #include #include #include pthread_barrier_t barrier; #define NUM_THREADS 3 void * thread_function (void *arg) { /* This ensures that the breakpoint is only hit after both threads are created, so the test can always switch to the non-event thread when the breakpoint triggers. */ // pthread_barrier_wait (&barrier); printf ("Hello World \n"); /* break here */ } int main (void) { int i; alarm (300); pthread_barrier_init (&barrier, NULL, NUM_THREADS); for (i =3D 0; i < NUM_THREADS; i++) { pthread_t thread; int res; res =3D pthread_create (&thread, NULL, thread_function, NULL); assert (res =3D=3D 0); } printf ("More threads \n"); for (i =3D 0; i < NUM_THREADS; i++) { pthread_t thread; int res; res =3D pthread_create (&thread, NULL, thread_function, NULL); assert (res =3D=3D 0); } while (1) sleep (1); return 0; } --_000_CH2PR15MB3544001C62D1D9E198D8ADF9D60E2CH2PR15MB3544namp_-- --_004_CH2PR15MB3544001C62D1D9E198D8ADF9D60E2CH2PR15MB3544namp_ Content-Type: application/octet-stream; name="0001-Fix-AIX-thread-exit-events-not-being-reported-and-UI.patch" Content-Description: 0001-Fix-AIX-thread-exit-events-not-being-reported-and-UI.patch Content-Disposition: attachment; filename="0001-Fix-AIX-thread-exit-events-not-being-reported-and-UI.patch"; size=9238; creation-date="Thu, 18 Apr 2024 12:59:41 GMT"; modification-date="Thu, 18 Apr 2024 12:59:41 GMT" Content-Transfer-Encoding: base64 RnJvbSBmNWQwZGI0MzIwZGRhYjdjYzUyZDU2YmI4ZWRmNjI2YTBmYzUwYWQ0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBZGl0eWEgVmlkeWFk aGFyIEthbWF0aCA8QWRpdHlhLkthbWF0aDFAaWJtLmNvbT4KRGF0ZTogVGh1 LCAxOCBBcHIgMjAyNCAwNzo0NjoxMyAtMDUwMApTdWJqZWN0OiBbUEFUQ0hd IEZpeCBBSVggdGhyZWFkIGV4aXQgZXZlbnRzIG5vdCBiZWluZyByZXBvcnRl ZCBhbmQgVUkgdG8gc2hvdwoga2VybmVsIHRocmVhZCBJRC4KCkluIEFJWCB3 aGVuIGEgdGhyZWFkIGV4aXRzIHdlIHdlcmUgbm90IHNob3dpbmcgdGhhdCBh IHRocmVhZCBleGl0IGV2ZW50IGhhcHBlbmVkCmFuZCBHREIgY29udGludWVk IHRvIGtlZXAgdGhlIHRlcm1pbmF0ZWQgdGhyZWFkcy4KCklmIHdlIGhhdmUg dGVybWluYXRlZCB0aHJlYWRzIHRoZW4gdGhlIFVJIG9uIGluZm8gdGhyZWFk cyBjb21tYW5kIHdpbGwgbG9vayBsaWtlCihnZGIpIGluZm8gdGhyZWFkcwog IElkICAgVGFyZ2V0IElkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRnJhbWUKKiAxICAgIFRocmVhZCAxICh0aWQgMjY2MDc5 NzksIHJ1bm5pbmcpICAgIDB4ZDA2MTFkNzAgaW4gX3BfbnNsZWVwICgpIGZy b20gL3Vzci9saWIvbGlicHRocmVhZHMuYShfc2hyX3hwZzUubykKICAyICAg IFRocmVhZCAyNTggKHRpZCAzMDk5ODc5OSwgZmluaXNoZWQpIGFpeC10aHJl YWQ6IHB0cmFjZSAoNTIsIDMwOTk4Nzk5KSByZXR1cm5lZCAtMSAoZXJybm8g PSAzIFRoZSBwcm9jZXNzIGRvZXMgbm90IGV4aXN0LikKCklmIHdlIHNlZSB0 aGUgZnJhbWUgaXMgbm90IGdldHRpbmcgZGlzcGxheWVkIGNvcnJlY3RseS4K ClRoZSByZWFzb24gZm9yIHRoZSBzYW1lIGlzIHRoYXQgaW4gQUlYIHdlIHdl cmUgbm90IG1hbmFnaW5nIHRocmVhZCBzdGF0ZXMuIEluIHBhcnRpY3VsYXIg d2UgZG8gbm90IGtub3cKd2hlbiBhIHRocmVhZCB0ZXJtaW5hdGVzLgoKVGhl IHJlYXNvbiBiZWluZyBpbiBzeW5jX3RocmVhZGxpc3RzICgpIHRoZSBwYnVm IGFuZCBnYnVmIGxpc3RzIHJlbWFpbiB0aGUgc2FtZSB0aG91Z2ggY2VydGFp biB0aHJlYWRzIGV4aXQuCgpUaGlzIHBhdGNoIGlzIGEgZml4IHRvIHRoZSBz YW1lLgoKQWxzbyBjZXJ0YWluIFVJIGlzIGNoYW5nZWQuCgpPbiBhIG5ldyB0 aHJlYWQgYm9ybiBhbmQgZXhpdCB0aGUgVUkgaW4gQUlYIHdpbGwgYmUgc2lt aWxhciB0byBMaW51eCB3aXRoIGJvdGggdXNlciBhbmQga2VybmVsIHRocmVh ZCBpbmZvcm1hdGlvbi4KCltOZXcgVGhyZWFkIDI1OCAodGlkIDMyMTc4NTMz KV0KW05ldyBUaHJlYWQgNTE1ICh0aWQgMzAzNDM2NTEpXQpbTmV3IFRocmVh ZCA3NzIgKHRpZCAzMzU1NDkwOSldCltOZXcgVGhyZWFkIDEwMjkgKHRpZCAy NDk2OTQ4OSldCltOZXcgVGhyZWFkIDEyODYgKHRpZCAxODE1Mzk0NSldCltO ZXcgVGhyZWFkIDE1NDMgKHRpZCAzMDczNjczOSldCltUaHJlYWQgMjU4ICh0 aWQgMzIxNzg1MzMpIGV4aXRlZF0KW1RocmVhZCA1MTUgKHRpZCAzMDM0MzY1 MSkgZXhpdGVkXQpbVGhyZWFkIDc3MiAodGlkIDMzNTU0OTA5KSBleGl0ZWRd CltUaHJlYWQgMTAyOSAodGlkIDI0OTY5NDg5KSBleGl0ZWRdCltUaHJlYWQg MTI4NiAodGlkIDE4MTUzOTQ1KSBleGl0ZWRdCltUaHJlYWQgMTU0MyAodGlk IDMwNzM2NzM5KSBleGl0ZWRdCgphbmQgaW5mbyB0aHJlYWRzIHdpbGwgbG9v ayBsaWtlCihnZGIpIGluZm8gdGhyZWFkcwogIElkICAgVGFyZ2V0IElkICAg ICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWUKKiAxICAgIFRocmVhZCAx ICh0aWQgMzEzMjY1NzkpIChbcnVubmluZ10pIDB4ZDA2MTFkNzAgaW4gX3Bf bnNsZWVwICgpIGZyb20gL3Vzci9saWIvbGlicHRocmVhZC5hKF9zaHJfeHBn NS5vKQotLS0KIGdkYi9haXgtdGhyZWFkLmMgfCA5MSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCA1NyBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9nZGIvYWl4LXRocmVhZC5jIGIvZ2RiL2FpeC10aHJlYWQu YwppbmRleCBjNzBiZDgyYmMyNC4uNWNjY2NmMDI4NzkgMTAwNjQ0Ci0tLSBh L2dkYi9haXgtdGhyZWFkLmMKKysrIGIvZ2RiL2FpeC10aHJlYWQuYwpAQCAt NTUsNiArNTUsNyBAQAogI2luY2x1ZGUgPHN5cy9yZWcuaD4KICNpbmNsdWRl IDxzY2hlZC5oPgogI2luY2x1ZGUgPHN5cy9wdGhkZWJ1Zy5oPgorI2luY2x1 ZGUgPHZlY3Rvcj4KIAogI2lmICFIQVZFX0RFQ0xfR0VUVEhSRFMKIGV4dGVy biBpbnQgZ2V0dGhyZHMgKHBpZF90LCBzdHJ1Y3QgdGhyZHNpbmZvNjQgKiwg aW50LCB0aWRfdCAqLCBpbnQpOwpAQCAtMTkwLDYgKzE5MSw5IEBAIHN0cnVj dCBhaXhfdGhyZWFkX3ZhcmlhYmxlcwogICAvKiBXaGV0aGVyIHRoZSBjdXJy ZW50IGFyY2hpdGVjdHVyZSBpcyA2NC1iaXQuCiAgICBPbmx5IHZhbGlkIHdo ZW4gcGRfYWJsZSBpcyB0cnVlLiAgKi8KICAgaW50IGFyY2g2NDsKKworICAv KiBEZXNjcmliZXMgdGhlIG51bWJlciBvZiB0aHJlYWQgYm9ybiBldmVudHMg aGF2ZSBiZWVuIHJlcG9ydGVkLiAgKi8KKyAgaW50IHRocmVhZHNfcmVwb3J0 ZWQgPSAwOwogfTsKIAogLyogS2V5IHRvIG91ciBwZXItaW5mZXJpb3IgZGF0 YS4gICovCkBAIC03NDAsMTEgKzc0NCw5IEBAIHN0YXRlMnN0ciAocHRoZGJf c3RhdGVfdCBzdGF0ZSkKIC8qIHFzb3J0KCkgY29tcGFyaXNvbiBmdW5jdGlv biBmb3Igc29ydGluZyBwZF90aHJlYWQgc3RydWN0cyBieSBwdGhpZC4gICov CiAKIHN0YXRpYyBpbnQKLXBjbXAgKGNvbnN0IHZvaWQgKnAxdiwgY29uc3Qg dm9pZCAqcDJ2KQorcGNtcCAoc3RydWN0IHBkX3RocmVhZCBwMXYsIHN0cnVj dCBwZF90aHJlYWQgcDJ2KQogewotICBzdHJ1Y3QgcGRfdGhyZWFkICpwMSA9 IChzdHJ1Y3QgcGRfdGhyZWFkICopIHAxdjsKLSAgc3RydWN0IHBkX3RocmVh ZCAqcDIgPSAoc3RydWN0IHBkX3RocmVhZCAqKSBwMnY7Ci0gIHJldHVybiBw MS0+cHRoaWQgPCBwMi0+cHRoaWQgPyAtMSA6IHAxLT5wdGhpZCA+IHAyLT5w dGhpZDsKKyAgcmV0dXJuIHAxdi5wdGhpZCA8IHAydi5wdGhpZDsKIH0KIAog LyogcHRpZCBjb21wYXJpc29uIGZ1bmN0aW9uICovCkBAIC04MjMsNyArODI1 LDYgQEAgc3luY190aHJlYWRsaXN0cyAocGlkX3QgcGlkKQogewogICBpbnQg Y21kLCBzdGF0dXM7CiAgIGludCBwY291bnQsIHBzaXplLCBwaSwgZ2NvdW50 LCBnaTsKLSAgc3RydWN0IHBkX3RocmVhZCAqcGJ1ZjsKICAgc3RydWN0IHRo cmVhZF9pbmZvICoqZ2J1ZiwgKipnLCAqdGhyZWFkOwogICBwdGhkYl9wdGhy ZWFkX3QgcGR0aWQ7CiAgIHB0aHJlYWRfdCBwdGhpZDsKQEAgLTgzMSwxMiAr ODMyLDEzIEBAIHN5bmNfdGhyZWFkbGlzdHMgKHBpZF90IHBpZCkKICAgcHJv Y2Vzc19zdHJhdHVtX3RhcmdldCAqcHJvY190YXJnZXQgPSBjdXJyZW50X2lu ZmVyaW9yICgpLT5wcm9jZXNzX3RhcmdldCAoKTsKICAgc3RydWN0IGFpeF90 aHJlYWRfdmFyaWFibGVzICpkYXRhOwogICBkYXRhID0gZ2V0X3RocmVhZF9k YXRhX2hlbHBlcl9mb3JfcGlkIChwaWQpOworICBzdGQ6OnZlY3RvcjxwZF90 aHJlYWQ+IHBidWY7CisgIHN0cnVjdCBwZF90aHJlYWQgYWl4X3BkX3RocmVh ZDsKIAogICAvKiBBY2N1bXVsYXRlIGFuIGFycmF5IG9mIGxpYnB0aGRlYnVn IHRocmVhZHMgc29ydGVkIGJ5IHB0aHJlYWQgaWQuICAqLwogCiAgIHBjb3Vu dCA9IDA7CiAgIHBzaXplID0gMTsKLSAgcGJ1ZiA9IFhORVdWRUMgKHN0cnVj dCBwZF90aHJlYWQsIHBzaXplKTsKIAogICBmb3IgKGNtZCA9IFBUSERCX0xJ U1RfRklSU1Q7OyBjbWQgPSBQVEhEQl9MSVNUX05FWFQpCiAgICAgewpAQCAt ODQ4LDI3ICs4NTAsMzYgQEAgc3luY190aHJlYWRsaXN0cyAocGlkX3QgcGlk KQogICAgICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTIHx8IHB0aGlk ID09IFBUSERCX0lOVkFMSURfUFRJRCkKIAljb250aW51ZTsKIAotICAgICAg aWYgKHBjb3VudCA9PSBwc2l6ZSkKLQl7Ci0JICBwc2l6ZSAqPSAyOwotCSAg cGJ1ZiA9IChzdHJ1Y3QgcGRfdGhyZWFkICopIHhyZWFsbG9jIChwYnVmLCAK LQkJCQkJCXBzaXplICogc2l6ZW9mICpwYnVmKTsKLQl9Ci0gICAgICBwYnVm W3Bjb3VudF0ucGR0aWQgPSBwZHRpZDsKLSAgICAgIHBidWZbcGNvdW50XS5w dGhpZCA9IHB0aGlkOworICAgICAgYWl4X3BkX3RocmVhZC5wZHRpZCA9IHBk dGlkOworICAgICAgYWl4X3BkX3RocmVhZC5wdGhpZCA9IHB0aGlkOworICAg ICAgcGJ1Zi5wdXNoX2JhY2sgKGFpeF9wZF90aHJlYWQpOwogICAgICAgcGNv dW50Kys7CiAgICAgfQogCi0gIGZvciAocGkgPSAwOyBwaSA8IHBjb3VudDsg cGkrKykKKyAgZm9yIChhdXRvIGl0ID0gcGJ1Zi5iZWdpbiAoKTsgaXQgIT0g cGJ1Zi5lbmQgKCk7KQogICAgIHsKLSAgICAgIHN0YXR1cyA9IHB0aGRiX3B0 aHJlYWRfdGlkIChkYXRhLT5wZF9zZXNzaW9uLCBwYnVmW3BpXS5wZHRpZCwg JnRpZCk7CisgICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3RpZCAoZGF0 YS0+cGRfc2Vzc2lvbiwgKCppdCkucGR0aWQsICZ0aWQpOwogICAgICAgaWYg KHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTKQogCXRpZCA9IFBUSERCX0lOVkFM SURfVElEOwotICAgICAgcGJ1ZltwaV0udGlkID0gdGlkOwotICAgIH0KIAot ICBxc29ydCAocGJ1ZiwgcGNvdW50LCBzaXplb2YgKnBidWYsIHBjbXApOwor ICAgICAgKCppdCkudGlkID0gdGlkOworICAgICAgcHRoZGJfc3RhdGVfdCBz dGF0ZTsKKworICAgICAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9zdGF0ZSAo ZGF0YS0+cGRfc2Vzc2lvbiwgKCppdCkucGR0aWQsICZzdGF0ZSk7CiAKKyAg ICAgIC8qIElmIHRoZSB0aHJlYWQgaXMgdGVybWluYXRlZCBhbmQgaGFzIG5v dCByZXBvcnRlZCBpdHMgZXhpc3RlbmNlCisJIG9yIG5ldyB0aHJlYWQgZXZl bnQsIHRoZW4gd2FpdCBmb3IgaXQgdG8gcmVwb3J0LiAgV2Ugd2FudCB1c2Vy cworCSB0byBrbm93IHRocmVhZHMgd2VyZSBhZGRlZCBhbmQgdGhlbiBkZWxl dGUuIFNvIGZpcnN0IGFkZCB0aGVtIHRvCisJIHBidWYgYW5kIHRoZSBuZXh0 IHRpbWUgc3luY190aHJlYWRsaXN0cyBpcyBjYWxsZWQgZGVsZXRlIHRoZW0g c2luY2UKKwkgZGF0YS0+dGhyZWFkc19yZXBvcnRlZCBpcyBndWFyZW50ZWVk IHRvIGJlIGdyZWF0ZXIgdGhhbiAwLiAgKi8KKworICAgICAgaWYgKHN0YXRl ID09IFBTVF9URVJNICYmIGRhdGEtPnRocmVhZHNfcmVwb3J0ZWQgPiAwKQor CXBidWYuZXJhc2UgKGl0KTsKKyAgICAgIGVsc2UKKwkrK2l0OworICAgIH0K KworICBzdGQ6OnNvcnQgKHBidWYuYmVnaW4gKCksIHBidWYuZW5kICgpLCBw Y21wKTsKICAgLyogQWNjdW11bGF0ZSBhbiBhcnJheSBvZiBHREIgdGhyZWFk cyBzb3J0ZWQgYnkgcGlkLiAgKi8KIAogICAvKiBnY291bnQgaXMgR0RCIHRo cmVhZCBjb3VudCBhbmQgcGNvdW50IGlzIHB0aHJlYWRsaWIgdGhyZWFkIGNv dW50LiAgKi8KQEAgLTg4MSw2ICs4OTIsNyBAQCBzeW5jX3RocmVhZGxpc3Rz IChwaWRfdCBwaWQpCiAgICAgKmcrKyA9IHRwOwogICBxc29ydCAoZ2J1Ziwg Z2NvdW50LCBzaXplb2YgKmdidWYsIGdjbXApOwogCisgIHBjb3VudCA9IHBi dWYuc2l6ZSAoKTsKICAgLyogQXBwbHkgZGlmZmVyZW5jZXMgYmV0d2VlbiB0 aGUgdHdvIGFycmF5cyB0byBHREIncyB0aHJlYWQgbGlzdC4gICovCiAKICAg Zm9yIChwaSA9IGdpID0gMDsgcGkgPCBwY291bnQgfHwgZ2kgPCBnY291bnQ7 KQpAQCAtODg5LDYgKzkwMSwxMiBAQCBzeW5jX3RocmVhZGxpc3RzIChwaWRf dCBwaWQpCiAJewogCSAgZGVsZXRlX3RocmVhZCAoZ2J1ZltnaV0pOwogCSAg Z2krKzsKKwkgIGRhdGEtPnRocmVhZHNfcmVwb3J0ZWQtLTsKKworCSAgLyog U2luY2UgbWFpbiB0aHJlYWQgaXMgcmVwb3J0ZWQuICAqLworCisJICBpZiAo ZGF0YS0+dGhyZWFkc19yZXBvcnRlZCA9PSAwKQorCSAgICBkYXRhLT50aHJl YWRzX3JlcG9ydGVkID0gMTsKIAl9CiAgICAgICBlbHNlIGlmIChnaSA9PSBn Y291bnQpCiAJewpAQCAtOTAxLDYgKzkxOSw3IEBAIHN5bmNfdGhyZWFkbGlz dHMgKHBpZF90IHBpZCkKIAkJCQkJIHByaXZhdGVfdGhyZWFkX2luZm9fdXAg KHByaXYpKTsKIAogCSAgcGkrKzsKKwkgIGRhdGEtPnRocmVhZHNfcmVwb3J0 ZWQrKzsKIAl9CiAgICAgICBlbHNlCiAJewpAQCAtOTEzLDcgKzkzMiw2IEBA IHN5bmNfdGhyZWFkbGlzdHMgKHBpZF90IHBpZCkKIAkgIHRpZCA9IHBidWZb cGldLnRpZDsKIAogCSAgY21wX3Jlc3VsdCA9IHB0aWRfY21wIChwcHRpZCwg Z3B0aWQpOwotCiAJICBpZiAoY21wX3Jlc3VsdCA9PSAwKQogCSAgICB7CiAJ ICAgICAgYWl4X3RocmVhZF9pbmZvICpwcml2ID0gZ2V0X2FpeF90aHJlYWRf aW5mbyAoZ2J1ZltnaV0pOwpAQCAtOTQzLDYgKzk2MSwxMCBAQCBzeW5jX3Ro cmVhZGxpc3RzIChwaWRfdCBwaWQpCiAJCXsKIAkJICBkZWxldGVfdGhyZWFk IChnYnVmW2dpXSk7CiAJCSAgZ2krKzsKKwkJICBkYXRhLT50aHJlYWRzX3Jl cG9ydGVkLS07CisKKwkJICBpZiAoZGF0YS0+dGhyZWFkc19yZXBvcnRlZCA9 PSAwKQorCQkgICAgZGF0YS0+dGhyZWFkc19yZXBvcnRlZCA9IDE7CiAJCX0K IAkgICAgfQogCSAgZWxzZQpAQCAtOTU0LDExICs5NzYsMTEgQEAgc3luY190 aHJlYWRsaXN0cyAocGlkX3QgcGlkKQogCSAgICAgIHByaXYtPnBkdGlkID0g cGR0aWQ7CiAJICAgICAgcHJpdi0+dGlkID0gdGlkOwogCSAgICAgIHBpKys7 CisJICAgICAgZGF0YS0+dGhyZWFkc19yZXBvcnRlZCsrOwogCSAgICB9CiAJ fQogICAgIH0KIAotICB4ZnJlZSAocGJ1Zik7CiAgIHhmcmVlIChnYnVmKTsK IH0KIApAQCAtMjA4NCwxMCArMjEwNiwxNyBAQCBhaXhfdGhyZWFkX3Rhcmdl dDo6dGhyZWFkX2FsaXZlIChwdGlkX3QgcHRpZCkKIHN0ZDo6c3RyaW5nCiBh aXhfdGhyZWFkX3RhcmdldDo6cGlkX3RvX3N0ciAocHRpZF90IHB0aWQpCiB7 Ci0gIGlmIChwdGlkLnRpZCAoKSA9PSAwKQotICAgIHJldHVybiBiZW5lYXRo ICgpLT5waWRfdG9fc3RyIChwdGlkKTsKKyAgdGhyZWFkX2luZm8gKnRocmVh ZF9pbmZvID0gY3VycmVudF9pbmZlcmlvciAoKS0+ZmluZF90aHJlYWQgKHB0 aWQpOworCisgIGlmICh0aHJlYWRfaW5mbyAhPSBOVUxMICYmIHRocmVhZF9p bmZvLT5wcml2ICE9IE5VTEwpCisgICAgeworICAgICAgYWl4X3RocmVhZF9p bmZvICpwcml2ID0gZ2V0X2FpeF90aHJlYWRfaW5mbyAodGhyZWFkX2luZm8p OworCisgICAgICByZXR1cm4gc3RyaW5nX3ByaW50ZiAoXygiVGhyZWFkICVz ICh0aWQgJXMpIiksIHB1bG9uZ2VzdCAocHRpZC50aWQgKCkpLAorCQlwdWxv bmdlc3QgKHByaXYtPnRpZCkpOworICAgIH0KIAotICByZXR1cm4gc3RyaW5n X3ByaW50ZiAoXygiVGhyZWFkICVzIiksIHB1bG9uZ2VzdCAocHRpZC50aWQg KCkpKTsKKyAgcmV0dXJuIGJlbmVhdGggKCktPnBpZF90b19zdHIgKHB0aWQp OwogfQogCiAvKiBSZXR1cm4gYSBwcmludGFibGUgcmVwcmVzZW50YXRpb24g b2YgZXh0cmEgaW5mb3JtYXRpb24gYWJvdXQKQEAgLTIwOTgsNyArMjEyNyw2 IEBAIGFpeF90aHJlYWRfdGFyZ2V0OjpleHRyYV90aHJlYWRfaW5mbyAoc3Ry dWN0IHRocmVhZF9pbmZvICp0aHJlYWQpCiB7CiAgIGludCBzdGF0dXM7CiAg IHB0aGRiX3B0aHJlYWRfdCBwZHRpZDsKLSAgcHRoZGJfdGlkX3QgdGlkOwog ICBwdGhkYl9zdGF0ZV90IHN0YXRlOwogICBwdGhkYl9zdXNwZW5kc3RhdGVf dCBzdXNwZW5kc3RhdGU7CiAgIHB0aGRiX2RldGFjaHN0YXRlX3QgZGV0YWNo c3RhdGU7CkBAIC0yMTE1LDMzICsyMTQzLDI4IEBAIGFpeF90aHJlYWRfdGFy Z2V0OjpleHRyYV90aHJlYWRfaW5mbyAoc3RydWN0IHRocmVhZF9pbmZvICp0 aHJlYWQpCiAgIGFpeF90aHJlYWRfaW5mbyAqcHJpdiA9IGdldF9haXhfdGhy ZWFkX2luZm8gKHRocmVhZCk7CiAKICAgcGR0aWQgPSBwcml2LT5wZHRpZDsK LSAgdGlkID0gcHJpdi0+dGlkOwotCi0gIGlmICh0aWQgIT0gUFRIREJfSU5W QUxJRF9USUQpCi0gICAgLyogaTE4bjogTGlrZSAidGhyZWFkLWlkZW50aWZp ZXIgJWQsIFtzdGF0ZV0gcnVubmluZywgc3VzcGVuZGVkIiAqLwotICAgIGJ1 Zi5wcmludGYgKF8oInRpZCAlZCIpLCAoaW50KXRpZCk7CiAKICAgc3RhdHVz ID0gcHRoZGJfcHRocmVhZF9zdGF0ZSAoZGF0YS0+cGRfc2Vzc2lvbiwgcGR0 aWQsICZzdGF0ZSk7CiAgIGlmIChzdGF0dXMgIT0gUFRIREJfU1VDQ0VTUykK ICAgICBzdGF0ZSA9IFBTVF9OT1RTVVA7Ci0gIGJ1Zi5wcmludGYgKCIsICVz Iiwgc3RhdGUyc3RyIChzdGF0ZSkpOworICBidWYucHJpbnRmICgiWyVzXSIs IHN0YXRlMnN0ciAoc3RhdGUpKTsKIAogICBzdGF0dXMgPSBwdGhkYl9wdGhy ZWFkX3N1c3BlbmRzdGF0ZSAoZGF0YS0+cGRfc2Vzc2lvbiwgcGR0aWQsCiAJ CQkJICAgICAgICZzdXNwZW5kc3RhdGUpOwogICBpZiAoc3RhdHVzID09IFBU SERCX1NVQ0NFU1MgJiYgc3VzcGVuZHN0YXRlID09IFBTU19TVVNQRU5ERUQp CiAgICAgLyogaTE4bjogTGlrZSAiVGhyZWFkLUlkICVkLCBbc3RhdGVdIHJ1 bm5pbmcsIHN1c3BlbmRlZCIgKi8KLSAgICBidWYucHJpbnRmIChfKCIsIHN1 c3BlbmRlZCIpKTsKKyAgICBidWYucHJpbnRmIChfKCJbc3VzcGVuZGVkXSIp KTsKIAogICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX2RldGFjaHN0YXRlIChk YXRhLT5wZF9zZXNzaW9uLCBwZHRpZCwKIAkJCQkgICAgICAmZGV0YWNoc3Rh dGUpOwogICBpZiAoc3RhdHVzID09IFBUSERCX1NVQ0NFU1MgJiYgZGV0YWNo c3RhdGUgPT0gUERTX0RFVEFDSEVEKQogICAgIC8qIGkxOG46IExpa2UgIlRo cmVhZC1JZCAlZCwgW3N0YXRlXSBydW5uaW5nLCBkZXRhY2hlZCIgKi8KLSAg ICBidWYucHJpbnRmIChfKCIsIGRldGFjaGVkIikpOworICAgIGJ1Zi5wcmlu dGYgKF8oIltkZXRhY2hlZF0iKSk7CiAKICAgcHRoZGJfcHRocmVhZF9jYW5j ZWxwZW5kIChkYXRhLT5wZF9zZXNzaW9uLCBwZHRpZCwgJmNhbmNlbHBlbmQp OwogICBpZiAoc3RhdHVzID09IFBUSERCX1NVQ0NFU1MgJiYgY2FuY2VscGVu ZCkKICAgICAvKiBpMThuOiBMaWtlICJUaHJlYWQtSWQgJWQsIFtzdGF0ZV0g cnVubmluZywgY2FuY2VsIHBlbmRpbmciICovCi0gICAgYnVmLnByaW50ZiAo XygiLCBjYW5jZWwgcGVuZGluZyIpKTsKKyAgICBidWYucHJpbnRmIChfKCJb Y2FuY2VsIHBlbmRpbmddIikpOwogCiAgIGJ1Zi53cml0ZSAoIiIsIDEpOwog Ci0tIAoyLjQxLjAKCg== --_004_CH2PR15MB3544001C62D1D9E198D8ADF9D60E2CH2PR15MB3544namp_--