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 1vU0xn-00FW0a-26 for pgsql-hackers@arkaria.postgresql.org; Fri, 12 Dec 2025 11:05:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vU0xm-007mBK-1w for pgsql-hackers@arkaria.postgresql.org; Fri, 12 Dec 2025 11:05:31 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vU0xm-007mB1-05 for pgsql-hackers@lists.postgresql.org; Fri, 12 Dec 2025 11:05:31 +0000 Received: from mail-yx1-xb131.google.com ([2607:f8b0:4864:20::b131]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vU0xk-000IfQ-1y for pgsql-hackers@postgresql.org; Fri, 12 Dec 2025 11:05:29 +0000 Received: by mail-yx1-xb131.google.com with SMTP id 956f58d0204a3-644715aad1aso1274622d50.0 for ; Fri, 12 Dec 2025 03:05:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=percona.com; s=google; t=1765537527; x=1766142327; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=HnDNCxSfTBvLxVMbndG0zaTQmXxmNE6THvdNZ8AwAns=; b=TUQqWVNxr3KnX+leUDBlOyDxElG8Cr/bAMmpUOaEiLfYhtxyKiloYvJINm9EOK8An8 SRPKpUL6CnjOOGd0uujqzM+1YLpWbXr4a980xJz8Lmga83xDDiAQVgNNyLgYGvLQHvF0 i8C1ImrPEcFSjNGHXhDTKOAQc7DECqAvxiJ64= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765537527; x=1766142327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=HnDNCxSfTBvLxVMbndG0zaTQmXxmNE6THvdNZ8AwAns=; b=iW7P9OpvR8pQCzeJ8iI0OBpCdkVpXjaiDIKJAE2wvazSfIrPoyaY08Wkj0ARB1+S9a KqUGkhgDdHYrS9YE6rKlr/AICcnI5mzVkBN/MBXAC3e9HZUuTELX0A7BR7/KVxyTq6+/ AhFCFd56CLsGpDx19m59li5O24pi83U5/k4r4FoiJCdOxcuVn4KICw3z1ZMAB9at0Ae7 9hLtj/IkfRmQHz3r45wtE+uBmETfB/WOkPV2nEYsNr7ZNoIVMb3VttRWiZZU6PHPZ+sy E4+nrY4KuuYyqg4PwM3n0ntHAfBqf1Vq8d3PlcwpBFvN1JxaaiXa8e0MsF8xmF51Q5M0 hvvw== X-Forwarded-Encrypted: i=1; AJvYcCXxjHfCrZjX+sus+G9F93JMkspujfa0bL43WNeukguf6Rpvh4cjs1JVq059bxkTpPz9HIBGoq+P8fo3vMEy@postgresql.org X-Gm-Message-State: AOJu0YzgSyJT9llgC4EFBaOxmrvKO6QrEXtzOZdE5HGGJcFBoS4CkeoG WQf+u2DVT9Cftlqg1ZEftfH7bp9olTRwRwcjRoHDZyBbzMvCZz7XGKXeihQQh9J2e/yLZkpLd9N LDzqN8zgTrNo+t42UPGwW5yFThtGJLo5Ai6fyjI38bdzcX9UnYUCao9Z6fsRRcJlObfbgoC19Ue HH19vfNx0ZA2+zvzwfXcls9WLX11654nsMVR8E+iE6EdxR6QoI2XSNYJZiYjT1Ge9SX3SeABQgg mq3HoBcSciiuuyoSrH7nFUw4TLPWF58CM1zcMj7lxGkOQnJOQY= X-Gm-Gg: AY/fxX7W7CAibmCCqlfx1FRih5B+fTqcoT8w9b7Kl6qqTohtizCioRvtYW7d8tHgdyS qJIuDCB5F7GmPsMHQO++eZeBW/hIXgsH3LOs8IB3jix5II6LIQoBZnA0BzkYG4xCWZFbsJNlJcw /19qimEj4QFKZpbtAwrcTchT5vQ7WAC00X6pp9uSm3nqNCpQoT2ShYkxhiIi00DNlGSsXwvJYJs ane6/a5yfH6wjbx42WOEfLj1mVsBVeARG3pElnOTOYtF341J6tl98yndq56BDEL2PdJVrik0kym Ik2J/7pfCVPtM1WNUUi5rAZ/gXN/6o3qMn7ysoPQFKplEaW8dNCjYITl X-Google-Smtp-Source: AGHT+IEFTneVEeyl/LmVyDHly77mLWUyV6BVNQr/bDfuqBgRydeTnal3X5/H3m8YCV5GnJ4J8yitxDYPgz2Q6Eqgl1E= X-Received: by 2002:a05:690e:1245:b0:644:770b:bc61 with SMTP id 956f58d0204a3-6447a4ff3e0mr4545675d50.19.1765537526514; Fri, 12 Dec 2025 03:05:26 -0800 (PST) MIME-Version: 1.0 References: <16a91d02795cb991963326a902afa764e4d721db.camel@gmail.com> <3D82D240-1CC5-4CE6-BE30-6065B693D40C@yesql.se> In-Reply-To: From: Zsolt Parragi Date: Fri, 12 Dec 2025 11:05:15 +0000 X-Gm-Features: AQt7F2oIKlyaGxfxM5a7r0kmwm0odO3cuKHkaZsaH-8HgqJumiy_oYk4y8smwDo Message-ID: Subject: Re: Make PGOAUTHCAFILE in libpq-oauth work out of debug mode To: Jacob Champion Cc: Daniel Gustafsson , "Jonathan Gonzalez V." , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000001beb600645bf3d60" X-CLOUD-SEC-AV-Sent: true X-CLOUD-SEC-AV-Info: percona,google_mail,monitor X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001beb600645bf3d60 Content-Type: text/plain; charset="UTF-8" Hello I implemented a simple patch based on the above suggestion (PGOAUTHDEBUG=UNSAFE:http...). I did not update the documentation yet, let's see what everyone thinks about it before that, and I also have some concerns/questions. I added the new functions into a common source file which gets included in both the oauth module and libpq. I'm not entirely happy about this, but I didn't see a better way without duplicating the code. My concern, which is also there with the current version: is an environment variable the best way to control these settings in a library included into many applications? Wouldn't it be better to make these settings in libpq (or the oauth module), and only add the environment variables to psql? This can be used to inject a CA into an application without the user noticing it, or without the application developer being aware of the possibility. With the current single-value variable, it is already possible, and in an application without a visible standard output, it is already hidden. But by splitting the setting into multiple flags, this can go unnoticed even in a console application. Another question is what to do with the CA file - currently it remains a separate (environment) variable, but maybe it could be included in the option string instead: PGOAUTHDEBUG=UNSAFE:custom-ca=/path/to/the/file What do you think about it? --0000000000001beb600645bf3d60 Content-Type: application/octet-stream; name="0001-Split-PGOAUTHDEBUG-UNSAFE-into-multiple-options.patch" Content-Disposition: attachment; filename="0001-Split-PGOAUTHDEBUG-UNSAFE-into-multiple-options.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj2rb7080 RnJvbSAxNjMyZWIyM2ExNjk1NGE1M2IzMjVlMzMzNmNkZGRiYTE5ZGI1NDM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEu Y29tPgpEYXRlOiBUaHUsIDExIERlYyAyMDI1IDIzOjU2OjA4ICswMDAwClN1YmplY3Q6IFtQQVRD SF0gU3BsaXQgUEdPQVVUSERFQlVHPVVOU0FGRSBpbnRvIG11bHRpcGxlIG9wdGlvbnMKCi0tLQog c3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvTWFrZWZpbGUgICAgICAgIHwgIDEyICstCiBzcmMv aW50ZXJmYWNlcy9saWJwcS1vYXV0aC9tZXNvbi5idWlsZCAgICAgfCAgIDYgKy0KIHNyYy9pbnRl cmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYyAgICB8ICAxOCArLS0KIHNyYy9pbnRlcmZh Y2VzL2xpYnBxLW9hdXRoL29hdXRoLXV0aWxzLmMgICB8ICAxMSAtLQogc3JjL2ludGVyZmFjZXMv bGlicHEtb2F1dGgvb2F1dGgtdXRpbHMuaCAgIHwgICAyICstCiBzcmMvaW50ZXJmYWNlcy9saWJw cS9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2Zl LWF1dGgtb2F1dGgtZGVidWcuYyB8IDE0MiArKysrKysrKysrKysrKysrKysrKysKIHNyYy9pbnRl cmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYyAgICAgICB8ICAxNiArLS0KIHNyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguaCAgICAgICB8ICAxOSArKy0KIHNyYy9pbnRlcmZhY2Vz L2xpYnBxL21lc29uLmJ1aWxkICAgICAgICAgICB8ICAgMSArCiAxMCBmaWxlcyBjaGFuZ2VkLCAx OTIgaW5zZXJ0aW9ucygrKSwgMzggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC1kZWJ1Zy5jCgpkaWZmIC0tZ2l0IGEvc3Jj L2ludGVyZmFjZXMvbGlicHEtb2F1dGgvTWFrZWZpbGUgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1v YXV0aC9NYWtlZmlsZQppbmRleCA1MTE0NWYwODVhOC4uMWFlN2IwMGU4MTYgMTAwNjQ0Ci0tLSBh L3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL01ha2VmaWxlCisrKyBiL3NyYy9pbnRlcmZhY2Vz L2xpYnBxLW9hdXRoL01ha2VmaWxlCkBAIC0zMCwxNSArMzAsMjUgQEAgb3ZlcnJpZGUgQ0ZMQUdT ICs9ICQoUFRIUkVBRF9DRkxBR1MpCiBPQkpTID0gXAogCSQoV0lOMzJSRVMpCiAKLU9CSlNfU1RB VElDID0gb2F1dGgtY3VybC5vCitPQkpTX1NUQVRJQyA9IFwKKwlvYXV0aC1jdXJsLm8gXAorCWZl LWF1dGgtb2F1dGgtZGVidWcubwogCiAjIFRoZSBzaGFyZWQgbGlicmFyeSBuZWVkcyBhZGRpdGlv bmFsIGdsdWUgc3ltYm9scy4KIE9CSlNfU0hMSUIgPSBcCiAJb2F1dGgtY3VybF9zaGxpYi5vIFwK IAlvYXV0aC11dGlscy5vIFwKKwlmZS1hdXRoLW9hdXRoLWRlYnVnX3NobGliLm8KIAogb2F1dGgt dXRpbHMubzogb3ZlcnJpZGUgQ1BQRkxBR1MgKz0gLURVU0VfRFlOQU1JQ19PQVVUSAogb2F1dGgt Y3VybF9zaGxpYi5vOiBvdmVycmlkZSBDUFBGTEFHU19TSExJQiArPSAtRFVTRV9EWU5BTUlDX09B VVRICitmZS1hdXRoLW9hdXRoLWRlYnVnX3NobGliLm86IG92ZXJyaWRlIENQUEZMQUdTX1NITElC ICs9IC1EVVNFX0RZTkFNSUNfT0FVVEgKKworZmUtYXV0aC1vYXV0aC1kZWJ1Zy5vOiAkKGxpYnBx X3NyY2RpcikvZmUtYXV0aC1vYXV0aC1kZWJ1Zy5jCisJJChDQykgJChDRkxBR1MpICQoQ1BQRkxB R1MpIC1jICQ8IC1vICRACisKK2ZlLWF1dGgtb2F1dGgtZGVidWdfc2hsaWIubzogJChsaWJwcV9z cmNkaXIpL2ZlLWF1dGgtb2F1dGgtZGVidWcuYworCSQoQ0MpICQoQ0ZMQUdTKSAkKENGTEFHU19T TCkgJChDUFBGTEFHUykgJChDUFBGTEFHU19TSExJQikgLWMgJDwgLW8gJEAKIAogIyBBZGQgc2hs aWItL3N0bGliLXNwZWNpZmljIG9iamVjdHMuCiAkKHNobGliKTogb3ZlcnJpZGUgT0JKUyArPSAk KE9CSlNfU0hMSUIpCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9tZXNv bi5idWlsZCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL21lc29uLmJ1aWxkCmluZGV4IDUw NWUxNjcxYjg2Li41YzkxNmIyNWU4MSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEt b2F1dGgvbWVzb24uYnVpbGQKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvbWVzb24u YnVpbGQKQEAgLTYsNiArNiw3IEBAIGVuZGlmCiAKIGxpYnBxX29hdXRoX3NvdXJjZXMgPSBmaWxl cygKICAgJ29hdXRoLWN1cmwuYycsCisgICcuLi9saWJwcS9mZS1hdXRoLW9hdXRoLWRlYnVnLmMn LAogKQogCiAjIFRoZSBzaGFyZWQgbGlicmFyeSBuZWVkcyBhZGRpdGlvbmFsIGdsdWUgc3ltYm9s cy4KQEAgLTUwLDcgKzUxLDEwIEBAIGxpYnBxX29hdXRoX3NvID0gc2hhcmVkX21vZHVsZShsaWJw cV9vYXV0aF9uYW1lLAogCiBsaWJwcV9vYXV0aF90ZXN0X2RlcHMgPSBbXQogCi1vYXV0aF90ZXN0 X3NvdXJjZXMgPSBmaWxlcygndGVzdC1vYXV0aC1jdXJsLmMnKSArIGxpYnBxX29hdXRoX3NvX3Nv dXJjZXMKK29hdXRoX3Rlc3Rfc291cmNlcyA9IGZpbGVzKAorICAndGVzdC1vYXV0aC1jdXJsLmMn LAorICAnLi4vbGlicHEvZmUtYXV0aC1vYXV0aC1kZWJ1Zy5jJywKKykgKyBsaWJwcV9vYXV0aF9z b19zb3VyY2VzCiAKIGlmIGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJwogICBvYXV0aF90ZXN0X3Nv dXJjZXMgKz0gcmNfYmluX2dlbi5wcm9jZXNzKHdpbjMydmVyX3JjLCBleHRyYV9hcmdzOiBbCmRp ZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmMgYi9zcmMv aW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmMKaW5kZXggYmQwYTY1NmExNjYuLjE4 NWRiYjY0YmFiIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1j dXJsLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5jCkBAIC0y NzcsNyArMjc3LDcgQEAgc3RydWN0IGFzeW5jX2N0eAogCWludAkJCXJ1bm5pbmc7CQkvKiBpcyBh c3luY2hyb25vdXMgd29yayBpbiBwcm9ncmVzcz8gKi8KIAlib29sCQl1c2VyX3Byb21wdGVkOwkv KiBoYXZlIHdlIGFscmVhZHkgc2VudCB0aGUgYXV0aHogcHJvbXB0PyAqLwogCWJvb2wJCXVzZWRf YmFzaWNfYXV0aDsJLyogZGlkIHdlIHNlbmQgYSBjbGllbnQgc2VjcmV0PyAqLwotCWJvb2wJCWRl YnVnZ2luZzsJCS8qIGNhbiB3ZSBnaXZlIHVuc2FmZSBkZXZlbG9wZXIgYXNzaXN0YW5jZT8gKi8K KwlvYXV0aF9kZWJ1Z19mbGFncyBkZWJ1Z19mbGFnczsJLyogY2FuIHdlIGdpdmUgZGV2ZWxvcGVy IGFzc2lzdGFuY2UgKi8KIAlpbnQJCQlkYmdfbnVtX2NhbGxzOwkvKiAoZGVidWcgbW9kZSkgaG93 IG1hbnkgdGltZXMgd2VyZSB3ZSBjYWxsZWQ/ICovCiB9OwogCkBAIC05NzgsNyArOTc4LDcgQEAg cGFyc2VfaW50ZXJ2YWwoc3RydWN0IGFzeW5jX2N0eCAqYWN0eCwgY29uc3QgY2hhciAqaW50ZXJ2 YWxfc3RyKQogCXBhcnNlZCA9IGNlaWwocGFyc2VkKTsKIAogCWlmIChwYXJzZWQgPCAxKQotCQly ZXR1cm4gYWN0eC0+ZGVidWdnaW5nID8gMCA6IDE7CisJCXJldHVybiBhY3R4LT5kZWJ1Z19mbGFn cy5mYXN0X3JldHJ5ID8gMCA6IDE7CiAKIAllbHNlIGlmIChwYXJzZWQgPj0gSU5UX01BWCkKIAkJ cmV0dXJuIElOVF9NQVg7CkBAIC0xNzUzLDcgKzE3NTMsNyBAQCBzZXR1cF9jdXJsX2hhbmRsZXMo c3RydWN0IGFzeW5jX2N0eCAqYWN0eCkKIAkgKi8KIAlDSEVDS19TRVRPUFQoYWN0eCwgQ1VSTE9Q VF9OT1NJR05BTCwgMUwsIHJldHVybiBmYWxzZSk7CiAKLQlpZiAoYWN0eC0+ZGVidWdnaW5nKQor CWlmIChhY3R4LT5kZWJ1Z19mbGFncy50cmFjZSkKIAl7CiAJCS8qCiAJCSAqIFNldCBhIGNhbGxi YWNrIGZvciByZXRyaWV2aW5nIGVycm9yIGluZm9ybWF0aW9uIGZyb20gbGliY3VybCwgdGhlCkBA IC0xNzg1LDcgKzE3ODUsNyBAQCBzZXR1cF9jdXJsX2hhbmRsZXMoc3RydWN0IGFzeW5jX2N0eCAq YWN0eCkKIAkJY29uc3QgbG9uZwl1bnNhZmUgPSBDVVJMUFJPVE9fSFRUUFMgfCBDVVJMUFJPVE9f SFRUUDsKICNlbmRpZgogCi0JCWlmIChhY3R4LT5kZWJ1Z2dpbmcpCisJCWlmIChhY3R4LT5kZWJ1 Z19mbGFncy5odHRwKQogCQkJcHJvdG9zID0gdW5zYWZlOwogCiAJCUNIRUNLX1NFVE9QVChhY3R4 LCBwb3B0LCBwcm90b3MsIHJldHVybiBmYWxzZSk7CkBAIC0xNzk5LDcgKzE3OTksNyBAQCBzZXR1 cF9jdXJsX2hhbmRsZXMoc3RydWN0IGFzeW5jX2N0eCAqYWN0eCkKIAkgKiB0aGUgZmxvdyB0byB3 b3JrIGF0IGFsbCwgc28gYW55IGNoYW5nZXMgdG8gdGhlIHJvb3RzIGFyZSBsaWtlbHkgdG8gYmUK IAkgKiBkb25lIHN5c3RlbS13aWRlLgogCSAqLwotCWlmIChhY3R4LT5kZWJ1Z2dpbmcpCisJaWYg KGFjdHgtPmRlYnVnX2ZsYWdzLmN1c3RvbV9jYSkKIAl7CiAJCWNvbnN0IGNoYXIgKmVudjsKIApA QCAtMjI2NSw3ICsyMjY1LDcgQEAgY2hlY2tfZm9yX2RldmljZV9mbG93KHN0cnVjdCBhc3luY19j dHggKmFjdHgpCiAJICogZGVjZW50IHRpbWUgdG8gYmFpbCBvdXQgaWYgd2UncmUgbm90IHVzaW5n IEhUVFBTIGZvciB0aGUgZW5kcG9pbnRzCiAJICogd2UnbGwgdXNlIGZvciB0aGUgZmxvdy4KIAkg Ki8KLQlpZiAoIWFjdHgtPmRlYnVnZ2luZykKKwlpZiAoIWFjdHgtPmRlYnVnX2ZsYWdzLmh0dHAp CiAJewogCQlpZiAocGdfc3RybmNhc2VjbXAocHJvdmlkZXItPmRldmljZV9hdXRob3JpemF0aW9u X2VuZHBvaW50LAogCQkJCQkJICAgSFRUUFNfU0NIRU1FLCBzdHJsZW4oSFRUUFNfU0NIRU1FKSkg IT0gMCkKQEAgLTI3ODcsOCArMjc4Nyw4IEBAIHBnX2ZlX3J1bl9vYXV0aF9mbG93X2ltcGwoUEdj b25uICpjb25uKQogCQlhY3R4LT5tdXggPSBQR0lOVkFMSURfU09DS0VUOwogCQlhY3R4LT50aW1l cmZkID0gLTE7CiAKLQkJLyogU2hvdWxkIHdlIGVuYWJsZSB1bnNhZmUgZmVhdHVyZXM/ICovCi0J CWFjdHgtPmRlYnVnZ2luZyA9IG9hdXRoX3Vuc2FmZV9kZWJ1Z2dpbmdfZW5hYmxlZCgpOworCQkv KiBQYXJzZSBkZWJ1ZyBmbGFncyBmcm9tIGVudmlyb25tZW50ICovCisJCWFjdHgtPmRlYnVnX2Zs YWdzID0gb2F1dGhfZ2V0X2RlYnVnX2ZsYWdzKCk7CiAKIAkJc3RhdGUtPmFzeW5jX2N0eCA9IGFj dHg7CiAKQEAgLTMwNjgsNyArMzA2OCw3IEBAIHBnX2ZlX3J1bl9vYXV0aF9mbG93KFBHY29ubiAq Y29ubikKIAlhY3R4ID0gc3RhdGUtPmFzeW5jX2N0eDsKIAlBc3NlcnQoYWN0eCB8fCByZXN1bHQg PT0gUEdSRVNfUE9MTElOR19GQUlMRUQpOwogCi0JaWYgKGFjdHggJiYgYWN0eC0+ZGVidWdnaW5n KQorCWlmIChhY3R4ICYmIGFjdHgtPmRlYnVnX2ZsYWdzLnBvbGxfY291bnRzKQogCXsKIAkJYWN0 eC0+ZGJnX251bV9jYWxscysrOwogCQlpZiAocmVzdWx0ID09IFBHUkVTX1BPTExJTkdfT0sgfHwg cmVzdWx0ID09IFBHUkVTX1BPTExJTkdfRkFJTEVEKQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFj ZXMvbGlicHEtb2F1dGgvb2F1dGgtdXRpbHMuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRo L29hdXRoLXV0aWxzLmMKaW5kZXggNDVmZGM3NTc5ZjIuLjcxOTIwOGZlYWQzIDEwMDY0NAotLS0g YS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC11dGlscy5jCisrKyBiL3NyYy9pbnRl cmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLXV0aWxzLmMKQEAgLTE0MiwxNyArMTQyLDYgQEAgbGli cHFfZ2V0dGV4dChjb25zdCBjaGFyICptc2dpZCkKIAogI2VuZGlmCQkJCQkJCS8qIEVOQUJMRV9O TFMgKi8KIAotLyoKLSAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgUEdPQVVUSERFQlVHPVVOU0FGRSBm bGFnIGlzIHNldCBpbiB0aGUgZW52aXJvbm1lbnQuCi0gKi8KLWJvb2wKLW9hdXRoX3Vuc2FmZV9k ZWJ1Z2dpbmdfZW5hYmxlZCh2b2lkKQotewotCWNvbnN0IGNoYXIgKmVudiA9IGdldGVudigiUEdP QVVUSERFQlVHIik7Ci0KLQlyZXR1cm4gKGVudiAmJiBzdHJjbXAoZW52LCAiVU5TQUZFIikgPT0g MCk7Ci19Ci0KIC8qCiAgKiBEdXBsaWNhdGUgU09DS19FUlJOTyogZGVmaW5pdGlvbnMgZnJvbSBs aWJwcS1pbnQuaCwgZm9yIHVzZSBieQogICogcHFfYmxvY2svcmVzZXRfc2lncGlwZSgpLgpkaWZm IC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtdXRpbHMuaCBiL3NyYy9p bnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLXV0aWxzLmgKaW5kZXggZjRmZmVmZWYyMDguLjE3 NjJkYjdkM2JlIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC11 dGlscy5oCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLXV0aWxzLmgKQEAg LTc2LDcgKzc2LDcgQEAgdHlwZWRlZiBlbnVtCiB9IFBHVGVybmFyeUJvb2w7CiAKIGV4dGVybiB2 b2lkIGxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqZm10 LC4uLikgcGdfYXR0cmlidXRlX3ByaW50ZigyLCAzKTsKLWV4dGVybiBib29sIG9hdXRoX3Vuc2Fm ZV9kZWJ1Z2dpbmdfZW5hYmxlZCh2b2lkKTsKK2V4dGVybiBvYXV0aF9kZWJ1Z19mbGFncyBvYXV0 aF9nZXRfZGVidWdfZmxhZ3Modm9pZCk7CiBleHRlcm4gaW50CXBxX2Jsb2NrX3NpZ3BpcGUoc2ln c2V0X3QgKm9zaWdzZXQsIGJvb2wgKnNpZ3BpcGVfcGVuZGluZyk7CiBleHRlcm4gdm9pZCBwcV9y ZXNldF9zaWdwaXBlKHNpZ3NldF90ICpvc2lnc2V0LCBib29sIHNpZ3BpcGVfcGVuZGluZywgYm9v bCBnb3RfZXBpcGUpOwogCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmls ZSBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL01ha2VmaWxlCmluZGV4IDlmZTMyMTE0N2ZjLi4xNTdm ODBjZmI1YiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvTWFrZWZpbGUKKysrIGIv c3JjL2ludGVyZmFjZXMvbGlicHEvTWFrZWZpbGUKQEAgLTQ0LDcgKzQ0LDggQEAgT0JKUyA9IFwK IAlsZWdhY3ktcHFzaWduYWwubyBcCiAJbGlicHEtZXZlbnRzLm8gXAogCXBxZXhwYnVmZmVyLm8g XAotCWZlLWF1dGgubworCWZlLWF1dGgubyBcCisJZmUtYXV0aC1vYXV0aC1kZWJ1Zy5vCiAKICMg RmlsZSBzaGFyZWQgYWNyb3NzIGFsbCBTU0wgaW1wbGVtZW50YXRpb25zIHN1cHBvcnRlZC4KIGlm bmVxICgkKHdpdGhfc3NsKSxubykKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2Zl LWF1dGgtb2F1dGgtZGVidWcuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGgt ZGVidWcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTZiYzA1ZTY4 MjAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRo LWRlYnVnLmMKQEAgLTAsMCArMSwxNDIgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGZl LWF1dGgtb2F1dGgtZGVidWcuYworICoJICBQYXJzaW5nIGxvZ2ljIGZvciBQR09BVVRIREVCVUcg ZW52aXJvbm1lbnQgdmFyaWFibGUKKyAqCisgKiBUaGlzIGZpbGUgY29udGFpbnMgcHVyZSBzdHJp bmcgcGFyc2luZyBsb2dpYyB3aXRoIG5vIGRlcGVuZGVuY2llcyBvbgorICogbGlicHEgb3IgbGli cHEtb2F1dGggaW1wbGVtZW50YXRpb24gZGV0YWlscy4gSXQncyBjb21waWxlZCBpbnRvIGJvdGgK KyAqIGxpYnJhcmllcyB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLgorICoKKyAqIFBvcnRpb25z IENvcHlyaWdodCAoYykgMTk5Ni0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBH cm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2 ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBJREVOVElGSUNBVElPTgorICogCXNyYy9pbnRl cmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGgtZGVidWcuYworICoKKyAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4K KyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgImZl LWF1dGgtb2F1dGguaCIKKworLyoKKyAqIFBhcnNlIGEgc2luZ2xlIGRlYnVnIG9wdGlvbiBmcm9t IFBHT0FVVEhERUJVRy4KKyAqIFVwZGF0ZXMgdGhlIGZsYWcgaWYgdGhlIG9wdGlvbiBpcyByZWNv Z25pemVkIGFuZCBhbGxvd2VkLgorICogUHJpbnRzIHdhcm5pbmdzIGZvciB1bnJlY29nbml6ZWQg b3B0aW9ucyBvciB1bnNhZmUgb3B0aW9ucyB3aXRob3V0IHBlcm1pc3Npb24uCisgKi8KK3N0YXRp YyB2b2lkCitwYXJzZV9kZWJ1Z19vcHRpb24oY29uc3QgY2hhciAqb3B0aW9uLCBvYXV0aF9kZWJ1 Z19mbGFncyAqZmxhZ3MsIGJvb2wgYWxsb3dfdW5zYWZlKQoreworCWJvb2wJICAgKmZsYWdfcHRy ID0gTlVMTDsKKwlib29sCQlpc191bnNhZmUgPSBmYWxzZTsKKworCWlmIChzdHJjbXAob3B0aW9u LCAiaHR0cCIpID09IDApCisJeworCQlmbGFnX3B0ciA9ICZmbGFncy0+aHR0cDsKKwkJaXNfdW5z YWZlID0gdHJ1ZTsKKwl9CisJZWxzZSBpZiAoc3RyY21wKG9wdGlvbiwgInRyYWNlIikgPT0gMCkK Kwl7CisJCWZsYWdfcHRyID0gJmZsYWdzLT50cmFjZTsKKwkJaXNfdW5zYWZlID0gdHJ1ZTsKKwl9 CisJZWxzZSBpZiAoc3RyY21wKG9wdGlvbiwgImN1c3RvbS1jYSIpID09IDApCisJeworCQlmbGFn X3B0ciA9ICZmbGFncy0+Y3VzdG9tX2NhOworCQlpc191bnNhZmUgPSB0cnVlOworCX0KKwllbHNl IGlmIChzdHJjbXAob3B0aW9uLCAiZmFzdC1yZXRyeSIpID09IDApCisJeworCQlmbGFnX3B0ciA9 ICZmbGFncy0+ZmFzdF9yZXRyeTsKKwl9CisJZWxzZSBpZiAoc3RyY21wKG9wdGlvbiwgInBvbGwt Y291bnRzIikgPT0gMCkKKwl7CisJCWZsYWdfcHRyID0gJmZsYWdzLT5wb2xsX2NvdW50czsKKwl9 CisJZWxzZSBpZiAoc3RyY21wKG9wdGlvbiwgInByaW50LXBsdWdpbi1lcnJvcnMiKSA9PSAwKQor CXsKKwkJZmxhZ19wdHIgPSAmZmxhZ3MtPnByaW50X3BsdWdpbl9lcnJvcnM7CisJfQorCisJaWYg KCFmbGFnX3B0cikKKwl7CisJCWZwcmludGYoc3RkZXJyLAorCQkJCSJXQVJOSU5HOiBQR09BVVRI REVCVUc6IHVucmVjb2duaXplZCBkZWJ1ZyBvcHRpb24gXCIlc1wiIChpZ25vcmVkKVxuIiwKKwkJ CQlvcHRpb24pOworCQlyZXR1cm47CisJfQorCisJaWYgKGlzX3Vuc2FmZSAmJiAhYWxsb3dfdW5z YWZlKQorCXsKKwkJZnByaW50ZihzdGRlcnIsCisJCQkJIldBUk5JTkc6IFBHT0FVVEhERUJVRzog dW5zYWZlIG9wdGlvbiBcIiVzXCIgcmVxdWlyZXMgVU5TQUZFOiBwcmVmaXggKGlnbm9yZWQpXG4i CisJCQkJIlVzZTogUEdPQVVUSERFQlVHPVVOU0FGRTolc1xuIiwKKwkJCQlvcHRpb24sIG9wdGlv bik7CisJCXJldHVybjsKKwl9CisKKwkqZmxhZ19wdHIgPSB0cnVlOworfQorCisvKgorICogUGFy c2VzIHRoZSBQR09BVVRIREVCVUcgZW52aXJvbm1lbnQgdmFyaWFibGUgYW5kIHJldHVybnMgZGVi dWcgZmxhZ3MuCisgKgorICogU3VwcG9ydGVkIGZvcm1hdHM6CisgKiAgIFBHT0FVVEhERUJVRz1V TlNBRkUgICAgICAgICAgICAgIC0gbGVnYWN5IGZvcm1hdCwgZW5hYmxlcyBhbGwgZmVhdHVyZXMK KyAqICAgUEdPQVVUSERFQlVHPW9wdGlvbjEsb3B0aW9uMiAgICAgLSBlbmFibGUgc2FmZSBmZWF0 dXJlcyBvbmx5CisgKiAgIFBHT0FVVEhERUJVRz1VTlNBRkU6b3B0MSxvcHQyICAgIC0gZW5hYmxl IHVuc2FmZSBhbmQvb3Igc2FmZSBmZWF0dXJlcworICoKKyAqIFByaW50cyBhIHdhcm5pbmcgYW5k IHNraXBzIHRoZSBpbnZhbGlkIG9wdGlvbiBpZjoKKyAqIC0gQW4gdW5yZWNvZ25pemVkIG9wdGlv biBpcyBzcGVjaWZpZWQKKyAqIC0gQW4gdW5zYWZlIG9wdGlvbiBpcyBzcGVjaWZpZWQgd2l0aG91 dCB0aGUgVU5TQUZFOiBwcmVmaXgKKyAqLworb2F1dGhfZGVidWdfZmxhZ3MKK29hdXRoX2dldF9k ZWJ1Z19mbGFncyh2b2lkKQoreworCW9hdXRoX2RlYnVnX2ZsYWdzIGZsYWdzID0gezB9OworCWNv bnN0IGNoYXIgKmVudiA9IGdldGVudigiUEdPQVVUSERFQlVHIik7CisJY2hhcgkgICAqb3B0aW9u c19zdHI7CisJY2hhcgkgICAqb3B0aW9uOworCWNoYXIJICAgKnNhdmVwdHIgPSBOVUxMOworCWJv b2wJCXVuc2FmZV9wcmVmaXggPSBmYWxzZTsKKworCWlmICghZW52IHx8IGVudlswXSA9PSAnXDAn KQorCQlyZXR1cm4gZmxhZ3M7CisKKwlpZiAoc3RyY21wKGVudiwgIlVOU0FGRSIpID09IDApCisJ eworCQlmbGFncy5odHRwID0gdHJ1ZTsKKwkJZmxhZ3MudHJhY2UgPSB0cnVlOworCQlmbGFncy5j dXN0b21fY2EgPSB0cnVlOworCQlmbGFncy5mYXN0X3JldHJ5ID0gdHJ1ZTsKKwkJZmxhZ3MucG9s bF9jb3VudHMgPSB0cnVlOworCQlmbGFncy5wcmludF9wbHVnaW5fZXJyb3JzID0gdHJ1ZTsKKwkJ cmV0dXJuIGZsYWdzOworCX0KKworCWlmIChzdHJuY21wKGVudiwgIlVOU0FGRToiLCA3KSA9PSAw KQorCXsKKwkJdW5zYWZlX3ByZWZpeCA9IHRydWU7CisJCWVudiArPSA3OworCX0KKworCW9wdGlv bnNfc3RyID0gc3RyZHVwKGVudik7CisJaWYgKCFvcHRpb25zX3N0cikKKwkJcmV0dXJuIGZsYWdz OworCisJb3B0aW9uID0gc3RydG9rX3Iob3B0aW9uc19zdHIsICIsIiwgJnNhdmVwdHIpOworCXdo aWxlIChvcHRpb24gIT0gTlVMTCkKKwl7CisJCXBhcnNlX2RlYnVnX29wdGlvbihvcHRpb24sICZm bGFncywgdW5zYWZlX3ByZWZpeCk7CisJCW9wdGlvbiA9IHN0cnRva19yKE5VTEwsICIsIiwgJnNh dmVwdHIpOworCX0KKworCWZyZWUob3B0aW9uc19zdHIpOworCisJcmV0dXJuIGZsYWdzOworfQpk aWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5jIGIvc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5jCmluZGV4IGQxNDZjNWY1NjdjLi45Njg3OGM1 OTM2OSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5jCisr KyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYwpAQCAtMzc2LDcgKzM3Niw3 IEBAIGlzc3Vlcl9mcm9tX3dlbGxfa25vd25fdXJpKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAq d2t1cmkpCiAJCWF1dGhvcml0eV9zdGFydCA9IHdrdXJpICsgc3RybGVuKEhUVFBTX1NDSEVNRSk7 CiAKIAlpZiAoIWF1dGhvcml0eV9zdGFydAotCQkmJiBvYXV0aF91bnNhZmVfZGVidWdnaW5nX2Vu YWJsZWQoKQorCQkmJiBvYXV0aF9nZXRfZGVidWdfZmxhZ3MoKS5odHRwCiAJCSYmIHBnX3N0cm5j YXNlY21wKHdrdXJpLCBIVFRQX1NDSEVNRSwgc3RybGVuKEhUVFBfU0NIRU1FKSkgPT0gMCkKIAl7 CiAJCS8qIEFsbG93IGh0dHA6Ly8gZm9yIHRlc3Rpbmcgb25seS4gKi8KQEAgLTg3MCw3ICs4NzAs NyBAQCB1c2VfYnVpbHRpbl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRl KQogCQkgKgogCQkgKiBOb3RlIHRoYXQgUE9TSVggZGxlcnJvcigpIGlzbid0IGd1YXJhbnRlZWQg dG8gYmUgdGhyZWFkc2FmZS4KIAkJICovCi0JCWlmIChvYXV0aF91bnNhZmVfZGVidWdnaW5nX2Vu YWJsZWQoKSkKKwkJaWYgKG9hdXRoX2dldF9kZWJ1Z19mbGFncygpLnByaW50X3BsdWdpbl9lcnJv cnMpCiAJCQlmcHJpbnRmKHN0ZGVyciwgImZhaWxlZCBkbG9wZW4gZm9yIGxpYnBxLW9hdXRoOiAl c1xuIiwgZGxlcnJvcigpKTsKIAogCQlyZXR1cm4gZmFsc2U7CkBAIC04ODQsNyArODg0LDcgQEAg dXNlX2J1aWx0aW5fZmxvdyhQR2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpzdGF0ZSkKIAkJ ICogVGhpcyBpcyBtb3JlIG9mIGFuIGVycm9yIGNvbmRpdGlvbiB0aGFuIHRoZSBvbmUgYWJvdmUs IGJ1dCBkdWUgdG8KIAkJICogdGhlIGRsZXJyb3IoKSB0aHJlYWRzYWZldHkgaXNzdWUsIGxvY2sg aXQgYmVoaW5kIFBHT0FVVEhERUJVRyB0b28uCiAJCSAqLwotCQlpZiAob2F1dGhfdW5zYWZlX2Rl YnVnZ2luZ19lbmFibGVkKCkpCisJCWlmIChvYXV0aF9nZXRfZGVidWdfZmxhZ3MoKS5wcmludF9w bHVnaW5fZXJyb3JzKQogCQkJZnByaW50ZihzdGRlcnIsICJmYWlsZWQgZGxzeW0gZm9yIGxpYnBx LW9hdXRoOiAlc1xuIiwgZGxlcnJvcigpKTsKIAogCQlkbGNsb3NlKHN0YXRlLT5idWlsdGluX2Zs b3cpOwpAQCAtMTM4NSwxMyArMTM4NSwzIEBAIHBxQ2xlYXJPQXV0aFRva2VuKFBHY29ubiAqY29u bikKIAljb25uLT5vYXV0aF90b2tlbiA9IE5VTEw7CiB9CiAKLS8qCi0gKiBSZXR1cm5zIHRydWUg aWYgdGhlIFBHT0FVVEhERUJVRz1VTlNBRkUgZmxhZyBpcyBzZXQgaW4gdGhlIGVudmlyb25tZW50 LgotICovCi1ib29sCi1vYXV0aF91bnNhZmVfZGVidWdnaW5nX2VuYWJsZWQodm9pZCkKLXsKLQlj b25zdCBjaGFyICplbnYgPSBnZXRlbnYoIlBHT0FVVEhERUJVRyIpOwotCi0JcmV0dXJuIChlbnYg JiYgc3RyY21wKGVudiwgIlVOU0FGRSIpID09IDApOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVy ZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0 aC1vYXV0aC5oCmluZGV4IDBkNTllOTE2MDViLi4xZjBjYmVhN2VlYiAxMDA2NDQKLS0tIGEvc3Jj L2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5oCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLWF1dGgtb2F1dGguaApAQCAtNDIsOCArNDIsMjUgQEAgdHlwZWRlZiBzdHJ1Y3QKIAl2 b2lkCSAgICpidWlsdGluX2Zsb3c7CiB9IGZlX29hdXRoX3N0YXRlOwogCisvKgorICogRGVidWcg ZmxhZ3MgZm9yIFBHT0FVVEhERUJVRyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKyAqIEVhY2ggZmxh ZyBjb250cm9scyBhIHNwZWNpZmljIGRlYnVnIGZlYXR1cmUuCisgKi8KK3R5cGVkZWYgc3RydWN0 IG9hdXRoX2RlYnVnX2ZsYWdzCit7CisJLyogcG90ZW50aWFsbHkgVU5TQUZFIGZlYXR1cmVzICov CisJYm9vbAkJaHR0cDsKKwlib29sCQl0cmFjZTsKKwlib29sCQljdXN0b21fY2E7CisKKwkvKiBT QUZFIGZlYXR1cmVzICovCisJYm9vbAkJZmFzdF9yZXRyeTsKKwlib29sCQlwb2xsX2NvdW50czsK Kwlib29sCQlwcmludF9wbHVnaW5fZXJyb3JzOworfSBvYXV0aF9kZWJ1Z19mbGFnczsKKwogZXh0 ZXJuIHZvaWQgcHFDbGVhck9BdXRoVG9rZW4oUEdjb25uICpjb25uKTsKLWV4dGVybiBib29sIG9h dXRoX3Vuc2FmZV9kZWJ1Z2dpbmdfZW5hYmxlZCh2b2lkKTsKK2V4dGVybiBvYXV0aF9kZWJ1Z19m bGFncyBvYXV0aF9nZXRfZGVidWdfZmxhZ3Modm9pZCk7CiBleHRlcm4gYm9vbCB1c2VfYnVpbHRp bl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKTsKIAogLyogTWVjaGFu aXNtcyBpbiBmZS1hdXRoLW9hdXRoLmMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xp YnBxL21lc29uLmJ1aWxkIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbWVzb24uYnVpbGQKaW5kZXgg YjI1OWM5OThmYTIuLjE5NTA4YjM5YTY3IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJw cS9tZXNvbi5idWlsZAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9tZXNvbi5idWlsZApAQCAt Miw2ICsyLDcgQEAKIAogbGlicHFfc291cmNlcyA9IGZpbGVzKAogICAnZmUtYXV0aC1vYXV0aC5j JywKKyAgJ2ZlLWF1dGgtb2F1dGgtZGVidWcuYycsCiAgICdmZS1hdXRoLXNjcmFtLmMnLAogICAn ZmUtYXV0aC5jJywKICAgJ2ZlLWNhbmNlbC5jJywKLS0gCjIuNDMuMAoK --0000000000001beb600645bf3d60--