Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wKaqZ-001AR0-1a for pgsql-hackers@arkaria.postgresql.org; Wed, 06 May 2026 11:55:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wKaqX-00Gjs6-1B for pgsql-hackers@arkaria.postgresql.org; Wed, 06 May 2026 11:55:21 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wKaqW-00Gjrv-2o for pgsql-hackers@lists.postgresql.org; Wed, 06 May 2026 11:55:21 +0000 Received: from mail-qt1-x831.google.com ([2607:f8b0:4864:20::831]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wKaqR-00000000ofJ-222X for pgsql-hackers@postgresql.org; Wed, 06 May 2026 11:55:18 +0000 Received: by mail-qt1-x831.google.com with SMTP id d75a77b69052e-5102582e23eso46734681cf.1 for ; Wed, 06 May 2026 04:55:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20251104.gappssmtp.com; s=20251104; t=1778068513; x=1778673313; darn=postgresql.org; h=in-reply-to:autocrypt:content-language:references:cc:to:from :subject:user-agent:mime-version:date:message-id:from:to:cc:subject :date:message-id:reply-to; bh=gJBJJXTks3QHrgs65ug8ejLQEcPx0EkNT3mXjyeDTmU=; b=np613Q3RBhZgOu2YLGahxfeeK3vDSKLuPz6IxZBf4NzwPaKhn7R7BWQlYmbediJerG 1hU8Y7AVNDwntsTLlGVcPb46TRF3QfwSRDDyJ4KkgqWMuzYE0KAj2lM0ITthvBM4WlNi S801EaIL7bLyY+as94jThFW2h0JyM45nkKSN2TorDi4xkftVP9LyviAjDBlrvz+1sRbf kd4SQYVBPpZtyXUwEuf3XGnB7EvgmVFbIuC7ChK4wvkLn2IW8Tke+odnwSZEwvkc+y2b LN6MxT5nVLQHuWIwHDxN1JhDGulPzROta3kaJEJubWZTnNttazUUzW5djRAxjr+r9EWm vZ4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778068513; x=1778673313; h=in-reply-to:autocrypt:content-language:references:cc:to:from :subject:user-agent:mime-version:date:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=gJBJJXTks3QHrgs65ug8ejLQEcPx0EkNT3mXjyeDTmU=; b=inOaXuqAs7PfFIEt/iHMxcyUYoidNnBxdiFvoQYf3VAGdPumeOaUSTrnWLVl9oE82k MAu1PAfzUYuwh0OcX64T24ioVbVwDBYcVw2x/3igthgdXltXhw++fJVgG9OdNegLWaG4 i3sWWO9vTM9SrmhG5pq8jv/rWKsh7km4Lu16AB6uZLZhZxOjc6STuIaNOclrBv3ebcTA BnHL+yCri0fG0YsJ4Je/zbARRFuukCGTTifQ1QXeYQ3jxd+WnNZYil3ZyTZoUwcL4KRQ 9/HnrBFxvBB+OjAaPGl/gFMCvrR1WMouvteDQyMTvuZBmYyF0cTaNbjv6wbC+fHT8R0o VQdg== X-Forwarded-Encrypted: i=1; AFNElJ+US2Qfb7EG01nPmo4xxoNunNLThkXxtZcrpeQCLQZ3KPsPk4/XA43oma6RhcrksTI4tRR1+r4ov1Gsilzd@postgresql.org X-Gm-Message-State: AOJu0YzX9N5AmWCxcz3/aQqCw9okjS/miOs5Itfi4t7xl2d+rRFRVbY1 NUHyRiRcEIvv2rws4BwtxM2sZQ9zhng6wwvejB47xjCcf6OrDmNm33zBUEYXnBqV0mo= X-Gm-Gg: AeBDietFV2/AgNiQCVG8fa5eui2Nbkb+uYtpHdqnpi+mnyDpHpnN3qb/eTasx81cc2j +C3YWeD74e2wWtKE1gwU0PoROmTTGMJloEJTS5hQ0oT8P8rQJk2o3VtZvXg0IYu+LiMATyRtX9j hTF6fAh1twxG020MgnrZAi1m4gwTc2ComgMfEPSWImPDhyGa5/yxY9fGuA03yFeFhQD3glv4Cc4 SV3oZ4NnC9eH6SkODdxzf+DZcSHL1q4Urh3Ny8FU3VhAHPsGTf545zviUqkPGD2tYUlEfoRRj7z aHe5unqMflFl8o9JsGqLOzGNkK4lhgqWtRVItphQ8ANoCjdL9dUTDNiIA0VatQOaDFkX2eRSN1P rT54jBRtSKZZhgKcS/juVYWIDmG62J25ozJ9qOKJ+JooDLTNzsPf8ltFPM0e9zELQmdgh1eIudV dQ8UysTbFeEz6uq+keBwyvTamkYhHGQ4rrVbbXswg62D/6wYk/gXs= X-Received: by 2002:a05:622a:1145:b0:50f:bdeb:1e47 with SMTP id d75a77b69052e-51461fcec8cmr40044881cf.44.1778068512459; Wed, 06 May 2026 04:55:12 -0700 (PDT) Received: from ?IPV6:2605:a601:a6b0:500::1cb? ([2605:a601:a6b0:500::1cb]) by smtp.googlemail.com with ESMTPSA id 6a1803df08f44-8b5391e34dasm197572196d6.14.2026.05.06.04.55.11 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 06 May 2026 04:55:11 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------Mt5SMUDGVdDnqcPNdRHKpP8L" Message-ID: <53e7527c-eb86-4ef5-a3fb-df98cd9c973a@dunslane.net> Date: Wed, 6 May 2026 07:55:10 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [BUG] CRASH: ECPGprepared_statement() and ECPGdeallocate_all() when connection is NULL From: Andrew Dunstan To: Tom Lane , Alexander Lakhin Cc: Nishant Sharma , Shruthi Gowda , Mahendra Singh Thalor , Fujii Masao , PostgreSQL Development References: <75460b3c-2! 55d-47eb-b889-d99de38e6758@gmail.com> <699623.1778013161@sss.pgh.pa.us> Content-Language: en-US Autocrypt: addr=andrew@dunslane.net; keydata= xsBNBE7KWFkBCAClridxur2AIc7eW2AR7izbfp3EnNefie2HbLF0izW5Ik5UjX2HBXBx4syI gY6b0ugohXrr274+baoAlvSbq6cAoQuEVrk5IZFzt20b1Xkx65FwGSEj526yiKLocqkJceSq Xr9xcA5SGY+FZv441chh5SU92v4q6z+6LPpoHOh97ptAVXZYNTtU0LevyvD5lja0TzbvJm6C eFXitJfnm1pLEr0DGJCR/iUOl/N62Kh4855zZC7NHIjQHPOvV5Stz/l5ilDhvGVk+xkXFPys SjZoUr1rXhYLpiyi5sR0X9FHXT0KnGuz1F5ERO7ZTLSSQ6fJwPj6gOk9K+vvoKvoeql5ABEB AAHNJEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PsLAlwQTAQgAQQIbAwIX gAIZAQULCQgHAwUVCgkICwUWAgMBAAIeBRYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNGd BQkdEO8nAAoJEJn6f8tZ/DuBq74H/jkTR4Zi3stbw+xC7v2u3QozssK7MYPL2AsVfh7OealS h182fiWXpfvmmAB7WUHbhk9GC2RAOnHI/2d2jgKaMLAHsGYOT0YopTVIwRY43fCw/mK67yxc wmDcX+zyKfLaivNbf5A7QPLNwda98bEAMSJ8Sn652Uc6cA8t3uKGsVzbRBQOoYzjgvBCfSrE 9ql3PDNg0l4BfAqabd2f70ZUm9VAMEPrgv/v2xI7M2XiL4g5BVmqLCOwxLM8RMCotCuoweUr VO43DeBCIDwLxotMJKvGWDjBzQYlU1NPUAtNcz/gN9ITUe1VUGjyvGj4u1lxBOcQQUw7l1+T 5moZ4iZxXzvOwE0ETspYWQEIANGc4zQULOxhbqO2dyD51YhqCNRmm9oKWaqf+wmW4tpDe/VV cxAnNizd4LWCHfzpb5cHAtGkOPePMfzWVf6nvdF7d3eglbtf59+zG7O7llV0xSSoFiieQBsr GvqDInXYX/4mRRXMtyhM353/tixC9RWLs1oofyYmCPPXXY7h9R7en3B8BoVrRFcdzlIY/NFN hFGW/9dkEiGjgna2Rk6e15kln4ZvFBWUg23p93w/pqXcxY6+k/8TEk+C4R+M6w7o2PLGOjdZ +kPiUcw5H85zf/yZJwQXzisXaNduwWB6Vads9YC9dj6kPR1c4VGRqAaYL++LAEOqrlvm2Tvq QqZRtnEAEQEAAcLAfAQYAQgAJgIbDBYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNI2BQkd EODdAAoJEJn6f8tZ/DuBfw0IAKTsfD40teP/pp+bsLLMSxPXUYrrprTj7WFB5v61p6dkpSr/ qXmMlyahdxQFaPmfVgVirB1Vk/kHiWNnnGjfUV9nB2Zg9LI0Xb9/ts3LsUiRWXzG3tkMY6XL vsVOxW4XFRND9l2q+WW93aZ1DZl+fqWfYgMvsusFRhmGFOKTRfKPta2Pkv+AhA24N4+PrR5p bU4k2MO8PAGiK8eaYKGFG1bHKuAvoDoF7WXJ3FHxuWqLnKEt4dfOLm5pAe3zq1Lt6q8azT9i QWGpSAK5vQUWQHBHpiDjdPeqKZ6HiAXIIKfSmb+jrvXBqoP+D6/K7rUjG2aXiRtTIAXms9sm VRu7cmw= In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------Mt5SMUDGVdDnqcPNdRHKpP8L Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2026-05-05 Tu 5:36 PM, Andrew Dunstan wrote: > > On 2026-05-05 Tu 4:32 PM, Tom Lane wrote: >> Alexander Lakhin writes: >>> There is no other useful information in the log, so it's not clear >>> what's >>> wrong with that animal (no other gives us such failures), but I could >>> produce something similar (on FreeBSD and Linux) with: >>> echo "max_connections = 10" >/tmp/temp.config; >>> TEMP_CONFIG=/tmp/temp.config gmake -s check -C src/interfaces/ecpg/test >> Yes, I can also reproduce problems with the ecpg tests at >> max_connections = 10.  For me, thread/prep segfaults but thread/alloc >> just seems to hang indefinitely.  (thread/prep sometimes does too.) >> These issues are not new; v18 does the same.  The reporting is a >> bit different but I think that's from pg_regress changes not ecpg. >> >> Looking at the postmaster log, I see >> >> 2026-05-05 16:11:06.509 EDT [682116] FATAL:  sorry, too many clients >> already >> >> which is unsurprising in this situation, but apparently these tests >> don't handle a connection failure well at all. >> >> There's no such message in dikkop's log, so that may be an unrelated >> problem. >> >> BTW, reducing max_connections to 5 causes several other tests to fail, >> but in unsurprising ways, like >> >> # +SQL error: could not connect to database "ecpg1_regression" on >> line 107 >> # +SQL error: could not connect to database "ecpg1_regression" on >> line 107 >> # +SQL error: could not connect to database "ecpg1_regression" on >> line 107 >> # +SQL error: could not connect to database "ecpg1_regression" on >> line 107 >> >> >> > > > Ugh. I will do some digging. > > > OK, first this is orthogonal to the issue fixed earlier in this thread. It's a 22 yer old bug where a connection failure results in a thread falling back to a sibling's connection. The fix is to keep track of which thread opened which connection and only fall back to the global actual_connection if it was started by our thread. There was an unresolved report of these symptoms in 2006[1]. Essentially, the user was holding the lock the docs told him to hold, and ecpglib still corrupted state because the corruption window was inside ecpglib, not inside the libpq calls he was trying to serialize. It's not an easy problem to diagnose, however, so there could well have been more cases. Attached is a patch with the fix, courtesy of claude. It's a slight behaviour change: After the patch, programs in this category fail loudly with ECPG_NO_CONN: - Pattern that breaks: main thread calls EXEC SQL CONNECT, spawns workers, workers issue EXEC SQL ... with no connection name and no per-thread SET CONNECTION, relying on their own mutex to serialize the libpq calls. - Migration: one of two existing supported patterns. Either name the connection explicitly per statement (EXEC SQL AT con1 SELECT ...) or set the per-thread default once at thread start (EXEC SQL SET CONNECTION con1;). The   latter still works under the patch because it explicitly populates the per-thread slot, and the patch only owner-checks the global fallback, not the per-thread slot. So I guess the question is whether or not we backpatch it (or some other fix)? cheers andrew [1] https://www.postgresql.org/message-id/52940eef0611100514p14c85e34l528da656662decc9@mail.gmail.com -- Andrew Dunstan EDB: https://www.enterprisedb.com --------------Mt5SMUDGVdDnqcPNdRHKpP8L Content-Type: text/x-patch; charset=UTF-8; name="Prevent-thread-unsafe-sharing-of-an-ECPG-default-connection.patch" Content-Disposition: attachment; filename*0="Prevent-thread-unsafe-sharing-of-an-ECPG-default-connection."; filename*1="patch" Content-Transfer-Encoding: base64 RnJvbSA1MzAyNDlhMDZkMjE3M2VhNTRkOWUzYWY0YTZlNTY5MjFiZjQ0NzFiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogV2VkLCA2IE1heSAyMDI2IDA3OjM5OjI4IC0wNDAwClN1YmplY3Q6IFtQ QVRDSF0gUHJldmVudCB0aHJlYWQtdW5zYWZlIHNoYXJpbmcgb2YgYW4gRUNQRyBkZWZhdWx0 IGNvbm5lY3Rpb24KCkVDUEdjb25uZWN0KCkgcHVibGlzaGVkIHRoZSBuZXcgc3RydWN0IGNv bm5lY3Rpb24gaW50byBhbGxfY29ubmVjdGlvbnMsCnRoZSBjYWxsaW5nIHRocmVhZCdzIHBl ci10aHJlYWQgZGVmYXVsdC1jb25uZWN0aW9uIHNsb3QgKGhlbGQgaW4KdGhyZWFkLXNwZWNp ZmljIGRhdGEgdmlhIGFjdHVhbF9jb25uZWN0aW9uX2tleSksIGFuZCB0aGUgZ2xvYmFsCmFj dHVhbF9jb25uZWN0aW9uIGJlZm9yZSBjYWxsaW5nIFBRY29ubmVjdGRiUGFyYW1zKCkuICBJ ZgpQUWNvbm5lY3RkYlBhcmFtcygpIHRoZW4gZmFpbGVkLCBlY3BnX2ZpbmlzaCgpIHJlbW92 ZWQgdGhlIGRlYWQgc3RydWN0CmZyb20gdGhlIGxpc3QgYW5kIC0tIGJ5IHRoZSBzYW1lIGxv Z2ljIHRoYXQgZWNwZ19maW5pc2goKSB1c2VzIGZvcgpESVNDT05ORUNUIC0tIHJlcG9pbnRl ZCB0aGUgZmFpbGluZyB0aHJlYWQncyBwZXItdGhyZWFkIHNsb3QgYXQgd2hhdGV2ZXIKbm93 IGhlYWRlZCBhbGxfY29ubmVjdGlvbnMsIHdoaWNoIGlzIHR5cGljYWxseSBhIHNpYmxpbmcg dGhyZWFkJ3MKYWxyZWFkeS1vcGVuIGNvbm5lY3Rpb24uCgpBZnRlciBzdWNoIGEgZmFpbGVk IENPTk5FQ1QgdGhlIGNhbGxlcidzIHdoZW5ldmVyLXNxbGVycm9yIGhhbmRsZXIgb2Z0ZW4K anVzdCBsb2dzIGFuZCBsZXRzIHRoZSB0aHJlYWQgY29udGludWU7IHRoZSBuZXh0IEVYRUMg U1FMIHN0YXRlbWVudAppc3N1ZWQgd2l0aG91dCBhbiBleHBsaWNpdCBjb25uZWN0aW9uIG5h bWUgdGhlbiByZXNvbHZlZCB0aHJvdWdoIHRoZQpwb2lzb25lZCBwZXItdGhyZWFkIHNsb3Qg b3IgdGhlIGFjdHVhbF9jb25uZWN0aW9uIGdsb2JhbCBkZWZhdWx0IGFuZCByYW4KbGlicHEg Y2FsbHMgb24gdGhlIHNpYmxpbmcncyBQR2Nvbm4gY29uY3VycmVudGx5IHdpdGggdGhlIHNp YmxpbmcgdGhyZWFkCml0c2VsZi4gIGxpYnBxIGlzIG5vdCB0aHJlYWQtc2FmZSBhdCB0aGUg cGVyLWNvbm5lY3Rpb24gbGV2ZWwsIHNvIHRoZQpzaGFyZWQgcHJlcF9zdG10cyBsaXN0IGdv dCBjb3JydXB0ZWQgKHNlZ3YgaW4gZGVhbGxvY2F0ZV9vbmUpLCB0aGUKY29ubmVjdGlvbiBp bnB1dCBidWZmZXIgZ290IHJlYWxsb2NhdGVkIHVuZGVybmVhdGggYW4gaW4tZmxpZ2h0IHJl YWRlcgooaGVhcCBhYm9ydCBpbiBwcUNoZWNrSW5CdWZmZXJTcGFjZSksIGFuZCBjb25uLT5y ZXN1bHQgb2NjYXNpb25hbGx5IHdlbnQKTlVMTCB3aGlsZSBhbm90aGVyIHRocmVhZCB3YXMg bWlkLXJvdy1wcm9jZXNzaW5nLgoKVGhpcyB3YXMgcmVwcm9kdWNpYmxlIGJ5IHJ1bm5pbmcg dGhyZWFkL3ByZXAgYW5kIHRocmVhZC9hbGxvYyBhZ2FpbnN0IGEKc2VydmVyIHdpdGggbWF4 X2Nvbm5lY3Rpb25zIHNldCBsb3cgZW5vdWdoIHRvIHJlZnVzZSBzb21lIG9mIHRoZSB3b3Jr ZXIKdGhyZWFkcycgQ09OTkVDVHMsIGUuZy4KCiAgbWF4X2Nvbm5lY3Rpb25zID0gMTAKCmlu IGEgVEVNUF9DT05GSUcgcGFzc2VkIHRvICJtYWtlIC1DIHNyYy9pbnRlcmZhY2VzL2VjcGcv dGVzdCBjaGVjayIsCmFuZCBpcyB0aGUgZmFtaWx5IG9mIGNyYXNoZXMgQWxleGFuZGVyIExh a2hpbiBvYnNlcnZlZCBvbiB0aGUgZGlra29wCmJ1aWxkZmFybSBhbmltYWwuCgpGaXg6Cgoq IFJlY29yZCBvbiBlYWNoIHN1Y2Nlc3NmdWwgQ09OTkVDVCB3aGljaCB0aHJlYWQgb3BlbmVk IHRoYXQgY29ubmVjdGlvbgogIChuZXcgb3duZXJfdGhyZWFkIGZpZWxkIG9uIHN0cnVjdCBj b25uZWN0aW9uKS4gIFdoZW4gYW4gRVhFQyBTUUwKICBzdGF0ZW1lbnQgaXMgaXNzdWVkIHdp dGhvdXQgYSBjb25uZWN0aW9uIG5hbWUgYW5kIHRoZSBjYWxsaW5nIHRocmVhZAogIGhhcyBu b3RoaW5nIGluIGl0cyBwZXItdGhyZWFkIGRlZmF1bHQtY29ubmVjdGlvbiBzbG90LCBvbmx5 IGZhbGwgYmFjawogIHRvIGFjdHVhbF9jb25uZWN0aW9uIGlmIGl0cyBvd25lciBtYXRjaGVz IHRoZSBjYWxsZXI7IG90aGVyd2lzZSByZXR1cm4KICBOVUxMIHNvIGVjcGdfaW5pdCgpIHJh aXNlcyBFQ1BHX05PX0NPTk4gY2xlYW5seS4gIFRocmVhZHMgdGhhdAogIGdlbnVpbmVseSB3 YW50IHRvIHNoYXJlIGEgY29ubmVjdGlvbiBtdXN0IGRvIHNvIGV4cGxpY2l0bHkgYnkgbmFt ZSAob3IKICB2aWEgU0VUIENPTk5FQ1RJT04pIGFuZCBwcm92aWRlIHRoZWlyIG93biBzeW5j aHJvbml6YXRpb24uCgoqIEluIEVDUEdjb25uZWN0KCkncyBmYWlsdXJlIHBhdGgsIHNuYXBz aG90IHRoZSBwcmlvciBwZXItdGhyZWFkIHNsb3QKICB2YWx1ZSBhbmQgZ2xvYmFsIGRlZmF1 bHQgYmVmb3JlIHB1Ymxpc2hpbmcgdGhlIHVub3BlbmVkIHN0cnVjdCwgYW5kCiAgcmVzdG9y ZSB0aGVtIGFmdGVyIGVjcGdfZmluaXNoKCkgcmV0dXJucy4gIFRoaXMgcHJldmVudHMgdGhl IGZhaWxpbmcKICB0aHJlYWQncyBzbG90IGZyb20gYmVpbmcgYWxpYXNlZCB0byBhIHNpYmxp bmcncyBvcGVuIGNvbm5lY3Rpb24uCgpBIG5ldyBlY3BnX3RocmVhZF9pZCBhYnN0cmFjdGlv biAocHRocmVhZF90IG9uIFBPU0lYLCBEV09SRCBvbiBXaW4zMikKa2VlcHMgRUNQR19HRVRf VEhSRUFEX0lEKCkvRUNQR19USFJFQURfSURfRVFVQUwoKSBwb3J0YWJsZSBhY3Jvc3MKdGhy ZWFkaW5nIG1vZGVscy4KCkEgbmV3IHRlc3QgdGhyZWFkL2Nvbm5mYWlsIGZvcmNlcyBhIGRl dGVybWluaXN0aWMgQ09OTkVDVCBmYWlsdXJlIChieQpuYW1pbmcgYSBkYXRhYmFzZSB0aGF0 IGRvZXMgbm90IGV4aXN0KSBhbmQgdmVyaWZpZXMgdGhhdCB0aGUgd29ya2VyCnRocmVhZCdz IHN1YnNlcXVlbnQgdW5uYW1lZCBQUkVQQVJFIHJldHVybnMgRUNQR19OT19DT05OIGluc3Rl YWQgb2YKc2lsZW50bHkgdXNpbmcgdGhlIG1haW4gdGhyZWFkJ3MgY29ubmVjdGlvbi4KClJl cG9ydGVkLWJ5OiBBbGV4YW5kZXIgTGFraGluIDxleGNsdXNpb25AZ21haWwuY29tPgpEaXNj dXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzc1NDYwYjNjLTI1NWQtNDdlYi1iODg5LWQ5 OWRlMzhlNjc1OEBnbWFpbC5jb20KLS0tCiBzcmMvaW50ZXJmYWNlcy9lY3BnL2VjcGdsaWIv Y29ubmVjdC5jICAgICAgICAgfCAgNzMgKysrKystLQogc3JjL2ludGVyZmFjZXMvZWNwZy9l Y3BnbGliL2VjcGdsaWJfZXh0ZXJuLmggIHwgICAyICsKIC4uLi9lY3BnL2luY2x1ZGUvZWNw Zy1wdGhyZWFkLXdpbjMyLmggICAgICAgICB8ICAxNyArKwogc3JjL2ludGVyZmFjZXMvZWNw Zy90ZXN0L2VjcGdfc2NoZWR1bGUgICAgICAgIHwgICAxICsKIC4uLi9lY3BnL3Rlc3QvZXhw ZWN0ZWQvdGhyZWFkLWNvbm5mYWlsLmMgICAgICB8IDE5MiArKysrKysrKysrKysrKysrKysK IC4uLi9lY3BnL3Rlc3QvZXhwZWN0ZWQvdGhyZWFkLWNvbm5mYWlsLnN0ZGVyciB8ICAgMAog Li4uL2VjcGcvdGVzdC9leHBlY3RlZC90aHJlYWQtY29ubmZhaWwuc3Rkb3V0IHwgICAyICsK IHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC90aHJlYWQvTWFrZWZpbGUgICAgICB8ICAgMyAr LQogc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3RocmVhZC9jb25uZmFpbC5wZ2MgIHwgIDg5 ICsrKysrKysrCiBzcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvdGhyZWFkL21lc29uLmJ1aWxk ICAgfCAgIDEgKwogMTAgZmlsZXMgY2hhbmdlZCwgMzU5IGluc2VydGlvbnMoKyksIDIxIGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVz dC9leHBlY3RlZC90aHJlYWQtY29ubmZhaWwuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9p bnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC90aHJlYWQtY29ubmZhaWwuc3RkZXJyCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3Ro cmVhZC1jb25uZmFpbC5zdGRvdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW50ZXJmYWNl cy9lY3BnL3Rlc3QvdGhyZWFkL2Nvbm5mYWlsLnBnYwoKZGlmZiAtLWdpdCBhL3NyYy9pbnRl cmZhY2VzL2VjcGcvZWNwZ2xpYi9jb25uZWN0LmMgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL2Vj cGdsaWIvY29ubmVjdC5jCmluZGV4IDc4ZGU5ZjI5OGJhLi5lMDlmNzI4YTM3OSAxMDA2NDQK LS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy9lY3BnbGliL2Nvbm5lY3QuYworKysgYi9zcmMv aW50ZXJmYWNlcy9lY3BnL2VjcGdsaWIvY29ubmVjdC5jCkBAIC0zMiw2ICszMiwzMCBAQCBl Y3BnX3B0aHJlYWRzX2luaXQodm9pZCkKIAlwdGhyZWFkX29uY2UoJmFjdHVhbF9jb25uZWN0 aW9uX2tleV9vbmNlLCBlY3BnX2FjdHVhbF9jb25uZWN0aW9uX2luaXQpOwogfQogCisvKgor ICogUmVzb2x2ZSBhY3R1YWxfY29ubmVjdGlvbiBhcyB0aGUgaW1wbGljaXQgZGVmYXVsdCBm b3IgYW4gdW5uYW1lZCBFWEVDIFNRTCwKKyAqIGJ1dCBvbmx5IGlmIGl0IHdhcyBvcGVuZWQg YnkgdGhlIGNhbGxpbmcgdGhyZWFkLiAgT3RoZXJ3aXNlIHdlJ2QgbGV0IG9uZQorICogdGhy ZWFkIHNpbGVudGx5IGlzc3VlIGxpYnBxIGNhbGxzIG9uIGFub3RoZXIgdGhyZWFkJ3MgUEdj b25uLCB3aGljaCBpcworICogbm90IHNhZmUuICBUaHJlYWRzIHRoYXQgd2FudCB0byBzaGFy ZSBhIGNvbm5lY3Rpb24gbXVzdCBkbyBzbyBleHBsaWNpdGx5CisgKiBieSBuYW1lIChvciB2 aWEgU0VUIENPTk5FQ1RJT04pIGFuZCBwcm92aWRlIHRoZWlyIG93biBzeW5jaHJvbml6YXRp b24uCisgKi8KK3N0YXRpYyBzdHJ1Y3QgY29ubmVjdGlvbiAqCitlY3BnX2RlZmF1bHRfY29u bmVjdGlvbih2b2lkKQoreworCXN0cnVjdCBjb25uZWN0aW9uICpyZXQ7CisKKwlyZXQgPSBw dGhyZWFkX2dldHNwZWNpZmljKGFjdHVhbF9jb25uZWN0aW9uX2tleSk7CisJaWYgKHJldCAh PSBOVUxMKQorCQlyZXR1cm4gcmV0OworCisJaWYgKGFjdHVhbF9jb25uZWN0aW9uICE9IE5V TEwgJiYKKwkJRUNQR19USFJFQURfSURfRVFVQUwoYWN0dWFsX2Nvbm5lY3Rpb24tPm93bmVy X3RocmVhZCwKKwkJCQkJCQkgRUNQR19HRVRfVEhSRUFEX0lEKCkpKQorCQlyZXR1cm4gYWN0 dWFsX2Nvbm5lY3Rpb247CisKKwlyZXR1cm4gTlVMTDsKK30KKwogc3RhdGljIHN0cnVjdCBj b25uZWN0aW9uICoKIGVjcGdfZ2V0X2Nvbm5lY3Rpb25fbnIoY29uc3QgY2hhciAqY29ubmVj dGlvbl9uYW1lKQogewpAQCAtNDEsMTYgKzY1LDcgQEAgZWNwZ19nZXRfY29ubmVjdGlvbl9u cihjb25zdCBjaGFyICpjb25uZWN0aW9uX25hbWUpCiAJewogCQllY3BnX3B0aHJlYWRzX2lu aXQoKTsJLyogZW5zdXJlIGFjdHVhbF9jb25uZWN0aW9uX2tleSBpcyB2YWxpZCAqLwogCi0J CXJldCA9IHB0aHJlYWRfZ2V0c3BlY2lmaWMoYWN0dWFsX2Nvbm5lY3Rpb25fa2V5KTsKLQot CQkvKgotCQkgKiBpZiBubyBjb25uZWN0aW9uIGluIFRTRCBmb3IgdGhpcyB0aHJlYWQsIGdl dCB0aGUgZ2xvYmFsIGRlZmF1bHQKLQkJICogY29ubmVjdGlvbiBhbmQgaG9wZSB0aGUgdXNl ciBrbm93cyB3aGF0IHRoZXkncmUgZG9pbmcgKGkuZS4gdXNpbmcKLQkJICogdGhlaXIgb3du IG11dGV4IHRvIHByb3RlY3QgdGhhdCBjb25uZWN0aW9uIGZyb20gY29uY3VycmVudCBhY2Nl c3NlcwotCQkgKi8KLQkJaWYgKHJldCA9PSBOVUxMKQotCQkJLyogbm8gVFNEIGNvbm5lY3Rp b24sIGdvaW5nIGZvciBnbG9iYWwgKi8KLQkJCXJldCA9IGFjdHVhbF9jb25uZWN0aW9uOwor CQlyZXQgPSBlY3BnX2RlZmF1bHRfY29ubmVjdGlvbigpOwogCX0KIAllbHNlCiAJewpAQCAt ODEsMTYgKzk2LDcgQEAgZWNwZ19nZXRfY29ubmVjdGlvbihjb25zdCBjaGFyICpjb25uZWN0 aW9uX25hbWUpCiAJewogCQllY3BnX3B0aHJlYWRzX2luaXQoKTsJLyogZW5zdXJlIGFjdHVh bF9jb25uZWN0aW9uX2tleSBpcyB2YWxpZCAqLwogCi0JCXJldCA9IHB0aHJlYWRfZ2V0c3Bl Y2lmaWMoYWN0dWFsX2Nvbm5lY3Rpb25fa2V5KTsKLQotCQkvKgotCQkgKiBpZiBubyBjb25u ZWN0aW9uIGluIFRTRCBmb3IgdGhpcyB0aHJlYWQsIGdldCB0aGUgZ2xvYmFsIGRlZmF1bHQK LQkJICogY29ubmVjdGlvbiBhbmQgaG9wZSB0aGUgdXNlciBrbm93cyB3aGF0IHRoZXkncmUg ZG9pbmcgKGkuZS4gdXNpbmcKLQkJICogdGhlaXIgb3duIG11dGV4IHRvIHByb3RlY3QgdGhh dCBjb25uZWN0aW9uIGZyb20gY29uY3VycmVudCBhY2Nlc3NlcwotCQkgKi8KLQkJaWYgKHJl dCA9PSBOVUxMKQotCQkJLyogbm8gVFNEIGNvbm5lY3Rpb24gaGVyZSBlaXRoZXIsIHVzaW5n IGdsb2JhbCAqLwotCQkJcmV0ID0gYWN0dWFsX2Nvbm5lY3Rpb247CisJCXJldCA9IGVjcGdf ZGVmYXVsdF9jb25uZWN0aW9uKCk7CiAJfQogCWVsc2UKIAl7CkBAIC0yNjIsNiArMjY4LDgg QEAgRUNQR2Nvbm5lY3QoaW50IGxpbmVubywgaW50IGMsIGNvbnN0IGNoYXIgKm5hbWUsIGNv bnN0IGNoYXIgKnVzZXIsIGNvbnN0IGNoYXIgKnAKIAlzdHJ1Y3Qgc3FsY2FfdCAqc3FsY2Eg PSBFQ1BHZ2V0X3NxbGNhKCk7CiAJZW51bSBDT01QQVRfTU9ERSBjb21wYXQgPSBjOwogCXN0 cnVjdCBjb25uZWN0aW9uICp0aGlzOworCXN0cnVjdCBjb25uZWN0aW9uICpwcmV2X2FjdHVh bF9jb25uZWN0aW9uOworCXN0cnVjdCBjb25uZWN0aW9uICpwcmV2X3RocmVhZF9jb25uZWN0 aW9uOwogCWludAkJCWksCiAJCQkJY29ubmVjdF9wYXJhbXMgPSAwOwogCWJvb2wJCWFsbG9j X2ZhaWxlZCA9IChzcWxjYSA9PSBOVUxMKTsKQEAgLTU0MCwxMiArNTQ4LDI1IEBAIEVDUEdj b25uZWN0KGludCBsaW5lbm8sIGludCBjLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFy ICp1c2VyLCBjb25zdCBjaGFyICpwCiAKIAl0aGlzLT5jYWNoZV9oZWFkID0gTlVMTDsKIAl0 aGlzLT5wcmVwX3N0bXRzID0gTlVMTDsKKwl0aGlzLT5vd25lcl90aHJlYWQgPSBFQ1BHX0dF VF9USFJFQURfSUQoKTsKIAogCWlmIChhbGxfY29ubmVjdGlvbnMgPT0gTlVMTCkKIAkJdGhp cy0+bmV4dCA9IE5VTEw7CiAJZWxzZQogCQl0aGlzLT5uZXh0ID0gYWxsX2Nvbm5lY3Rpb25z OwogCisJLyoKKwkgKiBTbmFwc2hvdCB0aGlzIHRocmVhZCdzIHBlci10aHJlYWQgZGVmYXVs dCBjb25uZWN0aW9uIChrZXB0IGluCisJICogdGhyZWFkLXNwZWNpZmljIGRhdGEgdmlhIGFj dHVhbF9jb25uZWN0aW9uX2tleSkgYW5kIHRoZSBnbG9iYWwgZGVmYXVsdCwKKwkgKiBzbyB3 ZSBjYW4gcmVzdG9yZSB0aGVtIGlmIFBRY29ubmVjdGRiUGFyYW1zKCkgZmFpbHMgYmVsb3cu ICBXaXRob3V0CisJICogdGhpcywgZWNwZ19maW5pc2goKSB3b3VsZCByZS1wb2ludCB0aGlz IHRocmVhZCdzIHNsb3QgYXQgd2hhdGV2ZXIgdGhlbgorCSAqIGhlYWRzIGFsbF9jb25uZWN0 aW9ucyAtLSB0eXBpY2FsbHkgYSBzaWJsaW5nIHRocmVhZCdzIGFscmVhZHktb3BlbgorCSAq IFBHY29ubiwgd2hpY2ggd291bGQgbGF0ZXIgYmUgcmV0dXJuZWQgYnkgZWNwZ19nZXRfY29u bmVjdGlvbihOVUxMKSBhbmQKKwkgKiB1c2VkIGJ5IGxpYnBxIGNvbmN1cnJlbnRseSBmcm9t IHR3byB0aHJlYWRzLgorCSAqLworCXByZXZfYWN0dWFsX2Nvbm5lY3Rpb24gPSBhY3R1YWxf Y29ubmVjdGlvbjsKKwlwcmV2X3RocmVhZF9jb25uZWN0aW9uID0gcHRocmVhZF9nZXRzcGVj aWZpYyhhY3R1YWxfY29ubmVjdGlvbl9rZXkpOworCiAJYWxsX2Nvbm5lY3Rpb25zID0gdGhp czsKIAlwdGhyZWFkX3NldHNwZWNpZmljKGFjdHVhbF9jb25uZWN0aW9uX2tleSwgYWxsX2Nv bm5lY3Rpb25zKTsKIAlhY3R1YWxfY29ubmVjdGlvbiA9IGFsbF9jb25uZWN0aW9uczsKQEAg LTY2OCw2ICs2ODksMTggQEAgRUNQR2Nvbm5lY3QoaW50IGxpbmVubywgaW50IGMsIGNvbnN0 IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnVzZXIsIGNvbnN0IGNoYXIgKnAKIAkJZWNwZ19s b2coIkVDUEdjb25uZWN0OiAlcyIsIGVycm1zZyk7CiAKIAkJZWNwZ19maW5pc2godGhpcyk7 CisKKwkJLyoKKwkJICogUmVzdG9yZSB0aGlzIHRocmVhZCdzIHBlci10aHJlYWQgZGVmYXVs dCBjb25uZWN0aW9uIGFuZCB0aGUgZ2xvYmFsCisJCSAqIGRlZmF1bHQgdG8gd2hhdGV2ZXIg dGhleSB3ZXJlIGJlZm9yZSB3ZSBwdWJsaXNoZWQgInRoaXMiLgorCQkgKiBlY3BnX2Zpbmlz aCgpIHJlc2V0IHRoZW0gdG8gdGhlIG5ldyBoZWFkIG9mIGFsbF9jb25uZWN0aW9ucywgYnV0 CisJCSAqIHRoYXQgbWF5IGJlIGEgZGlmZmVyZW50IHRocmVhZCdzIG9wZW4gY29ubmVjdGlv biAtLSBsZXR0aW5nIG91cgorCQkgKiBmYWlsZWQgYXR0ZW1wdCBhaW0gdGhpcyB0aHJlYWQn cyBzbG90IGF0IGEgc2libGluZydzIFBHY29ubiB3b3VsZAorCQkgKiBiZSB1bnNhZmUuCisJ CSAqLworCQlwdGhyZWFkX3NldHNwZWNpZmljKGFjdHVhbF9jb25uZWN0aW9uX2tleSwgcHJl dl90aHJlYWRfY29ubmVjdGlvbik7CisJCWFjdHVhbF9jb25uZWN0aW9uID0gcHJldl9hY3R1 YWxfY29ubmVjdGlvbjsKKwogCQlwdGhyZWFkX211dGV4X3VubG9jaygmY29ubmVjdGlvbnNf bXV0ZXgpOwogCiAJCWVjcGdfcmFpc2UobGluZW5vLCBFQ1BHX0NPTk5FQ1QsIEVDUEdfU1FM U1RBVEVfU1FMQ0xJRU5UX1VOQUJMRV9UT19FU1RBQkxJU0hfU1FMQ09OTkVDVElPTiwgZGIp OwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy9lY3BnbGliL2VjcGdsaWJfZXh0 ZXJuLmggYi9zcmMvaW50ZXJmYWNlcy9lY3BnL2VjcGdsaWIvZWNwZ2xpYl9leHRlcm4uaApp bmRleCBjOTJmMGFhMTA4MS4uYjZjMzkxYmY3MTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZh Y2VzL2VjcGcvZWNwZ2xpYi9lY3BnbGliX2V4dGVybi5oCisrKyBiL3NyYy9pbnRlcmZhY2Vz L2VjcGcvZWNwZ2xpYi9lY3BnbGliX2V4dGVybi5oCkBAIC00LDYgKzQsNyBAQAogI2RlZmlu ZSBfRUNQR19FQ1BHTElCX0VYVEVSTl9ICiAKICNpbmNsdWRlICJlY3BnX2NvbmZpZy5oIgor I2luY2x1ZGUgImVjcGctcHRocmVhZC13aW4zMi5oIgogI2luY2x1ZGUgImVjcGd0eXBlLmgi CiAjaW5jbHVkZSAibGlicHEtZmUuaCIKICNpbmNsdWRlICJzcWxjYS5oIgpAQCAtMTAzLDYg KzEwNCw3IEBAIHN0cnVjdCBjb25uZWN0aW9uCiAJY2hhcgkgICAqbmFtZTsKIAlQR2Nvbm4J ICAgKmNvbm5lY3Rpb247CiAJYm9vbAkJYXV0b2NvbW1pdDsKKwllY3BnX3RocmVhZF9pZCBv d25lcl90aHJlYWQ7CS8qIHRocmVhZCB0aGF0IG9wZW5lZCB0aGlzIGNvbm5lY3Rpb24gKi8K IAlzdHJ1Y3QgRUNQR3R5cGVfaW5mb3JtYXRpb25fY2FjaGUgKmNhY2hlX2hlYWQ7CiAJc3Ry dWN0IHByZXBhcmVkX3N0YXRlbWVudCAqcHJlcF9zdG10czsKIAlzdHJ1Y3QgY29ubmVjdGlv biAqbmV4dDsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvaW5jbHVkZS9lY3Bn LXB0aHJlYWQtd2luMzIuaCBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvaW5jbHVkZS9lY3BnLXB0 aHJlYWQtd2luMzIuaAppbmRleCA3YjZiYTQ2YjM0OS4uYzc0MmJiNTIzMmIgMTAwNjQ0Ci0t LSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvaW5jbHVkZS9lY3BnLXB0aHJlYWQtd2luMzIuaAor KysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL2luY2x1ZGUvZWNwZy1wdGhyZWFkLXdpbjMyLmgK QEAgLTgsOCArOCwyNSBAQAogI2lmbmRlZiBXSU4zMgogCiAjaW5jbHVkZSA8cHRocmVhZC5o PgorCisvKgorICogQWJzdHJhY3Rpb24gZm9yIGNhcHR1cmluZyBhbmQgY29tcGFyaW5nIGEg dGhyZWFkIGlkZW50aXR5LiAgVXNlZCBieQorICogZWNwZ2xpYiB0byByZWNvcmQgd2hpY2gg dGhyZWFkIG93bnMgYSBnaXZlbiBjb25uZWN0aW9uIHNvIHRoYXQgYW4KKyAqIHVubmFtZWQg RVhFQyBTUUwgc3RhdGVtZW50IGlzc3VlZCBmcm9tIGEgZGlmZmVyZW50IHRocmVhZCAod2hv c2Ugb3duCisgKiBDT05ORUNUIG1heSBoYXZlIGZhaWxlZCkgZG9lcyBub3Qgc2lsZW50bHkg ZmFsbCB0aHJvdWdoIHRvIGl0IHZpYSB0aGUKKyAqIGFjdHVhbF9jb25uZWN0aW9uIGdsb2Jh bCBkZWZhdWx0IC0tIGxpYnBxIGlzIG5vdCB0aHJlYWQtc2FmZSBhdCB0aGUKKyAqIHBlci1j b25uZWN0aW9uIGxldmVsLgorICovCit0eXBlZGVmIHB0aHJlYWRfdCBlY3BnX3RocmVhZF9p ZDsKKyNkZWZpbmUgRUNQR19HRVRfVEhSRUFEX0lEKCkJCQlwdGhyZWFkX3NlbGYoKQorI2Rl ZmluZSBFQ1BHX1RIUkVBRF9JRF9FUVVBTChhLCBiKQkJcHRocmVhZF9lcXVhbCgoYSksIChi KSkKKwogI2Vsc2UKIAordHlwZWRlZiBEV09SRCBlY3BnX3RocmVhZF9pZDsKKyNkZWZpbmUg RUNQR19HRVRfVEhSRUFEX0lEKCkJCQlHZXRDdXJyZW50VGhyZWFkSWQoKQorI2RlZmluZSBF Q1BHX1RIUkVBRF9JRF9FUVVBTChhLCBiKQkJKChhKSA9PSAoYikpCisKIHR5cGVkZWYgc3Ry dWN0IHB0aHJlYWRfbXV0ZXhfdAogewogCS8qIGluaXRzdGF0ZSA9IDA6IG5vdCBpbml0aWFs aXplZDsgMTogaW5pdCBkb25lOyAyOiBpbml0IGluIHByb2dyZXNzICovCmRpZmYgLS1naXQg YS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZWNwZ19zY2hlZHVsZSBiL3NyYy9pbnRlcmZh Y2VzL2VjcGcvdGVzdC9lY3BnX3NjaGVkdWxlCmluZGV4IGQxZjVkOTQ1MmI3Li5kMmMyNTRm ZTlmMyAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2VjcGdfc2NoZWR1 bGUKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2VjcGdfc2NoZWR1bGUKQEAgLTY0 LDMgKzY0LDQgQEAgdGVzdDogdGhyZWFkL3RocmVhZF9pbXBsaWNpdAogdGVzdDogdGhyZWFk L3ByZXAKIHRlc3Q6IHRocmVhZC9hbGxvYwogdGVzdDogdGhyZWFkL2Rlc2NyaXB0b3IKK3Rl c3Q6IHRocmVhZC9jb25uZmFpbApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90 ZXN0L2V4cGVjdGVkL3RocmVhZC1jb25uZmFpbC5jIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90 ZXN0L2V4cGVjdGVkL3RocmVhZC1jb25uZmFpbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi41M2Q4ODY1ZTlhOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9p bnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC90aHJlYWQtY29ubmZhaWwuYwpAQCAtMCww ICsxLDE5MiBAQAorLyogUHJvY2Vzc2VkIGJ5IGVjcGcgKHJlZ3Jlc3Npb24gbW9kZSkgKi8K Ky8qIFRoZXNlIGluY2x1ZGUgZmlsZXMgYXJlIGFkZGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3Ig Ki8KKyNpbmNsdWRlIDxlY3BnbGliLmg+CisjaW5jbHVkZSA8ZWNwZ2Vycm5vLmg+CisjaW5j bHVkZSA8c3FsY2EuaD4KKy8qIEVuZCBvZiBhdXRvbWF0aWMgaW5jbHVkZSBzZWN0aW9uICov CisjZGVmaW5lIEVDUEdkZWJ1ZyhYLFkpIEVDUEdkZWJ1ZygoWCkrMTAwLChZKSkKKworI2xp bmUgMSAiY29ubmZhaWwucGdjIgorLyoKKyAqIFZlcmlmeSB0aGF0IGFuIEVYRUMgU1FMIHN0 YXRlbWVudCBpc3N1ZWQgd2l0aG91dCBhIGNvbm5lY3Rpb24gbmFtZSBmcm9tCisgKiBhIHdv cmtlciB0aHJlYWQgd2hvc2Ugb3duIEVYRUMgU1FMIENPTk5FQ1QgZmFpbGVkIGRvZXMgbm90 IHNpbGVudGx5IGZhbGwKKyAqIGJhY2sgdG8gYW5vdGhlciB0aHJlYWQncyBvcGVuIFBHY29u bi4gIEJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyBlY3BnbGliCisgKiBmaXgsIGVjcGdfZ2V0 X2Nvbm5lY3Rpb24oTlVMTCkgd291bGQgcmV0dXJuIHRoZSBnbG9iYWwgZGVmYXVsdAorICog Y29ubmVjdGlvbiByZWdhcmRsZXNzIG9mIHdoaWNoIHRocmVhZCBoYWQgb3BlbmVkIGl0LCBs ZXR0aW5nIHRoZSB3b3JrZXIKKyAqIGlzc3VlIGxpYnBxIGNhbGxzIG9uIHRoZSBtYWluIHRo cmVhZCdzIGNvbm5lY3Rpb24gY29uY3VycmVudGx5IHdpdGggdGhlCisgKiBtYWluIHRocmVh ZCBpdHNlbGYgLS0gbGlicHEgaXMgbm90IHRocmVhZC1zYWZlIGF0IHRoZSBwZXItY29ubmVj dGlvbgorICogbGV2ZWwsIHNvIGNyb3NzLXRocmVhZCBzaGFyaW5nIG11c3QgYmUgb3B0LWlu IGJ5IG5hbWUsIG5vdCBpbXBsaWNpdC4KKyAqCisgKiBUaGUgdGVzdCBmb3JjZXMgYSBkZXRl cm1pbmlzdGljIENPTk5FQ1QgZmFpbHVyZSAodGFyZ2V0IGRhdGFiYXNlIGRvZXMKKyAqIG5v dCBleGlzdCksIHRoZW4gaXNzdWVzIGFuIHVubmFtZWQgRVhFQyBTUUwuICBXaXRoIHRoZSBm aXggdGhlIHVubmFtZWQKKyAqIHN0YXRlbWVudCBtdXN0IGVycm9yIHdpdGggc3FsY29kZSA9 IEVDUEdfTk9fQ09OTiAoLTIyMCk7IHdpdGhvdXQgdGhlCisgKiBmaXggaXQgd291bGQgc2ls ZW50bHkgc3VjY2VlZCBhZ2FpbnN0IHRoZSBtYWluIHRocmVhZCdzIGNvbm5lY3Rpb24KKyAq IChvciwgdW5kZXIgbG9hZCwgY3Jhc2ggZnJvbSBjb25jdXJyZW50IGxpYnBxIGFjY2Vzcyku CisgKi8KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNs dWRlIDxzdGRpby5oPgorI2luY2x1ZGUgImVjcGdfY29uZmlnLmgiCisKKyNpZmRlZiBXSU4z MgorI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCisjaW5jbHVkZSA8d2luZG93cy5oPgor I2luY2x1ZGUgPHByb2Nlc3MuaD4KKyNlbHNlCisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2Vu ZGlmCisKKworI2xpbmUgMSAic3FsY2EuaCIKKyNpZm5kZWYgUE9TVEdSRVNfU1FMQ0FfSAor I2RlZmluZSBQT1NUR1JFU19TUUxDQV9ICisKKyNpZm5kZWYgUEdETExJTVBPUlQKKyNpZiAg ZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKQorI2RlZmluZSBQR0RMTElN UE9SVCBfX2RlY2xzcGVjIChkbGxpbXBvcnQpCisjZWxzZQorI2RlZmluZSBQR0RMTElNUE9S VAorI2VuZGlmCQkJCQkJCS8qIF9fQ1lHV0lOX18gKi8KKyNlbmRpZgkJCQkJCQkvKiBQR0RM TElNUE9SVCAqLworCisjZGVmaW5lIFNRTEVSUk1DX0xFTgkxNTAKKworI2lmZGVmIF9fY3Bs dXNwbHVzCitleHRlcm4gIkMiCit7CisjZW5kaWYKKworc3RydWN0IHNxbGNhX3QKK3sKKwlj aGFyCQlzcWxjYWlkWzhdOworCWxvbmcJCXNxbGFiYzsKKwlsb25nCQlzcWxjb2RlOworCXN0 cnVjdAorCXsKKwkJaW50CQkJc3FsZXJybWw7CisJCWNoYXIJCXNxbGVycm1jW1NRTEVSUk1D X0xFTl07CisJfQkJCXNxbGVycm07CisJY2hhcgkJc3FsZXJycFs4XTsKKwlsb25nCQlzcWxl cnJkWzZdOworCS8qIEVsZW1lbnQgMDogZW1wdHkJCQkJCQkqLworCS8qIDE6IE9JRCBvZiBw cm9jZXNzZWQgdHVwbGUgaWYgYXBwbGljYWJsZQkJCSovCisJLyogMjogbnVtYmVyIG9mIHJv d3MgcHJvY2Vzc2VkCQkJCSovCisJLyogYWZ0ZXIgYW4gSU5TRVJULCBVUERBVEUgb3IJCQkJ Ki8KKwkvKiBERUxFVEUgc3RhdGVtZW50CQkJCQkqLworCS8qIDM6IGVtcHR5CQkJCQkJKi8K KwkvKiA0OiBlbXB0eQkJCQkJCSovCisJLyogNTogZW1wdHkJCQkJCQkqLworCWNoYXIJCXNx bHdhcm5bOF07CisJLyogRWxlbWVudCAwOiBzZXQgdG8gJ1cnIGlmIGF0IGxlYXN0IG9uZSBv dGhlciBpcyAnVycJKi8KKwkvKiAxOiBpZiAnVycgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBz dHJpbmcJCSovCisJLyogdmFsdWUgd2FzIHRydW5jYXRlZCB3aGVuIGl0IHdhcwkJCSovCisJ Lyogc3RvcmVkIGludG8gYSBob3N0IHZhcmlhYmxlLiAgICAgICAgICAgICAqLworCisJLyoK KwkgKiAyOiBpZiAnVycgYSAoaG9wZWZ1bGx5KSBub24tZmF0YWwgbm90aWNlIG9jY3VycmVk CisJICovCS8qIDM6IGVtcHR5ICovCisJLyogNDogZW1wdHkJCQkJCQkqLworCS8qIDU6IGVt cHR5CQkJCQkJKi8KKwkvKiA2OiBlbXB0eQkJCQkJCSovCisJLyogNzogZW1wdHkJCQkJCQkq LworCisJY2hhcgkJc3Fsc3RhdGVbNV07Cit9OworCitzdHJ1Y3Qgc3FsY2FfdCAqRUNQR2dl dF9zcWxjYSh2b2lkKTsKKworI2lmbmRlZiBQT1NUR1JFU19FQ1BHX0lOVEVSTkFMCisjZGVm aW5lIHNxbGNhICgqRUNQR2dldF9zcWxjYSgpKQorI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVz cGx1cworfQorI2VuZGlmCisKKyNlbmRpZgorCisjbGluZSAzMCAiY29ubmZhaWwucGdjIgor CisKKyNsaW5lIDEgInJlZ3Jlc3Npb24uaCIKKworCisKKworCisKKyNsaW5lIDMxICJjb25u ZmFpbC5wZ2MiCisKKworI2lmZGVmIFdJTjMyCitzdGF0aWMgdW5zaWduZWQgX19zdGRjYWxs Citmbih2b2lkICphcmcpCisjZWxzZQorc3RhdGljIHZvaWQgKgorZm4odm9pZCAqYXJnKQor I2VuZGlmCit7CisJLyogZXhlYyBzcWwgYmVnaW4gZGVjbGFyZSBzZWN0aW9uICovCisJCSAg ICAgCisJCisjbGluZSA0MiAiY29ubmZhaWwucGdjIgorIGNoYXIgKiBxdWVyeSA9ICJTRUxF Q1QgMSIgOworLyogZXhlYyBzcWwgZW5kIGRlY2xhcmUgc2VjdGlvbiAqLworI2xpbmUgNDMg ImNvbm5mYWlsLnBnYyIKKworCisJKHZvaWQpIGFyZzsKKworCS8qCisJICogQ29ubmVjdCB0 byBhIGRhdGFiYXNlIG5hbWUgdGhhdCB0aGUgdGVzdCBpbnN0YW5jZSBkb2VzIG5vdCBoYXZl LgorCSAqIFRoaXMgaXMgZ3VhcmFudGVlZCB0byBmYWlsIHdpdGggRUNQR19DT05ORUNULgor CSAqLworCXsgRUNQR2Nvbm5lY3QoX19MSU5FX18sIDAsICJub25leGlzdGVudF94eXp6eV9k YiIgLCBOVUxMLCBOVUxMICwgTlVMTCwgMCk7IH0KKyNsaW5lIDUxICJjb25uZmFpbC5wZ2Mi CisKKwlwcmludGYoIndvcmtlciBjb25uZWN0IHNxbGNvZGUgPSAlbGRcbiIsIHNxbGNhLnNx bGNvZGUpOworCisJLyoKKwkgKiBBZnRlciBvdXIgb3duIGNvbm5lY3QgZmFpbGVkLCBhbiB1 bm5hbWVkIEVYRUMgU1FMIG11c3QgZmFpbCB3aXRoCisJICogRUNQR19OT19DT05OICgtMjIw KSwgTk9UIHNpbGVudGx5IHVzZSB0aGUgbWFpbiB0aHJlYWQncyBjb25uZWN0aW9uLgorCSAq LworCXsgRUNQR3ByZXBhcmUoX19MSU5FX18sIE5VTEwsIDAsICJpd29ya2VyIiwgcXVlcnkp O30KKyNsaW5lIDU4ICJjb25uZmFpbC5wZ2MiCisKKwlwcmludGYoIndvcmtlciBwcmVwYXJl IHNxbGNvZGUgPSAlbGRcbiIsIHNxbGNhLnNxbGNvZGUpOworCisJcmV0dXJuIDA7Cit9CisK K2ludAorbWFpbih2b2lkKQoreworI2lmZGVmIFdJTjMyCisJSEFORExFCQl0OworCXVuc2ln bmVkCWlkOworI2Vsc2UKKwlwdGhyZWFkX3QJdDsKKyNlbmRpZgorCisJeyBFQ1BHY29ubmVj dChfX0xJTkVfXywgMCwgImVjcGcxX3JlZ3Jlc3Npb24iICwgTlVMTCwgTlVMTCAsIE5VTEws IDApOyB9CisjbGluZSA3NCAiY29ubmZhaWwucGdjIgorCisJeyBFQ1BHc2V0Y29tbWl0KF9f TElORV9fLCAib24iLCBOVUxMKTt9CisjbGluZSA3NSAiY29ubmZhaWwucGdjIgorCisKKyNp ZmRlZiBXSU4zMgorCXQgPSAoSEFORExFKSBfYmVnaW50aHJlYWRleChOVUxMLCAwLCBmbiwg TlVMTCwgMCwgJmlkKTsKKwlXYWl0Rm9yU2luZ2xlT2JqZWN0KHQsIElORklOSVRFKTsKKwlD bG9zZUhhbmRsZSh0KTsKKyNlbHNlCisJcHRocmVhZF9jcmVhdGUoJnQsIE5VTEwsIGZuLCBO VUxMKTsKKwlwdGhyZWFkX2pvaW4odCwgTlVMTCk7CisjZW5kaWYKKworCXsgRUNQR2Rpc2Nv bm5lY3QoX19MSU5FX18sICJDVVJSRU5UIik7fQorI2xpbmUgODYgImNvbm5mYWlsLnBnYyIK KworCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rl c3QvZXhwZWN0ZWQvdGhyZWFkLWNvbm5mYWlsLnN0ZGVyciBiL3NyYy9pbnRlcmZhY2VzL2Vj cGcvdGVzdC9leHBlY3RlZC90aHJlYWQtY29ubmZhaWwuc3RkZXJyCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZApkaWZmIC0tZ2l0IGEvc3Jj L2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3RocmVhZC1jb25uZmFpbC5zdGRvdXQg Yi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvdGhyZWFkLWNvbm5mYWlsLnN0 ZG91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWQ5MWYzZjcz NTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhwZWN0 ZWQvdGhyZWFkLWNvbm5mYWlsLnN0ZG91dApAQCAtMCwwICsxLDIgQEAKK3dvcmtlciBjb25u ZWN0IHNxbGNvZGUgPSAtNDAyCit3b3JrZXIgcHJlcGFyZSBzcWxjb2RlID0gLTIyMApkaWZm IC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3RocmVhZC9NYWtlZmlsZSBiL3Ny Yy9pbnRlcmZhY2VzL2VjcGcvdGVzdC90aHJlYWQvTWFrZWZpbGUKaW5kZXggMWI0ZGRjZmY2 MWIuLjA0YjYwMDQyMGQ5IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qv dGhyZWFkL01ha2VmaWxlCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC90aHJlYWQv TWFrZWZpbGUKQEAgLTgsNiArOCw3IEBAIFRFU1RTID0gdGhyZWFkX2ltcGxpY2l0IHRocmVh ZF9pbXBsaWNpdC5jIFwKICAgICAgICAgdGhyZWFkIHRocmVhZC5jIFwKICAgICAgICAgcHJl cCBwcmVwLmMgXAogICAgICAgICBkZXNjcmlwdG9yIGRlc2NyaXB0b3IuYyBcCi0gICAgICAg IGFsbG9jIGFsbG9jLmMKKyAgICAgICAgYWxsb2MgYWxsb2MuYyBcCisgICAgICAgIGNvbm5m YWlsIGNvbm5mYWlsLmMKIAogYWxsOiAkKFRFU1RTKQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVy ZmFjZXMvZWNwZy90ZXN0L3RocmVhZC9jb25uZmFpbC5wZ2MgYi9zcmMvaW50ZXJmYWNlcy9l Y3BnL3Rlc3QvdGhyZWFkL2Nvbm5mYWlsLnBnYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uM2UyZTUyNzFkNDcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW50 ZXJmYWNlcy9lY3BnL3Rlc3QvdGhyZWFkL2Nvbm5mYWlsLnBnYwpAQCAtMCwwICsxLDg5IEBA CisvKgorICogVmVyaWZ5IHRoYXQgYW4gRVhFQyBTUUwgc3RhdGVtZW50IGlzc3VlZCB3aXRo b3V0IGEgY29ubmVjdGlvbiBuYW1lIGZyb20KKyAqIGEgd29ya2VyIHRocmVhZCB3aG9zZSBv d24gRVhFQyBTUUwgQ09OTkVDVCBmYWlsZWQgZG9lcyBub3Qgc2lsZW50bHkgZmFsbAorICog YmFjayB0byBhbm90aGVyIHRocmVhZCdzIG9wZW4gUEdjb25uLiAgQmVmb3JlIHRoZSBjb3Jy ZXNwb25kaW5nIGVjcGdsaWIKKyAqIGZpeCwgZWNwZ19nZXRfY29ubmVjdGlvbihOVUxMKSB3 b3VsZCByZXR1cm4gdGhlIGdsb2JhbCBkZWZhdWx0CisgKiBjb25uZWN0aW9uIHJlZ2FyZGxl c3Mgb2Ygd2hpY2ggdGhyZWFkIGhhZCBvcGVuZWQgaXQsIGxldHRpbmcgdGhlIHdvcmtlcgor ICogaXNzdWUgbGlicHEgY2FsbHMgb24gdGhlIG1haW4gdGhyZWFkJ3MgY29ubmVjdGlvbiBj b25jdXJyZW50bHkgd2l0aCB0aGUKKyAqIG1haW4gdGhyZWFkIGl0c2VsZiAtLSBsaWJwcSBp cyBub3QgdGhyZWFkLXNhZmUgYXQgdGhlIHBlci1jb25uZWN0aW9uCisgKiBsZXZlbCwgc28g Y3Jvc3MtdGhyZWFkIHNoYXJpbmcgbXVzdCBiZSBvcHQtaW4gYnkgbmFtZSwgbm90IGltcGxp Y2l0LgorICoKKyAqIFRoZSB0ZXN0IGZvcmNlcyBhIGRldGVybWluaXN0aWMgQ09OTkVDVCBm YWlsdXJlICh0YXJnZXQgZGF0YWJhc2UgZG9lcworICogbm90IGV4aXN0KSwgdGhlbiBpc3N1 ZXMgYW4gdW5uYW1lZCBFWEVDIFNRTC4gIFdpdGggdGhlIGZpeCB0aGUgdW5uYW1lZAorICog c3RhdGVtZW50IG11c3QgZXJyb3Igd2l0aCBzcWxjb2RlID0gRUNQR19OT19DT05OICgtMjIw KTsgd2l0aG91dCB0aGUKKyAqIGZpeCBpdCB3b3VsZCBzaWxlbnRseSBzdWNjZWVkIGFnYWlu c3QgdGhlIG1haW4gdGhyZWFkJ3MgY29ubmVjdGlvbgorICogKG9yLCB1bmRlciBsb2FkLCBj cmFzaCBmcm9tIGNvbmN1cnJlbnQgbGlicHEgYWNjZXNzKS4KKyAqLworI2luY2x1ZGUgPHN0 ZGludC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5j bHVkZSAiZWNwZ19jb25maWcuaCIKKworI2lmZGVmIFdJTjMyCisjZGVmaW5lIFdJTjMyX0xF QU5fQU5EX01FQU4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8cHJvY2Vzcy5o PgorI2Vsc2UKKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisjZW5kaWYKKworZXhlYyBzcWwgaW5j bHVkZSBzcWxjYTsKK2V4ZWMgc3FsIGluY2x1ZGUgLi4vcmVncmVzc2lvbjsKKworI2lmZGVm IFdJTjMyCitzdGF0aWMgdW5zaWduZWQgX19zdGRjYWxsCitmbih2b2lkICphcmcpCisjZWxz ZQorc3RhdGljIHZvaWQgKgorZm4odm9pZCAqYXJnKQorI2VuZGlmCit7CisJZXhlYyBzcWwg YmVnaW4gZGVjbGFyZSBzZWN0aW9uOworCWNoYXIJICAgKnF1ZXJ5ID0gIlNFTEVDVCAxIjsK KwlleGVjIHNxbCBlbmQgZGVjbGFyZSBzZWN0aW9uOworCisJKHZvaWQpIGFyZzsKKworCS8q CisJICogQ29ubmVjdCB0byBhIGRhdGFiYXNlIG5hbWUgdGhhdCB0aGUgdGVzdCBpbnN0YW5j ZSBkb2VzIG5vdCBoYXZlLgorCSAqIFRoaXMgaXMgZ3VhcmFudGVlZCB0byBmYWlsIHdpdGgg RUNQR19DT05ORUNULgorCSAqLworCWV4ZWMgc3FsIGNvbm5lY3QgdG8gbm9uZXhpc3RlbnRf eHl6enlfZGI7CisJcHJpbnRmKCJ3b3JrZXIgY29ubmVjdCBzcWxjb2RlID0gJWxkXG4iLCBz cWxjYS5zcWxjb2RlKTsKKworCS8qCisJICogQWZ0ZXIgb3VyIG93biBjb25uZWN0IGZhaWxl ZCwgYW4gdW5uYW1lZCBFWEVDIFNRTCBtdXN0IGZhaWwgd2l0aAorCSAqIEVDUEdfTk9fQ09O TiAoLTIyMCksIE5PVCBzaWxlbnRseSB1c2UgdGhlIG1haW4gdGhyZWFkJ3MgY29ubmVjdGlv bi4KKwkgKi8KKwlleGVjIHNxbCBwcmVwYXJlIGl3b3JrZXIgZnJvbSA6cXVlcnk7CisJcHJp bnRmKCJ3b3JrZXIgcHJlcGFyZSBzcWxjb2RlID0gJWxkXG4iLCBzcWxjYS5zcWxjb2RlKTsK KworCXJldHVybiAwOworfQorCitpbnQKK21haW4odm9pZCkKK3sKKyNpZmRlZiBXSU4zMgor CUhBTkRMRQkJdDsKKwl1bnNpZ25lZAlpZDsKKyNlbHNlCisJcHRocmVhZF90CXQ7CisjZW5k aWYKKworCWV4ZWMgc3FsIGNvbm5lY3QgdG8gUkVHUkVTU0RCMTsKKwlleGVjIHNxbCBzZXQg YXV0b2NvbW1pdCB0byBvbjsKKworI2lmZGVmIFdJTjMyCisJdCA9IChIQU5ETEUpIF9iZWdp bnRocmVhZGV4KE5VTEwsIDAsIGZuLCBOVUxMLCAwLCAmaWQpOworCVdhaXRGb3JTaW5nbGVP YmplY3QodCwgSU5GSU5JVEUpOworCUNsb3NlSGFuZGxlKHQpOworI2Vsc2UKKwlwdGhyZWFk X2NyZWF0ZSgmdCwgTlVMTCwgZm4sIE5VTEwpOworCXB0aHJlYWRfam9pbih0LCBOVUxMKTsK KyNlbmRpZgorCisJZXhlYyBzcWwgZGlzY29ubmVjdDsKKworCXJldHVybiAwOworfQpkaWZm IC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3RocmVhZC9tZXNvbi5idWlsZCBi L3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC90aHJlYWQvbWVzb24uYnVpbGQKaW5kZXggYjIz Mjg5NzMwYjcuLjNhZjQ2MDRiOTBjIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3Bn L3Rlc3QvdGhyZWFkL21lc29uLmJ1aWxkCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVz dC90aHJlYWQvbWVzb24uYnVpbGQKQEAgLTYsNiArNiw3IEBAIHBnY19maWxlcyA9IFsKICAg J3ByZXAnLAogICAnZGVzY3JpcHRvcicsCiAgICdhbGxvYycsCisgICdjb25uZmFpbCcsCiBd CiAKIGZvcmVhY2ggcGdjX2ZpbGUgOiBwZ2NfZmlsZXMKLS0gCjIuNDMuMAoK --------------Mt5SMUDGVdDnqcPNdRHKpP8L--