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.94.2) (envelope-from ) id 1vCfh6-00Gr0J-Si for pgsql-hackers@arkaria.postgresql.org; Sat, 25 Oct 2025 14:56:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1vCfh5-003UOq-Q1 for pgsql-hackers@arkaria.postgresql.org; Sat, 25 Oct 2025 14:56:34 +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.94.2) (envelope-from ) id 1vCfh5-003UOi-CD for pgsql-hackers@lists.postgresql.org; Sat, 25 Oct 2025 14:56:34 +0000 Received: from mail-lj1-x22c.google.com ([2a00:1450:4864:20::22c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vCfh2-004BAS-0M for pgsql-hackers@postgresql.org; Sat, 25 Oct 2025 14:56:34 +0000 Received: by mail-lj1-x22c.google.com with SMTP id 38308e7fff4ca-378e622e9e3so19858451fa.0 for ; Sat, 25 Oct 2025 07:56:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1761404190; x=1762008990; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=fv3x6YT9HLDUW+kmUy//4wSi/i2nPhv+wlBungTa+Os=; b=h0ou9++J7uj99tlpksWaHB9ZzRIPS6YvD8H7PhNX7KahbSi+2PFHSTvMnA2oRI4G25 C8FAOT/BCmCSkBFUM5B3Dy+XO0DJtiKQGQv3ALeBN9k2cZE8rjdD3JILOzbklH0X8wvI Iaju/Ciqh1qSGYb97C6a+/EYJKOBz05vlW4lzvKuUJYITZaUe+hGxS8fppNjq9HAuusG TNCRI31ni2KzJ+IFBPqvLpaUHVQF4DL1R85iGJvFsjy/iYlkpjC+SNLM/RrmdyNOqvz6 7T+OQAHXwfT8QhEY3Q+3Exl87wmLtFgiKZ5kvhfGu3RC1RhcYTkRYPPR/GMzFWvZNqQJ e7zQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761404190; x=1762008990; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=fv3x6YT9HLDUW+kmUy//4wSi/i2nPhv+wlBungTa+Os=; b=XScy0Y/OeUjBQyN53SD3l1qQAW6f/+ANcigyjvCuj8cZNTTTvKUp5CB+DX+JBbGIzu smBV0HeQdWMvRihQWCCRR35M0KHZIAt7nYMsk1D2HeXs4COg1kuLWb3GJlta2O0SLQsV jwwQdPOpFVXR4cjBniWpVs1ZZyB/N4vthHxncXT2HE6/7bE4aeR428ml6AROTGRRMBW1 x6eRtJ9QgG5wPVwezBnegBh4vnp3eTX+LCkB/z8SNM45vnNRohd38T5K34/bTfftNj9p j1xYi8RP1BNCu4ImEJggtz4H3Z5fpi1AO2Z6niZGqcRQ7tWuLi8pP3GmMFwab1c3ARhu GktA== X-Forwarded-Encrypted: i=1; AJvYcCUM8wZmKrWJ6lM3VsRVEQMjcmkC+f0jZ/H/ZMFgBc+niv+OUj7RnPf2cMgtt12ItmBR1NCKTux2h2eM1sSO@postgresql.org X-Gm-Message-State: AOJu0YzwNUS7va/kbFfPSEglWX61RyNCrhr5gTj4FwqGlz6WccqF9Sfy lKi/IikJSCGodIGGQHf0KG2ab3ZJcrGuDqlZaV1QTlvtWy53K1ZX7XpLvwXFVuI7acwIqdEckOD V++ktmaMtM+cHuD/oXE7jsVVEEzby0nI= X-Gm-Gg: ASbGnctsrBtPrnqkd1oh1ZXtEv/qzhANQdhJ0UVMJ9x85B/vYYYmMOwy+ErTKep+pCe f+Gh/UPOQ6HqDXxM3LvpmRtppXdA/9LPPaUXlH4tN0S6ICR3ulUjI3XvfDm9Q0phrXHQIN59mxd oXAf+0XnuLRZZoBTnBKtEG7EWNNJG9rd9SVfWL7JIYfD68Bt6c5eyT4CkB+o1Wi3c/RIM194Ka3 FBltRKrfmqU53Zuc2oQwhQTDM+BCPdMV0uDCkkrb5YAZaP+xfD4oUr3UWMYS6WiwjtHM7iH82GW rZOF3pJUyq0wfBmtKOPfTdwOvyh4dQ== X-Google-Smtp-Source: AGHT+IGkRcGiPyyFvbGNauy+XQ5Yjb1M+AMCfIQHsmuYo8oz/tWrxdHiJVtGbeQuDeL3x0zxdi+KNH6djSQX4kGOZdw= X-Received: by 2002:a2e:be1e:0:b0:36b:2fab:fa6f with SMTP id 38308e7fff4ca-378e3e0ac4fmr18823721fa.3.1761404190158; Sat, 25 Oct 2025 07:56:30 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Mihail Nikalayeu Date: Sat, 25 Oct 2025 16:55:52 +0200 X-Gm-Features: AWmQ_bmPJB1VV0DCSwz6G3E_c4RKmypQHq7WsWPCb7BEclMPj8cXC_WwADTVGtE Message-ID: Subject: Re: [BUG?] check_exclusion_or_unique_constraint false negative To: Amit Kapila Cc: "Zhijie Hou (Fujitsu)" , Peter Geoghegan , "Hayato Kuroda (Fujitsu)" , PostgreSQL Hackers , Andres Freund , peter@eisentraut.org Content-Type: multipart/mixed; boundary="0000000000000f92480641fcdf7c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000f92480641fcdf7c Content-Type: text/plain; charset="UTF-8" Rebased again. --0000000000000f92480641fcdf7c Content-Type: application/x-patch; name="v13-0001-This-patch-introduces-new-injection-points-and-T.patch" Content-Disposition: attachment; filename="v13-0001-This-patch-introduces-new-injection-points-and-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mh6dwauo0 RnJvbSA2OWMyZDU2ODk5Zjg3MjlkYzFkMTQ3NmYxMGRhNTBkODc5ZjE3N2Q5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyMyBOb3YgMjAyNCAxMzoyNToxMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEzIDEv Ml0gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBpbmplY3Rpb24gcG9pbnRzIGFuZCBUQVAKIHRl c3RzIHRvIHJlcHJvZHVjZSBhbmQgdmVyaWZ5IGNvbmZsaWN0IGRldGVjdGlvbiBpc3N1ZXMgdGhh dCBhcmlzZSBkdXJpbmcKIFNOQVBTSE9UX0RJUlRZIGluZGV4IHNjYW5zIGluIGxvZ2ljYWwgcmVw bGljYXRpb24uCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMgICAgICAg ICAgICB8ICAgOSArKwogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9SRUFETUUgICAgICAgICAg ICAgIHwgICA5ICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYyAgICAgICAg ICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAg ICB8ICAgNCArCiBzcmMvaW5jbHVkZS91dGlscy9zbmFwc2hvdC5oICAgICAgICAgICAgICAgICAg fCAgMTQgKysKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8 ICAgNCArCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDM3X2RlbGV0ZV9taXNzaW5nX3JhY2UucGwgfCAx MzcgKysrKysrKysrKysrKysrKysKIC4uLi9zdWJzY3JpcHRpb24vdC8wMzhfdXBkYXRlX21pc3Np bmdfcmFjZS5wbCB8IDEzOSArKysrKysrKysrKysrKysrKwogLi4uL3QvMDM5X3VwZGF0ZV9taXNz aW5nX3dpdGhfcmV0YWluLnBsICAgICAgIHwgMTQxICsrKysrKysrKysrKysrKysrKwogLi4uL3Qv MDQwX3VwZGF0ZV9taXNzaW5nX3NpbXVsYXRpb24ucGwgICAgICAgIHwgMTIzICsrKysrKysrKysr KysrKwogMTAgZmlsZXMgY2hhbmdlZCwgNTg2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZGVsZXRlX21p c3NpbmdfcmFjZS5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzOF91cGRhdGVfbWlzc2luZ19yYWNlLnBsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDM5X3VwZGF0ZV9taXNzaW5nX3dpdGhfcmV0YWluLnBsCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDQwX3VwZGF0ZV9taXNzaW5nX3Np bXVsYXRpb24ucGwKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhh bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwppbmRleCAwNDkyZDkyZDIz Yi4uNTk4N2Q5MGVlMDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRl eGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwpAQCAtNTIsMTEg KzUyLDEzIEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAibm9kZXMv ZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24v bG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvcnVsZXV0aWxzLmgiCiAjaW5jbHVk ZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVk ZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzUxLDYgKzc1 MywxMyBAQCBpbmRleF9nZXRuZXh0X3Nsb3QoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0 aW9uIGRpcmVjdGlvbiwgVHVwbGVUYWJsZVNsb3QgKgogCQkgKiB0aGUgaW5kZXguCiAJCSAqLwog CQlBc3NlcnQoSXRlbVBvaW50ZXJJc1ZhbGlkKCZzY2FuLT54c19oZWFwdGlkKSk7CisjaWZkZWYg VVNFX0lOSkVDVElPTl9QT0lOVFMKKwkJaWYgKCFJc0NhdGFsb2dSZWxhdGlvbihzY2FuLT5oZWFw UmVsYXRpb24pICYmIElzTG9naWNhbFdvcmtlcigpKQorCQl7CisJCQlJTkpFQ1RJT05fUE9JTlQo ImluZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHkiLCBOVUxMKTsKKwkJ fQorI2VuZGlmCisKIAkJaWYgKGluZGV4X2ZldGNoX2hlYXAoc2Nhbiwgc2xvdCkpCiAJCQlyZXR1 cm4gdHJ1ZTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL1JFQURN RSBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvUkVBRE1FCmluZGV4IDUzZDRhNjFkYzNmLi42 MzRhM2QxMGJiMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9SRUFETUUK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9SRUFETUUKQEAgLTEwMyw2ICsxMDMsMTUg QEAgV2UgYWxzbyByZW1lbWJlciB0aGUgbGVmdC1saW5rLCBhbmQgZm9sbG93IGl0IHdoZW4gdGhl IHNjYW4gbW92ZXMgYmFja3dhcmRzCiAodGhvdWdoIHRoaXMgcmVxdWlyZXMgZXh0cmEgaGFuZGxp bmcgdG8gYWNjb3VudCBmb3IgY29uY3VycmVudCBzcGxpdHMgb2YKIHRoZSBsZWZ0IHNpYmxpbmc7 IHNlZSBkZXRhaWxlZCBtb3ZlLWxlZnQgYWxnb3JpdGhtIGJlbG93KS4KIAorRGVzcGl0ZSB0aGUg ZGVzY3JpYmVkIG1lY2hhbmljcyBpbiBwbGFjZSwgaW5jb25zaXN0ZW50IHJlc3VsdHMgbWF5IHN0 aWxsIG9jY3VyCitkdXJpbmcgbm9uLU1WQ0Mgc2NhbnMgKFNuYXBzaG90RGlydHkgYW5kIFNuYXBz aG90U2VsZikuIFRoaXMgaXNzdWUgY2FuIG9jY3VyIGlmIGEgCitjb25jdXJyZW50IHRyYW5zYWN0 aW9uIGRlbGV0ZXMgYSB0dXBsZSBhbmQgaW5zZXJ0cyBhIG5ldyB0dXBsZSB3aXRoIGEgbmV3IFRJ RCBpbiB0aGUgCitzYW1lIHBhZ2Ugb3IgdG8gdGhlIGxlZnQvcmlnaHQgKGRlcGVuZGluZyBvbiBz Y2FuIGRpcmVjdGlvbikgb2YgY3VycmVudCBzY2FuIHBvc2l0aW9uLgorSWYgdGhlIHNjYW4gaGFz IGFscmVhZHkgdmlzaXRlZCB0aGUgcGFnZSBhbmQgY2FjaGVkIGl0cyBjb250ZW50IGluIHRoZQor YmFja2VuZC1sb2NhbCBzdG9yYWdlLCBpdCBtaWdodCBza2lwIHRoZSBvbGQgdHVwbGUgZHVlIHRv IGRlbGV0aW9uIGFuZCBtaXNzIHRoZSBuZXcgCit0dXBsZSBiZWNhdXNlIHRoZSBzY2FuIGRvZXMg bm90IHJlLXJlYWQgdGhlIHBhZ2UuIE5vdGUgaXQgYWZmZWN0cyBub3Qgb25seSBidHJlZQorc2Nh biBidXQgYWxzbyBhIGhlYXAgc2Nhbi4KKwogSW4gbW9zdCBjYXNlcyB3ZSByZWxlYXNlIG91ciBs b2NrIGFuZCBwaW4gb24gYSBwYWdlIGJlZm9yZSBhdHRlbXB0aW5nCiB0byBhY3F1aXJlIHBpbiBh bmQgbG9jayBvbiB0aGUgcGFnZSB3ZSBhcmUgbW92aW5nIHRvLiAgSW4gYSBmZXcgcGxhY2VzCiBp dCBpcyBuZWNlc3NhcnkgdG8gbG9jayB0aGUgbmV4dCBwYWdlIGJlZm9yZSByZWxlYXNpbmcgdGhl IGN1cnJlbnQgb25lLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4 aW5nLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRleCBjYTMzYTg1 NDI3OC4uNjFhNTA5N2Y3ODkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBAIC0x MTcsNiArMTE3LDcgQEAKICNpbmNsdWRlICJ1dGlscy9tdWx0aXJhbmdldHlwZXMuaCIKICNpbmNs dWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2lu Y2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAvKiB3YWl0TW9kZSBhcmd1bWVudCB0 byBjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnQoKSAqLwogdHlwZWRlZiBlbnVt CkBAIC03ODAsNyArNzgxLDkgQEAgY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50 KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCS8qCiAJICogU2VhcmNoIHRoZSB0dXBs ZXMgdGhhdCBhcmUgaW4gdGhlIGluZGV4IGZvciBhbnkgdmlvbGF0aW9ucywgaW5jbHVkaW5nCiAJ ICogdHVwbGVzIHRoYXQgYXJlbid0IHZpc2libGUgeWV0LgotCSAqLworCSAqIFNuYXBzaG90IGRp cnR5IG1heSBtaXNzIHNvbWUgdHVwbGVzIGluIHRoZSBjYXNlIG9mIHBhcmFsbGVsIHVwZGF0ZXMs CisJICogYnV0IGl0IGlzIGFjY2VwdGFibGUgaGVyZS4KKwkqLwogCUluaXREaXJ0eVNuYXBzaG90 KERpcnR5U25hcHNob3QpOwogCiAJZm9yIChpID0gMDsgaSA8IGluZG5rZXlhdHRzOyBpKyspCkBA IC05NDMsNiArOTQ2LDggQEAgcmV0cnk6CiAKIAlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90 KGV4aXN0aW5nX3Nsb3QpOwogCisJaWYgKCFjb25mbGljdCkKKwkJSU5KRUNUSU9OX1BPSU5UKCJj aGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnRfbm9fY29uZmxpY3QiLCBOVUxMKTsK IAlyZXR1cm4gIWNvbmZsaWN0OwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYwppbmRleCA1ZGY1YTQ2MTJiNi4uNGY2OTc2YjRhZjQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMjg2LDYgKzI4Niw3IEBACiAjaW5jbHVkZSAi dGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxz L2d1Yy5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0 aWxzL2ludmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKQEAgLTI5NjEsNyArMjk2MiwxMCBAQCBhcHBseV9oYW5kbGVfdXBkYXRl X2ludGVybmFsKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJCQljb25mbGljdHR1cGxlLm9y aWdpbiAhPSByZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luKQogCQkJdHlwZSA9IENUX1VQREFURV9E RUxFVEVEOwogCQllbHNlCisJCXsKKwkJCUlOSkVDVElPTl9QT0lOVCgiYXBwbHlfaGFuZGxlX3Vw ZGF0ZV9pbnRlcm5hbF91cGRhdGVfbWlzc2luZyIsIE5VTEwpOwogCQkJdHlwZSA9IENUX1VQREFU RV9NSVNTSU5HOworCQl9CiAKIAkJLyogU3RvcmUgdGhlIG5ldyB0dXBsZSBmb3IgY29uZmxpY3Qg cmVwb3J0aW5nICovCiAJCXNsb3Rfc3RvcmVfZGF0YShuZXdzbG90LCByZWxtYXBlbnRyeSwgbmV3 dHVwKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3NuYXBzaG90LmggYi9zcmMvaW5j bHVkZS91dGlscy9zbmFwc2hvdC5oCmluZGV4IDBlNTQ2ZWMxNDk3Li4xODlkZmQ3MTEwMyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvc25hcHNob3QuaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy9zbmFwc2hvdC5oCkBAIC01Myw2ICs1MywxMyBAQCB0eXBlZGVmIGVudW0gU25hcHNob3RU eXBlCiAJICogLSBwcmV2aW91cyBjb21tYW5kcyBvZiB0aGlzIHRyYW5zYWN0aW9uCiAJICogLSBj aGFuZ2VzIG1hZGUgYnkgdGhlIGN1cnJlbnQgY29tbWFuZAogCSAqCisJICogTm90ZTogc3VjaCBh IHNuYXBzaG90IG1heSBtaXNzIGFuIGV4aXN0aW5nIGxvZ2ljYWwgdHVwbGUgaW4gY2FzZSBvZgor CSAqIHBhcmFsbGVsIHVwZGF0ZS4KKwkgKiBJZiBhIG5ldyB2ZXJzaW9uIG9mIGEgdHVwbGUgaXMg aW5zZXJ0ZWQgaW50byBhbiBhbHJlYWR5IHByb2Nlc3NlZCBwYWdlCisJICogYnV0IHRoZSBvbGQg b25lIG1hcmtlZCB3aXRoIGNvbW1pdHRlZCB4bWF4IC0gc25hcHNob3Qgd2lsbCBza2lwIHRoZSBv bGQKKwkgKiBvbmUgYW5kIG5ldmVyIG1lZXQgdGhlIG5ldyBvbmUgZHVyaW5nIHRoYXQgc2NhbiAt IHJlc3VsdGluZyBpbiBza2lwcGluZworCSAqIHRoYXQgdHVwbGUgYXQgYWxsLgorCSAqCiAJICog RG9lcyBfbm90XyBpbmNsdWRlOgogCSAqIC0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIChhcyBv ZiB0aGUgY3VycmVudCBpbnN0YW50KQogCSAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTgyLDYgKzg5 LDEzIEBAIHR5cGVkZWYgZW51bSBTbmFwc2hvdFR5cGUKIAkgKiB0cmFuc2FjdGlvbiBhbmQgY29t bWl0dGVkL2Fib3J0ZWQgeGFjdHMgYXJlIGNvbmNlcm5lZC4gIEhvd2V2ZXIsIGl0CiAJICogYWxz byBpbmNsdWRlcyB0aGUgZWZmZWN0cyBvZiBvdGhlciB4YWN0cyBzdGlsbCBpbiBwcm9ncmVzcy4K IAkgKgorCSAqIE5vdGU6IHN1Y2ggYSBzbmFwc2hvdCBtYXkgbWlzcyBhbiBleGlzdGluZyBsb2dp Y2FsIHR1cGxlIGluIGNhc2Ugb2YKKwkgKiBwYXJhbGxlbCB1cGRhdGUuCisJICogSWYgYSBuZXcg dmVyc2lvbiBvZiBhIHR1cGxlIGlzIGluc2VydGVkIGludG8gYW4gYWxyZWFkeSBwcm9jZXNzZWQg cGFnZSBidXQgdGhlCisJICogb2xkIG9uZSBtYXJrZWQgd2l0aCBjb21taXR0ZWQvaW4tcHJvZ3Jl c3MgeG1heCAtIHNuYXBzaG90IHdpbGwgc2tpcCB0aGUgb2xkIG9uZQorCSAqIGFuZCBuZXZlciBt ZWV0IHRoZSBuZXcgb25lIGR1cmluZyB0aGF0IHNjYW4gLSByZXN1bHRpbmcgaW4gc2tpcHBpbmcg dGhhdCB0dXBsZQorCSAqIGF0IGFsbC4KKwkgKgogCSAqIEEgc3BlY2lhbCBoYWNrIGlzIHRoYXQg d2hlbiBhIHNuYXBzaG90IG9mIHRoaXMgdHlwZSBpcyB1c2VkIHRvCiAJICogZGV0ZXJtaW5lIHR1 cGxlIHZpc2liaWxpdHksIHRoZSBwYXNzZWQtaW4gc25hcHNob3Qgc3RydWN0IGlzIHVzZWQgYXMg YW4KIAkgKiBvdXRwdXQgYXJndW1lbnQgdG8gcmV0dXJuIHRoZSB4aWRzIG9mIGNvbmN1cnJlbnQg eGFjdHMgdGhhdCBhZmZlY3RlZApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21l c29uLmJ1aWxkIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCmluZGV4IDg1ZDEw YTg5OTk0Li43ZjI5NjQ3YjUzOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21l c29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZApAQCAtNDYs NiArNDYsMTAgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDM0X3RlbXBvcmFsLnBsJywKICAgICAg ICd0LzAzNV9jb25mbGljdHMucGwnLAogICAgICAgJ3QvMDM2X3NlcXVlbmNlcy5wbCcsCisgICAg ICAndC8wMzdfZGVsZXRlX21pc3NpbmdfcmFjZS5wbCcsCisgICAgICAndC8wMzhfdXBkYXRlX21p c3NpbmdfcmFjZS5wbCcsCisgICAgICAndC8wMzlfdXBkYXRlX21pc3Npbmdfd2l0aF9yZXRhaW4u cGwnLAorICAgICAgJ3QvMDQwX3VwZGF0ZV9taXNzaW5nX3NpbXVsYXRpb24ucGwnLAogICAgICAg J3QvMTAwX2J1Z3MucGwnLAogICAgIF0sCiAgIH0sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMzdfZGVsZXRlX21pc3NpbmdfcmFjZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAzN19kZWxldGVfbWlzc2luZ19yYWNlLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi5hMzE5NTEzZmQ2MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAzN19kZWxldGVfbWlzc2luZ19yYWNlLnBsCkBAIC0wLDAgKzEsMTM3 IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKworIyBUZXN0IHRoZSBjb25mbGljdCBkZXRlY3Rpb24gYW5kIHJlc29sdXRpb24gaW4g bG9naWNhbCByZXBsaWNhdGlvbgordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAn YWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK2lmICgkRU5We2VuYWJsZV9pbmplY3Rpb25f cG9pbnRzfSBuZSAneWVzJykKK3sKKwlwbGFuIHNraXBfYWxsID0+ICdJbmplY3Rpb24gcG9pbnRz IG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBidWlsZCc7Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyBTZXQgaXQgdG8gMCB0byBtYWtlIHNldCBzdWNjZXNzOyBUT0RPOiBkZWxldGUg dGhhdCBmb3IgY29tbWl0CitteSAkc2ltdWxhdGVfcmFjZV9jb25kaXRpb24gPSAxOworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMgU2V0dXAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBJbml0aWFs aXplIHB1Ymxpc2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93 c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsCisJcXEodHJhY2tfY29tbWl0X3RpbWVzdGFtcCA9IG9uKSk7Cisk bm9kZV9wdWJsaXNoZXItPnN0YXJ0OworCisKKyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZSB3aXRo IHRyYWNrX2NvbW1pdF90aW1lc3RhbXAgZW5hYmxlZAorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2Ny aWJlci0+aW5pdDsKKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLAorCXFxKHRyYWNrX2NvbW1pdF90aW1lc3RhbXAgPSBvbikpOworJG5vZGVfc3Vic2NyaWJl ci0+c3RhcnQ7CisKKworIyBDaGVjayBpZiB0aGUgZXh0ZW5zaW9uIGluamVjdGlvbl9wb2ludHMg aXMgYXZhaWxhYmxlLCBhcyBpdCBtYXkgYmUKKyMgcG9zc2libGUgdGhhdCB0aGlzIHNjcmlwdCBp cyBydW4gd2l0aCBpbnN0YWxsY2hlY2ssIHdoZXJlIHRoZSBtb2R1bGUKKyMgd291bGQgbm90IGJl IGluc3RhbGxlZCBieSBkZWZhdWx0LgoraWYgKCEkbm9kZV9zdWJzY3JpYmVyLT5jaGVja19leHRl bnNpb24oJ2luamVjdGlvbl9wb2ludHMnKSkKK3sKKwlwbGFuIHNraXBfYWxsID0+ICdFeHRlbnNp b24gaW5qZWN0aW9uX3BvaW50cyBub3QgaW5zdGFsbGVkJzsKK30KKworIyBDcmVhdGUgdGFibGUg b24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLAor CSJDUkVBVEUgVEFCTEUgY29uZl90YWIoYSBpbnQgUFJJTUFSWSBrZXksIGRhdGEgdGV4dCk7Iik7 CisKKyMgQ3JlYXRlIHNpbWlsYXIgdGFibGUgb24gc3Vic2NyaWJlciB3aXRoIGFkZGl0aW9uYWwg aW5kZXggdG8gZGlzYWJsZSBIT1QgdXBkYXRlcworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KAorCSdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSBjb25mX3RhYihhIGludCBQUklNQVJZIGtl eSwgZGF0YSB0ZXh0KTsKKwkgQ1JFQVRFIElOREVYIGRhdGFfaW5kZXggT04gY29uZl90YWIoZGF0 YSk7Iik7CisKKyMgU2V0IHVwIGV4dGVuc2lvbiB0byBzaW11bGF0ZSByYWNlIGNvbmRpdGlvbgor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgRVhURU5TSU9O IGluamVjdGlvbl9wb2ludHM7Jyk7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorbXkg JHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9 cG9zdGdyZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JF QVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIGNvbmZfdGFiIik7CisKKyMgSW5zZXJ0 IHJvdyB0byBiZSB1cGRhdGVkIGxhdGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJJTlNFUlQgSU5UTyBjb25mX3RhYihhLCBkYXRhKSBWQUxVRVMgKDEsJ2Zyb21w dWInKSIpOworCisjIENyZWF0ZSB0aGUgc3Vic2NyaXB0aW9uCitteSAkYXBwbmFtZSA9ICd0YXBf c3ViJzsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCSJDUkVB VEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKKwkgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3Ry IGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnCisJIFBVQkxJQ0FUSU9OIHRhcF9wdWIiKTsKKwor IyBXYWl0IGZvciBpbml0aWFsIHRhYmxlIHN5bmMgdG8gZmluaXNoCiskbm9kZV9zdWJzY3JpYmVy LT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICRhcHBuYW1lKTsK KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmFjZSBj b25kaXRpb24gYmVjYXVzZSBvZiBEaXJ0eVNuYXBzaG90CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitteSAkcHNxbF9zZXNzaW9uX3N1YnNjcmliZXIgPSAk bm9kZV9zdWJzY3JpYmVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CitpZiAoJHNpbXVs YXRlX3JhY2VfY29uZGl0aW9uKQoreworCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdpbmRleF9nZXRuZXh0 X3Nsb3RfYmVmb3JlX2ZldGNoX2FwcGx5X2RpcnR5JywgJ3dhaXQnKSIpOworfQorCitteSAkbG9n X29mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyMgRGVsZXRlIHR1cGxl IG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRF TEVURSBGUk9NIGNvbmZfdGFiIFdIRVJFIGE9MTsiKTsKKworaWYgKCRzaW11bGF0ZV9yYWNlX2Nv bmRpdGlvbikKK3sKKwkjIFdhaXQgYXBwbHkgd29ya2VyIHRvIHN0YXJ0IHRoZSBzZWFyY2ggZm9y IHRoZSB0dXBsZSB1c2luZyBpbmRleAorCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2V2ZW50 KCdsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlcicsCisJCSdpbmRleF9nZXRuZXh0X3Ns b3RfYmVmb3JlX2ZldGNoX2FwcGx5X2RpcnR5Jyk7Cit9CisKKyMgVXBkYXRlciB0dXBsZSBvbiBz dWJzY3JpYmVyCiskcHNxbF9zZXNzaW9uX3N1YnNjcmliZXItPnF1ZXJ5X3VudGlsKAorCXFyL3N0 YXJ0LywgcXFbCisJXFxlY2hvIHN0YXJ0CisJVVBEQVRFIGNvbmZfdGFiIFNFVCBkYXRhID0gJ2Zy b21zdWJuZXcnIFdIRVJFIChhPTEpOworXSk7CisKKworaWYgKCRzaW11bGF0ZV9yYWNlX2NvbmRp dGlvbikKK3sKKwkjIFdha2UgdXAgYXBwbHkgd29ya2VyCisJJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIgorCQlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2lu ZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknKTsKKwkJU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfd2FrZXVwKCdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoX2Fw cGx5X2RpcnR5Jyk7CisJCSIpOworfQorCisjIFR1cGxlIHdhcyB1cGRhdGVkIC0gc28sIHdlIGhh dmUgY29uZmxpY3QKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9jb25mbGlj dCBkZXRlY3RlZCBvbiByZWxhdGlvbiBcInB1YmxpYy5jb25mX3RhYlwiLywKKwkkbG9nX29mZnNl dCk7CisKKyMgQnV0IHR1cGxlIHNob3VsZCBiZSBkZWxldGVkIG9uIHN1YnNjcmliZXIgYW55IHdh eQoraXMoJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTRUxFQ1QgY291 bnQoKikgZnJvbSBjb25mX3RhYicpLCAwLCAncmVjb3JkIGRlbGV0ZWQgb24gc3Vic2NyaWJlcicp OworCitvayghJG5vZGVfc3Vic2NyaWJlci0+bG9nX2NvbnRhaW5zKAorCQlxci9MT0c6ICBjb25m bGljdCBkZXRlY3RlZCBvbiByZWxhdGlvbiBcInB1YmxpYy5jb25mX3RhYlwiOiBjb25mbGljdD1k ZWxldGVfbWlzc2luZy8sCisJCSRsb2dfb2Zmc2V0KSwgJ2ludmFsaWQgY29uZmxpY3QgZGV0ZWN0 ZWQnKTsKKworb2soJG5vZGVfc3Vic2NyaWJlci0+bG9nX2NvbnRhaW5zKAorCQlxci9MT0c6ICBj b25mbGljdCBkZXRlY3RlZCBvbiByZWxhdGlvbiBcInB1YmxpYy5jb25mX3RhYlwiOiBjb25mbGlj dD1kZWxldGVfb3JpZ2luX2RpZmZlcnMvLAorCQkkbG9nX29mZnNldCksICdjb3JyZWN0IGNvbmZs aWN0IGRldGVjdGVkJyk7CisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDM4X3VwZGF0ZV9taXNzaW5nX3JhY2UucGwgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMzhfdXBkYXRlX21pc3NpbmdfcmFjZS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uYjcxZmRjMGMxMzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzhfdXBkYXRlX21pc3NpbmdfcmFjZS5wbApAQCAtMCwwICsx LDEzOSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCisKKyMgVGVzdCB0aGUgY29uZmxpY3QgZGV0ZWN0aW9uIGFuZCByZXNvbHV0aW9u IGluIGxvZ2ljYWwgcmVwbGljYXRpb24KK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwg PT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FM OjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitpZiAoJEVOVntlbmFibGVfaW5qZWN0 aW9uX3BvaW50c30gbmUgJ3llcycpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnSW5qZWN0aW9uIHBv aW50cyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQnOworfQorCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMgU2V0IGl0IHRvIDAgdG8gbWFrZSBzZXQgc3VjY2VzczsgVE9ETzogZGVs ZXRlIHRoYXQgZm9yIGNvbW1pdAorbXkgJHNpbXVsYXRlX3JhY2VfY29uZGl0aW9uID0gMTsKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjIFNldHVwCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgSW5p dGlhbGl6ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxpc2hlci0+aW5pdChh bGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXItPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxKHRyYWNrX2NvbW1pdF90aW1lc3RhbXAgPSBvbikp OworJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUg d2l0aCB0cmFja19jb21taXRfdGltZXN0YW1wIGVuYWJsZWQKK215ICRub2RlX3N1YnNjcmliZXIg PSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1 YnNjcmliZXItPmluaXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywKKwlxcSh0cmFja19jb21taXRfdGltZXN0YW1wID0gb24pKTsKKyRub2RlX3N1YnNj cmliZXItPnN0YXJ0OworCisKKyMgQ2hlY2sgaWYgdGhlIGV4dGVuc2lvbiBpbmplY3Rpb25fcG9p bnRzIGlzIGF2YWlsYWJsZSwgYXMgaXQgbWF5IGJlCisjIHBvc3NpYmxlIHRoYXQgdGhpcyBzY3Jp cHQgaXMgcnVuIHdpdGggaW5zdGFsbGNoZWNrLCB3aGVyZSB0aGUgbW9kdWxlCisjIHdvdWxkIG5v dCBiZSBpbnN0YWxsZWQgYnkgZGVmYXVsdC4KK2lmICghJG5vZGVfc3Vic2NyaWJlci0+Y2hlY2tf ZXh0ZW5zaW9uKCdpbmplY3Rpb25fcG9pbnRzJykpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnRXh0 ZW5zaW9uIGluamVjdGlvbl9wb2ludHMgbm90IGluc3RhbGxlZCc7Cit9CisKKyMgQ3JlYXRlIHRh YmxlIG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywKKwkiQ1JFQVRFIFRBQkxFIGNvbmZfdGFiKGEgaW50IFBSSU1BUlkga2V5LCBkYXRhIHRleHQp OyIpOworCisjIENyZWF0ZSBzaW1pbGFyIHRhYmxlIG9uIHN1YnNjcmliZXIgd2l0aCBhZGRpdGlv bmFsIGluZGV4IHRvIGRpc2FibGUgSE9UIHVwZGF0ZXMgYW5kIGFkZGl0aW9uYWwgY29sdW1uCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxF IGNvbmZfdGFiKGEgaW50IFBSSU1BUlkga2V5LCBkYXRhIHRleHQsIGkgaW50IERFRkFVTFQgMCk7 CisJIENSRUFURSBJTkRFWCBpX2luZGV4IE9OIGNvbmZfdGFiKGkpOyIpOworCisjIFNldCB1cCBl eHRlbnNpb24gdG8gc2ltdWxhdGUgcmFjZSBjb25kaXRpb24KKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOycp OworCisjIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24KK215ICRwdWJsaXNoZXJfY29ubnN0ciA9 ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBf cHViIEZPUiBUQUJMRSBjb25mX3RhYiIpOworCisjIEluc2VydCByb3cgdG8gYmUgdXBkYXRlZCBs YXRlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElO VE8gY29uZl90YWIoYSwgZGF0YSkgVkFMVUVTICgxLCdmcm9tcHViJykiKTsKKworIyBDcmVhdGUg dGhlIHN1YnNjcmlwdGlvbgorbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7Ciskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBf c3ViCisJIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRh cHBuYW1lJworCSBQVUJMSUNBVElPTiB0YXBfcHViIik7CisKKyMgV2FpdCBmb3IgaW5pdGlhbCB0 YWJsZSBzeW5jIHRvIGZpbmlzaAorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0 aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAkYXBwbmFtZSk7CisKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJhY2UgY29uZGl0aW9uIGJlY2F1c2Ugb2Yg RGlydHlTbmFwc2hvdAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworbXkgJHBzcWxfc2Vzc2lvbl9zdWJzY3JpYmVyID0gJG5vZGVfc3Vic2NyaWJlci0+YmFj a2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworaWYgKCRzaW11bGF0ZV9yYWNlX2NvbmRpdGlvbikK K3sKKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX2F0dGFjaCgnaW5kZXhfZ2V0bmV4dF9zbG90X2JlZm9yZV9mZXRjaF9hcHBs eV9kaXJ0eScsICd3YWl0JykiKTsKK30KKworbXkgJGxvZ19vZmZzZXQgPSAtcyAkbm9kZV9zdWJz Y3JpYmVyLT5sb2dmaWxlOworCisjIFVwZGF0ZSB0dXBsZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlVQREFURSBjb25mX3RhYiBTRVQgZGF0 YSA9ICdmcm9tcHVibmV3JyBXSEVSRSAoYT0xKTsiKTsKKworCitpZiAoJHNpbXVsYXRlX3JhY2Vf Y29uZGl0aW9uKQoreworCSMgV2FpdCBhcHBseSB3b3JrZXIgdG8gc3RhcnQgdGhlIHNlYXJjaCBm b3IgdGhlIHR1cGxlIHVzaW5nIGluZGV4CisJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfZXZl bnQoJ2xvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyJywgJ2luZGV4X2dldG5leHRfc2xv dF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknKTsKK30KKworIyBVcGRhdGUgYWRkaXRpb25hbCgh KSBjb2x1bW4gb24gdGhlIHN1YnNjcmliZXIKKyRwc3FsX3Nlc3Npb25fc3Vic2NyaWJlci0+cXVl cnlfdW50aWwoCisJcXIvc3RhcnQvLCBxcVsKKwlcXGVjaG8gc3RhcnQKKwlVUERBVEUgY29uZl90 YWIgU0VUIGkgPSAxIFdIRVJFIChhPTEpOworXSk7CisKKworaWYgKCRzaW11bGF0ZV9yYWNlX2Nv bmRpdGlvbikKK3sKKwkjIFdha2UgdXAgYXBwbHkgd29ya2VyCisJJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsIgorCQlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2go J2luZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknKTsKKwkJU0VMRUNU IGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNo X2FwcGx5X2RpcnR5Jyk7CisJCSIpOworfQorCisjIFR1cGxlIHdhcyB1cGRhdGVkIC0gc28sIHdl IGhhdmUgY29uZmxpY3QKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9jb25m bGljdCBkZXRlY3RlZCBvbiByZWxhdGlvbiBcInB1YmxpYy5jb25mX3RhYlwiLywKKwkkbG9nX29m ZnNldCk7CisKKyMgV2UgbmVlZCBuZXcgY29sdW1uIHZhbHVlIGJlIHN5bmNlZCB3aXRoIHN1YnNj cmliZXIKK2lzKCRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0VMRUNU IGRhdGEgZnJvbSBjb25mX3RhYiBXSEVSRSBhID0gMScpLCAnZnJvbXB1Ym5ldycsICdyZWNvcmQg dXBkYXRlZCBvbiBzdWJzY3JpYmVyJyk7CisjIEFuZCBhZGRpdGlvbmFsIGNvbHVtbiBtYWludGFp biB1cGRhdGVkIHZhbHVlCitpcygkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgJ1NFTEVDVCBpIGZyb20gY29uZl90YWIgV0hFUkUgYSA9IDEnKSwgMSwgJ2NvbHVtbiByZWNv cmQgdXBkYXRlZCBvbiBzdWJzY3JpYmVyJyk7CisKK29rKCEkbm9kZV9zdWJzY3JpYmVyLT5sb2df Y29udGFpbnMoCisJCXFyL0xPRzogIGNvbmZsaWN0IGRldGVjdGVkIG9uIHJlbGF0aW9uIFwicHVi bGljLmNvbmZfdGFiXCI6IGNvbmZsaWN0PXVwZGF0ZV9taXNzaW5nLywKKwkJJGxvZ19vZmZzZXQp LCAnaW52YWxpZCBjb25mbGljdCBkZXRlY3RlZCcpOworCitvaygkbm9kZV9zdWJzY3JpYmVyLT5s b2dfY29udGFpbnMoCisJCXFyL0xPRzogIGNvbmZsaWN0IGRldGVjdGVkIG9uIHJlbGF0aW9uIFwi cHVibGljLmNvbmZfdGFiXCI6IGNvbmZsaWN0PXVwZGF0ZV9vcmlnaW5fZGlmZmVycy8sCisJCSRs b2dfb2Zmc2V0KSwgJ2NvcnJlY3QgY29uZmxpY3QgZGV0ZWN0ZWQnKTsKKworZG9uZV90ZXN0aW5n KCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzlfdXBkYXRlX21pc3Np bmdfd2l0aF9yZXRhaW4ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzlfdXBkYXRlX21p c3Npbmdfd2l0aF9yZXRhaW4ucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjZmN2RmZDI4ZDM3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDM5X3VwZGF0ZV9taXNzaW5nX3dpdGhfcmV0YWluLnBsCkBAIC0wLDAgKzEsMTQxIEBACisj IENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAK KworIyBUZXN0IHRoZSBjb25mbGljdCBkZXRlY3Rpb24gYW5kIHJlc29sdXRpb24gaW4gbG9naWNh bCByZXBsaWNhdGlvbgordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsK K3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK2lmICgkRU5We2VuYWJsZV9pbmplY3Rpb25fcG9pbnRz fSBuZSAneWVzJykKK3sKKwlwbGFuIHNraXBfYWxsID0+ICdJbmplY3Rpb24gcG9pbnRzIG5vdCBz dXBwb3J0ZWQgYnkgdGhpcyBidWlsZCc7Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyBTZXQgaXQgdG8gMCB0byBtYWtlIHNldCBzdWNjZXNzOyBUT0RPOiBkZWxldGUgdGhhdCBm b3IgY29tbWl0CitteSAkc2ltdWxhdGVfcmFjZV9jb25kaXRpb24gPSAxOworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg U2V0dXAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBJbml0aWFsaXplIHB1 Ymxpc2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJl YW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsCisJcXEodHJhY2tfY29tbWl0X3RpbWVzdGFtcCA9IG9uKSk7Ciskbm9kZV9w dWJsaXNoZXItPnN0YXJ0OworCisKKyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZSB3aXRoIHRyYWNr X2NvbW1pdF90aW1lc3RhbXAgZW5hYmxlZAorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+ aW5pdDsKKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAor CXFxKHRyYWNrX2NvbW1pdF90aW1lc3RhbXAgPSBvbikpOworJG5vZGVfc3Vic2NyaWJlci0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXEod2FsX2xldmVsID0gJ3JlcGxpY2EnKSk7 Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworCisjIENoZWNrIGlmIHRoZSBleHRlbnNpb24g aW5qZWN0aW9uX3BvaW50cyBpcyBhdmFpbGFibGUsIGFzIGl0IG1heSBiZQorIyBwb3NzaWJsZSB0 aGF0IHRoaXMgc2NyaXB0IGlzIHJ1biB3aXRoIGluc3RhbGxjaGVjaywgd2hlcmUgdGhlIG1vZHVs ZQorIyB3b3VsZCBub3QgYmUgaW5zdGFsbGVkIGJ5IGRlZmF1bHQuCitpZiAoISRub2RlX3N1YnNj cmliZXItPmNoZWNrX2V4dGVuc2lvbignaW5qZWN0aW9uX3BvaW50cycpKQoreworCXBsYW4gc2tp cF9hbGwgPT4gJ0V4dGVuc2lvbiBpbmplY3Rpb25fcG9pbnRzIG5vdCBpbnN0YWxsZWQnOworfQor CisjIENyZWF0ZSB0YWJsZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAorCSdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSBjb25mX3RhYihhIGludCBQUklNQVJZIGtl eSwgZGF0YSB0ZXh0KTsiKTsKKworIyBDcmVhdGUgc2ltaWxhciB0YWJsZSBvbiBzdWJzY3JpYmVy IHdpdGggYWRkaXRpb25hbCBpbmRleCB0byBkaXNhYmxlIEhPVCB1cGRhdGVzIGFuZCBhZGRpdGlv bmFsIGNvbHVtbgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJ IkNSRUFURSBUQUJMRSBjb25mX3RhYihhIGludCBQUklNQVJZIGtleSwgZGF0YSB0ZXh0LCBpIGlu dCBERUZBVUxUIDApOworCSBDUkVBVEUgSU5ERVggaV9pbmRleCBPTiBjb25mX3RhYihpKTsiKTsK KworIyBTZXQgdXAgZXh0ZW5zaW9uIHRvIHNpbXVsYXRlIHJhY2UgY29uZGl0aW9uCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBFWFRFTlNJT04gaW5qZWN0 aW9uX3BvaW50czsnKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlz aGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jl cyc7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVC TElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgY29uZl90YWIiKTsKKworIyBJbnNlcnQgcm93IHRv IGJlIHVwZGF0ZWQgbGF0ZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIklOU0VSVCBJTlRPIGNvbmZfdGFiKGEsIGRhdGEpIFZBTFVFUyAoMSwnZnJvbXB1YicpIik7 CisKKyMgQ3JlYXRlIHRoZSBzdWJzY3JpcHRpb24KK215ICRhcHBuYW1lID0gJ3RhcF9zdWInOwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJT Q1JJUFRJT04gdGFwX3N1YgorCSBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGlj YXRpb25fbmFtZT0kYXBwbmFtZScKKwkgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChyZXRhaW5f ZGVhZF90dXBsZXMgPSB0cnVlKSIpOworCisjIFdhaXQgZm9yIGluaXRpYWwgdGFibGUgc3luYyB0 byBmaW5pc2gKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRu b2RlX3B1Ymxpc2hlciwgJGFwcG5hbWUpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIyBSYWNlIGNvbmRpdGlvbiBiZWNhdXNlIG9mIERpcnR5U25hcHNo b3QKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK215ICRw c3FsX3Nlc3Npb25fc3Vic2NyaWJlciA9ICRub2RlX3N1YnNjcmliZXItPmJhY2tncm91bmRfcHNx bCgncG9zdGdyZXMnKTsKK2lmICgkc2ltdWxhdGVfcmFjZV9jb25kaXRpb24pCit7CisJJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19hdHRhY2goJ2luZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknLCAn d2FpdCcpIik7Cit9CisKK215ICRsb2dfb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9n ZmlsZTsKKworIyBVcGRhdGUgdHVwbGUgb24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJVUERBVEUgY29uZl90YWIgU0VUIGRhdGEgPSAnZnJvbXB1 Ym5ldycgV0hFUkUgKGE9MSk7Iik7CisKKworaWYgKCRzaW11bGF0ZV9yYWNlX2NvbmRpdGlvbikK K3sKKwkjIFdhaXQgYXBwbHkgd29ya2VyIHRvIHN0YXJ0IHRoZSBzZWFyY2ggZm9yIHRoZSB0dXBs ZSB1c2luZyBpbmRleAorCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2V2ZW50KCdsb2dpY2Fs IHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlcicsICdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2Zl dGNoX2FwcGx5X2RpcnR5Jyk7Cit9CisKKyMgVXBkYXRlIGFkZGl0aW9uYWwoISkgY29sdW1uIG9u IHRoZSBzdWJzY3JpYmVyCiskcHNxbF9zZXNzaW9uX3N1YnNjcmliZXItPnF1ZXJ5X3VudGlsKAor CXFyL3N0YXJ0LywgcXFbCisJXFxlY2hvIHN0YXJ0CisJVVBEQVRFIGNvbmZfdGFiIFNFVCBpID0g MSBXSEVSRSAoYT0xKTsKK10pOworCisKK2lmICgkc2ltdWxhdGVfcmFjZV9jb25kaXRpb24pCit7 CisJIyBXYWtlIHVwIGFwcGx5IHdvcmtlcgorCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCIKKwkJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdpbmRleF9nZXRu ZXh0X3Nsb3RfYmVmb3JlX2ZldGNoX2FwcGx5X2RpcnR5Jyk7CisJCVNFTEVDVCBpbmplY3Rpb25f cG9pbnRzX3dha2V1cCgnaW5kZXhfZ2V0bmV4dF9zbG90X2JlZm9yZV9mZXRjaF9hcHBseV9kaXJ0 eScpOworCQkiKTsKK30KKworIyBUdXBsZSB3YXMgdXBkYXRlZCAtIHNvLCB3ZSBoYXZlIGNvbmZs aWN0Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvY29uZmxpY3QgZGV0ZWN0 ZWQgb24gcmVsYXRpb24gXCJwdWJsaWMuY29uZl90YWJcIi8sCisJJGxvZ19vZmZzZXQpOworCisj IFdlIG5lZWQgbmV3IGNvbHVtbiB2YWx1ZSBiZSBzeW5jZWQgd2l0aCBzdWJzY3JpYmVyCitpcygk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NFTEVDVCBkYXRhIGZyb20g Y29uZl90YWIgV0hFUkUgYSA9IDEnKSwgJ2Zyb21wdWJuZXcnLCAncmVjb3JkIHVwZGF0ZWQgb24g c3Vic2NyaWJlcicpOworIyBBbmQgYWRkaXRpb25hbCBjb2x1bW4gbWFpbnRhaW4gdXBkYXRlZCB2 YWx1ZQoraXMoJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTRUxFQ1Qg aSBmcm9tIGNvbmZfdGFiIFdIRVJFIGEgPSAxJyksIDEsICdjb2x1bW4gcmVjb3JkIHVwZGF0ZWQg b24gc3Vic2NyaWJlcicpOworCitvayghJG5vZGVfc3Vic2NyaWJlci0+bG9nX2NvbnRhaW5zKAor CQlxci9MT0c6ICBjb25mbGljdCBkZXRlY3RlZCBvbiByZWxhdGlvbiBcInB1YmxpYy5jb25mX3Rh YlwiOiBjb25mbGljdD11cGRhdGVfZGVsZXRlZC8sCisJCSRsb2dfb2Zmc2V0KSwgJ2ludmFsaWQg Y29uZmxpY3QgZGV0ZWN0ZWQnKTsKKworb2soJG5vZGVfc3Vic2NyaWJlci0+bG9nX2NvbnRhaW5z KAorCQlxci9MT0c6ICBjb25mbGljdCBkZXRlY3RlZCBvbiByZWxhdGlvbiBcInB1YmxpYy5jb25m X3RhYlwiOiBjb25mbGljdD11cGRhdGVfb3JpZ2luX2RpZmZlcnMvLAorCQkkbG9nX29mZnNldCks ICdjb3JyZWN0IGNvbmZsaWN0IGRldGVjdGVkJyk7CisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDQwX3VwZGF0ZV9taXNzaW5nX3NpbXVsYXRp b24ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNDBfdXBkYXRlX21pc3Npbmdfc2ltdWxh dGlvbi5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzIyZTkzMWMx NzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNDBfdXBkYXRl X21pc3Npbmdfc2ltdWxhdGlvbi5wbApAQCAtMCwwICsxLDEyMyBAQAorIyBDb3B5cmlnaHQgKGMp IDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVzdCB0aGUg Y29uZmxpY3QgZGV0ZWN0aW9uIGFuZCByZXNvbHV0aW9uIGluIGxvZ2ljYWwgcmVwbGljYXRpb24K K3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBJUEM6 OlJ1biBxdyhzdGFydCBmaW5pc2gpOwordXNlIFRlc3Q6Ok1vcmU7CisKK2lmICgkRU5We2VuYWJs ZV9pbmplY3Rpb25fcG9pbnRzfSBuZSAneWVzJykKK3sKKwlwbGFuIHNraXBfYWxsID0+ICdJbmpl Y3Rpb24gcG9pbnRzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBidWlsZCc7Cit9CisKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgU2V0dXAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworIyBJbml0aWFsaXplIHB1Ymxpc2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNo ZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVf cHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1 Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXEodHJhY2tfY29tbWl0 X3RpbWVzdGFtcCA9IG9uKSk7Ciskbm9kZV9wdWJsaXNoZXItPnN0YXJ0OworCisjIENyZWF0ZSBz dWJzY3JpYmVyIG5vZGUgd2l0aCB0cmFja19jb21taXRfdGltZXN0YW1wIGVuYWJsZWQKK215ICRu b2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmli ZXInKTsKKyRub2RlX3N1YnNjcmliZXItPmluaXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRf Y29uZigncG9zdGdyZXNxbC5jb25mJywKKwlxcSh0cmFja19jb21taXRfdGltZXN0YW1wID0gb24p KTsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisjIENoZWNrIGlmIHRoZSBleHRlbnNpb24g aW5qZWN0aW9uX3BvaW50cyBpcyBhdmFpbGFibGUsIGFzIGl0IG1heSBiZQorIyBwb3NzaWJsZSB0 aGF0IHRoaXMgc2NyaXB0IGlzIHJ1biB3aXRoIGluc3RhbGxjaGVjaywgd2hlcmUgdGhlIG1vZHVs ZQorIyB3b3VsZCBub3QgYmUgaW5zdGFsbGVkIGJ5IGRlZmF1bHQuCitpZiAoISRub2RlX3N1YnNj cmliZXItPmNoZWNrX2V4dGVuc2lvbignaW5qZWN0aW9uX3BvaW50cycpKQoreworCXBsYW4gc2tp cF9hbGwgPT4gJ0V4dGVuc2lvbiBpbmplY3Rpb25fcG9pbnRzIG5vdCBpbnN0YWxsZWQnOworfQor CisjIENyZWF0ZSB0YWJsZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAorCSdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0YmwoYSBpbnQgUFJJTUFSWSBrZXksIGRh dGFfcHViIGludCk7Iik7CisKKyMgQ3JlYXRlIHNpbWlsYXIgdGFibGUgb24gc3Vic2NyaWJlciB3 aXRoIGFkZGl0aW9uYWwgaW5kZXggdG8gZGlzYWJsZSBIT1QgdXBkYXRlcworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0YmwoYSBpbnQg UFJJTUFSWSBrZXksIGRhdGFfcHViIGludCwgZGF0YV9zdWIgaW50IGRlZmF1bHQgMCk7CisJIENS RUFURSBJTkRFWCBkYXRhX2luZGV4IE9OIHRibChkYXRhX3B1Yik7Iik7CisKKyMgU2V0dXAgbG9n aWNhbCByZXBsaWNhdGlvbgorbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVy LT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRi bCIpOworCisjIENyZWF0ZSB0aGUgc3Vic2NyaXB0aW9uCitteSAkYXBwbmFtZSA9ICd0YXBfc3Vi JzsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCSJDUkVBVEUg U1VCU0NSSVBUSU9OIHRhcF9zdWIKKwkgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFw cGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnCisJIFBVQkxJQ0FUSU9OIHRhcF9wdWIiKTsKKworbXkg JG51bV9yb3dzID0gMTA7CitteSAkbnVtX3VwZGF0ZXMgPSAxMDAwMDsKK215ICRudW1fY2xpZW50 cyA9IDEwOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJ TlRPIHRibCBTRUxFQ1QgaSwgaSAqIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwkbnVtX3Jvd3Mp IGkiKTsKKworIyBXYWl0IGZvciBpbml0aWFsIHRhYmxlIHN5bmMgdG8gZmluaXNoCiskbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICRh cHBuYW1lKTsKKworIyBQcmVwYXJlIHNtYWxsIHBnYmVuY2ggc2NyaXB0cyBhcyBmaWxlcworbXkg JHN1Yl9zcWwgPSAkbm9kZV9zdWJzY3JpYmVyLT5iYXNlZGlyIC4gJy9zdWJfdXBkYXRlLnNxbCc7 CitteSAkcHViX3NxbCA9ICRub2RlX3B1Ymxpc2hlci0+YmFzZWRpciAuICcvcHViX2RlbGV0ZS5z cWwnOworCitvcGVuIG15ICRmaDEsICc+JywgJHN1Yl9zcWwgb3IgZGllICQhOworcHJpbnQgJGZo MSAiXFxzZXQgbnVtIHJhbmRvbSgxLCRudW1fcm93cylcblVQREFURSB0YmwgU0VUIGRhdGFfc3Vi ID0gZGF0YV9zdWIgKyAxIFdIRVJFIGEgPSA6bnVtO1xuIjsKK2Nsb3NlICRmaDE7CisKK29wZW4g bXkgJGZoMiwgJz4nLCAkcHViX3NxbCBvciBkaWUgJCE7CitwcmludCAkZmgyICJcXHNldCBudW0g cmFuZG9tKDEsJG51bV9yb3dzKVxuVVBEQVRFIHRibCBTRVQgZGF0YV9wdWIgPSBkYXRhX3B1YiAr IDEgV0hFUkUgYSA9IDpudW07XG4iOworY2xvc2UgJGZoMjsKKworbXkgQHN1Yl9jbWQgPSAoCisJ J3BnYmVuY2gnLAorCSctLW5vLXZhY3V1bScsICItLWNsaWVudD0kbnVtX2NsaWVudHMiLCAnLS1q b2JzPTQnLCAnLS1leGl0LW9uLWFib3J0JywgIi0tdHJhbnNhY3Rpb25zPSRudW1fdXBkYXRlcyIs CisJJy1wJywgJG5vZGVfc3Vic2NyaWJlci0+cG9ydCwgJy1oJywgJG5vZGVfc3Vic2NyaWJlci0+ aG9zdCwgJy1mJywgJHN1Yl9zcWwsICdwb3N0Z3JlcycKKyk7CisKK215IEBwdWJfY21kID0gKAor CSdwZ2JlbmNoJywKKwknLS1uby12YWN1dW0nLCAiLS1jbGllbnQ9JG51bV9jbGllbnRzIiwgJy0t am9icz00JywgJy0tZXhpdC1vbi1hYm9ydCcsICItLXRyYW5zYWN0aW9ucz0kbnVtX3VwZGF0ZXMi LAorCSctcCcsICRub2RlX3B1Ymxpc2hlci0+cG9ydCwgJy1oJywgJG5vZGVfcHVibGlzaGVyLT5o b3N0LCAnLWYnLCAkcHViX3NxbCwgJ3Bvc3RncmVzJworKTsKKworJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7 Jyk7CisjIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2FwcGx5 X2hhbmRsZV91cGRhdGVfaW50ZXJuYWxfdXBkYXRlX21pc3NpbmcnLCAnZXJyb3InKSIpOworbXkg JGxvZ19vZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisjIFN0YXJ0IGJv dGggY29uY3VycmVudGx5CitteSAoJHN1Yl9vdXQsICRzdWJfZXJyLCAkcHViX291dCwgJHB1Yl9l cnIpID0gKCcnLCAnJywgJycsICcnKTsKK215ICRzdWJfaCA9IHN0YXJ0IFxAc3ViX2NtZCwgJz4n LCBcJHN1Yl9vdXQsICcyPicsIFwkc3ViX2VycjsKK215ICRwdWJfaCA9IHN0YXJ0IFxAcHViX2Nt ZCwgJz4nLCBcJHB1Yl9vdXQsICcyPicsIFwkcHViX2VycjsKKworIyBXYWl0IGZvciBjb21wbGV0 aW9uCitmaW5pc2ggJHN1Yl9oOworZmluaXNoICRwdWJfaDsKKworbGlrZSgkc3ViX291dCwgcXIv YWN0dWFsbHkgcHJvY2Vzc2VkLywgJ3N1YnNjcmliZXIgcGdiZW5jaCBjb21wbGV0ZWQnKTsKK2xp a2UoJHB1Yl9vdXQsIHFyL2FjdHVhbGx5IHByb2Nlc3NlZC8sICdwdWJsaXNoZXIgcGdiZW5jaCBj b21wbGV0ZWQnKTsKKworIyBMZXQgc3Vic2NyaXB0aW9uIGNhdGNoIHVwLCB0aGVuIGNoZWNrIGV4 cGVjdGF0aW9ucworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMo JG5vZGVfcHVibGlzaGVyLCAndGFwX3N1YicpOworCitvayghJG5vZGVfc3Vic2NyaWJlci0+bG9n X2NvbnRhaW5zKAorCQlxci9FUlJPUjogIGVycm9yIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IGFwcGx5X2hhbmRsZV91cGRhdGVfaW50ZXJuYWxfdXBkYXRlX21pc3NpbmcvLAorCQkkbG9n X29mZnNldCksICdpbnZhbGlkIGNvbmZsaWN0IGRldGVjdGVkJyk7CisKK2RvbmVfdGVzdGluZygp OwotLSAKMi40My4wCgo= --0000000000000f92480641fcdf7c Content-Type: application/x-patch; name="v13-0002-Fix-logical-replication-conflict-detection-durin.patch" Content-Disposition: attachment; filename="v13-0002-Fix-logical-replication-conflict-detection-durin.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mh6dwaut1 RnJvbSAyNmJhYThiZTdjZmFlYmVmMWFmMDRiMjVhNGVhN2NhMWIxZTZkNGViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxua2V5QHRvbG9rYS5haT4KRGF0ZTogV2VkLCAzIFNl cCAyMDI1IDE5OjA4OjU1ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2MTMgMi8yXSBGaXggbG9naWNh bCByZXBsaWNhdGlvbiBjb25mbGljdCBkZXRlY3Rpb24gZHVyaW5nCiB0dXBsZSBsb29rdXAKClNO QVBTSE9UX0RJUlRZIHNjYW5zIGNvdWxkIG1pc3MgY29uZmxpY3QgZGV0ZWN0aW9uIHdpdGggY29u Y3VycmVudCB0cmFuc2FjdGlvbnMgZHVyaW5nIGxvZ2ljYWwgcmVwbGljYXRpb24uClJlcGxhY2Ug U05BUFNIT1RfRElSVFkgc2NhbiB3aXRoIHRoZSBHZXRMYXRlc3RTbmFwc2hvdCBpbiBSZWxhdGlv bkZpbmRSZXBsVHVwbGVCeUluZGV4IGFuZCBSZWxhdGlvbkZpbmRSZXBsVHVwbGVTZXEuCi0tLQog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgfCA2MyArKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDQ1IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlv bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKaW5kZXggZGVmMzI3 NzRjOTAuLjFlNDM0YWI2OTdhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UmVwbGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24u YwpAQCAtMTg2LDggKzE4Niw2IEBAIFJlbGF0aW9uRmluZFJlcGxUdXBsZUJ5SW5kZXgoUmVsYXRp b24gcmVsLCBPaWQgaWR4b2lkLAogCVNjYW5LZXlEYXRhIHNrZXlbSU5ERVhfTUFYX0tFWVNdOwog CWludAkJCXNrZXlfYXR0b2ZmOwogCUluZGV4U2NhbkRlc2Mgc2NhbjsKLQlTbmFwc2hvdERhdGEg c25hcDsKLQlUcmFuc2FjdGlvbklkIHh3YWl0OwogCVJlbGF0aW9uCWlkeHJlbDsKIAlib29sCQlm b3VuZDsKIAlUeXBlQ2FjaGVFbnRyeSAqKmVxID0gTlVMTDsKQEAgLTE5OCwxNyArMTk2LDE3IEBA IFJlbGF0aW9uRmluZFJlcGxUdXBsZUJ5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQgaWR4b2lkLAog CiAJaXNJZHhTYWZlVG9Ta2lwRHVwbGljYXRlcyA9IChHZXRSZWxhdGlvbklkZW50aXR5T3JQSyhy ZWwpID09IGlkeG9pZCk7CiAKLQlJbml0RGlydHlTbmFwc2hvdChzbmFwKTsKLQogCS8qIEJ1aWxk IHNjYW4ga2V5LiAqLwogCXNrZXlfYXR0b2ZmID0gYnVpbGRfcmVwbGluZGV4X3NjYW5fa2V5KHNr ZXksIHJlbCwgaWR4cmVsLCBzZWFyY2hzbG90KTsKIAotCS8qIFN0YXJ0IGFuIGluZGV4IHNjYW4u ICovCi0Jc2NhbiA9IGluZGV4X2JlZ2luc2NhbihyZWwsIGlkeHJlbCwgJnNuYXAsIE5VTEwsIHNr ZXlfYXR0b2ZmLCAwKTsKKwkvKiBTdGFydCBhbiBpbmRleCBzY2FuLiBTbmFwc2hvdEFueSB3aWxs IGJlIHJlcGxhY2VkIGJlbG93LiAqLworCXNjYW4gPSBpbmRleF9iZWdpbnNjYW4ocmVsLCBpZHhy ZWwsIFNuYXBzaG90QW55LCBOVUxMLCBza2V5X2F0dG9mZiwgMCk7CiAKIHJldHJ5OgogCWZvdW5k ID0gZmFsc2U7Ci0KKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CisJ LyogVXBkYXRlIHRoZSBhY3R1YWwgc2NhbiBzbmFwc2hvdCBlYWNoIHJldHJ5ICovCisJc2Nhbi0+ eHNfc25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOwogCWluZGV4X3Jlc2NhbihzY2FuLCBz a2V5LCBza2V5X2F0dG9mZiwgTlVMTCwgMCk7CiAKIAkvKiBUcnkgdG8gZmluZCB0aGUgdHVwbGUg Ki8KQEAgLTIyOSwxOSArMjI3LDYgQEAgcmV0cnk6CiAKIAkJRXhlY01hdGVyaWFsaXplU2xvdChv dXRzbG90KTsKIAotCQl4d2FpdCA9IFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHNuYXAueG1pbikgPwot CQkJc25hcC54bWluIDogc25hcC54bWF4OwotCi0JCS8qCi0JCSAqIElmIHRoZSB0dXBsZSBpcyBs b2NrZWQsIHdhaXQgZm9yIGxvY2tpbmcgdHJhbnNhY3Rpb24gdG8gZmluaXNoIGFuZAotCQkgKiBy ZXRyeS4KLQkJICovCi0JCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCh4d2FpdCkpCi0JCXsKLQkJ CVhhY3RMb2NrVGFibGVXYWl0KHh3YWl0LCBOVUxMLCBOVUxMLCBYTFRXX05vbmUpOwotCQkJZ290 byByZXRyeTsKLQkJfQotCiAJCS8qIEZvdW5kIG91ciB0dXBsZSBhbmQgaXQncyBub3QgbG9ja2Vk ICovCiAJCWZvdW5kID0gdHJ1ZTsKIAkJYnJlYWs7CkBAIC0yNTMsOCArMjM4LDYgQEAgcmV0cnk6 CiAJCVRNX0ZhaWx1cmVEYXRhIHRtZmQ7CiAJCVRNX1Jlc3VsdAlyZXM7CiAKLQkJUHVzaEFjdGl2 ZVNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOwotCiAJCXJlcyA9IHRhYmxlX3R1cGxlX2xv Y2socmVsLCAmKG91dHNsb3QtPnR0c190aWQpLCBHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJ CSAgIG91dHNsb3QsCiAJCQkJCQkJICAgR2V0Q3VycmVudENvbW1hbmRJZChmYWxzZSksCkBAIC0y NjMsMTMgKzI0NiwxNSBAQCByZXRyeToKIAkJCQkJCQkgICAwIC8qIGRvbid0IGZvbGxvdyB1cGRh dGVzICovICwKIAkJCQkJCQkgICAmdG1mZCk7CiAKLQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQog CQlpZiAoc2hvdWxkX3JlZmV0Y2hfdHVwbGUocmVzLCAmdG1mZCkpCisJCXsKKwkJCVBvcEFjdGl2 ZVNuYXBzaG90KCk7CiAJCQlnb3RvIHJldHJ5OworCQl9CiAJfQogCiAJaW5kZXhfZW5kc2Nhbihz Y2FuKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJLyogRG9uJ3QgcmVsZWFzZSBsb2NrIHVu dGlsIGNvbW1pdC4gKi8KIAlpbmRleF9jbG9zZShpZHhyZWwsIE5vTG9jayk7CkBAIC0zNzAsOSAr MzU1LDcgQEAgUmVsYXRpb25GaW5kUmVwbFR1cGxlU2VxKFJlbGF0aW9uIHJlbCwgTG9ja1R1cGxl TW9kZSBsb2NrbW9kZSwKIHsKIAlUdXBsZVRhYmxlU2xvdCAqc2NhbnNsb3Q7CiAJVGFibGVTY2Fu RGVzYyBzY2FuOwotCVNuYXBzaG90RGF0YSBzbmFwOwogCVR5cGVDYWNoZUVudHJ5ICoqZXE7Ci0J VHJhbnNhY3Rpb25JZCB4d2FpdDsKIAlib29sCQlmb3VuZDsKIAlUdXBsZURlc2MJZGVzYyBQR19V U0VEX0ZPUl9BU1NFUlRTX09OTFkgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CiAKQEAgLTM4MCwx MyArMzYzLDE1IEBAIFJlbGF0aW9uRmluZFJlcGxUdXBsZVNlcShSZWxhdGlvbiByZWwsIExvY2tU dXBsZU1vZGUgbG9ja21vZGUsCiAKIAllcSA9IHBhbGxvYzAoc2l6ZW9mKCplcSkgKiBvdXRzbG90 LT50dHNfdHVwbGVEZXNjcmlwdG9yLT5uYXR0cyk7CiAKLQkvKiBTdGFydCBhIGhlYXAgc2Nhbi4g Ki8KLQlJbml0RGlydHlTbmFwc2hvdChzbmFwKTsKLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJl bCwgJnNuYXAsIDAsIE5VTEwpOworCS8qIFN0YXJ0IGEgaGVhcCBzY2FuLiBTbmFwc2hvdEFueSB3 aWxsIGJlIHJlcGxhY2VkIGJlbG93LiAqLworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBT bmFwc2hvdEFueSwgMCwgTlVMTCk7CiAJc2NhbnNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShyZWws IE5VTEwpOwogCiByZXRyeToKIAlmb3VuZCA9IGZhbHNlOworCVB1c2hBY3RpdmVTbmFwc2hvdChH ZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwkvKiBVcGRhdGUgdGhlIGFjdHVhbCBzY2FuIHNuYXBzaG90 IGVhY2ggcmV0cnkgKi8KKwlzY2FuLT5yc19zbmFwc2hvdCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7 CiAKIAl0YWJsZV9yZXNjYW4oc2NhbiwgTlVMTCk7CiAKQEAgLTM5OSwxOSArMzg0LDYgQEAgcmV0 cnk6CiAJCWZvdW5kID0gdHJ1ZTsKIAkJRXhlY0NvcHlTbG90KG91dHNsb3QsIHNjYW5zbG90KTsK IAotCQl4d2FpdCA9IFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHNuYXAueG1pbikgPwotCQkJc25hcC54 bWluIDogc25hcC54bWF4OwotCi0JCS8qCi0JCSAqIElmIHRoZSB0dXBsZSBpcyBsb2NrZWQsIHdh aXQgZm9yIGxvY2tpbmcgdHJhbnNhY3Rpb24gdG8gZmluaXNoIGFuZAotCQkgKiByZXRyeS4KLQkJ ICovCi0JCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCh4d2FpdCkpCi0JCXsKLQkJCVhhY3RMb2Nr VGFibGVXYWl0KHh3YWl0LCBOVUxMLCBOVUxMLCBYTFRXX05vbmUpOwotCQkJZ290byByZXRyeTsK LQkJfQotCiAJCS8qIEZvdW5kIG91ciB0dXBsZSBhbmQgaXQncyBub3QgbG9ja2VkICovCiAJCWJy ZWFrOwogCX0KQEAgLTQyMiw4ICszOTQsNiBAQCByZXRyeToKIAkJVE1fRmFpbHVyZURhdGEgdG1m ZDsKIAkJVE1fUmVzdWx0CXJlczsKIAotCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0TGF0ZXN0U25h cHNob3QoKSk7Ci0KIAkJcmVzID0gdGFibGVfdHVwbGVfbG9jayhyZWwsICYob3V0c2xvdC0+dHRz X3RpZCksIEdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJICAgb3V0c2xvdCwKIAkJCQkJCQkg ICBHZXRDdXJyZW50Q29tbWFuZElkKGZhbHNlKSwKQEAgLTQzMiwxMyArNDAyLDE2IEBAIHJldHJ5 OgogCQkJCQkJCSAgIDAgLyogZG9uJ3QgZm9sbG93IHVwZGF0ZXMgKi8gLAogCQkJCQkJCSAgICZ0 bWZkKTsKIAotCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJCWlmIChzaG91bGRfcmVmZXRjaF90 dXBsZShyZXMsICZ0bWZkKSkKKwkJeworCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJCWdvdG8g cmV0cnk7CisJCX0KIAl9CiAKIAl0YWJsZV9lbmRzY2FuKHNjYW4pOworCVBvcEFjdGl2ZVNuYXBz aG90KCk7CiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzY2Fuc2xvdCk7CiAKIAlyZXR1 cm4gZm91bmQ7Ci0tIAoyLjQzLjAKCg== --0000000000000f92480641fcdf7c--