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 1vo4SS-00FCGr-37 for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Feb 2026 18:52:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vo4SR-000YiJ-3C for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Feb 2026 18:52:03 +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 1vo4SR-000Yi9-20 for pgsql-hackers@lists.postgresql.org; Thu, 05 Feb 2026 18:52:03 +0000 Received: from mail-dl1-x122d.google.com ([2607:f8b0:4864:20::122d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vo4SP-00000001ESr-02C2 for pgsql-hackers@lists.postgresql.org; Thu, 05 Feb 2026 18:52:03 +0000 Received: by mail-dl1-x122d.google.com with SMTP id a92af1059eb24-1233c155a42so1798616c88.1 for ; Thu, 05 Feb 2026 10:52:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770317519; x=1770922319; darn=lists.postgresql.org; h=in-reply-to:references:to:from:subject:cc:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=o7NPHKkd1fPakT1pEyTzAo5e8Deqy9MLTDDB1gRlTx0=; b=ada8R3d4Fd70q69TBc+D51nAZdpDiZ2PFTxfX82ri+2mRxZPi/qbseheMiYQ0Xhc5U V7om6AQvCl3tpwcBswsWGKAIhc/G0kuP0L5A9G+dsBuLSKQjFnrYlMRx48AFA73knPGW O7M5IqXuRmhKjCiHfynOqhkmjtGVLbNV3CaV8sk715K1r5qHnd1FHHxAHYXPuzjlYL1k dTo2uaJdLqnyXMGhxCiDeFBmkvNiivwNz+xZPsRbk9+Ai02ESpBlDcqOPN31c4VCikJB 6HIIV/nG+abYW4byDoftuf5wzm95qyDa3TcQJEi7+dNywTWFVcbKYU60BQ9h6GiB9HGT fUTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770317519; x=1770922319; h=in-reply-to:references:to:from:subject:cc:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=o7NPHKkd1fPakT1pEyTzAo5e8Deqy9MLTDDB1gRlTx0=; b=sYbRxo+Tt8SfY/i1LmeqRyrZ4mXAgA7ss9jtaSnpeKkVziD6NdtIjinHxvL5sV31cc F7G0dvFzmjpDKb8VOEVynKuY4CPG4lAWf2gj70r7jzIamgoofeh46xKA5dMs/x7lHfH7 hSBJgjrJsKuKuNUmSOaY8yVGulwW9MZAgIs/w08h6rro//v2OIV37Hz4cQBn0UfclDF6 zSMENMVi6sMutXvhldnZLpCj6A5abNaiSoASKXzLKWJ1fi0KU8SmFsIHWcZo2Pv1H+aK UbMB6dNdlORWDVJhgSSu1Tk7RA+6ijcg/lF/7N+77mYPVAX9K+wjZAqhv2keMOqWtMo/ v3FA== X-Forwarded-Encrypted: i=1; AJvYcCVq7lpKVaJGR0aBuGipgzpvVUuXy2v3kN1w9J/lkcwr4p3tdPgqWrpmIAU6N3WXe1/EGDv2xZvUopgGE9rs@lists.postgresql.org X-Gm-Message-State: AOJu0YwLOdnMG+G9IwMJ4Lvu/BB95ojl9qncqxaTKBVcuKnGTDxlp+Zh zkdXU7J/wO7kZRX8Fh5/vbPU8koBQ4imucDuuSSd2Xf2SonwKmwTAgCU X-Gm-Gg: AZuq6aI9eJWZmFmpXdcPbYawP5Cvir5Zvq4hoT/MjWDwmbKvjZX65bDp0+w+qjYbbz9 hJCX+kzBBQ9WXEmE7VIIvGVc0KPNqmJkkOtHNd095zLktOpiCzuGXXJQsAA/xiQrHMdzKH5z7en q7xj30+zIjOzEuJovxcrrKnA7QxkKaMAGb+z32kHej1AoG/P4wyb+TuESQDrEVJF3C2+RCE0Jcs Oi8t4iEscxZbP1kdMRLaSO5tWKy1fo+zxCJPWPRsUi6k7rjNErQfSBXNP25sH3SMiyytcI6qn25 9CF1awi+kcstVEG89gq4UXhjyNkS/hVyRoj6jPE6jKJb0y1mSdHdqTwFrHknK1CHpxOL4YlCnhK +7OlKztmtcDjCM1R+cUOmcaYOOGcrEaHc1JKN8zY6mJAJznmyoOVUobiZZHc9wlbWFnOmDIv2tj /zs7+APelhrigz/KRXTSJQLtSETP5y72DbsQ== X-Received: by 2002:a05:7022:b9b:b0:11b:9386:8271 with SMTP id a92af1059eb24-1270407446dmr90031c88.46.1770317518389; Thu, 05 Feb 2026 10:51:58 -0800 (PST) Received: from localhost ([2804:14d:328a:a59c:3d5c:bc8d:ee12:de75]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2b855ad8d6esm153814eec.7.2026.02.05.10.51.56 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 05 Feb 2026 10:51:57 -0800 (PST) Content-Type: multipart/mixed; boundary=5b5b6dc79735e8d67fd9fd20ddcaf014d3f55e2386739abe9f864ea3cb18 Mime-Version: 1.0 Date: Thu, 05 Feb 2026 15:51:54 -0300 Message-Id: Cc: "Peter Eisentraut" , Subject: Re: Show expression of virtual columns in error messages From: "Matheus Alcantara" To: "Yugo Nagata" X-Mailer: aerc 0.21.0 References: <7c18e854-0ddb-4670-b0c4-f2541b5edd91@eisentraut.org> <20260205114521.6fed028d8d3185663f3c4226@sraoss.co.jp> In-Reply-To: <20260205114521.6fed028d8d3185663f3c4226@sraoss.co.jp> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --5b5b6dc79735e8d67fd9fd20ddcaf014d3f55e2386739abe9f864ea3cb18 Content-Type: multipart/alternative; boundary=88f361e2ed24f2eeb1bc61364e2d60921727fc826f62675666af23a5acb8 --88f361e2ed24f2eeb1bc61364e2d60921727fc826f62675666af23a5acb8 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8 On Wed Feb 4, 2026 at 11:45 PM -03, Yugo Nagata wrote: >> Another possibility would be to get the actual values of "a" for example >> and show it on the error message, e.g: >>=20 >> ERROR: new row for relation "t" violates check constraint "t_c_chec= k" >> DETAIL: Failing row contains (5, 10, 5 * 2). > > That would indeed be more useful. One way to achieve this might be to > modify deparse_context and get_variable() so that a Var is displayed as i= ts > actual value. > I'm not sure if I understand how modifying deparse_context_for() could help on this. What I did was to use the expression_tree_mutator API to mutate the virtual column expression to replace any Var reference with the value into the TupleTableSlot. Please see the attached v2 version. > Another possibility would be to include column names in the DETAIL messag= e, > for example: > > ERROR: new row for relation "t" violates check constraint "t_c_check" > DETAIL: Failing row contains (a, b, c)=3D(5, 10, a * 2). > > Although this would change the existing message format, including column > names could generally provide users with more information about the error= . > I think that this could make the error output too verbose when there is a lot of columns involved on the statement. -- Matheus Alcantara EDB: https://www.enterprisedb.com --88f361e2ed24f2eeb1bc61364e2d60921727fc826f62675666af23a5acb8-- --5b5b6dc79735e8d67fd9fd20ddcaf014d3f55e2386739abe9f864ea3cb18 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0001-Show-expression-of-virtual-columns-in-error-messa.patch Content-Type: text/plain; charset=utf-8; name=v2-0001-Show-expression-of-virtual-columns-in-error-messa.patch RnJvbSA3NmI1YjM2YmEzYjEwM2U3YzUwMWRlMGJkOTRlOWJiMWFmY2RjZjc1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXRoZXVzIEFsY2FudGFyYSA8bXRocy5kZXZAcG0ubWU+CkRh dGU6IE1vbiwgMiBGZWIgMjAyNiAxOTowNjo0NCAtMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjJdIFNo b3cgZXhwcmVzc2lvbiBvZiB2aXJ0dWFsIGNvbHVtbnMgaW4gZXJyb3IgbWVzc2FnZXMKClByZXZp b3VzbHksIHdoZW4gYSBjb25zdHJhaW50IHZpb2xhdGlvbiBvY2N1cnJlZCBvbiBhIHRhYmxlIHdp dGggdmlydHVhbApnZW5lcmF0ZWQgY29sdW1ucywgdGhlICJGYWlsaW5nIHJvdyBjb250YWlucyIg ZXJyb3IgbWVzc2FnZSB3b3VsZCBkaXNwbGF5CnRoZSBsaXRlcmFsIHN0cmluZyAidmlydHVhbCIg YXMgYSBwbGFjZWhvbGRlciBmb3IgdGhvc2UgY29sdW1ucy4gVGhpcyB3YXMKbm90IGhlbHBmdWwg Zm9yIGRlYnVnZ2luZy4KCk5vdywgdGhlIGdlbmVyYXRpb24gZXhwcmVzc2lvbiBpcyBzaG93biBp bnN0ZWFkLCBtYWtpbmcgaXQgZWFzaWVyIHRvCnVuZGVyc3RhbmQgd2hhdCB2YWx1ZSB3b3VsZCBi ZSBjb21wdXRlZCBmb3IgdGhlIHZpcnR1YWwgY29sdW1uLgoKRm9yIGV4YW1wbGUsIGluc3RlYWQg b2Y6CiAgRmFpbGluZyByb3cgY29udGFpbnMgKDUsIDEwLCB2aXJ0dWFsKS4KClRoZSBlcnJvciBt ZXNzYWdlIG5vdyBzaG93czoKICBGYWlsaW5nIHJvdyBjb250YWlucyAoNSwgMTAsIGEgKiAyKS4K ClRoaXMgcmVxdWlyZWQgY2hhbmdpbmcgRXhlY0J1aWxkU2xvdFZhbHVlRGVzY3JpcHRpb24oKSB0 byBhY2NlcHQgYQpSZWxhdGlvbiBpbnN0ZWFkIG9mIGp1c3QgYW4gT2lkLCBzbyB0aGF0IGJ1aWxk X2dlbmVyYXRpb25fZXhwcmVzc2lvbigpCmNhbiBiZSBjYWxsZWQgdG8gcmV0cmlldmUgdGhlIGNv bHVtbidzIGdlbmVyYXRpb24gZXhwcmVzc2lvbi4KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9l eGVjTWFpbi5jICAgICAgICAgICAgICAgfCA5NyArKysrKysrKysrKysrKysrLS0tCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2NvbmZsaWN0LmMgICAgfCAgNyArLQogc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgICAgICAgIHwgIDIgKy0KIC4uLi9yZWdyZXNz L2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFsLm91dCAgICB8IDE4ICsrLS0KIHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dCB8ICAyICstCiBzcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgMSArCiA2IGZpbGVzIGNoYW5nZWQs IDEwMSBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YwppbmRleCBiZmQzZWJjNjAxZS4uYjgyYzUwMGJhOTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YwpAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1ZGUgImZvcmVpZ24vZmR3YXBpLmgiCiAjaW5jbHVk ZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJub2Rl cy9tYWtlZnVuY3MuaCIKKyNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJu b2Rlcy9xdWVyeWp1bWJsZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlvbi5oIgog I2luY2x1ZGUgInBnc3RhdC5oIgpAQCAtNjEsOCArNjMsMTggQEAKICNpbmNsdWRlICJ1dGlscy9s c3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9wYXJ0Y2FjaGUuaCIKICNpbmNsdWRlICJ1dGls cy9ybHMuaCIKKyNpbmNsdWRlICJ1dGlscy9ydWxldXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9z bmFwbWdyLmgiCiAKKy8qCisgKiBDb250ZXh0IGZvciBzdWJzdGl0dXRlX2FjdHVhbF92YWx1ZXNf bXV0YXRvcgorICovCit0eXBlZGVmIHN0cnVjdAoreworCVR1cGxlVGFibGVTbG90ICpzbG90Owor CVR1cGxlRGVzYwl0dXBkZXNjOworfSBzdWJzdGl0dXRlX2FjdHVhbF92YWx1ZXNfY29udGV4dDsK KwogCiAvKiBIb29rcyBmb3IgcGx1Z2lucyB0byBnZXQgY29udHJvbCBpbiBFeGVjdXRvclN0YXJ0 L1J1bi9GaW5pc2gvRW5kICovCiBFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSBFeGVjdXRvclN0YXJ0 X2hvb2sgPSBOVUxMOwpAQCAtOTMsNiArMTA1LDkgQEAgc3RhdGljIHZvaWQgUmVwb3J0Tm90TnVs bFZpb2xhdGlvbkVycm9yKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCQkJ VHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkJCQkJRVN0YXRlICplc3RhdGUsIGludCBhdHRu dW0pOwogCitzdGF0aWMgTm9kZSAqc3Vic3RpdHV0ZV9hY3R1YWxfdmFsdWVzX211dGF0b3IoTm9k ZSAqbm9kZSwKKwkJCQkJCQkJCQkJICBzdWJzdGl0dXRlX2FjdHVhbF92YWx1ZXNfY29udGV4dCAq Y29udGV4dCk7CisKIC8qIGVuZCBvZiBsb2NhbCBkZWNscyAqLwogCiAKQEAgLTE5MTQsNyArMTky OSw3IEBAIEV4ZWNQYXJ0aXRpb25DaGVja0VtaXRFcnJvcihSZXN1bHRSZWxJbmZvICpyZXN1bHRS ZWxJbmZvLAogCQkJCQkJCVR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQkJCUVTdGF0ZSAqZXN0 YXRlKQogewotCU9pZAkJCXJvb3RfcmVsaWQ7CisJUmVsYXRpb24Jcm9vdF9yZWw7CiAJVHVwbGVE ZXNjCXR1cGRlc2M7CiAJY2hhcgkgICAqdmFsX2Rlc2M7CiAJQml0bWFwc2V0ICAqbW9kaWZpZWRD b2xzOwpAQCAtMTkzMSw4ICsxOTQ2LDggQEAgRXhlY1BhcnRpdGlvbkNoZWNrRW1pdEVycm9yKFJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCVR1cGxlRGVzYwlvbGRfdHVwZGVzYzsKIAkJ QXR0ck1hcCAgICAqbWFwOwogCi0JCXJvb3RfcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJvb3Ry ZWwtPnJpX1JlbGF0aW9uRGVzYyk7Ci0JCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJvb3Ry ZWwtPnJpX1JlbGF0aW9uRGVzYyk7CisJCXJvb3RfcmVsID0gcm9vdHJlbC0+cmlfUmVsYXRpb25E ZXNjOworCQl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyb290X3JlbCk7CiAKIAkJb2xkX3R1 cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYyk7 CiAJCS8qIGEgcmV2ZXJzZSBtYXAgKi8KQEAgLTE5NTAsMTMgKzE5NjUsMTMgQEAgRXhlY1BhcnRp dGlvbkNoZWNrRW1pdEVycm9yKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJfQogCWVs c2UKIAl7Ci0JCXJvb3RfcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlc3VsdFJlbEluZm8tPnJp X1JlbGF0aW9uRGVzYyk7Ci0JCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlc3VsdFJlbElu Zm8tPnJpX1JlbGF0aW9uRGVzYyk7CisJCXJvb3RfcmVsID0gcmVzdWx0UmVsSW5mby0+cmlfUmVs YXRpb25EZXNjOworCQl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyb290X3JlbCk7CiAJCW1v ZGlmaWVkQ29scyA9IGJtc191bmlvbihFeGVjR2V0SW5zZXJ0ZWRDb2xzKHJlc3VsdFJlbEluZm8s IGVzdGF0ZSksCiAJCQkJCQkJCSBFeGVjR2V0VXBkYXRlZENvbHMocmVzdWx0UmVsSW5mbywgZXN0 YXRlKSk7CiAJfQogCi0JdmFsX2Rlc2MgPSBFeGVjQnVpbGRTbG90VmFsdWVEZXNjcmlwdGlvbihy b290X3JlbGlkLAorCXZhbF9kZXNjID0gRXhlY0J1aWxkU2xvdFZhbHVlRGVzY3JpcHRpb24ocm9v dF9yZWwsCiAJCQkJCQkJCQkJCSBzbG90LAogCQkJCQkJCQkJCQkgdHVwZGVzYywKIAkJCQkJCQkJ CQkJIG1vZGlmaWVkQ29scywKQEAgLTIwNjgsNyArMjA4Myw3IEBAIEV4ZWNDb25zdHJhaW50cyhS ZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJZWxzZQogCQkJCW1vZGlmaWVkQ29scyA9 IGJtc191bmlvbihFeGVjR2V0SW5zZXJ0ZWRDb2xzKHJlc3VsdFJlbEluZm8sIGVzdGF0ZSksCiAJ CQkJCQkJCQkJIEV4ZWNHZXRVcGRhdGVkQ29scyhyZXN1bHRSZWxJbmZvLCBlc3RhdGUpKTsKLQkJ CXZhbF9kZXNjID0gRXhlY0J1aWxkU2xvdFZhbHVlRGVzY3JpcHRpb24oUmVsYXRpb25HZXRSZWxp ZChyZWwpLAorCQkJdmFsX2Rlc2MgPSBFeGVjQnVpbGRTbG90VmFsdWVEZXNjcmlwdGlvbihyZWws CiAJCQkJCQkJCQkJCQkJIHNsb3QsCiAJCQkJCQkJCQkJCQkJIHR1cGRlc2MsCiAJCQkJCQkJCQkJ CQkJIG1vZGlmaWVkQ29scywKQEAgLTIyMDUsNyArMjIyMCw3IEBAIFJlcG9ydE5vdE51bGxWaW9s YXRpb25FcnJvcihSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLCBUdXBsZVRhYmxlU2xvdCAq c2xvdCwKIAkJbW9kaWZpZWRDb2xzID0gYm1zX3VuaW9uKEV4ZWNHZXRJbnNlcnRlZENvbHMocmVz dWx0UmVsSW5mbywgZXN0YXRlKSwKIAkJCQkJCQkJIEV4ZWNHZXRVcGRhdGVkQ29scyhyZXN1bHRS ZWxJbmZvLCBlc3RhdGUpKTsKIAotCXZhbF9kZXNjID0gRXhlY0J1aWxkU2xvdFZhbHVlRGVzY3Jp cHRpb24oUmVsYXRpb25HZXRSZWxpZChyZWwpLAorCXZhbF9kZXNjID0gRXhlY0J1aWxkU2xvdFZh bHVlRGVzY3JpcHRpb24ocmVsLAogCQkJCQkJCQkJCQkgc2xvdCwKIAkJCQkJCQkJCQkJIHR1cGRl c2MsCiAJCQkJCQkJCQkJCSBtb2RpZmllZENvbHMsCkBAIC0yMzEzLDcgKzIzMjgsNyBAQCBFeGVj V2l0aENoZWNrT3B0aW9ucyhXQ09LaW5kIGtpbmQsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbElu Zm8sCiAJCQkJCWVsc2UKIAkJCQkJCW1vZGlmaWVkQ29scyA9IGJtc191bmlvbihFeGVjR2V0SW5z ZXJ0ZWRDb2xzKHJlc3VsdFJlbEluZm8sIGVzdGF0ZSksCiAJCQkJCQkJCQkJCQkgRXhlY0dldFVw ZGF0ZWRDb2xzKHJlc3VsdFJlbEluZm8sIGVzdGF0ZSkpOwotCQkJCQl2YWxfZGVzYyA9IEV4ZWNC dWlsZFNsb3RWYWx1ZURlc2NyaXB0aW9uKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKKwkJCQkJdmFs X2Rlc2MgPSBFeGVjQnVpbGRTbG90VmFsdWVEZXNjcmlwdGlvbihyZWwsCiAJCQkJCQkJCQkJCQkJ CQkgc2xvdCwKIAkJCQkJCQkJCQkJCQkJCSB0dXBkZXNjLAogCQkJCQkJCQkJCQkJCQkJIG1vZGlm aWVkQ29scywKQEAgLTIzOTIsMTIgKzI0MDcsMTMgQEAgRXhlY1dpdGhDaGVja09wdGlvbnMoV0NP S2luZCBraW5kLCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogICogY29sdW1ucyB0aGV5 IGFyZS4KICAqLwogY2hhciAqCi1FeGVjQnVpbGRTbG90VmFsdWVEZXNjcmlwdGlvbihPaWQgcmVs b2lkLAorRXhlY0J1aWxkU2xvdFZhbHVlRGVzY3JpcHRpb24oUmVsYXRpb24gcmVsLAogCQkJCQkJ CSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkJICBUdXBsZURlc2MgdHVwZGVzYywKIAkJ CQkJCQkgIEJpdG1hcHNldCAqbW9kaWZpZWRDb2xzLAogCQkJCQkJCSAgaW50IG1heGZpZWxkbGVu KQogeworCU9pZAkJCXJlbG9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKIAlTdHJpbmdJbmZv RGF0YSBidWY7CiAJU3RyaW5nSW5mb0RhdGEgY29sbGlzdDsKIAlib29sCQl3cml0ZV9jb21tYSA9 IGZhbHNlOwpAQCAtMjQ3Nyw3ICsyNDkzLDIzIEBAIEV4ZWNCdWlsZFNsb3RWYWx1ZURlc2NyaXB0 aW9uKE9pZCByZWxvaWQsCiAJCWlmICh0YWJsZV9wZXJtIHx8IGNvbHVtbl9wZXJtKQogCQl7CiAJ CQlpZiAoYXR0LT5hdHRnZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dFTkVSQVRFRF9WSVJUVUFMKQot CQkJCXZhbCA9ICJ2aXJ0dWFsIjsKKwkJCXsKKwkJCQlOb2RlCSAgICpnZW5leHByID0gYnVpbGRf Z2VuZXJhdGlvbl9leHByZXNzaW9uKHJlbCwgYXR0LT5hdHRudW0pOworCQkJCXN1YnN0aXR1dGVf YWN0dWFsX3ZhbHVlc19jb250ZXh0IGN4dDsKKwkJCQlMaXN0CSAgICpkcGNvbnRleHQ7CisKKwkJ CQljeHQuc2xvdCA9IHNsb3Q7CisJCQkJY3h0LnR1cGRlc2MgPSB0dXBkZXNjOworCQkJCWdlbmV4 cHIgPSBzdWJzdGl0dXRlX2FjdHVhbF92YWx1ZXNfbXV0YXRvcihnZW5leHByLCAmY3h0KTsKKwor CQkJCS8qCisJCQkJICogV2UgbmVlZCBkcGNvbnRleHQgZm9yIGFueSByZW1haW5pbmcgVmFycyB0 aGF0IHdlcmVuJ3QKKwkJCQkgKiBzdWJzdGl0dXRlZCAoZS5nIHN5c3RlbSBjb2x1bW5zKS4KKwkJ CQkgKi8KKwkJCQlkcGNvbnRleHQgPSBkZXBhcnNlX2NvbnRleHRfZm9yKFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCksIHJlbG9pZCk7CisKKwkJCQl2YWwgPSBkZXBhcnNlX2V4cHJlc3Npb24o Z2VuZXhwciwgZHBjb250ZXh0LCBmYWxzZSwgZmFsc2UpOworCQkJfQogCQkJZWxzZSBpZiAoc2xv dC0+dHRzX2lzbnVsbFtpXSkKIAkJCQl2YWwgPSAibnVsbCI7CiAJCQllbHNlCkBAIC0zMjQxLDMg KzMyNzMsNDYgQEAgRXZhbFBsYW5RdWFsRW5kKEVQUVN0YXRlICplcHFzdGF0ZSkKIAllcHFzdGF0 ZS0+cmVsc3Vic19kb25lID0gTlVMTDsKIAllcHFzdGF0ZS0+cmVsc3Vic19ibG9ja2VkID0gTlVM TDsKIH0KKworLyoKKyAqIFJlcGxhY2VzIFZhciBub2RlcyB3aXRoIENvbnN0IG5vZGVzIGNvbnRh aW5pbmcgdGhlIGFjdHVhbCB2YWx1ZXMgZnJvbSB0aGUKKyAqIHR1cGxlIHNsb3QuCisgKgorICog VGhpcyBpcyB1c2VkIHRvIGRpc3BsYXkgdGhlIGFjdHVhbCB2YWx1ZXMgdXNlZCBpbiB2aXJ0dWFs IGdlbmVyYXRlZCBjb2x1bW4KKyAqIGV4cHJlc3Npb25zIGZvciBlcnJvciBtZXNzYWdlcy4KKyAq Lworc3RhdGljIE5vZGUgKgorc3Vic3RpdHV0ZV9hY3R1YWxfdmFsdWVzX211dGF0b3IoTm9kZSAq bm9kZSwKKwkJCQkJCQkJIHN1YnN0aXR1dGVfYWN0dWFsX3ZhbHVlc19jb250ZXh0ICpjb250ZXh0 KQoreworCWlmIChub2RlID09IE5VTEwpCisJCXJldHVybiBOVUxMOworCisJaWYgKElzQShub2Rl LCBWYXIpKQorCXsKKwkJVmFyCQkgICAqdmFyID0gKFZhciAqKSBub2RlOworCQlpbnQJCQlhdHRu dW0gPSB2YXItPnZhcmF0dG5vOworCisJCWlmIChhdHRudW0gPiAwICYmIGF0dG51bSA8PSBjb250 ZXh0LT50dXBkZXNjLT5uYXR0cykKKwkJeworCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVw bGVEZXNjQXR0cihjb250ZXh0LT50dXBkZXNjLCBhdHRudW0gLSAxKTsKKwkJCURhdHVtCQl2YWx1 ZTsKKwkJCWJvb2wJCWlzbnVsbDsKKworCQkJdmFsdWUgPSBjb250ZXh0LT5zbG90LT50dHNfdmFs dWVzW2F0dG51bSAtIDFdOworCQkJaXNudWxsID0gY29udGV4dC0+c2xvdC0+dHRzX2lzbnVsbFth dHRudW0gLSAxXTsKKworCQkJcmV0dXJuIChOb2RlICopIG1ha2VDb25zdChhdHQtPmF0dHR5cGlk LAorCQkJCQkJCQkJICBhdHQtPmF0dHR5cG1vZCwKKwkJCQkJCQkJCSAgYXR0LT5hdHRjb2xsYXRp b24sCisJCQkJCQkJCQkgIGF0dC0+YXR0bGVuLAorCQkJCQkJCQkJICB2YWx1ZSwKKwkJCQkJCQkJ CSAgaXNudWxsLAorCQkJCQkJCQkJICBhdHQtPmF0dGJ5dmFsKTsKKwkJfQorCX0KKworCXJldHVy biBleHByZXNzaW9uX3RyZWVfbXV0YXRvcihub2RlLAorCQkJCQkJCQkgICBzdWJzdGl0dXRlX2Fj dHVhbF92YWx1ZXNfbXV0YXRvciwKKwkJCQkJCQkJICAgY29udGV4dCk7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2NvbmZsaWN0LmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2NvbmZsaWN0LmMKaW5kZXggY2E3MWE4MWM3YmYuLjQ3OGMw YTIyM2ZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2NvbmZs aWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9jb25mbGljdC5jCkBA IC00MzIsNyArNDMyLDYgQEAgZ2V0X3R1cGxlX2Rlc2MoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJl bEluZm8gKnJlbGluZm8sIENvbmZsaWN0VHlwZSB0eXBlLAogCQkJICAgT2lkIGluZGV4b2lkKQog ewogCVJlbGF0aW9uCWxvY2FscmVsID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOwotCU9pZAkJ CXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChsb2NhbHJlbCk7CiAJVHVwbGVEZXNjCXR1cGRlc2Mg PSBSZWxhdGlvbkdldERlc2NyKGxvY2FscmVsKTsKIAljaGFyCSAgICpkZXNjID0gTlVMTDsKIApA QCAtNDYxLDcgKzQ2MCw3IEBAIGdldF90dXBsZV9kZXNjKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRS ZWxJbmZvICpyZWxpbmZvLCBDb25mbGljdFR5cGUgdHlwZSwKIAkJICogVGhlICdtb2RpZmllZENv bHMnIG9ubHkgYXBwbGllcyB0byB0aGUgbmV3IHR1cGxlLCBoZW5jZSB3ZSBwYXNzCiAJCSAqIE5V TEwgZm9yIHRoZSBsb2NhbCByb3cuCiAJCSAqLwotCQlkZXNjID0gRXhlY0J1aWxkU2xvdFZhbHVl RGVzY3JpcHRpb24ocmVsaWQsIGxvY2Fsc2xvdCwgdHVwZGVzYywKKwkJZGVzYyA9IEV4ZWNCdWls ZFNsb3RWYWx1ZURlc2NyaXB0aW9uKGxvY2FscmVsLCBsb2NhbHNsb3QsIHR1cGRlc2MsCiAJCQkJ CQkJCQkJCSBOVUxMLCA2NCk7CiAKIAkJaWYgKGRlc2MpCkBAIC00ODEsNyArNDgwLDcgQEAgZ2V0 X3R1cGxlX2Rlc2MoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sIENvbmZs aWN0VHlwZSB0eXBlLAogCQkgKi8KIAkJbW9kaWZpZWRDb2xzID0gYm1zX3VuaW9uKEV4ZWNHZXRJ bnNlcnRlZENvbHMocmVsaW5mbywgZXN0YXRlKSwKIAkJCQkJCQkJIEV4ZWNHZXRVcGRhdGVkQ29s cyhyZWxpbmZvLCBlc3RhdGUpKTsKLQkJZGVzYyA9IEV4ZWNCdWlsZFNsb3RWYWx1ZURlc2NyaXB0 aW9uKHJlbGlkLCByZW1vdGVzbG90LAorCQlkZXNjID0gRXhlY0J1aWxkU2xvdFZhbHVlRGVzY3Jp cHRpb24obG9jYWxyZWwsIHJlbW90ZXNsb3QsCiAJCQkJCQkJCQkJCSB0dXBkZXNjLCBtb2RpZmll ZENvbHMsCiAJCQkJCQkJCQkJCSA2NCk7CiAKQEAgLTUxMCw3ICs1MDksNyBAQCBnZXRfdHVwbGVf ZGVzYyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywgQ29uZmxpY3RUeXBl IHR5cGUsCiAJCWlmIChPaWRJc1ZhbGlkKHJlcGxpY2FfaW5kZXgpKQogCQkJZGVzYyA9IGJ1aWxk X2luZGV4X3ZhbHVlX2Rlc2MoZXN0YXRlLCBsb2NhbHJlbCwgc2VhcmNoc2xvdCwgcmVwbGljYV9p bmRleCk7CiAJCWVsc2UKLQkJCWRlc2MgPSBFeGVjQnVpbGRTbG90VmFsdWVEZXNjcmlwdGlvbihy ZWxpZCwgc2VhcmNoc2xvdCwgdHVwZGVzYywgTlVMTCwgNjQpOworCQkJZGVzYyA9IEV4ZWNCdWls ZFNsb3RWYWx1ZURlc2NyaXB0aW9uKGxvY2FscmVsLCBzZWFyY2hzbG90LCB0dXBkZXNjLCBOVUxM LCA2NCk7CiAKIAkJaWYgKGRlc2MpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IDU1 YTdkOTMwZDI2Li4yZmZiOTdkNDhjYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0yNjks NyArMjY5LDcgQEAgZXh0ZXJuIHZvaWQgRXhlY1BhcnRpdGlvbkNoZWNrRW1pdEVycm9yKFJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKnNsb3Qs IEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiB2b2lkIEV4ZWNXaXRoQ2hlY2tPcHRpb25zKFdDT0tp bmQga2luZCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCQkJCQkJIFR1cGxlVGFi bGVTbG90ICpzbG90LCBFU3RhdGUgKmVzdGF0ZSk7Ci1leHRlcm4gY2hhciAqRXhlY0J1aWxkU2xv dFZhbHVlRGVzY3JpcHRpb24oT2lkIHJlbG9pZCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCitleHRl cm4gY2hhciAqRXhlY0J1aWxkU2xvdFZhbHVlRGVzY3JpcHRpb24oUmVsYXRpb24gcmVsLCBUdXBs ZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCQkJCQkgICBUdXBsZURlc2MgdHVwZGVzYywKIAkJCQkJ CQkJCQkgICBCaXRtYXBzZXQgKm1vZGlmaWVkQ29scywKIAkJCQkJCQkJCQkgICBpbnQgbWF4Zmll bGRsZW4pOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nZW5lcmF0ZWRf dmlydHVhbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFs Lm91dAppbmRleCAyNDllNjhiZTY1NC4uYTU1NDcwZmQ0N2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0CisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0CkBAIC02MzgsNyArNjM4LDcgQEAg Q1JFQVRFIFRBQkxFIGd0ZXN0MjAgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQg QUxXQVlTIEFTIChhICogMikgVklSVFUKIElOU0VSVCBJTlRPIGd0ZXN0MjAgKGEpIFZBTFVFUyAo MTApOyAgLS0gb2sKIElOU0VSVCBJTlRPIGd0ZXN0MjAgKGEpIFZBTFVFUyAoMzApOyAgLS0gdmlv bGF0ZXMgY29uc3RyYWludAogRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAiZ3Rlc3QyMCIg dmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAiZ3Rlc3QyMF9iX2NoZWNrIgotREVUQUlMOiAgRmFp bGluZyByb3cgY29udGFpbnMgKDMwLCB2aXJ0dWFsKS4KK0RFVEFJTDogIEZhaWxpbmcgcm93IGNv bnRhaW5zICgzMCwgKDMwICogMikpLgogQUxURVIgVEFCTEUgZ3Rlc3QyMCBBTFRFUiBDT0xVTU4g YiBTRVQgRVhQUkVTU0lPTiBBUyAoYSAqIDEwMCk7ICAtLSB2aW9sYXRlcyBjb25zdHJhaW50IChj dXJyZW50bHkgbm90IHN1cHBvcnRlZCkKIEVSUk9SOiAgQUxURVIgVEFCTEUgLyBTRVQgRVhQUkVT U0lPTiBpcyBub3Qgc3VwcG9ydGVkIGZvciB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW5zIGluIHRh YmxlcyB3aXRoIGNoZWNrIGNvbnN0cmFpbnRzCiBERVRBSUw6ICBDb2x1bW4gImIiIG9mIHJlbGF0 aW9uICJndGVzdDIwIiBpcyBhIHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbi4KQEAgLTY2NiwxOCAr NjY2LDE4IEBAIEFMVEVSIFRBQkxFIGd0ZXN0MjBjIEFERCBDT05TVFJBSU5UIHdob2xlX3Jvd19j aGVjayBDSEVDSyAoZ3Rlc3QyMGMgSVMgTk9UIE5VTEwpCiBJTlNFUlQgSU5UTyBndGVzdDIwYyBW QUxVRVMgKDEpOyAgLS0gb2sKIElOU0VSVCBJTlRPIGd0ZXN0MjBjIFZBTFVFUyAoTlVMTCk7ICAt LSBmYWlscwogRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAiZ3Rlc3QyMGMiIHZpb2xhdGVz IGNoZWNrIGNvbnN0cmFpbnQgIndob2xlX3Jvd19jaGVjayIKLURFVEFJTDogIEZhaWxpbmcgcm93 IGNvbnRhaW5zIChudWxsLCB2aXJ0dWFsKS4KK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5z IChudWxsLCAoTlVMTDo6aW50ZWdlciAqIDIpKS4KIC0tIG5vdC1udWxsIGNvbnN0cmFpbnRzCiBD UkVBVEUgVEFCTEUgZ3Rlc3QyMWEgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQg QUxXQVlTIEFTIChudWxsaWYoYSwgMCkpIFZJUlRVQUwgTk9UIE5VTEwpOwogSU5TRVJUIElOVE8g Z3Rlc3QyMWEgKGEpIFZBTFVFUyAoMSk7ICAtLSBvawogSU5TRVJUIElOVE8gZ3Rlc3QyMWEgKGEp IFZBTFVFUyAoMCk7ICAtLSB2aW9sYXRlcyBjb25zdHJhaW50CiBFUlJPUjogIG51bGwgdmFsdWUg aW4gY29sdW1uICJiIiBvZiByZWxhdGlvbiAiZ3Rlc3QyMWEiIHZpb2xhdGVzIG5vdC1udWxsIGNv bnN0cmFpbnQKLURFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgwLCB2aXJ0dWFsKS4KK0RF VEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgwLCBOVUxMSUYoMCwgMCkpLgogLS0gYWxzbyBj aGVjayB3aXRoIHRhYmxlIGNvbnN0cmFpbnQgc3ludGF4CiBDUkVBVEUgVEFCTEUgZ3Rlc3QyMWF4 IChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAobnVsbGlmKGEs IDApKSBWSVJUVUFMLCBDT05TVFJBSU5UIGNjIE5PVCBOVUxMIGIpOwogSU5TRVJUIElOVE8gZ3Rl c3QyMWF4IChhKSBWQUxVRVMgKDApOyAgLS0gdmlvbGF0ZXMgY29uc3RyYWludAogRVJST1I6ICBu dWxsIHZhbHVlIGluIGNvbHVtbiAiYiIgb2YgcmVsYXRpb24gImd0ZXN0MjFheCIgdmlvbGF0ZXMg bm90LW51bGwgY29uc3RyYWludAotREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKDAsIHZp cnR1YWwpLgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKDAsIE5VTExJRigwLCAwKSku CiBJTlNFUlQgSU5UTyBndGVzdDIxYXggKGEpIFZBTFVFUyAoMSk7ICAtLW9rCiAtLSBTRVQgRVhQ UkVTU0lPTiBzdXBwb3J0cyBub3QgbnVsbCBjb25zdHJhaW50CiBBTFRFUiBUQUJMRSBndGVzdDIx YXggQUxURVIgQ09MVU1OIGIgU0VUIEVYUFJFU1NJT04gQVMgKG51bGxpZihhLCAxKSk7IC0tZXJy b3IKQEAgLTY4NywxNyArNjg3LDE3IEBAIENSRUFURSBUQUJMRSBndGVzdDIxYXggKGEgaW50IFBS SU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChudWxsaWYoYSwKIEFMVEVSIFRB QkxFIGd0ZXN0MjFheCBBREQgQ09OU1RSQUlOVCBjYyBOT1QgTlVMTCBiOwogSU5TRVJUIElOVE8g Z3Rlc3QyMWF4IChhKSBWQUxVRVMgKDApOyAgLS0gdmlvbGF0ZXMgY29uc3RyYWludAogRVJST1I6 ICBudWxsIHZhbHVlIGluIGNvbHVtbiAiYiIgb2YgcmVsYXRpb24gImd0ZXN0MjFheCIgdmlvbGF0 ZXMgbm90LW51bGwgY29uc3RyYWludAotREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKDAs IHZpcnR1YWwpLgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKDAsIE5VTExJRigwLCAw KSkuCiBEUk9QIFRBQkxFIGd0ZXN0MjFheDsKIENSRUFURSBUQUJMRSBndGVzdDIxYiAoYSBpbnQs IGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKG51bGxpZihhLCAwKSkgVklSVFVBTCk7CiBBTFRF UiBUQUJMRSBndGVzdDIxYiBBTFRFUiBDT0xVTU4gYiBTRVQgTk9UIE5VTEw7CiBJTlNFUlQgSU5U TyBndGVzdDIxYiAoYSkgVkFMVUVTICgxKTsgIC0tIG9rCiBJTlNFUlQgSU5UTyBndGVzdDIxYiAo YSkgVkFMVUVTICgyKSwgKDApOyAgLS0gdmlvbGF0ZXMgY29uc3RyYWludAogRVJST1I6ICBudWxs IHZhbHVlIGluIGNvbHVtbiAiYiIgb2YgcmVsYXRpb24gImd0ZXN0MjFiIiB2aW9sYXRlcyBub3Qt bnVsbCBjb25zdHJhaW50Ci1ERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMCwgdmlydHVh bCkuCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMCwgTlVMTElGKDAsIDApKS4KIElO U0VSVCBJTlRPIGd0ZXN0MjFiIChhKSBWQUxVRVMgKE5VTEwpOyAgLS0gZXJyb3IKIEVSUk9SOiAg bnVsbCB2YWx1ZSBpbiBjb2x1bW4gImIiIG9mIHJlbGF0aW9uICJndGVzdDIxYiIgdmlvbGF0ZXMg bm90LW51bGwgY29uc3RyYWludAotREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKG51bGws IHZpcnR1YWwpLgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKG51bGwsIE5VTExJRihO VUxMOjppbnRlZ2VyLCAwKSkuCiBBTFRFUiBUQUJMRSBndGVzdDIxYiBBTFRFUiBDT0xVTU4gYiBE Uk9QIE5PVCBOVUxMOwogSU5TRVJUIElOVE8gZ3Rlc3QyMWIgKGEpIFZBTFVFUyAoMCk7ICAtLSBv ayBub3cKIC0tIG5vdC1udWxsIGNvbnN0cmFpbnQgd2l0aCBwYXJ0aXRpb25lZCB0YWJsZQpAQCAt NzEyLDEwICs3MTIsMTAgQEAgQ1JFQVRFIFRBQkxFIGd0ZXN0bm5fY2hpbGRkZWYgUEFSVElUSU9O IE9GIGd0ZXN0bm5fcGFyZW50IGRlZmF1bHQ7CiBJTlNFUlQgSU5UTyBndGVzdG5uX3BhcmVudCBW QUxVRVMgKDIsIDIsIGRlZmF1bHQpLCAoMywgNSwgZGVmYXVsdCksICgxNCwgMTIsIGRlZmF1bHQp OyAgLS0gb2sKIElOU0VSVCBJTlRPIGd0ZXN0bm5fcGFyZW50IFZBTFVFUyAoMSwgMiwgZGVmYXVs dCk7ICAtLSBlcnJvcgogRVJST1I6ICBudWxsIHZhbHVlIGluIGNvbHVtbiAiZjMiIG9mIHJlbGF0 aW9uICJndGVzdG5uX2NoaWxkIiB2aW9sYXRlcyBub3QtbnVsbCBjb25zdHJhaW50Ci1ERVRBSUw6 ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMSwgMiwgdmlydHVhbCkuCitERVRBSUw6ICBGYWlsaW5n IHJvdyBjb250YWlucyAoMSwgMiwgKE5VTExJRigxLCAxKSArIE5VTExJRignMic6OmJpZ2ludCwg MTApKSkuCiBJTlNFUlQgSU5UTyBndGVzdG5uX3BhcmVudCBWQUxVRVMgKDIsIDEwLCBkZWZhdWx0 KTsgIC0tIGVycm9yCiBFUlJPUjogIG51bGwgdmFsdWUgaW4gY29sdW1uICJmMyIgb2YgcmVsYXRp b24gImd0ZXN0bm5fY2hpbGQiIHZpb2xhdGVzIG5vdC1udWxsIGNvbnN0cmFpbnQKLURFVEFJTDog IEZhaWxpbmcgcm93IGNvbnRhaW5zICgyLCAxMCwgdmlydHVhbCkuCitERVRBSUw6ICBGYWlsaW5n IHJvdyBjb250YWlucyAoMiwgMTAsIChOVUxMSUYoMiwgMSkgKyBOVUxMSUYoJzEwJzo6YmlnaW50 LCAxMCkpKS4KIEFMVEVSIFRBQkxFIGd0ZXN0bm5fcGFyZW50IEFMVEVSIENPTFVNTiBmMyBTRVQg RVhQUkVTU0lPTiBBUyAobnVsbGlmKGYxLCAyKSArIG51bGxpZihmMiwgMTEpKTsgIC0tIGVycm9y CiBFUlJPUjogIGNvbHVtbiAiZjMiIG9mIHJlbGF0aW9uICJndGVzdG5uX2NoaWxkIiBjb250YWlu cyBudWxsIHZhbHVlcwogSU5TRVJUIElOVE8gZ3Rlc3Rubl9wYXJlbnQgVkFMVUVTICgxMCwgMTEs IGRlZmF1bHQpOyAgLS0gb2sKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cGFydGl0aW9uX21lcmdlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9u X21lcmdlLm91dAppbmRleCA5MjVmZTRmNTcwYS4uYWU0MGNiOWNmY2IgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQKQEAgLTEwNzMsNyArMTA3Myw3 IEBAIElOU0VSVCBJTlRPIHQgVkFMVUVTICgxNik7CiAtLSBFUlJPUjogIG5ldyByb3cgZm9yIHJl bGF0aW9uICJ0cF8xMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidF9pX2NoZWNrIgogSU5T RVJUIElOVE8gdCBWQUxVRVMgKDApOwogRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidHBf MTIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRfaV9jaGVjayIKLURFVEFJTDogIEZhaWxp bmcgcm93IGNvbnRhaW5zICgwLCB2aXJ0dWFsKS4KK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRh aW5zICgwLCAoMCArICh0YWJsZW9pZCk6OmludGVnZXIpKS4KIC0tIFNob3VsZCBiZSAzIHJvd3M6 ICg1KSwgKDE1KSwgKDE2KToKIFNFTEVDVCBpIEZST00gdCBPUkRFUiBCWSBpOwogIGkgIApkaWZm IC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA5ZjVlZThmZDQ4Mi4uMGJjNmY4NmI4ODQgMTAwNjQ0 Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yOTUwLDYgKzI5NTAsNyBAQCBTdWJzY3JpcHRpbmdS ZWZTdGF0ZQogU3Vic2NyaXB0aW9uCiBTdWJzY3JpcHRpb25JbmZvCiBTdWJzY3JpcHRpb25SZWxT dGF0ZQorc3Vic3RpdHV0ZV9hY3R1YWxfdmFsdWVzX2NvbnRleHQKIFN1bW1hcml6ZXJSZWFkTG9j YWxYTG9nUHJpdmF0ZQogU3VwcG9ydFJlcXVlc3RDb3N0CiBTdXBwb3J0UmVxdWVzdEluZGV4Q29u ZGl0aW9uCi0tIAoyLjUyLjAKCg== --5b5b6dc79735e8d67fd9fd20ddcaf014d3f55e2386739abe9f864ea3cb18--