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 1sdSxn-00FnOh-AH for pgsql-hackers@arkaria.postgresql.org; Mon, 12 Aug 2024 11:11:47 +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 1sdSxl-00F4qe-CB for pgsql-hackers@arkaria.postgresql.org; Mon, 12 Aug 2024 11:11:45 +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 1sdSxk-00F4qV-PC for pgsql-hackers@lists.postgresql.org; Mon, 12 Aug 2024 11:11:45 +0000 Received: from mail-ed1-x535.google.com ([2a00:1450:4864:20::535]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sdSxg-004Kzh-Ii for pgsql-hackers@postgresql.org; Mon, 12 Aug 2024 11:11:43 +0000 Received: by mail-ed1-x535.google.com with SMTP id 4fb4d7f45d1cf-5a15692b6f6so4693245a12.0 for ; Mon, 12 Aug 2024 04:11:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723461099; x=1724065899; 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=LYy6gPOykt1ef6pV+QNuW+XoLFZsGf8vqDUjwBmchRw=; b=nhpIaOnNrnN2eDl7CdSvL6OySqfIh9ogQHuGULYcm+/M01y5ua+wlV4nmntB+fQr/z V6nlkMyAFxwQ3MSdRgunbnvGcA50z9HfQL4Pou90rX/ku9Z3+FtVgTIBoAR1OOZ5hovH 31k4GmsabeGMUrRvPEE473LTNsOqqVtF/WHvSIPl7xoiZ82j0CnQI7tvOUI8hgV9lZZ0 LWZbyNlT1vY2mOeY7yLBJqtxCyQ0drAYPvlqAGGGepPB5HKioVAL8E6eJ39zKpephW3P 9JEd2jrcFH9V0PrycoJTeVal6H6p6icizvhhYAfxR00BKvsJLUZwA8wtXvFyNpskSbqX kZYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723461099; x=1724065899; 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=LYy6gPOykt1ef6pV+QNuW+XoLFZsGf8vqDUjwBmchRw=; b=N39xs323r9FxclUGgJpryKvpebdjeG6qcIEi6wV42XZd4ax9YlRaNLZa6UW0Sgrquo nkNny9xmtnx14n8Tiq+0ubWNJ75FkiwTPNEE+d/f4y2/pJMXmgagZv0hpDntaL0KZO0s URpsvKflwLZD678xUHi+KxUBMSg9LiNwUfj+M2ZiH0kIGpc5aIMYl+x8RNZPfyBp4CPc W9RYXbUrz4rF3WHJTkNaPlSJl4t7B4RkLkZreRbpKQrJc33od11byl4vKTnyeZPP4zym dzLVz5uDfySMjjxVegQ7SpRsCFG5FNpqxRGDKjOZaX/wKAtsIFgKk+GYD+f3JMuaow+A FfpA== X-Forwarded-Encrypted: i=1; AJvYcCXNvYharqxkcCdMefmqS4EzE56L/Y0XYGOGQ4XhbVDx0VTTOD0us5NtI7o154Tyis6Zf55KjT75zdp1BQppq+nUXDlXGDHHdnq8OtYw X-Gm-Message-State: AOJu0YyLHSn5cg/wvlkltQLEYBNa/2jX5/lcBuweeO3QeiShnj+2vZjl 1aPF+6Iwxpq//xP6oxlUDhJYkay8MwQPDEduL3TFJ6ODzI9dyjm6UwlZuJWeUAB4K68Vh0CL0u4 VgtKUurlRYnODSkhhENe3HG8KSLc= X-Google-Smtp-Source: AGHT+IG+Gw9TG1gAZDla3ad7Uo18wkkgAEAY2m4m7p95KPJTHxvJBY7ugWP4qc0I3fT+rP82g4Bbv/jdF5piybuBFMQ= X-Received: by 2002:a17:907:9493:b0:a77:dc70:b35f with SMTP id a640c23a62f3a-a80aa67b023mr662855566b.58.1723461098750; Mon, 12 Aug 2024 04:11:38 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Michail Nikolaev Date: Mon, 12 Aug 2024 13:11:26 +0200 Message-ID: Subject: Re: [BUG?] check_exclusion_or_unique_constraint false negative To: "Zhijie Hou (Fujitsu)" Cc: Amit Kapila , "Hayato Kuroda (Fujitsu)" , PostgreSQL Hackers , Andres Freund Content-Type: multipart/mixed; boundary="000000000000936095061f7a8e1b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000936095061f7a8e1b Content-Type: multipart/alternative; boundary="000000000000936095061f7a8e19" --000000000000936095061f7a8e19 Content-Type: text/plain; charset="UTF-8" Hello, Hou zj! > In my test, if the tuple is updated and new tuple is in the same page, > heapam_index_fetch_tuple should find the new tuple using HOT chain. So, it's a > bit unclear to me how the updated tuple is missing. Maybe I missed some other > conditions for this issue. Yeah, I think the pgbench-based reproducer may also cause page splits in btree. But we may add an index to the table to disable HOT. I have attached a reproducer for this case using a spec and injection points. I hope it helps, check the attached files. Best regards, Mikhail. --000000000000936095061f7a8e19 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello, Hou zj!

> In my test, if the tuple is upd= ated and new tuple is in the same page,
> heapam_index_fetch_tuple sh= ould find the new tuple using HOT chain. So, it's a
> bit unclear= to me how the updated tuple is missing. Maybe I missed some other
> = conditions for this issue.

Yeah, I think the pgbench-based reproduce= r may also cause page splits in btree.
But we may add an index to the ta= ble to disable HOT.

I have attached a reproducer for this case using= a spec and injection points.

I hope it=C2=A0helps, chec= k the attached files.

Best regards,
Mikhail.
--000000000000936095061f7a8e19-- --000000000000936095061f7a8e1b Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0002-additional-test-spec-to-reproduce-dirty-snapshot-.patch" Content-Disposition: attachment; filename="v2-0002-additional-test-spec-to-reproduce-dirty-snapshot-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lzqw6wrr0 RnJvbSBlM2MxYmViNGQyNzM5ZmIzYjFjYjdlMDY4YTdlZjkxYjBkYTYxZmM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxua2V5QHRvbG9rYS5haT4KRGF0ZTogTW9uLCAxMiBB dWcgMjAyNCAxMzowNzoxNSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIgMi8yXSBhZGRpdGlvbmFs IHRlc3Qgc3BlYyB0byByZXByb2R1Y2UgZGlydHkgc25hcHNob3Qgc2NhbgogaXNzdWUKCi0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYyAgICAgICAgICAgIHwgIDggKysrKwog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgICAgICAgICAgIHwgIDEgKwogc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlICAgIHwgIDIgKy0KIC4uLi9l eHBlY3RlZC9kaXJ0eV9pbmRleF9zY2FuLm91dCAgICAgICAgICAgICB8IDM5ICsrKysrKysrKysr KysrKysrCiBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQgfCAg MSArCiAuLi4vc3BlY3MvZGlydHlfaW5kZXhfc2Nhbi5zcGVjICAgICAgICAgICAgICAgfCA0MyAr KysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMvZXhwZWN0ZWQvZGlydHlfaW5kZXhfc2Nhbi5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3BlY3MvZGlydHlfaW5kZXhfc2Nh bi5zcGVjCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKaW5kZXggZGNkMDRiODEzZC4uNzhi M2E1OGIzYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCkBAIC01Nyw2ICs1Nyw3IEBA CiAjaW5jbHVkZSAidXRpbHMvcnVsZXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5o IgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9u X3BvaW50LmgiCiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjk0LDYgKzY5NSwxMyBAQCBpbmRleF9nZXRu ZXh0X3Nsb3QoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwgVHVw bGVUYWJsZVNsb3QgKgogCQkgKiB0aGUgaW5kZXguCiAJCSAqLwogCQlBc3NlcnQoSXRlbVBvaW50 ZXJJc1ZhbGlkKCZzY2FuLT54c19oZWFwdGlkKSk7CisjaWZkZWYgVVNFX0lOSkVDVElPTl9QT0lO VFMKKwkJaWYgKCFJc0NhdGFsb2dSZWxhdGlvbk9pZChzY2FuLT5pbmRleFJlbGF0aW9uLT5yZF9p ZCkpCisJCXsKKwkJCUlOSkVDVElPTl9QT0lOVCgiaW5kZXhfZ2V0bmV4dF9zbG90X2JlZm9yZV9m ZXRjaCIpOworCQl9CisjZW5kaWYKKwogCQlpZiAoaW5kZXhfZmV0Y2hfaGVhcChzY2FuLCBzbG90 KSkKIAkJCXJldHVybiB0cnVlOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNJbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKaW5k ZXggNDU3NjdiNGUyMC4uNDc5ZjE0NWQ5OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0luZGV4aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5n LmMKQEAgLTc3NSw2ICs3NzUsNyBAQCBjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFp bnQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICogTWF5IGhhdmUgdG8gcmVzdGFy dCBzY2FuIGZyb20gdGhpcyBwb2ludCBpZiBhIHBvdGVudGlhbCBjb25mbGljdCBpcwogCSAqIGZv dW5kLgogCSAqLworCUlOSkVDVElPTl9QT0lOVCgiY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9j b25zdHJhaW50X2JlZm9yZV9pbmRleF9zY2FuIik7CiByZXRyeToKIAljb25mbGljdCA9IGZhbHNl OwogCWZvdW5kX3NlbGYgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50 cy9NYWtlZmlsZQppbmRleCAyZmZkMmY3N2VkLi45ODFkZmY0ZTZmIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCkBAIC05LDcgKzksNyBAQCBQR0ZJTEVERVND ID0gImluamVjdGlvbl9wb2ludHMgLSBmYWNpbGl0eSBmb3IgaW5qZWN0aW9uIHBvaW50cyIKIFJF R1JFU1MgPSBpbmplY3Rpb25fcG9pbnRzCiBSRUdSRVNTX09QVFMgPSAtLWRscGF0aD0kKHRvcF9i dWlsZGRpcikvc3JjL3Rlc3QvcmVncmVzcwogCi1JU09MQVRJT04gPSBpbnBsYWNlCitJU09MQVRJ T04gPSBpbnBsYWNlIGRpcnR5X2luZGV4X3NjYW4KIAogIyBUaGUgaW5qZWN0aW9uIHBvaW50cyBh cmUgY2x1c3Rlci13aWRlLCBzbyBkaXNhYmxlIGluc3RhbGxjaGVjawogTk9fSU5TVEFMTENIRUNL ID0gMQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVj dGVkL2RpcnR5X2luZGV4X3NjYW4ub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL2V4cGVjdGVkL2RpcnR5X2luZGV4X3NjYW4ub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLjI0OWU2OWNiNzIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvZGlydHlfaW5kZXhfc2Nhbi5vdXQKQEAg LTAsMCArMSwzOSBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDMgc2Vzc2lvbnMKKworc3RhcnRp bmcgcGVybXV0YXRpb246IHMxX3MxIHMzX3MxIHMyX3MxIHMzX3MyCitpbmplY3Rpb25fcG9pbnRz X2F0dGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAg CisoMSByb3cpCisKK3N0ZXAgczFfczE6IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVFUyg0Miwg MSkgb24gY29uZmxpY3QoaSkgZG8gdXBkYXRlIHNldCBuID0gRVhDTFVERUQubiArIDE7IDx3YWl0 aW5nIC4uLj4KK3N0ZXAgczNfczE6IAorCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgn Y2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X2JlZm9yZV9pbmRleF9zY2FuJyk7 CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdjaGVja19leGNsdXNpb25fb3JfdW5p cXVlX2NvbnN0cmFpbnRfYmVmb3JlX2luZGV4X3NjYW4nKTsKKworaW5qZWN0aW9uX3BvaW50c193 YWtldXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAor KDEgcm93KQorCitpbmplY3Rpb25fcG9pbnRzX2RldGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczJfczE6IFVQREFU RSB0ZXN0LnRibCBTRVQgbiA9IG4gKyAxIFdIRVJFIGkgPSA0MjsKK3N0ZXAgczNfczI6IAorCVNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnaW5kZXhfZ2V0bmV4dF9zbG90X2JlZm9yZV9m ZXRjaCcpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaW5kZXhfZ2V0bmV4dF9z bG90X2JlZm9yZV9mZXRjaCcpOworCitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK2luamVj dGlvbl9wb2ludHNfZGV0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAg ICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMV9zMTogPC4uLiBjb21wbGV0ZWQ+CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQgYi9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKaW5kZXggM2MyM2Mx NGQ4MS4uNDk2OTk1Mjc5NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50 cy9tZXNvbi5idWlsZApAQCAtNDAsNiArNDAsNyBAQCB0ZXN0cyArPSB7CiAgICdpc29sYXRpb24n OiB7CiAgICAgJ3NwZWNzJzogWwogICAgICAgJ2lucGxhY2UnLAorICAgICAgJ2RpcnR5X2luZGV4 X3NjYW4nLAogICAgIF0sCiAgIH0sCiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvc3BlY3MvZGlydHlfaW5kZXhfc2Nhbi5zcGVjIGIvc3JjL3Rlc3QvbW9k dWxlcy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL2RpcnR5X2luZGV4X3NjYW4uc3BlYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4xN2M1ZWMzN2U2Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL2RpcnR5X2luZGV4 X3NjYW4uc3BlYwpAQCAtMCwwICsxLDQzIEBACitzZXR1cAoreworCUNSRUFURSBFWFRFTlNJT04g aW5qZWN0aW9uX3BvaW50czsKKwlDUkVBVEUgU0NIRU1BIHRlc3Q7CisJQ1JFQVRFIFVOTE9HR0VE IFRBQkxFIHRlc3QudGJsKGkgaW50IHByaW1hcnkga2V5LCBuIGludCk7CisJQ1JFQVRFIElOREVY IHRibF9uX2lkeCBPTiB0ZXN0LnRibChuKTsKKwlJTlNFUlQgSU5UTyB0ZXN0LnRibCBWQUxVRVMo NDIsMSk7Cit9CisKK3RlYXJkb3duCit7CisJRFJPUCBTQ0hFTUEgdGVzdCBDQVNDQURFOworCURS T1AgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7Cit9CisKK3Nlc3Npb24gczEKK3NldHVwCXsK KwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKKwlTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19hdHRhY2goJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19j b25mbGljdCcsICdlcnJvcicpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnY2hl Y2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X2JlZm9yZV9pbmRleF9zY2FuJywgJ3dh aXQnKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2luZGV4X2dldG5leHRfc2xv dF9iZWZvcmVfZmV0Y2gnLCAnd2FpdCcpOworfQorCitzdGVwIHMxX3MxCXsgSU5TRVJUIElOVE8g dGVzdC50YmwgVkFMVUVTKDQyLCAxKSBvbiBjb25mbGljdChpKSBkbyB1cGRhdGUgc2V0IG4gPSBF WENMVURFRC5uICsgMTsgfQorCitzZXNzaW9uIHMyCitzdGVwIHMyX3MxCXsgVVBEQVRFIHRlc3Qu dGJsIFNFVCBuID0gbiArIDEgV0hFUkUgaSA9IDQyOyB9CisKK3Nlc3Npb24gczMKK3N0ZXAgczNf czEJCXsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2NoZWNrX2V4Y2x1c2lvbl9v cl91bmlxdWVfY29uc3RyYWludF9iZWZvcmVfaW5kZXhfc2NhbicpOworCVNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX2RldGFjaCgnY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X2Jl Zm9yZV9pbmRleF9zY2FuJyk7Cit9CitzdGVwIHMzX3MyCQl7CisJU0VMRUNUIGluamVjdGlvbl9w b2ludHNfd2FrZXVwKCdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoJyk7CisJU0VMRUNU IGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNo Jyk7Cit9CisKK3Blcm11dGF0aW9uCisJczFfczEKKwlzM19zMQorCXMyX3MxCisJczNfczIKXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0tIAoyLjM0LjEKCg== --000000000000936095061f7a8e1b Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-fix-for-lost-record-in-case-of-DirtySnapshot-inde.patch" Content-Disposition: attachment; filename="v2-0001-fix-for-lost-record-in-case-of-DirtySnapshot-inde.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lzqw6wrw1 RnJvbSBiNjM5Mzc5YzM5M2M3MGNhMzIyYmFiNTcyMjI1MTNlNzFjOTZhZDc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxua2V5QHRvbG9rYS5haT4KRGF0ZTogRnJpLCAyIEF1 ZyAyMDI0IDE2OjIwOjMyICswMjAwClN1YmplY3Q6IFtQQVRDSCB2MiAxLzJdIGZpeCBmb3IgbG9z dCByZWNvcmQgaW4gY2FzZSBvZiBEaXJ0eVNuYXBzaG90IGluZGV4CiBzY2FucyArIGRvY3MgKyB0 ZXN0CgotLS0KIGNvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYyAgICAgICAgICAgICB8 ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAgfCAg MiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYyAgIHwgMjAg KysrKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvUkVBRE1FICAgICAgICAgICAgICB8 IDEwICsrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMgICAgICAgICB8 ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS92YXJzdXAuYyAgICAgICAgICAgfCAx MSArKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgICAgICAgICAgIHwg MjkgKysrKysrKysrKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyAg ICAgICAgfCAyNiArKysrKysrKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29y aWdpbi5jICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaCAgICAgICAg ICAgICAgICAgIHwgMTYgKysrKysrKwogc3JjL2luY2x1ZGUvdXRpbHMvc25hcG1nci5oICAgICAg ICAgICAgICAgICAgIHwgIDggKysrLQogc3JjL2luY2x1ZGUvdXRpbHMvc25hcHNob3QuaCAgICAg ICAgICAgICAgICAgIHwgIDUgKy0KIC4uLi90ZXN0X21pc2MvdC8wMDZfZGlydHlfaW5kZXhfc2Nh bi5wbCAgICAgICB8IDQ3ICsrKysrKysrKysrKysrKysrKysKIDEzIGZpbGVzIGNoYW5nZWQsIDE2 OCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAwNl9kaXJ0eV9pbmRleF9zY2FuLnBsCgpkaWZmIC0t Z2l0IGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jIGIvY29udHJpYi9wZ3N0YXR0 dXBsZS9wZ3N0YXR0dXBsZS5jCmluZGV4IDNiZDhiOTYxOTcuLjRkMWI0NjlkOGUgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYworKysgYi9jb250cmliL3Bnc3Rh dHR1cGxlL3Bnc3RhdHR1cGxlLmMKQEAgLTMzMiw3ICszMzIsNyBAQCBwZ3N0YXRfaGVhcChSZWxh dGlvbiByZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogCXNjYW4gPSB0YWJsZV9iZWdpbnNj YW5fc3RyYXQocmVsLCBTbmFwc2hvdEFueSwgMCwgTlVMTCwgdHJ1ZSwgZmFsc2UpOwogCWhzY2Fu ID0gKEhlYXBTY2FuRGVzYykgc2NhbjsKIAotCUluaXREaXJ0eVNuYXBzaG90KFNuYXBzaG90RGly dHkpOworCUluaXREaXJ0eVNuYXBzaG90KFNuYXBzaG90RGlydHksIE5VTEwpOwogCiAJbmJsb2Nr cyA9IGhzY2FuLT5yc19uYmxvY2tzOwkvKiAjIGJsb2NrcyB0byBiZSBzY2FubmVkICovCiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDZmOGIxYjc5MjkuLjdl YTRiMjA1ZDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5k bGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAt NDA0LDcgKzQwNCw3IEBAIHR1cGxlX2xvY2tfcmV0cnk6CiAJCQkgKgogCQkJICogTG9vcCBoZXJl IHRvIGRlYWwgd2l0aCB1cGRhdGVkIG9yIGJ1c3kgdHVwbGVzCiAJCQkgKi8KLQkJCUluaXREaXJ0 eVNuYXBzaG90KFNuYXBzaG90RGlydHkpOworCQkJSW5pdERpcnR5U25hcHNob3QoU25hcHNob3RE aXJ0eSwgTlVMTCk7CiAJCQlmb3IgKDs7KQogCQkJewogCQkJCWlmIChJdGVtUG9pbnRlckluZGlj YXRlc01vdmVkUGFydGl0aW9ucyh0aWQpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bV92aXNpYmlsaXR5LmMKaW5kZXggOTI0M2ZlZWQwMS4uOTFkZTVkY2VhMSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCkBAIC03MTksNiArNzE5LDEyIEBA IEhlYXBUdXBsZVNhdGlzZmllc1VwZGF0ZShIZWFwVHVwbGUgaHR1cCwgQ29tbWFuZElkIGN1cmNp ZCwKIAkJcmV0dXJuIFRNX0RlbGV0ZWQ7CQkvKiBkZWxldGVkIGJ5IG90aGVyICovCiB9CiAKK2lu bGluZSBzdGF0aWMgdm9pZCBVcGRhdGVEaXJ0eU1heFhtYXgoU25hcHNob3Qgc25hcHNob3QsIFRy YW5zYWN0aW9uSWQgeG1heCkKK3sKKwlpZiAoc25hcHNob3QtPnhpcCAhPSBOVUxMKQorCQlzbmFw c2hvdC0+eGlwWzBdID0gVHJhbnNhY3Rpb25JZE5ld2VyKHhtYXgsIHNuYXBzaG90LT54aXBbMF0p OworfQorCiAvKgogICogSGVhcFR1cGxlU2F0aXNmaWVzRGlydHkKICAqCQlUcnVlIGlmZiBoZWFw IHR1cGxlIGlzIHZhbGlkIGluY2x1ZGluZyBlZmZlY3RzIG9mIG9wZW4gdHJhbnNhY3Rpb25zLgpA QCAtNzM3LDcgKzc0Myw5IEBAIEhlYXBUdXBsZVNhdGlzZmllc1VwZGF0ZShIZWFwVHVwbGUgaHR1 cCwgQ29tbWFuZElkIGN1cmNpZCwKICAqIFNpbWlsYXJseSBmb3Igc25hcHNob3QtPnhtYXggYW5k IHRoZSB0dXBsZSdzIHhtYXguICBJZiB0aGUgdHVwbGUgd2FzCiAgKiBpbnNlcnRlZCBzcGVjdWxh dGl2ZWx5LCBtZWFuaW5nIHRoYXQgdGhlIGluc2VydGVyIG1pZ2h0IHN0aWxsIGJhY2sgZG93bgog ICogb24gdGhlIGluc2VydGlvbiB3aXRob3V0IGFib3J0aW5nIHRoZSB3aG9sZSB0cmFuc2FjdGlv biwgdGhlIGFzc29jaWF0ZWQKLSAqIHRva2VuIGlzIGFsc28gcmV0dXJuZWQgaW4gc25hcHNob3Qt PnNwZWN1bGF0aXZlVG9rZW4uCisgKiB0b2tlbiBpcyBhbHNvIHJldHVybmVkIGluIHNuYXBzaG90 LT5zcGVjdWxhdGl2ZVRva2VuLiBJZiB4aXAgaXMgIT0gTlVMTAorICogeGlwWzBdIG1heSBiZSBz ZXQgdG8geGlkIG9mIGRlbGV0ZXIgaWYgaXQgbmV3ZXIgdGhhbiBwcmV2aW91c2x5IHN0b3JlCisg KiB2YWx1ZS4KICAqLwogc3RhdGljIGJvb2wKIEhlYXBUdXBsZVNhdGlzZmllc0RpcnR5KEhlYXBU dXBsZSBodHVwLCBTbmFwc2hvdCBzbmFwc2hvdCwKQEAgLTc1MCw2ICs3NTgsMTAgQEAgSGVhcFR1 cGxlU2F0aXNmaWVzRGlydHkoSGVhcFR1cGxlIGh0dXAsIFNuYXBzaG90IHNuYXBzaG90LAogCiAJ c25hcHNob3QtPnhtaW4gPSBzbmFwc2hvdC0+eG1heCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwog CXNuYXBzaG90LT5zcGVjdWxhdGl2ZVRva2VuID0gMDsKKwkvKgorCSAqIFdlIGludGVudGlvbmFs bHkga2VlcCBzbmFwc2hvdC0+eGlwIHZhbHVlcyB1bmNoYW5nZWQgYXMgdGhleSBzaG91bGQKKwkg KiBiZSByZXNldCBieSBsb2dpYyBvdXQgb2YgdGhlIHNpbmdsZSBoZWFwIGZldGNoLgorCSAqLwog CiAJaWYgKCFIZWFwVHVwbGVIZWFkZXJYbWluQ29tbWl0dGVkKHR1cGxlKSkKIAl7CkBAIC04NzAs NiArODgyLDcgQEAgSGVhcFR1cGxlU2F0aXNmaWVzRGlydHkoSGVhcFR1cGxlIGh0dXAsIFNuYXBz aG90IHNuYXBzaG90LAogCXsKIAkJaWYgKEhFQVBfWE1BWF9JU19MT0NLRURfT05MWSh0dXBsZS0+ dF9pbmZvbWFzaykpCiAJCQlyZXR1cm4gdHJ1ZTsKKwkJVXBkYXRlRGlydHlNYXhYbWF4KHNuYXBz aG90LCBIZWFwVHVwbGVIZWFkZXJHZXRSYXdYbWF4KHR1cGxlKSk7CiAJCXJldHVybiBmYWxzZTsJ CQkvKiB1cGRhdGVkIGJ5IG90aGVyICovCiAJfQogCkBAIC04OTMsNyArOTA2LDEwIEBAIEhlYXBU dXBsZVNhdGlzZmllc0RpcnR5KEhlYXBUdXBsZSBodHVwLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJ CXJldHVybiB0cnVlOwogCQl9CiAJCWlmIChUcmFuc2FjdGlvbklkRGlkQ29tbWl0KHhtYXgpKQor CQl7CisJCQlVcGRhdGVEaXJ0eU1heFhtYXgoc25hcHNob3QsIHhtYXgpOwogCQkJcmV0dXJuIGZh bHNlOworCQl9CiAJCS8qIGl0IG11c3QgaGF2ZSBhYm9ydGVkIG9yIGNyYXNoZWQgKi8KIAkJcmV0 dXJuIHRydWU7CiAJfQpAQCAtOTAyLDYgKzkxOCw3IEBAIEhlYXBUdXBsZVNhdGlzZmllc0RpcnR5 KEhlYXBUdXBsZSBodHVwLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAl7CiAJCWlmIChIRUFQX1hNQVhf SVNfTE9DS0VEX09OTFkodHVwbGUtPnRfaW5mb21hc2spKQogCQkJcmV0dXJuIHRydWU7CisJCVVw ZGF0ZURpcnR5TWF4WG1heChzbmFwc2hvdCwgSGVhcFR1cGxlSGVhZGVyR2V0UmF3WG1heCh0dXBs ZSkpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC05MzEsNiArOTQ4LDcgQEAgSGVhcFR1cGxl U2F0aXNmaWVzRGlydHkoSGVhcFR1cGxlIGh0dXAsIFNuYXBzaG90IHNuYXBzaG90LAogCiAJU2V0 SGludEJpdHModHVwbGUsIGJ1ZmZlciwgSEVBUF9YTUFYX0NPTU1JVFRFRCwKIAkJCQlIZWFwVHVw bGVIZWFkZXJHZXRSYXdYbWF4KHR1cGxlKSk7CisJVXBkYXRlRGlydHlNYXhYbWF4KHNuYXBzaG90 LCBIZWFwVHVwbGVIZWFkZXJHZXRSYXdYbWF4KHR1cGxlKSk7CiAJcmV0dXJuIGZhbHNlOwkJCQkv KiB1cGRhdGVkIGJ5IG90aGVyICovCiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvUkVBRE1FIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9SRUFETUUKaW5kZXgg NTJlNjQ2YzdmNy4uNmRlNzJhMjljYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9SRUFETUUKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9SRUFETUUKQEAgLTQ4 OSw2ICs0ODksMTYgQEAgb24gdGhlIGxlYWYgcGFnZSBhdCBhbGwgd2hlbiB0aGUgcGFnZSdzIExT TiBoYXMgY2hhbmdlZC4gIChUaGF0IHdvbid0IHdvcmsKIHdpdGggYW4gdW5sb2dnZWQgaW5kZXgs IHNvIGZvciBub3cgd2UgZG9uJ3QgZXZlciBhcHBseSB0aGUgImRvbid0IGhvbGQKIG9udG8gcGlu IiBvcHRpbWl6YXRpb24gdGhlcmUuKQogCitEZXNwaXRlIHRoZSBsb2NraW5nIHByb3RvY29sIGlu IHBsYWNlLCBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0byByZWNlaXZlIGFuCitpbmNvcnJlY3QgcmVz dWx0IGR1cmluZyBub24tTVZDQyBzY2Fucy4gVGhpcyBpc3N1ZSBjYW4gb2NjdXIgaWYgYSBjb25j dXJyZW50Cit0cmFuc2FjdGlvbiBkZWxldGVzIGEgdHVwbGUgYW5kIGluc2VydHMgYSBuZXcgdHVw bGUgd2l0aCBhIG5ldyBUSUQgaW4gdGhlCitzYW1lIHBhZ2UuIElmIHRoZSBzY2FuIGhhcyBhbHJl YWR5IHZpc2l0ZWQgdGhlIHBhZ2UgYW5kIGNhY2hlZCBpdHMgY29udGVudAoraW4gdGhlIGJ1ZmZl ciBjYWNoZSwgaXQgbWlnaHQgc2tpcCB0aGUgb2xkIHR1cGxlIGR1ZSB0byBkZWxldGlvbiBhbmQg bWlzcwordGhlIG5ldyB0dXBsZSBiZWNhdXNlIG9mIHRoZSBjYWNoZS4gVGhpcyBpcyBhIGtub3du IGxpbWl0YXRpb24gb2YgdGhlCitTbmFwc2hvdERpcnR5IGFuZCBTbmFwc2hvdEFueSBub24tTVZD QyBzY2Fucy4gSG93ZXZlciwgZm9yIFNuYXBzaG90RGlydHksCitpdCBpcyBwb3NzaWJsZSB0byB3 b3JrIGFyb3VuZCB0aGlzIGxpbWl0YXRpb24gYnkgdXNpbmcgdGhlIHJldHVybmVkIG1heCh4bWF4 KQordG8gY29tcGFyZSBpdCB3aXRoIHRoZSBsYXRlc3QgY29tbWl0dGVkIHRyYW5zYWN0aW9uIGJl Zm9yZSB0aGUgc2NhbiBzdGFydGVkLgorCiBGYXN0cGF0aCBGb3IgSW5kZXggSW5zZXJ0aW9uCiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGlu c2VydC5jCmluZGV4IDdlODkwMmU0OGMuLjk0M2FlZTA4N2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRpbnNlcnQuYwpAQCAtNDI3LDcgKzQyNyw3IEBAIF9idF9jaGVja191bmlxdWUoUmVs YXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLCBSZWxhdGlvbiBoZWFwUmVsLAog CS8qIEFzc3VtZSB1bmlxdWUgdW50aWwgd2UgZmluZCBhIGR1cGxpY2F0ZSAqLwogCSppc191bmlx dWUgPSB0cnVlOwogCi0JSW5pdERpcnR5U25hcHNob3QoU25hcHNob3REaXJ0eSk7CisJSW5pdERp cnR5U25hcHNob3QoU25hcHNob3REaXJ0eSwgTlVMTCk7CiAKIAlwYWdlID0gQnVmZmVyR2V0UGFn ZShpbnNlcnRzdGF0ZS0+YnVmKTsKIAlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS92YXJzdXAuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3ZhcnN1cC5jCmluZGV4IGZiNmE4NmFmY2IuLjUyMTA5NjM1YjQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3ZhcnN1cC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3ZhcnN1cC5jCkBAIC0yOTYsNiArMjk2LDE3IEBAIFJl YWROZXh0RnVsbFRyYW5zYWN0aW9uSWQodm9pZCkKIAlyZXR1cm4gZnVsbFhpZDsKIH0KIAorRnVs bFRyYW5zYWN0aW9uSWQgUmVhZExhc3RDb21wbGV0ZWRGdWxsVHJhbnNhY3Rpb25JZCh2b2lkKQor eworCUZ1bGxUcmFuc2FjdGlvbklkIGZ1bGxYaWQ7CisKKwlMV0xvY2tBY3F1aXJlKFhpZEdlbkxv Y2ssIExXX1NIQVJFRCk7CisJZnVsbFhpZCA9IFRyYW5zYW1WYXJpYWJsZXMtPmxhdGVzdENvbXBs ZXRlZFhpZDsKKwlMV0xvY2tSZWxlYXNlKFhpZEdlbkxvY2spOworCisJcmV0dXJuIGZ1bGxYaWQ7 Cit9CisKIC8qCiAgKiBBZHZhbmNlIG5leHRYaWQgdG8gdGhlIHZhbHVlIGFmdGVyIGEgZ2l2ZW4g eGlkLiAgVGhlIGVwb2NoIGlzIGluZmVycmVkLgogICogVGhpcyBtdXN0IG9ubHkgYmUgY2FsbGVk IGR1cmluZyByZWNvdmVyeSBvciBmcm9tIHR3by1waGFzZSBzdGFydC11cCBjb2RlLgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRleCA5ZjA1YjM2NTRjLi40NTc2N2I0ZTIwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwpAQCAtMTE1LDYgKzExNSw3IEBACiAjaW5jbHVk ZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVk ZSAidXRpbHMvc25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgog CiAvKiB3YWl0TW9kZSBhcmd1bWVudCB0byBjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0 cmFpbnQoKSAqLwogdHlwZWRlZiBlbnVtCkBAIC03MDIsNiArNzAzLDggQEAgY2hlY2tfZXhjbHVz aW9uX29yX3VuaXF1ZV9jb25zdHJhaW50KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAog CUluZGV4U2NhbkRlc2MgaW5kZXhfc2NhbjsKIAlTY2FuS2V5RGF0YSBzY2Fua2V5c1tJTkRFWF9N QVhfS0VZU107CiAJU25hcHNob3REYXRhIERpcnR5U25hcHNob3Q7CisJVHJhbnNhY3Rpb25JZCBt YXhYbWF4LAorCQkJCSAgbGF0ZXN0Q29tcGxldGVkWGlkOwogCWludAkJCWk7CiAJYm9vbAkJY29u ZmxpY3Q7CiAJYm9vbAkJZm91bmRfc2VsZjsKQEAgLTczOCw5ICs3NDEsMTAgQEAgY2hlY2tfZXhj bHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4 LAogCiAJLyoKIAkgKiBTZWFyY2ggdGhlIHR1cGxlcyB0aGF0IGFyZSBpbiB0aGUgaW5kZXggZm9y IGFueSB2aW9sYXRpb25zLCBpbmNsdWRpbmcKLQkgKiB0dXBsZXMgdGhhdCBhcmVuJ3QgdmlzaWJs ZSB5ZXQuCisJICogdHVwbGVzIHRoYXQgYXJlbid0IHZpc2libGUgeWV0LiBBbHNvLCBkZXRlY3Qg Y2FzZXMgaW5kZXggc2NhbiBza2lwIHRoZQorCSAqIHR1cGxlIGluIGNhc2Ugb2YgcGFyYWxsZWwg dXBkYXRlIGFmdGVyIGluZGV4IHBhZ2UgY29udGVudCB3YXMgY2FjaGVkLgogCSAqLwotCUluaXRE aXJ0eVNuYXBzaG90KERpcnR5U25hcHNob3QpOworCUluaXREaXJ0eVNuYXBzaG90KERpcnR5U25h cHNob3QsICZtYXhYbWF4KTsKIAogCWZvciAoaSA9IDA7IGkgPCBpbmRua2V5YXR0czsgaSsrKQog CXsKQEAgLTc3NCw2ICs3NzgsMTIgQEAgY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJh aW50KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogcmV0cnk6CiAJY29uZmxpY3QgPSBm YWxzZTsKIAlmb3VuZF9zZWxmID0gZmFsc2U7CisJLyoKKwkgKiBFYWNoIHRpbWUgd2UgcmV0cnkg LSByZW1lbWJlciBsYXN0IGNvbXBsZXRlZCB0cmFuc2FjdGlvbiBiZWZvcmUgc3RhcnQKKwkgKiBv ZiB0aGUgc2Nhbi4gQXNvIHJlc2V0IG1heFhtYXguCisJICovCisJbGF0ZXN0Q29tcGxldGVkWGlk ID0gWGlkRnJvbUZ1bGxUcmFuc2FjdGlvbklkKFJlYWRMYXN0Q29tcGxldGVkRnVsbFRyYW5zYWN0 aW9uSWQoKSk7CisJbWF4WG1heCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCWluZGV4X3NjYW4g PSBpbmRleF9iZWdpbnNjYW4oaGVhcCwgaW5kZXgsICZEaXJ0eVNuYXBzaG90LCBpbmRua2V5YXR0 cywgMCk7CiAJaW5kZXhfcmVzY2FuKGluZGV4X3NjYW4sIHNjYW5rZXlzLCBpbmRua2V5YXR0cywg TlVMTCwgMCk7CiAKQEAgLTg4OSw2ICs4OTksMTkgQEAgcmV0cnk6CiAJfQogCiAJaW5kZXhfZW5k c2NhbihpbmRleF9zY2FuKTsKKwkvKgorCSAqIENoZWNrIGZvciB0aGUgY2FzZSB3aGVuIGluZGV4 IHNjYW4gZmV0Y2hlZCByZWNvcmRzIGJlZm9yZSBzb21lIG90aGVyCisJICogdHJhbnNhY3Rpb24g ZGVsZXRlZCB0dXBsZSBhbmQgaW5zZXJ0ZWQgYSBuZXcgb25lLgorCSAqLworCWlmICghY29uZmxp Y3QgJiYgVHJhbnNhY3Rpb25JZElzVmFsaWQobWF4WG1heCkgJiYgIVRyYW5zYWN0aW9uSWRJc0N1 cnJlbnRUcmFuc2FjdGlvbklkKG1heFhtYXgpKQorCXsKKwkJLyoKKwkJICogSWYgd2UgaGF2ZSBz a2lwcGVkIHNvbWUgdHVwbGUgYmVjYXVzZSBpdCB3YXMgZGVsZXRlZCwgYnV0IGRlbGV0aW9uIGhh cHBlbmVkIGFmdGVyCisJCSAqIHN0YXJ0IG9mIHRoZSBpbmRleCBzY2FuIC0gcmV0cnkgdG8gYmUg c3VyZS4KKwkJICovCisJCWlmIChUcmFuc2FjdGlvbklkUHJlY2VkZXMobGF0ZXN0Q29tcGxldGVk WGlkLCBtYXhYbWF4KSkKKwkJCWdvdG8gcmV0cnk7CisJfQogCiAJLyoKIAkgKiBPcmRpbmFyaWx5 LCBhdCB0aGlzIHBvaW50IHRoZSBzZWFyY2ggc2hvdWxkIGhhdmUgZm91bmQgdGhlIG9yaWdpbmFs bHkKQEAgLTkwMiw2ICs5MjUsOCBAQCByZXRyeToKIAogCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJs ZVNsb3QoZXhpc3Rpbmdfc2xvdCk7CiAKKwlpZiAoIWNvbmZsaWN0KQorCQlJTkpFQ1RJT05fUE9J TlQoImNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCIpOwog CXJldHVybiAhY29uZmxpY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNSZXBsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9u LmMKaW5kZXggZDBhODljZDU3Ny4uZmJkZGI2NDQyYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1JlcGxpY2F0aW9uLmMKQEAgLTE4Myw2ICsxODMsOCBAQCBSZWxhdGlvbkZpbmRSZXBsVHVwbGVC eUluZGV4KFJlbGF0aW9uIHJlbCwgT2lkIGlkeG9pZCwKIAlJbmRleFNjYW5EZXNjIHNjYW47CiAJ U25hcHNob3REYXRhIHNuYXA7CiAJVHJhbnNhY3Rpb25JZCB4d2FpdDsKKwlUcmFuc2FjdGlvbklk IG1heFhtYXgsCisJCQkJICBsYXRlc3RDb21wbGV0ZWRYaWQ7CiAJUmVsYXRpb24JaWR4cmVsOwog CWJvb2wJCWZvdW5kOwogCVR5cGVDYWNoZUVudHJ5ICoqZXEgPSBOVUxMOwpAQCAtMTkzLDcgKzE5 NSw3IEBAIFJlbGF0aW9uRmluZFJlcGxUdXBsZUJ5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQgaWR4 b2lkLAogCiAJaXNJZHhTYWZlVG9Ta2lwRHVwbGljYXRlcyA9IChHZXRSZWxhdGlvbklkZW50aXR5 T3JQSyhyZWwpID09IGlkeG9pZCk7CiAKLQlJbml0RGlydHlTbmFwc2hvdChzbmFwKTsKKwlJbml0 RGlydHlTbmFwc2hvdChzbmFwLCAmbWF4WG1heCk7CiAKIAkvKiBCdWlsZCBzY2FuIGtleS4gKi8K IAlza2V5X2F0dG9mZiA9IGJ1aWxkX3JlcGxpbmRleF9zY2FuX2tleShza2V5LCByZWwsIGlkeHJl bCwgc2VhcmNoc2xvdCk7CkBAIC0yMDMsNiArMjA1LDEyIEBAIFJlbGF0aW9uRmluZFJlcGxUdXBs ZUJ5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQgaWR4b2lkLAogCiByZXRyeToKIAlmb3VuZCA9IGZh bHNlOworCS8qCisJICogRWFjaCB0aW1lIHdlIHJldHJ5IC0gcmVtZW1iZXIgbGFzdCBjb21wbGV0 ZWQgdHJhbnNhY3Rpb24gYmVmb3JlIHN0YXJ0CisgCSAqIG9mIHRoZSBzY2FuLiBBc28gcmVzZXQg bWF4WG1heC4KKyAJICovCisJbWF4WG1heCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCWxhdGVz dENvbXBsZXRlZFhpZCA9IFhpZEZyb21GdWxsVHJhbnNhY3Rpb25JZChSZWFkTGFzdENvbXBsZXRl ZEZ1bGxUcmFuc2FjdGlvbklkKCkpOwogCiAJaW5kZXhfcmVzY2FuKHNjYW4sIHNrZXksIHNrZXlf YXR0b2ZmLCBOVUxMLCAwKTsKIApAQCAtMjQyLDYgKzI1MCwyMCBAQCByZXRyeToKIAkJYnJlYWs7 CiAJfQogCisJLyoKKwkgKiBDaGVjayBmb3IgdGhlIGNhc2Ugd2hlbiBpbmRleCBzY2FuIGZldGNo ZWQgcmVjb3JkcyBiZWZvcmUgc29tZSBvdGhlcgorCSAqIHRyYW5zYWN0aW9uIGRlbGV0ZWQgdHVw bGUgYW5kIGluc2VydGVkIGEgbmV3IG9uZS4KKwkgKi8KKwlpZiAoIWZvdW5kICYmIFRyYW5zYWN0 aW9uSWRJc1ZhbGlkKG1heFhtYXgpICYmICFUcmFuc2FjdGlvbklkSXNDdXJyZW50VHJhbnNhY3Rp b25JZChtYXhYbWF4KSkKKwl7CisJCS8qCisJCSAqIElmIHdlIGhhdmUgc2tpcHBlZCBzb21lIHR1 cGxlIGJlY2F1c2UgaXQgd2FzIGRlbGV0ZWQsIGJ1dCBkZWxldGlvbiBoYXBwZW5lZCBhZnRlcgor CQkgKiBzdGFydCBvZiB0aGUgaW5kZXggc2NhbiAtIHJldHJ5IHRvIGJlIHN1cmUuCisJCSAqLwor CQlpZiAoVHJhbnNhY3Rpb25JZFByZWNlZGVzKGxhdGVzdENvbXBsZXRlZFhpZCwgbWF4WG1heCkp CisJCQlnb3RvIHJldHJ5OworCX0KKwogCS8qIEZvdW5kIHR1cGxlLCB0cnkgdG8gbG9jayBpdCBp biB0aGUgbG9ja21vZGUuICovCiAJaWYgKGZvdW5kKQogCXsKQEAgLTM5MSw3ICs0MTMsNyBAQCBS ZWxhdGlvbkZpbmRSZXBsVHVwbGVTZXEoUmVsYXRpb24gcmVsLCBMb2NrVHVwbGVNb2RlIGxvY2tt b2RlLAogCWVxID0gcGFsbG9jMChzaXplb2YoKmVxKSAqIG91dHNsb3QtPnR0c190dXBsZURlc2Ny aXB0b3ItPm5hdHRzKTsKIAogCS8qIFN0YXJ0IGEgaGVhcCBzY2FuLiAqLwotCUluaXREaXJ0eVNu YXBzaG90KHNuYXApOworCUluaXREaXJ0eVNuYXBzaG90KHNuYXAsIE5VTEwpOwogCXNjYW4gPSB0 YWJsZV9iZWdpbnNjYW4ocmVsLCAmc25hcCwgMCwgTlVMTCk7CiAJc2NhbnNsb3QgPSB0YWJsZV9z bG90X2NyZWF0ZShyZWwsIE5VTEwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL29yaWdpbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9v cmlnaW4uYwppbmRleCA0MTllNDgxNGYwLi4wNGJhMGQ5YmExIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKQEAgLTI3OCw3ICsyNzgsNyBAQCByZXBsb3JpZ2luX2Ny ZWF0ZShjb25zdCBjaGFyICpyb25hbWUpCiAJICogdG8gdGhlIGV4Y2x1c2l2ZSBsb2NrIHRoZXJl J3Mgbm8gZGFuZ2VyIHRoYXQgbmV3IHJvd3MgY2FuIGFwcGVhciB3aGlsZQogCSAqIHdlJ3JlIGNo ZWNraW5nLgogCSAqLwotCUluaXREaXJ0eVNuYXBzaG90KFNuYXBzaG90RGlydHkpOworCUluaXRE aXJ0eVNuYXBzaG90KFNuYXBzaG90RGlydHksIE5VTEwpOwogCiAJcmVsID0gdGFibGVfb3BlbihS ZXBsaWNhdGlvbk9yaWdpblJlbGF0aW9uSWQsIEV4Y2x1c2l2ZUxvY2spOwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5z YW0uaAppbmRleCAyOGEyZDI4N2ZkLi5hYWUwYWQ5MGMyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvdHJhbnNhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKQEAg LTI4OCw2ICsyODgsNyBAQCBleHRlcm4gdm9pZCBWYXJzdXBTaG1lbUluaXQodm9pZCk7CiBleHRl cm4gRnVsbFRyYW5zYWN0aW9uSWQgR2V0TmV3VHJhbnNhY3Rpb25JZChib29sIGlzU3ViWGFjdCk7 CiBleHRlcm4gdm9pZCBBZHZhbmNlTmV4dEZ1bGxUcmFuc2FjdGlvbklkUGFzdFhpZChUcmFuc2Fj dGlvbklkIHhpZCk7CiBleHRlcm4gRnVsbFRyYW5zYWN0aW9uSWQgUmVhZE5leHRGdWxsVHJhbnNh Y3Rpb25JZCh2b2lkKTsKK2V4dGVybiBGdWxsVHJhbnNhY3Rpb25JZCBSZWFkTGFzdENvbXBsZXRl ZEZ1bGxUcmFuc2FjdGlvbklkKHZvaWQpOwogZXh0ZXJuIHZvaWQgU2V0VHJhbnNhY3Rpb25JZExp bWl0KFRyYW5zYWN0aW9uSWQgb2xkZXN0X2RhdGZyb3plbnhpZCwKIAkJCQkJCQkJICBPaWQgb2xk ZXN0X2RhdG9pZCk7CiBleHRlcm4gdm9pZCBBZHZhbmNlT2xkZXN0Q2xvZ1hpZChUcmFuc2FjdGlv bklkIG9sZGVzdF9kYXRmcm96ZW54aWQpOwpAQCAtMzQ0LDYgKzM0NSwyMSBAQCBUcmFuc2FjdGlv bklkT2xkZXIoVHJhbnNhY3Rpb25JZCBhLCBUcmFuc2FjdGlvbklkIGIpCiAJcmV0dXJuIGI7CiB9 CiAKKy8qIHJldHVybiB0aGUgbmV3ZXIgb2YgdGhlIHR3byBJRHMgKi8KK3N0YXRpYyBpbmxpbmUg VHJhbnNhY3Rpb25JZAorVHJhbnNhY3Rpb25JZE5ld2VyKFRyYW5zYWN0aW9uSWQgYSwgVHJhbnNh Y3Rpb25JZCBiKQoreworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoYSkpCisJCXJldHVybiBi OworCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChiKSkKKwkJcmV0dXJuIGE7CisKKwlpZiAo VHJhbnNhY3Rpb25JZFByZWNlZGVzKGEsIGIpKQorCQlyZXR1cm4gYjsKKwlyZXR1cm4gYTsKK30K KwogLyogcmV0dXJuIHRoZSBvbGRlciBvZiB0aGUgdHdvIElEcywgYXNzdW1pbmcgdGhleSdyZSBi b3RoIG5vcm1hbCAqLwogc3RhdGljIGlubGluZSBUcmFuc2FjdGlvbklkCiBOb3JtYWxUcmFuc2Fj dGlvbklkT2xkZXIoVHJhbnNhY3Rpb25JZCBhLCBUcmFuc2FjdGlvbklkIGIpCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmggYi9zcmMvaW5jbHVkZS91dGlscy9zbmFwbWdy LmgKaW5kZXggOTM5OGE4NDA1MS4uNWU2ZjNhN2U3NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv dXRpbHMvc25hcG1nci5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3NuYXBtZ3IuaApAQCAtMzYs OSArMzYsMTMgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIFNuYXBzaG90RGF0YSBDYXRhbG9nU25hcHNo b3REYXRhOwogICogV2UgZG9uJ3QgcHJvdmlkZSBhIHN0YXRpYyBTbmFwc2hvdERpcnR5IHZhcmlh YmxlIGJlY2F1c2UgaXQgd291bGQgYmUKICAqIG5vbi1yZWVudHJhbnQuICBJbnN0ZWFkLCB1c2Vy cyBvZiB0aGF0IHNuYXBzaG90IHR5cGUgc2hvdWxkIGRlY2xhcmUgYQogICogbG9jYWwgdmFyaWFi bGUgb2YgdHlwZSBTbmFwc2hvdERhdGEsIGFuZCBpbml0aWFsaXplIGl0IHdpdGggdGhpcyBtYWNy by4KKyAqIHB4aWQgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSBOVUxMLiBJZiBpdCBpcyBub3QgTlVM TCwgcHhpZFswXSB3aWxsIGJlIHNldAorICogdG8gdGhlIHRyYW5zYWN0aW9uIElEIG9mIGRlbGV0 aW5nIHRyYW5zYWN0aW9uIGlmIHRoZSB0dXBsZSBpcyBkZWxldGVkCisgKiBhbmQgaXQgbmV3ZXIg dGhhbiBweGlkWzBdLgogICovCi0jZGVmaW5lIEluaXREaXJ0eVNuYXBzaG90KHNuYXBzaG90ZGF0 YSkgIFwKLQkoKHNuYXBzaG90ZGF0YSkuc25hcHNob3RfdHlwZSA9IFNOQVBTSE9UX0RJUlRZKQor I2RlZmluZSBJbml0RGlydHlTbmFwc2hvdChzbmFwc2hvdGRhdGEsIHB4aWQpICBcCisJKChzbmFw c2hvdGRhdGEpLnNuYXBzaG90X3R5cGUgPSBTTkFQU0hPVF9ESVJUWSwgXAorCSAoc25hcHNob3Rk YXRhKS54aXAgPSAocHhpZCkpCiAKIC8qCiAgKiBTaW1pbGFybHksIHNvbWUgaW5pdGlhbGl6YXRp b24gaXMgcmVxdWlyZWQgZm9yIGEgTm9uVmFjdXVtYWJsZSBzbmFwc2hvdC4KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3V0aWxzL3NuYXBzaG90LmggYi9zcmMvaW5jbHVkZS91dGlscy9zbmFwc2hv dC5oCmluZGV4IDhkMWUzMWU4ODguLmE2ODExNGU1MDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3V0aWxzL3NuYXBzaG90LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc25hcHNob3QuaApAQCAt OTYsNyArOTYsMTAgQEAgdHlwZWRlZiBlbnVtIFNuYXBzaG90VHlwZQogCSAqIHhtYXguICBJZiB0 aGUgdHVwbGUgd2FzIGluc2VydGVkIHNwZWN1bGF0aXZlbHksIG1lYW5pbmcgdGhhdCB0aGUKIAkg KiBpbnNlcnRlciBtaWdodCBzdGlsbCBiYWNrIGRvd24gb24gdGhlIGluc2VydGlvbiB3aXRob3V0 IGFib3J0aW5nIHRoZQogCSAqIHdob2xlIHRyYW5zYWN0aW9uLCB0aGUgYXNzb2NpYXRlZCB0b2tl biBpcyBhbHNvIHJldHVybmVkIGluCi0JICogc25hcHNob3QtPnNwZWN1bGF0aXZlVG9rZW4uICBT ZWUgYWxzbyBJbml0RGlydHlTbmFwc2hvdCgpLgorCSAqIHNuYXBzaG90LT5zcGVjdWxhdGl2ZVRv a2VuLiBJZiB4aXAgaXMgbm9uLU5VTEwsIHRoZSB4aWQgb2YgdGhlCisJICogZGVsZXRpbmcgdHJh bnNhY3Rpb24gaXMgc3RvcmVkIGludG8geGlwWzBdIGlmIGl0IG5ld2VyIHRoYW4gZXhpc3RpbmcK KwkgKiB4aXBbMF0gdmFsdWUuCisJICogU2VlIGFsc28gSW5pdERpcnR5U25hcHNob3QoKS4KIAkg KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAJICovCiAJU05BUFNIT1RfRElSVFksCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAwNl9kaXJ0eV9pbmRleF9zY2FuLnBsIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMDZfZGlydHlfaW5kZXhfc2Nhbi5wbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40ZDExNmU2NTllCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMDZfZGlydHlfaW5kZXhfc2Nhbi5w bApAQCAtMCwwICsxLDQ3IEBACisKKyMgQ29weXJpZ2h0IChjKSAyMDI0LCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRlc3QgaXNzdWUgd2l0aCBsb3N0IHR1cGxlIGlu IGNhc2Ugb2YgRGlydHlTbmFwc2hvdCBpbmRleCBzY2FucwordXNlIHN0cmljdDsKK3VzZSB3YXJu aW5nczsKKwordXNlIENvbmZpZzsKK3VzZSBFcnJubzsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsK KworaWYgKCRFTlZ7ZW5hYmxlX2luamVjdGlvbl9wb2ludHN9IG5lICd5ZXMnKQoreworCXBsYW4g c2tpcF9hbGwgPT4gJ0luamVjdGlvbiBwb2ludHMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1aWxk JzsKK30KKworbXkgKCRub2RlLCAkcmVzdWx0KTsKKyRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3Rlci0+bmV3KCdEaXJ0eVNjYW5fdGVzdCcpOworJG5vZGUtPmluaXQ7Ciskbm9kZS0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdmc3luYyA9IG9mZicpOworJG5vZGUtPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnYXV0b3ZhY3V1bSA9IG9mZicpOworJG5vZGUtPnN0 YXJ0OworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBFWFRFTlNJT04gaW5q ZWN0aW9uX3BvaW50cykpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBU QUJMRSB0YmwoaSBpbnQgcHJpbWFyeSBrZXksIG4gaW50KSkpOworCiskbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHEoSU5TRVJUIElOVE8gdGJsIFZBTFVFUyg0MiwxKSkpOworJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCBxKFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnY2hl Y2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X25vX2NvbmZsaWN0JywgJ2Vycm9yJykp KTsKKworJG5vZGUtPnBnYmVuY2goCisJJy0tbm8tdmFjdXVtIC0tY2xpZW50PTQwIC0tdHJhbnNh Y3Rpb25zPTEwMDAnLAorCTAsCisJW3Fye2FjdHVhbGx5IHByb2Nlc3NlZH1dLAorCVtxcnteJH1d LAorCSdjb25jdXJyZW50IFVQU0VSVCcsCisJeworCQknb25fY29uZmxpY3RzJyA9PiBxKAorCQkJ SU5TRVJUIElOVE8gdGJsIFZBTFVFUyg0MiwxKSBvbiBjb25mbGljdChpKSBkbyB1cGRhdGUgc2V0 IG4gPSBFWENMVURFRC5uICsgMTsKKwkJKQorCX0pOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHEoU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdjaGVja19leGNsdXNpb25f b3JfdW5pcXVlX2NvbnN0cmFpbnRfbm9fY29uZmxpY3QnKSkpOworCiskbm9kZS0+c3RvcDsKK2Rv bmVfdGVzdGluZygpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0gCjIuMzQuMQoK --000000000000936095061f7a8e1b--