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 1uyRQb-00836N-3p for pgsql-hackers@arkaria.postgresql.org; Tue, 16 Sep 2025 08:52:45 +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 1uyRQX-00GS4a-Ib for pgsql-hackers@arkaria.postgresql.org; Tue, 16 Sep 2025 08:52:42 +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 1uyRQX-00GS4R-0D for pgsql-hackers@lists.postgresql.org; Tue, 16 Sep 2025 08:52:42 +0000 Received: from mail-vk1-xa2e.google.com ([2607:f8b0:4864:20::a2e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uyRQV-000h9c-2Z for pgsql-hackers@lists.postgresql.org; Tue, 16 Sep 2025 08:52:40 +0000 Received: by mail-vk1-xa2e.google.com with SMTP id 71dfb90a1353d-5449432a9d7so3585988e0c.3 for ; Tue, 16 Sep 2025 01:52:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1758012758; x=1758617558; 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=sUOsuDDg/L+14J4IOcbWFqfpD9ZfefyNBMcj0DaHKB8=; b=ZgYA1QzBTa5EvancsKaZIJ3S7rzfUK4XLdPGU/tcZ4jJl9U0TO9apviDSwrd0VRI3U U3L5X5AbOC6qLU0rvPra8w9KKjgGuCkGDENSMmL0kMbnvGVeJPQQBxqRg/Dqiv4wWR93 oWKMgD7qVPOWOXTp0ttioJgEwCSvmkSA66l7qblgEIlj9OY08PVVvQ/7Mjw7Y/FVTZSN J/xyDNOTRdbgoKIdmECk0ZDQaSuDto0KyQh9V3EeUCPFKFsV+8dw/88o2DflU1iCvXlT qpgUpLoCwb4YLwYx9V8GktTKIcdoEyOEDubeE4wOPfrgDVYsUVXBYprJ0bU+zC5z9ERP xzvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758012758; x=1758617558; 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=sUOsuDDg/L+14J4IOcbWFqfpD9ZfefyNBMcj0DaHKB8=; b=p2ZH+889/jd/uAfuMfVFT75kuCJdKfjhIlHCXp+5oFp969J0rYxGAJkuAJN1Lel+q5 os9Zl16+z9SDHmSzZBzSmoFetZha07GtXlUzqVglFimCWJUdlqZfxW707EHwrHkxfaUc AWFEa6V8gS4V1JQcAM63CO8oiwT9Kody4PaGLFk8jcF6bziuDEEJLoyEFCRjYBHDAYvs /vPRJt+Iqd6ap65tq61kT45ufCqUyBNzWnuUwshrmhcskzQEXONmxq78hFR+vxEF8hyq GTf6Ebu4QlY4rstXXS8TYGWduHUo1+A0mnIY+IeNrSm+YyUFcmFTd3kZ8kDabw3D9DKo YGFA== X-Forwarded-Encrypted: i=1; AJvYcCUzgQQoUp8YVBhetLxuLDARVdbSMxGBCX98ZZdO+9E/GY+DHepMgCWmQcXefSA56jEGnxaKASekZzfXp5xz@lists.postgresql.org X-Gm-Message-State: AOJu0YxI2HTHFKrkaj4C2sc4thXgEoBp4+s4Ex3eB5SavsY+lDqGgybP V1Lu37+Yb6pyYdIuUtAVLI2NKIWDufquck73D/g4vU4DF+OkINxQqpZNMf/mLt/8aEwy56QqSN3 PeIkc7rIlE7RU4AevlfQ+rKgb5uaAWdE= X-Gm-Gg: ASbGnctoDeKeeXP8kbZqdV9dRUfnQNZ57nLsnETdg2BeGgvAapDn4LIf/zW/e6robif DENqZsSxzKzEw5U0DXXUUfjHywFMeZuxyv8C+D3tQd5D47onR8bGa/Q/h/vnKM51vbWLHvsCabG IVqd4HlD5IqbwoEH5v0daoTESIWaYOoMjbltflUQ/EGlttffweOsh8i1Op0sK8+pwmVkpav+W3g WxAku5VibINF4/SHWG+zqR7HilsaKiipAbs3eQ= X-Google-Smtp-Source: AGHT+IGv7z3pefyaC+BFcMbXGi9Kb4ia5zKuSow6C4r4K8lImM05d1RmLHJMPGTQsHYtzXUCAqNB0CmS+hDMfW17cxA= X-Received: by 2002:a05:6102:598d:b0:528:92b8:6c47 with SMTP id ada2fe7eead31-5560a3ffa8cmr4639089137.14.1758012758420; Tue, 16 Sep 2025 01:52:38 -0700 (PDT) MIME-Version: 1.0 References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <195b67ee-ef41-4451-9396-844442eef1a4@postgrespro.ru> <2643645f-2a02-43de-9321-c995ab1b7ef8@postgrespro.ru> In-Reply-To: <2643645f-2a02-43de-9321-c995ab1b7ef8@postgrespro.ru> From: jian he Date: Tue, 16 Sep 2025 16:52:02 +0800 X-Gm-Features: AS18NWDsfJTQeCuYgngKJ4K4EWkIMTcBLg0FVwULByNtc5zq_HSeOQIk0wVBkms Message-ID: Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Dmitry Koval Cc: Alexander Korotkov , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000fa3394063ee73d82" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000fa3394063ee73d82 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Sep 16, 2025 at 6:11=E2=80=AFAM Dmitry Koval wrote: > > 7) Additionally, I've made a numerous and small fixes for grammar to the > docs directly to the patchset. > v56-0002, SPLIT PARTITION check_partitions_for_split is way too overwhelmin= g. Similar to transformPartitionCmdForMerge, we can put some error handling co= de to transformPartitionCmdForSplit. please check the attached refactoring. in v56-0001 + Oid newPartitionOid =3D InvalidOid; + + foreach_oid(mergingPartitionOid, mergingPartitions) + { + if (mergingPartitionOid =3D=3D existingRelid) + { + newPartitionOid =3D mergingPartitionOid; + break; + } + } can simplified to if (list_member_oid(mergingPartitions, existingRelid)) newPartitionOid =3D existingRelid; --000000000000fa3394063ee73d82 Content-Type: application/octet-stream; name="v56-0001-refactor-v56-check_partitions_for_split.no-cfbot" Content-Disposition: attachment; filename="v56-0001-refactor-v56-check_partitions_for_split.no-cfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfmb1uyh0 RnJvbSAyYzljZjE3OGUzNmJlZmJhZDMwY2U5MDMwYjg5OWJiMjdmNzlhZDRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTYgU2VwIDIwMjUgMTY6NDI6MTcgKzA4MDAKU3ViamVjdDogW1BBVENIIHY1 NiAxLzFdIHJlZmFjdG9yIHY1NiBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdAoKbW92ZSBzb21l IG9mIGVycm9yIGhhbmRsaW5nIGluIGNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0IHRvCnRyYW5z Zm9ybVBhcnRpdGlvbkNtZEZvclNwbGl0LgotLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91 dGlsY21kLmMgICAgICAgICAgICB8IDExMiArKysrKysrKysrKystCiBzcmMvYmFja2VuZC9wYXJ0 aXRpb25pbmcvcGFydGJvdW5kcy5jICAgICAgICAgfCAxNTcgKysrKystLS0tLS0tLS0tLS0tCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgfCAgMTUgKy0KIDMg ZmlsZXMgY2hhbmdlZCwgMTYxIGluc2VydGlvbnMoKyksIDEyMyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCBlMmVmZTBiZjBjOS4uMWI3YTI3MGNhNTEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMzU2NSwxMCArMzU2NSwyNCBAQCBzdGF0 aWMgdm9pZAogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQoQ3JlYXRlU3RtdENvbnRleHQg KmN4dCwgUGFydGl0aW9uQ21kICpwYXJ0Y21kKQogewogCVJlbGF0aW9uCXBhcmVudCA9IGN4dC0+ cmVsOworCVBhcnRpdGlvbktleSBrZXk7CisJY2hhcgkJc3RyYXRlZ3k7CiAJT2lkCQkJc3BsaXRQ YXJ0T2lkOworCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOworCWludAkJCWkgPSAwOworCWludAkJCWRl ZmF1bHRfaW5kZXggPSAtMTsKKwlib29sCQlpc1NwbGl0UGFydERlZmF1bHQ7CisJTGlzdENlbGwg ICAqbGlzdHB0ciwKKwkJCSAgICpsaXN0cHRyMjsKKwlMaXN0CQkqc3BsaXRsaXN0OworCisJc3Bs aXRsaXN0ID0gcGFydGNtZC0+cGFydGxpc3Q7CisJa2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25L ZXkocGFyZW50KTsKKwlzdHJhdGVneSA9IGdldF9wYXJ0aXRpb25fc3RyYXRlZ3koa2V5KTsKKwlk ZWZhdWx0UGFydE9pZCA9IGdldF9kZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0 UGFydGl0aW9uRGVzYyhwYXJlbnQsIHRydWUpKTsKIAogCS8qIFRyYW5zZm9ybSBwYXJ0aXRpb24g Ym91bmRzIGZvciBhbGwgcGFydGl0aW9ucyBpbiB0aGUgbGlzdDogKi8KLQlmb3JlYWNoX25vZGUo U2luZ2xlUGFydGl0aW9uU3BlYywgc3BzLCBwYXJ0Y21kLT5wYXJ0bGlzdCkKKwlmb3JlYWNoX25v ZGUoU2luZ2xlUGFydGl0aW9uU3BlYywgc3BzLCBzcGxpdGxpc3QpCiAJewogCQljeHQtPnBhcnRi b3VuZCA9IE5VTEw7CiAJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZChjeHQsIHNwcy0+Ym91bmQpOwpA QCAtMzU4Nyw4ICszNjAxLDEwMiBAQCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JTcGxpdChDcmVh dGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBhcnRjbWQpCiAKIAljaGVja1BhcnRp dGlvbihwYXJlbnQsIHNwbGl0UGFydE9pZCwgZmFsc2UpOwogCisJc3dpdGNoIChzdHJhdGVneSkK Kwl7CisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZX0xJU1Q6CisJCWNhc2UgUEFSVElUSU9OX1NU UkFURUdZX1JBTkdFOgorCQkJeworCQkJCWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRpb25TcGVj LCBzcHMsIHNwbGl0bGlzdCkKKwkJCQl7CisJCQkJCWlmIChzcHMtPmJvdW5kLT5pc19kZWZhdWx0 KQorCQkJCQl7CisJCQkJCQlkZWZhdWx0X2luZGV4ID0gZm9yZWFjaF9jdXJyZW50X2luZGV4KHNw cyk7CisJCQkJCQlpKys7CisJCQkJCX0KKworCQkJCQlpZiAoaSA+IDEpCisJCQkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElP TiksCisJCQkJCQkJCWVycm1zZygiREVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9uZSIpLAor CQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIHNwcy0+bmFtZS0+bG9jYXRp b24pKTsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFBBUlRJVElPTl9TVFJBVEVH WV9IQVNIOgorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCisJCQkJCWVycm1zZygicGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9u ZWQgdGFibGUgY2Fubm90IGJlIHNwbGl0IikpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJ CWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIHBhcnRpdGlvbiBzdHJhdGVneTogJWQiLAorCQkJCSAo aW50KSBrZXktPnN0cmF0ZWd5KTsKKwkJCWJyZWFrOworCX0KKworCS8qIGlzU3BsaXRQYXJ0RGVm YXVsdDogaXMgdGhlIGJlaW5nIHNwbGl0IHBhcnRpdGlvbiBhIERFRkFVTFQgcGFydGl0aW9uPyAq LworCWlzU3BsaXRQYXJ0RGVmYXVsdCA9IChkZWZhdWx0UGFydE9pZCA9PSBzcGxpdFBhcnRPaWQp OworCisJaWYgKGlzU3BsaXRQYXJ0RGVmYXVsdCAmJiBkZWZhdWx0X2luZGV4ID09IC0xKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklU SU9OKSwKKwkJCQllcnJtc2coImNhbiBub3Qgc3BsaXQgREVGQVVMVCBwYXJ0aXRpb24gXCIlc1wi IiwKKwkJCQkJICAgZ2V0X3JlbF9uYW1lKHNwbGl0UGFydE9pZCkpLAorCQkJCWVycmhpbnQoIlRv IHNwbGl0IERFRkFVTFQgcGFydGl0aW9uIG9uZSBvZiB0aGUgbmV3IHBhcnRpdGlvbiBtc3V0IGJl IERFRkFVTFQiKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsICgoU2luZ2xl UGFydGl0aW9uU3BlYyAqKSBsaW5pdGlhbChzcGxpdGxpc3QpKS0+bmFtZS0+bG9jYXRpb24pKTsK KworCS8qCisJICogSWYgdGhlIHBhcnRpdGlvbiBiZWluZyBzcGxpdCBpcyBub3QgREVGQVVMVCBh bmQgREVGQVVMVCBwYXJ0aXRpb24gZXhpc3RzLAorCSAqIHRoZW4gdGhlIHJlc3VsdGluZyBzcGxp dCBwYXJ0aXRpb25zIGNhbm5vdCBiZSBERUZBVUxULgorCSovCisJaWYgKCFpc1NwbGl0UGFydERl ZmF1bHQgJiYgKGRlZmF1bHRfaW5kZXggIT0gLTEpICYmIE9pZElzVmFsaWQoZGVmYXVsdFBhcnRP aWQpKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzRGVmID0KKwkJCShTaW5nbGVQYXJ0 aXRpb25TcGVjICopIGxpc3RfbnRoKHNwbGl0bGlzdCwgZGVmYXVsdF9pbmRleCk7CisKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElP TiksCisJCQkJZXJybXNnKCJjYW4gbm90IHNwbGl0IG5vbi1ERUZBVUxUIHBhcnRpdGlvbiBcIiVz XCIiLAorCQkJCQkgICBnZXRfcmVsX25hbWUoc3BsaXRQYXJ0T2lkKSksCisJCQkJZXJybXNnKCJO ZXcgcGFydGl0aW9uIGNhbm5vdCBiZSBERUZBVUxUIGJlY2F1c2UgREVGQVVMVCBwYXJ0aXRpb24g XCIlc1wiIGFscmVhZHkgZXhpc3RzIiwKKwkJCQkJICAgZ2V0X3JlbF9uYW1lKGRlZmF1bHRQYXJ0 T2lkKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBzcHNEZWYtPm5hbWUt PmxvY2F0aW9uKSk7CisJfQorCisJZm9yZWFjaChsaXN0cHRyLCBzcGxpdGxpc3QpCisJeworCQlP aWQJCQluc3BpZDsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAgICpzcHMgPSAoU2luZ2xlUGFydGl0 aW9uU3BlYyAqKSBsZmlyc3QobGlzdHB0cik7CisJCVJhbmdlVmFyICAgKm5hbWUgPSBzcHMtPm5h bWU7CisKKwkJbnNwaWQgPSBSYW5nZVZhckdldENyZWF0aW9uTmFtZXNwYWNlKHNwcy0+bmFtZSk7 CisKKwkJLyogUGFydGl0aW9ucyBpbiB0aGUgbGlzdCBzaG91bGQgaGF2ZSBkaWZmZXJlbnQgbmFt ZXMuICovCisJCWZvcl9lYWNoX2NlbGwobGlzdHB0cjIsIHNwbGl0bGlzdCwgbG5leHQoc3BsaXRs aXN0LCBsaXN0cHRyKSkKKwkJeworCQkJT2lkCQluc3BpZDI7CisJCQlTaW5nbGVQYXJ0aXRpb25T cGVjICAgKnNwczIgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsZmlyc3QobGlzdHB0cjIpOwor CQkJUmFuZ2VWYXIgICAqbmFtZTIgPSBzcHMyLT5uYW1lOworCisJCQlpZiAoZXF1YWwobmFtZSwg bmFtZTIpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElD QVRFX1RBQkxFKSwKKwkJCQkJCWVycm1zZygicGFydGl0aW9uIHdpdGggbmFtZSBcIiVzXCIgaXMg YWxyZWFkeSB1c2VkIiwgbmFtZS0+cmVsbmFtZSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24o Y3h0LT5wc3RhdGUsIG5hbWUyLT5sb2NhdGlvbikpOworCisJCQluc3BpZDIgPSBSYW5nZVZhckdl dENyZWF0aW9uTmFtZXNwYWNlKHNwczItPm5hbWUpOworCisJCQlpZiAobnNwaWQyID09IG5zcGlk ICYmIHN0cmNtcChuYW1lLT5yZWxuYW1lLCBuYW1lMi0+cmVsbmFtZSkgPT0gMCkKKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJMRSksCisJCQkJ CQllcnJtc2coInBhcnRpdGlvbiB3aXRoIG5hbWUgXCIlc1wiIGlzIGFscmVhZHkgdXNlZCIsIG5h bWUtPnJlbG5hbWUpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBuYW1l Mi0+bG9jYXRpb24pKTsKKwkJfQorCX0KKwogCS8qIFRoZW4gd2Ugc2hvdWxkIGNoZWNrIHBhcnRp dGlvbnMgd2l0aCB0cmFuc2Zvcm1lZCBib3VuZHMuICovCi0JY2hlY2tfcGFydGl0aW9uc19mb3Jf c3BsaXQocGFyZW50LCBzcGxpdFBhcnRPaWQsIHBhcnRjbWQtPnBhcnRsaXN0LCBjeHQtPnBzdGF0 ZSk7CisJY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQocGFyZW50LCBzcGxpdFBhcnRPaWQsIHNw bGl0bGlzdCwgY3h0LT5wc3RhdGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJv dW5kcy5jCmluZGV4IDBhMDRkNjI4YjZhLi4xNjhkOTJiZGY4YyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRp b25pbmcvcGFydGJvdW5kcy5jCkBAIC01NDQ2LDcgKzU0NDYsNyBAQCBjaGVja19wYXJ0aXRpb25f Ym91bmRzX2Zvcl9zcGxpdF9saXN0KFJlbGF0aW9uIHBhcmVudCwgY2hhciAqcmVsbmFtZSwKIAkg Ki8KIAlmb3JlYWNoX25vZGUoQ29uc3QsIHZhbCwgc3BlYy0+bGlzdGRhdHVtcykKIAl7Ci0JCW92 ZXJsYXBfbG9jYXRpb24gPSB2YWwtPmxvY2F0aW9uOworCQlvdmVybGFwX2xvY2F0aW9uID0gZXhw ckxvY2F0aW9uKChOb2RlICopIHZhbCk7CiAJCWlmICghdmFsLT5jb25zdGlzbnVsbCkKIAkJewog CQkJaW50CQkJb2Zmc2V0OwpAQCAtNTQ2OSw4ICs1NDY5LDkgQEAgY2hlY2tfcGFydGl0aW9uX2Jv dW5kc19mb3Jfc3BsaXRfbGlzdChSZWxhdGlvbiBwYXJlbnQsIGNoYXIgKnJlbG5hbWUsCiAJCQll bHNlCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKLQkJCQkJCWVycm1zZygibmV3IHBhcnRpdGlvbiBcIiVzXCIgY2Fu bm90IGhhdmUgdGhpcyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZl IiwKLQkJCQkJCQkgICByZWxuYW1lKSwKKwkJCQkJCWVycm1zZygibmV3IHBhcnRpdGlvbiBcIiVz XCIgY2Fubm90IGhhdmUgdGhpcyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBcIiVzXCIg ZG9lcyBub3QgaGF2ZSIsCisJCQkJCQkJICAgcmVsbmFtZSwKKwkJCQkJCQkgICBnZXRfcmVsX25h bWUoc3BsaXRQYXJ0T2lkKSksCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVy bGFwX2xvY2F0aW9uKSk7CiAJCX0KIAkJZWxzZSBpZiAocGFydGl0aW9uX2JvdW5kX2FjY2VwdHNf bnVsbHMoYm91bmRpbmZvKSkKQEAgLTU0ODUsOCArNTQ4Niw5IEBAIGNoZWNrX3BhcnRpdGlvbl9i b3VuZHNfZm9yX3NwbGl0X2xpc3QoUmVsYXRpb24gcGFyZW50LCBjaGFyICpyZWxuYW1lLAogCQll bHNlCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpF Q1RfREVGSU5JVElPTiksCi0JCQkJCWVycm1zZygibmV3IHBhcnRpdGlvbiBcIiVzXCIgY2Fubm90 IGhhdmUgTlVMTCB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlIiwK LQkJCQkJCSAgIHJlbG5hbWUpLAorCQkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb24gXCIlc1wiIGNh bm5vdCBoYXZlIE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gXCIlc1wiIGRvZXMg bm90IGhhdmUiLAorCQkJCQkJICAgcmVsbmFtZSwKKwkJCQkJCSAgIGdldF9yZWxfbmFtZShzcGxp dFBhcnRPaWQpKSwKIAkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2Nh dGlvbikpOwogCX0KIApAQCAtNTYzOSwxOSArNTY0MSwxMiBAQCBjaGVja19wYXJlbnRfdmFsdWVz X2luX25ld19wYXJ0aXRpb25zKFJlbGF0aW9uIHBhcmVudCwKICAqIGNoZWNrX3BhcnRpdGlvbnNf Zm9yX3NwbGl0CiAgKgogICogQ2hlY2tzIG5ldyBwYXJ0aXRpb25zIGZvciBTUExJVCBQQVJUSVRJ T05TIGNvbW1hbmQ6Ci0gKiAxLiBERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgYXQgbW9zdCBv bmUuCi0gKiAyLiBOZXcgcGFydGl0aW9ucyBzaG91bGQgaGF2ZSBkaWZmZXJlbnQgbmFtZXMKLSAq ICAgICh3aXRoIGV4aXN0aW5nIHBhcnRpdGlvbnMgdG9vKS4KLSAqIDMuIEJvdW5kcyBvZiBuZXcg cGFydGl0aW9ucyBzaG91bGQgbm90IG92ZXJsYXAgd2l0aCBuZXcgYW5kIGV4aXN0aW5nCisgKiAx LiBCb3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwIHdpdGggbmV3IGFu ZCBleGlzdGluZwogICogICAgcGFydGl0aW9ucy4KLSAqIDQuIEluIGNhc2Ugc3BsaXQgcGFydGl0 aW9uIGlzIERFRkFVTFQgcGFydGl0aW9uLCBvbmUgb2YgbmV3IHBhcnRpdGlvbnMKLSAqICAgIHNo b3VsZCBiZSBERUZBVUxULgotICogNS4gSW4gY2FzZSBuZXcgcGFydGl0aW9ucyBvciBleGlzdGlu ZyBwYXJ0aXRpb25zIGNvbnRhaW5zIERFRkFVTFQKKyAqIDIuIEluIGNhc2UgbmV3IHBhcnRpdGlv bnMgb3IgZXhpc3RpbmcgcGFydGl0aW9ucyBjb250YWlucyBERUZBVUxUCiAgKiAgICBwYXJ0aXRp b24sIG5ldyBwYXJ0aXRpb25zIGNhbiBoYXZlIGFueSBib3VuZHMgaW5zaWRlIHNwbGl0CiAgKiAg ICBwYXJ0aXRpb24gYm91bmQgKGNhbiBiZSBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25zIGJvdW5k cykuCi0gKiA2LiBJbiBjYXNlIHBhcnRpdGlvbmVkIHRhYmxlIGRvZXMgbm90IGhhdmUgREVGQVVM VCBwYXJ0aXRpb24sIERFRkFVTFQKLSAqICAgIHBhcnRpdGlvbiBjYW4gYmUgZGVmaW5lZCBhcyBv bmUgb2YgbmV3IHBhcnRpdGlvbi4KLSAqIDcuIEluIGNhc2UgbmV3IHBhcnRpdGlvbnMgbm90IGNv bnRhaW5zIERFRkFVTFQgcGFydGl0aW9uIGFuZAorICogMy4gSW4gY2FzZSBuZXcgcGFydGl0aW9u cyBub3QgY29udGFpbnMgREVGQVVMVCBwYXJ0aXRpb24gYW5kCiAgKiAgICBwYXJ0aXRpb25lZCB0 YWJsZSBkb2VzIG5vdCBoYXZlIERFRkFVTFQgcGFydGl0aW9uIHRoZSBmb2xsb3dpbmcKICAqICAg IHNob3VsZCBiZSB0cnVlOiBzdW0gYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSBl cXVhbAogICogICAgdG8gYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uLgpAQCAtNTY3MSw1OSArNTY2 Niw0OSBAQCBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdChSZWxhdGlvbiBwYXJlbnQsCiAJY2hh cgkJc3RyYXRlZ3k7CiAJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CiAJYm9vbAkJaXNTcGxpdFBhcnRE ZWZhdWx0OwotCWJvb2wJCWNyZWF0ZURlZmF1bHRQYXJ0OworCWJvb2wJCWNyZWF0ZURlZmF1bHRQ YXJ0ID0gZmFsc2U7CiAJaW50CQkJZGVmYXVsdF9pbmRleCA9IC0xOwotCWludAkJCWksCi0JCQkJ ajsKKwlpbnQJCQlpOwogCVNpbmdsZVBhcnRpdGlvblNwZWMgKipuZXdfcGFydHM7CiAJU2luZ2xl UGFydGl0aW9uU3BlYyAqc3BzUHJldiA9IE5VTEw7CisKKwkvKgorCSAqIG5wYXJ0cyBjb3VudCBu dW1iZXIgb2Ygc3BsaXQgcGFydGl0aW9ucywgYnV0IGl0IGV4Y2x1ZGUgdGhlIGRlZmF1bHQKKwkg KiBwYXJ0aXRpb24KKwkgKi8KIAlpbnQJCQlucGFydHMgPSAwOwogCiAJa2V5ID0gUmVsYXRpb25H ZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKIAlzdHJhdGVneSA9IGdldF9wYXJ0aXRpb25fc3RyYXRl Z3koa2V5KTsKIAotCXN3aXRjaCAoc3RyYXRlZ3kpCi0JewotCQljYXNlIFBBUlRJVElPTl9TVFJB VEVHWV9MSVNUOgotCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRToKLQkJCXsKLQkJCQkv KgotCQkJCSAqIE1ha2UgYXJyYXkgbmV3X3BhcnRzIHdpdGggbmV3IHBhcnRpdGlvbnMgZXhjZXB0 IERFRkFVTFQKLQkJCQkgKiBwYXJ0aXRpb24uCi0JCQkJICovCi0JCQkJbmV3X3BhcnRzID0gKFNp bmdsZVBhcnRpdGlvblNwZWMgKiopCi0JCQkJCXBhbGxvYzAobGlzdF9sZW5ndGgocGFydGxpc3Qp ICogc2l6ZW9mKFNpbmdsZVBhcnRpdGlvblNwZWMgKikpOwotCQkJCWkgPSAwOwotCQkJCWZvcmVh Y2hfbm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjLCBzcHMsIHBhcnRsaXN0KQotCQkJCXsKLQkJCQkJ aWYgKHNwcy0+Ym91bmQtPmlzX2RlZmF1bHQpCi0JCQkJCXsKLQkJCQkJCWlmIChkZWZhdWx0X2lu ZGV4ID49IDApCi0JCQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQkJCWVycmNvZGUoRVJSQ09E RV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKLQkJCQkJCQkJCWVycm1zZygiREVGQVVMVCBw YXJ0aXRpb24gc2hvdWxkIGJlIG9uZSIpLAotCQkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBz dGF0ZSwgc3BzLT5uYW1lLT5sb2NhdGlvbikpOwotCQkJCQkJZGVmYXVsdF9pbmRleCA9IGk7Ci0J CQkJCX0KLQkJCQkJZWxzZQotCQkJCQl7Ci0JCQkJCQluZXdfcGFydHNbbnBhcnRzKytdID0gc3Bz OwotCQkJCQl9Ci0JCQkJCWkrKzsKLQkJCQl9Ci0JCQl9Ci0JCQlicmVhazsKKwlkZWZhdWx0UGFy dE9pZCA9CisJCWdldF9kZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0 aW9uRGVzYyhwYXJlbnQsIHRydWUpKTsKKworCUFzc2VydChzdHJhdGVneSA9PSBQQVJUSVRJT05f U1RSQVRFR1lfUkFOR0UgfHwKKwkJICAgc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJ U1QpOworCisJLyoKKwkgKiBNYWtlIGFycmF5IG5ld19wYXJ0cyB3aXRoIG5ldyBwYXJ0aXRpb25z IGV4Y2VwdCBERUZBVUxUIHBhcnRpdGlvbi4KKwkqLworCW5ld19wYXJ0cyA9IChTaW5nbGVQYXJ0 aXRpb25TcGVjICoqKQorCQlwYWxsb2MwKGxpc3RfbGVuZ3RoKHBhcnRsaXN0KSAqIHNpemVvZihT aW5nbGVQYXJ0aXRpb25TcGVjICopKTsKIAotCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9IQVNI OgotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCi0JCQkJCWVycm1zZygicGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFi bGUgY2Fubm90IGJlIHNwbGl0IikpOwotCQkJYnJlYWs7CisJLyogaXNTcGxpdFBhcnREZWZhdWx0 IGZsYWc6IGlzIHNwbGl0IHBhcnRpdGlvbiBhIERFRkFVTFQgcGFydGl0aW9uPyAqLworCWlzU3Bs aXRQYXJ0RGVmYXVsdCA9IChkZWZhdWx0UGFydE9pZCA9PSBzcGxpdFBhcnRPaWQpOwogCi0JCWRl ZmF1bHQ6Ci0JCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBwYXJ0aXRpb24gc3RyYXRlZ3k6ICVk IiwKLQkJCQkgKGludCkga2V5LT5zdHJhdGVneSk7Ci0JCQlicmVhazsKKwlmb3JlYWNoX25vZGUo U2luZ2xlUGFydGl0aW9uU3BlYywgc3BzLCBwYXJ0bGlzdCkKKwl7CisJCWlmIChzcHMtPmJvdW5k LT5pc19kZWZhdWx0KQorCQkJZGVmYXVsdF9pbmRleCA9IGZvcmVhY2hfY3VycmVudF9pbmRleChz cHMpOworCQllbHNlCisJCQluZXdfcGFydHNbbnBhcnRzKytdID0gc3BzOworCX0KKworCS8qIElu ZGljYXRvciB0aGF0IHRoZSBERUZBVUxUIHBhcnRpdGlvbiB3aWxsIGJlIGNyZWF0ZWQuICovCisJ aWYgKGRlZmF1bHRfaW5kZXggIT0gLTEpCisJeworCQljcmVhdGVEZWZhdWx0UGFydCA9IHRydWU7 CisJCUFzc2VydChucGFydHMgPT0gbGlzdF9sZW5ndGgocGFydGxpc3QpIC0gMSk7CiAJfQogCiAJ aWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSkKQEAgLTU3NjEsMzMgKzU3 NDYsNiBAQCBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdChSZWxhdGlvbiBwYXJlbnQsCiAJCXBm cmVlKGxvd2VyX2JvdW5kcyk7CiAJfQogCi0JZGVmYXVsdFBhcnRPaWQgPQotCQlnZXRfZGVmYXVs dF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocGFyZW50LCB0cnVl KSk7Ci0KLQkvKiBpc1NwbGl0UGFydERlZmF1bHQgZmxhZzogaXMgc3BsaXQgcGFydGl0aW9uIGEg REVGQVVMVCBwYXJ0aXRpb24/ICovCi0JaXNTcGxpdFBhcnREZWZhdWx0ID0gKGRlZmF1bHRQYXJ0 T2lkID09IHNwbGl0UGFydE9pZCk7Ci0KLQlpZiAoaXNTcGxpdFBhcnREZWZhdWx0ICYmIGRlZmF1 bHRfaW5kZXggPCAwKQotCXsKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQllcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCi0JCQkJZXJybXNnKCJvbmUgcGFydGl0aW9uIGlu IHRoZSBsaXN0IHNob3VsZCBiZSBERUZBVUxUIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERF RkFVTFQiKSwKLQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCAoKFNpbmdsZVBhcnRpdGlv blNwZWMgKikgbGluaXRpYWwocGFydGxpc3QpKS0+bmFtZS0+bG9jYXRpb24pKTsKLQl9Ci0JZWxz ZSBpZiAoIWlzU3BsaXRQYXJ0RGVmYXVsdCAmJiAoZGVmYXVsdF9pbmRleCA+PSAwKSAmJiBPaWRJ c1ZhbGlkKGRlZmF1bHRQYXJ0T2lkKSkKLQl7Ci0JCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwc0Rl ZiA9Ci0JCQkoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsaXN0X250aChwYXJ0bGlzdCwgZGVmYXVs dF9pbmRleCk7Ci0KLQkJZXJlcG9ydChFUlJPUiwKLQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9PQkpFQ1RfREVGSU5JVElPTiksCi0JCQkJZXJybXNnKCJuZXcgcGFydGl0aW9uIGNhbm5vdCBi ZSBERUZBVUxUIGJlY2F1c2UgREVGQVVMVCBwYXJ0aXRpb24gYWxyZWFkeSBleGlzdHMiKSwKLQkJ CQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzcHNEZWYtPm5hbWUtPmxvY2F0aW9uKSk7Ci0J fQotCi0JLyogSW5kaWNhdG9yIHRoYXQgdGhlIERFRkFVTFQgcGFydGl0aW9uIHdpbGwgYmUgY3Jl YXRlZC4gKi8KLQljcmVhdGVEZWZhdWx0UGFydCA9IChkZWZhdWx0X2luZGV4ID49IDApOwotCiAJ Zm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQogCXsKIAkJU2luZ2xlUGFydGl0aW9uU3BlYyAq c3BzID0gbmV3X3BhcnRzW2ldOwpAQCAtNTgzMywzNSArNTc5MSw2IEBAIGNoZWNrX3BhcnRpdGlv bnNfZm9yX3NwbGl0KFJlbGF0aW9uIHBhcmVudCwKIAkJCQkJCQkJCQkJICBwc3RhdGUpOwogCiAJ CXNwc1ByZXYgPSBzcHM7Ci0KLQkJLyogQ2hlY2s6IG5ldyBwYXJ0aXRpb25zIHNob3VsZCBoYXZl IGRpZmZlcmVudCBuYW1lcy4gKi8KLQkJZm9yIChqID0gaSArIDE7IGogPCBucGFydHM7IGorKykK LQkJewotCQkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzMiA9IG5ld19wYXJ0c1tqXTsKLQkJCWJv b2wJCXJlc3VsdCA9IGZhbHNlOwotCi0JCQkvKgotCQkJICogTmVlZCB0byBjb21wYXJlIG5hbWVz cGFjZXM/IE9uZSBvZiB0aGUgc2NoZW1hIG5hbWVzIG1heSBiZQotCQkJICogdW5kZWZpbmVkLCBi dXQgdGhlIHNjaGVtYXMgbWF5IHN0aWxsIGJlIGVxdWFsLgotCQkJICovCi0JCQlpZiAoKHNwcy0+ bmFtZS0+c2NoZW1hbmFtZSAmJiAhc3BzMi0+bmFtZS0+c2NoZW1hbmFtZSkgfHwKLQkJCQkoIXNw cy0+bmFtZS0+c2NoZW1hbmFtZSAmJiBzcHMyLT5uYW1lLT5zY2hlbWFuYW1lKSkKLQkJCXsKLQkJ CQlPaWQJCQluc3BpZCA9IFJhbmdlVmFyR2V0Q3JlYXRpb25OYW1lc3BhY2Uoc3BzLT5uYW1lKTsK LQkJCQlPaWQJCQluc3BpZDIgPSBSYW5nZVZhckdldENyZWF0aW9uTmFtZXNwYWNlKHNwczItPm5h bWUpOwotCi0JCQkJaWYgKG5zcGlkID09IG5zcGlkMikKLQkJCQkJcmVzdWx0ID0gKHN0cmNtcChz cHMtPm5hbWUtPnJlbG5hbWUsIHNwczItPm5hbWUtPnJlbG5hbWUpID09IDApOwotCQkJfQotCQkJ ZWxzZQotCQkJCXJlc3VsdCA9IGVxdWFsKHNwcy0+bmFtZSwgc3BzMi0+bmFtZSk7Ci0KLQkJCWlm IChyZXN1bHQpCi0JCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBM SUNBVEVfVEFCTEUpLAotCQkJCQkJZXJybXNnKCJuYW1lIFwiJXNcIiBpcyBhbHJlYWR5IHVzZWQi LCBzcHMyLT5uYW1lLT5yZWxuYW1lKSwKLQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUs IHNwczItPm5hbWUtPmxvY2F0aW9uKSk7Ci0JCX0KIAl9CiAKIAlpZiAoc3RyYXRlZ3kgPT0gUEFS VElUSU9OX1NUUkFURUdZX0xJU1QpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRp dGlvbl9zcGxpdC5vdXQKaW5kZXggODg2ZTVlMGFiN2UuLmUzMjg4Mzg0NzRmIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0CkBAIC02Miw3ICs2Miw3 IEBAIEFMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFy X2FwcjIwMjIgSU5UTwogICAoUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCiAgICBQQVJUSVRJT04g c2FsZXNfZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAo JzIwMjItMDQtMDEnKSwKICAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7Ci1FUlJPUjogIG5hbWUgInNhbGVz X2ZlYl9tYXJfYXByMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitFUlJPUjogIHBhcnRpdGlvbiB3aXRo IG5hbWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMgYWxyZWFkeSB1c2VkCiBMSU5FIDM6ICAg IFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w My4uLgogICAgICAgICAgICAgICAgICAgICAgXgogLS0gRVJST1I6ICBuYW1lICJzYWxlc19mZWIy MDIyIiBpcyBhbHJlYWR5IHVzZWQKQEAgLTcwLDcgKzcwLDcgQEAgQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCiAgIChQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTAzLTAxJyksCiAgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCiAgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOwot RVJST1I6ICBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0VSUk9SOiAgcGFy dGl0aW9uIHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCiBMSU5FIDM6 ICAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTy4uLgogICAgICAgICAgICAgICAgICAgICAgXgogLS0gRVJST1I6ICBuYW1lICJzYWxlc19m ZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKQEAgLTc4LDcgKzc4LDcgQEAgQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCiAgIChQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTAzLTAxJyksCiAgICBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEn KSwKICAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7Ci1FUlJPUjogIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlz IGFscmVhZHkgdXNlZAorRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIy IiBpcyBhbHJlYWR5IHVzZWQKIExJTkUgMzogICAgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEuc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTLi4uCiAgICAgICAgICAgICAgICAgICAgICBe CiAtLSBFUlJPUjogIEFMVEVSIGFjdGlvbiBTUExJVCBQQVJUSVRJT04gY2Fubm90IGJlIHBlcmZv cm1lZCBvbiByZWxhdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgpAQCAtNTA5LDkgKzUwOSwx MCBAQCBBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJz IElOVE8KICAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEy MDEpIFRPICgyMDIyMDEwMSksCiAgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVT IEZST00gKDIwMjIwMTAxKSBUTyAoMjAyMjAyMDEpLAogICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSk7Ci1FUlJPUjogIG9u ZSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxkIGJlIERFRkFVTFQgYmVjYXVzZSBzcGxpdCBw YXJ0aXRpb24gaXMgREVGQVVMVAorRVJST1I6ICBjYW4gbm90IHNwbGl0IERFRkFVTFQgcGFydGl0 aW9uICJzYWxlc19vdGhlcnMiCiBMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZP UiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMC4uLgogICAgICAgICAgICAgICAgICAgICAg XgorSElOVDogIFRvIHNwbGl0IERFRkFVTFQgcGFydGl0aW9uIG9uZSBvZiB0aGUgbmV3IHBhcnRp dGlvbiBtc3V0IGJlIERFRkFVTFQKIC0tIG5vIGVycm9yOiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJv ciBhcmUgYmV0d2VlbiBzYWxlc19kZWMyMDIxIGFuZCBzYWxlc19mZWIyMDIyCiBBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KICAgKFBBUlRJ VElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEw MSksCkBAIC05MTUsNyArOTE2LDcgQEAgQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJU SVRJT04gc2FsZXNfYWxsIElOVE8KICAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMg SU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgTlVMTCksCiAgICBQQVJUSVRJT04g c2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9r JyksCiAgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3Jywg J0JlcmxpbicsICdLeWl2JykpOwotRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBj YW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhh dmUKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgTlVMTCB2 YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfYWxsIiBkb2VzIG5vdCBoYXZlCiBM SU5FIDI6IC4uLnNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01h ZHJpZCcsIE5VTEwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCiAtLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVz X3dlc3QiIGNhbm5vdCBoYXZlIHRoaXMgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9l cyBub3QgaGF2ZQpAQCAtOTIzLDcgKzkyNCw3IEBAIEFMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCiAgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1Ig VkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdNZWxib3VybmUnKSwK ICAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGkn LCAnVmxhZGl2b3N0b2snKSwKICAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMg SU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7Ci1FUlJPUjogIG5ldyBwYXJ0aXRpb24g InNhbGVzX3dlc3QiIGNhbm5vdCBoYXZlIHRoaXMgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRp b24gZG9lcyBub3QgaGF2ZQorRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5u b3QgaGF2ZSB0aGlzIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uICJzYWxlc19hbGwiIGRv ZXMgbm90IGhhdmUKIExJTkUgMjogLi4uc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcg WW9yaycsICdNYWRyaWQnLCAnTWVsYm91cm5lLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogLS0gRVJST1I6ICBuZXcgcGFy dGl0aW9uIGNhbm5vdCBiZSBERUZBVUxUIGJlY2F1c2UgREVGQVVMVCBwYXJ0aXRpb24gYWxyZWFk eSBleGlzdHMKQEAgLTkzMiw3ICs5MzMsNyBAQCBBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElU IFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTwogICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZB TFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAogICAgUEFSVElUSU9O IHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicp LAogICAgUEFSVElUSU9OIHNhbGVzX290aGVyczIgREVGQVVMVCk7Ci1FUlJPUjogIG5ldyBwYXJ0 aXRpb24gY2Fubm90IGJlIERFRkFVTFQgYmVjYXVzZSBERUZBVUxUIHBhcnRpdGlvbiBhbHJlYWR5 IGV4aXN0cworRVJST1I6ICBOZXcgcGFydGl0aW9uIGNhbm5vdCBiZSBERUZBVUxUIGJlY2F1c2Ug REVGQVVMVCBwYXJ0aXRpb24gInNhbGVzX290aGVycyIgYWxyZWFkeSBleGlzdHMKIExJTkUgNTog ICAgUEFSVElUSU9OIHNhbGVzX290aGVyczIgREVGQVVMVCk7CiAgICAgICAgICAgICAgICAgICAg ICBeCiBEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7Ci0tIAoyLjM0LjEKCg== --000000000000fa3394063ee73d82--