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 1vSchO-0022cw-2M for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Dec 2025 14:58:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vSchN-00HSQS-1B for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Dec 2025 14:58:49 +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 1vSchM-00HSQJ-2a for pgsql-hackers@lists.postgresql.org; Mon, 08 Dec 2025 14:58:49 +0000 Received: from mail-ua1-x933.google.com ([2607:f8b0:4864:20::933]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vSchI-003reA-22 for pgsql-hackers@lists.postgresql.org; Mon, 08 Dec 2025 14:58:48 +0000 Received: by mail-ua1-x933.google.com with SMTP id a1e0cc1a2514c-93720298f86so2625166241.2 for ; Mon, 08 Dec 2025 06:58:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765205921; x=1765810721; darn=lists.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=E3AYunUJZYya3DOfFmVtdrwgdtWpyUGy21tOmKy0naY=; b=VNt+SdYEJJr0UPP1Xf3yqiQS1LeYiohWZ3EiiCpKrlbJDmFCql7XZlS0xEkogOel8H TljlzCdNyFduKKWWSG242PmqSNY1pSWlo9s0LulSOYBofJzd8461wLsitokr4TgDp6V1 CU8kbycWvUZ3H0JOZu+44Od2F0Vr8q6LR45l6Af77929RcP9wFAFGvoyTXGYzu92e9se GUhW/hRh+b6pUg71uQEBVDU4vfT3H4riQXceysOTzc9Ikr0UB8NZYdOwJVB4S7QxvUFj vih33Ashnf7VPfWy1uPQLb/nFpUR4reljyHgvqaXffPRxjKbSXPnmC0+8RtEA8nT3GgQ V51g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765205921; x=1765810721; 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=E3AYunUJZYya3DOfFmVtdrwgdtWpyUGy21tOmKy0naY=; b=aQpkS+Nz0HgiFdhrSD5et14Qn9x7lqPNVVS6iLuXIKwzAf5bqITnhv+n7EeAG9rOyG Ie9M5R2z0qpgJDSVmp4KNNqvw9O5OK7AWjsnmx+yNpkuXGK7NvAtrVwZkp1+iBwxrR4n 2ozeGHDw5cEhjz/L+8E9YhgwOdUA534HjZEOAAWzK57U3v3i/xncBfRDLPpi3f6Nox0s NcWAHkGQVIWzZwfUKe9caHi226K1rr3bRJhVzadvZ9hftTQK8Ci4nJhi5CWpmF+ETWpz UwV/m5mA+Wou8sC+MrMVbN9zGryoG2y2TTyXAte7/FyEbLMSznQkiCuBeFDN9J2AZd3i vj3A== X-Forwarded-Encrypted: i=1; AJvYcCUMJ4TWrYz1gnJZ4+K9gj83TtaSFGNO/mOTxJP2fOjKy/aKkzrJ5libMfv+yiJsijRUTNORu+E8KCiKv6sW@lists.postgresql.org X-Gm-Message-State: AOJu0YxjJJ1K6lxIm5ffVYX0mZPBJT14LhlqsPGbx8H57ozzuLWEL9nr B2G5sUNruqseGKbE0tR5Kffxcqcz9E8N33xxk9MaqZEiwNGAvHKrRNXjSn2I81Pi3mpfvjChSrW 9QIxmWiMgVCjCc1h4twuAeaTdNUs5fOE= X-Gm-Gg: ASbGnct3rZBAAxLPOsYX935kkWGxK2WF6T/kTGCZfwP2jzZFxqMAVwHhBcMscyqjae4 +zUJ8wIt26IVP9b3QbOVGawGvEU9hCtXzW/7x+WDzDBmHLZhZBwSBW9Dn3GfHAl+xLHWEe6Y5TB 3x3lhty87ehUmi/3PKcMiBH5TL2zSETJ6aZbR1AKAleRHztzULIZGw4d9Qq63cDLiKH23utS7NQ 7U9lrQf8+9Ns46oqkSxzaiD93h1OnpMpHbCUfFV/EXa86Ua4PRRQcj8HRZ2SQb6qFoD5fbQ3/CF KoAKlm+yobxrSAuWkV77zCOQ7Xa/amUX2/vQKsrgknzjKq9xzRBmR7EH5NTZIxy3xdbU01XQorV hR5sVcNCqZsFjHWmsjUX3mYDAtxHzsv0xLgemGBE8vODvMFNh3TVcn9s0a5U81lVubfq2/8mMxt vU+oh4bDs= X-Google-Smtp-Source: AGHT+IHJbm2csfmpWpF14iDwFfeUyl2IBd2Fu2X2qwloSDam5DpTEVTiAa8llMrYUuQ5pCerLWIU5ESwuXXsDf7ptAw= X-Received: by 2002:a05:6102:3749:b0:5db:ceaa:1dbf with SMTP id ada2fe7eead31-5e52cc62c1fmr2302718137.41.1765205921459; Mon, 08 Dec 2025 06:58:41 -0800 (PST) MIME-Version: 1.0 References: <04afcd1f-ed7d-4c0a-add1-50e3719ccbf9@postgresfriends.org> <762ae707-7fdc-43d8-a77a-3a10d12ce21d@postgresfriends.org> In-Reply-To: From: jian he Date: Mon, 8 Dec 2025 22:58:00 +0800 X-Gm-Features: AQt7F2oTJLB28s1b6B0_NxMohitByD1fqZkXjB3YI2CHYFb0fZ1B_zPHfcsyVEw Message-ID: Subject: Re: CAST(... ON DEFAULT) - WIP build on top of Error-Safe User Functions To: Amul Sul Cc: Corey Huinker , Vik Fearing , Isaac Morland , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000e7a9ea06457207c0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e7a9ea06457207c0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Dec 4, 2025 at 8:47=E2=80=AFPM Amul Sul wrote: > > Regarding v13-0019 and v13-0020 patches, I have a bunch of comments > for the code, but I'd like to understand the implemented design first. > I have some basic questions regarding the commit message and code > comment, as follows: > > " > We cannot simply prohibit user-defined functions in pg_cast for safe cast > evaluation because CREATE CAST can also utilize built-in functions. So, t= o > completely disallow custom casts created via CREATE CAST used in safe cas= t > evaluation, a new field in pg_cast would unfortunately be necessary. > " > > I might not have understood the implementation completely -- can't we > use fmgr_last_builtin_oid to detect built-in functions? > -- hi, Amul. I have removed the pg_cast.casterrorsafe field. But in the future, to make the below (Examples) CASTs associated with built-in function error safe, I think we need pg_cast.casterrorsafe. Otherwise, how can we know if the pg_cast.castfunc (built-in function) is error safe or not. CREATE CAST (interval AS uuid ) WITH FUNCTION uuidv7(interval); CREATE CAST (jsonb AS text) WITH FUNCTION jsonb_array_element_text(jsonb, i= nt); CREATE CAST (json AS text) WITH FUNCTION json_array_element_text(json, int)= ; I=E2=80=99ve added a dedicated function: CoercionErrorSafeCheck, which checks whether the cast can be evaluated safely. If not, we throw an error. SELECT CAST('A' AS DATE DEFAULT NULL ON CONVERSION ERROR) Here, 'A' is an Unknown Const. As mentioned earlier, Unknown Const Node mus= t be coerced error safe, otherwise, it will raise an error instead of returning = NULL. The coercion of Unknown Const happens inside coerce_to_target_type, which m= eans part of that function must run in an error safe. coerce_to_target_type is = used widely, adding another parameter to it seems no good, so I introduced coerce_to_target_type_extended, coerce_type_extend. CoerceUnknownConstSafe is being removed. stringTypeDatumSafe, OidInputFunctionCallSafe functions are needed for coer= cing Unknown Const to the target type. Refactoring existing function seems not ideal, so i invented these two functions. -- jian https://www.enterprisedb.com --000000000000e7a9ea06457207c0 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0016-error-safe-for-casting-timestamp-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v14-0016-error-safe-for-casting-timestamp-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mix9wgao3 RnJvbSA3MzJiNmQ0OGZlMDA1OTJhODE4NDJjMjcxNzEyYWZmOTMzMTc5ODkxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMiBEZWMgMjAyNSAxMjoxNDozNiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjE0 IDE2LzE5XSBlcnJvciBzYWZlIGZvciBjYXN0aW5nIHRpbWVzdGFtcCB0byBvdGhlciB0eXBlcyBw ZXIKIHBnX2Nhc3QKCnNlbGVjdCBjYXN0c291cmNlOjpyZWd0eXBlLCBjYXN0dGFyZ2V0OjpyZWd0 eXBlLCBjYXN0ZnVuYywKICAgICAgIGNhc3Rjb250ZXh0LGNhc3RtZXRob2QsIHBwLnByb3NyYywg cHAucHJvbmFtZQpmcm9tIHBnX2Nhc3QgcGMgam9pbiBwZ19wcm9jIHBwIG9uCnBwLm9pZCA9IHBj LmNhc3RmdW5jCmFuZCBwYy5jYXN0ZnVuYyA+IDAgYW5kIChjYXN0c291cmNlOjpyZWd0eXBlID0n dGltZXN0YW1wJzo6cmVndHlwZSkKb3JkZXIgYnkgY2FzdHNvdXJjZTo6cmVndHlwZTsKCiAgICAg ICAgIGNhc3Rzb3VyY2UgICAgICAgICAgfCAgICAgICAgIGNhc3R0YXJnZXQgICAgICAgICAgfCBj YXN0ZnVuYyB8IGNhc3Rjb250ZXh0IHwgY2FzdG1ldGhvZCB8ICAgICAgICBwcm9zcmMgICAgICAg ICB8ICAgcHJvbmFtZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KIHRpbWVzdGFtcCB3aXRob3V0IHRp bWUgem9uZSB8IGRhdGUgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAyMDI5IHwgYSAgICAg ICAgICAgfCBmICAgICAgICAgIHwgdGltZXN0YW1wX2RhdGUgICAgICAgIHwgZGF0ZQogdGltZXN0 YW1wIHdpdGhvdXQgdGltZSB6b25lIHwgdGltZSB3aXRob3V0IHRpbWUgem9uZSAgICAgIHwgICAg IDEzMTYgfCBhICAgICAgICAgICB8IGYgICAgICAgICAgfCB0aW1lc3RhbXBfdGltZSAgICAgICAg fCB0aW1lCiB0aW1lc3RhbXAgd2l0aG91dCB0aW1lIHpvbmUgfCB0aW1lc3RhbXAgd2l0aCB0aW1l IHpvbmUgICAgfCAgICAgMjAyOCB8IGkgICAgICAgICAgIHwgZiAgICAgICAgICB8IHRpbWVzdGFt cF90aW1lc3RhbXB0eiB8IHRpbWVzdGFtcHR6CiB0aW1lc3RhbXAgd2l0aG91dCB0aW1lIHpvbmUg fCB0aW1lc3RhbXAgd2l0aG91dCB0aW1lIHpvbmUgfCAgICAgMTk2MSB8IGkgICAgICAgICAgIHwg ZiAgICAgICAgICB8IHRpbWVzdGFtcF9zY2FsZSAgICAgICB8IHRpbWVzdGFtcAooNCByb3dzKQoK ZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQURrTE09ZnYxSmZZNFVmYS1qY3d3TmJq UWl4TlZpc2tROGpadTNUel9wNjU2aV80aFFAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvZGF0ZS5jICAgICAgfCAgNyArKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvdGltZXN0YW1wLmMgfCAxMCArKysrKysrKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2Vy dGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2RhdGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRlLmMKaW5kZXggYmJjODY0YTgw Y2QuLjkxY2M4Y2M4NWYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZGF0ZS5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRlLmMKQEAgLTEzMzAsNyArMTMzMCwxMCBA QCB0aW1lc3RhbXBfZGF0ZShQR19GVU5DVElPTl9BUkdTKQogCVRpbWVzdGFtcAl0aW1lc3RhbXAg PSBQR19HRVRBUkdfVElNRVNUQU1QKDApOwogCURhdGVBRFQJCXJlc3VsdDsKIAotCXJlc3VsdCA9 IHRpbWVzdGFtcDJkYXRlX3NhZmUodGltZXN0YW1wLCBOVUxMKTsKKwlyZXN1bHQgPSB0aW1lc3Rh bXAyZGF0ZV9zYWZlKHRpbWVzdGFtcCwgZmNpbmZvLT5jb250ZXh0KTsKKwlpZiAoU09GVF9FUlJP Ul9PQ0NVUlJFRChmY2luZm8tPmNvbnRleHQpKQorCQlQR19SRVRVUk5fTlVMTCgpOworCiAJUEdf UkVUVVJOX0RBVEVBRFQocmVzdWx0KTsKIH0KIApAQCAtMjAwOCw3ICsyMDExLDcgQEAgdGltZXN0 YW1wX3RpbWUoUEdfRlVOQ1RJT05fQVJHUykKIAkJUEdfUkVUVVJOX05VTEwoKTsKIAogCWlmICh0 aW1lc3RhbXAydG0odGltZXN0YW1wLCBOVUxMLCB0bSwgJmZzZWMsIE5VTEwsIE5VTEwpICE9IDAp Ci0JCWVyZXBvcnQoRVJST1IsCisJCWVyZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAs CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRFVElNRV9WQUxVRV9PVVRfT0ZfUkFOR0UpLAogCQkJ CSBlcnJtc2coInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UiKSkpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdGlt ZXN0YW1wLmMKaW5kZXggYzE0NGNhZjI0NTguLmU4NGNmNGIyNWY4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3RpbWVzdGFtcC5jCkBAIC0zNTIsNyArMzUyLDggQEAgdGltZXN0YW1wX3NjYWxlKFBHX0ZVTkNU SU9OX0FSR1MpCiAKIAlyZXN1bHQgPSB0aW1lc3RhbXA7CiAKLQlBZGp1c3RUaW1lc3RhbXBGb3JU eXBtb2QoJnJlc3VsdCwgdHlwbW9kLCBOVUxMKTsKKwlpZiAoIUFkanVzdFRpbWVzdGFtcEZvclR5 cG1vZCgmcmVzdWx0LCB0eXBtb2QsIGZjaW5mby0+Y29udGV4dCkpCisJCVBHX1JFVFVSTl9OVUxM KCk7CiAKIAlQR19SRVRVUk5fVElNRVNUQU1QKHJlc3VsdCk7CiB9CkBAIC02NDMyLDggKzY0MzMs MTMgQEAgRGF0dW0KIHRpbWVzdGFtcF90aW1lc3RhbXB0eihQR19GVU5DVElPTl9BUkdTKQogewog CVRpbWVzdGFtcAl0aW1lc3RhbXAgPSBQR19HRVRBUkdfVElNRVNUQU1QKDApOworCVRpbWVzdGFt cFR6IHJlc3VsdDsKIAotCVBHX1JFVFVSTl9USU1FU1RBTVBUWih0aW1lc3RhbXAydGltZXN0YW1w dHoodGltZXN0YW1wKSk7CisJcmVzdWx0ID0gdGltZXN0YW1wMnRpbWVzdGFtcHR6X3NhZmUodGlt ZXN0YW1wLCBmY2luZm8tPmNvbnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGZjaW5m by0+Y29udGV4dCkpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlQR19SRVRVUk5fVElNRVNUQU1Q VFoocmVzdWx0KTsKIH0KIAogLyoKLS0gCjIuMzQuMQoK --000000000000e7a9ea06457207c0 Content-Type: text/x-patch; charset="UTF-8"; name="v14-0019-CAST-expr-AS-newtype-DEFAULT-ON-ERROR.patch" Content-Disposition: attachment; filename="v14-0019-CAST-expr-AS-newtype-DEFAULT-ON-ERROR.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mix9wgab0 RnJvbSA3YmI2NThlZWFiZTgxYjBhYmE0YTBjMjlkZTFjMzg2YmJiZWM4ZDZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgOCBEZWMgMjAyNSAyMjo1MzoxNSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjE0 IDE5LzE5XSBDQVNUKGV4cHIgQVMgbmV3dHlwZSBERUZBVUxUIE9OIEVSUk9SKQoKTm93IHRoYXQg dGhlIHR5cGUgY29lcmNpb24gbm9kZSBpcyBlcnJvci1zYWZlLCB3ZSBhbHNvIG5lZWQgdG8gZW5z dXJlIHRoYXQgd2hlbgphIGNvZXJjaW9uIGZhaWxzLCBpdCBmYWxscyBiYWNrIHRvIGV2YWx1YXRp bmcgdGhlIGRlZmF1bHQgbm9kZS4KZHJhZnQgZG9jIGFsc28gYWRkZWQuCgpkZW1vOgpTRUxFQ1Qg Q0FTVCgnMScgQVMgZGF0ZSAgREVGQVVMVCAnMjAxMS0wMS0wMScgT04gRVJST1IpLAogICAgICAg Q0FTVCgnezIzNCxkZWYsNTY3fSc6OnRleHRbXSBBUyBpbnRlZ2VyW10gREVGQVVMVCAney0xMDEx fScgT04gRVJST1IpOwogICAgZGF0ZSAgICB8ICBpbnQ0Ci0tLS0tLS0tLS0tLSstLS0tLS0tLS0K IDIwMTEtMDEtMDEgfCB7LTEwMTF9CgpbMF06IGh0dHBzOi8vZ2l0LnBvc3RncmVzcWwub3JnL2Nn aXQvcG9zdGdyZXNxbC5naXQvY29tbWl0Lz9pZD1hYWFmOTQ0OWVjNmJlNjJjYjBkMzBlZDM1ODhk YzM4NGY1NjI3NGIKCmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FEa0xNPWZ2MUpm WTRVZmEtamN3d05ialFpeE5WaXNrUThqWnUzVHpfcDY1NmlfNGhRQG1haWwuZ21haWwuY29tCi0t LQogY29udHJpYi9jaXRleHQvZXhwZWN0ZWQvY2l0ZXh0XzEub3V0ICAgICAgICAgIHwgICA1ICsK IGNvbnRyaWIvY2l0ZXh0L3NxbC9jaXRleHQuc3FsICAgICAgICAgICAgICAgICB8ICAgMiArCiAu Li4vcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3NlbGVjdC5vdXQgICAgfCAgMjMgKy0KIGNv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC9zZWxlY3Quc3FsICAgICB8ICAgNSArCiBkb2Mv c3JjL3NnbWwvc3ludGF4LnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgMzAgKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyAgICAgICAgICAgICAgIHwgMTAyICsrLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyAgICAgICAgIHwgIDI5ICsKIHNyYy9iYWNr ZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jICAgICAgICAgICB8ICAyNiArCiBzcmMvYmFja2Vu ZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAgICAgICAgfCAgNjEgKysKIHNyYy9iYWNrZW5k L29wdGltaXplci91dGlsL2NsYXVzZXMuYyAgICAgICAgICB8ICA1MSArLQogc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgIDIyICsKIHNyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9hZ2cuYyAgICAgICAgICAgICAgICB8ICAgOSArCiBzcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfY29lcmNlLmMgICAgICAgICAgICAgfCAgNzggKy0KIHNyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9leHByLmMgICAgICAgICAgICAgICB8IDQxMiArKysrKysrKy0KIHNyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9mdW5jLmMgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfdGFyZ2V0LmMgICAgICAgICAgICAgfCAgMTQgKwogc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3R5cGUuYyAgICAgICAgICAgICAgIHwgIDE0ICsKIHNyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2FycmF5ZnVuY3MuYyAgICAgICAgICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8ICAyMSArCiBzcmMvYmFja2VuZC91dGlscy9mbWdy L2ZtZ3IuYyAgICAgICAgICAgICAgICAgfCAgMTMgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y0V4cHIuaCAgICAgICAgICAgICAgIHwgICA3ICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1 dG9yLmggICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9mbWdyLmggICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgg ICAgICAgICAgICAgICAgIHwgIDIxICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAg ICAgICAgICAgICAgICB8ICAxMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCAgICAg ICAgICAgICAgICAgfCAgMzYgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oICAg ICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY29lcmNlLmggICAg ICAgICAgICAgfCAgMTUgKwogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCAgICAgICAg ICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV90eXBlLmggICAgICAgICAg ICAgICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nhc3Qub3V0ICAgICAgICAg ICAgfCA4MTAgKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Ny ZWF0ZV9jYXN0Lm91dCAgICAgfCAgIDUgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lcXVp dmNsYXNzLm91dCAgICAgIHwgICA3ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1 bGUgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY2FzdC5zcWwgICAg ICAgICAgICAgICAgIHwgMzUwICsrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVf Y2FzdC5zcWwgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXF1aXZjbGFz cy5zcWwgICAgICAgICAgIHwgICAzICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 ICAgICAgICAgICAgICB8ICAgMyArCiAzOSBmaWxlcyBjaGFuZ2VkLCAyMTY2IGluc2VydGlvbnMo KyksIDQ1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY2FzdC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9jYXN0LnNxbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dF8x Lm91dCBiL2NvbnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dF8xLm91dAppbmRleCBjNWU1ZjE4 MGYyYi4uNjQ3ZWVhMTkxNDIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2Np dGV4dF8xLm91dAorKysgYi9jb250cmliL2NpdGV4dC9leHBlY3RlZC9jaXRleHRfMS5vdXQKQEAg LTEwLDYgKzEwLDExIEBAIFdIRVJFIG9wYy5vaWQgPj0gMTYzODQgQU5EIE5PVCBhbXZhbGlkYXRl KG9wYy5vaWQpOwogLS0tLS0tLS0rLS0tLS0tLS0tCiAoMCByb3dzKQogCitTRUxFQ1QgQ0FTVCgn YWJjJzo6YnBjaGFyIEFTIGNpdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7 IC0tZXJyb3IKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBjaGFyYWN0ZXIgdG8gY2l0ZXh0IHdo ZW4gREVGQVVMVCBleHByZXNzaW9uIGlzIHNwZWNpZmllZCBpbiBDQVNUIC4uLiBPTiBDT05WRVJT SU9OIEVSUk9SCitMSU5FIDE6IFNFTEVDVCBDQVNUKCdhYmMnOjpicGNoYXIgQVMgY2l0ZXh0IERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSS4uLgorICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAg U2FmZSB0eXBlIGNhc3QgZm9yIHVzZXItZGVmaW5lZCB0eXBlcyBhcmUgbm90IHlldCBzdXBwb3J0 ZWQKIC0tIFRlc3QgdGhlIG9wZXJhdG9ycyBhbmQgaW5kZXhpbmcgZnVuY3Rpb25zCiAtLSBUZXN0 ID0gYW5kIDw+LgogU0VMRUNUICdhJzo6Y2l0ZXh0ID0gJ2EnOjpjaXRleHQgQVMgdDsKZGlmZiAt LWdpdCBhL2NvbnRyaWIvY2l0ZXh0L3NxbC9jaXRleHQuc3FsIGIvY29udHJpYi9jaXRleHQvc3Fs L2NpdGV4dC5zcWwKaW5kZXggYWExY2Y5YWJkNWMuLjk5Nzk0NDk3ZDQ3IDEwMDY0NAotLS0gYS9j b250cmliL2NpdGV4dC9zcWwvY2l0ZXh0LnNxbAorKysgYi9jb250cmliL2NpdGV4dC9zcWwvY2l0 ZXh0LnNxbApAQCAtOSw2ICs5LDggQEAgU0VMRUNUIGFtbmFtZSwgb3BjbmFtZQogRlJPTSBwZ19v cGNsYXNzIG9wYyBMRUZUIEpPSU4gcGdfYW0gYW0gT04gYW0ub2lkID0gb3BjbWV0aG9kCiBXSEVS RSBvcGMub2lkID49IDE2Mzg0IEFORCBOT1QgYW12YWxpZGF0ZShvcGMub2lkKTsKIAorU0VMRUNU IENBU1QoJ2FiYyc6OmJwY2hhciBBUyBjaXRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOyAtLWVycm9yCisKIC0tIFRlc3QgdGhlIG9wZXJhdG9ycyBhbmQgaW5kZXhpbmcgZnVu Y3Rpb25zCiAKIC0tIFRlc3QgPSBhbmQgPD4uCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRf c3RhdGVtZW50cy9leHBlY3RlZC9zZWxlY3Qub3V0IGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvZXhwZWN0ZWQvc2VsZWN0Lm91dAppbmRleCA3NWM4OTZmMzg4NS4uNmU2Nzk5N2YwYTIgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3NlbGVjdC5vdXQK KysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvc2VsZWN0Lm91dApAQCAt NzMsNiArNzMsMjUgQEAgU0VMRUNUIDEgQVMgImludCIgT0ZGU0VUIDIgRkVUQ0ggRklSU1QgMyBS T1cgT05MWTsKIC0tLS0tCiAoMCByb3dzKQogCistLWVycm9yIHNhZmUgdHlwZSBjYXN0CitTRUxF Q1QgQ0FTVCgnYScgQVMgaW50IERFRkFVTFQgMiBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBpbnQ0 IAorLS0tLS0tCisgICAgMgorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnMTEnIEFTIGludCBERUZB VUxUIDIgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50NCAKKy0tLS0tLQorICAgMTEKKygxIHJv dykKKworU0VMRUNUIENBU1QoJzEyJyBBUyBudW1lcmljIERFRkFVTFQgMiBPTiBDT05WRVJTSU9O IEVSUk9SKTsKKyBudW1lcmljIAorLS0tLS0tLS0tCisgICAgICAxMgorKDEgcm93KQorCiAtLSBE SVNUSU5DVCBhbmQgT1JERVIgQlkgcGF0dGVybnMKIC0tIFRyeSBzb21lIHF1ZXJ5IHBlcm11dGF0 aW9ucyB3aGljaCBvbmNlIHByb2R1Y2VkIGlkZW50aWNhbCBxdWVyeSBJRHMKIFNFTEVDVCBESVNU SU5DVCAxIEFTICJpbnQiOwpAQCAtMjIyLDYgKzI0MSw4IEBAIFNFTEVDVCBjYWxscywgcm93cywg cXVlcnkgRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7 CiAgICAgIDIgfCAgICAyIHwgU0VMRUNUICQxIEFTICJpbnQiIE9SREVSIEJZIDEKICAgICAgMSB8 ICAgIDIgfCBTRUxFQ1QgJDEgQVMgaSBVTklPTiBTRUxFQ1QgJDIgT1JERVIgQlkgaQogICAgICAx IHwgICAgMSB8IFNFTEVDVCAkMSB8fCAkMgorICAgICAyIHwgICAgMiB8IFNFTEVDVCBDQVNUKCQx IEFTIGludCBERUZBVUxUICQyIE9OIENPTlZFUlNJT04gRVJST1IpCisgICAgIDEgfCAgICAxIHwg U0VMRUNUIENBU1QoJDEgQVMgbnVtZXJpYyBERUZBVUxUICQyIE9OIENPTlZFUlNJT04gRVJST1Ip CiAgICAgIDIgfCAgICAyIHwgU0VMRUNUIERJU1RJTkNUICQxIEFTICJpbnQiCiAgICAgIDAgfCAg ICAwIHwgU0VMRUNUIGNhbGxzLCByb3dzLCBxdWVyeSBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBP UkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIgogICAgICAxIHwgICAgMSB8IFNFTEVDVCBwZ19zdGF0 X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0CkBAIC0yMzAsNyArMjUxLDcgQEAg U0VMRUNUIGNhbGxzLCByb3dzLCBxdWVyeSBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBC WSBxdWVyeSBDT0xMQVRFICJDIjsKICAgICAgICB8ICAgICAgfCApICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KwogICAgICAgIHwgICAgICB8ICAgU0VMRUNUIGYgRlJPTSB0IE9SREVSIEJZIGYKICAgICAgMSB8 ICAgIDEgfCBzZWxlY3QgJDE6Ompzb25iID8gJDIKLSgxNyByb3dzKQorKDE5IHJvd3MpCiAKIFNF TEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OwogIHQgCmRp ZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvc2VsZWN0LnNxbCBiL2Nv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC9zZWxlY3Quc3FsCmluZGV4IDExNjYyY2RlMDhj Li43ZWU4MTYwZmQ4NCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3Fs L3NlbGVjdC5zcWwKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3NlbGVjdC5z cWwKQEAgLTI1LDYgKzI1LDExIEBAIFNFTEVDVCAxIEFTICJpbnQiIExJTUlUIDMgT0ZGU0VUIDM7 CiBTRUxFQ1QgMSBBUyAiaW50IiBPRkZTRVQgMSBGRVRDSCBGSVJTVCAyIFJPVyBPTkxZOwogU0VM RUNUIDEgQVMgImludCIgT0ZGU0VUIDIgRkVUQ0ggRklSU1QgMyBST1cgT05MWTsKIAorLS1lcnJv ciBzYWZlIHR5cGUgY2FzdAorU0VMRUNUIENBU1QoJ2EnIEFTIGludCBERUZBVUxUIDIgT04gQ09O VkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnMTEnIEFTIGludCBERUZBVUxUIDIgT04gQ09O VkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnMTInIEFTIG51bWVyaWMgREVGQVVMVCAyIE9O IENPTlZFUlNJT04gRVJST1IpOworCiAtLSBESVNUSU5DVCBhbmQgT1JERVIgQlkgcGF0dGVybnMK IC0tIFRyeSBzb21lIHF1ZXJ5IHBlcm11dGF0aW9ucyB3aGljaCBvbmNlIHByb2R1Y2VkIGlkZW50 aWNhbCBxdWVyeSBJRHMKIFNFTEVDVCBESVNUSU5DVCAxIEFTICJpbnQiOwpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sCmluZGV4 IDM0YzgzODgwYTY2Li41MjZkZjk5MjJlNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3N5bnRh eC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbApAQCAtMjEwNiw2ICsyMTA2LDEw IEBAIENBU1QgKCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IEFTIDxyZXBs YWNlYWJsZT50eXBlPC9yZXBsYWNlYWJsZT4KICAgICBUaGUgPGxpdGVyYWw+Q0FTVDwvbGl0ZXJh bD4gc3ludGF4IGNvbmZvcm1zIHRvIFNRTDsgdGhlIHN5bnRheCB3aXRoCiAgICAgPGxpdGVyYWw+ Ojo8L2xpdGVyYWw+IGlzIGhpc3RvcmljYWwgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1 Y3RuYW1lPgogICAgIHVzYWdlLgorICAgIFRoZSBlcXVpdmFsZW50IE9OIENPTlZFUlNJT04gRVJS T1IgYmVoYXZpb3IgaXM6Cis8c3lub3BzaXM+CitDQVNUICggPHJlcGxhY2VhYmxlPmV4cHJlc3Np b248L3JlcGxhY2VhYmxlPiBBUyA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+IEVSUk9S IE9OIENPTlZFUlNJT04gRVJST1IgKQorPC9zeW5vcHNpcz4KICAgIDwvcGFyYT4KIAogICAgPHBh cmE+CkBAIC0yMTYwLDYgKzIxNjQsMzIgQEAgQ0FTVCAoIDxyZXBsYWNlYWJsZT5leHByZXNzaW9u PC9yZXBsYWNlYWJsZT4gQVMgPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPgogICAgICA8 eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRlY2FzdCIvPi4KICAgICA8L3BhcmE+CiAgICA8L25vdGU+ CisKKyA8c2VjdDMgaWQ9InNxbC1zeW50YXgtdHlwZS1jYXN0cy1zYWZlIj4KKyAgPHRpdGxlPlNh ZmUgVHlwZSBDYXN0PC90aXRsZT4KKyAgIDxwYXJhPgorU29tZXRpbWVzIGEgdHlwZSBjYXN0IG1h eSBmYWlsOyB0byBhdm9pZCBzdWNoIGZhaWwgY2FzZSwgYW4gPGxpdGVyYWw+T04gRVJST1I8L2xp dGVyYWw+IGNsYXVzZSBjYW4gYmUKK3VzZWQgdG8gYXZvaWQgcG90ZW50aWFsIGVycm9ycy4gVGhl IHN5bnRheCBpczoKKzxzeW5vcHNpcz4KK0NBU1QgKCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwv cmVwbGFjZWFibGU+IEFTIDxyZXBsYWNlYWJsZT50eXBlPC9yZXBsYWNlYWJsZT4gREVGQVVMVCA8 cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IE9OIENPTlZFUlNJT04gRVJST1Ig KQorPC9zeW5vcHNpcz4KKyAgICBJZiB0eXBlIGNhc3QgZmFpbHMsIGl0IGZhbGxzIGJhY2sgdG8g ZXZhbHVhdGluZyB0aGUgc3VwcGxpZWQKKyAgICBkZWZhdWx0IDxyZXBsYWNlYWJsZT5leHByZXNz aW9uPC9yZXBsYWNlYWJsZT4gaW4gPGxpdGVyYWw+T04gRVJST1I8L2xpdGVyYWw+IGNsYXVzZS4K KyAgICBDdXJyZW50bHksIHRoaXMgb25seSBzdXBwb3J0IGJ1aWx0LWluIHN5c3RlbSB0eXBlIGNh c3RzLCBzZWUgPHhyZWYgbGlua2VuZD0iY2F0YWxvZy1wZy1jYXN0Ii8+LgorICAgIFR5cGUgY2Fz dHMgY3JlYXRlZCB1c2luZyA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlY2FzdCI+Q1JFQVRFIENB U1Q8L2xpbms+IGFyZSBub3Qgc3VwcG9ydGVkLgorICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAg ICBTb21lIGV4YW1wbGVzOgorPHNjcmVlbj4KK1NFTEVDVCBDQVNUKFRFWFQgJ2Vycm9yJyBBUyBp bnRlZ2VyIERFRkFVTFQgMyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKzxsaW5lYW5ub3RhdGlvbj5S ZXN1bHQ6IDwvbGluZWFubm90YXRpb24+PGNvbXB1dGVyb3V0cHV0PjM8L2NvbXB1dGVyb3V0cHV0 PgorU0VMRUNUIENBU1QoVEVYVCAnZXJyb3InIEFTIG51bWVyaWMgREVGQVVMVCAxLjEgT04gQ09O VkVSU0lPTiBFUlJPUik7Cis8bGluZWFubm90YXRpb24+UmVzdWx0OiA8L2xpbmVhbm5vdGF0aW9u Pjxjb21wdXRlcm91dHB1dD4xLjE8L2NvbXB1dGVyb3V0cHV0PgorPC9zY3JlZW4+CisgICAgPC9w YXJhPgorICA8L3NlY3QzPgorCiAgIDwvc2VjdDI+CiAKICAgPHNlY3QyIGlkPSJzcWwtc3ludGF4 LWNvbGxhdGUtZXhwcnMiPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4 cHIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKaW5kZXggYjA1ZmY0NzZhNjMu LjI2MjlhZWZlNzRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTk5LDYgKzk5LDkgQEAg c3RhdGljIHZvaWQgRXhlY0J1aWxkQWdnVHJhbnNDYWxsKEV4cHJTdGF0ZSAqc3RhdGUsIEFnZ1N0 YXRlICphZ2dzdGF0ZSwKIHN0YXRpYyB2b2lkIEV4ZWNJbml0SnNvbkV4cHIoSnNvbkV4cHIgKmpz ZXhwciwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQkJCQkgRGF0dW0gKnJlc3YsIGJvb2wgKnJlc251 bGwsCiAJCQkJCQkJIEV4cHJFdmFsU3RlcCAqc2NyYXRjaCk7CitzdGF0aWMgdm9pZCBFeGVjSW5p dFNhZmVUeXBlQ2FzdEV4cHIoU2FmZVR5cGVDYXN0RXhwciAqc3RjZXhwciwgRXhwclN0YXRlICpz dGF0ZSwKKwkJCQkJCQkJCSBEYXR1bSAqcmVzdiwgYm9vbCAqcmVzbnVsbCwKKwkJCQkJCQkJCSBF eHByRXZhbFN0ZXAgKnNjcmF0Y2gpOwogc3RhdGljIHZvaWQgRXhlY0luaXRKc29uQ29lcmNpb24o RXhwclN0YXRlICpzdGF0ZSwgSnNvblJldHVybmluZyAqcmV0dXJuaW5nLAogCQkJCQkJCQkgRXJy b3JTYXZlQ29udGV4dCAqZXNjb250ZXh0LCBib29sIG9taXRfcXVvdGVzLAogCQkJCQkJCQkgYm9v bCBleGlzdHNfY29lcmNlLApAQCAtMTcwLDYgKzE3Myw0NyBAQCBFeGVjSW5pdEV4cHIoRXhwciAq bm9kZSwgUGxhblN0YXRlICpwYXJlbnQpCiAJcmV0dXJuIHN0YXRlOwogfQogCisvKgorICogRXhl Y0luaXRFeHByU2FmZTogc29mdCBlcnJvciB2YXJpYW50IG9mIEV4ZWNJbml0RXhwci4KKyAqCisg KiB1c2UgaXQgb25seSBmb3IgZXhwcmVzc2lvbiBub2RlcyBzdXBwb3J0IHNvZnQgZXJyb3JzLCBu b3QgYWxsIGV4cHJlc3Npb24KKyAqIG5vZGVzIHN1cHBvcnQgaXQuCisqLworRXhwclN0YXRlICoK K0V4ZWNJbml0RXhwclNhZmUoRXhwciAqbm9kZSwgUGxhblN0YXRlICpwYXJlbnQpCit7CisJRXhw clN0YXRlICAqc3RhdGU7CisJRXhwckV2YWxTdGVwIHNjcmF0Y2ggPSB7MH07CisKKwkvKiBTcGVj aWFsIGNhc2U6IE5VTEwgZXhwcmVzc2lvbiBwcm9kdWNlcyBhIE5VTEwgRXhwclN0YXRlIHBvaW50 ZXIgKi8KKwlpZiAobm9kZSA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIEluaXRpYWxp emUgRXhwclN0YXRlIHdpdGggZW1wdHkgc3RlcCBsaXN0ICovCisJc3RhdGUgPSBtYWtlTm9kZShF eHByU3RhdGUpOworCXN0YXRlLT5leHByID0gbm9kZTsKKwlzdGF0ZS0+cGFyZW50ID0gcGFyZW50 OworCXN0YXRlLT5leHRfcGFyYW1zID0gTlVMTDsKKwlzdGF0ZS0+ZXNjb250ZXh0ID0gbWFrZU5v ZGUoRXJyb3JTYXZlQ29udGV4dCk7CisJc3RhdGUtPmVzY29udGV4dC0+dHlwZSA9IFRfRXJyb3JT YXZlQ29udGV4dDsKKwlzdGF0ZS0+ZXNjb250ZXh0LT5lcnJvcl9vY2N1cnJlZCA9IGZhbHNlOwor CXN0YXRlLT5lc2NvbnRleHQtPmRldGFpbHNfd2FudGVkID0gZmFsc2U7CisKKwkvKiBJbnNlcnQg c2V0dXAgc3RlcHMgYXMgbmVlZGVkICovCisJRXhlY0NyZWF0ZUV4cHJTZXR1cFN0ZXBzKHN0YXRl LCAoTm9kZSAqKSBub2RlKTsKKworCS8qIENvbXBpbGUgdGhlIGV4cHJlc3Npb24gcHJvcGVyICov CisJRXhlY0luaXRFeHByUmVjKG5vZGUsIHN0YXRlLCAmc3RhdGUtPnJlc3ZhbHVlLCAmc3RhdGUt PnJlc251bGwpOworCisJLyogRmluYWxseSwgYXBwZW5kIGEgRE9ORSBzdGVwICovCisJc2NyYXRj aC5vcGNvZGUgPSBFRU9QX0RPTkVfUkVUVVJOOworCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZz Y3JhdGNoKTsKKworCUV4ZWNSZWFkeUV4cHIoc3RhdGUpOworCisJcmV0dXJuIHN0YXRlOworfQor CiAvKgogICogRXhlY0luaXRFeHByV2l0aFBhcmFtczogcHJlcGFyZSBhIHN0YW5kYWxvbmUgZXhw cmVzc2lvbiB0cmVlIGZvciBleGVjdXRpb24KICAqCkBAIC0xNzAxLDYgKzE3NDUsNyBAQCBFeGVj SW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAogCQkJCWVsZW1zdGF0 ZS0+aW5uZXJtb3N0X2Nhc2V2YWwgPSAoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkpOwog CQkJCWVsZW1zdGF0ZS0+aW5uZXJtb3N0X2Nhc2VudWxsID0gKGJvb2wgKikgcGFsbG9jKHNpemVv Zihib29sKSk7CisJCQkJZWxlbXN0YXRlLT5lc2NvbnRleHQgPSBzdGF0ZS0+ZXNjb250ZXh0Owog CiAJCQkJRXhlY0luaXRFeHByUmVjKGFjb2VyY2UtPmVsZW1leHByLCBlbGVtc3RhdGUsCiAJCQkJ CQkJCSZlbGVtc3RhdGUtPnJlc3ZhbHVlLCAmZWxlbXN0YXRlLT5yZXNudWxsKTsKQEAgLTIxNzcs NiArMjIyMiwxNCBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0 ZSwKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJCXsK KwkJCQlTYWZlVHlwZUNhc3RFeHByICAgKnN0Y2V4cHIgPSBjYXN0Tm9kZShTYWZlVHlwZUNhc3RF eHByLCBub2RlKTsKKworCQkJCUV4ZWNJbml0U2FmZVR5cGVDYXN0RXhwcihzdGNleHByLCBzdGF0 ZSwgcmVzdiwgcmVzbnVsbCwgJnNjcmF0Y2gpOworCQkJCWJyZWFrOworCQkJfQorCiAJCWNhc2Ug VF9Db2FsZXNjZUV4cHI6CiAJCQl7CiAJCQkJQ29hbGVzY2VFeHByICpjb2FsZXNjZSA9IChDb2Fs ZXNjZUV4cHIgKikgbm9kZTsKQEAgLTI3NDMsNyArMjc5Niw3IEBAIEV4ZWNJbml0RnVuYyhFeHBy RXZhbFN0ZXAgKnNjcmF0Y2gsIEV4cHIgKm5vZGUsIExpc3QgKmFyZ3MsIE9pZCBmdW5jaWQsCiAK IAkvKiBJbml0aWFsaXplIGZ1bmN0aW9uIGNhbGwgcGFyYW1ldGVyIHN0cnVjdHVyZSB0b28gKi8K IAlJbml0RnVuY3Rpb25DYWxsSW5mb0RhdGEoKmZjaW5mbywgZmxpbmZvLAotCQkJCQkJCSBuYXJn cywgaW5wdXRjb2xsaWQsIE5VTEwsIE5VTEwpOworCQkJCQkJCSBuYXJncywgaW5wdXRjb2xsaWQs IChOb2RlICopIHN0YXRlLT5lc2NvbnRleHQsIE5VTEwpOwogCiAJLyogS2VlcCBleHRyYSBjb3Bp ZXMgb2YgdGhpcyBpbmZvIHRvIHNhdmUgYW4gaW5kaXJlY3Rpb24gYXQgcnVudGltZSAqLwogCXNj cmF0Y2gtPmQuZnVuYy5mbl9hZGRyID0gZmxpbmZvLT5mbl9hZGRyOwpAQCAtNDc0MSw2ICs0Nzk0 LDUzIEBAIEV4ZWNCdWlsZFBhcmFtU2V0RXF1YWwoVHVwbGVEZXNjIGRlc2MsCiAJcmV0dXJuIHN0 YXRlOwogfQogCisvKgorICogUHVzaCBzdGVwcyB0byBldmFsdWF0ZSBhIFNhZmVUeXBlQ2FzdEV4 cHIgYW5kIGl0cyB2YXJpb3VzIHN1YnNpZGlhcnkKKyAqIGV4cHJlc3Npb25zLgorICovCitzdGF0 aWMgdm9pZAorRXhlY0luaXRTYWZlVHlwZUNhc3RFeHByKFNhZmVUeXBlQ2FzdEV4cHIgKnN0Y2V4 cHIgLCBFeHByU3RhdGUgKnN0YXRlLAorCQkJCQkJIERhdHVtICpyZXN2LCBib29sICpyZXNudWxs LAorCQkJCQkJIEV4cHJFdmFsU3RlcCAqc2NyYXRjaCkKK3sKKwkvKgorCSAqIElmIHdlIGNhbiBu b3QgY29lcmNlIHRvIHRoZSB0YXJnZXQgdHlwZSwgZmFsbGJhY2sgdG8gdGhlIERFRkFVTFQKKwkg KiBleHByZXNzaW9uIHNwZWNpZmllZCBpbiB0aGUgT04gQ09OVkVSU0lPTiBFUlJPUiBjbGF1c2Us IGFuZCB3ZSBhcmUgZG9uZS4KKwkgKi8KKwlpZiAoc3RjZXhwci0+Y2FzdF9leHByID09IE5VTEwp CisJeworCQlFeGVjSW5pdEV4cHJSZWMoKEV4cHIgKikgc3RjZXhwci0+ZGVmYXVsdF9leHByLAor CQkJCQkJc3RhdGUsIHJlc3YsIHJlc251bGwpOworCQlyZXR1cm47CisJfQorCWVsc2UKKwl7CisJ CVNhZmVUeXBlQ2FzdFN0YXRlICpzdGNzdGF0ZTsKKwkJRXJyb3JTYXZlQ29udGV4dCAqc2F2ZWRf ZXNjb250ZXh0OworCisJCXN0Y3N0YXRlID0gcGFsbG9jMChzaXplb2YoU2FmZVR5cGVDYXN0U3Rh dGUpKTsKKwkJc3Rjc3RhdGUtPnN0Y2V4cHIgPSBzdGNleHByOworCQlzdGNzdGF0ZS0+ZXNjb250 ZXh0LnR5cGUgPSBUX0Vycm9yU2F2ZUNvbnRleHQ7CisJCXN0YXRlLT5lc2NvbnRleHQgPSAmc3Rj c3RhdGUtPmVzY29udGV4dDsKKworCQkvKiBldmFsdWF0ZSBhcmd1bWVudCBleHByZXNzaW9uIGlu dG8gc3RlcCdzIHJlc3VsdCBhcmVhICovCisJCUV4ZWNJbml0RXhwclJlYygoRXhwciAqKSBzdGNl eHByLT5jYXN0X2V4cHIsCisJCQkJCQlzdGF0ZSwgcmVzdiwgcmVzbnVsbCk7CisJCXNjcmF0Y2gt Pm9wY29kZSA9IEVFT1BfU0FGRVRZUEVfQ0FTVDsKKwkJc2NyYXRjaC0+ZC5zdGNleHByLnN0Y3N0 YXRlID0gc3Rjc3RhdGU7CisJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCisJ CS8qIFN0ZXBzIHRvIGV2YWx1YXRlIHRoZSBERUZBVUxUIGV4cHJlc3Npb24gKi8KKwkJc2F2ZWRf ZXNjb250ZXh0ID0gc3RhdGUtPmVzY29udGV4dDsKKwkJc3RhdGUtPmVzY29udGV4dCA9IE5VTEw7 CisJCUV4ZWNJbml0RXhwclJlYygoRXhwciAqKSBzdGNzdGF0ZS0+c3RjZXhwci0+ZGVmYXVsdF9l eHByLAorCQkJCQkJc3RhdGUsIHJlc3YsIHJlc251bGwpOworCQlzdGF0ZS0+ZXNjb250ZXh0ID0g c2F2ZWRfZXNjb250ZXh0OworCisJCXN0Y3N0YXRlLT5qdW1wX2VuZCA9IHN0YXRlLT5zdGVwc19s ZW47CisJfQorfQorCiAvKgogICogUHVzaCBzdGVwcyB0byBldmFsdWF0ZSBhIEpzb25FeHByIGFu ZCBpdHMgdmFyaW91cyBzdWJzaWRpYXJ5IGV4cHJlc3Npb25zLgogICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0V4cHJJbnRlcnAuYwppbmRleCAxZDg4Y2RkMmNiNC4uY2E2ZTBmZDU2Y2QgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwpAQCAtNTY4LDYgKzU2OCw3IEBAIEV4ZWNJ bnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAq aXNudWxsKQogCQkmJkNBU0VfRUVPUF9YTUxFWFBSLAogCQkmJkNBU0VfRUVPUF9KU09OX0NPTlNU UlVDVE9SLAogCQkmJkNBU0VfRUVPUF9JU19KU09OLAorCQkmJkNBU0VfRUVPUF9TQUZFVFlQRV9D QVNULAogCQkmJkNBU0VfRUVPUF9KU09ORVhQUl9QQVRILAogCQkmJkNBU0VfRUVPUF9KU09ORVhQ Ul9DT0VSQ0lPTiwKIAkJJiZDQVNFX0VFT1BfSlNPTkVYUFJfQ09FUkNJT05fRklOSVNILApAQCAt MTkyNiw2ICsxOTI3LDI4IEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJD b250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkJRUVPX05FWFQoKTsKIAkJfQogCisJ CUVFT19DQVNFKEVFT1BfU0FGRVRZUEVfQ0FTVCkKKwkJeworCQkJU2FmZVR5cGVDYXN0U3RhdGUg KnN0Y3N0YXRlID0gb3AtPmQuc3RjZXhwci5zdGNzdGF0ZTsKKworCQkJaWYgKFNPRlRfRVJST1Jf T0NDVVJSRUQoJnN0Y3N0YXRlLT5lc2NvbnRleHQpKQorCQkJeworCQkJCSpvcC0+cmVzdmFsdWUg PSAoRGF0dW0pIDA7CisJCQkJKm9wLT5yZXNudWxsID0gdHJ1ZTsKKworCQkJCS8qCisJCQkJICog UmVzZXQgZm9yIG5leHQgdXNlIHN1Y2ggYXMgZm9yIGNhdGNoaW5nIGVycm9ycyB3aGVuIGNvZXJj aW5nCisJCQkJICogYSBleHByZXNzaW9uLgorCQkJCSAqLworCQkJCXN0Y3N0YXRlLT5lc2NvbnRl eHQuZXJyb3Jfb2NjdXJyZWQgPSBmYWxzZTsKKwkJCQlzdGNzdGF0ZS0+ZXNjb250ZXh0LmRldGFp bHNfd2FudGVkID0gZmFsc2U7CisKKwkJCQlFRU9fTkVYVCgpOworCQkJfQorCQkJZWxzZQorCQkJ CUVFT19KVU1QKHN0Y3N0YXRlLT5qdW1wX2VuZCk7CisJCX0KKwogCQlFRU9fQ0FTRShFRU9QX0pT T05FWFBSX1BBVEgpCiAJCXsKIAkJCS8qIHRvbyBjb21wbGV4IGZvciBhbiBpbmxpbmUgaW1wbGVt ZW50YXRpb24gKi8KQEAgLTM2NDQsNiArMzY2NywxMiBAQCBFeGVjRXZhbEFycmF5Q29lcmNlKEV4 cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dCkK IAkJCQkJCQkgIGVjb250ZXh0LAogCQkJCQkJCSAgb3AtPmQuYXJyYXljb2VyY2UucmVzdWx0ZWxl bXR5cGUsCiAJCQkJCQkJICBvcC0+ZC5hcnJheWNvZXJjZS5hbXN0YXRlKTsKKworCWlmIChTT0ZU X0VSUk9SX09DQ1VSUkVEKG9wLT5kLmFycmF5Y29lcmNlLmVsZW1leHByc3RhdGUtPmVzY29udGV4 dCkpCisJeworCQkqb3AtPnJlc3ZhbHVlID0gKERhdHVtKSAwOworCQkqb3AtPnJlc251bGwgPSB0 cnVlOworCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1q aXRfZXhwci5jIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKaW5kZXggYWM4 ODg4MWU5OTUuLmJjN2NkMzI4M2E1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9s bHZtaml0X2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwpA QCAtMjI1Niw2ICsyMjU2LDMyIEBAIGxsdm1fY29tcGlsZV9leHByKEV4cHJTdGF0ZSAqc3RhdGUp CiAJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKIAkJCQlicmVhazsKIAor CQkJY2FzZSBFRU9QX1NBRkVUWVBFX0NBU1Q6CisJCQkJeworCQkJCQlTYWZlVHlwZUNhc3RTdGF0 ZSAqc3Rjc3RhdGUgPSBvcC0+ZC5zdGNleHByLnN0Y3N0YXRlOworCisJCQkJCWlmIChTT0ZUX0VS Uk9SX09DQ1VSUkVEKCZzdGNzdGF0ZS0+ZXNjb250ZXh0KSkKKwkJCQkJeworCQkJCQkJLyoKKwkJ CQkJCSAqIFJlc2V0IGZvciBuZXh0IHVzZSBzdWNoIGFzIGZvciBjYXRjaGluZyBlcnJvcnMgd2hl bgorCQkJCQkJICogY29lcmNpbmcgYSBleHByZXNzaW9uLgorCQkJCQkJICovCisJCQkJCQlzdGNz dGF0ZS0+ZXNjb250ZXh0LmVycm9yX29jY3VycmVkID0gZmFsc2U7CisJCQkJCQlzdGNzdGF0ZS0+ ZXNjb250ZXh0LmRldGFpbHNfd2FudGVkID0gZmFsc2U7CisKKwkJCQkJCS8qIHNldCByZXNudWxs IHRvIHRydWUgKi8KKwkJCQkJCUxMVk1CdWlsZFN0b3JlKGIsIGxfc2Jvb2xfY29uc3QoMSksIHZf cmVzbnVsbHApOworCQkJCQkJLyogcmVzZXQgcmVzdmFsdWUgKi8KKwkJCQkJCUxMVk1CdWlsZFN0 b3JlKGIsIGxfZGF0dW1fY29uc3QoMCksIHZfcmVzdmFsdWVwKTsKKworCQkJCQkJTExWTUJ1aWxk QnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCQlMTFZN QnVpbGRCcihiLCBvcGJsb2Nrc1tzdGNzdGF0ZS0+anVtcF9lbmRdKTsKKworCQkJCQlicmVhazsK KwkJCQl9CisKIAkJCWNhc2UgRUVPUF9KU09ORVhQUl9QQVRIOgogCQkJCXsKIAkJCQkJSnNvbkV4 cHJTdGF0ZSAqanNlc3RhdGUgPSBvcC0+ZC5qc29uZXhwci5qc2VzdGF0ZTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1 bmNzLmMKaW5kZXggZDIyODMxOGRjNzIuLmIzYWU2OTA2OGQwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3Mu YwpAQCAtMjA2LDYgKzIwNiw5IEBAIGV4cHJUeXBlKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2Ug VF9Sb3dDb21wYXJlRXhwcjoKIAkJCXR5cGUgPSBCT09MT0lEOwogCQkJYnJlYWs7CisJCWNhc2Ug VF9TYWZlVHlwZUNhc3RFeHByOgorCQkJdHlwZSA9ICgoY29uc3QgU2FmZVR5cGVDYXN0RXhwciAq KSBleHByKS0+cmVzdWx0dHlwZTsKKwkJCWJyZWFrOwogCQljYXNlIFRfQ29hbGVzY2VFeHByOgog CQkJdHlwZSA9ICgoY29uc3QgQ29hbGVzY2VFeHByICopIGV4cHIpLT5jb2FsZXNjZXR5cGU7CiAJ CQlicmVhazsKQEAgLTQ1MCw2ICs0NTMsOCBAQCBleHByVHlwbW9kKGNvbnN0IE5vZGUgKmV4cHIp CiAJCQkJcmV0dXJuIHR5cG1vZDsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfU2FmZVR5cGVD YXN0RXhwcjoKKwkJCXJldHVybiAoKGNvbnN0IFNhZmVUeXBlQ2FzdEV4cHIgKikgZXhwciktPnJl c3VsdHR5cG1vZDsKIAkJY2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJCXsKIAkJCQkvKgpAQCAtOTY1 LDYgKzk3MCw5IEBAIGV4cHJDb2xsYXRpb24oY29uc3QgTm9kZSAqZXhwcikKIAkJCS8qIFJvd0Nv bXBhcmVFeHByJ3MgcmVzdWx0IGlzIGJvb2xlYW4gLi4uICovCiAJCQljb2xsID0gSW52YWxpZE9p ZDsJLyogLi4uIHNvIGl0IGhhcyBubyBjb2xsYXRpb24gKi8KIAkJCWJyZWFrOworCQljYXNlIFRf U2FmZVR5cGVDYXN0RXhwcjoKKwkJCWNvbGwgPSAoKGNvbnN0IFNhZmVUeXBlQ2FzdEV4cHIgKikg ZXhwciktPnJlc3VsdGNvbGxpZDsKKwkJCWJyZWFrOwogCQljYXNlIFRfQ29hbGVzY2VFeHByOgog CQkJY29sbCA9ICgoY29uc3QgQ29hbGVzY2VFeHByICopIGV4cHIpLT5jb2FsZXNjZWNvbGxpZDsK IAkJCWJyZWFrOwpAQCAtMTIzMiw2ICsxMjQwLDkgQEAgZXhwclNldENvbGxhdGlvbihOb2RlICpl eHByLCBPaWQgY29sbGF0aW9uKQogCQkJLyogUm93Q29tcGFyZUV4cHIncyByZXN1bHQgaXMgYm9v bGVhbiAuLi4gKi8KIAkJCUFzc2VydCghT2lkSXNWYWxpZChjb2xsYXRpb24pKTsgLyogLi4uIHNv IG5ldmVyIHNldCBhIGNvbGxhdGlvbiAqLwogCQkJYnJlYWs7CisJCWNhc2UgVF9TYWZlVHlwZUNh c3RFeHByOgorCQkJKChTYWZlVHlwZUNhc3RFeHByICopIGV4cHIpLT5yZXN1bHRjb2xsaWQgPSBj b2xsYXRpb247CisJCQlicmVhazsKIAkJY2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJCSgoQ29hbGVz Y2VFeHByICopIGV4cHIpLT5jb2FsZXNjZWNvbGxpZCA9IGNvbGxhdGlvbjsKIAkJCWJyZWFrOwpA QCAtMTU1MCw2ICsxNTYxLDkgQEAgZXhwckxvY2F0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCQkv KiBqdXN0IHVzZSBsZWZ0bW9zdCBhcmd1bWVudCdzIGxvY2F0aW9uICovCiAJCQlsb2MgPSBleHBy TG9jYXRpb24oKE5vZGUgKikgKChjb25zdCBSb3dDb21wYXJlRXhwciAqKSBleHByKS0+bGFyZ3Mp OwogCQkJYnJlYWs7CisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJbG9jID0gKChjb25z dCBTYWZlVHlwZUNhc3RFeHByICopIGV4cHIpLT5sb2NhdGlvbjsKKwkJCWJyZWFrOwogCQljYXNl IFRfQ29hbGVzY2VFeHByOgogCQkJLyogQ09BTEVTQ0Uga2V5d29yZCBzaG91bGQgYWx3YXlzIGJl IHRoZSBmaXJzdCB0aGluZyAqLwogCQkJbG9jID0gKChjb25zdCBDb2FsZXNjZUV4cHIgKikgZXhw ciktPmxvY2F0aW9uOwpAQCAtMjMyMSw2ICsyMzM1LDE4IEBAIGV4cHJlc3Npb25fdHJlZV93YWxr ZXJfaW1wbChOb2RlICpub2RlLAogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOwor CQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJCXsKKwkJCQlTYWZlVHlwZUNhc3RFeHByICAg KnNjZXhwciA9IChTYWZlVHlwZUNhc3RFeHByICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhzY2V4 cHItPnNvdXJjZV9leHByKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoc2NleHBy LT5jYXN0X2V4cHIpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhzY2V4cHItPmRl ZmF1bHRfZXhwcikpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2Ug VF9Db2FsZXNjZUV4cHI6CiAJCQlyZXR1cm4gV0FMSygoKENvYWxlc2NlRXhwciAqKSBub2RlKS0+ YXJncyk7CiAJCWNhc2UgVF9NaW5NYXhFeHByOgpAQCAtMzMzMCw2ICszMzU2LDE5IEBAIGV4cHJl c3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQlyZXR1cm4gKE5vZGUgKikg bmV3bm9kZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJ CXsKKwkJCQlTYWZlVHlwZUNhc3RFeHByICAgKnNjZXhwciA9IChTYWZlVHlwZUNhc3RFeHByICop IG5vZGU7CisJCQkJU2FmZVR5cGVDYXN0RXhwciAgICpuZXdub2RlOworCisJCQkJRkxBVENPUFko bmV3bm9kZSwgc2NleHByLCBTYWZlVHlwZUNhc3RFeHByKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+ c291cmNlX2V4cHIsIHNjZXhwci0+c291cmNlX2V4cHIsIE5vZGUgKik7CisJCQkJTVVUQVRFKG5l d25vZGUtPmNhc3RfZXhwciwgc2NleHByLT5jYXN0X2V4cHIsIE5vZGUgKik7CisJCQkJTVVUQVRF KG5ld25vZGUtPmRlZmF1bHRfZXhwciwgc2NleHByLT5kZWZhdWx0X2V4cHIsIE5vZGUgKik7CisK KwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRf Q29hbGVzY2VFeHByOgogCQkJewogCQkJCUNvYWxlc2NlRXhwciAqY29hbGVzY2VleHByID0gKENv YWxlc2NlRXhwciAqKSBub2RlOwpAQCAtNDQ2NCw2ICs0NTAzLDI4IEBAIHJhd19leHByZXNzaW9u X3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJ CQlicmVhazsKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdDoKKwkJCXsKKwkJCQlTYWZlVHlwZUNhc3Qg ICAqc2MgPSAoU2FmZVR5cGVDYXN0ICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhzYy0+Y2FzdCkp CisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKHNjLT5yYXdfZGVmYXVsdCkpCisJCQkJ CXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHBy OgorCQkJeworCQkJCVNhZmVUeXBlQ2FzdEV4cHIgICAqc3RjID0gKFNhZmVUeXBlQ2FzdEV4cHIg Kikgbm9kZTsKKworCQkJCWlmIChXQUxLKHN0Yy0+c291cmNlX2V4cHIpKQorCQkJCQlyZXR1cm4g dHJ1ZTsKKwkJCQlpZiAoV0FMSyhzdGMtPmNhc3RfZXhwcikpCisJCQkJCXJldHVybiB0cnVlOwor CQkJCWlmIChXQUxLKHN0Yy0+ZGVmYXVsdF9leHByKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9 CisJCQlicmVhazsKIAkJY2FzZSBUX0NvbGxhdGVDbGF1c2U6CiAJCQlyZXR1cm4gV0FMSygoKENv bGxhdGVDbGF1c2UgKikgbm9kZSktPmFyZyk7CiAJCWNhc2UgVF9Tb3J0Qnk6CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvdXRpbC9jbGF1c2VzLmMKaW5kZXggYmRhNGM0ZWIyOTIuLmU2ZDhiNmM0NjdmIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCkBAIC0yNDQ3LDcgKzI0NDcsOCBAQCBlc3Rp bWF0ZV9leHByZXNzaW9uX3ZhbHVlKFBsYW5uZXJJbmZvICpyb290LCBOb2RlICpub2RlKQogCSgo Tm9kZSAqKSBldmFsdWF0ZV9leHByKChFeHByICopIChub2RlKSwgXAogCQkJCQkJCWV4cHJUeXBl KChOb2RlICopIChub2RlKSksIFwKIAkJCQkJCQlleHByVHlwbW9kKChOb2RlICopIChub2RlKSks IFwKLQkJCQkJCQlleHByQ29sbGF0aW9uKChOb2RlICopIChub2RlKSkpKQorCQkJCQkJCWV4cHJD b2xsYXRpb24oKE5vZGUgKikgKG5vZGUpKSwgXAorCQkJCQkJCWZhbHNlKSkKIAogLyoKICAqIFJl Y3Vyc2l2ZSBndXRzIG9mIGV2YWxfY29uc3RfZXhwcmVzc2lvbnMvZXN0aW1hdGVfZXhwcmVzc2lv bl92YWx1ZQpAQCAtMjk1OCw2ICsyOTU5LDMyIEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0 YXRvcihOb2RlICpub2RlLAogCQkJCQkJCQkJCQkJICBjb3B5T2JqZWN0KGp2ZS0+Zm9ybWF0KSk7 CiAJCQl9CiAKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQl7CisJCQkJU2FmZVR5cGVD YXN0RXhwciAJKnN0YyA9IChTYWZlVHlwZUNhc3RFeHByICopIG5vZGU7CisJCQkJU2FmZVR5cGVD YXN0RXhwcgkqbmV3ZXhwcjsKKwkJCQlOb2RlCSAgICpzb3VyY2VfZXhwciA9IHN0Yy0+c291cmNl X2V4cHI7CisJCQkJTm9kZQkgICAqZGVmYXVsdF9leHByID0gc3RjLT5kZWZhdWx0X2V4cHI7CisK KwkJCQlzb3VyY2VfZXhwciA9IGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcihzb3VyY2Vf ZXhwciwgY29udGV4dCk7CisJCQkJZGVmYXVsdF9leHByID0gZXZhbF9jb25zdF9leHByZXNzaW9u c19tdXRhdG9yKGRlZmF1bHRfZXhwciwgY29udGV4dCk7CisKKwkJCQkvKgorCQkJCSAqIFdlIG11 c3Qgbm90IHJlZHVjZSBhbnkgcmVjb2duaXphYmx5IGNvbnN0YW50IHN1YmV4cHJlc3Npb25zCisJ CQkJICogaW4gY2FzdF9leHByIGhlcmUsIHNpbmNlIHdlIGRvbuKAmXQgd2FudCBpdCB0byBmYWls CisJCQkJICogcHJlbWF0dXJlbHkuCisJCQkJICovCisJCQkJbmV3ZXhwciA9IG1ha2VOb2RlKFNh ZmVUeXBlQ2FzdEV4cHIpOworCQkJCW5ld2V4cHItPnNvdXJjZV9leHByID0gc291cmNlX2V4cHI7 CisJCQkJbmV3ZXhwci0+Y2FzdF9leHByID0gc3RjLT5jYXN0X2V4cHI7CisJCQkJbmV3ZXhwci0+ ZGVmYXVsdF9leHByID0gZGVmYXVsdF9leHByOworCQkJCW5ld2V4cHItPnJlc3VsdHR5cGUgPSBz dGMtPnJlc3VsdHR5cGU7CisJCQkJbmV3ZXhwci0+cmVzdWx0dHlwbW9kID0gc3RjLT5yZXN1bHR0 eXBtb2Q7CisJCQkJbmV3ZXhwci0+cmVzdWx0Y29sbGlkID0gc3RjLT5yZXN1bHRjb2xsaWQ7CisK KwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3ZXhwcjsKKwkJCX0KKwogCQljYXNlIFRfU3ViUGxhbjoK IAkJY2FzZSBUX0FsdGVybmF0aXZlU3ViUGxhbjoKIApAQCAtMzM4MCw3ICszNDA3LDggQEAgZXZh bF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJCQkJCXJldHVybiAoTm9k ZSAqKSBldmFsdWF0ZV9leHByKChFeHByICopIHN2ZiwKIAkJCQkJCQkJCQkJCSAgc3ZmLT50eXBl LAogCQkJCQkJCQkJCQkJICBzdmYtPnR5cG1vZCwKLQkJCQkJCQkJCQkJCSAgSW52YWxpZE9pZCk7 CisJCQkJCQkJCQkJCQkgIEludmFsaWRPaWQsCisJCQkJCQkJCQkJCQkgIGZhbHNlKTsKIAkJCQll bHNlCiAJCQkJCXJldHVybiBjb3B5T2JqZWN0KChOb2RlICopIHN2Zik7CiAJCQl9CkBAIC00Njk4 LDcgKzQ3MjYsNyBAQCBldmFsdWF0ZV9mdW5jdGlvbihPaWQgZnVuY2lkLCBPaWQgcmVzdWx0X3R5 cGUsIGludDMyIHJlc3VsdF90eXBtb2QsCiAJbmV3ZXhwci0+bG9jYXRpb24gPSAtMTsKIAogCXJl dHVybiBldmFsdWF0ZV9leHByKChFeHByICopIG5ld2V4cHIsIHJlc3VsdF90eXBlLCByZXN1bHRf dHlwbW9kLAotCQkJCQkJIHJlc3VsdF9jb2xsaWQpOworCQkJCQkJIHJlc3VsdF9jb2xsaWQsIGZh bHNlKTsKIH0KIAogLyoKQEAgLTUxNTIsMTAgKzUxODAsMTQgQEAgc3FsX2lubGluZV9lcnJvcl9j YWxsYmFjayh2b2lkICphcmcpCiAgKgogICogV2UgdXNlIHRoZSBleGVjdXRvcidzIHJvdXRpbmUg RXhlY0V2YWxFeHByKCkgdG8gYXZvaWQgZHVwbGljYXRpb24gb2YKICAqIGNvZGUgYW5kIGVuc3Vy ZSB3ZSBnZXQgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZSBleGVjdXRvciB3b3VsZCBnZXQuCisgKgor ICogV2hlbiBlcnJvcl9zYWZlIHNldCB0byB0cnVlLCB3ZSB3aWxsIGV2YWx1YXRlIHRoZSBjb25z dGFudCBleHByZXNzaW9uIGluIGEKKyAqIGVycm9yIHNhZmUgd2F5LiBJZiB0aGUgZXZhbHVhdGlv biBmYWlscywgcmV0dXJuIE5VTEwgaW5zdGVhZCBvZiB0aHJvd2luZworICogZXJyb3IuCiAgKi8K IEV4cHIgKgogZXZhbHVhdGVfZXhwcihFeHByICpleHByLCBPaWQgcmVzdWx0X3R5cGUsIGludDMy IHJlc3VsdF90eXBtb2QsCi0JCQkgIE9pZCByZXN1bHRfY29sbGF0aW9uKQorCQkJICBPaWQgcmVz dWx0X2NvbGxhdGlvbiwgYm9vbCBlcnJvcl9zYWZlKQogewogCUVTdGF0ZQkgICAqZXN0YXRlOwog CUV4cHJTdGF0ZSAgKmV4cHJzdGF0ZTsKQEAgLTUxODAsNyArNTIxMiwxMCBAQCBldmFsdWF0ZV9l eHByKEV4cHIgKmV4cHIsIE9pZCByZXN1bHRfdHlwZSwgaW50MzIgcmVzdWx0X3R5cG1vZCwKIAkg KiBQcmVwYXJlIGV4cHIgZm9yIGV4ZWN1dGlvbi4gIChOb3RlOiB3ZSBjYW4ndCB1c2UgRXhlY1By ZXBhcmVFeHByCiAJICogYmVjYXVzZSBpdCdkIHJlc3VsdCBpbiByZWN1cnNpdmVseSBpbnZva2lu ZyBldmFsX2NvbnN0X2V4cHJlc3Npb25zLikKIAkgKi8KLQlleHByc3RhdGUgPSBFeGVjSW5pdEV4 cHIoZXhwciwgTlVMTCk7CisJaWYgKGVycm9yX3NhZmUpCisJCWV4cHJzdGF0ZSA9IEV4ZWNJbml0 RXhwclNhZmUoZXhwciwgTlVMTCk7CisJZWxzZQorCQlleHByc3RhdGUgPSBFeGVjSW5pdEV4cHIo ZXhwciwgTlVMTCk7CiAKIAkvKgogCSAqIEFuZCBldmFsdWF0ZSBpdC4KQEAgLTUyMDAsNiArNTIz NSwxMiBAQCBldmFsdWF0ZV9leHByKEV4cHIgKmV4cHIsIE9pZCByZXN1bHRfdHlwZSwgaW50MzIg cmVzdWx0X3R5cG1vZCwKIAkvKiBHZXQgYmFjayB0byBvdXRlciBtZW1vcnkgY29udGV4dCAqLwog CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAorCWlmIChlcnJvcl9zYWZlICYm IFNPRlRfRVJST1JfT0NDVVJSRUQoZXhwcnN0YXRlLT5lc2NvbnRleHQpKQorCXsKKwkJRnJlZUV4 ZWN1dG9yU3RhdGUoZXN0YXRlKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCiAJLyoKIAkgKiBNdXN0 IGNvcHkgcmVzdWx0IG91dCBvZiBzdWItY29udGV4dCB1c2VkIGJ5IGV4cHJlc3Npb24gZXZhbC4K IAkgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKaW5kZXggYzNhMGEzNTRhOWMuLjhhMjdlMDQ1YmMwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkKQEAgLTE2MDEzLDYgKzE2MDEzLDI4IEBAIGZ1bmNfZXhwcl9jb21tb25fc3ViZXhwcjoKIAkJ CQl9CiAJCQl8IENBU1QgJygnIGFfZXhwciBBUyBUeXBlbmFtZSAnKScKIAkJCQl7ICQkID0gbWFr ZVR5cGVDYXN0KCQzLCAkNSwgQDEpOyB9CisJCQl8IENBU1QgJygnIGFfZXhwciBBUyBUeXBlbmFt ZSBFUlJPUl9QIE9OIENPTlZFUlNJT05fUCBFUlJPUl9QICcpJworCQkJCXsgJCQgPSBtYWtlVHlw ZUNhc3QoJDMsICQ1LCBAMSk7IH0KKwkJCXwgQ0FTVCAnKCcgYV9leHByIEFTIFR5cGVuYW1lIE5V TExfUCBPTiBDT05WRVJTSU9OX1AgRVJST1JfUCAnKScKKwkJCQl7CisJCQkJCVR5cGVDYXN0ICpj YXN0ID0gKFR5cGVDYXN0ICopIG1ha2VUeXBlQ2FzdCgkMywgJDUsIEAxKTsKKworCQkJCQlTYWZl VHlwZUNhc3QgKnNhZmVjYXN0ID0gbWFrZU5vZGUoU2FmZVR5cGVDYXN0KTsKKwkJCQkJc2FmZWNh c3QtPmNhc3QgPSAoTm9kZSAqKSBjYXN0OworCQkJCQlzYWZlY2FzdC0+cmF3X2RlZmF1bHQgPSBt YWtlTnVsbEFDb25zdCgtMSk7OworCisJCQkJCSQkID0gKE5vZGUgKikgc2FmZWNhc3Q7CisJCQkJ fQorCQkJfCBDQVNUICcoJyBhX2V4cHIgQVMgVHlwZW5hbWUgREVGQVVMVCBhX2V4cHIgT04gQ09O VkVSU0lPTl9QIEVSUk9SX1AgJyknCisJCQkJeworCQkJCQlUeXBlQ2FzdCAqY2FzdCA9IChUeXBl Q2FzdCAqKSBtYWtlVHlwZUNhc3QoJDMsICQ1LCBAMSk7CisKKwkJCQkJU2FmZVR5cGVDYXN0ICpz YWZlY2FzdCA9IG1ha2VOb2RlKFNhZmVUeXBlQ2FzdCk7CisJCQkJCXNhZmVjYXN0LT5jYXN0ID0g KE5vZGUgKikgY2FzdDsKKwkJCQkJc2FmZWNhc3QtPnJhd19kZWZhdWx0ID0gJDc7CisKKwkJCQkJ JCQgPSAoTm9kZSAqKSBzYWZlY2FzdDsKKwkJCQl9CiAJCQl8IEVYVFJBQ1QgJygnIGV4dHJhY3Rf bGlzdCAnKScKIAkJCQl7CiAJCQkJCSQkID0gKE5vZGUgKikgbWFrZUZ1bmNDYWxsKFN5c3RlbUZ1 bmNOYW1lKCJleHRyYWN0IiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf YWdnLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKaW5kZXggYjgzNDA1NTdiMzQu LmRlNzdmNmU5MzAyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCkBAIC00OTAsNiArNDkwLDEyIEBA IGNoZWNrX2FnZ2xldmVsc19hbmRfY29uc3RyYWludHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2Rl ICpleHByKQogCQkJCWVyciA9IF8oImdyb3VwaW5nIG9wZXJhdGlvbnMgYXJlIG5vdCBhbGxvd2Vk IGluIGNoZWNrIGNvbnN0cmFpbnRzIik7CiAKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9D QVNUX0RFRkFVTFQ6CisJCQlpZiAoaXNBZ2cpCisJCQkJZXJyID0gXygiYWdncmVnYXRlIGZ1bmN0 aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Npb25zIik7CisJCQll bHNlCisJCQkJZXJyID0gXygiZ3JvdXBpbmcgb3BlcmF0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4g Q0FTVCBERUZBVUxUIGV4cHJlc3Npb25zIik7CisJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRf Q09MVU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CiAKQEAg LTk4Myw2ICs5ODksOSBAQCB0cmFuc2Zvcm1XaW5kb3dGdW5jQ2FsbChQYXJzZVN0YXRlICpwc3Rh dGUsIFdpbmRvd0Z1bmMgKndmdW5jLAogCQljYXNlIEVYUFJfS0lORF9ET01BSU5fQ0hFQ0s6CiAJ CQllcnIgPSBfKCJ3aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBjaGVjayBjb25z dHJhaW50cyIpOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX0NBU1RfREVGQVVMVDoKKwkJ CWVyciA9IF8oIndpbmRvdyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIENBU1QgREVGQVVM VCBleHByZXNzaW9ucyIpOworCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZB VUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgogCQkJZXJyID0gXygid2lu ZG93IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gREVGQVVMVCBleHByZXNzaW9ucyIpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvZXJjZS5jIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2NvZXJjZS5jCmluZGV4IDc4YjFlMzY2YWQ3Li40YWU4N2UyMDMwYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvZXJjZS5jCisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9jb2VyY2UuYwpAQCAtODEsNiArODEsMzEgQEAgY29lcmNlX3Rv X3RhcmdldF90eXBlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwgT2lkIGV4cHJ0eXBl LAogCQkJCQkgIENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwKIAkJCQkJICBDb2VyY2lvbkZvcm0g Y2Zvcm1hdCwKIAkJCQkJICBpbnQgbG9jYXRpb24pCit7CisJcmV0dXJuIGNvZXJjZV90b190YXJn ZXRfdHlwZV9leHRlbmRlZChwc3RhdGUsCisJCQkJCQkJCQkJICBleHByLAorCQkJCQkJCQkJCSAg ZXhwcnR5cGUsCisJCQkJCQkJCQkJICB0YXJnZXR0eXBlLAorCQkJCQkJCQkJCSAgdGFyZ2V0dHlw bW9kLAorCQkJCQkJCQkJCSAgY2NvbnRleHQsCisJCQkJCQkJCQkJICBjZm9ybWF0LAorCQkJCQkJ CQkJCSAgbG9jYXRpb24sCisJCQkJCQkJCQkJICBOVUxMKTsKK30KKworLyoKKyAqIGVzY29udGV4 dDogSWYgbm90IE5VTEwsIGV4cHIgKFVua25vd24gQ29uc3Qgbm9kZSB0eXBlKSB3aWxsIGJlIGNv ZXJjZWQgdG8gdGhlCisgKiB0YXJnZXQgdHlwZSBpbiBhbiBlcnJvci1zYWZlIHdheS4gSWYgaXQg ZmFpbHMsIE5VTEwgaXMgcmV0dXJuZWQuCisgKgorICogRm9yIG90aGVyIHBhcmFtZXRlcnMsIHNl ZSBhYm92ZSBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUuCisgKi8KK05vZGUgKgorY29lcmNlX3RvX3Rh cmdldF90eXBlX2V4dGVuZGVkKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwgT2lkIGV4 cHJ0eXBlLAorCQkJCQkJCSAgIE9pZCB0YXJnZXR0eXBlLCBpbnQzMiB0YXJnZXR0eXBtb2QsCisJ CQkJCQkJICAgQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LAorCQkJCQkJCSAgIENvZXJjaW9uRm9y bSBjZm9ybWF0LAorCQkJCQkJCSAgIGludCBsb2NhdGlvbiwKKwkJCQkJCQkgICBOb2RlICplc2Nv bnRleHQpCiB7CiAJTm9kZQkgICAqcmVzdWx0OwogCU5vZGUJICAgKm9yaWdleHByOwpAQCAtMTAy LDkgKzEyNywxMiBAQCBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBO b2RlICpleHByLCBPaWQgZXhwcnR5cGUsCiAJd2hpbGUgKGV4cHIgJiYgSXNBKGV4cHIsIENvbGxh dGVFeHByKSkKIAkJZXhwciA9IChOb2RlICopICgoQ29sbGF0ZUV4cHIgKikgZXhwciktPmFyZzsK IAotCXJlc3VsdCA9IGNvZXJjZV90eXBlKHBzdGF0ZSwgZXhwciwgZXhwcnR5cGUsCi0JCQkJCQkg dGFyZ2V0dHlwZSwgdGFyZ2V0dHlwbW9kLAotCQkJCQkJIGNjb250ZXh0LCBjZm9ybWF0LCBsb2Nh dGlvbik7CisJcmVzdWx0ID0gY29lcmNlX3R5cGVfZXh0ZW5kKHBzdGF0ZSwgZXhwciwgZXhwcnR5 cGUsCisJCQkJCQkJCXRhcmdldHR5cGUsIHRhcmdldHR5cG1vZCwKKwkJCQkJCQkJY2NvbnRleHQs IGNmb3JtYXQsIGxvY2F0aW9uLAorCQkJCQkJCQllc2NvbnRleHQpOworCWlmIChTT0ZUX0VSUk9S X09DQ1VSUkVEKGVzY29udGV4dCkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBJZiB0aGUg dGFyZ2V0IGlzIGEgZml4ZWQtbGVuZ3RoIHR5cGUsIGl0IG1heSBuZWVkIGEgbGVuZ3RoIGNvZXJj aW9uIGFzCkBAIC0xNTgsNiArMTg2LDE4IEBAIE5vZGUgKgogY29lcmNlX3R5cGUoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJT2lkIGlucHV0VHlwZUlkLCBPaWQgdGFyZ2V0VHlw ZUlkLCBpbnQzMiB0YXJnZXRUeXBlTW9kLAogCQkJQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBD b2VyY2lvbkZvcm0gY2Zvcm1hdCwgaW50IGxvY2F0aW9uKQoreworCXJldHVybiBjb2VyY2VfdHlw ZV9leHRlbmQocHN0YXRlLCBub2RlLAorCQkJCQkJCSAgaW5wdXRUeXBlSWQsIHRhcmdldFR5cGVJ ZCwgdGFyZ2V0VHlwZU1vZCwKKwkJCQkJCQkgIGNjb250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbiwg TlVMTCk7Cit9CisKK05vZGUgKgorY29lcmNlX3R5cGVfZXh0ZW5kKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTm9kZSAqbm9kZSwKKwkJCQkgICBPaWQgaW5wdXRUeXBlSWQsIE9pZCB0YXJnZXRUeXBlSWQs IGludDMyIHRhcmdldFR5cGVNb2QsCisJCQkJICAgQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBD b2VyY2lvbkZvcm0gY2Zvcm1hdCwKKwkJCQkgICBpbnQgbG9jYXRpb24sCisJCQkJICAgTm9kZSAq ZXNjb250ZXh0KQogewogCU5vZGUJICAgKnJlc3VsdDsKIAlDb2VyY2lvblBhdGhUeXBlIHBhdGh0 eXBlOwpAQCAtMjU2LDYgKzI5Niw4IEBAIGNvZXJjZV90eXBlKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Tm9kZSAqbm9kZSwKIAkJaW50MzIJCWlucHV0VHlwZU1vZDsKIAkJVHlwZQkJYmFzZVR5cGU7CiAJ CVBhcnNlQ2FsbGJhY2tTdGF0ZSBwY2JzdGF0ZTsKKwkJY2hhcgkJKnN0cmluZzsKKwkJYm9vbAkJ Y29lcmNpb25fZmFpbGVkID0gZmFsc2U7CiAKIAkJLyoKIAkJICogSWYgdGhlIHRhcmdldCB0eXBl IGlzIGEgZG9tYWluLCB3ZSB3YW50IHRvIGNhbGwgaXRzIGJhc2UgdHlwZSdzCkBAIC0zMDgsMjEg KzM1MCwyNyBAQCBjb2VyY2VfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJ CSAqIFdlIGFzc3VtZSBoZXJlIHRoYXQgVU5LTk9XTidzIGludGVybmFsIHJlcHJlc2VudGF0aW9u IGlzIHRoZSBzYW1lCiAJCSAqIGFzIENTVFJJTkcuCiAJCSAqLwotCQlpZiAoIWNvbi0+Y29uc3Rp c251bGwpCi0JCQluZXdjb24tPmNvbnN0dmFsdWUgPSBzdHJpbmdUeXBlRGF0dW0oYmFzZVR5cGUs Ci0JCQkJCQkJCQkJCQkgRGF0dW1HZXRDU3RyaW5nKGNvbi0+Y29uc3R2YWx1ZSksCi0JCQkJCQkJ CQkJCQkgaW5wdXRUeXBlTW9kKTsKKwkJaWYgKGNvbi0+Y29uc3Rpc251bGwpCisJCQlzdHJpbmcg PSBOVUxMOwogCQllbHNlCi0JCQluZXdjb24tPmNvbnN0dmFsdWUgPSBzdHJpbmdUeXBlRGF0dW0o YmFzZVR5cGUsCi0JCQkJCQkJCQkJCQkgTlVMTCwKLQkJCQkJCQkJCQkJCSBpbnB1dFR5cGVNb2Qp OworCQkJc3RyaW5nID0gRGF0dW1HZXRDU3RyaW5nKGNvbi0+Y29uc3R2YWx1ZSk7CisKKwkJaWYg KCFzdHJpbmdUeXBlRGF0dW1TYWZlKGJhc2VUeXBlLAorCQkJCQkJCQkgc3RyaW5nLAorCQkJCQkJ CQkgaW5wdXRUeXBlTW9kLAorCQkJCQkJCQkgZXNjb250ZXh0LAorCQkJCQkJCQkgJm5ld2Nvbi0+ Y29uc3R2YWx1ZSkpCisJCXsKKwkJCWNvZXJjaW9uX2ZhaWxlZCA9IHRydWU7CisJCQluZXdjb24t PmNvbnN0aXNudWxsID0gdHJ1ZTsKKwkJfQogCiAJCS8qCiAJCSAqIElmIGl0J3MgYSB2YXJsZW5h IHZhbHVlLCBmb3JjZSBpdCB0byBiZSBpbiBub24tZXhwYW5kZWQKIAkJICogKG5vbi10b2FzdGVk KSBmb3JtYXQ7IHRoaXMgYXZvaWRzIGFueSBwb3NzaWJsZSBkZXBlbmRlbmN5IG9uCiAJCSAqIGV4 dGVybmFsIHZhbHVlcyBhbmQgaW1wcm92ZXMgY29uc2lzdGVuY3kgb2YgcmVwcmVzZW50YXRpb24u CiAJCSAqLwotCQlpZiAoIWNvbi0+Y29uc3Rpc251bGwgJiYgbmV3Y29uLT5jb25zdGxlbiA9PSAt MSkKKwkJaWYgKCFjb2VyY2lvbl9mYWlsZWQgJiYgIWNvbi0+Y29uc3Rpc251bGwgJiYgbmV3Y29u LT5jb25zdGxlbiA9PSAtMSkKIAkJCW5ld2Nvbi0+Y29uc3R2YWx1ZSA9CiAJCQkJUG9pbnRlckdl dERhdHVtKFBHX0RFVE9BU1RfREFUVU0obmV3Y29uLT5jb25zdHZhbHVlKSk7CiAKQEAgLTMzOSw3 ICszODcsNyBAQCBjb2VyY2VfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJ CSAqIGlkZW50aWNhbCBtYXkgbm90IGdldCByZWNvZ25pemVkIGFzIHN1Y2guICBTZWUgcGdzcWwt aGFja2VycwogCQkgKiBkaXNjdXNzaW9uIG9mIDIwMDgtMDQtMDQuCiAJCSAqLwotCQlpZiAoIWNv bi0+Y29uc3Rpc251bGwgJiYgIW5ld2Nvbi0+Y29uc3RieXZhbCkKKwkJaWYgKCFjb2VyY2lvbl9m YWlsZWQgJiYgIWNvbi0+Y29uc3Rpc251bGwgJiYgIW5ld2Nvbi0+Y29uc3RieXZhbCkKIAkJewog CQkJRGF0dW0JCXZhbDI7CiAKQEAgLTM1OCw4ICs0MDYsMTAgQEAgY29lcmNlX3R5cGUoUGFyc2VT dGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCiAJCXJlc3VsdCA9IChOb2RlICopIG5ld2NvbjsK IAotCQkvKiBJZiB0YXJnZXQgaXMgYSBkb21haW4sIGFwcGx5IGNvbnN0cmFpbnRzLiAqLwotCQlp ZiAoYmFzZVR5cGVJZCAhPSB0YXJnZXRUeXBlSWQpCisJCWlmIChjb2VyY2lvbl9mYWlsZWQpCisJ CQlyZXN1bHQgPSBOVUxMOworCQllbHNlIGlmIChiYXNlVHlwZUlkICE9IHRhcmdldFR5cGVJZCkK KwkJCS8qIElmIHRhcmdldCBpcyBhIGRvbWFpbiwgYXBwbHkgY29uc3RyYWludHMuICovCiAJCQly ZXN1bHQgPSBjb2VyY2VfdG9fZG9tYWluKHJlc3VsdCwKIAkJCQkJCQkJCSAgYmFzZVR5cGVJZCwg YmFzZVR5cGVNb2QsCiAJCQkJCQkJCQkgIHRhcmdldFR5cGVJZCwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhw ci5jCmluZGV4IDQ1MjRlNDljMzI2Li43ZDNlZDBlYjg5MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhw ci5jCkBAIC0xNyw2ICsxNyw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hZ2dyZWdhdGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X2Nhc3QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJtaXNjYWRt aW4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKQEAgLTM3LDYgKzM4LDcgQEAKICNp bmNsdWRlICJ1dGlscy9kYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNs dWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2lu Y2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgogI2luY2x1ZGUgInV0aWxzL3htbC5oIgogCkBAIC02 MCw3ICs2Miw4IEBAIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1NdWx0aUFzc2lnblJlZihQYXJzZVN0 YXRlICpwc3RhdGUsIE11bHRpQXNzaWduUmVmICptYXJlZik7CiBzdGF0aWMgTm9kZSAqdHJhbnNm b3JtQ2FzZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDYXNlRXhwciAqYyk7CiBzdGF0aWMgTm9k ZSAqdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUsIFN1YkxpbmsgKnN1Ymxpbmsp Owogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUFycmF5RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEFf QXJyYXlFeHByICphLAotCQkJCQkJCQlPaWQgYXJyYXlfdHlwZSwgT2lkIGVsZW1lbnRfdHlwZSwg aW50MzIgdHlwbW9kKTsKKwkJCQkJCQkJT2lkIGFycmF5X3R5cGUsIE9pZCBlbGVtZW50X3R5cGUs IGludDMyIHR5cG1vZCwKKwkJCQkJCQkJYm9vbCAqY2FuX2NvZXJjZSk7CiBzdGF0aWMgTm9kZSAq dHJhbnNmb3JtUm93RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIFJvd0V4cHIgKnIsIGJvb2wgYWxs b3dEZWZhdWx0KTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Db2FsZXNjZUV4cHIoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBDb2FsZXNjZUV4cHIgKmMpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybU1pbk1h eEV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBNaW5NYXhFeHByICptKTsKQEAgLTc2LDYgKzc5LDEw IEBAIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1XaG9sZVJvd1JlZihQYXJzZVN0YXRlICpwc3RhdGUs CiAJCQkJCQkJCSAgaW50IHN1YmxldmVsc191cCwgaW50IGxvY2F0aW9uKTsKIHN0YXRpYyBOb2Rl ICp0cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24g KmluZCk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtVHlwZUNhc3QoUGFyc2VTdGF0ZSAqcHN0YXRl LCBUeXBlQ2FzdCAqdGMpOworc3RhdGljIE5vZGUgKnRyYW5zZm9ybVR5cGVTYWZlQ2FzdChQYXJz ZVN0YXRlICpwc3RhdGUsIFNhZmVUeXBlQ2FzdCAqdGMpOworc3RhdGljIHZvaWQgQ29lcmNpb25F cnJvclNhZmVDaGVjayhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmNhc3RleHByLAorCQkJCQkJ CQkgICBOb2RlICpzb3VyY2VleHByLCBPaWQgaW5wdXRUeXBlLAorCQkJCQkJCQkgICBPaWQgdGFy Z2V0VHlwZSk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQ29sbGF0ZUNsYXVzZShQYXJzZVN0YXRl ICpwc3RhdGUsIENvbGxhdGVDbGF1c2UgKmMpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUpzb25P YmplY3RDb25zdHJ1Y3RvcihQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJCUpzb25PYmpl Y3RDb25zdHJ1Y3RvciAqY3Rvcik7CkBAIC0xNjQsMTMgKzE3MSwxNyBAQCB0cmFuc2Zvcm1FeHBy UmVjdXJzZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpCiAKIAkJY2FzZSBUX0FfQXJy YXlFeHByOgogCQkJcmVzdWx0ID0gdHJhbnNmb3JtQXJyYXlFeHByKHBzdGF0ZSwgKEFfQXJyYXlF eHByICopIGV4cHIsCi0JCQkJCQkJCQkJSW52YWxpZE9pZCwgSW52YWxpZE9pZCwgLTEpOworCQkJ CQkJCQkJCUludmFsaWRPaWQsIEludmFsaWRPaWQsIC0xLCBOVUxMKTsKIAkJCWJyZWFrOwogCiAJ CWNhc2UgVF9UeXBlQ2FzdDoKIAkJCXJlc3VsdCA9IHRyYW5zZm9ybVR5cGVDYXN0KHBzdGF0ZSwg KFR5cGVDYXN0ICopIGV4cHIpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdDoK KwkJCXJlc3VsdCA9IHRyYW5zZm9ybVR5cGVTYWZlQ2FzdChwc3RhdGUsIChTYWZlVHlwZUNhc3Qg KikgZXhwcik7CisJCQlicmVhazsKKwogCQljYXNlIFRfQ29sbGF0ZUNsYXVzZToKIAkJCXJlc3Vs dCA9IHRyYW5zZm9ybUNvbGxhdGVDbGF1c2UocHN0YXRlLCAoQ29sbGF0ZUNsYXVzZSAqKSBleHBy KTsKIAkJCWJyZWFrOwpAQCAtNTY0LDYgKzU3NSw3IEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJz ZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAkJY2FzZSBFWFBSX0tJTkRfVkFMVUVT X1NJTkdMRToKIAkJY2FzZSBFWFBSX0tJTkRfQ0hFQ0tfQ09OU1RSQUlOVDoKIAkJY2FzZSBFWFBS X0tJTkRfRE9NQUlOX0NIRUNLOgorCQljYXNlIEVYUFJfS0lORF9DQVNUX0RFRkFVTFQ6CiAJCWNh c2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0lOREVYX0VY UFJFU1NJT046CiAJCWNhc2UgRVhQUl9LSU5EX0lOREVYX1BSRURJQ0FURToKQEAgLTE4MjQsNiAr MTgzNiw5IEBAIHRyYW5zZm9ybVN1YkxpbmsoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTdWJMaW5rICpz dWJsaW5rKQogCQljYXNlIEVYUFJfS0lORF9ET01BSU5fQ0hFQ0s6CiAJCQllcnIgPSBfKCJjYW5u b3QgdXNlIHN1YnF1ZXJ5IGluIGNoZWNrIGNvbnN0cmFpbnQiKTsKIAkJCWJyZWFrOworCQljYXNl IEVYUFJfS0lORF9DQVNUX0RFRkFVTFQ6CisJCQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5 IGluIENBU1QgREVGQVVMVCBleHByZXNzaW9uIik7CisJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJ TkRfQ09MVU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CiAJ CQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIERFRkFVTFQgZXhwcmVzc2lvbiIpOwpA QCAtMjAxMSwxNyArMjAyNiwyNCBAQCB0cmFuc2Zvcm1TdWJMaW5rKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgU3ViTGluayAqc3VibGluaykKICAqIElmIHRoZSBjYWxsZXIgc3BlY2lmaWVzIHRoZSB0YXJn ZXQgdHlwZSwgdGhlIHJlc3VsdGluZyBhcnJheSB3aWxsCiAgKiBiZSBvZiBleGFjdGx5IHRoYXQg dHlwZS4gIE90aGVyd2lzZSB3ZSB0cnkgdG8gaW5mZXIgYSBjb21tb24gdHlwZQogICogZm9yIHRo ZSBlbGVtZW50cyB1c2luZyBzZWxlY3RfY29tbW9uX3R5cGUoKS4KKyAqCisgKiBNb3N0IG9mIHRo ZSB0aW1lLCBjYW5fY29lcmNlIHdpbGwgYmUgTlVMTC4gIEl0IGlzIG5vdCBOVUxMIG9ubHkgd2hl bgorICogcGVyZm9ybWluZyBwYXJzZSBhbmFseXNpcyBmb3IgQ0FTVChERUZBVUxUIC4uLiBPTiBD T05WRVJTSU9OIEVSUk9SKQorICogZXhwcmVzc2lvbi4gSXQncyBkZWZhdWx0IHRvIHRydWUuIElm IGNvZXJjaW5nIGFycmF5IGVsZW1lbnRzIGZhaWxzLCBpdCB3aWxsCisgKiBiZSBzZXQgdG8gZmFs c2UuCiAgKi8KIHN0YXRpYyBOb2RlICoKIHRyYW5zZm9ybUFycmF5RXhwcihQYXJzZVN0YXRlICpw c3RhdGUsIEFfQXJyYXlFeHByICphLAotCQkJCSAgIE9pZCBhcnJheV90eXBlLCBPaWQgZWxlbWVu dF90eXBlLCBpbnQzMiB0eXBtb2QpCisJCQkJICAgT2lkIGFycmF5X3R5cGUsIE9pZCBlbGVtZW50 X3R5cGUsIGludDMyIHR5cG1vZCwgYm9vbCAqY2FuX2NvZXJjZSkKIHsKIAlBcnJheUV4cHIgICpu ZXdhID0gbWFrZU5vZGUoQXJyYXlFeHByKTsKIAlMaXN0CSAgICpuZXdlbGVtcyA9IE5JTDsKIAlM aXN0CSAgICpuZXdjb2VyY2VkZWxlbXMgPSBOSUw7CiAJTGlzdENlbGwgICAqZWxlbWVudDsKIAlP aWQJCQljb2VyY2VfdHlwZTsKKwlPaWQJCQljb2VyY2VfdHlwZV9jb2xsOwogCWJvb2wJCWNvZXJj ZV9oYXJkOworCUVycm9yU2F2ZUNvbnRleHQgZXNjb250ZXh0ID0ge1RfRXJyb3JTYXZlQ29udGV4 dH07CiAKIAkvKgogCSAqIFRyYW5zZm9ybSB0aGUgZWxlbWVudCBleHByZXNzaW9ucwpAQCAtMjA0 NSw5ICsyMDY3LDEwIEBAIHRyYW5zZm9ybUFycmF5RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEFf QXJyYXlFeHByICphLAogCQkJCQkJCQkJICAoQV9BcnJheUV4cHIgKikgZSwKIAkJCQkJCQkJCSAg YXJyYXlfdHlwZSwKIAkJCQkJCQkJCSAgZWxlbWVudF90eXBlLAotCQkJCQkJCQkJICB0eXBtb2Qp OworCQkJCQkJCQkJICB0eXBtb2QsCisJCQkJCQkJCQkgIGNhbl9jb2VyY2UpOwogCQkJLyogd2Ug Y2VydGFpbmx5IGhhdmUgYW4gYXJyYXkgaGVyZSAqLwotCQkJQXNzZXJ0KGFycmF5X3R5cGUgPT0g SW52YWxpZE9pZCB8fCBhcnJheV90eXBlID09IGV4cHJUeXBlKG5ld2UpKTsKKwkJCUFzc2VydChj YW5fY29lcmNlIHx8IGFycmF5X3R5cGUgPT0gSW52YWxpZE9pZCB8fCBhcnJheV90eXBlID09IGV4 cHJUeXBlKG5ld2UpKTsKIAkJCW5ld2EtPm11bHRpZGltcyA9IHRydWU7CiAJCX0KIAkJZWxzZQpA QCAtMjA4OCw2ICsyMTExLDkgQEAgdHJhbnNmb3JtQXJyYXlFeHByKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQV9BcnJheUV4cHIgKmEsCiAJfQogCWVsc2UKIAl7CisJCS8qIFRhcmdldCB0eXBlIG11c3Qg dmFsaWQgZm9yIENBU1QgREVGQVVMVCAqLworCQlBc3NlcnQoY2FuX2NvZXJjZSA9PSBOVUxMKTsK KwogCQkvKiBDYW4ndCBoYW5kbGUgYW4gZW1wdHkgYXJyYXkgd2l0aG91dCBhIHRhcmdldCB0eXBl ICovCiAJCWlmIChuZXdlbGVtcyA9PSBOSUwpCiAJCQllcmVwb3J0KEVSUk9SLApAQCAtMjEyNSw2 ICsyMTUxLDggQEAgdHJhbnNmb3JtQXJyYXlFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9BcnJh eUV4cHIgKmEsCiAJCWNvZXJjZV9oYXJkID0gZmFsc2U7CiAJfQogCisJY29lcmNlX3R5cGVfY29s bCA9IGdldF90eXBjb2xsYXRpb24oY29lcmNlX3R5cGUpOworCiAJLyoKIAkgKiBDb2VyY2UgZWxl bWVudHMgdG8gdGFyZ2V0IHR5cGUKIAkgKgpAQCAtMjEzNCwyOCArMjE2Miw4MiBAQCB0cmFuc2Zv cm1BcnJheUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0FycmF5RXhwciAqYSwKIAkgKiBJZiB0 aGUgYXJyYXkncyB0eXBlIHdhcyBtZXJlbHkgZGVyaXZlZCBmcm9tIHRoZSBjb21tb24gdHlwZSBv ZiBpdHMKIAkgKiBlbGVtZW50cywgdGhlbiB0aGUgZWxlbWVudHMgYXJlIGltcGxpY2l0bHkgY29l cmNlZCB0byB0aGUgY29tbW9uIHR5cGUuCiAJICogVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggb3Ro ZXIgdXNlcyBvZiBzZWxlY3RfY29tbW9uX3R5cGUoKS4KKwkgKgorCSAqIElmIGNhbl9jb2VyY2Ug aXMgbm90IE5VTEwsIHdlIG5lZWQgdG8gc2FmZWx5IHRlc3Qgd2hldGhlciBlYWNoIGVsZW1lbnQK KwkgKiBjYW4gYmUgY29lcmNlZCB0byB0aGUgdGFyZ2V0IHR5cGUsIHNpbWlsYXIgdG8gd2hhdCBp cyBkb25lIGluCisJICogdHJhbnNmb3JtVHlwZVNhZmVDYXN0LgogCSAqLwogCWZvcmVhY2goZWxl bWVudCwgbmV3ZWxlbXMpCiAJewogCQlOb2RlCSAgICplID0gKE5vZGUgKikgbGZpcnN0KGVsZW1l bnQpOwotCQlOb2RlCSAgICpuZXdlOworCQlOb2RlCSAgICpuZXdlID0gTlVMTDsKIAogCQlpZiAo Y29lcmNlX2hhcmQpCiAJCXsKLQkJCW5ld2UgPSBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUocHN0YXRl LCBlLAotCQkJCQkJCQkJCSBleHByVHlwZShlKSwKLQkJCQkJCQkJCQkgY29lcmNlX3R5cGUsCi0J CQkJCQkJCQkJIHR5cG1vZCwKLQkJCQkJCQkJCQkgQ09FUkNJT05fRVhQTElDSVQsCi0JCQkJCQkJ CQkJIENPRVJDRV9FWFBMSUNJVF9DQVNULAotCQkJCQkJCQkJCSAtMSk7Ci0JCQlpZiAobmV3ZSA9 PSBOVUxMKQotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX0NBTk5P VF9DT0VSQ0UpLAotCQkJCQkJIGVycm1zZygiY2Fubm90IGNhc3QgdHlwZSAlcyB0byAlcyIsCi0J CQkJCQkJCWZvcm1hdF90eXBlX2JlKGV4cHJUeXBlKGUpKSwKLQkJCQkJCQkJZm9ybWF0X3R5cGVf YmUoY29lcmNlX3R5cGUpKSwKLQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHBy TG9jYXRpb24oZSkpKSk7CisJCQkvKgorCQkJICogQ2FuIG5vdCBjb2VyY2UsIGp1c3QgYXBwZW5k IHRoZSB0cmFuc2Zvcm1lZCBlbGVtZW50IGV4cHJlc3Npb24gdG8KKwkJCSAqIHRoZSBsaXN0Lgor CQkJICovCisJCQlpZiAoY2FuX2NvZXJjZSAmJiAoISpjYW5fY29lcmNlKSkKKwkJCQluZXdlID0g ZTsKKwkJCWVsc2UKKwkJCXsKKwkJCQlOb2RlCSAgICplY29weSA9IE5VTEw7CisKKwkJCQlpZiAo Y2FuX2NvZXJjZSkKKwkJCQkJZWNvcHkgPSBjb3B5T2JqZWN0KGUpOworCisJCQkJbmV3ZSA9IGNv ZXJjZV90b190YXJnZXRfdHlwZV9leHRlbmRlZChwc3RhdGUsIGUsCisJCQkJCQkJCQkJCQkJICBl eHByVHlwZShlKSwKKwkJCQkJCQkJCQkJCQkgIGNvZXJjZV90eXBlLAorCQkJCQkJCQkJCQkJCSAg dHlwbW9kLAorCQkJCQkJCQkJCQkJCSAgQ09FUkNJT05fRVhQTElDSVQsCisJCQkJCQkJCQkJCQkJ ICBDT0VSQ0VfRVhQTElDSVRfQ0FTVCwKKwkJCQkJCQkJCQkJCQkgIC0xLAorCQkJCQkJCQkJCQkJ CSAgKE5vZGUgKikgJmVzY29udGV4dCk7CisJCQkJaWYgKG5ld2UgPT0gTlVMTCkKKwkJCQl7CisJ CQkJCWlmICghY2FuX2NvZXJjZSkKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJj b2RlKEVSUkNPREVfQ0FOTk9UX0NPRVJDRSksCisJCQkJCQkJCWVycm1zZygiY2Fubm90IGNhc3Qg dHlwZSAlcyB0byAlcyIsCisJCQkJCQkJCQkgICBmb3JtYXRfdHlwZV9iZShleHByVHlwZShlKSks CisJCQkJCQkJCQkgICBmb3JtYXRfdHlwZV9iZShjb2VyY2VfdHlwZSkpLAorCQkJCQkJCQlwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oZSkpKSk7CisJCQkJCWVsc2UKKwkJ CQkJeworCQkJCQkJLyoKKwkJCQkJCSAqIENhbiBub3QgY29lcmNlLCBqdXN0IGFwcGVuZCB0aGUg dHJhbnNmb3JtZWQgZWxlbWVudAorCQkJCQkJICogZXhwcmVzc2lvbiB0byB0aGUgbGlzdC4KKwkJ CQkJCSAqLworCQkJCQkJbmV3ZSA9IGVjb3B5OworCQkJCQkJKmNhbl9jb2VyY2UgPSBmYWxzZTsK KwkJCQkJfQorCQkJCX0KKwkJCQllbHNlIGlmIChjYW5fY29lcmNlICYmIElzQShlY29weSwgQ29u c3QpICYmIElzQShuZXdlLCBGdW5jRXhwcikpCisJCQkJeworCQkJCQlOb2RlCSAgICpyZXN1bHQ7 CisKKwkJCQkJLyoKKwkJCQkJICogcHJlLWV2YWx1YXRlIHNpbXBsZSBjb25zdGFudCBjYXN0IGV4 cHJlc3Npb25zIGluIGEgd2F5CisJCQkJCSAqIHRoYXQgdG9sZXJhdGUgZXJyb3JzLgorCQkJCQkg Ki8KKwkJCQkJRnVuY0V4cHIgKm5ld2V4cHIgPSAoRnVuY0V4cHIgKikgY29weU9iamVjdChuZXdl KTsKKworCQkJCQlhc3NpZ25fZXhwcl9jb2xsYXRpb25zKHBzdGF0ZSwgKE5vZGUgKikgbmV3ZXhw cik7CisKKwkJCQkJcmVzdWx0ID0gKE5vZGUgKikgZXZhbHVhdGVfZXhwcigoRXhwciAqKSBuZXdl eHByLAorCQkJCQkJCQkJCQkJCWNvZXJjZV90eXBlLAorCQkJCQkJCQkJCQkJCXR5cG1vZCwKKwkJ CQkJCQkJCQkJCQljb2VyY2VfdHlwZV9jb2xsLAorCQkJCQkJCQkJCQkJCXRydWUpOworCQkJCQlp ZiAocmVzdWx0ID09IE5VTEwpCisJCQkJCXsKKwkJCQkJCW5ld2UgPSBlY29weTsKKwkJCQkJCSpj YW5fY29lcmNlID0gZmFsc2U7CisJCQkJCX0KKwkJCQl9CisJCQl9CiAJCX0KIAkJZWxzZQogCQkJ bmV3ZSA9IGNvZXJjZV90b19jb21tb25fdHlwZShwc3RhdGUsIGUsCkBAIC0yNzQzLDcgKzI4MjUs OCBAQCB0cmFuc2Zvcm1UeXBlQ2FzdChQYXJzZVN0YXRlICpwc3RhdGUsIFR5cGVDYXN0ICp0YykK IAkJCQkJCQkJCSAgKEFfQXJyYXlFeHByICopIGFyZywKIAkJCQkJCQkJCSAgdGFyZ2V0QmFzZVR5 cGUsCiAJCQkJCQkJCQkgIGVsZW1lbnRUeXBlLAotCQkJCQkJCQkJICB0YXJnZXRCYXNlVHlwbW9k KTsKKwkJCQkJCQkJCSAgdGFyZ2V0QmFzZVR5cG1vZCwKKwkJCQkJCQkJCSAgTlVMTCk7CiAJCX0K IAkJZWxzZQogCQkJZXhwciA9IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwgYXJnKTsKQEAg LTI3ODAsNiArMjg2MywyOTEgQEAgdHJhbnNmb3JtVHlwZUNhc3QoUGFyc2VTdGF0ZSAqcHN0YXRl LCBUeXBlQ2FzdCAqdGMpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIEhhbmRsZSBhbiBl eHBsaWNpdCBDQVNUKC4uLiBERUZBVUxUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SKSBjb25zdHJ1 Y3QuCisgKgorICogVHJhbnNmb3JtIFNhZmVUeXBlQ2FzdCBub2RlLCBsb29rIHVwIHRoZSB0eXBl IG5hbWUsIGFuZCBhcHBseSBhbnkgbmVjZXNzYXJ5CisgKiBjb2VyY2lvbiBmdW5jdGlvbihzKS4K KyAqLworc3RhdGljIE5vZGUgKgordHJhbnNmb3JtVHlwZVNhZmVDYXN0KFBhcnNlU3RhdGUgKnBz dGF0ZSwgU2FmZVR5cGVDYXN0ICp0YykKK3sKKwlTYWZlVHlwZUNhc3RFeHByICAgKnJlc3VsdDsK KwlUeXBlQ2FzdCAgICp0Y2FzdCA9IChUeXBlQ2FzdCAqKSB0Yy0+Y2FzdDsKKwlOb2RlCSAgICpz b3VyY2VfZXhwcjsKKwlOb2RlCSAgICpzcmNleHByOworCU5vZGUJICAgKmRlZmV4cHI7CisJTm9k ZQkgICAqY2FzdF9leHByID0gTlVMTDsKKwlPaWQJCQlpbnB1dFR5cGU7CisJT2lkCQkJdGFyZ2V0 VHlwZTsKKwlpbnQzMgkJdGFyZ2V0VHlwbW9kOworCU9pZAkJCXRhcmdldFR5cGVjb2xsOworCU9p ZAkJCXRhcmdldEJhc2VUeXBlOworCWludDMyCQl0YXJnZXRCYXNlVHlwbW9kOworCWJvb2wJCWNh bl9jb2VyY2UgPSB0cnVlOworCisJLyogTG9vayB1cCB0aGUgdHlwZSBuYW1lIGZpcnN0ICovCisJ dHlwZW5hbWVUeXBlSWRBbmRNb2QocHN0YXRlLCB0Y2FzdC0+dHlwZU5hbWUsICZ0YXJnZXRUeXBl LCAmdGFyZ2V0VHlwbW9kKTsKKwl0YXJnZXRCYXNlVHlwbW9kID0gdGFyZ2V0VHlwbW9kOworCisJ dGFyZ2V0VHlwZWNvbGwgPSBnZXRfdHlwY29sbGF0aW9uKHRhcmdldFR5cGUpOworCisJdGFyZ2V0 QmFzZVR5cGUgPSBnZXRCYXNlVHlwZUFuZFR5cG1vZCh0YXJnZXRUeXBlLCAmdGFyZ2V0QmFzZVR5 cG1vZCk7CisKKwkvKiBub3cgbG9va2luZyBhdCBERUZBVUxUIGV4cHJlc3Npb24gKi8KKwlkZWZl eHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIHRjLT5yYXdfZGVmYXVsdCwgRVhQUl9LSU5EX0NB U1RfREVGQVVMVCk7CisKKwlkZWZleHByID0gY29lcmNlX3RvX3RhcmdldF90eXBlKHBzdGF0ZSwg ZGVmZXhwciwgZXhwclR5cGUoZGVmZXhwciksCisJCQkJCQkJCQl0YXJnZXRUeXBlLCB0YXJnZXRU eXBtb2QsCisJCQkJCQkJCQlDT0VSQ0lPTl9FWFBMSUNJVCwKKwkJCQkJCQkJCUNPRVJDRV9FWFBM SUNJVF9DQVNULAorCQkJCQkJCQkJZXhwckxvY2F0aW9uKGRlZmV4cHIpKTsKKwlpZiAoZGVmZXhw ciA9PSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9DQU5OT1Rf Q09FUkNFKSwKKwkJCQllcnJtc2coImNhbm5vdCBjb2VyY2UgJXMgZXhwcmVzc2lvbiB0byB0eXBl ICVzIiwKKwkJCQkJICAgIkNBU1QgREVGQVVMVCIsCisJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHRh cmdldFR5cGUpKSwKKwkJCQlwYXJzZXJfY29lcmNpb25fZXJycG9zaXRpb24ocHN0YXRlLCBleHBy TG9jYXRpb24odGMtPnJhd19kZWZhdWx0KSwgZGVmZXhwcikpOworCisJYXNzaWduX2V4cHJfY29s bGF0aW9ucyhwc3RhdGUsIGRlZmV4cHIpOworCisJLyoKKwkgKiBUaGUgY29sbGF0aW9uIG9mIERF RkFVTFQgZXhwcmVzc2lvbiBtdXN0IG1hdGNoIHRoZSBjb2xsYXRpb24gb2YgdGhlCisJICogdGFy Z2V0IHR5cGUuCisJICovCisJaWYgKE9pZElzVmFsaWQodGFyZ2V0VHlwZWNvbGwpKQorCXsKKwkJ T2lkCQlkZWZDb2xsID0gZXhwckNvbGxhdGlvbihkZWZleHByKTsKKworCQlpZiAoT2lkSXNWYWxp ZChkZWZDb2xsKSAmJiB0YXJnZXRUeXBlY29sbCAhPSBkZWZDb2xsKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJZXJybXNn KCJ0aGUgY29sbGF0aW9uIG9mIENBU1QgREVGQVVMVCBleHByZXNzaW9uIGNvbmZsaWN0cyB3aXRo IHRhcmdldCB0eXBlIGNvbGxhdGlvbiIpLAorCQkJCQllcnJkZXRhaWwoIlwiJXNcIiB2ZXJzdXMg XCIlc1wiIiwKKwkJCQkJCQkgIGdldF9jb2xsYXRpb25fbmFtZSh0YXJnZXRUeXBlY29sbCksCisJ CQkJCQkJICBnZXRfY29sbGF0aW9uX25hbWUoZGVmQ29sbCkpLAorCQkJCQlwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oZGVmZXhwcikpKTsKKwl9CisKKwkvKgorCSAqIElm IHRoZSB0eXBlIGNhc3QgdGFyZ2V0IHR5cGUgaXMgYW4gYXJyYXkgdHlwZSwgd2UgaW52b2tlCisJ ICogdHJhbnNmb3JtQXJyYXlFeHByKCkgZGlyZWN0bHkgc28gdGhhdCB3ZSBjYW4gcGFzcyBkb3du IHRoZSB0eXBlCisJICogaW5mb3JtYXRpb24uICBUaGlzIGF2b2lkcyBzb21lIGNhc2VzIHdoZXJl IHRyYW5zZm9ybUFycmF5RXhwcigpIG1pZ2h0IG5vdAorCSAqIGluZmVyIHRoZSBjb3JyZWN0IHR5 cGUuICBPdGhlcndpc2UsIGp1c3QgdHJhbnNmb3JtIHRoZSBhcmd1bWVudCBub3JtYWxseS4KKwkg Ki8KKwlpZiAoSXNBKHRjYXN0LT5hcmcsIEFfQXJyYXlFeHByKSkKKwl7CisJCU9pZAkJCWVsZW1l bnRUeXBlOworCisJCS8qCisJCSAqIElmIHRhcmdldCBpcyBhIGRvbWFpbiBvdmVyIGFycmF5LCB3 b3JrIHdpdGggdGhlIGJhc2UgYXJyYXkgdHlwZQorCQkgKiBoZXJlLiAgQmVsb3csIHdlJ2xsIGNh c3QgdGhlIGFycmF5IHR5cGUgdG8gdGhlIGRvbWFpbi4gIEluIHRoZQorCQkgKiB1c3VhbCBjYXNl IHRoYXQgdGhlIHRhcmdldCBpcyBub3QgYSBkb21haW4sIHRoZSByZW1haW5pbmcgc3RlcHMKKwkJ ICogd2lsbCBiZSBhIG5vLW9wLgorCQkgKi8KKwkJZWxlbWVudFR5cGUgPSBnZXRfZWxlbWVudF90 eXBlKHRhcmdldEJhc2VUeXBlKTsKKworCQlpZiAoT2lkSXNWYWxpZChlbGVtZW50VHlwZSkpCisJ CXsKKwkJCXNvdXJjZV9leHByID0gdHJhbnNmb3JtQXJyYXlFeHByKHBzdGF0ZSwKKwkJCQkJCQkJ CQkJIChBX0FycmF5RXhwciAqKSB0Y2FzdC0+YXJnLAorCQkJCQkJCQkJCQkgdGFyZ2V0QmFzZVR5 cGUsCisJCQkJCQkJCQkJCSBlbGVtZW50VHlwZSwKKwkJCQkJCQkJCQkJIHRhcmdldEJhc2VUeXBt b2QsCisJCQkJCQkJCQkJCSAmY2FuX2NvZXJjZSk7CisJCX0KKwkJZWxzZQorCQkJc291cmNlX2V4 cHIgPSB0cmFuc2Zvcm1FeHByUmVjdXJzZShwc3RhdGUsIHRjYXN0LT5hcmcpOworCX0KKwllbHNl CisJCXNvdXJjZV9leHByID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCB0Y2FzdC0+YXJn KTsKKworCS8qCisJICogU2luY2Ugd2UgY2FuJ3QgYmUgY2VydGFpbiB0aGF0IGNvZXJjZV90b190 YXJnZXRfdHlwZV9leHRlbmRlZCB3b24ndAorCSAqIG1vZGlmeSB0aGUgc291cmNlIGV4cHJlc3Np b24sIHdlIGNyZWF0ZSBhIGNvcHkgb2YgaXQgZmlyc3QuIFRoaXMgZW5zdXJlcworCSAqIHRoZSB0 cmFuc2Zvcm1lZCBzb3VyY2UgZXhwcmVzc2lvbiBpcyBjb3JyZWN0bHkgcGFzc2VkIHRvIFNhZmVU eXBlQ2FzdEV4cHIKKwkgKi8KKwlzcmNleHByID0gY29weU9iamVjdChzb3VyY2VfZXhwcik7CisK KwlpbnB1dFR5cGUgPSBleHByVHlwZShzb3VyY2VfZXhwcik7CisJaWYgKGlucHV0VHlwZSA9PSBJ bnZhbGlkT2lkKQorCQlyZXR1cm4gKE5vZGUgKikgTlVMTDsJCQkvKiByZXR1cm4gTlVMTCBpZiBO VUxMIGlucHV0ICovCisKKwlpZiAoY2FuX2NvZXJjZSkKKwl7CisJCUVycm9yU2F2ZUNvbnRleHQg ZXNjb250ZXh0ID0ge1RfRXJyb3JTYXZlQ29udGV4dH07CisKKwkJY2FzdF9leHByID0gY29lcmNl X3RvX3RhcmdldF90eXBlX2V4dGVuZGVkKHBzdGF0ZSwgc291cmNlX2V4cHIsIGlucHV0VHlwZSwK KwkJCQkJCQkJCQkJCSAgIHRhcmdldFR5cGUsIHRhcmdldFR5cG1vZCwKKwkJCQkJCQkJCQkJCSAg IENPRVJDSU9OX0VYUExJQ0lULAorCQkJCQkJCQkJCQkJICAgQ09FUkNFX0VYUExJQ0lUX0NBU1Qs CisJCQkJCQkJCQkJCQkgICB0Y2FzdC0+bG9jYXRpb24sCisJCQkJCQkJCQkJCQkgICAoTm9kZSAq KSAmZXNjb250ZXh0KTsKKwkJaWYgKGNhc3RfZXhwciA9PSBOVUxMKQorCQkJY2FuX2NvZXJjZSA9 IGZhbHNlOworCisJCUNvZXJjaW9uRXJyb3JTYWZlQ2hlY2socHN0YXRlLCBjYXN0X2V4cHIsIHNv dXJjZV9leHByLCBpbnB1dFR5cGUsCisJCQkJCQkJICAgdGFyZ2V0VHlwZSk7CisJfQorCisJaWYg KElzQShzcmNleHByLCBDb25zdCkgJiYgY2FzdF9leHByICYmIElzQShjYXN0X2V4cHIsIEZ1bmNF eHByKSkKKwl7CisJCU5vZGUJICAgKnJlc3VsdDsKKworCQkvKgorCQkgKiBwcmUtZXZhbHVhdGUg c2ltcGxlIGNvbnN0YW50IGNhc3QgZXhwcmVzc2lvbnMgaW4gYSBlcnJvciBzYWZlIHdheQorCQkg KgorCQkgKiBSYXRpb25hbGU6CisJCSAqIDEuIFdoZW4gZGVwYXJzaW5nIHNhZmUgY2FzdCBleHBy ZXNzaW9ucyAob3IgaW4gb3RoZXIgY2FzZXMpLAorCQkgKiAgICBldmFsX2NvbnN0X2V4cHJlc3Np b25zIG1pZ2h0IGJlIGludm9rZWQsIGJ1dCBpdCBjYW5ub3QKKwkJICogICAgaGFuZGxlIGVycm9y cyBncmFjZWZ1bGx5LgorCQkgKiAyLiBJZiB0aGUgY2FzdCBleHByZXNzaW9uIGludm9sdmVzIG9u bHkgc2ltcGxlIGNvbnN0YW50cywgd2UKKwkJICogICAgY2FuIHNhZmVseSBldmFsdWF0ZSBpdCBh aGVhZCBvZiB0aW1lLiBJZiB0aGUgZXZhbHVhdGlvbgorCQkgKiAgICBmYWlscywgaXQgaW5kaWNh dGVzIHRoYXQgc3VjaCBhIGNhc3QgaXMgbm90IHBvc3NpYmxlLCBhbmQKKwkJICogICAgd2UgY2Fu IHRoZW4gZmFsbCBiYWNrIHRvIHRoZSBDQVNUIERFRkFVTFQgZXhwcmVzc2lvbi4KKwkJICogMy4g RXZlbiBpZiBGdW5jRXhwciAoZm9yIGNhc3RmdW5jKSBub2RlIGhhcyB0aHJlZSBhcmd1bWVudHMs CisJCSAqICAgIHRoZSBzZWNvbmQgYW5kIHRoaXJkIGFyZ3VtZW50cyB3aWxsIGFsc28gYmUgY29u c3RhbnRzIHBlcgorCQkgKiAgICBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUuIEV2YWx1YXRpbmcgYSBG dW5jRXhwciB3aG9zZQorCQkgKiAgICBhcmd1bWVudHMgYXJlIGFsbCBDb25zdCBpcyBzYWZlLgor CQkgKi8KKwkJRnVuY0V4cHIgKm5ld2V4cHIgPSAoRnVuY0V4cHIgKikgY29weU9iamVjdChjYXN0 X2V4cHIpOworCisJCWFzc2lnbl9leHByX2NvbGxhdGlvbnMocHN0YXRlLCAoTm9kZSAqKSBuZXdl eHByKTsKKworCQlyZXN1bHQgPSAoTm9kZSAqKSBldmFsdWF0ZV9leHByKChFeHByICopIG5ld2V4 cHIsCisJCQkJCQkJCQkJdGFyZ2V0VHlwZSwKKwkJCQkJCQkJCQl0YXJnZXRUeXBtb2QsCisJCQkJ CQkJCQkJdGFyZ2V0VHlwZWNvbGwsCisJCQkJCQkJCQkJdHJ1ZSk7CisJCWlmIChyZXN1bHQgPT0g TlVMTCkKKwkJeworCQkJLyogY2FuIG5vdCBjb2VyY2UsIHNldCBjYW5fY29lcmNlIHRvIGZhbHNl ICovCisJCQljYW5fY29lcmNlID0gZmFsc2U7CisJCQljYXN0X2V4cHIgPSBOVUxMOworCQl9CisJ fQorCisJQXNzZXJ0KGNhbl9jb2VyY2UgfHwgY2FzdF9leHByID09IE5VTEwpOworCisJcmVzdWx0 ID0gbWFrZU5vZGUoU2FmZVR5cGVDYXN0RXhwcik7CisJcmVzdWx0LT5zb3VyY2VfZXhwciA9IHNy Y2V4cHI7CisJcmVzdWx0LT5jYXN0X2V4cHIgPSBjYXN0X2V4cHI7CisJcmVzdWx0LT5kZWZhdWx0 X2V4cHIgPSBkZWZleHByOworCXJlc3VsdC0+cmVzdWx0dHlwZSA9IHRhcmdldFR5cGU7CisJcmVz dWx0LT5yZXN1bHR0eXBtb2QgPSB0YXJnZXRUeXBtb2Q7CisJcmVzdWx0LT5yZXN1bHRjb2xsaWQg PSB0YXJnZXRUeXBlY29sbDsKKwlyZXN1bHQtPmxvY2F0aW9uID0gdGNhc3QtPmxvY2F0aW9uOwor CisJcmV0dXJuIChOb2RlICopIHJlc3VsdDsKK30KKworLyoKKyAqIENoZWNrIGNvZXJjaW9uIGlz IGVycm9yIHNhZmUgb3Igbm90LiAgSWYgbm90IHRoZW4gcmVwb3J0IGVycm9yCisgKi8KK3N0YXRp YyB2b2lkCitDb2VyY2lvbkVycm9yU2FmZUNoZWNrKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAq Y2FzdGV4cHIsIE5vZGUgKnNvdXJjZWV4cHIsIE9pZCBpbnB1dFR5cGUsCisJCQkJCSAgIE9pZCB0 YXJnZXRUeXBlKQoreworCUhlYXBUdXBsZQl0dXBsZTsKKwlib29sIAllcnJvcnNhZmUgPSB0cnVl OworCWJvb2wJdXNlcmRlZmluZWQgPSBmYWxzZTsKKwlPaWQJCWlucHV0QmFzZVR5cGU7CisJT2lk CQl0YXJnZXRCYXNlVHlwZTsKKwlPaWQgCWlucHV0RWxlbWVudFR5cGU7CisJT2lkCQlpbnB1dEVs ZW1lbnRCYXNlVHlwZTsKKwlPaWQgCXRhcmdldEVsZW1lbnRUeXBlOworCU9pZAkJdGFyZ2V0RWxl bWVudEJhc2VUeXBlOworCisJLyoKKwkgKiBCaW5hcnkgY29lcmNpb24gY2FzdCBpcyBlcXVpdmFs ZW50IHRvIG5vIGNhc3QgYXQgYWxsLiAgQ29lcmNlVmlhSU8gY2FuCisJICogYWxzbyBiZSBldmFs dWF0ZWQgaW4gYW4gZXJyb3Itc2FmZSBtYW5uZXIuIFNvIHNraXAgdGhlc2UgdHdvIGNhc2VzLgor CSAqLworCWlmICghY2FzdGV4cHIgfHwgSXNBKGNhc3RleHByLCBSZWxhYmVsVHlwZSkgfHwKKwkJ SXNBKGNhc3RleHByLCBDb2VyY2VWaWFJTykpCisJCXJldHVybjsKKworCS8qCisJICogVHlwZSBj YXN0IGludm9sdmluZyB3aXRoIHNvbWUgdHlwZXMgaXMgbm90IGVycm9yIHNhZmUsIGRvIHRoZSBj aGVjayBub3cuCisJICogV2UgbmVlZCBjb25zaWRlciBkb21haW4gb3ZlciBhcnJheSBhbmQgYXJy YXkgb3ZlciBkb21haW4gc2NhcmVuaW8uIFdlCisJICogYWxyZWFkeSBjaGVja2VkIHVzZXItZGVm aW5lZCB0eXBlIGNhc3QgYWJvdmUuCisJICovCisJaW5wdXRFbGVtZW50VHlwZSA9IGdldF9lbGVt ZW50X3R5cGUoaW5wdXRUeXBlKTsKKworCWlmIChPaWRJc1ZhbGlkKGlucHV0RWxlbWVudFR5cGUp KQorCQlpbnB1dEVsZW1lbnRCYXNlVHlwZSA9IGdldEJhc2VUeXBlKGlucHV0RWxlbWVudFR5cGUp OworCWVsc2UKKwl7CisJCWlucHV0QmFzZVR5cGUgPSBnZXRCYXNlVHlwZShpbnB1dFR5cGUpOwor CisJCWlucHV0RWxlbWVudEJhc2VUeXBlID0gZ2V0X2VsZW1lbnRfdHlwZShpbnB1dEJhc2VUeXBl KTsKKwkJaWYgKCFPaWRJc1ZhbGlkKGlucHV0RWxlbWVudEJhc2VUeXBlKSkKKwkJCWlucHV0RWxl bWVudEJhc2VUeXBlID0gaW5wdXRCYXNlVHlwZTsKKwl9CisKKwl0YXJnZXRFbGVtZW50VHlwZSA9 IGdldF9lbGVtZW50X3R5cGUodGFyZ2V0VHlwZSk7CisKKwlpZiAoT2lkSXNWYWxpZCh0YXJnZXRF bGVtZW50VHlwZSkpCisJCXRhcmdldEVsZW1lbnRCYXNlVHlwZSA9IGdldEJhc2VUeXBlKHRhcmdl dEVsZW1lbnRUeXBlKTsKKwllbHNlCisJeworCQl0YXJnZXRCYXNlVHlwZSA9IGdldEJhc2VUeXBl KHRhcmdldFR5cGUpOworCisJCXRhcmdldEVsZW1lbnRCYXNlVHlwZSA9IGdldF9lbGVtZW50X3R5 cGUodGFyZ2V0QmFzZVR5cGUpOworCQlpZiAoIU9pZElzVmFsaWQodGFyZ2V0RWxlbWVudEJhc2VU eXBlKSkKKwkJCXRhcmdldEVsZW1lbnRCYXNlVHlwZSA9IHRhcmdldEJhc2VUeXBlOworCX0KKwor CWlmIChpbnB1dEVsZW1lbnRCYXNlVHlwZSA9PSBNT05FWU9JRCB8fAorCQl0YXJnZXRFbGVtZW50 QmFzZVR5cGUgPT0gTU9ORVlPSUQgfHwKKwkJKGlucHV0RWxlbWVudEJhc2VUeXBlID09IENJUkNM RU9JRCAmJgorCQl0YXJnZXRFbGVtZW50QmFzZVR5cGUgPT0gUE9MWUdPTk9JRCkpCisJeworCQkv KgorCQkgKiBDYXN0cyBpbnZvbHZpbmcgTU9ORVkgdHlwZSBhcmUgbm90IGVycm9yIHNhZmUuIFRo ZSBDSVJDTEUgdG8gUE9MWUdPTgorCQkgKiBjYXN0IGlzIGFsc28gdW5zYWZlIGJlY2F1c2UgaXQg cmVsaWVzIG9uIGEgU1FMLWxhbmd1YWdlIGZ1bmN0aW9uOworCQkgKiBvbmx5IEMtbGFuZ3VhZ2Ug ZnVuY3Rpb25zIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkIGZvciBlcnJvciBzYWZlCisJCSAqIGNh c3RzLgorCQkgKi8KKwkJZXJyb3JzYWZlID0gZmFsc2U7CisJfQorCisJaWYgKGVycm9yc2FmZSkK Kwl7CisJCS8qIExvb2sgaW4gcGdfY2FzdCAqLworCQl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMihD QVNUU09VUkNFVEFSR0VULAorCQkJCQkJCQlPYmplY3RJZEdldERhdHVtKGlucHV0RWxlbWVudEJh c2VUeXBlKSwKKwkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bSh0YXJnZXRFbGVtZW50QmFzZVR5cGUp KTsKKworCQlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCXsKKwkJCUZvcm1fcGdfY2Fz dCBjYXN0Rm9ybSA9IChGb3JtX3BnX2Nhc3QpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJCWlmIChj YXN0Rm9ybS0+b2lkID4gRmlyc3RVbnBpbm5lZE9iamVjdElkKQorCQkJeworCQkJCWVycm9yc2Fm ZSA9IGZhbHNlOworCQkJCXVzZXJkZWZpbmVkID0gdHJ1ZTsKKwkJCX0KKworCQkJUmVsZWFzZVN5 c0NhY2hlKHR1cGxlKTsKKwkJfQorCX0KKworCWlmICghZXJyb3JzYWZlKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVy cm1zZygiY2Fubm90IGNhc3QgdHlwZSAlcyB0byAlcyB3aGVuICVzIGV4cHJlc3Npb24gaXMgc3Bl Y2lmaWVkIGluICVzIiwKKwkJCQkJICAgZm9ybWF0X3R5cGVfYmUoaW5wdXRUeXBlKSwKKwkJCQkJ ICAgZm9ybWF0X3R5cGVfYmUodGFyZ2V0VHlwZSksCisJCQkJCSAgICJERUZBVUxUIiwKKwkJCQkJ ICAgIkNBU1QgLi4uIE9OIENPTlZFUlNJT04gRVJST1IiKSwKKwkJCQl1c2VyZGVmaW5lZAorCQkJ CT8gZXJyaGludCgiU2FmZSB0eXBlIGNhc3QgZm9yIHVzZXItZGVmaW5lZCB0eXBlcyBhcmUgbm90 IHlldCBzdXBwb3J0ZWQiKQorCQkJCTogZXJyaGludCgiRXhwbGljaXQgY2FzdCBpcyBkZWZpbmVk IGJ1dCBkZWZpbml0aW9uIGlzIG5vdCBlcnJvciBzYWZlIiksCisJCQkJcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKHNvdXJjZWV4cHIpKSk7Cit9CisKKwogLyoKICAqIEhh bmRsZSBhbiBleHBsaWNpdCBDT0xMQVRFIGNsYXVzZS4KICAqCkBAIC0zMTkzLDYgKzM1NjEsOCBA QCBQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJLaW5kKQogCQljYXNlIEVYUFJf S0lORF9DSEVDS19DT05TVFJBSU5UOgogCQljYXNlIEVYUFJfS0lORF9ET01BSU5fQ0hFQ0s6CiAJ CQlyZXR1cm4gIkNIRUNLIjsKKwkJY2FzZSBFWFBSX0tJTkRfQ0FTVF9ERUZBVUxUOgorCQkJcmV0 dXJuICJDQVNUIERFRkFVTFQiOwogCQljYXNlIEVYUFJfS0lORF9DT0xVTU5fREVGQVVMVDoKIAkJ Y2FzZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVGQVVMVDoKIAkJCXJldHVybiAiREVGQVVMVCI7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2Z1bmMuYwppbmRleCA3NzhkNjljNmYzYy4uYTkwNzA1Yjk4NDcgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2Z1bmMuYwpAQCAtMjc0Myw2ICsyNzQzLDkgQEAgY2hlY2tfc3JmX2NhbGxf cGxhY2VtZW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbGFzdF9zcmYsIGludCBsb2NhdGlv bikKIAkJY2FzZSBFWFBSX0tJTkRfRE9NQUlOX0NIRUNLOgogCQkJZXJyID0gXygic2V0LXJldHVy bmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIGNoZWNrIGNvbnN0cmFpbnRzIik7CiAJ CQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfQ0FTVF9ERUZBVUxUOgorCQkJZXJyID0gXygic2V0 LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIENBU1QgREVGQVVMVCBleHBy ZXNzaW9ucyIpOworCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgog CQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgogCQkJZXJyID0gXygic2V0LXJldHVy bmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRkFVTFQgZXhwcmVzc2lvbnMiKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwppbmRleCA5MDVjOTc1ZDgzYi4uZGMwM2NmNGNlNzQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKQEAgLTE4MjIsNiArMTgyMiwyMCBAQCBGaWd1 cmVDb2xuYW1lSW50ZXJuYWwoTm9kZSAqbm9kZSwgY2hhciAqKm5hbWUpCiAJCQkJfQogCQkJfQog CQkJYnJlYWs7CisJCWNhc2UgVF9TYWZlVHlwZUNhc3Q6CisJCQlzdHJlbmd0aCA9IEZpZ3VyZUNv bG5hbWVJbnRlcm5hbCgoKFNhZmVUeXBlQ2FzdCAqKSBub2RlKS0+Y2FzdCwKKwkJCQkJCQkJCQkJ IG5hbWUpOworCQkJaWYgKHN0cmVuZ3RoIDw9IDEpCisJCQl7CisJCQkJVHlwZUNhc3QgCSpub2Rl X2Nhc3Q7CisJCQkJbm9kZV9jYXN0ID0gKFR5cGVDYXN0ICopKChTYWZlVHlwZUNhc3QgKikgbm9k ZSktPmNhc3Q7CisJCQkJaWYgKG5vZGVfY2FzdC0+dHlwZU5hbWUgIT0gTlVMTCkKKwkJCQl7CisJ CQkJCSpuYW1lID0gc3RyVmFsKGxsYXN0KG5vZGVfY2FzdC0+dHlwZU5hbWUtPm5hbWVzKSk7CisJ CQkJCXJldHVybiAxOworCQkJCX0KKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfQ29sbGF0ZUNs YXVzZToKIAkJCXJldHVybiBGaWd1cmVDb2xuYW1lSW50ZXJuYWwoKChDb2xsYXRlQ2xhdXNlICop IG5vZGUpLT5hcmcsIG5hbWUpOwogCQljYXNlIFRfR3JvdXBpbmdGdW5jOgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV90eXBlLmMKaW5kZXggNzcxM2JkYzZhZjAuLmQwNGE3MjlmNGRiIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdHlwZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV90eXBlLmMKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIK ICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5o IgorI2luY2x1ZGUgIm5vZGVzL21pc2Nub2Rlcy5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90 eXBlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlci5oIgogI2luY2x1ZGUgInV0aWxzL2FycmF5 LmgiCkBAIC02NjAsNiArNjYxLDE5IEBAIHN0cmluZ1R5cGVEYXR1bShUeXBlIHRwLCBjaGFyICpz dHJpbmcsIGludDMyIGF0dHR5cG1vZCkKIAlyZXR1cm4gT2lkSW5wdXRGdW5jdGlvbkNhbGwodHlw aW5wdXQsIHN0cmluZywgdHlwaW9wYXJhbSwgYXR0dHlwbW9kKTsKIH0KIAorLyogZXJyb3Igc2Fm ZSB2ZXJzaW9uIG9mIHN0cmluZ1R5cGVEYXR1bSAqLworYm9vbAorc3RyaW5nVHlwZURhdHVtU2Fm ZShUeXBlIHRwLCBjaGFyICpzdHJpbmcsIGludDMyIGF0dHR5cG1vZCwKKwkJCQkJTm9kZSAqZXNj b250ZXh0LCBEYXR1bSAqcmVzdWx0KQoreworCUZvcm1fcGdfdHlwZSB0eXBmb3JtID0gKEZvcm1f cGdfdHlwZSkgR0VUU1RSVUNUKHRwKTsKKwlPaWQJCQl0eXBpbnB1dCA9IHR5cGZvcm0tPnR5cGlu cHV0OworCU9pZAkJCXR5cGlvcGFyYW0gPSBnZXRUeXBlSU9QYXJhbSh0cCk7CisKKwlyZXR1cm4g T2lkSW5wdXRGdW5jdGlvbkNhbGxTYWZlKHR5cGlucHV0LCBzdHJpbmcsIHR5cGlvcGFyYW0sIGF0 dHR5cG1vZCwKKwkJCQkJCQkJCWVzY29udGV4dCwgcmVzdWx0KTsKK30KKwogLyoKICAqIEdpdmVu IGEgdHlwZWlkLCByZXR1cm4gdGhlIHR5cGUncyB0eXByZWxpZCAoYXNzb2NpYXRlZCByZWxhdGlv biksIGlmIGFueS4KICAqIFJldHVybnMgSW52YWxpZE9pZCBpZiB0eXBlIGlzIG5vdCBhIGNvbXBv c2l0ZSB0eXBlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQu YyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKaW5kZXggZTk2YjM4YTU5ZDUu LjZkZjBiOTc1YTg4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNt ZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAgLTQ2MzAsNyAr NDYzMCw3IEBAIHRyYW5zZm9ybVBhcnRpdGlvbkJvdW5kVmFsdWUoUGFyc2VTdGF0ZSAqcHN0YXRl LCBOb2RlICp2YWwsCiAJCWFzc2lnbl9leHByX2NvbGxhdGlvbnMocHN0YXRlLCB2YWx1ZSk7CiAJ CXZhbHVlID0gKE5vZGUgKikgZXhwcmVzc2lvbl9wbGFubmVyKChFeHByICopIHZhbHVlKTsKIAkJ dmFsdWUgPSAoTm9kZSAqKSBldmFsdWF0ZV9leHByKChFeHByICopIHZhbHVlLCBjb2xUeXBlLCBj b2xUeXBtb2QsCi0JCQkJCQkJCQkgICBwYXJ0Q29sbGF0aW9uKTsKKwkJCQkJCQkJCSAgIHBhcnRD b2xsYXRpb24sIGZhbHNlKTsKIAkJaWYgKCFJc0EodmFsdWUsIENvbnN0KSkKIAkJCWVsb2coRVJS T1IsICJjb3VsZCBub3QgZXZhbHVhdGUgcGFydGl0aW9uIGJvdW5kIGV4cHJlc3Npb24iKTsKIAl9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYwppbmRleCBjYzc2YmRkZTcyMy4uMmEzYjQ2NDkx MjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYwpAQCAtMzI4OSw2ICszMjg5LDE0IEBA IGFycmF5X21hcChEYXR1bSBhcnJheWQsCiAJCS8qIEFwcGx5IHRoZSBnaXZlbiBleHByZXNzaW9u IHRvIHNvdXJjZSBlbGVtZW50ICovCiAJCXZhbHVlc1tpXSA9IEV4ZWNFdmFsRXhwcihleHByc3Rh dGUsIGVjb250ZXh0LCAmbnVsbHNbaV0pOwogCisJCS8qIEV4aXQgZWFybHkgaWYgdGhlIGV2YWx1 YXRpb24gZmFpbHMgKi8KKwkJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZXhwcnN0YXRlLT5lc2Nv bnRleHQpKQorCQl7CisJCQlwZnJlZSh2YWx1ZXMpOworCQkJcGZyZWUobnVsbHMpOworCQkJcmV0 dXJuIChEYXR1bSkgMDsKKwkJfQorCiAJCWlmIChudWxsc1tpXSkKIAkJCWhhc251bGxzID0gdHJ1 ZTsKIAkJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDZjZjkwYmU0MGJiLi41 MGFlNDE4MzdiYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMTA1NjIsNiArMTA1 NjIsMjcgQEAgZ2V0X3J1bGVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRl eHQsCiAJCQl9CiAJCQlicmVhazsKIAorCQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJCXsK KwkJCQlTYWZlVHlwZUNhc3RFeHByICAgKnN0Y2V4cHIgPSBjYXN0Tm9kZShTYWZlVHlwZUNhc3RF eHByLCBub2RlKTsKKworCQkJCS8qCisJCQkJICogSGVyZSwgd2UgY2Fubm90IGRlcGFyc2luZyBj YXN0X2V4cHIgZGlyZWN0bHksIHNpbmNlCisJCQkJICogdHJhbnNmb3JtVHlwZVNhZmVDYXN0IG1h eSBoYXZlIGZvbGRlZCBpdCBpbnRvIGEgc2ltcGxlCisJCQkJICogY29uc3RhbnQgb3IgTlVMTC4g SW5zdGVhZCwgd2UgdXNlIHNvdXJjZV9leHByIGFuZAorCQkJCSAqIGRlZmF1bHRfZXhwciB0byBy ZWNvbnN0cnVjdCB0aGUgQ0FTVCBERUZBVUxUIGNsYXVzZS4KKwkJCQkgKi8KKwkJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIkNBU1QoIik7CisJCQkJZ2V0X3J1bGVfZXhwcihzdGNleHBy LT5zb3VyY2VfZXhwciwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKworCQkJCWFwcGVuZFN0cmlu Z0luZm8oYnVmLCAiIEFTICVzICIsCisJCQkJCQkJCSBmb3JtYXRfdHlwZV93aXRoX3R5cGVtb2Qo c3RjZXhwci0+cmVzdWx0dHlwZSwKKwkJCQkJCQkJCQkJCQkJICBzdGNleHByLT5yZXN1bHR0eXBt b2QpKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIkRFRkFVTFQgIik7CisJCQkJ Z2V0X3J1bGVfZXhwcihzdGNleHByLT5kZWZhdWx0X2V4cHIsIGNvbnRleHQsIHNob3dpbXBsaWNp dCk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgT04gQ09OVkVSU0lPTiBFUlJP UikiKTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfSnNvbkV4cHI6CiAJCQl7CiAJCQkJSnNv bkV4cHIgICAqamV4cHIgPSAoSnNvbkV4cHIgKikgbm9kZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2ZtZ3IvZm1nci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMKaW5k ZXggMGZlNjNjNmJiODMuLmFhYTRhNDJiMWVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9mbWdyL2ZtZ3IuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYwpAQCAtMTc1 OSw2ICsxNzU5LDE5IEBAIE9pZElucHV0RnVuY3Rpb25DYWxsKE9pZCBmdW5jdGlvbklkLCBjaGFy ICpzdHIsIE9pZCB0eXBpb3BhcmFtLCBpbnQzMiB0eXBtb2QpCiAJcmV0dXJuIElucHV0RnVuY3Rp b25DYWxsKCZmbGluZm8sIHN0ciwgdHlwaW9wYXJhbSwgdHlwbW9kKTsKIH0KIAorYm9vbAorT2lk SW5wdXRGdW5jdGlvbkNhbGxTYWZlKE9pZCBmdW5jdGlvbklkLCBjaGFyICpzdHIsIE9pZCB0eXBp b3BhcmFtLAorCQkJCQkJIGludDMyIHR5cG1vZCwgTm9kZSAqZXNjb250ZXh0LAorCQkJCQkJIERh dHVtICpyZXN1bHQpCit7CisJRm1nckluZm8JCQlmbGluZm87CisKKwlmbWdyX2luZm8oZnVuY3Rp b25JZCwgJmZsaW5mbyk7CisKKwlyZXR1cm4gSW5wdXRGdW5jdGlvbkNhbGxTYWZlKCZmbGluZm8s IHN0ciwgdHlwaW9wYXJhbSwgdHlwbW9kLAorCQkJCQkJCQkgZXNjb250ZXh0LCByZXN1bHQpOwor fQorCiBjaGFyICoKIE9pZE91dHB1dEZ1bmN0aW9uQ2FsbChPaWQgZnVuY3Rpb25JZCwgRGF0dW0g dmFsKQogewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaCBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKaW5kZXggNzUzNjYyMDM3MDYuLjkzN2NiZjNi YzliIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCisrKyBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKQEAgLTI2NSw2ICsyNjUsNyBAQCB0eXBlZGVm IGVudW0gRXhwckV2YWxPcAogCUVFT1BfWE1MRVhQUiwKIAlFRU9QX0pTT05fQ09OU1RSVUNUT1Is CiAJRUVPUF9JU19KU09OLAorCUVFT1BfU0FGRVRZUEVfQ0FTVCwKIAlFRU9QX0pTT05FWFBSX1BB VEgsCiAJRUVPUF9KU09ORVhQUl9DT0VSQ0lPTiwKIAlFRU9QX0pTT05FWFBSX0NPRVJDSU9OX0ZJ TklTSCwKQEAgLTc1MCw2ICs3NTEsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwckV2YWxTdGVwCiAJ CQlKc29uSXNQcmVkaWNhdGUgKnByZWQ7CS8qIG9yaWdpbmFsIGV4cHJlc3Npb24gbm9kZSAqLwog CQl9CQkJaXNfanNvbjsKIAorCQkvKiBmb3IgRUVPUF9TQUZFVFlQRV9DQVNUICovCisJCXN0cnVj dAorCQl7CisJCQlzdHJ1Y3QgU2FmZVR5cGVDYXN0U3RhdGUgKnN0Y3N0YXRlOworCQl9CQkJc3Rj ZXhwcjsKKwogCQkvKiBmb3IgRUVPUF9KU09ORVhQUl9QQVRIICovCiAJCXN0cnVjdAogCQl7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCBmYTJiNjU3ZmIyZi4uZjk5ZmMyNmViMWYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAtMzI0LDYgKzMyNCw3IEBAIEV4ZWNQcm9jTm9kZShQbGFu U3RhdGUgKm5vZGUpCiAgKiBwcm90b3R5cGVzIGZyb20gZnVuY3Rpb25zIGluIGV4ZWNFeHByLmMK ICAqLwogZXh0ZXJuIEV4cHJTdGF0ZSAqRXhlY0luaXRFeHByKEV4cHIgKm5vZGUsIFBsYW5TdGF0 ZSAqcGFyZW50KTsKK2V4dGVybiBFeHByU3RhdGUgKkV4ZWNJbml0RXhwclNhZmUoRXhwciAqbm9k ZSwgUGxhblN0YXRlICpwYXJlbnQpOwogZXh0ZXJuIEV4cHJTdGF0ZSAqRXhlY0luaXRFeHByV2l0 aFBhcmFtcyhFeHByICpub2RlLCBQYXJhbUxpc3RJbmZvIGV4dF9wYXJhbXMpOwogZXh0ZXJuIEV4 cHJTdGF0ZSAqRXhlY0luaXRRdWFsKExpc3QgKnF1YWwsIFBsYW5TdGF0ZSAqcGFyZW50KTsKIGV4 dGVybiBFeHByU3RhdGUgKkV4ZWNJbml0Q2hlY2soTGlzdCAqcXVhbCwgUGxhblN0YXRlICpwYXJl bnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZm1nci5oIGIvc3JjL2luY2x1ZGUvZm1nci5o CmluZGV4IGMwZGJlODVlZDFjLi5hOTM1N2I5OGQ3MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Zm1nci5oCisrKyBiL3NyYy9pbmNsdWRlL2ZtZ3IuaApAQCAtNzUwLDYgKzc1MCw5IEBAIGV4dGVy biBib29sIERpcmVjdElucHV0RnVuY3Rpb25DYWxsU2FmZShQR0Z1bmN0aW9uIGZ1bmMsIGNoYXIg KnN0ciwKIAkJCQkJCQkJCQlEYXR1bSAqcmVzdWx0KTsKIGV4dGVybiBEYXR1bSBPaWRJbnB1dEZ1 bmN0aW9uQ2FsbChPaWQgZnVuY3Rpb25JZCwgY2hhciAqc3RyLAogCQkJCQkJCQkgIE9pZCB0eXBp b3BhcmFtLCBpbnQzMiB0eXBtb2QpOworZXh0ZXJuIGJvb2wgT2lkSW5wdXRGdW5jdGlvbkNhbGxT YWZlKE9pZCBmdW5jdGlvbklkLCBjaGFyICpzdHIsIE9pZCB0eXBpb3BhcmFtLAorCQkJCQkJCQkJ IGludDMyIHR5cG1vZCwgTm9kZSAqZXNjb250ZXh0LAorCQkJCQkJCQkJIERhdHVtICpyZXN1bHQp OwogZXh0ZXJuIGNoYXIgKk91dHB1dEZ1bmN0aW9uQ2FsbChGbWdySW5mbyAqZmxpbmZvLCBEYXR1 bSB2YWwpOwogZXh0ZXJuIGNoYXIgKk9pZE91dHB1dEZ1bmN0aW9uQ2FsbChPaWQgZnVuY3Rpb25J ZCwgRGF0dW0gdmFsKTsKIGV4dGVybiBEYXR1bSBSZWNlaXZlRnVuY3Rpb25DYWxsKEZtZ3JJbmZv ICpmbGluZm8sIFN0cmluZ0luZm8gYnVmLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA2NGZmNjk5 NjQzMS4uOTAxOGUxOTBjYzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0xMDU5LDYgKzEwNTks MjcgQEAgdHlwZWRlZiBzdHJ1Y3QgRG9tYWluQ29uc3RyYWludFN0YXRlCiAJRXhwclN0YXRlICAq Y2hlY2tfZXhwcnN0YXRlOwkvKiBjaGVja19leHByJ3MgZXZhbCBzdGF0ZSwgb3IgTlVMTCAqLwog fSBEb21haW5Db25zdHJhaW50U3RhdGU7CiAKK3R5cGVkZWYgc3RydWN0IFNhZmVUeXBlQ2FzdFN0 YXRlCit7CisJU2FmZVR5cGVDYXN0RXhwciAqc3RjZXhwcjsKKworCS8qCisJICogQWRkcmVzcyB0 byBqdW1wIHRvIHdoZW4gc2tpcHBpbmcgYWxsIHRoZSBzdGVwcyB0byBldmF1bGF0ZSB0aGUgZGVm YXVsdAorCSAqIGV4cHJlc3Npb24uCisJICovCisJaW50IAkJanVtcF9lbmQ7CisKKwkvKgorCSAq IEZvciBlcnJvci1zYWZlIGV2YWx1YXRpb24gb2YgY29lcmNpb25zLiBBIHBvaW50ZXIgdG8gdGhp cyBpcyBwYXNzZWQgdG8KKwkgKiBFeGVjSW5pdEV4cHJSZWMoKSB3aGVuIGluaXRpYWxpemluZyB0 aGUgY29lcmNpb24gZXhwcmVzc2lvbnMsIHNlZQorCSAqIEV4ZWNJbml0U2FmZVR5cGVDYXN0RXhw ci4KKwkgKgorCSAqIFJlc2V0IGZvciBlYWNoIGV2YWx1YXRpb24gb2YgRUVPUF9TQUZFVFlQRV9D QVNULgorCSAqLworCUVycm9yU2F2ZUNvbnRleHQgZXNjb250ZXh0OworCit9IFNhZmVUeXBlQ2Fz dFN0YXRlOworCiAvKgogICogU3RhdGUgZm9yIEpzb25FeHByIGV2YWx1YXRpb24sIHRvbyBiaWcg dG8gaW5saW5lLgogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBkMTQyOTRhNGVjZS4uODJi MGZiODNiNGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTQwMCw2ICs0MDAsMTcgQEAgdHlw ZWRlZiBzdHJ1Y3QgVHlwZUNhc3QKIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0 aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IFR5cGVDYXN0OwogCisvKgorICogU2FmZVR5cGVD YXN0IC0gYSBDQVNUKHNvdXJjZV9leHByIEFTIHRhcmdldF90eXBlKSBERUZBVUxUIE9OIENPTlZF UlNJT04gRVJST1IKKyAqIGNvbnN0cnVjdAorICovCit0eXBlZGVmIHN0cnVjdCBTYWZlVHlwZUNh c3QKK3sKKwlOb2RlVGFnCQl0eXBlOworCU5vZGUJCSpjYXN0OwkJCS8qIFR5cGVDYXN0IGV4cHJl c3Npb24gKi8KKwlOb2RlCSAgIAkqcmF3X2RlZmF1bHQ7CS8qIHVudHJhbnNmb3JtZWQgREVGQVVM VCBleHByZXNzaW9uICovCit9IFNhZmVUeXBlQ2FzdDsKKwogLyoKICAqIENvbGxhdGVDbGF1c2Ug LSBhIENPTExBVEUgZXhwcmVzc2lvbgogICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9wcmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IDFiNDQz NmYyZmY2Li4xNDAxMTA5ZmIzYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTc2OSw2ICs3Njks NDIgQEAgdHlwZWRlZiBlbnVtIENvZXJjaW9uRm9ybQogCUNPRVJDRV9TUUxfU1lOVEFYLAkJCS8q IGRpc3BsYXkgd2l0aCBTUUwtbWFuZGF0ZWQgc3BlY2lhbCBzeW50YXggKi8KIH0gQ29lcmNpb25G b3JtOwogCisvKgorICogU2FmZVR5cGVDYXN0RXhwciAtCisgKgkJVHJhbnNmb3JtZWQgcmVwcmVz ZW50YXRpb24gb2YKKyAqIAkJQ0FTVChleHByIEFTIHR5cGVuYW1lIERFRkFVTFQgZXhwcjIgT04g RVJST1IpCisgKiAJCUNBU1QoZXhwciBBUyB0eXBlbmFtZSBOVUxMIE9OIEVSUk9SKQorICovCit0 eXBlZGVmIHN0cnVjdCBTYWZlVHlwZUNhc3RFeHByCit7CisJRXhwcgkJeHByOworCisJLyogdHJh bnNmb3JtZWQgc291cmNlIGV4cHJlc3Npb24gKi8KKwlOb2RlCSAgICpzb3VyY2VfZXhwcjsKKwor CS8qCisJICogVGhlIHRyYW5zZm9ybWVkIGNhc3QgZXhwcmVzc2lvbjsgTlVMTCBpZiB3ZSBjYW4g bm90IGNvY2VyY2Ugc291cmNlCisJICogZXhwcmVzc2lvbiB0byB0aGUgdGFyZ2V0IHR5cGUKKwkg Ki8KKwlOb2RlCSAgICpjYXN0X2V4cHIgCXBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3Jl KTsKKworCS8qIEZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBleHByZXNzaW9uIGlmIGNhc3QgZXZh bHVhdGlvbiBmYWlscyAqLworCU5vZGUJICAgKmRlZmF1bHRfZXhwcjsKKworCS8qIGNhc3QgcmVz dWx0IGRhdGEgdHlwZSAqLworCU9pZAkJCXJlc3VsdHR5cGU7CisKKwkvKiBjYXN0IHJlc3VsdCBk YXRhIHR5cGUgdHlwbW9kICh1c3VhbGx5IC0xKSAqLworCWludDMyCQlyZXN1bHR0eXBtb2Q7CisK KwkvKiBjYXN0IHJlc3VsdCBkYXRhIHR5cGUgY29sbGF0aW9uICovCisJT2lkCQkJcmVzdWx0Y29s bGlkOworCisJLyogT3JpZ2luYWwgU2FmZVR5cGVDYXN0RXhwcidzIGxvY2F0aW9uICovCisJUGFy c2VMb2MJbG9jYXRpb247CisKK30gU2FmZVR5cGVDYXN0RXhwcjsKKwogLyoKICAqIEZ1bmNFeHBy IC0gZXhwcmVzc2lvbiBub2RlIGZvciBhIGZ1bmN0aW9uIGNhbGwKICAqCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIv b3B0aW1pemVyLmgKaW5kZXggNDRlYzUyOTZhMTguLjU4N2U3MTE1OTZhIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1p emVyL29wdGltaXplci5oCkBAIC0xNDMsNyArMTQzLDcgQEAgZXh0ZXJuIHZvaWQgY29udmVydF9z YW9wX3RvX2hhc2hlZF9zYW9wKE5vZGUgKm5vZGUpOwogZXh0ZXJuIE5vZGUgKmVzdGltYXRlX2V4 cHJlc3Npb25fdmFsdWUoUGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKm5vZGUpOwogCiBleHRlcm4g RXhwciAqZXZhbHVhdGVfZXhwcihFeHByICpleHByLCBPaWQgcmVzdWx0X3R5cGUsIGludDMyIHJl c3VsdF90eXBtb2QsCi0JCQkJCQkgICBPaWQgcmVzdWx0X2NvbGxhdGlvbik7CisJCQkJCQkgICBP aWQgcmVzdWx0X2NvbGxhdGlvbiwgYm9vbCBlcnJvcl9zYWZlKTsKIAogZXh0ZXJuIGJvb2wgdmFy X2lzX25vbm51bGxhYmxlKFBsYW5uZXJJbmZvICpyb290LCBWYXIgKnZhciwgYm9vbCB1c2VfcmVs X2luZm8pOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY29lcmNlLmgg Yi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY29lcmNlLmgKaW5kZXggOGQ3NzVjNzJjNTkuLjFl Y2ExY2U3MjdkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY29lcmNlLmgK KysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NvZXJjZS5oCkBAIC00MywxMSArNDMsMjYg QEAgZXh0ZXJuIE5vZGUgKmNvZXJjZV90b190YXJnZXRfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUs CiAJCQkJCQkJCSAgIENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwKIAkJCQkJCQkJICAgQ29lcmNp b25Gb3JtIGNmb3JtYXQsCiAJCQkJCQkJCSAgIGludCBsb2NhdGlvbik7CitleHRlcm4gTm9kZSAq Y29lcmNlX3RvX3RhcmdldF90eXBlX2V4dGVuZGVkKFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJ CQkJCQkJTm9kZSAqZXhwciwKKwkJCQkJCQkJCQkJT2lkIGV4cHJ0eXBlLAorCQkJCQkJCQkJCQlP aWQgdGFyZ2V0dHlwZSwKKwkJCQkJCQkJCQkJaW50MzIgdGFyZ2V0dHlwbW9kLAorCQkJCQkJCQkJ CQlDb2VyY2lvbkNvbnRleHQgY2NvbnRleHQsCisJCQkJCQkJCQkJCUNvZXJjaW9uRm9ybSBjZm9y bWF0LAorCQkJCQkJCQkJCQlpbnQgbG9jYXRpb24sCisJCQkJCQkJCQkJCU5vZGUgKmVzY29udGV4 dCk7CiBleHRlcm4gYm9vbCBjYW5fY29lcmNlX3R5cGUoaW50IG5hcmdzLCBjb25zdCBPaWQgKmlu cHV0X3R5cGVpZHMsIGNvbnN0IE9pZCAqdGFyZ2V0X3R5cGVpZHMsCiAJCQkJCQkJQ29lcmNpb25D b250ZXh0IGNjb250ZXh0KTsKIGV4dGVybiBOb2RlICpjb2VyY2VfdHlwZShQYXJzZVN0YXRlICpw c3RhdGUsIE5vZGUgKm5vZGUsCiAJCQkJCQkgT2lkIGlucHV0VHlwZUlkLCBPaWQgdGFyZ2V0VHlw ZUlkLCBpbnQzMiB0YXJnZXRUeXBlTW9kLAogCQkJCQkJIENvZXJjaW9uQ29udGV4dCBjY29udGV4 dCwgQ29lcmNpb25Gb3JtIGNmb3JtYXQsIGludCBsb2NhdGlvbik7CitleHRlcm4gTm9kZSAqY29l cmNlX3R5cGVfZXh0ZW5kKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbm9kZSwKKwkJCQkJCQkJ T2lkIGlucHV0VHlwZUlkLAorCQkJCQkJCQlPaWQgdGFyZ2V0VHlwZUlkLCBpbnQzMiB0YXJnZXRU eXBlTW9kLAorCQkJCQkJCQlDb2VyY2lvbkNvbnRleHQgY2NvbnRleHQsIENvZXJjaW9uRm9ybSBj Zm9ybWF0LAorCQkJCQkJCQlpbnQgbG9jYXRpb24sCisJCQkJCQkJCU5vZGUgKmVzY29udGV4dCk7 CiBleHRlcm4gTm9kZSAqY29lcmNlX3RvX2RvbWFpbihOb2RlICphcmcsIE9pZCBiYXNlVHlwZUlk LCBpbnQzMiBiYXNlVHlwZU1vZCwKIAkJCQkJCQkgIE9pZCB0eXBlSWQsCiAJCQkJCQkJICBDb2Vy Y2lvbkNvbnRleHQgY2NvbnRleHQsIENvZXJjaW9uRm9ybSBjZm9ybWF0LCBpbnQgbG9jYXRpb24s CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1 ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCBmN2QwN2M4NDU0Mi4uOWY1YjMyZTAzNjAgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIvc3JjL2luY2x1 ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtNjcsNiArNjcsOCBAQCB0eXBlZGVmIGVudW0gUGFy c2VFeHByS2luZAogCUVYUFJfS0lORF9WQUxVRVNfU0lOR0xFLAkvKiBzaW5nbGUtcm93IFZBTFVF UyAoaW4gSU5TRVJUIG9ubHkpICovCiAJRVhQUl9LSU5EX0NIRUNLX0NPTlNUUkFJTlQsIC8qIENI RUNLIGNvbnN0cmFpbnQgZm9yIGEgdGFibGUgKi8KIAlFWFBSX0tJTkRfRE9NQUlOX0NIRUNLLAkJ LyogQ0hFQ0sgY29uc3RyYWludCBmb3IgYSBkb21haW4gKi8KKwlFWFBSX0tJTkRfQ0FTVF9ERUZB VUxULAkJLyogZGVmYXVsdCBleHByZXNzaW9uIGluCisJCQkJCQkJCSAgIENBU1QgREVGQVVMVCBP TiBDT05WRVJTSU9OIEVSUk9SICovCiAJRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxULAkvKiBkZWZh dWx0IHZhbHVlIGZvciBhIHRhYmxlIGNvbHVtbiAqLwogCUVYUFJfS0lORF9GVU5DVElPTl9ERUZB VUxULCAvKiBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBmb3IgZnVuY3Rpb24gKi8KIAlFWFBSX0tJ TkRfSU5ERVhfRVhQUkVTU0lPTiwgLyogaW5kZXggZXhwcmVzc2lvbiAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3R5cGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJz ZV90eXBlLmgKaW5kZXggMGQ5MTlkOGJmYTIuLjQwYWNhMmIzMWM5IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2VfdHlwZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJz ZV90eXBlLmgKQEAgLTQ3LDYgKzQ3LDggQEAgZXh0ZXJuIGNoYXIgKnR5cGVUeXBlTmFtZShUeXBl IHQpOwogZXh0ZXJuIE9pZAl0eXBlVHlwZVJlbGlkKFR5cGUgdHlwKTsKIGV4dGVybiBPaWQJdHlw ZVR5cGVDb2xsYXRpb24oVHlwZSB0eXApOwogZXh0ZXJuIERhdHVtIHN0cmluZ1R5cGVEYXR1bShU eXBlIHRwLCBjaGFyICpzdHJpbmcsIGludDMyIGF0dHR5cG1vZCk7CitleHRlcm4gYm9vbCBzdHJp bmdUeXBlRGF0dW1TYWZlKFR5cGUgdHAsIGNoYXIgKnN0cmluZywgaW50MzIgYXR0dHlwbW9kLAor CQkJCQkJCQlOb2RlICplc2NvbnRleHQsIERhdHVtICpyZXN1bHQpOwogCiBleHRlcm4gT2lkCXR5 cGVpZFR5cGVSZWxpZChPaWQgdHlwZV9pZCk7CiBleHRlcm4gT2lkCXR5cGVPckRvbWFpblR5cGVS ZWxpZChPaWQgdHlwZV9pZCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2Nhc3Qub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jYXN0Lm91dApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjBkYzdiOGZhZWEKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nhc3Qub3V0CkBAIC0wLDAgKzEsODEwIEBA CitTRVQgZXh0cmFfZmxvYXRfZGlnaXRzID0gMDsKKy0tIENBU1QgREVGQVVMVCBPTiBDT05WRVJT SU9OIEVSUk9SCitTRUxFQ1QgQ0FTVChCJzAxJyBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKTsKKyBkYXRlIAorLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNU KEJJVCcwMScgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgZGF0 ZSAKKy0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChUUlVFIEFTIGRhdGUgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGRhdGUgCistLS0tLS0KKyAKKygxIHJvdykK KworU0VMRUNUIENBU1QoMS4xIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworIGRhdGUgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoMSBBUyBkYXRl IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBkYXRlIAorLS0tLS0tCisgCiso MSByb3cpCisKK1NFTEVDVCBDQVNUKDExMTEgQVMgImNoYXIiIERFRkFVTFQgJ0EnIE9OIENPTlZF UlNJT04gRVJST1IpOworIGNoYXIgCistLS0tLS0KKyBBCisoMSByb3cpCisKKy0tdGVzdCBzb3Vy Y2UgZXhwcmVzc2lvbiBpcyBhIHVua25vd24gY29uc3QKK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFT IGludGVnZXIgRVJST1IgT04gQ09OVkVSU0lPTiBFUlJPUikpOyAtLWVycm9yCitFUlJPUjogIGlu dmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6ICJlcnJvciIKK0xJTkUgMTogVkFM VUVTIChDQVNUKCdlcnJvcicgQVMgaW50ZWdlciBFUlJPUiBPTiBDT05WRVJTSU9OIEVSUk9SKSk7 CisgICAgICAgICAgICAgICAgICAgICBeCitWQUxVRVMgKENBU1QoJ2Vycm9yJyBBUyBpbnRlZ2Vy IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikpOworIGNvbHVtbjEgCistLS0tLS0tLS0KKyAgICAg ICAgCisoMSByb3cpCisKK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludGVnZXIgREVGQVVMVCA0 MiBPTiBDT05WRVJTSU9OIEVSUk9SKSk7CisgY29sdW1uMSAKKy0tLS0tLS0tLQorICAgICAgNDIK KygxIHJvdykKKworU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIDE4IE9OIENPTlZFUlNJ T04gRVJST1IpOworIGludDQgCistLS0tLS0KKyAgIDE4CisoMSByb3cpCisKK1NFTEVDVCBDQVNU KCdhJyBhcyBpbnQgREVGQVVMVCBzdW0oMSkgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tZXJyb3IK K0VSUk9SOiAgYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gQ0FTVCBERUZB VUxUIGV4cHJlc3Npb25zCitMSU5FIDE6IFNFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCBz dW0oMSkgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgc3VtKDEpIG92ZXIo KSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS1lcnJvcgorRVJST1I6ICB3aW5kb3cgZnVuY3Rpb25z IGFyZSBub3QgYWxsb3dlZCBpbiBDQVNUIERFRkFVTFQgZXhwcmVzc2lvbnMKK0xJTkUgMTogU0VM RUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIHN1bSgxKSBvdmVyKCkgT04gQ09OVkVSU0lPTiBF Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgQ0FT VCgnYScgYXMgaW50IERFRkFVTFQgKFNFTEVDVCBOVUxMKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsg LS1lcnJvcgorRVJST1I6ICBjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIENBU1QgREVGQVVMVCBleHBy ZXNzaW9uCitMSU5FIDE6IFNFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCAoU0VMRUNUIE5V TEwpIE9OIENPTlZFUlNJT04gRS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUICdiJyBPTiBDT05WRVJTSU9O IEVSUk9SKTsgLS1lcnJvcgorRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBp bnRlZ2VyOiAiYiIKK0xJTkUgMTogU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUICdiJyBP TiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KK1NFTEVDVCBDQVNUKCdhJzo6aW50IGFzIGludCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7IC0tZXJyb3IKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5 cGUgaW50ZWdlcjogImEiCitMSU5FIDE6IFNFTEVDVCBDQVNUKCdhJzo6aW50IGFzIGludCBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUi4uLgorICAgICAgICAgICAgICAgICAgICBeCist LXRoZSBkZWZhdWx0IGV4cHJlc3Npb27igJlzIGNvbGxhdGlvbiBzaG91bGQgbWF0Y2ggdGhlIGNv bGxhdGlvbiBvZiB0aGUgY2FzdAorLS10YXJnZXQgdHlwZQorVkFMVUVTIChDQVNUKCdlcnJvcicg QVMgdGV4dCBERUZBVUxUICcxJyBDT0xMQVRFICJDIiBPTiBDT05WRVJTSU9OIEVSUk9SKSk7CitF UlJPUjogIHRoZSBjb2xsYXRpb24gb2YgQ0FTVCBERUZBVUxUIGV4cHJlc3Npb24gY29uZmxpY3Rz IHdpdGggdGFyZ2V0IHR5cGUgY29sbGF0aW9uCitMSU5FIDE6IFZBTFVFUyAoQ0FTVCgnZXJyb3In IEFTIHRleHQgREVGQVVMVCAnMScgQ09MTEFURSAiQyIgT04gQ09OVi4uLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgImRlZmF1bHQiIHZl cnN1cyAiQyIKK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludDJ2ZWN0b3IgREVGQVVMVCAnMSAz JyAgT04gQ09OVkVSU0lPTiBFUlJPUikpOworIGNvbHVtbjEgCistLS0tLS0tLS0KKyAxIDMKKygx IHJvdykKKworVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgaW50MnZlY3RvcltdIERFRkFVTFQgJ3sx IDN9JyAgT04gQ09OVkVSU0lPTiBFUlJPUikpOworIGNvbHVtbjEgCistLS0tLS0tLS0KKyB7IjEg MyJ9CisoMSByb3cpCisKKy0tIHRlc3Qgc291cmNlIGV4cHJlc3Npb24gY29udGFpbiBzdWJxdWVy eQorU0VMRUNUIENBU1QoKFNFTEVDVCBiIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEpLCAoVkFM VUVTKCdIJykpIHMoYikpCisgICAgICAgICAgICBBUyBpbnQydmVjdG9yW10gREVGQVVMVCAnezEg M30nICBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICBiICAgIAorLS0tLS0tLS0tCisgeyIxIDMi fQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgoU0VMRUNUIEFSUkFZKChTRUxFQ1QgYiBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAyKSBnLCAoVkFMVUVTKCdIJykpIHMoYikpKSkKKyAgICAgICAgICAg IEFTIElOVFtdCisgICAgICAgICAgICBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7 CisgYXJyYXkgCistLS0tLS0tCisgCisoMSByb3cpCisKK0NSRUFURSBGVU5DVElPTiByZXRfaW50 OCgpIFJFVFVSTlMgQklHSU5UIEFTCiskJAorQkVHSU4gUkVUVVJOIDIxNDc0ODM2NDg7IEVORDsK KyQkCitMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJMRTsKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQg REVGQVVMVCByZXRfaW50OCgpIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLWVycm9yCitFUlJPUjog IGludGVnZXIgb3V0IG9mIHJhbmdlCitTRUxFQ1QgQ0FTVCgnYScgYXMgZGF0ZSBERUZBVUxUIHJl dF9pbnQ4KCkgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tZXJyb3IKK0VSUk9SOiAgY2Fubm90IGNv ZXJjZSBDQVNUIERFRkFVTFQgZXhwcmVzc2lvbiB0byB0eXBlIGRhdGUKK0xJTkUgMTogU0VMRUNU IENBU1QoJ2EnIGFzIGRhdGUgREVGQVVMVCByZXRfaW50OCgpIE9OIENPTlZFUlNJT04gRVJSLi4u CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gREVGQVVMVCBl eHByZXNzaW9uIGNhbiBub3QgYmUgc2V0LXJldHVybmluZworQ1JFQVRFIEZVTkNUSU9OIHJldF9z ZXRpbnQoKSBSRVRVUk5TIFNFVE9GIGludGVnZXIgQVMKKyQkCitCRUdJTiBSRVRVUk4gUVVFUlkg RVhFQ1VURSAnc2VsZWN0IDEgdW5pb24gYWxsIHNlbGVjdCAxJzsgRU5EOworJCQKK0xBTkdVQUdF IHBscGdzcWwgSU1NVVRBQkxFOworQ1JFQVRFIFRBQkxFIHRjYXN0KGEgdGV4dFtdLCBiIGludCBH RU5FUkFURUQgQlkgREVGQVVMVCBBUyBJREVOVElUWSk7CitJTlNFUlQgSU5UTyB0Y2FzdCBWQUxV RVMgKCd7MTJ9JyksICgnezEsYSwgYn0nKSwgKCd7ezEsMn0sIHtjLGR9fScpLCAoJ3sxM30nKTsK K1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCByZXRfc2V0aW50KCkgT04gQ09OVkVSU0lP TiBFUlJPUikgRlJPTSB0Y2FzdDsgLS1lcnJvcgorRVJST1I6ICBzZXQtcmV0dXJuaW5nIGZ1bmN0 aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Npb25zCitMSU5FIDE6 IFNFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCByZXRfc2V0aW50KCkgT04gQ09OVkVSU0lP TiBFUi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNU IENBU1QodCBBUyB0ZXh0W10gREVGQVVMVCAnezIxLDIyLCAnIHx8IGIgfHwgJ30nIE9OIENPTlZF UlNJT04gRVJST1IpIEZST00gdGNhc3QgYXMgdDsKKyAgICAgdCAgICAgCistLS0tLS0tLS0tLQor IHsyMSwyMiwxfQorIHsyMSwyMiwyfQorIHsyMSwyMiwzfQorIHsyMSwyMiw0fQorKDQgcm93cykK KworU0VMRUNUIENBU1QodC5hIEFTIGludFtdIERFRkFVTFQgJ3syMSwyMn0nOjppbnRbXSB8fCBi IE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QgYXMgdDsKKyAgICAgYSAgICAgCistLS0t LS0tLS0tLQorIHsxMn0KKyB7MjEsMjIsMn0KKyB7MjEsMjIsM30KKyB7MTN9CisoNCByb3dzKQor CistLSB0ZXN0IHdpdGggdXNlci1kZWZpbmVkIHR5cGUsIGRvbWFpbiwgYXJyYXkgb3ZlciBkb21h aW4sIGRvbWFpbiBvdmVyIGFycmF5CitDUkVBVEUgRE9NQUlOIGRfaW50NDIgYXMgaW50IGNoZWNr ICh2YWx1ZSA9IDQyKSBOT1QgTlVMTDsKK0NSRUFURSBET01BSU4gZF9jaGFyM19ub3RfbnVsbCBh cyBjaGFyKDMpIE5PVCBOVUxMOworQ1JFQVRFIERPTUFJTiBkX3ZhcmNoYXIgYXMgdmFyY2hhcigz KSBOT1QgTlVMTDsKK0NSRUFURSBET01BSU4gZF9pbnRfYXJyIGFzIGludFtdIGNoZWNrICh2YWx1 ZSA9ICd7NDEsIDQzfScpIE5PVCBOVUxMOworQ1JFQVRFIFRZUEUgY29tcF9kb21haW5fd2l0aF90 eXBtb2QgQVMgKGEgZF9jaGFyM19ub3RfbnVsbCwgYiBpbnQpOworQ1JFQVRFIFRZUEUgY29tcDIg QVMgKGEgZF92YXJjaGFyKTsKK1NFTEVDVCBDQVNUKCcoTlVMTCknIEFTIGNvbXAyIERFRkFVTFQg JygxMjMyKScgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tZXJyb3IKK0VSUk9SOiAgdmFsdWUgdG9v IGxvbmcgZm9yIHR5cGUgY2hhcmFjdGVyIHZhcnlpbmcoMykKK0xJTkUgMTogU0VMRUNUIENBU1Qo JyhOVUxMKScgQVMgY29tcDIgREVGQVVMVCAnKDEyMzIpJyBPTiBDT05WRVJTSU9OLi4uCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIENBU1Qo JyhOVUxMKScgQVMgY29tcDIgREVGQVVMVCAnKDEyMyknIE9OIENPTlZFUlNJT04gRVJST1IpOwor IGNvbXAyIAorLS0tLS0tLQorICgxMjMpCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKDExIEFTIGRf aW50NDIgREVGQVVMVCA0MSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS1lcnJvcgorRVJST1I6ICB2 YWx1ZSBmb3IgZG9tYWluIGRfaW50NDIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAiZF9pbnQ0 Ml9jaGVjayIKK1NFTEVDVCBDQVNUKDExIEFTIGRfaW50NDIgREVGQVVMVCA0MiBPTiBDT05WRVJT SU9OIEVSUk9SKTsKKyBkX2ludDQyIAorLS0tLS0tLS0tCisgICAgICA0MgorKDEgcm93KQorCitT RUxFQ1QgQ0FTVChOVUxMIEFTIGRfaW50NDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOyAtLWVycm9yCitFUlJPUjogIGRvbWFpbiBkX2ludDQyIGRvZXMgbm90IGFsbG93IG51bGwg dmFsdWVzCitTRUxFQ1QgQ0FTVChOVUxMIEFTIGRfaW50NDIgREVGQVVMVCA0MiBPTiBDT05WRVJT SU9OIEVSUk9SKTsKKyBkX2ludDQyIAorLS0tLS0tLS0tCisgICAgICA0MgorKDEgcm93KQorCitT RUxFQ1QgQ0FTVCgnKCw0MiknIEFTIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJyhOVUxMLDQy KScgQVMgY29tcF9kb21haW5fd2l0aF90eXBtb2QgREVGQVVMVCAnKDEsMiknIE9OIENPTlZFUlNJ T04gRVJST1IpOworIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICgiMSAgIiwyKQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnKE5VTEwsNDIpJyBB UyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxUICcoMTIzNCwyKScgT04gQ09OVkVSU0lP TiBFUlJPUik7IC0tZXJyb3IKK0VSUk9SOiAgdmFsdWUgdG9vIGxvbmcgZm9yIHR5cGUgY2hhcmFj dGVyKDMpCitMSU5FIDE6IC4uLlNUKCcoTlVMTCw0MiknIEFTIGNvbXBfZG9tYWluX3dpdGhfdHlw bW9kIERFRkFVTFQgJygxMjM0LDIpJy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBDQVNUKEFSUkFZWzQyLDQx XSBBUyBkX2ludDQyW10gREVGQVVMVCAnezQyLCA0Mn0nIE9OIENPTlZFUlNJT04gRVJST1IpOwor ICBhcnJheSAgCistLS0tLS0tLS0KKyB7NDIsNDJ9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKEFS UkFZWzQyLDQxXSBBUyBkX2ludF9hcnIgREVGQVVMVCAnezQxLCA0M30nIE9OIENPTlZFUlNJT04g RVJST1IpOworICBhcnJheSAgCistLS0tLS0tLS0KKyB7NDEsNDN9CisoMSByb3cpCisKKy0tIHRl c3QgYXJyYXkgY29lcmNlCitTRUxFQ1QgQ0FTVChhcnJheVsnYSc6OnRleHRdIEFTIGludFtdIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS1lcnJvcgorRVJST1I6ICBpbnZhbGlk IGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAiYSIKK1NFTEVDVCBDQVNUKGFycmF5Wydh J10gQVMgaW50W10gREVGQVVMVCBBUlJBWVsxXSBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJh eSAKKy0tLS0tLS0KKyB7MX0KKygxIHJvdykKKworU0VMRUNUIENBU1QoYXJyYXlbMTEuMTJdIEFT IGRhdGVbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgYXJyYXkgCistLS0t LS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKGFycmF5WzExMTExMTExMTExMTExMTExXSBB UyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgYXJyYXkgCistLS0t LS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKGFycmF5W1snYWJjJ10sWzQ1Nl1dIEFTIGlu dFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0K KyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ3sxMjMsYWJjLDQ1Nn0nIEFTIGludFtdIERFRkFV TFQgJ3stNzg5fScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgIGludDQgIAorLS0tLS0tLS0KKyB7 LTc4OX0KKygxIHJvdykKKworU0VMRUNUIENBU1QoJ3syMzQsZGVmLDU2N30nOjp0ZXh0W10gQVMg aW50ZWdlcltdIERFRkFVTFQgJ3stMTAxMX0nIE9OIENPTlZFUlNJT04gRVJST1IpOworICBpbnQ0 ICAgCistLS0tLS0tLS0KKyB7LTEwMTF9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKEFSUkFZW1sn MSddLCBbJ3RocmVlJ10sWydhJ11dIEFTIGludFtdIERFRkFVTFQgJ3sxLDJ9JyBPTiBDT05WRVJT SU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0KKyB7MSwyfQorKDEgcm93KQorCitTRUxFQ1Qg Q0FTVChBUlJBWVtbJzEnLCAnMiddLCBbJ3RocmVlJywgJ2EnXV0gQVMgaW50W10gREVGQVVMVCAn ezIxLDIyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tb2sKKyAgYXJyYXkgIAorLS0tLS0tLS0t CisgezIxLDIyfQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChBUlJBWVtbJzEnLCAnMiddLCBbJ3Ro cmVlJzo6aW50LCAnYSddXSBBUyBpbnRbXSBERUZBVUxUICd7MjEsMjJ9JyBPTiBDT05WRVJTSU9O IEVSUk9SKTsgLS1lcnJvcgorRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBp bnRlZ2VyOiAidGhyZWUiCitMSU5FIDE6IFNFTEVDVCBDQVNUKEFSUkFZW1snMScsICcyJ10sIFsn dGhyZWUnOjppbnQsICdhJ11dIEFTIGludFtdIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorU0VMRUNUIENBU1QoQVJSQVlbMSwgJ3RocmVlJzo6aW50XSBBUyBp bnRbXSBERUZBVUxUICd7MjEsMjJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS1lcnJvcgorRVJS T1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAidGhyZWUiCitMSU5F IDE6IFNFTEVDVCBDQVNUKEFSUkFZWzEsICd0aHJlZSc6OmludF0gQVMgaW50W10gREVGQVVMVCAn ezIxLDIyfS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLS0tLXNhZmUgY2Fz dCB3aXRoIGdlb21ldHJ5IGRhdGEgdHlwZQorU0VMRUNUIENBU1QoJygxLDIpJzo6cG9pbnQgQVMg Ym94IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgYm94ICAgICAKKy0t LS0tLS0tLS0tLS0KKyAoMSwyKSwoMSwyKQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnWyhOYU4s MSksKE5hTixpbmZpbml0eSldJzo6bHNlZyBBUyBwb2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CisgICAgIHBvaW50ICAgICAgCistLS0tLS0tLS0tLS0tLS0tCisgKE5hTixJ bmZpbml0eSkKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ1soMWUrMzAwLEluZmluaXR5KSwoMWUr MzAwLEluZmluaXR5KV0nOjpsc2VnIEFTIHBvaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKTsKKyAgICAgICBwb2ludCAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMWUr MzAwLEluZmluaXR5KQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnWygxLDIpLCgzLDQpXSc6OnBh dGggYXMgcG9seWdvbiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgcG9seWdv biAKKy0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnKE5hTiwxLjAsTmFOLGlu ZmluaXR5KSc6OmJveCBBUyBwb2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7 CisgICAgIHBvaW50ICAgICAgCistLS0tLS0tLS0tLS0tLS0tCisgKE5hTixJbmZpbml0eSkKKygx IHJvdykKKworU0VMRUNUIENBU1QoJygyLjAsMi4wLDAuMCwwLjApJzo6Ym94IEFTIGxzZWcgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICBsc2VnICAgICAgCistLS0tLS0t LS0tLS0tLS0KKyBbKDIsMiksKDAsMCldCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcoMi4wLDIu MCwwLjAsMC4wKSc6OmJveCBBUyBwb2x5Z29uIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKKyAgICAgICAgICBwb2x5Z29uICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKCgwLDApLCgwLDIpLCgyLDIpLCgyLDApKQorKDEgcm93KQorCitTRUxFQ1QgQ0FT VCgnKDIuMCwyLjAsMC4wLDAuMCknOjpib3ggQVMgcGF0aCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CisgcGF0aCAKKy0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgn KDIuMCxpbmZpbml0eSxOYU4saW5maW5pdHkpJzo6Ym94IEFTIGNpcmNsZSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgICAgIGNpcmNsZSAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgPChOYU4sSW5maW5pdHkpLE5hTj4KKygxIHJvdykKKworU0VMRUNUIENB U1QoJyhOYU4sMC4wKSwoMi4wLDQuMCksKDAuMCxpbmZpbml0eSknOjpwb2x5Z29uIEFTIHBvaW50 IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgcG9pbnQgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0KKyAoTmFOLEluZmluaXR5KQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgn KDIuMCwwLjApLCgyLjAsNC4wKSwoMC4wLDAuMCknOjpwb2x5Z29uIEFTIHBhdGggREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAgICBwYXRoICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAoKDIsMCksKDIsNCksKDAsMCkpCisoMSByb3cpCisKK1NFTEVDVCBD QVNUKCcoMi4wLDAuMCksKDIuMCw0LjApLCgwLjAsMC4wKSc6OnBvbHlnb24gQVMgYm94IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgYm94ICAgICAKKy0tLS0tLS0tLS0t LS0KKyAoMiw0KSwoMCwwKQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnKE5hTixpbmZpbml0eSks KDIuMCw0LjApLCgwLjAsaW5maW5pdHkpJzo6cG9seWdvbiBBUyBjaXJjbGUgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAgICBjaXJjbGUgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIDwoTmFOLEluZmluaXR5KSxOYU4+CisoMSByb3cpCisKK1NFTEVDVCBD QVNUKCc8KDUsMSksMz4nOjpjaXJjbGUgQVMgcG9pbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpOworIHBvaW50IAorLS0tLS0tLQorICg1LDEpCisoMSByb3cpCisKK1NFTEVDVCBD QVNUKCc8KDMsNSksMD4nOjpjaXJjbGUgYXMgYm94IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKTsKKyAgICAgYm94ICAgICAKKy0tLS0tLS0tLS0tLS0KKyAoMyw1KSwoMyw1KQorKDEg cm93KQorCistLSBub3Qgc3VwcG9ydGVkIGJlY2F1c2UgdGhlIGNhc3QgZnJvbSBjaXJjbGUgdG8g cG9seWdvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIFNRTAorLS0gZnVuY3Rpb24sIHdoaWNoIGNhbm5v dCBiZSBlcnJvci1zYWZlLgorU0VMRUNUIENBU1QoJzwoMyw1KSwwPic6OmNpcmNsZSBhcyBwb2x5 Z29uIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK0VSUk9SOiAgY2Fubm90IGNh c3QgdHlwZSBjaXJjbGUgdG8gcG9seWdvbiB3aGVuIERFRkFVTFQgZXhwcmVzc2lvbiBpcyBzcGVj aWZpZWQgaW4gQ0FTVCAuLi4gT04gQ09OVkVSU0lPTiBFUlJPUgorTElORSAxOiBTRUxFQ1QgQ0FT VCgnPCgzLDUpLDA+Jzo6Y2lyY2xlIGFzIHBvbHlnb24gREVGQVVMVCBOVUxMIE9OIEMuLi4KKyAg ICAgICAgICAgICAgICAgICAgXgorSElOVDogIEV4cGxpY2l0IGNhc3QgaXMgZGVmaW5lZCBidXQg ZGVmaW5pdGlvbiBpcyBub3QgZXJyb3Igc2FmZQorLS0tLS1zYWZlIGNhc3QgZnJvbS90byBtb25l eSB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQsIGFsbCB0aGUgZm9sbG93aW5nIHdvdWxkIHJlc3VsdCBl cnJvcgorU0VMRUNUIENBU1QoTlVMTDo6aW50OCBBUyBtb25leSBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUik7CitFUlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgYmlnaW50IHRvIG1vbmV5 IHdoZW4gREVGQVVMVCBleHByZXNzaW9uIGlzIHNwZWNpZmllZCBpbiBDQVNUIC4uLiBPTiBDT05W RVJTSU9OIEVSUk9SCitMSU5FIDE6IFNFTEVDVCBDQVNUKE5VTEw6OmludDggQVMgbW9uZXkgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRS4uLgorICAgICAgICAgICAgICAgICAgICBeCitISU5U OiAgRXhwbGljaXQgY2FzdCBpcyBkZWZpbmVkIGJ1dCBkZWZpbml0aW9uIGlzIG5vdCBlcnJvciBz YWZlCitTRUxFQ1QgQ0FTVChOVUxMOjppbnQ0IEFTIG1vbmV5IERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBpbnRlZ2VyIHRvIG1vbmV5 IHdoZW4gREVGQVVMVCBleHByZXNzaW9uIGlzIHNwZWNpZmllZCBpbiBDQVNUIC4uLiBPTiBDT05W RVJTSU9OIEVSUk9SCitMSU5FIDE6IFNFTEVDVCBDQVNUKE5VTEw6OmludDQgQVMgbW9uZXkgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRS4uLgorICAgICAgICAgICAgICAgICAgICBeCitISU5U OiAgRXhwbGljaXQgY2FzdCBpcyBkZWZpbmVkIGJ1dCBkZWZpbml0aW9uIGlzIG5vdCBlcnJvciBz YWZlCitTRUxFQ1QgQ0FTVChOVUxMOjpudW1lcmljIEFTIG1vbmV5IERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBudW1lcmljIHRvIG1v bmV5IHdoZW4gREVGQVVMVCBleHByZXNzaW9uIGlzIHNwZWNpZmllZCBpbiBDQVNUIC4uLiBPTiBD T05WRVJTSU9OIEVSUk9SCitMSU5FIDE6IFNFTEVDVCBDQVNUKE5VTEw6Om51bWVyaWMgQVMgbW9u ZXkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJTy4uLgorICAgICAgICAgICAgICAgICAgICBeCitI SU5UOiAgRXhwbGljaXQgY2FzdCBpcyBkZWZpbmVkIGJ1dCBkZWZpbml0aW9uIGlzIG5vdCBlcnJv ciBzYWZlCitTRUxFQ1QgQ0FTVChOVUxMOjptb25leSBBUyBudW1lcmljIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBtb25leSB0byBu dW1lcmljIHdoZW4gREVGQVVMVCBleHByZXNzaW9uIGlzIHNwZWNpZmllZCBpbiBDQVNUIC4uLiBP TiBDT05WRVJTSU9OIEVSUk9SCitMSU5FIDE6IFNFTEVDVCBDQVNUKE5VTEw6Om1vbmV5IEFTIG51 bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJTy4uLgorICAgICAgICAgICAgICAgICAgICBe CitISU5UOiAgRXhwbGljaXQgY2FzdCBpcyBkZWZpbmVkIGJ1dCBkZWZpbml0aW9uIGlzIG5vdCBl cnJvciBzYWZlCitTRUxFQ1QgQ0FTVChOVUxMOjptb25leVtdIEFTIG51bWVyaWNbXSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitFUlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgbW9u ZXlbXSB0byBudW1lcmljW10gd2hlbiBERUZBVUxUIGV4cHJlc3Npb24gaXMgc3BlY2lmaWVkIGlu IENBU1QgLi4uIE9OIENPTlZFUlNJT04gRVJST1IKK0xJTkUgMTogU0VMRUNUIENBU1QoTlVMTDo6 bW9uZXlbXSBBUyBudW1lcmljW10gREVGQVVMVCBOVUxMIE9OIENPTlZFLi4uCisgICAgICAgICAg ICAgICAgICAgIF4KK0hJTlQ6ICBFeHBsaWNpdCBjYXN0IGlzIGRlZmluZWQgYnV0IGRlZmluaXRp b24gaXMgbm90IGVycm9yIHNhZmUKKy0tLS0tc2FmZSBjYXN0IGZyb20gYnl0ZWEgdHlwZSB0byBv dGhlciBkYXRhIHR5cGVzCitTRUxFQ1QgQ0FTVCAoJ1x4MTEyMjMzNDQ1NTY2Nzc4ODk5Jzo6Ynl0 ZWEgQVMgaW50OCBERUZBVUxUIDE5IE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDggCistLS0t LS0KKyAgIDE5CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdceDEyMzQ1Njc4OUEnOjpieXRlYSBB UyBpbnQ0IERFRkFVTFQgMjAgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50NCAKKy0tLS0tLQor ICAgMjAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ1x4MTIzNDU2Jzo6Ynl0ZWEgQVMgaW50MiBE RUZBVUxUIDIxIE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDIgCistLS0tLS0KKyAgIDIxCiso MSByb3cpCisKKy0tLS0tc2FmZSBjYXN0IGZyb20gYml0IHR5cGUgdG8gb3RoZXIgZGF0YSB0eXBl cworU0VMRUNUIENBU1QoJzExMTExMTExMTEwMDAwMSc6OmJpdCgxMDApIEFTIElOVCBERUZBVUxU IDIyIE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDQgCistLS0tLS0KKyAgIDIyCisoMSByb3cp CisKK1NFTEVDVCBDQVNUICgnMTExMTExMTExMTAwMDAxJzo6Yml0KDEwMCkgQVMgSU5UOCBERUZB VUxUIDIzIE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDggCistLS0tLS0KKyAgIDIzCisoMSBy b3cpCisKKy0tLS0tc2FmZSBjYXN0IGZyb20gdGV4dCB0eXBlIHRvIG90aGVyIGRhdGEgdHlwZXMK K3NlbGVjdCBDQVNUKCdhLmIuYy5kJzo6dGV4dCBhcyByZWdjbGFzcyBkZWZhdWx0IE5VTEwgb24g Y29udmVyc2lvbiBlcnJvcik7CisgcmVnY2xhc3MgCistLS0tLS0tLS0tCisgCisoMSByb3cpCisK K0NSRUFURSBUQUJMRSB0ZXN0X3NhZmVjYXN0KGNvbDAgdGV4dCk7CitJTlNFUlQgSU5UTyB0ZXN0 X3NhZmVjYXN0KGNvbDApIFZBTFVFUyAoJzx2YWx1ZT5vbmU8L3ZhbHVlJyk7CitTRUxFQ1QgY29s MCBhcyB0ZXh0LAorICAgICAgIENBU1QoY29sMCBBUyByZWdjbGFzcyBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fcmVnY2xhc3MsCisgICAgICAgQ0FTVChjb2wwIEFTIHJl Z2NsYXNzIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBJUyBOVUxMIGFzIGV4cGVj dF90cnVlLAorICAgICAgIENBU1QoY29sMCBBUyAiY2hhciIgIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b19jaGFyLAorICAgICAgIENBU1QoY29sMCBBUyBuYW1lIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19uYW1lLAorICAgICAgIENBU1QoY29s MCBBUyB4bWwgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3htbAorRlJP TSB0ZXN0X3NhZmVjYXN0OworICAgICAgIHRleHQgICAgICAgIHwgdG9fcmVnY2xhc3MgfCBleHBl Y3RfdHJ1ZSB8IHRvX2NoYXIgfCAgICAgIHRvX25hbWUgICAgICB8IHRvX3htbCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgPHZhbHVlPm9uZTwvdmFsdWUgfCAgICAgICAgICAgICB8 IHQgICAgICAgICAgIHwgPCAgICAgICB8IDx2YWx1ZT5vbmU8L3ZhbHVlIHwgCisoMSByb3cpCisK K1NFTEVDVCBDQVNUKCcxOTIuMTY4LjEueCcgYXMgaW5ldCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CisgaW5ldCAKKy0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgn MTkyLjE2OC4xLjIvMzAnIGFzIGNpZHIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworIGNpZHIgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJzIyOjAwOjVjOjA4 OjU1OjA4OjAxOjAyJzo6bWFjYWRkcjggYXMgbWFjYWRkciBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CisgbWFjYWRkciAKKy0tLS0tLS0tLQorIAorKDEgcm93KQorCistLS0tLXNh ZmUgY2FzdCBiZXR3ZWVlbiByYW5nZSBkYXRhIHR5cGVzCitTRUxFQ1QgQ0FTVCgnWzEsMl0nOjpp bnQ0cmFuZ2UgQVMgaW50NG11bHRpcmFuZ2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworIGludDRtdWx0aXJhbmdlIAorLS0tLS0tLS0tLS0tLS0tLQorIHtbMSwzKX0KKygxIHJv dykKKworU0VMRUNUIENBU1QoJ1sxLDJdJzo6aW50OHJhbmdlIEFTIGludDhtdWx0aXJhbmdlIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBpbnQ4bXVsdGlyYW5nZSAKKy0tLS0t LS0tLS0tLS0tLS0KKyB7WzEsMyl9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdbMSwyXSc6Om51 bXJhbmdlICBBUyBudW1tdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KTsKKyBudW1tdWx0aXJhbmdlIAorLS0tLS0tLS0tLS0tLS0tCisge1sxLDJdfQorKDEgcm93KQor CitTRUxFQ1QgQ0FTVCgnWy1pbmZpbml0eSxpbmZpbml0eV0nOjpkYXRlcmFuZ2UgQVMgZGF0ZW11 bHRpcmFuZ2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICBkYXRlbXVs dGlyYW5nZSAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7Wy1pbmZpbml0eSxpbmZp bml0eV19CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdbLWluZmluaXR5LGluZmluaXR5XSc6OnRz cmFuZ2UgQVMgdHNtdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsK KyAgICAgIHRzbXVsdGlyYW5nZSAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisge1st aW5maW5pdHksaW5maW5pdHldfQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnWy1pbmZpbml0eSxp bmZpbml0eV0nOjp0c3R6cmFuZ2UgQVMgdHN0em11bHRpcmFuZ2UgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpOworICAgICB0c3R6bXVsdGlyYW5nZSAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyB7Wy1pbmZpbml0eSxpbmZpbml0eV19CisoMSByb3cpCisKKy0tLS0tc2Fm ZSBjYXN0IGJldHdlZWVuIG51bWVyaWMgZGF0YSB0eXBlcworQ1JFQVRFIFRBQkxFIHRlc3Rfc2Fm ZWNhc3QxKAorICBjb2wxIGZsb2F0NCwgY29sMiBmbG9hdDgsIGNvbDMgbnVtZXJpYywgY29sNCBu dW1lcmljW10sCisgIGNvbDUgaW50MiBkZWZhdWx0IDMyNzY3LAorICBjb2w2IGludDQgZGVmYXVs dCAzMjc2OCwKKyAgY29sNyBpbnQ4IGRlZmF1bHQgNDI5NDk2NzI5Nik7CitJTlNFUlQgSU5UTyB0 ZXN0X3NhZmVjYXN0MSBWQUxVRVMoJzExLjEyMzQnLCAnMTEuMTIzNCcsICc5MjIzMzcyMDM2ODU0 Nzc1ODA4JywgJ3sxMS4xMjM0fSc6Om51bWVyaWNbXSk7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVj YXN0MSBWQUxVRVMoJ2luZicsICdpbmYnLCAnaW5mJywgJ3sxMS4xMjM0LCAxMiwgaW5mLCBOYU59 Jzo6bnVtZXJpY1tdKTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3QxIFZBTFVFUygnLWluZics ICctaW5mJywgJy1pbmYnLCAnezExLjEyMzQsIDEyLCAtaW5mLCBOYU59Jzo6bnVtZXJpY1tdKTsK K0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3QxIFZBTFVFUygnTmFOJywgJ05hTicsICdOYU4nLCAn ezExLjEyMzQsIDEyLCAtaW5mLCBOYU59Jzo6bnVtZXJpY1tdKTsKK1NFTEVDVCBjb2w1IGFzIGlu dDIsCisgICAgICAgQ0FTVChjb2w1IEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FTVChjb2w1IEFTIGludDQgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDQsCisgICAgICAgQ0FTVChjb2w1IEFTIG9p ZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fb2lkLAorICAgICAgIENB U1QoY29sNSBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19p bnQ4LAorICAgICAgIENBU1QoY29sNSBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDUgYXMgZmxvYXQ4IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChj b2w1IGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251 bWVyaWMsCisgICAgICAgQ0FTVChjb2w1IGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2Fz dDE7CisgaW50MiAgfCB0b19pbnQyIHwgdG9faW50NCB8IHRvX29pZCB8IHRvX2ludDggfCB0b19m bG9hdDQgfCB0b19mbG9hdDggfCB0b19udW1lcmljIHwgdG9fbnVtZXJpY19zY2FsZSAKKy0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIDMyNzY3IHwgICAzMjc2 NyB8ICAgMzI3NjcgfCAgMzI3NjcgfCAgIDMyNzY3IHwgICAgIDMyNzY3IHwgICAgIDMyNzY3IHwg ICAgICAzMjc2NyB8ICAgICAgICAgIDMyNzY3LjAKKyAzMjc2NyB8ICAgMzI3NjcgfCAgIDMyNzY3 IHwgIDMyNzY3IHwgICAzMjc2NyB8ICAgICAzMjc2NyB8ICAgICAzMjc2NyB8ICAgICAgMzI3Njcg fCAgICAgICAgICAzMjc2Ny4wCisgMzI3NjcgfCAgIDMyNzY3IHwgICAzMjc2NyB8ICAzMjc2NyB8 ICAgMzI3NjcgfCAgICAgMzI3NjcgfCAgICAgMzI3NjcgfCAgICAgIDMyNzY3IHwgICAgICAgICAg MzI3NjcuMAorIDMyNzY3IHwgICAzMjc2NyB8ICAgMzI3NjcgfCAgMzI3NjcgfCAgIDMyNzY3IHwg ICAgIDMyNzY3IHwgICAgIDMyNzY3IHwgICAgICAzMjc2NyB8ICAgICAgICAgIDMyNzY3LjAKKyg0 IHJvd3MpCisKK1NFTEVDVCBjb2w2IGFzIGludDQsCisgICAgICAgQ0FTVChjb2w2IEFTIGludDIg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FT VChjb2w2IEFTIGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2lu dDQsCisgICAgICAgQ0FTVChjb2w2IEFTIG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fb2lkLAorICAgICAgIENBU1QoY29sNiBhcyBpbnQ4IERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAgIENBU1QoY29sNiBhcyBmbG9h dDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAg ICBDQVNUKGNvbDYgYXMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2w2IGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FTVChjb2w2IGFzIG51 bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVy aWNfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisgaW50NCAgfCB0b19pbnQyIHwgdG9faW50 NCB8IHRvX29pZCB8IHRvX2ludDggfCB0b19mbG9hdDQgfCB0b19mbG9hdDggfCB0b19udW1lcmlj IHwgdG9fbnVtZXJpY19zY2FsZSAKKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLQorIDMyNzY4IHwgICAgICAgICB8ICAgMzI3NjggfCAgMzI3NjggfCAgIDMyNzY4 IHwgICAgIDMyNzY4IHwgICAgIDMyNzY4IHwgICAgICAzMjc2OCB8ICAgICAgICAgIDMyNzY4LjAK KyAzMjc2OCB8ICAgICAgICAgfCAgIDMyNzY4IHwgIDMyNzY4IHwgICAzMjc2OCB8ICAgICAzMjc2 OCB8ICAgICAzMjc2OCB8ICAgICAgMzI3NjggfCAgICAgICAgICAzMjc2OC4wCisgMzI3NjggfCAg ICAgICAgIHwgICAzMjc2OCB8ICAzMjc2OCB8ICAgMzI3NjggfCAgICAgMzI3NjggfCAgICAgMzI3 NjggfCAgICAgIDMyNzY4IHwgICAgICAgICAgMzI3NjguMAorIDMyNzY4IHwgICAgICAgICB8ICAg MzI3NjggfCAgMzI3NjggfCAgIDMyNzY4IHwgICAgIDMyNzY4IHwgICAgIDMyNzY4IHwgICAgICAz Mjc2OCB8ICAgICAgICAgIDMyNzY4LjAKKyg0IHJvd3MpCisKK1NFTEVDVCBjb2w3IGFzIGludDgs CisgICAgICAgQ0FTVChjb2w3IEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FTVChjb2w3IEFTIGludDQgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDQsCisgICAgICAgQ0FTVChjb2w3IEFTIG9pZCBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fb2lkLAorICAgICAgIENBU1Qo Y29sNyBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4 LAorICAgICAgIENBU1QoY29sNyBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDcgYXMgZmxvYXQ4IERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2w3 IGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVy aWMsCisgICAgICAgQ0FTVChjb2w3IGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7 CisgICAgaW50OCAgICB8IHRvX2ludDIgfCB0b19pbnQ0IHwgdG9fb2lkIHwgIHRvX2ludDggICB8 ICB0b19mbG9hdDQgIHwgdG9fZmxvYXQ4ICB8IHRvX251bWVyaWMgfCB0b19udW1lcmljX3NjYWxl IAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0KKyA0Mjk0OTY3Mjk2IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCA0Mjk0OTY3Mjk2 IHwgNC4yOTQ5N2UrMDkgfCA0Mjk0OTY3Mjk2IHwgNDI5NDk2NzI5NiB8ICAgICAgICAgICAgICAg ICAKKyA0Mjk0OTY3Mjk2IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCA0Mjk0OTY3Mjk2 IHwgNC4yOTQ5N2UrMDkgfCA0Mjk0OTY3Mjk2IHwgNDI5NDk2NzI5NiB8ICAgICAgICAgICAgICAg ICAKKyA0Mjk0OTY3Mjk2IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCA0Mjk0OTY3Mjk2 IHwgNC4yOTQ5N2UrMDkgfCA0Mjk0OTY3Mjk2IHwgNDI5NDk2NzI5NiB8ICAgICAgICAgICAgICAg ICAKKyA0Mjk0OTY3Mjk2IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCA0Mjk0OTY3Mjk2 IHwgNC4yOTQ5N2UrMDkgfCA0Mjk0OTY3Mjk2IHwgNDI5NDk2NzI5NiB8ICAgICAgICAgICAgICAg ICAKKyg0IHJvd3MpCisKK1NFTEVDVCBjb2wzIGFzIG51bWVyaWMsCisgICAgICAgQ0FTVChjb2wz IEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDIsCisg ICAgICAgQ0FTVChjb2wzIEFTIGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIHRvX2ludDQsCisgICAgICAgQ0FTVChjb2wzIEFTIG9pZCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fb2lkLAorICAgICAgIENBU1QoY29sMyBhcyBpbnQ4IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAgIENBU1QoY29s MyBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0 NCwKKyAgICAgICBDQVNUKGNvbDMgYXMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2wzIGFzIG51bWVyaWMgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FTVChj b2wzIGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX251bWVyaWNfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisgICAgICAgbnVtZXJpYyAg ICAgICB8IHRvX2ludDIgfCB0b19pbnQ0IHwgdG9fb2lkIHwgdG9faW50OCB8ICB0b19mbG9hdDQg IHwgICAgICB0b19mbG9hdDggICAgICAgfCAgICAgdG9fbnVtZXJpYyAgICAgIHwgdG9fbnVtZXJp Y19zY2FsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIDkyMjMzNzIwMzY4NTQ3NzU4MDgg fCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCA5LjIyMzM3ZSsxOCB8IDku MjIzMzcyMDM2ODU0NzhlKzE4IHwgOTIyMzM3MjAzNjg1NDc3NTgwOCB8ICAgICAgICAgICAgICAg ICAKKyAgICAgICAgICAgIEluZmluaXR5IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAg ICAgICAgIHwgICAgSW5maW5pdHkgfCAgICAgICAgICAgICBJbmZpbml0eSB8ICAgICAgICAgICAg SW5maW5pdHkgfCAgICAgICAgICAgICAgICAgCisgICAgICAgICAgIC1JbmZpbml0eSB8ICAgICAg ICAgfCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgLUluZmluaXR5IHwgICAgICAgICAg ICAtSW5maW5pdHkgfCAgICAgICAgICAgLUluZmluaXR5IHwgICAgICAgICAgICAgICAgIAorICAg ICAgICAgICAgICAgICBOYU4gfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAg fCAgICAgICAgIE5hTiB8ICAgICAgICAgICAgICAgICAgTmFOIHwgICAgICAgICAgICAgICAgIE5h TiB8ICAgICAgICAgICAgICBOYU4KKyg0IHJvd3MpCisKK1NFTEVDVCBjb2w0IGFzIG51bV9hcnIs CisgICAgICAgQ0FTVChjb2w0IEFTIGludDJbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgaW50MmFyciwKKyAgICAgICBDQVNUKGNvbDQgQVMgaW50NFtdIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBpbnQ0YXJyLAorICAgICAgIENBU1QoY29sNCBhcyBp bnQ4W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGludDhhcnIsCisgICAg ICAgQ0FTVChjb2w0IGFzIGZsb2F0NFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyBmNGFyciwKKyAgICAgICBDQVNUKGNvbDQgYXMgZmxvYXQ4W10gREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIGY4YXJyLAorICAgICAgIENBU1QoY29sNCBhcyBudW1lcmlj KDEwLDEpW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIG51bWFycgorRlJP TSB0ZXN0X3NhZmVjYXN0MTsKKyAgICAgICAgICBudW1fYXJyICAgICAgICAgICB8IGludDJhcnIg fCBpbnQ0YXJyIHwgaW50OGFyciB8ICAgICAgICAgICBmNGFyciAgICAgICAgICAgIHwgICAgICAg ICAgIGY4YXJyICAgICAgICAgICAgfCBudW1hcnIgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIHsxMS4xMjM0fSAg ICAgICAgICAgICAgICAgIHwgezExfSAgICB8IHsxMX0gICAgfCB7MTF9ICAgIHwgezExLjEyMzR9 ICAgICAgICAgICAgICAgICAgfCB7MTEuMTIzNH0gICAgICAgICAgICAgICAgICB8IHsxMS4xfQor IHsxMS4xMjM0LDEyLEluZmluaXR5LE5hTn0gIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAg IHwgezExLjEyMzQsMTIsSW5maW5pdHksTmFOfSAgfCB7MTEuMTIzNCwxMixJbmZpbml0eSxOYU59 ICB8IAorIHsxMS4xMjM0LDEyLC1JbmZpbml0eSxOYU59IHwgICAgICAgICB8ICAgICAgICAgfCAg ICAgICAgIHwgezExLjEyMzQsMTIsLUluZmluaXR5LE5hTn0gfCB7MTEuMTIzNCwxMiwtSW5maW5p dHksTmFOfSB8IAorIHsxMS4xMjM0LDEyLC1JbmZpbml0eSxOYU59IHwgICAgICAgICB8ICAgICAg ICAgfCAgICAgICAgIHwgezExLjEyMzQsMTIsLUluZmluaXR5LE5hTn0gfCB7MTEuMTIzNCwxMiwt SW5maW5pdHksTmFOfSB8IAorKDQgcm93cykKKworU0VMRUNUIGNvbDEgYXMgZmxvYXQ0LAorICAg ICAgIENBU1QoY29sMSBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19pbnQyLAorICAgICAgIENBU1QoY29sMSBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ0LAorICAgICAgIENBU1QoY29sMSBBUyBvaWQgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDEg YXMgaW50OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAg ICAgICBDQVNUKGNvbDEgYXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2wxIGFzIGZsb2F0OCBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sMSBhcyBu dW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAor ICAgICAgIENBU1QoY29sMSBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworICBm bG9hdDQgICB8IHRvX2ludDIgfCB0b19pbnQ0IHwgdG9fb2lkIHwgdG9faW50OCB8IHRvX2Zsb2F0 NCB8ICAgIHRvX2Zsb2F0OCAgICAgfCB0b19udW1lcmljIHwgdG9fbnVtZXJpY19zY2FsZSAKKy0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisg ICAxMS4xMjM0IHwgICAgICAxMSB8ICAgICAgMTEgfCAgICAgICAgfCAgICAgIDExIHwgICAxMS4x MjM0IHwgMTEuMTIzMzk5NzM0NDk3MSB8ICAgIDExLjEyMzQgfCAgICAgICAgICAgICAxMS4xCisg IEluZmluaXR5IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwgIEluZmlu aXR5IHwgICAgICAgICBJbmZpbml0eSB8ICAgSW5maW5pdHkgfCAgICAgICAgICAgICAgICAgCisg LUluZmluaXR5IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwgLUluZmlu aXR5IHwgICAgICAgIC1JbmZpbml0eSB8ICAtSW5maW5pdHkgfCAgICAgICAgICAgICAgICAgCisg ICAgICAgTmFOIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwgICAgICAg TmFOIHwgICAgICAgICAgICAgIE5hTiB8ICAgICAgICBOYU4gfCAgICAgICAgICAgICAgTmFOCiso NCByb3dzKQorCitTRUxFQ1QgY29sMiBhcyBmbG9hdDgsCisgICAgICAgQ0FTVChjb2wyIEFTIGlu dDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDIsCisgICAgICAg Q0FTVChjb2wyIEFTIGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X2ludDQsCisgICAgICAgQ0FTVChjb2wyIEFTIG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9fb2lkLAorICAgICAgIENBU1QoY29sMiBhcyBpbnQ4IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAgIENBU1QoY29sMiBhcyBm bG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAg ICAgICBDQVNUKGNvbDIgYXMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2wyIGFzIG51bWVyaWMgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FTVChjb2wyIGFz IG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251 bWVyaWNfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisgIGZsb2F0OCAgIHwgdG9faW50MiB8 IHRvX2ludDQgfCB0b19vaWQgfCB0b19pbnQ4IHwgdG9fZmxvYXQ0IHwgdG9fZmxvYXQ4IHwgdG9f bnVtZXJpYyB8IHRvX251bWVyaWNfc2NhbGUgCistLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAxMS4xMjM0IHwgICAgICAxMSB8ICAgICAgMTEgfCAg ICAgICAgfCAgICAgIDExIHwgICAxMS4xMjM0IHwgICAxMS4xMjM0IHwgICAgMTEuMTIzNCB8ICAg ICAgICAgICAgIDExLjEKKyAgSW5maW5pdHkgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8 ICAgICAgICAgfCAgSW5maW5pdHkgfCAgSW5maW5pdHkgfCAgIEluZmluaXR5IHwgICAgICAgICAg ICAgICAgIAorIC1JbmZpbml0eSB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAgICAg ICB8IC1JbmZpbml0eSB8IC1JbmZpbml0eSB8ICAtSW5maW5pdHkgfCAgICAgICAgICAgICAgICAg CisgICAgICAgTmFOIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwgICAg ICAgTmFOIHwgICAgICAgTmFOIHwgICAgICAgIE5hTiB8ICAgICAgICAgICAgICBOYU4KKyg0IHJv d3MpCisKKy0tIGRhdGUvdGltZXN0YW1wL2ludGVydmFsIHJlbGF0ZWQgc2FmZSB0eXBlIGNhc3QK K0NSRUFURSBUQUJMRSB0ZXN0X3NhZmVjYXN0MigKKyAgY29sMCBkYXRlLCBjb2wxIHRpbWVzdGFt cCwgY29sMiB0aW1lc3RhbXB0eiwKKyAgY29sMyBpbnRlcnZhbCwgY29sNCB0aW1lLCBjb2w1IHRp bWV0eik7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MiBWQUxVRVMKKygnLWluZmluaXR5Jywg Jy1pbmZpbml0eScsICctaW5maW5pdHknLCAnLWluZmluaXR5JywKKyAgJzIwMDMtMDMtMDcgMTU6 MzY6MzkgQW1lcmljYS9OZXdfWW9yaycsICcyMDAzLTA3LTA3IDE1OjM2OjM5IEFtZXJpY2EvTmV3 X1lvcmsnKSwKKygnLWluZmluaXR5JywgJ2luZmluaXR5JywgJ2luZmluaXR5JywgJ2luZmluaXR5 JywKKyAgJzExOjU5OjU5Ljk5IFBNJywgJzExOjU5OjU5Ljk5IFBNIFBEVCcpOworU0VMRUNUIGNv bDAgYXMgZGF0ZSwKKyAgICAgICBDQVNUKGNvbDAgQVMgdGltZXN0YW1wdHogREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcHR6LAorICAgICAgIENBU1QoY29s MCBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19kYXRlLAor ICAgICAgIENBU1QoY29sMCBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b190aW1lcywKKyAgICAgICBDQVNUKGNvbDAgQVMgdGltZXR6IERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHosCisgICAgICAgQ0FTVChjb2wwIEFTIHRp bWVzdGFtcCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0 YW1wX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QyOworICAgZGF0ZSAgICB8IHRvX3RpbWVzdGFt cHR6IHwgIHRvX2RhdGUgIHwgdG9fdGltZXMgfCB0b190aW1ldHogfCB0b190aW1lc3RhbXBfc2Nh bGUgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAtaW5maW5pdHkgfCAtaW5maW5pdHkg ICAgICB8IC1pbmZpbml0eSB8ICAgICAgICAgIHwgICAgICAgICAgIHwgLWluZmluaXR5CisgLWlu ZmluaXR5IHwgLWluZmluaXR5ICAgICAgfCAtaW5maW5pdHkgfCAgICAgICAgICB8ICAgICAgICAg ICB8IC1pbmZpbml0eQorKDIgcm93cykKKworU0VMRUNUIGNvbDEgYXMgdGltZXN0YW1wLAorICAg ICAgIENBU1QoY29sMSBBUyB0aW1lc3RhbXB0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fdGltZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wxIEFTIGRhdGUgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2RhdGUsCisgICAgICAgQ0FTVChjb2wx IEFTIHRpbWUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzLAor ICAgICAgIENBU1QoY29sMSBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX3RpbWV0eiwKKyAgICAgICBDQVNUKGNvbDEgQVMgdGltZXN0YW1wKDIpIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXBfc2NhbGUKK0ZST00g dGVzdF9zYWZlY2FzdDI7CisgdGltZXN0YW1wIHwgdG9fdGltZXN0YW1wdHogfCAgdG9fZGF0ZSAg fCB0b190aW1lcyB8IHRvX3RpbWV0eiB8IHRvX3RpbWVzdGFtcF9zY2FsZSAKKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLQorIC1pbmZpbml0eSB8IC1pbmZpbml0eSAgICAgIHwgLWluZmluaXR5 IHwgICAgICAgICAgfCAgICAgICAgICAgfCAtaW5maW5pdHkKKyBpbmZpbml0eSAgfCBpbmZpbml0 eSAgICAgICB8IGluZmluaXR5ICB8ICAgICAgICAgIHwgICAgICAgICAgIHwgaW5maW5pdHkKKygy IHJvd3MpCisKK1NFTEVDVCBjb2wyIGFzIHRpbWVzdGFtcHR6LAorICAgICAgIENBU1QoY29sMiBB UyB0aW1lc3RhbXB0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGlt ZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wyIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX2RhdGUsCisgICAgICAgQ0FTVChjb2wyIEFTIHRpbWUgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzLAorICAgICAgIENBU1QoY29s MiBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWV0 eiwKKyAgICAgICBDQVNUKGNvbDIgQVMgdGltZXN0YW1wKDIpIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXBfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7 CisgdGltZXN0YW1wdHogfCB0b190aW1lc3RhbXB0eiB8ICB0b19kYXRlICB8IHRvX3RpbWVzIHwg dG9fdGltZXR6IHwgdG9fdGltZXN0YW1wX3NjYWxlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAtaW5maW5pdHkgICB8IC1pbmZpbml0eSAgICAgIHwgLWluZmluaXR5IHwgICAgICAg ICAgfCAgICAgICAgICAgfCAtaW5maW5pdHkKKyBpbmZpbml0eSAgICB8IGluZmluaXR5ICAgICAg IHwgaW5maW5pdHkgIHwgICAgICAgICAgfCAgICAgICAgICAgfCBpbmZpbml0eQorKDIgcm93cykK KworU0VMRUNUIGNvbDMgYXMgaW50ZXJ2YWwsCisgICAgICAgQ0FTVChjb2wzIEFTIHRpbWVzdGFt cHR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXB0eiwK KyAgICAgICBDQVNUKGNvbDMgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9fZGF0ZSwKKyAgICAgICBDQVNUKGNvbDMgQVMgdGltZSBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXMsCisgICAgICAgQ0FTVChjb2wzIEFTIHRpbWV0 eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXR6LAorICAgICAg IENBU1QoY29sMyBBUyB0aW1lc3RhbXAoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX3RpbWVzdGFtcF9zY2FsZSwKKyAgICAgICBDQVNUKGNvbDMgQVMgaW50ZXJ2YWwo MikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludGVydmFsX3NjYWxl CitGUk9NIHRlc3Rfc2FmZWNhc3QyOworIGludGVydmFsICB8IHRvX3RpbWVzdGFtcHR6IHwgdG9f ZGF0ZSB8IHRvX3RpbWVzIHwgdG9fdGltZXR6IHwgdG9fdGltZXN0YW1wX3NjYWxlIHwgdG9faW50 ZXJ2YWxfc2NhbGUgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0KKyAtaW5maW5pdHkgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICB8ICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8IC1pbmZpbml0eQorIGluZmluaXR5ICB8ICAg ICAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgIHwgaW5maW5pdHkKKygyIHJvd3MpCisKK1NFTEVDVCBjb2w0IGFzIHRpbWUsCisg ICAgICAgQ0FTVChjb2w0IEFTIHRpbWUoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX3RpbWVzLAorICAgICAgIENBU1QoY29sNCBBUyB0aW1ldHogREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIElTIE5PVCBOVUxMIGFzIHRvX3RpbWV0eiwKKyAgICAgICBD QVNUKGNvbDQgQVMgaW50ZXJ2YWwoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIHRvX2ludGVydmFsLAorICAgICAgIENBU1QoY29sNCBBUyBpbnRlcnZhbCgyKSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2YWxfc2NhbGUKK0ZST00gdGVz dF9zYWZlY2FzdDI7CisgICAgdGltZSAgICAgfCAgdG9fdGltZXMgICB8IHRvX3RpbWV0eiB8ICAg ICAgICAgIHRvX2ludGVydmFsICAgICAgICAgIHwgICAgICAgdG9faW50ZXJ2YWxfc2NhbGUgICAg ICAgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMTU6 MzY6MzkgICAgfCAxNTozNjozOSAgICB8IHQgICAgICAgICB8IEAgMTUgaG91cnMgMzYgbWlucyAz OSBzZWNzICAgIHwgQCAxNSBob3VycyAzNiBtaW5zIDM5IHNlY3MKKyAyMzo1OTo1OS45OSB8IDIz OjU5OjU5Ljk5IHwgdCAgICAgICAgIHwgQCAyMyBob3VycyA1OSBtaW5zIDU5Ljk5IHNlY3MgfCBA IDIzIGhvdXJzIDU5IG1pbnMgNTkuOTkgc2VjcworKDIgcm93cykKKworU0VMRUNUIGNvbDUgYXMg dGltZXR6LAorICAgICAgIENBU1QoY29sNSBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b190aW1lLAorICAgICAgIENBU1QoY29sNSBBUyB0aW1lKDIpIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lX3NjYWxlLAorICAgICAgIENB U1QoY29sNSBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X3RpbWV0eiwKKyAgICAgICBDQVNUKGNvbDUgQVMgdGltZXR6KDYpIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHpfc2NhbGUsCisgICAgICAgQ0FTVChjb2w1IEFT IGludGVydmFsIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnRlcnZh bCwKKyAgICAgICBDQVNUKGNvbDUgQVMgaW50ZXJ2YWwoMikgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX2ludGVydmFsX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QyOwor ICAgICB0aW1ldHogICAgIHwgICB0b190aW1lICAgfCB0b190aW1lX3NjYWxlIHwgICB0b190aW1l dHogICAgfCB0b190aW1ldHpfc2NhbGUgfCB0b19pbnRlcnZhbCB8IHRvX2ludGVydmFsX3NjYWxl IAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLQorIDE1OjM2OjM5LTA0ICAgIHwgMTU6MzY6MzkgICAgfCAxNTozNjozOSAgICAgIHwgMTU6 MzY6MzktMDQgICAgfCAxNTozNjozOS0wNCAgICAgfCAgICAgICAgICAgICB8IAorIDIzOjU5OjU5 Ljk5LTA3IHwgMjM6NTk6NTkuOTkgfCAyMzo1OTo1OS45OSAgIHwgMjM6NTk6NTkuOTktMDcgfCAy Mzo1OTo1OS45OS0wNyAgfCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworQ1JFQVRFIFRBQkxF IHRlc3Rfc2FmZWNhc3QzKGNvbDAganNvbmIpOworSU5TRVJUIElOVE8gdGVzdF9zYWZlY2FzdDMo Y29sMCkgVkFMVUVTICgnInRlc3QiJyk7CitTRUxFQ1QgY29sMCBhcyBqc29uYiwKKyAgICAgICBD QVNUKGNvbDAgQVMgaW50ZWdlciBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9faW50ZWdlciwKKyAgICAgICBDQVNUKGNvbDAgQVMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDAgQVMgYmln aW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAg IENBU1QoY29sMCBBUyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDAgQVMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2wwIEFTIGJvb2xl YW4gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Jvb2wsCisgICAgICAg Q0FTVChjb2wwIEFTIHNtYWxsaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19zbWFsbGludAorRlJPTSB0ZXN0X3NhZmVjYXN0MzsKKyBqc29uYiAgfCB0b19pbnRlZ2Vy IHwgdG9fbnVtZXJpYyB8IHRvX2ludDggfCB0b19mbG9hdDQgfCB0b19mbG9hdDggfCB0b19ib29s IHwgdG9fc21hbGxpbnQgCistLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorICJ0 ZXN0IiB8ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICB8ICAg ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgIAorKDEgcm93KQorCistLSB0ZXN0IGRlcGFy c2UKK1NFVCBkYXRlc3R5bGUgVE8gSVNPLCBZTUQ7CitDUkVBVEUgVklFVyBzYWZlY2FzdHZpZXcg QVMKK1NFTEVDVCBDQVNUKCcxMjM0JyBhcyBjaGFyKDMpIERFRkFVTFQgLTExMTEgT04gQ09OVkVS U0lPTiBFUlJPUiksCisgICAgICAgQ0FTVCgxIGFzIGRhdGUgREVGQVVMVCAoKCcyMDI1LURlYy0w Nic6OmRhdGUgKyByYW5kb20obWluPT4xLCBtYXg9PjE6OmludCkpKSBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyBjYXN0MCwKKyAgICAgICBDQVNUKEFSUkFZW1snMSddLCBbJ3RocmVlJ10sWydhJ11d IEFTIGludFtdIERFRkFVTFQgJ3sxLDJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0MSwK KyAgICAgICBDQVNUKEFSUkFZW1snMScsICcyJ10sIFsndGhyZWUnLCAnYSddXSBBUyBkYXRlW10g REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGNhc3QyLAorICAgICAgIENBU1Qo QVJSQVlbJ3RocmVlJ10gQVMgSU5UW10gREVGQVVMVCAnezEsMn0nIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIGNhc3QzOworXHN2IHNhZmVjYXN0dmlldworQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBw dWJsaWMuc2FmZWNhc3R2aWV3IEFTCisgU0VMRUNUIENBU1QoJzEyMzQnIEFTIGNoYXJhY3Rlcigz KSBERUZBVUxUICctMTExMSc6OmludGVnZXI6OmNoYXJhY3RlcigzKSBPTiBDT05WRVJTSU9OIEVS Uk9SKSBBUyBicGNoYXIsCisgICAgQ0FTVCgxIEFTIGRhdGUgREVGQVVMVCAnMjAyNS0xMi0wNic6 OmRhdGUgKyByYW5kb20obWluID0+IDEsIG1heCA9PiAxKSBPTiBDT05WRVJTSU9OIEVSUk9SKSBB UyBjYXN0MCwKKyAgICBDQVNUKEFSUkFZW0FSUkFZWzFdLCBBUlJBWVsndGhyZWUnXSwgQVJSQVlb J2EnXV0gQVMgaW50ZWdlcltdIERFRkFVTFQgJ3sxLDJ9Jzo6aW50ZWdlcltdIE9OIENPTlZFUlNJ T04gRVJST1IpIEFTIGNhc3QxLAorICAgIENBU1QoQVJSQVlbQVJSQVlbJzEnLCAnMiddLCBBUlJB WVsndGhyZWUnLCAnYSddXSBBUyBkYXRlW10gREVGQVVMVCBOVUxMOjpkYXRlW10gT04gQ09OVkVS U0lPTiBFUlJPUikgQVMgY2FzdDIsCisgICAgQ0FTVChBUlJBWVsndGhyZWUnXSBBUyBpbnRlZ2Vy W10gREVGQVVMVCAnezEsMn0nOjppbnRlZ2VyW10gT04gQ09OVkVSU0lPTiBFUlJPUikgQVMgY2Fz dDMKK1NFTEVDVCAqIEZST00gc2FmZWNhc3R2aWV3OworIGJwY2hhciB8ICAgY2FzdDAgICAgfCBj YXN0MSB8IGNhc3QyIHwgY2FzdDMgCistLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0t LS0tKy0tLS0tLS0KKyAxMjMgICAgfCAyMDI1LTEyLTA3IHwgezEsMn0gfCAgICAgICB8IHsxLDJ9 CisoMSByb3cpCisKK0NSRUFURSBWSUVXIHNhZmVjYXN0dmlldzEgQVMKK1NFTEVDVCBDQVNUKEFS UkFZW1snMSddLCBbJ3RocmVlJ10sWydhJ11dIEFTIGRfaW50X2FycgorICAgICAgICAgICAgREVG QVVMVCAnezQxLDQzfScgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDEsCisgICAgICAgQ0FT VChBUlJBWVtbJzEnLCAnMicsIDEuMV0sIFsndGhyZWUnLCB0cnVlLCBCJzAxJ11dIEFTIGRfaW50 X2FycgorICAgICAgICAgICAgREVGQVVMVCAnezQxLDQzfScgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgY2FzdDI7Citcc3Ygc2FmZWNhc3R2aWV3MQorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJs aWMuc2FmZWNhc3R2aWV3MSBBUworIFNFTEVDVCBDQVNUKEFSUkFZW0FSUkFZWzFdLCBBUlJBWVsn dGhyZWUnXSwgQVJSQVlbJ2EnXV0gQVMgZF9pbnRfYXJyIERFRkFVTFQgJ3s0MSw0M30nOjppbnRl Z2VyW106OmRfaW50X2FyciBPTiBDT05WRVJTSU9OIEVSUk9SKSBBUyBjYXN0MSwKKyAgICBDQVNU KEFSUkFZW0FSUkFZWzEsIDIsIDEuMTo6aW50ZWdlcl0sIEFSUkFZWyd0aHJlZScsIHRydWUsICcw MSc6OiJiaXQiXV0gQVMgZF9pbnRfYXJyIERFRkFVTFQgJ3s0MSw0M30nOjppbnRlZ2VyW106OmRf aW50X2FyciBPTiBDT05WRVJTSU9OIEVSUk9SKSBBUyBjYXN0MgorU0VMRUNUICogRlJPTSBzYWZl Y2FzdHZpZXcxOworICBjYXN0MSAgfCAgY2FzdDIgIAorLS0tLS0tLS0tKy0tLS0tLS0tLQorIHs0 MSw0M30gfCB7NDEsNDN9CisoMSByb3cpCisKK1JFU0VUIGRhdGVzdHlsZTsKKy0tdGVzdCBDQVNU IERFRkFVTFQgZXhwcmVzc2lvbiBtdXRhYmlsaXR5CitDUkVBVEUgSU5ERVggY2FzdF9lcnJvcl9p ZHggT04gdGVzdF9zYWZlY2FzdDMoKENBU1QoY29sMCBhcyBpbnQgREVGQVVMVCByYW5kb20obWlu PT4xLCBtYXg9PjEpIE9OIENPTlZFUlNJT04gRVJST1IpKSk7CitFUlJPUjogIGZ1bmN0aW9ucyBp biBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVY IGNhc3RfZXJyb3JfaWR4IE9OIHRlc3Rfc2FmZWNhc3QzKChDQVNUKGNvbDAgYXMgeGlkIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSkpOworRVJST1I6ICBkYXRhIHR5cGUgeGlkIGhh cyBubyBkZWZhdWx0IG9wZXJhdG9yIGNsYXNzIGZvciBhY2Nlc3MgbWV0aG9kICJidHJlZSIKK0hJ TlQ6ICBZb3UgbXVzdCBzcGVjaWZ5IGFuIG9wZXJhdG9yIGNsYXNzIGZvciB0aGUgaW5kZXggb3Ig ZGVmaW5lIGEgZGVmYXVsdCBvcGVyYXRvciBjbGFzcyBmb3IgdGhlIGRhdGEgdHlwZS4KK0NSRUFU RSBJTkRFWCB0ZXN0X3NhZmVjYXN0M19pZHggT04gdGVzdF9zYWZlY2FzdDMoKENBU1QoY29sMCBh cyBpbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpKSk7IC0tb2sKK1NFTEVDVCBw Z19nZXRfaW5kZXhkZWYoJ3Rlc3Rfc2FmZWNhc3QzX2lkeCc6OnJlZ2NsYXNzKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19n ZXRfaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIElOREVY IHRlc3Rfc2FmZWNhc3QzX2lkeCBPTiBwdWJsaWMudGVzdF9zYWZlY2FzdDMgVVNJTkcgYnRyZWUg KChDQVNUKGNvbDAgQVMgaW50ZWdlciBERUZBVUxUIE5VTEw6OmludGVnZXIgT04gQ09OVkVSU0lP TiBFUlJPUikpKQorKDEgcm93KQorCitEUk9QIFRBQkxFIHRlc3Rfc2FmZWNhc3Q7CitEUk9QIFRB QkxFIHRlc3Rfc2FmZWNhc3QxOworRFJPUCBUQUJMRSB0ZXN0X3NhZmVjYXN0MjsKK0RST1AgVEFC TEUgdGVzdF9zYWZlY2FzdDM7CitEUk9QIFRBQkxFIHRjYXN0OworRFJPUCBGVU5DVElPTiByZXRf aW50ODsKK0RST1AgRlVOQ1RJT04gcmV0X3NldGludDsKK0RST1AgVFlQRSBjb21wX2RvbWFpbl93 aXRoX3R5cG1vZDsKK0RST1AgVFlQRSBjb21wMjsKK0RST1AgRE9NQUlOIGRfdmFyY2hhcjsKK0RS T1AgRE9NQUlOIGRfaW50NDI7CitEUk9QIERPTUFJTiBkX2NoYXIzX25vdF9udWxsOworUkVTRVQg ZXh0cmFfZmxvYXRfZGlnaXRzOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jcmVhdGVfY2FzdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9jYXN0 Lm91dAppbmRleCAwZTY5NjQ0YmNhMi4uMDA1NGVkMGVmNjcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2Nhc3Qub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY3JlYXRlX2Nhc3Qub3V0CkBAIC04OCw2ICs4OCwxMSBAQCBTRUxFQ1QgMTIzNDo6 aW50NDo6Y2FzdHRlc3R0eXBlOyAtLSBTaG91bGQgd29yayBub3cKICBiYXIxMjM0CiAoMSByb3cp CiAKK1NFTEVDVCBDQVNUKDEyMzQ6OmludDQgQVMgY2FzdHRlc3R0eXBlIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBp bnRlZ2VyIHRvIGNhc3R0ZXN0dHlwZSB3aGVuIERFRkFVTFQgZXhwcmVzc2lvbiBpcyBzcGVjaWZp ZWQgaW4gQ0FTVCAuLi4gT04gQ09OVkVSU0lPTiBFUlJPUgorTElORSAxOiBTRUxFQ1QgQ0FTVCgx MjM0OjppbnQ0IEFTIGNhc3R0ZXN0dHlwZSBERUZBVUxUIE5VTEwgT04gQ09OVkUuLi4KKyAgICAg ICAgICAgICAgICAgICAgXgorSElOVDogIFNhZmUgdHlwZSBjYXN0IGZvciB1c2VyLWRlZmluZWQg dHlwZXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCiAtLSBjaGVjayBkZXBlbmRlbmNpZXMgZ2VuZXJh dGVkIGZvciB0aGF0CiBTRUxFQ1QgcGdfZGVzY3JpYmVfb2JqZWN0KGNsYXNzaWQsIG9iamlkLCBv YmpzdWJpZCkgYXMgb2JqLAogICAgICAgIHBnX2Rlc2NyaWJlX29iamVjdChyZWZjbGFzc2lkLCBy ZWZvYmppZCwgcmVmb2Jqc3ViaWQpIGFzIG9ianJlZiwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZXF1aXZjbGFzcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2VxdWl2Y2xhc3Mub3V0CmluZGV4IGFkOGFiMjk0ZmY2Li41YWVlMmM3YTlmYiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lcXVpdmNsYXNzLm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2VxdWl2Y2xhc3Mub3V0CkBAIC05NSw2ICs5NSwxMyBAQCBjcmVh dGUgZnVuY3Rpb24gaW50OGFsaWFzMWNtcChpbnQ4LCBpbnQ4YWxpYXMxKSByZXR1cm5zIGludAog ICBzdHJpY3QgaW1tdXRhYmxlIGxhbmd1YWdlIGludGVybmFsIGFzICdidGludDhjbXAnOwogYWx0 ZXIgb3BlcmF0b3IgZmFtaWx5IGludGVnZXJfb3BzIHVzaW5nIGJ0cmVlIGFkZAogICBmdW5jdGlv biAxIGludDhhbGlhczFjbXAgKGludDgsIGludDhhbGlhczEpOworLS0gaW50OGFsaWFzMiBiaW5h cnktY29lcmNpYmxlIHRvIGludDguIHNvIHRoaXMgaXMgb2sKK3NlbGVjdCBjYXN0KCcxJzo6aW50 OCBhcyBpbnQ4YWxpYXMyIGRlZmF1bHQgbnVsbCBvbiBjb252ZXJzaW9uIGVycm9yKTsKKyBpbnQ4 YWxpYXMyIAorLS0tLS0tLS0tLS0tCisgMQorKDEgcm93KQorCiBjcmVhdGUgdGFibGUgZWMwIChm ZiBpbnQ4IHByaW1hcnkga2V5LCBmMSBpbnQ4LCBmMiBpbnQ4KTsKIGNyZWF0ZSB0YWJsZSBlYzEg KGZmIGludDggcHJpbWFyeSBrZXksIGYxIGludDhhbGlhczEsIGYyIGludDhhbGlhczIpOwogY3Jl YXRlIHRhYmxlIGVjMiAoeGYgaW50OCBwcmltYXJ5IGtleSwgeDEgaW50OGFsaWFzMSwgeDIgaW50 OGFsaWFzMik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl IGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCBjYzZkNzk5YmNlYS4u MGIwMzFhMzdjMzYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1 bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtODEsNyArODEs NyBAQCB0ZXN0OiBjcmVhdGVfdGFibGVfbGlrZSBhbHRlcl9nZW5lcmljIGFsdGVyX29wZXJhdG9y IG1pc2MgYXN5bmMgZGJzaXplIG1lcmdlIG1pcwogIyBjb2xsYXRlLmxpbnV4LnV0ZjggYW5kIGNv bGxhdGUuaWN1LnV0ZjggdGVzdHMgY2Fubm90IGJlIHJ1biBpbiBwYXJhbGxlbCB3aXRoIGVhY2gg b3RoZXIKICMgcHNxbCBkZXBlbmRzIG9uIGNyZWF0ZV9hbQogIyBhbXV0aWxzIGRlcGVuZHMgb24g Z2VvbWV0cnksIGNyZWF0ZV9pbmRleF9zcGdpc3QsIGhhc2hfaW5kZXgsIGJyaW4KLXRlc3Q6IHJ1 bGVzIHBzcWwgcHNxbF9jcm9zc3RhYiBwc3FsX3BpcGVsaW5lIGFtdXRpbHMgc3RhdHNfZXh0IGNv bGxhdGUubGludXgudXRmOCBjb2xsYXRlLndpbmRvd3Mud2luMTI1MgordGVzdDogcnVsZXMgcHNx bCBwc3FsX2Nyb3NzdGFiIHBzcWxfcGlwZWxpbmUgYW11dGlscyBzdGF0c19leHQgY29sbGF0ZS5s aW51eC51dGY4IGNvbGxhdGUud2luZG93cy53aW4xMjUyIGNhc3QKIAogIyAtLS0tLS0tLS0tCiAj IFJ1biB0aGVzZSBhbG9uZSBzbyB0aGV5IGRvbid0IHJ1biBvdXQgb2YgcGFyYWxsZWwgd29ya2Vy cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY2FzdC5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9jYXN0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uOWI2ZjNjYzA2NDkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9j YXN0LnNxbApAQCAtMCwwICsxLDM1MCBAQAorU0VUIGV4dHJhX2Zsb2F0X2RpZ2l0cyA9IDA7CisK Ky0tIENBU1QgREVGQVVMVCBPTiBDT05WRVJTSU9OIEVSUk9SCitTRUxFQ1QgQ0FTVChCJzAxJyBB UyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEJJ VCcwMScgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1Qg Q0FTVChUUlVFIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VM RUNUIENBU1QoMS4xIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwor U0VMRUNUIENBU1QoMSBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsK K1NFTEVDVCBDQVNUKDExMTEgQVMgImNoYXIiIERFRkFVTFQgJ0EnIE9OIENPTlZFUlNJT04gRVJS T1IpOworCistLXRlc3Qgc291cmNlIGV4cHJlc3Npb24gaXMgYSB1bmtub3duIGNvbnN0CitWQUxV RVMgKENBU1QoJ2Vycm9yJyBBUyBpbnRlZ2VyIEVSUk9SIE9OIENPTlZFUlNJT04gRVJST1IpKTsg LS1lcnJvcgorVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgaW50ZWdlciBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpKTsKK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludGVnZXIgREVGQVVMVCA0MiBP TiBDT05WRVJTSU9OIEVSUk9SKSk7CitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgMTgg T04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgc3Vt KDEpIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLWVycm9yCitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50 IERFRkFVTFQgc3VtKDEpIG92ZXIoKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS1lcnJvcgorU0VM RUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIChTRUxFQ1QgTlVMTCkgT04gQ09OVkVSU0lPTiBF UlJPUik7IC0tZXJyb3IKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCAnYicgT04gQ09O VkVSU0lPTiBFUlJPUik7IC0tZXJyb3IKK1NFTEVDVCBDQVNUKCdhJzo6aW50IGFzIGludCBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tZXJyb3IKKworLS10aGUgZGVmYXVsdCBl eHByZXNzaW9u4oCZcyBjb2xsYXRpb24gc2hvdWxkIG1hdGNoIHRoZSBjb2xsYXRpb24gb2YgdGhl IGNhc3QKKy0tdGFyZ2V0IHR5cGUKK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIHRleHQgREVGQVVM VCAnMScgQ09MTEFURSAiQyIgT04gQ09OVkVSU0lPTiBFUlJPUikpOworCitWQUxVRVMgKENBU1Qo J2Vycm9yJyBBUyBpbnQydmVjdG9yIERFRkFVTFQgJzEgMycgIE9OIENPTlZFUlNJT04gRVJST1Ip KTsKK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludDJ2ZWN0b3JbXSBERUZBVUxUICd7MSAzfScg IE9OIENPTlZFUlNJT04gRVJST1IpKTsKKworLS0gdGVzdCBzb3VyY2UgZXhwcmVzc2lvbiBjb250 YWluIHN1YnF1ZXJ5CitTRUxFQ1QgQ0FTVCgoU0VMRUNUIGIgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMSksIChWQUxVRVMoJ0gnKSkgcyhiKSkKKyAgICAgICAgICAgIEFTIGludDJ2ZWN0b3JbXSBE RUZBVUxUICd7MSAzfScgIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoKFNFTEVD VCBBUlJBWSgoU0VMRUNUIGIgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMikgZywgKFZBTFVFUygn SCcpKSBzKGIpKSkpCisgICAgICAgICAgICBBUyBJTlRbXQorICAgICAgICAgICAgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCitDUkVBVEUgRlVOQ1RJT04gcmV0X2ludDgoKSBS RVRVUk5TIEJJR0lOVCBBUworJCQKK0JFR0lOIFJFVFVSTiAyMTQ3NDgzNjQ4OyBFTkQ7CiskJAor TEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEU7CisKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVG QVVMVCByZXRfaW50OCgpIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLWVycm9yCitTRUxFQ1QgQ0FT VCgnYScgYXMgZGF0ZSBERUZBVUxUIHJldF9pbnQ4KCkgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0t ZXJyb3IKKworLS0gREVGQVVMVCBleHByZXNzaW9uIGNhbiBub3QgYmUgc2V0LXJldHVybmluZwor Q1JFQVRFIEZVTkNUSU9OIHJldF9zZXRpbnQoKSBSRVRVUk5TIFNFVE9GIGludGVnZXIgQVMKKyQk CitCRUdJTiBSRVRVUk4gUVVFUlkgRVhFQ1VURSAnc2VsZWN0IDEgdW5pb24gYWxsIHNlbGVjdCAx JzsgRU5EOworJCQKK0xBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFOworCitDUkVBVEUgVEFCTEUg dGNhc3QoYSB0ZXh0W10sIGIgaW50IEdFTkVSQVRFRCBCWSBERUZBVUxUIEFTIElERU5USVRZKTsK K0lOU0VSVCBJTlRPIHRjYXN0IFZBTFVFUyAoJ3sxMn0nKSwgKCd7MSxhLCBifScpLCAoJ3t7MSwy fSwge2MsZH19JyksICgnezEzfScpOworU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIHJl dF9zZXRpbnQoKSBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0OyAtLWVycm9yCitTRUxF Q1QgQ0FTVCh0IEFTIHRleHRbXSBERUZBVUxUICd7MjEsMjIsICcgfHwgYiB8fCAnfScgT04gQ09O VkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdCBhcyB0OworU0VMRUNUIENBU1QodC5hIEFTIGludFtd IERFRkFVTFQgJ3syMSwyMn0nOjppbnRbXSB8fCBiIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00g dGNhc3QgYXMgdDsKKworLS0gdGVzdCB3aXRoIHVzZXItZGVmaW5lZCB0eXBlLCBkb21haW4sIGFy cmF5IG92ZXIgZG9tYWluLCBkb21haW4gb3ZlciBhcnJheQorQ1JFQVRFIERPTUFJTiBkX2ludDQy IGFzIGludCBjaGVjayAodmFsdWUgPSA0MikgTk9UIE5VTEw7CitDUkVBVEUgRE9NQUlOIGRfY2hh cjNfbm90X251bGwgYXMgY2hhcigzKSBOT1QgTlVMTDsKK0NSRUFURSBET01BSU4gZF92YXJjaGFy IGFzIHZhcmNoYXIoMykgTk9UIE5VTEw7CitDUkVBVEUgRE9NQUlOIGRfaW50X2FyciBhcyBpbnRb XSBjaGVjayAodmFsdWUgPSAnezQxLCA0M30nKSBOT1QgTlVMTDsKK0NSRUFURSBUWVBFIGNvbXBf ZG9tYWluX3dpdGhfdHlwbW9kIEFTIChhIGRfY2hhcjNfbm90X251bGwsIGIgaW50KTsKK0NSRUFU RSBUWVBFIGNvbXAyIEFTIChhIGRfdmFyY2hhcik7CitTRUxFQ1QgQ0FTVCgnKE5VTEwpJyBBUyBj b21wMiBERUZBVUxUICcoMTIzMiknIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLWVycm9yCitTRUxF Q1QgQ0FTVCgnKE5VTEwpJyBBUyBjb21wMiBERUZBVUxUICcoMTIzKScgT04gQ09OVkVSU0lPTiBF UlJPUik7CitTRUxFQ1QgQ0FTVCgxMSBBUyBkX2ludDQyIERFRkFVTFQgNDEgT04gQ09OVkVSU0lP TiBFUlJPUik7IC0tZXJyb3IKK1NFTEVDVCBDQVNUKDExIEFTIGRfaW50NDIgREVGQVVMVCA0MiBP TiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKE5VTEwgQVMgZF9pbnQ0MiBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tZXJyb3IKK1NFTEVDVCBDQVNUKE5VTEwgQVMg ZF9pbnQ0MiBERUZBVUxUIDQyIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJygs NDIpJyBBUyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKE5VTEwsNDIpJyBBUyBjb21wX2RvbWFpbl93aXRoX3R5 cG1vZCBERUZBVUxUICcoMSwyKScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgn KE5VTEwsNDIpJyBBUyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxUICcoMTIzNCwyKScg T04gQ09OVkVSU0lPTiBFUlJPUik7IC0tZXJyb3IKKworU0VMRUNUIENBU1QoQVJSQVlbNDIsNDFd IEFTIGRfaW50NDJbXSBERUZBVUxUICd7NDIsIDQyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitT RUxFQ1QgQ0FTVChBUlJBWVs0Miw0MV0gQVMgZF9pbnRfYXJyIERFRkFVTFQgJ3s0MSwgNDN9JyBP TiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0gdGVzdCBhcnJheSBjb2VyY2UKK1NFTEVDVCBDQVNU KGFycmF5WydhJzo6dGV4dF0gQVMgaW50W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOyAtLWVycm9yCitTRUxFQ1QgQ0FTVChhcnJheVsnYSddIEFTIGludFtdIERFRkFVTFQgQVJS QVlbMV0gT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChhcnJheVsxMS4xMl0gQVMg ZGF0ZVtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKGFy cmF5WzExMTExMTExMTExMTExMTExXSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CitTRUxFQ1QgQ0FTVChhcnJheVtbJ2FiYyddLFs0NTZdXSBBUyBpbnRbXSBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnezEyMyxhYmMsNDU2 fScgQVMgaW50W10gREVGQVVMVCAney03ODl9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVD VCBDQVNUKCd7MjM0LGRlZiw1Njd9Jzo6dGV4dFtdIEFTIGludGVnZXJbXSBERUZBVUxUICd7LTEw MTF9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFSUkFZW1snMSddLCBbJ3Ro cmVlJ10sWydhJ11dIEFTIGludFtdIERFRkFVTFQgJ3sxLDJ9JyBPTiBDT05WRVJTSU9OIEVSUk9S KTsKK1NFTEVDVCBDQVNUKEFSUkFZW1snMScsICcyJ10sIFsndGhyZWUnLCAnYSddXSBBUyBpbnRb XSBERUZBVUxUICd7MjEsMjJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS1vaworU0VMRUNUIENB U1QoQVJSQVlbWycxJywgJzInXSwgWyd0aHJlZSc6OmludCwgJ2EnXV0gQVMgaW50W10gREVGQVVM VCAnezIxLDIyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tZXJyb3IKK1NFTEVDVCBDQVNUKEFS UkFZWzEsICd0aHJlZSc6OmludF0gQVMgaW50W10gREVGQVVMVCAnezIxLDIyfScgT04gQ09OVkVS U0lPTiBFUlJPUik7IC0tZXJyb3IKKworLS0tLS1zYWZlIGNhc3Qgd2l0aCBnZW9tZXRyeSBkYXRh IHR5cGUKK1NFTEVDVCBDQVNUKCcoMSwyKSc6OnBvaW50IEFTIGJveCBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnWyhOYU4sMSksKE5hTixpbmZpbml0eSld Jzo6bHNlZyBBUyBwb2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxF Q1QgQ0FTVCgnWygxZSszMDAsSW5maW5pdHkpLCgxZSszMDAsSW5maW5pdHkpXSc6OmxzZWcgQVMg cG9pbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ1so MSwyKSwoMyw0KV0nOjpwYXRoIGFzIHBvbHlnb24gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworU0VMRUNUIENBU1QoJyhOYU4sMS4wLE5hTixpbmZpbml0eSknOjpib3ggQVMgcG9p bnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJygyLjAs Mi4wLDAuMCwwLjApJzo6Ym94IEFTIGxzZWcgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworU0VMRUNUIENBU1QoJygyLjAsMi4wLDAuMCwwLjApJzo6Ym94IEFTIHBvbHlnb24gREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJygyLjAsMi4wLDAu MCwwLjApJzo6Ym94IEFTIHBhdGggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwor U0VMRUNUIENBU1QoJygyLjAsaW5maW5pdHksTmFOLGluZmluaXR5KSc6OmJveCBBUyBjaXJjbGUg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJyhOYU4sMC4w KSwoMi4wLDQuMCksKDAuMCxpbmZpbml0eSknOjpwb2x5Z29uIEFTIHBvaW50IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcoMi4wLDAuMCksKDIuMCw0LjAp LCgwLjAsMC4wKSc6OnBvbHlnb24gQVMgcGF0aCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUik7CitTRUxFQ1QgQ0FTVCgnKDIuMCwwLjApLCgyLjAsNC4wKSwoMC4wLDAuMCknOjpwb2x5 Z29uIEFTIGJveCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FT VCgnKE5hTixpbmZpbml0eSksKDIuMCw0LjApLCgwLjAsaW5maW5pdHkpJzo6cG9seWdvbiBBUyBj aXJjbGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJzwo NSwxKSwzPic6OmNpcmNsZSBBUyBwb2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP Uik7CitTRUxFQ1QgQ0FTVCgnPCgzLDUpLDA+Jzo6Y2lyY2xlIGFzIGJveCBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7CisKKy0tIG5vdCBzdXBwb3J0ZWQgYmVjYXVzZSB0aGUgY2Fz dCBmcm9tIGNpcmNsZSB0byBwb2x5Z29uIGlzIGltcGxlbWVudGVkIGFzIGEgU1FMCistLSBmdW5j dGlvbiwgd2hpY2ggY2Fubm90IGJlIGVycm9yLXNhZmUuCitTRUxFQ1QgQ0FTVCgnPCgzLDUpLDA+ Jzo6Y2lyY2xlIGFzIHBvbHlnb24gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwor CistLS0tLXNhZmUgY2FzdCBmcm9tL3RvIG1vbmV5IHR5cGUgaXMgbm90IHN1cHBvcnRlZCwgYWxs IHRoZSBmb2xsb3dpbmcgd291bGQgcmVzdWx0IGVycm9yCitTRUxFQ1QgQ0FTVChOVUxMOjppbnQ4 IEFTIG1vbmV5IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNU KE5VTEw6OmludDQgQVMgbW9uZXkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwor U0VMRUNUIENBU1QoTlVMTDo6bnVtZXJpYyBBUyBtb25leSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChOVUxMOjptb25leSBBUyBudW1lcmljIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKE5VTEw6Om1vbmV5W10gQVMg bnVtZXJpY1tdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0tLS1zYWZl IGNhc3QgZnJvbSBieXRlYSB0eXBlIHRvIG90aGVyIGRhdGEgdHlwZXMKK1NFTEVDVCBDQVNUICgn XHgxMTIyMzM0NDU1NjY3Nzg4OTknOjpieXRlYSBBUyBpbnQ4IERFRkFVTFQgMTkgT04gQ09OVkVS U0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnXHgxMjM0NTY3ODlBJzo6Ynl0ZWEgQVMgaW50NCBE RUZBVUxUIDIwIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ1x4MTIzNDU2Jzo6 Ynl0ZWEgQVMgaW50MiBERUZBVUxUIDIxIE9OIENPTlZFUlNJT04gRVJST1IpOworCistLS0tLXNh ZmUgY2FzdCBmcm9tIGJpdCB0eXBlIHRvIG90aGVyIGRhdGEgdHlwZXMKK1NFTEVDVCBDQVNUKCcx MTExMTExMTExMDAwMDEnOjpiaXQoMTAwKSBBUyBJTlQgREVGQVVMVCAyMiBPTiBDT05WRVJTSU9O IEVSUk9SKTsKK1NFTEVDVCBDQVNUICgnMTExMTExMTExMTAwMDAxJzo6Yml0KDEwMCkgQVMgSU5U OCBERUZBVUxUIDIzIE9OIENPTlZFUlNJT04gRVJST1IpOworCistLS0tLXNhZmUgY2FzdCBmcm9t IHRleHQgdHlwZSB0byBvdGhlciBkYXRhIHR5cGVzCitzZWxlY3QgQ0FTVCgnYS5iLmMuZCc6OnRl eHQgYXMgcmVnY2xhc3MgZGVmYXVsdCBOVUxMIG9uIGNvbnZlcnNpb24gZXJyb3IpOworCitDUkVB VEUgVEFCTEUgdGVzdF9zYWZlY2FzdChjb2wwIHRleHQpOworSU5TRVJUIElOVE8gdGVzdF9zYWZl Y2FzdChjb2wwKSBWQUxVRVMgKCc8dmFsdWU+b25lPC92YWx1ZScpOworCitTRUxFQ1QgY29sMCBh cyB0ZXh0LAorICAgICAgIENBU1QoY29sMCBBUyByZWdjbGFzcyBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fcmVnY2xhc3MsCisgICAgICAgQ0FTVChjb2wwIEFTIHJlZ2Ns YXNzIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBJUyBOVUxMIGFzIGV4cGVjdF90 cnVlLAorICAgICAgIENBU1QoY29sMCBBUyAiY2hhciIgIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19jaGFyLAorICAgICAgIENBU1QoY29sMCBBUyBuYW1lIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19uYW1lLAorICAgICAgIENBU1QoY29sMCBB UyB4bWwgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3htbAorRlJPTSB0 ZXN0X3NhZmVjYXN0OworCitTRUxFQ1QgQ0FTVCgnMTkyLjE2OC4xLngnIGFzIGluZXQgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJzE5Mi4xNjguMS4yLzMw JyBhcyBjaWRyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNU KCcyMjowMDo1YzowODo1NTowODowMTowMic6Om1hY2FkZHI4IGFzIG1hY2FkZHIgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCistLS0tLXNhZmUgY2FzdCBiZXR3ZWVlbiByYW5n ZSBkYXRhIHR5cGVzCitTRUxFQ1QgQ0FTVCgnWzEsMl0nOjppbnQ0cmFuZ2UgQVMgaW50NG11bHRp cmFuZ2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ1sx LDJdJzo6aW50OHJhbmdlIEFTIGludDhtdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCdbMSwyXSc6Om51bXJhbmdlICBBUyBudW1tdWx0aXJh bmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCdbLWlu ZmluaXR5LGluZmluaXR5XSc6OmRhdGVyYW5nZSBBUyBkYXRlbXVsdGlyYW5nZSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnWy1pbmZpbml0eSxpbmZpbml0 eV0nOjp0c3JhbmdlIEFTIHRzbXVsdGlyYW5nZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUik7CitTRUxFQ1QgQ0FTVCgnWy1pbmZpbml0eSxpbmZpbml0eV0nOjp0c3R6cmFuZ2UgQVMg dHN0em11bHRpcmFuZ2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCistLS0t LXNhZmUgY2FzdCBiZXR3ZWVlbiBudW1lcmljIGRhdGEgdHlwZXMKK0NSRUFURSBUQUJMRSB0ZXN0 X3NhZmVjYXN0MSgKKyAgY29sMSBmbG9hdDQsIGNvbDIgZmxvYXQ4LCBjb2wzIG51bWVyaWMsIGNv bDQgbnVtZXJpY1tdLAorICBjb2w1IGludDIgZGVmYXVsdCAzMjc2NywKKyAgY29sNiBpbnQ0IGRl ZmF1bHQgMzI3NjgsCisgIGNvbDcgaW50OCBkZWZhdWx0IDQyOTQ5NjcyOTYpOworSU5TRVJUIElO VE8gdGVzdF9zYWZlY2FzdDEgVkFMVUVTKCcxMS4xMjM0JywgJzExLjEyMzQnLCAnOTIyMzM3MjAz Njg1NDc3NTgwOCcsICd7MTEuMTIzNH0nOjpudW1lcmljW10pOworSU5TRVJUIElOVE8gdGVzdF9z YWZlY2FzdDEgVkFMVUVTKCdpbmYnLCAnaW5mJywgJ2luZicsICd7MTEuMTIzNCwgMTIsIGluZiwg TmFOfSc6Om51bWVyaWNbXSk7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MSBWQUxVRVMoJy1p bmYnLCAnLWluZicsICctaW5mJywgJ3sxMS4xMjM0LCAxMiwgLWluZiwgTmFOfSc6Om51bWVyaWNb XSk7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MSBWQUxVRVMoJ05hTicsICdOYU4nLCAnTmFO JywgJ3sxMS4xMjM0LCAxMiwgLWluZiwgTmFOfSc6Om51bWVyaWNbXSk7CisKK1NFTEVDVCBjb2w1 IGFzIGludDIsCisgICAgICAgQ0FTVChjb2w1IEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FTVChjb2w1IEFTIGludDQgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDQsCisgICAgICAgQ0FTVChjb2w1 IEFTIG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fb2lkLAorICAg ICAgIENBU1QoY29sNSBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19pbnQ4LAorICAgICAgIENBU1QoY29sNSBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDUgYXMgZmxvYXQ4 IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAg Q0FTVChjb2w1IGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX251bWVyaWMsCisgICAgICAgQ0FTVChjb2w1IGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00gdGVzdF9z YWZlY2FzdDE7CisKK1NFTEVDVCBjb2w2IGFzIGludDQsCisgICAgICAgQ0FTVChjb2w2IEFTIGlu dDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDIsCisgICAgICAg Q0FTVChjb2w2IEFTIGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X2ludDQsCisgICAgICAgQ0FTVChjb2w2IEFTIG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9fb2lkLAorICAgICAgIENBU1QoY29sNiBhcyBpbnQ4IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAgIENBU1QoY29sNiBhcyBm bG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAg ICAgICBDQVNUKGNvbDYgYXMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2w2IGFzIG51bWVyaWMgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FTVChjb2w2IGFz IG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251 bWVyaWNfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisKK1NFTEVDVCBjb2w3IGFzIGludDgs CisgICAgICAgQ0FTVChjb2w3IEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FTVChjb2w3IEFTIGludDQgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDQsCisgICAgICAgQ0FTVChjb2w3IEFTIG9pZCBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fb2lkLAorICAgICAgIENBU1Qo Y29sNyBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4 LAorICAgICAgIENBU1QoY29sNyBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDcgYXMgZmxvYXQ4IERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2w3 IGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVy aWMsCisgICAgICAgQ0FTVChjb2w3IGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7 CisKK1NFTEVDVCBjb2wzIGFzIG51bWVyaWMsCisgICAgICAgQ0FTVChjb2wzIEFTIGludDIgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FTVChj b2wzIEFTIGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDQs CisgICAgICAgQ0FTVChjb2wzIEFTIG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9fb2lkLAorICAgICAgIENBU1QoY29sMyBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAgIENBU1QoY29sMyBhcyBmbG9hdDQg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBD QVNUKGNvbDMgYXMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2wzIGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FTVChjb2wzIGFzIG51bWVy aWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNf c2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisKK1NFTEVDVCBjb2w0IGFzIG51bV9hcnIsCisg ICAgICAgQ0FTVChjb2w0IEFTIGludDJbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgaW50MmFyciwKKyAgICAgICBDQVNUKGNvbDQgQVMgaW50NFtdIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyBpbnQ0YXJyLAorICAgICAgIENBU1QoY29sNCBhcyBpbnQ4 W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGludDhhcnIsCisgICAgICAg Q0FTVChjb2w0IGFzIGZsb2F0NFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyBmNGFyciwKKyAgICAgICBDQVNUKGNvbDQgYXMgZmxvYXQ4W10gREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIGY4YXJyLAorICAgICAgIENBU1QoY29sNCBhcyBudW1lcmljKDEw LDEpW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIG51bWFycgorRlJPTSB0 ZXN0X3NhZmVjYXN0MTsKKworU0VMRUNUIGNvbDEgYXMgZmxvYXQ0LAorICAgICAgIENBU1QoY29s MSBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAor ICAgICAgIENBU1QoY29sMSBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b19pbnQ0LAorICAgICAgIENBU1QoY29sMSBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDEgYXMgaW50OCBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNv bDEgYXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9h dDQsCisgICAgICAgQ0FTVChjb2wxIGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sMSBhcyBudW1lcmljIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1Qo Y29sMSBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19udW1lcmljX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworCitTRUxFQ1QgY29sMiBh cyBmbG9hdDgsCisgICAgICAgQ0FTVChjb2wyIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FTVChjb2wyIEFTIGludDQgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDQsCisgICAgICAgQ0FTVChjb2wy IEFTIG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fb2lkLAorICAg ICAgIENBU1QoY29sMiBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19pbnQ4LAorICAgICAgIENBU1QoY29sMiBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDIgYXMgZmxvYXQ4 IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAg Q0FTVChjb2wyIGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX251bWVyaWMsCisgICAgICAgQ0FTVChjb2wyIGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00gdGVzdF9z YWZlY2FzdDE7CisKKy0tIGRhdGUvdGltZXN0YW1wL2ludGVydmFsIHJlbGF0ZWQgc2FmZSB0eXBl IGNhc3QKK0NSRUFURSBUQUJMRSB0ZXN0X3NhZmVjYXN0MigKKyAgY29sMCBkYXRlLCBjb2wxIHRp bWVzdGFtcCwgY29sMiB0aW1lc3RhbXB0eiwKKyAgY29sMyBpbnRlcnZhbCwgY29sNCB0aW1lLCBj b2w1IHRpbWV0eik7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MiBWQUxVRVMKKygnLWluZmlu aXR5JywgJy1pbmZpbml0eScsICctaW5maW5pdHknLCAnLWluZmluaXR5JywKKyAgJzIwMDMtMDMt MDcgMTU6MzY6MzkgQW1lcmljYS9OZXdfWW9yaycsICcyMDAzLTA3LTA3IDE1OjM2OjM5IEFtZXJp Y2EvTmV3X1lvcmsnKSwKKygnLWluZmluaXR5JywgJ2luZmluaXR5JywgJ2luZmluaXR5JywgJ2lu ZmluaXR5JywKKyAgJzExOjU5OjU5Ljk5IFBNJywgJzExOjU5OjU5Ljk5IFBNIFBEVCcpOworCitT RUxFQ1QgY29sMCBhcyBkYXRlLAorICAgICAgIENBU1QoY29sMCBBUyB0aW1lc3RhbXB0eiBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wdHosCisgICAgICAg Q0FTVChjb2wwIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X2RhdGUsCisgICAgICAgQ0FTVChjb2wwIEFTIHRpbWUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX3RpbWVzLAorICAgICAgIENBU1QoY29sMCBBUyB0aW1ldHogREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWV0eiwKKyAgICAgICBDQVNUKGNv bDAgQVMgdGltZXN0YW1wKDIpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b190aW1lc3RhbXBfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7CisKK1NFTEVDVCBjb2wxIGFz IHRpbWVzdGFtcCwKKyAgICAgICBDQVNUKGNvbDEgQVMgdGltZXN0YW1wdHogREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcHR6LAorICAgICAgIENBU1QoY29s MSBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19kYXRlLAor ICAgICAgIENBU1QoY29sMSBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b190aW1lcywKKyAgICAgICBDQVNUKGNvbDEgQVMgdGltZXR6IERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHosCisgICAgICAgQ0FTVChjb2wxIEFTIHRp bWVzdGFtcCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0 YW1wX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QyOworCitTRUxFQ1QgY29sMiBhcyB0aW1lc3Rh bXB0eiwKKyAgICAgICBDQVNUKGNvbDIgQVMgdGltZXN0YW1wdHogREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcHR6LAorICAgICAgIENBU1QoY29sMiBBUyBk YXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19kYXRlLAorICAgICAg IENBU1QoY29sMiBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b190aW1lcywKKyAgICAgICBDQVNUKGNvbDIgQVMgdGltZXR6IERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHosCisgICAgICAgQ0FTVChjb2wyIEFTIHRpbWVzdGFt cCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wX3Nj YWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QyOworCitTRUxFQ1QgY29sMyBhcyBpbnRlcnZhbCwKKyAg ICAgICBDQVNUKGNvbDMgQVMgdGltZXN0YW1wdHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX3RpbWVzdGFtcHR6LAorICAgICAgIENBU1QoY29sMyBBUyBkYXRlIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19kYXRlLAorICAgICAgIENBU1QoY29s MyBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lcywK KyAgICAgICBDQVNUKGNvbDMgQVMgdGltZXR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b190aW1ldHosCisgICAgICAgQ0FTVChjb2wzIEFTIHRpbWVzdGFtcCgyKSBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wX3NjYWxlLAorICAg ICAgIENBU1QoY29sMyBBUyBpbnRlcnZhbCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9faW50ZXJ2YWxfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7CisKK1NFTEVD VCBjb2w0IGFzIHRpbWUsCisgICAgICAgQ0FTVChjb2w0IEFTIHRpbWUoMikgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzLAorICAgICAgIENBU1QoY29sNCBBUyB0 aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIElTIE5PVCBOVUxMIGFzIHRv X3RpbWV0eiwKKyAgICAgICBDQVNUKGNvbDQgQVMgaW50ZXJ2YWwoMikgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludGVydmFsLAorICAgICAgIENBU1QoY29sNCBBUyBp bnRlcnZhbCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2 YWxfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7CisKK1NFTEVDVCBjb2w1IGFzIHRpbWV0eiwK KyAgICAgICBDQVNUKGNvbDUgQVMgdGltZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9fdGltZSwKKyAgICAgICBDQVNUKGNvbDUgQVMgdGltZSgyKSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZV9zY2FsZSwKKyAgICAgICBDQVNUKGNvbDUg QVMgdGltZXR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHos CisgICAgICAgQ0FTVChjb2w1IEFTIHRpbWV0eig2KSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9fdGltZXR6X3NjYWxlLAorICAgICAgIENBU1QoY29sNSBBUyBpbnRlcnZh bCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2YWwsCisgICAg ICAgQ0FTVChjb2w1IEFTIGludGVydmFsKDIpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b19pbnRlcnZhbF9zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MjsKKworQ1JFQVRF IFRBQkxFIHRlc3Rfc2FmZWNhc3QzKGNvbDAganNvbmIpOworSU5TRVJUIElOVE8gdGVzdF9zYWZl Y2FzdDMoY29sMCkgVkFMVUVTICgnInRlc3QiJyk7CitTRUxFQ1QgY29sMCBhcyBqc29uYiwKKyAg ICAgICBDQVNUKGNvbDAgQVMgaW50ZWdlciBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9faW50ZWdlciwKKyAgICAgICBDQVNUKGNvbDAgQVMgbnVtZXJpYyBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDAg QVMgYmlnaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAor ICAgICAgIENBU1QoY29sMCBBUyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDAgQVMgZmxvYXQ4IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2wwIEFT IGJvb2xlYW4gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Jvb2wsCisg ICAgICAgQ0FTVChjb2wwIEFTIHNtYWxsaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b19zbWFsbGludAorRlJPTSB0ZXN0X3NhZmVjYXN0MzsKKworLS0gdGVzdCBkZXBh cnNlCitTRVQgZGF0ZXN0eWxlIFRPIElTTywgWU1EOworQ1JFQVRFIFZJRVcgc2FmZWNhc3R2aWV3 IEFTCitTRUxFQ1QgQ0FTVCgnMTIzNCcgYXMgY2hhcigzKSBERUZBVUxUIC0xMTExIE9OIENPTlZF UlNJT04gRVJST1IpLAorICAgICAgIENBU1QoMSBhcyBkYXRlIERFRkFVTFQgKCgnMjAyNS1EZWMt MDYnOjpkYXRlICsgcmFuZG9tKG1pbj0+MSwgbWF4PT4xOjppbnQpKSkgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgY2FzdDAsCisgICAgICAgQ0FTVChBUlJBWVtbJzEnXSwgWyd0aHJlZSddLFsnYSdd XSBBUyBpbnRbXSBERUZBVUxUICd7MSwyfScgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDEs CisgICAgICAgQ0FTVChBUlJBWVtbJzEnLCAnMiddLCBbJ3RocmVlJywgJ2EnXV0gQVMgZGF0ZVtd IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0MiwKKyAgICAgICBDQVNU KEFSUkFZWyd0aHJlZSddIEFTIElOVFtdIERFRkFVTFQgJ3sxLDJ9JyBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyBjYXN0MzsKK1xzdiBzYWZlY2FzdHZpZXcKK1NFTEVDVCAqIEZST00gc2FmZWNhc3R2 aWV3OworCitDUkVBVEUgVklFVyBzYWZlY2FzdHZpZXcxIEFTCitTRUxFQ1QgQ0FTVChBUlJBWVtb JzEnXSwgWyd0aHJlZSddLFsnYSddXSBBUyBkX2ludF9hcnIKKyAgICAgICAgICAgIERFRkFVTFQg J3s0MSw0M30nIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGNhc3QxLAorICAgICAgIENBU1QoQVJS QVlbWycxJywgJzInLCAxLjFdLCBbJ3RocmVlJywgdHJ1ZSwgQicwMSddXSBBUyBkX2ludF9hcnIK KyAgICAgICAgICAgIERFRkFVTFQgJ3s0MSw0M30nIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGNh c3QyOworXHN2IHNhZmVjYXN0dmlldzEKK1NFTEVDVCAqIEZST00gc2FmZWNhc3R2aWV3MTsKKwor UkVTRVQgZGF0ZXN0eWxlOworCistLXRlc3QgQ0FTVCBERUZBVUxUIGV4cHJlc3Npb24gbXV0YWJp bGl0eQorQ1JFQVRFIElOREVYIGNhc3RfZXJyb3JfaWR4IE9OIHRlc3Rfc2FmZWNhc3QzKChDQVNU KGNvbDAgYXMgaW50IERFRkFVTFQgcmFuZG9tKG1pbj0+MSwgbWF4PT4xKSBPTiBDT05WRVJTSU9O IEVSUk9SKSkpOworQ1JFQVRFIElOREVYIGNhc3RfZXJyb3JfaWR4IE9OIHRlc3Rfc2FmZWNhc3Qz KChDQVNUKGNvbDAgYXMgeGlkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSkpOwor Q1JFQVRFIElOREVYIHRlc3Rfc2FmZWNhc3QzX2lkeCBPTiB0ZXN0X3NhZmVjYXN0MygoQ0FTVChj b2wwIGFzIGludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikpKTsgLS1vaworU0VM RUNUIHBnX2dldF9pbmRleGRlZigndGVzdF9zYWZlY2FzdDNfaWR4Jzo6cmVnY2xhc3MpOworCitE Uk9QIFRBQkxFIHRlc3Rfc2FmZWNhc3Q7CitEUk9QIFRBQkxFIHRlc3Rfc2FmZWNhc3QxOworRFJP UCBUQUJMRSB0ZXN0X3NhZmVjYXN0MjsKK0RST1AgVEFCTEUgdGVzdF9zYWZlY2FzdDM7CitEUk9Q IFRBQkxFIHRjYXN0OworRFJPUCBGVU5DVElPTiByZXRfaW50ODsKK0RST1AgRlVOQ1RJT04gcmV0 X3NldGludDsKK0RST1AgVFlQRSBjb21wX2RvbWFpbl93aXRoX3R5cG1vZDsKK0RST1AgVFlQRSBj b21wMjsKK0RST1AgRE9NQUlOIGRfdmFyY2hhcjsKK0RST1AgRE9NQUlOIGRfaW50NDI7CitEUk9Q IERPTUFJTiBkX2NoYXIzX25vdF9udWxsOworUkVTRVQgZXh0cmFfZmxvYXRfZGlnaXRzOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2Nhc3Quc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY3JlYXRlX2Nhc3Quc3FsCmluZGV4IDMyMTg3ODUzY2M3Li4wYTE1YTc5NWQ4 NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2Nhc3Quc3FsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9jYXN0LnNxbApAQCAtNjIsNiArNjIsNyBAQCAk JCBTRUxFQ1QgKCdiYXInOjp0ZXh0IHx8ICQxOjp0ZXh0KTsgJCQ7CiAKIENSRUFURSBDQVNUIChp bnQ0IEFTIGNhc3R0ZXN0dHlwZSkgV0lUSCBGVU5DVElPTiBiYXJfaW50NF90ZXh0KGludDQpIEFT IElNUExJQ0lUOwogU0VMRUNUIDEyMzQ6OmludDQ6OmNhc3R0ZXN0dHlwZTsgLS0gU2hvdWxkIHdv cmsgbm93CitTRUxFQ1QgQ0FTVCgxMjM0OjppbnQ0IEFTIGNhc3R0ZXN0dHlwZSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCiAKIC0tIGNoZWNrIGRlcGVuZGVuY2ll cyBnZW5lcmF0ZWQgZm9yIHRoYXQKIFNFTEVDVCBwZ19kZXNjcmliZV9vYmplY3QoY2xhc3NpZCwg b2JqaWQsIG9ianN1YmlkKSBhcyBvYmosCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9lcXVpdmNsYXNzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2VxdWl2Y2xhc3Muc3FsCmlu ZGV4IDdmYzIxNTkzNDliLi41YWQxZDI2MzExZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvZXF1aXZjbGFzcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXF1aXZjbGFz cy5zcWwKQEAgLTk4LDYgKzk4LDkgQEAgY3JlYXRlIGZ1bmN0aW9uIGludDhhbGlhczFjbXAoaW50 OCwgaW50OGFsaWFzMSkgcmV0dXJucyBpbnQKIGFsdGVyIG9wZXJhdG9yIGZhbWlseSBpbnRlZ2Vy X29wcyB1c2luZyBidHJlZSBhZGQKICAgZnVuY3Rpb24gMSBpbnQ4YWxpYXMxY21wIChpbnQ4LCBp bnQ4YWxpYXMxKTsKIAorLS0gaW50OGFsaWFzMiBiaW5hcnktY29lcmNpYmxlIHRvIGludDguIHNv IHRoaXMgaXMgb2sKK3NlbGVjdCBjYXN0KCcxJzo6aW50OCBhcyBpbnQ4YWxpYXMyIGRlZmF1bHQg bnVsbCBvbiBjb252ZXJzaW9uIGVycm9yKTsKKwogY3JlYXRlIHRhYmxlIGVjMCAoZmYgaW50OCBw cmltYXJ5IGtleSwgZjEgaW50OCwgZjIgaW50OCk7CiBjcmVhdGUgdGFibGUgZWMxIChmZiBpbnQ4 IHByaW1hcnkga2V5LCBmMSBpbnQ4YWxpYXMxLCBmMiBpbnQ4YWxpYXMyKTsKIGNyZWF0ZSB0YWJs ZSBlYzIgKHhmIGludDggcHJpbWFyeSBrZXksIHgxIGludDhhbGlhczEsIHgyIGludDhhbGlhczIp OwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA2ZTJlZDBjODgyNS4uZjE5NmQzNjcxYzUg MTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yNjczLDYgKzI2NzMsOSBAQCBTVFJMRU4K IFNWCiBTWU5DSFJPTklaQVRJT05fQkFSUklFUgogU1lTVEVNX0lORk8KK1NhZmVUeXBlQ2FzdAor U2FmZVR5cGVDYXN0RXhwcgorU2FmZVR5cGVDYXN0U3RhdGUKIFNhbXBsZVNjYW4KIFNhbXBsZVNj YW5HZXRTYW1wbGVTaXplX2Z1bmN0aW9uCiBTYW1wbGVTY2FuU3RhdGUKLS0gCjIuMzQuMQoK --000000000000e7a9ea06457207c0 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0017-error-safe-for-casting-jsonb-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v14-0017-error-safe-for-casting-jsonb-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mix9wgal2 RnJvbSAyMGY3ZTMzN2YyNjc3MjY3NTY2NTIxZTEzNWQ0YmU3YmY5YzYzYTdkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMjQgTm92IDIwMjUgMTQ6MjY6NTMgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx NCAxNy8xOV0gZXJyb3Igc2FmZSBmb3IgY2FzdGluZyBqc29uYiB0byBvdGhlciB0eXBlcyBwZXIK IHBnX2Nhc3QKCnNlbGVjdCBjYXN0c291cmNlOjpyZWd0eXBlLCBjYXN0dGFyZ2V0OjpyZWd0eXBl LCBjYXN0ZnVuYywKY2FzdGNvbnRleHQsY2FzdG1ldGhvZCwgcHAucHJvc3JjLCBwcC5wcm9uYW1l IGZyb20gcGdfY2FzdCBwYyBqb2luIHBnX3Byb2MgcHAgb24KcHAub2lkID0gcGMuY2FzdGZ1bmMg YW5kIHBjLmNhc3RmdW5jID4gMAphbmQgY2FzdHNvdXJjZTo6cmVndHlwZSA9ICdqc29uYic6OnJl Z3R5cGUKb3JkZXIgYnkgY2FzdHNvdXJjZTo6cmVndHlwZTsKCiBjYXN0c291cmNlIHwgICAgY2Fz dHRhcmdldCAgICB8IGNhc3RmdW5jIHwgY2FzdGNvbnRleHQgfCBjYXN0bWV0aG9kIHwgICAgcHJv c3JjICAgICB8IHByb25hbWUKLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0K IGpzb25iICAgICAgfCBib29sZWFuICAgICAgICAgIHwgICAgIDM1NTYgfCBlICAgICAgICAgICB8 IGYgICAgICAgICAgfCBqc29uYl9ib29sICAgIHwgYm9vbAoganNvbmIgICAgICB8IG51bWVyaWMg ICAgICAgICAgfCAgICAgMzQ0OSB8IGUgICAgICAgICAgIHwgZiAgICAgICAgICB8IGpzb25iX251 bWVyaWMgfCBudW1lcmljCiBqc29uYiAgICAgIHwgc21hbGxpbnQgICAgICAgICB8ICAgICAzNDUw IHwgZSAgICAgICAgICAgfCBmICAgICAgICAgIHwganNvbmJfaW50MiAgICB8IGludDIKIGpzb25i ICAgICAgfCBpbnRlZ2VyICAgICAgICAgIHwgICAgIDM0NTEgfCBlICAgICAgICAgICB8IGYgICAg ICAgICAgfCBqc29uYl9pbnQ0ICAgIHwgaW50NAoganNvbmIgICAgICB8IGJpZ2ludCAgICAgICAg ICAgfCAgICAgMzQ1MiB8IGUgICAgICAgICAgIHwgZiAgICAgICAgICB8IGpzb25iX2ludDggICAg fCBpbnQ4CiBqc29uYiAgICAgIHwgcmVhbCAgICAgICAgICAgICB8ICAgICAzNDUzIHwgZSAgICAg ICAgICAgfCBmICAgICAgICAgIHwganNvbmJfZmxvYXQ0ICB8IGZsb2F0NAoganNvbmIgICAgICB8 IGRvdWJsZSBwcmVjaXNpb24gfCAgICAgMjU4MCB8IGUgICAgICAgICAgIHwgZiAgICAgICAgICB8 IGpzb25iX2Zsb2F0OCAgfCBmbG9hdDgKKDcgcm93cykKCmRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vQ0FEa0xNPWZ2MUpmWTRVZmEtamN3d05ialFpeE5WaXNrUThqWnUzVHpfcDY1Nmlf NGhRQG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMgfCA3 NCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDU4 IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9qc29uYi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKaW5kZXgg YzRmZTZlMDBkY2QuLjE2MDAyMDRmYTRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvanNvbmIuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYwpAQCAtMTgxNSw3 ICsxODE1LDcgQEAgSnNvbmJFeHRyYWN0U2NhbGFyKEpzb25iQ29udGFpbmVyICpqYmMsIEpzb25i VmFsdWUgKnJlcykKICAqIEVtaXQgY29ycmVjdCwgdHJhbnNsYXRhYmxlIGNhc3QgZXJyb3IgbWVz c2FnZQogICovCiBzdGF0aWMgdm9pZAotY2Fubm90Q2FzdEpzb25iVmFsdWUoZW51bSBqYnZUeXBl IHR5cGUsIGNvbnN0IGNoYXIgKnNxbHR5cGUpCitjYW5ub3RDYXN0SnNvbmJWYWx1ZShlbnVtIGpi dlR5cGUgdHlwZSwgY29uc3QgY2hhciAqc3FsdHlwZSwgTm9kZSAqZXNjb250ZXh0KQogewogCXN0 YXRpYyBjb25zdCBzdHJ1Y3QKIAl7CkBAIC0xODM2LDcgKzE4MzYsNyBAQCBjYW5ub3RDYXN0SnNv bmJWYWx1ZShlbnVtIGpidlR5cGUgdHlwZSwgY29uc3QgY2hhciAqc3FsdHlwZSkKIAogCWZvciAo aSA9IDA7IGkgPCBsZW5ndGhvZihtZXNzYWdlcyk7IGkrKykKIAkJaWYgKG1lc3NhZ2VzW2ldLnR5 cGUgPT0gdHlwZSkKLQkJCWVyZXBvcnQoRVJST1IsCisJCQllcmV0dXJuKGVzY29udGV4dCwsCiAJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCQkgZXJy bXNnKG1lc3NhZ2VzW2ldLm1zZywgc3FsdHlwZSkpKTsKIApAQCAtMTg1MSw3ICsxODUxLDEwIEBA IGpzb25iX2Jvb2woUEdfRlVOQ1RJT05fQVJHUykKIAlKc29uYlZhbHVlCXY7CiAKIAlpZiAoIUpz b25iRXh0cmFjdFNjYWxhcigmaW4tPnJvb3QsICZ2KSkKLQkJY2Fubm90Q2FzdEpzb25iVmFsdWUo di50eXBlLCAiYm9vbGVhbiIpOworCXsKKwkJY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAi Ym9vbGVhbiIsIGZjaW5mby0+Y29udGV4dCk7CisJCVBHX1JFVFVSTl9OVUxMKCk7CisJfQogCiAJ aWYgKHYudHlwZSA9PSBqYnZOdWxsKQogCXsKQEAgLTE4NjAsNyArMTg2MywxMCBAQCBqc29uYl9i b29sKFBHX0ZVTkNUSU9OX0FSR1MpCiAJfQogCiAJaWYgKHYudHlwZSAhPSBqYnZCb29sKQotCQlj YW5ub3RDYXN0SnNvbmJWYWx1ZSh2LnR5cGUsICJib29sZWFuIik7CisJeworCQljYW5ub3RDYXN0 SnNvbmJWYWx1ZSh2LnR5cGUsICJib29sZWFuIiwgZmNpbmZvLT5jb250ZXh0KTsKKwkJUEdfUkVU VVJOX05VTEwoKTsKKwl9CiAKIAlQR19GUkVFX0lGX0NPUFkoaW4sIDApOwogCkBAIC0xODc1LDcg KzE4ODEsMTAgQEAganNvbmJfbnVtZXJpYyhQR19GVU5DVElPTl9BUkdTKQogCU51bWVyaWMJCXJl dFZhbHVlOwogCiAJaWYgKCFKc29uYkV4dHJhY3RTY2FsYXIoJmluLT5yb290LCAmdikpCi0JCWNh bm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgIm51bWVyaWMiKTsKKwl7CisJCWNhbm5vdENhc3RK c29uYlZhbHVlKHYudHlwZSwgIm51bWVyaWMiLCBmY2luZm8tPmNvbnRleHQpOworCQlQR19SRVRV Uk5fTlVMTCgpOworCX0KIAogCWlmICh2LnR5cGUgPT0gamJ2TnVsbCkKIAl7CkBAIC0xODg0LDcg KzE4OTMsMTAgQEAganNvbmJfbnVtZXJpYyhQR19GVU5DVElPTl9BUkdTKQogCX0KIAogCWlmICh2 LnR5cGUgIT0gamJ2TnVtZXJpYykKLQkJY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAibnVt ZXJpYyIpOworCXsKKwkJY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAibnVtZXJpYyIsIGZj aW5mby0+Y29udGV4dCk7CisJCVBHX1JFVFVSTl9OVUxMKCk7CisJfQogCiAJLyoKIAkgKiB2LnZh bC5udW1lcmljIHBvaW50cyBpbnRvIGpzb25iIGJvZHksIHNvIHdlIG5lZWQgdG8gbWFrZSBhIGNv cHkgdG8KQEAgLTE5MDUsNyArMTkxNywxMCBAQCBqc29uYl9pbnQyKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJRGF0dW0JCXJldFZhbHVlOwogCiAJaWYgKCFKc29uYkV4dHJhY3RTY2FsYXIoJmluLT5yb290 LCAmdikpCi0JCWNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgInNtYWxsaW50Iik7CisJewor CQljYW5ub3RDYXN0SnNvbmJWYWx1ZSh2LnR5cGUsICJzbWFsbGludCIsIGZjaW5mby0+Y29udGV4 dCk7CisJCVBHX1JFVFVSTl9OVUxMKCk7CisJfQogCiAJaWYgKHYudHlwZSA9PSBqYnZOdWxsKQog CXsKQEAgLTE5MTQsNyArMTkyOSwxMCBAQCBqc29uYl9pbnQyKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ fQogCiAJaWYgKHYudHlwZSAhPSBqYnZOdW1lcmljKQotCQljYW5ub3RDYXN0SnNvbmJWYWx1ZSh2 LnR5cGUsICJzbWFsbGludCIpOworCXsKKwkJY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAi c21hbGxpbnQiLCBmY2luZm8tPmNvbnRleHQpOworCQlQR19SRVRVUk5fTlVMTCgpOworCX0KIAog CXJldFZhbHVlID0gRGlyZWN0RnVuY3Rpb25DYWxsMShudW1lcmljX2ludDIsCiAJCQkJCQkJCSAg IE51bWVyaWNHZXREYXR1bSh2LnZhbC5udW1lcmljKSk7CkBAIC0xOTMyLDcgKzE5NTAsMTAgQEAg anNvbmJfaW50NChQR19GVU5DVElPTl9BUkdTKQogCURhdHVtCQlyZXRWYWx1ZTsKIAogCWlmICgh SnNvbmJFeHRyYWN0U2NhbGFyKCZpbi0+cm9vdCwgJnYpKQotCQljYW5ub3RDYXN0SnNvbmJWYWx1 ZSh2LnR5cGUsICJpbnRlZ2VyIik7CisJeworCQljYW5ub3RDYXN0SnNvbmJWYWx1ZSh2LnR5cGUs ICJpbnRlZ2VyIiwgZmNpbmZvLT5jb250ZXh0KTsKKwkJUEdfUkVUVVJOX05VTEwoKTsKKwl9CiAK IAlpZiAodi50eXBlID09IGpidk51bGwpCiAJewpAQCAtMTk0MSw3ICsxOTYyLDEwIEBAIGpzb25i X2ludDQoUEdfRlVOQ1RJT05fQVJHUykKIAl9CiAKIAlpZiAodi50eXBlICE9IGpidk51bWVyaWMp Ci0JCWNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgImludGVnZXIiKTsKKwl7CisJCWNhbm5v dENhc3RKc29uYlZhbHVlKHYudHlwZSwgImludGVnZXIiLCBmY2luZm8tPmNvbnRleHQpOworCQlQ R19SRVRVUk5fTlVMTCgpOworCX0KIAogCXJldFZhbHVlID0gRGlyZWN0RnVuY3Rpb25DYWxsMShu dW1lcmljX2ludDQsCiAJCQkJCQkJCSAgIE51bWVyaWNHZXREYXR1bSh2LnZhbC5udW1lcmljKSk7 CkBAIC0xOTU5LDcgKzE5ODMsMTAgQEAganNvbmJfaW50OChQR19GVU5DVElPTl9BUkdTKQogCURh dHVtCQlyZXRWYWx1ZTsKIAogCWlmICghSnNvbmJFeHRyYWN0U2NhbGFyKCZpbi0+cm9vdCwgJnYp KQotCQljYW5ub3RDYXN0SnNvbmJWYWx1ZSh2LnR5cGUsICJiaWdpbnQiKTsKKwl7CisJCWNhbm5v dENhc3RKc29uYlZhbHVlKHYudHlwZSwgImJpZ2ludCIsIGZjaW5mby0+Y29udGV4dCk7CisJCVBH X1JFVFVSTl9OVUxMKCk7CisJfQogCiAJaWYgKHYudHlwZSA9PSBqYnZOdWxsKQogCXsKQEAgLTE5 NjgsNyArMTk5NSwxMCBAQCBqc29uYl9pbnQ4KFBHX0ZVTkNUSU9OX0FSR1MpCiAJfQogCiAJaWYg KHYudHlwZSAhPSBqYnZOdW1lcmljKQotCQljYW5ub3RDYXN0SnNvbmJWYWx1ZSh2LnR5cGUsICJi aWdpbnQiKTsKKwl7CisJCWNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlwZSwgImJpZ2ludCIsIGZj aW5mby0+Y29udGV4dCk7CisJCVBHX1JFVFVSTl9OVUxMKCk7CisJfQogCiAJcmV0VmFsdWUgPSBE aXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfaW50OCwKIAkJCQkJCQkJICAgTnVtZXJpY0dldERh dHVtKHYudmFsLm51bWVyaWMpKTsKQEAgLTE5ODYsNyArMjAxNiwxMCBAQCBqc29uYl9mbG9hdDQo UEdfRlVOQ1RJT05fQVJHUykKIAlEYXR1bQkJcmV0VmFsdWU7CiAKIAlpZiAoIUpzb25iRXh0cmFj dFNjYWxhcigmaW4tPnJvb3QsICZ2KSkKLQkJY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAi cmVhbCIpOworCXsKKwkJY2Fubm90Q2FzdEpzb25iVmFsdWUodi50eXBlLCAicmVhbCIsIGZjaW5m by0+Y29udGV4dCk7CisJCVBHX1JFVFVSTl9OVUxMKCk7CisJfQogCiAJaWYgKHYudHlwZSA9PSBq YnZOdWxsKQogCXsKQEAgLTE5OTUsNyArMjAyOCwxMCBAQCBqc29uYl9mbG9hdDQoUEdfRlVOQ1RJ T05fQVJHUykKIAl9CiAKIAlpZiAodi50eXBlICE9IGpidk51bWVyaWMpCi0JCWNhbm5vdENhc3RK c29uYlZhbHVlKHYudHlwZSwgInJlYWwiKTsKKwl7CisJCWNhbm5vdENhc3RKc29uYlZhbHVlKHYu dHlwZSwgInJlYWwiLCBmY2luZm8tPmNvbnRleHQpOworCQlQR19SRVRVUk5fTlVMTCgpOworCX0K IAogCXJldFZhbHVlID0gRGlyZWN0RnVuY3Rpb25DYWxsMShudW1lcmljX2Zsb2F0NCwKIAkJCQkJ CQkJICAgTnVtZXJpY0dldERhdHVtKHYudmFsLm51bWVyaWMpKTsKQEAgLTIwMTMsNyArMjA0OSwx MCBAQCBqc29uYl9mbG9hdDgoUEdfRlVOQ1RJT05fQVJHUykKIAlEYXR1bQkJcmV0VmFsdWU7CiAK IAlpZiAoIUpzb25iRXh0cmFjdFNjYWxhcigmaW4tPnJvb3QsICZ2KSkKLQkJY2Fubm90Q2FzdEpz b25iVmFsdWUodi50eXBlLCAiZG91YmxlIHByZWNpc2lvbiIpOworCXsKKwkJY2Fubm90Q2FzdEpz b25iVmFsdWUodi50eXBlLCAiZG91YmxlIHByZWNpc2lvbiIsIGZjaW5mby0+Y29udGV4dCk7CisJ CVBHX1JFVFVSTl9OVUxMKCk7CisJfQogCiAJaWYgKHYudHlwZSA9PSBqYnZOdWxsKQogCXsKQEAg LTIwMjIsNyArMjA2MSwxMCBAQCBqc29uYl9mbG9hdDgoUEdfRlVOQ1RJT05fQVJHUykKIAl9CiAK IAlpZiAodi50eXBlICE9IGpidk51bWVyaWMpCi0JCWNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlw ZSwgImRvdWJsZSBwcmVjaXNpb24iKTsKKwl7CisJCWNhbm5vdENhc3RKc29uYlZhbHVlKHYudHlw ZSwgImRvdWJsZSBwcmVjaXNpb24iLCBmY2luZm8tPmNvbnRleHQpOworCQlQR19SRVRVUk5fTlVM TCgpOworCX0KIAogCXJldFZhbHVlID0gRGlyZWN0RnVuY3Rpb25DYWxsMShudW1lcmljX2Zsb2F0 OCwKIAkJCQkJCQkJICAgTnVtZXJpY0dldERhdHVtKHYudmFsLm51bWVyaWMpKTsKLS0gCjIuMzQu MQoK --000000000000e7a9ea06457207c0 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0018-error-safe-for-casting-geometry-data-type.patch" Content-Disposition: attachment; filename="v14-0018-error-safe-for-casting-geometry-data-type.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mix9wgai1 RnJvbSA0ZTc0ZWI0MjhiYWZmMzQxMzNjYzZlNTQ2MmU4ZDQzZWRmYzI1NmM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgOCBEZWMgMjAyNSAxMDowMjowOCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjE0 IDE4LzE5XSBlcnJvciBzYWZlIGZvciBjYXN0aW5nIGdlb21ldHJ5IGRhdGEgdHlwZQoKc2VsZWN0 IGNhc3Rzb3VyY2U6OnJlZ3R5cGUsIGNhc3R0YXJnZXQ6OnJlZ3R5cGUsIHBwLnByb3NyYwpmcm9t IHBnX2Nhc3QgcGMgam9pbiBwZ19wcm9jIHBwIG9uIHBwLm9pZCA9IHBjLmNhc3RmdW5jCmpvaW4g cGdfdHlwZSBwdCBvbiBwdC5vaWQgPSBjYXN0c291cmNlCmpvaW4gcGdfdHlwZSBwdDEgb24gcHQx Lm9pZCA9IGNhc3R0YXJnZXQKYW5kIHBjLmNhc3RmdW5jID4gMCBhbmQgIHB0LnR5cGFycmF5IDw+ IDAKYW5kIHB0LnR5cG5hbWVzcGFjZSA9ICdwZ19jYXRhbG9nJzo6cmVnbmFtZXNwYWNlCmFuZCBw dDEudHlwbmFtZXNwYWNlID0gJ3BnX2NhdGFsb2cnOjpyZWduYW1lc3BhY2UKYW5kIChwdC50eXBj YXRlZ29yeSAgPSAnRycgb3IgcHQxLnR5cGNhdGVnb3J5ICA9ICdHJykKb3JkZXIgYnkgY2FzdHNv dXJjZTo6cmVndHlwZSwgY2FzdHRhcmdldDo6cmVndHlwZTsKCiBjYXN0c291cmNlIHwgY2FzdHRh cmdldCB8ICAgIHByb3NyYwotLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LQogcG9pbnQgICAgICB8IGJveCAgICAgICAgfCBwb2ludF9ib3gKIGxzZWcgICAgICAgfCBwb2lu dCAgICAgIHwgbHNlZ19jZW50ZXIKIHBhdGggICAgICAgfCBwb2x5Z29uICAgIHwgcGF0aF9wb2x5 CiBib3ggICAgICAgIHwgcG9pbnQgICAgICB8IGJveF9jZW50ZXIKIGJveCAgICAgICAgfCBsc2Vn ICAgICAgIHwgYm94X2RpYWdvbmFsCiBib3ggICAgICAgIHwgcG9seWdvbiAgICB8IGJveF9wb2x5 CiBib3ggICAgICAgIHwgY2lyY2xlICAgICB8IGJveF9jaXJjbGUKIHBvbHlnb24gICAgfCBwb2lu dCAgICAgIHwgcG9seV9jZW50ZXIKIHBvbHlnb24gICAgfCBwYXRoICAgICAgIHwgcG9seV9wYXRo CiBwb2x5Z29uICAgIHwgYm94ICAgICAgICB8IHBvbHlfYm94CiBwb2x5Z29uICAgIHwgY2lyY2xl ICAgICB8IHBvbHlfY2lyY2xlCiBjaXJjbGUgICAgIHwgcG9pbnQgICAgICB8IGNpcmNsZV9jZW50 ZXIKIGNpcmNsZSAgICAgfCBib3ggICAgICAgIHwgY2lyY2xlX2JveAogY2lyY2xlICAgICB8IHBv bHlnb24gICAgfAooMTQgcm93cykKCmFscmVhZHkgZXJyb3Igc2FmZTogcG9pbnRfYm94LCBib3hf ZGlhZ29uYWwsIGJveF9wb2x5LCBwb2x5X3BhdGgsIHBvbHlfYm94LCBjaXJjbGVfY2VudGVyCmFs bW9zdCBlcnJvciBzYWZlOiBwYXRoX3BvbHkKcGF0Y2ggbWFrZSB0aGVzZSBmdW5jdGlvbnMgZXJy b3Igc2FmZTogbHNlZ19jZW50ZXIsIGJveF9jZW50ZXIsIGJveF9jaXJjbGUsIHBvbHlfY2VudGVy LCBwb2x5X2NpcmNsZQpjaXJjbGVfYm94CgpjYW4gbm90IGVycm9yIHNhZmU6IGNhc3QgY2lyY2xl IHRvIHBvbHlnb24sIGJlY2F1c2UgaXQncyBhIFNRTCBmdW5jdGlvbgpkaXNjdXNzaW9uOiBodHRw czovL3Bvc3Rnci5lcy9tL0NBQ0p1ZnhIQ016ckhPVz13UmU4TDMwck1oQjNzandBdjFMRTkyOEZh N3N4TXUxVHgtZ0BtYWlsLmdtYWlsLmNvbQotLS0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9m bG9hdDQuYyB8ICAgMiArLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0OC5jIHwgICA0 ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvZmxvYXQuYyAgICAgfCAxMDQgKysrKysrLS0tLS0t CiBzcmMvYmFja2VuZC91dGlscy9hZHQvZ2VvX29wcy5jICAgfCAyNjggKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9mbG9hdC5oICAgICAgICAgfCAxMTAg KysrKysrKystLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDMzMCBpbnNlcnRpb25zKCspLCAxNTggZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0NC5j IGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0NC5jCmluZGV4IGQ5Yzg1OTgzNWRhLi5h NzMyNWE3YmIyOSAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0NC5j CisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9hdDQuYwpAQCAtMTAxLDcgKzEwMSw3 IEBAIGZsb2F0NF9kaXN0KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlyID0gYSAtIGI7CiAJaWYgKHVu bGlrZWx5KGlzaW5mKHIpKSAmJiAhaXNpbmYoYSkgJiYgIWlzaW5mKGIpKQotCQlmbG9hdF9vdmVy Zmxvd19lcnJvcigpOworCQlmbG9hdF9vdmVyZmxvd19lcnJvcihOVUxMKTsKIAogCVBHX1JFVFVS Tl9GTE9BVDQoZmFic2YocikpOwogfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0 cmVlX2Zsb2F0OC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Zsb2F0OC5jCmluZGV4IDU2 N2JlZWRlMTc4Li43Yzk5Yjg0ZGUzNSAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0 cmVlX2Zsb2F0OC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9hdDguYwpAQCAt NzksNyArNzksNyBAQCBnYnRfZmxvYXQ4X2Rpc3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAq YiwgRm1nckluZm8gKmZsaW5mbykKIAogCXIgPSBhcmcxIC0gYXJnMjsKIAlpZiAodW5saWtlbHko aXNpbmYocikpICYmICFpc2luZihhcmcxKSAmJiAhaXNpbmYoYXJnMikpCi0JCWZsb2F0X292ZXJm bG93X2Vycm9yKCk7CisJCWZsb2F0X292ZXJmbG93X2Vycm9yKE5VTEwpOwogCXJldHVybiBmYWJz KHIpOwogfQogCkBAIC0xMDksNyArMTA5LDcgQEAgZmxvYXQ4X2Rpc3QoUEdfRlVOQ1RJT05fQVJH UykKIAogCXIgPSBhIC0gYjsKIAlpZiAodW5saWtlbHkoaXNpbmYocikpICYmICFpc2luZihhKSAm JiAhaXNpbmYoYikpCi0JCWZsb2F0X292ZXJmbG93X2Vycm9yKCk7CisJCWZsb2F0X292ZXJmbG93 X2Vycm9yKE5VTEwpOwogCiAJUEdfUkVUVVJOX0ZMT0FUOChmYWJzKHIpKTsKIH0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mbG9hdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2Zsb2F0LmMKaW5kZXggNTVjNzAzMGJhODEuLjI3MTBlNDJmNWJiIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvZmxvYXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZmxv YXQuYwpAQCAtODMsMjUgKzgzLDI1IEBAIHN0YXRpYyB2b2lkIGluaXRfZGVncmVlX2NvbnN0YW50 cyh2b2lkKTsKICAqIFRoaXMgZG9lcyBtZWFuIHRoYXQgeW91IGRvbid0IGdldCBhIHVzZWZ1bCBl cnJvciBsb2NhdGlvbiBpbmRpY2F0b3IuCiAgKi8KIHBnX25vaW5saW5lIHZvaWQKLWZsb2F0X292 ZXJmbG93X2Vycm9yKHZvaWQpCitmbG9hdF9vdmVyZmxvd19lcnJvcihzdHJ1Y3QgTm9kZSAqZXNj b250ZXh0KQogewotCWVyZXBvcnQoRVJST1IsCisJZXJyc2F2ZShlc2NvbnRleHQsCiAJCQkoZXJy Y29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwKIAkJCSBlcnJtc2coInZh bHVlIG91dCBvZiByYW5nZTogb3ZlcmZsb3ciKSkpOwogfQogCiBwZ19ub2lubGluZSB2b2lkCi1m bG9hdF91bmRlcmZsb3dfZXJyb3Iodm9pZCkKK2Zsb2F0X3VuZGVyZmxvd19lcnJvcihzdHJ1Y3Qg Tm9kZSAqZXNjb250ZXh0KQogewotCWVyZXBvcnQoRVJST1IsCisJZXJyc2F2ZShlc2NvbnRleHQs CiAJCQkoZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwKIAkJCSBl cnJtc2coInZhbHVlIG91dCBvZiByYW5nZTogdW5kZXJmbG93IikpKTsKIH0KIAogcGdfbm9pbmxp bmUgdm9pZAotZmxvYXRfemVyb19kaXZpZGVfZXJyb3Iodm9pZCkKK2Zsb2F0X3plcm9fZGl2aWRl X2Vycm9yKHN0cnVjdCBOb2RlICplc2NvbnRleHQpCiB7Ci0JZXJlcG9ydChFUlJPUiwKKwllcnJz YXZlKGVzY29udGV4dCwKIAkJCShlcnJjb2RlKEVSUkNPREVfRElWSVNJT05fQllfWkVSTyksCiAJ CQkgZXJybXNnKCJkaXZpc2lvbiBieSB6ZXJvIikpKTsKIH0KQEAgLTE0NjAsOSArMTQ2MCw5IEBA IGRzcXJ0KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlyZXN1bHQgPSBzcXJ0KGFyZzEpOwogCWlmICh1 bmxpa2VseShpc2luZihyZXN1bHQpKSAmJiAhaXNpbmYoYXJnMSkpCi0JCWZsb2F0X292ZXJmbG93 X2Vycm9yKCk7CisJCWZsb2F0X292ZXJmbG93X2Vycm9yKE5VTEwpOwogCWlmICh1bmxpa2VseShy ZXN1bHQgPT0gMC4wKSAmJiBhcmcxICE9IDAuMCkKLQkJZmxvYXRfdW5kZXJmbG93X2Vycm9yKCk7 CisJCWZsb2F0X3VuZGVyZmxvd19lcnJvcihOVUxMKTsKIAogCVBHX1JFVFVSTl9GTE9BVDgocmVz dWx0KTsKIH0KQEAgLTE0NzksOSArMTQ3OSw5IEBAIGRjYnJ0KFBHX0ZVTkNUSU9OX0FSR1MpCiAK IAlyZXN1bHQgPSBjYnJ0KGFyZzEpOwogCWlmICh1bmxpa2VseShpc2luZihyZXN1bHQpKSAmJiAh aXNpbmYoYXJnMSkpCi0JCWZsb2F0X292ZXJmbG93X2Vycm9yKCk7CisJCWZsb2F0X292ZXJmbG93 X2Vycm9yKE5VTEwpOwogCWlmICh1bmxpa2VseShyZXN1bHQgPT0gMC4wKSAmJiBhcmcxICE9IDAu MCkKLQkJZmxvYXRfdW5kZXJmbG93X2Vycm9yKCk7CisJCWZsb2F0X3VuZGVyZmxvd19lcnJvcihO VUxMKTsKIAogCVBHX1JFVFVSTl9GTE9BVDgocmVzdWx0KTsKIH0KQEAgLTE2MTcsMjQgKzE2MTcs MjQgQEAgZHBvdyhQR19GVU5DVElPTl9BUkdTKQogCQkJCWlmIChhYnN4ID09IDEuMCkKIAkJCQkJ cmVzdWx0ID0gMS4wOwogCQkJCWVsc2UgaWYgKGFyZzIgPj0gMC4wID8gKGFic3ggPiAxLjApIDog KGFic3ggPCAxLjApKQotCQkJCQlmbG9hdF9vdmVyZmxvd19lcnJvcigpOworCQkJCQlmbG9hdF9v dmVyZmxvd19lcnJvcihOVUxMKTsKIAkJCQllbHNlCi0JCQkJCWZsb2F0X3VuZGVyZmxvd19lcnJv cigpOworCQkJCQlmbG9hdF91bmRlcmZsb3dfZXJyb3IoTlVMTCk7CiAJCQl9CiAJCX0KIAkJZWxz ZSBpZiAoZXJybm8gPT0gRVJBTkdFKQogCQl7CiAJCQlpZiAocmVzdWx0ICE9IDAuMCkKLQkJCQlm bG9hdF9vdmVyZmxvd19lcnJvcigpOworCQkJCWZsb2F0X292ZXJmbG93X2Vycm9yKE5VTEwpOwog CQkJZWxzZQotCQkJCWZsb2F0X3VuZGVyZmxvd19lcnJvcigpOworCQkJCWZsb2F0X3VuZGVyZmxv d19lcnJvcihOVUxMKTsKIAkJfQogCQllbHNlCiAJCXsKIAkJCWlmICh1bmxpa2VseShpc2luZihy ZXN1bHQpKSkKLQkJCQlmbG9hdF9vdmVyZmxvd19lcnJvcigpOworCQkJCWZsb2F0X292ZXJmbG93 X2Vycm9yKE5VTEwpOwogCQkJaWYgKHVubGlrZWx5KHJlc3VsdCA9PSAwLjApICYmIGFyZzEgIT0g MC4wKQotCQkJCWZsb2F0X3VuZGVyZmxvd19lcnJvcigpOworCQkJCWZsb2F0X3VuZGVyZmxvd19l cnJvcihOVUxMKTsKIAkJfQogCX0KIApAQCAtMTY3NCwxNCArMTY3NCwxNCBAQCBkZXhwKFBHX0ZV TkNUSU9OX0FSR1MpCiAJCWlmICh1bmxpa2VseShlcnJubyA9PSBFUkFOR0UpKQogCQl7CiAJCQlp ZiAocmVzdWx0ICE9IDAuMCkKLQkJCQlmbG9hdF9vdmVyZmxvd19lcnJvcigpOworCQkJCWZsb2F0 X292ZXJmbG93X2Vycm9yKE5VTEwpOwogCQkJZWxzZQotCQkJCWZsb2F0X3VuZGVyZmxvd19lcnJv cigpOworCQkJCWZsb2F0X3VuZGVyZmxvd19lcnJvcihOVUxMKTsKIAkJfQogCQllbHNlIGlmICh1 bmxpa2VseShpc2luZihyZXN1bHQpKSkKLQkJCWZsb2F0X292ZXJmbG93X2Vycm9yKCk7CisJCQlm bG9hdF9vdmVyZmxvd19lcnJvcihOVUxMKTsKIAkJZWxzZSBpZiAodW5saWtlbHkocmVzdWx0ID09 IDAuMCkpCi0JCQlmbG9hdF91bmRlcmZsb3dfZXJyb3IoKTsKKwkJCWZsb2F0X3VuZGVyZmxvd19l cnJvcihOVUxMKTsKIAl9CiAKIAlQR19SRVRVUk5fRkxPQVQ4KHJlc3VsdCk7CkBAIC0xNzEyLDkg KzE3MTIsOSBAQCBkbG9nMShQR19GVU5DVElPTl9BUkdTKQogCiAJcmVzdWx0ID0gbG9nKGFyZzEp OwogCWlmICh1bmxpa2VseShpc2luZihyZXN1bHQpKSAmJiAhaXNpbmYoYXJnMSkpCi0JCWZsb2F0 X292ZXJmbG93X2Vycm9yKCk7CisJCWZsb2F0X292ZXJmbG93X2Vycm9yKE5VTEwpOwogCWlmICh1 bmxpa2VseShyZXN1bHQgPT0gMC4wKSAmJiBhcmcxICE9IDEuMCkKLQkJZmxvYXRfdW5kZXJmbG93 X2Vycm9yKCk7CisJCWZsb2F0X3VuZGVyZmxvd19lcnJvcihOVUxMKTsKIAogCVBHX1JFVFVSTl9G TE9BVDgocmVzdWx0KTsKIH0KQEAgLTE3NDUsOSArMTc0NSw5IEBAIGRsb2cxMChQR19GVU5DVElP Tl9BUkdTKQogCiAJcmVzdWx0ID0gbG9nMTAoYXJnMSk7CiAJaWYgKHVubGlrZWx5KGlzaW5mKHJl c3VsdCkpICYmICFpc2luZihhcmcxKSkKLQkJZmxvYXRfb3ZlcmZsb3dfZXJyb3IoKTsKKwkJZmxv YXRfb3ZlcmZsb3dfZXJyb3IoTlVMTCk7CiAJaWYgKHVubGlrZWx5KHJlc3VsdCA9PSAwLjApICYm IGFyZzEgIT0gMS4wKQotCQlmbG9hdF91bmRlcmZsb3dfZXJyb3IoKTsKKwkJZmxvYXRfdW5kZXJm bG93X2Vycm9yKE5VTEwpOwogCiAJUEdfUkVUVVJOX0ZMT0FUOChyZXN1bHQpOwogfQpAQCAtMTc3 OCw3ICsxNzc4LDcgQEAgZGFjb3MoUEdfRlVOQ1RJT05fQVJHUykKIAogCXJlc3VsdCA9IGFjb3Mo YXJnMSk7CiAJaWYgKHVubGlrZWx5KGlzaW5mKHJlc3VsdCkpKQotCQlmbG9hdF9vdmVyZmxvd19l cnJvcigpOworCQlmbG9hdF9vdmVyZmxvd19lcnJvcihOVUxMKTsKIAogCVBHX1JFVFVSTl9GTE9B VDgocmVzdWx0KTsKIH0KQEAgLTE4MDksNyArMTgwOSw3IEBAIGRhc2luKFBHX0ZVTkNUSU9OX0FS R1MpCiAKIAlyZXN1bHQgPSBhc2luKGFyZzEpOwogCWlmICh1bmxpa2VseShpc2luZihyZXN1bHQp KSkKLQkJZmxvYXRfb3ZlcmZsb3dfZXJyb3IoKTsKKwkJZmxvYXRfb3ZlcmZsb3dfZXJyb3IoTlVM TCk7CiAKIAlQR19SRVRVUk5fRkxPQVQ4KHJlc3VsdCk7CiB9CkBAIC0xODM1LDcgKzE4MzUsNyBA QCBkYXRhbihQR19GVU5DVElPTl9BUkdTKQogCSAqLwogCXJlc3VsdCA9IGF0YW4oYXJnMSk7CiAJ aWYgKHVubGlrZWx5KGlzaW5mKHJlc3VsdCkpKQotCQlmbG9hdF9vdmVyZmxvd19lcnJvcigpOwor CQlmbG9hdF9vdmVyZmxvd19lcnJvcihOVUxMKTsKIAogCVBHX1JFVFVSTl9GTE9BVDgocmVzdWx0 KTsKIH0KQEAgLTE4NjEsNyArMTg2MSw3IEBAIGRhdGFuMihQR19GVU5DVElPTl9BUkdTKQogCSAq LwogCXJlc3VsdCA9IGF0YW4yKGFyZzEsIGFyZzIpOwogCWlmICh1bmxpa2VseShpc2luZihyZXN1 bHQpKSkKLQkJZmxvYXRfb3ZlcmZsb3dfZXJyb3IoKTsKKwkJZmxvYXRfb3ZlcmZsb3dfZXJyb3Io TlVMTCk7CiAKIAlQR19SRVRVUk5fRkxPQVQ4KHJlc3VsdCk7CiB9CkBAIC0xOTAyLDcgKzE5MDIs NyBAQCBkY29zKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9OVU1FUklD X1ZBTFVFX09VVF9PRl9SQU5HRSksCiAJCQkJIGVycm1zZygiaW5wdXQgaXMgb3V0IG9mIHJhbmdl IikpKTsKIAlpZiAodW5saWtlbHkoaXNpbmYocmVzdWx0KSkpCi0JCWZsb2F0X292ZXJmbG93X2Vy cm9yKCk7CisJCWZsb2F0X292ZXJmbG93X2Vycm9yKE5VTEwpOwogCiAJUEdfUkVUVVJOX0ZMT0FU OChyZXN1bHQpOwogfQpAQCAtMTk1Nyw3ICsxOTU3LDcgQEAgZHNpbihQR19GVU5DVElPTl9BUkdT KQogCQkJCShlcnJjb2RlKEVSUkNPREVfTlVNRVJJQ19WQUxVRV9PVVRfT0ZfUkFOR0UpLAogCQkJ CSBlcnJtc2coImlucHV0IGlzIG91dCBvZiByYW5nZSIpKSk7CiAJaWYgKHVubGlrZWx5KGlzaW5m KHJlc3VsdCkpKQotCQlmbG9hdF9vdmVyZmxvd19lcnJvcigpOworCQlmbG9hdF9vdmVyZmxvd19l cnJvcihOVUxMKTsKIAogCVBHX1JFVFVSTl9GTE9BVDgocmVzdWx0KTsKIH0KQEAgLTIxMzcsNyAr MjEzNyw3IEBAIGRhY29zZChQR19GVU5DVElPTl9BUkdTKQogCQlyZXN1bHQgPSA5MC4wICsgYXNp bmRfcTEoLWFyZzEpOwogCiAJaWYgKHVubGlrZWx5KGlzaW5mKHJlc3VsdCkpKQotCQlmbG9hdF9v dmVyZmxvd19lcnJvcigpOworCQlmbG9hdF9vdmVyZmxvd19lcnJvcihOVUxMKTsKIAogCVBHX1JF VFVSTl9GTE9BVDgocmVzdWx0KTsKIH0KQEAgLTIxNzQsNyArMjE3NCw3IEBAIGRhc2luZChQR19G VU5DVElPTl9BUkdTKQogCQlyZXN1bHQgPSAtYXNpbmRfcTEoLWFyZzEpOwogCiAJaWYgKHVubGlr ZWx5KGlzaW5mKHJlc3VsdCkpKQotCQlmbG9hdF9vdmVyZmxvd19lcnJvcigpOworCQlmbG9hdF9v dmVyZmxvd19lcnJvcihOVUxMKTsKIAogCVBHX1JFVFVSTl9GTE9BVDgocmVzdWx0KTsKIH0KQEAg LTIyMDYsNyArMjIwNiw3IEBAIGRhdGFuZChQR19GVU5DVElPTl9BUkdTKQogCXJlc3VsdCA9IChh dGFuX2FyZzEgLyBhdGFuXzFfMCkgKiA0NS4wOwogCiAJaWYgKHVubGlrZWx5KGlzaW5mKHJlc3Vs dCkpKQotCQlmbG9hdF9vdmVyZmxvd19lcnJvcigpOworCQlmbG9hdF9vdmVyZmxvd19lcnJvcihO VUxMKTsKIAogCVBHX1JFVFVSTl9GTE9BVDgocmVzdWx0KTsKIH0KQEAgLTIyNDIsNyArMjI0Miw3 IEBAIGRhdGFuMmQoUEdfRlVOQ1RJT05fQVJHUykKIAlyZXN1bHQgPSAoYXRhbjJfYXJnMV9hcmcy IC8gYXRhbl8xXzApICogNDUuMDsKIAogCWlmICh1bmxpa2VseShpc2luZihyZXN1bHQpKSkKLQkJ ZmxvYXRfb3ZlcmZsb3dfZXJyb3IoKTsKKwkJZmxvYXRfb3ZlcmZsb3dfZXJyb3IoTlVMTCk7CiAK IAlQR19SRVRVUk5fRkxPQVQ4KHJlc3VsdCk7CiB9CkBAIC0yMzY1LDcgKzIzNjUsNyBAQCBkY29z ZChQR19GVU5DVElPTl9BUkdTKQogCXJlc3VsdCA9IHNpZ24gKiBjb3NkX3ExKGFyZzEpOwogCiAJ aWYgKHVubGlrZWx5KGlzaW5mKHJlc3VsdCkpKQotCQlmbG9hdF9vdmVyZmxvd19lcnJvcigpOwor CQlmbG9hdF9vdmVyZmxvd19lcnJvcihOVUxMKTsKIAogCVBHX1JFVFVSTl9GTE9BVDgocmVzdWx0 KTsKIH0KQEAgLTI0ODcsNyArMjQ4Nyw3IEBAIGRzaW5kKFBHX0ZVTkNUSU9OX0FSR1MpCiAJcmVz dWx0ID0gc2lnbiAqIHNpbmRfcTEoYXJnMSk7CiAKIAlpZiAodW5saWtlbHkoaXNpbmYocmVzdWx0 KSkpCi0JCWZsb2F0X292ZXJmbG93X2Vycm9yKCk7CisJCWZsb2F0X292ZXJmbG93X2Vycm9yKE5V TEwpOwogCiAJUEdfUkVUVVJOX0ZMT0FUOChyZXN1bHQpOwogfQpAQCAtMjY0NSw3ICsyNjQ1LDcg QEAgZGNvc2goUEdfRlVOQ1RJT05fQVJHUykKIAkJcmVzdWx0ID0gZ2V0X2Zsb2F0OF9pbmZpbml0 eSgpOwogCiAJaWYgKHVubGlrZWx5KHJlc3VsdCA9PSAwLjApKQotCQlmbG9hdF91bmRlcmZsb3df ZXJyb3IoKTsKKwkJZmxvYXRfdW5kZXJmbG93X2Vycm9yKE5VTEwpOwogCiAJUEdfUkVUVVJOX0ZM T0FUOChyZXN1bHQpOwogfQpAQCAtMjY2NSw3ICsyNjY1LDcgQEAgZHRhbmgoUEdfRlVOQ1RJT05f QVJHUykKIAlyZXN1bHQgPSB0YW5oKGFyZzEpOwogCiAJaWYgKHVubGlrZWx5KGlzaW5mKHJlc3Vs dCkpKQotCQlmbG9hdF9vdmVyZmxvd19lcnJvcigpOworCQlmbG9hdF9vdmVyZmxvd19lcnJvcihO VUxMKTsKIAogCVBHX1JFVFVSTl9GTE9BVDgocmVzdWx0KTsKIH0KQEAgLTI3NjUsNyArMjc2NSw3 IEBAIGRlcmYoUEdfRlVOQ1RJT05fQVJHUykKIAlyZXN1bHQgPSBlcmYoYXJnMSk7CiAKIAlpZiAo dW5saWtlbHkoaXNpbmYocmVzdWx0KSkpCi0JCWZsb2F0X292ZXJmbG93X2Vycm9yKCk7CisJCWZs b2F0X292ZXJmbG93X2Vycm9yKE5VTEwpOwogCiAJUEdfUkVUVVJOX0ZMT0FUOChyZXN1bHQpOwog fQpAQCAtMjc4NSw3ICsyNzg1LDcgQEAgZGVyZmMoUEdfRlVOQ1RJT05fQVJHUykKIAlyZXN1bHQg PSBlcmZjKGFyZzEpOwogCiAJaWYgKHVubGlrZWx5KGlzaW5mKHJlc3VsdCkpKQotCQlmbG9hdF9v dmVyZmxvd19lcnJvcigpOworCQlmbG9hdF9vdmVyZmxvd19lcnJvcihOVUxMKTsKIAogCVBHX1JF VFVSTl9GTE9BVDgocmVzdWx0KTsKIH0KQEAgLTI4MTQsNyArMjgxNCw3IEBAIGRnYW1tYShQR19G VU5DVElPTl9BUkdTKQogCQkvKiBQZXIgUE9TSVgsIGFuIGlucHV0IG9mIC1JbmYgY2F1c2VzIGEg ZG9tYWluIGVycm9yICovCiAJCWlmIChhcmcxIDwgMCkKIAkJewotCQkJZmxvYXRfb3ZlcmZsb3df ZXJyb3IoKTsKKwkJCWZsb2F0X292ZXJmbG93X2Vycm9yKE5VTEwpOwogCQkJcmVzdWx0ID0gZ2V0 X2Zsb2F0OF9uYW4oKTsJLyoga2VlcCBjb21waWxlciBxdWlldCAqLwogCQl9CiAJCWVsc2UKQEAg LTI4MzYsMTIgKzI4MzYsMTIgQEAgZGdhbW1hKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWlmIChlcnJu byAhPSAwIHx8IGlzaW5mKHJlc3VsdCkgfHwgaXNuYW4ocmVzdWx0KSkKIAkJewogCQkJaWYgKHJl c3VsdCAhPSAwLjApCi0JCQkJZmxvYXRfb3ZlcmZsb3dfZXJyb3IoKTsKKwkJCQlmbG9hdF9vdmVy Zmxvd19lcnJvcihOVUxMKTsKIAkJCWVsc2UKLQkJCQlmbG9hdF91bmRlcmZsb3dfZXJyb3IoKTsK KwkJCQlmbG9hdF91bmRlcmZsb3dfZXJyb3IoTlVMTCk7CiAJCX0KIAkJZWxzZSBpZiAocmVzdWx0 ID09IDAuMCkKLQkJCWZsb2F0X3VuZGVyZmxvd19lcnJvcigpOworCQkJZmxvYXRfdW5kZXJmbG93 X2Vycm9yKE5VTEwpOwogCX0KIAogCVBHX1JFVFVSTl9GTE9BVDgocmVzdWx0KTsKQEAgLTI4NzMs NyArMjg3Myw3IEBAIGRsZ2FtbWEoUEdfRlVOQ1RJT05fQVJHUykKIAkgKiB0byByZXBvcnQgb3Zl cmZsb3csIGJ1dCBpdCBzaG91bGQgbmV2ZXIgdW5kZXJmbG93LgogCSAqLwogCWlmIChlcnJubyA9 PSBFUkFOR0UgfHwgKGlzaW5mKHJlc3VsdCkgJiYgIWlzaW5mKGFyZzEpKSkKLQkJZmxvYXRfb3Zl cmZsb3dfZXJyb3IoKTsKKwkJZmxvYXRfb3ZlcmZsb3dfZXJyb3IoTlVMTCk7CiAKIAlQR19SRVRV Uk5fRkxPQVQ4KHJlc3VsdCk7CiB9CkBAIC0zMDEzLDcgKzMwMTMsNyBAQCBmbG9hdDhfY29tYmlu ZShQR19GVU5DVElPTl9BUkdTKQogCQl0bXAgPSBTeDEgLyBOMSAtIFN4MiAvIE4yOwogCQlTeHgg PSBTeHgxICsgU3h4MiArIE4xICogTjIgKiB0bXAgKiB0bXAgLyBOOwogCQlpZiAodW5saWtlbHko aXNpbmYoU3h4KSkgJiYgIWlzaW5mKFN4eDEpICYmICFpc2luZihTeHgyKSkKLQkJCWZsb2F0X292 ZXJmbG93X2Vycm9yKCk7CisJCQlmbG9hdF9vdmVyZmxvd19lcnJvcihOVUxMKTsKIAl9CiAKIAkv KgpAQCAtMzA4MCw3ICszMDgwLDcgQEAgZmxvYXQ4X2FjY3VtKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CWlmIChpc2luZihTeCkgfHwgaXNpbmYoU3h4KSkKIAkJewogCQkJaWYgKCFpc2luZih0cmFuc3Zh bHVlc1sxXSkgJiYgIWlzaW5mKG5ld3ZhbCkpCi0JCQkJZmxvYXRfb3ZlcmZsb3dfZXJyb3IoKTsK KwkJCQlmbG9hdF9vdmVyZmxvd19lcnJvcihOVUxMKTsKIAogCQkJU3h4ID0gZ2V0X2Zsb2F0OF9u YW4oKTsKIAkJfQpAQCAtMzE2Myw3ICszMTYzLDcgQEAgZmxvYXQ0X2FjY3VtKFBHX0ZVTkNUSU9O X0FSR1MpCiAJCWlmIChpc2luZihTeCkgfHwgaXNpbmYoU3h4KSkKIAkJewogCQkJaWYgKCFpc2lu Zih0cmFuc3ZhbHVlc1sxXSkgJiYgIWlzaW5mKG5ld3ZhbCkpCi0JCQkJZmxvYXRfb3ZlcmZsb3df ZXJyb3IoKTsKKwkJCQlmbG9hdF9vdmVyZmxvd19lcnJvcihOVUxMKTsKIAogCQkJU3h4ID0gZ2V0 X2Zsb2F0OF9uYW4oKTsKIAkJfQpAQCAtMzQzMCw3ICszNDMwLDcgQEAgZmxvYXQ4X3JlZ3JfYWNj dW0oUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkoaXNpbmYoU3h5KSAmJgogCQkJCSAhaXNpbmYodHJh bnN2YWx1ZXNbMV0pICYmICFpc2luZihuZXd2YWxYKSAmJgogCQkJCSAhaXNpbmYodHJhbnN2YWx1 ZXNbM10pICYmICFpc2luZihuZXd2YWxZKSkpCi0JCQkJZmxvYXRfb3ZlcmZsb3dfZXJyb3IoKTsK KwkJCQlmbG9hdF9vdmVyZmxvd19lcnJvcihOVUxMKTsKIAogCQkJaWYgKGlzaW5mKFN4eCkpCiAJ CQkJU3h4ID0gZ2V0X2Zsb2F0OF9uYW4oKTsKQEAgLTM2MDMsMTUgKzM2MDMsMTUgQEAgZmxvYXQ4 X3JlZ3JfY29tYmluZShQR19GVU5DVElPTl9BUkdTKQogCQl0bXAxID0gU3gxIC8gTjEgLSBTeDIg LyBOMjsKIAkJU3h4ID0gU3h4MSArIFN4eDIgKyBOMSAqIE4yICogdG1wMSAqIHRtcDEgLyBOOwog CQlpZiAodW5saWtlbHkoaXNpbmYoU3h4KSkgJiYgIWlzaW5mKFN4eDEpICYmICFpc2luZihTeHgy KSkKLQkJCWZsb2F0X292ZXJmbG93X2Vycm9yKCk7CisJCQlmbG9hdF9vdmVyZmxvd19lcnJvcihO VUxMKTsKIAkJU3kgPSBmbG9hdDhfcGwoU3kxLCBTeTIpOwogCQl0bXAyID0gU3kxIC8gTjEgLSBT eTIgLyBOMjsKIAkJU3l5ID0gU3l5MSArIFN5eTIgKyBOMSAqIE4yICogdG1wMiAqIHRtcDIgLyBO OwogCQlpZiAodW5saWtlbHkoaXNpbmYoU3l5KSkgJiYgIWlzaW5mKFN5eTEpICYmICFpc2luZihT eXkyKSkKLQkJCWZsb2F0X292ZXJmbG93X2Vycm9yKCk7CisJCQlmbG9hdF9vdmVyZmxvd19lcnJv cihOVUxMKTsKIAkJU3h5ID0gU3h5MSArIFN4eTIgKyBOMSAqIE4yICogdG1wMSAqIHRtcDIgLyBO OwogCQlpZiAodW5saWtlbHkoaXNpbmYoU3h5KSkgJiYgIWlzaW5mKFN4eTEpICYmICFpc2luZihT eHkyKSkKLQkJCWZsb2F0X292ZXJmbG93X2Vycm9yKCk7CisJCQlmbG9hdF9vdmVyZmxvd19lcnJv cihOVUxMKTsKIAkJaWYgKGZsb2F0OF9lcShDeDEsIEN4MikpCiAJCQlDeCA9IEN4MTsKIAkJZWxz ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2dlb19vcHMuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMKaW5kZXggOTEwMWE3MjA3NDQuLjE5Zjc1ZTU5YTZkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZ2VvX29wcy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMKQEAgLTc3LDEyICs3NywxMyBAQCBlbnVtIHBhdGhfZGVs aW0KIAogLyogUm91dGluZXMgZm9yIHBvaW50cyAqLwogc3RhdGljIGlubGluZSB2b2lkIHBvaW50 X2NvbnN0cnVjdChQb2ludCAqcmVzdWx0LCBmbG9hdDggeCwgZmxvYXQ4IHkpOwotc3RhdGljIGlu bGluZSB2b2lkIHBvaW50X2FkZF9wb2ludChQb2ludCAqcmVzdWx0LCBQb2ludCAqcHQxLCBQb2lu dCAqcHQyKTsKK3N0YXRpYyBpbmxpbmUgdm9pZCBwb2ludF9hZGRfcG9pbnQoUG9pbnQgKnJlc3Vs dCwgUG9pbnQgKnB0MSwgUG9pbnQgKnB0MiwKKwkJCQkJCQkJICAgTm9kZSAqZXNjb250ZXh0KTsK IHN0YXRpYyBpbmxpbmUgdm9pZCBwb2ludF9zdWJfcG9pbnQoUG9pbnQgKnJlc3VsdCwgUG9pbnQg KnB0MSwgUG9pbnQgKnB0Mik7CiBzdGF0aWMgaW5saW5lIHZvaWQgcG9pbnRfbXVsX3BvaW50KFBv aW50ICpyZXN1bHQsIFBvaW50ICpwdDEsIFBvaW50ICpwdDIpOwogc3RhdGljIGlubGluZSB2b2lk IHBvaW50X2Rpdl9wb2ludChQb2ludCAqcmVzdWx0LCBQb2ludCAqcHQxLCBQb2ludCAqcHQyKTsK IHN0YXRpYyBpbmxpbmUgYm9vbCBwb2ludF9lcV9wb2ludChQb2ludCAqcHQxLCBQb2ludCAqcHQy KTsKLXN0YXRpYyBpbmxpbmUgZmxvYXQ4IHBvaW50X2R0KFBvaW50ICpwdDEsIFBvaW50ICpwdDIp Oworc3RhdGljIGlubGluZSBmbG9hdDggcG9pbnRfZHQoUG9pbnQgKnB0MSwgUG9pbnQgKnB0Miwg Tm9kZSAqZXNjb250ZXh0KTsKIHN0YXRpYyBpbmxpbmUgZmxvYXQ4IHBvaW50X3NsKFBvaW50ICpw dDEsIFBvaW50ICpwdDIpOwogc3RhdGljIGludAlwb2ludF9pbnNpZGUoUG9pbnQgKnAsIGludCBu cHRzLCBQb2ludCAqcGxpc3QpOwogCkBAIC0xMDgsNyArMTA5LDcgQEAgc3RhdGljIGZsb2F0OCBs c2VnX2Nsb3NlcHRfbHNlZyhQb2ludCAqcmVzdWx0LCBMU0VHICpvbl9sc2VnLCBMU0VHICp0b19s c2VnKTsKIAogLyogUm91dGluZXMgZm9yIGJveGVzICovCiBzdGF0aWMgaW5saW5lIHZvaWQgYm94 X2NvbnN0cnVjdChCT1ggKnJlc3VsdCwgUG9pbnQgKnB0MSwgUG9pbnQgKnB0Mik7Ci1zdGF0aWMg dm9pZCBib3hfY24oUG9pbnQgKmNlbnRlciwgQk9YICpib3gpOworc3RhdGljIHZvaWQgYm94X2Nu KFBvaW50ICpjZW50ZXIsIEJPWCAqYm94LCBOb2RlKiBlc2NvbnRleHQpOwogc3RhdGljIGJvb2wg Ym94X292KEJPWCAqYm94MSwgQk9YICpib3gyKTsKIHN0YXRpYyBmbG9hdDggYm94X2FyKEJPWCAq Ym94KTsKIHN0YXRpYyBmbG9hdDggYm94X2h0KEJPWCAqYm94KTsKQEAgLTEyNSw3ICsxMjYsNyBA QCBzdGF0aWMgZmxvYXQ4IGNpcmNsZV9hcihDSVJDTEUgKmNpcmNsZSk7CiAKIC8qIFJvdXRpbmVz IGZvciBwb2x5Z29ucyAqLwogc3RhdGljIHZvaWQgbWFrZV9ib3VuZF9ib3goUE9MWUdPTiAqcG9s eSk7Ci1zdGF0aWMgdm9pZCBwb2x5X3RvX2NpcmNsZShDSVJDTEUgKnJlc3VsdCwgUE9MWUdPTiAq cG9seSk7CitzdGF0aWMgYm9vbCBwb2x5X3RvX2NpcmNsZShDSVJDTEUgKnJlc3VsdCwgUE9MWUdP TiAqcG9seSwgTm9kZSAqZXNjb250ZXh0KTsKIHN0YXRpYyBib29sIGxzZWdfaW5zaWRlX3BvbHko UG9pbnQgKmEsIFBvaW50ICpiLCBQT0xZR09OICpwb2x5LCBpbnQgc3RhcnQpOwogc3RhdGljIGJv b2wgcG9seV9jb250YWluX3BvbHkoUE9MWUdPTiAqY29udGFpbnNfcG9seSwgUE9MWUdPTiAqY29u dGFpbmVkX3BvbHkpOwogc3RhdGljIGJvb2wgcGxpc3Rfc2FtZShpbnQgbnB0cywgUG9pbnQgKnAx LCBQb2ludCAqcDIpOwpAQCAtODM2LDEwICs4MzcsMTAgQEAgYm94X2Rpc3RhbmNlKFBHX0ZVTkNU SU9OX0FSR1MpCiAJUG9pbnQJCWEsCiAJCQkJYjsKIAotCWJveF9jbigmYSwgYm94MSk7Ci0JYm94 X2NuKCZiLCBib3gyKTsKKwlib3hfY24oJmEsIGJveDEsIE5VTEwpOworCWJveF9jbigmYiwgYm94 MiwgTlVMTCk7CiAKLQlQR19SRVRVUk5fRkxPQVQ4KHBvaW50X2R0KCZhLCAmYikpOworCVBHX1JF VFVSTl9GTE9BVDgocG9pbnRfZHQoJmEsICZiLCBOVUxMKSk7CiB9CiAKIApAQCAtODUxLDcgKzg1 Miw5IEBAIGJveF9jZW50ZXIoUEdfRlVOQ1RJT05fQVJHUykKIAlCT1gJCSAgICpib3ggPSBQR19H RVRBUkdfQk9YX1AoMCk7CiAJUG9pbnQJICAgKnJlc3VsdCA9IChQb2ludCAqKSBwYWxsb2Moc2l6 ZW9mKFBvaW50KSk7CiAKLQlib3hfY24ocmVzdWx0LCBib3gpOworCWJveF9jbihyZXN1bHQsIGJv eCwgZmNpbmZvLT5jb250ZXh0KTsKKwlpZiAoKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvLT5j b250ZXh0KSkpCisJCVBHX1JFVFVSTl9OVUxMKCk7CiAKIAlQR19SRVRVUk5fUE9JTlRfUChyZXN1 bHQpOwogfQpAQCAtODY5LDEzICs4NzIsMjYgQEAgYm94X2FyKEJPWCAqYm94KQogLyoJCWJveF9j bgktCQlzdG9yZXMgdGhlIGNlbnRlcnBvaW50IG9mIHRoZSBib3ggaW50byAqY2VudGVyLgogICov CiBzdGF0aWMgdm9pZAotYm94X2NuKFBvaW50ICpjZW50ZXIsIEJPWCAqYm94KQorYm94X2NuKFBv aW50ICpjZW50ZXIsIEJPWCAqYm94LCBOb2RlICplc2NvbnRleHQpCiB7Ci0JY2VudGVyLT54ID0g ZmxvYXQ4X2RpdihmbG9hdDhfcGwoYm94LT5oaWdoLngsIGJveC0+bG93LngpLCAyLjApOwotCWNl bnRlci0+eSA9IGZsb2F0OF9kaXYoZmxvYXQ4X3BsKGJveC0+aGlnaC55LCBib3gtPmxvdy55KSwg Mi4wKTsKKwlmbG9hdDgJCXg7CisJZmxvYXQ4CQl5OworCisJeCA9IGZsb2F0OF9wbF9zYWZlKGJv eC0+aGlnaC54LCBib3gtPmxvdy54LCBlc2NvbnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09DQ1VS UkVEKGVzY29udGV4dCkpCisJCXJldHVybjsKKworCWNlbnRlci0+eCA9IGZsb2F0OF9kaXZfc2Fm ZSh4LCAyLjAsIGVzY29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZXNjb250ZXh0 KSkKKwkJcmV0dXJuOworCisJeSA9IGZsb2F0OF9wbF9zYWZlKGJveC0+aGlnaC55LCBib3gtPmxv dy55LCBlc2NvbnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGVzY29udGV4dCkpCisJ CXJldHVybjsKKworCWNlbnRlci0+eSA9IGZsb2F0OF9kaXZfc2FmZSh5LCAyLjAsIGVzY29udGV4 dCk7CiB9CiAKLQogLyoJCWJveF93ZAktCQlyZXR1cm5zIHRoZSB3aWR0aCAobGVuZ3RoKSBvZiB0 aGUgYm94CiAgKgkJCQkJCQkJICAoaG9yaXpvbnRhbCBtYWduaXR1ZGUpLgogICovCkBAIC0xODA4 LDcgKzE4MjQsNyBAQCBwYXRoX2xlbmd0aChQR19GVU5DVElPTl9BUkdTKQogCQkJaXByZXYgPSBw YXRoLT5ucHRzIC0gMTsgLyogaW5jbHVkZSB0aGUgY2xvc3VyZSBzZWdtZW50ICovCiAJCX0KIAot CQlyZXN1bHQgPSBmbG9hdDhfcGwocmVzdWx0LCBwb2ludF9kdCgmcGF0aC0+cFtpcHJldl0sICZw YXRoLT5wW2ldKSk7CisJCXJlc3VsdCA9IGZsb2F0OF9wbChyZXN1bHQsIHBvaW50X2R0KCZwYXRo LT5wW2lwcmV2XSwgJnBhdGgtPnBbaV0sIE5VTEwpKTsKIAl9CiAKIAlQR19SRVRVUk5fRkxPQVQ4 KHJlc3VsdCk7CkBAIC0xOTk1LDEzICsyMDExLDI0IEBAIHBvaW50X2Rpc3RhbmNlKFBHX0ZVTkNU SU9OX0FSR1MpCiAJUG9pbnQJICAgKnB0MSA9IFBHX0dFVEFSR19QT0lOVF9QKDApOwogCVBvaW50 CSAgICpwdDIgPSBQR19HRVRBUkdfUE9JTlRfUCgxKTsKIAotCVBHX1JFVFVSTl9GTE9BVDgocG9p bnRfZHQocHQxLCBwdDIpKTsKKwlQR19SRVRVUk5fRkxPQVQ4KHBvaW50X2R0KHB0MSwgcHQyLCBO VUxMKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZmxvYXQ4Ci1wb2ludF9kdChQb2ludCAqcHQxLCBQ b2ludCAqcHQyKQorcG9pbnRfZHQoUG9pbnQgKnB0MSwgUG9pbnQgKnB0MiwgTm9kZSAqZXNjb250 ZXh0KQogewotCXJldHVybiBoeXBvdChmbG9hdDhfbWkocHQxLT54LCBwdDItPngpLCBmbG9hdDhf bWkocHQxLT55LCBwdDItPnkpKTsKKwlmbG9hdDgJCXg7CisJZmxvYXQ4CQl5OworCisJeCA9IGZs b2F0OF9taV9zYWZlKHB0MS0+eCwgcHQyLT54LCBlc2NvbnRleHQpOworCWlmICh1bmxpa2VseShT T0ZUX0VSUk9SX09DQ1VSUkVEKGVzY29udGV4dCkpKQorCQlyZXR1cm4gMC4wOworCisJeSAgPSBm bG9hdDhfbWlfc2FmZShwdDEtPnksIHB0Mi0+eSwgZXNjb250ZXh0KTsKKwlpZiAodW5saWtlbHko U09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRleHQpKSkKKwkJcmV0dXJuIDAuMDsKKworCXJldHVy biBoeXBvdCh4LCB5KTsKIH0KIAogRGF0dW0KQEAgLTIxNzMsNyArMjIwMCw3IEBAIGxzZWdfbGVu Z3RoKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJTFNFRwkgICAqbHNlZyA9IFBHX0dFVEFSR19MU0VH X1AoMCk7CiAKLQlQR19SRVRVUk5fRkxPQVQ4KHBvaW50X2R0KCZsc2VnLT5wWzBdLCAmbHNlZy0+ cFsxXSkpOworCVBHX1JFVFVSTl9GTE9BVDgocG9pbnRfZHQoJmxzZWctPnBbMF0sICZsc2VnLT5w WzFdLCBOVUxMKSk7CiB9CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjI1OCw4ICsyMjg1LDggQEAgbHNlZ19sdChQR19G VU5DVElPTl9BUkdTKQogCUxTRUcJICAgKmwxID0gUEdfR0VUQVJHX0xTRUdfUCgwKTsKIAlMU0VH CSAgICpsMiA9IFBHX0dFVEFSR19MU0VHX1AoMSk7CiAKLQlQR19SRVRVUk5fQk9PTChGUGx0KHBv aW50X2R0KCZsMS0+cFswXSwgJmwxLT5wWzFdKSwKLQkJCQkJCXBvaW50X2R0KCZsMi0+cFswXSwg JmwyLT5wWzFdKSkpOworCVBHX1JFVFVSTl9CT09MKEZQbHQocG9pbnRfZHQoJmwxLT5wWzBdLCAm bDEtPnBbMV0sIE5VTEwpLAorCQkJCQkJcG9pbnRfZHQoJmwyLT5wWzBdLCAmbDItPnBbMV0sIE5V TEwpKSk7CiB9CiAKIERhdHVtCkBAIC0yMjY4LDggKzIyOTUsOCBAQCBsc2VnX2xlKFBHX0ZVTkNU SU9OX0FSR1MpCiAJTFNFRwkgICAqbDEgPSBQR19HRVRBUkdfTFNFR19QKDApOwogCUxTRUcJICAg KmwyID0gUEdfR0VUQVJHX0xTRUdfUCgxKTsKIAotCVBHX1JFVFVSTl9CT09MKEZQbGUocG9pbnRf ZHQoJmwxLT5wWzBdLCAmbDEtPnBbMV0pLAotCQkJCQkJcG9pbnRfZHQoJmwyLT5wWzBdLCAmbDIt PnBbMV0pKSk7CisJUEdfUkVUVVJOX0JPT0woRlBsZShwb2ludF9kdCgmbDEtPnBbMF0sICZsMS0+ cFsxXSwgTlVMTCksCisJCQkJCQlwb2ludF9kdCgmbDItPnBbMF0sICZsMi0+cFsxXSwgTlVMTCkp KTsKIH0KIAogRGF0dW0KQEAgLTIyNzgsOCArMjMwNSw4IEBAIGxzZWdfZ3QoUEdfRlVOQ1RJT05f QVJHUykKIAlMU0VHCSAgICpsMSA9IFBHX0dFVEFSR19MU0VHX1AoMCk7CiAJTFNFRwkgICAqbDIg PSBQR19HRVRBUkdfTFNFR19QKDEpOwogCi0JUEdfUkVUVVJOX0JPT0woRlBndChwb2ludF9kdCgm bDEtPnBbMF0sICZsMS0+cFsxXSksCi0JCQkJCQlwb2ludF9kdCgmbDItPnBbMF0sICZsMi0+cFsx XSkpKTsKKwlQR19SRVRVUk5fQk9PTChGUGd0KHBvaW50X2R0KCZsMS0+cFswXSwgJmwxLT5wWzFd LCBOVUxMKSwKKwkJCQkJCXBvaW50X2R0KCZsMi0+cFswXSwgJmwyLT5wWzFdLCBOVUxMKSkpOwog fQogCiBEYXR1bQpAQCAtMjI4OCw4ICsyMzE1LDggQEAgbHNlZ19nZShQR19GVU5DVElPTl9BUkdT KQogCUxTRUcJICAgKmwxID0gUEdfR0VUQVJHX0xTRUdfUCgwKTsKIAlMU0VHCSAgICpsMiA9IFBH X0dFVEFSR19MU0VHX1AoMSk7CiAKLQlQR19SRVRVUk5fQk9PTChGUGdlKHBvaW50X2R0KCZsMS0+ cFswXSwgJmwxLT5wWzFdKSwKLQkJCQkJCXBvaW50X2R0KCZsMi0+cFswXSwgJmwyLT5wWzFdKSkp OworCVBHX1JFVFVSTl9CT09MKEZQZ2UocG9pbnRfZHQoJmwxLT5wWzBdLCAmbDEtPnBbMV0sIE5V TEwpLAorCQkJCQkJcG9pbnRfZHQoJmwyLT5wWzBdLCAmbDItPnBbMV0sIE5VTEwpKSk7CiB9CiAK IApAQCAtMjMxNywxMyArMjM0NCwzMSBAQCBsc2VnX2NlbnRlcihQR19GVU5DVElPTl9BUkdTKQog ewogCUxTRUcJICAgKmxzZWcgPSBQR19HRVRBUkdfTFNFR19QKDApOwogCVBvaW50CSAgICpyZXN1 bHQ7CisJZmxvYXQ4CQl4OworCWZsb2F0OAkJeTsKIAogCXJlc3VsdCA9IChQb2ludCAqKSBwYWxs b2Moc2l6ZW9mKFBvaW50KSk7CiAKLQlyZXN1bHQtPnggPSBmbG9hdDhfZGl2KGZsb2F0OF9wbChs c2VnLT5wWzBdLngsIGxzZWctPnBbMV0ueCksIDIuMCk7Ci0JcmVzdWx0LT55ID0gZmxvYXQ4X2Rp dihmbG9hdDhfcGwobHNlZy0+cFswXS55LCBsc2VnLT5wWzFdLnkpLCAyLjApOworCXggPSBmbG9h dDhfcGxfc2FmZShsc2VnLT5wWzBdLngsIGxzZWctPnBbMV0ueCwgZmNpbmZvLT5jb250ZXh0KTsK KwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm8tPmNvbnRleHQpKQorCQlnb3RvIGZhaWw7 CisKKwlyZXN1bHQtPnggPSBmbG9hdDhfZGl2X3NhZmUoeCwgMi4wLCBmY2luZm8tPmNvbnRleHQp OworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJCWdvdG8gZmFp bDsKKworCXkgPSBmbG9hdDhfcGxfc2FmZShsc2VnLT5wWzBdLnksIGxzZWctPnBbMV0ueSwgZmNp bmZvLT5jb250ZXh0KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm8tPmNvbnRleHQp KQorCQlnb3RvIGZhaWw7CisKKwlyZXN1bHQtPnkgPSBmbG9hdDhfZGl2X3NhZmUoeSwgMi4wLCBm Y2luZm8tPmNvbnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4 dCkpCisJCWdvdG8gZmFpbDsKIAogCVBHX1JFVFVSTl9QT0lOVF9QKHJlc3VsdCk7CisKK2ZhaWw6 CisJUEdfUkVUVVJOX05VTEwoKTsKIH0KIAogCkBAIC0yNzQzLDcgKzI3ODgsNyBAQCBsaW5lX2Ns b3NlcHRfcG9pbnQoUG9pbnQgKnJlc3VsdCwgTElORSAqbGluZSwgUG9pbnQgKnBvaW50KQogCWlm IChyZXN1bHQgIT0gTlVMTCkKIAkJKnJlc3VsdCA9IGNsb3NlcHQ7CiAKLQlyZXR1cm4gcG9pbnRf ZHQoJmNsb3NlcHQsIHBvaW50KTsKKwlyZXR1cm4gcG9pbnRfZHQoJmNsb3NlcHQsIHBvaW50LCBO VUxMKTsKIH0KIAogRGF0dW0KQEAgLTI3ODQsNyArMjgyOSw3IEBAIGxzZWdfY2xvc2VwdF9wb2lu dChQb2ludCAqcmVzdWx0LCBMU0VHICpsc2VnLCBQb2ludCAqcHQpCiAJaWYgKHJlc3VsdCAhPSBO VUxMKQogCQkqcmVzdWx0ID0gY2xvc2VwdDsKIAotCXJldHVybiBwb2ludF9kdCgmY2xvc2VwdCwg cHQpOworCXJldHVybiBwb2ludF9kdCgmY2xvc2VwdCwgcHQsIE5VTEwpOwogfQogCiBEYXR1bQpA QCAtMzEwOCw5ICszMTUzLDkgQEAgb25fcGwoUEdfRlVOQ1RJT05fQVJHUykKIHN0YXRpYyBib29s CiBsc2VnX2NvbnRhaW5fcG9pbnQoTFNFRyAqbHNlZywgUG9pbnQgKnB0KQogewotCXJldHVybiBG UGVxKHBvaW50X2R0KHB0LCAmbHNlZy0+cFswXSkgKwotCQkJCXBvaW50X2R0KHB0LCAmbHNlZy0+ cFsxXSksCi0JCQkJcG9pbnRfZHQoJmxzZWctPnBbMF0sICZsc2VnLT5wWzFdKSk7CisJcmV0dXJu IEZQZXEocG9pbnRfZHQocHQsICZsc2VnLT5wWzBdLCBOVUxMKSArCisJCQkJcG9pbnRfZHQocHQs ICZsc2VnLT5wWzFdLCBOVUxMKSwKKwkJCQlwb2ludF9kdCgmbHNlZy0+cFswXSwgJmxzZWctPnBb MV0sIE5VTEwpKTsKIH0KIAogRGF0dW0KQEAgLTMxNzYsMTEgKzMyMjEsMTEgQEAgb25fcHBhdGgo UEdfRlVOQ1RJT05fQVJHUykKIAlpZiAoIXBhdGgtPmNsb3NlZCkKIAl7CiAJCW4gPSBwYXRoLT5u cHRzIC0gMTsKLQkJYSA9IHBvaW50X2R0KHB0LCAmcGF0aC0+cFswXSk7CisJCWEgPSBwb2ludF9k dChwdCwgJnBhdGgtPnBbMF0sIE5VTEwpOwogCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogCQl7 Ci0JCQliID0gcG9pbnRfZHQocHQsICZwYXRoLT5wW2kgKyAxXSk7Ci0JCQlpZiAoRlBlcShmbG9h dDhfcGwoYSwgYiksIHBvaW50X2R0KCZwYXRoLT5wW2ldLCAmcGF0aC0+cFtpICsgMV0pKSkKKwkJ CWIgPSBwb2ludF9kdChwdCwgJnBhdGgtPnBbaSArIDFdLCBOVUxMKTsKKwkJCWlmIChGUGVxKGZs b2F0OF9wbChhLCBiKSwgcG9pbnRfZHQoJnBhdGgtPnBbaV0sICZwYXRoLT5wW2kgKyAxXSwgTlVM TCkpKQogCQkJCVBHX1JFVFVSTl9CT09MKHRydWUpOwogCQkJYSA9IGI7CiAJCX0KQEAgLTMyNzcs NyArMzMyMiw3IEBAIGJveF9pbnRlcnB0X2xzZWcoUG9pbnQgKnJlc3VsdCwgQk9YICpib3gsIExT RUcgKmxzZWcpCiAKIAlpZiAocmVzdWx0ICE9IE5VTEwpCiAJewotCQlib3hfY24oJnBvaW50LCBi b3gpOworCQlib3hfY24oJnBvaW50LCBib3gsIE5VTEwpOwogCQlsc2VnX2Nsb3NlcHRfcG9pbnQo cmVzdWx0LCBsc2VnLCAmcG9pbnQpOwogCX0KIApAQCAtNDEwOCwxMSArNDE1MywyMCBAQCBjb25z dHJ1Y3RfcG9pbnQoUEdfRlVOQ1RJT05fQVJHUykKIAogCiBzdGF0aWMgaW5saW5lIHZvaWQKLXBv aW50X2FkZF9wb2ludChQb2ludCAqcmVzdWx0LCBQb2ludCAqcHQxLCBQb2ludCAqcHQyKQorcG9p bnRfYWRkX3BvaW50KFBvaW50ICpyZXN1bHQsIFBvaW50ICpwdDEsIFBvaW50ICpwdDIsIE5vZGUg KmVzY29udGV4dCkKIHsKLQlwb2ludF9jb25zdHJ1Y3QocmVzdWx0LAotCQkJCQlmbG9hdDhfcGwo cHQxLT54LCBwdDItPngpLAotCQkJCQlmbG9hdDhfcGwocHQxLT55LCBwdDItPnkpKTsKKwlmbG9h dDgJCXg7CisJZmxvYXQ4CQl5OworCisJeCA9IGZsb2F0OF9wbF9zYWZlKHB0MS0+eCwgcHQyLT54 LCBlc2NvbnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGVzY29udGV4dCkpCisJCXJl dHVybjsKKworCXkgPSBmbG9hdDhfcGxfc2FmZShwdDEtPnksIHB0Mi0+eSwgZXNjb250ZXh0KTsK KwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRleHQpKQorCQlyZXR1cm47CisKKwlwb2lu dF9jb25zdHJ1Y3QocmVzdWx0LCB4LCB5KTsKIH0KIAogRGF0dW0KQEAgLTQxMjQsNyArNDE3OCw3 IEBAIHBvaW50X2FkZChQR19GVU5DVElPTl9BUkdTKQogCiAJcmVzdWx0ID0gKFBvaW50ICopIHBh bGxvYyhzaXplb2YoUG9pbnQpKTsKIAotCXBvaW50X2FkZF9wb2ludChyZXN1bHQsIHAxLCBwMik7 CisJcG9pbnRfYWRkX3BvaW50KHJlc3VsdCwgcDEsIHAyLCBOVUxMKTsKIAogCVBHX1JFVFVSTl9Q T0lOVF9QKHJlc3VsdCk7CiB9CkBAIC00MjM2LDggKzQyOTAsOCBAQCBib3hfYWRkKFBHX0ZVTkNU SU9OX0FSR1MpCiAKIAlyZXN1bHQgPSAoQk9YICopIHBhbGxvYyhzaXplb2YoQk9YKSk7CiAKLQlw b2ludF9hZGRfcG9pbnQoJnJlc3VsdC0+aGlnaCwgJmJveC0+aGlnaCwgcCk7Ci0JcG9pbnRfYWRk X3BvaW50KCZyZXN1bHQtPmxvdywgJmJveC0+bG93LCBwKTsKKwlwb2ludF9hZGRfcG9pbnQoJnJl c3VsdC0+aGlnaCwgJmJveC0+aGlnaCwgcCwgTlVMTCk7CisJcG9pbnRfYWRkX3BvaW50KCZyZXN1 bHQtPmxvdywgJmJveC0+bG93LCBwLCBOVUxMKTsKIAogCVBHX1JFVFVSTl9CT1hfUChyZXN1bHQp OwogfQpAQCAtNDQwMCw3ICs0NDU0LDcgQEAgcGF0aF9hZGRfcHQoUEdfRlVOQ1RJT05fQVJHUykK IAlpbnQJCQlpOwogCiAJZm9yIChpID0gMDsgaSA8IHBhdGgtPm5wdHM7IGkrKykKLQkJcG9pbnRf YWRkX3BvaW50KCZwYXRoLT5wW2ldLCAmcGF0aC0+cFtpXSwgcG9pbnQpOworCQlwb2ludF9hZGRf cG9pbnQoJnBhdGgtPnBbaV0sICZwYXRoLT5wW2ldLCBwb2ludCwgTlVMTCk7CiAKIAlQR19SRVRV Uk5fUEFUSF9QKHBhdGgpOwogfQpAQCAtNDQ1OCw3ICs0NTEyLDcgQEAgcGF0aF9wb2x5KFBHX0ZV TkNUSU9OX0FSR1MpCiAKIAkvKiBUaGlzIGlzIG5vdCB2ZXJ5IGNvbnNpc3RlbnQgLS0tIG90aGVy IHNpbWlsYXIgY2FzZXMgcmV0dXJuIE5VTEwgLi4uICovCiAJaWYgKCFwYXRoLT5jbG9zZWQpCi0J CWVyZXBvcnQoRVJST1IsCisJCWVyZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJIGVycm1z Zygib3BlbiBwYXRoIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gcG9seWdvbiIpKSk7CiAKQEAgLTQ1 MDgsNyArNDU2Miw5IEBAIHBvbHlfY2VudGVyKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlyZXN1bHQg PSAoUG9pbnQgKikgcGFsbG9jKHNpemVvZihQb2ludCkpOwogCi0JcG9seV90b19jaXJjbGUoJmNp cmNsZSwgcG9seSk7CisJaWYgKCFwb2x5X3RvX2NpcmNsZSgmY2lyY2xlLCBwb2x5LCBmY2luZm8t PmNvbnRleHQpKQorCQlQR19SRVRVUk5fTlVMTCgpOworCiAJKnJlc3VsdCA9IGNpcmNsZS5jZW50 ZXI7CiAKIAlQR19SRVRVUk5fUE9JTlRfUChyZXN1bHQpOwpAQCAtNDc2Niw3ICs0ODIyLDcgQEAg Y2lyY2xlX292ZXJsYXAoUEdfRlVOQ1RJT05fQVJHUykKIAlDSVJDTEUJICAgKmNpcmNsZTEgPSBQ R19HRVRBUkdfQ0lSQ0xFX1AoMCk7CiAJQ0lSQ0xFCSAgICpjaXJjbGUyID0gUEdfR0VUQVJHX0NJ UkNMRV9QKDEpOwogCi0JUEdfUkVUVVJOX0JPT0woRlBsZShwb2ludF9kdCgmY2lyY2xlMS0+Y2Vu dGVyLCAmY2lyY2xlMi0+Y2VudGVyKSwKKwlQR19SRVRVUk5fQk9PTChGUGxlKHBvaW50X2R0KCZj aXJjbGUxLT5jZW50ZXIsICZjaXJjbGUyLT5jZW50ZXIsIE5VTEwpLAogCQkJCQkJZmxvYXQ4X3Bs KGNpcmNsZTEtPnJhZGl1cywgY2lyY2xlMi0+cmFkaXVzKSkpOwogfQogCkBAIC00ODI4LDcgKzQ4 ODQsNyBAQCBjaXJjbGVfY29udGFpbmVkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJQ0lSQ0xFCSAgICpj aXJjbGUxID0gUEdfR0VUQVJHX0NJUkNMRV9QKDApOwogCUNJUkNMRQkgICAqY2lyY2xlMiA9IFBH X0dFVEFSR19DSVJDTEVfUCgxKTsKIAotCVBHX1JFVFVSTl9CT09MKEZQbGUocG9pbnRfZHQoJmNp cmNsZTEtPmNlbnRlciwgJmNpcmNsZTItPmNlbnRlciksCisJUEdfUkVUVVJOX0JPT0woRlBsZShw b2ludF9kdCgmY2lyY2xlMS0+Y2VudGVyLCAmY2lyY2xlMi0+Y2VudGVyLCBOVUxMKSwKIAkJCQkJ CWZsb2F0OF9taShjaXJjbGUyLT5yYWRpdXMsIGNpcmNsZTEtPnJhZGl1cykpKTsKIH0KIApAQCAt NDg0MCw3ICs0ODk2LDcgQEAgY2lyY2xlX2NvbnRhaW4oUEdfRlVOQ1RJT05fQVJHUykKIAlDSVJD TEUJICAgKmNpcmNsZTEgPSBQR19HRVRBUkdfQ0lSQ0xFX1AoMCk7CiAJQ0lSQ0xFCSAgICpjaXJj bGUyID0gUEdfR0VUQVJHX0NJUkNMRV9QKDEpOwogCi0JUEdfUkVUVVJOX0JPT0woRlBsZShwb2lu dF9kdCgmY2lyY2xlMS0+Y2VudGVyLCAmY2lyY2xlMi0+Y2VudGVyKSwKKwlQR19SRVRVUk5fQk9P TChGUGxlKHBvaW50X2R0KCZjaXJjbGUxLT5jZW50ZXIsICZjaXJjbGUyLT5jZW50ZXIsIE5VTEwp LAogCQkJCQkJZmxvYXQ4X21pKGNpcmNsZTEtPnJhZGl1cywgY2lyY2xlMi0+cmFkaXVzKSkpOwog fQogCkBAIC00OTcwLDcgKzUwMjYsNyBAQCBjaXJjbGVfYWRkX3B0KFBHX0ZVTkNUSU9OX0FSR1Mp CiAKIAlyZXN1bHQgPSAoQ0lSQ0xFICopIHBhbGxvYyhzaXplb2YoQ0lSQ0xFKSk7CiAKLQlwb2lu dF9hZGRfcG9pbnQoJnJlc3VsdC0+Y2VudGVyLCAmY2lyY2xlLT5jZW50ZXIsIHBvaW50KTsKKwlw b2ludF9hZGRfcG9pbnQoJnJlc3VsdC0+Y2VudGVyLCAmY2lyY2xlLT5jZW50ZXIsIHBvaW50LCBO VUxMKTsKIAlyZXN1bHQtPnJhZGl1cyA9IGNpcmNsZS0+cmFkaXVzOwogCiAJUEdfUkVUVVJOX0NJ UkNMRV9QKHJlc3VsdCk7CkBAIC01MDY5LDcgKzUxMjUsNyBAQCBjaXJjbGVfZGlzdGFuY2UoUEdf RlVOQ1RJT05fQVJHUykKIAlDSVJDTEUJICAgKmNpcmNsZTIgPSBQR19HRVRBUkdfQ0lSQ0xFX1Ao MSk7CiAJZmxvYXQ4CQlyZXN1bHQ7CiAKLQlyZXN1bHQgPSBmbG9hdDhfbWkocG9pbnRfZHQoJmNp cmNsZTEtPmNlbnRlciwgJmNpcmNsZTItPmNlbnRlciksCisJcmVzdWx0ID0gZmxvYXQ4X21pKHBv aW50X2R0KCZjaXJjbGUxLT5jZW50ZXIsICZjaXJjbGUyLT5jZW50ZXIsIE5VTEwpLAogCQkJCQkg ICBmbG9hdDhfcGwoY2lyY2xlMS0+cmFkaXVzLCBjaXJjbGUyLT5yYWRpdXMpKTsKIAlpZiAocmVz dWx0IDwgMC4wKQogCQlyZXN1bHQgPSAwLjA7CkBAIC01MDg1LDcgKzUxNDEsNyBAQCBjaXJjbGVf Y29udGFpbl9wdChQR19GVU5DVElPTl9BUkdTKQogCVBvaW50CSAgICpwb2ludCA9IFBHX0dFVEFS R19QT0lOVF9QKDEpOwogCWZsb2F0OAkJZDsKIAotCWQgPSBwb2ludF9kdCgmY2lyY2xlLT5jZW50 ZXIsIHBvaW50KTsKKwlkID0gcG9pbnRfZHQoJmNpcmNsZS0+Y2VudGVyLCBwb2ludCwgTlVMTCk7 CiAJUEdfUkVUVVJOX0JPT0woZCA8PSBjaXJjbGUtPnJhZGl1cyk7CiB9CiAKQEAgLTUwOTcsNyAr NTE1Myw3IEBAIHB0X2NvbnRhaW5lZF9jaXJjbGUoUEdfRlVOQ1RJT05fQVJHUykKIAlDSVJDTEUJ ICAgKmNpcmNsZSA9IFBHX0dFVEFSR19DSVJDTEVfUCgxKTsKIAlmbG9hdDgJCWQ7CiAKLQlkID0g cG9pbnRfZHQoJmNpcmNsZS0+Y2VudGVyLCBwb2ludCk7CisJZCA9IHBvaW50X2R0KCZjaXJjbGUt PmNlbnRlciwgcG9pbnQsIE5VTEwpOwogCVBHX1JFVFVSTl9CT09MKGQgPD0gY2lyY2xlLT5yYWRp dXMpOwogfQogCkBAIC01MTEyLDcgKzUxNjgsNyBAQCBkaXN0X3BjKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJQ0lSQ0xFCSAgICpjaXJjbGUgPSBQR19HRVRBUkdfQ0lSQ0xFX1AoMSk7CiAJZmxvYXQ4CQly ZXN1bHQ7CiAKLQlyZXN1bHQgPSBmbG9hdDhfbWkocG9pbnRfZHQocG9pbnQsICZjaXJjbGUtPmNl bnRlciksCisJcmVzdWx0ID0gZmxvYXQ4X21pKHBvaW50X2R0KHBvaW50LCAmY2lyY2xlLT5jZW50 ZXIsIE5VTEwpLAogCQkJCQkgICBjaXJjbGUtPnJhZGl1cyk7CiAJaWYgKHJlc3VsdCA8IDAuMCkK IAkJcmVzdWx0ID0gMC4wOwpAQCAtNTEzMCw3ICs1MTg2LDcgQEAgZGlzdF9jcG9pbnQoUEdfRlVO Q1RJT05fQVJHUykKIAlQb2ludAkgICAqcG9pbnQgPSBQR19HRVRBUkdfUE9JTlRfUCgxKTsKIAlm bG9hdDgJCXJlc3VsdDsKIAotCXJlc3VsdCA9IGZsb2F0OF9taShwb2ludF9kdChwb2ludCwgJmNp cmNsZS0+Y2VudGVyKSwgY2lyY2xlLT5yYWRpdXMpOworCXJlc3VsdCA9IGZsb2F0OF9taShwb2lu dF9kdChwb2ludCwgJmNpcmNsZS0+Y2VudGVyLCBOVUxMKSwgY2lyY2xlLT5yYWRpdXMpOwogCWlm IChyZXN1bHQgPCAwLjApCiAJCXJlc3VsdCA9IDAuMDsKIApAQCAtNTE5MSwxNCArNTI0NywzMCBA QCBjaXJjbGVfYm94KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlib3ggPSAoQk9YICopIHBhbGxvYyhz aXplb2YoQk9YKSk7CiAKLQlkZWx0YSA9IGZsb2F0OF9kaXYoY2lyY2xlLT5yYWRpdXMsIHNxcnQo Mi4wKSk7CisJZGVsdGEgPSBmbG9hdDhfZGl2X3NhZmUoY2lyY2xlLT5yYWRpdXMsIHNxcnQoMi4w KSwgZmNpbmZvLT5jb250ZXh0KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm8tPmNv bnRleHQpKQorCQlnb3RvIGZhaWw7CiAKLQlib3gtPmhpZ2gueCA9IGZsb2F0OF9wbChjaXJjbGUt PmNlbnRlci54LCBkZWx0YSk7Ci0JYm94LT5sb3cueCA9IGZsb2F0OF9taShjaXJjbGUtPmNlbnRl ci54LCBkZWx0YSk7Ci0JYm94LT5oaWdoLnkgPSBmbG9hdDhfcGwoY2lyY2xlLT5jZW50ZXIueSwg ZGVsdGEpOwotCWJveC0+bG93LnkgPSBmbG9hdDhfbWkoY2lyY2xlLT5jZW50ZXIueSwgZGVsdGEp OworCWJveC0+aGlnaC54ID0gZmxvYXQ4X3BsX3NhZmUoY2lyY2xlLT5jZW50ZXIueCwgZGVsdGEs IGZjaW5mby0+Y29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvLT5jb250 ZXh0KSkKKwkJZ290byBmYWlsOworCisJYm94LT5sb3cueCA9IGZsb2F0OF9taV9zYWZlKGNpcmNs ZS0+Y2VudGVyLngsIGRlbHRhLCBmY2luZm8tPmNvbnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09D Q1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJCWdvdG8gZmFpbDsKKworCWJveC0+aGlnaC55ID0g ZmxvYXQ4X3BsX3NhZmUoY2lyY2xlLT5jZW50ZXIueSwgZGVsdGEsIGZjaW5mby0+Y29udGV4dCk7 CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvLT5jb250ZXh0KSkKKwkJZ290byBmYWls OworCisJYm94LT5sb3cueSA9IGZsb2F0OF9taV9zYWZlKGNpcmNsZS0+Y2VudGVyLnksIGRlbHRh LCBmY2luZm8tPmNvbnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+Y29u dGV4dCkpCisJCWdvdG8gZmFpbDsKIAogCVBHX1JFVFVSTl9CT1hfUChib3gpOworCitmYWlsOgor CVBHX1JFVFVSTl9OVUxMKCk7CiB9CiAKIC8qIGJveF9jaXJjbGUoKQpAQCAtNTIwOSwxNSArNTI4 MSwzNSBAQCBib3hfY2lyY2xlKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJQk9YCQkgICAqYm94ID0g UEdfR0VUQVJHX0JPWF9QKDApOwogCUNJUkNMRQkgICAqY2lyY2xlOworCWZsb2F0OAkJeDsKKwlm bG9hdDgJCXk7CiAKIAljaXJjbGUgPSAoQ0lSQ0xFICopIHBhbGxvYyhzaXplb2YoQ0lSQ0xFKSk7 CiAKLQljaXJjbGUtPmNlbnRlci54ID0gZmxvYXQ4X2RpdihmbG9hdDhfcGwoYm94LT5oaWdoLngs IGJveC0+bG93LngpLCAyLjApOwotCWNpcmNsZS0+Y2VudGVyLnkgPSBmbG9hdDhfZGl2KGZsb2F0 OF9wbChib3gtPmhpZ2gueSwgYm94LT5sb3cueSksIDIuMCk7CisJeCA9IGZsb2F0OF9wbF9zYWZl KGJveC0+aGlnaC54LCBib3gtPmxvdy54LCBmY2luZm8tPmNvbnRleHQpOworCWlmIChTT0ZUX0VS Uk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJCWdvdG8gZmFpbDsKIAotCWNpcmNsZS0+ cmFkaXVzID0gcG9pbnRfZHQoJmNpcmNsZS0+Y2VudGVyLCAmYm94LT5oaWdoKTsKKwljaXJjbGUt PmNlbnRlci54ID0gZmxvYXQ4X2Rpdl9zYWZlKHgsIDIuMCwgZmNpbmZvLT5jb250ZXh0KTsKKwlp ZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm8tPmNvbnRleHQpKQorCQlnb3RvIGZhaWw7CisK Kwl5ID0gZmxvYXQ4X3BsX3NhZmUoYm94LT5oaWdoLnksIGJveC0+bG93LnksIGZjaW5mby0+Y29u dGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvLT5jb250ZXh0KSkKKwkJZ290 byBmYWlsOworCisJY2lyY2xlLT5jZW50ZXIueSA9IGZsb2F0OF9kaXZfc2FmZSh5LCAyLjAsIGZj aW5mby0+Y29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZvLT5jb250ZXh0 KSkKKwkJZ290byBmYWlsOworCisJY2lyY2xlLT5yYWRpdXMgPSBwb2ludF9kdCgmY2lyY2xlLT5j ZW50ZXIsICZib3gtPmhpZ2gsIGZjaW5mby0+Y29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0ND VVJSRUQoZmNpbmZvLT5jb250ZXh0KSkKKwkJZ290byBmYWlsOwogCiAJUEdfUkVUVVJOX0NJUkNM RV9QKGNpcmNsZSk7CisKK2ZhaWw6CisJUEdfUkVUVVJOX05VTEwoKTsKIH0KIAogCkBAIC01Mjgx LDEwICs1MzczLDExIEBAIGNpcmNsZV9wb2x5KFBHX0ZVTkNUSU9OX0FSR1MpCiAgKiBYWFggVGhp cyBhbGdvcml0aG0gc2hvdWxkIHVzZSB3ZWlnaHRlZCBtZWFucyBvZiBsaW5lIHNlZ21lbnRzCiAg KglyYXRoZXIgdGhhbiBzdHJhaWdodCBhdmVyYWdlIHZhbHVlcyBvZiBwb2ludHMgLSB0Z2wgOTcv MDEvMjEuCiAgKi8KLXN0YXRpYyB2b2lkCi1wb2x5X3RvX2NpcmNsZShDSVJDTEUgKnJlc3VsdCwg UE9MWUdPTiAqcG9seSkKK3N0YXRpYyBib29sCitwb2x5X3RvX2NpcmNsZShDSVJDTEUgKnJlc3Vs dCwgUE9MWUdPTiAqcG9seSwgTm9kZSAqZXNjb250ZXh0KQogewogCWludAkJCWk7CisJZmxvYXQ4 CQl4OwogCiAJQXNzZXJ0KHBvbHktPm5wdHMgPiAwKTsKIApAQCAtNTI5MywxNCArNTM4Niw0NCBA QCBwb2x5X3RvX2NpcmNsZShDSVJDTEUgKnJlc3VsdCwgUE9MWUdPTiAqcG9seSkKIAlyZXN1bHQt PnJhZGl1cyA9IDA7CiAKIAlmb3IgKGkgPSAwOyBpIDwgcG9seS0+bnB0czsgaSsrKQotCQlwb2lu dF9hZGRfcG9pbnQoJnJlc3VsdC0+Y2VudGVyLCAmcmVzdWx0LT5jZW50ZXIsICZwb2x5LT5wW2ld KTsKLQlyZXN1bHQtPmNlbnRlci54ID0gZmxvYXQ4X2RpdihyZXN1bHQtPmNlbnRlci54LCBwb2x5 LT5ucHRzKTsKLQlyZXN1bHQtPmNlbnRlci55ID0gZmxvYXQ4X2RpdihyZXN1bHQtPmNlbnRlci55 LCBwb2x5LT5ucHRzKTsKKwl7CisJCXBvaW50X2FkZF9wb2ludCgmcmVzdWx0LT5jZW50ZXIsCisJ CQkJCQkmcmVzdWx0LT5jZW50ZXIsCisJCQkJCQkmcG9seS0+cFtpXSwKKwkJCQkJCWVzY29udGV4 dCk7CisKKwkJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZXNjb250ZXh0KSkKKwkJCXJldHVybiBm YWxzZTsKKwl9CisKKwlyZXN1bHQtPmNlbnRlci54ID0gZmxvYXQ4X2Rpdl9zYWZlKHJlc3VsdC0+ Y2VudGVyLngsCisJCQkJCQkJCQkgICBwb2x5LT5ucHRzLAorCQkJCQkJCQkJICAgZXNjb250ZXh0 KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRleHQpKQorCQlyZXR1cm4gZmFsc2U7 CisKKwlyZXN1bHQtPmNlbnRlci55ID0gZmxvYXQ4X2Rpdl9zYWZlKHJlc3VsdC0+Y2VudGVyLnks CisJCQkJCQkJCQkgICBwb2x5LT5ucHRzLAorCQkJCQkJCQkJICAgZXNjb250ZXh0KTsKKwlpZiAo U09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRleHQpKQorCQlyZXR1cm4gZmFsc2U7CiAKIAlmb3Ig KGkgPSAwOyBpIDwgcG9seS0+bnB0czsgaSsrKQotCQlyZXN1bHQtPnJhZGl1cyA9IGZsb2F0OF9w bChyZXN1bHQtPnJhZGl1cywKLQkJCQkJCQkJICAgcG9pbnRfZHQoJnBvbHktPnBbaV0sICZyZXN1 bHQtPmNlbnRlcikpOwotCXJlc3VsdC0+cmFkaXVzID0gZmxvYXQ4X2RpdihyZXN1bHQtPnJhZGl1 cywgcG9seS0+bnB0cyk7CisJeworCQl4ID0gcG9pbnRfZHQoJnBvbHktPnBbaV0sICZyZXN1bHQt PmNlbnRlciwgZXNjb250ZXh0KTsKKwkJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZXNjb250ZXh0 KSkKKwkJCXJldHVybiBmYWxzZTsKKworCQlyZXN1bHQtPnJhZGl1cyA9IGZsb2F0OF9wbF9zYWZl KHJlc3VsdC0+cmFkaXVzLCB4LCBlc2NvbnRleHQpOworCQlpZiAoU09GVF9FUlJPUl9PQ0NVUlJF RChlc2NvbnRleHQpKQorCQkJcmV0dXJuIGZhbHNlOworCX0KKworCXJlc3VsdC0+cmFkaXVzID0g ZmxvYXQ4X2Rpdl9zYWZlKHJlc3VsdC0+cmFkaXVzLCBwb2x5LT5ucHRzLCBlc2NvbnRleHQpOwor CWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGVzY29udGV4dCkpCisJCXJldHVybiBmYWxzZTsKKwor CXJldHVybiB0cnVlOwogfQogCiBEYXR1bQpAQCAtNTMxMSw3ICs1NDM0LDggQEAgcG9seV9jaXJj bGUoUEdfRlVOQ1RJT05fQVJHUykKIAogCXJlc3VsdCA9IChDSVJDTEUgKikgcGFsbG9jKHNpemVv ZihDSVJDTEUpKTsKIAotCXBvbHlfdG9fY2lyY2xlKHJlc3VsdCwgcG9seSk7CisJaWYgKCFwb2x5 X3RvX2NpcmNsZShyZXN1bHQsIHBvbHksIGZjaW5mby0+Y29udGV4dCkpCisJCVBHX1JFVFVSTl9O VUxMKCk7CiAKIAlQR19SRVRVUk5fQ0lSQ0xFX1AocmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3V0aWxzL2Zsb2F0LmggYi9zcmMvaW5jbHVkZS91dGlscy9mbG9hdC5oCmluZGV4 IGZjMmE5Y2Y2NDc1Li4xYjM3ZTE3ZGVmYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMv ZmxvYXQuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9mbG9hdC5oCkBAIC0zMCw5ICszMCw5IEBA IGV4dGVybiBQR0RMTElNUE9SVCBpbnQgZXh0cmFfZmxvYXRfZGlnaXRzOwogLyoKICAqIFV0aWxp dHkgZnVuY3Rpb25zIGluIGZsb2F0LmMKICAqLwotcGdfbm9yZXR1cm4gZXh0ZXJuIHZvaWQgZmxv YXRfb3ZlcmZsb3dfZXJyb3Iodm9pZCk7Ci1wZ19ub3JldHVybiBleHRlcm4gdm9pZCBmbG9hdF91 bmRlcmZsb3dfZXJyb3Iodm9pZCk7Ci1wZ19ub3JldHVybiBleHRlcm4gdm9pZCBmbG9hdF96ZXJv X2RpdmlkZV9lcnJvcih2b2lkKTsKK2V4dGVybiB2b2lkIGZsb2F0X292ZXJmbG93X2Vycm9yKHN0 cnVjdCBOb2RlICplc2NvbnRleHQpOworZXh0ZXJuIHZvaWQgZmxvYXRfdW5kZXJmbG93X2Vycm9y KHN0cnVjdCBOb2RlICplc2NvbnRleHQpOworZXh0ZXJuIHZvaWQgZmxvYXRfemVyb19kaXZpZGVf ZXJyb3Ioc3RydWN0IE5vZGUgKmVzY29udGV4dCk7CiBleHRlcm4gaW50CWlzX2luZmluaXRlKGZs b2F0OCB2YWwpOwogZXh0ZXJuIGZsb2F0OCBmbG9hdDhpbl9pbnRlcm5hbChjaGFyICpudW0sIGNo YXIgKiplbmRwdHJfcCwKIAkJCQkJCQkJY29uc3QgY2hhciAqdHlwZV9uYW1lLCBjb25zdCBjaGFy ICpvcmlnX3N0cmluZywKQEAgLTEwNCw3ICsxMDQsMjIgQEAgZmxvYXQ0X3BsKGNvbnN0IGZsb2F0 NCB2YWwxLCBjb25zdCBmbG9hdDQgdmFsMikKIAogCXJlc3VsdCA9IHZhbDEgKyB2YWwyOwogCWlm ICh1bmxpa2VseShpc2luZihyZXN1bHQpKSAmJiAhaXNpbmYodmFsMSkgJiYgIWlzaW5mKHZhbDIp KQotCQlmbG9hdF9vdmVyZmxvd19lcnJvcigpOworCQlmbG9hdF9vdmVyZmxvd19lcnJvcihOVUxM KTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgZmxvYXQ4CitmbG9hdDhf cGxfc2FmZShjb25zdCBmbG9hdDggdmFsMSwgY29uc3QgZmxvYXQ4IHZhbDIsIHN0cnVjdCBOb2Rl ICplc2NvbnRleHQpCit7CisJZmxvYXQ4CQlyZXN1bHQ7CisKKwlyZXN1bHQgPSB2YWwxICsgdmFs MjsKKwlpZiAodW5saWtlbHkoaXNpbmYocmVzdWx0KSkgJiYgIWlzaW5mKHZhbDEpICYmICFpc2lu Zih2YWwyKSkKKwl7CisJCWZsb2F0X292ZXJmbG93X2Vycm9yKGVzY29udGV4dCk7CisJCXJldHVy biAwLjA7CisJfQogCiAJcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTExMiwxMyArMTI3LDcgQEAgZmxv YXQ0X3BsKGNvbnN0IGZsb2F0NCB2YWwxLCBjb25zdCBmbG9hdDQgdmFsMikKIHN0YXRpYyBpbmxp bmUgZmxvYXQ4CiBmbG9hdDhfcGwoY29uc3QgZmxvYXQ4IHZhbDEsIGNvbnN0IGZsb2F0OCB2YWwy KQogewotCWZsb2F0OAkJcmVzdWx0OwotCi0JcmVzdWx0ID0gdmFsMSArIHZhbDI7Ci0JaWYgKHVu bGlrZWx5KGlzaW5mKHJlc3VsdCkpICYmICFpc2luZih2YWwxKSAmJiAhaXNpbmYodmFsMikpCi0J CWZsb2F0X292ZXJmbG93X2Vycm9yKCk7Ci0KLQlyZXR1cm4gcmVzdWx0OworCXJldHVybiBmbG9h dDhfcGxfc2FmZSh2YWwxLCB2YWwyLCBOVUxMKTsKIH0KIAogc3RhdGljIGlubGluZSBmbG9hdDQK QEAgLTEyOCw3ICsxMzcsMjIgQEAgZmxvYXQ0X21pKGNvbnN0IGZsb2F0NCB2YWwxLCBjb25zdCBm bG9hdDQgdmFsMikKIAogCXJlc3VsdCA9IHZhbDEgLSB2YWwyOwogCWlmICh1bmxpa2VseShpc2lu ZihyZXN1bHQpKSAmJiAhaXNpbmYodmFsMSkgJiYgIWlzaW5mKHZhbDIpKQotCQlmbG9hdF9vdmVy Zmxvd19lcnJvcigpOworCQlmbG9hdF9vdmVyZmxvd19lcnJvcihOVUxMKTsKKworCXJldHVybiBy ZXN1bHQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgZmxvYXQ4CitmbG9hdDhfbWlfc2FmZShjb25zdCBm bG9hdDggdmFsMSwgY29uc3QgZmxvYXQ4IHZhbDIsIHN0cnVjdCBOb2RlICplc2NvbnRleHQpCit7 CisJZmxvYXQ4CQlyZXN1bHQ7CisKKwlyZXN1bHQgPSB2YWwxIC0gdmFsMjsKKwlpZiAodW5saWtl bHkoaXNpbmYocmVzdWx0KSkgJiYgIWlzaW5mKHZhbDEpICYmICFpc2luZih2YWwyKSkKKwl7CisJ CWZsb2F0X292ZXJmbG93X2Vycm9yKGVzY29udGV4dCk7CisJCXJldHVybiAwLjA7CisJfQogCiAJ cmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEzNiwxMyArMTYwLDcgQEAgZmxvYXQ0X21pKGNvbnN0IGZs b2F0NCB2YWwxLCBjb25zdCBmbG9hdDQgdmFsMikKIHN0YXRpYyBpbmxpbmUgZmxvYXQ4CiBmbG9h dDhfbWkoY29uc3QgZmxvYXQ4IHZhbDEsIGNvbnN0IGZsb2F0OCB2YWwyKQogewotCWZsb2F0OAkJ cmVzdWx0OwotCi0JcmVzdWx0ID0gdmFsMSAtIHZhbDI7Ci0JaWYgKHVubGlrZWx5KGlzaW5mKHJl c3VsdCkpICYmICFpc2luZih2YWwxKSAmJiAhaXNpbmYodmFsMikpCi0JCWZsb2F0X292ZXJmbG93 X2Vycm9yKCk7Ci0KLQlyZXR1cm4gcmVzdWx0OworCXJldHVybiBmbG9hdDhfbWlfc2FmZSh2YWwx LCB2YWwyLCBOVUxMKTsKIH0KIAogc3RhdGljIGlubGluZSBmbG9hdDQKQEAgLTE1Miw1OSArMTcw LDg5IEBAIGZsb2F0NF9tdWwoY29uc3QgZmxvYXQ0IHZhbDEsIGNvbnN0IGZsb2F0NCB2YWwyKQog CiAJcmVzdWx0ID0gdmFsMSAqIHZhbDI7CiAJaWYgKHVubGlrZWx5KGlzaW5mKHJlc3VsdCkpICYm ICFpc2luZih2YWwxKSAmJiAhaXNpbmYodmFsMikpCi0JCWZsb2F0X292ZXJmbG93X2Vycm9yKCk7 CisJCWZsb2F0X292ZXJmbG93X2Vycm9yKE5VTEwpOwogCWlmICh1bmxpa2VseShyZXN1bHQgPT0g MC4wZikgJiYgdmFsMSAhPSAwLjBmICYmIHZhbDIgIT0gMC4wZikKLQkJZmxvYXRfdW5kZXJmbG93 X2Vycm9yKCk7CisJCWZsb2F0X3VuZGVyZmxvd19lcnJvcihOVUxMKTsKIAogCXJldHVybiByZXN1 bHQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZmxvYXQ4Ci1mbG9hdDhfbXVsKGNvbnN0IGZsb2F0OCB2 YWwxLCBjb25zdCBmbG9hdDggdmFsMikKK2Zsb2F0OF9tdWxfc2FmZShjb25zdCBmbG9hdDggdmFs MSwgY29uc3QgZmxvYXQ4IHZhbDIsIHN0cnVjdCBOb2RlICplc2NvbnRleHQpCiB7CiAJZmxvYXQ4 CQlyZXN1bHQ7CiAKIAlyZXN1bHQgPSB2YWwxICogdmFsMjsKIAlpZiAodW5saWtlbHkoaXNpbmYo cmVzdWx0KSkgJiYgIWlzaW5mKHZhbDEpICYmICFpc2luZih2YWwyKSkKLQkJZmxvYXRfb3ZlcmZs b3dfZXJyb3IoKTsKKwl7CisJCWZsb2F0X292ZXJmbG93X2Vycm9yKGVzY29udGV4dCk7CisJCXJl dHVybiAwLjA7CisJfQorCiAJaWYgKHVubGlrZWx5KHJlc3VsdCA9PSAwLjApICYmIHZhbDEgIT0g MC4wICYmIHZhbDIgIT0gMC4wKQotCQlmbG9hdF91bmRlcmZsb3dfZXJyb3IoKTsKKwl7CisJCWZs b2F0X3VuZGVyZmxvd19lcnJvcihlc2NvbnRleHQpOworCQlyZXR1cm4gMC4wOworCX0KIAogCXJl dHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBpbmxpbmUgZmxvYXQ4CitmbG9hdDhfbXVsKGNvbnN0 IGZsb2F0OCB2YWwxLCBjb25zdCBmbG9hdDggdmFsMikKK3sKKwlyZXR1cm4gZmxvYXQ4X211bF9z YWZlKHZhbDEsIHZhbDIsIE5VTEwpOworfQorCiBzdGF0aWMgaW5saW5lIGZsb2F0NAogZmxvYXQ0 X2Rpdihjb25zdCBmbG9hdDQgdmFsMSwgY29uc3QgZmxvYXQ0IHZhbDIpCiB7CiAJZmxvYXQ0CQly ZXN1bHQ7CiAKIAlpZiAodW5saWtlbHkodmFsMiA9PSAwLjBmKSAmJiAhaXNuYW4odmFsMSkpCi0J CWZsb2F0X3plcm9fZGl2aWRlX2Vycm9yKCk7CisJCWZsb2F0X3plcm9fZGl2aWRlX2Vycm9yKE5V TEwpOwogCXJlc3VsdCA9IHZhbDEgLyB2YWwyOwogCWlmICh1bmxpa2VseShpc2luZihyZXN1bHQp KSAmJiAhaXNpbmYodmFsMSkpCi0JCWZsb2F0X292ZXJmbG93X2Vycm9yKCk7CisJCWZsb2F0X292 ZXJmbG93X2Vycm9yKE5VTEwpOwogCWlmICh1bmxpa2VseShyZXN1bHQgPT0gMC4wZikgJiYgdmFs MSAhPSAwLjBmICYmICFpc2luZih2YWwyKSkKLQkJZmxvYXRfdW5kZXJmbG93X2Vycm9yKCk7CisJ CWZsb2F0X3VuZGVyZmxvd19lcnJvcihOVUxMKTsKIAogCXJldHVybiByZXN1bHQ7CiB9CiAKIHN0 YXRpYyBpbmxpbmUgZmxvYXQ4Ci1mbG9hdDhfZGl2KGNvbnN0IGZsb2F0OCB2YWwxLCBjb25zdCBm bG9hdDggdmFsMikKK2Zsb2F0OF9kaXZfc2FmZShjb25zdCBmbG9hdDggdmFsMSwgY29uc3QgZmxv YXQ4IHZhbDIsIHN0cnVjdCBOb2RlICplc2NvbnRleHQpCiB7CiAJZmxvYXQ4CQlyZXN1bHQ7CiAK IAlpZiAodW5saWtlbHkodmFsMiA9PSAwLjApICYmICFpc25hbih2YWwxKSkKLQkJZmxvYXRfemVy b19kaXZpZGVfZXJyb3IoKTsKKwl7CisJCWZsb2F0X3plcm9fZGl2aWRlX2Vycm9yKGVzY29udGV4 dCk7CisJCXJldHVybiAwLjA7CisJfQorCiAJcmVzdWx0ID0gdmFsMSAvIHZhbDI7CiAJaWYgKHVu bGlrZWx5KGlzaW5mKHJlc3VsdCkpICYmICFpc2luZih2YWwxKSkKLQkJZmxvYXRfb3ZlcmZsb3df ZXJyb3IoKTsKKwl7CisJCWZsb2F0X292ZXJmbG93X2Vycm9yKGVzY29udGV4dCk7CisJCXJldHVy biAwLjA7CisJfQorCiAJaWYgKHVubGlrZWx5KHJlc3VsdCA9PSAwLjApICYmIHZhbDEgIT0gMC4w ICYmICFpc2luZih2YWwyKSkKLQkJZmxvYXRfdW5kZXJmbG93X2Vycm9yKCk7CisJeworCQlmbG9h dF91bmRlcmZsb3dfZXJyb3IoZXNjb250ZXh0KTsKKwkJcmV0dXJuIDAuMDsKKwl9CiAKIAlyZXR1 cm4gcmVzdWx0OwogfQogCitzdGF0aWMgaW5saW5lIGZsb2F0OAorZmxvYXQ4X2Rpdihjb25zdCBm bG9hdDggdmFsMSwgY29uc3QgZmxvYXQ4IHZhbDIpCit7CisJcmV0dXJuIGZsb2F0OF9kaXZfc2Fm ZSh2YWwxLCB2YWwyLCBOVUxMKTsKK30KKwogLyoKICAqIFJvdXRpbmVzIGZvciBOYU4tYXdhcmUg Y29tcGFyaXNvbnMKICAqCi0tIAoyLjM0LjEKCg== --000000000000e7a9ea06457207c0 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0015-error-safe-for-casting-timestamptz-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v14-0015-error-safe-for-casting-timestamptz-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mix9wgaq4 RnJvbSAwOTRhYjI4ZmI4ZWNkYTE0OWQ2NDJkNWI2MDM5YzU4N2M0MjUyNzgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMiBEZWMgMjAyNSAxMjowNDo0MCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjE0 IDE1LzE5XSBlcnJvciBzYWZlIGZvciBjYXN0aW5nIHRpbWVzdGFtcHR6IHRvIG90aGVyIHR5cGVz CiBwZXIgcGdfY2FzdAoKc2VsZWN0IGNhc3Rzb3VyY2U6OnJlZ3R5cGUsIGNhc3R0YXJnZXQ6OnJl Z3R5cGUsIGNhc3RmdW5jLAogICAgICAgY2FzdGNvbnRleHQsY2FzdG1ldGhvZCwgcHAucHJvc3Jj LCBwcC5wcm9uYW1lCmZyb20gcGdfY2FzdCBwYyBqb2luIHBnX3Byb2MgcHAgb24gcHAub2lkID0g cGMuY2FzdGZ1bmMKYW5kIHBjLmNhc3RmdW5jID4gMCBhbmQgKGNhc3Rzb3VyY2U6OnJlZ3R5cGUg PSd0aW1lc3RhbXB0eic6OnJlZ3R5cGUpCm9yZGVyIGJ5IGNhc3Rzb3VyY2U6OnJlZ3R5cGU7Cgog ICAgICAgIGNhc3Rzb3VyY2UgICAgICAgIHwgICAgICAgICBjYXN0dGFyZ2V0ICAgICAgICAgIHwg Y2FzdGZ1bmMgfCBjYXN0Y29udGV4dCB8IGNhc3RtZXRob2QgfCAgICAgICAgcHJvc3JjICAgICAg ICAgfCAgIHByb25hbWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCiB0aW1lc3RhbXAgd2l0aCB0aW1lIHpv bmUgfCBkYXRlICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMTE3OCB8IGEgICAgICAgICAg IHwgZiAgICAgICAgICB8IHRpbWVzdGFtcHR6X2RhdGUgICAgICB8IGRhdGUKIHRpbWVzdGFtcCB3 aXRoIHRpbWUgem9uZSB8IHRpbWUgd2l0aG91dCB0aW1lIHpvbmUgICAgICB8ICAgICAyMDE5IHwg YSAgICAgICAgICAgfCBmICAgICAgICAgIHwgdGltZXN0YW1wdHpfdGltZSAgICAgIHwgdGltZQog dGltZXN0YW1wIHdpdGggdGltZSB6b25lIHwgdGltZXN0YW1wIHdpdGhvdXQgdGltZSB6b25lIHwg ICAgIDIwMjcgfCBhICAgICAgICAgICB8IGYgICAgICAgICAgfCB0aW1lc3RhbXB0el90aW1lc3Rh bXAgfCB0aW1lc3RhbXAKIHRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZSB8IHRpbWUgd2l0aCB0aW1l IHpvbmUgICAgICAgICB8ICAgICAxMzg4IHwgYSAgICAgICAgICAgfCBmICAgICAgICAgIHwgdGlt ZXN0YW1wdHpfdGltZXR6ICAgIHwgdGltZXR6CiB0aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmUgfCB0 aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmUgICAgfCAgICAgMTk2NyB8IGkgICAgICAgICAgIHwgZiAg ICAgICAgICB8IHRpbWVzdGFtcHR6X3NjYWxlICAgICB8IHRpbWVzdGFtcHR6Cig1IHJvd3MpCgpk aXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRGtMTT1mdjFKZlk0VWZhLWpjd3dOYmpR aXhOVmlza1E4alp1M1R6X3A2NTZpXzRoUUBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9kYXRlLmMgICAgICB8ICA5ICsrKysrKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3RpbWVzdGFtcC5jIHwgMTAgKysrKysrKystLQogMiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNl cnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9kYXRlLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZGF0ZS5jCmluZGV4IDhmYTMzNmRh MjUwLi5iYmM4NjRhODBjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RhdGUu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZGF0ZS5jCkBAIC0xNDA2LDcgKzE0MDYsMTAg QEAgdGltZXN0YW1wdHpfZGF0ZShQR19GVU5DVElPTl9BUkdTKQogCVRpbWVzdGFtcFR6IHRpbWVz dGFtcCA9IFBHX0dFVEFSR19USU1FU1RBTVAoMCk7CiAJRGF0ZUFEVAkJcmVzdWx0OwogCi0JcmVz dWx0ID0gdGltZXN0YW1wdHoyZGF0ZV9zYWZlKHRpbWVzdGFtcCwgTlVMTCk7CisJcmVzdWx0ID0g dGltZXN0YW1wdHoyZGF0ZV9zYWZlKHRpbWVzdGFtcCwgZmNpbmZvLT5jb250ZXh0KTsKKwlpZiAo U09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm8tPmFyZ3MpKQorCQlQR19SRVRVUk5fTlVMTCgpOwor CiAJUEdfUkVUVVJOX0RBVEVBRFQocmVzdWx0KTsKIH0KIApAQCAtMjAzNiw3ICsyMDM5LDcgQEAg dGltZXN0YW1wdHpfdGltZShQR19GVU5DVElPTl9BUkdTKQogCQlQR19SRVRVUk5fTlVMTCgpOwog CiAJaWYgKHRpbWVzdGFtcDJ0bSh0aW1lc3RhbXAsICZ0eiwgdG0sICZmc2VjLCBOVUxMLCBOVUxM KSAhPSAwKQotCQllcmVwb3J0KEVSUk9SLAorCQllcmV0dXJuKGZjaW5mby0+Y29udGV4dCwgKERh dHVtKSAwLAogCQkJCShlcnJjb2RlKEVSUkNPREVfREFURVRJTUVfVkFMVUVfT1VUX09GX1JBTkdF KSwKIAkJCQkgZXJybXNnKCJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIikpKTsKIApAQCAtMjk1NSw3 ICsyOTU4LDcgQEAgdGltZXN0YW1wdHpfdGltZXR6KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCVBHX1JF VFVSTl9OVUxMKCk7CiAKIAlpZiAodGltZXN0YW1wMnRtKHRpbWVzdGFtcCwgJnR6LCB0bSwgJmZz ZWMsIE5VTEwsIE5VTEwpICE9IDApCi0JCWVyZXBvcnQoRVJST1IsCisJCWVyZXR1cm4oZmNpbmZv LT5jb250ZXh0LCAoRGF0dW0pIDAsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRFVElNRV9WQUxV RV9PVVRfT0ZfUkFOR0UpLAogCQkJCSBlcnJtc2coInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UiKSkp OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMKaW5kZXggMWU4Yjg1OWZmMjkuLmMxNDRjYWYy NDU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5jCkBAIC04NzUsNyArODc1LDggQEAgdGlt ZXN0YW1wdHpfc2NhbGUoUEdfRlVOQ1RJT05fQVJHUykKIAogCXJlc3VsdCA9IHRpbWVzdGFtcDsK IAotCUFkanVzdFRpbWVzdGFtcEZvclR5cG1vZCgmcmVzdWx0LCB0eXBtb2QsIE5VTEwpOworCWlm ICghQWRqdXN0VGltZXN0YW1wRm9yVHlwbW9kKCZyZXN1bHQsIHR5cG1vZCwgZmNpbmZvLT5jb250 ZXh0KSkKKwkJUEdfUkVUVVJOX05VTEwoKTsKIAogCVBHX1JFVFVSTl9USU1FU1RBTVBUWihyZXN1 bHQpOwogfQpAQCAtNjQ5NCw4ICs2NDk1LDEzIEBAIERhdHVtCiB0aW1lc3RhbXB0el90aW1lc3Rh bXAoUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlUaW1lc3RhbXBUeiB0aW1lc3RhbXAgPSBQR19HRVRB UkdfVElNRVNUQU1QVFooMCk7CisJVGltZXN0YW1wCXJlc3VsdDsKIAotCVBHX1JFVFVSTl9USU1F U1RBTVAodGltZXN0YW1wdHoydGltZXN0YW1wKHRpbWVzdGFtcCkpOworCXJlc3VsdCA9IHRpbWVz dGFtcHR6MnRpbWVzdGFtcF9zYWZlKHRpbWVzdGFtcCwgZmNpbmZvLT5jb250ZXh0KTsKKwlpZiAo dW5saWtlbHkoU09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm8tPmNvbnRleHQpKSkKKwkJUEdfUkVU VVJOX05VTEwoKTsKKworCVBHX1JFVFVSTl9USU1FU1RBTVAocmVzdWx0KTsKIH0KIAogLyoKLS0g CjIuMzQuMQoK --000000000000e7a9ea06457207c0 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0014-error-safe-for-casting-interval-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v14-0014-error-safe-for-casting-interval-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mix9wgas5 RnJvbSA1MzFiYmFjNjc5ZThmYWIwNGI4NWM0ZTJlMDI1NjFkZjQzNGZmYjc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgOSBPY3QgMjAyNSAxODo0MzoyOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjE0 IDE0LzE5XSBlcnJvciBzYWZlIGZvciBjYXN0aW5nIGludGVydmFsIHRvIG90aGVyIHR5cGVzIHBl cgogcGdfY2FzdAoKc2VsZWN0IGNhc3Rzb3VyY2U6OnJlZ3R5cGUsIGNhc3R0YXJnZXQ6OnJlZ3R5 cGUsIGNhc3RmdW5jLApjYXN0Y29udGV4dCxjYXN0bWV0aG9kLCBwcC5wcm9zcmMsIHBwLnByb25h bWUgZnJvbSBwZ19jYXN0IHBjIGpvaW4gcGdfcHJvYyBwcCBvbgpwcC5vaWQgPSBwYy5jYXN0ZnVu YyBhbmQgcGMuY2FzdGZ1bmMgPiAwCmFuZCBjYXN0c291cmNlOjpyZWd0eXBlID0gJ2ludGVydmFs Jzo6cmVndHlwZQpvcmRlciBieSBjYXN0c291cmNlOjpyZWd0eXBlOwoKIGNhc3Rzb3VyY2UgfCAg ICAgICBjYXN0dGFyZ2V0ICAgICAgIHwgY2FzdGZ1bmMgfCBjYXN0Y29udGV4dCB8IGNhc3RtZXRo b2QgfCAgICAgcHJvc3JjICAgICB8IHByb25hbWUKLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQogaW50ZXJ2YWwgICB8IHRpbWUgd2l0aG91dCB0aW1lIHpvbmUg fCAgICAgMTQxOSB8IGEgICAgICAgICAgIHwgZiAgICAgICAgICB8IGludGVydmFsX3RpbWUgIHwg dGltZQogaW50ZXJ2YWwgICB8IGludGVydmFsICAgICAgICAgICAgICAgfCAgICAgMTIwMCB8IGkg ICAgICAgICAgIHwgZiAgICAgICAgICB8IGludGVydmFsX3NjYWxlIHwgaW50ZXJ2YWwKKDIgcm93 cykKCmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FEa0xNPWZ2MUpmWTRVZmEtamN3 d05ialFpeE5WaXNrUThqWnUzVHpfcDY1NmlfNGhRQG1haWwuZ21haWwuY29tCi0tLQogc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2RhdGUuYyAgICAgIHwgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3RpbWVzdGFtcC5jIHwgMyArKy0KIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAy IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRlLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvZGF0ZS5jCmluZGV4IGNmMjQxZWE5Nzk0Li44ZmEzMzZk YTI1MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RhdGUuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvZGF0ZS5jCkBAIC0yMTA2LDcgKzIxMDYsNyBAQCBpbnRlcnZhbF90 aW1lKFBHX0ZVTkNUSU9OX0FSR1MpCiAJVGltZUFEVAkJcmVzdWx0OwogCiAJaWYgKElOVEVSVkFM X05PVF9GSU5JVEUoc3BhbikpCi0JCWVyZXBvcnQoRVJST1IsCisJCWVyZXR1cm4oZmNpbmZvLT5j b250ZXh0LCAoRGF0dW0pIDAsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRFVElNRV9WQUxVRV9P VVRfT0ZfUkFOR0UpLAogCQkJCSBlcnJtc2coImNhbm5vdCBjb252ZXJ0IGluZmluaXRlIGludGVy dmFsIHRvIHRpbWUiKSkpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdGlt ZXN0YW1wLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMKaW5kZXggMmRjOTBh MmI4YTkuLjFlOGI4NTlmZjI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdGlt ZXN0YW1wLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5jCkBAIC0xMzM0 LDcgKzEzMzQsOCBAQCBpbnRlcnZhbF9zY2FsZShQR19GVU5DVElPTl9BUkdTKQogCXJlc3VsdCA9 IHBhbGxvYyhzaXplb2YoSW50ZXJ2YWwpKTsKIAkqcmVzdWx0ID0gKmludGVydmFsOwogCi0JQWRq dXN0SW50ZXJ2YWxGb3JUeXBtb2QocmVzdWx0LCB0eXBtb2QsIE5VTEwpOworCWlmICghQWRqdXN0 SW50ZXJ2YWxGb3JUeXBtb2QocmVzdWx0LCB0eXBtb2QsIGZjaW5mby0+Y29udGV4dCkpCisJCVBH X1JFVFVSTl9OVUxMKCk7CiAKIAlQR19SRVRVUk5fSU5URVJWQUxfUChyZXN1bHQpOwogfQotLSAK Mi4zNC4xCgo= --000000000000e7a9ea06457207c0 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0013-error-safe-for-casting-date-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v14-0013-error-safe-for-casting-date-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mix9wgau6 RnJvbSA5MDIxMGYwMzgwOTM4NzJlZTBjZmZkM2NhMWZlYzE1YTU4MmI5MGQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMiBEZWMgMjAyNSAxMzoxNTozMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjE0 IDEzLzE5XSBlcnJvciBzYWZlIGZvciBjYXN0aW5nIGRhdGUgdG8gb3RoZXIgdHlwZXMgcGVyCiBw Z19jYXN0CgpzZWxlY3QgY2FzdHNvdXJjZTo6cmVndHlwZSwgY2FzdHRhcmdldDo6cmVndHlwZSwg Y2FzdGZ1bmMsCmNhc3Rjb250ZXh0LGNhc3RtZXRob2QsIHBwLnByb3NyYywgcHAucHJvbmFtZSBm cm9tIHBnX2Nhc3QgcGMgam9pbiBwZ19wcm9jIHBwIG9uCnBwLm9pZCA9IHBjLmNhc3RmdW5jIGFu ZCBwYy5jYXN0ZnVuYyA+IDAKYW5kIGNhc3Rzb3VyY2U6OnJlZ3R5cGUgPSAnZGF0ZSc6OnJlZ3R5 cGUKb3JkZXIgYnkgY2FzdHNvdXJjZTo6cmVndHlwZTsKCmNhc3Rzb3VyY2UgfCAgICAgICAgIGNh c3R0YXJnZXQgICAgICAgICAgfCBjYXN0ZnVuYyB8IGNhc3Rjb250ZXh0IHwgY2FzdG1ldGhvZCB8 ICAgICAgcHJvc3JjICAgICAgfCAgIHByb25hbWUKLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KIGRhdGUgICAgICAgfCB0aW1lc3RhbXAgd2l0 aG91dCB0aW1lIHpvbmUgfCAgICAgMjAyNCB8IGkgICAgICAgICAgIHwgZiAgICAgICAgICB8IGRh dGVfdGltZXN0YW1wICAgfCB0aW1lc3RhbXAKIGRhdGUgICAgICAgfCB0aW1lc3RhbXAgd2l0aCB0 aW1lIHpvbmUgICAgfCAgICAgMTE3NCB8IGkgICAgICAgICAgIHwgZiAgICAgICAgICB8IGRhdGVf dGltZXN0YW1wdHogfCB0aW1lc3RhbXB0egooMiByb3dzKQoKZGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS9DQURrTE09ZnYxSmZZNFVmYS1qY3d3TmJqUWl4TlZpc2tROGpadTNUel9wNjU2 aV80aFFAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvZGF0ZS5jIHwg MTcgKysrKysrLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEx IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRlLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvZGF0ZS5jCmluZGV4IGM0YjgxMjVkZDY2Li5jZjI0MWVh OTc5NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RhdGUuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvZGF0ZS5jCkBAIC03MzAsMTUgKzczMCw2IEBAIGRhdGUydGltZXN0 YW1wdHpfc2FmZShEYXRlQURUIGRhdGVWYWwsIE5vZGUgKmVzY29udGV4dCkKIAlyZXR1cm4gcmVz dWx0OwogfQogCi0vKgotICogUHJvbW90ZSBkYXRlIHRvIHRpbWVzdGFtcHR6LCB0aHJvd2luZyBl cnJvciBmb3Igb3ZlcmZsb3cuCi0gKi8KLXN0YXRpYyBUaW1lc3RhbXBUegotZGF0ZTJ0aW1lc3Rh bXB0eihEYXRlQURUIGRhdGVWYWwpCi17Ci0JcmV0dXJuIGRhdGUydGltZXN0YW1wdHpfc2FmZShk YXRlVmFsLCBOVUxMKTsKLX0KLQogLyoKICAqIGRhdGUydGltZXN0YW1wX25vX292ZXJmbG93CiAg KgpAQCAtMTMyMyw3ICsxMzE0LDkgQEAgZGF0ZV90aW1lc3RhbXAoUEdfRlVOQ1RJT05fQVJHUykK IAlEYXRlQURUCQlkYXRlVmFsID0gUEdfR0VUQVJHX0RBVEVBRFQoMCk7CiAJVGltZXN0YW1wCXJl c3VsdDsKIAotCXJlc3VsdCA9IGRhdGUydGltZXN0YW1wKGRhdGVWYWwpOworCXJlc3VsdCA9IGRh dGUydGltZXN0YW1wX3NhZmUoZGF0ZVZhbCwgZmNpbmZvLT5jb250ZXh0KTsKKwlpZihTT0ZUX0VS Uk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJCVBHX1JFVFVSTl9OVUxMKCk7CiAKIAlQ R19SRVRVUk5fVElNRVNUQU1QKHJlc3VsdCk7CiB9CkBAIC0xMzk2LDcgKzEzODksOSBAQCBkYXRl X3RpbWVzdGFtcHR6KFBHX0ZVTkNUSU9OX0FSR1MpCiAJRGF0ZUFEVAkJZGF0ZVZhbCA9IFBHX0dF VEFSR19EQVRFQURUKDApOwogCVRpbWVzdGFtcFR6IHJlc3VsdDsKIAotCXJlc3VsdCA9IGRhdGUy dGltZXN0YW1wdHooZGF0ZVZhbCk7CisJcmVzdWx0ID0gZGF0ZTJ0aW1lc3RhbXB0el9zYWZlKGRh dGVWYWwsIGZjaW5mby0+Y29udGV4dCk7CisJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZv LT5jb250ZXh0KSkKKwkJUEdfUkVUVVJOX05VTEwoKTsKIAogCVBHX1JFVFVSTl9USU1FU1RBTVAo cmVzdWx0KTsKIH0KLS0gCjIuMzQuMQoK --000000000000e7a9ea06457207c0 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0012-error-safe-for-casting-float8-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v14-0012-error-safe-for-casting-float8-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mix9wgaw7 RnJvbSA4M2U0OGZjNzNiZjM4M2EwNzljNzBjNmJjNWMyMGQ2N2EyOTRmYWU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMjIgTm92IDIwMjUgMDA6MzE6NTMgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx NCAxMi8xOV0gZXJyb3Igc2FmZSBmb3IgY2FzdGluZyBmbG9hdDggdG8gb3RoZXIgdHlwZXMgcGVy CiBwZ19jYXN0CgpzZWxlY3QgY2FzdHNvdXJjZTo6cmVndHlwZSwgY2FzdHRhcmdldDo6cmVndHlw ZSwgY2FzdGZ1bmMsCmNhc3Rjb250ZXh0LGNhc3RtZXRob2QsIHBwLnByb3NyYywgcHAucHJvbmFt ZSBmcm9tIHBnX2Nhc3QgcGMgam9pbiBwZ19wcm9jIHBwIG9uCnBwLm9pZCA9IHBjLmNhc3RmdW5j IGFuZCBwYy5jYXN0ZnVuYyA+IDAKYW5kIGNhc3Rzb3VyY2U6OnJlZ3R5cGUgPSAnZmxvYXQ4Jzo6 cmVndHlwZQpvcmRlciBieSBjYXN0c291cmNlOjpyZWd0eXBlOwoKICAgIGNhc3Rzb3VyY2UgICAg fCBjYXN0dGFyZ2V0IHwgY2FzdGZ1bmMgfCBjYXN0Y29udGV4dCB8IGNhc3RtZXRob2QgfCAgICAg cHJvc3JjICAgICB8IHByb25hbWUKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tCiBkb3VibGUgcHJlY2lzaW9uIHwgYmlnaW50ICAgICB8ICAgICAgNDgzIHwgYSAgICAgICAg ICAgfCBmICAgICAgICAgIHwgZHRvaTggICAgICAgICAgfCBpbnQ4CiBkb3VibGUgcHJlY2lzaW9u IHwgc21hbGxpbnQgICB8ICAgICAgMjM3IHwgYSAgICAgICAgICAgfCBmICAgICAgICAgIHwgZHRv aTIgICAgICAgICAgfCBpbnQyCiBkb3VibGUgcHJlY2lzaW9uIHwgaW50ZWdlciAgICB8ICAgICAg MzE3IHwgYSAgICAgICAgICAgfCBmICAgICAgICAgIHwgZHRvaTQgICAgICAgICAgfCBpbnQ0CiBk b3VibGUgcHJlY2lzaW9uIHwgcmVhbCAgICAgICB8ICAgICAgMzEyIHwgYSAgICAgICAgICAgfCBm ICAgICAgICAgIHwgZHRvZiAgICAgICAgICAgfCBmbG9hdDQKIGRvdWJsZSBwcmVjaXNpb24gfCBu dW1lcmljICAgIHwgICAgIDE3NDMgfCBhICAgICAgICAgICB8IGYgICAgICAgICAgfCBmbG9hdDhf bnVtZXJpYyB8IG51bWVyaWMKKDUgcm93cykKCmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vQ0FEa0xNPWZ2MUpmWTRVZmEtamN3d05ialFpeE5WaXNrUThqWnUzVHpfcDY1NmlfNGhRQG1h aWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zsb2F0LmMgICB8IDEzICsr KysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9pbnQ4LmMgICAgfCAgMiArLQogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMuYyB8ICAzICsrLQogMyBmaWxlcyBjaGFuZ2VkLCAx MiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9mbG9hdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zsb2F0LmMKaW5kZXgg ZDVmMTViZmE3ZGUuLjU1YzcwMzBiYTgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvZmxvYXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZmxvYXQuYwpAQCAtMTE5OSw5 ICsxMTk5LDE0IEBAIGR0b2YoUEdfRlVOQ1RJT05fQVJHUykKIAogCXJlc3VsdCA9IChmbG9hdDQp IG51bTsKIAlpZiAodW5saWtlbHkoaXNpbmYocmVzdWx0KSkgJiYgIWlzaW5mKG51bSkpCi0JCWZs b2F0X292ZXJmbG93X2Vycm9yKCk7CisJCWVyZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0p IDAsCisJCQkJZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwKKwkJ CQllcnJtc2coInZhbHVlIG91dCBvZiByYW5nZTogb3ZlcmZsb3ciKSk7CisKIAlpZiAodW5saWtl bHkocmVzdWx0ID09IDAuMGYpICYmIG51bSAhPSAwLjApCi0JCWZsb2F0X3VuZGVyZmxvd19lcnJv cigpOworCQllcmV0dXJuKGZjaW5mby0+Y29udGV4dCwgKERhdHVtKSAwLAorCQkJCWVycmNvZGUo RVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCisJCQkJZXJybXNnKCJ2YWx1ZSBv dXQgb2YgcmFuZ2U6IHVuZGVyZmxvdyIpKTsKIAogCVBHX1JFVFVSTl9GTE9BVDQocmVzdWx0KTsK IH0KQEAgLTEyMjQsNyArMTIyOSw3IEBAIGR0b2k0KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkvKiBS YW5nZSBjaGVjayAqLwogCWlmICh1bmxpa2VseShpc25hbihudW0pIHx8ICFGTE9BVDhfRklUU19J Tl9JTlQzMihudW0pKSkKLQkJZXJlcG9ydChFUlJPUiwKKwkJZXJldHVybihmY2luZm8tPmNvbnRl eHQsIChEYXR1bSkgMCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09G X1JBTkdFKSwKIAkJCQkgZXJybXNnKCJpbnRlZ2VyIG91dCBvZiByYW5nZSIpKSk7CiAKQEAgLTEy NDksNyArMTI1NCw3IEBAIGR0b2kyKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkvKiBSYW5nZSBjaGVj ayAqLwogCWlmICh1bmxpa2VseShpc25hbihudW0pIHx8ICFGTE9BVDhfRklUU19JTl9JTlQxNihu dW0pKSkKLQkJZXJlcG9ydChFUlJPUiwKKwkJZXJldHVybihmY2luZm8tPmNvbnRleHQsIChEYXR1 bSkgMCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwK IAkJCQkgZXJybXNnKCJzbWFsbGludCBvdXQgb2YgcmFuZ2UiKSkpOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvaW50OC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2ludDgu YwppbmRleCA2ODI5OWU5MTUxMi4uN2ZmN2YyNjdiN2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9pbnQ4LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2ludDguYwpAQCAt MTMwNyw3ICsxMzA3LDcgQEAgZHRvaTgoUEdfRlVOQ1RJT05fQVJHUykKIAogCS8qIFJhbmdlIGNo ZWNrICovCiAJaWYgKHVubGlrZWx5KGlzbmFuKG51bSkgfHwgIUZMT0FUOF9GSVRTX0lOX0lOVDY0 KG51bSkpKQotCQllcmVwb3J0KEVSUk9SLAorCQllcmV0dXJuKGZjaW5mby0+Y29udGV4dCwgKERh dHVtKSAwLAogCQkJCShlcnJjb2RlKEVSUkNPREVfTlVNRVJJQ19WQUxVRV9PVVRfT0ZfUkFOR0Up LAogCQkJCSBlcnJtc2coImJpZ2ludCBvdXQgb2YgcmFuZ2UiKSkpOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvbnVtZXJpYy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251 bWVyaWMuYwppbmRleCBjOWQ2NjY5YTdkZS4uMTFjNzZlZTQwYjUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251 bWVyaWMuYwpAQCAtNDU2MCw3ICs0NTYwLDggQEAgZmxvYXQ4X251bWVyaWMoUEdfRlVOQ1RJT05f QVJHUykKIAlpbml0X3ZhcigmcmVzdWx0KTsKIAogCS8qIEFzc3VtZSB3ZSBuZWVkIG5vdCB3b3Jy eSBhYm91dCBsZWFkaW5nL3RyYWlsaW5nIHNwYWNlcyAqLwotCSh2b2lkKSBzZXRfdmFyX2Zyb21f c3RyKGJ1ZiwgYnVmLCAmcmVzdWx0LCAmZW5kcHRyLCBOVUxMKTsKKwlpZiAoIXNldF92YXJfZnJv bV9zdHIoYnVmLCBidWYsICZyZXN1bHQsICZlbmRwdHIsIGZjaW5mby0+Y29udGV4dCkpCisJCVBH X1JFVFVSTl9OVUxMKCk7CiAKIAlyZXMgPSBtYWtlX3Jlc3VsdCgmcmVzdWx0KTsKIAotLSAKMi4z NC4xCgo= --000000000000e7a9ea06457207c0 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0010-error-safe-for-casting-numeric-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v14-0010-error-safe-for-casting-numeric-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mix9wgb19 RnJvbSA3NGU4NTk3ZWJiOGMyNmFlMTVlNmVlY2Q4YmFmY2FhYjBmNmQ1ODRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMjIgTm92IDIwMjUgMDA6MjU6MzcgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx NCAxMC8xOV0gZXJyb3Igc2FmZSBmb3IgY2FzdGluZyBudW1lcmljIHRvIG90aGVyIHR5cGVzIHBl cgogcGdfY2FzdAoKc2VsZWN0IGNhc3Rzb3VyY2U6OnJlZ3R5cGUsIGNhc3R0YXJnZXQ6OnJlZ3R5 cGUsIGNhc3RmdW5jLApjYXN0Y29udGV4dCxjYXN0bWV0aG9kLCBwcC5wcm9zcmMsIHBwLnByb25h bWUgZnJvbSBwZ19jYXN0IHBjIGpvaW4gcGdfcHJvYyBwcCBvbgpwcC5vaWQgPSBwYy5jYXN0ZnVu YyBhbmQgcGMuY2FzdGZ1bmMgPiAwCmFuZCBjYXN0c291cmNlOjpyZWd0eXBlID0gJ251bWVyaWMn OjpyZWd0eXBlCm9yZGVyIGJ5IGNhc3Rzb3VyY2U6OnJlZ3R5cGU7CgpjYXN0c291cmNlIHwgICAg Y2FzdHRhcmdldCAgICB8IGNhc3RmdW5jIHwgY2FzdGNvbnRleHQgfCBjYXN0bWV0aG9kIHwgICAg IHByb3NyYyAgICAgfCBwcm9uYW1lCi0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLQogbnVtZXJpYyAgICB8IGJpZ2ludCAgICAgICAgICAgfCAgICAgMTc3OSB8IGEgICAgICAg ICAgIHwgZiAgICAgICAgICB8IG51bWVyaWNfaW50OCAgIHwgaW50OAogbnVtZXJpYyAgICB8IHNt YWxsaW50ICAgICAgICAgfCAgICAgMTc4MyB8IGEgICAgICAgICAgIHwgZiAgICAgICAgICB8IG51 bWVyaWNfaW50MiAgIHwgaW50MgogbnVtZXJpYyAgICB8IGludGVnZXIgICAgICAgICAgfCAgICAg MTc0NCB8IGEgICAgICAgICAgIHwgZiAgICAgICAgICB8IG51bWVyaWNfaW50NCAgIHwgaW50NAog bnVtZXJpYyAgICB8IHJlYWwgICAgICAgICAgICAgfCAgICAgMTc0NSB8IGkgICAgICAgICAgIHwg ZiAgICAgICAgICB8IG51bWVyaWNfZmxvYXQ0IHwgZmxvYXQ0CiBudW1lcmljICAgIHwgZG91Ymxl IHByZWNpc2lvbiB8ICAgICAxNzQ2IHwgaSAgICAgICAgICAgfCBmICAgICAgICAgIHwgbnVtZXJp Y19mbG9hdDggfCBmbG9hdDgKIG51bWVyaWMgICAgfCBtb25leSAgICAgICAgICAgIHwgICAgIDM4 MjQgfCBhICAgICAgICAgICB8IGYgICAgICAgICAgfCBudW1lcmljX2Nhc2ggICB8IG1vbmV5CiBu dW1lcmljICAgIHwgbnVtZXJpYyAgICAgICAgICB8ICAgICAxNzAzIHwgaSAgICAgICAgICAgfCBm ICAgICAgICAgIHwgbnVtZXJpYyAgICAgICAgfCBudW1lcmljCig3IHJvd3MpCgpkaXNjdXNzaW9u OiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQ0p1ZnhIQ016ckhPVz13UmU4TDMwck1oQjNzandBdjFM RTkyOEZhN3N4TXUxVHgtZ0BtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9udW1lcmljLmMgfCA1OCArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KIDEgZmls ZSBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVtZXJpYy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L251bWVyaWMuYwppbmRleCAxZDYyNmFlY2JlNy4uM2U3OGNkZjRlYTAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L251bWVyaWMuYwpAQCAtMTI0NCw3ICsxMjQ0LDggQEAgbnVtZXJpYwkJKFBHX0ZVTkNUSU9OX0FS R1MpCiAJICovCiAJaWYgKE5VTUVSSUNfSVNfU1BFQ0lBTChudW0pKQogCXsKLQkJKHZvaWQpIGFw cGx5X3R5cG1vZF9zcGVjaWFsKG51bSwgdHlwbW9kLCBOVUxMKTsKKwkJaWYgKCFhcHBseV90eXBt b2Rfc3BlY2lhbChudW0sIHR5cG1vZCwgZmNpbmZvLT5jb250ZXh0KSkKKwkJCVBHX1JFVFVSTl9O VUxMKCk7CiAJCVBHX1JFVFVSTl9OVU1FUklDKGR1cGxpY2F0ZV9udW1lcmljKG51bSkpOwogCX0K IApAQCAtMTI5NSw4ICsxMjk2LDkgQEAgbnVtZXJpYwkJKFBHX0ZVTkNUSU9OX0FSR1MpCiAJaW5p dF92YXIoJnZhcik7CiAKIAlzZXRfdmFyX2Zyb21fbnVtKG51bSwgJnZhcik7Ci0JKHZvaWQpIGFw cGx5X3R5cG1vZCgmdmFyLCB0eXBtb2QsIE5VTEwpOwotCW5ldyA9IG1ha2VfcmVzdWx0KCZ2YXIp OworCWlmICghYXBwbHlfdHlwbW9kKCZ2YXIsIHR5cG1vZCwgZmNpbmZvLT5jb250ZXh0KSkKKwkJ UEdfUkVUVVJOX05VTEwoKTsKKwluZXcgPSBtYWtlX3Jlc3VsdF9zYWZlKCZ2YXIsIGZjaW5mby0+ Y29udGV4dCk7CiAKIAlmcmVlX3ZhcigmdmFyKTsKIApAQCAtMzAxOSw3ICszMDIxLDEwIEBAIG51 bWVyaWNfbXVsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJTnVtZXJpYwkJbnVtMiA9IFBHX0dFVEFSR19O VU1FUklDKDEpOwogCU51bWVyaWMJCXJlczsKIAotCXJlcyA9IG51bWVyaWNfbXVsX3NhZmUobnVt MSwgbnVtMiwgTlVMTCk7CisJcmVzID0gbnVtZXJpY19tdWxfc2FmZShudW0xLCBudW0yLCBmY2lu Zm8tPmNvbnRleHQpOworCisJaWYgKHVubGlrZWx5KFNPRlRfRVJST1JfT0NDVVJSRUQoZmNpbmZv LT5jb250ZXh0KSkpCisJCVBHX1JFVFVSTl9OVUxMKCk7CiAKIAlQR19SRVRVUk5fTlVNRVJJQyhy ZXMpOwogfQpAQCAtNDM5Myw5ICs0Mzk4LDE1IEBAIG51bWVyaWNfaW50NF9zYWZlKE51bWVyaWMg bnVtLCBOb2RlICplc2NvbnRleHQpCiBEYXR1bQogbnVtZXJpY19pbnQ0KFBHX0ZVTkNUSU9OX0FS R1MpCiB7CisJaW50MzIJCXJlc3VsdDsKIAlOdW1lcmljCQludW0gPSBQR19HRVRBUkdfTlVNRVJJ QygwKTsKIAotCVBHX1JFVFVSTl9JTlQzMihudW1lcmljX2ludDRfc2FmZShudW0sIE5VTEwpKTsK KwlyZXN1bHQgPSBudW1lcmljX2ludDRfc2FmZShudW0sIGZjaW5mby0+Y29udGV4dCk7CisKKwlp ZiAodW5saWtlbHkoU09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm8tPmNvbnRleHQpKSkKKwkJUEdf UkVUVVJOX05VTEwoKTsKKworCVBHX1JFVFVSTl9JTlQzMihyZXN1bHQpOwogfQogCiAvKgpAQCAt NDQ2Myw5ICs0NDc0LDE1IEBAIG51bWVyaWNfaW50OF9zYWZlKE51bWVyaWMgbnVtLCBOb2RlICpl c2NvbnRleHQpCiBEYXR1bQogbnVtZXJpY19pbnQ4KFBHX0ZVTkNUSU9OX0FSR1MpCiB7CisJaW50 NjQJCXJlc3VsdDsKIAlOdW1lcmljCQludW0gPSBQR19HRVRBUkdfTlVNRVJJQygwKTsKIAotCVBH X1JFVFVSTl9JTlQ2NChudW1lcmljX2ludDhfc2FmZShudW0sIE5VTEwpKTsKKwlyZXN1bHQgPSBu dW1lcmljX2ludDhfc2FmZShudW0sIGZjaW5mby0+Y29udGV4dCk7CisKKwlpZiAodW5saWtlbHko U09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm8tPmNvbnRleHQpKSkKKwkJUEdfUkVUVVJOX05VTEwo KTsKKworCVBHX1JFVFVSTl9JTlQ2NChyZXN1bHQpOwogfQogCiAKQEAgLTQ0ODksMTEgKzQ1MDYs MTEgQEAgbnVtZXJpY19pbnQyKFBHX0ZVTkNUSU9OX0FSR1MpCiAJaWYgKE5VTUVSSUNfSVNfU1BF Q0lBTChudW0pKQogCXsKIAkJaWYgKE5VTUVSSUNfSVNfTkFOKG51bSkpCi0JCQllcmVwb3J0KEVS Uk9SLAorCQkJZXJldHVybihmY2luZm8tPmNvbnRleHQsIChEYXR1bSkgMCwKIAkJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCQkgZXJybXNnKCJjYW5ub3Qg Y29udmVydCBOYU4gdG8gJXMiLCAic21hbGxpbnQiKSkpOwogCQllbHNlCi0JCQllcmVwb3J0KEVS Uk9SLAorCQkJZXJldHVybihmY2luZm8tPmNvbnRleHQsIChEYXR1bSkgMCwKIAkJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCQkgZXJybXNnKCJjYW5ub3Qg Y29udmVydCBpbmZpbml0eSB0byAlcyIsICJzbWFsbGludCIpKSk7CiAJfQpAQCAtNDUwMiwxMiAr NDUxOSwxMiBAQCBudW1lcmljX2ludDIoUEdfRlVOQ1RJT05fQVJHUykKIAlpbml0X3Zhcl9mcm9t X251bShudW0sICZ4KTsKIAogCWlmICghbnVtZXJpY3Zhcl90b19pbnQ2NCgmeCwgJnZhbCkpCi0J CWVyZXBvcnQoRVJST1IsCisJCWVyZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCiAJCQkJIGVy cm1zZygic21hbGxpbnQgb3V0IG9mIHJhbmdlIikpKTsKIAogCWlmICh1bmxpa2VseSh2YWwgPCBQ R19JTlQxNl9NSU4pIHx8IHVubGlrZWx5KHZhbCA+IFBHX0lOVDE2X01BWCkpCi0JCWVyZXBvcnQo RVJST1IsCisJCWVyZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCiAJCQkJIGVycm1zZygic21h bGxpbnQgb3V0IG9mIHJhbmdlIikpKTsKIApAQCAtNDU3MiwxMCArNDU4OSwxNCBAQCBudW1lcmlj X2Zsb2F0OChQR19GVU5DVElPTl9BUkdTKQogCiAJdG1wID0gRGF0dW1HZXRDU3RyaW5nKERpcmVj dEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19vdXQsCiAJCQkJCQkJCQkJCSAgTnVtZXJpY0dldERhdHVt KG51bSkpKTsKLQotCXJlc3VsdCA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEoZmxvYXQ4aW4sIENTdHJp bmdHZXREYXR1bSh0bXApKTsKLQotCXBmcmVlKHRtcCk7CisJaWYgKCFEaXJlY3RJbnB1dEZ1bmN0 aW9uQ2FsbFNhZmUoZmxvYXQ4aW4sIHRtcCwKKwkJCQkJCQkJCSBJbnZhbGlkT2lkLCAtMSwKKwkJ CQkJCQkJCSAoTm9kZSAqKSBmY2luZm8tPmNvbnRleHQsCisJCQkJCQkJCQkgJnJlc3VsdCkpCisJ eworCQlwZnJlZSh0bXApOworCQlQR19SRVRVUk5fTlVMTCgpOworCX0KIAogCVBHX1JFVFVSTl9E QVRVTShyZXN1bHQpOwogfQpAQCAtNDY2Nyw3ICs0Njg4LDE0IEBAIG51bWVyaWNfZmxvYXQ0KFBH X0ZVTkNUSU9OX0FSR1MpCiAJdG1wID0gRGF0dW1HZXRDU3RyaW5nKERpcmVjdEZ1bmN0aW9uQ2Fs bDEobnVtZXJpY19vdXQsCiAJCQkJCQkJCQkJCSAgTnVtZXJpY0dldERhdHVtKG51bSkpKTsKIAot CXJlc3VsdCA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEoZmxvYXQ0aW4sIENTdHJpbmdHZXREYXR1bSh0 bXApKTsKKwlpZiAoIURpcmVjdElucHV0RnVuY3Rpb25DYWxsU2FmZShmbG9hdDRpbiwgdG1wLAor CQkJCQkJCQkJIEludmFsaWRPaWQsIC0xLAorCQkJCQkJCQkJIChOb2RlICopIGZjaW5mby0+Y29u dGV4dCwKKwkJCQkJCQkJCSAmcmVzdWx0KSkKKwl7CisJCXBmcmVlKHRtcCk7CisJCVBHX1JFVFVS Tl9OVUxMKCk7CisJfQogCiAJcGZyZWUodG1wKTsKIAotLSAKMi4zNC4xCgo= --000000000000e7a9ea06457207c0 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0011-error-safe-for-casting-float4-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v14-0011-error-safe-for-casting-float4-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mix9wgaz8 RnJvbSA2YzRjZDk1OGQ5Yjk1MjgwZDk1ZDk5YzFkNTM5YzBiZWM5Y2UxMzhmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMjIgTm92IDIwMjUgMDA6Mjg6MjAgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx NCAxMS8xOV0gZXJyb3Igc2FmZSBmb3IgY2FzdGluZyBmbG9hdDQgdG8gb3RoZXIgdHlwZXMgcGVy CiBwZ19jYXN0CgpzZWxlY3QgY2FzdHNvdXJjZTo6cmVndHlwZSwgY2FzdHRhcmdldDo6cmVndHlw ZSwgY2FzdGZ1bmMsCmNhc3Rjb250ZXh0LGNhc3RtZXRob2QsIHBwLnByb3NyYywgcHAucHJvbmFt ZSBmcm9tIHBnX2Nhc3QgcGMgam9pbiBwZ19wcm9jIHBwIG9uCnBwLm9pZCA9IHBjLmNhc3RmdW5j IGFuZCBwYy5jYXN0ZnVuYyA+IDAKYW5kIGNhc3Rzb3VyY2U6OnJlZ3R5cGUgPSAnZmxvYXQ0Jzo6 cmVndHlwZQpvcmRlciBieSBjYXN0c291cmNlOjpyZWd0eXBlOwoKIGNhc3Rzb3VyY2UgfCAgICBj YXN0dGFyZ2V0ICAgIHwgY2FzdGZ1bmMgfCBjYXN0Y29udGV4dCB8IGNhc3RtZXRob2QgfCAgICAg cHJvc3JjICAgICB8IHByb25hbWUKLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tCiByZWFsICAgICAgIHwgYmlnaW50ICAgICAgICAgICB8ICAgICAgNjUzIHwgYSAgICAgICAg ICAgfCBmICAgICAgICAgIHwgZnRvaTggICAgICAgICAgfCBpbnQ4CiByZWFsICAgICAgIHwgc21h bGxpbnQgICAgICAgICB8ICAgICAgMjM4IHwgYSAgICAgICAgICAgfCBmICAgICAgICAgIHwgZnRv aTIgICAgICAgICAgfCBpbnQyCiByZWFsICAgICAgIHwgaW50ZWdlciAgICAgICAgICB8ICAgICAg MzE5IHwgYSAgICAgICAgICAgfCBmICAgICAgICAgIHwgZnRvaTQgICAgICAgICAgfCBpbnQ0CiBy ZWFsICAgICAgIHwgZG91YmxlIHByZWNpc2lvbiB8ICAgICAgMzExIHwgaSAgICAgICAgICAgfCBm ICAgICAgICAgIHwgZnRvZCAgICAgICAgICAgfCBmbG9hdDgKIHJlYWwgICAgICAgfCBudW1lcmlj ICAgICAgICAgIHwgICAgIDE3NDIgfCBhICAgICAgICAgICB8IGYgICAgICAgICAgfCBmbG9hdDRf bnVtZXJpYyB8IG51bWVyaWMKKDUgcm93cykKCmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vQ0FEa0xNPWZ2MUpmWTRVZmEtamN3d05ialFpeE5WaXNrUThqWnUzVHpfcDY1NmlfNGhRQG1h aWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zsb2F0LmMgICB8IDQgKyst LQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2ludDguYyAgICB8IDIgKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL2FkdC9udW1lcmljLmMgfCAzICsrLQogMyBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMo KyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zs b2F0LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZmxvYXQuYwppbmRleCA4NDk2MzlmZGE5Zi4u ZDVmMTViZmE3ZGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mbG9hdC5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mbG9hdC5jCkBAIC0xMjk4LDcgKzEyOTgsNyBAQCBm dG9pNChQR19GVU5DVElPTl9BUkdTKQogCiAJLyogUmFuZ2UgY2hlY2sgKi8KIAlpZiAodW5saWtl bHkoaXNuYW4obnVtKSB8fCAhRkxPQVQ0X0ZJVFNfSU5fSU5UMzIobnVtKSkpCi0JCWVyZXBvcnQo RVJST1IsCisJCWVyZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCiAJCQkJIGVycm1zZygiaW50 ZWdlciBvdXQgb2YgcmFuZ2UiKSkpOwogCkBAIC0xMzIzLDcgKzEzMjMsNyBAQCBmdG9pMihQR19G VU5DVElPTl9BUkdTKQogCiAJLyogUmFuZ2UgY2hlY2sgKi8KIAlpZiAodW5saWtlbHkoaXNuYW4o bnVtKSB8fCAhRkxPQVQ0X0ZJVFNfSU5fSU5UMTYobnVtKSkpCi0JCWVyZXBvcnQoRVJST1IsCisJ CWVyZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCiAJCQkJIGVycm1zZygic21hbGxpbnQgb3V0 IG9mIHJhbmdlIikpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2ludDgu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9pbnQ4LmMKaW5kZXggZDU2MzFmMzU0NjUuLjY4Mjk5 ZTkxNTEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvaW50OC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9pbnQ4LmMKQEAgLTEzNDIsNyArMTM0Miw3IEBAIGZ0b2k4KFBH X0ZVTkNUSU9OX0FSR1MpCiAKIAkvKiBSYW5nZSBjaGVjayAqLwogCWlmICh1bmxpa2VseShpc25h bihudW0pIHx8ICFGTE9BVDRfRklUU19JTl9JTlQ2NChudW0pKSkKLQkJZXJlcG9ydChFUlJPUiwK KwkJZXJldHVybihmY2luZm8tPmNvbnRleHQsIChEYXR1bSkgMCwKIAkJCQkoZXJyY29kZShFUlJD T0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwKIAkJCQkgZXJybXNnKCJiaWdpbnQgb3V0 IG9mIHJhbmdlIikpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVy aWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMKaW5kZXggM2U3OGNkZjRlYTAu LmM5ZDY2NjlhN2RlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVtZXJpYy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMKQEAgLTQ2NTgsNyArNDY1OCw4 IEBAIGZsb2F0NF9udW1lcmljKFBHX0ZVTkNUSU9OX0FSR1MpCiAJaW5pdF92YXIoJnJlc3VsdCk7 CiAKIAkvKiBBc3N1bWUgd2UgbmVlZCBub3Qgd29ycnkgYWJvdXQgbGVhZGluZy90cmFpbGluZyBz cGFjZXMgKi8KLQkodm9pZCkgc2V0X3Zhcl9mcm9tX3N0cihidWYsIGJ1ZiwgJnJlc3VsdCwgJmVu ZHB0ciwgTlVMTCk7CisJaWYgKCFzZXRfdmFyX2Zyb21fc3RyKGJ1ZiwgYnVmLCAmcmVzdWx0LCAm ZW5kcHRyLCBmY2luZm8tPmNvbnRleHQpKQorCQlQR19SRVRVUk5fTlVMTCgpOwogCiAJcmVzID0g bWFrZV9yZXN1bHQoJnJlc3VsdCk7CiAKLS0gCjIuMzQuMQoK --000000000000e7a9ea06457207c0 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0009-error-safe-for-casting-bigint-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v14-0009-error-safe-for-casting-bigint-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mix9wgb410 RnJvbSBkZDllODMxZDMyYWRiY2ZkZTFiOGE0ZGRlYzdkYTFkNTk3NGQ3MzQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMjIgTm92IDIwMjUgMDA6MjI6MDAgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx NCAwOS8xOV0gZXJyb3Igc2FmZSBmb3IgY2FzdGluZyBiaWdpbnQgdG8gb3RoZXIgdHlwZXMgcGVy CiBwZ19jYXN0CgpzZWxlY3QgY2FzdHNvdXJjZTo6cmVndHlwZSwgY2FzdHRhcmdldDo6cmVndHlw ZSwgY2FzdGZ1bmMsCmNhc3Rjb250ZXh0LGNhc3RtZXRob2QsIHBwLnByb3NyYywgcHAucHJvbmFt ZSBmcm9tIHBnX2Nhc3QgcGMgam9pbiBwZ19wcm9jIHBwIG9uCnBwLm9pZCA9IHBjLmNhc3RmdW5j IGFuZCBwYy5jYXN0ZnVuYyA+IDAKYW5kIGNhc3Rzb3VyY2U6OnJlZ3R5cGUgPSAnYmlnaW50Jzo6 cmVndHlwZQpvcmRlciBieSBjYXN0c291cmNlOjpyZWd0eXBlOwoKIGNhc3Rzb3VyY2UgfCAgICBj YXN0dGFyZ2V0ICAgIHwgY2FzdGZ1bmMgfCBjYXN0Y29udGV4dCB8IGNhc3RtZXRob2QgfCAgICBw cm9zcmMgICAgfCBwcm9uYW1lCi0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0K IGJpZ2ludCAgICAgfCBzbWFsbGludCAgICAgICAgIHwgICAgICA3MTQgfCBhICAgICAgICAgICB8 IGYgICAgICAgICAgfCBpbnQ4MiAgICAgICAgfCBpbnQyCiBiaWdpbnQgICAgIHwgaW50ZWdlciAg ICAgICAgICB8ICAgICAgNDgwIHwgYSAgICAgICAgICAgfCBmICAgICAgICAgIHwgaW50ODQgICAg ICAgIHwgaW50NAogYmlnaW50ICAgICB8IHJlYWwgICAgICAgICAgICAgfCAgICAgIDY1MiB8IGkg ICAgICAgICAgIHwgZiAgICAgICAgICB8IGk4dG9mICAgICAgICB8IGZsb2F0NAogYmlnaW50ICAg ICB8IGRvdWJsZSBwcmVjaXNpb24gfCAgICAgIDQ4MiB8IGkgICAgICAgICAgIHwgZiAgICAgICAg ICB8IGk4dG9kICAgICAgICB8IGZsb2F0OAogYmlnaW50ICAgICB8IG51bWVyaWMgICAgICAgICAg fCAgICAgMTc4MSB8IGkgICAgICAgICAgIHwgZiAgICAgICAgICB8IGludDhfbnVtZXJpYyB8IG51 bWVyaWMKIGJpZ2ludCAgICAgfCBtb25leSAgICAgICAgICAgIHwgICAgIDM4MTIgfCBhICAgICAg ICAgICB8IGYgICAgICAgICAgfCBpbnQ4X2Nhc2ggICAgfCBtb25leQogYmlnaW50ICAgICB8IG9p ZCAgICAgICAgICAgICAgfCAgICAgMTI4NyB8IGkgICAgICAgICAgIHwgZiAgICAgICAgICB8IGk4 dG9vaWQgICAgICB8IG9pZAogYmlnaW50ICAgICB8IHJlZ3Byb2MgICAgICAgICAgfCAgICAgMTI4 NyB8IGkgICAgICAgICAgIHwgZiAgICAgICAgICB8IGk4dG9vaWQgICAgICB8IG9pZAogYmlnaW50 ICAgICB8IHJlZ3Byb2NlZHVyZSAgICAgfCAgICAgMTI4NyB8IGkgICAgICAgICAgIHwgZiAgICAg ICAgICB8IGk4dG9vaWQgICAgICB8IG9pZAogYmlnaW50ICAgICB8IHJlZ29wZXIgICAgICAgICAg fCAgICAgMTI4NyB8IGkgICAgICAgICAgIHwgZiAgICAgICAgICB8IGk4dG9vaWQgICAgICB8IG9p ZAogYmlnaW50ICAgICB8IHJlZ29wZXJhdG9yICAgICAgfCAgICAgMTI4NyB8IGkgICAgICAgICAg IHwgZiAgICAgICAgICB8IGk4dG9vaWQgICAgICB8IG9pZAogYmlnaW50ICAgICB8IHJlZ2NsYXNz ICAgICAgICAgfCAgICAgMTI4NyB8IGkgICAgICAgICAgIHwgZiAgICAgICAgICB8IGk4dG9vaWQg ICAgICB8IG9pZAogYmlnaW50ICAgICB8IHJlZ2NvbGxhdGlvbiAgICAgfCAgICAgMTI4NyB8IGkg ICAgICAgICAgIHwgZiAgICAgICAgICB8IGk4dG9vaWQgICAgICB8IG9pZAogYmlnaW50ICAgICB8 IHJlZ3R5cGUgICAgICAgICAgfCAgICAgMTI4NyB8IGkgICAgICAgICAgIHwgZiAgICAgICAgICB8 IGk4dG9vaWQgICAgICB8IG9pZAogYmlnaW50ICAgICB8IHJlZ2NvbmZpZyAgICAgICAgfCAgICAg MTI4NyB8IGkgICAgICAgICAgIHwgZiAgICAgICAgICB8IGk4dG9vaWQgICAgICB8IG9pZAogYmln aW50ICAgICB8IHJlZ2RpY3Rpb25hcnkgICAgfCAgICAgMTI4NyB8IGkgICAgICAgICAgIHwgZiAg ICAgICAgICB8IGk4dG9vaWQgICAgICB8IG9pZAogYmlnaW50ICAgICB8IHJlZ3JvbGUgICAgICAg ICAgfCAgICAgMTI4NyB8IGkgICAgICAgICAgIHwgZiAgICAgICAgICB8IGk4dG9vaWQgICAgICB8 IG9pZAogYmlnaW50ICAgICB8IHJlZ25hbWVzcGFjZSAgICAgfCAgICAgMTI4NyB8IGkgICAgICAg ICAgIHwgZiAgICAgICAgICB8IGk4dG9vaWQgICAgICB8IG9pZAogYmlnaW50ICAgICB8IHJlZ2Rh dGFiYXNlICAgICAgfCAgICAgMTI4NyB8IGkgICAgICAgICAgIHwgZiAgICAgICAgICB8IGk4dG9v aWQgICAgICB8IG9pZAogYmlnaW50ICAgICB8IGJ5dGVhICAgICAgICAgICAgfCAgICAgNjM2OSB8 IGUgICAgICAgICAgIHwgZiAgICAgICAgICB8IGludDhfYnl0ZWEgICB8IGJ5dGVhCiBiaWdpbnQg ICAgIHwgYml0ICAgICAgICAgICAgICB8ICAgICAyMDc1IHwgZSAgICAgICAgICAgfCBmICAgICAg ICAgIHwgYml0ZnJvbWludDggIHwgYml0CigyMSByb3dzKQoKYWxyZWFkeSBlcnJvciBzYWZlOiBp OHRvZiwgaTh0b2QsIGludDhfbnVtZXJpYywgaW50OF9ieXRlYSwgYml0ZnJvbWludDgKZGlzY3Vz c2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQURrTE09ZnYxSmZZNFVmYS1qY3d3TmJqUWl4TlZp c2tROGpadTNUel9wNjU2aV80aFFAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC91dGls cy9hZHQvaW50OC5jIHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyks IDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2ludDgu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9pbnQ4LmMKaW5kZXggOWNkNDIwYjRiOWQuLmQ1NjMx ZjM1NDY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvaW50OC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9pbnQ4LmMKQEAgLTEyNTEsNyArMTI1MSw3IEBAIGludDg0KFBH X0ZVTkNUSU9OX0FSR1MpCiAJaW50NjQJCWFyZyA9IFBHX0dFVEFSR19JTlQ2NCgwKTsKIAogCWlm ICh1bmxpa2VseShhcmcgPCBQR19JTlQzMl9NSU4pIHx8IHVubGlrZWx5KGFyZyA+IFBHX0lOVDMy X01BWCkpCi0JCWVyZXBvcnQoRVJST1IsCisJCWVyZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0 dW0pIDAsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSks CiAJCQkJIGVycm1zZygiaW50ZWdlciBvdXQgb2YgcmFuZ2UiKSkpOwogCkBAIC0xMjcyLDcgKzEy NzIsNyBAQCBpbnQ4MihQR19GVU5DVElPTl9BUkdTKQogCWludDY0CQlhcmcgPSBQR19HRVRBUkdf SU5UNjQoMCk7CiAKIAlpZiAodW5saWtlbHkoYXJnIDwgUEdfSU5UMTZfTUlOKSB8fCB1bmxpa2Vs eShhcmcgPiBQR19JTlQxNl9NQVgpKQotCQllcmVwb3J0KEVSUk9SLAorCQllcmV0dXJuKGZjaW5m by0+Y29udGV4dCwgKERhdHVtKSAwLAogCQkJCShlcnJjb2RlKEVSUkNPREVfTlVNRVJJQ19WQUxV RV9PVVRfT0ZfUkFOR0UpLAogCQkJCSBlcnJtc2coInNtYWxsaW50IG91dCBvZiByYW5nZSIpKSk7 CiAKQEAgLTEzNTUsNyArMTM1NSw3IEBAIGk4dG9vaWQoUEdfRlVOQ1RJT05fQVJHUykKIAlpbnQ2 NAkJYXJnID0gUEdfR0VUQVJHX0lOVDY0KDApOwogCiAJaWYgKHVubGlrZWx5KGFyZyA8IDApIHx8 IHVubGlrZWx5KGFyZyA+IFBHX1VJTlQzMl9NQVgpKQotCQllcmVwb3J0KEVSUk9SLAorCQllcmV0 dXJuKGZjaW5mby0+Y29udGV4dCwgKERhdHVtKSAwLAogCQkJCShlcnJjb2RlKEVSUkNPREVfTlVN RVJJQ19WQUxVRV9PVVRfT0ZfUkFOR0UpLAogCQkJCSBlcnJtc2coIk9JRCBvdXQgb2YgcmFuZ2Ui KSkpOwogCi0tIAoyLjM0LjEKCg== --000000000000e7a9ea06457207c0 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0008-error-safe-for-casting-integer-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v14-0008-error-safe-for-casting-integer-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mix9wgb611 RnJvbSBmODIxZjk4NWQwNTMyMGJiMGUwNzMyOGU4NDJlOTA5YTcyOGExM2I1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMjIgTm92IDIwMjUgMDA6MjA6MTAgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx NCAwOC8xOV0gZXJyb3Igc2FmZSBmb3IgY2FzdGluZyBpbnRlZ2VyIHRvIG90aGVyIHR5cGVzIHBl cgogcGdfY2FzdAoKc2VsZWN0IGNhc3Rzb3VyY2U6OnJlZ3R5cGUsIGNhc3R0YXJnZXQ6OnJlZ3R5 cGUsIGNhc3RmdW5jLApjYXN0Y29udGV4dCxjYXN0bWV0aG9kLCBwcC5wcm9zcmMsIHBwLnByb25h bWUgZnJvbSBwZ19jYXN0IHBjIGpvaW4gcGdfcHJvYyBwcCBvbgpwcC5vaWQgPSBwYy5jYXN0ZnVu YyBhbmQgcGMuY2FzdGZ1bmMgPiAwCmFuZCBjYXN0c291cmNlOjpyZWd0eXBlID0gJ2ludGVnZXIn OjpyZWd0eXBlCm9yZGVyIGJ5IGNhc3Rzb3VyY2U6OnJlZ3R5cGU7CgogY2FzdHNvdXJjZSB8ICAg IGNhc3R0YXJnZXQgICAgfCBjYXN0ZnVuYyB8IGNhc3Rjb250ZXh0IHwgY2FzdG1ldGhvZCB8ICAg IHByb3NyYyAgICB8IHByb25hbWUKLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LQogaW50ZWdlciAgICB8IGJpZ2ludCAgICAgICAgICAgfCAgICAgIDQ4MSB8IGkgICAgICAgICAg IHwgZiAgICAgICAgICB8IGludDQ4ICAgICAgICB8IGludDgKIGludGVnZXIgICAgfCBzbWFsbGlu dCAgICAgICAgIHwgICAgICAzMTQgfCBhICAgICAgICAgICB8IGYgICAgICAgICAgfCBpNHRvaTIg ICAgICAgfCBpbnQyCiBpbnRlZ2VyICAgIHwgcmVhbCAgICAgICAgICAgICB8ICAgICAgMzE4IHwg aSAgICAgICAgICAgfCBmICAgICAgICAgIHwgaTR0b2YgICAgICAgIHwgZmxvYXQ0CiBpbnRlZ2Vy ICAgIHwgZG91YmxlIHByZWNpc2lvbiB8ICAgICAgMzE2IHwgaSAgICAgICAgICAgfCBmICAgICAg ICAgIHwgaTR0b2QgICAgICAgIHwgZmxvYXQ4CiBpbnRlZ2VyICAgIHwgbnVtZXJpYyAgICAgICAg ICB8ICAgICAxNzQwIHwgaSAgICAgICAgICAgfCBmICAgICAgICAgIHwgaW50NF9udW1lcmljIHwg bnVtZXJpYwogaW50ZWdlciAgICB8IG1vbmV5ICAgICAgICAgICAgfCAgICAgMzgxMSB8IGEgICAg ICAgICAgIHwgZiAgICAgICAgICB8IGludDRfY2FzaCAgICB8IG1vbmV5CiBpbnRlZ2VyICAgIHwg Ym9vbGVhbiAgICAgICAgICB8ICAgICAyNTU3IHwgZSAgICAgICAgICAgfCBmICAgICAgICAgIHwg aW50NF9ib29sICAgIHwgYm9vbAogaW50ZWdlciAgICB8IGJ5dGVhICAgICAgICAgICAgfCAgICAg NjM2OCB8IGUgICAgICAgICAgIHwgZiAgICAgICAgICB8IGludDRfYnl0ZWEgICB8IGJ5dGVhCiBp bnRlZ2VyICAgIHwgImNoYXIiICAgICAgICAgICB8ICAgICAgIDc4IHwgZSAgICAgICAgICAgfCBm ICAgICAgICAgIHwgaTR0b2NoYXIgICAgIHwgY2hhcgogaW50ZWdlciAgICB8IGJpdCAgICAgICAg ICAgICAgfCAgICAgMTY4MyB8IGUgICAgICAgICAgIHwgZiAgICAgICAgICB8IGJpdGZyb21pbnQ0 ICB8IGJpdAooMTAgcm93cykKCm9ubHkgaW50NF9jYXNoLCBpNHRvaTIsIGk0dG9jaGFyIG5lZWQg dGFrZSBjYXJlIG9mIGVycm9yIGhhbmRsaW5nLiAgYnV0IHN1cHBvcnQKZm9yIGNhc2ggZGF0YSB0 eXBlIGlzIG5vdCBlYXN5LCBzbyBvbmx5IGk0dG9pMiwgaTR0b2NoYXIgZnVuY3Rpb24gcmVmYWN0 b3JpbmcuCgpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRGtMTT1mdjFKZlk0VWZh LWpjd3dOYmpRaXhOVmlza1E4alp1M1R6X3A2NTZpXzRoUUBtYWlsLmdtYWlsLmNvbQotLS0KIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9jaGFyLmMgfCAyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQv aW50LmMgIHwgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2NoYXIuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9jaGFyLmMKaW5kZXggMjJkYmZjOTUwYjEuLmU5MDg0NGEyOWYwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvY2hhci5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9jaGFyLmMKQEAgLTE5Miw3ICsxOTIsNyBAQCBpNHRvY2hhcihQR19GVU5DVElP Tl9BUkdTKQogCWludDMyCQlhcmcxID0gUEdfR0VUQVJHX0lOVDMyKDApOwogCiAJaWYgKGFyZzEg PCBTQ0hBUl9NSU4gfHwgYXJnMSA+IFNDSEFSX01BWCkKLQkJZXJlcG9ydChFUlJPUiwKKwkJZXJl dHVybihmY2luZm8tPmNvbnRleHQsIChEYXR1bSkgMCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX05V TUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwKIAkJCQkgZXJybXNnKCJcImNoYXJcIiBvdXQgb2Yg cmFuZ2UiKSkpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvaW50LmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvaW50LmMKaW5kZXggYjU3ODE5ODlhNjQuLmI0NTU5OWQ0MDJk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvaW50LmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2ludC5jCkBAIC0zNTAsNyArMzUwLDcgQEAgaTR0b2kyKFBHX0ZVTkNUSU9O X0FSR1MpCiAJaW50MzIJCWFyZzEgPSBQR19HRVRBUkdfSU5UMzIoMCk7CiAKIAlpZiAodW5saWtl bHkoYXJnMSA8IFNIUlRfTUlOKSB8fCB1bmxpa2VseShhcmcxID4gU0hSVF9NQVgpKQotCQllcmVw b3J0KEVSUk9SLAorCQllcmV0dXJuKGZjaW5mby0+Y29udGV4dCwgKERhdHVtKSAwLAogCQkJCShl cnJjb2RlKEVSUkNPREVfTlVNRVJJQ19WQUxVRV9PVVRfT0ZfUkFOR0UpLAogCQkJCSBlcnJtc2co InNtYWxsaW50IG91dCBvZiByYW5nZSIpKSk7CiAKLS0gCjIuMzQuMQoK --000000000000e7a9ea06457207c0 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0007-error-safe-for-casting-macaddr8-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v14-0007-error-safe-for-casting-macaddr8-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mix9wgb812 RnJvbSAzMmE0MmQwOWExNTNhMGRlZDNjNzZiZjVkZmVmZmM0YmZiZWU5ZjQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMjIgTm92IDIwMjUgMDA6MTc6MTEgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx NCAwNy8xOV0gZXJyb3Igc2FmZSBmb3IgY2FzdGluZyBtYWNhZGRyOCB0byBvdGhlciB0eXBlcyBw ZXIKIHBnX2Nhc3QKCnNlbGVjdCBjYXN0c291cmNlOjpyZWd0eXBlLCBjYXN0dGFyZ2V0OjpyZWd0 eXBlLCBjYXN0ZnVuYywgY2FzdGNvbnRleHQsY2FzdG1ldGhvZCwgcHAucHJvc3JjLCBwcC5wcm9u YW1lCmZyb20gcGdfY2FzdCBwYyBqb2luIHBnX3Byb2MgcHAgb24gcHAub2lkID0gcGMuY2FzdGZ1 bmMKYW5kIHBjLmNhc3RmdW5jID4gMCBhbmQgY2FzdHNvdXJjZTo6cmVndHlwZSA9J21hY2FkZHI4 Jzo6cmVndHlwZQpvcmRlciBieSBjYXN0c291cmNlOjpyZWd0eXBlOwoKIGNhc3Rzb3VyY2UgfCBj YXN0dGFyZ2V0IHwgY2FzdGZ1bmMgfCBjYXN0Y29udGV4dCB8IGNhc3RtZXRob2QgfCAgICAgIHBy b3NyYyAgICAgICB8IHByb25hbWUKLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t CiBtYWNhZGRyOCAgIHwgbWFjYWRkciAgICB8ICAgICA0MTI0IHwgaSAgICAgICAgICAgfCBmICAg ICAgICAgIHwgbWFjYWRkcjh0b21hY2FkZHIgfCBtYWNhZGRyCigxIHJvdykKCmRpc2N1c3Npb246 IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FEa0xNPWZ2MUpmWTRVZmEtamN3d05ialFpeE5WaXNrUThq WnUzVHpfcDY1NmlfNGhRQG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L21hYzguYyB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tYWM4LmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvbWFjOC5jCmluZGV4IDA4ZTQxYmE0ZWVhLi4xYzkwM2YxNTJkZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21hYzguYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvbWFjOC5jCkBAIC01NTAsNyArNTUwLDcgQEAgbWFjYWRkcjh0b21hY2FkZHIoUEdf RlVOQ1RJT05fQVJHUykKIAlyZXN1bHQgPSAobWFjYWRkciAqKSBwYWxsb2MwKHNpemVvZihtYWNh ZGRyKSk7CiAKIAlpZiAoKGFkZHItPmQgIT0gMHhGRikgfHwgKGFkZHItPmUgIT0gMHhGRSkpCi0J CWVyZXBvcnQoRVJST1IsCisJCWVyZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCiAJCQkJIGVy cm1zZygibWFjYWRkcjggZGF0YSBvdXQgb2YgcmFuZ2UgdG8gY29udmVydCB0byBtYWNhZGRyIiks CiAJCQkJIGVycmhpbnQoIk9ubHkgYWRkcmVzc2VzIHRoYXQgaGF2ZSBGRiBhbmQgRkUgYXMgdmFs dWVzIGluIHRoZSAiCi0tIAoyLjM0LjEKCg== --000000000000e7a9ea06457207c0 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0005-error-safe-for-casting-character-varying-to-other-types-per-pg_c.patch" Content-Disposition: attachment; filename="v14-0005-error-safe-for-casting-character-varying-to-other-types-per-pg_c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mix9wgbd14 RnJvbSBiOTQxYjBjZjRjMDM5NGQ4ZGEwYzE3YThkMmNjMTliZmU0M2I1MTY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMjIgTm92IDIwMjUgMDA6MTM6NDUgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx NCAwNS8xOV0gZXJyb3Igc2FmZSBmb3IgY2FzdGluZyBjaGFyYWN0ZXIgdmFyeWluZyB0byBvdGhl cgogdHlwZXMgcGVyIHBnX2Nhc3QKCnNlbGVjdCBjYXN0c291cmNlOjpyZWd0eXBlLCBjYXN0dGFy Z2V0OjpyZWd0eXBlLCBjYXN0ZnVuYywgY2FzdGNvbnRleHQsY2FzdG1ldGhvZCwgcHAucHJvc3Jj LCBwcC5wcm9uYW1lCmZyb20gcGdfY2FzdCBwYyBqb2luIHBnX3Byb2MgcHAgb24gcHAub2lkID0g cGMuY2FzdGZ1bmMgYW5kIHBjLmNhc3RmdW5jID4gMCBhbmQKKGNhc3Rzb3VyY2U6OnJlZ3R5cGUg PSAnY2hhcmFjdGVyIHZhcnlpbmcnOjpyZWd0eXBlKQpvcmRlciBieSBjYXN0c291cmNlOjpyZWd0 eXBlOwoKICAgIGNhc3Rzb3VyY2UgICAgIHwgICAgY2FzdHRhcmdldCAgICAgfCBjYXN0ZnVuYyB8 IGNhc3Rjb250ZXh0IHwgY2FzdG1ldGhvZCB8ICAgIHByb3NyYyAgICAgfCBwcm9uYW1lCi0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCiBjaGFyYWN0ZXIgdmFy eWluZyB8IHJlZ2NsYXNzICAgICAgICAgIHwgICAgIDEwNzkgfCBpICAgICAgICAgICB8IGYgICAg ICAgICAgfCB0ZXh0X3JlZ2NsYXNzIHwgcmVnY2xhc3MKIGNoYXJhY3RlciB2YXJ5aW5nIHwgImNo YXIiICAgICAgICAgICAgfCAgICAgIDk0NCB8IGEgICAgICAgICAgIHwgZiAgICAgICAgICB8IHRl eHRfY2hhciAgICAgfCBjaGFyCiBjaGFyYWN0ZXIgdmFyeWluZyB8IG5hbWUgICAgICAgICAgICAg IHwgICAgIDE0MDAgfCBpICAgICAgICAgICB8IGYgICAgICAgICAgfCB0ZXh0X25hbWUgICAgIHwg bmFtZQogY2hhcmFjdGVyIHZhcnlpbmcgfCB4bWwgICAgICAgICAgICAgICB8ICAgICAyODk2IHwg ZSAgICAgICAgICAgfCBmICAgICAgICAgIHwgdGV4dHRveG1sICAgICB8IHhtbAogY2hhcmFjdGVy IHZhcnlpbmcgfCBjaGFyYWN0ZXIgdmFyeWluZyB8ICAgICAgNjY5IHwgaSAgICAgICAgICAgfCBm ICAgICAgICAgIHwgdmFyY2hhciAgICAgICB8IHZhcmNoYXIKKDUgcm93cykKCnRleHR0b3htbCwg dGV4dF9yZWdjbGFzcyB3YXMgcmVmYWN0b3JlZCBhcyBlcnJvciBzYWZlIGluIHByaW9yIHBhdGNo Lgp0ZXh0X2NoYXIsIHRleHRfbmFtZSBpcyBhbHJlYWR5IGVycm9yIHNhZmUuCnNvIGhlcmUgd2Ug b25seSBuZWVkIGhhbmRsZSBmdW5jdGlvbiAidmFyY2hhciIuCgpkaXNjdXNzaW9uOiBodHRwczov L3Bvc3Rnci5lcy9tL0NBRGtMTT1mdjFKZlk0VWZhLWpjd3dOYmpRaXhOVmlza1E4alp1M1R6X3A2 NTZpXzRoUUBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJjaGFy LmMgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFyY2hhci5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3ZhcmNoYXIuYwppbmRleCA1Y2I1YzhjNDZmOS4uMDhmMWJmNWEyNGQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJjaGFyLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3ZhcmNoYXIuYwpAQCAtNjM0LDcgKzYzNCw3IEBAIHZhcmNoYXIoUEdfRlVO Q1RJT05fQVJHUykKIAl7CiAJCWZvciAoaSA9IG1heG1ibGVuOyBpIDwgbGVuOyBpKyspCiAJCQlp ZiAoc19kYXRhW2ldICE9ICcgJykKLQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCWVyZXR1cm4oZmNp bmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NUUklOR19E QVRBX1JJR0hUX1RSVU5DQVRJT04pLAogCQkJCQkJIGVycm1zZygidmFsdWUgdG9vIGxvbmcgZm9y IHR5cGUgY2hhcmFjdGVyIHZhcnlpbmcoJWQpIiwKIAkJCQkJCQkJbWF4bGVuKSkpOwotLSAKMi4z NC4xCgo= --000000000000e7a9ea06457207c0 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0006-error-safe-for-casting-inet-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v14-0006-error-safe-for-casting-inet-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mix9wgbb13 RnJvbSAxN2JkNzUxNmQ5YjUxZDhhODgyMjdiOGQzZGU0OGMxNWI1MmM4YTkzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMjIgTm92IDIwMjUgMTA6Mjg6NTQgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx NCAwNi8xOV0gZXJyb3Igc2FmZSBmb3IgY2FzdGluZyBpbmV0IHRvIG90aGVyIHR5cGVzIHBlcgog cGdfY2FzdAoKc2VsZWN0IGNhc3Rzb3VyY2U6OnJlZ3R5cGUsIGNhc3R0YXJnZXQ6OnJlZ3R5cGUs IGNhc3RmdW5jLApjYXN0Y29udGV4dCxjYXN0bWV0aG9kLCBwcC5wcm9zcmMsIHBwLnByb25hbWUg ZnJvbSBwZ19jYXN0IHBjIGpvaW4gcGdfcHJvYyBwcCBvbgpwcC5vaWQgPSBwYy5jYXN0ZnVuYyBh bmQgcGMuY2FzdGZ1bmMgPiAwCmFuZCBjYXN0c291cmNlOjpyZWd0eXBlID0gJ2luZXQnOjpyZWd0 eXBlCm9yZGVyIGJ5IGNhc3Rzb3VyY2U6OnJlZ3R5cGU7CgogY2FzdHNvdXJjZSB8ICAgIGNhc3R0 YXJnZXQgICAgIHwgY2FzdGZ1bmMgfCBjYXN0Y29udGV4dCB8IGNhc3RtZXRob2QgfCAgICBwcm9z cmMgICAgfCBwcm9uYW1lCi0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tCiBp bmV0ICAgICAgIHwgY2lkciAgICAgICAgICAgICAgfCAgICAgMTcxNSB8IGEgICAgICAgICAgIHwg ZiAgICAgICAgICB8IGluZXRfdG9fY2lkciB8IGNpZHIKIGluZXQgICAgICAgfCB0ZXh0ICAgICAg ICAgICAgICB8ICAgICAgNzMwIHwgYSAgICAgICAgICAgfCBmICAgICAgICAgIHwgbmV0d29ya19z aG93IHwgdGV4dAogaW5ldCAgICAgICB8IGNoYXJhY3RlciB2YXJ5aW5nIHwgICAgICA3MzAgfCBh ICAgICAgICAgICB8IGYgICAgICAgICAgfCBuZXR3b3JrX3Nob3cgfCB0ZXh0CiBpbmV0ICAgICAg IHwgY2hhcmFjdGVyICAgICAgICAgfCAgICAgIDczMCB8IGEgICAgICAgICAgIHwgZiAgICAgICAg ICB8IG5ldHdvcmtfc2hvdyB8IHRleHQKKDQgcm93cykKCmluZXRfdG9fY2lkciBpcyBhbHJlYWR5 IGVycm9yIHNhZmUuCgpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRGtMTT1mdjFK Zlk0VWZhLWpjd3dOYmpRaXhOVmlza1E4alp1M1R6X3A2NTZpXzRoUUBtYWlsLmdtYWlsLmNvbQot LS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9uZXR3b3JrLmMgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvbmV0d29yay5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L25ldHdvcmsuYwpp bmRleCAzY2IwYWI2ODI5YS4uNjQ4YzhkOTVmNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9uZXR3b3JrLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L25ldHdvcmsuYwpA QCAtMTEzNyw3ICsxMTM3LDcgQEAgbmV0d29ya19zaG93KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlp ZiAocGdfaW5ldF9uZXRfbnRvcChpcF9mYW1pbHkoaXApLCBpcF9hZGRyKGlwKSwgaXBfbWF4Yml0 cyhpcCksCiAJCQkJCQkgdG1wLCBzaXplb2YodG1wKSkgPT0gTlVMTCkKLQkJZXJlcG9ydChFUlJP UiwKKwkJZXJldHVybihmY2luZm8tPmNvbnRleHQsIChEYXR1bSkgMCwKIAkJCQkoZXJyY29kZShF UlJDT0RFX0lOVkFMSURfQklOQVJZX1JFUFJFU0VOVEFUSU9OKSwKIAkJCQkgZXJybXNnKCJjb3Vs ZCBub3QgZm9ybWF0IGluZXQgdmFsdWU6ICVtIikpKTsKIAotLSAKMi4zNC4xCgo= --000000000000e7a9ea06457207c0 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0004-error-safe-for-casting-character-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v14-0004-error-safe-for-casting-character-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mix9wgbf15 RnJvbSA0MzhkMWU1OThiYmE1NDI3ODEzMzgxOTc2ZDVkMTJjZGYyZmRjMTA4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjUgTm92IDIwMjUgMjA6MDc6MjggKzA4MDAKU3ViamVjdDogW1BBVENIIHYx NCAwNC8xOV0gZXJyb3Igc2FmZSBmb3IgY2FzdGluZyBjaGFyYWN0ZXIgdG8gb3RoZXIgdHlwZXMg cGVyCiBwZ19jYXN0CgpzZWxlY3QgY2FzdHNvdXJjZTo6cmVndHlwZSwgY2FzdHRhcmdldDo6cmVn dHlwZSwgY2FzdGZ1bmMsCmNhc3Rjb250ZXh0LGNhc3RtZXRob2QsIHBwLnByb3NyYywgcHAucHJv bmFtZSBmcm9tIHBnX2Nhc3QgcGMgam9pbiBwZ19wcm9jIHBwIG9uCnBwLm9pZCA9IHBjLmNhc3Rm dW5jIGFuZCBwYy5jYXN0ZnVuYyA+IDAKYW5kIGNhc3Rzb3VyY2U6OnJlZ3R5cGUgPSdjaGFyYWN0 ZXInOjpyZWd0eXBlCm9yZGVyIGJ5IGNhc3Rzb3VyY2U6OnJlZ3R5cGU7CgogY2FzdHNvdXJjZSB8 ICAgIGNhc3R0YXJnZXQgICAgIHwgY2FzdGZ1bmMgfCBjYXN0Y29udGV4dCB8IGNhc3RtZXRob2Qg fCAgIHByb3NyYyAgICB8IHByb25hbWUKLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLQogY2hhcmFjdGVyICB8IHRleHQgICAgICAgICAgICAgIHwgICAgICA0MDEgfCBpICAgICAg ICAgICB8IGYgICAgICAgICAgfCBydHJpbTEgICAgICB8IHRleHQKIGNoYXJhY3RlciAgfCBjaGFy YWN0ZXIgdmFyeWluZyB8ICAgICAgNDAxIHwgaSAgICAgICAgICAgfCBmICAgICAgICAgIHwgcnRy aW0xICAgICAgfCB0ZXh0CiBjaGFyYWN0ZXIgIHwgImNoYXIiICAgICAgICAgICAgfCAgICAgIDk0 NCB8IGEgICAgICAgICAgIHwgZiAgICAgICAgICB8IHRleHRfY2hhciAgIHwgY2hhcgogY2hhcmFj dGVyICB8IG5hbWUgICAgICAgICAgICAgIHwgICAgICA0MDkgfCBpICAgICAgICAgICB8IGYgICAg ICAgICAgfCBicGNoYXJfbmFtZSB8IG5hbWUKIGNoYXJhY3RlciAgfCB4bWwgICAgICAgICAgICAg ICB8ICAgICAyODk2IHwgZSAgICAgICAgICAgfCBmICAgICAgICAgIHwgdGV4dHRveG1sICAgfCB4 bWwKIGNoYXJhY3RlciAgfCBjaGFyYWN0ZXIgICAgICAgICB8ICAgICAgNjY4IHwgaSAgICAgICAg ICAgfCBmICAgICAgICAgIHwgYnBjaGFyICAgICAgfCBicGNoYXIKKDYgcm93cykKCm9ubHkgdGV4 dHRveG1sLCBicGNoYXIoUEdfRlVOQ1RJT05fQVJHUykgbmVlZCB0YWtlIGNhcmUgb2YgZXJyb3Ig aGFuZGxpbmcuCm90aGVyIGZ1bmN0aW9ucyBhbHJlYWR5IGVycm9yIHNhZmUuCgpkaXNjdXNzaW9u OiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRGtMTT1mdjFKZlk0VWZhLWpjd3dOYmpRaXhOVmlza1E4 alp1M1R6X3A2NTZpXzRoUUBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cv bmFtZXNwYWNlLmMgfCA1OCArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIHNyYy9i YWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMgfCAxMyArKysrKystLQogc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3ZhcmxlbmEuYyB8IDEwICsrKystLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3htbC5j ICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oIHwgIDYgKysrKwog c3JjL2luY2x1ZGUvdXRpbHMvdmFybGVuYS5oICAgICB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwg NzMgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9uYW1lc3BhY2UuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMK aW5kZXggZDIzNDc0ZGE0ZmIuLmJlZjJkZTVkZDM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL25hbWVzcGFjZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMK QEAgLTQ0MCw2ICs0NDAsMTYgQEAgT2lkCiBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWQoY29uc3Qg UmFuZ2VWYXIgKnJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAkJCQkJCSB1aW50MzIgZmxh Z3MsCiAJCQkJCQkgUmFuZ2VWYXJHZXRSZWxpZENhbGxiYWNrIGNhbGxiYWNrLCB2b2lkICpjYWxs YmFja19hcmcpCit7CisJcmV0dXJuIFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZFNhZmUocmVsYXRp b24sIGxvY2ttb2RlLCBmbGFncywKKwkJCQkJCQkJCQljYWxsYmFjaywgY2FsbGJhY2tfYXJnLAor CQkJCQkJCQkJCU5VTEwpOworfQorCitPaWQKK1JhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZFNhZmUo Y29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSwgdWludDMyIGZsYWdz LAorCQkJCQkJCSBSYW5nZVZhckdldFJlbGlkQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKmNhbGxi YWNrX2FyZywKKwkJCQkJCQkgTm9kZSAqZXNjb250ZXh0KQogewogCXVpbnQ2NAkJaW52YWxfY291 bnQ7CiAJT2lkCQkJcmVsSWQ7CkBAIC00NTYsNyArNDY2LDcgQEAgUmFuZ2VWYXJHZXRSZWxpZEV4 dGVuZGVkKGNvbnN0IFJhbmdlVmFyICpyZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUsCiAJaWYg KHJlbGF0aW9uLT5jYXRhbG9nbmFtZSkKIAl7CiAJCWlmIChzdHJjbXAocmVsYXRpb24tPmNhdGFs b2duYW1lLCBnZXRfZGF0YWJhc2VfbmFtZShNeURhdGFiYXNlSWQpKSAhPSAwKQotCQkJZXJlcG9y dChFUlJPUiwKKwkJCWVyZXR1cm4oZXNjb250ZXh0LCBJbnZhbGlkT2lkLAogCQkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCSBlcnJtc2coImNyb3NzLWRh dGFiYXNlIHJlZmVyZW5jZXMgYXJlIG5vdCBpbXBsZW1lbnRlZDogXCIlcy4lcy4lc1wiIiwKIAkJ CQkJCQlyZWxhdGlvbi0+Y2F0YWxvZ25hbWUsIHJlbGF0aW9uLT5zY2hlbWFuYW1lLApAQCAtNTEz LDcgKzUyMyw3IEBAIFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChjb25zdCBSYW5nZVZhciAqcmVs YXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLAogCQkJCQkgKiByZXR1cm4gSW52YWxpZE9pZC4KIAkJ CQkJICovCiAJCQkJCWlmIChuYW1lc3BhY2VJZCAhPSBteVRlbXBOYW1lc3BhY2UpCi0JCQkJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkJZXJldHVybihlc2NvbnRleHQsIEludmFsaWRPaWQsCiAJCQkJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9UQUJMRV9ERUZJTklUSU9OKSwKIAkJCQkJCQkJ IGVycm1zZygidGVtcG9yYXJ5IHRhYmxlcyBjYW5ub3Qgc3BlY2lmeSBhIHNjaGVtYSBuYW1lIikp KTsKIAkJCQl9CkBAIC01OTMsMTMgKzYwMywyMyBAQCBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWQo Y29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAkJewogCQkJaW50 CQkJZWxldmVsID0gKGZsYWdzICYgUlZSX1NLSVBfTE9DS0VEKSA/IERFQlVHMSA6IEVSUk9SOwog Ci0JCQlpZiAocmVsYXRpb24tPnNjaGVtYW5hbWUpCi0JCQkJZXJlcG9ydChlbGV2ZWwsCisJCQlp ZiAocmVsYXRpb24tPnNjaGVtYW5hbWUgJiYgZWxldmVsID09IERFQlVHMSkKKwkJCQllcmVwb3J0 KERFQlVHMSwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfTE9DS19OT1RfQVZBSUxBQkxFKSwKIAkJ CQkJCSBlcnJtc2coImNvdWxkIG5vdCBvYnRhaW4gbG9jayBvbiByZWxhdGlvbiBcIiVzLiVzXCIi LAogCQkJCQkJCQlyZWxhdGlvbi0+c2NoZW1hbmFtZSwgcmVsYXRpb24tPnJlbG5hbWUpKSk7Ci0J CQllbHNlCi0JCQkJZXJlcG9ydChlbGV2ZWwsCisJCQllbHNlIGlmIChyZWxhdGlvbi0+c2NoZW1h bmFtZSAmJiBlbGV2ZWwgPT0gRVJST1IpCisJCQkJZXJldHVybihlc2NvbnRleHQsIEludmFsaWRP aWQsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfTE9DS19OT1RfQVZBSUxBQkxFKSwKKwkJCQkJCWVy cm1zZygiY291bGQgbm90IG9idGFpbiBsb2NrIG9uIHJlbGF0aW9uIFwiJXMuJXNcIiIsCisJCQkJ CQkJICAgcmVsYXRpb24tPnNjaGVtYW5hbWUsIHJlbGF0aW9uLT5yZWxuYW1lKSk7CisJCQllbHNl IGlmIChlbGV2ZWwgPT0gREVCVUcxKQorCQkJCWVyZXBvcnQoREVCVUcxLAorCQkJCQkJZXJyY29k ZShFUlJDT0RFX0xPQ0tfTk9UX0FWQUlMQUJMRSksCisJCQkJCQllcnJtc2coImNvdWxkIG5vdCBv YnRhaW4gbG9jayBvbiByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkJCSAgIHJlbGF0aW9uLT5yZWxu YW1lKSk7CisJCQllbHNlIGlmIChlbGV2ZWwgPT0gRVJST1IpCisJCQkJZXJldHVybihlc2NvbnRl eHQsIEludmFsaWRPaWQsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0xPQ0tfTk9UX0FWQUlMQUJM RSksCiAJCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qgb2J0YWluIGxvY2sgb24gcmVsYXRpb24gXCIl c1wiIiwKIAkJCQkJCQkJcmVsYXRpb24tPnJlbG5hbWUpKSk7CkBAIC02MjYsMTMgKzY0NiwyMyBA QCBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWQoY29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9uLCBMT0NL TU9ERSBsb2NrbW9kZSwKIAl7CiAJCWludAkJCWVsZXZlbCA9IG1pc3Npbmdfb2sgPyBERUJVRzEg OiBFUlJPUjsKIAotCQlpZiAocmVsYXRpb24tPnNjaGVtYW5hbWUpCi0JCQllcmVwb3J0KGVsZXZl bCwKKwkJaWYgKHJlbGF0aW9uLT5zY2hlbWFuYW1lICYmIGVsZXZlbCA9PSBERUJVRzEpCisJCQll cmVwb3J0KERFQlVHMSwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfVEFCTEUpLAog CQkJCQkgZXJybXNnKCJyZWxhdGlvbiBcIiVzLiVzXCIgZG9lcyBub3QgZXhpc3QiLAogCQkJCQkJ CXJlbGF0aW9uLT5zY2hlbWFuYW1lLCByZWxhdGlvbi0+cmVsbmFtZSkpKTsKLQkJZWxzZQotCQkJ ZXJlcG9ydChlbGV2ZWwsCisJCWVsc2UgaWYgKHJlbGF0aW9uLT5zY2hlbWFuYW1lICYmIGVsZXZl bCA9PSBFUlJPUikKKwkJCWVyZXR1cm4oZXNjb250ZXh0LCBJbnZhbGlkT2lkLAorCQkJCQllcnJj b2RlKEVSUkNPREVfVU5ERUZJTkVEX1RBQkxFKSwKKwkJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVz LiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJICAgcmVsYXRpb24tPnNjaGVtYW5hbWUsIHJl bGF0aW9uLT5yZWxuYW1lKSk7CisJCWVsc2UgaWYgKGVsZXZlbCA9PSBERUJVRzEpCisJCQllcmVw b3J0KERFQlVHMSwKKwkJCQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9UQUJMRSksCisJCQkJ CWVycm1zZygicmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCSAgIHJlbGF0 aW9uLT5yZWxuYW1lKSk7CisJCWVsc2UgaWYgKGVsZXZlbCA9PSBFUlJPUikKKwkJCWVyZXR1cm4o ZXNjb250ZXh0LCBJbnZhbGlkT2lkLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9U QUJMRSksCiAJCQkJCSBlcnJtc2coInJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCiAJ CQkJCQkJcmVsYXRpb24tPnJlbG5hbWUpKSk7CkBAIC0zNjIyLDYgKzM2NTIsMTIgQEAgZ2V0X25h bWVzcGFjZV9vaWQoY29uc3QgY2hhciAqbnNwbmFtZSwgYm9vbCBtaXNzaW5nX29rKQogICovCiBS YW5nZVZhciAqCiBtYWtlUmFuZ2VWYXJGcm9tTmFtZUxpc3QoY29uc3QgTGlzdCAqbmFtZXMpCit7 CisJcmV0dXJuIG1ha2VSYW5nZVZhckZyb21OYW1lTGlzdFNhZmUobmFtZXMsIE5VTEwpOworfQor CitSYW5nZVZhciAqCittYWtlUmFuZ2VWYXJGcm9tTmFtZUxpc3RTYWZlKGNvbnN0IExpc3QgKm5h bWVzLCBOb2RlICplc2NvbnRleHQpCiB7CiAJUmFuZ2VWYXIgICAqcmVsID0gbWFrZVJhbmdlVmFy KE5VTEwsIE5VTEwsIC0xKTsKIApAQCAtMzY0MCw3ICszNjc2LDcgQEAgbWFrZVJhbmdlVmFyRnJv bU5hbWVMaXN0KGNvbnN0IExpc3QgKm5hbWVzKQogCQkJcmVsLT5yZWxuYW1lID0gc3RyVmFsKGx0 aGlyZChuYW1lcykpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6Ci0JCQllcmVwb3J0KEVSUk9SLAor CQkJZXJldHVybihlc2NvbnRleHQsIE5VTEwsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFY X0VSUk9SKSwKIAkJCQkJIGVycm1zZygiaW1wcm9wZXIgcmVsYXRpb24gbmFtZSAodG9vIG1hbnkg ZG90dGVkIG5hbWVzKTogJXMiLAogCQkJCQkJCU5hbWVMaXN0VG9TdHJpbmcobmFtZXMpKSkpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JlZ3Byb2MuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9yZWdwcm9jLmMKaW5kZXggZTVjMjI0NmYyYzkuLjU5Y2M1MDhmODA1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmVncHJvYy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9yZWdwcm9jLmMKQEAgLTE5MDEsMTIgKzE5MDEsMTkgQEAgdGV4dF9yZWdjbGFz cyhQR19GVU5DVElPTl9BUkdTKQogCXRleHQJICAgKnJlbG5hbWUgPSBQR19HRVRBUkdfVEVYVF9Q UCgwKTsKIAlPaWQJCQlyZXN1bHQ7CiAJUmFuZ2VWYXIgICAqcnY7CisJTGlzdAkgICAqbmFtZWxp c3Q7CiAKLQlydiA9IG1ha2VSYW5nZVZhckZyb21OYW1lTGlzdCh0ZXh0VG9RdWFsaWZpZWROYW1l TGlzdChyZWxuYW1lKSk7CisJbmFtZWxpc3QgPSB0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdFNhZmUo cmVsbmFtZSwgZmNpbmZvLT5jb250ZXh0KTsKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChmY2lu Zm8tPmNvbnRleHQpKQorCQlQR19SRVRVUk5fTlVMTCgpOworCisJcnYgPSBtYWtlUmFuZ2VWYXJG cm9tTmFtZUxpc3RTYWZlKG5hbWVsaXN0LCBmY2luZm8tPmNvbnRleHQpOworCWlmIChTT0ZUX0VS Uk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJCVBHX1JFVFVSTl9OVUxMKCk7CiAKIAkv KiBXZSBtaWdodCBub3QgZXZlbiBoYXZlIHBlcm1pc3Npb25zIG9uIHRoaXMgcmVsYXRpb247IGRv bid0IGxvY2sgaXQuICovCi0JcmVzdWx0ID0gUmFuZ2VWYXJHZXRSZWxpZChydiwgTm9Mb2NrLCBm YWxzZSk7Ci0KKwlyZXN1bHQgPSBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWRTYWZlKHJ2LCBOb0xv Y2ssIDAsIE5VTEwsIE5VTEwsCisJCQkJCQkJCQkJICBmY2luZm8tPmNvbnRleHQpOwogCVBHX1JF VFVSTl9PSUQocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3ZhcmxlbmEuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKaW5kZXggZjIwMmI4 ZGY0ZTIuLmM0YjhmNjFmNWQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFy bGVuYS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKQEAgLTI2OTUsNiAr MjY5NSwxMiBAQCBuYW1lX3RleHQoUEdfRlVOQ1RJT05fQVJHUykKICAqLwogTGlzdCAqCiB0ZXh0 VG9RdWFsaWZpZWROYW1lTGlzdCh0ZXh0ICp0ZXh0dmFsKQoreworCXJldHVybiB0ZXh0VG9RdWFs aWZpZWROYW1lTGlzdFNhZmUodGV4dHZhbCwgTlVMTCk7Cit9CisKK0xpc3QgKgordGV4dFRvUXVh bGlmaWVkTmFtZUxpc3RTYWZlKHRleHQgKnRleHR2YWwsIE5vZGUgKmVzY29udGV4dCkKIHsKIAlj aGFyCSAgICpyYXduYW1lOwogCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKQEAgLTI3MDYsMTIgKzI3 MTIsMTIgQEAgdGV4dFRvUXVhbGlmaWVkTmFtZUxpc3QodGV4dCAqdGV4dHZhbCkKIAlyYXduYW1l ID0gdGV4dF90b19jc3RyaW5nKHRleHR2YWwpOwogCiAJaWYgKCFTcGxpdElkZW50aWZpZXJTdHJp bmcocmF3bmFtZSwgJy4nLCAmbmFtZWxpc3QpKQotCQllcmVwb3J0KEVSUk9SLAorCQllcmV0dXJu KGVzY29udGV4dCwgTklMLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9OQU1FKSwKIAkJ CQkgZXJybXNnKCJpbnZhbGlkIG5hbWUgc3ludGF4IikpKTsKIAogCWlmIChuYW1lbGlzdCA9PSBO SUwpCi0JCWVyZXBvcnQoRVJST1IsCisJCWVyZXR1cm4oZXNjb250ZXh0LCBOSUwsCiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX05BTUUpLAogCQkJCSBlcnJtc2coImludmFsaWQgbmFtZSBz eW50YXgiKSkpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQveG1sLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQveG1sLmMKaW5kZXggOWU4MDE2NDU2Y2UuLjhkZTFmMWZjNzQx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQveG1sLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3htbC5jCkBAIC0xMDQzLDcgKzEwNDMsNyBAQCB4bWxwYXJzZSh0ZXh0ICpk YXRhLCBYbWxPcHRpb25UeXBlIHhtbG9wdGlvbl9hcmcsIGJvb2wgcHJlc2VydmVfd2hpdGVzcGFj ZSwgTm9kZQogCiAJcmV0dXJuICh4bWx0eXBlICopIGRhdGE7CiAjZWxzZQotCWVyZXR1cm4oZXNj b250ZXh0LCBOVUxMCisJZXJldHVybihlc2NvbnRleHQsIE5VTEwsCiAJCQllcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCWVycm1zZygidW5zdXBwb3J0ZWQgWE1MIGZl YXR1cmUiKSwKIAkJCWVycmRldGFpbCgiVGhpcyBmdW5jdGlvbmFsaXR5IHJlcXVpcmVzIHRoZSBz ZXJ2ZXIgdG8gYmUgYnVpbHQgd2l0aCBsaWJ4bWwgc3VwcG9ydC4iKSk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1l c3BhY2UuaAppbmRleCBmMTQyM2YyOGMzMi4uYWI2MWFmNTVkZGMgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNlLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1l c3BhY2UuaApAQCAtMTAzLDYgKzEwMywxMSBAQCBleHRlcm4gT2lkCVJhbmdlVmFyR2V0UmVsaWRF eHRlbmRlZChjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiAJCQkJCQkJCQkgTE9DS01PREUgbG9j a21vZGUsIHVpbnQzMiBmbGFncywKIAkJCQkJCQkJCSBSYW5nZVZhckdldFJlbGlkQ2FsbGJhY2sg Y2FsbGJhY2ssCiAJCQkJCQkJCQkgdm9pZCAqY2FsbGJhY2tfYXJnKTsKK2V4dGVybiBPaWQgUmFu Z2VWYXJHZXRSZWxpZEV4dGVuZGVkU2FmZShjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCisJCQkJ CQkJCQkJTE9DS01PREUgbG9ja21vZGUsIHVpbnQzMiBmbGFncywKKwkJCQkJCQkJCQlSYW5nZVZh ckdldFJlbGlkQ2FsbGJhY2sgY2FsbGJhY2ssCisJCQkJCQkJCQkJdm9pZCAqY2FsbGJhY2tfYXJn LAorCQkJCQkJCQkJCU5vZGUgKmVzY29udGV4dCk7CiBleHRlcm4gT2lkCVJhbmdlVmFyR2V0Q3Jl YXRpb25OYW1lc3BhY2UoY29uc3QgUmFuZ2VWYXIgKm5ld1JlbGF0aW9uKTsKIGV4dGVybiBPaWQJ UmFuZ2VWYXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKFJhbmdlVmFyICpyZWxhdGlvbiwK IAkJCQkJCQkJCQkJCSBMT0NLTU9ERSBsb2NrbW9kZSwKQEAgLTE2OCw2ICsxNzMsNyBAQCBleHRl cm4gT2lkCUxvb2t1cENyZWF0aW9uTmFtZXNwYWNlKGNvbnN0IGNoYXIgKm5zcG5hbWUpOwogZXh0 ZXJuIHZvaWQgQ2hlY2tTZXROYW1lc3BhY2UoT2lkIG9sZE5zcE9pZCwgT2lkIG5zcE9pZCk7CiBl eHRlcm4gT2lkCVF1YWxpZmllZE5hbWVHZXRDcmVhdGlvbk5hbWVzcGFjZShjb25zdCBMaXN0ICpu YW1lcywgY2hhciAqKm9iam5hbWVfcCk7CiBleHRlcm4gUmFuZ2VWYXIgKm1ha2VSYW5nZVZhckZy b21OYW1lTGlzdChjb25zdCBMaXN0ICpuYW1lcyk7CitleHRlcm4gUmFuZ2VWYXIgKm1ha2VSYW5n ZVZhckZyb21OYW1lTGlzdFNhZmUoY29uc3QgTGlzdCAqbmFtZXMsIE5vZGUgKmVzY29udGV4dCk7 CiBleHRlcm4gY2hhciAqTmFtZUxpc3RUb1N0cmluZyhjb25zdCBMaXN0ICpuYW1lcyk7CiBleHRl cm4gY2hhciAqTmFtZUxpc3RUb1F1b3RlZFN0cmluZyhjb25zdCBMaXN0ICpuYW1lcyk7CiAKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3ZhcmxlbmEuaCBiL3NyYy9pbmNsdWRlL3V0aWxz L3ZhcmxlbmEuaAppbmRleCBkYjlmZGY3Mjk0MS4uMGNmMDFhZTUyODEgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3ZhcmxlbmEuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy92YXJsZW5h LmgKQEAgLTI3LDYgKzI3LDcgQEAgZXh0ZXJuIGludAl2YXJzdHJfbGV2ZW5zaHRlaW5fbGVzc19l cXVhbChjb25zdCBjaGFyICpzb3VyY2UsIGludCBzbGVuLAogCQkJCQkJCQkJCSAgaW50IGluc19j LCBpbnQgZGVsX2MsIGludCBzdWJfYywKIAkJCQkJCQkJCQkgIGludCBtYXhfZCwgYm9vbCB0cnVz dGVkKTsKIGV4dGVybiBMaXN0ICp0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdCh0ZXh0ICp0ZXh0dmFs KTsKK2V4dGVybiBMaXN0ICp0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdFNhZmUodGV4dCAqdGV4dHZh bCwgTm9kZSAqZXNjb250ZXh0KTsKIGV4dGVybiBib29sIFNwbGl0SWRlbnRpZmllclN0cmluZyhj aGFyICpyYXdzdHJpbmcsIGNoYXIgc2VwYXJhdG9yLAogCQkJCQkJCQkgIExpc3QgKipuYW1lbGlz dCk7CiBleHRlcm4gYm9vbCBTcGxpdERpcmVjdG9yaWVzU3RyaW5nKGNoYXIgKnJhd3N0cmluZywg Y2hhciBzZXBhcmF0b3IsCi0tIAoyLjM0LjEKCg== --000000000000e7a9ea06457207c0 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0003-error-safe-for-casting-character-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v14-0003-error-safe-for-casting-character-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mix9wgbh16 RnJvbSA2ODM1YjljNjgzM2IzNTNmNzY0ZjFkNjhlNjdlMDY5MmViOWNiM2MxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMjQgTm92IDIwMjUgMTI6NTI6MTYgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx NCAwMy8xOV0gZXJyb3Igc2FmZSBmb3IgY2FzdGluZyBjaGFyYWN0ZXIgdG8gb3RoZXIgdHlwZXMg cGVyCiBwZ19jYXN0CgpzZWxlY3QgY2FzdHNvdXJjZTo6cmVndHlwZSwgY2FzdHRhcmdldDo6cmVn dHlwZSwgY2FzdGZ1bmMsCmNhc3Rjb250ZXh0LGNhc3RtZXRob2QsIHBwLnByb3NyYywgcHAucHJv bmFtZSBmcm9tIHBnX2Nhc3QgcGMgam9pbiBwZ19wcm9jIHBwIG9uCnBwLm9pZCA9IHBjLmNhc3Rm dW5jIGFuZCBwYy5jYXN0ZnVuYyA+IDAKYW5kIGNhc3Rzb3VyY2U6OnJlZ3R5cGUgPSdjaGFyYWN0 ZXInOjpyZWd0eXBlCm9yZGVyIGJ5IGNhc3Rzb3VyY2U6OnJlZ3R5cGU7CgogY2FzdHNvdXJjZSB8 ICAgIGNhc3R0YXJnZXQgICAgIHwgY2FzdGZ1bmMgfCBjYXN0Y29udGV4dCB8IGNhc3RtZXRob2Qg fCAgIHByb3NyYyAgICB8IHByb25hbWUKLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLQogY2hhcmFjdGVyICB8IHRleHQgICAgICAgICAgICAgIHwgICAgICA0MDEgfCBpICAgICAg ICAgICB8IGYgICAgICAgICAgfCBydHJpbTEgICAgICB8IHRleHQKIGNoYXJhY3RlciAgfCBjaGFy YWN0ZXIgdmFyeWluZyB8ICAgICAgNDAxIHwgaSAgICAgICAgICAgfCBmICAgICAgICAgIHwgcnRy aW0xICAgICAgfCB0ZXh0CiBjaGFyYWN0ZXIgIHwgImNoYXIiICAgICAgICAgICAgfCAgICAgIDk0 NCB8IGEgICAgICAgICAgIHwgZiAgICAgICAgICB8IHRleHRfY2hhciAgIHwgY2hhcgogY2hhcmFj dGVyICB8IG5hbWUgICAgICAgICAgICAgIHwgICAgICA0MDkgfCBpICAgICAgICAgICB8IGYgICAg ICAgICAgfCBicGNoYXJfbmFtZSB8IG5hbWUKIGNoYXJhY3RlciAgfCB4bWwgICAgICAgICAgICAg ICB8ICAgICAyODk2IHwgZSAgICAgICAgICAgfCBmICAgICAgICAgIHwgdGV4dHRveG1sICAgfCB4 bWwKIGNoYXJhY3RlciAgfCBjaGFyYWN0ZXIgICAgICAgICB8ICAgICAgNjY4IHwgaSAgICAgICAg ICAgfCBmICAgICAgICAgIHwgYnBjaGFyICAgICAgfCBicGNoYXIKKDYgcm93cykKCm9ubHkgdGV4 dHRveG1sLCBicGNoYXIoUEdfRlVOQ1RJT05fQVJHUykgbmVlZCB0YWtlIGNhcmUgb2YgZXJyb3Ig aGFuZGxpbmcuCm90aGVyIGZ1bmN0aW9ucyBhbHJlYWR5IGVycm9yIHNhZmUuCgpkaXNjdXNzaW9u OiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRGtMTT1mdjFKZlk0VWZhLWpjd3dOYmpRaXhOVmlza1E4 alp1M1R6X3A2NTZpXzRoUUBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNFeHBySW50ZXJwLmMgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmNoYXIu YyAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQveG1sLmMgICAgICAgICAgIHwg MTggKysrKysrKysrKysrLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy94bWwuaCAgICAgICAgICAg ICAgIHwgIDIgKy0KIDQgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwppbmRleCA1ZTdiZDkzM2Fm Yy4uMWQ4OGNkZDJjYjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBy SW50ZXJwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwpAQCAt NDU0Miw3ICs0NTQyLDcgQEAgRXhlY0V2YWxYbWxFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJF dmFsU3RlcCAqb3ApCiAKIAkJCQkqb3AtPnJlc3ZhbHVlID0gUG9pbnRlckdldERhdHVtKHhtbHBh cnNlKGRhdGEsCiAJCQkJCQkJCQkJCQkJCSB4ZXhwci0+eG1sb3B0aW9uLAotCQkJCQkJCQkJCQkJ CQkgcHJlc2VydmVfd2hpdGVzcGFjZSkpOworCQkJCQkJCQkJCQkJCQkgcHJlc2VydmVfd2hpdGVz cGFjZSwgTlVMTCkpOwogCQkJCSpvcC0+cmVzbnVsbCA9IGZhbHNlOwogCQkJfQogCQkJYnJlYWs7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFyY2hhci5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3ZhcmNoYXIuYwppbmRleCAzZjQwYzlkYTFhMC4uNWNiNWM4YzQ2ZjkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJjaGFyLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3ZhcmNoYXIuYwpAQCAtMzA3LDcgKzMwNyw3IEBAIGJwY2hhcihQR19GVU5D VElPTl9BUkdTKQogCQl7CiAJCQlmb3IgKGkgPSBtYXhtYmxlbjsgaSA8IGxlbjsgaSsrKQogCQkJ CWlmIChzW2ldICE9ICcgJykKLQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJldHVybihmY2lu Zm8tPmNvbnRleHQsIChEYXR1bSkgMCwKIAkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NUUklOR19E QVRBX1JJR0hUX1RSVU5DQVRJT04pLAogCQkJCQkJCSBlcnJtc2coInZhbHVlIHRvbyBsb25nIGZv ciB0eXBlIGNoYXJhY3RlciglZCkiLAogCQkJCQkJCQkJbWF4bGVuKSkpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3htbC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3htbC5j CmluZGV4IDQxZTc3NTU3MGVjLi45ZTgwMTY0NTZjZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3htbC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC94bWwuYwpAQCAtNjU5 LDcgKzY1OSw3IEBAIHRleHR0b3htbChQR19GVU5DVElPTl9BUkdTKQogewogCXRleHQJICAgKmRh dGEgPSBQR19HRVRBUkdfVEVYVF9QUCgwKTsKIAotCVBHX1JFVFVSTl9YTUxfUCh4bWxwYXJzZShk YXRhLCB4bWxvcHRpb24sIHRydWUpKTsKKwlQR19SRVRVUk5fWE1MX1AoeG1scGFyc2UoZGF0YSwg eG1sb3B0aW9uLCB0cnVlLCBmY2luZm8tPmNvbnRleHQpKTsKIH0KIAogCkBAIC0xMDI4LDE5ICsx MDI4LDI1IEBAIHhtbGVsZW1lbnQoWG1sRXhwciAqeGV4cHIsCiAKIAogeG1sdHlwZSAqCi14bWxw YXJzZSh0ZXh0ICpkYXRhLCBYbWxPcHRpb25UeXBlIHhtbG9wdGlvbl9hcmcsIGJvb2wgcHJlc2Vy dmVfd2hpdGVzcGFjZSkKK3htbHBhcnNlKHRleHQgKmRhdGEsIFhtbE9wdGlvblR5cGUgeG1sb3B0 aW9uX2FyZywgYm9vbCBwcmVzZXJ2ZV93aGl0ZXNwYWNlLCBOb2RlICplc2NvbnRleHQpCiB7CiAj aWZkZWYgVVNFX0xJQlhNTAogCXhtbERvY1B0cglkb2M7CiAKIAlkb2MgPSB4bWxfcGFyc2UoZGF0 YSwgeG1sb3B0aW9uX2FyZywgcHJlc2VydmVfd2hpdGVzcGFjZSwKLQkJCQkJR2V0RGF0YWJhc2VF bmNvZGluZygpLCBOVUxMLCBOVUxMLCBOVUxMKTsKLQl4bWxGcmVlRG9jKGRvYyk7CisJCQkJCUdl dERhdGFiYXNlRW5jb2RpbmcoKSwgTlVMTCwgTlVMTCwgZXNjb250ZXh0KTsKKwlpZiAoZG9jKQor CQl4bWxGcmVlRG9jKGRvYyk7CisKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRleHQp KQorCQlyZXR1cm4gTlVMTDsKIAogCXJldHVybiAoeG1sdHlwZSAqKSBkYXRhOwogI2Vsc2UKLQlO T19YTUxfU1VQUE9SVCgpOwotCXJldHVybiBOVUxMOworCWVyZXR1cm4oZXNjb250ZXh0LCBOVUxM CisJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCWVycm1zZygi dW5zdXBwb3J0ZWQgWE1MIGZlYXR1cmUiKSwKKwkJCWVycmRldGFpbCgiVGhpcyBmdW5jdGlvbmFs aXR5IHJlcXVpcmVzIHRoZSBzZXJ2ZXIgdG8gYmUgYnVpbHQgd2l0aCBsaWJ4bWwgc3VwcG9ydC4i KSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMveG1sLmggYi9z cmMvaW5jbHVkZS91dGlscy94bWwuaAppbmRleCA3MzJkYWM0N2JjNC4uYjE1MTY4YzQzMGUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3htbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxz L3htbC5oCkBAIC03Myw3ICs3Myw3IEBAIGV4dGVybiB4bWx0eXBlICp4bWxjb25jYXQoTGlzdCAq YXJncyk7CiBleHRlcm4geG1sdHlwZSAqeG1sZWxlbWVudChYbWxFeHByICp4ZXhwciwKIAkJCQkJ CSAgIGNvbnN0IERhdHVtICpuYW1lZF9hcmd2YWx1ZSwgY29uc3QgYm9vbCAqbmFtZWRfYXJnbnVs bCwKIAkJCQkJCSAgIGNvbnN0IERhdHVtICphcmd2YWx1ZSwgY29uc3QgYm9vbCAqYXJnbnVsbCk7 Ci1leHRlcm4geG1sdHlwZSAqeG1scGFyc2UodGV4dCAqZGF0YSwgWG1sT3B0aW9uVHlwZSB4bWxv cHRpb25fYXJnLCBib29sIHByZXNlcnZlX3doaXRlc3BhY2UpOworZXh0ZXJuIHhtbHR5cGUgKnht bHBhcnNlKHRleHQgKmRhdGEsIFhtbE9wdGlvblR5cGUgeG1sb3B0aW9uX2FyZywgYm9vbCBwcmVz ZXJ2ZV93aGl0ZXNwYWNlLCBOb2RlICplc2NvbnRleHQpOwogZXh0ZXJuIHhtbHR5cGUgKnhtbHBp KGNvbnN0IGNoYXIgKnRhcmdldCwgdGV4dCAqYXJnLCBib29sIGFyZ19pc19udWxsLCBib29sICpy ZXN1bHRfaXNfbnVsbCk7CiBleHRlcm4geG1sdHlwZSAqeG1scm9vdCh4bWx0eXBlICpkYXRhLCB0 ZXh0ICp2ZXJzaW9uLCBpbnQgc3RhbmRhbG9uZSk7CiBleHRlcm4gYm9vbCB4bWxfaXNfZG9jdW1l bnQoeG1sdHlwZSAqYXJnKTsKLS0gCjIuMzQuMQoK --000000000000e7a9ea06457207c0 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0001-error-safe-for-casting-bytea-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v14-0001-error-safe-for-casting-bytea-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mix9wgbl18 RnJvbSBjYTFjNDMxYzllODhmMTljOGJhZGJmOTdkNTA2YTEzZjBhNWMxMmIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMjIgTm92IDIwMjUgMDA6MDg6MDAgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx NCAwMS8xOV0gZXJyb3Igc2FmZSBmb3IgY2FzdGluZyBieXRlYSB0byBvdGhlciB0eXBlcyBwZXIK IHBnX2Nhc3QKCnNlbGVjdCBjYXN0c291cmNlOjpyZWd0eXBlLCBjYXN0dGFyZ2V0OjpyZWd0eXBl LCBjYXN0ZnVuYywgY2FzdGNvbnRleHQsY2FzdG1ldGhvZCwgcHAucHJvc3JjLCBwcC5wcm9uYW1l CmZyb20gcGdfY2FzdCBwYyBqb2luIHBnX3Byb2MgcHAgb24gcHAub2lkID0gcGMuY2FzdGZ1bmMg YW5kIHBjLmNhc3RmdW5jID4gMCBhbmQgY2FzdHNvdXJjZTo6cmVndHlwZSA9J2J5dGVhJzo6cmVn dHlwZQpvcmRlciBieSBjYXN0c291cmNlOjpyZWd0eXBlOwoKIGNhc3Rzb3VyY2UgfCBjYXN0dGFy Z2V0IHwgY2FzdGZ1bmMgfCBjYXN0Y29udGV4dCB8IGNhc3RtZXRob2QgfCAgIHByb3NyYyAgIHwg cHJvbmFtZQotLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQogYnl0ZWEgICAgICB8IHNtYWxs aW50ICAgfCAgICAgNjM3MCB8IGUgICAgICAgICAgIHwgZiAgICAgICAgICB8IGJ5dGVhX2ludDIg fCBpbnQyCiBieXRlYSAgICAgIHwgaW50ZWdlciAgICB8ICAgICA2MzcxIHwgZSAgICAgICAgICAg fCBmICAgICAgICAgIHwgYnl0ZWFfaW50NCB8IGludDQKIGJ5dGVhICAgICAgfCBiaWdpbnQgICAg IHwgICAgIDYzNzIgfCBlICAgICAgICAgICB8IGYgICAgICAgICAgfCBieXRlYV9pbnQ4IHwgaW50 OAooMyByb3dzKQoKZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQURrTE09ZnYxSmZZ NFVmYS1qY3d3TmJqUWl4TlZpc2tROGpadTNUel9wNjU2aV80aFFAbWFpbC5nbWFpbC5jb20KLS0t CiBzcmMvYmFja2VuZC91dGlscy9hZHQvYnl0ZWEuYyB8IDYgKysrLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9ieXRlYS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2J5dGVhLmMKaW5k ZXggNmU3YjkxNGM1NjMuLmY0M2FkNmI0YWZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvYnl0ZWEuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYnl0ZWEuYwpAQCAtMTAy Nyw3ICsxMDI3LDcgQEAgYnl0ZWFfaW50MihQR19GVU5DVElPTl9BUkdTKQogCiAJLyogQ2hlY2sg dGhhdCB0aGUgYnl0ZSBhcnJheSBpcyBub3QgdG9vIGxvbmcgKi8KIAlpZiAobGVuID4gc2l6ZW9m KHJlc3VsdCkpCi0JCWVyZXBvcnQoRVJST1IsCisJCWVyZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAo RGF0dW0pIDAsCiAJCQkJZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdF KSwKIAkJCQllcnJtc2coInNtYWxsaW50IG91dCBvZiByYW5nZSIpKTsKIApAQCAtMTA1Miw3ICsx MDUyLDcgQEAgYnl0ZWFfaW50NChQR19GVU5DVElPTl9BUkdTKQogCiAJLyogQ2hlY2sgdGhhdCB0 aGUgYnl0ZSBhcnJheSBpcyBub3QgdG9vIGxvbmcgKi8KIAlpZiAobGVuID4gc2l6ZW9mKHJlc3Vs dCkpCi0JCWVyZXBvcnQoRVJST1IsCisJCWVyZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0p IDAsCiAJCQkJZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwKIAkJ CQllcnJtc2coImludGVnZXIgb3V0IG9mIHJhbmdlIikpOwogCkBAIC0xMDc3LDcgKzEwNzcsNyBA QCBieXRlYV9pbnQ4KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkvKiBDaGVjayB0aGF0IHRoZSBieXRl IGFycmF5IGlzIG5vdCB0b28gbG9uZyAqLwogCWlmIChsZW4gPiBzaXplb2YocmVzdWx0KSkKLQkJ ZXJlcG9ydChFUlJPUiwKKwkJZXJldHVybihmY2luZm8tPmNvbnRleHQsIChEYXR1bSkgMCwKIAkJ CQllcnJjb2RlKEVSUkNPREVfTlVNRVJJQ19WQUxVRV9PVVRfT0ZfUkFOR0UpLAogCQkJCWVycm1z ZygiYmlnaW50IG91dCBvZiByYW5nZSIpKTsKIAotLSAKMi4zNC4xCgo= --000000000000e7a9ea06457207c0 Content-Type: text/x-patch; charset="US-ASCII"; name="v14-0002-error-safe-for-casting-bit-varbit-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v14-0002-error-safe-for-casting-bit-varbit-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mix9wgbj17 RnJvbSAxNzdmOTdkYzAwNzhhZGViYzBhMTBkNTBjZDg4YjNmYTE1NTdjNjRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMjIgTm92IDIwMjUgMTA6MzM6MDggKzA4MDAKU3ViamVjdDogW1BBVENIIHYx NCAwMi8xOV0gZXJyb3Igc2FmZSBmb3IgY2FzdGluZyBiaXQvdmFyYml0IHRvIG90aGVyIHR5cGVz CiBwZXIgcGdfY2FzdAoKc2VsZWN0IGNhc3Rzb3VyY2U6OnJlZ3R5cGUsIGNhc3R0YXJnZXQ6OnJl Z3R5cGUsIGNhc3RmdW5jLAogICAgICAgY2FzdGNvbnRleHQsY2FzdG1ldGhvZCwgcHAucHJvc3Jj LCBwcC5wcm9uYW1lCmZyb20gcGdfY2FzdCBwYyBqb2luIHBnX3Byb2MgcHAgb24gcHAub2lkID0g cGMuY2FzdGZ1bmMKd2hlcmUgcGMuY2FzdGZ1bmMgPiAwIGFuZCAoY2FzdHNvdXJjZTo6cmVndHlw ZSA9J2JpdCc6OnJlZ3R5cGUgb3IKY2FzdHNvdXJjZTo6cmVndHlwZSA9J3ZhcmJpdCc6OnJlZ3R5 cGUpCm9yZGVyIGJ5IGNhc3Rzb3VyY2U6OnJlZ3R5cGU7CgogY2FzdHNvdXJjZSAgfCBjYXN0dGFy Z2V0ICB8IGNhc3RmdW5jIHwgY2FzdGNvbnRleHQgfCBjYXN0bWV0aG9kIHwgIHByb3NyYyAgIHwg cHJvbmFtZQotLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0KIGJpdCAgICAgICAgIHwgYmln aW50ICAgICAgfCAgICAgMjA3NiB8IGUgICAgICAgICAgIHwgZiAgICAgICAgICB8IGJpdHRvaW50 OCB8IGludDgKIGJpdCAgICAgICAgIHwgaW50ZWdlciAgICAgfCAgICAgMTY4NCB8IGUgICAgICAg ICAgIHwgZiAgICAgICAgICB8IGJpdHRvaW50NCB8IGludDQKIGJpdCAgICAgICAgIHwgYml0ICAg ICAgICAgfCAgICAgMTY4NSB8IGkgICAgICAgICAgIHwgZiAgICAgICAgICB8IGJpdCAgICAgICB8 IGJpdAogYml0IHZhcnlpbmcgfCBiaXQgdmFyeWluZyB8ICAgICAxNjg3IHwgaSAgICAgICAgICAg fCBmICAgICAgICAgIHwgdmFyYml0ICAgIHwgdmFyYml0Cig0IHJvd3MpCgpkaXNjdXNzaW9uOiBo dHRwczovL3Bvc3Rnci5lcy9tL0NBRGtMTT1mdjFKZlk0VWZhLWpjd3dOYmpRaXhOVmlza1E4alp1 M1R6X3A2NTZpXzRoUUBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC92 YXJiaXQuYyB8IDggKysrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmJpdC5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmJpdC5jCmluZGV4IDIwNWE2N2RhZmM1Li42ZTli ODA4ZTIwYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmJpdC5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJiaXQuYwpAQCAtNDAxLDcgKzQwMSw3IEBAIGJpdChQ R19GVU5DVElPTl9BUkdTKQogCQlQR19SRVRVUk5fVkFSQklUX1AoYXJnKTsKIAogCWlmICghaXNF eHBsaWNpdCkKLQkJZXJlcG9ydChFUlJPUiwKKwkJZXJldHVybihmY2luZm8tPmNvbnRleHQsIChE YXR1bSkgMCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1NUUklOR19EQVRBX0xFTkdUSF9NSVNNQVRD SCksCiAJCQkJIGVycm1zZygiYml0IHN0cmluZyBsZW5ndGggJWQgZG9lcyBub3QgbWF0Y2ggdHlw ZSBiaXQoJWQpIiwKIAkJCQkJCVZBUkJJVExFTihhcmcpLCBsZW4pKSk7CkBAIC03NTIsNyArNzUy LDcgQEAgdmFyYml0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCVBHX1JFVFVSTl9WQVJCSVRfUChhcmcp OwogCiAJaWYgKCFpc0V4cGxpY2l0KQotCQllcmVwb3J0KEVSUk9SLAorCQllcmV0dXJuKGZjaW5m by0+Y29udGV4dCwgKERhdHVtKSAwLAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1RSSU5HX0RBVEFf UklHSFRfVFJVTkNBVElPTiksCiAJCQkJIGVycm1zZygiYml0IHN0cmluZyB0b28gbG9uZyBmb3Ig dHlwZSBiaXQgdmFyeWluZyglZCkiLAogCQkJCQkJbGVuKSkpOwpAQCAtMTU5MSw3ICsxNTkxLDcg QEAgYml0dG9pbnQ0KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkvKiBDaGVjayB0aGF0IHRoZSBiaXQg c3RyaW5nIGlzIG5vdCB0b28gbG9uZyAqLwogCWlmIChWQVJCSVRMRU4oYXJnKSA+IHNpemVvZihy ZXN1bHQpICogQklUU19QRVJfQllURSkKLQkJZXJlcG9ydChFUlJPUiwKKwkJZXJldHVybihmY2lu Zm8tPmNvbnRleHQsIChEYXR1bSkgMCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFM VUVfT1VUX09GX1JBTkdFKSwKIAkJCQkgZXJybXNnKCJpbnRlZ2VyIG91dCBvZiByYW5nZSIpKSk7 CiAKQEAgLTE2NzEsNyArMTY3MSw3IEBAIGJpdHRvaW50OChQR19GVU5DVElPTl9BUkdTKQogCiAJ LyogQ2hlY2sgdGhhdCB0aGUgYml0IHN0cmluZyBpcyBub3QgdG9vIGxvbmcgKi8KIAlpZiAoVkFS QklUTEVOKGFyZykgPiBzaXplb2YocmVzdWx0KSAqIEJJVFNfUEVSX0JZVEUpCi0JCWVyZXBvcnQo RVJST1IsCisJCWVyZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCiAJCQkJIGVycm1zZygiYmln aW50IG91dCBvZiByYW5nZSIpKSk7CiAKLS0gCjIuMzQuMQoK --000000000000e7a9ea06457207c0--