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 1tsIQ3-000EQ2-66 for pgsql-hackers@arkaria.postgresql.org; Wed, 12 Mar 2025 09:30:31 +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 1tsIQ1-000heU-VO for pgsql-hackers@arkaria.postgresql.org; Wed, 12 Mar 2025 09:30:29 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tsIQ1-000hY6-6f for pgsql-hackers@lists.postgresql.org; Wed, 12 Mar 2025 09:30:29 +0000 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tsIPx-002OXF-2T for pgsql-hackers@lists.postgresql.org; Wed, 12 Mar 2025 09:30:26 +0000 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-2feb867849fso9926850a91.3 for ; Wed, 12 Mar 2025 02:30:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741771825; x=1742376625; 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=Cg4BMBJ0w3QWnVDWU2qx2s/es6J56BINidJoiN8di48=; b=iHRtkBBNXYIvoBrvoZfwmb6dnUZsLkJDBfbIwcPE2nrTGoX63HOh2nBEr2ZfuRRkU7 VEmfOUJZlj/jyfEoyeIY4R+OHWgpzwbGSC7pmHlK1SIqDpKgChknDqUF44C9ssoWlf0w GPZvX/ne7waMaigFS4FFPOlZeyDykYbQ6hzE5SGfOS/3j+02BNA8Jd7hif9KKEl7XzTM 8umP8jzaqW+n9bmL5vbmuEnxBnqlz9ZOt+qQT7R4P3VyLH6E7HK/+W92HruL5kUstCg6 wOpzZNI7UVD7Mp/4meKancUxEPdoCmLKjjhunD3d/VcH0THskWoziEHw7qupzMyGfybN tO2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741771825; x=1742376625; 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=Cg4BMBJ0w3QWnVDWU2qx2s/es6J56BINidJoiN8di48=; b=Asvq0fG4cddxIqgHrMgVk62hqyn7P+J5AMYtLCWiaBbB3YTs005BIlxSDpX8SsUQ2G BxeXsp+Doziyi9U1fs28mI8KfEBXkto9w4aYqdvphAGnw/W5b5kvsJGabR1S9N6yWN9V nGtd7lqy5mwc9Zy/wEolKtB/r1E/9G3ZVmThIttI77XaVJYpLrjEEU8ZpmDW+WyWzwfe LIEmUXZfoG57rnGsbO8MOud7/+Ds2YfdjTbK08v7aCWP6/tHCt0MzoPImZdDdK2uZ7fe +hTsfFQKTHeULVjdCsDn84+v0wMsFLfPd0OqtgpRxBayPvmLH9hKnDdNJ7Wec0Nday1k H+DA== X-Gm-Message-State: AOJu0Yy0fP80DhcrdJLn6vi9QKWfGf1K4wW7ZtHrHXwlleIVg9Le7nsD 8vwvZNdrQZqVL0JlfOi/yWm8FXJ/V0M1xOw5PZQFHy0FWBI0aD3LHzLbteS8IkpY38xnOHvnYKK YB0qdW4Ood2UO11g0Z95uqpqiApo= X-Gm-Gg: ASbGncuymjL+IgvuLqNU7lirnMCqJOgtdtCBxQ5cApCpHzt/aAUjC1rLj8tVwcn/h+h aoMQCaA5kGLhRkZS712SyQV72DYo27zOrk20l5tnliBiLUYCV5amrT10L23a62IXPjEL5xpAPT/ OBS3A88/FTCffmANtwUwXiEDMXGf8= X-Google-Smtp-Source: AGHT+IH2U0PAdgKuxIg/uUzjbjO2hxT+uWmDtAG6xv6M1bwIFclIon2FHXOBmvANr6QR11AZIdUDjU4/cfEUcmF6MAE= X-Received: by 2002:a17:90b:38cd:b0:2ee:741c:e9f4 with SMTP id 98e67ed59e1d1-2ff7ce8e5dfmr31256067a91.11.1741771824682; Wed, 12 Mar 2025 02:30:24 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Amit Kapila Date: Wed, 12 Mar 2025 15:00:13 +0530 X-Gm-Features: AQ5f1JrWPVFc95VA2cpBVpjvJVBevZfSmGI1RoL2RNSVynZbnuUWmQrY0W4-SDE Message-ID: Subject: Re: Selectively invalidate caches in pgoutput module To: "Hayato Kuroda (Fujitsu)" Cc: "pgsql-hackers@lists.postgresql.org" , "ShlokKumar.Kyal@fujitsu.com" , "Zhijie Hou (Fujitsu)" , Masahiko Sawada Content-Type: multipart/mixed; boundary="000000000000e406e9063021daa6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e406e9063021daa6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Mar 11, 2025 at 5:47=E2=80=AFPM Hayato Kuroda (Fujitsu) wrote: > > Attached patch address comments by you and Amit [1]. What's new; > Thanks, the patch looks mostly good to me. I have made few cosmetic changes in the attached and combined both the patches. The existing Alter Publication ... Rename tests don't test invalidations arising from that command. As this patch changes that code path, it would be good to add a few tests for the same. We can add one for individual relations and another for ALL Tables publication. --=20 With Regards, Amit Kapila. --000000000000e406e9063021daa6 Content-Type: application/octet-stream; name="v11-0001-Avoid-invalidating-all-RelationSyncCache-entries.patch" Content-Disposition: attachment; filename="v11-0001-Avoid-invalidating-all-RelationSyncCache-entries.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m85pypu90 RnJvbSA5NmEwYmYyMGRiNjc1N2VlMDlmY2E5YTUyYTJiNTAyMGFjYTI0NGNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IEthcGlsYSA8YWthcGlsYUBwb3N0Z3Jlc3FsLm9yZz4K RGF0ZTogV2VkLCAxMiBNYXIgMjAyNSAxNDo0MToyNiArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjEx XSBBdm9pZCBpbnZhbGlkYXRpbmcgYWxsIFJlbGF0aW9uU3luY0NhY2hlIGVudHJpZXMgb24KIHB1 YmxpY2F0aW9uIHJlbmFtZS4KCk9uIFB1YmxpY2F0aW9uIHJlbmFtZSwgd2UgbmVlZCB0byBvbmx5 IGludmFsaWRhdGUgdGhlIFJlbGF0aW9uU3luY0NhY2hlCmVudHJpZXMgY29ycmVzcG9uZGluZyB0 byByZWxhdGlvbnMgdGhhdCBhcmUgcGFydCBvZiB0aGUgcHVibGljYXRpb24gYmVpbmcKcmVuYW1l ZC4KCkFzIHBhcnQgb2YgdGhpcyBwYXRjaCwgd2UgaW50cm9kdWNlIGEgbmV3IGludmFsaWRhdGlv biBtZXNzYWdlIHRvCmludmFsaWRhdGUgdGhlIGNhY2hlIG1haW50YWluZWQgYnkgdGhlIGxvZ2lj YWwgZGVjb2Rpbmcgb3V0cHV0IHBsdWdpbi4gV2UKY2FuJ3QgdXNlIGV4aXN0aW5nIHJlbGNhY2hl IGludmFsaWRhdGlvbiBmb3IgdGhpcyBwdXJwb3NlLCBhcyB0aGF0IHdvdWxkCnVubmVjZXNzYXJp bHkgY2F1c2UgcmVsY2FjaGUgaW52YWxpZGF0aW9ucyBpbiBvdGhlciBiYWNrZW5kcy4KCkF1dGhv cjogSGF5YXRvIEt1cm9kYSA8a3Vyb2RhLmhheWF0b0BmdWppdHN1LmNvbT4KQXV0aG9yOiBTaGxv ayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBIb3UgWmhpamll IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPgpSZXZpZXdlZC1ieTogQW1pdCBLYXBpbGEgPGFtaXQu a2FwaWxhMTZAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL09TQ1BS MDFNQjE0OTY2QzA5QUEyMDFFRkZBNzA2NTc2QTdGNUM5MkBPU0NQUjAxTUIxNDk2Ni5qcG5wcmQw MS5wcm9kLm91dGxvb2suY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL3N0YW5k YnlkZXNjLmMgICB8ICAgMiArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jICAgICAgICAg ICAgICAgIHwgIDE2ICsrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMg ICAgICB8ICAzOSArKysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0 cHV0LmMgfCAgIDggKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2ludmFsLmMgICAgICAgICAg ICAgfCAxMjUgKysrKysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3B1Ymxp Y2F0aW9uY21kcy5oICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcGdfY29uZmlnX21hbnVhbC5o ICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9zaW52YWwuaCAgICAg ICAgICAgICAgICB8ICAyMyArKystCiBzcmMvaW5jbHVkZS91dGlscy9pbnZhbC5oICAgICAgICAg ICAgICAgICAgIHwgIDEwICsrCiA5IGZpbGVzIGNoYW5nZWQsIDIxNiBpbnNlcnRpb25zKCspLCAx NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv c3RhbmRieWRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9zdGFuZGJ5ZGVzYy5j CmluZGV4IGQ4NDlmOGU1NGJhLi44MWVmZjVmMzFjNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL3JtZ3JkZXNjL3N0YW5kYnlkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Jt Z3JkZXNjL3N0YW5kYnlkZXNjLmMKQEAgLTEzMiw2ICsxMzIsOCBAQCBzdGFuZGJ5X2Rlc2NfaW52 YWxpZGF0aW9ucyhTdHJpbmdJbmZvIGJ1ZiwKIAkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiIHJl bG1hcCBkYiAldSIsIG1zZy0+cm0uZGJJZCk7CiAJCWVsc2UgaWYgKG1zZy0+aWQgPT0gU0hBUkVE SU5WQUxTTkFQU0hPVF9JRCkKIAkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiIHNuYXBzaG90ICV1 IiwgbXNnLT5zbi5yZWxJZCk7CisJCWVsc2UgaWYgKG1zZy0+aWQgPT0gU0hBUkVESU5WQUxSRUxT WU5DX0lEKQorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgcmVsc3luYyAldSIsIG1zZy0+cnMu cmVsaWQpOwogCQllbHNlCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiB1bnJlY29nbml6ZWQg aWQgJWQiLCBtc2ctPmlkKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9h bHRlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYwppbmRleCA3OGMxZDRlMWI4NC4u M2I3MTE0Yjg1OTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYwpAQCAtMzM4LDYgKzMzOCwyMiBAQCBBbHRl ck9iamVjdFJlbmFtZV9pbnRlcm5hbChSZWxhdGlvbiByZWwsIE9pZCBvYmplY3RJZCwgY29uc3Qg Y2hhciAqbmV3X25hbWUpCiAKIAlJbnZva2VPYmplY3RQb3N0QWx0ZXJIb29rKGNsYXNzSWQsIG9i amVjdElkLCAwKTsKIAorCS8qIERvIHBvc3QgY2F0YWxvZy11cGRhdGUgdGFza3MgKi8KKwlpZiAo Y2xhc3NJZCA9PSBQdWJsaWNhdGlvblJlbGF0aW9uSWQpCisJeworCQlGb3JtX3BnX3B1YmxpY2F0 aW9uIHB1YiA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1Qob2xkdHVwKTsKKworCQkv KgorCQkgKiBJbnZhbGlkYXRlIHJlbHN5bmNjYWNoZSBlbnRyaWVzLgorCQkgKgorCQkgKiBVbmxp a2UgQUxURVIgUFVCTElDQVRJT04gQUREL1NFVC9EUk9QIGNvbW1hbmRzLCByZW5hbWluZyBhCisJ CSAqIHB1YmxpY2F0aW9uIGRvZXMgbm90IGltcGFjdCB0aGUgcHVibGljYXRpb24gc3RhdHVzIG9m IHRhYmxlcy4gU28sIHdlCisJCSAqIGRvbid0IG5lZWQgdG8gaW52YWxpZGF0ZSByZWxjYWNoZSB0 byByZWJ1aWxkIHRoZSByZF9wdWJkZXNjLgorCQkgKiBJbnN0ZWFkLCB3ZSBpbnZhbGlkYXRlIG9u bHkgdGhlIHJlbHN5bmNhY2hlLgorCQkgKi8KKwkJSW52YWxpZGF0ZVB1YlJlbFN5bmNDYWNoZShw dWItPm9pZCwgcHViLT5wdWJhbGx0YWJsZXMpOworCX0KKwogCS8qIFJlbGVhc2UgbWVtb3J5ICov CiAJcGZyZWUodmFsdWVzKTsKIAlwZnJlZShudWxscyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1Ymxp Y2F0aW9uY21kcy5jCmluZGV4IDE1MGE3NjhkMTZmLi45NGE1YTJiNmM3NiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTQ5MSw2ICs0OTEsNDUgQEAgcHViX2NvbnRh aW5zX2ludmFsaWRfY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24sIExpc3QgKmFu Y2VzdG9ycywKIAlyZXR1cm4gKmludmFsaWRfY29sdW1uX2xpc3QgfHwgKmludmFsaWRfZ2VuX2Nv bDsKIH0KIAorLyoKKyAqIEludmFsaWRhdGUgZW50cmllcyBpbiB0aGUgUmVsYXRpb25TeW5jQ2Fj aGUgZm9yIHJlbGF0aW9ucyBpbmNsdWRlZCBpbiB0aGUKKyAqIHNwZWNpZmllZCBwdWJsaWNhdGlv biwgZWl0aGVyIHZpYSBGT1IgVEFCTEUgb3IgRk9SIFRBQkxFUyBJTiBTQ0hFTUEuCisgKgorICog SWYgJ3B1YmFsbHRhYmxlcycgaXMgdHJ1ZSwgaW52YWxpZGF0ZSBhbGwgY2FjaGUgZW50cmllcy4K KyAqLwordm9pZAorSW52YWxpZGF0ZVB1YlJlbFN5bmNDYWNoZShPaWQgcHViaWQsIGJvb2wgcHVi YWxsdGFibGVzKQoreworCWlmIChwdWJhbGx0YWJsZXMpCisJeworCQlDYWNoZUludmFsaWRhdGVS ZWxTeW5jQWxsKCk7CisJfQorCWVsc2UKKwl7CisJCUxpc3QJICAgKnJlbGlkcyA9IE5JTDsKKwkJ TGlzdAkgICAqc2NoZW1hcmVsaWRzID0gTklMOworCisJCS8qCisJCSAqIEZvciBwYXJ0aXRpb25l ZCB0YWJsZXMsIHdlIG11c3QgaW52YWxpZGF0ZSBhbGwgcGFydGl0aW9ucyBhbmQKKwkJICogaXRz ZWxmLiBXQUwgcmVjb3JkcyBmb3IgSU5TRVJUL1VQREFURS9ERUxFVEUgc3BlY2lmeSBsZWFmCisJ CSAqIHRhYmxlcyBhcyBhIHRhcmdldC4gSG93ZXZlciwgV0FMIHJlY29yZHMgZm9yIFRSVU5DQVRF IHNwZWNpZnkKKwkJICogYm90aCBhIHJvb3QgYW5kIGl0cyBsZWF2ZXMuCisJCSAqLworCQlyZWxp ZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwKKwkJCQkJCQkJCQkgUFVCTElDQVRJ T05fUEFSVF9BTEwpOworCQlzY2hlbWFyZWxpZHMgPSBHZXRBbGxTY2hlbWFQdWJsaWNhdGlvblJl bGF0aW9ucyhwdWJpZCwKKwkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9BTEwpOworCisJ CXJlbGlkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocmVsaWRzLCBzY2hlbWFyZWxpZHMpOwor CisJCS8qIEludmFsaWRhdGUgdGhlIHJlbHN5bmNhY2hlICovCisJCWZvcmVhY2hfb2lkKHJlbGlk LCByZWxpZHMpCisJCQlDYWNoZUludmFsaWRhdGVSZWxTeW5jKHJlbGlkKTsKKwl9CisKKwlyZXR1 cm47Cit9CisKIC8qIGNoZWNrX2Z1bmN0aW9uc19pbl9ub2RlIGNhbGxiYWNrICovCiBzdGF0aWMg Ym9vbAogY29udGFpbl9tdXRhYmxlX29yX3VzZXJfZnVuY3Rpb25zX2NoZWNrZXIoT2lkIGZ1bmNf aWQsIHZvaWQgKmNvbnRleHQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9w Z291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdv dXRwdXQuYwppbmRleCA5MDYzYWY2ZTFkZi4uZWQ4MDZjNTQzMDAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtNTMxLDYgKzUzMSw4IEBAIHBnb3V0 cHV0X3N0YXJ0dXAoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBPdXRwdXRQbHVnaW5PcHRp b25zICpvcHQsCiAJCQlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhQVUJMSUNBVElPTk9J RCwKIAkJCQkJCQkJCQkgIHB1YmxpY2F0aW9uX2ludmFsaWRhdGlvbl9jYiwKIAkJCQkJCQkJCQkg IChEYXR1bSkgMCk7CisJCQlDYWNoZVJlZ2lzdGVyUmVsU3luY0NhbGxiYWNrKHJlbF9zeW5jX2Nh Y2hlX3JlbGF0aW9uX2NiLAorCQkJCQkJCQkJCSAoRGF0dW0pIDApOwogCQkJcHVibGljYXRpb25f Y2FsbGJhY2tfcmVnaXN0ZXJlZCA9IHRydWU7CiAJCX0KIApAQCAtMTc4OSwxMiArMTc5MSw2IEBA IHN0YXRpYyB2b2lkCiBwdWJsaWNhdGlvbl9pbnZhbGlkYXRpb25fY2IoRGF0dW0gYXJnLCBpbnQg Y2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKIAlwdWJsaWNhdGlvbnNfdmFsaWQgPSBmYWxz ZTsKLQotCS8qCi0JICogQWxzbyBpbnZhbGlkYXRlIHBlci1yZWxhdGlvbiBjYWNoZSBzbyB0aGF0 IG5leHQgdGltZSB0aGUgZmlsdGVyaW5nIGluZm8KLQkgKiBpcyBjaGVja2VkIGl0IHdpbGwgYmUg dXBkYXRlZCB3aXRoIHRoZSBuZXcgcHVibGljYXRpb24gc2V0dGluZ3MuCi0JICovCi0JcmVsX3N5 bmNfY2FjaGVfcHVibGljYXRpb25fY2IoYXJnLCBjYWNoZWlkLCBoYXNodmFsdWUpOwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvaW52YWwuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2ludmFsLmMKaW5kZXggNzAwY2NiNmRmOWIuLjRlYjY3NzIwNzM3IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9pbnZhbC5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2ludmFsLmMKQEAgLTI3MSw2ICsyNzEsNyBAQCBpbnQJCQlkZWJ1Z19k aXNjYXJkX2NhY2hlcyA9IDA7CiAKICNkZWZpbmUgTUFYX1NZU0NBQ0hFX0NBTExCQUNLUyA2NAog I2RlZmluZSBNQVhfUkVMQ0FDSEVfQ0FMTEJBQ0tTIDEwCisjZGVmaW5lIE1BWF9SRUxTWU5DX0NB TExCQUNLUyAxMAogCiBzdGF0aWMgc3RydWN0IFNZU0NBQ0hFQ0FMTEJBQ0sKIHsKQEAgLTI5Miw2 ICsyOTMsMTUgQEAgc3RhdGljIHN0cnVjdCBSRUxDQUNIRUNBTExCQUNLCiAKIHN0YXRpYyBpbnQJ cmVsY2FjaGVfY2FsbGJhY2tfY291bnQgPSAwOwogCitzdGF0aWMgc3RydWN0IFJFTFNZTkNDQUxM QkFDSworeworCVJlbFN5bmNDYWxsYmFja0Z1bmN0aW9uIGZ1bmN0aW9uOworCURhdHVtCQlhcmc7 Cit9CQkJcmVsc3luY19jYWxsYmFja19saXN0W01BWF9SRUxTWU5DX0NBTExCQUNLU107CisKK3N0 YXRpYyBpbnQJcmVsc3luY19jYWxsYmFja19jb3VudCA9IDA7CisKKwogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJ CQkJSW52YWxpZGF0aW9uIHN1Ymdyb3VwIHN1cHBvcnQgZnVuY3Rpb25zCiAgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBA IC00ODQsNiArNDk0LDM2IEBAIEFkZFJlbGNhY2hlSW52YWxpZGF0aW9uTWVzc2FnZShJbnZhbGlk YXRpb25Nc2dzR3JvdXAgKmdyb3VwLAogCUFkZEludmFsaWRhdGlvbk1lc3NhZ2UoZ3JvdXAsIFJl bENhY2hlTXNncywgJm1zZyk7CiB9CiAKKy8qCisgKiBBZGQgYSByZWxzeW5jIGludmFsIGVudHJ5 CisgKgorICogV2UgcHV0IHRoZXNlIGludG8gdGhlIHJlbGNhY2hlIHN1Ymdyb3VwIGZvciBzaW1w bGljaXR5LiBUaGlzIG1lc3NhZ2UgaXMgdGhlCisgKiBzYW1lIGFzIEFkZFJlbGNhY2hlSW52YWxp ZGF0aW9uTWVzc2FnZSgpIGV4Y2VwdCB0aGF0IGl0IGlzIGZvcgorICogUmVsYXRpb25TeW5jQ2Fj aGUgbWFpbnRhaW5lZCBieSBkZWNvZGluZyBwbHVnaW4gcGdvdXRwdXQuCisgKi8KK3N0YXRpYyB2 b2lkCitBZGRSZWxzeW5jSW52YWxpZGF0aW9uTWVzc2FnZShJbnZhbGlkYXRpb25Nc2dzR3JvdXAg Kmdyb3VwLAorCQkJCQkJCSAgT2lkIGRiSWQsIE9pZCByZWxJZCkKK3sKKwlTaGFyZWRJbnZhbGlk YXRpb25NZXNzYWdlIG1zZzsKKworCS8qIERvbid0IGFkZCBhIGR1cGxpY2F0ZSBpdGVtLiAqLwor CVByb2Nlc3NNZXNzYWdlU3ViR3JvdXAoZ3JvdXAsIFJlbENhY2hlTXNncywKKwkJCQkJCSAgIGlm IChtc2ctPnJjLmlkID09IFNIQVJFRElOVkFMUkVMU1lOQ19JRCAmJgorCQkJCQkJCSAgIChtc2ct PnJjLnJlbElkID09IHJlbElkIHx8CisJCQkJCQkJCW1zZy0+cmMucmVsSWQgPT0gSW52YWxpZE9p ZCkpCisJCQkJCQkgICByZXR1cm4pOworCisJLyogT0ssIGFkZCB0aGUgaXRlbSAqLworCW1zZy5y Yy5pZCA9IFNIQVJFRElOVkFMUkVMU1lOQ19JRDsKKwltc2cucmMuZGJJZCA9IGRiSWQ7CisJbXNn LnJjLnJlbElkID0gcmVsSWQ7CisJLyogY2hlY2sgQWRkQ2F0Y2FjaGVJbnZhbGlkYXRpb25NZXNz YWdlKCkgZm9yIGFuIGV4cGxhbmF0aW9uICovCisJVkFMR1JJTkRfTUFLRV9NRU1fREVGSU5FRCgm bXNnLCBzaXplb2YobXNnKSk7CisKKwlBZGRJbnZhbGlkYXRpb25NZXNzYWdlKGdyb3VwLCBSZWxD YWNoZU1zZ3MsICZtc2cpOworfQorCiAvKgogICogQWRkIGEgc25hcHNob3QgaW52YWwgZW50cnkK ICAqCkBAIC02MTEsNiArNjUxLDE3IEBAIFJlZ2lzdGVyUmVsY2FjaGVJbnZhbGlkYXRpb24oSW52 YWxpZGF0aW9uSW5mbyAqaW5mbywgT2lkIGRiSWQsIE9pZCByZWxJZCkKIAkJaW5mby0+UmVsY2Fj aGVJbml0RmlsZUludmFsID0gdHJ1ZTsKIH0KIAorLyoKKyAqIFJlZ2lzdGVyUmVsc3luY0ludmFs aWRhdGlvbgorICoKKyAqIEFzIGFib3ZlLCBidXQgcmVnaXN0ZXIgYSByZWxzeW5jY2FjaGUgaW52 YWxpZGF0aW9uIGV2ZW50LgorICovCitzdGF0aWMgdm9pZAorUmVnaXN0ZXJSZWxzeW5jSW52YWxp ZGF0aW9uKEludmFsaWRhdGlvbkluZm8gKmluZm8sIE9pZCBkYklkLCBPaWQgcmVsSWQpCit7CisJ QWRkUmVsc3luY0ludmFsaWRhdGlvbk1lc3NhZ2UoJmluZm8tPkN1cnJlbnRDbWRJbnZhbGlkTXNn cywgZGJJZCwgcmVsSWQpOworfQorCiAvKgogICogUmVnaXN0ZXJTbmFwc2hvdEludmFsaWRhdGlv bgogICoKQEAgLTc1MSw2ICs4MDIsMTMgQEAgSW52YWxpZGF0ZVN5c3RlbUNhY2hlc0V4dGVuZGVk KGJvb2wgZGVidWdfZGlzY2FyZCkKIAogCQljY2l0ZW0tPmZ1bmN0aW9uKGNjaXRlbS0+YXJnLCBJ bnZhbGlkT2lkKTsKIAl9CisKKwlmb3IgKGkgPSAwOyBpIDwgcmVsc3luY19jYWxsYmFja19jb3Vu dDsgaSsrKQorCXsKKwkJc3RydWN0IFJFTFNZTkNDQUxMQkFDSyAqY2NpdGVtID0gcmVsc3luY19j YWxsYmFja19saXN0ICsgaTsKKworCQljY2l0ZW0tPmZ1bmN0aW9uKGNjaXRlbS0+YXJnLCBJbnZh bGlkT2lkKTsKKwl9CiB9CiAKIC8qCkBAIC04MzIsNiArODkwLDEyIEBAIExvY2FsRXhlY3V0ZUlu dmFsaWRhdGlvbk1lc3NhZ2UoU2hhcmVkSW52YWxpZGF0aW9uTWVzc2FnZSAqbXNnKQogCQllbHNl IGlmIChtc2ctPnNuLmRiSWQgPT0gTXlEYXRhYmFzZUlkKQogCQkJSW52YWxpZGF0ZUNhdGFsb2dT bmFwc2hvdCgpOwogCX0KKwllbHNlIGlmIChtc2ctPmlkID09IFNIQVJFRElOVkFMUkVMU1lOQ19J RCkKKwl7CisJCS8qIFdlIG9ubHkgY2FyZSBhYm91dCBvdXIgb3duIGRhdGFiYXNlICovCisJCWlm IChtc2ctPnJzLmRiSWQgPT0gTXlEYXRhYmFzZUlkKQorCQkJQ2FsbFJlbFN5bmNDYWxsYmFja3Mo bXNnLT5ycy5yZWxpZCk7CisJfQogCWVsc2UKIAkJZWxvZyhGQVRBTCwgInVucmVjb2duaXplZCBT SSBtZXNzYWdlIElEOiAlZCIsIG1zZy0+aWQpOwogfQpAQCAtMTYyMSw2ICsxNjg1LDMyIEBAIENh Y2hlSW52YWxpZGF0ZVJlbGNhY2hlQnlSZWxpZChPaWQgcmVsaWQpCiAJUmVsZWFzZVN5c0NhY2hl KHR1cCk7CiB9CiAKKy8qCisgKiBDYWNoZUludmFsaWRhdGVSZWxTeW5jCisgKgkJUmVnaXN0ZXIg aW52YWxpZGF0aW9uIG9mIHRoZSBjYWNoZSBpbiBsb2dpY2FsIGRlY29kaW5nIG91dHB1dCBwbHVn aW4KKyAqCQlmb3IgYSBkYXRhYmFzZS4KKyAqCisgKiBUaGlzIHR5cGUgb2YgaW52YWxpZGF0aW9u IG1lc3NhZ2UgaXMgdXNlZCBmb3IgdGhlIHNwZWNpZmljIHB1cnBvc2Ugb2Ygb3V0cHV0CisgKiBw bHVnaW5zLiBQcm9jZXNzZXMgd2hpY2ggZG8gbm90IGRlY29kZSBXQUxzIHdvdWxkIGRvIG5vdGhp bmcgZXZlbiB3aGVuIGl0CisgKiByZWNlaXZlcyB0aGUgbWVzc2FnZS4KKyAqLwordm9pZAorQ2Fj aGVJbnZhbGlkYXRlUmVsU3luYyhPaWQgcmVsaWQpCit7CisJUmVnaXN0ZXJSZWxzeW5jSW52YWxp ZGF0aW9uKFByZXBhcmVJbnZhbGlkYXRpb25TdGF0ZSgpLAorCQkJCQkJCQlNeURhdGFiYXNlSWQs IHJlbGlkKTsKK30KKworLyoKKyAqIENhY2hlSW52YWxpZGF0ZVJlbFN5bmNBbGwKKyAqCQlSZWdp c3RlciBpbnZhbGlkYXRpb24gb2YgdGhlIHdob2xlIGNhY2hlIGluIGxvZ2ljYWwgZGVjb2Rpbmcg b3V0cHV0CisgKgkJcGx1Z2luLgorICovCit2b2lkCitDYWNoZUludmFsaWRhdGVSZWxTeW5jQWxs KHZvaWQpCit7CisJQ2FjaGVJbnZhbGlkYXRlUmVsU3luYyhJbnZhbGlkT2lkKTsKK30KIAogLyoK ICAqIENhY2hlSW52YWxpZGF0ZVNtZ3IKQEAgLTE3NjMsNiArMTg1MywyNyBAQCBDYWNoZVJlZ2lz dGVyUmVsY2FjaGVDYWxsYmFjayhSZWxjYWNoZUNhbGxiYWNrRnVuY3Rpb24gZnVuYywKIAkrK3Jl bGNhY2hlX2NhbGxiYWNrX2NvdW50OwogfQogCisvKgorICogQ2FjaGVSZWdpc3RlclJlbFN5bmND YWxsYmFjaworICoJCVJlZ2lzdGVyIHRoZSBzcGVjaWZpZWQgZnVuY3Rpb24gdG8gYmUgY2FsbGVk IGZvciBhbGwgZnV0dXJlCisgKgkJcmVsc3luY2NhY2hlIGludmFsaWRhdGlvbiBldmVudHMuCisg KgorICogVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBiZSBjYWxsIGZyb20gdGhlIGxvZ2lj YWwgZGVjb2Rpbmcgb3V0cHV0CisgKiBwbHVnaW5zLgorICovCit2b2lkCitDYWNoZVJlZ2lzdGVy UmVsU3luY0NhbGxiYWNrKFJlbFN5bmNDYWxsYmFja0Z1bmN0aW9uIGZ1bmMsCisJCQkJCQkJIERh dHVtIGFyZykKK3sKKwlpZiAocmVsc3luY19jYWxsYmFja19jb3VudCA+PSBNQVhfUkVMU1lOQ19D QUxMQkFDS1MpCisJCWVsb2coRkFUQUwsICJvdXQgb2YgcmVsc3luY19jYWxsYmFja19saXN0IHNs b3RzIik7CisKKwlyZWxzeW5jX2NhbGxiYWNrX2xpc3RbcmVsc3luY19jYWxsYmFja19jb3VudF0u ZnVuY3Rpb24gPSBmdW5jOworCXJlbHN5bmNfY2FsbGJhY2tfbGlzdFtyZWxzeW5jX2NhbGxiYWNr X2NvdW50XS5hcmcgPSBhcmc7CisKKwkrK3JlbHN5bmNfY2FsbGJhY2tfY291bnQ7Cit9CisKIC8q CiAgKiBDYWxsU3lzY2FjaGVDYWxsYmFja3MKICAqCkBAIC0xNzg4LDYgKzE4OTksMjAgQEAgQ2Fs bFN5c2NhY2hlQ2FsbGJhY2tzKGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogCX0KIH0K IAorLyoKKyAqIENhbGxTeXNjYWNoZUNhbGxiYWNrcworICovCit2b2lkCitDYWxsUmVsU3luY0Nh bGxiYWNrcyhPaWQgcmVsaWQpCit7CisJZm9yIChpbnQgaSA9IDA7IGkgPCByZWxzeW5jX2NhbGxi YWNrX2NvdW50OyBpKyspCisJeworCQlzdHJ1Y3QgUkVMU1lOQ0NBTExCQUNLICpjY2l0ZW0gPSBy ZWxzeW5jX2NhbGxiYWNrX2xpc3QgKyBpOworCisJCWNjaXRlbS0+ZnVuY3Rpb24oY2NpdGVtLT5h cmcsIHJlbGlkKTsKKwl9Cit9CisKIC8qCiAgKiBMb2dMb2dpY2FsSW52YWxpZGF0aW9ucwogICoK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIGIvc3Jj L2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgKaW5kZXggZTExYTk0MmVhMGYuLmU0 MWRmNmRiMDM4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNt ZHMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaApAQCAtMzgs NSArMzgsNiBAQCBleHRlcm4gYm9vbCBwdWJfY29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1 YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJCQljaGFyIHB1YmdlbmNvbHNfdHlwZSwK IAkJCQkJCQkJCQlib29sICppbnZhbGlkX2NvbHVtbl9saXN0LAogCQkJCQkJCQkJCWJvb2wgKmlu dmFsaWRfZ2VuX2NvbCk7CitleHRlcm4gdm9pZCBJbnZhbGlkYXRlUHViUmVsU3luY0NhY2hlKE9p ZCBwdWJpZCwgYm9vbCBwdWJhbGx0YWJsZXMpOwogCiAjZW5kaWYJCQkJCQkJLyogUFVCTElDQVRJ T05DTURTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BnX2NvbmZpZ19tYW51YWwuaCBi L3NyYy9pbmNsdWRlL3BnX2NvbmZpZ19tYW51YWwuaAppbmRleCA0NDllNTBiZDc4Yy4uMTI1ZDNl YjVmZmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BnX2NvbmZpZ19tYW51YWwuaAorKysgYi9z cmMvaW5jbHVkZS9wZ19jb25maWdfbWFudWFsLmgKQEAgLTI4MiwxMCArMjgyLDEwIEBACiAKIC8q CiAgKiBGb3IgY2FjaGUtaW52YWxpZGF0aW9uIGRlYnVnZ2luZywgZGVmaW5lIERJU0NBUkRfQ0FD SEVTX0VOQUJMRUQgdG8gZW5hYmxlCi0gKiB1c2Ugb2YgdGhlIGRlYnVnX2Rpc2NhcmRfY2FjaGVz IEdVQyB0byBhZ2dyZXNzaXZlbHkgZmx1c2ggc3lzY2FjaGUvcmVsY2FjaGUKLSAqIGVudHJpZXMg d2hlbmV2ZXIgaXQncyBwb3NzaWJsZSB0byBkZWxpdmVyIGludmFsaWRhdGlvbnMuICBTZWUKLSAq IEFjY2VwdEludmFsaWRhdGlvbk1lc3NhZ2VzKCkgaW4gc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv aW52YWwuYyBmb3IKLSAqIGRldGFpbHMuCisgKiB1c2Ugb2YgdGhlIGRlYnVnX2Rpc2NhcmRfY2Fj aGVzIEdVQyB0byBhZ2dyZXNzaXZlbHkgZmx1c2gKKyAqIHN5c2NhY2hlL3JlbGNhY2hlL3JlbHN5 bmNjYWNoZSBlbnRyaWVzIHdoZW5ldmVyIGl0J3MgcG9zc2libGUgdG8gZGVsaXZlcgorICogaW52 YWxpZGF0aW9ucy4gIFNlZSBBY2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygpIGluCisgKiBzcmMv YmFja2VuZC91dGlscy9jYWNoZS9pbnZhbC5jIGZvciBkZXRhaWxzLgogICoKICAqIFVTRV9BU1NF UlRfQ0hFQ0tJTkcgYnVpbGRzIGRlZmF1bHQgdG8gZW5hYmxpbmcgdGhpcy4gIEl0J3MgcG9zc2li bGUgdG8gdXNlCiAgKiBESVNDQVJEX0NBQ0hFU19FTkFCTEVEIHdpdGhvdXQgYSBjYXNzZXJ0IGJ1 aWxkIGFuZCB0aGUgaW1wbGllZApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaW52 YWwuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ludmFsLmgKaW5kZXggMjQ2M2MwZjlmYWMuLmYx NjhiNWZiZjhjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbC5oCisrKyBi L3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ludmFsLmgKQEAgLTI3LDYgKzI3LDcgQEAKICAqCSogaW52 YWxpZGF0ZSBhbiBzbWdyIGNhY2hlIGVudHJ5IGZvciBhIHNwZWNpZmljIHBoeXNpY2FsIHJlbGF0 aW9uCiAgKgkqIGludmFsaWRhdGUgdGhlIG1hcHBlZC1yZWxhdGlvbiBtYXBwaW5nIGZvciBhIGdp dmVuIGRhdGFiYXNlCiAgKgkqIGludmFsaWRhdGUgYW55IHNhdmVkIHNuYXBzaG90IHRoYXQgbWln aHQgYmUgdXNlZCB0byBzY2FuIGEgZ2l2ZW4gcmVsYXRpb24KKyAqCSogaW52YWxpZGF0ZSBhIFJl bGF0aW9uU3luY0NhY2hlIGVudHJ5IGZvciBhIHNwZWNpZmljIHJlbGF0aW9uCiAgKiBNb3JlIHR5 cGVzIGNvdWxkIGJlIGFkZGVkIGlmIG5lZWRlZC4gIFRoZSBtZXNzYWdlIHR5cGUgaXMgaWRlbnRp ZmllZCBieQogICogdGhlIGZpcnN0ICJpbnQ4IiBmaWVsZCBvZiB0aGUgbWVzc2FnZSBzdHJ1Y3Qu ICBaZXJvIG9yIHBvc2l0aXZlIG1lYW5zIGEKICAqIHNwZWNpZmljLWNhdGNhY2hlIGludmFsIG1l c3NhZ2UgKGFuZCBhbHNvIHNlcnZlcyBhcyB0aGUgY2F0Y2FjaGUgSUQgZmllbGQpLgpAQCAtNDYs MTIgKzQ3LDEyIEBACiAgKiBjYXRjYWNoZSBpbnZhbCBtZXNzYWdlcyBtdXN0IGJlIGdlbmVyYXRl ZCBmb3IgZWFjaCBvZiBpdHMgY2FjaGVzLCBzaW5jZQogICogdGhlIGhhc2gga2V5cyB3aWxsIGdl bmVyYWxseSBiZSBkaWZmZXJlbnQuCiAgKgotICogQ2F0Y2FjaGUsIHJlbGNhY2hlLCBhbmQgc25h cHNob3QgaW52YWxpZGF0aW9ucyBhcmUgdHJhbnNhY3Rpb25hbCwgYW5kIHNvCi0gKiBhcmUgc2Vu dCB0byBvdGhlciBiYWNrZW5kcyB1cG9uIGNvbW1pdC4gIEludGVybmFsbHkgdG8gdGhlIGdlbmVy YXRpbmcKLSAqIGJhY2tlbmQsIHRoZXkgYXJlIGFsc28gcHJvY2Vzc2VkIGF0IENvbW1hbmRDb3Vu dGVySW5jcmVtZW50IHNvIHRoYXQgbGF0ZXIKLSAqIGNvbW1hbmRzIGluIHRoZSBzYW1lIHRyYW5z YWN0aW9uIHNlZSB0aGUgbmV3IHN0YXRlLiAgVGhlIGdlbmVyYXRpbmcgYmFja2VuZAotICogYWxz byBoYXMgdG8gcHJvY2VzcyB0aGVtIGF0IGFib3J0LCB0byBmbHVzaCBvdXQgYW55IGNhY2hlIHN0 YXRlIGl0J3MgbG9hZGVkCi0gKiBmcm9tIG5vLWxvbmdlci12YWxpZCBlbnRyaWVzLgorICogQ2F0 Y2FjaGUsIHJlbGNhY2hlLCByZWxzeW5jY2FjaGUsIGFuZCBzbmFwc2hvdCBpbnZhbGlkYXRpb25z IGFyZQorICogdHJhbnNhY3Rpb25hbCwgYW5kIHNvIGFyZSBzZW50IHRvIG90aGVyIGJhY2tlbmRz IHVwb24gY29tbWl0LiAgSW50ZXJuYWxseQorICogdG8gdGhlIGdlbmVyYXRpbmcgYmFja2VuZCwg dGhleSBhcmUgYWxzbyBwcm9jZXNzZWQgYXQKKyAqIENvbW1hbmRDb3VudGVySW5jcmVtZW50IHNv IHRoYXQgbGF0ZXIgY29tbWFuZHMgaW4gdGhlIHNhbWUgdHJhbnNhY3Rpb24gc2VlCisgKiB0aGUg bmV3IHN0YXRlLiAgVGhlIGdlbmVyYXRpbmcgYmFja2VuZCBhbHNvIGhhcyB0byBwcm9jZXNzIHRo ZW0gYXQgYWJvcnQsCisgKiB0byBmbHVzaCBvdXQgYW55IGNhY2hlIHN0YXRlIGl0J3MgbG9hZGVk IGZyb20gbm8tbG9uZ2VyLXZhbGlkIGVudHJpZXMuCiAgKgogICogc21nciBhbmQgcmVsYXRpb24g bWFwcGluZyBpbnZhbGlkYXRpb25zIGFyZSBub24tdHJhbnNhY3Rpb25hbDogdGhleSBhcmUKICAq IHNlbnQgaW1tZWRpYXRlbHkgd2hlbiB0aGUgdW5kZXJseWluZyBmaWxlIGNoYW5nZSBpcyBtYWRl LgpAQCAtMTEwLDYgKzExMSwxNSBAQCB0eXBlZGVmIHN0cnVjdAogCU9pZAkJCXJlbElkOwkJCS8q IHJlbGF0aW9uIElEICovCiB9IFNoYXJlZEludmFsU25hcHNob3RNc2c7CiAKKyNkZWZpbmUgU0hB UkVESU5WQUxSRUxTWU5DX0lECSgtNikKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKwlpbnQ4CQlpZDsJ CQkJLyogdHlwZSBmaWVsZCAtLS0gbXVzdCBiZSBmaXJzdCAqLworCU9pZAkJCWRiSWQ7CQkJLyog ZGF0YWJhc2UgSUQgKi8KKwlPaWQJCQlyZWxpZDsJCQkvKiByZWxhdGlvbiBJRCwgb3IgMCBpZiB3 aG9sZSBSZWxhdGlvblN5bmNDYWNoZSAqLworfSBTaGFyZWRJbnZhbFJlbFN5bmNNc2c7CisKIHR5 cGVkZWYgdW5pb24KIHsKIAlpbnQ4CQlpZDsJCQkJLyogdHlwZSBmaWVsZCAtLS0gbXVzdCBiZSBm aXJzdCAqLwpAQCAtMTE5LDYgKzEyOSw3IEBAIHR5cGVkZWYgdW5pb24KIAlTaGFyZWRJbnZhbFNt Z3JNc2cgc207CiAJU2hhcmVkSW52YWxSZWxtYXBNc2cgcm07CiAJU2hhcmVkSW52YWxTbmFwc2hv dE1zZyBzbjsKKwlTaGFyZWRJbnZhbFJlbFN5bmNNc2cgcnM7CiB9IFNoYXJlZEludmFsaWRhdGlv bk1lc3NhZ2U7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvaW52YWwuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL2ludmFsLmgKaW5kZXggNDA2NThiYTJmZmMuLjliODcxY2FlZjYyIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9pbnZhbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0 aWxzL2ludmFsLmgKQEAgLTIyLDYgKzIyLDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBkZWJ1 Z19kaXNjYXJkX2NhY2hlczsKIAogdHlwZWRlZiB2b2lkICgqU3lzY2FjaGVDYWxsYmFja0Z1bmN0 aW9uKSAoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSk7CiB0eXBlZGVm IHZvaWQgKCpSZWxjYWNoZUNhbGxiYWNrRnVuY3Rpb24pIChEYXR1bSBhcmcsIE9pZCByZWxpZCk7 Cit0eXBlZGVmIHZvaWQgKCpSZWxTeW5jQ2FsbGJhY2tGdW5jdGlvbikgKERhdHVtIGFyZywgT2lk IHJlbGlkKTsKIAogCiBleHRlcm4gdm9pZCBBY2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcyh2b2lk KTsKQEAgLTU1LDYgKzU2LDEwIEBAIGV4dGVybiB2b2lkIENhY2hlSW52YWxpZGF0ZVJlbGNhY2hl QnlUdXBsZShIZWFwVHVwbGUgY2xhc3NUdXBsZSk7CiAKIGV4dGVybiB2b2lkIENhY2hlSW52YWxp ZGF0ZVJlbGNhY2hlQnlSZWxpZChPaWQgcmVsaWQpOwogCitleHRlcm4gdm9pZCBDYWNoZUludmFs aWRhdGVSZWxTeW5jKE9pZCByZWxpZCk7CisKK2V4dGVybiB2b2lkIENhY2hlSW52YWxpZGF0ZVJl bFN5bmNBbGwodm9pZCk7CisKIGV4dGVybiB2b2lkIENhY2hlSW52YWxpZGF0ZVNtZ3IoUmVsRmls ZUxvY2F0b3JCYWNrZW5kIHJsb2NhdG9yKTsKIAogZXh0ZXJuIHZvaWQgQ2FjaGVJbnZhbGlkYXRl UmVsbWFwKE9pZCBkYXRhYmFzZUlkKTsKQEAgLTY2LDggKzcxLDEzIEBAIGV4dGVybiB2b2lkIENh Y2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKGludCBjYWNoZWlkLAogZXh0ZXJuIHZvaWQgQ2Fj aGVSZWdpc3RlclJlbGNhY2hlQ2FsbGJhY2soUmVsY2FjaGVDYWxsYmFja0Z1bmN0aW9uIGZ1bmMs CiAJCQkJCQkJCQkJICBEYXR1bSBhcmcpOwogCitleHRlcm4gdm9pZCBDYWNoZVJlZ2lzdGVyUmVs U3luY0NhbGxiYWNrKFJlbFN5bmNDYWxsYmFja0Z1bmN0aW9uIGZ1bmMsCisJCQkJCQkJCQkJIERh dHVtIGFyZyk7CisKIGV4dGVybiB2b2lkIENhbGxTeXNjYWNoZUNhbGxiYWNrcyhpbnQgY2FjaGVp ZCwgdWludDMyIGhhc2h2YWx1ZSk7CiAKK2V4dGVybiB2b2lkIENhbGxSZWxTeW5jQ2FsbGJhY2tz KE9pZCByZWxpZCk7CisKIGV4dGVybiB2b2lkIEludmFsaWRhdGVTeXN0ZW1DYWNoZXModm9pZCk7 CiBleHRlcm4gdm9pZCBJbnZhbGlkYXRlU3lzdGVtQ2FjaGVzRXh0ZW5kZWQoYm9vbCBkZWJ1Z19k aXNjYXJkKTsKIAotLSAKMi4zOS4xCgo= --000000000000e406e9063021daa6--